Files
VPNTray/data_loader.py
2025-09-06 10:15:14 +02:00

276 lines
8.4 KiB
Python

from models import Customer, CustomerService, Location, Host, Service, ServiceType, HostType, VPNType
from typing import List
def load_customers() -> List[Customer]:
"""Load customer data. Currently returns mock data for demonstration."""
customers = []
# Customer 1: TechCorp Solutions
techcorp = Customer(name="TechCorp Solutions")
# TechCorp's cloud services
techcorp.services = [
CustomerService("Office 365", "https://portal.office.com", "Email & Office"),
CustomerService("Pascom Cloud PBX", "https://techcorp.pascom.cloud", "Phone System"),
CustomerService("Salesforce CRM", "https://techcorp.salesforce.com", "CRM")
]
# TechCorp's main office location
main_office = Location(
name="Main Office",
vpn_type=VPNType.OPENVPN,
connected=True,
active=True,
vpn_config="/etc/openvpn/techcorp-main.ovpn"
)
# Proxmox hypervisor with VMs
proxmox_host = Host(
name="PVE-01",
ip_address="192.168.1.10",
host_type=HostType.PROXMOX,
description="Main virtualization server",
services=[
Service("Web Interface", ServiceType.WEB_GUI, 8006),
Service("SSH", ServiceType.SSH, 22)
]
)
# VMs running on Proxmox
proxmox_host.sub_hosts = [
Host(
name="DC-01",
ip_address="192.168.1.20",
host_type=HostType.WINDOWS_SERVER,
description="Domain Controller",
services=[
Service("RDP", ServiceType.RDP, 3389),
Service("Admin Web", ServiceType.WEB_GUI, 8080)
]
),
Host(
name="FILE-01",
ip_address="192.168.1.21",
host_type=HostType.LINUX,
description="File Server (Samba)",
services=[
Service("SSH", ServiceType.SSH, 22),
Service("SMB Share", ServiceType.SMB, 445),
Service("Web Panel", ServiceType.WEB_GUI, 9000)
]
),
Host(
name="DB-01",
ip_address="192.168.1.22",
host_type=HostType.LINUX,
description="PostgreSQL Database",
services=[
Service("SSH", ServiceType.SSH, 22),
Service("PostgreSQL", ServiceType.DATABASE, 5432),
Service("pgAdmin", ServiceType.WEB_GUI, 5050)
]
)
]
# Network infrastructure
router = Host(
name="FW-01",
ip_address="192.168.1.1",
host_type=HostType.ROUTER,
description="pfSense Firewall/Router",
services=[
Service("Web Interface", ServiceType.WEB_GUI, 443),
Service("SSH", ServiceType.SSH, 22)
]
)
switch = Host(
name="SW-01",
ip_address="192.168.1.2",
host_type=HostType.SWITCH,
description="Managed Switch",
services=[
Service("Web Interface", ServiceType.WEB_GUI, 80),
Service("SSH", ServiceType.SSH, 22)
]
)
main_office.hosts = [proxmox_host, router, switch]
# Branch office location
branch_office = Location(
name="Branch Office",
vpn_type=VPNType.WIREGUARD,
connected=False,
active=False,
vpn_config="/etc/wireguard/techcorp-branch.conf"
)
branch_server = Host(
name="BRANCH-01",
ip_address="10.10.1.10",
host_type=HostType.LINUX,
description="Branch office server",
services=[
Service("SSH", ServiceType.SSH, 22),
Service("File Share", ServiceType.SMB, 445),
Service("Local Web", ServiceType.WEB_GUI, 8080)
]
)
branch_office.hosts = [branch_server]
techcorp.locations = [main_office, branch_office]
customers.append(techcorp)
# Customer 2: MedPractice Group
medpractice = Customer(name="MedPractice Group")
# MedPractice's cloud services
medpractice.services = [
CustomerService("Google Workspace", "https://workspace.google.com", "Email & Office"),
CustomerService("Practice Management", "https://medpractice.emr-system.com", "EMR System"),
CustomerService("VoIP Provider", "https://medpractice.voip.com", "Phone System")
]
# Clinic location
clinic_location = Location(
name="Main Clinic",
vpn_type=VPNType.WIREGUARD,
connected=False,
active=False,
vpn_config="/etc/wireguard/medpractice.conf"
)
# ESXi hypervisor
esxi_host = Host(
name="ESXi-01",
ip_address="10.0.1.10",
host_type=HostType.ESXI,
description="VMware ESXi Host",
services=[
Service("vSphere Web", ServiceType.WEB_GUI, 443),
Service("SSH", ServiceType.SSH, 22)
]
)
# VMs on ESXi
esxi_host.sub_hosts = [
Host(
name="WIN-SRV-01",
ip_address="10.0.1.20",
host_type=HostType.WINDOWS_SERVER,
description="Windows Server 2022",
services=[
Service("RDP", ServiceType.RDP, 3389),
Service("IIS Web", ServiceType.WEB_GUI, 80)
]
),
Host(
name="BACKUP-01",
ip_address="10.0.1.21",
host_type=HostType.LINUX,
description="Backup Server",
services=[
Service("SSH", ServiceType.SSH, 22),
Service("Backup Web UI", ServiceType.WEB_GUI, 8080)
]
)
]
# Physical server
physical_server = Host(
name="PHYS-01",
ip_address="10.0.1.50",
host_type=HostType.LINUX,
description="Physical Linux Server",
services=[
Service("SSH", ServiceType.SSH, 22),
Service("Docker Portainer", ServiceType.WEB_GUI, 9000),
Service("Nginx Proxy", ServiceType.WEB_GUI, 8080)
]
)
clinic_location.hosts = [esxi_host, physical_server]
medpractice.locations = [clinic_location]
customers.append(medpractice)
# Customer 3: Manufacturing Inc
manufacturing = Customer(name="Manufacturing Inc")
# Manufacturing's cloud services
manufacturing.services = [
CustomerService("Microsoft 365", "https://portal.office.com", "Email & Office"),
CustomerService("SAP Cloud", "https://manufacturing.sap.com", "ERP System")
]
# Factory location
factory_location = Location(
name="Factory Floor",
vpn_type=VPNType.IPSEC,
connected=False,
active=True,
vpn_config="/etc/ipsec.d/manufacturing.conf"
)
# Manufacturing infrastructure - simpler setup
linux_server = Host(
name="PROD-01",
ip_address="172.16.1.10",
host_type=HostType.LINUX,
description="Production Server",
services=[
Service("SSH", ServiceType.SSH, 22),
Service("Web Portal", ServiceType.WEB_GUI, 8443),
Service("FTP", ServiceType.FTP, 21)
]
)
nas_server = Host(
name="NAS-01",
ip_address="172.16.1.20",
host_type=HostType.LINUX,
description="Network Attached Storage",
services=[
Service("SSH", ServiceType.SSH, 22),
Service("Web Interface", ServiceType.WEB_GUI, 5000),
Service("SMB Share", ServiceType.SMB, 445)
]
)
factory_location.hosts = [linux_server, nas_server]
# Office location
office_location = Location(
name="Administrative Office",
vpn_type=VPNType.OPENVPN,
connected=False,
active=False,
vpn_config="/etc/openvpn/manufacturing-office.ovpn"
)
office_server = Host(
name="OFFICE-01",
ip_address="172.16.2.10",
host_type=HostType.WINDOWS_SERVER,
description="Office domain controller",
services=[
Service("RDP", ServiceType.RDP, 3389),
Service("File Share", ServiceType.SMB, 445)
]
)
office_location.hosts = [office_server]
manufacturing.locations = [factory_location, office_location]
customers.append(manufacturing)
return customers
def save_customers(customers: List[Customer]) -> None:
"""Save customer data. Currently a placeholder."""
# TODO: Implement actual persistence (JSON file, database, etc.)
pass