Compare commits

..

445 Commits

Author SHA1 Message Date
35d7a3a407 Merge pull request #3847 from NginxProxyManager/develop
v2.11.3
2024-07-01 21:37:42 +10:00
63d06da8a8 Merge branch 'master' into develop
All checks were successful
Close stale issues and PRs / stale (push) Successful in 4s
2024-07-01 16:12:21 +10:00
b5a0d74654 Bump version 2024-07-01 16:09:33 +10:00
99cce7e2b0 Fix command injection when passing bash commands into the dns provider configuration
- Use built in node functions to write the file
- And to delete the file
2024-07-01 16:08:01 +10:00
120d50e5c0 Merge pull request #3766 from kroegerama/kroegerama-patch-1
Add include for `root_top.conf` in the nginx.conf
2024-07-01 15:23:43 +10:00
5454fd61b3 Merge pull request #3781 from jinhei/patch-1
Remove spaces around Cloudflare API Credential
2024-07-01 15:22:43 +10:00
b33012705b Merge pull request #3790 from DavidLievrouw/initial_admin
Read initial admin email and password from env vars
2024-07-01 15:22:15 +10:00
e948b60194 Merge pull request #3809 from NginxProxyManager/dependabot/npm_and_yarn/backend/braces-3.0.3
Bump braces from 3.0.2 to 3.0.3 in /backend
2024-07-01 15:20:48 +10:00
7913c9a07d Merge pull request #3827 from Hadatko/feature/addWedosDns
Add wedos dns
2024-07-01 15:20:23 +10:00
d1c23b6286 Merge pull request #3833 from NginxProxyManager/dependabot/npm_and_yarn/backend/glob-parent-5.1.2
Bump glob-parent from 5.1.1 to 5.1.2 in /backend
2024-07-01 15:19:39 +10:00
c7e2946dbf Merge pull request #3837 from Allesanddro/patch-1
Update README.md
2024-07-01 15:19:28 +10:00
8936402229 Merge pull request #3843 from jay-lab/feature/fix-syntax-cause-err
Fix syntax that causes errors (generateKeys log)
2024-07-01 15:19:00 +10:00
001c77e686 Fix syntax that causes errors (generateKeys log) 2024-06-30 22:27:54 +09:00
5578e825b1 Update version
Signed-off-by: Dusan Cervenka <cervenka.dusan@gmail.com>
2024-06-29 21:30:27 +02:00
S.S
c93656a7a1 Update README.md
In 2020, the concept of a single compose specification was introduced, removing the need for versioning.
2024-06-28 20:04:31 +02:00
50aeae234f Bump glob-parent from 5.1.1 to 5.1.2 in /backend
Bumps [glob-parent](https://github.com/gulpjs/glob-parent) from 5.1.1 to 5.1.2.
- [Release notes](https://github.com/gulpjs/glob-parent/releases)
- [Changelog](https://github.com/gulpjs/glob-parent/blob/main/CHANGELOG.md)
- [Commits](https://github.com/gulpjs/glob-parent/compare/v5.1.1...v5.1.2)

---
updated-dependencies:
- dependency-name: glob-parent
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-27 18:24:09 +00:00
a5c06c1a34 Add wedos dns
Signed-off-by: Dusan Cervenka <cervenka.dusan@gmail.com>
2024-06-25 23:26:50 +02:00
51414ced3a Merge pull request #3810 from Brendon-Mendicino/change_log_format_location
All checks were successful
Close stale issues and PRs / stale (push) Successful in 4s
Changing `log_format proxy` default location
2024-06-25 10:17:04 +10:00
5e35e538af Merge pull request #3815 from alexjsp/alex/hover-dns-plugin
Add Hover.com DNS plugin
2024-06-25 10:16:03 +10:00
13fec42d1f Add Hover.com DNS plugin 2024-06-20 11:47:50 +01:00
b4560d7dde feat: changing log_format proxy default location
This is useful when some user would want to change the default
log format for each of the service, without the need of creating a
new `log_format custom` and changing the `access_log` for each
service.
2024-06-16 15:44:52 +02:00
6f9eed8a61 Bump braces from 3.0.2 to 3.0.3 in /backend
Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: braces
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-16 10:41:32 +00:00
d66e4e03e6 #3790 Attempt to make ci happy. 2024-06-03 13:44:08 +02:00
1d19c29bb0 Read initial admin email and password from env vars. 2024-06-03 13:32:23 +02:00
e20a11de4a Remove spaces around cloudflare api credential 2024-05-28 23:32:03 -04:00
d3a654b546 Fix flakey CI due to full stack network determination 2024-05-23 08:12:51 +10:00
bed387ebd4 Small fix for CI cleanup 2024-05-21 13:16:53 +10:00
6ac9a82279 Major update to cypress
- Updated cypress
- Ground work for testing DNS certs in CI
2024-05-21 12:53:07 +10:00
ef23e796ec update advanced config documentation
describe the `root_top.conf` file and add a snippet for enabling the geoip2 module
2024-05-20 10:35:36 +02:00
3754a569ba Merge pull request #3729 from clhey/custom_proxy
move advanced_config section of /app/templates/_location.conf to top of default config
2024-05-20 13:53:09 +10:00
b383f46656 Merge pull request #3764 from ransbachm/develop
Fix Cloudflare DNS Auth
2024-05-20 13:46:39 +10:00
3ce477d350 add include for root_top.conf in the nginx.conf
Allow custom configuration of the root config in the top of the file. This can be used to load modules, which is not possible at the end of the config file.
There is already a `http_top.conf`, so `root_top.conf` is a logical addition.
2024-05-19 15:53:02 +02:00
516b4d991c Pin version as requested by dep 2024-05-18 22:49:48 +02:00
12d77e3ab6 Merge pull request #3747 from NginxProxyManager/develop
Docs migration from vuepress to vitepress
2024-05-11 00:33:13 +10:00
8d80af3a26 Fix CI 2024-05-11 00:15:44 +10:00
1f45e6a5e9 Fix unescaped character in CI 2024-05-11 00:14:05 +10:00
dcb9628c36 CI improvement: move docs upload to separate build 2024-05-11 00:13:11 +10:00
029b184398 Merge branch 'master' into develop 2024-05-10 23:31:28 +10:00
2422587530 Updates to docs FAQ 2024-05-10 23:28:36 +10:00
4ee940d3dc Fix missing feature on docs homepage 2024-05-10 23:10:55 +10:00
47dddc548b Migrate from vuepress to vitepress for docs site 2024-05-10 23:00:27 +10:00
256a667e2c Merge pull request #3733 from NginxProxyManager/develop
v2.11.2
2024-05-02 09:43:20 +10:00
79cd0c5294 Merge branch 'master' into develop 2024-05-02 08:40:10 +10:00
09a03edfd7 Bump version 2024-05-02 08:21:32 +10:00
35f0fe745d Merge pull request #3569 from NginxProxyManager/dependabot/npm_and_yarn/backend/ip-2.0.1
Bump ip from 2.0.0 to 2.0.1 in /backend
2024-05-02 08:19:02 +10:00
f1e433714e Merge pull request #3571 from NginxProxyManager/dependabot/npm_and_yarn/docs/ip-2.0.1
Bump ip from 2.0.0 to 2.0.1 in /docs
2024-05-02 08:18:51 +10:00
035eaed0a4 Merge pull request #3600 from sdaqo/patch-1
Update certbot-dns-duckdns version (fix #2994)
2024-05-02 08:18:32 +10:00
4b100a384d Merge pull request #3679 from jdolderer/fix/update-certbot-dns-strato
fix: update certbot-dns-strato to latest version
2024-05-02 08:17:02 +10:00
c5c5fa0a5a Merge pull request #3691 from Fuechslein/fix/certbot-dns-infomaniak
Update certbot-dns-infomaniak
2024-05-02 08:16:45 +10:00
280bac8b43 advanced config move to top of default confg 2024-04-28 18:18:38 +08:00
02aefa50cd Merge pull request #3617 from woodmichl/fix-slow-startup
replaced chown with find -not -user -execdir chown
2024-04-19 21:00:31 +10:00
4d91cfc397 Merge pull request #3639 from wolviex/develop
Update certbot-dns-goddaddy
2024-04-19 20:59:09 +10:00
79a453f2fe Merge pull request #3642 from leinelissen/fix/certbot-dns-transip
fix: update certbot-dns-transip to latest version
2024-04-19 20:56:59 +10:00
c62c09569d Merge pull request #3643 from starsoccer/patch-1
Add DNS multi
2024-04-19 20:12:04 +10:00
09bcf4010c Merge pull request #3660 from NginxProxyManager/dependabot/npm_and_yarn/backend/express-4.19.2
Bump express from 4.17.3 to 4.19.2 in /backend
2024-04-19 20:10:35 +10:00
6aeade6c98 Merge pull request #3676 from NginxProxyManager/dependabot/npm_and_yarn/docs/vite-5.0.13
Bump vite from 5.0.12 to 5.0.13 in /docs
2024-04-19 20:10:24 +10:00
8655b7d2db Merge pull request #3697 from NginxProxyManager/dependabot/npm_and_yarn/frontend/tar-6.2.1
Bump tar from 6.1.11 to 6.2.1 in /frontend
2024-04-19 20:06:59 +10:00
2d929dffa8 Merge pull request #3698 from NginxProxyManager/dependabot/npm_and_yarn/docs/tar-6.2.1
Bump tar from 6.2.0 to 6.2.1 in /docs
2024-04-19 20:06:44 +10:00
52eaa042d8 Bump tar from 6.2.0 to 6.2.1 in /docs
Bumps [tar](https://github.com/isaacs/node-tar) from 6.2.0 to 6.2.1.
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v6.2.0...v6.2.1)

---
updated-dependencies:
- dependency-name: tar
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-11 14:00:31 +00:00
b35aa50b88 Bump tar from 6.1.11 to 6.2.1 in /frontend
Bumps [tar](https://github.com/isaacs/node-tar) from 6.1.11 to 6.2.1.
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v6.1.11...v6.2.1)

---
updated-dependencies:
- dependency-name: tar
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-10 21:18:28 +00:00
c575a706b5 Update certbot-dns-plugins.json
Latest plugin version with several fixes
2024-04-09 10:12:55 +02:00
587b97c2d3 fix: update certbot-dns-strato to latest version 2024-04-04 12:27:16 +02:00
317003beda Bump vite from 5.0.12 to 5.0.13 in /docs
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.0.12 to 5.0.13.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.0.13/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.0.13/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-03 18:36:32 +00:00
5a761236c5 Bump express from 4.17.3 to 4.19.2 in /backend
Bumps [express](https://github.com/expressjs/express) from 4.17.3 to 4.19.2.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.17.3...4.19.2)

---
updated-dependencies:
- dependency-name: express
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-28 02:21:37 +00:00
b135527347 Fix version key 2024-03-20 11:58:47 -04:00
abca9cc89c Add DNS multi
Credit to original PR #2402
2024-03-20 11:19:47 -04:00
6721923601 fix: update certbot-dns-transip to latest version 2024-03-20 11:07:29 +01:00
a88f77c1a5 Update certbot-dns-plugins.json
Pinned certbot-dns-godaddy at 2.8.0
2024-03-19 10:18:41 -07:00
a5b21d0306 replaxed chown with find -not -user ... chown
chown -R tries to chown all files. find -not -user -execdir only chowns files not owned by PUID
2024-03-10 01:55:18 +01:00
8eab8d71f2 Update duckdns version 2024-03-03 20:57:53 +01:00
d06572bb5f Bump ip from 2.0.0 to 2.0.1 in /docs
Bumps [ip](https://github.com/indutny/node-ip) from 2.0.0 to 2.0.1.
- [Commits](https://github.com/indutny/node-ip/compare/v2.0.0...v2.0.1)

---
updated-dependencies:
- dependency-name: ip
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-27 01:45:05 +00:00
d40f9e06fc Merge pull request #3479 from NginxProxyManager/dependabot/npm_and_yarn/docs/vite-5.0.12
Bump vite from 5.0.11 to 5.0.12 in /docs
2024-02-27 11:44:04 +10:00
69ec017a53 Merge pull request #3513 from setrin/websupport-fix
Updated certbot-dns-websupport plugin to 2.0.1 #3447
2024-02-27 11:43:47 +10:00
fa67f257ef Merge pull request #3526 from eltociear/patch-1
Update README.md
2024-02-27 11:43:24 +10:00
0dcd648c9d Merge pull request #3531 from hywax/develop
Add DNS Provider TimeWeb Cloud
2024-02-27 11:41:56 +10:00
c989a282e3 Merge pull request #3532 from Habbie/jwt-not-gpg
the generated keys appear to be for JWT, not GPG
2024-02-27 11:41:28 +10:00
5aff969c04 Merge pull request #3554 from bricas/develop
Add FreeDNS certbot plugin
2024-02-27 11:38:12 +10:00
bfbf7519ec Merge pull request #3560 from drachul/develop
Adding easyDNS provider.
2024-02-27 11:37:51 +10:00
bf36c7966a Merge pull request #3570 from NginxProxyManager/dependabot/npm_and_yarn/frontend/ip-2.0.1
Bump ip from 2.0.0 to 2.0.1 in /frontend
2024-02-27 11:36:18 +10:00
63cd9ba08f Merge pull request #3581 from davidindra/increase-max-domains-count
Fix: increase max number of domains to 100 (match with Let's Encrypt)
2024-02-27 11:36:04 +10:00
e3d4882c3d Merge pull request #3583 from michto01/patch-1
Update README.md to support Podman
2024-02-27 11:35:23 +10:00
3e1b73143e Merge pull request #3584 from timob/develop
Access-List fix so that nginx config is loaded after configuration happens
2024-02-27 11:34:52 +10:00
10ece3548d Fixing "the map directive is not allowed here" at the validation stage (see https://github.com/NginxProxyManager/nginx-proxy-manager/pull/3478) 2024-02-27 00:42:58 +01:00
Tim
0503a6af75 Fix so that nginx config is loaded after configuration happens
M	backend/internal/access-list.js
2024-02-26 10:04:25 +11:00
55d765e785 Update README.md to support Podman
Podman by default doesn't except the not fully qualified image urls. This commit adds the domain (docker.io) in order to resolve this issue.
2024-02-25 22:38:50 +01:00
1fb9a75a33 Fix: increase max number of domains to 100 2024-02-23 15:37:32 +01:00
9c2e838d61 Bump ip from 2.0.0 to 2.0.1 in /frontend
Bumps [ip](https://github.com/indutny/node-ip) from 2.0.0 to 2.0.1.
- [Commits](https://github.com/indutny/node-ip/compare/v2.0.0...v2.0.1)

---
updated-dependencies:
- dependency-name: ip
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-21 03:12:49 +00:00
c55e47aacf Bump ip from 2.0.0 to 2.0.1 in /backend
Bumps [ip](https://github.com/indutny/node-ip) from 2.0.0 to 2.0.1.
- [Commits](https://github.com/indutny/node-ip/compare/v2.0.0...v2.0.1)

---
updated-dependencies:
- dependency-name: ip
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-20 21:49:54 +00:00
40d81d6e44 Adding easyDNS provider. 2024-02-17 12:32:05 -08:00
1c84eaac02 Add FreeDNS certbot plugin
Info from #2352 and https://github.com/schleuss/certbot_dns_freedns
2024-02-15 23:43:53 -04:00
577954ef8c Bump version DNS Provider TimeWeb Cloud 2024-02-08 03:20:53 +05:00
f0c75641d8 the generated keys appear to be for JWT, not GPG 2024-02-07 12:44:37 +01:00
e42e2acf12 Add DNS Provider TimeWeb Cloud 2024-02-07 13:12:20 +05:00
eaa11fe460 Update README.md
a -> an
2024-02-04 18:50:50 +09:00
5b53825ccb Fixed certbot-dns-websupport plugin name 2024-01-30 22:46:05 +01:00
a94660120f Renamed certbot-dns-websupportsk plugin to certbot-dns-websupport & updatedcredentials 2024-01-30 22:17:33 +01:00
39f4836485 Updated certbot-dns-webstorm plugin to 2.0.1 2024-01-30 20:57:19 +01:00
aec30207da Merge pull request #3483 from NginxProxyManager/develop
v2.11.1
2024-01-21 21:17:30 +10:00
209c1b3334 Merge branch 'master' into develop 2024-01-21 21:16:30 +10:00
58138fbac4 Bump version 2024-01-21 21:13:03 +10:00
da820db4e1 Fix startup hang due to unresolved promise
Affects instances where there are certs but none
of them are dns validated
2024-01-21 20:48:53 +10:00
47b868bfc6 Bump vite from 5.0.11 to 5.0.12 in /docs
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.0.11 to 5.0.12.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.0.12/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.0.12/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-19 22:36:30 +00:00
89a405f60c Merge pull request #3466 from NginxProxyManager/develop
v2.11.0
2024-01-19 10:52:34 +10:00
0353051436 Prevent installing same plugin over and over 2024-01-18 16:06:09 +10:00
a3630a6286 Fix unused var 2024-01-18 15:17:27 +10:00
10d9760242 Refactor certbot plugin install for setup 2024-01-18 15:13:16 +10:00
c722eb1cea Merge branch 'master' into develop 2024-01-18 13:21:39 +10:00
0472abacd2 Remove test file 2024-01-18 13:20:03 +10:00
a2e85ceed8 Use certbot version for godaddy plugin, relates to #3165 2024-01-18 13:08:16 +10:00
cddd6fb985 certbot-dns-cloudns update 0.6.0 from PR #3459 by @existful 2024-01-18 13:01:05 +10:00
db23c9a52f Refactor certbot plugins install
- Added a script to install every single plugin, used in development and debugging
- Improved certbot plugin install commands
- Adjusted some version for plugins to install properly
- It's noted that some plugins require deps that do not match other plugins,
  however these use cases should be extremely rare
2024-01-18 12:26:55 +10:00
8646cb5a19 Allow stale action to run manually 2024-01-16 07:57:38 +10:00
fe0c04610f Add stale github action and set a wide limit 2024-01-16 07:53:02 +10:00
9f16dae2ff Merge pull request #3258 from iBobik/patch-1
Removed /etc/letsencrypt from explicit volumes
2024-01-15 09:12:44 +10:00
00264bcfb2 Mount letsencrypt folder in CI 2024-01-15 08:18:48 +10:00
834fb1a361 Add missing args to certbot command, was causing failures in rovokation 2024-01-12 17:04:55 +10:00
1be87f48c1 Merge pull request #3392 from stevecrozz/auto-renew-uses-bulitin-renew
Make auto-renew use built-in renew function
2024-01-12 12:15:37 +10:00
9c54d1b718 Provide the token model for certificate renewal 2024-01-10 20:08:36 -08:00
f7d1c490b3 Run renews sequentially 2024-01-10 20:08:36 -08:00
fe4bd9fed6 Make auto-renew use built-in renew function 2024-01-10 20:08:29 -08:00
58ef9a688e Merge pull request #3445 from tilalx/develop
Update the vuepress config.js to fix pr/3395
2024-01-10 20:43:33 +10:00
d19ebf5925 Update the config.js to fix pr/3395 2024-01-10 11:06:40 +01:00
96fc6a20bb Merge pull request #3444 from NginxProxyManager/bookworm-base
Use nginxproxymanager/nginx-full image base
2024-01-10 13:18:10 +10:00
e69684919c Use nginxproxymanager/nginx-full image base
which has been updated with bookworm, python 3.8, certbot 2.8.0 and node 20

Moved rootfs scripts as /bin is a symlink in bookworm
2024-01-10 12:59:51 +10:00
be39253a6f No need to use berry yarn for docs
as the ci image uses latest yarn
2024-01-10 09:39:25 +10:00
30772a48bd Fix jenkinsfile after messy merge - again 2024-01-10 09:29:05 +10:00
33c867895c Fix jenkinsfile after messy merge 2024-01-10 09:24:45 +10:00
a7fe687bae Fix permission recursiveness 2024-01-10 09:22:34 +10:00
4028120f55 Merge pull request #3395 from tilalx/develop
upgrade docs to vuepress v2.0.0-rc and implement dark mode
2024-01-10 09:21:10 +10:00
d1119ec63f revert change 2024-01-09 09:35:16 +01:00
4c906283df try to set the yarn version in jenkins 2024-01-09 09:35:15 +01:00
8ec0c76f51 update docs-build and add yarn.lock 2024-01-09 09:31:39 +01:00
c70f65d349 upgrade to v2.0.0-rc and implement dark mode 2024-01-09 09:27:34 +01:00
883a272b0a Bump version 2024-01-09 11:30:50 +10:00
6aee2bbcba Fix race condition with integration network 2024-01-09 10:57:47 +10:00
025fc9776b Pre-build cypress images before runnings integration tests 2024-01-09 10:32:58 +10:00
b699f05f47 Run integration tests in parallel 2024-01-09 10:25:10 +10:00
f7c87f63bd Updated CI to run some things in parallel 2024-01-09 10:05:19 +10:00
e4ef095254 Deploy develop docs in CI, updated readme 2024-01-09 08:36:32 +10:00
09d5e2c94f Merge pull request #3360 from DarioViva42/hsts-only-with-https
only add hsts header with https.
2024-01-09 08:16:01 +10:00
459b7a2223 Merge pull request #3361 from timob/improve-container-start
Improve container startup time
2024-01-09 08:15:33 +10:00
9c813bcce3 Merge pull request #3437 from Encephala/fix-logrotate-docs
Fix typo in logrotate config path
2024-01-09 07:41:36 +10:00
b8596ac01c Merge pull request #3367 from ej52/develop
chore: update Proxmox Scripts link
2024-01-09 07:40:50 +10:00
082c4e1008 Fix typo in logrotate config path 2024-01-08 16:14:27 +01:00
2273eae6ee Merge pull request #3436 from NginxProxyManager/dependabot/npm_and_yarn/docs/babel/traverse-7.23.7
Bump @babel/traverse from 7.11.0 to 7.23.7 in /docs
2024-01-08 11:16:53 +10:00
997e9d431b Merge pull request #2924 from benhubert/2153_add-support-for-dns-hurricane-electric
added support for dns.he.net certbot plugin #2153
2024-01-08 10:49:27 +10:00
b3564b6d4b Bump @babel/traverse from 7.11.0 to 7.23.7 in /docs
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.11.0 to 7.23.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.7/packages/babel-traverse)

---
updated-dependencies:
- dependency-name: "@babel/traverse"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-08 00:35:43 +00:00
4e27cdabc4 Merge pull request #3263 from NginxProxyManager/dependabot/npm_and_yarn/frontend/babel/traverse-7.23.2
Bump @babel/traverse from 7.11.0 to 7.23.2 in /frontend
2024-01-08 10:34:03 +10:00
965873adc5 Merge pull request #3377 from jlesage/http2-support-fix
Fixed issue where the HTTP2 support was always enabled in nginx config
2024-01-08 10:33:47 +10:00
5de95a8c90 Merge pull request #3382 from r3na/patch-1
fix: increasing maxOptions (amount of domains) to 30
2024-01-08 10:26:01 +10:00
fa557d8159 Merge pull request #3387 from clord/clord/update-vultr
chore: bump version of vultr certbot
2024-01-08 10:19:58 +10:00
bc8211a6a9 Merge pull request #3388 from jlesage/reachability-test-fix
Fixes for the server reachability test.
2024-01-08 10:19:27 +10:00
1c498f84ad Merge pull request #3399 from hywax/patch-1
Fix proxmox scripts link
2024-01-08 10:13:06 +10:00
ea6e9757e3 Merge pull request #3401 from JeremieA/certbot-dns-gandi-1.5.0
Update certbot-dns-plugins.js for gandi
2024-01-08 10:12:50 +10:00
1308ae42c2 Merge pull request #3408 from arussell/certbot-dns-plesk
Add support for certbot-dns-plesk
2024-01-08 10:12:24 +10:00
7be548575b Merge pull request #3422 from Encephala/logrotate-docs
Add documentation on customising logrotate config
2024-01-08 10:12:03 +10:00
c6aab8d4e6 Merge pull request #3427 from Encephala/bump-year
Update year to 2024 in footer
2024-01-08 10:10:44 +10:00
da55e93183 Update year to 2024 in footer 2024-01-03 16:48:58 +01:00
af475ab5d4 Add documentation on customising logrotate config 2023-12-30 15:23:17 +01:00
7d85463dae Add support for certbot-dns-plesk 2023-12-21 16:07:34 +00:00
13d4f98fdb Update certbot-dns-plugins.js for gandi (deprecation of Apikey in favor of personal tokens) 2023-12-20 12:19:17 +01:00
388fff84f2 Fixes for the server reachability test.
- Do not apply HTTPs redirection for challenge used by the test.
- Set the `User-Agent` to avoid 403 answer from site24x7.com.
- Handle JSON parsing failure of the received body.
- Better handling of different error cases.
2023-12-19 17:22:33 -05:00
49a765516c Fix proxmox scripts link 2023-12-19 18:37:50 +05:00
27bc8c4e33 use same formatting 2023-12-13 15:15:02 -07:00
881a067aff update to latest vultr certbot plugin
closes https://github.com/NginxProxyManager/nginx-proxy-manager/issues/3234
2023-12-13 15:11:56 -07:00
1975e4a151 fix: updating maxItems (schema/definitions) to 30 2023-12-12 12:45:35 +01:00
4704bd6a38 Merge branch 'develop' into patch-1 2023-12-12 12:38:42 +01:00
ca56e0483f fix: updating default maxOptions to 30 (dead) 2023-12-12 12:37:06 +01:00
3b8cb86d72 fix: updating default maxOptions to 30 (redirection) 2023-12-12 12:36:32 +01:00
5165de4a91 fix: updating default maxOptions to 30 (proxy) 2023-12-12 12:36:05 +01:00
1ab3575c68 fix: increasing maxOptions (amount of domains) to 30 2023-12-12 09:39:28 +01:00
ccf9cce825 Fixed issue where the HTTP2 support was always enabled in nginx config, no matter what the user configured. 2023-12-09 11:16:37 -05:00
3ad2188f78 chore: upddate Proxmox Scripts link 2023-12-04 10:31:26 +00:00
33dbffb974 Improve container startup time
See https://github.com/NginxProxyManager/nginx-proxy-manager/issues/2991

Removes uneeded file permission changes in rootfs certbot install. Tested installing custom DNS provider plugins for certbot, works correctly.
2023-12-02 14:56:48 +11:00
289e438c59 only add hsts header with https.
fixes https://github.com/NginxProxyManager/nginx-proxy-manager/issues/1005
for more information look at: https://websistent.com/add-the-hsts-header-only-for-https-requests-nginx/
2023-12-02 03:26:34 +01:00
e08a4d4490 Update mariadb example to auto upgrade from latest image 2023-11-28 08:27:11 +10:00
d1d1819677 Merge pull request #3281 from nmatton/patch-1
update docker-compose execution
2023-11-22 10:06:55 +10:00
4e0768d56c Merge pull request #3289 from NginxProxyManager/dependabot/npm_and_yarn/frontend/browserify-sign-4.2.2
Bump browserify-sign from 4.2.1 to 4.2.2 in /frontend
2023-11-22 10:06:30 +10:00
3666364418 Merge pull request #3290 from NginxProxyManager/dependabot/npm_and_yarn/docs/browserify-sign-4.2.2
Bump browserify-sign from 4.2.1 to 4.2.2 in /docs
2023-11-22 10:06:19 +10:00
9052502a17 Merge pull request #3293 from xiaoxinpro/develop
Replace the description string on the default-site page with i18n
2023-11-09 07:37:13 +10:00
b608d3392d Merge pull request #3312 from AngusC222/develop
min/max ports added for Streams
2023-11-09 07:36:05 +10:00
edb81ecce0 Fix CI branch names being incorrectly replaced 2023-11-09 07:35:24 +10:00
e24181936f min/max ports added 2023-11-08 12:09:36 +00:00
940d06cac9 Replace the 'default-site' variable 'description' with the 'i18n' configuration 2023-10-29 10:50:45 +08:00
134902d127 Add a default-site-description string 2023-10-29 10:43:57 +08:00
2df4620d05 Bump browserify-sign from 4.2.1 to 4.2.2 in /docs
Bumps [browserify-sign](https://github.com/crypto-browserify/browserify-sign) from 4.2.1 to 4.2.2.
- [Changelog](https://github.com/browserify/browserify-sign/blob/main/CHANGELOG.md)
- [Commits](https://github.com/crypto-browserify/browserify-sign/compare/v4.2.1...v4.2.2)

---
updated-dependencies:
- dependency-name: browserify-sign
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-27 13:36:54 +00:00
f41b1069ae Bump browserify-sign from 4.2.1 to 4.2.2 in /frontend
Bumps [browserify-sign](https://github.com/crypto-browserify/browserify-sign) from 4.2.1 to 4.2.2.
- [Changelog](https://github.com/browserify/browserify-sign/blob/main/CHANGELOG.md)
- [Commits](https://github.com/crypto-browserify/browserify-sign/compare/v4.2.1...v4.2.2)

---
updated-dependencies:
- dependency-name: browserify-sign
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-27 13:36:29 +00:00
004a93fbc3 update docker-compose execution
As of Jun 2023, the docker-compose command has been deprecated in favor of the compose plugin.

https://docs.docker.com/compose/install/linux/
2023-10-24 22:47:42 +02:00
2d9f04edcd Bump @babel/traverse from 7.11.0 to 7.23.2 in /frontend
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.11.0 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)

---
updated-dependencies:
- dependency-name: "@babel/traverse"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-17 03:33:12 +00:00
53dbe258a5 Fix CI compose project name not allowing dots 2023-10-17 11:57:14 +10:00
e4ba22f0f8 Removed /etc/letsencrypt from explicit volumes
So it can be moved in other images using this as a base.

Fixes #3170
2023-10-15 08:55:36 +02:00
3197de41de Merge pull request #3155 from devedse/develop
Added force renewal + --dns-duckdns-no-txt-restore
2023-10-03 18:54:02 +10:00
0f7be7987b Merge pull request #3188 from AngusC222/develop
minimum/maximum ports added on frontend
2023-10-03 18:50:37 +10:00
853c48dff6 Merge pull request #3190 from OpenSourceSimon/patch-1
Add robots noindex meta tag to prevent indexing
2023-10-03 18:49:56 +10:00
410c3484ab Merge pull request #3194 from zhzy0077/patch-1
certbot-dns-tencentcloud should be 2.0.2 or above.
2023-10-03 18:49:13 +10:00
44e9f377f9 Merge pull request #3212 from FlixMa/develop
Strato Certbot Plugin: 2FA and International Site Support
2023-10-03 18:48:42 +10:00
0f3b76f607 Merge pull request #3219 from FibreTTP/logrotate-perms
Make logrotate use the proper user and group.
2023-10-03 18:48:01 +10:00
f426e64569 Add warning comment about changing the default user name and group name 2023-09-27 16:12:33 +10:00
4867db078c Remove explicit user and group - add su directive for default user (npm). 2023-09-27 14:58:19 +10:00
6b565e628f Change perms on logrotated logs to npm user 2023-09-27 14:25:04 +10:00
881d70502b Add description for Strato 2FA and International Site Support
Tell users how to configure...
+ Two Factor authentication
+ Custom API Endpoint (mostly for international hosts like strato.es/strato.nl)
2023-09-24 19:17:53 +02:00
62e4edddf0 Update certbot-dns-plugins.js 2023-09-13 12:01:15 +08:00
4b9c02cc0c Add robots noindex meta tag to prevent indexing 2023-09-10 12:08:28 +02:00
5af834e40b mix/max ports 2023-09-09 13:44:16 +01:00
6f8db95249 Added force renewal + --dns-duckdns-no-txt-restore 2023-08-24 13:21:01 +02:00
fe93cb3474 Merge pull request #3089 from NginxProxyManager/develop
v2.10.4
2023-08-02 11:44:02 +10:00
fa851b61da Bump version 2023-07-31 07:25:09 +10:00
3333a32612 Merge pull request #2971 from wolviex/certbot-dnsplugin-user-site-fix
drop --user on pip install dns plugin
2023-07-31 07:21:18 +10:00
9a79fce498 Merge pull request #3078 from andycandy-de/patch-1
Corrected docker-compose.yml
2023-07-26 10:27:30 +10:00
b1180f5077 Corrected docker-compose.yml
The mysql folder should not be mounted to the npm container!
2023-07-25 18:00:48 +02:00
5454352fe5 Merge pull request #2929 from FlixMa/develop
Add strato.de to certbot dns plugins
2023-07-20 12:25:37 +10:00
aee93a2f6f Merge pull request #2932 from nietzscheanic/patch-1
Fix for ignored ssl_protocols and ssl_ciphers directive in conf.d/inc…
2023-07-20 12:25:09 +10:00
f38cb5b500 Merge pull request #2942 from wrouesnel/444_default_support
Add support for nginx 444 default response
2023-07-20 12:23:57 +10:00
f1b7156c89 Merge pull request #3000 from xrh0905/xrh0905-patch-sed
Fix device or resource busy when patching IPv6 settings
2023-07-20 12:17:34 +10:00
98465cf1b0 Merge pull request #3018 from NginxProxyManager/dependabot/npm_and_yarn/docs/semver-7.5.2
Bump semver from 7.3.2 to 7.5.2 in /docs
2023-07-20 12:16:11 +10:00
137e865b66 Merge pull request #3069 from lug-gh/develop
update year 2022 -> 2023 in footer
2023-07-20 12:16:01 +10:00
e740fb4064 update year 2022 -> 2023 2023-07-19 13:27:17 +02:00
f91f0ee8db Merge pull request #3044 from 6twenty/2741-suppress-s6-supervise-disk-writes
Fix #2741 - Prevent excessive disk writes by only adding frontend service when in development
2023-07-19 13:09:12 +10:00
1c9f751512 Fix path to frontend service 2023-07-19 14:05:57 +12:00
a602bdd514 Bump semver from 7.3.2 to 7.5.2 in /docs
Bumps [semver](https://github.com/npm/node-semver) from 7.3.2 to 7.5.2.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.3.2...v7.5.2)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-19 00:02:51 +00:00
f7b2be68cc Merge pull request #3048 from NginxProxyManager/dependabot/npm_and_yarn/docs/tough-cookie-4.1.3
Bump tough-cookie from 4.0.0 to 4.1.3 in /docs
2023-07-19 10:02:40 +10:00
ab4586fc6b Merge pull request #3049 from deftdawg/patch-1
Add bunny.net DNS to DNS challenges
2023-07-19 10:02:29 +10:00
a984a68065 Merge pull request #3051 from NginxProxyManager/dependabot/npm_and_yarn/backend/semver-5.7.2
Bump semver from 5.7.1 to 5.7.2 in /backend
2023-07-19 10:02:04 +10:00
52875fca6e Merge pull request #3053 from NginxProxyManager/dependabot/npm_and_yarn/test/semver-7.5.4
Bump semver from 7.3.2 to 7.5.4 in /test
2023-07-19 10:01:55 +10:00
63b50fcd95 Merge pull request #3054 from NginxProxyManager/dependabot/npm_and_yarn/frontend/semver-5.7.2
Bump semver from 5.7.1 to 5.7.2 in /frontend
2023-07-19 10:01:47 +10:00
5ab4aea03f Merge pull request #3065 from NginxProxyManager/dependabot/npm_and_yarn/test/word-wrap-1.2.4
Bump word-wrap from 1.2.3 to 1.2.4 in /test
2023-07-19 10:01:40 +10:00
d73135378e Merge pull request #3066 from NginxProxyManager/dependabot/npm_and_yarn/backend/word-wrap-1.2.4
Bump word-wrap from 1.2.3 to 1.2.4 in /backend
2023-07-19 10:01:30 +10:00
e19d685cb6 Merge pull request #3067 from NginxProxyManager/dependabot/npm_and_yarn/frontend/word-wrap-1.2.4
Bump word-wrap from 1.2.3 to 1.2.4 in /frontend
2023-07-19 10:01:20 +10:00
c8caaa56d9 Bump word-wrap from 1.2.3 to 1.2.4 in /backend
Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.4.
- [Release notes](https://github.com/jonschlinkert/word-wrap/releases)
- [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.4)

---
updated-dependencies:
- dependency-name: word-wrap
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-18 20:59:11 +00:00
11a98f4c12 Bump word-wrap from 1.2.3 to 1.2.4 in /frontend
Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.4.
- [Release notes](https://github.com/jonschlinkert/word-wrap/releases)
- [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.4)

---
updated-dependencies:
- dependency-name: word-wrap
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-18 20:59:11 +00:00
4a85d4ac4e Bump word-wrap from 1.2.3 to 1.2.4 in /test
Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.4.
- [Release notes](https://github.com/jonschlinkert/word-wrap/releases)
- [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.4)

---
updated-dependencies:
- dependency-name: word-wrap
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-18 20:59:08 +00:00
3138ba46ce Bump semver from 5.7.1 to 5.7.2 in /frontend
Bumps [semver](https://github.com/npm/node-semver) from 5.7.1 to 5.7.2.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/v5.7.2/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v5.7.1...v5.7.2)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-12 05:37:17 +00:00
cdd0b2e6d3 Bump semver from 7.3.2 to 7.5.4 in /test
Bumps [semver](https://github.com/npm/node-semver) from 7.3.2 to 7.5.4.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.3.2...v7.5.4)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-12 02:34:02 +00:00
f458730d87 Bump semver from 5.7.1 to 5.7.2 in /backend
Bumps [semver](https://github.com/npm/node-semver) from 5.7.1 to 5.7.2.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/v5.7.2/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v5.7.1...v5.7.2)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-11 02:29:25 +00:00
d20873dcbb Add bunny.net DNS to DNS challenges
- Add support for bunny.net DNS challenges using @mwt's certbot-dns-bunny plugin.
2023-07-08 22:48:54 -04:00
d1e9407e4d Bump tough-cookie from 4.0.0 to 4.1.3 in /docs
Bumps [tough-cookie](https://github.com/salesforce/tough-cookie) from 4.0.0 to 4.1.3.
- [Release notes](https://github.com/salesforce/tough-cookie/releases)
- [Changelog](https://github.com/salesforce/tough-cookie/blob/master/CHANGELOG.md)
- [Commits](https://github.com/salesforce/tough-cookie/compare/v4.0.0...v4.1.3)

---
updated-dependencies:
- dependency-name: tough-cookie
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-08 14:17:45 +00:00
63ee69f432 Fix device or resource busy when patching IPv6 settings 2023-06-15 11:17:02 +08:00
f39e527680 drop --user on pip install dns plugin godaddy
Do not install dns_plugin into the user site because it will lack sys.path precedence to urllib3 in /opt/certbot/lib/python3.7/site-packages
2023-06-01 11:02:06 -07:00
2dd4434ceb Add support for nginx 444 default response
The default nginx 444 response drops the inbound connection without
sending any response to the client.
2023-05-22 11:59:50 +10:00
81054631f9 Fix for ignored ssl_protocols and ssl_ciphers directive in conf.d/include/ssl-ciphers.conf
nginx only uses the `ssl_protocols` directive in the `server{}` block of the first processed host config, which is the default config in `/etc/nginx/conf.d/default.conf`. in version `v2.9.20` the default ssl site was dropped by using `ssl_reject_handshake on` in the default host config. but beside the include of `conf.d/include/ssl-ciphers.conf` was removed from the default host config. that's why `tlsv1.3` isn't applied by default anymore, same thing with the defined cipher suites. npm is so broken since `2023-03-16`.

commit that broke the config -> a7f0c3b730
2023-05-19 14:13:29 +02:00
53d61bd626 Try to fix linter error in certbot plugin definitions. 2023-05-18 14:14:38 +02:00
847e879b3f Update certbot-dns-plugins.js
Add dns wildcard certificate support for strato.de using the provided certbot plugin
2023-05-18 13:44:52 +02:00
4c59400731 added support for dns.he.net certbot plugin #2153 2023-05-16 22:38:43 +02:00
824c837a38 Merge pull request #2906 from NginxProxyManager/develop
Fix certbot plugins install when using PUID/PGID
2023-05-10 14:40:15 +10:00
2a06384a4a Merge branch 'master' into develop 2023-05-10 14:40:06 +10:00
05307aa253 Fix certbot plugins install when using PUID/PGID 2023-05-10 14:39:08 +10:00
3d2406ac3d Merge pull request #2905 from NginxProxyManager/develop
v2.10.3
2023-05-10 14:09:04 +10:00
0127dc7f03 Bump version 2023-05-10 11:32:22 +10:00
4349d42636 Merge pull request #2904 from NginxProxyManager/s6-verbose
Fixes for s6 timeout at startup
2023-05-10 11:31:17 +10:00
4b6f9d9419 Remove s6 service timeout 2023-05-10 09:57:24 +10:00
c3f019c911 Test ipv6 disabled in ci 2023-05-09 08:19:09 +10:00
ecf0290203 Update s6-overlay 2023-05-09 08:15:44 +10:00
4f41fe0c95 Update s6-overlay 2023-05-05 08:46:54 +10:00
c3735fdbbb Missed a file that was explicit verbose 2023-05-04 12:30:27 +10:00
c432c34fb3 Small refactor of user/groups and add checks during startup. Only use -x in bash scripts when DEBUG=true set in env vars 2023-05-04 10:03:06 +10:00
a1245bc161 Split up ownership to indentify point of failure 2023-05-04 08:27:38 +10:00
db4ab1d548 Verbose debugging of s6 scripts 2023-05-03 16:01:27 +10:00
86ddd9c83c Merge pull request #2784 from NginxProxyManager/develop
v2.10.2
2023-03-31 09:37:08 +10:00
67208e43cc Merge branch 'master' into develop 2023-03-31 08:27:00 +10:00
ddf80302c6 Bump version 2023-03-31 08:25:45 +10:00
5f2576946d Merge pull request #2783 from NginxProxyManager/uidgid
Make PUID and PGID optional
2023-03-31 08:25:07 +10:00
9fe07fa6c3 Update documentation 2023-03-30 15:37:59 +10:00
d9b9af543e Fix text replacement whoops 2023-03-30 15:03:57 +10:00
eb2e2e0478 Throw in a docker restart during testing phase 2023-03-30 14:44:15 +10:00
9225d5d442 Tweak test 2023-03-30 13:00:22 +10:00
308a7149ed Tweak test 2023-03-30 12:55:20 +10:00
8a4a7d0caf Allow 201 as success in test result 2023-03-30 12:51:26 +10:00
5d03ede100 Add test for creating a host 2023-03-30 12:44:28 +10:00
4a86bb42cc Different approach, always create npmuser
even if the user id is zero, and then we'll always use it
2023-03-30 11:19:16 +10:00
dad8561ea1 Use numbers for permissions in case npmuser doesn't exist 2023-03-30 10:20:20 +10:00
56a92e5c0e Run as root by default
Optionally run as another user/group only if
the env vars are specified. Should give flexibility
to those who need to run processes as root and open ports
without having to request additional priveleges
2023-03-30 09:04:37 +10:00
9d672f5813 Own this nginx folder too 2023-03-29 14:04:48 +10:00
d5ed70dbb6 Own this nginx folder too 2023-03-29 14:03:58 +10:00
c197e66d62 Merge pull request #2764 from NginxProxyManager/develop
v2.10.1
2023-03-29 08:54:30 +10:00
91cf3c8873 Tweaks to docker compose ci after updates 2023-03-29 08:24:28 +10:00
7f5e0414ac Bump version 2023-03-29 07:22:15 +10:00
d179887c15 Another fix for #2734, only chown parts of /etc/nginx 2023-03-28 10:39:26 +10:00
35abb4d7ae Execute permissions missing on script 2023-03-28 09:33:30 +10:00
61b290e220 Chown each folder on separately
Really not sure why this fixes #2734 however it does actually
help the ownership script succeed specifically on arm7/raspbian
2023-03-28 08:50:10 +10:00
e1bcef6e5c Merge pull request #2749 from NginxProxyManager/develop
v2.10.0
2023-03-27 12:17:07 +10:00
81f51f9e2d Merge branch 'master' into develop 2023-03-27 08:29:08 +10:00
661953db25 Bump version 2023-03-27 08:26:42 +10:00
065c2dac42 Merge pull request #2721 from NginxProxyManager/docker-user-group
Docker users and groups, refactor configuration
2023-03-27 08:19:57 +10:00
2926844cbe Merge pull request #2738 from NginxProxyManager/develop
v2.9.22
2023-03-24 08:48:45 +10:00
c1960f3793 Merge branch 'master' into develop 2023-03-24 08:19:54 +10:00
11a29a8b67 Bump version 2023-03-24 08:15:27 +10:00
c40e48e678 Fix docker restart because user already exists 2023-03-23 10:21:34 +10:00
124cb18e17 Fix renewing certs because of permission errors 2023-03-22 13:40:36 +10:00
5ac9dc0758 Attempt to set HOME for npmuser backend 2023-03-22 13:00:26 +10:00
9a799d51ce Optimize docker image a bit 2023-03-22 09:42:16 +10:00
77eb618758 Fix pip installs running as non-root user 2023-03-22 09:41:59 +10:00
79fedfcea4 Use consistent docker-compose file version in docs 2023-03-22 09:41:19 +10:00
8fdb8ac853 Update docs 2023-03-21 18:26:28 +10:00
4fdc80be01 Fix logical error with keys and mysql config 2023-03-21 17:59:27 +10:00
f8e6c8d018 Fix mistake with debug output 2023-03-21 17:49:39 +10:00
c3469de61b Linting fixes 2023-03-21 17:11:16 +10:00
ea61b15a40 don't zip log files anymore 2023-03-21 16:59:36 +10:00
60175e6d8c Updates for ci stack 2023-03-21 16:56:45 +10:00
2a07445005 Refactor configuration
- No longer use config npm package
- Prefer config from env vars, though still has support for config file
- No longer writes a config file for database config
- Writes keys to a new file in /data folder
- Removes a lot of cruft and improves config understanding
2023-03-21 16:53:39 +10:00
dad3e1da7c Adds support to run processes as a user/group, defined
with PUID and PGID environment variables

- Detects if image is run with a user in docker command and fails if so
- Adds s6 prepare scripts for adding a 'npmuser'
- Split up and refactor the s6 prepare scripts
- Runs nginx and backend node as 'npmuser'
- Changes ownership of files required at startup
2023-03-20 16:56:52 +10:00
82d9452001 Move some older s6-overlay over to new format, fixes #2705 2023-03-18 17:45:31 +10:00
095bc8f676 Merge pull request #2703 from NginxProxyManager/develop
v2.9.21
2023-03-18 16:10:27 +10:00
8c15340b83 Merge branch 'master' into develop 2023-03-18 14:20:42 +10:00
a13f7c3792 Merge pull request #2702 from dormancygrace/patch-3
update reg.ru template
2023-03-18 14:17:41 +10:00
6748985669 bump version 2023-03-18 14:15:37 +10:00
e2957f070b update reg.ru template
this small fix make it work again with certbot >=2.1.0
2023-03-18 03:37:23 +02:00
fccbde1371 fix linting 2023-03-17 14:23:12 +10:00
fec36834f7 - Updated objection, knex, liquidjs, signale and sqlite3 packages
- Changes for objection migration
- Moved common access template code to an include
- Fixed access rules configuration generation
2023-03-17 14:18:51 +10:00
00aeef75b6 Refactor nginx config functions, some don't need to report errors, save error'd config files as .err for debugging later 2023-03-17 11:34:27 +10:00
5b7682f13c Update s6-overlay and move processes to new format 2023-03-17 08:50:32 +10:00
b30fcb50c8 Args weren't being passed to htpasswd command, fixes #2692 2023-03-17 08:49:18 +10:00
100c56ad10 Merge pull request #2686 from NginxProxyManager/develop
v2.9.20
2023-03-16 09:42:28 +10:00
44bebf366a Bump version 2023-03-16 08:55:16 +10:00
6a28701242 Moved base images docker repo back to jc21, as docker is sunsetting free teams and this open source project isn't prepared to pay 300 shmackaroos for a nicer image url 2023-03-15 16:03:00 +10:00
09d1d3744c Merge pull request #2530 from jmerdich/jmerdich/fix-acl-edit-ssl 2023-03-08 21:08:52 +10:00
84e0b30f8d Merge pull request #2411 from plantysnake/fix-certbot-plugins
Bugfix: Fix certbot plugin installation issues
2023-03-08 20:40:15 +10:00
546ce8d4bc Merge pull request #2444 from BitsOfAByte/develop
Load events configuration from custom file
2023-03-08 16:32:46 +10:00
9b40bb288d Improvements to CI: comment on PR when syntax checking fails 2023-03-08 16:22:07 +10:00
c812b674b6 Update cypress 2023-03-08 09:20:15 +10:00
86e63197f6 Merge pull request #2507 from LEDfan/update-desec
Update certbot desec plugin fixes #2485
2023-03-08 08:43:44 +10:00
c371b2e953 Merge pull request #2527 from gromez/certbot-dns-online
Add Online (online.net) DNS provider
2023-03-08 08:39:46 +10:00
2142e25029 Merge pull request #2582 from TheBeeZee/ssl_reject_handshake
Use ssl_reject_handshake to reject requests to default https site
2023-03-08 08:30:02 +10:00
30076a0e66 Merge pull request #2635 from skarlcf/security/CVE-2023-23596
Mitigate CVE-2023-23596
2023-03-08 08:25:38 +10:00
42bd39163a Merge pull request #2638 from jlesage/case-insensitive-email-login
Make sure to lowercase email address entered by the user during login.
2023-03-08 08:25:09 +10:00
cc4891d9ec Merge pull request #2647 from ttocsr/google_domains_dns
Add Google Domains DNS provider
2023-03-08 08:20:07 +10:00
40c26839f5 Merge pull request #2655 from campingwoelfe/campingwoelfe-patch-1
Update certbot-dns-ionos plugin
2023-03-08 08:19:38 +10:00
2ff66ee238 Add style required by linter 2023-03-07 17:15:03 +01:00
9d60b4a756 Add Google Domains DNS provider
Add DNS provider for Google Domains DNS.

dns_google_domains_access_token = abcdef
dns_google_domains_zone = "example.com"
2023-03-07 07:01:50 -07:00
d2becc0681 Merge pull request #2469 from NginxProxyManager/dependabot/npm_and_yarn/frontend/qs-6.5.3
Bump qs from 6.5.2 to 6.5.3 in /frontend
2023-03-07 22:36:15 +10:00
579c32a724 Bump qs from 6.5.2 to 6.5.3 in /frontend
Bumps [qs](https://github.com/ljharb/qs) from 6.5.2 to 6.5.3.
- [Release notes](https://github.com/ljharb/qs/releases)
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/qs/compare/v6.5.2...v6.5.3)

---
updated-dependencies:
- dependency-name: qs
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-07 11:41:12 +00:00
b08ef17894 Merge pull request #2453 from NginxProxyManager/dependabot/npm_and_yarn/frontend/decode-uri-component-0.2.2
Bump decode-uri-component from 0.2.0 to 0.2.2 in /frontend
2023-03-07 21:40:54 +10:00
589ab8757e Merge pull request #1933 from NginxProxyManager/dependabot/npm_and_yarn/docs/postcss-8.2.13
Bump postcss from 8.2.10 to 8.2.13 in /docs
2023-03-07 21:40:39 +10:00
abdaac8584 Merge pull request #2470 from NginxProxyManager/dependabot/npm_and_yarn/backend/express-4.17.3
Bump express from 4.17.1 to 4.17.3 in /backend
2023-03-07 21:40:20 +10:00
d5c950a231 Merge pull request #2659 from NginxProxyManager/dependabot/npm_and_yarn/docs/qs-6.10.3
Bump qs from 6.9.7 to 6.10.3 in /docs
2023-03-07 21:40:09 +10:00
d9a1701927 Bump qs from 6.9.7 to 6.10.3 in /docs
Bumps [qs](https://github.com/ljharb/qs) from 6.9.7 to 6.10.3.
- [Release notes](https://github.com/ljharb/qs/releases)
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/qs/compare/v6.9.7...v6.10.3)

---
updated-dependencies:
- dependency-name: qs
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-07 10:51:49 +00:00
6e500c35dc Merge pull request #1958 from NginxProxyManager/dependabot/npm_and_yarn/docs/minimist-1.2.6
Bump minimist from 1.2.5 to 1.2.6 in /docs
2023-03-07 20:51:45 +10:00
a06e96061f Merge pull request #1947 from NginxProxyManager/dependabot/npm_and_yarn/docs/node-forge-1.3.0
Bump node-forge from 1.0.0 to 1.3.0 in /docs
2023-03-07 20:51:32 +10:00
f0513d34f9 Merge pull request #1851 from NginxProxyManager/dependabot/npm_and_yarn/test/ajv-6.12.6
Bump ajv from 6.10.2 to 6.12.6 in /test
2023-03-07 20:50:56 +10:00
09349efbbe Merge pull request #1934 from NginxProxyManager/dependabot/npm_and_yarn/docs/ansi-html-0.0.8
Bump ansi-html from 0.0.7 to 0.0.8 in /docs
2023-03-07 20:50:38 +10:00
06453e9668 Bump decode-uri-component from 0.2.0 to 0.2.2 in /frontend
Bumps [decode-uri-component](https://github.com/SamVerschueren/decode-uri-component) from 0.2.0 to 0.2.2.
- [Release notes](https://github.com/SamVerschueren/decode-uri-component/releases)
- [Commits](https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.2)

---
updated-dependencies:
- dependency-name: decode-uri-component
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-07 10:50:16 +00:00
b1e904df84 Merge pull request #2031 from NginxProxyManager/dependabot/npm_and_yarn/docs/async-3.2.2
Bump async from 3.2.0 to 3.2.2 in /docs
2023-03-07 20:50:16 +10:00
5f435b6325 Merge pull request #2454 from NginxProxyManager/dependabot/npm_and_yarn/docs/decode-uri-component-0.2.1
Bump decode-uri-component from 0.2.0 to 0.2.1 in /docs
2023-03-07 20:49:48 +10:00
7b48488c29 Bump express from 4.17.1 to 4.17.3 in /backend
Bumps [express](https://github.com/expressjs/express) from 4.17.1 to 4.17.3.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.17.1...4.17.3)

---
updated-dependencies:
- dependency-name: express
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-07 10:49:22 +00:00
3f6ad0d807 Merge pull request #2471 from NginxProxyManager/dependabot/npm_and_yarn/docs/express-4.17.3
Bump express from 4.17.1 to 4.17.3 in /docs
2023-03-07 20:48:55 +10:00
edba369ae8 Merge pull request #2497 from NginxProxyManager/dependabot/npm_and_yarn/backend/jsonwebtoken-9.0.0
Bump jsonwebtoken from 8.5.1 to 9.0.0 in /backend
2023-03-07 20:48:45 +10:00
b77d916bdd Merge pull request #2498 from NginxProxyManager/dependabot/npm_and_yarn/backend/liquidjs-10.0.0
Bump liquidjs from 9.15.0 to 10.0.0 in /backend
2023-03-07 20:48:36 +10:00
2706454635 Bump minimist from 1.2.5 to 1.2.6 in /docs
Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-07 09:23:06 +00:00
32a3bb1d6d Bump ajv from 6.10.2 to 6.12.6 in /test
Bumps [ajv](https://github.com/ajv-validator/ajv) from 6.10.2 to 6.12.6.
- [Release notes](https://github.com/ajv-validator/ajv/releases)
- [Commits](https://github.com/ajv-validator/ajv/compare/v6.10.2...v6.12.6)

---
updated-dependencies:
- dependency-name: ajv
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-07 09:22:54 +00:00
95665ca378 Merge pull request #2513 from NginxProxyManager/dependabot/npm_and_yarn/docs/json5-2.2.2
Bump json5 from 2.1.3 to 2.2.2 in /docs
2023-03-07 19:22:26 +10:00
09d6cf7c48 Merge pull request #2648 from NginxProxyManager/dependabot/npm_and_yarn/backend/minimist-1.2.8
Bump minimist from 1.2.5 to 1.2.8 in /backend
2023-03-07 19:22:17 +10:00
2addc48a9b Merge pull request #2649 from NginxProxyManager/dependabot/npm_and_yarn/frontend/minimist-1.2.8
Bump minimist from 1.2.5 to 1.2.8 in /frontend
2023-03-07 19:22:07 +10:00
ebf07a7912 Bump json5 from 2.1.3 to 2.2.2 in /docs
Bumps [json5](https://github.com/json5/json5) from 2.1.3 to 2.2.2.
- [Release notes](https://github.com/json5/json5/releases)
- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md)
- [Commits](https://github.com/json5/json5/compare/v2.1.3...v2.2.2)

---
updated-dependencies:
- dependency-name: json5
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-07 06:52:21 +00:00
abe6493244 Bump express from 4.17.1 to 4.17.3 in /docs
Bumps [express](https://github.com/expressjs/express) from 4.17.1 to 4.17.3.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.17.1...4.17.3)

---
updated-dependencies:
- dependency-name: express
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-07 06:51:40 +00:00
9f192ab275 Bump decode-uri-component from 0.2.0 to 0.2.1 in /docs
Bumps [decode-uri-component](https://github.com/SamVerschueren/decode-uri-component) from 0.2.0 to 0.2.1.
- [Release notes](https://github.com/SamVerschueren/decode-uri-component/releases)
- [Commits](https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.1)

---
updated-dependencies:
- dependency-name: decode-uri-component
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-07 06:51:33 +00:00
52e013d289 Merge pull request #2410 from NginxProxyManager/dependabot/npm_and_yarn/docs/loader-utils-2.0.4
Bump loader-utils from 2.0.3 to 2.0.4 in /docs
2023-03-07 16:51:30 +10:00
331da3841e Bump minimist from 1.2.5 to 1.2.8 in /frontend
Bumps [minimist](https://github.com/minimistjs/minimist) from 1.2.5 to 1.2.8.
- [Release notes](https://github.com/minimistjs/minimist/releases)
- [Changelog](https://github.com/minimistjs/minimist/blob/main/CHANGELOG.md)
- [Commits](https://github.com/minimistjs/minimist/compare/v1.2.5...v1.2.8)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-07 06:51:11 +00:00
e227f4177b Bump minimist from 1.2.5 to 1.2.8 in /backend
Bumps [minimist](https://github.com/minimistjs/minimist) from 1.2.5 to 1.2.8.
- [Release notes](https://github.com/minimistjs/minimist/releases)
- [Changelog](https://github.com/minimistjs/minimist/blob/main/CHANGELOG.md)
- [Commits](https://github.com/minimistjs/minimist/compare/v1.2.5...v1.2.8)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-07 06:51:09 +00:00
88fa7cdfff Bump liquidjs from 9.15.0 to 10.0.0 in /backend
Bumps [liquidjs](https://github.com/harttle/liquidjs) from 9.15.0 to 10.0.0.
- [Release notes](https://github.com/harttle/liquidjs/releases)
- [Changelog](https://github.com/harttle/liquidjs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/harttle/liquidjs/compare/v9.15.0...v10.0.0)

---
updated-dependencies:
- dependency-name: liquidjs
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-07 06:51:08 +00:00
f3b3072711 Bump async from 3.2.0 to 3.2.2 in /docs
Bumps [async](https://github.com/caolan/async) from 3.2.0 to 3.2.2.
- [Release notes](https://github.com/caolan/async/releases)
- [Changelog](https://github.com/caolan/async/blob/master/CHANGELOG.md)
- [Commits](https://github.com/caolan/async/compare/v3.2.0...v3.2.2)

---
updated-dependencies:
- dependency-name: async
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-07 06:51:02 +00:00
cf6cc7dcc5 Bump jsonwebtoken from 8.5.1 to 9.0.0 in /backend
Bumps [jsonwebtoken](https://github.com/auth0/node-jsonwebtoken) from 8.5.1 to 9.0.0.
- [Release notes](https://github.com/auth0/node-jsonwebtoken/releases)
- [Changelog](https://github.com/auth0/node-jsonwebtoken/blob/master/CHANGELOG.md)
- [Commits](https://github.com/auth0/node-jsonwebtoken/compare/v8.5.1...v9.0.0)

---
updated-dependencies:
- dependency-name: jsonwebtoken
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-07 06:50:55 +00:00
448c8a2dd5 Merge pull request #2523 from NginxProxyManager/dependabot/npm_and_yarn/backend/json5-2.2.3
Bump json5 from 2.1.3 to 2.2.3 in /backend
2023-03-07 16:50:37 +10:00
634cfe13f1 Merge pull request #2534 from NginxProxyManager/dependabot/npm_and_yarn/backend/knex-2.4.0
Bump knex from 0.20.15 to 2.4.0 in /backend
2023-03-07 16:50:30 +10:00
7597515c20 Merge pull request #2564 from NginxProxyManager/dependabot/npm_and_yarn/frontend/ua-parser-js-0.7.33
Bump ua-parser-js from 0.7.28 to 0.7.33 in /frontend
2023-03-07 16:50:18 +10:00
93f57aece5 Merge pull request #2583 from NginxProxyManager/dependabot/npm_and_yarn/docs/http-cache-semantics-4.1.1
Bump http-cache-semantics from 4.1.0 to 4.1.1 in /docs
2023-03-07 16:49:58 +10:00
ef6da1bbe1 Merge pull request #2584 from NginxProxyManager/dependabot/npm_and_yarn/backend/http-cache-semantics-4.1.1
Bump http-cache-semantics from 4.1.0 to 4.1.1 in /backend
2023-03-07 16:49:50 +10:00
4ad9e68886 Merge pull request #2585 from NginxProxyManager/dependabot/npm_and_yarn/frontend/http-cache-semantics-4.1.1
Bump http-cache-semantics from 4.1.0 to 4.1.1 in /frontend
2023-03-07 16:49:44 +10:00
9b35e7c188 Merge pull request #2644 from NginxProxyManager/dependabot/npm_and_yarn/docs/dns-packet-5.4.0
Bump dns-packet from 5.2.2 to 5.4.0 in /docs
2023-03-07 16:49:28 +10:00
2aa6e55d6b Update certbot-dns-ionos plugin 2023-03-06 15:31:39 +01:00
1ac28410ff Bump dns-packet from 5.2.2 to 5.4.0 in /docs
Bumps [dns-packet](https://github.com/mafintosh/dns-packet) from 5.2.2 to 5.4.0.
- [Release notes](https://github.com/mafintosh/dns-packet/releases)
- [Changelog](https://github.com/mafintosh/dns-packet/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mafintosh/dns-packet/compare/v5.2.2...5.4.0)

---
updated-dependencies:
- dependency-name: dns-packet
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-02 21:13:16 +00:00
b0fd976b97 Make sure to lowercase email address entered by the user during login. 2023-02-26 22:24:58 -05:00
7fe7e94fbd Mitigate CVE-2023-23596 by changing child_process.exec to child_process.execFile 2023-02-26 20:10:25 +01:00
8864960eb4 Bump http-cache-semantics from 4.1.0 to 4.1.1 in /frontend
Bumps [http-cache-semantics](https://github.com/kornelski/http-cache-semantics) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/kornelski/http-cache-semantics/releases)
- [Commits](https://github.com/kornelski/http-cache-semantics/compare/v4.1.0...v4.1.1)

---
updated-dependencies:
- dependency-name: http-cache-semantics
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-03 12:12:27 +00:00
23326895b2 Bump http-cache-semantics from 4.1.0 to 4.1.1 in /backend
Bumps [http-cache-semantics](https://github.com/kornelski/http-cache-semantics) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/kornelski/http-cache-semantics/releases)
- [Commits](https://github.com/kornelski/http-cache-semantics/compare/v4.1.0...v4.1.1)

---
updated-dependencies:
- dependency-name: http-cache-semantics
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-03 12:12:01 +00:00
d2f707b76d Bump http-cache-semantics from 4.1.0 to 4.1.1 in /docs
Bumps [http-cache-semantics](https://github.com/kornelski/http-cache-semantics) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/kornelski/http-cache-semantics/releases)
- [Commits](https://github.com/kornelski/http-cache-semantics/compare/v4.1.0...v4.1.1)

---
updated-dependencies:
- dependency-name: http-cache-semantics
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-03 05:19:25 +00:00
a7f0c3b730 Use ssl_reject_handshake to reject requests to default https site
Instead of creating a dummy certificate, we can return an SSL protocol error, which will generate a descriptive error message in the browser.
2023-02-02 19:19:37 -08:00
a9e84f1750 Bump ua-parser-js from 0.7.28 to 0.7.33 in /frontend
Bumps [ua-parser-js](https://github.com/faisalman/ua-parser-js) from 0.7.28 to 0.7.33.
- [Release notes](https://github.com/faisalman/ua-parser-js/releases)
- [Changelog](https://github.com/faisalman/ua-parser-js/blob/master/changelog.md)
- [Commits](https://github.com/faisalman/ua-parser-js/compare/0.7.28...0.7.33)

---
updated-dependencies:
- dependency-name: ua-parser-js
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-27 04:36:34 +00:00
7ca3a9e7a6 Bump knex from 0.20.15 to 2.4.0 in /backend
Bumps [knex](https://github.com/knex/knex) from 0.20.15 to 2.4.0.
- [Release notes](https://github.com/knex/knex/releases)
- [Changelog](https://github.com/knex/knex/blob/master/CHANGELOG.md)
- [Commits](https://github.com/knex/knex/compare/0.20.15...2.4.0)

---
updated-dependencies:
- dependency-name: knex
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-11 02:35:51 +00:00
c80d099193 ACL changes should not blow away cert config
When editing an access list, all affected sites get their config updated without certificates, functionally breaking https on those sites until they get a manual config change that rewrites the config properly. Properly fetch the certificate from the DB before `bulkGenerateConfigs` so it gets updated right.

I am not certain whether there are similar bugs in other places that use `bulkGenerateConfigs`.

Should fix #2254
2023-01-10 01:59:04 -05:00
35aba13122 Add Online (online.net) DNS provider 2023-01-09 09:19:08 +01:00
b69e493c54 Bump json5 from 2.1.3 to 2.2.3 in /backend
Bumps [json5](https://github.com/json5/json5) from 2.1.3 to 2.2.3.
- [Release notes](https://github.com/json5/json5/releases)
- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md)
- [Commits](https://github.com/json5/json5/compare/v2.1.3...v2.2.3)

---
updated-dependencies:
- dependency-name: json5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-06 02:33:27 +00:00
99d73a2da8 Update certbot desec plugin fixes #2485 2022-12-28 11:26:33 +01:00
3c23aa935e Load events configuration from custom file 2022-12-02 21:32:04 +00:00
8dee139810 Fix linter issues 2022-11-21 01:46:42 +03:00
6349cb6094 Fix cerbot plugin installation issues 2022-11-18 15:06:19 +03:00
452838b04a Bump loader-utils from 2.0.3 to 2.0.4 in /docs
Bumps [loader-utils](https://github.com/webpack/loader-utils) from 2.0.3 to 2.0.4.
- [Release notes](https://github.com/webpack/loader-utils/releases)
- [Changelog](https://github.com/webpack/loader-utils/blob/v2.0.4/CHANGELOG.md)
- [Commits](https://github.com/webpack/loader-utils/compare/v2.0.3...v2.0.4)

---
updated-dependencies:
- dependency-name: loader-utils
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-18 00:00:12 +00:00
fd30cfe98b Fix linting 2022-11-15 07:54:48 +10:00
6f281fef42 Workaround for cloudflare plugin install (#2381) 2022-11-15 07:48:57 +10:00
5920b0cf5e Merge pull request #2380 from NginxProxyManager/develop
v2.9.19
2022-11-08 14:26:06 +10:00
41bbfcf165 Merge branch 'master' into develop 2022-11-08 13:32:32 +10:00
80a93e17fa Bump version 2022-11-08 13:31:27 +10:00
4a1eebc54b Linked to contributors instead of managing for every release 2022-11-08 13:30:41 +10:00
264ba71462 Merge pull request #2230 from wnhrt/add-autofocus-to-login
Added autofocus to email input on login screen
2022-11-08 13:12:45 +10:00
e229fa89f8 Merge pull request #2222 from mantoufan/add-webp-to-assets.conf-for-cache-assets
Add webp format to assets.conf for Cache Assets
2022-11-08 13:12:13 +10:00
d3b72ae07d Fix tabs after web-resolved change 2022-11-08 11:53:13 +10:00
b62b6b5112 Merge pull request #2373 from lakkeri/develop
Possible multiple X-Forwarded-For headers
2022-11-08 11:48:05 +10:00
c44f8c6155 Merge pull request #2312 from knoxell/knoxell#add-namecheap
Added Namecheap certbot dns plugin
2022-11-08 11:45:41 +10:00
0dfa3d9ca3 Merge pull request #2379 from NginxProxyManager/dependabot/npm_and_yarn/docs/loader-utils-2.0.3
Bump loader-utils from 2.0.0 to 2.0.3 in /docs
2022-11-08 11:44:55 +10:00
8c7c84906b Merge pull request #2327 from DFS-90/develop
added DomainOffensive (do.de) certbot dns plugin (update certbot-dns-plugins.js)
2022-11-08 11:44:30 +10:00
662143cf21 Merge branch 'develop' into develop 2022-11-08 11:44:22 +10:00
c60fc7926e Merge pull request #2298 from ATCUSA/develop
Update for docker-compose-plugin command
2022-11-08 11:41:57 +10:00
cfbdc6c340 Merge pull request #2294 from oleban/add-domeneshop-plugin
Added Domeneshop certbot dns plugin
2022-11-08 11:41:34 +10:00
2f6d8257ec Merge pull request #2259 from cuishuang/develop
all: fix some typos
2022-11-08 11:40:42 +10:00
b9a6b5d4f5 Merge pull request #2355 from rovast/patch-1
Update README.md
2022-11-08 11:01:10 +10:00
32f77dbcee Bump loader-utils from 2.0.0 to 2.0.3 in /docs
Bumps [loader-utils](https://github.com/webpack/loader-utils) from 2.0.0 to 2.0.3.
- [Release notes](https://github.com/webpack/loader-utils/releases)
- [Changelog](https://github.com/webpack/loader-utils/blob/v2.0.3/CHANGELOG.md)
- [Commits](https://github.com/webpack/loader-utils/compare/v2.0.0...v2.0.3)

---
updated-dependencies:
- dependency-name: loader-utils
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-08 00:53:09 +00:00
052cb8f12d Possible multiple X-Forwarded-For headers
NMP behind another reverse proxy can multiply X-Forwarded-For headers. $proxy_add_x_forwarded_for equals to $remote_addr if this header not present in client request 
https://nginx.org/en/docs/http/ngx_http_proxy_module.html#var_proxy_add_x_forwarded_for
2022-11-05 16:24:12 +03:00
03b544023b Update README.md
Fix docker compose up warning message 

```
WARN[0000] network default: network.external.name is deprecated in favor of network.name
```
2022-11-02 10:26:01 +08:00
5070499cfd Merge pull request #2335 from Czocher/fix-disable-ipv6
Fix DISABLE_IPV6 flag handling
2022-10-21 08:57:08 +10:00
e77b13d36e Fix DISABLE_IPV6 flag handling
The DISABLE_IPV6 flag did not turn off ipv6 DNS requests performed by
nginx. This commit changes it and makes nginx-proxy-manager more
compatible with podman.
2022-10-20 07:55:08 +02:00
4bb237d7c2 Update certbot-dns-plugins.js
added DomainOffensive (do.de) certbot dns plugin
2022-10-16 00:24:18 +02:00
aa5a7faa94 Added Namecheap 2022-10-08 21:53:34 +02:00
837f4dcbd4 Update for docker-compose-plugin command 2022-10-02 05:05:46 +00:00
d73a246b66 Added Domeneshop certbot dns plugin 2022-09-28 11:48:31 +02:00
f85e82973d all: fix some typos
Signed-off-by: cui fliter <imcusg@gmail.com>
2022-09-10 21:08:16 +08:00
84afec567c Added autofocus to email input on login screen 2022-08-28 19:54:50 +02:00
e1525e5d56 Add webp format to assets.conf for Cache Assets 2022-08-26 03:47:06 +08:00
d2688cf08c CI - don't remove all other images, causing errors in new docker-compose 2022-08-24 07:15:28 +10:00
7372319568 Merge pull request #2051 from Nobody84/develop
update certbot-dns-duckdns to 0.9
2022-08-23 20:59:16 +10:00
60ffec5c64 Merge pull request #2072 from NginxProxyManager/dependabot/npm_and_yarn/docs/eventsource-2.0.2
Bump eventsource from 1.0.7 to 2.0.2 in /docs
2022-08-23 20:57:21 +10:00
23c88f6955 Merge pull request #2090 from swazynski/patch-1
Add trailing slash to example
2022-08-23 20:57:04 +10:00
dd14207b63 Merge pull request #2110 from cfoellmann/footer-blank
open footer link "Fork me" in new tab/windows (_blank)
2022-08-23 20:44:56 +10:00
103adfbb57 Merge pull request #2125 from NginxProxyManager/dependabot/npm_and_yarn/test/async-3.2.4
Bump async from 3.2.0 to 3.2.4 in /test
2022-08-23 20:44:32 +10:00
b673ebe2ca Merge pull request #2126 from NginxProxyManager/dependabot/npm_and_yarn/backend/async-3.2.4
Bump async from 3.2.1 to 3.2.4 in /backend
2022-08-23 20:44:21 +10:00
0e0c3df0cd Merge pull request #2142 from NginxProxyManager/dependabot/npm_and_yarn/frontend/moment-2.29.4
Bump moment from 2.27.0 to 2.29.4 in /frontend
2022-08-23 20:44:08 +10:00
8dbd482e08 Merge pull request #2143 from NginxProxyManager/dependabot/npm_and_yarn/test/moment-2.29.4
Bump moment from 2.27.0 to 2.29.4 in /test
2022-08-23 20:43:44 +10:00
ab5f7c0f26 Merge pull request #2144 from NginxProxyManager/dependabot/npm_and_yarn/backend/moment-2.29.4
Bump moment from 2.27.0 to 2.29.4 in /backend
2022-08-23 20:43:35 +10:00
191f493eb9 Merge pull request #2162 from NginxProxyManager/dependabot/npm_and_yarn/docs/terser-5.14.2
Bump terser from 5.0.0 to 5.14.2 in /docs
2022-08-23 20:43:24 +10:00
d1f4640a9c Merge pull request #2164 from NginxProxyManager/dependabot/npm_and_yarn/frontend/terser-4.8.1
Bump terser from 4.8.0 to 4.8.1 in /frontend
2022-08-23 20:43:15 +10:00
3d97f4578d Merge pull request #2206 from phulstaert/patch-1
fix typo
2022-08-23 20:42:59 +10:00
fb0ef08fd8 fix typo 2022-08-18 09:25:45 +02:00
0de78205b5 Bump terser from 4.8.0 to 4.8.1 in /frontend
Bumps [terser](https://github.com/terser/terser) from 4.8.0 to 4.8.1.
- [Release notes](https://github.com/terser/terser/releases)
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/commits)

---
updated-dependencies:
- dependency-name: terser
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-20 21:35:47 +00:00
e0821bd927 Bump terser from 5.0.0 to 5.14.2 in /docs
Bumps [terser](https://github.com/terser/terser) from 5.0.0 to 5.14.2.
- [Release notes](https://github.com/terser/terser/releases)
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/commits)

---
updated-dependencies:
- dependency-name: terser
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-20 01:39:09 +00:00
e5966b54a8 Bump moment from 2.27.0 to 2.29.4 in /backend
Bumps [moment](https://github.com/moment/moment) from 2.27.0 to 2.29.4.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/compare/2.27.0...2.29.4)

---
updated-dependencies:
- dependency-name: moment
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-07 16:43:24 +00:00
d2f6b09901 Bump moment from 2.27.0 to 2.29.4 in /test
Bumps [moment](https://github.com/moment/moment) from 2.27.0 to 2.29.4.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/compare/2.27.0...2.29.4)

---
updated-dependencies:
- dependency-name: moment
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-07 16:43:16 +00:00
5c8aa8517b Bump moment from 2.27.0 to 2.29.4 in /frontend
Bumps [moment](https://github.com/moment/moment) from 2.27.0 to 2.29.4.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/compare/2.27.0...2.29.4)

---
updated-dependencies:
- dependency-name: moment
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-07 16:43:13 +00:00
1e5916db28 Bump async from 3.2.1 to 3.2.4 in /backend
Bumps [async](https://github.com/caolan/async) from 3.2.1 to 3.2.4.
- [Release notes](https://github.com/caolan/async/releases)
- [Changelog](https://github.com/caolan/async/blob/master/CHANGELOG.md)
- [Commits](https://github.com/caolan/async/compare/v3.2.1...v3.2.4)

---
updated-dependencies:
- dependency-name: async
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-22 17:38:17 +00:00
a3ae6956e2 Bump async from 3.2.0 to 3.2.4 in /test
Bumps [async](https://github.com/caolan/async) from 3.2.0 to 3.2.4.
- [Release notes](https://github.com/caolan/async/releases)
- [Changelog](https://github.com/caolan/async/blob/master/CHANGELOG.md)
- [Commits](https://github.com/caolan/async/compare/v3.2.0...v3.2.4)

---
updated-dependencies:
- dependency-name: async
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-22 16:50:18 +00:00
518b84b38b open footer link "Fork me" in new tab/windows (_blank) 2022-06-15 12:20:54 +02:00
932dc4bf02 Add trailing slash to example 2022-06-03 15:20:26 +02:00
bdc3a555b6 Bump eventsource from 1.0.7 to 2.0.2 in /docs
Bumps [eventsource](https://github.com/EventSource/eventsource) from 1.0.7 to 2.0.2.
- [Release notes](https://github.com/EventSource/eventsource/releases)
- [Changelog](https://github.com/EventSource/eventsource/blob/master/HISTORY.md)
- [Commits](https://github.com/EventSource/eventsource/compare/v1.0.7...v2.0.2)

---
updated-dependencies:
- dependency-name: eventsource
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-26 06:36:19 +00:00
d4dcb61ee6 update certbot-dns-duckdns to 0.9 2022-05-14 00:30:18 +02:00
cce73beb2d Merge pull request #1967 from NginxProxyManager/develop
v2.9.18
2022-03-31 15:40:49 +10:00
063ac4619f Merge pull request #1966 from NginxProxyManager/develop
v2.9.17
2022-03-31 11:32:05 +10:00
edf369a3d4 Bump node-forge from 1.0.0 to 1.3.0 in /docs
Bumps [node-forge](https://github.com/digitalbazaar/forge) from 1.0.0 to 1.3.0.
- [Release notes](https://github.com/digitalbazaar/forge/releases)
- [Changelog](https://github.com/digitalbazaar/forge/blob/main/CHANGELOG.md)
- [Commits](https://github.com/digitalbazaar/forge/compare/v1.0.0...v1.3.0)

---
updated-dependencies:
- dependency-name: node-forge
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-23 17:18:07 +00:00
4251157ffa Bump ansi-html from 0.0.7 to 0.0.8 in /docs
Bumps [ansi-html](https://github.com/Tjatse/ansi-html) from 0.0.7 to 0.0.8.
- [Release notes](https://github.com/Tjatse/ansi-html/releases)
- [Commits](https://github.com/Tjatse/ansi-html/commits)

---
updated-dependencies:
- dependency-name: ansi-html
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-14 21:21:19 +00:00
9866eec21c Bump postcss from 8.2.10 to 8.2.13 in /docs
Bumps [postcss](https://github.com/postcss/postcss) from 8.2.10 to 8.2.13.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.2.10...8.2.13)

---
updated-dependencies:
- dependency-name: postcss
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-14 21:20:37 +00:00
1234 changed files with 37409 additions and 55167 deletions

View File

@ -1,8 +0,0 @@
# Ignore everything
*
# Only allow the following for docker build:
!backend/
!docker/
!scripts/
!test/

21
.github/workflows/stale.yml vendored Normal file
View File

@ -0,0 +1,21 @@
name: 'Close stale issues and PRs'
on:
schedule:
- cron: '30 1 * * *'
workflow_dispatch:
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v9
with:
stale-issue-label: 'stale'
stale-pr-label: 'stale'
stale-issue-message: 'Issue is now considered stale. If you want to keep it open, please comment :+1:'
stale-pr-message: 'PR is now considered stale. If you want to keep it open, please comment :+1:'
close-issue-message: 'Issue was closed due to inactivity.'
close-pr-message: 'PR was closed due to inactivity.'
days-before-stale: 182
days-before-close: 365
operations-per-run: 50

28
.gitignore vendored
View File

@ -1,29 +1,9 @@
git.idea
.env
.DS_Store
.idea
._*
*.code-workspace
vendor
bin/*
backend/config.json
backend/embed/assets
backend/.task
backend/coverage.out
backend/coverage.html
.vscode
certbot-help.txt
test/node_modules
*/node_modules
docs/.vuepress/dist
frontend/build
frontend/yarn-error.log
frontend/.npmrc
frontend/src/locale/lang
test/cypress/fixtures/example.json
.vscode
docker-build
data
dist
backend/embed/acme.sh
docker/dev/resolv.conf
docker/dev/dnsrouter-config.json.tmp
thunder-tests
test/cypress/videos
docker/dev/resolv.conf

View File

@ -1 +1 @@
3.0.0a
2.11.3

151
Jenkinsfile vendored
View File

@ -1,33 +1,22 @@
import groovy.transform.Field
@Field
def shOutput = ""
def buildxPushTags = ""
def getVersion() {
ver = sh(script: 'cat .version', returnStdout: true)
return ver.trim()
}
def getCommit() {
ver = sh(script: 'git log -n 1 --format=%h', returnStdout: true)
return ver.trim()
}
pipeline {
agent {
label 'docker-multiarch'
}
options {
buildDiscarder(logRotator(numToKeepStr: '10'))
buildDiscarder(logRotator(numToKeepStr: '5'))
disableConcurrentBuilds()
ansiColor('xterm')
}
environment {
DOCKER_ORG = 'jc21'
IMAGE = 'nginx-proxy-manager'
BUILD_VERSION = getVersion()
BUILD_COMMIT = getCommit()
MAJOR_VERSION = '3'
MAJOR_VERSION = '2'
BRANCH_LOWER = "${BRANCH_NAME.toLowerCase().replaceAll('\\\\', '-').replaceAll('/', '-').replaceAll('\\.', '-')}"
BUILDX_NAME = "npm_${BRANCH_LOWER}_${BUILD_NUMBER}"
COMPOSE_INTERACTIVE_NO_CLI = 1
@ -41,9 +30,7 @@ pipeline {
}
steps {
script {
buildxPushTags = "-t docker.io/${DOCKER_ORG}/${IMAGE}:${BUILD_VERSION} -t docker.io/${DOCKER_ORG}/${IMAGE}:${MAJOR_VERSION} -t docker.io/${DOCKER_ORG}/${IMAGE}:latest"
echo 'Building on Master is disabled!'
sh 'exit 1'
buildxPushTags = "-t docker.io/jc21/${IMAGE}:${BUILD_VERSION} -t docker.io/jc21/${IMAGE}:${MAJOR_VERSION} -t docker.io/jc21/${IMAGE}:latest"
}
}
}
@ -56,44 +43,44 @@ pipeline {
steps {
script {
// Defaults to the Branch name, which is applies to all branches AND pr's
// buildxPushTags = "-t docker.io/jc21/${IMAGE}:github-${BRANCH_LOWER}"
buildxPushTags = "-t docker.io/${DOCKER_ORG}/${IMAGE}:v3"
buildxPushTags = "-t docker.io/jc21/${IMAGE}:github-${BRANCH_LOWER}"
}
}
}
stage('Versions') {
steps {
sh 'cat frontend/package.json | jq --arg BUILD_VERSION "${BUILD_VERSION}" \'.version = $BUILD_VERSION\' | sponge frontend/package.json'
sh 'echo -e "\\E[1;36mFrontend Version is:\\E[1;33m $(cat frontend/package.json | jq -r .version)\\E[0m"'
sh 'cat backend/package.json | jq --arg BUILD_VERSION "${BUILD_VERSION}" \'.version = $BUILD_VERSION\' | sponge backend/package.json'
sh 'echo -e "\\E[1;36mBackend Version is:\\E[1;33m $(cat backend/package.json | jq -r .version)\\E[0m"'
sh 'sed -i -E "s/(version-)[0-9]+\\.[0-9]+\\.[0-9]+(-green)/\\1${BUILD_VERSION}\\2/" README.md'
}
}
}
}
stage('Build') {
stage('Builds') {
parallel {
stage('Project') {
steps {
sh './scripts/ci/build-frontend'
sh './scripts/ci/test-backend'
// Temporarily disable building backend binaries
// sh './scripts/ci/build-backend'
// Build the docker image used for testing below
sh '''docker build --pull --no-cache \\
-t "${IMAGE}:${BRANCH_LOWER}-ci-${BUILD_NUMBER}" \\
-f docker/Dockerfile \\
--build-arg BUILD_COMMIT="${BUILD_COMMIT}" \\
--build-arg BUILD_DATE="$(date '+%Y-%m-%d %T %Z')" \\
--build-arg BUILD_VERSION="${BUILD_VERSION}" \\
.
'''
script {
// Frontend and Backend
def shStatusCode = sh(label: 'Checking and Building', returnStatus: true, script: '''
set -e
./scripts/ci/frontend-build > ${WORKSPACE}/tmp-sh-build 2>&1
./scripts/ci/test-and-build > ${WORKSPACE}/tmp-sh-build 2>&1
''')
shOutput = readFile "${env.WORKSPACE}/tmp-sh-build"
if (shStatusCode != 0) {
error "${shOutput}"
}
}
}
post {
success {
junit 'test/results/junit/*'
// archiveArtifacts allowEmptyArchive: false, artifacts: 'bin/*'
publishHTML([
allowMissing: false,
alwaysLinkToLastBuild: false,
keepAll: false,
reportDir: 'test/results/html-reports',
reportFiles: 'backend-coverage.html',
reportName: 'HTML Reports',
useWrapperFileDirectly: true
])
always {
sh 'rm -f ${WORKSPACE}/tmp-sh-build'
}
failure {
npmGithubPrComment("CI Error:\n\n```\n${shOutput}\n```", true)
}
}
}
@ -110,7 +97,7 @@ pipeline {
stage('Test Sqlite') {
environment {
COMPOSE_PROJECT_NAME = "npm_${BRANCH_LOWER}_${BUILD_NUMBER}_sqlite"
COMPOSE_FILE = 'docker/docker-compose.ci.yml'
COMPOSE_FILE = 'docker/docker-compose.ci.yml:docker/docker-compose.ci.sqlite.yml'
}
when {
not {
@ -120,8 +107,6 @@ pipeline {
steps {
sh 'rm -rf ./test/results/junit/*'
sh './scripts/ci/fulltest-cypress'
// Adding this here as the schema needs to come from a running stack, but this will be used by docs later
sh 'docker-compose exec -T fullstack curl -s --output /temp-docs/api-schema.json "http://fullstack:81/api/schema"'
}
post {
always {
@ -165,39 +150,6 @@ pipeline {
}
}
}
stage('Test Postgres') {
environment {
COMPOSE_PROJECT_NAME = "npm_${BRANCH_LOWER}_${BUILD_NUMBER}_postgres"
COMPOSE_FILE = 'docker/docker-compose.ci.yml:docker/docker-compose.ci.postgres.yml'
}
when {
not {
equals expected: 'UNSTABLE', actual: currentBuild.result
}
}
steps {
sh 'rm -rf ./test/results/junit/*'
sh './scripts/ci/fulltest-cypress'
}
post {
always {
// Dumps to analyze later
sh 'mkdir -p debug/postgres'
sh 'docker logs $(docker-compose ps --all -q fullstack) > debug/postgres/docker_fullstack.log 2>&1'
sh 'docker logs $(docker-compose ps --all -q stepca) > debug/postgres/docker_stepca.log 2>&1'
sh 'docker logs $(docker-compose ps --all -q pdns) > debug/postgres/docker_pdns.log 2>&1'
sh 'docker logs $(docker-compose ps --all -q pdns-db) > debug/postgres/docker_pdns-db.log 2>&1'
sh 'docker logs $(docker-compose ps --all -q dnsrouter) > debug/postgres/docker_dnsrouter.log 2>&1'
sh 'docker logs $(docker-compose ps --all -q db-postgres) > debug/postgres/docker_db.log 2>&1'
sh 'docker logs $(docker-compose ps --all -q authentik) > debug/postgres/docker_authentik.log 2>&1'
sh 'docker logs $(docker-compose ps --all -q authentik-redis) > debug/postgres/docker_authentik-redis.log 2>&1'
sh 'docker logs $(docker-compose ps --all -q authentik-ldap) > debug/postgres/docker_authentik-ldap.log 2>&1'
junit 'test/results/junit/*'
sh 'docker-compose down --remove-orphans --volumes -t 30 || true'
}
}
}
stage('MultiArch Build') {
when {
not {
@ -208,7 +160,6 @@ pipeline {
withCredentials([usernamePassword(credentialsId: 'jc21-dockerhub', passwordVariable: 'dpass', usernameVariable: 'duser')]) {
sh 'docker login -u "${duser}" -p "${dpass}"'
sh "./scripts/buildx --push ${buildxPushTags}"
// sh './scripts/buildx -o type=local,dest=docker-build'
}
}
}
@ -217,7 +168,7 @@ pipeline {
stage('Docs Job') {
when {
allOf {
branch pattern: "^(develop|master|v3)\$", comparator: "REGEXP"
branch pattern: "^(develop|master)\$", comparator: "REGEXP"
not {
equals expected: 'UNSTABLE', actual: currentBuild.result
}
@ -247,22 +198,32 @@ pipeline {
}
post {
always {
sh './scripts/ci/build-cleanup'
echo 'Reverting ownership'
sh 'docker run --rm -v $(pwd):/data jc21/gotools:latest chown -R "$(id -u):$(id -g)" /data'
printResult()
sh 'echo Reverting ownership'
sh 'docker run --rm -v "$(pwd):/data" jc21/ci-tools chown -R "$(id -u):$(id -g)" /data'
}
success {
juxtapose event: 'success'
sh 'figlet "SUCCESS"'
}
failure {
archiveArtifacts(artifacts: 'debug/**/*', allowEmptyArchive: true)
dir(path: 'test') {
archiveArtifacts allowEmptyArchive: true, artifacts: 'results/**/*', excludes: '**/*.xml'
}
archiveArtifacts(artifacts: 'debug/**/*.*', allowEmptyArchive: true)
juxtapose event: 'failure'
sh 'figlet "FAILURE"'
}
unstable {
archiveArtifacts(artifacts: 'debug/**/*', allowEmptyArchive: true)
dir(path: 'test') {
archiveArtifacts allowEmptyArchive: true, artifacts: 'results/**/*', excludes: '**/*.xml'
}
archiveArtifacts(artifacts: 'debug/**/*.*', allowEmptyArchive: true)
juxtapose event: 'unstable'
sh 'figlet "UNSTABLE"'
}
}
}
def getVersion() {
ver = sh(script: 'cat .version', returnStdout: true)
return ver.trim()
}
def getCommit() {
ver = sh(script: 'git log -n 1 --format=%h', returnStdout: true)
return ver.trim()
}

View File

@ -1,7 +1,7 @@
<p align="center">
<img src="https://nginxproxymanager.com/github.png">
<br><br>
<img src="https://img.shields.io/badge/version-2.9.19-green.svg?style=for-the-badge">
<img src="https://img.shields.io/badge/version-2.11.3-green.svg?style=for-the-badge">
<a href="https://hub.docker.com/repository/docker/jc21/nginx-proxy-manager">
<img src="https://img.shields.io/docker/stars/jc21/nginx-proxy-manager.svg?style=for-the-badge">
</a>
@ -19,7 +19,7 @@ running at home or otherwise, including free SSL, without having to know too muc
## Project Goal
I created this project to fill a personal need to provide users with a easy way to accomplish reverse
I created this project to fill a personal need to provide users with an easy way to accomplish reverse
proxying hosts with SSL termination and it had to be so easy that a monkey could do it. This goal hasn't changed.
While there might be advanced options they are optional and the project should be as simple as possible
so that the barrier for entry here is low.
@ -29,7 +29,7 @@ so that the barrier for entry here is low.
## Features
- Beautiful and Secure Admin Interface based on [Chakra UI](https://chakra-ui.com/)
- Beautiful and Secure Admin Interface based on [Tabler](https://tabler.github.io/)
- Easily create forwarding domains, redirections, streams and 404 hosts without knowing anything about Nginx
- Free SSL using Let's Encrypt or provide your own custom SSL certificates
- Access Lists and basic HTTP Authentication for your hosts
@ -46,8 +46,7 @@ I won't go in to too much detail here but here are the basics for someone new to
3. Configure your domain name details to point to your home, either with a static ip or a service like DuckDNS or [Amazon Route53](https://github.com/jc21/route53-ddns)
4. Use the Nginx Proxy Manager as your gateway to forward to your other web based services
## Quickest Setup
## Quick Setup
1. Install Docker and Docker-Compose
@ -57,10 +56,9 @@ I won't go in to too much detail here but here are the basics for someone new to
2. Create a docker-compose.yml file similar to this:
```yml
version: '3'
services:
app:
image: 'jc21/nginx-proxy-manager:v3'
image: 'docker.io/jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80'
@ -68,8 +66,11 @@ services:
- '443:443'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
```
This is the bare minimum configuration required. See the [documentation](https://nginxproxymanager.com/setup/) for more.
3. Bring up your stack by running
```bash
@ -77,25 +78,43 @@ docker-compose up -d
# If using docker-compose-plugin
docker compose up -d
```
4. Log in to the Admin UI
When your docker container is running, connect to it on port `81` for the admin interface.
Sometimes this can take a little bit because of the entropy of keys.
[http://127.0.0.1:81](http://127.0.0.1:81)
## Contributors
Default Admin User:
```
Email: admin@example.com
Password: changeme
```
Immediately after logging in with this default user you will be asked to modify your details and change your password.
## Contributing
All are welcome to create pull requests for this project, against the `develop` branch. Official releases are created from the `master` branch.
CI is used in this project. All PR's must pass before being considered. After passing,
docker builds for PR's are available on dockerhub for manual verifications.
Documentation within the `develop` branch is available for preview at
[https://develop.nginxproxymanager.com](https://develop.nginxproxymanager.com)
### Contributors
Special thanks to [all of our contributors](https://github.com/NginxProxyManager/nginx-proxy-manager/graphs/contributors).
## Getting Support
1. [Found a bug?](https://github.com/NginxProxyManager/nginx-proxy-manager/issues)
2. [Discussions](https://github.com/NginxProxyManager/nginx-proxy-manager/discussions)
3. [Development Gitter](https://gitter.im/nginx-proxy-manager/community)
4. [Reddit](https://reddit.com/r/nginxproxymanager)
## Become a Contributor
A guide to setting up your own development environment [is found here](DEV-README.md).
3. [Reddit](https://reddit.com/r/nginxproxymanager)

View File

@ -1,8 +0,0 @@
root = true
[*]
indent_style = tab
indent_size = 4
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = false

73
backend/.eslintrc.json Normal file
View File

@ -0,0 +1,73 @@
{
"env": {
"node": true,
"es6": true
},
"extends": [
"eslint:recommended"
],
"globals": {
"Atomics": "readonly",
"SharedArrayBuffer": "readonly"
},
"parserOptions": {
"ecmaVersion": 2018,
"sourceType": "module"
},
"plugins": [
"align-assignments"
],
"rules": {
"arrow-parens": [
"error",
"always"
],
"indent": [
"error",
"tab"
],
"linebreak-style": [
"error",
"unix"
],
"quotes": [
"error",
"single"
],
"semi": [
"error",
"always"
],
"key-spacing": [
"error",
{
"align": "value"
}
],
"comma-spacing": [
"error",
{
"before": false,
"after": true
}
],
"func-call-spacing": [
"error",
"never"
],
"keyword-spacing": [
"error",
{
"before": true
}
],
"no-irregular-whitespace": "error",
"no-unused-expressions": 0,
"align-assignments/align-assignments": [
2,
{
"requiresOnly": false
}
]
}
}

8
backend/.gitignore vendored Normal file
View File

@ -0,0 +1,8 @@
config/development.json
data/*
yarn-error.log
tmp
certbot.log
node_modules
core.*

View File

@ -1,166 +0,0 @@
---
linters:
enable:
# Prevents against memory leaks in production caused by not closing
# file handle
- bodyclose
# Detects cloned code. DRY is good programming practice. Can cause issues
# with testing code where simplicity is preferred over duplication.
# Disabled for test code.
# - dupl
# Detects unchecked errors in go programs. These unchecked errors can be
# critical bugs in some cases.
- errcheck
# Simplifies go code.
- gosimple
# Controls Go package import order and makes it always deterministic.
- gci
# Reports suspicious constructs, maintained by goteam. e.g. Printf unused
# params not caught at compile time.
- govet
# Detect security issues with gocode. Use of secrets in code or obsolete
# security algorithms. It's imaged heuristic methods are used in finding
# problems. If issues with rules are found particular rules can be disabled
# as required. Could possibility cause issues with testing.
# Disabled for test code.
- gosec
# Detect repeated strings that could be replaced by a constant
- goconst
# Misc linters missing from other projects. Grouped into 3 categories
# diagnostics, style and performance
- gocritic
# Limits code cyclomatic complexity
- gocyclo
# Detects if code needs to be gofmt'd
- gofmt
# Detects unused go package imports
- goimports
# Detects style mistakes not correctness. Golint is meant to carry out the
# stylistic conventions put forth in Effective Go and CodeReviewComments.
# golint has false positives and false negatives and can be tweaked.
- revive
# Detects ineffectual assignments in code
- ineffassign
# Reports long lines
# - lll
# Detect commonly misspelled english words in comments
- misspell
# Detect naked returns on non-trivial functions, and conform with
# Go CodeReviewComments
- nakedret
# Detect slice allocations that can be preallocated
- prealloc
# Misc collection of static analysis tools
- staticcheck
# Detects unused struct fields
# - structcheck
# Parses and typechecks the code like the go compiler
- typecheck
# Detects unused constants, variables, functions and types
- unused
# Remove unnecessary type conversions
- unconvert
# Remove unnecessary(unused) function parameters
- unparam
linters-settings:
errcheck:
exclude-functions:
- fmt.Fprint
- fmt.Fprintf
gci:
sections:
- standard # Standard section: captures all standard packages.
- localmodule # Local module section: contains all local packages.
# - prefix(gogs.jc21.com) # Prefixed gerrit.lan packages (jumgo).
- default # Everything else (github.com, golang.org, etc).
- blank # Blank section: contains all blank imports.
custom-order: true
goconst:
# minimal length of string constant
# default: 3
min-len: 2
# minimum number of occurrences of string constant
# default: 3
min-occurences: 2
revive:
enable-all-rules: true
rules:
- name: unchecked-type-assertion
disabled: true
# handled by goconst
- name: add-constant
disabled: true
# cant limit this arbitrarily
- name: argument-limit
disabled: true
# handled by gocyclo
- name: cognitive-complexity
disabled: true
# false positive for Exported vs non-exported functions of the same name
- name: confusing-naming
disabled: true
# false positives for "" - which is the nil value of a string (also 0)
- name: confusing-results
disabled: true
# handled by gocyclo
- name: cyclomatic
disabled: true
# have comments on exported functions but not on vars/types/constants
- name: exported
arguments:
- "disableChecksOnConstants"
- "disableChecksOnTypes"
- "disableChecksOnVariables"
# false positives on bool params
- name: flag-parameter
disabled: true
# extreme verticalization can happen
- name: function-length
disabled: true
# can false positive for non-getters
- name: get-return
disabled: true
# only allows lowercase names
- name: import-alias-naming
disabled: true
# handled by lll
- name: line-length-limit
disabled: true
# don't want to arbitrarily limit this
# many places have specific model.go files to contain all structs
- name: max-public-structs
disabled: true
# disable package-comments
- name: package-comments
disabled: true
# this is handled by errcheck
- name: unhandled-error
disabled: true
- name: function-result-limit
disabled: true
issues:
# Maximum count of issues with the same text. Set to 0 to disable. Default
# is 3. We have chosen an arbitrary value that works based on practical usage.
max-same: 20
# See cmdline flag documentation for more info about default excludes
# --exclude-use-default. Nothing is excluded by default
exclude-use-default: false
# Excluding configuration per-path, per-linter, per-text and per-source
exclude-rules:
# Exclude some linters from running on tests files.
# TODO: Add examples why this is good
- path: _test\.go
linters:
# Tests should be simple? Add example why this is good?
- gocyclo
# Error checking adds verbosity and complexity for minimal value
- errcheck
# Table test encourage duplication in defining the table tests.
- dupl
# Hard coded example tokens, SQL injection and other bad practices may
# want to be tested
- gosec
# Test data can long
# - lll
run:
go: '1.23'

View File

@ -1,11 +1,11 @@
{
"printWidth": 80,
"tabWidth": 2,
"printWidth": 320,
"tabWidth": 4,
"useTabs": true,
"semi": true,
"singleQuote": false,
"singleQuote": true,
"bracketSpacing": true,
"bracketSameLine": true,
"jsxBracketSameLine": true,
"trailingComma": "all",
"proseWrap": "always"
}

View File

@ -1,21 +0,0 @@
---
# (mandatory)
# Path to coverprofile file (output of `go test -coverprofile` command).
profile: coverage.out
# (optional; but recommended to set)
# When specified reported file paths will not contain local prefix in the output
local-prefix: "npm"
# Holds coverage thresholds percentages, values should be in range [0-100]
threshold:
# (optional; default 0)
# The minimum coverage that each file should have
# file: 70
# (optional; default 0)
# The minimum coverage that each package should have
# package: 30
# (optional; default 0)
# The minimum total coverage project should have
total: 30

8
backend/.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,8 @@
{
"editor.insertSpaces": false,
"editor.formatOnSave": true,
"files.trimTrailingWhitespace": true,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
}
}

View File

@ -1,6 +0,0 @@
# Backend
## Guides and materials
- [Nginx Proxy Protocol](https://docs.nginx.com/nginx/admin-guide/load-balancer/using-proxy-protocol/)
-

View File

@ -1,70 +0,0 @@
version: "3"
tasks:
default:
cmds:
- task: run
run:
desc: Build and run
sources:
- internal/**/*.go
- cmd/**/*.go
- ../frontend/src/locale/src/*.json
cmds:
- task: locale
- task: build
force: true
- cmd: echo -e "==> Running..."
silent: true
- cmd: ../dist/bin/server
ignore_error: true
silent: true
env:
LOG_LEVEL: debug
build:
desc: Build the server
cmds:
- cmd: echo -e "==> Building..."
silent: true
- cmd: rm -f dist/bin/*
silent: true
- cmd: go build -tags 'json1' -buildvcs=false -ldflags="-X main.commit={{.GIT_COMMIT}} -X main.version={{.VERSION}}" -o ../dist/bin/server ./cmd/server/main.go
silent: true
- cmd: go build -buildvcs=false -ldflags="-X main.commit={{.GIT_COMMIT}} -X main.version={{.VERSION}}" -o ../dist/bin/ipranges ./cmd/ipranges/main.go
silent: true
- cmd: rm -f /etc/nginx/conf.d/include/ipranges.conf && /app/dist/bin/ipranges > /etc/nginx/conf.d/include/ipranges.conf
- task: lint
vars:
GIT_COMMIT:
sh: git log -n 1 --format=%h
VERSION:
sh: cat ../.version
lint:
desc: Linting
cmds:
- cmd: echo -e "==> Linting..."
silent: true
- cmd: bash scripts/lint.sh
silent: true
test:
desc: Testing
cmds:
- cmd: echo -e "==> Testing..."
silent: true
- cmd: bash scripts/test.sh
silent: true
locale:
desc: Locale
dir: /app/frontend
cmds:
- cmd: yarn locale-compile
silent: true
ignore_error: true
- cmd: chown -R "$PUID:$PGID" src/locale/lang
silent: true
ignore_error: true

90
backend/app.js Normal file
View File

@ -0,0 +1,90 @@
const express = require('express');
const bodyParser = require('body-parser');
const fileUpload = require('express-fileupload');
const compression = require('compression');
const config = require('./lib/config');
const log = require('./logger').express;
/**
* App
*/
const app = express();
app.use(fileUpload());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
// Gzip
app.use(compression());
/**
* General Logging, BEFORE routes
*/
app.disable('x-powered-by');
app.enable('trust proxy', ['loopback', 'linklocal', 'uniquelocal']);
app.enable('strict routing');
// pretty print JSON when not live
if (config.debug()) {
app.set('json spaces', 2);
}
// CORS for everything
app.use(require('./lib/express/cors'));
// General security/cache related headers + server header
app.use(function (req, res, next) {
let x_frame_options = 'DENY';
if (typeof process.env.X_FRAME_OPTIONS !== 'undefined' && process.env.X_FRAME_OPTIONS) {
x_frame_options = process.env.X_FRAME_OPTIONS;
}
res.set({
'X-XSS-Protection': '1; mode=block',
'X-Content-Type-Options': 'nosniff',
'X-Frame-Options': x_frame_options,
'Cache-Control': 'no-cache, no-store, max-age=0, must-revalidate',
Pragma: 'no-cache',
Expires: 0
});
next();
});
app.use(require('./lib/express/jwt')());
app.use('/', require('./routes/api/main'));
// production error handler
// no stacktraces leaked to user
// eslint-disable-next-line
app.use(function (err, req, res, next) {
let payload = {
error: {
code: err.status,
message: err.public ? err.message : 'Internal Error'
}
};
if (config.debug() || (req.baseUrl + req.path).includes('nginx/certificates')) {
payload.debug = {
stack: typeof err.stack !== 'undefined' && err.stack ? err.stack.split('\n') : null,
previous: err.previous
};
}
// Not every error is worth logging - but this is good for now until it gets annoying.
if (typeof err.stack !== 'undefined' && err.stack) {
if (config.debug()) {
log.debug(err.stack);
} else if (typeof err.public == 'undefined' || !err.public) {
log.warn(err.message);
}
}
res
.status(err.status || 500)
.send(payload);
});
module.exports = app;

View File

@ -1,125 +0,0 @@
package main
import (
"bufio"
"encoding/json"
"fmt"
"io"
"net/http"
"os"
"npm/internal/config"
"npm/internal/model"
"github.com/rotisserie/eris"
)
var commit string
var version string
var cloudfrontURL = "https://ip-ranges.amazonaws.com/ip-ranges.json"
var cloudflare4URL = "https://www.cloudflare.com/ips-v4"
var cloudflare6URL = "https://www.cloudflare.com/ips-v6"
func main() {
config.InitArgs(&version, &commit)
if err := config.InitIPRanges(&version, &commit); err != nil {
fmt.Printf("# Config ERROR: %v\n", err)
os.Exit(1)
}
exitCode := 0
// Cloudfront
fmt.Printf("# Cloudfront Ranges from: %s\n", cloudfrontURL)
if ranges, err := parseCloudfront(); err == nil {
for _, item := range ranges {
fmt.Printf("set_real_ip_from %s;\n", item)
}
} else {
fmt.Printf("# ERROR: %v\n", err)
}
// Cloudflare ipv4
if !config.Configuration.DisableIPV4 {
fmt.Printf("\n# Cloudflare Ranges from: %s\n", cloudflare4URL)
if ranges, err := parseCloudflare(cloudflare4URL); err == nil {
for _, item := range ranges {
fmt.Printf("set_real_ip_from %s;\n", item)
}
} else {
fmt.Printf("# ERROR: %v\n", err)
}
}
// Cloudflare ipv6
if !config.Configuration.DisableIPV6 {
fmt.Printf("\n# Cloudflare Ranges from: %s\n", cloudflare6URL)
if ranges, err := parseCloudflare(cloudflare6URL); err == nil {
for _, item := range ranges {
fmt.Printf("set_real_ip_from %s;\n", item)
}
} else {
fmt.Printf("# ERROR: %v\n", err)
}
}
// Done
os.Exit(exitCode)
}
func parseCloudfront() ([]string, error) {
// nolint: gosec
resp, err := http.Get(cloudfrontURL)
if err != nil {
return nil, eris.Wrapf(err, "Failed to download Cloudfront IP Ranges from %s", cloudfrontURL)
}
// nolint: errcheck, gosec
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
return nil, eris.Wrapf(err, "Failed to read Cloudfront IP Ranges body")
}
var result model.CloudfrontIPRanges
if err := json.Unmarshal(body, &result); err != nil {
return nil, eris.Wrapf(err, "Failed to unmarshal Cloudfront IP Ranges file")
}
ranges := make([]string, 0)
if !config.Configuration.DisableIPV4 {
for _, item := range result.IPV4Prefixes {
ranges = append(ranges, item.Value)
}
}
if !config.Configuration.DisableIPV6 {
for _, item := range result.IPV6Prefixes {
ranges = append(ranges, item.Value)
}
}
return ranges, nil
}
func parseCloudflare(url string) ([]string, error) {
// nolint: gosec
resp, err := http.Get(url)
if err != nil {
return nil, eris.Wrapf(err, "Failed to download Cloudflare IP Ranges from %s", url)
}
// nolint: errcheck, gosec
defer resp.Body.Close()
scanner := bufio.NewScanner(resp.Body)
scanner.Split(bufio.ScanLines)
ranges := make([]string, 0)
for scanner.Scan() {
if scanner.Text() != "" {
ranges = append(ranges, scanner.Text())
}
}
return ranges, nil
}

View File

@ -1,87 +0,0 @@
package main
import (
"os"
"os/signal"
"syscall"
"npm/internal/api"
"npm/internal/config"
"npm/internal/database"
"npm/internal/entity/certificate"
"npm/internal/entity/host"
"npm/internal/entity/user"
"npm/internal/errors"
"npm/internal/jobqueue"
"npm/internal/jwt"
"npm/internal/logger"
// properly respect available cpu cores
_ "go.uber.org/automaxprocs"
)
var commit string
var version string
func main() {
config.InitArgs(&version, &commit)
config.Init(&version, &commit)
config.CreateDataFolders()
logger.Info("Build Version: %s (%s)", version, commit)
database.Migrate(func() {
if err := jwt.LoadKeys(); err != nil {
logger.Error("KeysError", err)
os.Exit(1)
}
checkSetup()
// Internal Job Queue
jobqueue.Start()
certificate.AddPendingJobs()
host.AddPendingJobs()
// Http server
api.StartServer()
irqchan := make(chan os.Signal, 1)
signal.Notify(irqchan, syscall.SIGINT, syscall.SIGTERM)
for irq := range irqchan {
if irq == syscall.SIGINT || irq == syscall.SIGTERM {
logger.Info("Got ", irq, " shutting server down ...")
// Close db
sqlDB, _ := database.GetDB().DB()
err := sqlDB.Close()
if err != nil {
logger.Error("DatabaseCloseError", err)
}
// nolint
jobqueue.Shutdown()
break
}
}
})
}
// checkSetup Quick check by counting the number of users in the database
func checkSetup() {
db := database.GetDB()
var count int64
if db != nil {
db.Model(&user.Model{}).
Where("is_disabled = ?", false).
Where("is_system = ?", false).
Count(&count)
if count == 0 {
logger.Warn("No users found, starting in Setup Mode")
} else {
config.IsSetup = true
logger.Info("Application is setup")
}
} else {
logger.Error("DatabaseError", errors.ErrDatabaseUnavailable)
}
}

2
backend/config/README.md Normal file
View File

@ -0,0 +1,2 @@
These files are use in development and are not deployed as part of the final product.

View File

@ -0,0 +1,10 @@
{
"database": {
"engine": "mysql",
"host": "db",
"name": "npm",
"user": "npm",
"password": "npm",
"port": 3306
}
}

View File

@ -0,0 +1,26 @@
{
"database": {
"engine": "knex-native",
"knex": {
"client": "sqlite3",
"connection": {
"filename": "/app/config/mydb.sqlite"
},
"pool": {
"min": 0,
"max": 1,
"createTimeoutMillis": 3000,
"acquireTimeoutMillis": 30000,
"idleTimeoutMillis": 30000,
"reapIntervalMillis": 1000,
"createRetryIntervalMillis": 100,
"propagateCreateError": false
},
"migrations": {
"tableName": "migrations",
"stub": "src/backend/lib/migrate_template.js",
"directory": "src/backend/migrations"
}
}
}
}

27
backend/db.js Normal file
View File

@ -0,0 +1,27 @@
const config = require('./lib/config');
if (!config.has('database')) {
throw new Error('Database config does not exist! Please read the instructions: https://nginxproxymanager.com/setup/');
}
function generateDbConfig() {
const cfg = config.get('database');
if (cfg.engine === 'knex-native') {
return cfg.knex;
}
return {
client: cfg.engine,
connection: {
host: cfg.host,
user: cfg.user,
password: cfg.password,
database: cfg.name,
port: cfg.port
},
migrations: {
tableName: 'migrations'
}
};
}
module.exports = require('knex')(generateDbConfig());

1456
backend/doc/api.swagger.json Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,310 +0,0 @@
{
"openapi": "3.0.0",
"info": {
"title": "Nginx Proxy Manager API",
"version": "{{VERSION}}"
},
"paths": {
"/": {
"get": {
"$ref": "file://./paths/get.json"
}
},
"/auth": {
"get": {
"$ref": "file://./paths/auth/get.json"
},
"post": {
"$ref": "file://./paths/auth/post.json"
}
},
"/auth/refresh": {
"post": {
"$ref": "file://./paths/auth/refresh/post.json"
}
},
"/auth/sse": {
"post": {
"$ref": "file://./paths/auth/sse/post.json"
}
},
"/certificates": {
"get": {
"$ref": "file://./paths/certificates/get.json"
},
"post": {
"$ref": "file://./paths/certificates/post.json"
}
},
"/certificates/{certificateID}": {
"get": {
"$ref": "file://./paths/certificates/certificateID/get.json"
},
"put": {
"$ref": "file://./paths/certificates/certificateID/put.json"
},
"delete": {
"$ref": "file://./paths/certificates/certificateID/delete.json"
}
},
"/certificates-authorities": {
"get": {
"$ref": "file://./paths/certificates-authorities/get.json"
},
"post": {
"$ref": "file://./paths/certificates-authorities/post.json"
}
},
"/certificates-authorities/{caID}": {
"get": {
"$ref": "file://./paths/certificates-authorities/caID/get.json"
},
"put": {
"$ref": "file://./paths/certificates-authorities/caID/put.json"
},
"delete": {
"$ref": "file://./paths/certificates-authorities/caID/delete.json"
}
},
"/config": {
"get": {
"$ref": "file://./paths/config/get.json"
}
},
"/dns-providers": {
"get": {
"$ref": "file://./paths/dns-providers/get.json"
},
"post": {
"$ref": "file://./paths/dns-providers/post.json"
}
},
"/dns-providers/{providerID}": {
"get": {
"$ref": "file://./paths/dns-providers/providerID/get.json"
},
"put": {
"$ref": "file://./paths/dns-providers/providerID/put.json"
},
"delete": {
"$ref": "file://./paths/dns-providers/providerID/delete.json"
}
},
"/hosts": {
"get": {
"$ref": "file://./paths/hosts/get.json"
},
"post": {
"$ref": "file://./paths/hosts/post.json"
}
},
"/hosts/{hostID}": {
"get": {
"$ref": "file://./paths/hosts/hostID/get.json"
},
"put": {
"$ref": "file://./paths/hosts/hostID/put.json"
},
"delete": {
"$ref": "file://./paths/hosts/hostID/delete.json"
}
},
"/hosts/{hostID}/nginx-config": {
"get": {
"$ref": "file://./paths/hosts/hostID/nginx-config/get.json"
}
},
"/nginx-templates": {
"get": {
"$ref": "file://./paths/nginx-templates/get.json"
},
"post": {
"$ref": "file://./paths/nginx-templates/post.json"
}
},
"/nginx-templates/{templateID}": {
"get": {
"$ref": "file://./paths/nginx-templates/templateID/get.json"
},
"put": {
"$ref": "file://./paths/nginx-templates/templateID/put.json"
},
"delete": {
"$ref": "file://./paths/nginx-templates/templateID/delete.json"
}
},
"/schema": {
"get": {
"$ref": "file://./paths/schema/get.json"
}
},
"/settings": {
"get": {
"$ref": "file://./paths/settings/get.json"
},
"post": {
"$ref": "file://./paths/settings/post.json"
}
},
"/settings/{name}": {
"get": {
"$ref": "file://./paths/settings/name/get.json"
},
"put": {
"$ref": "file://./paths/settings/name/put.json"
}
},
"/streams": {
"get": {
"$ref": "file://./paths/streams/get.json"
},
"post": {
"$ref": "file://./paths/streams/post.json"
}
},
"/streams/{streamID}": {
"get": {
"$ref": "file://./paths/streams/streamID/get.json"
},
"put": {
"$ref": "file://./paths/streams/streamID/put.json"
},
"delete": {
"$ref": "file://./paths/streams/streamID/delete.json"
}
},
"/upstreams": {
"get": {
"$ref": "file://./paths/upstreams/get.json"
},
"post": {
"$ref": "file://./paths/upstreams/post.json"
}
},
"/upstreams/{upstreamID}": {
"get": {
"$ref": "file://./paths/upstreams/upstreamID/get.json"
},
"put": {
"$ref": "file://./paths/upstreams/upstreamID/put.json"
},
"delete": {
"$ref": "file://./paths/upstreams/upstreamID/delete.json"
}
},
"/upstreams/{upstreamID}/nginx-config": {
"get": {
"$ref": "file://./paths/upstreams/upstreamID/nginx-config/get.json"
}
},
"/users": {
"get": {
"$ref": "file://./paths/users/get.json"
},
"post": {
"$ref": "file://./paths/users/post.json"
}
},
"/users/{userID}": {
"get": {
"$ref": "file://./paths/users/userID/get.json"
},
"put": {
"$ref": "file://./paths/users/userID/put.json"
},
"delete": {
"$ref": "file://./paths/users/userID/delete.json"
}
},
"/users/{userID}/auth": {
"post": {
"$ref": "file://./paths/users/userID/auth/post.json"
}
}
},
"components": {
"schemas": {
"AuthConfigObject": {
"$ref": "file://./components/AuthConfigObject.json"
},
"CertificateAuthorityList": {
"$ref": "file://./components/CertificateAuthorityList.json"
},
"CertificateAuthorityObject": {
"$ref": "file://./components/CertificateAuthorityObject.json"
},
"CertificateList": {
"$ref": "file://./components/CertificateList.json"
},
"CertificateObject": {
"$ref": "file://./components/CertificateObject.json"
},
"ConfigObject": {
"$ref": "file://./components/ConfigObject.json"
},
"DeletedItemResponse": {
"$ref": "file://./components/DeletedItemResponse.json"
},
"DNSProviderList": {
"$ref": "file://./components/DNSProviderList.json"
},
"DNSProviderObject": {
"$ref": "file://./components/DNSProviderObject.json"
},
"ErrorObject": {
"$ref": "file://./components/ErrorObject.json"
},
"FilterObject": {
"$ref": "file://./components/FilterObject.json"
},
"HealthObject": {
"$ref": "file://./components/HealthObject.json"
},
"HostList": {
"$ref": "file://./components/HostList.json"
},
"HostObject": {
"$ref": "file://./components/HostObject.json"
},
"NginxTemplateList": {
"$ref": "file://./components/NginxTemplateList.json"
},
"NginxTemplateObject": {
"$ref": "file://./components/NginxTemplateObject.json"
},
"SettingList": {
"$ref": "file://./components/SettingList.json"
},
"SettingObject": {
"$ref": "file://./components/SettingObject.json"
},
"SortObject": {
"$ref": "file://./components/SortObject.json"
},
"StreamList": {
"$ref": "file://./components/StreamList.json"
},
"StreamObject": {
"$ref": "file://./components/StreamObject.json"
},
"TokenObject": {
"$ref": "file://./components/TokenObject.json"
},
"UpstreamList": {
"$ref": "file://./components/UpstreamList.json"
},
"UpstreamObject": {
"$ref": "file://./components/UpstreamObject.json"
},
"UserAuthObject": {
"$ref": "file://./components/UserAuthObject.json"
},
"UserList": {
"$ref": "file://./components/UserList.json"
},
"UserObject": {
"$ref": "file://./components/UserObject.json"
}
}
}
}

View File

@ -1,13 +0,0 @@
{
"type": "array",
"description": "AuthConfigObject",
"minItems": 1,
"items": {
"type": "string",
"enum": [
"local",
"ldap",
"oauth"
]
}
}

View File

@ -1,40 +0,0 @@
{
"type": "object",
"description": "CertificateAuthorityList",
"additionalProperties": false,
"required": ["total", "offset", "limit", "sort"],
"properties": {
"total": {
"type": "integer",
"description": "Total number of rows"
},
"offset": {
"type": "integer",
"description": "Pagination Offset"
},
"limit": {
"type": "integer",
"description": "Pagination Limit"
},
"sort": {
"type": "array",
"description": "Sorting",
"items": {
"$ref": "#/components/schemas/SortObject"
}
},
"filter": {
"type": "array",
"description": "Filters",
"items": {
"$ref": "#/components/schemas/FilterObject"
}
},
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CertificateAuthorityObject"
}
}
}
}

View File

@ -1,57 +0,0 @@
{
"type": "object",
"description": "CertificateAuthorityObject",
"additionalProperties": false,
"required": [
"id",
"created_at",
"updated_at",
"name",
"acmesh_server",
"ca_bundle",
"max_domains",
"is_wildcard_supported",
"is_readonly"
],
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"created_at": {
"type": "integer",
"minimum": 1,
"description": "Created Unix time with milliseconds"
},
"updated_at": {
"type": "integer",
"minimum": 1,
"description": "Updated Unix time with milliseconds"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"acmesh_server": {
"type": "string",
"minLength": 2,
"maxLength": 255
},
"ca_bundle": {
"type": "string",
"minLength": 0,
"maxLength": 255
},
"max_domains": {
"type": "integer",
"minimum": 1
},
"is_wildcard_supported": {
"type": "boolean"
},
"is_readonly": {
"type": "boolean"
}
}
}

View File

@ -1,40 +0,0 @@
{
"type": "object",
"description": "CertificateList",
"additionalProperties": false,
"required": ["total", "offset", "limit", "sort"],
"properties": {
"total": {
"type": "integer",
"description": "Total number of rows"
},
"offset": {
"type": "integer",
"description": "Pagination Offset"
},
"limit": {
"type": "integer",
"description": "Pagination Limit"
},
"sort": {
"type": "array",
"description": "Sorting",
"items": {
"$ref": "#/components/schemas/SortObject"
}
},
"filter": {
"type": "array",
"description": "Filters",
"items": {
"$ref": "#/components/schemas/FilterObject"
}
},
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CertificateObject"
}
}
}
}

View File

@ -1,86 +0,0 @@
{
"type": "object",
"description": "CertificateObject",
"additionalProperties": false,
"required": [
"id",
"created_at",
"updated_at",
"expires_on",
"type",
"user_id",
"certificate_authority_id",
"dns_provider_id",
"name",
"is_ecc",
"status",
"domain_names"
],
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"created_at": {
"type": "integer",
"minimum": 1,
"description": "Created Unix time with milliseconds"
},
"updated_at": {
"type": "integer",
"minimum": 1,
"description": "Updated Unix time with milliseconds"
},
"expires_on": {
"type": "integer",
"minimum": 0,
"nullable": true
},
"type": {
"type": "string",
"enum": ["custom", "http", "dns"]
},
"user_id": {
"type": "integer",
"minimum": 1
},
"certificate_authority_id": {
"type": "integer",
"minimum": 0
},
"certificate_authority": {
"$ref": "#/components/schemas/CertificateAuthorityObject"
},
"dns_provider_id": {
"type": "integer",
"minimum": 0,
"nullable": true
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"domain_names": {
"type": "array",
"minItems": 1,
"items": {
"type": "string",
"minLength": 4
}
},
"status": {
"type": "string",
"enum": ["ready", "requesting", "failed", "provided"]
},
"is_ecc": {
"type": "boolean"
},
"error_message": {
"type": "string"
},
"user": {
"$ref": "#/components/schemas/UserObject"
}
}
}

View File

@ -1,4 +0,0 @@
{
"type": "object",
"description": "ConfigObject"
}

View File

@ -1,40 +0,0 @@
{
"type": "object",
"description": "DNSProviderList",
"additionalProperties": false,
"required": ["total", "offset", "limit", "sort"],
"properties": {
"total": {
"type": "integer",
"description": "Total number of rows"
},
"offset": {
"type": "integer",
"description": "Pagination Offset"
},
"limit": {
"type": "integer",
"description": "Pagination Limit"
},
"sort": {
"type": "array",
"description": "Sorting",
"items": {
"$ref": "#/components/schemas/SortObject"
}
},
"filter": {
"type": "array",
"description": "Filters",
"items": {
"$ref": "#/components/schemas/FilterObject"
}
},
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/DNSProviderObject"
}
}
}
}

View File

@ -1,51 +0,0 @@
{
"type": "object",
"description": "DNSProviderObject",
"additionalProperties": false,
"required": [
"id",
"created_at",
"updated_at",
"user_id",
"name",
"acmesh_name",
"dns_sleep",
"meta"
],
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"created_at": {
"type": "integer",
"minimum": 1,
"description": "Created Unix time with milliseconds"
},
"updated_at": {
"type": "integer",
"minimum": 1,
"description": "Updated Unix time with milliseconds"
},
"user_id": {
"type": "integer",
"minimum": 1
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"acmesh_name": {
"type": "string",
"minLength": 4,
"maxLength": 50
},
"dns_sleep": {
"type": "integer"
},
"meta": {
"type": "object"
}
}
}

View File

@ -1,15 +0,0 @@
{
"type": "object",
"description": "DeletedItemResponse",
"additionalProperties": false,
"required": ["result"],
"properties": {
"result": {
"type": "boolean",
"nullable": true
},
"error": {
"$ref": "#/components/schemas/ErrorObject"
}
}
}

View File

@ -1,17 +0,0 @@
{
"type": "object",
"description": "ErrorObject",
"additionalProperties": false,
"required": ["code", "message"],
"properties": {
"code": {
"type": "integer",
"description": "Error code",
"minimum": 0
},
"message": {
"type": "string",
"description": "Error message"
}
}
}

View File

@ -1,24 +0,0 @@
{
"type": "object",
"description": "FilterObject",
"additionalProperties": false,
"required": ["field", "modifier", "value"],
"properties": {
"field": {
"type": "string",
"description": "Field to filter with"
},
"modifier": {
"type": "string",
"description": "Filter modifier",
"pattern": "^(equals|not|min|max|greater|lesser|contains|starts|ends|in|notin)$"
},
"value": {
"type": "array",
"description": "Values used for filtering",
"items": {
"type": "string"
}
}
}
}

View File

@ -1,31 +0,0 @@
{
"type": "object",
"description": "HealthObject",
"additionalProperties": false,
"required": ["version", "commit", "healthy", "setup"],
"properties": {
"version": {
"type": "string",
"description": "Version",
"minLength": 1
},
"commit": {
"type": "string",
"description": "Commit hash",
"minLength": 7
},
"healthy": {
"type": "boolean",
"description": "Healthy?"
},
"setup": {
"type": "boolean",
"description": "Is the application set up?"
},
"acme.sh": {
"type": "string",
"description": "Acme.sh version",
"minLength": 1
}
}
}

View File

@ -1,40 +0,0 @@
{
"type": "object",
"description": "HostList",
"additionalProperties": false,
"required": ["total", "offset", "limit", "sort"],
"properties": {
"total": {
"type": "integer",
"description": "Total number of rows"
},
"offset": {
"type": "integer",
"description": "Pagination Offset"
},
"limit": {
"type": "integer",
"description": "Pagination Limit"
},
"sort": {
"type": "array",
"description": "Sorting",
"items": {
"$ref": "#/components/schemas/SortObject"
}
},
"filter": {
"type": "array",
"description": "Filters",
"items": {
"$ref": "#/components/schemas/FilterObject"
}
},
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/HostObject"
}
}
}
}

View File

@ -1,55 +0,0 @@
{
"type": "object",
"description": "HostObject",
"additionalProperties": false,
"required": [
"id",
"created_at",
"updated_at",
"user_id",
"provider",
"name",
"domain_names"
],
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"created_at": {
"type": "integer",
"minimum": 1,
"description": "Created Unix time with milliseconds"
},
"updated_at": {
"type": "integer",
"minimum": 1,
"description": "Updated Unix time with milliseconds"
},
"user_id": {
"type": "integer",
"minimum": 1
},
"provider": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"domain_names": {
"type": "array",
"minItems": 1,
"items": {
"type": "string",
"minLength": 4
}
},
"user": {
"$ref": "#/components/schemas/UserObject"
}
}
}

View File

@ -1,40 +0,0 @@
{
"type": "object",
"description": "NginxTemplateList",
"additionalProperties": false,
"required": ["total", "offset", "limit", "sort"],
"properties": {
"total": {
"type": "integer",
"description": "Total number of rows"
},
"offset": {
"type": "integer",
"description": "Pagination Offset"
},
"limit": {
"type": "integer",
"description": "Pagination Limit"
},
"sort": {
"type": "array",
"description": "Sorting",
"items": {
"$ref": "#/components/schemas/SortObject"
}
},
"filter": {
"type": "array",
"description": "Filters",
"items": {
"$ref": "#/components/schemas/FilterObject"
}
},
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/NginxTemplateObject"
}
}
}
}

View File

@ -1,46 +0,0 @@
{
"type": "object",
"description": "NginxTemplateObject",
"additionalProperties": false,
"required": [
"id",
"created_at",
"updated_at",
"user_id",
"name",
"type",
"template"
],
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"created_at": {
"type": "integer",
"minimum": 1,
"description": "Created Unix time with milliseconds"
},
"updated_at": {
"type": "integer",
"minimum": 1,
"description": "Updated Unix time with milliseconds"
},
"user_id": {
"type": "integer",
"minimum": 1
},
"name": {
"type": "string",
"minLength": 1
},
"type": {
"type": "string",
"pattern": "^proxy|redirect|dead|stream|upstream$"
},
"template": {
"type": "string",
"minLength": 20
}
}
}

View File

@ -1,40 +0,0 @@
{
"type": "object",
"description": "SettingList",
"additionalProperties": false,
"required": ["total", "offset", "limit", "sort"],
"properties": {
"total": {
"type": "integer",
"description": "Total number of rows"
},
"offset": {
"type": "integer",
"description": "Pagination Offset"
},
"limit": {
"type": "integer",
"description": "Pagination Limit"
},
"sort": {
"type": "array",
"description": "Sorting",
"items": {
"$ref": "#/components/schemas/SortObject"
}
},
"filter": {
"type": "array",
"description": "Filters",
"items": {
"$ref": "#/components/schemas/FilterObject"
}
},
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/SettingObject"
}
}
}
}

View File

@ -1,51 +0,0 @@
{
"type": "object",
"description": "SettingObject",
"additionalProperties": false,
"required": ["id", "created_at", "updated_at", "name", "value"],
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"created_at": {
"type": "integer",
"minimum": 1,
"description": "Created Unix time with milliseconds"
},
"updated_at": {
"type": "integer",
"minimum": 1,
"description": "Updated Unix time with milliseconds"
},
"name": {
"type": "string",
"minLength": 2,
"maxLength": 100
},
"description": {
"type": "string",
"minLength": 0,
"maxLength": 100
},
"value": {
"oneOf": [
{
"type": "array"
},
{
"type": "boolean"
},
{
"type": "object"
},
{
"type": "integer"
},
{
"type": "string"
}
]
}
}
}

View File

@ -1,17 +0,0 @@
{
"type": "object",
"description": "SortObject",
"additionalProperties": false,
"required": ["field", "direction"],
"properties": {
"field": {
"type": "string",
"description": "Field for sorting on"
},
"direction": {
"type": "string",
"description": "Sort order",
"pattern": "^(ASC|DESC)$"
}
}
}

View File

@ -1,40 +0,0 @@
{
"type": "object",
"description": "StreamList",
"additionalProperties": false,
"required": ["total", "offset", "limit", "sort"],
"properties": {
"total": {
"type": "integer",
"description": "Total number of rows"
},
"offset": {
"type": "integer",
"description": "Pagination Offset"
},
"limit": {
"type": "integer",
"description": "Pagination Limit"
},
"sort": {
"type": "array",
"description": "Sorting",
"items": {
"$ref": "#/components/schemas/SortObject"
}
},
"filter": {
"type": "array",
"description": "Filters",
"items": {
"$ref": "#/components/schemas/FilterObject"
}
},
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/StreamObject"
}
}
}
}

View File

@ -1,57 +0,0 @@
{
"type": "object",
"description": "StreamObject",
"additionalProperties": false,
"required": [
"id",
"created_at",
"updated_at",
"expires_on",
"user_id",
"provider",
"name",
"domain_names"
],
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"created_at": {
"type": "integer",
"minimum": 1,
"description": "Created Unix time with milliseconds"
},
"updated_at": {
"type": "integer",
"minimum": 1,
"description": "Updated Unix time with milliseconds"
},
"expires_on": {
"type": "integer",
"minimum": 1
},
"user_id": {
"type": "integer",
"minimum": 1
},
"provider": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"domain_names": {
"type": "array",
"minItems": 1,
"items": {
"type": "string",
"minLength": 4
}
}
}
}

View File

@ -1,17 +0,0 @@
{
"type": "object",
"description": "TokenObject",
"additionalProperties": false,
"required": ["expires", "token"],
"properties": {
"expires": {
"type": "number",
"description": "Token Expiry Unix Time",
"minimum": 1
},
"token": {
"type": "string",
"description": "JWT Token"
}
}
}

View File

@ -1,40 +0,0 @@
{
"type": "object",
"description": "UpstreamList",
"additionalProperties": false,
"required": ["total", "offset", "limit", "sort"],
"properties": {
"total": {
"type": "integer",
"description": "Total number of rows"
},
"offset": {
"type": "integer",
"description": "Pagination Offset"
},
"limit": {
"type": "integer",
"description": "Pagination Limit"
},
"sort": {
"type": "array",
"description": "Sorting",
"items": {
"$ref": "#/components/schemas/SortObject"
}
},
"filter": {
"type": "array",
"description": "Filters",
"items": {
"$ref": "#/components/schemas/FilterObject"
}
},
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/UpstreamObject"
}
}
}
}

View File

@ -1,140 +0,0 @@
{
"type": "object",
"description": "UpstreamObject",
"additionalProperties": false,
"required": [
"id",
"created_at",
"updated_at",
"user_id",
"name",
"nginx_template_id",
"ip_hash",
"ntlm",
"keepalive",
"keepalive_requests",
"keepalive_time",
"keepalive_timeout",
"advanced_config",
"status",
"error_message",
"servers"
],
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"created_at": {
"type": "integer",
"minimum": 1,
"description": "Created Unix time with milliseconds"
},
"updated_at": {
"type": "integer",
"minimum": 1,
"description": "Updated Unix time with milliseconds"
},
"user_id": {
"type": "integer",
"minimum": 1
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"nginx_template_id": {
"type": "integer",
"minimum": 1
},
"ip_hash": {
"type": "boolean"
},
"ntlm": {
"type": "boolean"
},
"keepalive": {
"type": "integer"
},
"keepalive_requests": {
"type": "integer"
},
"keepalive_time": {
"type": "string"
},
"keepalive_timeout": {
"type": "string"
},
"advanced_config": {
"type": "string"
},
"status": {
"type": "string"
},
"error_message": {
"type": "string"
},
"user": {
"$ref": "#/components/schemas/UserObject"
},
"servers": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"created_at",
"updated_at",
"upstream_id",
"server",
"weight",
"max_conns",
"max_fails",
"fail_timeout",
"backup"
],
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"created_at": {
"type": "integer",
"minimum": 1,
"description": "Created Unix time with milliseconds"
},
"updated_at": {
"type": "integer",
"minimum": 1,
"description": "Updated Unix time with milliseconds"
},
"upstream_id": {
"type": "integer",
"minimum": 1
},
"server": {
"type": "string",
"minLength": 2
},
"weight": {
"type": "integer"
},
"max_conns": {
"type": "integer"
},
"max_fails": {
"type": "integer"
},
"fail_timeout": {
"type": "integer"
},
"backup": {
"type": "boolean"
}
}
}
}
}
}

View File

@ -1,30 +0,0 @@
{
"type": "object",
"description": "UserAuthObject",
"additionalProperties": false,
"required": ["id", "user_id", "type", "created_at", "updated_at"],
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"created_at": {
"type": "integer",
"minimum": 1,
"description": "Created Unix time with milliseconds"
},
"updated_at": {
"type": "integer",
"minimum": 1,
"description": "Updated Unix time with milliseconds"
},
"user_id": {
"type": "integer",
"minimum": 1
},
"type": {
"type": "string",
"pattern": "^(local|ldap|oauth)$"
}
}
}

View File

@ -1,40 +0,0 @@
{
"type": "object",
"description": "UserList",
"additionalProperties": false,
"required": ["total", "offset", "limit", "sort"],
"properties": {
"total": {
"type": "integer",
"description": "Total number of rows"
},
"offset": {
"type": "integer",
"description": "Pagination Offset"
},
"limit": {
"type": "integer",
"description": "Pagination Limit"
},
"sort": {
"type": "array",
"description": "Sorting",
"items": {
"$ref": "#/components/schemas/SortObject"
}
},
"filter": {
"type": "array",
"description": "Filters",
"items": {
"$ref": "#/components/schemas/FilterObject"
}
},
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/UserObject"
}
}
}
}

View File

@ -1,69 +0,0 @@
{
"type": "object",
"description": "UserObject",
"additionalProperties": false,
"required": [
"id",
"created_at",
"updated_at",
"name",
"email",
"is_disabled"
],
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"created_at": {
"type": "integer",
"minimum": 1,
"description": "Created Unix time with milliseconds"
},
"updated_at": {
"type": "integer",
"minimum": 1,
"description": "Updated Unix time with milliseconds"
},
"name": {
"type": "string",
"minLength": 2,
"maxLength": 50
},
"email": {
"type": "string",
"minLength": 5,
"maxLength": 150
},
"gravatar_url": {
"type": "string"
},
"is_disabled": {
"type": "boolean"
},
"is_system": {
"type": "boolean"
},
"auth": {
"type": "object",
"required": ["type"],
"properties": {
"id": {
"type": "integer"
},
"type": {
"type": "string",
"pattern": "^(local|ldap|oauth)$"
}
}
},
"capabilities": {
"type": "array",
"minItems": 1,
"items": {
"type": "string",
"minLength": 1
}
}
}
}

View File

@ -1,28 +0,0 @@
{
"operationId": "getAuthConfig",
"summary": "Returns auth configuration",
"tags": ["Auth"],
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/AuthConfigObject"
}
}
},
"examples": {
"default": {
"value": "todo"
}
}
}
}
}
}
}

View File

@ -1,75 +0,0 @@
{
"operationId": "requestToken",
"summary": "Request a new access token from credentials",
"tags": ["Auth"],
"requestBody": {
"description": "Credentials Payload",
"required": true,
"content": {
"application/json": {
"schema": "{{schema.GetToken}}"
}
}
},
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/TokenObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"expires": 1566540510,
"token": "eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.ey...xaHKYr3Kk6MvkUjcC4",
"scope": "user"
}
}
}
}
}
}
},
"403": {
"description": "403 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"additionalProperties": false,
"required": ["error"],
"properties": {
"result": {
"type": "object",
"nullable": true
},
"error": {
"$ref": "#/components/schemas/ErrorObject"
}
}
},
"examples": {
"default": {
"value": {
"result": null,
"error": {
"code": 403,
"message": "Not available during setup phase"
}
}
}
}
}
}
}
}
}

View File

@ -1,34 +0,0 @@
{
"operationId": "refreshToken",
"summary": "Refresh your access token",
"tags": ["Auth"],
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/TokenObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"expires": 1566540510,
"token": "eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.ey...xaHKYr3Kk6MvkUjcC4",
"scope": "user"
}
}
}
}
}
}
}
}
}

View File

@ -1,34 +0,0 @@
{
"operationId": "requestSSEToken",
"summary": "Request a new SSE token",
"tags": ["Auth"],
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/TokenObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"expires": 1566540510,
"token": "eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.ey...xaHKYr3Kk6MvkUjcC4",
"scope": "user"
}
}
}
}
}
}
}
}
}

View File

@ -1,39 +0,0 @@
{
"operationId": "deleteCertificateAuthority",
"summary": "Delete a Certificate Authority",
"tags": [
"Certificate Authorities"
],
"parameters": [
{
"in": "path",
"name": "caID",
"schema": {
"type": "integer",
"minimum": 1
},
"required": true,
"description": "Numeric ID of the Certificate Authority",
"example": 1
}
],
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeletedItemResponse"
},
"examples": {
"default": {
"value": {
"result": true
}
}
}
}
}
}
}
}

View File

@ -1,53 +0,0 @@
{
"operationId": "getCertificateAuthority",
"summary": "Get a Certificate Authority object by ID",
"tags": ["Certificate Authorities"],
"parameters": [
{
"in": "path",
"name": "caID",
"schema": {
"type": "integer",
"minimum": 1
},
"required": true,
"description": "ID of the Certificate Authority",
"example": 1
}
],
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/CertificateAuthorityObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 1,
"created_at": 1627531400000,
"updated_at": 1627531400000,
"name": "ZeroSSL",
"acmesh_server": "zerossl",
"ca_bundle": "",
"max_domains": 10,
"is_wildcard_supported": true,
"is_readonly": false
}
}
}
}
}
}
}
}
}

View File

@ -1,62 +0,0 @@
{
"operationId": "updateCertificateAuthority",
"summary": "Update an existing Certificate Authority",
"tags": ["Certificate Authorities"],
"parameters": [
{
"in": "path",
"name": "caID",
"schema": {
"type": "integer",
"minimum": 1
},
"required": true,
"description": "ID of the Certificate Authority",
"example": 1
}
],
"requestBody": {
"description": "Certificate Authority details to update",
"required": true,
"content": {
"application/json": {
"schema": "{{schema.UpdateCertificateAuthority}}"
}
}
},
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/CertificateAuthorityObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 1,
"created_at": 1627531400000,
"updated_at": 1627531400000,
"name": "ZeroSSL",
"acmesh_server": "zerossl",
"ca_bundle": "",
"max_domains": 10,
"is_wildcard_supported": true,
"is_readonly": false
}
}
}
}
}
}
}
}
}

View File

@ -1,93 +0,0 @@
{
"operationId": "getCertificateAuthorities",
"summary": "Get a list of Certificate Authorities",
"tags": ["Certificate Authorities"],
"parameters": [
{
"in": "query",
"name": "offset",
"schema": {
"type": "number"
},
"description": "The pagination row offset, default 0",
"example": 0
},
{
"in": "query",
"name": "limit",
"schema": {
"type": "number"
},
"description": "The pagination row limit, default 10",
"example": 10
},
{
"in": "query",
"name": "sort",
"schema": {
"type": "string"
},
"description": "The sorting of the list",
"example": "id,name.asc,value.desc"
}
],
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/CertificateAuthorityList"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"total": 2,
"offset": 0,
"limit": 10,
"sort": [
{
"field": "name",
"direction": "ASC"
}
],
"items": [
{
"id": 1,
"created_at": 1627531400000,
"updated_at": 1627531400000,
"name": "ZeroSSL",
"acmesh_server": "zerossl",
"ca_bundle": "",
"max_domains": 10,
"is_wildcard_supported": true,
"is_setup": true
},
{
"id": 2,
"created_at": 1627531400000,
"updated_at": 1627531400000,
"name": "Let's Encrypt",
"acmesh_server": "https://acme-v02.api.letsencrypt.org/directory",
"ca_bundle": "",
"max_domains": 10,
"is_wildcard_supported": true,
"is_setup": true
}
]
}
}
}
}
}
}
}
}
}

View File

@ -1,49 +0,0 @@
{
"operationId": "createCertificateAuthority",
"summary": "Create a new Certificate Authority",
"tags": ["Certificate Authorities"],
"requestBody": {
"description": "Certificate Authority to Create",
"required": true,
"content": {
"application/json": {
"schema": "{{schema.CreateCertificateAuthority}}"
}
}
},
"responses": {
"201": {
"description": "201 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/CertificateAuthorityObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 1,
"created_at": 1627531400000,
"updated_at": 1627531400000,
"name": "ZeroSSL",
"acmesh_server": "zerossl",
"ca_bundle": "",
"max_domains": 10,
"is_wildcard_supported": true,
"is_readonly": false
}
}
}
}
}
}
}
}
}

View File

@ -1,60 +0,0 @@
{
"operationId": "deleteCertificate",
"summary": "Delete a Certificate",
"tags": [
"Certificates"
],
"parameters": [
{
"in": "path",
"name": "certificateID",
"schema": {
"type": "integer",
"minimum": 1
},
"required": true,
"description": "Numeric ID of the certificate",
"example": 1
}
],
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeletedItemResponse"
},
"examples": {
"default": {
"value": {
"result": true
}
}
}
}
}
},
"400": {
"description": "400 response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeletedItemResponse"
},
"examples": {
"default": {
"value": {
"result": null,
"error": {
"code": 400,
"message": "You cannot delete a certificate that is in use!"
}
}
}
}
}
}
}
}
}

View File

@ -1,56 +0,0 @@
{
"operationId": "getCertificate",
"summary": "Get a certificate object by ID",
"tags": ["Certificates"],
"parameters": [
{
"in": "path",
"name": "certificateID",
"schema": {
"type": "integer",
"minimum": 1
},
"required": true,
"description": "ID of the certificate",
"example": 1
}
],
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/CertificateObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 1,
"created_at": 1604536109000,
"updated_at": 1604536109000,
"expires_on": null,
"type": "dns",
"user_id": 1,
"certificate_authority_id": 2,
"dns_provider_id": 1,
"name": "test1.jc21.com.au",
"domain_names": ["test1.jc21.com.au"],
"is_ecc": 0,
"status": "ready"
}
}
}
}
}
}
}
}
}

View File

@ -1,65 +0,0 @@
{
"operationId": "updateCertificate",
"summary": "Update an existing Certificate",
"tags": ["Certificates"],
"parameters": [
{
"in": "path",
"name": "certificateID",
"schema": {
"type": "integer",
"minimum": 1
},
"required": true,
"description": "ID of the certificate",
"example": 1
}
],
"requestBody": {
"description": "Certificate details to update",
"required": true,
"content": {
"application/json": {
"schema": "{{schema.UpdateCertificate}}"
}
}
},
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/CertificateObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 1,
"created_at": 1604536109000,
"updated_at": 1604536109000,
"expires_on": null,
"type": "dns",
"user_id": 1,
"certificate_authority_id": 2,
"dns_provider_id": 1,
"name": "test1.jc21.com.au",
"domain_names": ["test1.jc21.com.au"],
"is_ecc": 0,
"status": "ready"
}
}
}
}
}
}
}
}
}

View File

@ -1,87 +0,0 @@
{
"operationId": "getCertificates",
"summary": "Get a list of certificates",
"tags": ["Certificates"],
"parameters": [
{
"in": "query",
"name": "offset",
"schema": {
"type": "number"
},
"description": "The pagination row offset, default 0",
"example": 0
},
{
"in": "query",
"name": "limit",
"schema": {
"type": "number"
},
"description": "The pagination row limit, default 10",
"example": 10
},
{
"in": "query",
"name": "sort",
"schema": {
"type": "string"
},
"description": "The sorting of the list",
"example": "id,name.asc,value.desc"
}
],
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/CertificateList"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"total": 1,
"offset": 0,
"limit": 10,
"sort": [
{
"field": "name",
"direction": "ASC"
}
],
"items": [
{
"id": 1,
"created_at": 1604536109000,
"updated_at": 1604536109000,
"expires_on": null,
"type": "dns",
"user_id": 1,
"certificate_authority_id": 2,
"dns_provider_id": 1,
"name": "test1.jc21.com.au",
"domain_names": [
"test1.jc21.com.au"
],
"is_ecc": 0,
"status": "ready"
}
]
}
}
}
}
}
}
}
}
}

View File

@ -1,52 +0,0 @@
{
"operationId": "createCertificate",
"summary": "Create a new Certificate",
"tags": ["Certificates"],
"requestBody": {
"description": "Certificate to create",
"required": true,
"content": {
"application/json": {
"schema": "{{schema.CreateCertificate}}"
}
}
},
"responses": {
"201": {
"description": "201 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/CertificateObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 1,
"created_at": 1604536109000,
"updated_at": 1604536109000,
"expires_on": null,
"type": "dns",
"user_id": 1,
"certificate_authority_id": 2,
"dns_provider_id": 1,
"name": "test1.jc21.com.au",
"domain_names": ["test1.jc21.com.au"],
"is_ecc": 0,
"status": "ready"
}
}
}
}
}
}
}
}
}

View File

@ -1,35 +0,0 @@
{
"operationId": "config",
"summary": "Returns the API Service configuration",
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/ConfigObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"data": "/data",
"log": {
"level": "debug",
"format": "nice"
}
}
}
}
}
}
}
}
}
}

