X-Git-Url: http://git.rot13.org/?p=BackupPC.git;a=blobdiff_plain;f=lib%2FBackupPC%2FCGI%2FEditConfig.pm;h=9b78b15f085154ee2ad5361b7a0739229e9640fd;hp=11ac9894d6e2b913e84cd35bf82e9e4df9f099d0;hb=5b79f9a3c01bca16dd4d211e76fc53daa549e421;hpb=27f513f89d885d24bf1a01242fba676c7a840fd5 diff --git a/lib/BackupPC/CGI/EditConfig.pm b/lib/BackupPC/CGI/EditConfig.pm index 11ac989..9b78b15 100644 --- a/lib/BackupPC/CGI/EditConfig.pm +++ b/lib/BackupPC/CGI/EditConfig.pm @@ -10,7 +10,7 @@ # Craig Barratt # # COPYRIGHT -# Copyright (C) 2004 Craig Barratt +# Copyright (C) 2005-2007 Craig Barratt # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -28,7 +28,7 @@ # #======================================================================== # -# Version 3.0.0alpha, released 23 Jan 2006. +# Version 3.1.1, released 22 Dec 2008. # # See http://backuppc.sourceforge.net. # @@ -41,6 +41,7 @@ use BackupPC::CGI::Lib qw(:all); use BackupPC::Config::Meta qw(:all); use BackupPC::Storage; use Data::Dumper; +use Encode; our %ConfigMenu = ( server => { @@ -92,11 +93,21 @@ our %ConfigMenu = ( {name => "Bzip2Path"}, {text => "CfgEdit_Title_Install_Paths"}, - {name => "TopDir"}, - {name => "ConfDir"}, - {name => "LogDir"}, + # + # Can only edit TopDir and LogDir if we are in FHS mode. + # Otherwise they are hardcoded in lib/BackupPC/Lib.pm. + # + {name => "TopDir", + visible => sub { return $_[1]->useFHS(); } }, + {name => "LogDir", + visible => sub { return $_[1]->useFHS(); } }, {name => "CgiDir"}, - {name => "InstallDir"}, + # + # Cannot edit ConfDir or InstallDir, since the real value is hardcoded in + # lib/BackupPC/Lib.pm. + # {name => "ConfDir"}, + # {name => "InstallDir"}, + # ], }, email => { @@ -160,7 +171,9 @@ our %ConfigMenu = ( {name => "XferMethod", onchangeSubmit => 1}, {name => "XferLogLevel"}, {name => "ClientCharset"}, + {name => "ClientCharsetLegacy"}, + ### Smb Settings {text => "CfgEdit_Title_Smb_Settings", visible => sub { return $_[0]->{XferMethod} eq "smb"; } }, {name => "SmbShareName", @@ -170,17 +183,21 @@ our %ConfigMenu = ( {name => "SmbSharePasswd", visible => sub { return $_[0]->{XferMethod} eq "smb"; } }, + ### Tar Settings {text => "CfgEdit_Title_Tar_Settings", visible => sub { return $_[0]->{XferMethod} eq "tar"; } }, {name => "TarShareName", visible => sub { return $_[0]->{XferMethod} eq "tar"; } }, + ### Rsync Settings {text => "CfgEdit_Title_Rsync_Settings", visible => sub { return $_[0]->{XferMethod} eq "rsync"; } }, {text => "CfgEdit_Title_Rsyncd_Settings", visible => sub { return $_[0]->{XferMethod} eq "rsyncd"; } }, {name => "RsyncShareName", visible => sub { return $_[0]->{XferMethod} =~ /rsync/; } }, + {name => "RsyncdUserName", + visible => sub { return $_[0]->{XferMethod} eq "rsyncd"; } }, {name => "RsyncdPasswd", visible => sub { return $_[0]->{XferMethod} eq "rsyncd"; } }, {name => "RsyncdAuthRequired", @@ -188,6 +205,37 @@ our %ConfigMenu = ( {name => "RsyncCsumCacheVerifyProb", visible => sub { return $_[0]->{XferMethod} =~ /rsync/; } }, + ### Ftp Settings + {text => "CfgEdit_Title_Ftp_Settings", + visible => sub { return $_[0]->{XferMethod} eq "ftp"; } }, + {name => "FtpShareName", + visible => sub { return $_[0]->{XferMethod} eq "ftp"; } }, + {name => "FtpUserName", + visible => sub { return $_[0]->{XferMethod} eq "ftp"; } }, + {name => "FtpPasswd", + visible => sub { return $_[0]->{XferMethod} eq "ftp"; } }, + {name => "FtpBlockSize", + visible => sub { return $_[0]->{XferMethod} eq "ftp"; } }, + {name => "FtpPort", + visible => sub { return $_[0]->{XferMethod} eq "ftp"; } }, + {name => "FtpTimeout", + visible => sub { return $_[0]->{XferMethod} eq "ftp"; } }, + {name => "FtpFollowSymlinks", + visible => sub { return $_[0]->{XferMethod} eq "ftp"; } }, + + ### BackupPCd Settings + {text => "CfgEdit_Title_BackupPCd_Settings", + visible => sub { return $_[0]->{XferMethod} eq "backuppcd"; } }, + {name => "BackupPCdShareName", + visible => sub { return $_[0]->{XferMethod} eq "backuppcd"; } }, + {name => "BackupPCdPath", + visible => sub { return $_[0]->{XferMethod} eq "backuppcd"; } }, + {name => "BackupPCdCmd", + visible => sub { return $_[0]->{XferMethod} eq "backuppcd"; } }, + {name => "BackupPCdRestoreCmd", + visible => sub { return $_[0]->{XferMethod} eq "backuppcd"; } }, + + ### Archive Settings {text => "CfgEdit_Title_Archive_Settings", visible => sub { return $_[0]->{XferMethod} eq "archive"; } }, {name => "ArchiveDest", @@ -199,6 +247,7 @@ our %ConfigMenu = ( {name => "ArchiveSplit", visible => sub { return $_[0]->{XferMethod} eq "archive"; } }, + ### Include/Exclude Settings {text => "CfgEdit_Title_Include_Exclude", visible => sub { return $_[0]->{XferMethod} ne "archive"; } }, {name => "BackupFilesOnly", @@ -206,6 +255,7 @@ our %ConfigMenu = ( {name => "BackupFilesExclude", visible => sub { return $_[0]->{XferMethod} ne "archive"; } }, + ### Samba paths and commands {text => "CfgEdit_Title_Smb_Paths_Commands", visible => sub { return $_[0]->{XferMethod} eq "smb"; } }, {name => "SmbClientPath", @@ -217,6 +267,7 @@ our %ConfigMenu = ( {name => "SmbClientRestoreCmd", visible => sub { return $_[0]->{XferMethod} eq "smb"; } }, + ### Tar paths and commands {text => "CfgEdit_Title_Tar_Paths_Commands", visible => sub { return $_[0]->{XferMethod} eq "tar"; } }, {name => "TarClientPath", @@ -230,6 +281,7 @@ our %ConfigMenu = ( {name => "TarClientRestoreCmd", visible => sub { return $_[0]->{XferMethod} eq "tar"; } }, + ### Rsync paths and commands {text => "CfgEdit_Title_Rsync_Paths_Commands_Args", visible => sub { return $_[0]->{XferMethod} eq "rsync"; } }, {text => "CfgEdit_Title_Rsyncd_Port_Args", @@ -247,6 +299,7 @@ our %ConfigMenu = ( {name => "RsyncRestoreArgs", visible => sub { return $_[0]->{XferMethod} =~ /rsync/; } }, + ### Archive paths and commands {text => "CfgEdit_Title_Archive_Paths_Commands", visible => sub { return $_[0]->{XferMethod} eq "archive"; } }, {name => "ArchiveClientCmd", @@ -268,9 +321,11 @@ our %ConfigMenu = ( {name => "IncrKeepCnt"}, {name => "IncrKeepCntMin"}, {name => "IncrAgeMax"}, + {name => "IncrLevels"}, {name => "IncrFill"}, {text => "CfgEdit_Title_Blackouts"}, + {name => "BackupsDisable"}, {name => "BlackoutBadPingLimit"}, {name => "BlackoutGoodCnt"}, {name => "BlackoutPeriods"}, @@ -307,6 +362,7 @@ our %ConfigMenu = ( {name => "RestorePostUserCmd"}, {name => "ArchivePreUserCmd"}, {name => "ArchivePostUserCmd"}, + {name => "UserCmdCheckStatus"}, ], }, hosts => { @@ -340,24 +396,28 @@ sub action ErrorExit(eval("qq{$Lang->{Only_privileged_users_can_edit_config_files}}")); } - if ( defined($In{menu}) || $In{editAction} eq $Lang->{CfgEdit_Button_Save} ) { + if ( defined($In{menu}) || $In{saveAction} eq "Save" ) { $errors = errorCheck(); if ( %$errors ) { # # If there are errors, then go back to the same menu # - $In{editAction} = ""; - $In{newMenu} = ""; + $In{saveAction} = ""; + #$In{newMenu} = ""; } if ( (my $var = $In{overrideUncheck}) ne "" ) { # - # a compound variable was unchecked; delete extra - # variables to make the shape the same. + # a compound variable was unchecked; delete or + # add extra variables to make the shape the same. # #print STDERR Dumper(\%In); foreach my $v ( keys(%In) ) { - next if ( $v !~ /^v_z_(\Q$var\E(_z_.*|$))/ ); - delete($In{$v}) if ( !defined($In{"orig_z_$1"}) ); + if ( $v =~ /^v_zZ_(\Q$var\E(_zZ_.*|$))/ ) { + delete($In{$v}) if ( !defined($In{"orig_zZ_$1"}) ); + } + if ( $v =~ /^orig_zZ_(\Q$var\E(_zZ_.*|$))/ ) { + $In{"v_zZ_$1"} = $In{$v}; + } } delete($In{"vflds.$var"}); } @@ -384,7 +444,7 @@ sub action $newConf = { %$mainConf, %$hostConf }; } - if ( $In{editAction} ne $Lang->{CfgEdit_Button_Save} && $In{newMenu} ne "" + if ( $In{saveAction} ne "Save" && $In{newMenu} ne "" && defined($ConfigMenu{$In{newMenu}}) ) { $menu = $In{newMenu}; } @@ -458,9 +518,15 @@ EOF $content .= eval("qq($Lang->{CfgEdit_Header_Host})"); } - my $saveDisplay = "block"; - $saveDisplay = "none" if ( !$In{modified} - || $In{editAction} eq $Lang->{CfgEdit_Button_Save} ); + my $saveStyle = ""; + my $saveColor = "#ff0000"; + + if ( $In{modified} && $In{saveAction} ne "Save" && !%$errors ) { + $saveStyle = "style=\"color:$saveColor\""; + } else { + $In{modified} = 0; + } + # # Add action and host to the URL so the nav bar link is # highlighted @@ -471,7 +537,7 @@ EOF $groupText - + @@ -481,72 +547,85 @@ EOF - + + +