From 350eb81a41b8ffa692dca168c84c51be9c38eb07 Mon Sep 17 00:00:00 2001 From: WaitSpring Date: Sat, 4 Mar 2023 11:45:17 +0800 Subject: [PATCH] format Signed-off-by: WaitSpring --- README.md | 4 +-- SECURITY.md | 2 +- extension.json | 78 ++++++++++++++++++++-------------------- i18n/en.json | 22 ++++++------ i18n/qqq.json | 22 ++++++------ i18n/zh-hans.json | 22 ++++++------ i18n/zh-hant.json | 22 ++++++------ src/AbuseFilterHooks.php | 68 ++++++++++++++++++----------------- src/PreferencesHook.php | 52 ++++++++++++++------------- 9 files changed, 144 insertions(+), 148 deletions(-) diff --git a/README.md b/README.md index 1c62850..fc4bd52 100644 --- a/README.md +++ b/README.md @@ -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_。 diff --git a/SECURITY.md b/SECURITY.md index 4802047..f75be2a 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,3 +1,3 @@ # 反馈安全问题 -若您确信本插件存在安全问题,请将邮件发送至`adjcom at volunteers.qiuwen.org`,来信标题请附带“参数设置界面RNRS按钮插件安全报告”字样。 +若您确信本插件存在安全问题,请将邮件发送至`adjcom at volunteers.qiuwen.org`,来信标题请附带“参数设置界面 RNRS 按钮插件安全报告”字样。 diff --git a/extension.json b/extension.json index 8bd8d2c..ecfd7fc 100644 --- a/extension.json +++ b/extension.json @@ -1,40 +1,38 @@ -{ - "name": "RNRS Hook", - "version": "1.0.0", - "author": [ - "Ryan Lane", - "Robert Vogel ", - "Dejan Savuljesku ", - "Andrew Garrett ", - "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 -} \ No newline at end of file +{ + "name": "RNRS Hook", + "version": "1.0.0", + "author": [ + "Ryan Lane", + "Robert Vogel ", + "Dejan Savuljesku ", + "Andrew Garrett ", + "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 +} diff --git a/i18n/en.json b/i18n/en.json index 8904a7b..5d8662d 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -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/" -} \ No newline at end of file +{ + "@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/" +} diff --git a/i18n/qqq.json b/i18n/qqq.json index 16c9853..25da957 100644 --- a/i18n/qqq.json +++ b/i18n/qqq.json @@ -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/" -} \ No newline at end of file +{ + "@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/" +} diff --git a/i18n/zh-hans.json b/i18n/zh-hans.json index 53e6b14..f307eb2 100644 --- a/i18n/zh-hans.json +++ b/i18n/zh-hans.json @@ -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/" -} \ No newline at end of file +{ + "@metadata": { + "authors": ["Qiuwen Baike Contributors"] + }, + "rnrshook-desc": "实名制验证界面", + "rnrshook-prefs-label": "实名制验证:", + "rnrshook-ui-manage": "验证/更换手机号", + "rnrshook-prefs-label-desc": "", + "rnrshook-url": "https://rnrs.qiuwen.net.cn/" +} diff --git a/i18n/zh-hant.json b/i18n/zh-hant.json index cc82d55..63fda45 100644 --- a/i18n/zh-hant.json +++ b/i18n/zh-hant.json @@ -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/" -} \ No newline at end of file +{ + "@metadata": { + "authors": ["Qiuwen Baike Contributors"] + }, + "rnrshook-desc": "實名制認證介面", + "rnrshook-prefs-label": "實名制認證:", + "rnrshook-ui-manage": "認證/更換行動電話號碼", + "rnrshook-prefs-label-desc": "", + "rnrshook-url": "https://rnrs.qiuwen.net.cn/" +} diff --git a/src/AbuseFilterHooks.php b/src/AbuseFilterHooks.php index 5785bc3..8794132 100644 --- a/src/AbuseFilterHooks.php +++ b/src/AbuseFilterHooks.php @@ -1,4 +1,5 @@ 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; - } -} \ No newline at end of file + /** + * @inheritDoc + */ + public function onAbuseFilter_builder(array &$realValues) + { + $realValues['vars']['internal_node'] = 'internal-node'; + return true; + } +} diff --git a/src/PreferencesHook.php b/src/PreferencesHook.php index 819d84f..8166b87 100644 --- a/src/PreferencesHook.php +++ b/src/PreferencesHook.php @@ -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; - } -} \ No newline at end of file + 'section' => 'personal/info', + ]; + return true; + } +}