{% extends "base.html" %} {% block title %}Hub Management — {{ config.BBS_NAME }}{% endblock %} {% block content %}
Manage downstream BinkP nodes and QWK nodes connected to this BBS as a hub.
Publishes the ANotherNetwork nodelist into the
ANN.FILES.NODELIST file area, replacing the
prior copy, so peers can pull it like any other file-echo
entry (BinkP/FTP/web).
| Schedule | {{ nodelist_event.schedule_human }} {% if not nodelist_event.row.is_enabled %}disabled{% endif %} — edit schedule |
|---|---|
| Last run | {% if nodelist_event.row.last_run_at %} {{ nodelist_event.row.last_run_at.strftime('%Y-%m-%d %H:%M UTC') }} {% if nodelist_event.row.last_status == 'ok' %}ok {% else %}{{ nodelist_event.row.last_status }}{% endif %} {% else %} never {% endif %} |
| Last output | {{ nodelist_event.row.last_output }} |
QWK packets are already built fresh automatically every time a node's FTP client connects or hits the download URL — nothing to schedule. Use "Preview" to build and download a packet on demand for testing; this does not mark messages as sent, so the node's real next download is unaffected.
{% if qwk_nodes %}| Packet ID | Name | Status | |
|---|---|---|---|
| {{ node.packet_id }} | {{ node.name }} | {% if node.is_active %}active {% else %}inactive{% endif %} | Preview |
Files uploaded to any ANN.FILES.* area are automatically queued for TIC distribution to subscribed peers — no manual step needed. This shows the outbound queue's current state; delivery happens on the next BinkP poll per peer.
Lets anyone apply to join your network from a public web page — read the rules, download the full infopack, check a box confirming they read the rules, then submit. Applications land in Join Requests for you to review.
Current: {{ join_cfg.infopack_original_filename }}
({{ join_cfg.infopack_size }} bytes, uploaded
{{ join_cfg.infopack_uploaded_at.strftime('%Y-%m-%d %H:%M UTC') if join_cfg.infopack_uploaded_at else '?' }})
— download
{{ join_cfg.rules_member_name }}){{ join_cfg.rules_text }}
No infopack uploaded yet.
{% endif %} {% endif %}| Address | Name | Status | Last Seen |
|---|---|---|---|
| {{ node.ftn_address }} | {{ node.name }} | {% if node.is_active %}active {% else %}inactive{% endif %} | {% if node.last_seen_at %}{{ node.last_seen_at.strftime('%Y-%m-%d %H:%M') }}{% else %}—{% endif %} |
| Packet ID | Name | Status | Last Poll |
|---|---|---|---|
| {{ node.packet_id }} | {{ node.name }} | {% if node.is_active %}active {% else %}inactive{% endif %} | {% if node.last_poll_at %}{{ node.last_poll_at.strftime('%Y-%m-%d %H:%M') }}{% else %}—{% endif %} |