About TV's server
TV's server is a platform for network services. It's completely written in Assembly (x86 and x64) and because of that it is small in size with great performance. The source can be downloaded and edited for free. Network service can be added through a plug-in system that can be written in the programming language Assembly and C. Examples of a plug-in with source can be downloaded. By default TV's server is supplied with the TCP/IP and HTTP protocol and a control panel plug-in.
There is an older version (v2) still somewhere on the internet. This is a completly different project. Still nice to look in to, but I wouldn't recomment using it because of the bugs and unexpected crashes!
The goal of the rewrite was to:
make the software stable since the TV's server v1 and 2 had some issues that could make it crash after some time of running;
build a 64-bit version of the program to be able to handle big memory (theoretical up to 16 EB);
build a good plug-in system to create the ability to make it easy to create lots of protocols for TV's server.
TV's server can run as a service and can run as an user-process. The behavior depends on the command line and if the service is installed or not:
At default TV's server will try to start the service, if this fails it will run as a user-process
-b Force TV's server to run as a user-process.
-i Install the service. On Linux it tries to use Systemd, if not installed, it uses init.d.
-u Uninstall the service
-s Stop the service from running
-r Can hold a string with the registry key on Windows or the path to a directory in Linux. This registry key or directory will be used to read and save the settings. The default register key is HKEY_LOCAL_MACHINE\SOFTWARE\TV's software\TV's server v3. The default path is /etc/tvs-server-x64 or /etc/tvs-server-x86.
-n Can hold a string with an alternative service name. This can be used in combination with the start/stop/install/uninstall switch. TV's server v3 (x64) OR TV's server v3 (x86) are the default names
-d Can hold a string with an alternative service description that is used when the service is being installed
-l Can hold a string with the path to a log file that will be used to log. Without this switch TV's server will not produce a log file. On Linux, instead of a file path, you can simply enter 1 to write all the log to the console.
-o Can hold a string with the log options. By default, if switch -l is used, TV's server will log every message. This switch can be used to choose or combine status, warning and error messages. This can be one or a combination of the following options (for example: "me" will log normal status message and error message, but not warning message):
m normal status messages will be logged
w warning messages will be logged
e error messages will be logged
This project will never finish. I still would love to add more protocols, expand current protocols and add new features but time is an issue here and I have none. If you would like to help me (for instanse to create TLS, or the HTTP 2.0 protocol) you are welcome and I would love to hear where you publish this. If any I'll make time to fix bugs, so if you find any, please report them to me.
TV's server is designed to work on all Windows NT systems (NT, 2000, XP, Vista, 7, 8 & 10) and on Linux kernel 2.6 and up.
TCP/IP v6 support (required if you want to host a site running on TCP/IP v6);
on Linux TCP/IP v6 is dual stack, so it serves v4 and v6. On Windows it is single stack;
windows NT does not support TCP/IP v6;
Windows 2000 needs an update to support TCP/IP v6, named "Windows 2000 IPv6 preview". As the name clearly states, this is a preview and is not recommended to use this on an operating server;
Windows XP sp1 supports TCP/IP v6 when "Windows XP Advanced Networking Pack for Sp1" is installed;
Winows XP sp2 and higher do support TCP/IP v6 by default.
Intel x86 or AMD64 processor
Early intel x86 processors have a bug named Pentium F00F bug, these processors are not supported;
Early AMD64 processors don't support the instruction cmpxchg16b, these processors are not supported for the x64 executable. It is possible to run the x86 executable on these processors.