Advertisement
Guest User

Untitled

a guest
Aug 3rd, 2016
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 8.94 KB | None | 0 0
  1. #!/usr/bin/perl
  2.  
  3. use strict;
  4. use DBI();
  5. use config;
  6. require "inc.pl";
  7.  
  8. my $config = config->new();
  9. my $mbyte = $config->mbyte;
  10.  
  11. my ($uname, $action, $sel) = '';
  12. my ($dbh, $sth, $ref, $numrows);
  13. my ($pw, $ps, $nd, $dd, $fn, $or, $ph, $pi, $st, $ad, $cr, $em) = '';
  14. my ($ab, $ta, $td, $te, $tn, $tl, $tu, $tfm, $tft) = '';
  15. my ($abn, $tan, $tdn, $ten, $tnn, $tln, $tun, $ul) = '';
  16. my ($a, $message, $to, $pw1, $sum, $last_abonpl) = '';
  17. my ($auth_name, $ip);
  18. my ($mytime1, $mytime2, $mytime3, $mytime4, $mytime5, $mytime6);
  19. ###### FOR LOG ##########
  20. $mytime1 = (localtime)[5]; # year    
  21. $mytime1 = $mytime1 + 1900;          
  22. $mytime2 = (localtime)[4]; # month  
  23. $mytime2 = $mytime2 + 1;            
  24. $mytime3 = (localtime)[3]; # day    
  25. $mytime4 = (localtime)[2]; # hour    
  26. $mytime5 = (localtime)[1]; # minute  
  27. $mytime6 = (localtime)[0]; # second  
  28. $ip = $ENV{'REMOTE_ADDR'};        
  29. $auth_name = $ENV{'REMOTE_USER'};
  30. #########################
  31.  
  32. my ($user, $ot, $dbh) = &CheckServer;
  33.  
  34. print "Content-type: text/html; charset=koi8-r\n\n";
  35.  
  36. my ($buffer, $name, $value) = '';
  37. my %formdata = ();
  38. my @pairs = {};
  39. my $content_length = $ENV{'CONTENT_LENGTH'};
  40. sysread(STDIN, $buffer, $content_length) if ($content_length > 0);
  41. if (!defined($buffer) || $buffer eq '') {
  42.   &Nice_Die("Неправильные параметры");
  43. }
  44. @pairs = split(/&/, $buffer);
  45. foreach my $pair (@pairs) {
  46.   ($name, $value) = split(/=/, $pair);
  47.   $value =~ tr/+/ /;
  48.   $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  49.   $formdata{$name} = $value;
  50. }
  51. $action = $formdata{'action'};
  52. $uname = $formdata{'uname'}; $uname =~ s/(\'|\"|\\)//g;
  53.  
  54. print <<EndPRINT;
  55. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  56. <HTML>
  57. <HEAD>
  58. <META http-equiv=Content-Type content="text/html; charset=koi8-r">
  59. <META http-equiv=Pragma content="no-cache">
  60. <LINK rel=stylesheet href="main.css" type="text/css">
  61. </HEAD>
  62. <BODY marginwidth=0 marginheight=0 leftmargin=0 topmargin=0>
  63. <CENTER>
  64. <BR>
  65. EndPRINT
  66.  
  67. &Nice_Die("Неверное имя пользователя") if ($uname eq "");
  68.  
  69. $sth = $dbh->prepare("SELECT password,last_abonpl,sum,traffic_ost FROM u_base WHERE user=\"$uname\" LIMIT 1");
  70. $sth->execute();
  71. $numrows = $sth->rows;
  72. if ($numrows == 0) {
  73.   &Nice_Die("Неверное имя пользователя");
  74. } else {
  75.   $ref = $sth->fetchrow_hashref();
  76.   $pw1 = $ref->{'password'};
  77.   $last_abonpl = $ref->{'last_abonpl'};
  78.   $sum = $ref->{'sum'}; $sum = sprintf("%01.2f",$sum);
  79.   $to = $ref->{'traffic_ost'};
  80. }
  81. $sth->finish();
  82. $pw1 = '' if (! defined $pw1);
  83. $to = 0 if (! defined $to);
  84.  
  85. my $e;
  86. my($sec, $min, $hour, $mday, $mon, $year) = localtime;
  87. $year += 1900;
  88. $mon++;
  89. foreach $e ('sec', 'min', 'hour', 'mday', 'mon', 'year') {
  90.   # '7' -> '07'
  91.   eval "\$$e = 0 . \$$e" if (eval "\$$e" < 10);
  92. }
  93. my $changed_date = "$year-$mon-$mday $hour:$min:$sec";
  94.  
  95. if ($action eq "update") {
  96.   $pw = $formdata{'pw'}; $pw =~ s/(\'|\"|\\|\s)//g;
  97.   $ps = $formdata{'ps'}; $ps =~ s/(\'|\"|\\|\s)//g;
  98.   $nd = $formdata{'nd'}; $nd =~ s/(\'|\"|\\)//g;
  99.   $dd = $formdata{'dd'}; $dd =~ s/(\'|\"|\\)//g;
  100.   $dd =~ s/^(\d{2}).+(\d{2}).+(\d{4})/$3\-$2\-$1 08:00:00/;
  101.   $fn = $formdata{'fn'}; $fn =~ s/(\'|\"|\\)//g;
  102.   $or = $formdata{'or'}; $or =~ s/\'/\\\'/g; $or =~ s/\"/\\\"/g;
  103.   $ph = $formdata{'ph'}; $ph =~ s/(\'|\"|\\)//g;
  104.   $pi = $formdata{'pi'}; $pi =~ s/(\'|\"|\\)//g;
  105.   $st = $formdata{'st'}; $st =~ s/(\'|\"|\\)//g;
  106.   $ad = $formdata{'ad'}; $ad =~ s/(\'|\"|\\)//g;
  107.   $cr = $formdata{'cr'}; $cr = sprintf("%01.2f",$cr);
  108.   $em = $formdata{'em'}; $em =~ s/(\'|\"|\\)//g;
  109.   $ab = $formdata{'ab'}; $ab = sprintf("%01.2f",$ab);
  110.   $ta = $formdata{'ta'}; $ta = sprintf("%d",$ta); $ta = 0 if ($ta < 0);
  111.   $td = $formdata{'td'}; $td = sprintf("%01.2f",$td);
  112.   $te = $formdata{'te'}; $te = sprintf("%01.2f",$te); $te = $td if ($te eq '0.00');
  113.   $tn = $formdata{'tn'}; $tn = sprintf("%01.2f",$tn); $tn = $td if ($te eq '0.00');
  114.   $tl = $formdata{'tl'}; $tl = sprintf("%01.2f",$tl);
  115.   $tu = $formdata{'tu'}; $tu = sprintf("%01.2f",$tu);
  116.   $abn = $formdata{'abn'}; $abn = sprintf("%01.2f",$abn);
  117.   $tan = $formdata{'tan'}; $tan = sprintf("%d",$tan); $tan = 0 if ($tan < 0);
  118.   $tdn = $formdata{'tdn'}; $tdn = sprintf("%01.2f",$tdn);
  119.   $ten = $formdata{'ten'}; $ten = sprintf("%01.2f",$ten); $ten = $tdn if ($ten eq '0.00');
  120.   $tnn = $formdata{'tnn'}; $tnn = sprintf("%01.2f",$tnn); $tnn = $tdn if ($tnn eq '0.00');
  121.   $tln = $formdata{'tln'}; $tln = sprintf("%01.2f",$tln);
  122.   $tun = $formdata{'tun'}; $tun = sprintf("%01.2f",$tun);
  123.   $tfm = $formdata{'tfm'}; $tfm = '' if (!defined $tfm); $tfm = ($tfm eq 'on') ? '1' : '0';
  124.   $tft = $formdata{'tft'}; $tft = '' if (!defined $tft); $tft = ($tft eq 'on') ? '1' : '0';
  125.   $ul = $formdata{'ul'}; $ul = '' if (!defined $ul); $ul = ($ul eq 'on') ? '1' : '0';
  126.  
  127.   if ($to == 0 ) { # Трафик на остатке в абонплате равен нулю
  128.     if ($pw1 eq '') { # Если новый абонент
  129.       print "Заношу данные для нового пользователя<BR>\n";
  130.       $to = $ta*$mbyte; # Трафик на остатке равен $ta*1024*1024
  131.       $last_abonpl = $changed_date;
  132.       if ($ab != 0) { # Если есть абонплата
  133.         # Добавляем в платеж абонплату с минусом
  134.     print "Добавляю абонплату -$ab грн. в платежи<BR>\n";
  135.         $sum -= $ab;
  136.         $sel="INSERT INTO u_payment VALUES (\"$uname\", \"$changed_date\",
  137.        \"-$ab\", \"Абонплата\", \"$ot\", \"stat\", \"$changed_date\")";
  138.         $sth = $dbh->prepare("$sel");
  139.         $sth->execute();
  140.         $sth->finish();
  141.       }
  142.       # Удаляем запись с неправильной (нулевой) датой абонплаты из u_montly
  143.       $sel="DELETE FROM u_montly WHERE user=\"$uname\" LIMIT 1";
  144.       $sth = $dbh->prepare("$sel");
  145.       $sth->execute();
  146.       $sth->finish();
  147.     } else {
  148.       print "Обновляю данные для существующего пользователя<BR>\n";
  149.     }
  150.   }
  151.   $sel="UPDATE u_base SET password=\"$pw\", st_password=\"$ps\", num_dog=\"$nd\",
  152.  date_dog=\"$dd\", FullName=\"$fn\", Org=\"$or\", Phone=\"$ph\", indeks=\"$pi\",
  153.  street=\"$st\", Address=\"$ad\", email=\"$em\", Credit=\"$cr\", Abonpl=\"$ab\",
  154.  login_type=\"$ul\", sum=\"$sum\", traffic_a=\"$ta\", traffic_ost=\"$to\",
  155.  last_abonpl=\"$last_abonpl\", traffic_day=\"$td\", traffic_evn=\"$te\", traffic_ngh=\"$tn\",
  156.  traffic_loc=\"$tl\", traffic_usr=\"$tu\", Abonpln=\"$abn\", traffic_an=\"$tan\",
  157.  traffic_dayn=\"$tdn\", traffic_evnn=\"$ten\", traffic_nghn=\"$tnn\", traffic_locn=\"$tln\",
  158.  traffic_usrn=\"$tun\", transfermoney=\"$tfm\", transfertraffic=\"$tft\",
  159.  operator_name=\"$user\", changed_date=\"$changed_date\" WHERE user=\"$uname\" LIMIT 1";
  160.  
  161.   open LOGFILE,">>/usr/local/www/data/stat2/log/user_up.log";
  162.   print LOGFILE "$mytime1-$mytime2-$mytime3 $mytime4:$mytime5:$mytime6";
  163.   print LOGFILE " [$ip-$auth_name] Пользователь:$uname сумма:$sum кредит:$cr Оператор:$user\n";
  164.   close LOGFILE;
  165.  
  166. } elsif ($action eq "onoff") {
  167.   if (($to == 0 ) && ($pw1 eq '')) {
  168.     &Nice_Die("Нового пользователя нельзя включить,<br>сначала заведите данные о пользователе");
  169.   }
  170.   $a = $formdata{'a'};
  171.   if ($a ne "On") {
  172.     $a = '1'; print "Выключаю пользователя \"$uname\"...<BR>\n";
  173.   } else {
  174.     $a = '0'; print "Включаю пользователя \"$uname\"...<BR>\n";
  175.   }
  176.   $sel="UPDATE u_base SET status=\"$a\",
  177.  operator_name=\"$user\", changed_date=\"$changed_date\" WHERE user=\"$uname\" LIMIT 1";
  178. } elsif ($action eq "Del") {
  179.   $sth = $dbh->prepare("DELETE FROM u_base WHERE user=\"$uname\"");
  180.   $sth->execute();
  181.   $sth = $dbh->prepare("DELETE FROM u_payment WHERE user=\"$uname\"");
  182.   $sth->execute();
  183.   $sth = $dbh->prepare("DELETE FROM u_log WHERE user=\"$uname\"");
  184.   $sth->execute();
  185.   $sth = $dbh->prepare("DELETE FROM u_montly WHERE user=\"$uname\"");
  186.   $sth->execute();
  187.   open LOGFILE,">>/usr/local/etc/billing/user_del.log";
  188.   print LOGFILE "$uname\n";
  189.   close LOGFILE;
  190.   print <<EndPRINT;
  191. <BR>
  192. <b>Данные пользователя $uname успешно удалены</b>
  193. </CENTER>
  194. </BODY>
  195. </HTML>
  196. EndPRINT
  197. } else {
  198.   &Nice_Die("Неправильные параметры");
  199. }  
  200. if ($action ne "Del") {
  201.   $sth = $dbh->prepare("$sel");
  202.   &Nice_Die("Ошибка в синтаксисе.<br>Возможно Вы неправильно заполнили<br>поля ввода.") if (!$sth);
  203.   &Nice_Die("Ошибка записи в базу") if (!$sth->execute());
  204.   print <<EndPRINT;
  205. <BR>
  206. <b>Данные пользователя $uname записаны успешно</b>
  207. </CENTER>
  208. <SCRIPT>
  209. parent.head.location.href="header.cgi?uname=$uname";
  210. </SCRIPT>
  211. </BODY>
  212. </HTML>
  213. EndPRINT
  214.   $sth->finish();
  215. }
  216. # Disconnect from the database.
  217. $dbh->disconnect();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement