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 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 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(url_for('admin_app.edit_mariadbserver', mariadbserver_id=row_id), 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} @admin_app.route('/mariadbservers/edit/', 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/', 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}