155 lines
6.4 KiB
Python
155 lines
6.4 KiB
Python
from paramecio2.libraries.db.webmodel import WebModel
|
|
from paramecio2.libraries.db.usermodel import UserModel
|
|
from paramecio2.libraries.db import corefields
|
|
from paramecio2.libraries.db.extrafields.dictfield import DictField
|
|
from paramecio2.libraries.db.extrafields.datefield import DateField
|
|
from paramecio2.libraries.db.extrafields.datetimefield import DateTimeField
|
|
from paramecio2.libraries.db.extrafields.ipfield import IpField
|
|
from paramecio2.libraries.db.extrafields.urlfield import UrlField
|
|
from paramecio2.libraries.db.extrafields.urlfield import DomainField
|
|
from paramecio2.libraries.db.extrafields.dictfield import DictField
|
|
from paramecio2.libraries.db.extrafields.jsonfield import JsonValueField
|
|
from paramecio2.libraries.db.extrafields.parentfield import ParentField
|
|
from paramecio2.libraries.db.extrafields.filefield import FileField
|
|
from paramecio2.libraries.db.extrafields.passwordfield import PasswordField
|
|
from paramecio2.libraries.db.extrafields.usernamefield import UserNameField
|
|
from paramecio2.libraries.urls import make_media_url
|
|
from paramecio2.libraries import datetime
|
|
#from modules.monit.models.monit import Server
|
|
from modules.pastafari2.models.pastafari2 import ServerDbTask
|
|
from paramecio2.libraries.db.extrafields.emailfield import EmailField
|
|
|
|
class PortField(corefields.IntegerField):
|
|
|
|
def __init__(self, name, size=11, required=False):
|
|
|
|
super().__init__(name, size, required)
|
|
|
|
def check(self, value):
|
|
|
|
value=int(super().check(value))
|
|
|
|
if value<=1000:
|
|
value=0
|
|
self.txt_error="A port need to be more higher than 1000"
|
|
self.error=True
|
|
elif value>65536:
|
|
value=0
|
|
self.txt_error="The value of the port need to be more lower than 65536"
|
|
self.error=True
|
|
|
|
return str(value)
|
|
|
|
class UserVirtualHost(UserNameField):
|
|
|
|
def show_formatted(value):
|
|
|
|
return '<a href="">'+value+'</a>'
|
|
|
|
|
|
class WebServer(WebModel):
|
|
|
|
def __init__(self, connection=None):
|
|
|
|
super().__init__(connection)
|
|
|
|
self.register(corefields.ForeignKeyField('server_id', ServerDbTask(connection), 11, False, 'id', 'hostname', select_fields=[]))
|
|
#self.register(corefields.CharField('username'), True)
|
|
#self.register(corefields.CharField('home'), True)
|
|
#self.register(PasswordField('password'), True)
|
|
#self.register(corefields.IntegerField('uid_hosting'), True)
|
|
#self.register(corefields.IntegerField('gid_hosting'), True)
|
|
|
|
class WebServerPort(WebModel):
|
|
|
|
def __init__(self, connection=None):
|
|
|
|
super().__init__(connection)
|
|
self.register(corefields.ForeignKeyField('webserver_id', WebServer(connection), 11, False, 'id', 'server_id', select_fields=['server_id', 'username']))
|
|
self.register(IpField('ip'))
|
|
self.register(PortField('port'), True)
|
|
self.fields['port'].unique=True
|
|
|
|
class VirtualHost(WebModel):
|
|
|
|
def __init__(self, connection=None):
|
|
|
|
super().__init__(connection)
|
|
|
|
self.register(DomainField('domain'), True)
|
|
self.register(corefields.CharField('home'), True)
|
|
#(self, name, related_table, size=11, required=False, identifier_field='id', named_field="id", select_fields=[])
|
|
#self.register(corefields.ForeignKeyField('user_id', UsersFtp(connection), 11, False, 'id', 'user', select_fields=[]))
|
|
|
|
self.register(UserVirtualHost('username'), True)
|
|
#self.register(corefields.CharField('home'), True)
|
|
|
|
self.register(corefields.ForeignKeyField('webserver_id', WebServer(connection), 11, False, 'id', 'id', select_fields=['server_id', 'username']))
|
|
self.register(IpField('ip'))
|
|
self.register(corefields.IntegerField('port'))
|
|
self.register(corefields.IntegerField('ssl_port'))
|
|
self.register(corefields.CharField('cgi_type'))
|
|
|
|
# 0= NoSSL 1=Letsencrypt 2=other cert, show form
|
|
|
|
self.register(corefields.IntegerField('ssl'))
|
|
|
|
self.register(corefields.TextField('aliases'))
|
|
|
|
self.register(corefields.BooleanField('redirect_ssl'))
|
|
self.register(corefields.BooleanField('indexes'))
|
|
self.register(corefields.BooleanField('allow_override'))
|
|
|
|
self.register(corefields.CharField('php'))
|
|
|
|
"""
|
|
self.register(corefields.BooleanField('php74'))
|
|
self.register(corefields.BooleanField('php80'))
|
|
self.register(corefields.BooleanField('php81'))
|
|
self.register(corefields.BooleanField('php82'))
|
|
self.register(corefields.BooleanField('wsgi'))
|
|
"""
|
|
|
|
class WebApp(WebModel):
|
|
|
|
def __init__(self, connection=None):
|
|
|
|
super().__init__(connection)
|
|
self.register(corefields.ForeignKeyField('virtualhost_id', VirtualHost(connection), 11, False, 'id', 'domain', select_fields=[]))
|
|
self.register(corefields.CharField('app_name'))
|
|
self.register(corefields.CharField('app_type'))
|
|
self.register(corefields.CharField('path'))
|
|
self.register(corefields.CharField('code'))
|
|
self.register(JsonValueField('data'))
|
|
|
|
class UsersFtp(UserModel):
|
|
"""
|
|
CREATE TABLE `users` (
|
|
`user` varchar(1000) NOT NULL,
|
|
`passwd` varchar(1000) NOT NULL,
|
|
`uid` int(11) DEFAULT NULL,
|
|
`gid` int(11) DEFAULT NULL,
|
|
`home` varchar(255) DEFAULT NULL,
|
|
UNIQUE KEY `user` (`user`) USING HASH,
|
|
KEY `users_user_idx` (`user`(768))
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
"""
|
|
|
|
def __init__(self, connection=None):
|
|
|
|
super().__init__(connection)
|
|
|
|
self.register(corefields.CharField('user'), True)
|
|
self.register(PasswordField('passwd'), True)
|
|
self.register(EmailField('email'), True)
|
|
self.register(corefields.IntegerField('uid'))
|
|
self.register(corefields.IntegerField('gid'))
|
|
self.register(corefields.CharField('home'))
|
|
self.register(corefields.IntegerField('upload_bw'))
|
|
self.register(corefields.IntegerField('download_bw'))
|
|
self.register(corefields.IntegerField('num_files'))
|
|
self.register(corefields.IntegerField('quota_mb'))
|
|
self.register(corefields.ForeignKeyField('virtualhost_id', VirtualHost(connection), 11, False, 'id', 'domain', select_fields=[]))
|
|
|
|
self.username_field='user'
|
|
self.password_field='passwd'
|