Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
service:ircd [2010/02/26 09:31] – Work in progress... cyan | service:ircd [2023/09/09 10:40] (current) – [Using JSexec with systemd] Refer to the ircd.service file from the Git repo instead of copy/pasting stale example here digital man | ||
---|---|---|---|
Line 4: | Line 4: | ||
The Synchronet IRCd (IRC daemon) service is a static service written in 100% Javascript. | The Synchronet IRCd (IRC daemon) service is a static service written in 100% Javascript. | ||
- | the most complex) service available for Synchronet. | + | the most complex) service available for Synchronet. |
====== About this document ====== | ====== About this document ====== | ||
Line 18: | Line 18: | ||
Don't be surprised if you're ignored or simply referred to a URL without further explanation if you ask for help and refer to an IRC *channel* as a room, call *IRC operators* ' | Don't be surprised if you're ignored or simply referred to a URL without further explanation if you ask for help and refer to an IRC *channel* as a room, call *IRC operators* ' | ||
- | [2.3] - Assumptions we make about you | + | In short, this document assumes that you know: |
- | In short, this document assumes that you know: | + | |
- | + | * The basics of IRC and its terminology. | |
- | * How to use your computer and operating system effectively. | + | * How to use, configure, and make basic modifications to Synchronet. |
- | * The basics of IRC and its terminology. | + | * The basics of the Internet (or at least the ability to visualize a routed, distributed network) |
- | * How to use, configure, and make basic modifications to Synchronet. | + | |
- | * The basics of the Internet (or at least the ability to visualize | + | |
- | | + | |
====== Installation ====== | ====== Installation ====== | ||
Line 34: | Line 31: | ||
By default, the Synchronet IRCd is installed as a service. | By default, the Synchronet IRCd is installed as a service. | ||
+ | < | ||
[IRC] | [IRC] | ||
Port=6667 | Port=6667 | ||
Options=STATIC | LOOP | Options=STATIC | LOOP | ||
Command=ircd.js | Command=ircd.js | ||
+ | </ | ||
The ' | The ' | ||
Line 47: | Line 46: | ||
You will know if the IRCd has started successfully if you see entries like this in your BBS log: | You will know if the IRCd has started successfully if you see entries like this in your BBS log: | ||
+ | < | ||
srvc 0007 IRC SynchronetIRCd-1.1b(1.102) started. | srvc 0007 IRC SynchronetIRCd-1.1b(1.102) started. | ||
srvc 0007 IRC Reading Config: / | srvc 0007 IRC Reading Config: / | ||
+ | </ | ||
You may have to scroll up to see the message. | You may have to scroll up to see the message. | ||
Line 54: | Line 55: | ||
Test your new IRCd by connecting to it with an IRC client. At the very least, using ' | Test your new IRCd by connecting to it with an IRC client. At the very least, using ' | ||
+ | < | ||
: | : | ||
+ | </ | ||
This is the standard Synchronet IRCd banner, informing you that the IRCd is accepting new connections correctly. | This is the standard Synchronet IRCd banner, informing you that the IRCd is accepting new connections correctly. | ||
Line 78: | Line 81: | ||
(3) Edit your ircd.conf and include a C/N line pair for connecting to ' | (3) Edit your ircd.conf and include a C/N line pair for connecting to ' | ||
+ | < | ||
# | # | ||
# | # | ||
+ | </ | ||
Remove the '#' | Remove the '#' | ||
assigned, and the server will never echo your QWK password back to you, so it chooses to echo a ' | assigned, and the server will never echo your QWK password back to you, so it chooses to echo a ' | ||
- | (4) Restart your BBS (or, if you know how to become an IRC operator, simply use the /REHASH command), and you should see a message similar to the following in your Synchronet console: | + | (4) If you know how to become an IRC operator, simply use the /REHASH command. If not, you can try **touch / |
+ | < | ||
srvc 0008 IRC Routing: Auto-connecting to rrx.synchro.net | srvc 0008 IRC Routing: Auto-connecting to rrx.synchro.net | ||
srvc 0008 IRC Routing: Connected! | srvc 0008 IRC Routing: Connected! | ||
srvc 0008 IRC 0018 Accepted new connection: 154.5.119.21 port 6667 | srvc 0008 IRC 0018 Accepted new connection: 154.5.119.21 port 6667 | ||
srvc 0008 IRC Routing: Link with rrx.synchro.net established, | srvc 0008 IRC Routing: Link with rrx.synchro.net established, | ||
+ | </ | ||
If you see any messages in regards to " | If you see any messages in regards to " | ||
Line 95: | Line 102: | ||
Otherwise, if you have received those messages, then you're connected! You should be able to join the typical busy Synchronet IRC channels, #bbs and # | Otherwise, if you have received those messages, then you're connected! You should be able to join the typical busy Synchronet IRC channels, #bbs and # | ||
- | ====== Using JSexec to run the IRCd | + | ====== Using JSexec to run the IRCd ====== |
- | There are times where you may wish to run the IRCd service separately | + | There are times where you may wish to run the IRCd service separately from Synchronet so that whenever your BBS goes up or down, the IRCd isn't affected. |
- | from Synchronet so that whenever your BBS goes up or down, the IRCd isn't | + | |
- | affected. | + | |
- | is intended for use in this way. By using JSexec, your IRCd will remain | + | |
- | operational regardless of what your BBS is doing, while still integrating with | + | |
- | all of the regular Synchronet features. | + | |
- | the IRCd via JSexec is the preferred method. | + | |
- | To run your IRCd with JSexec, make sure that you've followed all the | + | To run your IRCd with JSexec, make sure that you've followed all the installation instructions above. |
- | installation instructions above. | + | |
- | your ircd.conf and ensure that the last argument is the port you wish to run | + | |
- | the IRCd on (typically 6667.) | + | |
- | Synchronet, shutdown your BBS and comment out (or remove) the sections in your | + | |
- | services configuration files (services.ini or services.cfg) so that the | + | |
- | service is not restarted when you bring the BBS back up. | + | |
- | Just like when you're running the IRCd from within Synchronet, you | + | Just like when you're running the IRCd from within Synchronet, you need to tell JSexec that the service you're running is to be ' |
- | need to tell JSexec that the service you're running is to be ' | + | |
- | is done with the -l option. | + | |
- | this: | + | |
- | jsexec -l ircd | + | jsexec -l ircd |
- | The above command is typed from within the Synchronet ' | + | The above command is typed from within the Synchronet ' |
- | All console commands and errors are logged to the terminal that JSexec was | + | |
- | started from. You should see the standard IRCd startup messages, which means | + | |
- | that the IRCd is now operational through JSexec. | + | |
- | should now work as per normal. | + | |
- | =======- 4.0 -- About the Synchronet IRC Network (irc.synchro.net) -========== | + | ====== |
- | The Synchronet IRC Network is currently a small network with a BBS | + | A sample '' |
- | focus. Like all new IRC networks, we hope that with the help of other BBS | + | |
- | sysops around the globe, the Synchronet IRC Network will grow to become | + | |
- | thriving community sporting a wide variety of topics. | + | |
- | has a very relaxed authoritative structure | + | |
- | among all IRC networks. | + | |
- | Servers linked to the Synchronet IRC Network are automatically put | + | Then run: |
- | into the DNS round-robin for ' | + | systemctl enable ircd |
- | expect to see connections from other clients who choose to use that address to | + | systemctl daemon-reload |
- | connect to IRC. You should expect to see your server listed in the round- | + | systemctl start ircd |
- | robin within about 30 minutes, although it typically takes less. | + | |
- | =======- 5.0 -- Technical Information -======================================= | + | ===== Setting up TLS/Secure Connections |
+ | |||
+ | If you are running with JSExec, you can add this line to your ircd.conf in order to accept secure requests: | ||
+ | |||
+ | < | ||
+ | P: | ||
+ | </ | ||
+ | ====== | ||
+ | |||
+ | The Synchronet IRC Network is currently a small network with a BBS focus. | ||
+ | |||
+ | Servers linked to the Synchronet IRC Network are automatically put into the DNS round-robin for ' | ||
+ | |||
+ | ====== | ||
[5.1] - Limits of the Synchronet IRCd | [5.1] - Limits of the Synchronet IRCd | ||
- | Although the Synchronet IRCd Service is written in Javascript, an | + | Although the Synchronet IRCd Service is written in Javascript, an interpreted scripting language, it has been written to scale relatively well. Thanks to the DALnet Bahamut testing team, the IRCd has successfully held over 1,000 clients without any noticable slowdown. |
- | interpreted scripting language, it has been written to scale relatively well. | + | |
- | Thanks to the DALnet Bahamut testing team, the IRCd has successfully held | + | |
- | over 1,000 clients without any noticable slowdown. | + | |
- | has been eliminated since version 1.1 of the IRCd. | + | |
- | If you notice any slowdown or scaling problems, please let us know. | + | If you notice any slowdown or scaling problems, please let us know. |
[5.2] - Compliance with RFC's, and established protocols | [5.2] - Compliance with RFC's, and established protocols | ||
- | The Synchronet IRCd has always aimed to be compliant with RFC1459, which | + | The Synchronet IRCd has always aimed to be compliant with RFC1459, which was the first published IRC specification. |
- | was the first published IRC specification. | + | |
- | from the RFC where appropriate. | + | |
- | RFC itself (i.e. +p channels being listed as " | + | |
- | purpose of added functionality (i.e. handling of the PASS message for dynamic | + | |
- | QWK connections, | + | |
- | to users who are not IRC operators.) | + | |
- | (inclusive of RFC's 2810 through 2813) is mostly correct, however deviates | + | |
- | wherever Bahamut-specific extensions conflict. | + | |
- | The DALnet-style Bahamut extensions to the server-to-server protocol | + | The DALnet-style Bahamut extensions to the server-to-server protocol involve improving performance between server links by reducing the amount of traffic that needs to go across any link. Furthermore, |
- | involve improving performance between server links by reducing the amount of | + | |
- | traffic that needs to go across any link. Furthermore, | + | |
- | added to common commands (NICK, MODE, TOPIC, etc) in order to better establish | + | |
- | the authenticity of the message. | + | |
- | added to many commands in order to resolve conflicts between messages. | + | |
- | Although the Bahamut extensions are largely undocumented, | + | |
- | use these extensions as a base for extending the IRC protocol (as described | + | |
- | in RFC1459) for the purpose of providing modern features. | + | |
- | The Synchronet IRCd diverges from common IRC practice and Bahamut IRC | + | The Synchronet IRCd diverges from common IRC practice and Bahamut IRC protocol in the following fashion: |
- | protocol in the following fashion: | + | |
- | * The Synchronet IRCd does NOT make use of the " | + | * The Synchronet IRCd does NOT make use of the " |
- | is popular among larger IRC networks. | + | |
- | it provides very little in the way of authoritative information. | + | |
- | user has been considered to be " | + | |
- | username portion of the user " | + | |
- | identified to a local BBS account. | + | |
- | sending a PASS message in the registration stage. | + | |
- | account are done against the username, and then the nickname respectively. | + | |
- | Thus, any IRC servers not running the Synchronet IRCd MUST NOT accept ident, | + | |
- | as it could seriously compromise a BBS-style authorization structure. | + | |
- | * The PASS message has been extended to allow for the passing and | + | * The PASS message has been extended to allow for the passing and checking of QWK passwords in the case of dynamic connections: |
- | checking of QWK passwords in the case of dynamic connections: | + | |
- | PASS < | + | PASS < |
- | No destination is specified within the message, as the routing is | + | No destination is specified within the message, as the routing is handled by static configuration directives (in the form of flags on the N:Line) which show a single path for the message to take. This is to ensure that the password cannot be sent over an arbitrary connection, improving the security of the message. |
- | handled by static configuration directives (in the form of flags on the N:Line) | + | |
- | which show a single path for the message to take. This is to ensure that the | + | |
- | password cannot be sent over an arbitrary connection, improving the security | + | |
- | of the message. | + | |
- | PASS < | + | PASS < |
- | Where < | + | Where < |
- | else (typically " | + | |
- | message may be routed back to the correct server. | + | |
- | an origin is a check, and a PASS message with an origin is a reply. | + | |
- | * Leaf servers are considered to be ' | + | * Leaf servers are considered to be ' |
- | to the highly dynamic nature of a Synchronet-based IRC network. | + | |
- | prevent bogus messages from being injected into the network, false | + | |
- | representation of authority, or otherwise harmful activity. | + | |
- | servers are allowed to connect to the network, leaf servers are restricted in | + | |
- | the following way beyond the standard behavior: | + | |
- | - All timestamps received from a leaf are ignored and are instead | + | - All timestamps received from a leaf are ignored and are instead replaced by the current time. Thus, nickname collisions cannot be forced, and TS blasting is prevented. |
- | | + | - User mode +o (oper) is ignored. |
- | | + | - The KILL and SQUIT messages are ignored and reversed if the target is connected to a server beyond the scope of the leaf. |
- | - User mode +o (oper) is ignored. | + | - Services authorization modes (+z, +r, +q and friends) are ignored. |
- | | + | - Authenticity of mode change messages (channel ops, voice, bans, etc) are strictly checked and reversed if there' |
- | - The KILL and SQUIT messages are ignored and reversed if the target | + | - All channel modes are bounced on behalf of the leaf by the hub upon a resync. |
- | | + | - Private/ |
- | - Services authorization modes (+z, +r, +q and friends) are ignored. | + | |
- | - Authenticity of mode change messages (channel ops, voice, bans, etc) | + | |
- | | + | |
- | | + | |
- | - All channel modes are bounced on behalf of the leaf by the hub upon | + | |
- | | + | |
- | - Private/ | + | |
- | | + | |
- | [5.3] - Compatibility with other IRCd's | + | ====== |
- | The Synchronet IRCd has only been tested to be link compatible with: | + | The Synchronet IRCd has been tested to be link compatible with: |
* Bahamut 1.4.35, 1.4.36 http:// | * Bahamut 1.4.35, 1.4.36 http:// | ||
* Andy Church' | * Andy Church' | ||
- | The IRCd should be compatible with any other daemon that supports the | + | The IRCd should be compatible with any other daemon that supports the DALnet-style Bahamut extensions. |
- | DALnet-style Bahamut extensions. | + | |
- | (including a services package, or other pseudo-server, | + | |
- | to let us know about it in # | + | |
- | IRCd to be link compatible with other protocols at the sole discretion of the | + | |
- | author. | + | |
- | =======- 6.0 -- The Future | + | ====== The Future ====== |
- | Although the original intention of the IRCd was to allow users to | + | Although the original intention of the IRCd was to allow users to interact between one another from the BBS multi-node chat area, that has yet to occur. |
- | interact between one another from the BBS multi-node chat area, that has yet | + | |
- | to occur. | + | |
- | BBS's and not even be aware that they' | + | |
- | for their chat sessions. | + | |
- | client (irc.js) to connect to their local IRC server. | + | |
- | Further compatibility with the later Bahamut daemons is planned, | + | Further compatibility with the later Bahamut daemons is planned, including the server-to-server " |
- | including the server-to-server " | + | |
- | " | + | |
- | of gaining some of the Bahamut channel modes (i.e. +c) Exception modes (+e, | + | |
- | etc) and exception lines (to circumvent K:Lines) may be implemented. | + | |
- | Some sort of mechanism will be implemented to allow individual BBS's | + | Some sort of mechanism will be implemented to allow individual BBS's to share their message and file areas over IRC. This means that you'll be able to DCC send/ |
- | to share their message and file areas over IRC. This means that you'll be | + | |
- | able to DCC send/ | + | |
- | sort of thing. | + | |
- | I'm sure DigitalMan has a ton of cool ideas, too ;) | + | ====== Frequently Asked Questions ====== |
- | + | ||
- | =======- 7.0 -- Frequently Asked Questions | + | |
- | + | ||
- | [7.1] - Installation Questions | + | |
Q: After setting up my IRCd, and trying to connect, it gives me an | Q: After setting up my IRCd, and trying to connect, it gives me an | ||
Line 337: | Line 260: | ||
would execute the command like this: '/OPER Sysop < | would execute the command like this: '/OPER Sysop < | ||
Also check out the O:Line section in ircd.conf. | Also check out the O:Line section in ircd.conf. | ||
+ | |||
+ | Q: My ipv6 O:Line isn't working even if I surround the address with | ||
+ | | ||
+ | | ||
+ | A: You need to enclose the whole netmask within the square brackets. Do | ||
+ | | ||
+ | For example: | ||
+ | | ||
+ | |||
+ | Q: I've been forced off of the server with a " | ||
+ | What does this message mean? | ||
+ | |||
+ | A: This message is an indication that the Sysop of your BBS/IRCd has | ||
+ | shut down the BBS, and the IRCd is terminated as a result of that. | ||
+ | It is an indication of explicit termination (i.e., the IRCd was | ||
+ | | ||
Q: My question isn't answered in this document, where can I go? | Q: My question isn't answered in this document, where can I go? | ||
Line 384: | Line 323: | ||
| | ||
- | =======- EOF -================================================================ | ||