#!/usr/bin/ruby # tab-exporter - Prometheus exporter for statistics on browser tab usage require 'rack' require 'rack/handler/thin' HOSTNAME = `hostname`.strip USERNAME = `id -un`.strip $last = Time.now - 1000 def tabs p [Time.now, $last, Time.now - $last] if Time.now - $last >= 30 $last = Time.now # $result = ` # lz4jsoncat ~/.mozilla/firefox/*.default/sessionstore-backups/recovery.jsonlz4 | # LANG=C sed 's/\\\\ud[89abcdef][0-9a-f][0-9a-f]/\\\\ufffd/g' | # invalid surrogates | # jq '[.windows[].tabs | length] | add' # `.to_i $result = ` wctab ~/.mozilla/firefox/*.default/sessionstore-backups/recovery.jsonlz4 `.to_i end $result end class TabExporter def call(env) r = Rack::Response.new r.content_type = 'text/plain' r.write %Q|browser_open_tabs{hostname=#{HOSTNAME.dump},user=#{USERNAME.dump},browser="firefox"} #{tabs}\n| r.finish end end Rack::Handler::Thin.run(TabExporter.new, :Port => 9101, :Host => '::', :debug => true)