knjrbfw 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (211) hide show
  1. data/VERSION +1 -1
  2. data/knjrbfw.gemspec +29 -8
  3. data/lib/knj/arrayext.rb +206 -153
  4. data/lib/knj/autoload/backups/ping.rb +2 -2
  5. data/lib/knj/autoload/erubis.rb +3 -3
  6. data/lib/knj/autoload/facets_dictionary.rb +2 -2
  7. data/lib/knj/autoload/gettext.rb +3 -3
  8. data/lib/knj/autoload/gtk2.rb +1 -1
  9. data/lib/knj/autoload/json.rb +14 -0
  10. data/lib/knj/autoload/magick.rb +3 -3
  11. data/lib/knj/autoload/mysql.rb +3 -3
  12. data/lib/knj/autoload/parsedate.rb +1 -1
  13. data/lib/knj/autoload/ping.rb +2 -2
  14. data/lib/knj/autoload/rexml.rb +5 -5
  15. data/lib/knj/autoload/soap.rb +1 -1
  16. data/lib/knj/autoload/sqlite3.rb +3 -3
  17. data/lib/knj/autoload/tmail.rb +3 -3
  18. data/lib/knj/autoload/xmlsimple.rb +3 -3
  19. data/lib/knj/autoload/zip.rb +3 -3
  20. data/lib/knj/autoload.rb +87 -81
  21. data/lib/knj/cmd_gen.rb +19 -19
  22. data/lib/knj/cmd_parser.rb +59 -0
  23. data/lib/knj/compiler.rb +34 -34
  24. data/lib/knj/cpufreq.rb +37 -37
  25. data/lib/knj/csv.rb +20 -0
  26. data/lib/knj/datarow.rb +406 -239
  27. data/lib/knj/datarow_custom.rb +124 -0
  28. data/lib/knj/datestamp.rb +89 -89
  29. data/lib/knj/datet.rb +550 -454
  30. data/lib/knj/db.rb +1 -0
  31. data/lib/knj/degulesider.rb +42 -44
  32. data/lib/knj/erb/erb.rb +5 -5
  33. data/lib/knj/erb/erb_cache_clean.rb +10 -10
  34. data/lib/knj/erb/erb_fcgi.rb +32 -32
  35. data/lib/knj/erb/erb_fcgi_1.9.rb +32 -32
  36. data/lib/knj/erb/erb_fcgi_jruby.rb +2 -2
  37. data/lib/knj/erb/erb_jruby.rb +5 -5
  38. data/lib/knj/erb/include.rb +243 -243
  39. data/lib/knj/errors.rb +19 -18
  40. data/lib/knj/eruby.rb +12 -10
  41. data/lib/knj/event_filemod.rb +31 -31
  42. data/lib/knj/event_handler.rb +73 -67
  43. data/lib/knj/exchangerates.rb +37 -37
  44. data/lib/knj/facebook_connect.rb +95 -18
  45. data/lib/knj/filesystem.rb +6 -6
  46. data/lib/knj/fs/drivers/filesystem.rb +12 -12
  47. data/lib/knj/fs/drivers/ftp.rb +31 -31
  48. data/lib/knj/fs/drivers/ssh.rb +26 -26
  49. data/lib/knj/fs/fs.rb +31 -31
  50. data/lib/knj/gettext_fallback.rb +15 -15
  51. data/lib/knj/gettext_threadded.rb +75 -75
  52. data/lib/knj/google_sitemap.rb +53 -53
  53. data/lib/knj/gtk2.rb +272 -272
  54. data/lib/knj/gtk2_cb.rb +80 -80
  55. data/lib/knj/gtk2_menu.rb +55 -55
  56. data/lib/knj/gtk2_statuswindow.rb +62 -62
  57. data/lib/knj/gtk2_tv.rb +58 -58
  58. data/lib/knj/hash_methods.rb +27 -36
  59. data/lib/knj/http.rb +189 -167
  60. data/lib/knj/http2.rb +259 -53
  61. data/lib/knj/image.rb +2 -2
  62. data/lib/knj/includes/appserver_cli.rb +18 -18
  63. data/lib/knj/includes/require_info.rb +15 -0
  64. data/lib/knj/ip2location.rb +20 -20
  65. data/lib/knj/ironruby-gtk2/button.rb +14 -14
  66. data/lib/knj/ironruby-gtk2/dialog.rb +42 -42
  67. data/lib/knj/ironruby-gtk2/entry.rb +4 -4
  68. data/lib/knj/ironruby-gtk2/gdk_event.rb +1 -1
  69. data/lib/knj/ironruby-gtk2/gdk_eventbutton.rb +11 -11
  70. data/lib/knj/ironruby-gtk2/gdk_pixbuf.rb +9 -9
  71. data/lib/knj/ironruby-gtk2/gladexml.rb +102 -102
  72. data/lib/knj/ironruby-gtk2/glib.rb +13 -13
  73. data/lib/knj/ironruby-gtk2/gtk2.rb +121 -121
  74. data/lib/knj/ironruby-gtk2/gtk_builder.rb +29 -29
  75. data/lib/knj/ironruby-gtk2/gtk_cellrenderertext.rb +3 -3
  76. data/lib/knj/ironruby-gtk2/gtk_combobox.rb +17 -17
  77. data/lib/knj/ironruby-gtk2/gtk_filechooserbutton.rb +3 -3
  78. data/lib/knj/ironruby-gtk2/gtk_liststore.rb +16 -16
  79. data/lib/knj/ironruby-gtk2/gtk_menu.rb +3 -3
  80. data/lib/knj/ironruby-gtk2/gtk_menuitem.rb +2 -2
  81. data/lib/knj/ironruby-gtk2/gtk_statusicon.rb +3 -3
  82. data/lib/knj/ironruby-gtk2/gtk_treeiter.rb +22 -22
  83. data/lib/knj/ironruby-gtk2/gtk_treeselection.rb +11 -11
  84. data/lib/knj/ironruby-gtk2/gtk_treeview.rb +17 -17
  85. data/lib/knj/ironruby-gtk2/gtk_treeviewcolumn.rb +30 -30
  86. data/lib/knj/ironruby-gtk2/iconsize.rb +1 -1
  87. data/lib/knj/ironruby-gtk2/image.rb +13 -13
  88. data/lib/knj/ironruby-gtk2/label.rb +17 -17
  89. data/lib/knj/ironruby-gtk2/stock.rb +2 -2
  90. data/lib/knj/ironruby-gtk2/tests/test_2.rb +14 -14
  91. data/lib/knj/ironruby-gtk2/tests/test_ironruby_window.rb +37 -37
  92. data/lib/knj/ironruby-gtk2/vbox.rb +3 -3
  93. data/lib/knj/ironruby-gtk2/window.rb +18 -18
  94. data/lib/knj/jruby-gtk2/builder/test_builder.rb +11 -11
  95. data/lib/knj/jruby-gtk2/builder.rb +25 -25
  96. data/lib/knj/jruby-gtk2/cellrenderertext.rb +10 -10
  97. data/lib/knj/jruby-gtk2/checkbutton.rb +1 -1
  98. data/lib/knj/jruby-gtk2/combobox.rb +27 -27
  99. data/lib/knj/jruby-gtk2/dialog.rb +40 -40
  100. data/lib/knj/jruby-gtk2/eventbutton.rb +19 -19
  101. data/lib/knj/jruby-gtk2/gladexml.rb +97 -97
  102. data/lib/knj/jruby-gtk2/gtk2.rb +203 -203
  103. data/lib/knj/jruby-gtk2/hbox.rb +8 -8
  104. data/lib/knj/jruby-gtk2/iconsize.rb +3 -3
  105. data/lib/knj/jruby-gtk2/image.rb +8 -8
  106. data/lib/knj/jruby-gtk2/liststore.rb +54 -54
  107. data/lib/knj/jruby-gtk2/menu.rb +35 -35
  108. data/lib/knj/jruby-gtk2/progressbar.rb +10 -10
  109. data/lib/knj/jruby-gtk2/statusicon.rb +3 -3
  110. data/lib/knj/jruby-gtk2/stock.rb +6 -6
  111. data/lib/knj/jruby-gtk2/tests/test_glade_window.rb +36 -36
  112. data/lib/knj/jruby-gtk2/tests/test_normal_window.rb +3 -3
  113. data/lib/knj/jruby-gtk2/tests/test_trayicon.rb +2 -2
  114. data/lib/knj/jruby-gtk2/treeview.rb +88 -88
  115. data/lib/knj/jruby-gtk2/vbox.rb +10 -10
  116. data/lib/knj/jruby-gtk2/window.rb +7 -7
  117. data/lib/knj/jruby_compiler.rb +12 -12
  118. data/lib/knj/knj.rb +12 -11
  119. data/lib/knj/knj_controller.rb +13 -8
  120. data/lib/knj/knjdb/drivers/mysql/knjdb_mysql.rb +499 -316
  121. data/lib/knj/knjdb/drivers/mysql/knjdb_mysql_columns.rb +127 -125
  122. data/lib/knj/knjdb/drivers/mysql/knjdb_mysql_indexes.rb +43 -25
  123. data/lib/knj/knjdb/drivers/mysql/knjdb_mysql_tables.rb +316 -241
  124. data/lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3.rb +12 -0
  125. data/lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_columns.rb +146 -146
  126. data/lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_indexes.rb +24 -24
  127. data/lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_tables.rb +283 -283
  128. data/lib/knj/knjdb/libknjdb.rb +96 -52
  129. data/lib/knj/knjdb/libknjdb_java_sqlite3.rb +78 -78
  130. data/lib/knj/knjdb/libknjdb_row.rb +147 -147
  131. data/lib/knj/knjdb/libknjdb_sqlite3_ironruby.rb +61 -61
  132. data/lib/knj/knjdb/revision.rb +262 -0
  133. data/lib/knj/libqt.rb +69 -69
  134. data/lib/knj/libqt_window.rb +8 -8
  135. data/lib/knj/locales.rb +62 -52
  136. data/lib/knj/maemo/fremantle-calendar/fremantle-calendar.rb +54 -54
  137. data/lib/knj/mail.rb +73 -73
  138. data/lib/knj/mailobj.rb +82 -80
  139. data/lib/knj/mount.rb +113 -113
  140. data/lib/knj/notify.rb +11 -11
  141. data/lib/knj/nvidia_settings.rb +43 -43
  142. data/lib/knj/objects/objects_sqlhelper.rb +474 -0
  143. data/lib/knj/objects.rb +569 -793
  144. data/lib/knj/opts.rb +38 -38
  145. data/lib/knj/os.rb +176 -158
  146. data/lib/knj/php.rb +853 -683
  147. data/lib/knj/php_parser/arguments.rb +3 -3
  148. data/lib/knj/php_parser/functions.rb +95 -95
  149. data/lib/knj/php_parser/php_parser.rb +16 -16
  150. data/lib/knj/php_parser/tests/test.rb +6 -6
  151. data/lib/knj/php_parser/tests/test_function_run.rb +6 -6
  152. data/lib/knj/power_manager.rb +29 -29
  153. data/lib/knj/process.rb +457 -0
  154. data/lib/knj/process_meta.rb +400 -0
  155. data/lib/knj/rand.rb +8 -8
  156. data/lib/knj/retry.rb +69 -69
  157. data/lib/knj/rhodes/delegate.rb +414 -0
  158. data/lib/knj/rhodes/rhodes.rb +114 -40
  159. data/lib/knj/rhodes/weakref.rb +80 -0
  160. data/lib/knj/rsvgbin.rb +18 -18
  161. data/lib/knj/scripts/degulesider.rb +2 -2
  162. data/lib/knj/scripts/filesearch.rb +35 -35
  163. data/lib/knj/scripts/ip2location.rb +2 -2
  164. data/lib/knj/scripts/keepalive.rb +2 -2
  165. data/lib/knj/scripts/php_to_rb_helper.rb +376 -0
  166. data/lib/knj/scripts/process_meta_exec.rb +104 -0
  167. data/lib/knj/scripts/svn_merge.rb +21 -21
  168. data/lib/knj/scripts/upgrade_knjrbfw_checker.rb +26 -26
  169. data/lib/knj/sms.rb +52 -52
  170. data/lib/knj/sshrobot/sshrobot.rb +90 -88
  171. data/lib/knj/sshrobot.rb +1 -0
  172. data/lib/knj/strings.rb +186 -74
  173. data/lib/knj/sysuser.rb +25 -25
  174. data/lib/knj/table_writer.rb +97 -0
  175. data/lib/knj/tests/compiler/compiler_test.rb +2 -2
  176. data/lib/knj/tests/test_degulesider.rb +1 -1
  177. data/lib/knj/tests/test_http2_proxy.rb +26 -0
  178. data/lib/knj/tests/test_mount.rb +9 -9
  179. data/lib/knj/tests/test_retry.rb +17 -17
  180. data/lib/knj/thread.rb +23 -24
  181. data/lib/knj/thread2.rb +45 -45
  182. data/lib/knj/threadhandler.rb +135 -102
  183. data/lib/knj/threadpool.rb +195 -145
  184. data/lib/knj/translations.rb +128 -119
  185. data/lib/knj/unix_proc.rb +80 -80
  186. data/lib/knj/web.rb +947 -881
  187. data/lib/knj/webscripts/image.rhtml +142 -67
  188. data/lib/knj/win.rb +2 -2
  189. data/lib/knj/win_registry.rb +58 -58
  190. data/lib/knj/win_tightvnc.rb +125 -125
  191. data/lib/knj/wref.rb +104 -0
  192. data/lib/knj/x11vnc.rb +46 -46
  193. data/lib/knj/youtube.rb +33 -36
  194. data/lib/knjrbfw.rb +1 -0
  195. data/spec/cmd_parser_spec.rb +25 -0
  196. data/spec/db_spec.rb +40 -0
  197. data/spec/db_spec_encoding_test_file.txt +1 -0
  198. data/spec/http2_spec.rb +37 -0
  199. data/spec/knjrbfw_spec.rb +17 -15
  200. data/spec/php_spec.rb +69 -0
  201. data/spec/process_meta_spec.rb +150 -0
  202. data/spec/process_spec.rb +107 -0
  203. data/spec/strings_spec.rb +21 -0
  204. data/spec/web_spec.rb +16 -0
  205. metadata +42 -21
  206. data/lib/knj/autoload/json_autoload.rb +0 -7
  207. data/lib/knj/autoload/twitter.rb +0 -2
  208. data/lib/knj/ext/webrick.rb +0 -31
  209. data/lib/knj/jruby-gtk2/gtk-4.0.jar +0 -0
  210. data/lib/knj/knjdb/mysql-connector-java-5.1.13-bin.jar +0 -0
  211. data/lib/knj/knjdb/sqlitejdbc-v056.jar +0 -0
