ergo/docs/MANUAL.md

16 KiB
Raw Blame History

      ▄▄▄   ▄▄▄·  ▄▄ •        ▐ ▄       
▪     ▀▄ █·▐█ ▀█ ▐█ ▀ ▪▪     •█▌▐█▪     
 ▄█▀▄ ▐▀▀▄ ▄█▀▀█ ▄█ ▀█▄ ▄█▀▄▪▐█▐▐▌ ▄█▀▄ 
▐█▌.▐▌▐█•█▌▐█ ▪▐▌▐█▄▪▐█▐█▌ ▐▌██▐█▌▐█▌.▐▌
 ▀█▄▀▪.▀  ▀ ▀  ▀ ·▀▀▀▀  ▀█▄▀ ▀▀ █▪ ▀█▄▀▪

     Oragono IRCd Manual 2018-02-02
          https://oragono.io/

Copyright © 2018 Daniel Oaks daniel@danieloaks.net


Table of Contents

  • Introduction
    • Project Basics
  • Installing
    • Windows
    • macOS / Linux / Raspberry Pi
  • Features
    • User Accounts
    • Channel Registration
  • Modes
    • User Modes
    • Channel Modes
    • Channel Prefixes
  • Acknowledgements

Introduction

This document goes over the Oragono IRC server, how to get it running and how to use it once it is up and running!

If you have any suggestions, issues or questions, feel free to submit an issue on our GitHub repo or ask in our channel #oragono on Freenode.

Project Basics

Lets go over some basics, for those new to Oragono. My names Daniel, and I started the project (it was forked off a server called Ergonomadic thatd been around for a few years). In addition to Oragono, I also do a lot of IRC specification work with the various ircdocs projects and with the IRCv3 WG.

Oragonos a new IRC server, written from scratch. My main goals when starting the project was to write a server that:

  • Is fully-functional (most of my attempts in the past which had been toy quality).
  • I could easily prototype new IRCv3 proposals and features in.
  • I could consider a reference implementation for the Modern spec.

All in all, these have gone pretty well. The server has relatively extensive command coverage, it prototypes a whole lot of the IRCv3 proposals and accepted/draft specs, and I pretty regularly update it to match new behaviour written into the Modern spec.

Some of the features that sets Oragono apart from other servers are:

  • Extensive IRCv3 support (more than any other server, currently).
  • Extensive logging and oper privilege levels.
  • Integrated user account and channel registration system (no services required!).
  • Native Unicode support (including casemapping for that Unicode).
  • Support for multiple languages.

Installing

In this section, well explain how to install and use the Oragono IRC server.

Windows

To get started with Oragono on Windows:

  1. Make sure you have the latest release downloaded.
  2. Extract the zip file to a folder.
  3. Copy and rename oragono.yaml to ircd.yaml.
  4. Open up ircd.yaml using any text editor, and then save it once youre happy.
  5. Open up a cmd.exe window, then cd to where you have Oragono extracted.
  6. Run oragono.exe initdb (this creates the database).
  7. Run oragono.exe mkcerts if you want to generate new self-signed SSL/TLS certificates (note that you cant enable STS if you use self-signed certs).

To start the server, type oragono.exe run and hit enter, and the server should start!

macOS / Linux / Raspberry Pi

To get started with Oragono on macOS, Linux, or on a Raspberry Pi:

  1. Make sure you have the latest release downloaded.
  2. Extract the tar.gz file to a folder.
  3. Copy and rename oragono.yaml to ircd.yaml.
  4. Open up ircd.yaml using any text editor, and then save it once youre happy.
  5. Open up a Terminal window, then cd to where you have Oragono extracted.
  6. Run ./oragono initdb (this creates the database).
  7. Run ./oragono mkcerts if you want to generate new self-signed SSL/TLS certificates (note that you cant enable STS if you use self-signed certs).

To start the server, type ./oragono run and hit enter, and the server should be ready to use!

If youre using Arch Linux, you can also install the oragono package from the AUR. This lets you bypass the above process and bundles a systemd service file for easily starting the server.


Features

In this section, well explain and go through using various features of the Oragono IRC server.

User Accounts

In most IRC servers you can use NickServ to register an account. You can do the same thing with Oragono, by default, with no other software needed!