View File

@ -1,83 +0,0 @@
{
"operationId": "getDNSProviders",
"summary": "Get a list of DNS Providers",
"tags": ["DNS Providers"],
"parameters": [
{
"in": "query",
"name": "offset",
"schema": {
"type": "number"
},
"description": "The pagination row offset, default 0",
"example": 0
},
{
"in": "query",
"name": "limit",
"schema": {
"type": "number"
},
"description": "The pagination row limit, default 10",
"example": 10
},
{
"in": "query",
"name": "sort",
"schema": {
"type": "string"
},
"description": "The sorting of the list",
"example": "id,name.asc,value.desc"
}
],
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/DNSProviderList"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"total": 1,
"offset": 0,
"limit": 10,
"sort": [
{
"field": "name",
"direction": "ASC"
}
],
"items": [
{
"id": 1,
"created_at": 1602593653000,
"updated_at": 1602593653000,
"user_id": 1,
"name": "Route53",
"acmesh_name": "dns_aws",
"meta": {
"AWS_ACCESS_KEY_ID": "abc123",
"AWS_SECRET_ACCESS_KEY": "def098"
}
}
]
}
}
}
}
}
}
}
}
}

View File

@ -1,50 +0,0 @@
{
"operationId": "createDNSProvider",
"summary": "Create a new DNS Provider",
"tags": ["DNS Providers"],
"requestBody": {
"description": "DNS Provider to Create",
"required": true,
"content": {
"application/json": {
"schema": "{{schema.CreateDNSProvider}}"
}
}
},
"responses": {
"201": {
"description": "201 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/DNSProviderObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 1,
"created_at": 1602593653000,
"updated_at": 1602593653000,
"user_id": 1,
"name": "Route53",
"acmesh_name": "dns_aws",
"meta": {
"AWS_ACCESS_KEY_ID": "abc123",
"AWS_SECRET_ACCESS_KEY": "def098"
}
}
}
}
}
}
}
}
}
}

