mirror of https://github.com/Aidaho12/haproxy-wi
802 lines
22 KiB
Python
802 lines
22 KiB
Python
from datetime import datetime
|
|
|
|
from playhouse.migrate import *
|
|
from playhouse.shortcuts import ReconnectMixin
|
|
from playhouse.sqlite_ext import SqliteExtDatabase
|
|
|
|
import app.modules.roxy_wi_tools as roxy_wi_tools
|
|
|
|
get_config = roxy_wi_tools.GetConfigVar()
|
|
mysql_enable = get_config.get_config_var('mysql', 'enable')
|
|
|
|
if mysql_enable == '1':
|
|
from playhouse.mysql_ext import JSONField
|
|
else:
|
|
from playhouse.sqlite_ext import JSONField
|
|
|
|
|
|
class ReconnectMySQLDatabase(ReconnectMixin, MySQLDatabase):
|
|
pass
|
|
|
|
|
|
def connect(get_migrator=None):
|
|
if mysql_enable == '1':
|
|
mysql_db = get_config.get_config_var('mysql', 'mysql_db')
|
|
kwargs = {
|
|
"user": get_config.get_config_var('mysql', 'mysql_user'),
|
|
"password": get_config.get_config_var('mysql', 'mysql_password'),
|
|
"host": get_config.get_config_var('mysql', 'mysql_host'),
|
|
"port": int(get_config.get_config_var('mysql', 'mysql_port'))
|
|
}
|
|
conn = ReconnectMySQLDatabase(mysql_db, **kwargs)
|
|
migrator = MySQLMigrator(conn)
|
|
else:
|
|
db = "/var/lib/roxy-wi/roxy-wi.db"
|
|
conn = SqliteExtDatabase(db, pragmas=(
|
|
('cache_size', -1024 * 64), # 64MB page-cache.
|
|
('journal_mode', 'wal'),
|
|
('foreign_keys', 1)
|
|
))
|
|
migrator = SqliteMigrator(conn)
|
|
if get_migrator:
|
|
return migrator
|
|
else:
|
|
return conn
|
|
|
|
|
|
class BaseModel(Model):
|
|
class Meta:
|
|
database = connect()
|
|
|
|
|
|
class User(BaseModel):
|
|
user_id = AutoField(column_name='id')
|
|
username = CharField(constraints=[SQL('UNIQUE')])
|
|
email = CharField(constraints=[SQL('UNIQUE')])
|
|
password = CharField(null=True)
|
|
role_id = CharField()
|
|
group_id = CharField()
|
|
ldap_user = IntegerField(constraints=[SQL('DEFAULT "0"')])
|
|
enabled = IntegerField(constraints=[SQL('DEFAULT "1"')])
|
|
user_services = CharField(constraints=[SQL('DEFAULT "1 2 3 4 5 6"')])
|
|
last_login_date = DateTimeField(constraints=[SQL('DEFAULT "0000-00-00 00:00:00"')])
|
|
last_login_ip = CharField(null=True)
|
|
|
|
class Meta:
|
|
table_name = 'user'
|
|
|
|
|
|
class Server(BaseModel):
|
|
server_id = AutoField(column_name='id')
|
|
hostname = CharField()
|
|
ip = CharField(constraints=[SQL('UNIQUE')])
|
|
group_id = CharField()
|
|
type_ip = IntegerField(constraints=[SQL('DEFAULT 0')])
|
|
enabled = IntegerField(constraints=[SQL('DEFAULT 1')])
|
|
master = IntegerField(constraints=[SQL('DEFAULT 0')])
|
|
cred_id = IntegerField(constraints=[SQL('DEFAULT 1')])
|
|
haproxy_alert = IntegerField(constraints=[SQL('DEFAULT 0')])
|
|
haproxy_metrics = IntegerField(constraints=[SQL('DEFAULT 0')])
|
|
port = IntegerField(constraints=[SQL('DEFAULT 22')])
|
|
description = CharField(null=True)
|
|
haproxy_active = IntegerField(constraints=[SQL('DEFAULT 0')])
|
|
keepalived = IntegerField(constraints=[SQL('DEFAULT 0')])
|
|
nginx = IntegerField(constraints=[SQL('DEFAULT 0')])
|
|
haproxy = IntegerField(constraints=[SQL('DEFAULT 0')])
|
|
pos = IntegerField(constraints=[SQL('DEFAULT 0')])
|
|
nginx_active = IntegerField(constraints=[SQL('DEFAULT 0')])
|
|
firewall_enable = IntegerField(constraints=[SQL('DEFAULT 0')])
|
|
nginx_alert = IntegerField(constraints=[SQL('DEFAULT 0')])
|
|
protected = IntegerField(constraints=[SQL('DEFAULT 0')])
|
|
nginx_metrics = IntegerField(constraints=[SQL('DEFAULT 0')])
|
|
keepalived_active = IntegerField(constraints=[SQL('DEFAULT 0')])
|
|
keepalived_alert = IntegerField(constraints=[SQL('DEFAULT 0')])
|
|
apache = IntegerField(constraints=[SQL('DEFAULT 0')])
|
|
apache_active = IntegerField(constraints=[SQL('DEFAULT 0')])
|
|
apache_alert = IntegerField(constraints=[SQL('DEFAULT 0')])
|
|
apache_metrics = IntegerField(constraints=[SQL('DEFAULT 0')])
|
|
|
|
class Meta:
|
|
table_name = 'servers'
|
|
|
|
|
|
class Role(BaseModel):
|
|
role_id = AutoField(column_name='id')
|
|
name = CharField(constraints=[SQL('UNIQUE')])
|
|
description = CharField()
|
|
|
|
class Meta:
|
|
table_name = 'role'
|
|
|
|
|
|
class Telegram(BaseModel):
|
|
id = AutoField()
|
|
token = CharField()
|
|
chanel_name = CharField()
|
|
group_id = IntegerField()
|
|
|
|
class Meta:
|
|
table_name = 'telegram'
|
|
|
|
|
|
class Slack(BaseModel):
|
|
id = AutoField()
|
|
token = CharField()
|
|
chanel_name = CharField()
|
|
group_id = IntegerField()
|
|
|
|
class Meta:
|
|
table_name = 'slack'
|
|
|
|
|
|
class MM(BaseModel):
|
|
id = AutoField()
|
|
token = CharField()
|
|
chanel_name = CharField()
|
|
group_id = IntegerField()
|
|
|
|
class Meta:
|
|
table_name = 'mattermost'
|
|
|
|
|
|
class PD(BaseModel):
|
|
id = AutoField()
|
|
token = CharField()
|
|
chanel_name = CharField()
|
|
group_id = IntegerField()
|
|
|
|
class Meta:
|
|
table_name = 'pd'
|
|
|
|
|
|
class Setting(BaseModel):
|
|
param = CharField()
|
|
value = CharField(null=True)
|
|
section = CharField()
|
|
desc = CharField()
|
|
group_id = IntegerField(null=True, constraints=[SQL('DEFAULT 1')])
|
|
|
|
class Meta:
|
|
table_name = 'settings'
|
|
primary_key = False
|
|
constraints = [SQL('UNIQUE (param, group_id)')]
|
|
|
|
|
|
class Groups(BaseModel):
|
|
group_id = AutoField(column_name='id')
|
|
name = CharField(constraints=[SQL('UNIQUE')])
|
|
description = CharField(null=True)
|
|
|
|
class Meta:
|
|
table_name = 'groups'
|
|
|
|
|
|
class UserGroups(BaseModel):
|
|
user_id = IntegerField()
|
|
user_group_id = IntegerField()
|
|
user_role_id = IntegerField()
|
|
|
|
class Meta:
|
|
table_name = 'user_groups'
|
|
primary_key = False
|
|
constraints = [SQL('UNIQUE (user_id, user_group_id)')]
|
|
|
|
|
|
class Cred(BaseModel):
|
|
id = AutoField()
|
|
name = CharField()
|
|
key_enabled = IntegerField(constraints=[SQL('DEFAULT 1')])
|
|
username = CharField()
|
|
password = CharField(null=True)
|
|
group_id = IntegerField(constraints=[SQL('DEFAULT 1')])
|
|
passphrase = CharField(null=True)
|
|
shared = IntegerField(constraints=[SQL('DEFAULT 0')])
|
|
|
|
class Meta:
|
|
table_name = 'cred'
|
|
constraints = [SQL('UNIQUE (name, `group_id`)')]
|
|
|
|
|
|
class Backup(BaseModel):
|
|
id = AutoField()
|
|
server_id = CharField()
|
|
rserver = CharField()
|
|
rpath = CharField()
|
|
type = CharField(column_name='type')
|
|
time = CharField()
|
|
cred_id = IntegerField()
|
|
description = CharField(null=True)
|
|
|
|
class Meta:
|
|
table_name = 'backups'
|
|
|
|
|
|
class S3Backup(BaseModel):
|
|
id = AutoField()
|
|
server_id = CharField()
|
|
s3_server = CharField()
|
|
bucket = CharField()
|
|
secret_key = CharField()
|
|
access_key = CharField()
|
|
time = CharField()
|
|
description = CharField(null=True)
|
|
|
|
class Meta:
|
|
table_name = 's3_backups'
|
|
|
|
|
|
class Metrics(BaseModel):
|
|
serv = CharField()
|
|
curr_con = IntegerField()
|
|
cur_ssl_con = IntegerField()
|
|
sess_rate = IntegerField()
|
|
max_sess_rate = IntegerField()
|
|
date = DateTimeField(default=datetime.now)
|
|
|
|
class Meta:
|
|
table_name = 'metrics'
|
|
primary_key = False
|
|
|
|
|
|
class WafMetrics(BaseModel):
|
|
serv = CharField()
|
|
conn = IntegerField()
|
|
date = DateTimeField(default=datetime.now)
|
|
|
|
class Meta:
|
|
table_name = 'waf_metrics'
|
|
primary_key = False
|
|
|
|
|
|
class NginxMetrics(BaseModel):
|
|
serv = CharField()
|
|
conn = IntegerField()
|
|
date = DateTimeField(default=datetime.now)
|
|
|
|
class Meta:
|
|
table_name = 'nginx_metrics'
|
|
primary_key = False
|
|
|
|
|
|
class ApacheMetrics(BaseModel):
|
|
serv = CharField()
|
|
conn = IntegerField()
|
|
date = DateTimeField(default=datetime.now)
|
|
|
|
class Meta:
|
|
table_name = 'apache_metrics'
|
|
primary_key = False
|
|
|
|
|
|
class Version(BaseModel):
|
|
version = CharField()
|
|
|
|
class Meta:
|
|
table_name = 'version'
|
|
primary_key = False
|
|
|
|
|
|
class Option(BaseModel):
|
|
id = AutoField()
|
|
options = CharField()
|
|
groups = CharField()
|
|
|
|
class Meta:
|
|
table_name = 'options'
|
|
|
|
|
|
class SavedServer(BaseModel):
|
|
id = AutoField()
|
|
server = CharField()
|
|
description = CharField(null=True)
|
|
groups = CharField()
|
|
|
|
class Meta:
|
|
table_name = 'saved_servers'
|
|
|
|
|
|
class Waf(BaseModel):
|
|
server_id = IntegerField()
|
|
metrics = IntegerField()
|
|
|
|
class Meta:
|
|
table_name = 'waf'
|
|
primary_key = False
|
|
constraints = [SQL('UNIQUE (server_id)')]
|
|
|
|
|
|
class WafRules(BaseModel):
|
|
id = AutoField()
|
|
serv = CharField()
|
|
rule_name = CharField()
|
|
rule_file = CharField()
|
|
desc = TextField(null=True)
|
|
en = IntegerField(constraints=[SQL('DEFAULT 1')])
|
|
service = CharField(constraints=[SQL('DEFAULT "haproxy"')])
|
|
|
|
class Meta:
|
|
table_name = 'waf_rules'
|
|
constraints = [SQL('UNIQUE (serv, rule_name, service)')]
|
|
|
|
|
|
class PortScannerSettings(BaseModel):
|
|
server_id = IntegerField()
|
|
user_group_id = IntegerField()
|
|
enabled = IntegerField()
|
|
notify = IntegerField()
|
|
history = IntegerField()
|
|
|
|
class Meta:
|
|
table_name = 'port_scanner_settings'
|
|
primary_key = False
|
|
constraints = [SQL('UNIQUE (server_id)')]
|
|
|
|
|
|
class PortScannerPorts(BaseModel):
|
|
serv = CharField()
|
|
user_group_id = IntegerField()
|
|
port = IntegerField()
|
|
service_name = CharField()
|
|
date = DateTimeField(default=datetime.now)
|
|
|
|
class Meta:
|
|
table_name = 'port_scanner_ports'
|
|
primary_key = False
|
|
|
|
|
|
class PortScannerHistory(BaseModel):
|
|
serv = CharField()
|
|
port = IntegerField()
|
|
status = CharField()
|
|
service_name = CharField()
|
|
date = DateTimeField(default=datetime.now)
|
|
|
|
class Meta:
|
|
table_name = 'port_scanner_history'
|
|
primary_key = False
|
|
|
|
|
|
class MetricsHttpStatus(BaseModel):
|
|
serv = CharField()
|
|
ok_ans = IntegerField(column_name='2xx')
|
|
redir_ans = IntegerField(column_name='3xx')
|
|
not_found_ans = IntegerField(column_name='4xx')
|
|
err_ans = IntegerField(column_name='5xx')
|
|
date = DateTimeField(default=datetime.now)
|
|
|
|
class Meta:
|
|
table_name = 'metrics_http_status'
|
|
primary_key = False
|
|
|
|
|
|
class SMON(BaseModel):
|
|
id = AutoField()
|
|
name = CharField(null=True)
|
|
port = IntegerField(null=True)
|
|
status = IntegerField(constraints=[SQL('DEFAULT 1')])
|
|
en = IntegerField(constraints=[SQL('DEFAULT 1')])
|
|
desc = CharField(null=True)
|
|
response_time = CharField(null=True)
|
|
time_state = DateTimeField(constraints=[SQL('DEFAULT "0000-00-00 00:00:00"')])
|
|
group = CharField(null=True)
|
|
http = CharField(null=True)
|
|
body = CharField(null=True)
|
|
body_status = IntegerField(constraints=[SQL('DEFAULT 1')])
|
|
telegram_channel_id = IntegerField(null=True)
|
|
user_group = IntegerField()
|
|
slack_channel_id = IntegerField(null=True)
|
|
ssl_expire_warning_alert = IntegerField(constraints=[SQL('DEFAULT 0')])
|
|
ssl_expire_critical_alert = IntegerField(constraints=[SQL('DEFAULT 0')])
|
|
ssl_expire_date = CharField(null=True)
|
|
pd_channel_id = IntegerField(null=True)
|
|
check_type = CharField(constraints=[SQL('DEFAULT "tcp"')])
|
|
mm_channel_id = IntegerField(null=True)
|
|
|
|
class Meta:
|
|
table_name = 'smon'
|
|
constraints = [SQL('UNIQUE (name, port, http, body)')]
|
|
|
|
|
|
class Alerts(BaseModel):
|
|
message = CharField()
|
|
level = CharField()
|
|
ip = CharField()
|
|
port = IntegerField()
|
|
user_group = IntegerField(constraints=[SQL('DEFAULT 1')])
|
|
service = CharField()
|
|
date = DateTimeField(default=datetime.now)
|
|
|
|
class Meta:
|
|
table_name = 'alerts'
|
|
primary_key = False
|
|
|
|
|
|
class GeoipCodes(BaseModel):
|
|
code = CharField()
|
|
name = CharField()
|
|
|
|
class Meta:
|
|
table_name = 'geoip_codes'
|
|
primary_key = False
|
|
constraints = [SQL('UNIQUE (code, name)')]
|
|
|
|
|
|
class ServiceSetting(BaseModel):
|
|
server_id = IntegerField()
|
|
service = CharField()
|
|
setting = CharField()
|
|
value = CharField()
|
|
|
|
class Meta:
|
|
table_name = 'service_settings'
|
|
primary_key = False
|
|
constraints = [SQL('UNIQUE (server_id, service, setting)')]
|
|
|
|
|
|
class ActionHistory(BaseModel):
|
|
service = CharField(null=True)
|
|
server_id = IntegerField(null=True)
|
|
user_id = IntegerField(null=True)
|
|
action = CharField(null=True)
|
|
ip = CharField(null=True)
|
|
date = DateTimeField(default=datetime.now)
|
|
server_ip = CharField(null=True)
|
|
hostname = CharField(null=True)
|
|
|
|
class Meta:
|
|
table_name = 'action_history'
|
|
primary_key = False
|
|
|
|
|
|
class ConfigVersion(BaseModel):
|
|
id = AutoField()
|
|
server_id = IntegerField()
|
|
user_id = IntegerField()
|
|
service = CharField()
|
|
local_path = CharField()
|
|
remote_path = CharField()
|
|
diff = TextField()
|
|
message = CharField(null=True)
|
|
date = DateTimeField(default=datetime.now)
|
|
|
|
class Meta:
|
|
table_name = 'config_versions'
|
|
|
|
|
|
class SystemInfo(BaseModel):
|
|
id = AutoField()
|
|
server_id = IntegerField()
|
|
os_info = CharField()
|
|
sys_info = CharField()
|
|
cpu = CharField()
|
|
ram = CharField()
|
|
disks = CharField()
|
|
network = TextField()
|
|
|
|
class Meta:
|
|
table_name = 'system_info'
|
|
|
|
|
|
class Services(BaseModel):
|
|
service_id = IntegerField(null=True)
|
|
service = CharField(null=True)
|
|
slug = CharField(null=True)
|
|
|
|
class Meta:
|
|
table_name = 'services'
|
|
primary_key = False
|
|
constraints = [SQL('UNIQUE (service_id, service)')]
|
|
|
|
|
|
class UserName(BaseModel):
|
|
UserName = CharField(null=True)
|
|
Status = IntegerField(constraints=[SQL('DEFAULT 0')])
|
|
Plan = CharField(null=True)
|
|
Method = CharField(null=True)
|
|
|
|
class Meta:
|
|
table_name = 'user_name'
|
|
primary_key = False
|
|
|
|
|
|
class GitSetting(BaseModel):
|
|
id = AutoField()
|
|
server_id = ForeignKeyField(Server, on_delete='Cascade')
|
|
service_id = IntegerField()
|
|
time = CharField()
|
|
repo = CharField(null=True)
|
|
branch = CharField(null=True)
|
|
cred_id = IntegerField()
|
|
description = CharField(null=True)
|
|
|
|
class Meta:
|
|
table_name = 'git_setting'
|
|
constraints = [SQL('UNIQUE (server_id, service_id)')]
|
|
|
|
|
|
class CheckerSetting(BaseModel):
|
|
id = AutoField()
|
|
server_id = ForeignKeyField(Server, on_delete='Cascade')
|
|
service_id = IntegerField()
|
|
email = IntegerField(constraints=[SQL('DEFAULT 1')])
|
|
telegram_id = IntegerField(constraints=[SQL('DEFAULT 0')])
|
|
slack_id = IntegerField(constraints=[SQL('DEFAULT 0')])
|
|
service_alert = IntegerField(constraints=[SQL('DEFAULT 1')])
|
|
backend_alert = IntegerField(constraints=[SQL('DEFAULT 1')])
|
|
maxconn_alert = IntegerField(constraints=[SQL('DEFAULT 1')])
|
|
pd_id = IntegerField(constraints=[SQL('DEFAULT 0')])
|
|
mm_id = IntegerField(constraints=[SQL('DEFAULT 0')])
|
|
|
|
class Meta:
|
|
table_name = 'checker_setting'
|
|
constraints = [SQL('UNIQUE (server_id, service_id)')]
|
|
|
|
|
|
class WafNginx(BaseModel):
|
|
id = AutoField()
|
|
server_id = ForeignKeyField(Server, on_delete='Cascade')
|
|
|
|
class Meta:
|
|
table_name = 'waf_nginx'
|
|
constraints = [SQL('UNIQUE (server_id)')]
|
|
|
|
|
|
class ServiceStatus(BaseModel):
|
|
server_id = ForeignKeyField(Server, on_delete='Cascade')
|
|
service_id = IntegerField()
|
|
service_check = CharField()
|
|
status = IntegerField(constraints=[SQL('DEFAULT 1')])
|
|
|
|
class Meta:
|
|
table_name = 'services_statuses'
|
|
constraints = [SQL('UNIQUE (server_id, service_id, service_check)')]
|
|
|
|
|
|
class KeepaliveRestart(BaseModel):
|
|
server_id = ForeignKeyField(Server, on_delete='Cascade')
|
|
service = CharField()
|
|
restarted = IntegerField(constraints=[SQL('DEFAULT 1')])
|
|
|
|
class Meta:
|
|
table_name = 'keepaplive_restarted'
|
|
constraints = [SQL('UNIQUE (server_id, service)')]
|
|
|
|
|
|
class SmonHistory(BaseModel):
|
|
smon_id = ForeignKeyField(SMON, on_delete='Cascade')
|
|
check_id = IntegerField()
|
|
response_time = FloatField()
|
|
status = IntegerField()
|
|
mes = CharField()
|
|
date = DateTimeField(default=datetime.now)
|
|
|
|
class Meta:
|
|
table_name = 'smon_history'
|
|
primary_key = False
|
|
|
|
|
|
class SmonAgent(BaseModel):
|
|
id = AutoField()
|
|
server_id = ForeignKeyField(Server, on_delete='Cascade')
|
|
name = CharField()
|
|
uuid = CharField()
|
|
enabled = IntegerField(constraints=[SQL('DEFAULT 1')])
|
|
desc = CharField()
|
|
|
|
class Meta:
|
|
table_name = 'smon_agents'
|
|
|
|
|
|
class SmonTcpCheck(BaseModel):
|
|
smon_id = ForeignKeyField(SMON, on_delete='Cascade', unique=True)
|
|
ip = CharField()
|
|
port = IntegerField()
|
|
interval = IntegerField(constraints=[SQL('DEFAULT 120')])
|
|
agent_id = IntegerField(constraints=[SQL('DEFAULT 1')])
|
|
|
|
class Meta:
|
|
table_name = 'smon_tcp_check'
|
|
primary_key = False
|
|
|
|
|
|
class SmonHttpCheck(BaseModel):
|
|
smon_id = ForeignKeyField(SMON, on_delete='Cascade', unique=True)
|
|
url = CharField()
|
|
method = CharField(constraints=[SQL('DEFAULT "get"')])
|
|
accepted_status_codes = CharField(constraints=[SQL('DEFAULT "200"')])
|
|
body = CharField(null=True)
|
|
interval = IntegerField(constraints=[SQL('DEFAULT 120')])
|
|
agent_id = IntegerField(constraints=[SQL('DEFAULT 1')])
|
|
|
|
class Meta:
|
|
table_name = 'smon_http_check'
|
|
primary_key = False
|
|
|
|
|
|
class SmonPingCheck(BaseModel):
|
|
smon_id = ForeignKeyField(SMON, on_delete='Cascade', unique=True)
|
|
ip = CharField()
|
|
packet_size = IntegerField(constraints=[SQL('DEFAULT 56')])
|
|
interval = IntegerField(constraints=[SQL('DEFAULT 120')])
|
|
agent_id = IntegerField(constraints=[SQL('DEFAULT 1')])
|
|
|
|
class Meta:
|
|
table_name = 'smon_ping_check'
|
|
primary_key = False
|
|
|
|
|
|
class SmonDnsCheck(BaseModel):
|
|
smon_id = ForeignKeyField(SMON, on_delete='Cascade', unique=True)
|
|
ip = CharField()
|
|
port = IntegerField(constraints=[SQL('DEFAULT 53')])
|
|
resolver = CharField()
|
|
record_type = CharField()
|
|
interval = IntegerField(constraints=[SQL('DEFAULT 120')])
|
|
agent_id = IntegerField(constraints=[SQL('DEFAULT 1')])
|
|
|
|
class Meta:
|
|
table_name = 'smon_dns_check'
|
|
primary_key = False
|
|
|
|
|
|
class SmonStatusPage(BaseModel):
|
|
id = AutoField()
|
|
name = CharField()
|
|
slug = CharField(unique=True)
|
|
desc = CharField(null=True)
|
|
group_id = IntegerField()
|
|
|
|
class Meta:
|
|
table_name = 'smon_status_pages'
|
|
|
|
|
|
class SmonStatusPageCheck(BaseModel):
|
|
page_id = ForeignKeyField(SmonStatusPage, on_delete='Cascade')
|
|
check_id = ForeignKeyField(SMON, on_delete='Cascade')
|
|
|
|
class Meta:
|
|
table_name = 'smon_status_page_checks'
|
|
primary_key = False
|
|
|
|
|
|
class RoxyTool(BaseModel):
|
|
id = AutoField()
|
|
name = CharField()
|
|
current_version = CharField()
|
|
new_version = CharField()
|
|
is_roxy = IntegerField()
|
|
desc = CharField()
|
|
|
|
class Meta:
|
|
table_name = 'roxy_tools'
|
|
constraints = [SQL('UNIQUE (name)')]
|
|
|
|
|
|
class HaCluster(BaseModel):
|
|
id = AutoField()
|
|
name = CharField()
|
|
syn_flood = IntegerField(constraints=[SQL('DEFAULT "0"')])
|
|
group_id = IntegerField()
|
|
description = CharField()
|
|
pos = IntegerField(constraints=[SQL('DEFAULT "0"')])
|
|
|
|
class Meta:
|
|
table_name = 'ha_clusters'
|
|
|
|
|
|
class HaClusterRouter(BaseModel):
|
|
id = AutoField()
|
|
cluster_id = ForeignKeyField(HaCluster, on_delete='Cascade')
|
|
default = IntegerField(constraints=[SQL('DEFAULT "0"')])
|
|
|
|
class Meta:
|
|
table_name = 'ha_cluster_routers'
|
|
|
|
|
|
class HaClusterSlave(BaseModel):
|
|
id = AutoField()
|
|
cluster_id = ForeignKeyField(HaCluster, on_delete='Cascade')
|
|
server_id = ForeignKeyField(Server, on_delete='Cascade')
|
|
master = IntegerField(constraints=[SQL('DEFAULT "0"')])
|
|
eth = CharField(constraints=[SQL('DEFAULT "eth0"')])
|
|
router_id = ForeignKeyField(HaClusterRouter, on_delete='Cascade')
|
|
|
|
class Meta:
|
|
table_name = 'ha_cluster_slaves'
|
|
constraints = [SQL('UNIQUE (cluster_id, server_id, router_id)')]
|
|
|
|
|
|
class HaClusterVip(BaseModel):
|
|
id = AutoField()
|
|
cluster_id = ForeignKeyField(HaCluster, on_delete='Cascade')
|
|
router_id = ForeignKeyField(HaClusterRouter, on_delete='Cascade')
|
|
return_master = IntegerField(constraints=[SQL('DEFAULT "0"')])
|
|
vip = CharField()
|
|
use_src = IntegerField(constraints=[SQL('DEFAULT "0"')])
|
|
|
|
class Meta:
|
|
table_name = 'ha_cluster_vips'
|
|
constraints = [SQL('UNIQUE (cluster_id, vip)')]
|
|
|
|
|
|
class HaClusterVirt(BaseModel):
|
|
cluster_id = ForeignKeyField(HaCluster, on_delete='Cascade')
|
|
virt_id = ForeignKeyField(Server, on_delete='Cascade')
|
|
vip_id = ForeignKeyField(HaClusterVip, on_delete='Cascade')
|
|
|
|
class Meta:
|
|
table_name = 'ha_cluster_virts'
|
|
primary_key = False
|
|
constraints = [SQL('UNIQUE (cluster_id, virt_id)')]
|
|
|
|
|
|
class HaClusterService(BaseModel):
|
|
cluster_id = ForeignKeyField(HaCluster, on_delete='Cascade')
|
|
service_id = CharField()
|
|
|
|
class Meta:
|
|
table_name = 'ha_cluster_services'
|
|
primary_key = False
|
|
constraints = [SQL('UNIQUE (cluster_id, service_id)')]
|
|
|
|
|
|
class UDPBalancer(BaseModel):
|
|
id = AutoField()
|
|
name = CharField()
|
|
cluster_id = IntegerField(null=True)
|
|
server_id = IntegerField(null=True)
|
|
vip = CharField()
|
|
port = IntegerField()
|
|
group_id = ForeignKeyField(Groups)
|
|
config = CharField()
|
|
description = CharField()
|
|
lb_algo = CharField(constraints=[SQL('DEFAULT "rr"')])
|
|
check_enabled = IntegerField(constraints=[SQL('DEFAULT "1"')])
|
|
delay_loop = IntegerField(constraints=[SQL('DEFAULT "10"')])
|
|
delay_before_retry = IntegerField(constraints=[SQL('DEFAULT "10"')])
|
|
retry = IntegerField(constraints=[SQL('DEFAULT "3"')])
|
|
|
|
class Meta:
|
|
table_name = 'udp_balancers'
|
|
constraints = [SQL('UNIQUE (vip, port)')]
|
|
|
|
|
|
class HaproxySection(BaseModel):
|
|
id = AutoField
|
|
server_id = ForeignKeyField(Server, on_delete='Cascade')
|
|
type = CharField()
|
|
name = CharField()
|
|
config = JSONField()
|
|
|
|
class Meta:
|
|
table_name = 'haproxy_sections'
|
|
constraints = [SQL('UNIQUE (server_id, type, name)')]
|
|
|
|
|
|
class LetsEncrypt(BaseModel):
|
|
id = AutoField
|
|
server_id = ForeignKeyField(Server, null=True, on_delete='SET NULL')
|
|
domains = CharField()
|
|
email = CharField()
|
|
api_key = CharField()
|
|
api_token = CharField()
|
|
type = CharField()
|
|
description = CharField()
|
|
|
|
class Meta:
|
|
table_name = 'lets_encrypt'
|
|
|
|
|
|
def create_tables():
|
|
conn = connect()
|
|
with conn:
|
|
conn.create_tables(
|
|
[User, Server, Role, Telegram, Slack, Groups, UserGroups, ConfigVersion, Setting, RoxyTool, Alerts,
|
|
Cred, Backup, Metrics, WafMetrics, Version, Option, SavedServer, Waf, ActionHistory, PortScannerSettings,
|
|
PortScannerPorts, PortScannerHistory, ServiceSetting, MetricsHttpStatus, SMON, WafRules, GeoipCodes,
|
|
NginxMetrics, SystemInfo, Services, UserName, GitSetting, CheckerSetting, ApacheMetrics, WafNginx, ServiceStatus,
|
|
KeepaliveRestart, PD, SmonHistory, SmonAgent, SmonTcpCheck, SmonHttpCheck, SmonPingCheck, SmonDnsCheck, S3Backup,
|
|
SmonStatusPage, SmonStatusPageCheck, HaCluster, HaClusterSlave, HaClusterVip, HaClusterVirt, HaClusterService,
|
|
HaClusterRouter, MM, UDPBalancer, HaproxySection, LetsEncrypt]
|
|
)
|