diff -r 3e20fd78e555 -r b6ff6be7aa91 dav/scfg.c --- a/dav/scfg.c Thu Dec 14 13:35:03 2017 +0100 +++ b/dav/scfg.c Sat Dec 16 10:37:50 2017 +0100 @@ -135,6 +135,7 @@ UcxList *include = NULL; UcxList *exclude = NULL; int max_retry = 0; + int allow_cmd = SYNC_CMD_PULL | SYNC_CMD_PUSH | SYNC_CMD_ARCHIVE; bool backuppull = false; bool lockpull = false; bool lockpush = false; @@ -179,6 +180,24 @@ print_warning(node->line, "unsigned integer value " "expected in element\n"); } + } else if(xstreq(node->name, "allow-cmd")) { + int cmds = 0; + const char *delims = " ,\r\n"; + char *cmdstr = strdup(value); + char *cmd = strtok(cmdstr, delims); + while(cmd) { + if(!strcmp(cmd, "pull")) { + cmds |= SYNC_CMD_PULL; + } else if(!strcmp(cmd, "push")) { + cmds |= SYNC_CMD_PUSH; + } else if(!strcmp(cmd, "archive")) { + cmds |= SYNC_CMD_ARCHIVE; + } + cmd = strtok(NULL, delims); + } + free(cmdstr); + allow_cmd = cmds; + } else if(xstreq(node->name, "backup-on-pull")) { backuppull = util_getboolean(value); } else if(xstreq(node->name, "lock-pull")) { @@ -229,6 +248,7 @@ dir->repository = strdup(repository); dir->database = strdup(database); dir->max_retry = max_retry; + dir->allow_cmd = allow_cmd; dir->backuppull = backuppull; dir->lockpull = lockpull; dir->lockpush = lockpush;