Compare commits

...

456 Commits
v2.9.0 ... v3

Author SHA1 Message Date
df33db24bb Revert "Cypress debugging"
This reverts commit 437b06b64b.
2023-01-16 21:57:16 +10:00
437b06b64b Cypress debugging 2023-01-16 21:43:02 +10:00
f649e2946e Fix tests 2023-01-16 16:18:36 +10:00
1b61176818 Basis for create certificate dialog 2023-01-16 16:13:38 +10:00
374447ccc7 Locales cleanup 2023-01-16 15:50:40 +10:00
af9349d4a7 Conform hosts table 2023-01-16 15:33:04 +10:00
4ff911def0 Fix locales 2023-01-16 15:23:09 +10:00
e890bfcf10 Certificates table compliance and other stuff 2023-01-16 14:57:14 +10:00
9a5cbbba49 Updated go packages 2023-01-16 14:11:12 +10:00
b877bea86c Table improvements, add modals 2023-01-16 14:02:36 +10:00
306ac20457 Certificate table work, shows error message in popover 2023-01-16 11:32:45 +10:00
ba138581e1 Swagger/Lang additions 2023-01-14 09:50:32 +10:00
456c59c746 Improvements for certificates table, adds expansion object to certificates 2023-01-14 09:45:08 +10:00
6c76c041c4 Access lists basics 2023-01-13 15:03:28 +10:00
a239be993c Fix type in cypress test 2023-01-13 12:08:50 +10:00
a82df0d931 Fix cypress tests 2023-01-13 11:57:09 +10:00
e4595860f5 Fix unit test 2023-01-13 11:17:43 +10:00
18ecda7955 Ignore locales for acmesh-property. in checks 2023-01-13 11:12:02 +10:00
8ddb191a7a Adds ajv schema validation for acmesh dns provider meta data fields and formik error messages 2023-01-13 11:06:16 +10:00
cd6b772e72 Support unmodified meta objects in frontend api 2023-01-13 10:21:05 +10:00
29a4ac42d0 Added missing object type 2023-01-13 10:09:26 +10:00
5d3bc0fabd Refactor acme.sh dns providers
- updated chakra and typescript
- added locales for dns provider configs
2023-01-12 16:25:43 +10:00
1d5d3ecd7a Add user expansion to upstream model 2023-01-10 12:57:43 +10:00
8033d052fe Trim whitespace from names of objects on save 2023-01-10 12:50:46 +10:00
6d0bf1c68b fix failing test because of whitespace in randstring 2023-01-10 12:47:01 +10:00
560f3d9b29 Basis for Upstreams UI 2023-01-10 11:50:30 +10:00
7ea64c46e9 Prevent deleting certificate that is use 2023-01-09 23:31:47 +10:00
88b46ef9ef Prevent deleting upstream that is use 2023-01-09 23:29:16 +10:00
ef34f01914 Update readmes, change docker tag to v3 2023-01-09 21:36:54 +10:00
f5b3568893 Edit upstreams, added swagger docs 2023-01-09 16:19:23 +10:00
6147ee925e Tweak config content 2023-01-09 15:48:52 +10:00
5586d16afd Add endpoints to return nginx config from disk 2023-01-09 15:42:56 +10:00
ca4d92d793 better host upstream support 2023-01-09 13:18:11 +10:00
0a50672ab6 Fix for cypress randomstrings 2023-01-09 08:58:32 +10:00
f6b219772d Adds proxy host vars 2023-01-09 08:49:49 +10:00
ad848a6478 fix cypress dockerfile 2023-01-08 19:01:00 +10:00
0418264070 Reverted cypress 2023-01-07 13:48:56 +10:00
882674867c Added upstreams tests for cypress 2023-01-06 15:07:37 +10:00
e39f18b0d1 Udpate cypress 2023-01-06 15:02:40 +10:00
6efa4e2beb Nginx config files with suffixes for deleted/disabled/errors 2023-01-06 14:23:04 +10:00
17a108f75f Use upstream in host config 2023-01-06 11:42:02 +10:00
bc6825c148 Ignore vulnerability, can't fix until next golang version 2023-01-04 16:21:08 +10:00
395152c1ab Fix locales 2023-01-04 15:57:19 +10:00
5e5f0de0e2 - Added upstream objects
- Renamed host templates to nginx templates
- Generate upstream templates
- Better nginx error reporting when reloading
- Use tparse for golang test reporting
2023-01-04 15:53:52 +10:00
b3ae2f4dbb Fix dns provider name on dns providers page 2023-01-03 16:49:26 +10:00
726b6e69f7 Skip acceptable vuln 2022-11-08 10:40:15 +10:00
c00b690ed3 Updated deps, go.19 migration, nginx template work 2022-11-08 10:03:45 +10:00
8d37f5df8d Write host template on save 2022-07-21 18:02:07 +10:00
5b6dbaf43e Add nginx exec 2022-07-15 14:26:12 +10:00
b8008606fd Add locales 2022-07-15 08:58:52 +10:00
f51c12ed9a New JobQueue worker 2022-07-15 08:52:38 +10:00
3c0af95468 Fixes 2022-07-14 21:53:11 +10:00
ee4c6a3a8b broken dns provider edit modal 2022-06-14 11:02:25 +10:00
d44f75af1b Preliminary dns provider create working modal 2022-06-01 13:45:31 +04:00
b221446bb0 dns_conoha, dns_dpi, dns_euserv, dns_tele3 2022-06-01 13:23:56 +04:00
523449f050 dns_acmedns 2022-06-01 13:11:21 +04:00
322048d5af dns_loopia 2022-06-01 12:21:14 +04:00
671715042e dns_kinghost, dns_zilore 2022-06-01 12:14:16 +04:00
f37bb2e7dc dns_da 2022-06-01 12:09:35 +04:00
3267832fe5 Fix frontend build 2022-06-01 09:26:49 +04:00
e31b01b80e dns_dreamhost 2022-06-01 09:22:40 +04:00
0a18432860 Remove duplicate plugins that come with CRA 2022-06-01 09:20:34 +04:00
a2baa85b08 fix typo 2022-06-01 09:12:11 +04:00
3bfdc21256 dns_zonomi 2022-06-01 09:11:06 +04:00
49da5d7acc bump node for ci build 2022-06-01 09:10:34 +04:00
5bc2cd9be4 dns_selectel 2022-06-01 09:06:09 +04:00
07739ee84e dns_azure 2022-06-01 09:02:57 +04:00
91d23be4e3 dns_autodns 2022-06-01 08:57:20 +04:00
9dcb1e1c9c dns_namesilo 2022-06-01 08:54:21 +04:00
5729dddaf9 dns_servercow 2022-06-01 08:51:23 +04:00
d1bb22d768 dns_inwx 2022-06-01 08:49:31 +04:00
db61a9a175 Update packages, fix table page selector 2022-05-22 23:55:26 +10:00
e4a97d4813 Use node 16 2022-05-22 23:54:40 +10:00
8dd6880f8c Some dns additions 2022-05-20 22:43:52 +10:00
34dfbe2c36 Updated readme 2022-05-12 08:50:37 +10:00
2110ecc382 Moved v3 code from NginxProxyManager/nginx-proxy-manager-3 to NginxProxyManager/nginx-proxy-manager 2022-05-12 08:47:31 +10:00
4db34f5894 Bump version, to trigger rebuild with updated base images 2022-03-31 14:43:41 +10:00
d1a338107b Merge branch 'master' into develop 2022-03-31 10:21:19 +10:00
0d0b7e117f Bump version 2022-03-31 10:20:27 +10:00
3538f9719f Merge pull request #1951 from NginxProxyManager/test-html-encode
Fix #1950 attempt to encode hdomain values before render
2022-03-25 09:03:30 +10:00
feaafdc559 Fix #1950 attempt to encode hdomain values before render 2022-03-25 08:31:28 +10:00
eb148eb8f0 Merge pull request #1904 from NginxProxyManager/dependabot/npm_and_yarn/docs/url-parse-1.5.9
Bump url-parse from 1.5.2 to 1.5.9 in /docs
2022-03-15 07:38:11 +10:00
e879d41ee4 Merge pull request #1892 from NginxProxyManager/dependabot/npm_and_yarn/docs/prismjs-1.27.0
Bump prismjs from 1.25.0 to 1.27.0 in /docs
2022-03-15 07:18:23 +10:00
bb26f5b2c7 Merge pull request #1863 from omercnet/patch-1
Update resolvers.conf to break dns cache
2022-03-15 07:17:24 +10:00
8e61d3eadf Bump url-parse from 1.5.2 to 1.5.9 in /docs
Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.5.2 to 1.5.9.
- [Release notes](https://github.com/unshiftio/url-parse/releases)
- [Commits](https://github.com/unshiftio/url-parse/compare/1.5.2...1.5.9)

---
updated-dependencies:
- dependency-name: url-parse
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-02 18:35:56 +00:00
749ab36b1a Bump prismjs from 1.25.0 to 1.27.0 in /docs
Bumps [prismjs](https://github.com/PrismJS/prism) from 1.25.0 to 1.27.0.
- [Release notes](https://github.com/PrismJS/prism/releases)
- [Changelog](https://github.com/PrismJS/prism/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PrismJS/prism/compare/v1.25.0...v1.27.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-26 01:52:17 +00:00
c68874743d Merge pull request #1864 from NginxProxyManager/develop
v2.9.16
2022-02-19 21:47:15 +10:00
1a76f4ebfc Merge branch 'master' into develop 2022-02-17 13:20:44 +10:00
59238d1dc1 Bump version 2022-02-17 13:18:06 +10:00
661f3d6899 Update repo path in docs 2022-02-17 13:15:15 +10:00
14b889a85f Merge pull request #1822 from ivankristianto/add-search-feature-redirection
Add Search Feature To Backend Administration
2022-02-17 13:14:35 +10:00
ac25171420 Update resolvers.conf to break dns cache
By default, nginx caches answers using the TTL value of a response.
In a dynamic environment containers can get recreated with new IPs,
reducing the validity of the cache allows refreshing these IPs

https://nginx.org/en/docs/http/ngx_http_core_module.html#resolver
2022-02-16 09:31:56 +02:00
7281ed5968 Merge pull request #1830 from lug-gh/lug-gh-patch-1
Update current year for footer
2022-02-13 20:20:32 +10:00
dc541b2c72 Merge pull request #1850 from NginxProxyManager/dependabot/npm_and_yarn/docs/follow-redirects-1.14.8
Bump follow-redirects from 1.14.7 to 1.14.8 in /docs
2022-02-13 20:18:47 +10:00
9a854fd8fe Bump follow-redirects from 1.14.7 to 1.14.8 in /docs
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.7 to 1.14.8.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.14.7...v1.14.8)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-13 08:02:46 +00:00
8eb44c404d Add translation for search text 2022-02-12 13:28:16 +07:00
61b25e1213 Add search feature to Audit Logs 2022-02-12 13:10:23 +07:00
d3a5a3d0d6 Add search feature to Users 2022-02-12 12:52:22 +07:00
366fcf0bed Fix nginx/certificates search query 2022-02-12 12:46:06 +07:00
29c0fcbad6 Add search feature to SSL Certificates 2022-02-12 12:45:29 +07:00
de84d5d463 Add search feature to Access Lists 2022-02-12 12:17:45 +07:00
078114ee67 Fix search query for proxy 2022-02-12 11:52:47 +07:00
49f350fb00 Add search feature to 404 hosts 2022-02-12 11:48:47 +07:00
e141b5ff20 Add search feature to stream 2022-02-12 11:36:59 +07:00
181f163cb5 Move render showEmpty into function 2022-02-12 10:40:37 +07:00
30a9d3ae8d Add search feature to proxy host 2022-02-12 10:38:15 +07:00
83e09ad5a7 Update current year for footer
Update current year for footer
2022-02-05 20:59:21 +01:00
8e5255a275 Merge pull request #1767 from NginxProxyManager/dependabot/npm_and_yarn/docs/json-schema-0.4.0
Bump json-schema from 0.2.5 to 0.4.0 in /docs
2022-01-31 09:03:11 +10:00
e4f06368bb Merge pull request #1768 from NginxProxyManager/dependabot/npm_and_yarn/docs/is-svg-4.3.0
Bump is-svg from 4.2.2 to 4.3.0 in /docs
2022-01-31 09:02:59 +10:00
0edd87324c Merge pull request #1773 from NginxProxyManager/certbot-dns-transip-update
Update certbot-dns-transip plugin
2022-01-31 09:02:48 +10:00
96e034aa75 Add search function for redirection 2022-01-30 22:47:42 +07:00
821432263a Update certbot-dns-transip plugin 2022-01-19 07:36:49 +10:00
5edb16f36e Fix failing pip installs, downgrade setuptools 2022-01-17 21:46:26 +10:00
a233bc0045 Merge pull request #1766 from NginxProxyManager/develop
v2.9.15
2022-01-17 12:08:45 +10:00
eed40d095e Bump is-svg from 4.2.2 to 4.3.0 in /docs
Bumps [is-svg](https://github.com/sindresorhus/is-svg) from 4.2.2 to 4.3.0.
- [Release notes](https://github.com/sindresorhus/is-svg/releases)
- [Commits](https://github.com/sindresorhus/is-svg/compare/v4.2.2...v4.3.0)

---
updated-dependencies:
- dependency-name: is-svg
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-17 01:22:20 +00:00
0d0e5295f4 Bump json-schema from 0.2.5 to 0.4.0 in /docs
Bumps [json-schema](https://github.com/kriszyp/json-schema) from 0.2.5 to 0.4.0.
- [Release notes](https://github.com/kriszyp/json-schema/releases)
- [Commits](https://github.com/kriszyp/json-schema/compare/v0.2.5...v0.4.0)

---
updated-dependencies:
- dependency-name: json-schema
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-17 01:21:03 +00:00
51ac4bc688 Merge branch 'master' into develop 2022-01-17 10:53:03 +10:00
4f97592965 Bump version 2022-01-17 10:48:57 +10:00
be5a763d39 Merge pull request #1758 from NginxProxyManager/dependabot/npm_and_yarn/docs/markdown-it-12.3.2
Bump markdown-it from 11.0.0 to 12.3.2 in /docs
2022-01-17 10:46:00 +10:00
c435ce0224 Merge pull request #1760 from NginxProxyManager/dependabot/npm_and_yarn/docs/follow-redirects-1.14.7
Bump follow-redirects from 1.12.1 to 1.14.7 in /docs
2022-01-17 10:45:49 +10:00
67d8ede247 Merge pull request #1763 from NginxProxyManager/dependabot/npm_and_yarn/docs/node-forge-1.0.0
Bump node-forge from 0.10.0 to 1.0.0 in /docs
2022-01-17 10:45:28 +10:00
5e98ce32b7 Merge pull request #1764 from troykelly/troykelly#add-constellix
Added Constellix as DNS auth method
2022-01-17 10:45:02 +10:00
a2c01655f0 Added Constellix 2022-01-15 09:48:04 +00:00
3a71281937 Bump node-forge from 0.10.0 to 1.0.0 in /docs
Bumps [node-forge](https://github.com/digitalbazaar/forge) from 0.10.0 to 1.0.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/0.10.0...v1.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-14 21:13:50 +00:00
f235ec8b5a Bump follow-redirects from 1.12.1 to 1.14.7 in /docs
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.12.1 to 1.14.7.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.12.1...v1.14.7)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-14 05:54:23 +00:00
fa7df05b92 Bump markdown-it from 11.0.0 to 12.3.2 in /docs
Bumps [markdown-it](https://github.com/markdown-it/markdown-it) from 11.0.0 to 12.3.2.
- [Release notes](https://github.com/markdown-it/markdown-it/releases)
- [Changelog](https://github.com/markdown-it/markdown-it/blob/master/CHANGELOG.md)
- [Commits](https://github.com/markdown-it/markdown-it/compare/11.0.0...12.3.2)

---
updated-dependencies:
- dependency-name: markdown-it
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-12 23:02:03 +00:00
1f3ac7a9ec And update the docker org too 2022-01-11 11:52:25 +10:00
5bd002a568 Forgot to update this docker base image 2022-01-11 11:28:01 +10:00
5fb0cc5fab No need to symlink python, done in base image now 2022-01-11 11:17:19 +10:00
818b9595aa Use renamed nginx-full docker images 2022-01-11 08:57:24 +10:00
c78f641e85 Revert #1614
as it breaks some existing services
2022-01-11 08:54:40 +10:00
081380c8d5 Merge pull request #1716 from jc21/develop
v2.9.14
2022-01-02 22:31:12 +10:00
7e451bce0b Merge pull request #1688 from jlesage/resolvers-fix
Fixed generation of resolvers.conf.
2022-01-02 22:05:32 +10:00
a082ec0604 Merge pull request #1600 from jc21/updates-dnspod-dns-challenge
Fixes dnspod credentials template
2022-01-02 22:05:15 +10:00
973a10a9d1 Bump version 2022-01-02 21:33:16 +10:00
1ec95096d5 Ensure backend build is pulling node:latest first 2022-01-02 21:24:16 +10:00
e81cc45405 Updates dnspod challenge credentials 2022-01-02 11:49:18 +01:00
b9ef11e8bf Merge pull request #1614 from the1ts/feature/proxy-header-additions
Feature: Add two new headers to proxy.conf
2022-01-02 16:11:50 +10:00
0d8dd03c3d Merge pull request #1687 from jlesage/fallback-access-fix
Fixed the access log path to match the HTTP one.
2022-01-02 16:10:25 +10:00
74d610d9ad Merge pull request #1697 from jc21/official-dns-version-requirement
Sets certbot official dns plugin version requirement to match certbot version
2022-01-02 16:09:27 +10:00
9146ca6c63 Merge pull request #1698 from jc21/adds-faq-acl-with-login
Adds FAQ entry for acl plus login
2022-01-02 15:39:04 +10:00
d7e0ae0fa0 Merge pull request #1701 from jc21/escape-credential-backslashes
Correctly escape backslashes in dns plugin credentials
2022-01-02 15:29:31 +10:00
29ee48530c Merge pull request #1703 from luoweihua7/develop
fetch cloudflare ipv4/ipv6 fail #1405
2022-01-02 15:28:58 +10:00
abe53a4bdd Merge pull request #1704 from jc21/letsencrypt-cert-request-delay
Adds delay after reloading nginx before requesting ssl certificate using http challenge
2022-01-02 15:27:39 +10:00
2d23bedf12 Merge pull request #1713 from jc21/adds-tencentcloud-dns-challenge
Adds tencent cloud as dns challenge provider
2022-01-02 15:26:25 +10:00
4e17fb476b Adds tencent cloud as dns challenge provider 2022-01-01 17:57:17 +01:00
c803ec7e26 Adds delay after reloading nginx before requesting ssl certificate using http challenge 2021-12-30 13:21:21 +01:00
7e67f33766 fetch cloudflare ipv4/ipv6 fail #1405 2021-12-30 11:50:21 +08:00
9dd5644183 Correctly escape backslashes in dns plugin credentials 2021-12-29 16:30:49 +01:00
5a8028a72d Adds FAQ entry for acl plus login 2021-12-29 11:35:59 +01:00
747de511d4 Sets certbot official dns plugin version requirement to match certbot version 2021-12-29 09:54:59 +01:00
7800938fd2 Update default.conf 2021-12-28 18:58:22 +00:00
ab80fe13e9 Fixes custom certificate upload modal 2021-12-28 18:58:22 +00:00
5d106c4064 Bump version 2021-12-28 18:58:22 +00:00
2ac1026e4b Hack for python binary in newer node images 2021-12-28 18:58:22 +00:00
b78c7e1c53 Fixes dnspod credentials template 2021-12-27 21:13:27 +01:00
849bdcda7b Fixed generation of resolvers.conf.
This fixes scenarios where `resolv.conf` generated by dhcpcd has a nameserver with `%interface` appended to its IPv6 address.
For example, a line like this must be properly handled:
nameserver fe80::7747:4aff:fe9a:8cb1%br0
2021-12-26 21:49:55 -05:00
5aae8cd0e3 Fixed the access log path to match the HTTP one. This also fixes its handling by logrotate. 2021-12-26 20:56:42 -05:00
adc5a2020a Merge pull request #1666 from TobiasKneidl/patch-1
Update default.conf to follow the default site setting also for ipv6
2021-12-27 11:03:14 +10:00
40b1521f72 Merge pull request #1677 from jc21/fixes-custom-certificate-modal
Fixes custom certificate upload modal
2021-12-27 11:02:16 +10:00
ac23c66659 Fixes custom certificate upload modal 2021-12-23 12:23:30 +01:00
84bc33db8a Merge pull request #1667 from jc21/develop
v2.9.13
2021-12-22 11:53:02 +10:00
6392df36c3 Merge branch 'master' into develop 2021-12-22 11:52:27 +10:00
c82843279c Bump version 2021-12-22 11:51:32 +10:00
b394eb8e55 Hack for python binary in newer node images 2021-12-22 11:05:57 +10:00
bb422d4454 Update default.conf 2021-12-22 00:24:05 +01:00
3dfe23836c Add two new headers to proxy.conf
Fixes #1609. Adding both  X-Forwarded-Host  and X-Forwarded-Port, this is vital for some services behind a proxy (used to allow creation of absolute links in html). I've had to include at least the Host version in the past for jenkins and nexus.
Been running locally for 24 hours, does not appear to break any of my 15+ services currently running behind NPM would allow people to host those services without the need for advanced configuration
2021-11-29 13:48:39 +00:00
d45f39aae3 Merge pull request #1538 from jc21/adds-http-challenge-test
Adds buttons to test availability of server from public internet
2021-11-10 09:15:26 +10:00
cb091040a8 Merge pull request #1578 from jc21/undo-switch-to-variables
Reverts back to proxy_pass without variables
2021-11-10 09:13:02 +10:00
ddd538944a Skip migration if setting does not exist 2021-11-09 14:03:39 +01:00
1f879f67a9 Reverts back to proxy_pass without variables 2021-11-09 13:57:39 +01:00
ee89dedd0f Adds migration to regenerate default host 2021-11-08 23:11:56 +01:00
9ab5333652 Merge pull request #1574 from jc21/develop
v2.9.12
2021-11-08 14:34:31 +10:00
3bd97ae1b0 Version bump 2021-11-08 13:37:44 +10:00
432062e0f4 Merge pull request #1559 from jc21/variable-fix-custom-locations
Fixes custom location with capture groups
2021-11-08 12:29:43 +10:00
0c8bbb4bc2 Merge pull request #1561 from jc21/header-warning-for-advanced-config
Adds advanced config header warning
2021-11-08 12:28:34 +10:00
48e96c46d5 Merge pull request #1565 from jc21/removes-hsts-from-admin-ui
Removes HSTS from admin ui
2021-11-08 12:27:36 +10:00
25e9acf618 Merge pull request #1566 from jc21/cleans-dependencies
Removes unused dependencies
2021-11-08 12:27:04 +10:00
a517e80236 Merge pull request #1567 from jc21/removes-renew-delay
Removes random delay when renewing certificates with the renew now button
2021-11-08 12:26:34 +10:00
3d4d3bc73b Merge pull request #1572 from jc21/letsencrypt-config-file
Uses letsencrypt config file everywhere
2021-11-08 12:25:48 +10:00
cf4d1f73fa Uses letsencrypt config file everywhere 2021-11-06 22:31:13 +01:00
c203d1a0d8 Requires ~() in location to remove $request_uri and removes $request_uri if it is just a slash 2021-11-06 13:38:02 +01:00
5f29f6b039 Removes random delay when renewing certificates with the renew now button 2021-11-05 14:20:12 +01:00
f75b5b867b Fixes formatting 2021-11-05 14:01:50 +01:00
67463ca136 Removes unused dependencies 2021-11-05 13:59:19 +01:00
8db541f37f Removes HSTS from admin ui 2021-11-05 00:09:05 +01:00
a5229d0e92 Adds advanced config header warning and replaces variable info with translation 2021-11-04 12:01:01 +01:00
38ec0f9f95 Adds logs to backend when testing http challenge 2021-11-04 11:16:23 +01:00
3d80759a21 Renames the $upstream variables and does not append $request_ui if capture group exists in location 2021-11-04 10:08:15 +01:00
d95cd36b3e Merge pull request #1544 from piuswalter/patch-1
Fixed typo in i18n translation file
2021-11-03 09:42:49 +10:00
4c6b96ad5d Merge pull request #1546 from jc21/removes-swagger-containter
Removes swagger container
2021-11-03 09:41:41 +10:00
c3bef2867e Merge pull request #1547 from jc21/makes-sqlite-default
Changes documentation to make SQLite the default db
2021-11-03 09:41:02 +10:00
efc5bff2e1 Makes SQLite the default database in documentation 2021-11-02 12:24:23 +01:00
ffe3db8c08 Falls back to SQLite if no environment variables are provided 2021-11-02 12:22:39 +01:00
4ada0feae3 Removes swagger container and adds exposed port for DB in dev env 2021-11-02 11:33:22 +01:00
e17de6058e Fixed typo 2021-11-01 17:43:46 +01:00
9efe6cfb39 Minor fixes 2021-10-31 13:41:29 +01:00
c86a1a50bd Fixes formatting 2021-10-31 00:28:43 +02:00
c55476b196 Adds buttons to test availability of server from public internet 2021-10-31 00:19:18 +02:00
3b47decbb0 Merge pull request #1528 from jc21/develop
v2.9.11
2021-10-27 22:11:55 +10:00
d0bfa082e0 Bump version 2021-10-27 21:43:07 +10:00
6b7a8b009e Merge pull request #1519 from jc21/fixes-incorrect-proxy-path
Updates proxy paths
2021-10-27 21:42:18 +10:00
ca59e585d8 Uses variable in proxy_pass for normal proxy hosts 2021-10-25 14:58:02 +02:00
bbde7a108a Use variable with full uri in proxy pass 2021-10-25 14:48:22 +02:00
87731a8b5c Revert "Utilise variable for custom locations proxy_pass"
This reverts commit 6c1ae77a2a.
2021-10-25 14:27:37 +02:00
29d4bd4ccf Merge pull request #1517 from jc21/develop
v2.9.10
2021-10-25 15:48:43 +10:00
925ad90f91 Merge branch 'master' into develop 2021-10-25 14:26:47 +10:00
650ae61c43 Version bump 2021-10-25 11:35:44 +10:00
02f3f9704f Merge pull request #1480 from jc21/prefer-isrg-cert-chain
Sets the cert chain to prefer ISRG Root X1
2021-10-25 08:42:31 +10:00
da7c3057b4 Merge pull request #1481 from jc21/certificate-no-domain-sorting
Removes sorting of domain names when creating a certificate
2021-10-25 08:40:19 +10:00
040b45cafa Merge pull request #1496 from jc21/fixes-cache-busting
Adds cache busting to js bundles as well
2021-10-25 08:30:15 +10:00
8ece310b9f Merge pull request #1514 from jc21/adds-dns-websupportsk-challenge
Adds Webbsupport.sk dns plugin
2021-10-25 08:26:20 +10:00
96959db3c2 Merge pull request #1504 from jc21/removes-certbot-plugin-prefixes
Removes certbot plugin prefixes
2021-10-25 08:26:03 +10:00
6360100611 Adds Webbsupport.sk dns plugin 2021-10-24 22:14:59 +02:00
b833044cea Fixes formatting 2021-10-20 18:38:21 +02:00
97909830f5 Removes dns plugin prefixes 2021-10-20 18:16:54 +02:00
8ae2de2f49 Updates certbot-dns-ionos to newest version 2021-10-20 18:08:11 +02:00
bf7b659e89 Adds cache busting to js bundles as well 2021-10-17 19:15:35 +02:00
4e3c7749af Removes sorting of domain names when creating a certificate 2021-10-12 16:18:11 +02:00
f63441921f Sets the cert chain to prefer ISRG Root X1 2021-10-12 16:11:47 +02:00
725ba83606 Merge pull request #1443 from jc21/dependabot/npm_and_yarn/docs/ansi-regex-5.0.1
Bump ansi-regex from 5.0.0 to 5.0.1 in /docs
2021-10-12 10:36:48 +10:00
281906c0b5 Merge pull request #1476 from jc21/dependabot/npm_and_yarn/backend/objection-2.2.16
Bump objection from 2.2.2 to 2.2.16 in /backend
2021-10-12 10:36:34 +10:00
8ed121f43d Bump ansi-regex from 5.0.0 to 5.0.1 in /docs
Bumps [ansi-regex](https://github.com/chalk/ansi-regex) from 5.0.0 to 5.0.1.
- [Release notes](https://github.com/chalk/ansi-regex/releases)
- [Commits](https://github.com/chalk/ansi-regex/compare/v5.0.0...v5.0.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-11 01:57:51 +00:00
81a9cab2b3 Merge pull request #1464 from jc21/fixes-navigation-on-mobile
Adds toggle to header to display menu on mobile
2021-10-11 11:55:37 +10:00
8d98a417c5 Merge pull request #1469 from jc21/certbot-plugin-updates
Certbot plugin updates
2021-10-11 11:54:51 +10:00
6fa81b179b Bump objection from 2.2.2 to 2.2.16 in /backend
Bumps [objection](https://github.com/vincit/objection.js) from 2.2.2 to 2.2.16.
- [Release notes](https://github.com/vincit/objection.js/releases)
- [Commits](https://github.com/vincit/objection.js/commits/2.2.16)

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-11 01:53:33 +00:00
9e169fbb42 Merge pull request #1474 from Djelibeybi/add-oci-dns
Add DNS provider for Oracle Cloud Infrastructure (OCI) DNS
2021-10-11 11:53:26 +10:00
27f84f880a Updated node-sass and sass-loader 2021-10-11 11:11:46 +10:00
0d9c941b4e Add support for Oracle Cloud Infrastructure (OCI) DNS
Signed-off-by: Avi Miller <avi.miller@oracle.com>
2021-10-10 08:49:12 +11:00
8865aa9c8c Fixes formatting 2021-10-07 17:39:18 +02:00
6d8c4218f1 Replaces fixed certbot plugin version with optional version requirements 2021-10-07 17:13:48 +02:00
c134a43337 Updates DirectAdmin plugin to prevent certbot downgrade 2021-10-06 17:58:07 +02:00
780759dc27 Adds toggle to header to display menu on mobile 2021-10-05 21:00:10 +02:00
85128f08f3 Merge pull request #1409 from jc21/dependabot/npm_and_yarn/docs/set-value-4.0.1
Bump set-value from 3.0.2 to 4.0.1 in /docs
2021-09-30 13:16:28 +10:00
d2f8c1e5f1 Merge pull request #1412 from jc21/dependabot/npm_and_yarn/docs/prismjs-1.25.0
Bump prismjs from 1.24.0 to 1.25.0 in /docs
2021-09-30 13:16:20 +10:00
9c88b9c1e9 Merge pull request #1415 from jc21/dependabot/npm_and_yarn/docs/nth-check-2.0.1
Bump nth-check from 1.0.2 to 2.0.1 in /docs
2021-09-30 13:16:10 +10:00
13fd2ce4e2 Bump nth-check from 1.0.2 to 2.0.1 in /docs
Bumps [nth-check](https://github.com/fb55/nth-check) from 1.0.2 to 2.0.1.
- [Release notes](https://github.com/fb55/nth-check/releases)
- [Commits](https://github.com/fb55/nth-check/compare/v1.0.2...v2.0.1)

---
updated-dependencies:
- dependency-name: nth-check
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-22 04:54:41 +00:00
9979f516d6 Bump prismjs from 1.24.0 to 1.25.0 in /docs
Bumps [prismjs](https://github.com/PrismJS/prism) from 1.24.0 to 1.25.0.
- [Release notes](https://github.com/PrismJS/prism/releases)
- [Changelog](https://github.com/PrismJS/prism/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PrismJS/prism/compare/v1.24.0...v1.25.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-20 21:48:33 +00:00
39a5cd2d6e Bump set-value from 3.0.2 to 4.0.1 in /docs
Bumps [set-value](https://github.com/jonschlinkert/set-value) from 3.0.2 to 4.0.1.
- [Release notes](https://github.com/jonschlinkert/set-value/releases)
- [Commits](https://github.com/jonschlinkert/set-value/compare/3.0.2...4.0.1)

---
updated-dependencies:
- dependency-name: set-value
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-16 04:26:17 +00:00
784516283f Merge pull request #1399 from nikhen/i845
data.email should NOT be shorter than 8 characters #845
2021-09-13 11:03:22 +10:00
ce503232c3 data.email should NOT be shorter than 8 characters #845 2021-09-12 15:01:55 +02:00
f2edf9130f Merge pull request #1396 from nikhen/develop
1.1.1.1 used as a placeholder, despite being real external website/address #686
2021-09-12 20:42:51 +10:00
413ab50fc4 Change example IP: 0.0.0.0 -> 203.0.113.25 2021-09-12 12:28:25 +02:00
c1880bd3ff 1.1.1.1 used as a placeholder, despite being real external website/address #686 2021-09-11 17:21:32 +02:00
0f0a672275 Added another contributor 2021-09-10 14:49:11 +10:00
06c5f991e7 Merge pull request #1390 from jc21/develop
v2.9.9
2021-09-10 13:50:47 +10:00
babc5b7a38 Bumped version 2021-09-10 07:54:10 +10:00
b96c996a45 Log more info for internal errors in debug mode 2021-09-09 08:46:09 +10:00
fb8f2c2f9a Merge pull request #1384 from bergi9/patch-1
Add SSL and HTTP2 into IPv6 on listen.conf
2021-09-08 11:30:00 +10:00
6794937391 Merge pull request #1376 from realJoshByrnes/develop
Fixed some typos in Advanced Config readme
2021-09-08 10:52:25 +10:00
f022e84979 Add SSL and HTTP2 into IPv6 on listen.conf
I can only server contents with IPv6 because I'm sitting behind CGN on IPv4. When enabling HTTP2 it still not serve contents with HTTP2 as there are missing arguments in the `listen`. But it still does the SSL encryption.
Previous to this commit it generates:
```
listen 80;
listen [::]:80;

listen 443 ssl http2;
listen [::]:443;
```
Now it generates:
```
listen 80;
listen [::]:80;

listen 443 ssl http2;
listen [::]:443 ssl http2;
```
2021-09-07 22:50:49 +02:00
fd5ac952cc Fixed some typos in Advanced Config readme 2021-09-05 05:47:14 +10:00
07f60e5c77 Merge pull request #1367 from jc21/dependabot/npm_and_yarn/docs/tar-6.1.11
Bump tar from 6.1.6 to 6.1.11 in /docs
2021-09-02 11:52:52 +10:00
628b8a7e1f Merge pull request #1368 from jc21/dependabot/npm_and_yarn/backend/tar-4.4.19
Bump tar from 4.4.15 to 4.4.19 in /backend
2021-09-02 11:52:39 +10:00
30a442807d Bump tar from 4.4.15 to 4.4.19 in /backend
Bumps [tar](https://github.com/npm/node-tar) from 4.4.15 to 4.4.19.
- [Release notes](https://github.com/npm/node-tar/releases)
- [Changelog](https://github.com/npm/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-tar/compare/v4.4.15...v4.4.19)

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-02 00:11:00 +00:00
1626c8edd1 Merge pull request #1343 from ssrahul96/develop
Added support to download Let's Encrypt Certificate
2021-09-02 10:09:45 +10:00
ca6561bf6c updated debug statement 2021-09-01 11:50:51 +05:30
273a81471d Revert "updated debug statement"
This reverts commit 8b07a67133.
2021-09-01 11:47:47 +05:30
8b07a67133 updated debug statement 2021-09-01 11:46:10 +05:30
32089ea272 deferenced symlinks and downloaded the certs from live directory 2021-09-01 11:41:27 +05:30
658acd147c updated certificate path 2021-09-01 07:38:11 +05:30
ca3370a6ac Merge pull request #1366 from BjoernAkAManf/patch-1
Forwarding host should be anyOf not oneOf
2021-09-01 07:25:35 +10:00
c4e2557de2 Bump tar from 6.1.6 to 6.1.11 in /docs
Bumps [tar](https://github.com/npm/node-tar) from 6.1.6 to 6.1.11.
- [Release notes](https://github.com/npm/node-tar/releases)
- [Changelog](https://github.com/npm/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-tar/compare/v6.1.6...v6.1.11)

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-31 19:03:35 +00:00
6f2b4fdf86 Forwarding host should be anyOf not oneOf
Should fix #1354
2021-08-31 19:27:43 +02:00
f302ff71c9 corrected message 2021-08-30 16:36:13 +05:30
fee87a44d6 Merge pull request #1348 from jc21/develop
v2.9.8
2021-08-25 10:11:10 +10:00
8944609b63 fixed linting 2021-08-24 07:28:17 +05:30
be87c45f27 thrown exception for non LE certificates 2021-08-24 06:01:08 +05:30
1b1807c79a removed debug lines 2021-08-23 18:03:47 +05:30
a8f4699816 [frontend] certificate download changes 2021-08-23 15:47:03 +05:30
ac3df6dd77 fixed comments 2021-08-23 09:29:33 +05:30
5c67908460 Bump version, added contributors 2021-08-23 13:55:48 +10:00
7b67ef3015 fixed linting 2021-08-23 09:17:42 +05:30
e5a3b5ee2f added endpoint to download certificates 2021-08-23 09:03:24 +05:30
5e9ff4d2bf Add healthcheck back for ci containers 2021-08-23 09:29:11 +10:00
daa71764b6 Merge pull request #1338 from bmbvenom/patch-1
remove dummy cert references to Nginx Proxy Manager
2021-08-23 08:52:01 +10:00
6a6c2ef192 Remove healthchecks and mention how to optin to them in docs 2021-08-23 08:50:07 +10:00
320315956d remove dummy cert references to Nginx Proxy Manager
Based on this issue: https://github.com/jc21/nginx-proxy-manager/issues/1024
2021-08-21 22:37:14 -07:00
4f10d129c2 Reload nginx after access list change. Fixes #1328 2021-08-19 08:55:53 +10:00
62eb3fcd85 Updated docker base image location 2021-08-17 11:28:30 +10:00
ab40e4e2cf Merge pull request #1036 from BjoernAkAManf/master
Allows hostname instead of ip for streams
2021-08-16 13:40:40 +10:00
0bb9450642 Merge pull request #1323 from jc21/dependabot/npm_and_yarn/docs/url-parse-1.5.2
Bump url-parse from 1.5.0 to 1.5.2 in /docs
2021-08-16 13:38:16 +10:00
a6e15532b9 Bump url-parse from 1.5.0 to 1.5.2 in /docs
Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.5.0 to 1.5.2.
- [Release notes](https://github.com/unshiftio/url-parse/releases)
- [Commits](https://github.com/unshiftio/url-parse/compare/1.5.0...1.5.2)

---
updated-dependencies:
- dependency-name: url-parse
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-16 03:37:58 +00:00
9a89a8a77e Merge pull request #1209 from jc21/dependabot/npm_and_yarn/docs/prismjs-1.24.0
Bump prismjs from 1.23.0 to 1.24.0 in /docs
2021-08-16 13:37:56 +10:00
fe3675dc7a Merge pull request #1210 from jc21/dependabot/npm_and_yarn/backend/normalize-url-4.5.1
Bump normalize-url from 4.5.0 to 4.5.1 in /backend
2021-08-16 13:37:47 +10:00
5c9acc2bff Merge pull request #1309 from jc21/dependabot/npm_and_yarn/backend/path-parse-1.0.7
Bump path-parse from 1.0.6 to 1.0.7 in /backend
2021-08-16 13:37:36 +10:00
c94e937a50 Merge pull request #1308 from jc21/dependabot/npm_and_yarn/frontend/path-parse-1.0.7
Bump path-parse from 1.0.6 to 1.0.7 in /frontend
2021-08-16 13:37:26 +10:00
3e4e10e644 Merge pull request #1310 from jc21/dependabot/npm_and_yarn/docs/path-parse-1.0.7
Bump path-parse from 1.0.6 to 1.0.7 in /docs
2021-08-16 13:37:15 +10:00
ba7bb57ca2 Incorporate feedback
- Empty function removed
- Placeholder and Maxlength restored
- Validation improved
- Typo fixed
2021-08-13 11:32:01 +02:00
14c125150a Bump path-parse from 1.0.6 to 1.0.7 in /docs
Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-12 03:03:43 +00:00
053701a702 Bump path-parse from 1.0.6 to 1.0.7 in /backend
Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-12 00:57:11 +00:00
3fc3e43042 Bump path-parse from 1.0.6 to 1.0.7 in /frontend
Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-12 00:56:50 +00:00
b0dc68d7d4 Merge pull request #1300 from FMeinicke/develop
Add deSEC DNS provider
2021-08-09 15:30:53 +10:00
e895baaeb4 Add deSEC DNS provider 2021-08-08 19:22:17 +02:00
c47f6fdb21 Merge pull request #1294 from jc21/develop
v2.9.7
2021-08-07 21:15:47 +10:00
9e188e441a Merge branch 'master' into develop 2021-08-07 20:06:40 +10:00
f6efcdf9f9 Bumped version 2021-08-07 20:05:53 +10:00
b1ceda3af4 Update letsencrypt.ini to support ECDSA keys
Since we have newer certbot available, it's time to support more modern and safer ECDSA keys instead of RSA.
2021-08-07 20:05:53 +10:00
cd3a0684d0 Merge pull request #1293 from jc21/dependabot/npm_and_yarn/docs/tar-6.1.6
Bump tar from 6.0.2 to 6.1.6 in /docs
2021-08-07 19:07:08 +10:00
f25e54c6cb Merge pull request #1211 from gabbe/dns-loopia
Added Loopia dns provider
2021-08-07 13:04:11 +10:00
66f86cf497 Merge pull request #1258 from nightah/fix-location-proxy_pass
Utilise variable for custom locations proxy_pass
2021-08-07 13:03:33 +10:00
d260edc547 Bump tar from 6.0.2 to 6.1.6 in /docs
Bumps [tar](https://github.com/npm/node-tar) from 6.0.2 to 6.1.6.
- [Release notes](https://github.com/npm/node-tar/releases)
- [Changelog](https://github.com/npm/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-tar/compare/v6.0.2...v6.1.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-07 03:02:18 +00:00
ba1e6fa984 Merge pull request #1265 from phantomski77/master
Update letsencrypt.ini to support ECDSA keys
2021-08-07 13:01:14 +10:00
6b59f36213 Merge pull request #1287 from jc21/dependabot/npm_and_yarn/backend/tar-4.4.15
Bump tar from 4.4.13 to 4.4.15 in /backend
2021-08-07 13:00:55 +10:00
1894960762 Merge pull request #1286 from jc21/fixes-certificate-renewal
Fixes certificate renewal
2021-08-07 12:59:58 +10:00
83c5c55f32 Fixes creation of certificates using the http challenge 2021-08-06 10:56:06 +02:00
fb8c0b9a48 Bump tar from 4.4.13 to 4.4.15 in /backend
Bumps [tar](https://github.com/npm/node-tar) from 4.4.13 to 4.4.15.
- [Release notes](https://github.com/npm/node-tar/releases)
- [Changelog](https://github.com/npm/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-tar/compare/v4.4.13...v4.4.15)

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-04 20:15:26 +00:00
d34691152c Fixes renewal unused http certificates 2021-08-04 14:07:53 +02:00
cea80b482e Fixes certificate renewal for dns challenges 2021-08-04 13:47:44 +02:00
c460a8fa5c Update letsencrypt.ini to support ECDSA keys
Since we have newer certbot available, it's time to support more modern and safer ECDSA keys instead of RSA.
2021-07-28 11:25:24 +01:00
5f852437fe Merge pull request #1261 from jc21/develop
v2.9.6
2021-07-25 23:19:35 +10:00
8aded1a685 Bump version 2021-07-25 21:10:26 +10:00
f2acb9e150 Tweaks to s6 scripts 2021-07-25 21:09:02 +10:00
6f3a00c9b8 Merge pull request #1255 from jc21/fixes-crash-when-logrotation-fails 2021-07-24 08:50:12 +10:00
fbae107c04 Changes owner of logs to root on every container start 2021-07-23 09:11:43 +02:00
6c1ae77a2a Utilise variable for custom locations proxy_pass
If a custom location is currently set to proxy to a DNS hostname this hostname is cached by nginx. When the underlying IP for the hostname changes this will be cached in nginx until it is restarted. This behaviour is somewhat undesirable if utilising containers.

This change sets the proxy_pass for custom locations into a variable and utilises said variable for routing to the upstream backend. This will ensure that nginx will utilise the resolver and resolve the hostname to the current IP instead of relying on the nginx cache.
2021-07-23 16:24:46 +10:00
67e8ca6714 Fixes crash when logrotate fails 2021-07-22 14:05:21 +02:00
a56d976947 Merge pull request #1248 from jc21/develop
v2.9.5
2021-07-19 22:10:23 +10:00
ac0bb6bee2 Merge branch 'master' into develop 2021-07-19 15:59:06 +10:00
dee67dac75 Bumped version, added contributors 2021-07-19 15:58:15 +10:00
9458cfbd1a Merge pull request #1229 from demize/auth_request-fix
Disable auth_request in letsencrypt-acme-challenge.conf
2021-07-18 21:54:59 +10:00
4b8bdd22b3 Merge pull request #1181 from Theyooo/fix-wildcard-domains-regex
Fix wildcard domain regex
2021-07-18 19:05:23 +10:00
a4c143e2d1 Merge pull request #1178 from mrdink/patch-1
Update messages.json
2021-07-12 07:54:36 +10:00
e91019feb9 Merge pull request #1140 from jc21/adds-logrotation
Adds logrotation
2021-07-12 07:54:02 +10:00
8a37ec72b7 Merge pull request #1212 from jc21/dependabot/npm_and_yarn/docs/color-string-1.5.5
Bump color-string from 1.5.3 to 1.5.5 in /docs
2021-07-12 07:52:49 +10:00
c263a33095 Merge pull request #1222 from PUP-Loki/patch-1
Added Joker dns provider
2021-07-12 07:52:34 +10:00
4b2c0115db Add to letsencrypt-acme-challenge.conf to allow for ACME challenges on proxy hosts using auth_requests 2021-07-10 15:02:09 -04:00
673f40bd85 Removes force parameter from logrotate 2021-07-09 12:34:50 +02:00
b9f8108cd3 Added Joker dns provider 2021-07-07 08:49:30 +01:00
a16ecf656b Bump color-string from 1.5.3 to 1.5.5 in /docs
Bumps [color-string](https://github.com/Qix-/color-string) from 1.5.3 to 1.5.5.
- [Release notes](https://github.com/Qix-/color-string/releases)
- [Changelog](https://github.com/Qix-/color-string/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Qix-/color-string/commits/1.5.5)

---
updated-dependencies:
- dependency-name: color-string
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-30 23:58:23 +00:00
842cff130b Re-add missing certbot force renewal flag
and cleaned up this horrible file a bit
2021-07-01 09:57:26 +10:00
346b9b4b79 Added Loopia dns provider 2021-06-30 14:11:58 +02:00
56c317d223 All logs in single folder
nginx cannot create the folder structure for logs
2021-06-29 23:07:54 +02:00
b7b150a979 Run logrotation binary from program 2021-06-29 21:18:29 +02:00
fae848bd1b Store host logs in subfolders 2021-06-29 20:40:36 +02:00
a5b8087dc5 Bump normalize-url from 4.5.0 to 4.5.1 in /backend
Bumps [normalize-url](https://github.com/sindresorhus/normalize-url) from 4.5.0 to 4.5.1.
- [Release notes](https://github.com/sindresorhus/normalize-url/releases)
- [Commits](https://github.com/sindresorhus/normalize-url/commits)

---
updated-dependencies:
- dependency-name: normalize-url
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-29 11:59:33 +00:00
7aa078e025 Bump prismjs from 1.23.0 to 1.24.0 in /docs
Bumps [prismjs](https://github.com/PrismJS/prism) from 1.23.0 to 1.24.0.
- [Release notes](https://github.com/PrismJS/prism/releases)
- [Changelog](https://github.com/PrismJS/prism/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PrismJS/prism/compare/v1.23.0...v1.24.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-28 19:45:20 +00:00
4b6b276b64 Merge pull request #1195 from jc21/develop
v2.9.4
2021-06-22 09:41:47 +10:00
0373daae5c Bump version 2021-06-22 08:55:37 +10:00
7f30dd0475 Merge pull request #1194 from jc21/dependabot/npm_and_yarn/docs/set-getter-0.1.1
Bump set-getter from 0.1.0 to 0.1.1 in /docs
2021-06-22 08:19:36 +10:00
d2a77c2371 Bump set-getter from 0.1.0 to 0.1.1 in /docs
Bumps [set-getter](https://github.com/doowb/set-getter) from 0.1.0 to 0.1.1.
- [Release notes](https://github.com/doowb/set-getter/releases)
- [Commits](https://github.com/doowb/set-getter/commits/0.1.1)

---
updated-dependencies:
- dependency-name: set-getter
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-21 21:26:26 +00:00
104f65b541 Merge pull request #1169 from jc21/dependabot/npm_and_yarn/test/glob-parent-5.1.2
Bump glob-parent from 5.1.0 to 5.1.2 in /test
2021-06-19 10:31:47 +10:00
d0fb4b6914 Merge pull request #1177 from jc21/dependabot/npm_and_yarn/frontend/postcss-7.0.36
Bump postcss from 7.0.32 to 7.0.36 in /frontend
2021-06-19 10:31:36 +10:00
42c3272def Merge pull request #1182 from DSorlov/develop
Update ssl-ciphers.conf
2021-06-19 10:30:43 +10:00
2812889d61 Merge pull request #1186 from jc21/use-certbot-from-path
Use the certbot command from the PATH variable
2021-06-19 10:24:21 +10:00
bd3a13b2a5 Also rotate other logs 2021-06-18 10:43:56 +02:00
289d179142 Adds logrotate 2021-06-18 09:38:48 +02:00
deca493912 Splits access and error logs for each host 2021-06-18 09:38:48 +02:00
d16bf7d6c0 Adds explicit names to dev containers 2021-06-18 09:38:48 +02:00
3f1415dad1 Use the certbot command from the PATH variable 2021-06-18 09:22:42 +02:00
3e744b6b2d Update ssl-ciphers.conf
Removing support (by default) for all the unsecure protocols. This should be the default and if needed additional support can be configured. As this is a security feature it should be aligned with a moderate policy. This is updated using the latest recomendation as found on https://ssl-config.mozilla.org/#server=nginx&version=1.17.7&config=intermediate&openssl=1.1.1d&guideline=5.6
2021-06-17 15:17:13 +02:00
56c4f8a106 fix wildcard domains regex 2021-06-17 11:51:51 +02:00
99ef8bae4c Update messages.json
small change but updated the year in the footer. maybe there's a better way to grab the date with a function?
2021-06-16 09:29:55 -04:00
b7f0343730 Bump postcss from 7.0.32 to 7.0.36 in /frontend
Bumps [postcss](https://github.com/postcss/postcss) from 7.0.32 to 7.0.36.
- [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/7.0.32...7.0.36)

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-16 10:16:48 +00:00
c807b59fb4 Merge pull request #1149 from Fuechslein/develop 2021-06-16 20:16:08 +10:00
60fc57431a Merge pull request #1136 from jc21/dependabot/npm_and_yarn/docs/ws-7.4.6
Bump ws from 7.3.1 to 7.4.6 in /docs
2021-06-11 12:11:30 +10:00
d988a3a307 Bump glob-parent from 5.1.0 to 5.1.2 in /test
Bumps [glob-parent](https://github.com/gulpjs/glob-parent) from 5.1.0 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.0...v5.1.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-11 01:26:02 +00:00
de763d3fa9 Merge pull request #1170 from jc21/dependabot/npm_and_yarn/docs/glob-parent-5.1.2
Bump glob-parent from 5.1.1 to 5.1.2 in /docs
2021-06-11 11:25:28 +10:00
21bfb61cc8 Merge pull request #1068 from jc21/dependabot/npm_and_yarn/frontend/underscore-1.12.1
Bump underscore from 1.10.2 to 1.12.1 in /frontend
2021-06-11 10:01:30 +10:00
a79adeb280 Bump ws from 7.3.1 to 7.4.6 in /docs
Bumps [ws](https://github.com/websockets/ws) from 7.3.1 to 7.4.6.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/7.3.1...7.4.6)

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-10 23:08:37 +00:00
9b7a019222 Merge pull request #1159 from jc21/changes-real_ip-ranges-to-local-network
Sets real_ip ranges to local network only
2021-06-11 09:07:57 +10:00
e65143d276 Merge pull request #1164 from jc21/dependabot/npm_and_yarn/docs/normalize-url-5.3.1
Bump normalize-url from 5.1.0 to 5.3.1 in /docs
2021-06-11 09:07:06 +10:00
61bb183eda Bump glob-parent from 5.1.1 to 5.1.2 in /docs
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: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-10 23:06:36 +00:00
f3d3a6db91 Merge pull request #1165 from jc21/dependabot/npm_and_yarn/docs/css-what-5.0.1
Bump css-what from 3.3.0 to 5.0.1 in /docs
2021-06-11 09:05:46 +10:00
9ebb443cb7 Bump css-what from 3.3.0 to 5.0.1 in /docs
Bumps [css-what](https://github.com/fb55/css-what) from 3.3.0 to 5.0.1.
- [Release notes](https://github.com/fb55/css-what/releases)
- [Commits](https://github.com/fb55/css-what/compare/v3.3.0...v5.0.1)

---
updated-dependencies:
- dependency-name: css-what
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-09 19:18:07 +00:00
fa4c4d0a8d Bump normalize-url from 5.1.0 to 5.3.1 in /docs
Bumps [normalize-url](https://github.com/sindresorhus/normalize-url) from 5.1.0 to 5.3.1.
- [Release notes](https://github.com/sindresorhus/normalize-url/releases)
- [Commits](https://github.com/sindresorhus/normalize-url/commits)

---
updated-dependencies:
- dependency-name: normalize-url
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-09 00:57:18 +00:00
3e1518fef6 Updated docs for docker restart policy 2021-06-08 08:48:26 +10:00
e59db84721 Merge pull request #1155 from ChrisTracy/patch-1
Adding "restart: always" to ReadMe
2021-06-08 08:45:28 +10:00
c281b31fc8 Update README.md 2021-06-07 09:38:45 -05:00
1c93ca9896 Merge pull request #1158 from jc21/fixes-duckdns-certbot 2021-06-07 18:33:25 +10:00
df5836e573 Sets real_ip ranges to local network only 2021-06-07 08:30:39 +02:00
41ef35f0d0 Fixes duckdns certbot 2021-06-07 08:27:01 +02:00
5e6ce8643f Adds reddit badge to readme 2021-06-07 06:19:29 +00:00
f575400bc8 Merge pull request #1081 from vipergts450/vipergts450-custom_location-patch
Vipergts450 custom location patch
2021-06-07 12:46:23 +10:00
6d9a335b0e Merge pull request #1129 from jc21/dependabot/npm_and_yarn/docs/dns-packet-5.2.2
Bump dns-packet from 5.2.1 to 5.2.2 in /docs
2021-06-07 12:44:26 +10:00
f94eb5f318 Merge pull request #1123 from jc21/dependabot/npm_and_yarn/docs/browserslist-4.16.5
Bump browserslist from 4.13.0 to 4.16.5 in /docs
2021-06-07 09:30:49 +10:00
245fa421a2 Adding "restart: always" to ReadMe
Adding "restart: always" to ReadMe. I had a hard time figuring out why once of my NPM containers would not start on reboot while the rest of them would.
2021-06-06 12:14:58 -05:00
655094a816 Update certbot-dns-plugins.js 2021-06-06 16:44:44 +02:00
d544650b05 fix spacings. again. 2021-06-03 19:42:14 +02:00
d9d682585c fix spaces/tabs 2021-06-03 19:35:30 +02:00
44a202552e Restore default build script 2021-06-03 18:36:25 +02:00
fd6673420b Added IONOS and Infomaniak certbot plugins 2021-06-03 18:33:33 +02:00
0e9cd5db9c Merge pull request #1122 from jc21/fixes-some-database-issues
Fixes some database issues on raspberry pi
2021-05-31 08:43:28 +10:00
6da6e6f145 Bump dns-packet from 5.2.1 to 5.2.2 in /docs
Bumps [dns-packet](https://github.com/mafintosh/dns-packet) from 5.2.1 to 5.2.2.
- [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.1...v5.2.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-26 18:51:46 +00:00
bdaa7460e4 Bump browserslist from 4.13.0 to 4.16.5 in /docs
Bumps [browserslist](https://github.com/browserslist/browserslist) from 4.13.0 to 4.16.5.
- [Release notes](https://github.com/browserslist/browserslist/releases)
- [Changelog](https://github.com/browserslist/browserslist/blob/main/CHANGELOG.md)
- [Commits](https://github.com/browserslist/browserslist/compare/4.13.0...4.16.5)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-26 04:04:42 +00:00
d6d1c1ac35 Updates raspberry pi docker compose in documentation 2021-05-25 14:18:51 +02:00
67958155fc Updates generated sqlite config in documentation 2021-05-25 14:18:01 +02:00
198bd74ec6 Adds useNullAsDefault to default sqlite config 2021-05-25 14:16:46 +02:00
92eec95dad Merge pull request #1111 from jc21/develop
v2.9.3
2021-05-21 08:59:01 +10:00
b73a034fca Merge branch 'master' into develop 2021-05-20 13:34:43 +10:00
11b508f021 Bump version, added contributors 2021-05-20 13:31:14 +10:00
c2b5be37f9 Merge pull request #966 from razvanstoica89/master
Add new details about how to run this image on a Raspberry Pi device.
2021-05-20 08:15:31 +10:00
1a04863a08 Merge pull request #972 from psharma04/master
Add info about SSL
2021-05-20 08:14:28 +10:00
077d3eb993 Merge pull request #1071 from jc21/dependabot/npm_and_yarn/frontend/ua-parser-js-0.7.28
Bump ua-parser-js from 0.7.21 to 0.7.28 in /frontend
2021-05-20 08:12:41 +10:00
ac38221bdf Merge pull request #1094 from jc21/dependabot/npm_and_yarn/docs/postcss-8.2.10
Bump postcss from 7.0.32 to 8.2.10 in /docs
2021-05-20 08:12:25 +10:00
9f146b8fc3 Merge pull request #1099 from jc21/updates-dns-providers
Updates Porkbun, DuckDNS & Azure challenge providers
2021-05-20 08:12:12 +10:00
9a2d9659a7 Merge pull request #1100 from jc21/show-entity-ids-in-frontend
Displays entity id for each entry in frontend
2021-05-20 08:11:12 +10:00
6faae5350a Merge pull request #1107 from jc21/improved-issue-templates
Updates issue templates
2021-05-20 08:10:01 +10:00
2616709e7f Reactivates Azure dns challenge with new version 2021-05-19 21:07:56 +02:00
bed9ff084c Adds dns challenge issue template 2021-05-18 20:44:06 +02:00
fb3082b0bb Updates issue templates to prevent segment information to show up in issue 2021-05-18 20:10:50 +02:00
c8439b8429 Displays entity id for each entry in frontend
Displays this id inside the three-dot-menu on the right
2021-05-16 16:57:05 +02:00
4c3632d3e7 Automatically sort DNS challenge providers by display name on render 2021-05-15 19:16:28 +02:00
24d8cd57da Updates DuckDNS to a working version 2021-05-15 18:35:49 +02:00
b7c0a8b0c2 Sorts providers alphabetically 2021-05-15 18:32:49 +02:00
d6d7b22b1e Adds porkbun as dns provider 2021-05-15 18:31:33 +02:00
5269c957ce Merge pull request #1085 from jc21/improved-new-password-error-messages
Improved new password error messages
2021-05-13 08:24:12 +10:00
bf8d2672c8 Typo (used \m instead of \n) 2021-05-13 08:24:08 +10:00
8461acab9b Merge pull request #1088 from bikram990/develop
Added support for Dynu DNS Provider
2021-05-13 08:23:10 +10:00
731ae43fe8 Merge pull request #1095 from jc21/godaddy-dns
Adds GoDaddy DNS and temporarily disables Azure DNS
2021-05-13 08:22:37 +10:00
5354c85352 Merge pull request #1096 from jc21/serve-fonts-locally
Serves font locally
2021-05-13 08:22:00 +10:00
22a37bb923 Disables azure dns provider temporarily 2021-05-12 18:49:28 +02:00
07bbece704 Serves font locally 2021-05-12 18:03:10 +02:00
9af2f50d81 Adds GoDaddy DNS provider 2021-05-12 16:28:09 +02:00
7b148f7970 Bump postcss from 7.0.32 to 8.2.10 in /docs
Bumps [postcss](https://github.com/postcss/postcss) from 7.0.32 to 8.2.10.
- [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/7.0.32...8.2.10)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-12 06:59:49 +00:00
a1e52d919f Added support for Dynu DNS Provider 2021-05-11 20:24:52 +05:30
899b487daa Puts backend errors into own error field 2021-05-10 19:58:28 +02:00
86eeb5fc44 Merge pull request #1084 from jc21/develop
v2.9.2
2021-05-10 09:10:13 +10:00
62a708b416 Version bump 2021-05-10 08:18:19 +10:00
a7ce8704b3 Merge pull request #1069 from jc21/dependabot/npm_and_yarn/backend/lodash-4.17.21
Bump lodash from 4.17.19 to 4.17.21 in /backend
2021-05-10 08:15:22 +10:00
7319a13077 Merge pull request #1074 from jc21/dependabot/npm_and_yarn/frontend/lodash-4.17.21
Bump lodash from 4.17.19 to 4.17.21 in /frontend
2021-05-10 08:15:13 +10:00
95bd4d93c5 Merge pull request #1080 from jc21/dependabot/npm_and_yarn/frontend/hosted-git-info-2.8.9
Bump hosted-git-info from 2.8.8 to 2.8.9 in /frontend
2021-05-10 08:15:01 +10:00
69c33f0395 Merge pull request #1083 from chaptergy/adds-more-dns-challenges
Adds more dns challenges
2021-05-10 08:14:07 +10:00
cd4caea2dc Adds coudns dns provider 2021-05-09 21:47:30 +02:00
c9daf19940 Reorders some providers alphabetically 2021-05-09 21:36:52 +02:00
7c2540b193 Adds Azure dns provider
Issue #864
2021-05-09 19:46:20 +02:00
3e600552dc Adds regru dns provider
Issue #938
2021-05-09 19:45:42 +02:00
69ee6b1699 Update nginx.js 2021-05-07 23:38:32 -04:00
ca1ea042b2 Update nginx.js 2021-05-07 23:31:51 -04:00
f26df7d9bb Update nginx.js 2021-05-07 22:43:22 -04:00
ba45705571 Partial revert of 421934e
Keeping the server block of websocket definitions but also bringing back the
location block after discussions on #1067
2021-05-08 12:17:10 +10:00
bf8ea71c77 Bump hosted-git-info from 2.8.8 to 2.8.9 in /frontend
Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.8 to 2.8.9.
- [Release notes](https://github.com/npm/hosted-git-info/releases)
- [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md)
- [Commits](https://github.com/npm/hosted-git-info/compare/v2.8.8...v2.8.9)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-08 02:12:03 +00:00
7deb64a5de Bump lodash from 4.17.19 to 4.17.21 in /backend
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.19 to 4.17.21.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.19...4.17.21)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-08 02:11:35 +00:00
e283865d3d Bump lodash from 4.17.19 to 4.17.21 in /frontend
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.19 to 4.17.21.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.19...4.17.21)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-08 02:11:13 +00:00
a32be3e96b Merge pull request #1070 from jc21/dependabot/npm_and_yarn/docs/lodash-4.17.21
Bump lodash from 4.17.19 to 4.17.21 in /docs
2021-05-08 12:10:48 +10:00
0cfd6eab3f Merge pull request #1072 from jc21/dependabot/npm_and_yarn/docs/url-parse-1.5.0
Bump url-parse from 1.4.7 to 1.5.0 in /docs
2021-05-08 12:10:40 +10:00
c2361f13e6 Merge pull request #1073 from jc21/dependabot/npm_and_yarn/test/lodash-4.17.21
Bump lodash from 4.17.19 to 4.17.21 in /test
2021-05-08 12:10:30 +10:00
bc81de54b9 Merge pull request #1078 from jc21/master 2021-05-08 00:21:17 +10:00
07884bc9b1 Merge pull request #1076 from jc21/develop
v2.9.1
2021-05-07 18:57:53 +10:00
58c3204187 Bump lodash from 4.17.19 to 4.17.21 in /test
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.19 to 4.17.21.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.19...4.17.21)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-07 03:52:24 +00:00
19d3deddd4 Bump url-parse from 1.4.7 to 1.5.0 in /docs
Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.4.7 to 1.5.0.
- [Release notes](https://github.com/unshiftio/url-parse/releases)
- [Commits](https://github.com/unshiftio/url-parse/compare/1.4.7...1.5.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-07 03:51:57 +00:00
f0233b947e Bump ua-parser-js from 0.7.21 to 0.7.28 in /frontend
Bumps [ua-parser-js](https://github.com/faisalman/ua-parser-js) from 0.7.21 to 0.7.28.
- [Release notes](https://github.com/faisalman/ua-parser-js/releases)
- [Commits](https://github.com/faisalman/ua-parser-js/compare/0.7.21...0.7.28)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-07 03:51:51 +00:00
c6a90a2fd0 Bump lodash from 4.17.19 to 4.17.21 in /docs
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.19 to 4.17.21.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.19...4.17.21)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-07 03:51:51 +00:00
3607c30d98 Bump version 2021-05-07 13:51:35 +10:00
717105f243 Revert installing certbot. This is handled by base image jc21/nginx-full now
Update path of certbot, and use the pip instead
2021-05-07 13:49:31 +10:00
2373e4a06d Bump underscore from 1.10.2 to 1.12.1 in /frontend
Bumps [underscore](https://github.com/jashkenas/underscore) from 1.10.2 to 1.12.1.
- [Release notes](https://github.com/jashkenas/underscore/releases)
- [Commits](https://github.com/jashkenas/underscore/compare/1.10.2...1.12.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-07 03:05:13 +00:00
4c76803f13 Rearrange _location.conf template
Allow more of the main host parameters into the custom location configuration and reorder to make more sense.
2021-05-06 22:30:45 -04:00
6a46e88f8f Fix renderLocations to accept more parameters from host
Amend renderLocations to pass more host parameters into the custom locations to match the requirements set for the default location. This will apply all parameters set in the UI to all custom locations.
2021-05-06 22:29:21 -04:00
e4e94d5be0 Update nginx.js
Adds ability for custom location templates to handle includes
2021-05-06 14:50:09 -04:00
a3b896fa70 Update _location.conf 2021-05-06 14:48:38 -04:00
60347a90e9 Update _location.conf 2021-05-06 11:40:40 -04:00
a02d4ec46f Use certbot from pip instead of apt 2021-05-06 19:10:40 +10:00
389fd158ad allows hostname instead of ip for streams 2021-04-24 01:09:01 +02:00
5fc704ccad Add info about SSL 2021-03-23 13:49:14 +11:00
61d99561c1 Set ports to default value 2021-03-22 09:50:25 +02:00
c26ce2083f Add new details about how to run this image on a Raspberry Pi device. 2021-03-21 18:02:53 +02:00
902 changed files with 45374 additions and 35712 deletions

8
.dockerignore Normal file
View File

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

View File

@ -6,20 +6,30 @@ labels: bug
assignees: ''
---
**Are you in the right place?**
<!--
Are you in the right place?
- If you are looking for support on how to get your upstream server forwarding, please consider asking the community on Reddit.
- If you are writing code changes to contribute and need to ask about the internals of the software, Gitter is the best place to ask.
- If you think you found a bug with NPM (not Nginx, or your upstream server or MySql) then you are in the *right place.*
-->
**Checklist**
- Have you pulled and found the error with `jc21/nginx-proxy-manager:latest` docker image?
- Yes / No
- Are you sure you're not using someone else's docker image?
- If having problems with Lets Encrypt, have you made absolutely sure your site is accessible from outside of your network?
- Yes / No
- Have you searched for similar issues (both open and closed)?
- Yes / No
**Describe the bug**
- A clear and concise description of what the bug is.
- What version of Nginx Proxy Manager is reported on the login page?
<!-- A clear and concise description of what the bug is. -->
**Nginx Proxy Manager Version**
<!-- What version of Nginx Proxy Manager is reported on the login page? -->
**To Reproduce**
Steps to reproduce the behavior:
@ -28,14 +38,18 @@ Steps to reproduce the behavior:
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
<!-- A clear and concise description of what you expected to happen. -->
**Screenshots**
If applicable, add screenshots to help explain your problem.
<!-- If applicable, add screenshots to help explain your problem. -->
**Operating System**
- Please specify if using a Rpi, Mac, orchestration tool or any other setups that might affect the reproduction of this error.
<!-- Please specify if using a Rpi, Mac, orchestration tool or any other setups that might affect the reproduction of this error. -->
**Additional context**
Add any other context about the problem here, docker version, browser version if applicable to the problem. Too much info is better than too little.
<!-- Add any other context about the problem here, docker version, browser version, logs if applicable to the problem. Too much info is better than too little. -->

View File

@ -0,0 +1,18 @@
---
name: DNS challenge provider request
about: Suggest a new provider to be available for a certificate DNS challenge
title: ''
labels: dns provider request
assignees: ''
---
**What provider would you like to see added to NPM?**
<!-- What is this provider called? -->
**Have you checked if a certbot plugin exists?**
<!--
Currently NPM only supports DNS challenge providers for which a certbot plugin exists.
You can visit pypi.org, and search for a package with the name `certbot-dns-<privider>`.
-->

View File

@ -7,19 +7,26 @@ assignees: ''
---
**Are you in the right place?**
<!--
Are you in the right place?
- If you are looking for support on how to get your upstream server forwarding, please consider asking the community on Reddit.
- If you are writing code changes to contribute and need to ask about the internals of the software, Gitter is the best place to ask.
- If you have a feature request for NPM then you are in the *right place.*
- If you think you found a bug with NPM (not Nginx, or your upstream server or MySql) then you are in the *right place.*
-->
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
<!-- A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] -->
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
<!-- A clear and concise description of what you want to happen. -->
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
<!-- A clear and concise description of any alternative solutions or features you've considered. -->
**Additional context**
Add any other context or screenshots about the feature request here.
<!-- Add any other context or screenshots about the feature request here. -->

24
.gitignore vendored
View File

@ -1,5 +1,25 @@
git.idea
.env
.DS_Store
.idea
._*
*.code-workspace
vendor
bin/*
backend/config.json
backend/embed/assets
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
certbot-help.txt
docker-build
data
dist
backend/embed/acme.sh
docker/dev/resolv.conf
docker/dev/dnsrouter-config.json.tmp

View File

@ -1 +1 @@
2.9.0
3.0.0a

93
DEV-README.md Normal file
View File

@ -0,0 +1,93 @@
# Development
```bash
git clone nginxproxymanager
cd nginxproxymanager
./scripts/start-dev
# wait a minute or 2 for the package to build after container start
curl http://127.0.0.1:3081/api/
```
## Using Local Test Certificate Authorities
It's handy to use these instead of hitting production or staging acme servers
when testing lots of stuff.
Firstly create your first user using the api:
```bash
curl --request POST \
--url http://127.0.0.1:3081/api/users \
--header 'Content-Type: application/json' \
--data '{
"name": "Bobby Tables",
"nickname": "Bobby",
"email": "you@example.com",
"roles": ["admin"],
"is_disabled": false,
"auth": {
"type": "password",
"secret": "changeme"
}
}'
```
Then login in with those credentials to get your JWT token and set
that as an environment variable:
```bash
NPM_TOKEN=$(curl --request POST \
--url http://127.0.0.1:3081/api/tokens \
--header 'Content-Type: application/json' \
--data '{
"type": "password",
"identity": "you@example.com",
"secret": "changeme"
}' | jq -r '.result.token')
```
Then choose one or both of the following CA's to set up.
### SmallStep Acme CA
[StepCA](https://github.com/smallstep/certificates) is SmallSteps's test CA server.
- ✅ HTTP Validation
- ✅ DNS Validation
Create a Certificate Authority that points to the Step CA:
```bash
curl --request POST \
--url http://127.0.0.1:3081/api/certificate-authorities \
--header "Authorization: Bearer ${NPM_TOKEN}" \
--header 'Content-Type: application/json' \
--data '{
"name": "Step CA",
"acmesh_server": "https://ca.internal/acme/acme/directory",
"ca_bundle": "/etc/ssl/certs/NginxProxyManager.crt",
"max_domains": 2
}'
```
### Pebble Test Acme CA
[Pebble](https://github.com/letsencrypt/pebble) is Let's Encrypt's own test CA server.
- ✅ HTTP Validation
- ❌ DNS Validation
Create a Certificate Authority that points to the Pebble CA:
```bash
curl --request POST \
--url http://127.0.0.1:3081/api/certificate-authorities \
--header "Authorization: Bearer ${NPM_TOKEN}" \
--header 'Content-Type: application/json' \
--data '{
"name": "Pebble CA",
"acmesh_server": "https://pebble/dir",
"ca_bundle": "/etc/ssl/certs/pebble.minica.pem",
"max_domains": 2
}'
```

171
Jenkinsfile vendored
View File

@ -8,14 +8,18 @@ pipeline {
ansiColor('xterm')
}
environment {
IMAGE = "nginx-proxy-manager"
DOCKER_ORG = 'jc21'
IMAGE = 'nginx-proxy-manager'
BUILD_VERSION = getVersion()
MAJOR_VERSION = "2"
BUILD_COMMIT = getCommit()
MAJOR_VERSION = '3'
BRANCH_LOWER = "${BRANCH_NAME.toLowerCase().replaceAll('/', '-')}"
COMPOSE_PROJECT_NAME = "npm_${BRANCH_LOWER}_${BUILD_NUMBER}"
COMPOSE_FILE = 'docker/docker-compose.ci.yml'
COMPOSE_INTERACTIVE_NO_CLI = 1
BUILDX_NAME = "${COMPOSE_PROJECT_NAME}"
DOCS_BUCKET = 'jc21-npm-site-next' // TODO: change to prod when official
DOCS_CDN = 'E2Z0128EHS0Q23' // TODO: same
}
stages {
stage('Environment') {
@ -26,7 +30,9 @@ pipeline {
}
steps {
script {
env.BUILDX_PUSH_TAGS = "-t docker.io/jc21/${IMAGE}:${BUILD_VERSION} -t docker.io/jc21/${IMAGE}:${MAJOR_VERSION} -t docker.io/jc21/${IMAGE}:latest"
env.BUILDX_PUSH_TAGS = "-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'
}
}
}
@ -39,99 +45,77 @@ pipeline {
steps {
script {
// Defaults to the Branch name, which is applies to all branches AND pr's
env.BUILDX_PUSH_TAGS = "-t docker.io/jc21/${IMAGE}:github-${BRANCH_LOWER}"
// env.BUILDX_PUSH_TAGS = "-t docker.io/jc21/${IMAGE}:github-${BRANCH_LOWER}"
env.BUILDX_PUSH_TAGS = "-t docker.io/${DOCKER_ORG}/${IMAGE}:v3"
}
}
}
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('Frontend') {
steps {
sh './scripts/frontend-build'
sh './scripts/ci/build-frontend'
}
/*
post {
always {
junit 'frontend/eslint.xml'
junit 'frontend/junit.xml'
}
}
*/
}
stage('Backend') {
steps {
echo 'Checking Syntax ...'
// See: https://github.com/yarnpkg/yarn/issues/3254
sh '''docker run --rm \\
-v "$(pwd)/backend:/app" \\
-v "$(pwd)/global:/app/global" \\
-w /app \\
node:latest \\
sh -c "yarn install && yarn eslint . && rm -rf node_modules"
'''
echo 'Docker Build ...'
sh '''docker build --pull --no-cache --squash --compress \\
-t "${IMAGE}:ci-${BUILD_NUMBER}" \\
-f docker/Dockerfile \\
--build-arg TARGETPLATFORM=linux/amd64 \\
--build-arg BUILDPLATFORM=linux/amd64 \\
--build-arg BUILD_VERSION="${BUILD_VERSION}" \\
--build-arg BUILD_COMMIT="${BUILD_COMMIT}" \\
--build-arg BUILD_DATE="$(date '+%Y-%m-%d %T %Z')" \\
.
'''
}
}
stage('Integration Tests Sqlite') {
steps {
// Bring up a stack
sh 'docker-compose up -d fullstack-sqlite'
sh './scripts/wait-healthy $(docker-compose ps -q fullstack-sqlite) 120'
// Run tests
sh 'rm -rf test/results'
sh 'docker-compose up cypress-sqlite'
// Get results
sh 'docker cp -L "$(docker-compose ps -q cypress-sqlite):/test/results" test/'
withCredentials([string(credentialsId: 'npm-sentry-dsn', variable: 'SENTRY_DSN')]) {
withCredentials([usernamePassword(credentialsId: 'oss-index-token', passwordVariable: 'NANCY_TOKEN', usernameVariable: 'NANCY_USER')]) {
sh './scripts/ci/test-backend'
}
sh './scripts/ci/build-backend'
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}" \\
.
'''
}
}
post {
always {
// Dumps to analyze later
sh 'mkdir -p debug'
sh 'docker-compose logs fullstack-sqlite | gzip > debug/docker_fullstack_sqlite.log.gz'
sh 'docker-compose logs db | gzip > debug/docker_db.log.gz'
// Cypress videos and screenshot artifacts
dir(path: 'test/results') {
archiveArtifacts allowEmptyArchive: true, artifacts: '**/*', excludes: '**/*.xml'
}
junit 'test/results/junit/*'
success {
archiveArtifacts allowEmptyArchive: false, artifacts: 'bin/*'
}
}
}
stage('Integration Tests Mysql') {
stage('Test') {
when {
not {
equals expected: 'UNSTABLE', actual: currentBuild.result
}
}
steps {
// Bring up a stack
sh 'docker-compose up -d fullstack-mysql'
sh './scripts/wait-healthy $(docker-compose ps -q fullstack-mysql) 120'
// Run tests
sh 'rm -rf test/results'
sh 'docker-compose up cypress-mysql'
// Get results
sh 'docker cp -L "$(docker-compose ps -q cypress-mysql):/test/results" test/'
// Docker image check
/*
sh '''docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
-v "$(pwd)/docker:/app" \
-e CI=true \
wagoodman/dive:latest --ci-config /app/.dive-ci \
"${IMAGE}:${BRANCH_LOWER}-ci-${BUILD_NUMBER}"
'''
*/
sh './scripts/ci/fulltest-cypress'
}
post {
always {
// Dumps to analyze later
sh 'mkdir -p debug'
sh 'docker-compose logs fullstack-mysql | gzip > debug/docker_fullstack_mysql.log.gz'
sh 'docker-compose logs db | gzip > debug/docker_db.log.gz'
// Cypress videos and screenshot artifacts
dir(path: 'test/results') {
archiveArtifacts allowEmptyArchive: true, artifacts: '**/*', excludes: '**/*.xml'
}
sh 'docker-compose logs fullstack > debug/docker_fullstack.log'
sh 'docker-compose logs stepca > debug/docker_stepca.log'
sh 'docker-compose logs pdns > debug/docker_pdns.log'
sh 'docker-compose logs pdns-db > debug/docker_pdns-db.log'
sh 'docker-compose logs dnsrouter > debug/docker_dnsrouter.log'
junit 'test/results/junit/*'
}
}
@ -148,11 +132,14 @@ pipeline {
sh 'yarn build'
}
// API Docs:
sh 'docker-compose exec -T fullstack curl -s --output /temp-docs/api-schema.json "http://fullstack:81/api/schema"'
sh 'mkdir -p "docs/.vuepress/dist/api"'
sh 'mv docs/api-schema.json docs/.vuepress/dist/api/'
dir(path: 'docs/.vuepress/dist') {
sh 'tar -czf ../../docs.tgz *'
}
archiveArtifacts(artifacts: 'docs/docs.tgz', allowEmptyArchive: false)
}
}
stage('MultiArch Build') {
@ -162,18 +149,19 @@ pipeline {
}
}
steps {
withCredentials([usernamePassword(credentialsId: 'jc21-dockerhub', passwordVariable: 'dpass', usernameVariable: 'duser')]) {
// Docker Login
sh "docker login -u '${duser}' -p '${dpass}'"
// Buildx with push from cache
sh "./scripts/buildx --push ${BUILDX_PUSH_TAGS}"
withCredentials([string(credentialsId: 'npm-sentry-dsn', variable: 'SENTRY_DSN')]) {
withCredentials([usernamePassword(credentialsId: 'jc21-dockerhub', passwordVariable: 'dpass', usernameVariable: 'duser')]) {
sh 'docker login -u "${duser}" -p "${dpass}"'
sh './scripts/buildx --push ${BUILDX_PUSH_TAGS}'
// sh './scripts/buildx -o type=local,dest=docker-build'
}
}
}
}
stage('Docs Deploy') {
when {
allOf {
branch 'master'
branch 'v3' // TOODO: change to master when ready
not {
equals expected: 'UNSTABLE', actual: currentBuild.result
}
@ -183,7 +171,7 @@ pipeline {
withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: 'npm-s3-docs', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) {
sh """docker run --rm \\
--name \${COMPOSE_PROJECT_NAME}-docs-upload \\
-e S3_BUCKET=jc21-npm-site \\
-e S3_BUCKET=$DOCS_BUCKET \\
-e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \\
-e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \\
-v \$(pwd):/app \\
@ -197,7 +185,7 @@ pipeline {
-e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \\
-e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \\
jc21/ci-tools \\
aws cloudfront create-invalidation --distribution-id EN1G6DEWZUTDT --paths '/*'
aws cloudfront create-invalidation --distribution-id $DOCS_CDN --paths '/*'
"""
}
}
@ -213,27 +201,34 @@ pipeline {
}
steps {
script {
def comment = pullRequest.comment("This is an automated message from CI:\n\nDocker Image for build ${BUILD_NUMBER} is available on [DockerHub](https://cloud.docker.com/repository/docker/jc21/${IMAGE}) as `jc21/${IMAGE}:github-${BRANCH_LOWER}`\n\n**Note:** ensure you backup your NPM instance before testing this PR image! Especially if this PR contains database changes.")
def comment = pullRequest.comment("This is an automated message from CI:\n\nDocker Image for build ${BUILD_NUMBER} is available on [DockerHub](https://cloud.docker.com/repository/docker/${DOCKER_ORG}/${IMAGE}) as `${DOCKER_ORG}/${IMAGE}:github-${BRANCH_LOWER}`\n\n**Note:** ensure you backup your NPM instance before testing this PR image! Especially if this PR contains database changes.")
}
}
}
}
post {
always {
sh 'docker-compose down --rmi all --remove-orphans --volumes -t 30'
sh 'echo Reverting ownership'
sh 'docker run --rm -v $(pwd):/data jc21/ci-tools chown -R $(id -u):$(id -g) /data'
sh 'docker-compose down --rmi all --remove-orphans --volumes -t 30 || true'
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'
}
success {
juxtapose event: 'success'
sh 'figlet "SUCCESS"'
}
failure {
dir(path: 'test') {
archiveArtifacts allowEmptyArchive: true, artifacts: 'results/**/*', excludes: '**/*.xml'
}
archiveArtifacts(artifacts: 'debug/**.*', allowEmptyArchive: true)
juxtapose event: 'failure'
sh 'figlet "FAILURE"'
}
unstable {
dir(path: 'test') {
archiveArtifacts allowEmptyArchive: true, artifacts: 'results/**/*', excludes: '**/*.xml'
}
archiveArtifacts(artifacts: 'debug/**.*', allowEmptyArchive: true)
juxtapose event: 'unstable'
sh 'figlet "UNSTABLE"'

340
README.md
View File

@ -1,25 +1,19 @@
<p align="center">
<img src="https://nginxproxymanager.com/github.png">
<br><br>
<img src="https://img.shields.io/badge/version-2.9.0-green.svg?style=for-the-badge">
<img src="https://img.shields.io/badge/version-2.9.19-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>
<a href="https://hub.docker.com/repository/docker/jc21/nginx-proxy-manager">
<img src="https://img.shields.io/docker/pulls/jc21/nginx-proxy-manager.svg?style=for-the-badge">
</a>
<a href="https://ci.nginxproxymanager.com/blue/organizations/jenkins/nginx-proxy-manager/branches/">
<img src="https://img.shields.io/jenkins/build?jobUrl=https%3A%2F%2Fci.nginxproxymanager.com%2Fjob%2Fnginx-proxy-manager%2Fjob%2Fmaster&style=for-the-badge">
</a>
<a href="https://gitter.im/nginx-proxy-manager/community">
<img alt="Gitter" src="https://img.shields.io/gitter/room/nginx-proxy-manager/community?style=for-the-badge">
</a>
</p>
This project comes as a pre-built docker image that enables you to easily forward to your websites
running at home or otherwise, including free SSL, without having to know too much about Nginx or Letsencrypt.
- [Quick Setup](https://nginxproxymanager.com#quick-setup)
- [Quick Setup](#quick-setup)
- [Full Setup](https://nginxproxymanager.com/setup/)
- [Screenshots](https://nginxproxymanager.com/screenshots/)
@ -35,7 +29,7 @@ so that the barrier for entry here is low.
## Features
- Beautiful and Secure Admin Interface based on [Tabler](https://tabler.github.io/)
- Beautiful and Secure Admin Interface based on [Chakra UI](https://chakra-ui.com/)
- 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
@ -53,285 +47,55 @@ I won't go in to too much detail here but here are the basics for someone new to
4. Use the Nginx Proxy Manager as your gateway to forward to your other web based services
## Quickest Setup
1. Install Docker and Docker-Compose
- [Docker Install documentation](https://docs.docker.com/install/)
- [Docker-Compose Install documentation](https://docs.docker.com/compose/install/)
2. Create a docker-compose.yml file similar to this:
```yml
version: '3'
services:
app:
image: 'jc21/nginx-proxy-manager:v3'
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- ./data:/data
```
3. Bring up your stack by running
```bash
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.
[http://127.0.0.1:81](http://127.0.0.1:81)
## Contributors
Special thanks to the following contributors:
Special thanks to [all of our contributors](https://github.com/NginxProxyManager/nginx-proxy-manager/graphs/contributors).
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
<tr>
<td align="center">
<a href="https://github.com/Subv">
<img src="https://avatars1.githubusercontent.com/u/357072?s=460&u=d8adcdc91d749ae53e177973ed9b6bb6c4c894a3&v=4" width="80" alt=""/>
<br /><sub><b>Sebastian Valle</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/Indemnity83">
<img src="https://avatars3.githubusercontent.com/u/35218?s=460&u=7082004ff35138157c868d7d9c683ccebfce5968&v=4" width="80" alt=""/>
<br /><sub><b>Kyle Klaus</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/theraw">
<img src="https://avatars1.githubusercontent.com/u/32969774?s=460&u=6b359971e15685fb0359e6a8c065a399b40dc228&v=4" width="80" alt=""/>
<br /><sub><b>ƬHE ЯAW</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/spalger">
<img src="https://avatars2.githubusercontent.com/u/1329312?s=400&u=565223e38f1c052afb4c5dcca3fcf1c63ba17ae7&v=4" width="80" alt=""/>
<br /><sub><b>Spencer</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/Xantios">
<img src="https://avatars3.githubusercontent.com/u/1507836?s=460&v=4" width="80" alt=""/>
<br /><sub><b>Xantios Krugor</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/dpanesso">
<img src="https://avatars2.githubusercontent.com/u/2687121?s=460&v=4" width="80" alt=""/>
<br /><sub><b>David Panesso</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/IronTooch">
<img src="https://avatars3.githubusercontent.com/u/27360514?s=460&u=69bf854a6647c55725f62ecb8d39249c6c0b2602&v=4" width="80" alt=""/>
<br /><sub><b>IronTooch</b></sub>
</a>
</td>
</tr>
<tr>
<td align="center">
<a href="https://github.com/damianog">
<img src="https://avatars1.githubusercontent.com/u/2786682?s=460&u=76c6136fae797abb76b951cd8a246dcaecaf21af&v=4" width="80" alt=""/>
<br /><sub><b>Damiano</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/tfmm">
<img src="https://avatars3.githubusercontent.com/u/6880538?s=460&u=ce0160821cc4aa802df8395200f2d4956a5bc541&v=4" width="80" alt=""/>
<br /><sub><b>Russ</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/margaale">
<img src="https://avatars3.githubusercontent.com/u/20794934?s=460&v=4" width="80" alt=""/>
<br /><sub><b>Marcelo Castagna</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/Steven-Harris">
<img src="https://avatars2.githubusercontent.com/u/7720242?s=460&v=4" width="80" alt=""/>
<br /><sub><b>Steven Harris</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/jlesage">
<img src="https://avatars0.githubusercontent.com/u/1791123?s=460&v=4" width="80" alt=""/>
<br /><sub><b>Jocelyn Le Sage</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/cmer">
<img src="https://avatars0.githubusercontent.com/u/412?s=460&u=67dd8b2e3661bfd6f68ec1eaa5b9821bd8a321cd&v=4" width="80" alt=""/>
<br /><sub><b>Carl Mercier</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/the1ts">
<img src="https://avatars1.githubusercontent.com/u/84956?s=460&v=4" width="80" alt=""/>
<br /><sub><b>Paul Mansfield</b></sub>
</a>
</td>
</tr>
<tr>
<td align="center">
<a href="https://github.com/OhHeyAlan">
<img src="https://avatars0.githubusercontent.com/u/11955126?s=460&u=fbaa5a1a4f73ef8960132c703349bfd037fe2630&v=4" width="80" alt=""/>
<br /><sub><b>OhHeyAlan</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/dogmatic69">
<img src="https://avatars2.githubusercontent.com/u/94674?s=460&u=ca7647de53145c6283b6373ade5dc94ba99347db&v=4" width="80" alt=""/>
<br /><sub><b>Carl Sutton</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/tg44">
<img src="https://avatars0.githubusercontent.com/u/31839?s=460&u=ad32f4cadfef5e5fb09cdfa4b7b7b36a99ba6811&v=4" width="80" alt=""/>
<br /><sub><b>Gergő Törcsvári</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/vrenjith">
<img src="https://avatars3.githubusercontent.com/u/2093241?s=460&u=96ce93a9bebabdd0a60a2dc96cd093a41d5edaba&v=4" width="80" alt=""/>
<br /><sub><b>vrenjith</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/duhruh">
<img src="https://avatars2.githubusercontent.com/u/1133969?s=460&u=c0691e6131ec6d516416c1c6fcedb5034f877bbe&v=4" width="80" alt=""/>
<br /><sub><b>David Rivera</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/jipjan">
<img src="https://avatars2.githubusercontent.com/u/1384618?s=460&v=4" width="80" alt=""/>
<br /><sub><b>Jaap-Jan de Wit</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/jmwebslave">
<img src="https://avatars2.githubusercontent.com/u/6118262?s=460&u=7db409c47135b1e141c366bbb03ed9fae6ac2638&v=4" width="80" alt=""/>
<br /><sub><b>James Morgan</b></sub>
</a>
</td>
</tr>
<tr>
<td align="center">
<a href="https://github.com/chaptergy">
<img src="https://avatars2.githubusercontent.com/u/26956711?s=460&u=7d9adebabb6b4e7af7cb05d98d751087a372304b&v=4" width="80" alt=""/>
<br /><sub><b>chaptergy</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/Philip-Mooney">
<img src="https://avatars0.githubusercontent.com/u/48624631?s=460&v=4" width="80" alt=""/>
<br /><sub><b>Philip Mooney</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/WaterCalm">
<img src="https://avatars1.githubusercontent.com/u/23502129?s=400&v=4" width="80" alt=""/>
<br /><sub><b>WaterCalm</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/lebrou34">
<img src="https://avatars1.githubusercontent.com/u/16373103?s=460&v=4" width="80" alt=""/>
<br /><sub><b>lebrou34</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/lightglitch">
<img src="https://avatars0.githubusercontent.com/u/196953?s=460&v=4" width="80" alt=""/>
<br /><sub><b>Mário Franco</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/klutchell">
<img src="https://avatars3.githubusercontent.com/u/20458272?s=460&v=4" width="80" alt=""/>
<br /><sub><b>Kyle Harding</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/ahgraber">
<img src="https://avatars.githubusercontent.com/u/24922003?s=460&u=8376c9f00af9b6057ba4d2fb03b4f1b20a75277f&v=4" width="80" alt=""/>
<br /><sub><b>Alex Graber</b></sub>
</a>
</td>
</tr>
<tr>
<td align="center">
<a href="https://github.com/MooBaloo">
<img src="https://avatars.githubusercontent.com/u/9493496?s=460&v=4" width="80" alt=""/>
<br /><sub><b>MooBaloo</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/Shuro">
<img src="https://avatars.githubusercontent.com/u/944030?s=460&v=4" width="80" alt=""/>
<br /><sub><b>Shuro</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/lorisbergeron">
<img src="https://avatars.githubusercontent.com/u/51918567?s=460&u=778e4ff284b7d7304450f98421c99f79298371fb&v=4" width="80" alt=""/>
<br /><sub><b>Loris Bergeron</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/hepelayo">
<img src="https://avatars.githubusercontent.com/u/8243119?v=4" width="80" alt=""/>
<br /><sub><b>hepelayo</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/jonasled">
<img src="https://avatars.githubusercontent.com/u/46790650?v=4" width="80" alt=""/>
<br /><sub><b>Jonas Leder</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/stegmannb">
<img src="https://avatars.githubusercontent.com/u/12850482?v=4" width="80" alt=""/>
<br /><sub><b>Bastian Stegmann</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/Stealthii">
<img src="https://avatars.githubusercontent.com/u/998920?v=4" width="80" alt=""/>
<br /><sub><b>Stealthii</b></sub>
</a>
</td>
</tr>
<tr>
<td align="center">
<a href="https://github.com/thegamingninja">
<img src="https://avatars.githubusercontent.com/u/8020534?v=4" width="80" alt=""/>
<br /><sub><b>THEGamingninja</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/italobb">
<img src="https://avatars.githubusercontent.com/u/1801687?v=4" width="80" alt=""/>
<br /><sub><b>Italo Borssatto</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/GurjinderSingh">
<img src="https://avatars.githubusercontent.com/u/3470709?v=4" width="80" alt=""/>
<br /><sub><b>Gurjinder Singh</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/phantomski77">
<img src="https://avatars.githubusercontent.com/u/69464125?v=4" width="80" alt=""/>
<br /><sub><b>David Dosoudil</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/ijaron">
<img src="https://avatars.githubusercontent.com/u/5156472?v=4" width="80" alt=""/>
<br /><sub><b>ijaron</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/nielscil">
<img src="https://avatars.githubusercontent.com/u/9073152?v=4" width="80" alt=""/>
<br /><sub><b>Niels Bouma</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/ogarai">
<img src="https://avatars.githubusercontent.com/u/2949572?v=4" width="80" alt=""/>
<br /><sub><b>Orko Garai</b></sub>
</a>
</td>
</tr>
<tr>
<td align="center">
<a href="https://github.com/baruffaldi">
<img src="https://avatars.githubusercontent.com/u/36949?v=4" width="80" alt=""/>
<br /><sub><b>Filippo Baruffaldi</b></sub>
</a>
</td>
</tr>
</table>
<!-- markdownlint-enable -->
<!-- prettier-ignore-end -->
## 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).

8
backend/.editorconfig Normal file
View File

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

View File

@ -1,73 +0,0 @@
{
"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
View File

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

56
backend/.golangci.yml Normal file
View File

@ -0,0 +1,56 @@
linters:
enable:
- bodyclose
- errcheck
- gosimple
- govet
- gosec
- goconst
- gocritic
- gocyclo
- gofmt
- goimports
- ineffassign
- misspell
- nakedret
- prealloc
#- revive
- staticcheck
- typecheck
- unused
- unconvert
- unparam
linters-settings:
goconst:
# minimal length of string constant
# default: 3
min-len: 2
# minimum number of occurrences of string constant
# default: 3
min-occurences: 2
misspell:
locale: UK
ignore-words:
- color
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

41
backend/.nancy-ignore Normal file
View File

@ -0,0 +1,41 @@
# If you need to ignore any of nancy's warnings add them
# here with a reference to the package/version that
# triggers them and rational for ignoring it.
# pkg:golang/github.com/coreos/etcd@3.3.10
# etcd before versions 3.3.23 and 3.4.10 does not perform any password length validation
CVE-2020-15115
# pkg:golang/github.com/coreos/etcd@3.3.10
# In ectd before versions 3.4.10 and 3.3.23, gateway TLS authentication is only applied to endpoints detected in DNS SRV records
CVE-2020-15136
# pkg:golang/github.com/coreos/etcd@3.3.10
# In etcd before versions 3.3.23 and 3.4.10, the etcd gateway is a simple TCP proxy to allow for basic service discovery and access
CVE-2020-15114
# pkg:golang/github.com/gorilla/websocket@1.4.0
# Integer Overflow or Wraparound
CWE-190
# jwt-go before 4.0.0-preview1 allows attackers to bypass intended access restrict...
CVE-2020-26160
# https://ossindex.sonatype.org/vulnerability/sonatype-2021-1485
sonatype-2021-1485
# CWE-770: Allocation of Resources Without Limits or Throttling
CVE-2022-41717

View File

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

6
backend/README.md Normal file
View File

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

69
backend/Taskfile.yml Normal file
View File

@ -0,0 +1,69 @@
version: "2"
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
- 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 -ldflags="-X main.commit={{.GIT_COMMIT}} -X main.version={{.VERSION}}" -o ../dist/bin/server ./cmd/server/main.go
silent: true
- task: lint
vars:
GIT_COMMIT:
sh: git log -n 1 --format=%h
VERSION:
sh: cat ../.version
env:
GO111MODULE: on
CGO_ENABLED: 1
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

View File

@ -1,90 +0,0 @@
const express = require('express');
const bodyParser = require('body-parser');
const fileUpload = require('express-fileupload');
const compression = require('compression');
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 (process.env.NODE_ENV !== 'production') {
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({
'Strict-Transport-Security': 'includeSubDomains; max-age=631138519; preload',
'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 (process.env.NODE_ENV === 'development' || (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 (process.env.NODE_ENV === 'development') {
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

@ -0,0 +1,54 @@
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/setting"
"npm/internal/jobqueue"
"npm/internal/logger"
)
var commit string
var version string
var sentryDSN string
func main() {
config.InitArgs(&version, &commit)
config.Init(&version, &commit, &sentryDSN)
database.Migrate(func() {
setting.ApplySettings()
database.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
err := database.GetInstance().Close()
if err != nil {
logger.Error("DatabaseCloseError", err)
}
// nolint
jobqueue.Shutdown()
break
}
}
})
}

View File

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

View File

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

View File

@ -1,26 +0,0 @@
{
"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"
}
}
}
}

View File

@ -1,33 +0,0 @@
const config = require('config');
if (!config.has('database')) {
throw new Error('Database config does not exist! Please read the instructions: https://github.com/jc21/nginx-proxy-manager/blob/master/doc/INSTALL.md');
}
function generateDbConfig() {
if (config.database.engine === 'knex-native') {
return config.database.knex;
} else
return {
client: config.database.engine,
connection: {
host: config.database.host,
user: config.database.user,
password: config.database.password,
database: config.database.name,
port: config.database.port
},
migrations: {
tableName: 'migrations'
}
};
}
let data = generateDbConfig();
if (typeof config.database.version !== 'undefined') {
data.version = config.database.version;
}
module.exports = require('knex')(data);

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,297 @@
{
"openapi": "3.0.0",
"info": {
"title": "Nginx Proxy Manager API",
"version": "{{VERSION}}"
},
"paths": {
"/": {
"get": {
"$ref": "file://./paths/get.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"
}
},
"/tokens": {
"get": {
"$ref": "file://./paths/tokens/get.json"
},
"post": {
"$ref": "file://./paths/tokens/post.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": {
"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

@ -0,0 +1,40 @@
{
"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

@ -0,0 +1,55 @@
{
"type": "object",
"description": "CertificateAuthorityObject",
"additionalProperties": false,
"required": [
"id",
"created_on",
"modified_on",
"name",
"acmesh_server",
"ca_bundle",
"max_domains",
"is_wildcard_supported",
"is_readonly"
],
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"created_on": {
"type": "integer",
"minimum": 1
},
"modified_on": {
"type": "integer",
"minimum": 1
},
"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

@ -0,0 +1,40 @@
{
"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

@ -0,0 +1,85 @@
{
"type": "object",
"description": "CertificateObject",
"additionalProperties": false,
"required": [
"id",
"created_on",
"modified_on",
"expires_on",
"type",
"user_id",
"certificate_authority_id",
"dns_provider_id",
"name",
"is_ecc",
"status",
"domain_names"
],
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"created_on": {
"type": "integer",
"minimum": 1
},
"modified_on": {
"type": "integer",
"minimum": 1
},
"expires_on": {
"type": "integer",
"minimum": 1,
"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
},
"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": "integer",
"minimum": 0,
"maximum": 1
},
"error_message": {
"type": "string"
},
"user": {
"$ref": "#/components/schemas/UserObject"
}
}
}

View File

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

View File

@ -0,0 +1,40 @@
{
"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

@ -0,0 +1,49 @@
{
"type": "object",
"description": "DNSProviderObject",
"additionalProperties": false,
"required": [
"id",
"created_on",
"modified_on",
"user_id",
"name",
"acmesh_name",
"dns_sleep",
"meta"
],
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"created_on": {
"type": "integer",
"minimum": 1
},
"modified_on": {
"type": "integer",
"minimum": 1
},
"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

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

View File

@ -0,0 +1,17 @@
{
"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

@ -0,0 +1,24 @@
{
"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

@ -0,0 +1,41 @@
{
"type": "object",
"description": "HealthObject",
"additionalProperties": false,
"required": ["version", "commit", "healthy", "setup", "error_reporting"],
"properties": {
"version": {
"type": "string",
"description": "Version",
"example": "3.0.0",
"minLength": 1
},
"commit": {
"type": "string",
"description": "Commit hash",
"example": "946b88f",
"minLength": 7
},
"healthy": {
"type": "boolean",
"description": "Healthy?",
"example": true
},
"setup": {
"type": "boolean",
"description": "Is the application set up?",
"example": true
},
"error_reporting": {
"type": "boolean",
"description": "Will the application send any error reporting?",
"example": true
},
"acme.sh": {
"type": "string",
"description": "Acme.sh version",
"example": "v3.0.0",
"minLength": 1
}
}
}

View File

@ -0,0 +1,40 @@
{
"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

@ -0,0 +1,58 @@
{
"type": "object",
"description": "HostObject",
"additionalProperties": false,
"required": [
"id",
"created_on",
"modified_on",
"expires_on",
"user_id",
"provider",
"name",
"domain_names"
],
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"created_on": {
"type": "integer",
"minimum": 1
},
"modified_on": {
"type": "integer",
"minimum": 1
},
"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
}
},
"user": {
"$ref": "#/components/schemas/UserObject"
}
}
}

View File

@ -0,0 +1,40 @@
{
"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

@ -0,0 +1,44 @@
{
"type": "object",
"description": "NginxTemplateObject",
"additionalProperties": false,
"required": [
"id",
"created_on",
"modified_on",
"user_id",
"name",
"type",
"template"
],
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"created_on": {
"type": "integer",
"minimum": 1
},
"modified_on": {
"type": "integer",
"minimum": 1
},
"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

@ -0,0 +1,40 @@
{
"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

@ -0,0 +1,49 @@
{
"type": "object",
"description": "SettingObject",
"additionalProperties": false,
"required": ["id", "name", "value"],
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"created_on": {
"type": "integer",
"minimum": 1
},
"modified_on": {
"type": "integer",
"minimum": 1
},
"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

@ -0,0 +1,17 @@
{
"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

@ -0,0 +1,40 @@
{
"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

@ -0,0 +1,55 @@
{
"type": "object",
"description": "StreamObject",
"additionalProperties": false,
"required": [
"id",
"created_on",
"modified_on",
"expires_on",
"user_id",
"provider",
"name",
"domain_names"
],
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"created_on": {
"type": "integer",
"minimum": 1
},
"modified_on": {
"type": "integer",
"minimum": 1
},
"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

@ -0,0 +1,19 @@
{
"type": "object",
"description": "TokenObject",
"additionalProperties": false,
"required": ["expires", "token"],
"properties": {
"expires": {
"type": "number",
"description": "Token Expiry Unix Time",
"example": 1566540249,
"minimum": 1
},
"token": {
"type": "string",
"description": "JWT Token",
"example": "eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.ey...xaHKYr3Kk6MvkUjcC4"
}
}
}

View File

@ -0,0 +1,40 @@
{
"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

@ -0,0 +1,136 @@
{
"type": "object",
"description": "UpstreamObject",
"additionalProperties": false,
"required": [
"id",
"created_on",
"modified_on",
"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_on": {
"type": "integer",
"minimum": 1
},
"modified_on": {
"type": "integer",
"minimum": 1
},
"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_on",
"modified_on",
"upstream_id",
"server",
"weight",
"max_conns",
"max_fails",
"fail_timeout",
"backup"
],
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"created_on": {
"type": "integer",
"minimum": 1
},
"modified_on": {
"type": "integer",
"minimum": 1
},
"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

@ -0,0 +1,28 @@
{
"type": "object",
"description": "UserAuthObject",
"additionalProperties": false,
"required": ["id", "user_id", "type", "created_on", "modified_on"],
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"user_id": {
"type": "integer",
"minimum": 1
},
"type": {
"type": "string",
"pattern": "^password$"
},
"created_on": {
"type": "integer",
"minimum": 1
},
"modified_on": {
"type": "integer",
"minimum": 1
}
}
}

View File

@ -0,0 +1,40 @@
{
"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

@ -0,0 +1,73 @@
{
"type": "object",
"description": "UserObject",
"additionalProperties": false,
"required": [
"id",
"name",
"nickname",
"email",
"created_on",
"modified_on",
"is_disabled"
],
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"name": {
"type": "string",
"minLength": 2,
"maxLength": 100
},
"nickname": {
"type": "string",
"minLength": 2,
"maxLength": 100
},
"email": {
"type": "string",
"minLength": 5,
"maxLength": 150
},
"created_on": {
"type": "integer",
"minimum": 1
},
"modified_on": {
"type": "integer",
"minimum": 1
},
"gravatar_url": {
"type": "string"
},
"is_disabled": {
"type": "boolean"
},
"is_deleted": {
"type": "boolean"
},
"auth": {
"type": "object",
"required": ["type"],
"properties": {
"id": {
"type": "integer"
},
"type": {
"type": "string",
"pattern": "^password$"
}
}
},
"capabilities": {
"type": "array",
"minItems": 1,
"items": {
"type": "string",
"minLength": 1
}
}
}
}

View File

@ -0,0 +1,10 @@
package doc
import "embed"
// SwaggerFiles contain all the files used for swagger schema generation
//
//go:embed api.swagger.json
//go:embed components
//go:embed paths
var SwaggerFiles embed.FS

View File

@ -0,0 +1,39 @@
{
"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

@ -0,0 +1,52 @@
{
"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": {
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/CertificateAuthorityObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 1,
"created_on": 1627531400,
"modified_on": 1627531400,
"name": "ZeroSSL",
"acmesh_server": "zerossl",
"ca_bundle": "",
"max_domains": 10,
"is_wildcard_supported": true,
"is_readonly": false
}
}
}
}
}
}
}
}
}

View File

@ -0,0 +1,61 @@
{
"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": {
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/CertificateAuthorityObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 1,
"created_on": 1627531400,
"modified_on": 1627531400,
"name": "ZeroSSL",
"acmesh_server": "zerossl",
"ca_bundle": "",
"max_domains": 10,
"is_wildcard_supported": true,
"is_readonly": false
}
}
}
}
}
}
}
}
}

View File

@ -0,0 +1,92 @@
{
"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": {
"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_on": 1627531400,
"modified_on": 1627531400,
"name": "ZeroSSL",
"acmesh_server": "zerossl",
"ca_bundle": "",
"max_domains": 10,
"is_wildcard_supported": true,
"is_setup": true
},
{
"id": 2,
"created_on": 1627531400,
"modified_on": 1627531400,
"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

@ -0,0 +1,48 @@
{
"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": {
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/CertificateAuthorityObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 1,
"created_on": 1627531400,
"modified_on": 1627531400,
"name": "ZeroSSL",
"acmesh_server": "zerossl",
"ca_bundle": "",
"max_domains": 10,
"is_wildcard_supported": true,
"is_readonly": false
}
}
}
}
}
}
}
}
}

View File

@ -0,0 +1,60 @@
{
"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

@ -0,0 +1,61 @@
{
"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": {
"required": [
"result"
],
"properties": {
"result": {
"$ref": "#/components/schemas/CertificateObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 1,
"created_on": 1604536109,
"modified_on": 1604536109,
"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

@ -0,0 +1,70 @@
{
"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": {
"required": [
"result"
],
"properties": {
"result": {
"$ref": "#/components/schemas/CertificateObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 1,
"created_on": 1604536109,
"modified_on": 1604536109,
"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

@ -0,0 +1,90 @@
{
"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": {
"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_on": 1604536109,
"modified_on": 1604536109,
"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

@ -0,0 +1,57 @@
{
"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": {
"required": [
"result"
],
"properties": {
"result": {
"$ref": "#/components/schemas/CertificateObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 1,
"created_on": 1604536109,
"modified_on": 1604536109,
"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

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

View File

@ -0,0 +1,82 @@
{
"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": {
"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_on": 1602593653,
"modified_on": 1602593653,
"user_id": 1,
"name": "Route53",
"acmesh_name": "dns_aws",
"meta": {
"AWS_ACCESS_KEY_ID": "abc123",
"AWS_SECRET_ACCESS_KEY": "def098"
}
}
]
}
}
}
}
}
}
}
}
}

View File

@ -0,0 +1,49 @@
{
"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": {
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/DNSProviderObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 1,
"created_on": 1602593653,
"modified_on": 1602593653,
"user_id": 1,
"name": "Route53",
"acmesh_name": "dns_aws",
"meta": {
"AWS_ACCESS_KEY_ID": "abc123",
"AWS_SECRET_ACCESS_KEY": "def098"
}
}
}
}
}
}
}
}
}
}

View File

@ -0,0 +1,60 @@
{
"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

@ -0,0 +1,53 @@
{
"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": {
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/DNSProviderObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 1,
"created_on": 1602593653,
"modified_on": 1602593653,
"user_id": 1,
"name": "Route53",
"acmesh_name": "dns_aws",
"meta": {
"AWS_ACCESS_KEY_ID": "abc123",
"AWS_SECRET_ACCESS_KEY": "def098"
}
}
}
}
}
}
}
}
}
}

View File

@ -0,0 +1,64 @@
{
"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": {
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/DNSProviderObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"result": {
"id": 1,
"created_on": 1602593653,
"modified_on": 1602593653,
"user_id": 1,
"name": "Route53",
"acmesh_name": "dns_aws",
"meta": {
"AWS_ACCESS_KEY_ID": "abc123",
"AWS_SECRET_ACCESS_KEY": "def098"
}
}
}
}
}
}
}
}
}
}
}

View File

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

View File

@ -0,0 +1,93 @@
{
"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": {
"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_on": 1646279455,
"modified_on": 1646279455,
"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

@ -0,0 +1,60 @@
{
"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

@ -0,0 +1,64 @@
{
"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": {
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/HostObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 1,
"created_on": 1646279455,
"modified_on": 1646279455,
"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

@ -0,0 +1,42 @@
{
"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": {
"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

@ -0,0 +1,73 @@
{
"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": {
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/HostObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 1,
"created_on": 1646279455,
"modified_on": 1646279455,
"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

@ -0,0 +1,60 @@
{
"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": {
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/HostObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 1,
"created_on": 1645700556,
"modified_on": 1645700556,
"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

@ -0,0 +1,79 @@
{
"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": {
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/NginxTemplateList"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"total": 1,
"offset": 0,
"limit": 10,
"sort": [
{
"field": "created_on",
"direction": "ASC"
}
],
"items": [
{
"id": 1,
"created_on": 1646218093,
"modified_on": 1646218093,
"user_id": 1,
"name": "Default Proxy Template",
"type": "proxy",
"template": "# this is a proxy template"
}
]
}
}
}
}
}
}
}
}
}

View File

@ -0,0 +1,46 @@
{
"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": {
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/NginxTemplateObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 10,
"created_on": 1646218093,
"modified_on": 1646218093,
"user_id": 1,
"name": "My proxy template",
"type": "proxy",
"template": "# this is a proxy template"
}
}
}
}
}
}
}
}
}

View File

@ -0,0 +1,58 @@
{
"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

@ -0,0 +1,50 @@
{
"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": {
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/NginxTemplateObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 1,
"created_on": 1646218093,
"modified_on": 1646218093,
"user_id": 1,
"name": "Default Proxy Template",
"type": "proxy",
"template": "# this is a proxy template"
}
}
}
}
}
}
}
}
}

View File

@ -0,0 +1,59 @@
{
"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": {
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/NginxTemplateObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 1,
"created_on": 1646218093,
"modified_on": 1646218093,
"user_id": 1,
"name": "My renamed proxy template",
"type": "proxy",
"template": "# this is a proxy template"
}
}
}
}
}
}
}
}
}

View File

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

View File

@ -0,0 +1,84 @@
{
"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": {
"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_on": 1578010090,
"modified_on": 1578010095,
"name": "default-site",
"value": {
"html": "<p>not found</p>",
"type": "custom"
}
}
]
}
}
}
}
}
}
}
}
}

View File

@ -0,0 +1,55 @@
{
"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": {
"required": [
"result"
],
"properties": {
"result": {
"$ref": "#/components/schemas/SettingObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 2,
"created_on": 1578010090,
"modified_on": 1578010095,
"name": "default-site",
"value": {
"html": "<p>not found</p>",
"type": "custom"
}
}
}
}
}
}
}
}
}
}

View File

@ -0,0 +1,64 @@
{
"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": {
"required": [
"result"
],
"properties": {
"result": {
"$ref": "#/components/schemas/SettingObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 2,
"created_on": 1578010090,
"modified_on": 1578010090,
"name": "default-site",
"value": {
"html": "<p>not found</p>",
"type": "custom"
}
}
}
}
}
}
}
}
}
}

View File

@ -0,0 +1,51 @@
{
"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": {
"required": [
"result"
],
"properties": {
"result": {
"$ref": "#/components/schemas/SettingObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 2,
"created_on": 1578010090,
"modified_on": 1578010090,
"name": "default-site",
"value": {
"html": "<p>not found</p>",
"type": "custom"
}
}
}
}
}
}
}
}
}
}

View File

@ -0,0 +1,75 @@
{
"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": {
"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

@ -0,0 +1,38 @@
{
"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": {
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/StreamObject"
}
}
},
"examples": {
"default": {
"value": {
"result": "TODO"
}
}
}
}
}
}
}
}

View File

@ -0,0 +1,60 @@
{
"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

@ -0,0 +1,46 @@
{
"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": {
"required": [
"result"
],
"properties": {
"result": {
"$ref": "#/components/schemas/StreamObject"
}
}
},
"examples": {
"default": {
"value": {
"result": "TODO"
}
}
}
}
}
}
}
}

View File

@ -0,0 +1,55 @@
{
"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": {
"required": [
"result"
],
"properties": {
"result": {
"$ref": "#/components/schemas/StreamObject"
}
}
},
"examples": {
"default": {
"value": {
"result": "TODO"
}
}
}
}
}
}
}
}

View File

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

View File

@ -0,0 +1,79 @@
{
"operationId": "requestToken",
"summary": "Request a new access token from credentials",
"tags": [
"Tokens"
],
"requestBody": {
"description": "Credentials Payload",
"required": true,
"content": {
"application/json": {
"schema": "{{schema.GetToken}}"
}
}
},
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"required": [
"result"
],
"properties": {
"result": {
"$ref": "#/components/schemas/StreamObject"
}
}
},
"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": {
"nullable": true
},
"error": {
"$ref": "#/components/schemas/ErrorObject"
}
}
},
"examples": {
"default": {
"value": {
"result": null,
"error": {
"code": 403,
"message": "Not available during setup phase"
}
}
}
}
}
}
}
}
}

View File

@ -0,0 +1,285 @@
{
"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": {
"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_on": 1672804124,
"modified_on": 1672804124,
"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_on": 1672804124,
"modified_on": 1672804124,
"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_on": 1672804124,
"modified_on": 1672804124,
"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_on": 1672804197,
"modified_on": 1672804197,
"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_on": 1672804197,
"modified_on": 1672804197,
"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_on": 1672804197,
"modified_on": 1672804197,
"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_on": 1672804200,
"modified_on": 1672804200,
"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_on": 1672804200,
"modified_on": 1672804200,
"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_on": 1672804200,
"modified_on": 1672804200,
"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_on": 1672804201,
"modified_on": 1672804201,
"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_on": 1672804201,
"modified_on": 1672804201,
"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_on": 1672804201,
"modified_on": 1672804201,
"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_on": 1672804201,
"modified_on": 1672804201,
"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_on": 1672804201,
"modified_on": 1672804201,
"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_on": 1672804201,
"modified_on": 1672804201,
"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

@ -0,0 +1,80 @@
{
"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": {
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/UpstreamObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 6,
"created_on": 1672806857,
"modified_on": 1672806857,
"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_on": 1672806857,
"modified_on": 1672806857,
"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_on": 1672806857,
"modified_on": 1672806857,
"upstream_id": 6,
"server": "192.168.0.11:80",
"weight": 50,
"max_conns": 0,
"max_fails": 0,
"fail_timeout": 0,
"backup": false
}
]
}
}
}
}
}
}
}
}
}

View File

@ -0,0 +1,58 @@
{
"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

@ -0,0 +1,81 @@
{
"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": {
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/UpstreamObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 1,
"created_on": 1672786008,
"modified_on": 1672786008,
"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_on": 1672786009,
"modified_on": 1672786009,
"upstream_id": 1,
"server": "api1.localhost:1234",
"weight": 100,
"max_conns": 0,
"max_fails": 0,
"fail_timeout": 0,
"backup": false
},
{
"id": 2,
"created_on": 1672786009,
"modified_on": 1672786009,
"upstream_id": 1,
"server": "api2.localhost:1234",
"weight": 50,
"max_conns": 0,
"max_fails": 0,
"fail_timeout": 0,
"backup": true
}
]
}
}
}
}
}
}
}
}
}

View File

@ -0,0 +1,42 @@
{
"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": {
"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

@ -0,0 +1,93 @@
{
"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": {
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/UpstreamObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 1,
"created_on": 1673234177,
"modified_on": 1673244559,
"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_on": 1673234177,
"modified_on": 1673244559,
"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_on": 1673234177,
"modified_on": 1673244559,
"upstream_id": 1,
"server": "192.168.0.11:80",
"weight": 50,
"max_conns": 0,
"max_fails": 0,
"fail_timeout": 0,
"backup": false
}
]
}
}
}
}
}
}
}
}
}

View File

@ -0,0 +1,117 @@
{
"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,nickname.desc,email.asc"
}
],
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/UserList"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"total": 3,
"offset": 0,
"limit": 100,
"sort": [
{
"field": "name",
"direction": "ASC"
},
{
"field": "nickname",
"direction": "DESC"
},
{
"field": "email",
"direction": "ASC"
}
],
"items": [
{
"id": 1,
"name": "Jamie Curnow",
"nickname": "James",
"email": "jc@jc21.com",
"created_on": 1578010090,
"modified_on": 1578010095,
"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",
"nickname": "John",
"email": "johdoe@example.com",
"created_on": 1578010100,
"modified_on": 1578010105,
"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",
"nickname": "Jane",
"email": "janedoe@example.com",
"created_on": 1578010110,
"modified_on": 1578010115,
"gravatar_url": "https://www.gravatar.com/avatar/6193176330f8d38747f038c170ddb193?d=mm&r=pg&s=128",
"is_disabled": false,
"capabilities": [
"hosts.view",
"hosts.manage"
]
}
]
}
}
}
}
}
}
}
}
}

View File

@ -0,0 +1,79 @@
{
"operationId": "createUser",
"summary": "Create a new User",
"tags": ["Users"],
"requestBody": {
"description": "User to Create",
"required": true,
"content": {
"application/json": {
"schema": "{{schema.CreateUser}}"
}
}
},
"responses": {
"201": {
"description": "201 response",
"content": {
"application/json": {
"schema": {
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/UserObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 1,
"name": "Jamie Curnow",
"nickname": "James",
"email": "jc@jc21.com",
"created_on": 1578010100,
"modified_on": 1578010100,
"gravatar_url": "https://www.gravatar.com/avatar/6193176330f8d38747f038c170ddb193?d=mm&r=pg&s=128",
"is_disabled": false,
"auth": {
"$ref": "#/components/schemas/UserAuthObject"
},
"capabilities": ["full-admin"]
}
}
}
}
}
}
},
"400": {
"description": "400 response",
"content": {
"application/json": {
"schema": {
"required": ["error"],
"properties": {
"result": {
"nullable": true
},
"error": {
"$ref": "#/components/schemas/ErrorObject"
}
}
},
"examples": {
"default": {
"value": {
"error": {
"code": 400,
"message": "An user already exists with this email address"
}
}
}
}
}
}
}
}
}

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