From 802fccc162fe35239f2c262c8dbfb25a7480e2da Mon Sep 17 00:00:00 2001 From: Antonio de la Rosa Date: Fri, 23 May 2025 01:36:31 +0200 Subject: [PATCH] Added fix in api --- admin/dashboard.py | 2 +- api.py | 21 ++++++++++++++------- libraries/authplugin.py | 5 +++-- libraries/configtask.py | 6 ++++++ models/pastafari2.py | 30 ++++++++++++++++++++++++++++++ 5 files changed, 54 insertions(+), 10 deletions(-) diff --git a/admin/dashboard.py b/admin/dashboard.py index bc8500d..f4b236b 100644 --- a/admin/dashboard.py +++ b/admin/dashboard.py @@ -18,7 +18,7 @@ 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 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 diff --git a/api.py b/api.py index 8c044b3..3222517 100644 --- a/api.py +++ b/api.py @@ -114,7 +114,8 @@ groupdb=ServerGroup(None) @pastafari_app.get('/api/v1/get_groups') @db -def get_groups(tag='groups') -> ResponseGroups: +@auth_plugin +def get_groups(tag='groups', bearer=True) -> ResponseGroups: db=g.connection @@ -128,7 +129,8 @@ def get_groups(tag='groups') -> ResponseGroups: @pastafari_app.post('/api/v1/add_group') @db -def add_group(post: Annotated[ServerGroups, 'Add group to the cuchulucp system'] = ServerGroups, tag='groups'): +@auth_plugin +def add_group(post: Annotated[ServerGroups, 'Add group to the cuchulucp system'] = ServerGroups, tag='groups', bearer=True): db=g.connection @@ -151,7 +153,8 @@ def add_group(post: Annotated[ServerGroups, 'Add group to the cuchulucp system'] @pastafari_app.post('/api/v1/add_server') @db -def add_server(post: Annotated[Server, 'Add server to the cuchulucp system'] = Server, tag='servers'): +@auth_plugin +def add_server(post: Annotated[Server, 'Add server to the cuchulucp system'] = Server, tag='servers', bearer=True): db=g.connection @@ -232,7 +235,8 @@ def add_server(post: Annotated[Server, 'Add server to the cuchulucp system'] = S task_id=0 - path_task='modules.cuchulucp.tasks.system.task' + #path_task='modules.cuchulucp.tasks.system.task' + path_task='modules.pastafari2.tasks.system.task' if not task.run_task(ip, path_task, 'Add new server', 'add_new_server', 'Task for add a new server', user=server_username, password=server_password, where_sql_server='', url='', data=data, send_task=True, ssh_port=ssh_port): @@ -257,7 +261,8 @@ taskdb=TaskDbModel(None) @pastafari_app.post('/api/v1/task') @db -def make_task(post: Annotated[TaskExec, 'Task to execute'] = TaskExec, tag='tasks'): +@auth_plugin +def make_task(post: Annotated[TaskExec, 'Task to execute'] = TaskExec, tag='tasks', bearer=True): db=g.connection @@ -346,7 +351,8 @@ def make_task(post: Annotated[TaskExec, 'Task to execute'] = TaskExec, tag='task @pastafari_app.get('/api/v1/get_progress_task//') @db -def get_progress_task(task_id, position=0, tag='tasks') -> ResponseLog: +@auth_plugin +def get_progress_task(task_id, position=0, tag='tasks', bearer=True) -> ResponseLog: db=g.connection @@ -408,7 +414,8 @@ def get_progress_task(task_id, position=0, tag='tasks') -> ResponseLog: @pastafari_app.post('/api/v1/add_task_db') @db -def add_task_db(post: Annotated[TaskDb, 'Add a new task to db'] = TaskDb, tag='tasks') -> StandardResponse: +@auth_plugin +def add_task_db(post: Annotated[TaskDb, 'Add a new task to db'] = TaskDb, tag='tasks', bearer=True) -> StandardResponse: db=g.connection diff --git a/libraries/authplugin.py b/libraries/authplugin.py index 8e06d10..477cdda 100644 --- a/libraries/authplugin.py +++ b/libraries/authplugin.py @@ -17,7 +17,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . """ -from flask import g, session, redirect, url_for +from flask import g, session, redirect, url_for, request, abort from functools import wraps from paramecio2.libraries.db.webmodel import WebModel @@ -46,7 +46,8 @@ def auth_plugin(f): #print(request.headers['Authorization']) bearer=request.headers['Authorization'].replace('Bearer', '').strip() - db=kwargs['db'] + #db=kwargs['db'] + db=g.connection num_token=0 diff --git a/libraries/configtask.py b/libraries/configtask.py index 776f73e..bead7ab 100644 --- a/libraries/configtask.py +++ b/libraries/configtask.py @@ -77,6 +77,12 @@ class ConfigTask: self.api_key='' self.ssh_directory=os.path.expanduser('~')+'/.ssh' + + self.ssh_private_key=self.ssh_directory+'/id_rsa' + + self.ssh_private_key_password='' + + self.ssh_public_key=self.ssh_private_key+'.pub' # Class for global configuration diff --git a/models/pastafari2.py b/models/pastafari2.py index 68f3158..4d3d2d0 100644 --- a/models/pastafari2.py +++ b/models/pastafari2.py @@ -14,6 +14,7 @@ from paramecio2.libraries.urls import make_media_url from paramecio2.libraries import datetime from paramecio2.modules.admin.models.admin import UserAdmin from modules.pastafari2.models.tasks import LonelyIpField +from paramecio2.libraries.db.extrafields.passwordfield import PasswordField #from modules.monit.models.monit import Server class ServerGroup(WebModel): @@ -86,3 +87,32 @@ class ServerScripts(WebModel): self.register(corefields.CharField('question8')) self.register(corefields.CharField('question9')) +class UserPermissions(WebModel): + + def __init__(self, connection=None): + + super().__init__(connection) + self.register(corefields.ForeignKeyField('user_id', UserAdmin(connection), 11, True, 'id', 'group', select_fields=[])) + self.register(JsonValueField('permissions', corefields.BooleanField('permissions'))) + self.register(PasswordField('token_auth')) + +class ServerPermissions(WebModel): + + def __init__(self, connection=None): + + super().__init__(connection) + self.register(corefields.ForeignKeyField('user_id', UserAdmin(connection), 11, True, 'id', 'group', select_fields=[])) + self.register(corefields.ForeignKeyField('server_id', Server(connection), 11, False, 'id', 'group', select_fields=[])) + self.register(JsonValueField('permissions', corefields.BooleanField('permissions'))) + self.register(PasswordField('token_auth')) + +class UserToken(WebModel): + + def __init__(self, connection): + + super().__init__(connection) + self.register(corefields.CharField('token', 4096), True) + self.register(corefields.ForeignKeyField('user_id', UserAdmin(connection), 11, True, 'id', 'group', select_fields=[])) + self.register(DateTimeField('last_login')) + +