示例#1
0
void getusers_handler(int argc,char**argv,int bloblen,void*blob)
{
        dbResult*res;
        int i,l;
        char rsp[64];
        struct dynbuf_s*buf;
        if(!checkGlobalACL(ACL_ADMUSER)){
                bc_hdl->sockwriter(bc_hdl,E_PERM,strlen(E_PERM));
                return;
        }
        res=query(bc_con,SQL_GETUSERS);
        if(!res){
                bc_hdl->sockwriter(bc_hdl,E_DATABASE,strlen(E_DATABASE));
                return;
        }
        buf=dynbuf_new();
        if(!buf){
                bc_hdl->sockwriter(bc_hdl,E_ALLOCATION,strlen(E_ALLOCATION));
                dbFree(res);
                return;
        }
        l=dbNumRows(res);
        for(i=0;i<l;i++){
                dynbuf_addstr(buf,dbGetStringByname(res,i,"usrname"));
                dynbuf_addstr(buf,"\n");
        }
        dbFree(res);
        sprintf(rsp,"+%i Users:\n",buf->len);
        bc_hdl->sockwriter(bc_hdl,rsp,strlen(rsp));
        bc_hdl->sockwriter(bc_hdl,buf->buffer,buf->len);
        dynbuf_free(buf);
}
示例#2
0
void getuseracl_handler(int argc,char**argv,int bloblen,void*blob)
{
        dbResult*res;
        char*acl;
        struct dynbuf_s*buf;
        if(!checkGlobalACL(ACL_ADMUSER)){
                bc_hdl->sockwriter(bc_hdl,E_PERM,strlen(E_PERM));
                return;
        }
        /*invalid argc*/
        if(argc!=2){
                bc_hdl->sockwriter(bc_hdl,E_SYNTAX,strlen(E_SYNTAX));
                return;
        }
        res=query(bc_con,SQL_GETMAINACL,argv[1]);
        if(!res){
                bc_hdl->sockwriter(bc_hdl,E_DATABASE,strlen(E_DATABASE));
                return;
        }
        if(dbNumRows(res)!=1){
                bc_hdl->sockwriter(bc_hdl,E_NOUSER,strlen(E_NOUSER));
                dbFree(res);
                return;
        }
        buf=dynbuf_new();
        if(!buf){
                bc_hdl->sockwriter(bc_hdl,E_ALLOCATION,strlen(E_ALLOCATION));
                dbFree(res);
                return;
        }
        acl=dbGetString(res,0,0);
        if(!acl)acl="";

        if(strchr(acl,ACL_ADMIN))dynbuf_addstr(buf," admin");
        if(strchr(acl,ACL_READ))dynbuf_addstr(buf," read");
        if(strchr(acl,ACL_WRITE))dynbuf_addstr(buf," write");
        if(strchr(acl,ACL_CONFIG))dynbuf_addstr(buf," config");
        if(strchr(acl,ACL_ADMUSER))dynbuf_addstr(buf," crateUsers");
        if(strchr(acl,ACL_ADMPROJECT))dynbuf_addstr(buf,"createProjects");

        dbFree(res);

        dynbuf_addstr(buf,"\n");

        bc_hdl->sockwriter(bc_hdl,"+0",2);
        bc_hdl->sockwriter(bc_hdl,buf->buffer,buf->len);
        dynbuf_free(buf);
}
示例#3
0
static void
cachessess_free_val_cb(cache_val_t val)
{
	dynbuf_free(val);
}
示例#4
0
static void
cachessess_free_key_cb(cache_key_t key)
{
	dynbuf_free(key);
}