Running gemini server diagnostics check against earthlight.xyz:1965
...
[IPv4Address] Establish a connection over an IPv4 address
Looking up IPv4 address for 'earthlight.xyz'
✓ '165.22.178.247'
Attempting to connect to 165.22.178.247:1965
✓ Successfully established connection
[IPv6Address] Establish a connection over an IPv6 address
Looking up IPv6 address for 'earthlight.xyz'
Found IPv4-mapped address, skipping check
[TLSVersion] Server must negotiate at least TLS v1.2, ideally TLS v1.3
Checking client library
'OpenSSL 1.1.1d 10 Sep 2019'
Determining highest supported TLS version
✓ Negotiated TLSv1.3
[TLSClaims] Certificate claims must be valid
Checking "Not Valid Before" timestamp
✓ 2019-10-12 14:41:39 UTC
Checking "Not Valid After" timestamp
x 2019-11-11 14:41:39 UTC
Checking subject claim matches server hostname
{'subject': ((('commonName', 'earthlight.xyz'),),), 'subjectAltName': ()}
✓ Hostname 'earthlight.xyz' matches claim
[TLSVerified] Certificate should be self-signed or have a trusted issuer
Connecting over verified SSL socket
Self-signed TLS certificate detected
[TLSRequired] Non-TLS requests should be refused
Sending non-TLS request
✓ Connection closed by server
[ConcurrentConnections] Server should support concurrent connections
Attempting to establish two connections
Opening socket 1
Opening socket 2
Closing socket 2
Closing socket 1
✓ Concurrent connections supported
[Homepage] Request the gemini homepage
Requesting URL
'gemini://earthlight.xyz/\r\n';
Response header
'20\ttext/gemini\r\n'
Status should return a success code (20 SUCCESS)
✓ Received status of '20'
Mime type should be "text/gemini"
✓ 'text/gemini'
Header should end with "\r\n"
✓ '\r\n'
Body should be non-empty
✓ '████████████████████████████▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒'
Body should terminate with a newline
✓ '\n'
Body should use "\r\n" line endings
x Invalid line ending '████████████████████████████▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓███████████████\n'
[HomepageRedirect] A URL with no trailing slash should redirect to the canonical resource
Requesting URL
'gemini://earthlight.xyz\r\n';
Response header
'20\ttext/gemini\r\n'
Status should return code 31 (REDIRECT PERMANENT)
x '20'
Meta should redirect to location "gemini://hostname/";
x 'text/gemini'
Header should end with "\r\n"
✓ '\r\n'
Body should be empty
x '████████████████████████████▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒'
[PageNotFound] Request a gemini URL that does not exist
Requesting URL
'gemini://earthlight.xyz/09pdsakjo73hjn12id78\r\n';
Response header
'51\tNot Found\r\n'
Status should return code 51 (NOT FOUND)
✓ '51'
Header should end with "\r\n"
✓ '\r\n'
Body should be empty
✓ ''
[RequestMissingCR] A request without a <CR> should timeout
Requesting URL
'gemini://earthlight.xyz/\n';
No response should be received
✓ The read operation timed out
[URLIncludePort] Send the URL with the port explicitly defined
Requesting URL
'gemini://earthlight.xyz/\r\n';
Response header
'20\ttext/gemini\r\n'
Status should return a success code (20 SUCCESS)
✓ Received status of '20'
[URLSchemeMissing] A URL without a scheme should be inferred as gemini
Requesting URL
'//earthlight.xyz/\r\n'
Response header
'51\tNot Found\r\n'
Status should return a success code (20 SUCCESS)
x Received status of '51'
[URLByIPAddress] Send the URL using the IPv4 address
Requesting URL
'gemini://165.22.178.247/\r\n';
Response header
'51\tNot Found\r\n'
Verify that the status matches your desired behavior
'51'
[URLInvalidUTF8Byte] Send a URL containing a non-UTF8 byte sequence
Requesting URL
'gemini://earthlight.xyz/\udcdc\r\n';
Response header
'59\tMalformed request\r\n'
Connection should either drop, or return 59 (BAD REQUEST)
✓ '59'
[URLMaxSize] Send a 1024 byte URL, the maximum allowed size
Requesting URL
'gemini://earthlight.xyz/0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\r\n';
Response header
"42\t[Errno 63] File name too long: '/usr/home/gem/jetforce/gemini-dir/0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'\r\n"
Status should return code 51 (NOT FOUND)
x '42'
[URLAboveMaxSize] Send a 1025 byte URL, above the maximum allowed size
Requesting URL
'gemini://earthlight.xyz/00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\r\n';
Response header
'59\tMalformed request\r\n'
Connection should either drop, or return 59 (BAD REQUEST)
✓ '59'
[URLWrongPort] A URL with an incorrect port number should be rejected
Requesting URL
'gemini://earthlight.xyz:443/\r\n';
Response header
'20\ttext/gemini\r\n'
Status should return a failure code (5X PERMANENT FAILURE)
x Received status of '20'
[URLWrongHost] A URL with a foreign hostname should be rejected
Requesting URL
'gemini://wikipedia.org/\r\n';
Response header
'51\tNot Found\r\n'
Status should return a failure code (5X PERMANENT FAILURE)
✓ Received status of '51'
[URLSchemeHTTP] Send a URL with an HTTP scheme
Requesting URL
'http://earthlight.xyz/\r\n';
Response header
'51\tNot Found\r\n'
Status should return a failure code (5X PERMANENT FAILURE)
✓ Received status of '51'
[URLSchemeHTTPS] Send a URL with an HTTPS scheme
Requesting URL
'https://earthlight.xyz/\r\n';
Response header
'51\tNot Found\r\n'
Status should return a failure code (5X PERMANENT FAILURE)
✓ Received status of '51'
[URLSchemeGopher] Send a URL with a Gopher scheme
Requesting URL
'gopher://earthlight.xyz/\r\n';
Response header
'51\tNot Found\r\n'
Status should return a failure code (5X PERMANENT FAILURE)
✓ Received status of '51'
[URLEmpty] Empty URLs should not be accepted by the server
Requesting URL
'\r\n'
Response header
'51\tNot Found\r\n'
Status should return a failure code (5X PERMANENT FAILURE)
✓ Received status of '51'
[URLRelative] Relative URLs should not be accepted by the server
Requesting URL
'/\r\n'
Response header
'51\tNot Found\r\n'
Status should return a failure code (5X PERMANENT FAILURE)
✓ Received status of '51'
[URLDotEscape] A URL should not be able to escape the root using dot notation
Requesting URL
'gemini://earthlight.xyz/../../\r\n';
Response header
'51\tNot Found\r\n'
Status should return a failure code (5X PERMANENT FAILURE)
✓ Received status of '51'
Done!
Response:
20 (Success), text/plain