@@ -1,5 +1,40 @@
1
1
  <%
2
- idstr = Knj::Php.md5("#{_get["path"]}_#{_get["smartsize"].to_i}_#{_get["width"].to_i}_#{_get["height"].to_i}_#{_get["maxwidth"].to_i}_#{_get["maxheight"].to_i}_#{_get["rounded_corners"].to_i}_#{_get["border"].to_i}_#{_get["border_color"]}")
2
+ #Support for the PHP-version... Comes handy when converting PHP to Ruby...
3
+ if !_get["path"]
4
+ trans = {
5
+ "picture" => "path"
6
+ }
7
+
8
+ if _get["edgesize"]
9
+ _get["rounded_corners"] = (_get["edgesize"].to_f / 3.0).to_i
10
+ end
11
+
12
+ if _get["edgeborder"]
13
+ if _get["edgeborder"].length == 6
14
+ _get["border_color"] = "##{_get["edgeborder"]}"
15
+ else
16
+ _get["border_color"] = _get["edbeborder"]
17
+ end
18
+ end
19
+
20
+ if _get["edgeborder"]
21
+ _get["border"] = 1
22
+ end
23
+
24
+ trans.each do |key, val|
25
+ _get[val] = _get[key] if _get[key]
26
+ end
27
+ end
28
+
29
+
30
+ idstr = Digest::MD5.hexdigest("#{_get["path"]}_#{_get["smartsize"].to_i}_#{_get["width"].to_i}_#{_get["height"].to_i}_#{_get["maxwidth"].to_i}_#{_get["maxheight"].to_i}_#{_get["rounded_corners"].to_i}_#{_get["border"].to_i}_#{_get["border_color"]}")
31
+
32
+ if !_get["path"] or !File.exists?(_get["path"])
33
+ print "File does not exist: '#{_get["path"]}'.\n"
34
+ exit
35
+ end
36
+
37
+ time_orig = File.mtime(_get["path"])
3
38
 
