You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
PRIMEChANIE: Cerver ne podderzhivaet kommunikatsiiu server-server. Nizhe predstavlena sokrashchennaia dokumentatsiia standarta rfc1459.
Soderzhanie:
Soobshcheniia
Registratsiia soedineniia
PASS
NICK
USER
OPER
QUIT
Pol'zovateli
PRIVMSG
AWAY
NOTICE
WHO
WHOIS
WHOWAS
Kanaly
Operator kanala
MODE
TOPIC
JOIN
INVITE
KICK
PART
NAMES
LIST
Prochee
IRC-operatory i konfig
WALLOPS
PING / PONG
ISON
USERHOST
VERSION
INFO
ADMIN
TIME
Chislovye otvety
Oshibki
Otvety na komandy
Zarezervirovannye chisla
Ssylki na poleznye materialy
Soobshcheniia
Kazhdoe IRC-soobshchenie mozhet soderzhat' do trekh chastei, razdelennykh odnim (ili bolee) simvolom probela:
Prefiks (optsional'no)
Komanda
Parametry komandy (do 15).
Prefiks ispol'zuetsia serverami dlia oboznacheniia istochnika poiavleniia soobshcheniia. Oboznachaetsia odnim simvolom :, stoiashchim vnachale, kotoryi dolzhen byt' pervym simvolom v soobshchenii. Mezhdu prefiksom i : ne dolzhno byt' nikakikh probelov.
Komanda dolzhna soderzhat' pravil'nuiu IRC-komandu ili trekhznachnoe chislo, predstavlennoe v ASCII-tekste. Maksimal'naia dlina stroki dlia komand i parametrov - 510 simvolov. Perenos stroki oznachaet konets komandy.
Na kazhdoe uspeshnoe vypolnenie komandy klientu otpravliaetsia chislovoi otvet. Esli v soobshchenii nepravil'no ukazana komanda i/ili parametry, na etape parsinga server mozhet vydat' klientu soobshchenie ob oshibke.
Dlia obespecheniia kontrolia ot fluda, rekomenduetsia proveriat' chastotu soobshchenii. Naprimer, ne prinimat' soobshcheniia bolee, chem raz v 2 sekundy i esli etot limit prevyshaetsia, to uvelichivat' zaderzhku dlia klienta na 2 sekundy za kazhdoe soobshchenie.
PASS-soobshchenie ne dolzhno byt' vvedeno klientom v posledniuiu ochered'.
Esli registratsiia proshla uspeshna, klientu otpravliaetsia MOTD (message of the day) s sootvetstvuiushchimi chislovymi otvetami:
375 RPL_MOTDSTART ":- Message of the day - " 372 RPL_MOTD ":- " 376 RPL_ENDOFMOTD ":End of /MOTD command"
PASS
Parametry:
Komanda PASS ispol'zuetsia dlia ustanovki 'parol'nogo soedineniia', v kachestve parolia vystupaet vtoroi argument,
peredannyi pri zapuske servera. Parol' mozhet i dolzhen byt' ustanovlen pered liuboi popytkoi registratsii soedineniia.
V tekushchii moment, eto trebovaniia k klientam otpravliat' komandu PASS pered otpravkoi kombinatsii NICK/USER.
Chislovye otvety:
ERR_NEEDMOREPARAMS ERR_ALREADYREGISTRED
Primer:
PASS secretpassword
NICK
Parametry:[ ]
Ofitsial'naia dokumentatsiia glasit, chto esli server poluchit NICK, kotoryi uzhe sushchestvuet, to proizoidet konflikt i komandoi KILL udalit etot nikneim iz bazy dannykh servera.
Na dele zhe klient ne smozhet podkliuchit'sia k serveru, poka vvedennyi im nik zaniat pol'zovatelem, kotoryi nakhoditsia v seti.
Esli soobshchenie NICK stanet prichinoi izmeneniia nikneima, to original'nyi (staryi) nikneim udalitsia.
NICK Wiz // Vstuplenie novogo nikneima "Wiz". :WiZ NICK Kilroy // WiZ izmeniaet svoi nikneim na Kilroy.
USER
Parametry:
Komanda USER ispol'zuetsia v nachale soedineniia dlia ukazaniia imeni pol'zovatelia, nazvaniia khosta, nazvaniia servera i real'nogo imeni novogo pol'zovatelia.
Parametry ne proveriaiutsia IRC-serverom, kogda oni ispol'zuiutsia klientom, no mogut ispol'zovat'sia pri kommunikatsii server-server.
Dolzhno byt' ob'iavleno, chto parametr dolzhen byt' poslednim, potomu chto on mozhet soderzhat' probely i pered nim dolzhen byt' prefiks :, delaiushchim raspoznavanie luchshim.
Chislovye otvety:
RR_NEEDMOREPARAMS ERR_ALREADYREGISTRED
Primer:
USER guest tolmoon tolsun :Ronnie Reagan // Pol'zovatel' zaregistriroval sebia pod imenem "guest" i ego real'noe imia "Ronnie Reagan"
OPER
Parametry:
Komanda OPER ispol'zuetsia avtorizatsii za IRC-operatora (ne putat' s operatorom kanala). Parametry i ispol'zuiutsia dlia identifikatsii pol'zovatelia, zaprashivaiushchego prava IRC-operatora.
Pri kommunikatsii server-server, esli pol'zovatel' poslal komandu OPER s korrektnym parolem dlia tekushchego pol'zovatelia, server informiruet set' o novom operatore, ispol'zuia MODE +o dlia nikneima klienta.
OPER foo bar // Popytka zaregistrirovat'sia kak IRC-operator, ispol'zuia imia pol'zovatelia "foo" i parol' "bar".
QUIT
Parametry:[]
Sessiia pol'zovatelia zakanchivaetsia s QUIT-soobshcheniem. Server dolzhen zavershit' soedinenie s klientom, kogda uvidit poslannoe soobshchenie.
Esli, po kakoi-libo prichine, soedinenie klienta zakrylos' bez vvedeniia pol'zovatelem komandy QUIT (naprimer, obryv sviazi), server potrebuet zapasa v quit-soobshcheniiakh s nekotoroi sortirovkoi soobshcheniia, v poiskakh prichiny razryva.
Primer:
QUIT :Gone to have lunch // Obychnyi format soobshcheniia.
Pol'zovateli
Kazhdyi pol'zovatel' imeet nikneim dlinoi ne bol'she deviati (9) simvolov.
Dostupnye simvoly v nike: a-z, A-Z, 0-9 i spets. simvoly -, [, ], \, ^, {, }
Server dolzhen znat' o kliente:
imia khosta, s kotorogo zapustilsia pol'zovatel'.
imia pol'zovatelia na etom khoste.
server, k kotoromu prisoedinilsia pol'zovatel'.
Kogda klient zakryvaet soedinenie, sozdaetsia QUIT-soobshchenie ot imeni klienta serverom.
PRIVMSG
Parametry:{,}
PRIVMSG ispol'zuetsia dlia chastnoi perepiski mezhdu pol'zovateliami.
- nikneim poluchatelia soobshcheniia. Tak zhe tam mozhno ukazat'
spisok imen ili kanalov, razdelennykh zapiatymi.
(768u+1n) .br
// Soobshchenie k Angel;"> :Angel PRIVMSG Wiz :Hello are you receiving this message ? // Soobshchenie ot Angel k Wiz;
PRIVMSG Angel :yes I'm receiving it !receiving it !'u>(768u+1n) .br // Soobshchenie k Angel;
AWAY
Parametry:[message]
Komanda AWAY ustanavlivaet avtomaticheskii otvet na soobshchenie tipa PRIVMSG, napravlennoe klientu
Ispol'zovanie AWAY bez ukazaniia parametra, snimaet avtomaticheskii otvet, esli ranee on byl ustanovlen.
Chislovye otvety:
RPL_UNAWAY RPL_NOWAWAY
Primery:
AWAY :Gone to lunch. Back in 5 // ustanovka away-soobshcheniia "Gone to lunch. Back in 5". :WiZ AWAY // sniatie pol'zovatelem WiZ soobshcheniia AWAY.
NOTICE
Parametry:
Eta komanda rabotaet tak zhe, kak PRIVMSG, za iskliucheniem togo, chto avtomaticheskii otvet AWAY ne mozhet byt' otpravlen v otvet na soobshchenie.
Soobshchenie NOTICE ne otpravitsia, esli u poluchatelia stoit rezhim +s.
WHO
Parametry:[ []]
Vozvrashchaet spisok pol'zovatelei, sovpadaiushchikh s parametrom name, za iskliucheniem nevidimykh pol'zovatelei (+i)
Esli ustanovlen flag o, vozvrashchaetsia informatsiia tol'ko ob IRC-operatorakh.
Chislovye otvety:
ERR_NOSUCHSERVER RPL_WHOREPLY RPL_ENDOFWHO
Primery:
WHO *.fi // Spisok pol'zovatelei, sootvetstvuiushchie maske "*.fi"; WHO jto* o // Spisok pol'zovatelei, sootvetstvuiushchie maske "jto*", esli oni iavliaiutsia operatorami.
WHOIS
Parametry:
Cerver otvetit na eto soobshchenie neskol'kimi chislovymi soobshcheniiami s ukazaniem raznykh statusov kazhdogo pol'zovatelia.
Esli v ne ukazana nikakaia informatsiia o tom, kakoi nikneim oprosit', vy poluchite
informatsiiu o vsekh dostupnykh nikneimakh. Zapiataia razdeliaet spisok nikneimov.
WHOIS wiz // vozvrat pol'zovateliu informatsiiu o nikneime WiZ
WHOWAS
Parametry:[]
Vozvrashchaet informatsiiu ob imeni pol'zovatelia, kotoroe seichas ne ispol'zuetsia (v sviazi s otkliucheniem pol'zovatelia ili izmeneniem ego imeni).
Esli opredelen parametr , vozvrashchaetsia informatsiia o poslednikh sluchaiakh ispol'zovaniia nika.
WHOWAS Wiz // vozvrat vsei informatsii v istorii o nikneime "WiZ" WHOWAS Mermaid 9 // vozvrat 9 naibolee zaprashivaemykh vvodov v nikneim-istorii dlia "Mermaid"
Kanaly
Kanal sozdaetsia pri soedinenii pervogo klienta s nim i kanal ischezaet, kogda ego pokidaet poslednii pol'zovatel'. Poka kanal otsutstvuet, liuboi pol'zovatel' mozhet zavladet' kanalom, nazvav svoi takim zhe imenem.
Imia kanala - stroka (nachinaiushchaiasia s simvola & ili #) dlinnoi do 200 simvolov.
Dlia sozdaniia novogo kanala ili vkhoda v sushchestvuiushchii, pol'zovatel' dolzhen zaprosit' JOIN kanala. Esli kanal otsutstvoval, to kanal sozdaetsia, i voshedshii pol'zovatel' stanovitsia operatorom kanala. Esli kanal uzhe sushchestvuet, no tak ili inache on ne otvechaet na popytki voiti, znachit v nastroikakh kanala ustanovlen kakoi-libo iz nizheprivedennykh rezhimov. Vozmozhno, etot kanal tol'ko dlia priglashennykh (invite-only), (rezhim +i), i vy smozhete na ego voiti tol'ko buduchi priglashennym.
Pol'zovatel' mozhet nakhodit'sia v neskol'kikh kanalakh odnovremenno, no rekomenduetsia ogranichit'sia desiat'iu (10) kanalami.
Nazvanie kanal mozhet v sebe soderzhat' liuboi ASCII-simvol, krome \r, \n, \g, SPACE, \0, ,.
Protokolom predostavliaetsia dva tipa kanalov:
Odin rasprostraniaemyi kanal, kotoryi izvesten vsem serveram, podsoedinennym k seti.
Eti kanaly dostupny tol'ko tem klientam, na servere kotorykh on sushchestvuet. Takie kanaly otlichaiutsia simvolom & pered nazvaniem.
Ostal'nye kanaly pomecheny simvolom #.
Tak kak v etom proekte ne realizovano podkliuchenie server-server, eti kanaly nichem ne budut otlichat'sia.
Operator kanala
Operator kanala, identifitsiruetsia simvolom @, sleduiushchim za ego nikneimom, vsiakii raz, kak on assotsiiruetsia s kanalom (naprimer, otvety na komandy NAMES, WHO i WHOIS).
Esli sozdatel' kanala pokinet ego, to prava operatora nasleduiutsia samomu staromu po vremeni nakhozhdeniia pol'zovateliu ili operatoru, esli takovoi sushchestvuet.
Operator kanala imeet vozmozhnost' vypolniat' komandy:
MODE
TOPIC (+t)
INVITE (+i)
KICK
MODE
Komanda MODE pozvoliaet nastroit' rezhim imen pol'zovatelei ili kanalov.
Rezhimy i kharakteristiku kanala mozhet izmenit' tol'ko operator kanala t.e. tot, kto ego sozdal.
Spisok dostupnykh rezhimov kanala:
o - brat'/davat' privilegii operatorov kanala
p - flag privatnosti kanala;
s - flag sekretnosti kanala;
i - flag kanala invite-only;
t - pri ustanovke etogo flaga, meniat' topik mogut tol'ko operatory;
n - zapreshchaet soobshcheniia na kanal ot postoronnikh klientov;
m - moderiruemyi kanal;
l - ustanovka ogranicheniia na kolichestvo pol'zovatelei;
b - ustanovka maski bana;
v - brat'/davat' vozmozhnost' golosa pri moderiruemom rezhime;
k - ustanovka parolia na kanal.
Primery ispol'zovaniia rezhimov kanala:
MODE #Finnish +im // Delaet kanal #Finnish moderiruemym i 'invite-only'. MODE #Finnish +o Kilroy // Daet privilegii operatora Kilroy na kanale #Finnish. MODE #Finnish +v Wiz // Daet WiZ pravo golosa na kanale #Finnish. MODE #Fins -s // Ubiraet flag 'secret' s kanala #Fins. MODE #42 +k oulu // Ustanavlivaet na kanal parol' "oulu". MODE #eu-opers +l 10 // Ustanavlivaet maksimal'noe kolichestvo pol'zovatelei na kanale (10). MODE &oulu +b // Vyvod spiska masok bana dlia kanala. MODE &oulu +b *!*@* // Predotvrashchaet vkhod na kanal dlia liubogo pol'zovatelia. MODE &oulu +b *!*@*.edu // Predotvrashchaet vkhod liubogo pol'zovatelia podkhodiashchego pod masku khosta *.edu.
Rezhimy pol'zovatelia
Parametry:{[+|-]|i|w|s|o}
Rezhimy pol'zovatelia obychny takimi izmeneniiami, kotorye vozdeistvuiut na to, kakim vidiat klienta ili kakie 'eksta'-soobshcheniia posylaet pol'zovatel'.
Pol'zovatel'skaia komanda MODE mozhet otnosit'sia ili k otpraviteliu soobshcheniia ili k tomu, chei nikneim ukazali v kachestve parametra.
Dostupnye rezhimy:
i - delaet pol'zovatelia nevidimym;
s - pol'zovatel' (ne)poluchaet NOTICE soobshcheniia;
o - flag IRC-operatora;
w - pol'zovatel' (ne)poluchaet WALLOPS soobshcheniia;
Esli pol'zovatel' pytaetsia sdelat' sebia IRC-operatorom, ispol'zuia +o flag, ego popytka budet proignorirovana. Eto ne razresheno, v otlichie ot sbrosa sebia samogo (ispol'zuia -o).
Komanda JOIN ispol'zuetsia klientom dlia vkhoda na kanal. Dlia vkhoda v kanal, dolzhny sobliudat'sia sleduiushche usloviia:
Pol'zovatel' mozhet byt' priglashen, esli kanal invite-only.
Nikneim/imia pol'zovatelia/imia khosta ne dolzhny byt' zabanenymi.
Esli ustanovlen parol', no dolzhen byt' vernym.
Kogda pol'zovateli zakhodiat na kanal, oni poluchat uvedomlenie o vsekh komandakh ikh servera. Ono vmeshchaet v sebe MODE, KICK, PART, QUIT i, konechno zhe, PRIVMSG/NOTICE.
Esli JOIN vypolnilsia uspeshno, pol'zovatel' poluchaet topik kanala(ispol'zuia RPL_TOPIC) i spisok pol'zovatelei, kotorye nakhodiatsia na kanale (ispol'zuia RPL_NAMREPLY).
JOIN #foobar // vkhod na kanal #foobar. JOIN &foo fubar // vkhod na kanal &foo, ispol'zuia kliuch "fubar". JOIN #foo,&bar fubar // vkhod na kanal #foo, ispol'zuia kliuch "fubar" i na kanal &bar bez ispol'zovaniia kliucha. JOIN #foo,#bar fubar,foobar // vkhod na kanal #foo, ispol'zuia kliuch "fubar" i na kanal #bar, ispol'zuia kliuch "foobar". JOIN #foo,#bar // vkhod na kanaly #foo i #bar. :WiZ JOIN #Twilight_zone // JOIN-soobshchenie ot WiZ
INVITE
Parametry:
Komanda INVITE ispol'zuetsia dlia priglasheniia pol'zovatelei na kanal.
Parametr - ukazanie pol'zovatelia, kotorogo trebuetsia priglasit' v kanal .
Esli kanal iavliaetsia invite-only (MODE +i), priglashat' v nego mozhet tol'ko operator kanala.
:Angel INVITE Wiz #Dust // Pol'zovatel' Angel priglasil WiZ v kanal #Dust INVITE Wiz #Twilight_Zone // Komanda priglasheniia WiZ v kanal #Twilight_zone
KICK
Parametry:[]
Komanda KICK iskliuchaet pol'zovatelia iz kanala mozhet byt' ispol'zovana tol'ko operatorom kanala.
KICK &Melbourne Matthew // Kik Matthew s kanala &Melbourne KICK #Finnish John :Speaking English // Kik John s #Finnish, ukazav kommentarii/prichinu "Speaking English". :WiZ KICK #Finnish John // KICK-soobshchenie WiZ udaliaet John s kanala #Finnish
PART
Parametry:{,}
S pomoshch'iu komandy PART pol'zovatel' mozhet pokinut' kanaly, kotorye on ukazhet v parametrakh.
PART #twilight_zone // pokinut' kanal "#twilight_zone" PART #oz-ops,&group5 // pokinut' kanaly "&group5" i "#oz-ops".
NAMES
Parametry:[{,}]
Ispol'zuia komandu NAMES, pol'zovatel' mozhet poluchit' spisok vsekh
pol'zovatelei, sostoiashchikh v kanale (pri uslovii, chto kanal viden otpraviteliu komandy).
Kanaly, kotorye ne vidny pol'zovateliu - eto privatnye (+p), sekretnye (+s) i v kotorykh on uzhe sostoit.
Eta komanda ne vozvrashchaet koda oshibki iz-za nepravil'nykh nazvanii kanalov.
Esli parametr ne zadan, vyvoditsia spisok vsekh kanalov i imen tekh, kto v nikh sostoit.
I k kontsu vyvodimogo spiska - list pol'zovatelei, kotorye ne sostoiat ni v odnom vidimom kanale.
Chislovye otvety:
RPL_NAMREPLY RPL_ENDOFNAMES
Primery:
NAMES #twilight_zone,#42 // Spisok vidimykh pol'zovatelei na kanale #twilight_zone i #42, esli kanaly vidimy vam. NAMES // Spisok vsekh vidimykh kanalov i pol'zovatelei.
LIST
Parametry:[{,}[]]
LIST ispol'zuetsia dlia vyvoda spiska kanalov i ikh topikov. Esli ispol'zuetsia parametr , to vyvoditsia tol'ko status etogo kanala.
Privatnye kanaly ukazany (bez ikh topikov) kak kanaly "Prv", bez ukazaniia kolichestva klientov, sidiashchikh na etom kanale.
Sekretnye kanaly ne vyvodiatsia v spiske, esli pol'zovatel' ne iavliaetsia chlenom podobnogo kanala.
REHASH - perechityvaet konfiguratsionnyi fail, v kotorom soderzhatsia nikneimy i paroli IRC-operatorov.
Chislovye otvety:
RPL_REHASHING ERR_NOPRIVILEGES
IRC-operatory, v otlichie ot ostal'nykh pol'zovatelei, imeiut naivysshie prava i sobstvennye paroli. Chtoby proizvesti pol'zovateliu avtorizatsiiu v kachestve IRC-operatora, trebuetsia vypolnit' komandu OPER.
Konfiguratsionnyi fail
Predostavliaia gibkost' nastroiki i zapuska servera, rekomenduetsia ispol'zovat' konfiguratsionnyi fail. Minimal'nye trebovaniia k soderzhaniiu konfiga:
S kakikh khostov dopuskat' soedineniia klientov.
S kakikh khostov dopuskat' servernye soedineniia.
Mestopolozhenie servera(universitet, gorod/raion, kompaniia i t.p.).
Administrator servera i ego e-mail.
Nikneimy i paroli IRC-operatorov.
Paroli IRC-operatorov rekomenduetsia khranit' v zashifrovannom vide. Naprimer, s pomoshch'iu SHA256
WALLOPS
Parametry:
Komanda otpravliaet soobshcheniia vsem IRC-operatoram, nakhodiashchimsia v seti, krome tekh, kto otkliuchil uvedomleniia s pomoshch'iu MODE -w.
Chtoby izbezhat' zloupotrebleniia komandoi WALLOPS, rekomenduetsia ogranichit' ego ispol'zovanie dlia obychnykh pol'zovatelei.
Chislovye otvety:
ER_NEEDMOREPARAMS
PING / PONG
Parametry:[]
PING ispol'zuetsia dlia proverki nalichiia aktivnosti klienta na drugom kontse soedineniia. Eto soobshchenie posylaetsia s reguliarnymi intervalami, esli ne zamecheno drugoi aktivnosti, iskhodiashchei ot soedineniia.
Esli klient ne posylaet PONG v otvet na PING - soedinenie zakryvaetsia.
Chislovye otvety:
ERR_NOORIGIN ERR_NOSUCHSERVER
ISON
Parametry:{}
Prinimaet v kachestve parametra spisok pol'zovatelei, razdelennykh probelami.
Server vozvrashchaet spisok tekh iz nikh, kotorye v dannyi moment nakhodiatsia v seti, v vide razdelennogo probelami spiska.
Esli ni odin iz nikh ne nakhoditsia v seti, server vozvrashchaet pustoi spisok.
Chislovye otvety:
RPL_ISON ERR_NEEDMOREPARAMS
USERHOST
Parametry:{}
Komanda USERHOST trebuet spisok do 5-ti nikneimov, razdelenykh probelami i vozvrashchaet informatsiiu o kazhdom nikneime, kotoryi byl naiden.
Chislovye otvety:
RPL_USERHOST ERR_NEEDMOREPARAMS
Primery:
USERHOST Wiz Michael Marty p // USERHOST zapros informatsii o nikneimakh "Wiz", "Michael", "Marty" i "p"
VERSION
Parametry:[]
Vozvrashchaet versiiu servera , ili tekushchego servera, esli etot parametr ne opredelen.
Chislovye otvety:
ERR_NOSUCHSERVER RPL_VERSION
INFO
Parametry:[]
Vozvrashchaet informatsiiu o tekushchem servere. Informatsiiu vkliuchaet versiiu servera, datu ego kompiliatsii, informatsiiu o nalozhennykh patchakh, date zapuska, i liubuiu druguiu informatsiiu, kotoraia mozhet iavliat'sia nuzhnoi.
Chislovye otvety:
ERR_NOSUCHSERVER RPL_INFO RPL_ENDOFINFO
ADMIN
Parametry:[]
Vozvrashchaet informatsiiu ob administratore ukazannogo ili tekushchego servera, kotoraia soderzhitsia v konfig-faile.