LovlyNet Network Integration
May 7, 2026 · View on GitHub
Table of Contents
- What is LovlyNet?
- Quick Start
- Public vs Passive Nodes
- Registration Process
- Managing LovlyNet (Web Interface)
- Updating Registration
- Checking Status
- Configuration Files
- Polling Configuration
- Manual AreaFix Commands
- Troubleshooting
- Advanced Usage
- Getting Help
- Network Information
- References
What is LovlyNet?
LovlyNet is a FidoNet Technology Network (FTN) operating in Zone 227. It provides an automated registration system that allows BBS operators to join the network and start exchanging mail with other systems without manual coordination with a hub sysop.
Key Features:
- Automatic FTN address assignment (227:1/10 and up)
- Self-service registration via CLI tool
- Automatic uplink configuration
- Echo area subscription
- Support for both public and passive nodes
- Web-based management via Admin → LovlyNet after initial setup
Quick Start
Initial registration is a one-time CLI step:
php scripts/lovlynet_setup.php
The script will guide you through registration and automatically configure your system.
After registration, all ongoing management is done through the web interface at Admin → LovlyNet — including echo area subscriptions, registration updates, and connectivity health checks. You do not need to re-run the CLI tool for routine management.
Public vs Passive Nodes
Public Nodes
Choose public node if:
- Your BBS is accessible from the internet
- You have a static IP or domain name
- You can accept inbound binkp connections on port 24554 (or custom port)
Benefits:
- Hub can deliver mail directly to you (faster delivery)
- More efficient mail flow
- Full two-way connectivity
Requirements:
- Your BinktermPHP installation must be publicly accessible
- Public hostname or IP address
- Port forwarding configured (if behind NAT)
- Firewall allows inbound on binkp port
- Tunnel/proxy voodoo
Passive Nodes
Choose passive node if:
- Behind NAT without port forwarding
- Dynamic IP address
- Silo'd or garden network (ie: Community wireless networks)
- Firewall restrictions prevent inbound connections
- Development or testing system
How it works:
- You poll the hub periodically (every 15-30 minutes recommended)
- Hub cannot initiate connections to you
- Mail delivery depends on your polling schedule
- Still fully functional for sending and receiving
Note: Passive nodes must set up regular polling via cron or scheduled task.
Registration Process
Step-by-Step
-
Run the setup script:
php scripts/lovlynet_setup.php -
Verify information:
- System Name (from your BBS config)
- Sysop Name (your name)
- Site URL (your BBS web address)
-
Choose node type:
- Answer "Y" if publicly accessible (default)
- Answer "N" if passive/poll-only
-
For public nodes:
- Provide your public hostname (e.g.,
bbs.example.com) - Provide your binkp port (default: 24554)
- Script verifies your
/api/verifyendpoint locally - If verification fails, fix your hostname/port and try again
- Provide your public hostname (e.g.,
-
For passive nodes:
- Script uses placeholder hostname automatically
- No verification required
-
Review and confirm:
- Check the summary of your registration
- Type "Y" to proceed
-
Automatic configuration:
- Receives FTN address from registry (e.g., 227:1/10)
- Saves credentials to
config/lovlynet.json - Configures uplink in
config/binkp.json - Creates echo areas in database
- Sends areafix request to hub
What You Receive
After successful registration:
- FTN Address: Your unique address (e.g., 227:1/10)
- API Key: For future updates (saved automatically)
- Binkp Password: For secure mailer authentication
- Areafix Password: For echo area management
- Echo Areas: LVLY_BINKTERMPHP, LVLY_ANNOUNCE, LVLY_TEST (auto-subscribed)
Verification Endpoint
Public nodes must have a working verification endpoint. BinktermPHP provides this automatically at /api/verify.
Test your endpoint:
curl https://yourbbs.example.com/api/verify
Expected response:
{
"system_name": "Your BBS Name",
"software": "BinktermPHP v1.7.9"
}
If this doesn't work, check:
- Web server is running and accessible
- HTTPS certificate is valid (if using HTTPS)
- Router/firewall allows HTTP/HTTPS traffic
- BBS software is properly configured
Managing LovlyNet (Web Interface)
Admin → LovlyNet is the primary interface for managing your LovlyNet membership after the initial CLI registration. It shows your node number, hub address, server URL, and subscribed area count at a glance, and provides three tabs for managing areas and your registration details.
You should rarely need to touch the CLI again once your node is registered. The web interface covers the full management lifecycle: subscribing and unsubscribing echo areas, requesting rescans, updating your registration details, and monitoring connectivity health.
Echo Areas Tab
Lists all echo areas available from the hub with their subscription status. Each row shows the area tag, description, and whether you are currently subscribed. From this tab you can subscribe or unsubscribe individual areas, request a rescan (replay messages from the last N days, last N messages, or all messages), and send freeform AreaFix commands to the hub via the Request button.
File Areas Tab
The same layout as the Echo Areas tab, but for file areas managed through FileFix.
Setup Tab
The Setup tab lets you update your LovlyNet registration without running lovlynet_setup.php from the command line. Fields include:
- System Name — the name of your BBS
- Sysop Name — your name as it appears in the nodelist
- Hostname — your BBS's public hostname
- BinkP Port — the port your BinkP server listens on
- Site URL — your BBS's public web address
- Passive Node — check this if your node does not accept inbound connections
Saving the form sends the updated information to the LovlyNet registry. A checklist panel alongside the form shows the current health of your registration (reachability, certificate, BinkP connectivity, etc.) to help diagnose configuration problems.
Updating Registration
Preferred method: Use the Setup tab in Admin → LovlyNet to update your hostname, node type, sysop name, or port. Changes take effect immediately without requiring CLI access.
CLI alternative: If you need to update from the command line (e.g., during initial server setup before the web interface is accessible):
php scripts/lovlynet_setup.php --update
The script will:
- Use your existing API key and node ID
- Re-verify public nodes (if applicable)
- Update configuration on the hub
- Preserve your FTN address
Common update scenarios:
- Hostname changed (new domain, IP address)
- Switching from passive to public (or vice versa)
- Sysop name changed
- Port changed
Checking Status
Via the web interface: The Admin → LovlyNet dashboard shows your FTN address, registration date, subscribed area count, and a connectivity health checklist at a glance.
Via the CLI:
php scripts/lovlynet_setup.php --status
Shows:
- FTN address
- Registration date
- Last update time
- API key (masked)
Configuration Files
config/lovlynet.json
Stores your registration details:
{
"node_id": 123,
"api_key": "64-character-hex-string",
"ftn_address": "227:1/10",
"hub_address": "227:1/1",
"hub_hostname": "lovlynet.lovelybits.org",
"hub_port": 24554,
"binkp_password": "16-char-hex",
"areafix_password": "16-char-hex",
"registered_at": "2026-02-06T12:34:56+00:00",
"updated_at": "2026-02-06T12:34:56+00:00"
}
Important: Keep this file secure. The API key allows updates to your registration.
config/binkp.json
The setup script automatically adds a LovlyNet uplink:
{
"uplinks": [
{
"me": "227:1/10",
"address": "227:1/1",
"hostname": "lovlynet.lovelybits.org",
"port": 24554,
"password": "your-binkp-password",
"domain": "lovlynet",
"networks": ["227:*/*"],
"enabled": true,
"compression": false,
"crypt": false,
"poll_schedule": "*/15 * * * *"
}
]
}
Polling Configuration
Manual Poll
To manually poll the hub:
php scripts/binkp_poll.php
Automatic Polling (Recommended)
For passive nodes, set up a cron job:
# Edit crontab
crontab -e
# Add line to poll every 15 minutes
*/15 * * * * cd /path/to/binkterm-php && php scripts/binkp_poll.php >> data/logs/poll.log 2>&1
For public nodes, polling is optional but recommended as a fallback:
# Poll every 30 minutes
*/30 * * * * cd /path/to/binkterm-php && php scripts/binkp_poll.php >> data/logs/poll.log 2>&1
Manual AreaFix Commands
Tip: Most echo area management can be done graphically from the Echo Areas tab in Admin → LovlyNet. The commands below are for advanced use or when web access is unavailable.
Default Areas
- LVLY_BINKTERMPHP - General discussion about BinktermPHP and FTN systems
- LVLY_ANNOUNCE - Network announcements and sysop information
- LVLY_TEST - Testing and experiments
Subscribing via Netmail
Send a netmail to AreaFix at 227:1/1:
- To: AreaFix
- Subject: [Your areafix password from config]
- Body:
+AREA_TAG(to subscribe) or-AREA_TAG(to unsubscribe)
Areafix Commands
Send these in the body of a netmail to AreaFix:
%HELP- Get help and list of commands%LIST- List all available echo areas%QUERY- Show your current subscriptions+AREA_TAG- Subscribe to an area-AREA_TAG- Unsubscribe from an area%RESCAN AREA_TAG- Request rescan of area
Troubleshooting
Registration Fails with "Failed to verify node ownership"
Problem: Registry couldn't verify your /api/verify endpoint
Solutions:
- Test endpoint manually:
curl https://yourbbs.example.com/api/verify - Check web server is accessible from internet
- Verify HTTPS certificate is valid
- Check firewall rules
- If unavailable publicly, register as passive node instead
"This system is already registered"
Problem: Node name already exists in registry
Solutions:
- Use
--updateflag to update existing registration - If you lost your API key, contact the hub sysop
- Registry will auto-increment name (e.g., My_BBS → My_BBS_2)
"Requested node number X is already in use"
Problem: Trying to import existing node, but number is taken
Solutions:
- Remove the existing uplink from
config/binkp.jsonbefore registering - Let registry auto-assign a new number
- Contact hub sysop if you need that specific number
Hub Never Connects
For public nodes:
- Verify binkp server is running:
ps aux | grep binkp_server - Check port is open:
netstat -an | grep 24554 - Test from outside your network:
telnet yourbbs.example.com 24554 - Check firewall/router port forwarding
- Verify binkp password in
config/binkp.jsonmatches registry
For passive nodes:
- This is normal - you must poll the hub
- Set up polling via cron (see Polling Configuration above)
No Mail Flowing
Check these:
- Binkp server running:
php scripts/binkp_server.php & - Poll the hub manually:
php scripts/binkp_poll.php - Check logs:
tail -f data/logs/binkp.log - Verify echo area subscriptions in admin interface
- Send test message to TEST echo area
Re-registering After Moving Systems
If you're migrating to a new server:
- Copy
config/lovlynet.jsonto new server - Copy
config/binkp.jsonto new server - Run
php scripts/lovlynet_setup.php --update - Update hostname if changed
- Restart binkp server
Advanced Usage
Importing Existing Manual Configuration
If you obtained a node number without using lovlynet_setup.php, or were manually added to the network, you will not have a full LovlyNet configuration including a config/lovlynet.json file and API key. Without these, the setup tool cannot prove ownership of your existing node number and cannot safely import your configuration.
Contact the LovlyNet administrator to have a config/lovlynet.json generated for your node. Once you have that file, place it in config/ and you will have full access to the web interface and CLI tools without needing to re-register or change your FTN address.
Multiple Networks
BinktermPHP supports multiple uplinks. LovlyNet is just one network. You can:
- Join other FTN networks (different zones)
- Maintain separate uplinks for each
- Use domain routing to separate mail
Each network should have its own domain identifier. Additional uplinks can be configured under Admin → BBS Settings → Binkp Config.
Changing Node Type
From passive to public:
- Configure port forwarding and firewall
- Test
/api/verifyendpoint externally - Update via Admin → LovlyNet → Setup tab (or run
php scripts/lovlynet_setup.php --update) - Set public hostname and uncheck Passive Node
- Hub will start delivering mail directly
From public to passive:
- Update via Admin → LovlyNet → Setup tab (or run
php scripts/lovlynet_setup.php --update) - Check the Passive Node option
- Set up polling via cron
- Hub will stop attempting inbound connections
Getting Help
- Echo Area: Post questions in BINKTERMPHP echo area
- Netmail: Send netmail to sysop at 227:1/1
- GitHub: https://github.com/awehttam/binkterm-php/issues
Network Information
- Network Name: LovlyNet
- Zone: 227
- Hub Address: 227:1/1
- Hub Hostname: lovlynet.lovelybits.org
- Hub Port: 24554
- Protocol: Binkp over TCP/IP