From a6455547a2a4e16310c6423001cb82c332dff788 Mon Sep 17 00:00:00 2001 From: absurdo Date: Mon, 1 May 2023 00:55:54 +0200 Subject: [PATCH] Added files --- .gitignore | 108 ++++++++++++++++++++++ __init__.py | 3 + admin/app.py | 117 ++++++++++++++++++++++++ app.py | 0 models/mariadb.py | 28 ++++++ settings/config_admin.py | 6 ++ templates/admin/del_mariadbserver.phtml | 28 ++++++ templates/admin/mariadbservers.phtml | 16 ++++ 8 files changed, 306 insertions(+) create mode 100644 .gitignore create mode 100644 __init__.py create mode 100644 admin/app.py create mode 100644 app.py create mode 100644 models/mariadb.py create mode 100644 settings/config_admin.py create mode 100644 templates/admin/del_mariadbserver.phtml create mode 100644 templates/admin/mariadbservers.phtml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..17c45be --- /dev/null +++ b/.gitignore @@ -0,0 +1,108 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +.hypothesis/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +.static_storage/ +.media/ +local_settings.py + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# pyenv +.python-version + +# celery beat schedule file +celerybeat-schedule + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ + +/backups +/settings/config.py +/media/js/jsutils diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..967a1c1 --- /dev/null +++ b/__init__.py @@ -0,0 +1,3 @@ +from flask import Blueprint, g + +mariadb_app=Blueprint('mariadb_app', __name__) diff --git a/admin/app.py b/admin/app.py new file mode 100644 index 0000000..aa191f0 --- /dev/null +++ b/admin/app.py @@ -0,0 +1,117 @@ +from settings import config +from flask import g, url_for, request, session, make_response +from paramecio2.libraries.generate_admin_class import GenerateAdminClass +from paramecio2.libraries.lists import SimpleList +from paramecio2.libraries.i18n import I18n +from paramecio2.modules.admin import admin_app, t as admin_t +from paramecio2.libraries.db.webmodel import WebModel +from paramecio2.libraries.lists import AjaxList +from modules.pastafari2.models.pastafari2 import ServerGroup, ServerDbTask, UpdateServerScripts +from modules.pastafari2.models.tasks import Task as SSHTask +from modules.mariadb.models.mariadb import DbServerMariaDb +from paramecio2.libraries.mtemplates import PTemplate, env_theme +from paramecio2.libraries.formsutils import show_form +from paramecio2.libraries.db.coreforms import HiddenForm, SelectForm, TextForm +from paramecio2.libraries.slugify import slugify +from modules.pastafari2.libraries.configtask import config_task +from modules.pastafari2.libraries.progress import load_progress +import os + +try: + import ujson as json +except: + import json + +env=env_theme(__file__) + +t=PTemplate(env) + +t.env.directories=admin_t.env.directories + +t.env.directories.insert(1, os.path.dirname(__file__).replace('/admin', '')+'/templates/admin') +t.env.directories.insert(2, '../pastafari2/templates/admin') + +@admin_app.route('/mariadbservers/servers/') +def mariadbservers(): + + return t.load_template('mariadbservers.phtml', title=I18n.lang('mariadbservers', 'mariadbservers', 'MariaDB Servers'), path_module='admin_app.mariadbservers') + +@admin_app.route('/get_mariadbservers', methods=['POST']) +def get_mariadbservers(): + + + db=g.connection + + group_sql='' + + count_data=[] + sql_data=[] + + fields=[[I18n.lang('mariadbservers', 'hostname', 'Hostname'), True], ['IP', True], [I18n.lang('mariadbservers', 'options', 'Options'), False]] + arr_order_fields=['hostname', 'ip'] + + count_query=['select count(dbservermariadb.id) as num_elements from dbservermariadb', count_data] + + # server.id as select_id, + + # select hostname, ip, date, num_updates, id from serverofuser where user_id=%s; + + #str_query=['select dbservermariadb.hostname, dbservermariadb.ip, dbservermariadb.id from dbservermariadb,serverdbtask', sql_data] + + str_query=['select serverdbtask.hostname, serverdbtask.ip, dbservermariadb.id as id from dbservermariadb, serverdbtask WHERE serverdbtask.id=dbservermariadb.server_id', sql_data] + + ajax=AjaxList(db, fields, arr_order_fields, count_query, str_query) + + #ajax.func_fields['id']=options_server + #ajax.func_fields['ip']=options_ip + #ajax.func_fields['select_id']=options_selected + ajax.func_fields['id']=options_options + ajax.limit=0 + + return ajax.show() + + +def options_options(row_id, row): + + arr_options=[] + + #arr_options=['{}'.format(url_for('admin_app.virtualhost', server_id=row_id), I18n.lang('dbservermariadb', 'server_users', 'Server users'))] + #arr_options=['{}'.format(url_for('admin_app.virtualhost', dbservermariadb_id=row_id), I18n.lang('dbservermariadb', 'websites', 'Websites'))] + # + #arr_options.append('{}'.format(url_for('admin_app.ports', dbservermariadb_id=row_id), I18n.lang('dbservermariadb', 'http_ports', 'HTTP Ports'))) + #arr_options.append('{}'.format("", I18n.lang('dbservermariadb', 'edit', 'Edit'))) + arr_options.append('{}'.format(url_for('admin_app.delete_mariadbserver', mariadbserver_id=row_id), I18n.lang('dbservermariadb', 'delete', 'Delete'))) + + return '
'.join(arr_options) + +@admin_app.route('/mariadbservers/delete/', methods=['GET', 'POST']) +def delete_mariadbserver(mariadbserver_id): + + db=g.connection + + mariadbserver=DbServerMariaDb(db) + + arr_mariadbserver=mariadbserver.select_a_row(mariadbserver_id) + + if arr_mariadbserver: + + return t.load_template('del_mariadbserver.phtml', title=I18n.lang('mariadbservers', 'remove_mariadbserver', 'Remove MariaDb server'), path_module='admin_app.mariadbservers', mariadbserver_id=arr_mariadbserver['id'], domain=arr_mariadbserver['server_id']) + + else: + return "" + +@admin_app.route('/delete_mariadbserver/', methods=['GET', 'POST']) +def delete_mariadbserver_db(mariadbserver_id): + + db=g.connection + + error=1 + + mariadbserver=DbServerMariaDb(db) + + if mariadbserver.set_conditions('WHERE id=%s', [mariadbserver_id]).delete(): + + error=0 + + return {'error': error} + diff --git a/app.py b/app.py new file mode 100644 index 0000000..e69de29 diff --git a/models/mariadb.py b/models/mariadb.py new file mode 100644 index 0000000..f892fe0 --- /dev/null +++ b/models/mariadb.py @@ -0,0 +1,28 @@ +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.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 DbServerMariaDb(WebModel): + + def __init__(self, connection=None): + + super().__init__(connection) + self.register(corefields.ForeignKeyField('server_id', ServerDbTask(connection), 11, False, 'id', 'hostname', select_fields=[])) + + diff --git a/settings/config_admin.py b/settings/config_admin.py new file mode 100644 index 0000000..34738cf --- /dev/null +++ b/settings/config_admin.py @@ -0,0 +1,6 @@ +from paramecio2.libraries.config_admin import config_admin +from paramecio2.libraries.i18n import I18n + +config_admin.append([I18n.lang('dbservermariadb', 'dbservermariadb_admin', 'MariaDB')]) + +config_admin.append([I18n.lang('dbservermariadb', 'dbservermariadb', 'MariaDB Servers'), 'modules.mariadb.admin.app', 'admin_app.mariadbservers', 'fa-globe']) diff --git a/templates/admin/del_mariadbserver.phtml b/templates/admin/del_mariadbserver.phtml new file mode 100644 index 0000000..85f93e7 --- /dev/null +++ b/templates/admin/del_mariadbserver.phtml @@ -0,0 +1,28 @@ +<%inherit file="dashboard.phtml"/> +<%block name="content"> +

${lang('mariadbservers', 'mariadbservers_list', 'MariaDB servers list')} >> ${lang('mariadbservers', 'remove_mariadbserver', 'Remove MariaDB server')}

+
+ +

${domain}

+

${lang('mariadbservers', 'the_mariadbserver_delete_explain', 'The mariadbserver was deleted from database, you should delete the mariadbserver from your VPS or Barebone server service')}

+

+

+

${lang('mariadbservers', 'mariadbservers_list', 'mariadbservers list')} >> ${lang('mariadbservers', 'remove_mariadbserver', 'Remove mariadbserver')}

+ +<%block name="jscript_block"> + + + diff --git a/templates/admin/mariadbservers.phtml b/templates/admin/mariadbservers.phtml new file mode 100644 index 0000000..ac292a1 --- /dev/null +++ b/templates/admin/mariadbservers.phtml @@ -0,0 +1,16 @@ +<%inherit file="dashboard.phtml"/> +<%block name="content"> +
+
+<%block name="jscript_block"> + + + + +