2009年10月25日 星期日
php 模擬送出 http/https/ssl POST 請求
http://twpug.net/modules/smartfaq/faq.php?faqid=8
$curl = curl_init("https://localhost/test.php);
這行有點小錯誤, 應該是
$curl = curl_init("https://localhost/test.php");
代碼:
$PostData = "foo=abc&bar=def";
$curl = curl_init("https://10.3.0.34/a3.php");
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); //這行請參考 http://curl.haxx.se 的介紹
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); //這行請參考 http://curl.haxx.se 的介紹
//設定伺服器憑證,要不要像我忘了... 請自己 try 一下
//curl_setopt($curl, CURLOPT_CAPATH, "/certificate");
//curl_setopt($curl, CURLOPT_CAINFO, "/certificate/server.crt");
//不直接顯示回傳結果
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//post資料給指定網頁
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $PostData);
$Result = curl_exec($curl);
curl_close($curl);
?>
資料送出
-----
1. 開啟 php_openssl
2. 範例 fsockopen()
代碼:
$set_userid = "admin";
$set_passwd = "123456";
$POST_VALUES = "my_userid=" . $set_userid . "&my_passwd=" . $set_passwd;
$fp = fsockopen("ssl://192.168.0.1", 443, $errno, $errstr, 30);
if ($fp){
$out = "";
$out .= "POST /my_service/login.php HTTP/1.1\r\n";
$out .= "Host: 192.168.0.1\r\n";
$out .= "Accept: text/html\r\n";
$out .= "Connection: close\r\n";
$out .= "Content-Type: application/x-www-form-urlencoded\r\n";
$out .= "Content-length: " . strlen($POST_VALUES) . "\r\n";
$out .= "\r\n";
$out .= ($POST_VALUES) . "\r\n";
fputs($fp, $out);
while (!feof($fp)){
$log .= fgets($fp, 1024);
}
fclose($fp);
}
echo $log;
來源: http://forum.icst.org.tw/phpbb/viewtopic.php?t=10151
2009年9月27日 星期日
用 ip 指令設定特定的 routing rule
為了方面在家時可以取得公司電腦的資料,便直接在 NAT server 上面設定自動連接 VPN
方法可參考之前寫的 linux 中使用 pptp client 連線到windows vpn server 包含 mppe-128 支援
一切看起來都運作的很好,直到有一天在公司突然想連線回家裡電腦拿些資料
卻發現無法連線,VPN 關掉後卻可以正常,看來問題是出在 VPN 上
經過一番研究,終於發現問題出在哪了
從公司連線到家裡網路時,封包內容: src ip=公司ip, dest ip=家裡ISP ip
回應時封包內容: src ip=家裡ISP ip, dest ip=公司ip
這邊看起來都正常沒錯,但是在有 VPN 的情況下
本來應該透過 ISP 回去的封包,會因為 VPN 的 routing 設定變成透過 VPN,所以封包會 lost
這時就必須透過 iproute2 提供的 ip 來指定特定的 routing rule,如下:
假設公司網域: 192.168.0.0/16 家裡網路gateway: 1.2.3.254, 家裡ip: 1.2.3.4
#把新的 routing path 加入 routing table 100 中
ip route add 192.168.0.0/16 via 1.2.3.254 table 100
#新增 routing rule,當符合時參考 table 100 中定義應該往那丟封包
ip rule add from 1.2.3.4 to 192.168.0.0/16 table 100
解釋一下上面兩行指令的作用:
linux kernel 處理封包流程會先參考 ip rule 的設定,可用 ip rule ls 察看:
# ip rule ls
0: from all lookup local
32765: from 1.2.3.4 to 192.168.0.0/16 lookup 100
32766: from all lookup main
32767: from all lookup default
(除了第2條是剛剛加進去的以外,其他是預設值,所以在預設情況下,並不會察看封包的來源)
當 rule 條件符合時,察看相關的 routing table,可用 ip route ls table 100/main/... 看 table 內容:
# ip route ls table 100
192.168.0.0/16 via 1.2.3.254 dev ppp0
這樣就可以讓從 ISP 近來的封包一樣從 ISP 回去,而不是 VPN
ps. routing table 可以指定名稱在 /etc/iproute2/rt_tables
2009年9月3日 星期四
Linux 底下 「screen」指令的使用
會創建一個跑著shell的單一視窗
在這裏面
你可以跑你所需要的程式
然後「Ctrl-a + d 」退出剛創建的視窗(回到進入screen前的環境)
然後再敲入命令screen創建新的終端視窗
就這樣 你可以建立多個有shell的視窗(這些視窗裏都可以跑你自己的應用)
這樣就是你退出遠端管理視窗(進入screen的環境)
你的screen窗間的窗口都不會關閉
裏面跑得應用程式自然也不會當掉
用screen -ls可以看所有的screen sessions
最後
screen session不再使用的時候
screen -r sessionid進去
exit退出即可
Unix/Linux 工具: Screen 命令使用
screen使用
使用screen非常簡易.只需在SHELL鍵入screen,便可打開一個screen session。
而在每個screen session 下,所有命令都以 ctrl+a(C-a) 開始。
現在讓我來簡單介紹基本的命令
C-a c -> Create == 開啟新的 window丟到後臺執行當按了 C-a d 把 screen session detach 掉後,會回到還沒進 screen 時的狀態,此時在 screen session 裏每個 window 內運行的 process (無論是前臺/後臺)都在繼續執行,即使 logout 也不影響。下次 login 進來時:screen -ls -> 顯示所有的 screen sessions
C-a n -> Next == 切換到下個 window
C-a p -> Previous == 前一個 window
C-a C-a -> Other == 在兩個 window 間切換
C-a w -> Windows == 列出已開啟的 windows 有那些
C-a 0 -> 切換到第 0 個 window
C-a 1..9 -> 切換到第 1..9 個window
C-a a -> 發出 C-a,在 emacs, ve, bash, tcsh 下可移到行首
C-a t -> Time,顯示當前時間,和系統的 load
C-a K(大寫) -> kill window,強行關閉當前的 window
C-a [ -> 進入 copy mode,在 copy mode 下可以回滾、搜索、複製就像用使用 vi 一樣
C-b Backward,PageUp
C-f Forward,PageDown
H(大寫) High,將游標移至左上角
L Low,將游標移至左下角
0 移到行首
$ 行末
w forward one word,以字為單位往前移
b backward one word,以字為單位往後移
Space 第一次按為標記區起點,第二次按為終點
Esc 結束 copy mode
C-a ] -> Paste,把剛剛在 copy mode 選定的內容貼上
C-a ? -> Help,顯示簡單說明
C-a d -> detach,將目前的 screen session (可能含有多個 windows)
screen -r [keyword] -> 選擇一個screen session 恢復對話若 screen -ls 裏有 Attached sessions:
screen -d [keyword] -> 強制 detach,以便「接手」過來
2009年4月27日 星期一
淡水半日遊-淡水河濱公園&紅毛城
呼
最近忙的莫名其妙
忙到沒時間寫網誌
上上星期六到淡水去的日記就沒空寫了
來補一下吧
==================================
以上廢話完畢
==================================
星期天
因為要上台北參加職訓的課程
所以利敗溜我都會提早上去投宿
而我也就趁機會把表弟找出來去了一趟淡水
禮拜六
我的車是早上9點45分.....
把家裡打掃完後
就急忙的趕去車站
搭上10點38分的自強號趕去台北
時間是12點36分
到達台北找到表弟後
我們就搭著捷運去了淡水
到淡水後
還真是不知道該吃些甚麼果腹
隨隨便便
找了家餐廳打打牙祭後
就帶著表弟沿著河濱公園走呀走呀
因為我忽然很懷念在河濱公園附近的一間冰淇淋店
就是這間
迷路了好一陣子終於又讓我找到了
這間冰淇淋店是我三年前在台北工作時來淡水吃過的
我點了兩球,一球是愛爾蘭酒口味一球是莓子紅酒口味
表弟點的是藍莓口味
不知道為什麼
我的酒類口味冰品就是很難挖
湯匙不論怎麼轉就是很難挖起一口冰
最後只好很噁心的把兩球混在一起做撒尿牛丸一起吃下肚.....
不過
這間店的點很棒
視野很好
可以遠眺淡水河的出海口
幫表第的獨照
這個小宅男
到台北工做了半年連淡水都沒來過
真是.....唉
吃完冰後
我就拉著表弟去了紅毛城
這也可算..淡水古蹟的指標吧
很幸運的
那天有活動,只要憑當月發票可以免費入場
依稀記得我上次來紅毛城的時候
已經是10多年前的事情了
還是跟記憶中的紅毛城一樣沒啥改變
在入口處幫弟弟拍一張
這算是供應地牢犯人伙食的廚房入口
有中式廚房和馬桶
這算是「獄卒」房吧
這就是地牢牢房囉
黑暗暗的牢房
但在N82的氙氣閃光燈下,一樣拍的清清楚楚
地牢房門
放風廣場的獄卒雕像
這是紅毛城城牆邊..的跺孔吧
從入口階梯上拍的淡水河出海口
通往樓頂的樓梯
可惜被關閉不給上
這展示著明朝的船炮、小砲骨董
西洋刀劍和錢幣
焚化爐(用來燒公文的)
避雷針(防止濫殺無辜被老天爺劈)
嬰兒推車(防止錯劈到雙手後無法抱小孩>_<)
這是大保險箱,相信當年鎖的不只有貴重物品,可能還藏著金屋和無限春色......
紅毛城的另一景
可以遠眺關渡、八里河岸
古帆船模型「威廉王子號」
這裡就是剛剛地牢的另一邊啦
有個小女孩很可愛的說「地牢耶...好好玩喔」
白目的我在後面接了一句「是啊,被關進去才好玩.......」
傳說中的「紅夷大炮」
這應該是領事館吧
這是領事館內的接客大廳
擺設雅致
很給他有英國的風味
這張在中國就可告個大不敬的罪名吧
膽敢把腳對著英女皇的照片?
這事「奴隸召喚鈴」...按一下就會有奴隸給你用....
(唔...按一下就會有美麗的女奴來給用...噴鼻血中........)
英國式廚房
熱水壺、咖啡機
鼓風爐
烤箱...
完整的保存下來
那天天氣很熱
可是在領事館旁邊很涼爽
所以就會看到躺在旁邊睡得很爽的遊客了...
英領事館的迴廊
從旁邊拍別有番風味
領事館的爾樓裡
還典藏著早期的電報機
清廷水師關防印章
和台灣出口三寶:糖、茶葉、樟腦
繞一圈出來後的領事館
終於逛完了整個紅毛城園區
呼
好累....
大概時間是三點半
我跟表弟兩人做在紅毛城旁庭園裡
吹著涼風
一直不願意離開那個舒服的空間
終於在四點的時候
我們起了身
又延著河濱公園步道一路走
我指著遠方的關渡大橋
發神經的把表弟拖著一起往關渡大橋走去
在路邊買了一枝大冰淇淋吃完後
走上腳踏車道
開始了步行至關渡的行程.....