Skip to content

Latest commit

 

History

History
190 lines (160 loc) · 25.4 KB

standalone.md

File metadata and controls

190 lines (160 loc) · 25.4 KB

Самостоятельно работающая версия

При таком использовании не требуется установка проприетарного ПО и отсутствуют какие либо лицензионные ограничения.

Варианты работы mbplugin

* Приоритетный вариант: Если Вы хотите иметь доступ ко всем возможностям (Telegram bot, просмотр логов, расписание проверок и т.п.), то необходимо запускать web сервер, он легковесный, и ресурсов не потребляет. Основное потребление ресурсов это работа движка хрома, но без этого уже никак. 
* Если Ваша цель только получить баланс телефонов в виде файла web странички - то mbplugin может запускаться как скрипт по расписанию и не иметь постоянно запущенной части по завершении проверки будет генерироваться файл страничка `balance.html` которую можно просто открыть в браузере.

Для устанавливающих на linux и macOS есть вариант запускать систему в собранном докер контейнере. Контейнер собран авторами playwright и по идее должен работать хорошо без дополнительных усилий, правда размер контейнера довольно большой - около 2ГБ. Пару слов про докер для общего понимания. docker если очень упрощенно такая суперлегкая виртуализация (запущенная машина называется container, а образ из которого она создается docker image, накладные расходы ОС на запуск контейнера минимальны), позволяющая удобно работать с данными, расположенными за пределами работающего контейнера. Чтобы не возиться с установкой софта можно взять готовый контейнер с dockerhub.com и сразу запустить. Очень прикольная штука, если вы на linux или на mac и вы еще не слышали про докер очень рекомендую про него почитать, руководств в т.ч. и на русском полно.

Установка немного отличается в windows и linux

Для Windows есть собранный готовый к использованию без установки доп пакетов дистрибутив (в процессе настройки будет скачан движок хрома).
Для Linux и MacOs есть два варианта установки, в варианте без докера потребуется первоначальная установка пакетов, в случае установки через докер - потребуется установка докера.
Также обратите внимание что в windows кодировка ini файлов должна быть CP1251, а в Linux и MacOs - UTF-8 без BOM (если Вы редактируете файл для Linux из windows то в Блокноте выбирайте - сохранение UTF-8 (не выбирайте UTF-8 со спецификацией), в Notepad++ в меню при сохранении есть пункты UTF-8 (это тот что нужен) и UTF-8-BOM (этот не нужен))

Установка в windows

  1. Создаем в удобном месте папку mbstandalone (название можете выбрать какое нравиться, это не принципиально)
    !!! Все команды после установки мы запускаем из нашей корневой папки mbstandalone
  2. Помещаем, если есть, в эту папку phones.ini от MobileBalance. Если его нет, то на этапе инициализации будет создан демо файл с примерами
  3. Скачиваем последнюю версию mbplugin.NNN.zip из с github или из форума 4pda
  4. Распаковываем в эту папку содержимое архива (папка mbplugin).
  5. Запускаем mbplugin\standalone\mbp.bat, скрипт проведет диагностику, проведет донастройку и поместит в папку mbstandalone mbp.bat, в дальнейшем все взаимодействие мы будем производить через него.

Установка в linux и macOS без докера

  1. Создаем в удобном месте папку mbstandalone (название можете выбрать какое нравиться, это не принципиально)
    !!! Все команды после установки мы запускаем из нашей корневой папки mbstandalone
    mkdir mbstandalone
    cd mbstandalone
  2. Помещаем, если есть, в эту папку phones.ini от MobileBalance. Если его нет, то на этапе инициализации будет создан демо файл с примерами
  3. Скачиваем последнюю версию mbplugin_bare.NNN.zip из с github - это облегченная версия без виндовых пакетов, пакеты будем ставить самостоятельно.
  4. Распаковываем в эту папку содержимое архива (папка mbplugin).
  5. Устанавливаем пакеты (команды выполняем находясь в папке mbstandalone):
    • apt-get install -y python3.8 python3-venv npm unzip
    • python3.8 -m venv env
    • . env/bin/activate
    • python -m pip install --upgrade pip
    • python -m pip install -r mbplugin/docker/requirements.txt
    • python -m playwright install chrome
    • bash mbplugin/standalone/mbp python

