src/server/safs/pathcheck.c

changeset 638
14ae3d8c01ae
parent 415
d938228c382e
child 643
f4dc9b37a250
--- a/src/server/safs/pathcheck.c	Sun Nov 23 13:27:13 2025 +0100
+++ b/src/server/safs/pathcheck.c	Sun Nov 23 13:45:55 2025 +0100
@@ -36,6 +36,7 @@
 #include "../daemon/acldata.h"
 #include "../daemon/session.h"
 #include "../daemon/vserver.h"
+#include "../daemon/request.h"
 
 #include "../daemon/vfs.h"
 
@@ -89,23 +90,25 @@
     return REQ_PROCEED;
 }
 
-int append_acl(pblock *pb, Session *sn, Request *rq) {
+static int add_acl(Session *sn, Request *rq, const char *aclname) {
     const VirtualServer *vs = request_get_vs(rq);
-    
-    WS_ASSERT(vs);
-    
+    ACLList *acl = acl_get(vs->acls, aclname);
+    if(!acl) {
+        log_ereport(
+                    LOG_MISCONFIG,
+                    "append-acl: acl %s not found", aclname);
+        return 1;
+    }
+    return acllist_append(sn, rq, acl);
+}
+
+int append_acl(pblock *pb, Session *sn, Request *rq) {
     char *aclname = pblock_findval("acl", pb);
     if(aclname) {
-        ACLList *acl = acl_get(vs->acls, aclname);
-        if(!acl) {
-            log_ereport(
-                    LOG_MISCONFIG,
-                    "append-acl: acl %s not found", aclname);
+        if(add_acl(sn, rq, aclname)) {
             protocol_status(sn, rq, 500, NULL);
             return REQ_ABORTED;
         }
-        
-        acllist_append(sn, rq, acl);
     }
     
     return REQ_PROCEED;
@@ -208,3 +211,24 @@
     
     return REQ_PROCEED;
 }
+
+int apply_location_config(pblock *pb, Session *sn, Request *rq) {
+    NSAPIRequest *req = (NSAPIRequest*)rq;
+    WSLocationConfig *config = req->location;
+    if(!config) {
+        return REQ_NOACTION;
+    }
+    
+    if(config->set_forcetls && config->forcetls) {
+        // TODO
+    }  
+    
+    CxIterator i = cxListIterator(config->acls);
+    cx_foreach(char*, aclname, i) {
+        if(add_acl(sn, rq, aclname)) {
+            return REQ_ABORTED;
+        }
+    }
+    
+    return REQ_PROCEED;
+}

mercurial