However, there are some differences between how Oragono handles accounts and how most other servers do. Some of these differences are that:

  • In Oragono, account names are completely unrelated to nicknames (for now).
  • In Oragono, theres no nickname ownership (yet).
  • In Oragono, you cant use NickServ to register an account (yet).
  • In Oragono, you cant use NickServ to login (yet).

With nickname ownership and account names, on most IRC servers your nickname and your account name are one and the same thing. This isnt the case with Oragono. When using Oragono, your nickname and account name are totally unrelated, and theres no way to actually own a nickname (so no NickServ GHOST and similar). However, we do want to make this configurable in the future, so youll be able to own nicknames if its enabled in the server config.

With most IRC servers, you use /NS REGISTER, or otherwise contact NickServ to register an account. On Oragono, you cant register an account through NickServ (yet). These are the two ways you can register an account:

/QUOTE ACC REGISTER <username> * passphrase :<password>

This is the way to go if you want to use a regular password. <username> and <password> are your username and password, respectively (make sure the leave that one : before your actual password!).

/QUOTE ACC REGISTER <username> * certfp *

If you want to use a TLS client certificate to authenticate (SASL CERTFP), then you can use this method to do so. If youre not sure what this is, dont worry just use the above password method to register an account.

Once youve registered, youll need to setup SASL to login (were going to write NickServ IDENTIFY support, but its not there yet). One of the more complete SASL instruction pages is Freenodes page here. Open up that page, find your IRC client and then setup SASL with your chosen username and password!

Channel Registration

Once youve registered an account, you can also register channels. If you own a channel, youl be opped whenever you join it, and the topic/modes will be remembered and re-applied whenever anyone rejoins the channel.

To register a channel, make sure youre joined to it and logged into your account. If both those are true, you can send this command to register your account:

/CS REGISTER #channelname

For example, /CS REGISTER #test will register the channel #test to my account. Right now, the options for a registered channel are pretty sparse, but well add more as we go along.


Modes

On IRC, you can set modes on users and on channels. Modes are basically extra information that changes how users and channels work.

In this section, we give an overview of the modes Oragono supports.

User Modes

These are the modes which can be set on you when youre connected.

+a - Away

If this mode is set, youre marked as away. To set and unset this mode, you use the /AWAY command.

+i - Invisible

If this mode is set, youre marked as invisible. This means that your channels wont be shown when users /WHOIS you (except for IRC operators, they can see all the channels youre in).

To set this mode on yourself:

/mode dan +i

+o - Operator

If this mode is set, youre marked as an IRC Operator. This means that youre an admin of some sort on the server and have some special powers regular users dont have. To set this mode, you authenticate (oper-up) using the /OPER command.

+R - Registered-Only

If this mode is set, youll only receive messages from other users if theyre logged into an account. If a user who isnt logged-in messages you, you wont see their message.

To set this mode on yourself:

/mode dan +R

To unset this mode and let anyone speak to you:

/mode dan -R

+s - Server Notice Masks

This is a special list mode. If youre an IRC operator, this mode lets you see special server notices that get sent out. See the Server Notice Masks section for more information on this mode.

+Z - TLS

This mode is automatically set if youre connecting using SSL/TLS. Theres no way to set this yourself, and its automatically set or not set when you connect to the server.

Channel Modes

These are the modes that can be set on channels when youre an oper!

+b - Ban

With this channel mode, you can change and see whos banned from the channel. Specifically, you can ban masks, or a set of nickname, username and hostname.

Heres an example of banning a user named bob from channel #test:

/MODE #test +b bob!*@*

Lets say that bob is connecting from the address 192.168.0.234. You could also do this to ban him:

/MODE #test +b *!*@192.168.0.234

Banning bob in this way means that nobody from that address can connect.

To remove a ban, you do the same thing with -b instead of +b.

To view the bans that exist on the channel, you can do this instead:

/MODE #test b

+e - Ban-Exempt

With this channel mode, you can change whos allowed to bypass bans. For example, lets say you set these modes on the channel:

/MODE #test +b *!*@192.168.0.234
/MODE #test +e bob!*@*

This means that bob will always be able to join, even if hes connecting from 192.168.0.234.

For everything else, this mode acts like the +b - Ban mode.

+i - Invite-Only

