SweetPotato::Plagger このページをアンテナに追加 RSSフィード

2007-07-01

[] Publish::FTPでは越えられないSOCKSの壁をFFFTPの力を借りて越える  Publish::FTPでは越えられないSOCKSの壁をFFFTPの力を借りて越える - SweetPotato::Plagger を含むブックマーク はてなブックマーク -  Publish::FTPでは越えられないSOCKSの壁をFFFTPの力を借りて越える - SweetPotato::Plagger  Publish::FTPでは越えられないSOCKSの壁をFFFTPの力を借りて越える - SweetPotato::Plagger のブックマークコメント

いくつか加筆訂正。

あと,実際に運用してみたところ,少なくとも私の環境では,ミラーリングアップロード時にFFFTPが固まってしまう問題が起きやすいことが分かった。どうしたものか。

きっかけ

現在の私にはちょっと理由があって,Plaggerが使える環境がFirewallの中にしかない状況にある。そしてFirewallの外に出るためには,HTTPならHTTPプロキシが用意されているのだが,それ以外のプロトコルについてはSOCKSサーバしか用意されていない。

このSOCKSサーバが曲者で,通常のNet::FTPではどんなにオプションを指定しても越えることができないらしく,越えるには専用のSOCKSライブラリをリンクしてperlをコンパイルしなければならないらしい。

この事実は「CustomFeed::GoogleCalendar→Publish::Feed→Publish::FTPで最新イベントをフィード配信だ!」みたいなことをもくろんでいた私の前に立ちはだかった。Linux環境ならまだしも,Windows環境でActivePerlを使っている自分にはきつい話だ。自宅鯖なんて管理が面倒なものを持つ気にもならない。

そこで考えたのが,FFFTPを利用したFTPアップロード。実はFFFTPはコマンドラインからも利用することが可能で,しかもSOCKSに対応している。perlの再コンパイルよりはるかに手軽だ。

FFFTPの設定

まず,FFFTPのメニュー「オプション」→メニュー「環境設定」→タブ「FireWall」からSOCKSの設定をする。この辺の設定はネットワーク管理者に聞こう。

次に接続ホストの設定。基本的にいつも通りだが,以下の3点に気をつける。

  1. 「基本」タブの「ホストの設定名」をメモっておく(以下「myhost」とする)
  2. 「基本」タブの「ローカルの初期フォルダ」「ホストの初期フォルダ」は,それぞれアップロードするファイルが置いてあるローカルの/置かれるホストのフォルダを指定しておく。
  3. 「拡張」タブの「FireWallを使う」チェックボックスをオンにしておく。

そしてFFFTPが存在するディレクトリにPATHを通す。これはWindowsの環境変数の設定から行う。

これで準備完了。コマンドラインから以下のように入力すると,FFFTPはmyhostの設定を使用して(-s "myhost")ミラーリングアップロードを行う(-m)。これはローカルとホストのフォルダの内容を同期させるものだ。

ffftp -s "myhost" -m

確認メッセージが出るので,内容をよく確認した後にアップロードを行おう。アップロードが終わったらFFFTPも終了しよう。

ミラーリングの対象となるフォルダは,先ほど接続ホストの設定で指定したローカルとホストのフォルダになる。したがって,このローカルフォルダをPublish::FeedやPublish::iCalなどの出力先としておけば,Plagger実行後に上記のFFFTPコマンドですかさずファイルをアップロードできるわけだ。

バッチ化

とは言っても,Plagger実行毎にコマンドを打つのも面倒なので,バッチ処理ができるようにしておこう。バッチ処理のためには以下の内容のファイルを用意する。ここではPlaggerのコンフィグファイルを仮にconfig.yamlとしており,このファイルはバッチファイルと同じディレクトリにあるものとする。

CALL plagger -c config.yaml
CALL ffftp -s "myhost" -m -f -q

FFFTPの起動にさらにオプションが追加されているが,こうすると確認メッセージが表示されず強制的にミラーリングアップロードが行われ(-f),アップロード終了時にFFFTP自身も終了する(-q)。

あとはこのバッチファイルをwronに登録して定期的に実行すれば,いつでもできたて新鮮なフィードが得られるってわけだ。

この技を使って,近日中に本家ブログにカレンダーのフィードを設置する予定。

nyarla-netnyarla-net2007/07/01 10:27自分も同じ名前で似たようなプラグイン作ってます。中身が微妙に違いますが。
http://nyarla.net/blog/plagger24

SweetPotatoSweetPotato2007/07/01 10:47しまった!車輪の再生産になっちゃうかもしれない!
nyarla-netさんは比較にcmpを使ってらっしゃいますが,これは日付(date)での整列も可能ですか?

nyarla-netnyarla-net2007/07/01 12:57多分できないかと。
僕の作ったプラグインの場合、指定されたプロパティを単純に比較しているだけなので、そのあたり込み入ったことが出来ないと思います。

まあSweetPotatoさんのか僕のかどちらかをベースにしてくっつけてしまえば良いと思いますが。

トラックバック - http://plagger.g.hatena.ne.jp/SweetPotato/20070701