{
  auto_https off
  http_port 80
  https_port 0
}

browser-translation.{$LAZYCAT_BOX_DOMAIN}:80 {
  route {
    lzcauth
    @foreignInference {
      path /translation-api/inference/*
      header Origin *
      not header Origin https://browser-translation.{$LAZYCAT_BOX_DOMAIN}
      not header Origin chrome-extension://cciklkafclhaipcopcocflmommciodjb
    }
    respond @foreignInference "Forbidden origin" 403
    @inference {
      method POST
      path_regexp inference ^/translation-api/inference/([a-z0-9-]+)/([A-Za-z0-9_-]+)/(translate|v1/chat/completions)$
    }
    handle @inference {
      reverse_proxy inference.cloud.lazycat.app.browser.translation.lzcapp:8080 {
        flush_interval -1
      }
    }
    @foreignModelWrite {
      method POST
      path /translation-api/*
      not path /translation-api/inference/*
      not header Origin https://browser-translation.{$LAZYCAT_BOX_DOMAIN}
    }
    respond @foreignModelWrite "Forbidden origin" 403
    @modelInstall {
      method GET POST
      path_regexp modelInstall ^/translation-api/ai/model-install/(cloud\.lazycat\.aipod\.(hy-mt2|mtrans))$
    }
    handle @modelInstall {
      rewrite * /backend/model-install/v1/packages/{re.modelInstall.1}
      reverse_proxy https://ai.{$LAZYCAT_BOX_DOMAIN} {
        header_up Host {upstream_hostport}
        header_up -Origin
      }
    }
    @recommendedModel {
      method GET POST
      path_regexp recommendedModel ^/translation-api/model/(hy-mt2|mtrans)/(descriptor|devices|deployments(/requirements|/[A-Za-z0-9_-]+(/(retry|start))?)?)$
    }
    handle @recommendedModel {
      rewrite * /api/v1/{re.recommendedModel.2}
      reverse_proxy {re.recommendedModel.1}.{$LAZYCAT_BOX_DOMAIN}:443 {
        transport http {
          tls
          tls_server_name {re.recommendedModel.1}.{$LAZYCAT_BOX_DOMAIN}
        }
        header_up Host {re.recommendedModel.1}.{$LAZYCAT_BOX_DOMAIN}
        header_up -Origin
      }
    }
    handle /translation-api/ai/model-catalog {
      rewrite * /model-catalog.json
      reverse_proxy https://ai.{$LAZYCAT_BOX_DOMAIN} {
        header_up Host {upstream_hostport}
        header_up -Origin
      }
    }
    handle /translation-api/ai/device/list {
      rewrite * /backend/device/list
      reverse_proxy https://ai.{$LAZYCAT_BOX_DOMAIN} {
        header_up Host {upstream_hostport}
        header_up -Origin
      }
    }
    handle /translation-api/ai/aiapps/installed {
      rewrite * /backend/aiapps/installed
      reverse_proxy https://ai.{$LAZYCAT_BOX_DOMAIN} {
        header_up Host {upstream_hostport}
        header_up -Origin
      }
    }
    @modelMetadata {
      method GET
      path_regexp modelMetadata ^/translation-api/model/([a-z0-9-]+)/(deployments|descriptor)$
    }
    handle @modelMetadata {
      rewrite * /api/v1/{re.modelMetadata.2}
      reverse_proxy {re.modelMetadata.1}.{$LAZYCAT_BOX_DOMAIN}:443 {
        transport http {
          tls
          tls_server_name {re.modelMetadata.1}.{$LAZYCAT_BOX_DOMAIN}
        }
        header_up Host {re.modelMetadata.1}.{$LAZYCAT_BOX_DOMAIN}
        header_up -Origin
      }
    }
    handle /translation-api/* {
      respond "Unknown translation API" 404
    }
    handle {
    @html path / /index.html
    header @html Cache-Control "no-store, max-age=0"
    root * /lzcapp/pkg/content/web
    try_files {path} /index.html
    file_server
    }
  }
}
