Last updated:
0 purchases
r0c 1.6.1
r0c telnet server
retr0chat, irc-like chat service for superthin clients (on PyPI)
MIT-Licensed, 2018-01-07, ed @ irc.rizon.net
windows telnet 360 noscope <- good video
see installation or grab the latest release: r0c.py
summary
imagine being stuck on ancient gear, in the middle of nowhere, on a slow connection between machines that are even more archaic than the toaster you're trying to keep from falling apart
retr0chat is the lightweight, no-dependencies, runs-anywhere solution for when life gives you lemons
tries to be irssi
zero dependencies on python 2.6, 2.7, 3.x
supports telnet, netcat, /dev/tcp, TLS clients
is not an irc server, but can bridge to/from irc servers
modem-aware; comfortable at 1200 bps
fallbacks for inhumane conditions
linemode
no vt100 / ansi escape codes
endorsements
the german federal office for information security does not approve
compatibility
1980: TVI 920C
1987: IBM 3151 (also video), using gnu-screen to translate VT100 sequences
1993: windows 3.11
features
irc-like:
public channels with persistent history (pgup/pgdn)
private messages (/msg acidburn hey)
nick completion with Tab ↹
notifications (bell/visual) on hilights and PMs
command subset (/nick, /join, /part, /names, /topic, /me)
inline message coloring, see /help
technical:
client behavior detection (echo, colors, charset, newline)
message input with readline-like editing (arrow-left/right, home/end, backspace)
history of sent messages (arrow-up/down)
bandwidth-conservative (push/pop lines instead of full redraws; scroll-regions)
fast enough; 600 clients @ 750 msgs/sec, or 1'000 cli @ 350 msg/s
bridge several irc channels from several networks into one r0c channel
windows clients
use putty in telnet mode
or the powershell client
or enable Telnet Client in control panel -> programs -> programs and features -> turn windows features on or off, then press WIN+R and run telnet r0c.int
putty is the best option;
the powershell client is OK and no longer spammy as of windows 10.0.15063 (win10 1703 / LTSC)
windows-telnet has a bug (since win7) where non-ascii letters occasionally render but usually dont
this is due to a buffer overflow in telnet.exe, so r0c will apply a rate-limit to avoid it
looks like messages larger than 512 bytes end up messing with the unicode glyphs area? or something
linux clients
most to least recommended
client
example
telnet
telnet r0c.int
socat
socat -,raw,echo=0 tcp:r0c.int:531
bash
mostly internals
netcat
nc r0c.int 531
you can even exec 147<>/dev/tcp/r0c.int/531;cat<&147&while IFS= read -rn1 x;do [ -z "$x" ]&&x=$'\n';printf %s "$x">&147;done (disconnect using exec 147<&-; killall cat #sorry)
tls clients
if you enable TLS with -tpt 2424 (telnet) and/or -tpn 1515 (netcat) you can connect to r0c with TLS encryption using any of the following:
telnet-ssl -zssl -zsecure -zcacert=r0c.crt r0c.int 2424
socat -,raw,echo=0 openssl:r0c.int:1515,cafile=cert.crt
socat -,raw,echo=0 openssl:127.0.0.1:1515,verify=0
stty -icanon; ncat --ssl --ssl-trustfile r0c.crt -v r0c.int 1515
stty -icanon; openssl s_client -CAfile ~/.r0c/cert.crt -nbio -connect r0c.int:1515
windows: powershell client with port +1515 (the + enables TLS)
powershell does not verify certificate; the other clients do
the powershell client and bash client comes bundled with the server; see protips
connecting from a web browser
oh you betcha! see the webtty readme
installation
just run r0c.py and that's it (usually)
or install through pypi (python3 only): python3 -m pip install --user -U r0c
you can run it as a service so it autostarts on boot:
on most linux distros: systemd service (automatically does port-forwarding)
on alpine / gentoo: openrc service
on windows: nssm probably
irc
if you want to connect your r0c instance to an irc network and bridge channels between them, you can do that:
python3 r0c.py --ircn a,127.0.0.1,6667,r0c --ircb a,chat,g
run that command to start r0c with irc bridging enabled; r0c will then connect to an irc server (which we nicknamed a) on 127.0.0.1:6667 with the irc-nick r0c and bridge the irc-channel #chat with the r0c-channel #g
if you then start an irc server locally, for example miniircd by running python3 miniircd --verbose then you're all set, people can now join r0c by connecting via irc
to bridge additional channels on the same network, add more --ircb args, for example --ircb a,tech,tech like in the screenshot, and optionally add more networks with --ircn
firewall rules
skip this section if:
you are using the systemd service
or you are running as root and do not have a firewall
or you're on windows
if you're using firewalld, and just want to open up the high ports (not 23 and 531) then this is probably enough:
firewall-cmd --permanent --add-port={23,531,2323,1531,2424,1515,8023}/tcp
firewall-cmd --reload
but having to specify the port when connecting is lame so consider the folllowing --
telnet uses port 23 by default, so on the server you'll want to port-forward 23 to 2323 (and 531 to 1531 for plaintext):
iptables -A INPUT -p tcp --dport 23 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 531 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 2323 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 1531 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 2424 -m state --state NEW -j ACCEPT # tls telnet
iptables -A INPUT -p tcp --dport 1515 -m state --state NEW -j ACCEPT # tls netcat
iptables -A INPUT -p tcp --dport 8023 -m state --state NEW -j ACCEPT # http/ttyd
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 23 -j REDIRECT --to-port 2323
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 531 -j REDIRECT --to-port 1531
(you'll have to do this on every reboot)
documentation
not really but there is a list of commands and a list of hotkeys, and also UI demystified
protips
try the following commands and hotkeys after connecting:
/cy enables colored nicknames
/b3 (max cowbell) beeps on every message
/v or ctrl-n hides names and makes wordwrap more obvious; good for viewing a wall of text that somebody pasted
CTRL-L or /r if rendering breaks
other surprises
when running r0c.py it will extract a few bundled clients for your convenience (powershell and bash); look for the [SFX] sfxdir: /tmp/pe-r0c.1000 message during startup, they'll be in a clients subfolder over there
if you installed r0c through pip instead then the clients will be somewhere crazy like C:\Users\ed\AppData\Roaming\Python\share\doc\r0c\clients\powershell.ps1 or /home/ed/.local/share/doc/r0c/clients/powershell.ps1, good luck!
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.