rsence 2.0.0.0.pre

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 (311) hide show
  1. data/INSTALL.rdoc +295 -0
  2. data/LICENSE +622 -0
  3. data/README.rdoc +24 -0
  4. data/VERSION +1 -0
  5. data/bin/build_client.rb +254 -0
  6. data/bin/help +6 -0
  7. data/bin/launch.rb +120 -0
  8. data/bin/rdoc.sh +2 -0
  9. data/bin/restart +6 -0
  10. data/bin/rsence +120 -0
  11. data/bin/run +6 -0
  12. data/bin/run.rb +6 -0
  13. data/bin/save +6 -0
  14. data/bin/start +6 -0
  15. data/bin/status +6 -0
  16. data/bin/stop +6 -0
  17. data/conf/config.ru +5 -0
  18. data/conf/default_conf.yaml +337 -0
  19. data/conf/default_strings.yaml +77 -0
  20. data/conf/local_conf.yaml +14 -0
  21. data/conf/unicorn.conf +78 -0
  22. data/js/comm/comm/autosync/autosync.js +18 -0
  23. data/js/comm/comm/autosync/js.inc +0 -0
  24. data/js/comm/comm/comm.js +195 -0
  25. data/js/comm/comm/js.inc +0 -0
  26. data/js/comm/comm/queue/js.inc +0 -0
  27. data/js/comm/comm/queue/queue.js +183 -0
  28. data/js/comm/comm/session/js.inc +0 -0
  29. data/js/comm/comm/session/session.js +51 -0
  30. data/js/comm/comm/sessionwatcher/js.inc +0 -0
  31. data/js/comm/comm/sessionwatcher/sessionwatcher.js +43 -0
  32. data/js/comm/comm/transporter/js.inc +0 -0
  33. data/js/comm/comm/transporter/transporter.js +257 -0
  34. data/js/comm/comm/urlresponder/js.inc +0 -0
  35. data/js/comm/comm/urlresponder/urlresponder.js +148 -0
  36. data/js/comm/comm/values/js.inc +0 -0
  37. data/js/comm/comm/values/values.js +432 -0
  38. data/js/comm/jsloader/js.inc +0 -0
  39. data/js/comm/jsloader/jsloader.js +114 -0
  40. data/js/comm/reloadapp/js.inc +0 -0
  41. data/js/comm/reloadapp/reloadapp.js +150 -0
  42. data/js/comm/reloadapp/themes/default/reloadapp_warning-ie6.gif +0 -0
  43. data/js/comm/reloadapp/themes/default/reloadapp_warning.png +0 -0
  44. data/js/comm/sha/js.inc +0 -0
  45. data/js/comm/sha/sha.js +432 -0
  46. data/js/comm/values/value/js.inc +0 -0
  47. data/js/comm/values/value/value.js +182 -0
  48. data/js/comm/values/valuematrix/js.inc +0 -0
  49. data/js/comm/values/valuematrix/valuematrix.js +138 -0
  50. data/js/controls/button/button.js +57 -0
  51. data/js/controls/button/js.inc +0 -0
  52. data/js/controls/button/themes/bright/button.css +89 -0
  53. data/js/controls/button/themes/bright/button.html +7 -0
  54. data/js/controls/button/themes/bright/button_parts1-ie6.gif +0 -0
  55. data/js/controls/button/themes/bright/button_parts1.png +0 -0
  56. data/js/controls/button/themes/default/button.css +89 -0
  57. data/js/controls/button/themes/default/button.html +7 -0
  58. data/js/controls/button/themes/default/button_parts1-ie6.gif +0 -0
  59. data/js/controls/button/themes/default/button_parts1.png +0 -0
  60. data/js/controls/checkbox/checkbox.js +47 -0
  61. data/js/controls/checkbox/js.inc +0 -0
  62. data/js/controls/checkbox/themes/default/checkbox.css +69 -0
  63. data/js/controls/checkbox/themes/default/checkbox.html +5 -0
  64. data/js/controls/checkbox/themes/default/checkbox_parts1-ie6.gif +0 -0
  65. data/js/controls/checkbox/themes/default/checkbox_parts1.png +0 -0
  66. data/js/controls/datetime/calendar/calendar.js +197 -0
  67. data/js/controls/datetime/calendar/js.inc +0 -0
  68. data/js/controls/datetime/calendar/themes/default/calendar.css +108 -0
  69. data/js/controls/datetime/calendar/themes/default/calendar.html +9 -0
  70. data/js/controls/datetime/calendar/themes/default/calendar_arrows-ie6.gif +0 -0
  71. data/js/controls/datetime/calendar/themes/default/calendar_arrows.png +0 -0
  72. data/js/controls/datetime/datetimevalue/datetimevalue.js +246 -0
  73. data/js/controls/datetime/datetimevalue/js.inc +0 -0
  74. data/js/controls/datetime/timesheet/js.inc +0 -0
  75. data/js/controls/datetime/timesheet/themes/default/timesheet.css +30 -0
  76. data/js/controls/datetime/timesheet/themes/default/timesheet.html +2 -0
  77. data/js/controls/datetime/timesheet/timesheet.js +182 -0
  78. data/js/controls/datetime/timesheet_item/js.inc +0 -0
  79. data/js/controls/datetime/timesheet_item/themes/default/timesheet_item.css +42 -0
  80. data/js/controls/datetime/timesheet_item/themes/default/timesheet_item.html +8 -0
  81. data/js/controls/datetime/timesheet_item/timesheet_item.js +247 -0
  82. data/js/controls/datetime/timesheet_item_edit/js.inc +0 -0
  83. data/js/controls/datetime/timesheet_item_edit/timesheet_item_edit.js +274 -0
  84. data/js/controls/dialogs/alert_sheet/alert_sheet.js +62 -0
  85. data/js/controls/dialogs/alert_sheet/js.inc +0 -0
  86. data/js/controls/dialogs/confirm_sheet/confirm_sheet.js +36 -0
  87. data/js/controls/dialogs/confirm_sheet/js.inc +0 -0
  88. data/js/controls/dialogs/sheet/js.inc +0 -0
  89. data/js/controls/dialogs/sheet/sheet.js +83 -0
  90. data/js/controls/dialogs/sheet/themes/default/sheet.css +64 -0
  91. data/js/controls/dialogs/sheet/themes/default/sheet.html +14 -0
  92. data/js/controls/dialogs/sheet/themes/default/sheet_bg-ie6.gif +0 -0
  93. data/js/controls/dialogs/sheet/themes/default/sheet_bg.png +0 -0
  94. data/js/controls/dialogs/sheet/themes/default/sheet_dim-ie6.gif +0 -0
  95. data/js/controls/dialogs/sheet/themes/default/sheet_dim.png +0 -0
  96. data/js/controls/dialogs/sheet/themes/default/sheet_parts1-ie6.gif +0 -0
  97. data/js/controls/dialogs/sheet/themes/default/sheet_parts1.png +0 -0
  98. data/js/controls/dialogs/sheet/themes/default/sheet_parts2-ie6.gif +0 -0
  99. data/js/controls/dialogs/sheet/themes/default/sheet_parts2.png +0 -0
  100. data/js/controls/dialogs/sheet/themes/default/sheet_warning-ie6.gif +0 -0
  101. data/js/controls/dialogs/sheet/themes/default/sheet_warning.png +0 -0
  102. data/js/controls/imageview/imageview.js +108 -0
  103. data/js/controls/imageview/js.inc +0 -0
  104. data/js/controls/imageview/themes/default/blank.gif +0 -0
  105. data/js/controls/lists/checkboxlist/checkboxlist.js +170 -0
  106. data/js/controls/lists/checkboxlist/js.inc +0 -0
  107. data/js/controls/lists/listitems/js.inc +0 -0
  108. data/js/controls/lists/listitems/listitems.js +65 -0
  109. data/js/controls/lists/radiobuttonlist/js.inc +0 -0
  110. data/js/controls/lists/radiobuttonlist/radiobuttonlist.js +126 -0
  111. data/js/controls/passwordcontrol/js.inc +0 -0
  112. data/js/controls/passwordcontrol/passwordcontrol.js +22 -0
  113. data/js/controls/passwordcontrol/themes/default/passwordcontrol.css +0 -0
  114. data/js/controls/passwordcontrol/themes/default/passwordcontrol.html +18 -0
  115. data/js/controls/progress/progressbar/js.inc +0 -0
  116. data/js/controls/progress/progressbar/progressbar.js +36 -0
  117. data/js/controls/progress/progressbar/themes/default/progressbar.css +16 -0
  118. data/js/controls/progress/progressbar/themes/default/progressbar.html +2 -0
  119. data/js/controls/progress/progressindicator/js.inc +0 -0
  120. data/js/controls/progress/progressindicator/progressindicator.js +43 -0
  121. data/js/controls/radiobutton/js.inc +0 -0
  122. data/js/controls/radiobutton/radiobutton.js +41 -0
  123. data/js/controls/radiobutton/themes/default/radiobutton.css +69 -0
  124. data/js/controls/radiobutton/themes/default/radiobutton.html +5 -0
  125. data/js/controls/radiobutton/themes/default/radiobutton_parts1-ie6.gif +0 -0
  126. data/js/controls/radiobutton/themes/default/radiobutton_parts1.png +0 -0
  127. data/js/controls/sliders/slider/js.inc +0 -0
  128. data/js/controls/sliders/slider/slider.js +356 -0
  129. data/js/controls/sliders/slider/themes/default/hslider_tracks-ie6.gif +0 -0
  130. data/js/controls/sliders/slider/themes/default/hslider_tracks.png +0 -0
  131. data/js/controls/sliders/slider/themes/default/slider.css +108 -0
  132. data/js/controls/sliders/slider/themes/default/slider.html +5 -0
  133. data/js/controls/sliders/slider/themes/default/slider_thumbs-ie6.gif +0 -0
  134. data/js/controls/sliders/slider/themes/default/slider_thumbs.png +0 -0
  135. data/js/controls/sliders/vslider/js.inc +0 -0
  136. data/js/controls/sliders/vslider/themes/default/vslider.css +52 -0
  137. data/js/controls/sliders/vslider/themes/default/vslider.html +5 -0
  138. data/js/controls/sliders/vslider/themes/default/vslider_tracks-ie6.gif +0 -0
  139. data/js/controls/sliders/vslider/themes/default/vslider_tracks.png +0 -0
  140. data/js/controls/sliders/vslider/vslider.js +40 -0
  141. data/js/controls/stepper/js.inc +0 -0
  142. data/js/controls/stepper/stepper.js +212 -0
  143. data/js/controls/stepper/themes/default/stepper-ie6.gif +0 -0
  144. data/js/controls/stepper/themes/default/stepper.css +14 -0
  145. data/js/controls/stepper/themes/default/stepper.html +2 -0
  146. data/js/controls/stepper/themes/default/stepper.png +0 -0
  147. data/js/controls/stringview/js.inc +0 -0
  148. data/js/controls/stringview/stringview.js +49 -0
  149. data/js/controls/stringview/themes/default/stringview.css +8 -0
  150. data/js/controls/stringview/themes/default/stringview.html +1 -0
  151. data/js/controls/tab/js.inc +0 -0
  152. data/js/controls/tab/tab.js +276 -0
  153. data/js/controls/tab/themes/bright/tab.css +76 -0
  154. data/js/controls/tab/themes/bright/tab.html +6 -0
  155. data/js/controls/tab/themes/bright/tab_bg_color-ie6.gif +0 -0
  156. data/js/controls/tab/themes/bright/tab_bg_color.png +0 -0
  157. data/js/controls/tab/themes/bright/tab_border_pattern-ie6.gif +0 -0
  158. data/js/controls/tab/themes/bright/tab_border_pattern.png +0 -0
  159. data/js/controls/tab/themes/bright/tab_parts1-ie6.gif +0 -0
  160. data/js/controls/tab/themes/bright/tab_parts1.png +0 -0
  161. data/js/controls/tab/themes/default/tab.css +77 -0
  162. data/js/controls/tab/themes/default/tab.html +6 -0
  163. data/js/controls/tab/themes/default/tab_bg_color-ie6.gif +0 -0
  164. data/js/controls/tab/themes/default/tab_bg_color.png +0 -0
  165. data/js/controls/tab/themes/default/tab_border_pattern-ie6.gif +0 -0
  166. data/js/controls/tab/themes/default/tab_border_pattern.png +0 -0
  167. data/js/controls/tab/themes/default/tab_parts1-ie6.gif +0 -0
  168. data/js/controls/tab/themes/default/tab_parts1.png +0 -0
  169. data/js/controls/textarea/js.inc +0 -0
  170. data/js/controls/textarea/textarea.js +23 -0
  171. data/js/controls/textarea/themes/default/textarea.css +21 -0
  172. data/js/controls/textarea/themes/default/textarea.html +18 -0
  173. data/js/controls/textcontrol/js.inc +0 -0
  174. data/js/controls/textcontrol/textcontrol.js +372 -0
  175. data/js/controls/textcontrol/themes/default/textcontrol.css +107 -0
  176. data/js/controls/textcontrol/themes/default/textcontrol.html +18 -0
  177. data/js/controls/textcontrol/themes/default/textcontrol_parts1-ie6.gif +0 -0
  178. data/js/controls/textcontrol/themes/default/textcontrol_parts1.png +0 -0
  179. data/js/controls/textcontrol/themes/default/textcontrol_parts2-ie6.gif +0 -0
  180. data/js/controls/textcontrol/themes/default/textcontrol_parts2.png +0 -0
  181. data/js/controls/textcontrol/themes/default/textcontrol_parts3-ie6.gif +0 -0
  182. data/js/controls/textcontrol/themes/default/textcontrol_parts3.png +0 -0
  183. data/js/controls/uploader/js.inc +0 -0
  184. data/js/controls/uploader/themes/default/upload_progress.gif +0 -0
  185. data/js/controls/uploader/themes/default/uploader.css +108 -0
  186. data/js/controls/uploader/themes/default/uploader.html +27 -0
  187. data/js/controls/uploader/uploader.js +153 -0
  188. data/js/controls/validatorview/js.inc +0 -0
  189. data/js/controls/validatorview/themes/default/validator-ie6.gif +0 -0
  190. data/js/controls/validatorview/themes/default/validator.png +0 -0
  191. data/js/controls/validatorview/themes/default/validatorview.css +0 -0
  192. data/js/controls/validatorview/themes/default/validatorview.html +0 -0
  193. data/js/controls/validatorview/validatorview.js +55 -0
  194. data/js/controls/window/js.inc +0 -0
  195. data/js/controls/window/themes/default/window.css +219 -0
  196. data/js/controls/window/themes/default/window.html +17 -0
  197. data/js/controls/window/themes/default/window_bg_active-ie6.gif +0 -0
  198. data/js/controls/window/themes/default/window_bg_active.png +0 -0
  199. data/js/controls/window/themes/default/window_bg_inactive-ie6.gif +0 -0
  200. data/js/controls/window/themes/default/window_bg_inactive.png +0 -0
  201. data/js/controls/window/themes/default/window_buttons-ie6.gif +0 -0
  202. data/js/controls/window/themes/default/window_buttons.png +0 -0
  203. data/js/controls/window/themes/default/window_parts1-ie6.gif +0 -0
  204. data/js/controls/window/themes/default/window_parts1.png +0 -0
  205. data/js/controls/window/themes/default/window_parts2-ie6.gif +0 -0
  206. data/js/controls/window/themes/default/window_parts2.png +0 -0
  207. data/js/controls/window/window.js +284 -0
  208. data/js/core/class/class.js +317 -0
  209. data/js/core/class/js.inc +0 -0
  210. data/js/core/elem/elem.js +1376 -0
  211. data/js/core/elem/js.inc +0 -0
  212. data/js/core/event/event.js +1021 -0
  213. data/js/core/event/js.inc +0 -0
  214. data/js/core/iefix/ie_css_element.htc +5 -0
  215. data/js/core/iefix/ie_css_style.htc +5 -0
  216. data/js/core/iefix/iefix.js +359 -0
  217. data/js/core/iefix/js.inc +0 -0
  218. data/js/debugg/debugg.js +43 -0
  219. data/js/debugg/js.inc +0 -0
  220. data/js/foundation/application/application.js +209 -0
  221. data/js/foundation/application/js.inc +0 -0
  222. data/js/foundation/control/control.js +342 -0
  223. data/js/foundation/control/controldefaults/controldefaults.js +59 -0
  224. data/js/foundation/control/controldefaults/js.inc +0 -0
  225. data/js/foundation/control/dummyvalue/dummyvalue.js +50 -0
  226. data/js/foundation/control/dummyvalue/js.inc +0 -0
  227. data/js/foundation/control/dyncontrol/dyncontrol.js +494 -0
  228. data/js/foundation/control/dyncontrol/js.inc +0 -0
  229. data/js/foundation/control/dyncontrol/themes/default/dyncontrol.css +0 -0
  230. data/js/foundation/control/dyncontrol/themes/default/dyncontrol.html +0 -0
  231. data/js/foundation/control/eventresponder/eventresponder.js +713 -0
  232. data/js/foundation/control/eventresponder/js.inc +0 -0
  233. data/js/foundation/control/js.inc +0 -0
  234. data/js/foundation/control/valueresponder/js.inc +0 -0
  235. data/js/foundation/control/valueresponder/valueresponder.js +77 -0
  236. data/js/foundation/geom/point/js.inc +0 -0
  237. data/js/foundation/geom/point/point.js +202 -0
  238. data/js/foundation/geom/rect/js.inc +0 -0
  239. data/js/foundation/geom/rect/rect.js +610 -0
  240. data/js/foundation/json_renderer/js.inc +0 -0
  241. data/js/foundation/json_renderer/json_renderer.js +231 -0
  242. data/js/foundation/system/js.inc +0 -0
  243. data/js/foundation/system/system.js +369 -0
  244. data/js/foundation/thememanager/js.inc +0 -0
  245. data/js/foundation/thememanager/thememanager.js +387 -0
  246. data/js/foundation/view/js.inc +0 -0
  247. data/js/foundation/view/markupview/js.inc +0 -0
  248. data/js/foundation/view/markupview/markupview.js +113 -0
  249. data/js/foundation/view/morphanimation/js.inc +0 -0
  250. data/js/foundation/view/morphanimation/morphanimation.js +236 -0
  251. data/js/foundation/view/view.js +1804 -0
  252. data/js/foundation/view/viewdefaults/js.inc +0 -0
  253. data/js/foundation/view/viewdefaults/viewdefaults.js +25 -0
  254. data/js/views/centerview/centerview.js +45 -0
  255. data/js/views/centerview/js.inc +0 -0
  256. data/js/views/inlineview/inlineview.js +14 -0
  257. data/js/views/inlineview/js.inc +0 -0
  258. data/js/views/scrollview/js.inc +0 -0
  259. data/js/views/scrollview/scrollview.js +39 -0
  260. data/lib/conf/default.rb +220 -0
  261. data/lib/conf/wizard.rb +303 -0
  262. data/lib/daemon/daemon.rb +293 -0
  263. data/lib/http/broker.rb +102 -0
  264. data/lib/http/rackup.rb +88 -0
  265. data/lib/http/request.rb +69 -0
  266. data/lib/http/response.rb +63 -0
  267. data/lib/plugins/gui_plugin.rb +129 -0
  268. data/lib/plugins/guiparser.rb +114 -0
  269. data/lib/plugins/plugin.rb +652 -0
  270. data/lib/plugins/plugin_plugins.rb +47 -0
  271. data/lib/plugins/plugin_sqlite_db.rb +72 -0
  272. data/lib/plugins/plugin_util.rb +96 -0
  273. data/lib/plugins/pluginmanager.rb +517 -0
  274. data/lib/plugins/servlet.rb +69 -0
  275. data/lib/session/msg.rb +291 -0
  276. data/lib/session/sessionmanager.rb +491 -0
  277. data/lib/session/sessionstorage.rb +314 -0
  278. data/lib/transporter/transporter.rb +254 -0
  279. data/lib/util/gzstring.rb +5 -0
  280. data/lib/values/hvalue.rb +323 -0
  281. data/lib/values/valuemanager.rb +152 -0
  282. data/plugins/client_pkg/client_pkg.rb +186 -0
  283. data/plugins/client_pkg/info.yaml +25 -0
  284. data/plugins/client_pkg/lib/client_pkg_build.rb +569 -0
  285. data/plugins/client_pkg/lib/client_pkg_cache.rb +50 -0
  286. data/plugins/client_pkg/lib/client_pkg_serve.rb +210 -0
  287. data/plugins/client_pkg/log/build_log +0 -0
  288. data/plugins/index_html/img/loading.gif +0 -0
  289. data/plugins/index_html/img/riassence.gif +0 -0
  290. data/plugins/index_html/index_html.rb +150 -0
  291. data/plugins/index_html/tmpl/index.html +22 -0
  292. data/plugins/index_html/tmpl/startup_index.html +29 -0
  293. data/plugins/legacy/disabled +0 -0
  294. data/plugins/legacy/disabled- +0 -0
  295. data/plugins/legacy/info.yaml +22 -0
  296. data/plugins/legacy/legacy.rb +15 -0
  297. data/plugins/main/js/riassence_ns.js +87 -0
  298. data/plugins/main/main.rb +234 -0
  299. data/plugins/main/values.yaml +8 -0
  300. data/plugins/ticketservices/lib/common.rb +300 -0
  301. data/plugins/ticketservices/lib/favicon.rb +38 -0
  302. data/plugins/ticketservices/lib/file.rb +58 -0
  303. data/plugins/ticketservices/lib/img.rb +50 -0
  304. data/plugins/ticketservices/lib/objblob.rb +66 -0
  305. data/plugins/ticketservices/lib/rsrc.rb +34 -0
  306. data/plugins/ticketservices/lib/upload.rb +206 -0
  307. data/plugins/ticketservices/ticketservices.rb +268 -0
  308. data/var/db/.git_include +0 -0
  309. data/var/log/.git_include +0 -0
  310. data/var/run/.git_include +0 -0
  311. metadata +390 -0
