--- rsync.h.orig 2019-11-26 00:32:00.801993000 +0000 +++ rsync.h 2019-11-26 00:31:26.661675000 +0000 @@ -24,6 +24,10 @@ #define BLOCK_SIZE 700 #define RSYNC_RSH_ENV "RSYNC_RSH" #define RSYNC_RSH_IO_ENV "RSYNC_RSH_IO" +/* CyberLeo: Envvar to set pause length for rsync --server */ +#define RSYNC_SERVER_PAUSE_ENV "RSYNC_SERVER_PAUSE" +/* CyberLeo: Envvar to set chroot directory for rsync --server */ +#define RSYNC_SERVER_CHROOT_ENV "RSYNC_SERVER_CHROOT" #define RSYNC_NAME "rsync" /* RSYNCD_SYSCONF is now set in config.h */ --- main.c.orig 2019-11-26 00:32:10.867959000 +0000 +++ main.c 2019-11-25 21:40:37.773176000 +0000 @@ -1116,6 +1117,29 @@ set_nonblocking(f_in); set_nonblocking(f_out); + /* CyberLeo: Sleep here for RSYNC_SERVER_PAUSE_ENV seconds */ + const char *rsync_server_pause = getenv(RSYNC_SERVER_PAUSE_ENV); + if (rsync_server_pause) + sleep(atoi(rsync_server_pause)); + + /* CyberLeo: Chroot into RSYNC_SERVER_CHROOT_ENV before running */ + const char *rsync_server_chroot = getenv(RSYNC_SERVER_CHROOT_ENV); + if (rsync_server_chroot) + { + if (0 > chroot(rsync_server_chroot)) + { + fprintf(stderr, "chroot(%s): ", rsync_server_chroot); + perror(""); + exit(4); + } + if (0 > chdir("/")) + { + fprintf(stderr, "chdir(%s): ", rsync_server_chroot); + perror(""); + exit(4); + } + } + io_set_sock_fds(f_in, f_out); setup_protocol(f_out, f_in);