knjrbfw 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. data/.document +5 -0
  2. data/.rspec +1 -0
  3. data/Gemfile +14 -0
  4. data/Gemfile.lock +32 -0
  5. data/LICENSE.txt +20 -0
  6. data/README.rdoc +19 -0
  7. data/Rakefile +49 -0
  8. data/VERSION +1 -0
  9. data/lib/knj/.gitignore +1 -0
  10. data/lib/knj/arrayext.rb +157 -0
  11. data/lib/knj/autoload/activesupport.rb +2 -0
  12. data/lib/knj/autoload/backups/facets_dictionary.rb +430 -0
  13. data/lib/knj/autoload/backups/parsedate.rb +53 -0
  14. data/lib/knj/autoload/backups/ping.rb +64 -0
  15. data/lib/knj/autoload/cinch.rb +2 -0
  16. data/lib/knj/autoload/erubis.rb +6 -0
  17. data/lib/knj/autoload/facebooker.rb +3 -0
  18. data/lib/knj/autoload/facets_dictionary.rb +7 -0
  19. data/lib/knj/autoload/gd2.rb +2 -0
  20. data/lib/knj/autoload/gettext.rb +9 -0
  21. data/lib/knj/autoload/gtk2.rb +5 -0
  22. data/lib/knj/autoload/json_autoload.rb +7 -0
  23. data/lib/knj/autoload/magick.rb +6 -0
  24. data/lib/knj/autoload/mysql.rb +6 -0
  25. data/lib/knj/autoload/parsedate.rb +1 -0
  26. data/lib/knj/autoload/ping.rb +64 -0
  27. data/lib/knj/autoload/rexml.rb +12 -0
  28. data/lib/knj/autoload/soap.rb +3 -0
  29. data/lib/knj/autoload/sqlite3.rb +6 -0
  30. data/lib/knj/autoload/tmail.rb +6 -0
  31. data/lib/knj/autoload/twitter.rb +2 -0
  32. data/lib/knj/autoload/xmlsimple.rb +6 -0
  33. data/lib/knj/autoload/zip.rb +6 -0
  34. data/lib/knj/autoload.rb +136 -0
  35. data/lib/knj/compiler.rb +53 -0
  36. data/lib/knj/cpufreq.rb +40 -0
  37. data/lib/knj/datarow.rb +256 -0
  38. data/lib/knj/datestamp.rb +91 -0
  39. data/lib/knj/datet.rb +448 -0
  40. data/lib/knj/degulesider.rb +46 -0
  41. data/lib/knj/erb/apache_knjerb.conf +8 -0
  42. data/lib/knj/erb/cache/README +1 -0
  43. data/lib/knj/erb/erb.rb +21 -0
  44. data/lib/knj/erb/erb_1.9.rb +13 -0
  45. data/lib/knj/erb/erb_cache_clean.rb +20 -0
  46. data/lib/knj/erb/erb_fcgi.rb +44 -0
  47. data/lib/knj/erb/erb_fcgi_1.9.rb +44 -0
  48. data/lib/knj/erb/erb_fcgi_jruby.rb +7 -0
  49. data/lib/knj/erb/erb_jruby.rb +22 -0
  50. data/lib/knj/erb/include.rb +248 -0
  51. data/lib/knj/errors.rb +19 -0
  52. data/lib/knj/eruby.rb +224 -0
  53. data/lib/knj/event_filemod.rb +53 -0
  54. data/lib/knj/event_handler.rb +69 -0
  55. data/lib/knj/exchangerates.rb +39 -0
  56. data/lib/knj/ext/webrick.rb +31 -0
  57. data/lib/knj/filesystem.rb +8 -0
  58. data/lib/knj/fs/drivers/filesystem.rb +14 -0
  59. data/lib/knj/fs/drivers/ftp.rb +33 -0
  60. data/lib/knj/fs/drivers/ssh.rb +28 -0
  61. data/lib/knj/fs/fs.rb +36 -0
  62. data/lib/knj/gettext_fallback.rb +17 -0
  63. data/lib/knj/gettext_threadded.rb +77 -0
  64. data/lib/knj/google_sitemap.rb +59 -0
  65. data/lib/knj/gtk2.rb +277 -0
  66. data/lib/knj/gtk2_cb.rb +85 -0
  67. data/lib/knj/gtk2_menu.rb +57 -0
  68. data/lib/knj/gtk2_statuswindow.rb +64 -0
  69. data/lib/knj/gtk2_tv.rb +63 -0
  70. data/lib/knj/hash_methods.rb +37 -0
  71. data/lib/knj/http.rb +190 -0
  72. data/lib/knj/includes/appserver_cli.rb +39 -0
  73. data/lib/knj/ip2location.rb +22 -0
  74. data/lib/knj/ironruby-gtk2/button.rb +19 -0
  75. data/lib/knj/ironruby-gtk2/dialog.rb +44 -0
  76. data/lib/knj/ironruby-gtk2/entry.rb +9 -0
  77. data/lib/knj/ironruby-gtk2/gdk_event.rb +3 -0
  78. data/lib/knj/ironruby-gtk2/gdk_eventbutton.rb +13 -0
  79. data/lib/knj/ironruby-gtk2/gdk_pixbuf.rb +11 -0
  80. data/lib/knj/ironruby-gtk2/gladexml.rb +104 -0
  81. data/lib/knj/ironruby-gtk2/glib.rb +15 -0
  82. data/lib/knj/ironruby-gtk2/gtk2.rb +148 -0
  83. data/lib/knj/ironruby-gtk2/gtk_builder.rb +31 -0
  84. data/lib/knj/ironruby-gtk2/gtk_cellrenderertext.rb +5 -0
  85. data/lib/knj/ironruby-gtk2/gtk_combobox.rb +19 -0
  86. data/lib/knj/ironruby-gtk2/gtk_filechooserbutton.rb +5 -0
  87. data/lib/knj/ironruby-gtk2/gtk_liststore.rb +18 -0
  88. data/lib/knj/ironruby-gtk2/gtk_menu.rb +5 -0
  89. data/lib/knj/ironruby-gtk2/gtk_menuitem.rb +7 -0
  90. data/lib/knj/ironruby-gtk2/gtk_statusicon.rb +8 -0
  91. data/lib/knj/ironruby-gtk2/gtk_treeiter.rb +24 -0
  92. data/lib/knj/ironruby-gtk2/gtk_treeselection.rb +16 -0
  93. data/lib/knj/ironruby-gtk2/gtk_treeview.rb +19 -0
  94. data/lib/knj/ironruby-gtk2/gtk_treeviewcolumn.rb +32 -0
  95. data/lib/knj/ironruby-gtk2/iconsize.rb +3 -0
  96. data/lib/knj/ironruby-gtk2/image.rb +15 -0
  97. data/lib/knj/ironruby-gtk2/label.rb +19 -0
  98. data/lib/knj/ironruby-gtk2/stock.rb +4 -0
  99. data/lib/knj/ironruby-gtk2/tests/test.glade +15 -0
  100. data/lib/knj/ironruby-gtk2/tests/test_2.rb +22 -0
  101. data/lib/knj/ironruby-gtk2/tests/test_ironruby_window.rb +47 -0
  102. data/lib/knj/ironruby-gtk2/vbox.rb +5 -0
  103. data/lib/knj/ironruby-gtk2/window.rb +23 -0
  104. data/lib/knj/jruby-gtk2/builder/test_builder.glade +43 -0
  105. data/lib/knj/jruby-gtk2/builder/test_builder.rb +19 -0
  106. data/lib/knj/jruby-gtk2/builder/test_builder.ui +43 -0
  107. data/lib/knj/jruby-gtk2/builder.rb +27 -0
  108. data/lib/knj/jruby-gtk2/cellrenderertext.rb +12 -0
  109. data/lib/knj/jruby-gtk2/checkbutton.rb +3 -0
  110. data/lib/knj/jruby-gtk2/combobox.rb +29 -0
  111. data/lib/knj/jruby-gtk2/dialog.rb +44 -0
  112. data/lib/knj/jruby-gtk2/eventbutton.rb +21 -0
  113. data/lib/knj/jruby-gtk2/gladexml.rb +99 -0
  114. data/lib/knj/jruby-gtk2/gtk-4.0.jar +0 -0
  115. data/lib/knj/jruby-gtk2/gtk2.rb +246 -0
  116. data/lib/knj/jruby-gtk2/hbox.rb +10 -0
  117. data/lib/knj/jruby-gtk2/iconsize.rb +5 -0
  118. data/lib/knj/jruby-gtk2/image.rb +10 -0
  119. data/lib/knj/jruby-gtk2/liststore.rb +56 -0
  120. data/lib/knj/jruby-gtk2/menu.rb +40 -0
  121. data/lib/knj/jruby-gtk2/progressbar.rb +12 -0
  122. data/lib/knj/jruby-gtk2/statusicon.rb +8 -0
  123. data/lib/knj/jruby-gtk2/stock.rb +8 -0
  124. data/lib/knj/jruby-gtk2/tests/test_glade_window.glade +163 -0
  125. data/lib/knj/jruby-gtk2/tests/test_glade_window.rb +47 -0
  126. data/lib/knj/jruby-gtk2/tests/test_normal_window.rb +17 -0
  127. data/lib/knj/jruby-gtk2/tests/test_trayicon.png +0 -0
  128. data/lib/knj/jruby-gtk2/tests/test_trayicon.rb +18 -0
  129. data/lib/knj/jruby-gtk2/treeview.rb +105 -0
  130. data/lib/knj/jruby-gtk2/vbox.rb +12 -0
  131. data/lib/knj/jruby-gtk2/window.rb +11 -0
  132. data/lib/knj/jruby_compiler.rb +14 -0
  133. data/lib/knj/knj.rb +19 -0
  134. data/lib/knj/knj_controller.rb +13 -0
  135. data/lib/knj/knjdb/dbtime.rb +30 -0
  136. data/lib/knj/knjdb/drivers/mysql/knjdb_mysql.rb +327 -0
  137. data/lib/knj/knjdb/drivers/mysql/knjdb_mysql_columns.rb +130 -0
  138. data/lib/knj/knjdb/drivers/mysql/knjdb_mysql_indexes.rb +30 -0
  139. data/lib/knj/knjdb/drivers/mysql/knjdb_mysql_tables.rb +255 -0
  140. data/lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3.rb +93 -0
  141. data/lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_columns.rb +151 -0
  142. data/lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_indexes.rb +29 -0
  143. data/lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_tables.rb +300 -0
  144. data/lib/knj/knjdb/libknjdb.rb +438 -0
  145. data/lib/knj/knjdb/libknjdb_java_sqlite3.rb +83 -0
  146. data/lib/knj/knjdb/libknjdb_row.rb +149 -0
  147. data/lib/knj/knjdb/libknjdb_sqlite3_ironruby.rb +69 -0
  148. data/lib/knj/knjdb/mysql-connector-java-5.1.13-bin.jar +0 -0
  149. data/lib/knj/knjdb/sqlitejdbc-v056.jar +0 -0
  150. data/lib/knj/libqt.rb +75 -0
  151. data/lib/knj/libqt_window.rb +10 -0
  152. data/lib/knj/locale_strings.rb +3 -0
  153. data/lib/knj/locales.rb +54 -0
  154. data/lib/knj/maemo/fremantle-calendar/fremantle-calendar.rb +56 -0
  155. data/lib/knj/mail.rb +75 -0
  156. data/lib/knj/mailobj.rb +82 -0
  157. data/lib/knj/mount.rb +115 -0
  158. data/lib/knj/notify.rb +13 -0
  159. data/lib/knj/nvidia_settings.rb +45 -0
  160. data/lib/knj/objects.rb +731 -0
  161. data/lib/knj/opts.rb +38 -0
  162. data/lib/knj/os.rb +158 -0
  163. data/lib/knj/php.rb +717 -0
  164. data/lib/knj/php_parser/arguments.rb +5 -0
  165. data/lib/knj/php_parser/functions.rb +97 -0
  166. data/lib/knj/php_parser/php_parser.rb +99 -0
  167. data/lib/knj/php_parser/tests/test.rb +12 -0
  168. data/lib/knj/php_parser/tests/test_function.php +8 -0
  169. data/lib/knj/php_parser/tests/test_function_run.rb +19 -0
  170. data/lib/knj/power_manager.rb +31 -0
  171. data/lib/knj/rand.rb +10 -0
  172. data/lib/knj/retry.rb +71 -0
  173. data/lib/knj/rhodes/mutex.rb +11 -0
  174. data/lib/knj/rhodes/rhodes.js +3 -0
  175. data/lib/knj/rhodes/rhodes.rb +11 -0
  176. data/lib/knj/rsvgbin.rb +20 -0
  177. data/lib/knj/scripts/degulesider.rb +12 -0
  178. data/lib/knj/scripts/filesearch.rb +51 -0
  179. data/lib/knj/scripts/ip2location.rb +12 -0
  180. data/lib/knj/scripts/keepalive.rb +6 -0
  181. data/lib/knj/scripts/svn_merge.rb +29 -0
  182. data/lib/knj/scripts/upgrade_knjrbfw_checker.rb +41 -0
  183. data/lib/knj/sms.rb +54 -0
  184. data/lib/knj/sshrobot/sshrobot.rb +93 -0
  185. data/lib/knj/strings.rb +65 -0
  186. data/lib/knj/sysuser.rb +27 -0
  187. data/lib/knj/tests/compiler/compiler_test.rb +13 -0
  188. data/lib/knj/tests/compiler/compiler_test_file.rb +62 -0
  189. data/lib/knj/tests/test_degulesider.rb +11 -0
  190. data/lib/knj/tests/test_mount.rb +30 -0
  191. data/lib/knj/tests/test_retry.rb +30 -0
  192. data/lib/knj/thread.rb +32 -0
  193. data/lib/knj/thread2.rb +47 -0
  194. data/lib/knj/threadhandler.rb +130 -0
  195. data/lib/knj/threadpool.rb +177 -0
  196. data/lib/knj/translations.rb +139 -0
  197. data/lib/knj/unix_proc.rb +82 -0
  198. data/lib/knj/web.rb +932 -0
  199. data/lib/knj/webscripts/image.rhtml +82 -0
  200. data/lib/knj/win.rb +4 -0
  201. data/lib/knj/win_registry.rb +60 -0
  202. data/lib/knj/win_tightvnc.rb +127 -0
  203. data/lib/knj/x11vnc.rb +48 -0
  204. data/lib/knj/youtube.rb +38 -0
  205. data/lib/knjrbfw.rb +4 -0
  206. data/spec/knjrbfw_spec.rb +269 -0
  207. data/spec/spec_helper.rb +12 -0
  208. metadata +336 -0
