mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2025-11-06 13:25:51 +01:00
rspamd
This commit is contained in:
@@ -74,7 +74,7 @@ class secMiddleware:
|
||||
|
||||
if request.build_absolute_uri().find('api/remoteTransfer') > -1 or request.build_absolute_uri().find('api/verifyConn') > -1 or request.build_absolute_uri().find('webhook') > -1 or request.build_absolute_uri().find('saveSpamAssassinConfigurations') > -1 or request.build_absolute_uri().find('docker') > -1 or request.build_absolute_uri().find('cloudAPI') > -1 or request.build_absolute_uri().find('verifyLogin') > -1 or request.build_absolute_uri().find('submitUserCreation') > -1:
|
||||
continue
|
||||
if key == 'key' or key == 'cert' or key == 'recordContentAAAA' or key == 'backupDestinations' or key == 'ports' \
|
||||
if key == 'CLAMAV_VIRUS' or key == "Rspamdserver" or key == 'smtpd_milters' or key == 'non_smtpd_milters' or key == 'key' or key == 'cert' or key == 'recordContentAAAA' or key == 'backupDestinations' or key == 'ports' \
|
||||
or key == 'imageByPass' or key == 'passwordByPass' or key == 'cronCommand' \
|
||||
or key == 'emailMessage' or key == 'configData' or key == 'rewriteRules' \
|
||||
or key == 'modSecRules' or key == 'recordContentTXT' or key == 'SecAuditLogRelevantStatus' \
|
||||
|
||||
@@ -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 = ['*']
|
||||
|
||||
@@ -111,8 +111,8 @@ DATABASES = {
|
||||
'default': {
|
||||
'ENGINE': 'django.db.backends.mysql',
|
||||
'NAME': 'cyberpanel',
|
||||
'USER': 'cyberpanel',
|
||||
'PASSWORD': 'Bz9gF7Hr7X4RtD',
|
||||
'USER': 'root',
|
||||
'PASSWORD': 'VY7ZbcQREu6mSC',
|
||||
'HOST': 'localhost',
|
||||
'PORT': ''
|
||||
},
|
||||
@@ -120,7 +120,7 @@ DATABASES = {
|
||||
'ENGINE': 'django.db.backends.mysql',
|
||||
'NAME': 'mysql',
|
||||
'USER': 'root',
|
||||
'PASSWORD': 'sXm5VlRaAsXkDd',
|
||||
'PASSWORD': 'VY7ZbcQREu6mSC',
|
||||
'HOST': 'localhost',
|
||||
'PORT': '',
|
||||
},
|
||||
|
||||
@@ -1034,6 +1034,9 @@
|
||||
<li><a href="{% url 'MailScanner' %}"
|
||||
title="{% trans 'MailScanner' %}"><span>{% trans "MailScanner" %}</span></a>
|
||||
</li>
|
||||
<li><a href="{% url 'Rspamd' %}"
|
||||
title="{% trans 'Rspamd' %}"><span>{% trans "Rspamd" %}</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div><!-- .sidebar-submenu -->
|
||||
|
||||
@@ -678,7 +678,7 @@ app.controller('SpamAssassin', function ($scope, $http, $timeout, $window) {
|
||||
$scope.SpamAssassinLoading = true;
|
||||
$scope.failedToStartInallation = true;
|
||||
$scope.couldNotConnect = true;
|
||||
$scope.SpamAssassinSuccessfullyInstalled = true;
|
||||
$scope.RspamdSuccessfullyInstalled = true;
|
||||
$scope.installationFailed = true;
|
||||
|
||||
|
||||
@@ -955,6 +955,654 @@ app.controller('SpamAssassin', function ($scope, $http, $timeout, $window) {
|
||||
|
||||
/* Java script code for SpamAssassin */
|
||||
|
||||
|
||||
/* Rspamd start */
|
||||
app.controller('Rspamd', function ($scope, $http, $timeout, $window) {
|
||||
$scope.RspamdNotifyBox = true;
|
||||
$scope.RspamdInstallBox = true;
|
||||
$scope.RspamdLoading = true;
|
||||
$scope.failedToStartInallation = true;
|
||||
$scope.couldNotConnect = true;
|
||||
$scope.RspamdSuccessfullyInstalled = true;
|
||||
$scope.installationFailed = true;
|
||||
$scope.failedToSave = true;
|
||||
$scope.successfullySaved = true;
|
||||
$scope.ActionValue = true;
|
||||
$scope.installedrspamd = false;
|
||||
$scope.uninstalldiv = true;
|
||||
$scope.uninstallRspamdNotifyBox = true;
|
||||
$scope.uninstallRspamdInstallBox = true;
|
||||
$scope.uninstallbutton = true;
|
||||
|
||||
|
||||
$scope.installRspamd = function () {
|
||||
|
||||
$scope.RspamdNotifyBox = true;
|
||||
$scope.RspamdInstallBox = true;
|
||||
$scope.RspamdLoading = false;
|
||||
$scope.failedToStartInallation = true;
|
||||
$scope.couldNotConnect = true;
|
||||
$scope.RspamdSuccessfullyInstalled = true;
|
||||
$scope.installationFailed = true;
|
||||
|
||||
var url = "/emailPremium/installRspamd";
|
||||
|
||||
var data = {};
|
||||
|
||||
var config = {
|
||||
headers: {
|
||||
'X-CSRFToken': getCookie('csrftoken')
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
$http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
|
||||
|
||||
|
||||
function ListInitialDatas(response) {
|
||||
|
||||
|
||||
if (response.data.status === 1) {
|
||||
|
||||
$scope.RspamdNotifyBox = true;
|
||||
$scope.RspamdInstallBox = false;
|
||||
$scope.RspamdLoading = false;
|
||||
$scope.failedToStartInallation = true;
|
||||
$scope.couldNotConnect = true;
|
||||
$scope.RspamdSuccessfullyInstalled = true;
|
||||
$scope.installationFailed = true;
|
||||
|
||||
getRequestStatus();
|
||||
|
||||
} else {
|
||||
$scope.errorMessage = response.data.error_message;
|
||||
|
||||
$scope.RspamdNotifyBox = false;
|
||||
$scope.RspamdInstallBox = true;
|
||||
$scope.RspamdLoading = true;
|
||||
$scope.failedToStartInallation = false;
|
||||
$scope.couldNotConnect = true;
|
||||
$scope.RspamdSuccessfullyInstalled = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function cantLoadInitialDatas(response) {
|
||||
|
||||
$scope.RspamdNotifyBox = false;
|
||||
$scope.RspamdInstallBox = false;
|
||||
$scope.RspamdLoading = true;
|
||||
$scope.failedToStartInallation = true;
|
||||
$scope.couldNotConnect = false;
|
||||
$scope.RspamdSuccessfullyInstalled = true;
|
||||
$scope.installationFailed = true;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
function getRequestStatus() {
|
||||
|
||||
$scope.RspamdNotifyBox = true;
|
||||
$scope.RspamdInstallBox = false;
|
||||
$scope.RspamdLoading = false;
|
||||
$scope.failedToStartInallation = true;
|
||||
$scope.couldNotConnect = true;
|
||||
$scope.RspamdSuccessfullyInstalled = true;
|
||||
$scope.installationFailed = true;
|
||||
|
||||
var url = "/emailPremium/installStatusRspamd";
|
||||
|
||||
var data = {};
|
||||
|
||||
var config = {
|
||||
headers: {
|
||||
'X-CSRFToken': getCookie('csrftoken')
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
$http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
|
||||
|
||||
|
||||
function ListInitialDatas(response) {
|
||||
|
||||
|
||||
if (response.data.abort === 0) {
|
||||
|
||||
$scope.RspamdNotifyBox = true;
|
||||
$scope.RspamdInstallBox = false;
|
||||
$scope.RspamdLoading = false;
|
||||
$scope.failedToStartInallation = true;
|
||||
$scope.couldNotConnect = true;
|
||||
$scope.RspamdSuccessfullyInstalled = true;
|
||||
$scope.installationFailed = true;
|
||||
|
||||
$scope.requestData = response.data.requestStatus;
|
||||
$timeout(getRequestStatus, 1000);
|
||||
} else {
|
||||
// Notifications
|
||||
$timeout.cancel();
|
||||
$scope.RspamdNotifyBox = false;
|
||||
$scope.RspamdInstallBox = false;
|
||||
$scope.RspamdLoading = true;
|
||||
$scope.failedToStartInallation = true;
|
||||
$scope.couldNotConnect = true;
|
||||
|
||||
$scope.requestData = response.data.requestStatus;
|
||||
|
||||
if (response.data.installed === 0) {
|
||||
$scope.installationFailed = false;
|
||||
$scope.errorMessage = response.data.error_message;
|
||||
} else {
|
||||
$scope.RspamdSuccessfullyInstalled = false;
|
||||
$timeout(function () {
|
||||
$window.location.reload();
|
||||
}, 3000);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function cantLoadInitialDatas(response) {
|
||||
|
||||
$scope.RspamdNotifyBox = false;
|
||||
$scope.RspamdInstallBox = false;
|
||||
$scope.RspamdLoading = true;
|
||||
$scope.failedToStartInallation = true;
|
||||
$scope.couldNotConnect = false;
|
||||
$scope.RspamdSuccessfullyInstalled = true;
|
||||
$scope.installationFailed = true;
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var antivirus_status = false;
|
||||
var scan_mime_parts = false;
|
||||
var log_clean = false;
|
||||
|
||||
|
||||
$('#antivirus_status').change(function () {
|
||||
antivirus_status = $(this).prop('checked');
|
||||
});
|
||||
$('#scan_mime_parts').change(function () {
|
||||
scan_mime_parts = $(this).prop('checked');
|
||||
});
|
||||
$('#log_clean').change(function () {
|
||||
log_clean = $(this).prop('checked');
|
||||
});
|
||||
|
||||
fetchRspamdSettings();
|
||||
|
||||
function fetchRspamdSettings() {
|
||||
|
||||
$scope.RspamdLoading = false;
|
||||
|
||||
var url = "/emailPremium/fetchRspamdSettings";
|
||||
|
||||
var data = {};
|
||||
|
||||
var config = {
|
||||
headers: {
|
||||
'X-CSRFToken': getCookie('csrftoken')
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
$http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
|
||||
|
||||
|
||||
function ListInitialDatas(response) {
|
||||
|
||||
$scope.RspamdLoading = true;
|
||||
$scope.ActionValue = false;
|
||||
|
||||
if (response.data.fetchStatus === 1) {
|
||||
|
||||
|
||||
if (response.data.installed === 1) {
|
||||
$scope.uninstallbutton = false;
|
||||
|
||||
if (response.data.enabled === true) {
|
||||
$('#antivirus_status').bootstrapToggle('on');
|
||||
} else if (response.data.enabled === false) {
|
||||
$('#antivirus_status').bootstrapToggle('off');
|
||||
}
|
||||
if (response.data.scan_mime_parts === true) {
|
||||
$('#scan_mime_parts').bootstrapToggle('on');
|
||||
} else if (response.data.scan_mime_parts === false) {
|
||||
$('#scan_mime_parts').bootstrapToggle('off');
|
||||
}
|
||||
if (response.data.log_clean === true) {
|
||||
$('#log_clean').bootstrapToggle('on');
|
||||
} else if (response.data.log_clean === false) {
|
||||
$('#log_clean').bootstrapToggle('off');
|
||||
}
|
||||
|
||||
$scope.max_size = response.data.max_Size;
|
||||
$scope.server = response.data.Server;
|
||||
$scope.CLAMAV_VIRUS = response.data.CLAMAV_VIRUS;
|
||||
$('#selctedaction').text(response.data.action);
|
||||
$scope.smtpd_milters = response.data.smtpd_milters;
|
||||
$scope.non_smtpd_milters = response.data.non_smtpd_milters;
|
||||
$scope.read_servers = response.data.read_servers;
|
||||
$scope.write_servers = response.data.write_servers;
|
||||
// $scope.required_score = response.data.required_score;
|
||||
//
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function cantLoadInitialDatas(response) {
|
||||
$scope.RspamdLoading = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
$scope.saveRspamdConfigurations = function () {
|
||||
$scope.failedToSave = true;
|
||||
$scope.successfullySaved = true;
|
||||
$scope.RspamdLoading = false;
|
||||
$scope.couldNotConnect = true;
|
||||
url = "/emailPremium/saveRspamdConfigurations";
|
||||
|
||||
|
||||
var data = {
|
||||
status: antivirus_status,
|
||||
scan_mime_parts: scan_mime_parts,
|
||||
log_clean: log_clean,
|
||||
action_rspamd: $scope.action_rspamd,
|
||||
max_size: $scope.max_size,
|
||||
Rspamdserver: $scope.server,
|
||||
CLAMAV_VIRUS: $scope.CLAMAV_VIRUS,
|
||||
|
||||
};
|
||||
// console.log(data)
|
||||
|
||||
var config = {
|
||||
headers: {
|
||||
'X-CSRFToken': getCookie('csrftoken')
|
||||
}
|
||||
};
|
||||
|
||||
if ($scope.action_rspamd == undefined) {
|
||||
alert('Please Select Action')
|
||||
$scope.RspamdLoading = true;
|
||||
} else {
|
||||
$http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
|
||||
}
|
||||
|
||||
|
||||
function ListInitialDatas(response) {
|
||||
|
||||
|
||||
if (response.data.saveStatus === 1) {
|
||||
|
||||
$scope.failedToSave = true;
|
||||
$scope.successfullySaved = false;
|
||||
$scope.RspamdLoading = true;
|
||||
$scope.couldNotConnect = true;
|
||||
|
||||
location.reload();
|
||||
|
||||
} else {
|
||||
$scope.errorMessage = response.data.error_message;
|
||||
|
||||
$scope.failedToSave = false;
|
||||
$scope.successfullySaved = true;
|
||||
$scope.RspamdLoading = true;
|
||||
$scope.couldNotConnect = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function cantLoadInitialDatas(response) {
|
||||
$scope.failedToSave = true;
|
||||
$scope.successfullySaved = true;
|
||||
$scope.RspamdLoading = true;
|
||||
$scope.couldNotConnect = false;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
///postfix;
|
||||
$scope.postfixfailedToSave = true;
|
||||
$scope.postfixsuccessfullySaved = true;
|
||||
$scope.postfixcouldNotConnect = true;
|
||||
$scope.postfixLoading = true;
|
||||
|
||||
|
||||
$scope.savepostfixConfigurations = function () {
|
||||
$scope.postfixLoading = false;
|
||||
url = "/emailPremium/savepostfixConfigurations";
|
||||
var data = {
|
||||
smtpd_milters: $scope.smtpd_milters,
|
||||
non_smtpd_milters: $scope.non_smtpd_milters,
|
||||
};
|
||||
var config = {
|
||||
headers: {
|
||||
'X-CSRFToken': getCookie('csrftoken')
|
||||
}
|
||||
};
|
||||
$http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
|
||||
|
||||
function ListInitialDatas(response) {
|
||||
|
||||
|
||||
if (response.data.saveStatus === 1) {
|
||||
|
||||
$scope.postfixfailedToSave = true;
|
||||
$scope.postfixsuccessfullySaved = false;
|
||||
$scope.postfixLoading = true;
|
||||
$scope.postfixcouldNotConnect = true;
|
||||
|
||||
location.reload();
|
||||
|
||||
} else {
|
||||
$scope.errorMessage = response.data.error_message;
|
||||
|
||||
$scope.postfixfailedToSave = false;
|
||||
$scope.postfixsuccessfullySaved = true;
|
||||
$scope.postfixLoading = true;
|
||||
$scope.postfixcouldNotConnect = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function cantLoadInitialDatas(response) {
|
||||
$scope.postfixfailedToSave = true;
|
||||
$scope.postfixsuccessfullySaved = true;
|
||||
$scope.postfixLoading = true;
|
||||
$scope.postfixcouldNotConnect = false;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
////Redis
|
||||
$scope.RedisfailedToSave = true;
|
||||
$scope.RedissuccessfullySaved = true;
|
||||
$scope.RediscouldNotConnect = true;
|
||||
$scope.RedisLoading = true;
|
||||
|
||||
$scope.saveRedisConfigurations = function () {
|
||||
$scope.RedisLoading = false;
|
||||
url = "/emailPremium/saveRedisConfigurations";
|
||||
var data = {
|
||||
write_servers: $scope.write_servers,
|
||||
read_servers: $scope.read_servers,
|
||||
};
|
||||
var config = {
|
||||
headers: {
|
||||
'X-CSRFToken': getCookie('csrftoken')
|
||||
}
|
||||
};
|
||||
$http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
|
||||
|
||||
function ListInitialDatas(response) {
|
||||
|
||||
|
||||
if (response.data.saveStatus === 1) {
|
||||
|
||||
$scope.RedisfailedToSave = true;
|
||||
$scope.RedissuccessfullySaved = false;
|
||||
$scope.RedisLoading = true;
|
||||
$scope.RediscouldNotConnect = true;
|
||||
|
||||
location.reload();
|
||||
|
||||
} else {
|
||||
$scope.errorMessage = response.data.error_message;
|
||||
|
||||
$scope.RedisfailedToSave = false;
|
||||
$scope.RedissuccessfullySaved = true;
|
||||
$scope.RedisLoading = true;
|
||||
$scope.RediscouldNotConnect = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function cantLoadInitialDatas(response) {
|
||||
$scope.RedisfailedToSave = true;
|
||||
$scope.RedissuccessfullySaved = true;
|
||||
$scope.RedisLoading = true;
|
||||
$scope.RediscouldNotConnect = false;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
////uninstall
|
||||
|
||||
$scope.RspamduninstallLoading = true;
|
||||
$scope.uninstallationProgress = true;
|
||||
$scope.errorMessageBox = true;
|
||||
$scope.uninstallsuccess = true;
|
||||
$scope.couldNotConnect = true;
|
||||
|
||||
|
||||
$scope.unistallRspamd = function () {
|
||||
$('#UninstallRspamdmodal').modal('hide');
|
||||
$scope.RspamdLoading = false;
|
||||
$scope.uninstalldiv = false;
|
||||
$scope.uninstallbutton = true;
|
||||
$scope.installedrspamd = true;
|
||||
|
||||
var url = "/emailPremium/unistallRspamd";
|
||||
var data = {};
|
||||
var config = {
|
||||
headers: {
|
||||
'X-CSRFToken': getCookie('csrftoken')
|
||||
}
|
||||
};
|
||||
$http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
|
||||
|
||||
function ListInitialDatas(response) {
|
||||
console.log(response.data)
|
||||
|
||||
if (response.data.status === 1) {
|
||||
console.log(response.data)
|
||||
|
||||
$scope.uninstallRspamdNotifyBox = true;
|
||||
$scope.uninstallRspamdInstallBox = false;
|
||||
$scope.RspamdLoading = false;
|
||||
$scope.failedToStartInallation = true;
|
||||
$scope.couldNotConnect = true;
|
||||
$scope.RspamdSuccessfullyInstalled = true;
|
||||
$scope.installationFailed = true;
|
||||
|
||||
getuninstallRequestStatus();
|
||||
|
||||
} else {
|
||||
$scope.errorMessage = response.data.error_message;
|
||||
|
||||
$scope.uninstallRspamdNotifyBox = false;
|
||||
$scope.uninstallRspamdInstallBox = true;
|
||||
$scope.RspamdLoading = true;
|
||||
$scope.failedToStartInallation = false;
|
||||
$scope.couldNotConnect = true;
|
||||
$scope.RspamdSuccessfullyInstalled = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function cantLoadInitialDatas(response) {
|
||||
|
||||
$scope.uninstallRspamdNotifyBox = false;
|
||||
$scope.uninstallRspamdInstallBox = false;
|
||||
$scope.RspamdLoading = true;
|
||||
$scope.failedToStartInallation = true;
|
||||
$scope.couldNotConnect = false;
|
||||
$scope.RspamdSuccessfullyInstalled = true;
|
||||
$scope.installationFailed = true;
|
||||
}
|
||||
};
|
||||
|
||||
function getuninstallRequestStatus() {
|
||||
|
||||
$scope.uninstallRspamdNotifyBox = true;
|
||||
$scope.uninstallRspamdInstallBox = false;
|
||||
$scope.RspamdLoading = false;
|
||||
$scope.failedToStartInallation = true;
|
||||
$scope.couldNotConnect = true;
|
||||
$scope.RspamdSuccessfullyInstalled = true;
|
||||
$scope.installationFailed = true;
|
||||
|
||||
var url = "/emailPremium/uninstallStatusRspamd";
|
||||
|
||||
var data = {};
|
||||
|
||||
var config = {
|
||||
headers: {
|
||||
'X-CSRFToken': getCookie('csrftoken')
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
$http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
|
||||
|
||||
|
||||
function ListInitialDatas(response) {
|
||||
|
||||
|
||||
if (response.data.abort === 0) {
|
||||
|
||||
$scope.uninstallRspamdNotifyBox = true;
|
||||
$scope.uninstallRspamdInstallBox = false;
|
||||
$scope.RspamdLoading = false;
|
||||
$scope.failedToStartInallation = true;
|
||||
$scope.couldNotConnect = true;
|
||||
$scope.RspamdSuccessfullyInstalled = true;
|
||||
$scope.installationFailed = true;
|
||||
|
||||
$scope.requestData = response.data.requestStatus;
|
||||
$timeout(getuninstallRequestStatus, 1000);
|
||||
} else {
|
||||
// Notifications
|
||||
$timeout.cancel();
|
||||
$scope.uninstallRspamdNotifyBox = false;
|
||||
$scope.uninstallRspamdInstallBox = false;
|
||||
$scope.RspamdLoading = true;
|
||||
$scope.failedToStartInallation = true;
|
||||
$scope.couldNotConnect = true;
|
||||
|
||||
$scope.requestData = response.data.requestStatus;
|
||||
|
||||
if (response.data.installed === 0) {
|
||||
$scope.installationFailed = false;
|
||||
$scope.errorMessage = response.data.error_message;
|
||||
} else {
|
||||
$scope.RspamdSuccessfullyInstalled = false;
|
||||
$timeout(function () {
|
||||
location.reload();
|
||||
}, 3000);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function cantLoadInitialDatas(response) {
|
||||
|
||||
$scope.uninstallRspamdNotifyBox = false;
|
||||
$scope.uninstallRspamdInstallBox = false;
|
||||
$scope.RspamdLoading = true;
|
||||
$scope.failedToStartInallation = true;
|
||||
$scope.couldNotConnect = false;
|
||||
$scope.RspamdSuccessfullyInstalled = true;
|
||||
$scope.installationFailed = true;
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// function getUninstallationStatus(){
|
||||
// $scope.RspamduninstallLoading = false;
|
||||
// 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) {
|
||||
// $scope.RspamduninstallLoading = true;
|
||||
//
|
||||
// if (response.data.abort === 1) {
|
||||
//
|
||||
// if (response.data.installStatus === 1) {
|
||||
//
|
||||
//
|
||||
// $scope.RspamduninstallLoading = true;
|
||||
// $scope.uninstallationProgress = false;
|
||||
// $scope.errorMessageBox = true;
|
||||
// $scope.uninstallsuccess = false;
|
||||
// $scope.couldNotConnect = true;
|
||||
//
|
||||
//
|
||||
// $("#installProgress").css("width", "100%");
|
||||
// $("#installProgressbackup").css("width", "100%");
|
||||
// $scope.installPercentage = "100";
|
||||
// $scope.currentStatus = response.data.currentStatus;
|
||||
// $timeout.cancel();
|
||||
//
|
||||
//
|
||||
// } else {
|
||||
//
|
||||
// $scope.RspamduninstallLoading = true;
|
||||
// $scope.uninstallationProgress = false;
|
||||
// $scope.errorMessageBox = false;
|
||||
// $scope.uninstallsuccess = true;
|
||||
// $scope.couldNotConnect = true;
|
||||
// $scope.errorMessage = response.data.error_message;
|
||||
//
|
||||
// $("#installProgress").css("width", "0%");
|
||||
// $("#installProgressbackup").css("width", "0%");
|
||||
// $scope.installPercentage = "0";
|
||||
// $scope.goBackDisable = false;
|
||||
//
|
||||
//
|
||||
// }
|
||||
//
|
||||
// } else {
|
||||
//
|
||||
// $("#installProgress").css("width", response.data.uninstallationProgress + "%");
|
||||
// $("#installProgressbackup").css("width", response.data.uninstallationProgress + "%");
|
||||
// $scope.installPercentage = response.data.uninstallationProgress;
|
||||
// $scope.currentStatus = response.data.currentStatus;
|
||||
// $timeout(getCreationStatus, 1000);
|
||||
//
|
||||
// }
|
||||
//
|
||||
// }
|
||||
//
|
||||
// function cantLoadInitialDatas(response) {
|
||||
// $('#wordpresshomeloading').hide();
|
||||
// $scope.RspamduninstallLoading = true;
|
||||
// $scope.uninstallationProgress = false;
|
||||
// $scope.errorMessageBox = true;
|
||||
// $scope.uninstallsuccess = true;
|
||||
// $scope.couldNotConnect = false;
|
||||
//
|
||||
//
|
||||
// }
|
||||
// }
|
||||
|
||||
});
|
||||
|
||||
|
||||
/* Java script code for Email Policy Server */
|
||||
|
||||
app.controller('policyServer', function ($scope, $http, $timeout, $window) {
|
||||
|
||||
409
emailPremium/templates/emailPremium/Rspamd.html
Normal file
409
emailPremium/templates/emailPremium/Rspamd.html
Normal file
@@ -0,0 +1,409 @@
|
||||
{% extends "baseTemplate/index.html" %}
|
||||
{% load i18n %}
|
||||
{% block title %}{% trans "Rspamd - CyberPanel" %}{% endblock %}
|
||||
{% block content %}
|
||||
|
||||
{% load static %}
|
||||
{% get_current_language as LANGUAGE_CODE %}
|
||||
<!-- Current language: {{ LANGUAGE_CODE }} -->
|
||||
|
||||
|
||||
<div class="container">
|
||||
<div id="page-title">
|
||||
<h2>{% trans "Rspamd Configurations!" %} - <a target="_blank"
|
||||
href="http://go.cyberpanel.net/SpamAssassin"
|
||||
style="height: 23px;line-height: 21px;"
|
||||
class="btn btn-border btn-alt border-red btn-link font-red"
|
||||
title=""><span>{% trans "Rspamd Docs" %}</span></a>
|
||||
</h2>
|
||||
<p>{% trans "On this page you can configure RSPAMD settings." %}</p>
|
||||
</div>
|
||||
|
||||
<div ng-controller="Rspamd" class="example-box-wrapper">
|
||||
<div class="panel panel-body">
|
||||
<div style="width: 100%; margin: 0 auto">
|
||||
<div class="col-lg-10" style="float: left">
|
||||
<h3 class="content-box-header">
|
||||
{% trans "Rspamd" %} <img ng-hide="RspamdLoading" src="/static/images/loading.gif">
|
||||
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
<div ng-hide="uninstallbutton" class="col-lg-2" style="float: left">
|
||||
<button type="button" data-toggle="modal" data-target="#UninstallRspamdmodal"
|
||||
class="btn btn-danger btn-lg btn-block">{% trans "uninstall." %}</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{#-------------------------------un install process----------------------------------#}
|
||||
<div ng-hide="uninstalldiv">
|
||||
<div class="col-md-12 text-center" style="margin-bottom: 2%;">
|
||||
<h4 class="mb-10">{% trans "Uninstalling Rspamd " %}
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
<!------ RSPAMD unInstall Log box ----------------->
|
||||
|
||||
<div ng-hide="uninstallRspamdNotifyBox" class="form-group">
|
||||
<label class="col-sm-3 control-label"></label>
|
||||
<div class="col-sm-6">
|
||||
|
||||
<div ng-hide="failedToStartInallation" class="alert alert-danger">
|
||||
<p>{% trans "Failed to start Uninstallation, Error message: " %} {$ errorMessage $}</p>
|
||||
</div>
|
||||
|
||||
<div ng-hide="couldNotConnect" class="alert alert-danger">
|
||||
<p>{% trans "Could not connect. Please refresh this page." %} </p>
|
||||
</div>
|
||||
|
||||
<div ng-hide="installationFailed" class="alert alert-danger">
|
||||
<p>{% trans "Installation failed." %} {$ errorMessage $}</p>
|
||||
</div>
|
||||
|
||||
<div ng-hide="RspamdSuccessfullyInstalled" class="alert alert-success">
|
||||
<p>{% trans "RSPAMD successfully Uninstalled, refreshing page in 3 seconds.." %}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div ng-hide="uninstallRspamdInstallBox" class="col-md-12">
|
||||
|
||||
<form action="/" id="" class="form-horizontal bordered-row">
|
||||
<div class="form-group">
|
||||
<div class="col-sm-12 text-center">
|
||||
<h3><img
|
||||
src="{% static 'firewall/icons/firewall.png' %}"> {% trans "Winter is coming, but so is RSPAMD." %}
|
||||
<img ng-hide="RspamdLoading" src="/static/images/loading.gif">
|
||||
</h3>
|
||||
</div>
|
||||
<div style="margin-top: 2%;" class="col-sm-12">
|
||||
<textarea ng-model="requestData" rows="15"
|
||||
class="form-control">{{ requestData }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
<!----- RSPAMD unInstall Log box ----------------->
|
||||
|
||||
|
||||
<div class="content-box-wrapper">
|
||||
<div class="row">
|
||||
|
||||
{% if checkIfRspamdInstalled == 0 %}
|
||||
|
||||
<div class="col-md-12 text-center" style="margin-bottom: 2%;">
|
||||
<h4 class="mb-10">{% trans "Rspamd is not installed " %}
|
||||
</h4>
|
||||
<button ng-click="installRspamd()" class="btn btn-alt btn-hover btn-blue-alt">
|
||||
<span>{% trans "Install Now." %}</span>
|
||||
<i class="glyph-icon icon-arrow-right"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<!------ RSPAMD Install Log box ----------------->
|
||||
|
||||
<div ng-hide="RspamdNotifyBox" class="form-group">
|
||||
<label class="col-sm-3 control-label"></label>
|
||||
<div class="col-sm-6">
|
||||
|
||||
<div ng-hide="failedToStartInallation" class="alert alert-danger">
|
||||
<p>{% trans "Failed to start installation, Error message: " %} {$ errorMessage
|
||||
$}</p>
|
||||
</div>
|
||||
|
||||
<div ng-hide="couldNotConnect" class="alert alert-danger">
|
||||
<p>{% trans "Could not connect. Please refresh this page." %} </p>
|
||||
</div>
|
||||
|
||||
<div ng-hide="installationFailed" class="alert alert-danger">
|
||||
<p>{% trans "Installation failed." %} {$ errorMessage $}</p>
|
||||
</div>
|
||||
|
||||
<div ng-hide="RspamdSuccessfullyInstalled" class="alert alert-success">
|
||||
<p>{% trans "RSPAMD successfully installed, refreshing page in 3 seconds.." %}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div ng-hide="RspamdInstallBox" class="col-md-12">
|
||||
|
||||
<form action="/" id="" class="form-horizontal bordered-row">
|
||||
<div class="form-group">
|
||||
<div class="col-sm-12 text-center">
|
||||
<h3><img
|
||||
src="{% static 'firewall/icons/firewall.png' %}"> {% trans "Winter is coming, but so is RSPAMD." %}
|
||||
<img ng-hide="RspamdLoading" src="/static/images/loading.gif">
|
||||
</h3>
|
||||
</div>
|
||||
<div style="margin-top: 2%;" class="col-sm-12">
|
||||
<textarea ng-model="requestData" rows="15"
|
||||
class="form-control">{{ requestData }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
<!----- RSPAMD Install Log box ----------------->
|
||||
{% else %}
|
||||
|
||||
<div ng-hide="installedrspamd">
|
||||
<!-----------------------------------------ClamAv--------------------------->
|
||||
<div style="padding: 2%" class="col-md-12">
|
||||
<h3 class="content-box-header">
|
||||
{% trans "ClamAV" %}
|
||||
</h3>
|
||||
<form action="/" id="createPackages" class="form-horizontal bordered-row">
|
||||
|
||||
<div ng-hide="phpDetailsBox" class="form-group">
|
||||
<label class="col-sm-4 control-label">Antivirus Status</label>
|
||||
<div class="col-sm-6">
|
||||
<input type="checkbox" id="antivirus_status" data-toggle="toggle">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label">Action</label>
|
||||
<div class="col-sm-6">
|
||||
<select class="form-control" ng-model="action_rspamd">
|
||||
<option selected="selected">Reject</option>
|
||||
<option>Unset</option>
|
||||
</select>
|
||||
</div>
|
||||
<div ng-hide="ActionValue" class="col-sm-2">
|
||||
<strong style="margin-top: 10px; ">Selected</strong>
|
||||
<strong ng-model="selctedaction" id="selctedaction"></strong>
|
||||
</div>
|
||||
</div>
|
||||
<div ng-hide="phpDetailsBox" class="form-group">
|
||||
<label class="col-sm-4 control-label">Scan Mime Parts</label>
|
||||
<div class="col-sm-6">
|
||||
<input type="checkbox" id="scan_mime_parts" data-toggle="toggle">
|
||||
</div>
|
||||
</div>
|
||||
<div ng-hide="phpDetailsBox" class="form-group">
|
||||
<label class="col-sm-4 control-label">Log Clean</label>
|
||||
<div class="col-sm-6">
|
||||
<input type="checkbox" id="log_clean" data-toggle="toggle">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label">Max Size</label>
|
||||
<div class="col-sm-6">
|
||||
<input type="text" class="form-control" ng-model="max_size" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label">Clamav virus</label>
|
||||
<div class="col-sm-6">
|
||||
<input type="text" class="form-control" ng-model="CLAMAV_VIRUS"
|
||||
required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label">Servers</label>
|
||||
<div class="col-sm-6">
|
||||
<input type="text" class="form-control" ng-model="server" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label"></label>
|
||||
<div class="col-sm-4">
|
||||
<button type="button" ng-click="saveRspamdConfigurations()"
|
||||
class="btn btn-primary btn-lg btn-block">{% trans "Save changes." %}</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label"></label>
|
||||
<div class="col-sm-6">
|
||||
|
||||
<div ng-hide="failedToSave" class="alert alert-danger">
|
||||
<p>{% trans "Failed to save RSPAMD configurations. Error message: " %}
|
||||
{$ errorMessage $}</p>
|
||||
</div>
|
||||
|
||||
<div ng-hide="successfullySaved" class="alert alert-success">
|
||||
<p>{% trans "RSPAMD configurations successfully saved." %}</p>
|
||||
</div>
|
||||
|
||||
<div ng-hide="couldNotConnect" class="alert alert-danger">
|
||||
<p>{% trans "Could not connect. Please refresh this page." %} </p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</form>
|
||||
</div>
|
||||
<!-----------------------------------------postfix--------------------------->
|
||||
<div style="padding: 2%" class="col-md-12">
|
||||
<h3 class="content-box-header">
|
||||
{% trans "Postfix" %}<img ng-hide="postfixLoading"
|
||||
src="/static/images/loading.gif">
|
||||
</h3>
|
||||
<form action="/" id="createPackages" class="form-horizontal bordered-row">
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label">Smtpd Milters</label>
|
||||
<div class="col-sm-6">
|
||||
<input type="text" class="form-control" ng-model="smtpd_milters"
|
||||
required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label">Non Smtpd Milters</label>
|
||||
<div class="col-sm-6">
|
||||
<input type="text" class="form-control" ng-model="non_smtpd_milters"
|
||||
required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label"></label>
|
||||
<div class="col-sm-4">
|
||||
<button type="button" ng-click="savepostfixConfigurations()"
|
||||
class="btn btn-primary btn-lg btn-block">{% trans "Save changes." %}</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label"></label>
|
||||
<div class="col-sm-6">
|
||||
|
||||
<div ng-hide="postfixfailedToSave" class="alert alert-danger">
|
||||
<p>{% trans "Failed to save Postfix configurations. Error message: " %}
|
||||
{$ errorMessage $}</p>
|
||||
</div>
|
||||
|
||||
<div ng-hide="postfixsuccessfullySaved" class="alert alert-success">
|
||||
<p>{% trans "Postfix configurations successfully saved." %}</p>
|
||||
</div>
|
||||
|
||||
<div ng-hide="postfixcouldNotConnect" class="alert alert-danger">
|
||||
<p>{% trans "Could not connect. Please refresh this page." %} </p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<!-----------------------------------------Redis--------------------------->
|
||||
<div style="padding: 2%" class="col-md-12">
|
||||
<h3 class="content-box-header">
|
||||
{% trans "Redis" %}<img ng-hide="RedisLoading" src="/static/images/loading.gif">
|
||||
</h3>
|
||||
<form action="/" id="createPackages" class="form-horizontal bordered-row">
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label">Write Servers</label>
|
||||
<div class="col-sm-6">
|
||||
<input type="text" class="form-control" ng-model="write_servers"
|
||||
required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label">Read Servers</label>
|
||||
<div class="col-sm-6">
|
||||
<input type="text" class="form-control" ng-model="read_servers"
|
||||
required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label"></label>
|
||||
<div class="col-sm-4">
|
||||
<button type="button" ng-click="saveRedisConfigurations()"
|
||||
class="btn btn-primary btn-lg btn-block">{% trans "Save changes." %}</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label"></label>
|
||||
<div class="col-sm-6">
|
||||
|
||||
<div ng-hide="RedisfailedToSave" class="alert alert-danger">
|
||||
<p>{% trans "Failed to save Redis configurations. Error message: " %}
|
||||
{$ errorMessage $}</p>
|
||||
</div>
|
||||
|
||||
<div ng-hide="RedissuccessfullySaved" class="alert alert-success">
|
||||
<p>{% trans "Redis configurations successfully saved." %}</p>
|
||||
</div>
|
||||
|
||||
<div ng-hide="RediscouldNotConnect" class="alert alert-danger">
|
||||
<p>{% trans "Could not connect. Please refresh this page." %} </p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
{% endif %}
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!----- Modal ----------------------->
|
||||
<div id="UninstallRspamdmodal" ng-model="UninstallRspamdmodal" class="modal fade" role="dialog">
|
||||
<div class="modal-dialog">
|
||||
|
||||
<!-- Modal content-->
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal">×
|
||||
</button>
|
||||
<h4 class="modal-title">{% trans "Uninstall Rspamd" %}
|
||||
</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p> Do You Want to Uninstall Rspamd? </p>
|
||||
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button"
|
||||
class="btn btn-primary" data-dismiss="modal" ng-click="unistallRspamd()">yes
|
||||
</button>
|
||||
<button type="button"
|
||||
class="btn btn-default" data-dismiss="modal">
|
||||
Close
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{% endblock %}
|
||||
@@ -1,6 +1,8 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
||||
stdout = "WARNING: apt does not have a stable CLI interface. Use with caution in scripts.rspamd/focal,now 1.9.4-2build4 amd64 [residual-config]"
|
||||
a= stdout.find("installed")
|
||||
if a != -1:
|
||||
print("1")
|
||||
else:
|
||||
print("0")
|
||||
@@ -42,6 +42,21 @@ urlpatterns = [
|
||||
url(r'^installMailScanner$', views.installMailScanner, name='installMailScanner'),
|
||||
url(r'^installStatusMailScanner$', views.installStatusMailScanner, name='installStatusMailScanner'),
|
||||
|
||||
|
||||
|
||||
url(r'^Rspamd$', views.Rspamd, name='Rspamd'),
|
||||
|
||||
url(r'^installRspamd$', views.installRspamd, name='installRspamd'),
|
||||
url(r'^installStatusRspamd$', views.installStatusRspamd, name='installStatusRspamd'),
|
||||
url(r'^fetchRspamdSettings$', views.fetchRspamdSettings, name='fetchRspamdSettings'),
|
||||
url(r'^saveRspamdConfigurations$', views.saveRspamdConfigurations, name='saveRspamdConfigurations'),
|
||||
url(r'^savepostfixConfigurations$', views.savepostfixConfigurations, name='savepostfixConfigurations'),
|
||||
url(r'^saveRedisConfigurations$', views.saveRedisConfigurations, name='saveRedisConfigurations'),
|
||||
url(r'^saveRedisConfigurations$', views.saveRedisConfigurations, name='saveRedisConfigurations'),
|
||||
url(r'^unistallRspamd$', views.unistallRspamd, name='unistallRspamd'),
|
||||
url(r'^uninstallStatusRspamd$', views.uninstallStatusRspamd, name='uninstallStatusRspamd'),
|
||||
|
||||
|
||||
url(r'^(?P<domain>(.*))$', views.emailLimits, name='emailLimits'),
|
||||
|
||||
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import time
|
||||
|
||||
from django.shortcuts import redirect
|
||||
from django.http import HttpResponse
|
||||
from mailServer.models import Domains, EUsers
|
||||
from plogical.applicationInstaller import ApplicationInstaller
|
||||
from websiteFunctions.models import Websites
|
||||
from loginSystem.views import loadLoginPage
|
||||
import plogical.CyberCPLogFileWriter as logging
|
||||
@@ -17,6 +19,7 @@ from plogical.acl import ACLManager
|
||||
from plogical.processUtilities import ProcessUtilities
|
||||
from plogical.httpProc import httpProc
|
||||
|
||||
|
||||
## Email Policy Server
|
||||
|
||||
def emailPolicyServer(request):
|
||||
@@ -24,6 +27,7 @@ def emailPolicyServer(request):
|
||||
None, 'admin')
|
||||
return proc.render()
|
||||
|
||||
|
||||
def fetchPolicyServerStatus(request):
|
||||
try:
|
||||
userID = request.session['userID']
|
||||
@@ -46,8 +50,7 @@ def fetchPolicyServerStatus(request):
|
||||
installCheck = 1
|
||||
break
|
||||
|
||||
|
||||
data_ret = {'status': 1, 'error_message': 'None', 'installCheck' : installCheck}
|
||||
data_ret = {'status': 1, 'error_message': 'None', 'installCheck': installCheck}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
@@ -63,6 +66,7 @@ def fetchPolicyServerStatus(request):
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
|
||||
def savePolicyServerStatus(request):
|
||||
try:
|
||||
userID = request.session['userID']
|
||||
@@ -111,10 +115,10 @@ def savePolicyServerStatus(request):
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
|
||||
## Email Policy Server configs
|
||||
|
||||
def listDomains(request):
|
||||
|
||||
websites = DomainLimits.objects.all()
|
||||
|
||||
## Check if Policy Server is installed.
|
||||
@@ -152,6 +156,7 @@ def listDomains(request):
|
||||
{"pagination": pagination, "installCheck": installCheck}, 'admin')
|
||||
return proc.render()
|
||||
|
||||
|
||||
def getFurtherDomains(request):
|
||||
try:
|
||||
userID = request.session['userID']
|
||||
@@ -164,7 +169,6 @@ def getFurtherDomains(request):
|
||||
|
||||
try:
|
||||
|
||||
|
||||
if request.method == 'POST':
|
||||
try:
|
||||
data = json.loads(request.body)
|
||||
@@ -188,13 +192,13 @@ def getFurtherDomains(request):
|
||||
|
||||
dic = {'domain': items.domain, 'emails': domain.eusers_set.all().count(),
|
||||
'monthlyLimit': domainLimits.monthlyLimit, 'monthlyUsed': domainLimits.monthlyUsed,
|
||||
'status':domainLimits.limitStatus}
|
||||
'status': domainLimits.limitStatus}
|
||||
|
||||
if checker == 0:
|
||||
json_data = json_data + json.dumps(dic)
|
||||
checker = 1
|
||||
else:
|
||||
json_data = json_data +',' + json.dumps(dic)
|
||||
json_data = json_data + ',' + json.dumps(dic)
|
||||
except BaseException as msg:
|
||||
try:
|
||||
domain = Domains.objects.get(domainOwner=items)
|
||||
@@ -231,6 +235,7 @@ def getFurtherDomains(request):
|
||||
json_data = json.dumps(dic)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
|
||||
def enableDisableEmailLimits(request):
|
||||
try:
|
||||
userID = request.session['userID']
|
||||
@@ -241,10 +246,8 @@ def enableDisableEmailLimits(request):
|
||||
else:
|
||||
return ACLManager.loadErrorJson()
|
||||
|
||||
|
||||
try:
|
||||
if request.method == 'POST':
|
||||
|
||||
data = json.loads(request.body)
|
||||
operationVal = data['operationVal']
|
||||
domainName = data['domainName']
|
||||
@@ -258,7 +261,6 @@ def enableDisableEmailLimits(request):
|
||||
command = 'cyberpanelCleaner purgeLimitDomain ' + domainName + ' ' + str(operationVal)
|
||||
cacheClient.handleCachePurgeRequest(command)
|
||||
|
||||
|
||||
dic = {'status': 1, 'error_message': 'None'}
|
||||
json_data = json.dumps(dic)
|
||||
return HttpResponse(json_data)
|
||||
@@ -274,7 +276,8 @@ def enableDisableEmailLimits(request):
|
||||
json_data = json.dumps(dic)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
def emailLimits(request,domain):
|
||||
|
||||
def emailLimits(request, domain):
|
||||
if Websites.objects.filter(domain=domain).exists():
|
||||
website = Websites.objects.get(domain=domain)
|
||||
domainEmail = Domains.objects.get(domainOwner=website)
|
||||
@@ -317,6 +320,7 @@ def emailLimits(request,domain):
|
||||
'admin')
|
||||
return proc.render()
|
||||
|
||||
|
||||
def changeDomainLimit(request):
|
||||
try:
|
||||
userID = request.session['userID']
|
||||
@@ -328,7 +332,6 @@ def changeDomainLimit(request):
|
||||
return ACLManager.loadErrorJson()
|
||||
try:
|
||||
if request.method == 'POST':
|
||||
|
||||
data = json.loads(request.body)
|
||||
newLimit = data['newLimit']
|
||||
domainName = data['domainName']
|
||||
@@ -357,6 +360,7 @@ def changeDomainLimit(request):
|
||||
json_data = json.dumps(dic)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
|
||||
def getFurtherEmail(request):
|
||||
try:
|
||||
userID = request.session['userID']
|
||||
@@ -389,13 +393,13 @@ def getFurtherEmail(request):
|
||||
|
||||
dic = {'email': item.email, 'monthlyLimit': emailLts.monthlyLimits,
|
||||
'monthlyUsed': emailLts.monthlyUsed, 'hourlyLimit': emailLts.hourlyLimit,
|
||||
'hourlyUsed':emailLts.hourlyUsed,'status': emailLts.limitStatus}
|
||||
'hourlyUsed': emailLts.hourlyUsed, 'status': emailLts.limitStatus}
|
||||
|
||||
if checker == 0:
|
||||
json_data = json_data + json.dumps(dic)
|
||||
checker = 1
|
||||
else:
|
||||
json_data = json_data +',' + json.dumps(dic)
|
||||
json_data = json_data + ',' + json.dumps(dic)
|
||||
except BaseException as msg:
|
||||
logging.CyberCPLogFileWriter.writeToFile(str(msg))
|
||||
|
||||
@@ -403,7 +407,6 @@ def getFurtherEmail(request):
|
||||
final_dic = {'status': 1, 'error_message': "None", "data": json_data}
|
||||
final_json = json.dumps(final_dic)
|
||||
|
||||
|
||||
return HttpResponse(final_json)
|
||||
|
||||
except BaseException as msg:
|
||||
@@ -417,6 +420,7 @@ def getFurtherEmail(request):
|
||||
json_data = json.dumps(dic)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
|
||||
def enableDisableIndividualEmailLimits(request):
|
||||
try:
|
||||
userID = request.session['userID']
|
||||
@@ -428,7 +432,6 @@ def enableDisableIndividualEmailLimits(request):
|
||||
return ACLManager.loadErrorJson()
|
||||
try:
|
||||
if request.method == 'POST':
|
||||
|
||||
data = json.loads(request.body)
|
||||
operationVal = data['operationVal']
|
||||
emailAddress = data['emailAddress']
|
||||
@@ -455,6 +458,7 @@ def enableDisableIndividualEmailLimits(request):
|
||||
json_data = json.dumps(dic)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
|
||||
def emailPage(request, emailAddress):
|
||||
Data = {}
|
||||
Data['emailAddress'] = emailAddress
|
||||
@@ -480,6 +484,7 @@ def emailPage(request, emailAddress):
|
||||
proc = httpProc(request, 'emailPremium/emailPage.html', Data, 'admin')
|
||||
return proc.render()
|
||||
|
||||
|
||||
def getEmailStats(request):
|
||||
try:
|
||||
userID = request.session['userID']
|
||||
@@ -491,14 +496,12 @@ def getEmailStats(request):
|
||||
return ACLManager.loadErrorJson()
|
||||
try:
|
||||
if request.method == 'POST':
|
||||
|
||||
data = json.loads(request.body)
|
||||
emailAddress = data['emailAddress']
|
||||
|
||||
email = EUsers.objects.get(email=emailAddress)
|
||||
emailLTS = EmailLimits.objects.get(email=email)
|
||||
|
||||
|
||||
final_dic = {'status': 1, 'error_message': "None", "monthlyLimit": emailLTS.monthlyLimits,
|
||||
'monthlyUsed': emailLTS.monthlyUsed, 'hourlyLimit': emailLTS.hourlyLimit,
|
||||
'hourlyUsed': emailLTS.hourlyUsed,
|
||||
@@ -506,7 +509,6 @@ def getEmailStats(request):
|
||||
|
||||
final_json = json.dumps(final_dic)
|
||||
|
||||
|
||||
return HttpResponse(final_json)
|
||||
|
||||
except BaseException as msg:
|
||||
@@ -520,6 +522,7 @@ def getEmailStats(request):
|
||||
json_data = json.dumps(dic)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
|
||||
def enableDisableIndividualEmailLogs(request):
|
||||
try:
|
||||
userID = request.session['userID']
|
||||
@@ -531,7 +534,6 @@ def enableDisableIndividualEmailLogs(request):
|
||||
return ACLManager.loadErrorJson()
|
||||
try:
|
||||
if request.method == 'POST':
|
||||
|
||||
data = json.loads(request.body)
|
||||
operationVal = data['operationVal']
|
||||
emailAddress = data['emailAddress']
|
||||
@@ -558,6 +560,7 @@ def enableDisableIndividualEmailLogs(request):
|
||||
json_data = json.dumps(dic)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
|
||||
def changeDomainEmailLimitsIndividual(request):
|
||||
try:
|
||||
userID = request.session['userID']
|
||||
@@ -594,11 +597,11 @@ def changeDomainEmailLimitsIndividual(request):
|
||||
emailLTS = EmailLimits.objects.get(email=email)
|
||||
currentEmailConsumption = emailLTS.monthlyLimits + currentEmailConsumption
|
||||
|
||||
|
||||
allowedLimit = domainLimit.monthlyLimit - currentEmailConsumption
|
||||
|
||||
if monthlyLimit > allowedLimit:
|
||||
dic = {'status': 0, 'error_message': 'You can not set this monthly limit, first increase limits for this domain.'}
|
||||
dic = {'status': 0,
|
||||
'error_message': 'You can not set this monthly limit, first increase limits for this domain.'}
|
||||
json_data = json.dumps(dic)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
@@ -612,7 +615,8 @@ def changeDomainEmailLimitsIndividual(request):
|
||||
|
||||
emailLTS.save()
|
||||
|
||||
command = 'cyberpanelCleaner purgeLimitEmail ' + emailAddress + ' ' + str(monthlyLimit) + ' ' + str(hourlyLimit)
|
||||
command = 'cyberpanelCleaner purgeLimitEmail ' + emailAddress + ' ' + str(monthlyLimit) + ' ' + str(
|
||||
hourlyLimit)
|
||||
cacheClient.handleCachePurgeRequest(command)
|
||||
|
||||
dic = {'status': 1, 'error_message': 'None'}
|
||||
@@ -630,6 +634,7 @@ def changeDomainEmailLimitsIndividual(request):
|
||||
json_data = json.dumps(dic)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
|
||||
def getEmailLogs(request):
|
||||
try:
|
||||
userID = request.session['userID']
|
||||
@@ -657,7 +662,7 @@ def getEmailLogs(request):
|
||||
|
||||
for item in logEntries:
|
||||
|
||||
dic = {'id': item.id, 'source': emailAddress, 'destination':item.destination,
|
||||
dic = {'id': item.id, 'source': emailAddress, 'destination': item.destination,
|
||||
'time': item.timeStamp}
|
||||
|
||||
if checker == 0:
|
||||
@@ -670,7 +675,6 @@ def getEmailLogs(request):
|
||||
final_dic = {'status': 1, 'error_message': "None", "data": json_data}
|
||||
final_json = json.dumps(final_dic)
|
||||
|
||||
|
||||
return HttpResponse(final_json)
|
||||
|
||||
except BaseException as msg:
|
||||
@@ -684,6 +688,7 @@ def getEmailLogs(request):
|
||||
json_data = json.dumps(dic)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
|
||||
def flushEmailLogs(request):
|
||||
try:
|
||||
userID = request.session['userID']
|
||||
@@ -731,6 +736,7 @@ def spamAssassinHome(request):
|
||||
{'checkIfSpamAssassinInstalled': checkIfSpamAssassinInstalled}, 'admin')
|
||||
return proc.render()
|
||||
|
||||
|
||||
def installSpamAssassin(request):
|
||||
try:
|
||||
userID = request.session['userID']
|
||||
@@ -757,6 +763,7 @@ def installSpamAssassin(request):
|
||||
final_json = json.dumps(final_dic)
|
||||
return HttpResponse(final_json)
|
||||
|
||||
|
||||
def installStatusSpamAssassin(request):
|
||||
try:
|
||||
userID = request.session['userID']
|
||||
@@ -766,7 +773,7 @@ def installStatusSpamAssassin(request):
|
||||
command = "sudo cat " + mailUtilities.spamassassinInstallLogPath
|
||||
installStatus = ProcessUtilities.outputExecutioner(command)
|
||||
|
||||
if installStatus.find("[200]")>-1:
|
||||
if installStatus.find("[200]") > -1:
|
||||
|
||||
execPath = "export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin && /usr/local/CyberCP/bin/python " + virtualHostUtilities.cyberPanel + "/plogical/mailUtilities.py"
|
||||
execPath = execPath + " configureSpamAssassin"
|
||||
@@ -797,8 +804,8 @@ def installStatusSpamAssassin(request):
|
||||
elif installStatus.find("[404]") > -1:
|
||||
|
||||
final_json = json.dumps({
|
||||
'abort':1,
|
||||
'installed':0,
|
||||
'abort': 1,
|
||||
'installed': 0,
|
||||
'error_message': "None",
|
||||
'requestStatus': installStatus,
|
||||
})
|
||||
@@ -806,20 +813,22 @@ def installStatusSpamAssassin(request):
|
||||
|
||||
else:
|
||||
final_json = json.dumps({
|
||||
'abort':0,
|
||||
'abort': 0,
|
||||
'error_message': "None",
|
||||
'requestStatus': installStatus,
|
||||
})
|
||||
return HttpResponse(final_json)
|
||||
except BaseException as msg:
|
||||
final_dic = {'abort':1,'installed':0, 'error_message': str(msg)}
|
||||
final_dic = {'abort': 1, 'installed': 0, 'error_message': str(msg)}
|
||||
final_json = json.dumps(final_dic)
|
||||
return HttpResponse(final_json)
|
||||
except KeyError:
|
||||
final_dic = {'abort':1,'installed':0, 'error_message': "Not Logged In, please refresh the page or login again."}
|
||||
final_dic = {'abort': 1, 'installed': 0,
|
||||
'error_message': "Not Logged In, please refresh the page or login again."}
|
||||
final_json = json.dumps(final_dic)
|
||||
return HttpResponse(final_json)
|
||||
|
||||
|
||||
def fetchSpamAssassinSettings(request):
|
||||
try:
|
||||
userID = request.session['userID']
|
||||
@@ -846,6 +855,8 @@ def fetchSpamAssassinSettings(request):
|
||||
|
||||
data = ProcessUtilities.outputExecutioner(command).splitlines()
|
||||
|
||||
# logging.CyberCPLogFileWriter.writeToFile(str(data))
|
||||
|
||||
for items in data:
|
||||
if items.find('report_safe ') > -1:
|
||||
if items.find('0') > -1:
|
||||
@@ -882,8 +893,6 @@ def fetchSpamAssassinSettings(request):
|
||||
final_dic = {'fetchStatus': 1,
|
||||
'installed': 0}
|
||||
|
||||
|
||||
|
||||
final_json = json.dumps(final_dic)
|
||||
return HttpResponse(final_json)
|
||||
|
||||
@@ -895,6 +904,7 @@ def fetchSpamAssassinSettings(request):
|
||||
except KeyError:
|
||||
return redirect(loadLoginPage)
|
||||
|
||||
|
||||
def saveSpamAssassinConfigurations(request):
|
||||
try:
|
||||
userID = request.session['userID']
|
||||
@@ -923,10 +933,8 @@ def saveSpamAssassinConfigurations(request):
|
||||
rewrite_header = "rewrite_header " + rewrite_header
|
||||
required_score = "required_score " + required_score
|
||||
|
||||
|
||||
## writing data temporary to file
|
||||
|
||||
|
||||
tempConfigPath = "/home/cyberpanel/" + str(randint(1000, 9999))
|
||||
|
||||
confPath = open(tempConfigPath, "w")
|
||||
@@ -965,11 +973,13 @@ def saveSpamAssassinConfigurations(request):
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
|
||||
def mailQueue(request):
|
||||
proc = httpProc(request, 'emailPremium/mailQueue.html',
|
||||
None, 'admin')
|
||||
return proc.render()
|
||||
|
||||
|
||||
def fetchMailQueue(request):
|
||||
try:
|
||||
userID = request.session['userID']
|
||||
@@ -1006,6 +1016,7 @@ def fetchMailQueue(request):
|
||||
json_data = json.dumps(dic)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
|
||||
def fetchMessage(request):
|
||||
try:
|
||||
userID = request.session['userID']
|
||||
@@ -1023,7 +1034,6 @@ def fetchMessage(request):
|
||||
command = 'postcat -vq %s' % (id)
|
||||
emailMessageContent = ProcessUtilities.outputExecutioner(command)
|
||||
|
||||
|
||||
dic = {'status': 1, 'error_message': 'None', 'emailMessageContent': emailMessageContent}
|
||||
json_data = json.dumps(dic)
|
||||
return HttpResponse(json_data)
|
||||
@@ -1038,6 +1048,7 @@ def fetchMessage(request):
|
||||
json_data = json.dumps(dic)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
|
||||
def flushQueue(request):
|
||||
try:
|
||||
userID = request.session['userID']
|
||||
@@ -1066,6 +1077,7 @@ def flushQueue(request):
|
||||
json_data = json.dumps(dic)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
|
||||
def delete(request):
|
||||
try:
|
||||
userID = request.session['userID']
|
||||
@@ -1101,6 +1113,7 @@ def delete(request):
|
||||
json_data = json.dumps(dic)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
|
||||
## MailScanner
|
||||
|
||||
def MailScanner(request):
|
||||
@@ -1118,6 +1131,7 @@ def MailScanner(request):
|
||||
{'checkIfMailScannerInstalled': checkIfMailScannerInstalled, 'ipAddress': ipAddress}, 'admin')
|
||||
return proc.render()
|
||||
|
||||
|
||||
def installMailScanner(request):
|
||||
try:
|
||||
userID = request.session['userID']
|
||||
@@ -1136,7 +1150,8 @@ def installMailScanner(request):
|
||||
result = ProcessUtilities.outputExecutioner(command)
|
||||
|
||||
if result.find('disabled') == -1:
|
||||
final_json = json.dumps({'status': 0, 'error_message': "Disable selinux before installing MailScanner."})
|
||||
final_json = json.dumps(
|
||||
{'status': 0, 'error_message': "Disable selinux before installing MailScanner."})
|
||||
return HttpResponse(final_json)
|
||||
|
||||
execPath = "/usr/local/CyberCP/bin/python " + virtualHostUtilities.cyberPanel + "/plogical/mailUtilities.py"
|
||||
@@ -1154,6 +1169,7 @@ def installMailScanner(request):
|
||||
final_json = json.dumps(final_dic)
|
||||
return HttpResponse(final_json)
|
||||
|
||||
|
||||
def installStatusMailScanner(request):
|
||||
try:
|
||||
userID = request.session['userID']
|
||||
@@ -1170,7 +1186,7 @@ def installStatusMailScanner(request):
|
||||
command = "sudo cat " + mailUtilities.mailScannerInstallLogPath
|
||||
installStatus = ProcessUtilities.outputExecutioner(command)
|
||||
|
||||
if installStatus.find("[200]")>-1:
|
||||
if installStatus.find("[200]") > -1:
|
||||
|
||||
final_json = json.dumps({
|
||||
'error_message': "None",
|
||||
@@ -1183,8 +1199,8 @@ def installStatusMailScanner(request):
|
||||
elif installStatus.find("[404]") > -1:
|
||||
|
||||
final_json = json.dumps({
|
||||
'abort':1,
|
||||
'installed':0,
|
||||
'abort': 1,
|
||||
'installed': 0,
|
||||
'error_message': "None",
|
||||
'requestStatus': installStatus,
|
||||
})
|
||||
@@ -1192,7 +1208,7 @@ def installStatusMailScanner(request):
|
||||
|
||||
else:
|
||||
final_json = json.dumps({
|
||||
'abort':0,
|
||||
'abort': 0,
|
||||
'error_message': "None",
|
||||
'requestStatus': installStatus,
|
||||
})
|
||||
@@ -1200,10 +1216,459 @@ def installStatusMailScanner(request):
|
||||
|
||||
|
||||
except BaseException as msg:
|
||||
final_dic = {'abort':1,'installed':0, 'error_message': str(msg)}
|
||||
final_dic = {'abort': 1, 'installed': 0, 'error_message': str(msg)}
|
||||
final_json = json.dumps(final_dic)
|
||||
return HttpResponse(final_json)
|
||||
except KeyError:
|
||||
final_dic = {'abort':1,'installed':0, 'error_message': "Not Logged In, please refresh the page or login again."}
|
||||
final_dic = {'abort': 1, 'installed': 0,
|
||||
'error_message': "Not Logged In, please refresh the page or login again."}
|
||||
final_json = json.dumps(final_dic)
|
||||
return HttpResponse(final_json)
|
||||
|
||||
|
||||
###Rspamd
|
||||
|
||||
def Rspamd(request):
|
||||
checkIfRspamdInstalled = 0
|
||||
|
||||
ipFile = "/etc/cyberpanel/machineIP"
|
||||
f = open(ipFile)
|
||||
ipData = f.read()
|
||||
ipAddress = ipData.split('\n', 1)[0]
|
||||
|
||||
if mailUtilities.checkIfRspamdInstalled() == 1:
|
||||
checkIfRspamdInstalled = 1
|
||||
|
||||
proc = httpProc(request, 'emailPremium/Rspamd.html',
|
||||
{'checkIfRspamdInstalled': checkIfRspamdInstalled, 'ipAddress': ipAddress}, 'admin')
|
||||
return proc.render()
|
||||
|
||||
|
||||
def installRspamd(request):
|
||||
try:
|
||||
userID = request.session['userID']
|
||||
currentACL = ACLManager.loadedACL(userID)
|
||||
|
||||
if currentACL['admin'] == 1:
|
||||
pass
|
||||
else:
|
||||
return ACLManager.loadErrorJson()
|
||||
try:
|
||||
|
||||
execPath = "/usr/local/CyberCP/bin/python " + virtualHostUtilities.cyberPanel + "/plogical/mailUtilities.py"
|
||||
execPath = execPath + " installRspamd"
|
||||
ProcessUtilities.popenExecutioner(execPath)
|
||||
|
||||
final_json = json.dumps({'status': 1, 'error_message': "None"})
|
||||
return HttpResponse(final_json)
|
||||
except BaseException as msg:
|
||||
final_dic = {'status': 0, 'error_message': str(msg)}
|
||||
final_json = json.dumps(final_dic)
|
||||
return HttpResponse(final_json)
|
||||
except KeyError:
|
||||
final_dic = {'status': 0, 'error_message': "Not Logged In, please refresh the page or login again."}
|
||||
final_json = json.dumps(final_dic)
|
||||
return HttpResponse(final_json)
|
||||
|
||||
|
||||
def installStatusRspamd(request):
|
||||
try:
|
||||
userID = request.session['userID']
|
||||
try:
|
||||
if request.method == 'POST':
|
||||
|
||||
command = "sudo cat " + mailUtilities.RspamdInstallLogPath
|
||||
installStatus = ProcessUtilities.outputExecutioner(command)
|
||||
|
||||
if installStatus.find("[200]") > -1:
|
||||
|
||||
final_json = json.dumps({
|
||||
'error_message': "None",
|
||||
'requestStatus': installStatus,
|
||||
'abort': 1,
|
||||
'installed': 1,
|
||||
})
|
||||
cmd = 'rm -f %s'%mailUtilities.RspamdInstallLogPath
|
||||
ProcessUtilities.executioner(cmd)
|
||||
return HttpResponse(final_json)
|
||||
|
||||
|
||||
elif installStatus.find("[404]") > -1:
|
||||
|
||||
final_json = json.dumps({
|
||||
'abort': 1,
|
||||
'installed': 0,
|
||||
'error_message': "None",
|
||||
'requestStatus': installStatus,
|
||||
})
|
||||
cmd = 'rm -f %s' % mailUtilities.RspamdInstallLogPath
|
||||
ProcessUtilities.executioner(cmd)
|
||||
return HttpResponse(final_json)
|
||||
|
||||
else:
|
||||
final_json = json.dumps({
|
||||
'abort': 0,
|
||||
'error_message': "None",
|
||||
'requestStatus': installStatus,
|
||||
})
|
||||
return HttpResponse(final_json)
|
||||
except BaseException as msg:
|
||||
final_dic = {'abort': 1, 'installed': 0, 'error_message': str(msg)}
|
||||
final_json = json.dumps(final_dic)
|
||||
return HttpResponse(final_json)
|
||||
except KeyError:
|
||||
final_dic = {'abort': 1, 'installed': 0,
|
||||
'error_message': "Not Logged In, please refresh the page or login again."}
|
||||
final_json = json.dumps(final_dic)
|
||||
return HttpResponse(final_json)
|
||||
|
||||
|
||||
def fetchRspamdSettings(request):
|
||||
try:
|
||||
userID = request.session['userID']
|
||||
currentACL = ACLManager.loadedACL(userID)
|
||||
|
||||
if currentACL['admin'] == 1:
|
||||
pass
|
||||
else:
|
||||
return ACLManager.loadErrorJson('fetchStatus', 0)
|
||||
|
||||
try:
|
||||
if request.method == 'POST':
|
||||
|
||||
enabled = True
|
||||
action = ''
|
||||
max_Size = ''
|
||||
scan_mime_parts = True
|
||||
log_clean = True
|
||||
Server = ''
|
||||
CLAMAV_VIRUS = ''
|
||||
|
||||
confPath = "/etc/rspamd/local.d/antivirus.conf"
|
||||
postfixpath = "/etc/postfix/main.cf"
|
||||
|
||||
if mailUtilities.checkIfRspamdInstalled() == 1:
|
||||
|
||||
command = "sudo cat " + confPath
|
||||
|
||||
data = ProcessUtilities.outputExecutioner(command).splitlines()
|
||||
|
||||
for items in data:
|
||||
if items.find('enabled ') > -1:
|
||||
if items.find('enabled = true') < 0:
|
||||
enabled = False
|
||||
continue
|
||||
else:
|
||||
enabled = True
|
||||
if items.find('action =') > -1:
|
||||
tempData = items.split(' ')
|
||||
# logging.CyberCPLogFileWriter.writeToFile(str(tempData) + "action")
|
||||
try:
|
||||
a = tempData[4]
|
||||
except:
|
||||
a = tempData[2]
|
||||
ac = a.split('"')
|
||||
action = ac[1]
|
||||
if items.find('max_size') > -1:
|
||||
tempData = items.split(' ')
|
||||
max = tempData[4]
|
||||
max_Size = max.rstrip(";")
|
||||
|
||||
if items.find('scan_mime_parts ') > -1:
|
||||
if items.find('scan_mime_parts = true') < 0:
|
||||
scan_mime_parts = False
|
||||
continue
|
||||
else:
|
||||
scan_mime_parts = True
|
||||
if items.find('log_clean ') > -1:
|
||||
if items.find('scan_mime_parts = true') < 0:
|
||||
log_clean = False
|
||||
continue
|
||||
else:
|
||||
log_clean = True
|
||||
if items.find('servers =') > -1:
|
||||
tempData = items.split(' ')
|
||||
Ser = tempData[4]
|
||||
x = Ser.rstrip(";")
|
||||
y = x.split('"')
|
||||
Server = y[1]
|
||||
if items.find('CLAMAV_VIRUS =') > -1:
|
||||
tempData = items.split(' ')
|
||||
CLAMAV = tempData[6]
|
||||
i = CLAMAV.rstrip(";")
|
||||
j = i.split('"')
|
||||
CLAMAV_VIRUS = j[1]
|
||||
|
||||
###postfix
|
||||
smtpd_milters = ""
|
||||
non_smtpd_milters = ""
|
||||
command = "sudo cat " + postfixpath
|
||||
|
||||
postdata = ProcessUtilities.outputExecutioner(command).splitlines()
|
||||
for i in postdata:
|
||||
if i.find('smtpd_milters=') > -1 and i.find('non_smtpd_milters') < 0:
|
||||
tempData = i.split(' ')
|
||||
x = tempData[0]
|
||||
y = x.split('=')
|
||||
smtpd_milters = y[1]
|
||||
if i.find('non_smtpd_milters=') > -1:
|
||||
tempData = i.split(' ')
|
||||
x = tempData[0]
|
||||
y = x.split('=')
|
||||
non_smtpd_milters = y[1]
|
||||
|
||||
###Redis
|
||||
Redispath = "/etc/rspamd/local.d/redis.conf"
|
||||
read_servers = ''
|
||||
write_servers = ''
|
||||
command = "sudo cat " + Redispath
|
||||
|
||||
postdata = ProcessUtilities.outputExecutioner(command).splitlines()
|
||||
|
||||
for i in postdata:
|
||||
if i.find('write_servers =') > -1:
|
||||
tempData = i.split(' ')
|
||||
# logging.CyberCPLogFileWriter.writeToFile(str(tempData) + "redis")
|
||||
write = tempData[2]
|
||||
i = write.rstrip(";")
|
||||
j = i.split('"')
|
||||
write_servers = j[1]
|
||||
# logging.CyberCPLogFileWriter.writeToFile(str(write_servers) + "write_servers")
|
||||
|
||||
if i.find('read_servers =') > -1:
|
||||
tempData = i.split(' ')
|
||||
# logging.CyberCPLogFileWriter.writeToFile(str(tempData) + "redis2")
|
||||
read = tempData[2]
|
||||
i = read.rstrip(";")
|
||||
j = i.split('"')
|
||||
read_servers = j[1]
|
||||
# logging.CyberCPLogFileWriter.writeToFile(str(read_servers) + "read_servers")
|
||||
|
||||
final_dic = {'fetchStatus': 1,
|
||||
'installed': 1,
|
||||
'enabled': enabled,
|
||||
'action': action,
|
||||
'max_Size': max_Size,
|
||||
'scan_mime_parts': scan_mime_parts,
|
||||
'log_clean ': log_clean,
|
||||
'Server': Server,
|
||||
'CLAMAV_VIRUS': CLAMAV_VIRUS,
|
||||
'smtpd_milters': smtpd_milters,
|
||||
'non_smtpd_milters': non_smtpd_milters,
|
||||
'read_servers': read_servers,
|
||||
'write_servers': write_servers
|
||||
}
|
||||
|
||||
|
||||
else:
|
||||
final_dic = {'fetchStatus': 1,
|
||||
'installed': 0}
|
||||
|
||||
final_json = json.dumps(final_dic)
|
||||
return HttpResponse(final_json)
|
||||
|
||||
|
||||
except BaseException as msg:
|
||||
final_dic = {'fetchStatus': 0, 'error_message': str(msg)}
|
||||
final_json = json.dumps(final_dic)
|
||||
return HttpResponse(final_json)
|
||||
except KeyError:
|
||||
return redirect(loadLoginPage)
|
||||
|
||||
|
||||
def saveRspamdConfigurations(request):
|
||||
try:
|
||||
userID = request.session['userID']
|
||||
currentACL = ACLManager.loadedACL(userID)
|
||||
|
||||
if currentACL['admin'] == 1:
|
||||
pass
|
||||
else:
|
||||
return ACLManager.loadErrorJson('saveStatus', 0)
|
||||
|
||||
try:
|
||||
if request.method == 'POST':
|
||||
data = json.loads(request.body)
|
||||
tempfilepath = "/home/cyberpanel/tempfilerspamdconfigs"
|
||||
json_object = json.dumps(data, indent=4)
|
||||
writeDataToFile = open(tempfilepath, "w")
|
||||
writeDataToFile.write(json_object)
|
||||
writeDataToFile.close()
|
||||
|
||||
execPath = "/usr/local/CyberCP/bin/python " + virtualHostUtilities.cyberPanel + "/plogical/mailUtilities.py"
|
||||
execPath = execPath + " changeRspamdConfig "
|
||||
output = ProcessUtilities.outputExecutioner(execPath)
|
||||
|
||||
data_ret = {'saveStatus': 1, 'error_message': 'None'}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
|
||||
except BaseException as msg:
|
||||
data_ret = {'saveStatus': 0, 'error_message': str(msg)}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
except KeyError:
|
||||
return redirect(loadLoginPage)
|
||||
|
||||
|
||||
def savepostfixConfigurations(request):
|
||||
try:
|
||||
userID = request.session['userID']
|
||||
currentACL = ACLManager.loadedACL(userID)
|
||||
|
||||
if currentACL['admin'] == 1:
|
||||
pass
|
||||
else:
|
||||
return ACLManager.loadErrorJson('saveStatus', 0)
|
||||
|
||||
try:
|
||||
if request.method == 'POST':
|
||||
data = json.loads(request.body)
|
||||
tempfilepath = "/home/cyberpanel/tempfilepostfixconfigs"
|
||||
json_object = json.dumps(data, indent=4)
|
||||
writeDataToFile = open(tempfilepath, "w")
|
||||
writeDataToFile.write(json_object)
|
||||
writeDataToFile.close()
|
||||
|
||||
# status, msg = mailUtilities.changeRspamdConfig(request.body)
|
||||
execPath = "/usr/local/CyberCP/bin/python " + virtualHostUtilities.cyberPanel + "/plogical/mailUtilities.py"
|
||||
execPath = execPath + " changePostfixConfig "
|
||||
output = ProcessUtilities.outputExecutioner(execPath)
|
||||
|
||||
data_ret = {'saveStatus': 1, 'error_message': 'None'}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
except BaseException as msg:
|
||||
data_ret = {'saveStatus': 0, 'error_message': str(msg)}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
except KeyError:
|
||||
return redirect(loadLoginPage)
|
||||
|
||||
|
||||
def saveRedisConfigurations(request):
|
||||
try:
|
||||
userID = request.session['userID']
|
||||
currentACL = ACLManager.loadedACL(userID)
|
||||
|
||||
if currentACL['admin'] == 1:
|
||||
pass
|
||||
else:
|
||||
return ACLManager.loadErrorJson('saveStatus', 0)
|
||||
|
||||
try:
|
||||
if request.method == 'POST':
|
||||
data = json.loads(request.body)
|
||||
tempfilepath = "/home/cyberpanel/saveRedisConfigurations"
|
||||
json_object = json.dumps(data, indent=4)
|
||||
writeDataToFile = open(tempfilepath, "w")
|
||||
writeDataToFile.write(json_object)
|
||||
writeDataToFile.close()
|
||||
|
||||
# status, msg = mailUtilities.changeRspamdConfig(request.body)
|
||||
execPath = "/usr/local/CyberCP/bin/python " + virtualHostUtilities.cyberPanel + "/plogical/mailUtilities.py"
|
||||
execPath = execPath + " changeRedisxConfig "
|
||||
output = ProcessUtilities.outputExecutioner(execPath)
|
||||
|
||||
data_ret = {'saveStatus': 1, 'error_message': 'None'}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
except BaseException as msg:
|
||||
data_ret = {'saveStatus': 0, 'error_message': str(msg)}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
except KeyError:
|
||||
return redirect(loadLoginPage)
|
||||
|
||||
|
||||
def unistallRspamd(request):
|
||||
try:
|
||||
logging.CyberCPLogFileWriter.writeToFile("unistallRspamd...1")
|
||||
userID = request.session['userID']
|
||||
currentACL = ACLManager.loadedACL(userID)
|
||||
|
||||
if currentACL['admin'] == 1:
|
||||
pass
|
||||
else:
|
||||
return ACLManager.loadErrorJson()
|
||||
|
||||
|
||||
try:
|
||||
|
||||
execPath = "/usr/local/CyberCP/bin/python " + virtualHostUtilities.cyberPanel + "/plogical/mailUtilities.py"
|
||||
execPath = execPath + " uninstallRspamd"
|
||||
ProcessUtilities.popenExecutioner(execPath)
|
||||
|
||||
|
||||
final_json = json.dumps({'status': 1, 'error_message': "None"})
|
||||
return HttpResponse(final_json)
|
||||
except BaseException as msg:
|
||||
final_dic = {'status': 0, 'error_message': str(msg)}
|
||||
final_json = json.dumps(final_dic)
|
||||
return HttpResponse(final_json)
|
||||
|
||||
|
||||
except KeyError:
|
||||
|
||||
final_dic = {'status': 0, 'error_message': "Not Logged In, please refresh the page or login again."}
|
||||
|
||||
final_json = json.dumps(final_dic)
|
||||
|
||||
return HttpResponse(final_json)
|
||||
|
||||
def uninstallStatusRspamd(request):
|
||||
try:
|
||||
userID = request.session['userID']
|
||||
try:
|
||||
if request.method == 'POST':
|
||||
|
||||
command = "sudo cat " + mailUtilities.RspamdUnInstallLogPath
|
||||
installStatus = ProcessUtilities.outputExecutioner(command)
|
||||
|
||||
if installStatus.find("[200]") > -1:
|
||||
|
||||
final_json = json.dumps({
|
||||
'error_message': "None",
|
||||
'requestStatus': installStatus,
|
||||
'abort': 1,
|
||||
'installed': 1,
|
||||
})
|
||||
cmd = 'rm -f %s' % mailUtilities.RspamdUnInstallLogPath
|
||||
ProcessUtilities.executioner(cmd)
|
||||
return HttpResponse(final_json)
|
||||
|
||||
|
||||
elif installStatus.find("[404]") > -1:
|
||||
|
||||
final_json = json.dumps({
|
||||
'abort': 1,
|
||||
'installed': 0,
|
||||
'error_message': "None",
|
||||
'requestStatus': installStatus,
|
||||
})
|
||||
cmd = 'rm -f %s' % mailUtilities.RspamdUnInstallLogPath
|
||||
ProcessUtilities.executioner(cmd)
|
||||
return HttpResponse(final_json)
|
||||
|
||||
else:
|
||||
final_json = json.dumps({
|
||||
'abort': 0,
|
||||
'error_message': "None",
|
||||
'requestStatus': installStatus,
|
||||
})
|
||||
return HttpResponse(final_json)
|
||||
except BaseException as msg:
|
||||
final_dic = {'abort': 1, 'installed': 0, 'error_message': str(msg)}
|
||||
final_json = json.dumps(final_dic)
|
||||
return HttpResponse(final_json)
|
||||
except KeyError:
|
||||
final_dic = {'abort': 1, 'installed': 0,
|
||||
'error_message': "Not Logged In, please refresh the page or login again."}
|
||||
final_json = json.dumps(final_dic)
|
||||
return HttpResponse(final_json)
|
||||
@@ -1,8 +1,11 @@
|
||||
import json
|
||||
import os,sys
|
||||
import time
|
||||
|
||||
from django.http import HttpResponse
|
||||
|
||||
|
||||
|
||||
sys.path.append('/usr/local/CyberCP')
|
||||
import django
|
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CyberCP.settings")
|
||||
@@ -34,6 +37,8 @@ class mailUtilities:
|
||||
|
||||
installLogPath = "/home/cyberpanel/openDKIMInstallLog"
|
||||
spamassassinInstallLogPath = "/home/cyberpanel/spamassassinInstallLogPath"
|
||||
RspamdInstallLogPath = "/home/cyberpanel/RspamdInstallLogPath"
|
||||
RspamdUnInstallLogPath = "/home/cyberpanel/RspamdUnInstallLogPath"
|
||||
cyberPanelHome = "/home/cyberpanel"
|
||||
mailScannerInstallLogPath = "/home/cyberpanel/mailScannerInstallLogPath"
|
||||
|
||||
@@ -495,6 +500,329 @@ milter_default_action = accept
|
||||
writeToFile.close()
|
||||
logging.CyberCPLogFileWriter.writeToFile(str(msg) + "[installSpamAssassin]")
|
||||
|
||||
|
||||
@staticmethod
|
||||
def installRspamd(install, rspamd):
|
||||
from manageServices.serviceManager import ServiceManager
|
||||
try:
|
||||
if os.path.exists(mailUtilities.RspamdInstallLogPath):
|
||||
os.remove(mailUtilities.RspamdInstallLogPath)
|
||||
|
||||
|
||||
####Frist install redis
|
||||
ServiceManager.InstallRedis()
|
||||
|
||||
if ProcessUtilities.decideDistro() == ProcessUtilities.centos or ProcessUtilities.decideDistro() == ProcessUtilities.cent8:
|
||||
command = 'sudo yum install rspamd clamav clamav-daemon -y'
|
||||
else:
|
||||
command = 'sudo apt-get install rspamd clamav clamav-daemon -y'
|
||||
|
||||
|
||||
cmd = shlex.split(command)
|
||||
|
||||
with open(mailUtilities.RspamdInstallLogPath, 'w') as f:
|
||||
res = subprocess.call(cmd, stdout=f)
|
||||
|
||||
|
||||
|
||||
###### makefile
|
||||
path = "/etc/rspamd/local.d/antivirus.conf"
|
||||
content ="""# ================= DO NOT MODIFY THIS FILE =================
|
||||
#
|
||||
# Manual changes will be lost when this file is regenerated.
|
||||
#
|
||||
# Please read the developer's guide, which is available
|
||||
# at NethServer official site: https://www.nethserver.org
|
||||
#
|
||||
#
|
||||
|
||||
#Enable or disable the module
|
||||
enabled = true
|
||||
|
||||
# multiple scanners could be checked, for each we create a configuration block with an arbitrary name
|
||||
clamav {
|
||||
# If set force this action if any virus is found (default unset: no action is forced, 'rewrite_subject' to tag as spam)
|
||||
action = "reject";
|
||||
|
||||
# if `true` only messages with non-image attachments will be checked (default true)
|
||||
scan_mime_parts = false;
|
||||
|
||||
# If `max_size` is set, messages > n bytes in size are not scanned
|
||||
max_size = 20000000;
|
||||
|
||||
# type of scanner: "clamav", "fprot", "sophos" or "savapi"
|
||||
type = "clamav";
|
||||
|
||||
# If set true, log message is emitted for clean messages
|
||||
log_clean = false;
|
||||
|
||||
# Timeout and retransmits increased in case of clamav is reloading its database
|
||||
# It takes a lot of time (25 to 60 seconds), after rspamd answers a temporally failure
|
||||
#timeout = 5;
|
||||
#retransmits = 2;
|
||||
|
||||
# servers to query (if port is unspecified, scanner-specific default is used)
|
||||
# can be specified multiple times to pool servers
|
||||
# can be set to a path to a unix socket
|
||||
servers = "127.0.0.1:3310";
|
||||
|
||||
# if `patterns` is specified virus name will be matched against provided regexes and the related
|
||||
# symbol will be yielded if a match is found. If no match is found, default symbol is yielded.
|
||||
patterns {
|
||||
# symbol_name = "pattern";
|
||||
CLAMAV_VIRUS = "^Eicar-Test-Signature$";
|
||||
}
|
||||
|
||||
# In version 1.7.0+ patterns could be a list for ordered matching
|
||||
#patterns = [{SANE_MAL = "Sanesecurity.Malware.*"}, {CLAM_UNOFFICIAL = "UNOFFICIAL$"}];
|
||||
|
||||
# `whitelist` points to a map of IP addresses. Mail from these addresses is not scanned.
|
||||
whitelist = "/etc/rspamd/antivirus.wl";
|
||||
}
|
||||
"""
|
||||
|
||||
|
||||
wirtedata = open(path, 'w')
|
||||
wirtedata.writelines(content)
|
||||
wirtedata.close()
|
||||
|
||||
|
||||
appendpath = "/etc/postfix/main.cf"
|
||||
appenddata = """smtpd_milters=inet:127.0.0.1:11332 # For inbound scan or outbound scan via SMTP
|
||||
non_smtpd_milters=inet:127.0.0.1:11332 # For invocation via LDA
|
||||
"""
|
||||
wirtedata1 = open(appendpath, 'a')
|
||||
wirtedata1.writelines(appenddata)
|
||||
wirtedata1.close()
|
||||
|
||||
|
||||
wpath = "/etc/rspamd/local.d/redis.conf"
|
||||
wdata = """write_servers = "127.0.0.1";
|
||||
read_servers = "127.0.0.1";"""
|
||||
|
||||
wirtedata2 = open(wpath, 'w')
|
||||
wirtedata2.writelines(wdata)
|
||||
wirtedata2.close()
|
||||
|
||||
|
||||
|
||||
|
||||
if res == 1:
|
||||
writeToFile = open(mailUtilities.RspamdInstallLogPath, 'a')
|
||||
writeToFile.writelines("Can not be installed.[404]\n")
|
||||
writeToFile.close()
|
||||
logging.CyberCPLogFileWriter.writeToFile("[Could not Install Rspamd.]")
|
||||
return 0
|
||||
else:
|
||||
writeToFile = open(mailUtilities.RspamdInstallLogPath, 'a')
|
||||
writeToFile.writelines("Rspamd Installed.[200]\n")
|
||||
writeToFile.close()
|
||||
|
||||
return 1
|
||||
except BaseException as msg:
|
||||
writeToFile = open(mailUtilities.RspamdInstallLogPath, 'a')
|
||||
writeToFile.writelines("Can not be installed.[404]\n")
|
||||
writeToFile.close()
|
||||
logging.CyberCPLogFileWriter.writeToFile(str(msg) + "[installRspamd]")
|
||||
|
||||
@staticmethod
|
||||
def uninstallRspamd(install, rspamd):
|
||||
from manageServices.serviceManager import ServiceManager
|
||||
try:
|
||||
logging.CyberCPLogFileWriter.writeToFile( "start................[uninstallRspamd]")
|
||||
if os.path.exists(mailUtilities.RspamdUnInstallLogPath):
|
||||
os.remove(mailUtilities.RspamdUnInstallLogPath)
|
||||
|
||||
|
||||
if ProcessUtilities.decideDistro() == ProcessUtilities.centos or ProcessUtilities.decideDistro() == ProcessUtilities.cent8:
|
||||
command = 'sudo yum remove rspamd clamav clamav-daemon -y'
|
||||
else:
|
||||
command = 'sudo apt purge rspamd clamav clamav-daemon -y'
|
||||
|
||||
cmd = shlex.split(command)
|
||||
|
||||
|
||||
|
||||
with open(mailUtilities.RspamdUnInstallLogPath, 'w') as f:
|
||||
res = subprocess.call(cmd, stdout=f)
|
||||
if res == 1:
|
||||
writeToFile = open(mailUtilities.RspamdUnInstallLogPath, 'a')
|
||||
writeToFile.writelines("Can not be uninstalled.[404]\n")
|
||||
writeToFile.close()
|
||||
logging.CyberCPLogFileWriter.writeToFile("[Could not Install Rspamd.]")
|
||||
return 0
|
||||
else:
|
||||
cmdd = 'systemctl stop rspamd'
|
||||
ProcessUtilities.normalExecutioner(cmdd)
|
||||
|
||||
cmmd = 'systemctl disable rspamd'
|
||||
ProcessUtilities.normalExecutioner(cmmd)
|
||||
writeToFile = open(mailUtilities.RspamdUnInstallLogPath, 'a')
|
||||
writeToFile.writelines("Rspamd unInstalled.[200]\n")
|
||||
writeToFile.close()
|
||||
return 1
|
||||
except BaseException as msg:
|
||||
writeToFile = open(mailUtilities.RspamdUnInstallLogPath, 'a')
|
||||
writeToFile.writelines("Can not be installed.[404]\n")
|
||||
writeToFile.close()
|
||||
logging.CyberCPLogFileWriter.writeToFile(str(msg) + "[uninstallRspamd]")
|
||||
|
||||
|
||||
@staticmethod
|
||||
def changeRspamdConfig(install, changeRspamdConfig):
|
||||
try:
|
||||
|
||||
tempfilepath = "/home/cyberpanel/tempfilerspamdconfigs"
|
||||
file= open(tempfilepath, "r")
|
||||
jsondata1 = file.read()
|
||||
jsondata = json.loads(jsondata1)
|
||||
file.close()
|
||||
status = jsondata['status']
|
||||
scan_mime_parts = jsondata['scan_mime_parts']
|
||||
log_clean = jsondata['log_clean']
|
||||
max_size = jsondata['max_size']
|
||||
server = jsondata['Rspamdserver']
|
||||
CLAMAV_VIRUS = jsondata['CLAMAV_VIRUS']
|
||||
action_rspamd = jsondata['action_rspamd']
|
||||
|
||||
confPath = "/etc/rspamd/local.d/antivirus.conf"
|
||||
|
||||
f = open(confPath, "r")
|
||||
dataa = f.read()
|
||||
f.close()
|
||||
data = dataa.splitlines()
|
||||
|
||||
writeDataToFile = open(confPath, "w")
|
||||
for items in data:
|
||||
if items.find('enabled ') > -1:
|
||||
if status == True:
|
||||
command = 'systemctl start rspamd'
|
||||
ProcessUtilities.executioner(command)
|
||||
newitem = 'enabled = true'
|
||||
writeDataToFile.writelines(newitem + '\n')
|
||||
|
||||
elif status == False:
|
||||
|
||||
command = 'systemctl stop rspamd'
|
||||
ProcessUtilities.executioner(command)
|
||||
newitem = 'enabled = false'
|
||||
writeDataToFile.writelines(newitem + '\n')
|
||||
elif items.find('action =') > -1:
|
||||
if action_rspamd == 'Reject':
|
||||
newitem = ' action = "reject";'
|
||||
writeDataToFile.writelines(newitem + '\n')
|
||||
elif action_rspamd == 'Unset':
|
||||
newitem = ' action = "unset";'
|
||||
writeDataToFile.writelines(newitem + '\n')
|
||||
|
||||
elif items.find('scan_mime_parts') > -1:
|
||||
if scan_mime_parts == True:
|
||||
newitem = ' scan_mime_parts = true;'
|
||||
writeDataToFile.writelines(newitem + '\n')
|
||||
elif scan_mime_parts == False:
|
||||
newitem = ' scan_mime_parts = false;'
|
||||
writeDataToFile.writelines(newitem + '\n')
|
||||
elif items.find('log_clean =') > -1:
|
||||
if log_clean == True:
|
||||
newitem = ' log_clean = true;'
|
||||
writeDataToFile.writelines(newitem + '\n')
|
||||
elif log_clean == False:
|
||||
newitem = ' log_clean = false;'
|
||||
writeDataToFile.writelines(newitem + '\n')
|
||||
elif items.find('max_size =') > -1:
|
||||
newitem = ' max_size = %s;'%max_size
|
||||
writeDataToFile.writelines(newitem + '\n')
|
||||
elif items.find('CLAMAV_VIRUS =') > -1:
|
||||
newitem = ' CLAMAV_VIRUS = "%s";' % CLAMAV_VIRUS
|
||||
writeDataToFile.writelines(newitem + '\n')
|
||||
elif items.find('servers =') > -1:
|
||||
newitem = ' servers = "%s";' % server
|
||||
writeDataToFile.writelines(newitem + '\n')
|
||||
else:
|
||||
writeDataToFile.writelines(items + '\n')
|
||||
|
||||
|
||||
print("1,None")
|
||||
return 1, 'None'
|
||||
except BaseException as msg:
|
||||
logging.CyberCPLogFileWriter.writeToFile(str(msg) + "[changeRspamdConfig]")
|
||||
str((msg) + " [changeRspamdConfig]")
|
||||
print(0, str(msg))
|
||||
return [0, str(msg) + " [changeRspamdConfig]"]
|
||||
|
||||
|
||||
@staticmethod
|
||||
def changePostfixConfig(install , changePostfixConfig):
|
||||
try:
|
||||
tempfilepath = "/home/cyberpanel/tempfilepostfixconfigs"
|
||||
file = open(tempfilepath, "r")
|
||||
jsondata1 = file.read()
|
||||
jsondata = json.loads(jsondata1)
|
||||
file.close()
|
||||
non_smtpd_milters = jsondata['non_smtpd_milters']
|
||||
smtpd_milters = jsondata['smtpd_milters']
|
||||
|
||||
postfixpath = "/etc/postfix/main.cf"
|
||||
|
||||
f = open(postfixpath, "r")
|
||||
dataa = f.read()
|
||||
f.close()
|
||||
data = dataa.splitlines()
|
||||
|
||||
writeDataToFile = open(postfixpath, "w")
|
||||
for i in data:
|
||||
if i.find('smtpd_milters=') > -1 and i.find('non_smtpd_milters') < 0:
|
||||
newitem = 'smtpd_milters=%s' % smtpd_milters
|
||||
writeDataToFile.writelines(newitem + '\n')
|
||||
elif i.find('non_smtpd_milters=') > -1:
|
||||
newitem = 'non_smtpd_milters=%s' % non_smtpd_milters
|
||||
writeDataToFile.writelines(newitem + '\n')
|
||||
else:
|
||||
writeDataToFile.writelines(i + '\n')
|
||||
|
||||
print("1,None")
|
||||
return 1, 'None'
|
||||
except BaseException as msg:
|
||||
logging.CyberCPLogFileWriter.writeToFile(str(msg) + "[changePostfixConfig]")
|
||||
str((msg) + " [changePostfixConfig]")
|
||||
print(0, str(msg))
|
||||
return [0, str(msg) + " [changePostfixConfig]"]
|
||||
|
||||
@staticmethod
|
||||
def changeRedisxConfig(install, changeRedisxConfig):
|
||||
try:
|
||||
tempfilepath = "/home/cyberpanel/saveRedisConfigurations"
|
||||
file = open(tempfilepath, "r")
|
||||
jsondata1 = file.read()
|
||||
jsondata = json.loads(jsondata1)
|
||||
file.close()
|
||||
write_servers = jsondata['write_servers']
|
||||
read_servers = jsondata['read_servers']
|
||||
|
||||
Redispath = "/etc/rspamd/local.d/redis.conf"
|
||||
|
||||
f = open(Redispath, "r")
|
||||
dataa = f.read()
|
||||
f.close()
|
||||
data = dataa.splitlines()
|
||||
|
||||
writeDataToFile = open(Redispath, "w")
|
||||
for i in data:
|
||||
if i.find('write_servers =') > -1:
|
||||
newitem = 'write_servers = "%s";' % write_servers
|
||||
writeDataToFile.writelines(newitem + '\n')
|
||||
elif i.find('read_servers =') > -1:
|
||||
newitem = 'read_servers = "%s";' % read_servers
|
||||
writeDataToFile.writelines(newitem + '\n')
|
||||
else:
|
||||
writeDataToFile.writelines(i + '\n')
|
||||
print("1,None")
|
||||
return 1, 'None'
|
||||
except BaseException as msg:
|
||||
logging.CyberCPLogFileWriter.writeToFile(str(msg) + "[changeRedisxConfig]")
|
||||
str((msg) + " [changeRedisxConfig]")
|
||||
print(0, str(msg))
|
||||
return [0, str(msg) + " [changeRedisxConfig]"]
|
||||
@staticmethod
|
||||
def installMailScanner(install, SpamAssassin):
|
||||
try:
|
||||
@@ -745,6 +1073,25 @@ milter_default_action = accept
|
||||
str(msg) + " [checkIfMailScannerInstalled]")
|
||||
return 0
|
||||
|
||||
@staticmethod
|
||||
def checkIfRspamdInstalled():
|
||||
try:
|
||||
command= "apt list | grep rspamd"
|
||||
result, stdout = ProcessUtilities.outputExecutioner(command, None, None, None, 1)
|
||||
|
||||
resul = stdout.find("installed")
|
||||
|
||||
|
||||
if resul != -1:
|
||||
return 1
|
||||
else:
|
||||
return 0
|
||||
|
||||
except BaseException as msg:
|
||||
logging.CyberCPLogFileWriter.writeToFile(
|
||||
str(msg) + " [checkIfMailScannerInstalled]")
|
||||
return 0
|
||||
|
||||
####### Imported below functions from mailserver/mailservermanager, need to refactor later
|
||||
|
||||
class MailServerManagerUtils(multi.Thread):
|
||||
@@ -1658,8 +2005,18 @@ def main():
|
||||
mailUtilities.savePolicyServerStatus(args.install)
|
||||
elif args.function == 'installSpamAssassin':
|
||||
mailUtilities.installSpamAssassin("install", "SpamAssassin")
|
||||
elif args.function == 'installRspamd':
|
||||
mailUtilities.installRspamd("install", "rspamd")
|
||||
elif args.function == 'uninstallRspamd':
|
||||
mailUtilities.uninstallRspamd("install", "rspamd")
|
||||
elif args.function == 'installMailScanner':
|
||||
mailUtilities.installMailScanner("install", "installMailScanner")
|
||||
elif args.function == 'changeRspamdConfig':
|
||||
mailUtilities.changeRspamdConfig("install", "changeRspamdConfig")
|
||||
elif args.function == 'changePostfixConfig':
|
||||
mailUtilities.changePostfixConfig("install", "changePostfixConfig")
|
||||
elif args.function == 'changeRedisxConfig':
|
||||
mailUtilities.changeRedisxConfig("install", "changeRedisxConfig")
|
||||
elif args.function == 'AfterEffects':
|
||||
mailUtilities.AfterEffects(args.domain)
|
||||
elif args.function == "ResetEmailConfigurations":
|
||||
|
||||
@@ -1,19 +1,39 @@
|
||||
a = "/home/folderhabitk.ml/public_html/subfile/"
|
||||
DomainName ="newweb3.com"
|
||||
abc = a.split("/")
|
||||
wpexpath = abc[4]
|
||||
data ="""['# This is the right place to customize your installation of SpamAssassin.', '#', "# See 'perldoc Mail::SpamAssassin::Conf' for details of what can be", '# tweaked.', '#', '# Only a small subset of options are listed below', '#', '###########################################################################', '', '# Add *****SPAM***** to the Subject header of spam e-mails', '#', 'rewrite_header Subject *****SPAM*****', '', '', '# Save spam messages as a message/rfc822 MIME attachment instead of', '# modifying the original message (0: off, 2: use text/plain instead)', '#', 'report_safe 1', '', '', "# Set which networks or hosts are considered 'trusted' by your mail", '# server (i.e. not spammers)', '#', '# trusted_networks 212.17.35.', '', '', '# Set file-locking method (flock is not safe over NFS, but is faster)', '#', '# lock_method flock', '', '', '# Set the threshold at which a message is considered spam (default: 5.0)', '#', 'required_score 5.0', '', '', '# Use Bayesian classifier (default: 1)', '#', '# use_bayes 1', '', '', '# Bayesian classifier auto-learning (default: 1)', '#', '# bayes_auto_learn 1', '', '', '# Set headers which may provide inappropriate cues to the Bayesian', '# classifier', '#', '# bayes_ignore_header X-Bogosity', '# bayes_ignore_header X-Spam-Flag', '# bayes_ignore_header X-Spam-Status', '', '', '# Whether to decode non- UTF-8 and non-ASCII textual parts and recode', '# them to UTF-8 before the text is given over to rules processing.', '#', '# normalize_charset 1', '', '# Textual body scan limit (default: 50000)', '#', '# Amount of data per email text/* mimepart, that will be run through body', '# rules. This enables safer and faster scanning of large messages,', '# perhaps having very large textual attachments. There should be no need', '# to change this well tested default.', '#', '# body_part_scan_size 50000', '', '# Textual rawbody data scan limit (default: 500000)', '#', '# Amount of data per email text/* mimepart, that will be run through', '# rawbody rules.', '#', '# rawbody_part_scan_size 500000', '', '# Some shortcircuiting, if the plugin is enabled', '# ', 'ifplugin Mail::SpamAssassin::Plugin::Shortcircuit', '#', '# default: strongly-whitelisted mails are *really* whitelisted now, if the', '# shortcircuiting plugin is active, causing early exit to save CPU load.', '# Uncomment to turn this on', '#', '# SpamAssassin tries hard not to launch DNS queries before priority -100. ', '# If you want to shortcircuit without launching unneeded queries, make', '# sure such rule priority is below -100. These examples are already:', '#', '# shortcircuit USER_IN_WHITELIST on', '# shortcircuit USER_IN_DEF_WHITELIST on', '# shortcircuit USER_IN_ALL_SPAM_TO on', '# shortcircuit SUBJECT_IN_WHITELIST on', '', '# the opposite; blacklisted mails can also save CPU', '#', '# shortcircuit USER_IN_BLACKLIST on', '# shortcircuit USER_IN_BLACKLIST_TO on', '# shortcircuit SUBJECT_IN_BLACKLIST on', '', '# if you have taken the time to correctly specify your "trusted_networks",', '# this is another good way to save CPU', '#', '# shortcircuit ALL_TRUSTED on', '', '# and a well-trained bayes DB can save running rules, too', '#', '# shortcircuit BAYES_99 spam', '# shortcircuit BAYES_00 ham', '', 'endif # Mail::SpamAssassin::Plugin::Shortcircuit']"""
|
||||
report_safe = 0
|
||||
required_hits = '5.0'
|
||||
rewrite_header = 'Subject [SPAM]'
|
||||
required_score = '5'
|
||||
for items in data:
|
||||
if items.find('report_safe ') > -1:
|
||||
if items.find('0') > -1:
|
||||
report_safe = 0
|
||||
continue
|
||||
else:
|
||||
report_safe = 1
|
||||
if items.find('rewrite_header ') > -1:
|
||||
tempData = items.split(' ')
|
||||
rewrite_header = ''
|
||||
counter = 0
|
||||
for headerData in tempData:
|
||||
if counter == 0:
|
||||
counter = counter + 1
|
||||
continue
|
||||
rewrite_header = rewrite_header + headerData.strip('\n') + ' '
|
||||
continue
|
||||
if items.find('required_score ') > -1:
|
||||
required_score = items.split(' ')[1].strip('\n')
|
||||
continue
|
||||
if items.find('required_hits ') > -1:
|
||||
required_hits = items.split(' ')[1].strip('\n')
|
||||
continue
|
||||
|
||||
final_dic = {'fetchStatus': 1,
|
||||
'installed': 1,
|
||||
'report_safe': report_safe,
|
||||
'rewrite_header': rewrite_header,
|
||||
'required_score': required_score,
|
||||
'required_hits': required_hits,
|
||||
}
|
||||
|
||||
|
||||
b=a.rstrip('/')
|
||||
c= b.rstrip(wpexpath)
|
||||
newpath = '/home/%s/public_html/%s' % (DomainName, wpexpath)
|
||||
|
||||
if wpexpath != "":
|
||||
home = "0"
|
||||
else:
|
||||
home = "1"
|
||||
print(wpexpath)
|
||||
print(c)
|
||||
# furl = "habi.com/subfolder"
|
||||
# a=furl[furl.find('/'):]
|
||||
# print(a)
|
||||
print(final_dic)
|
||||
Reference in New Issue
Block a user