
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://www.funtoo.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://www.funtoo.org/index.php?title=URL_Whitelist_MediaWiki_Modification&amp;feed=atom&amp;action=history</id>
		<title>URL Whitelist MediaWiki Modification - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://www.funtoo.org/index.php?title=URL_Whitelist_MediaWiki_Modification&amp;feed=atom&amp;action=history"/>
		<link rel="alternate" type="text/html" href="http://www.funtoo.org/index.php?title=URL_Whitelist_MediaWiki_Modification&amp;action=history"/>
		<updated>2013-05-21T00:55:50Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.20.4</generator>

	<entry>
		<id>http://www.funtoo.org/index.php?title=URL_Whitelist_MediaWiki_Modification&amp;diff=7301&amp;oldid=prev</id>
		<title>Drobbins: Created page with &quot;The following code was created by Daniel Robbins to provide URL Whitelist functionality for MediaWiki. This code allows you to create a page named &quot;URLWhitelist&quot; which contain...&quot;</title>
		<link rel="alternate" type="text/html" href="http://www.funtoo.org/index.php?title=URL_Whitelist_MediaWiki_Modification&amp;diff=7301&amp;oldid=prev"/>
				<updated>2012-08-28T02:52:32Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;The following code was created by Daniel Robbins to provide URL Whitelist functionality for MediaWiki. This code allows you to create a page named &amp;quot;URLWhitelist&amp;quot; which contain...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;The following code was created by Daniel Robbins to provide URL Whitelist functionality for MediaWiki. This code allows you to create a page named &amp;quot;URLWhitelist&amp;quot; which contains lists of domains that users can link against. All domains not listed on the [[URLWhitelist]] page will result in a Spam Protection error when saving any edits to a page.&lt;br /&gt;
&lt;br /&gt;
On the URLWhitelist page, the wikitext should contain one domain per line, and sub-paths are fine, such as this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
google.com&lt;br /&gt;
foo.bar.com/oni&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Above, the URLWhitelist will allow http(s)://[domain.]google.com/* and http(s)://[domain.]foo.bar.com/oni[/optional-path]&lt;br /&gt;
&lt;br /&gt;
The following patch will apply against MediaWiki-1.19.1:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--- mediawiki-1.19.1/includes/EditPage.php      2012-06-13 18:22:38.000000000 +0000&lt;br /&gt;
+++ public_html/includes/EditPage.php   2012-08-27 04:53:33.073996581 +0000&lt;br /&gt;
@@ -1081,7 +1081,9 @@&lt;br /&gt;
                # Check for spam&lt;br /&gt;
                $match = self::matchSummarySpamRegex( $this-&amp;gt;summary );&lt;br /&gt;
                if ( $match === false ) {&lt;br /&gt;
-                       $match = self::matchSpamRegex( $this-&amp;gt;textbox1 );&lt;br /&gt;
+                       /* Don't run spam regex matching on the URLWhitelist page itself: */&lt;br /&gt;
+                       if ($this-&amp;gt;mTitle-&amp;gt;getText() != &amp;quot;URLWhitelist&amp;quot;)&lt;br /&gt;
+                               $match = self::matchSpamRegex( $this-&amp;gt;textbox1 );&lt;br /&gt;
                }&lt;br /&gt;
                if ( $match !== false ) {&lt;br /&gt;
                        $result['spam'] = $match;&lt;br /&gt;
@@ -1558,7 +1560,7 @@&lt;br /&gt;
                global $wgSpamRegex;&lt;br /&gt;
                // For back compatibility, $wgSpamRegex may be a single string or an array of regexes.&lt;br /&gt;
                $regexes = (array)$wgSpamRegex;&lt;br /&gt;
-               return self::matchSpamRegexInternal( $text, $regexes );&lt;br /&gt;
+               return self::matchURLWhitelistInternal( $text, $regexes );&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        /**&lt;br /&gt;
@@ -1571,7 +1573,7 @@&lt;br /&gt;
        public static function matchSummarySpamRegex( $text ) {&lt;br /&gt;
                global $wgSummarySpamRegex;&lt;br /&gt;
                $regexes = (array)$wgSummarySpamRegex;&lt;br /&gt;
-               return self::matchSpamRegexInternal( $text, $regexes );&lt;br /&gt;
+               return self::matchURLWhitelistInternal( $text, $regexes );&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        /**&lt;br /&gt;
@@ -1589,6 +1591,46 @@&lt;br /&gt;
                return false;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
+       protected static function matchURLWhitelistInternal( $text, $regexes ) {&lt;br /&gt;
+               global $wgUser;&lt;br /&gt;
+               /*if ( in_array('sysop', $wgUser-&amp;gt;getGroups())) {&lt;br /&gt;
+                       return false;&lt;br /&gt;
+               }*/&lt;br /&gt;
+               $a = new Article( Title::newFromText('URLWhitelist'));&lt;br /&gt;
+               $stuff = $a-&amp;gt;getContent();&lt;br /&gt;
+               $foo = preg_split('/\s+/', $stuff);&lt;br /&gt;
+               /*$httpreg = &amp;quot;,http://[^\s/]*(?!&amp;quot;;*/&lt;br /&gt;
+               $httpreg = &amp;quot;,https?://(?!&amp;quot;;&lt;br /&gt;
+               $count = 0;&lt;br /&gt;
+               foreach($foo as $reg) {&lt;br /&gt;
+                       $reg = str_replace(&amp;quot;.&amp;quot;,&amp;quot;\.&amp;quot;,$reg);&lt;br /&gt;
+                       $reg = &amp;quot;\S*&amp;quot; . $reg;&lt;br /&gt;
+                       if ($count != 0 )&lt;br /&gt;
+                               $httpreg .= &amp;quot;|&amp;quot;;&lt;br /&gt;
+                       $httpreg .= $reg;&lt;br /&gt;
+                       $count = $count + 1;&lt;br /&gt;
+               }&lt;br /&gt;
+               $httpreg .= &amp;quot;),&amp;quot;;&lt;br /&gt;
+               $hmatches = array();&lt;br /&gt;
+               /* URL match with whitelist */&lt;br /&gt;
+               if ( preg_match( $httpreg, $text, $hmatches ) ) {&lt;br /&gt;
+                       return &amp;quot;non-whitelisted http/https URL&amp;quot;;&lt;br /&gt;
+               }&lt;br /&gt;
+               /*&lt;br /&gt;
+               for testing:&lt;br /&gt;
+               if ( $wgUser-&amp;gt;getName() == &amp;quot;Drobbins&amp;quot; )&lt;br /&gt;
+                       return $httpreg;&lt;br /&gt;
+               */&lt;br /&gt;
+               foreach( $regexes as $regex ) {&lt;br /&gt;
+                       $matches = array();&lt;br /&gt;
+                       if( preg_match( $regex, $text, $matches ) ) {&lt;br /&gt;
+                               return $matches[0];&lt;br /&gt;
+                       }&lt;br /&gt;
+               }&lt;br /&gt;
+               return false;&lt;br /&gt;
+       }&lt;br /&gt;
+&lt;br /&gt;
+&lt;br /&gt;
        function setHeaders() {&lt;br /&gt;
                global $wgOut, $wgUser;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:MediaWiki Hacks]]&lt;/div&gt;</summary>
		<author><name>Drobbins</name></author>	</entry>

	</feed>