Changelog for Bluetit
Version 2.0.0 - 22 July 2025
- [ProMIND] no change
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Version 2.0.0 RC 3 - 16 July 2025
- [ProMIND] added run control directive networkcheck
- [ProMIND] removed run control directive airvpnconnectivitycheck (superseded by networkcheck directive)
- [ProMIND] stop_connection_thread(): in case of OpenVPN connection, added an arbitrary sleep in order to let OpenVPN3 finish its cleanup duties
- [ProMIND] establish_wireguard_connection(): WireGuardClient object is now coinstructed without gateways
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Version 2.0.0 RC 2 - 9 June 2025
- [ProMIND] bluetit.rc directive air6to4 now controls any AirVPN connection and defaults to the local IPv6 status
- [ProMIND] in case vpn is busy in a pending process (such as reconnecting) stop_connection command is not performed
- [ProMIND] airvpn_country_info(): now accepts "ALL" as CountryContinent::EARTH alias
- [ProMIND] added functions vpn_status() and vpn_status_description()
- [ProMIND] functions stop_connection_stats_thread() and void connection_stats_updater() renamed to stop_connection_monitor_thread() and void connection_monitor() respectively
- [ProMIND] added function start_connection_monitor_thread()
- [ProMIND] members connectionStatsThread, connectionStatsThreadSemaphore, connectionStatsSignalExit and connectionStatsFutureObject renamed to connectionMonitorThread, connectionMonitorThreadSemaphore, connectionMonitorSignalExit and connectionMonitorFutureObject respectively
- [ProMIND] added bool reconnectionPending
- [ProMIND] function connection_stats_updater renamed to connection_monitor
- [ProMIND] wireguard_client_handshake_timeout_event_callback(): set reconnectionPending to true
- [ProMIND] connection_monitor(): in case reconnectionPending is true, call reconnect_vpn()
- [ProMIND] reconnect_vpn() set reconnectionPending to false on successful reconnection
- [ProMIND] libxml2 is now statically linked
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Version 2.0.0 RC 1 - 14 April 2025
- [ProMIND] no change
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Version 2.0.0 beta 5 - 3 April 2025
- [ProMIND] added run control directive allowping
- [ProMIND] added run control directive allowipv6ndp
- [ProMIND] added function is_private_network_allowed()
- [ProMIND] added function get_ping_mode()
- [ProMIND] added function is_IPv6_ndp_allowed()
- [ProMIND] enable_network_lock(): now requires arguments ping and ipv6ndp
- [ProMIND] added function logPingNdpDnsPushStatus()
- [ProMIND] cleanup_and_exit(): added check to avoid multiple run
- [ProMIND] main(): D-Bus methods airvpn_start_connection and start_connection do not call forced exit anymore in case of failure
- [ProMIND] added D-Bus methods "ping_status" and "ipv6_ndp_status"
- [ProMIND] Changed D-Bus response for method network_lock_status. It now returns a meaningful item with distinct data. (See Developer's Reference)
- [ProMIND] added function network_lock_status()
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Version 2.0.0 beta 4 - 14 February 2025
- [ProMIND] start_boot_airvpn_connection(): clientName and clientUser are now properly set
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Version 2.0.0 beta 3 - 11 February 2025
- [ProMIND] added run control directive airvpnconnectivitycheck
- [ProMIND] main(): added optional AirVPN server connectivity check
- [ProMIND] main(): AirVPN boot server URLs are resolved when reading from run control file
- [ProMIND] start_vpn_connection(): added a pause interval between connection attempts
- [ProMIND] add_airvpn_bootstrap_to_network_lock() renamed to add_airvpn_bootserver_to_network_lock()
- [ProMIND] add_airvpn_bootserver_to_network_lock(): boot server processing is now managed by AirVPNManifest class
- [ProMIND] remove_airvpn_bootstrap_from_network_lock() renamed to remove_airvpn_bootserver_from_network_lock()
- [ProMIND] added D-Bus "air_bootserver_info" dataset
- [ProMIND] added "air-bootserver-info" option
- [ProMIND] added air_bootserver_info() function
- [ProMIND] add_airvpn_bootserver_to_network_lock(): updated to AirVPNManifest boot server facilities
- [ProMIND] remove_airvpn_bootserver_from_network_lock(): updated to AirVPNManifest boot server facilities
- [ProMIND] add_airvpn_bootserver_to_network_lock(): merge bluetit.rc and local manifest boot server, then resolve them
- [ProMIND] added macros BT_SERVER_OPTION_CLIENT_NAME and BT_SERVER_OPTION_CLIENT_USER
- [ProMIND] D-Bus method "connection_stats" now returns client_name, client_user information and connection_start_time
- [ProMIND] start_vpn_connection(): check clientName and clientUser to be not empty
- [ProMIND] airvpn_manifest_updater(): in case interval_minutes is <= 0 (i.e.: no manifest available), it is set to default
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Version 2.0.0 beta 2 - 12 December 2024
- [ProMIND] updated to OpenVPN3 AirVPN 3.11
- [ProMIND] added function traffic_split_status() for "traffic_split_status" D-Bus method
- [ProMIND] added D-Bus "air_user_info" dataset
- [ProMIND] added "air-user-info" option
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Version 2.0.0 beta 1 - 13 May 2024
- [ProMIND] WireGuard is now the default VPN for AirVPN connection
- [ProMIND] added client option --mtu
- [ProMIND] added run control directive wireguardmtu
- [ProMIND] added mode to client options
- [ProMIND] removed options for unsupported profiles with credentials
- [ProMIND] function check_if_root() renamed to is_root()
- [ProMIND] added is_hummingbird_running() function
- [ProMIND] D-Bus connection methods now check whether hummingbird is running
- [ProMIND] Added server D-Bus keys vpn_status to connection_stats
- [ProMIND] Added D-Bus command "remove_wireguard_device"
- [ProMIND] Added BLUETIT_STATUS_WIREGUARD_DEVICE_EXISTS macro in btcommon.h
- [ProMIND] Added wireguard_device_exists() function
- [ProMIND} bluetit_status(): added check for existing WireGuard devices
- [ProMIND] Added command line option "remove-wireguard-device" to be used in case a crash or unexpected exit and there is a WireGuard device still active
- [ProMIND] Added remove_wireguard_device() function
- [ProMIND] airvpn_server_save(): added check for south and north america continents
- [ProMIND] airvpn_create_profile(): added use_country_fqdn argument. When false, it is returned the best server for the country/continent according to the manifest best score, country/continent FQDN otherwise
- [ProMIND] Added air-sort and air-rsort options
- [ProMIND] Added air-limit option
- [ProMIND] btcommon.h renamed to btmacro.h
- [ProMIND] Added server D-Bus key load to airvpn_country_info and airvpn_country_list datasets
- [ProMIND] Manifest update interval is now set according to Manifest "next_update" element
- [ProMIND] Added server D-Bus key continent_code and continent_name to airvpn_server_info and airvpn_server_list datasets
- [ProMIND] Fixed bug in formal check for "country" and "aircountry" rc directives
- [ProMIND] Added --async option for asynchronous connections
- [ProMIND] Options --air-info and --air-list can now be used regardless of Bluetit connection status
- [ProMIND] Added function vpn_connection_mode()
- [ProMIND] Added macros VPN_MODE_BOOT, VPN_MODE_SYNCHRONOUS, VPN_MODE_ASYNCHRONOUS and VPN_MODE_DISCONNECTED
- [ProMIND] Added server D-Bus keys airvpn_user_name, airvpn_user_key and vpn_connection_mode to connection_stats dataset
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Version 2.0.0 alpha 2 - 24 November 2023
- [ProMIND] implemented WireGuard connection
- [ProMIND] replaced all OPENVPN_LOG call with Logger::log
- [ProMIND] added function is_country_allowed
- [ProMIND] function start_openvpn_connection renamed to start_vpn_connection()
- [ProMIND] added WireGuard support to start_vpn_connection
- [ProMIND] function stop_openvpn_connection renamed to stop_vpn_connection()
- [ProMIND] added WireGuard support to stop_vpn_connection()
- [ProMIND] D-Bus command set_openvpn_profile renamed to set_vpn_profile in order to support both OpenVPN and WireGuard connections
- [ProMIND] added set_wireguard_profile() function
- [ProMIND] added establish_wireguard_connection() and reconnect_wireguard() functions
- [ProMIND] function reconnect_openvpn() renamed to reconnect_vpn()
- [ProMIND] added WireGuard support to reconnect_vpn()
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Version 2.0.0 alpha 1 - 15 September 2023
- [ProMIND] updated to OpenVPN3 AirVPN 3.9
- [ProMIND] create_daemon(): replaced sprintf with snprintf
- [ProMIND] create_daemon(): replaced sprintf with snprintf
- [ProMIND] airvpn_server_save(): added generator tag
- [ProMIND] airvpn_key_save(): added generator tag
- [ProMIND] added run control directives allowtrafficsplitting, trafficsplitnamespace, trafficsplitinterface, trafficsplitnamespaceinterface, trafficsplitipv4, trafficsplitipv6 and trafficsplitfirewall
- [ProMIND] start_openvpn_connection(): added log display of local interfaces/addresses
- [ProMIND] recover_network(): delete traffic split namespace, in case it does exist.
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Version 1.3.0 - 1 June 2023
- [ProMIND] added run control directive "airvpntype"
- [ProMIND] added client option "air-vpn-type"
- [ProMIND] added function default_port(): return default port number according to VPN type
- [ProMIND] vpn_type_description(): return full description of VPN type in use
- [ProMIND] airvpn_server_save(): added WireGuard profile export capability
- [ProMIND] airvpn_create_profile(): now requires server/country name or pattern
- [ProMIND] airvpn_create_profile(): added WireGuard profile creation capability
- [ProMIND] airvpn_country_info(); added continent management
- [ProMIND] airvpn_country_list(); added continent management
- [ProMIND] refactored VpnClient references to OpenVpnClient
- [ProMIND] domain names in OpenVPN profiles are always resolved and replaced with their corresponding IP addresses before submitting them to OpenVPN3
- [ProMIND] AirVPN server provided by the client is now properly checked against country's white and black lists as well
- [ProMIND] AirVPN continents provided by the client are now properly checked against country's and server's white and black lists
- [ProMIND] added run control directive "allowuservpnprofiles"
- [ProMIND] AirVPN country connection now checks for country's existence in AirVPN infrastructure
- [ProMIND] Improved override settings management, in particular when a user configuration profile is used
- [ProMIND] removed references to LocalNetwork::IPEntry and replaced with IPAddress and IPFamily
- [ProMIND] stop_connection_thread(): access to function is now regulated by a semaphore in order to avoid any possible race condition
- [ProMIND] stop_connection_stats_thread(): access to function is now regulated by a semaphore in order to avoid any possible race condition
- [ProMIND] Server D-Bus keys tls_ciphers, tls_suite_ciphers and data_ciphers respectively renamed as openvpn_tls_ciphers, openvpn_tls_suite_ciphers and openvpn_data_ciphers in airvpn_server_info dataset
- [ProMIND] Server D-Bus keys airvpn_server_tls_ciphers, airvpn_server_tls_suite_ciphers and airvpn_server_data_ciphers respectively renamed as airvpn_server_openvpn_tls_ciphers, airvpn_server_openvpn_tls_suite_ciphers and airvpn_server_openvpn_data_ciphers in airvpn_server_info dataset
- [ProMIND] Added server D-Bus keys openvpn_available, wireguard_available, wireguard_ciphers, airvpn_server_openvpn_available, airvpn_server_wireguard_available and airvpn_server_wireguard_ciphers in airvpn_server_info dataset
- [ProMIND] Added server D-Bus keys timestamp and next_tupdate_timestamp to connection_stats, airvpn_server_info, airvpn_server_list, airvpn_country_info and airvpn_country_list datasets
- [ProMIND] Added country D-Bus keys timestamp and next_tupdate_timestamp to connection_stats, airvpn_server_info, airvpn_server_list, airvpn_country_info and airvpn_country_list datasets
- [ProMIND] Added server D-Bus keys pfs_available to airvpn_server_info dataset and airvpn_server_pfs_available to connection_stats dataset
- [ProMIND] Added server D-Bus keys supports_ipv4 and supports_ipv6 respectively renamed to ipv4_available and ipv6_available in airvpn_server_info dataset
- [ProMIND] start_airvpn_connection(): added AirVPN server availability check
- [ProMIND] establish_openvpn_connection(): added proxy host and port check
- [ProMIND] Bluetit D-Bus event's payload is now a vector of strings (see developer's reference manual)
- [ProMIND] added connection statistics to the system log when raising "event_disconnected"
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Version 1.2.1 - 9 December 2022
- [ProMIND] production release
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Version 1.2.1 RC 1 - 30 November 2022
- [ProMIND] updated all dependencies and libraries
- [ProMIND] package is now realeased both for OpenSSL 3.0 and OpenSSL 1.1.x (legacy)
- [ProMIND] airvpn_server_save() now correctly returns a proper error in case an invalid user key has been provided
- [ProMIND] added RC option forbidquickhomecountry
- [ProMIND] D-Bus method BT_METHOD_NETWORK_LOCK_STATUS now returns the description of firewall backend in use
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Version 1.2.0 - 22 March 2022
- [ProMIND] production release
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Version 1.2.0 RC 3 - 17 March 2022
- [ProMIND] do not check for supported ciphers in OpenVPN config file in case eval.cipher is empty
- [ProMIND] establish_openvpn_connection() returns false in case of client's event error or fatal error
- [ProMIND] connection and connection stats threads are now stopped by dedicated functions stop_connection_thread() and void stop_connection_stats_thread() respectively
- [ProMIND] improved error management at connection time
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Version 1.2.0 RC 2 - 8 March 2022
- [ProMIND] Added list_data_ciphers D-Bus method
- [ProMIND] Added list_pushed_dns D-Bus method
- [ProMIND] Check and validate requested data cipher according to VpnClient's supported ciphers
- [ProMIND] Shows server information summary at the end of connection process via VpnClient connected event
- [ProMIND] Normalized (extended) bool values for options allowuaf, compress and network-lock
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Version 1.2.0 RC 1 - 15 February 2022
- [ProMIND] Same as Beta 1
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Version 1.2.0 Beta 1 - 7 February 2022
- [ProMIND] White and black lists are now properly checked when connecting to an AirVPN server or country
- [ProMIND] In case there are white lists defined, quick connection will ignore the connection scheme priority
- [ProMIND] Added "africa" and "oceania" to continent/country connection process
- [ProMIND] Added SSL library version to startup log
- [ProMIND] Removed ipv6 option and replaced with allowuaf option (Allow Unused Address Families) in order to comply to the new OpenVPN3 specifications
- [ProMIND] Added D-Bus method ssl_library_version
- [ProMIND] btcommon.hpp: added normalized client options and descriptions
- [ProMIND] add_airvpn_bootstrap_to_network_lock(): added support for AirVPN IPv6 bootstrap servers
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Version 1.1.0 - 4 June 2021
- [ProMIND] Client option "network-lock" is now forbidden in case persistent network lock is enabled
- [ProMIND] Avoid network lock initialization in case persistent network lock is enabled and client is requiring a OpenVPN connection from profile
- [ProMIND] --air-list option now accepts "all" for sub options --air-server and --air-country
- [ProMIND] AirVPN Manifest update suspended in case Bluetit is in a dirty status
- [ProMIND] Changed systemd unit in order to prevent the obnoxious SIGKILL signal inappropriately sent before stop timeout completion and for no logical or practical reason when Bluetit is properly and neatly terminating in response to a legal and expected SIGTERM
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Version 1.1.0 RC 4 - 14 May 2021
- [ProMIND] Added directives airipv6 and air6to4 in bluetit.rc
- [ProMIND] In case it is requested a network recovery, VpnClient object is now initialized with NetFilter::Mode::OFF
- [ProMIND] In case the requested network lock method is not available, connection is not started
- [ProMIND] In case system location cannot be determined through ipleak.net, country is now properly set to empty, latitude and longitude to 0.
- [ProMIND] Persistent network lock is enabled only in case Bluetit status is clean
- [ProMIND] AirVPN boot connection is started only in case Bluetit status is clean
- [ProMIND] DNS backup files are now properly evaluated when determining dirty status
- [ProMIND] Added D-Bus commands "reconnect_connection" and "session_reconnect"
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Version 1.1.0 RC 3 - 16 April 2021
- [ProMIND] Release Candidate 3
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Version 1.1.0 RC 2 - 13 April 2021
- [ProMIND] Release Candidate 2
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Version 1.1.0 RC 1 - 7 April 2021
- [ProMIND] Release Candidate 1
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Version 1.1.0 Beta 2 - 2 April 2021
- [ProMIND] Gateway and gateway interface check at startup. Bluetit won't proceed until both gateway and gateway interface are properly set up by the system
- [ProMIND] Increased volume and rate data sizes for 32 bit architectures
- [ProMIND] Added aircpher directive to bluetit.rc
- [ProMIND] Added maxconnretries directive to bluetit.rc
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Version 1.1.0 Beta 1 - 11 March 2021
- [ProMIND] Updated base classes
- [ProMIND] connection_stats_updater(): now uses server.getEffectiveBandWidth() for AIRVPN_SERVER_BANDWIDTH
- [ProMIND] added bool shutdownInProgress to control bluetit exit procedure and avoid signal flooding
- [ProMIND] system location is detected at boot time and eventually propagated to all AirVPN users
- [ProMIND] Network lock and filter is now enabled and activated before AirVPN login procedure
- [ProMIND] Added D-Bus methods "enable_network_lock", "disable_network_lock" and "network_lock_status"
- [ProMIND] Renamed bluetit.rc directive "airconnectonboot" to "airconnectatboot"
- [ProMIND] Added bluetit.rc directive "networklockpersist"
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Version 1.0.0 - 7 January 2021
- [ProMIND] Production release