
EFnet Oper Guide
Last update: 02-21-2002
Written and maintained by Riedel
E-Mail: dennisv@vuurwerk.nl

 1.  Commands you should know about
 2.  The client of your choice
 3.  Your primary responsibilities
 4.  Re-routing
 4.1 Re-routing other servers and remote connects
 5.  Kills and klines
 6.  Kill and K-Line requests
 7.  Happy birthday!
 8.  Security
 9.  Know who your friends are
10.  The TCM bot
11.  Services 
12.  G-Lines


1. Commands you should know about

  This is no longer covered here. IRCD-hybrid is changing too rapidly, so
  this section would be outdated in no time ;) For an up-to-date version,
  please download the latest hybrid at www.ircd-hybrid.org.


2. The client of your choice

  There are many IRC clients around for a wide variety of operating systems.
  Being an IRC Operator doesn't *require* you to use a UNIX client, however
  I personally prefer UNIX-based clients. If you're familiar with UNIX and
  use UNIX for opering, I suggest ircII / epic. There are a lot of scripts
  available for those two clients, and it's not that hard to write scripts
  yourself to suite your needs. It is important that you know how to operate
  your client, and familiarize yourself with the options and features. For
  whatever client you chose this goes for any of them: You should be in
  control of your client, instead of the client being in control of you.

Resources :

  www.mirc.co.uk	- mIRC (MS-Windows)
  www.irchelp.org	- a variety of clients and scripts
  ftp.blackened.com	- several UNIX based clients available


3. Your primary responsibilities

  As an IRC Operator, you're responsible for maintaining the server on a
  real-time basis. You represent your server, and you represent the network.
  Irresponsible / rude / offensive / stupid behavior may discredit your server
  and the network. You should focus on the task you were chosen for...
  maintainance.  Sounds simple, no? It means getting rid of users that abuse
  the service, enforcing the server's policy and keeping the server linked.
  Users will ask you questions, and expect you to know all the answers.. after
  all, you're the oper!

  Be prepared for users trying to fool you, sweet talk you into things you
  don't want, lie and deceive. Most users are handling in good faith...
  however, the abusers have learned how to manipulate opers. They have studied
  the alien creature 'oper' for ages like biologists study animals. Be
  paranoid, be curious and be suspicious. I can't stress the importancy of that
  often enough.

  Second priority has the network. You were not chosen to maintain the network
  but you were chosen to maintain the server. However, you may want to be able
  to reroute servers. If you see something broken, don't be afraid to fix it.
  If you do, be sure you fix things and don't make it worse. Before you
  step into routing, be sure you've familiarized yourself with the network's
  topology, and be confident enough to perform such actions. (re)routing is
  covered in the next chapter.

  Opers on the network depend on a trusting relationship. You can usually take
  the word from an oper. Other opers are considered -trusted-, however, there
  are exceptions. Sometimes even opers lie to opers to get things done. Don't
  be afraid to ask for proof of a certain statement, such as logs.
  This doesn't mean you distrust the oper in question, but -you- and you alone
  are responsible for your actions. You call the shots on your server, unless
  your admin says otherwise.


4. Re-routing

  Re-routing is not hard, and it's not scary but it is important that you do it
  right. The commands you'll use are SQUIT and CONNECT. First, a very simple
  example. Let's say your server, irc.yourserver.com is lagged to it's uplink,
  irc.uplink.com and you want to reroute your server. You have to think about
  where you want your server to be linked, and you have to time your reroute.
  An example topology :
               
irc.yourserver.com ---- irc.uplink.com
                        |      |      \
                        B      C      D
                       / \
                      E   F
                         / \
                        G   H --- O
                      / | \ | \
                     I  J K L  M
                                \
                                 N

  In this case, you're uplinked by irc.uplink.com
  irc.uplink.com also hubs B, C and D. Server B functions as hub for E and F;
  F hubs G and H; H hubs L, M and O. G hubs I, J and K. M hubs N.
  Your server is allowed to connect to server B, F and G. So you consider the
  servers you're able to connect to. Is the lag caused by a server that uplinks
  irc.uplink.com ? Use /stats ? irc.uplink.com to determine lag to the other
  servers. If irc.uplink.com does not respond, the lag is to your uplink. If
  so, you cannot be sure about the state of the other uplinks, so you'd have to
  get on a remote server and determine lag by using /stats ? and /trace. For
  example, you could connect to server N, and /trace yournick. Yournick, being
  the nick on your server. You'll see which route it takes, and what the
  problem server is. Example /trace output :

S:[SERVER-N       ] V:[2.8/hybrid] U:[SERVER-M            ]
S:[SERVER-M       ] V:[2.8/hybrid] U:[SERVER-H            ]
S:[SERVER-H       ] V:[2.8/hybrid] U:[SERVER-F            ]
S:[SERVER-F       ] V:[2.8/hybrid] U:[SERVER-B            ]
S:[SERVER-B       ] V:[2.8/hybrid] U:[irc.uplink.com      ]
S:[irc.uplink.com ] V:[2.8/hybrid] U:[irc.yourserver.com  ]

  The trace doesn't complete... server-b announces irc.uplink.com, and
  irc.uplink.com announces your server. Your server should return something
  like :

