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

查看文件

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

查看文件

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

查看文件

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

查看文件

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

查看文件

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

查看文件

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