{ "comment": "Tests for HTTP request headers: SSLproxy, Connection, Upgrade, Keep-Alive, Accept-Encoding, Via, X-Forwarded-For, and Referer", "configs": { "1": { "proto": { "proto": "tcp" }, "client": { "ip": "127.0.0.1", "port": "8180" }, "server": { "ip": "127.0.0.1", "port": "9180" } }, "2": { "proto": { "proto": "ssl", "crt": "server.crt", "key": "server.key" }, "client": { "ip": "127.0.0.1", "port": "8446" }, "server": { "ip": "127.0.0.1", "port": "9446" } } }, "tests": { "1": { "comment": "Removes any extra SSLproxy line, and appends Connection: close", "states": { "1": { "testend": "client", "cmd": "send", "payload": "GET / HTTP/1.1\r\nHost: example.com\r\nSSLproxy: sslproxy\r\n\r\n" }, "2": { "testend": "server", "cmd": "recv", "payload": "GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n" } } }, "2": { "comment": "Removes all extra SSLproxy lines", "states": { "1": { "testend": "client", "cmd": "send", "payload": "GET / HTTP/1.1\r\nHost: example.com\r\nSSLproxy: sslproxy\r\nSSLproxy: sslproxy\r\n\r\n" }, "2": { "testend": "server", "cmd": "recv", "payload": "GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n" } } }, "3": { "comment": "Changes Connection header to close", "states": { "1": { "testend": "client", "cmd": "send", "payload": "GET / HTTP/1.1\r\nHost: example.com\r\nConnection: Keep-Alive\r\n\r\n" }, "2": { "testend": "server", "cmd": "recv", "payload": "GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n" } } }, "4": { "comment": "Suppresses upgrading to SSL/TLS, WebSockets or HTTP/2", "states": { "1": { "testend": "client", "cmd": "send", "payload": "GET / HTTP/1.1\r\nHost: example.com\r\nUpgrade: websocket\r\n\r\n" }, "2": { "testend": "server", "cmd": "recv", "payload": "GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n" } } }, "5": { "comment": "Removes Keep-Alive", "states": { "1": { "testend": "client", "cmd": "send", "payload": "GET / HTTP/1.1\r\nHost: example.com\r\nKeep-Alive: keep-alive\r\n\r\n" }, "2": { "testend": "server", "cmd": "recv", "payload": "GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n" } } }, "6": { "comment": "Does not remove Accept-Encoding by default (it's a config option)", "states": { "1": { "testend": "client", "cmd": "send", "payload": "GET / HTTP/1.1\r\nHost: example.com\r\nAccept-Encoding: encoding\r\n\r\n" }, "2": { "testend": "server", "cmd": "recv", "payload": "GET / HTTP/1.1\r\nHost: example.com\r\nAccept-Encoding: encoding\r\nConnection: close\r\n\r\n" } } }, "7": { "comment": "Removes Via", "states": { "1": { "testend": "client", "cmd": "send", "payload": "GET / HTTP/1.1\r\nHost: example.com\r\nVia: via\r\n\r\n" }, "2": { "testend": "server", "cmd": "recv", "payload": "GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n" } } }, "8": { "comment": "Removes X-Forwarded-For", "states": { "1": { "testend": "client", "cmd": "send", "payload": "GET / HTTP/1.1\r\nHost: example.com\r\nX-Forwarded-For: x-forwarded-for\r\n\r\n" }, "2": { "testend": "server", "cmd": "recv", "payload": "GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n" } } }, "9": { "comment": "Removes Referer", "states": { "1": { "testend": "client", "cmd": "send", "payload": "GET / HTTP/1.1\r\nHost: example.com\r\nReferer: referer\r\n\r\n" }, "2": { "testend": "server", "cmd": "recv", "payload": "GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n" } } } } }