|
|
1.1 root 1: \File{passwd\-init.c},{19:46},{Oct 14 1989}
2: \L{\LB{\C{}\/* lookup.c \- password lookup service \-\- initiator *\/\CE{}}}
3: \L{\LB{}}
4: \L{\LB{\K{\#include} \<stdio.h\>}}
5: \L{\LB{\K{\#include} \S{}\"ryinitiator.h\"\SE{}}\Tab{40}{\C{}\/* for generic interctive initiators *\/\CE{}}}
6: \L{\LB{\K{\#include} \S{}\"PasswordLookup\-ops.h\"\SE{}}\Tab{40}{\C{}\/* operation definitions *\/\CE{}}}
7: \L{\LB{\K{\#include} \S{}\"PasswordLookup\-types.h\"\SE{}}\Tab{40}{\C{}\/* type definitions *\/\CE{}}}
8: \L{\LB{}}
9: \L{\LB{\C{}\/* DATA *\/\CE{}}}
10: \L{\LB{}}
11: \L{\LB{\K{static} \K{char} *myservice = \S{}\"passwdstore\"\SE{};}}
12: \L{\LB{}}
13: \L{\LB{\K{static} \K{char} *mycontext = \S{}\"isode passwd lookup demo\"\SE{};}}
14: \L{\LB{\K{static} \K{char} *mypci = \S{}\"isode passwd lookup demo pci\"\SE{};}}
15: \L{\LB{}}
16: \L{\LB{}}
17: \L{\LB{}\Tab{40}{\C{}\/* ARGUMENTS *\/\CE{}}}
18: \L{\LB{\K{int}}\Tab{8}{do\_lookupUser (), do\_lookupUID (), do\_help (), do\_quit ();}}
19: \L{\LB{}}
20: \L{\LB{}\Tab{40}{\C{}\/* RESULTS *\/\CE{}}}
21: \L{\LB{\K{int}}\Tab{8}{lookup\_result ();}}
22: \L{\LB{}}
23: \L{\LB{}\Tab{40}{\C{}\/* ERRORS *\/\CE{}}}
24: \L{\LB{\K{int}}\Tab{8}{lookup\_error ();}}
25: \L{\LB{}}
26: \L{\LB{}}
27: \L{\LB{\K{static} \K{struct} dispatch dispatches[] = \{}}
28: \L{\LB{ \S{}\"lookupUser\"\SE{}, operation\_PasswordLookup\_lookupUser,}}
29: \L{\LB{ do\_lookupUser, free\_PasswordLookup\_UserName,}}
30: \L{\LB{ lookup\_result, lookup\_error,}}
31: \L{\LB{ \S{}\"find user by name\"\SE{},}}
32: \L{\LB{}}
33: \L{\LB{ \S{}\"lookupUID\"\SE{}, operation\_PasswordLookup\_lookupUID,}}
34: \L{\LB{ do\_lookupUID, free\_PasswordLookup\_UserID,}}
35: \L{\LB{ lookup\_result, lookup\_error,}}
36: \L{\LB{ \S{}\"find user by id\"\SE{},}}
37: \L{\LB{}}
38: \L{\LB{ \S{}\"help\"\SE{}, 0,}}
39: \L{\LB{ do\_help, NULLIFP,}}
40: \L{\LB{ NULLIFP, NULLIFP,}}
41: \L{\LB{ \S{}\"print this information\"\SE{},}}
42: \L{\LB{}}
43: \L{\LB{ \S{}\"quit\"\SE{}, 0,}}
44: \L{\LB{ do\_quit, NULLIFP,}}
45: \L{\LB{ NULLIFP, NULLIFP,}}
46: \L{\LB{ \S{}\"terminate the association and exit\"\SE{},}}
47: \L{\LB{}}
48: \L{\LB{ NULL}}
49: \L{\LB{\};}}
50: \L{\LB{}}
51: \L{\LB{\C{}\/* MAIN *\/\CE{}}}
52: \L{\LB{}}
53: \L{\LB{\C{}\/* ARGSUSED *\/\CE{}}}
54: \L{\LB{}}
55: \L{\LB{\Proc{main}main (argc, argv, envp)}}
56: \L{\LB{\K{int}}\Tab{8}{argc;}}
57: \L{\LB{\K{char} **argv,}}
58: \L{\LB{ **envp;}}
59: \L{\LB{\{}}
60: \L{\LB{ (\K{void}) ryinitiator (argc, argv, myservice, mycontext, mypci,}}
61: \L{\LB{}\Tab{24}{table\_PasswordLookup\_Operations, dispatches, do\_quit);}}
62: \L{\LB{}}
63: \L{\LB{ exit (0);}\Tab{32}{\C{}\/* NOTREACHED *\/\CE{}}}
64: \L{\LB{\}}}
65: \L{\LB{}}
66: \L{\LB{\C{}\/* ARGUMENTS *\/\CE{}}}
67: \L{\LB{}}
68: \L{\LB{\C{}\/* ARGSUSED *\/\CE{}}}
69: \L{\LB{}}
70: \L{\LB{\K{static} \K{int} do\_lookupUser (sd, ds, args, arg)}}
71: \L{\LB{\K{int}}\Tab{8}{sd;}}
72: \L{\LB{\K{struct} dispatch *ds;}}
73: \L{\LB{\K{char} **args;}}
74: \L{\LB{\K{register} \K{struct} type\_PasswordLookup\_UserName **arg;}}
75: \L{\LB{\{}}
76: \L{\LB{ \K{char} *cp;}}
77: \L{\LB{}}
78: \L{\LB{ \K{if} ((cp = *args++) == NULL) \{}}
79: \L{\LB{}\Tab{8}{advise (NULLCP, \S{}\"usage: lookupUser username\"\SE{});}}
80: \L{\LB{}\Tab{8}{\K{return} NOTOK;}}
81: \L{\LB{ \}}}
82: \L{\LB{}}
83: \L{\LB{ \K{if} ((*arg = str2qb (cp, strlen (cp), 1)) == NULL)}}
84: \L{\LB{}\Tab{8}{ adios (NULLCP, \S{}\"out of memory\"\SE{});}}
85: \L{\LB{}}
86: \L{\LB{ \K{return} OK;}}
87: \L{\LB{\}}}
88: \L{\LB{}}
89: \L{\LB{\C{}\/* *\/\CE{}}}
90: \L{\LB{}}
91: \L{\LB{\C{}\/* ARGSUSED *\/\CE{}}}
92: \L{\LB{}}
93: \L{\LB{\K{static} \K{int} do\_lookupUID (sd, ds, args, arg)}}
94: \L{\LB{\K{int}}\Tab{8}{sd;}}
95: \L{\LB{\K{struct} dispatch *ds;}}
96: \L{\LB{\K{char} **args;}}
97: \L{\LB{\K{register} \K{struct} type\_PasswordLookup\_UserID **arg;}}
98: \L{\LB{\{}}
99: \L{\LB{ \K{char} *cp;}}
100: \L{\LB{}}
101: \L{\LB{ \K{if} ((cp = *args++) == NULL) \{}}
102: \L{\LB{}\Tab{8}{advise (NULLCP, \S{}\"usage: lookupUID userid\"\SE{});}}
103: \L{\LB{}\Tab{8}{\K{return} NOTOK;}}
104: \L{\LB{ \}}}
105: \L{\LB{}}
106: \L{\LB{ \K{if} ((*arg = (\K{struct} type\_PasswordLookup\_UserID *) calloc (1, \K{sizeof} **arg))}}
107: \L{\LB{}\Tab{8}{ == NULL)}}
108: \L{\LB{}\Tab{8}{adios (NULLCP, \S{}\"out of memory\"\SE{});}}
109: \L{\LB{}}
110: \L{\LB{ (*arg) \-\> parm = atoi (cp);}}
111: \L{\LB{}}
112: \L{\LB{ \K{return} OK;}}
113: \L{\LB{\}}}
114: \L{\LB{}}
115: \L{\LB{\C{}\/* *\/\CE{}}}
116: \L{\LB{}}
117: \L{\LB{\C{}\/* ARGSUSED *\/\CE{}}}
118: \L{\LB{}}
119: \L{\LB{\K{static} \K{int} do\_help (sd, ds, args, dummy)}}
120: \L{\LB{\K{int}}\Tab{8}{sd;}}
121: \L{\LB{\K{register} \K{struct} dispatch *ds;}}
122: \L{\LB{\K{char} **args;}}
123: \L{\LB{caddr\_t *dummy;}}
124: \L{\LB{\{}}
125: \L{\LB{ printf (\S{}\"\!nCommands are:\!n\"\SE{});}}
126: \L{\LB{ \K{for} (ds = dispatches; ds \-\> ds\_name; ds++)}}
127: \L{\LB{}\Tab{8}{printf (\S{}\"\%s\!t\%s\!n\"\SE{}, ds \-\> ds\_name, ds \-\> ds\_help);}}
128: \L{\LB{}}
129: \L{\LB{ \K{return} NOTOK;}}
130: \L{\LB{\}}}
131: \L{\LB{}}
132: \L{\LB{\C{}\/* *\/\CE{}}}
133: \L{\LB{}}
134: \L{\LB{\C{}\/* ARGSUSED *\/\CE{}}}
135: \L{\LB{}}
136: \L{\LB{\K{static} \K{int} do\_quit (sd, ds, args, dummy)}}
137: \L{\LB{\K{int}}\Tab{8}{sd;}}
138: \L{\LB{\K{struct} dispatch *ds;}}
139: \L{\LB{\K{char} **args;}}
140: \L{\LB{caddr\_t *dummy;}}
141: \L{\LB{\{}}
142: \L{\LB{ \K{struct} AcSAPrelease acrs;}}
143: \L{\LB{ \K{register} \K{struct} AcSAPrelease *acr = \&acrs;}}
144: \L{\LB{ \K{struct} AcSAPindication acis;}}
145: \L{\LB{ \K{register} \K{struct} AcSAPindication *aci = \&acis;}}
146: \L{\LB{ \K{register} \K{struct} AcSAPabort *aca = \&aci \-\> aci\_abort;}}
147: \L{\LB{}}
148: \L{\LB{ \K{if} (AcRelRequest (sd, ACF\_NORMAL, NULLPEP, 0, NOTOK, acr, aci) == NOTOK)}}
149: \L{\LB{}\Tab{8}{acs\_adios (aca, \S{}\"A\-RELEASE.REQUEST\"\SE{});}}
150: \L{\LB{}}
151: \L{\LB{ \K{if} (!acr \-\> acr\_affirmative) \{}}
152: \L{\LB{}\Tab{8}{(\K{void}) AcUAbortRequest (sd, NULLPEP, 0, aci);}}
153: \L{\LB{}\Tab{8}{adios (NULLCP, \S{}\"release rejected by peer: \%d\"\SE{}, acr \-\> acr\_reason);}}
154: \L{\LB{ \}}}
155: \L{\LB{}}
156: \L{\LB{ ACRFREE (acr);}}
157: \L{\LB{}}
158: \L{\LB{ exit (0);}}
159: \L{\LB{\}}}
160: \L{\LB{}}
161: \L{\LB{\C{}\/* RESULTS *\/\CE{}}}
162: \L{\LB{}}
163: \L{\LB{\C{}\/* ARGSUSED *\/\CE{}}}
164: \L{\LB{}}
165: \L{\LB{\K{static} \K{int} lookup\_result (sd, id, dummy, result, roi)}}
166: \L{\LB{\K{int}}\Tab{8}{sd,}}
167: \L{\LB{ }\Tab{8}{id,}}
168: \L{\LB{ }\Tab{8}{dummy;}}
169: \L{\LB{\K{register} \K{struct} type\_PasswordLookup\_Passwd *result;}}
170: \L{\LB{\K{struct} RoSAPindication *roi;}}
171: \L{\LB{\{}}
172: \L{\LB{ print\_qb (result \-\> name);}}
173: \L{\LB{ putchar (\S{}\':\'\SE{});}}
174: \L{\LB{ print\_qb (result \-\> passwd);}}
175: \L{\LB{ printf (\S{}\":\%d:\%d:\"\SE{}, result \-\> uid \-\> parm, result \-\> gid \-\> parm);}}
176: \L{\LB{ print\_qb (result \-\> gecos);}}
177: \L{\LB{ putchar (\S{}\':\'\SE{});}}
178: \L{\LB{ print\_qb (result \-\> dir);}}
179: \L{\LB{ putchar (\S{}\':\'\SE{});}}
180: \L{\LB{ print\_qb (result \-\> shell);}}
181: \L{\LB{ putchar (\S{}\'\!n\'\SE{});}}
182: \L{\LB{}}
183: \L{\LB{ \K{return} OK;}}
184: \L{\LB{\}}}
185: \L{\LB{}}
186: \L{\LB{}}
187: \L{\LB{\K{static}}\Tab{8}{print\_qb (q)}}
188: \L{\LB{\K{register} \K{struct} qbuf *q;}}
189: \L{\LB{\{}}
190: \L{\LB{ \K{register} \K{struct} qbuf *p;}}
191: \L{\LB{}}
192: \L{\LB{ \K{if} (q == NULL)}}
193: \L{\LB{}\Tab{8}{\K{return};}}
194: \L{\LB{}}
195: \L{\LB{ \K{for} (p = q \-\> qb\_forw; p != q; p = p \-\> qb\_forw)}}
196: \L{\LB{}\Tab{8}{printf (\S{}\"\%*.*s\"\SE{}, p \-\> qb\_len, p \-\> qb\_len, p \-\> qb\_data);}}
197: \L{\LB{\}}}
198: \L{\LB{}}
199: \L{\LB{\C{}\/* ERRORS *\/\CE{}}}
200: \L{\LB{}}
201: \L{\LB{\C{}\/* ARGSUSED *\/\CE{}}}
202: \L{\LB{}}
203: \L{\LB{\K{static} \K{int} lookup\_error (sd, id, error, parameter, roi)}}
204: \L{\LB{\K{int}}\Tab{8}{sd,}}
205: \L{\LB{}\Tab{8}{id,}}
206: \L{\LB{ }\Tab{8}{error;}}
207: \L{\LB{caddr\_t parameter;}}
208: \L{\LB{\K{struct} RoSAPindication *roi;}}
209: \L{\LB{\{ }}
210: \L{\LB{ \K{register} \K{struct} RyError *rye;}}
211: \L{\LB{}}
212: \L{\LB{ \K{if} (error == RY\_REJECT) \{}}
213: \L{\LB{}\Tab{8}{advise (NULLCP, \S{}\"\%s\"\SE{}, RoErrString ((\K{int}) parameter));}}
214: \L{\LB{}\Tab{8}{\K{return} OK;}}
215: \L{\LB{ \}}}
216: \L{\LB{}}
217: \L{\LB{ \K{if} (rye = finderrbyerr (table\_PasswordLookup\_Errors, error))}}
218: \L{\LB{}\Tab{8}{advise (NULLCP, \S{}\"\%s\"\SE{}, rye \-\> rye\_name);}}
219: \L{\LB{ \K{else}}}
220: \L{\LB{}\Tab{8}{advise (NULLCP, \S{}\"Error \%d\"\SE{}, error);}}
221: \L{\LB{}}
222: \L{\LB{ \K{return} OK;}}
223: \L{\LB{\}}}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.