OpenPKG Foundation
OpenPKG FoundationServiceInternet Relay Chat

Services: Internet Relay Chat (IRC)

Concepts

The reason for chatting

The constitution and bylaws of the OpenPKG Foundation e.V. call for a General Meeting (GM) to be held on demand and at least annually. Because members are distributed across the world the founders decided not to opt for a meeting requiring physical presence. Online chatting was considered to be a viable alternative when the time for a meeting is planned. The OpenPKG Foundation uses Internet Relay Chat (IRC) as its official way to perform real-time communications between its Foundation members. To some extend this service is also available to OpenPKG Foundation fellows and other interested parties.

Justification of IRC

There are many solutions for online chatting, recently often called Instant Messaging (IM), available with IRC being the longest lasting and most common. This means that many servers, clients and tools are availabe and many people are already used to using them. Use of solutions not based on the Unix operating system or 3rd party services were out of question by the Founder's philosophy. Alternative applications were considered where Jabber was highly unstable and SILC had very limited client support. Although IRC by design is intentionally weak in the areas of authentication and privacy, proper extensions and workarounds have been found and implemented. Please keep in mind that, with regard to privacy, voting is the most critical part in the General Meeting and this will be performed within secured IRC communication channels, too.

Basics

IRC uses a client/server architecture where the server echoes messages submitted from one client to the other clients. Much like putting a bunch of people in a room and let them talk. After a short period it is likely that groups of people are formed talking about a common subject. IRC works likewise and uses so called communication "channels". Users join one or more channels to talk with like-minded people about a common topic. In addition, users can whisper to peers so others cannot listen. Originally, IRC was designed to be completely open to everyone. Each person can pick an arbitrary nickname and others know it by this name. Everyone can open a new channel and becomes the operator of such a channel. The original IRC design has little idea regarding user authentication and encryption of communications and passwords. To cope with the demands of very large communities IRC also supports multiple servers being interconnected, but this is not used in our Foundation setup.

Conferencing

Channels can be switched into moderated mode where only the operator can talk and the remaining audience is just listening. An operator can give a voice to additional chatters. To get a voice, demanding users raise their hands by whispering to the operator. An operator can also place a channel into invitation mode where people can join the channel only invitational. Demanding users whisper to the operator asking to receive an invitation.

Clients

A huge number of IRC clients exist and many modern Instant Messaging applications also support IRC. OpenPKG packages exists for the popular text client ircII, for the X11 client Xchat and Firefox has the popular ChatZilla extension.

Bots

Bots are applications using the client/server IRC protocol. They are acting on behalf of one or more users or work autonomously and perform certain automated tasks. This can be anything from hanging on the line locking a nickname to droids with Artificial Intelligence participating in human conversation. The OpenPKG foundation setup makes extensive use of custom bots, which aid in logging, directing people towards channels, voting and gatewaying external information into IRC.

Services

Additional services have been created by the IRC community to overcome certain design shortcomings. In order to gain higher privileges these services act as if they were a server and use the IRC server/server protocol. The OpenPKG foundation setup makes use of services to manage users, channels and nicknames.

Servers

A large number of IRC servers exists. Most of them have a fairly common support of the client/server protocol but big differences exist in the server/server protocol support. OpenPKG packages exist for the original IRCnet server ircd, the modern EFnet server ircd-ratbox and the alternative server ngIRCd.

Foundation setup

Servers

The OpenPKG Foundation runs a single private IRC server listening on "localhost" only. We do neither participate in other IRC networks nor do we currently support attaching to additional servers. This is a fully stand-alone and self-contained setup using the EFnet ircd-ratbox. Client access from the outside world using IRC client/server protocol is open through an SSL gateway only.

Direct Access

ircs://irc.openpkg.net/
Access to the IRC service on irc.openpkg.net via TCP:994/SSL/IRC, i.e., an arbitrary IRC client is used to connect via the IRCS (IRC-over-SSL) protocol to the IRC server directly. Unprotected access via plain IRC protocol is not possible to protect potentially used authentication credentials. This access method requires an SSL-capable IRC client or at least an SSL gateway. This access method is recommended for all experienced users.

Web Access

