Added files

This commit is contained in:
absurdo 2023-05-01 00:55:54 +02:00
commit a6455547a2
8 changed files with 306 additions and 0 deletions

108
.gitignore vendored Normal file
View file

@ -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

3
__init__.py Normal file
View file

@ -0,0 +1,3 @@
from flask import Blueprint, g
mariadb_app=Blueprint('mariadb_app', __name__)

117
admin/app.py Normal file
View file

@ -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=['<a href="{}">{}</a>'.format(url_for('admin_app.virtualhost', server_id=row_id), I18n.lang('dbservermariadb', 'server_users', 'Server users'))]
#arr_options=['<a href="{}">{}</a>'.format(url_for('admin_app.virtualhost', dbservermariadb_id=row_id), I18n.lang('dbservermariadb', 'websites', 'Websites'))]
#
#arr_options.append('<a href="{}">{}</a>'.format(url_for('admin_app.ports', dbservermariadb_id=row_id), I18n.lang('dbservermariadb', 'http_ports', 'HTTP Ports')))
#arr_options.append('<a href="{}">{}</a>'.format("", I18n.lang('dbservermariadb', 'edit', 'Edit')))
arr_options.append('<a href="{}">{}</a>'.format(url_for('admin_app.delete_mariadbserver', mariadbserver_id=row_id), I18n.lang('dbservermariadb', 'delete', 'Delete')))
return '<br />'.join(arr_options)
@admin_app.route('/mariadbservers/delete/<int:mariadbserver_id>', 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/<int:mariadbserver_id>', 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}

0
app.py Normal file
View file

28
models/mariadb.py Normal file
View file

@ -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=[]))

6
settings/config_admin.py Normal file
View file

@ -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'])

View file

@ -0,0 +1,28 @@
<%inherit file="dashboard.phtml"/>
<%block name="content">
<p><a href="${url_for('admin_app.mariadbservers')}">${lang('mariadbservers', 'mariadbservers_list', 'MariaDB servers list')}</a> &gt;&gt; ${lang('mariadbservers', 'remove_mariadbserver', 'Remove MariaDB server')}</p>
<form method="post" name="remove_mariadbserver" id="remove_mariadbserver">
<input type="hidden" name="mariadbserver_id" value="${mariadbserver_id}" />
<h3>${domain}</h3>
<p><strong>${lang('mariadbservers', 'the_mariadbserver_delete_explain', 'The mariadbserver was deleted from database, you should delete the mariadbserver from your VPS or Barebone server service')}</strong></p>
<p><input type="submit" value="${lang('mariadbservers', 'delete_mariadbserver', 'Delete mariadbserver')}" />
</form>
<p><a href="${url_for('admin_app.mariadbservers')}">${lang('mariadbservers', 'mariadbservers_list', 'mariadbservers list')}</a> &gt;&gt; ${lang('mariadbservers', 'remove_mariadbserver', 'Remove mariadbserver')}</p>
</%block>
<%block name="jscript_block">
<script language="Javascript" src="${make_media_url('js/jsutils/posting2.js', 'monit')}"></script>
<script>
/* options: url: url to post, loading: dom id, success: func, pre_callback, separated_data:boolean, upload: {progressbar: '#progressbar', 'total_loader': '#total_loader', 'status': '#status'} */
options={'url': '${url_for("admin_app.delete_mariadbserver_db", mariadbserver_id=mariadbserver_id)}', 'loading': '#layer_loading', 'success': function (data) {
location.href="${url_for('admin_app.mariadbservers')}";
}
};
$('#remove_mariadbserver').sendPost(options);
</script>
</%block>

View file

@ -0,0 +1,16 @@
<%inherit file="dashboard.phtml"/>
<%block name="content">
<div id="table_servers">
</div>
<%block name="jscript_block">
<script language="Javascript" src="${make_media_url('js/jsutils/posting2.js', 'monit')}"></script>
<script language="Javascript" src="${make_media_url('js/jsutils/ajax_list.js', 'monit')}"></script>
<script>
options={'url': "${url_for('.get_mariadbservers')}", extra_data: {}};
alist=$('#table_servers').ajaxList('table_list', options);
</script>
</%block>
</%block>