60 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
if( !defined( 'MEDIAWIKI' ) ) {
 | 
						|
	echo( "This is an extension to the MediaWiki package and cannot be run standalone.\n" );
 | 
						|
	die( -1 );
 | 
						|
}
 | 
						|
 | 
						|
// Extension credits that will show up on Special:Version
 | 
						|
$wgExtensionCredits['parserhook'][] = array(
 | 
						|
	'path'           => __FILE__,
 | 
						|
	'name'           => 'IPInfo',
 | 
						|
	'version'        => '1.0',
 | 
						|
	'author'         => 'Bernhard Linz',
 | 
						|
	'url'            => 'https://www.mediawiki.org/wiki/Extension:MyExtension',
 | 
						|
	'descriptionmsg' => 'ipinfo-desc', // Message key in i18n file.
 | 
						|
	'description'    => 'Add Tags for Client IP, Type and DNS-Name'
 | 
						|
);
 | 
						|
 | 
						|
$wgExtensionMessagesFiles['IPInfo'] = dirname( __FILE__ ) . '/' . '/IPInfo.i18n.php';
 | 
						|
 | 
						|
$wgHooks['ParserFirstCallInit'][] = 'IPInfoExtension::onParserSetup';
 | 
						|
 | 
						|
class IPInfoExtension {
 | 
						|
	// Register any render callbacks with the parser
 | 
						|
	public static function onParserSetup( Parser $parser ) {
 | 
						|
		// When the parser sees the <sample> tag, it executes renderTagSample (see below)
 | 
						|
		$parser->setHook( 'ClientIP', 'IPInfoExtension::ClientIP' );
 | 
						|
        $parser->setHook( 'IPv4orv6', 'IPInfoExtension::IPv4orv6' );
 | 
						|
        $parser->setHook( 'ClientName', 'IPInfoExtension::ClientName' );
 | 
						|
	}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
	// Render <ClientIP>
 | 
						|
	public static function ClientIP( $input, array $args, Parser $parser, PPFrame $frame ) {
 | 
						|
		$input = getenv("REMOTE_ADDR");
 | 
						|
		return htmlspecialchars( $input );
 | 
						|
	}
 | 
						|
	// Render <ClientName>
 | 
						|
	public static function ClientName( $input, array $args, Parser $parser, PPFrame $frame ) {
 | 
						|
		$input = gethostbyaddr(getenv("REMOTE_ADDR"));
 | 
						|
		return htmlspecialchars( $input );
 | 
						|
	}
 | 
						|
 | 
						|
	// Render <IPv4orv6>
 | 
						|
	public static function IPv4orv6( $input, array $args, Parser $parser, PPFrame $frame ) {
 | 
						|
        if (strpos(getenv("REMOTE_ADDR"), ":") == false)
 | 
						|
        {
 | 
						|
            $input = "IPv4";
 | 
						|
        } else {
 | 
						|
            $input = "IPv6";
 | 
						|
        };
 | 
						|
		return htmlspecialchars( $input );
 | 
						|
	}
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
?>
 |