apache/models/webservers.py
2023-11-28 00:15:10 +01:00

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'