diff --git a/README.md b/README.md index 557e396..acf8859 100644 --- a/README.md +++ b/README.md @@ -7,18 +7,24 @@ ## Что он может? -Имеет возможность соединяться с сервером по протоколу xmpp как с шифрованием, так и без. (Пока что) Шифрование -работает по классическим механикам (шифрованный канал связи, без возможности коммуникации в незашифрованном виде), +Имеет возможность соединяться с сервером по протоколу xmpp как с шифрованием, так и без. (Пока что) Шифрование +работает по классическим механикам (шифрованный канал связи, без возможности коммуникации в незашифрованном виде), без поддержки механизма start tls. Что-то в гошке или на стороне сервера при выборе StartTLS не работает. -Имеет возможность заносить пользователей в бан-лист, согласно заданным в чёрном списке правилам. +Имеет возможность заносить пользователей в бан-лист, согласно заданным в чёрном списке правилам: по совпадению с +регулярными выражениями в nick-е или jid-е злодея. Правила можно настроимть как глобально, для всех комнат, где +присутсвует бот, так и для каждой комнаты отдельно. При изменении списка правил бота надо перезапускать. ## Что он не может? * Не может заходить в комнаты, защищённые паролем. * Не умеет разгадывать капчу. +Предполагается, что если на комнату навешен пароль, то такой бот там не нужен, а капча защищает от злодеев на 100%, +иначе её навешивать бесполезно. + ## Как заставить его работать? + Технически, бот собирается гошкой 1.20 под платформу linux. Работоспособность на других платформах не тестировалась. Чтобы получить готовые бинарники, достаточно выполнить команду: @@ -27,16 +33,20 @@ 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. +А автокик - это конечно хорошо, но есть нюанс: можно, например, гадить ником. + ## Как работает бан? Никакой магии, всё по стандарту, согласно [xep-0045](https://xmpp.org/extensions/xep-0045.html#ban). @@ -53,7 +63,7 @@ make affiliation сменится на none, бот заметит presence и, если jid подпадает под правила чёрного списка, то отправит этот jid в бан. -Но, простите, ведь "по правилам", при заходе клиента в комнату ему присылается presence всех участников, чтобы он мог +Но, простите, ведь "по правилам", при заходе клиента в комнату боту присылается presence всех участников, чтобы он мог построить локальный ростер комнаты и начать отслеживать изменения состояния участников конференции. Почему бы в этот момент не банить злодеев? @@ -66,7 +76,7 @@ presence-ов тех, кто находится в комнате на моме ## Как работает белый список? -Белый список - это список jid-ов, которых банить нельзя ни при каких обстоятельствах. В нём всегда неявно присутсвует +Белый список - это список jid-ов, которых банить нельзя ни при каких обстоятельствах. В нём всегда неявно присутствует сам бот. ### Можно ли почистить ban-list?