extract rsync_rebuild_config and call it for some keywords in log
[cloudstore.git] / rsync-piper.pl
index 1fe8ebe..2725d65 100755 (executable)
@@ -60,6 +60,8 @@ my $store = CloudStore::Store->new( dir => $dir );
 unlink $log_fifo if -f $log_fifo;
 mkfifo $log_fifo, 0700 unless -p $log_fifo;
 
+sub rsync_rebuild_config {
+
 my $rsync_config = qq{
 
 #uid = nobody
@@ -109,6 +111,8 @@ while(<$p>) {
        filter = - /.secrets - /.md5
 #      refuse options = c delete
 #      dont compress = *
+       incoming chmod = u=rwX,g+rX,o+rX
+
 
 __RSYNC_MODULE__
 
@@ -123,6 +127,10 @@ __RSYNC_MODULE__
 write_file $cfg_file, $rsync_config;
 warn "created $cfg_file ", -s $cfg_file, " bytes\n";
 
+} # sub rsync_rebuild_config
+
+rsync_rebuild_config;
+
 sub rsync_running_pid {
        return unless -e $pid_file;
        my $pid = read_file $pid_file;
@@ -230,7 +238,10 @@ if(0) {
 =cut
 
                        die "no rsync running" unless kill 0, rsync_running_pid;
-               } elsif ( $line =~ m/unknown module/ ) {
+               } elsif ( $line =~ m/(unknown module|rebuild|reload|config)/ ) {
+                       warn "refresh modules, rebuild config and HUP rsync";
+                       Module::Refresh->refresh;
+                       rsync_rebuild_config;
                        my $pid = rsync_running_pid;
                        kill 1, $pid && warn "reload config";
                } else {