final v2backups and sslv2

This commit is contained in:
usman@cyberpersons.com
2023-04-11 22:47:14 +05:00
parent db6762ebdf
commit 9105d8e4de
8 changed files with 443 additions and 301 deletions

View File

@@ -14,7 +14,7 @@
<div class="panel-body"> <div class="panel-body">
<h3 class="title-hero"> <h3 class="title-hero">
{% trans "Configure v2 Backup Destinations" %} <img ng-hide="cyberpanelLoading" {% trans "Configure v2 Backup Destinations" %} <img ng-hide="cyberpanelLoading"
src="{% static 'images/loading.gif' %}"> src="{% static 'images/loading.gif' %}">
</h3> </h3>
<div class="example-box-wrapper"> <div class="example-box-wrapper">
@@ -24,7 +24,8 @@
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">{% trans "Select Website" %} </label> <label class="col-sm-3 control-label">{% trans "Select Website" %} </label>
<div class="col-sm-6"> <div class="col-sm-6">
<select id="selwebsite" ng-change="selectwebsite()" ng-model="selwebsite" class="form-control"> <select id="selwebsite" ng-change="selectwebsite()" ng-model="selwebsite"
class="form-control">
{% for items in websiteList %} {% for items in websiteList %}
<option value="{{ items }}">{{ items }}</option> <option value="{{ items }}">{{ items }}</option>
{% endfor %} {% endfor %}
@@ -37,8 +38,8 @@
<label class="col-sm-3 control-label">{% trans "Select Backup Type" %} </label> <label class="col-sm-3 control-label">{% trans "Select Backup Type" %} </label>
<div class="col-sm-6"> <div class="col-sm-6">
<select ng-change="selectbackuptype()" ng-model="v2backuptype" class="form-control"> <select ng-change="selectbackuptype()" ng-model="v2backuptype" class="form-control">
<option >SFTP</option> <option>SFTP</option>
<option >GDrive</option> <option>GDrive</option>
</select> </select>
</div> </div>
</div> </div>

View File

@@ -13,16 +13,27 @@
<div class="container"> <div class="container">
<div id="page-title"> <div id="page-title">
<h2>{% trans "Create V2 Backup" %} - <a target="_blank" href="http://go.cyberpanel.net/backup" style="height: 23px;line-height: 21px;" class="btn btn-border btn-alt border-red btn-link font-red" title=""><span>{% trans "Backup Docs" %}</span></a></h2> <h2>{% trans "Create V2 Backup" %} - <a target="_blank" href="http://go.cyberpanel.net/backup"
style="height: 23px;line-height: 21px;"
class="btn btn-border btn-alt border-red btn-link font-red"
title=""><span>{% trans "Backup Docs" %}</span></a></h2>
<p>{% trans "This page can be used to create your backup" %}</p> <p>{% trans "This page can be used to create your backup" %}</p>
</div> </div>
<div ng-controller="CreateV2Backup" class="panel"> <div ng-controller="CreateV2Backup" class="panel">
<div class="panel-body"> <div class="panel-body">
<h3 class="title-hero"> <h3 class="title-hero">
{% trans "Create v2 Backup" %} <img ng-hide="backupLoading" src="{% static 'images/loading.gif' %}"> - <a href="{% url 'RestoreV2backupSite' %}">Restore Backups</a> {% trans "Create v2 Backup" %} <img ng-hide="backupLoading" src="{% static 'images/loading.gif' %}">
- <a href="{% url 'RestoreV2backupSite' %}">Restore Backups</a>
</h3> </h3>
<div class="example-box-wrapper"> <div class="example-box-wrapper">
<p align="center" style="margin-top: 2%; margin-bottom: 2%">
<iframe width="788.54" height="443" src="https://youtu.be/kDUANNvtOwE"
title="YouTube video player" frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen></iframe>
</p>
<form class="form-horizontal bordered-row"> <form class="form-horizontal bordered-row">
@@ -30,7 +41,8 @@
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">{% trans "Select Website" %} </label> <label class="col-sm-3 control-label">{% trans "Select Website" %} </label>
<div class="col-sm-6"> <div class="col-sm-6">
<select id="create-backup-select" ng-change="selectwebsite()" ng-model="selwebsite" class="form-control"> <select id="create-backup-select" ng-change="selectwebsite()" ng-model="selwebsite"
class="form-control">
{% for items in websiteList %} {% for items in websiteList %}
<option value="{{ items }}">{{ items }}</option> <option value="{{ items }}">{{ items }}</option>
{% endfor %} {% endfor %}
@@ -40,11 +52,12 @@
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">{% trans "Select Repo" %} </label> <label class="col-sm-3 control-label">{% trans "Select Repo" %} </label>
<div class="col-sm-6"> <div class="col-sm-6">
<select id="reposelectbox" ng-change="selectrepo()" ng-model="testhabbi" class="form-control"> <select id="reposelectbox" ng-change="selectrepo()" ng-model="testhabbi"
class="form-control">
</select> </select>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">{% trans "Backup Content" %}</label> <label class="col-sm-3 control-label">{% trans "Backup Content" %}</label>
<div class="col-sm-9"> <div class="col-sm-9">
<div class="checkbox"> <div class="checkbox">
@@ -86,7 +99,10 @@
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">{% trans " " %} </label> <label class="col-sm-3 control-label">{% trans " " %} </label>
<div class="col-sm-6"> <div class="col-sm-6">
<button class="btn" id="CreateV2BackupButton" ng-click="CreateV2BackupButton()" style="border-radius: 6px;background-color: #3447b7;color: white !important;"> Create Backup</button> <button class="btn" id="CreateV2BackupButton" ng-click="CreateV2BackupButton()"
style="border-radius: 6px;background-color: #3447b7;color: white !important;">
Create Backup
</button>
</div> </div>
</div> </div>
@@ -134,7 +150,6 @@
</form> </form>
</div> </div>
</div> </div>

