diff -r b28cf69f42e8 -r aced2245fb1c src/server/safs/pathcheck.c --- 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