Site hosted by Angelfire.com: Build your free website today!

The IRC Command Cosmos

Guide to advanced IRC commands

Ed. note: This guide is intended for advanced users, others should first check out our many introductory help files. As the author pointed out, this guide is primarily for users of the Windows mIRC client on Undernet, but much of this information applies to other clients and networks as well.

Edition 1.4 June 98
Up to date on IRCu2.10.04

mirrored with permission from the original page by R. Nybo

1. Introduction
 1.1 Why this guide? 
 1.2 What does The IRC Command Cosmos contain? 
 1.3 Contacting Author and getting latest version
 1.4 Credits
 1.5 Updates

2. A look at the who and whois commands
 2.1 Searching for people
  2.1.1 Searching by address
  2.1.2 Searching by nick
  2.1.3 Searching it all
  2.1.4 Note on invisibility
 2.2 Getting an IRCop quick
 2.3 Getting seconds idle
 2.4 Looking into a channel from outside
 2.5 Advanced WHO parameters
  2.5.1 Format of the new /who query
  2.5.2 Bugfixes and changes in the WHO command. 
 2.6 Whowas
 2.7 Extra, small features. 

3. Miscellaneous commands
 3.1 motd
 3.2 silence
 3.3 Notice
 3.4 ISON
 3.5 userhost / userip
 3.6 lusers
 3.7 server
 3.8 quit
 3.9 Wallchops
 3.10 nickmodes
  3.10.1 All the modes for a nick
  3.10.2 Server notice masks
  3.10.3 Finding peoples modes
 3.11 channelinfo
  3.11.1 names
  3.11.2 Knowing all about a channel
 3.12 The networkstructure
  3.12.1 map
  3.12.2 links
  3.12.3 trace
 3.13 Info about server and serversoftware
  3.13.1 time
  3.13.2 version
  3.13.3 Decoding serveroptions in "version"
  3.13.4 help
  3.13.5 info
  3.13.6 admin
  3.13.7 /raw dns
 3.14 Extended list command
 3.15 Cnotice/Cprivmsg. A "too many targets" exception
 3.16 More about /JOIN and making of channels
  3.16.1 The modeless channel. Equality by simplicity
 3.17 Comment in /PART

4. STATS. Query for retrieving various data and statistics
 4.1 Who's allowed in and how. 
  4.1.1 k   K-line
  4.1.2 g   G-line
  4.1.3 i   I-line
  4.1.4 o   O-line
  4.1.5 y   Y-line
 4.2 Server-server connections
  4.2.1 c
  4.2.2 d
  4.2.3 h/H
  4.2.4 U (uppercase) 
 4.3 Statistic-related commands
  4.3.1 m
  4.3.2 l
  4.3.3 p
  4.3.4 t (lowercase) 
  4.3.5 z
  4.3.6 w
  4.3.7 r and x
 4.4 Other STATS queries
  4.4.1 u (lowercase u) 
  4.4.2 T (uppercase T) 
 4.5 Current queries with remote capabilities

5. A few tricks, explanations & an important feature
 5.1 A look under the hood
 5.2 Siamese message
 5.3 Address converting
 5.4 "Shutting their mouth." Powerfull chanops-feature
 5.5 Scandinavian letters
 5.6 What's a ping?  (Quick explanation) 
 5.7 What's this "bandwidth" they'r talking about [all the time]? 
 5.8 The statistics' trick
 5.9 /mode, a command on its own
 5.10 ET "Eerie Trick" revealed. 
 5.11 what IS "lines"?
 5.12 Invite overcome everything


6. The logon procedure
7. Other resources and plans for the future
 7.1 Plans for IRCu
 7.2 Resources
  7.2.1 Undernet Channels
  7.2.2 Web and FTP
 7.3 Plans for the Command Cosmos

1. Introduction

1.1 Why this guide?

With this guide, I will try to supplement the average IRC-guides around, as they tend to teach only the basic commands, the others are harder to find the documentation for. This guide tries to gather all of them, with explanations, as they might harbour interesting information for others than me. :-) (Section 5.4 beeing a good example.)

1.2 What does The IRC Command Cosmos contain?

By "advanced commands" I've included every command and feature not described under "Basic IRC commands" in the mIRC helpfile, except operator and X/W commands. Some are well known, like wildcards in WHO, while the STATS queries are less documented. I've also added a couple of ideas in between, about how the commands could supply som fun statistics.

The commands are both common IRC commands and Undernet-only and I've tried to state when they'r so. In later editions, I might get to include Efnet, Dalnet and Ircnet commands and features, but I'll need some help on that. (Commands anyone? :-)

The examples are from a mIRC point of view, but no mirc-only commands, like "/amsg" is included. (with a few, stated, exceptions) (OBS: Other clients might use /quote instead of /raw in the examples.)

This edition (1.2) should be complete, as of ver. 2.10.03 of Ircu.

1.3 Contacting Author and getting latest version

My name is Roar Nybo and my e-mail address is fenris@vestdata.no. I'm also on Undernet now and then, under the nickname Gurglemel. The latest version (html, Ascii text, and zipped txt) should be found at: http://www.vestdata.no/~fenris/ccosmos.html, ccosmos.txt and ccosmos.zip. (pkzip)

The guide is also mirrored at http://www.irchelp.org/irchelp/misc/ccosmos.html (faster for you americans.)

Feel free to e-mail me with corrections, suggestions and comments. It would be interesting to hear how you are using this guide and what you like and dislike. As for quoting and noncommercial distribution: Go ahead, as long as the guides' name and preferrably a link to its original location is added; and the guide when distributed, isn't altered.

1.4 Credits

I would like to thank the #wasteland crew for their help, and especially Nemesi, who gave invaluable help with the STATS queries. Other I'd like to mention is Cym, Blubb and Ferrago for answearing lotsof questions, Charlie and Poptix for help with the serveroptions and Ghostwolf for letting me include his server-notices masking documentation, (Snomaskdoc) in this guide. I've also copied a "scandinavian characters explanation" from a document by Ladybug and luru, Pasted parts of the "who-query documentation" and gotten a handy mirc alias from Rainman. (If there's someone I've forgot: thanks to those too :-)

1.5 Updates

Changes from edition 1.00 to 1.10

Theese updates mainly consist of reading the version-info and patches at and getting the latest version of the sourcecode if necessary.

This guide is now also available at !

"WHO" has been rewritten. You read it first on:

2.5 Advanced WHO parameters

2.5.1 Format of the new /who query

2.5.2 Bugfixes and changes in the WHO command.

Citizens celebrate as 3 and a half brand new commands are introduced:

3.5 userhost/userip Host and away-status presented

3.15 Cnotice/Cmsg. A "too many targets" exception

4.1.2 Added info about "local G-lines"

FYI: "3.14 local channels" is put as a paragraph in "2.7 Extra, small features"

More new stuff:

5.12 Invite overcome everything.

3.13.3 serveroptions in "version" rewritten for ircu2.10.01

Influenced by USERIP:

3.2 silence

4.1.1 K-line

Minor changes:

4.3.1 /stats m

4.3.6 /stats w

2. A look at the who and whois commands

Who and whois is the way you get hold of information about other people. While whois searches for nicks, who is searching according to address, nick, realname, e.t.c

2.1 Searching for people

2.1.1 Searching by address

Example:

/who *.fiddledep.gov

This lists all nicks using the the Fiddle Departments hosts. The command is usefull for finding people from your own host and geographical area and finding people who tend to change their nicks often.

Example:

Your ISP gives people from your area DNS-addresses ending with "smalltown.wasanet.se" for example modem30.ppp.smalltown.wasanet.se Typing "/who *.smalltown.wasanet.se" then might reveal people from your area.

2.1.2 Searching by nick

You can use wildcards like * and ? in a whois-query also. Here are some examples:

"/whois *sam*" will give you nicks like Samantha, Sam47, Sam or Tarsam.

"/whois ??". This neat command displays everyone with a nick of 2 letters, like Ma and V2.

Note:

The channels in the whois-reply is sorted with the channel he/she joined first as the rightmost.

2.1.3 Searching it all

The first line in a whois-reply might look like this:

Xerxes is johnbg@ppp52.netomania.com * John Bertram Garfunkel

using wildcards, we're able to search for anything in that line. Even the Namefield.

"/who *garfunkel*", "/who *netomania*", "/who *xerx*", "/who john*" and "/who *funk*" will all reveal his name if he is visible.

"/who fullservername" lists people using that irc-server. (wildcards allowed) so if he's on sandiego.ca.us.undernet.org, "/who *diego*" would reveal him and others as well. (Use /lusers with servername, as described in 3.6 if you'r just going to count people on a server.)

Note:

This shows that beeing visible and writing "I'm from Essex" in the namefield might not be such a good idea if some jerk is mass- messaging everyone that matches "/who *sex*" Again, be aware that the namefield IS searchable.

See section 3.10.3 (Finding peoples modes) for explanation of details in the "/who nickname" output. Also note that "/who" searches each of the "information fields" (nick, login, real name, host name and server name) separately so you can't filter, you must do an individual search for each field.

(E.g looking for a jane in the UK, means looking in output from "/who *jane*" or "/who *uk*")

Clarifying example: (hehe)

"/who *uk* *jane*" would search for the string "uk" and ignore jane. Anyone on server london.uk.undernet.org, anyone beeing under the uk domain, and as well one named "TickTuk the dysclicktac clock" would match.

Also, "/who *uk*jane*" is simply compared as and with one string in one field at a time, and might turn up weird namefields like: "WARNING! THIS IS A UKJIT!! (Undercover Karate Janet In Training)" but NOT: "Janet" as nick, using server "london.uk.undernet.org".

2.1.4 Note on invisibility

As you might know, invisible people won't show up when searched for with /who, /who #chan and not on /whois with wildcards. The object beeing that no one can find them if they don't know the exact nickname. I believe that in the future the searchmethods described above, might become practically obsolete, as some servers already have the policy of putting people automatically on +i, which do save the clients a lot of trouble. You can hide by changing nick, people can't mass-message everyone on your ISP and you'r not visible from outside a channel. Today roughly half the nicks on Undernet is set invisible.

The "secret" (+s) setting of a channel has the same purpose: You got to know the name to find it. Secret chans dosn't show up in a "/whois nick" query made by outsiders, and in addition, you can't use /who or /names on it from outside.

+i for nicks and +s for chans can be summarized in this purpose: "You won't see them (+i/+s nicks/chans) unless they let you, or see you first."

Note:

+p for a channel is just like +s, except you are allowed to use /who and /names on a +p. And though you can't use /who or /names on a secret channel, you can do /mode #channel to verify its existance.

2.2 Getting an IRCop quick

This is the command they teach you in the helpchannels: "/who 0 o." (/who zero o) The 0 specifies everyone, and the o singles out the IRCops. What you get is a list of ops, and so you can msg them directly, instead of running around in channels, looking for them. :- )

Note:

/who 0 or * should bring up every visible nick on the network, but on Undernet it has been limited to 251 nicks. (Sending every nick would flood you)

2.3 Getting seconds idle

Description:

