email forwarding: structure for pipe to program

This commit is contained in:
Usman Nasir
2019-10-27 18:08:10 +05:00
parent 7d6ae9ec96
commit 683ada6f01
39 changed files with 19027 additions and 9565 deletions

444
.idea/workspace.xml generated
View File

@@ -28,39 +28,60 @@
<component name="FileEditorManager"> <component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300"> <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file pinned="false" current-in-tab="false"> <file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/plogical/virtualHostUtilities.py"> <entry file="file://$PROJECT_DIR$/mailServer/static/mailServer/mailServer.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1381"> <state relative-caret-position="22">
<caret line="1132" column="43" selection-start-line="1132" selection-start-column="31" selection-end-line="1132" selection-end-column="43" /> <caret line="1035" column="23" selection-start-line="1035" selection-start-column="11" selection-end-line="1035" selection-end-column="23" />
<folding> <folding>
<element signature="e#33#42#0" expanded="true" /> <element signature="e#20255#22112#0" />
<element signature="e#1294#2317#0" /> <element signature="e#22521#24394#0" />
<element signature="e#24458#26343#0" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/plogical/mailUtilities.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="301">
<caret line="222" column="28" selection-start-line="222" selection-start-column="28" selection-end-line="222" selection-end-column="28" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false"> <file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/plogical/processUtilities.py"> <entry file="file://$PROJECT_DIR$/mailServer/templates/mailServer/emailForwarding.html">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="331"> <state relative-caret-position="285">
<caret line="100" column="92" selection-start-line="100" selection-start-column="92" selection-end-line="100" selection-end-column="92" /> <caret line="100" column="117" lean-forward="true" selection-start-line="100" selection-start-column="117" selection-end-line="100" selection-end-column="117" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/mailServer/mailserverManager.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="292">
<caret line="355" column="48" selection-start-line="355" selection-start-column="48" selection-end-line="355" selection-end-column="48" />
<folding> <folding>
<element signature="e#0#64#0" expanded="true" /> <element signature="e#5347#7486#0" />
<element signature="e#7404#8499#0" />
<element signature="e#8540#9296#0" />
<element signature="e#9472#12776#0" />
<element signature="e#14319#15920#0" />
<element signature="e#15985#16779#0" />
<element signature="e#16825#18660#0" />
<element signature="e#18710#19389#0" />
<element signature="e#19428#21357#0" />
<element signature="e#21399#24129#0" />
<element signature="e#24170#24855#0" />
<element signature="e#24902#26851#0" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/mailServer/models.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="367">
<caret line="47" column="33" selection-start-line="47" selection-start-column="33" selection-end-line="47" selection-end-column="33" />
</state>
</provider>
</entry>
</file>
</leaf> </leaf>
</component> </component>
<component name="FileTemplateManagerImpl"> <component name="FileTemplateManagerImpl">
@@ -73,25 +94,6 @@
</component> </component>
<component name="FindInProjectRecents"> <component name="FindInProjectRecents">
<findStrings> <findStrings>
<find>externalApp</find>
<find>restoreDatabaseBackup</find>
<find>logging.writeToFile</find>
<find>build=0</find>
<find>version.txt</find>
<find>logging</find>
<find>Incremen</find>
<find>restoreDatabase</find>
<find>1.9.0</find>
<find>/usr/local/CyberCP/public/rainloop/rainloop/v/1.12.1/include.php</find>
<find>CLManager</find>
<find>IncBackups</find>
<find>chmod</find>
<find>stat.</find>
<find>destination</find>
<find>downloadAndUpgrade</find>
<find>/usr/local/CyberCP</find>
<find>os.remove</find>
<find>shutil.rmtree</find>
<find>setupVirtualEnv</find> <find>setupVirtualEnv</find>
<find>python</find> <find>python</find>
<find>setupDKIM</find> <find>setupDKIM</find>
@@ -103,6 +105,25 @@
<find>addRule</find> <find>addRule</find>
<find>firewalld</find> <find>firewalld</find>
<find>normal</find> <find>normal</find>
<find>Removing OpenLiteSpeed..</find>
<find>def decideServer(</find>
<find>mirror.cyberpanel.net</find>
<find>http</find>
<find>loginAPI</find>
<find>verify</find>
<find>verifylogins</find>
<find>https</find>
<find>kvm</find>
<find>openvz</find>
<find>virtualenv</find>
<find>createWebsiteAPI</find>
<find>selectedEmail</find>
<find>emailForwarding</find>
<find>emailFor</find>
<find>selectForwardingEmail</find>
<find>getEmailsForDomain</find>
<find>submitForwardDeletion</find>
<find>forwardEmail</find>
</findStrings> </findStrings>
<replaceStrings> <replaceStrings>
<replace>admin.api == 1</replace> <replace>admin.api == 1</replace>
@@ -118,6 +139,8 @@
<replace>self.website</replace> <replace>self.website</replace>
<replace>statusPath</replace> <replace>statusPath</replace>
<replace>cyberpanelLoading</replace> <replace>cyberpanelLoading</replace>
<replace>cyberpanel.sh</replace>
<replace>https</replace>
</replaceStrings> </replaceStrings>
<dirStrings> <dirStrings>
<dir>$PROJECT_DIR$/backup</dir> <dir>$PROJECT_DIR$/backup</dir>
@@ -131,12 +154,6 @@
<component name="IdeDocumentHistory"> <component name="IdeDocumentHistory">
<option name="CHANGED_PATHS"> <option name="CHANGED_PATHS">
<list> <list>
<option value="$PROJECT_DIR$/CyberCP/urls.py" />
<option value="$PROJECT_DIR$/CyberCP/settings.py" />
<option value="$PROJECT_DIR$/backup/views.py" />
<option value="$PROJECT_DIR$/managePHP/ubuntuphp70.xml" />
<option value="$PROJECT_DIR$/managePHP/ubuntuphp71.xml" />
<option value="$PROJECT_DIR$/managePHP/ubuntuphp72.xml" />
<option value="$PROJECT_DIR$/managePHP/ubuntuphp73.xml" /> <option value="$PROJECT_DIR$/managePHP/ubuntuphp73.xml" />
<option value="$PROJECT_DIR$/plogical/applicationInstaller.py" /> <option value="$PROJECT_DIR$/plogical/applicationInstaller.py" />
<option value="$PROJECT_DIR$/plogical/cPanelImporter.py" /> <option value="$PROJECT_DIR$/plogical/cPanelImporter.py" />
@@ -148,7 +165,6 @@
<option value="$PROJECT_DIR$/emailPremium/templates/emailPremium/policyServer.html" /> <option value="$PROJECT_DIR$/emailPremium/templates/emailPremium/policyServer.html" />
<option value="$PROJECT_DIR$/firewall/templates/firewall/index.html" /> <option value="$PROJECT_DIR$/firewall/templates/firewall/index.html" />
<option value="$PROJECT_DIR$/install/installLog.py" /> <option value="$PROJECT_DIR$/install/installLog.py" />
<option value="$PROJECT_DIR$/loginSystem/templates/loginSystem/login.html" />
<option value="$PROJECT_DIR$/plogical/CyberCPLogFileWriter.py" /> <option value="$PROJECT_DIR$/plogical/CyberCPLogFileWriter.py" />
<option value="$PROJECT_DIR$/plogical/backupSchedule.py" /> <option value="$PROJECT_DIR$/plogical/backupSchedule.py" />
<option value="$PROJECT_DIR$/plogical/backupScheduleLocal.py" /> <option value="$PROJECT_DIR$/plogical/backupScheduleLocal.py" />
@@ -159,7 +175,6 @@
<option value="$PROJECT_DIR$/postfixSenderPolicy/accept_traffic.py" /> <option value="$PROJECT_DIR$/postfixSenderPolicy/accept_traffic.py" />
<option value="$PROJECT_DIR$/s3Backups/s3Backups.py" /> <option value="$PROJECT_DIR$/s3Backups/s3Backups.py" />
<option value="$PROJECT_DIR$/IncBackups/models.py" /> <option value="$PROJECT_DIR$/IncBackups/models.py" />
<option value="$PROJECT_DIR$/plogical/csf.py" />
<option value="$PROJECT_DIR$/IncBackups/urls.py" /> <option value="$PROJECT_DIR$/IncBackups/urls.py" />
<option value="$PROJECT_DIR$/IncBackups/IncScheduler.py" /> <option value="$PROJECT_DIR$/IncBackups/IncScheduler.py" />
<option value="$PROJECT_DIR$/IncBackups/static/IncBackups/IncBackups.js" /> <option value="$PROJECT_DIR$/IncBackups/static/IncBackups/IncBackups.js" />
@@ -170,23 +185,31 @@
<option value="$PROJECT_DIR$/IncBackups/templates/IncBackups/incrementalDestinations.html" /> <option value="$PROJECT_DIR$/IncBackups/templates/IncBackups/incrementalDestinations.html" />
<option value="$PROJECT_DIR$/IncBackups/templates/IncBackups/createBackup.html" /> <option value="$PROJECT_DIR$/IncBackups/templates/IncBackups/createBackup.html" />
<option value="$PROJECT_DIR$/plogical/adminPass.py" /> <option value="$PROJECT_DIR$/plogical/adminPass.py" />
<option value="$PROJECT_DIR$/loginSystem/views.py" />
<option value="$PROJECT_DIR$/baseTemplate/templates/baseTemplate/index.html" /> <option value="$PROJECT_DIR$/baseTemplate/templates/baseTemplate/index.html" />
<option value="$PROJECT_DIR$/IncBackups/IncBackupsControl.py" /> <option value="$PROJECT_DIR$/IncBackups/IncBackupsControl.py" />
<option value="$PROJECT_DIR$/IncBackups/templates/IncBackups/backupSchedule.html" /> <option value="$PROJECT_DIR$/IncBackups/templates/IncBackups/backupSchedule.html" />
<option value="$PROJECT_DIR$/install/install.py" />
<option value="$PROJECT_DIR$/install/firewallUtilities.py" /> <option value="$PROJECT_DIR$/install/firewallUtilities.py" />
<option value="$PROJECT_DIR$/IncBackups/views.py" /> <option value="$PROJECT_DIR$/IncBackups/views.py" />
<option value="$PROJECT_DIR$/preUpgrade.sh" /> <option value="$PROJECT_DIR$/preUpgrade.sh" />
<option value="$PROJECT_DIR$/plogical/upgrade.py" /> <option value="$PROJECT_DIR$/plogical/upgrade.py" />
<option value="$PROJECT_DIR$/websiteFunctions/website.py" />
<option value="$PROJECT_DIR$/plogical/processUtilities.py" /> <option value="$PROJECT_DIR$/plogical/processUtilities.py" />
<option value="$PROJECT_DIR$/plogical/mailUtilities.py" /> <option value="$PROJECT_DIR$/plogical/mailUtilities.py" />
<option value="$PROJECT_DIR$/CyberCP/settings.py" />
<option value="$PROJECT_DIR$/loginSystem/views.py" />
<option value="$PROJECT_DIR$/loginSystem/templates/loginSystem/login.html" />
<option value="$PROJECT_DIR$/plogical/virtualHostUtilities.py" />
<option value="$PROJECT_DIR$/plogical/csf.py" />
<option value="$PROJECT_DIR$/websiteFunctions/website.py" />
<option value="$PROJECT_DIR$/install/install.py" />
<option value="$PROJECT_DIR$/mailServer/models.py" />
<option value="$PROJECT_DIR$/mailServer/static/mailServer/mailServer.js" />
<option value="$PROJECT_DIR$/mailServer/templates/mailServer/emailForwarding.html" />
<option value="$PROJECT_DIR$/mailServer/mailserverManager.py" />
</list> </list>
</option> </option>
</component> </component>
<component name="ProjectFrameBounds" extendedState="6"> <component name="ProjectFrameBounds" extendedState="6">
<option name="x" value="71" /> <option name="x" value="145" />
<option name="width" value="1221" /> <option name="width" value="1221" />
<option name="height" value="609" /> <option name="height" value="609" />
</component> </component>
@@ -206,7 +229,7 @@
<path> <path>
<item name="CyberCP" type="b2602c69:ProjectViewProjectNode" /> <item name="CyberCP" type="b2602c69:ProjectViewProjectNode" />
<item name="CyberCP" type="462c0819:PsiDirectoryNode" /> <item name="CyberCP" type="462c0819:PsiDirectoryNode" />
<item name="plogical" type="462c0819:PsiDirectoryNode" /> <item name="mailServer" type="462c0819:PsiDirectoryNode" />
</path> </path>
</expand> </expand>
<select /> <select />
@@ -419,18 +442,19 @@
<workItem from="1570899537960" duration="34622000" /> <workItem from="1570899537960" duration="34622000" />
<workItem from="1571158869749" duration="705000" /> <workItem from="1571158869749" duration="705000" />
<workItem from="1571160353900" duration="938000" /> <workItem from="1571160353900" duration="938000" />
<workItem from="1571162569598" duration="12777000" /> <workItem from="1571162569598" duration="21905000" />
<workItem from="1572178630393" duration="2931000" />
</task> </task>
<servers /> <servers />
</component> </component>
<component name="TimeTrackingManager"> <component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="721623000" /> <option name="totallyTimeSpent" value="733682000" />
</component> </component>
<component name="ToolWindowManager"> <component name="ToolWindowManager">
<frame x="0" y="-2" width="1366" height="711" extended-state="6" /> <frame x="0" y="25" width="1366" height="684" extended-state="6" />
<editor active="true" /> <editor active="true" />
<layout> <layout>
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.09772728" /> <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.022727273" />
<window_info id="Structure" order="1" side_tool="true" weight="0.25" /> <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
<window_info id="Favorites" order="2" side_tool="true" /> <window_info id="Favorites" order="2" side_tool="true" />
<window_info anchor="bottom" id="Message" order="0" /> <window_info anchor="bottom" id="Message" order="0" />
@@ -514,98 +538,6 @@
<SUITE FILE_PATH="coverage/CyberCP$upgrade.coverage" NAME="upgrade Coverage Results" MODIFIED="1571472730271" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/plogical" /> <SUITE FILE_PATH="coverage/CyberCP$upgrade.coverage" NAME="upgrade Coverage Results" MODIFIED="1571472730271" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/plogical" />
</component> </component>
<component name="editorHistoryManager"> <component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/install/installLog.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="165">
<caret line="11" selection-start-line="11" selection-end-line="11" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/loginSystem/templates/loginSystem/login.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="157">
<caret line="69" column="109" lean-forward="true" selection-start-line="69" selection-start-column="109" selection-end-line="69" selection-end-column="109" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/firewall/templates/firewall/index.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="472">
<caret line="101" selection-start-line="101" selection-end-line="101" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/plogical/backupScheduleLocal.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="472">
<caret line="60" column="10" selection-start-line="60" selection-start-column="10" selection-end-line="60" selection-end-column="10" />
<folding>
<element signature="e#0#38#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/plogical/backupSchedule.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="472">
<caret line="251" column="10" selection-start-line="251" selection-start-column="10" selection-end-line="251" selection-end-column="10" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/plogical/childDomain.py">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/plogical/backupUtilities.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="472">
<caret line="1253" column="10" selection-start-line="1253" selection-start-column="10" selection-end-line="1253" selection-end-column="10" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/plogical/CyberCPLogFileWriter.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="439">
<caret line="55" selection-start-line="55" selection-end-line="55" />
<folding>
<element signature="e#0#17#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/plogical/remoteBackup.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="472">
<caret line="363" selection-start-line="363" selection-end-line="363" />
<folding>
<element signature="e#0#38#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/postfixSenderPolicy/accept_traffic.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="157">
<caret line="120" column="39" lean-forward="true" selection-start-line="120" selection-start-column="39" selection-end-line="120" selection-end-column="39" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/pluginInstaller/pluginInstaller.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="472">
<caret line="310" column="10" selection-start-line="310" selection-start-column="10" selection-end-line="310" selection-end-column="10" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/plogical/remoteTransferUtilities.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="472">
<caret line="355" column="10" selection-start-line="355" selection-start-column="10" selection-end-line="355" selection-end-column="10" />
<folding>
<element signature="e#0#15#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/s3Backups/s3Backups.py"> <entry file="file://$PROJECT_DIR$/s3Backups/s3Backups.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="472"> <state relative-caret-position="472">
@@ -659,20 +591,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/api/views.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-113">
<caret line="347" column="18" selection-start-line="347" selection-start-column="4" selection-end-line="347" selection-end-column="18" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/plogical/csf.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="425">
<caret line="578" selection-start-line="578" selection-end-line="578" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/IncBackups/urls.py"> <entry file="file://$PROJECT_DIR$/IncBackups/urls.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="75"> <state relative-caret-position="75">
@@ -830,13 +748,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/loginSystem/views.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="194">
<caret line="220" column="56" selection-start-line="220" selection-start-column="56" selection-end-line="220" selection-end-column="56" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/plogical/adminPass.py"> <entry file="file://$PROJECT_DIR$/plogical/adminPass.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="184"> <state relative-caret-position="184">
@@ -867,13 +778,6 @@
<entry file="file://$PROJECT_DIR$/baseTemplate/templates/baseTemplate/indexJavaFixed.html"> <entry file="file://$PROJECT_DIR$/baseTemplate/templates/baseTemplate/indexJavaFixed.html">
<provider selected="true" editor-type-id="text-editor" /> <provider selected="true" editor-type-id="text-editor" />
</entry> </entry>
<entry file="file://$PROJECT_DIR$/CyberCP/settings.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="180">
<caret line="67" column="15" selection-start-line="67" selection-start-column="5" selection-end-line="67" selection-end-column="15" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/baseTemplate/templates/baseTemplate/homePage.html"> <entry file="file://$PROJECT_DIR$/baseTemplate/templates/baseTemplate/homePage.html">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="450"> <state relative-caret-position="450">
@@ -1125,13 +1029,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/websiteFunctions/website.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="301">
<caret line="265" column="47" selection-start-line="265" selection-start-column="47" selection-end-line="265" selection-end-column="47" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/preUpgrade.sh"> <entry file="file://$PROJECT_DIR$/preUpgrade.sh">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="150"> <state relative-caret-position="150">
@@ -1151,24 +1048,10 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/install/install.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="241">
<caret line="2505" column="37" selection-start-line="2505" selection-start-column="30" selection-end-line="2505" selection-end-column="37" />
<folding>
<element signature="e#0#10#0" expanded="true" />
<element signature="e#143696#150827#0" />
<element signature="e#150888#151548#0" />
<element signature="e#151611#152278#0" />
<element signature="e#152347#153095#0" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/plogical/virtualHostUtilities.py"> <entry file="file://$PROJECT_DIR$/plogical/virtualHostUtilities.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1381"> <state relative-caret-position="439">
<caret line="1132" column="43" selection-start-line="1132" selection-start-column="31" selection-end-line="1132" selection-end-column="43" /> <caret line="1450" selection-start-line="1450" selection-end-line="1450" />
<folding> <folding>
<element signature="e#33#42#0" expanded="true" /> <element signature="e#33#42#0" expanded="true" />
<element signature="e#1294#2317#0" /> <element signature="e#1294#2317#0" />
@@ -1176,22 +1059,183 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/serverStatus/templates/serverStatus/litespeedStatus.html">
<provider selected="true" editor-type-id="text-editor">
<state>
<folding>
<element signature="e#279#291#0#DjangoTemplate" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/serverStatus/views.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="270">
<caret line="44" column="40" selection-start-line="44" selection-start-column="28" selection-end-line="44" selection-end-column="40" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/plogical/processUtilities.py"> <entry file="file://$PROJECT_DIR$/plogical/processUtilities.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="331"> <state relative-caret-position="391">
<caret line="100" column="92" selection-start-line="100" selection-start-column="92" selection-end-line="100" selection-end-column="92" /> <caret line="136" column="25" selection-start-line="136" selection-start-column="25" selection-end-line="136" selection-end-column="25" />
<folding> <folding>
<element signature="e#0#64#0" expanded="true" /> <element signature="e#0#64#0" expanded="true" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/serverStatus/serverStatusUtil.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="244">
<caret line="308" column="27" lean-forward="true" selection-start-line="308" selection-start-column="27" selection-end-line="308" selection-end-column="54" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/plogical/mailUtilities.py"> <entry file="file://$PROJECT_DIR$/plogical/mailUtilities.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="301"> <state relative-caret-position="211">
<caret line="222" column="28" selection-start-line="222" selection-start-column="28" selection-end-line="222" selection-end-column="28" /> <caret line="222" column="28" selection-start-line="222" selection-start-column="28" selection-end-line="222" selection-end-column="28" />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/loginSystem/models.py">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/api/urls.py">
<provider selected="true" editor-type-id="text-editor">
<state>
<folding>
<element signature="e#0#32#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/plogical/csf.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="412">
<caret line="583" selection-start-line="583" selection-end-line="583" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/CyberCP/settings.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="367">
<caret line="188" column="8" selection-start-line="188" selection-end-line="188" selection-end-column="25" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/loginSystem/templates/loginSystem/login.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="277">
<caret line="194" column="58" selection-start-line="194" selection-start-column="58" selection-end-line="194" selection-end-column="58" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/loginSystem/views.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="255">
<caret line="108" column="61" selection-start-line="108" selection-start-column="55" selection-end-line="108" selection-end-column="61" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/install/install.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="472">
<caret line="3916" selection-start-line="3916" selection-end-line="3916" />
<folding>
<element signature="e#0#10#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/api/views.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="300">
<caret line="65" column="30" selection-start-line="65" selection-start-column="14" selection-end-line="65" selection-end-column="30" />
<folding>
<element signature="e#887#1886#0" />
<element signature="e#2415#4106#0" />
<element signature="e#4157#5566#0" />
<element signature="e#5616#7031#0" />
<element signature="e#7078#8526#0" />
<element signature="e#8579#9661#0" />
<element signature="e#9703#10459#0" />
<element signature="e#10504#12065#0" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/websiteFunctions/website.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="397">
<caret line="2099" column="78" selection-start-line="2099" selection-start-column="78" selection-end-line="2099" selection-end-column="78" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/install/installCyberPanel.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="166">
<caret line="31" column="52" selection-start-line="31" selection-start-column="52" selection-end-line="31" selection-end-column="52" />
<folding>
<element signature="e#0#13#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/mailServer/views.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="181">
<caret line="21" column="20" lean-forward="true" selection-start-line="21" selection-start-column="20" selection-end-line="21" selection-end-column="20" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/mailServer/models.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="367">
<caret line="47" column="33" selection-start-line="47" selection-start-column="33" selection-end-line="47" selection-end-column="33" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/mailServer/static/mailServer/mailServer.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="22">
<caret line="1035" column="23" selection-start-line="1035" selection-start-column="11" selection-end-line="1035" selection-end-column="23" />
<folding>
<element signature="e#20255#22112#0" />
<element signature="e#22521#24394#0" />
<element signature="e#24458#26343#0" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/mailServer/templates/mailServer/emailForwarding.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="285">
<caret line="100" column="117" lean-forward="true" selection-start-line="100" selection-start-column="117" selection-end-line="100" selection-end-column="117" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/mailServer/mailserverManager.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="292">
<caret line="355" column="48" selection-start-line="355" selection-start-column="48" selection-end-line="355" selection-end-column="48" />
<folding>
<element signature="e#5347#7486#0" />
<element signature="e#7404#8499#0" />
<element signature="e#8540#9296#0" />
<element signature="e#9472#12776#0" />
<element signature="e#14319#15920#0" />
<element signature="e#15985#16779#0" />
<element signature="e#16825#18660#0" />
<element signature="e#18710#19389#0" />
<element signature="e#19428#21357#0" />
<element signature="e#21399#24129#0" />
<element signature="e#24170#24855#0" />
<element signature="e#24902#26851#0" />
</folding>
</state>
</provider>
</entry>
</component> </component>
</project> </project>

View File

@@ -186,6 +186,7 @@ LANGUAGES = (
('pl', _('Polish')), ('pl', _('Polish')),
('vi', _('Vietnamese')), ('vi', _('Vietnamese')),
('it', _('Italian')), ('it', _('Italian')),
('de', _('Deutsch')),
) )
MEDIA_URL = '/home/cyberpanel/media/' MEDIA_URL = '/home/cyberpanel/media/'

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -3,43 +3,93 @@
<head> <head>
<style> <style>
/* Loading Spinner */ /* Loading Spinner */
.spinner{margin:0;width:70px;height:18px;margin:-35px 0 0 -9px;position:absolute;top:50%;left:50%;text-align:center}.spinner > div{width:18px;height:18px;background-color:#333;border-radius:100%;display:inline-block;-webkit-animation:bouncedelay 1.4s infinite ease-in-out;animation:bouncedelay 1.4s infinite ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}.spinner .bounce1{-webkit-animation-delay:-.32s;animation-delay:-.32s}.spinner .bounce2{-webkit-animation-delay:-.16s;animation-delay:-.16s}@-webkit-keyframes bouncedelay{0%,80%,100%{-webkit-transform:scale(0.0)}40%{-webkit-transform:scale(1.0)}}@keyframes bouncedelay{0%,80%,100%{transform:scale(0.0);-webkit-transform:scale(0.0)}40%{transform:scale(1.0);-webkit-transform:scale(1.0)}} .spinner {
margin: 0;
width: 70px;
height: 18px;
margin: -35px 0 0 -9px;
position: absolute;
top: 50%;
left: 50%;
text-align: center
}
.spinner > div {
width: 18px;
height: 18px;
background-color: #333;
border-radius: 100%;
display: inline-block;
-webkit-animation: bouncedelay 1.4s infinite ease-in-out;
animation: bouncedelay 1.4s infinite ease-in-out;
-webkit-animation-fill-mode: both;
animation-fill-mode: both
}
.spinner .bounce1 {
-webkit-animation-delay: -.32s;
animation-delay: -.32s
}
.spinner .bounce2 {
-webkit-animation-delay: -.16s;
animation-delay: -.16s
}
@-webkit-keyframes bouncedelay {
0%, 80%, 100% {
-webkit-transform: scale(0.0)
}
40% {
-webkit-transform: scale(1.0)
}
}
@keyframes bouncedelay {
0%, 80%, 100% {
transform: scale(0.0);
-webkit-transform: scale(0.0)
}
40% {
transform: scale(1.0);
-webkit-transform: scale(1.0)
}
}
</style> </style>
<meta charset="UTF-8"> <meta charset="UTF-8">
<!--[if IE]><meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'><![endif]--> <!--[if IE]><meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'><![endif]-->
<title> Login - CyberPanel </title> <title> Login - CyberPanel </title>
<meta name="description" content=""> <meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<!-- Favicons --> <!-- Favicons -->
{% load static %} {% load static %}
<link rel="stylesheet" type="text/css" href="{% static 'baseTemplate/assets/finalLoginPageCSS/allCss.css' %}"> <link rel="stylesheet" type="text/css" href="{% static 'baseTemplate/assets/finalLoginPageCSS/allCss.css' %}">
<!-- HELPERS --> <!-- HELPERS -->
<!-- ELEMENTS --> <!-- ELEMENTS -->
<!-- ICONS --> <!-- ICONS -->
<!-- Admin theme --> <!-- Admin theme -->
<!-- Components theme --> <!-- Components theme -->
<!-- JS Core --> <!-- JS Core -->
<script type="text/javascript" src="{% static 'baseTemplate/assets/js-core/jquery-core.min.js' %}"></script> <script type="text/javascript" src="{% static 'baseTemplate/assets/js-core/jquery-core.min.js' %}"></script>
<script type="text/javascript"> <script type="text/javascript">
$(window).load(function(){ $(window).load(function () {
setTimeout(function() { setTimeout(function () {
$('#loading').fadeOut( 400, "linear" ); $('#loading').fadeOut(400, "linear");
}, 300); }, 300);
}); });
</script> </script>
<!-- JS Ends -->
<!-- JS Ends -->
</head> </head>
@@ -54,14 +104,14 @@
<style type="text/css"> <style type="text/css">
html,body { html, body {
height: 100%; height: 100%;
background: #fafafa; background: #fafafa;
} }
</style> </style>
<div class="center-vertical"> <div class="center-vertical">
<div class="center-content row"> <div class="center-content row">
<div class="col-md-8 col-lg-6 clearfix center-margin"> <div class="col-md-8 col-lg-6 clearfix center-margin">
@@ -105,7 +155,8 @@
<div class="form-group"> <div class="form-group">
<div class="input-group"> <div class="input-group">
<input ng-model="username" type="text" class="form-control" name="username" placeholder="Enter username" required> <input ng-model="username" type="text" class="form-control" name="username"
placeholder="Enter username" required>
<span class="input-group-addon bg-blue"> <span class="input-group-addon bg-blue">
<i class="glyph-icon icon-envelope-o"></i> <i class="glyph-icon icon-envelope-o"></i>
</span> </span>
@@ -113,45 +164,50 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<div class="input-group"> <div class="input-group">
<input ng-keypress="initiateLogin($event)" ng-model="password" type="password" class="form-control" id="password" placeholder="Password" required> <input ng-keypress="initiateLogin($event)" ng-model="password" type="password"
class="form-control" id="password" placeholder="Password" required>
<span class="input-group-addon bg-blue"> <span class="input-group-addon bg-blue">
<i class="glyph-icon icon-unlock-alt"></i> <i class="glyph-icon icon-unlock-alt"></i>
</span> </span>
</div> </div>
<img id="verifyingLogin" class="center-block" src="{% static 'images/loading.gif' %}"> <img id="verifyingLogin" class="center-block"
src="{% static 'images/loading.gif' %}">
</div> </div>
<div class="form-group"> <div class="form-group">
<div class="input-group"> <div class="input-group">
<select ng-model="languageSelection" ng-init="languageSelection='english'" class="form-control"> <select ng-model="languageSelection" ng-init="languageSelection='english'"
<option value="english">English</option> class="form-control">
<option>Chinese</option> <option value="english">English</option>
<option>Italian</option> <option>Chinese</option>
<option>French</option> <option>Italian</option>
<option>Bulgarian</option> <option>French</option>
<option>Portuguese</option> <option>Bulgarian</option>
<option>Japanese</option> <option>Portuguese</option>
<option>Bosnian</option> <option>Japanese</option>
<option>Greek</option> <option>Bosnian</option>
<option>Russian</option> <option>Greek</option>
<option>Turkish</option> <option>Russian</option>
<option>Spanish</option> <option>Turkish</option>
<option>Polish</option> <option>Spanish</option>
<option>Vietnamese</option> <option>Polish</option>
<option>Vietnamese</option>
<option>German</option>
</select> </select>
</div> </div>
</div> </div>
<button type="button" ng-click="verifyLoginCredentials()" class="btn btn-success btn-block">Sign In</button> <button type="button" ng-click="verifyLoginCredentials()"
class="btn btn-success btn-block">Sign In
</button>
</div> </div>
</div> </div>
</form> </form>
<div id="loginFailed" class="alert alert-danger"> <div id="loginFailed" class="alert alert-danger">
<p>Could Not Login, Error message: {$ errorMessage $}</p> <p>Could Not Login, Error message: {$ errorMessage $}</p>
</div>
</div> </div>
</div>
</div> </div>
@@ -160,7 +216,7 @@
</div> </div>
</div> </div>
<script src = "https://code.angularjs.org/1.6.5/angular.min.js"></script> <script src="https://code.angularjs.org/1.6.5/angular.min.js"></script>
<script src="https://code.angularjs.org/1.6.5/angular-route.min.js"></script> <script src="https://code.angularjs.org/1.6.5/angular-route.min.js"></script>
<script src="{% static 'loginSystem/login-systen.js' %}"></script> <script src="{% static 'loginSystem/login-systen.js' %}"></script>

