mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2026-08-30 11:17:57 +02:00
CP Packages
This commit is contained in:
@@ -25,7 +25,7 @@
|
||||
<li class="active"><a ng-click="fetchPackages('upgrade')" href="#tab4"
|
||||
data-toggle="tab">Updates</a></li>
|
||||
<li><a ng-click="fetchPackages()" href="#tab6" data-toggle="tab">All Packages</a></li>
|
||||
<li><a href="#tab7" data-toggle="tab">Settings</a></li>
|
||||
<li><a ng-click="fetchPackages('CyberPanel')" href="#tab7" data-toggle="tab">CyberPanel Packages</a></li>
|
||||
<img ng-hide="cyberpanelLoading"
|
||||
src="{% static 'images/loading.gif' %}">
|
||||
</ul>
|
||||
@@ -368,7 +368,214 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-pane" id="tab7">
|
||||
<p>Howdy, I'm in Section 7.</p>
|
||||
<a style="float: left ; margin-bottom: 2%"
|
||||
class="btn btn-border btn-alt border-azure btn-link font-azure" href="#"
|
||||
title=""><span>Total Packages: {$ totalPackages $}</span></a>
|
||||
<a style="float: left; margin-bottom: 2%; margin-left: 2%"
|
||||
class="btn btn-border btn-alt border-blue-alt btn-link font-blue-alt" href="#"
|
||||
title=""><span>Fetched Packages: {$ fetchedPackages $}</span></a>
|
||||
|
||||
<div id="updatePackage" class="modal fade" role="dialog">
|
||||
<div class="modal-dialog modal-lg">
|
||||
|
||||
<!-- Modal content-->
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close"
|
||||
data-dismiss="modal">
|
||||
×
|
||||
</button>
|
||||
<h4 class="modal-title">Upgrading {$ package $}
|
||||
package(s).
|
||||
<img ng-hide="cyberpanelLoading"
|
||||
src="{% static 'images/loading.gif' %}">
|
||||
</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-12">
|
||||
<div class="col-sm-12">
|
||||
<textarea ng-model="requestData"
|
||||
class="form-control"
|
||||
rows="12"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<table class="table">
|
||||
</table>
|
||||
|
||||
</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 class="col-sm-10"
|
||||
style="padding: 0px; box-shadow: 0px 0px 1px 0px #888888; margin-bottom: 2%">
|
||||
<input placeholder="Search..."
|
||||
ng-model="packSearch" name="packSearch" type="text"
|
||||
class="form-control" required>
|
||||
</div>
|
||||
<div class="col-sm-2">
|
||||
<div class="form-group">
|
||||
<select ng-model="recordsToShow" ng-change="fetchPackages('upgrade')"
|
||||
class="form-control" id="example-select">
|
||||
<option>10</option>
|
||||
<option>50</option>
|
||||
<option>100</option>
|
||||
<option>500</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-sm-12">
|
||||
|
||||
<table class="table" style="margin: 0px; padding: 0px">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{% trans "Package" %}</th>
|
||||
<th>{% trans "Version" %}</th>
|
||||
<th>{% trans "Lock" %}</th>
|
||||
<th>{% trans "Actions" %}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ng-repeat="record in allPackages | filter:packSearch">
|
||||
<td ng-bind="record.package"></td>
|
||||
<td ng-bind="record.version"></td>
|
||||
<td>
|
||||
<a ng-click="lockStatus(record.package, 0)" href="#"><i ng-show="record.lock==1" class="glyph-icon tooltip-button demo-icon icon-lock" title="Packed is locked for upgrade."></i></a>
|
||||
<a ng-click="lockStatus(record.package, 1)" href="#"><i ng-show="record.lock==0" class="glyph-icon tooltip-button demo-icon icon-unlock" title="Package is unlocked"></i></a>
|
||||
</td>
|
||||
<td>
|
||||
<a data-toggle="modal" data-target="#packageDetailsCyberPanel"
|
||||
ng-click="fetchPackageDetails(record.package)"
|
||||
class="btn btn-border btn-alt border-blue-alt btn-link font-blue-alt"
|
||||
href="#"
|
||||
title=""><span>Details</span></a>
|
||||
<div id="packageDetailsCyberPanel" class="modal fade" role="dialog">
|
||||
<div class="modal-dialog modal-lg">
|
||||
|
||||
<!-- Modal content-->
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close"
|
||||
data-dismiss="modal">
|
||||
×
|
||||
</button>
|
||||
<h4 class="modal-title">Package {$ package $}
|
||||
details.
|
||||
<img ng-hide="cyberpanelLoading"
|
||||
src="{% static 'images/loading.gif' %}">
|
||||
</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-12">
|
||||
<div class="col-sm-12">
|
||||
<textarea ng-model="packageDetails"
|
||||
class="form-control"
|
||||
rows="12"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<table class="table">
|
||||
</table>
|
||||
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button"
|
||||
ng-disabled="savingSettings"
|
||||
class="btn btn-default"
|
||||
data-dismiss="modal">
|
||||
Close
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<a ng-click="updatePackage(record.package)" data-toggle="modal"
|
||||
data-target="#updatePackageCyberPanel" style="margin-left: 1%"
|
||||
class="btn btn-border btn-alt border-azure btn-link font-azure"
|
||||
href="#"
|
||||
title=""><span>Update</span></a>
|
||||
<div id="updatePackageCyberPanel" class="modal fade" role="dialog">
|
||||
<div class="modal-dialog modal-lg">
|
||||
|
||||
<!-- Modal content-->
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close"
|
||||
data-dismiss="modal">
|
||||
×
|
||||
</button>
|
||||
<h4 class="modal-title">Upgrading {$ package $}
|
||||
package(s).
|
||||
<img ng-hide="cyberpanelLoading"
|
||||
src="{% static 'images/loading.gif' %}">
|
||||
</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-12">
|
||||
<div class="col-sm-12">
|
||||
<textarea ng-model="requestData"
|
||||
class="form-control"
|
||||
rows="12"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<table class="table">
|
||||
</table>
|
||||
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button"
|
||||
ng-disabled="savingSettings"
|
||||
class="btn btn-default"
|
||||
data-dismiss="modal">
|
||||
Close
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div style="margin-top: 2%" class="row">
|
||||
<div style="margin-top: 2%" class="col-md-12">
|
||||
<div class="row">
|
||||
<div class="col-md-9">
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="form-group">
|
||||
<select ng-model="currentPage" class="form-control"
|
||||
ng-change="fetchPackages('upgrade')">
|
||||
<option ng-repeat="page in pagination">{$ $index + 1 $}
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div> <!-- end row -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -735,18 +735,24 @@ def fetchPackages(request):
|
||||
command = 'apt-mark showhold'
|
||||
locked = ProcessUtilities.outputExecutioner(command).split('\n')
|
||||
|
||||
command = 'apt list --installed'
|
||||
packages = ProcessUtilities.outputExecutioner(command).split('\n')
|
||||
packages = packages[4:]
|
||||
if type == 'CyberPanel':
|
||||
|
||||
upgradePackages = []
|
||||
command = 'cat /usr/local/CyberCP/AllCPUbuntu.json'
|
||||
packages = json.loads(ProcessUtilities.outputExecutioner(command))
|
||||
|
||||
if type == 'upgrade':
|
||||
for pack in packages:
|
||||
if pack.find('upgradable') > -1:
|
||||
upgradePackages.append(pack)
|
||||
else:
|
||||
command = 'apt list --installed'
|
||||
packages = ProcessUtilities.outputExecutioner(command).split('\n')
|
||||
packages = packages[4:]
|
||||
|
||||
packages = upgradePackages
|
||||
upgradePackages = []
|
||||
|
||||
if type == 'upgrade':
|
||||
for pack in packages:
|
||||
if pack.find('upgradable') > -1:
|
||||
upgradePackages.append(pack)
|
||||
|
||||
packages = upgradePackages
|
||||
|
||||
|
||||
#if os.path.exists(ProcessUtilities.debugPath):
|
||||
@@ -768,27 +774,47 @@ def fetchPackages(request):
|
||||
import re
|
||||
for items in finalPackages:
|
||||
try:
|
||||
nowSplitted = items.split('now')
|
||||
if type == 'CyberPanel':
|
||||
|
||||
upgrade = 'Not Needed'
|
||||
packageName = items['Package'].split('/')[0]
|
||||
|
||||
if nowSplitted[1].split(' ')[3].find('upgradable') > -1:
|
||||
current = nowSplitted[1].split(' ')
|
||||
upgrade = '%s %s %s' % (current[3], current[4], current[5])
|
||||
if packageName in locked:
|
||||
lock = 1
|
||||
else:
|
||||
lock = 0
|
||||
|
||||
dic = {'package': packageName,
|
||||
'version': items['Version'], 'lock': lock}
|
||||
|
||||
counter = counter + 1
|
||||
if checker == 0:
|
||||
json_data = json_data + json.dumps(dic)
|
||||
checker = 1
|
||||
else:
|
||||
json_data = json_data + ',' + json.dumps(dic)
|
||||
|
||||
if nowSplitted[0].split('/')[0] in locked:
|
||||
lock = 1
|
||||
else:
|
||||
lock = 0
|
||||
nowSplitted = items.split('now')
|
||||
|
||||
dic = {'package': nowSplitted[0].split('/')[0], 'version': '%s %s' % (nowSplitted[1].split(' ')[1], nowSplitted[1].split(' ')[2]), 'upgrade': upgrade, 'lock': lock}
|
||||
upgrade = 'Not Needed'
|
||||
|
||||
counter = counter + 1
|
||||
if checker == 0:
|
||||
json_data = json_data + json.dumps(dic)
|
||||
checker = 1
|
||||
else:
|
||||
json_data = json_data + ',' + json.dumps(dic)
|
||||
if nowSplitted[1].split(' ')[3].find('upgradable') > -1:
|
||||
current = nowSplitted[1].split(' ')
|
||||
upgrade = '%s %s %s' % (current[3], current[4], current[5])
|
||||
|
||||
if nowSplitted[0].split('/')[0] in locked:
|
||||
lock = 1
|
||||
else:
|
||||
lock = 0
|
||||
|
||||
dic = {'package': nowSplitted[0].split('/')[0], 'version': '%s %s' % (nowSplitted[1].split(' ')[1], nowSplitted[1].split(' ')[2]), 'upgrade': upgrade, 'lock': lock}
|
||||
|
||||
counter = counter + 1
|
||||
if checker == 0:
|
||||
json_data = json_data + json.dumps(dic)
|
||||
checker = 1
|
||||
else:
|
||||
json_data = json_data + ',' + json.dumps(dic)
|
||||
|
||||
except BaseException as msg:
|
||||
logging.CyberCPLogFileWriter.writeToFile('[ERROR] %s. [fetchPackages:773]' % (str(msg)))
|
||||
|
||||
Reference in New Issue
Block a user