Signed-off-by: WaitSpring <me@waitspring.com>
这个提交包含在:
WaitSpring 2023-03-04 11:45:17 +08:00
父节点 9f7f68c854
当前提交 350eb81a41
共有 9 个文件被更改,包括 144 次插入148 次删除

查看文件

@ -1,5 +1,5 @@
# RNRSHook
本插件为MediaWiki后台提供一个按钮,指向已部署的[实名验证系统](https://git.qiuwen.wiki/Qiuwen/qiuwen-rnrs)。
本插件为 MediaWiki 后台提供一个按钮,指向已部署的[实名验证系统](https://git.qiuwen.wiki/Qiuwen/qiuwen-rnrs)。
若要更换默认的实名验证系统URL,请修改界面文字 _MediaWiki:Rnrshook-url_
若要更换默认的实名验证系统 URL,请修改界面文字 _MediaWiki:Rnrshook-url_

查看文件

@ -1,3 +1,3 @@
# 反馈安全问题
若您确信本插件存在安全问题,请将邮件发送至`adjcom at volunteers.qiuwen.org`,来信标题请附带“参数设置界面RNRS按钮插件安全报告”字样。
若您确信本插件存在安全问题,请将邮件发送至`adjcom at volunteers.qiuwen.org`,来信标题请附带“参数设置界面 RNRS 按钮插件安全报告”字样。

查看文件

@ -1,40 +1,38 @@
{
"name": "RNRS Hook",
"version": "1.0.0",
"author": [
"Ryan Lane",
"Robert Vogel <vogel@hallowelt.com>",
"Dejan Savuljesku <savuljesku@hallowelt.com>",
"Andrew Garrett <andrew@epstone.net>",
"Qiuwen Baike Contributors"
],
"url": "https://git.qiuwen.wiki/qiuwen/RNRSHook",
"descriptionmsg": "rnrshook-desc",
"type": "other",
"requires": {
"MediaWiki": ">= 1.37.0"
},
"license-name": "GPL-2.0-or-later AND GPL-3.0-or-later",
"AutoloadNamespaces": {
"MediaWiki\\Extension\\RNRSHook\\": "src/"
},
"Hooks": {
"GetPreferences": "PreferencesHook",
"AbuseFilterAlterVariables": "AbuseFilterHooks",
"AbuseFilter-builder": "AbuseFilterHooks"
},
"HookHandlers": {
"PreferencesHook": {
"class": "\\MediaWiki\\Extension\\RNRSHook\\PreferencesHook"
},
"AbuseFilterHooks": {
"class": "MediaWiki\\Extension\\RNRSHook\\AbuseFilterHooks"
}
},
"MessagesDirs": {
"RNRSHook": [
"i18n"
]
},
"manifest_version": 2
}
{
"name": "RNRS Hook",
"version": "1.0.0",
"author": [
"Ryan Lane",
"Robert Vogel <vogel@hallowelt.com>",
"Dejan Savuljesku <savuljesku@hallowelt.com>",
"Andrew Garrett <andrew@epstone.net>",
"Qiuwen Baike Contributors"
],
"url": "https://git.qiuwen.wiki/qiuwen/RNRSHook",
"descriptionmsg": "rnrshook-desc",
"type": "other",
"requires": {
"MediaWiki": ">= 1.37.0"
},
"license-name": "GPL-2.0-or-later AND GPL-3.0-or-later",
"AutoloadNamespaces": {
"MediaWiki\\Extension\\RNRSHook\\": "src/"
},
"Hooks": {
"GetPreferences": "PreferencesHook",
"AbuseFilterAlterVariables": "AbuseFilterHooks",
"AbuseFilter-builder": "AbuseFilterHooks"
},
"HookHandlers": {
"PreferencesHook": {
"class": "\\MediaWiki\\Extension\\RNRSHook\\PreferencesHook"
},
"AbuseFilterHooks": {
"class": "MediaWiki\\Extension\\RNRSHook\\AbuseFilterHooks"
}
},
"MessagesDirs": {
"RNRSHook": ["i18n"]
},
"manifest_version": 2
}

查看文件

@ -1,12 +1,10 @@
{
"@metadata": {
"authors": [
"Qiuwen Baike Contributors"
]
},
"rnrshook-desc": "Real-name registration interface.",
"rnrshook-prefs-label": "Real-name registration: ",
"rnrshook-ui-manage": "Verify/change your mobile phone number",
"rnrshook-prefs-label-desc": "",
"rnrshook-url": "https://rnrs.qiuwen.net.cn/"
}
{
"@metadata": {
"authors": ["Qiuwen Baike Contributors"]
},
"rnrshook-desc": "Real-name registration interface.",
"rnrshook-prefs-label": "Real-name registration: ",
"rnrshook-ui-manage": "Verify/change your mobile phone number",
"rnrshook-prefs-label-desc": "",
"rnrshook-url": "https://rnrs.qiuwen.net.cn/"
}

查看文件

@ -1,12 +1,10 @@
{
"@metadata": {
"authors": [
"Qiuwen Baike Contributors"
]
},
"rnrshook-desc": "{{desc|name=RNRS Hook|url=https://git.qiuwen.wiki/qiuwen/RNRSHook}}",
"rnrshook-prefs-label": "Real-name registration: ",
"rnrshook-ui-manage": "Verify/change your mobile phone number",
"rnrshook-prefs-label-desc": "",
"rnrshook-url": "https://rnrs.qiuwen.net.cn/"
}
{
"@metadata": {
"authors": ["Qiuwen Baike Contributors"]
},
"rnrshook-desc": "{{desc|name=RNRS Hook|url=https://git.qiuwen.wiki/qiuwen/RNRSHook}}",
"rnrshook-prefs-label": "Real-name registration: ",
"rnrshook-ui-manage": "Verify/change your mobile phone number",
"rnrshook-prefs-label-desc": "",
"rnrshook-url": "https://rnrs.qiuwen.net.cn/"
}

查看文件

@ -1,12 +1,10 @@
{
"@metadata": {
"authors": [
"Qiuwen Baike Contributors"
]
},
"rnrshook-desc": "实名制验证界面",
"rnrshook-prefs-label": "实名制验证:",
"rnrshook-ui-manage": "验证/更换手机号",
"rnrshook-prefs-label-desc": "",
"rnrshook-url": "https://rnrs.qiuwen.net.cn/"
}
{
"@metadata": {
"authors": ["Qiuwen Baike Contributors"]
},
"rnrshook-desc": "实名制验证界面",
"rnrshook-prefs-label": "实名制验证:",
"rnrshook-ui-manage": "验证/更换手机号",
"rnrshook-prefs-label-desc": "",
"rnrshook-url": "https://rnrs.qiuwen.net.cn/"
}

查看文件

@ -1,12 +1,10 @@
{
"@metadata": {
"authors": [
"Qiuwen Baike Contributors"
]
},
"rnrshook-desc": "實名制認證介面",
"rnrshook-prefs-label": "實名制認證:",
"rnrshook-ui-manage": "認證/更換行動電話號碼",
"rnrshook-prefs-label-desc": "",
"rnrshook-url": "https://rnrs.qiuwen.net.cn/"
}
{
"@metadata": {
"authors": ["Qiuwen Baike Contributors"]
},
"rnrshook-desc": "實名制認證介面",
"rnrshook-prefs-label": "實名制認證:",
"rnrshook-ui-manage": "認證/更換行動電話號碼",
"rnrshook-prefs-label-desc": "",
"rnrshook-url": "https://rnrs.qiuwen.net.cn/"
}

查看文件

@ -1,4 +1,5 @@
<?php
namespace MediaWiki\Extension\RNRSHook;
use MediaWiki\Extension\AbuseFilter\Hooks\AbuseFilterAlterVariablesHook;
@ -9,18 +10,20 @@ use User;
use RequestContext;
use Wikimedia\IPUtils;
class AbuseFilterHooks implements AbuseFilterAlterVariablesHook, AbuseFilterBuilderHook {
/**
* Determine if a given IP is an internal server node
*
* @param string|null $ip The IP address to check, or null to use the request IP
* @return bool True if an internal server node, false otherwise
*/
public static function isInternalNode( $ip = null ) {
if ( $ip == null ) {
$ip = RequestContext::getMain()->getRequest()->getIP();
}
class AbuseFilterHooks implements AbuseFilterAlterVariablesHook, AbuseFilterBuilderHook
{
/**
* Determine if a given IP is an internal server node
*
* @param string|null $ip The IP address to check, or null to use the request IP
* @return bool True if an internal server node, false otherwise
*/
public static function isInternalNode($ip = null)
{
if ($ip == null) {
$ip = RequestContext::getMain()->getRequest()->getIP();
}
// IPv4 only
$low_ip_1 = '172.20.0.0';
$high_ip_1 = '172.20.0.255';
@ -29,28 +32,29 @@ class AbuseFilterHooks implements AbuseFilterAlterVariablesHook, AbuseFilterBuil
$low_ip_3 = '127.0.0.0';
$high_ip_3 = '127.255.255.255';
$result = (
version_compare ( $low_ip_1, IPUtils::sanitizeIP( $ip ) ) + version_compare( IPUtils::sanitizeIP( $ip ), $high_ip_1 ) === -2 ||
version_compare ( $low_ip_2, IPUtils::sanitizeIP( $ip ) ) + version_compare( IPUtils::sanitizeIP( $ip ), $high_ip_2 ) === -2 ||
version_compare ( $low_ip_3, IPUtils::sanitizeIP( $ip ) ) + version_compare( IPUtils::sanitizeIP( $ip ), $high_ip_3 ) === -2
$result = (version_compare($low_ip_1, IPUtils::sanitizeIP($ip)) + version_compare(IPUtils::sanitizeIP($ip), $high_ip_1) === -2 ||
version_compare($low_ip_2, IPUtils::sanitizeIP($ip)) + version_compare(IPUtils::sanitizeIP($ip), $high_ip_2) === -2 ||
version_compare($low_ip_3, IPUtils::sanitizeIP($ip)) + version_compare(IPUtils::sanitizeIP($ip), $high_ip_3) === -2
);
return (bool)$result;
}
}
/**
* @inheritDoc
*/
public function onAbuseFilterAlterVariables( VariableHolder &$vars, Title $title, User $user ) {
$vars->setVar( 'internal_node', self::isInternalNode() );
return true;
}
/**
* @inheritDoc
*/
public function onAbuseFilterAlterVariables(VariableHolder &$vars, Title $title, User $user)
{
$vars->setVar('internal_node', self::isInternalNode());
return true;
}
/**
* @inheritDoc
*/
public function onAbuseFilter_builder( array &$realValues ) {
$realValues['vars']['internal_node'] = 'internal-node';
return true;
}
}
/**
* @inheritDoc
*/
public function onAbuseFilter_builder(array &$realValues)
{
$realValues['vars']['internal_node'] = 'internal-node';
return true;
}
}

查看文件

@ -7,31 +7,33 @@ use OOUI\ButtonWidget;
use OOUI\HorizontalLayout;
use User;
class PreferencesHook implements GetPreferencesHook {
/**
* @param User $user
* @param array &$preferences
*
* @return bool
*/
public function onGetPreferences( $user, &$preferences ) {
$manageButton = new ButtonWidget( [
'href' => wfMessage( 'rnrshook-url' )->text(),
'label' => wfMessage( 'rnrshook-ui-manage' )->text()
] );
class PreferencesHook implements GetPreferencesHook
{
/**
* @param User $user
* @param array &$preferences
*
* @return bool
*/
public function onGetPreferences($user, &$preferences)
{
$manageButton = new ButtonWidget([
'href' => wfMessage('rnrshook-url')->text(),
'label' => wfMessage('rnrshook-ui-manage')->text()
]);
$control = new HorizontalLayout( [
'items' => [ $manageButton ]
] );
$control = new HorizontalLayout([
'items' => [$manageButton]
]);
$preferences['rnrshook-module'] = [
'type' => 'info',
'raw' => true,
'default' => (string)$control,
'label-message' => 'rnrshook-prefs-label',
$preferences['rnrshook-module'] = [
'type' => 'info',
'raw' => true,
'default' => (string)$control,
'label-message' => 'rnrshook-prefs-label',
'help-message' => 'rnrshook-prefs-label-desc',
'section' => 'personal/info',
];
return true;
}
}
'section' => 'personal/info',
];
return true;
}
}