View File

@ -1,60 +0,0 @@
{
"operationId": "deleteDNSProvider",
"summary": "Delete a DNS Provider",
"tags": [
"DNS Providers"
],
"parameters": [
{
"in": "path",
"name": "providerID",
"schema": {
"type": "integer",
"minimum": 1
},
"required": true,
"description": "Numeric ID of the DNS Provider",
"example": 1
}
],
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeletedItemResponse"
},
"examples": {
"default": {
"value": {
"result": true
}
}
}
}
}
},
"400": {
"description": "400 response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeletedItemResponse"
},
"examples": {
"default": {
"value": {
"result": null,
"error": {
"code": 400,
"message": "You cannot delete a DNS Provider that is in use!"
}
}
}
}
}
}
}
}
}

View File

@ -1,54 +0,0 @@
{
"operationId": "getDNSProvider",
"summary": "Get a DNS Provider object by ID",
"tags": ["DNS Providers"],
"parameters": [
{
"in": "path",
"name": "providerID",
"schema": {
"type": "integer",
"minimum": 1
},
"required": true,
"description": "ID of the DNS Provider",
"example": 1
}
],
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/DNSProviderObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 1,
"created_at": 1602593653000,
"updated_at": 1602593653000,
"user_id": 1,
"name": "Route53",
"acmesh_name": "dns_aws",
"meta": {
"AWS_ACCESS_KEY_ID": "abc123",
"AWS_SECRET_ACCESS_KEY": "def098"
}
}
}
}
}
}
}
}
}
}