The idle time is how long the nick has been silent towards its IRC-server. In other words: Beeing quiet. Only the server that the nick is connected to "knows" this. Knowing the idle-time is usefull if you wonder if the person has left the keyboard withouth putting on an away-message, or might just be ignoring you. :-) It could also be used successfully as a "silent ping" as it can give you the lag from you to the nicks server. (Lag consists mostly of that). Just take the time from you send the command to you receive the reply, and divide with 2. That's how many seconds it take for a message from you to reach the persons server.

Syntax:

"/whois nick nick" or "/whois fullservername nick" where fullservername is the nicks server.

the first syntax is available from ircu2.10.00, and is probably not available on non-Undernet networks. The second should work everywhere. What technically happens, is your everyday whois-request beeing transmitted to a remote server.

Examples:

Xerxes is on stlouis, we're some other place: "/whois stlouis.mo.us.undernet.org Xerxes"

We get a whois with Xerxes' idle-time:

Xerxes is johnbg@ppp52.netomania.com * John Bertram Garfunkel

Xerxes on #Creedence #Japanese.baseballcards @#old_boats

Xerxes using StLouis.MO.US.UnderNet.org StLouis' Gateway to the UnderNet

Xerxes has been idle 50min 12secs, signed on Thu Aug 1 15:35:23

End of /WHOIS list.

Note:

1. If you and the nick is on the same server, a common /whois will be enough.

2. The chatting in a DCC-chat dosn't go through the IRC-network, and so is not detected by idle-time. An alternative "ping" could be to use the CTCP userinfo (/ctcp nick userinfo) as atleast mIRC supplies an idletime for the whole program in the userinfo-reply; but this isn't "silent".

3. It's standard to only nullify idle-time when nick uses PRIVMSG. That is, sending a message to a nick or a channel. /notice does not qualify. See 3.13.3 about server options to determine if the server uses the standard setting, 5.7 for explanation of why it lags and "The statistics' trick" (5.8) for an idea about lag-maps.

2.4 Looking into a channel from outside

"/who #channel" will give you the names of visible people inside a chan. But you can also use the "/names" command. (3.11.1)

Note:

mIRC has a client-service to filter the output of the /who #channel command. "/who #channel host/domain" will display everyone that "/who #channel" lists and that matches the host or domain. Example: "/who #asia *.my" displays everyone in #asia that's from Malaysia. (Your connection recieves the whole list, mIRC is doing the filtering, so large channels might flood you)

2.5 Advanced WHO parameters

In ircu2.10.01, the /WHO command were rewritten to let the user decide more about the output of the command.

Now you and your script will be able to count people away on a channel or see how many hops away they are, by a single command to the server. And the output could be filtered for your convenience. The new /who is backward compatible.

2.5.1 Format of the new /who query

---------Start cut from ircu-patching documentation-------------

:source WHO "masklist" ["flaglist"[,"quertype"]] ["masklist"]

"masklist" ::= "nowildlist" | "wildmask"

"wildmask" ::= "mask" (matched against all the fields)

"nowildlist" ::= ( channel | nick ) [ , ( channel | nick ) ]...

"flaglist" ::= [(filterflag)]... ['%' (formatflag)... ]

"filterflag" ::= o | x

"formatflag" ::= c | u | i | h | s | n | f | d | r | t

"querytype" ::= Any number in the range 0-999 (defaults to 0)

Where the 'o' in filterflag has the known "/who 0 o" usage

and what comes after the '%' specifies the fields to be included

(order and case is not significative)

The 'x' filter flag is needed for Opers to get the extra features that might be compiled in (if the admin configured it): Seeing also invisible (+i) users and/or seeing who is in a secret channel from the outside.

[Ed: Can also be set to prevent truncation of long /who replies. If this filterflag and the features are available to Opers/Locops or not, seems to depend on the servers' admin. Logging of this filterflag is recommended in the setup to avoid misuse. There are no letters in the version-reply to identify the settings. As far as I've gathered, Operators has always been able to see invisible users, and lately also into +s/p channels.]

c : Include (first) channel name

d : Include "distance" in hops (hopcount)

f : Include flags (all of them)

h : Include hostname

i : Include IP

n : Include nick

r : Include real name

s : Include server name

t : Include the querytype in the reply

u : Include userID with eventual ~

The default is a %cuisnfr that reports all the _standard_ fields

(it does NOT report the hopcount since it is no more included

into the real name)

The reply can be in two forms:

If no %flags are specified the reply is _exactly_ the same as

has always been, numeric 352, same fields, same order.

If one or more %flags are specified the reply uses a new numeric,

since an out-of-standard 352 crashes EPIC and confuses several other

clients. I used 354.

:"source" 354 "target" ["querytype"] ["channel"] ["user"]

["IP"] ["host"] ["server"] ["nick"]

["flags"] ["hops"] [:"realname"]

Where only the fields specified in the %flags are present.

"querytype" is the same value passed in the /who command, it

is provided to simplify scripting, in example one could pass

a certain value in the query and have that value "signal" back

what is to be done with those replies.

[...]

- The client will have to sort/format the fields by itself, the _order_ in wich flags are passed is not significant,

the fields in the reply will always have the same order.

- The maximum number of _lines_ reported as reply for a query is 2048/(n+4) where 'n' is the number of flags

"enabled" that is the number of fields included in each reply.

Actually: 1 field returned = maximum 409 replies

2 fields returned = maximum 341 replies

3 fields returned = maximum 292 replies

4 fields returned = maximum 256 replies

5 fields returned = maximum 227 replies

6 fields returned = maximum 204 replies

7 fields returned = maximum 186 replies (defalut query)

8 fields returned = maximum 170 replies

9 fields returned = maximum 157 replies

10 fields returned = maximum 146 replies

You can manage to have even less lines if you care to specify

a flag more than once and/or specify unexisting flags ;-)

If the limit is reached before completing the query the reply is truncated and a new numeric message is issued after

the "End of WHO", anyway the "end of" numeric is _always_ sent.

The actual query to match can have one of the two following forms:

- A comma-separated list of elements: in this case each element is treated as a flat channel or nick name and is not

matched to the other elements. Nicks do count in the limit of output lines (they should not be that many anyway),

channels count if who asks the query is not on the channel.

(That is: a /who #channel gives unlimited output if you are in there).

- A _single_ mask: in this case (no commas, only one element) the mask is first checked

to be a full channel or nickname, then it is matched against all relevant fiels as already known.

These happens in different steps with replicates-removal so that if one has

something like "#wasteland" as "real name" or is on a channel named "#***MyChan***" it all works nicely.

---------End cut from ircu-patching documentation-------------

Some examples:

We send this command: /who 0 o%fn and might get a reply like this:

Napoleon H*

McMini H*

Sodapunk H*@

Tordivelen G*@

Aquagirl H*

Q-Beck G*

* End of /WHO list.

Each line presents one nick and the corresponding flags. For example is Tordivelen both gone and an operator in the last channel he joined, while Aquagirl isn't set away. See 3.10.3 for explanation of the flags.

"/who #Luggage_Claim %dct,9" could return this:

9 #Luggage_Claim 3

9 #Luggage_Claim 3

9 #Luggage_Claim 1

9 #Luggage_Claim 3

9 #Luggage_Claim 3

9 #Luggage_Claim 5

9 #Luggage_Claim 3

The number 9 is a "request type field", a reference you can add for your script, so it keeps track of the replies. The rightmost numbers are the hopcount for each nick. Most of the folks seem to be 3 hops away.

Note: If you'r using a mIRC copy older than 5.3, you'll have to send the channel-whos as "/raw who #e.t.c..."

2.5.2 Bugfixes and changes in the WHO command.

Earlier, "/who *Mr. Nelson*" wouldn't report a user having "Mr. Nelson" as a realname. Now it will, but you'll have to add a bit to the mirc-standardized syntax. Send the command like this: "/who :*Mr. Nelson*".

When you want to specify the format, its slightly more complicated :-)

Try this format: "/who foo %n :*Mr. Nelson*" where "foo" is any string, asuring it is 3 parameters in all. Then it will use *Mr. Nelson* and %n as it is supposed to. The reason for the problem, was the code preventing spaces in the parameters

Earlier, visible users were treated as invisible in lookups if they were on one or more +p/+s channels. Not so anymore. They will be shown, ofcourse withouth the secret channel's name.

Now a query like "/who nick1,nick2,nick3" will return only one "** END OF WHO "

"/who #john" will now report someone having "#john" as realname and it does not report him twice if he is also on channel #john

---Start Cut---

"/who a,b,c,d" where a b c and d are channelnames/nicks now uses an hash lookup and therefore is extremely efficient, if only one field is specified, it is looked in all the fields; those who really wants only users on a specific channel or a single nick (without looking for a match in the other fields) can force the server to consider the parameter as a list adding a comma somewhere, like:

"/who #Italia," or "/who ,Nemesi"

Or even better to avoid misbehaviour with other servers:

"/who #Italia %... #Italia," or "/who Nemesi %... Nemesi,"

This will make old servers act properly and new ones and should be the reccomended way for GUI based clients to get a channel's userlist and all the infos they want about users on the channel.

---End cut---

2.6 Whowas

If someone just left IRC or changed their nick, and you wanted their DNS-address and name, the server keeps a buffer with the nicks that disappeared the last seconds. It is accessed like this: "/whowas nick" No wildcards allowed.

Note:

RFC1459 specifies this syntax for whowas:

"WHOWAS nick count server"

"server" sends the query to a remote server, and count says how many nicks it should return. No count or a non-positive number returns every matching nick. As you can't use wildcards with a /whowas, it's little use for the count on large networks, and they might have removed the feature by now. "Server" might also become obsolete, since most servers (probably) keep the same number of changes in cache. (ca 200)

2.7 Extra, small features.

The whois-command can take several nicks, like this:

/whois nick,nick,nick,nick and so can join and part: /join #chan1,#chan2,#chan3 and ditto for /who and /names. (who and names will return nick twice, if it's on two channels)

"/who *" lists everyone on the _last_ channel you joined and still is on, making it the first channel in your whois-reply. Will just flood you if you'r on none channels.

3. Miscellaneous commands

3.1 motd

Bring up your servers' "Message Of The Day". (The text you get each time you log in) "/motd fullservername" brings you the MOTD of a remote server. On Undernet, there is supposed to be a small MOTD (3 lines max) on every server, that is sent when it receives a _remote_ MOTD-query. This is done to preserve bandwidth.

Also see Stats T (4.4.2)

3.2 silence

mIRC has a very customizeable command called /ignore that will filter out everything coming from certain nicks or addresses. What it dosn't do though is stopping the crap from coming through your connection. So you could be flooded off, even with ignore on. Therefore, Undernet has implemented the /silence command. When it is used, the network won't even send you the unwanted data.

Syntax:

/silence [+/-]nick!name@host.host.dom

No error-reply is given when you message someone that has silenced you.

Example:

"/silence uglyguy!~jacktr@modem54.styx.net" silencing nickname uglyguy with matching address.

"/silence +*!*@modem54.styx.net" Anyone from his address. (In case of clones)

"/silence *!*styx.net" Anyone using this ISP. (For repeated attacks.)

when +/- are omitted, + is asumed. A setting is removed by "/silence -setting". E.g: "/silence -*!*styx.net". Typing just "/silence" will display your silence-settings. "/silence nick" will show the persons' silence-list. (Even if invisible)

Note:

