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 ''+value+'' 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'