Skip to content
This repository was archived by the owner on Jun 22, 2026. It is now read-only.

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⚠️ This repository is archived

Development of IPControl has moved to Total IP Control.

Total IP Control is a single, unified IP-management module for The Major BBS v10 that consolidates and supersedes both IPControl (per-IP connection limiting) and PROXCLIP (proxy / real-IP restoration). This repository is kept for reference only and is no longer maintained.


IPControl

Per-module IPv4 connection limiter for The Major BBS v10

IPControl is a gateway module for The Major BBS v10 that limits the number of simultaneously active users from a single IPv4 address within any target module. When a user selects an IPControl-protected menu option, the module checks how many active sessions from that IP address are already inside the target module. If the count is below the configured maximum, the user is forwarded. Otherwise, a configurable denial message is displayed and the user is returned to the menu.


Features

  • Per-module IP limiting — set independent connection limits for each module you want to protect
  • Bypass key support — grant unrestricted access to sysops, co-sysops, or any BBS access key
  • Module names with spaces — supports targets like -= T-Lord =- out of the box
  • Configurable messages — customize denial, granted, and configuration error text in IPCTRL.MSG
  • Optional audit logging — write access events, denials, and bypasses to the BBS audit trail

Requirements

  • The Major BBS v10 (Windows, x86)
  • To build from source: Visual Studio 2022 Build Tools (v143 toolset, Win32/x86)

Installation

  1. Copy the following files to your BBS root directory:

    File Description
    IPCTRL.DLL Module binary
    IPCTRL.MDF Module definition file
    IPCTRL.MSG Message file (configurable text and options)
  2. For each module you want to protect (e.g., MAJORMUD, TRADEWARS), open that module's .MDF file and add the following line after the Module Name: line:

    UNCONDITIONAL
    

    This tells the BBS to keep that module's DLL loaded even after its menu entry is redirected to IPControl. Without this, the BBS admin tool may remove the target module from WGSERV.CFG, causing IPControl to fail with a configuration error at runtime.

  3. In the Menu Tree Editor, add a new Module Link page and set the module to IPCTRL.

  4. Set the command string on that menu entry to configure the gateway (see Configuration below).

  5. Save & Start BBS.


Configuration

The gateway is configured via the BBS menu command string attached to the IPControl menu entry.

Syntax:

MODULE=<name> MAXIP=<n> [BYPASS=<key>[,<key>...]]
Parameter Required Description
MODULE Yes Registered name of the destination module
MAXIP Yes Maximum simultaneous connections from a single IP
BYPASS No Comma-separated BBS access keys that skip the limit. Defaults to SYSOP

Examples

MODULE=MAJORMUD MAXIP=3
MODULE=TRADEWARS MAXIP=2 BYPASS=SYSOP,COSYSOP
MODULE=GLOBALWAR MAXIP=1 BYPASS=SYSOP
MODULE=-= T-Lord =- MAXIP=2 BYPASS=SYSOP

Message File Options

Edit IPCTRL.MSG in the BBS Message File Editor to customize behavior:

Option Type Description
LOGENA Boolean Enable audit trail logging for access events and denials
DENIED Text Message shown when the IP limit is reached (%d = the limit)
GRANTED Text Message shown on access (leave blank to silently forward)
BADCFG Text Message shown on a configuration error

How It Works

IPControl only counts currently active sessions inside the target module. Historical connections and total account logins are not considered. When a user selects the protected menu entry:

  1. IPControl parses the MODULE, MAXIP, and BYPASS parameters from the command string.
  2. The user's BBS access keys are checked against the bypass list — matching users are forwarded immediately.
  3. Active sessions inside the target module are scanned for a matching IPv4 address.
  4. If the count is below MAXIP, the user is forwarded via entmdl(). Otherwise the denial message is displayed.

Building from Source

Requirements: Visual Studio 2022 Build Tools, MBBS v10 SDK

& "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin\MSBuild.exe" `
    IPCTRL\IPCTRL.vcxproj /p:Configuration=Release /p:Platform=Win32 /t:Build

Output: IPCTRL\Release\IPCTRL.dll


Changelog

See CHANGELOG.md.


License

Released under the MIT License.

IPControl is developed and maintained by Mark Laudenbach at Sysop Network.

About

[ARCHIVED — development moved to Total IP Control: https://github.com/SysopNetwork/Total-IP-Control] Control how many users from an IP address can access any BBS module for your Major BBS!

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages