diff -Naur nawt.orig/doc/API_RUS.txt nawt/doc/API_RUS.txt --- nawt.orig/doc/API_RUS.txt 2005-01-17 23:49:16 +0300 +++ nawt/doc/API_RUS.txt 2007-07-21 02:30:23 +0400 @@ -9,7 +9,7 @@ ðàñïîëîæåííû ìîäóëè, ëèáî â âàøåé ïðîãðàììå äîáàâèòü ïóòü ê íåìó â ñèñòåìíóþ ïåðåìåííóþ @INC: - unshift (@INC, "/usr/local/nawt/lib"); + unshift (@INC, "@APACHE2@/lib"); Netams.pm èñïîëüçóåò ñòàíäàðòíûé ìîäóëü Net::Telnet, êîòîðûé ìîæíî íàéòè íà http://www.cpan.org. diff -Naur nawt.orig/lib/Nawt/Operation/Account.pm nawt/lib/Nawt/Operation/Account.pm --- nawt.orig/lib/Nawt/Operation/Account.pm 2006-04-07 01:50:46 +0400 +++ nawt/lib/Nawt/Operation/Account.pm 2007-07-21 02:30:23 +0400 @@ -256,21 +256,24 @@ $oid = $session{form}{oid}; $type = $session{form}{type}; $sum = $session{form}{sum}; + $session{netams}->enableConfig(1); if (canEdit('account') && $session{netams}->hasService('billing') && $session{netams}->hasAccount($oid) && $sum > 0) { if ($type eq "add") { $session{netams}->runCmd("service billing"); $session{netams}->runCmd("account $oid balance add $sum"); - $session{netams}->runCmd("exit"); +# $session{netams}->runCmd("exit"); } elsif ($type eq "rem") { $session{netams}->runCmd("service billing"); $session{netams}->runCmd("account $oid balance remove $sum"); - $session{netams}->runCmd("exit"); +# $session{netams}->runCmd("exit"); } elsif ($type eq "set") { $session{netams}->runCmd("service billing"); $session{netams}->runCmd("account $oid balance set $sum"); - $session{netams}->runCmd("exit"); +# $session{netams}->runCmd("exit"); } } + $session{netams}->enableConfig(0); + $session{netams}->runCmd("save"); return Nawt::Theme::getRedirect("?op=editAccount&oid=$oid"); } @@ -350,6 +353,7 @@ my(@oid,%html); @oid = split(",",$session{form}{oid}); if (canEdit('account') && $session{form}{confirmed}) { + $session{netams}->enableConfig(1); if ($session{netams}->hasService('billing')) { # Deleting units if ($session{form}{units}) { @@ -362,8 +366,9 @@ } $session{netams}->runCmd("service billing"); $session{netams}->runCmd("no account $_") foreach @oid; - $session{netams}->runCmd("exit"); +# $session{netams}->runCmd("exit"); } + $session{netams}->enableConfig(0); } else { my $msg; my %conf = $session{netams}->getAccount(); @@ -391,9 +396,11 @@ $accId = $session{form}{aid}; #$accId = $session{netams}->unitInBilling($oid); if (canEdit('account')) { + $session{netams}->enableConfig(1); $session{netams}->runCmd("service billing"); $session{netams}->runCmd("account $accId unit oid $unitId add"); - $session{netams}->runCmd("exit"); + $session{netams}->enableConfig(0); +# $session{netams}->runCmd("exit"); $session{netams}->runCmd("save"); return Nawt::Theme::getRedirect("?op=editAccount&oid=$accId"); } @@ -408,9 +415,11 @@ $accId = $session{netams}->unitInBilling($oid); if ($accId and canEdit('account')) { + $session{netams}->enableConfig(1); $session{netams}->runCmd("service billing"); $session{netams}->runCmd("account $accId unit oid $oid delete"); - $session{netams}->runCmd("exit"); + $session{netams}->enableConfig(0); +# $session{netams}->runCmd("exit"); $session{netams}->runCmd("save"); return Nawt::Theme::getRedirect("?op=editAccount&oid=$accId"); } diff -Naur nawt.orig/lib/Nawt/Operation/AutoUnit.pm nawt/lib/Nawt/Operation/AutoUnit.pm --- nawt.orig/lib/Nawt/Operation/AutoUnit.pm 2005-11-27 14:01:55 +0300 +++ nawt/lib/Nawt/Operation/AutoUnit.pm 2007-07-21 02:30:23 +0400 @@ -93,18 +93,22 @@ if ($oid ne "_new") { $cmd .= " ".$session{form}{prefix} if $session{form}{naming} ne "by-dns"; $cmd .= " group $session{form}{group}" if $session{form}{group} ne ""; + $session{netams}->enableConfig(1); $session{netams}->runCmd("service processor"); $session{netams}->runCmd("auto-units $oid type $session{form}{type} naming $session{form}{naming}$cmd"); - $session{netams}->runCmd("exit"); + $session{netams}->enableConfig(0); +# $session{netams}->runCmd("exit"); $session{netams}->runCmd("save"); } else { my $id; do { $id++ } until !defined $proc{"auto-units"}{$id}; $cmd .= " ".$session{form}{prefix} if $session{form}{naming} ne "by-dns"; $cmd .= " group $session{form}{group}" if $session{form}{group} ne ""; + $session{netams}->enableConfig(1); $session{netams}->runCmd("service processor"); $session{netams}->runCmd("auto-units $id type $session{form}{type} naming $session{form}{naming}$cmd"); - $session{netams}->runCmd("exit"); + $session{netams}->enableConfig(0); +# $session{netams}->runCmd("exit"); $session{netams}->runCmd("save"); } return Nawt::Theme::getRedirect("$session{env}{scripturl}?op=showAutoUnits"); @@ -116,9 +120,11 @@ my $oid; $oid = $session{form}{oid}; if ($oid =~ m/\d+/) { + $session{netams}->enableConfig(1); $session{netams}->runCmd("service processor"); $session{netams}->runCmd("no auto-units $oid"); - $session{netams}->runCmd("exit"); + $session{netams}->enableConfig(0); +# $session{netams}->runCmd("exit"); $session{netams}->runCmd("save"); } return Nawt::Theme::getRedirect("$session{env}{scripturl}?op=showAutoUnits"); diff -Naur nawt.orig/lib/Nawt/Operation/Login.pm nawt/lib/Nawt/Operation/Login.pm --- nawt.orig/lib/Nawt/Operation/Login.pm 2005-12-28 01:54:38 +0300 +++ nawt/lib/Nawt/Operation/Login.pm 2007-07-21 02:30:24 +0400 @@ -83,9 +83,11 @@ } else { $cmd .= " nostrict"; } + $session{netams}->enableConfig(1); $session{netams}->runCmd("service login"); $session{netams}->runCmd($cmd); - $session{netams}->runCmd("exit"); + $session{netams}->enableConfig(0); +# $session{netams}->runCmd("exit"); $session{netams}->runCmd("save"); } elsif (defined $oid && not $session{form}{useLogin}) { #Nawt::SQL->write("DELETE FROM login WHERE unit_oid='".hex($oid)."' LIMIT 1"); diff -Naur nawt.orig/lib/Nawt/Operation/Plan.pm nawt/lib/Nawt/Operation/Plan.pm --- nawt.orig/lib/Nawt/Operation/Plan.pm 2006-01-22 21:02:51 +0300 +++ nawt/lib/Nawt/Operation/Plan.pm 2007-07-21 02:30:24 +0400 @@ -257,6 +257,7 @@ } if ($op{adj_fee}) { $html{adj_fee} = "yes"; } else { $html{adj_fee} = "no"; } if ($op{adj_incl}) { $html{adj_incl} = "yes"; } else { $html{adj_incl} = "no"; } + $session{netams}->enableConfig(1); $session{netams}->runCmd("service billing"); $session{netams}->runCmd("subplan $id fee $op{fee} spread $op{spread}"); $session{netams}->runCmd("subplan $id adjust-fee $html{adj_fee}"); @@ -266,7 +267,8 @@ $session{netams}->runCmd("subplan $id adjust-included $html{adj_incl}"); $session{netams}->runCmd("subplan $id overdraft $op{over_in} in $op{over_out} out"); $session{netams}->runCmd("subplan $id overdraft $op{over_sum} sum") if $op{over_sum} ne ""; - $session{netams}->runCmd("exit"); + $session{netams}->enableConfig(0); +# $session{netams}->runCmd("exit"); $session{netams}->runCmd("save"); return Nawt::Theme::getRedirect("?op=editSubPlan&id=$id"); } @@ -289,10 +291,12 @@ $op{name} =~ s/ +/_/g; $op{descr} =~ s/[\"\']+//g; #'"; + $session{netams}->enableConfig(1); $session{netams}->runCmd("service billing"); $session{netams}->runCmd("plan $id name $op{name}"); $session{netams}->runCmd("plan $id description \"$op{descr}\""); - $session{netams}->runCmd("exit"); + $session{netams}->enableConfig(0); +# $session{netams}->runCmd("exit"); $session{netams}->runCmd("save"); return Nawt::Theme::getRedirect("?op=editPlan&id=$id"); } @@ -302,9 +306,11 @@ checkAdmin(); my $id = int($session{form}{id}); if (canEdit('plan')) { + $session{netams}->enableConfig(1); $session{netams}->runCmd("service billing"); $session{netams}->runCmd("no subplan $id"); - $session{netams}->runCmd("exit"); + $session{netams}->enableConfig(0); +# $session{netams}->runCmd("exit"); $session{netams}->runCmd("save"); } return Nawt::Theme::getRedirect("?op=showPlanList"); @@ -315,9 +321,11 @@ checkAdmin(); my $id = int($session{form}{id}); if (canEdit('plan')) { + $session{netams}->enableConfig(1); $session{netams}->runCmd("service billing"); $session{netams}->runCmd("no plan $id"); - $session{netams}->runCmd("exit"); + $session{netams}->enableConfig(0); +# $session{netams}->runCmd("exit"); $session{netams}->runCmd("save"); } return Nawt::Theme::getRedirect("?op=showPlanList"); @@ -331,9 +339,11 @@ $sid = int($session{form}{sid}); %conf = $session{netams}->getService('billing'); if (canEdit('plan') and defined $conf{plan}{$pid}) { + $session{netams}->enableConfig(1); $session{netams}->runCmd("service billing"); $session{netams}->runCmd("plan $pid subplan $sid"); - $session{netams}->runCmd("exit"); + $session{netams}->enableConfig(0); +# $session{netams}->runCmd("exit"); $session{netams}->runCmd("save"); } return Nawt::Theme::getRedirect("?op=editPlan&id=$pid"); @@ -347,9 +357,11 @@ $sid = int($session{form}{sid}); %conf = $session{netams}->getService('billing'); if (canEdit('plan') and defined $conf{plan}{$pid}) { + $session{netams}->enableConfig(1); $session{netams}->runCmd("service billing"); $session{netams}->runCmd("plan $pid no subplan $sid"); - $session{netams}->runCmd("exit"); + $session{netams}->enableConfig(0); +# $session{netams}->runCmd("exit"); $session{netams}->runCmd("save"); } return Nawt::Theme::getRedirect("?op=editPlan&id=$pid"); diff -Naur nawt.orig/lib/Nawt/Operation/Policy.pm nawt/lib/Nawt/Operation/Policy.pm --- nawt.orig/lib/Nawt/Operation/Policy.pm 2006-03-31 14:05:29 +0400 +++ nawt/lib/Nawt/Operation/Policy.pm 2007-07-21 02:33:58 +0400 @@ -76,7 +76,7 @@ <tr><td class="bold">Addr</td><td><input type="text" NAME="addr" value="$pol{addr}"></td></tr> <tr><td class="bold">Interface (netflow)</td><td><input type="text" NAME="ifindex" value="$pol{ifindex}"></td></tr> <tr><td class="bold">Policy-or</td><td><input type="text" NAME="policy-or" value="$pol{'policy-or'}"></td></tr> - <tr><td class="bold">Plicy-and</td><td><input type="text" NAME="policy-and" value="$pol{'policy-and'}"></td></tr> + <tr><td class="bold">Policy-and</td><td><input type="text" NAME="policy-and" value="$pol{'policy-and'}"></td></tr> <tr><td class="bold">Time</td><td><input type="text" NAME="time" value="$pol{time}"></td></tr> <tr><td class="bold">Days</td><td><input type="text" NAME="day" value="$pol{day}"></td></tr> <tr><td class="bold">BW IN</td><td><input type="text" NAME="bw_in" value="$pol{bw_in}"></td></tr> @@ -170,9 +170,11 @@ } if (canEdit('policy') and $session{form}{confirmed}) { + $session{netams}->enableConfig(1); $session{netams}->runCmd("service processor"); $session{netams}->runCmd("no policy oid $oid"); - $session{netams}->runCmd("exit"); + $session{netams}->enableConfig(1); + $session{netams}->runCmd("save"); return Nawt::Theme::getRedirect("$session{env}{scripturl}?op=showPolicyList"); } else { diff -Naur nawt.orig/lib/Nawt/Operation/Service.pm nawt/lib/Nawt/Operation/Service.pm --- nawt.orig/lib/Nawt/Operation/Service.pm 2006-02-15 23:20:19 +0300 +++ nawt/lib/Nawt/Operation/Service.pm 2007-07-21 02:32:11 +0400 @@ -222,9 +222,11 @@ my $oid; $oid = $session{form}{oid}; if ($oid =~ m/\w{6}/ and canEdit('service')) { + $session{netams}->enableConfig(1); $session{netams}->runCmd("service scheduler"); $session{netams}->runCmd("no oid $oid"); - $session{netams}->runCmd("exit"); + $session{netams}->enableConfig(0); +# $session{netams}->runCmd("exit"); $session{netams}->runCmd("save"); } return Nawt::Theme::getRedirect("$session{env}{scripturl}?op=editService&type=scheduler"); @@ -239,13 +241,15 @@ # } $oid = $session{form}{oid}; if (canEdit('service') and $oid ne "" && $session{form}{time} ne "" && $session{form}{action} ne "") { + $session{netams}->enableConfig(1); $session{netams}->runCmd("service scheduler"); if ($oid ne "_new") { $session{netams}->runCmd("oid $oid time $session{form}{time} action \"$session{form}{action}\""); } else { $session{netams}->runCmd("time $session{form}{time} action \"$session{form}{action}\""); } - $session{netams}->runCmd("exit"); + $session{netams}->enableConfig(0); +# $session{netams}->runCmd("exit"); $session{netams}->runCmd("save"); } return Nawt::Theme::getRedirect("$session{env}{scripturl}?op=editService&type=scheduler"); @@ -429,7 +433,7 @@ } # LIBPCAP } elsif ($conf{$srvid}{type} eq "libpcap") { - $opts = qq~<tr><td class="bold">Ifname</td><td><input type="text" name="ifname" value="$conf{$_}{ifname}"></td></tr>~; + $opts = qq~<tr><td class="bold">Ifname</td><td><input type="text" name="ifname" value="$conf{$_}{source}"></td></tr>~; # NETGRAPH } elsif ($conf{$srvid}{type} eq "netgraph") { $opts = qq~<tr><td class="bold">Nodename</td><td><input type="text" name="nodename" value="$conf{$_}{nodename}"></td></tr>~; @@ -748,6 +752,7 @@ my ($type, $id); $type = $session{form}{type}; $id = $session{form}{id}; + $session{netams}->enableConfig(1); if (canEdit('service')) { if ($type eq "storage") { $session{netams}->runCmd("no service storage $id"); @@ -767,6 +772,7 @@ $session{netams}->runCmd("no service monitor $id"); } } + $session{netams}->enableConfig(0); return Nawt::Theme::getRedirect("$session{env}{scripturl}?op=editService&type=$type"); } @@ -777,6 +783,7 @@ my ($type, %html); $type = $session{form}{type}; return Nawt::Theme::getRedirect("$session{env}{scripturl}?op=editService&type=$session{form}{type}") if not canEdit('service'); + $session{netams}->enableConfig(1); # MAIN if ($type eq "main") { my $cmd; @@ -789,7 +796,7 @@ $session{netams}->runCmd("service server"); $session{netams}->runCmd("login $session{form}{login}"); $session{netams}->runCmd("max-conn $session{form}{'max-conn'}"); - $session{netams}->runCmd("exit"); +# $session{netams}->runCmd("exit"); # PROCESSOR } elsif ($type eq "processor") { my %proc = $session{netams}->getService("processor"); @@ -828,7 +835,7 @@ $_ =~ s/[^\d\. ]//; $session{netams}->runCmd("auto-assign $_"); } - $session{netams}->runCmd("exit"); +# $session{netams}->runCmd("exit"); # STORAGE } elsif ($type eq "storage") { my (%op, $id, %st); @@ -869,7 +876,7 @@ if (defined $op{socket} && $op{socket} ne "" && $op{socket} ne $st{socket}) { $session{netams}->runCmd("socket $op{socket}"); } - $session{netams}->runCmd("exit"); +# $session{netams}->runCmd("exit"); # creating new } else { %st = $session{netams}->getService("storage",1); @@ -878,7 +885,7 @@ } $session{netams}->runCmd("service storage $id"); $session{netams}->runCmd("type $op{stype}"); - $session{netams}->runCmd("exit"); +# $session{netams}->runCmd("exit"); } # DATA-SOURCE @@ -907,12 +914,13 @@ } # libpcap } elsif ($ds{type} eq "libpcap") { + $session{netams}->runCmd("source $op{ifname}"); # NETGRAPH } elsif ($ds{type} eq "netgraph") { } - $session{netams}->runCmd("exit"); +# $session{netams}->runCmd("exit"); # creating new } else { %ds = $session{netams}->getService("data-source",1); @@ -921,7 +929,7 @@ } $session{netams}->runCmd("service data-source $id"); $session{netams}->runCmd("type $op{stype}"); - $session{netams}->runCmd("exit"); +# $session{netams}->runCmd("exit"); } # ALERTER } elsif ($type eq "alerter") { @@ -931,7 +939,7 @@ } else { $session{netams}->runCmd("no smtp-server"); } - $session{netams}->runCmd("exit"); +# $session{netams}->runCmd("exit"); # HTML } elsif ($type eq "html") { $session{netams}->runCmd("service html"); @@ -956,7 +964,7 @@ if (defined $session{form}{'account-pages'}) { $session{netams}->runCmd("account-pages $session{form}{'account-pages'}"); } - $session{netams}->runCmd("exit"); +# $session{netams}->runCmd("exit"); # MONITOR } elsif ($type eq "monitor") { my (%op, $id, %mon); @@ -972,7 +980,7 @@ } else { $session{netams}->runCmd("monitor to file $session{form}{file}"); } - $session{netams}->runCmd("exit"); +# $session{netams}->runCmd("exit"); # CREATE NEW } else { %mon = $session{netams}->getService('monitor',1); @@ -980,7 +988,7 @@ last if !defined $mon{"monitor $id"}{id}; } $session{netams}->runCmd("service monitor $id"); - $session{netams}->runCmd("exit"); +# $session{netams}->runCmd("exit"); } # QUOTA } elsif ($type eq "quota") { @@ -989,7 +997,7 @@ $session{netams}->runCmd("policy $op{policy}"); $session{netams}->runCmd("soft-treshold ".int($op{'soft-treshold'})); #$session{netams}->runCmd("delay ".int($op{'delay'})); - $session{netams}->runCmd("exit"); +# $session{netams}->runCmd("exit"); # LOGIN } elsif ($type eq "login") { my (%op, $id, %st); @@ -1023,7 +1031,7 @@ if ($op{'relogin'} ne "") { $session{netams}->runCmd("relogin $op{'relogin'}"); } - $session{netams}->runCmd("exit"); +# $session{netams}->runCmd("exit"); # BILLING } elsif ($type eq "billing") { my (%op, %st, $id); @@ -1032,7 +1040,7 @@ $session{netams}->runCmd("service billing"); $session{netams}->runCmd("delay ".int($op{delay})); $session{netams}->runCmd("default-credit-limit ".int($op{'default-credit-limit'})); - $session{netams}->runCmd("exit"); +# $session{netams}->runCmd("exit"); # ACL } elsif ($type eq "acl") { my (%op, %st, $id); @@ -1047,7 +1055,7 @@ $session{netams}->runCmd("acl-number $op{'acl-number'}"); $session{netams}->runCmd("delay $op{delay}"); $session{netams}->runCmd("set-uptime $op{'set-uptime'}"); - $session{netams}->runCmd("exit"); +# $session{netams}->runCmd("exit"); } else { %st = $session{netams}->getService("acl-server",1); foreach (keys %st) { @@ -1055,10 +1063,12 @@ } $id++; $session{netams}->runCmd("service acl-server $id"); - $session{netams}->runCmd("exit"); +# $session{netams}->runCmd("exit"); } } + $session{netams}->enableConfig(0); + $session{netams}->runCmd("save"); return Nawt::Theme::getRedirect("$session{env}{scripturl}?op=editService&type=$session{form}{type}"); } diff -Naur nawt.orig/lib/Nawt/Operation/Unit.pm nawt/lib/Nawt/Operation/Unit.pm --- nawt.orig/lib/Nawt/Operation/Unit.pm 2006-04-07 02:37:03 +0400 +++ nawt/lib/Nawt/Operation/Unit.pm 2007-07-21 02:30:24 +0400 @@ -209,9 +209,11 @@ } if (canEdit('unit') and $session{form}{confirmed}) { + $session{netams}->enableConfig(1); $session{netams}->runCmd("service processor"); $session{netams}->runCmd("no unit $unit{$_}{type} oid $_") foreach split ",",$oid; - $session{netams}->runCmd("exit"); + $session{netams}->enableConfig(0); +# $session{netams}->runCmd("exit"); $session{netams}->runCmd("save"); return Nawt::Theme::getRedirect("$session{env}{scripturl}?op=showUnitList"); } else { @@ -278,9 +280,11 @@ } if ($cmd !~ m/^$/) { + $session{netams}->enableConfig(1); $session{netams}->runCmd("service processor"); $session{netams}->runCmd($cmd); - $session{netams}->runCmd("exit"); + $session{netams}->enableConfig(0); +# $session{netams}->runCmd("exit"); $session{netams}->runCmd("save"); } return Nawt::Theme::getRedirect("$session{env}{scripturl}?op=editUnitBW&oid=$oid"); @@ -422,9 +426,11 @@ %unit = $session{netams}->getUnit($oid); if ($unit{$mode.'-policy'} =~ m/([!%]{0,2})$pid/) { %pol = $session{netams}->getPolicy($pid); + $session{netams}->enableConfig(1); $session{netams}->runCmd("service processor"); $session{netams}->runCmd("unit $unit{type} oid $oid no $mode-policy $1$pol{name}"); - $session{netams}->runCmd("exit"); + $session{netams}->enableConfig(0); + $session{netams}->runCmd("save"); } return Nawt::Theme::getRedirect("?op=editUnitPolicy&oid=$oid"); } @@ -438,9 +444,11 @@ %unit = $session{netams}->getUnit($oid); %pol = $session{netams}->getPolicy($pid); $mode = $session{form}{mode}; + $session{netams}->enableConfig(1); $session{netams}->runCmd("service processor"); $session{netams}->runCmd("unit $unit{type} oid $oid $mode-policy $pol{name}"); - $session{netams}->runCmd("exit"); + $session{netams}->enableConfig(0); + $session{netams}->runCmd("save"); return Nawt::Theme::getRedirect("?op=editUnitPolicy&oid=$oid"); } @@ -454,6 +462,7 @@ %unit = $session{netams}->getUnit($oid); %pol = $session{netams}->getPolicy(); + $session{netams}->enableConfig(1); $session{netams}->runCmd("service processor"); foreach (split " ",$unit{$mode."-policy"}) { my $flag; @@ -470,7 +479,8 @@ } #return $newlist; $session{netams}->runCmd("unit $unit{type} oid $oid $mode-policy $newlist"); - $session{netams}->runCmd("exit"); + $session{netams}->enableConfig(0); + $session{netams}->runCmd("save"); return Nawt::Theme::getRedirect("?op=editUnitPolicy&oid=$oid"); } @@ -485,6 +495,7 @@ %pol = $session{netams}->getPolicy(); $mode = $session{form}{mode}; + $session{netams}->enableConfig(1); $session{netams}->runCmd("service processor"); foreach (split " ",$unit{"$mode-policy"}) { my $flag; @@ -500,7 +511,8 @@ $session{netams}->runCmd("unit $unit{type} oid $oid no $mode-policy $1$pol{$2}{name}"); } $session{netams}->runCmd("unit $unit{type} oid $oid $mode-policy $newlist"); - $session{netams}->runCmd("exit"); + $session{netams}->enableConfig(0); + $session{netams}->runCmd("save"); return Nawt::Theme::getRedirect("?op=editUnitPolicy&oid=$oid"); } @@ -512,11 +524,13 @@ $oid = $session{form}{oid}; $pol = $session{form}{pol}; %unit = $session{netams}->getUnit($oid); + $session{netams}->enableConfig(1); $session{netams}->runCmd("service processor"); if ($pol =~ m/^(allow|deny)(\-\w+)?$/) { @out = $session{netams}->runCmd("unit $unit{type} oid $oid sys-$pol"); } - $session{netams}->runCmd("exit"); + $session{netams}->enableConfig(0); + $session{netams}->runCmd("save"); return Nawt::Theme::getRedirect("?op=editUnitPolicy&oid=$oid"); } @@ -533,6 +547,7 @@ $h{fw} =~ s/,/ /g; $h{ac} =~ s/,/ /g; + $session{netams}->enableConfig(1); $session{netams}->runCmd("service processor"); if ($unit{'acct-policy'} ne $h{ac}) { $unit{'acct-policy'} =~ s/(\w{6})/$pol{$1}{name}/g; @@ -544,7 +559,8 @@ $session{netams}->runCmd("unit $unit{type} name $unit{name} no fw-policy $_") foreach split(" ",$unit{'fw-policy'}); $session{netams}->runCmd("unit $unit{type} name $unit{name} fw-policy $h{fw}"); } - $session{netams}->runCmd("exit"); + $session{netams}->enableConfig(0); +# $session{netams}->runCmd("exit"); $session{netams}->runCmd("save"); return Nawt::Theme::getRedirect("$session{env}{scripturl}?op=editUnitPolicy&oid=$oid"); } @@ -866,6 +882,7 @@ $cmd .= "policy $pols{$pid}{name} " if defined $pols{$pid}{name}; $cmd .= "soft-treshold $op{treshold} "; + $session{netams}->enableConfig(1); $session{netams}->runCmd("service quota"); # hour $session{netams}->runCmd("set oid $oid $cmd hour $op{h_in} in"); @@ -884,7 +901,8 @@ $session{netams}->runCmd("set oid $oid $cmd month $op{m_out} out"); $session{netams}->runCmd("set oid $oid $cmd month $op{m_sum} sum"); - $session{netams}->runCmd("exit"); + $session{netams}->enableConfig(0); + $session{netams}->runCmd("save"); return Nawt::Theme::getRedirect("$session{env}{scripturl}?op=showUnitQuota&oid=$oid"); } @@ -897,13 +915,15 @@ %srv = $session{netams}->getService("monitor",1); if (canEdit('unit') and defined $srv{$session{form}{mon}}) { + $session{netams}->enableConfig(1); $session{netams}->runCmd("service $session{form}{mon}"); if ($session{form}{enabled}) { $session{netams}->runCmd("monitor unit $oid"); } else { $session{netams}->runCmd("no monitor unit $oid"); } - $session{netams}->runCmd("exit"); + $session{netams}->enableConfig(0); +# $session{netams}->runCmd("exit"); $session{netams}->runCmd("save"); } return Nawt::Theme::getRedirect("$session{env}{scripturl}?op=editUnitMonitor&oid=$oid"); diff -Naur nawt.orig/lib/Nawt/Operation/User.pm nawt/lib/Nawt/Operation/User.pm --- nawt.orig/lib/Nawt/Operation/User.pm 2005-12-19 02:41:16 +0300 +++ nawt/lib/Nawt/Operation/User.pm 2007-07-21 02:30:24 +0400 @@ -176,7 +176,10 @@ $oid = $session{form}{oid}; return Nawt::Theme::getRedirect("$session{env}{scripturl}?op=showUserList") if not canEdit('user'); if ($session{form}{confirmed}) { + $session{netams}->enableConfig(1); $session{netams}->runCmd("no user oid $oid") if $oid =~ m/^\w{6}$/; + $session{netams}->enableConfig(0); + $session{netams}->runCmd("save") if $oid =~ m/^\w{6}$/; return Nawt::Theme::getRedirect("$session{env}{scripturl}?op=showUserList"); } else { $session{page}{title} = "Delete User"; diff -Naur nawt.orig/lib/Nawt/Operation/Utility.pm nawt/lib/Nawt/Operation/Utility.pm --- nawt.orig/lib/Nawt/Operation/Utility.pm 2006-01-22 19:06:13 +0300 +++ nawt/lib/Nawt/Operation/Utility.pm 2007-07-21 02:30:24 +0400 @@ -130,10 +130,12 @@ #-------------------------------------------------------------------- sub setNetamsPerflog { $_[0] = "/var/log/netams-perf.log" if !defined $_[0]; - $session{netams}->runCmd("show perf $_[0] header"); + $session{netams}->runCmd("show perfomance $_[0] header"); + $session{netams}->enableConfig(1); $session{netams}->runCmd("service scheduler"); $session{netams}->runCmd("time 10min action \"show perf $_[0]\""); - $session{netams}->runCmd("exit"); + $session{netams}->enableConfig(0); +# $session{netams}->runCmd("exit"); $session{netams}->runCmd("save"); } diff -Naur nawt.orig/lib/Nawt/Session.pm nawt/lib/Nawt/Session.pm --- nawt.orig/lib/Nawt/Session.pm 2006-04-07 00:02:01 +0400 +++ nawt/lib/Nawt/Session.pm 2007-07-21 02:30:24 +0400 @@ -36,7 +36,7 @@ } ###---------------------------- ### config file variables - $session{config}{nawtRoot} = $_[0] || "/usr/local/nawt"; + $session{config}{nawtRoot} = $_[0] || "@APACHE2@"; $session{config}{nawtRoot} =~ s/\/$//g; $session{config}{configFile} = $_[1] || "nawt.conf"; $config = Parse::PlainConfig->new('DELIM' => '=', 'FILE' => $session{config}{nawtRoot}.'/etc/'.$session{config}{configFile}, 'PURGE' => 1); diff -Naur nawt.orig/lib/Netams.pm nawt/lib/Netams.pm --- nawt.orig/lib/Netams.pm 2006-04-05 15:16:43 +0400 +++ nawt/lib/Netams.pm 2007-07-21 02:30:24 +0400 @@ -34,9 +34,11 @@ Host => $options->{host}, Timeout => 5, Telnetmode => 0, - Prompt => '/.*(>|#) *$/', + Prompt => '/.*(>|#|:) *$/', #Dump_Log => '/tmp/dumplog.txt' ); + $self->{enabled} = 0; #enabled edit or not + $self->{terminal} = 0; #is in configuration mode or not return $self; } @@ -46,20 +48,20 @@ my ($self, @lines, $out); $self = shift; $self->{nth}->open(); - $self->{nth}->getline; +# $self->{nth}->getline; $out = $self->{nth}->getline; - return 400 unless $out =~ /NeTAMS version (\d.\d.\d) \(build ([\d\.]+)\)/; # e.g. this is not netams + return 400 unless $out =~ /NeTAMS (\d.\d.\d) \(([\d\.]+)\)/; # e.g. this is not netams $self->{options}{version} = "$1 ($2)"; # Store netams version return 401 unless $self->{options}{user} || $self->{options}{pass}; - @lines = $self->{nth}->waitfor('/login >$/'); # Witing for login promt + @lines = $self->{nth}->waitfor('/Username: $/'); # Witing for login promt $self->{nth}->print($self->{options}{user}); # Send login - @lines = $self->{nth}->waitfor('/(login|password) >$/'); # Wait for answer - return 401 unless $lines[1] =~ /password >$/; # e.g. bad login + @lines = $self->{nth}->waitfor('/(Username|Password): $/'); # Wait for answer + return 401 unless $lines[1] =~ /Password: $/; # e.g. bad login $self->{nth}->print($self->{options}{pass}); # Send password - @lines = $self->{nth}->waitfor('/(login|Welcome).*/i'); # Wait for answer - return 402 unless $lines[1] =~ /Welcome/i; # e.g. bad login + @lines = $self->{nth}->waitfor('/(Username:|>)/'); # Wait for answer + return 402 unless $lines[1] =~ /^>$/; # e.g. bad login $self->{options}{welcome} = $lines[1]; - $self->{nth}->waitfor('/>$/'); # Wait for promt +# $self->{nth}->waitfor('/>$/'); # Wait for promt return 200; # e.g. connected } @@ -335,9 +337,10 @@ $self = shift; if ($self->hasUnit($_[0])) { %unit = $self->getUnit($_[0]); + $self->enableConfig(1); $self->runCmd("service processor"); $self->runCmd("no unit $unit{type} oid $_[0]"); - $self->runCmd("exit"); + $self->enableConfig(0); $self->runCmd("save"); } @@ -350,6 +353,7 @@ my ($self, %ptrs, %user, $cmd, @out, $oid); $self = shift; %ptrs = (@_); + $self->enableConfig(1); if ($ptrs{oid} ne "" and $self->hasUser($ptrs{oid})) { %user = $self->getUser($ptrs{oid}); $oid = $ptrs{oid}; @@ -383,6 +387,8 @@ if (defined $ptrs{permit} && $ptrs{permit} ne "" && $ptrs{permit} ne $user{permit}) { $self->runCmd("user oid $ptrs{oid} permit $ptrs{permit}"); } + $self->enableConfig(0); + $self->runCmd("save"); return $oid; } @@ -394,6 +400,7 @@ %ptrs = (@_); %item = $self->getAccount($ptrs{oid}); if ($self->hasService('billing')) { + $self->enableConfig(1); $self->runCmd("service billing"); # Check if OID exist if (not $self->hasAccount($ptrs{oid})) { @@ -433,7 +440,7 @@ if ($ptrs{plan} ne "" && $ptrs{plan} ne $item{plan}) { $self->runCmd("account $ptrs{oid} plan $ptrs{plan}"); } - $self->runCmd("exit"); + $self->enableConfig(0); $self->runCmd("save"); } return $ptrs{oid}; @@ -446,7 +453,8 @@ my ($self, %ptrs, %unit, $cmd, @out); $self = shift; %ptrs = (@_); - + + $self->enableConfig(1); $self->runCmd("service processor"); # Check if OID exist if ($ptrs{oid} ne "" && $self->hasUnit($ptrs{oid})) { @@ -522,23 +530,27 @@ } elsif (defined $ptrs{mac} && $ptrs{mac} eq "" && $unit{type} =~ m/host|user/) { $self->runCmd("unit $unit{type} oid $ptrs{oid} no mac"); } - + + $self->enableConfig(0); $self->runCmd("save"); return $ptrs{oid}; } -# setUnitPolicy ( type=>[acct|fw], uid=>oid, pid=>pid, pnum=>pnum, params ...) +# setUnitPolicy ( type=>[acct|fw], oid=>oid, pid=>pid, pnum=>pnum, params ...) #------------------------------------------------------------------- sub setUnitPolicy { my ($self, %ptrs); $self = shift; %ptrs = (@_); + $self->enableConfig(1); $self->runCmd("service processor"); # TODO: How make it? - $self->runCmd("save"); + $self->enableConfig(0); + $self->runCmd("save"); + return $ptrs{oid}; } # getPolicy ( [ oid ] ) @@ -561,9 +573,10 @@ $self = shift; %ptrs = (@_); if ($self->hasService("billing") && $self->hasAccount($ptrs{oid})) { + $self->enableConfig(1); $self->runCmd("service billing"); $self->runCmd("account $ptrs{oid} balance $ptrs{mode} $ptrs{sum}"); - $self->runCmd("exit"); + $self->enableConfg(0); $self->runCmd("save"); } return $ptrs{oid}; @@ -576,6 +589,7 @@ $self = shift; %ptrs = (@_); + $self->enableConfig(1); $self->runCmd("service processor"); # Check if OID exist if ($ptrs{oid} ne "" && $self->hasPolicy($ptrs{oid})) { @@ -663,6 +677,7 @@ } elsif (defined $ptrs{day} && $ptrs{day} eq "" && $ptrs{day} ne $policy{day}) { $self->runCmd("$cmd bw 0 in 0 out"); } + $self->enableConfig(0); $self->runCmd("save"); return $ptrs{oid}; } @@ -678,6 +693,55 @@ } #------------------------------------------------------------------- +sub enableEdit { + my ($self, $state, $noloop, @lines); + $self = shift; + $state = shift; + $noloop = shift; + $state = 0 unless defined $state; + $noloop = 0 unless defined $noloop; + $self->enableConfig(0,1) unless $noloop; + if ($self->{enabled} == $state) { + return 0; #Already in needed form + } + if ($state == 1) { + @lines = $self->{nth}->cmd("enable"); + return -1 if scalar (@lines) != 2; #Not OK + return -1 unless $lines[1] =~ /^$/; + $self->{enabled} = 1; + } else { + $self->enableConfig(0,1); + $self->{nth}->cmd("disable"); + $self->{enabled} = 0; + } + return 0; #OK +} + +#------------------------------------------------------------------- +sub enableConfig { + my ($self, $state, $noloop, @lines); + $self = shift; + $state = shift; + $noloop = shift; + $state = 0 unless defined $state; + $noloop = 0 unless defined $noloop; + if ($self->{enabled} == $state) { + return 0; + } + if ($state == 1) { + return -1 if enableEdit(1,1) == -1; + @lines = $self->{nth}->cmd("configure terminal"); + return -1 if scalar (@lines) != 2; #Not OK + return -1 unless $lines[1] =~ /^$/; + $self->{terminal} = 1; + } else { + $self->{nth}->cmd("end"); + $self->{terminal} = 0; + } + return 0; #OK +} + +#------------------------------------------------------------------- sub getUnitTypes { return qw(host group user net cluster); } @@ -713,9 +777,11 @@ my ($self, %ptrs, @out); $self = shift; %ptrs = (@_); + $self->enableConfig(1); $self->runCmd("service login"); @out = $self->runCmd("login oid $ptrs{oid} password $ptrs{pass} ip $ptrs{ip}"); - $self->runCmd("exit"); + $self->enableConfig(0); + $self->runCmd("save"); return 1 if $out[0] =~ m/parse: OK:/; return 0; } @@ -726,9 +792,11 @@ my ($self, %ptrs, @out); $self = shift; %ptrs = (@_); + $self->enableConfig(1); $self->runCmd("service login"); @out = $self->runCmd("logout oid $ptrs{oid} password $ptrs{pass} ip $ptrs{ip}"); - $self->runCmd("exit"); + $self->enableConfig(0); + $self->runCmd("save"); return 1 if $out[0] =~ m/parse: OK:/; return 0; } @@ -764,9 +832,11 @@ my ($self, %ptrs, @out); $self = shift; %ptrs = (@_); + $self->enableConfig(1); $self->runCmd("service processor"); - $self->runCmd("exit"); + $self->enableConfig(0); +# $self->runCmd("exit"); } @@ -1205,6 +1275,7 @@ sub close { my ($self); $self = shift; + $self->enableConfig(0); $self->runCmd("save"); # $self->runCmd("exit"); $self->{nth}->close(); diff -Naur nawt.orig/sbin/access-script.pl nawt/sbin/access-script.pl --- nawt.orig/sbin/access-script.pl 2005-08-30 22:00:17 +0400 +++ nawt/sbin/access-script.pl 2007-07-21 02:30:24 +0400 @@ -9,10 +9,10 @@ $configFile = "nawt.conf"; # Path to root script dir (no trailing slash): - $nawtRoot = "/usr/local/nawt"; + $nawtRoot = "@APACHE2@"; # File where blocked IP strored: - $outfile = "/usr/local/etc/oops/acl/blocked.acl"; + $outfile = "@APACHE2@/etc/oops/acl/blocked.acl"; # Command, this command will be run after all # In my case - relod proxy config diff -Naur nawt.orig/sbin/clean-storages.pl nawt/sbin/clean-storages.pl --- nawt.orig/sbin/clean-storages.pl 2006-03-31 14:46:23 +0400 +++ nawt/sbin/clean-storages.pl 2007-07-21 02:30:24 +0400 @@ -6,9 +6,9 @@ our $netams; BEGIN { - $nawtRoot = $ARGV[0] || $ENV{PWD}; - $nawtRoot =~ s/\/sbin//g; - #$nawtRoot = "/usr/local/nawt"; # uncomment this if you have problems with cron + #$nawtRoot = $ARGV[0] || $ENV{PWD}; + #$nawtRoot =~ s/\/sbin//g; + $nawtRoot = "@APACHE2@"; # uncomment this if you have problems with cron unshift (@INC, $nawtRoot."/lib"); } diff -Naur nawt.orig/sbin/ping_units.pl nawt/sbin/ping_units.pl --- nawt.orig/sbin/ping_units.pl 2006-03-31 14:46:02 +0400 +++ nawt/sbin/ping_units.pl 2007-07-21 02:30:24 +0400 @@ -7,9 +7,9 @@ our $dbh; BEGIN { - $nawtRoot = $ARGV[0] || $ENV{PWD}; - $nawtRoot =~ s/\/sbin//g; - #$nawtRoot = "/usr/local/nawt"; # uncomment this if you have problems with cron + #$nawtRoot = $ARGV[0] || $ENV{PWD}; + #$nawtRoot =~ s/\/sbin//g; + $nawtRoot = "@APACHE2@"; # uncomment this if you have problems with cron unshift (@INC, $nawtRoot."/lib"); } diff -Naur nawt.orig/sbin/preload.perl nawt/sbin/preload.perl --- nawt.orig/sbin/preload.perl 2005-08-30 23:01:45 +0400 +++ nawt/sbin/preload.perl 2007-07-21 02:30:24 +0400 @@ -2,13 +2,13 @@ # $Id: preload.perl,v 1.3 2005/02/02 18:45:02 ramirez Exp $ # You need this file, only if you have mod_perl installed with your Apache. # Add PerlRequire directive to your httpd.conf: -# PerlRequire /usr/local/nawt/sbin/preload.perl +# PerlRequire @APACHE2@/sbin/preload.perl # This says apache to load and precompile all required modules at start (once) # With mod_perl Nawt will work MUCH faster, but this feature is experemental. use strict; -use lib "/usr/local/nawt/lib"; # Edit to match your NaWT installation directory. +use lib "@APACHE2@/lib"; # Edit to match your NaWT installation directory. print "Starting NaWT ".$Nawt::VERSION."\t\t"; diff -Naur nawt.orig/sbin/testConfig.pl nawt/sbin/testConfig.pl --- nawt.orig/sbin/testConfig.pl 2006-01-22 18:32:05 +0300 +++ nawt/sbin/testConfig.pl 2007-07-21 02:30:24 +0400 @@ -6,8 +6,9 @@ our $AMS; BEGIN { - $nawtRoot = $ARGV[0] || $ENV{PWD}; - $nawtRoot =~ s/\/sbin//g; + #$nawtRoot = $ARGV[0] || $ENV{PWD}; + #$nawtRoot =~ s/\/sbin//g; + $nawtRoot = "@APACHE2@"; unshift (@INC, $nawtRoot."/lib"); } diff -Naur nawt.orig/sbin/update_ipfw.pl nawt/sbin/update_ipfw.pl --- nawt.orig/sbin/update_ipfw.pl 2006-03-31 14:46:49 +0400 +++ nawt/sbin/update_ipfw.pl 2007-07-21 02:30:25 +0400 @@ -14,7 +14,7 @@ our $action1 = "allow"; # useful to add block all from your networks. -our $networksFile = "/home/ramirez/our-nets.txt"; +our $networksFile = "@APACHE2@/our-nets.txt"; our $ruleNum2 = 1126; #rule num for ips from file our $action2 = "deny"; # action [allow|deny] @@ -26,9 +26,9 @@ our $dbh; BEGIN { - $nawtRoot = $ARGV[0] || $ENV{PWD}; - $nawtRoot =~ s/\/sbin//g; - #$nawtRoot = "/usr/local/nawt"; # uncomment this if you have problems with cron + #$nawtRoot = $ARGV[0] || $ENV{PWD}; + #$nawtRoot =~ s/\/sbin//g; + $nawtRoot = "@APACHE2@"; # uncomment this if you have problems with cron unshift (@INC, $nawtRoot."/lib"); } diff -Naur nawt.orig/www/admintool.pl nawt/www/admintool.pl --- nawt.orig/www/admintool.pl 2005-10-26 21:58:10 +0400 +++ nawt/www/admintool.pl 2007-07-21 02:30:25 +0400 @@ -8,7 +8,7 @@ $configFile = "nawt.conf"; # Path to root script dir (no trailing slash): - $nawtRoot = "/home/ramirez/nawt"; + $nawtRoot = "@APACHE2@"; # Mode (1-Admintool, 0-Usertool): $isAdmin = 1; diff -Naur nawt.orig/www/usertool.pl nawt/www/usertool.pl --- nawt.orig/www/usertool.pl 2005-10-26 21:58:24 +0400 +++ nawt/www/usertool.pl 2007-07-21 02:30:25 +0400 @@ -8,7 +8,7 @@ $configFile = "nawt.conf"; # Path to root script dir (no trailing slash): - $nawtRoot = "/home/ramirez/nawt"; + $nawtRoot = "@APACHE2@"; # Mode (1-Admintool, 0-Usertool): $isAdmin = 0;