Silence-settings arn't broadcasted between servers unless they'r needed. This means that if a nick on a remote server puts you on silence, and you do a "/silence nick", it won't show up. But if you try to msg or ping the person, your server gets the silence-settings and then typing "/silence nickname" will determine that you'r put on silence by nick.

This bandwidth-saving way of distributing the settings, means that you'r unlikely to get all silence-settings on someones nick when on a remote server. (But you'r not into spying on folks anyway, are you? :-)

The undernet standard setting for MAXSILES is 15, which gives you a maximum of 15 lines of silence-settings This might vary from server to server. Overlapping silences are removed. ("/silence *.dadaism.net" removes silence on "modem4.dadaism.net")

Silence-settings you want permanent, must be set every time you log in. Refer to the mIRC help for auto-send of commands when connected, and for /ignore usage. For more information about flooding and how to defend against it, join #class on Undernet, the bot there has a textfile about it. The Undernet homepages have helptexts as well.

See 3.5 (userhost / userip) for how to silence people with "virtual hostnames"

3.3 Notice

A wellknown command, acting much like /msg. The reason for having NOTICE according to RCF1459, is to define a way to send messages that should _never_ generate an automatic reply. Neither from clients nor servers. The object is to avoid loops of responses between scripts/bots, for example this quite repeating conversation:

bot1: Please send afile.txt

bot2: Sorry, I'm turned off.

bot1: I don't understand the command "Sorry, I'm turned off".

bot2: Sorry I'm turned off.

bot1: I don't understand the command "Sorry, I'm turned off".

bot2: Sorry I'm turned off.

e.t.c e.t.c e.t.c e.t.c

The bots should have sent the errormessages in NOTICE, to avoid the problem. (In addition, notice-messages are treated different than messages when displayed in mIRC.)

The syntax for NOTICE is like for PRIVMSG. (PRIVMSG is used when sending text to a channel or another client.) You can send a notice to a person, or to a channel you'r on where everyone sees it. And if the channel dosn't have +n set, you can send messages to it withouth beeing there. A ping Query/Reply is a good example of an automated PRIVMSG/NOTICE pair.

You can type /ping #channel to ping everyone on the channel you'r on. See "What's a ping?" (5.6) for a quick explanation of it.

3.4 ISON

ISON is the command used for the notify list in mIRC.

Syntax: "/ISON nick1 nick2 nick2 e.t.c"

The server replies with "ISON: nicksthatexist"

Example:

you send: "/ISON Susanne MadMex Martha29 Zygot"

(Susanne and Zygot is online)

reply: "ISON: Susanne Zygot"

Note:

One string of nicks should be no longer than 512 bytes.

3.5 userhost / userip

Returns a nicks hostaddress or IP and if it's away or not.

Syntax: /userhost nick nick [....] (max 5 nicks)

Example:

sending: /userhost RAmona Sssala

reply: "RAmona=-mummy@crypt.pyramid.eg Sssala=+snake@cage.zoo.com"

-/+ = away / not away

sending: /userip RAmona

reply: "RAmona=-mummy@994.193.192.24

The reason for userip:

Userip were implemented in ircu2.10.01 because more and more users have "virtual hostname", something that allows the person to use any sort of hostname withouth relation. E.g modem5.snowbiz.com one day and modem19.snowwomen.org another day, from the same ISP, which makes it harder to ban theese people. A ban by IP-adress would have been very effective in this case, and that is exactly what have been implemented. The ban-code has been changed so that you can ban an IP-adress even if the server has resolved his/her address as a hostname. The IP-ban has also taken effect for SILENCE (3.2) and K-lines (4.1.1 )

Example:

123.321.754 is the IP of the DNS-name "m5.camping.com". Before 2.10.1, you could ban the users' IP, but if it was resolved by irc- server to the DNS-name, the person would slip through. Not so anymore.

Tip on the syntax:

A DNS is banned like *.camping.com, but an IP must be banned as e.g 123.321* to be effective, as the IP is a number, where the ISP owns a serie of them. To find the serie you might do something like this in mIRC:

(first dynamic address (involves guessing)) "/dns m1.camping.com" ---> 123.321.750

"/dns m40.camping.com" ---> 123.321.790

"/dns m45.camping.com" ---> ? (OK. No more modems there)

You could set the ban to 123.321.7*, to ban that users ISP, and minimize the danger of banning ISPs with neighbouring numbers. (Or ban 123.321.75*, 123.321.76*, 123.321.77*, 123.321.78*, and 123.321.79* as 5 separate bans)

3.6 lusers

LUSERS lists basic global and local info.

Example:

There are 9450 users and 8163 invisible on 44 servers

37 operator(s) online

2 unknown connection(s)

10025 channels formed

I have 692 clients and 2 servers

Note:

The first line should be read as: "A total of 17613 users, 8163 of those is invisible" The number of operators includes local ops that won't show up in /who 0 o and invisible ops. You can filter this command for specific irc-servers:

Examples:

"/lusers sandiego.ca.us.undernet.org" (when beeing on sandiego) could return:

There are 301 users and 391 invisible on 2 servers

[...] I have 692 clients and 2 servers

"/lusers *.no.eu.Undernet.org" when beeing on sandiego could return:

There are 355 users and 237 invisible on 1 servers

[...] I have 0 clients and 0 servers

Meaning 355+237 users on *.no.eu.undernet.org servers currently online. Ofcourse none of them is on sandiego, hence the "0 clients".

"/lusers *.eu.undernet.org" (or just *.eu.*) shows the total number of european users.

Note: For a list of the number of users on every server, send a msg to X or W with the command "map".

3.7 server

You'r changing server with it.

Syntax:

/server servername port password

Sending this as a command to the server dosn't make much sense to me, as you loose all your connection to the net anyway. No status is preserved.

3.8 quit

You can put a reason in the quitmessage. Everyone in the chans you'r on will see it.

example: /quit Going to bed

3.9 Wallchops

From version 2.10 of the Ircu, a command to send a message to all channelops on a specific channel has been added.

Syntax:

/wallchops #chan or /notice @#chan

(Sending a NOTICE in both cases.) You should use this command instead of any "message the ops" scripts you might have, as the latter might trigger a massmessage-kick performed by the server. (Another feature of Ircu2.10)

3.10 nickmodes

3.10.1 All the modes for a nick

Here's all the modes available for a nick. Included to supply additional information along with the "Basic IRC guide" in mIRC.

Syntax: /mode <nickname> {[+|-]mode(s)}

i: Makes you invisible. (See "Note on invisibility" (2.1.4)

s: Receives server notices. You receive various information sent between servers. Mostly kills and G-lines, but also nickname collisions, invalid usernames, splits e.t.c Also see 3.10.3 for masks for this command. (Undernet only)

w: Receives wallops. The IRCops broadcast messages with this, you might even catch an IRCop-conversation! (Almost like listening to the police-radio, eh? :-P )
As for the moment, "uworld.undernet.org", that is the X/W service, uses the Wallops too.
I suppose w will be sorted as a switch under the masked s-mode sometime in the future.

g: [New in ircu2.10.04] Let you receive HACK wallops. "HACK" occurs after a desynch in the net, where the servers change channelops and stuff to mend the net like it were before.

d: Deaf in channels. (Undernet only) You won't hear a thing that's said in the channels. Private messages get trough though. Primary reason is making the job easier for service bots that dosn't want to process channel messages anyway. Makes logging of changes in chan easier for people too, and would work as a brute chan-flood stopper.

In addition, there's the operator flag, (+o) that indicates an operator, and +k that's used by W and X. No one can kick or deop "them" from a channel. The +k channel services won't have the channels they'r on in a whois or who reply. (caused flooding)

3.10.2 Server notice masks

From version 2.10 of the ircu serversoftware, a masking option of users s-mode has been implemented, as the old s-mode was a mix of many different notifications. Ghostwolf has written a document explaining the mask-feature, and this document is included here in it's entire lenght. Use the numbers in the leftmost column when sending, not the hex value.

------------Start of SNOMASKDOC------------

This document (hopefully) gives a brief explanation of the use of server notice masks

new to ircu2.10.00. This mask allows clients to specify which types of server notices

they will receive. The mask may optionally be omitted, and reasonable defaults are used.

Usage: mode <nick> +s [+/-][mask]

Mask Hex value Description

------------------------------------------------------------------------------------------------------------------------

1 SNO_OLDSNO 0x1 unsorted old messages

2 SNO_SERVKILL 0x2 server kills (nick collisions)

4 SNO_OPERKILL 0x4 oper kills

8 SNO_HACK2 0x8 desyncs

16 SNO_HACK3 0x10 temporary desyncs

32 SNO_UNAUTH 0x20 unauthorized connections

64 SNO_TCPCOMMON 0x40 common TCP or socket errors

128 SNO_TOOMANY 0x80 too many connections

256 SNO_HACK4 0x100 Uworld actions on channels

512 SNO_GLINE 0x200 glines

1024 SNO_NETWORK 0x400 net join/break, etc

2048 SNO_IPMISMATCH 0x800 IP mismatches

4096 SNO_THROTTLE 0x1000 host throttle add/remove notices

8192 SNO_OLDREALOP 0x2000 old oper-only messages

16384 SNO_CONNEXIT 0x4000 client connect/exit (ugh)

standard +s SNO_DEFAULT (SNO_NETWORK|SNO_OPERKILL|SNO_GLINE)

standard +s when +o+O SNO_OPERDEFAULT (SNO_DEFAULT|SNO_HACK2|SNO_HACK4|SNO_OLDSNO)

Only opers may set SNO_OPER (SNO_CONNEXIT|SNO_OLDREALOP)

examples:

to receive only operkills, use /mode nick +s 4

to receive operkills and glines, add the values:

/mode nick +s 516

(512+4=516)

if you are already receiving some notices and you wish to add uworld actions use:

/mode Ghostwolf +s +256

if you wish to stop receiving uworld notices, but continue to receive other notices, use:

/mode Ghostwolf +s -256

or

/mode Ghostwolf -s +256

a user doing:

/mode Ghostwolf +s

will receive netsplits/joins, operkills, and G:lines

an oper who is +s will additionally receive HACK notices and anything that was orignially

sendto_ops() that wasn't changed

only opers can choose to receive connect/exit notices and anything that was originally

sendtoreal_op() and hasn't been changed. (connect/exit notices also require a #define in

config.h)

This document written by Ghostwolf (foxxe@wolfspirit.org) last update 18-June-97

------------End of SNOMASKDOC------------

3.10.3 Finding peoples modes

You can spot a +d in the who and whois reply.

Example:

"/Who mowgli" returns: "mowgli Hd* mow@ppp-21.treetop.jungle.br :3 Baloo-Bot TM"

Hd means the user is _H_ere (as opposed to _G_one, i.o.w away) and that mode d (deaf) is on. In addition, the * tells us he's an IRC- operator (IRCop) :3 means the hopcount is 3. refer to /trace. (3.12.3)

In the /whois reply, a +d is spotted by a - after a channelname.

Example: "mowgli on -@#Junglechat" (+d mode and op.)

+o is spotted in whois by "nickname is an IRC operator"

+i is spotted by doing "/whois *nickname" and seeing if the right person pops up. If he/she dosn't, the nick is invisible.

+w and +s can't be seen by normal users. (+w due to an Undernet patch)

Note:

For address and away, also see "/userhost" (3.5).

3.11 channelinfo

3.11.1 names

