Jump to content

Проект "Жезл" - телеграмм бот для работы с роутером


Recommended Posts

  • Zeleza changed the title to Проект "Жезл" - телеграмм бот для работы с роутером

Zeleza, добрый день!

Можно ли одного и того же бота использовать на двух роутерах? Будет ли работать или будут конфликты?

Link to comment
Share on other sites

3 минуты назад, kilia сказал:

Можно ли одного и того же бота использовать на двух роутерах? Будет ли работать или будут конфликты?

@kilia, доброго Вам дня,

Нет, подобная возможность исключена. 

Link to comment
Share on other sites

Почему могут не отображаться некоторые впн срединия в списке бота? Есть WG, есть A3 через OpenVpn но нет другого который идёт через L2tp/Ipsec

  • Thanks 1
Link to comment
Share on other sites

В 10.04.2022 в 12:52, ExFet сказал:

Почему могут не отображаться некоторые впн срединия в списке бота? 

Здравствуйте, 
Все сообщения относительно отладки бета версий - прошу в "личку". Так же, желательно более подробно описать ситуацию и предоставить консольный вывод команды:

curl -s localhost:79/rci/show/ip/name-server

 

Link to comment
Share on other sites

Можешь добавить опцию для прогрузки адресов целыми CIDR блоками?

И опубликуй код на гитхабе, а то выглядит как кот в мешке.

Link to comment
Share on other sites

Zeleza, добрый день!

Что-то у меня не взлетело:

~ # zpu add rutracker.org
Команда: 'if [ -f '/opt/etc/zezl/zezl.conf' ]; then echo 1; else echo 0; fi'
[INFO] zezl->tools.py->run[498] - "Команда: 'if [ -f '/opt/etc/zezl/zezl.conf' ]; then echo 1; else echo 0; fi'"
Команда: 'cat < /opt/etc/zezl/zezl.conf | grep 'DNS=' | cut -d'=' -f2'
[INFO] zezl->tools.py->run[498] - "Команда: 'cat < /opt/etc/zezl/zezl.conf | grep 'DNS=' | cut -d'=' -f2'"
Команда: 'curl -s localhost:79/rci/ip/route'
[INFO] zezl->tools.py->run[498] - "Команда: 'curl -s localhost:79/rci/ip/route'"
Traceback (most recent call last):
  File "/opt/bin/zpu", line 234, in <module>
    res = cmd_add_hosts(hosts=sys.argv[2:]) if args_count > 1 else no_args()
  File "/opt/bin/zpu", line 149, in cmd_add_hosts
    mess = vpn_lib.load_hosts_to_white_list(hosts=hosts)
  File "/opt/apps/zezl/vpn_lib.py", line 1114, in load_hosts_to_white_list
    messages_list = add_some_hosts(hosts=hosts, interfaces=interfaces, dns_ip=dns_config)
  File "/opt/apps/zezl/vpn_lib.py", line 1219, in add_some_hosts
    for inface in interfaces:
TypeError: 'NoneType' object is not iterable

Попробовал 

# zpu interface Wireguard0

В ответ список поддерживаемых команд.

Попробовал еще раз добавить токен, так как в телеграм на /start ничего не происходит:
 

~ # zpu token ******:**********************
Команда: 'sed -i "/TOKEN/d" "/opt/etc/zezl/zezl.conf" && echo TOKEN=******:********************** >> "/opt/etc/zezl/zezl.conf" && /opt/etc/init.d/S61zezl restart && /opt/etc/init.d/S61zezl status'
[INFO] zezl->tools.py->run[498] - "Команда: 'sed -i "/TOKEN/d" "/opt/etc/zezl/zezl.conf" && echo TOKEN=******:********************** >> "/opt/etc/zezl/zezl.conf" && /opt/etc/init.d/S61zezl restart && /opt/etc/init.d/S61zezl status'"
Токен успешно установлен.
Запускаем бота...
---------------------------------------------------
 Starting zezl.py...              done. 
 Checking zezl.py...              alive. 
---------------------------------------------------
Готово.

Что я сделал не так?

Edited by kilia
Link to comment
Share on other sites

9 минут назад, kilia сказал:

Что я сделал не так?

Доброго дня,
Забыл отключить вариант отладки, прошу прощения.
Потому много всяких ненужных сообщений, но в целом - бот у Вас запустился судя по логу.
Можете проверить командой:

/opt/etc/init.d/S61zezl status

В боте введите команду /start или /list или /backup, должно появится одно из меню. 

Относительно zpu - написал выше:

Цитата

В версии 1.0-beta-9 доступен пока не весь функционал, планируется в следующем релизе его реализовать полностью.

 

