EpicNet.Ru - Форум IRC Чата

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Add bad ident to code

Сообщений 1 страница 3 из 3

1

I have an idea for the code from this post: https://forum.epicnet.ru/viewtopic.php?id=967#p1266

Код:
#####################################################################
#  Название: Bad User v1.0
#  Автор: Epic (http://epicnet.ru, irc.epicnet.ru:6667 #Code)
#  Описание: По команде выполняет Кик+Бан и записывает Ник+Хост нарушителя в базу данных для дальнейшей проверки.
#  Команда: /bu <nick> [reason]
#####################################################################

alias bu_set {
  %bu_path = scripts\BadUser\baduser.txt
  %bu_reason = You are banned!
}
---------------------------------------------------------------------
on *:JOIN:#:{
  bu_set | var %bu_jhost $gettok($address($nick,5),2,64)
  if ($read(%bu_path, -w, $+($nick,;,*))) || ($read(%bu_path, -w, $+(*,;,%bu_jhost,;,*))) {
    var %bu_bdreason $gettok($read(%bu_path,$readn),3,59)
    .ban $chan $nick 2 | .kick $chan $nick %bu_bdreason
  }
}
alias bu {
  if (!$1) { .echo -a Insufficient parameters. | halt }
  bu_set | var %bu_host $gettok($address($1,5),2,64)
  if ($2) var %bu_reason1 $2- | else var %bu_reason1 %bu_reason
  .ban $chan $1 2 | .kick $chan $1 %bu_reason1
  .write -i %bu_path $+($1,$chr(59),%bu_host,$chr(59),%bu_reason1)
}

I like the details you leave at the exits of each ban or kick, but I would like you to add badident one more than anything.

Let’s say a bad user join to the channel with the following data: "dog (badtroll@189.176.82.44)"

Then, when saving this data, the line in the database will look like this: [mark=blue]dog;189.176.82.44;You are banned![/mark]

Is it possible to add bad ident ?

So that after saving to the database the line looks like this: [mark=blue][ID:UK71925];dog;badtroll;*!*@189.176.82.*;#NuKe;💀 Bye! You are not welcome here[/mark]

---------------------------

Have a nice day or night.

2

Ваш вопрос с приведённым примером содержит в себе сразу несколько запросов, при реализации которых изменится структура БД. Так как на данный момент этот скрипт сохраняет в БД строки, которые содержат 3 токена с данными, разделённые символом ";" [mark=red]Nickname;Host;Reason[/mark], а вы предлагаете, чтобы после изменения скрипт сохранял в каждой строке 6 токенов [mark=red][ID:XX12345];Nickname;Ident;Host;#Channel;Reason[/mark]. В этом случае нарушится обратная совместимость со структурой записей в ранее используемом файле БД, потому что скрипт больше не сможет производить правильный поиск, что повлечёт за собой необходимость внести изменения в каждую строку уже существующего файла БД, либо придётся всё удалить и создать новый файл.

Тем не менее, реализация вашего запроса сделает этот скрипт более совершенным и расширит его возможности по поиску и проверке "плохих" пользователей канала.
Поэтому я всё-таки принял решение переписать этот код с целью обновления и улучшения его функциональности. Новая версия скрипта была протестирована на mIRC v7.75.

Итак, вы можете попробовать использовать этот код скрипта:

Код:
;#####################################################################
;#  Name: Bad User v1.1
;#  Author: Epic (http://epicnet.ru, irc.epicnet.ru:6667 #Code)
;#  Description: When you enter a command inside the client where the script is installed, a “Kick+Ban” is performed for the specified user nickname, and his user data is written to the database for further checked and set a re-ban, if he tries joined to the channel again.
;#  Command: /bu <nick> [reason]
;#####################################################################

