wordpresscreateandinstalldone

This commit is contained in:
habi
2022-05-19 17:38:21 +05:00
parent c69a686f25
commit f0f9ed5b40
7 changed files with 420 additions and 20 deletions

View File

@@ -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!')

View File

@@ -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) {

View File

@@ -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

View File

@@ -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>

View File

@@ -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'),

View File

@@ -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:

View File

@@ -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']