海野秀之(うんのひでゆき)の外部記憶
Twitter (twilog) / RSS / アンテナ / ぶくま
HHKになぜλキーがないのかと和田先生を問い詰めてみたい (が、もちろんそんな勇気はない)
http://www.lingr.com/room/gauche/archives/2007/01/31
というのを見ていて思い出した。
小学生のころ電話級とったんですが、その試験勉強本にでてくるλという字の読み方がわからなくて、こころの中で「入る(はいる)」と読んでいた。
とくに支障はありませんでした。
おお、すてき。どれくらい素敵って、思いついたのが自分じゃなかったのがくやしいくらい、素敵。
例によって ja.reddit 経由。
% web off
で、ネットがみられなくできたらいいと思いませんか?
ってなわけで、 「WEBrick でプロキシサーバを作る(るびま)」 を参考に、たまに遮断できるプロキシサーバを書いてみました。
#!/usr/local/bin/ruby # proxy.rb [offline] # # a http proxy server can shutout your request when set as offline. # # 2007/Feb/02 written by UNNO Hideyuki. require 'webrick' require 'webrick/httpproxy' require 'uri' empty_response_handler = Proc.new(){|req, res| res.body = <<EOS <html><head><title>Web offline!</title></head> <body style="margin-left:3em;"> <H1>It is now isolated from Web space.</H1> <p>Enjoy your more <b>important</b> activity!<br/> - proxy.rb written by UNNO Hideyuki.</p> </body></html> EOS } config = { :BindAddress => '127.0.0.1', :Port => 8080, :Logger => WEBrick::Log::new('logfile.txt'), # ←もちろん、てきとーに変えるべし :ProxyVia => false, # 親プロキシは必要に応じて :ProxyURI => URI.parse('http://hogehoge:8080/') } if ARGV[0] and ARGV[0] == 'offline' config[:ProxyContentHandler] = empty_response_handler end s = WEBrick::HTTPProxyServer.new(config) trap('INT'){ s.shutdown } s.start
お見せするほどの物じゃない気はしますが、~/bin/web はこんなの:
#! /usr/local/bin/ruby # -*- mode:ruby -*- PROXY='/home/ほげ/bin/proxy.rb' def kill_proxy t = 0 user=`whoami`.chomp while proxy_pid=`/bin/ps -u#{user} | grep proxy.rb`.slice(/^(\d+)/, 1) cmd="kill #{proxy_pid}" puts "[Stop] #{cmd}" system cmd sleep 0.5 t += 1 break if t > 100 end end case ARGV[0] when 'on', 'online' puts "Turn on to be online." kill_proxy system("#{PROXY} 2> /dev/null&") print "[Start Proxy] ", `sleep 1; /bin/ps -e | grep proxy.rb`, "\n" when 'off', 'offline' puts "Isolated from Web space, enjoy!" kill_proxy system("#{PROXY} offline 2> /dev/null&") print "[Start Proxy with offline mode] ", `sleep 1; /bin/ps -e | grep proxy.rb`, "\n" when 'kill' kill_proxy else print <<EOS web [on|online|off|offline] on | online: (re)start http proxy server with online mode. off | offlne: with offline mode. kill : kill the proxy. EOS proxy_pid=`/bin/ps -e | grep proxy.rb`.slice(/^(\d+)/, 1) if proxy_pid puts "\nNow proxy is runnig with pid:#{proxy_pid}." else puts "\nProxy is not running now." end end
あとは、使っているブラウザに http://127.0.0.1:8080/ をプロキシとして設定すれば、 おっけい。
こんなの欲しがってるの、ぼくだけ?
ちょっと修正: kill のあとに少し待った方がいいみたいなので、sleep ついか。 (0.5 という数字に意味があるのかどうか不明)