test_server 0.0.11
Sign up to get free protection for your applications and to get access to all the features.
- data/.bowerrc +4 -0
- data/.gitignore +19 -0
- data/.rdebugrc +7 -0
- data/.rspec +3 -0
- data/.simplecov +8 -0
- data/.travis.yml +8 -0
- data/.yardopts +5 -0
- data/Gemfile +55 -0
- data/LICENSE.md +22 -0
- data/README.md +29 -0
- data/Rakefile +107 -0
- data/app/assets/javascripts/application.js +65 -0
- data/app/assets/stylesheets/application.scss +150 -0
- data/app/controllers/application_controller.rb +71 -0
- data/app/controllers/assets_controller.rb +72 -0
- data/app/controllers/javascript_controller.rb +31 -0
- data/app/controllers/streaming_controller.rb +52 -0
- data/app/controllers/string_controller.rb +51 -0
- data/app/views/application.haml +19 -0
- data/app/views/xhr/show.haml +38 -0
- data/bin/test_server +10 -0
- data/bower.json +8 -0
- data/config.ru +51 -0
- data/files/config.yaml +1 -0
- data/files/example-config.erb +12 -0
- data/lib/test_server/access_logger.rb +13 -0
- data/lib/test_server/actions/create_directory.rb +33 -0
- data/lib/test_server/actions/create_file.rb +55 -0
- data/lib/test_server/actions/create_output.rb +36 -0
- data/lib/test_server/actions/handle_error.rb +39 -0
- data/lib/test_server/actions/initialize_application.rb +56 -0
- data/lib/test_server/actions/reload_configuration.rb +21 -0
- data/lib/test_server/actions/send_signal.rb +32 -0
- data/lib/test_server/cli/helper.rb +12 -0
- data/lib/test_server/cli/main.rb +105 -0
- data/lib/test_server/cli/reload.rb +40 -0
- data/lib/test_server/config.rb +107 -0
- data/lib/test_server/data.rb +23 -0
- data/lib/test_server/encoder.rb +39 -0
- data/lib/test_server/encoders/base64.rb +14 -0
- data/lib/test_server/encoders/base64_strict.rb +14 -0
- data/lib/test_server/encoders/gzip.rb +14 -0
- data/lib/test_server/encoders/null.rb +14 -0
- data/lib/test_server/erb_generator.rb +35 -0
- data/lib/test_server/error_handler.rb +109 -0
- data/lib/test_server/error_messages.rb +67 -0
- data/lib/test_server/exceptions.rb +39 -0
- data/lib/test_server/locales/en.yml +72 -0
- data/lib/test_server/main.rb +31 -0
- data/lib/test_server/null_access_logger.rb +6 -0
- data/lib/test_server/process_environment.rb +23 -0
- data/lib/test_server/server.rb +19 -0
- data/lib/test_server/server_commands/puma.rb +37 -0
- data/lib/test_server/server_commands/rackup.rb +44 -0
- data/lib/test_server/template_file.rb +19 -0
- data/lib/test_server/template_repository.rb +22 -0
- data/lib/test_server/ui_logger.rb +37 -0
- data/lib/test_server/version.rb +4 -0
- data/lib/test_server/web_helper.rb +66 -0
- data/lib/test_server.rb +78 -0
- data/share/archlinux/Makefile +7 -0
- data/share/archlinux/PKGBUILD.sh.erb +110 -0
- data/share/archlinux/config.yaml.erb +10 -0
- data/share/archlinux/defaults.sh.erb +3 -0
- data/share/archlinux/startup.sh.erb +9 -0
- data/share/archlinux/test_server.install +65 -0
- data/share/archlinux/tmpfiles.conf.erb +2 -0
- data/share/systemd/test_server.service +9 -0
- data/share/systemd/test_server.service.erb +11 -0
- data/share/systemd/test_server.socket +10 -0
- data/spec/encoder_spec.rb +50 -0
- data/spec/encoders/base64_spec.rb +18 -0
- data/spec/encoders/base64_strict_spec.rb +18 -0
- data/spec/encoders/gzip_spec.rb +18 -0
- data/spec/encoders/null_spec.rb +18 -0
- data/spec/error_handler_spec.rb +155 -0
- data/spec/features/fetch_data_via_javascript_spec.rb +19 -0
- data/spec/features/fetch_test_data_plain_spec.rb +109 -0
- data/spec/features/fetch_test_data_via_streaming_spec.rb +53 -0
- data/spec/features/helper_spec.rb +125 -0
- data/spec/process_environment_spec.rb +44 -0
- data/spec/spec_helper.rb +20 -0
- data/spec/support/capybara.rb +16 -0
- data/spec/support/debugging.rb +3 -0
- data/spec/support/encoding.rb +1 -0
- data/spec/support/environment.rb +33 -0
- data/spec/support/example.rb +16 -0
- data/spec/support/filesystem.rb +19 -0
- data/spec/support/html.rb +20 -0
- data/spec/support/matcher.rb +17 -0
- data/spec/support/pretty_print.xsl +46 -0
- data/spec/support/reporting.rb +8 -0
- data/spec/support/rspec.rb +5 -0
- data/spec/support/string.rb +2 -0
- data/spec/support/timeout.rb +18 -0
- data/test_server.gemspec +40 -0
- data/vendor/assets/components/bootstrap-sass/.bower.json +25 -0
- data/vendor/assets/components/bootstrap-sass/CNAME +1 -0
- data/vendor/assets/components/bootstrap-sass/CONTRIBUTING.md +61 -0
- data/vendor/assets/components/bootstrap-sass/DOCS-LICENSE +319 -0
- data/vendor/assets/components/bootstrap-sass/Gemfile +5 -0
- data/vendor/assets/components/bootstrap-sass/Gruntfile.js +244 -0
- data/vendor/assets/components/bootstrap-sass/LICENSE +176 -0
- data/vendor/assets/components/bootstrap-sass/LICENSE-MIT +21 -0
- data/vendor/assets/components/bootstrap-sass/README.md +277 -0
- data/vendor/assets/components/bootstrap-sass/Rakefile +44 -0
- data/vendor/assets/components/bootstrap-sass/_config.yml +25 -0
- data/vendor/assets/components/bootstrap-sass/_includes/ads.html +1 -0
- data/vendor/assets/components/bootstrap-sass/_includes/footer.html +34 -0
- data/vendor/assets/components/bootstrap-sass/_includes/header.html +42 -0
- data/vendor/assets/components/bootstrap-sass/_includes/nav-about.html +12 -0
- data/vendor/assets/components/bootstrap-sass/_includes/nav-components.html +137 -0
- data/vendor/assets/components/bootstrap-sass/_includes/nav-css.html +99 -0
- data/vendor/assets/components/bootstrap-sass/_includes/nav-customize.html +40 -0
- data/vendor/assets/components/bootstrap-sass/_includes/nav-getting-started.html +44 -0
- data/vendor/assets/components/bootstrap-sass/_includes/nav-javascript.html +88 -0
- data/vendor/assets/components/bootstrap-sass/_includes/nav-main.html +37 -0
- data/vendor/assets/components/bootstrap-sass/_includes/old-bs-docs.html +8 -0
- data/vendor/assets/components/bootstrap-sass/_includes/social-buttons.html +16 -0
- data/vendor/assets/components/bootstrap-sass/_layouts/default.html +79 -0
- data/vendor/assets/components/bootstrap-sass/_layouts/home.html +47 -0
- data/vendor/assets/components/bootstrap-sass/about.html +93 -0
- data/vendor/assets/components/bootstrap-sass/bower.json +11 -0
- data/vendor/assets/components/bootstrap-sass/browserstack.json +37 -0
- data/vendor/assets/components/bootstrap-sass/components.html +3689 -0
- data/vendor/assets/components/bootstrap-sass/composer.json +28 -0
- data/vendor/assets/components/bootstrap-sass/css.html +2674 -0
- data/vendor/assets/components/bootstrap-sass/customize.html +1715 -0
- data/vendor/assets/components/bootstrap-sass/dist/css/bootstrap-theme.css +427 -0
- data/vendor/assets/components/bootstrap-sass/dist/css/bootstrap-theme.min.css +1 -0
- data/vendor/assets/components/bootstrap-sass/dist/css/bootstrap.css +6350 -0
- data/vendor/assets/components/bootstrap-sass/dist/css/bootstrap.min.css +1 -0
- data/vendor/assets/components/bootstrap-sass/dist/fonts/glyphicons-halflings-regular.eot +0 -0
- data/vendor/assets/components/bootstrap-sass/dist/fonts/glyphicons-halflings-regular.svg +229 -0
- data/vendor/assets/components/bootstrap-sass/dist/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/vendor/assets/components/bootstrap-sass/dist/fonts/glyphicons-halflings-regular.woff +0 -0
- data/vendor/assets/components/bootstrap-sass/dist/js/bootstrap.js +2002 -0
- data/vendor/assets/components/bootstrap-sass/dist/js/bootstrap.min.js +9 -0
- data/vendor/assets/components/bootstrap-sass/docs-assets/css/docs.css +1195 -0
- data/vendor/assets/components/bootstrap-sass/docs-assets/css/pygments-manni.css +66 -0
- data/vendor/assets/components/bootstrap-sass/docs-assets/ico/apple-touch-icon-144-precomposed.png +0 -0
- data/vendor/assets/components/bootstrap-sass/docs-assets/ico/favicon.png +0 -0
- data/vendor/assets/components/bootstrap-sass/docs-assets/js/application.js +103 -0
- data/vendor/assets/components/bootstrap-sass/docs-assets/js/customizer.js +332 -0
- data/vendor/assets/components/bootstrap-sass/docs-assets/js/filesaver.js +169 -0
- data/vendor/assets/components/bootstrap-sass/docs-assets/js/holder.js +404 -0
- data/vendor/assets/components/bootstrap-sass/docs-assets/js/ie8-responsive-file-warning.js +12 -0
- data/vendor/assets/components/bootstrap-sass/docs-assets/js/jszip.js +1467 -0
- data/vendor/assets/components/bootstrap-sass/docs-assets/js/less.js +9 -0
- data/vendor/assets/components/bootstrap-sass/docs-assets/js/raw-files.js +3 -0
- data/vendor/assets/components/bootstrap-sass/docs-assets/js/uglify.js +14 -0
- data/vendor/assets/components/bootstrap-sass/examples/carousel/carousel.css +148 -0
- data/vendor/assets/components/bootstrap-sass/examples/carousel/index.html +206 -0
- data/vendor/assets/components/bootstrap-sass/examples/grid/grid.css +28 -0
- data/vendor/assets/components/bootstrap-sass/examples/grid/index.html +148 -0
- data/vendor/assets/components/bootstrap-sass/examples/jumbotron/index.html +99 -0
- data/vendor/assets/components/bootstrap-sass/examples/jumbotron/jumbotron.css +5 -0
- data/vendor/assets/components/bootstrap-sass/examples/jumbotron-narrow/index.html +82 -0
- data/vendor/assets/components/bootstrap-sass/examples/jumbotron-narrow/jumbotron-narrow.css +79 -0
- data/vendor/assets/components/bootstrap-sass/examples/justified-nav/index.html +83 -0
- data/vendor/assets/components/bootstrap-sass/examples/justified-nav/justified-nav.css +88 -0
- data/vendor/assets/components/bootstrap-sass/examples/navbar/index.html +88 -0
- data/vendor/assets/components/bootstrap-sass/examples/navbar/navbar.css +8 -0
- data/vendor/assets/components/bootstrap-sass/examples/navbar-fixed-top/index.html +91 -0
- data/vendor/assets/components/bootstrap-sass/examples/navbar-fixed-top/navbar-fixed-top.css +4 -0
- data/vendor/assets/components/bootstrap-sass/examples/navbar-static-top/index.html +92 -0
- data/vendor/assets/components/bootstrap-sass/examples/navbar-static-top/navbar-static-top.css +7 -0
- data/vendor/assets/components/bootstrap-sass/examples/non-responsive/index.html +101 -0
- data/vendor/assets/components/bootstrap-sass/examples/non-responsive/non-responsive.css +116 -0
- data/vendor/assets/components/bootstrap-sass/examples/offcanvas/index.html +130 -0
- data/vendor/assets/components/bootstrap-sass/examples/offcanvas/offcanvas.css +50 -0
- data/vendor/assets/components/bootstrap-sass/examples/offcanvas/offcanvas.js +5 -0
- data/vendor/assets/components/bootstrap-sass/examples/screenshots/carousel.jpg +0 -0
- data/vendor/assets/components/bootstrap-sass/examples/screenshots/grid.jpg +0 -0
- data/vendor/assets/components/bootstrap-sass/examples/screenshots/jumbotron-narrow.jpg +0 -0
- data/vendor/assets/components/bootstrap-sass/examples/screenshots/jumbotron.jpg +0 -0
- data/vendor/assets/components/bootstrap-sass/examples/screenshots/justified-nav.jpg +0 -0
- data/vendor/assets/components/bootstrap-sass/examples/screenshots/navbar-fixed.jpg +0 -0
- data/vendor/assets/components/bootstrap-sass/examples/screenshots/navbar-static.jpg +0 -0
- data/vendor/assets/components/bootstrap-sass/examples/screenshots/navbar.jpg +0 -0
- data/vendor/assets/components/bootstrap-sass/examples/screenshots/non-responsive.jpg +0 -0
- data/vendor/assets/components/bootstrap-sass/examples/screenshots/offcanvas.jpg +0 -0
- data/vendor/assets/components/bootstrap-sass/examples/screenshots/sign-in.jpg +0 -0
- data/vendor/assets/components/bootstrap-sass/examples/screenshots/starter-template.jpg +0 -0
- data/vendor/assets/components/bootstrap-sass/examples/screenshots/sticky-footer-navbar.jpg +0 -0
- data/vendor/assets/components/bootstrap-sass/examples/screenshots/sticky-footer.jpg +0 -0
- data/vendor/assets/components/bootstrap-sass/examples/screenshots/theme.jpg +0 -0
- data/vendor/assets/components/bootstrap-sass/examples/signin/index.html +50 -0
- data/vendor/assets/components/bootstrap-sass/examples/signin/signin.css +40 -0
- data/vendor/assets/components/bootstrap-sass/examples/starter-template/index.html +68 -0
- data/vendor/assets/components/bootstrap-sass/examples/starter-template/starter-template.css +7 -0
- data/vendor/assets/components/bootstrap-sass/examples/sticky-footer/index.html +55 -0
- data/vendor/assets/components/bootstrap-sass/examples/sticky-footer/sticky-footer.css +38 -0
- data/vendor/assets/components/bootstrap-sass/examples/sticky-footer-navbar/index.html +91 -0
- data/vendor/assets/components/bootstrap-sass/examples/sticky-footer-navbar/sticky-footer-navbar.css +45 -0
- data/vendor/assets/components/bootstrap-sass/examples/theme/index.html +384 -0
- data/vendor/assets/components/bootstrap-sass/examples/theme/theme.css +14 -0
- data/vendor/assets/components/bootstrap-sass/fonts/glyphicons-halflings-regular.eot +0 -0
- data/vendor/assets/components/bootstrap-sass/fonts/glyphicons-halflings-regular.svg +229 -0
- data/vendor/assets/components/bootstrap-sass/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/vendor/assets/components/bootstrap-sass/fonts/glyphicons-halflings-regular.woff +0 -0
- data/vendor/assets/components/bootstrap-sass/getting-started.html +1021 -0
- data/vendor/assets/components/bootstrap-sass/index.html +16 -0
- data/vendor/assets/components/bootstrap-sass/javascript.html +1983 -0
- data/vendor/assets/components/bootstrap-sass/js/affix.js +126 -0
- data/vendor/assets/components/bootstrap-sass/js/alert.js +98 -0
- data/vendor/assets/components/bootstrap-sass/js/button.js +109 -0
- data/vendor/assets/components/bootstrap-sass/js/carousel.js +217 -0
- data/vendor/assets/components/bootstrap-sass/js/collapse.js +179 -0
- data/vendor/assets/components/bootstrap-sass/js/dropdown.js +154 -0
- data/vendor/assets/components/bootstrap-sass/js/modal.js +246 -0
- data/vendor/assets/components/bootstrap-sass/js/popover.js +117 -0
- data/vendor/assets/components/bootstrap-sass/js/scrollspy.js +158 -0
- data/vendor/assets/components/bootstrap-sass/js/tab.js +135 -0
- data/vendor/assets/components/bootstrap-sass/js/tests/index.html +52 -0
- data/vendor/assets/components/bootstrap-sass/js/tests/unit/affix.js +25 -0
- data/vendor/assets/components/bootstrap-sass/js/tests/unit/alert.js +62 -0
- data/vendor/assets/components/bootstrap-sass/js/tests/unit/button.js +116 -0
- data/vendor/assets/components/bootstrap-sass/js/tests/unit/carousel.js +87 -0
- data/vendor/assets/components/bootstrap-sass/js/tests/unit/collapse.js +164 -0
- data/vendor/assets/components/bootstrap-sass/js/tests/unit/dropdown.js +219 -0
- data/vendor/assets/components/bootstrap-sass/js/tests/unit/modal.js +196 -0
- data/vendor/assets/components/bootstrap-sass/js/tests/unit/phantom.js +69 -0
- data/vendor/assets/components/bootstrap-sass/js/tests/unit/popover.js +133 -0
- data/vendor/assets/components/bootstrap-sass/js/tests/unit/scrollspy.js +37 -0
- data/vendor/assets/components/bootstrap-sass/js/tests/unit/tab.js +86 -0
- data/vendor/assets/components/bootstrap-sass/js/tests/unit/tooltip.js +437 -0
- data/vendor/assets/components/bootstrap-sass/js/tests/unit/transition.js +13 -0
- data/vendor/assets/components/bootstrap-sass/js/tests/vendor/jquery.js +6 -0
- data/vendor/assets/components/bootstrap-sass/js/tests/vendor/qunit.css +232 -0
- data/vendor/assets/components/bootstrap-sass/js/tests/vendor/qunit.js +1510 -0
- data/vendor/assets/components/bootstrap-sass/js/tooltip.js +386 -0
- data/vendor/assets/components/bootstrap-sass/js/transition.js +56 -0
- data/vendor/assets/components/bootstrap-sass/lib/_alerts.scss +67 -0
- data/vendor/assets/components/bootstrap-sass/lib/_badges.scss +51 -0
- data/vendor/assets/components/bootstrap-sass/lib/_breadcrumbs.scss +23 -0
- data/vendor/assets/components/bootstrap-sass/lib/_button-groups.scss +253 -0
- data/vendor/assets/components/bootstrap-sass/lib/_buttons.scss +158 -0
- data/vendor/assets/components/bootstrap-sass/lib/_carousel.scss +231 -0
- data/vendor/assets/components/bootstrap-sass/lib/_close.scss +35 -0
- data/vendor/assets/components/bootstrap-sass/lib/_code.scss +53 -0
- data/vendor/assets/components/bootstrap-sass/lib/_component-animations.scss +29 -0
- data/vendor/assets/components/bootstrap-sass/lib/_dropdowns.scss +193 -0
- data/vendor/assets/components/bootstrap-sass/lib/_forms.scss +363 -0
- data/vendor/assets/components/bootstrap-sass/lib/_glyphicons.scss +237 -0
- data/vendor/assets/components/bootstrap-sass/lib/_grid.scss +93 -0
- data/vendor/assets/components/bootstrap-sass/lib/_input-groups.scss +136 -0
- data/vendor/assets/components/bootstrap-sass/lib/_jumbotron.scss +40 -0
- data/vendor/assets/components/bootstrap-sass/lib/_labels.scss +58 -0
- data/vendor/assets/components/bootstrap-sass/lib/_list-group.scss +88 -0
- data/vendor/assets/components/bootstrap-sass/lib/_media.scss +56 -0
- data/vendor/assets/components/bootstrap-sass/lib/_mixins.scss +861 -0
- data/vendor/assets/components/bootstrap-sass/lib/_modals.scss +132 -0
- data/vendor/assets/components/bootstrap-sass/lib/_navbar.scss +628 -0
- data/vendor/assets/components/bootstrap-sass/lib/_navs.scss +262 -0
- data/vendor/assets/components/bootstrap-sass/lib/_normalize.scss +406 -0
- data/vendor/assets/components/bootstrap-sass/lib/_pager.scss +55 -0
- data/vendor/assets/components/bootstrap-sass/lib/_pagination.scss +85 -0
- data/vendor/assets/components/bootstrap-sass/lib/_panels.scss +172 -0
- data/vendor/assets/components/bootstrap-sass/lib/_popovers.scss +133 -0
- data/vendor/assets/components/bootstrap-sass/lib/_print.scss +105 -0
- data/vendor/assets/components/bootstrap-sass/lib/_progress-bars.scss +92 -0
- data/vendor/assets/components/bootstrap-sass/lib/_responsive-utilities.scss +198 -0
- data/vendor/assets/components/bootstrap-sass/lib/_scaffolding.scss +119 -0
- data/vendor/assets/components/bootstrap-sass/lib/_tables.scss +244 -0
- data/vendor/assets/components/bootstrap-sass/lib/_theme.scss +247 -0
- data/vendor/assets/components/bootstrap-sass/lib/_thumbnails.scss +32 -0
- data/vendor/assets/components/bootstrap-sass/lib/_tooltip.scss +95 -0
- data/vendor/assets/components/bootstrap-sass/lib/_type.scss +279 -0
- data/vendor/assets/components/bootstrap-sass/lib/_utilities.scss +56 -0
- data/vendor/assets/components/bootstrap-sass/lib/_variables.scss +637 -0
- data/vendor/assets/components/bootstrap-sass/lib/_wells.scss +29 -0
- data/vendor/assets/components/bootstrap-sass/lib/bootstrap.scss +49 -0
- data/vendor/assets/components/bootstrap-sass/package.json +40 -0
- data/vendor/assets/components/jquery/.bower.json +37 -0
- data/vendor/assets/components/jquery/MIT-LICENSE.txt +21 -0
- data/vendor/assets/components/jquery/bower.json +27 -0
- data/vendor/assets/components/jquery/dist/jquery.js +9174 -0
- data/vendor/assets/components/jquery/dist/jquery.min.js +5 -0
- data/vendor/assets/components/jquery/dist/jquery.min.map +1 -0
- data/vendor/assets/components/jquery/src/ajax/jsonp.js +89 -0
- data/vendor/assets/components/jquery/src/ajax/load.js +75 -0
- data/vendor/assets/components/jquery/src/ajax/parseJSON.js +13 -0
- data/vendor/assets/components/jquery/src/ajax/parseXML.js +28 -0
- data/vendor/assets/components/jquery/src/ajax/script.js +64 -0
- data/vendor/assets/components/jquery/src/ajax/var/nonce.js +5 -0
- data/vendor/assets/components/jquery/src/ajax/var/rquery.js +3 -0
- data/vendor/assets/components/jquery/src/ajax/xhr.js +135 -0
- data/vendor/assets/components/jquery/src/ajax.js +806 -0
- data/vendor/assets/components/jquery/src/attributes/attr.js +143 -0
- data/vendor/assets/components/jquery/src/attributes/classes.js +158 -0
- data/vendor/assets/components/jquery/src/attributes/prop.js +96 -0
- data/vendor/assets/components/jquery/src/attributes/support.js +35 -0
- data/vendor/assets/components/jquery/src/attributes/val.js +163 -0
- data/vendor/assets/components/jquery/src/attributes.js +11 -0
- data/vendor/assets/components/jquery/src/callbacks.js +205 -0
- data/vendor/assets/components/jquery/src/core/access.js +60 -0
- data/vendor/assets/components/jquery/src/core/init.js +123 -0
- data/vendor/assets/components/jquery/src/core/parseHTML.js +39 -0
- data/vendor/assets/components/jquery/src/core/ready.js +97 -0
- data/vendor/assets/components/jquery/src/core/var/rsingleTag.js +4 -0
- data/vendor/assets/components/jquery/src/core.js +498 -0
- data/vendor/assets/components/jquery/src/css/addGetHookIf.js +24 -0
- data/vendor/assets/components/jquery/src/css/curCSS.js +57 -0
- data/vendor/assets/components/jquery/src/css/defaultDisplay.js +70 -0
- data/vendor/assets/components/jquery/src/css/hiddenVisibleSelectors.js +15 -0
- data/vendor/assets/components/jquery/src/css/support.js +91 -0
- data/vendor/assets/components/jquery/src/css/swap.js +28 -0
- data/vendor/assets/components/jquery/src/css/var/cssExpand.js +3 -0
- data/vendor/assets/components/jquery/src/css/var/getStyles.js +5 -0
- data/vendor/assets/components/jquery/src/css/var/isHidden.js +13 -0
- data/vendor/assets/components/jquery/src/css/var/rmargin.js +3 -0
- data/vendor/assets/components/jquery/src/css/var/rnumnonpx.js +5 -0
- data/vendor/assets/components/jquery/src/css.js +451 -0
- data/vendor/assets/components/jquery/src/data/Data.js +181 -0
- data/vendor/assets/components/jquery/src/data/accepts.js +20 -0
- data/vendor/assets/components/jquery/src/data/var/data_priv.js +5 -0
- data/vendor/assets/components/jquery/src/data/var/data_user.js +5 -0
- data/vendor/assets/components/jquery/src/data.js +175 -0
- data/vendor/assets/components/jquery/src/deferred.js +149 -0
- data/vendor/assets/components/jquery/src/deprecated.js +13 -0
- data/vendor/assets/components/jquery/src/dimensions.js +50 -0
- data/vendor/assets/components/jquery/src/effects/Tween.js +114 -0
- data/vendor/assets/components/jquery/src/effects/animatedSelector.js +13 -0
- data/vendor/assets/components/jquery/src/effects.js +647 -0
- data/vendor/assets/components/jquery/src/event/alias.js +39 -0
- data/vendor/assets/components/jquery/src/event/support.js +9 -0
- data/vendor/assets/components/jquery/src/event.js +868 -0
- data/vendor/assets/components/jquery/src/exports/amd.js +24 -0
- data/vendor/assets/components/jquery/src/exports/global.js +32 -0
- data/vendor/assets/components/jquery/src/intro.js +44 -0
- data/vendor/assets/components/jquery/src/jquery.js +36 -0
- data/vendor/assets/components/jquery/src/manipulation/_evalUrl.js +18 -0
- data/vendor/assets/components/jquery/src/manipulation/support.js +31 -0
- data/vendor/assets/components/jquery/src/manipulation/var/rcheckableType.js +3 -0
- data/vendor/assets/components/jquery/src/manipulation.js +582 -0
- data/vendor/assets/components/jquery/src/offset.js +204 -0
- data/vendor/assets/components/jquery/src/outro.js +1 -0
- data/vendor/assets/components/jquery/src/queue/delay.js +22 -0
- data/vendor/assets/components/jquery/src/queue.js +142 -0
- data/vendor/assets/components/jquery/src/selector-native.js +172 -0
- data/vendor/assets/components/jquery/src/selector-sizzle.js +14 -0
- data/vendor/assets/components/jquery/src/selector.js +1 -0
- data/vendor/assets/components/jquery/src/serialize.js +111 -0
- data/vendor/assets/components/jquery/src/sizzle/dist/sizzle.js +2034 -0
- data/vendor/assets/components/jquery/src/sizzle/dist/sizzle.min.js +3 -0
- data/vendor/assets/components/jquery/src/sizzle/dist/sizzle.min.map +1 -0
- data/vendor/assets/components/jquery/src/traversing/findFilter.js +100 -0
- data/vendor/assets/components/jquery/src/traversing/var/rneedsContext.js +6 -0
- data/vendor/assets/components/jquery/src/traversing.js +200 -0
- data/vendor/assets/components/jquery/src/var/arr.js +3 -0
- data/vendor/assets/components/jquery/src/var/class2type.js +4 -0
- data/vendor/assets/components/jquery/src/var/concat.js +5 -0
- data/vendor/assets/components/jquery/src/var/hasOwn.js +5 -0
- data/vendor/assets/components/jquery/src/var/indexOf.js +5 -0
- data/vendor/assets/components/jquery/src/var/pnum.js +3 -0
- data/vendor/assets/components/jquery/src/var/push.js +5 -0
- data/vendor/assets/components/jquery/src/var/rnotwhite.js +3 -0
- data/vendor/assets/components/jquery/src/var/slice.js +5 -0
- data/vendor/assets/components/jquery/src/var/strundefined.js +3 -0
- data/vendor/assets/components/jquery/src/var/support.js +4 -0
- data/vendor/assets/components/jquery/src/var/toString.js +5 -0
- data/vendor/assets/components/jquery/src/wrap.js +78 -0
- data/vendor/assets/components/open-sans/.bower.json +36 -0
- data/vendor/assets/components/open-sans/bower.json +27 -0
- data/vendor/assets/components/open-sans/css/open-sans.css +91 -0
- data/vendor/assets/components/open-sans/css/open-sans.min.css +1 -0
- data/vendor/assets/components/open-sans/fonts/bold/opensans-bold-webfont.eot +0 -0
- data/vendor/assets/components/open-sans/fonts/bold/opensans-bold-webfont.svg +958 -0
- data/vendor/assets/components/open-sans/fonts/bold/opensans-bold-webfont.ttf +0 -0
- data/vendor/assets/components/open-sans/fonts/bold/opensans-bold-webfont.woff +0 -0
- data/vendor/assets/components/open-sans/fonts/bold-italic/opensans-bold-italic-webfont.eot +0 -0
- data/vendor/assets/components/open-sans/fonts/bold-italic/opensans-bold-italic-webfont.svg +958 -0
- data/vendor/assets/components/open-sans/fonts/bold-italic/opensans-bold-italic-webfont.ttf +0 -0
- data/vendor/assets/components/open-sans/fonts/bold-italic/opensans-bold-italic-webfont.woff +0 -0
- data/vendor/assets/components/open-sans/fonts/extrabold/opensans-extrabold-webfont.eot +0 -0
- data/vendor/assets/components/open-sans/fonts/extrabold/opensans-extrabold-webfont.svg +958 -0
- data/vendor/assets/components/open-sans/fonts/extrabold/opensans-extrabold-webfont.ttf +0 -0
- data/vendor/assets/components/open-sans/fonts/extrabold/opensans-extrabold-webfont.woff +0 -0
- data/vendor/assets/components/open-sans/fonts/extrabold-italic/opensans-extrabold-italic-webfont.eot +0 -0
- data/vendor/assets/components/open-sans/fonts/extrabold-italic/opensans-extrabold-italic-webfont.svg +958 -0
- data/vendor/assets/components/open-sans/fonts/extrabold-italic/opensans-extrabold-italic-webfont.ttf +0 -0
- data/vendor/assets/components/open-sans/fonts/extrabold-italic/opensans-extrabold-italic-webfont.woff +0 -0
- data/vendor/assets/components/open-sans/fonts/italic/opensans-italic-webfont.eot +0 -0
- data/vendor/assets/components/open-sans/fonts/italic/opensans-italic-webfont.svg +958 -0
- data/vendor/assets/components/open-sans/fonts/italic/opensans-italic-webfont.ttf +0 -0
- data/vendor/assets/components/open-sans/fonts/italic/opensans-italic-webfont.woff +0 -0
- data/vendor/assets/components/open-sans/fonts/light/opensans-light-webfont.eot +0 -0
- data/vendor/assets/components/open-sans/fonts/light/opensans-light-webfont.svg +958 -0
- data/vendor/assets/components/open-sans/fonts/light/opensans-light-webfont.ttf +0 -0
- data/vendor/assets/components/open-sans/fonts/light/opensans-light-webfont.woff +0 -0
- data/vendor/assets/components/open-sans/fonts/light-italic/opensans-light-italic-webfont.eot +0 -0
- data/vendor/assets/components/open-sans/fonts/light-italic/opensans-light-italic-webfont.svg +958 -0
- data/vendor/assets/components/open-sans/fonts/light-italic/opensans-light-italic-webfont.ttf +0 -0
- data/vendor/assets/components/open-sans/fonts/light-italic/opensans-light-italic-webfont.woff +0 -0
- data/vendor/assets/components/open-sans/fonts/regular/opensans-regular-webfont.eot +0 -0
- data/vendor/assets/components/open-sans/fonts/regular/opensans-regular-webfont.svg +958 -0
- data/vendor/assets/components/open-sans/fonts/regular/opensans-regular-webfont.ttf +0 -0
- data/vendor/assets/components/open-sans/fonts/regular/opensans-regular-webfont.woff +0 -0
- data/vendor/assets/components/open-sans/fonts/semibold/opensans-semibold-webfont.eot +0 -0
- data/vendor/assets/components/open-sans/fonts/semibold/opensans-semibold-webfont.svg +958 -0
- data/vendor/assets/components/open-sans/fonts/semibold/opensans-semibold-webfont.ttf +0 -0
- data/vendor/assets/components/open-sans/fonts/semibold/opensans-semibold-webfont.woff +0 -0
- data/vendor/assets/components/open-sans/fonts/semibold-italic/opensans-semibold-italic-webfont.eot +0 -0
- data/vendor/assets/components/open-sans/fonts/semibold-italic/opensans-semibold-italic-webfont.svg +958 -0
- data/vendor/assets/components/open-sans/fonts/semibold-italic/opensans-semibold-italic-webfont.ttf +0 -0
- data/vendor/assets/components/open-sans/fonts/semibold-italic/opensans-semibold-italic-webfont.woff +0 -0
- data/vendor/assets/components/open-sans/scss/_base.scss +19 -0
- data/vendor/assets/components/open-sans/scss/_bold-italic.scss +8 -0
- data/vendor/assets/components/open-sans/scss/_bold.scss +4 -0
- data/vendor/assets/components/open-sans/scss/_extrabold-italic.scss +8 -0
- data/vendor/assets/components/open-sans/scss/_extrabold.scss +4 -0
- data/vendor/assets/components/open-sans/scss/_italic.scss +8 -0
- data/vendor/assets/components/open-sans/scss/_light-italic.scss +8 -0
- data/vendor/assets/components/open-sans/scss/_light.scss +4 -0
- data/vendor/assets/components/open-sans/scss/_regular.scss +4 -0
- data/vendor/assets/components/open-sans/scss/_semibold-italic.scss +8 -0
- data/vendor/assets/components/open-sans/scss/_semibold.scss +4 -0
- data/vendor/assets/components/open-sans/scss/open-sans.scss +15 -0
- metadata +795 -0
@@ -0,0 +1,37 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module TestServer
|
3
|
+
module ServerCommands
|
4
|
+
class Puma
|
5
|
+
|
6
|
+
private
|
7
|
+
|
8
|
+
attr_reader :environment, :pid_file, :config_file, :listen, :worker_count
|
9
|
+
|
10
|
+
public
|
11
|
+
|
12
|
+
def initialize(options = {})
|
13
|
+
@environment = options.fetch(:environment, :development)
|
14
|
+
@pid_file = options.fetch(:pid_file, TestServer.config.pid_file)
|
15
|
+
@config_file = options.fetch(:config_file, ::File.expand_path('../../../../config.ru', __FILE__))
|
16
|
+
@listen = options.fetch(:listen, 'tcp://127.0.0.1:8080')
|
17
|
+
@worker_count = options.fetch(:worker_count, nil)
|
18
|
+
|
19
|
+
rescue KeyError => e
|
20
|
+
raise ArgumentError, e.message
|
21
|
+
end
|
22
|
+
|
23
|
+
def to_s
|
24
|
+
cmd = []
|
25
|
+
|
26
|
+
cmd << 'puma'
|
27
|
+
cmd << "-e #{environment}" if environment
|
28
|
+
cmd << "--pidfile #{pid_file}" if pid_file
|
29
|
+
cmd << "-b #{listen}" if listen
|
30
|
+
cmd << "-w #{worker_count}" if worker_count
|
31
|
+
cmd << config_file if config_file
|
32
|
+
|
33
|
+
cmd.join(" ")
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module TestServer
|
3
|
+
module ServerCommands
|
4
|
+
class Rackup
|
5
|
+
|
6
|
+
private
|
7
|
+
|
8
|
+
attr_reader :environment, :pid_file, :config_file, :host, :port
|
9
|
+
|
10
|
+
public
|
11
|
+
|
12
|
+
def initialize(options = {})
|
13
|
+
@environment = options.fetch(:environment, :development)
|
14
|
+
@pid_file = options.fetch(:pid_file, TestServer.config.pid_file)
|
15
|
+
@config_file = options.fetch(:config_file, ::File.expand_path('../../../../config.ru', __FILE__))
|
16
|
+
listen = options.fetch(:listen, '127.0.0.1:8080')
|
17
|
+
|
18
|
+
begin
|
19
|
+
uri = Addressable::URI.heuristic_parse(listen)
|
20
|
+
rescue StandardError => e
|
21
|
+
fail Exceptions::ServerListenStatementInvalid, "I cannot parse the listen statement: #{listen}. It is invalid: #{e.message}"
|
22
|
+
end
|
23
|
+
|
24
|
+
@port = uri.port
|
25
|
+
@host = uri.host
|
26
|
+
rescue KeyError => e
|
27
|
+
raise ArgumentError, e.message
|
28
|
+
end
|
29
|
+
|
30
|
+
def to_s
|
31
|
+
cmd = []
|
32
|
+
|
33
|
+
cmd << 'rackup'
|
34
|
+
cmd << "-E #{environment}" if environment
|
35
|
+
cmd << "-P #{pid_file}" if pid_file
|
36
|
+
cmd << "-o #{host}" if host
|
37
|
+
cmd << "-p #{port}" if port
|
38
|
+
cmd << config_file if config_file
|
39
|
+
|
40
|
+
cmd.join(" ")
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module TestServer
|
3
|
+
class TemplateFile
|
4
|
+
|
5
|
+
attr_reader :path
|
6
|
+
|
7
|
+
def initialize(path)
|
8
|
+
@path = ::File.expand_path(path)
|
9
|
+
end
|
10
|
+
|
11
|
+
def name
|
12
|
+
::File.basename(path, '.*').to_sym
|
13
|
+
end
|
14
|
+
|
15
|
+
def read
|
16
|
+
::File.read(path)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module TestServer
|
3
|
+
class TemplateRepository
|
4
|
+
private
|
5
|
+
|
6
|
+
attr_reader :root_directory, :creator
|
7
|
+
|
8
|
+
public
|
9
|
+
|
10
|
+
def initialize(root_directory = ::File.expand_path('../../../files', __FILE__), creator = TemplateFile)
|
11
|
+
@root_directory = ::File.expand_path(root_directory)
|
12
|
+
@creator = creator
|
13
|
+
end
|
14
|
+
|
15
|
+
def find(name)
|
16
|
+
path = ::File.join(root_directory, "#{name.to_s}.erb")
|
17
|
+
fail Exceptions::ErbTemplateIsUnknown, "Template \"#{name}\" could not be found!" unless ::File.exist? path
|
18
|
+
|
19
|
+
creator.new(path)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module TestServer
|
2
|
+
class UiLogger
|
3
|
+
|
4
|
+
private
|
5
|
+
|
6
|
+
attr_reader :logger
|
7
|
+
|
8
|
+
public
|
9
|
+
|
10
|
+
def initialize
|
11
|
+
@logger = ::Logger.new($stderr)
|
12
|
+
end
|
13
|
+
|
14
|
+
def level=(l)
|
15
|
+
logger.level = case l.to_s.to_sym
|
16
|
+
when :unknown
|
17
|
+
::Logger::UNKNOWN
|
18
|
+
when :fatal
|
19
|
+
::Logger::FATAL
|
20
|
+
when :error
|
21
|
+
::Logger::ERROR
|
22
|
+
when :warn
|
23
|
+
::Logger::WARN
|
24
|
+
when :info
|
25
|
+
::Logger::INFO
|
26
|
+
when :debug
|
27
|
+
::Logger::DEBUG
|
28
|
+
else
|
29
|
+
::Logger::ERROR
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def method_missing(method, *args, &block)
|
34
|
+
logger.public_send method, *args
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module TestServer
|
3
|
+
module WebHelper
|
4
|
+
def h(text)
|
5
|
+
Rack::Utils.escape_html(text)
|
6
|
+
end
|
7
|
+
|
8
|
+
def t(*args)
|
9
|
+
I18n.t(*args)
|
10
|
+
end
|
11
|
+
|
12
|
+
def generate_string(count, string = "Plain Data\n")
|
13
|
+
string * count
|
14
|
+
end
|
15
|
+
|
16
|
+
def generate_random_string(count)
|
17
|
+
o = [('a'..'z'), ('A'..'Z'), (1..9), %w{° ^ ! " § $ % & / ( ) = ? * + ~ ` ´ ' # > < | @ ł € ¶ ŧ ← ↓ → ŋ đ ð ſ ð đ ŋ ħ “ „ ¢ « | » « ¢ „ “ ” µ · … – ĸ ¹ ² ³ ¼ ½ ¬ \{ [ ] \}}].map { |i| i.to_a }.flatten
|
18
|
+
|
19
|
+
(0...count).map { o[rand(o.length)] }.join
|
20
|
+
end
|
21
|
+
|
22
|
+
def generate_eicar
|
23
|
+
[ 'X', '5', 'O', '!', 'P', '%', '@', 'A', 'P', '[', '4', "\\", 'P',
|
24
|
+
'Z', 'X', '5', '4', '(', 'P', '^', ')', '7', 'C', 'C', ')', '7',
|
25
|
+
'}', '$', 'E', 'I', 'C', 'A', 'R', '-', 'S', 'T', 'A', 'N', 'D',
|
26
|
+
'A', 'R', 'D', '-', 'A', 'N', 'T', 'I', 'V', 'I', 'R', 'U', 'S',
|
27
|
+
'-', 'T', 'E', 'S', 'T', '-', 'F', 'I', 'L', 'E', '!', '$', 'H',
|
28
|
+
'+', 'H', '*' ]
|
29
|
+
end
|
30
|
+
|
31
|
+
def configure_caching(params)
|
32
|
+
options = []
|
33
|
+
|
34
|
+
if params.key? 'expires'
|
35
|
+
options << :must_revalidate
|
36
|
+
options << :no_cache
|
37
|
+
options << { max_age: params[:expires] }
|
38
|
+
else
|
39
|
+
options << :must_revalidate if params.key? 'must_revalidate'
|
40
|
+
options << :no_cache if params.key? 'no_cache'
|
41
|
+
options << { max_age: params[:max_age] } if params.key? 'max_age'
|
42
|
+
end
|
43
|
+
|
44
|
+
cache_control(*options)
|
45
|
+
end
|
46
|
+
|
47
|
+
def encode(&block)
|
48
|
+
encoders = []
|
49
|
+
encoders << Encoders::Base64.new
|
50
|
+
encoders << Encoders::Base64Strict.new
|
51
|
+
encoders << Encoders::Gzip.new
|
52
|
+
|
53
|
+
encoders_to_run = params.keys.map(&:to_sym) & encoders.collect { |e| e.name }
|
54
|
+
|
55
|
+
if encoders_to_run.blank?
|
56
|
+
real_encoders = [Encoders::Null.new]
|
57
|
+
else
|
58
|
+
real_encoders = encoders_to_run.collect { |er| encoders.find { |e| e.name? er } }.compact
|
59
|
+
end
|
60
|
+
|
61
|
+
real_encoders.reduce(block.call) do |memo, e|
|
62
|
+
e.encode(memo)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
data/lib/test_server.rb
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
require 'psych'
|
2
|
+
require 'sass'
|
3
|
+
require 'haml'
|
4
|
+
require 'i18n'
|
5
|
+
require 'i18n/backend/fallbacks'
|
6
|
+
require 'rack/contrib/locale'
|
7
|
+
require 'rack/contrib/nested_params'
|
8
|
+
require 'rack/contrib/post_body_content_type_parser'
|
9
|
+
require 'sprockets-helpers'
|
10
|
+
require 'sinatra'
|
11
|
+
require 'sinatra/param'
|
12
|
+
require 'sinatra/json'
|
13
|
+
require 'sinatra/streaming'
|
14
|
+
require 'json'
|
15
|
+
require 'uglifier'
|
16
|
+
require 'rack/protection'
|
17
|
+
require 'thor'
|
18
|
+
require 'base64'
|
19
|
+
require 'zlib'
|
20
|
+
require 'digest/sha1'
|
21
|
+
|
22
|
+
require 'active_support/core_ext/kernel/reporting'
|
23
|
+
require 'active_support/core_ext/object/blank'
|
24
|
+
require 'active_support/core_ext/array/access'
|
25
|
+
require 'active_support/core_ext/hash/keys'
|
26
|
+
require 'active_support/core_ext/string/inflections'
|
27
|
+
|
28
|
+
require 'timeout'
|
29
|
+
require 'logger'
|
30
|
+
require 'pager'
|
31
|
+
require 'psych'
|
32
|
+
require 'addressable/uri'
|
33
|
+
require 'securerandom'
|
34
|
+
require 'erb'
|
35
|
+
|
36
|
+
|
37
|
+
require 'test_server/access_logger'
|
38
|
+
require 'test_server/null_access_logger'
|
39
|
+
require 'test_server/ui_logger'
|
40
|
+
|
41
|
+
require 'test_server/exceptions'
|
42
|
+
require 'test_server/error_handler'
|
43
|
+
require 'test_server/error_messages'
|
44
|
+
|
45
|
+
require 'test_server/encoder'
|
46
|
+
require 'test_server/encoders/base64_strict'
|
47
|
+
require 'test_server/encoders/base64'
|
48
|
+
require 'test_server/encoders/null'
|
49
|
+
require 'test_server/encoders/gzip'
|
50
|
+
|
51
|
+
require 'test_server/web_helper'
|
52
|
+
require 'test_server/process_environment'
|
53
|
+
require 'test_server/config'
|
54
|
+
require 'test_server/version'
|
55
|
+
require 'test_server/main'
|
56
|
+
require 'test_server/data'
|
57
|
+
require 'test_server/erb_generator'
|
58
|
+
|
59
|
+
require 'test_server/actions/create_directory'
|
60
|
+
require 'test_server/actions/create_file'
|
61
|
+
require 'test_server/actions/create_output'
|
62
|
+
require 'test_server/actions/handle_error'
|
63
|
+
require 'test_server/actions/initialize_application'
|
64
|
+
require 'test_server/actions/reload_configuration'
|
65
|
+
require 'test_server/actions/send_signal'
|
66
|
+
|
67
|
+
require 'test_server/server_commands/puma'
|
68
|
+
require 'test_server/server_commands/rackup'
|
69
|
+
require 'test_server/server'
|
70
|
+
|
71
|
+
require 'test_server/cli/helper'
|
72
|
+
require 'test_server/cli/reload'
|
73
|
+
require 'test_server/cli/main'
|
74
|
+
|
75
|
+
require 'test_server/template_file'
|
76
|
+
require 'test_server/template_repository'
|
77
|
+
|
78
|
+
module TestServer; end
|
@@ -0,0 +1,110 @@
|
|
1
|
+
# Maintainer: Dennis Guennewig dg1|vrnetze.de
|
2
|
+
pkgname=test_server
|
3
|
+
pkgver=<%= lookup('version') %>
|
4
|
+
pkgrel=1
|
5
|
+
pkgdesc="test server for proxy testing"
|
6
|
+
arch=(i686 x86_64)
|
7
|
+
url="https://github.com/dg-vrnetze/${pkgname}"
|
8
|
+
license=('MIT')
|
9
|
+
depends=('ruby' 'libatomic_ops')
|
10
|
+
install=${pkgname}.install
|
11
|
+
makedepends=(rubygems filegen phantomjs)
|
12
|
+
#source=(http://gems.rubyforge.org/gems/$pkgname-$pkgver.gem)
|
13
|
+
backup=etc/${pkgname}/config.yaml
|
14
|
+
source=($pkgname-$pkgver.gem)
|
15
|
+
noextract=($pkgname-$pkgver.gem)
|
16
|
+
<%= lookup('sha') %>
|
17
|
+
|
18
|
+
package() {
|
19
|
+
cd "$srcdir"
|
20
|
+
|
21
|
+
_library_dir=/usr/lib/${pkgname}
|
22
|
+
_share_dir="${_library_dir}/gems/${pkgname}-${pkgver}/share"
|
23
|
+
_systemd_dir=/usr/lib/systemd/system
|
24
|
+
_bin_dir=/usr/bin
|
25
|
+
_data_dir=/var/${pkgname}/data
|
26
|
+
_log_dir=/var/log/${pkgname}
|
27
|
+
_config_dir=/etc/${pkgname}
|
28
|
+
_examples_dir=/usr/share/${pkgname}/examples
|
29
|
+
_cache_dir=/var/cache/${pkgname}
|
30
|
+
_run_dir=/run/${pkgname}
|
31
|
+
_tmp_files_dir=/usr/lib/tmpfiles.d
|
32
|
+
_defaults_dir=/etc/default
|
33
|
+
_tmp_files_file=${_tmp_files_dir}/${pkgname}.conf
|
34
|
+
_config_file=${_config_dir}/config.yaml
|
35
|
+
_service_user=$pkgname
|
36
|
+
_service_group=$pkgname
|
37
|
+
_service_environment_file=${_defaults_dir}/${pkgname}
|
38
|
+
_access_log_file=${_log_dir}/access.log
|
39
|
+
_debug_mode=false
|
40
|
+
_log_level=warn
|
41
|
+
_environment=production
|
42
|
+
_listen_statement=tcp://127.0.0.1:8000
|
43
|
+
_reload_config_signal=USR1
|
44
|
+
_sass_cache_dir=$_cache_dir
|
45
|
+
_pid_file=${_run_dir}/pid
|
46
|
+
_executable_file=${pkgdir}${_bin_dir}/${pkgname}
|
47
|
+
|
48
|
+
install -d ${pkgdir}$_library_dir
|
49
|
+
install -d ${pkgdir}$_bin_dir
|
50
|
+
install -d ${pkgdir}$_systemd_dir
|
51
|
+
install -d -m 770 ${pkgdir}$_data_dir
|
52
|
+
install -d ${pkgdir}$_log_dir
|
53
|
+
install -d ${pkgdir}$_config_dir
|
54
|
+
#install -d ${pkgdir}$_run_dir
|
55
|
+
install -d ${pkgdir}$_tmp_files_dir
|
56
|
+
install -d ${pkgdir}$_sass_cache_dir
|
57
|
+
install -d ${pkgdir}$_defaults_dir
|
58
|
+
|
59
|
+
|
60
|
+
msg "Starting download of gems. Don't get alert if the download takes a lot of time. Since rubygems 2.2.0 a new algorithm to resolve dependencies is used. Upgrade to > 2.2.0 via sudo /usr/bin/gem update --system to improve performance."
|
61
|
+
|
62
|
+
GEM_HOME="${pkgdir}${_library_dir}" GEM_ROOT="${pkgdir}${_library_dir}" GEM_PATH="${pkgdir}${_library_dir}" /usr/bin/gem install --env-shebang --wrappers --no-ri --no-rdoc --no-prerelease --install-dir ${pkgdir}${_library_dir} $pkgname-$pkgver.gem
|
63
|
+
GEM_HOME="${pkgdir}${_library_dir}" GEM_ROOT="${pkgdir}${_library_dir}" GEM_PATH="${pkgdir}${_library_dir}" /usr/bin/gem install --env-shebang --wrappers --no-ri --no-rdoc --no-prerelease --install-dir ${pkgdir}${_library_dir} puma
|
64
|
+
|
65
|
+
RUN_DIR=$_run_dir \
|
66
|
+
SERVICE_USER=$_service_user \
|
67
|
+
SERVICE_GROUP=$_service_group \
|
68
|
+
filegen ${pkgdir}${_share_dir}/archlinux/tmpfiles.conf.erb > ${pkgdir}${_tmp_files_file}
|
69
|
+
|
70
|
+
COMMAND="${_executable_file} serve" \
|
71
|
+
DESCRIPTION='Server to proxy tests'
|
72
|
+
SERVICE_USER=$_service_user \
|
73
|
+
SERVICE_GROUP=$_service_group \
|
74
|
+
DEFAULTS_FILE=$_service_environment_file \
|
75
|
+
filegen ${pkgdir}${_share_dir}/systemd/${pkgname}.service.erb > ${pkgdir}$_systemd_dir/${pkgname}.service
|
76
|
+
|
77
|
+
VARIABLES="HOME=/home/$_service_user" \
|
78
|
+
filegen ${pkgdir}${_share_dir}/archlinux/defaults.sh.erb > ${pkgdir}${_service_environment_file}
|
79
|
+
|
80
|
+
chmod 644 ${pkgdir}${_tmp_files_file}
|
81
|
+
|
82
|
+
ACCESS_LOG=$_access_log_file \
|
83
|
+
CONFIG_FILE=$_config_file \
|
84
|
+
DEBUG_MODE=$_debug_mode \
|
85
|
+
ENVIRONMENT=$_environment \
|
86
|
+
LISTEN=$_listen_statement \
|
87
|
+
LOG_LEVEL=$_log_level \
|
88
|
+
PID_FILE=$_pid_file \
|
89
|
+
RELOAD_CONFIG_SIGNAL=$_reload_config_signal \
|
90
|
+
SASS_CACHE=$_sass_cache_dir \
|
91
|
+
filegen ${pkgdir}${_share_dir}/archlinux/config.yaml.erb > ${pkgdir}${_config_file}
|
92
|
+
|
93
|
+
chmod 644 ${pkgdir}${_config_file}
|
94
|
+
|
95
|
+
SOFTWARE_BINARY=$_library_dir/gems/${pkgname}-${pkgver}/bin/${pkgname} \
|
96
|
+
SOFTWARE_LIB=/usr/lib/${pkgname} \
|
97
|
+
filegen ${pkgdir}${_share_dir}/archlinux/startup.sh.erb > $_executable_file
|
98
|
+
|
99
|
+
chmod a+x ${pkgdir}/${_bin_dir}/${pkgname}
|
100
|
+
|
101
|
+
rm -rf ${pkgdir}/${_library_dir}/cache
|
102
|
+
rm -rf ${pkgdir}/${_library_dir}/{build_info,doc}
|
103
|
+
|
104
|
+
install -D -m644 ${pkgdir}/$_share_dir/systemd/${pkgname}.service ${pkgdir}/$_systemd_dir/${pkgname}.service
|
105
|
+
#install -D -m644 ${pkgdir}/$_share_dir/systemd/${pkgname}.socket ${pkgdir}/$_systemd_dir
|
106
|
+
|
107
|
+
install -D -m644 ${pkgdir}${_share_dir}/../LICENSE.md "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
|
108
|
+
}
|
109
|
+
|
110
|
+
# vim:set ts=2 sw=2 et:
|
@@ -0,0 +1,10 @@
|
|
1
|
+
---
|
2
|
+
:access_log: <%= lookup('ACCESS_LOG') %>
|
3
|
+
:config_file: <%= lookup('CONFIG_FILE') %>
|
4
|
+
:debug_mode: <%= lookup('DEBUG_MODE') %>
|
5
|
+
:environment: <%= lookup('ENVIRONMENT') %>
|
6
|
+
:listen: <%= lookup('LISTEN') %>
|
7
|
+
:log_level: <%= lookup('LOG_LEVEL') %>
|
8
|
+
:pid_file: <%= lookup('PID_FILE') %>
|
9
|
+
:reload_config_signal: <%= lookup('RELOAD_CONFIG_SIGNAL') %>
|
10
|
+
:sass_cache: <%= lookup('SASS_CACHE') %>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
|
3
|
+
export GEM_ROOT='<%= lookup('SOFTWARE_LIB') %>'
|
4
|
+
export GEM_PATH='<%= lookup('SOFTWARE_LIB') %>'
|
5
|
+
export GEM_HOME='<%= lookup('SOFTWARE_LIB') %>'
|
6
|
+
|
7
|
+
export PATH="<%= lookup('SOFTWARE_LIB') %>/bin:$PATH"
|
8
|
+
|
9
|
+
exec <%= lookup('SOFTWARE_BINARY') %> $*
|
@@ -0,0 +1,65 @@
|
|
1
|
+
pkgname=test_server
|
2
|
+
|
3
|
+
_service_user=$pkgname
|
4
|
+
_service_group=$pkgname
|
5
|
+
_admin_group="${pkgname}_admin"
|
6
|
+
|
7
|
+
_data_dir=/var/${pkgname}/data
|
8
|
+
_log_dir=/var/log/${pkgname}
|
9
|
+
_cache_dir=/var/cache/${pkgname}
|
10
|
+
_sass_cache_directory=$_cache_dir
|
11
|
+
|
12
|
+
post_install() {
|
13
|
+
if !getent group $_admin_group >/dev/null; then
|
14
|
+
groupadd $_admin_group
|
15
|
+
fi
|
16
|
+
|
17
|
+
if !getent passwd $_service_user >/dev/null; then
|
18
|
+
useradd -m $_service_user
|
19
|
+
fi
|
20
|
+
|
21
|
+
for path in $_log_dir $_sass_cache_directory; do
|
22
|
+
chown -R $_service_user:$_service_group $path
|
23
|
+
done
|
24
|
+
|
25
|
+
# Admins are allowed to write, service is allowd to read, others can do nothing
|
26
|
+
chown :$_admin_group $_data_dir
|
27
|
+
setfacl -m g:$_service_group:rx $_data_dir
|
28
|
+
|
29
|
+
echo ""
|
30
|
+
echo "Please place a config file at one of the following places:"
|
31
|
+
echo ""
|
32
|
+
echo " * $HOME/.config/test_server/config.yaml"
|
33
|
+
echo " * $HOME/.test_server/config.yaml"
|
34
|
+
echo " * /etc/test_server/config.yaml"
|
35
|
+
echo ""
|
36
|
+
echo "The package contains a \"config.yaml\" which has been placed at /etc/test_server/config.yaml during package install. Feel free to modify it."
|
37
|
+
echo ""
|
38
|
+
}
|
39
|
+
|
40
|
+
post_upgrade() {
|
41
|
+
post_install
|
42
|
+
}
|
43
|
+
|
44
|
+
pre_remove() {
|
45
|
+
systemctl stop $pkgname
|
46
|
+
systemctl disable $pkgname
|
47
|
+
}
|
48
|
+
|
49
|
+
post_remove() {
|
50
|
+
echo ""
|
51
|
+
echo "Please remove the home directory of the service user ${_service_user} yourself."
|
52
|
+
echo ""
|
53
|
+
|
54
|
+
if !getent group $_admin_group >dev/null; then
|
55
|
+
groupdel $_admin_group
|
56
|
+
fi
|
57
|
+
|
58
|
+
if !getent group $_service_group >/dev/null; then
|
59
|
+
groupdel $_service_group
|
60
|
+
fi
|
61
|
+
|
62
|
+
if !getent passwd $_service_user >/dev/null; then
|
63
|
+
userdel $_service_user
|
64
|
+
fi
|
65
|
+
}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
[Unit]
|
2
|
+
Description=<%= lookup('DESCRIPTION') %>
|
3
|
+
|
4
|
+
[Service]
|
5
|
+
User=<%= lookup('SERVICE_USER') %>
|
6
|
+
Group=<%= lookup('SERVICE_USER') %>
|
7
|
+
ExecStart=<%= lookup('COMMAND') %>
|
8
|
+
EnvironmentFile=<%= lookup('DEFAULTS_FILE') %>
|
9
|
+
|
10
|
+
[Install]
|
11
|
+
WantedBy=multi-user.target
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Encoder do
|
5
|
+
class MyEncoder < Encoder; end
|
6
|
+
|
7
|
+
module MyModule
|
8
|
+
class MyEncoder < Encoder; end
|
9
|
+
end
|
10
|
+
|
11
|
+
context '#name' do
|
12
|
+
it 'returns name' do
|
13
|
+
expect(MyEncoder.new.name).to eq(:my_encoder)
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'returns demodularized name' do
|
17
|
+
expect(MyModule::MyEncoder.new.name).to eq(:my_encoder)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context '#name?' do
|
22
|
+
it 'checks name' do
|
23
|
+
expect(MyEncoder.new.name?(MyEncoder.new.name)).to be_true
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context '#hash' do
|
28
|
+
it 'generates a hash for name' do
|
29
|
+
expect(MyEncoder.new.hash.to_s.size).to eq(40)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context '#eql?' do
|
34
|
+
it 'compares instances for hash' do
|
35
|
+
e1 = MyEncoder.new
|
36
|
+
e2 = MyEncoder.new
|
37
|
+
expect(e1.eql? e2).to be_true
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context '#==' do
|
42
|
+
it 'understands equality' do
|
43
|
+
e1 = MyEncoder.new
|
44
|
+
e2 = MyEncoder.new
|
45
|
+
expect(e1 == e2).to be_true
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
|
50
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Encoders::Base64 do
|
5
|
+
context '#encode' do
|
6
|
+
it 'encodes string' do
|
7
|
+
encoder = Encoders::Base64.new
|
8
|
+
expect(encoder.encode('string')).to eq "c3RyaW5n\n"
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
context '#decode' do
|
13
|
+
it 'decodes string' do
|
14
|
+
encoder = Encoders::Base64.new
|
15
|
+
expect(encoder.decode( "c3RyaW5n\n")).to eq 'string'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Encoders::Base64Strict do
|
5
|
+
context '#encode' do
|
6
|
+
it 'encodes string' do
|
7
|
+
encoder = Encoders::Base64Strict.new
|
8
|
+
expect(encoder.encode('string')).to eq 'c3RyaW5n'
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
context '#decode' do
|
13
|
+
it 'decodes string' do
|
14
|
+
encoder = Encoders::Base64Strict.new
|
15
|
+
expect(encoder.decode( 'c3RyaW5n')).to eq 'string'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Encoders::Gzip do
|
5
|
+
context '#encode' do
|
6
|
+
it 'encodes string' do
|
7
|
+
encoder = Encoders::Gzip.new
|
8
|
+
expect(encoder.encode('string')).to eq "x\x9C+.)\xCA\xCCK\a\x00\tB\x02\x98".force_encoding('ASCII-8Bit')
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
context '#decode' do
|
13
|
+
it 'decodes string' do
|
14
|
+
encoder = Encoders::Gzip.new
|
15
|
+
expect(encoder.decode("x\x9C+.)\xCA\xCCK\a\x00\tB\x02\x98")).to eq 'string'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|