IRC/Kanały

Z Wikibooks, biblioteki wolnych podręczników.
< IRC
Przejdź do nawigacji Przejdź do wyszukiwania

Kanały to podstawowa cecha IRC-a, która odróżnia go od innych usług umożliwiających chat w internecie. Olbrzymia większość rozmów w IRC odbywa się właśnie na kanałach.

Kanał w pewnym sensie przypomina salę obrad. Wchodząc do niego, spotykamy pewną grupę osób, która już w nim jest i prowadzi jakąś rozmowę lub milczy. W odróżnieniu jednak od prawdziwych sal obrad, IRC pozwala na ich tworzenie w każdej chwili, bez ograniczeń co do ich liczby. Podobnie jak z obradami na żywo, istnieją kanały publiczne, na które może każdy wejść jak i "prywatne pokoje", do których dostęp jest ograniczony lub całkowicie zamknięty przed niepowołanymi.

Nazewnictwo kanału[edytuj]

Nazwy większości kanałów rozpoczynają się od znaku specjalnego "#". Niektóre protokoły IRC dopuszczają też "+", "&", "!" i "%". Kanały zaczynające się na "!", "&" mają zwykle szczególne znaczenie (np: są to kanały techniczne, szczególnie chronione, albo kanały pomocowe lub lokalne). Kanały specjalne standardowo nie pokazują się na zwykłej liście kanałów. Za znakiem specjalnym kanału znajduje się jego nazwa.

Większość protokołów IRC ogranicza długość nazwy kanału do 16 lub 32 znaków. W samej nazwie zakazane jest stosowanie znaków specjalnych: "?", "!", "*", "@", "|", "&", "~", "#" """ (cudzysłów) - które są używane jako metaznaki w składni kluczy wyszukiwawczych, lub mają jakieś inne, szczególne zastosowania

Przykłady nazw:

#wikipedia - kanał angielskiej Wikipedii
#wikipedia-pl - kanał polskiej Wikipedii
@ircops
?help
#wi@ki!pe"d"i&# - przykładowa nazwa nieprawidłowa

Wyszukiwanie kanałów[edytuj]

Listę istniejących kanałów na danym serwerze można uzyskać przy pomocy komendy:

/list klucz wyszukiwania

Gdy użyjemy komendy:

/list

bez klucza wyszukiwania otrzymamy pełną listę wszystkich kanałów, oprócz kanałów z trybem "+s" (sekretnych). Generowanie takiej pełnej listy kończy się jednak zazwyczaj fatalnie - w dużych sieciach lista ta może liczyć kilkadziesiąt tysięcy pozycji i zanim ją całą otrzymamy serwer zerwie z nami połączenie na skutek przekroczenia dozwolonego limitu danych w jednostce czasu. Z tego względu lepiej jest użyć dobrze przemyślanego klucza wyszukiwania. Klucz ten może się składać z poszukiwanych fragmentów nazw kanału oraz znaków specjalnych takich jak "*", "!" i "?" zwanych metaznakami.

/list #wiki*

wyświetli listę wszystkich kanałów, których nazwa zaczyna się od "#wiki" - a zatem "#wikipedia", "#wikinews", "#wikimedia-pl itd.

/list #wiki*pl

wyświetli listę wszystkich kanałów, których nazwa zaczyna się od "#wiki" i kończy na "pl" a zatem "#wikipedia-pl", "#wikinews-pl", itd.

Lista kanałów zawiera zwykle jego nazwę, liczbę użytkowników, tryb i topic:

Przykład działania komendy /list

/list wiki*
warszawa.irc.pl Tue Jun 13 21:52:40 2006
#PartioWiki 18 public
#wikipedia 15 +int blowfish: de goeiste 
#tuxboxwiki 10 public http://wiki.tuxbox.org - Das TuxBox Wiki-Projekt
#pukiwiki 7 +nt
#autowiki 5 public
#murowiki 5 +t Älkää peljästykö, Wikiä siirretään tuotantopalvelimelle
#wikilinux 4 +itn
/END of list

Tworzenie kanału i wchodzenie na już istniejący[edytuj]

Tworzenie kanału jest banalnie proste - o ile dany kanał jeszcze nie istnieje piszemy komendę:

/join #nazwa_kanału

co powoduje jednocześnie jego utworzenie na serwerze i od razu nasze wejście na ten kanał. Oczywiście jeśli kanał już istnieje komenda /join powoduje po prostu wejście na dany kanał, o ile jest on dla nas dostępny, lub uzyskanie informacji o odmowie wpuszczenia.

Zwykle tworzenie nowego kanału ma jakiś powód. Np: mamy grupę osób, którą informujemy w jakiś sposób, że tworzymy kanał na jakiś temat i czekamy aż przyjdą. Tworzenie kanału dla samego jego tworzenia jest zajęciem na ogół pozbawionym sensu. Gdy chcemy spotkać określoną grupę ludzi lub porozmawiać na jakiś określony temat lepiej jest poszukać już istniejącego kanału niż tworzyć nowy i czekać, aż ktoś się pojawi.

Po wejściu na kanał, który wcześniej nie istniał jesteśmy, przynajmniej początkowo, na nim całkowicie sami. Wchodząc na nieistniejący kanał serwer daje nam na nim automatycznie przywileje operatora, którymi później możemy (lub nie) dzielić się z innymi wg naszego uznania.

Netykieta wchodzenia na kanał 
Przy wchodzeniu na już istniejący kanał wypada powiedzieć "cześć". Zwykle dłuższe powitanie, czy przesadnie długie przedstawianie swojej osoby jest odbierane przez uczestników kanału jako dowód na tzw. lamerstwo. Na kanałach gdzie jest wielu użytkowników, ciągłe przedstawianie się nowo-wchodzących jest zbyt uciążliwe. Po wejściu na kanał warto też po powiedzeniu "cześć" pomilczeć chwilę, aby zorientować się o czym aktualnie jest mowa. Przerywanie rozmów innych lub wyskakiwanie "jak Filip z Konopi" jest zwykle negatywnie odbierane przez innych użytkowników.

Temat[edytuj]

Temat (ang. topic) to tekst przypisywany do kanału, który pojawia się po wejściu na niego, a w wielu klientach IRC jest on też automatycznie wstawiany do belki tytułowej okna, w którym jest wyświetlany dany kanał. Oprogramowanie serwerów IRC ogranicza zwykle długość tekstu tematu do 128 lub 256 znaków. Mogą to być zupełnie dowolne znaki.

W zależności od trybu działania kanału temat może zmieniać każdy użytkownik lub tylko użytkownicy ze statusem operatora kanału. Robi się to komendą:

/topic #nazwa_kanału Tekst

Opuszczanie kanału[edytuj]

Kanał można generalnie opuścić na 4 sposoby:

  • dobrowolnie: poprzez napisanie komendy /part #nazwa_kanału, lub po prostu /part gdy aktualnie mamy aktywne okno z tym kanałem; podobny efekt daje też w większości popularnych klientów IRC zamknięcie okna z danym kanałem
  • przymusowo: na skutek wykonania przez jednego z operatorów komendy /kick, która wyrzuca nas z kanału - po wyrzuceniu można wrócić komendą /join #nazwa_kanału, o ile nie jest się na tym kanale zbanowanym
  • przymusowo lub dobrowolnie: na skutek zerwania łącza z serwerem
  • przymusowo: na skutek splitu (zaniku łączności między serwerami IRC).

Uwagi na temat wychodzenia z kanału[edytuj]

Po zerwaniu łącza nasz nick jest widoczny przez jakiś czas na liście użytkowników wszystkich kanałów, na których się przebywało, co nazywane jest "zamienieniem się w ducha"; dlatego na ogół zaleca się nie wyłączać programu do IRC zanim nie opuści się wszystkich kanałów; częste wychodzenie z pozostawieniem "ducha" jest uważane za naruszenie netykiety IRC-a i dowodem na ogólny brak wychowania, podobnie jak wychodzenie z kanału bez żadnego pożegnania.

Opuszczenie kanału przez ostatniego jego użytkownika powoduje, że kanał "znika" przynajmniej, do czasu aż ktoś ponownie na niego nie wejdzie. Serwer nie zapamiętuje historii kanału. Gdy kanał "znika", serwer całkowicie "zapomina" o jego dawnym istnieniu. Nie ma więc możliwości automatycznego odzyskania statusu operatora kanału, który się opuściło, nawet gdy wcześniej taki status się miało, w sytuacji, gdy ktoś w międzyczasie dany kanał ponownie utworzy. W niektórych sieciach IRC istnieją specjalne usługi, umożliwiające rejestrację kanału, takie jak np. "chanserv". W sieciach, w których tej usługi nie ma, jedynym sposobem "utrzymania" kanału jest pozostawienie na nim grupy wzajemnie wspierających się botów (programów pilnujących kanału), działających z kilku różnych serwerów.

Tryby kanału[edytuj]

Oprogramowanie serwerów IRC umożliwia ustawianie tzw. trybów kanału. Prawo ich zmiany posiadają wyłącznie operatorzy kanału. Tryb kanału zmienia się za pomocą komendy /mode:

/mode #nazwa_kanału +parametry -parametry

Parametry przyjmują postać jednoliterowych skrótów. Znak "+" oznacza włączenie trybu, znak "-" wyłączenie. Komenda umożliwia jednoczesną zmianę wszystkich parametrów na raz lub tylko jednego. Użycie tej komendy bez żadnych parametrów wyświetla aktualny tryb kanału.

Lista trybów[edytuj]

  • publiczny - jest to standardowy tryb kanału zaraz po jego utworzeniu - dozwolone jest na nim wówczas wszystko, jest on widoczny na liście kanałów, także dla tych którzy na nim nie przebywają, lista użytkowników kanału jest w pełni jawna
  • prywatny - +p - lista osób na nim przebywających staje się "tajna" dla osób na nim nie przebywających - nie można np. wyświetlić listy osób przebywających na tym kanale za pomocą komendy /whois
  • sekretny - +s - kanał jest niewidoczny w ogólnodostępnym spisie kanałów, ponadto po użyciu komendy /whois nick - informacja o tym, że ktoś przebywa na tym kanale jest ukrywana
  • No external messages - +n - na kanał nie można wysyłać komunikatów komendą /notice #kanał, gdy się na nim nie przebywa
  • zablokowany temat (ang. topic) - +t - temat mogą zmieniać wyłącznie operatorzy kanału
  • moderowany - +m - na takim kanale mówić mogą tylko operatorzy oraz użytkownicy, którzy dostaną od operatorów głos, co jest zaznaczane na liście użytkowników kanału przez flagę "+"
  • na zaproszenie - +i - na taki kanał można wejść tylko po zaproszeniu otrzymanym komendą /invite #nazwa_kanału nick, którą wydawać mogą operatorzy kanału
  • ograniczony - +l liczba użytkowników - na kanale na raz może przebywać tylko określona liczba użytkowników; gdy zostanie osiągnięta kolejni użytkownicy nie mogą wejść na kanał do momentu, aż ktoś go nie opuści
  • na hasło - +k hasło - wejście na kanał wymaga podania hasła; robi się to komendą /join #nazwa_kanału hasło.

...i wiele innych

Przykłady[edytuj]

/mode #wikipedia +pstm-i 
kanał #wikipedia stanie się prywatny, sekretny, z zablokowanym topicem, moderowany i jednocześnie przestanie być na zaproszenie (o ile wcześniej był)
/mode #wikipedia +l 120 +k kasztany_na_placu_Pigalle 
kanał #wikipedia zostanie ograniczony do 120 użytkowników, a wejście będzie możliwe po podaniu hasła kasztany_na_placu_Pigalle

Uwagi[edytuj]

  • tryb +s włącza jednocześnie tryb +p
  • tryb +i wyłącza tryb +k i wice-versa
  • na wielu serwerach standardowym trybem po utworzeniu kanału nie jest "publiczny" lecz "+n" lub "+nt"

Oprócz tego komenda /mode umożliwia też kontrolę nad użytkownikami.

Nadawanie i odbieranie statusu operatora[edytuj]

Każdy operator kanału może podzielić się swoją władzą, przez nadanie statusu operatora innemu użytkownikowi. Nadawanie statusu dokonuje się za pomocą komendy:

/mode #nazwa_kanału +o nick

Za pomocą jednej komendy można nadać na raz status operatora maksymalnie trzem użytkownikom:

/mode #nazwa_kanału +ooo nick1 nick2 nick3

Wiele klientów IRC posiada alias tej komendy, który przybiera zwykle postać /op nick, gdzie /op = /mode #nazwa kanału +o. Alias umożliwia jednak zwykle nadanie statusu tylko jednemu użytkownikowi.

Odbieranie statusu operatora robi się dokładnie tę samą komendą, tylko ze znakiem "-":

/mode #nazwa_kanału -o nick

podobnie można odebrać status operatora maksymalnie trzem użytkownikom:

/mode #nazwa_kanału -ooo nick1 nick2 nick3

Wiele klientów IRC posiada alias tej komendy, który przybiera zwykle postać /deop nick, gdzie /deop = /mode #nazwa kanału -o. Alias umożliwia jednak zwykle odebranie statusu tylko jednemu użytkownikowi.

Nadawanie i odbieranie statusu operatora można z sobą mieszać. Np:

/mode #nazwa_kanału -o+o-o nick1 nick2 nick3 = /mode #nazwa_kanału -oo+o nick1 nick3 nick2

odbierze status nick1 i nick 3 a nada go nick2. Tego typu "tricki" nie są możliwe do wykonania za pomocą aliasów /op i deop.

Uwagi 
Użytkownik, który dostanie status operatora staje się technicznie równorzędny operatorowi, który mu ten status nadał. Nie istnieje zatem hierarchia operatorów i nie ma znaczenia kto komu nadał status operatora. Nadanie tego statusu wiąże się zatem z ryzykiem, że osoba, która go dostała od nas może "nielojalnie" odebrać ten status nam.

Banowanie i wyrzucanie[edytuj]

Użytkownicy mogą być wyrzucani z kanału za pomocą komendy:

/kick #nazwa_kanału nick powód.

Komenda ta może być wydawana tylko przez operatorów kanału. Użytkownik wykopany z kanału może w każdej chwili nań wrócić komendą /join #nazwa_kanału, chyba że zostanie zbanowany. W momencie wykopania serwer wysyła wyrzuconemu użytkownikowi komunikat o tym fakcie, z powodem podanym w komendzie /kick. Podawanie tekstu powodu jest opcjonalne. Operator może wykopać użytkownika bez wpisywania w komendzie powodu.

Banowanie, czyli zablokowanie możliwości wejścia na kanał dla określonego użytkownika lub grupy użytkowników dokonuje się komendą:

/mode #nazwa kanału +b nick!user@host powód

gdzie nick!user@host to klucz definiujący albo tylko jednego użytkownika, albo całą ich grupę. W kluczach tych można używać tych samych znaków, co przy kluczach wyszukiwania kanałów. Po założeniu bana, użytkownik, który pasuje do podanych kryteriów, dostanie przy próbie wejścia na kanał komunikat, że jest zbanowany, kto go zbanował oraz powód zbanowania podany w komendzie /mode +b. Podawanie powodu jest opcjonalne. Przykłady:

/mode #wikipedia +b polimerek

spowoduje zbanowanie użytkownika o nicku polimerek. Jeśli jednak polimerek rozłączy się z siecią IRC i wejdzie powtórnie pod innym nickiem, to będzie mógł w ten sposób ominąć ten ban. Wystarczy, że zmieni w nicku choć jedną literkę: Np ten ban nie zadziała na nicka "polimerek_"

/mode #wikipedia +b *@*.pl

spowoduje zbanowanie wszystkich użytkowników łączących się z serwerem z domeny .pl. Ominięcie tego rodzaju bana jest dużo trudniejsze. Wymaga albo dostępu do usługi cloak albo zdalnego połączenia się z komputerem nie znajdującym się w domenie .pl i uruchomieniem na nim klienta IRC.

/mode #wikipedia +b *oli*

spowoduje zbanowanie wszystkich, którzy mają w swoim nicku tekst "oli" - a zatem "polimerek_", "olinka" oraz "wolinek" nie będą mogli wejść na kanał.

/mode #wikipedia +b *!*@*

Spowoduje, że dokładnie wszyscy będą zbanowani - czyli nikt nie będzie mógł wejść na kanał!

Użycie komendy:

/mode #kanał +b

bez dalszych parametrów wyświetla listę aktualnych banów na danym kanale.

Przykład listy banów:

/mode #wikimedia +b
#wikimedia *!*@scrod.soc.lib.md.us set by Essjay!i=Essjay@wikimedia/Essjay (Wed Jun 07 08:57:43)
#wikimedia *!n=cmaguina@201.230.235.* set by Headcrab!n=aschenck@wikipedia/Linuxbeak 
(Thu May 25 04:40:13)
#wikimedia *!*@adsl-68-89-130-209.dsl.snantx.swbell.net set by
Linuxbeak!n=aschenck@wikipedia/Linuxbeak (Tue May 23 03:24:35)
#wikimedia End of Channel Ban List

Serwery ograniczają zwykle liczbę możliwych banów, które można założyć na jednym kanale do pewnej liczby, zwykle 16 lub 32. Zdjęcie bana wymaga użycia dokładnie takiej samej komendy, jak do zbanowania (z dokładnie tym samym kluczem), tyle że z parametrem -b:

/mode #wikipedia -b *oli* usuwa bana założonego komendą /mode #wikipedia +b *oli*

nawet drobna różnica w kluczu bana powoduje, że komenda /mode #kanał -b - nie zadziała.

Skutki lagów i splitów - czyli desynchronizacja kanałów[edytuj]

Dla osób, które znalazły się "po drugiej stronie", split wygląda jakbyśmy opuścili nagle kanał. Dla nas i osób które zostały się "po naszej stronie" splitu wygląda to z kolei tak, jakby to tamte osoby wyszły z kanału, a my na nim nadal przebywamy, tyle że w mniejszym gronie. Po zakończeniu splitu, nasz powrót na kanał wygląda tak samo jak wejście nań komendą /join. Jedyne, co informuje, że nastąpił split, a później jego zakończenie, jest nagłe masowe opuszczenie lub wejście całej grupy użytkowników.

Split powoduje też desynchronizację kanału. Często w wyniku splitu część operatorów kanału zostaje się po jednej, a druga część po drugiej stronie splitu. Jeśli operatorzy po jednej stronie zmienią topic, tryb kanału, odbiorą lub nadadzą komuś status operatora, po zakończeniu splitu serwery mają poważny problem jak scalić kanał.

Różne wersje serwerów radzą sobie z tym na różne sposoby. Najprostszym rozwiązaniem jest zapamiętywanie przez serwery stanu kanału sprzed splitu i doprowadzenie do jego powrotu przez cofnięcie efektów wszystkich komend, które zostały wykonane przez operatorów w czasie jego trwania. Serwery przywracają więc tryb kanału, odbierają status operatora, tym którzy go dostali w czasie splitu i nadają go na powrót tym którzy go w trakcie splitu utracili. Ten mechanizm działa jednak tylko przy pojedynczym splicie. Gdy następuje seria splitów i ponownych odtworzeń połączeń serwerów, serwery często nie nadążają z synchronizowaniem kanałów. W efekcie stan kanału, czyli jego tryby i lista operatorów mogą być po serii splitów zupełnie różne na różnych serwerach jednej sieci.

Podobne efekty desynchronizacji mogą też następować w czasie długich lagów. Lagom podlegają bowiem nie tylko komunikaty wysyłane na kanał, ale także realizacja komend. Jeśli zatem istnieje długi lag między dwoma serwerami, operatorzy kanałów działający z jednego serwera mogą wykonywać komendy, które są sprzeczne z komendami operatorów działających z drugiego serwera, co w efekcie powoduje, że stan kanału na obu serwerach staje się różny.

Ponowne zsynchronizowanie kanału możliwie jest na trzy sposoby:

  • użytkownicy kanału zgodnie, w jednym momencie decydują się na jego opuszczenie - jest to jednak dość ryzykowne, gdyż jest świetną okazją do jego przejęcia
  • operatorzy działający z różnych serwerów wykonują w skoordynowany sposób serię komend, która uzgadnia stan kanału na wszystkich serwerach - wymaga to oczywiście wzajemnego zaufania operatorów do siebie
  • na kanał wchodzi ircop, który czasowo odbiera wszystkim status operatora i przywraca odpowiedni stan kanału.