Если в системе установлен git, то вместо шагов 2 и 3 можно дать команду git clone https://github.com/artyl/mbplugin

Установка в linux и macOS через докер

Устанавливаем докер - выберете инструкцию под свою систему
1-4. Шаги 1-4 аналогично установке без докера
5. bash mbplugin/standalone/mbp docker
Данный вариант прост и хорошо управляем, повторяем, независим от версий приложений установленных в системе, работает в серверном варианте без установленного GUI, но требует установки Docker (там в принципе ничего сложного) и сам контейнер с Playwright занимает порядка 2 GB на диске (для современных дисков по моему тоже не сильно критично). Если с местом проблемы, или не хотите устанавливать докер то попробуйте вариант без докера с установкой всего в систему (В целом тоже рабочее решение, но вероятность проблем по ходу, если Вы с системой не на ты - выше).
Специфический момент при работе через докер. Т.к. запуск в докере - это запуск по сути на отдельной машине для доступа к web серверу нам необходимо разрешить доступ на web сервер извне, не с localhost - поэтому host=0.0.0.0, доступ к web серверу извне будет ограничен параметром при запуске докера -p 127.0.0.1:19777:19777. Т.к. появлялись вопросы обращаю внимание что с докером у нас получается для разрешения внешнего доступа к web прописать разрешение в ДВУХ местах в mbplugin.ini и dockervarfile. Если нужно чтобы доступ был извне машины на которой работает докер, то необходимо в файле dockervarfile в строчке DOCKER_WEB после установке поменять -p 127.0.0.1:19777:19777 на -p 0.0.0.0:19777:19777 (эта настройка может не сохраняться после обновления, так что после обновления проверяйте).
Управлять сервером можно также командами TG бота или командами через mbp, а баланс смотреть в TG либо в файле balance.html так что доступ извне к web можно и не включать
Важно если вы будете потом запускать веб-сервер без докера, то обязательно выключите доступ к веб-серверу снаружи host=127.0.0.1 иначе web сервер будет доступен с других компьютеров сети
Итак:

# init
bash mbplugin/standalone/mbp docker
# Если хотим управлять web сервером и открывать страницу баланса с него то разрешаем доступ к серверу извне (см комментарий выше)
./mbp set ini/HttpServer/host=0.0.0.0
# Запуск web сервера
./mbp web-server start  
# Запрос баланса с генерацией balance.html (можно запускать без web сервера)
./mbp get-balance 

