2011年09月02日

pdfからjpegを引っこ抜く

 Jpeg(画像データ)の含まれたPDFを画像データに変換したい。多分よくある話である。
 方法はいろいろあると思うが、Xpdfを使うのが手っ取り早そうだ。

 http://www.foolabs.com/xpdf/download.html から、コンパイル済みバイナリのzipを持ってくる。(Linuxならばtgzを持ってくるか、RPMForgeからxpdfをインストールしてもいい。)
 ダウンロードしたら解凍。いくつかコマンドが出てくるが、JPEGを引っこ抜くには、pdfimages を使用するようである。
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.

C:\xpdf\xpdfbin-win-3.03\bin64>pdfimages.exe -j C:\source.pdf .\

C:\xpdf\xpdfbin-win-3.03\bin64>

C:\source.pdf というファイルからjpegを抜いて、カレントのフォルダにに置く時の例。
posted by usoinfo at 08:37 | Comment(0) | 開発 | このブログの読者になる | 更新情報をチェックする

2011年08月21日

CentOS5.6に最新のカーネルを適用する

 今日(2011/08/21)現在、CentOS5.6の標準のカーネルは2.6.18-238.19.1.el5。標準のカーネルでは、Intel以外のCPUのクロック変更モジュールが入っていないので、VIAのマシン等でcpuspeedが使えない。なので、カーネルを再構築する必要がある。
 www.kernel.orgから2.6.x系の最新のカーネル(今日の段階で2.6.39.4)を取ってきて/usr/src/kernelsに展開し、デフォルトの設定でカーネルを作って入れてみると
# cd /usr/src/kernels/linux-2.6.39.4/
# cp /boot/config-2.6.18-238.19.1.el5 .config
# make oldconfig
(全部ENTER)
# make bzImage;make modules;make modules_install;make install
 ぱぱっとやって再起動したら、標準カーネルでは正しく動いていたのにLVMの"VolGorup00"が見えないのでrootをマウントできないと言ってカーネルがpanicする。ブートできない。

 だいぶ試行錯誤の挙げ句たどり着いた決着。問題点は、カーネルのconfigはそのままではなく2カ所変更しないといけない。
General Setup --->
[*] Enable depracated sysfs features to support old userspace tools
[*] Enable depracated sysfs features by default
 これをオンにすれば動く。分かるかこんなの!

posted by usoinfo at 13:50 | Comment(0) | Linux | このブログの読者になる | 更新情報をチェックする

2011年08月19日

CentOSのyumリポジトリにRPMforgeを追加する

いつも忘れてしまうので備忘的にメモ。

1. http://dag.wieers.com/rpm/FAQ.php#Bから、RPMパッケージ rpmforge-release-0.3.6-1.el5.rf.i386.rpm (x86_64版はこっち) を取ってくる。
[root@usouso ~]# wget http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
--2011-08-19 06:37:11-- http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
apt.sw.be をDNSに問いあわせています... 193.1.193.67
apt.sw.be|193.1.193.67|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 16698 (16K) [application/x-redhat-package-manager]
`rpmforge-release-0.3.6-1.el5.rf.i386.rpm' に保存中

100%[================================================>] 16,698 34.1K/s 時間 0.5s

2011-08-19 06:37:14 (34.1 KB/s) - `rpmforge-release-0.3.6-1.el5.rf.i386.rpm' へ保存完了 [16698/16698]
2. RPMを入れる
[root@usouso ~]# rpm -ivh rpmforge-release-0.3.6-1.el5.rf.i386.rpm
警告: rpmforge-release-0.3.6-1.el5.rf.i386.rpm: ヘッダ V3 DSA signature: NOKEY, key ID 6b8d79e6
準備中... ########################################### [100%]
1:rpmforge-release ########################################### [100%]
3. デフォルトで無効にする
(しなくてもいいが、毎度更新に時間がかかるので。。。)
[root@usouso ~]# vi /etc/yum.repos.d/rpmforge.repo

enabled = 1 を
enabled = 0 に変更
4. sdparm をインストールする例
[root@usouso ~]# yum install --enablerepo=rpmforge sdparm
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: centos.mirror.cdnetworks.com
* extras: centos.mirror.cdnetworks.com
* rpmforge: ftp-stud.fht-esslingen.de
* updates: centos.mirror.cdnetworks.com
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package sdparm.i386 0:1.06-1.el5.rf set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

==========================================================================================
Package Arch Version Repository Size
==========================================================================================
Installing:
sdparm i386 1.06-1.el5.rf rpmforge 115 k

