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

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

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



BADNICK JOIN/CHANGE

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

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="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 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="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]

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="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]

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)

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 (Вчера 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:#channel1,#channel2,#channel3: check_bnicks $nick $chan
on !*:NICK:{
  var %i 1 | while (%i <= $comchan($newnick,0)) {
    if ($istok(#channel1 #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="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]

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

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