https://irc.openpkg.net/
Access to the IRC service on irc.openpkg.net via TCP:443/SSL/HTTP, i.e., a Web browser is used to connect via the HTTPS protocol to a Web User Interface (CGI:IRC) providing minimum IRC client functionality. Unprotected access via plain HTTP protocol is not possible to protect potentially used authentication credentials. This access method requires an SSL- and Javascript-capable Web browser. This access method is recommended for newbies and those who have trouble installing a local IRCS-capable IRC client.

Services

The OpenPKG Foundation runs certain services to provide additional features on IRC. This is a stand-alone setup running "ratbox-services" which look like a separate server having some artificial clients connected. These can be contacted by whispering to them.

Clients

Use your favorite IRC client on your favorite operating system. Make sure the client is SSL enabled or at least provides the possibility to use a proper SSL gateway like "stunnel". So far the following applications have been successfully tested: [1] Kopete has been found to crash often and cannot be recommended.
[2] mIRC requires libssl32.dll to be renamed to ssleay32.dll

Channels

Certain channels are pre-allocated for organizational purposes. Note that the hash sign ("#") is part of the channel name. One channel is open for general discussion for all users and others are used for closed user groups with access controlled by "CHANSERV", which verifies whether the user had previously successfully authenticated to "USERSERV".

Name Purpose Communication Access
#community OpenPKG Community Chatting Room unmoderated open
#foundation OpenPKG Foundation Chatting Room unmoderated closed
#conference OpenPKG Foundation Conference Room moderated closed

Hands on

Nickname

By design of IRC, arbitrary nicknames can be used. The OpenPKG Foundation assumes members use their Foundation login names for that purpose. Guest access is allowed but they must not attempt to fake a member's name. Their connection will be killed upon detection and they might get banned from the servers. The recommended choice for a guest's nickname is to prefix it with an underscore. This will avoid name space conflicts with Foundation member login names.

Connection

Favorite client has embedded support for SSL:
point it to irc.openpkg.net:994 using IRCS protocol (IRC-over-SSL).

Favorite client needs "stunnel":
create a "stunnel.conf" file that, in version 4, looks like:

client  = yes
[ircs]
accept  = localhost:6667
connect = irc.openpkg.net:994

Point client to localhost:6667 using IRC protocol.

Login/Password

Neither login nor password is required for the IRC client/server protocol to access the OpenPKG Foundation server. It is just required for authentication at "USERSERV".

Message of the day

Upon connect a message of the day is printed. It contains instructions, policies, description of pre-allocated channels along with their intention and commands to be used for common purposes like registering users and nicknames, logging into "USERSERV" and asking "CHANSERV" for an invitation. It is possible to review this information at any time by issuing a /motd command.

List available channels

Execute "/list" command to get a list of available channels, number of users in them and the topic being discussed. Please note that channels other than the ones mentioned in this document and the MOTD were likely established by users. Do not trust arbitrary channels! Just because someone creates a channel with name #accounting and topic "secure storage for credit card numbers" you must not deposit sensitive data there.

Joining a open channel

The "#community" channel is open for everyone. Participate by entering "/join #community". You can then talk to the others by just typing messages. Please note that for access to open channels like this one, no authentication needs to be performed. Faking an identity is easy. Do not trust arbitray users! Just because someone calls himself "sysop" does not qualify him to ask you for your password.

Registering a user name

Registration is permanent and survives disconnects. Foundation members are pre-registered. If you registered in a previous session, skip this step and continue with login. Otherwise whisper to "USERSERV" and tell it about you. Run "/msg USERSERV register username password <email-address>". You set the password in this step.

Logging in

Login needs to be performed for every new session. If you just registered in the previous step, you are logged in automatically and can skip this step. Otherwise whisper to "USERSERV" and tell it about you. Run "/msg USERSERV login username password". You use the password in this step.

Joining a closed channel

You must have been registered and logged into "USERSERV" first, as described in the previous steps. Closed channels are marked invite-only. Whisper to "CHANSERV" and ask for an invitation. If you are logged in and operators have granted you access an invitation will be issued. You must accept it with the next command otherwise the invitation is void and you must ask again. Run "/msg CHANSERV invite channel". Upon receiving an invitation, accept with "/join -invite" or "/join channel".

Bots

The OpenPKG foundation setup makes extensive use of custom bots, which automate various tasks.

Quickstart

Note that the "--ssl" option to ircII is implemented by a wrapper script that creates an "stunnel.conf" file on-the-fly and invokes "stunnel". The script is part of the OpenPKG package "ircii". It can be found in the CVS for use outside OpenPKG.

Anonymous public access

$ irc --ssl foo irc.openpkg.net
/list
/join #community
/who *
Hello, World! Anyone awake?
/quit

Registration

Note: throughout the examples the password is bar
$ irc --ssl foo irc.openpkg.net
/msg userserv register foo bar foo@example.com
/msg nickserv register
/quit
Use out of band communication like email and tell a human operator that you have been registered. He must configure "CHANSERV" and assign your registered account to channels you can join. This is not automated! Foundation members are pre-registered.

Change Password

$ irc --ssl foo irc.openpkg.net
/msg userserv login foo bar
/msg userserv set password bar newbar
/quit

Access to closed channels

$ irc --ssl foo irc.openpkg.net
/list
/msg userserv login foo bar
/msg chanserv invite #foundation
/join -invite
/who *
Hello, Foundation! How can I pay my membership fee?
/quit

Regaining my Nickname

$ irc --ssl foo irc.openpkg.net
Nickname is already in use.

$ irc --ssl terminator irc.openpkg.net
/msg userserv login foo bar
/msg nickserv regain foo
/nick foo
…

Create own public channel

$ irc --ssl foo irc.openpkg.net
/join #newchan
/topic We are discussing something new here
/list
… negotiate with friends …
/who *
Hello, Fellows! I'm dreaming about a new …
/quit

Create own closed channel with invitation

$ irc --ssl foo irc.openpkg.net
/join #newchan
/topic We are discussing something intimate here
/mode #newchan +i
/list
… negotiate with friends …
/invite friend #newchan
… friend needs to /join -invite
/who *
Hello, Friend! I have a secret to tell …
…
OK. It's in the news, not a secret anymore.
/mode #newchan -i
…
/quit

Create own closed channel with key

$ irc --ssl foo irc.openpkg.net
/join #newchan
/topic We are discussing something intimate here
/mode #newchan +k secretkey
/list
… negotiate secretkey with friends …
… friends need to /join #newchan secretkey
/who *
Hello, Friend! I have a secret to tell …
…
OK. Now open the door for everyone.
/mode #newchan -k
…
/quit

Create own moderated channel

$ irc --ssl foo irc.openpkg.net
/join #newchan
/topic Speakers Corner
/mode #newchan +m
/list
… negotiate with friends …
/who *
Hello, Fellows! I always wanted you to know …
Ah, I see a hand from confused
/mode #newchan +v confused
…
/mode #newchan -v confused
Good that we talked about that.
…
OK. Open discussion now.
/mode #newchan -m
…
/quit

Asking SECRETARY to repeat last ten lines

Note the "Good morning …" will appear in the logs while the "#oops" line will not.
$ irc --ssl foo irc.openpkg.net
/join #community
Good morning boys and girls
#oops, no girls!?
/msg SECRETARY log #community last 10
/quit

Posting to and querying infos from STEWARD

Note both the posting and the querying can either be done through public message or whispering.
$ irc --ssl foo irc.openpkg.net
/join #community
/msg STEWARD foo := out for lunch
foo?
… out for lunch
/quit

using VOTER for creation, management and reporting of a voting

Note the "music" voting is open for three minutes or until it is closed manually, whatever happens first. The user only needs the "vote" command, the "show" and "result" commands are for convenience and everything else is for the operator. In this example the voter first goes for "pop" then changes his mind to "rock". The last vote counts.
$ irc --ssl foo irc.openpkg.net
/join #community
/msg voter create music "Foundation Soundtrack" pop,rock,rap you,me,thl
/msg voter show
/msg voter open music 3
/msg voter vote music pop
/msg voter vote music rock
/msg voter close music
/msg voter result music
/quit
Validation: XHTML | CSS