1 6f4d00ee 2013-09-23 0intro #include <auth.h>
2 6f4d00ee 2013-09-23 0intro #include <fcall.h>
5 6f4d00ee 2013-09-23 0intro NFidHash = 503,
8 6f4d00ee 2013-09-23 0intro typedef struct Con Con;
9 6f4d00ee 2013-09-23 0intro typedef struct DirBuf DirBuf;
10 6f4d00ee 2013-09-23 0intro typedef struct Excl Excl;
11 6f4d00ee 2013-09-23 0intro typedef struct Fid Fid;
12 6f4d00ee 2013-09-23 0intro typedef struct Fsys Fsys;
13 6f4d00ee 2013-09-23 0intro typedef struct Msg Msg;
15 6f4d00ee 2013-09-23 0intro #pragma incomplete DirBuf
16 6f4d00ee 2013-09-23 0intro #pragma incomplete Excl
17 6f4d00ee 2013-09-23 0intro #pragma incomplete Fsys
19 6f4d00ee 2013-09-23 0intro struct Msg {
20 6f4d00ee 2013-09-23 0intro uchar* data;
21 6f4d00ee 2013-09-23 0intro u32int msize; /* actual size of data */
26 6f4d00ee 2013-09-23 0intro Msg* anext; /* allocation free list */
28 6f4d00ee 2013-09-23 0intro Msg* mnext; /* all active messsages on this Con */
29 6f4d00ee 2013-09-23 0intro Msg* mprev;
31 6f4d00ee 2013-09-23 0intro int state; /* */
33 6f4d00ee 2013-09-23 0intro Msg* flush; /* flushes waiting for this Msg */
35 6f4d00ee 2013-09-23 0intro Msg* rwnext; /* read/write queue */
36 6f4d00ee 2013-09-23 0intro int nowq; /* do not place on write queue */
48 6f4d00ee 2013-09-23 0intro ConNoneAllow = 1<<0,
49 6f4d00ee 2013-09-23 0intro ConNoAuthCheck = 1<<1,
50 6f4d00ee 2013-09-23 0intro ConNoPermCheck = 1<<2,
51 6f4d00ee 2013-09-23 0intro ConWstatAllow = 1<<3,
52 6f4d00ee 2013-09-23 0intro ConIPCheck = 1<<4,
54 6f4d00ee 2013-09-23 0intro struct Con {
55 6f4d00ee 2013-09-23 0intro char* name;
56 6f4d00ee 2013-09-23 0intro uchar* data; /* max, not negotiated */
57 6f4d00ee 2013-09-23 0intro int isconsole; /* immutable */
58 6f4d00ee 2013-09-23 0intro int flags; /* immutable */
59 6f4d00ee 2013-09-23 0intro char remote[128]; /* immutable */
60 4b576658 2013-09-23 0intro QLock lock;
61 6f4d00ee 2013-09-23 0intro int state;
63 6f4d00ee 2013-09-23 0intro Msg* version;
64 6f4d00ee 2013-09-23 0intro u32int msize; /* negotiated with Tversion */
65 4b576658 2013-09-23 0intro Rendez rendez;
67 6f4d00ee 2013-09-23 0intro Con* anext; /* alloc */
68 6f4d00ee 2013-09-23 0intro Con* cnext; /* in use */
69 6f4d00ee 2013-09-23 0intro Con* cprev;
71 4b576658 2013-09-23 0intro RWLock alock;
72 6f4d00ee 2013-09-23 0intro int aok; /* authentication done */
74 4b576658 2013-09-23 0intro QLock mlock;
75 6f4d00ee 2013-09-23 0intro Msg* mhead; /* all Msgs on this connection */
76 6f4d00ee 2013-09-23 0intro Msg* mtail;
77 4b576658 2013-09-23 0intro Rendez mrendez;
79 4b576658 2013-09-23 0intro QLock wlock;
80 6f4d00ee 2013-09-23 0intro Msg* whead; /* write queue */
81 6f4d00ee 2013-09-23 0intro Msg* wtail;
82 4b576658 2013-09-23 0intro Rendez wrendez;
84 4b576658 2013-09-23 0intro QLock fidlock; /* */
85 6f4d00ee 2013-09-23 0intro Fid* fidhash[NFidHash];
86 6f4d00ee 2013-09-23 0intro Fid* fhead;
87 6f4d00ee 2013-09-23 0intro Fid* ftail;
92 6f4d00ee 2013-09-23 0intro ConDead = 0,
93 6f4d00ee 2013-09-23 0intro ConNew = 1,
94 6f4d00ee 2013-09-23 0intro ConDown = 2,
95 6f4d00ee 2013-09-23 0intro ConInit = 3,
96 6f4d00ee 2013-09-23 0intro ConUp = 4,
97 6f4d00ee 2013-09-23 0intro ConMoribund = 5,
100 6f4d00ee 2013-09-23 0intro struct Fid {
101 4b576658 2013-09-23 0intro RWLock lock;
102 6f4d00ee 2013-09-23 0intro Con* con;
103 6f4d00ee 2013-09-23 0intro u32int fidno;
104 6f4d00ee 2013-09-23 0intro int ref; /* inc/dec under Con.fidlock */
105 6f4d00ee 2013-09-23 0intro int flags;
107 6f4d00ee 2013-09-23 0intro int open;
108 6f4d00ee 2013-09-23 0intro Fsys* fsys;
109 6f4d00ee 2013-09-23 0intro File* file;
111 6f4d00ee 2013-09-23 0intro char* uid;
112 6f4d00ee 2013-09-23 0intro char* uname;
113 6f4d00ee 2013-09-23 0intro DirBuf* db;
114 6f4d00ee 2013-09-23 0intro Excl* excl;
116 4b576658 2013-09-23 0intro QLock alock; /* Tauth/Tattach */
117 6f4d00ee 2013-09-23 0intro AuthRpc* rpc;
118 6f4d00ee 2013-09-23 0intro char* cuname;
120 6f4d00ee 2013-09-23 0intro Fid* sort; /* sorted by uname in cmdWho */
121 6f4d00ee 2013-09-23 0intro Fid* hash; /* lookup by fidno */
122 6f4d00ee 2013-09-23 0intro Fid* next; /* clunk session with Tversion */
123 6f4d00ee 2013-09-23 0intro Fid* prev;
126 6f4d00ee 2013-09-23 0intro enum { /* Fid.flags and fidGet(..., flags) */
127 6f4d00ee 2013-09-23 0intro FidFCreate = 0x01,
128 6f4d00ee 2013-09-23 0intro FidFWlock = 0x02,
131 6f4d00ee 2013-09-23 0intro enum { /* Fid.open */
132 6f4d00ee 2013-09-23 0intro FidOCreate = 0x01,
133 6f4d00ee 2013-09-23 0intro FidORead = 0x02,
134 6f4d00ee 2013-09-23 0intro FidOWrite = 0x04,
135 6f4d00ee 2013-09-23 0intro FidORclose = 0x08,
141 6f4d00ee 2013-09-23 0intro extern int (*rFcall[Tmax])(Msg*);
142 6f4d00ee 2013-09-23 0intro extern int validFileName(char*);
145 6f4d00ee 2013-09-23 0intro * 9auth.c
147 6f4d00ee 2013-09-23 0intro extern int authCheck(Fcall*, Fid*, Fsys*);
148 6f4d00ee 2013-09-23 0intro extern int authRead(Fid*, void*, int);
149 6f4d00ee 2013-09-23 0intro extern int authWrite(Fid*, void*, int);
154 6f4d00ee 2013-09-23 0intro extern void dirBufFree(DirBuf*);
155 6f4d00ee 2013-09-23 0intro extern int dirDe2M(DirEntry*, uchar*, int);
156 6f4d00ee 2013-09-23 0intro extern int dirRead(Fid*, uchar*, int, vlong);
159 6f4d00ee 2013-09-23 0intro * 9excl.c
161 6f4d00ee 2013-09-23 0intro extern int exclAlloc(Fid*);
162 6f4d00ee 2013-09-23 0intro extern void exclFree(Fid*);
163 6f4d00ee 2013-09-23 0intro extern void exclInit(void);
164 6f4d00ee 2013-09-23 0intro extern int exclUpdate(Fid*);
169 6f4d00ee 2013-09-23 0intro extern void fidClunk(Fid*);
170 6f4d00ee 2013-09-23 0intro extern void fidClunkAll(Con*);
171 6f4d00ee 2013-09-23 0intro extern Fid* fidGet(Con*, u32int, int);
172 6f4d00ee 2013-09-23 0intro extern void fidInit(void);
173 6f4d00ee 2013-09-23 0intro extern void fidPut(Fid*);
176 6f4d00ee 2013-09-23 0intro * 9fsys.c
178 6f4d00ee 2013-09-23 0intro extern void fsysFsRlock(Fsys*);
179 6f4d00ee 2013-09-23 0intro extern void fsysFsRUnlock(Fsys*);
180 6f4d00ee 2013-09-23 0intro extern Fs* fsysGetFs(Fsys*);
181 6f4d00ee 2013-09-23 0intro extern Fsys* fsysGet(char*);
182 6f4d00ee 2013-09-23 0intro extern char* fsysGetName(Fsys*);
183 6f4d00ee 2013-09-23 0intro extern File* fsysGetRoot(Fsys*, char*);
184 6f4d00ee 2013-09-23 0intro extern Fsys* fsysIncRef(Fsys*);
185 6f4d00ee 2013-09-23 0intro extern int fsysInit(void);
186 6f4d00ee 2013-09-23 0intro extern int fsysNoAuthCheck(Fsys*);
187 6f4d00ee 2013-09-23 0intro extern int fsysNoPermCheck(Fsys*);
188 6f4d00ee 2013-09-23 0intro extern void fsysPut(Fsys*);
189 6f4d00ee 2013-09-23 0intro extern int fsysWstatAllow(Fsys*);
192 6f4d00ee 2013-09-23 0intro * 9lstn.c
194 6f4d00ee 2013-09-23 0intro extern int lstnInit(void);
197 6f4d00ee 2013-09-23 0intro * 9proc.c
199 6f4d00ee 2013-09-23 0intro extern Con* conAlloc(int, char*, int);
200 6f4d00ee 2013-09-23 0intro extern void conInit(void);
201 6f4d00ee 2013-09-23 0intro extern void msgFlush(Msg*);
202 6f4d00ee 2013-09-23 0intro extern void msgInit(void);
207 6f4d00ee 2013-09-23 0intro extern int srvInit(void);
210 6f4d00ee 2013-09-23 0intro * 9user.c
212 6f4d00ee 2013-09-23 0intro extern int groupLeader(char*, char*);
213 6f4d00ee 2013-09-23 0intro extern int groupMember(char*, char*);
214 6f4d00ee 2013-09-23 0intro extern int groupWriteMember(char*);
215 6f4d00ee 2013-09-23 0intro extern char* unameByUid(char*);
216 6f4d00ee 2013-09-23 0intro extern char* uidByUname(char*);
217 6f4d00ee 2013-09-23 0intro extern int usersInit(void);
218 6f4d00ee 2013-09-23 0intro extern int usersFileRead(char*);
219 6f4d00ee 2013-09-23 0intro extern int validUserName(char*);
221 6f4d00ee 2013-09-23 0intro extern char* uidadm;
222 6f4d00ee 2013-09-23 0intro extern char* unamenone;
223 6f4d00ee 2013-09-23 0intro extern char* uidnoworld;
228 6f4d00ee 2013-09-23 0intro extern int cliAddCmd(char*, int (*)(int, char*[]));
229 6f4d00ee 2013-09-23 0intro extern int cliError(char*, ...);
230 6f4d00ee 2013-09-23 0intro extern int cliInit(void);
231 6f4d00ee 2013-09-23 0intro extern int cliExec(char*);
232 6f4d00ee 2013-09-23 0intro #pragma varargck argpos cliError 1
237 6f4d00ee 2013-09-23 0intro extern int cmdInit(void);
240 6f4d00ee 2013-09-23 0intro * Ccons.c
242 6f4d00ee 2013-09-23 0intro extern int consPrompt(char*);
243 6f4d00ee 2013-09-23 0intro extern int consInit(void);
244 6f4d00ee 2013-09-23 0intro extern int consOpen(int, int, int);
245 6f4d00ee 2013-09-23 0intro extern int consTTY(void);
246 6f4d00ee 2013-09-23 0intro extern int consWrite(char*, int);
251 6f4d00ee 2013-09-23 0intro extern int consPrint(char*, ...);
252 6f4d00ee 2013-09-23 0intro extern int consVPrint(char*, va_list);
253 6f4d00ee 2013-09-23 0intro #pragma varargck argpos consPrint 1
256 6f4d00ee 2013-09-23 0intro * fossil.c
258 6f4d00ee 2013-09-23 0intro extern int Dflag;