mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2025-11-10 15:26:13 +01:00
wordpresscreateandinstalldone
This commit is contained in:
@@ -1,9 +1,12 @@
|
||||
#!/usr/local/CyberCP/bin/python
|
||||
import argparse
|
||||
import os, sys
|
||||
import time
|
||||
|
||||
from loginSystem.models import Administrator
|
||||
from plogical.acl import ACLManager
|
||||
|
||||
|
||||
sys.path.append('/usr/local/CyberCP')
|
||||
import django
|
||||
|
||||
@@ -11,8 +14,9 @@ os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CyberCP.settings")
|
||||
django.setup()
|
||||
import threading as multi
|
||||
from plogical.CyberCPLogFileWriter import CyberCPLogFileWriter as logging
|
||||
import plogical.CyberCPLogFileWriter as logging
|
||||
import subprocess
|
||||
from websiteFunctions.models import ChildDomains, Websites
|
||||
from websiteFunctions.models import ChildDomains, Websites, WPSites
|
||||
from plogical import randomPassword
|
||||
from plogical.mysqlUtilities import mysqlUtilities
|
||||
from databases.models import Databases
|
||||
@@ -33,11 +37,13 @@ class ApplicationInstaller(multi.Thread):
|
||||
multi.Thread.__init__(self)
|
||||
self.installApp = installApp
|
||||
self.extraArgs = extraArgs
|
||||
|
||||
if extraArgs != None:
|
||||
try:
|
||||
self.tempStatusPath = self.extraArgs['tempStatusPath']
|
||||
except:
|
||||
pass
|
||||
self.data = self.extraArgs
|
||||
|
||||
def run(self):
|
||||
try:
|
||||
@@ -56,6 +62,8 @@ class ApplicationInstaller(multi.Thread):
|
||||
self.updatePackage()
|
||||
elif self.installApp == 'mautic':
|
||||
self.installMautic()
|
||||
elif self.installApp == 'wordpressInstallNew':
|
||||
self.wordpressInstallNew()
|
||||
|
||||
except BaseException as msg:
|
||||
logging.writeToFile(str(msg) + ' [ApplicationInstaller.run]')
|
||||
@@ -473,7 +481,6 @@ $parameters = array(
|
||||
|
||||
def installWordPress(self):
|
||||
try:
|
||||
|
||||
domainName = self.extraArgs['domainName']
|
||||
home = self.extraArgs['home']
|
||||
tempStatusPath = self.extraArgs['tempStatusPath']
|
||||
@@ -1622,6 +1629,103 @@ $parameters = array(
|
||||
statusFile.close()
|
||||
return 0
|
||||
|
||||
def wordpressInstallNew(self):
|
||||
try:
|
||||
from websiteFunctions.website import WebsiteManager
|
||||
import json
|
||||
logging.CyberCPLogFileWriter.writeToFile("start wordpressInstallNew...." )
|
||||
tempStatusPath = self.data['tempStatusPath']
|
||||
statusFile = open(tempStatusPath, 'w')
|
||||
statusFile.writelines('Creating Website...')
|
||||
statusFile.close()
|
||||
|
||||
|
||||
DataToPass = {}
|
||||
|
||||
currentTemp = self.extraArgs['tempStatusPath']
|
||||
DataToPass['domainName'] = self.data['domainName']
|
||||
DataToPass['adminEmail'] = self.data['adminEmail']
|
||||
DataToPass['phpSelection'] = "PHP 7.4"
|
||||
DataToPass['websiteOwner'] = self.data['websiteOwner']
|
||||
DataToPass['package'] = self.data['package']
|
||||
DataToPass['ssl'] = 1
|
||||
DataToPass['dkimCheck'] = 0
|
||||
DataToPass['openBasedir'] = 0
|
||||
DataToPass['mailDomain'] = 0
|
||||
UserID = self.data['adminID']
|
||||
|
||||
ab = WebsiteManager()
|
||||
coreResult = ab.submitWebsiteCreation(UserID, DataToPass)
|
||||
coreResult1 = json.loads((coreResult).content)
|
||||
logging.CyberCPLogFileWriter.writeToFile("Creating website result....%s"%coreResult1)
|
||||
reutrntempath = coreResult1['tempStatusPath']
|
||||
while (1):
|
||||
lastLine = open(reutrntempath, 'r').read()
|
||||
|
||||
if lastLine.find('[200]') > -1:
|
||||
break
|
||||
elif lastLine.find('[404]') > -1:
|
||||
statusFile = open(currentTemp, 'w')
|
||||
statusFile.writelines('Failed to Create Website: error: %s[404]' % lastLine)
|
||||
statusFile.close()
|
||||
return 0
|
||||
else:
|
||||
statusFile = open(currentTemp, 'w')
|
||||
statusFile.writelines('Creating Website....,20')
|
||||
statusFile.close()
|
||||
time.sleep(2)
|
||||
|
||||
statusFile = open(tempStatusPath, 'w')
|
||||
statusFile.writelines('Installing WordPress....')
|
||||
statusFile.close()
|
||||
|
||||
## Install WordPress
|
||||
|
||||
|
||||
currentTemp = self.extraArgs['tempStatusPath']
|
||||
self.extraArgs['tempStatusPath'] = "/home/cyberpanel/" + str(randint(1000, 9999))
|
||||
self.installWordPress()
|
||||
|
||||
while (1):
|
||||
lastLine = open(self.extraArgs['tempStatusPath'], 'r').read()
|
||||
|
||||
if lastLine.find('[200]') > -1:
|
||||
break
|
||||
elif lastLine.find('[404]') > -1:
|
||||
statusFile = open(currentTemp, 'w')
|
||||
statusFile.writelines('Failed to install WordPress: error: %s[404]' % lastLine)
|
||||
statusFile.close()
|
||||
return 0
|
||||
else:
|
||||
statusFile = open(currentTemp, 'w')
|
||||
statusFile.writelines('Installing WordPress....,30')
|
||||
statusFile.close()
|
||||
time.sleep(2)
|
||||
|
||||
statusFile = open(currentTemp, 'w')
|
||||
statusFile.writelines('WordPress installed..,70')
|
||||
statusFile.close()
|
||||
|
||||
|
||||
webobj = Websites.objects.get(domain= self.extraArgs['domainName'])
|
||||
|
||||
path ="/home/%s/public_html"%(self.extraArgs['domainName'])
|
||||
Finalurl = (self.extraArgs['domainName'])
|
||||
|
||||
wpobj = WPSites(owner=webobj, title=self.extraArgs['blogTitle'], path=path, FinalURL=Finalurl,
|
||||
AutoUpdates=(self.extraArgs['updates']), PluginUpdates=(self.extraArgs['Plugins']),
|
||||
ThemeUpdates=(self.extraArgs['Themes']),)
|
||||
wpobj.save()
|
||||
|
||||
statusFile = open(currentTemp, 'w')
|
||||
statusFile.writelines('WordPress installed..,[200]')
|
||||
statusFile.close()
|
||||
|
||||
|
||||
except BaseException as msg:
|
||||
logging.CyberCPLogFileWriter.writeToFile("Error WP web creating ....... %s" % str(msg))
|
||||
return 0
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description='CyberPanel Application Installer')
|
||||
parser.add_argument('function', help='Specify a function to call!')
|
||||
|
||||
@@ -244,6 +244,183 @@ app.controller('WPAddNewPlugin', function ($scope, $http, $timeout, $window, $co
|
||||
});
|
||||
|
||||
|
||||
app.controller('createWordpress', function ($scope, $http, $timeout, $window) {
|
||||
$scope.webSiteCreationLoading = true;
|
||||
$scope.installationDetailsForm = false;
|
||||
$scope.installationProgress = true;
|
||||
$scope.errorMessageBox = true;
|
||||
$scope.success = true;
|
||||
$scope.couldNotConnect = true;
|
||||
$scope.goBackDisable = true;
|
||||
|
||||
var statusFile;
|
||||
|
||||
$scope.createWordPresssite = function () {
|
||||
|
||||
$scope.webSiteCreationLoading = false;
|
||||
$scope.installationDetailsForm = true;
|
||||
$scope.installationProgress = false;
|
||||
$scope.errorMessageBox = true;
|
||||
$scope.success = true;
|
||||
$scope.couldNotConnect = true;
|
||||
$scope.goBackDisable = true;
|
||||
|
||||
|
||||
$scope.currentStatus = "Starting creation..";
|
||||
|
||||
var package = $scope.packageForWebsite;
|
||||
var websiteOwner = $scope.websiteOwner;
|
||||
var WPtitle = $scope.WPtitle;
|
||||
var domainNameCreate = $scope.domainNameCreate;
|
||||
var WPUsername = $scope.WPUsername;
|
||||
var adminEmail = $scope.adminEmail;
|
||||
var WPPassword = $scope.WPPassword;
|
||||
var WPVersions = $scope.WPVersions;
|
||||
var pluginbucket = $scope.pluginbucket;
|
||||
var autoupdates = $scope.autoupdates;
|
||||
var pluginupdates = $scope.pluginupdates;
|
||||
var themeupdates = $scope.themeupdates;
|
||||
var data = {
|
||||
|
||||
title: WPtitle,
|
||||
domain: domainNameCreate,
|
||||
WPVersion: WPVersions,
|
||||
PluginsThemes: pluginbucket,
|
||||
adminUser: WPUsername,
|
||||
Email: adminEmail,
|
||||
PasswordByPass: WPPassword,
|
||||
AutomaticUpdates: autoupdates,
|
||||
Plugins: pluginupdates,
|
||||
Themes: themeupdates,
|
||||
websiteOwner: websiteOwner,
|
||||
package: package,
|
||||
}
|
||||
var config = {
|
||||
headers: {
|
||||
'X-CSRFToken': getCookie('csrftoken')
|
||||
}
|
||||
};
|
||||
var url = "/websites/submitWorpressCreation";
|
||||
|
||||
$http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
|
||||
|
||||
|
||||
function ListInitialDatas(response) {
|
||||
|
||||
if (response.data.status === 1) {
|
||||
statusFile = response.data.tempStatusPath;
|
||||
getCreationStatus();
|
||||
|
||||
} else {
|
||||
|
||||
// $scope.errorMessage = response.data.error_message;
|
||||
alert("Status not = 1: Error..." + response.data.error_message)
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
function cantLoadInitialDatas(response) {
|
||||
|
||||
alert("Error..." + response)
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
$scope.goBack = function () {
|
||||
$scope.webSiteCreationLoading = true;
|
||||
$scope.installationDetailsForm = false;
|
||||
$scope.installationProgress = true;
|
||||
$scope.errorMessageBox = true;
|
||||
$scope.success = true;
|
||||
$scope.couldNotConnect = true;
|
||||
$scope.goBackDisable = true;
|
||||
$("#installProgress").css("width", "0%");
|
||||
};
|
||||
function getCreationStatus() {
|
||||
|
||||
url = "/websites/installWordpressStatus";
|
||||
|
||||
var data = {
|
||||
statusFile: statusFile
|
||||
};
|
||||
|
||||
var config = {
|
||||
headers: {
|
||||
'X-CSRFToken': getCookie('csrftoken')
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
$http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
|
||||
|
||||
|
||||
function ListInitialDatas(response) {
|
||||
|
||||
|
||||
if (response.data.abort === 1) {
|
||||
|
||||
if (response.data.installStatus === 1) {
|
||||
|
||||
$scope.webSiteCreationLoading = true;
|
||||
$scope.installationDetailsForm = true;
|
||||
$scope.installationProgress = false;
|
||||
$scope.errorMessageBox = true;
|
||||
$scope.success = false;
|
||||
$scope.couldNotConnect = true;
|
||||
$scope.goBackDisable = false;
|
||||
|
||||
$("#installProgress").css("width", "100%");
|
||||
$scope.installPercentage = "100";
|
||||
$scope.currentStatus = response.data.currentStatus;
|
||||
$timeout.cancel();
|
||||
|
||||
} else {
|
||||
|
||||
$scope.webSiteCreationLoading = true;
|
||||
$scope.installationDetailsForm = true;
|
||||
$scope.installationProgress = false;
|
||||
$scope.errorMessageBox = false;
|
||||
$scope.success = true;
|
||||
$scope.couldNotConnect = true;
|
||||
$scope.goBackDisable = false;
|
||||
|
||||
$scope.errorMessage = response.data.error_message;
|
||||
|
||||
$("#installProgress").css("width", "0%");
|
||||
$scope.installPercentage = "0";
|
||||
$scope.goBackDisable = false;
|
||||
|
||||
}
|
||||
|
||||
} else {
|
||||
$("#installProgress").css("width", response.data.installationProgress + "%");
|
||||
$scope.installPercentage = response.data.installationProgress;
|
||||
$scope.currentStatus = response.data.currentStatus;
|
||||
$timeout(getCreationStatus, 1000);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function cantLoadInitialDatas(response) {
|
||||
|
||||
$scope.webSiteCreationLoading = true;
|
||||
$scope.installationDetailsForm = true;
|
||||
$scope.installationProgress = false;
|
||||
$scope.errorMessageBox = true;
|
||||
$scope.success = true;
|
||||
$scope.couldNotConnect = false;
|
||||
$scope.goBackDisable = false;
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
/* Java script code to create account */
|
||||
app.controller('createWebsite', function ($scope, $http, $timeout, $window) {
|
||||
|
||||
|
||||
@@ -47,14 +47,14 @@
|
||||
<td class="v-align-middle">
|
||||
<p>{{ sub.Name }}</p>
|
||||
</td>
|
||||
<td class="row form-group">
|
||||
<div class="col">
|
||||
<td class="row">
|
||||
<div class="col-md-2">
|
||||
<a href="{% url 'EidtPlugin'%}?ID={{sub.id}}"
|
||||
type="button" class="btn btn-border btn-alt border-green btn-link font-green">
|
||||
Edit
|
||||
</a>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="col-md-2">
|
||||
|
||||
|
||||
<button
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
</div>
|
||||
|
||||
|
||||
<div ng-controller="createWebsite" class="panel">
|
||||
<div ng-controller="createWordpress" class="panel">
|
||||
<div class="panel-body">
|
||||
<h3 class="content-box-header">
|
||||
{% trans "Website Details" %} <img ng-hide="webSiteCreationLoading"
|
||||
@@ -95,14 +95,66 @@
|
||||
<div ng-hide="installationDetailsForm" class="form-group">
|
||||
<label class="col-sm-3 control-label">{% trans "Select WP Version" %}</label>
|
||||
<div class="col-sm-6">
|
||||
<select ng-model="phpSelection" class="form-control">
|
||||
{% for php in WPVersions %}
|
||||
<option>{{ php }}</option>
|
||||
<select ng-model="WPVersions" class="form-control">
|
||||
{% for wp in WPVersions %}
|
||||
<option>{{ wp }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div ng-hide="installationDetailsForm" class="form-group">
|
||||
<label class="col-sm-3 control-label">{% trans "Plugin/Theme" %}</label>
|
||||
<div class="col-sm-6">
|
||||
<select ng-model="pluginbucket" class="form-control">
|
||||
<option value="-1" selected>Select Plugin Bucket</option>
|
||||
{% for wp in Plugins %}
|
||||
<option value="{{ wp.id }}">{{ wp.Name }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div ng-hide="installationDetailsForm" class="form-group">
|
||||
<label class="col-sm-3 control-label">{% trans "Automatic Updates" %}</label>
|
||||
<div class="col-sm-6">
|
||||
<select ng-model="autoupdates" class="form-control">
|
||||
|
||||
<option>Disabled</option>
|
||||
<option>All (minor and major)</option>
|
||||
<option>Minor and Security Updates</option>
|
||||
|
||||
</select>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div ng-hide="installationDetailsForm" class="form-group">
|
||||
<label class="col-sm-3 control-label">{% trans "Plugins Updates" %}</label>
|
||||
<div class="col-sm-6">
|
||||
<select ng-model="pluginupdates" class="form-control">
|
||||
|
||||
<option>Enabled</option>
|
||||
<option>Disabled</option>
|
||||
|
||||
</select>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div ng-hide="installationDetailsForm" class="form-group">
|
||||
<label class="col-sm-3 control-label">{% trans "Themes Updates" %}</label>
|
||||
<div class="col-sm-6">
|
||||
<select ng-model="themeupdates" class="form-control">
|
||||
|
||||
<option>Enabled</option>
|
||||
<option>Disabled</option>
|
||||
|
||||
</select>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div ng-hide="installationDetailsForm" class="form-group">
|
||||
<label class="col-sm-3 control-label">{% trans "Additional Features" %}</label>
|
||||
<div class="col-sm-9">
|
||||
@@ -145,8 +197,7 @@
|
||||
<div ng-hide="installationDetailsForm" class="form-group">
|
||||
<label class="col-sm-3 control-label"></label>
|
||||
<div class="col-sm-4">
|
||||
<button ng-disabled="websiteCreationForm.dom.$error.required || websiteCreationForm.email.$invalid"
|
||||
type="button" ng-click="createWebsite()"
|
||||
<button type="button" ng-click="createWordPresssite()"
|
||||
class="btn btn-primary btn-lg">{% trans "Create Website" %}</button>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -19,6 +19,9 @@ urlpatterns = [
|
||||
### WordPress
|
||||
url(r'^createWordpress$', views.WPCreate, name='createWordpress'),
|
||||
|
||||
###WordPress Ajax
|
||||
url(r'^submitWorpressCreation', views.submitWorpressCreation, name='submitWorpressCreation'),
|
||||
|
||||
#### AddPlugin
|
||||
url(r'^ConfigurePlugins$', views.ConfigurePlugins, name='ConfigurePlugins'),
|
||||
url(r'^Addnewplugin$', views.Addnewplugin, name='Addnewplugin'),
|
||||
|
||||
@@ -161,6 +161,28 @@ def Addplugineidt(request):
|
||||
return redirect(loadLoginPage)
|
||||
|
||||
|
||||
def submitWorpressCreation(request):
|
||||
try:
|
||||
userID = request.session['userID']
|
||||
|
||||
result = pluginManager.preWebsiteCreation(request)
|
||||
|
||||
if result != 200:
|
||||
return result
|
||||
|
||||
wm = WebsiteManager()
|
||||
coreResult = wm.submitWorpressCreation(userID, json.loads(request.body))
|
||||
|
||||
result = pluginManager.postWebsiteCreation(request, coreResult)
|
||||
if result != 200:
|
||||
return result
|
||||
|
||||
return coreResult
|
||||
|
||||
except KeyError:
|
||||
return redirect(loadLoginPage)
|
||||
|
||||
|
||||
|
||||
def modifyWebsite(request):
|
||||
try:
|
||||
|
||||
@@ -65,7 +65,7 @@ class WebsiteManager:
|
||||
phps = PHPManager.findPHPVersions()
|
||||
FinalVersions = []
|
||||
#logging.CyberCPLogFileWriter.writeToFile("jassssssssss...............")
|
||||
|
||||
userobj = Administrator.objects.get(pk=userID)
|
||||
counter = 0
|
||||
try:
|
||||
import requests
|
||||
@@ -81,9 +81,11 @@ class WebsiteManager:
|
||||
except:
|
||||
FinalVersions = ['5.6', '5.5.3', '5.5.2']
|
||||
|
||||
Plugins = wpplugins.objects.filter(owner=userobj)
|
||||
|
||||
# logging.CyberCPLogFileWriter.writeToFile("FinalVersions:%s"+str(FinalVersions))
|
||||
|
||||
Data = {'packageList': packagesName, "owernList": adminNames, 'phps': phps, 'WPVersions': FinalVersions}
|
||||
Data = {'packageList': packagesName, "owernList": adminNames, 'WPVersions': FinalVersions, 'Plugins': Plugins }
|
||||
proc = httpProc(request, 'websiteFunctions/WPCreate.html',
|
||||
Data, 'createWebsite')
|
||||
return proc.render()
|
||||
@@ -340,6 +342,47 @@ class WebsiteManager:
|
||||
})
|
||||
return proc.render()
|
||||
|
||||
|
||||
def submitWorpressCreation(self, userID=None, data=None):
|
||||
try:
|
||||
currentACL = ACLManager.loadedACL(userID)
|
||||
admin = Administrator.objects.get(pk=userID)
|
||||
|
||||
extraArgs = {}
|
||||
extraArgs['adminID'] = admin.pk
|
||||
extraArgs['domainName'] = data['domain']
|
||||
extraArgs['WPVersion'] = data['WPVersion']
|
||||
extraArgs['blogTitle'] = data['title']
|
||||
extraArgs['PluginsThemes'] = data['PluginsThemes']
|
||||
extraArgs['adminUser'] = data['adminUser']
|
||||
extraArgs['PasswordByPass'] = data['PasswordByPass']
|
||||
extraArgs['adminPassword'] = data['PasswordByPass']
|
||||
extraArgs['adminEmail'] = data['Email']
|
||||
extraArgs['updates'] = data['AutomaticUpdates']
|
||||
extraArgs['Plugins'] = data['Plugins']
|
||||
extraArgs['Themes'] = data['Themes']
|
||||
extraArgs['websiteOwner'] = data['websiteOwner']
|
||||
extraArgs['package'] = data['package']
|
||||
extraArgs['home'] = "1"
|
||||
extraArgs['tempStatusPath'] = "/home/cyberpanel/" + str(randint(1000, 9999))
|
||||
|
||||
|
||||
background = ApplicationInstaller('wordpressInstallNew', extraArgs)
|
||||
background.start()
|
||||
|
||||
time.sleep(2)
|
||||
|
||||
data_ret = {'status': 1, 'installStatus': 1, 'error_message': 'None',
|
||||
'tempStatusPath': extraArgs['tempStatusPath']}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
|
||||
except BaseException as msg:
|
||||
data_ret = {'status': 0, 'installStatus': 0, 'error_message': str(msg)}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
def submitWebsiteCreation(self, userID=None, data=None):
|
||||
try:
|
||||
currentACL = ACLManager.loadedACL(userID)
|
||||
@@ -2508,11 +2551,11 @@ StrictHostKeyChecking no
|
||||
adminEmail = data['ownerEmail']
|
||||
websiteOwner = data['websiteOwner']
|
||||
ownerPassword = data['ownerPassword']
|
||||
data['ssl'] = 0
|
||||
data['ssl'] = 1
|
||||
data['dkimCheck'] = 0
|
||||
data['openBasedir'] = 1
|
||||
data['adminEmail'] = data['ownerEmail']
|
||||
data['phpSelection'] = "PHP 7.0"
|
||||
data['phpSelection'] = "PHP 7.4"
|
||||
data['package'] = data['packageName']
|
||||
try:
|
||||
websitesLimit = data['websitesLimit']
|
||||
|
||||
Reference in New Issue
Block a user