xtrime-ru / TelegramApiServer

Fast, simple, async php telegram api server: MadelineProto + Amp HTTP Server
https://tg.i-c-a.su
MIT License
529 stars 116 forks source link

Поясните, пожалуйста, по русски, как это работает? #148

Closed YAMER1 closed 4 months ago

YAMER1 commented 4 months ago

У меня получилось установить TelegramRSS и при запросе на своём сайте он выдаёт данные канала к примеру /rss/breakingmash. Я делал по инструкции с сайта https://ipbmafia.ru/ips4docs/knowledge-base/ustanovka-na-svoy-server-skripta-telegramrss-import-rss-lenty-iz-publichnogo-telegram-kanalagruppy-r141/

Кроме RSS, мне нужен ещё доступ к сообщениям, как я понял, docker compose run --rm api запускает этот контейнер, просто чтобы он работал и там можно авторизоваться. Что делает php server.php --address=127.0.0.1 --port=9503 --session=xtrime(к примеру) --env=.env.docker ?

При запуске по SSH в Centos 7 я получаю ошибку,

PHP Warning:  PHP Startup: Unable to load dynamic library 'pdo_mysql' (tried: /usr/lib64/php/modules/pdo_mysql (/usr/lib64/php/modules/pdo_mysql: cannot open shared object f             ile: No such file or directory), /usr/lib64/php/modules/pdo_mysql.so (/usr/lib64/php/modules/pdo_mysql.so: undefined symbol: pdo_parse_params)) in Unknown on line 0

Может быть и не надо это запускать пытаться, объясните, пожалуйста. Команды curl http://127.0.0.1:9503/api/getInfo/?id=@xtrime и т.п. также работают.
А вот команда curl http://127.0.0.1:9503/api/getHistory/?data[peer]=@breakingmash выдаёт ошибку, судя по всему жалуется на квадратную скобку. curl: (3) [globbing] error: bad range specification after pos 44

Как я понял, TelegramRSS выдаёт информацию только с внешних источников, так сделано для безопасности наверное, а команды curl http://127.0.0.1:9503 и т.п. для безопасности можно запускать только локально. и эти команды наверное относятся к madelineproto исходника вашей доработки. Или нужно ещё как-то учиться curl запускать внутри docker? Как мне создать файлик php на сайте и добавить туда команду curl?

Объясните, пожалуйста, в чём я не прав и что делать с квадратными скобками, может нельзя использовать curl в чистом виде без http_build_query. Я не супер профи, не кидайте камнями, пжлста.

YAMER1 commented 4 months ago

С квадратными скобками понял, что можно добавить -g (curl -g) и данные будут получены. Повторюсь 2 вопроса, зачем тогда нужен php server.php --address=127.0.0.1 --port=9503 --session=xtrime(к примеру) --env=.env.docker И как на сайте использовать curl, может его как-то можно запустить с docker и добавить на сайт с нормальным доменом.

YAMER1 commented 4 months ago

С квадратными скобками понял, что можно добавить -g (curl -g) и данные будут получены. Повторюсь 2 вопроса, зачем тогда нужен php server.php --address=127.0.0.1 --port=9503 --session=xtrime(к примеру) --env=.env.docker И как на сайте использовать curl, может его как-то можно запустить с docker и добавить на сайт с нормальным доменом.

Один сайт на поддомене rss, как по инструкции, а другой на другом поддомене. На другом поддомене работает curl с локальным запросом curl_init('http://127.0.0.1:9503), а на поддомене rss нет, вроде мне этого достаточно. Может я плохо изъясняюсь. В принципе, вроде всё работает. Тогда зачем нужен php server.php --address=127.0.0.1 --port=9503 --session=xtrime(к примеру) --env=.env.docker...

xtrime-ru commented 4 months ago

php server.php --address=127.0.0.1 --port=9503 --session=session --env=.env.docker запускается внутри контейнера при старте. Отдельно запускать не надо.

По умолчанию запросы к контейнеру возможны только на localhost (127.0.0.1) из соображений безопасности. Для прослушивания всех интерфейсов нужно поправить docker-compose.yml или создать docker-compose.override.yml https://docs.docker.com/compose/multiple-compose-files/merge/

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