avin / gw-sms-captive

Бесплатный WIFI с доступом по SMS (captive-портал)
2 stars 1 forks source link

Очистка #1

Closed cvetanet closed 7 years ago

cvetanet commented 7 years ago

Сразу хочу выразить огромную благодарность за Ваш труд и старание. Подскажите пожалуйста как происходит очистка клиентов? через какой промежуток времени? и как это можно проконтролировать... Например есть пользователь он уже 5 дней не выходил в сеть. как понять в каком он состоянии если в бд стоит статус active 1?

avin commented 7 years ago

@cvetanet, спасибо! За очистку сессий отвественнен скрипт https://github.com/avin/gw-sms-captive/blob/master/app/Console/Kernel.php который выполняется каждую минуту при условии, что вы добавили в cron строчку

* * * * * php /var/www/apps/gw-sms-captive/artisan schedule:run >> /dev/null 2>&1

(подробно тут https://laravel.com/docs/5.4/scheduling)

В нем происходит следующее:

https://github.com/avin/gw-sms-captive/blob/master/app/Console/Commands/CleanInternetSessions.php#L83 Тут программа определяет просроченные сессии (ссылается на https://github.com/avin/gw-sms-captive/blob/master/app/Repositories/InternetSession/EloquentInternetSessionRepository.php#L71) После чего закрывает её (меняет статус в БД и выполняет манипуляции с iptables)

Если этого не происходит - возможно по крону у вас не выполняется указанный скрипт. Попробуйте выполнить его вручную из директории с программой прописав в консоли

php artisan jobs:cleanInternetSessions

Само время сессии определяется в файле .env в корне приложения через переменную SESSION_TIME_IN_MINUTES. Да кстати, про файл .env я забыл указать в документации - что для начала необходимо переименовать текущий файл .env.example в .env (которого по умолчанию нет, но он необходим). Скорее всего из за него у вас не отрабатывают скрипты.

cvetanet commented 7 years ago

Спасибо с переменными все понял! вот что получаеться..

/var/www/apps/gw-sms-captive$ sudo php artisan jobs:cleanInternetSessions
PHP Fatal error:  Uncaught ReflectionException: Class log does not exist in /var/www/apps/gw-sms-captive/bootstrap/cache/compiled.php:1285
Stack trace:
#0 /var/www/apps/gw-sms-captive/bootstrap/cache/compiled.php(1285): ReflectionClass->__construct('log')
#1 /var/www/apps/gw-sms-captive/bootstrap/cache/compiled.php(1236): Illuminate\Container\Container->build('log', Array)
#2 /var/www/apps/gw-sms-captive/bootstrap/cache/compiled.php(1774): Illuminate\Container\Container->make('log', Array)
#3 /var/www/apps/gw-sms-captive/bootstrap/cache/compiled.php(1328): Illuminate\Foundation\Application->make('log')
#4 /var/www/apps/gw-sms-captive/bootstrap/cache/compiled.php(1312): Illuminate\Container\Container->resolveClass(Object(ReflectionParameter))
#5 /var/www/apps/gw-sms-captive/bootstrap/cache/compiled.php(1298): Illuminate\Container\Container->getDependencies(Array, Array)
#6 /var/www/apps/gw-sms-captive/bootstrap/cache/compiled.php(1236): Illuminate\Container\Container->build('App\\Exceptions\\...', Array)
#7 /var/www/apps/gw-sms in /var/www/apps/gw-sms-captive/bootstrap/cache/compiled.php on line 1285

c .env все нормально он создался..

avin commented 7 years ago

очень похожу на данную проблему https://laracasts.com/discuss/channels/general-discussion/class-log-does-not-exist?page=1

cvetanet commented 7 years ago

похоже... но не могли бы подсказать поконкретнее..

avin commented 7 years ago

Попробуйте для начала загнать все переменные в файле .env в ковычки (особенно если есть пробелы). По типу

VAR="value"
avin commented 7 years ago

и проверьте что у вас установлены и включены следующие расширения для PHP

cvetanet commented 7 years ago

APP_ENV="local" APP_DEBUG="true" APP_KEY="jq****RY"

SMS_RU_KEY="25B*3606" REDIRECT_SUCCESS="http://**ow.ru" SESSION_TIME_IN_MINUTES="15"

DB_HOST="localhost" DB_DATABASE="smscaptive" DB_USERNAME="root" DB_PASSWORD="****"

CACHE_DRIVER="file" SESSION_DRIVER="file" QUEUE_DRIVER="sync"

MAIL_DRIVER="smtp" MAIL_HOST="smtp.mail.ru" MAIL_PORT="2525" MAIL_USERNAME="null" MAIL_PASSWORD="null" MAIL_ENCRYPTION="null"

расширения все включены... не помогает..

avin commented 7 years ago

хм, трудно сказать в чем конкретно проблема. Перепробуйте все предложенные варианты https://stackoverflow.com/questions/34978828/uncaught-reflectionexception-class-log-does-not-exist-laravel-5-2 Если проблему всё же решить не удасться - напишите какой дистрибьютив вы используете, какую версию PHP и выложите, что вам выдает php -m. Попробую воссоздать у себя

cvetanet commented 7 years ago

Ubuntu 14.04.5 LTS (GNU/Linux 4.4.0-31-generic x86_64) [PHP Modules] calendar Core ctype date dom exif fileinfo filter ftp gettext hash iconv json libxml openssl pcntl pcre PDO Phar posix readline Reflection session shmop SimpleXML sockets SPL standard sysvmsg sysvsem sysvshm tokenizer wddx xml xmlreader xmlwriter xsl Zend OPcache zlib

[Zend Modules] Zend OPcache

ставил все по инструкции .env я Вам скинул. Единственное отличие я ставил php вот так sudo add-apt-repository ppa:ondrej/php sudo apt-get update sudo apt-get install python-software-properties conntrack php5 php5-curl php5-json php5-fpm php5-mysql php5-mcrypt php5-cli git conntrack nginx mysql-server isc-dhcp-server iptables-persistent

avin commented 7 years ago

хм, на вскидку вижу, что в списке модулей отсуствуют

tokenizer
mbstring
mysql

Ок, я попробую тогда у себя всё это дело настроить, как вы написали. Посмотрю, что получиться. Смогу это сделать только вечером.

cvetanet commented 7 years ago

Спасибо! действительно дело было в модулях

tokenizer
mbstring
mysql

сейчас сессия трется в iptables и в бд переходит в статус active 0! (я так понимаю значет все хорошо) но появился еще вопрос! если пользователь отвалился через 15 минут, а еще через 5 снова пытается зайти, ему заново надо делать запрос по смс? (из базы он уже не подцепится?)

avin commented 7 years ago

угу, нужно по новой код запрашивать. Если хотите чтоб код полученный по СМС не имел срока годности - уберите в коде это условие https://github.com/avin/gw-sms-captive/blob/master/app/Repositories/Key/EloquentKeyRepository.php#L45-L47

или можете выставить отдельный срок годности для СМС кода https://github.com/avin/gw-sms-captive/blob/12059f14cc309ecfdd9189724058130c0c1423d2/app/Repositories/InternetSession/EloquentInternetSessionRepository.php#L61 вместо SESSION_TIME_IN_MINUTES придумайте новую переменную или добавьте её в .env с необходимым значением

cvetanet commented 7 years ago

Спасибо Вам огромное! тему можно удалять)) Удачи Вам!