smbwebclient

怒りを込めて書く。おっさんにはWebもSMBも一緒だ。SMBで部内に見せているフォルダに、地理的にもなにもかも離れた部署からファイルを置きたいんだと。VPN接続の自宅からもだと。いい度胸だ。http/sは認証を作ってはあるけれども、SMBはありえねえよ。でもファイル置くんだって。
https経由のWebDAVでなんとかしようかね、とMさんと話していたのだが、機種依存文字にひっかかると文字化けしてあらぬファイルも消したりするかもしんまい、と言う話を管理部門で聞いて、ちょっと引いた。本当かどうかわからんが、おっさんってのは丸付き数字がなにより好きだったりするでしょう。あと目が弱ってる癖に小さめのプロポーショナルフォントを使うから、半角カナだか全角だか分かんないんだよね。その辺をファイル名に使われるとなあ。更に、WebDAVを使うとなると「ねっとわーくフォルダ」な訳だけども、SMBとWebDAVの違いを誰があのロートルに教えるのか。
そういう訳で代替案を探していてこれ(http://smbwebclient.sf.net/)を見つけた。web経由のSMBクライアント。売りはPHPで1ファイルのみ。でも日本語対応。必要な他のファイルは全て内部にbase64エンコードで持っているあたりに気合いを感じる。つーかやりすぎ。SMBのアクセスは全部smbclient経由。機種依存や日本語ファイル名は、作れるけど消せない。消えるよりずっとマシだ。
ところで、今の2.5を使うとファイル名が文字化けするが、とりあえずこれで直る。

--- smbwebclient-2.5.php	2005-02-19 02:35:09.000000000 +0900
+++ smbwebclient-2.5.php.patched	2005-02-19 02:38:07.000000000 +0900
@@ -742,7 +742,7 @@
 		$icon = $this->Icon($data['type']);
 		$comment = @$data['comment'];
 		if ($data['type'] <> 'printjob') {
-			$filelink = $this->Link(htmlentities($file), $this->FromPath($file));
+			$filelink = $this->Link(htmlentities($file, ENT_COMPAT, $this->cfgCharset), $this->FromPath($file));
 		}
 		$lines .= "<tr>".
 			"<td class=?"checkbox?">{$check}</td>".
@@ -1473,4 +1473,4 @@
 	$swc->Run(@$_REQUEST['path']);
 }
 

作者にメールで送っておいたので、2.6では全体に直ると思う。
いやそれにしても動いたけれど、どうすんだロートル。Mさん任せました。オレ絶対やらないからね(断言)。