Displays a list of nicks in a given channel.

Syntax: /names #channel1,#channel2,.....

Examples:

"/names #soap.opera,#talkshow".

Displays everyone on #soap.opera and #talkshow, (presenting a person twice if on both channels) and all visible nicks if you'r not on the channels.

Note:

Wildcards can't be used. Sending the query to a remote server, (/names #chan server) is not allowed on Undernet, but is mentioned in RFC1459, so others might allow it.

The list of names will be sorted according to when they joined the channel, with the newest member at the beginning. Typing just "/names" does a query on every non-secret channel on the net and is pretty useless. :-)

"/who #chan" will also give the names as a part of the reply.

3.11.2 Knowing all about a channel

Theese commands retrieve the same info as you get when you doubleclick in the channelwindow.

/mode #channel Retrieves the modes

/mode #channel b the bans

/topic #channel and the topic

Note:

Retrieving bans and topic is not possible outside a channel. At least not on Undernet. (Except topic when channellisting) The key is ofcourse not available from outside, but the channel-limit is, in ircu2.10.01 and above.

Tip: If you want to know if a channel exist, please do a /mode #chan, instead of quick and annoying join/part visits. :-)

3.12 The networkstructure

3.12.1 map

An Undernet-only command that gives a nice view of how the servers is connected to each other.

Syntax: /map

Example:

Oslo1.NO.EU.Undernet.org

`-Oslo-R.NO.EU.Undernet.org

`-lulea-r.se.eu.undernet.org

`-Amsterdam.NL.EU.undernet.org

|-Antwerpen.Be.Eu.Undernet.org

|-Diemen.NL.EU.undernet.org

|-Almere.NL.EU.Undernet.org

`-Regensburg.DE.EU.undernet.org

Here is the same part, as seen from another server:

`-Amsterdam.NL.EU.undernet.org

|-Antwerpen.Be.Eu.Undernet.org

|-Diemen.NL.EU.undernet.org

|-Almere.NL.EU.Undernet.org

`-lulea-r.se.eu.undernet.org

`-Oslo-R.NO.EU.Undernet.org

`-Oslo1.NO.EU.Undernet.org

Oslo1 is connected to Oslo-R, lulea is connected to Oslo-R and Amsterdam. e.t.c

Note: If you send a message to X or W with the text "map", you'll get a map with the number of users on each server.

3.12.2 links

LINKS displays the same information as map, but in another format, and with extra sauce.. uhm extra data! LINKS is a common IRC- command. The server mask option can sort out hosts like *.eu.undernet.org (all european hosts)

Syntax:

/LINKS [[<remote server>] <server mask>]

Example:

"/LINKS *.nl.eu.undernet.org" displays every server in Netherland.

An output in mIRC might look like this:

SanDiego.CA.US.Undernet.org (0) P10 CONNECTnet UUnet/MCI server

Dallas-R.Tx.US.Undernet.org (1) P10 Dallas Undernet Hub

Dallas.Tx.US.Undernet.org (2) P10 [127.0.0.1] Dallas Metroplex IRC Client Server

Los-Angeles-R.CA.US.Undernet.Org (2) P10 [198.245.27.2] Internet Chat Systems IRC Server

los-angeles.ca.us.undernet.org (3) P10 [198.245.24.80] Decade Communications IRC Server

Uworld.undernet.org (3) P9 [198.245.24.240] Cordinator

auckland.nz.undernet.org (3) P10 [202.14.100.6] Internet Company of New Zealand

protocol.undernet.org (3) P10 [198.245.24.190] [protocol.undernet.org] Software

Chicago-R.IL.US.Undernet.org (2) P10 [206.54.224.160] Nap Net Chicago IRC Hub

washington-r.dc.us.undernet.org (3) P10 [152.163.208.19] America Online Routing Server 1

ann-arbor.mi.us.undernet.org (3) P10 [irc.cic.net] "Use the source, luke"

The number in parenthesis is the hopcount and Sandiego was the server that replied to LINKS.

3.12.3 trace

TRACE is used to look at the path between you and another nick.

Example:

Beeing on the Oslo-server, typing "/trace Concord":

Link u2.10.00.bans3 Concord lulea-r.se.eu.undernet.org

Link u2.10.00.bans3 Concord Amsterdam.NL.EU.undernet.org

Link u2.10.00 Concord Regensburg.DE.EU.undernet.org

Link u2.10.00 Concord Baltimore-R.MD.US.Undernet.Org

Link u2.10.00 Concord Chicago-R.IL.US.Undernet.org

Link u2.10.00 Concord ann-arbor.mi.us.undernet.org

User 5 Concord[quail-2.slip.uinb.edu] 18

What it shows is that a message from me to Concord has to go through 6 server-server connections, before getting to his server. (means: hopcount=6) The last line tells hi's in class 5 on his server, and beeing idle 18 seconds. (u2.10.00 is the servers ircu- version)

Compare with the "/who Concord" reply: "Concord H conc@quail-3.slip.uinb.edu :6 Cristopher Watson" :6 means he have a hopcount of 6, relative to you.

Typing only /trace:

This is what pops up on sandiego when you do that:

First line: Serv 10 41S 20227C Dallas-R.Tx.US.Undernet.org[208.145.192.1]

second line: *!*@SanDiego.CA.US.Undernet.org 1 250589

another line: Oper 1001 TNTgal[some.address.here] 6

The first line reads: The server has 10 classes. There are 41 servers on the net. 20227 clients all in all. It is connected to Dallas-R. (A branch out from Dallas on the servertree) Second line says server 1 second idle, been up for 250589 seconds. Another line reads: the operator "TNTgal" is in class 1001, has some address, idle 6 secs. The rest of the lines display addresses of people in the action of logging in.

Note:

For explantaion of classes see "Stats Y" (4.1.5)

An operator typing /trace would see all users on the server.

3.13 Info about server and serversoftware

3.13.1 time

Simply shows the time, according to the servers' clock.

Syntax: /time [servername if remote]

3.13.2 version

Sends you a line to tell the version of the serversoftware running. use "/version servername" for remote queries. servername could include wildcards, but will only show the first matching server, so the only use is for shortening the command. E.g: "/version sandi*" for the example below.

Example:

"u2.10.01.lgline3.trace.motdcache2. SanDiego.CA.US.Undernet.org M10B8eEKl2MpStU"

This one is running ircu version 2.10.01 with some patches and the letters at the end is its server options. (3.13.3)

3.13.3 Decoding serveroptions in "version"

Serveroptions are those letters at the end of a version-reply, e.g "M10B8eEKl2MpStU" above. They indicate various settings. Only "M" and "l" affects us, the rest is Operator-options, or just determine how the servers' software is run, but it's irritating to sit around, not knowing what they mean, isn't it? ;-)

Terms used:

An IRC-operator can be set to two levels, with the flag FLAG_OPER or FLAG_LOCOP set. You can spot an OPER by the uppercase O in the "/stats o" (4.1.4) reply, and a LOCOP by the lowercase. A LOCOP is not seen by the rest of the net as an operator, and so can't act on clients connected to other servers, e.g killing. (Note that a local client is both users and server- localserver connections.)

I will use the terms OPER and LOCOP so as not to confuse with "local operator" which could mean any operator stationed on your irc-server. The file config.h defines if a certain command is restricted to OPERs or to LOCOPS as well. The term "remote operator" in this guide, means an OPER on a server other than yours.

Technical note:

There are two kinds of operations in ircu

1) Operations with a target which is connected anywhere on the network, usually using hunt_server()

2) Operations with a target which is directly connected to the source by socket

1 is remote, 2 is local.

Note:

What letters could be included, was found in the serveroptions-code in "S_debug.c", a file in the sourcecode. Explanations for the settings were found in "configure.help". As there arn't many ircu-coders around to ask on irc, and C-source isn't what I've read the most before, this section involves a bit educated guessing :-)

Serveroptions used and shown in "/version"-reply on ircu2.10.01:

M[0-9>][0-9] : The digits are the number of 0.1 Mb of MAXSENDQLENGTH or '>' when larger then 9.9 Mb.

B[0-9>] : The digit is BUFFERPOOL/MAXSENDQLENGTH, or '>' when larger then 9.

c : Server uses chroot()

C : CMDLINE_CONFIG is defined

D : DEBUGMODE is defined

e : Local opers can use /REHASH

E : Opers can use /REHASH

H : HUB is defined

k : Opers can use /KILL on local clients.

K : Opers can use /KILL on any client

l[0-9>] : CHECK_CLONE is defined, the digit is CHECK_CLONE_LIMIT, or '>' when larger then 9.

m : M4_PREPROC is defined

M : IDLE_FROM_MSG is defined

p : Oper passwords are crypted

P : Link paswords are crypted

Q : /stats M works, and

q : Server does memory allocation/dealloation checks

R : RELIABLE_CLOCK is defined

s : Local opers can use /RESTART

S : Opers can use /RESTART

t : OPER_REMOTE is defined

U : Server uses poll()

v : VIRTUAL_HOST is defined

X : UNIXPORT is defined

Y : Server uses syslog()

----------------------------THE MEANING OF THE LETTERS----------------------------------

When followed by [OUTDATED], it means undernet has thrown the setting overboard. It is kept here for reference for users of other networks.

MAXSENDQLENGTH M[0-9>][0-9]

Specifying 0.1Mb up to 9.9Mb of MAXSENDQLENGTH, shown as ">" when larger than 9.9Mb Default value of the "max senq. lenght" in Y: lines (4.1.5) and used for deciding RAM-allocation.

INT_BUFFERPOOL B[0-9>]

The digit represents BUFFERPOOL/MAXSENDQLENGTH and represented by ">" when larger than 9. BUFFERPOOL = Max RAM- size of all the sendqueues, all in all.

MAXSENDQLENGHT defines the max-size of each sendqueue, and INT_BUFFERPOOL a number to multiply, giving BUFFERPOOL which is how much ram is reserved for ALL the queues.

In our example, the version-reply says "M10B8". Which gives MAXSENDQLENGTH a value of 1.0Mb and INT_BUFFERPOOL 8. (BUFFERPOOL/MAXSENDQLENGTH=INT_BUFFERPOOL)

INT_BUFFERPOOL * MAXSENDQLENGHT = BUFFERPOOL

8 * 1.0Mb = 8Mb

Queues are seldom the same size, so "8" dosn't have to mean there's exactly 8 queues in the server. See "/stats l" (4.3.2) for some queues.

Chrootdir c

Server using Chroot(). Added security if running under root. All files accessed must be in directory defined as DPATH.

Standard: Not set.

cmdline_config C

allow config-file to be specified on command line. (when running the server)

Standard: Undefined

Do_id d [OUTDATED?]

Maybe a "server using identd" setting. Removed from Undernet-code long time ago.

Debugmode D

when having problems, the software is recompiled with this one defined, and the admin run it by hand. Never a permanent setting, server might not even be open when running it.

Standard: Not set.

Oper_rehash E

Locop_rehash e

If locop_rehash are set, locops are allowed to execute the REHASH command. If only Oper_rehash are set, only Opers are allowed to do it. (This command could never be done remotely). E and e could be set both at the same time)

Note_forwarder f [OUTDATED]

A setting for the NOTE utility.

HUB H

Set if server is hub. (see 4.2.3)

OPER_KILL K

