', methods=['POST'])
+def pastafari2_change_user_password(server_id):
+
+ #server_id=request.args.get('webserver_id', '0')
+
+ error=0
+
+ error_form={}
+
+ task_id=0
+
+ db=g.connection
+
+ serverdb=ServerDbTask(db)
+
+ arr_server=serverdb.select_a_row(server_id, [], True)
+
+ if arr_server:
+
+ ssh_pub_key=request.form.get('ssh_pub_key', '')
+
+ user=request.form.get('user', '')
+
+ if user=='':
+ error_form['#user_error']=_('Error: you need an user')
+ error=1
+
+ if ssh_pub_key=='':
+ error_form['#ssh_pub_key_error']=_('Error: you need a ssh public key')
+ error=1
+
+ sshtask=Task(db)
+
+ ssh_key_priv=config_task.ssh_private_key
+
+ if not sshtask.run_task(arr_server['ip'], 'modules.pastafari2.tasks.system.change_password_user', 'Change user password', 'Change user password', 'Task for change unix user password', {'user': user, 'ssh_pub_key': ssh_pub_key}, config_task.remote_user, '', '', url_for('admin_app.pastafari2_dashboard', server_id=server_id), ssh_key_priv=ssh_key_priv, ssh_key_password='', send_task=True, ssh_port=arr_server['ssh_port']):
+
+ error=1
+
+ task_id=sshtask.task_id
+
+ if task_id:
+
+ log=check_task_status(_('SSH key changed'), db, task_id)
+
+ error=log['error']
+
+ error_form['#ssh_pub_key_error']=log['message']
+
+ else:
+ error=1
+
+ return {'error': error, 'error_form': error_form, 'task_id': task_id}
+
+
diff --git a/libraries/check_task.py b/libraries/check_task.py
new file mode 100644
index 0000000..843a31d
--- /dev/null
+++ b/libraries/check_task.py
@@ -0,0 +1,41 @@
+from time import time
+from flask import flash
+
+def check_task_status(flash_text, db, task_id):
+
+ first_time=time()
+
+ check_task=True
+
+ log={'error': 1, 'status': 1, 'message': ''}
+
+ 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:
+
+ check_task=False
+
+ if not arr_log['error']:
+ flash(flash_text)
+
+ log=arr_log
+
+ return log
+
+
+ if time()-first_time>300:
+
+ log['message']='Error: task time out!, view task log!'
+ log['error']=1
+
+ break
+
+ return log
+
+
diff --git a/tasks/system/add_user.py b/tasks/system/add_user.py
new file mode 100644
index 0000000..52febb8
--- /dev/null
+++ b/tasks/system/add_user.py
@@ -0,0 +1,66 @@
+#/usr/bin/env python3
+
+from collections import OrderedDict
+import json
+from modules.pastafari2.libraries.task import Task
+from modules.pastafari2.models.pastafari2 import ServerDbTask, SystemUser
+from modules.pastafari2.libraries.configtask import config_task
+#import distro
+
+class ServerTask(Task):
+
+ def __init__(self, server, conn, remote_user='root', remote_password='', private_key='./ssh/id_rsa', password_key='', remote_path='pastafari2', task_id=0, data={}, port=22):
+
+ super().__init__(server, conn, remote_user, remote_password, private_key, password_key, remote_path, task_id, data, port)
+
+ self.name_task='Add user to server'
+
+ self.description_task='Add user to the selected server'
+
+ self.codename_task='add_user'
+
+ self.files=[]
+
+ self.files=[['modules/pastafari2/scripts/system/add_user.py', 0o755]]
+
+ # Format first array element is command with the interpreter, the task is agnostic, the files in os directory. The commands are setted with 750 permission.
+ # First element is the file, next elements are the arguments
+
+ self.commands_to_execute=[['modules/pastafari2/scripts/system/add_user.py', '']]
+
+ #THe files to delete
+
+ self.delete_files=[]
+
+ self.delete_directories=['modules/pastafari2/scripts']
+
+ #self.task=Task(conn)
+
+ self.one_time=False
+
+ self.version='1.0'
+
+ self.path_module='admin_app.pastafari2_dashboard'
+
+ def pre_task(self):
+
+
+ self.commands_to_execute=[['/home/{}/pythonenv/bin/python3 -u modules/pastafari2/scripts/system/add_user.py'.format(config_task.remote_user), '--user={} --home={} --shell={}'.format(self.data['username'], self.data['home'], '/bin/bash')]]
+
+ return True
+
+ def post_task(self):
+
+ serverdb=ServerDbTask(self.connection)
+
+ system_user=SystemUser(self.connection)
+
+ arr_server=serverdb.set_conditions('WHERE ip=%s', [self.server]).select_a_row_where()
+
+ system_user.create_forms()
+
+ system_user.insert({'username': self.data['username'], 'home': self.data['home'], 'server_id': arr_server['id']})
+
+ #with self.connection.query('insert into systemuser (username, home, server_id) VALUES (%s, %s, %s)', [self.data['username'], self.data['home']]) as cursor:
+
+ return True
diff --git a/templates/admin/edit_users.phtml b/templates/admin/edit_users.phtml
index 9857163..8423c30 100644
--- a/templates/admin/edit_users.phtml
+++ b/templates/admin/edit_users.phtml
@@ -1,4 +1,8 @@
<%inherit file="dashboard.phtml"/>
+<%block name="extra_css">
+
+
+%block>
<%block name="content">
${_('Servers')} >> ${server_data['hostname']} - ${_('Users')}
${_('Add new user to server')}
@@ -6,13 +10,63 @@
*${_('Only can edit users system created from this control panel')}
${_('Servers')} >> ${server_data['hostname']} - ${_('Users')}
+
%block>
<%block name="jscript_block">
+
%block>