Link to comment
Share on other sites

После установки токена запускается, но следующей командой падает:
 

~ # /opt/etc/init.d/S61zezl status
 Checking zezl.py...              dead. 
~ # zpu token *****:*******
Команда: 'sed -i "/TOKEN/d" "/opt/etc/zezl/zezl.conf" && echo TOKEN=*****:******* >> "/opt/etc/zezl/zezl.conf" && /opt/etc/init.d/S61zezl restart && /opt/etc/init.d/S61zezl status'
[INFO] zezl->tools.py->run[498] - "Команда: 'sed -i "/TOKEN/d" "/opt/etc/zezl/zezl.conf" && echo TOKEN=*****:******* >> "/opt/etc/zezl/zezl.conf" && /opt/etc/init.d/S61zezl restart && /opt/etc/init.d/S61zezl status'"
Токен успешно установлен.
Запускаем бота...
---------------------------------------------------
 Starting zezl.py...              done. 
 Checking zezl.py...              alive. 
---------------------------------------------------
Готово.
~ # /opt/etc/init.d/S61zezl status
 Checking zezl.py...              alive. 
~ # /opt/etc/init.d/S61zezl status
 Checking zezl.py...              dead. 
~ # /opt/etc/init.d/S61zezl status
 Checking zezl.py...              dead. 

При этом сам бот в телеге ни на что не реагирует. Подожду следующей версии тогда, чтобы вы не подумали что я проблемный=)))

Link to comment
Share on other sites

Попробуйте запустить следующей командой

/opt/etc/init.d/S61zezl stop
/opt/apps/zezl/zezl.py

и пришлите вывод терминальный.

  • Upvote 1
Link to comment
Share on other sites

8 минут назад, Aleksandr Akimov сказал:

А как обстоят дела с безопасностью? Как определяется список пользователей/чатов которые могут управлять функционалом?

Доброго дня, пока нет такого функционала - предлагайте.
Есть идея привязать к аккаунту телеграм.

Link to comment
Share on other sites

Как вариант - сделать привязку к chat_id. Установил пакет, сразу написал боту, он записал chat_id, остальные будет игнорировать.

По моему опыту - имею ряд ботов с рандомными именами, которые нигде не "засвечены", но периодически и им пишут разные пользователи, поэтому стоит защитится от такого.

  • Thanks 2
Link to comment
Share on other sites

1 минуту назад, Aleksandr Akimov сказал:

Как вариант - сделать привязку к chat_id. Установил пакет, сразу написал боту, он записал chat_id, остальные будет игнорировать.

По моему опыту - имею ряд ботов с рандомными именами, которые нигде не "засвечены", но периодически и им пишут разные пользователи, поэтому стоит защитится от такого.

Добро, благодарю за идею.
Сделаю в последующих релизах.

Link to comment
Share on other sites

Доступна для установки новая версия zezl_1.0-beta_11_all.ipk

  1. При инсталляции пакета необходимо теперь вводить свой user_id для избежания проблем с безопасностью. После его ввода, другие пользователи не смогут иметь доступ к боту (прошу подтвердить, что все работает как надо - сделана привязка к user_id). 
  2. Внесены правки в скрипты удаления и установки пакета, которые позволяют не вводить каждый раз token и user_id.  Опция доступна, если Вы, при удалении пакета, не станете удалять файлы конфигурации - данные будут браться из предыдущей установки. 
Edited by Zeleza
  • Upvote 1
Link to comment
Share on other sites

Может кому полезно будет:

Чтобы узнать свой id можно написать телеграм боту @getmyid_bot, в ответ получите ваш id 

А походу Жезл сам находит id

Zeleza, добрый день!

У меня вот такое во время запуска:

Запускаем zezl...

Для начала работы необходимо перейти в Телеграм и открыть диалог 
с созданным Вами ботом, а затем набрать команду /start

[INFO] zezl->tools.py->run[498] - "Команда: 'cat < /opt/etc/zezl/zezl.conf | grep 'USER_ID=' | cut -d'=' -f2'"
Traceback (most recent call last):
  File "/opt/apps/zezl/handlers.py", line 25, in get_user_id
    from remote_data import USER_ID
