New patch.
authorWayne Davison <wayned@samba.org>
Fri, 27 Feb 2004 18:58:34 +0000 (18:58 +0000)
committerWayne Davison <wayned@samba.org>
Fri, 27 Feb 2004 18:58:34 +0000 (18:58 +0000)
write-only.diff [new file with mode: 0644]

diff --git a/write-only.diff b/write-only.diff
new file mode 100644 (file)
index 0000000..df0d32f
--- /dev/null
@@ -0,0 +1,73 @@
+From: peter pan <lanwanhr@yahoo.com>
+Subject: [PATCH] write only
+Date: Thu, 12 Feb 2004 04:08:00 -0800 (PST)
+
+I've added a write only option to rsyncd.conf which is essentially the opposite
+of read only.  This means that although it's possible someone on our allowed IP
+range could overwrite (or delete) files on the rsync share, they would not be
+allowed to download any files (my primary concern).
+
+J
+
+[Updated to CVS version by Wayne Davison.]
+
+
+--- loadparm.c 4 Feb 2004 07:31:29 -0000       1.50
++++ loadparm.c 27 Feb 2004 18:18:38 -0000
+@@ -119,6 +119,7 @@ typedef struct
+       char *comment;
+       char *lock_file;
+       BOOL read_only;
++      BOOL write_only;
+       BOOL list;
+       BOOL use_chroot;
+       BOOL transfer_logging;
+@@ -151,6 +152,7 @@ static service sDefault =
+       NULL,    /* comment */
+       DEFAULT_LOCK_FILE,    /* lock file */
+       True,    /* read only */
++      False,   /* write only */
+       True,    /* list */
+       True,    /* use chroot */
+       False,   /* transfer logging */
+@@ -277,6 +279,7 @@ static struct parm_struct parm_table[] =
+   {"lock file",        P_STRING,  P_LOCAL,  &sDefault.lock_file,   NULL,   0},
+   {"path",             P_PATH,    P_LOCAL,  &sDefault.path,        NULL,   0},
+   {"read only",        P_BOOL,    P_LOCAL,  &sDefault.read_only,   NULL,   0},
++  {"write only",       P_BOOL,    P_LOCAL,  &sDefault.write_only,  NULL,   0},
+   {"list",             P_BOOL,    P_LOCAL,  &sDefault.list,        NULL,   0},
+   {"use chroot",       P_BOOL,    P_LOCAL,  &sDefault.use_chroot,  NULL,   0},
+   {"ignore nonreadable",P_BOOL,   P_LOCAL,  &sDefault.ignore_nonreadable,  NULL,   0},
+@@ -356,6 +359,7 @@ FN_LOCAL_STRING(lp_comment, comment)
+ FN_LOCAL_STRING(lp_path, path)
+ FN_LOCAL_STRING(lp_lock_file, lock_file)
+ FN_LOCAL_BOOL(lp_read_only, read_only)
++FN_LOCAL_BOOL(lp_write_only, write_only)
+ FN_LOCAL_BOOL(lp_list, list)
+ FN_LOCAL_BOOL(lp_use_chroot, use_chroot)
+ FN_LOCAL_BOOL(lp_transfer_logging, transfer_logging)
+--- main.c     10 Feb 2004 03:54:47 -0000      1.192
++++ main.c     27 Feb 2004 18:18:38 -0000
+@@ -370,6 +370,12 @@ static void do_server_sender(int f_in, i
+                       (long)getpid());
+       }
++      if (am_daemon && lp_write_only(module_id) && !am_sender) {
++              rprintf(FERROR, "ERROR: module is write only\n");
++              exit_cleanup(RERR_SYNTAX);
++              return;
++      }
++
+       if (!relative_paths && !push_dir(dir)) {
+               rprintf(FERROR, "push_dir %s failed: %s (3)\n",
+                       full_fname(dir), strerror(errno));
+--- proto.h    17 Feb 2004 23:13:06 -0000      1.184
++++ proto.h    27 Feb 2004 18:53:40 -0000
+@@ -134,6 +134,7 @@ char *lp_comment(int );
+ char *lp_path(int );
+ char *lp_lock_file(int );
+ BOOL lp_read_only(int );
++BOOL lp_write_only(int );
+ BOOL lp_list(int );
+ BOOL lp_use_chroot(int );
+ BOOL lp_transfer_logging(int );