HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: xnsbb3110 (1041)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/CyberCP/websiteFunctions/models.py
# -*- coding: utf-8 -*-


from django.db import models
from packages.models import Package
from loginSystem.models import Administrator
from datetime import datetime

# Create your models here.

class Websites(models.Model):
    admin = models.ForeignKey(Administrator, on_delete=models.PROTECT)
    package = models.ForeignKey(Package, on_delete=models.PROTECT)
    domain = models.CharField(max_length=255,unique=True)
    adminEmail = models.CharField(max_length=255)
    phpSelection = models.CharField(max_length=10)
    ssl = models.IntegerField()
    state = models.IntegerField(default=1)
    externalApp = models.CharField(max_length=30, default=None)
    config = models.TextField(default='')
    BackupLock = models.IntegerField(default=0)


class ChildDomains(models.Model):
    master = models.ForeignKey(Websites,on_delete=models.CASCADE)
    domain = models.CharField(max_length=50, unique=True)
    path = models.CharField(max_length=200,default=None)
    ssl = models.IntegerField()
    phpSelection = models.CharField(max_length=10,default=None)
    alais = models.IntegerField(default=0)


class Backups(models.Model):
    website = models.ForeignKey(Websites,on_delete=models.CASCADE)
    fileName = models.CharField(max_length=200)
    date = models.CharField(max_length=50)
    size = models.CharField(max_length=50)
    status = models.IntegerField(default=0)

class dest(models.Model):
    destLoc = models.CharField(unique=True,max_length=18)

class backupSchedules(models.Model):
    dest = models.ForeignKey(dest, on_delete=models.CASCADE)
    frequency = models.CharField(max_length=15)

class aliasDomains(models.Model):
    master = models.ForeignKey(Websites, on_delete=models.CASCADE)
    aliasDomain = models.CharField(max_length=75)

class GitLogs(models.Model):
    owner = models.ForeignKey(Websites, on_delete=models.CASCADE)
    date = models.DateTimeField(default=datetime.now, blank=True)
    type = models.CharField(max_length=5)
    message = models.TextField(max_length=65532)

class BackupJob(models.Model):
    logFile = models.CharField(max_length=1000)
    ipAddress = models.CharField(max_length=50)
    port = models.CharField(max_length=15)
    jobSuccessSites = models.IntegerField()
    jobFailedSites = models.IntegerField()
    location = models.IntegerField()

class BackupJobLogs(models.Model):
    owner = models.ForeignKey(BackupJob, on_delete=models.CASCADE)
    status = models.IntegerField()
    message = models.TextField()

class GDrive(models.Model):
    owner = models.ForeignKey(Administrator, on_delete=models.CASCADE)
    name = models.CharField(max_length=50, unique=True)
    auth = models.TextField(max_length=65532, default='Inactive')
    runTime = models.CharField(max_length=20, default='NEVER')

class GDriveSites(models.Model):
    owner = models.ForeignKey(GDrive, on_delete=models.CASCADE)
    domain = models.CharField(max_length=200)

class GDriveJobLogs(models.Model):
    owner = models.ForeignKey(GDrive, on_delete=models.CASCADE)
    status = models.IntegerField()
    message = models.TextField()


### Normal backup models

class NormalBackupDests(models.Model):
    name = models.CharField(max_length=25)
    config = models.TextField()

class NormalBackupJobs(models.Model):
    owner = models.ForeignKey(NormalBackupDests, on_delete=models.CASCADE)
    name = models.CharField(max_length=25)
    config = models.TextField()

class NormalBackupSites(models.Model):
    owner = models.ForeignKey(NormalBackupJobs, on_delete=models.CASCADE)
    domain = models.ForeignKey(Websites, on_delete=models.CASCADE)

class NormalBackupJobLogs(models.Model):
    owner = models.ForeignKey(NormalBackupJobs, on_delete=models.CASCADE)
    status = models.IntegerField()
    message = models.TextField()

class wpplugins(models.Model):
    owner = models.ForeignKey(Administrator, on_delete=models.CASCADE)
    Name = models.CharField(max_length=255, default='')
    config = models.TextField()