4
39
  tmp_use = false
5
40
  tmp_write = false
@@ -10,7 +45,6 @@
10
45
  tmp_write = true if !tmp_exists
11
46
 
12
47
  if !tmp_write and tmp_exists
13
- time_orig = File.mtime(_get["path"])
14
48
  time_cache = File.mtime(tmp_path)
15
49
 
16
50
  if time_orig > time_cache
@@ -19,83 +53,124 @@
19
53
  end
20
54
  end
21
55
 
22
- if !_get["path"] or !File.exists?(_get["path"])
23
- print "File does not exist: '#{_get["path"]}'.\n"
24
- exit
56
+ if _get["force"] == "true" or _get["force"] == "1"
57
+ force = true
58
+ else
59
+ force = false
25
60
  end
61
+
62
+ notchanged = false
26
63
 
27
- if !tmp_use or tmp_write or _get["force"].to_i > 0
28
- pic = Magick::Image.read(_get["path"]).first
29
- pic.format = "png"
30
-
31
- width = pic.columns
32
- height = pic.rows
33
-
34
- height = _get["height"].to_i if _get["height"]
35
- width = _get["width"].to_i if _get["width"]
36
-
37
- if _get["smartsize"]
38
- if pic.columns > pic.rows
39
- width = _get["smartsize"].to_i
40
- height = (pic.rows.to_f / (pic.columns.to_f / width.to_f)).to_i
41
- else
42
- height = _get["smartsize"].to_i
43
- width = (pic.columns.to_f / (pic.rows.to_f / height.to_f)).to_i
44
- end
45
- end
46
-
47
- if _get["maxwidth"]
48
- maxwidth = _get["maxwidth"].to_i
49
-
50
- if width > maxwidth
51
- height = (pic.rows.to_f / (pic.columns.to_f / maxwidth.to_f)).to_i
52
- width = maxwidth
53
- end
54
- end
55
-
56
- if _get["maxheight"]
57
- maxheight = _get["maxheight"].to_i
58
-
59
- if height > maxheight
60
- width = (pic.columns.to_f / (pic.rows.to_f / maxheight.to_f)).to_i
61
- height = maxheight
62
- end
63
- end
64
-
65
- if _get["width"] and _get["height"]
66
- width = _get["width"].to_i
67
- height = _get["height"].to_i
68
- end
69
-
70
- if height != pic.rows or width != pic.columns
71
- pic = pic.resize_to_fit(width.to_i, height.to_i)
72
- end
73
-
74
- if _get["rounded_corners"]
75
- args = {:img => pic, :radius => _get["rounded_corners"].to_i}
64
+ if _httpsession.handler.modified_since and time_cache and _httpsession.handler.modified_since.utc.to_s == time_cache.utc.to_s
65
+ notchanged = true
66
+ elsif _httpsession.handler.modified_since and _httpsession.handler.modified_since.utc.to_s == time_orig.utc.to_s
67
+ notchanged = true
68
+ end
69
+
70
+ if notchanged and !force
71
+ _httpsession.resp.status = 304
72
+ exit
73
+ end
74
+
75
+ if !tmp_use or tmp_write or force
76
+ blob_cont = nil
77
+ Knj::Process_meta.new("debug_err" => true) do |subproc|
78
+ subproc.static("Object", "require", "rubygems")
79
+ subproc.static("Object", "require", "#{File.dirname(Knj::Os.realpath(__FILE__))}/../../knjrbfw.rb")
80
+ subproc.static("Object", "require", "knj/autoload")
81
+ subproc.static("Dir", "chdir", File.dirname(__FILE__))
76
82
 
