Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl
- use strict;
- use DBI();
- use config;
- require "inc.pl";
- my $config = config->new();
- my $mbyte = $config->mbyte;
- my ($uname, $action, $sel) = '';
- my ($dbh, $sth, $ref, $numrows);
- my ($pw, $ps, $nd, $dd, $fn, $or, $ph, $pi, $st, $ad, $cr, $em) = '';
- my ($ab, $ta, $td, $te, $tn, $tl, $tu, $tfm, $tft) = '';
- my ($abn, $tan, $tdn, $ten, $tnn, $tln, $tun, $ul) = '';
- my ($a, $message, $to, $pw1, $sum, $last_abonpl) = '';
- my ($auth_name, $ip);
- my ($mytime1, $mytime2, $mytime3, $mytime4, $mytime5, $mytime6);
- ###### FOR LOG ##########
- $mytime1 = (localtime)[5]; # year
- $mytime1 = $mytime1 + 1900;
- $mytime2 = (localtime)[4]; # month
- $mytime2 = $mytime2 + 1;
- $mytime3 = (localtime)[3]; # day
- $mytime4 = (localtime)[2]; # hour
- $mytime5 = (localtime)[1]; # minute
- $mytime6 = (localtime)[0]; # second
- $ip = $ENV{'REMOTE_ADDR'};
- $auth_name = $ENV{'REMOTE_USER'};
- #########################
- my ($user, $ot, $dbh) = &CheckServer;
- print "Content-type: text/html; charset=koi8-r\n\n";
- my ($buffer, $name, $value) = '';
- my %formdata = ();
- my @pairs = {};
- my $content_length = $ENV{'CONTENT_LENGTH'};
- sysread(STDIN, $buffer, $content_length) if ($content_length > 0);
- if (!defined($buffer) || $buffer eq '') {
- &Nice_Die("Неправильные параметры");
- }
- @pairs = split(/&/, $buffer);
- foreach my $pair (@pairs) {
- ($name, $value) = split(/=/, $pair);
- $value =~ tr/+/ /;
- $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
- $formdata{$name} = $value;
- }
- $action = $formdata{'action'};
- $uname = $formdata{'uname'}; $uname =~ s/(\'|\"|\\)//g;
- print <<EndPRINT;
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
- <HTML>
- <HEAD>
- <META http-equiv=Content-Type content="text/html; charset=koi8-r">
- <META http-equiv=Pragma content="no-cache">
- <LINK rel=stylesheet href="main.css" type="text/css">
- </HEAD>
- <BODY marginwidth=0 marginheight=0 leftmargin=0 topmargin=0>
- <CENTER>
- <BR>
- EndPRINT
- &Nice_Die("Неверное имя пользователя") if ($uname eq "");
- $sth = $dbh->prepare("SELECT password,last_abonpl,sum,traffic_ost FROM u_base WHERE user=\"$uname\" LIMIT 1");
- $sth->execute();
- $numrows = $sth->rows;
- if ($numrows == 0) {
- &Nice_Die("Неверное имя пользователя");
- } else {
- $ref = $sth->fetchrow_hashref();
- $pw1 = $ref->{'password'};
- $last_abonpl = $ref->{'last_abonpl'};
- $sum = $ref->{'sum'}; $sum = sprintf("%01.2f",$sum);
- $to = $ref->{'traffic_ost'};
- }
- $sth->finish();
- $pw1 = '' if (! defined $pw1);
- $to = 0 if (! defined $to);
- my $e;
- my($sec, $min, $hour, $mday, $mon, $year) = localtime;
- $year += 1900;
- $mon++;
- foreach $e ('sec', 'min', 'hour', 'mday', 'mon', 'year') {
- # '7' -> '07'
- eval "\$$e = 0 . \$$e" if (eval "\$$e" < 10);
- }
- my $changed_date = "$year-$mon-$mday $hour:$min:$sec";
- if ($action eq "update") {
- $pw = $formdata{'pw'}; $pw =~ s/(\'|\"|\\|\s)//g;
- $ps = $formdata{'ps'}; $ps =~ s/(\'|\"|\\|\s)//g;
- $nd = $formdata{'nd'}; $nd =~ s/(\'|\"|\\)//g;
- $dd = $formdata{'dd'}; $dd =~ s/(\'|\"|\\)//g;
- $dd =~ s/^(\d{2}).+(\d{2}).+(\d{4})/$3\-$2\-$1 08:00:00/;
- $fn = $formdata{'fn'}; $fn =~ s/(\'|\"|\\)//g;
- $or = $formdata{'or'}; $or =~ s/\'/\\\'/g; $or =~ s/\"/\\\"/g;
- $ph = $formdata{'ph'}; $ph =~ s/(\'|\"|\\)//g;
- $pi = $formdata{'pi'}; $pi =~ s/(\'|\"|\\)//g;
- $st = $formdata{'st'}; $st =~ s/(\'|\"|\\)//g;
- $ad = $formdata{'ad'}; $ad =~ s/(\'|\"|\\)//g;
- $cr = $formdata{'cr'}; $cr = sprintf("%01.2f",$cr);
- $em = $formdata{'em'}; $em =~ s/(\'|\"|\\)//g;
- $ab = $formdata{'ab'}; $ab = sprintf("%01.2f",$ab);
- $ta = $formdata{'ta'}; $ta = sprintf("%d",$ta); $ta = 0 if ($ta < 0);
- $td = $formdata{'td'}; $td = sprintf("%01.2f",$td);
- $te = $formdata{'te'}; $te = sprintf("%01.2f",$te); $te = $td if ($te eq '0.00');
- $tn = $formdata{'tn'}; $tn = sprintf("%01.2f",$tn); $tn = $td if ($te eq '0.00');
- $tl = $formdata{'tl'}; $tl = sprintf("%01.2f",$tl);
- $tu = $formdata{'tu'}; $tu = sprintf("%01.2f",$tu);
- $abn = $formdata{'abn'}; $abn = sprintf("%01.2f",$abn);
- $tan = $formdata{'tan'}; $tan = sprintf("%d",$tan); $tan = 0 if ($tan < 0);
- $tdn = $formdata{'tdn'}; $tdn = sprintf("%01.2f",$tdn);
- $ten = $formdata{'ten'}; $ten = sprintf("%01.2f",$ten); $ten = $tdn if ($ten eq '0.00');
- $tnn = $formdata{'tnn'}; $tnn = sprintf("%01.2f",$tnn); $tnn = $tdn if ($tnn eq '0.00');
- $tln = $formdata{'tln'}; $tln = sprintf("%01.2f",$tln);
- $tun = $formdata{'tun'}; $tun = sprintf("%01.2f",$tun);
- $tfm = $formdata{'tfm'}; $tfm = '' if (!defined $tfm); $tfm = ($tfm eq 'on') ? '1' : '0';
- $tft = $formdata{'tft'}; $tft = '' if (!defined $tft); $tft = ($tft eq 'on') ? '1' : '0';
- $ul = $formdata{'ul'}; $ul = '' if (!defined $ul); $ul = ($ul eq 'on') ? '1' : '0';
- if ($to == 0 ) { # Трафик на остатке в абонплате равен нулю
- if ($pw1 eq '') { # Если новый абонент
- print "Заношу данные для нового пользователя<BR>\n";
- $to = $ta*$mbyte; # Трафик на остатке равен $ta*1024*1024
- $last_abonpl = $changed_date;
- if ($ab != 0) { # Если есть абонплата
- # Добавляем в платеж абонплату с минусом
- print "Добавляю абонплату -$ab грн. в платежи<BR>\n";
- $sum -= $ab;
- $sel="INSERT INTO u_payment VALUES (\"$uname\", \"$changed_date\",
- \"-$ab\", \"Абонплата\", \"$ot\", \"stat\", \"$changed_date\")";
- $sth = $dbh->prepare("$sel");
- $sth->execute();
- $sth->finish();
- }
- # Удаляем запись с неправильной (нулевой) датой абонплаты из u_montly
- $sel="DELETE FROM u_montly WHERE user=\"$uname\" LIMIT 1";
- $sth = $dbh->prepare("$sel");
- $sth->execute();
- $sth->finish();
- } else {
- print "Обновляю данные для существующего пользователя<BR>\n";
- }
- }
- $sel="UPDATE u_base SET password=\"$pw\", st_password=\"$ps\", num_dog=\"$nd\",
- date_dog=\"$dd\", FullName=\"$fn\", Org=\"$or\", Phone=\"$ph\", indeks=\"$pi\",
- street=\"$st\", Address=\"$ad\", email=\"$em\", Credit=\"$cr\", Abonpl=\"$ab\",
- login_type=\"$ul\", sum=\"$sum\", traffic_a=\"$ta\", traffic_ost=\"$to\",
- last_abonpl=\"$last_abonpl\", traffic_day=\"$td\", traffic_evn=\"$te\", traffic_ngh=\"$tn\",
- traffic_loc=\"$tl\", traffic_usr=\"$tu\", Abonpln=\"$abn\", traffic_an=\"$tan\",
- traffic_dayn=\"$tdn\", traffic_evnn=\"$ten\", traffic_nghn=\"$tnn\", traffic_locn=\"$tln\",
- traffic_usrn=\"$tun\", transfermoney=\"$tfm\", transfertraffic=\"$tft\",
- operator_name=\"$user\", changed_date=\"$changed_date\" WHERE user=\"$uname\" LIMIT 1";
- open LOGFILE,">>/usr/local/www/data/stat2/log/user_up.log";
- print LOGFILE "$mytime1-$mytime2-$mytime3 $mytime4:$mytime5:$mytime6";
- print LOGFILE " [$ip-$auth_name] Пользователь:$uname сумма:$sum кредит:$cr Оператор:$user\n";
- close LOGFILE;
- } elsif ($action eq "onoff") {
- if (($to == 0 ) && ($pw1 eq '')) {
- &Nice_Die("Нового пользователя нельзя включить,<br>сначала заведите данные о пользователе");
- }
- $a = $formdata{'a'};
- if ($a ne "On") {
- $a = '1'; print "Выключаю пользователя \"$uname\"...<BR>\n";
- } else {
- $a = '0'; print "Включаю пользователя \"$uname\"...<BR>\n";
- }
- $sel="UPDATE u_base SET status=\"$a\",
- operator_name=\"$user\", changed_date=\"$changed_date\" WHERE user=\"$uname\" LIMIT 1";
- } elsif ($action eq "Del") {
- $sth = $dbh->prepare("DELETE FROM u_base WHERE user=\"$uname\"");
- $sth->execute();
- $sth = $dbh->prepare("DELETE FROM u_payment WHERE user=\"$uname\"");
- $sth->execute();
- $sth = $dbh->prepare("DELETE FROM u_log WHERE user=\"$uname\"");
- $sth->execute();
- $sth = $dbh->prepare("DELETE FROM u_montly WHERE user=\"$uname\"");
- $sth->execute();
- open LOGFILE,">>/usr/local/etc/billing/user_del.log";
- print LOGFILE "$uname\n";
- close LOGFILE;
- print <<EndPRINT;
- <BR>
- <b>Данные пользователя $uname успешно удалены</b>
- </CENTER>
- </BODY>
- </HTML>
- EndPRINT
- } else {
- &Nice_Die("Неправильные параметры");
- }
- if ($action ne "Del") {
- $sth = $dbh->prepare("$sel");
- &Nice_Die("Ошибка в синтаксисе.<br>Возможно Вы неправильно заполнили<br>поля ввода.") if (!$sth);
- &Nice_Die("Ошибка записи в базу") if (!$sth->execute());
- print <<EndPRINT;
- <BR>
- <b>Данные пользователя $uname записаны успешно</b>
- </CENTER>
- <SCRIPT>
- parent.head.location.href="header.cgi?uname=$uname";
- </SCRIPT>
- </BODY>
- </HTML>
- EndPRINT
- $sth->finish();
- }
- # Disconnect from the database.
- $dbh->disconnect();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement