#!/bin/sh # MetaCard 2.4 stack # The following is not ASCII text, # so now would be a good time to q out of more exec mc $0 "$@" IRC 1 F bd U Lucida Grande U Monaco U Monaco cREVGeometryCache stackID 1037 cREVGeneral bookmarks debugObjects handlerList scriptSelection char 1 to 0prevHandler tempScript script @ d cREVGeometryCacheIDs 1064164370789 10291064164356884 10281064163717875 10251063851621046 10051063851809058 10091064164379049 10301064164777974 10351064163471386 10241063926365621 10141063927935257 10201063851809028 10081064164754411 10331064164764608 10341063851593006 10031063927932637 10191064164786232 10361063926416006 10161064164343687 10271064164794290 10371063853177167 10101063930624701 10211064164012615 10261063892232505 1013 cREVGeometrycache total 23order 1063926365621 nick i` l cREVGeneral revUniqueID 1063851593006 #Xdcc.com Send custom Ep on mouseUp repeat for each line theLine in field "command" put theLine & crlf after output end repeat write output to socket field "server" end mouseUp L R cREVGeneral scriptChecksum $bݸb -+ handlerList mouseUpbreakPoints scriptSelection char 97 to 96revUniqueID 1063851621046 bookmarks tempScript prevHandler mouseUpscript
on mouseUp
repeat for each line theLine in field "command"
put theLine & crlf after output
end repeat
write output to socket field "server"
end mouseUp
server i` cREVGeneral revUniqueID 1063851809028 efnet.demon.co.uk:6666 Field 1 d cREVGeneral revUniqueID 1063851809058 Server: close Ep on mouseUp write "QUIT :I am finished" & crlf to socket field "server" close socket field "server" put "closed socket" &comma& the result & comma & the opensockets & return before field "log" end mouseUp R cREVGeneral scriptChecksum B@,ӏ$revUniqueID 1063853177167 bookmarks handlerList mouseUptempScript prevHandler mouseUpscriptSelection char 125 to 124script aon mouseUp
write "QUIT :I am finished" & crlf to socket field "server"
close socket field "server"
put "closed socket" &comma& the result & comma & the opensockets & return before field "log"
end mouseUp
Read Epon mouseUp read from socket field "server" until crlf with message "finished" end mouseUp on finished theHost theMessage if theMessage is not empty then put theMessage & return before field "log" if word one of theMessage = "PING" then write "PONG Bjoernke" & crlf to socket field "server" put "PONG Bjoernke" & return before field "log" end if end if read from socket field "server" until crlf with message "finished" end finished 3 R cREVGeneral scriptChecksum pB}ft bookmarks revUniqueID 1063892232505handlerList mouseUp finishedscriptSelection char 386 to 385prevHandler mouseUptempScript scripton mouseUp
read from socket field "server" until crlf with message "finished"
end mouseUp
on finished theHost theMessage
if theMessage is not empty then
put theMessage & return before field "log"
if word one of theMessage = "PING" then
write "PONG Bjoernke" & crlf to socket field "server"
put "PONG Bjoernke" & return before field "log"
end if
end if
read from socket field "server" until crlf with message "finished"
end finished
log )` [ cREVGeometry Master,movevDistance falseMaster,scalebottomDistance -6Master,expectedRect 4,166,358,370Master,scaleBottomObjectSide BottomMaster,movehDistance falseMaster trueMaster,scaleRightAbsolute trueMaster,scaleRight trueMaster,scaleBottomObjectRef cardMaster,scalerightDistance -5Master,scaleRightObjectSide RightMaster,scaleRightObjectRef cardMaster,scaleBottomAbsolute trueMaster,cardRanking 2Master,scaleBottom trueMaster,scaletopDistance Master,scaleleftDistance cREVGeneral revUniqueID 1063926365621 Click "Connect" to open a socket, then click "Read" (only neccessary once) and finally use the "custon command" button to login. CJoin a channel using the Drop down, send messages in the same way. READ THE RFC OR BE CONFUSED!!! JI advise to not use the LIST command, it generates much too much traffic. ` N connect Epon mouseUp open socket to field "server" --write "NICK" && field "nick" && crlf to socket field "server" --write "PASS" && "PROT" & crlf to socket field "server" --write "USER" && field "nick" && "bvg.kicks-ass.org localhost" && colon & field "user" & crlf to socket field "server" --read from socket field "server" until crlf --put it &comma& the result & comma & the opensockets beep end mouseUp R cREVGeneral scriptChecksum P5߁!nnJKRbreakPoints handlerList mouseUpscriptSelection char 48 to 47 bookmarks revUniqueID 1063926416006prevHandler mouseUptempScript script eon mouseUp
open socket to field "server"
--write "NICK" && field "nick" && crlf to socket field "server"
--write "PASS" && "PROT" & crlf to socket field "server"
--write "USER" && field "nick" && "bvg.kicks-ass.org localhost" && colon & field "user" & crlf to socket field "server"
--read from socket field "server" until crlf
--put it &comma& the result & comma & the opensockets
beep
end mouseUp
command i` @ 2 cREVGeneral revUniqueID 1063927932637 PASS 0 NICK Bjoernke )USER Bjoernke 0 bar :Bjoernke von Gierke Field 1 , z cREVGeneral revUniqueID 1063927935257 Custom Command: Send Ep kon mouseUp write the label of button "nick" && field "nick" & crlf to socket field "server" end mouseUp R cREVGeneral scriptChecksum 9npM7BlvbreakPoints handlerList mouseUpscriptSelection char 45 to 44 bookmarks revUniqueID 1063930624701prevHandler mouseUptempScript script 9on mouseUp
write the label of button "nick" && field "nick" & crlf to socket field "server"
end mouseUp
Nick e b JOIN JOIN PRIVMSG PART cREVGeneral revUniqueID 1064163471386 Field 1 z cREVGeneral revUniqueID 1064163717875 Log: Show RFC p 9on mouseUp go to stack "RFC" as modeless end mouseUp d R cREVGeneral scriptChecksum T;?ZcPJ= bookmarks revUniqueID 1064164012615handlerList mouseUpscriptSelection char 44 to 43prevHandler tempScript scripton mouseUp
go to stack "RFC" as modeless
end mouseUp
Graphic 1 KF X _ cREVGeneral revUniqueID 1064164343687 Graphic 2 KF } ~ ~ cREVGeneral revUniqueID 1064164356884 Graphic 3 KF b u c cREVGeneral revUniqueID 1064164370789 Graphic 4 KF a ` X b b cREVGeneral revUniqueID 1064164379049 Graphic 5 KF q r ~ cREVGeneral revUniqueID 1064164754411 Graphic 6 KF } ` ~X ~ cREVGeneral revUniqueID 1064164764608 Graphic 7 KF / 0 0 cREVGeneral revUniqueID 1064164777974 Graphic 8 KF / 0 J cREVGeneral revUniqueID 1064164786232 Graphic 9 KF I ^ JZ J cREVGeneral revUniqueID 1064164794290 RFC 1 b cREVGeometryCache stackID 1006 @ cREVGeometryCacheIDs 1064157530754 10051064157540788 10061064157373724 1003 cREVGeometrycache total 3order *1064157373724 1064157530754 1064157540788 rfc )` l cREVGeometry Master,scaleBottomObjectSide BottomMaster,movehDistance falseMaster trueMaster,scaleTopObjectRef cardMaster,scaleLeftObjectRef cardMaster,scaleBottomObjectRef cardMaster,scaleBottomAbsolute trueMaster,scaleBottom trueMaster,scaleTopObjectSide TopMaster,scaleLeftObjectSide LeftMaster,expectedRect 4,4,398,398Master,scalebottomDistance -26Master,movevDistance falseMaster,scaleRightAbsolute trueMaster,scaleRight trueMaster,scalerightDistance -2Master,scaleTopAbsolute trueMaster,scaleLeftAbsolute trueMaster,scaleRightObjectRef cardMaster,scaleRightObjectSide RightMaster,scaleTop trueMaster,scaleLeft trueMaster,cardRanking 4Master,scaleleftDistance 4Master,scaletopDistance 4 cREVGeneral revUniqueID 1064157373724 INetwork Working Group C. Kalt IRequest for Comments: 2812 April 2000 Updates: 1459 Category: Informational 7 Internet Relay Chat: Client Protocol Status of this Memo G This memo provides information for the Internet community. It does G not specify an Internet standard of any kind. Distribution of this memo is unlimited. Copyright Notice D Copyright (C) The Internet Society (2000). All Rights Reserved. IESG NOTE: I The IRC protocol itself enables several possibilities of transferring F data between clients, and just like with other transfer mechanisms H like email, the receiver of the data has to be careful about how the I data is handled. For more information on security issues with the IRC G protocol, see for example http://www.irchelp.org/irchelp/security/. Abstract E The IRC (Internet Relay Chat) protocol is for use with text based I conferencing; the simplest client being any socket program capable of connecting to the server. C This document defines the Client Protocol, and assumes that the < reader is familiar with the IRC Architecture [IRC-ARCH]. Table of Contents H 1. Labels ..................................................... 3 H 1.1 Servers ................................................ 3 H 1.2 Clients ................................................ 3 H 1.2.1 Users ............................................. 4 H 1.2.1.1 Operators .................................... 4 H 1.2.2 Services .......................................... 4 H 1.3 Channels ............................................... 4 H 2. The IRC Client Specification ............................... 5 H 2.1 Overview ............................................... 5 H 2.2 Character codes ........................................ 5 H 2.3 Messages ............................................... 5 IKalt Informational [Page 1] IRFC 2812 Internet Relay Chat: Client Protocol April 2000 H 2.3.1 Message format in Augmented BNF ................... 6 H 2.4 Numeric replies ........................................ 8 H 2.5 Wildcard expressions ................................... 9 H 3. Message Details ............................................ 9 H 3.1 Connection Registration ................................ 10 H 3.1.1 Password message .................................. 10 H 3.1.2 Nick message ...................................... 10 H 3.1.3 User message ...................................... 11 H 3.1.4 Oper message ...................................... 12 H 3.1.5 User mode message ................................. 12 H 3.1.6 Service message ................................... 13 H 3.1.7 Quit .............................................. 14 H 3.1.8 Squit ............................................. 15 H 3.2 Channel operations ..................................... 15 H 3.2.1 Join message ...................................... 16 H 3.2.2 Part message ...................................... 17 H 3.2.3 Channel mode message .............................. 18 H 3.2.4 Topic message ..................................... 19 H 3.2.5 Names message ..................................... 20 H 3.2.6 List message ...................................... 21 H 3.2.7 Invite message .................................... 21 H 3.2.8 Kick command ...................................... 22 H 3.3 Sending messages ....................................... 23 H 3.3.1 Private messages .................................. 23 H 3.3.2 Notice ............................................ 24 H 3.4 Server queries and commands ............................ 25 H 3.4.1 Motd message ...................................... 25 H 3.4.2 Lusers message .................................... 25 H 3.4.3 Version message ................................... 26 H 3.4.4 Stats message ..................................... 26 H 3.4.5 Links message ..................................... 27 H 3.4.6 Time message ...................................... 28 H 3.4.7 Connect message ................................... 28 H 3.4.8 Trace message ..................................... 29 H 3.4.9 Admin command ..................................... 30 H 3.4.10 Info command ...................................... 31 H 3.5 Service Query and Commands ............................. 31 H 3.5.1 Servlist message .................................. 31 H 3.5.2 Squery ............................................ 32 H 3.6 User based queries ..................................... 32 H 3.6.1 Who query ......................................... 32 H 3.6.2 Whois query ....................................... 33 H 3.6.3 Whowas ............................................ 34 H 3.7 Miscellaneous messages ................................. 34 H 3.7.1 Kill message ...................................... 35 H 3.7.2 Ping message ...................................... 36 H 3.7.3 Pong message ...................................... 37 H 3.7.4 Error ............................................. 37 IKalt Informational [Page 2] IRFC 2812 Internet Relay Chat: Client Protocol April 2000 H 4. Optional features .......................................... 38 H 4.1 Away ................................................... 38 H 4.2 Rehash message ......................................... 39 H 4.3 Die message ............................................ 39 H 4.4 Restart message ........................................ 40 H 4.5 Summon message ......................................... 40 H 4.6 Users .................................................. 41 H 4.7 Operwall message ....................................... 41 H 4.8 Userhost message ....................................... 42 H 4.9 Ison message ........................................... 42 H 5. Replies .................................................... 43 H 5.1 Command responses ...................................... 43 H 5.2 Error Replies .......................................... 53 H 5.3 Reserved numerics ...................................... 59 H 6. Current implementations .................................... 60 H 7. Current problems ........................................... 60 H 7.1 Nicknames .............................................. 60 H 7.2 Limitation of wildcards ................................ 61 H 7.3 Security considerations ................................ 61 H 8. Current support and availability ........................... 61 H 9. Acknowledgements ........................................... 61 H 10. References ................................................ 62 H 11. Author's Address .......................................... 62 H 12. Full Copyright Statement .................................. 63 1. Labels H This section defines the identifiers used for the various components of the IRC protocol. 1.1 Servers F Servers are uniquely identified by their name, which has a maximum D length of sixty three (63) characters. See the protocol grammar F rules (section 2.3.1) for what may and may not be used in a server name. 1.2 Clients F For each client all servers MUST have the following information: a B netwide unique identifier (whose format depends on the type of 7 client) and the server which introduced the client. IKalt Informational [Page 3] IRFC 2812 Internet Relay Chat: Client Protocol April 2000 1.2.1 Users D Each user is distinguished from other users by a unique nickname E having a maximum length of nine (9) characters. See the protocol G grammar rules (section 2.3.1) for what may and may not be used in a nickname. C While the maximum length is limited to nine characters, clients B SHOULD accept longer strings as they may become used in future evolutions of the protocol. 1.2.1.1 Operators C To allow a reasonable amount of order to be kept within the IRC G network, a special class of users (operators) is allowed to perform F general maintenance functions on the network. Although the powers E granted to an operator can be considered as 'dangerous', they are E nonetheless often necessary. Operators SHOULD be able to perform I basic network tasks such as disconnecting and reconnecting servers as G needed. In recognition of this need, the protocol discussed herein E provides for operators only to be able to perform such functions. 3 See sections 3.1.8 (SQUIT) and 3.4.7 (CONNECT). F A more controversial power of operators is the ability to remove a H user from the connected network by 'force', i.e., operators are able ? to close the connection between any client and server. The C justification for this is very delicate since its abuse is both H destructive and annoying, and its benefits close to inexistent. For E further details on this type of action, see section 3.7.1 (KILL). 1.2.2 Services G Each service is distinguished from other services by a service name I composed of a nickname and a server name. As for users, the nickname B has a maximum length of nine (9) characters. See the protocol G grammar rules (section 2.3.1) for what may and may not be used in a nickname. 1.3 Channels E Channels names are strings (beginning with a '&', '#', '+' or '!' E character) of length up to fifty (50) characters. Apart from the H requirement that the first character is either '&', '#', '+' or '!', G the only restriction on a channel name is that it SHALL NOT contain H any spaces (' '), a control G (^G or ASCII 7), a comma (','). Space E is used as parameter separator and command is used as a list item D separator by the protocol). A colon (':') can also be used as a H delimiter for the channel mask. Channel names are case insensitive. IKalt Informational [Page 4] IRFC 2812 Internet Relay Chat: Client Protocol April 2000 G See the protocol grammar rules (section 2.3.1) for the exact syntax of a channel name. G Each prefix characterizes a different channel type. The definition F of the channel types is not relevant to the client-server protocol G and thus it is beyond the scope of this document. More details can E be found in "Internet Relay Chat: Channel Management" [IRC-CHAN]. 2. The IRC Client Specification 2.1 Overview C The protocol as described herein is for use only with client to ; server connections when the client registers as a user. 2.2 Character codes F No specific character set is specified. The protocol is based on a C set of codes which are composed of eight (8) bits, making up an G octet. Each message may be composed of any number of these octets; G however, some octet values are used for control codes, which act as message delimiters. F Regardless of being an 8-bit protocol, the delimiters and keywords H are such that protocol is mostly usable from US-ASCII terminal and a telnet connection. A Because of IRC's Scandinavian origin, the characters {}|^ are G considered to be the lower case equivalents of the characters []\~, ? respectively. This is a critical issue when determining the 2 equivalence of two nicknames or channel names. 2.3 Messages F Servers and clients send each other messages, which may or may not B generate a reply. If the message contains a valid command, as D described in later sections, the client should expect a reply as I specified but it is not advised to wait forever for the reply; client ? to server and server to server communication is essentially asynchronous by nature. F Each IRC message may consist of up to three main parts: the prefix C (OPTIONAL), the command, and the command parameters (maximum of I fifteen (15)). The prefix, command, and all parameters are separated - by one ASCII space character (0x20) each. IKalt Informational [Page 5] IRFC 2812 Internet Relay Chat: Client Protocol April 2000 E The presence of a prefix is indicated with a single leading ASCII I colon character (':', 0x3b), which MUST be the first character of the H message itself. There MUST be NO gap (whitespace) between the colon G and the prefix. The prefix is used by servers to indicate the true I origin of the message. If the prefix is missing from the message, it G is assumed to have originated from the connection from which it was B received from. Clients SHOULD NOT use a prefix when sending a E message; if they use one, the only valid prefix is the registered ( nickname associated with the client. G The command MUST either be a valid IRC command or a three (3) digit % number represented in ASCII text. G IRC messages are always lines of characters terminated with a CR-LF D (Carriage Return - Line Feed) pair, and these messages SHALL NOT F exceed 512 characters in length, counting all characters including F the trailing CR-LF. Thus, there are 510 characters maximum allowed B for the command and its parameters. There is no provision for H continuation of message lines. See section 6 for more details about current implementations. &2.3.1 Message format in Augmented BNF I The protocol messages must be extracted from the contiguous stream of H octets. The current solution is to designate two characters, CR and D LF, as message separators. Empty messages are silently ignored, D which permits use of the sequence CR-LF between messages without extra problems. A The extracted message is parsed into the components