X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/e0013130c2ada6b534307c6a9a3658544ca2347b..f00d473537a03a07270fc4df9ec9abfa108a1580:/lib/daemons/session_cleanup.rb diff --git a/lib/daemons/session_cleanup.rb b/lib/daemons/session_cleanup.rb new file mode 100644 index 000000000..08e2deae5 --- /dev/null +++ b/lib/daemons/session_cleanup.rb @@ -0,0 +1,45 @@ +#!/usr/bin/env ruby + +#You might want to change this +#ENV["RAILS_ENV"] ||= "development" + +require File.dirname(__FILE__) + "/../../config/environment" + +require 'pstore' + +terminated = false + +session_path = ActionController::Base.session_options[:tmpdir] + +def expire_session(name) + ActiveRecord::Base.logger.info("Expiring session #{File.basename(name)}") + FileUtils.rm_f(name) +end + +while (true) do + Dir.foreach(session_path) do |session_name| + if session_name =~ /^ruby_sess\./ + session_name = session_path + "/" + session_name + session = PStore.new(session_name) + + session.transaction do |session| + session_hash = session['hash'] + + if session_hash + session_stat = File::Stat.new(session_name) + puts session_hash[:token] + + if session_hash[:token] and User.find_by_token(session_hash[:token]) +# expire_session(session_name) if session_stat.mtime < 1.day.ago + else + expire_session(session_name) if session_stat.mtime < 1.hour.ago + end + else + expire_session(session_name) + end + end + end + end + + sleep 15.minutes +end