--- netams-3.4.0rc2.orig/cgi-bin/admin/netams.cgi 2007-05-13 17:30:50 +0400 +++ netams-3.4.0rc2.orig/cgi-bin/admin/netams.cgi 2007-11-14 10:54:25 +0300 @@ -55,8 +55,8 @@ $result=netams_read(); @result=split("\n", $result); -$netams_version=substr($result[0], 14, 32); -$netams_version=substr($netams_version, 0, index($netams_version, " root")); +$netams_version=$result[0]; +$netams_version=~s/^NeTAMS\s(.+)\s\S+\@.*$/$1/; $run_time=substr($result[1], 10); print ""; ################################################ --- netams-3.4.0rc2.orig/cgi-bin/admin/policy.cgi 2006-03-16 19:04:39 +0300 +++ netams-3.4.0rc2.orig/cgi-bin/admin/policy.cgi 2007-11-14 14:20:48 +0300 @@ -17,13 +17,11 @@ $name=$cgi->param("name_$oid"); $tgt=$cgi->param("tgt_$oid"); if ($name ne "" and $tgt ne "") { - netams_send("service processor"); - $result1=netams_read(); - if ($cgi->param("set") ne "") { netams_send("policy oid $oid name $name target $tgt"); } - elsif ($cgi->param("delete") ne "") { netams_send("no policy name $name"); } - $result=netams_read(); - netams_send("exit"); - $result1=netams_read(); + my @cmds = ("enable","configure terminal","service processor"); + if ($cgi->param("set") ne "") { push(@cmds,"policy oid $oid name $name target $tgt"); } + elsif ($cgi->param("delete") ne "") { push(@cmds,"no policy name $name"); } + push(@cmds,("exit","exit","disable")); + netams_cmds(@cmds); } } @@ -31,12 +29,7 @@ $pol_name=$cgi->param("name_new"); $pol_tgt=$cgi->param("tgt_new"); if ($pol_name ne "" and $pol_tgt ne "") { - netams_send("service processor"); - $result1=netams_read(); - netams_send("policy name $pol_name target $pol_tgt"); - $result=netams_read(); - netams_send("exit"); - $result1=netams_read(); + netams_cmds(("enable","configure terminal","service processor","policy name $pol_name target $pol_tgt","exit","exit","disable")); } } --- netams-3.4.0rc2.orig/cgi-bin/admin/quota.cgi 2004-12-03 00:38:06 +0300 +++ netams-3.4.0rc2.orig/cgi-bin/admin/quota.cgi 2007-11-14 14:19:18 +0300 @@ -7,74 +7,58 @@ require "netams.cgi"; $toppane= "Quotas Management"; - + netams_send("show quota list"); $result=netams_read(); @s_units=split("\n", $result); shift @s_units; + shift @s_units; $p1="Here the list of units with quota management ACTIVE:
"; - @s=split(/ /, $s_units[0]); %pairs=@s; - foreach $s (keys %pairs) { - $p1.="".$s." "; + foreach $s (@s_units) { + @s=split(/\s/, $s); + $pairs{$s[0]}=$s[1]; + $p1.="".$s[0]." "; } $p1 .= "