class WPSites(models.Model):
    owner = models.ForeignKey(Websites, on_delete=models.CASCADE)
    title = models.CharField(max_length=255, default='')
    path = models.CharField(max_length=255, default='')
    FinalURL = models.CharField(max_length=255, default='')
    AutoUpdates = models.CharField(max_length=100, default='Disabled')
    PluginUpdates = models.CharField(max_length=15, default='Disabled')
    ThemeUpdates = models.CharField(max_length=15, default='Disabled')
    date = models.DateTimeField(default=datetime.now)
    WPLockState = models.IntegerField(default=1)

class WPStaging(models.Model):
    owner = models.ForeignKey(WPSites, on_delete=models.CASCADE)
    wpsite = models.ForeignKey(WPSites, on_delete=models.CASCADE, related_name='actual_wpsite')

class WPSitesBackup(models.Model):
    owner = models.ForeignKey(Administrator, on_delete=models.CASCADE)
    WPSiteID = models.IntegerField(default=-1)
    WebsiteID = models.IntegerField(default=-1)
    config = models.TextField()

class RemoteBackupConfig(models.Model):
    owner = models.ForeignKey(Administrator, on_delete=models.CASCADE)
    configtype = models.CharField(max_length=255, default='')
    config = models.TextField()

class RemoteBackupSchedule(models.Model):
    RemoteBackupConfig = models.ForeignKey(RemoteBackupConfig, on_delete=models.CASCADE)
    Name = models.CharField(max_length=255, default='')
    timeintervel = models.CharField(max_length=200)
    fileretention = models.CharField(max_length=200)
    lastrun = models.CharField(max_length=200)
    config = models.TextField()

class RemoteBackupsites(models.Model):
    owner = models.ForeignKey(RemoteBackupSchedule, on_delete=models.CASCADE)
    WPsites = models.IntegerField(null=True)
    database = models.IntegerField(null=True)

import time

class Backupsv2(models.Model):
    website = models.ForeignKey(Websites, on_delete=models.CASCADE)
    fileName = models.CharField(max_length=255)
    status = models.IntegerField(default=0)
    timeStamp = models.CharField(max_length=255, default=str(time.time()))
    BasePath = models.TextField(default='')

class BackupsLogsv2(models.Model):
    owner = models.ForeignKey(Backupsv2, on_delete=models.CASCADE)
    timeStamp = models.CharField(max_length=255, default=str(time.time()))
    message = models.TextField(default='')


# Takes
# ComposePath, MySQLPath, MySQLRootPass, MySQLDBName, MySQLDBNUser, MySQLPassword, CPUsMySQL, MemoryMySQL,
# port, SitePath, CPUsSite, MemorySite, SiteName
# finalURL, blogTitle, adminUser, adminPassword, adminEmail

### Site Type 0=wp, further tbd later

class DockerSites(models.Model):
    admin = models.ForeignKey(Websites, on_delete=models.CASCADE)
    ComposePath = models.TextField()
    SitePath = models.TextField()
    MySQLPath = models.TextField()
    state = models.IntegerField(default=1)
    SiteType = models.IntegerField(default=0) ## WP, Joomla etc
    MySQLDBName = models.CharField(max_length=100)
    MySQLDBNUser = models.CharField(max_length=100)
    CPUsMySQL = models.CharField(max_length=100)
    MemoryMySQL = models.CharField(max_length=100)
    port = models.CharField(max_length=100)
    CPUsSite = models.CharField(max_length=100)
    MemorySite = models.CharField(max_length=100)
    SiteName = models.CharField(unique=True, max_length=255)
    finalURL = models.TextField()
    blogTitle = models.TextField()
    adminUser = models.CharField(max_length=100)
    adminEmail = models.CharField(max_length=100)

class DockerPackages(models.Model):
    Name = models.CharField(max_length=100, default='')
    CPUs = models.IntegerField()
    Ram = models.IntegerField()
    Bandwidth = models.TextField()
    DiskSpace = models.TextField()
    config = models.TextField()


class PackageAssignment(models.Model):
    user = models.ForeignKey(Administrator, on_delete=models.CASCADE)
    package = models.ForeignKey(DockerPackages, on_delete=models.CASCADE)