mirror of
				https://github.com/usmannasir/cyberpanel.git
				synced 2025-10-31 10:26:01 +01:00 
			
		
		
		
	
		
			
	
	
		
			203 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			203 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|  | # -*- 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) |