Fixes in tasks

This commit is contained in:
Antonio de la Rosa 2025-05-14 01:13:31 +02:00
parent ec52e45969
commit 6cd4598708
4 changed files with 50 additions and 54 deletions

View file

@ -27,6 +27,7 @@ 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
try:
import ujson as json
@ -147,21 +148,38 @@ def pastafari2_edit_global_ssh_keys():
form={}
error=0
error=1
if not os.path.isfile(system_path+'id_rsa'):
# -C "your_email@example.com" -f $HOME/.ssh/id_rsa
try:
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:
key=paramiko.RSAKey.generate(2048)
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:
file_ssh_path='-f {}/id_rsa -q -N ""'.format(system_path)
if not os.path.isfile(system_path+'id_rsa'):
error=1
if call(arr_type[ssh_key_type]+' '+file_ssh_path, shell=True) > 0:
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
return {'error': error}
@ -398,7 +416,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', id=row_id, op_admin=1), _('Users')))
arr_options.append('<a href="{}">{}</a>'.format(url_for('admin_app.pastafari2_delete_server', server_id=row_id), _('Delete')))
@ -839,7 +857,7 @@ 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():
@ -852,41 +870,6 @@ def pastafari2_get_server_users():
# {"fields": [{"Username": true, "Options": false}], "rows": [{"username": "developer", "options": ""}], "html_pages": ""}
"""
db=g.connection
group_sql=''
count_data=[]
sql_data=[]
group_id=request.form.get('group_id', '')
group_sql_count=''
group_sql=''
if group_id!='':
group_sql_count=' WHERE `group_id`=%s'
count_data=[group_id]
sql_data=[group_id]
group_sql=' WHERE `group_id`=%s'
fields=[[_('Hostname'), True], ['IP', True], [_('Selected'), False], [_('Options'), False]]
arr_order_fields=['hostname', 'ip']
count_query=['select count(serverdbtask.id) as num_elements from serverdbtask'+group_sql_count, count_data]
str_query=['select serverdbtask.hostname, serverdbtask.ip, serverdbtask.id as select_id, serverdbtask.id from serverdbtask'+group_sql, sql_data]
ajax=AjaxList(db, fields, arr_order_fields, count_query, str_query)
ajax.func_fields['select_id']=options_selected
ajax.func_fields['id']=options_options
ajax.limit=0
return ajax.show()
"""
fields=[['Username', True], ['Options', False]]
rows=[{'username': 'developer', 'options': ''}]
@ -897,3 +880,4 @@ def pastafari2_get_server_users():
return json.dumps(arr_return)
"""

4
api.py
View file

@ -28,7 +28,7 @@ from importlib import import_module, reload
from paramecio2.libraries.keyutils import create_key_encrypt
from modules.pastafari2 import pastafari_app
from paramecio2.libraries.plugins import db
from flask import g
from flask import g, request
import socket
try:
@ -143,7 +143,7 @@ def add_group(post: Annotated[ServerGroups, 'Add group to the cuchulucp system']
if insert(groupdb, db, post):
code_error=0
error=False
error=0
message=_('Success')
return {'error': error, 'message': message, 'code_error': code_error}

View file

@ -126,12 +126,15 @@ class Task:
add_host=False
"""
rsa=None
if self.private_key!='':
try:
rsa=paramiko.RSAKey.from_private_key_file(self.private_key, self.password_key)
except paramiko.ssh_exception.SSHException:
rsa=paramiko.Ed25519Key.from_private_key_file(self.private_key, self.password_key)
"""
if check_ssh_host.lookup(self.server)==None:
@ -153,7 +156,9 @@ class Task:
try:
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, 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 add_host:
host_key.save(self.config.ssh_directory+'/known_hosts')

View file

@ -6,9 +6,16 @@
<div class="form">
${txt_error|n}
${txt_generate_key|n}
% if not regenerate:
<p>
<select name="ssh_key_type" id="ssh_key_type">
<option value="dsa">DSA</option>
<option value="ecdsa">ECDSA</option>
<option value="ed25519" selected>ED25519</option>
</select>
</p>
<p><input type="submit" value="${txt_generate_key_button}" /></p>
</div>
% if not regenerate:
<p><input type="submit" value="${txt_generate_key_button}" /></p>
% endif
</form>
@ -21,7 +28,7 @@
% if not regenerate:
var options={url: "${url_for('admin_app.pastafari2_edit_global_ssh_keys')}", loading: '#layer_loading', pre_callback: function (data) {
var options={url: "${url_for('admin_app.pastafari2_edit_global_ssh_keys')}?ssh_key_type="+$('#ssh_key_type').val(), loading: '#layer_loading', pre_callback: function (data) {
//alert('This action overwrite all ssh keys');