77
- if _get["border"] and _get["border_color"]
78
- args[:border] = _get["border"].to_i
79
- args[:border_color] = _get["border_color"]
83
+ list_proxy = subproc.proxy_from_static("Magick::Image", "read", _get["path"])
84
+ pic = subproc.proxy_from_call(list_proxy, "first")
85
+ #pic = Magick::Image.read(_get["path"]).first
86
+
87
+ if !pic
88
+ print "Could not open image from '#{_get["path"]}'."
89
+ exit
80
90
  end
81
91
 
82
- Knj::Image.rounded_corners(args)
92
+ pic._pm_send_noret("format=", "png")
93
+
94
+ pic_columns = pic.columns
95
+ pic_rows = pic.rows
96
+
97
+ width = pic_columns
98
+ height = pic_rows
99
+
100
+ height = _get["height"].to_i if _get["height"]
101
+ width = _get["width"].to_i if _get["width"]
102
+
103
+ if _get["smartsize"]
104
+ if pic_columns > pic_rows
105
+ width = _get["smartsize"].to_i
106
+ height = (pic_rows.to_f / (pic_columns.to_f / width.to_f)).to_i
107
+ else
108
+ height = _get["smartsize"].to_i
109
+ width = (pic_columns.to_f / (pic_rows.to_f / height.to_f)).to_i
110
+ end
111
+ end
112
+
113
+ if _get["maxwidth"]
114
+ maxwidth = _get["maxwidth"].to_i
115
+
116
+ if width > maxwidth
117
+ height = (pic_rows.to_f / (pic_columns.to_f / maxwidth.to_f)).to_i
118
+ width = maxwidth
119
+ end
120
+ end
121
+
122
+ if _get["maxheight"]
123
+ maxheight = _get["maxheight"].to_i
124
+
125
+ if height > maxheight
126
+ width = (pic_columns.to_f / (pic_rows.to_f / maxheight.to_f)).to_i
127
+ height = maxheight
128
+ end
129
+ end
130
+
131
+ if _get["width"] and _get["height"]
132
+ width = _get["width"].to_i
133
+ height = _get["height"].to_i
134
+ end
135
+
136
+ if height != pic_rows or width != pic_columns
137
+ pic = subproc.proxy_from_call(pic, "resize_to_fit", width.to_i, height.to_i)
138
+ #pic = pic.resize_to_fit(width.to_i, height.to_i)
139
+ end
140
+
141
+ if _get["rounded_corners"]
142
+ args = {:img => pic, :radius => _get["rounded_corners"].to_i}
143
+
144
+ if _get["border"] and _get["border_color"]
145
+ args[:border] = _get["border"].to_i
146
+ args[:border_color] = _get["border_color"]
147
+ end
148
+
149
+ #Spawn arguments-hash for Knj::Image.rounded_corners in subprocess.
150
+ proxy_hash = subproc.new("{}", args)
151
+
152
+ #Call rounded_corners with the proxy-hash.
153
+ subproc.static_noret("Knj::Image", "rounded_corners", proxy_hash)
154
+ #Knj::Image.rounded_corners(args)
155
+ end
156
+
157
+ blob_cont = pic.to_blob
83
158
  end
