mirror of
				https://github.com/usmannasir/cyberpanel.git
				synced 2025-10-31 02:15:55 +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) |