diff --git a/admin/dashboard.py b/admin/dashboard.py index 56114a6..bc8500d 100644 --- a/admin/dashboard.py +++ b/admin/dashboard.py @@ -17,6 +17,9 @@ 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 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 + from pathlib import Path import paramiko import socket @@ -26,8 +29,8 @@ from collections import OrderedDict from importlib import import_module, reload from modules.pastafari2.libraries.progress import load_progress from modules.pastafari2.libraries.load_task import load_db_in_task -from importlib import import_module from subprocess import call +from settings import config try: import ujson as json @@ -48,6 +51,9 @@ t.env.directories.insert(1, os.path.dirname(__file__).replace('/admin', '')+'/te system_path='./ssh/' +if hasattr(config, 'pastafari_system_path'): + system_path=config.pastafari_system_path + base_path='modules/pastafari2/tasks' if hasattr(config, 'pastafari_base_path'): @@ -150,36 +156,37 @@ def pastafari2_edit_global_ssh_keys(): error=1 - # -C "your_email@example.com" -f $HOME/.ssh/id_rsa + if not os.path.isfile(system_path+'id_rsa'): - arr_type={'dsa': 'ssh-keygen -t dsa', 'ecdsa': 'ssh-keygen -t ecdsa -b 521', 'ed25519': 'ssh-keygen -t ed25519'} - - ssh_key_type=request.args.get('ssh_key_type') - - if ssh_key_type in arr_type: + # -C "your_email@example.com" -f $HOME/.ssh/id_rsa - file_ssh_path='-f {}/id_rsa -q -N ""'.format(system_path) - - if not os.path.isfile(system_path+'id_rsa'): + arr_type={'rsa': '-t rsa -b 4096', 'dsa': 'ssh-keygen -t dsa', 'ecdsa': 'ssh-keygen -t ecdsa -b 521', 'ed25519': 'ssh-keygen -t ed25519'} + + ssh_key_type=request.args.get('ssh_key_type') + + if ssh_key_type in arr_type: - if call(arr_type[ssh_key_type]+' '+file_ssh_path, shell=True) > 0: + file_ssh_path='-f {}/id_rsa -q -N ""'.format(system_path) + + if not os.path.isfile(system_path+'id_rsa'): - error=1 - else: - error=0 - - #try: - - #key=paramiko.RSAKey.generate(2048) - #key=paramiko.Ed25519Key.generate() - #key.write_private_key_file(system_path+'id_rsa') - - #with open(system_path+'id_rsa.pub',"w") as pub_key: - # pub_key.write("%s %s" % (key.get_name(), key.get_base64())) - - #except: - - # error=1 + if call(arr_type[ssh_key_type]+' '+file_ssh_path, shell=True) > 0: + + error=1 + else: + """ + config_admin.insert(num_element_admin-1, [pastafari_servers_i18n(), 'modules.pastafari2.admin.dashboard', 'admin_app.pastafari2_dashboard', 'fa-linux']) + config_admin.insert(num_element_admin, [pastafari_groups_i18n(), 'modules.pastafari2.admin.groups', 'admin_app.pastafari2_groups', 'fa-object-group']) + config_admin.insert(num_element_admin+1, [pastafari_tasks_log_i18n(), 'modules.pastafari2.admin.tasks', 'admin_app.pastafari2_tasks', 'fa-file-text-o']) + + import_module('modules.pastafari2.admin.dashboard') + import_module('modules.pastafari2.admin.groups') + import_module('modules.pastafari2.admin.tasks') + + print(config_admin) + """ + + error=0 return {'error': error} diff --git a/libraries/task.py b/libraries/task.py index 032f88a..4e5c8d9 100644 --- a/libraries/task.py +++ b/libraries/task.py @@ -13,7 +13,7 @@ class Task: #($server='', $ssh_user='root', $ssh_key_priv='./ssh/id_rsa', $ssh_key_password='', $ssh_path='leviathan', $mysql_conn=false) - 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): + def __init__(self, server, conn, remote_user='root', remote_password='', private_key='./ssh/id_rsa', password_key=None, remote_path='pastafari2', task_id=0, data={}, port=22): self.config=config_task @@ -136,6 +136,9 @@ class Task: """ + #if not os.path.isfile(self.private_key): + + if check_ssh_host.lookup(self.server)==None: # Be tolerant for the first connect with hostkey policy @@ -158,7 +161,11 @@ class Task: #self.ssh.connect(self.server, port=self.port, username=self.remote_user, password=self.remote_password, pkey=rsa, key_filename=None, timeout=None, allow_agent=True, look_for_keys=True, compress=False, sock=None, gss_auth=False, gss_kex=False, gss_deleg_creds=True, gss_host=None, banner_timeout=None) - self.ssh.connect(self.server, port=self.port, username=self.remote_user, password=self.remote_password, key_filename=self.private_key, passphrase=self.password_key, timeout=None, allow_agent=False, look_for_keys=False, compress=False, sock=None, gss_auth=False, gss_kex=False, gss_deleg_creds=True, gss_host=None, banner_timeout=None) + if self.remote_password: + + self.ssh.connect(self.server, port=self.port, username=self.remote_user, password=self.remote_password, timeout=None, allow_agent=False, look_for_keys=False, compress=False, sock=None, gss_auth=False, gss_kex=False, gss_deleg_creds=True, gss_host=None, banner_timeout=None) + else: + self.ssh.connect(self.server, port=self.port, username=self.remote_user, key_filename=self.private_key, passphrase=self.password_key, timeout=None, allow_agent=False, look_for_keys=False, compress=False, sock=None, gss_auth=False, gss_kex=False, gss_deleg_creds=True, gss_host=None, banner_timeout=None) if add_host: host_key.save(self.config.ssh_directory+'/known_hosts') diff --git a/settings/config_admin.py b/settings/config_admin.py index 7ffd96b..26f1073 100644 --- a/settings/config_admin.py +++ b/settings/config_admin.py @@ -1,5 +1,12 @@ from paramecio2.libraries.config_admin import config_admin from paramecio2.libraries.i18n import I18n, PGetText +from settings import config +import os + +system_path='./ssh/' + +if hasattr(config, 'pastafari_system_path'): + system_path=config.pastafari_system_path #modules_admin=[[I18n.lang('admin', 'users_admin', 'User\'s Admin'), 'paramecio.modules.admin.admin.ausers', 'ausers']] @@ -8,30 +15,37 @@ _=pgettext.gettext #modules_admin=[[I18n.lang('admin', 'users_admin', 'User\'s Admin'), 'paramecio.modules.admin.admin.ausers', 'ausers']] -def pastafari_admin(): +def pastafari_admin_i18n(): return _('Pastafari admin') -def pastafari_settings(): +def pastafari_settings_i18n(): return _('Settings') -def pastafari_servers(): +def pastafari_servers_i18n(): return _('Servers') -def pastafari_groups(): +def pastafari_groups_i18n(): return _('Groups') -def pastafari_tasks_log(): +def pastafari_tasks_log_i18n(): return _('Tasks log') -config_admin.append([pastafari_admin()]) +config_admin.append([pastafari_admin_i18n()]) -config_admin.append([pastafari_settings(), 'modules.pastafari2.admin.dashboard', 'admin_app.pastafari2_settings', 'fa-code']) -config_admin.append([pastafari_servers(), 'modules.pastafari2.admin.dashboard', 'admin_app.pastafari2_dashboard', 'fa-linux']) -config_admin.append([pastafari_groups(), 'modules.pastafari2.admin.groups', 'admin_app.pastafari2_groups', 'fa-object-group']) +config_admin.append([pastafari_settings_i18n(), 'modules.pastafari2.admin.dashboard', 'admin_app.pastafari2_settings', 'fa-code']) + +num_element_admin=len(config_admin) + +#print(num_element_admin) + +#if os.path.isfile(system_path+'id_rsa'): + +config_admin.append([pastafari_servers_i18n(), 'modules.pastafari2.admin.dashboard', 'admin_app.pastafari2_dashboard', 'fa-linux']) +config_admin.append([pastafari_groups_i18n(), 'modules.pastafari2.admin.groups', 'admin_app.pastafari2_groups', 'fa-object-group']) #config_admin.append([I18n.lang('pastafari2', 'tasks_edit', 'Tasks edit'), 'modules.pastafari2.admin.tasks_edit', 'admin_app.pastafari2_tasks_edit', 'fa-tasks']) -config_admin.append([pastafari_tasks_log(), 'modules.pastafari2.admin.tasks', 'admin_app.pastafari2_tasks', 'fa-file-text-o']) +config_admin.append([pastafari_tasks_log_i18n(), 'modules.pastafari2.admin.tasks', 'admin_app.pastafari2_tasks', 'fa-file-text-o']) diff --git a/templates/admin/settings.phtml b/templates/admin/settings.phtml index bd7d81a..e2fd028 100644 --- a/templates/admin/settings.phtml +++ b/templates/admin/settings.phtml @@ -9,9 +9,10 @@ % if not regenerate: