mirror of https://github.com/Aidaho12/haproxy-wi
parent
8734ac10aa
commit
d84a6f531b
|
@ -123,6 +123,9 @@ Do this:
|
|||
$ cd /var/www/haproxy-wi/app
|
||||
$ ./update_db.py
|
||||
```
|
||||
and check executeble py files
|
||||
|
||||
If you see plain text, check section "Directory" in httpd conf
|
||||
|
||||
# Further development and support
|
||||
|
||||
|
|
16
app/add.py
16
app/add.py
|
@ -2,9 +2,9 @@
|
|||
import html
|
||||
import cgi
|
||||
import os
|
||||
from configparser import ConfigParser, ExtendedInterpolation
|
||||
import funct
|
||||
import sql
|
||||
from configparser import ConfigParser, ExtendedInterpolation
|
||||
|
||||
funct.head("Add")
|
||||
funct.check_config()
|
||||
|
@ -18,7 +18,7 @@ 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()
|
||||
form = cgi.FieldStorage()
|
||||
|
||||
if form.getvalue('mode') is not None:
|
||||
serv = form.getvalue('serv')
|
||||
|
@ -95,9 +95,6 @@ if form.getvalue('mode') is not None:
|
|||
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)
|
||||
|
@ -114,16 +111,17 @@ if form.getvalue('mode') is not None:
|
|||
for master in MASTERS:
|
||||
if master[0] != None:
|
||||
funct.upload_and_restart(master[0], cfg)
|
||||
|
||||
if funct.upload_and_restart(serv, cfg):
|
||||
print('<meta http-equiv="refresh" content="30; url=add.py?add=%s&conf=%s">' % (name, config_add))
|
||||
print('<meta http-equiv="refresh" content="5; url=add.py?add=%s&conf=%s">' % (name, config_add))
|
||||
|
||||
print('</div>')
|
||||
|
||||
|
||||
if form.getvalue('add') is not None:
|
||||
print('<h3 class="addSuc"> ' + form.getvalue('add') + ' was successfully added</h3>')
|
||||
print('<div class="added"><h3 class="addSuc"> ' + form.getvalue('add') + ' was successfully added</h3>')
|
||||
print('<div class="line3">')
|
||||
print(form.getvalue('conf'))
|
||||
print('</div>')
|
||||
print('</div></div>')
|
||||
|
||||
print('<div id="tabs">'
|
||||
'<ul>'
|
||||
|
|
|
@ -10,6 +10,7 @@ config = ConfigParser(interpolation=ExtendedInterpolation())
|
|||
config.read(path_config)
|
||||
|
||||
mysql_enable = config.get('mysql', 'enable')
|
||||
fullpath = config.get('main', 'fullpath')
|
||||
|
||||
if mysql_enable == '1':
|
||||
mysql_user = config.get('mysql', 'mysql_user')
|
||||
|
@ -19,7 +20,7 @@ if mysql_enable == '1':
|
|||
from mysql.connector import errorcode
|
||||
import mysql.connector as sqltool
|
||||
else:
|
||||
db = "haproxy-wi.db"
|
||||
db = fullpath+"/app/haproxy-wi.db"
|
||||
import sqlite3 as sqltool
|
||||
|
||||
def check_db():
|
||||
|
@ -54,15 +55,19 @@ def check_db():
|
|||
con.close()
|
||||
|
||||
def get_cur():
|
||||
if mysql_enable == '0':
|
||||
con = sqltool.connect(db, isolation_level=None)
|
||||
try:
|
||||
if mysql_enable == '0':
|
||||
con = sqltool.connect(db, isolation_level=None)
|
||||
else:
|
||||
con = sqltool.connect(user=mysql_user, password=mysql_password,
|
||||
host=mysql_host,
|
||||
database=mysql_db)
|
||||
cur = con.cursor()
|
||||
except sqltool.Error as e:
|
||||
print("An error occurred:", e)
|
||||
else:
|
||||
con = sqltool.connect(user=mysql_user, password=mysql_password,
|
||||
host=mysql_host,
|
||||
database=mysql_db)
|
||||
cur = con.cursor()
|
||||
return con, cur
|
||||
|
||||
return con, cur
|
||||
|
||||
def create_table():
|
||||
con, cur = get_cur()
|
||||
if mysql_enable == '0':
|
||||
|
|
12
app/funct.py
12
app/funct.py
|
@ -7,7 +7,6 @@ from paramiko import SSHClient
|
|||
from datetime import datetime
|
||||
from pytz import timezone
|
||||
from configparser import ConfigParser, ExtendedInterpolation
|
||||
import sql
|
||||
|
||||
path_config = "haproxy-webintarface.config"
|
||||
config = ConfigParser(interpolation=ExtendedInterpolation())
|
||||
|
@ -299,7 +298,7 @@ def get_auto_refresh(h2):
|
|||
'</div>'
|
||||
'</div>')
|
||||
|
||||
def ssh_connect(serv):
|
||||
def ssh_connect(serv, **kwargs):
|
||||
ssh = SSHClient()
|
||||
ssh.load_system_host_keys()
|
||||
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
||||
|
@ -309,7 +308,10 @@ def ssh_connect(serv):
|
|||
ssh.connect(hostname = serv, username = ssh_user_name, pkey = k )
|
||||
else:
|
||||
ssh.connect(hostname = serv, username = ssh_user_name, password = config.get('ssh', 'ssh_pass'))
|
||||
return ssh
|
||||
if kwargs.get('check'):
|
||||
return True
|
||||
else:
|
||||
return ssh
|
||||
except paramiko.AuthenticationException:
|
||||
print('<div class="alert alert-danger">Authentication failed, please verify your credentials</div>')
|
||||
return False
|
||||
|
@ -426,7 +428,6 @@ def upload_and_restart(serv, cfg, **kwargs):
|
|||
sftp.put(cfg, tmp_file)
|
||||
sftp.close()
|
||||
if kwargs.get("keepalived") == 1:
|
||||
print("123")
|
||||
if kwargs.get("just_save") == "save":
|
||||
commands = [ "mv -f " + tmp_file + " /etc/keepalived/keepalived.conf" ]
|
||||
else:
|
||||
|
@ -460,7 +461,7 @@ def upload_and_restart(serv, cfg, **kwargs):
|
|||
|
||||
print('</center>')
|
||||
ssh.close()
|
||||
|
||||
|
||||
def open_port_firewalld(cfg):
|
||||
try:
|
||||
conf = open(cfg, "r")
|
||||
|
@ -577,6 +578,7 @@ def ssh_command(serv, commands, **kwargs):
|
|||
ssh.close()
|
||||
|
||||
def choose_only_select(serv, **kwargs):
|
||||
import sql
|
||||
if kwargs.get("virt"):
|
||||
listhap = sql.get_dick_permit(virt=1)
|
||||
else:
|
||||
|
|
26
app/sql.py
26
app/sql.py
|
@ -1,8 +1,8 @@
|
|||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-"
|
||||
import cgi
|
||||
import create_db
|
||||
from configparser import ConfigParser, ExtendedInterpolation
|
||||
import create_db
|
||||
|
||||
path_config = "haproxy-webintarface.config"
|
||||
config = ConfigParser(interpolation=ExtendedInterpolation())
|
||||
|
@ -13,10 +13,9 @@ mysql_enable = config.get('mysql', 'enable')
|
|||
if mysql_enable == '1':
|
||||
from mysql.connector import errorcode
|
||||
import mysql.connector as sqltool
|
||||
else:
|
||||
db = "haproxy-wi.db"
|
||||
else:
|
||||
import sqlite3 as sqltool
|
||||
|
||||
|
||||
def add_user(user, email, password, role, group):
|
||||
con, cur = create_db.get_cur()
|
||||
sql = """INSERT INTO user (username, email, password, role, groups) VALUES ('%s', '%s', '%s', '%s', '%s')""" % (user, email, password, role, group)
|
||||
|
@ -92,7 +91,8 @@ def delete_group(id):
|
|||
con.rollback()
|
||||
else:
|
||||
return True
|
||||
cur.close()
|
||||
cur.close()
|
||||
con.close()
|
||||
|
||||
def update_group(name, descript, id):
|
||||
con, cur = create_db.get_cur()
|
||||
|
@ -321,15 +321,17 @@ def get_dick_permit(**kwargs):
|
|||
|
||||
def is_master(ip, **kwargs):
|
||||
con, cur = create_db.get_cur()
|
||||
sql = """ select slave.ip from servers left join servers as slave on servers.id = slave.master where servers.ip = '%s' """ % ip
|
||||
sql = """ select slave.ip from servers as master left join servers as slave on master.id = slave.master where master.ip = '%s' """ % ip
|
||||
if kwargs.get('master_slave'):
|
||||
sql = """ select master.hostname, master.ip, slave.hostname, slave.ip from servers as master left join servers as slave on master.id = slave.master where slave.master > 0 """
|
||||
try:
|
||||
cur.execute(sql)
|
||||
cur.execute(sql)
|
||||
except sqltool.Error as e:
|
||||
return False
|
||||
print("An error occurred:", e)
|
||||
else:
|
||||
return cur.fetchall()
|
||||
cur.close()
|
||||
con.close()
|
||||
|
||||
def show_update_servers():
|
||||
SERVERS = select_servers()
|
||||
|
@ -490,6 +492,7 @@ if form.getvalue('userdel') is not None:
|
|||
print("Ok")
|
||||
|
||||
if form.getvalue('newserver') is not None:
|
||||
import funct
|
||||
hostname = form.getvalue('newserver')
|
||||
ip = form.getvalue('newip')
|
||||
group = form.getvalue('newservergroup')
|
||||
|
@ -501,8 +504,11 @@ if form.getvalue('newserver') is not None:
|
|||
print(error_mess)
|
||||
else:
|
||||
print('Content-type: text/html\n')
|
||||
if add_server(hostname, ip, group, typeip, enable, master):
|
||||
show_update_server(hostname)
|
||||
if funct.ssh_connect(ip, check=1):
|
||||
if add_server(hostname, ip, group, typeip, enable, master):
|
||||
show_update_server(hostname)
|
||||
else:
|
||||
print('<span class="alert alert-danger" id="error"><a title="Close" id="errorMess"><b>X</b></a></span>')
|
||||
|
||||
if form.getvalue('serverdel') is not None:
|
||||
print('Content-type: text/html\n')
|
||||
|
|
|
@ -530,7 +530,7 @@ a:focus {
|
|||
padding-left: 10px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.alert-danger, .alert-info, .alert-success, .alert-warning {
|
||||
.alert-danger, .alert-info, .alert-success, .alert-warning, .added {
|
||||
width: 400px;
|
||||
margin-left: 15px;
|
||||
}
|
||||
|
@ -543,11 +543,10 @@ a:focus {
|
|||
margin-top: 15px;
|
||||
margin-bottom: -50px;
|
||||
}
|
||||
.alert-success {
|
||||
.alert-success, .added{
|
||||
color: #3c763d;
|
||||
background-color: #dff0d8;
|
||||
border-color: #d6e9c6;
|
||||
|
||||
}
|
||||
.alert-info {
|
||||
color: #0c5460;
|
||||
|
@ -559,6 +558,14 @@ a:focus {
|
|||
background-color: #fff3cd;
|
||||
border-color: #ffeeba;
|
||||
}
|
||||
.added {
|
||||
position: absolute;
|
||||
margin-left: 30px;
|
||||
margin-top: 790px;
|
||||
padding-bottom: 20px;
|
||||
padding-right: 20px;
|
||||
padding-left: 10px;
|
||||
}
|
||||
label {
|
||||
display: inline-block;
|
||||
max-width: 100%;
|
||||
|
|
Loading…
Reference in New Issue