5 Jan 2011

Upload file dari URL melalui proxy pada mediawiki

Saya dibuat bingung oleh dokumentasi mediawiki yang sangat minimum, bahkan nyaris tidak ada. Pencarian dengan google pun tiada hasil.

Begini ceritanya, bila anda ingin fitur upload file dari URL aktif, maka harus diset $wgAllowCopyUploads = true; (baca di sini). Permasalahnnya adalah server anda ada di belakang proxy, jadi menurut petunjuk $wgHTTPProxy harus diset ke alamat proxy server. Sampai disini saja kita sudah bingung bagaimana format penulisan proxy terutama bagi yang awam dengan environmet operating system.

Setelah coba-coba mengisi variabel $wgHTTPProxy dengan format standar environment linux ternyata tidak berhasil. Alamat proxy dengan format [protocol]://[address]:[port] maupun [protocol]://[user]:[password]@[address]:[port] (bila memerlukan authentication) pun sama saja. Padahal perintah yang memerlukan koneksi seperti wget berjalan dengan mulus.

Akhirnya tersangka terakhir tertuju pada script mediawiki sendiri. Setelah sedikit menganalisa, akhirnya ketemu juga. Caranya adalah memodifikasi file includes/upload/UploadFromUrl.php. Cari fungsi curlCopy() dan tambahkan baris sebagai berikut:

curl_setopt( $ch, CURLOPT_WRITEFUNCTION, array( $this, 'uploadCurlCallback' ) );
/* tambahkan disini */
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 0);
curl_setopt($ch, CURLOPT_PROXY, 'http://192.168.5.2:3128'); //sesuaikan alamat + port proxy-nya
/* 0_0 */
curl_exec( $ch );

CURLOPT_HTTPPROXYTUNNEL diset ke 0 karena selalu terdapat error: Received HTTP code 403 from proxy after CONNECT. Mungkin anda punya kasus yang berbeda, silakan dicoba apakah perlu atau tidak.

FYI, MediaWiki menggunakan versi 1.16.1 (versi terbaru pada saat menulis ini).

Selamat mencoba.