Allows operators to KILL (disconnect) users.

LOCAL_KILL_ONLY k

"k" restricts OPERS to KILL users logged in on their own server.

Example:

With "k" set on sandiego.undernet.org, an operator on that server is disallowed to kill a nick logged in on chicago.undernet.org. He can only kill users that's using sandiego. On the other hand, the chicago server might have "K" set, allowing them to kill users anywhere on the net including sandiego.

Some networks (not Undernet) demand "k" to be set for new servers. If you find the unlikely configuration of no k-letter at all, it means this servers' operators can't KILL anyone, not even on their own server.

Note that since a LOCOP isn't recognized as operator by the other servers, he/she could never do a remote KILL anyway.

CHECK_CLONE l[0-9>]

The server will check for clones. The digit (CHECK_CLONE_LIMIT) is how many connections from the same IP is allowed. The standard is 2. If the number is larger than 9, it's presented by a ">"

Least_idle L [OUTDATED]

Looks for the least idle person logged in to the server. Used for SUMMON, and SUMMON is used to send a message to someone on the same machine as the server, asking them to join IRC. (E.g asking the admin of the IRC-server to get on) The syntax is "/SUMMON <user> [<server>]" but i asume its operator-only.

m4_preproc m

A program called m4 that contains some macros, preprocess the ircd.conf file, and the server will always read the file "through" m4. (Reading m4s' output as ircd.conf)

Standard: Not set.

Idle_from_msg M

Idle-time is nullified only from privmsg. (/msg and channelchatting) If not set, all but the serverping (PING? PONG!) will reset your idle-time. Be aware that /notice isn't a privmsg.

Standard: Set.

Also see "Getting seconds idle" (2.3)

Npath N [OUTDATED]

NPATH is a variable containing the path to a backup file for NOTE; which in turn means the server is in fact running it. It is a utility for the irc-ops and is used for the following things:

a) Let opers create news-like #head.channels listed with /list.

b) Sending messages to users which they will get when they sign on.

c) Let opers spy on people to see when they sign on/off, change nick etc.

I don't know what a) means, but NOTE is anyway removed from the Ircu code today. Please write me a mai if any network out there is using NOTE or if you know they don't.

Crypt_oper_password p

Oper passwords are encrypted

Standard: set

crypt_link_password P

Link passwords are encrypted (C/N lines)

Standard: not set

Passwords are encrypted with makpasswd in UNIX (as used in the unix "passwd." file) They are stored in the O, C and N lines, but won't be viewable when you e.g do a "/stats O"

DEBUGMALLOC q

Server does Memory allocation/deallocation checks. This is a kind of "memory book-keeping"

MEMLEAKSTATS Q

when both DEBUGMALLOC and MEMLEAKSTATS is set, the letter is "Q" and "/STATS M" will be working.

RELIABLE_CLOCK R

The admin sees the machine's clock as reliable and Ircu is asuming that's true.

Oper_restart S

Locop_Restart s

Allow OPERS and/or LOCOPS to restart the server. E.g setting S restricts the command to OPERS. RESTART could never be done remotely. S/s is the same as R/r in older IRCu-code. (before 2.10.01)

Oper_remote t

When set, it allows operators to connect to the server and gain operator status withouth beeing on "the same network" as the machine running the server, which means an operator could log on from a dialup-account on the internet, like any average user.

Standard: set

IRCII_Kludge u [OUTDATED]

an out of date option that controls whether or not \r\n is used to terminate lines.

Poll() U

Server uses Poll(). It depends on the system the server is running on if it's chosen or not.

VIRTUAL_HOST v

Turns on some gear that's used when there are two or more servers on the same machine.

Standard: not set

Valloc V [OUTDATED]

Use the valloc() function, which causes problems on some systems.

Standard: Not set.

Unixport X

a variable used to setup a Unix domain socket to connect clients/servers to. Like port 6667 I suppose.

standard: Set.

Use_syslog Y

Server using syslog(). The server sends "vital" messages about the server through syslog. Things like system errors and events critical to the server beeing logged.

Standard: Not set.

v28PlusOnly 8 [OUTDATED]

Means the net has only 2.8 or higher server versions.

-----------------------------------------------------------------------------------------

3.13.4 help

Syntax: "/raw help"

This sends "HELP" to the server, giving a list of commands it will understand.

See 3.15 for "/raw list help"

3.13.5 info

Version and copyright info, along with credits to those who have contributed to the coding of the IRC-software.

Note:

"/INFO server" (remote) is disallowed on Undernet. It's the same on all servers anyway.

3.13.6 admin

Returns administrative info.

Syntax:

/admin <servername> or just /admin for your own irc-server.

Example:

Administrative info about London.UK.eu.Undernet.org

Aladdin Internet's IRC server

Undernet IRC Server

sam@salabim.co.uk

Note:

admin could be used with wildcards, but only returns the first matching servername, (and with no resemblance to /map or the alphabet as "first" concerns <:-) so it's only usefull for shortening the command. E.g: "/admin london*"

3.13.7 /raw dns

Said to be the most client-useless command in IRC, this command displays unreadable statistics about servers DNS Cacheing data or something.

The output could be like this:

-SanDiego.Ca.Us.Undernet.org- Ca 63106 Cd 61058 Ce 6899 Cl 0 Ch 1044:955852 Cu 956896

-SanDiego.Ca.Us.Undernet.org- Re 55196 Rl 1313187/70789 Rp 458730 Rq 427490

-SanDiego.Ca.Us.Undernet.org- Ru 0 Rsh 498 Rs 479974(26630) Rt 4890

Show this command to your friends and tell them everyone else uses it, that it counts atoms on the servers harddisk, or whatever you come up with :->

Note:

This command should not be confused with the usefull /dns command in mIRC. (5.3)

3.14 Extended list command

Undernet has implemented an extended list-command. Help for this command is brought up with "/raw list help" (or /quote)

This is what you get:

Usage: /QUOTE LIST parameters

Where parameters is a space or comma seperated list of one or more of:

<max_users ; Show all channels with less than max_users.

>min_users ; Show all channels with more than min_users.

C<max_minutes ; Channels that exist less than max_minutes.

C>min_minutes ; Channels that exist more than min_minutes.

T<max_minutes ; Channels with a topic last set less than max_minutes ago.

T>min_minutes ; Channels with a topic last set more than min_minutes ago.

Example: LIST <3,>1,C<10,T>0 ; 2 users, younger than 10 min., topic set.

Example:

"/raw list >20,C>120" will bring up channels that have existed more than 2 hours and has more than 20 users. When it's finished, you can in mIRC rightclick in "channels", apply match and hide parameters, and press "apply". If the extended format is not used (like when mIRC get the list itself) a "T >10" is said to be applied

3.15 Cnotice/Cprivmsg. A "too many targets" exception

New in Ircu2.10.02

Syntax:

/CNOTICE <nick> <channel> <message text>

/CPRIVMSG <nick> <channel> <message text>

What and Why CNOTICE/CMSG

The command is added for those that message a lot of people on the same channel. (e.g bots on gaming channels.) You will have to be a channel operator to use it. With this command the new anti-flood function "too many targets" is avoided.

Coders comment:

-----Cut------

