예제 #1
0
def generate_backend_catchall_entry(dest_addr,
                                    mode,
                                    port,
                                    server_options,
                                    override_dest_addr=None):
    result = None
    if mode == 'http':
        result = config_format('use-server ' + dest_addr +
                               ' if { hdr_dom(host) -i ' + dest_addr + ' }')
        if override_dest_addr == None:
            result += config_format('server ' + dest_addr + ' ' + dest_addr +
                                    ':' + str(port) + ' ' + server_options +
                                    os.linesep)

        else:
            result += config_format('server ' + dest_addr + ' ' +
                                    override_dest_addr + ':' + str(port) +
                                    ' ' + server_options + os.linesep)

    elif mode == 'https':
        result = config_format('use-server ' + dest_addr +
                               ' if { req_ssl_sni -i ' + dest_addr + ' }')
        result += config_format('server ' + dest_addr + ' ' + dest_addr + ':' +
                                str(port) + ' ' + server_options + os.linesep)

    return result
def generate_frontend_catchall_entry(dest_addr, mode):
    if mode == 'http':
        return config_format('use_backend b_catchall_' + mode + ' if { hdr_dom(host) -i ' + dest_addr + ' }')
    
    elif mode == 'https':
        return config_format('use_backend b_catchall_' + mode + ' if { req_ssl_sni -i ' + dest_addr + ' }')
    
    return None
예제 #3
0
def generate_frontend_catchall_entry(dest_addr, mode):
    if mode == 'http':
        return config_format('use_backend b_catchall_' + mode +
                             ' if { hdr_dom(host) -i ' + dest_addr + ' }')

    elif mode == 'https':
        return config_format('use_backend b_catchall_' + mode +
                             ' if { req_ssl_sni -i ' + dest_addr + ' }')

    return None
def generate_global():
    result = config_format('global', False)
    result += config_format('daemon')
    result += config_format('maxconn 20000')
    result += config_format('user haproxy')
    result += config_format('group haproxy')
    result += config_format('stats socket /var/run/haproxy.sock mode 0600 level admin')
    result += config_format('log /dev/log local0 debug')
    result += config_format('pidfile /var/run/haproxy.pid')
    result += config_format('spread-checks 5')
    result += os.linesep
    return result
def generate_backend_catchall_entry(dest_addr, mode, port, server_options, override_dest_addr = None):
    result = None
    if mode == 'http':
        result = config_format('use-server ' + dest_addr + ' if { hdr_dom(host) -i ' + dest_addr + ' }')
        if override_dest_addr == None:
            result += config_format('server ' + dest_addr + ' ' + dest_addr + ':' + str(port) + ' ' + server_options + os.linesep)
        
        else:
            result += config_format('server ' + dest_addr + ' ' + override_dest_addr + ':' + str(port) + ' ' + server_options + os.linesep)
        
    
    elif mode == 'https':
        result = config_format('use-server ' + dest_addr + ' if { req_ssl_sni -i ' + dest_addr + ' }')
        result += config_format('server ' + dest_addr + ' ' + dest_addr + ':' + str(port) + ' ' + server_options + os.linesep)
    
    return result
예제 #6
0
def generate_global():
    result = config_format('global', False)
    result += config_format('daemon')
    result += config_format('maxconn 20000')
    result += config_format('user haproxy')
    result += config_format('group haproxy')
    result += config_format(
        'stats socket /var/run/haproxy.sock mode 0600 level admin')
    result += config_format('log /dev/log local0 debug')
    result += config_format('pidfile /var/run/haproxy.pid')
    result += config_format('spread-checks 5')
    result += os.linesep
    return result
def generate_stats(stats, bind_ip):
    if stats["password"] == "":
        stats["password"] = raw_input("Please enter a password for the HAproxy stats: ")
    result = config_format('listen stats', False)
    result += config_format('bind ' + bind_ip + ':' + str(stats["port"]))
    result += config_format('mode http')
    result += config_format('stats enable')
    result += config_format('stats realm Protected\\ Area')
    result += config_format('stats uri /')
    result += config_format('stats auth ' + stats["user"] + ':' + stats["password"])
    result += os.linesep
    return result
예제 #8
0
def generate_stats(stats, bind_ip):
    if stats["password"] == "":
        stats["password"] = raw_input(
            "Please enter a password for the HAproxy stats: ")
    result = config_format('listen stats', False)
    result += config_format('bind ' + bind_ip + ':' + str(stats["port"]))
    result += config_format('mode http')
    result += config_format('stats enable')
    result += config_format('stats realm Protected\\ Area')
    result += config_format('stats uri /')
    result += config_format('stats auth ' + stats["user"] + ':' +
                            stats["password"])
    result += os.linesep
    return result
