64 lines
2.8 KiB
Python
64 lines
2.8 KiB
Python
|
|
from sqlalchemy import Column, Integer, String, Boolean, DateTime, JSON
|
||
|
|
from sqlalchemy.sql import func
|
||
|
|
from database import Base
|
||
|
|
from datetime import datetime
|
||
|
|
|
||
|
|
class PKISetting(Base):
|
||
|
|
__tablename__ = "pki_settings"
|
||
|
|
|
||
|
|
id = Column(Integer, primary_key=True, index=True)
|
||
|
|
fqdn_ca = Column(String, default="ovpn-ca")
|
||
|
|
fqdn_server = Column(String, default="ovpn-srv")
|
||
|
|
easyrsa_dn = Column(String, default="cn_only")
|
||
|
|
easyrsa_req_country = Column(String, default="RU")
|
||
|
|
easyrsa_req_province = Column(String, default="Moscow")
|
||
|
|
easyrsa_req_city = Column(String, default="Moscow")
|
||
|
|
easyrsa_req_org = Column(String, default="SomeORG")
|
||
|
|
easyrsa_req_email = Column(String, default="info@someorg.local")
|
||
|
|
easyrsa_req_ou = Column(String, default="IT")
|
||
|
|
easyrsa_key_size = Column(Integer, default=2048)
|
||
|
|
easyrsa_ca_expire = Column(Integer, default=3650)
|
||
|
|
easyrsa_cert_expire = Column(Integer, default=3649)
|
||
|
|
easyrsa_cert_renew = Column(Integer, default=30)
|
||
|
|
easyrsa_crl_days = Column(Integer, default=3649)
|
||
|
|
easyrsa_batch = Column(Boolean, default=True)
|
||
|
|
|
||
|
|
class SystemSettings(Base):
|
||
|
|
__tablename__ = "system_settings"
|
||
|
|
|
||
|
|
id = Column(Integer, primary_key=True, index=True)
|
||
|
|
protocol = Column(String, default="udp")
|
||
|
|
port = Column(Integer, default=1194)
|
||
|
|
vpn_network = Column(String, default="172.20.1.0")
|
||
|
|
vpn_netmask = Column(String, default="255.255.255.0")
|
||
|
|
tunnel_type = Column(String, default="FULL") # FULL or SPLIT
|
||
|
|
split_routes = Column(JSON, default=list)
|
||
|
|
duplicate_cn = Column(Boolean, default=False)
|
||
|
|
crl_verify = Column(Boolean, default=False)
|
||
|
|
client_to_client = Column(Boolean, default=False)
|
||
|
|
user_defined_dns = Column(Boolean, default=False)
|
||
|
|
dns_servers = Column(JSON, default=list)
|
||
|
|
user_defined_cdscripts = Column(Boolean, default=False)
|
||
|
|
connect_script = Column(String, default="")
|
||
|
|
disconnect_script = Column(String, default="")
|
||
|
|
management_interface = Column(Boolean, default=False)
|
||
|
|
management_interface_address = Column(String, default="127.0.0.1")
|
||
|
|
management_port = Column(Integer, default=7505)
|
||
|
|
public_ip = Column(String, nullable=True)
|
||
|
|
tun_mtu = Column(Integer, nullable=True)
|
||
|
|
mssfix = Column(Integer, nullable=True)
|
||
|
|
|
||
|
|
class UserProfile(Base):
|
||
|
|
__tablename__ = "user_profiles"
|
||
|
|
|
||
|
|
id = Column(Integer, primary_key=True, index=True)
|
||
|
|
username = Column(String, unique=True, index=True)
|
||
|
|
status = Column(String, default="active") # active, revoked
|
||
|
|
created_at = Column(DateTime, default=datetime.utcnow)
|
||
|
|
revoked_at = Column(DateTime, nullable=True)
|
||
|
|
# expired_at removed as per request
|
||
|
|
expiration_date = Column(DateTime, nullable=True)
|
||
|
|
is_revoked = Column(Boolean, default=False)
|
||
|
|
is_expired = Column(Boolean, default=False)
|
||
|
|
file_path = Column(String, nullable=True)
|