For this command to become really usefull, it should be automatically used by your client whenever you use a /MSG or a /Notice to a <nick> who is on one of your channels (keep the list of who is on which channel INTERNAL of your client! Ie, don't do a /names every /cmsg).

---End Cut---

Also see /wallchops (3.9)

3.16 More about /JOIN and making of channels

If you'r told to "/join 0" then don't do. It's equal to parting all channels, and has to do with how you'r "stored" on the servers. All users "joins" channel 0 when connecting, or in another way: 0 means zero data in the list of channels you'r on. Just like "/who" = "/who 0", none in particular. (BTW: to minimize flood, the number of users in a /who reply, is a maximum of 251 on Undernet)

A channel with the "&" prefix (e.g &chat) is a channel that will be local to your server. People from other IRC-servers can't join, and can't spot you'r on it, unless they retrieve a remote whois. (2.3) Your channel will only show up in the channel-listing for clients on your server.

3.16.1 The modeless channel. Equality by simplicity

As of Ircu2.10.02 you can now start a "modeless channel" Such a channel can not have any channel operators, its mode is always set to +nt, it can't have a topic and you can't use the /invite command.

Syntax: /join +#channelname

The purpose for this invention is "to create an enviroment where all users are equal and not tempted to fight about ops". Flooding should be dealt with by either leaving the channel or using /ignore or /silence. Making it topic-free and non-invite is to avoid flooding, by topic-changing or mass-invite.

3.17 Comment in /PART

Ircu2.10.02 allow you to sen a comment along with your channelparting.

Syntax: /part #channel comment

When a public message wouldn't be allowed to be sent, as in cases of ban or moderated channel, this message won't be sent neither.

The creators of IRCu advise clients to ignore the part comment from anyone that is less than 2 minutes on the channel. If this can be achieved with a mIRC-script is unknown to me. (Anyone tried it?)

4. STATS. Query for retrieving various data and statistics

A command that gives you access to large amounts of information is STATS. How is the load on the ports divided? who is banned and why? how many is away? and many other things.

Syntax:

/STATS [<query> [<server>]]

Note: At present, stats on remote servers on undernet is partly disabled, due to bandwidth-saving. Its planned to reenable it all in a later upgrade, with report-sizes based on the network load. A list of queires that could go remote, is found in 4.5.

c, h, i, k, l, m, o, u and y queries are common for all networks, the others are currently only implemented on Undernet

Listed below are ALL the queries for /stats known by ircu. (ircu = the Undernet serversoftware.) Case sensitive only when stated. Some of the queries return lines from the config-file. (e.g I-lines.)- A detailed explanation for them is found in the ircd.conf example file for ircu. A copy of it is located at http://www.vestdata.no/~fenris/ircucnf.txt

The data are all kept in the same format, for programming reasons, and if it says 0, it means the field is blank for this type of line.

4.1 Who's allowed in and how.

4.1.1 k K-line

Returns a list of banned usernames and hostnames. (Kill-lines) Usefull for determining why someone can't get in.

Syntax:

K:<host/IP mask>:<opt reason>:<username mask>

Examples:

K * Unwanted user 0 -1

K *.ppp.some.mr Unwanted ~tagger 0 -1

anyone matching "user@*" is banned. (guaranteed fake ID) anyone matching ~tagger@ppp.some.mr is also banned.

K *.compuserve.com klines/us * 0 -1

Anyone from compuserve is k-lined, server tells them to "use a us-server".

K * klines/clones/mirc ~victor

anyone matching ~victor@* is k-lined, server telling them the reason is running clones, and something about mirc. If you happen to find a lowercase "k"-line, it will contain an IP-address that will K-line the user even if his IP happen to resolve to a DNS address. This is part of the protection against "virtual host" misuse, as described in "userhost/userip" (3.5)

Note:

the ~ is added by the server when it wasn't able to verify your address. (Which is does by IDENTD) The words "klines", "us", "clones" e.t.c points to standardmessages at the server, the numbers at the end beeing empty fields.

Filter the reply with the mask at the end: /stats k fullservername *@*some.com. Fullservername can be replaced with nickname in ircu2.10.01 and above. (Lots of lines, all beginning with K... Aha! THAT'S why its called K-lines! :-D)

4.1.2 g G-line

shows G-lines.

They work as K-lines except that they ban for the whole undernet (Global-lines) and they expire automatically after a given period of time. It is mentioned in documentation for the Ircu sourcecode, how servers might add G-lines automatically as their local K-lines, but I doubt this is done often.

Example:

G **@fish.baccalao.com 871038566 [Super] Intentional hacks [3]

G *timmy@sea.shore.net 870518582 Banned due to clones.

The format is simple: Address, number, reason. The number is based on a startingpoint. the "epoch". It's a LONG number that tells the number of secs since 00:00 1. jan 1970 GMT time. if you try /debug you will find it used e.g in whois-replies. (signed on.. e.t.c) and also in Pinging. For the whois, your program automatically converts the number to your timezone and translates it into readable format. When the date/time specified by number is reached, the G-Line is lifted.

A G-line usually lasts for a few hours or some days, but could technically be set to several years.

Note:

How do one translate the LONG number to a normal date/time format?

Until our clients starts translating it themselves, we have this handy trick for mIRC that came from Rainman:

First make this an alias: /unixtime /echo $active $$1 = $asctime($$1) and then you can type e.g /unixtime 870574468 and get the output: "870574468 = Sun Aug 03 04:14:28 1997"

Also note that the LONG number used, will not be the same as a LONG used for date/time in e.g Excel, because Microsoft chose another startingpoint.

Second note:

K-lines arn't 100% local anymore. A K-line still isn't broadcasted but in version 2.10 of ircu, opers from other servers can be set up in a fashion similar to O-lines and be able add K-lines from outside. The o-line-like lines can't be retrieved by non-opers.

Third note:

Merging the K and G lines a step further, ircu2.10.02 introduces a feature with the somewhat confusing name "local G-line". Practically, it is K-lines with an automatic expiration time. To this feature there is a command: /gline [user@host.name] that displays either all G-lines or those matching the optional parameter. (Wildcards not allowed).

/gline today displays exactly the same as /stats g, future versions will show where this ends up :-)

The K-line is said to be redone in the near future, so hopefully this will be incorporated as an optional field in it. (Just MHO :-)

4.1.3 i I-line

A list of the hosts that is allowed to connect to the server as a client.

Syntax:

I:<IP mask or crap to force resolving>:<opt passwd>:<hostmask>::<class>

Example:

I *@*.se * *@*.se 0 20

I *@*.fi * *@*.fi 0 20

I *@* * Unresolved 0 1

I *@* * *@* 0 1

On the last two lines, you can see that the server will in general allow anyone. Even if the server can't get your DNS address (Unresolved) But In the K-line list, your host or domain might be k-lined because you should use a closer server. (European clients will experience this a lot on us-servers and vice versa.)

"ONE" in I-lines means: Only one client for each IP address. "Say no to clones!"

Note:

Q: Don't I and K lines "collide" sometimes?

A: As a thumbrule, the leftmost identification can override the other.

Example:

A European server might K-line the whole *.edu domain, but put *.someuniversity.edu in I-line. Someuniversity will then get in, so the "someuniversity." inclusion is overriding the .edu exclusion.

A *!*someperson@someuniversity.edu K-line will in turn override the universities' general I-line.

Also the common "*!~user!*@*" K-line will override the common *!*@* I-line, that allows anyone in general in.

If a server has e.g the domain *.nl in both an I and a K line, the K override the I.

For explanation of the last field, refer to the y-query (4.1.5)

The 2. last field is empty, hence the 0.

4.1.4 o O-line

This one returns a list of hosts from which normal clients may become operators.

Example:

o *@*.sol.no * discotom 0 10

o *@*.sn.no * discotom 0 10

O *@*.online.no * Mcsyrup 0 10

O *@*.sol.no * Mcsyrup 0 10

O *@*.kf.kommorg.no * Natasha 0 10

Big O in the list means a global op, small o means a local op. Local ops can't act outside the server, and on Undernet they can't use Uworld. Ops can also see invisible people, but the "local ops" can only see those on their own server. Your local "local ops" (locops for short) is shown in the "/who 0 o" command, along with the global operators.

The ops listed in the example are put in connectionclass 10.

Note:

The use for this command? It will give you the names of possible invisible ops that log in on your server. Invisible means they won't show up with "/who 0 o", that is the usual op-finding command. In addition they might not be listed in the MOTD, so the only place you can find them is in O-lines. (And yeah, via /trace too (3.12.3) if they'r online)

For more info about Operator status, see technical note in "Decoding serveroptions in "version"" (3.13.3)

4.1.5 y Y-line

y shows Y (Class) lines from server's configuration file

Theese classes are used to decide how many are allowed to connect from different places on the internet. A european server for example, might allow, say a maximum of 100 us-users, and would therefore put all *.com *.edu *.net and *.org users in a class with a maximum of 100. Though what it's most usefull for, is putting the operators in a dedicated class, so that they'r sure to get in, even if the server should be full.

The syntax is:

Y:<class>:<ping freq>:<connect freq>:<maximum links>:<sendq size>

Example (from the norwegian server):

Y 0 120 600 10 2000000

Y 70 200 120 10 4700000

Y 20 180 0 300 400000

Y 10 180 0 100 400000

Y 5 180 0 50 400000

Y 4 180 0 400 400000

Y 3 180 0 200 200000

Y 2 180 0 200 400000

Y 1 180 0 400 400000

In this example, class 1 can take up to 400 users, with a max sendque of 400000. the ping-frequency is allowed to be as high as 180. ping-frequency is how long you can be silent before a ping is sent. If all classes were filled up, this server would have 2370 clients. I choose to call the possible clients in a class "seats". We might guess that class 70 and 0, both with few seats, special ping-frequency and high sendq size, is dedicated to server-server connections.

In O-lines (4.1.4 we read that for this server, class 10 is where the operators are placed.

Where the classes are saved:

Who goes in which class is defined in the I:lines. here's an example from the norwegian Undernet-server:

I *@*.org * *@*.org 0 3

I *@*.net * *@*.net 0 3

I *@*.edu * *@*.edu 0 3

I *@*.com * *@*.com 0 3

I *@*.se * *@*.se 0 20

I *@*.fi * *@*.fi 0 20

I *@*.dk * *@*.dk 0 20

[...]

All americans are grouped in class 3, while people from the neighbouring countries goes in class 20. According to the y:lines above, the neighbour-countries has 300 "seats" dedicated to them, and us-citizens 200.

Further down we see:

I NOMATCH * *@*.telepost.no 0 4

I NOMATCH * *@*.online.no 0 4

I NOMATCH * *@*.telenor.no 0 4

I NOMATCH * *@*.sol.no 0 2

This means 600 "seats" are reserved to theese hosts. (see y-lines) (NOMATCH forces the address to be resolved. The server dosn't want to be fooled)

Coincidentally, theese are hosts for the ISP running the server. ;->

Note:

Determining your class: use /trace yournickname.

Example:

"User 70 Napoleon[modem15.lePPP.eifelnet.fr] 30"

Nickname Napoleon, belonging to class 70, beeing idle 30 secs.

For more information, see: ircd.conf example file for ircu, a copy located at: http://www.vestdata.no/~fenris/ircucnf.txt.

4.2 Server-server connections

4.2.1 c

Returns a list of servers which the server may connect to or allow connections from.

Example:

N *@130.240.16.107 * Lulea-R.SE.Eu.Undernet.org 0 80

C *@130.240.16.107 * Lulea-R.SE.Eu.Undernet.org 4400 80

N *@132.199.121.37 * Regensburg.DE.Eu.Undernet.org 0 80

C *@132.199.121.37 * Regensburg.DE.Eu.Undernet.org 4400 80

C=to N=from. Each server needs both N and C to be set up for any connection to be made.

4.2.2 d

Shows default uplinks. (server-server connections. just like query c and h.)

Example:

D Lulea-R.SE.EU.undernet.org connected(Lulea.SE.*)

D Lulea-R.SE.EU.undernet.org connected(Regensburg.DE.*)

D Lulea.SE.EU.undernet.org connected(Lulea-R.SE.*)

D Lulea.SE.EU.undernet.org connected(Regensburg.DE.*)

4.2.3 h/H

h lowercase: Returns a list of servers which are either forced to be treated as leaves or allowed to act as hubs.

H uppercase: Shows only the servers allowed to be hub.

Example:

H * * Regensburg.DE.EU.undernet.org 0 -1

H * * Lulea-R.SE.EU.undernet.org 0 -1

H * * Lulea.SE.EU.undernet.org 0 -1

H * * Oslo-R.NO.Eu.Undernet.org 0 -1

Note:

some resemblance to the c and d-query. What it's all about is where the server can attach himself to the "net-tree" (see /map) and who can attach to him. Leaves can not let other servers connect to them. (To hinder extremely long paths for messages).

For more information, see ircd.conf example file for ircu, a copy located at: http://www.vestdata.no/~fenris/ircucnf.txt

4.2.4 U (uppercase)

showing U:lines. That is servers allowed to act as services like uworld.

Example:

U:Uworld.Eu.undernet.org::*

U:Uworld2.undernet.org::*

U:Uworld.undernet.org::*

Note:

for more information about this, again refer to the ircd.conf example file for ircu. A copy located at: http://www.vestdata.no/~fenris/ircucnf.txt

4.3 Statistic-related commands

4.3.1 m

Gives you a list of commands supported by the server, number of times they've been used, and the bytes consumed by the command.

Example:

PRIVMSG 4752355 184344091

NICK 848063 49075863

QUIT 580331 17961034

Note for the statistic-freaks ;-) :

We can't guess an average msg-lenght, as a PRIVMSG consists of much more than the actual msg, but combined with the number of users and the t, p and l-query, we might find out stuff, like indicating how much people talk and if a servers' users tend to talk to each other mostly, or is chatting around "out there", because prefix is added while sending outside the server.

(for Norway, where we have only 1 Undernet server, this might tell us how good the users are at writing English :-)

Example:

Sending a PRIVMSG between servers. Toma2 speaking in #SoupConspiracy.

Everything before PRIVMSG is prefix

:Toma2!MisterL@ppp54.conspir.gov PRIVMSG #SoupConspiracy :The Soup has arrived

For more information about Privmsg, read the IRC RFC, (currently RFC1459) or try out the /debug command in mIRC. If "/stats M" dosn't seem to work, look for a "Q" in the "/version"-reply and consult 3.13.3 about MEMLEAKSTATS.

4.3.2 l

Shows the servers port-connections, and stuff about them.

Example:

Connection SendQ SendM SendKBytes RcveM RcveKBytes Open since

Oslo-R.NO.EU.Undernet.org 0 32444056 2351520 11430509 558053 102800

Oslo-R.NO.EU.Undernet.org[*.7000] 0 679501 57099 92668 5530 102801

Oslo-R.NO.EU.Undernet.org[*.7809] 0 168239 13689 29509 2052 104085

[...]

Oslo-R.NO.EU.Undernet.org[*.6666] 0 409790 33047 83097 4712 102801

Oslo-R.NO.EU.Undernet.org[*.6668] 0 6014313 472809 654044 33373 102801

Oslo-R.NO.EU.Undernet.org[*.6669] 0 327355 25847 61802 3979 102801

lulea-r.se.eu.undernet.org[130.240.16.107] 37 1454157 68765 8034073 386083 102800

NickJagger[930.167.21.166] 0 1 0 2 0 4

End of /STATS report

Explanation:

Send M/Q: Sent/Qued messages

Send/Rcve M: Sent/Received messages

Send/Rcve KBytes: Kilobytes sent/received

Open since: Number of seconds it has been open. (The other numbers are counted from that time)

We can see that it's divided into the different ports, and that port 6668 gets a lot more data passing through than the rest. Also note how much more the easy remembered port 7000 is accessed than the hard-to-remember port 7809.

The connection to the rest of the net is represented by lulea and at the end we see a small bug in stats: a user about to log in. He has sent his nick, but USER and PONG havn't been carried out yet.

Because of some stats patch, we don't get to see port 6667, but the summary on top of the list has the traffic from 6667 included.

4.3.3 p

Will show you the ports this server accepts connections on, and how many is on each. A must when choosing ports :-)

