⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 editconfig.pm

📁 老外写的linux下的文件备份软件
💻 PM
📖 第 1 页 / 共 4 页
字号:
    } else {	#	# First time: pick up the current config settings	#	$mainConf = $bpc->ConfigDataRead();	if ( $host ne "" ) {	    $hostConf = $bpc->ConfigDataRead($host);	    $override = {};	    foreach my $param ( keys(%$hostConf) ) {		$override->{$param} = 1;	    }	} else {            my $hostInfo = $bpc->HostInfoRead();	    $hostConf = {};            $mainConf->{Hosts} = [map($hostInfo->{$_}, sort(keys(%$hostInfo)))];	}	$newConf = { %$mainConf, %$hostConf };    }    if ( $In{saveAction} ne "Save" && $In{newMenu} ne ""		    && defined($ConfigMenu{$In{newMenu}}) ) {        $menu = $In{newMenu};    }    my %menuDisable;    if ( $userHost ) {        #        # For a non-admin user editing the host config, we need to        # figure out which subsets of the menu tree will be visible,        # based on what is enabled.  Admin users can edit all the        # available per-host settings.        #        foreach my $m ( keys(%ConfigMenu) ) {            my $enabled = 0;            my $text = -1;            my $n = 0;            my @mask = ();            foreach my $paramInfo ( @{$ConfigMenu{$m}{param}} ) {                my $param = $paramInfo->{name};                if ( defined($paramInfo->{text}) ) {                    $text = $n;                    $mask[$text] = 1;                } else {                    if ( $bpc->{Conf}{CgiUserConfigEdit}{$param}                          || (defined($bpc->{Conf}{CgiUserConfigEdit}{$param})                                && $PrivAdmin) ) {                        $mask[$text] = 0 if ( $text >= 0 );                        $mask[$n] = 0;                        $enabled ||= 1;                    } else {                        $mask[$n] = 1;                    }                }                $n++;            }            $menuDisable{$m}{mask} = \@mask;            $menuDisable{$m}{top}  = !$enabled;        }        if ( $menuDisable{$menu}{top} ) {            #            # Find an enabled menu if the current menu is empty            #            foreach my $m ( sort(keys(%menuDisable)) ) {                if ( !$menuDisable{$m}{top} ) {                    $menu = $m;                    last;                }            }        }    }    my $groupText;    foreach my $m ( keys(%ConfigMenu) ) {        next if ( $menuDisable{$m}{top} );	my $text = eval("qq($Lang->{$ConfigMenu{$m}{text}})");        if ( $m eq $menu ) {            $groupText .= <<EOF;<td class="editTabSel"><a href="javascript:menuSubmit('$m')"><b>$text</b></a></td>EOF        } else {            $groupText .= <<EOF;<td class="editTabNoSel"><a href="javascript:menuSubmit('$m')">$text</a></td>EOF        }    }    if ( $host eq "" ) {	$content .= eval("qq($Lang->{CfgEdit_Header_Main})");    } else {	$content .= eval("qq($Lang->{CfgEdit_Header_Host})");    }    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    #    my $url = "$MyURL?action=editConfig";    $url .= "&host=$host" if ( $host ne "" );    $content .= <<EOF;<table border="0" cellpadding="2"><tr>$groupText</tr><tr><form method="post" name="editForm" action="$url"><input type="hidden" name="host" value="$host"><input type="hidden" name="menu" value="$menu"><input type="hidden" name="newMenu" value=""><input type="hidden" name="modified" value="$In{modified}"><input type="hidden" name="deleteVar" value=""><input type="hidden" name="insertVar" value=""><input type="hidden" name="overrideUncheck" value=""><input type="hidden" name="addVar" value=""><input type="hidden" name="action" value="editConfig"><input type="hidden" name="saveAction" value=""><input type="button" class="editSaveButton" name="editAction"    value="${EscHTML($Lang->{CfgEdit_Button_Save})}" $saveStyle    onClick="saveSubmit();"><p><script language="javascript" type="text/javascript"><!--    function saveSubmit()    {        if ( document.editForm.modified.value != 0 ) {            document.editForm.saveAction.value = 'Save';            document.editForm.submit();        }        return false;    }    function deleteSubmit(varName)    {        document.editForm.deleteVar.value = varName;	document.editForm.modified.value = 1;        document.editForm.submit();        return;    }    function insertSubmit(varName)    {        document.editForm.insertVar.value = varName;	document.editForm.modified.value = 1;        document.editForm.submit();        return;    }    function addSubmit(varName, checkKey)    {        if ( checkKey            && eval("document.editForm.addVarKey_" + varName + ".value") == "" ) {            alert("New key must be non-empty");            return;        }        document.editForm.addVar.value = varName;	document.editForm.modified.value = 1;        document.editForm.submit();        return;    }    function menuSubmit(menuName)    {        document.editForm.newMenu.value = menuName;        document.editForm.submit();    }    function varChange(varName)    {	document.editForm.modified.value = 1;        document.editForm.editAction.style.color = '$saveColor';    }    function checkboxChange(varName)    {	document.editForm.modified.value = 1;        document.editForm.editAction.style.color = '$saveColor';	// Do nothing if the checkbox is now set        if ( eval("document.editForm.override_" + varName + ".checked") ) {	    return false;	}	var allVars = {};	var varRE  = new RegExp("^v_zZ_(" + varName + ".*)");	var origRE = new RegExp("^orig_zZ_(" + varName + ".*)");        for ( var i = 0 ; i < document.editForm.elements.length ; i++ ) {	    var e = document.editForm.elements[i];	    var re;	    if ( (re = varRE.exec(e.name)) != null ) {		if ( allVars[re[1]] == null ) {		    allVars[re[1]] = 0;		}		allVars[re[1]]++;		//debugMsg("found v_zZ_ match with " + re[1]);		//debugMsg("allVars[" + re[1] + "] = " + allVars[re[1]]);	    } else if ( (re = origRE.exec(e.name)) != null ) {		if ( allVars[re[1]] == null ) {		    allVars[re[1]] = 0;		}		allVars[re[1]]--;		//debugMsg("allVars[" + re[1] + "] = " + allVars[re[1]]);	    }	}	var sameShape = 1;	for ( v in allVars ) {	    if ( allVars[v] != 0 ) {		//debugMsg("Not the same shape because of " + v);		sameShape = 0;	    } else {                // copy the original variable values		//debugMsg("setting " + v);		eval("document.editForm.v_zZ_" + v + ".value = document.editForm.orig_zZ_" + v + ".value");            }	}	if ( sameShape ) {	    return true;	} else {            // need to rebuild the form since the compound variable            // has changed shape            document.editForm.overrideUncheck.value = varName;	    document.editForm.submit();	    return false;	}    }    function checkboxSet(varName)    {	document.editForm.modified.value = 1;        document.editForm.editAction.style.color = '$saveColor';        eval("document.editForm.override_" + varName + ".checked = 1;");        return false;    }    var debugCounter = 0;    function debugMsg(msg)    {	debugCounter++;	var t = document.createTextNode(debugCounter + ": " + msg);	var br = document.createElement("br");	var debug = document.getElementById("debug");	debug.appendChild(t);	debug.appendChild(br);    }    function displayHelp(varName)    {	var help = document.getElementById("id_" + varName);	help.style.display = help.style.display == "block" ? "none" : "block";    }//--></script><span id="debug">$debugText</span>EOF    $content .= <<EOF;<table border="1" cellspacing="0">EOF    my $doneParam = {};    my $tblContent;    #    # There is a special case of the user deleting just the field    # that has the error(s).  So if the delete variable is a match    # or parent to all the errors then ignore the errors.    #    if ( $In{deleteVar} ne "" && %$errors > 0 ) {        my $matchAll = 1;        foreach my $v ( keys(%$errors) ) {            if ( $v ne $In{deleteVar} && $v !~ /^\Q$In{deleteVar}_zZ_/ ) {                $matchAll = 0;                last;            }        }        $errors = {} if ( $matchAll );    }    my $isError = %$errors;    if ( !$isError && $In{saveAction} eq "Save" ) {        my($mesg, $err);	if ( $host ne "" ) {	    $hostConf = $bpc->ConfigDataRead($host) if ( !defined($hostConf) );            my %hostConf2 = %$hostConf;	    foreach my $param ( keys(%$newConf) ) {                if ( $override->{$param} ) {                    $hostConf->{$param} = $newConf->{$param}                } else {                    delete($hostConf->{$param});                }	    }            $mesg = configDiffMesg($host, \%hostConf2, $hostConf);	    $err .= $bpc->ConfigDataWrite($host, $hostConf);	} else {	    $mainConf = $bpc->ConfigDataRead() if ( !defined($mainConf) );            my $hostsSave = [];            my($hostsNew, $allHosts, $copyConf);            foreach my $entry ( @{$newConf->{Hosts}} ) {                next if ( $entry->{host} eq "" );                $allHosts->{$entry->{host}} = 1;                $allHosts->{$1} = 1 if ( $entry->{host} =~ /(.+?)\s*=/ );            }            foreach my $entry ( @{$newConf->{Hosts}} ) {                next if ( $entry->{host} eq ""                           || defined($hostsNew->{$entry->{host}}) );                if ( $entry->{host} =~ /(.+?)\s*=\s*(.+)/ ) {                    if ( defined($allHosts->{$2}) ) {                        $entry->{host} = $1;                        $copyConf->{$1} = $2;                    } else {                        my $fullHost = $entry->{host};                        my $copyHost = $2;                        $err .= eval("qq($Lang->{CfgEdit_Error_Copy_host_does_not_exist})");                    }                }                push(@$hostsSave, $entry);                $hostsNew->{$entry->{host}} = $entry;            }            ($mesg, my $hostChange) = hostsDiffMesg($hostsNew);            $bpc->HostInfoWrite($hostsNew) if ( $hostChange );            foreach my $host ( keys(%$copyConf) ) {                #                # Currently host names are forced to lc when they                # are read from the hosts file.  Therefore we need                # to force the from and to hosts to lc.                #                my $confData = $bpc->ConfigDataRead(lc($copyConf->{$host}));                my $fromHost = $copyConf->{$host};                $err  .= $bpc->ConfigDataWrite(lc($host), $confData);                $mesg .= eval("qq($Lang->{CfgEdit_Log_Copy_host_config})");            }            delete($newConf->{Hosts});            $mesg .= configDiffMesg(undef, $mainConf, $newConf);	    $mainConf = { %$mainConf, %$newConf };	    $err .= $bpc->ConfigDataWrite(undef, $mainConf);            $newConf->{Hosts} = $hostsSave;	}        if ( defined($err) ) {            $tblContent .= <<EOF;<tr><td colspan="2" class="border"><span class="editError">$err</span></td></tr>EOF        }        $bpc->ServerConnect();        if ( $mesg ne "" ) {            (my $mesgBR = $mesg) =~ s/\n/<br>\n/g;             # uncomment this if you want the changes to be displayed#            $tblContent .= <<EOF;#<tr><td colspan="2" class="border"><span class="editComment">$mesgBR</span></td></tr>#EOF            foreach my $str ( split(/\n/, $mesg) ) {                $bpc->ServerMesg("log $str") if ( $str ne "" );            }        }        #        # Tell the server to reload, unless we only changed        # a client config        #        $bpc->ServerMesg("server reload") if ( $host eq "" );    }    my @mask = @{$menuDisable{$menu}{mask} || []};    foreach my $paramInfo ( @{$ConfigMenu{$menu}{param}} ) {        my $param    = $paramInfo->{name};        my $disabled = shift(@mask);        next if ( $disabled || $menuDisable{$menu}{top} );        if ( ref($paramInfo->{visible}) eq "CODE"                        && !&{$paramInfo->{visible}}($newConf, $bpc) ) {            next;        }	if ( defined($paramInfo->{text}) ) {            my $text = eval("qq($Lang->{$paramInfo->{text}})");	    $tblContent .= <<EOF;<tr><td colspan="2" class="editHeader">$text</td></tr>EOF	    next;	}	#	# TODO: get parameter documentation	#	my $comment = "";	#$comment =~ s/\'//g;	#$comment =~ s/\"//g;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -