パスワードが必要になったときEpisoPassページが開くようにする
(expanded from EpisoPassをプログラムから呼び出して使う このページは編集しないでください)
(2021/1/14)
(FBでのやりとり)
当該プログラムをサーバとして動かし、ブラウザからそこにアクセスすれば良いようである
ユーザをサブルーチンみたいに呼ぶ方法はもっと簡単になって欲しいが...
なんでこういうのが必要になったのだったか完璧に忘れてしまったorz (2021/9/16)
パスワードが必要になったとき自動的にEpisoPassが開くようにしたかったのだっけ?
EpisoPassCall.rbrequire 'webrick'
pwfile = "password.txt"OPEN = "xdg-open"
unless File.exist?(pwfile) # パスワードが必要になったとき # ブラウザで /EpisoPassCall にアクセス system "#{OPEN} http://localhost:8000/EpisoPassCall"
server = WEBrick::HTTPServer.new( # サーバを立てる :Port => 8000, :HTTPVersion => WEBrick::HTTPVersion.new('1.1'), :AccessLog => [[open(IO::NULL, 'w'), '']], # アクセスログを出力しない :Logger => WEBrick::Log.new("/dev/null") ) # EpisoPass計算画面を開く # 計算後に/EpisoPassResultに移動 server.mount_proc('/EpisoPassCall') do |req, res| body = File.read('RunEpisoPass.html') # パスワード計算するHTML res.status = 200 res['Content-Type'] = 'text/html' res.body = body end
# /EpisoPassResult?qwerty のような形式でパスワードを返す server.mount_proc('/EpisoPassResult') do |req, res| password = URI.decode(req.query_string) File.open(pwfile,"w"){ |f| f.puts password } server.shutdown end
Signal.trap('INT'){server.shutdown} server.startend
puts File.read(pwfile)