View File

@@ -11,153 +11,214 @@
</style> </style>
<div class="container"> {% if BackupStat %}
<div id="page-title"> <div class="container">
<h2>{% trans "Restore V2 Backups" %} - <a target="_blank" href="http://go.cyberpanel.net/backup" style="height: 23px;line-height: 21px;" class="btn btn-border btn-alt border-red btn-link font-red" title=""><span>{% trans "Backup Docs" %}</span></a></h2> <div id="page-title">
<p>{% trans "This page can be used to restore your backup sites" %}</p> <h2>{% trans "Restore V2 Backups" %} - <a target="_blank" href="http://go.cyberpanel.net/backup"
</div> style="height: 23px;line-height: 21px;"
class="btn btn-border btn-alt border-red btn-link font-red"
title=""><span>{% trans "Backup Docs" %}</span></a></h2>
<p>{% trans "This page can be used to restore your backup sites" %}</p>
</div>
<div ng-controller="restorev2backupoage" class="panel"> <div ng-controller="restorev2backupoage" class="panel">
<div class="panel-body"> <div class="panel-body">
<h3 class="title-hero"> <h3 class="title-hero">
{% trans "Restore V2 Backups" %} <img ng-hide="backupLoading" src="{% static 'images/loading.gif' %}"> {% trans "Restore V2 Backups" %} <img ng-hide="backupLoading"
</h3> src="{% static 'images/loading.gif' %}">
<div class="example-box-wrapper"> </h3>
<div class="example-box-wrapper">
<form action="/IncBackups/static" class="form-horizontal bordered-row"> <form action="/IncBackups/static" class="form-horizontal bordered-row">
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">{% trans "Select Website" %} </label> <label class="col-sm-3 control-label">{% trans "Select Website" %} </label>
<div class="col-sm-6"> <div class="col-sm-6">
<select id="create-backup-select" ng-change="selectwebsite()" ng-model="selwebsite" class="form-control"> <select id="create-backup-select" ng-change="selectwebsite()" ng-model="selwebsite"
{% for items in websiteList %} class="form-control">
<option value="{{ items }}">{{ items }}</option> {% for items in websiteList %}
{% endfor %} <option value="{{ items }}">{{ items }}</option>
</select> {% endfor %}
</div> </select>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "Select Repo" %} </label>
<div class="col-sm-6">
<select id="reposelectbox" ng-change="selectrepo()" ng-model="testhabbi" class="form-control">
</select>
</div>
</div>
</form>
</div>
<div ng-hide="runningSnapshot" class="form-group">
<div class="col-sm-12">
<table id="snapshotstable" class="table">
<thead>
<tr style="border-bottom: #cccccc solid 1px!important;" >
<th style="border: none">{% trans "Snapshot ID" %}</th>
<th style="border: none">{% trans "Time" %}</th>
<th style="border: none">{% trans "Action" %} ></th>
</tr>
</thead>
<tbody id="listsnapshots">
</tbody>
</table>
</div>
<div id="RestoreSnapshotPath" class="modal fade" role="dialog">
<div class="modal-dialog modal-lg">
<!-- Modal content-->
<div class="modal-content" style="height: 80%">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times;
</button>
<h4 id="restore_header_text" class="modal-title">{% trans "Restore" %} <img ng-hide="backupLoading" src="{% static 'images/loading.gif' %}"></h4>
</div> </div>
<div class="modal-body" style=""> </div>
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "Select Repo" %} </label>
<div class="col-sm-6">
<span style="font-weight: bolder">ID: <span style="font-weight: normal" id="Snapshot_id"></span></span><br> <select id="reposelectbox" ng-change="selectrepo()" ng-model="testhabbi"
<span style="font-weight: bolder">PATH: <span style="font-weight: normal" id="Snapshot_Path_id"></span></span><br> class="form-control">
<span style="display: flex;justify-content: center;margin-top: 20px;font-weight: bolder">{% trans "Are you ready to restore the backup? This may overwrite existing files." %} </span>
<div style="display: flex;justify-content: center;margin-top: 10px;margin-bottom: 20px"> </select>
<button type="button" class="btn btn-primary "style="margin-right: 20px!important;" </div>
ng-click="RestorePathV2()">Yes <img </div>
ng-hide="backupLoading"
src=""> </form>
</button>
<button type="button" ng-disabled="savingSettings"
class="btn btn-default mx-3" data-dismiss="modal"> </div>
No
<div ng-hide="runningSnapshot" class="form-group">
<div class="col-sm-12">
<table id="snapshotstable" class="table">
<thead>
<tr style="border-bottom: #cccccc solid 1px!important;">
<th style="border: none">{% trans "Snapshot ID" %}</th>
<th style="border: none">{% trans "Time" %}</th>
<th style="border: none">{% trans "Action" %} ></th>
</tr>
</thead>
<tbody id="listsnapshots">
</tbody>
</table>
</div>
<div id="RestoreSnapshotPath" class="modal fade" role="dialog">
<div class="modal-dialog modal-lg">
<!-- Modal content-->
<div class="modal-content" style="height: 80%">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times;
</button> </button>
<h4 id="restore_header_text" class="modal-title">{% trans "Restore" %} <img
ng-hide="backupLoading" src="{% static 'images/loading.gif' %}"></h4>
</div> </div>
<div class="modal-body" style="">
<div ng-hide="installationProgress" class="form-group"> <span style="font-weight: bolder">ID: <span style="font-weight: normal"
<label class="col-sm-12 control-label"></label> id="Snapshot_id"></span></span><br>
<div class="col-sm-12"> <span style="font-weight: bolder">PATH: <span style="font-weight: normal"
id="Snapshot_Path_id"></span></span><br>
<span style="display: flex;justify-content: center;margin-top: 20px;font-weight: bolder">{% trans "Are you ready to restore the backup? This may overwrite existing files." %} </span>
<div style="display: flex;justify-content: center;margin-top: 10px;margin-bottom: 20px">
<button type="button" class="btn btn-primary "
style="margin-right: 20px!important;"
ng-click="RestorePathV2()">Yes <img
ng-hide="backupLoading"
src="">
</button>
<button type="button" ng-disabled="savingSettings"
class="btn btn-default mx-3" data-dismiss="modal">
No
</button>
</div>
<div class="alert alert-success text-center"> <div ng-hide="installationProgress" class="form-group">
{# <h2>{$ currentStatus $}</h2>#} <label class="col-sm-12 control-label"></label>
<h2 class="ng-binding">Successfully Restored</h2> <div class="col-sm-12">
</div>
<div class="progress"> <div class="alert alert-success text-center">
<div id="installProgress" class="progress-bar" role="progressbar" aria-valuenow="70" {# <h2>{$ currentStatus $}</h2>#}
aria-valuemin="0" aria-valuemax="100" style="width:0%"> <h2 class="ng-binding">Successfully Restored</h2>
<span class="sr-only">70% Complete</span>
</div> </div>
<div class="progress">
<div id="installProgress" class="progress-bar" role="progressbar"
aria-valuenow="70"
aria-valuemin="0" aria-valuemax="100" style="width:0%">
<span class="sr-only">70% Complete</span>
</div>
</div>
<div ng-hide="errorMessageBox" class="alert alert-danger">
<p>{% trans "Error message:" %} {$ errorMessage $}</p>
</div>
<div ng-hide="success" class="alert alert-success">
<p>{% trans "Restored succesfully." %}</p>
</div>
<div ng-hide="couldNotConnect" class="alert alert-danger">
<p>{% trans "Could not connect to server. Please refresh this page." %}</p>
</div>
</div> </div>
</div>
<div ng-hide="errorMessageBox" class="alert alert-danger"> <div ng-hide="installationProgress" class="form-group">
<p>{% trans "Error message:" %} {$ errorMessage $}</p> <label class="col-sm-12 control-label"></label>
<div class="col-sm-4">
<button type="button" ng-disabled="goBackDisable" ng-click="goBack()"
class="btn btn-primary btn-lg">{% trans "Go Back" %}</button>
</div> </div>
<div ng-hide="success" class="alert alert-success">
<p>{% trans "Restored succesfully." %}</p>
</div>
<div ng-hide="couldNotConnect" class="alert alert-danger">
<p>{% trans "Could not connect to server. Please refresh this page." %}</p>
</div>
</div> </div>
</div> </div>
<div class="modal-footer">
<div ng-hide="installationProgress" class="form-group"> <button type="button" ng-disabled="savingSettings"
<label class="col-sm-12 control-label"></label> class="btn btn-default" data-dismiss="modal">
<div class="col-sm-4"> Close
<button type="button" ng-disabled="goBackDisable" ng-click="goBack()" </button>
class="btn btn-primary btn-lg">{% trans "Go Back" %}</button>
</div>
</div> </div>
</div> </div>
<div class="modal-footer">
<button type="button" ng-disabled="savingSettings"
class="btn btn-default" data-dismiss="modal">
Close
</button>
</div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div>
</div>
{% else %}
<style>
.feturecard {
width: 30%;
padding: 46px;
margin: 15px
}
</style>
<div class="container">
<div id="page-title" align="center">
<h1 style="color: black"><strong>Backups v2 - Incremental Backups! </strong></h1>
<p style="font-size: 15px; color: black; margin-top: 1%">Is your website's data protection strategy up
to par? Are you tired of dealing with slow and unreliable backup solutions that don't offer the
level of robustness you need? <br><br>
Introducing CyberPanel's latest feature, Backups v2! With Backups v2, you can ensure that your
website's data is protected like never before. Our advanced incremental backup system utilizes
rclone, a powerful backup tool that supports over 30+ backends, including popular cloud storage
providers like Google Drive, Dropbox, Amazon S3, and more!<br><br>
Gone are the days of slow and cumbersome full backups. With Backups v2, you can take advantage of
incremental backups that only capture changes to your data, making the process lightning-fast and
highly efficient. This means you can save time and bandwidth while still maintaining the highest
level of data integrity.<br><br>
Whether you have a small blog or a large e-commerce website, Backups v2 is tailored to meet your
needs. With its robustness and versatility, you can have peace of mind knowing that your website's
data is backed up securely and can be easily restored whenever you need it.
<br></p>
</div>
<p align="center">
<iframe width="788.54" height="443" src="https://www.youtube.com/watch?v=7dI1013xvUc"
title="YouTube video player" frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen></iframe>
</p>
<div style="margin-top: 2%">
<stripe-pricing-table pricing-table-id="prctbl_1MQtdYJMfY1fWGMszc4tx78j"
publishable-key="pk_live_51ITXBmJMfY1fWGMs2G0LAydJweIDMp2WaYocM0xyzdn03WaHUbMw6uxfVuktAkgpRyUql7tz7gF5OwdccEZLd6Ot00XX6tGoZx">
</stripe-pricing-table>
<stripe-pricing-table pricing-table-id="prctbl_1LpSqSJMfY1fWGMsxSNhPLsc"
publishable-key="pk_live_51ITXBmJMfY1fWGMs2G0LAydJweIDMp2WaYocM0xyzdn03WaHUbMw6uxfVuktAkgpRyUql7tz7gF5OwdccEZLd6Ot00XX6tGoZx">
</stripe-pricing-table>
<stripe-pricing-table pricing-table-id="prctbl_1M6WpCJMfY1fWGMsQXFlZWcW"
publishable-key="pk_live_51ITXBmJMfY1fWGMs2G0LAydJweIDMp2WaYocM0xyzdn03WaHUbMw6uxfVuktAkgpRyUql7tz7gF5OwdccEZLd6Ot00XX6tGoZx">
</stripe-pricing-table>
</div> </div>
</div> </div>
{% endif %}
</div>
{% endblock %} {% endblock %}

View File

@@ -11,206 +11,259 @@
</style> </style>
<div class="container"> {% if BackupStat %}
<div id="page-title"> <div class="container">
<h2>{% trans "Schedule V2 Backup" %} - <a target="_blank" href="http://go.cyberpanel.net/backup" <div id="page-title">
style="height: 23px;line-height: 21px;" <h2>{% trans "Schedule V2 Backup" %} - <a target="_blank" href="http://go.cyberpanel.net/backup"
class="btn btn-border btn-alt border-red btn-link font-red" style="height: 23px;line-height: 21px;"
title=""><span>{% trans "Backup Docs" %}</span></a></h2> class="btn btn-border btn-alt border-red btn-link font-red"
<p>{% trans "This page can be used to schedule your backups." %}</p> title=""><span>{% trans "Backup Docs" %}</span></a></h2>
</div> <p>{% trans "This page can be used to schedule your backups." %}</p>
</div>
<div ng-controller="ScheduleV2Backup" class="panel"> <div ng-controller="ScheduleV2Backup" class="panel">
<div class="panel-body"> <div class="panel-body">
<h3 class="title-hero"> <h3 class="title-hero">
{% trans "Schedule v2 Backup" %} <img ng-hide="backupLoading" {% trans "Schedule v2 Backup" %} <img ng-hide="backupLoading"
src="{% static 'images/loading.gif' %}"> src="{% static 'images/loading.gif' %}">
</h3> </h3>
<div class="example-box-wrapper"> <div class="example-box-wrapper">
<form class="form-horizontal bordered-row"> <form class="form-horizontal bordered-row">
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">{% trans "Select Website" %} </label> <label class="col-sm-3 control-label">{% trans "Select Website" %} </label>
<div class="col-sm-6"> <div class="col-sm-6">
<select id="create-backup-select" ng-change="selectwebsite()" ng-model="selwebsite" <select id="create-backup-select" ng-change="selectwebsite()" ng-model="selwebsite"
class="form-control"> class="form-control">
{% for items in websiteList %} {% for items in websiteList %}
<option value="{{ items }}">{{ items }}</option> <option value="{{ items }}">{{ items }}</option>
{% endfor %} {% endfor %}
</select> </select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "Backup Frequency" %} </label>
<div class="col-sm-6">
<select id="create-backup-select" ng-model="frequency"
class="form-control">
<option>30 Minutes</option>
<option>1 Hour</option>
<option>6 Hours</option>
<option>12 Hours</option>
<option>1 Day</option>
<option>3 Days</option>
<option>1 Week</option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "Select Repo" %} </label>
<div class="col-sm-6">
<select id="reposelectbox" ng-change="selectrepo()" ng-model="testhabbi"
class="form-control">
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "Backup Retention" %} </label>
<div class="col-sm-6">
<select id="create-backup-select" ng-model="retention"
class="form-control">
<option value="1">1 Day</option>
<option value="3">3 Days</option>
<option value="30">30 Days</option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "Backup Content" %}</label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="websiteData" type="checkbox" value="">
Data
</label>
</div> </div>
</div> </div>
<label class="col-sm-3 control-label"></label> <div class="form-group">
<div class="col-sm-9"> <label class="col-sm-3 control-label">{% trans "Backup Frequency" %} </label>
<div class="checkbox"> <div class="col-sm-6">
<label> <select id="create-backup-select" ng-model="frequency"
<input ng-model="websiteDatabases" type="checkbox" value=""> class="form-control">
Databases <option>30 Minutes</option>
</label> <option>1 Hour</option>
<option>6 Hours</option>
<option>12 Hours</option>
<option>1 Day</option>
<option>3 Days</option>
<option>1 Week</option>
</select>
</div> </div>
</div> </div>
<label class="col-sm-3 control-label"></label> <div class="form-group">
<div class="col-sm-9"> <label class="col-sm-3 control-label">{% trans "Select Repo" %} </label>
<div class="checkbox"> <div class="col-sm-6">
<label> <select id="reposelectbox" ng-change="selectrepo()" ng-model="testhabbi"
<input ng-model="websiteEmails" type="checkbox" value=""> class="form-control">
Emails </select>
</label>
</div> </div>
</div> </div>
<!--- <div class="form-group">
<label class="col-sm-3 control-label"></label> <label class="col-sm-3 control-label">{% trans "Backup Retention" %} </label>
<div class="col-sm-9"> <div class="col-sm-6">
<div class="checkbox"> <select id="create-backup-select" ng-model="retention"
<label> class="form-control">
<input ng-model="websiteSSLs" type="checkbox" value=""> <option value="1">1 Day</option>
SSL Certificates <option value="3">3 Days</option>
</label> <option value="30">30 Days</option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">{% trans "Backup Content" %}</label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="websiteData" type="checkbox" value="">
Data
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="websiteDatabases" type="checkbox" value="">
Databases
</label>
</div>
</div>
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="websiteEmails" type="checkbox" value="">
Emails
</label>
</div>
</div>
<!---
<label class="col-sm-3 control-label"></label>
<div class="col-sm-9">
<div class="checkbox">
<label>
<input ng-model="websiteSSLs" type="checkbox" value="">
SSL Certificates
</label>
</div>
</div> -->
</div>
<div class="form-group">
<label class="col-sm-3 control-label">{% trans " " %} </label>
<div class="col-sm-6">
<button class="btn" id="CreateV2BackupButton" ng-click="CreateScheduleV2()"
style="border-radius: 6px;background-color: #3447b7;color: white !important;">
Create Schedule
</button>
</div> </div>
</div> -->
</div>
<div class="form-group">
<label class="col-sm-3 control-label">{% trans " " %} </label>
<div class="col-sm-6">
<button class="btn" id="CreateV2BackupButton" ng-click="CreateScheduleV2()"
style="border-radius: 6px;background-color: #3447b7;color: white !important;">
Create Schedule
</button>
</div> </div>
</div>
<!------ List of records ---------------> <!------ List of records --------------->
<div class="form-group"> <div class="form-group">
<div class="col-sm-12"> <div class="col-sm-12">
<table class="table"> <table class="table">
<thead> <thead>
<tr> <tr>
<th>{% trans "Repo" %}</th> <th>{% trans "Repo" %}</th>
<th>{% trans "Frequency" %}</th> <th>{% trans "Frequency" %}</th>
<th>{% trans "Retention" %}</th> <th>{% trans "Retention" %}</th>
<th>{% trans "Backup Websites?" %}</th> <th>{% trans "Backup Websites?" %}</th>
<th>{% trans "Backup Databases?" %}</th> <th>{% trans "Backup Databases?" %}</th>
<th>{% trans "Backup Emails?" %}</th> <th>{% trans "Backup Emails?" %}</th>
<th>{% trans "Last Run" %}</th> <th>{% trans "Last Run" %}</th>
<th>{% trans "Delete" %}</th> <th>{% trans "Delete" %}</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr ng-repeat="record in records track by $index"> <tr ng-repeat="record in records track by $index">
<td ng-bind="record.repo"></td> <td ng-bind="record.repo"></td>
<td ng-bind="record.frequency"></td> <td ng-bind="record.frequency"></td>
<td ng-bind="record.retention"></td> <td ng-bind="record.retention"></td>
<td ng-bind="record.websiteData"></td> <td ng-bind="record.websiteData"></td>
<td ng-bind="record.websiteDatabases"></td> <td ng-bind="record.websiteDatabases"></td>
<td ng-bind="record.websiteEmails"></td> <td ng-bind="record.websiteEmails"></td>
<td ng-bind="record.lastRun"></td> <td ng-bind="record.lastRun"></td>
<a data-toggle="modal" href="" data-target="#DeleteScheduleV2"> <a data-toggle="modal" href="" data-target="#DeleteScheduleV2">
<td data-toggle="modal" data-target="#DeleteScheduleV2" <td data-toggle="modal" data-target="#DeleteScheduleV2"
ng-click="deleteBackupInitialv2(record.repo, record.frequency, record.websiteData, record.websiteDatabases, record.websiteEmails)"> ng-click="deleteBackupInitialv2(record.repo, record.frequency, record.websiteData, record.websiteDatabases, record.websiteEmails)">
<img <img
src="{% static 'images/delete.png' %}"></td> src="{% static 'images/delete.png' %}"></td>
</a> </a>
<div id="DeleteScheduleV2" class="modal fade" role="dialog"> <div id="DeleteScheduleV2" class="modal fade" role="dialog">
<div class="modal-dialog"> <div class="modal-dialog">
<!-- Modal content--> <!-- Modal content-->
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times; <button type="button" class="close" data-dismiss="modal">
</button> &times;
<h4 class="modal-title">{% trans "Set up account" %}</h4> </button>
</div> <h4 class="modal-title">{% trans "Set up account" %}</h4>
<div class="modal-body"> </div>
<div class="modal-body">
<form name="containerSettingsForm" action="/" <form name="containerSettingsForm" action="/"
class="form-horizontal"> class="form-horizontal">
<div ng-hide="installationDetailsForm" class="form-group"> <div ng-hide="installationDetailsForm"
<label class="col-sm-3 control-label">{% trans "Are you sure?" %}</label> class="form-group">
</div> <label class="col-sm-3 control-label">{% trans "Are you sure?" %}</label>
</div>
</form> </form>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="button" class="btn btn-primary" <button type="button" class="btn btn-primary"
ng-click="DeleteScheduleV2()">Delete <img ng-click="DeleteScheduleV2()">Delete <img
ng-hide="backupLoading" ng-hide="backupLoading"
src="{% static 'images/loading.gif' %}"> src="{% static 'images/loading.gif' %}">
</button> </button>
<button type="button" <button type="button"
class="btn btn-default" data-dismiss="modal"> class="btn btn-default" data-dismiss="modal">
Close Close
</button> </button>
</div>
</div> </div>
</div> </div>
</div> </div>
</div> </tr>
</tr> </tbody>
</tbody> </table>
</table> </div>
</div> </div>
</div>
<!------ List of records ---------------> <!------ List of records --------------->
</form> </form>
</div>
</div> </div>
</div> </div>
</div> </div>
{% else %}
<style>
.feturecard {
width: 30%;
padding: 46px;
margin: 15px
}
</style>
<div class="container">
<div id="page-title" align="center">
<h1 style="color: black"><strong>Backups v2 - Incremental Backups! </strong></h1>
<p style="font-size: 15px; color: black; margin-top: 1%">Is your website's data protection strategy up
to par? Are you tired of dealing with slow and unreliable backup solutions that don't offer the
level of robustness you need? <br><br>
Introducing CyberPanel's latest feature, Backups v2! With Backups v2, you can ensure that your
website's data is protected like never before. Our advanced incremental backup system utilizes
rclone, a powerful backup tool that supports over 30+ backends, including popular cloud storage
providers like Google Drive, Dropbox, Amazon S3, and more!<br><br>
</div> Gone are the days of slow and cumbersome full backups. With Backups v2, you can take advantage of
incremental backups that only capture changes to your data, making the process lightning-fast and
highly efficient. This means you can save time and bandwidth while still maintaining the highest
level of data integrity.<br><br>
Whether you have a small blog or a large e-commerce website, Backups v2 is tailored to meet your
needs. With its robustness and versatility, you can have peace of mind knowing that your website's
data is backed up securely and can be easily restored whenever you need it.
<br></p>
</div>
<p align="center">
<iframe width="788.54" height="443" src="https://www.youtube.com/watch?v=7dI1013xvUc"
title="YouTube video player" frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen></iframe>
</p>
<div style="margin-top: 2%">
<stripe-pricing-table pricing-table-id="prctbl_1MQtdYJMfY1fWGMszc4tx78j"
publishable-key="pk_live_51ITXBmJMfY1fWGMs2G0LAydJweIDMp2WaYocM0xyzdn03WaHUbMw6uxfVuktAkgpRyUql7tz7gF5OwdccEZLd6Ot00XX6tGoZx">
</stripe-pricing-table>
<stripe-pricing-table pricing-table-id="prctbl_1LpSqSJMfY1fWGMsxSNhPLsc"
publishable-key="pk_live_51ITXBmJMfY1fWGMs2G0LAydJweIDMp2WaYocM0xyzdn03WaHUbMw6uxfVuktAkgpRyUql7tz7gF5OwdccEZLd6Ot00XX6tGoZx">
</stripe-pricing-table>
<stripe-pricing-table pricing-table-id="prctbl_1M6WpCJMfY1fWGMsQXFlZWcW"
publishable-key="pk_live_51ITXBmJMfY1fWGMs2G0LAydJweIDMp2WaYocM0xyzdn03WaHUbMw6uxfVuktAkgpRyUql7tz7gF5OwdccEZLd6Ot00XX6tGoZx">
</stripe-pricing-table>
</div>
</div>
{% endif %}
{% endblock %} {% endblock %}

