Compare commits
108 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4e9301ae2a | |||
| 7e2142ce53 | |||
| 67190605a6 | |||
| 9479a07ddf | |||
| fbed56092f | |||
| 547b82b35b | |||
| 3dc63fa02e | |||
| e0154f5b70 | |||
| b268409897 | |||
| f3a9fd12c5 | |||
| ef741d84fb | |||
| b0ea97b922 | |||
| d1560811f5 | |||
| 5e872c4e6a | |||
| 3620e4549a | |||
| b32865e790 | |||
| ebe71a2a94 | |||
| 877a2ad0ee | |||
| 7be1aaedb3 | |||
| 05eb8e9723 | |||
| d95d89ea6f | |||
| 5d1b988579 | |||
| bae85eea9e | |||
| 2be7974991 | |||
| ac03b1f081 | |||
| 5ca209dd5a | |||
| 867e93b246 | |||
| aa9c4c1c28 | |||
| 207f21cb77 | |||
| 96a47ef588 | |||
| 3bac80eb41 | |||
| 19d67a644c | |||
| 341e4113bd | |||
| 81eb19a9ab | |||
| e0221c0d05 | |||
| e6a1f23c84 | |||
| f77772e1c0 | |||
| 0a706c03c4 | |||
| df5547fda0 | |||
| a677ee081c | |||
| 7339a91513 | |||
| cd27645489 | |||
| 71f2d53e45 | |||
| f74fcc68de | |||
| abcaf9c858 | |||
| c9f185dd82 | |||
| 5e3186d311 | |||
| db35c01a09 | |||
| 3cf6c84a60 | |||
| d570d5c916 | |||
| 4f6afb62f3 | |||
| e5edfdc052 | |||
| 55cbb92a00 | |||
| 928be6a5c6 | |||
| dff3e3c80d | |||
| 8db2118a78 | |||
| dc6da4ce34 | |||
| 63eb99ae5d | |||
| 6b533fba9f | |||
| d3e102b6d2 | |||
| 2bc9761d21 | |||
| d60b9fb8e2 | |||
| b2705f3e88 | |||
| 4dea263cb0 | |||
| 54593d0a9b | |||
| 225a75a81b | |||
| 72ae4e8a9b | |||
| b171590179 | |||
| c46f79914f | |||
| 914223972a | |||
| 559435d13c | |||
| 47300e4ced | |||
| a35a35f302 | |||
| 3b09587ca9 | |||
| 1cb2de2c3e | |||
| f972c38784 | |||
| 90736c3668 | |||
| f27ef5c768 | |||
| 68ecd18646 | |||
| e3d7c91705 | |||
| d3c2fa436c | |||
| 53b7da7e3f | |||
| 8e312d80c0 | |||
| c52d0ca759 | |||
| ca024345f6 | |||
| 89ea875ca8 | |||
| f15414e509 | |||
| cfaafab057 | |||
| 0aed608578 | |||
| 00a24051c9 | |||
| 310b43d1a6 | |||
| e7f56fb870 | |||
| 1f6eee20d3 | |||
| 7db7f92abd | |||
| fdf995cf61 | |||
| fa5adbbf61 | |||
| 1bdda9f501 | |||
| 39a5d6aaa6 | |||
| 1d46ec709b | |||
| 2b4bf42812 | |||
| 6faccc643b | |||
| 9f63908f7d | |||
| 5889eb5210 | |||
| 1de40c0d4e | |||
| e201efe0b4 | |||
| f8c582ee9b | |||
| bf9e85f518 | |||
| 0366ec8160 |
@@ -6,7 +6,7 @@ on:
|
|||||||
- '**'
|
- '**'
|
||||||
|
|
||||||
env:
|
env:
|
||||||
IMAGE: registry.gitlab.com/hosttoday/ht-docker-node:npmci
|
IMAGE: code.foss.global/host.today/ht-docker-node:szci
|
||||||
NPMCI_COMPUTED_REPOURL: https://${{gitea.repository_owner}}:${{secrets.GITEA_TOKEN}}@gitea.lossless.digital/${{gitea.repository}}.git
|
NPMCI_COMPUTED_REPOURL: https://${{gitea.repository_owner}}:${{secrets.GITEA_TOKEN}}@gitea.lossless.digital/${{gitea.repository}}.git
|
||||||
NPMCI_TOKEN_NPM: ${{secrets.NPMCI_TOKEN_NPM}}
|
NPMCI_TOKEN_NPM: ${{secrets.NPMCI_TOKEN_NPM}}
|
||||||
NPMCI_TOKEN_NPM2: ${{secrets.NPMCI_TOKEN_NPM2}}
|
NPMCI_TOKEN_NPM2: ${{secrets.NPMCI_TOKEN_NPM2}}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ on:
|
|||||||
- '*'
|
- '*'
|
||||||
|
|
||||||
env:
|
env:
|
||||||
IMAGE: registry.gitlab.com/hosttoday/ht-docker-node:npmci
|
IMAGE: code.foss.global/host.today/ht-docker-node:szci
|
||||||
NPMCI_COMPUTED_REPOURL: https://${{gitea.repository_owner}}:${{secrets.GITEA_TOKEN}}@gitea.lossless.digital/${{gitea.repository}}.git
|
NPMCI_COMPUTED_REPOURL: https://${{gitea.repository_owner}}:${{secrets.GITEA_TOKEN}}@gitea.lossless.digital/${{gitea.repository}}.git
|
||||||
NPMCI_TOKEN_NPM: ${{secrets.NPMCI_TOKEN_NPM}}
|
NPMCI_TOKEN_NPM: ${{secrets.NPMCI_TOKEN_NPM}}
|
||||||
NPMCI_TOKEN_NPM2: ${{secrets.NPMCI_TOKEN_NPM2}}
|
NPMCI_TOKEN_NPM2: ${{secrets.NPMCI_TOKEN_NPM2}}
|
||||||
@@ -74,7 +74,7 @@ jobs:
|
|||||||
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
|
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
container:
|
container:
|
||||||
image: registry.gitlab.com/hosttoday/ht-docker-dbase:npmci
|
image: code.foss.global/host.today/ht-docker-node:dbase_dind
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
@@ -82,15 +82,13 @@ jobs:
|
|||||||
- name: Prepare
|
- name: Prepare
|
||||||
run: |
|
run: |
|
||||||
pnpm install -g pnpm
|
pnpm install -g pnpm
|
||||||
pnpm install -g @shipzone/npmci
|
pnpm install -g @git.zone/tsdocker
|
||||||
|
|
||||||
- name: Release
|
- name: Release
|
||||||
run: |
|
run: |
|
||||||
npmci docker login
|
tsdocker login
|
||||||
npmci docker build
|
tsdocker build
|
||||||
npmci docker test
|
tsdocker push
|
||||||
# npmci docker push gitea.lossless.digital
|
|
||||||
npmci docker push dockerregistry.lossless.digital
|
|
||||||
|
|
||||||
metadata:
|
metadata:
|
||||||
needs: test
|
needs: test
|
||||||
|
|||||||
40
Dockerfile
40
Dockerfile
@@ -1,44 +1,24 @@
|
|||||||
# gitzone dockerfile_service
|
# gitzone dockerfile_service
|
||||||
## STAGE 1 // BUILD
|
## STAGE 1 // BUILD
|
||||||
FROM registry.gitlab.com/hosttoday/ht-docker-node:npmci as node1
|
FROM code.foss.global/host.today/ht-docker-node:lts AS build
|
||||||
COPY ./ /app
|
COPY ./ /app
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
ARG NPMCI_TOKEN_NPM2
|
|
||||||
ENV NPMCI_TOKEN_NPM2 $NPMCI_TOKEN_NPM2
|
|
||||||
RUN npmci npm prepare
|
|
||||||
RUN pnpm config set store-dir .pnpm-store
|
RUN pnpm config set store-dir .pnpm-store
|
||||||
RUN rm -rf node_modules && pnpm install
|
RUN rm -rf node_modules && pnpm install
|
||||||
RUN pnpm run build
|
RUN pnpm run build
|
||||||
|
RUN rm -rf .pnpm-store node_modules && pnpm install --prod
|
||||||
|
|
||||||
|
## STAGE 2 // PRODUCTION
|
||||||
|
FROM code.foss.global/host.today/ht-docker-node:alpine-node AS production
|
||||||
|
|
||||||
|
# gcompat + libstdc++ for glibc-linked Rust binaries (smartproxy, smartmta, remoteingress)
|
||||||
|
RUN apk add --no-cache gcompat libstdc++
|
||||||
|
|
||||||
# gitzone dockerfile_service
|
|
||||||
## STAGE 2 // install production
|
|
||||||
FROM registry.gitlab.com/hosttoday/ht-docker-node:npmci as node2
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY --from=node1 /app /app
|
COPY --from=build /app /app
|
||||||
RUN rm -rf .pnpm-store
|
|
||||||
ARG NPMCI_TOKEN_NPM2
|
|
||||||
ENV NPMCI_TOKEN_NPM2 $NPMCI_TOKEN_NPM2
|
|
||||||
RUN npmci npm prepare
|
|
||||||
RUN pnpm config set store-dir .pnpm-store
|
|
||||||
RUN rm -rf node_modules/ && pnpm install --prod
|
|
||||||
|
|
||||||
|
ENV DCROUTER_MODE=OCI_CONTAINER
|
||||||
|
|
||||||
## STAGE 3 // rebuild dependencies for alpine
|
|
||||||
FROM registry.gitlab.com/hosttoday/ht-docker-node:alpinenpmci as node3
|
|
||||||
WORKDIR /app
|
|
||||||
COPY --from=node2 /app /app
|
|
||||||
ARG NPMCI_TOKEN_NPM2
|
|
||||||
ENV NPMCI_TOKEN_NPM2 $NPMCI_TOKEN_NPM2
|
|
||||||
RUN npmci npm prepare
|
|
||||||
RUN pnpm config set store-dir .pnpm-store
|
|
||||||
RUN pnpm rebuild -r
|
|
||||||
|
|
||||||
## STAGE 4 // the final production image with all dependencies in place
|
|
||||||
FROM registry.gitlab.com/hosttoday/ht-docker-node:alpine as node4
|
|
||||||
WORKDIR /app
|
|
||||||
COPY --from=node3 /app /app
|
|
||||||
|
|
||||||
### Healthchecks
|
|
||||||
RUN pnpm install -g @servezone/healthy
|
RUN pnpm install -g @servezone/healthy
|
||||||
HEALTHCHECK --interval=30s --timeout=30s --start-period=30s --retries=3 CMD [ "healthy" ]
|
HEALTHCHECK --interval=30s --timeout=30s --start-period=30s --retries=3 CMD [ "healthy" ]
|
||||||
|
|
||||||
|
|||||||
287
changelog.md
287
changelog.md
@@ -1,5 +1,292 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 2026-03-19 - 11.4.0 - feat(docs)
|
||||||
|
document OCI container deployment and enable verbose docker build scripts
|
||||||
|
|
||||||
|
- adds a new README section covering Docker/OCI container deployment, environment variables, and image build/push commands
|
||||||
|
- updates docker build and release npm scripts to pass the --verbose flag for more detailed output
|
||||||
|
|
||||||
|
## 2026-03-18 - 11.3.0 - feat(docker)
|
||||||
|
add OCI container startup configuration and migrate Docker release pipeline to tsdocker
|
||||||
|
|
||||||
|
- adds OCI container mode startup that reads DcRouter options from environment variables and an optional JSON config file
|
||||||
|
- simplifies the Docker image to a two-stage build with production dependencies only and Alpine runtime compatibility packages
|
||||||
|
- updates Gitea workflows and npm scripts to use tsdocker for image build and release
|
||||||
|
|
||||||
|
## 2026-03-18 - 11.2.56 - fix(deps)
|
||||||
|
bump @serve.zone/remoteingress to ^4.9.0
|
||||||
|
|
||||||
|
- Updates @serve.zone/remoteingress from ^4.8.18 to ^4.9.0 in package.json
|
||||||
|
|
||||||
|
## 2026-03-17 - 11.2.55 - fix(deps)
|
||||||
|
bump @serve.zone/catalog to ^2.7.0 and @serve.zone/remoteingress to ^4.8.18
|
||||||
|
|
||||||
|
- updates @serve.zone/catalog from ^2.6.2 to ^2.7.0
|
||||||
|
- updates @serve.zone/remoteingress from ^4.8.16 to ^4.8.18
|
||||||
|
|
||||||
|
## 2026-03-17 - 11.2.54 - fix(deps)
|
||||||
|
bump @serve.zone/remoteingress to ^4.8.16
|
||||||
|
|
||||||
|
- Updates @serve.zone/remoteingress from ^4.8.14 to ^4.8.16 in package.json.
|
||||||
|
|
||||||
|
## 2026-03-17 - 11.2.53 - fix(deps)
|
||||||
|
bump @push.rocks/smartproxy and @serve.zone/remoteingress patch versions
|
||||||
|
|
||||||
|
- update @push.rocks/smartproxy from ^25.11.23 to ^25.11.24
|
||||||
|
- update @serve.zone/remoteingress from ^4.8.13 to ^4.8.14
|
||||||
|
|
||||||
|
## 2026-03-17 - 11.2.52 - fix(deps)
|
||||||
|
bump @serve.zone/remoteingress to ^4.8.13
|
||||||
|
|
||||||
|
- Updates the @serve.zone/remoteingress dependency from ^4.8.12 to ^4.8.13.
|
||||||
|
|
||||||
|
## 2026-03-17 - 11.2.51 - fix(deps)
|
||||||
|
bump @serve.zone/remoteingress to ^4.8.12
|
||||||
|
|
||||||
|
- Updates @serve.zone/remoteingress from ^4.8.11 to ^4.8.12 in package.json
|
||||||
|
|
||||||
|
## 2026-03-17 - 11.2.50 - fix(deps)
|
||||||
|
bump @serve.zone/remoteingress to ^4.8.11
|
||||||
|
|
||||||
|
- updates @serve.zone/remoteingress from ^4.8.10 to ^4.8.11
|
||||||
|
|
||||||
|
## 2026-03-17 - 11.2.49 - fix(deps)
|
||||||
|
bump @serve.zone/remoteingress to ^4.8.10
|
||||||
|
|
||||||
|
- Updates @serve.zone/remoteingress from ^4.8.9 to ^4.8.10 in package.json
|
||||||
|
|
||||||
|
## 2026-03-17 - 11.2.48 - fix(deps)
|
||||||
|
bump @serve.zone/remoteingress to ^4.8.9
|
||||||
|
|
||||||
|
- Updates @serve.zone/remoteingress from ^4.8.7 to ^4.8.9 in package.json
|
||||||
|
|
||||||
|
## 2026-03-17 - 11.2.47 - fix(deps)
|
||||||
|
bump @push.rocks/smartproxy to ^25.11.23
|
||||||
|
|
||||||
|
- Updates the @push.rocks/smartproxy dependency from ^25.11.22 to ^25.11.23 in package.json
|
||||||
|
|
||||||
|
## 2026-03-17 - 11.2.46 - fix(deps)
|
||||||
|
bump @push.rocks/smartproxy to ^25.11.22
|
||||||
|
|
||||||
|
- Updates the @push.rocks/smartproxy dependency from ^25.11.21 to ^25.11.22 in package.json.
|
||||||
|
|
||||||
|
## 2026-03-17 - 11.2.45 - fix(deps)
|
||||||
|
bump @push.rocks/smartproxy and @serve.zone/remoteingress dependencies
|
||||||
|
|
||||||
|
- update @push.rocks/smartproxy from ^25.11.20 to ^25.11.21
|
||||||
|
- update @serve.zone/remoteingress from ^4.8.3 to ^4.8.7
|
||||||
|
|
||||||
|
## 2026-03-17 - 11.2.44 - fix(deps)
|
||||||
|
bump @serve.zone/remoteingress to ^4.8.3
|
||||||
|
|
||||||
|
- Updates @serve.zone/remoteingress from ^4.8.2 to ^4.8.3 in package.json
|
||||||
|
|
||||||
|
## 2026-03-17 - 11.2.43 - fix(deps)
|
||||||
|
bump @serve.zone/remoteingress to ^4.8.2
|
||||||
|
|
||||||
|
- Updates the @serve.zone/remoteingress dependency from ^4.8.1 to ^4.8.2.
|
||||||
|
|
||||||
|
## 2026-03-17 - 11.2.42 - fix(deps)
|
||||||
|
bump @serve.zone/remoteingress to ^4.8.1
|
||||||
|
|
||||||
|
- Updates @serve.zone/remoteingress from ^4.8.0 to ^4.8.1 in package.json
|
||||||
|
|
||||||
|
## 2026-03-17 - 11.2.41 - fix(deps)
|
||||||
|
bump @push.rocks/smartproxy to ^25.11.20
|
||||||
|
|
||||||
|
- Updates the @push.rocks/smartproxy dependency from ^25.11.19 to ^25.11.20 in package.json.
|
||||||
|
|
||||||
|
## 2026-03-17 - 11.2.40 - fix(deps)
|
||||||
|
bump @serve.zone/remoteingress to ^4.8.0
|
||||||
|
|
||||||
|
- Updates the @serve.zone/remoteingress dependency from ^4.7.2 to ^4.8.0 in package.json.
|
||||||
|
|
||||||
|
## 2026-03-17 - 11.2.39 - fix(repository)
|
||||||
|
no changes to commit
|
||||||
|
|
||||||
|
|
||||||
|
## 2026-03-17 - 11.2.38 - fix(deps)
|
||||||
|
bump @serve.zone/remoteingress to ^4.7.2
|
||||||
|
|
||||||
|
- Updates @serve.zone/remoteingress from ^4.7.0 to ^4.7.2 in package.json
|
||||||
|
|
||||||
|
## 2026-03-16 - 11.2.37 - fix(deps)
|
||||||
|
bump @serve.zone/remoteingress to ^4.7.0
|
||||||
|
|
||||||
|
- updates the @serve.zone/remoteingress dependency from ^4.6.0 to ^4.7.0
|
||||||
|
|
||||||
|
## 2026-03-16 - 11.2.36 - fix(deps)
|
||||||
|
bump @push.rocks/smartproxy to ^25.11.19
|
||||||
|
|
||||||
|
- Updates the @push.rocks/smartproxy dependency from ^25.11.18 to ^25.11.19 in package.json
|
||||||
|
|
||||||
|
## 2026-03-16 - 11.2.35 - fix(deps)
|
||||||
|
bump @push.rocks/smartproxy, @serve.zone/catalog, and @serve.zone/remoteingress dependencies
|
||||||
|
|
||||||
|
- updates @push.rocks/smartproxy from ^25.11.17 to ^25.11.18
|
||||||
|
- updates @serve.zone/catalog from ^2.6.1 to ^2.6.2
|
||||||
|
- updates @serve.zone/remoteingress from ^4.5.11 to ^4.6.0
|
||||||
|
|
||||||
|
## 2026-03-16 - 11.2.34 - fix(deps)
|
||||||
|
bump @push.rocks/smartproxy and @serve.zone/catalog patch versions
|
||||||
|
|
||||||
|
- updates @push.rocks/smartproxy from ^25.11.16 to ^25.11.17
|
||||||
|
- updates @serve.zone/catalog from ^2.6.0 to ^2.6.1
|
||||||
|
|
||||||
|
## 2026-03-16 - 11.2.33 - fix(deps)
|
||||||
|
bump smartproxy and remoteingress dependencies
|
||||||
|
|
||||||
|
- update @push.rocks/smartproxy from ^25.11.14 to ^25.11.16
|
||||||
|
- update @serve.zone/remoteingress from ^4.5.10 to ^4.5.11
|
||||||
|
|
||||||
|
## 2026-03-16 - 11.2.32 - fix(deps)
|
||||||
|
bump smartproxy and remoteingress dependencies
|
||||||
|
|
||||||
|
- update @push.rocks/smartproxy from ^25.11.11 to ^25.11.14
|
||||||
|
- update @serve.zone/remoteingress from ^4.5.9 to ^4.5.10
|
||||||
|
|
||||||
|
## 2026-03-16 - 11.2.31 - fix(deps)
|
||||||
|
bump @push.rocks/smartproxy to ^25.11.11
|
||||||
|
|
||||||
|
- Updates the @push.rocks/smartproxy dependency from ^25.11.10 to ^25.11.11 in package.json.
|
||||||
|
|
||||||
|
## 2026-03-16 - 11.2.30 - fix(deps)
|
||||||
|
bump @push.rocks/smartproxy and @serve.zone/catalog dependencies
|
||||||
|
|
||||||
|
- update @push.rocks/smartproxy from ^25.11.9 to ^25.11.10
|
||||||
|
- update @serve.zone/catalog from ^2.5.0 to ^2.6.0
|
||||||
|
|
||||||
|
## 2026-03-16 - 11.2.29 - fix(deps)
|
||||||
|
bump @serve.zone/remoteingress to ^4.5.9
|
||||||
|
|
||||||
|
- Updates @serve.zone/remoteingress from ^4.5.8 to ^4.5.9 in package.json
|
||||||
|
|
||||||
|
## 2026-03-16 - 11.2.28 - fix(deps)
|
||||||
|
bump @serve.zone/remoteingress to ^4.5.8
|
||||||
|
|
||||||
|
- Updates the @serve.zone/remoteingress dependency from ^4.5.7 to ^4.5.8.
|
||||||
|
|
||||||
|
## 2026-03-16 - 11.2.27 - fix(deps)
|
||||||
|
bump smartproxy and remoteingress dependencies
|
||||||
|
|
||||||
|
- update @push.rocks/smartproxy from ^25.11.8 to ^25.11.9
|
||||||
|
- update @serve.zone/remoteingress from ^4.5.5 to ^4.5.7
|
||||||
|
|
||||||
|
## 2026-03-16 - 11.2.26 - fix(deps)
|
||||||
|
bump @serve.zone/remoteingress to ^4.5.5
|
||||||
|
|
||||||
|
- Updates the @serve.zone/remoteingress dependency from ^4.5.4 to ^4.5.5.
|
||||||
|
|
||||||
|
## 2026-03-16 - 11.2.25 - fix(deps)
|
||||||
|
bump @push.rocks/smartproxy to ^25.11.8
|
||||||
|
|
||||||
|
- updates the smartproxy dependency from ^25.11.7 to ^25.11.8
|
||||||
|
|
||||||
|
## 2026-03-16 - 11.2.24 - fix(deps)
|
||||||
|
bump @push.rocks/smartproxy to ^25.11.7
|
||||||
|
|
||||||
|
- Updates the @push.rocks/smartproxy dependency from ^25.11.6 to ^25.11.7.
|
||||||
|
|
||||||
|
## 2026-03-16 - 11.2.23 - fix(deps)
|
||||||
|
bump @push.rocks/smartproxy to ^25.11.6
|
||||||
|
|
||||||
|
- Updates the @push.rocks/smartproxy dependency from ^25.11.5 to ^25.11.6.
|
||||||
|
|
||||||
|
## 2026-03-16 - 11.2.22 - fix(deps)
|
||||||
|
bump @push.rocks/smartproxy to ^25.11.5
|
||||||
|
|
||||||
|
- updates the @push.rocks/smartproxy dependency from ^25.11.4 to ^25.11.5
|
||||||
|
|
||||||
|
## 2026-03-15 - 11.2.21 - fix(deps)
|
||||||
|
bump @push.rocks/smartproxy to ^25.11.4
|
||||||
|
|
||||||
|
- updates the @push.rocks/smartproxy dependency from ^25.11.3 to ^25.11.4
|
||||||
|
|
||||||
|
## 2026-03-15 - 11.2.20 - fix(deps)
|
||||||
|
bump @serve.zone/remoteingress to ^4.5.4
|
||||||
|
|
||||||
|
- Updates @serve.zone/remoteingress from ^4.5.3 to ^4.5.4 in package.json
|
||||||
|
|
||||||
|
## 2026-03-15 - 11.2.19 - fix(deps)
|
||||||
|
bump @serve.zone/remoteingress to ^4.5.3
|
||||||
|
|
||||||
|
- Updates the @serve.zone/remoteingress dependency from ^4.5.2 to ^4.5.3.
|
||||||
|
|
||||||
|
## 2026-03-15 - 11.2.18 - fix(deps)
|
||||||
|
bump @serve.zone/remoteingress to ^4.5.2
|
||||||
|
|
||||||
|
- Updates @serve.zone/remoteingress from ^4.5.1 to ^4.5.2 in package.json
|
||||||
|
|
||||||
|
## 2026-03-15 - 11.2.17 - fix(repo)
|
||||||
|
no changes to commit
|
||||||
|
|
||||||
|
|
||||||
|
## 2026-03-15 - 11.2.16 - fix(deps)
|
||||||
|
bump @serve.zone/remoteingress to ^4.5.1
|
||||||
|
|
||||||
|
- Updates @serve.zone/remoteingress from ^4.5.0 to ^4.5.1 in package dependencies.
|
||||||
|
|
||||||
|
## 2026-03-15 - 11.2.15 - fix(deps)
|
||||||
|
bump @serve.zone/remoteingress to ^4.5.0
|
||||||
|
|
||||||
|
- Updates the @serve.zone/remoteingress dependency from ^4.4.1 to ^4.5.0.
|
||||||
|
|
||||||
|
## 2026-03-15 - 11.2.14 - fix(deps)
|
||||||
|
bump smartproxy and remoteingress patch dependencies
|
||||||
|
|
||||||
|
- update @push.rocks/smartproxy from ^25.11.1 to ^25.11.3
|
||||||
|
- update @serve.zone/remoteingress from ^4.4.0 to ^4.4.1
|
||||||
|
|
||||||
|
## 2026-03-15 - 11.2.13 - fix(deps)
|
||||||
|
bump runtime dependencies to latest compatible patch and minor versions
|
||||||
|
|
||||||
|
- update @design.estate/dees-catalog from ^3.48.2 to ^3.48.5
|
||||||
|
- update @push.rocks/smartproxy from ^25.10.7 to ^25.11.1
|
||||||
|
- update @tsclass/tsclass from ^9.3.0 to ^9.4.0
|
||||||
|
- update lru-cache from ^11.2.6 to ^11.2.7
|
||||||
|
|
||||||
|
## 2026-03-12 - 11.2.12 - fix(deps)
|
||||||
|
bump @push.rocks/smartproxy to ^25.10.7
|
||||||
|
|
||||||
|
- Updates the @push.rocks/smartproxy dependency from ^25.10.6 to ^25.10.7 in package.json.
|
||||||
|
|
||||||
|
## 2026-03-12 - 11.2.11 - fix(deps)
|
||||||
|
bump @push.rocks/smartproxy to ^25.10.6
|
||||||
|
|
||||||
|
- Updates the @push.rocks/smartproxy dependency from ^25.10.5 to ^25.10.6 in package.json
|
||||||
|
|
||||||
|
## 2026-03-12 - 11.2.10 - fix(deps)
|
||||||
|
bump @push.rocks/smartproxy to ^25.10.5
|
||||||
|
|
||||||
|
- Updates the @push.rocks/smartproxy dependency from ^25.10.4 to ^25.10.5 in package.json.
|
||||||
|
|
||||||
|
## 2026-03-12 - 11.2.9 - fix(deps)
|
||||||
|
bump @push.rocks/smartproxy to ^25.10.4
|
||||||
|
|
||||||
|
- Updates the @push.rocks/smartproxy dependency from ^25.10.3 to ^25.10.4.
|
||||||
|
|
||||||
|
## 2026-03-12 - 11.2.8 - fix(deps)
|
||||||
|
bump @design.estate/dees-element and @push.rocks/smartproxy patch versions
|
||||||
|
|
||||||
|
- update @design.estate/dees-element from ^2.2.2 to ^2.2.3
|
||||||
|
- update @push.rocks/smartproxy from ^25.10.2 to ^25.10.3
|
||||||
|
|
||||||
|
## 2026-03-12 - 11.2.7 - fix(deps)
|
||||||
|
bump @design.estate/dees-catalog and @push.rocks/smartproxy patch versions
|
||||||
|
|
||||||
|
- update @design.estate/dees-catalog from ^3.48.1 to ^3.48.2
|
||||||
|
- update @push.rocks/smartproxy from ^25.10.1 to ^25.10.2
|
||||||
|
|
||||||
|
## 2026-03-12 - 11.2.6 - fix(deps)
|
||||||
|
bump @design.estate/dees-catalog and @push.rocks/smartproxy patch versions
|
||||||
|
|
||||||
|
- update @design.estate/dees-catalog from ^3.48.0 to ^3.48.1
|
||||||
|
- update @push.rocks/smartproxy from ^25.10.0 to ^25.10.1
|
||||||
|
|
||||||
|
## 2026-03-12 - 11.2.5 - fix(repo)
|
||||||
|
no changes to commit
|
||||||
|
|
||||||
|
|
||||||
## 2026-03-12 - 11.2.4 - fix(repo)
|
## 2026-03-12 - 11.2.4 - fix(repo)
|
||||||
no changes to commit
|
no changes to commit
|
||||||
|
|
||||||
|
|||||||
@@ -72,9 +72,14 @@
|
|||||||
"dockerRegistryRepoMap": {
|
"dockerRegistryRepoMap": {
|
||||||
"registry.gitlab.com": "code.foss.global/serve.zone/dcrouter"
|
"registry.gitlab.com": "code.foss.global/serve.zone/dcrouter"
|
||||||
},
|
},
|
||||||
"dockerBuildargEnvMap": {
|
|
||||||
"NPMCI_TOKEN_NPM2": "NPMCI_TOKEN_NPM2"
|
|
||||||
},
|
|
||||||
"npmRegistryUrl": "verdaccio.lossless.digital"
|
"npmRegistryUrl": "verdaccio.lossless.digital"
|
||||||
|
},
|
||||||
|
"@git.zone/tsdocker": {
|
||||||
|
"registries": ["code.foss.global"],
|
||||||
|
"registryRepoMap": {
|
||||||
|
"code.foss.global": "serve.zone/dcrouter",
|
||||||
|
"dockerregistry.lossless.digital": "serve.zone/dcrouter"
|
||||||
|
},
|
||||||
|
"platforms": ["linux/amd64", "linux/arm64"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
18
package.json
18
package.json
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@serve.zone/dcrouter",
|
"name": "@serve.zone/dcrouter",
|
||||||
"private": false,
|
"private": false,
|
||||||
"version": "11.2.4",
|
"version": "11.4.0",
|
||||||
"description": "A multifaceted routing service handling mail and SMS delivery functions.",
|
"description": "A multifaceted routing service handling mail and SMS delivery functions.",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"exports": {
|
"exports": {
|
||||||
@@ -16,6 +16,8 @@
|
|||||||
"start": "(node --max_old_space_size=250 ./cli.js)",
|
"start": "(node --max_old_space_size=250 ./cli.js)",
|
||||||
"startTs": "(node cli.ts.js)",
|
"startTs": "(node cli.ts.js)",
|
||||||
"build": "(tsbuild tsfolders --allowimplicitany && npm run bundle)",
|
"build": "(tsbuild tsfolders --allowimplicitany && npm run bundle)",
|
||||||
|
"build:docker": "tsdocker build --verbose",
|
||||||
|
"release:docker": "tsdocker push --verbose",
|
||||||
"bundle": "(tsbundle)",
|
"bundle": "(tsbundle)",
|
||||||
"watch": "tswatch"
|
"watch": "tswatch"
|
||||||
},
|
},
|
||||||
@@ -33,8 +35,8 @@
|
|||||||
"@api.global/typedserver": "^8.4.2",
|
"@api.global/typedserver": "^8.4.2",
|
||||||
"@api.global/typedsocket": "^4.1.2",
|
"@api.global/typedsocket": "^4.1.2",
|
||||||
"@apiclient.xyz/cloudflare": "^7.1.0",
|
"@apiclient.xyz/cloudflare": "^7.1.0",
|
||||||
"@design.estate/dees-catalog": "^3.48.0",
|
"@design.estate/dees-catalog": "^3.48.5",
|
||||||
"@design.estate/dees-element": "^2.2.2",
|
"@design.estate/dees-element": "^2.2.3",
|
||||||
"@push.rocks/lik": "^6.3.1",
|
"@push.rocks/lik": "^6.3.1",
|
||||||
"@push.rocks/projectinfo": "^5.0.2",
|
"@push.rocks/projectinfo": "^5.0.2",
|
||||||
"@push.rocks/qenv": "^6.1.3",
|
"@push.rocks/qenv": "^6.1.3",
|
||||||
@@ -51,17 +53,17 @@
|
|||||||
"@push.rocks/smartnetwork": "^4.4.0",
|
"@push.rocks/smartnetwork": "^4.4.0",
|
||||||
"@push.rocks/smartpath": "^6.0.0",
|
"@push.rocks/smartpath": "^6.0.0",
|
||||||
"@push.rocks/smartpromise": "^4.2.3",
|
"@push.rocks/smartpromise": "^4.2.3",
|
||||||
"@push.rocks/smartproxy": "^25.10.0",
|
"@push.rocks/smartproxy": "^25.11.24",
|
||||||
"@push.rocks/smartradius": "^1.1.1",
|
"@push.rocks/smartradius": "^1.1.1",
|
||||||
"@push.rocks/smartrequest": "^5.0.1",
|
"@push.rocks/smartrequest": "^5.0.1",
|
||||||
"@push.rocks/smartrx": "^3.0.10",
|
"@push.rocks/smartrx": "^3.0.10",
|
||||||
"@push.rocks/smartstate": "^2.2.0",
|
"@push.rocks/smartstate": "^2.2.0",
|
||||||
"@push.rocks/smartunique": "^3.0.9",
|
"@push.rocks/smartunique": "^3.0.9",
|
||||||
"@serve.zone/catalog": "^2.5.0",
|
"@serve.zone/catalog": "^2.7.0",
|
||||||
"@serve.zone/interfaces": "^5.3.0",
|
"@serve.zone/interfaces": "^5.3.0",
|
||||||
"@serve.zone/remoteingress": "^4.4.0",
|
"@serve.zone/remoteingress": "^4.9.0",
|
||||||
"@tsclass/tsclass": "^9.3.0",
|
"@tsclass/tsclass": "^9.4.0",
|
||||||
"lru-cache": "^11.2.6",
|
"lru-cache": "^11.2.7",
|
||||||
"uuid": "^13.0.0"
|
"uuid": "^13.0.0"
|
||||||
},
|
},
|
||||||
"keywords": [
|
"keywords": [
|
||||||
|
|||||||
1885
pnpm-lock.yaml
generated
1885
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
46
readme.md
46
readme.md
@@ -30,6 +30,7 @@ For reporting bugs, issues, or security vulnerabilities, please visit [community
|
|||||||
- [API Reference](#api-reference)
|
- [API Reference](#api-reference)
|
||||||
- [Sub-Modules](#sub-modules)
|
- [Sub-Modules](#sub-modules)
|
||||||
- [Testing](#testing)
|
- [Testing](#testing)
|
||||||
|
- [Docker / OCI Container Deployment](#docker--oci-container-deployment)
|
||||||
- [License and Legal Information](#license-and-legal-information)
|
- [License and Legal Information](#license-and-legal-information)
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
@@ -1278,6 +1279,49 @@ tstest test/test.opsserver-api.ts --verbose --timeout 60
|
|||||||
| `test.protected-endpoint.ts` | Admin auth, identity verification, public endpoints | 8 |
|
| `test.protected-endpoint.ts` | Admin auth, identity verification, public endpoints | 8 |
|
||||||
| `test.storagemanager.ts` | Memory, filesystem, custom backends, concurrency | 8 |
|
| `test.storagemanager.ts` | Memory, filesystem, custom backends, concurrency | 8 |
|
||||||
|
|
||||||
|
## Docker / OCI Container Deployment
|
||||||
|
|
||||||
|
DcRouter ships with a `Dockerfile` and supports environment-variable-driven configuration for OCI container deployments. When `DCROUTER_MODE=OCI_CONTAINER` is set, DcRouter automatically reads configuration from environment variables (and optionally from a JSON config file).
|
||||||
|
|
||||||
|
### Running with Docker
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -d \
|
||||||
|
-e DCROUTER_MODE=OCI_CONTAINER \
|
||||||
|
-e DCROUTER_TLS_EMAIL=admin@example.com \
|
||||||
|
-e DCROUTER_PUBLIC_IP=203.0.113.1 \
|
||||||
|
-e DCROUTER_DNS_NS_DOMAINS=ns1.example.com,ns2.example.com \
|
||||||
|
-e DCROUTER_DNS_SCOPES=example.com \
|
||||||
|
-p 80:80 -p 443:443 -p 25:25 -p 53:53/udp -p 3000:3000 \
|
||||||
|
code.foss.global/serve.zone/dcrouter:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
### Environment Variables
|
||||||
|
|
||||||
|
| Variable | Description | Example |
|
||||||
|
|----------|-------------|---------|
|
||||||
|
| `DCROUTER_MODE` | Set to `OCI_CONTAINER` to enable container mode | `OCI_CONTAINER` |
|
||||||
|
| `DCROUTER_CONFIG_PATH` | Path to a JSON config file (loaded as base, env vars override) | `/config/dcrouter.json` |
|
||||||
|
| `DCROUTER_BASE_DIR` | Override base data directory | `/data/dcrouter` |
|
||||||
|
| `DCROUTER_TLS_EMAIL` | ACME contact email | `admin@example.com` |
|
||||||
|
| `DCROUTER_TLS_DOMAIN` | Primary TLS domain | `example.com` |
|
||||||
|
| `DCROUTER_PUBLIC_IP` | Public IP for DNS records | `203.0.113.1` |
|
||||||
|
| `DCROUTER_PROXY_IPS` | Comma-separated ingress proxy IPs | `198.51.100.1,198.51.100.2` |
|
||||||
|
| `DCROUTER_DNS_NS_DOMAINS` | Comma-separated nameserver domains | `ns1.example.com,ns2.example.com` |
|
||||||
|
| `DCROUTER_DNS_SCOPES` | Comma-separated authoritative domains | `example.com,other.com` |
|
||||||
|
| `DCROUTER_EMAIL_HOSTNAME` | SMTP server hostname | `mail.example.com` |
|
||||||
|
| `DCROUTER_EMAIL_PORTS` | Comma-separated email ports | `25,587,465` |
|
||||||
|
| `DCROUTER_CACHE_ENABLED` | Enable/disable cache database | `true` |
|
||||||
|
|
||||||
|
### Building the Image
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pnpm run build:docker # Build the container image
|
||||||
|
pnpm run release:docker # Push to registry
|
||||||
|
```
|
||||||
|
|
||||||
|
The Docker build supports multi-platform (`linux/amd64`, `linux/arm64`) via [tsdocker](https://code.foss.global/git.zone/tsdocker).
|
||||||
|
|
||||||
## License and Legal Information
|
## License and Legal Information
|
||||||
|
|
||||||
This repository contains open-source code licensed under the MIT License. A copy of the license can be found in the [LICENSE](./LICENSE) file.
|
This repository contains open-source code licensed under the MIT License. A copy of the license can be found in the [LICENSE](./LICENSE) file.
|
||||||
@@ -1292,7 +1336,7 @@ Use of these trademarks must comply with Task Venture Capital GmbH's Trademark G
|
|||||||
|
|
||||||
### Company Information
|
### Company Information
|
||||||
|
|
||||||
Task Venture Capital GmbH
|
Task Venture Capital GmbH
|
||||||
Registered at District Court Bremen HRB 35230 HB, Germany
|
Registered at District Court Bremen HRB 35230 HB, Germany
|
||||||
|
|
||||||
For any legal inquiries or further information, please contact us via email at hello@task.vc.
|
For any legal inquiries or further information, please contact us via email at hello@task.vc.
|
||||||
|
|||||||
@@ -3,6 +3,6 @@
|
|||||||
*/
|
*/
|
||||||
export const commitinfo = {
|
export const commitinfo = {
|
||||||
name: '@serve.zone/dcrouter',
|
name: '@serve.zone/dcrouter',
|
||||||
version: '11.2.4',
|
version: '11.4.0',
|
||||||
description: 'A multifaceted routing service handling mail and SMS delivery functions.'
|
description: 'A multifaceted routing service handling mail and SMS delivery functions.'
|
||||||
}
|
}
|
||||||
|
|||||||
23
ts/index.ts
23
ts/index.ts
@@ -5,6 +5,7 @@ export { UnifiedEmailServer } from '@push.rocks/smartmta';
|
|||||||
export type { IUnifiedEmailServerOptions, IEmailRoute, IEmailDomainConfig } from '@push.rocks/smartmta';
|
export type { IUnifiedEmailServerOptions, IEmailRoute, IEmailDomainConfig } from '@push.rocks/smartmta';
|
||||||
|
|
||||||
// DcRouter
|
// DcRouter
|
||||||
|
import { DcRouter } from './classes.dcrouter.js';
|
||||||
export * from './classes.dcrouter.js';
|
export * from './classes.dcrouter.js';
|
||||||
|
|
||||||
// RADIUS module
|
// RADIUS module
|
||||||
@@ -13,4 +14,24 @@ export * from './radius/index.js';
|
|||||||
// Remote Ingress module
|
// Remote Ingress module
|
||||||
export * from './remoteingress/index.js';
|
export * from './remoteingress/index.js';
|
||||||
|
|
||||||
export const runCli = async () => {};
|
export const runCli = async () => {
|
||||||
|
let options: import('./classes.dcrouter.js').IDcRouterOptions = {};
|
||||||
|
|
||||||
|
if (process.env.DCROUTER_MODE === 'OCI_CONTAINER') {
|
||||||
|
const { getOciContainerConfig } = await import('../ts_oci_container/index.js');
|
||||||
|
options = getOciContainerConfig();
|
||||||
|
console.log('[DCRouter] Starting in OCI Container mode...');
|
||||||
|
}
|
||||||
|
|
||||||
|
const dcRouter = new DcRouter(options);
|
||||||
|
await dcRouter.start();
|
||||||
|
console.log('[DCRouter] Running. Send SIGTERM or SIGINT to stop.');
|
||||||
|
|
||||||
|
const shutdown = async () => {
|
||||||
|
console.log('[DCRouter] Shutting down...');
|
||||||
|
await dcRouter.stop();
|
||||||
|
process.exit(0);
|
||||||
|
};
|
||||||
|
process.on('SIGINT', shutdown);
|
||||||
|
process.on('SIGTERM', shutdown);
|
||||||
|
};
|
||||||
|
|||||||
@@ -271,7 +271,7 @@ Use of these trademarks must comply with Task Venture Capital GmbH's Trademark G
|
|||||||
|
|
||||||
### Company Information
|
### Company Information
|
||||||
|
|
||||||
Task Venture Capital GmbH
|
Task Venture Capital GmbH
|
||||||
Registered at District Court Bremen HRB 35230 HB, Germany
|
Registered at District Court Bremen HRB 35230 HB, Germany
|
||||||
|
|
||||||
For any legal inquiries or further information, please contact us via email at hello@task.vc.
|
For any legal inquiries or further information, please contact us via email at hello@task.vc.
|
||||||
|
|||||||
@@ -292,7 +292,7 @@ Use of these trademarks must comply with Task Venture Capital GmbH's Trademark G
|
|||||||
|
|
||||||
### Company Information
|
### Company Information
|
||||||
|
|
||||||
Task Venture Capital GmbH
|
Task Venture Capital GmbH
|
||||||
Registered at District Court Bremen HRB 35230 HB, Germany
|
Registered at District Court Bremen HRB 35230 HB, Germany
|
||||||
|
|
||||||
For any legal inquiries or further information, please contact us via email at hello@task.vc.
|
For any legal inquiries or further information, please contact us via email at hello@task.vc.
|
||||||
|
|||||||
100
ts_oci_container/index.ts
Normal file
100
ts_oci_container/index.ts
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
import * as plugins from './plugins.js';
|
||||||
|
import type { IDcRouterOptions } from '../ts/classes.dcrouter.js';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parses a comma-separated env var into a string array.
|
||||||
|
* Returns undefined if the env var is not set or empty.
|
||||||
|
*/
|
||||||
|
function parseCommaSeparated(envVar: string | undefined): string[] | undefined {
|
||||||
|
if (!envVar || envVar.trim() === '') return undefined;
|
||||||
|
return envVar.split(',').map((s) => s.trim()).filter(Boolean);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parses a comma-separated env var into a number array.
|
||||||
|
* Returns undefined if the env var is not set or empty.
|
||||||
|
*/
|
||||||
|
function parseCommaSeparatedNumbers(envVar: string | undefined): number[] | undefined {
|
||||||
|
const parts = parseCommaSeparated(envVar);
|
||||||
|
if (!parts) return undefined;
|
||||||
|
return parts.map((s) => parseInt(s, 10)).filter((n) => !isNaN(n));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds IDcRouterOptions from environment variables for OCI container mode.
|
||||||
|
*
|
||||||
|
* If DCROUTER_CONFIG_PATH is set and the file exists, it is loaded as a JSON base config.
|
||||||
|
* Individual env vars are then applied as overrides on top.
|
||||||
|
*/
|
||||||
|
export function getOciContainerConfig(): IDcRouterOptions {
|
||||||
|
let options: IDcRouterOptions = {};
|
||||||
|
|
||||||
|
// Load JSON config file if specified
|
||||||
|
const configPath = process.env.DCROUTER_CONFIG_PATH;
|
||||||
|
if (configPath && plugins.fs.existsSync(configPath)) {
|
||||||
|
const raw = plugins.fs.readFileSync(configPath, 'utf8');
|
||||||
|
options = JSON.parse(raw);
|
||||||
|
console.log(`[OCI Container] Loaded config from ${configPath}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Apply env var overrides
|
||||||
|
if (process.env.DCROUTER_BASE_DIR) {
|
||||||
|
options.baseDir = process.env.DCROUTER_BASE_DIR;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TLS config
|
||||||
|
const tlsEmail = process.env.DCROUTER_TLS_EMAIL;
|
||||||
|
const tlsDomain = process.env.DCROUTER_TLS_DOMAIN;
|
||||||
|
if (tlsEmail || tlsDomain) {
|
||||||
|
options.tls = {
|
||||||
|
...options.tls,
|
||||||
|
contactEmail: tlsEmail || options.tls?.contactEmail || '',
|
||||||
|
...(tlsDomain ? { domain: tlsDomain } : {}),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// Network config
|
||||||
|
if (process.env.DCROUTER_PUBLIC_IP) {
|
||||||
|
options.publicIp = process.env.DCROUTER_PUBLIC_IP;
|
||||||
|
}
|
||||||
|
|
||||||
|
const proxyIps = parseCommaSeparated(process.env.DCROUTER_PROXY_IPS);
|
||||||
|
if (proxyIps) {
|
||||||
|
options.proxyIps = proxyIps;
|
||||||
|
}
|
||||||
|
|
||||||
|
// DNS config
|
||||||
|
const nsDomains = parseCommaSeparated(process.env.DCROUTER_DNS_NS_DOMAINS);
|
||||||
|
if (nsDomains) {
|
||||||
|
options.dnsNsDomains = nsDomains;
|
||||||
|
}
|
||||||
|
|
||||||
|
const dnsScopes = parseCommaSeparated(process.env.DCROUTER_DNS_SCOPES);
|
||||||
|
if (dnsScopes) {
|
||||||
|
options.dnsScopes = dnsScopes;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Email config
|
||||||
|
const emailHostname = process.env.DCROUTER_EMAIL_HOSTNAME;
|
||||||
|
const emailPorts = parseCommaSeparatedNumbers(process.env.DCROUTER_EMAIL_PORTS);
|
||||||
|
if (emailHostname || emailPorts) {
|
||||||
|
options.emailConfig = {
|
||||||
|
...options.emailConfig,
|
||||||
|
...(emailHostname ? { hostname: emailHostname } : {}),
|
||||||
|
...(emailPorts ? { ports: emailPorts } : {}),
|
||||||
|
domains: options.emailConfig?.domains || [],
|
||||||
|
routes: options.emailConfig?.routes || [],
|
||||||
|
} as IDcRouterOptions['emailConfig'];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cache config
|
||||||
|
const cacheEnabled = process.env.DCROUTER_CACHE_ENABLED;
|
||||||
|
if (cacheEnabled !== undefined) {
|
||||||
|
options.cacheConfig = {
|
||||||
|
...options.cacheConfig,
|
||||||
|
enabled: cacheEnabled === 'true',
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
return options;
|
||||||
|
}
|
||||||
7
ts_oci_container/plugins.ts
Normal file
7
ts_oci_container/plugins.ts
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
import * as fs from 'fs';
|
||||||
|
import * as path from 'path';
|
||||||
|
|
||||||
|
export {
|
||||||
|
fs,
|
||||||
|
path,
|
||||||
|
};
|
||||||
@@ -3,6 +3,6 @@
|
|||||||
*/
|
*/
|
||||||
export const commitinfo = {
|
export const commitinfo = {
|
||||||
name: '@serve.zone/dcrouter',
|
name: '@serve.zone/dcrouter',
|
||||||
version: '11.2.4',
|
version: '11.4.0',
|
||||||
description: 'A multifaceted routing service handling mail and SMS delivery functions.'
|
description: 'A multifaceted routing service handling mail and SMS delivery functions.'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -249,7 +249,7 @@ Use of these trademarks must comply with Task Venture Capital GmbH's Trademark G
|
|||||||
|
|
||||||
### Company Information
|
### Company Information
|
||||||
|
|
||||||
Task Venture Capital GmbH
|
Task Venture Capital GmbH
|
||||||
Registered at District Court Bremen HRB 35230 HB, Germany
|
Registered at District Court Bremen HRB 35230 HB, Germany
|
||||||
|
|
||||||
For any legal inquiries or further information, please contact us via email at hello@task.vc.
|
For any legal inquiries or further information, please contact us via email at hello@task.vc.
|
||||||
|
|||||||
Reference in New Issue
Block a user