Example:

P 6669 14 0x2000

P 6668 135 0x2000

P 6666 28 0x2000

P 6662 5 0x2000

135 people on port 6668, only 5 on 6662. (where would you be? :-)

Note:

Because of some stats patch, we don't get to see port 6667. Summarize, and subract from what you get in "/lusers" to find that number.

4.3.4 t (lowercase)

Various statistics about the server.

Examples:

accepts 1622557 refused 1590021

unknown commands 17031 prefixes 84

wrong direction 54 empty 660

Client Server

connected 28292 4

bytes sent 2425789.450K 423214.786K

bytes recv 189255.273K 506019.371K

4.3.5 z

shows memory usage and count data structures. What it means to us: More statistics! :-D And many of theese are GLOBAL statistics. Here you can count how many is set away, number of bans, number of users in whowas-buffer e.t.c. The format is "number (bytes used)"

Example:

Client Local 284(260144) Remote 14619(2865324)

Users 14858(1664320) Invites 7(140)

User channels 31169(623380) Aways 1042(46145)

Attached confs 285(5700)

Conflines 598(40307)

Classes 9(252)

Channels 9661(2451957) Bans 9990(428434)

Channel membrs 31169(623380) invite 7(140)

Whowas users 810(90720) away 11(489)

Whowas array 1000(80000)

Hash: client 26669(106676) chan 16001(64004)

Dbuf blocks 426(867336)

RES table 4096

Structs 81920 IP storage 24624 Name storage 55151

Total: ww 171209 ch 3503911 cl 5465153 co 40307 db 867336

End of /STATS report

-

Output from /lusers at the same time:

There are 7932 users and 6926 invisible on 42 servers

30 operator(s) online

9661 channels formed

I have 274 clients and 1 servers

Explanation for the statistics:

If you summarize local and remote clients, you get 42 more than the number of users. This is due to the server-server connections beeing counted as clients, but not as users. Conflines and attached confs are configuration lines. the nine classes-lines are the ones retrived with the y-query.

away-messages:

The example above says 1042 people is marked as away, but note that this is slightly misleading, as away-messages isn't exchanged during a rejoin after a netsplit. (Not up to and counting ver 2.10.0). So sometimes, to find a persons away-message, you need to direct the whois-query to his server, /whois hisservername hisnick. as shown in "Getting seconds idle" (2.3)

User channels and Channel members:

This is about datastructures, or relations between channel and user.

An example:

You have two users, Nat and Tim. Nat is on channel #a and #b, Tim beeing only on #b. This gives us three user-channel "relations":

"Nat on #a", "Nat on #b" and "Tim on #b". You could also say that the number is the sum of occurences of "user X on channel Y".

Theese relations are contained in two separate lists, the "User channels" beeing a list of channels the user is on and "Channel members" constituting a list of users the chan has. (e.g "Nat on #b" is one occurence on both lists)

simplified, the lists might be like this:

User channels list: Channel Members list:

NAT #a (Nats' relations) #a NAT

NAT #b #b TIM (The relations of channel b)

TIM #b (Tims') #b NAT

sum: 3 sum: 3

If the sum isn't the same, something is wrong. (Though a late Undernet patch do allow them to be different in some way)

As thumbnail-rules we can say:

1. user-chan-relations = datastructures you can put modes on. (member of channel, user is op)

2. the lists are used to "channel" data between the users.

NAT says something in #b, "User channels" verifies she can speak there, the server looks in the "Channel Members" list, sees that TIM is also on #b and channel what NAT said over to TIM.

(I suppose that data like "#b is a secret channel, has this and that topic" is kept in a separate list, and not copied for every member of it, and ditto for the +i mode of a nick.)

Statistic-note:

We have 14858 users, 9661 channels and 31169 occurences in each list

This tell us that each user is on average on 2.1 channels at the same time (31169/14858 = 2.098) and that each channel has on average 3.2 users.

Generating statistics from the channel-listing over time, could tell us more about the habits of this IRC-community.

4.3.6 w

Access statistics from main served domain.

Example:

-Oslo-R.NO.EU.Undernet.org- Minute Hour Day Yest. YYest. Userload for:

-Oslo-R.NO.EU.Undernet.org- 6.00 6.0 7 0 0 sol.no clients

-Oslo-R.NO.EU.Undernet.org- 565.91 610.3 675 0 0 total clients

-Oslo-R.NO.EU.Undernet.org- 500.36 534.8 640 0 0 total connections

This server is run by the sol company, so they like to keep some statistics about their own users. Who is "local" is defined by DOMAINNAME in the serversettings.

4.3.7 r and x

Two queries available when the server is in DEBUGMODE. r shows rusage reports (resource usage) x shows usage of lists

4.4 Other STATS queries

4.4.1 u (lowercase u)

Telling you how long the server has been up (since last reboot)

Example:

Server Up 1 days, 7:09:21

Highest connection count: 1087 (1085 clients)

note:

The Highest e.t.c is also sent when you do /lusers.

4.4.2 T (uppercase T)

Used for specifying alternate MOTD-files for specific hostmasks. Maybe a MOTD in the countries' own language, a MOTD for oversea users, e.t.c

4.5 Current queries with remote capabilities

The information here might quickly become obsolete, but as of ver 2.10.1 this is the queries that could be done remotely:

"P" Ports

/stats p servername mask

Will return the 3 first matching ports.

Example:

With the wildcard 6* you might get this:

P 6669 190 0x2000

P 6668 189 0x2000

P 6666 28 0x2000

while *5 would return only port 6665.

"U" Uworld

/stats u servername

Returning:

U Uworld2.undernet.org * * 0 -1

U Uworld.undernet.org * * 0 -1

"I" and "K" connections allowed/disallowed.

Syntax: /stats i/k fullservername mask.

A mask has to be passed along, and matching lines will be sent back. You can not force do display all lines "the wildcard way".

Example:

/stats i Dallas.Tx.US.Undernet.org *.no

returns:

I *@*.no * *@*.no 0 3

I Resolved * *@* 0 3

as both of theese lines will allow a "*.no" user to connect.

5. A few tricks, explanations and an important feature

Note: all examples held in mIRC format.

5.1 A look under the hood

You might want to see what is transmitted between you and the server, to better understand what's going on. mIRC has the command /debug on|off that saves a log in debug.log. In the log you will encounter "numeric replies", those numbers at the beginning of the lines. They are for example used in the /whois replies to identify each line. The common numeric replies are listed in chapter 6

in RFC1459, but I'd advice you to have a look at this webpage: http://www.teleport.com/~jeepster/numeric.html which contains a helpfile for numeric replies, also network-specific for Undernet, Dalnet and Efnet and give you good examples on ways to use them in scripts.

5.2 Siamese message

If we start manipulating the underlying machinery, we can send one message to several destinations. Here's an example:

"/raw PRIVMSG Sabeltann,Timo,#greener_grass :The grass is now 30% greener than before."

Or the simplified version: "/privmsg nickorchan,nickorchan text". Note that since we're overriding mIRC, the text you send isn't displayed in the channelwindow. You will have to /echo that in yourself with your script.

Note:

The /raw (or /quote) command is how you bypass aliases and mIRCs interpretation of commands. Sometimes, you can pass the command directly, like in /map, a command mIRC has no "idea" about what means, while in multiple sending above, we used /PRIVMSG , as /msg is a command in mIRC that it translates accorindg to its own rules, before passing it on as PRIVMSG to the server.

5.3 Address converting

We run accross addresses a lot on IRC and in this guide. To convert between DNS and IP use the /dns command in mIRC.

Example:

"/dns home.netscape.com" outputs: "Resolved home.netscape.com to 205.218.156.48"

"/dns 204.123.2.66" outputs: "Resolved 204.123.2.66 to altavista.digital.com"

5.4 "Shutting their mouth." Powerfull chanops-feature

(OBS: Undernet specific)

This feature is IMHO an important one, but not widely known. The feature is as follows:

If you ban a person in your channel, but dosn't kick him, two things take place:

1: the nick looses his/her freedom of speech in your channel. The nick can't speak in the channelwindow, and neither do a channel- notice nor a channel-ping.

This is equivalent to suddenly setting +m (moderated chan) and everyone but the nick having +v (voice). Messages to any specific nick is still transmitted.

2: He/she is unable to change nick as long as beeing in your channel. This effectively hinder nickchange-flooding. Error-replies explaining the case, are sent to the person when trying to talk or change nick.

This is usefull for a number of things, and could improve protection-routines of scripts and ops. You can have "auto-ban on flood" turned on in your script, withouth beeing afraid of kicking a friend that's playing some ascii-art to the chan. Another idea is to implement it as a "last warning" before getting kicked, or a nice way of stopping peoples annoying /timer messages when they'r away from the keyboard, but still letting them stay. ( E.g: the text "Anyone here who wants to buy an antfarm? msg me!" sent to the channel every 60th sec. is extremely annoying.)

And if you have some annoying person in your channel, you now have the ability to shut his/her mouth, letting people get on with their chatting, or talking back if they feel like it, and the person, his right of babbel taken away and now ignored by everyone, leaves the channel himself. :-) In some way, it's better than to give them the attention of a kick. The only way they could get a word in now, is by the quitmessage.

also see 5.12

5.5 Scandinavian letters

The following text has been derived from "How to behave on IRC" by Lea Viljanen (LadyBug) and Ari Husa (luru), shipped with the Ircu sourcecode. It might be that this information is out of date, please mail me if so.

{}|[]\

IRC has quite a lot of people from Scandinavian countries,the above characters are letters in their alphabet. This

has been explained on IRC about a thousand and one times, so read the following, do not ask it on IRC:

{ is an A with 2 dots over it

} is an A with a small circle above it

| is either an O with 2 dots over it or an O with a dash (/) through it

[, ], and \ are the preceding three letters in upper case.

This means that nick |ystein and nick \YSTEIN are the same nicks, and can't be used at the same time,

just like tim and TIM can't. In addition, there's a lot of people from Japan as well, who use Kanji characters

which may look quite exotic too.

5.6 What's a ping? (Quick explanation)

A ping comes under what we call CTCP (Client To Client Protocol) commands. Essentially, sending a PING to a nick is an everyday PRIVMSG (msg or channelchat) and the reply sent back is a NOTICE. As mentioned in 3.3, a NOTICE is to generate NO automatic replies.

The time is determined with a LONG-number, (see G-lines (4.1.2 ))nd the PRIVMSG/NOTICE line also contain some special characters. The /me command is one CTCP command. (Called ACTION)

