__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 tag, it executes renderTagSample (see below) $parser->setHook( 'ClientIP', 'IPInfoExtension::ClientIP' ); $parser->setHook( 'IPv4orv6', 'IPInfoExtension::IPv4orv6' ); $parser->setHook( 'ClientName', 'IPInfoExtension::ClientName' ); } // Render public static function ClientIP( $input, array $args, Parser $parser, PPFrame $frame ) { $input = getenv("REMOTE_ADDR"); return htmlspecialchars( $input ); } // Render public static function ClientName( $input, array $args, Parser $parser, PPFrame $frame ) { $input = gethostbyaddr(getenv("REMOTE_ADDR")); return htmlspecialchars( $input ); } // Render 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 ); } } ?>