The goal is to write a program that reads a list of servers from a text file and does some tests against them. The text file contains one server hostname (for example [login to view URL]) or an IP address per line, and the tests to run are: - ping - SSH up (by connecting to a port) - FTP up (by connecting to a port) - Web server up (by connecting to a port) - DNS resolution (i.e. [login to view URL] exists or not). - DNS and RDNS match (for example, if [login to view URL] points to 1.2.3.4 but 1.3.2.4 doesn't resolve back to [login to view URL] that's a mismatch). - Certificate in https contains a configurable string (for example if you connect to [login to view URL] does it contain the string "example ltd", or something else)? - Certificate in https is valid (not revoked or expired) The application will report a list of servers that passes all tests and those that don't, and in ones that don't details of the issue(s) found. The list of servers can be rather large so configurable multithreading (as in "how many servers to tests at the same time") is needed. Results should be available in real time, not after everything has been run. Some configuration is expected, for example for timeout values or port numbers for services. A decent way to select hosts is also needed, i.e. you read the whole list from the text file but being able to select just some (either by manually clicking or them, or by filtering by hostname) will be handy.