From 793b54d8fc4678eb1ed4999c3d28454b24139257 Mon Sep 17 00:00:00 2001 From: Kunal Mehta Date: Wed, 17 Jul 2019 17:00:28 -0400 Subject: [PATCH] Rewrite fetchList.php to not require MediaWiki to be installed So I can more easily set up a cronjob to update it regularly. Change-Id: Ie2012e8bf02fb0edb3d52d6076a4a7fb99c743d5 --- maintenance/fetchList.php | 80 +++++++++++++++++++-------------------- 1 file changed, 38 insertions(+), 42 deletions(-) diff --git a/maintenance/fetchList.php b/maintenance/fetchList.php index fa86a7a..216e941 100644 --- a/maintenance/fetchList.php +++ b/maintenance/fetchList.php @@ -18,40 +18,38 @@ namespace MediaWiki\SecureLinkFixer; -use Maintenance; use Wikimedia\StaticArrayWriter; $IP = getenv( 'MW_INSTALL_PATH' ); if ( $IP === false ) { $IP = __DIR__ . '/../../..'; } -require_once "$IP/maintenance/Maintenance.php"; + +require_once "$IP/includes/libs/StaticArrayWriter.php"; /** - * Downloads Mozilla's HSTS preload list and builds it into a CDB + * Downloads Mozilla's HSTS preload list and builds it into a PHP file. + * + * We explicitly don't use Maintenance here so that this script + * can be run without needing all of MediaWiki to be installed. */ -class FetchList extends Maintenance { - public function __construct() { - parent::__construct(); - $this->mDescription = 'Fetch HSTS preload list and build database'; +function main() { + // phpcs:ignore Generic.Files.LineLength + $feedUrl = 'https://hg.mozilla.org/mozilla-central/atom-log/tip/security/manager/ssl/nsSTSPreloadList.inc'; + $feed = file_get_contents( $feedUrl ); + preg_match( '!"https://hg.mozilla.org/mozilla-central/rev/([a-f0-9]*?)"!', $feed, $matches ); + if ( !isset( $matches[1] ) ) { + echo "Unable to parse revision id for HSTS preload list\n"; + die( 1 ); } - - public function execute() { - // phpcs:ignore Generic.Files.LineLength - $feedUrl = 'https://hg.mozilla.org/mozilla-central/atom-log/tip/security/manager/ssl/nsSTSPreloadList.inc'; - $feed = file_get_contents( $feedUrl ); - preg_match( '!"https://hg.mozilla.org/mozilla-central/rev/([a-f0-9]*?)"!', $feed, $matches ); - if ( !isset( $matches[1] ) ) { - $this->fatalError( 'Unable to parse revision id for HSTS preload list' ); - } - $rev = $matches[1]; - $this->output( "Downloading the HSTS preload list (revision $rev)..." ); - // phpcs:ignore Generic.Files.LineLength - $url = "https://hg.mozilla.org/mozilla-central/raw-file/$rev/security/manager/ssl/nsSTSPreloadList.inc"; - $lines = explode( "\n", file_get_contents( $url ) ); - $this->output( "done\n" ); - $inList = false; - $header = <<
create( $data, $header ); - file_put_contents( __DIR__ . '/../domains.php', $code ); - $this->output( "Updated domains.php\n" ); } + $writer = new StaticArrayWriter(); + $code = $writer->create( $data, $header ); + file_put_contents( __DIR__ . '/../domains.php', $code ); + echo "Updated domains.php\n"; } -$maintClass = FetchList::class; -require_once RUN_MAINTENANCE_IF_MAIN; +main();