LIST shows only files for which DUMP policy is allowed
authorChristian Thaeter <ct@pipapo.org>
Fri, 9 Nov 2007 14:39:38 +0000 (15:39 +0100)
committerChristian Thaeter <ct@pipapo.org>
Fri, 9 Nov 2007 14:39:38 +0000 (15:39 +0100)
src/rxpd_connection_cmd.c
tests/20simplecommands.tests
tests/30listmanipulation.tests
tests/50listsyncronization.tests
tests/files/policy

index d1b1a25..1716ada 100644 (file)
@@ -428,12 +428,20 @@ walk_LIST (PSplay node, const enum psplay_order_e which, int level, void* data)
   struct rxpd_file* file = (struct rxpd_file*) node;
   struct rxpd_connection* conn = (struct rxpd_connection*) data;
 
+  char buf[4096] = "DUMP:";
+  buf[4095] = '\0';
+
   if (which == PSPLAY_INORDER)
     {
-      struct list_record* rec = rxpd_malloc (sizeof (struct list_record));
-      rec->name = rxpd_strdup (file->node.key);
-      llist_init (&rec->node);
-      llist_insert_tail (&conn->tmp_list, &rec->node);
+      strncpy (buf+sizeof("DUMP:")-1, file->node.key, 4096 - sizeof("DUMP:"));
+
+      if (rxpd_connection_check_policy (conn, buf))
+        {
+          struct list_record* rec = rxpd_malloc (sizeof (struct list_record));
+          rec->name = rxpd_strdup (file->node.key);
+          llist_init (&rec->node);
+          llist_insert_tail (&conn->tmp_list, &rec->node);
+        }
     }
   return PSPLAY_CONT;
 }
index b85a373..95d66b4 100644 (file)
@@ -75,6 +75,7 @@ out: # [atime]:name:command:list:proto:address
 out: #
 out: # Allow dumping of the 'policy' list itself
 out: :ACCEPT:DUMP:policy
+out: :REJECT:DUMP:nodump
 out: # allow localhost
 out: :ACCEPT:.*:tcp.:127.0.0.1$
 out: # Clients from local network are allowed to do anything
index f1377d1..e5fc94e 100644 (file)
@@ -228,6 +228,21 @@ in: DUMP:dir/test
 out: #OK:
 END
 
+TEST "policy, create" <<END
+in: APPEND:nodump
+in: # empty
+in: !EXIT
+out: #OK:
+END
+
+TEST "policy, list" <<END
+in: LIST:
+out: dir/test
+out: example
+out: filter
+out: policy
+END
+
 TEST "daemon shutdown" <<END
 in: SHUTDOWN:
 out: #OK:
index 8571010..76c91f8 100644 (file)
@@ -28,6 +28,7 @@ out: # [atime]:name:command:list:proto:address
 out: #
 out: # Allow dumping of the 'policy' list itself
 out: :ACCEPT:DUMP:policy
+out: :REJECT:DUMP:nodump
 out: # allow localhost
 out: :ACCEPT:.*:tcp.:127.0.0.1$
 out: # Clients from local network are allowed to do anything
index bccf84d..747601c 100644 (file)
@@ -3,6 +3,7 @@
 #
 # Allow dumping of the 'policy' list itself
 :ACCEPT:DUMP:policy
+:REJECT:DUMP:nodump
 # allow localhost
 :ACCEPT:.*:tcp.:127.0.0.1$
 # Clients from local network are allowed to do anything