Releases: jmdaweb/NVDARemoteServer
Release 2.3
This release includes the following changes:
- The Docker image is based on the latest Debian stable version, instead of Ubuntu. The server runs under a standard user account, and a volume is provided to store settings, certificates and other data. The exec syntax is used in ENTRYPOINT and CMD instructions, so the server runs with pid 1 and handles stop signals properly. A docker-compose file is provided for ease of deployment.
- The passwords are nolonger displayed in the log or console, unless loglevel 4 is used. Numeric values for clients and channels are used instead.
- Now, when a client connects or joins a channel, its ip address, source port and connection type will be displayed.
- The server is stable enough, so default loglevel value is now 2.
- Use a separate thread to accept connections. This fixes a bug which caused the server to freeze trying to accept a connection which never sent data.
- The server nolonger tries to setup signal handlers when running as a Windows service.
- Added a new setting, includeTracebacks. Disabled by default, this setting controls wether tracebacks are displayed or not when an exception is raised.
- Added a new setting, allowedMessageLength, which limits large incoming messages from clients to the specified value.
- On Centos 8 and similar distros, Python 3.11 is now required.
- Updated UCRT, MSVC and OpenSSL binaries to the latest versions.
- Updated documentation.
- Added a sample Let's Encrypt hook to deploy new certificates automatically after renewal.
- Other minor tweaks, bug fixes and improvements.
Release 2.2
This release brings updated OpenSSL binaries and extends the NVDARemoteCertificate program, allowing to select between RSA and ecdsa when generating the private key for your self-signed certificate.
Release 2.1
This release brings the following changes:
- Renamed pemfile setting to certfile.
- Added a new setting: keyfile.
- Added log level 4.
- Bug fixes, code optimizations and important security enhancements.
Important: this is the last release supporting Python 2.7. This release nolonger supports Centos 6.
Release 2.0
This release brings the following changes:
- Fixed permission error on some Linux distributions after generating a new certificate.
- Now, the systemd unit restarts the service automatically if it crashes. Only the stop command can definitely close the server.
- Windows version is now based on Python 2.7.18 and 3.8.6, with OpenSSL 1.1.1H binary, Pywin32 300 for Python 3 and Pywin32 228 for Python 2.7.
- The SSL protocol is nolonger forced, allowing TLS 1.3 when it is supported by the system.
- The code has been linted with Flake8.
- Now, the server will continue running even if it can't create one of IPV4 or IPV6 sockets. It will crash only when no server sockets can be created.
- Other code optimizations.
- Added support for Centos / RHEL 8.x.
- Added the ability to edit the configuration and generate a new certificate inside the Docker container.
This is the last release to support Centos 6, Windows XP and Windows 7. Remember creating a new certificate after installation!
Release 1.9
This release brings an important bugfix and some enhancements. Specifically:
- Fixed an important issue introduced in version 1.7 which caused the server to stop permanently after a system reboot on many Linux distributions.
- Now, systemd-tmpfiles is used to create temporary folders and files on systemd-based distributions.
- The main thread now calls the garbage collector on each iteration, reducing memory usage.
- An internal socket pair has been created. One of the sockets is added to all select.select calls for reading, so the server nolonger delays on stop.
- On Windows, if you press enter directly on service_manager.cmd, it will prompt for elevated privileges if required.
- Added an installation script for ArchLinux. It will clean the service and other files when uninstalling.
- Python2 was called accidentally on ArchLinux on server restart operation.
- The service is disabled on all systemd-based platforms before uninstalling the package.
- Code optimizations and other tweaks.
Upgrade note: if you are upgrading from version 1.6 or earlier, you must modify your configuration file and change the pidfile parameter to /var/run/NVDARemoteServer/NVDARemoteServer.pid
. Otherwise, the server will fail to start.
Release 1.8
This release brings stability and performance improvements. Detailed list of changes:
- Fixed a bug which caused connection problems on Windows.
- Thread events are used instead of queues to monitor channel activity. This reduces memory usage, and makes the checker thread terminating immediately when the channel finishes. The event is set many times to notify the checker thread and support long data transfers and long-duration sessions.
- The main server runs on its own thread. The main thread is used now with control purposes. If the server thread freezes, the main thread will stop the application.
- Added an experimental Windows binary built with Python 3.6.6. This version uses Microsoft Universal CRT and an OpenSSL version built with Visual Studio 2017.
- Added scripts for packaging with pyinstaller and cx-freeze.
- Reduced classic Windows binary size removing mfc runtime.
- Now, the kill and status commands should work as expected on old Linux distributions. Documentation has been updated too.
- All threads now sleep on each iteration, reducing CPU usage.
- On Windows, now there is only an executable to manage both the service and the standalone server. This means that the server nolonger can be run in standalone mode without console output. Run debug.cmd instead.
Release 1.7
This new version brings the following enhancements:
- On supported Linux distributions, the server now runs in its own unprivileged user account.
- The server is compatible with both Python 2.x and 3.x, so you can run
python server.py
regardless of your Python version. - Added message of the day support.
Release 1.6
This release brings the following new features and bug fixes:
- Added support for IPV6 connections.
- New option loglevel to control how much information is displayed in the log. Set loglevel=2 to avoid displaying passwords, set to 0 to avoid displaying ip addresses.
- New option pemfile to choose an alternative pem file with an ssl private key and certificate.
- New option interface6 to bind the server to a specific IPV6 address. In some platforms, if you bind to all addresses, IPV6 socket will listen connections from IPV4 too.
- New option port6 to choose a different port for incoming IPV6 connections. Useful only when both IPV4 and IPV6 sockets are being used.
- The log now displays client ip addresses when connecting and disconnecting (loglevel 1 required).
- Code optimizations and cleaning.
- Fixed a regresion introduced in 1.5. International characters should be displayed in debug mode again.
- Updated pywin32 to build 221 for Windows builds.
- Updated Python to version 2.7.14 for Windows builds.
Release 1.5
This major update includes the following changes and enhancements:
- More information in the log file. Now you can see the date and time for an event, and ip address and source ports of the connected clients.
- The loggin operations now run on a separate thread, so the server should be a bit faster.
- Added a configuration file and command line parameters to change things like port, listening ip address or file locations.
- Added an uninstaller for Mac Os x
- Minor bugs fixed
Debian users: remember to uninstall your current server before installing this version. This is the last time you will have to do it, upgrades are supported since version 1.5!
Release 1.4.2
In this release, some important CPU usage problems have been fixed. Also, the server shouldn't crash on Windows.