84
-
85
- blob_cont = pic.to_blob
86
159
  end
87
160
 
88
161
  if tmp_write and blob_cont
89
- Knj::Php.file_put_contents(tmp_path, blob_cont)
162
+ File.open(tmp_path, "w") do |fp|
163
+ fp.write(blob_cont)
164
+ end
90
165
  end
91
166
 
92
167
  if tmp_use
93
- Knj::Php.header("Last-Modified: #{time_orig.httpdate} GMT") if time_orig
94
- Knj::Php.header("Content-Type: image/png")
95
- print File.read(tmp_path)
168
+ _kas.header("Last-Modified", "#{time_orig.httpdate} GMT") if time_orig
169
+ _kas.header("Content-Type", "image/png")
170
+ _httpsession.force_content(File.new(tmp_path))
96
171
  else
97
- Knj::Php.header("Last-Modified: #{time_orig.httpdate} GMT") if time_orig
98
- Knj::Php.header("Content-Type: image/png")
99
- print blob_cont
172
+ _kas.header("Last-Modified", "#{time_orig.httpdate} GMT") if time_orig
173
+ _kas.header("Content-Type", "image/png")
174
+ _httpsession.force_content(blob_cont)
100
175
  end
101
176
  %>
data/lib/knj/win.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module Knj::Win
2
- autoload :Registry, $knjpath + "win_registry"
3
- autoload :TightVNC, $knjpath + "win_tightvnc"
2
+ autoload :Registry, $knjpath + "win_registry"
3
+ autoload :TightVNC, $knjpath + "win_tightvnc"
4
4
  end