View File

@ -1,65 +0,0 @@
{
"operationId": "updateDNSProvider",
"summary": "Update an existing DNS Provider",
"tags": ["DNS Providers"],
"parameters": [
{
"in": "path",
"name": "providerID",
"schema": {
"type": "integer",
"minimum": 1
},
"required": true,
"description": "ID of the DNS Provider",
"example": 1
}
],
"requestBody": {
"description": "DNS Provider details to update",
"required": true,
"content": {
"application/json": {
"schema": "{{schema.UpdateDNSProvider}}"
}
}
},
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/DNSProviderObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"result": {
"id": 1,
"created_at": 1602593653000,
"updated_at": 1602593653000,
"user_id": 1,
"name": "Route53",
"acmesh_name": "dns_aws",
"meta": {
"AWS_ACCESS_KEY_ID": "abc123",
"AWS_SECRET_ACCESS_KEY": "def098"
}
}
}
}
}
}
}
}
}
}
}

View File

@ -1,44 +0,0 @@
{
"operationId": "health",
"summary": "Returns the API health status",
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/HealthObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"version": "3.0.0",
"commit": "9f119b6",
"healthy": true,
"setup": true
}
}
},
"unhealthy": {
"value": {
"result": {
"version": "3.0.0",
"commit": "9f119b6",
"healthy": false,
"setup": true
}
}
}
}
}
}
}
}
}

