ACL Manager

This commit is contained in:
usmannasir
2018-08-18 00:39:10 +05:00
parent bc29c59287
commit f3230a010b
57 changed files with 25510 additions and 23870 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,72 @@
{% extends "baseTemplate/index.html" %}
{% load i18n %}
{% block title %}{% trans "Change User ACL - 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 "Change User ACL" %}</h2>
<p>{% trans "This page can be used to change ACL for CyberPanel users." %}</p>
</div>
<div ng-controller="changeUserACLCTRL" class="panel">
<div class="panel-body">
<h3 class="title-hero">
{% trans "Delete Website" %} <img ng-hide="aclLoading" src="{% static 'images/loading.gif' %}">
</h3>
<div class="example-box-wrapper">
<form action="/" class="form-horizontal bordered-row">
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "Select User" %} </label>
<div class="col-sm-6">
<select ng-model="selectedUser" class="form-control">
{% for items in usersList %}
<option>{{ items }}</option>
{% endfor %}
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "Select ACL" %} </label>
<div class="col-sm-6">
<select ng-model="selectedACL" class="form-control">
{% for items in aclNames %}
<option>{{ items }}</option>
{% endfor %}
</select>
</div>
</div>
<div ng-hide="deleteACLButton" class="form-group">
<label class="col-sm-3 control-label"></label>
<div class="col-sm-4">
<button type="button" ng-click="changeACLFunc()" class="btn btn-primary btn-lg btn-block">{% trans "Change ACL" %}</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,423 @@
{% extends "baseTemplate/index.html" %}
{% load i18n %}
{% block title %}{% trans "Create new ACL - 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 "Create New ACL" %}</h2>
<p>{% trans "Create new Access Control defination, that specifies what CyberPanel users can do." %}</p>
</div>
<div class="panel">
<div ng-controller="createACLCTRL" class="panel-body">
<h3 class="title-hero">
{% trans "ACL Details" %}
</h3>
<div class="example-box-wrapper">
<form name="createUser" action="/" class="form-horizontal bordered-row">
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "ACL Name" %}</label>
<div class="col-sm-6">
<input placeholder="E.g support" type="text" class="form-control" ng-model="aclName" required>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-change="adminHook()" ng-model="makeAdmin" type="checkbox" value="">
{% trans "Make Admin" %}
</label>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "Version Management" %}</label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="versionManagement" type="checkbox" value="">
{% trans "Version Management" %}
</label>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "User Management" %}</label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="createNewUser" type="checkbox" value="">
{% trans "Create New User" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="resellerCenter" type="checkbox" value="">
{% trans "Reseller Center" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="deleteUser" type="checkbox" value="">
{% trans "Delete User" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="changeUserACL" type="checkbox" value="">
{% trans "Change User ACL" %}
</label>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "Website Management" %}</label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="createWebsite" type="checkbox" value="">
{% trans "Create Website" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="modifyWebsite" type="checkbox" value="">
{% trans "Modify Website" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="suspendWebsite" type="checkbox" value="">
{% trans "Suspend Website" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="deleteWebsite" type="checkbox" value="">
{% trans "Delete Website" %}
</label>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "Package Management" %}</label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="createPackage" type="checkbox" value="">
{% trans "Create Package" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="deletePackage" type="checkbox" value="">
{% trans "Delete Package" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="modifyPackage" type="checkbox" value="">
{% trans "Modify Package" %}
</label>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "Database Management" %}</label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="createDatabase" type="checkbox" value="">
{% trans "Create Database" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="deleteDatabase" type="checkbox" value="">
{% trans "Delete Database" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="listDatabases" type="checkbox" value="">
{% trans "List Databases" %}
</label>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "DNS Management" %}</label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="createNameServer" type="checkbox" value="">
{% trans "Create Nameserver" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="createDNSZone" type="checkbox" value="">
{% trans "Delete DNS Zone" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="deleteZone" type="checkbox" value="">
{% trans "Delete Zone" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="addDeleteRecords" type="checkbox" value="">
{% trans "Add/Delete" %}
</label>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "Email Management" %}</label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="createEmail" type="checkbox" value="">
{% trans "Create Email" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="deleteEmail" type="checkbox" value="">
{% trans "Delete Email" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="emailForwarding" type="checkbox" value="">
{% trans "Email Forwarding" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="changeEmailPassword" type="checkbox" value="">
{% trans "Change Email Password" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="dkimManager" type="checkbox" value="">
{% trans "DKIM Manager" %}
</label>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "FTP Management" %}</label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="createFTPAccount" type="checkbox" value="">
{% trans "Create FTP Account" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="deleteFTPAccount" type="checkbox" value="">
{% trans "Delete FTP Account" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="listFTPAccounts" type="checkbox" value="">
{% trans "List FTP Accounts" %}
</label>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "Backup Management" %}</label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="createBackup" type="checkbox" value="">
{% trans "Create Back up" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="restoreBackup" type="checkbox" value="">
{% trans "Restore Back up" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="addDeleteDestinations" type="checkbox" value="">
{% trans "Add/Delete Destination" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="scheDuleBackups" type="checkbox" value="">
{% trans "Achedule Back up" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="remoteBackups" type="checkbox" value="">
{% trans "Remote Back ups" %}
</label>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "SSL Management" %}</label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="manageSSL" type="checkbox" value="">
{% trans "Manage SSL" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="hostnameSSL" type="checkbox" value="">
{% trans "Hostname SSL" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="mailServerSSL" type="checkbox" value="">
{% trans "MailServer SSL" %}
</label>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label"></label>
<div class="col-sm-4">
<button type="button" ng-click="createACLFunc()" class="btn btn-primary btn-lg btn-block">{% trans "Create ACL" %} <img ng-hide="aclLoading" src="{% static 'images/loading.gif' %}"></button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@@ -54,57 +54,34 @@
<!------------ Account Type ------------>
{% if adminType == 1 %}
<!------------ Account ACL ------------>
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "Account Type" %}</label>
<label class="col-sm-3 control-label">{% trans "Select ACL" %} </label>
<div class="col-sm-6">
<select ng-change="showLimitsBox()" ng-model="accountType" class="form-control">
<option>Admin</option>
<option>Normal User</option>
<select ng-model="selectedACL" class="form-control">
{% for items in aclNames %}
<option>{{ items }}</option>
{% endfor %}
</select>
</div>
</div>
{% else %}
<!------------ Account ACL ------------>
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "Account Type" %}</label>
<label class="col-sm-3 control-label">{% trans "Websites Limit" %}</label>
<div class="col-sm-6">
<select ng-change="showLimitsBox()" ng-model="accountType" class="form-control">
<option>Normal User</option>
</select>
<input placeholder="0 = Unlimited" type="number" class="form-control" ng-model="websitesLimits" required>
</div>
</div>
{% endif %}
<!------------ Account Type ------------>
<div ng-hide="acctsLimit" class="form-group">
<label class="col-sm-3 control-label">{% trans "User Accounts Limit" %}</label>
<div class="col-sm-6">
<input name="userAccountsLimit" type="number" class="form-control" ng-model="userAccountsLimit" required>
</div>
<div ng-show="createUser.userAccountsLimit.$error.number" class="current-pack">{% trans "Only Numbers" %}</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "Username" %}</label>
<div class="col-sm-6">
<input name="username" ng-change="hideSomeThings()" type="text" class="form-control" ng-model="userName" required>
<input type="text" class="form-control" ng-model="userName" required>
</div>
<div ng-show="createUser.username.$error.pattern" class="current-pack">{% trans "Username should be lowercase alphanumeric." %}</div>
</div>
@@ -114,8 +91,6 @@
<div class="col-sm-6">
<input name="password" type="password" class="form-control" ng-model="password" required>
</div>
<div ng-show="createUser.password.$error.pattern" class="current-pack">{% trans "Must contain one number and one special character." %}</div>
</div>
@@ -123,12 +98,7 @@
<div class="form-group">
<label class="col-sm-3 control-label"></label>
<div class="col-sm-4">
<button ng-disabled="createUser.websitesLimit.$error.number ||
createUser.userAccountsLimit.$error.number ||
createUser.email.$error.email ||
createUser.firstName.$error.pattern ||
createUser.lastName.$error.pattern"
type="button" ng-click="createUserFunc()" class="btn btn-primary btn-lg btn-block">{% trans "Create User" %}</button>
<button type="button" ng-click="createUserFunc()" class="btn btn-primary btn-lg btn-block">{% trans "Create User" %}</button>
</div>
</div>

View File

@@ -0,0 +1,68 @@
{% extends "baseTemplate/index.html" %}
{% load i18n %}
{% block title %}{% trans "Delete ACL - 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 "Delete ACL" %}</h2>
<p>{% trans "This page can be used to delete ACL." %}</p>
</div>
<div ng-controller="deleteACTCTRL" class="panel">
<div class="panel-body">
<h3 class="title-hero">
{% trans "Delete Website" %} <img ng-hide="aclLoading" src="{% static 'images/loading.gif' %}">
</h3>
<div class="example-box-wrapper">
<form action="/" class="form-horizontal bordered-row">
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "Select ACL" %} </label>
<div class="col-sm-6">
<select ng-model="aclToBeDeleted" class="form-control">
{% for items in aclNames %}
<option>{{ items }}</option>
{% endfor %}
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label"></label>
<div class="col-sm-4">
<button type="button" ng-click="deleteACLFunc()" class="btn btn-primary btn-lg btn-block">{% trans "Delete ACL" %}</button>
</div>
</div>
<div ng-hide="deleteACLButton" class="form-group">
<label class="col-sm-3 control-label"></label>
<div class="col-sm-4">
<button type="button" ng-click="deleteACLFinal()" class="btn btn-primary btn-lg btn-block">{% trans "Are you sure?" %}</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,428 @@
{% extends "baseTemplate/index.html" %}
{% load i18n %}
{% block title %}{% trans "Modify an ACL - 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 "Modify an ACL" %}</h2>
<p>{% trans "On this page you can modify an existing ACL." %}</p>
</div>
<div class="panel">
<div ng-controller="modifyACLCtrl" class="panel-body">
<h3 class="title-hero">
{% trans "ACL Details" %} - <img ng-hide="aclLoading" src="{% static 'images/loading.gif' %}">
</h3>
<div class="example-box-wrapper">
<form action="/" class="form-horizontal bordered-row">
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "Select ACL" %} </label>
<div class="col-sm-6">
<select ng-change="fetchDetails()" ng-model="aclToModify" class="form-control">
{% for items in aclNames %}
<option>{{ items }}</option>
{% endfor %}
</select>
</div>
</div>
<div ng-hide="aclDetails" class="form-group">
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-change="adminHook()" ng-model="makeAdmin" type="checkbox" value="">
{% trans "Make Admin" %}
</label>
</div>
</div>
</div>
<div ng-hide="aclDetails" class="form-group">
<label class="col-sm-3 control-label">{% trans "Version Management" %}</label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="versionManagement" type="checkbox" value="">
{% trans "Version Management" %}
</label>
</div>
</div>
</div>
<div ng-hide="aclDetails" class="form-group">
<label class="col-sm-3 control-label">{% trans "User Management" %}</label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="createNewUser" type="checkbox" value="">
{% trans "Create New User" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="resellerCenter" type="checkbox" value="">
{% trans "Reseller Center" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="deleteUser" type="checkbox" value="">
{% trans "Delete User" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="changeUserACL" type="checkbox" value="">
{% trans "Change User ACL" %}
</label>
</div>
</div>
</div>
<div ng-hide="aclDetails" class="form-group">
<label class="col-sm-3 control-label">{% trans "Website Management" %}</label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="createWebsite" type="checkbox" value="">
{% trans "Create Website" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="modifyWebsite" type="checkbox" value="">
{% trans "Modify Website" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="suspendWebsite" type="checkbox" value="">
{% trans "Suspend Website" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="deleteWebsite" type="checkbox" value="">
{% trans "Delete Website" %}
</label>
</div>
</div>
</div>
<div ng-hide="aclDetails" class="form-group">
<label class="col-sm-3 control-label">{% trans "Package Management" %}</label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="createPackage" type="checkbox" value="">
{% trans "Create Package" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="deletePackage" type="checkbox" value="">
{% trans "Delete Package" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="modifyPackage" type="checkbox" value="">
{% trans "Modify Package" %}
</label>
</div>
</div>
</div>
<div ng-hide="aclDetails" class="form-group">
<label class="col-sm-3 control-label">{% trans "Database Management" %}</label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="createDatabase" type="checkbox" value="">
{% trans "Create Database" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="deleteDatabase" type="checkbox" value="">
{% trans "Delete Database" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="listDatabases" type="checkbox" value="">
{% trans "List Databases" %}
</label>
</div>
</div>
</div>
<div ng-hide="aclDetails" class="form-group">
<label class="col-sm-3 control-label">{% trans "DNS Management" %}</label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="createNameServer" type="checkbox" value="">
{% trans "Create Nameserver" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="createDNSZone" type="checkbox" value="">
{% trans "Delete DNS Zone" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="deleteZone" type="checkbox" value="">
{% trans "Delete Zone" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="addDeleteRecords" type="checkbox" value="">
{% trans "Add/Delete" %}
</label>
</div>
</div>
</div>
<div ng-hide="aclDetails" class="form-group">
<label class="col-sm-3 control-label">{% trans "Email Management" %}</label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="createEmail" type="checkbox" value="">
{% trans "Create Email" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="deleteEmail" type="checkbox" value="">
{% trans "Delete Email" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="emailForwarding" type="checkbox" value="">
{% trans "Email Forwarding" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="changeEmailPassword" type="checkbox" value="">
{% trans "Change Email Password" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="dkimManager" type="checkbox" value="">
{% trans "DKIM Manager" %}
</label>
</div>
</div>
</div>
<div ng-hide="aclDetails" class="form-group">
<label class="col-sm-3 control-label">{% trans "FTP Management" %}</label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="createFTPAccount" type="checkbox" value="">
{% trans "Create FTP Account" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="deleteFTPAccount" type="checkbox" value="">
{% trans "Delete FTP Account" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="listFTPAccounts" type="checkbox" value="">
{% trans "List FTP Accounts" %}
</label>
</div>
</div>
</div>
<div ng-hide="aclDetails" class="form-group">
<label class="col-sm-3 control-label">{% trans "Backup Management" %}</label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="createBackup" type="checkbox" value="">
{% trans "Create Back up" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="restoreBackup" type="checkbox" value="">
{% trans "Restore Back up" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="addDeleteDestinations" type="checkbox" value="">
{% trans "Add/Delete Destination" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="scheDuleBackups" type="checkbox" value="">
{% trans "Achedule Back up" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="remoteBackups" type="checkbox" value="">
{% trans "Remote Back ups" %}
</label>
</div>
</div>
</div>
<div ng-hide="aclDetails" class="form-group">
<label class="col-sm-3 control-label">{% trans "SSL Management" %}</label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="manageSSL" type="checkbox" value="">
{% trans "Manage SSL" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="hostnameSSL" type="checkbox" value="">
{% trans "Hostname SSL" %}
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="mailServerSSL" type="checkbox" value="">
{% trans "MailServer SSL" %}
</label>
</div>
</div>
</div>
<div ng-hide="aclDetails" class="form-group">
<label class="col-sm-3 control-label"></label>
<div class="col-sm-4">
<button type="button" ng-click="saveChanges()" class="btn btn-primary btn-lg btn-block">{% trans "Save Changes" %} <img ng-hide="aclLoading" src="{% static 'images/loading.gif' %}"></button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@@ -22,17 +22,16 @@
<form action="/" class="form-horizontal bordered-row">
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "Select Account" %}</label>
<div class="col-sm-6">
<select ng-change="fetchUserDetails()" ng-model="accountUsername" class="form-control">
{% for accts in acctNames %}
<option>{{ accts }}</option>
{% endfor %}
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "Select Account" %}</label>
<div class="col-sm-6">
<select ng-change="fetchUserDetails()" ng-model="accountUsername" class="form-control">
{% for accts in acctNames %}
<option>{{ accts }}</option>
{% endfor %}
</select>
</div>
</div>
<div ng-hide="acctDetailsFetched" class="form-group">
@@ -58,55 +57,6 @@
</div>
<!------------ Account Type ------------>
{% if adminType == 1 %}
<div ng-hide="accountTypeView" class="form-group">
<label class="col-sm-3 control-label">{% trans "Account Type" %}</label>
<div class="col-sm-6">
<select ng-change="showLimitsBox()" ng-model="accountType" class="form-control">
<option>Admin</option>
<option>Normal User</option>
</select>
</div>
<div class="current-pack">{% trans "Currently:" %} {$ currentAccountType $}</div>
</div>
{% else %}
<div ng-hide="accountTypeView" class="form-group">
<label class="col-sm-3 control-label">{% trans "Account Type" %}</label>
<div class="col-sm-6">
<select ng-change="showLimitsBox()" ng-model="accountType" class="form-control">
<option>Normal User</option>
</select>
</div>
<div class="current-pack">{% trans "Currently:" %} {$ currentAccountType $}</div>
</div>
{% endif %}
<!------------ Account Type ------------>
{% if adminType == 1 %}
<div ng-hide="userAccountsLimit" class="form-group">
<label class="col-sm-3 control-label">{% trans "User Accounts Limit" %}</label>
<div class="col-sm-6">
<input type="number" class="form-control" ng-model="userAccountsLimitValue" required>
</div>
</div>
{% endif %}
<div ng-hide="acctDetailsFetched" class="form-group">
<label class="col-sm-3 control-label">{% trans "Password" %}</label>
<div class="col-sm-6">
@@ -116,8 +66,6 @@
<div ng-hide="acctDetailsFetched" class="form-group">
<label class="col-sm-3 control-label"></label>
<div class="col-sm-4">

View File

@@ -0,0 +1,78 @@
{% extends "baseTemplate/index.html" %}
{% load i18n %}
{% block title %}{% trans "Reseller Center - 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 "Reseller Center" %}</h2>
<p>{% trans "Change owner of users and change websites limits." %}</p>
</div>
<div ng-controller="resellerCenterCTRL" class="panel">
<div class="panel-body">
<h3 class="title-hero">
{% trans "Reseller Center" %} <img ng-hide="aclLoading" src="{% static 'images/loading.gif' %}">
</h3>
<div class="example-box-wrapper">
<form action="/" class="form-horizontal bordered-row">
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "Select User" %} </label>
<div class="col-sm-6">
<select ng-model="userToBeModified" class="form-control">
{% for items in userToBeModified %}
<option>{{ items }}</option>
{% endfor %}
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "New Owner" %} </label>
<div class="col-sm-6">
<select ng-model="newOwner" class="form-control">
{% for items in resellerPrivUsers %}
<option>{{ items }}</option>
{% endfor %}
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "Websites Limit" %}</label>
<div class="col-sm-6">
<input type="number" class="form-control" ng-model="websitesLimit" 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="saveResellerChanges()" class="btn btn-primary btn-lg btn-block">{% trans "Save Changes" %}</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@@ -55,29 +55,12 @@
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "Account Level" %}</label>
<label class="col-sm-3 control-label">{% trans "Account ACL" %}</label>
<div class="col-sm-6">
<div class="current-pack">{{ type }}</div>
<div class="current-pack">{{ accountACL }}</div>
</div>
</div>
{% if typeNumeric == 1 %}
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "User Accounts Limit" %}</label>
<div class="col-sm-6">
<div class="current-pack">{{ userAccountsLimit }} {% trans "( 0 = Unlimited )" %}</div>
</div>
</div>
{% elif typeNumeric == 2 %}
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "User Accounts Limit" %}</label>
<div class="col-sm-6">
<div class="current-pack">{{ userAccountsLimit }} {% trans "( 0 = Unlimited )" %}</div>
</div>
</div>
{% endif %}
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "Websites Limit" %}</label>
<div class="col-sm-6">

View File

@@ -16,4 +16,16 @@ urlpatterns = [
url(r'^deleteUser',views.deleteUser,name="deleteUser"),
url(r'^submitUserDeletion',views.submitUserDeletion,name="submitUserDeletion"),
url(r'^createNewACL$',views.createNewACL,name="createNewACL"),
url(r'^createACLFunc$',views.createACLFunc,name="createACLFunc"),
url(r'^deleteACL$',views.deleteACL,name="deleteACL"),
url(r'^deleteACLFunc$',views.deleteACLFunc,name="deleteACLFunc"),
url(r'^modifyACL$',views.modifyACL,name="modifyACL"),
url(r'^fetchACLDetails$',views.fetchACLDetails,name="fetchACLDetails"),
url(r'^submitACLModifications$',views.submitACLModifications,name="submitACLModifications"),
url(r'^changeUserACL$',views.changeUserACL,name="changeUserACL"),
url(r'^changeACLFunc$',views.changeACLFunc,name="changeACLFunc"),
url(r'^resellerCenter$',views.resellerCenter,name="resellerCenter"),
url(r'^saveResellerChanges$',views.saveResellerChanges,name="saveResellerChanges"),
]

View File

@@ -4,10 +4,11 @@ from __future__ import unicode_literals
from django.shortcuts import render,redirect
from django.http import HttpResponse
from loginSystem.views import loadLoginPage
from loginSystem.models import Administrator
from loginSystem.models import Administrator, ACL
import json
from plogical import hashPassword
from plogical import CyberCPLogFileWriter as logging
from plogical.acl import ACLManager
# Create your views here.
@@ -26,7 +27,6 @@ def loadUserHome(request):
except KeyError:
return redirect(loadLoginPage)
def viewProfile(request):
try:
userID = request.session['userID']
@@ -38,143 +38,119 @@ def viewProfile(request):
AdminData['userName'] = admin.userName
AdminData['firstName'] = admin.firstName
AdminData['lastName'] = admin.lastName
AdminData['userAccountsLimit'] = admin.initUserAccountsLimit
AdminData['websitesLimit'] = admin.initWebsitesLimit
AdminData['email'] = admin.email
AdminData['typeNumeric'] = admin.type
if admin.type == 1:
AdminData['type'] = "root"
elif admin.type == 2:
AdminData['type'] = "Reseller"
else:
AdminData['type'] = "User"
AdminData['accountACL'] = admin.acl.name
return render(request, 'userManagment/userProfile.html',AdminData)
except KeyError:
return redirect(loadLoginPage)
def createUser(request):
try:
userID = request.session['userID']
currentACL = ACLManager.loadedACL(userID)
admin = Administrator.objects.get(pk=userID)
if currentACL['admin'] == 1:
aclNames = ACLManager.unFileteredACLs()
return render(request, 'userManagment/createUser.html', {'aclNames' : aclNames})
elif currentACL['changeUserACL'] == 1:
aclNames = ACLManager.unFileteredACLs()
return render(request, 'userManagment/createUser.html', {'aclNames': aclNames})
elif currentACL['createNewUser'] == 1:
aclNames = ['user']
return render(request, 'userManagment/createUser.html', {'aclNames': aclNames})
else:
return ACLManager.loadError()
if admin.type == 3:
return HttpResponse("You don't have enough privileges to access this page.")
try:
adminType = admin.type
return render(request, 'userManagment/createUser.html',{"adminType":adminType})
except BaseException,msg:
logging.CyberCPLogFileWriter.writeToFile(str(msg))
return HttpResponse("Look for errors in CyberCP Main Log File")
except KeyError:
except BaseException,msg:
logging.CyberCPLogFileWriter.writeToFile(str(msg))
return redirect(loadLoginPage)
def submitUserCreation(request):
try:
val = request.session['userID']
try:
userID = request.session['userID']
currentACL = ACLManager.loadedACL(userID)
currentAdmin = Administrator.objects.get(pk=val)
data = json.loads(request.body)
firstName = data['firstName']
lastName = data['lastName']
email = data['email']
userName = data['userName']
password = data['password']
websitesLimit = data['websitesLimit']
selectedACL = data['selectedACL']
childUsers = Administrator.objects.filter(owner=currentAdmin.pk).count()
if currentAdmin.type == 1:
pass
selectedACL = ACL.objects.get(name=selectedACL)
if selectedACL.adminStatus == 1:
type = 1
else:
if currentAdmin.initWebsitesLimit == 0:
pass
type = 3
elif currentAdmin.initUserAccountsLimit == childUsers:
data_ret = {'createStatus': 0,
'error_message': "Reached Maximum User Creation Limit"}
password = hashPassword.hash_password(password)
currentAdmin = Administrator.objects.get(pk=userID)
final_json = json.dumps(data_ret)
return HttpResponse(final_json)
else:
pass
if ACLManager.websitesLimitCheck(currentAdmin, websitesLimit) == 0:
data_ret = {'createStatus': 0,
'error_message': "You've reached maximum websites limit as a reseller."}
final_json = json.dumps(data_ret)
return HttpResponse(final_json)
if request.method == 'POST':
data = json.loads(request.body)
firstName = data['firstName']
lastName = data['lastName']
email = data['email']
userName = data['userName']
password = data['password']
if currentACL['admin'] == 1:
password = hashPassword.hash_password(password)
newAdmin = Administrator(firstName=firstName,
lastName=lastName,
email=email,
type=type,
userName=userName,
password=password,
initWebsitesLimit=websitesLimit,
owner=currentAdmin.pk,
acl=selectedACL
)
newAdmin.save()
accountType = data['accountType']
elif currentACL['changeUserACL'] == 1:
if accountType == "Admin":
newAdmin = Administrator(firstName=firstName,
lastName=lastName,
email=email,
type=type,
userName=userName,
password=password,
initWebsitesLimit=websitesLimit,
owner=currentAdmin.pk,
acl=selectedACL
)
newAdmin.save()
elif currentACL['createNewUser'] == 1:
newAdmin = Administrator(firstName=firstName,
lastName=lastName,
email=email,
type=1,
userName=userName,
password=password,
initWebsitesLimit=0,
owner=currentAdmin.pk
)
newAdmin.save()
currentAdmin.save()
newAdmin = Administrator(firstName=firstName,
lastName=lastName,
email=email,
type=type,
userName=userName,
password=password,
initWebsitesLimit=websitesLimit,
owner=currentAdmin.pk,
acl=selectedACL
)
newAdmin.save()
else:
data_ret = {'createStatus': 0,
'error_message': "You are not authorized to access this resource."}
data_ret = {'createStatus': 1,
'error_message': "None"}
final_json = json.dumps(data_ret)
return HttpResponse(final_json)
final_json = json.dumps(data_ret)
return HttpResponse(final_json)
elif accountType == "Normal User":
newAdmin = Administrator(firstName=firstName,
lastName=lastName,
email=email,
type=3,
userName=userName,
password=password,
initWebsitesLimit=0,
owner=currentAdmin.pk
)
newAdmin.save()
currentAdmin.save()
data_ret = {'createStatus': 1,
'error_message': "None"}
final_json = json.dumps(data_ret)
return HttpResponse(final_json)
else:
websitesLimit = data['websitesLimit']
userAccountsLimit = 0
newAdmin = Administrator(firstName=firstName,
lastName=lastName,
email=email,
type=2,
userName=userName,
password=password,
initWebsitesLimit=websitesLimit,
initUserAccountsLimit=userAccountsLimit,
owner=currentAdmin.pk
)
newAdmin.save()
currentAdmin.save()
data_ret = {'createStatus': 1,
'error_message': "None"}
final_json = json.dumps(data_ret)
return HttpResponse(final_json)
data_ret = {'createStatus': 1,
'error_message': "None"}
final_json = json.dumps(data_ret)
return HttpResponse(final_json)
except BaseException, msg:
data_ret = {'createStatus': 0, 'error_message': str(msg)}
@@ -186,29 +162,11 @@ def submitUserCreation(request):
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
def modifyUsers(request):
try:
userID = request.session['userID']
admin = Administrator.objects.get(pk=userID)
adminNames = []
if admin.type == 1:
admins = Administrator.objects.all()
adminType = 1
for items in admins:
adminNames.append(items.userName)
elif admin.type == 2:
admins = Administrator.objects.filter(owner=admin.pk)
adminType = 2
for items in admins:
adminNames.append(items.userName)
else:
adminType = 3
adminNames.append(admin.userName)
return render(request, 'userManagment/modifyUser.html',{"acctNames":adminNames,"adminType":adminType})
adminNames = ACLManager.loadAllUsers(userID)
return render(request, 'userManagment/modifyUser.html',{"acctNames":adminNames})
except KeyError:
return redirect(loadLoginPage)
@@ -216,9 +174,6 @@ def fetchUserDetails(request):
try:
val = request.session['userID']
try:
currentAdmin = Administrator.objects.get(pk=val)
if request.method == 'POST':
data = json.loads(request.body)
accountUsername = data['accountUsername']
@@ -229,22 +184,12 @@ def fetchUserDetails(request):
lastName = user.lastName
email = user.email
if user.type == 1:
accountType = "Administrator"
elif user.type == 2:
accountType = "Reseller"
else:
accountType = "Normal User"
userAccountsLimit = user.initUserAccountsLimit
websitesLimit = user.initWebsitesLimit
userDetails = {"firstName":firstName,
"lastName": lastName,
"email": email,
"accountType": accountType,
"userAccountsLimit": userAccountsLimit,
"acl": user.acl.name,
"websitesLimit": websitesLimit}
data_ret = {'fetchStatus': 1, 'error_message': 'None',"userDetails":userDetails}
@@ -252,7 +197,6 @@ def fetchUserDetails(request):
return HttpResponse(json_data)
except BaseException, msg:
data_ret = {'fetchStatus': 0, 'error_message': str(msg)}
json_data = json.dumps(data_ret)
@@ -263,12 +207,10 @@ def fetchUserDetails(request):
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
def saveModifications(request):
try:
val = request.session['userID']
try:
if request.method == 'POST':
data = json.loads(request.body)
accountUsername = data['accountUsername']
@@ -281,77 +223,18 @@ def saveModifications(request):
password = hashPassword.hash_password(data['password'])
if admin.type != 1:
if admin != user:
data_ret = {'saveStatus': 1, 'error_message': 'Not enough privileges'}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
user.firstName = firstName
user.lastName = lastName
user.email = email
user.password = password
user.type = 0
if user.type == 1:
userAccountsLimit = 0
websitesLimit = 0
user.firstName = firstName
user.lastName = lastName
user.email = email
user.password = password
user.initWebsitesLimit = websitesLimit
user.initUserAccountsLimit = userAccountsLimit
user.type = 1
user.save()
data_ret = {'saveStatus': 1, 'error_message': 'None'}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
if data['accountType'] == "Reseller":
userAccountsLimit = 0
websitesLimit = 0
user.firstName = firstName
user.lastName = lastName
user.email = email
user.password = password
user.initWebsitesLimit = websitesLimit
user.initUserAccountsLimit = userAccountsLimit
user.type = 2
user.save()
elif data['accountType'] == "Normal User":
user.firstName = firstName
user.lastName = lastName
user.email = email
user.password = password
user.initWebsitesLimit = 0
user.type = 3
user.save()
else:
userAccountsLimit = 0
websitesLimit = 0
user.firstName = firstName
user.lastName = lastName
user.email = email
user.password = password
user.initWebsitesLimit = websitesLimit
user.initUserAccountsLimit = userAccountsLimit
user.type = 1
user.save()
user.save()
data_ret = {'saveStatus': 1, 'error_message': 'None'}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
except BaseException, msg:
data_ret = {'saveStatus': 0, 'error_message': str(msg)}
json_data = json.dumps(data_ret)
@@ -362,44 +245,37 @@ def saveModifications(request):
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
def deleteUser(request):
try:
userID = request.session['userID']
admin = Administrator.objects.get(pk=userID)
currentACL = ACLManager.loadedACL(userID)
if admin.type == 3:
return HttpResponse("You don't have enough privileges to access this page.")
if admin.type == 1:
admins = Administrator.objects.all()
adminNames = []
for items in admins:
if not items.userName == "admin":
adminNames.append(items.userName)
if currentACL['admin'] == 1:
adminNames = ACLManager.loadDeletionUsers(userID, currentACL)
return render(request, 'userManagment/deleteUser.html', {"acctNames": adminNames})
elif currentACL['deleteUser'] == 1:
adminNames = ACLManager.loadDeletionUsers(userID, currentACL)
return render(request, 'userManagment/deleteUser.html', {"acctNames": adminNames})
else:
admins = Administrator.objects.filter(owner=admin.pk)
adminNames = []
for items in admins:
adminNames.append(items.userName)
return ACLManager.loadError()
return render(request, 'userManagment/deleteUser.html',{"acctNames":adminNames})
except KeyError:
return redirect(loadLoginPage)
def submitUserDeletion(request):
try:
val = request.session['userID']
userID = request.session['userID']
try:
if request.method == 'POST':
data = json.loads(request.body)
accountUsername = data['accountUsername']
admin = Administrator.objects.get(pk=val)
currentACL = ACLManager.loadedACL(userID)
if admin.type == 1:
if currentACL['admin'] == 1:
user = Administrator.objects.get(userName=accountUsername)
user.delete()
@@ -422,3 +298,438 @@ def submitUserDeletion(request):
data_ret = {'deleteStatus': 0, 'error_message': "Not logged in as admin",}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
def createNewACL(request):
try:
userID = request.session['userID']
currentACL = ACLManager.loadedACL(userID)
if currentACL['admin'] == 1:
return render(request, 'userManagment/createACL.html')
else:
return ACLManager.loadError()
except KeyError:
return redirect(loadLoginPage)
def createACLFunc(request):
try:
val = request.session['userID']
currentACL = ACLManager.loadedACL(val)
if currentACL['admin'] == 1:
data = json.loads(request.body)
## Version Management
newACL = ACL(name=data['aclName'],
adminStatus = int(data['makeAdmin']),
versionManagement=int(data['versionManagement']),
## User Management
createNewUser = int(data['createNewUser']),
resellerCenter = int(data['resellerCenter']),
deleteUser = int(data['deleteUser']),
changeUserACL= int(data['changeUserACL']),
## Website Management
createWebsite = int(data['createWebsite']),
modifyWebsite = int(data['modifyWebsite']),
suspendWebsite = int(data['suspendWebsite']),
deleteWebsite = int(data['deleteWebsite']),
## Package Management
createPackage = int(data['createPackage']),
deletePackage = int(data['deletePackage']),
modifyPackage = int(data['modifyPackage']),
## Database Management
createDatabase = int(data['createDatabase']),
deleteDatabase = int(data['deleteDatabase']),
listDatabases = int(data['listDatabases']),
## DNS Management
createNameServer = int(data['createNameServer']),
createDNSZone = int(data['createDNSZone']),
deleteZone = int(data['deleteZone']),
addDeleteRecords = int(data['addDeleteRecords']),
## Email Management
createEmail = int(data['createEmail']),
deleteEmail = int(data['deleteEmail']),
emailForwarding = int(data['emailForwarding']),
changeEmailPassword = int(data['changeEmailPassword']),
dkimManager = int(data['dkimManager']),
## FTP Management
createFTPAccount = int(data['createFTPAccount']),
deleteFTPAccount = int(data['deleteFTPAccount']),
listFTPAccounts = int(data['listFTPAccounts']),
## Backup Management
createBackup = int(data['createBackup']),
restoreBackup = int(data['restoreBackup']),
addDeleteDestinations = int(data['addDeleteDestinations']),
scheDuleBackups = int(data['scheDuleBackups']),
remoteBackups = int(data['remoteBackups']),
## SSL Management
manageSSL = int(data['manageSSL']),
hostnameSSL = int(data['hostnameSSL']),
mailServerSSL = int(data['mailServerSSL']),
)
newACL.save()
finalResponse = { 'status': 1}
else:
finalResponse = ACLManager.loadErrorJson()
json_data = json.dumps(finalResponse)
return HttpResponse(json_data)
except BaseException, msg:
finalResponse = {'status':0, 'errorMessage': str(msg)}
json_data = json.dumps(finalResponse)
return HttpResponse(json_data)
def deleteACL(request):
try:
userID = request.session['userID']
currentACL = ACLManager.loadedACL(userID)
if currentACL['admin'] == 1:
aclNames = ACLManager.findAllACLs()
return render(request, 'userManagment/deleteACL.html', {'aclNames' : aclNames})
else:
return ACLManager.loadError()
except KeyError:
return redirect(loadLoginPage)
def deleteACLFunc(request):
try:
val = request.session['userID']
currentACL = ACLManager.loadedACL(val)
if currentACL['admin'] == 1:
data = json.loads(request.body)
acl = ACL.objects.get(name=data['aclToBeDeleted'])
if acl.administrator_set.all().count() == 0:
acl.delete()
finalResponse = {'status': 1}
else:
finalResponse = {'status': 0, 'errorMesssage' : 'This ACL is currently in used by existing users.'}
else:
finalResponse = ACLManager.loadErrorJson()
json_data = json.dumps(finalResponse)
return HttpResponse(json_data)
except BaseException, msg:
finalResponse = {'status':0, 'errorMessage': str(msg)}
json_data = json.dumps(finalResponse)
return HttpResponse(json_data)
def modifyACL(request):
try:
userID = request.session['userID']
currentACL = ACLManager.loadedACL(userID)
if currentACL['admin'] == 1:
aclNames = ACLManager.findAllACLs()
return render(request, 'userManagment/modifyACL.html', {'aclNames' : aclNames})
else:
return ACLManager.loadError()
except KeyError:
return redirect(loadLoginPage)
def fetchACLDetails(request):
try:
val = request.session['userID']
currentACL = ACLManager.loadedACL(val)
if currentACL['admin'] == 1:
data = json.loads(request.body)
## Version Management
finalResponse = {}
acl = ACL.objects.get(name=data['aclToModify'])
finalResponse['versionManagement'] = acl.versionManagement
finalResponse['adminStatus'] = acl.adminStatus
## User Management
finalResponse['createNewUser'] = acl.createNewUser
finalResponse['resellerCenter'] = acl.resellerCenter
finalResponse['deleteUser'] = acl.deleteUser
finalResponse['changeUserACL'] = acl.changeUserACL
## Website Management
finalResponse['createWebsite'] = acl.createWebsite
finalResponse['modifyWebsite'] = acl.modifyWebsite
finalResponse['suspendWebsite'] = acl.suspendWebsite
finalResponse['deleteWebsite'] = acl.deleteWebsite
## Package Management
finalResponse['createPackage'] = acl.createPackage
finalResponse['deletePackage'] = acl.deletePackage
finalResponse['modifyPackage'] = acl.modifyPackage
## Database Management
finalResponse['createDatabase'] = acl.createDatabase
finalResponse['deleteDatabase'] = acl.deleteDatabase
finalResponse['listDatabases'] = acl.listDatabases
## DNS Management
finalResponse['createNameServer'] = acl.createNameServer
finalResponse['createDNSZone'] = acl.createDNSZone
finalResponse['deleteZone'] = acl.deleteZone
finalResponse['addDeleteRecords'] = acl.addDeleteRecords
## Email Management
finalResponse['createEmail'] = acl.createEmail
finalResponse['deleteEmail'] = acl.deleteEmail
finalResponse['emailForwarding'] = acl.emailForwarding
finalResponse['changeEmailPassword'] = acl.changeEmailPassword
finalResponse['dkimManager'] = acl.dkimManager
## FTP Management
finalResponse['createFTPAccount'] = acl.createFTPAccount
finalResponse['deleteFTPAccount'] = acl.deleteFTPAccount
finalResponse['listFTPAccounts'] = acl.listFTPAccounts
## Backup Management
finalResponse['createBackup'] = acl.createBackup
finalResponse['restoreBackup'] = acl.restoreBackup
finalResponse['addDeleteDestinations'] = acl.addDeleteDestinations
finalResponse['scheDuleBackups'] = acl.scheDuleBackups
finalResponse['remoteBackups'] = acl.remoteBackups
## SSL Management
finalResponse['manageSSL'] = acl.manageSSL
finalResponse['hostnameSSL'] = acl.hostnameSSL
finalResponse['mailServerSSL'] = acl.mailServerSSL
finalResponse['status'] = 1
else:
finalResponse = ACLManager.loadErrorJson()
json_data = json.dumps(finalResponse)
return HttpResponse(json_data)
except BaseException, msg:
finalResponse = {'status': 0, 'errorMessage': str(msg)}
json_data = json.dumps(finalResponse)
return HttpResponse(json_data)
def submitACLModifications(request):
try:
val = request.session['userID']
currentACL = ACLManager.loadedACL(val)
if currentACL['admin'] == 1:
data = json.loads(request.body)
## Version Management
acl = ACL.objects.get(name=data['aclToModify'])
acl.adminStatus = int(data['adminStatus'])
acl.versionManagement = int(data['versionManagement'])
## User Management
acl.createNewUser = int(data['createNewUser'])
acl.resellerCenter = int(data['resellerCenter'])
acl.deleteUser = int(data['deleteUser'])
acl.changeUserACL = int(data['changeUserACL'])
## Website Management
acl.createWebsite = int(data['createWebsite'])
acl.modifyWebsite = int(data['modifyWebsite'])
acl.suspendWebsite = int(data['suspendWebsite'])
acl.deleteWebsite = int(data['deleteWebsite'])
## Package Management
acl.createPackage = int(data['createPackage'])
acl.deletePackage = int(data['deletePackage'])
acl.modifyPackage = int(data['modifyPackage'])
## Database Management
acl.createDatabase = int(data['createDatabase'])
acl.deleteDatabase = int(data['deleteDatabase'])
acl.listDatabases = int(data['listDatabases'])
## DNS Management
acl.createNameServer = int(data['createNameServer'])
acl.createDNSZone = int(data['createDNSZone'])
acl.deleteZone = int(data['deleteZone'])
acl.addDeleteRecords = int(data['addDeleteRecords'])
## Email Management
acl.createEmail = int(data['createEmail'])
acl.deleteEmail = int(data['deleteEmail'])
acl.emailForwarding = int(data['emailForwarding'])
acl.changeEmailPassword = int(data['changeEmailPassword'])
acl.dkimManager = int(data['dkimManager'])
## FTP Management
acl.createFTPAccount = int(data['createFTPAccount'])
acl.deleteFTPAccount = int(data['deleteFTPAccount'])
acl.listFTPAccounts = int(data['listFTPAccounts'])
## Backup Management
acl.createBackup = int(data['createBackup'])
acl.restoreBackup = int(data['restoreBackup'])
acl.addDeleteDestinations = int(data['addDeleteDestinations'])
acl.scheDuleBackups = int(data['scheDuleBackups'])
acl.remoteBackups = int(data['remoteBackups'])
## SSL Management
acl.manageSSL = int(data['manageSSL'])
acl.hostnameSSL = int(data['hostnameSSL'])
acl.mailServerSSL = int(data['mailServerSSL'])
acl.save()
finalResponse = { 'status': 1}
else:
finalResponse = ACLManager.loadErrorJson()
json_data = json.dumps(finalResponse)
return HttpResponse(json_data)
except BaseException, msg:
finalResponse = {'status':0, 'errorMessage': str(msg)}
json_data = json.dumps(finalResponse)
return HttpResponse(json_data)
def changeUserACL(request):
try:
userID = request.session['userID']
currentACL = ACLManager.loadedACL(userID)
if currentACL['admin'] == 1:
aclNames = ACLManager.unFileteredACLs()
userNames = ACLManager.findAllUsers()
return render(request, 'userManagment/changeUserACL.html', {'aclNames' : aclNames, 'usersList': userNames})
elif currentACL['changeUserACL'] == 1:
aclNames = ACLManager.unFileteredACLs()
userNames = ACLManager.findAllUsers()
return render(request, 'userManagment/changeUserACL.html', {'aclNames': aclNames, 'usersList': userNames})
else:
return ACLManager.loadError()
except KeyError:
return redirect(loadLoginPage)
def changeACLFunc(request):
try:
val = request.session['userID']
currentACL = ACLManager.loadedACL(val)
if currentACL['admin'] == 1:
data = json.loads(request.body)
selectedACL = ACL.objects.get(name=data['selectedACL'])
selectedUser = Administrator.objects.get(userName=data['selectedUser'])
selectedUser.acl = selectedACL
selectedUser.save()
finalResponse = {'status': 1}
elif currentACL['changeUserACL'] == 1:
data = json.loads(request.body)
selectedACL = ACL.objects.get(name=data['selectedACL'])
selectedUser = Administrator.objects.get(userName=data['selectedUser'])
selectedUser.acl = selectedACL
selectedUser.save()
finalResponse = {'status': 1}
else:
finalResponse = ACLManager.loadErrorJson()
json_data = json.dumps(finalResponse)
return HttpResponse(json_data)
except BaseException, msg:
finalResponse = {'status':0, 'errorMessage': str(msg)}
json_data = json.dumps(finalResponse)
return HttpResponse(json_data)
def resellerCenter(request):
try:
userID = request.session['userID']
currentACL = ACLManager.loadedACL(userID)
if currentACL['admin'] == 1:
userNames = ACLManager.loadDeletionUsers(userID, currentACL)
resellerPrivUsers = ACLManager.userWithResellerPriv(userID)
return render(request, 'userManagment/resellerCenter.html', {'userToBeModified': userNames, 'resellerPrivUsers': resellerPrivUsers})
elif currentACL['resellerCenter'] == 1:
userNames = ACLManager.loadDeletionUsers(userID, currentACL)
resellerPrivUsers = ACLManager.userWithResellerPriv(userID)
return render(request, 'userManagment/resellerCenter.html',{'userToBeModified': userNames, 'resellerPrivUsers': resellerPrivUsers})
else:
return ACLManager.loadError()
except KeyError:
return redirect(loadLoginPage)
def saveResellerChanges(request):
try:
val = request.session['userID']
data = json.loads(request.body)
userToBeModified = Administrator.objects.get(userName=data['userToBeModified'])
newOwner = Administrator.objects.get(userName=data['newOwner'])
if ACLManager.websitesLimitCheck(newOwner, data['websitesLimit'], userToBeModified) == 0:
finalResponse = {'status': 0,
'errorMessage': "You've reached maximum websites limit as a reseller."}
json_data = json.dumps(finalResponse)
return HttpResponse(json_data)
userToBeModified.owner = newOwner.pk
userToBeModified.initWebsitesLimit = data['websitesLimit']
userToBeModified.save()
finalResponse = {'status': 1}
json_data = json.dumps(finalResponse)
return HttpResponse(json_data)
except BaseException, msg:
finalResponse = {'status':0, 'errorMessage': str(msg)}
json_data = json.dumps(finalResponse)
return HttpResponse(json_data)