2016/03/09

Coleman 200A Lantern

こちらは1960年代に作製されたビンテージコールマンの赤いランタン。
いわゆるバースデーランタンという事で自分の産まれた年に生産されたものを探して入手したもの。
本当は月まで合わせたかったのだが、とある資料によると産まれた月には生産されていなかった様なので、 とりあえず産まれた年に生産されたランタンで妥協している。
こちらもアメリカのオークションサイト eBay で入手したのだが年代品の割に状態が良くて普段使いも可能 (というか入手してからは普段からキャンプに持参して普通に使い倒している)。
現在は多少なりとも虫よけの効果を期待してオプション品のアンバー色のグローブを装着している (効果の程は…??)。

色はバーガンディではなく明るめの赤でベンチレータは高いタイプ、本体のロゴステッカーは枠のないタイプとなっているのだが、 この手の細かな部分は前のオーナーが変更している場合もあるのでオリジナルではない可能性もある。
コレクターではないし、製造年月は底面に刻印されているのでタンクが交換されていない限りは間違っていないと思われる。
本体とは別に入手した同年代の「ガルウィングケース」に格納してキャンプに携行している。

細かい部分は色々と改良されているが基本的な構造は現行のランタンとほぼ同じなので当時から完成度の高さが伺える。
ただし現行品とは異なりメインの燃料バルブ以外にチップクリーナーと呼ばれる小型のバルブが付いていて、 点火や消火の時はこのチップクリーナも操作する必要がある。
特に点火時の操作が若干複雑で、着火方法やタイミングを間違えると グローブの内部が炎の包まれる「火だるま」状態となるので慣れるまでは点火するときは注意が必要だろう。

Image: RIMG0836.JPG

ビンテージランタン
Image: RIMG0838.JPG

チップクリーナ
Image: RIMG0058.JPG

アンバーのグローブを装着
Image: RIMG0060.JPG

ガルウィングケース

交換部品