View File

@ -1,94 +0,0 @@
{
"operationId": "getHosts",
"summary": "Get a list of Hosts",
"tags": ["Hosts"],
"parameters": [
{
"in": "query",
"name": "offset",
"schema": {
"type": "number"
},
"description": "The pagination row offset, default 0",
"example": 0
},
{
"in": "query",
"name": "limit",
"schema": {
"type": "number"
},
"description": "The pagination row limit, default 10",
"example": 10
},
{
"in": "query",
"name": "sort",
"schema": {
"type": "string"
},
"description": "The sorting of the list",
"example": "id,name.asc,value.desc"
}
],
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/HostList"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"total": 1,
"offset": 0,
"limit": 10,
"sort": [
{
"field": "domain_names",
"direction": "ASC"
}
],
"items": [
{
"id": 1,
"created_at": 1646279455000,
"updated_at": 1646279455000,
"user_id": 2,
"type": "proxy",
"nginx_template_id": 1,
"listen_interface": "",
"domain_names": ["jc21.com"],
"upstream_id": 0,
"certificate_id": 0,
"access_list_id": 0,
"ssl_forced": false,
"caching_enabled": false,
"block_exploits": false,
"allow_websocket_upgrade": false,
"http2_support": false,
"hsts_enabled": false,
"hsts_subdomains": false,
"paths": "",
"advanced_config": "",
"is_disabled": false
}
]
}
}
}
}
}
}
}
}
}