Transaction Summary
==========================================================================================
Install 1 Package(s)
Upgrade 0 Package(s)

Total download size: 115 k
Is this ok [y/N]: y
Downloading Packages:
sdparm-1.06-1.el5.rf.i386.rpm | 115 kB 00:01
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : sdparm 1/1

Installed:
sdparm.i386 0:1.06-1.el5.rf

Complete!

posted by usoinfo at 06:47 | Comment(0) | Linux | このブログの読者になる | 更新情報をチェックする

2011年08月10日

WindowsUpdateでKB2497281に飛ばされてしまうことへの対処

 いろいろあって、WindowsXPをクリーンインストールした。SP3を当て、WindowsUpdateを掛けようとしたところ、アクセスするとKB2497281に飛ばされてしまい、WindowsUpdateが使えない。
 インストール直後の状態ではIEがIE6なので、そのせいかと思い、IE8をダウンロードしてインストールしたが、やっぱり状況は変わらない。なにをやってもこの画面である。
kb2497281.png

 どうやら、Microsoft側で、WindowsUpdateのサーバーが新バージョンになり、それにXPSP3がついて行けてないようである(MSも、本格的にXPを切り始めたのであろう。まあ企業としては実に妥当であるが、こっちの動かそうとしているPC資産では7は動かないので、まだしがみつくしかないのである)。

 解決法を試行錯誤した結果、恐らく、Windows Update エージェントを最新版に更新すれば、WindowsUpdateが使えるようである。

1. KB946928: Windows Update エージェントの最新バージョンを入手する方法に関する、ネットワーク管理者向けの情報 から、WindowsUpdateAgent3.0のパッケージをダウンロードする。

2. IEを全て終わらせてから、ダウンロードしたパッケージを当てる。エラーは何も吐かないが、IEを終わらせないと正しくコンポーネントが更新されないようである。

3. リブートしてWindowsUpdateを実行。リダイレクトされなければ成功。

今回はこれで解決したが、ダメな場合、更に

Automatic Updateサービスを停止した上でKB971058: Windows Update コンポーネントをリセットする方法 のFixitから、「完全復旧」を実行する

・Automatic Updateサービスを手動で登録し直す。コマンドプロンプトから
net stop wuauserv
regsvr32 %windir%\system32\wups2.dll
net start wuauserv

という情報もあったので、付け加えておく。
タグ:Windows tips XP
posted by usoinfo at 07:17 | Comment(0) | Windows | このブログの読者になる | 更新情報をチェックする

2011年06月11日

Tinycoreでsshdを動かす

Tinycoreをサーバにしようと思う人がどれくらいいるのか分からないが、sshdを使えるようにする手順。
使用したのはTinycore 3.6。

1. openssh.tcz をインストール
Apps から検索して入れてもいいし、tce-load -wi openssh.tcz してもよい。必要な他のtczも勝手に入るはず。

2. sshdのための設定
動作に必要な sshd_config を作成して必要なら編集、ホスト鍵を作成する。
tc@box:~$ sudo sh
root@box:/home/tc# cd /usr/local/etc/ssh
root@box:/usr/local/etc/ssh# cp sshd_config.example sshd_config
(※必要であれば sshd_config を編集する)
root@box:/home/tc# /usr/local/etc/init.d/openssh start
Generating public/private rsa key pair.
...(略)
(※一度sshdを実行してホスト鍵を作成しておく)

3. sshdでログインするユーザーを作成
adduser でユーザーを作成する。ログイン名はお好みで。RSA認証だけで使う場合にはパスワードを付ける必要はない。その辺はお好みで。
root@box:/home/tc# adduser usost
Changing password for usost
New password:
Retype password:
Password for usost changed by root

この状態で、/etc/passwd, /etc/shadow にアカウント情報ができるので、メモする。
こんな感じでgrep。
root@box:/home/tc# grep usost /etc/passwd
usost:x:1000:1000:Linux User,,,:/home/usost:/bin/sh
root@box:/home/tc# grep usost /etc/shadow
usost:$1$RPG9zR3i$pxjWO47JkotnvIpfni6Fo/:15136:0:99999:7:::

これを元に、ブート時にユーザーを足すスクリプトを作る。グループは(面倒なので)0にしてあるが、別のものでもいい。sudoersの設定も、必要なら、特定のものだけ許可するようにした方がいいかも。
root@box:/home/tc# vi /opt/userinit.sh
----
#!/bin/sh
# /opt/userinit.sh
# add user on boot.