The DCC (Direct Client Connection) is initiated via CTCP but has its own life after that.

For more information, have a look at "Notice" (3.3), the G-line section (4.1.2 ) but foremost www.doco-com.undernet.org, they have both the DCC and CTCP RFC, with good explanations. (Believe me, how CTCP work isn't hard to grasp at all :-)

Type "/ctcp nick clientinfo" to see what commands the nick will respond to.

Note:

Typing "/raw ping" does a serverping. That's the ping that makes those "PING? PONG!" lines in the status-window. That ping is a command, not a special text. For information about PRIVMSG, try out the /debug command in mIRC, (section 5) and see for yourself :-)

5.7 What's this "bandwidth" they'r talking about [all the time]?

Bandwidth is about how much data they (the servers) manage to squeeze in on their lines. If there's much data passing through, its going slow. Bandwidth is a problem on the Internet today, and the connections between the irc-servers often can't pass through all our chatting fast enough. The result is lag, which most irc-users are familiar with :-(

The lag on Undernet has been reduced by shortening PRIVMSG down to PRV when sent between servers, optimizing the network- tree and disallowing remote STATS, but lag is still a problem. A way you can reduce your lag when you'r chatting with someone, is to initiate a DCC chat with the person. The text is then passed directly between you, not through the irc-network.

5.8 The statistics' trick

The output of the commands "/version remoteserver" and "/map" could be used to display where the network lag. Make your program send a version-query to all servers on the net, and count the number of secs it takes for the reply to come back. Based on how the servers are connected to each other, (seen with /map or /links) you can subtract the secs and find each server-server connections' lag. You might generate a fancy "lag-map" out of it, complete with a world-map and all! :-)

Example:

Sending a query to server A, B, C and D:

Reply-time: 0,2s 1,8s 9,7s 10,2s

You---------------serverA------serverB------serverC-------ServerD

Meaning: The B-C connection lags a lot. (7.9 secs) The other server-server lags is only 2.1 secs in sum.

Note:

"http://www.ludd.luth.se/irc/map.html" and "usmap.html" has generated mapping of Efnet, but no lag-info.

5.9 /mode, a command on its own

In this guide, I havn't covered "mode" alone, but the use is covered in 3.10and 3.11. As you've probably figured already, the syntax is "/mode chan/nick [+/-]modes." and its all about.. Yes! setting modes on things. :- )

See 3.10.1for modes on a nick and 3.11.2 for modes on a channel. (Not fully covered on chans though, as mircs "Basic IRC commands" cover it.) 2.1.4 discuss the +i mode of a nick, and 3.10.2 masking of the +s nickmode.

5.10 ET "Eerie Trick" revealed.

Say your friend is on channel #bicycles and you'r not. And you'r both using mIRC or Pirch. You could then join channel #<ctrl+k>bicycles mIRC won't show the Ctrl+k character, not even in a /whois, and to your friend, it will seem like you are on #bicycles in an eerie, invisible way.

A fun trick to impress mirc/pirch-using people with, but easy to figure out and no use if you've been so gracious as to give your friend a copy of this guide. ;-)

5.11 what IS "lines"?

You meet O-lines, K-lines, e.t.c in STATS and the reply from /admin is an A-line. They'r lines in a a couple of config-files for the servers, preceded with a letter to identify them, hence the names. :-)

5.12 Invite overcome everything

Ircu only (AFAIK):

You can invite a person into a channel, overruling the channel limit and any ban. Give him a + mode and he can speak through the ban too.

6. The logon procedure

Connecting and beeing on IRC is nothing but a telnet session in fact. The telnet address being the servername, and the portnumber for example 6667. Here's what to do if you want to try an unpolished tour on IRC:

You connect to the address, with the right portnumber, using your favourite telnetclient. (e.g NetTerm). Follow theese steps:

First you type: NICK yournickname

Then you'll get a line saying: PING :somenumber

answear with: PONG somenumber,

following with the user command: USER name "hostaddress" "someservername" :Yourname (Keep the "s.)

After that, various information, including the MOTD should scroll up. (If you don't get a PING, procede with USER)

Example:

NICK LouiseL

PING :209491250

PONG 209491250 (You type this.)

USER llane "ppp-21.metropolisnet.com" "irc.server.org" :Louise Lane

What you specify in "someservername" dosn't seem to be crucuial. When you want to get out, type QUIT. (A nice way to learn the commands needed to chat, is using /debug [on/off] in mIRC.)

Note:

You get no text displayed the moment you connect and the server does not echo the commands, so you will have to turn on local echo in your telnetclient. If mIRC, and not your ISP handles IDENTD requests, it might be necessary to have mIRC running at the same time. (IDENTD is used to verify your username) For more information about identd, see the IDENTD RFC. (RFC1413)

7. Other resources and plans for the future

7.1 Plans for IRCu

Here I would like to list the plans the network has for new commands/features and changes in old, and point to other resources on the net.

Long-term plans:
It's beeing discussed to implement more "flood control" in the code, dividing the bandwidth more fairly and using it more economically, to hopefully get less lag. Into this, there might be coded some control of the remote stats mentioned earlier.

Implementing a command called /protocol, that will allow at least IRCnet, EFnet, Undernet and Dalnet to remake the client protocol. (The way e.g mIRC and the IRC server talk with each other.) /protocol let the client support both the old and new protocol, allowing old clients to use the network as well, for a reasonable time.

Semi short-term plans:
A +r channelmode will be introduced. R stands for registration. Involving passwords and the term "channel manager", this seems to be meant to implement the most important aspect of X/W, (protection against channel takeovers), into ircu itself. A +r channel won't disappear when emptied, making it impossible to take over the chan by nuking or flooding everyone off. As of 2.10.04, the plan were to have implemented different levels of channel operators, dictating who can deop who, but this has not been done yet.

7.2 Resources

7.2.1 Undernet Channels

#newbies       If you'r new on IRC, you might want to visit this channel.

#class Holding classes to teach about IRC. (how to defend against flood, basics of IRC, e.t.c)

Several teachers are available for questions during the class.

When there's no class, there's a bot there with various helpfull textfiles.

#opschool School for operators using X/W.

#cservice Helping you with X/W and other cservice-related subjects.

#ICMP Teaching you how to avoid flood and other Denial Of Service attacks. E.g getting nuked.

#ZT "Zero Tolerance." Helpchan for those suffering from channel-takeovers.

#help For questions and yes, help. :-)

An undernet help-chan, but will try to help you or direct you to the right channel on any subject,

so if you have a problem and is lost, this is the channel.

#mirc Mirc-issues and help. script-trouble goes in #mircscripts

#mirc-help Help with mIRC.

#mircscripts help with the scripting in mIRC. (Also #mirc-scripts)

(Help in making you own scripts, not a support-chan for scripts you've downloaded somewhere.)

#wasteland This isn't meant as a helpchannel, but those who really know IRC frequent here

and could answear the hard, technical questions. (X/W questions in #cservice please,

and please use "/who 0 o" (zero o) when you need an IRC-ops' attention.

Most questions #wasteland get, could be answeared just a good in the above channels)

#irc_info Another channel which I believe could answear both techncial and everyday questions. This IS a helpchannel.


7.2.2 Web and FTP

"www.undernet.org"

The startingpoint for getting to the various Undernet resources, among them www.doco-com.undernet.org" This webpage has all kinds of documentation. The CTCP and DCC RFC, the (old) IRC RFC: (RFC1459) an IRC FAQ (old) and guides for the operator and X/W commands, which I havn't covered. Also Beginner-help, newsletters, definitely worth a visit.

"http://www.undernet.org/faq.html" will give you an overview of resources.

"ftp.undernet.org" has, among other things, the latest sourcecode and irc-clients for all kinds of platforms.

Note:

RFC = "Request For Comment" but what it really does nowadays, is to specify a standard somehow.

IRC followed RFC1459, but it isn't accurate today, not for ircu code atleast.

(It explains the common concepts though, and for a client, (like mIRC), it defines roughly how its going to act towards servers.)

"www.irchelp.org"

Another source for FAQs, help, e.t.c Its advantage is presenting the IRC as a whole,

As it cover the 4 main nets in the texts, (Dalnet, Undernet, Efnet and Ircnet) you get a better sight of IRC

as a whole, than when just beeing on undernets pages.

"www.irchelp.org/irchelp/ifaq.html" Questions not covered in the FAQ.

"www.irchelp.org/irchelp/ircprimer.html" The IRC primer. Cover many things I havn't. Have a look!

Note:

When browsing the websites above, you'll run into outdated information now and then. undernet.org is probably

the most updated, but check both sites. If some of the guides are confusing, it might be because they were written

for IRCII users. (The unix client). "www.efnet.org" and "www.dalnet.net" are the respective sites for two other nets.

(Dalnet also has "www.dalnet.org")

"http://www.teleport.com/~jeepster/numeric.html"

A great resource for those interested in taking advantage of numbers in the numeric replies. They'r listed and explained, and there's instructions about how to make the numbers do lots of usefull things in your scripts. (A windows helpfile included, cover it all.)

What num. replies are:

Numbers are preceding the lines the server send you, to indicate what kind of lines they are.

An ISON line (used by /notice) has its own number, and a /whois reply has the various lines numbered,

making mIRC able to know when to translate time/date in it. (Numbers in numeric replies show up using /debug in mIRC.)

"http://www.pr- com.undernet.org/documents/quitmsg.html"

A great FAQ about the meaning of all kinds of quitmessages.

"http://www.vestdata.no/~fenris/ircucnf.txt"

A copy of an ircd.conf (Server Configuration file) example for ircu, with comments and explanations.

"http://www.dal.net/services/helpserv/index.html"

Dalnets' helpsection on commands. The help cover the common commands. (Common = beeing implemented in IRC almost from the start, every flavour of IRC-servercode have them.)

Not covering Undernet-commands ofcourse, but has operator and IRCII-only commands. (IRCII is the "original" IRC-client and for Unix.) Maybe there's Dalnet-only features there, I can't tell.

"http://www.pr-com.undernet.org/newsletter08-97.html" (Moving soon to user-com)

This newsletter contain an article by Run, who discusses ver 2.10.

His own page, "http://www.xs4all.nl/~carlo17/ircd-dev/" is always up to date on the new server-versions along with the patches. The first place to look when you want info about the newest features.

7.3 Plans for the Command Cosmos

I don't have time to make major updates anymore, but has kept up with the new ircu versions so far. If you have any corrections or additions to the guide, please send them to me.

Things that should be done:

* The display of the syntaxes is a shame.

* Probably some spellingerrors.

* Make it all more concise! (I tend to write long, (no ESPECIALLY long) texts, with even longer, explaining explanations and footnotes; (For footnotes, see dictionary (911.1.2.3.step)) and, (did I mention that?) LOTS of parenthesis! :-D)

Things that could be done:

* Including commands exclusive on Dalnet, Efnet or IrcNet

The guides' main URL will continue to be active, but for people in America, its faster to download a copy at http://www.irchelp.org/irchelp/misc/ccosmos.html

Plans in planning:

* If there DO exist a guide or two that will overlap this guide quite a lot, I will rename this guide to "Plan 9 from Command Cosmos" :- )

--End Of Text--

all pages © IRCHELP.ORG or original authors