@@ -0,0 +1,97 @@
1
+ class Knj::Php_parser
2
+ def func_args(func_name)
3
+ func_arg_count = 0
4
+ args = []
5
+
6
+ loop do
7
+ if match = self.matchclear(/\A\$#{@regex_varname}\s*(,\s*|)/)
8
+ args << {
9
+ "varname" => match[1],
10
+ "newname" => "phpvar_#{match[1]}"
11
+ }
12
+ elsif match = self.matchclear(/\A\)\s*\{/)
13
+ break
14
+ else
15
+ raise "Could not match function arguments."
16
+ end
17
+ end
18
+
19
+ @retcont += "#{self.tabs}module Knj::Php_parser::Functions\n"
20
+ @tabs += 1
21
+ @retcont += "#{self.tabs}def self.#{func_name}("
22
+
23
+ first = true
24
+ args.each do |arg|
25
+ @retcont += ", " if !first
26
+ first = false if first
27
+ @retcont += arg["newname"]
28
+ end
29
+
30
+ @retcont += ")\n"
31
+ @tabs += 1
32
+ @funcs_started += 1
33
+
34
+ self.search_newstuff
35
+ end
36
+
37
+ def func_args_single_given
38
+ arg_found = false
39
+
40
+ loop do
41
+ if !arg_found and match = self.matchclear(/\A\"/)
42
+ @retcont += "\""
43
+ self.match_semi
44
+ @retcont += ")"
45
+ arg_found = true
46
+ elsif !arg_found and match = self.matchclear(/\A\$(#{@regex_varname})/)
47
+ @retcont += "phpvar_#{match[1]}"
48
+ arg_found = true
49
+ elsif arg_found and match = self.matchclear(/\A\.\s*/)
50
+ @retcont += " + "
51
+ arg_found = false
52
+ elsif arg_found and match = self.matchclear(/\A;/)
53
+ @retcont += "\n"
54
+ break
55
+ else
56
+ raise "Could not figure out what to do."
57
+ end
58
+ end
59
+ end
60
+
61
+ def func_args_given
62
+ arg_found = false
63
+
64
+ loop do
65
+ if !arg_found and match = self.matchclear(/\A\"/)
66
+ @retcont += "\""
67
+ self.match_semi
68
+ @retcont += ")"
69
+ arg_found = true
70
+ elsif !arg_found and match = self.matchclear(/\A\$(#{@regex_varname})/)
71
+ @retcont += "phpvar_#{match[1]}"
72
+ arg_found = true
73
+ elsif arg_found and match = self.matchclear(/\A\.\s*/)
74
+ @retcont += " + "
75
+ arg_found = false
76
+ elsif arg_found and match = self.matchclear(/\A\)\s*;/)
77
+ @retcont += "\n"
78
+ break
79
+ else
80
+ raise "Could not figure out what to do."
81
+ end
82
+ end
83
+ end
84
+
85
+ def match_semi
86
+ loop do
87
+ if match = self.matchclear(/\A[A-z\d_\.]+/)
88
+ @retcont += match[0]
89
+ elsif match = self.matchclear(/\A\"/)
90
+ @retcont += "\""
91
+ break
92
+ else
93
+ raise "Could not figure out what to do."
94
+ end
95
+ end
96
+ end
97
+ end
@@ -0,0 +1,99 @@
1
+ class Knj::Php_parser
2
+ attr_reader :cont, :retcont
3
+
4
+ def initialize(args)
5
+ @args = args
6
+ @cont = File.read(@args["file"])
7
+
8
+ if !args.has_key?("require_requirements") or args["require_requirements"]
9
+ @retcont = "require \"knj/autoload\"\n"
10
+ @retcont += "require \"knj/php\"\n"
11
+ @retcont += "require \"knj/php_parser/php_parser\"\n"
12
+ @retcont += "\n"
13
+ else
14
+ @retcont = ""
15
+ end
16
+
17
+ @regex_funcname = "([A-z][A-z\d_]*)"
18
+ @regex_varname = "([A-z][A-z\d]*)"
19
+
20
+ @tabs = 0
21
+ @funcs_started = 0
22
+ end
23
+
24
+ def parse
25
+ self.search_starttag
26
+ return @retcont
27
+ end
28
+
29
+ def search_starttag
30
+ match = self.matchclear(/\A([\s\S]*?<\?(php|))/)
31
+ if !match
32
+ return nil
33
+ end
34
+
35
+ self.clear_whitespace
36
+ self.search_newstuff
37
+ end
38
+
39
+ def tabs
40
+ cont = ""
41
+ 0.upto(@tabs - 1) do |count|
42
+ cont += "\t"
43
+ end
44
+
45
+ return cont
46
+ end
47
+
48
+ def clear_regex(regex)
49
+ @cont = @cont.gsub(regex, "")
50
+ end
51
+
52
+ def clear_whitespace
53
+ @cont = @cont.gsub(/\A\s+/, "")
54
+ end
55
+
56
+ def matchclear(regex, debug = false)
57
+ if match = @cont.match(regex)
58
+ print "Before (#{debug}):\n#{@cont}\n\n" if debug
59
+ @cont = @cont.gsub(regex, "")
60
+ self.clear_whitespace
61
+ print "After (#{debug}):\n#{@cont}\n\n\n" if debug
62
+
63
+ return match
64
+ end
65
+
66
+ return false
67
+ end
68
+
69
+ def search_newstuff
70
+ loop do
71
+ if match = self.matchclear(/\Afunction\s+#{@regex_funcname}\(/)
72
+ self.func_args(match[1])
73
+ elsif match = self.matchclear(/\A(print|echo)\s+/)
74
+ @retcont += "#{self.tabs}Knj::Php.#{match[1]}("
75
+ self.func_args_single_given
76
+ elsif match = self.matchclear(/\A\}/)
77
+ @tabs -= 1
78
+ @retcont += "#{self.tabs}end\n"
79
+ @tabs -= 1
80
+ @retcont += "#{self.tabs}end\n"
81
+ elsif match = self.matchclear(/\A([A-z][A-z\d_]*)\(/)
82
+ @retcont += "#{self.tabs}Knj::Php_parser::Functions.#{match[1]}("
83
+ self.func_args_given
84
+ elsif match = self.matchclear(/\A\?>/)
85
+ self.search_starttag
86
+ elsif cont.length <= 0
87
+ break
88
+ else
89
+ raise "Could not find out whats next."
90
+ end
91
+ end
92
+ end
93
+ end
94
+
95
+ require File.dirname(__FILE__) + "/functions.rb"
96
+
97
+ module Knj::Php_parser::Functions
98
+ #nothing here.
99
+ end
@@ -0,0 +1,12 @@
1
+ require "knj/autoload"
2
+ require "knj/php"
3
+ require "knj/php_parser/php_parser"
4
+
5
+ module Knj::Php_parser::Functions
6
+ def self.my_function(phpvar_arg)
7
+ Knj::Php.print("Hejsa.\n")
8
+ Knj::Php.print(phpvar_arg + "\n")
9
+ end
10
+ end
11
+ Knj::Php_parser::Functions.my_function("Helloworld.")
12
+
@@ -0,0 +1,8 @@
1
+ <?
2
+ function my_function($arg){
3
+ print "Hejsa.\n";
4
+ print $arg . "\n";
5
+ }
6
+
7
+ my_function("Hello world.");
8
+ ?>
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "knj/autoload"
4
+ include Knj
5
+
6
+ parser = Php_parser.new(
7
+ "file" => File.dirname(__FILE__) + "/test_function.php"
8
+ )
9
+
10
+ begin
11
+ cont = parser.parse
12
+ rescue RuntimeError => e
13
+ print "Retcont:\n#{parser.retcont}\n\n"
14
+ print "Cont:\n#{parser.cont}\n\n"
15
+
16
+ raise e
17
+ end
18
+
19
+ print cont + "\n"
@@ -0,0 +1,31 @@
1
+ class Knj::Power_manager
2
+ def initialize(args = {})
3
+ @args = args
4
+
5
+ if !File.exists?("/proc/acpi/ac_adapter")
6
+ raise "Could not find the proc-acpi folder."
7
+ end
8
+
9
+ Dir.new("/proc/acpi/ac_adapter").each do |file|
10
+ next if file == "." or file == ".."
11
+ fn = "/proc/acpi/ac_adapter/#{file}"
12
+
13
+ if File.directory?(fn)
14
+ @ac_folder = Knj::Php.realpath(fn)
15
+ break
16
+ end
17
+ end
18
+
19
+ raise "Could not register ac-folder." if !@ac_folder
20
+ end
21
+
22
+ def state
23
+ cont = File.read("#{@ac_folder}/state")
24
+
25
+ if match = cont.match(/state:\s*(.+)\s*/)
26
+ return match[1]
27
+ end
28
+
29
+ raise "Could not figure out state."
30
+ end
31
+ end
data/lib/knj/rand.rb ADDED
@@ -0,0 +1,10 @@
1
+ module Knj::Rand
2
+ def self.range(first, last)
3
+ return first.to_i + rand(last.to_i - first.to_i)
4
+ end
5
+
6
+ def self.array(arr)
7
+ key = rand(arr.length)
8
+ return arr[key]
9
+ end
10
+ end
data/lib/knj/retry.rb ADDED
@@ -0,0 +1,71 @@
1
+ class Knj::Retry
2
+ def self.try(args = {}, &block)
3
+ raise "No block was given." if !block_given?
4
+
5
+ args[:tries] = 3 if !args[:tries]
6
+ tries = []
7
+ error = nil
8
+
9
+ args[:tries].to_i.downto(1) do |count|
10
+ error = nil
11
+ dobreak = false
12
+
13
+ begin
14
+ if args[:timeout]
15
+ begin
16
+ Timeout.timeout(args[:timeout]) do
17
+ block.call
18
+ dobreak = true
19
+ break
20
+ end
21
+ rescue Timeout::Error => e
22
+ doraise = e if count <= 1
23
+ error = e
24
+ sleep(args[:wait]) if args[:wait] and !doraise
25
+ end
26
+ else
27
+ block.call
28
+ dobreak = true
29
+ break
30
+ end
31
+ rescue Exception => e
32
+ if e.class == Interrupt
33
+ raise e if !args.has_key?(:interrupt) or args[:interrupt]
34
+ elsif e.class == SystemExit
35
+ raise e if !args.has_key?(:exit) or args[:exit]
36
+ elsif count <= 1 or (args.has_key?(:errors) and args[:errors].index(e.class) == nil)
37
+ doraise = e
38
+ elsif args.has_key?(:errors) and args[:errors].index(e.class) != nil
39
+ #given error was in the :errors-array - do nothing. Maybe later it should be logged and returned in a stats-hash or something? - knj
40
+ end
41
+
42
+ error = e
43
+ sleep(args[:wait]) if args[:wait] and !doraise
44
+ end
45
+
46
+ if doraise
47
+ if args[:return_error]
48
+ tries << {:error => error}
49
+ return {
50
+ :tries => tries,
51
+ :result => false
52
+ }
53
+ else
54
+ raise e
55
+ end
56
+ elsif error
57
+ tries << {:error => error}
58
+ end
59
+
60
+ break if dobreak
61
+ end
62
+
63
+ res = true
64
+ res = false if error
65
+
66
+ return {
67
+ :tries => tries,
68
+ :result => res
69
+ }
70
+ end
71
+ end
@@ -0,0 +1,11 @@
1
+ class Mutex
2
+ def synchronize
3
+ sleep 0.1 if @working
4
+ @working = true
5
+ begin
6
+ yield
7
+ ensure
8
+ @working = false
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,3 @@
1
+ function knj_rhodes_html_links(args){
2
+ $.ajax({type: "POST", data: {"url": args["url"]}, url: "/app/Knj/html_links"});
3
+ }
@@ -0,0 +1,11 @@
1
+ class Knj::Rhodes
2
+ def self.html_links(args)
3
+ html_cont = "#{args[:html]}"
4
+
5
+ html_cont.scan(/(<a([^>]+)href=\"(http.+?)\")/) do |match|
6
+ html_cont = html_cont.gsub(match[0], "<a#{match[1]}href=\"javascript: knj_rhodes_html_links({url: '#{match[2]}'});\"")
7
+ end
8
+
9
+ return html_cont
10
+ end
11
+ end
@@ -0,0 +1,20 @@
1
+ class Knj::RSVGBIN
2
+ def self.test_version
3
+ test_version = %x[rsvg-convert -v]
4
+ if !test_version.match(/^rsvg-convert version [0-9\.]+$/)
5
+ raise "No valid version of rsvg-bin was found."
6
+ end
7
+ end
8
+
9
+ def self.png_content_from_file(file_from)
10
+ RSVGBIN.test_version
11
+ return %x[rsvg-convert #{Strings.unixsafe(file_from)}]
12
+ end
13
+
14
+ def self.convert_file(file_from, file_to)
15
+ RSVGBIN.test_version
16
+
17
+ png_content = RSVGBIN.png_content_from_file(file_from)
18
+ Php.file_put_contents(file_to, png_content)
19
+ end
20
+ end
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "knj/autoload"
4
+ include Knj
5
+
6
+ dgs = Degulesider.new
7
+ res = dgs.search(
8
+ :where => ARGV[0],
9
+ :what => ARGV[1]
10
+ )
11
+
12
+ print JSON.generate(res)
@@ -0,0 +1,51 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "knj/autoload"
4
+ include Knj
5
+
6
+ begin
7
+ options = {}
8
+ OptionParser.new do |opts|
9
+ opts.banner = "Usage: example.rb [options]"
10
+
11
+ opts.on("-f FINDTHIS", "--find", "Search for this string.") do |f|
12
+ options[:find] = f
13
+ end
14
+
15
+ opts.on("-b BYTES", "--bytes BYTES", "Return this number of bytes and finding the string.") do |b|
16
+ options[:bytes] = b.to_i
17
+ end
18
+
19
+ opts.on("--filepath FILEPATH", "The file that should be searched.") do |fp|
20
+ options[:filepath] = fp
21
+ end
22
+ end.parse!
23
+ rescue OptionParser::InvalidOption => e
24
+ Php.die(e.message + "\n")
25
+ end
26
+
27
+ cont = ""
28
+ readstr = ""
29
+ retcont = ""
30
+ File.open(options[:filepath], "r") do |fp|
31
+ loop do
32
+ break if fp.eof
33
+
34
+ prevcont = String.new(readstr)
35
+ readstr = fp.read(1024)
36
+ cont = prevcont + readstr
37
+
38
+ if ind = cont.index(options[:find])
39
+ read_size = options[:bytes] - (cont.length - ind)
40
+
41
+ if read_size > 0
42
+ cont += fp.read(read_size)
43
+ end
44
+
45
+ retcont = cont.slice(ind, options[:bytes])
46
+ break
47
+ end
48
+ end
49
+ end
50
+
51
+ print retcont + "\n"
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "knj/autoload"
4
+ ip2loc = Knj::Ip2location.new
5
+
6
+ data = ip2loc.lookup(ARGV[0])
7
+
8
+ if ARGV[1] == "json"
9
+ print Knj::Php.json_encode(data)
10
+ else
11
+ Knj::Php.print_r(data)
12
+ end
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ while true
4
+ print "Keel-alive\n"
5
+ sleep 1
6
+ end
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/ruby
2
+
3
+ require "knj/autoload"
4
+
5
+ path_to = ARGV[0]
6
+
7
+ Dir.glob(File.join("**", ".svn")).each do |dir|
8
+ newdir = path_to + "/" + dir
9
+
10
+ #print dir + "\n"
11
+ #print newdir + "\n"
12
+
13
+ if File.exists?(newdir)
14
+ print "Remove: " + newdir.to_s + "\n"
15
+ FileUtils.rm_r(newdir)
16
+ end
17
+
18
+ begin
19
+ #print "Move: " + dir + "\n"
20
+ #FileUtils.mv(dir, newdir)
21
+
22
+ print "Copy: " + dir + "\n"
23
+ FileUtils.cp_r(dir, newdir)
24
+ rescue => e
25
+ print "Failed: " + e.message + "\n"
26
+ end
27
+
28
+ #print "\n"
29
+ end
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "knj/autoload"
4
+
5
+ mode = ARGV[0]
6
+
7
+ if mode.to_s.length <= 0
8
+ print "No mode was given.\n"
9
+ exit
10
+ elsif mode != "dev" and mode != "original"
11
+ print "Invalid mode: #{mode}\n"
12
+ exit
13
+ end
14
+
15
+ checks = [
16
+ "/usr/share/php/knjphpframework",
17
+ "/usr/lib/ruby/1.8/knjrbfw"
18
+ ]
19
+
20
+ checks.each do |dir|
21
+ dev_name = dir + "_dev"
22
+ original_name = dir + "_original"
23
+
24
+ if mode == "dev"
25
+ if File.exists?(dir) and File.symlink?(dir)
26
+ #do nothing.
27
+ elsif File.exists?(dir) and !File.exists?(original_name)
28
+ File.rename(dir, original_name)
29
+ File.rename(dev_name, dir)
30
+ end
31
+ elsif mode == "original"
32
+ if File.exists?(dir) and File.exists?(original_name) and File.symlink?(dir)
33
+ File.rename(dir, dev_name)
34
+ File.rename(original_name, dir)
35
+ else
36
+ #do nothing.
37
+ end
38
+ else
39
+ raise "No such mode: #{mode}"
40
+ end
41
+ end
data/lib/knj/sms.rb ADDED
@@ -0,0 +1,54 @@
1
+ class Knj::Sms
2
+ def initialize(opts)
3
+ @opts = Knj::ArrayExt.hash_sym(opts)
4
+
5
+ @opts.each do |key, value|
6
+ if key == :type
7
+ if value == "bibob" or value == "cbb" or value == "smsd_db"
8
+ @type = value
9
+
10
+ if @type == "smsd_db"
11
+ @db = Knj::Db.new(@opts[:knjdb_args])
12
+ Knj::Thread.new(@db) do |db|
13
+ db.query("SELECT * FROM outbox WHERE id = 0") #ping!
14
+ sleep 15
15
+ end
16
+ end
17
+ else
18
+ raise "Not supported: " + value.to_s
19
+ end
20
+ end
21
+ end
22
+ end
23
+
24
+ def send_sms(number, msg)
25
+ if @type == "bibob"
26
+ if !@soap
27
+ require "webrick/https"
28
+ @soap = SOAP::WSDLDriverFactory.new("https://www.bibob.dk/SmsSender.asmx?WSDL").create_rpc_driver
29
+ end
30
+
31
+ result = @soap.SendMessage({
32
+ "cellphone" => @opts[:user],
33
+ "password" => Knj::Php.md5(@opts[:pass]),
34
+ "smsTo" => {"string" => number},
35
+ "smscontents" => msg,
36
+ "sendDate" => Knj::Php.date("Y-m-d"),
37
+ "deliveryReport" => "0",
38
+ "fromNumber" => @opts[:user]
39
+ })
40
+
41
+ if result.sendMessageResult.errorString.to_s != "Ingen fejl."
42
+ raise "Could not send SMS: (" + result.sendMessageResult.errorCode.to_s + "): " + result.sendMessageResult.errorString.to_s
43
+ end
44
+ elsif @type == "smsd_db"
45
+ @db.insert("outbox", {
46
+ "number" => number,
47
+ "text" => msg,
48
+ "insertdate" => Knj::Php.date("Y-m-d H:i:s")
49
+ })
50
+ else
51
+ raise "Not supported: " + @type
52
+ end
53
+ end
54
+ end