ModuleNotFoundError: No module named 'remote_data'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/apps/zezl/zezl.py", line 13, in <module>
    from handlers import (
  File "/opt/apps/zezl/handlers.py", line 304, in <module>
    admin = Filters.user(get_user_id())
  File "/opt/apps/zezl/handlers.py", line 35, in get_user_id
    user_id = int(out.replace('\n', '')) if is_ok else -1
ValueError: invalid literal for int() with base 10: ''
Collected errors:
 * pkg_run_script: package "zezl" postinst script returned status 1.
 * opkg_configure: zezl.postinst returned 1.

Вписал в nano /opt/etc/zezl/zezl.conf свой USER_ID вручную, и все заработало!

Спасибо!

Edited by kilia
Link to comment
Share on other sites

19 минут назад, kilia сказал:

У меня вот такое во время запуска:

Доброго дня
Это происходит по причине отсутствия данных об user_id в файле конфигурации - попробуйте снова удалить пакет и переустановить его, введя данные заново. 

Link to comment
Share on other sites

13 минуты назад, Zeleza сказал:

Доброго дня
Это происходит по причине отсутствия данных об user_id в файле конфигурации - попробуйте снова удалить пакет и переустановить его, введя данные заново. 

Остановил, удалил, установил заново:
 

~ # /opt/etc/init.d/S61zezl stop
 Checking zezl.py...              alive. 
 Shutting down zezl.py...              done. 
~ # opkg remove zezl
Removing package zezl from root...
Удаляем файлы пакета 'zezl'...
Удаляем данные из cron...
Удалить файлы конфигурации пакета [Y/N]? 
Y
Удаляем файлы конфигурации 'zezl'...
Удалить python пакеты: telegram-bot [Y/N]? 
N
~ # opkg install /opt/apps/packages/zezl_1.0-beta_11_all.ipk 
Installing zezl (1.0-beta_11) to root...
Configuring zezl.

Установка пакета ЖЕЗЛ™ [Zezl™] версия 1.0-beta_11...

Для полноценной работы пакета необходимо создать своего бота в 'Телеграм'
и получить ключ-токен. Видео-инструкцию Вы можете найти по ссылке ниже: 
https://youtu.be/KAgvPrvlI7Q

Для продолжения работы, ведите token Вашего бота: 
********:********
Запускаем zezl...

Для начала работы необходимо перейти в Телеграм и открыть диалог 
с созданным Вами ботом, а затем набрать команду /start

[INFO] zezl->tools.py->run[498] - "Команда: 'cat < /opt/etc/zezl/zezl.conf | grep 'USER_ID=' | cut -d'=' -f2'"
Traceback (most recent call last):
  File "/opt/apps/zezl/handlers.py", line 25, in get_user_id
    from remote_data import USER_ID
ModuleNotFoundError: No module named 'remote_data'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/apps/zezl/zezl.py", line 13, in <module>
    from handlers import (
  File "/opt/apps/zezl/handlers.py", line 304, in <module>
    admin = Filters.user(get_user_id())
  File "/opt/apps/zezl/handlers.py", line 35, in get_user_id
    user_id = int(out.replace('\n', '')) if is_ok else -1
ValueError: invalid literal for int() with base 10: ''
Collected errors:
 * pkg_run_script: package "zezl" postinst script returned status 1.
 * opkg_configure: zezl.postinst returned 1.

При этом если вручную впишу вручную nano /opt/etc/zezl/zezl.conf свой USER_ID, то скрипт стартует, но ботом может управлять кто угодно. 

Link to comment
Share on other sites

5 минут назад, kilia сказал:

Остановил, удалил, установил заново:
При этом если вручную впишу вручную nano /opt/etc/zezl/zezl.conf свой USER_ID, то скрипт стартует, но ботом может управлять кто угодно. 

Отправил сообщение в "личку".

Link to comment
Share on other sites

26 минут назад, Andrey Che сказал:

Длина  user_id зафиксирована на 9 цифрах, но у меня 8 цифр в ИД. Что  делать?

Доброго дня, сделал от 6 до 10 знаков.

  • Thanks 1
  • Upvote 1
Link to comment
Share on other sites

Запустил повторно установку - теперь завершилась успешно.

Ещё заметил такой нюанс, сразу токен не принимал, пришлось обновить. Разница, кмк была в том, что в старом токене был символ нижнего подчеркивания.

Link to comment
Share on other sites

Доброго дня, 

да именно так, должно вывести список ip.

По всем вопросам работы программы, пожалуйста в «личку». Будет эффективнее и быстрее.

Link to comment
Share on other sites

Приветствую! Спасибо за труды!

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

Edited by Chernikov Ov
  • Upvote 1
Link to comment
Share on other sites

10 минут назад, amcq сказал:

а планируете ли вы в будущем апдейт, позволяющий работу с instagram, facebook и подобным?

А описание прочитать?

В 10.04.2022 в 10:29, Zeleza сказал:

В дальнейших выпусках пакета, скорее всего будет реализован один из вариантов работы через ipset.  

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...