"; - if (($oid ne "000000") and (%pairs > 0) ) { + if (($oid ne "000000") and (%pairs > 0)) { # first process something if submitted if ($cgi->param("act") ne "") { - netams_send("service quota 0"); - $result=netams_read(); - netams_send("set oid $oid active"); - $result=netams_read(); - netams_send("exit"); $result=netams_read(); + netams_cmds(("enable","configure terminal","service quota","set oid $oid active","exit","exit","disable")); } if ($cgi->param("deact") ne "") { - netams_send("service quota 0"); - $result=netams_read(); - netams_send("set oid $oid inactive"); - $result=netams_read(); - netams_send("exit"); $result=netams_read(); + netams_cmds(("enable","configure terminal","service quota","set oid $oid inactive","exit","exit","disable")); } if ($cgi->param("soft") ne "") { - netams_send("service quota 0"); - $result=netams_read(); $soft_val=$cgi->param("soft_val"); if ($soft_val > -1 and $soft_val <101) { - netams_send("set oid $oid soft-treshold $soft_val"); - $result=netams_read(); + netams_cmds(("enable","configure terminal","service quota","set oid $oid soft-treshold $soft_val","exit","exit","disable")); } - netams_send("exit"); $result=netams_read(); } if ($cgi->param("notify") ne "") { - netams_send("service quota 0"); - $result=netams_read(); + my @cmds = ("enable","configure terminal","service quota"); $s=$cgi->param("notify_soft_owner"); if (defined $s) { $s="{owner}"; } $sn=$cgi->param("notify_soft_name"); - netams_send("set oid $oid notify soft {none}"); $result=netams_read(); - netams_send("set oid $oid notify soft $s $sn"); $result=netams_read(); + push(@cmds,("set oid $oid notify soft {none}", "set oid $oid notify soft $s $sn")); $s=$cgi->param("notify_hard_owner"); if (defined $s) { $s="{owner}"; } $sn=$cgi->param("notify_hard_name"); - netams_send("set oid $oid notify hard {none}"); $result=netams_read(); - netams_send("set oid $oid notify hard $s $sn"); $result=netams_read(); + push(@cmds,("set oid $oid notify hard {none}", "set oid $oid notify hard $s $sn")); $s=$cgi->param("notify_return_owner"); if (defined $s) { $s="{owner}"; } $sn=$cgi->param("notify_return_name"); - netams_send("set oid $oid notify return {none}"); $result=netams_read(); - netams_send("set oid $oid notify return $s $sn"); $result=netams_read(); - - netams_send("exit"); $result=netams_read(); + push(@cmds,("set oid $oid notify return {none}", "set oid $oid notify return $s $sn")); + + push(@cmds,("exit","exit","disable")); + netams_cmds(@cmds); } if ($cgi->param("quotas") ne "") { - netams_send("service quota 0"); - $result=netams_read(); - if (($t=$cgi->param("h_in"))!=0) { $x.="hour $t in "; } if (($t=$cgi->param("h_out"))!=0) { $x.="hour $t out "; } if (($t=$cgi->param("h_sum"))!=0) { $x.="hour $t sum "; } @@ -94,22 +78,18 @@ $x =~ s/-1/0/g; if ($x ne "") { - netams_send("set oid $oid $x"); - $result=netams_read(); + netams_cmds(("enable","configure terminal","service quota","set oid $oid $x","exit","exit","disable")); } - - netams_send("exit"); $result=netams_read(); } #netams_send("service quota 0"); #$result=netams_read(); $cmd="show quota oid ".$oid; netams_send($cmd); - $result=netams_readline(); @s_qu=split("\n", $result); + $result=netams_read(); @s_qu=split("\n", $result); $p2 = "Current unit quota control status follows:
$result
\n"; - $p2 =~ s/{owner}/[owner]/g; +# $p2 =~ s/{owner}/[owner]/g; %pairs2 = reverse %pairs; - - if (-1 == index($s_qu[0], "ACTIVE")) {# -1 eq NOT, other=YES + if (-1 == index($s_qu[1], "ACTIVE")) {# -1 eq NOT, other=YES $p1.="Current state for ".$pairs2{$oid}." [$oid] is INACTIVE.

\n"; } else { @@ -118,22 +98,22 @@ if ($s_qu[1] ne "") { # we have something here - $j=index($s_qu[0], "soft-treshold:"); - $j=substr($s_qu[0], $j+14, 5); $j=$j+0; + $j=index($s_qu[1], "soft-treshold:"); + $j=substr($s_qu[1], $j+14, 5); $j=$j+0; $p3="Current soft treshold is $j%. It means that after reaching of $j percents of some quota, the notification message could be sent.
You can specify another value here:

