class TPLinkCommander
Public Class Methods
new(local_ip,login,pass)
click to toggle source
# File lib/tp_link_commander.rb, line 6 def initialize(local_ip,login,pass) @local_ip=local_ip @login=login @pass=pass end
Public Instance Methods
change_ip()
click to toggle source
# File lib/tp_link_commander.rb, line 41 def change_ip if !get_status.nil? ip=@wan_ip new_ip='0.0.0.0' loop do change_mac(@next_mac) sleep 15 loop do get_status new_ip=@wan_ip sleep 5 if new_ip!='0.0.0.0' print "[#{ip} -> #{new_ip}] " end break if new_ip!='0.0.0.0' end break if new_ip!=ip end else puts "Authorization Failed!" end end
change_mac(new_mac)
click to toggle source
# File lib/tp_link_commander.rb, line 37 def change_mac(new_mac) get("userRpm/MacCloneCfgRpm.htm?mac1=#{new_mac}&wan=1&Save=%25E5%2584%25B2%25E5%25AD%2598") end
get(url)
click to toggle source
# File lib/tp_link_commander.rb, line 14 def get(url) url = URI("http://#{@local_ip}/#{url}") http = Net::HTTP.new(url.host, url.port) request = Net::HTTP::Get.new(url) request["Authorization"] = get_auth response = http.request(request) end
get_auth()
click to toggle source
# File lib/tp_link_commander.rb, line 11 def get_auth "Basic #{Base64.encode64("#{@login}:#{@pass}").gsub(/[^A-Za-z0-9=]/,"")}" end
get_status()
click to toggle source
# File lib/tp_link_commander.rb, line 24 def get_status response=get("userRpm/StatusRpm.htm") result=response.read_body if result =~ /#errorbody/ nil else params=result.gsub(/^[\S\s]+wanPara\s=\snew\sArray\(|\);[\S\s]+$/,"").split(/"?\s*,\s*"?/) @mac=params[1] @next_mac=next_hex(@mac) @wan_ip=params[2] params end end
next_hex(hex)
click to toggle source
# File lib/tp_link_commander.rb, line 21 def next_hex(hex) ("0x#{hex.gsub(/\-/,"")}".to_i(16)+1).to_s(16).upcase.scan(/../).join("-") end