home *** CD-ROM | disk | FTP | other *** search
/ synchro.net / synchro.net.tar / synchro.net / docs / ircd.txt < prev    next >
Encoding:
Text File  |  2006-08-14  |  32.3 KB  |  622 lines

  1. $Id: ircd.txt,v 1.6 2006/08/14 14:23:48 cyan Exp $
  2.  
  3.         ** ircd.js : The Synchronet IRCd Service **
  4.              by: Randy Sommerfeld <cyan@rrx.ca>
  5.  
  6. 1   .... Introduction
  7. 2   .... About this document
  8. 2.1 .... What this document hopes to accomplish
  9. 2.2 .... What this document won't accomplish
  10. 2.3 .... Assumptions we make about you
  11. 3   .... Installation
  12. 3.1 .... Getting the IRCd up and running
  13. 3.2 .... Linking to the Synchronet IRC Network (irc.synchro.net)
  14. 3.3 .... Using JSexec to run the IRCd
  15. 4   .... About the Synchronet IRC Network (irc.synchro.net)
  16. 5   .... Technical information
  17. 5.1 .... Limits of the Synchronet IRCd
  18. 5.2 .... Compliance with RFC's, and established protocols
  19. 5.3 .... Compatibility with other IRCd's
  20. 6   .... The Future
  21. 7   .... Frequently Asked Questions
  22. 7.1 .... Installation Questions
  23. 7.2 .... Technical Questions
  24.  
  25. =======- 1.0 -- Introduction -================================================
  26.  
  27.     The Synchronet IRCd (IRC daemon) service is the newest Synchronet
  28. service written in 100% Javascript.  It's currently the largest (and perhaps
  29. the most complex) service available for Synchronet.  The IRCd service aims to
  30. eventually be a 'communications bridge' of sorts which will allow multiple
  31. BBS's to link their "multinode chat" areas together in a network so that users
  32. may talk to one another from the comfort of their home BBS.  While
  33. accomplishing this goal, the Synchronet IRCd intends to also be a fully-
  34. functional IRC daemon that rivals the bigger, legacy UNIX IRC daemons in terms
  35. of features.  This way, everyone who wishes to chat on a common network will
  36. be able to use the local BBS, or a standard IRC client (if they wish.)
  37.  
  38. =======- 2.0 -- About this document -=========================================
  39.  
  40. [2.1] - What this document hopes to accomplish
  41.  
  42.     First and foremost, this document is intended to be an absolute
  43. reference regarding the Synchronet IRCd.  This document should be the first
  44. place to look if you're having a problem of some kind, regardless of what that
  45. problem may be.  It intends to be an installation guide which will aide you
  46. through setting up your own IRCd.  Or, if you're simply curious about the IRCd
  47. from a theoretical standpoint (it's not every day that you get to see an IRC
  48. daemon as functional as this implemented inside of a scripting language), this
  49. document will do its best to explain certain implementation decisions to you.
  50.  
  51. [2.2] - What this document won't accomplish
  52.  
  53.     This document is not a replacement for your brain.  If you're having a
  54. problem of some kind, and it's not covered by this document, PLEASE take a few
  55. hours to think about the problem and solve it.  Use a systematic approach to
  56. the problem; "If I do X, does Y still happen?"  Remember, installation and
  57. maintenance of the Synchronet IRCd isn't life or death, it's a hobby, and like
  58. all good hobbies, you're supposed to learn something from it.  So, take a few
  59. days before you even consider asking for support -- take a deep breath, go jog
  60. around the block, turn off the computer -- and then come back later.  On the
  61. other hand, if you've found a unique or interesting solution to your problem,
  62. and it hasn't been covered here, then by all means tell us about it!
  63.  
  64.     We don't intend to teach you the basics of IRC here.  While you can
  65. certainly still get the Synchronet IRCd up and running with a minimal amount
  66. of effort and IRC knowledge, your experience will be more enjoyable if you
  67. have at the very least a working knowledge of IRC.  To gauge your knowledge
  68. of IRC, answer the following questions either with a 'true' or 'false':
  69.  
  70.     * People chat in 'rooms' on IRC.
  71.     * 'IRCop' is short for 'IRC cop', the police officers of IRC.
  72.     * A 'ping' is something submarines use to gauge distance under water.
  73.     * CTCP and DCC stand for Client Tunneling Carrier Protocol and
  74.       Direct Channel Cutting, respectively.
  75.  
  76.     If you answered 'true' to any of the above questions, or if you don't
  77. understand some of the terminology used in the questions, then it's best that
  78. you go to http://www.irchelp.org and read through their very helpful documents
  79. about IRC.  This way, you'll gain a better understanding about what IRC really
  80. is, what it's here for, the terminology, and a little history, too.  At the
  81. very least, this is so that when someone asks you to edit your 'M:Line' to
  82. solve or diagnose a problem, you'll at least know what they're talking about.
  83. We don't cover any IRC basics in this document.
  84.  
  85.     Don't be surprised if you're ignored or simply referred to a URL
  86. without further explanation if you ask for help and refer to an IRC *channel*
  87. as a room, call *IRC operators* 'cops', don't understand why a 10 second 'ping'
  88. time is bad, or not know how to DCC SEND a file (such as your ircd.conf) to be
  89. inspected.  That includes not having your NAT or proxy set correctly to
  90. properly masquerade your IP address on a DCC CTCP.
  91.  
  92. [2.3] - Assumptions we make about you
  93.  
  94.     In short, this document assumes that you know:
  95.  
  96.     * How to use your computer and operating system effectively.
  97.     * The basics of IRC and its terminology.
  98.     * How to use, configure, and make basic modifications to Synchronet.
  99.     * The basics of the Internet (or at least the ability to visualize
  100.       a routed, distributed network)
  101.  
  102. =======- 3.0 -- Installation -================================================
  103.  
  104. [3.1] - Getting the IRCd up and running
  105.  
  106.     (1) Make sure you are running a modern version of the Synchronet BBS
  107. software.  The Synchronet IRCd is not intended to run on versions 3.10 or
  108. earlier.  While care has been taken to ensure backwards compatibility with
  109. 3.10, it should only be run on that version for testing purposes.  Upgrading
  110. may include retrieving the latest version of Synchronet from the Synchronet
  111. CVS (if you're familiar with building from CVS), from the Synchronet web site
  112. (http://www.synchro.net), or elsewhere.  Synchronet 3.11 is the minimum 
  113. required version to run version 1.0 (or higher) of the Synchronet IRCd.
  114.  
  115.     Older versions of Synchronet also come packaged with older Javascript
  116. libraries.  The Synchronet IRCd makes use of some of the newer Javascript
  117. library features (such as the ability to treat strings as an array of
  118. characters), therefore it's critical to have a modern JS library.  If your
  119. Javascript library is from 2002 or earlier (you can check this in the 'system
  120. information' part of your BBS main menu), then it's too old.  Time to upgrade.
  121.  
  122.     (2) Check to make sure that all of the components of the Synchronet
  123. IRCd are resting in their correct directories.  While you're at it, check the
  124. file sizes to make sure they're relatively normal (i.e. not 0 bytes long.)
  125. Make sure that all of the files are readable by the user you're intending to
  126. run the IRCd as.  Here's a chart to help:
  127.  
  128.     File        Synchronet Dir.    Description
  129.  
  130.     irclib.js    exec        Javascript IRC library functions
  131.     ircd.js        exec        IRCd core
  132.     ircd_channel.js    exec        Channel functions/objects
  133.     ircd_server.js    exec        Functions/objects for servers
  134.     ircd_unreg.js    exec        Handling of unregistered connections
  135.     ircd_user.js    exec        Functions/objects for users
  136.     ircd.conf    ctrl        Primary configuration file
  137.     ircmotd.txt    text        Message users see upon connect
  138.  
  139.     (3) Edit your relevant services configuration file (in the Synchronet
  140. 'ctrl' directory.)  For Synchronet 3.11, this is most likely "services.ini",
  141. however, backwards compatibility has been retained with the old style
  142. "services.cfg" just in case you want to bring yours over from an older version
  143. of Synchronet.  You may run the Synchronet IRCd on any port you wish, however,
  144. standard convention dictates that it be run on port 6667 (which is the
  145. standard port that most IRC clients will try to connect to, first.)  It's
  146. important that the IRCd be defined as a STATIC service (i.e. one that runs in
  147. the background continuously and does not require a connection to start the
  148. service), and that it uses the LOOP option (so that if you wish to restart only
  149. the IRCd, or if it crashes, it comes back up immediately.)
  150.  
  151.     The combined options for 'services.cfg' represented in hex is '806',
  152. so that a completed services.cfg line should look like this:
  153.  
  154. ;protocol    port    max_clients    options(hex)    command-line
  155. IRC             6667    0               806             ircd.js
  156.  
  157.     An example IRC section from services.ini looks like this, and should
  158. already be present in services.ini for Synchronet 3.11 and above.  The IRCd is
  159. enabled by default in Synchronet 3.11, so, it's likely that it's already
  160. operating:
  161.  
  162. [IRC]
  163. Port=6667
  164. Options=STATIC | LOOP
  165. Command=ircd.js
  166.  
  167.     The 'maximum clients' value used inside of the services configuration
  168. is *ignored* by Synchronet Services since that value is managed by the IRCd
  169. itself.  The maximum number of IRC clients can be changed on a Y:Line in
  170. your ircd.conf, and is set to 100 by default (more on the ircd.conf later.)
  171.  
  172.     (4) Take a look at your ircd.conf, and familiarize yourself with the
  173. options and terminology.  Although the ircd.conf has been specifically made so
  174. that it works right out of the box, you may wish to tweak some options.  The
  175. configuration file is self-documenting, so you should carefully read about
  176. each of the configuration options.  At the very least, this will familiarize
  177. you with what a 'Z:Line' is, and where a 'K:Line' is, or how to enable
  178. passwords on sensitive IRC commands.  If you intend to link to the Synchronet
  179. IRC Network, pay careful attention to where the C:Line and N:Line pair is
  180. configured.  We'll be dealing with those later.
  181.  
  182.     If you're already familiar with other IRC daemon configuration files,
  183. the Synchronet ircd.conf has been carefully engineered to be compatible with
  184. the Bahamut ircd.conf.  Thus, if you've already got a working Bahamut
  185. configuration, putting that ircd.conf in place of the stock ircd.conf should
  186. give you an IRCd configured exactly the way it was on Bahamut.  Configuration
  187. files from other IRC daemons have *not* been tested, so your mileage may vary
  188. with those (although the configuration should be very similar.)  Certainly if
  189. you find an ircd.conf from another daemon that works, let us know about it!
  190.  
  191.     (5) Restart your BBS, or recycle your services so that your new IRC
  192. service is brought online with your BBS.  Watch your BBS console carefully,
  193. as you should see something similar to the following messages:
  194.  
  195. srvc 0007 IRC SynchronetIRCd-1.1b(1.102) started.
  196. srvc 0007 IRC Reading Config: /sbbs/ctrl/ircd.conf
  197.  
  198.     You may have to scroll up to see the message.  Any errors should be
  199. self-explanatory (and usually involve not being able to read the configuration
  200. file.)  If you get an error about not being able to bind to a socket, or that
  201. a socket is already in use, then you already have something running on the
  202. port you defined in your services configuration.  Could it be another IRC
  203. server running?  Try disabling any other IRC servers or proxies and restart
  204. the BBS.  If you recently restarted Synchronet with users connected to an
  205. already operating IRCd, then it's likely that some of your sockets are in a
  206. 'TIME_WAIT' state.  Wait a minute or two for the condition to clear up, then
  207. try again.  Repeat this process of elimination until your IRCd starts
  208. successfully.
  209.  
  210.     (6) Test your new IRCd by connecting to it with an IRC client.
  211. At the very least, using 'telnet' to connect to the IRCd port should give you
  212. something similar to the following line:
  213.  
  214. :rrx.synchro.net NOTICE * :*** SynchronetIRCd-1.1b(1.102) (RoadRunner X) Ready.
  215.  
  216.     Which is the standard Synchronet IRCd banner, informing you that the
  217. IRCd is accepting new connections correctly.
  218.  
  219.     At this point, you should have a working, fully-functional IRC server
  220. available for users to use.  You may want to point Synchronet's internal IRC
  221. client to your local IRC server (just 'localhost' or '127.0.0.1'), so that
  222. your BBS users will be able to make use of your new IRCd.  By default, an
  223. O:Line has been added so that anyone connecting either from the BBS itself, or
  224. your internal network will be able to make use of the /OPER command to become
  225. an IRC Operator.  To become an IRC Operator, first /WHOIS yourself to make
  226. sure that your hostname is your local BBS's hostname (i.e. mybbs.synchro.net)
  227. If so, execute '/OPER Sysop <pass>', where <pass> is your local BBS system
  228. password.  If your hostname isn't the local BBS's hostname, go ahead and edit
  229. ircd.conf (in the Synchronet 'ctrl' directory) and add an O:Line for your
  230. hostname as directed by the instructions inside of the configuration file.
  231.  
  232. [3.2] - Linking to the Synchronet IRC Network (irc.synchro.net)
  233.  
  234.     Connecting your IRC server to the Synchronet IRC Network has certain
  235. advantages.  The best advantage is that you'll be allowing any users who use
  236. your IRC server (i.e. your BBS users) to also talk to other users on the
  237. network.  Since the network is largely BBS-oriented, there are a wide variety
  238. of channels available for users to join and discuss various topics.
  239. Furthermore, you'll be offering your system to the pool of IRC servers
  240. available for the public to use.  Just like how DOVE-Net is a network of
  241. Synchronet systems that pass message group messages to one another, the
  242. Synchronet IRC Network is a network of Synchronet systems for the purposes of
  243. chatting in realtime.
  244.  
  245.     In later versions of the IRCd or the network, you'll be able to offer
  246. your BBS's files over IRC, integrate your BBS chat area with IRC, or even
  247. receive alerts about new messages or BBS email while on IRC.
  248.  
  249.     Linking with the Synchronet IRC Network takes about as much time (if
  250. not less) as it does to establish a DOVE-Net node.  Therefore, the procedures
  251. have been kept very similar.  The Synchronet IRC Network is the only IRC
  252. network in the world that allows you to link without going through a tiresome
  253. application process, or other such bureaucracy.  In fact, no network admin need
  254. be present at all for you to link to the Synchronet IRC network.
  255.  
  256.     Just as with establishing a DOVE-Net node, the following steps must be
  257. taken to ensure a smooth link to the Synchronet IRC Network:
  258.  
  259.     (1) Ensure that you have a DOVE-Net node established.  Although you
  260. aren't required to be a member of DOVE-Net to be a member of the Synchronet IRC
  261. Network, you need to at least go through the same automatic registration
  262. process to obtain and configure your QWK-ID.  Instructions about obtaining
  263. your QWK-ID can be found here: http://www.synchro.net/docs/dove-net.txt
  264. Only steps 1 and 2 need be followed, but heed the document's warning:
  265. "Remember the password you used to create this account, you'll need it later."
  266. You do not need to create a new QWK-ID for the IRCd if you already have an
  267. existing one for DOVE-Net.
  268.  
  269.     (2) Setup the "dyndns.js" module with your appropriate QWK-id
  270. information so that the hostname "mybbs.synchro.net" will point towards your
  271. correct IP address.  This is required so that users who try to reach your IRC
  272. server will be able to resolve the hostname used on the IRC network.  That
  273. way, if anyone wishes to connect to your server/BBS specifically, they'll be
  274. able to use "mybbs.synchro.net" (i.e. if your server happens to be faster,
  275. closer, or offers interesting BBS features.)  The dyndns.js module comes
  276. with Synchronet 3.11.
  277.  
  278.     To enable the dyndns module, add a timed event inside of SCFG under
  279. "External Programs->Timed Events" to run the command "?dyndns <pass>" every
  280. now and then.  Replace <pass> with your exact QWK password.  Running the
  281. module once per day is usually acceptable, although you may want to run it
  282. more often if your IP address is prone to changing rapidly.
  283.  
  284.     After the timed event has been configured, force the event to be ran.
  285. This can be done at the BBS itself (by using ";EXEC ?dyndns <pass>" from the
  286. BBS main menu.)  Then, after about 3 or 5 minutes, attempt to ping your new
  287. hostname (qwk-id.synchro.net, where 'qwk-id' is your qwk-id.)  It is very
  288. important that the IP address you're connecting to the Synchronet IRC Network
  289. from and the IP address that your new hostname (in the form of
  290. qwk-id.synchro.net) resolves to are exactly the same, otherwise you won't be
  291. able to link.  This is to prevent anyone from arbitrarily linking their server
  292. to the network by utilizing your qwk-id.
  293.  
  294.     (3) Edit your ircd.conf and include a C/N line pair for connecting to
  295. 'vert.synchro.net'.  These should be commented out in the stock ircd.conf, and
  296. will look like this:
  297.  
  298. #C:vert.synchro.net:QWK_PASSWORD:*.synchro.net:6667:30
  299. #N:vert.synchro.net:*:*.synchro.net::30
  300.  
  301.     Remove the '#' from each line, and replace 'QWK_PASSWORD' with the
  302. password you were assigned (or selected) when registering for a QWK-ID.  The
  303. ircd.conf contains a description of what each of the lines (and fields) mean.
  304. It is very important that you leave the asterisks as they are, especially on
  305. the N:Line.  This is because the server you're connecting to may be randomly
  306. assigned, and the server will never echo your QWK password back to you, so it
  307. chooses to echo a '*' back instead.  An asterisk in the N:Line also forbids any
  308. servers from connecting *to* you, which is important, since you'll only be
  309. doing outbound connects with this C/N pair.
  310.  
  311.     (4) Restart your BBS (or, if you know how to become an IRC operator,
  312. simply use the /REHASH command), and you should see a message similar to the
  313. following in your Synchronet console:
  314.  
  315. srvc 0008 IRC Routing: Auto-connecting to rrx.synchro.net
  316. srvc 0008 IRC Routing: Connected!  Sending info...
  317. srvc 0008 IRC 0018 Accepted new connection: 154.5.119.21 port 6667
  318. srvc 0008 IRC Routing: Link with rrx.synchro.net established, states: TS
  319.  
  320.     If you see any messages in regards to "Server not configured" or
  321. "Connection reset by peer", it's highly likely that you've mistyped your QWK
  322. password into the C:Line in your ircd.conf.  Double-check to make sure that
  323. the password is correct, and that you haven't otherwise malformed the C/N line
  324. pair.  In particular, make sure all the asterisks (as per the default) are
  325. where they should be.
  326.  
  327.     Otherwise, if you have received those messages, then you're connected!
  328. You should be able to join the typical busy Synchronet IRC channels, #bbs and
  329. #synchronet, and be able to chat with people across the network.  You can find
  330. network administrators in #opers if you have any questions or concerns.
  331.  
  332. [3.3] - Using JSexec to run the IRCd
  333.  
  334.     There are times where you may wish to run the IRCd service separately
  335. from Synchronet so that whenever your BBS goes up or down, the IRCd isn't
  336. affected.  A special program, included with Synchronet, is called "JSexec" and
  337. is intended for use in this way.  By using JSexec, your IRCd will remain
  338. operational regardless of what your BBS is doing, while still integrating with
  339. all of the regular Synchronet features.  In fact, in most respects, running
  340. the IRCd via JSexec is the preferred method.
  341.  
  342.     To run your IRCd with JSexec, make sure that you've followed all the
  343. installation instructions above.  In particular, take a look at your M:Line on
  344. your ircd.conf and ensure that the last argument is the port you wish to run
  345. the IRCd on (typically 6667.)  If you're currently running the IRCd through
  346. Synchronet, shutdown your BBS and comment out (or remove) the sections in your
  347. services configuration files (services.ini or services.cfg) so that the
  348. service is not restarted when you bring the BBS back up.
  349.  
  350.     Just like when you're running the IRCd from within Synchronet, you
  351. need to tell JSexec that the service you're running is to be 'looped,' which
  352. is done with the -l option.  Thus, a typical JSexec execution will look like
  353. this:
  354.  
  355.     jsexec -l ircd
  356.  
  357.     The above command is typed from within the Synchronet 'exec' directory.
  358. All console commands and errors are logged to the terminal that JSexec was
  359. started from.  You should see the standard IRCd startup messages, which means
  360. that the IRCd is now operational through JSexec.  Connecting to the IRCd
  361. should now work as per normal.
  362.  
  363. =======- 4.0 -- About the Synchronet IRC Network (irc.synchro.net) -==========
  364.  
  365.     The Synchronet IRC Network is currently a small network with a BBS
  366. focus.  Like all new IRC networks, we hope that with the help of other BBS
  367. sysops around the globe, the Synchronet IRC Network will grow to become a
  368. thriving community sporting a wide variety of topics.  Currently, the network
  369. has a very relaxed authoritative structure -- perhaps one of the most relaxed
  370. among all IRC networks.  Even so, certain 'common sense' rules still apply.
  371.  
  372.     Servers linked to the Synchronet IRC Network are automatically put
  373. into the DNS round-robin for 'irc.synchro.net', which means that you can
  374. expect to see connections from other clients who choose to use that address to
  375. connect to IRC.  You should expect to see your server listed in the round-
  376. robin within about 30 minutes, although it typically takes less.
  377.  
  378. =======- 5.0 -- Technical Information -=======================================
  379.  
  380. [5.1] - Limits of the Synchronet IRCd
  381.  
  382.     Although the Synchronet IRCd Service is written in Javascript, an
  383. interpreted scripting language, it has been written to scale relatively well.
  384. Thanks to the DALnet Bahamut testing team, the IRCd has successfully held
  385. over 1,000 clients without any noticable slowdown.  The old limit of 100 users
  386. has been eliminated since version 1.1 of the IRCd.
  387.  
  388.     If you notice any slowdown or scaling problems, please let us know.
  389.  
  390. [5.2] - Compliance with RFC's, and established protocols
  391.  
  392.     The Synchronet IRCd has always aimed to be compliant with RFC1459, which
  393. was the first published IRC specification.  However, it has chosen to deviate
  394. from the RFC where appropriate.  This might be because of errors inside the
  395. RFC itself (i.e. +p channels being listed as "*" instead of "Prv",) for the
  396. purpose of added functionality (i.e. handling of the PASS message for dynamic
  397. QWK connections,) or for security (not displaying some sensitive STATS output
  398. to users who are not IRC operators.)  Compliance with the newer IRC RFC papers
  399. (inclusive of RFC's 2810 through 2813) is mostly correct, however deviates
  400. wherever Bahamut-specific extensions conflict.
  401.  
  402.     The DALnet-style Bahamut extensions to the server-to-server protocol
  403. involve improving performance between server links by reducing the amount of
  404. traffic that needs to go across any link.  Furthermore, extra arguments are
  405. added to common commands (NICK, MODE, TOPIC, etc) in order to better establish
  406. the authenticity of the message.  In particular, timestamps ("TS") have been
  407. added to many commands in order to resolve conflicts between messages.
  408. Although the Bahamut extensions are largely undocumented, the author chose to
  409. use these extensions as a base for extending the IRC protocol (as described
  410. in RFC1459) for the purpose of providing modern features.
  411.  
  412.     The Synchronet IRCd diverges from common IRC practice and Bahamut IRC
  413. protocol in the following fashion:
  414.  
  415.     * The Synchronet IRCd does NOT make use of the "ident" protocol, which
  416. is popular among larger IRC networks.  This exclusion was decided on because
  417. it provides very little in the way of authoritative information.  Instead, a
  418. user has been considered to be "identified" (by the lack of a tilde in the
  419. username portion of the user "user@host" mask) when they have correctly
  420. identified to a local BBS account.  Identifying to the BBS account is done by
  421. sending a PASS message in the registration stage.  Checks against a local BBS
  422. account are done against the username, and then the nickname respectively.
  423. Thus, any IRC servers not running the Synchronet IRCd MUST NOT accept ident,
  424. as it could seriously compromise a BBS-style authorization structure.
  425.  
  426.     * The PASS message has been extended to allow for the passing and
  427. checking of QWK passwords in the case of dynamic connections:
  428.  
  429.         PASS <password> :<qwk-id> QWK
  430.  
  431.     No destination is specified within the message, as the routing is
  432. handled by static configuration directives (in the form of flags on the N:Line)
  433. which show a single path for the message to take.  This is to ensure that the
  434. password cannot be sent over an arbitrary connection, improving the security
  435. of the message.  The reply to a query looks like this:
  436.  
  437.         PASS <result> :<qwk-id> QWK <origin>
  438.  
  439.     Where <result> is "OK" if the password check succeeded, and anything
  440. else (typically "VOID") on failure.  The origin is specified so that the
  441. message may be routed back to the correct server.  Thus, a PASS message without
  442. an origin is a check, and a PASS message with an origin is a reply.
  443.  
  444.     * Leaf servers are considered to be 'untrusted' servers by default, due
  445. to the highly dynamic nature of a Synchronet-based IRC network.  This is to
  446. prevent bogus messages from being injected into the network, false
  447. representation of authority, or otherwise harmful activity.  Since untrusted
  448. servers are allowed to connect to the network, leaf servers are restricted in
  449. the following way beyond the standard behavior:
  450.  
  451.     - All timestamps received from a leaf are ignored and are instead
  452.       replaced by the current time.  Thus, nickname collisions cannot be
  453.       forced, and TS blasting is prevented.
  454.     - User mode +o (oper) is ignored.  However, local operators still
  455.       retain authority over their local server.
  456.     - The KILL and SQUIT messages are ignored and reversed if the target
  457.       is connected to a server beyond the scope of the leaf.
  458.     - Services authorization modes (+z, +r, +q and friends) are ignored.
  459.     - Authenticity of mode change messages (channel ops, voice, bans, etc)
  460.       are strictly checked and reversed if there's a mismatch.  Mode
  461.       hacking is thus prevented.
  462.     - All channel modes are bounced on behalf of the leaf by the hub upon
  463.       a resync.
  464.     - Private/Secret channels are not revealed to the leaf unless a user
  465.       on the leaf explicitly joins the channel.
  466.  
  467. [5.3] - Compatibility with other IRCd's
  468.  
  469.     The Synchronet IRCd has only been tested to be link compatible with:
  470.  
  471.     * Bahamut 1.4.35, 1.4.36        http://bahamut.dal.net
  472.     * Andy Church's IRC Services 5.0    http://www.ircservices.za.net
  473.  
  474.     The IRCd should be compatible with any other daemon that supports the
  475. DALnet-style Bahamut extensions.  If you successfully link another IRCd
  476. (including a services package, or other pseudo-server,) then please feel free
  477. to let us know about it in #synchronet.  Patches may be accepted to allow the
  478. IRCd to be link compatible with other protocols at the sole discretion of the
  479. author.
  480.  
  481. =======- 6.0 -- The Future -==================================================
  482.  
  483.     Although the original intention of the IRCd was to allow users to
  484. interact between one another from the BBS multi-node chat area, that has yet
  485. to occur.  Eventually, users will be able to talk to one another from various
  486. BBS's and not even be aware that they're using IRC as the transport protocol
  487. for their chat sessions.  For the time being, one can use the Synchronet IRC
  488. client (irc.js) to connect to their local IRC server.
  489.  
  490.     Further compatibility with the later Bahamut daemons is planned,
  491. including the server-to-server "RESYNCH" command, user-accessible "WATCH", and
  492. "SILENCE."  Also, more umodes will be supported, in addition to the possibility
  493. of gaining some of the Bahamut channel modes (i.e. +c)  Exception modes (+e,
  494. etc) and exception lines (to circumvent K:Lines) may be implemented.
  495.  
  496.     Some sort of mechanism will be implemented to allow individual BBS's
  497. to share their message and file areas over IRC.  This means that you'll be
  498. able to DCC send/receive files from a BBS, QWK packets, messages, and that
  499. sort of thing.
  500.  
  501.     I'm sure DigitalMan has a ton of cool ideas, too ;)
  502.  
  503. =======- 7.0 -- Frequently Asked Questions -==================================
  504.  
  505. [7.1] - Installation Questions
  506.  
  507.     Q: After setting up my IRCd, and trying to connect, it gives me an
  508.        error stating: "You're not authorized to use this server." or
  509.        "Your host isn't among the privileged." (Numeric 463)
  510.  
  511.     A: Most likely your Javascript libraries are too old.  Upgrade to
  512.        Synchronet 3.11, which contains sufficiently modern Javascript
  513.        libraries.  If you're certain that you're running new libraries,
  514.        double-check your I:Lines and Y:Lines inside the ircd.conf.
  515.        Javascript libraries before the year 2003 are considered to be too
  516.        old; you can check your Javascript library version from the 'system
  517.        information' portion of your BBS main menu.
  518.  
  519.     Q: I try to connect and it tells me "Password Incorrect" or "Denied."
  520.        (Numeric 464)
  521.  
  522.     A: You've required a password to be passed to the IRC server via
  523.        the PASS command upon registration.  Check your I:Lines.
  524.  
  525.     Q: I keep on getting "Error setting up socket for listening" or
  526.        "Error binding socket to TCP port."
  527.  
  528.     A: It's highly likely that you already have something running on the
  529.        port that you've defined the IRCd to use (typically 6667.)  If you
  530.        have another IRCd running, shut it down or redefine the port that
  531.        the Synchronet IRCd uses to listen for connections.  If you get
  532.        this error after having recently shut down Synchronet, one or more
  533.        sockets may be stuck in 'TIME_WAIT' or similar, in which case you
  534.        should wait until they expire (as viewable with "netstat".)
  535.  
  536.     Q: My server keeps on trying to auto-connect to other servers, and I
  537.        don't want this!  What do I do?
  538.  
  539.     A: The IRCd will attempt to auto-connect if there's a port defined in
  540.        the C:Line for that server.  Furthermore, a connect frequency must
  541.        be defined in a Y:Line for the applicable IRC class for an auto-
  542.        connect to be attempted.  Remove the port from the C:Line, or turn
  543.        the auto-connect frequency down to 0 in the Y:Line.
  544.  
  545.     Q: I installed the IRCd, but where are IRC Services? (ChanServ,
  546.        NickServ, etc.)
  547.  
  548.     A: IRC Services are not a part of the Synchronet IRCd.  Instead, we
  549.        recommend that you make use of an external services package such
  550.        as Andy Church's IRC Services (http://www.ircservices.za.net)
  551.        Furthermore, any services package which is compatible with the
  552.        Bahamut inter-server protocol should work.  There *may* be an IRC
  553.        services package written in Javascript for Synchronet later.
  554.  
  555.     Q: I've linked to the Synchronet IRC Network, and now I'm getting all
  556.        sorts of weird 'Routing' messages.
  557.  
  558.     A: These messages are sent whenever an 'important' event occurs on the
  559.        IRC network.  This includes whenever a server links or delinks from
  560.        the network, which occurs with quite a bit of regularity.  These
  561.        messages are informational only, and simply indicate that your IRCd
  562.        (and the network at large) are operating correctly.
  563.  
  564.     Q: I've successfully installed my IRCd, now how do I become an IRC
  565.        Operator?
  566.  
  567.     A: Use the /OPER command, which has a syntax of '/OPER <nick> <pass>'.
  568.        By default, the Synchronet IRCd configuration file is already pre-
  569.        configured so that you may OPER to a nickname of 'Sysop' with the
  570.        BBS system password so long as you're connecting from the BBS
  571.        machine itself, or a system on your local network.  This means you
  572.        would execute the command like this: '/OPER Sysop <syspass>'.
  573.        Also check out the O:Line section in ircd.conf.
  574.  
  575.     Q: My question isn't answered in this document, where can I go?
  576.  
  577.     A: First, make sure you've read this document *in its entirety*
  578.        Second, read section 2.2 again.
  579.        Third, if you're still having a problem, feel free to join
  580.        #synchronet on irc.synchro.net, the author typically uses the nick
  581.        of 'Cyan'  Support is not given via email or otherwise.
  582.  
  583. [7.2] - Technical Questions
  584.  
  585.     Q: Why were the Bahamut protocol extensions used instead of EFnet,
  586.        Undernet, Unreal, or otherwise?
  587.  
  588.     A: The Bahamut extensions were simply the extensions that the author
  589.        was most familiar with.  Bahamut is a widely-deployed IRC daemon in
  590.        use by many networks (DALnet in particular,) so it's had a strong
  591.        test cycle.  Furthermore, all modern IRC extensions are relatively
  592.        similar to each other, but differ in name.  For example, Bahamut's
  593.        SJOIN is similar to EFnet's NJOIN.
  594.  
  595.     Q: Will you be adding support for <X> protocol, or for <X> IRCd?
  596.  
  597.     A: Highly unlikely.  However, feel free to add in your own support and
  598.        send me a diff.  Depending on the scope of the changes, I may choose
  599.        to include them, or perhaps offer it externally as a patch.  When
  600.        coding in support for different IRC protocol extensions, try to
  601.        make use of modularity so that it's possible to link together
  602.        servers of different protocols, with the IRCd as the bridge.
  603.        Patches that follow this 'modular' approach are more likely to be
  604.        accepted.
  605.  
  606.     Q: Can I make modifications to the IRCd?
  607.  
  608.     A: By all means, go for it!  If you think that you've made a
  609.        particularly useful or clever hack, please feel free to send your
  610.        changes to ircd@rrx.ca (in unified diff format, preferably) along
  611.        with a description of what you've changed.
  612.  
  613.     Q: I'm an IRC guru, and I'd like to talk to the author about the IRCd,
  614.        where do I go?
  615.  
  616.     A: The author can typically be found in #synchronet as 'Cyan' on
  617.        irc.synchro.net, and welcomes all discussion about IRC protocol,
  618.        theory (especially as it relates to IRC3 proposals,) or general
  619.        banter among long-standing IRC users.
  620.  
  621. =======- EOF -================================================================
  622.