@@ -1,60 +1,60 @@
1
1
  class Knj::Win::Registry
2
- def self.const(type)
3
- if type == :cur_user
4
- return Win32::Registry::HKEY_CURRENT_USER
5
- elsif type == :local_machine
6
- return Win32::Registry::HKEY_LOCAL_MACHINE
7
- else
8
- raise "Unknown type: " + type.to_s
9
- end
10
- end
11
-
12
- def self.type(in_type)
13
- return Win32::Registry::REG_SZ if in_type == :sz
14
- return Win32::Registry::REG_DWORD if in_type == :dword
15
- return Win32::Registry::REG_BINARY if in_type == :bin
16
- return nil if in_type == nil
17
-
18
- raise "Unknown type: #{in_type}"
19
- end
20
-
21
- def self.get(type, regpath, key, in_type = nil)
22
- hkey = self.const(type)
23
- hkey.open(regpath, Win32::Registry::KEY_ALL_ACCESS) do |reg|
24
- return reg[key, self.type(in_type)].to_s
25
-
26
- #reg.each_key do |k, v|
27
- # puts k, v
28
- #end
29
- #reg.each_value do |k, v|
30
- # puts k, v
31
- #end
32
-
33
- #reg_typ, reg_val = reg.read('')
34
- #return {
35
- # :type => reg_typ,
36
- # :value => reg_val
37
- #}
38
- end
39
- end
40
-
41
- def self.set(type, regpath, key, content = nil, in_type = nil)
42
- if key.is_a?(Array)
43
- key.each do |v|
44
- if v.is_a?(Array)
45
- self.set(type, regpath, v[0], v[1], v[2])
46
- elsif v.is_a?(Hash)
47
- self.set(type, regpath, k, v[:val], v[:type])
48
- else
49
- raise "Unknown type: #{v.class.to_s}"
50
- end
51
- end
52
- else
53
- hkey = self.const(type)
54
- hkey.create(regpath)
55
- hkey.open(regpath, Win32::Registry::KEY_ALL_ACCESS) do |reg|
56
- reg[key.to_s, self.type(in_type)] = content.to_s
57
- end
58
- end
59
- end
2
+ def self.const(type)
3
+ if type == :cur_user
4
+ return Win32::Registry::HKEY_CURRENT_USER
5
+ elsif type == :local_machine
6
+ return Win32::Registry::HKEY_LOCAL_MACHINE
7
+ else
8
+ raise "Unknown type: " + type.to_s
9
+ end
10
+ end
11
+
12
+ def self.type(in_type)
13
+ return Win32::Registry::REG_SZ if in_type == :sz
14
+ return Win32::Registry::REG_DWORD if in_type == :dword
15
+ return Win32::Registry::REG_BINARY if in_type == :bin
16
+ return nil if in_type == nil
17
+
18
+ raise "Unknown type: #{in_type}"
19
+ end
20
+
21
+ def self.get(type, regpath, key, in_type = nil)
22
+ hkey = self.const(type)
23
+ hkey.open(regpath, Win32::Registry::KEY_ALL_ACCESS) do |reg|
24
+ return reg[key, self.type(in_type)].to_s
25
+
26
+ #reg.each_key do |k, v|
27
+ # puts k, v
28
+ #end
29
+ #reg.each_value do |k, v|
30
+ # puts k, v
31
+ #end
32
+
33
+ #reg_typ, reg_val = reg.read('')
34
+ #return {
35
+ # :type => reg_typ,
36
+ # :value => reg_val
37
+ #}
38
+ end
39
+ end
40
+
41
+ def self.set(type, regpath, key, content = nil, in_type = nil)
42
+ if key.is_a?(Array)
43
+ key.each do |v|
44
+ if v.is_a?(Array)
45
+ self.set(type, regpath, v[0], v[1], v[2])
46
+ elsif v.is_a?(Hash)
47
+ self.set(type, regpath, k, v[:val], v[:type])
48
+ else
49
+ raise "Unknown type: #{v.class.to_s}"
50
+ end
51
+ end
52
+ else
53
+ hkey = self.const(type)
54
+ hkey.create(regpath)
55
+ hkey.open(regpath, Win32::Registry::KEY_ALL_ACCESS) do |reg|
56
+ reg[key.to_s, self.type(in_type)] = content.to_s
57
+ end
58
+ end
59
+ end
60
60
  end