echo 'usost:x:1000:0:Linux User,,,:/home/usost:/bin/sh' >> /etc/passwd
echo 'usost:$1$RPG9zR3i$pxjWO47JkotnvIpfni6Fo/:15136:0:99999:7:::' >> /etc/shadow
echo 'usost ALL=NOPASSWD: ALL' >> /etc/sudoers
----
root@box:/home/tc# chmod 755 /opt/userinit.sh

4. 自動起動するように設定
ユーザー追加スクリプトと、sshd起動スクリプトを、ブート時に実行するように /opt/bootlocal.sh に書いておく。
root@box:/home/tc# vi /opt/bootlocal.sh
----
#!/bin/sh
# put other system startup commands here

/opt/userinit.sh
/usr/local/etc/init.d/openssh start
----

5. 設定ファイルを保存するようにしておく
このままだと、sshd_configやホスト鍵、作成したユーザー追加スクリプトも忘れてしまうので、保存するように /opt/.filetool.lst に書いておく。
root@box:/home/tc# vi /opt/.filetool.lst

opt/userinit.sh
usr/local/etc/ssh
の2行を追加。


6. Exit でリブート
これで、自動的にsshdが上がり、作ったユーザーでログインできるようになっているはずである。
sshdが上がってないときは、ホスト鍵、sshd_config を忘れていないか(/opt/.filetool.lst)確認。
sshdは上がっているけどログインできない時は、ユーザーが正しく追加されているかどうか確認。



 ついでに、Tinycore 3.6では、カーネルのブートオプションに kmap=jp106 をつけても、キーマップ変更はコンソールだけで、Xのキーマップは変わらないようである。
 Xでもjp106キーマップにするには、kmap.tcz をインストールした上で、/opt/bootlocal.sh にloadkmapを書いておくとよいようだ。合わせると、bootlocal.shはこんな感じ。
tc@box:~$ tce-load -wi kmap.tcz
tc@box:~$ vi /opt/bootlocal.sh
----
#!/bin/sh
# put other system startup commands here
loadkmap < /usr/share/kmap/qwerty/jp106.kmap

/opt/userinit.sh
/usr/local/etc/init.d/openssh start
----

タグ:Tinycore Linux
posted by usoinfo at 12:45 | Comment(1) | 開発 | このブログの読者になる | 更新情報をチェックする

2011年05月25日

PocketPC 2002エミュレータ日本語化

昨日の続き。

PPC2002エミュレータの日本語化は、マイクロソフトからまだダウンロード可能の模様(http://download.microsoft.com/download/pocketpc/Utility/2002.1/NT5XP/EN-US/Japanese-NoRadio.exe)。
ダウンロードして解凍したら、(SDKのインストール先)\Windows CE Tools\wce300\Pocket PC 2002\emulation の下に "Japanese-No Radio"フォルダをフォルダごとコピーして、レジストリを変更。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows CE Tools\Platform Manager\{F384D888-F9AA-11D1-BB9E-00A0C9C9CCEE}\{DE9660AC-85D3-4C63-A6AF-46A3B3B83737}\{F384D894-F9AA-11D1-BB9E-00A0C9C9CCEE}\{67C8D913-F0CF-486A-8CF0-CE7D116225E8}]
"Path"="(SDKインストール先)\\Windows CE Tools\\wce300\\Pocket PC 2002\\emulation\\japanese-no radio\\jpnnoril.bin"
 こんな内容のテキストファイルを作って、"ppc2k2emujp.reg"(リンク先のファイルはサンプル)とか適当な名前で保存して、ダブルクリックするとよい。

 これでエミュレータが日本語に。
ppc2002emu-jp.png
タグ:EVC PocketPC WinCE PDA
posted by usoinfo at 07:12 | Comment(0) | 開発 | このブログの読者になる | 更新情報をチェックする

2011年05月24日

