wm: ticl

ref: 8df402e53d02ca2c0b976715ce57c28750dd99d9
dir: /README/

View raw version
====================================================================
WARNING: This program is still in progress, use it at your own risk.
====================================================================

ticl - tiny irc channel linker
------------------------------

ticl is a very small and simple multi-network irc channel linker.


Working
-------

A bot named 'linker' joins each given channels and clones each user of its
channel on other channels and relays the user's messages received from its
channel to the clones on other channels.

If a user JOIN, QUIT, PART, or NICK, the linker attempts to emulate the
same action with the clones on the other channels.

The nick of clones has the network symbol (included in square brackets) as
a suffix.

If nick is already taken then additional suffix '_' will be added until
nick is accepted on the network.


Limitation
----------

- Networks and channels that require any type of registration or verification
  will not work because clones cannot register themselves.

- Linking any two channels that are already linked will create an infinite
  loop of clones and may get your IP banned.

- Channels on the same network will not link (can be possible in the future).

- No spam protection.


Features
--------

- written in POSIX ANSI C.
- one clone for every user on all other channels.
- no support for TLS/SSL (this is a feature).


Dependencies
------------

- C compiler (C89)
- libc (with POSIX support)
- POSIX make (optional)


Compiling
---------

	$ make
or
	$ gcc ticl.c htable.c utils.c -o ticl


Example
-------

To start the program with 'in' as the fifo file:

	$ ./ticl ./in

To link channel #test20 from libera and channel #test21 from ircnow:

	$ echo 'netadd libera L irc.libera.chat 6667 #test20' > ./in
	$ echo 'netadd ircnow N irc.ircnow.org 6667 #test21' > ./in

To unlink channel ircnow:

	$ echo 'netdel ircnow' > ./in

To shutdown the program:

	$ echo exit > ./in


Community
---------

Join #playground on irc.ircnow.org:6697 (TLS)

For any help, tag or private message me (libredev).

NOTE: Anything is allowed as long as you are not violating IRCNow TOS.
      (https://wiki.ircnow.org/index.php?n=Terms.Terms)

Email: libredev@ircforever.org (expect late response)


SSL/TLS support
---------------

1. relayd (OpenBSD)
-------------------

/etc/relayd.conf:

	table <libera> { irc.libera.chat }
	table <ircnow> { irc.ircnow.org }

	protocol "irctls" {
		tcp { nodelay, sack }
	}

	relay "libera" {
		listen on 127.0.0.1 port 31220
		protocol "irctls"
		forward with tls to <libera> port 6697
	}

	relay "ircnow" {
		listen on 127.0.0.1 port 31221
		protocol "irctls"
		forward with tls to <ircnow> port 6697
	}

2. stunnel (*BSD, GNU/Linux, GNU/Hurd, Plan9, etc)
--------------------------------------------------

On debian, /etc/stunnel/stunnel.conf:

	pid = /etc/stunnel/pid

	[libera]
	client = yes
	accept = 127.0.0.1:31220
	connect = irc.libera.chat:6697
	checkHost = irc.libera.chat
	verifyChain = yes
	CApath = /etc/ssl/certs
	OCSPaia = yes

	[ircnow]
	client = yes
	accept = 127.0.0.1:31221
	connect = irc.ircnow.org:6697
	checkHost = irc.ircnow.org
	verifyChain = yes
	CApath = /etc/ssl/certs
	OCSPaia = yes

3. To connect:
--------------

	$ echo 'netadd libera L 127.0.0.1 31220 #test20' > ./in
	$ echo 'netadd ircnow N 127.0.0.1 31221 #test21' > ./in


License
-------

This work is dedicated to the public domain.
See COPYING file for more information.


FAQ
---

Why not GPL?
------------

I was a big fan of GPL but slowly I realized that people should choose free
software on their own intention and not by force. They should understand that
free culture is the way to the future. But I don't hate GPL and I think it is
a great license for new technologies and innovations that can be exploited by
corporate.


Why not MIT/BSD?
----------------

I hate attribution licenses like MIT, BSD or any permissive license because
I think the attribution requirement is complete nonsense.


Why shouldn't you call it open source?
--------------------------------------

I hate the term 'open source' because it has nothing to do with free software
and its philosophy. It is a misleading term used by corporate that refer to
open collaboration.

But that's not why you shouldn't call it open source, but because the
Open Source Initiative (OSI) doesn't consider public domain software to be
open source. For more information, visit https://opensource.org/node/878.

It is free software because the FSF considers the public domain software to be
free software.