Linux cyberpanel 5.15.0-156-generic #166-Ubuntu SMP Sat Aug 9 00:02:46 UTC 2025 x86_64
LiteSpeed
: 160.191.175.3 | : 216.73.216.114
Cant Read [ /etc/named.conf ]
8.2.29
aodai6801
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
usr /
local /
CyberCP /
managePHP /
templates /
managePHP /
[ HOME SHELL ]
Name
Size
Permission
Action
editPHPConfig.html
28.02
KB
-rw-r--r--
index.html
2.14
KB
-rw-r--r--
installExtensions.html
19.15
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : installExtensions.html
{% extends "baseTemplate/index.html" %} {% load i18n %} {% block title %}{% trans "Install PHP Extensions - CyberPanel" %}{% endblock %} {% block header_scripts %} <style> .modern-container { max-width: 1400px; margin: 0 auto; padding: 2rem; } .page-header { text-align: center; margin-bottom: 3rem; padding: 3rem 0; background: linear-gradient(135deg, var(--php-gradient-start, #667eea) 0%, var(--php-gradient-end, #764ba2) 100%); border-radius: 20px; animation: fadeInDown 0.5s ease-out; position: relative; overflow: hidden; color: var(--text-primary, white); } .page-header::before { content: ''; position: absolute; top: -50%; right: -50%; width: 200%; height: 200%; background: radial-gradient(circle at 70% 30%, var(--bg-light, rgba(255, 255, 255, 0.1)) 0%, transparent 50%); animation: rotate 30s linear infinite; } @keyframes rotate { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } @keyframes fadeInDown { from { opacity: 0; transform: translateY(-20px); } to { opacity: 1; transform: translateY(0); } } @keyframes fadeInUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .header-content { position: relative; z-index: 1; } .page-title { font-size: 2.5rem; font-weight: 700; margin-bottom: 1rem; display: flex; align-items: center; justify-content: center; gap: 1rem; } .php-icon { width: 60px; height: 60px; background: var(--bg-light, rgba(255, 255, 255, 0.2)); backdrop-filter: blur(10px); border-radius: 12px; display: flex; align-items: center; justify-content: center; box-shadow: var(--shadow-light, 0 4px 12px rgba(0,0,0,0.1)); } .page-subtitle { font-size: 1.125rem; color: var(--text-secondary, rgba(255, 255, 255, 0.9)); max-width: 600px; margin: 0 auto; } .apache-link { margin-top: 1rem; display: inline-flex; align-items: center; gap: 0.5rem; background: var(--bg-light, rgba(255, 255, 255, 0.2)); backdrop-filter: blur(10px); padding: 0.5rem 1.5rem; border-radius: 20px; color: var(--text-primary, white); text-decoration: none; font-size: 1rem; transition: all 0.3s ease; } .apache-link:hover { background: var(--bg-hover, rgba(255, 255, 255, 0.3)); transform: translateY(-2px); color: var(--text-primary, white); text-decoration: none; } .selector-panel { background: var(--bg-secondary, white); border-radius: 16px; box-shadow: var(--shadow-medium, 0 1px 3px rgba(0,0,0,0.05), 0 10px 40px rgba(0,0,0,0.08)); border: 1px solid var(--border-color, #e8e9ff); padding: 2rem; margin-bottom: 2rem; animation: fadeInUp 0.5s ease-out; } .selector-header { display: flex; align-items: center; gap: 1rem; margin-bottom: 1.5rem; } .selector-icon { width: 40px; height: 40px; background: linear-gradient(135deg, var(--php-gradient-start, #667eea) 0%, var(--php-gradient-end, #764ba2) 100%); border-radius: 10px; display: flex; align-items: center; justify-content: center; color: var(--text-primary, white); } .selector-title { font-size: 1.25rem; font-weight: 600; color: var(--text-primary, #1e293b); } .selector-form { display: flex; gap: 1rem; align-items: flex-end; } .form-group { flex: 1; } .form-label { font-weight: 500; color: var(--text-secondary, #475569); font-size: 1rem; margin-bottom: 0.5rem; display: block; } .form-control { width: 100%; padding: 0.75rem 1rem; border: 1px solid var(--border-color, #e8e9ff); border-radius: 8px; font-size: 1rem; transition: all 0.3s ease; background: var(--bg-secondary, #fff); } .form-control:focus { outline: none; border-color: var(--accent-color, #667eea); box-shadow: var(--accent-shadow, 0 0 0 3px rgba(102, 126, 234, 0.1)); } .select-control { appearance: none; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e"); background-position: right 0.5rem center; background-repeat: no-repeat; background-size: 1.5em 1.5em; padding-right: 2.5rem; } .btn { padding: 0.75rem 1.5rem; border-radius: 8px; font-weight: 500; font-size: 1rem; cursor: pointer; transition: all 0.3s ease; border: none; display: inline-flex; align-items: center; gap: 0.5rem; } .btn-primary { background: linear-gradient(135deg, var(--php-gradient-start, #667eea) 0%, var(--php-gradient-end, #764ba2) 100%); color: var(--text-primary, white); } .btn-primary:hover { transform: translateY(-2px); box-shadow: var(--accent-shadow, 0 4px 12px rgba(102, 126, 234, 0.3)); } .btn-primary:disabled { opacity: 0.6; cursor: not-allowed; transform: none; } .extensions-panel { background: var(--bg-secondary, white); border-radius: 16px; box-shadow: var(--shadow-medium, 0 1px 3px rgba(0,0,0,0.05), 0 10px 40px rgba(0,0,0,0.08)); border: 1px solid var(--border-color, #e8e9ff); overflow: hidden; animation: fadeInUp 0.5s ease-out 0.2s; animation-fill-mode: both; } .controls-bar { padding: 1.5rem 2rem; background: var(--bg-light, #f8f9ff); border-bottom: 1px solid var(--border-color, #e8e9ff); } .search-box { position: relative; max-width: 400px; } .search-input { width: 100%; padding: 0.75rem 1rem 0.75rem 2.5rem; border: 1px solid var(--border-color, #e8e9ff); border-radius: 8px; font-size: 1rem; transition: all 0.3s ease; background: var(--bg-secondary, white); color: var(--text-primary, inherit); } .search-input:focus { outline: none; border-color: var(--accent-color, #667eea); box-shadow: var(--accent-shadow, 0 0 0 3px rgba(102, 126, 234, 0.1)); } .search-icon { position: absolute; left: 0.75rem; top: 50%; transform: translateY(-50%); color: var(--text-muted, #94a3b8); } .extensions-table { width: 100%; background: var(--bg-secondary, white); } .extensions-table thead { background: var(--bg-light, #f8f9ff); } .extensions-table th { padding: 1rem; text-align: left; font-weight: 600; color: var(--text-secondary, #475569); font-size: 1rem; text-transform: uppercase; letter-spacing: 0.05em; border-bottom: 1px solid var(--border-color, #e8e9ff); } .extensions-table td { padding: 1rem; border-bottom: 1px solid var(--border-light, #f1f5f9); color: var(--text-primary, #334155); font-size: 1rem; } .extensions-table tbody tr { transition: all 0.2s ease; } .extensions-table tbody tr:hover { background: var(--bg-hover, #f8f9ff); } .extension-name { font-weight: 600; color: var(--text-primary, #1e293b); } .php-version-badge { font-family: 'Monaco', 'Consolas', monospace; font-size: 0.875rem; background: var(--accent-bg, #e0e7ff); color: var(--accent-color, #4c1d95); padding: 0.25rem 0.5rem; border-radius: 4px; font-weight: 500; } .status-badge { padding: 0.25rem 0.75rem; border-radius: 20px; font-size: 0.875rem; font-weight: 500; display: inline-flex; align-items: center; gap: 0.25rem; } .status-installed { background: var(--success-bg, #d1fae5); color: var(--success-color, #065f46); } .status-not-installed { background: var(--danger-bg, #fee2e2); color: var(--danger-color, #991b1b); } .btn-sm { padding: 0.5rem 1rem; font-size: 0.875rem; } .btn-install { background: var(--success-color, #10b981); color: var(--text-primary, white); } .btn-install:hover:not(:disabled) { background: var(--success-hover, #059669); transform: translateY(-2px); box-shadow: var(--success-shadow, 0 4px 12px rgba(16, 185, 129, 0.3)); } .btn-uninstall { background: var(--danger-color, #ef4444); color: var(--text-primary, white); } .btn-uninstall:hover:not(:disabled) { background: var(--danger-hover, #dc2626); transform: translateY(-2px); box-shadow: var(--danger-shadow, 0 4px 12px rgba(239, 68, 68, 0.3)); } .log-panel { background: var(--bg-secondary, white); border-radius: 16px; box-shadow: var(--shadow-medium, 0 1px 3px rgba(0,0,0,0.05), 0 10px 40px rgba(0,0,0,0.08)); border: 1px solid var(--border-color, #e8e9ff); padding: 2rem; margin-top: 2rem; animation: fadeInUp 0.5s ease-out; } .log-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 1.5rem; } .log-title { font-size: 1.25rem; font-weight: 600; color: var(--text-primary, #1e293b); display: flex; align-items: center; gap: 0.75rem; } .log-icon { width: 32px; height: 32px; background: var(--accent-bg, #f3e8ff); border-radius: 8px; display: flex; align-items: center; justify-content: center; color: var(--accent-color, #667eea); } .log-output { background: var(--console-bg, #1e293b); color: var(--console-text, #10b981); font-family: 'Monaco', 'Consolas', monospace; font-size: 0.875rem; padding: 1.5rem; border-radius: 8px; height: 400px; overflow-y: auto; white-space: pre-wrap; word-wrap: break-word; } .btn-back { background: var(--info-color, #6366f1); color: var(--text-primary, white); } .btn-back:hover { background: var(--info-hover, #4f46e5); transform: translateY(-2px); box-shadow: var(--info-shadow, 0 4px 12px rgba(99, 102, 241, 0.3)); } .alert { padding: 1rem 1.5rem; border-radius: 8px; margin-bottom: 1rem; display: flex; align-items: center; gap: 0.75rem; animation: fadeInUp 0.3s ease-out; } .alert-danger { background: var(--danger-bg, #fee2e2); color: var(--danger-color, #991b1b); border: 1px solid var(--danger-border, #fecaca); } .alert-icon { font-size: 1.25rem; } .loading-spinner { width: 20px; height: 20px; border: 2px solid var(--border-light, #f3f3f3); border-top: 2px solid var(--accent-color, #667eea); border-radius: 50%; animation: spin 1s linear infinite; display: inline-block; margin-left: 0.5rem; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* Responsive */ @media (max-width: 768px) { .modern-container { padding: 1rem; } .page-title { font-size: 2rem; } .extensions-table { font-size: 1rem; } .extensions-table th, .extensions-table td { padding: 0.5rem; } .btn-sm { padding: 0.375rem 0.75rem; font-size: 0.875rem; } } </style> {% endblock %} {% block content %} {% load static %} {% get_current_language as LANGUAGE_CODE %} <!-- Current language: {{ LANGUAGE_CODE }} --> <div class="modern-container" ng-controller="installExtensions"> <!-- Page Header --> <div class="page-header"> <div class="header-content"> <div class="page-title"> <div class="php-icon"> <i class="fas fa-puzzle-piece fa-2x"></i> </div> {% trans "Install PHP Extensions" %} </div> <p class="page-subtitle"> {% trans "Install or uninstall PHP extensions to enhance your PHP functionality" %} </p> {% if apache %} <a href="{% url 'installExtensions' %}?apache=apache" class="apache-link"> <i class="fas fa-feather"></i> {% trans "Manage Apache Extensions" %} </a> {% endif %} </div> </div> <!-- PHP Version Selector --> <div class="selector-panel"> <div class="selector-header"> <div class="selector-icon"> <i class="fas fa-code"></i> </div> <h3 class="selector-title"> {% trans "Select PHP Version" %} <span ng-show="loadingExtensions" class="loading-spinner"></span> </h3> </div> <div class="selector-form"> <div class="form-group"> <label class="form-label">{% trans "PHP Version" %}</label> <select ng-disabled="phpSelectionDisabled" ng-change="fetchPHPDetails()" ng-model="phpSelection" class="form-control select-control"> {% for php in phps %} <option>{{ php }}</option> {% endfor %} </select> </div> <button type="button" ng-click="fetchPHPDetails()" ng-disabled="loadingExtensions" class="btn btn-primary"> <i class="fas fa-sync-alt"></i> {% trans "Load Extensions" %} </button> </div> </div> <!-- Extensions Table --> <div ng-hide="availableExtensions" class="extensions-panel"> <div class="controls-bar"> <div class="search-box"> <i class="fas fa-search search-icon"></i> <input type="text" ng-model="extSearch" placeholder="{% trans 'Search extensions...' %}" class="search-input"> </div> </div> <table class="extensions-table"> <thead> <tr> <th>{% trans "ID" %}</th> <th>{% trans "PHP Version" %}</th> <th>{% trans "Extension Name" %}</th> <th>{% trans "Description" %}</th> <th>{% trans "Status" %}</th> <th>{% trans "Actions" %}</th> </tr> </thead> <tbody> <tr ng-repeat="record in records | filter:extSearch"> <td>#{$ record.id $}</td> <td> <span class="php-version-badge">{$ record.phpVers $}</span> </td> <td class="extension-name">{$ record.extensionName $}</td> <td>{$ record.description $}</td> <td> <span class="status-badge" ng-class="{'status-installed': record.status=='Installed', 'status-not-installed': record.status=='Not-Installed'}"> <i class="fas fa-circle" style="font-size: 0.5rem; color: inherit;"></i> {$ record.status $} </span> </td> <td> <button ng-disabled="record.status=='Installed'" type="button" ng-click="installExt(record.extensionName)" class="btn btn-sm btn-install"> <i class="fas fa-download"></i> {% trans "Install" %} </button> <button ng-disabled="record.status=='Not-Installed'" type="button" ng-click="uninstallExt(record.extensionName)" class="btn btn-sm btn-uninstall"> <i class="fas fa-trash"></i> {% trans "Uninstall" %} </button> </td> </tr> </tbody> </table> </div> <!-- Log Output --> <div ng-hide="request" class="log-panel"> <div class="log-header"> <div class="log-title"> <div class="log-icon"> <i class="fas fa-terminal"></i> </div> {% trans "Installation Log" %} </div> <button ng-disabled="goback" type="button" ng-click="fetchPHPDetails()" class="btn btn-back"> <i class="fas fa-arrow-left"></i> {% trans "Go Back" %} </button> </div> <div class="log-output">{$ requestData $}</div> </div> <!-- Error Messages --> <div ng-hide="canNotFetch" class="alert alert-danger"> <i class="fas fa-exclamation-circle alert-icon"></i> <div> <strong>{% trans "Error" %}:</strong> {% trans "Cannot fetch details. Error message:" %} {$ errorMessage $} </div> </div> <div ng-hide="canNotPerform" class="alert alert-danger"> <i class="fas fa-exclamation-circle alert-icon"></i> <div> <strong>{% trans "Error" %}:</strong> {% trans "Cannot perform operation. Error message:" %} {$ errorMessage $} </div> </div> <div ng-hide="couldNotConnect" class="alert alert-danger"> <i class="fas fa-exclamation-circle alert-icon"></i> <div> <strong>{% trans "Connection Error" %}:</strong> {% trans "Could not connect. Please refresh this page." %} </div> </div> </div> {% endblock %}
Close