S:[irc.yourserver.] OPER [yournick!user@yourhost]

  If it doesn't, we know the lag is only between yourserver and uplink.
  Usually if there is lag between your server and your uplink, the send-queue
  rises. This is not always the case. Sometimes your server can write perfectly
  to your uplink, but not reverse. That is called one sided lag.

  We pick server B to link to. It means we have to SQUIT and CONNECT.
  To unlink from irc.uplink.com and connect to SERVER_B we'd type:
  /quote SQUIT irc.uplink.com :reroute
  /connect SERVER_B

  we *DON'T* SQUIT irc.yourserver.com... and I'll try to explain why:
  If we wanted to remove hub M from the network, and with it N, we'd issue
  a SQUIT M. An SQUIT follows a path, relays the SQUIT request to each server
  in that path. Finally it reaches server H, which is the hub for M. Server H
  sees the SQUIT and drops the link to M.

  Now a different situation, we want to separate yourserver, uplink, C and D
  from the rest of the network, in order to reroute. We'd have to SQUIT server
  B, since we want the -uplink- of server B (being irc.uplink.com) to drop the
  link to server B.

  If you'd SQUIT irc.yourserver.com, you ask yourserver.com to drop the link to
  itself, which is impossible. If you SQUIT irc.uplink.com, you ask yourserver
  to drop the link to uplink, which is what we want to do.

  After the SQUIT and CONNECT, the new situation looks like this :

                        irc.uplink.com
                        |      |      \
  irc.yourserver.com -- B      C      D
                       / \
                      E   F
                         / \
                        G   H --- O
                      / | \ | \
                     I  J K L  M
                                \
                                 N

  If yourserver is a Hub, it makes the situation more complex, since your
  actions have more impact.


4.1 - Re-routing other servers and remote connects

Example topology :

                        irc.uplink.com
                        |      |      \
  irc.yourserver.com -- B      C      D
                       / \
                      E   F
                         / \
                        G   H --- O
                      / | \ | \
                     I  J K L  M
                                \
                                 N

  Let's say, hub H is way lagged to F, but G to F is fine... we want to reroute
  H, and stick H to G.

  We'd do :

  /quote SQUIT serverh :re-routing you babe
  /connect serverh 6667 serverg

  A global wallops will be sent :
  !serverg! Remote CONNECT serverh 6667 from ItsMe

  When re-routing, always give the server some time to prevent nick collides.
  When there is lag, people will connect to another server. When you SQUIT and
  CONNECT to fast, a lot of those clients will be collided. Also, stick to your
  territory. How enthusiastic you may be, you cannot route the world. If you're
  an oper on the US side, stick to the US side when re-routing. Needless to
  say, if you're EU, keep it to EU ;)


5. Kills and klines

  As an oper, you're given the incredible power *cough* of KILL and KLINE.
  /kill nick reason  disconnects a client from IRC with the specified reason.
  A /quote kline *evil@*.dude.org :reason here  bans the user from your server.
  Abusive kills and klines may draw attacks to your server, so always consider
  if a kline or kill is deserved. If the server gets attacked after a valid
  kill or kline, well.. tough luck. You should never be 'afraid' to kline
  anyone on your server. If it's a good reason, make it so. Even if you know
  it may cause the server to be attacked. Maybe good to think about is this:
  - if /ignore solves the problem rather than a kick, /ignore
  - kick if a ban is unneeded
  - ban if a /kill is unwarranted for
  - kill rather than kline if that solves the problem
  - kline when a server ban is really needed.

  You kline a user when you absolutely don't want this user to use the service
  your server is providing.

  Crosskills (killing users on another server) are another issue. Some admins
  don't care if users get /kill'ed off their server, for any reason or no
  reason at all... and other admins are very anal about it. A good way to go
  (IMO) is to issue a KILL if there is an absolute need for the target user to
  be disconnected. If there are active opers on that server, let them handle
  it.  They'll be upset if you /kill a user off their server, without
  contacting them.  /stats p irc.server.here shows the active opers on a
  particular server. Some opers have multiple o-lines and are not watching all
  sessions. If you can't find an active oper on a server, you can 
  /quote operwall a request for opers from that server.

  Ghost KILLs are another story, an often misunderstood one.
  When you see a /KILL from an oper with the reason 'ghosted' they usually
  KILL a client that's about to ping timeout. That is not what a ghost is!
  To quote Dianora: "a ghost happens because a client misses being killed when
  it should be. Its a race condition due to nick chasing". In other words,
  Server X thinks client A has been KILLed, while server Y missed the KILL
  for that client.


