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)