View File

@ -1,60 +0,0 @@
{
"operationId": "deleteHost",
"summary": "Delete a Host",
"tags": [
"Hosts"
],
"parameters": [
{
"in": "path",
"name": "hostID",
"schema": {
"type": "integer",
"minimum": 1
},
"required": true,
"description": "Numeric ID of the Host",
"example": 1
}
],
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeletedItemResponse"
},
"examples": {
"default": {
"value": {
"result": true
}
}
}
}
}
},
"400": {
"description": "400 response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeletedItemResponse"
},
"examples": {
"default": {
"value": {
"result": null,
"error": {
"code": 400,
"message": "You cannot delete a host that is in use!"
}
}
}
}
}
}
}
}
}

View File

@ -1,65 +0,0 @@
{
"operationId": "getHost",
"summary": "Get a Host object by ID",
"tags": ["Hosts"],
"parameters": [
{
"in": "path",
"name": "hostID",
"schema": {
"type": "integer",
"minimum": 1
},
"required": true,
"description": "ID of the Host",
"example": 1
}
],
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/HostObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 1,
"created_at": 1646279455000,
"updated_at": 1646279455000,
"user_id": 2,
"type": "proxy",
"nginx_template_id": 1,
"listen_interface": "",
"domain_names": ["jc21.com"],
"upstream_id": 0,
"certificate_id": 0,
"access_list_id": 0,
"ssl_forced": false,
"caching_enabled": false,
"block_exploits": false,
"allow_websocket_upgrade": false,
"http2_support": false,
"hsts_enabled": false,
"hsts_subdomains": false,
"paths": "",
"advanced_config": "",
"is_disabled": false
}
}
}
}
}
}
}
}
}

