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

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

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



BADNICK JOIN/CHANGE

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

1

Hi. I'm using this addon that check ON JOIN and ON NICK if nick is included in bnicks.txt.
So if nick is included in the file, so the user receive a kick/ban:

Код:
on !*:JOIN:#CHANNEL:{
  var %idmask $remove($gettok($gettok($address($nick,5),1,64),2,33),~)
  var %x = 1
  while (%x <= $lines($mircdirbnicks.txt)) {
    if ($read(bnicks.txt,%x) iswm %idmask) {
      cs ban $chan +3600 $+(*!*,$v1,*@*) NICK NOT ALLOWED ! | /write $mircdir $+ banemule.txt *Badnick* $date $time $nick ---> $address
    }
    if ($read(bnicks.txt,%x) iswm $nick) {
      cs ban $chan +3600 $+(*,$v1,*!*@*) NICK NOT ALLOWED ! | /write $mircdir $+ banemule.txt *Badnick* $date $time $nick ---> $address
    }
    inc %x
  }
}

on *:NICK:{
  var %i = 1, %badwords = 1
  while (%i <= $comchan($newnick,0)) {
    if ($comchan($newnick,%i) != #eMule-Italian) { break }
    if ($newnick !isop $comchan($newnick,%i)) && ($newnick !ishop $comchan($newnick,%i)) && ($newnick != $me) {
      while (%badwords <= $lines(bnicks.txt)) {
        if ($read(bnicks.txt,%badwords) iswm $newnick) {
          cs ban $chan +3600 $+(*,$v1,*!*@*) NICK NOT ALLOWED !  | /write $mircdir $+ banemule.txt *Badnick* $date $time $newnick ---> $address($newnick,5)
        }
        inc %badwords
      }
    }
    inc %i
  }
}

It already save all the + % @ & ~ users, but because I have some troll users who use to wear a nick that recall ircop/ircap , I'd like to add an exception for them too, because in the channel , they don't have any status (so they looks normal users) , so they receive kick/ban too.
So I think addon should has to check mask.
I plan to make a exceptednick.txt and write allowed nicks/masks.

These are ircop/Ircap part of masks:

*!*@ServicesAdmin.*
*!*@NetAdmin.*
*!*@*.NETNAME.org
*!*@NL.IrcOp.NETNAME.org

Thanks for help

Отредактировано Chandra (26.08.2025 14:14)

2

Ок, попробуйте использовать этот код скрипта:

Код:
on !*:JOIN:#test: check_bnicks $nick $chan
on !*:NICK:{
  var %i 1 | while (%i <= $comchan($newnick,0)) {
    if ($comchan($newnick,%i) != #eMule-Italian) { break }
    if ($newnick !isop $comchan($newnick,%i)) && ($newnick !ishop $comchan($newnick,%i)) {
      check_bnicks $newnick $comchan($newnick,%i)
    }
    inc %i
  }
}

alias -l check_bnicks {
  var %id $remove($ial($1).user,~), %idmask $+(*!,%id,@*), %addr $address($1,5)
  if ($read(bnicks.txt,ntw,%idmask)) || ($read(bnicks.txt,ntw,$+($1,!*))) {
    var %i 1 | while (%i <= $lines(exceptednick.txt)) {
      if ($read(exceptednick.txt,nt,%i) iswm %addr) { return } | inc %i
    }
    cs ban $2 +3600 $+(*!*,%id,*@*) NICK NOT ALLOWED !
    write banemule.txt *Badnick* $date $time $1 ---> $gettok(%addr,2,33)
  }
}
Подпись автора

[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="http://forumstatic.ru/files/000d/c9/8c/34681.jpg"></td><td><a href="http://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 Epic.
Because I'm learning coding, what is the part of code that say "don't kick/ban ircop/ircap"?
Thanks

4

Фрагмент кода на 15,16,17 строках с помощью цикла делает построчную проверку и сравнение каждой маски из файла с полным адресом пользователя для исключения:

Код:
var %i 1 | while (%i <= $lines(exceptednick.txt)) {
  if ($read(exceptednick.txt,nt,%i) iswm %addr) { return } | inc %i
}

Если одна из масок в файле будет соответствовать адресу пользователя, то команда "return" выполнит пустой возврат и завершит чтение алиаса на данной строке кода.

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

[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="http://forumstatic.ru/files/000d/c9/8c/34681.jpg"></td><td><a href="http://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]

5

Yes sorry. I was writing I found it.
Sorry and thanks again, I'm going to test it

6

1637,2 написал(а):

Ok, try using this script code:

It doesn't work. No ban , no error in status.

I tried to exclude

Код:
    ; var %i 1 | while (%i <= $lines(exceptednick.txt)) {
      ; if ($read(exceptednick.txt,nt,%i) iswm %addr) { return } | inc %i
   ;   }

Maybe something wrong here but no success.
I tried the old one (just to exclude everything) and it works.

7

1641,387 написал(а):

It doesn't work. No ban , no error in status.

При моём тестировании код работает исправно, за исключением того, что мне пришлось закомментировать/отключить строку [c];if ($comchan($newnick,%i) != #eMule-Italian) { break }[/c], так как я не нахожусь в вашей сети на данном канале, но я оставил эту строку в оригинальном виде для вашего тестирования, поскольку она присутствует в предоставленном вами коде. Хотя, на самом деле это условие может работать не корректно при такой конфигурации кода.

[indent=0.8,0.5] 
Для успешного тестирования оставьте больше информации:

  • Напишите пример полного адреса "nick!ident@host" одного или нескольких пользователей, которые должны быть проверены.

  • Напишите пример списка из 3-5 строк с масками адресов в файле "bnicks.txt" для бана.

  • Напишите пример списка из 3-5 строк с масками адресов в файле "exceptednick.txt" для исключения.

  • Вы уверены, что строка [c]if ($comchan($newnick,%i) != #eMule-Italian) { break }[/c] должна присутствовать в коде?

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

[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="http://forumstatic.ru/files/000d/c9/8c/34681.jpg"></td><td><a href="http://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]

8

Write an example of the full address "nick!ident@host" of one or more users that should be verified.

[c]fiorenza!olivia@D347104.FF8BDDED.59FCA970.IP[/c] - this is actually my mask, this nick is in "bnick.txt" but I can join
[c]evan!10403831AB@C7F62F71.1AC3F9D3.B4285296[/c] - this is a normal mask with allowed nick
[c]LaIndiA[away]!LaIndiA@eMule-Italian.MindForge.org[/c] - this is an operator: so if someone join with "LaIndiA74" , it must be kicked aside if is the real "LaIndiA"

Write an example of a list of 3-5 lines with address masks in the file "bnicks.txt" for ban.

In "bnick.txt" I add not allowed nicks, not address. Only some nicks are not allowed, not address:
[flist width=100]troi*
vagin*
vergin*
voglios*
*outub*
fiorenza[/flist]

Write an example list of 3-5 lines with address masks in the file "exceptednick.txt" for exclusion.
[flist width=270]*!*@eMule-Italian.MindForge.org
*!*@ServicesAdmin.MindForge.org
*!*@NetAdmin.MindForge.org
*!*@NL.IrcOp.MindForge.org
*!*@MF-Helpers.MindForge.org[/flist]

Are you sure the line "if ($comchan($newnick,%i) != #eMule-Italian) { break }" should be in the code?

- No, I'm not sure but it works in starting version (the one I posted at the beginning)

[indent=0.8,0.5]
Example:
1 - nick "paperino" is an ircop and has mask [c]paperino!papero@ServicesAdmin.MindForge.org[/c]
2 - an user join with nick "paperino75". But is not allowed because is kinda ircop nick. So he must receive kick/ban.
3 - so in "bnicks.txt" I add *paperin* and in "exceptednick.txt" I add *!*@ServicesAdmin.MindForge.org . So only user with host [c]ServicesAdmin.MindForge.org[/c] will be allowed to use that nick.

Отредактировано Chandra (27.08.2025 19:19)

9

Ок, я внёс необходимые изменения в код, чтобы он работал в соответствии с вашими запросами, согласно описанию с приведёнными примерами.

Попробуйте использовать этот код скрипта:

Код:
on !*:JOIN:#test: check_bnicks $nick $chan
on !*:NICK:{
  var %i 1 | while (%i <= $comchan($newnick,0)) {
    if ($comchan($newnick,%i) == #test) {
      check_bnicks $newnick $comchan($newnick,%i) | break
    }
    inc %i
  }
}

alias -l check_bnicks {
  var %x 1, %i 1, %ident $remove($ial($1).user,~), %addr $address($1,5)
  if ($1 isop $2) || ($1 ishop $2) { return }
  while (%x <= $lines(exceptednick.txt)) {
    if ($read(exceptednick.txt,nt,%x) iswm %addr) { return } | inc %x
  }
  while (%i <= $lines(bnicks.txt)) {
    if ($read(bnicks.txt,nt,%i) iswm %ident) {
      echo $2 * Ban of ident by mask:04 $v1
      cs ban $2 +3600 $+(*!*,%ident,*@*) IDENT NOT ALLOWED !
      write banemule.txt *Bad-Ident* $date $time $1 ---> $gettok(%addr,2,33)
    }
    if ($read(bnicks.txt,nt,%i) iswm $1) {
      echo $2 * Ban of nick by mask:04 $v1
      cs ban $2 +3600 $+(*,$1,*!*@*) NICK NOT ALLOWED !
      write banemule.txt *Bad-Nick* $date $time $1 ---> $gettok(%addr,2,33)
    }
    inc %i
  }
}

[indent=0.8,0.5]
Примечание: Измените указанное название канала "#test" в 1 и 4 строке кода на ваше собственное название канала.
Если у вас несколько каналов, на которых должен работать скрипт, то измените и используйте эту часть кода по своему усмотрению:

Код:
on !*:JOIN:#channel,#channel2,#channel3: check_bnicks $nick $chan
on !*:NICK:{
  var %i 1 | while (%i <= $comchan($newnick,0)) {
    if ($istok(#channel #channel2 #channel3,$comchan($newnick,%i),32)) {
      check_bnicks $newnick $comchan($newnick,%i)
    }
    inc %i
  }
}
Подпись автора

[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="http://forumstatic.ru/files/000d/c9/8c/34681.jpg"></td><td><a href="http://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]

10

This is great, perfectly working Epic    Really thanks again

11

Обновление скрипта с расширением/внедрением нового функционала, после запроса и обсуждения в другой теме форума.

[indent=0.8,0.5]
Настройка и управление производится с помощью отдельных алиасов со следующими названиями:

  • list_channels - возвращает через запятую список каналов, на которых должна проводиться проверка ников пользователей, при входе или изменении ника.

  • min_letters - возвращает минимальное допустимое число букв в нике пользователя, меньше которого будет отправлено предупреждение, а после будет выполнен "Kick". При проверке не учитываются и вырезаются из ника следующие символы:  [c]0123456789_-`^|\[]{}[/c]

  • percent_caps - возвращает число процентов допустимого объёма больших букв в нике пользователя, выше которого будет отправлено предупреждение, а после будет выполнен "Kick".

  • badnick_file - возвращает путь к файлу со списком масок запрещённых ников и идентификаторов, при использовании которых пользователь получит "Kick+Ban".

  • excnick_file - возвращает путь к файлу со списком масок адресов пользователей, которые должны быть исключены из проверки.

  • log_file - возвращает путь к файлу для записи логов с пользовательскими данными, которые использовали плохие/неправильные ники и получили "Ban".

  • delay_warn - возвращает количество времени в секундах, через которое должно быть отправлено уведомление с предупреждением пользователя о плохом/неправильном нике.

  • delay_kick - возвращает количество времени в секундах, через которое должен быть выполнен "Kick", если пользователь не успеет изменить свой плохой/неправильный ник.

  • time_ban - возвращает количество времени в секундах, на которое должен быть установлен "Ban", если ник/идент пользователя был найден в списке масок "badnick_file".

[indent=0.8,0.5]
Итак, попробуйте протестировать этот код скрипта:

Код:
on !*:JOIN:$($list_channels): check_badnick $nick $chan
on !*:NICK:{
  var %i 1, %nick $newnick
  while (%i <= $comchan(%nick,0)) {
    var %chan $comchan(%nick,%i)
    if ($istok($list_channels,%chan,44)) { check_badnick %nick %chan }
    inc %i
  }
}

alias -l check_badnick {
  if ($nick($2,$1,~&@%+)) { return } | var %host $ial($1).host
  ;--------------------
  if ($timer($+(BNWARN,%host))) { $+(.timerBNWARN,%host) off }
  if ($timer($+(BNKICK,%host,$2))) { $+(.timerBNKICK,%host,$2) off }
  ;-----
  if (MindUser* iswm $1) { warn_user MindUser %host $1- | return }
  if ($len($remove_chars($1)) < $min_letters) { warn_user ShortLength %host $1- | return }
  if ($count_caps($1) > $percent_caps) { warn_user CapsLock %host $1- | return }
  ;--------------------
  var %x 1, %i 1, %ident $remove($ial($1).user,~), %addr $ial($1).addr
  while (%x <= $lines($excnick_file)) {
    if ($read($excnick_file,nt,%x) iswm %addr) { return } | inc %x
  }
  while (%i <= $lines($badnick_file)) {
    if ($read($badnick_file,nt,%i) iswm %ident) {
      echo $2 * Ban of ident by mask:04 $v1
      cs ban $2 $+(+,$time_ban) $+(*!*,%ident,*@*) IDENT NOT ALLOWED !
      if (!$read($log_file,ntw,*Bad-Ident* $date $time $1 * %addr)) {
        write $log_file *Bad-Ident* $date $time $1 ---> %addr
      }
    }
    if ($read($badnick_file,nt,%i) iswm $1) {
      echo $2 * Ban of nick by mask:04 $v1
      cs ban $2 $+(+,$time_ban) $+(*,$1,*!*@*) NICK NOT ALLOWED !
      if (!$read($log_file,ntw,*Bad-Nick* $date $time $1 * %addr)) {
        write $log_file *Bad-Nick* $date $time $1 ---> %addr
      }
    }
    inc %i
  }
}
alias -l remove_chars { return $remove($1,0,1,2,3,4,5,6,7,8,9,_,-,`,^,|,\,[,],$chr(123),$chr(125)) }
alias -l count_caps { return $round($calc($regex($1,/[A-Z]/g) * 100 / $len($1)),1) }
alias -l warn_user {
  var %ntext 04Warning:05 Please change nick, reason: $+(",$1,") otherwise, be kicked/banned in 30 sec.
  if (!$timer($+(BNWARN,$2))) { $+(.timerBNWARN,$2) 1 $delay_warn .notice $unsafe($3 %ntext) }
  if (!$timer($+(BNKICK,$2,$4))) { $+(.timerBNKICK,$2,$4) 1 $delay_kick kick_user $unsafe($1-) }
}
alias -l kick_user {
  kick $4 $3 Reason: $1 | var %addr $ial($3).addr
  if (!$read($log_file,ntw,$+(*,$1,*) $date $time $3 * %addr)) {
    write $log_file $+(*,$1,*) $date $time $3 ---> %addr
  }
}

alias -l list_channels { return #channel,#channel2,#channel3 }
alias -l min_letters { return 3 }
alias -l percent_caps { return 40 }
alias -l badnick_file { return bnicks.txt }
alias -l excnick_file { return exceptednick.txt }
alias -l log_file { return banemule.txt }
alias -l delay_warn { return 2 }
alias -l delay_kick { return 30 }
alias -l time_ban { return 3600 }

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

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

[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="http://forumstatic.ru/files/000d/c9/8c/34681.jpg"></td><td><a href="http://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]

12

I tested it:
https://upforme.ru/uploads/000d/c9/8c/387/570691.png

That's amazing Epic !!!

[indent=0.8,0.5]
Now I try to edit all warn and reasons in italian :-P

[c]  if (MindUser* iswm $1) { warn_user MindUser %host $1- | return } [/c]
or
[c]  if ($len($remove_chars($1)) < $min_letters) { warn_user ShortLength %host $1- | return } [/c]
or
[c]  if ($count_caps($1) > $percent_caps) { warn_user CapsLock %host $1- | return } [/c]

Sometimes my users on channel are not so genius, so I need to add something like: MindUser***** nick not allowed or Lenght Min 3 Letters or Caps Letter Max 40%

Stay tuned 

Отредактировано Chandra (29.09.2025 15:21)

13

Вау! Мне нравится эта тест-таблица! :-)

[indent=0.8,0.5]

1678,387 написал(а):

I need to add something like: MindUser***** nick not allowed or Lenght Min 3 Letters or Caps Letter Max 40%

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

  • [c]if (MindUser* iswm $1) { warn_user MindUser %host $1- | return }[/c]

  • [c]if ($len($remove_chars($1)) < $min_letters) { warn_user ShortLength %host $1- | return }[/c]

  • [c]if ($count_caps($1) > $percent_caps) { warn_user CapsLock %host $1- | return }[/c]

- т.к. эти слова являются параметрами/аргументами команды "warn_user", и в зависимости от выполненного условия одно из этих слов будет передано в алиас "warn_user" в качестве первого параметра, который внутри тела алиаса будет являться идентификатором $1, а его значением будет одно из этих трёх слов.

Исходя из этого, вы можете создать/добавить внутри этого алиаса три условия для проверки значения первого входящего параметра $1, и в зависимости от того, какое слово будет содержать этот параметр, такой текст для сообщения с предупреждением будет сохранён в переменной %ntext, которая, в свою очередь, будет использоваться вместе с командой "notice".

Например, это можно сделать так:

Код:
alias -l warn_user {
  if ($1 == MindUser) { var %reason MindUser***** nick not allowed }
  if ($1 == ShortLength) { var %reason Lenght Min 3 Letters }
  if ($1 == CapsLock) { var %reason Caps Letter Max 40% }
  var %ntext 04Warning:05 Please change nick, reason:04 %reason 05- otherwise, be kicked/banned in 30 sec.
  if (!$timer($+(BNWARN,$2))) { $+(.timerBNWARN,$2) 1 $delay_warn .notice $unsafe($3 %ntext) }
  if (!$timer($+(BNKICK,$2,$4))) { $+(.timerBNKICK,$2,$4) 1 $delay_kick kick_user $unsafe($1-4 %reason) }
}
alias -l kick_user {
  kick $4 $3 Reason: $5- | var %addr $ial($3).addr
  if (!$read($log_file,ntw,$+(*,$1,*) $date $time $3 * %addr)) {
    write $log_file $+(*,$1,*) $date $time $3 ---> %addr
  }
}
Подпись автора

[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="http://forumstatic.ru/files/000d/c9/8c/34681.jpg"></td><td><a href="http://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]

14

I just founded a problem:
https://upforme.ru/uploads/000d/c9/8c/387/317185.png

[Maestro] is chan bot. And `Chandra it's me. This happen in the channel I'm founder #`Chandra_Area51

There're no further message in status:
https://upforme.ru/uploads/000d/c9/8c/387/838373.png

If I join the channel with another mIRC as normal user , everything perfectly work.

And that's weird because I set all the reasons for ban, and ban come from chanbot [Maestro] and not from the script with addon loaded...

Of course if I unload script and rejoin, nothing happen and all is fine...


UPDATE 1

I found the issue.

* Ban of nick by mask: *Ch?ndr?*  (I didn't noticed because mIRC doesn't show notice not even in status)

Because there're idiot users who use to wear nick similar as mine (i.e.: Chondra, Ch4ndr4), so I added *Ch?ndr?* as badnick in bnicks.txt and I added `Chandra in exceptednick.txt.

So the issue is in *Ch?ndr?*. But it shoudn't has to ban me because I'm FOUNDER and OP of course.

Stay tuned


UPDATE 2

Maybe something like this miss on badnick check? [c]if ($1 isop $2) || ($1 ishop $2) { return }[/c]

Отредактировано Chandra (30.09.2025 17:54)

15

1680,387 написал(а):

Ban of nick by mask: *Ch?ndr?* ... I added *Ch?ndr?* as badnick in bnicks.txt and I added `Chandra in exceptednick.txt

Это работает правильно, потому что ваш ник соответствует маске [c=red]*Ch?ndr?*[/c] в файле "bnicks.txt", а для корректного исключения, в файле "exceptednick.txt" необходимо использовать маску с подстановочными знаками в виде полного адреса, например: [c]`Chandra!*@*[/c]. Но в вашем случае, я бы рекомендовал использовать идент вместе с неизменяемой частью (подсетью) вашего хоста, например: [c]*!chandra@12.34.*[/c] или [c]*!chandra@half.your.vhost.*[/c]. Если ваш провайдер предоставляет несколько разных динамических IP адресов, то добавьте несколько вариаций записей для исключения, с неизменной частью вашего хоста, в связке вместе с вашим постоянным идентом, или без него.
[indent=0.8,0.5]

1680,387 написал(а):

ban come from chanbot [Maestro] and not from the script with addon loaded...

Это потому, что скрипт использует команду: [c]cs ban $2 $+(+,$time_ban) $+(*,$1,*!*@*) NICK NOT ALLOWED ![/c] - команда [c]cs[/c] это сокращение от [c]msg ChanServ[/c], поэтому бан будет установлен с помощью сервисного бота, который находится на канале, и если я правильно понимаю, его ник [Maestro].
[indent=0.8,0.5]

1680,387 написал(а):

But it shoudn't has to ban me because I'm FOUNDER and OP of course.

Видимо статус оператора/владельца канала [c]@ ~[/c] назначается с некоторой задержкой, а скрипт реагирует моментально на событие [c]ON JOIN[/c] и сразу делает проверку.
Наверное стоит добавить в код таймер с задержкой для данного события, чтобы немного отсрочить запуск проверки входящих пользователей канала.
[indent=0.8,0.5]

1680,387 написал(а):

Maybe something like this miss on badnick check? if ($1 isop $2) || ($1 ishop $2) { return }

В коде уже есть такая проверка с перечислением всех возможных пользовательских префиксов канала: [c]if ($nick($2,$1,~&@%+)) { return }[/c]

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

[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="http://forumstatic.ru/files/000d/c9/8c/34681.jpg"></td><td><a href="http://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]

16

On exceptednick.txt I added my whole mask `Chandra!chandra@MY_VHOST

`Chandra = I always use this nick
chandra = Is real name set on mIRC so I never change it
MY_VHOST = I have Vhost and it never change

But still I got banned, and i noticed that no kick command...

[17:56:38] * Maestro sets mode: +qo `Chandra `Chandra  <--- (as I join)
[17:56:38] * Maestro sets mode: +b *!*chandra*@*
[17:56:38] * This *!*chandra*@* ban affects: ~@`Chandra
[17:56:38] * Maestro sets mode: +b *`Chandra*!*@*
[17:56:38] * This *`Chandra*!*@* ban affects: ~@`Chandra

Отредактировано Chandra (30.09.2025 19:13)

17

1682,387 написал(а):

chandra = Is real name set on mIRC so I never change it

В адресе пользователя [c]nick!ident@host[/c] не может быть реального имени, оно отображается отдельно от адреса, т.е. [c]ident != realname[/c]
Вы можете увидеть реальное имя рядом с адресом, если введёте команду: [c]/whois nick [/c]
[indent=0.8,0.5]

1682,387 написал(а):

On exceptednick.txt I added my whole mask `Chandra!chandra@MY_VHOST ... But still I got banned

В коде в строке 23 есть условие: [c]if ($read($excnick_file,nt,%x) iswm %addr)[/c] которое отвечает за проверку/сравнение записанной маски в файле "exceptednick.txt" с адресом пользователя. Оператор сравнения [c]iswm[/c] работает корректно только, когда первый/левый операнд представлен в виде маски с подстановочными знаками, например: [c]if (*address*mask* iswm %addr)[/c].

-  1. Попробуйте изменить это условие на такое: [c]if ($+($read($excnick_file,nt,%x),*) iswm $address($1,5))[/c]

[indent=0.8,0.5]
Кроме того, судя по вашему запросу, в качестве исключения предполагалось использовать только постоянный Host или Vhost в виде маски *!*@Host или *!*@Vhost.

-  2. Попробуйте добавить в файл "exceptednick.txt" на выбор следующие строки:
[flist width=350]*!chandra@your.vhost
*!chandra@half.your.vhost.*
*!*@your.vhost
[/flist]

[indent=0.8,0.5]
Если это не поможет, то придётся внести дополнительные изменения в код, для решения данной проблемы.

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

[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="http://forumstatic.ru/files/000d/c9/8c/34681.jpg"></td><td><a href="http://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]

18

Is not a big issue. i'll ban manually ;-)

19

1683,2 написал(а):

- 1. Try changing this condition to this: if ($+($read($excnick_file,nt,%x),*) iswm $address($1,5))

  [c]if ($+($read($excnick_file,nt,%x),*) iswm $address($1,5))[/c]

This is what I did:

Код:
    ;  if ($read($excnick_file,nt,%x) iswm %addr) { return } | inc %x  <--- ORIGINAL LINE 23
       if ($+($read($excnick_file,nt,%x),*) iswm $address($1,5))         <--- EDIT LINE 24 

Error in status:

[15:52:25] * /if: insufficient parameters (line 24, 2caps_short_mind_EPIC.mrc)

20

Изменить нужно было только условие, которое состоит из [c]if ( ... )[/c] , а не всю строку целиком.

[indent=0.8,0.5]
Я выделю красным цветом часть строки, которую необходимо заменить на другую часть строки, выделенную синим цветом:

[indent=0.8,0.5] Замените это: [c]if ($read($excnick_file,nt,%x) iswm %addr) { return } | inc %x[/c]

[indent=0.8,0.5] На эту часть: [c]if ($+($read($excnick_file,nt,%x),*) iswm $address($1,5)) { return } | inc %x[/c]

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

[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="http://forumstatic.ru/files/000d/c9/8c/34681.jpg"></td><td><a href="http://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]

Быстрый ответ

Напишите ваше сообщение и нажмите «Отправить»