on @*:JOIN:#:{
  if ($check_db($nick)) {
    var %return $v1, %id_ban $gettok(%return,1,59), %reason $gettok(%return,6,59)
    ban $+(-u,$ban_timer) $chan $nick 2 | kick $chan $nick %id_ban %reason
  }
}
alias bu {
  if ($active !ischan) { echo -a 05This command can only be used in a channel window. | return }
  if ($me !isop $chan) { echo -a 05To execute I need to set the channel12 $chan 05operator status @ OP. | return }
  if (!$1) { echo -a 05Syntax:12 /bu <nick> [reason] | return }
  if ($1 !ison $chan) { echo -a 05There is no nickname12 $1 05on the $chan channel. | return }
  var %ident $ial($1).user, %host $+(*!*@,$gettok($ial($1).host,1-3,46),.*), %id_ban $id_rand
  if ($2) var %reason $2- | else var %reason $kick_reason
  ban $+(-u,$ban_timer) $chan $1 2 | kick $chan $1 %id_ban %reason
  if (!$check_db($1)) write -i $file_db $+(%id_ban,;,$1,;,%ident,;,%host,;,$chan,;,%reason)
}
;---------------------------------------------------------------------
alias -l file_db { return scripts\BadUser\badusers_db.txt }
alias -l id_rand { return $+([ID:,$rand(A,Z),$rand(A,Z),$rand(10000,99999),]) }
alias -l ban_timer { return $rand(1800,3600) }
alias -l kick_reason { return 💀 Bye! You are not welcome here. }
;---------------------------------------------------------------------
alias -l check_db {
  var %ident $ial($1).user, %host $ial($1).host
  var %host1 $+(*!*@,%host), %host2 $+(*!*@,$gettok(%host,1-3,46),.*)
  var %host3 $+(*!*@,$gettok(%host,1-2,46),.*), %host4 $+(*!*@,$gettok(%host,1,46),.*)
  if ($read($file_db,ntw,$+(*;,$1,;*;*;*;*))) return $v1
  if ($read($file_db,ntw,$+(*;*;,%ident,;*;*;*))) return $v1
  if ($read($file_db,ntw,$+(*;*;*;,%host1,;*;*))) return $v1
  if ($read($file_db,ntw,$+(*;*;*;,%host2,;*;*))) return $v1
  if ($read($file_db,ntw,$+(*;*;*;,%host3,;*;*))) return $v1
  if ($read($file_db,ntw,$+(*;*;*;,%host4,;*;*))) return $v1
}

Настройка скрипта производится через отдельные алиасы в коде:

  • Алиас "file_db" возвращает путь к файлу с базой данных пользователей, на которых был установлен Бан.

  • Алиас "id_rand" возвращает сгенерированную метку-идентификатор в виде "[ID:XX12345]" для идентификации установленного Бана и отображения в Кик сообщении.

  • Алиас "ban_timer" возвращает случайно сгенерированное числовое значение в секундах для установки времени таймера Бана, по истечении которого запрет будет снят.

  • Алиас "kick_reason" возвращает текстовое сообщение, которое будет отображаться при выполнении Кика (если вы не указали в команде свой текст).

Файл "badusers_db.txt" с БД теперь должен содержать такую структуру данных, с подобными строками, которые вы также сможете редактировать в ручную:
[flist=black][ID:AW30284];masha;orbita55;*!*@94.109.37.182;#test;💀 Bye! You are not welcome here.
[ID:HE92128];user;testing;*!*@102.85.*;#test;💀 Bye! You are not welcome here.
[ID:FA80151];troll;supertroll;*!*@23.54.39.*;#test;💀 Bye! You are not welcome here.[/flist]

[indent=0.8,0.5]
P.S. Что-то подобное с такой же структурой данных ранее уже запрашивал Robert, и ваш вопрос в некотором роде повторяет его некоторые предыдущие запросы. Только к сожалению я не могу вспомнить, где именно эти вопросы обсуждались и где были опубликованы готовые скрипты. Поэтому попробуйте самостоятельно поискать все его посты на разных форумах или свяжитесь с ним лично, т.к. возможно вы найдёте для себя что-то полезное из созданных и опубликованных для него ранее mIRC скриптов.

Убедительная просьба - Не нужно дублировать старые темы форума, создавая и открывая новую тему (ветку) с вопросом по скрипту, который уже ранее был опубликован и обсуждался в другой теме (ветке) форума, т.к. это может создать путаницу для читателей, которые будут также искать ответы на свои вопросы по той же теме. Поэтому, пожалуйста, оставляйте свои вопросы в той же теме (ветке) форума, где вы нашли скрипт, по которому у вас возникли вопросы и если вы хотите сделать запрос на его изменение/исправление/обновление.

Подпись автора

[html]<style>img {vertical-align:middle;}.hnet{color:#FFFFFF;}.hstar{color:#DE0000;}.htext{font-family:Verdana;font-size:13px;color:#6E1E00;}.heading{font-family:Verdana;font-size:13px;font-weight:bold;background-color:#4897E7;}.stitle{font-family:Verdana;font-size:12px;}.dot{color:#808000;}.desc{color:#ADADAD;}a .curl{font-family:Verdana;font-size:13px;color:#3A92CD;}</style><table><tr><td width="20px" height="20px"><img src="https://forumstatic.ru/files/000d/c9/8c/34681.jpg"></td><td><a href="https://forum.epicnet.ru/viewtopic.php?id=234"><span class="heading"> <span class="hstar">★</span> <span class="hnet">EpicNet.Ru</span> <span class="hstar">★</span> </span><span class="htext"> - IRC Чат © 2008</span></a></td></tr><tr><td></td><td><div class="stitle"><span class="dot">•</span> <span class="desc">Вход через вебгейт:</span> <a href="http://irc.epicnet.ru"><span class="curl">http://irc.epicnet.ru</span></a><br><span class="dot">•</span> <span class="desc">Сервер:</span> irc.epicnet.ru <span class="desc">Порты:</span> 6667, 6668 (ssl)<br><div></td></tr></table>[/html]

3

Thanks bro!

I'm trying it on AdiIRC and your codes work fine.