PocketPC 2002 のコンパイル環境

 今更に、PocketPC 2002のコンパイル環境を整える。
 なんでPPC2002なのかと言うと、昔のPDAが安くジャンクで出回っていて、当時人気だったカシオのカシオペア、東芝のGENIO、コンパック(HP)のiPAQなどが今手に入る。
 それで、手に入ったのはいいものの、それをどう活用していくかというと、問題に直面する。今更PPC2002のアプリケーションが開発・メンテナンスされているわけはないので、ちょっとしたものは自分で作っしまおうと言うことになる。今のVisual Studioはスマートデバイスの開発環境も統合されているが、PPC2002用なんていう大昔の遺物のコンパイルは、当然Visual Studioではできない。それどころか、eMbedded Visual Tools 4.0でもできない。開発には、eMbedded Visual Tools 3.0が必要である。
 ここで問題にぶち当たるわけだが、もうマイクロソフトからeMbedded Visual Tools 3.0はダウンロードできない。公開終了なのである。そして、PPC2002のためには当然、PocketPC 2002 SDKが必要である。が、これももうマイクロソフトからはダウンロードできない。公開終了なのである。要するに、もう触れてくれるな黒歴史、ということなのであろう。

 そうは言っても、コンパイル環境が欲しいので、なんとか入手の法。すべて2011/05/24現在の情報。