예제 #9
0
def generate_deadend(mode):
    result = config_format('backend b_deadend_' + mode, False)
    if mode == 'http':
        result += config_format('mode http')
        result += config_format('option httplog')
        result += config_format('option accept-invalid-http-response')
        result += config_format('option http-server-close')

    elif mode == 'https':
        result += config_format('mode tcp')
        result += config_format('option tcplog')

    result += os.linesep
    return result
예제 #10
0
def generate_deadend(mode):
    result = config_format('backend b_deadend_' + mode, False)
    if mode == 'http':
        result += config_format('mode http')
        result += config_format('option httplog')
        result += config_format('option accept-invalid-http-response')
        result += config_format('option http-server-close')
    
    elif mode == 'https':
        result += config_format('mode tcp')
        result += config_format('option tcplog')
    

    result += os.linesep
    return result
예제 #11
0
def generate_backend(proxy_name, mode, dest_addr, port, server_options, is_catchall):
    result = config_format('backend b_' + proxy_name + '_' + mode, False)

    if mode == 'http':
        result += config_format('mode http')
        result += config_format('option httplog')
        result += config_format('option accept-invalid-http-response')

    
    elif mode == 'https':
        result += config_format('mode tcp')
        result += config_format('option tcplog')
    

    if not is_catchall:
        result += config_format('server ' + dest_addr + ' ' + dest_addr + ':' + str(port) + ' ' + server_options)
    
    return result + os.linesep
예제 #12
0
def generate_backend(proxy_name, mode, dest_addr, port, server_options,
                     is_catchall):
    result = config_format('backend b_' + proxy_name + '_' + mode, False)

    if mode == 'http':
        result += config_format('mode http')
        result += config_format('option httplog')
        result += config_format('option accept-invalid-http-response')

    elif mode == 'https':
        result += config_format('mode tcp')
        result += config_format('option tcplog')

    if not is_catchall:
        result += config_format('server ' + dest_addr + ' ' + dest_addr + ':' +
                                str(port) + ' ' + server_options)

    return result + os.linesep
예제 #13
0
def generate_frontend(proxy_name, mode, bind_ip, current_port, is_catchall):
    result = config_format('frontend f_' + proxy_name + '_' + mode, False)
    result += config_format('bind ' + bind_ip + ':' + str(current_port))

    if mode == 'http':
        result += config_format('mode http')
        result += config_format('option httplog')
        result += config_format('capture request header Host len 50')
        result += config_format('capture request header User-Agent len 150')
    
    elif mode == 'https':
        result += config_format('mode tcp')
        result += config_format('option tcplog')
        if is_catchall:
            result += config_format('tcp-request inspect-delay 5s')
            result += config_format('tcp-request content accept if { req_ssl_hello_type 1 }')
        
    
    if is_catchall:
        result += config_format('default_backend b_deadend_' + mode)
    
    else:
        result += config_format('default_backend b_' + proxy_name + '_' + mode)
    
    result += os.linesep
    return result
예제 #14
0
def generate_defaults():
    result = config_format('defaults', False)
    result += config_format('maxconn 19500')
    result += config_format('log global')
    result += config_format('mode http')
    result += config_format('option httplog')
    result += config_format('option abortonclose')
    result += config_format('option http-server-close')
    result += config_format('option persist')
    result += config_format('timeout connect 20s')
    result += config_format('timeout client 120s')
    result += config_format('timeout server 120s')
    result += config_format('timeout queue 120s')
    result += config_format('timeout check 10s')
    result += config_format('retries 3')
    result += os.linesep
    return result
예제 #15
0
def generate_frontend(proxy_name, mode, bind_ip, current_port, is_catchall):
    result = config_format('frontend f_' + proxy_name + '_' + mode, False)
    result += config_format('bind ' + bind_ip + ':' + str(current_port))

    if mode == 'http':
        result += config_format('mode http')
        result += config_format('option httplog')
        result += config_format('capture request header Host len 50')
        result += config_format('capture request header User-Agent len 150')

    elif mode == 'https':
        result += config_format('mode tcp')
        result += config_format('option tcplog')
        if is_catchall:
            result += config_format('tcp-request inspect-delay 5s')
            result += config_format(
                'tcp-request content accept if { req_ssl_hello_type 1 }')

    if is_catchall:
        result += config_format('default_backend b_deadend_' + mode)

    else:
        result += config_format('default_backend b_' + proxy_name + '_' + mode)

    result += os.linesep
    return result
예제 #16
0
def generate_defaults():
    result = config_format('defaults', False)
    result += config_format('maxconn 19500')
    result += config_format('log global')
    result += config_format('mode http')
    result += config_format('option httplog')
    result += config_format('option abortonclose')
    result += config_format('option http-server-close')
    result += config_format('option persist')
    result += config_format('timeout connect 20s')
    result += config_format('timeout client 120s')
    result += config_format('timeout server 120s')
    result += config_format('timeout queue 120s')
    result += config_format('timeout check 10s')
    result += config_format('retries 3')
    result += os.linesep
    return result