')
+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}
+
diff --git a/models/pastafari2.py b/models/pastafari2.py
index 4d3d2d0..4dfa509 100644
--- a/models/pastafari2.py
+++ b/models/pastafari2.py
@@ -13,6 +13,7 @@ from paramecio2.libraries.db.extrafields.filefield import FileField
from paramecio2.libraries.urls import make_media_url
from paramecio2.libraries import datetime
from paramecio2.modules.admin.models.admin import UserAdmin
+from paramecio2.libraries.db.extrafields.usernamefield import UserNameField
from modules.pastafari2.models.tasks import LonelyIpField
from paramecio2.libraries.db.extrafields.passwordfield import PasswordField
#from modules.monit.models.monit import Server
@@ -115,4 +116,12 @@ class UserToken(WebModel):
self.register(corefields.ForeignKeyField('user_id', UserAdmin(connection), 11, True, 'id', 'group', select_fields=[]))
self.register(DateTimeField('last_login'))
-
+class SystemUser(WebModel):
+
+ def __init__(self, connection):
+
+ super().__init__(connection)
+ self.register(UserNameField('username', 4096), True)
+ #self.register(corefields.CharField('home', 4096))
+ self.register(corefields.ForeignKeyField('server_id', ServerDbTask(connection), 11, False, 'id', 'group', select_fields=[]))
+
diff --git a/scripts/system/add_user.py b/scripts/system/add_user.py
new file mode 100644
index 0000000..7600438
--- /dev/null
+++ b/scripts/system/add_user.py
@@ -0,0 +1,53 @@
+#!/usr/bin/python3 -u
+
+import sys
+import argparse
+import os
+#from pastafariutils.unix import add_user, del_user, change_password
+from pathlib import Path
+from subprocess import call, DEVNULL
+import json
+import time
+import shutil
+import pwd
+import distro
+import subprocess
+from pastafariutils import linux
+
+parser=argparse.ArgumentParser(prog='add_user.py', description='A user to the linux system')
+
+parser.add_argument('--user', help='The unix user', required=True)
+
+parser.add_argument('--home', help='The home of the unix user')
+
+parser.add_argument('--shell', help='The home of the unix user')
+
+args=parser.parse_args()
+
+if not linux.shell_command('sudo useradd -m -d {} -s {} {}'.format(args.home, args.shell, args.user)):
+ linux.json_log('Sorry, cannot create the new user, please check permissions and the users not exists', error=1, status=1, progress=100, no_progress=0, return_message=0, result=None)
+ exit(1)
+
+"""
+if args.password:
+
+ password_user=args.password
+
+ ret_pass=change_password(args.user, password_user)
+
+ if not ret_pass[0]:
+ print('Error, cannot change password for %s' % args.user+"\n"+ret_pass[1]+"\n")
+ exit(1)
+ else:
+
+ print('Changed password succesfully...\n')
+"""
+"""
+if args.ssh_pub_key_file:
+
+ if call("sudo su - %s -s /bin/bash -c 'mkdir -p ~/.ssh && chmod 700 ~/.ssh && touch ~/.ssh/authorized_keys' && sudo cat %s >> /home/%s/.ssh/authorized_keys && sudo usermod --shell /bin/bash %s" % (args.user, args.ssh_pub_key_file, args.user, args.user), shell=True) > 0:
+ print('Error, cannot add ssh pub key to user %s' % args.user )
+ exit(1)
+ else:
+ print('Added ssh key successfully...\n')
+"""
diff --git a/templates/admin/add_user.phtml b/templates/admin/add_user.phtml
new file mode 100644
index 0000000..e76d04d
--- /dev/null
+++ b/templates/admin/add_user.phtml
@@ -0,0 +1,46 @@
+<%inherit file="dashboard.phtml"/>
+<%block name="content">
+${_('Servers')} >> ${hostname} - ${_('Users')} >> ${_('Add user')}
+
+${_('Servers')} >> ${hostname} - ${_('Users')} >> ${_('Add user')}
+%block>
+<%block name="jscript_block">
+
+
+%block>
diff --git a/templates/admin/edit_users.phtml b/templates/admin/edit_users.phtml
new file mode 100644
index 0000000..9857163
--- /dev/null
+++ b/templates/admin/edit_users.phtml
@@ -0,0 +1,18 @@
+<%inherit file="dashboard.phtml"/>
+<%block name="content">
+${_('Servers')} >> ${server_data['hostname']} - ${_('Users')}
+${_('Add new user to server')}
+
+
+*${_('Only can edit users system created from this control panel')}
+${_('Servers')} >> ${server_data['hostname']} - ${_('Users')}
+%block>
+<%block name="jscript_block">
+
+
+
+%block>