View File

@@ -106,6 +106,11 @@ def verifyLogin(request):
request.session[LANGUAGE_SESSION_KEY] = user_Language request.session[LANGUAGE_SESSION_KEY] = user_Language
request.COOKIES['django_language'] = user_Language request.COOKIES['django_language'] = user_Language
settings.LANGUAGE_CODE = user_Language settings.LANGUAGE_CODE = user_Language
elif data['languageSelection'] == "German":
user_Language = "de"
request.session[LANGUAGE_SESSION_KEY] = user_Language
request.COOKIES['django_language'] = user_Language
settings.LANGUAGE_CODE = user_Language
except: except:
request.session[LANGUAGE_SESSION_KEY] = "en" request.session[LANGUAGE_SESSION_KEY] = "en"
request.COOKIES['django_language'] = "en" request.COOKIES['django_language'] = "en"

View File

@@ -18,7 +18,7 @@ from plogical.mailUtilities import mailUtilities
import thread import thread
from dns.models import Domains as dnsDomains from dns.models import Domains as dnsDomains
from dns.models import Records as dnsRecords from dns.models import Records as dnsRecords
from mailServer.models import Forwardings from mailServer.models import Forwardings, Pipeprograms
from plogical.acl import ACLManager from plogical.acl import ACLManager
import os import os
from plogical.dnsUtilities import DNS from plogical.dnsUtilities import DNS
@@ -255,40 +255,69 @@ class MailServerManager:
data = json.loads(self.request.body) data = json.loads(self.request.body)
emailAddress = data['emailAddress'] emailAddress = data['emailAddress']
forwardingOption = data['forwardingOption']
eUser = EUsers.objects.get(email=emailAddress) if forwardingOption != "Pipe to program":
eUser = EUsers.objects.get(email=emailAddress)
admin = Administrator.objects.get(pk=userID) admin = Administrator.objects.get(pk=userID)
if ACLManager.checkOwnership(eUser.emailOwner.domainOwner.domain, admin, currentACL) == 1: if ACLManager.checkOwnership(eUser.emailOwner.domainOwner.domain, admin, currentACL) == 1:
pass pass
else:
return ACLManager.loadErrorJson()
currentForwardings = Forwardings.objects.filter(source=emailAddress)
json_data = "["
checker = 0
id = 1
for items in currentForwardings:
if items.source == items.destination:
continue
dic = {'id': id,
'source': items.source,
'destination': items.destination}
id = id + 1
if checker == 0:
json_data = json_data + json.dumps(dic)
checker = 1
else: else:
json_data = json_data + ',' + json.dumps(dic) return ACLManager.loadErrorJson()
json_data = json_data + ']' currentForwardings = Forwardings.objects.filter(source=emailAddress)
final_dic = {'status': 1, 'fetchStatus': 1, 'error_message': "None", "data": json_data}
final_json = json.dumps(final_dic)
return HttpResponse(final_json) json_data = "["
checker = 0
id = 1
for items in currentForwardings:
if items.source == items.destination:
continue
dic = {'id': id,
'source': items.source,
'destination': items.destination}
id = id + 1
if checker == 0:
json_data = json_data + json.dumps(dic)
checker = 1
else:
json_data = json_data + ',' + json.dumps(dic)
json_data = json_data + ']'
final_dic = {'status': 1, 'fetchStatus': 1, 'error_message': "None", "data": json_data}
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
else:
currentForwardings = Pipeprograms.objects.filter(source=emailAddress)
json_data = "["
checker = 0
id = 1
for items in currentForwardings:
if items.source == items.destination:
continue
dic = {'id': id,
'source': items.source,
'destination': items.destination}
id = id + 1
if checker == 0:
json_data = json_data + json.dumps(dic)
checker = 1
else:
json_data = json_data + ',' + json.dumps(dic)
json_data = json_data + ']'
final_dic = {'status': 1, 'fetchStatus': 1, 'error_message': "None", "data": json_data}
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
except BaseException, msg: except BaseException, msg:
@@ -306,6 +335,7 @@ class MailServerManager:
data = json.loads(self.request.body) data = json.loads(self.request.body)
destination = data['destination'] destination = data['destination']
source = data['source'] source = data['source']
forwardingOption = data['forwardingOption']
eUser = EUsers.objects.get(email=source) eUser = EUsers.objects.get(email=source)
@@ -315,8 +345,15 @@ class MailServerManager:
else: else:
return ACLManager.loadErrorJson() return ACLManager.loadErrorJson()
for items in Forwardings.objects.filter(destination=destination, source=source): if forwardingOption == 'Forward to email':
items.delete() for items in Forwardings.objects.filter(destination=destination, source=source):
items.delete()
else:
for items in Pipeprograms.objects.filter(destination=destination, source=source):
items.delete()
### Michael Ramsey
## Treat your path deletion code here.
data_ret = {'status': 1, 'deleteForwardingStatus': 1, 'error_message': "None", data_ret = {'status': 1, 'deleteForwardingStatus': 1, 'error_message': "None",
'successMessage': 'Successfully deleted!'} 'successMessage': 'Successfully deleted!'}
@@ -338,6 +375,7 @@ class MailServerManager:
data = json.loads(self.request.body) data = json.loads(self.request.body)
source = data['source'] source = data['source']
destination = data['destination'] destination = data['destination']
forwardingOption = data['forwardingOption']
eUser = EUsers.objects.get(email=source) eUser = EUsers.objects.get(email=source)
@@ -353,12 +391,19 @@ class MailServerManager:
json_data = json.dumps(data_ret) json_data = json.dumps(data_ret)
return HttpResponse(json_data) return HttpResponse(json_data)
if Forwardings.objects.filter(source=source).count() == 0: if forwardingOption == 'Forward to email':
forwarding = Forwardings(source=source, destination=source) if Forwardings.objects.filter(source=source).count() == 0:
forwarding = Forwardings(source=source, destination=source)
forwarding.save()
forwarding = Forwardings(source=source, destination=destination)
forwarding.save()
else:
forwarding = Pipeprograms(source=source, destination=destination)
forwarding.save() forwarding.save()
forwarding = Forwardings(source=source, destination=destination) ### Michael Ramsey
forwarding.save() ## Treat your path creation code here.
data_ret = {'status': 1, 'createStatus': 1, 'error_message': "None", 'successMessage': 'Successfully Created!'} data_ret = {'status': 1, 'createStatus': 1, 'error_message': "None", 'successMessage': 'Successfully Created!'}
json_data = json.dumps(data_ret) json_data = json.dumps(data_ret)
@@ -369,7 +414,6 @@ class MailServerManager:
json_data = json.dumps(data_ret) json_data = json.dumps(data_ret)
return HttpResponse(json_data) return HttpResponse(json_data)
def fetchEmails(self): def fetchEmails(self):
try: try:
userID = self.request.session['userID'] userID = self.request.session['userID']

