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.
- data/INSTALL.rdoc +295 -0
- data/LICENSE +622 -0
- data/README.rdoc +24 -0
- data/VERSION +1 -0
- data/bin/build_client.rb +254 -0
- data/bin/help +6 -0
- data/bin/launch.rb +120 -0
- data/bin/rdoc.sh +2 -0
- data/bin/restart +6 -0
- data/bin/rsence +120 -0
- data/bin/run +6 -0
- data/bin/run.rb +6 -0
- data/bin/save +6 -0
- data/bin/start +6 -0
- data/bin/status +6 -0
- data/bin/stop +6 -0
- data/conf/config.ru +5 -0
- data/conf/default_conf.yaml +337 -0
- data/conf/default_strings.yaml +77 -0
- data/conf/local_conf.yaml +14 -0
- data/conf/unicorn.conf +78 -0
- data/js/comm/comm/autosync/autosync.js +18 -0
- data/js/comm/comm/autosync/js.inc +0 -0
- data/js/comm/comm/comm.js +195 -0
- data/js/comm/comm/js.inc +0 -0
- data/js/comm/comm/queue/js.inc +0 -0
- data/js/comm/comm/queue/queue.js +183 -0
- data/js/comm/comm/session/js.inc +0 -0
- data/js/comm/comm/session/session.js +51 -0
- data/js/comm/comm/sessionwatcher/js.inc +0 -0
- data/js/comm/comm/sessionwatcher/sessionwatcher.js +43 -0
- data/js/comm/comm/transporter/js.inc +0 -0
- data/js/comm/comm/transporter/transporter.js +257 -0
- data/js/comm/comm/urlresponder/js.inc +0 -0
- data/js/comm/comm/urlresponder/urlresponder.js +148 -0
- data/js/comm/comm/values/js.inc +0 -0
- data/js/comm/comm/values/values.js +432 -0
- data/js/comm/jsloader/js.inc +0 -0
- data/js/comm/jsloader/jsloader.js +114 -0
- data/js/comm/reloadapp/js.inc +0 -0
- data/js/comm/reloadapp/reloadapp.js +150 -0
- data/js/comm/reloadapp/themes/default/reloadapp_warning-ie6.gif +0 -0
- data/js/comm/reloadapp/themes/default/reloadapp_warning.png +0 -0
- data/js/comm/sha/js.inc +0 -0
- data/js/comm/sha/sha.js +432 -0
- data/js/comm/values/value/js.inc +0 -0
- data/js/comm/values/value/value.js +182 -0
- data/js/comm/values/valuematrix/js.inc +0 -0
- data/js/comm/values/valuematrix/valuematrix.js +138 -0
- data/js/controls/button/button.js +57 -0
- data/js/controls/button/js.inc +0 -0
- data/js/controls/button/themes/bright/button.css +89 -0
- data/js/controls/button/themes/bright/button.html +7 -0
- data/js/controls/button/themes/bright/button_parts1-ie6.gif +0 -0
- data/js/controls/button/themes/bright/button_parts1.png +0 -0
- data/js/controls/button/themes/default/button.css +89 -0
- data/js/controls/button/themes/default/button.html +7 -0
- data/js/controls/button/themes/default/button_parts1-ie6.gif +0 -0
- data/js/controls/button/themes/default/button_parts1.png +0 -0
- data/js/controls/checkbox/checkbox.js +47 -0
- data/js/controls/checkbox/js.inc +0 -0
- data/js/controls/checkbox/themes/default/checkbox.css +69 -0
- data/js/controls/checkbox/themes/default/checkbox.html +5 -0
- data/js/controls/checkbox/themes/default/checkbox_parts1-ie6.gif +0 -0
- data/js/controls/checkbox/themes/default/checkbox_parts1.png +0 -0
- data/js/controls/datetime/calendar/calendar.js +197 -0
- data/js/controls/datetime/calendar/js.inc +0 -0
- data/js/controls/datetime/calendar/themes/default/calendar.css +108 -0
- data/js/controls/datetime/calendar/themes/default/calendar.html +9 -0
- data/js/controls/datetime/calendar/themes/default/calendar_arrows-ie6.gif +0 -0
- data/js/controls/datetime/calendar/themes/default/calendar_arrows.png +0 -0
- data/js/controls/datetime/datetimevalue/datetimevalue.js +246 -0
- data/js/controls/datetime/datetimevalue/js.inc +0 -0
- data/js/controls/datetime/timesheet/js.inc +0 -0
- data/js/controls/datetime/timesheet/themes/default/timesheet.css +30 -0
- data/js/controls/datetime/timesheet/themes/default/timesheet.html +2 -0
- data/js/controls/datetime/timesheet/timesheet.js +182 -0
- data/js/controls/datetime/timesheet_item/js.inc +0 -0
- data/js/controls/datetime/timesheet_item/themes/default/timesheet_item.css +42 -0
- data/js/controls/datetime/timesheet_item/themes/default/timesheet_item.html +8 -0
- data/js/controls/datetime/timesheet_item/timesheet_item.js +247 -0
- data/js/controls/datetime/timesheet_item_edit/js.inc +0 -0
- data/js/controls/datetime/timesheet_item_edit/timesheet_item_edit.js +274 -0
- data/js/controls/dialogs/alert_sheet/alert_sheet.js +62 -0
- data/js/controls/dialogs/alert_sheet/js.inc +0 -0
- data/js/controls/dialogs/confirm_sheet/confirm_sheet.js +36 -0
- data/js/controls/dialogs/confirm_sheet/js.inc +0 -0
- data/js/controls/dialogs/sheet/js.inc +0 -0
- data/js/controls/dialogs/sheet/sheet.js +83 -0
- data/js/controls/dialogs/sheet/themes/default/sheet.css +64 -0
- data/js/controls/dialogs/sheet/themes/default/sheet.html +14 -0
- data/js/controls/dialogs/sheet/themes/default/sheet_bg-ie6.gif +0 -0
- data/js/controls/dialogs/sheet/themes/default/sheet_bg.png +0 -0
- data/js/controls/dialogs/sheet/themes/default/sheet_dim-ie6.gif +0 -0
- data/js/controls/dialogs/sheet/themes/default/sheet_dim.png +0 -0
- data/js/controls/dialogs/sheet/themes/default/sheet_parts1-ie6.gif +0 -0
- data/js/controls/dialogs/sheet/themes/default/sheet_parts1.png +0 -0
- data/js/controls/dialogs/sheet/themes/default/sheet_parts2-ie6.gif +0 -0
- data/js/controls/dialogs/sheet/themes/default/sheet_parts2.png +0 -0
- data/js/controls/dialogs/sheet/themes/default/sheet_warning-ie6.gif +0 -0
- data/js/controls/dialogs/sheet/themes/default/sheet_warning.png +0 -0
- data/js/controls/imageview/imageview.js +108 -0
- data/js/controls/imageview/js.inc +0 -0
- data/js/controls/imageview/themes/default/blank.gif +0 -0
- data/js/controls/lists/checkboxlist/checkboxlist.js +170 -0
- data/js/controls/lists/checkboxlist/js.inc +0 -0
- data/js/controls/lists/listitems/js.inc +0 -0
- data/js/controls/lists/listitems/listitems.js +65 -0
- data/js/controls/lists/radiobuttonlist/js.inc +0 -0
- data/js/controls/lists/radiobuttonlist/radiobuttonlist.js +126 -0
- data/js/controls/passwordcontrol/js.inc +0 -0
- data/js/controls/passwordcontrol/passwordcontrol.js +22 -0
- data/js/controls/passwordcontrol/themes/default/passwordcontrol.css +0 -0
- data/js/controls/passwordcontrol/themes/default/passwordcontrol.html +18 -0
- data/js/controls/progress/progressbar/js.inc +0 -0
- data/js/controls/progress/progressbar/progressbar.js +36 -0
- data/js/controls/progress/progressbar/themes/default/progressbar.css +16 -0
- data/js/controls/progress/progressbar/themes/default/progressbar.html +2 -0
- data/js/controls/progress/progressindicator/js.inc +0 -0
- data/js/controls/progress/progressindicator/progressindicator.js +43 -0
- data/js/controls/radiobutton/js.inc +0 -0
- data/js/controls/radiobutton/radiobutton.js +41 -0
- data/js/controls/radiobutton/themes/default/radiobutton.css +69 -0
- data/js/controls/radiobutton/themes/default/radiobutton.html +5 -0
- data/js/controls/radiobutton/themes/default/radiobutton_parts1-ie6.gif +0 -0
- data/js/controls/radiobutton/themes/default/radiobutton_parts1.png +0 -0
- data/js/controls/sliders/slider/js.inc +0 -0
- data/js/controls/sliders/slider/slider.js +356 -0
- data/js/controls/sliders/slider/themes/default/hslider_tracks-ie6.gif +0 -0
- data/js/controls/sliders/slider/themes/default/hslider_tracks.png +0 -0
- data/js/controls/sliders/slider/themes/default/slider.css +108 -0
- data/js/controls/sliders/slider/themes/default/slider.html +5 -0
- data/js/controls/sliders/slider/themes/default/slider_thumbs-ie6.gif +0 -0
- data/js/controls/sliders/slider/themes/default/slider_thumbs.png +0 -0
- data/js/controls/sliders/vslider/js.inc +0 -0
- data/js/controls/sliders/vslider/themes/default/vslider.css +52 -0
- data/js/controls/sliders/vslider/themes/default/vslider.html +5 -0
- data/js/controls/sliders/vslider/themes/default/vslider_tracks-ie6.gif +0 -0
- data/js/controls/sliders/vslider/themes/default/vslider_tracks.png +0 -0
- data/js/controls/sliders/vslider/vslider.js +40 -0
- data/js/controls/stepper/js.inc +0 -0
- data/js/controls/stepper/stepper.js +212 -0
- data/js/controls/stepper/themes/default/stepper-ie6.gif +0 -0
- data/js/controls/stepper/themes/default/stepper.css +14 -0
- data/js/controls/stepper/themes/default/stepper.html +2 -0
- data/js/controls/stepper/themes/default/stepper.png +0 -0
- data/js/controls/stringview/js.inc +0 -0
- data/js/controls/stringview/stringview.js +49 -0
- data/js/controls/stringview/themes/default/stringview.css +8 -0
- data/js/controls/stringview/themes/default/stringview.html +1 -0
- data/js/controls/tab/js.inc +0 -0
- data/js/controls/tab/tab.js +276 -0
- data/js/controls/tab/themes/bright/tab.css +76 -0
- data/js/controls/tab/themes/bright/tab.html +6 -0
- data/js/controls/tab/themes/bright/tab_bg_color-ie6.gif +0 -0
- data/js/controls/tab/themes/bright/tab_bg_color.png +0 -0
- data/js/controls/tab/themes/bright/tab_border_pattern-ie6.gif +0 -0
- data/js/controls/tab/themes/bright/tab_border_pattern.png +0 -0
- data/js/controls/tab/themes/bright/tab_parts1-ie6.gif +0 -0
- data/js/controls/tab/themes/bright/tab_parts1.png +0 -0
- data/js/controls/tab/themes/default/tab.css +77 -0
- data/js/controls/tab/themes/default/tab.html +6 -0
- data/js/controls/tab/themes/default/tab_bg_color-ie6.gif +0 -0
- data/js/controls/tab/themes/default/tab_bg_color.png +0 -0
- data/js/controls/tab/themes/default/tab_border_pattern-ie6.gif +0 -0
- data/js/controls/tab/themes/default/tab_border_pattern.png +0 -0
- data/js/controls/tab/themes/default/tab_parts1-ie6.gif +0 -0
- data/js/controls/tab/themes/default/tab_parts1.png +0 -0
- data/js/controls/textarea/js.inc +0 -0
- data/js/controls/textarea/textarea.js +23 -0
- data/js/controls/textarea/themes/default/textarea.css +21 -0
- data/js/controls/textarea/themes/default/textarea.html +18 -0
- data/js/controls/textcontrol/js.inc +0 -0
- data/js/controls/textcontrol/textcontrol.js +372 -0
- data/js/controls/textcontrol/themes/default/textcontrol.css +107 -0
- data/js/controls/textcontrol/themes/default/textcontrol.html +18 -0
- data/js/controls/textcontrol/themes/default/textcontrol_parts1-ie6.gif +0 -0
- data/js/controls/textcontrol/themes/default/textcontrol_parts1.png +0 -0
- data/js/controls/textcontrol/themes/default/textcontrol_parts2-ie6.gif +0 -0
- data/js/controls/textcontrol/themes/default/textcontrol_parts2.png +0 -0
- data/js/controls/textcontrol/themes/default/textcontrol_parts3-ie6.gif +0 -0
- data/js/controls/textcontrol/themes/default/textcontrol_parts3.png +0 -0
- data/js/controls/uploader/js.inc +0 -0
- data/js/controls/uploader/themes/default/upload_progress.gif +0 -0
- data/js/controls/uploader/themes/default/uploader.css +108 -0
- data/js/controls/uploader/themes/default/uploader.html +27 -0
- data/js/controls/uploader/uploader.js +153 -0
- data/js/controls/validatorview/js.inc +0 -0
- data/js/controls/validatorview/themes/default/validator-ie6.gif +0 -0
- data/js/controls/validatorview/themes/default/validator.png +0 -0
- data/js/controls/validatorview/themes/default/validatorview.css +0 -0
- data/js/controls/validatorview/themes/default/validatorview.html +0 -0
- data/js/controls/validatorview/validatorview.js +55 -0
- data/js/controls/window/js.inc +0 -0
- data/js/controls/window/themes/default/window.css +219 -0
- data/js/controls/window/themes/default/window.html +17 -0
- data/js/controls/window/themes/default/window_bg_active-ie6.gif +0 -0
- data/js/controls/window/themes/default/window_bg_active.png +0 -0
- data/js/controls/window/themes/default/window_bg_inactive-ie6.gif +0 -0
- data/js/controls/window/themes/default/window_bg_inactive.png +0 -0
- data/js/controls/window/themes/default/window_buttons-ie6.gif +0 -0
- data/js/controls/window/themes/default/window_buttons.png +0 -0
- data/js/controls/window/themes/default/window_parts1-ie6.gif +0 -0
- data/js/controls/window/themes/default/window_parts1.png +0 -0
- data/js/controls/window/themes/default/window_parts2-ie6.gif +0 -0
- data/js/controls/window/themes/default/window_parts2.png +0 -0
- data/js/controls/window/window.js +284 -0
- data/js/core/class/class.js +317 -0
- data/js/core/class/js.inc +0 -0
- data/js/core/elem/elem.js +1376 -0
- data/js/core/elem/js.inc +0 -0
- data/js/core/event/event.js +1021 -0
- data/js/core/event/js.inc +0 -0
- data/js/core/iefix/ie_css_element.htc +5 -0
- data/js/core/iefix/ie_css_style.htc +5 -0
- data/js/core/iefix/iefix.js +359 -0
- data/js/core/iefix/js.inc +0 -0
- data/js/debugg/debugg.js +43 -0
- data/js/debugg/js.inc +0 -0
- data/js/foundation/application/application.js +209 -0
- data/js/foundation/application/js.inc +0 -0
- data/js/foundation/control/control.js +342 -0
- data/js/foundation/control/controldefaults/controldefaults.js +59 -0
- data/js/foundation/control/controldefaults/js.inc +0 -0
- data/js/foundation/control/dummyvalue/dummyvalue.js +50 -0
- data/js/foundation/control/dummyvalue/js.inc +0 -0
- data/js/foundation/control/dyncontrol/dyncontrol.js +494 -0
- data/js/foundation/control/dyncontrol/js.inc +0 -0
- data/js/foundation/control/dyncontrol/themes/default/dyncontrol.css +0 -0
- data/js/foundation/control/dyncontrol/themes/default/dyncontrol.html +0 -0
- data/js/foundation/control/eventresponder/eventresponder.js +713 -0
- data/js/foundation/control/eventresponder/js.inc +0 -0
- data/js/foundation/control/js.inc +0 -0
- data/js/foundation/control/valueresponder/js.inc +0 -0
- data/js/foundation/control/valueresponder/valueresponder.js +77 -0
- data/js/foundation/geom/point/js.inc +0 -0
- data/js/foundation/geom/point/point.js +202 -0
- data/js/foundation/geom/rect/js.inc +0 -0
- data/js/foundation/geom/rect/rect.js +610 -0
- data/js/foundation/json_renderer/js.inc +0 -0
- data/js/foundation/json_renderer/json_renderer.js +231 -0
- data/js/foundation/system/js.inc +0 -0
- data/js/foundation/system/system.js +369 -0
- data/js/foundation/thememanager/js.inc +0 -0
- data/js/foundation/thememanager/thememanager.js +387 -0
- data/js/foundation/view/js.inc +0 -0
- data/js/foundation/view/markupview/js.inc +0 -0
- data/js/foundation/view/markupview/markupview.js +113 -0
- data/js/foundation/view/morphanimation/js.inc +0 -0
- data/js/foundation/view/morphanimation/morphanimation.js +236 -0
- data/js/foundation/view/view.js +1804 -0
- data/js/foundation/view/viewdefaults/js.inc +0 -0
- data/js/foundation/view/viewdefaults/viewdefaults.js +25 -0
- data/js/views/centerview/centerview.js +45 -0
- data/js/views/centerview/js.inc +0 -0
- data/js/views/inlineview/inlineview.js +14 -0
- data/js/views/inlineview/js.inc +0 -0
- data/js/views/scrollview/js.inc +0 -0
- data/js/views/scrollview/scrollview.js +39 -0
- data/lib/conf/default.rb +220 -0
- data/lib/conf/wizard.rb +303 -0
- data/lib/daemon/daemon.rb +293 -0
- data/lib/http/broker.rb +102 -0
- data/lib/http/rackup.rb +88 -0
- data/lib/http/request.rb +69 -0
- data/lib/http/response.rb +63 -0
- data/lib/plugins/gui_plugin.rb +129 -0
- data/lib/plugins/guiparser.rb +114 -0
- data/lib/plugins/plugin.rb +652 -0
- data/lib/plugins/plugin_plugins.rb +47 -0
- data/lib/plugins/plugin_sqlite_db.rb +72 -0
- data/lib/plugins/plugin_util.rb +96 -0
- data/lib/plugins/pluginmanager.rb +517 -0
- data/lib/plugins/servlet.rb +69 -0
- data/lib/session/msg.rb +291 -0
- data/lib/session/sessionmanager.rb +491 -0
- data/lib/session/sessionstorage.rb +314 -0
- data/lib/transporter/transporter.rb +254 -0
- data/lib/util/gzstring.rb +5 -0
- data/lib/values/hvalue.rb +323 -0
- data/lib/values/valuemanager.rb +152 -0
- data/plugins/client_pkg/client_pkg.rb +186 -0
- data/plugins/client_pkg/info.yaml +25 -0
- data/plugins/client_pkg/lib/client_pkg_build.rb +569 -0
- data/plugins/client_pkg/lib/client_pkg_cache.rb +50 -0
- data/plugins/client_pkg/lib/client_pkg_serve.rb +210 -0
- data/plugins/client_pkg/log/build_log +0 -0
- data/plugins/index_html/img/loading.gif +0 -0
- data/plugins/index_html/img/riassence.gif +0 -0
- data/plugins/index_html/index_html.rb +150 -0
- data/plugins/index_html/tmpl/index.html +22 -0
- data/plugins/index_html/tmpl/startup_index.html +29 -0
- data/plugins/legacy/disabled +0 -0
- data/plugins/legacy/disabled- +0 -0
- data/plugins/legacy/info.yaml +22 -0
- data/plugins/legacy/legacy.rb +15 -0
- data/plugins/main/js/riassence_ns.js +87 -0
- data/plugins/main/main.rb +234 -0
- data/plugins/main/values.yaml +8 -0
- data/plugins/ticketservices/lib/common.rb +300 -0
- data/plugins/ticketservices/lib/favicon.rb +38 -0
- data/plugins/ticketservices/lib/file.rb +58 -0
- data/plugins/ticketservices/lib/img.rb +50 -0
- data/plugins/ticketservices/lib/objblob.rb +66 -0
- data/plugins/ticketservices/lib/rsrc.rb +34 -0
- data/plugins/ticketservices/lib/upload.rb +206 -0
- data/plugins/ticketservices/ticketservices.rb +268 -0
- data/var/db/.git_include +0 -0
- data/var/log/.git_include +0 -0
- data/var/run/.git_include +0 -0
- 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
|
|
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>
|