class Option::Proxy

Public Instance Methods

activate!() click to toggle source
# File lib/option/proxy.rb, line 3
def activate!
  relay_port = start_proxy_daemon
  add_firewall_rules(relay_port)
end
deactivate!() click to toggle source
# File lib/option/proxy.rb, line 8
def deactivate!
  relay_port = relay_manager.free(virtual_ip)
  remove_firewall_rules(relay_port)
  kill_proxy_daemon(relay_port)
end

Private Instance Methods

add_firewall_rules(relay_port) click to toggle source
# File lib/option/proxy.rb, line 23
def add_firewall_rules(relay_port)
  system "iptables -A PREROUTING -t nat -s #{virtual_ip}/32 -p tcp --dport 80 -j REDIRECT --to-port #{relay_port}"
  true
end
kill_proxy_daemon(relay_port) click to toggle source
# File lib/option/proxy.rb, line 28
def kill_proxy_daemon(relay_port)
  pids = `ps -ef | grep #{relay_port} | awk '{ print $2 }'`
  relay_pid = pids.split( /\r?\n/ ).first
  `kill #{relay_pid} &`
  true
end
relay_manager() click to toggle source
# File lib/option/proxy.rb, line 39
def relay_manager
  RelayManager.new
end
remove_firewall_rules(relay_port) click to toggle source
# File lib/option/proxy.rb, line 35
def remove_firewall_rules(relay_port)
  system "iptables -D PREROUTING -t nat -s #{virtual_ip}/32 -p tcp --dport 80 -j REDIRECT --to-port #{relay_port}"
end
start_proxy_daemon() click to toggle source
# File lib/option/proxy.rb, line 16
def start_proxy_daemon
  relay_port = relay_manager.next_available_port
  relay_manager.lock(virtual_ip, relay_port)
  system "/etc/openvpn/any_proxy -l :#{relay_port} -p '#{attributes['host']}:#{attributes['port']}' &"
  relay_port
end