@@ -0,0 +1,50 @@
1
+ ## Riassence Framework
2
+ # Copyright 2007 Riassence Inc.
3
+ # http://riassence.com/
4
+ #
5
+ # You should have received a copy of the GNU General Public License along
6
+ # with this software package. If not, contact licensing@riassence.com
7
+ ##
8
+
9
+
10
+ =begin
11
+ FileCache scans and stores the ui path for javascript files and
12
+ (css/html/image) theme files compiled as the result of the client
13
+ SDK's build_client.rb
14
+ =end
15
+ class ClientPkgCache
16
+
17
+ attr_reader :scan_time, :js_cache, :theme_cache, :gz_cache, :client_rev, :last_modified
18
+
19
+ # A lock flag for preventing different threads from
20
+ # scanning simultaneously in debug mode
21
+ @busy_scanning = false
22
+
23
+ # Initially, scan.
24
+ def initialize
25
+ @client_rev = 0
26
+ # scan_dirs
27
+ end
28
+
29
+ # Helper method to return the suffix of a file
30
+ def suffix(file_path)
31
+ return '.'+file_path.split('.')[-1]
32
+ end
33
+
34
+ # Helper method to return the time formatted according to the HTTP RFC
35
+ def httime(time)
36
+ return time.gmtime.strftime('%a, %d %b %Y %H:%M:%S %Z')
37
+ end
38
+
39
+ def set_cache( js, gz, themes )
40
+ @js_cache = js
41
+ @gz_cache = gz
42
+ @theme_cache = themes
43
+ time_now = Time.now
44
+ @client_rev = time_now.to_i.to_s
45
+ @last_modified = httime( time_now )
46
+ end
47
+
48
+ end
49
+
50
+
@@ -0,0 +1,210 @@
1
+
2
+ module ClientPkgServe
3
+ def broker_urls
4
+ ::RSence.config[:broker_urls]
5
+ end
6
+
7
+ def match( uri, request_type )
8
+ uri.match( /^#{broker_urls[:h]}/ )
9
+ end
10
+
11
+ # Helper method to return the time formatted according to the HTTP RFC
12
+ def httime(time)
13
+ return time.gmtime.strftime('%a, %d %b %Y %H:%M:%S %Z')
14
+ end
15
+
16
+ ## Responds to get-requests
17
+ def get( request, response, session )
18
+
19
+ # Sets the response date header to the current time:
20
+ response['Date'] = httime( Time.now )
21
+
22
+ # Controls caching with headers based on the configuration
23
+ if ::RSence.config[:cache_maximize]
24
+ response['Expires'] = httime(Time.now+::RSence.config[:cache_expire])
25
+
26
+ else
27
+ response['Cache-Control'] = 'no-cache'
28
+ end
29
+
30
+ support_gzip = (request.header.has_key?('accept-encoding') and request.header['accept-encoding'].include?('gzip'))
31
+ support_gzip = false if ::RSence.config[:no_gzip]
32
+ if request.header.has_key?('user-agent')
33
+ ua = request.header['user-agent']
34
+ is_symbian = ua.include?("SymbianOS")
35
+ is_safari = ((not is_symbian) and ua.include?("WebKit"))
36
+ is_msie = ((not ua.include?("Opera")) and ua.include?("MSIE"))
37
+ is_msie6 = ((not ua.include?("Opera")) and ua.include?("MSIE 6.0"))
38
+ end
39
+
40
+ ## Split path into an array for determining what to serve
41
+ request_uri = '/'+request.path.match( /^#{::RSence.config[:broker_urls][:h]}(.*)$/ )[1]
42
+
43
+ request_path = request_uri.split( '/' )
44
+
45
+ ## Requested type of client resource (js/themes)
46
+ req_type = request_path[2]
47
+
48
+ if not ['js','themes'].include? req_type
49
+ req_rev = req_type
50
+ req_type = request_path[3]
51
+ request_path.delete_at(2)
52
+ end
53
+
54
+ ## Special rules for the special browser
55
+ if request.path.include?('.htc')
56
+ req_file = request_path[3]
57
+
58
+ # this file is a part of iefix, it injects calls to
59
+ # the ie rendering engine to override stupid behavior
60
+ # when changing element properties
61
+ if request_path.include?('ie_css_element.htc')
62
+ response.status = 200
63
+ response['Content-Type'] = 'text/x-component'
64
+ ## Usually, we don't need it, because the client framework does calls when needed
65
+ response.body = %{<PUBLIC:COMPONENT lightWeight="true"></PUBLIC:COMPONENT>}
66
+
67
+ ## Enable it to call iefix automatically whenever element properties are changed
68
+ #response.body = %{<PUBLIC:COMPONENT lightWeight="true">\r\n<script type="text/javascript">\r\ntry{element.attachEvent("onpropertychange",iefix.htcElementEntry);}catch(e){}\r\n</script>\r\n</PUBLIC:COMPONENT>}
69
+
70
+ # this file is a part of iefix, it injects calls to
71
+ # the ie rendering engine to override stupid behavior
72
+ # when changing style properties
73
+ elsif request_path.include?('ie_css_style.htc')
74
+ response.status = 200
75
+ response['Content-Type'] = 'text/x-component'
76
+
77
+ ## Usually, we don't need it, because the client framework does calls when needed
78
+ response.body = %{<PUBLIC:COMPONENT lightWeight="true"></PUBLIC:COMPONENT>}
79
+
80
+ ## Enable it to call iefix automatically whenever element properties are changed
81
+ #response.body = %{<PUBLIC:COMPONENT lightWeight="true">\r\n<script type="text/javascript">\r\ntry{element.attachEvent("onreadystatechange",iefix.htcStyleEntry);}catch(e){}\r\n</script>\r\n</PUBLIC:COMPONENT>}
82
+
83
+ # Other htc requests are invalid
84
+ else
85
+ response.status = 503
86
+ response.body = '503 - Invalid Request'
87
+ end
88
+
89
+ ## Serve compiled client javascript component files:
90
+ elsif req_type == 'js'
91
+
92
+
93
+ # the file-specific identifier ('core', 'basic' etc)
94
+ req_file = request_path[3][0..-4]
95
+
96
+ if not @client_cache.js_cache.has_key?( req_file )
97
+ response.status = 404
98
+ response.body = '/* 404 - Not Found */'
99
+ else
100
+
101
+ response.status = 200
102
+ response.content_type = 'text/javascript; charset=utf-8'
103
+
104
+ # these browsers have issues with gzipped js content
105
+ support_gzip = false if (is_safari or is_msie or is_symbian)
106
+
107
+ if support_gzip
108
+ #response['Transfer-Encoding'] = 'chunked,gzip'
109
+ response['Last-Modified'] = @client_cache.last_modified
110
+ body = @client_cache.gz_cache[ req_file ]+"\r\n\r\n"
111
+ response['Content-Length'] = body.length.to_s
112
+ response['Content-Encoding'] = 'gzip'
113
+ response.body = body
114
+ else
115
+
116
+ response['Last-Modified'] = @client_cache.last_modified
117
+ body = @client_cache.js_cache[ req_file ]
118
+ response['Content-Length'] = body.length.to_s
119
+ response.body = body
120
+
121
+ end
122
+ end
123
+
124
+ ## Serve client theme files
125
+ elsif req_type == 'themes'
126
+
127
+ # Get the name of the theme
128
+ theme_name = request_path[3]
129
+
130
+ # Get the theme resource type (html/css/gfx)
131
+ theme_part = request_path[4].to_sym
132
+
133
+ # Get the theme resource identifier
134
+ req_file = request_path[5]
135
+
136
+ # checks for theme name
137
+ has_theme = @client_cache.theme_cache.has_key?( theme_name )
138
+
139
+ # checks for theme part (css/html/gfx)
140
+ has_theme_part = has_theme and @client_cache.theme_cache[theme_name].has_key?( theme_part )
141
+
142
+
143
+ # puts "has_theme_part: #{@client_cache.theme_cache[theme_name][theme_part.to_sym].inspect}"
144
+ # checks for theme file
145
+ has_theme_file = has_theme_part and @client_cache.theme_cache[theme_name][theme_part].has_key?( req_file )
146
+
147
+
148
+ if not has_theme_file and req_file == 'common.css'
149
+ response.status = 200
150
+ response.content_type = 'text/css'
151
+ response.body = ''
152
+ end
153
+
154
+ if not has_theme
155
+ response.status = 404
156
+ response.body = '404 - Theme Not Found'
157
+ puts "Theme #{theme_name} not found, avail: #{@client_cache.theme_cache.keys.join(', ')}" if $DEBUG_MODE
158
+ elsif not has_theme_part
159
+ response.status = 503
160
+ response.body = '503 - Invalid Theme Part Request'
161
+ elsif not has_theme_file
162
+ response.status = 404
163
+ response.body = '404 - Theme Resource Not Found'
164
+ puts "File not found, avail: #{@client_cache.theme_cache[theme_name][theme_part].keys.join(', ')}" if $DEBUG_MODE
165
+ else
166
+
167
+ response.status = 200
168
+
169
+ file_ext = req_file.split('.')[-1]
170
+ response.content_type = {
171
+ 'html' => 'text/html; charset=utf-8',
172
+ 'css' => 'text/css; charset=utf-8',
173
+ 'png' => 'image/png',
174
+ 'jpg' => 'image/jpeg',
175
+ 'gif' => 'image/gif',
176
+ 'swf' => 'application/x-shockwave-flash'
177
+ }[file_ext]
178
+
179
+ support_gzip = false if theme_part == :gfx
180
+ support_gzip = false if (is_safari or is_msie or is_symbian)
181
+
182
+ if support_gzip
183
+ response['Last-Modified'] = @client_cache.last_modified
184
+ body = @client_cache.theme_cache[theme_name][theme_part][ req_file+'.gz' ]
185
+ response['Content-Length'] = body.length.to_s
186
+ response['Content-Encoding'] = 'gzip'
187
+ response.body = body
188
+ else
189
+
190
+ # Special IE6 condition to serve gifs instead of png's, because it works much better
191
+ # than using the ActiveX alpha filter hack
192
+ if is_msie6 and req_file[-4..-1] == '.png'
193
+ ie6_req_png2gif = req_file.gsub('.png','-ie6.gif')
194
+ req_file = ie6_req_png2gif if @client_cache.theme_cache[theme_name][theme_part].include?(ie6_req_png2gif)
195
+ end
196
+
197
+ response['Last-Modified'] = @client_cache.last_modified
198
+ body = @client_cache.theme_cache[theme_name][theme_part][ req_file ]
199
+ response['Content-Length'] = body.length.to_s
200
+ response.body = body
201
+
202
+ end
203
+ end
204
+
205
+ end
206
+
207
+ end
208
+ end
209
+
210
+
File without changes
Binary file
@@ -0,0 +1,150 @@
1
+ ## Riassence Framework
2
+ # Copyright 2009 Riassence Inc.
3
+ # http://riassence.com/
4
+ #
5
+ # You should have received a copy of the GNU General Public License along
6
+ # with this software package. If not, contact licensing@riassence.com
7
+ ##
8
+
9
+ =begin
10
+ IndexHtmlPlugin is the servlet plugin that is responsible for initializing the "boot-strap page".
11
+
12
+ It just loads, caches and sends the page for now.
13
+ =end
14
+ class IndexHtmlPlugin < ServletPlugin
15
+
16
+ def match( uri, method )
17
+ if uri == ::RSence.config[:index_html][:respond_address] and method == :get
18
+ return true
19
+ else
20
+ return false
21
+ end
22
+ end
23
+
24
+ def score
25
+ return 1000 # allows overriding with anything with a score below 1000
26
+ end
27
+
28
+ def init
29
+ @randgen = RandGen.new( 40 )
30
+ ::RSence.config[:index_html][:instance] = self
31
+ end
32
+
33
+ def open
34
+ #@deps = []
35
+ @index_html_src = file_read( ::RSence.config[:index_html][:index_tmpl] )
36
+ # loading_gif = File.read( File.join( @path, 'img/loading.gif' ) )
37
+ # @loading_gif_id = @plugins[:ticketservices].serve_rsrc( loading_gif, 'image/gif' )
38
+ # riassence_gif = File.read( File.join( @path, 'img/riassence.gif' ) )
39
+ # @riassence_gif_id = $TICKETSERVE.serve_rsrc( riassence_gif, 'image/gif' )
40
+ render_index_html
41
+ end
42
+
43
+ def close
44
+ # $TICKETSERVE.del_rsrc( @riassence_gif_id )
45
+ @plugins[:ticketservices].del_rsrc( @loading_gif_id )
46
+ end
47
+
48
+ def render_index_html
49
+
50
+ index_html = @index_html_src.clone
51
+
52
+ index_html.gsub!('__DEFAULT_TITLE__',::RSence.config[:index_html][:title])
53
+ # @index_html.gsub!('__LOADING_GIF_ID__',@loading_gif_id)
54
+ # @index_html.gsub!('__RIASSENCE_GIF_ID__',@riassence_gif_id)
55
+ client_rev = @plugins[:client_pkg].client_cache.client_rev
56
+ index_html.gsub!('__CLIENT_REV__',client_rev)
57
+ index_html.gsub!('__CLIENT_BASE__',File.join(::RSence.config[:broker_urls][:h],client_rev))
58
+ index_html.gsub!('__CLIENT_HELLO__',::RSence.config[:broker_urls][:hello])
59
+ index_html.gsub!('__NOSCRIPT__',::RSence.config[:index_html][:noscript])
60
+
61
+ deps_src = ''
62
+ ::RSence.config[:index_html][:deps].each do |dep|
63
+ deps_src += %{<script src="#{dep}" type="text/javascript"></script>}
64
+ end
65
+ index_html.gsub!('__SCRIPT_DEPS__',deps_src)
66
+
67
+ # @index_gzip = GZString.new('')
68
+ # gzwriter = Zlib::GzipWriter.new( @index_gzip, Zlib::BEST_SPEED )
69
+ # gzwriter.write( @index_html )
70
+ # gzwriter.close
71
+
72
+ # @content_size = @index_html.size
73
+ # @content_size_gzip = @index_gzip.size
74
+
75
+ # @index_date = httime( Time.now )
76
+
77
+ return index_html
78
+ end
79
+
80
+ def session_index_html( request, response )
81
+ ses_key = @randgen.gen
82
+ sha_key = ''
83
+ buffer = [
84
+ "var qP=function(cmd){COMM.Queue.push(cmd);};"
85
+ ]
86
+ req_num = 0
87
+ 3.times do |req_num|
88
+ sha_key = Digest::SHA1.hexdigest( ses_key + sha_key )
89
+ msg = @plugins.transporter.xhr(
90
+ request, response, {
91
+ :servlet => true,
92
+ :cookie => (req_num==0),
93
+ :query => {
94
+ 'ses_key' => "#{req_num}:.o.:#{sha_key}"
95
+ }
96
+ }
97
+ )
98
+ buffer += msg.value_buffer
99
+ msg.buffer.each do |buffer_item|
100
+ # if ::RSence.config[:]
101
+ # buffer.push( "qP(function(){#{buffer_item};console.log(#{buffer_item.to_json});});")
102
+ buffer.push( "qP(function(){#{buffer_item};});")
103
+ end
104
+ ses_key = msg.ses_key
105
+ # buffer = [ msg.ses_key, msg.value_buffer, msg.buffer ]
106
+ end
107
+ buffer.unshift( "COMM.Session.newKey(#{ses_key.to_json});" )
108
+ buffer.unshift( "COMM.Session.sha_key=#{sha_key.to_json};" )
109
+ buffer.unshift( "COMM.Session.req_num=#{req_num};" )
110
+ # buffer.each {|b|puts b}
111
+ # require 'pp'; pp buffer
112
+ index_html = render_index_html
113
+ return index_html.gsub('__STARTUP_SEQUENCE__', buffer.join("\n") )
114
+ end
115
+
116
+ ## Outputs a static web page.
117
+ def get( request, response, ses )
118
+ # puts "index_html"
119
+ # index_html = session_index_html( request, response )
120
+ index_html = render_index_html
121
+
122
+ support_gzip = (request.header.has_key?('accept-encoding') and \
123
+ request.header['accept-encoding'].include?('gzip')) \
124
+ and not ::RSence.config[:no_gzip]
125
+
126
+ response.status = 200
127
+
128
+ response['Content-Type'] = 'text/html; charset=UTF-8'
129
+ response['Date'] = httime( Time.now )
130
+ response['Server'] = 'Riassence Framework'
131
+ response['Cache-Control'] = 'no-cache'
132
+
133
+ if support_gzip
134
+ index_gzip = GZString.new('')
135
+ gzwriter = Zlib::GzipWriter.new( index_gzip, 9 )
136
+ gzwriter.write( index_html )
137
+ gzwriter.close
138
+ response['Content-Length'] = index_gzip.length
139
+ response['Content-Encoding'] = 'gzip'
140
+ response.body = index_gzip
141
+ else
142
+ response['Content-Length'] = index_html.length
143
+ response.body = index_html
144
+ end
145
+ end
146
+
147
+ end
148
+
149
+ index_html = IndexHtmlPlugin.new
150
+
@@ -0,0 +1,22 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
2
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" version="-//W3C//DTD XHTML 1.1//EN" xml:lang="en">
4
+ <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
5
+ <!-- This page is served to you by Riassence Framework - http://riassence.com/ -->
6
+ <title>__DEFAULT_TITLE__</title>
7
+ <style type="text/css">body{margin:0;padding:0;background-color:#ddd;font-family:Arial,sans-serif;}</style>
8
+ __SCRIPT_DEPS__
9
+ <script src="__CLIENT_BASE__/js/core.js"></script>
10
+ <!--[if lt IE 7]><script src="__CLIENT_BASE__/js/iefix.js"></script><![endif]-->
11
+
12
+ <script>
13
+
14
+ /** Runtime configuration: **/
15
+ HCLIENT_REV='__CLIENT_REV__';
16
+ HCLIENT_BASE='__CLIENT_BASE__';
17
+ HCLIENT_HELLO='__CLIENT_HELLO__';
18
+ HThemeManager.themePath='__CLIENT_BASE__/themes';
19
+
20
+ </script>
21
+
22
+ </head><body id="body"><noscript>__NOSCRIPT__</noscript></body></html>
@@ -0,0 +1,29 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
2
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" version="-//W3C//DTD XHTML 1.1//EN" xml:lang="en">
4
+ <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
5
+ <!-- This page is served to you by Riassence Framework - http://riassence.com/ -->
6
+ <title>__DEFAULT_TITLE__</title>
7
+ <style type="text/css">body{margin:0;padding:0;background-color:#ddd;font-family:Arial,sans-serif;}</style>
8
+ __SCRIPT_DEPS__
9
+ <script type="text/javascript" src="__CLIENT_BASE__/js/core.js"></script>
10
+ <!--[if lt IE 7]><script type="text/javascript" src="__CLIENT_BASE__/js/iefix.js"></script><![endif]-->
11
+
12
+ <script type="text/javascript">
13
+
14
+ /** Runtime configuration: **/
15
+ HCLIENT_REV='__CLIENT_REV__';
16
+ HCLIENT_BASE='__CLIENT_BASE__';
17
+ HCLIENT_HELLO='__CLIENT_HELLO__';
18
+ HThemeManager.themePath='__CLIENT_BASE__/themes';
19
+
20
+ /** Startup sequence: **/
21
+ COMM.Transporter.busy = true;
22
+ LOAD(function(){
23
+ __STARTUP_SEQUENCE__
24
+ COMM.Transporter.busy = false;
25
+ });
26
+
27
+ </script>
28
+
29
+ </head><body id="body"><noscript>__NOSCRIPT__</noscript></body></html>