View File

@@ -721,6 +721,13 @@ def ConfigureV2Backup(request):
if ACLManager.currentContextPermission(current_acl, 'createBackup') == 0: if ACLManager.currentContextPermission(current_acl, 'createBackup') == 0:
return ACLManager.loadError() return ACLManager.loadError()
data = {}
if ACLManager.CheckForPremFeature('all'):
data['BackupStat'] = 1
else:
data['BackupStat'] = 0
websites = ACLManager.findAllSites(current_acl, user_id) websites = ACLManager.findAllSites(current_acl, user_id)
# #
# destinations = _get_destinations(local=True) # destinations = _get_destinations(local=True)

View File

@@ -65,9 +65,15 @@ class BackupManager:
return proc.render() return proc.render()
def schedulev2Backups(self, request=None, userID=None, data=None): def schedulev2Backups(self, request=None, userID=None, data=None):
if ACLManager.CheckForPremFeature('all'):
BackupStat = 1
else:
BackupStat = 0
currentACL = ACLManager.loadedACL(userID) currentACL = ACLManager.loadedACL(userID)
websitesName = ACLManager.findAllSites(currentACL, userID) websitesName = ACLManager.findAllSites(currentACL, userID)
proc = httpProc(request, 'IncBackups/ScheduleV2Backup.html', {'websiteList': websitesName}, 'createBackup') proc = httpProc(request, 'IncBackups/ScheduleV2Backup.html', {'websiteList': websitesName, "BackupStat": BackupStat}, 'createBackup')
return proc.render() return proc.render()
def gDrive(self, request=None, userID=None, data=None): def gDrive(self, request=None, userID=None, data=None):

