この記事は私の所属する研究室,田胡研究室のアドベントカレンダー8日目の記事です.
adventar.org
はじめに
弊研では,情報の共有のツールとしてメーリングリストや Wiki を使用しています.
結構大事な情報を発信しているのですが悲しいことに見てないと言われることが多いんですよね...
そこで,どれくらいの人が情報をチェックしたかを調べる方法を求めてみました.(決して監視したいわけではありません!)
簡単にかけそうなものとして,Web Beaconを作って見ようと思います.
Web Beacon とは
原理は簡単です.
Wiki などに imgタグを仕込み,その画像データを返すサーバ上でHTTPヘッダなどの情報を抜くだけです.
アクセス時刻,端末,IP など以外にも多くの情報が抜きとれ 得られます.
実際に書いてみた
Rails アプリのコントローラー部分になります.Herokuで動かすとわりと一瞬で完成!!
require "json"
class BeaconController < ActionController::Base
TRANSPARENT_GIF = "R0lGODlhAQABAPAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="
def get_log
logs = {}
request.headers.sort.map { |k, v|
logs.store("#{k}","#{v}") unless Settings.accepts_headers["#{k}"]
}
params.delete(:action)
params.delete(:controller)
logger.info("#{Time.zone.now} #{logs.to_json} #{params.to_json}")
end
def show_gif
get_log
send_data(Base64.decode64(TRANSPARENT_GIF), type: "image/gif", disposition: "inline")
end
end
show_gif 関数の部分がgifを返す関数でその中で時刻,Railsのログ,クエリ を出力する処理をするget_log関数を呼ぶだけです.
もっといろいろイタズラできそうですね.
本当は実行画面貼りたかった
家ネットが死んで繋げない!!!!
そのうち追記します...すみません
最後に
内容がないよ〜〜〜
研究室で動かす際にはLDAP名とって,Slackへ通知する機構まで備えたいですね...
これでメール見ない人を撲滅したいです(本音)
明日は,よく学校へ帰って行く @namazu510 さんの記事になります.
乞うご期待!!