6. Kill and K-Line requests

  As previously mentioned, if an oper from another server contacts you and
  requests a kill or a kline for a local client with a good reason, you can
  usually trust this request. Opers depend on a trusting relationship. However,
  since you're responsible for the kill or kline, it is not rude to ask for
  proof. It depends on the oper making the request how thats interpreted, but
  the way they respond to asking for proof tells more about them than about
  you.

  The more and longer you oper, how better you get to know the other opers.
  You know who is honest, you'll know who are lying and deceiving. Before
  you acquire this knowledge, you can merely rely on common sense and
  instincts.  You'll probably make mistakes occasionally, and thats nothing to
  be ashamed of.  Opers are - despite contrary believes - human.

  Users occasionally will ask you to kill or kline a user/bot too. Some
  requests are straight-forward and clear, others require you to be cautious. I
  recommend to always investigate such requests, and when you're confident the
  request is valid, issue the kill or kline.


7. Happy birthday!

  It is a custom on EFnet to birthday /kill opers of whom it is his/her
  birthday.  Not all opers like this, but typically those opers don't let
  others know about their birthday. You'll notice that the KILLS say a lot
  about who likes who and who is friends with who.  Whether you want to
  participate, is entirely up to you.


8. Security

  As with any privilege, you have to handle it cautiously and responsibly.
  Be sure that your o/O line doesn't get compromised! Oper only from secure
  hosts. You and only you should know your password. Don't share your oper
  account, and make your oper password a UNIQUE one. If your o/O line gets
  compromised, nasty things may/will happen. Imagine an oper with crosskill
  capabilities who's operline gets 'hacked'... the results are often
  disastrous and you will lose respect and trust from others. It can cause
  your oper privileges to be revoked, or even the server to be (temporarily)
  delinked.


9. Know who your friends are

  As an oper you will get a lot of users that want to be 'friends' with you.
  Users offer you free* access to their *nix servers, ops in channels,
  unlimited leech access to the biggest and fastest warez sites *gasp* and
  more. They want favors in return. They say they don't but they truly want
  something in return. They -expect- something in return. You could either
  don't respond to such offers, or use them. The last option creates an even
  more distorted image of opers and doesn't do any good for the user <-> oper
  relationship.  Your *real* friends are usually the persons who were your
  friends _before_ you acquired the extra privileges.


10. The TCM Bot

  A TCM bot can be a valuable tool for opers. It keeps record of all connected
  clients, flags clients with multiple connections and has all sorts of other
  useful commands. There are three different kind of TCM's in use on EFnet,
  being OOMon, TCM-Dianora and TCM-Hybrid. Every one of them requires you to
  log in to be able to access the privileged commands. On OOMon you DCC chat
  the TCM bot and do '.auth yournick yourpass' where yournick is your oper
  name in your o/O line. In TCM-Dianora and TCM-Hybrid you register with:
  '.register yourpass', where yourpass is your password ;)
  All TCM commands start with a period. If you forget the period, the text goes
  into the 'partyline', where it is echoed to all connected opers.

  Resources :	http://toast.blackened.com/oomon/help
		http://www.db.net/~db/tcm.html


11. Services

  A recent addition to EFNet is Channel Fixer, aka ChanFix. This is an
  automated service that re-ops clients on opless channels. There are a few
  restrictions.  First, the channel has to be of significant size for ChanFix
  to store it in its database. Second, it only logs static addresses.

  How does it work? Periodically it stores information about the channel state
  in its database, for every channel in there. On every 'run', a channel
  operator gets one point. These scores make a top-5 of 'most frequent opped
  clients'.  When a channel becomes opless, ChanFix will join and op the top-5
  opped clients CURRENTLY IN THE CHANNEL.

  Chanfix can be invoked manually by server administrators. /msg ChanFix
  chanfix #channel is the command to do it. ChanFix will join, and treat the
  channel as if it were opless. It lowers TS by one (resulting in a deop of
  the entire channel) and re-ops the top-5 clients currently in the channel.
  The Channel Fixer won't log or actively fix channels when there's a split of
  significant size.  Needless to say, the chanfix command must be used with
  caution.


12. G-Lines

  Oh yes! A G-Line section. Currently, a part of EFNet (EU-EFnet) has G-Lines
  enabled. This was decided by the EU admin community and is now mandatory
  within EU-EFnet. In order for a G-Line to be activated, three opers from
  three different servers need to issue the _exact_ same G-Line. The reason
  is not counted.

  G-Lines work best when the EU side of EFNet is not fragmented. G-Lines
  will, however, propogate through a Hybrid 6 hub (but not a CSr hub) even
  if the hub server has G-Lines disabled. This propogation allows two halves
  of EU-EFnet to have concurrent G-Lines set even when split by US hub servers.


  Questions / Comments / Suggestions are welcome.
  You can e-mail me: dennisv@vuurwerk.nl

Best regards,
--
Dennis "Riedel" Vink       ___~___  Email - dennisv@vuurwerk.nl
Unix System Administrator  \  |  /  Phone - +31 23 5111111
Vuurwerk Internet           '|.|'   PGP   - 0xD68A7AAB

And on the seventh day, He exited from append mode.