View File

@ -1,43 +0,0 @@
{
"operationId": "getHostNginxConfig",
"summary": "Get a Host Nginx Config object by ID",
"tags": ["Hosts"],
"parameters": [
{
"in": "path",
"name": "hostID",
"schema": {
"type": "integer",
"minimum": 1
},
"required": true,
"description": "ID of the Host",
"example": 1
}
],
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"type": "string"
}
}
},
"examples": {
"default": {
"value": {
"result": "# ------------------------------------------------------------\n# a.example.com\n# ------------------------------------------------------------\nserver {\n listen 80;\n server_name a.example.com ;\n access_log /data/logs/host-1_access.log proxy;\n error_log /data/logs/host-1_error.log warn;\n # locations ?\n # default location:\n location / {\n # Access Rules ? todo\n # Access checks must...? todo\n # Proxy!\n add_header X-Served-By $host;\n proxy_set_header Host $host;\n proxy_set_header X-Forwarded-Scheme $scheme;\n proxy_set_header X-Forwarded-Proto $scheme;\n proxy_set_header X-Forwarded-For $remote_addr;\n proxy_http_version 1.1;\n # proxy a single host\n proxy_pass http://192.168.0.10:80;\n }\n # Legacy Custom Configuration\n include /data/nginx/custom/server_proxy[.]conf;\n}\n"
}
}
}
}
}
}
}
}

View File

@ -1,74 +0,0 @@
{
"operationId": "updateHost",
"summary": "Update an existing Host",
"tags": ["Hosts"],
"parameters": [
{
"in": "path",
"name": "hostID",
"schema": {
"type": "integer",
"minimum": 1
},
"required": true,
"description": "ID of the Host",
"example": 1
}
],
"requestBody": {
"description": "Host details to update",
"required": true,
"content": {
"application/json": {
"schema": "{{schema.UpdateHost}}"
}
}
},
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/HostObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 1,
"created_at": 1646279455000,
"updated_at": 1646279455000,
"user_id": 2,
"type": "proxy",
"nginx_template_id": 1,
"listen_interface": "",
"domain_names": ["jc21.com"],
"upstream_id": 0,
"certificate_id": 0,
"access_list_id": 0,
"ssl_forced": false,
"caching_enabled": false,
"block_exploits": false,
"allow_websocket_upgrade": false,
"http2_support": false,
"hsts_enabled": false,
"hsts_subdomains": false,
"paths": "",
"advanced_config": "",
"is_disabled": false
}
}
}
}
}
}
}
}
}

View File

@ -1,61 +0,0 @@
{
"operationId": "createHost",
"summary": "Create a new Host",
"tags": ["Hosts"],
"requestBody": {
"description": "Host to Create",
"required": true,
"content": {
"application/json": {
"schema": "{{schema.CreateHost}}"
}
}
},
"responses": {
"201": {
"description": "201 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/HostObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 1,
"created_at": 1645700556000,
"updated_at": 1645700556000,
"user_id": 2,
"type": "proxy",
"nginx_template_id": 1,
"listen_interface": "",
"domain_names": ["jc21.com"],
"upstream_id": 0,
"certificate_id": 0,
"access_list_id": 0,
"ssl_forced": false,
"caching_enabled": false,
"block_exploits": false,
"allow_websocket_upgrade": false,
"http2_support": false,
"hsts_enabled": false,
"hsts_subdomains": false,
"paths": "",
"advanced_config": "",
"is_disabled": false
}
}
}
}
}
}
}
}
}

View File

