|
|
1.1 root 1: /*
2: header.c
3:
4: these routines provide a way of transferring the information
5: in the "header" structure between machines.
6: Programs calling these routines either read or write
7: their information into the header structure.
8: These procedures format the info in a way that is acceptable.
9: Called by net.c, netdaemon.c, and netq.c.
10: */
11: /*
12: protocol that is sent (in ASCII):
13: code, remote mach, local mach, version stamp (2), remote login name,
14: password, -i, -o, -r files,
15: local login name, terminal, flag, utmp tty login time,
16: cc jobno(variable parameter list), current time,
17: command '\n' real command '\n'
18: any data
19:
20: changes:
21: 1) remove header
22: 3) use ascii length instead of 4 bytes
23: 4) encrypt the login name, command, and part of data as well
24: */
25: # include "defs.h"
26:
27: writehdfd(phd,fd)
28: register struct header *phd;
29: FILE *fd;
30: {
31: char *genparmlist();
32: char cflag = 'a';
33:
34: /* cflag is initially 'a'. Add the flags as needed. */
35: if(phd->hd_fnonotify)cflag += F_NONOTIFY;
36: if(phd->hd_fquiet)cflag += F_QUIET;
37:
38: fprintf(fd,
39: "%c :%c :%c :%c :%c :%s :%s :%s :%s :%s :%s :%s :%c :%lo :%d%s :%ld :",
40: phd->hd_code,phd->hd_mchto,phd->hd_mchfrom,
41: phd->hd_vmajor+'a',phd->hd_vminor+'a',phd->hd_snto,
42: phd->hd_spasswd,phd->hd_sinfile,phd->hd_soutfile,
43: phd->hd_srespfile,
44: phd->hd_snfrom,phd->hd_sttyname,cflag,phd->hd_lttytime,
45: phd->hd_ijobno,genparmlist(phd),phd->hd_ltimesent-TIMEBASE);
46: fputs(phd->hd_scmdact,fd);
47: putc('\n',fd);
48: fputs(phd->hd_scmdvirt,fd);
49: putc('\n',fd);
50: /* not used, but a good idea */
51: sprintf(phd->hd_addrfrom,"%c:%s",phd->hd_mchfrom,phd->hd_snfrom);
52: sprintf(phd->hd_addrto, "%c:%s",phd->hd_mchto, phd->hd_snto);
53: }
54: /*
55: print out debugging values of a header structure
56: */
57: printhd(phd)
58: register struct header *phd;
59: {
60: if(debugflg){
61: printf("To %s From %s quiet=%c nonotify=%c\n",
62: phd->hd_addrto, phd->hd_addrfrom,
63: chfromf(phd->hd_fquiet), chfromf(phd->hd_fnonotify));
64: /* don't print out for security reasons
65: printf("Password %s\n",phd->hd_spasswd);
66: */
67: printf("Code '%c' Version (%d,%d) Infile '%s'\n",
68: phd->hd_code, phd->hd_vmajor,phd->hd_vminor,
69: phd->hd_sinfile);
70: printf("Outfile '%s' Respfile '%s' TTYName '%s'\n",
71: phd->hd_soutfile,phd->hd_srespfile, phd->hd_sttyname);
72: printf("Jobno %d TimeSent %s", phd->hd_ijobno,
73: ctime(&phd->hd_ltimesent));
74: if(phd->hd_lttytime != 0)
75: printf("TTYTime %s", ctime(&phd->hd_lttytime));
76: printf("Virtual Command \"%s\"\n", phd->hd_scmdvirt);
77: printf("Actual Command \"%s\"\n", phd->hd_scmdact);
78: }
79: }
80: /*
81: generate a variable parameter list
82: the format is:
83: (name value, name value, ..., name value)
84: where names are unquoted single words and values
85: are unquoted if a single alphanumeric word, and are
86: surrounded by {} otherwise. \ quotes { and }.
87: the values are escape-processed, e.g. \n becomes 012.
88: this function returns such a list.
89: Returns the null parm list if nothing to give, i.e. "()"
90:
91: Should also default so single keywords can have on/off
92: states, and so do not require a value.
93:
94: Things this variable protocol should specify:
95: EPASSWD encrypted passwd
96: FILEMODE file mode
97: FROMUID from users' uid
98: FROMGID from users' gid
99: COMPRESS use colin's compression
100: ACCTPAIR handle acct pairs
101: MESSAGEID unique number identifying this request.
102: FILENAME when omitted by netcp, will use FILENAME ext.
103: REPLYTO the person the response should be sent to
104:
105: --- possibly ---
106: MACHINE2 a second machine (e.g. 3way netcp)
107: LOGIN2 a second login name
108: PASSWD2 a second passwd
109:
110: */
111: static char *genparmlist(phd)
112: register struct header *phd;
113: {
114: static char returnstr[PARMLIST];
115: strcpy(returnstr,"()");
116: return(returnstr);
117: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.