| 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 |