Added users support to pastafari
This commit is contained in:
parent
ba7fd8dcc9
commit
646f0bb721
5 changed files with 263 additions and 16 deletions
|
|
@ -1,5 +1,5 @@
|
|||
from settings import config
|
||||
from flask import g, url_for, request, session, make_response
|
||||
from flask import g, url_for, request, session, make_response, flash
|
||||
from paramecio2.libraries.generate_admin_class import GenerateAdminClass
|
||||
from paramecio2.libraries.i18n import I18n, PGetText
|
||||
from paramecio2.modules.admin import admin_app, t as admin_t
|
||||
|
|
@ -12,11 +12,11 @@ from modules.pastafari2.libraries.scandir import scandir
|
|||
from paramecio2.libraries.db.webmodel import WebModel
|
||||
from paramecio2.libraries.lists import AjaxList
|
||||
from paramecio2.libraries.db.extraforms.fileform import FileForm
|
||||
from paramecio2.libraries.formsutils import show_form
|
||||
from paramecio2.libraries.formsutils import show_form, check_form
|
||||
from modules.pastafari2.libraries.task import Task as SSHTask
|
||||
from modules.pastafari2.models.tasks import Task, LogTask
|
||||
from modules.pastafari2.libraries.configtask import config_task
|
||||
from modules.pastafari2.models.pastafari2 import ServerGroup, ServerDbTask, UpdateServerScripts
|
||||
from modules.pastafari2.models.pastafari2 import ServerGroup, ServerDbTask, UpdateServerScripts, SystemUser
|
||||
from paramecio2.libraries.config_admin import config_admin
|
||||
#from modules.pastafari2.settings.config_admin import pastafari_admin_i18n, pastafari_admin_i18n, pastafari_settings_i18n, pastafari_servers_i18n, pastafari_groups_i18n, pastafari_tasks_log_i18n, num_element_admin
|
||||
|
||||
|
|
@ -425,7 +425,7 @@ def options_options(row_id, row):
|
|||
|
||||
arr_options=['<a href="{}">{}</a>'.format(url_for('admin_app.pastafari2_edit_server', id=row_id, op_admin=1), _('Edit'))]
|
||||
|
||||
#arr_options.append('<a href="{}">{}</a>'.format(url_for('admin_app.pastafari2_edit_users', id=row_id, op_admin=1), _('Users')))
|
||||
arr_options.append('<a href="{}">{}</a>'.format(url_for('admin_app.pastafari2_edit_users', server_id=row_id), _('Users')))
|
||||
|
||||
arr_options.append('<a href="{}">{}</a>'.format(url_for('admin_app.pastafari2_delete_server', server_id=row_id), _('Delete')))
|
||||
|
||||
|
|
@ -865,22 +865,32 @@ def pastafari2_save_positions():
|
|||
pass
|
||||
|
||||
return {'error': error, 'form': error_form, 'txt_error': txt_error}
|
||||
"""
|
||||
@admin_app.route('/pastafari2/edit_users')
|
||||
def pastafari2_edit_users():
|
||||
|
||||
return t.load_template('edit_users.phtml', title=_('Edit server users'), path_module='admin_app.pastafari2_dashboard')
|
||||
|
||||
@admin_app.route('/pastafari2/get_server_users', methods=['POST'])
|
||||
def pastafari2_get_server_users():
|
||||
@admin_app.route('/pastafari2/edit_users/<int:server_id>')
|
||||
def pastafari2_edit_users(server_id):
|
||||
|
||||
#{"fields":[["Hostname",true],["IP",true],["Selected",false],["Options",false]],"rows":[{"hostname":"debian-pc.cuchulu.com","ip":"192.168.122.10","select_id":"<input type=\"checkbox\" name=\"server_id_14\" class=\"server_id\" value=\"14\"/>","id":"<a href=\"/pastafari2/edit_server/?id=14&op_admin=1\">Edit</a><br /><a href=\"/pastafari2/edit_users?id=14&op_admin=1\">Users</a><br /><a href=\"/pastafari2/delete_server/?server_id=14\">Delete</a><br /><a href=\"/pastafari2/edit_update/?server_id=14\">Edit update task</a>"}],"html_pages":""}
|
||||
db=g.connection
|
||||
|
||||
# {"fields": [{"Username": true, "Options": false}], "rows": [{"username": "developer", "options": ""}], "html_pages": ""}
|
||||
server=ServerDbTask(db)
|
||||
|
||||
arr_server=server.select_a_row(server_id)
|
||||
|
||||
return t.load_template('edit_users.phtml', title=_('Edit server users'), path_module='admin_app.pastafari2_dashboard', server_id=server_id, server_data=arr_server)
|
||||
|
||||
@admin_app.route('/pastafari2/get_server_users/<int:server_id>', methods=['POST'])
|
||||
def pastafari2_get_server_users(server_id):
|
||||
|
||||
db=g.connection
|
||||
|
||||
fields=[['Username', True], ['Options', False]]
|
||||
|
||||
rows=[{'username': 'developer', 'options': ''}]
|
||||
#rows=[{'username': 'developer', 'options': ''}]
|
||||
rows=[]
|
||||
|
||||
with db.query('select * from systemuser WHERE server_id=%s', [server_id]) as cursor:
|
||||
for user in cursor:
|
||||
rows.append({'username': user['username'], 'options': ''})
|
||||
|
||||
|
||||
arr_return={'fields': fields, 'rows': rows, 'html_pages': ''}
|
||||
|
||||
|
|
@ -888,4 +898,115 @@ def pastafari2_get_server_users():
|
|||
|
||||
return json.dumps(arr_return)
|
||||
|
||||
"""
|
||||
|
||||
@admin_app.route('/pastafari2/add_user/<int:server_id>')
|
||||
def pastafari2_add_user(server_id):
|
||||
|
||||
db=g.connection
|
||||
|
||||
server=ServerDbTask(db)
|
||||
|
||||
system_user=SystemUser(db)
|
||||
|
||||
system_user.fields['server_id'].name_form=HiddenForm
|
||||
system_user.fields['server_id'].extra_parameters=[]
|
||||
|
||||
system_user.create_forms()
|
||||
|
||||
arr_server=server.select_a_row(server_id)
|
||||
|
||||
if arr_server:
|
||||
|
||||
#system_user.forms['server_id'].default_value=arr_server['id']
|
||||
#print(system_user.forms['server_id'].default_value)
|
||||
|
||||
form=show_form({'server_id': arr_server['id']}, system_user.forms, t, yes_error=False, pass_values=True, modelform_tpl='forms/modelform.phtml')
|
||||
|
||||
#system_user.forms['server_id'].parameters=[]
|
||||
|
||||
return t.load_template('add_user.phtml', title=_('Add server user'), path_module='admin_app.pastafari2_dashboard', server_id=server_id, hostname=arr_server['hostname'], form=form)
|
||||
|
||||
return ""
|
||||
|
||||
@admin_app.route('/pastafari2/add_user_task/', methods=['POST'])
|
||||
def pastafari2_add_user_task():
|
||||
|
||||
db=g.connection
|
||||
|
||||
error_form={}
|
||||
|
||||
arr_log={}
|
||||
|
||||
error=True
|
||||
|
||||
txt_error=''
|
||||
|
||||
task_id=0
|
||||
|
||||
server_id=request.form.get('server_id', '0')
|
||||
|
||||
system_user=SystemUser(db)
|
||||
|
||||
system_user.create_forms()
|
||||
|
||||
#(error, fields, values, post)=system_user.check_all_fields(dict(request.form), external_agent=True)
|
||||
|
||||
(error, error_form, post, arr_form)=check_form(dict(request.form), system_user.forms)
|
||||
|
||||
if not error:
|
||||
|
||||
with db.query('select count(*) as num_user from systemuser WHERE username=%s', [post['username']]) as cursor:
|
||||
num_user=cursor.fetchone()['num_user']
|
||||
|
||||
if num_user==0:
|
||||
|
||||
with db.query('select * from serverdbtask WHERE id=%s', [server_id]) as cursor:
|
||||
arr_server=cursor.fetchone()
|
||||
|
||||
if arr_server:
|
||||
|
||||
sshtask=Task(db)
|
||||
|
||||
if not sshtask.run_task(arr_server['ip'], 'modules.pastafari2.tasks.system.add_user', 'Create user in server', 'Create_user', 'Task for create and user in the server', {'username': post['username'], 'home': '/home/{}'.format(post['username'])}, config_task.remote_user, '', '', url_for('admin_app.pastafari2_dashboard'), ssh_key_priv=config_task.ssh_private_key, ssh_key_password=config_task.ssh_private_key_password, send_task=True, ssh_port=arr_server['ssh_port']):
|
||||
|
||||
error=1
|
||||
|
||||
else:
|
||||
error=0
|
||||
|
||||
task_id=sshtask.task_id
|
||||
|
||||
if task_id:
|
||||
|
||||
check_task=True
|
||||
|
||||
while check_task:
|
||||
|
||||
with db.query('select * from logtask where task_id=%s order by id DESC limit 1', [task_id]) as cursor:
|
||||
|
||||
arr_log=cursor.fetchone()
|
||||
|
||||
if arr_log:
|
||||
|
||||
if arr_log['status']==1:
|
||||
|
||||
error=arr_log['error']
|
||||
|
||||
error_form['#username_error']=arr_log['message']
|
||||
check_task=False
|
||||
|
||||
if not error:
|
||||
flash(_('The user was added successfully'))
|
||||
|
||||
else:
|
||||
|
||||
error=1
|
||||
error_form['#username_error']=_('User exists')
|
||||
|
||||
else:
|
||||
error=1
|
||||
error_form['#username_error']='Username invalid'
|
||||
|
||||
|
||||
return {'error': error, 'txt_error': txt_error, 'error_form': error_form, 'task_id': task_id, 'log': arr_log}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue