Update README.md

This commit is contained in:
eleksir
2023-08-20 11:37:22 -07:00
parent ae7d0365e1
commit a0a403b272

View File

@@ -7,18 +7,24 @@
## Что он может? ## Что он может?
Имеет возможность соединяться с сервером по протоколу xmpp как с шифрованием, так и без. (Пока что) Шифрование Имеет возможность соединяться с сервером по протоколу xmpp как с шифрованием, так и без. (Пока что) Шифрование
работает по классическим механикам (шифрованный канал связи, без возможности коммуникации в незашифрованном виде), работает по классическим механикам (шифрованный канал связи, без возможности коммуникации в незашифрованном виде),
без поддержки механизма start tls. Что-то в гошке или на стороне сервера при выборе StartTLS не работает. без поддержки механизма start tls. Что-то в гошке или на стороне сервера при выборе StartTLS не работает.
Имеет возможность заносить пользователей в бан-лист, согласно заданным в чёрном списке правилам. Имеет возможность заносить пользователей в бан-лист, согласно заданным в чёрном списке правилам: по совпадению с
регулярными выражениями в nick-е или jid-е злодея. Правила можно настроимть как глобально, для всех комнат, где
присутсвует бот, так и для каждой комнаты отдельно. При изменении списка правил бота надо перезапускать.
## Что он не может? ## Что он не может?
* Не может заходить в комнаты, защищённые паролем. * Не может заходить в комнаты, защищённые паролем.
* Не умеет разгадывать капчу. * Не умеет разгадывать капчу.
Предполагается, что если на комнату навешен пароль, то такой бот там не нужен, а капча защищает от злодеев на 100%,
иначе её навешивать бесполезно.
## Как заставить его работать? ## Как заставить его работать?
Технически, бот собирается гошкой 1.20 под платформу linux. Работоспособность на других платформах не тестировалась. Технически, бот собирается гошкой 1.20 под платформу linux. Работоспособность на других платформах не тестировалась.
Чтобы получить готовые бинарники, достаточно выполнить команду: Чтобы получить готовые бинарники, достаточно выполнить команду:
@@ -27,16 +33,20 @@
make make
``` ```
в итоге получится бинарник **buny-jabber-bot**, которому нужен конфиг data/config.json для работы. в итоге получится бинарник **buny-jabber-bot**, которому нужен конфиг data/config.json, whitelist.json и blacklist.json
для работы.
А также понадобятся **data/blacklist.json** и **data/whitelist.json**, в которых находятся списки правил, злодеев и В файлах **data/blacklist.json** и **data/whitelist.json** находятся списки злодеев и списки проверенных пользователей.
списки проверенных пользователей.
### Замечание ### Замечание
Очевидным образом в комнате банить может только админ. Поэтому боту придётся выдать админские права. А комнату сделать Очевидным образом в комнате банить может только админ. Поэтому боту придётся выдать админские права. А комнату сделать
не анонимной (то есть, чтобы как минимум админы могли видеть реальный jid, потому что в бан отправляется именно он). не анонимной (то есть, чтобы как минимум админы могли видеть реальный jid, потому что в бан отправляется именно он).
Почему нельзя оставить комнату анонимной? А тут всё просто, в банлист заносится реальный jid пользователя, а не его ник.
Соответственно, бот должен видеть этот самый реальный jid. В анонимной комнате бот не сможет увидеть реальный jid.
А автокик - это конечно хорошо, но есть нюанс: можно, например, гадить ником.
## Как работает бан? ## Как работает бан?
Никакой магии, всё по стандарту, согласно [xep-0045](https://xmpp.org/extensions/xep-0045.html#ban). Никакой магии, всё по стандарту, согласно [xep-0045](https://xmpp.org/extensions/xep-0045.html#ban).
@@ -53,7 +63,7 @@ make
affiliation сменится на none, бот заметит presence и, если jid подпадает под правила чёрного списка, то отправит этот affiliation сменится на none, бот заметит presence и, если jid подпадает под правила чёрного списка, то отправит этот
jid в бан. jid в бан.
Но, простите, ведь "по правилам", при заходе клиента в комнату ему присылается presence всех участников, чтобы он мог Но, простите, ведь "по правилам", при заходе клиента в комнату боту присылается presence всех участников, чтобы он мог
построить локальный ростер комнаты и начать отслеживать изменения состояния участников конференции. Почему бы в этот построить локальный ростер комнаты и начать отслеживать изменения состояния участников конференции. Почему бы в этот
момент не банить злодеев? момент не банить злодеев?
@@ -66,7 +76,7 @@ presence-ов тех, кто находится в комнате на моме
## Как работает белый список? ## Как работает белый список?
Белый список - это список jid-ов, которых банить нельзя ни при каких обстоятельствах. В нём всегда неявно присутсвует Белый список - это список jid-ов, которых банить нельзя ни при каких обстоятельствах. В нём всегда неявно присутствует
сам бот. сам бот.
### Можно ли почистить ban-list? ### Можно ли почистить ban-list?