lib/gdk/services/gitlab_http_router.rb (75 lines of code) (raw):

# frozen_string_literal: true require 'pathname' module GDK module Services class GitlabHttpRouter < Base BASE_COMMAND = 'support/exec-cd gitlab-http-router npm run dev -- -c wrangler.toml --ip %{ip} --port %{port} --var GITLAB_PROXY_HOST:%{proxy_host} --var GITLAB_RULES_CONFIG:%{rules_config}' TOPOLOGY_SERVICE_COMMAND = ' --var GITLAB_TOPOLOGY_SERVICE_URL:http://localhost:%{port}' HTTPS_COMMAND = ' --local-protocol https --https-key-path %{key_path} --https-cert-path %{certificate_path}' LOG_PATH = 'tmp/log/gitlab-http-router.log' def name 'gitlab-http-router' end def command base_command = format(BASE_COMMAND, { ip: config.hostname, port: config.gitlab_http_router.use_distinct_port? ? config.gitlab_http_router.port : config.port, proxy_host: config.nginx? ? config.nginx.__listen_address : config.workhorse.__listen_address, rules_config: config.gitlab_http_router.gitlab_rules_config }) if config.gitlab_topology_service.enabled? base_command << format(TOPOLOGY_SERVICE_COMMAND, { port: config.gitlab_topology_service.rest_port }) end return base_command unless config.https? base_command << format(HTTPS_COMMAND, { key_path: key_path, certificate_path: certificate_path }) end def ready_message "The HTTP Router is available at #{listen_address}." end def enabled? config.gitlab_http_router.enabled? end def env { WRANGLER_LOG_PATH: config.gdk_root.join(LOG_PATH) }.merge(https_env) end private def https_env return {} unless config.https? root_ca_dir = if Utils.executable_exist?('mkcert') mkcert_ca_root_dir else GDK.root end { NODE_EXTRA_CA_CERTS: File.join(root_ca_dir, 'rootCA.pem') } end def mkcert_ca_root_dir GDK::Shellout.new(%w[mkcert -CAROOT]).run.chomp end def protocol config.https? ? :https : :http end def listen_address klass = config.https? ? URI::HTTPS : URI::HTTP klass.build(host: config.hostname, port: active_port) end def key_path config.gdk_root.join(config.nginx.ssl.key) end def certificate_path config.gdk_root.join(config.nginx.ssl.certificate) end def active_port if config.gitlab_http_router.use_distinct_port? config.gitlab_http_router.port else config.port end end end end end