Доработка traffic2sql из Ipn для сброса с линии

Ответить
NightFish
Сообщения: 16
Зарегистрирован: Вс авг 17, 2014 12:10 pm

Доработка traffic2sql из Ipn для сброса с линии

Сообщение NightFish »

Доработка скрипта traffic2sql из состава модуля Ipn для сброса PPPoE сессий при негативном депозите.
Не сбрасывает пользователей, если у них уже гостевой доступ.
Проверено на Abills 0.55 и NAS Mikrotik.

Примерно с 437 строки заменить на:

Код: Выделить всё

      #Hangup users with negative deposit
      if ( !$Ipn->{USERS_INFO}->{PAYMENT_TYPE}->{$uid}
        && defined($Ipn->{USERS_INFO}->{DEPOSIT}->{$uid})
        && $Ipn->{USERS_INFO}->{DEPOSIT}->{$uid} < 0)
      {
        #If session online hangup it
        if ($session_id) {
                require Log;
                Log->import('log_add');
                $Log = Log->new($db, \%conf);
                $Log->{PRINT} = 1;

                require Nas;
                my $nas = Nas->new($db, \%conf);
                my $NAS = $nas->info({NAS_ID => $NAS_IDS});

                require "Abills/nas.pl";

                require Admins;
                Admins->import();
                my $admin = Admins->new($db, \%conf);
                $admin->info($conf{SYSTEM_ADMIN_ID}, { IP => '127.0.0.1' });

                require Dv_Sessions;
                my $sessions = Dv_Sessions->new($db, $admin, \%conf);

                if ($admin->{errno}) {
                        print $admin->{errstr};
                        print $admin->{errno};
                        return;
                }

                my $online = $sessions->online({'FILTER_FIELD' => 'UID', FILTER => $uid, 'CLIENT_IP' => '_SHOW', 'USER_NAME' => '_SHOW', 'GUEST' => '_SHOW'});

                #If user becomes a guest - don't hangup it
                if ( !$online->[0]->{'guest'} ) {
                        hangup($NAS, '', $online->[0]->{'user_name'},
                                { 'FRAMED_IP_ADDRESS' => $online->[0]->{'client_ip'},
                                  'DEBUG' => $debug
                                }
                        );
                }

        }
      }

Ответить