"; - $nss_s="checked" if (index($s_qu[1], "soft {owner}")!=-1); - $nhs_s="checked" if (index($s_qu[1], "hard {owner}")!=-1); - $nrs_s="checked" if (index($s_qu[1], "return {owner}")!=-1); + $nss_s="checked" if (index($s_qu[2], "soft owner")!=-1); + $nhs_s="checked" if (index($s_qu[2], "hard owner")!=-1); + $nrs_s="checked" if (index($s_qu[2], "return owner")!=-1); - $j=index($s_qu[1], "soft"); if (defined $nss_s) { $j+=13; } else { $j+=5; } - $k=index($s_qu[1], ",", $j); $nso_s=substr($s_qu[1], $j, $k-$j); + $j=index($s_qu[2], "soft"); if (defined $nss_s) { $j+=11; } else { $j+=3; } + $k=index($s_qu[2], ",", $j); $nso_s=substr($s_qu[2], $j, $k-$j); - $j=index($s_qu[1], "hard"); if (defined $nhs_s) { $j+=13; } else { $j+=5; } - $k=index($s_qu[1], ",", $j); $nho_s=substr($s_qu[1], $j, $k-$j); + $j=index($s_qu[2], "hard"); if (defined $nhs_s) { $j+=11; } else { $j+=3; } + $k=index($s_qu[2], ",", $j); $nho_s=substr($s_qu[2], $j, $k-$j); - $j=index($s_qu[1], "return"); if (defined $nrs_s) { $j+=15; } else { $j+=7; } - $nro_s=substr($s_qu[1], $j); + $j=index($s_qu[2], "return"); if (defined $nrs_s) { $j+=12; } else { $j+=5; } + $nro_s=substr($s_qu[2], $j); $p4="Users and unit owners to be notified on quota actions. Select owner and/or type an existing user name.
\n"; $p4.=""; @@ -142,10 +122,10 @@ $p4.="
Soft reachHard reachReturn
owner
user:
"; $p4.="

\n"; - $q_h_in=q_getval($result, "HOUR in:"); $q_h_out=q_getval($result, "HOUR out:"); $q_h_sum=q_getval($result, "HOUR sum:"); - $q_d_in=q_getval($result, "DAY in:"); $q_d_out=q_getval($result, "DAY out:"); $q_d_sum=q_getval($result, "DAY sum:"); - $q_w_in=q_getval($result, "WEEK in:"); $q_w_out=q_getval($result, "WEEK out:"); $q_w_sum=q_getval($result, "WEEK sum:"); - $q_m_in=q_getval($result, "MONTH in:"); $q_m_out=q_getval($result, "MONTH out:"); $q_m_sum=q_getval($result, "MONTH sum:"); + $q_h_in=q_getval($result, "HOUR","in"); $q_h_out=q_getval($result, "HOUR","out"); $q_h_sum=q_getval($result, "HOUR","sum"); + $q_d_in=q_getval($result, "DAY","in"); $q_d_out=q_getval($result, "DAY","out"); $q_d_sum=q_getval($result, "DAY","sum"); + $q_w_in=q_getval($result, "WEEK","in"); $q_w_out=q_getval($result, "WEEK","out"); $q_w_sum=q_getval($result, "WEEK","sum"); + $q_m_in=q_getval($result, "MONTH","in"); $q_m_out=q_getval($result, "MONTH","out"); $q_m_sum=q_getval($result, "MONTH","sum"); $p5="You can change quota values here. Please specify '-1' if you wish to skip this quota.
\n"; $p5.=""; @@ -173,11 +153,9 @@ sub q_getval(){ $s1=shift; $s2=shift; - $j=index($s1, $s2); - if ($j == -1) { return 0; } - $j2=index($s1, "hardquota ", $j); - $j=$j2+10; - $j2=index($s1, ' ratio', $j); - $r=substr($s1, $j, $j2-$j); - return "'$r'"; + $s3=shift; + my @s=grep(/^\s+$s2\s+$s3:.+hardquota/,split("\n",$s1)); + return 0 if $#s<0; + $s[0] =~ /quota\s(\d+(\.\d+)?[KMG]?)/; + return $1; } --- netams-3.4.0rc2.orig/cgi-bin/admin/unit.cgi 2006-03-16 19:04:39 +0300 +++ netams-3.4.0rc2.orig/cgi-bin/admin/unit.cgi 2007-11-14 14:16:21 +0300 @@ -18,13 +18,8 @@ # $righthead = "Unit OID: $oid"; if ($action eq "list" or $action eq "remove") { # no units choosen if ($action eq "remove") { - netams_send("service processor 0"); - $result=netams_read(); - netams_send("no unit ".$cgi->param("unittype")." oid $oid"); - $result=netams_read(); + netams_cmds(("enable","configure terminal","service processor","no unit ".$cgi->param("unittype")." oid $oid","exit","exit","disable")); $p1="Removing: unit ".$cgi->param("unittype")." oid $oid
\n"; - netams_send("exit"); - $result=netams_read(); if($have_radius eq "yes") { use DBI; @@ -90,20 +85,15 @@ } # oid zero else { if ($action eq "new") { - netams_send("service processor 0"); - $result=netams_read(); - netams_send("unit ".$cgi->param("unittype")." name ".$cgi->param("name")); - $result=netams_read(); - @tmp=split(/\s+/,$result); - $oid=$tmp[3]; + my @result=netams_cmds(("enable","configure terminal","service processor","unit ".$cgi->param("unittype")." name ".$cgi->param("name"),"exit","exit","disable")); + @tmp=split(/\s+/,$result[4]); + $oid=$tmp[2]; if ($oid eq "name") { - $oid=$tmp[2]; - $p2.="Configure: unit $tmp[1] oid $oid name $tmp[5]
"; - } else { - $p2.="Creating: unit ".$cgi->param("unittype")." oid $oid name ".$cgi->param("name")."
\n"; + $p2.="Configure: unit $tmp[0] oid $tmp[1] name $tmp[4]
"; + } + else { + $p2.="Creating: unit ".$cgi->param("unittype")." oid $oid name ".$cgi->param("name")."
\n"; } - netams_send("exit"); - $result=netams_read(); } getUnits(); @@ -175,14 +165,9 @@ } if($cmd ne "") { - netams_send("service processor 0"); - $result=netams_read(); $cmd="unit ".$cgi->param("unittype")." oid $oid $cmd"; - netams_send($cmd); + netams_cmds(("enable","configure terminal","service processor",$cmd,"exit","exit","disable")); $p2.="Applying: $cmd
"; - $result=netams_read(); - netams_send("exit"); - $result=netams_read(); } if($have_radius eq "yes" and $radius_update eq "yes" and $type eq "user") { --- netams-3.4.0rc2.orig/cgi-bin/netams_api.pl 2007-05-13 17:30:47 +0400 +++ netams-3.4.0rc2.orig/cgi-bin/netams_api.pl 2007-11-14 13:51:17 +0300 @@ -43,11 +43,14 @@ sub netams_read { my ($visible) = @_; my $byte = ""; - my $prev_byte = ""; + my $prev_byte2 = ""; + my $prev_byte1 = ""; my $out_string = ""; my $count = 0; - while ( not ( $byte eq " " and ( $prev_byte eq "#" or $prev_byte eq ">" ) ) ) { - $out_string .= $prev_byte = $byte; + while ( not ( $byte eq " " and ( $prev1_byte eq "#" or $prev1_byte eq ">" ) and ($prev2_byte eq "\n" or $prev2_byte eq ")") ) ) { + $prev2_byte = $prev1_byte; + $prev1_byte = $byte; + $out_string .= $byte; $count = sysread(NETAMS_SOCKET, $byte, 1); if (!defined $count) { sleep(1); next } if ($count == 0) { last }
 INOUTSUM