View File

@@ -43,3 +43,8 @@ class Transport(models.Model):
class Meta: class Meta:
db_table = 'e_transport' db_table = 'e_transport'
class Pipeprograms(models.Model):
source = models.CharField(max_length=80)
destination = models.TextField()

View File

@@ -898,6 +898,7 @@ app.controller('emailForwarding', function ($scope, $http) {
var data = { var data = {
forwardingOption: $scope.forwardingOption,
emailAddress: $scope.selectedEmail emailAddress: $scope.selectedEmail
}; };
@@ -971,6 +972,7 @@ app.controller('emailForwarding', function ($scope, $http) {
var data = { var data = {
forwardingOption: $scope.forwardingOption,
destination: destination, destination: destination,
source: source source: source
}; };
@@ -1045,6 +1047,7 @@ app.controller('emailForwarding', function ($scope, $http) {
var data = { var data = {
forwardingOption: $scope.forwardingOption,
source: $scope.selectedEmail, source: $scope.selectedEmail,
destination: $scope.destinationEmail destination: $scope.destinationEmail
}; };

View File

@@ -51,12 +51,22 @@
<div ng-hide="emailDetails" class="form-group"> <div ng-hide="emailDetails" class="form-group">
<label class="col-sm-3 control-label">{% trans "Select Email" %} </label> <label class="col-sm-3 control-label">{% trans "Select Email" %} </label>
<div class="col-sm-6"> <div class="col-sm-6">
<select ng-change="selectForwardingEmail()" ng-model="selectedEmail" class="form-control"> <select ng-model="selectedEmail" class="form-control">
<option ng-repeat="email in emails track by $index">{$ email.email $}</option> <option ng-repeat="email in emails track by $index">{$ email.email $}</option>
</select> </select>
</div> </div>
</div> </div>
<div ng-hide="emailDetails" class="form-group">
<label class="col-sm-3 control-label">{% trans "Forwarding Options" %} </label>
<div class="col-sm-6">
<select ng-change="selectForwardingEmail()" ng-model="forwardingOption" class="form-control">
<option>Forward to email</option>
<option>Pipe to program</option>
</select>
</div>
</div>
<!------ Modification form that appears after a click ---------------> <!------ Modification form that appears after a click --------------->
<div ng-hide="notifyBox" class="form-group"> <div ng-hide="notifyBox" class="form-group">
@@ -88,7 +98,7 @@
</div> </div>
<div class="col-sm-4"> <div class="col-sm-4">
<input placeholder="{% trans 'Destination' %}" type="email" class="form-control" ng-model="destinationEmail" required> <input placeholder="{% trans 'Destination' %} {% trans 'or path to the program' %}" type="text" class="form-control" ng-model="destinationEmail" required>
</div> </div>

View File

@@ -78,8 +78,8 @@ class CSF(multi.Thread):
elif ProcessUtilities.decideDistro() == ProcessUtilities.ubuntu: elif ProcessUtilities.decideDistro() == ProcessUtilities.ubuntu:
command = 'apt-get install dnsutils libwww-perl liblwp-protocol-https-perl libgd-graph-perl net-tools -y' command = 'apt-get install dnsutils libwww-perl liblwp-protocol-https-perl libgd-graph-perl net-tools -y'
ProcessUtilities.normalExecutioner(command) ProcessUtilities.normalExecutioner(command)
command = 'ln -s /bin/systemctl /usr/bin/systemctl' command = 'ln -s /bin/systemctl /usr/bin/systemctl'
ProcessUtilities.normalExecutioner(command) ProcessUtilities.normalExecutioner(command)
else: else:
logging.CyberCPLogFileWriter.statusWriter(CSF.installLogPath, logging.CyberCPLogFileWriter.statusWriter(CSF.installLogPath,
@@ -95,14 +95,15 @@ class CSF(multi.Thread):
writeToConf.writelines( writeToConf.writelines(
'TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995,1025,7080,8090,40110:40210"\n') 'TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995,1025,7080,8090,40110:40210"\n')
elif items.find('TCP_OUT') > -1 and items.find('=') > -1 and (items[0] != '#'): elif items.find('TCP_OUT') > -1 and items.find('=') > -1 and (items[0] != '#'):
writeToConf.writelines('TCP_OUT = "20,21,22,25,43,53,80,110,113,443,587,993,995,8090,40110:40210"\n') writeToConf.writelines(
'TCP_OUT = "20,21,22,25,43,53,80,110,113,443,587,993,995,8090,40110:40210"\n')
elif items.find('UDP_IN') > -1 and items.find('=') > -1 and (items[0] != '#'): elif items.find('UDP_IN') > -1 and items.find('=') > -1 and (items[0] != '#'):
writeToConf.writelines('UDP_IN = "20,21,53"\n') writeToConf.writelines('UDP_IN = "20,21,53"\n')
elif items.find('UDP_OUT') > -1 and items.find('=') > -1 and (items[0] != '#'): elif items.find('UDP_OUT') > -1 and items.find('=') > -1 and (items[0] != '#'):
writeToConf.writelines('UDP_OUT = "20,21,53,113,123"\n') writeToConf.writelines('UDP_OUT = "20,21,53,113,123"\n')
elif items.find('TESTING =') > -1 and items.find('=') > -1 and (items[0] != '#'): elif items.find('TESTING =') > -1 and items.find('=') > -1 and (items[0] != '#'):
writeToConf.writelines('TESTING = "0"\n') writeToConf.writelines('TESTING = "0"\n')
# setting RESTRICT_SYSLOG to "3" for use with option RESTRICT_SYSLOG_GROUP # setting RESTRICT_SYSLOG to "3" for use with option RESTRICT_SYSLOG_GROUP
elif items.find('RESTRICT_SYSLOG =') > -1 and items.find('=') > -1 and (items[0] != '#'): elif items.find('RESTRICT_SYSLOG =') > -1 and items.find('=') > -1 and (items[0] != '#'):
writeToConf.writelines('RESTRICT_SYSLOG = "3"\n') writeToConf.writelines('RESTRICT_SYSLOG = "3"\n')
@@ -287,16 +288,16 @@ class CSF(multi.Thread):
elif items.find('SYSLOG_CHECK =') > -1 and items.find('=') > -1 and (items[0] != '#'): elif items.find('SYSLOG_CHECK =') > -1 and items.find('=') > -1 and (items[0] != '#'):
writeToConf.writelines('SYSLOG_CHECK = "300"\n') writeToConf.writelines('SYSLOG_CHECK = "300"\n')
# CSF UI enable # CSF UI enable
#elif items.find('UI = "0"') > -1 and items.find('=') > -1 and (items[0] != '#'): # elif items.find('UI = "0"') > -1 and items.find('=') > -1 and (items[0] != '#'):
# writeToConf.writelines('UI = "1"\n') # writeToConf.writelines('UI = "1"\n')
#elif items.find('UI_ALLOW') > -1 and items.find('=') > -1 and (items[0] != '#'): # elif items.find('UI_ALLOW') > -1 and items.find('=') > -1 and (items[0] != '#'):
# writeToConf.writelines('UI_ALLOW = "0"\n') # writeToConf.writelines('UI_ALLOW = "0"\n')
#elif items.find('UI_PORT =') > -1 and items.find('=') > -1 and (items[0] != '#'): # elif items.find('UI_PORT =') > -1 and items.find('=') > -1 and (items[0] != '#'):
# writeToConf.writelines('UI_PORT = "1025"\n') # writeToConf.writelines('UI_PORT = "1025"\n')
#elif items.find('UI_USER') > -1 and items.find('=') > -1 and (items[0] != '#'): # elif items.find('UI_USER') > -1 and items.find('=') > -1 and (items[0] != '#'):
# writeToConf.writelines('UI_USER = "cyberpanel"\n') # writeToConf.writelines('UI_USER = "cyberpanel"\n')
#elif items.find('UI_PASS') > -1 and items.find('=') > -1 and (items[0] != '#'): # elif items.find('UI_PASS') > -1 and items.find('=') > -1 and (items[0] != '#'):
# writeToConf.writelines('UI_PASS = "csfadmin1234567"\n') # writeToConf.writelines('UI_PASS = "csfadmin1234567"\n')
else: else:
writeToConf.writelines(items) writeToConf.writelines(items)
@@ -331,7 +332,6 @@ class CSF(multi.Thread):
## ##
command = 'csf -s' command = 'csf -s'
ProcessUtilities.normalExecutioner(command) ProcessUtilities.normalExecutioner(command)
@@ -556,6 +556,7 @@ class CSF(multi.Thread):
except BaseException, msg: except BaseException, msg:
logging.CyberCPLogFileWriter.writeToFile(str(msg) + "[checkIP]") logging.CyberCPLogFileWriter.writeToFile(str(msg) + "[checkIP]")
def main(): def main():
parser = argparse.ArgumentParser(description='CSF Manager') parser = argparse.ArgumentParser(description='CSF Manager')
parser.add_argument('function', help='Specific a function to call!') parser.add_argument('function', help='Specific a function to call!')

View File

@@ -3,6 +3,7 @@ import os
import os.path import os.path
import sys import sys
import django import django
sys.path.append('/usr/local/CyberCP') sys.path.append('/usr/local/CyberCP')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CyberCP.settings") os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CyberCP.settings")
try: try:
@@ -38,6 +39,7 @@ try:
except: except:
pass pass
## If you want justice, you have come to the wrong place. ## If you want justice, you have come to the wrong place.
@@ -77,12 +79,13 @@ class virtualHostUtilities:
writeToFile.close() writeToFile.close()
Server_root = "/usr/local/lsws" Server_root = "/usr/local/lsws"
cyberPanel = "/usr/local/CyberCP" cyberPanel = "/usr/local/CyberCP"
@staticmethod @staticmethod
def createVirtualHost(virtualHostName, administratorEmail, phpVersion, virtualHostUser, ssl, def createVirtualHost(virtualHostName, administratorEmail, phpVersion, virtualHostUser, ssl,
dkimCheck, openBasedir, websiteOwner, packageName, apache, tempStatusPath = '/home/cyberpanel/fakePath'): dkimCheck, openBasedir, websiteOwner, packageName, apache,
tempStatusPath='/home/cyberpanel/fakePath'):
try: try:
logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'Running some checks..,0') logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'Running some checks..,0')
@@ -92,7 +95,8 @@ class virtualHostUtilities:
admin = Administrator.objects.get(userName=websiteOwner) admin = Administrator.objects.get(userName=websiteOwner)
if ACLManager.websitesLimitCheck(admin, 1) == 0: if ACLManager.websitesLimitCheck(admin, 1) == 0:
logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'You\'ve reached maximum websites limit as a reseller. [404]') logging.CyberCPLogFileWriter.statusWriter(tempStatusPath,
'You\'ve reached maximum websites limit as a reseller. [404]')
return 0, 'You\'ve reached maximum websites limit as a reseller.' return 0, 'You\'ve reached maximum websites limit as a reseller.'
####### Limitations Check End ####### Limitations Check End
@@ -102,7 +106,8 @@ class virtualHostUtilities:
return 0, "This website already exists." return 0, "This website already exists."
if ChildDomains.objects.filter(domain=virtualHostName).count() > 0: if ChildDomains.objects.filter(domain=virtualHostName).count() > 0:
logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'This website already exists as child domain. [404]') logging.CyberCPLogFileWriter.statusWriter(tempStatusPath,
'This website already exists as child domain. [404]')
return 0, "This website already exists as child domain." return 0, "This website already exists as child domain."
####### Limitations Check End ####### Limitations Check End
@@ -118,7 +123,8 @@ class virtualHostUtilities:
logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'Setting up directories..,25') logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'Setting up directories..,25')
if vhost.checkIfVirtualHostExists(virtualHostName) == 1: if vhost.checkIfVirtualHostExists(virtualHostName) == 1:
logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'Virtual Host Directory already exists. [404]') logging.CyberCPLogFileWriter.statusWriter(tempStatusPath,
'Virtual Host Directory already exists. [404]')
return 0, "Virtual Host Directory already exists!" return 0, "Virtual Host Directory already exists!"
if vhost.checkIfAliasExists(virtualHostName) == 1: if vhost.checkIfAliasExists(virtualHostName) == 1:
@@ -130,7 +136,7 @@ class virtualHostUtilities:
raise BaseException(retValues[1]) raise BaseException(retValues[1])
retValues = vhost.createDirectoryForVirtualHost(virtualHostName, administratorEmail, retValues = vhost.createDirectoryForVirtualHost(virtualHostName, administratorEmail,
virtualHostUser, phpVersion, openBasedir) virtualHostUser, phpVersion, openBasedir)
if retValues[0] == 0: if retValues[0] == 0:
raise BaseException(retValues[1]) raise BaseException(retValues[1])
@@ -148,7 +154,6 @@ class virtualHostUtilities:
website.save() website.save()
if ssl == 1: if ssl == 1:
sslPath = "/home/" + virtualHostName + "/public_html" sslPath = "/home/" + virtualHostName + "/public_html"
logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'Setting up SSL..,70') logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'Setting up SSL..,70')
@@ -177,7 +182,7 @@ class virtualHostUtilities:
raise BaseException(result[1]) raise BaseException(result[1])
result = ApacheVhost.setupApacheVhost(administratorEmail, virtualHostUser, virtualHostUser, result = ApacheVhost.setupApacheVhost(administratorEmail, virtualHostUser, virtualHostUser,
phpVersion, virtualHostName) phpVersion, virtualHostName)
if result[0] == 0: if result[0] == 0:
raise BaseException(result[1]) raise BaseException(result[1])
else: else:
@@ -191,7 +196,6 @@ class virtualHostUtilities:
logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'DKIM Setup..,90') logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'DKIM Setup..,90')
## DKIM Check ## DKIM Check
postFixPath = '/home/cyberpanel/postfix' postFixPath = '/home/cyberpanel/postfix'
@@ -236,15 +240,14 @@ class virtualHostUtilities:
try: try:
clPackage = CLPackages.objects.get(owner=selectedPackage) clPackage = CLPackages.objects.get(owner=selectedPackage)
command = 'sudo lvectl package-set %s --speed=%s --pmem=%s --io=%s --nproc=%s --iops=%s --vmem=%s --ep=%s' % ( command = 'sudo lvectl package-set %s --speed=%s --pmem=%s --io=%s --nproc=%s --iops=%s --vmem=%s --ep=%s' % (
clPackage.name, clPackage.speed, clPackage.pmem, clPackage.io, clPackage.np, clPackage.iops, clPackage.vmem, clPackage.ep) clPackage.name, clPackage.speed, clPackage.pmem, clPackage.io, clPackage.np, clPackage.iops,
clPackage.vmem, clPackage.ep)
ProcessUtilities.normalExecutioner(command) ProcessUtilities.normalExecutioner(command)
command = 'sudo lvectl apply all' command = 'sudo lvectl apply all'
ProcessUtilities.normalExecutioner(command) ProcessUtilities.normalExecutioner(command)
except: except:
pass pass
return 1, 'None' return 1, 'None'
except BaseException, msg: except BaseException, msg:
@@ -424,7 +427,6 @@ class virtualHostUtilities:
## Get wordpress ## Get wordpress
if not os.path.exists("latest.tar.gz"): if not os.path.exists("latest.tar.gz"):
command = 'wget --no-check-certificate http://wordpress.org/latest.tar.gz -O latest.tar.gz' command = 'wget --no-check-certificate http://wordpress.org/latest.tar.gz -O latest.tar.gz'
cmd = shlex.split(command) cmd = shlex.split(command)
@@ -591,7 +593,6 @@ class virtualHostUtilities:
command = 'ln -s /usr/local/lscp/conf/key.pem /usr/local/lsws/admin/conf/webadmin.key' command = 'ln -s /usr/local/lscp/conf/key.pem /usr/local/lsws/admin/conf/webadmin.key'
ProcessUtilities.normalExecutioner(command) ProcessUtilities.normalExecutioner(command)
adminEmail = "email@" + virtualHost adminEmail = "email@" + virtualHost
if not os.path.exists(pathToStoreSSLFullChain): if not os.path.exists(pathToStoreSSLFullChain):
@@ -609,7 +610,7 @@ class virtualHostUtilities:
subprocess.call(cmd) subprocess.call(cmd)
print "1,None" print "1,None"
return 1,'None' return 1, 'None'
except BaseException, msg: except BaseException, msg:
@@ -703,13 +704,13 @@ class virtualHostUtilities:
p.start() p.start()
print "1,None" print "1,None"
return 1,'None' return 1, 'None'
except BaseException, msg: except BaseException, msg:
logging.CyberCPLogFileWriter.writeToFile( logging.CyberCPLogFileWriter.writeToFile(
str(msg) + " [issueSSLForHostName]") str(msg) + " [issueSSLForHostName]")
print "0," + str(msg) print "0," + str(msg)
return 0,str(msg) return 0, str(msg)
@staticmethod @staticmethod
def createAlias(masterDomain, aliasDomain, ssl, sslPath, administratorEmail, owner=None): def createAlias(masterDomain, aliasDomain, ssl, sslPath, administratorEmail, owner=None):
@@ -718,7 +719,6 @@ class virtualHostUtilities:
admin = Administrator.objects.get(userName=owner) admin = Administrator.objects.get(userName=owner)
DNS.dnsTemplate(aliasDomain, admin) DNS.dnsTemplate(aliasDomain, admin)
if vhost.checkIfAliasExists(aliasDomain) == 1: if vhost.checkIfAliasExists(aliasDomain) == 1:
print "0, This domain already exists as vHost or Alias." print "0, This domain already exists as vHost or Alias."
return return
@@ -774,7 +774,7 @@ class virtualHostUtilities:
website = Websites.objects.get(domain=masterDomain) website = Websites.objects.get(domain=masterDomain)
newAlias = aliasDomains(master=website, aliasDomain = aliasDomain) newAlias = aliasDomains(master=website, aliasDomain=aliasDomain)
newAlias.save() newAlias.save()
print "1,None" print "1,None"
@@ -888,7 +888,6 @@ class virtualHostUtilities:
data = open(completePathToConfigFile, 'r').readlines() data = open(completePathToConfigFile, 'r').readlines()
if openBasedirValue == 'Disable': if openBasedirValue == 'Disable':
writeToFile = open(completePathToConfigFile, 'w') writeToFile = open(completePathToConfigFile, 'w')
for items in data: for items in data:
@@ -913,7 +912,8 @@ class virtualHostUtilities:
if items.find('phpIniOverride') > -1: if items.find('phpIniOverride') > -1:
writeToFile.writelines(items) writeToFile.writelines(items)
if fileManagerCheck == 1: if fileManagerCheck == 1:
writeToFile.writelines('php_admin_value open_basedir "/tmp:/usr/local/lsws/Example/html/FileManager:$VH_ROOT"\n') writeToFile.writelines(
'php_admin_value open_basedir "/tmp:/usr/local/lsws/Example/html/FileManager:$VH_ROOT"\n')
fileManagerCheck = 0 fileManagerCheck = 0
continue continue
else: else:
@@ -1006,7 +1006,6 @@ class virtualHostUtilities:
os.remove(keyPath) os.remove(keyPath)
os.remove(certPath) os.remove(certPath)
sslUtilities.sslUtilities.installSSLForDomain(virtualHost) sslUtilities.sslUtilities.installSSLForDomain(virtualHost)
installUtilities.installUtilities.reStartLiteSpeed() installUtilities.installUtilities.reStartLiteSpeed()
@@ -1025,7 +1024,8 @@ class virtualHostUtilities:
print "0," + str(msg) print "0," + str(msg)
@staticmethod @staticmethod
def createDomain(masterDomain, virtualHostName, phpVersion, path, ssl, dkimCheck, openBasedir, owner, apache, tempStatusPath = '/home/cyberpanel/fakePath'): def createDomain(masterDomain, virtualHostName, phpVersion, path, ssl, dkimCheck, openBasedir, owner, apache,
tempStatusPath='/home/cyberpanel/fakePath'):
try: try:
logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'Running some checks..,0') logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'Running some checks..,0')
@@ -1035,13 +1035,14 @@ class virtualHostUtilities:
admin = Administrator.objects.get(userName=owner) admin = Administrator.objects.get(userName=owner)
DNS.dnsTemplate(virtualHostName, admin) DNS.dnsTemplate(virtualHostName, admin)
if Websites.objects.filter(domain=virtualHostName).count() > 0: if Websites.objects.filter(domain=virtualHostName).count() > 0:
logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'This Domain already exists as a website. [404]') logging.CyberCPLogFileWriter.statusWriter(tempStatusPath,
'This Domain already exists as a website. [404]')
return 0, "This Domain already exists as a website." return 0, "This Domain already exists as a website."
if ChildDomains.objects.filter(domain=virtualHostName).count() > 0: if ChildDomains.objects.filter(domain=virtualHostName).count() > 0:
logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'This domain already exists as child domain. [404]') logging.CyberCPLogFileWriter.statusWriter(tempStatusPath,
'This domain already exists as child domain. [404]')
return 0, "This domain already exists as child domain." return 0, "This domain already exists as child domain."
####### Limitations check ####### Limitations check
@@ -1057,7 +1058,6 @@ class virtualHostUtilities:
'Fully qualified domain is not allowed in the package. [404]') 'Fully qualified domain is not allowed in the package. [404]')
return 0, "Fully qualified domain is not allowed in the package." return 0, "Fully qualified domain is not allowed in the package."
if domainsInPackage == 0: if domainsInPackage == 0:
pass pass
elif domainsInPackage > master.childdomains_set.all().count(): elif domainsInPackage > master.childdomains_set.all().count():
@@ -1067,19 +1067,17 @@ class virtualHostUtilities:
'Exceeded maximum number of domains for this package. [404]') 'Exceeded maximum number of domains for this package. [404]')
return 0, "Exceeded maximum number of domains for this package" return 0, "Exceeded maximum number of domains for this package"
####### Limitations Check End ####### Limitations Check End
if vhost.checkIfVirtualHostExists(virtualHostName) == 1: if vhost.checkIfVirtualHostExists(virtualHostName) == 1:
logging.CyberCPLogFileWriter.statusWriter(tempStatusPath,'Virtual Host Directory already exists. [404]') logging.CyberCPLogFileWriter.statusWriter(tempStatusPath,
'Virtual Host Directory already exists. [404]')
return 0, "Virtual Host Directory already exists!" return 0, "Virtual Host Directory already exists!"
if vhost.checkIfAliasExists(virtualHostName) == 1: if vhost.checkIfAliasExists(virtualHostName) == 1:
logging.CyberCPLogFileWriter.statusWriter(tempStatusPath,'This domain exists as Alias. [404]') logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'This domain exists as Alias. [404]')
return 0, "This domain exists as Alias." return 0, "This domain exists as Alias."
logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'DKIM Setup..,30') logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'DKIM Setup..,30')
retValues = mailUtilities.setupDKIM(virtualHostName) retValues = mailUtilities.setupDKIM(virtualHostName)
@@ -1091,7 +1089,7 @@ class virtualHostUtilities:
logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'Creating configurations..,50') logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'Creating configurations..,50')
retValues = vhost.createDirectoryForDomain(masterDomain, virtualHostName, phpVersion, path, retValues = vhost.createDirectoryForDomain(masterDomain, virtualHostName, phpVersion, path,
master.adminEmail, master.externalApp, openBasedir) master.adminEmail, master.externalApp, openBasedir)
if retValues[0] == 0: if retValues[0] == 0:
raise BaseException(retValues[1]) raise BaseException(retValues[1])
@@ -1132,7 +1130,7 @@ class virtualHostUtilities:
raise BaseException(result[1]) raise BaseException(result[1])
result = ApacheVhost.setupApacheVhostChild(master.adminEmail, master.externalApp, result = ApacheVhost.setupApacheVhostChild(master.adminEmail, master.externalApp,
master.externalApp, phpVersion, virtualHostName, path) master.externalApp, phpVersion, virtualHostName, path)
if result[0] == 0: if result[0] == 0:
raise BaseException(result[1]) raise BaseException(result[1])
else: else:
@@ -1150,7 +1148,6 @@ class virtualHostUtilities:
if dkimCheck == 1: if dkimCheck == 1:
DNS.createDKIMRecords(virtualHostName) DNS.createDKIMRecords(virtualHostName)
logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'Domain successfully created. [200]') logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'Domain successfully created. [200]')
return 1, "None" return 1, "None"
@@ -1173,13 +1170,13 @@ class virtualHostUtilities:
installUtilities.installUtilities.reStartLiteSpeed() installUtilities.installUtilities.reStartLiteSpeed()
print "1,None" print "1,None"
return 1,'None' return 1, 'None'
except BaseException, msg: except BaseException, msg:
logging.CyberCPLogFileWriter.writeToFile( logging.CyberCPLogFileWriter.writeToFile(
str(msg) + " [deleteDomain]") str(msg) + " [deleteDomain]")
print "0," + str(msg) print "0," + str(msg)
return 0,str(msg) return 0, str(msg)
@staticmethod @staticmethod
def switchServer(virtualHostName, phpVersion, server, tempStatusPath): def switchServer(virtualHostName, phpVersion, server, tempStatusPath):
@@ -1212,10 +1209,12 @@ class virtualHostUtilities:
ApacheVhost.perHostVirtualConfOLS(completePathToConfigFile, website.adminEmail) ApacheVhost.perHostVirtualConfOLS(completePathToConfigFile, website.adminEmail)
if child: if child:
ApacheVhost.setupApacheVhostChild(website.master.adminEmail, website.master.externalApp, website.master.externalApp, ApacheVhost.setupApacheVhostChild(website.master.adminEmail, website.master.externalApp,
website.master.externalApp,
phpVersion, virtualHostName, website.path) phpVersion, virtualHostName, website.path)
else: else:
ApacheVhost.setupApacheVhost(website.adminEmail, website.externalApp, website.externalApp, phpVersion, virtualHostName) ApacheVhost.setupApacheVhost(website.adminEmail, website.externalApp, website.externalApp,
phpVersion, virtualHostName)
logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'Restarting servers and phps..,90') logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'Restarting servers and phps..,90')
@@ -1229,10 +1228,12 @@ class virtualHostUtilities:
ApacheVhost.DeleteApacheVhost(virtualHostName) ApacheVhost.DeleteApacheVhost(virtualHostName)
if child: if child:
vhost.perHostDomainConf(website.path, website.master.domain, virtualHostName, completePathToConfigFile, vhost.perHostDomainConf(website.path, website.master.domain, virtualHostName,
completePathToConfigFile,
website.master.adminEmail, phpVersion, website.master.externalApp, 0) website.master.adminEmail, phpVersion, website.master.externalApp, 0)
else: else:
vhost.perHostVirtualConf(completePathToConfigFile, website.adminEmail, website.externalApp, phpVersion, virtualHostName, 0) vhost.perHostVirtualConf(completePathToConfigFile, website.adminEmail, website.externalApp,
phpVersion, virtualHostName, 0)
logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'Restarting server..,90') logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'Restarting server..,90')
installUtilities.installUtilities.reStartLiteSpeed() installUtilities.installUtilities.reStartLiteSpeed()
logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'Successfully converted. [200]') logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, 'Successfully converted. [200]')
@@ -1245,7 +1246,8 @@ class virtualHostUtilities:
def getDiskUsage(path, totalAllowed): def getDiskUsage(path, totalAllowed):
try: try:
totalUsageInMB = ProcessUtilities.outputExecutioner(["sudo", "du", "-hs", path, "--block-size=1M"]).split()[0] totalUsageInMB = ProcessUtilities.outputExecutioner(["sudo", "du", "-hs", path, "--block-size=1M"]).split()[
0]
percentage = float(100) / float(totalAllowed) percentage = float(100) / float(totalAllowed)
@@ -1283,8 +1285,8 @@ class virtualHostUtilities:
except BaseException, msg: except BaseException, msg:
logging.CyberCPLogFileWriter.writeToFile(str(msg)) logging.CyberCPLogFileWriter.writeToFile(str(msg))
def main():
def main():
parser = argparse.ArgumentParser(description='CyberPanel Installer') parser = argparse.ArgumentParser(description='CyberPanel Installer')
parser.add_argument('function', help='Specific a function to call!') parser.add_argument('function', help='Specific a function to call!')
parser.add_argument('--virtualHostName', help='Domain name!') parser.add_argument('--virtualHostName', help='Domain name!')
@@ -1301,7 +1303,6 @@ def main():
parser.add_argument('--restore', help='Restore Check.') parser.add_argument('--restore', help='Restore Check.')
parser.add_argument('--apache', help='Enable/Disable Apache as backend') parser.add_argument('--apache', help='Enable/Disable Apache as backend')
## arguments for creation child domains ## arguments for creation child domains
parser.add_argument('--masterDomain', help='Master Domain Needed While Creating Child Domains!') parser.add_argument('--masterDomain', help='Master Domain Needed While Creating Child Domains!')
@@ -1316,7 +1317,6 @@ def main():
parser.add_argument('--tempPath', help='Temporary path where configuration data is placed!') parser.add_argument('--tempPath', help='Temporary path where configuration data is placed!')
## save ssl arguments ## save ssl arguments
parser.add_argument('--tempKeyPath', help='Temporary path to store key!') parser.add_argument('--tempKeyPath', help='Temporary path to store key!')
@@ -1375,7 +1375,9 @@ def main():
except: except:
tempStatusPath = '/home/cyberpanel/fakePath' tempStatusPath = '/home/cyberpanel/fakePath'
virtualHostUtilities.createVirtualHost(args.virtualHostName, args.administratorEmail, args.phpVersion, args.virtualHostUser, int(args.ssl), dkimCheck, openBasedir, args.websiteOwner, args.package, apache, tempStatusPath) virtualHostUtilities.createVirtualHost(args.virtualHostName, args.administratorEmail, args.phpVersion,
args.virtualHostUser, int(args.ssl), dkimCheck, openBasedir,
args.websiteOwner, args.package, apache, tempStatusPath)
elif args.function == "deleteVirtualHostConfigurations": elif args.function == "deleteVirtualHostConfigurations":
vhost.deleteVirtualHostConfigurations(args.virtualHostName) vhost.deleteVirtualHostConfigurations(args.virtualHostName)
elif args.function == "createDomain": elif args.function == "createDomain":
@@ -1399,33 +1401,39 @@ def main():
except: except:
tempStatusPath = '/home/cyberpanel/fakePath' tempStatusPath = '/home/cyberpanel/fakePath'
virtualHostUtilities.createDomain(args.masterDomain, args.virtualHostName, args.phpVersion, args.path, int(args.ssl), dkimCheck, openBasedir, args.websiteOwner, apache, tempStatusPath) virtualHostUtilities.createDomain(args.masterDomain, args.virtualHostName, args.phpVersion, args.path,
int(args.ssl), dkimCheck, openBasedir, args.websiteOwner, apache,
tempStatusPath)
elif args.function == "issueSSL": elif args.function == "issueSSL":
virtualHostUtilities.issueSSL(args.virtualHostName,args.path,args.administratorEmail) virtualHostUtilities.issueSSL(args.virtualHostName, args.path, args.administratorEmail)
elif args.function == "changePHP": elif args.function == "changePHP":
vhost.changePHP(args.path,args.phpVersion) vhost.changePHP(args.path, args.phpVersion)
elif args.function == "getAccessLogs": elif args.function == "getAccessLogs":
virtualHostUtilities.getAccessLogs(args.path,int(args.page)) virtualHostUtilities.getAccessLogs(args.path, int(args.page))
elif args.function == "getErrorLogs": elif args.function == "getErrorLogs":
virtualHostUtilities.getErrorLogs(args.path,int(args.page)) virtualHostUtilities.getErrorLogs(args.path, int(args.page))
elif args.function == "saveVHostConfigs": elif args.function == "saveVHostConfigs":
virtualHostUtilities.saveVHostConfigs(args.path,args.tempPath) virtualHostUtilities.saveVHostConfigs(args.path, args.tempPath)
elif args.function == "saveRewriteRules": elif args.function == "saveRewriteRules":
virtualHostUtilities.saveRewriteRules(args.virtualHostName,args.path,args.tempPath) virtualHostUtilities.saveRewriteRules(args.virtualHostName, args.path, args.tempPath)
elif args.function == "saveSSL": elif args.function == "saveSSL":
virtualHostUtilities.saveSSL(args.virtualHostName,args.tempKeyPath,args.tempCertPath) virtualHostUtilities.saveSSL(args.virtualHostName, args.tempKeyPath, args.tempCertPath)
elif args.function == "installWordPress": elif args.function == "installWordPress":
virtualHostUtilities.installWordPress(args.virtualHostName,args.path,args.virtualHostUser,args.dbName,args.dbUser,args.dbPassword) virtualHostUtilities.installWordPress(args.virtualHostName, args.path, args.virtualHostUser, args.dbName,
args.dbUser, args.dbPassword)
elif args.function == "installJoomla": elif args.function == "installJoomla":
virtualHostUtilities.installJoomla(args.virtualHostName,args.path,args.virtualHostUser,args.dbName,args.dbUser,args.dbPassword,args.username,args.password,args.prefix,args.sitename, args.tempStatusPath) virtualHostUtilities.installJoomla(args.virtualHostName, args.path, args.virtualHostUser, args.dbName,
args.dbUser, args.dbPassword, args.username, args.password, args.prefix,
args.sitename, args.tempStatusPath)
elif args.function == "issueSSLForHostName": elif args.function == "issueSSLForHostName":
virtualHostUtilities.issueSSLForHostName(args.virtualHostName,args.path) virtualHostUtilities.issueSSLForHostName(args.virtualHostName, args.path)
elif args.function == "issueSSLForMailServer": elif args.function == "issueSSLForMailServer":
virtualHostUtilities.issueSSLForMailServer(args.virtualHostName,args.path) virtualHostUtilities.issueSSLForMailServer(args.virtualHostName, args.path)
elif args.function == "findDomainBW": elif args.function == "findDomainBW":
vhost.findDomainBW(args.virtualHostName, int(args.bandwidth)) vhost.findDomainBW(args.virtualHostName, int(args.bandwidth))
elif args.function == 'createAlias': elif args.function == 'createAlias':
virtualHostUtilities.createAlias(args.masterDomain,args.aliasDomain,int(args.ssl),args.sslPath, args.administratorEmail, args.websiteOwner) virtualHostUtilities.createAlias(args.masterDomain, args.aliasDomain, int(args.ssl), args.sslPath,
args.administratorEmail, args.websiteOwner)
elif args.function == 'issueAliasSSL': elif args.function == 'issueAliasSSL':
virtualHostUtilities.issueAliasSSL(args.masterDomain, args.aliasDomain, args.sslPath, args.administratorEmail) virtualHostUtilities.issueAliasSSL(args.masterDomain, args.aliasDomain, args.sslPath, args.administratorEmail)
elif args.function == 'deleteAlias': elif args.function == 'deleteAlias':
@@ -1437,5 +1445,6 @@ def main():
elif args.function == 'switchServer': elif args.function == 'switchServer':
virtualHostUtilities.switchServer(args.virtualHostName, args.phpVersion, int(args.server), args.tempStatusPath) virtualHostUtilities.switchServer(args.virtualHostName, args.phpVersion, int(args.server), args.tempStatusPath)
if __name__ == "__main__": if __name__ == "__main__":
main() main()

