要話說從頭的話實在有點囉唆,總之這回實在是很慘。
有在注意快閃讀書會活動的話,大概會知道我們用這邊的論壇開了一個版來討論,但是另外架設了 mediawiki 來作為活動紀錄的官網。
事情就壞在這長草的 wiki 上面。雖然一開始就為了預防破壞,設定只有註冊會員才能編修網頁,路人只能觀看。但不知道是機器人還是鍥而不捨的手動怪 troll,這會硬是讓我發現有會員製造了七八百頁的垃圾頁面,而且會讓我發現還是這東西好狗膽竟然把首頁的內容給全部刪除,只剩空白。
很可惡,超級可惡,完全想不出來改人家首頁到底有什麼好處。我發現完整狀況(包括那幾百頁垃圾)的時候氣到差點發抖啊我的媽呀。(不過這家伙改首頁對我的好處是因為監控的頁面被修改,結果才發現這條混蛋。)
總之讓我花了一整晚加一整上午的時間來處理。結果的部份,可以簡單看快閃官網使用說明的註冊帳號部份,或者最近兩星期會置頂的論壇公告。這邊我會比較詳細的紀錄一下這次的事件做了哪些處理,以供將來參考。
首先發現的第一時間,當然是永久封鎖該用戶。這是 mediawiki 原生的功能,封鎖的頁面上寫封鎖用戶或 IP,雖然我希望可以一起鎖掉,不過這種事情不管是 ID 或 IP 其實都是鎖不勝鎖的,所以我決定這次必須根本的處理註冊和權限的問題。只不過必須先復原破壞。
因為建立的垃圾頁面數量太多,一個個刪除根本不合算,所以首先找了可以批次刪除的外掛:Extension:Nuke。
這邊要先來講一下這種開放式軟體對我這種業餘摸兩下,連玩家都稱不上的人的好處和壞處。好處是,想要什麼功能,如果大家都有這個需求,就會有人幫忙做出來。壞處是,同一個功能會有一大堆不同的解法,而且擴充和原程式版本之間的相容性有時候不是那麼一目了然,需要自己試誤。
所以可以大量刪除文章的外掛其實也不只一個,總之把找到的都看一下,挑選新的、官網介紹裡沒有警告的,版本支援看起來 ok 的來用。上傳外掛檔案到 Extensions 資料夾裡面之後,按照官網說明修改 LocalSettings.php,現在再回到前台就可以看到特殊頁面列表裡有一個大量刪除了。Nuke 可以直接用創建者名稱來搜尋頁面,一次刪除。
接下來要預防再發生類似的事件,所以要修改使用者權限。根據 mediawiki 官網的使用手冊,這部份可以在 LocalSettings.php 裡修改。方法是
$wgGroupPermissions[‘群組名稱’][‘功能’] = true;//允許
$wgGroupPermissions[‘群組名稱’][‘功能’] = false;//禁止
如果要新增新的群組,就直接在群組明稱的位置寫新群組的名字就好了。所以我封鎖了 user(一般註冊會員)群組的建立頁面功能,另外成立參加者群組。把相關的權限開在參加者群組,然後再把已知的讀書會朋友們加進這個群組。中間出了一點狀況是我誤以為以前裝的可顯示 google 日曆的外掛失效了,想找新的外掛。想不到新的 widgets 外掛反而不能使用,所以摸了半天最後又裝回古老的 GoogleCalendar 外掛。
到這邊花了一個晚上,一邊追殺蚊子一邊可憐兮兮的進行。(淚)
第二天早上起來想找找看是否有什麼外掛可以把論壇頁面內嵌進去,不過沒有找到。倒是找到了 Extension:PHPBB/Users Integration 可以整合兩邊的使用者。老實說這外掛看起來比之前裝過的都複雜些,看了很久,又到處挖了其它整合外掛看起來都有點危險(實驗中之類連 beta 都還不到的狀況)最後想想如果將來人多(←妄想)才裝膜合會更困難,所以還是決定裝了。
這個外掛 LocalSettings.php 要改比較多。
$wgAuth_Config[‘WikiGroupName’] = ‘Wiki’;
//是將來擁有 wiki 會員權限的 phpBB3 群組名稱,預設是 Wiki,可容許多個群組。
$wgAuth_Config[‘UseWikiGroup’] = true;
//改成 false 的話就是所有 phpBB3 的會員都可以使用 wiki,反之則需要前一行指定的群組。
$wgAuth_Config[‘UseExtDatabase’] = false;
//兩者在同一資料庫就否,否則就改 true,並且取消下面幾行 phpBB 資料庫相關資料的註解,還要填進正確的資料。
//$wgAuth_Config[‘MySQL_Host’] = ‘localhost’; // phpBB MySQL Host Name.
//$wgAuth_Config[‘MySQL_Username’] = ‘username’; // phpBB MySQL Username.
//$wgAuth_Config[‘MySQL_Password’] = ‘password’; // phpBB MySQL Password.
//$wgAuth_Config[‘MySQL_Database’] = ‘database’; // phpBB MySQL Database Name.
$wgAuth_Config[‘UserTB’] = ‘phpbb3_users’;
$wgAuth_Config[‘GroupsTB’] = ‘phpbb3_groups’;
$wgAuth_Config[‘User_GroupTB’] = ‘phpbb3_user_group’;
$wgAuth_Config[‘PathToPHPBB’] = ‘../phpbb3/’;
//最後幾行是 phpBB 資料庫裡相關的表頭,一般預設是 phpbb_XXX,所以原本沒改過的話就把 3 拿掉即可。最後一行則填兩者間的相對位置。
這樣一來,只有論壇裡 Jellicles 群組的人可以編輯維基,而當中又只有參加者等級的才可以創立頁面。
當然這中間還遇到一些問題是 phpBB3 的帳號有暗地的編號,所以可以改名字而還是同一個人,維基雖然也有暗地的編號,不過原則上是認名字行事的。所以這部份就要提醒使用者注意了。另外由於 mediawiki 這邊只認名字,所以如果 phpBB 這邊改名的話,就會在 mediawiki 那邊變成一個全新的帳號。也很巧的我找到了 Extension:User Merge and Delete 這個外掛來處理這個狀況,這樣之後有人想改暱稱的時候,也可以把帳號合併了。當然還有一些使用限制,比如自己不能合併自己的帳號,只能處理別人,另外可設定的選項包括「不能被合併的群組」(預設某些管理員階層也是不能合併刪除的)。
最後其實今天下午我還把 mediawiki 從 1.16.5 升級成 1.18.1,升級很快,不過沒想到佈景主題的部份也被動到了,改 CSS 改了很久。(淚)