webroar 0.6.1 → 0.7.0
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/CHANGELOG +7 -0
- data/README +1 -1
- data/doc/user-guide.html +125 -85
- data/doc/user-guide.txt +2 -2
- data/lib/constant.rb +23 -16
- data/lib/db_connect.rb +2 -3
- data/lib/installer.rb +17 -10
- data/lib/user_interaction.rb +21 -10
- data/lib/webroar_command.rb +21 -23
- data/src/admin_panel/Gemfile +8 -0
- data/src/admin_panel/Rakefile +2 -5
- data/src/admin_panel/app/controllers/application_controller.rb +1 -1
- data/src/admin_panel/app/controllers/exceptions_controller.rb +25 -26
- data/src/admin_panel/app/controllers/graph_controller.rb +2 -1
- data/src/admin_panel/app/helpers/admin_helper.rb +1 -1
- data/src/admin_panel/app/{models → mailers}/mailer.rb +5 -8
- data/src/admin_panel/app/models/app.rb +1 -1
- data/src/admin_panel/app/models/app_exception.rb +15 -11
- data/src/admin_panel/app/models/app_time_sample.rb +40 -10
- data/src/admin_panel/app/models/application_specification.rb +71 -41
- data/src/admin_panel/app/models/resource_usage.rb +76 -55
- data/src/admin_panel/app/models/url_breakup_time_sample.rb +6 -11
- data/src/admin_panel/app/models/url_time_sample.rb +57 -13
- data/src/admin_panel/app/views/admin/_application_table.html.erb +5 -5
- data/src/admin_panel/app/views/admin/_feedback_partial.html.erb +4 -4
- data/src/admin_panel/app/views/admin/_report_bug_partial.html.erb +5 -5
- data/src/admin_panel/app/views/admin/change_password_form.html.erb +3 -3
- data/src/admin_panel/app/views/admin/configuration.html.erb +6 -6
- data/src/admin_panel/app/views/admin/home.html.erb +4 -4
- data/src/admin_panel/app/views/admin/index.html.erb +5 -5
- data/src/admin_panel/app/views/application_specification/_application_specification_form.html.erb +15 -6
- data/src/admin_panel/app/views/exceptions/_add_and_list_exception_classes.html.erb +7 -6
- data/src/admin_panel/app/views/exceptions/_exception_backtrace_partial.html.erb +1 -1
- data/src/admin_panel/app/views/exceptions/_exception_environment_partial.html.erb +30 -30
- data/src/admin_panel/app/views/exceptions/_exception_list_partial.html.erb +11 -11
- data/src/admin_panel/app/views/exceptions/_show.html.erb +8 -8
- data/src/admin_panel/app/views/exceptions/index.html.erb +0 -1
- data/src/admin_panel/app/views/graph/_get_database_data.html.erb +1 -1
- data/src/admin_panel/app/views/graph/_get_resource_usage_data_app.html.erb +2 -2
- data/src/admin_panel/app/views/graph/_get_resource_usage_data_server.html.erb +2 -2
- data/src/admin_panel/app/views/graph/_get_throughput_data.html.erb +2 -2
- data/src/admin_panel/app/views/graph/_get_url_data.html.erb +4 -4
- data/src/admin_panel/app/views/graph/_pie.html.erb +2 -2
- data/src/admin_panel/app/views/graph/_query_date.html.erb +1 -1
- data/src/admin_panel/app/views/graph/_query_period.html.erb +1 -1
- data/src/admin_panel/app/views/graph/_slider_partial.html.erb +5 -4
- data/src/admin_panel/app/views/graph/index.html.erb +0 -1
- data/src/admin_panel/app/views/headers/_add_expires_text_box.html.erb +5 -5
- data/src/admin_panel/app/views/headers/_expires_by_type_form.html.erb +1 -1
- data/src/admin_panel/app/views/headers/_headers_table.html.erb +12 -12
- data/src/admin_panel/app/views/layouts/application.html.erb +71 -51
- data/src/admin_panel/app/views/mail_specification/_current_spec.html.erb +4 -4
- data/src/admin_panel/app/views/mail_specification/_sendmail_form.html.erb +3 -3
- data/src/admin_panel/app/views/mail_specification/_smtp_form.html.erb +3 -3
- data/src/admin_panel/app/views/server_specification/_add_div.html.erb +4 -4
- data/src/admin_panel/app/views/server_specification/_ssl_support_form.html.erb +3 -2
- data/src/admin_panel/config.ru +4 -0
- data/src/admin_panel/config/application.rb +46 -0
- data/src/admin_panel/config/boot.rb +4 -112
- data/src/admin_panel/config/environment.rb +4 -85
- data/src/admin_panel/config/environments/development.rb +20 -13
- data/src/admin_panel/config/environments/production.rb +44 -17
- data/src/admin_panel/config/environments/test.rb +31 -18
- data/src/admin_panel/config/initializers/application_constants.rb +13 -11
- data/src/admin_panel/config/initializers/secret_token.rb +7 -0
- data/src/admin_panel/config/initializers/session_store.rb +8 -0
- data/src/admin_panel/config/initializers/ssl.rb +6 -2
- data/src/admin_panel/config/routes.rb +15 -57
- data/src/admin_panel/doc/README_FOR_APP +1 -1
- data/src/admin_panel/doc/app/ActionView.html +229 -0
- data/src/admin_panel/doc/app/ActionView/Helpers.html +229 -0
- data/src/admin_panel/doc/app/ActionView/Helpers/AssetTagHelper.html +277 -0
- data/src/admin_panel/doc/app/AdminController.html +814 -0
- data/src/admin_panel/doc/app/AdminHelper.html +495 -0
- data/src/admin_panel/doc/app/Analytics.html +272 -0
- data/src/admin_panel/doc/app/Analytics/Database.html +401 -0
- data/src/admin_panel/doc/app/Analytics/ResourceUsage.html +683 -0
- data/src/admin_panel/doc/app/Analytics/Throughput.html +488 -0
- data/src/admin_panel/doc/app/Analytics/Url.html +484 -0
- data/src/admin_panel/doc/app/Analytics/UrlBreakup.html +537 -0
- data/src/admin_panel/doc/app/App.html +489 -0
- data/src/admin_panel/doc/app/AppException.html +710 -0
- data/src/admin_panel/doc/app/AppTimeSample.html +620 -0
- data/src/admin_panel/doc/app/ApplicationController.html +239 -0
- data/src/admin_panel/doc/app/ApplicationHelper.html +296 -0
- data/src/admin_panel/doc/app/ApplicationSpecification.html +876 -0
- data/src/admin_panel/doc/app/ApplicationSpecificationController.html +552 -0
- data/src/admin_panel/doc/app/ApplicationSpecificationHelper.html +219 -0
- data/src/admin_panel/doc/app/Control.html +431 -0
- data/src/admin_panel/doc/app/ExceptionDetail.html +227 -0
- data/src/admin_panel/doc/app/ExceptionsController.html +754 -0
- data/src/admin_panel/doc/app/ExceptionsHelper.html +219 -0
- data/src/admin_panel/doc/app/GraphController.html +1101 -0
- data/src/admin_panel/doc/app/GraphHelper.html +285 -0
- data/src/admin_panel/doc/app/Headers.html +549 -0
- data/src/admin_panel/doc/app/HeadersController.html +507 -0
- data/src/admin_panel/doc/app/HeadersHelper.html +219 -0
- data/src/admin_panel/doc/app/MailSpecification.html +685 -0
- data/src/admin_panel/doc/app/MailSpecificationController.html +541 -0
- data/src/admin_panel/doc/app/MailSpecificationHelper.html +219 -0
- data/src/admin_panel/doc/app/Mailer.html +589 -0
- data/src/admin_panel/doc/app/Object.html +240 -0
- data/src/admin_panel/doc/app/PseudoModel.html +354 -0
- data/src/admin_panel/doc/app/ResourceUsage.html +656 -0
- data/src/admin_panel/doc/app/SCGI.html +674 -0
- data/src/admin_panel/doc/app/ServerSpecification.html +479 -0
- data/src/admin_panel/doc/app/ServerSpecificationController.html +500 -0
- data/src/admin_panel/doc/app/ServerSpecificationHelper.html +219 -0
- data/src/admin_panel/doc/app/SignalHelper.html +287 -0
- data/src/admin_panel/doc/app/UrlBreakupTimeSample.html +287 -0
- data/src/admin_panel/doc/app/UrlTimeSample.html +986 -0
- data/src/admin_panel/doc/app/User.html +290 -0
- data/src/admin_panel/doc/app/YAMLConfig.html +247 -0
- data/src/admin_panel/doc/app/YAMLWriter.html +284 -0
- data/src/admin_panel/doc/app/app/controllers/admin_controller_rb.html +52 -0
- data/src/admin_panel/doc/app/app/controllers/application_controller_rb.html +54 -0
- data/src/admin_panel/doc/app/app/controllers/application_specification_controller_rb.html +52 -0
- data/src/admin_panel/doc/app/app/controllers/exceptions_controller_rb.html +52 -0
- data/src/admin_panel/doc/app/app/controllers/graph_controller_rb.html +52 -0
- data/src/admin_panel/doc/app/app/controllers/headers_controller_rb.html +52 -0
- data/src/admin_panel/doc/app/app/controllers/mail_specification_controller_rb.html +52 -0
- data/src/admin_panel/doc/app/app/controllers/server_specification_controller_rb.html +52 -0
- data/src/admin_panel/doc/app/app/helpers/admin_helper_rb.html +52 -0
- data/src/admin_panel/doc/app/app/helpers/application_helper_rb.html +52 -0
- data/src/admin_panel/doc/app/app/helpers/application_specification_helper_rb.html +52 -0
- data/src/admin_panel/doc/app/app/helpers/exceptions_helper_rb.html +52 -0
- data/src/admin_panel/doc/app/app/helpers/graph_helper_rb.html +52 -0
- data/src/admin_panel/doc/app/app/helpers/headers_helper_rb.html +52 -0
- data/src/admin_panel/doc/app/app/helpers/mail_specification_helper_rb.html +52 -0
- data/src/admin_panel/doc/app/app/helpers/server_specification_helper_rb.html +52 -0
- data/src/admin_panel/doc/app/app/mailers/mailer_rb.html +56 -0
- data/src/admin_panel/doc/app/app/models/app_exception_rb.html +52 -0
- data/src/admin_panel/doc/app/app/models/app_rb.html +54 -0
- data/src/admin_panel/doc/app/app/models/app_time_sample_rb.html +52 -0
- data/src/admin_panel/doc/app/app/models/application_specification_rb.html +52 -0
- data/src/admin_panel/doc/app/app/models/exception_detail_rb.html +52 -0
- data/src/admin_panel/doc/app/app/models/headers_rb.html +52 -0
- data/src/admin_panel/doc/app/app/models/mail_specification_rb.html +52 -0
- data/src/admin_panel/doc/app/app/models/pseudo_model_rb.html +52 -0
- data/src/admin_panel/doc/app/app/models/resource_usage_rb.html +52 -0
- data/src/admin_panel/doc/app/app/models/server_specification_rb.html +52 -0
- data/src/admin_panel/doc/app/app/models/url_breakup_time_sample_rb.html +52 -0
- data/src/admin_panel/doc/app/app/models/url_time_sample_rb.html +52 -0
- data/src/admin_panel/doc/app/app/models/user_rb.html +52 -0
- data/src/admin_panel/doc/app/created.rid +42 -1
- data/src/admin_panel/doc/app/doc/README_FOR_APP.html +172 -0
- data/src/admin_panel/doc/app/images/brick.png +0 -0
- data/src/admin_panel/doc/app/images/brick_link.png +0 -0
- data/src/admin_panel/doc/app/images/bug.png +0 -0
- data/src/admin_panel/doc/app/images/bullet_black.png +0 -0
- data/src/admin_panel/doc/app/images/bullet_toggle_minus.png +0 -0
- data/src/admin_panel/doc/app/images/bullet_toggle_plus.png +0 -0
- data/src/admin_panel/doc/app/images/date.png +0 -0
- data/src/admin_panel/doc/app/images/find.png +0 -0
- data/src/admin_panel/doc/app/images/loadingAnimation.gif +0 -0
- data/src/admin_panel/doc/app/images/macFFBgHack.png +0 -0
- data/src/admin_panel/doc/app/images/package.png +0 -0
- data/src/admin_panel/doc/app/images/page_green.png +0 -0
- data/src/admin_panel/doc/app/images/page_white_text.png +0 -0
- data/src/admin_panel/doc/app/images/page_white_width.png +0 -0
- data/src/admin_panel/doc/app/images/plugin.png +0 -0
- data/src/admin_panel/doc/app/images/ruby.png +0 -0
- data/src/admin_panel/doc/app/images/tag_green.png +0 -0
- data/src/admin_panel/doc/app/images/wrench.png +0 -0
- data/src/admin_panel/doc/app/images/wrench_orange.png +0 -0
- data/src/admin_panel/doc/app/images/zoom.png +0 -0
- data/src/admin_panel/doc/app/index.html +564 -20
- data/src/admin_panel/doc/app/js/darkfish.js +116 -0
- data/src/admin_panel/doc/app/js/jquery.js +32 -0
- data/src/admin_panel/doc/app/js/quicksearch.js +114 -0
- data/src/admin_panel/doc/app/js/thickbox-compressed.js +10 -0
- data/src/admin_panel/doc/app/lib/asset_tag_helper_ext_rb.html +52 -0
- data/src/admin_panel/doc/app/lib/control_rb.html +58 -0
- data/src/admin_panel/doc/app/lib/graph_controller_extensions/database_analytics_rb.html +52 -0
- data/src/admin_panel/doc/app/lib/graph_controller_extensions/resource_usage_analytics_rb.html +52 -0
- data/src/admin_panel/doc/app/lib/graph_controller_extensions/throughput_analytics_rb.html +52 -0
- data/src/admin_panel/doc/app/lib/graph_controller_extensions/url_analytics_rb.html +52 -0
- data/src/admin_panel/doc/app/lib/graph_controller_extensions/url_breakup_analytics_rb.html +52 -0
- data/src/admin_panel/doc/app/lib/helper_rb.html +52 -0
- data/src/admin_panel/doc/app/lib/scgi_rb.html +54 -0
- data/src/admin_panel/doc/app/lib/yaml_writer_rb.html +52 -0
- data/src/admin_panel/doc/app/rdoc.css +763 -0
- data/src/admin_panel/lib/helper.rb +6 -2
- data/src/admin_panel/public/stylesheets/other/login.css +8 -4
- data/src/admin_panel/public/stylesheets/other/style.css +21 -17
- data/src/admin_panel/script/rails +6 -0
- data/src/admin_panel/test/test_helper.rb +2 -2
- data/src/admin_panel/vendor/plugins/calendar_date_select/History.txt +281 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/MIT-LICENSE +20 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/Manifest.txt +42 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/README.txt +17 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/Rakefile +37 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/VERSION +1 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/calendar_date_select.gemspec +95 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/init.rb +1 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/js_test/functional/cds_test.html +376 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/js_test/functional/format_iso_date_test.html +52 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/js_test/prototype.js +4184 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/js_test/test.css +40 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/js_test/unit/cds_helper_methods.html +46 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/js_test/unittest.js +564 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/lib/calendar_date_select.rb +33 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/lib/calendar_date_select/calendar_date_select.rb +122 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/lib/calendar_date_select/form_helpers.rb +237 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/lib/calendar_date_select/includes_helper.rb +29 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/blank_iframe.html +2 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/images/calendar_date_select/calendar.gif +0 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/calendar_date_select.js +459 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/format_american.js +35 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/format_danish.js +31 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/format_db.js +27 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/format_euro_24hr.js +7 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/format_euro_24hr_ymd.js +7 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/format_finnish.js +32 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/format_hyphen_ampm.js +37 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/format_iso_date.js +29 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/format_italian.js +24 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/ar.js +10 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/cs.js +11 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/da.js +11 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/de.js +11 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/es.js +11 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/fi.js +10 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/fr.js +11 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/hu.js +11 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/it.js +9 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/ja.js +11 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/nl.js +11 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/pl.js +11 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/pt.js +11 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/ru.js +10 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/sl.js +11 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/sv.js +9 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/stylesheets/calendar_date_select/blue.css +130 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/stylesheets/calendar_date_select/default.css +135 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/stylesheets/calendar_date_select/green.css +142 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/stylesheets/calendar_date_select/plain.css +128 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/stylesheets/calendar_date_select/red.css +135 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/stylesheets/calendar_date_select/silver.css +133 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/spec/calendar_date_select/calendar_date_select_spec.rb +14 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/spec/calendar_date_select/form_helpers_spec.rb +189 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/spec/calendar_date_select/includes_helper_spec.rb +46 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/spec/spec_helper.rb +26 -0
- data/src/admin_panel/vendor/plugins/open_flash_chart_2_plugin/install.rb +2 -2
- data/src/admin_panel/vendor/plugins/open_flash_chart_2_plugin/uninstall.rb +2 -2
- data/src/admin_panel/vendor/plugins/prototype_legacy_helper/README.markdown +13 -0
- data/src/admin_panel/vendor/plugins/prototype_legacy_helper/init.rb +1 -0
- data/src/admin_panel/vendor/plugins/prototype_legacy_helper/lib/prototype_legacy_helper.rb +432 -0
- data/src/admin_panel/vendor/plugins/prototype_legacy_helper/test/test_prototype_helper.rb +297 -0
- data/src/helper/wr_config.c +1 -1
- data/src/ruby_lib/analyzer/message_analyzer.rb +1 -0
- data/src/ruby_lib/analyzer/webroar_analyzer.rb +2 -2
- data/src/ruby_lib/profiler/message_dispatcher.rb +1 -1
- data/src/ruby_lib/ruby_interface/version.rb +2 -2
- data/src/ruby_lib/webroar_app_loader.rb +1 -1
- data/tasks/gem.rake +5 -7
- data/tasks/test.rake +1 -0
- data/test/spec/analytics_spec.rb +25 -24
- data/test/spec/test_app/README +142 -129
- data/test/spec/test_app/Rakefile +2 -5
- data/test/spec/test_app/app/controllers/application_controller.rb +3 -8
- data/test/spec/test_app/app/controllers/test_controller.rb +3 -3
- data/test/spec/test_app/app/controllers/users_controller.rb +8 -8
- data/test/spec/test_app/app/helpers/application_helper.rb +2 -1
- data/test/spec/test_app/app/helpers/test_helper.rb +2 -0
- data/test/spec/test_app/app/helpers/users_helper.rb +2 -0
- data/test/spec/test_app/app/models/user.rb +2 -0
- data/test/spec/test_app/app/views/layouts/{users.html.erb → application.html.erb} +6 -9
- data/test/spec/test_app/app/views/test/post_data.html.erb +2 -2
- data/test/spec/test_app/app/views/test/upload_file.html.erb +1 -1
- data/test/spec/test_app/{db/migrate/20090602102438_create_users.rb → app/views/users/_form.html.erb} +22 -11
- data/test/spec/test_app/app/views/users/edit.html.erb +19 -28
- data/test/spec/test_app/app/views/users/index.html.erb +23 -19
- data/test/spec/test_app/app/views/users/new.html.erb +19 -28
- data/test/spec/test_app/app/views/users/show.html.erb +21 -18
- data/test/spec/test_app/config/application.rb +45 -0
- data/test/spec/test_app/config/boot.rb +4 -112
- data/test/spec/test_app/config/database.yml +1 -1
- data/test/spec/test_app/config/environment.rb +4 -41
- data/test/spec/test_app/config/environments/development.rb +22 -13
- data/test/spec/test_app/config/environments/production.rb +41 -20
- data/test/spec/test_app/config/environments/test.rb +35 -28
- data/test/spec/test_app/config/initializers/backtrace_silencers.rb +2 -2
- data/test/spec/test_app/config/initializers/inflections.rb +1 -1
- data/test/spec/test_app/config/initializers/secret_token.rb +7 -0
- data/test/spec/test_app/config/initializers/session_store.rb +3 -10
- data/test/spec/test_app/config/locales/en.yml +5 -0
- data/test/spec/test_app/config/routes.rb +37 -22
- data/test/spec/test_app/db/migrate/20110906113329_create_users.rb +13 -0
- data/test/spec/test_app/db/seeds.rb +7 -0
- data/test/spec/test_app/public/404.html +15 -19
- data/test/spec/test_app/public/422.html +15 -19
- data/test/spec/test_app/public/500.html +14 -18
- data/test/spec/test_app/public/index.html +41 -77
- data/test/spec/test_app/public/javascripts/controls.js +5 -3
- data/test/spec/test_app/public/javascripts/dragdrop.js +7 -6
- data/test/spec/test_app/public/javascripts/effects.js +8 -13
- data/test/spec/test_app/public/javascripts/prototype.js +3381 -1700
- data/test/spec/test_app/public/javascripts/rails.js +191 -0
- data/test/spec/test_app/public/stylesheets/scaffold.css +15 -13
- data/test/spec/test_app/script/rails +6 -0
- metadata +340 -163
- data/src/admin_panel/Gemfile.lock +0 -79
- data/src/admin_panel/doc/app/classes/ActionView.html +0 -111
- data/src/admin_panel/doc/app/classes/ActionView/Helpers.html +0 -111
- data/src/admin_panel/doc/app/classes/ActionView/Helpers/AssetTagHelper.html +0 -149
- data/src/admin_panel/doc/app/classes/AdminController.html +0 -628
- data/src/admin_panel/doc/app/classes/AdminHelper.html +0 -482
- data/src/admin_panel/doc/app/classes/Analytics.html +0 -138
- data/src/admin_panel/doc/app/classes/Analytics/Database.html +0 -245
- data/src/admin_panel/doc/app/classes/Analytics/ResourceUsage.html +0 -478
- data/src/admin_panel/doc/app/classes/Analytics/Throughput.html +0 -316
- data/src/admin_panel/doc/app/classes/Analytics/Url.html +0 -314
- data/src/admin_panel/doc/app/classes/Analytics/UrlBreakup.html +0 -372
- data/src/admin_panel/doc/app/classes/App.html +0 -298
- data/src/admin_panel/doc/app/classes/AppException.html +0 -330
- data/src/admin_panel/doc/app/classes/AppTimeSample.html +0 -427
- data/src/admin_panel/doc/app/classes/ApplicationController.html +0 -118
- data/src/admin_panel/doc/app/classes/ApplicationHelper.html +0 -172
- data/src/admin_panel/doc/app/classes/ApplicationSpecification.html +0 -641
- data/src/admin_panel/doc/app/classes/ApplicationSpecificationController.html +0 -354
- data/src/admin_panel/doc/app/classes/Control.html +0 -273
- data/src/admin_panel/doc/app/classes/ExceptionsController.html +0 -612
- data/src/admin_panel/doc/app/classes/ExceptionsHelper.html +0 -105
- data/src/admin_panel/doc/app/classes/GraphController.html +0 -804
- data/src/admin_panel/doc/app/classes/GraphHelper.html +0 -164
- data/src/admin_panel/doc/app/classes/MailSpecification.html +0 -357
- data/src/admin_panel/doc/app/classes/MailSpecificationController.html +0 -304
- data/src/admin_panel/doc/app/classes/PseudoModel.html +0 -206
- data/src/admin_panel/doc/app/classes/ResourceUsage.html +0 -425
- data/src/admin_panel/doc/app/classes/SCGI.html +0 -406
- data/src/admin_panel/doc/app/classes/ServerSpecification.html +0 -325
- data/src/admin_panel/doc/app/classes/ServerSpecificationController.html +0 -273
- data/src/admin_panel/doc/app/classes/UrlBreakupTimeSample.html +0 -169
- data/src/admin_panel/doc/app/classes/UrlTimeSample.html +0 -708
- data/src/admin_panel/doc/app/classes/User.html +0 -165
- data/src/admin_panel/doc/app/classes/YAMLWriter.html +0 -159
- data/src/admin_panel/doc/app/files/app/controllers/admin_controller_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/controllers/application_controller_rb.html +0 -108
- data/src/admin_panel/doc/app/files/app/controllers/application_specification_controller_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/controllers/exceptions_controller_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/controllers/graph_controller_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/controllers/mail_specification_controller_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/controllers/server_specification_controller_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/helpers/admin_helper_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/helpers/application_helper_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/helpers/exceptions_helper_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/helpers/graph_helper_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/models/app_exception_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/models/app_rb.html +0 -108
- data/src/admin_panel/doc/app/files/app/models/app_time_sample_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/models/application_specification_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/models/mail_specification_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/models/pseudo_model_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/models/resource_usage_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/models/server_specification_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/models/url_breakup_time_sample_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/models/url_time_sample_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/models/user_rb.html +0 -101
- data/src/admin_panel/doc/app/files/doc/README_FOR_APP.html +0 -109
- data/src/admin_panel/doc/app/files/lib/asset_tag_helper_ext_rb.html +0 -101
- data/src/admin_panel/doc/app/files/lib/control_rb.html +0 -110
- data/src/admin_panel/doc/app/files/lib/graph_controller_extensions/database_analytics_rb.html +0 -101
- data/src/admin_panel/doc/app/files/lib/graph_controller_extensions/resource_usage_analytics_rb.html +0 -101
- data/src/admin_panel/doc/app/files/lib/graph_controller_extensions/throughput_analytics_rb.html +0 -101
- data/src/admin_panel/doc/app/files/lib/graph_controller_extensions/url_analytics_rb.html +0 -101
- data/src/admin_panel/doc/app/files/lib/graph_controller_extensions/url_breakup_analytics_rb.html +0 -101
- data/src/admin_panel/doc/app/files/lib/scgi_rb.html +0 -101
- data/src/admin_panel/doc/app/files/lib/yaml_writer_rb.html +0 -101
- data/src/admin_panel/doc/app/fr_class_index.html +0 -60
- data/src/admin_panel/doc/app/fr_file_index.html +0 -58
- data/src/admin_panel/doc/app/fr_method_index.html +0 -206
- data/src/admin_panel/doc/app/rdoc-style.css +0 -208
- data/src/admin_panel/public/dispatch.cgi +0 -10
- data/src/admin_panel/public/dispatch.fcgi +0 -24
- data/src/admin_panel/public/dispatch.rb +0 -10
- data/src/admin_panel/script/about +0 -4
- data/src/admin_panel/script/console +0 -3
- data/src/admin_panel/script/dbconsole +0 -3
- data/src/admin_panel/script/destroy +0 -3
- data/src/admin_panel/script/generate +0 -3
- data/src/admin_panel/script/performance/benchmarker +0 -3
- data/src/admin_panel/script/performance/profiler +0 -3
- data/src/admin_panel/script/performance/request +0 -3
- data/src/admin_panel/script/plugin +0 -3
- data/src/admin_panel/script/process/inspector +0 -3
- data/src/admin_panel/script/process/reaper +0 -3
- data/src/admin_panel/script/process/spawner +0 -3
- data/src/admin_panel/script/runner +0 -3
- data/src/admin_panel/script/server +0 -3
- data/test/spec/test_app/config/initializers/new_rails_defaults.rb +0 -19
- data/test/spec/test_app/script/about +0 -4
- data/test/spec/test_app/script/console +0 -3
- data/test/spec/test_app/script/dbconsole +0 -3
- data/test/spec/test_app/script/destroy +0 -3
- data/test/spec/test_app/script/generate +0 -3
- data/test/spec/test_app/script/performance/benchmarker +0 -3
- data/test/spec/test_app/script/performance/profiler +0 -3
- data/test/spec/test_app/script/plugin +0 -3
- data/test/spec/test_app/script/runner +0 -3
- data/test/spec/test_app/script/server +0 -3
- data/test/spec/test_app/vendor/.placeholder +0 -0
|
@@ -0,0 +1,876 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
|
3
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
4
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
5
|
+
<head>
|
|
6
|
+
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
|
|
7
|
+
|
|
8
|
+
<title>Class: ApplicationSpecification</title>
|
|
9
|
+
|
|
10
|
+
<link rel="stylesheet" href="./rdoc.css" type="text/css" media="screen" />
|
|
11
|
+
|
|
12
|
+
<script src="./js/jquery.js" type="text/javascript" charset="utf-8"></script>
|
|
13
|
+
<script src="./js/thickbox-compressed.js" type="text/javascript" charset="utf-8"></script>
|
|
14
|
+
<script src="./js/quicksearch.js" type="text/javascript" charset="utf-8"></script>
|
|
15
|
+
<script src="./js/darkfish.js" type="text/javascript" charset="utf-8"></script>
|
|
16
|
+
|
|
17
|
+
</head>
|
|
18
|
+
<body id="top" class="class">
|
|
19
|
+
|
|
20
|
+
<div id="metadata">
|
|
21
|
+
<div id="home-metadata">
|
|
22
|
+
<div id="home-section" class="section">
|
|
23
|
+
<h3 class="section-header">
|
|
24
|
+
<a href="./index.html">Home</a>
|
|
25
|
+
<a href="./index.html#classes">Classes</a>
|
|
26
|
+
<a href="./index.html#methods">Methods</a>
|
|
27
|
+
</h3>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
<div id="file-metadata">
|
|
32
|
+
<div id="file-list-section" class="section">
|
|
33
|
+
<h3 class="section-header">In Files</h3>
|
|
34
|
+
<div class="section-body">
|
|
35
|
+
<ul>
|
|
36
|
+
|
|
37
|
+
<li><a href="./app/models/application_specification_rb.html?TB_iframe=true&height=550&width=785"
|
|
38
|
+
class="thickbox" title="app/models/application_specification.rb">app/models/application_specification.rb</a></li>
|
|
39
|
+
|
|
40
|
+
</ul>
|
|
41
|
+
</div>
|
|
42
|
+
</div>
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
</div>
|
|
46
|
+
|
|
47
|
+
<div id="class-metadata">
|
|
48
|
+
|
|
49
|
+
<!-- Parent Class -->
|
|
50
|
+
<div id="parent-class-section" class="section">
|
|
51
|
+
<h3 class="section-header">Parent</h3>
|
|
52
|
+
|
|
53
|
+
<p class="link"><a href="PseudoModel.html">PseudoModel</a></p>
|
|
54
|
+
|
|
55
|
+
</div>
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
<!-- Method Quickref -->
|
|
64
|
+
<div id="method-list-section" class="section">
|
|
65
|
+
<h3 class="section-header">Methods</h3>
|
|
66
|
+
<ul class="link-list">
|
|
67
|
+
|
|
68
|
+
<li><a href="#method-c-analytics_enabled-3F">::analytics_enabled?</a></li>
|
|
69
|
+
|
|
70
|
+
<li><a href="#method-c-get_application_id_from_name">::get_application_id_from_name</a></li>
|
|
71
|
+
|
|
72
|
+
<li><a href="#method-c-get_hash">::get_hash</a></li>
|
|
73
|
+
|
|
74
|
+
<li><a href="#method-c-remove">::remove</a></li>
|
|
75
|
+
|
|
76
|
+
<li><a href="#method-i-ensure_validations">#ensure_validations</a></li>
|
|
77
|
+
|
|
78
|
+
<li><a href="#method-i-obj_to_hash">#obj_to_hash</a></li>
|
|
79
|
+
|
|
80
|
+
<li><a href="#method-i-remove">#remove</a></li>
|
|
81
|
+
|
|
82
|
+
<li><a href="#method-i-update">#update</a></li>
|
|
83
|
+
|
|
84
|
+
<li><a href="#method-i-write">#write</a></li>
|
|
85
|
+
|
|
86
|
+
</ul>
|
|
87
|
+
</div>
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
</div>
|
|
92
|
+
|
|
93
|
+
<div id="project-metadata">
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
<div id="fileindex-section" class="section project-section">
|
|
97
|
+
<h3 class="section-header">Files</h3>
|
|
98
|
+
<ul>
|
|
99
|
+
|
|
100
|
+
<li class="file"><a href="./doc/README_FOR_APP.html">README_FOR_APP</a></li>
|
|
101
|
+
|
|
102
|
+
</ul>
|
|
103
|
+
</div>
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
<div id="classindex-section" class="section project-section">
|
|
107
|
+
<h3 class="section-header">Class/Module Index
|
|
108
|
+
<span class="search-toggle"><img src="./images/find.png"
|
|
109
|
+
height="16" width="16" alt="[+]"
|
|
110
|
+
title="show/hide quicksearch" /></span></h3>
|
|
111
|
+
<form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
|
|
112
|
+
<fieldset>
|
|
113
|
+
<legend>Quicksearch</legend>
|
|
114
|
+
<input type="text" name="quicksearch" value=""
|
|
115
|
+
class="quicksearch-field" />
|
|
116
|
+
</fieldset>
|
|
117
|
+
</form>
|
|
118
|
+
|
|
119
|
+
<ul class="link-list">
|
|
120
|
+
|
|
121
|
+
<li><a href="./Analytics.html">Analytics</a></li>
|
|
122
|
+
|
|
123
|
+
<li><a href="./Analytics/Database.html">Analytics::Database</a></li>
|
|
124
|
+
|
|
125
|
+
<li><a href="./Analytics/ResourceUsage.html">Analytics::ResourceUsage</a></li>
|
|
126
|
+
|
|
127
|
+
<li><a href="./Analytics/Throughput.html">Analytics::Throughput</a></li>
|
|
128
|
+
|
|
129
|
+
<li><a href="./Analytics/Url.html">Analytics::Url</a></li>
|
|
130
|
+
|
|
131
|
+
<li><a href="./Analytics/UrlBreakup.html">Analytics::UrlBreakup</a></li>
|
|
132
|
+
|
|
133
|
+
<li><a href="./ActionView.html">ActionView</a></li>
|
|
134
|
+
|
|
135
|
+
<li><a href="./ActionView/Helpers.html">ActionView::Helpers</a></li>
|
|
136
|
+
|
|
137
|
+
<li><a href="./ActionView/Helpers/AssetTagHelper.html">ActionView::Helpers::AssetTagHelper</a></li>
|
|
138
|
+
|
|
139
|
+
<li><a href="./AdminController.html">AdminController</a></li>
|
|
140
|
+
|
|
141
|
+
<li><a href="./AdminHelper.html">AdminHelper</a></li>
|
|
142
|
+
|
|
143
|
+
<li><a href="./App.html">App</a></li>
|
|
144
|
+
|
|
145
|
+
<li><a href="./AppException.html">AppException</a></li>
|
|
146
|
+
|
|
147
|
+
<li><a href="./AppTimeSample.html">AppTimeSample</a></li>
|
|
148
|
+
|
|
149
|
+
<li><a href="./ApplicationController.html">ApplicationController</a></li>
|
|
150
|
+
|
|
151
|
+
<li><a href="./ApplicationHelper.html">ApplicationHelper</a></li>
|
|
152
|
+
|
|
153
|
+
<li><a href="./ApplicationSpecification.html">ApplicationSpecification</a></li>
|
|
154
|
+
|
|
155
|
+
<li><a href="./ApplicationSpecificationController.html">ApplicationSpecificationController</a></li>
|
|
156
|
+
|
|
157
|
+
<li><a href="./ApplicationSpecificationHelper.html">ApplicationSpecificationHelper</a></li>
|
|
158
|
+
|
|
159
|
+
<li><a href="./Control.html">Control</a></li>
|
|
160
|
+
|
|
161
|
+
<li><a href="./ExceptionDetail.html">ExceptionDetail</a></li>
|
|
162
|
+
|
|
163
|
+
<li><a href="./ExceptionsController.html">ExceptionsController</a></li>
|
|
164
|
+
|
|
165
|
+
<li><a href="./ExceptionsHelper.html">ExceptionsHelper</a></li>
|
|
166
|
+
|
|
167
|
+
<li><a href="./GraphController.html">GraphController</a></li>
|
|
168
|
+
|
|
169
|
+
<li><a href="./GraphHelper.html">GraphHelper</a></li>
|
|
170
|
+
|
|
171
|
+
<li><a href="./Headers.html">Headers</a></li>
|
|
172
|
+
|
|
173
|
+
<li><a href="./HeadersController.html">HeadersController</a></li>
|
|
174
|
+
|
|
175
|
+
<li><a href="./HeadersHelper.html">HeadersHelper</a></li>
|
|
176
|
+
|
|
177
|
+
<li><a href="./MailSpecification.html">MailSpecification</a></li>
|
|
178
|
+
|
|
179
|
+
<li><a href="./MailSpecificationController.html">MailSpecificationController</a></li>
|
|
180
|
+
|
|
181
|
+
<li><a href="./MailSpecificationHelper.html">MailSpecificationHelper</a></li>
|
|
182
|
+
|
|
183
|
+
<li><a href="./Mailer.html">Mailer</a></li>
|
|
184
|
+
|
|
185
|
+
<li><a href="./Object.html">Object</a></li>
|
|
186
|
+
|
|
187
|
+
<li><a href="./PseudoModel.html">PseudoModel</a></li>
|
|
188
|
+
|
|
189
|
+
<li><a href="./ResourceUsage.html">ResourceUsage</a></li>
|
|
190
|
+
|
|
191
|
+
<li><a href="./SCGI.html">SCGI</a></li>
|
|
192
|
+
|
|
193
|
+
<li><a href="./ServerSpecification.html">ServerSpecification</a></li>
|
|
194
|
+
|
|
195
|
+
<li><a href="./ServerSpecificationController.html">ServerSpecificationController</a></li>
|
|
196
|
+
|
|
197
|
+
<li><a href="./ServerSpecificationHelper.html">ServerSpecificationHelper</a></li>
|
|
198
|
+
|
|
199
|
+
<li><a href="./SignalHelper.html">SignalHelper</a></li>
|
|
200
|
+
|
|
201
|
+
<li><a href="./UrlBreakupTimeSample.html">UrlBreakupTimeSample</a></li>
|
|
202
|
+
|
|
203
|
+
<li><a href="./UrlTimeSample.html">UrlTimeSample</a></li>
|
|
204
|
+
|
|
205
|
+
<li><a href="./User.html">User</a></li>
|
|
206
|
+
|
|
207
|
+
<li><a href="./YAMLConfig.html">YAMLConfig</a></li>
|
|
208
|
+
|
|
209
|
+
<li><a href="./YAMLWriter.html">YAMLWriter</a></li>
|
|
210
|
+
|
|
211
|
+
</ul>
|
|
212
|
+
<div id="no-class-search-results" style="display: none;">No matching classes.</div>
|
|
213
|
+
</div>
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
</div>
|
|
217
|
+
</div>
|
|
218
|
+
|
|
219
|
+
<div id="documentation">
|
|
220
|
+
<h1 class="class">ApplicationSpecification</h1>
|
|
221
|
+
|
|
222
|
+
<div id="description" class="description">
|
|
223
|
+
|
|
224
|
+
</div><!-- description -->
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
<div id="5Buntitled-5D" class="documentation-section">
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
<!-- Methods -->
|
|
239
|
+
|
|
240
|
+
<div id="public-class-method-details" class="method-section section">
|
|
241
|
+
<h3 class="section-header">Public Class Methods</h3>
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
<div id="analytics_enabled-3F-method" class="method-detail ">
|
|
245
|
+
<a name="method-c-analytics_enabled-3F"></a>
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
<div class="method-heading">
|
|
249
|
+
<span class="method-name">analytics_enabled?</span><span
|
|
250
|
+
class="method-args">(application_name)</span>
|
|
251
|
+
<span class="method-click-advice">click to toggle source</span>
|
|
252
|
+
</div>
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
<div class="method-description">
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
<div class="method-source-code" id="analytics_enabled-3F-source">
|
|
262
|
+
<pre>
|
|
263
|
+
<span class="ruby-comment"># File app/models/application_specification.rb, line 387</span>
|
|
264
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">analytics_enabled?</span>(<span class="ruby-identifier">application_name</span>)
|
|
265
|
+
<span class="ruby-identifier">info</span> = <span class="ruby-constant">YAML</span><span class="ruby-operator">::</span><span class="ruby-identifier">load_file</span>(<span class="ruby-constant">CONFIG_FILE_PATH</span>) <span class="ruby-keyword">rescue</span> <span class="ruby-keyword">nil</span>
|
|
266
|
+
<span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
|
|
267
|
+
<span class="ruby-keyword">while</span> <span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>]
|
|
268
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>][<span class="ruby-identifier">i</span>][<span class="ruby-string">'name'</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">application_name</span>
|
|
269
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>][<span class="ruby-identifier">i</span>][<span class="ruby-string">'analytics'</span>].<span class="ruby-identifier">downcase</span> <span class="ruby-operator">==</span> <span class="ruby-string">"enabled"</span>.<span class="ruby-identifier">downcase</span>
|
|
270
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">true</span>
|
|
271
|
+
<span class="ruby-keyword">else</span>
|
|
272
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
|
|
273
|
+
<span class="ruby-keyword">end</span>
|
|
274
|
+
<span class="ruby-keyword">end</span>
|
|
275
|
+
<span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span><span class="ruby-value">1</span>
|
|
276
|
+
<span class="ruby-keyword">end</span>
|
|
277
|
+
<span class="ruby-keyword">false</span>
|
|
278
|
+
<span class="ruby-keyword">end</span></pre>
|
|
279
|
+
</div><!-- analytics_enabled-3F-source -->
|
|
280
|
+
|
|
281
|
+
</div>
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
</div><!-- analytics_enabled-3F-method -->
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
<div id="get_application_id_from_name-method" class="method-detail ">
|
|
290
|
+
<a name="method-c-get_application_id_from_name"></a>
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
<div class="method-heading">
|
|
294
|
+
<span class="method-name">get_application_id_from_name</span><span
|
|
295
|
+
class="method-args">(application_name)</span>
|
|
296
|
+
<span class="method-click-advice">click to toggle source</span>
|
|
297
|
+
</div>
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
<div class="method-description">
|
|
301
|
+
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
<div class="method-source-code" id="get_application_id_from_name-source">
|
|
307
|
+
<pre>
|
|
308
|
+
<span class="ruby-comment"># File app/models/application_specification.rb, line 375</span>
|
|
309
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">get_application_id_from_name</span>(<span class="ruby-identifier">application_name</span>)
|
|
310
|
+
<span class="ruby-identifier">info</span> = <span class="ruby-constant">YAML</span><span class="ruby-operator">::</span><span class="ruby-identifier">load_file</span>(<span class="ruby-constant">CONFIG_FILE_PATH</span>) <span class="ruby-keyword">rescue</span> <span class="ruby-keyword">nil</span>
|
|
311
|
+
<span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
|
|
312
|
+
<span class="ruby-keyword">while</span> <span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>]
|
|
313
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>][<span class="ruby-identifier">i</span>][<span class="ruby-string">'name'</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">application_name</span>
|
|
314
|
+
<span class="ruby-keyword">break</span>
|
|
315
|
+
<span class="ruby-keyword">end</span>
|
|
316
|
+
<span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span><span class="ruby-value">1</span>
|
|
317
|
+
<span class="ruby-keyword">end</span>
|
|
318
|
+
<span class="ruby-keyword">return</span> <span class="ruby-identifier">i</span>
|
|
319
|
+
<span class="ruby-keyword">end</span></pre>
|
|
320
|
+
</div><!-- get_application_id_from_name-source -->
|
|
321
|
+
|
|
322
|
+
</div>
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
|
|
326
|
+
|
|
327
|
+
</div><!-- get_application_id_from_name-method -->
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
<div id="get_hash-method" class="method-detail ">
|
|
331
|
+
<a name="method-c-get_hash"></a>
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
<div class="method-heading">
|
|
335
|
+
<span class="method-name">get_hash</span><span
|
|
336
|
+
class="method-args">(application_id = 1000)</span>
|
|
337
|
+
<span class="method-click-advice">click to toggle source</span>
|
|
338
|
+
</div>
|
|
339
|
+
|
|
340
|
+
|
|
341
|
+
<div class="method-description">
|
|
342
|
+
|
|
343
|
+
<p>This method is to get application specifications for a specific application
|
|
344
|
+
from WebROaR config file.</p>
|
|
345
|
+
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
<div class="method-source-code" id="get_hash-source">
|
|
349
|
+
<pre>
|
|
350
|
+
<span class="ruby-comment"># File app/models/application_specification.rb, line 337</span>
|
|
351
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">get_hash</span>(<span class="ruby-identifier">application_id</span> = <span class="ruby-value">1000</span>)
|
|
352
|
+
<span class="ruby-identifier">info</span> = <span class="ruby-constant">YAML</span><span class="ruby-operator">::</span><span class="ruby-identifier">load_file</span>(<span class="ruby-constant">CONFIG_FILE_PATH</span>) <span class="ruby-keyword">rescue</span> <span class="ruby-keyword">nil</span>
|
|
353
|
+
<span class="ruby-identifier">name</span> = <span class="ruby-string">""</span>
|
|
354
|
+
<span class="ruby-identifier">path</span> = <span class="ruby-string">""</span>
|
|
355
|
+
<span class="ruby-identifier">run_as_user</span> = <span class="ruby-string">""</span>
|
|
356
|
+
<span class="ruby-identifier">type</span> = <span class="ruby-string">"Rails"</span>
|
|
357
|
+
<span class="ruby-identifier">analytics</span> = <span class="ruby-string">"Disabled"</span>
|
|
358
|
+
<span class="ruby-identifier">environment</span> = <span class="ruby-string">"Production"</span>
|
|
359
|
+
<span class="ruby-identifier">port</span>, <span class="ruby-identifier">min_worker</span>, <span class="ruby-identifier">max_worker</span>, <span class="ruby-identifier">log_level</span> = <span class="ruby-constant">ServerSpecification</span>.<span class="ruby-identifier">get_fields</span>
|
|
360
|
+
<span class="ruby-keyword">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">application_id</span>.<span class="ruby-identifier">nil?</span>
|
|
361
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">info</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>] <span class="ruby-keyword">and</span> <span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>][<span class="ruby-identifier">application_id</span>]
|
|
362
|
+
<span class="ruby-identifier">name</span> = <span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>][<span class="ruby-identifier">application_id</span>][<span class="ruby-string">'name'</span>] <span class="ruby-keyword">if</span> <span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>][<span class="ruby-identifier">application_id</span>][<span class="ruby-string">'name'</span>]
|
|
363
|
+
<span class="ruby-identifier">baseuri</span> = <span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>][<span class="ruby-identifier">application_id</span>][<span class="ruby-string">'baseuri'</span>] <span class="ruby-keyword">if</span> <span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>][<span class="ruby-identifier">application_id</span>][<span class="ruby-string">'baseuri'</span>]
|
|
364
|
+
<span class="ruby-identifier">host_names</span> = <span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>][<span class="ruby-identifier">application_id</span>][<span class="ruby-string">'host_names'</span>] <span class="ruby-keyword">if</span> <span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>][<span class="ruby-identifier">application_id</span>][<span class="ruby-string">'host_names'</span>]
|
|
365
|
+
<span class="ruby-identifier">path</span> = <span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>][<span class="ruby-identifier">application_id</span>][<span class="ruby-string">'path'</span>] <span class="ruby-keyword">if</span> <span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>][<span class="ruby-identifier">application_id</span>][<span class="ruby-string">'path'</span>]
|
|
366
|
+
<span class="ruby-identifier">run_as_user</span> = <span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>][<span class="ruby-identifier">application_id</span>][<span class="ruby-string">'run_as_user'</span>] <span class="ruby-keyword">if</span> <span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>][<span class="ruby-identifier">application_id</span>][<span class="ruby-string">'run_as_user'</span>]
|
|
367
|
+
<span class="ruby-identifier">type</span> = <span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>][<span class="ruby-identifier">application_id</span>][<span class="ruby-string">'type'</span>].<span class="ruby-identifier">capitalize</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>][<span class="ruby-identifier">application_id</span>][<span class="ruby-string">'type'</span>]
|
|
368
|
+
<span class="ruby-identifier">analytics</span> = <span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>][<span class="ruby-identifier">application_id</span>][<span class="ruby-string">'analytics'</span>].<span class="ruby-identifier">capitalize</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>][<span class="ruby-identifier">application_id</span>][<span class="ruby-string">'analytics'</span>]
|
|
369
|
+
<span class="ruby-identifier">environment</span> = <span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>][<span class="ruby-identifier">application_id</span>][<span class="ruby-string">'environment'</span>].<span class="ruby-identifier">capitalize</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>][<span class="ruby-identifier">application_id</span>][<span class="ruby-string">'environment'</span>]
|
|
370
|
+
<span class="ruby-identifier">min_worker</span> = <span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>][<span class="ruby-identifier">application_id</span>][<span class="ruby-string">'min_worker'</span>] <span class="ruby-keyword">if</span> <span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>][<span class="ruby-identifier">application_id</span>][<span class="ruby-string">'min_worker'</span>]
|
|
371
|
+
<span class="ruby-identifier">max_worker</span> = <span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>][<span class="ruby-identifier">application_id</span>][<span class="ruby-string">'max_worker'</span>] <span class="ruby-keyword">if</span> <span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>][<span class="ruby-identifier">application_id</span>][<span class="ruby-string">'max_worker'</span>]
|
|
372
|
+
<span class="ruby-keyword">end</span>
|
|
373
|
+
<span class="ruby-keyword">end</span>
|
|
374
|
+
<span class="ruby-identifier">app_hash</span> = <span class="ruby-constant">Hash</span>[<span class="ruby-value">:app_id</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">application_id</span>.<span class="ruby-identifier">to_i</span>,
|
|
375
|
+
<span class="ruby-value">:name</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">name</span>,
|
|
376
|
+
<span class="ruby-value">:path</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">path</span>,
|
|
377
|
+
<span class="ruby-value">:run_as_user</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">run_as_user</span>,
|
|
378
|
+
<span class="ruby-value">:type1</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">type</span>,
|
|
379
|
+
<span class="ruby-value">:analytics</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">analytics</span>,
|
|
380
|
+
<span class="ruby-value">:environment</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">environment</span>,
|
|
381
|
+
<span class="ruby-value">:min_worker</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">min_worker</span>,
|
|
382
|
+
<span class="ruby-value">:max_worker</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">max_worker</span>]
|
|
383
|
+
<span class="ruby-identifier">app_hash</span>[<span class="ruby-value">:resolver</span>] = <span class="ruby-identifier">baseuri</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">baseuri</span>
|
|
384
|
+
<span class="ruby-identifier">app_hash</span>[<span class="ruby-value">:resolver</span>] = <span class="ruby-identifier">host_names</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">host_names</span>
|
|
385
|
+
|
|
386
|
+
<span class="ruby-keyword">return</span> <span class="ruby-identifier">app_hash</span>
|
|
387
|
+
<span class="ruby-keyword">end</span></pre>
|
|
388
|
+
</div><!-- get_hash-source -->
|
|
389
|
+
|
|
390
|
+
</div>
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
|
|
394
|
+
|
|
395
|
+
</div><!-- get_hash-method -->
|
|
396
|
+
|
|
397
|
+
|
|
398
|
+
<div id="remove-method" class="method-detail ">
|
|
399
|
+
<a name="method-c-remove"></a>
|
|
400
|
+
|
|
401
|
+
|
|
402
|
+
<div class="method-heading">
|
|
403
|
+
<span class="method-name">remove</span><span
|
|
404
|
+
class="method-args">(app_name)</span>
|
|
405
|
+
<span class="method-click-advice">click to toggle source</span>
|
|
406
|
+
</div>
|
|
407
|
+
|
|
408
|
+
|
|
409
|
+
<div class="method-description">
|
|
410
|
+
|
|
411
|
+
|
|
412
|
+
|
|
413
|
+
|
|
414
|
+
|
|
415
|
+
<div class="method-source-code" id="remove-source">
|
|
416
|
+
<pre>
|
|
417
|
+
<span class="ruby-comment"># File app/models/application_specification.rb, line 81</span>
|
|
418
|
+
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">remove</span>(<span class="ruby-identifier">app_name</span>)
|
|
419
|
+
<span class="ruby-identifier">info</span> = <span class="ruby-constant">YAML</span><span class="ruby-operator">::</span><span class="ruby-identifier">load_file</span>(<span class="ruby-constant">CONFIG_FILE_PATH</span>) <span class="ruby-keyword">rescue</span> <span class="ruby-keyword">nil</span>
|
|
420
|
+
|
|
421
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">info</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>]
|
|
422
|
+
<span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">x</span><span class="ruby-operator">|</span>
|
|
423
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">x</span>[<span class="ruby-string">'name'</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">eql?</span>(<span class="ruby-identifier">app_name</span>.<span class="ruby-identifier">to_s</span>)
|
|
424
|
+
<span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>].<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">x</span>)
|
|
425
|
+
<span class="ruby-keyword">end</span>
|
|
426
|
+
<span class="ruby-keyword">end</span>
|
|
427
|
+
<span class="ruby-identifier">info</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-string">'Application Specification'</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>].<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
|
428
|
+
<span class="ruby-keyword">end</span>
|
|
429
|
+
|
|
430
|
+
<span class="ruby-identifier">app</span> = <span class="ruby-constant">App</span>.<span class="ruby-identifier">where</span>(<span class="ruby-value">:name</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">app_name</span>).<span class="ruby-identifier">first</span>
|
|
431
|
+
<span class="ruby-identifier">app</span>.<span class="ruby-identifier">destroy</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">app</span>
|
|
432
|
+
<span class="ruby-constant">SignalHelper</span>.<span class="ruby-identifier">send</span>
|
|
433
|
+
|
|
434
|
+
<span class="ruby-constant">YAMLWriter</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">info</span>, <span class="ruby-constant">CONFIG_FILE_PATH</span>, <span class="ruby-constant">YAMLConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>)
|
|
435
|
+
<span class="ruby-keyword">end</span></pre>
|
|
436
|
+
</div><!-- remove-source -->
|
|
437
|
+
|
|
438
|
+
</div>
|
|
439
|
+
|
|
440
|
+
|
|
441
|
+
|
|
442
|
+
|
|
443
|
+
</div><!-- remove-method -->
|
|
444
|
+
|
|
445
|
+
|
|
446
|
+
</div><!-- public-class-method-details -->
|
|
447
|
+
|
|
448
|
+
<div id="public-instance-method-details" class="method-section section">
|
|
449
|
+
<h3 class="section-header">Public Instance Methods</h3>
|
|
450
|
+
|
|
451
|
+
|
|
452
|
+
<div id="ensure_validations-method" class="method-detail ">
|
|
453
|
+
<a name="method-i-ensure_validations"></a>
|
|
454
|
+
|
|
455
|
+
|
|
456
|
+
<div class="method-heading">
|
|
457
|
+
<span class="method-name">ensure_validations</span><span
|
|
458
|
+
class="method-args">()</span>
|
|
459
|
+
<span class="method-click-advice">click to toggle source</span>
|
|
460
|
+
</div>
|
|
461
|
+
|
|
462
|
+
|
|
463
|
+
<div class="method-description">
|
|
464
|
+
|
|
465
|
+
<p>this method is used to validate the various fields of the apps model. def
|
|
466
|
+
validate</p>
|
|
467
|
+
|
|
468
|
+
|
|
469
|
+
|
|
470
|
+
<div class="method-source-code" id="ensure_validations-source">
|
|
471
|
+
<pre>
|
|
472
|
+
<span class="ruby-comment"># File app/models/application_specification.rb, line 132</span>
|
|
473
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">ensure_validations</span>
|
|
474
|
+
<span class="ruby-comment"># errors.add(:base, MIN_WORKERS_VALIDATION) if min_worker.to_i > 20</span>
|
|
475
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">max_worker</span>.<span class="ruby-identifier">to_i</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">min_worker</span>.<span class="ruby-identifier">to_i</span>
|
|
476
|
+
<span class="ruby-identifier">errors</span>.<span class="ruby-identifier">add</span>(<span class="ruby-value">:base</span>, <span class="ruby-constant">MAX_WORKERS_VALIDATION_1</span>)
|
|
477
|
+
<span class="ruby-comment"># elsif max_worker.to_i > 20</span>
|
|
478
|
+
<span class="ruby-comment"># errors.add_to_base MAX_WORKERS_VALIDATION_2</span>
|
|
479
|
+
<span class="ruby-keyword">end</span>
|
|
480
|
+
<span class="ruby-comment">#errors.add_to_base APPLICATION_PATH_EXISTANCE_VALIDATION if !File.directory?(path)</span>
|
|
481
|
+
<span class="ruby-identifier">errors</span>.<span class="ruby-identifier">add</span>(<span class="ruby-value">:base</span>, <span class="ruby-constant">ANALYTICS_VALIDATION</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">type1</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">type1</span><span class="ruby-operator">==</span><span class="ruby-string">"Rails"</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">analytics</span> <span class="ruby-keyword">and</span> <span class="ruby-operator">!</span>(<span class="ruby-identifier">analytics</span>.<span class="ruby-identifier">downcase</span> <span class="ruby-operator">==</span> <span class="ruby-string">"enabled"</span> <span class="ruby-keyword">or</span> <span class="ruby-identifier">analytics</span>.<span class="ruby-identifier">downcase</span> <span class="ruby-operator">==</span> <span class="ruby-string">"disabled"</span>)
|
|
482
|
+
<span class="ruby-comment">#errors.add_to_base ENVIRONMENT_VALIDATION if !(environment.downcase == "production" or environment.downcase == "development" or environment.downcase == "test")</span>
|
|
483
|
+
<span class="ruby-identifier">errors</span>.<span class="ruby-identifier">add</span>(<span class="ruby-value">:base</span>, <span class="ruby-constant">TYPE_VALIDATION</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">type1</span> <span class="ruby-keyword">and</span> <span class="ruby-operator">!</span>(<span class="ruby-identifier">type1</span>.<span class="ruby-identifier">downcase</span> <span class="ruby-operator">==</span> <span class="ruby-constant">RAILS</span> <span class="ruby-keyword">or</span> <span class="ruby-identifier">type1</span>.<span class="ruby-identifier">downcase</span> <span class="ruby-operator">==</span> <span class="ruby-constant">RACK</span>)
|
|
484
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">path</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">type1</span>
|
|
485
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">type1</span>.<span class="ruby-identifier">downcase</span> <span class="ruby-operator">==</span> <span class="ruby-constant">RAILS</span>
|
|
486
|
+
<span class="ruby-keyword">unless</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exists?</span>(<span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-identifier">path</span>, <span class="ruby-string">'config'</span>, <span class="ruby-string">'environment.rb'</span>))
|
|
487
|
+
<span class="ruby-identifier">errors</span>.<span class="ruby-identifier">add</span>(<span class="ruby-value">:base</span>, <span class="ruby-string">"The entered application path is not a valid Rails application path."</span>)
|
|
488
|
+
<span class="ruby-keyword">end</span>
|
|
489
|
+
<span class="ruby-keyword">end</span>
|
|
490
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">type1</span>.<span class="ruby-identifier">downcase</span> <span class="ruby-operator">==</span> <span class="ruby-constant">RACK</span>
|
|
491
|
+
<span class="ruby-keyword">unless</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exists?</span>(<span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-identifier">path</span>, <span class="ruby-string">'config.ru'</span>))
|
|
492
|
+
<span class="ruby-identifier">errors</span>.<span class="ruby-identifier">add</span>(<span class="ruby-value">:base</span>, <span class="ruby-string">"The entered application path is not a valid Rack application path."</span>)
|
|
493
|
+
<span class="ruby-keyword">end</span>
|
|
494
|
+
<span class="ruby-keyword">end</span>
|
|
495
|
+
<span class="ruby-keyword">end</span>
|
|
496
|
+
<span class="ruby-comment"># Resolver take either baseuri or host_names, not both.</span>
|
|
497
|
+
<span class="ruby-comment"># baseuri starts with '/'</span>
|
|
498
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">resolver</span>
|
|
499
|
+
<span class="ruby-identifier">tokens</span> = <span class="ruby-identifier">resolver</span>.<span class="ruby-identifier">split</span>(<span class="ruby-regexp">/ /</span>)
|
|
500
|
+
|
|
501
|
+
<span class="ruby-identifier">curr_host_names</span> = []
|
|
502
|
+
<span class="ruby-identifier">host_name_flag</span> = <span class="ruby-value">0</span>
|
|
503
|
+
|
|
504
|
+
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">tokens</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">tokens</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">start_with?</span>(<span class="ruby-string">'/'</span>))
|
|
505
|
+
<span class="ruby-identifier">write_attribute</span>(<span class="ruby-value">:baseuri</span>, <span class="ruby-identifier">resolver</span>)
|
|
506
|
+
<span class="ruby-identifier">errors</span>.<span class="ruby-identifier">add</span>(<span class="ruby-value">:base</span>, <span class="ruby-string">"BaseURI must start with '/' and contains characters A-Z, a-z, 0-9 , _ , - and /."</span>) <span class="ruby-keyword">if</span> <span class="ruby-operator">!</span>(<span class="ruby-identifier">baseuri</span>.<span class="ruby-identifier">strip</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">/^\/[A-Za-z0-9_\-\/]*$/</span>)
|
|
507
|
+
<span class="ruby-keyword">else</span>
|
|
508
|
+
<span class="ruby-identifier">write_attribute</span>(<span class="ruby-value">:host_names</span>, <span class="ruby-identifier">resolver</span>)
|
|
509
|
+
<span class="ruby-identifier">host_name_flag</span> = <span class="ruby-value">1</span>
|
|
510
|
+
<span class="ruby-keyword">end</span>
|
|
511
|
+
|
|
512
|
+
<span class="ruby-comment"># More than one token would come only in case of host_names</span>
|
|
513
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">host_name_flag</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">tokens</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
514
|
+
<span class="ruby-identifier">tokens</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">token</span><span class="ruby-operator">|</span>
|
|
515
|
+
<span class="ruby-keyword">next</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">token</span> <span class="ruby-operator">==</span> <span class="ruby-string">""</span>
|
|
516
|
+
<span class="ruby-identifier">len</span> = <span class="ruby-identifier">token</span>.<span class="ruby-identifier">size</span>
|
|
517
|
+
<span class="ruby-comment"># Whole name can not exceed total length of 253</span>
|
|
518
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">len</span> <span class="ruby-operator">></span> <span class="ruby-value">253</span>
|
|
519
|
+
<span class="ruby-identifier">errors</span>.<span class="ruby-identifier">add</span>(<span class="ruby-value">:base</span> , <span class="ruby-constant">HOSTNAME_LENGTH_EXCEEDS</span>)
|
|
520
|
+
<span class="ruby-keyword">next</span>
|
|
521
|
+
<span class="ruby-keyword">end</span>
|
|
522
|
+
<span class="ruby-comment"># Subdivision can go down to maximum 127 level.</span>
|
|
523
|
+
<span class="ruby-identifier">labels</span> = <span class="ruby-identifier">token</span>.<span class="ruby-identifier">split</span>(<span class="ruby-regexp">/\./</span>)
|
|
524
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">labels</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">127</span>
|
|
525
|
+
<span class="ruby-identifier">errors</span>.<span class="ruby-identifier">add</span>(<span class="ruby-value">:base</span>, <span class="ruby-constant">SUBDIVISION_EXCEEDS_127</span>)
|
|
526
|
+
<span class="ruby-keyword">next</span>
|
|
527
|
+
<span class="ruby-keyword">end</span>
|
|
528
|
+
<span class="ruby-comment"># Start with '/' indicates BaseURI</span>
|
|
529
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">token</span>.<span class="ruby-identifier">start_with?</span>(<span class="ruby-string">'/'</span>)
|
|
530
|
+
<span class="ruby-identifier">errors</span>.<span class="ruby-identifier">add</span>(<span class="ruby-value">:base</span>, <span class="ruby-constant">BASEURI_AND_HOSTNAMES_EXIST</span>)
|
|
531
|
+
<span class="ruby-keyword">break</span>
|
|
532
|
+
<span class="ruby-keyword">end</span>
|
|
533
|
+
<span class="ruby-comment"># If wildcard '*' presents, Hostname should prefix with '~'</span>
|
|
534
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">token</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-string">"*"</span>) <span class="ruby-keyword">and</span> <span class="ruby-operator">!</span>(<span class="ruby-identifier">token</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">/^~/</span>)
|
|
535
|
+
<span class="ruby-identifier">errors</span>.<span class="ruby-identifier">add</span>(<span class="ruby-value">:base</span>, <span class="ruby-node">"#{token} - #{START_WTIH_TILD}"</span>)
|
|
536
|
+
<span class="ruby-keyword">next</span>
|
|
537
|
+
<span class="ruby-keyword">end</span>
|
|
538
|
+
<span class="ruby-comment"># Wildcard '*' can come either at start or at end, not inbetween</span>
|
|
539
|
+
<span class="ruby-identifier">pos</span> = <span class="ruby-identifier">token</span>.<span class="ruby-identifier">index</span>(<span class="ruby-string">'*'</span>, <span class="ruby-value">1</span>)
|
|
540
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">pos</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">pos</span> <span class="ruby-operator">!=</span> <span class="ruby-value">1</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">pos</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">len</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>
|
|
541
|
+
<span class="ruby-identifier">errors</span>.<span class="ruby-identifier">add</span>(<span class="ruby-value">:base</span>, <span class="ruby-node">"#{token} - #{WILDCARD_AT_START_OR_END}"</span>)
|
|
542
|
+
<span class="ruby-keyword">next</span>
|
|
543
|
+
<span class="ruby-keyword">end</span>
|
|
544
|
+
<span class="ruby-identifier">pos</span> = <span class="ruby-identifier">token</span>.<span class="ruby-identifier">index</span>(<span class="ruby-string">'*'</span>, <span class="ruby-value">2</span>)
|
|
545
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">pos</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">pos</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">len</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>
|
|
546
|
+
<span class="ruby-identifier">errors</span>.<span class="ruby-identifier">add</span>(<span class="ruby-value">:base</span>, <span class="ruby-node">"#{token} - #{WILDCARD_AT_START_OR_END}"</span>)
|
|
547
|
+
<span class="ruby-keyword">next</span>
|
|
548
|
+
<span class="ruby-keyword">end</span>
|
|
549
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">token</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">/[.][.]/</span>
|
|
550
|
+
<span class="ruby-identifier">errors</span>.<span class="ruby-identifier">add</span>(<span class="ruby-value">:base</span>, <span class="ruby-node">"#{token} - #{CONSECUTIVE_DOTS}"</span>)
|
|
551
|
+
<span class="ruby-keyword">next</span>
|
|
552
|
+
<span class="ruby-keyword">end</span>
|
|
553
|
+
<span class="ruby-comment"># Check for Letters, Digits and Hyphen</span>
|
|
554
|
+
<span class="ruby-identifier">err_flag</span> = <span class="ruby-value">0</span>
|
|
555
|
+
<span class="ruby-comment">#first label can have '~' as first char and '*' as second char, last label can have '*' as last character</span>
|
|
556
|
+
<span class="ruby-identifier">first_label</span> = <span class="ruby-identifier">labels</span>[<span class="ruby-value">0</span>]
|
|
557
|
+
<span class="ruby-identifier">last_label</span> = <span class="ruby-identifier">labels</span>[<span class="ruby-identifier">labels</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>]
|
|
558
|
+
<span class="ruby-identifier">labels</span> = <span class="ruby-identifier">labels</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-identifier">labels</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">-</span> <span class="ruby-value">2</span>]
|
|
559
|
+
<span class="ruby-identifier">labels</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">label</span><span class="ruby-operator">|</span>
|
|
560
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">label</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">63</span>
|
|
561
|
+
<span class="ruby-identifier">errors</span>.<span class="ruby-identifier">add</span>(<span class="ruby-value">:base</span>, <span class="ruby-constant">LABEL_LENGTH_EXCEEDS</span>)
|
|
562
|
+
<span class="ruby-keyword">next</span>
|
|
563
|
+
<span class="ruby-keyword">end</span>
|
|
564
|
+
<span class="ruby-identifier">label</span>.<span class="ruby-identifier">each_char</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span>
|
|
565
|
+
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">c</span> <span class="ruby-operator">>=</span> <span class="ruby-string">'a'</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">c</span> <span class="ruby-operator"><=</span> <span class="ruby-string">'z'</span>) <span class="ruby-keyword">or</span> (<span class="ruby-identifier">c</span> <span class="ruby-operator">>=</span> <span class="ruby-string">'A'</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">c</span> <span class="ruby-operator"><=</span> <span class="ruby-string">'Z'</span>) <span class="ruby-keyword">or</span> (<span class="ruby-identifier">c</span> <span class="ruby-operator">>=</span> <span class="ruby-string">'0'</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">c</span> <span class="ruby-operator"><=</span> <span class="ruby-string">'9'</span>) <span class="ruby-keyword">or</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-string">'-'</span>
|
|
566
|
+
<span class="ruby-keyword">next</span>
|
|
567
|
+
<span class="ruby-keyword">else</span>
|
|
568
|
+
<span class="ruby-identifier">errors</span>.<span class="ruby-identifier">add</span>(<span class="ruby-value">:base</span>, <span class="ruby-constant">HOSTNAME_LDH</span>)
|
|
569
|
+
<span class="ruby-identifier">err_flag</span> = <span class="ruby-value">1</span>
|
|
570
|
+
<span class="ruby-keyword">break</span>;
|
|
571
|
+
<span class="ruby-keyword">end</span>
|
|
572
|
+
<span class="ruby-keyword">end</span>
|
|
573
|
+
<span class="ruby-keyword">end</span>
|
|
574
|
+
<span class="ruby-identifier">char_array</span> = []
|
|
575
|
+
<span class="ruby-identifier">first_label</span>.<span class="ruby-identifier">each_char</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span>
|
|
576
|
+
<span class="ruby-identifier">char_array</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
577
|
+
<span class="ruby-keyword">end</span>
|
|
578
|
+
<span class="ruby-comment">#p char_array</span>
|
|
579
|
+
<span class="ruby-comment"># checking first character of first label against LDH and ~</span>
|
|
580
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">err_flag</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
|
581
|
+
<span class="ruby-identifier">c</span> = <span class="ruby-identifier">char_array</span>[<span class="ruby-value">0</span>]
|
|
582
|
+
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">c</span> <span class="ruby-operator">>=</span> <span class="ruby-string">'a'</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">c</span> <span class="ruby-operator"><=</span> <span class="ruby-string">'z'</span>) <span class="ruby-keyword">or</span> (<span class="ruby-identifier">c</span> <span class="ruby-operator">>=</span> <span class="ruby-string">'A'</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">c</span> <span class="ruby-operator"><=</span> <span class="ruby-string">'Z'</span>) <span class="ruby-keyword">or</span> (<span class="ruby-identifier">c</span> <span class="ruby-operator">>=</span> <span class="ruby-string">'0'</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">c</span> <span class="ruby-operator"><=</span> <span class="ruby-string">'9'</span>) <span class="ruby-keyword">or</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-string">'~'</span>
|
|
583
|
+
<span class="ruby-keyword">else</span>
|
|
584
|
+
<span class="ruby-identifier">errors</span>.<span class="ruby-identifier">add</span>(<span class="ruby-value">:base</span>, <span class="ruby-constant">HOSTNAME_LDH</span>)
|
|
585
|
+
<span class="ruby-identifier">err_flag</span> = <span class="ruby-value">1</span>
|
|
586
|
+
<span class="ruby-keyword">end</span>
|
|
587
|
+
<span class="ruby-keyword">end</span>
|
|
588
|
+
<span class="ruby-comment">#checking second char of first label against LDH and *</span>
|
|
589
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">err_flag</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
|
590
|
+
<span class="ruby-identifier">c</span> = <span class="ruby-identifier">char_array</span>[<span class="ruby-value">1</span>]
|
|
591
|
+
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">c</span> <span class="ruby-operator">>=</span> <span class="ruby-string">'a'</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">c</span> <span class="ruby-operator"><=</span> <span class="ruby-string">'z'</span>) <span class="ruby-keyword">or</span> (<span class="ruby-identifier">c</span> <span class="ruby-operator">>=</span> <span class="ruby-string">'A'</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">c</span> <span class="ruby-operator"><=</span> <span class="ruby-string">'Z'</span>) <span class="ruby-keyword">or</span> (<span class="ruby-identifier">c</span> <span class="ruby-operator">>=</span> <span class="ruby-string">'0'</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">c</span> <span class="ruby-operator"><=</span> <span class="ruby-string">'9'</span>) <span class="ruby-keyword">or</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-string">'*'</span>
|
|
592
|
+
<span class="ruby-keyword">else</span>
|
|
593
|
+
<span class="ruby-identifier">errors</span>.<span class="ruby-identifier">add</span>(<span class="ruby-value">:base</span>, <span class="ruby-constant">HOSTNAME_LDH</span>)
|
|
594
|
+
<span class="ruby-identifier">err_flag</span> = <span class="ruby-value">1</span>
|
|
595
|
+
<span class="ruby-keyword">end</span>
|
|
596
|
+
<span class="ruby-keyword">end</span>
|
|
597
|
+
<span class="ruby-comment">#checking remaining character of first label against LDH</span>
|
|
598
|
+
<span class="ruby-identifier">char_array</span> = <span class="ruby-identifier">char_array</span>[<span class="ruby-value">2</span><span class="ruby-operator">..</span><span class="ruby-identifier">char_array</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>]
|
|
599
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">err_flag</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
|
600
|
+
<span class="ruby-identifier">char_array</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span>
|
|
601
|
+
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">c</span> <span class="ruby-operator">>=</span> <span class="ruby-string">'a'</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">c</span> <span class="ruby-operator"><=</span> <span class="ruby-string">'z'</span>) <span class="ruby-keyword">or</span> (<span class="ruby-identifier">c</span> <span class="ruby-operator">>=</span> <span class="ruby-string">'A'</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">c</span> <span class="ruby-operator"><=</span> <span class="ruby-string">'Z'</span>) <span class="ruby-keyword">or</span> (<span class="ruby-identifier">c</span> <span class="ruby-operator">>=</span> <span class="ruby-string">'0'</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">c</span> <span class="ruby-operator"><=</span> <span class="ruby-string">'9'</span>) <span class="ruby-keyword">or</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-string">'-'</span>
|
|
602
|
+
<span class="ruby-keyword">next</span>
|
|
603
|
+
<span class="ruby-keyword">else</span>
|
|
604
|
+
<span class="ruby-identifier">errors</span>.<span class="ruby-identifier">add</span>(<span class="ruby-value">:base</span>, <span class="ruby-constant">HOSTNAME_LDH</span>)
|
|
605
|
+
<span class="ruby-identifier">err_flag</span> = <span class="ruby-value">1</span>
|
|
606
|
+
<span class="ruby-keyword">break</span>;
|
|
607
|
+
<span class="ruby-keyword">end</span>
|
|
608
|
+
<span class="ruby-keyword">end</span>
|
|
609
|
+
<span class="ruby-keyword">end</span>
|
|
610
|
+
<span class="ruby-comment">#checking last character of last label against LDH and *</span>
|
|
611
|
+
<span class="ruby-identifier">char_array</span> = []
|
|
612
|
+
<span class="ruby-identifier">last_label</span>.<span class="ruby-identifier">each_char</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span>
|
|
613
|
+
<span class="ruby-identifier">char_array</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
614
|
+
<span class="ruby-keyword">end</span>
|
|
615
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">err_flag</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
|
616
|
+
<span class="ruby-identifier">c</span> = <span class="ruby-identifier">char_array</span>[<span class="ruby-identifier">char_array</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>]
|
|
617
|
+
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">c</span> <span class="ruby-operator">>=</span> <span class="ruby-string">'a'</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">c</span> <span class="ruby-operator"><=</span> <span class="ruby-string">'z'</span>) <span class="ruby-keyword">or</span> (<span class="ruby-identifier">c</span> <span class="ruby-operator">>=</span> <span class="ruby-string">'A'</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">c</span> <span class="ruby-operator"><=</span> <span class="ruby-string">'Z'</span>) <span class="ruby-keyword">or</span> (<span class="ruby-identifier">c</span> <span class="ruby-operator">>=</span> <span class="ruby-string">'0'</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">c</span> <span class="ruby-operator"><=</span> <span class="ruby-string">'9'</span>) <span class="ruby-keyword">or</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-string">'*'</span>
|
|
618
|
+
<span class="ruby-keyword">else</span>
|
|
619
|
+
<span class="ruby-identifier">errors</span>.<span class="ruby-identifier">add</span>(<span class="ruby-value">:base</span>, <span class="ruby-constant">HOSTNAME_LDH</span>)
|
|
620
|
+
<span class="ruby-identifier">err_flag</span> = <span class="ruby-value">1</span>
|
|
621
|
+
<span class="ruby-keyword">end</span>
|
|
622
|
+
<span class="ruby-keyword">end</span>
|
|
623
|
+
<span class="ruby-comment">#checking remaining characters of the last label against LDH</span>
|
|
624
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">err_flag</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
|
625
|
+
<span class="ruby-identifier">char_array</span> = <span class="ruby-identifier">char_array</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-identifier">char_array</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">-</span> <span class="ruby-value">2</span>]
|
|
626
|
+
<span class="ruby-identifier">char_array</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span>
|
|
627
|
+
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">c</span> <span class="ruby-operator">>=</span> <span class="ruby-string">'a'</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">c</span> <span class="ruby-operator"><=</span> <span class="ruby-string">'z'</span>) <span class="ruby-keyword">or</span> (<span class="ruby-identifier">c</span> <span class="ruby-operator">>=</span> <span class="ruby-string">'A'</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">c</span> <span class="ruby-operator"><=</span> <span class="ruby-string">'Z'</span>) <span class="ruby-keyword">or</span> (<span class="ruby-identifier">c</span> <span class="ruby-operator">>=</span> <span class="ruby-string">'0'</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">c</span> <span class="ruby-operator"><=</span> <span class="ruby-string">'9'</span>) <span class="ruby-keyword">or</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-string">'*'</span>
|
|
628
|
+
<span class="ruby-keyword">else</span>
|
|
629
|
+
<span class="ruby-identifier">errors</span>.<span class="ruby-identifier">add</span>(<span class="ruby-value">:base</span>, <span class="ruby-constant">HOSTNAME_LDH</span>)
|
|
630
|
+
<span class="ruby-identifier">err_flag</span> = <span class="ruby-value">1</span>
|
|
631
|
+
<span class="ruby-keyword">end</span>
|
|
632
|
+
<span class="ruby-keyword">end</span>
|
|
633
|
+
<span class="ruby-keyword">end</span>
|
|
634
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">err_flag</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
|
635
|
+
<span class="ruby-identifier">curr_host_names</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">token</span>
|
|
636
|
+
<span class="ruby-keyword">end</span>
|
|
637
|
+
<span class="ruby-keyword">end</span>
|
|
638
|
+
<span class="ruby-keyword">end</span>
|
|
639
|
+
|
|
640
|
+
<span class="ruby-comment">#BaseURI can not be /admin-panel</span>
|
|
641
|
+
<span class="ruby-identifier">errors</span>.<span class="ruby-identifier">add</span>(<span class="ruby-value">:base</span>, <span class="ruby-constant">BASEURI_AS_ADMIN_PANEL_BASEURI_VALIDATION</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">baseuri</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">baseuri</span>.<span class="ruby-identifier">strip</span> <span class="ruby-operator">==</span> <span class="ruby-constant">ADMIN_PANEL_BASE_URI</span>
|
|
642
|
+
<span class="ruby-identifier">all_host_names</span> = []
|
|
643
|
+
<span class="ruby-identifier">curr_host_names_size</span> = <span class="ruby-identifier">curr_host_names</span>.<span class="ruby-identifier">size</span>
|
|
644
|
+
|
|
645
|
+
<span class="ruby-identifier">tmp_id</span> = <span class="ruby-identifier">app_id</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">?</span> <span class="ruby-value">-1</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">app_id</span>.<span class="ruby-identifier">to_i</span>
|
|
646
|
+
|
|
647
|
+
<span class="ruby-comment">#checking uniqueness of BaseURI</span>
|
|
648
|
+
<span class="ruby-identifier">info</span>= <span class="ruby-constant">YAML</span><span class="ruby-operator">::</span><span class="ruby-identifier">load_file</span>(<span class="ruby-constant">CONFIG_FILE_PATH</span>)
|
|
649
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">info</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>]
|
|
650
|
+
<span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
|
|
651
|
+
<span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">app_info</span><span class="ruby-operator">|</span>
|
|
652
|
+
<span class="ruby-identifier">errors</span>.<span class="ruby-identifier">add</span>(<span class="ruby-value">:base</span>, <span class="ruby-node">"#{name} - #{APPLICATION_NAME_REPEATED}"</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">app_info</span>[<span class="ruby-string">'name'</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">name</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">tmp_id</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">i</span>
|
|
653
|
+
<span class="ruby-identifier">errors</span>.<span class="ruby-identifier">add</span>(<span class="ruby-value">:base</span>, <span class="ruby-constant">BASEURI_EXISTANCE_VALIDATION</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">baseuri</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">baseuri</span>.<span class="ruby-identifier">strip</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">app_info</span>[<span class="ruby-string">'baseuri'</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">baseuri</span>.<span class="ruby-identifier">strip</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">tmp_id</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">i</span>
|
|
654
|
+
<span class="ruby-identifier">all_host_names</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">app_info</span>[<span class="ruby-string">'host_names'</span>].<span class="ruby-identifier">split</span>(<span class="ruby-regexp">/ /</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">app_info</span>[<span class="ruby-string">'host_names'</span>] <span class="ruby-keyword">and</span> <span class="ruby-identifier">curr_host_names_size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">tmp_id</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">i</span>
|
|
655
|
+
<span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
|
656
|
+
<span class="ruby-keyword">end</span>
|
|
657
|
+
<span class="ruby-keyword">end</span>
|
|
658
|
+
<span class="ruby-identifier">all_host_names</span>.<span class="ruby-identifier">flatten!</span>
|
|
659
|
+
<span class="ruby-comment"># checking uniqueness of Hostnames</span>
|
|
660
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">curr_host_names_size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
661
|
+
<span class="ruby-identifier">errors</span>.<span class="ruby-identifier">add</span>(<span class="ruby-value">:base</span>, <span class="ruby-constant">HOSTNAME_REPEATED</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">curr_host_names_size</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">curr_host_names</span>.<span class="ruby-identifier">uniq</span>.<span class="ruby-identifier">size</span>
|
|
662
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">all_host_names</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
663
|
+
<span class="ruby-identifier">curr_host_names</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">c_host_name</span><span class="ruby-operator">|</span>
|
|
664
|
+
<span class="ruby-identifier">all_host_names</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">host_name</span><span class="ruby-operator">|</span>
|
|
665
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">c_host_name</span>.<span class="ruby-identifier">eql?</span>(<span class="ruby-identifier">host_name</span>)
|
|
666
|
+
<span class="ruby-identifier">errors</span>.<span class="ruby-identifier">add</span>(<span class="ruby-value">:base</span>, <span class="ruby-node">"#{c_host_name}-#{HOSTNAME_REPEATED }"</span>)
|
|
667
|
+
<span class="ruby-keyword">break</span>
|
|
668
|
+
<span class="ruby-keyword">end</span>
|
|
669
|
+
<span class="ruby-keyword">end</span>
|
|
670
|
+
<span class="ruby-keyword">end</span>
|
|
671
|
+
<span class="ruby-keyword">end</span>
|
|
672
|
+
<span class="ruby-keyword">end</span>
|
|
673
|
+
<span class="ruby-keyword">end</span>
|
|
674
|
+
<span class="ruby-keyword">end</span></pre>
|
|
675
|
+
</div><!-- ensure_validations-source -->
|
|
676
|
+
|
|
677
|
+
</div>
|
|
678
|
+
|
|
679
|
+
|
|
680
|
+
|
|
681
|
+
|
|
682
|
+
</div><!-- ensure_validations-method -->
|
|
683
|
+
|
|
684
|
+
|
|
685
|
+
<div id="obj_to_hash-method" class="method-detail ">
|
|
686
|
+
<a name="method-i-obj_to_hash"></a>
|
|
687
|
+
|
|
688
|
+
|
|
689
|
+
<div class="method-heading">
|
|
690
|
+
<span class="method-name">obj_to_hash</span><span
|
|
691
|
+
class="method-args">()</span>
|
|
692
|
+
<span class="method-click-advice">click to toggle source</span>
|
|
693
|
+
</div>
|
|
694
|
+
|
|
695
|
+
|
|
696
|
+
<div class="method-description">
|
|
697
|
+
|
|
698
|
+
<p>Converting <a
|
|
699
|
+
href="ApplicationSpecification.html">ApplicationSpecification</a> obeject
|
|
700
|
+
into a Hash.</p>
|
|
701
|
+
|
|
702
|
+
|
|
703
|
+
|
|
704
|
+
<div class="method-source-code" id="obj_to_hash-source">
|
|
705
|
+
<pre>
|
|
706
|
+
<span class="ruby-comment"># File app/models/application_specification.rb, line 105</span>
|
|
707
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">obj_to_hash</span>
|
|
708
|
+
<span class="ruby-identifier">app</span> = {}
|
|
709
|
+
<span class="ruby-identifier">app</span>[<span class="ruby-string">'name'</span>] = <span class="ruby-identifier">name</span>
|
|
710
|
+
<span class="ruby-identifier">app</span>[<span class="ruby-string">'path'</span>] = <span class="ruby-identifier">path</span>
|
|
711
|
+
<span class="ruby-identifier">app</span>[<span class="ruby-string">'run_as_user'</span>] = <span class="ruby-identifier">run_as_user</span>.<span class="ruby-identifier">downcase</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">run_as_user</span>.<span class="ruby-identifier">nil?</span>
|
|
712
|
+
<span class="ruby-identifier">app</span>[<span class="ruby-string">'type'</span>] = <span class="ruby-identifier">type1</span>.<span class="ruby-identifier">downcase</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">type1</span>.<span class="ruby-identifier">nil?</span>
|
|
713
|
+
<span class="ruby-identifier">app</span>[<span class="ruby-string">'analytics'</span>] = <span class="ruby-identifier">analytics</span>.<span class="ruby-identifier">downcase</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">analytics</span>.<span class="ruby-identifier">nil?</span>
|
|
714
|
+
<span class="ruby-identifier">app</span>[<span class="ruby-string">'environment'</span>] = <span class="ruby-identifier">environment</span>.<span class="ruby-identifier">downcase</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">environment</span>.<span class="ruby-identifier">nil?</span>
|
|
715
|
+
<span class="ruby-identifier">app</span>[<span class="ruby-string">'min_worker'</span>] = <span class="ruby-identifier">min_worker</span>.<span class="ruby-identifier">to_i</span>
|
|
716
|
+
<span class="ruby-identifier">app</span>[<span class="ruby-string">'max_worker'</span>] = <span class="ruby-identifier">max_worker</span>.<span class="ruby-identifier">to_i</span>
|
|
717
|
+
<span class="ruby-identifier">app</span>[<span class="ruby-string">'baseuri'</span>] = <span class="ruby-identifier">baseuri</span>.<span class="ruby-identifier">strip</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">baseuri</span>
|
|
718
|
+
<span class="ruby-identifier">app</span>[<span class="ruby-string">'host_names'</span>] = <span class="ruby-identifier">host_names</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">host_names</span>
|
|
719
|
+
<span class="ruby-keyword">return</span> <span class="ruby-identifier">app</span>
|
|
720
|
+
<span class="ruby-keyword">end</span></pre>
|
|
721
|
+
</div><!-- obj_to_hash-source -->
|
|
722
|
+
|
|
723
|
+
</div>
|
|
724
|
+
|
|
725
|
+
|
|
726
|
+
|
|
727
|
+
|
|
728
|
+
</div><!-- obj_to_hash-method -->
|
|
729
|
+
|
|
730
|
+
|
|
731
|
+
<div id="remove-method" class="method-detail ">
|
|
732
|
+
<a name="method-i-remove"></a>
|
|
733
|
+
|
|
734
|
+
|
|
735
|
+
<div class="method-heading">
|
|
736
|
+
<span class="method-name">remove</span><span
|
|
737
|
+
class="method-args">()</span>
|
|
738
|
+
<span class="method-click-advice">click to toggle source</span>
|
|
739
|
+
</div>
|
|
740
|
+
|
|
741
|
+
|
|
742
|
+
<div class="method-description">
|
|
743
|
+
|
|
744
|
+
|
|
745
|
+
|
|
746
|
+
|
|
747
|
+
|
|
748
|
+
<div class="method-source-code" id="remove-source">
|
|
749
|
+
<pre>
|
|
750
|
+
<span class="ruby-comment"># File app/models/application_specification.rb, line 100</span>
|
|
751
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">remove</span>
|
|
752
|
+
<span class="ruby-constant">ApplicationSpecification</span><span class="ruby-operator">::</span><span class="ruby-identifier">remove</span>(<span class="ruby-identifier">name</span>)
|
|
753
|
+
<span class="ruby-keyword">end</span></pre>
|
|
754
|
+
</div><!-- remove-source -->
|
|
755
|
+
|
|
756
|
+
</div>
|
|
757
|
+
|
|
758
|
+
|
|
759
|
+
|
|
760
|
+
|
|
761
|
+
</div><!-- remove-method -->
|
|
762
|
+
|
|
763
|
+
|
|
764
|
+
<div id="update-method" class="method-detail ">
|
|
765
|
+
<a name="method-i-update"></a>
|
|
766
|
+
|
|
767
|
+
|
|
768
|
+
<div class="method-heading">
|
|
769
|
+
<span class="method-name">update</span><span
|
|
770
|
+
class="method-args">(app_id)</span>
|
|
771
|
+
<span class="method-click-advice">click to toggle source</span>
|
|
772
|
+
</div>
|
|
773
|
+
|
|
774
|
+
|
|
775
|
+
<div class="method-description">
|
|
776
|
+
|
|
777
|
+
|
|
778
|
+
|
|
779
|
+
|
|
780
|
+
|
|
781
|
+
<div class="method-source-code" id="update-source">
|
|
782
|
+
<pre>
|
|
783
|
+
<span class="ruby-comment"># File app/models/application_specification.rb, line 120</span>
|
|
784
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">update</span>(<span class="ruby-identifier">app_id</span>)
|
|
785
|
+
<span class="ruby-identifier">info</span> = <span class="ruby-constant">YAML</span><span class="ruby-operator">::</span><span class="ruby-identifier">load_file</span>(<span class="ruby-constant">CONFIG_FILE_PATH</span>) <span class="ruby-keyword">rescue</span> <span class="ruby-keyword">nil</span>
|
|
786
|
+
<span class="ruby-identifier">app_data</span> = <span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>].<span class="ruby-identifier">detect</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">app_item</span><span class="ruby-operator">|</span> <span class="ruby-identifier">app_item</span>[<span class="ruby-string">"name"</span>].<span class="ruby-identifier">eql?</span>(<span class="ruby-identifier">name</span>)}
|
|
787
|
+
<span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>][<span class="ruby-identifier">app_id</span>] = <span class="ruby-identifier">obj_to_hash</span>
|
|
788
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">app_data</span>
|
|
789
|
+
<span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>][<span class="ruby-identifier">app_id</span>][<span class="ruby-string">"permanently_ignored_list"</span>] = <span class="ruby-identifier">app_data</span>[<span class="ruby-string">"permanently_ignored_list"</span>]
|
|
790
|
+
<span class="ruby-keyword">end</span>
|
|
791
|
+
<span class="ruby-constant">YAMLWriter</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">info</span>, <span class="ruby-constant">CONFIG_FILE_PATH</span>, <span class="ruby-constant">YAMLConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>)
|
|
792
|
+
<span class="ruby-keyword">end</span></pre>
|
|
793
|
+
</div><!-- update-source -->
|
|
794
|
+
|
|
795
|
+
</div>
|
|
796
|
+
|
|
797
|
+
|
|
798
|
+
|
|
799
|
+
|
|
800
|
+
</div><!-- update-method -->
|
|
801
|
+
|
|
802
|
+
|
|
803
|
+
<div id="write-method" class="method-detail ">
|
|
804
|
+
<a name="method-i-write"></a>
|
|
805
|
+
|
|
806
|
+
|
|
807
|
+
<div class="method-heading">
|
|
808
|
+
<span class="method-name">write</span><span
|
|
809
|
+
class="method-args">()</span>
|
|
810
|
+
<span class="method-click-advice">click to toggle source</span>
|
|
811
|
+
</div>
|
|
812
|
+
|
|
813
|
+
|
|
814
|
+
<div class="method-description">
|
|
815
|
+
|
|
816
|
+
<p>validates_presence_of :name, :resolver, :path, :run_as_user, :type1,
|
|
817
|
+
:environment validates_numericality_of :min_worker, :max_worker,
|
|
818
|
+
:greater_than_or_equal_to => 1, :less_than_or_equal_to =>
|
|
819
|
+
ALLOWED_MAX_WORKERS validates_format_of :name, :with =>
|
|
820
|
+
/^[A-Za-z0-9_-]*$/i, :message => “ must consist of A-Z, a-z, 0-9 , _ ,
|
|
821
|
+
- and /.”</p>
|
|
822
|
+
|
|
823
|
+
<pre>validates_format_of :path, :with => /^\/.*$/i, :message => "entered is not the complete path for your web application root directory."</pre>
|
|
824
|
+
|
|
825
|
+
<p>validates_length_of :name, :maximum => 30, :allow_nil => true
|
|
826
|
+
validates_length_of :path, :maximum => 256 validates_length_of
|
|
827
|
+
:run_as_user, :maximum => 30, :allow_nil => true validates_length_of
|
|
828
|
+
:environment, :maximum => 30, :allow_nil => true</p>
|
|
829
|
+
|
|
830
|
+
<pre>validates_format_of :baseuri, :with => /^\/[A-Za-z0-9_\-\/]*$/i, :message => "must start with '/' and contains characters A-Z, a-z, 0-9 , _ , - and /."</pre>
|
|
831
|
+
|
|
832
|
+
|
|
833
|
+
|
|
834
|
+
<div class="method-source-code" id="write-source">
|
|
835
|
+
<pre>
|
|
836
|
+
<span class="ruby-comment"># File app/models/application_specification.rb, line 66</span>
|
|
837
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">write</span>
|
|
838
|
+
|
|
839
|
+
<span class="ruby-identifier">info</span> = <span class="ruby-constant">YAML</span><span class="ruby-operator">::</span><span class="ruby-identifier">load_file</span>(<span class="ruby-constant">CONFIG_FILE_PATH</span>) <span class="ruby-keyword">rescue</span> <span class="ruby-keyword">nil</span>
|
|
840
|
+
<span class="ruby-keyword">if</span> <span class="ruby-keyword">not</span> (<span class="ruby-identifier">info</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>])
|
|
841
|
+
<span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>] = <span class="ruby-constant">Array</span>.<span class="ruby-identifier">new</span>
|
|
842
|
+
<span class="ruby-keyword">end</span>
|
|
843
|
+
|
|
844
|
+
<span class="ruby-identifier">info</span>[<span class="ruby-string">'Application Specification'</span>].<span class="ruby-identifier">push</span>(<span class="ruby-identifier">obj_to_hash</span>)
|
|
845
|
+
|
|
846
|
+
<span class="ruby-constant">YAMLWriter</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">info</span>, <span class="ruby-constant">CONFIG_FILE_PATH</span>, <span class="ruby-constant">YAMLConfig</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>)
|
|
847
|
+
<span class="ruby-constant">App</span>.<span class="ruby-identifier">create</span>({<span class="ruby-value">:name</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">name</span>})
|
|
848
|
+
<span class="ruby-constant">SignalHelper</span>.<span class="ruby-identifier">send</span>
|
|
849
|
+
|
|
850
|
+
<span class="ruby-keyword">end</span></pre>
|
|
851
|
+
</div><!-- write-source -->
|
|
852
|
+
|
|
853
|
+
</div>
|
|
854
|
+
|
|
855
|
+
|
|
856
|
+
|
|
857
|
+
|
|
858
|
+
</div><!-- write-method -->
|
|
859
|
+
|
|
860
|
+
|
|
861
|
+
</div><!-- public-instance-method-details -->
|
|
862
|
+
|
|
863
|
+
</div><!-- 5Buntitled-5D -->
|
|
864
|
+
|
|
865
|
+
|
|
866
|
+
</div><!-- documentation -->
|
|
867
|
+
|
|
868
|
+
<div id="validator-badges">
|
|
869
|
+
<p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
|
|
870
|
+
<p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
|
|
871
|
+
Rdoc Generator</a> 2</small>.</p>
|
|
872
|
+
</div>
|
|
873
|
+
|
|
874
|
+
</body>
|
|
875
|
+
</html>
|
|
876
|
+
|