Kanały - zarządzanie
- 1. MODE
- 2. KICK
- 3. TOPIC
- 4. Banowanie
- 5. Uprawnienia
- 6. Zaawansowane typy banów
- 7. Ochrona przed floodem
MODE ¶
Służy do zmiany parametrów kanału - ochrony, tematu, hasła oraz do nadawania/zabierania uprawnień użytkownikom.
Składnia polecenia wygląda następująco: /MODE <cel> [+/-]tryb, gdzie tryb to litera konkretnego ustawienia, a plus lub minus określa, czy ustawienie ma być włączone, czy wyłączone. W tym przypadku celem jest nasz kanał.
Lista możliwych trybów kanału:
| znak | opis |
| v <nick> | Głos - użytkownik z +v może mówić, gdy na kanale ustawiony jest tryb +m |
| h <nick> | Halfop - operator z ograniczonymi uprawnieniami |
| o <nick> | Operator kanału |
| a <nick> | Kick-protect - użytkownik z tym trybem nie może zostać kopnięty |
| q <nick> | Owner - właściciel kanału, posiada najwyższe uprawnienia |
| b <nick!ident@host> | Banuje użytkownika. Nasza sieć pozwala na dodatkowe typy banów. Aby dowiedzieć się więcej, przejdź do sekcji zaawansowane typy banów. |
| c | Blokuje kolory mIRC na kanale |
| e <nick!ident@host> | Użytkownik pasujący do tej maski nie podlega banom |
| I <nick!ident@host> | Użytkownik pasujący do tej maski nie podlega invite |
| f <ustawienia> | Wbudowane w serwer zabezpieczenia przed floodem. Przejdź do sekcji ochrona przed floodem aby dowiedzieć się więcej. |
| i | Użytkownik musi być zaproszony aby móc dołączyć |
| j joins:sec | Filtruje ilość wejść na kanał na osobe |
| k <klucz> | Użytkownicy muszą podać hasło aby wejść na kanał |
| l <limit> | Limit osób, które mogą naraz przebywać na kanale |
| m | Moderowany kanał - Tylko +vhoaq mogą mówić |
| n | Ludzie spoza kanału nie mogą na niego pisać |
| p | Kanał prywatny |
| r | Zarejestrowany kanał (tylko serwisy mogą ustawić ten tryb) |
| s | Ukryty kanał |
| t | Topiclock - tylko +hoaq mogą zmieniać temat |
| z | Tylko użytkownicy korzystający z bezpiecznego połączenia SSL mogą wejść na kanał |
| C | Nie wolno wysyłać CTCP na kanał |
| G | Filtruje wylgaryzmy |
| M | Użytkownik musi mieć zarejestrowany nick lub mieć +v aby móc pisać |
| N | Nie wolno zmieniać nicka przebywając na kanale z tym trybem |
| K | /KNOCK zablokowane |
| L <chan2> | Jeśli kanał jest pełny, użytkownik zostanie przekierowany do podanego kanału. |
| Q | Blokuje KICK |
| R | Tylko zarejestrowani użytkownicy mogą dołączyć do kanału |
| S | Zmienia kolory mIRC na normalny tekst |
| T | NOTICE zabroniony na kanale |
| V | /INVITE zabroniony |
| u | Audytorium - lista użytkowników pokazuje tylko operatorów kanału |
Wielkość liter ma znaczenie.
KICK ¶
Zarówno syntax, jak i przeznaczenie tej komendy jest dość proste. /kick #kanał nick [powód] (albo w niektórych klientach, po prostu /kick nick) zwyczajnie wyrzuca użytkownika z kanału. Z wiadomych przyczyn, aby użyć tej komendy musimy posiadać na kanale przynajmniej uprawnienia half-opa.
TOPIC ¶
Polecenie TOPIC zmienia temat na kanale na ten, podany w argumencie. Składnia jest wyjątkowo prosta: /topic #kanał nowytemat (albo po prostu /topic nowytemat).
Banowanie ¶
Ten fragment dokumentu nie będzie miał charakteru dokumentacji - będzie poradnikiem, który wyjaśnia jak powinno się banować użytkowników na naszym kanale.
Aby skutecznie banować powinniśmy rozróżniać takie pojęcia jak nick, ident i host. Wyjaśnijmy je na przykładzie. Użytkownicy "futrzak" i "futrzakowa" wchodzą na kanał #main:
*** futrzak [s@tty1.tk] has joined #main
*** futrzakowa [~admin@127.0.0.1] has joined #main
W powyższym komunikacie otrzymujemy informacje o nicku użytkownika który wszedł, jego idencie i hoście.
- nick to "ksywka" którą przybrał użytkownik
- ident to nazwa użytkownika, którą komputer z którego użytkownik się połączył wysłał do serwera
- host to adres z którego łączy się użytkownik.
Ident i host będą kluczowe przy banowaniu. Zacznijmy od identa: pierwszy użytkownik ma identa "s", a drugi "~admin". znak tyldy (~) oznacza, że na komputerze nie działa usługa identd, specjalny program służący do identyfikacji użytkowników. W wielu przypadkach użytkownicy nie mogą zmieniać swojego identu, jeśli mają zainstalowany identd. Szczególnie często spotykamy usługę identd na serwerach szelowych, z których łączy się więcej użytkowników - dzięki temu możemy zbanować jednego użytkownika używając ident (i mieć pewność że ten konkretny już do nas nie wejdzie), a nie wszystkich korzystających z takiego konta.
Host z kolei jest albo adresem IP użytkownika, albo domeną revDNS dla adresu IP z którego wszedł ten użytkownik. Ban na adres IP zadziała na revDNSa.
Bany ustawia się za pomocą polecenia /MODE #kanał +b nick!ident@host, a gwiazdka (*) oznacza "dowolny ciąg znaków", zaś znak zapytania (?) dowolny pojedyńczy znak.
Mając tę wiedzę, zbanujmy obu użytkowników. Widzimy, że użytkownik "futrzak" nie ma tyldy w idencie, więc aby go najlepiej zbanować dajmy mu bana w postaci *!ident@host, czyli:
/MODE #main +b *!s@tty1.tk
Drugi użytkownik ma już tylde, więc może zmieniać ident. Najlepiej będzie zbanować go korzystając z adresu IP:
/MODE #main +b *!*@127.0.0.1
Posiadając taką wiedzę jesteśmy w stanie robić różne triki z banami, np. sprawić, żeby na kanał mogli wejść tylko ludzie posiadający działającą usługę identd:
/MODE #main +b *!~*@*
Czy zabronić wejścia użytkownikom którzy mają w swoim nicku słowo "ptak":
/MODE #main +b *ptak*!*@*
Używając gwiazdek jako "dowolnego ciągu znaków" możemy bez problemu banować całe zakresy adresów IP:
*** nick1 [~2132@i.have.some.cool.host.example.com] has joined #main
*** nick2 [~dsax@another.example.host.pirc.pl] has joined #main
*** nick3 [~njm9@this.is.my.host] has joined #main
W tym przykładzie widzimy że trzech użytkowników masowo dołączyło do naszego kanału. Chcemy temu przeciwdziałać, jednak nie wiemy jak - użytkownik nie ma identd, oraz wchodzi z różnych adresów. Jednakże sprawdźmy te adresy (np. korzystając z UNIXowego programu host):
$ host i.have.some.cool.host.example.com; host another.example.host.pirc.pl; host this.is.my.host
i.have.some.cool.host.example.com has address 2001:41dj:1j:f0cj::1
another.example.host.pirc.pl has address 2001:41dj:1j:f0cj::2
this.is.my.host has address 2001:41dj:1j:f0cj::3
Jak widzimy w tym przykładzie, adres IP dla tych hostów jest dość schematyczny. Nie zmienia się pierwsza część, czyli 2001:41dj:1j:f0cj::. Wiele dostawców adresów IPv6 daje całe podsieci, tak jak w tym przypadku. Aby pozbyć się delikwentów użyjmy następującego bana:
/MODE #main +b *!*@2001:41dj:1j:f0cj::*
Oczywiście te adresy są tylko przykładowe - dlatego są nieprawidłowe.
Jeśli nie mamy systemu unixowego (ani unixopodobnego) i nie posiadamy polecenia `host`, możemy skorzystać ze strony http://kamilm.net/?go=php&i=dns - podajemy tam host z którego wchodzi użytkownik i szukamy czegoś co będzie wyglądać jak:
[4] => Array
(
[host] => this.is.my.host
[type] => AAAA
[ipv6] => 2001:41dj:1j:f0cj::3
[class] => IN
[ttl] => 10800
)
Uprawnienia ¶
Hierarchia użytkowników na kanale jest ustalona przez założenia techniczne używanego IRCd i wygląda następująco (ułożenie od największego do najmniejszego znaczenia):
| nazwa | tryb | symbol |
|---|---|---|
| owner (właściciel kanału) | +q | ~ |
| protect (administrator kanału) | +a | & |
| op (operator kanału) | +o | @ |
| halfop (półoperator) | +h | % |
| voice | +v | + |
| zwykły użytkownik | brak | brak |
Voice(+) może pisać na kanale, kiedy kanał ma ustawiony tryb +m. Halfop(%) może wyrzucać z kanału, ustawiać tryby i dawać innym voice. Op(@) może to co halfop, oprócz tego ma możliwość rozdawania halfopów i innych opów. Protect(&) może tyle co op, ale nie może zostać wykopany przez nikogo poza ownerem(~) (który ma pełną władzę na kanale).
Niektóre programy (na przykład ChatZilla albo XChat) zastępują znaki ~&@%+ na przykład kółkami o różnych kolorach – ale każdy program ma to zrealizowane inaczej, więc nie będę tutaj wymieniać znaczenia kolorów.
Zaawansowane typy banów ¶
Na naszej sieci, prócz zwyczajnych banów nick!user@host dostępne są również rozszerzone metody banicji, rozszerzające zwykłe bany o dodatkowe możliwości. Tego typu bany zakładamy tak, jak zwykłe bany, z tą różnicą że podajemy prefix, np. /mode #main +b ~q:nick!user@host. Zaawansowane bany dzielimy na dwie grupy:
Grupa pierwsza
| prefiks | opis |
| ~q | Wygłuszacz - użytkownik pasujący do maski podanej po prefiksie jest w stanie dołączyć na kanał, jednak nie będzie mógł nic napisać dopóki nie dostanie przynajmniej +v. |
| ~n | Nickchange - użytkownik pasujący do tej maski nie może zmienić nicku przebywając na kanale |
| ~j | Zabrania użtkownikowi wejścia na kanał - jednak gdy już wejdzie, może pisać |
Grupa druga
| ~r | Ten prefiks banuje realname podanego użytkownika. Podkreślenie ('_') będzie tu oznaczało zarówno podkreślenie, jak i białą spację (' '). Przykładowy ban /mode +b ~r:*Stupid_bot_script* będzie więc pasować zarówno do "Stupid_bot_script" jak i do "Stupid bot script v1.4" |
| ~c | Użytkownicy przebywający na kanałach podanych po tym prefiksie nie mogą dołączyć na ten kanał. Możemy również podać prefiks przed nazwą kanału (+/%/@/&/~) aby określić, jakie uprawnienia użytkownik musi mieć na 'banowanym kanale', aby nie móc wejść na kanał na którym banujemy. Przykłady: /mode +b ~c:#main2, /mode +b ~c:@#main3. |
| ~R | Użytkownik pasuje do tego bana tyko, gdy jest zarejestrowany i zidentyfikowany |
Zaawansowane bany można łączyć ze sobą, zachowując kolejność grup - bany z pierwszej łączymy z drugą grupą, nigdy na odwrót. Przykładowo, możemy stworzyć bana ~q:~c:#lamers wygłuszy wszystkich użytkowników przebywających jednocześnie na kanale #lamers. Rozszerzenia z grupy drugiej można również stosować w INVEXach (wyjątkach dla invite-only, czyli trybu +I).
Ochrona przed floodem ¶
Kolejną ciekawostką u nas jest wbudowana w serwer ochrona przed floodem. Nie trzeba stawiać własnych botów, aby zabezpieczyć swój kanał przed natłokiem niechcianych wiadomości, lub masowym dołączaniem i opuszczaniem kanału, a nawet wiadomościami CTCP, czy KNOCK.
Składnia jest następująca: /mode #kanał +f [<ilość><typ>{#<akcja>}{,...}]:<sekundy>
<ilość> określa ile razy określony typ floodu musi zajść, aby podjęta została dana akcja. Poniżej prezentujemy listę wszystkich możliwych typów floodu, domyślne akcje które są podejmowane w razie ich wykrycie i inne możliwości reakcji na flood, dla danego typu:
| Typ | Nazwa | Domyślna akcja | Alternatywne akcje |
| c | CTCP | +C | m, M |
| j | Join | +i | R |
| k | Knock | +k | brak |
| m | Wiadomości | +m | M |
| n | Zmiana nicku | +N | brak |
| t | Wiadomości | kick | b |
Różnica między "m" a "t" polega na tym, że "m" liczone dla całego kanału, a "t" jest zliczane osobno dla każdego użytkownika.
Jeśli wybierzesz ręcznie akcję dla danego typu, możesz również określić czas w sekundach po którym dana akcja zostanie cofnięta.
Przykładowym (i dość kompleksowym) zastosowaniem tej komendy jest nasz channelmode na kanale #main. Wygląda on następująco:
-!- mode/#main [+ntrCTlfj 1337 [4j#i3,4k#K3,6m#m1,3n#N3,6t]:6 3:5]
Jeżeli nie wiesz, jak ustawić któryś z powyższych trybów lub nie masz pewności, jak zadziała, nie bój się zapytać na kanale #help