• Bot-Gate v2.3

    From Rob McGee@1:105/44 to All on Fri Jul 17 09:31:11 2026
    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.
    --- SBBSecho 3.37-Win32
    * Origin: X-Bit BBS > Oregon USA > x-bit.org/info (1:105/44)
  • From Dan Clough@1:135/115 to Rob McGee on Fri Jul 17 20:35:01 2026
    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.

    Would love to try this... can't find it on your BBS...



    ... Gone crazy, be back later, please leave message.
    === MultiMail/Linux v0.52
    --- SBBSecho 3.37-Linux
    * Origin: Palantir * palantirbbs.ddns.net * Pensacola, FL * (1:135/115)
  • From Rob McGee@1:105/44 to Dan Clough on Fri Jul 17 18:47:13 2026
    Re: Re: Bot-Gate v2.3
    By: Dan Clough to Rob McGee on Fri Jul 17 2026 08:35 pm

    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
    --- SBBSecho 3.37-Win32
    * Origin: X-Bit BBS > Oregon USA > x-bit.org/info (1:105/44)
  • From Dan Clough@1:135/115 to Rob McGee on Sun Jul 19 08:07:06 2026
    Re: Re: Bot-Gate v2.3
    By: Rob McGee to Dan Clough on Fri Jul 17 2026 06:47 pm

    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

    Rob, I have installed this and IT ROCKS!

    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?

    Thank you for this!

    ...Everywhere is within walking distance if you have the time.
    --- SBBSecho 3.37-Linux
    * Origin: Palantir * palantirbbs.ddns.net * Pensacola, FL * (1:135/115)
  • From Rob McGee@1:105/44 to Dan Clough on Sun Jul 19 06:26:06 2026
    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 :)
    --- SBBSecho 3.37-Win32
    * Origin: X-Bit BBS > Oregon USA > x-bit.org/info (1:105/44)
  • From Dan Clough@1:135/115 to Rob McGee on Sun Jul 19 09:33:32 2026
    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.

    Yep, agreed.

    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.

    Understood, and this is how I'll do it. No real "security concerns"
    with this, as I'm the only user on a private server that it runs on.

    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.

    Yes, but this option won't work for me, as I use Slackware Linux (no
    systemd). ;-)

    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 :)

    It certainly does help, thank you!

    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?

    Thanks again!



    ... Gone crazy, be back later, please leave message.
    === MultiMail/Linux v0.52
    --- SBBSecho 3.37-Linux
    * Origin: Palantir * palantirbbs.ddns.net * Pensacola, FL * (1:135/115)
  • From Rob McGee@1:105/44 to Dan Clough on Sun Jul 19 08:25:25 2026
    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.
    --- SBBSecho 3.37-Win32
    * Origin: X-Bit BBS > Oregon USA > x-bit.org/info (1:105/44)
  • From Dan Clough@1:135/115 to Rob McGee on Sun Jul 19 10:56:44 2026
    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!

    Thanks, will try this when I have a chance.

    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. ;-)



    ... Gone crazy, be back later, please leave message.
    === MultiMail/Linux v0.52
    --- SBBSecho 3.37-Linux
    * Origin: Palantir * palantirbbs.ddns.net * Pensacola, FL * (1:135/115)
  • From Rob McGee@1:105/44 to Dan Clough on Sun Jul 19 11:27:48 2026
    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!
    --- SBBSecho 3.37-Win32
    * Origin: X-Bit BBS > Oregon USA > x-bit.org/info (1:105/44)
  • From Dan Clough@1:135/115 to Rob McGee on Sun Jul 19 14:14:07 2026
    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!

    Yes, that's how it could be done in Slackware. I'm not doing that, as I
    don't want the BBS starting automatically at boot-up. I prefer to start
    it manually, which I know isn't how everybody does it, but I watch
    things closely and prefer the greater control that method provides.

    I did do the 'setcap' thing on the python3 binary, and that allows me to
    run the BotGate now as a normal user. I then ran the command you
    suggested (with 'nohup') and now am returned to the terminal prompt
    after it starts, and it continues running in the background.

    All good, thanks very much for the utility and the help!



    ... Gone crazy, be back later, please leave message.
    === MultiMail/Linux v0.52
    --- SBBSecho 3.37-Linux
    * Origin: Palantir * palantirbbs.ddns.net * Pensacola, FL * (1:135/115)