# Configuration file for testing (use both by sslh under
# test and the test script `t`)

foreground: true;
inetd: false;
numeric: true;
transparent: false;
timeout: 10;   # Probe test writes slowly
pidfile: "/tmp/sslh_test.pid";

syslog_facility: "auth"; 

# Logging configuration
# Value: 1: stdout; 2: syslog; 3: both
# Defaults should be sensible. Generally, you want *-error
# to be always enabled, to know if something is going wrong.
verbose-config: 1; #  print configuration at startup
verbose-config-error: 1;  # print configuration errors
verbose-connections: 1; # trace established incoming address to forward address
verbose-connections-error: 1; # connection errors
verbose-connections-try: 1; # connection attempts towards targets
verbose-fd: 0; # file descriptor activity, open/close/whatnot
verbose-packets: 1; # hexdump packets on which probing is done
verbose-probe-info: 0; # what's happening during the probe process
verbose-probe-error: 1; # failures and problems during probing
verbose-system-error: 1; # system call problem, i.e.  malloc, fork, failing
verbose-int-error: 1; # internal errors, the kind that should never happen

# List of interfaces on which we should listen
# Options:
listen:
(
    { host: "localhost"; port: "8080"; keepalive: true; },
    { host: "localhost"; port: "8081"; keepalive: true; },
    { host: "ip4-localhost"; is_udp: true; port: "8086"; }
);


# Tester beware: when using fork, the forked process loses
# track of buffers of other, concurrent connections. Memory
# leak tools thus complain each time a forked process stops.
 
protocols:
(
     { name: "ssh";  host: "localhost"; port: "9000"; fork: true; transparent: true; },
     { name: "socks5";  host: "localhost"; port: "9001";  },
     { name: "http";  host: "localhost"; port: "9002";  },
     { name: "tinc";  host: "localhost"; port: "9003"; },
     { name: "openvpn";  host: "localhost"; port: "9004"; },
     { name: "xmpp";  host: "localhost"; port: "9009"; },
     { name: "adb";  host: "localhost"; port: "9010"; },
     { name: "syslog"; host: "localhost"; port: "9013"; },
     { name: "regex"; host: "ip4-localhost"; is_udp: true; port: "9020";
         udp_timeout: 30;
         regex_patterns: [ "^foo" ];
     },
     { name: "regex"; host: "localhost"; port: "9011";
        regex_patterns: [ "^foo", "^bar" ];
        minlength: 4; 
        test_patterns: (    # this is used by the test script, not by sslh
            { pattern: "foo"; result: "ssh"; },  # After timeout
            { pattern: "fooo"; result: "regex"; },
            { pattern: "bar"; result: "ssh"; },
            { pattern: "barr"; result: "regex"; },
            { pattern: "barrrr"; result: "regex"; }
        );
     },
     { name: "tls"; host: "localhost"; port: "9021"; alpn_protocols: [ "alpn1", "alpn2" ]; sni_hostnames: [ "sni1" ]; },
     { name: "tls"; host: "localhost"; port: "9022"; alpn_protocols: [ "alpn1", "alpn2" ]; sni_hostnames: [ "sni2", "sni3" ]; },
     { name: "tls"; host: "localhost"; port: "9023"; alpn_protocols: [ "alpn3" ]; },
     { name: "tls"; host: "localhost"; port: "9024"; sni_hostnames: [ "sni3" ]; },
     { name: "tls"; host: "localhost"; port: "9025"; },
     { name: "anyprot";  host: "localhost"; port: "9099";  }
);

on_timeout: "ssh";