После установки

  • Все управление mbplugin производится с помощью скрипта mbp в папке mbstandalone. Находясь в папке mbstandalone дайте команду mbp (в linux ./mbp) для получения справки по командам, также управлять web сервером можно через иконку в трее (только windows) и через web страницу http://localhost:19777/main
  • Настраиваем телефоны в phones.ini, при установке будет скопирован файл примера из mbplugin\standalone с двумя примерами телефонов. Если у вас уже есть phones.ini положите его в папку вместо phones.ini с примером и настройте пароли в поле password2
    ВАЖНО Когда вы будете добавлять новые номера, то номера секций ([Phone] #номер) не должны повторяться
    Запрос баланса будет работать только для телефонов, у которых в поле password2 прописан пароль (см пример phones.ini в папке mbplugin\standalone).
  • Для получения балансов mbp get-balance
    обратите внимание что здесь и далее:
    • В windows мы запускаем mbp get-balance
    • В Linux и MacOs ./mbp get-balance
  • Если нужно запросить только балансы, по которым были ошибки запустите mbp get-balance --only_failed
  • Чтобы только обновить balance.html без получения балансов mbp refresh-balance-html
  • Если нужно получить по части номеров запустите mbp get-balance filter1 filter2 ... будут получены только балансы у которых один из фильтров совпадет с плагином или логином
  • Для настройки автоматической проверки баланса необходимо воспользоваться встроенным в web сервер планировщиком (см Расписание проверок) либо по какому-то расписанию запускать mbp get-balance например через системный планировщик taskschd.mscлибо как-то еще

Telegram бот

Инструкция настройке бота

Редактирование phones.ini

При включении опции phone_ini_save=1 (в режиме standalone включена по умолчанию) доступна работа со списком телефонов через утилиту mbp
При редактировании не задействуется вспомогательный phones_add.ini все записывается в phone.ini

Посмотреть список номеров

mbp phone-list

Добавить номер

Чтобы добавить номер нужно не указывая порядковый номер указать обязательно оператора, логин и пароль
mbp phone-change -pl p_test1 -l 9161234567 -p SuPeR_PaSsW0Rd

Изменить информацию по номеру

Поменять alias у второго номера mbp phone-change -n 2 -a "Петрович Гадя"

Удалить номер

Например удалить номер с порядковым номером 3
mbp phone-change --delete -n 3 Удалить все номера оператора p_mts mbp phone-change --delete -pl p_mts

Индивидуальные настройки для одного телефона

Почти все опции из раздела Option можно индивидуально прописать в phones.ini/phones_add.ini и тогда она перекроет настройки для конкретного телефона, например если Вы хотите чтобы при проверки какого-то баланса был показан браузер - пропишите в разделе для этого телефона show_chrome=1 и при опросе только этого телефона хром будет запущен с отображением браузера.

Обновление версии

Текущую версию mbplugin можно узнать командой mbp version -v из папки mbstandalone
Для обновления версии запустите mbp version-update
Механизм обновления устроен просто - он качает архив mbplugin_bare.NNN.zip от нужной версии с github (он в отличии от сборки включает в себя только скрипты , поэтому он очень маленький- около 300kb) и просто обновляет изменившиеся с предыдущей версии файлы.

Расписание проверок

В веб-сервер встроен планировщик. Естественно чтобы он работал должен быть запущен веб-сервер.
Для добавления заданий добавьте в секцию [HttpServer] одну или несколько строк, Важно - у всех строк номера должны отличаться, один может быть без номера
Если хотите проверять не все телефоны а только часть то после расписания через запятую перечислите фильтры для отбора номеров которые хотите проверить
Формат расписания повторяет формат в библиотеке schedule
Возможные команды:

  • check - проверка балансов
  • check_send - проверка балансов и отправка по завершении отчета
  • check_new_version - проверить наличие новой версии, и отправить в телеграм сообщение
  • ping - послать сообщение
    Если к команде добавить в конце _once, то команда выполнится один раз, после чего будет удалена из расписания в памяти, но останется в ini.
    Т.к. у пользователей возникают вопросы - поясню пример запуска после старта every().minute,check_once - задание будет отрабатывать каждую минуту (every().minute) и т.к. указан _once после выполнения задание будет удалено, т.е. задание отработает один раз через минуту после старта программы.

Примеры:

;Проверять раз в 4 часа mts и beeline, отчет в телегу не отправлять
schedule = every(4).hours,check, mts,beeline
;Проверять все номера один раз в день, отчет в телегу не отправлять
schedule1 = every().day,check
;Проверять один раз в день в 10:30 номер 123456 и отправлять отчет в телегу
schedule2 = every().day.at("10:30"),check_send,123456
;Проверить обновление один раз в неделю
schedule3 = every().week,check_new_version
;Проверить обновление после старта программы (обратите внимание на _once)
schedule4 = every().minute,check_new_version_once
;Проверить все номера после старта программы (обратите внимание на _once)
schedule5 = every().minute,check_once

После изменения расписания чтобы изменения применились запустите mbp reload-schedule или нажмите на кнопку Reload schedule на странице управления http://localhost:19777/main
Актуальное расписание можно посмотреть на странице http://localhost:19777/schedule на которую также можно попасть с главной страницы. По актуальному расписанию сразу снимается много вопросов из разряда почему расписание не работает как ожидалось.

Совместное использование standalone версии и MobileBalance, хранение паролей

Если планируется совместное использование standalone версии и MobileBalance, то при запуске Mobilebalance все чужеродные поля будут стерты из Phones.ini.
Для этого был сделан механизм с файлом phones_add.ini.
Вот как выглядит секция для телефона в phones.ini

[Phone] #1
Region               = p_test1
Monitor              = TRUE
Alias                = Ivanych
Number               = 9161112233
Password2 = 123password

Создаем phones_add.ini и переносим поле Password2 в него. Phones_add.ini

[Phone] #1
Password2 = 123password

Все параметры прописанные в phones_add.ini будут при подгрузке перекрывать параметры в phones.ini

Не забывайте также про то что результаты запросов сделанных не из Mobilebalance (tray icon, web-server и telegram bot) не попадут в MobileBalance

Для использования возможностей standalone запустите mbplugin\standalone\mbp.bat после установки используйте mbp.bat в корневой папке (в папке где находится папка mbplugin)

Работа через прокси

К сожалению с работой через прокси возник ряд проблем поэтому пришлось сделать несколько параметров

  • Options\browser_proxy - настройки прокси для браузера
  • Options\requests_proxy - настройки прокси для обычных плагинов
  • Telegram\tg_proxy - настройки прокси для бота

Для инфо

  • В Standalone версии для получения баланса не требуется веб-сервер, веб-сервер нужен только для показа информации и обработки команд телеграм ботом. Так что если вы не собираетесь пользоваться телеграм ботом и встроенным шедулером, а балансы смотреть через сгенеренную страничку balance.html с диска то web сервер можно не запускать. Отправка балансов в телеграм через send_tgbalance_onlysend.bat, также работает без веб-сервера.
  • Какой оператор указывается в phones.ini (пример файла phones.ini смотрите в папке standalone) в поле Region плагины - это файлы в папке mbplugin\plugin т.е. например для плагина mts файл mts.py, а в поле нужно будет указать Region=p_mts т.е. с префиксом p_ и без расширения
  • На текущий момент доступен только просмотр веб страницы с балансом http://localhost:19777/report, открыть его можно, выбрав Open report через иконку веб-сервера в системном трее, либо без веб-сервера можно открыть balance.html в корневой папке standalone версии
  • Можно сделать несколько альтернативных наборов колонок, добавив в ini параметр, например table_format1, и открывать http://localhost:19777/report1
  • Для просмотра истории по балансу установите параметр RealAverageDays=число дней просмотра истории. Помните, что чем больше дней, тем дольше строится страница с балансом. История баланса будет отображаться при наведении мышкой на баланс.
  • Все данные по балансам хранятся в файле BalanceHistory.sqlite в корне проекта, это база данных sqlite при желании можно поработать с ней из других программ для построения какой-то аналитики.
  • При желании можно настроить телеграм бота так же как для обычной версии, но только по варианту 2 (tg_from = sqlite, см общий readme раздел Телеграм бот вариант 2 (получаем балансы из sqlite))
  • При желании можно запустить несколько mbplugin одновременно из разных папок на разных портах, но возможны коллизии при управлении хромом, когда несколько разных плагинов попытаются запускать их одновременно

Текущие проблемы

Слабая диагностика ошибок в phones.ini, который пока правится руками.

Дальнейшее развитие

  • Запросить неудачные попытки
  • В дальнейшем это частично переедет в веб-сервер, где будет шедулер и подобный функционал.