マントル 21A102J (21A型が利用可能)
ジェネレータ 200A5891
燃料バルブ 200-6571
ポンプ 242J5201 → 3000000455(220A6201)
グローブ R690B051 (#550)
チェックバルブ 200-6381 (118mm)

200A の点火方法

点火
  1. 燃料を入れる
  2. チップクリーナーを数回転させてレバーを上向きの状態で止める
  3. ポンピングする
  4. メインのバルブを 1/4 回転くらい開ける
  5. チップクリーナを徐々に下向きに回転させ燃料が噴出される音が聞こえたら再び閉じる
  6. メインのバルブも閉めて追加ポンピングをしながら30秒程度放置する
  7. メインのバルブを 1/4 回転くらい開ける
  8. マントル付近に火を近づける
  9. チップクリーナを 1/4 回転までの範囲で徐々に開き点火した所で止める
  10. ジェネレータが温まるまでチップクリーナやバルブを微調整する
  11. 必要に応じて追加ポンピング
  12. ジェネレータが温まると燃焼音が「シュゴー」に変化するのでチップクリーナを全開にする
  13. チップクリーナーで明るさの調整を行う
消火
  1. メインのバルブを閉じる
  2. 消火できたらチップクリーナを閉める
点火する場合は最初にチップクリーナを回転させる時に燃料が噴出する位置を大体把握しておき、 実際に着火する時その位置付近でタイミングよく着火する様にすれば「火だるま」状態を回避できる。

Image: 200-6571.jpg

チップクリーナのある燃料バルブ
Image: wrench.jpg

純正ではないがチェックバルブの交換に威力を発揮するレンチ
このレンチはコネクティングロッドでチェックバルブを固定する事でねじ山をなめる事なく 固着したチェックバルブも外せる様に設計されていて大変便利。

2016/03/08

Coleman Feather Lantern

このランタンはコールマンのランタンの中でも最も小さい種類だと思う。
1マントルのコンパクトなタイプなので補助的な明かりとして料理スペースなどの照明などに重宝している。
コールマンの純正ではフロストタイプのグローブは発売されていないのだが、 CAMPINGAZ の Straight globe M (80x80mm) が殆どピッタリのサイズなので流用している。
フロストタイプのグローブだと食事の時に食卓の照明としても眩しすぎずに最適な明るさになる。 コンパクトでテーブルの上に設置してもそれほど邪魔にならないのも良い。

就寝時はバルブを絞り目にして常夜灯替わりにテントの前に置いておく様な使い方もできる。

Image: IMG_3245.JPG

1マントルのシンプルな構造
Image: IMG_3249.JPG

285 ランタンと並べるとサイズの違いがわかる
Image: RIMG0049.JPG

CAMPINGAZ のフロストグローブ装着

ポンプキャップは新型の樹脂製。
ポンプカップは新型のネオプレーンタイプ。

交換部品

マントル 20-102J (20型が利用可能)
ジェネレータ 222A2991 → 226-2991
ポンプ 400E5211
グローブ R136-048J (#2)
チェックバルブ 200-6381 (118mm)

2016/03/07

Coleman 285A Dual Fuel Lantern

こちらはコールマンの代名詞とも言えるランタン (コールマンのマークもランタンだしね)。
2マントルタイプなのでとても明るくテントサイトを照らしてくれるので、 主にサイトのメインの明かりとして大活躍している。

このランタンもジェネレータ交換なしでホワイトガソリン以外に無鉛ガソリンも利用できるタイプ。 とは言ってもやはりジェネレータ詰まり等発生するそうなので無鉛ガソリンはあくまで緊急避難的使い方になると思う。

ランタンはマントルと呼ばれる部分を発光させているのだが、マントルは布製の袋の様になっていて、 使用する前にあらかじめ燃やしておく必要がある (これを「カラ焼き」と呼ぶらしい)。 カラ焼きされたマントルは言ってみれば灰の様な物なので非常に脆くなっている。 ちょっとした衝撃でも崩れてしまうので扱いは要注意。 キャンプの時はマントルだけは必ず予備を持って行った方が良いと思う。

バルブを全開にすると新聞も読める程に明るくなるが、その状態でも7時間程度は燃料がもつので2泊程度のキャンプなら燃料の補給は不要で便利。 明るすぎて他のサイトに迷惑をかけない様に注意する必要があるので、最近はコールマン純正のリフレクター (日本未発売品 2000008533) を利用している。

Image: IMG_3246.JPG

明るさの調整も簡単
Image: IMG_3247.JPG

2マントルタイプ
Image: RIMG0048.JPG

リフレクターを装着

ポンプキャップは新型の樹脂製。
ポンプカップは標準は新型のネオプレーンタイプなのだが、純正の革製ポンプカップに変更する事でポンピングの感触が随分と改善される。

交換部品

マントル 21A102J (21A型が利用可能)
ジェネレータ 285-5891
ポンプ 242J5201 → 3000000455(220A6201)
グローブ R690B048J (#4)
R288-046J (フロステッドタイプ)
R285-043J (フロステッドタイプ スペシャルバージョン)
チェックバルブ 200-6381 (118mm)

2016/03/05

Primus Omni Lite Ti

今回はコールマンではなく Primus 社の Omni Lite シリーズのチタンモデル Omni Lite Ti。
この製品は付属のジェットを交換する事でホワイトガソリン、無鉛ガソリン、ケロシン (灯油)、軽油をはじめとして OD 缶のガスまで利用できてしまう。 一般的に入手可能な燃料であれば何でも使えるので緊急時にはとても頼りになるストーブだ。
しかも本体はチタン製で折りたたみ可能なので、丈夫でかつ軽量コンパクトなストーブとなっていて普段から車に搭載して携行しても良い。

燃料側に燃料用バルブ、本体側に火力調整用のバルブがあるので火力調整も簡単に可能で炊飯も楽にできる (やはり美味しいご飯が炊けるのは大切)。
ガスで利用する場合は OD 缶をコネクタに接続して燃料側のバルブを開くだけですぐ着火するので、その後は本体側のバルブで火力調整を行う。
液体の燃料を利用する場合はコールマンと違って余熱が必要になるが、 それほど面倒ではないので「一種の儀式」と割り切って手間を愉しむのも良いと思う。
ただし燃焼音は非常に大きく轟音と言っても過言ではないレベルなので夜遅い時間のキャンプ場では使用をためらってしまう。

ジェットは

  1. ガス用
  2. ホワイトガソリン用
  3. ケロシン用
と3種類付属しているが、今の所ガスとホワイトガソリンではジェットを交換せずに利用できている。

Image: RIMG0829.JPG

液体燃料用のタンクを接続
Image: RIMG0831.JPG

チタン製の本体
Image: RIMG0832.JPG

OD 缶を接続

液体燃料での使用方法

点火
  1. タンクに燃料を入れてホースと連結する
  2. 20回程度ポンピングする
  3. タンクの ON の文字を上にして水平にする
  4. 燃料側のバルブを全開にする
  5. 本体側のバルブを半回転ほど回して数秒待ちバーナー下部のカップに燃料を補給する
  6. 点火する
  7. 40秒程度燃焼させると炎が弱くなるので本体側のバルブを開く
  8. 青い炎で燃焼すれば OK
  9. 赤や黄色い炎の場合は余熱が不足しているので本体側のバルブを閉じで余熱を続ける
消火
  1. タンクの OFF の文字を上にして水平にする
  2. 1分程度で自動で消火する
  3. 燃料側のバルブを全閉にする
  4. 本体側のバルブも全閉にする

2016/03/04

Coleman 533 Dual Fuel Stove

508 と基本的な構造は同じだけど燃料としてホワイトガソリンと無鉛ガソリンが利用できるタイプ。
何故か日本国内では正規品として販売されていないので平行輸入品を購入した。
ジェネレータの交換なしでホワイトガソリンと無鉛ガソリンが利用できるらしいが、 無鉛ガソリンを使うとジェネレータが詰まったりするので使用は推奨されておらずあくまでも緊急時用らしい。
実際に無鉛ガソリンで燃焼させた事がないのでいつか燃焼させてみたい。

最近の製品だから当然1レバーなので火力調整はすこしだけ難しい (できない事はないけど)。
以前は 508 と2台でキャンプに行っていたが 400A を入手して以来出番がなく家で待機している (ディーゼル車に乗り換えた事で無鉛ガソリンが手元になくなってしまった事も出番が減った理由の一つ)。 たまには使おうとは思うのだが2レバーの便利さを知ってしまうと1レバーの出番は少ない。

Image: RIMG0802.JPG

Dual Fuel モデルは本体がシルバー
Image: RIMG0804.JPG

2011年07月製造
Image: RIMG0811.JPG

純正のスクリーンを装着

キャンプ場などアウトドアでストーブを利用する場合は基本的にスクリーンを装着して利用している。
コールマン純正のスクリーンはスポーツスター系の 508 や 533 だけではなく 400A にも対応しているので1個持っていると便利。

ポンプキャップは新型の樹脂製。
ポンプカップも新型のネオプレーンタイプ。
コールマンの純正ポンプはアルミと樹脂のキャップがどちらも付属しているので 508 や 400A と同じものが利用できる。
1レバーなのでバルブはクリーナーフックのあるタイプとなっている。

交換部品

ジェネレータ 533-5891
ポンプ 242J5201 → 3000000455(220A6201)
バルブ 508A5571
チェックバルブ 200-6381 (118mm)

2016/03/03

Coleman PEAK1 400A Stove 2 Lever

バーナー部分は 508 と共通でタンク部分がより小型化されたのがこちらの 400A ストーブ。
小型のタンクに加えて折りたたみタイプの脚が採用されていてスポーツスターよりも随分とコンパクトで携行性に優れている。
一時期は車のトランクに常時携帯していて適切な場所があればパーコレータで珈琲を淹れて飲んだりしていた。
この 400A はアメリカのオークションサイト eBay で落札したのだが、鍋にも利用できる (使いたくないけどね) アルミケース、 鍋として使う時のためのアルミ製ハンドルなどが付属していた。
前述の通りタンク以外の部品は2レバーの 508 と殆ど共通なのでメンテも楽だし、 使い勝手や火力は 508 と同じなのでこちらも普段からとても重宝している。
現行機種のフェザーストーブと殆ど同じデザインなのだが、有鉛ガソリンには対応しておらず、 折りたたみの脚に穴が開いていないなど細かな差がある。
こちらも2レバータイプなので火力調整が容易にできるのが嬉しい。
508 と比較するとコンパクトな分だけ燃焼時間が若干短いがキャンプでは 508 と並べて併用しているのであまり気にならない。

Image: RIMG0792.JPG

コンパクトな本体
Image: RIMG0793.JPG

付属のアルミケースとハンドル
Image: RIMG0038.JPG

1988年8月製造

ポンプキャップは旧式のアルミ製。
ポンプカップはこちらも純正の革製ポンプカップに変更している。

交換部品

ジェネレータ 400-5891 → 508-5891
ポンプ 400E5211
バルブ 400-5571 → 400B5571
チェックバルブ 400-6381 (96mm)

バーナー周りの交換部品は 508 と共通な部品も多いのでメンテナンス性は非常に高いが、 チェックバルブとポンプはタンクが小型のために 508 に比べて短いタイプとなる。

Image: 508-5891.jpg

508 / 400A で共用の2レバー式ジェネレータ

Image: 508-5571.jpg

フック無しで真鍮製フードチューブのバルブは偶然入手したので大切に保管している。

Image: 200-6381.jpg

ゴム製の O リングを装着したチェックバルブ

2016/03/02

Coleman 508 Stove 2 Lever

最近当ブログの更新が滞っていたのでキャンプ道具の自慢紹介など…

コールマンと言えばまず思い浮かぶのがシングルストーブの 508。
その 508 の中でもこれは火力調整の可能な2レバータイプなので非常に重宝している。

このタイプのシングルバーナーはスポーツスターII (508A) として今でも新品が製造販売されているが、 現行のタイプは燃料開閉用のレバーだけなので特に弱火の火力調整が困難で炊飯時などに結構困る。 ところが旧式の2レバータイプは火力調整専用のレバーがあるので強火からとろ火まで調整が非常に容易である。
コールマンの代名詞とも言えるポンピングのおかげで余熱が不要だし火力調整も思いのままなので、 今の所シングルバーナーのストーブでは最高の1台だと思う。

Image: RIMG0823.JPG

ラベルデザインも旧式
Image: RIMG0824.JPG

燃料調整用レバー
Image: RIMG0825.JPG

1987年12月製造

ポンプキャップは旧式のアルミ製。
ポンプカップは標準は新型のネオプレーンタイプなのだが、純正の革製ポンプカップに変更する事でポンピングの感触が随分と改善される。
2レバータイプはクリーナーがジェネレータにつくのでバルブにはフックを掛けるためのエキセントリックロックがないらしい。 フック無しのバルブ (508-5571) は廃盤で入手できないが1レバータイプのバルブも流用可能らしい。

交換部品

ジェネレータ 400-5891 → 508-5891
ポンプ 242J5201 → 3000000455(220A6201)
バルブ 508-5571 (フック無し) → 508A5571
チェックバルブ 200-6381 (118mm)

2レバーの操作方法

点火
  1. 燃料を入れる
  2. ポンピングする
  3. 黒い火力調整レバーを LIGHT/HI の位置にセットする
  4. 赤い燃料レバーを ON と OFF の中間 (下向き) 位置にセットする
  5. 点火する
  6. 着火したらポンピングを追加し十分な圧力を保持する
  7. 青い炎になり火力が安定したら赤い燃料レバー ON の位置にセットする
  8. 黒い燃料調節レバーで火力を調整する
消火
  1. 黒い火力調整レバーを LIGHT / HI の位置にセットする
  2. 赤い燃料レバーを ON と OFF の中間 (下向き) 位置にセットする
  3. そのまま30秒程度燃焼させる
  4. 赤い燃料レバーを OFF の位置にセットして消火するまで待つ
  5. 完全に消化して数分後に黒い火力調整レバーを CLEAN の位置にセットする

2015/10/30

Happy birthday for my dearest.


Dear Princess, may you have a great and happy life ahead. We are always with you. I wish you a very Happy Birthday. Enjoy.

2015/10/01

Shuca (朱夏) - 日本語対応のサマライザ

MOONGIFTで紹介されていた Shuca という日本語に対応したサマライザを試してみた。
サマライザとは文章を解析し重要な部分だけを抜き出してくれる要約エンジンの事で、 この処理が自動で実施できると非常に便利になりそうなので 早速 CentOS 6.6 に Shucha を導入してみる。

Shuca は予め分かち書きや構文解析された文章を入力ソースとして受け付ける。 そのため、別途、形態素解析システムの JUMAN や 日本語構文・格・照応解析システムの KNP が必要となるので それらのツールも同時にインストールする。

Shuca のインストール
Shuca 本体は Python で記述されており GitHub でソースが公開されている。 基本的にインストール作業は不要で GitHub からダウンロードしたファイルを任意のディレクトリに展開すれば良い。
今回は /usr/local 以下に全てのファイルを展開し、 実行可能ファイルは /usr/local/bin 以下に設置した。
$ wget https://github.com/hitoshin/shuca/archive/master.zip
$ unzip master.zip
$ sudo mkdir -p /usr/local/{bin,libexec,dic}
$ sudo cp -p shuca-master/lib/* /usr/local/bin/.
$ sudo cp -p shuca-master/dic/* /usr/local/dic/.
$ sudo cp -p shuca-master/libexec/* /usr/local/libexec/.
            
インストールが終了したら同梱されているサンプルデータで動作を確認する。
$ Shuca.py < shuca-master/dat/sample.knp.txt 
JR東海は4月16日、山梨リニア実験線で同日に行ったL0系の高速有人走行試験において、590キロメートル毎時を記録したと発表した。
2003年12月2日に同社のMLX01形が記録した鉄道の世界最高速度、581キロメートル毎時を11年4ヶ月ぶりに9キロメートル毎時更新する形となった。
JR東海は、「今後も開業に向けさまざまな試験を行っていく」とコメントしている。
            
JUMAN のインストール
JUMAN は京都大学 大学院情報学研究科の黒崎・河原研究室が開発した日本語形態素解析システムで、 日本語の文章を形態素ごとに分かち書きし品詞などの情報を付加している。
$ wget http://nlp.ist.i.kyoto-u.ac.jp/nl-resource/juman/juman-7.01.tar.bz2
$ tar xvf juman-7.01.tar.bz2
$ cd juman-7.01
$ ./configure --prefix=/usr/local
$ make
$ sudo make install
            
KNP のインストール。
KNP も京都大学 大学院情報学研究科の黒崎・河原研究室が開発した日本語構文・格・照応解析システムで、 JUMAN で解析された結果から文節および基本句間の係り受け関係、格関係、照応関係を出力する。
KNP は zlib を利用しているので、予め zlib のインクルードファイル、ライブラリ等をインストールしておく。
$ sudo yum -y install zlib-devel
$ wget http://nlp.ist.i.kyoto-u.ac.jp/nl-resource/knp/knp-4.14.tar.bz2
$ tar xvf knp-4.14.tar.bz2
$ cd knp-4.14
$ ./configure --prefix=/usr/local --with-juman-prefix=/usr/local
$ make
$ sudo make install
            
動作の確認
これらがインストールできたら Shuca に同梱されているデータで動作の検証を実施する。
$ juman < shuca-master/dat/sample.snt.txt | knp 
# S-ID:1 KNP:4.14-CF1.1 DATE:2016/03/04 SCORE:-63.73058
                                JR──┐     
                                      東海は──┐ 
                  4──┐           │ 
                          月──┐       │ 
                                16──┐   │ 
                                        日、──┤ 
        山梨──┐               │ 
              リニア──┐           │ 
                        実験──┐       │ 
                                線で──┐   │ 
      同日に──┐           │   │ 
              行った──┐       │   │ 
        L0──┐   │       │   │ 
                系の──┤       │   │ 
高速──┐       │       │   │ 
        有人──┐   │       │   │ 
                走行──┤       │   │ 
                      試験に──┐   │   │ 
                            おいて、──┤   │ 
                      590──┐   │   │ 
                キロメートル──┤   │   │ 
                              毎時を──┤   │ 
                                  記録したと──┤ 
                                          発表した。
EOS
    :
    :
    :
            
これで必要なツール類のインストールは完了した。

ここまで動作が確認できたら php を利用して簡単な動作検証環境を作成する。
Shcha に附属されていたサンプルデータから KNP の実行時オプションは "-simple -normal" だと推察してみた。
この php スクリプトは入力された URL からコンテンツを取得して jUMAN で形態素解析を実施してKNP で構文解析を実施した上で Shcha を実行して要約を取得する。
下準備として改行コードの統一、HTML タグの除去、空行や空白のサプレス、 更に KNP の制限により半角文字を全角文字に変換している。
あくまでも動作サンプルのためのスクリプトなので、 エラー処理や html entity の処理など実施していない。

  1<html>
  2    <head>
  3        <title>
  4            shuca 要約
  5        </title>
  6    </head>
  7    <body>
  8        <center>
  9<?php
 10    mb_internal_encoding("UTF-8");
 11
 12    define("juman",     "/usr/local/bin/juman");
 13    define("knp",       "/usr/local/bin/knp -simple -normal -cf-cache");
 14    define("shuca",     "/usr/local/bin/Shuca.py -l 500 ");
 15
 16    if(strlen(($url = $_REQUEST["url"]))){
 17        print "$url<br><br>";
 18
 19        $start = gettime();
 20
 21        $content =
 22            mb_convert_kana(                                                            /* 半角文字を全角に変換 */
 23                preg_replace("/ +/", " ",                                               /* 複数のスペースを1個に置換 */
 24                    preg_replace("/^ *\n/m", "",                                        /* 空行を削除 */
 25                        strip_tags(                                                     /* html タグを削除 */
 26                            preg_replace('!<style.*?>.*?</style.*?>!is', '',            /* <style> タグとその内容を削除 */
 27                                preg_replace('!<script.*?>.*?</script.*?>!is', '',      /* <script> タグとその内容を削除 */
 28                                    str_replace("\r", "",                               /* CR を削除 */
 29                                        file_get_contents($url))))))), "ASKV");
 30
 31        $buf = "";
 32        $desc = array(
 33            0 => array("pipe", "rb"),                   /* stdin: pipe */
 34            1 => array("pipe", "wb"),                   /* stdout: pipe */
 35            2 => array("file", "/dev/null", "w"),       /* stderr: /dev/null */
 36        );
 37
 38        if($pp = proc_open(sprintf("%s | %s | %s", juman, knp, shuca), $desc, $pipe)){
 39            fwrite($pipe[0], $content);
 40            fclose($pipe[0]);
 41
 42            while(!feof($pipe[1]))
 43                $buf .= nl2br(fread($pipe[1], 1024));
 44            fclose($pipe[1]);
 45
 46            proc_close($pp);
 47
 48            print <<< EOF
 49                {$buf}
 50EOF
 51            ;
 52            printf("処理時間: %f 秒", gettime() - $start);
 53        }
 54    }
 55    else{
 56        print <<< EOF
 57                <form>
 58                    <input type='text' name='url' size='50'>
 59                    <input type='submit' value='要約'>
 60                </form>
 61EOF
 62        ;
 63    }
 64
 65function    gettime()
 66{
 67
 68    $t = gettimeofday();
 69    return((float)($t["sec"] + $t["usec"] / 1000000.0));
 70
 71}
 72
 73    
 74?>
 75        </center>
 76    </body>
 77</html>
    

Image: img_20151001.png

実行結果
KNP の実行に結構時間がかかっている様だが、 入力ソースを適切に編集する事で実用的な要約が取得できる様だ。

2015/09/03

国別フィルタの自動生成ツール (CentOS 版)

以前 FreeBSD 版の 国別フィルタの自動生成ツール を紹介したのだが、 最近 CentOS でもサーバを運用しているので CentOS 版を作成したので公開する事にした。 機能は FreeBSD 版同様 APNIC から IPアドレスの割当リストを取得して、 IPアドレスを CIDR 型式に修正した上で iptables (8) のコマンドラインパラメタを自動生成している。
今回は /etc/init.d/iptables を実行してフィルタを初期化した上で、 state RELATED,ESTABLISHED が含まれる行の次の行にルールの追加までを実行する。

  1#!/usr/bin/perl
  2# KRフィルタ
  3use Socket;
  4
  5# 拒否する国コード
  6@country = ('KR', 'CN');
  7# IPアドレス一覧取得URL
  8$url = "http://ftp.apnic.net/stats/apnic/delegated-apnic-latest";
  9
 10# iptables 初期化
 11system("/etc/init.d/iptables restart");
 12
 13# 挿入位置を取得 (接続済みパケットは許可する設定の次に挿入)
 14if(open(IN, "iptables -L INPUT --line-number|")){
 15    while(<IN>){
 16        if(/^(\d+).*RELATED,ESTABLISHED.*/){
 17            $rule = $1 + 1;
 18            last;
 19        }
 20    }
 21    close(IN);
 22}
 23
 24# 初期処理
 25foreach $i (@country){
 26    $country{$i} = 1;
 27}
 28
 29if(open(IN, "wget -q -O - $url|")){
 30    while(<IN>){
 31        if(/^apnic\|(..)\|ipv4\|(\d+.\d+.\d+.\d)\|(\d+)/){
 32            if($country{$1}){
 33                $table{inet_aton($2)} = $3;
 34            }
 35        }
 36    }
 37    close(IN);
 38
 39    # IPアドレス一覧を CIDR 型式に変換
 40    foreach $net (sort keys %table){
 41        $addr = unpack('N', $net);
 42        $num = $table{$net};
 43        while($num == $num[0] && ($addr ^ $addr[0]) == $num){
 44            shift @addr;
 45            shift @num;
 46            $addr &= ~$num;
 47            $num <<= 1;
 48        }
 49        unshift(@addr, $addr);
 50        unshift(@num, $num);
 51    }
 52
 53    # iptables 実行
 54    while (@addr){
 55        for($num = pop(@num), $mask = 32; $num > 1; $num >>= 1, $mask--){}
 56        $filt = inet_ntoa(pack('N', pop(@addr))) . "/$mask";
 57        system("iptables -I INPUT $rule -s $filt -j DROP");
 58        $rule++;
 59    }
 60}
 61
 620;
    


Copyright © 2008-2020 Mitzyuki IMAIZUMI. All rights reserved.