ダウンタウンは合っていましたが、ガキでした。「欧陽菲菲」とか懐しいですね。
暑くなってきましたし、冷やし中華を注文する際には使ってみては如何でしょうか。
Boolean values (which can be either 1 or 0) are defined in PowerShell using the....
Blocked loading mixed active content "http....何だこれは。
security.mixed_content.block_active_contentこれが true が default だったので false にしてみたら見れました。
$ go run get_cert.go www.google.com
i=0
[[{[2 5 4 6] US}] [{[2 5 4 10] Google Inc}] [{[2 5 4 3] Google Internet Authority}]]
2013-07-31 11:40:49 +0000 UTC
2013-10-31 23:59:59 +0000 UTC
[[{[2 5 4 6] US}] [{[2 5 4 10] Google Inc}] [{[2 5 4 7] Mountain View}] [{[2 5 4 8] California}] [{[2 5 4 3] www.google.com}]]
i=1
[[{[2 5 4 6] US}] [{[2 5 4 10] Equifax}] [{[2 5 4 11] Equifax Secure Certificate Authority}]]
2012-12-12 15:58:50 +0000 UTC
2013-12-31 15:58:50 +0000 UTC
[[{[2 5 4 6] US}] [{[2 5 4 10] Google Inc}] [{[2 5 4 3] Google Internet Authority}]]OpenSSL みたいな pretty な感じに出してくれるのはとりあえず見つからなかったけど頑張れば自分で書けるぜ!!package main
import (
"crypto/tls"
"crypto/x509"
"fmt"
"log"
"os"
)
func main() {
if len(os.Args) < 1 {
log.Fatal("You must input a hostname")
}
peerCertificates, err := GetCert(os.Args[1])
if err == nil {
for i, Cert := range peerCertificates {
fmt.Printf("i=%d\n", i)
fmt.Println(Cert.Issuer.ToRDNSequence())
fmt.Println(Cert.NotBefore)
fmt.Println(Cert.NotAfter)
fmt.Println(Cert.Subject.ToRDNSequence())
}
} else {
log.Fatal(err)
}
}
func GetCert(host string) ([]*x509.Certificate, error) {
config := &tls.Config{InsecureSkipVerify: true}
conn, err := tls.Dial("tcp", host+":443", config)
var peerCertificates []*x509.Certificate
if err == nil {
connectionState := conn.ConnectionState()
peerCertificates = connectionState.PeerCertificates
}
return peerCertificates, err
}
ポートは決め打ちだぜ!!
$ python -m modulefinder /usr/lib/python2.7/SimpleHTTPServer.py | head Name File ---- ---- m BaseHTTPServer /usr/lib/python2.7/BaseHTTPServer.py m SocketServer /usr/lib/python2.7/SocketServer.py m StringIO /usr/lib/python2.7/StringIO.py m UserDict /usr/lib/python2.7/UserDict.py m __builtin__ m __future__ /usr/lib/python2.7/__future__.py m __main__ /usr/lib/python2.7/SimpleHTTPServer.py何か一杯出てきました。これは便利!!
SO_LINGER
SO_LINGER オプションを取得・設定する。引き数には linger 構造体を取る。
struct linger {
int l_onoff; /* linger active */
int l_linger; /* how many seconds to linger for */
};
有効になっていると、 close(2) や shutdown(2) は、そのソケットにキューイングされたメッセージがすべて送信完了するか、 linger (居残り) タイムアウトになるまで返らない。無効になっていると、 これらのコールはただちに戻り、クローズ動作はバックグラウンドで行われる。 ソケットのクローズを exit(2) の一部として行った場合には、残っているソケットの クローズ動作は必ずバックグラウンドに送られる。import socket
addr = socket.getaddrinfo('www.google.com', 80)[0][4]
print(addr[0])
sock = socket.socket()
sock.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, b'\1\0\0\0\0\0\0\0')
sock.connect(addr)
sock.close()
実行してみた:$ time ip_address=`python test.py`; echo $ip_address; netstat -tn | grep "$ip_address" 74.125.235.81何も残らない。TIMEOUT も 1 にしてみた:
import socket
addr = socket.getaddrinfo('www.google.com', 80)[0][4]
print(addr[0])
sock = socket.socket()
sock.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, b'\1\0\0\0\1\0\0\0')
sock.connect(addr)
sock.close()
実行してみた:$ ip_address=`python test.py`; echo $ip_address; netstat -tn | grep "$ip_address" 173.194.38.80 tcp 0 0 192.168.37.5:42359 173.194.38.80:80 TIME_WAIT残った。
sudo aptitude install gcc sudo aptitude install makemake だ! っつーことで make してみたところ
Python build finished, but the necessary bits to build these modules were not found: _bz2 _curses _curses_panel _dbm _gdbm _lzma _sqlite3 _ssl _tkinter readline zlib To find the necessary bits, look in setup.py in detect_modules() for the module's name. Failed to build these modules: _cryptなんてこと言われたんでこれは流石に困るなと思い 沢山 package 入れてみることに:
sudo aptitude install libbz2-dev sudo aptitude install libncurses5-dev sudo aptitude install liblzma-dev sudo aptitude install libssl-dev sudo aptitude install libreadline-dev sudo aptitude install zlib1g-dev sudo aptitude install g++ sudo aptitude install dpkg-dev sudo aptitude install libsqlite3-dev sudo aptitude install libgdbm-devよし、こんだけ入れればいいだろう! っと思って make してみたら何かやっぱダメ。 な、なんでや!! つわけでググってみたところ LiPyrary - Python for books: How to compile Python on Ubuntu 11.04 これか!
export arch=$(dpkg-architecture -qDEB_HOST_MULTIARCH) export LDFLAGS="-L/usr/lib/$arch -L/lib/$arch" export CFLAGS="-I/usr/include/$arch" export CPPFLAGS="-I/usr/include/$arch"したら無事に色々な library が読み込まれて module が使えるようになりました。 めでたしめでたし。