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,69 @@
1
+ require "Mono.Data.Sqlite, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"
2
+ require "Mono.Data.SqliteClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"
3
+
4
+ class KnjDB_sqlite3_ironruby
5
+ def escape_table
6
+ return "`"
7
+ end
8
+
9
+ def escape_col
10
+ return "`"
11
+ end
12
+
13
+ def escape_val
14
+ return "'"
15
+ end
16
+
17
+ def initialize(knjdb_ob)
18
+ @knjdb = knjdb_ob
19
+ @conn = Mono::Data::SqliteClient::SqliteConnection.new("URI=file:" + @knjdb.opts[:path] + ",version=3")
20
+ @conn.Open
21
+ end
22
+
23
+ def query(string)
24
+ dbcmd = @conn.CreateCommand
25
+ dbcmd.CommandText = string
26
+ reader = dbcmd.ExecuteReader
27
+ return KnjDB_sqlite3_ironruby_result.new(reader)
28
+ end
29
+
30
+ def escape(string)
31
+ if (!string)
32
+ return ""
33
+ end
34
+
35
+ string = string.gsub("'", "\\'")
36
+ return string
37
+ end
38
+
39
+ def lastID
40
+ return @conn.last_insert_row_id
41
+ end
42
+ end
43
+
44
+ class KnjDB_sqlite3_ironruby_result
45
+ def initialize(reader)
46
+ @reader = reader
47
+ end
48
+
49
+ def fetch
50
+ if !@reader.Read
51
+ return false
52
+ end
53
+
54
+ ret = {}
55
+
56
+ count = 0
57
+ while true
58
+ begin
59
+ ret[@reader.get_name(count)] = @reader.get_string(count)
60
+ rescue IndexError => e
61
+ break
62
+ end
63
+
64
+ count += 1
65
+ end
66
+
67
+ return ret
68
+ end
69
+ end
Binary file
data/lib/knj/libqt.rb ADDED
@@ -0,0 +1,75 @@
1
+ require "Qt"
2
+ require "qtuitools"
3
+ require "knjrbfw/libqt_window.rb"
4
+
5
+ class QtLoader
6
+ def window
7
+ return @window
8
+ end
9
+
10
+ def loader
11
+ return @loader
12
+ end
13
+
14
+ def object_connect
15
+ return @object_connect
16
+ end
17
+
18
+ def widget(name)
19
+ return @widgets[name]
20
+ end
21
+
22
+ def initialize(paras)
23
+ @widgets = {}
24
+
25
+ if (paras.class.to_s == "Hash")
26
+ file_path = paras["file"]
27
+ @object_connect = paras["object_connect"]
28
+ elsif(paras.class.to_s == "String")
29
+ file_path = paras
30
+ elsif(paras.class.to_s == "Array")
31
+ file_path = paras[0]
32
+ @object_connect = paras[1]
33
+ else
34
+ raise "Unknown parameter"
35
+ end
36
+
37
+ file = Qt::File.new(file_path)
38
+ file.open(Qt::File::ReadOnly)
39
+ @loader = Qt::UiLoader.new
40
+ @window = @loader.load(file, nil)
41
+ file.close
42
+
43
+
44
+ @window.findChildren(Qt::Object).each do |widget|
45
+ object_name = widget.object_name.to_s
46
+
47
+ if (object_name.length > 0)
48
+ @widgets[object_name] = widget
49
+
50
+ if (@object_connect)
51
+ meta = widget.meta_object
52
+ signals = {}
53
+ 0.upto(meta.methodCount - 1) do |count|
54
+ method_info = meta.method(count)
55
+
56
+ if (method_info.method_type == 1)
57
+ method_name = method_info.signature.match(/^(.+)\(/)
58
+ signals[method_name[1]] = method_info.signature
59
+ end
60
+ end
61
+ end
62
+
63
+ signals.each do |item|
64
+ func_name = "on_" + object_name + "_" + item[0]
65
+ if (@object_connect.respond_to?(func_name))
66
+ params = item[1].sub(/[a-z]+(\(.*$)/, '\1')
67
+ widget.connect(SIGNAL item[1]) do
68
+ @object_connect.send(func_name)
69
+ end
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,10 @@
1
+ class QtWindow
2
+ def self.doCenter(tha_window)
3
+ qdw = Qt::DesktopWidget.new
4
+
5
+ move_left = (qdw.width / 2) - (tha_window.width / 2)
6
+ move_top = (qdw.height / 2) - (tha_window.height / 2)
7
+
8
+ tha_window.move(move_left, move_top)
9
+ end
10
+ end
@@ -0,0 +1,3 @@
1
+ [_("Monday"), _("Tuesday"), _("Wednesday"), _("Thursday"), _("Friday"), _("Saturday"), _("Sunday")]
2
+ [_("Mon"), _("Tue"), _("Wed"), _("Thu"), _("Fri"), _("Sat"), _("Sun")]
3
+ [_("January"), _("February"), _("March"), _("April"), _("May"), _("June"), _("July"), _("August"), _("September"), _("October"), _("November"), _("December")]
@@ -0,0 +1,54 @@
1
+ module Knj::Locales
2
+ def self.lang
3
+ begin
4
+ locale = _session[:locale]
5
+ rescue NameError
6
+ #_session method does not exist - continue.
7
+ end
8
+
9
+ locale = ENV["LANGUAGE"] if !locale and ENV["LANGUAGE"]
10
+ locale = $locale if !locale and $locale
11
+
12
+ raise "Could not figure out locale." if !locale
13
+ raise "Could not understand language: #{locale}." if !match = locale.to_s.match(/^([a-z]{2})_([A-Z]{2})/)
14
+
15
+ return {
16
+ "first" => match[1],
17
+ "second" => match[2],
18
+ "full" => match[1] + "_" + match[2]
19
+ }
20
+ end
21
+
22
+ def self.localeconv
23
+ f = Knj::Locales.lang["first"]
24
+
25
+ dec = "."
26
+ thousand = ","
27
+
28
+ case f
29
+ when "da", "es", "de", "sv"
30
+ dec = ","
31
+ thousand = "."
32
+ when "en"
33
+ #do nothing.
34
+ else
35
+ raise "Cant figure out numbers for language: #{f}."
36
+ end
37
+
38
+ return {
39
+ "decimal_point" => dec,
40
+ "thousands_sep" => thousand
41
+ }
42
+ end
43
+
44
+ def self.number_in(num_str)
45
+ lc = Knj::Locales.localeconv
46
+ num_str = num_str.to_s.gsub(lc["thousands_sep"], "").gsub(lc["decimal_point"], ".").to_f
47
+ return num_str
48
+ end
49
+
50
+ def self.number_out(num_str, dec = 2)
51
+ lc = Knj::Locales.localeconv
52
+ return Knj::Php.number_format(num_str, dec, lc["decimal_point"], lc["thousands_sep"])
53
+ end
54
+ end
@@ -0,0 +1,56 @@
1
+ class Knj
2
+ class Maemo
3
+ class FremantleCalendar
4
+ def initialize
5
+ require "knjrbfw/libknjphpfuncs.rb"
6
+
7
+ require "knjrbfw/knjdb/libknjdb.rb"
8
+ @db = KnjDB.new({
9
+ "type" => "sqlite3",
10
+ "path" => "/home/user/.calendar/calendardb"
11
+ })
12
+ end
13
+
14
+ def events
15
+ ret = []
16
+ f_gevents = @db.query("SELECT * FROM Components ORDER BY DateStart")
17
+ while(d_gevents = f_gevents.fetch)
18
+ ret << Event.new({
19
+ "cal" => self,
20
+ "data" => d_gevents,
21
+ "db" => @db
22
+ })
23
+ end
24
+
25
+ return ret
26
+ end
27
+
28
+ class Event
29
+ def data; return @data; end
30
+ def db; return @db; end
31
+ def cal; return @cal; end
32
+
33
+ def initialize(paras)
34
+ @db = paras["db"]
35
+ @data = paras["data"]
36
+ @cal = paras["cal"]
37
+ end
38
+
39
+ def [](key)
40
+ if (!@data.has_key?(key))
41
+ raise "No such key: '" + key + "'"
42
+ end
43
+
44
+ return @data[key]
45
+ end
46
+
47
+ def []=(key, value)
48
+ self[key] #raises error if key is invalid.
49
+
50
+ @db.update("Components", {key => value}, {"Id" => @data["Id"]})
51
+ @data[key] = value
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
data/lib/knj/mail.rb ADDED
@@ -0,0 +1,75 @@
1
+ class Knj::Mail
2
+ def initialize(paras = {})
3
+ @paras = {
4
+ "smtp_host" => "localhost",
5
+ "smtp_port" => 25,
6
+ "smtp_user" => nil,
7
+ "smtp_passwd" => nil,
8
+ "smtp_domain" => ENV["HOSTNAME"]
9
+ }
10
+
11
+ if paras.is_a?(Hash)
12
+ paras.each do |key, value|
13
+ @paras[key] = value
14
+ end
15
+ end
16
+
17
+ self.send if @paras["send"]
18
+ end
19
+
20
+ def html=(value)
21
+ @paras["html"] = value
22
+ end
23
+
24
+ def text=(value)
25
+ @paras["text"] = value
26
+ end
27
+
28
+ def from=(value)
29
+ @paras["from"] = value
30
+ end
31
+
32
+ def subject=(value)
33
+ @paras["subject"] = value
34
+ end
35
+
36
+ def to=(value)
37
+ @paras["to"] = value.untaint
38
+ end
39
+
40
+ def send
41
+ raise "No email has been defined to send to." if !@paras["to"]
42
+ raise "No subject has been defined." if !@paras["subject"]
43
+ raise "No content has been defined." if !@paras["text"] and !@paras["html"]
44
+
45
+ mail = TMail::Mail.new
46
+ mail.to = @paras["to"]
47
+ mail.subject = @paras["subject"]
48
+ mail.date = Time.new
49
+
50
+ mail.from = @paras["from"] if @paras["from"]
51
+
52
+ if @paras["html"]
53
+ mail.set_content_type("text", "html")
54
+ mail.body = @paras["html"]
55
+ elsif @paras["text"]
56
+ mail.body = @paras["text"]
57
+ end
58
+
59
+ smtp_start = Net::SMTP.new(@paras["smtp_host"], @paras["smtp_port"])
60
+ smtp_start.enable_ssl if @paras["ssl"]
61
+ smtp_start.enable_starttls if @paras["tls"]
62
+
63
+ if !@paras["smtp_domain"]
64
+ if @paras["smtp_host"]
65
+ @paras["smtp_domain"] = @paras["smtp_host"]
66
+ else
67
+ raise "SMTP domain not given."
68
+ end
69
+ end
70
+
71
+ smtp_start.start(@paras["smtp_domain"], @paras["smtp_user"], @paras["smtp_passwd"]) do |smtp|
72
+ smtp.send_message(mail.to_s, @paras["from"], @paras["to"])
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,82 @@
1
+ class Knj::Mailobj
2
+ def initialize(args = {})
3
+ @args = {
4
+ "smtp_host" => "localhost",
5
+ "smtp_port" => 25,
6
+ "smtp_user" => nil,
7
+ "smtp_passwd" => nil,
8
+ "smtp_domain" => ENV["HOSTNAME"]
9
+ }
10
+
11
+ if args.is_a?(Hash)
12
+ args.each do |key, value|
13
+ @args[key] = value
14
+ end
15
+ end
16
+
17
+ self.send if @args["send"]
18
+ end
19
+
20
+ def html=(value)
21
+ @args["html"] = value
22
+ end
23
+
24
+ def text=(value)
25
+ @args["text"] = value
26
+ end
27
+
28
+ def from=(value)
29
+ @args["from"] = value
30
+ end
31
+
32
+ def subject=(value)
33
+ @args["subject"] = value
34
+ end
35
+
36
+ def to=(value)
37
+ @args["to"] = value.untaint
38
+ end
39
+
40
+ def send
41
+ raise "No email has been defined to send to." if !@args["to"]
42
+ raise "No subject has been defined." if !@args["subject"]
43
+ raise "No content has been defined." if !@args["text"] and !@args["html"]
44
+
45
+ require "mail"
46
+
47
+ mail = Mail.new
48
+ mail.to = @args["to"]
49
+ mail.subject = @args["subject"]
50
+ mail.date = Time.new
51
+ mail.from = @args["from"] if @args["from"]
52
+
53
+ if @args["html"]
54
+ tha_html = @args["html"]
55
+ mail.html_part do
56
+ content_type "text/html; charset=UTF-8"
57
+ body tha_html
58
+ end
59
+ elsif @args["text"]
60
+ tha_text = @args["text"]
61
+ mail.text_part do
62
+ body tha_text
63
+ end
64
+ end
65
+
66
+ smtp_start = Net::SMTP.new(@args["smtp_host"], @args["smtp_port"])
67
+ smtp_start.enable_ssl if @args["ssl"]
68
+ smtp_start.enable_starttls if @args["tls"]
69
+
70
+ if !@args["smtp_domain"]
71
+ if @args["smtp_host"]
72
+ @args["smtp_domain"] = @args["smtp_host"]
73
+ else
74
+ raise "SMTP domain not given."
75
+ end
76
+ end
77
+
78
+ smtp_start.start(@args["smtp_domain"], @args["smtp_user"], @args["smtp_passwd"]) do |smtp|
79
+ smtp.send_message(mail.to_s, @args["from"], @args["to"])
80
+ end
81
+ end
82
+ end
data/lib/knj/mount.rb ADDED
@@ -0,0 +1,115 @@
1
+ class Knj::Mount
2
+ def self.list(args = {})
3
+ mount_output = Knj::Os.shellcmd("mount")
4
+ ret = []
5
+
6
+ mount_output.scan(/^(.+?) on (.+?) type (.+) \((.+?)\)$/) do |match|
7
+ type = match[2]
8
+ folder_from = match[0]
9
+ folder_to = match[1]
10
+ opts = match[3].split(",")
11
+
12
+ folder_from = nil if folder_from == "none"
13
+ #raise "The folder doesnt exist?" if !File.exists?(folder_to)
14
+
15
+ add = true
16
+ add = false if args.has_key?("to") and args["to"] != folder_to
17
+ add = false if args.has_key?("from") and args["from"] != folder_from
18
+
19
+ if args["from_search"]
20
+ Knj::Strings.searchstring(args["from_search"]).each do |str|
21
+ add = false if !folder_from or folder_from.index(str) == nil
22
+ end
23
+ end
24
+
25
+ if args["to_search"]
26
+ Knj::Strings.searchstring(args["to_search"]).each do |str|
27
+ add = false if !folder_to or folder_to.index(str) == nil
28
+ end
29
+ end
30
+
31
+ if add
32
+ ret << Knj::Mount.new(
33
+ :type => type,
34
+ :from => folder_from,
35
+ :to => folder_to,
36
+ :opts => opts
37
+ )
38
+ end
39
+ end
40
+
41
+ return ret
42
+ end
43
+
44
+ def self.mount(args)
45
+ cmd = "mount"
46
+ cmd += " -t #{Knj::Strings.unixsafe(args["type"])}" if args.has_key?("type")
47
+ cmd += " --bind" if args["bind"]
48
+ cmd += " #{Knj::Strings.unixsafe(args["from"])} #{Knj::Strings.unixsafe(args["to"])}"
49
+
50
+ if args.has_key?("opts")
51
+ raise "opts argument must be an array." if !args["opts"].is_a?(Array)
52
+
53
+ cmd += "-O "
54
+
55
+ first = true
56
+ args["opts"].each do |opt|
57
+ cmd += "," if !first
58
+ first = false if first
59
+
60
+ if opt.is_a?(Array)
61
+ raise "Array-opt must have a length of 2." if opt.length != 2
62
+ cmd += "#{Knj::Strings.unixsafe(opt[0])}=#{Knj::Strings.unixsafe(opt[1])}"
63
+ elsif arg.is_a?(String)
64
+ cmd += "#{Knj::Strings.unixsafe(opt)}"
65
+ else
66
+ raise "Unknown class: #{opt.class.name}."
67
+ end
68
+ end
69
+ end
70
+
71
+ Knj::Os.shellcmd(cmd)
72
+ end
73
+
74
+ def self.ensure(args)
75
+ list = Knj::Mount.list("to_search" => args["to"])
76
+ return false if !list.empty?
77
+ Knj::Mount.mount(args)
78
+ return true
79
+ end
80
+
81
+ attr_reader :data
82
+
83
+ def initialize(data)
84
+ @data = data
85
+ end
86
+
87
+ def [](key)
88
+ raise "Invalid key: #{key}." if !@data.has_key?(key)
89
+ return @data[key]
90
+ end
91
+
92
+ def unmount
93
+ Knj::Os.shellcmd("umount #{Knj::Strings.unixsafe(@data[:to])}")
94
+ end
95
+
96
+ alias :umount :unmount
97
+
98
+ def access?(args = {})
99
+ args["timeout"] = 2 if !args.has_key?("timeout")
100
+ access = false
101
+
102
+ begin
103
+ Timeout.timeout(args["timeout"]) do
104
+ Dir.new(@data[:to]).each do |file|
105
+ access = true
106
+ break
107
+ end
108
+ end
109
+ rescue Timeout::Error => e
110
+ return false
111
+ end
112
+
113
+ return access
114
+ end
115
+ end
data/lib/knj/notify.rb ADDED
@@ -0,0 +1,13 @@
1
+ class Knj::Notify
2
+ def self.send(args)
3
+ cmd = "notify-send"
4
+
5
+ if args["time"]
6
+ raise "Time is not numeric." if !Php.is_numeric(args["time"])
7
+ cmd += " -t " + args["time"].to_s
8
+ end
9
+
10
+ cmd += " " + Strings.UnixSafe(args["title"]) + " " + Strings.UnixSafe(args["msg"])
11
+ system(cmd)
12
+ end
13
+ end
@@ -0,0 +1,45 @@
1
+ class Knj::Nvidia_settings
2
+ attr_reader :data
3
+
4
+ def initialize(data = {})
5
+ @data = data
6
+ @power_mizer_modes = {
7
+ "adaptive" => 0,
8
+ "performance" => 1
9
+ }
10
+ end
11
+
12
+ def self.list(args = {})
13
+ res = Knj::Os.shellcmd("nvidia-settings -q gpus")
14
+ ret = []
15
+
16
+ res.scan(/\[gpu:(\d+)\]/) do |gpu|
17
+ ret << Knj::Nvidia_settings.new(args.merge({
18
+ "gpu_no" => gpu[0]
19
+ }))
20
+ end
21
+
22
+ return ret
23
+ end
24
+
25
+ def power_mizer_mode=(newval)
26
+ raise "No such power-mizer-mode." if @power_mizer_modes[newval] == nil
27
+
28
+ cmd = "nvidia-settings -a [gpu:#{@data["gpu_no"]}]/GPUPowerMizerMode=#{@power_mizer_modes[newval]}"
29
+ res = Knj::Os.shellcmd(cmd)
30
+
31
+ if res.index("assigned value") == nil
32
+ raise res.strip
33
+ end
34
+ end
35
+
36
+ def extra_args
37
+ str = ""
38
+
39
+ if @data["display"]
40
+ str += " --display #{@data["display"]}"
41
+ end
42
+
43
+ return str
44
+ end
45
+ end