src/server/safs/pathcheck.c

changeset 52
aced2245fb1c
parent 51
b28cf69f42e8
child 61
c858850f3d3a
--- a/src/server/safs/pathcheck.c	Thu Feb 28 20:00:05 2013 +0100
+++ b/src/server/safs/pathcheck.c	Fri Mar 01 21:15:52 2013 +0100
@@ -34,6 +34,9 @@
 #include "../daemon/acldata.h"
 #include "../daemon/session.h"
 
+#include "../ucx/string.h"
+#include "../config/acl.h"
+
 int require_auth(pblock *pb, Session *sn, Request *rq) {
     char *user = pblock_findkeyval(pb_key_auth_user, rq->vars);
 
@@ -50,6 +53,23 @@
     return REQ_PROCEED;
 }
 
+int require_access(pblock *pb, Session *sn, Request *rq) {
+    char *mask_str = pblock_findval("mask", rq->vars);
+    if(!mask_str) {
+        // misconfig
+        // TODO: log
+        return REQ_ABORTED;
+    }
+    
+    uint32_t access_mask = 0;
+    size_t n = 0;
+    sstr_t *rights = sstrsplit(sstr(mask_str), sstrn(",", 1), &n);
+    for(int i=0;i<n;i++) {
+        sstr_t right = rights[i];
+        access_mask = access_mask | accstr2int(right);
+    }
+}
+
 int append_acl(pblock *pb, Session *sn, Request *rq) {
     ServerConfiguration *config = session_get_config(sn);
     

mercurial