View File

@@ -712,6 +712,8 @@ class WebsiteManager:
execPath = execPath + " findDomainBW --virtualHostName " + self.domain + " --bandwidth " + str( execPath = execPath + " findDomainBW --virtualHostName " + self.domain + " --bandwidth " + str(
website.package.bandwidth) website.package.bandwidth)
logging.CyberCPLogFileWriter.writeToFile(execPath)
output = ProcessUtilities.outputExecutioner(execPath) output = ProcessUtilities.outputExecutioner(execPath)
bwData = output.split(",") bwData = output.split(",")
except BaseException, msg: except BaseException, msg:
@@ -2078,6 +2080,10 @@ StrictHostKeyChecking no
data['adminEmail'] = data['ownerEmail'] data['adminEmail'] = data['ownerEmail']
data['phpSelection'] = "PHP 7.0" data['phpSelection'] = "PHP 7.0"
data['package'] = data['packageName'] data['package'] = data['packageName']
try:
websitesLimit = data['websitesLimit']
except:
websitesLimit = 1
admin = Administrator.objects.get(userName=adminUser) admin = Administrator.objects.get(userName=adminUser)
@@ -2091,7 +2097,7 @@ StrictHostKeyChecking no
websiteOwn = Administrator(userName=websiteOwner, websiteOwn = Administrator(userName=websiteOwner,
password=hashPassword.hash_password(ownerPassword), password=hashPassword.hash_password(ownerPassword),
email=adminEmail, type=3, owner=admin.pk, email=adminEmail, type=3, owner=admin.pk,
initWebsitesLimit=1, acl=acl, api=1) initWebsitesLimit=websitesLimit, acl=acl, api=1)
websiteOwn.save() websiteOwn.save()
except BaseException: except BaseException:
pass pass