@ -1,80 +0,0 @@
{
"operationId": "getNginxTemplates",
"summary": "Get a list of Nginx Templates",
"tags": ["Nginx Templates"],
"parameters": [
{
"in": "query",
"name": "offset",
"schema": {
"type": "number"
},
"description": "The pagination row offset, default 0",
"example": 0
},
{
"in": "query",
"name": "limit",
"schema": {
"type": "number"
},
"description": "The pagination row limit, default 10",
"example": 10
},
{
"in": "query",
"name": "sort",
"schema": {
"type": "string"
},
"description": "The sorting of the list",
"example": "id,name.asc,value.desc"
}
],
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/NginxTemplateList"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"total": 1,
"offset": 0,
"limit": 10,
"sort": [
{
"field": "created_at",
"direction": "ASC"
}
],
"items": [
{
"id": 1,
"created_at": 1646218093000,
"updated_at": 1646218093000,
"user_id": 1,
"name": "Default Proxy Template",
"type": "proxy",
"template": "# this is a proxy template"
}
]
}
}
}
}
}
}
}
}
}

View File

@ -1,47 +0,0 @@
{
"operationId": "createNginxTemplate",
"summary": "Create a new Nginx Template",
"tags": ["Nginx Templates"],
"requestBody": {
"description": "Template to Create",
"required": true,
"content": {
"application/json": {
"schema": "{{schema.CreateNginxTemplate}}"
}
}
},
"responses": {
"201": {
"description": "201 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/NginxTemplateObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 10,
"created_at": 1646218093000,
"updated_at": 1646218093000,
"user_id": 1,
"name": "My proxy template",
"type": "proxy",
"template": "# this is a proxy template"
}
}
}
}
}
}
}
}
}

View File

@ -1,58 +0,0 @@
{
"operationId": "deleteNginxTemplate",
"summary": "Delete a Nginx Template",
"tags": ["Nginx Templates"],
"parameters": [
{
"in": "path",
"name": "templateID",
"schema": {
"type": "integer",
"minimum": 1
},
"required": true,
"description": "Numeric ID of the Template",
"example": 1
}
],
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeletedItemResponse"
},
"examples": {
"default": {
"value": {
"result": true
}
}
}
}
}
},
"400": {
"description": "400 response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeletedItemResponse"
},
"examples": {
"default": {
"value": {
"result": null,
"error": {
"code": 400,
"message": "You cannot delete a template that is in use!"
}
}
}
}
}
}
}
}
}

View File

@ -1,51 +0,0 @@
{
"operationId": "getNginxTemplate",
"summary": "Get a Nginx Template object by ID",
"tags": ["Nginx Templates"],
"parameters": [
{
"in": "path",
"name": "templateID",
"schema": {
"type": "integer",
"minimum": 1
},
"required": true,
"description": "ID of the Host Template",
"example": 1
}
],
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/NginxTemplateObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 1,
"created_at": 1646218093000,
"updated_at": 1646218093000,
"user_id": 1,
"name": "Default Proxy Template",
"type": "proxy",
"template": "# this is a proxy template"
}
}
}
}
}
}
}
}
}

View File

@ -1,60 +0,0 @@
{
"operationId": "updateNginxTemplate",
"summary": "Update an existing Nginx Template",
"tags": ["Nginx Templates"],
"parameters": [
{
"in": "path",
"name": "templateID",
"schema": {
"type": "integer",
"minimum": 1
},
"required": true,
"description": "ID of the Template",
"example": 1
}
],
"requestBody": {
"description": "Template details to update",
"required": true,
"content": {
"application/json": {
"schema": "{{schema.UpdateNginxTemplate}}"
}
}
},
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/NginxTemplateObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 1,
"created_at": 1646218093000,
"updated_at": 1646218093000,
"user_id": 1,
"name": "My renamed proxy template",
"type": "proxy",
"template": "# this is a proxy template"
}
}
}
}
}
}
}
}
}

View File

@ -1,9 +0,0 @@
{
"operationId": "schema",
"summary": "Returns this swagger API schema",
"responses": {
"200": {
"description": "200 response"
}
}
}

View File

@ -1,81 +0,0 @@
{
"operationId": "getSettings",
"summary": "Get a list of settings",
"tags": ["Settings"],
"parameters": [
{
"in": "query",
"name": "offset",
"schema": {
"type": "number"
},
"description": "The pagination row offset, default 0",
"example": 0
},
{
"in": "query",
"name": "limit",
"schema": {
"type": "number"
},
"description": "The pagination row limit, default 10",
"example": 10
},
{
"in": "query",
"name": "sort",
"schema": {
"type": "string"
},
"description": "The sorting of the list",
"example": "id,name.asc,value.desc"
}
],
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/SettingList"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"total": 1,
"offset": 0,
"limit": 10,
"sort": [
{
"field": "name",
"direction": "ASC"
}
],
"items": [
{
"id": 1,
"created_at": 1578010090000,
"updated_at": 1578010095000,
"name": "default-site",
"value": {
"html": "<p>not found</p>",
"type": "custom"
}
}
]
}
}
}
}
}
}
}
}
}

View File

@ -1,52 +0,0 @@
{
"operationId": "getSetting",
"summary": "Get a setting object by name",
"tags": ["Settings"],
"parameters": [
{
"in": "path",
"name": "name",
"schema": {
"type": "string",
"minLength": 2
},
"required": true,
"description": "Name of the setting",
"example": "default-site"
}
],
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/SettingObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 2,
"created_at": 1578010090000,
"updated_at": 1578010095000,
"name": "default-site",
"value": {
"html": "<p>not found</p>",
"type": "custom"
}
}
}
}
}
}
}
}
}
}

View File

@ -1,61 +0,0 @@
{
"operationId": "updateSetting",
"summary": "Update an existing Setting",
"tags": ["Settings"],
"parameters": [
{
"in": "path",
"name": "name",
"schema": {
"type": "string",
"minLength": 2
},
"required": true,
"description": "Name of the setting",
"example": "default-site"
}
],
"requestBody": {
"description": "Setting details to update",
"required": true,
"content": {
"application/json": {
"schema": "{{schema.UpdateSetting}}"
}
}
},
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/SettingObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 2,
"created_at": 1578010090000,
"updated_at": 1578010090000,
"name": "default-site",
"value": {
"html": "<p>not found</p>",
"type": "custom"
}
}
}
}
}
}
}
}
}
}

View File

@ -1,48 +0,0 @@
{
"operationId": "createSetting",
"summary": "Create a new Setting",
"tags": ["Settings"],
"requestBody": {
"description": "Setting to Create",
"required": true,
"content": {
"application/json": {
"schema": "{{schema.CreateSetting}}"
}
}
},
"responses": {
"201": {
"description": "201 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/SettingObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 2,
"created_at": 1578010090000,
"updated_at": 1578010090000,
"name": "default-site",
"value": {
"html": "<p>not found</p>",
"type": "custom"
}
}
}
}
}
}
}
}
}
}

View File

@ -1,70 +0,0 @@
{
"operationId": "getStreams",
"summary": "Get a list of Streams",
"tags": ["Streams"],
"parameters": [
{
"in": "query",
"name": "offset",
"schema": {
"type": "number"
},
"description": "The pagination row offset, default 0",
"example": 0
},
{
"in": "query",
"name": "limit",
"schema": {
"type": "number"
},
"description": "The pagination row limit, default 10",
"example": 10
},
{
"in": "query",
"name": "sort",
"schema": {
"type": "string"
},
"description": "The sorting of the list",
"example": "id,name.asc,value.desc"
}
],
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/StreamList"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"total": 1,
"offset": 0,
"limit": 10,
"sort": [
{
"field": "name",
"direction": "ASC"
}
],
"items": ["TODO"]
}
}
}
}
}
}
}
}
}

View File

@ -1,39 +0,0 @@
{
"operationId": "createStream",
"summary": "Create a new Stream",
"tags": ["Streams"],
"requestBody": {
"description": "Stream to Create",
"required": true,
"content": {
"application/json": {
"schema": "{{schema.CreateStream}}"
}
}
},
"responses": {
"201": {
"description": "201 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/StreamObject"
}
}
},
"examples": {
"default": {
"value": {
"result": "TODO"
}
}
}
}
}
}
}
}

View File

@ -1,60 +0,0 @@
{
"operationId": "deleteStream",
"summary": "Delete a Stream",
"tags": [
"Streams"
],
"parameters": [
{
"in": "path",
"name": "streamID",
"schema": {
"type": "integer",
"minimum": 1
},
"required": true,
"description": "Numeric ID of the Stream",
"example": 1
}
],
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeletedItemResponse"
},
"examples": {
"default": {
"value": {
"result": true
}
}
}
}
}
},
"400": {
"description": "400 response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeletedItemResponse"
},
"examples": {
"default": {
"value": {
"result": null,
"error": {
"code": 400,
"message": "You cannot delete a Stream that is in use!"
}
}
}
}
}
}
}
}
}

View File

@ -1,43 +0,0 @@
{
"operationId": "getStream",
"summary": "Get a Stream object by ID",
"tags": ["Streams"],
"parameters": [
{
"in": "path",
"name": "streamID",
"schema": {
"type": "integer",
"minimum": 1
},
"required": true,
"description": "ID of the Stream",
"example": 1
}
],
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/StreamObject"
}
}
},
"examples": {
"default": {
"value": {
"result": "TODO"
}
}
}
}
}
}
}
}

View File

@ -1,52 +0,0 @@
{
"operationId": "updateStream",
"summary": "Update an existing Stream",
"tags": ["Streams"],
"parameters": [
{
"in": "path",
"name": "streamID",
"schema": {
"type": "integer",
"minimum": 1
},
"required": true,
"description": "ID of the Stream",
"example": 1
}
],
"requestBody": {
"description": "Stream details to update",
"required": true,
"content": {
"application/json": {
"schema": "{{schema.UpdateStream}}"
}
}
},
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/StreamObject"
}
}
},
"examples": {
"default": {
"value": {
"result": "TODO"
}
}
}
}
}
}
}
}

View File

@ -1,286 +0,0 @@
{
"operationId": "getUpstreams",
"summary": "Get a list of Upstreams",
"tags": ["Upstreams"],
"parameters": [
{
"in": "query",
"name": "offset",
"schema": {
"type": "number"
},
"description": "The pagination row offset, default 0",
"example": 0
},
{
"in": "query",
"name": "limit",
"schema": {
"type": "number"
},
"description": "The pagination row limit, default 10",
"example": 10
},
{
"in": "query",
"name": "sort",
"schema": {
"type": "string"
},
"description": "The sorting of the list",
"example": "id,name.asc,value.desc"
}
],
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/UpstreamList"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"total": 5,
"offset": 0,
"limit": 10,
"sort": [
{
"field": "name",
"direction": "ASC"
}
],
"items": [
{
"id": 1,
"created_at": 1672804124000,
"updated_at": 1672804124000,
"user_id": 2,
"name": "API servers",
"nginx_template_id": 5,
"ip_hash": true,
"ntlm": false,
"keepalive": 10,
"keepalive_requests": 10,
"keepalive_time": "60s",
"keepalive_timeout": "3s",
"advanced_config": "",
"status": "ok",
"error_message": "",
"servers": [
{
"id": 1,
"created_at": 1672804124000,
"updated_at": 1672804124000,
"upstream_group_id": 1,
"server": "192.168.0.10:80",
"weight": 100,
"max_conns": 0,
"max_fails": 0,
"fail_timeout": 0,
"backup": false
},
{
"id": 2,
"created_at": 1672804124000,
"updated_at": 1672804124000,
"upstream_group_id": 1,
"server": "192.168.0.11:80",
"weight": 50,
"max_conns": 0,
"max_fails": 0,
"fail_timeout": 0,
"backup": false
}
]
},
{
"id": 2,
"created_at": 1672804197000,
"updated_at": 1672804197000,
"user_id": 2,
"name": "API servers 2",
"nginx_template_id": 5,
"ip_hash": false,
"ntlm": false,
"keepalive": 0,
"keepalive_requests": 0,
"keepalive_time": "",
"keepalive_timeout": "",
"advanced_config": "",
"status": "ok",
"error_message": "",
"servers": [
{
"id": 3,
"created_at": 1672804197000,
"updated_at": 1672804197000,
"upstream_group_id": 2,
"server": "192.168.0.10:80",
"weight": 100,
"max_conns": 0,
"max_fails": 0,
"fail_timeout": 0,
"backup": false
},
{
"id": 4,
"created_at": 1672804197000,
"updated_at": 1672804197000,
"upstream_group_id": 2,
"server": "192.168.0.11:80",
"weight": 50,
"max_conns": 0,
"max_fails": 0,
"fail_timeout": 0,
"backup": false
}
]
},
{
"id": 3,
"created_at": 1672804200000,
"updated_at": 1672804200000,
"user_id": 2,
"name": "API servers 2",
"nginx_template_id": 5,
"ip_hash": false,
"ntlm": false,
"keepalive": 0,
"keepalive_requests": 0,
"keepalive_time": "",
"keepalive_timeout": "",
"advanced_config": "",
"status": "ok",
"error_message": "",
"servers": [
{
"id": 5,
"created_at": 1672804200000,
"updated_at": 1672804200000,
"upstream_group_id": 3,
"server": "192.168.0.10:80",
"weight": 100,
"max_conns": 0,
"max_fails": 0,
"fail_timeout": 0,
"backup": false
},
{
"id": 6,
"created_at": 1672804200000,
"updated_at": 1672804200000,
"upstream_group_id": 3,
"server": "192.168.0.11:80",
"weight": 50,
"max_conns": 0,
"max_fails": 0,
"fail_timeout": 0,
"backup": false
}
]
},
{
"id": 4,
"created_at": 1672804201000,
"updated_at": 1672804201000,
"user_id": 2,
"name": "API servers 2",
"nginx_template_id": 5,
"ip_hash": false,
"ntlm": false,
"keepalive": 0,
"keepalive_requests": 0,
"keepalive_time": "",
"keepalive_timeout": "",
"advanced_config": "",
"status": "ok",
"error_message": "",
"servers": [
{
"id": 7,
"created_at": 1672804201000,
"updated_at": 1672804201000,
"upstream_group_id": 4,
"server": "192.168.0.10:80",
"weight": 100,
"max_conns": 0,
"max_fails": 0,
"fail_timeout": 0,
"backup": false
},
{
"id": 8,
"created_at": 1672804201000,
"updated_at": 1672804201000,
"upstream_group_id": 4,
"server": "192.168.0.11:80",
"weight": 50,
"max_conns": 0,
"max_fails": 0,
"fail_timeout": 0,
"backup": false
}
]
},
{
"id": 5,
"created_at": 1672804201000,
"updated_at": 1672804201000,
"user_id": 2,
"name": "API servers 2",
"nginx_template_id": 5,
"ip_hash": false,
"ntlm": false,
"keepalive": 0,
"keepalive_requests": 0,
"keepalive_time": "",
"keepalive_timeout": "",
"advanced_config": "",
"status": "ok",
"error_message": "",
"servers": [
{
"id": 9,
"created_at": 1672804201000,
"updated_at": 1672804201000,
"upstream_group_id": 5,
"server": "192.168.0.10:80",
"weight": 100,
"max_conns": 0,
"max_fails": 0,
"fail_timeout": 0,
"backup": false
},
{
"id": 10,
"created_at": 1672804201000,
"updated_at": 1672804201000,
"upstream_group_id": 5,
"server": "192.168.0.11:80",
"weight": 50,
"max_conns": 0,
"max_fails": 0,
"fail_timeout": 0,
"backup": false
}
]
}
]
}
}
}
}
}
}
}
}
}

View File

@ -1,81 +0,0 @@
{
"operationId": "createUpstream",
"summary": "Create a new Upstream",
"tags": ["Upstreams"],
"requestBody": {
"description": "Upstream to Create",
"required": true,
"content": {
"application/json": {
"schema": "{{schema.CreateUpstream}}"
}
}
},
"responses": {
"201": {
"description": "201 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/UpstreamObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 6,
"created_at": 1672806857000,
"updated_at": 1672806857000,
"user_id": 2,
"name": "API servers 2",
"nginx_template_id": 5,
"ip_hash": false,
"ntlm": false,
"keepalive": 0,
"keepalive_requests": 0,
"keepalive_time": "",
"keepalive_timeout": "",
"advanced_config": "",
"status": "ready",
"error_message": "",
"servers": [
{
"id": 11,
"created_at": 1672806857000,
"updated_at": 1672806857000,
"upstream_id": 6,
"server": "192.168.0.10:80",
"weight": 100,
"max_conns": 0,
"max_fails": 0,
"fail_timeout": 0,
"backup": false
},
{
"id": 12,
"created_at": 1672806857000,
"updated_at": 1672806857000,
"upstream_id": 6,
"server": "192.168.0.11:80",
"weight": 50,
"max_conns": 0,
"max_fails": 0,
"fail_timeout": 0,
"backup": false
}
]
}
}
}
}
}
}
}
}
}

View File

@ -1,58 +0,0 @@
{
"operationId": "deleteUpstream",
"summary": "Delete a Upstream",
"tags": ["Upstreams"],
"parameters": [
{
"in": "path",
"name": "upstreamID",
"schema": {
"type": "integer",
"minimum": 1
},
"required": true,
"description": "Numeric ID of the Upstream",
"example": 1
}
],
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeletedItemResponse"
},
"examples": {
"default": {
"value": {
"result": true
}
}
}
}
}
},
"400": {
"description": "400 response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeletedItemResponse"
},
"examples": {
"default": {
"value": {
"result": null,
"error": {
"code": 400,
"message": "You cannot delete a Upstream that is in use!"
}
}
}
}
}
}
}
}
}

View File

@ -1,82 +0,0 @@
{
"operationId": "getUpstream",
"summary": "Get a Upstream object by ID",
"tags": ["Upstreams"],
"parameters": [
{
"in": "path",
"name": "upstreamID",
"schema": {
"type": "integer",
"minimum": 1
},
"required": true,
"description": "ID of the Upstream",
"example": 1
}
],
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/UpstreamObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 1,
"created_at": 1672786008000,
"updated_at": 1672786008000,
"user_id": 2,
"name": "API servers 3",
"ip_hash": true,
"ntlm": false,
"keepalive": 10,
"keepalive_requests": 10,
"keepalive_time": "60s",
"keepalive_timeout": "3s",
"advanced_config": "",
"servers": [
{
"id": 1,
"created_at": 1672786009000,
"updated_at": 1672786009000,
"upstream_id": 1,
"server": "api1.localhost:1234",
"weight": 100,
"max_conns": 0,
"max_fails": 0,
"fail_timeout": 0,
"backup": false
},
{
"id": 2,
"created_at": 1672786009000,
"updated_at": 1672786009000,
"upstream_id": 1,
"server": "api2.localhost:1234",
"weight": 50,
"max_conns": 0,
"max_fails": 0,
"fail_timeout": 0,
"backup": true
}
]
}
}
}
}
}
}
}
}
}

View File

@ -1,43 +0,0 @@
{
"operationId": "getUpstreamNginxConfig",
"summary": "Get a Upstream Nginx Config object by ID",
"tags": ["Upstreams"],
"parameters": [
{
"in": "path",
"name": "upstreamID",
"schema": {
"type": "integer",
"minimum": 1
},
"required": true,
"description": "ID of the Upstream",
"example": 1
}
],
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"type": "string"
}
}
},
"examples": {
"default": {
"value": {
"result": "# ------------------------------------------------------------\n# Upstream 1: API servers\n# ------------------------------------------------------------\nupstream npm_upstream_1 {\nserver 192.168.0.10:80 weight=100 ;\n server 192.168.0.11:80 weight=50 ;\n}\n"
}
}
}
}
}
}
}
}

View File

@ -1,94 +0,0 @@
{
"operationId": "updateUpstream",
"summary": "Update an existing Upstream",
"tags": ["Upstreams"],
"parameters": [
{
"in": "path",
"name": "upstreamID",
"schema": {
"type": "integer",
"minimum": 1
},
"required": true,
"description": "ID of the Upstream",
"example": 1
}
],
"requestBody": {
"description": "Upstream details to update",
"required": true,
"content": {
"application/json": {
"schema": "{{schema.UpdateUpstream}}"
}
}
},
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/UpstreamObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 1,
"created_at": 1673234177000,
"updated_at": 1673244559000,
"user_id": 2,
"name": "API servers 2",
"nginx_template_id": 5,
"ip_hash": false,
"ntlm": false,
"keepalive": 0,
"keepalive_requests": 0,
"keepalive_time": "",
"keepalive_timeout": "",
"advanced_config": "",
"status": "ready",
"error_message": "",
"servers": [
{
"id": 1,
"created_at": 1673234177000,
"updated_at": 1673244559000,
"upstream_id": 1,
"server": "192.168.0.10:80",
"weight": 100,
"max_conns": 0,
"max_fails": 0,
"fail_timeout": 0,
"backup": false
},
{
"id": 2,
"created_at": 1673234177000,
"updated_at": 1673244559000,
"upstream_id": 1,
"server": "192.168.0.11:80",
"weight": 50,
"max_conns": 0,
"max_fails": 0,
"fail_timeout": 0,
"backup": false
}
]
}
}
}
}
}
}
}
}
}

View File

@ -1,111 +0,0 @@
{
"operationId": "getUsers",
"summary": "Get a list of users",
"tags": ["Users"],
"parameters": [
{
"in": "query",
"name": "offset",
"schema": {
"type": "number"
},
"description": "The pagination row offset, default 0",
"example": 0
},
{
"in": "query",
"name": "limit",
"schema": {
"type": "number"
},
"description": "The pagination row limit, default 10",
"example": 10
},
{
"in": "query",
"name": "sort",
"schema": {
"type": "string"
},
"description": "The sorting of the list",
"example": "name,email.asc"
}
],
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/UserList"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"total": 3,
"offset": 0,
"limit": 100,
"sort": [
{
"field": "name",
"direction": "ASC"
},
{
"field": "email",
"direction": "ASC"
}
],
"items": [
{
"id": 1,
"name": "Jamie Curnow",
"email": "jc@jc21.com",
"created_at": 1578010090000,
"updated_at": 1578010095000,
"gravatar_url": "https://www.gravatar.com/avatar/6193176330f8d38747f038c170ddb193?d=mm&r=pg&s=128",
"is_disabled": false,
"capabilities": ["full-admin"]
},
{
"id": 2,
"name": "John Doe",
"email": "johdoe@example.com",
"created_at": 1578010100000,
"updated_at": 1578010105000,
"gravatar_url": "https://www.gravatar.com/avatar/6193176330f8d38747f038c170ddb193?d=mm&r=pg&s=128",
"is_disabled": false,
"capabilities": [
"hosts.view",
"hosts.manage"
]
},
{
"id": 3,
"name": "Jane Doe",
"email": "janedoe@example.com",
"created_at": 1578010110000,
"updated_at": 1578010115000,
"gravatar_url": "https://www.gravatar.com/avatar/6193176330f8d38747f038c170ddb193?d=mm&r=pg&s=128",
"is_disabled": false,
"capabilities": [
"hosts.view",
"hosts.manage"
]
}
]
}
}
}
}
}
}
}
}
}

Some files were not shown because too many files have changed in this diff Show More