Index | Thread | Search

From:
landry@openbsd.org
Subject:
Re: anybody still using graphics/orthanc or net/fastnetmon ?
To:
Tom Smyth <tom.smyth@wirelessconnect.eu>
Cc:
ports@openbsd.org, jasper@openbsd.org
Date:
Wed, 20 May 2026 09:17:37 +0200

Download raw body.

Thread
  • Tom Smyth:

    anybody still using graphics/orthanc or net/fastnetmon ?

  • Le Wed, May 20, 2026 at 12:22:09AM +0100, Tom Smyth a écrit :
    > sorry folks
    > 
    > for some reason I only ran sysupgrade on my fastnet mon box tonight ( from
    > 7.7 to 7.8)     so only seeing this thread now (that I searched for
    > fasnetmon on the ports list
    > 
    > I think fastnetmon is an amazing piece of software  although running it on
    > OpenBSD does require  a re-animation script to check if it is still running
    > and restart the service...
    > 
    > I can try to "help" maintain the port  I have messaged Pavel Otinsov the
    > author of fastnetmon to see if we can work on it ...
    > 
    > I dont know how much use I can be ... but Ill try  to get it working ...
    >  I have very little experience with boost libraries and would appreciate a
    > steer from someone ...
    
    here's what i had last year when the port was removed, and i think i
    quickly gave up when i saw that it wanted to build many bundled libs.
    
    i don't plan more work on it at all, but feel free to start from that.
    
    Landry
    Index: Makefile
    ===================================================================
    RCS file: /cvs/ports/net/fastnetmon/Attic/Makefile,v
    diff -u -r1.17 Makefile
    --- Makefile	8 Nov 2022 11:14:54 -0000	1.17
    +++ Makefile	20 May 2026 07:15:59 -0000
    @@ -2,8 +2,7 @@
     
     GH_ACCOUNT =		pavel-odintsov
     GH_PROJECT =		fastnetmon
    -GH_TAGNAME =		v1.1.7
    -REVISION =		2
    +GH_TAGNAME =		v1.2.8
     
     HOMEPAGE =		https://fastnetmon.com/guides/
     
    @@ -51,7 +50,8 @@
     		-e 's,/etc,${SYSCONFDIR}/fastnetmon,g' \
     		-e 's,/usr/local,${PREFIX},g' \
     		${WRKSRC}/fast_platform.h.template \
    -		${WRKSRC}/fastnetmon.conf ${WRKSRC}/scripts/*
    +		${WRKSRC}/fastnetmon.conf ${WRKSRC}/scripts/*pl \
    +		${WRKSRC}/scripts/*py ${WRKSRC}/scripts/*sh
     
     post-install:
     	${INSTALL_DATA_DIR} ${PREFIX}/share/examples/fastnetmon/
    Index: distinfo
    ===================================================================
    RCS file: /cvs/ports/net/fastnetmon/Attic/distinfo,v
    diff -u -r1.5 distinfo
    --- distinfo	13 Sep 2020 07:59:58 -0000	1.5
    +++ distinfo	20 May 2026 07:15:59 -0000
    @@ -1,2 +1,2 @@
    -SHA256 (fastnetmon-1.1.7.tar.gz) = qlPCT+OSfSsLY/iInq4TSwKsu6G+5SRI3sgTz9DpR5E=
    -SIZE (fastnetmon-1.1.7.tar.gz) = 871242
    +SHA256 (fastnetmon-1.2.8.tar.gz) = 0WkBsAlj85UkHIGNAq0nUfFOM/0y7TyzARZBq2gODQE=
    +SIZE (fastnetmon-1.2.8.tar.gz) = 1476794
    Index: patches/patch-src_CMakeLists_txt
    ===================================================================
    RCS file: /cvs/ports/net/fastnetmon/patches/Attic/patch-src_CMakeLists_txt,v
    diff -u -r1.6 patch-src_CMakeLists_txt
    --- patches/patch-src_CMakeLists_txt	11 Mar 2022 19:45:58 -0000	1.6
    +++ patches/patch-src_CMakeLists_txt	20 May 2026 07:15:59 -0000
    @@ -1,59 +1,50 @@
     Index: src/CMakeLists.txt
     --- src/CMakeLists.txt.orig
     +++ src/CMakeLists.txt
    -@@ -472,7 +472,7 @@ endif()
    - find_path(HIREDIS_INCLUDES_FOLDER NAMES hiredis/hiredis.h PATHS "${HIREDIS_CUSTOM_INSTALL_PATH}/include" NO_DEFAULT_PATH)
    +@@ -871,7 +871,7 @@ endif()
    + find_path(HIREDIS_INCLUDES_FOLDER NAMES hiredis/hiredis.h PATHS "${HIREDIS_CUSTOM_INSTALL_PATH}/include" ${DISABLE_DEFAULT_PATH_SEARCH_VAR})
      
      # Try to find hiredis library path
    --find_library(HIREDIS_LIBRARY_PATH NAMES hiredis PATHS "${HIREDIS_CUSTOM_INSTALL_PATH}/lib" NO_DEFAULT_PATH)
    +-find_library(HIREDIS_LIBRARY_PATH NAMES hiredis PATHS "${HIREDIS_CUSTOM_INSTALL_PATH}/lib" ${DISABLE_DEFAULT_PATH_SEARCH_VAR})
     +find_library(HIREDIS_LIBRARY_PATH NAMES hiredis)
      
      if (HIREDIS_INCLUDES_FOLDER AND HIREDIS_LIBRARY_PATH) 
    -     message(STATUS "We found hiredis library and will build Redis support ${HIREDIS_INCLUDES_FOLDER} ${HIREDIS_LIBRARY_PATH}")
    -@@ -525,7 +525,7 @@ endif()
    - find_path(LOG4CPP_INCLUDES_FOLDER NAMES log4cpp/Appender.hh PATHS "${LOG4CPP_CUSTOM_INSTALL_PATH}/include" NO_DEFAULT_PATH)
    +     message(STATUS "We found hiredis library ${HIREDIS_INCLUDES_FOLDER} ${HIREDIS_LIBRARY_PATH}")
    +@@ -964,7 +964,7 @@ endif()
    + find_path(LOG4CPP_INCLUDES_FOLDER NAMES log4cpp/Appender.hh PATHS "${LOG4CPP_CUSTOM_INSTALL_PATH}/include" ${DISABLE_DEFAULT_PATH_SEARCH_VAR})
      
      # Try to find log4cpp library path
    --find_library(LOG4CPP_LIBRARY_PATH NAMES log4cpp PATHS "${LOG4CPP_CUSTOM_INSTALL_PATH}/lib" NO_DEFAULT_PATH)
    +-find_library(LOG4CPP_LIBRARY_PATH NAMES log4cpp PATHS "${LOG4CPP_CUSTOM_INSTALL_PATH}/lib" ${DISABLE_DEFAULT_PATH_SEARCH_VAR})
     +find_library(LOG4CPP_LIBRARY_PATH NAMES log4cpp)
      
      if (LOG4CPP_INCLUDES_FOLDER AND LOG4CPP_LIBRARY_PATH)
          include_directories(${LOG4CPP_INCLUDES_FOLDER})
    -@@ -537,7 +537,7 @@ endif()
    - ### Look for jsonc
    - 
    - find_path(JSONC_INCLUDES_FOLDER NAMES json-c/json.h PATHS "${JSONC_CUSTOM_INSTALL_PATH}/include" NO_DEFAULT_PATH)
    --find_library(JSONC_LIBRARY_PATH NAMES json-c PATHS "${JSONC_CUSTOM_INSTALL_PATH}/lib" NO_DEFAULT_PATH)
    -+find_library(JSONC_LIBRARY_PATH NAMES json-c)
    - 
    - if (JSONC_INCLUDES_FOLDER AND JSONC_LIBRARY_PATH)
    -     include_directories(${JSONC_INCLUDES_FOLDER}) 
    -@@ -665,9 +665,9 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" OR ${CMAKE
    -     set(CMAKE_INSTALL_SBINDIR "bin")
    -     set(CMAKE_INSTALL_SYSCONFDIR "etc")
    - else()
    --    set(CMAKE_INSTALL_BINDIR "/usr/bin")
    --    set(CMAKE_INSTALL_SBINDIR "/usr/sbin")
    --    set(CMAKE_INSTALL_SYSCONFDIR "/etc")
    +@@ -1147,6 +1147,10 @@ elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
    +     endif()
    + elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
    +     message(STATUS "We run on Apple platform")
    ++elseif(${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
     +    set(CMAKE_INSTALL_BINDIR "${PREFIX}/bin")
     +    set(CMAKE_INSTALL_SBINDIR "${PREFIX}/sbin")
     +    set(CMAKE_INSTALL_SYSCONFDIR "${PREFIX}/share/examples/fastnetmon")
    - endif()
    - 
    - install(TARGETS fastnetmon DESTINATION "${CMAKE_INSTALL_SBINDIR}")
    -@@ -675,13 +675,9 @@ install(TARGETS fastnetmon_client DESTINATION "${CMAKE
    + else()
    +     message(STATUS "We run on platform ${CMAKE_SYSTEM_NAME} and we do not touch install paths")
    +     # Do not touch these variables and use default values
    +@@ -1157,10 +1161,6 @@ install(TARGETS fastnetmon_client DESTINATION "${CMAKE
    + install(TARGETS fastnetmon_api_client DESTINATION "${CMAKE_INSTALL_BINDIR}")
      
      install(FILES fastnetmon.conf DESTINATION "${CMAKE_INSTALL_SYSCONFDIR}")
    - 
    +-
     -# Install blank files for networks list and whitelist
     -install(FILES networks_list DESTINATION "${CMAKE_INSTALL_SYSCONFDIR}")
     -install(FILES networks_whitelist DESTINATION "${CMAKE_INSTALL_SYSCONFDIR}")
    --
    - # man pages
    --install(FILES man/fastnetmon.1 DESTINATION /usr/share/man/man1)
    --install(FILES man/fastnetmon_client.1 DESTINATION /usr/share/man/man1)
    -+install(FILES man/fastnetmon.1 DESTINATION ${PREFIX}/man/man1)
    -+install(FILES man/fastnetmon_client.1 DESTINATION ${PREFIX}/man/man1)
      
    - # service files
    - if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
    + # man pages
    + install(FILES man/fastnetmon.8 DESTINATION ${CMAKE_INSTALL_MANDIR}/man8)
    +@@ -1216,4 +1216,4 @@ if (ENABLE_FUZZ_TEST_DESOCK)
    +         target_link_libraries(fastnetmon desock) 
    + endif()
    +       
    +-      
    +\ No newline at end of file
    ++      
    Index: patches/patch-src_fast_endianless_hpp
    ===================================================================
    RCS file: /cvs/ports/net/fastnetmon/patches/Attic/patch-src_fast_endianless_hpp,v
    diff -u -r1.2 patch-src_fast_endianless_hpp
    --- patches/patch-src_fast_endianless_hpp	11 Mar 2022 19:45:58 -0000	1.2
    +++ patches/patch-src_fast_endianless_hpp	20 May 2026 07:15:59 -0000
    @@ -1,11 +1,12 @@
     Index: src/fast_endianless.hpp
     --- src/fast_endianless.hpp.orig
     +++ src/fast_endianless.hpp
    -@@ -1,5 +1,7 @@
    - #pragma once
    - 
    +@@ -5,6 +5,8 @@
    + #ifdef _WIN32
    + #include <winsock2.h>
    + #else
     +// For int32_t
     +#include <sys/types.h>
      #include <arpa/inet.h>
    + #endif 
      
    - // Linux standard functions for endian conversions are ugly because there are no checks about arguments length
    Index: patches/patch-src_fast_library_cpp
    ===================================================================
    RCS file: /cvs/ports/net/fastnetmon/patches/Attic/patch-src_fast_library_cpp,v
    diff -u -r1.5 patch-src_fast_library_cpp
    --- patches/patch-src_fast_library_cpp	11 Mar 2022 19:45:58 -0000	1.5
    +++ patches/patch-src_fast_library_cpp	20 May 2026 07:15:59 -0000
    @@ -1,9 +1,11 @@
    +https://github.com/freebsd/freebsd-ports/blob/f009564d752e90a9070d32d97b901964044134c4/net-mgmt/fastnetmon/files/patch-fast__library.cpp
    +
     Index: src/fast_library.cpp
     --- src/fast_library.cpp.orig
     +++ src/fast_library.cpp
    -@@ -29,6 +29,11 @@
    - #include <sys/endian.h>
    - #endif
    +@@ -36,6 +36,11 @@
    + 
    + #include "iana_ip_protocols.hpp"
      
     +// For pthread_set_name_np
     +#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__OpenBSD__)
    @@ -13,7 +15,28 @@
      boost::regex regular_expression_cidr_pattern("^\\d+\\.\\d+\\.\\d+\\.\\d+\\/\\d+$");
      boost::regex regular_expression_host_pattern("^\\d+\\.\\d+\\.\\d+\\.\\d+$");
      
    -@@ -1246,12 +1251,16 @@ bool set_boost_process_name(boost::thread* thread, std
    +@@ -1094,15 +1099,13 @@ std::string serialize_network_load_to_text(subnet_coun
    + 
    + std::string dns_lookup(std::string domain_name) {
    +     try {
    +-        boost::asio::io_service io_service;
    +-        boost::asio::ip::tcp::resolver resolver(io_service);
    ++        boost::asio::io_context io_context;
    ++        boost::asio::ip::tcp::resolver resolver(io_context);
    + 
    +-        boost::asio::ip::tcp::resolver::query query(domain_name, "");
    ++        auto results = resolver.resolve(domain_name, "");
    + 
    +-        for (boost::asio::ip::tcp::resolver::iterator i = resolver.resolve(query);
    +-             i != boost::asio::ip::tcp::resolver::iterator(); ++i) {
    +-            boost::asio::ip::tcp::endpoint end = *i;
    +-            return end.address().to_string();
    ++        for (const auto& entry : results) {
    ++            return entry.endpoint().address().to_string();
    +         }
    +     } catch (std::exception& e) {
    +         return "";
    +@@ -1204,12 +1207,16 @@ bool set_boost_process_name(boost::thread* thread, con
          char new_process_name[16];
          strcpy(new_process_name, process_name.c_str());
      
    @@ -30,3 +53,35 @@
      
          return true;
      }
    +@@ -1428,7 +1435,7 @@ bool validate_ipv6_or_ipv4_host(const std::string host
    +     boost::system::error_code ec;
    + 
    +     // Try to build it from string representation
    +-    boost::asio::ip::address::from_string(host, ec);
    ++    boost::asio::ip::make_address(host, ec);
    + 
    +     // If we failed to parse it
    +     if (ec) {
    +@@ -1535,7 +1542,7 @@ bool execute_web_request_secure(std::string address,
    +             return false;
    +         }
    + 
    +-        auto end_point = resolver.resolve(boost::asio::ip::tcp::resolver::query{ host, port }, ec);
    ++        auto end_point = resolver.resolve( host, port, ec);
    + 
    +         if (ec) {
    +             logger << log4cpp::Priority::ERROR << "Could not resolve peer address in execute_web_request " << ec;
    +@@ -1699,11 +1706,11 @@ bool execute_web_request(std::string address,
    + 
    +         // Normal boost::asio setup
    +         // std::string const host = "178.62.227.110";
    +-        boost::asio::io_service ios;
    ++        boost::asio::io_context ios;
    +         boost::asio::ip::tcp::resolver r(ios);
    +         boost::asio::ip::tcp::socket sock(ios);
    + 
    +-        auto end_point = r.resolve(boost::asio::ip::tcp::resolver::query{ host, port }, ec);
    ++        auto end_point = r.resolve(host, port, ec);
    + 
    +         if (ec) {
    +             error_text = "Could not resolve peer address in execute_web_request " + ec.message();
    
  • Tom Smyth:

    anybody still using graphics/orthanc or net/fastnetmon ?