Rob McGee wrote to All <=-
BotGate v2.3 - TCP bot gate for any telnet BBS or App. ESC/* challenge before reaching your real BBS. NEW: multi-listener support - protect 2+ apps from one BotGate. Custom ANSI prompts, live count-down, .can blocklists, geo-block, reverse-DNS, auto rate-limit bans. Pure Python3, zero deps. Linux/Win/Mac. Built for Spitfire BBS works on all.
Nutshell, i built this as bot's could tip over my Spitfire/Netserial
BBS if they hit to hard. With the v2.3 update it now supports more than one system. So, I have it as a proxy for my Spitfire BBS and Space
Quest 2112 server due to the fact SQGS would also lock up from time to time.
This was a fun project.. hope it works for others.
BotGate v2.3 - TCP bot gate for any telnet BBS or App. ESC/* challengeWould love to try this... can't find it on your BBS...
BotGate v2.3 - TCP bot gate for any telnet BBS or App. ESC/* challenge
Would love to try this... can't find it on your BBS...
I guess it would have helped if I added a link to my message :D https://github.com/xbit44/botgate
One question I have - it won't bind to port 23 when started as a normal user (Linux), which is expected. So I started it with 'sudo' and it's OK. Is that the proper way, or would it be better/possible to do the 'set cap...' thing with the script itself, to allow a normal user to start it?
Rob McGee wrote to Dan Clough <=-
Re: Re: Bot-Gate v2.3
By: Dan Clough to Rob McGee on Sun Jul 19 2026 08:07 am
One question I have - it won't bind to port 23 when started as a normal user (Linux), which is expected. So I started it with 'sudo' and it's OK. Is that the proper way, or would it be better/possible to do the 'set cap...' thing with the script itself, to allow a normal user to start it?
So awesome its working and you like it :)
Yep, that is normal Linux behavior. Ports below 1024, including telnet port 23, are privileged ports, so a normal user can't find to them by default.
Running it with sudo works, but for long-term use I'd prefer not to run the whole BotGate process as root.
There are two cleaner ways to handle it:
1. Quick/simple way:
sudo setcap 'cap_net_bind_service=+ep' $(readlink -f $(which python3))
That lets python3 bind to low ports like 23 while still running the script as a normal user.
The tradeoff is that this capability applies to that python3 binary, not only to BotGate. So any Python script run through that interpreter would also be able to bind to low ports.
2. Cleaner service way:
Run BotGate as a normal user under systemd and add this to the
service unit:
AmbientCapabilities=CAP_NET_BIND_SERVICE
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
That grants the low-port bind permission only to that service
instead of giving it to python3 globally.
Hope that helps! BTW, i never ran into this as I use ports 23230 and
2112. This helped me as I can now update the docs :)
One last question - It's not a HUGE problem, but when I run the script to start BotGate, it then sits there and displays log output as it runs, which is fine in itself, but... I would rather not have the terminal window "tied up" with that. I tried adding the '&' to the end of the command line, but it didn't seem to exit back to the prompt until I hit Enter, and then a little later I found that the BotGate wasn't running any more (so couldn't log on to the BBS). Is there a way to start the BotGate but exit back to the command prompt?
Rob McGee wrote to Dan Clough <=-
Re: Re: Bot-Gate v2.3
By: Dan Clough to Rob McGee on Sun Jul 19 2026 09:33 am
One last question - It's not a HUGE problem, but when I run the script to start BotGate, it then sits there and displays log output as it runs, which is fine in itself, but... I would rather not have the terminal window "tied up" with that. I tried adding the '&' to the end of the command line, but it didn't seem to exit back to the prompt until I hit Enter, and then a little later I found that the BotGate wasn't running any more (so couldn't log on to the BBS). Is there a way to start the BotGate but exit back to the command prompt?
Quick fix may be - nohup:
[bash]
nohup python3 botgate_proxy.py > /dev/null 2>&1 &
disown
Note, i've not tested this so let me know!
Also, i would suggest running this as a systemd service. Then use something like journalctl -u botgate -f to view live logs when you
wish.
Can't do that... no systemd on Slackware Linux. ;-)
Rob McGee wrote to Dan Clough <=-
Re: Re: Bot-Gate v2.3
By: Dan Clough to Rob McGee on Sun Jul 19 2026 10:56 am
Can't do that... no systemd on Slackware Linux. ;-)
I don't know slackware very well, but is not its equivalent /etc/rc.d/rc.local to run things at boot? Anyway, i'm sure you see what i'm getting at. 100% your call. I hope the command i gave before hand helps!
| Sysop: | Eric Oulashin |
|---|---|
| Location: | Beaverton, Oregon, USA |
| Users: | 104 |
| Nodes: | 16 (1 / 15) |
| Uptime: | 01:53:25 |
| Calls: | 8,746 |
| Files: | 9,530 |
| D/L today: |
124 files (24,129K bytes) |
| Messages: | 418,543 |