1. eMbedded Visual Tools 3.0 を探してきて入手。HPC:Factorからダウンロードした(http://www.hpcfactor.com/downloads/details.asp?r=0D692AFF-501F-48D1-9D1C-C494078E201D 要アカウント登録)。或いは、他の所から探す場合、ファイル名は EN_WINCE_EMBDVTOOLS30.exe である。参考にされたい。

2. PocketPC 2002 SDK を探してきて入手。これは cnet Downloads から。http://download.cnet.com/Pocket-PC-2002-SDK/3000-2206_4-10731597.html

3. 開発用のマシンを用意。当然、WindowsCEベースなのでActiveSyncで接続することになる。Windows Vista以降からCEベース機との接続はWindows Mobile デバイスセンターに取って代わられ、ActiveSyncは非対応である。デバイスセンターはPPC2002は非対応である。なので、XPの走るマシンを1台用意するのがいいのではないかと思われる。ActiveSyncは、まだマイクロソフトからダウンロードできる(http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=9e641c34-6f7f-404d-a04b-dc09f8141141)。まあ、コンパイル環境を整えるだけなら、ActiveSyncは使わないという選択肢もあり得る。

 マシンに、eVC3をインストールし(CE2.11ベースのSDKも付いているので、それも入れればコンパイルできる。MIPSのMobileGearとか古いカシオペアとか。)、PPC2002SDKもインストールする。全てをインストールするなら、だいたい2Gくらいのディスクがあればよい。eVCは英語だけど、まあ仕方ない。これで、プラットフォームに"Pocket PC 2002"を選べば、今さらPDAのバイナリが作れるというわけである。

 ついでなので、さっそく、昔ソースコードが公開されていたGSPlayerという音楽再生ソフトをビルドしてみる。
 まずソースを入手(http://www.afterdawn.com/software/source_codes/gsplayer.cfm)。開発元は既に公開していない模様であるが、探したところ、2.28が入手できた。
 これを開発環境に持っていき、解凍する。

 まず、libをビルドする。libmad libovd maply の各フォルダがあるので、それぞれ、

・libmad.lib
  1. (解凍先)\libmad\libmad.vcw をeVC3で開く
  2. Active WCE Configurationに"Pocket PC 2002"を選択
  3. Active Configurationに"Win32 (WCE ARM) Release"を選択
  4. Build
  5. (解凍先)\lib\ARMRel\libmad.lib ができる
・libovd.lib
  1. (解凍先)\libovd\libovd.vcw をeVC3で開く
  2. Active WCE Configurationに"Pocket PC 2002"を選択
  3. Active Configurationに"Win32 (WCE ARM) Release"を選択
  4. Build
  5. (解凍先)\lib\ARMRel\libovd.lib ができる
・maplay.lib
  1. (解凍先)\maplay\maplay.vcw をeVC3で開く
  2. Active WCE Configurationに"Pocket PC 2002"を選択
  3. Active Configurationに"Win32 (WCE ARM) Release"を選択
  4. Build
  5. (解凍先)\lib\ARMRel\maplay.lib ができる

 次に本体をビルドする。
  1. (解凍先)\GSPlayer2\WinCE_PPC2\GSPlayer2.vcwを開く。(WinCE_* は、動かしたいデバイスによって適当な物を。英語版はGSPlayer2e.vcwを。)
  2. (解凍先)\lib\ARMRel\ の下にある *.lib を (解凍先)\lib\ARMV4Rel\ にコピー
  3. Active WCE Configurationに"Pocket PC 2002"を選択
  4. Active Configurationに"Win32 (WCE ARM) Release"を選択
  5. プロジェクトにUIHelper.h/UIHelper.cppが入っていないようなので、FileViewの"GSPlayer2 files"を右クリック→"Add Files to Project..."→UIHelper.hとUIHelper.cpp選択してOK
  6. Build
  7. (解凍先)\bin\jpn\WinCE_HPC\ARMRel\GSPlayer2.exe ができる


 これで完成。
 後は、できたexeをデバイスに持っていって実行すればよい。カシオペアE-3000で動作を確認。

IMG_8001s.jpg

 動いたのだが、何故か手元の実機は、母艦のSDカードリーダーで書き込んだサイズの小さいファイルがE-3000で正しく読めない。本体が古いから、故障かなあ。。。(ちなみに、ジャンクPDAは、電脳売王でよく掘り出し物が出るので、買っている。参考になれば幸い。)
タグ:EVC PocketPC WinCE PDA
posted by usoinfo at 14:49 | Comment(0) | 開発 | このブログの読者になる | 更新情報をチェックする

2011年05月17日

iptables で日本以外のアクセスを全部拒否する

 今日たまたまサーバの様子をmuninで見たら、普段は見かけないCPU usageが出ていたので、どうしたんだろうと思って調べると、sshdが余計に動いている。不審に思ってnetstatしてみると、.cnからのsshブルートフォース攻撃を受けていた。本来、JPのアドレスから以外のアクセスはiptablesで叩き落としていたのだが、先日いろいろカーネルをいじっていた時にiptablesの設定を変更して、そのJPフィルターを外したままにしてしまっていたのである。反省しきり。

 と、いうのは経験談として、日本以外のアクセスを全部拒否する、である。やりたいことは、RIRから日本に割り当てられているアドレスだけをリストアップして、iptablesでACCEPTし、該当しないものはDROPへ落とす、ということである。
 割り当て済みIPアドレスのリストはAPNICが配布している(http://ftp.apnic.net/stats/apnic/delegated-apnic-latest)が、このアドレスの一覧はiptablesにそのまま流し込めるようなフォーマットをしていない。しかし、このリストを使いやすいようにアドレス/マスクの形式に変換して提供している Office Namiという素晴らしいサイトがあるので、有り難くこれを使用させて貰うことにする。

 とりあえず、cidr形式のリストをダウンロードして、コマンドに列挙するなら、こんな感じになる。
% wget -q -O - http://nami.jp/ipv4bycc/cidr.txt.gz | \
gzip -d | \
grep "JP" | \
awk '{print "iptables -I RH-Firewall-1-INPUT 1 -p all -s ",$2," -j ACCEPT"}' \
> jpfilter.sh
% head jpfilter.sh
iptables -I RH-Firewall-1-INPUT 1 -p all -s 1.0.16.0/20 -j ACCEPT
iptables -I RH-Firewall-1-INPUT 1 -p all -s 1.0.64.0/18 -j ACCEPT
iptables -I RH-Firewall-1-INPUT 1 -p all -s 1.1.64.0/18 -j ACCEPT
iptables -I RH-Firewall-1-INPUT 1 -p all -s 1.5.0.0/16 -j ACCEPT
(略)
 awkのiptableコマンドの引数は環境に応じて適当に変更が必要だが、これで出てきたjpfilter.shをrootで実行すれば、今のiptablesにJPフィルターが追加できる。

 しかし、日本からのアクセスだからと言って無条件に許可するわけではないので、もう少し手を加える。
 INPUTチェインに入ってきたパケットは、日本以外のアクセスであれば叩き落とし、日本からのアクセスであれば、通常のフィルター動作を適用したいので、

1. 日本のアドレスのリストは ALLOW-JP-INPUT という別チェインにし、
2. INPUTチェインでは通常のフィルター(RH-Firewall-1-INPUT)でなくALLOW-JP-INPUTに渡し、
3. ALLOW-JP-INPUTチェインでは許可したものだけをRH-Firewall-1-INPUTに渡す

という風にする。
というわけで、まず /etc/sysconfig/iptables は、こんな感じ。
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:ALLOW-JP-INPUT - [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -s 127.0.0.0/8 -j ACCEPT
-A INPUT -s 192.168.0.0/16 -j RH-Firewall-1-INPUT #これはローカルネットワークの許可用
-A INPUT -j ALLOW-JP-INPUT
-A INPUT -j DROP
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
(略)
 そして、{{{ALLOW-JP-INPUTチェインを生成する}スクリプトを作る}スクリプトを作る}。ややこしい。起動毎に適用したいので、/etc/sysconfig/iptabels-allowjp にフィルター内容を保存することにして、そのスクリプトを作るためのスクリプトを(get-iptable-jp.sh)作成。スクリプト get-iptable-jp.sh によって、スクリプト iptabels-allowjp が作成され、iptables の起動毎に iptabels-allowjp を実行させる、ということだ。
#!/bin/sh
wget -q -O - http://nami.jp/ipv4bycc/cidr.txt.gz |\
gzip -d |\
grep "JP" |awk '{print "iptables -A ALLOW-JP-INPUT -p all -s ",$2," -j RH-Firewall-1-INPUT"}'\
> /etc/sysconfig/iptables-allowjp
 次いで、/etc/rc.d/init.d/iptables に、起動時にJPフィルターを適用するように変更を加える。start() 内で、
:
if [ -n "$IPTABLES_MODULES" ]; then
echo -n $"Loading additional $IPTABLES modules: "
ret=0
for mod in $IPTABLES_MODULES; do
echo -n "$mod "
modprobe $mod > /dev/null 2>&1
let ret+=$?;
done
[ $ret -eq 0 ] && success || failure
echo
fi

if [ -s /etc/sysconfig/iptables-allowjp ]
then
/bin/sh /etc/sysconfig/iptables-allowjp
fi

touch $VAR_SUBSYS_IPTABLES
:
 以上のものが出来たら、get-iptable-jp.sh を実行してJPフィルター設定スクリプトを作成した後、service iptables restart。iptables -nL でフィルターが出来ているか確認する。

 アドレスの割り当ては変更されることがあるので、何日かに1回定期的に、get-iptable-jp.sh をしてiptablesをrestartするように、cronを回しておくとよい。
posted by usoinfo at 10:05 | Comment(0) | 開発 | このブログの読者になる | 更新情報をチェックする

2011年04月25日

iptableのチェインの途中にルールを差し込む

既に動いてるiptableの途中に新しくルールを差し込む方法。
INPUTにルールを追加する場合の例:
# /sbin/iptables -n -L INPUT --line-number
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0
 INPUTチェインを見ると、RH-Firewall-1-INPUTチェインを参照しているので、そっちを見る。
# /sbin/iptables -n -L RH-Firewall-1-INPUT --line-number
Chain RH-Firewall-1-INPUT (1 references)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
3 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53
4 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:445
5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:53
6 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
8 DROP all -- 0.0.0.0/0 0.0.0.0/0
 リストの番号を見て、入れたい番号を見る。例えば、6番の次に192.168.0.0/16から3306番宛tcpを追加する時は、
# /sbin/iptables -I RH-Firewall-1-INPUT 6 \
-m state --state NEW -m tcp -p tcp --dport 3306 -s 192.168.0.0/16 -j ACCEPT
# /sbin/iptables -n -L RH-Firewall-1-INPUT --line-number
Chain RH-Firewall-1-INPUT (1 references)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
3 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53
4 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:445
5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:53
6 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
7 ACCEPT tcp -- 192.168.0.0/16 0.0.0.0/0 state NEW tcp dpt:3306
8 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
9 DROP all -- 0.0.0.0/0 0.0.0.0/0
 こんな具合。
 一時的なものでないなら、追加した後忘れず /etc/sysconfig/iptables あたりにも追加して、リブートしても忘れないようにしておくのがよい。
タグ:Linux 管理
posted by usoinfo at 10:47 | Comment(0) | 開発 | このブログの読者になる | 更新情報をチェックする

2011年04月23日

PEAR::HTTP_Client で普通のPOSTでも multipart/form-data にする

 HTTP_Client->post() では、4番目の引数にファイルを指定すると、自動的にマルチパートのPOSTデータを作成してmultipart/form-dataで投げてくれる。逆に言うと、2番目の引数のPOSTデータだけを渡した場合は、リクエストボディにname=value&name=value&...のデータが入れて投げられるので、multipart/form-data にはならない。
 
 あまり需要はないと思うが、ファイルでなく普通のPOSTデータだけを渡して、リクエストを multipart/form-data にしたい時は、こうである。
		$client = new HTTP_Client();
$header = array('Content-Type' => 'multipart/form-data');
$client->setDefaultHeader($header);
$resp = $client->post($url,$data);
 要するにContent-typeヘッダを強制的にmultipart/form-dataにセットしてやれば、勝手にマルチパートなリクエストになるという寸法である。例えば、送出データがメモリ上の変数内にあってテンポラリファイルに落としたくないとき、などに使えないこともない、かもしれない。
タグ:PHP PEAR Linux
posted by usoinfo at 15:03 | Comment(0) | 開発 | このブログの読者になる | 更新情報をチェックする