• Bforce 0.26.1

    From Alexey Khromov@2:5030/723 to All on Sun Apr 13 22:12:22 2025
    Здраствуйте, All!

    Опубликован релиз Binkleyforce 0.26.1

    https://prj.zxalexis.ru/gitea/zx/bforce/releases/tag/0.26.1

    Изменения:
    - Исправлен сбой при обработке override-строк конфига для ip-only
    узлов
    - Проведена РеДебианизация
    - Проведена начальная настройка автоматизации CI для сборки бинарей.

    Скачать архивом: https://prj.zxalexis.ru/gitea/zx/bforce/archive/0.26.1.tar.gz
    https://prj.zxalexis.ru/gitea/zx/bforce/archive/0.26.1.zip Забрать из Git: https://prj.zxalexis.ru/gitea/zx/bforce.git

    Бинарные сборки:
    - Ubuntu 22.04 x64: https://prj.zxalexis.ru/gitea/zx/bforce/releases/download/0.26.1/bforce-0.26.1-20255513-Ubuntu.zip
    - Archlinux x64: https://prj.zxalexis.ru/gitea/zx/bforce/releases/download/0.26.1/bforce-0.26.1-20255313-Arch.zip



    Alexey Khromov
    --- GoldED+/LNX 1.1.5-b20250407
    * Origin: - Вы в опасности! Вы окружены роботами! - (2:5030/723)
  • From Dmitry Protasoff@2:5001/100.1 to Alexey Khromov on Fri Jun 27 03:15:30 2025
    Hello, Alexey!

    Sunday April 13 2025 22:12, you wrote to All:

    Опубликован релиз Binkleyforce 0.26.1

    А вот такой патчик примешь? Очень удобно, когда пишутся те же самые имена девайсов, которые у меня выдаются модемам через udev и прописаны в mgetty:

    /Users/dp/FIDO/src/Mailers/bforce/sess_answ_final.patch

    --- a/source/bforce/sess_answ.c
    +++ b/source/bforce/sess_answ.c
    @@ -49,7 +49,17 @@ int answ_system(e_session type, char *connstr, int inetd)
    state.inet = TRUE;
    }
    else
    - state.linename = isatty(0) ? port_get_name(ttyname(0)) : xstrcpy("tcpip");
    + {
    + /* First try to get device name from mgetty's DEVICE environment variable */
    + char *env_device = getenv("DEVICE");
    + if( env_device && *env_device )
    + {
    + /* Use the symlink name provided by mgetty */
    + state.linename = port_get_name(env_device);
    + }
    + else
    + {
    + /* Fallback to ttyname() which returns the canonical device path */
    + state.linename = isatty(0) ? port_get_name(ttyname(0)) : xstrcpy("tcpip");
    + }
    + }

    if( !inetd )
    {


    Best regards,
    dp.

    ---
  • From Alexey Khromov@2:5030/723 to Dmitry Protasoff on Fri Jun 27 08:16:49 2025
    Здраствуйте, Dmitry!

    27 июн 25 03:15, Dmitry Protasoff -> Alexey Khromov:

    А вот такой патчик примешь? Очень удобно, когда пишутся те же самые
    имена девайсов, которые у меня выдаются модемам через udev и прописаны
    в mgetty:

    Без проблем, сегодня посмотрим) главное, чтобы оставалась совместимость с скриптом статистики,
    что и проверим вечерком

    * Оригинал написан в ru.ftn.develop
    * Скопировано в RU.BFORCE


    Alexey Khromov
    --- GoldED+/LNX 1.1.5-b20250409
    * Origin: - Вы в опасности! Вы окружены роботами! - (2:5030/723)
  • From G Chatoff@2:5015/46 to Dmitry Protasoff on Fri Jun 27 07:54:54 2025
    Hello, Dmitry!

    Friday June 27 2025 03:15, from Dmitry Protasoff -> Alexey Khromov:

    Опубликован релиз Binkleyforce 0.26.1

    BinkleyForce is an FTN (FidoNet) mailer originally developed in the late 1990s by Alexander Belkin. Over time, the project has been maintained via multiple repositories:

    SourceForge: The project "binkleyforce" on SourceForge (maintained by users ugenk and vpooh) was active until 2015 https://sourceforge.net/projects/binkforce/ The last update on SourceForge was April 27, 2015, after which development moved elsewhere.

    GitHub (zotrix): A GitHub repository under user zotrix appears to have continued development after SourceForge. This repository contains tags up to version 0.23 (Dec 2011) https://github.com/fidosoft , but commit activity likely continued beyond that (the repository had ~197 commits). In 2016, the FIDOSOFT organization forked zotrix's repo, indicating that the zotrix repo was considered the main line at least up to that point. However, the zotrix repository itself has not advertised newer releases (no tags for 0.24+ on GitHub).

    FIDOSOFT Fork: The FIDOSOFT GitHub organization forked the zotrix repo in 2016. This fork did not see further public commits after November 2, 2016, suggesting it was either for archival or packaging purposes. It does not contain the most recent changes.

    Current (ZX Gitea) Repository: In recent years, development has been led by Alexey Khromov (FidoNet 2:5030/723), who maintains the project on a self-hosted Gitea instance (prj.zxalexis.ru). This is now the most up-to-date source. For example, the BinkleyForce 0.26.1 release (announced April 2025) is available on that Gitea site https://wfido.ru/m/RU.FIDONET.DIGEST/2:6035/3.1+67fcc2bd Ongoing updates (e.g. version 0.27) have been mentioned in FidoNet forums as well, confirming that active development continues under Alexey's stewardship.

    А вот такой патчик примешь? Очень удобно, когда пишутся те же самые
    имена девайсов, которые у меня выдаются модемам через udev и прописаны
    в mgetty:

    The patch under review modifies the function answ_system() in sess_answ.c to improve how the program determines the "line name" (state.linename) for the current session. In the existing code, when BinkleyForce is answering a call on a modem, it sets state.linename based on the terminal device of standard input (file descriptor 0). Specifically, if STDIN is a TTY, it uses ttyname(0) (the path of the TTY device) and passes that to port_get_name() to get a simplified port name; if STDIN is not a TTY (e.g. a network connection), it defaults to "tcpip". For inbound TCP/IP (BinkP) connections invoked via inetd, it similarly sets state.linename = "tcpip" and marks the state as network (state.inet = TRUE)
    . This patch introduces an additional check before using ttyname(0): it looks for the environment variable DEVICE (which is set by mgetty when it spawns an external program for an incoming call). If DEVICE is present and non-empty, the patched code uses its value as the device path, in place of ttyname(0). In other words: If the environment variable DEVICE is set (e.g. /dev/modem1), use port_get_name(env_device) to derive the line name.
    If DEVICE is not set or is empty, fall back to the original behavior (use ttyname(0) if available, or "tcpip" if not a TTY).

    The motivation for this change is to preserve user-friendly device naming in logs and status messages. Many system administrators create udev rules to assign custom symlink names to modem devices (e.g. /dev/modem1 instead of a kernel default like /dev/ttyUSB0). They also configure mgetty to use these names. Mgetty, when invoking BinkleyForce upon an incoming call, provides the device name via the DEVICE environment variable (documented as "the full name of the tty device" that the call came in on).

    Without the patch, BinkleyForce would ignore this and use the canonical device path from ttyname(0), which might be the underlying device (e.g. ttyUSB0) rather than the symlink (modem1). This leads to logs and internal identifiers using the less intuitive name. In short, the patch ensures that BinkleyForce will log and refer to the line using the same device name configured in mgetty (and via udev), which improves clarity for the user. The author of the patch noted it is "very convenient when the same device names are written that are given to modems via udev and are in mgetty," aligning with this rationale.

    When BinkleyForce is invoked by mgetty for an inbound modem call, getenv("DEVICE") will return a string (for example, "\/dev\/modem1"). The code will then call port_get_name(env_device). We can infer that port_get_name() likely extracts a consistent name from the device path (possibly returning the basename or a sanitized port identifier). Thus, if env_device is "/dev/modem1", state.linename might become "modem1". This is exactly the desired outcome - the program will use the human-friendly alias.
    If for some reason DEVICE is not set, or the program was not invoked via mgetty, the code falls back to the previous logic: if file descriptor 0 is a TTY, use its ttyname (e.g. "/dev/ttyUSB0") to get a name (likely "ttyUSB0"); if not, use "tcpip". This means the patch does not change behavior for scenarios like pure TCP/IP operation or other launch methods.
    Why this fix matters: BinkleyForce uses state.linename to label the session and manage logging. Notably, when opening the session log file, it uses the line name as part of the filename extension.

    For example, without the patch an incoming call on /dev/ttyUSB0 might always log to LOG_FILE_SESSION.ttyUSB0. With the patch, if the admin's udev/mgetty calls that same device /dev/modem1, BinkleyForce will log to LOG_FILE_SESSION.modem1 instead. This makes it much easier for an operator to identify logs per physical modem, especially if multiple modems are in use with custom names. Furthermore, BinkleyForce already uses environment variables from mgetty for other call-related information. In the same function, after setting up linename, the code checks for CALLER_ID and CONNECT in the environment to record caller ID and connect strings. The patch follows this established pattern by also checking DEVICE - it's a natural extension of how BinkleyForce integrates with mgetty's provided data.
    ---
    * Origin: ChatGPT can make mistakes. Check important info. (2:5015/46)
  • From Alexey Khromov@2:5030/723 to G Chatoff on Fri Jun 27 08:22:08 2025
    Здраствуйте, G!

    Current (ZX Gitea) Repository: In recent years, development has been
    led by Alexey Khromov (FidoNet 2:5030/723), who maintains the project
    on a self-hosted Gitea instance (prj.zxalexis.ru). This is now the
    most up-to-date source. For example, the BinkleyForce 0.26.1 release (announced April 2025) is available on that Gitea site https://wfido.ru/m/RU.FIDONET.DIGEST/2:6035/3.1+67fcc2bd Ongoing
    updates (e.g. version 0.27) have been mentioned in FidoNet forums as
    well, confirming that active development continues under Alexey's stewardship.

    Для ИИ норм. В fidonews вроде тоже теперь числится, в разделе Фидософта.

    * Оригинал написан в ru.ftn.develop
    * Скопировано в RU.BFORCE


    Alexey Khromov
    --- GoldED+/LNX 1.1.5-b20250409
    * Origin: - Вы в опасности! Вы окружены роботами! - (2:5030/723)
  • From Dmitry Protasoff@2:5001/100.1 to G Chatoff on Fri Jun 27 13:47:36 2025
    Hello, G!

    Friday June 27 2025 07:54, you wrote to me:

    BinkleyForce is an FTN (FidoNet) mailer originally developed in the
    late 1990s by Alexander Belkin. Over time, the project has been
    maintained via multiple repositories:

    Что это за поток сознания?

    Best regards,
    dp.

    --- GoldED+/OSX 1.1.5-b20250409
    * Origin: All is good in St. John's Wood (2:5001/100.1)
  • From Valentin Kuznetsov@2:5053/51.401 to Dmitry Protasoff on Fri Jun 27 15:20:25 2025
    Пpивет, Dmitry!
    Отвечаю на письмо от 27 Jun 25 13:47:36 (AREA:RU.FTN.DEVELOP)

    BinkleyForce is an FTN (FidoNet) mailer originally developed in the
    late 1990s by Alexander Belkin. Over time, the project has been
    maintained via multiple repositories:

    Что это за поток сознания?

    Равномеpнейший словопомол. Это надо ценить, а понять фсё pавно невозможно

    Валентин

    --- WebFIDO/OS2 V0.16530l
    * Origin: Разум WebФИДО пpиветствует Вас фантастикой!! (2:5053/51.401)