src/server/safs/pathcheck.c

changeset 638
14ae3d8c01ae
parent 415
d938228c382e
child 643
f4dc9b37a250
equal deleted inserted replaced
637:85721a583f39 638:14ae3d8c01ae
34 #include "../daemon/config.h" 34 #include "../daemon/config.h"
35 #include "../daemon/acl.h" 35 #include "../daemon/acl.h"
36 #include "../daemon/acldata.h" 36 #include "../daemon/acldata.h"
37 #include "../daemon/session.h" 37 #include "../daemon/session.h"
38 #include "../daemon/vserver.h" 38 #include "../daemon/vserver.h"
39 #include "../daemon/request.h"
39 40
40 #include "../daemon/vfs.h" 41 #include "../daemon/vfs.h"
41 42
42 #include "../config/acl.h" 43 #include "../config/acl.h"
43 44
87 rq->aclreqaccess = access_mask; 88 rq->aclreqaccess = access_mask;
88 89
89 return REQ_PROCEED; 90 return REQ_PROCEED;
90 } 91 }
91 92
93 static int add_acl(Session *sn, Request *rq, const char *aclname) {
94 const VirtualServer *vs = request_get_vs(rq);
95 ACLList *acl = acl_get(vs->acls, aclname);
96 if(!acl) {
97 log_ereport(
98 LOG_MISCONFIG,
99 "append-acl: acl %s not found", aclname);
100 return 1;
101 }
102 return acllist_append(sn, rq, acl);
103 }
104
92 int append_acl(pblock *pb, Session *sn, Request *rq) { 105 int append_acl(pblock *pb, Session *sn, Request *rq) {
93 const VirtualServer *vs = request_get_vs(rq);
94
95 WS_ASSERT(vs);
96
97 char *aclname = pblock_findval("acl", pb); 106 char *aclname = pblock_findval("acl", pb);
98 if(aclname) { 107 if(aclname) {
99 ACLList *acl = acl_get(vs->acls, aclname); 108 if(add_acl(sn, rq, aclname)) {
100 if(!acl) {
101 log_ereport(
102 LOG_MISCONFIG,
103 "append-acl: acl %s not found", aclname);
104 protocol_status(sn, rq, 500, NULL); 109 protocol_status(sn, rq, 500, NULL);
105 return REQ_ABORTED; 110 return REQ_ABORTED;
106 } 111 }
107
108 acllist_append(sn, rq, acl);
109 } 112 }
110 113
111 return REQ_PROCEED; 114 return REQ_PROCEED;
112 } 115 }
113 116
206 return REQ_ABORTED; 209 return REQ_ABORTED;
207 } 210 }
208 211
209 return REQ_PROCEED; 212 return REQ_PROCEED;
210 } 213 }
214
215 int apply_location_config(pblock *pb, Session *sn, Request *rq) {
216 NSAPIRequest *req = (NSAPIRequest*)rq;
217 WSLocationConfig *config = req->location;
218 if(!config) {
219 return REQ_NOACTION;
220 }
221
222 if(config->set_forcetls && config->forcetls) {
223 // TODO
224 }
225
226 CxIterator i = cxListIterator(config->acls);
227 cx_foreach(char*, aclname, i) {
228 if(add_acl(sn, rq, aclname)) {
229 return REQ_ABORTED;
230 }
231 }
232
233 return REQ_PROCEED;
234 }

mercurial