192 lines
7 KiB
Python
192 lines
7 KiB
Python
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, PGetText
|
|
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
|
|
from modules.pastafari2.models.tasks import Task as SSHTask
|
|
from modules.pastafari2.libraries.configtask import config_task
|
|
import os
|
|
|
|
try:
|
|
import ujson as json
|
|
except:
|
|
import json
|
|
|
|
pgettext=PGetText(__file__+'/../')
|
|
|
|
_=pgettext.gettext
|
|
|
|
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=[[_('Hostname'), True], ['IP', True], [_('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), _('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(url_for('admin_app.edit_mariadbserver', mariadbserver_id=row_id), _('Edit')))
|
|
arr_options.append('<a href="{}">{}</a>'.format(url_for('admin_app.delete_mariadbserver', mariadbserver_id=row_id), _('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}
|
|
|
|
@admin_app.route('/mariadbservers/edit/<int:mariadbserver_id>', methods=['GET', 'POST'])
|
|
def edit_mariadbserver(mariadbserver_id):
|
|
|
|
db=g.connection
|
|
|
|
mariadbserver=DbServerMariaDb(db)
|
|
|
|
arr_mariadbserver=mariadbserver.select_a_row(mariadbserver_id)
|
|
|
|
if arr_mariadbserver:
|
|
|
|
return t.load_template('edit_mariadbserver.phtml', title=I18n.lang('mariadbservers', 'edit_mariadbserver', 'Edit MariaDb server'), path_module='admin_app.mariadbservers', mariadbserver_id=arr_mariadbserver['id'], domain=arr_mariadbserver['server_id'], access_ip=arr_mariadbserver['access_ip'])
|
|
|
|
else:
|
|
return ""
|
|
|
|
@admin_app.route('/mariadbservers/task/<int:mariadbserver_id>', methods=['GET', 'POST'])
|
|
def edit_mariadbserver_task(mariadbserver_id):
|
|
|
|
db=g.connection
|
|
|
|
access_ip=request.form.get('access_ip').strip()
|
|
|
|
error=0
|
|
|
|
error_form={}
|
|
|
|
serverdb=DbServerMariaDb(db)
|
|
server=ServerDbTask(db)
|
|
|
|
arr_serverdb=serverdb.select_a_row(mariadbserver_id, [], True)
|
|
|
|
if access_ip=='':
|
|
access_ip='127.0.0.1'
|
|
|
|
if arr_serverdb:
|
|
|
|
arr_server=server.select_a_row(arr_serverdb['server_id'])
|
|
|
|
print(arr_serverdb['server_id'])
|
|
|
|
access_ip=serverdb.fields['access_ip'].check(access_ip)
|
|
|
|
if not access_ip:
|
|
error=1
|
|
error_form['#access_ip_error']=I18n.lang('mariadb', 'error_wrong_ip_format', 'Error: wrong ip format')
|
|
# modules/mariadb/tasks/change_ip_mysql.py
|
|
|
|
if not error:
|
|
|
|
sshtask=SSHTask(db)
|
|
|
|
#user=config_task.remote_user
|
|
|
|
ssh_key_priv='./ssh/id_rsa'
|
|
|
|
if not sshtask.run_task(arr_server['ip'], 'modules.mariadb.tasks.change_ip_mysql', 'Edit mariadb server', 'edit_mariadb_server', 'Task for edit a MariaDB server', {'ip': access_ip, 'mariadb_id': mariadbserver_id}, config_task.remote_user, '', '', url_for('admin_app.edit_mariadbserver', mariadbserver_id=mariadbserver_id), ssh_key_priv):
|
|
error=1
|
|
|
|
task_id=sshtask.task_id
|
|
|
|
return {'error': error, 'error_form': error_form, 'task_id': task_id}
|
|
|
|
else:
|
|
|
|
error_form['#access_ip_error']=I18n.lang('mariadb', 'error_cannot_set_the_task', 'Error: cannot set the task')
|
|
error=1
|
|
|
|
return {'error': error, 'error_form': error_form}
|