If this channel mode is set on a channel, users will only be able to join if someone has /INVITEd them first.

To set a channel to invite-only:

/MODE #test +i

To unset the mode and let anyone join:

/MODE #test -i

+I - Invite-Exempt

With this channel mode, you can change whos allowed to join the channel when the +i - Invite-Only mode is enabled.

For example, lets say you set these modes on the channel:

/MODE #test +i
/MODE #test +I bob!*@*

This means that bob will be able to join even without being /INVITEd.

For everything else, this mode acts like the +b - Ban mode.

+k - Key

This channel mode lets you set a key that other people will need to join your channel. To set a key:

/MODE #test +k p4ssw0rd

Then, to join users will need to do /JOIN #test p4ssw0rd. If they try to join without the key, they will be rejected.

To unset the key:

/MODE #test -k

+l - Limit

This mode lets you restrict how many users can join the channel.

Lets say that #test currently has 5 users in it, and you run this command:

/MODE #test +l 6

Only one more user will be able to join the channel. If anyone tries to join the channel when theres already six people on it, they will get rejected.

Just like the +k - Key mode, to unset the limit:

/MODE #test -l

+m - Moderated

This mode lets you restrict who can speak in the channel. If the +m mode is enabled, normal users wont be able to say anything. Users who are Voice, Halfop, Channel-Op, Admin and Founder will be able to talk.

To set this mode:

/MODE #test +m

To unset this mode (and let everyone speak again):

/MODE #test -m

+n - No Outside Messages

This mode is enabled by default, and means that only users who are joined to the channel can send messages to it.

If this mode is unset, users who arent on your channel can send messages to it. This can be useful with, for example, GitHub or notification bots if you want them to send messages to your channel but dont want them to clutter your channel with by joining and leaving it.

+R - Registered Only

If this mode is set, only users that have logged into an account will be able to join and speak on the channel. If this is set and a regular, un-logged-in user tries to join, they will be rejected.

To set this mode:

/MODE #test +r

To unset this mode:

/MODE #test -r

+s - Secret

If this mode is set, it means that your channel should be marked as secret. Your channel wont show up in /LIST or /WHOIS.

To set this mode:

/MODE #test +s

To unset this mode:

/MODE #test -s

+t - Op-Only Topic

This mode is enabled by default, and means that only channel operators can change the channel topic (using the /TOPIC command).

If this mode is unset, anyone will be able to change the channel topic.

Channel Prefixes

Users on a channel can have different permission levels, which are represented by having different characters in front of their nickname. This section explains the prefixes and what each one means.

+q (~) - Founder

This prefix means that the given user is the founder of the channel. For example, if ~dan is on a channel it means that dan founded the channel. The founder prefix only appears on channels that are registered.

Founders are able to do anything, and have complete administrative control of the channel.

+a (&) - Admin

This prefix means that the given user is an admin on the channel. For example, if &tom is on a channel, then tom is an admin on it. The admin prefix only appears on channels that are registered.

Admins can do anything channel operators can do, and they also cannot get kicked by other chanops or admins.

+o (@) - Channel Operator

This prefix means that the given user is an operator on the channel (chanop, for short). For example, if @ruby is on a channel, then ruby is an op.

Chanops are the regular type of channel moderators. They can set the topic, change modes, ban/kick users, etc.

+h (%) - Halfop

This prefix means that the given user is a halfop on the channel (half-operator). For example, if %twi is on a channel, then twi is a halfop.

Halfops can do some of what channel operators can do, and cant do other things. They can help moderate a channel.

+v (+) - Voice

This prefix means that the given user is voiced on the channel. For example, if +faust is on a channel, then faust is voiced on that channel.

Voiced users can speak when the channel has +m - Moderated mode enabled. They get no other special privs or any moderation abilities.


Acknowledgements

Always, thanks to Jeremy Latt for creating Ergonomadic. Thanks for Edmund Huber for maintaining Ergonomadic and providing useful help while transitioning.

Thanks to Euan Kemp (euank) for the contributions and help with this, along with other projects, and to James Mills, Vegax and Sean Enck for various other help and contributions on the server.

And a massive thanks to Shivaram Lingamneni (slingamn) for being an awesome co-maintainer of Oragono! You really convinced me to step up with this and take it forward in a big way, and Im grateful for that.