ArchCN wiki 伺服器配置

出自Arch Linux 中文社区 维护者 Wiki
跳至導覽 跳至搜尋

MediaWiki 配置

GitHub 登錄

使用修改版的 OAuth2_Client 擴展。修改如下:

diff --git a/SpecialOAuth2Client.php b/SpecialOAuth2Client.php
index a2c32e8..a483479 100644
--- a/SpecialOAuth2Client.php
+++ b/SpecialOAuth2Client.php
@@ -116,6 +116,23 @@ class SpecialOAuth2Client extends SpecialPage {
                }
 
                $resourceOwner = $this->_provider->getResourceOwner($accessToken);
+
+                $request = $this->_provider->getAuthenticatedRequest(
+                  $this->_provider::METHOD_GET,
+                  'https://api.github.com/user/orgs', $accessToken);
+                $orgs = $this->_provider->getResponse($request);
+                $found = false;
+                foreach($orgs as $org) {
+                  if($org['login'] === 'archlinuxcn') {
+                    $found = true;
+                    break;
+                  }
+                }
+                if(!$found) {
+                  throw new MWException('You are not in our group.');
+                  die();
+                }
+
                $user = $this->_userHandling( $resourceOwner->toArray() );
                $user->setCookies();
 
@@ -128,7 +145,7 @@ class SpecialOAuth2Client extends SpecialPage {
                        $wgRequest->getSession()->save();
                }
 
-               if( !$title instanceof Title || 0 > $title->mArticleID ) {
+               if( !$title instanceof Title || 0 > $title->getArticleID() ) {
                        $title = Title::newMainPage();
                }
                $wgOut->redirect( $title->getFullURL() );

後一處修改來自 GitHub pull#9

注意:移動版上看不到登錄按鈕。可直接訪問 Special:OAuth2Client/redirect 來登錄。

移動版支持

使用 MobileFrontend 擴展及 Minerva_Neue 皮膚。

相關配置:

wfLoadExtension('MobileFrontend');
$wgMFAutodetectMobileView = true;

wfLoadSkin('MinervaNeue');
$wgMFDefaultSkinClass = 'SkinMinerva';

可視化編輯器

啟用自帶的 VisualEditor 擴展。相關配置:

wfLoadExtension('VisualEditor');
$wgDefaultUserOptions['visualeditor-enable'] = 1;
$wgDefaultUserOptions['visualeditor-enable-experimental'] = 1;
$wgVisualEditorNamespaces = array_merge($wgContentNamespaces, array(
  NS_USER, NS_USER_TALK, NS_CATEGORY, NS_PROJECT));

備份

腳本位於 /etc/cron.daily 下,由 dcron 執行。備份文件位於 /root/wiki-backups。腳本源碼:https://github.com/archlinuxcn/misc_scripts/blob/master/aux-scripts/backupwiki

lilydjwg 每周會將最新的備份拖回她本地。