Skip to content

Instantly share code, notes, and snippets.

@pathsny
Created April 21, 2011 21:28
Show Gist options
  • Select an option

  • Save pathsny/935534 to your computer and use it in GitHub Desktop.

Select an option

Save pathsny/935534 to your computer and use it in GitHub Desktop.
keeploggedin.rb
#! /usr/bin/ruby
require 'rubygems'
require 'syslog_logger'
require 'net/http'
require 'logger'
COOKIE_FILE = File.expand_path('../cookies.yml', __FILE__)
def log
@log ||= SyslogLogger.new('keep_logged_in')
end
def refresh(first = false)
log.info "#{Time.now} doing a refresh"
r1 = agent.get("/24online/webpages/liverequest.jsp?isfirsttime=#{first}", headers1)
agent.get('/24online/servlet/CyberoamHTTPClient?mode=192&username=vsi1', headers1) unless first
r2 = Net::HTTP.new('172.200.20.1',8090).get('/24online/webpages/dummylive.jsp', headers2)
save_cookies [r1, r2]
end
def agent
@agent ||= Net::HTTP.new('172.200.20.1')
end
def headers1
{'Cookie' => cookies.first} if cookies.first
end
def headers2
{'Cookie' => cookies.last} if cookies.last
end
def cookies
@cookies ||= IO.read(COOKIE_FILE).split("\n")
end
def save_cookies(resps)
cookies = resps.map{|r| cookie = r.response['set-cookie']}
return if cookies.include? nil
out = cookies.map{|c| c.split('; ')[0]}.join("\n")
File.open(COOKIE_FILE, 'w'){|f| f.write(out)}
end
def offline?
h = Net::HTTP.new('www.google.com').head('/').response['set-cookie']
(h && h.match(/24online/)).tap do |status|
log.info "#{Time.now} system is #{status ? 'offline' : 'online'}"
end
end
def login
log.info "#{Time.now} doing a login"
agent.post('/24online/servlet/CyberoamHTTPClient', "saveinfo=&sessionTimeout=0.0&guestmsgreq=false&mode=191&username=vsi1&url=null&checkClose=1&login=Login&password=123456&message=&isAccessDenied=null", headers1)
refresh(true)
end
def logout
log.info "#{Time.now} doing a logout"
agent.post('/24online/servlet/CyberoamHTTPClient', "logout=Logout&saveinfo=&sessionTimeout=-1.0&guestmsgreq=false&mode=193&username=vsi1&url=www.sysconinfoway.com&username1=vsi1&checkClose=1&password=****&message=&isAccessDenied=null", headers1)
end
logout and exit if (ARGV.first == 'logout')
offline? ? login : refresh
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment