lib/knj/win_tightvnc.rb in knjrbfw-0.0.8 vs lib/knj/win_tightvnc.rb in knjrbfw-0.0.9

- old
+ new

@@ -1,127 +1,127 @@ class Knj::Win::TightVNC - def initialize(args) - @args = ArrayExt.hash_sym(args) - - @args[:port] = 5900 if !@args[:port] - @args[:port_http] = 5800 if !@args[:http_port] - - raise "No path given." if !@args[:path] - - exefile = @args[:path] + "/WinVNC.exe" - raise "#{exefile} was not found." if !File.exists?(exefile) - - @wmi = WIN32OLE.connect("winmgmts://") - processes = @wmi.ExecQuery("SELECT * FROM win32_process") - ended = false - for process in processes do - if process.Name == "WinVNC.exe" - process.Terminate - ended = true - end - end - - sleep 1 if ended - - #print Win::Registry.get(:cur_user, 'Software\ORL\WinVNC3', 'Password', :sz).unpack('H*')[0] + "\n" - #print ["160e9d46f26586ca"].pack('H*').unpack('H*')[0] + "\n" - #exit - - Win::Registry.set(:cur_user, 'Software\ORL\WinVNC3', [ - ["AutoPortSelect", 1, :dword], - ["BlankScreen", 0, :dword], - ["DontSetHooks", 0, :dword], - ["DontUseDriver", 0, :dword], - ["DriverDirectAccess", 1, :dword], - ["EnableFileTransfers", 1, :dword], - ["HTTPPortNumber", @args[:port_http], :dword], - ["IdleTimeout", 0, :dword], - ["InputsEnabled", 1, :dword], - ["LocalInputsDisabled", 0, :dword], - ["LocalInputsPriority", 0, :dword], - ["LocalInputsPriorityTime", 3, :dword], - ["LockSetting", 0, :dword], - ["OnlyPollConsole", 1, :dword], - ["OnlyPollOnEvent", 0, :dword], - ["PollForeground", 1, :dword], - ["PollFullScreen", 0, :dword], - ["PollingCycle", 300, :dword], - ["PollUnderCursor", 0, :dword], - ["PollUnderCursor", @args[:port], :dword], - ["QueryAccept", 0, :dword], - ["QueryAllowNoPass", 0, :dword], - ["QuerySetting", 2, :dword], - ["QueryTimeout", 30, :dword], - ["RemoveWallpaper", 0, :dword], - ["SocketConnect", 1, :dword], - ["Password", ["160e9d46f26586ca"].pack('H*'), :bin], - ["PasswordViewOnly", ["160e9d46f26586ca"].pack('H*'), :bin] - ]) - Win::Registry.set(:local_machine, 'Software\ORL\WinVNC3', [ - ["AllowLoopback", 1, :dword], - ["LoopbackOnly", 0, :dword] - ]) - #password is of this moment only 'kaspernj'. - - @wmi = WIN32OLE.connect("winmgmts://") - processes = @wmi.ExecQuery("SELECT * FROM win32_process") - ended = false - for process in processes do - if process.Name == "WinVNC.exe" - process.Terminate - ended = true - end - end - - sleep 1 if ended - - Knj::Thread.new do - IO.popen(exefile) do |process| - #nothing - end - end - - sleep 1 - - @processes = @wmi.ExecQuery("SELECT * FROM win32_process") - for process in @processes do - if process.Name == "WinVNC.exe" - @process = process - break - end - end - - raise "Could not start WinVNC.exe." if !@process - - Kernel.at_exit do - self.close - end - end - - def open? - begin - @process.GetOwner - return true - rescue Exception => e - return false - end - end - - def close - return nil if !@process - - begin - @process.Terminate - rescue Exception => e - if e.class.to_s == "WIN32OLERuntimeError" and e.message.index("Terminate") != nil - #do nothing. - else - raise e - end - end - - @process = nil - @args = nil - @wmi = nil - @processes = nil - end + def initialize(args) + @args = ArrayExt.hash_sym(args) + + @args[:port] = 5900 if !@args[:port] + @args[:port_http] = 5800 if !@args[:http_port] + + raise "No path given." if !@args[:path] + + exefile = @args[:path] + "/WinVNC.exe" + raise "#{exefile} was not found." if !File.exists?(exefile) + + @wmi = WIN32OLE.connect("winmgmts://") + processes = @wmi.ExecQuery("SELECT * FROM win32_process") + ended = false + for process in processes do + if process.Name == "WinVNC.exe" + process.Terminate + ended = true + end + end + + sleep 1 if ended + + #print Win::Registry.get(:cur_user, 'Software\ORL\WinVNC3', 'Password', :sz).unpack('H*')[0] + "\n" + #print ["160e9d46f26586ca"].pack('H*').unpack('H*')[0] + "\n" + #exit + + Win::Registry.set(:cur_user, 'Software\ORL\WinVNC3', [ + ["AutoPortSelect", 1, :dword], + ["BlankScreen", 0, :dword], + ["DontSetHooks", 0, :dword], + ["DontUseDriver", 0, :dword], + ["DriverDirectAccess", 1, :dword], + ["EnableFileTransfers", 1, :dword], + ["HTTPPortNumber", @args[:port_http], :dword], + ["IdleTimeout", 0, :dword], + ["InputsEnabled", 1, :dword], + ["LocalInputsDisabled", 0, :dword], + ["LocalInputsPriority", 0, :dword], + ["LocalInputsPriorityTime", 3, :dword], + ["LockSetting", 0, :dword], + ["OnlyPollConsole", 1, :dword], + ["OnlyPollOnEvent", 0, :dword], + ["PollForeground", 1, :dword], + ["PollFullScreen", 0, :dword], + ["PollingCycle", 300, :dword], + ["PollUnderCursor", 0, :dword], + ["PollUnderCursor", @args[:port], :dword], + ["QueryAccept", 0, :dword], + ["QueryAllowNoPass", 0, :dword], + ["QuerySetting", 2, :dword], + ["QueryTimeout", 30, :dword], + ["RemoveWallpaper", 0, :dword], + ["SocketConnect", 1, :dword], + ["Password", ["160e9d46f26586ca"].pack('H*'), :bin], + ["PasswordViewOnly", ["160e9d46f26586ca"].pack('H*'), :bin] + ]) + Win::Registry.set(:local_machine, 'Software\ORL\WinVNC3', [ + ["AllowLoopback", 1, :dword], + ["LoopbackOnly", 0, :dword] + ]) + #password is of this moment only 'kaspernj'. + + @wmi = WIN32OLE.connect("winmgmts://") + processes = @wmi.ExecQuery("SELECT * FROM win32_process") + ended = false + for process in processes do + if process.Name == "WinVNC.exe" + process.Terminate + ended = true + end + end + + sleep 1 if ended + + Knj::Thread.new do + IO.popen(exefile) do |process| + #nothing + end + end + + sleep 1 + + @processes = @wmi.ExecQuery("SELECT * FROM win32_process") + for process in @processes do + if process.Name == "WinVNC.exe" + @process = process + break + end + end + + raise "Could not start WinVNC.exe." if !@process + + Kernel.at_exit do + self.close + end + end + + def open? + begin + @process.GetOwner + return true + rescue Exception => e + return false + end + end + + def close + return nil if !@process + + begin + @process.Terminate + rescue Exception => e + if e.class.to_s == "WIN32OLERuntimeError" and e.message.index("Terminate") != nil + #do nothing. + else + raise e + end + end + + @process = nil + @args = nil + @wmi = nil + @processes = nil + end end \ No newline at end of file