#!/usr/bin/env python3 import html import cgi import os import funct import sql from configparser import ConfigParser, ExtendedInterpolation funct.head("Add") funct.check_config() funct.check_login() path_config = "haproxy-webintarface.config" config = ConfigParser(interpolation=ExtendedInterpolation()) config.read(path_config) funct.page_for_admin(level = 2) hap_configs_dir = config.get('configs', 'haproxy_save_configs_dir') cert_path = config.get('haproxy', 'cert_path') listhap = sql.get_dick_permit() form = cgi.FieldStorage() if form.getvalue('mode') is not None: serv = form.getvalue('serv') port = form.getvalue('port') mode = " mode " + form.getvalue('mode') ssl = "" if form.getvalue('balance') is not None: balance = " balance " + form.getvalue('balance') + "\n" else: balance = "" if form.getvalue('ip') is not None: ip = form.getvalue('ip') else: ip = "" if form.getvalue('listner') is not None: name = "listen " + form.getvalue('listner') backend = "" elif form.getvalue('frontend') is not None: name = "\nfrontend " + form.getvalue('frontend') backend = " default_backend " + form.getvalue('backend') + "\n" elif form.getvalue('backend') is not None: name = "backend " + form.getvalue('backend') backend = "" if form.getvalue('ssl') == "https" and form.getvalue('mode') != "tcp": ssl = "ssl crt " + cert_path + form.getvalue('cert') if form.getvalue('ssl-check') == "ssl-check": ssl_check = " ssl verify none" else: ssl_check = " ssl verify" else: ssl_check = "" if not ip and form.getvalue('port') is not None: bind = " bind *:"+ port + " " + ssl + "\n" elif port is not None: bind = " bind " + ip + ":" + port + " " + ssl + "\n" else: bind = "" if form.getvalue('default-check') == "1": if form.getvalue('check-servers') == "1": check = " check inter " + form.getvalue('inter') + " rise " + form.getvalue('rise') + " fall " + form.getvalue('fall') + ssl_check else: check = "" else: if form.getvalue('check-servers') != "1": check = "" else: check = " check" + ssl_check if form.getvalue('option') is not None: options = form.getvalue('option') i = options.split("\n") options_split = "" for j in i: options_split += " " + j + "\n" else: options_split = "" if form.getvalue('servers') is not None: servers = form.getvalue('servers') i = servers.split("\n") servers_split = "" for j in i: j = j.strip('\t\n\r') servers_split += " server " + j + check + "\n" else: servers_split = "" config_add = name + "\n" + bind + mode + "\n" + balance + options_split + backend + servers_split + "\n" os.chdir(config.get('configs', 'haproxy_save_configs_dir')) cfg = hap_configs_dir + serv + "-" + funct.get_data('config') + ".cfg" funct.get_config(serv, cfg) try: with open(cfg, "a") as conf: conf.write(config_add) except IOError: print("Can't read import config file") funct.logging(serv, "add.py add new %s" % name) print('
') MASTERS = sql.is_master(serv) for master in MASTERS: if master[0] != None: funct.upload_and_restart(master[0], cfg) if funct.upload_and_restart(serv, cfg): print('' % (name, config_add)) print('
') if form.getvalue('add') is not None: print('

' + form.getvalue('add') + ' was successfully added

') print('
') print(form.getvalue('conf')) print('
') print('
' '' '
' '
' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '

Add listen

Select server: ' '' '
Note: If you reconfigure Master server, Slave will reconfigured automatically
' '
Name:' '' '
IP and Port:' ':' '' '
IP for bind listner, if empty will be assignet on all IPs. Start typing ip, or press down.
If you use VRRP keep in blank. If you assign an IP, the slave will not start
' '
Mode: ' '' '' '' '' '' '' '
Balance: ' '' '
Optinons:' '' '' '
Servers:' '' '
' '' '' ' Default params: inter 2000 rise 2 fall 5' '
' '' '
') funct.get_button("Add Listen") print('
' '' '
' '
' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '

Add frontend

Select server: ' '' '
Note: If you reconfigure Master server, Slave will reconfigured automatically
' '
Name:' '' '
IP and Port:' ':' '' '
IP for bind listner, if empty will be assignet on all IPs. Start typing ip, or press down.
If you use VRRP keep in blank. If you assign an IP, the slave will not start
' '
Mode: ' '' '' '' '' '' '' '
Optinons:' '' '' '
Default backend' '
Start typing backend, or press down
' '' ' .' '

Note: If backend don\'t exist, you must create backend first.

' '
') funct.get_button("Add Frontend") print('
' '
' '' '
' '
' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '

Add backend

Select server: ' '' '
Note: If you reconfigure Master server, Slave will reconfigured automatically
' '
Name:' '' '
Mode: ' '' '' '' '' '' '' '
Balance: ' '' '
Optinons:' '' '' '
Servers:' '' '
' '' '' ' Default params: inter 2000 rise 2 fall 5' '
' '' '
') funct.get_button("Add Backend") print('
' '
' '' '' '' '' '' '' '' '' '' '' '' '
Upload SSL certificates' 'Certificate name' '' 'Paste certificate content here(?)' '
' '' '' '' '' '

' 'Upload' '
' '
' '
') funct.footer()