View File

@@ -1232,7 +1232,6 @@ team_drive =
return 1, None return 1, None
except BaseException as msg: except BaseException as msg:
print('Error: %s' % msg) print('Error: %s' % msg)
return 0, str(msg) return 0, str(msg)

View File

@@ -436,7 +436,7 @@ class sslUtilities:
subprocess.check_output(shlex.split(command)) subprocess.check_output(shlex.split(command))
try: try:
command = acmePath + f" --issue -d *.{virtualHostName}" \ command = acmePath + f" --issue -d {virtualHostName} -d *.{virtualHostName}" \
+ ' --cert-file ' + existingCertPath + '/cert.pem' + ' --key-file ' + existingCertPath + '/privkey.pem' \ + ' --cert-file ' + existingCertPath + '/cert.pem' + ' --key-file ' + existingCertPath + '/privkey.pem' \
+ ' --fullchain-file ' + existingCertPath + '/fullchain.pem' + f' --dns {DNS_TO_USE} -k ec-256 --force --server letsencrypt' + ' --fullchain-file ' + existingCertPath + '/fullchain.pem' + f' --dns {DNS_TO_USE} -k ec-256 --force --server letsencrypt'
#ResultText = open(logging.CyberCPLogFileWriter.fileName, 'r').read() #ResultText = open(logging.CyberCPLogFileWriter.fileName, 'r').read()