@@ -1,127 +1,127 @@
1
1
  class Knj::Win::TightVNC
2
- def initialize(args)
3
- @args = ArrayExt.hash_sym(args)
4
-
5
- @args[:port] = 5900 if !@args[:port]
6
- @args[:port_http] = 5800 if !@args[:http_port]
7
-
8
- raise "No path given." if !@args[:path]
9
-
10
- exefile = @args[:path] + "/WinVNC.exe"
11
- raise "#{exefile} was not found." if !File.exists?(exefile)
12
-
13
- @wmi = WIN32OLE.connect("winmgmts://")
14
- processes = @wmi.ExecQuery("SELECT * FROM win32_process")
15
- ended = false
16
- for process in processes do
17
- if process.Name == "WinVNC.exe"
18
- process.Terminate
19
- ended = true
20
- end
21
- end
22
-
23
- sleep 1 if ended
24
-
25
- #print Win::Registry.get(:cur_user, 'Software\ORL\WinVNC3', 'Password', :sz).unpack('H*')[0] + "\n"
26
- #print ["160e9d46f26586ca"].pack('H*').unpack('H*')[0] + "\n"
27
- #exit
28
-
29
- Win::Registry.set(:cur_user, 'Software\ORL\WinVNC3', [
30
- ["AutoPortSelect", 1, :dword],
31
- ["BlankScreen", 0, :dword],
32
- ["DontSetHooks", 0, :dword],
33
- ["DontUseDriver", 0, :dword],
34
- ["DriverDirectAccess", 1, :dword],
35
- ["EnableFileTransfers", 1, :dword],
36
- ["HTTPPortNumber", @args[:port_http], :dword],
37
- ["IdleTimeout", 0, :dword],
38
- ["InputsEnabled", 1, :dword],
39
- ["LocalInputsDisabled", 0, :dword],
40
- ["LocalInputsPriority", 0, :dword],
41
- ["LocalInputsPriorityTime", 3, :dword],
42
- ["LockSetting", 0, :dword],
43
- ["OnlyPollConsole", 1, :dword],
44
- ["OnlyPollOnEvent", 0, :dword],
45
- ["PollForeground", 1, :dword],
46
- ["PollFullScreen", 0, :dword],
47
- ["PollingCycle", 300, :dword],
48
- ["PollUnderCursor", 0, :dword],
49
- ["PollUnderCursor", @args[:port], :dword],
50
- ["QueryAccept", 0, :dword],
51
- ["QueryAllowNoPass", 0, :dword],
52
- ["QuerySetting", 2, :dword],
53
- ["QueryTimeout", 30, :dword],
54
- ["RemoveWallpaper", 0, :dword],
55
- ["SocketConnect", 1, :dword],
56
- ["Password", ["160e9d46f26586ca"].pack('H*'), :bin],
57
- ["PasswordViewOnly", ["160e9d46f26586ca"].pack('H*'), :bin]
58
- ])
59
- Win::Registry.set(:local_machine, 'Software\ORL\WinVNC3', [
60
- ["AllowLoopback", 1, :dword],
61
- ["LoopbackOnly", 0, :dword]
62
- ])
63
- #password is of this moment only 'kaspernj'.
64
-
65
- @wmi = WIN32OLE.connect("winmgmts://")
66
- processes = @wmi.ExecQuery("SELECT * FROM win32_process")
67
- ended = false
68
- for process in processes do
69
- if process.Name == "WinVNC.exe"
70
- process.Terminate
71
- ended = true
72
- end
73
- end
74
-
75
- sleep 1 if ended
76
-
77
- Knj::Thread.new do
78
- IO.popen(exefile) do |process|
79
- #nothing
80
- end
81
- end
82
-
83
- sleep 1
84
-
85
- @processes = @wmi.ExecQuery("SELECT * FROM win32_process")
86
- for process in @processes do
87
- if process.Name == "WinVNC.exe"
88
- @process = process
89
- break
90
- end
91
- end
92
-
93
- raise "Could not start WinVNC.exe." if !@process
94
-
95
- Kernel.at_exit do
96
- self.close
97
- end
98
- end
99
-
100
- def open?
101
- begin
102
- @process.GetOwner
103
- return true
104
- rescue Exception => e
105
- return false
106
- end
107
- end
108
-
109
- def close
110
- return nil if !@process
111
-
112
- begin
113
- @process.Terminate
114
- rescue Exception => e
115
- if e.class.to_s == "WIN32OLERuntimeError" and e.message.index("Terminate") != nil
116
- #do nothing.
117
- else
118
- raise e
119
- end
120
- end
121
-
122
- @process = nil
123
- @args = nil
124
- @wmi = nil
125
- @processes = nil
126
- end
2
+ def initialize(args)
3
+ @args = ArrayExt.hash_sym(args)
4
+
5
+ @args[:port] = 5900 if !@args[:port]
6
+ @args[:port_http] = 5800 if !@args[:http_port]
7
+
8
+ raise "No path given." if !@args[:path]
9
+
10
+ exefile = @args[:path] + "/WinVNC.exe"
11
+ raise "#{exefile} was not found." if !File.exists?(exefile)
12
+
13
+ @wmi = WIN32OLE.connect("winmgmts://")
14
+ processes = @wmi.ExecQuery("SELECT * FROM win32_process")
15
+ ended = false
16
+ for process in processes do
17
+ if process.Name == "WinVNC.exe"
18
+ process.Terminate
19
+ ended = true
20
+ end
21
+ end
22
+
23
+ sleep 1 if ended
24
+
25
+ #print Win::Registry.get(:cur_user, 'Software\ORL\WinVNC3', 'Password', :sz).unpack('H*')[0] + "\n"
26
+ #print ["160e9d46f26586ca"].pack('H*').unpack('H*')[0] + "\n"
27
+ #exit
28
+
29
+ Win::Registry.set(:cur_user, 'Software\ORL\WinVNC3', [
30
+ ["AutoPortSelect", 1, :dword],
31
+ ["BlankScreen", 0, :dword],
32
+ ["DontSetHooks", 0, :dword],
33
+ ["DontUseDriver", 0, :dword],
34
+ ["DriverDirectAccess", 1, :dword],
35
+ ["EnableFileTransfers", 1, :dword],
36
+ ["HTTPPortNumber", @args[:port_http], :dword],
37
+ ["IdleTimeout", 0, :dword],
38
+ ["InputsEnabled", 1, :dword],
39
+ ["LocalInputsDisabled", 0, :dword],
40
+ ["LocalInputsPriority", 0, :dword],
41
+ ["LocalInputsPriorityTime", 3, :dword],
42
+ ["LockSetting", 0, :dword],
43
+ ["OnlyPollConsole", 1, :dword],
44
+ ["OnlyPollOnEvent", 0, :dword],
45
+ ["PollForeground", 1, :dword],
46
+ ["PollFullScreen", 0, :dword],
47
+ ["PollingCycle", 300, :dword],
48
+ ["PollUnderCursor", 0, :dword],
49
+ ["PollUnderCursor", @args[:port], :dword],
50
+ ["QueryAccept", 0, :dword],
51
+ ["QueryAllowNoPass", 0, :dword],
52
+ ["QuerySetting", 2, :dword],
53
+ ["QueryTimeout", 30, :dword],
54
+ ["RemoveWallpaper", 0, :dword],
55
+ ["SocketConnect", 1, :dword],
56
+ ["Password", ["160e9d46f26586ca"].pack('H*'), :bin],
57
+ ["PasswordViewOnly", ["160e9d46f26586ca"].pack('H*'), :bin]
58
+ ])
59
+ Win::Registry.set(:local_machine, 'Software\ORL\WinVNC3', [
60
+ ["AllowLoopback", 1, :dword],
61
+ ["LoopbackOnly", 0, :dword]
62
+ ])
63
+ #password is of this moment only 'kaspernj'.
64
+
65
+ @wmi = WIN32OLE.connect("winmgmts://")
66
+ processes = @wmi.ExecQuery("SELECT * FROM win32_process")
67
+ ended = false
68
+ for process in processes do
69
+ if process.Name == "WinVNC.exe"
70
+ process.Terminate
71
+ ended = true
72
+ end
73
+ end
74
+
75
+ sleep 1 if ended
76
+
77
+ Knj::Thread.new do
78
+ IO.popen(exefile) do |process|
79
+ #nothing
80
+ end
81
+ end
82
+
83
+ sleep 1
84
+
85
+ @processes = @wmi.ExecQuery("SELECT * FROM win32_process")
86
+ for process in @processes do
87
+ if process.Name == "WinVNC.exe"
88
+ @process = process
89
+ break
90
+ end
91
+ end
92
+
93
+ raise "Could not start WinVNC.exe." if !@process
94
+
95
+ Kernel.at_exit do
96
+ self.close
97
+ end
98
+ end
99
+
100
+ def open?
101
+ begin
102
+ @process.GetOwner
103
+ return true
104
+ rescue Exception => e
105
+ return false
106
+ end
107
+ end
108
+
109
+ def close
110
+ return nil if !@process
111
+
112
+ begin
113
+ @process.Terminate
114
+ rescue Exception => e
115
+ if e.class.to_s == "WIN32OLERuntimeError" and e.message.index("Terminate") != nil
116
+ #do nothing.
117
+ else
118
+ raise e
119
+ end
120
+ end
121
+
122
+ @process = nil
123
+ @args = nil
124
+ @wmi = nil
125
+ @processes = nil
126
+ end
127
127
  end