2008年2月21日木曜日

/etc/sysconfig/iptableにおける、*filter と *natの設定例

OP25対策を施す必要がでてきたので、587へのアクセスを25へiptablesを利用して
飛ばす。本当なら、これじゃ駄目だと思うけど、もろもろのことはデータセンター側の
ネットワークでやってくれているので、良しとした。

かなりの精度でspamは遮断できているし、自分のところでもやっている。
/etc/rc.localや、/etc/rc.firewallというやつにOP25対策の部分は
書かれているのだが、頻繁にiptablesを再起動しているので、こちらに書くことにした。

--------------------------------------- ここから -------------------------------------------------------
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT


#Brasil
-A RH-Firewall-1-INPUT -s XXX.XXX.XXX.XXX/15 -j DROP


-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 110 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT

COMMIT

*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -p tcp --dport 587 -j REDIRECT --to-ports 25

#-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
---------------------------   ここまで ------------------------------------------------------------

2008年2月7日木曜日

JavaScript:selectの連動させてtableを動的に変更する

selectフォームで選択をするとeventが発生。その際にselectのオプションの値の数だけ、
テーブルを行追加する。


-------------------------------------------------- sample.html -------------------------------------------
<html>
<head>
<meta http-equiv="content-type" content="text/html">
<script type="text/javascript">
var mydoc = document;

function action_tr(){
var table,tbody,tr,td;
var val
val = document.form1.aa.options[document.form1.aa.selectedIndex].value;
table = document.getElementById("tet");
trows = table.rows.length -1;
for(i = trows; i > 0; i--){
table.deleteRow(i);
}
for(i = 1; i < val; i++){
new_row = table.insertRow(i);
new_row.insertCell(0).appendChild(document.createTextNode('AA'));
new_row.insertCell(1).appendChild(document.createTextNode('BB'));
}
}
</script>
</head>
<body>
<form id="form1" name="form1" action="" method="post">
<table id="tet" border=1>
<tr>
<td>
<select name="aa" onChange="action_tr();">
<option value="">-</option>
<option value="2">1</option>
<option value="3">2</option>
<option value="4">3</option>
<option value="5">4</option>
</select>
</td>
<td> dounanoyo
</td>
</tr>


</table>
<div id="tt"></div>
</form >
</body>
</html>
-------------------------------------------------- sample.html -------------------------------------------

2008年2月3日日曜日

JavaScript: window.openで開いた子windowでのフォームの値を親に返す。

Javascriptにおいて、window.openによって、子windowを開き
その子windowでのアクションの結果(例えばフォームでの処理結果)などを親windowに
返すサンプル

parent_window.htmlから子windowを開き、
子window(child_windo.html)内のフォーム(form2)のラジオボタンでチェックした
値を渡すために親windowの関数をwindow.opener.function()を使って実行。ここで
この関数を経由して、親window内のフォーム(form1)の要素に値をセットする。

-------------------- parent_winddow.html start ---------------------------
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=EUC-JP">
<script type="text/javascript">

function select_val(){
var w = window.open("child_window.php", "_blank");
}

function go(val) {
alert(val);
document.form1.bon.value = val;
}

</script>
</head>
<body>
てすと 
<form name="form1" id="form1" >
<input type="text" name="bon" value="init" ><br>
<input type="button" name="" value="open child" onClick="select_val();">
</form>
</body>
</html>
-------------------- parent_winddow.html end ---------------------------




-------------------- chile_window.html start ---------------------------
<html>
<head>
<script type="text/javascript">
function feed(){
for(var i = 0; i < document.form2.aa.length; i++) {
if (document.form2.aa[i].checked == true) {
alert (document.form2.aa[i].value);
window.opener.go(document.form2.aa[i].value);
//document.document.form2.aa[i].value);
}
}
}
</script>
</head>
<body>
<form name="form2" id="form2">
<input type="radio" name="aa" value="bb"> bb<br />
<input type="radio" name="aa" value="cc"> cc<br />
<input type="button" name="" value="戻す" onClick="feed();"> cc<br />
</form>
<body>
</html>
-------------------- chile_window.html end ---------------------------

2008年2月1日金曜日

Postgresqlの移行に際して(文字コードの問題)

PostgreSQL8.1.0からPostgreSQL8.2.1へ
pg_dumpによって、データを移行する際にEUC_JPの文字コードのチェックによる
エラーによって移行ができないケースがあった。

そこで、
strtohex
を古いほうの環境に導入し、移行するテーブルにたいして
select * from members where strtohex(lastname) ~ '8195' ;
みないな感じで、カラムをチェック
そのチェック引っかかった行を削除して、restore
事なきを得る

strtohex

PostgreSQLのsrc/contrib
でtarballを展開し、makeする。

参考URL 
http://ml.postgresql.jp/pipermail/pgsql-jp/2007-June/021713.html