From ea9c042b9db2d7dab64d8f17ef0e83fb660c9a3b Mon Sep 17 00:00:00 2001 From: Chirag Aggarwal Date: Tue, 8 Jan 2019 18:09:24 +0000 Subject: [PATCH 1/2] Added docker to service management --- CyberCP/settings.py | 8 +++---- dockerManager/decorators.py | 3 +-- serverStatus/static/images/docker.png | Bin 0 -> 4205 bytes .../static/serverStatus/serverStatus.js | 15 ++++++++++-- .../templates/serverStatus/services.html | 22 ++++++++++++++++++ serverStatus/views.py | 19 +++++++++++---- 6 files changed, 54 insertions(+), 13 deletions(-) create mode 100644 serverStatus/static/images/docker.png diff --git a/CyberCP/settings.py b/CyberCP/settings.py index 0dd5d5dd9..a8420f766 100644 --- a/CyberCP/settings.py +++ b/CyberCP/settings.py @@ -24,7 +24,7 @@ BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) SECRET_KEY = 'xr%j*p!*$0d%(-(e%@-*hyoz4$f%y77coq0u)6pwmjg4)q&19f' # SECURITY WARNING: don't run with debug turned on in production! -DEBUG = False +DEBUG = True ALLOWED_HOSTS = ['*'] @@ -110,15 +110,15 @@ DATABASES = { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'cyberpanel', 'USER': 'cyberpanel', - 'PASSWORD': 'Bz9gF7Hr7X4RtD', + 'PASSWORD': 'a9AwLb7zY7ZwCd', 'HOST': '127.0.0.1', - 'PORT':'3307' + 'PORT':'' }, 'rootdb': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mysql', 'USER': 'root', - 'PASSWORD': 'sXm5VlRaAsXkDd', + 'PASSWORD': '3bL8X7wGo0kT3b', 'HOST': 'localhost', 'PORT': '', }, diff --git a/dockerManager/decorators.py b/dockerManager/decorators.py index d2320b7ba..f2edd4004 100644 --- a/dockerManager/decorators.py +++ b/dockerManager/decorators.py @@ -31,8 +31,7 @@ def preDockerRun(function): else: return render(request, 'dockerManager/install.html', {'status':admin.type, 'conErr':0}) - # Check if docker is running and we are able to connect - + # Check if docker is running and we are able to connect try: client = docker.from_env() client.ping() diff --git a/serverStatus/static/images/docker.png b/serverStatus/static/images/docker.png new file mode 100644 index 0000000000000000000000000000000000000000..cdf0c6fc2bd8435349232031bfb4c7842bcc9e5e GIT binary patch literal 4205 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 literal 0 HcmV?d00001 diff --git a/serverStatus/static/serverStatus/serverStatus.js b/serverStatus/static/serverStatus/serverStatus.js index 1a9b88863..8ccf90154 100644 --- a/serverStatus/static/serverStatus/serverStatus.js +++ b/serverStatus/static/serverStatus/serverStatus.js @@ -394,6 +394,7 @@ app.controller('servicesManager', function ($scope, $http) { function ListInitialDatas(response) { + console.log(response.data) if (response.data.status.litespeed) { $scope.olsStatus = "Running"; @@ -408,9 +409,19 @@ app.controller('servicesManager', function ($scope, $http) { $scope.olsStart = true; $scope.olsStop = false; } + + if (response.data.status.docker) { + $scope.dockerStatus = "Running"; + $scope.dockerStart = false; + $scope.dockerStop = true; + } + else { + $scope.dockerStatus = "Stopped"; + $scope.dockerStart = true; + $scope.dockerStop = false; + } // Update SQL stats - if (response.data.status.mysql) { $scope.sqlStatus = "Running"; $scope.sqlStats = true; @@ -468,7 +479,7 @@ app.controller('servicesManager', function ($scope, $http) { } - }; + } getServiceStatus(); $scope.serviceAction = function (serviceName, action) { diff --git a/serverStatus/templates/serverStatus/services.html b/serverStatus/templates/serverStatus/services.html index dab445905..3153b4597 100644 --- a/serverStatus/templates/serverStatus/services.html +++ b/serverStatus/templates/serverStatus/services.html @@ -123,6 +123,28 @@ + {% if isDocker %} +
+
+
+
+ Docker +
+
+
+
Docker
+ Stopped +
+
+ + + +
+
+
+
+
+ {% endif %}
diff --git a/serverStatus/views.py b/serverStatus/views.py index 5f03dbbc6..98753f997 100644 --- a/serverStatus/views.py +++ b/serverStatus/views.py @@ -164,7 +164,13 @@ def services(request): data['serverName'] = 'OpenLiteSpeed' else: data['serverName'] = 'LiteSpeed Ent' - + + dockerInstallPath = '/usr/bin/docker' + if not os.path.exists(dockerInstallPath): + data['isDocker'] = False + else: + data['isDocker'] = True + return render(request, 'serverStatus/services.html', data) except KeyError: return redirect(loadLoginPage) @@ -178,6 +184,7 @@ def servicesStatus(request): dnsStatus = [] ftpStatus = [] mailStatus = [] + dockerStatus = [] processlist = subprocess.check_output(['ps', '-A']) @@ -202,8 +209,10 @@ def servicesStatus(request): else: lsStatus.append(0) + # Docker status + dockerStatus.append(getServiceStats('docker')) + # mysql status - s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) result = s.connect_ex(('127.0.0.1', 3306)) @@ -241,7 +250,8 @@ def servicesStatus(request): 'mysql': sqlStatus[0], 'powerdns': dnsStatus[0], 'pureftp': ftpStatus[0], - 'postfix': mailStatus[0]}, + 'postfix': mailStatus[0], + 'docker': dockerStatus[0]}, 'memUsage': {'litespeed': lsStatus[1], 'mysql': sqlStatus[1], @@ -277,8 +287,7 @@ def servicesAction(request): else: pass - if service not in ["lsws", "mysql", "pdns", "pure-ftpd"]: - + if service not in ["lsws", "mysql", "pdns", "pure-ftpd", "docker"]: final_dic = {'serviceAction': 0, "error_message": "Invalid Service"} final_json = json.dumps(final_dic) return HttpResponse(final_json) From b72b2cbc705c69093fe2bf800fb7a6a492456776 Mon Sep 17 00:00:00 2001 From: Chirag Aggarwal Date: Tue, 8 Jan 2019 18:11:18 +0000 Subject: [PATCH 2/2] Removed Debug mode --- CyberCP/settings.py | 2 +- serverStatus/static/serverStatus/serverStatus.js | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/CyberCP/settings.py b/CyberCP/settings.py index a8420f766..a878195a7 100644 --- a/CyberCP/settings.py +++ b/CyberCP/settings.py @@ -24,7 +24,7 @@ BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) SECRET_KEY = 'xr%j*p!*$0d%(-(e%@-*hyoz4$f%y77coq0u)6pwmjg4)q&19f' # SECURITY WARNING: don't run with debug turned on in production! -DEBUG = True +DEBUG = False ALLOWED_HOSTS = ['*'] diff --git a/serverStatus/static/serverStatus/serverStatus.js b/serverStatus/static/serverStatus/serverStatus.js index 8ccf90154..323b050d8 100644 --- a/serverStatus/static/serverStatus/serverStatus.js +++ b/serverStatus/static/serverStatus/serverStatus.js @@ -394,7 +394,6 @@ app.controller('servicesManager', function ($scope, $http) { function ListInitialDatas(response) { - console.log(response.data) if (response.data.status.litespeed) { $scope.olsStatus = "Running";