diff --git a/api/urls.py b/api/urls.py index b694236e7..b238fa906 100755 --- a/api/urls.py +++ b/api/urls.py @@ -14,6 +14,7 @@ urlpatterns = [ url(r'^changeUserPassAPI', views.changeUserPassAPI, name='changeUserPassAPI'), url(r'^submitUserDeletion$', views.submitUserDeletion, name='submitUserDeletion'), + url(r'^listPackage',views.getPackagesListAPI,name='getPackagesListAPI'), url(r'^changePackageAPI', views.changePackageAPI, name='changePackageAPI'), url(r'^fetchSSHkey', views.fetchSSHkey, name='fetchSSHkey'), url(r'^remoteTransfer', views.remoteTransfer, name='remoteTransfer'), diff --git a/api/views.py b/api/views.py index 52323f091..af3f5a51b 100755 --- a/api/views.py +++ b/api/views.py @@ -14,6 +14,7 @@ import os from baseTemplate.models import version from plogical.mailUtilities import mailUtilities from websiteFunctions.website import WebsiteManager +from packages.packagesManager import PackagesManager from s3Backups.s3Backups import S3Backups from plogical.CyberCPLogFileWriter import CyberCPLogFileWriter as logging from plogical.processUtilities import ProcessUtilities @@ -67,6 +68,25 @@ def createWebsite(request): wm = WebsiteManager() return wm.createWebsiteAPI(json.loads(request.body)) +@csrf_exempt +def getPackagesListAPI(request): + data = json.loads(request.body) + adminUser = data['adminUser'] + adminPass = data['adminPass'] + admin = Administrator.objects.get(userName=adminUser) + if admin.api == 0: + data_ret = {"existsStatus": 0, 'listPackages': [], + 'error_message': "API Access Disabled."} + return HttpResponse(json.dumps(data_ret)) + if hashPassword.check_password(admin.password, adminPass): + pm = PackagesManager() + return pm.listPackagesAPI(data) + else: + data_ret = {"status": 0,'error_message': "Could not authorize access to API"} + json_data = json.dumps(data_ret) + return HttpResponse(json_data) + + @csrf_exempt def getUserInfo(request): try: diff --git a/packages/packagesManager.py b/packages/packagesManager.py index 897465283..1f033ad18 100755 --- a/packages/packagesManager.py +++ b/packages/packagesManager.py @@ -2,6 +2,9 @@ import os.path import sys import django + +from plogical import hashPassword + sys.path.append('/usr/local/CyberCP') os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CyberCP.settings") django.setup() @@ -235,6 +238,23 @@ class PackagesManager: except BaseException as msg: return redirect(loadLoginPage) + def listPackagesAPI(self,data=None): + """ + List of packages for API + :param data: + :return HttpResponse: + """ + try: + adminUser = data['adminUser'] + admin = Administrator.objects.get(userName=adminUser) + currentACL = ACLManager.loadedACL(admin.id) + packageList = ACLManager.loadPackages(admin.id, currentACL) + return HttpResponse(json.dumps(packageList); + except BaseException as msg: + data_ret = {'status': 0, 'error_message': str(msg)} + json_data = json.dumps(data_ret) + return HttpResponse(json_data) + def fetchPackagesTable(self): try: userID = self.request.session['userID']