IRC Client with SAM support
Posted: Wed Jan 29, 2025 9:42 pm
Wanted to test out the i2p.socket lib in python. Thought it might be easier to manage IRC bots this way versus sending many ports everywhere, so ended up doing a test project. Added SAM functionality to an existing client "Mantaray." Working with both i2pd and java routers.

General mods:
- Dark theme modified
- More IRC commands added
- Fixed a problem with SASL auth
I2P relevant settings:
Settings adjusted to work good in i2p without frequent disconnects. i2pd uses 5 tunnels by default (java uses 2) but IRC is low bandwidth, so lowered to 2. (crypto.tagsToSend=20, crypto.lowTagThreshold=14, i2cp.leaseSetEncType=4)
- Timeouts increased in mantaray
- 2 tunnels/3 hops per LS
- For now this is hardcoded
It will generate a random "anon-xxx" nick for you. Each server added will use a different, transient b32. Each server can specify a different i2p router host:port for sam if you need that sort of thing. A config.json file keeps the specs for each profile, so hopping between idents or using different i2p routers should be easy.
I would like the option to use one LS/b32 for multiple connections but that would take some reworking. More resource efficient/better for the network to do it that way if you don't absolutely need each server connection using a different b32.
I'll reiterate that this is just a test project, i have not sunk a considerable amount of time testing it, can't guarantee anything. I'm open to working on it more if there's interest. Otherwise SAM was very easy to setup in this context
Basic install guide: http://simp.i2p/irc-guide/0001-05-27-20 ... C%20client
git: http://git.simp.i2p/simp/mantaray
install script:

General mods:
- Dark theme modified
- More IRC commands added
- Fixed a problem with SASL auth
I2P relevant settings:
Settings adjusted to work good in i2p without frequent disconnects. i2pd uses 5 tunnels by default (java uses 2) but IRC is low bandwidth, so lowered to 2. (crypto.tagsToSend=20, crypto.lowTagThreshold=14, i2cp.leaseSetEncType=4)
- Timeouts increased in mantaray
- 2 tunnels/3 hops per LS
- For now this is hardcoded
It will generate a random "anon-xxx" nick for you. Each server added will use a different, transient b32. Each server can specify a different i2p router host:port for sam if you need that sort of thing. A config.json file keeps the specs for each profile, so hopping between idents or using different i2p routers should be easy.
I would like the option to use one LS/b32 for multiple connections but that would take some reworking. More resource efficient/better for the network to do it that way if you don't absolutely need each server connection using a different b32.
I'll reiterate that this is just a test project, i have not sunk a considerable amount of time testing it, can't guarantee anything. I'm open to working on it more if there's interest. Otherwise SAM was very easy to setup in this context

Basic install guide: http://simp.i2p/irc-guide/0001-05-27-20 ... C%20client
git: http://git.simp.i2p/simp/mantaray
install script:
Code: Select all
curl --retry 5 -x http://127.0.0.1:4444 -O http://git.simp.i2p/simp/mantaray/raw/branch/master/installer.py && python3 installer.py