Compare commits

..

11 Commits

Author SHA1 Message Date
135ffa2d7a Merge 84df75900b into 498109addb 2025-01-30 23:26:55 -08:00
498109addb Merge pull request #4310 from NginxProxyManager/dependabot/npm_and_yarn/docs/vite-5.4.14
All checks were successful
Close stale issues and PRs / stale (push) Successful in 3s
Bump vite from 5.4.8 to 5.4.14 in /docs
2025-01-28 18:08:46 +10:00
3f3aacd7ec Merge pull request #4274 from Dim145/develop
[Postgres] fix error in access_list get
2025-01-28 14:03:07 +10:00
bb4ecf812d Bump vite from 5.4.8 to 5.4.14 in /docs
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.4.8 to 5.4.14.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.4.14/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.4.14/packages/vite)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-22 07:09:04 +00:00
9687e9e450 Use previous version of powerdns image, newer version is broken
All checks were successful
Close stale issues and PRs / stale (push) Successful in 3s
2025-01-07 10:30:08 +10:00
5a234bb88c Fix incorrect test folder in ci results 2025-01-07 08:13:04 +10:00
4de4b65036 Merge pull request #4252 from GergelyGombai/develop
Add Gcore DNS Provider
2025-01-07 07:54:44 +10:00
f1c97c7c36 fix: add missing group_by clause for access_list get 2025-01-03 00:39:29 +01:00
73110d5e1e Update Gcore apikey format
I managed to mis-write the format in my previous commit
2024-12-22 01:44:52 +01:00
356b98bf7e Add Gcore DNS Provider 2024-12-22 01:02:47 +01:00
84df75900b Add simplified Chinese translation
增加简体中文翻译
2022-05-14 13:55:28 +08:00
7 changed files with 310 additions and 9 deletions

6
Jenkinsfile vendored
View File

@ -128,7 +128,7 @@ pipeline {
sh 'docker-compose down --remove-orphans --volumes -t 30 || true' sh 'docker-compose down --remove-orphans --volumes -t 30 || true'
} }
unstable { unstable {
dir(path: 'testing/results') { dir(path: 'test/results') {
archiveArtifacts(allowEmptyArchive: true, artifacts: '**/*', excludes: '**/*.xml') archiveArtifacts(allowEmptyArchive: true, artifacts: '**/*', excludes: '**/*.xml')
} }
} }
@ -161,7 +161,7 @@ pipeline {
sh 'docker-compose down --remove-orphans --volumes -t 30 || true' sh 'docker-compose down --remove-orphans --volumes -t 30 || true'
} }
unstable { unstable {
dir(path: 'testing/results') { dir(path: 'test/results') {
archiveArtifacts(allowEmptyArchive: true, artifacts: '**/*', excludes: '**/*.xml') archiveArtifacts(allowEmptyArchive: true, artifacts: '**/*', excludes: '**/*.xml')
} }
} }
@ -199,7 +199,7 @@ pipeline {
sh 'docker-compose down --remove-orphans --volumes -t 30 || true' sh 'docker-compose down --remove-orphans --volumes -t 30 || true'
} }
unstable { unstable {
dir(path: 'testing/results') { dir(path: 'test/results') {
archiveArtifacts(allowEmptyArchive: true, artifacts: '**/*', excludes: '**/*.xml') archiveArtifacts(allowEmptyArchive: true, artifacts: '**/*', excludes: '**/*.xml')
} }
} }

View File

@ -258,6 +258,7 @@ const internalAccessList = {
}) })
.where('access_list.is_deleted', 0) .where('access_list.is_deleted', 0)
.andWhere('access_list.id', data.id) .andWhere('access_list.id', data.id)
.groupBy('access_list.id')
.allowGraph('[owner,items,clients,proxy_hosts.[certificate,access_list.[clients,items]]]') .allowGraph('[owner,items,clients,proxy_hosts.[certificate,access_list.[clients,items]]]')
.first(); .first();

View File

@ -40,7 +40,7 @@ services:
- ca.internal - ca.internal
pdns: pdns:
image: pschiffe/pdns-mysql image: pschiffe/pdns-mysql:4.8
volumes: volumes:
- '/etc/localtime:/etc/localtime:ro' - '/etc/localtime:/etc/localtime:ro'
environment: environment:

View File

@ -132,7 +132,7 @@ services:
- 8128:3128 - 8128:3128
pdns: pdns:
image: pschiffe/pdns-mysql image: pschiffe/pdns-mysql:4.8
container_name: npm2dev.pdns container_name: npm2dev.pdns
volumes: volumes:
- '/etc/localtime:/etc/localtime:ro' - '/etc/localtime:/etc/localtime:ro'

View File

@ -1065,9 +1065,9 @@ vfile@^6.0.0:
vfile-message "^4.0.0" vfile-message "^4.0.0"
vite@^5.4.8: vite@^5.4.8:
version "5.4.8" version "5.4.14"
resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.8.tgz#af548ce1c211b2785478d3ba3e8da51e39a287e8" resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.14.tgz#ff8255edb02134df180dcfca1916c37a6abe8408"
integrity sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ== integrity sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==
dependencies: dependencies:
esbuild "^0.21.3" esbuild "^0.21.3"
postcss "^8.4.43" postcss "^8.4.43"

View File

@ -292,5 +292,297 @@
"default-site-html": "Custom Page", "default-site-html": "Custom Page",
"default-site-redirect": "Redirect" "default-site-redirect": "Redirect"
} }
},
"zh": {
"str": {
"email-address": "邮箱地址",
"username": "账号",
"password": "密码",
"sign-in": "登录",
"sign-out": "退出",
"try-again": "重试",
"name": "名字",
"email": "邮箱",
"roles": "角色",
"created-on": "创建:{date}",
"save": "保存",
"cancel": "取消",
"close": "关闭",
"enable": "启用",
"disable": "禁用",
"sure": "是的,我确定",
"disabled": "禁用",
"choose-file": "选择文件",
"source": "来源",
"destination": "目标地址",
"ssl": "SSL",
"access": "接入",
"public": "公开",
"edit": "编辑",
"delete": "删除",
"logs": "日志",
"status": "状态",
"online": "在线",
"offline": "离线",
"unknown": "未知",
"expires": "过期",
"value": "值",
"please-wait": "请稍等...",
"all": "全部",
"any": "任意"
},
"login": {
"title": "登录到您的账户"
},
"main": {
"app": "Nginx代理管理器",
"version": "v{version}",
"welcome": "欢迎来到Nginx代理管理器",
"logged-in": "您的登录身份是 {name}",
"unknown-error": "加载出错,请重新加载应用程序。",
"unknown-user": "未知用户",
"sign-in-as": "重新登录为 {name}"
},
"roles": {
"title": "角色",
"admin": "管理员",
"user": "Apache Helicopter"
},
"menu": {
"dashboard": "仪表盘",
"hosts": "主机"
},
"footer": {
"fork-me": "在Github上Fork项目",
"copy": "&copy; 2022 <a href=\"{url}\" target=\"_blank\">jc21.com</a>.",
"theme": "Theme by <a href=\"{url}\" target=\"_blank\">Tabler</a>"
},
"dashboard": {
"title": "你好 {name}"
},
"all-hosts": {
"empty-subtitle": "{manage, select, true{Why don't you create one?} other{And you don't have permission to create one.}}",
"details": "详细内容",
"enable-ssl": "启用SSL",
"force-ssl": "强制SSL",
"http2-support": "支持HTTP/2",
"domain-names": "域名",
"cert-provider": "证书提供商",
"block-exploits": "阻止常见漏洞",
"caching-enabled": "缓存资源",
"ssl-certificate": "SSL证书",
"none": "无",
"new-cert": "申请一个新的SSL证书",
"with-le": "使用Let's Encrypt",
"no-ssl": "该主机将不使用HTTPS",
"advanced": "高级",
"advanced-warning": "在此输入你的自定义Nginx配置风险自负!",
"advanced-config": "自定义Nginx配置",
"advanced-config-var-headline": "这些代理详情可以作为nginx的变量。",
"advanced-config-header-info": "请注意这里添加的任何add_header或set_header配置都不会被nginx使用。你将不得不添加一个自定义的位置'/',并在那里的自定义配置中添加头信息。",
"hsts-enabled": "启用了HSTS",
"hsts-subdomains": "HSTS子域",
"locations": "自定义位置"
},
"locations": {
"new_location": "添加位置",
"path": "/path",
"location_label": "定义位置",
"delete": "删除"
},
"ssl": {
"letsencrypt": "Let's Encrypt",
"other": "自定义",
"none": "仅HTTP",
"letsencrypt-email": "Let's Encrypt ",
"letsencrypt-agree": "我同意 <a href=\"{url}\" target=\"_blank\">Let's Encrypt 服务条款</a>",
"delete-ssl": "附加的SSL证书将不会被删除它们需要手动删除。",
"hosts-warning": "这些域名必须配置为指向本设备。",
"no-wildcard-without-dns": "不使用DNS认证时不能用通配符域名申请Let's Encrypt证书",
"dns-challenge": "使用DNS认证",
"certbot-warning": "本节需要一些关于Certbot及其DNS扩展的知识。请查阅相关扩展的文档。",
"dns-provider": "DNS提供者",
"please-choose": "选择...",
"credentials-file-content": "证书内容",
"credentials-file-content-info": "这个插件需要一个包含API令牌或其他供应商凭证的配置文件。",
"stored-as-plaintext-info": "这些数据将以明文形式存储在数据库和文件中",
"propagation-seconds": "等待时间(秒)",
"propagation-seconds-info": "留空为默认值。等待DNS生效的时间。",
"processing-info": "处理中... 这可能需要几分钟的时间。",
"passphrase-protection-support-info": "不支持使用密码保护密钥文件。"
},
"proxy-hosts": {
"title": "代理主机",
"empty": "无代理主机",
"add": "添加代理主机",
"form-title": "{id, select, undefined{New} other{Edit}} 代理主机",
"forward-scheme": "协议",
"forward-host": "转发主机/IP",
"forward-port": "转发端口",
"delete": "删除代理主机",
"delete-confirm": "你确定要删除代理主机 <strong>{domains}</strong> 吗?",
"help-title": "什么是代理主机?",
"help-content": "代理主机是你想转发网络应用的接入主机。\n代理主机可以为没有SSL服务的网络应用提供SSL服务可选。\n代理主机是Nginx代理管理器的最常见用途之一。",
"access-list": "接入列表",
"allow-websocket-upgrade": "支持WebSockets",
"ignore-invalid-upstream-ssl": "忽略无效的SSL",
"custom-forward-host-help": "为子目录转发添加路径。\n例如203.0.113.25/路径",
"search": "搜索主机…"
},
"redirection-hosts": {
"title": "重定向主机",
"empty": "无重定向主机",
"add": "添加重定向主机",
"form-title": "{id, select, undefined{New} other{Edit}} 重定向主机",
"forward-scheme": "协议",
"forward-http-status-code": "HTTP 代码",
"forward-domain": "转发域名",
"preserve-path": "保留路径",
"delete": "删除重定向主机",
"delete-confirm": "确定要删除 <strong>{domains}</strong> 的重定向主机吗?",
"help-title": "什么是重定向主机?",
"help-content": "重定向主机是将接入域名的请求推送到另一个域名。\n使用这种类型的主机最常见的原因是当你的网站改变了域名但你仍然有链接指向旧域名的应用。",
"search": "搜索主机…"
},
"dead-hosts": {
"title": "404主机",
"empty": "没有404主机",
"add": "添加404主机",
"form-title": "{id, select, undefined{New} other{Edit}} 404主机",
"delete": "删除404主机",
"delete-confirm": "确定要删除404主机吗",
"help-title": "什么是404主机",
"help-content": "404主机是一个简单的主机设置显示404页面。\n当你的域名被列入搜索引擎而你想提供一个更好的错误页面或特别是告诉搜索索引者域名页面不再存在时这可能是有用的。\n拥有这种主机的另一个好处是可以跟踪点击它的日志并查看访问来源。",
"search": "搜索主机…"
},
"streams": {
"title": "Stream模块",
"empty": "没有Stream模块",
"add": "添加Stream",
"form-title": "{id, select, undefined{New} other{Edit}} Stream",
"incoming-port": "入站端口",
"forwarding-host": "转发主机",
"forwarding-port": "转发端口",
"tcp-forwarding": "TCP转发",
"udp-forwarding": "UDP转发",
"forward-type-error": "至少有一种协议必须被启用",
"protocol": "协议",
"tcp": "TCP",
"udp": "UDP",
"delete": "删除Stream",
"delete-confirm": "你确定你要删除这个Stream吗",
"help-title": "什么是Stream",
"help-content": "Stream作为Nginx的一个相对较新的功能可以直接转发TCP/UDP流量到网络上的另一台计算机。\n如果你正在运行游戏服务器、FTP或SSH服务器这个功能就会很有用。",
"search": "搜索入站端口…"
},
"certificates": {
"title": "SSL证书",
"empty": "没有SSL证书",
"add": "添加SSL证书",
"form-title": "添加 {provider, select, letsencrypt{Let's Encrypt} other{Custom}} 证书",
"delete": "删除SSL证书",
"delete-confirm": "你确定要删除这个SSL证书吗任何使用该证书的主机之后都需要进行更新。",
"help-title": "SSL证书",
"help-content": "SSL证书TLS证书是一种加密密钥的形式它允许你的网站为终端用户进行数据加密。\n目前使用Let's Encrypt的服务来免费发放SSL证书。\n如果你的反向代理后面有个人信息、密码或敏感数据使用证书是个非常好的安全措施。\n如果你的网站不是面向互联网运行或者你只是想要一个通配符证书需要使用DNS认证获取证书。",
"other-certificate": "证书",
"other-certificate-key": "证书密钥",
"other-intermediate-certificate": "中间证书",
"force-renew": "现在更新",
"test-reachability": "测试服务器的可用性",
"reachability-title": "测试服务器的可用性",
"reachability-info": "使用Site24x7测试域名是否可以从公共互联网访问。在使用DNS认证时没有必要这样做。",
"reachability-failed-to-reach-api": "与API的通信失败请检查NPM是否正确运行",
"reachability-failed-to-check": "由于与site24x7.com的通信错误检查可用性失败。",
"reachability-ok": "您的服务器是可用的,创建证书应该是可能的。",
"reachability-404": "在这个域名中发现了一个服务器但它似乎指向的不是本Nginx代理管理器。请确保你的域名指向本NPM实例的IP。",
"reachability-not-resolved": "在这个域名中没有可用的服务器。请确保你的域名存在并且指向本NPM实例运行的IP如果有必要请检查80端口在路由器中是否被映射到外网。",
"reachability-wrong-data": "在这个域名中发现了一个服务器但它返回了一个意外的数据。它是指向本NPM服务器吗请确保你的域名指向本NPM实例的IP。",
"reachability-other": "在这个域名中发现了一个服务器,但它返回了一个意外的状态代码{code}。它是指向本NPM服务器吗请确保你的域名指向本NPM实例的IP。",
"download": "下载",
"renew-title": "更新Let'sEncrypt证书",
"search": "搜索证书…"
},
"access-lists": {
"title": "接入列表",
"empty": "没有接入项目",
"add": "添加接入",
"form-title": "{id, select, undefined{New} other{Edit}} 接入列表",
"delete": "删除接入列表",
"delete-confirm": "您确定要删除这个接入列表吗?",
"public": "公开接入",
"public-sub": "没有接入限制",
"help-title": "什么是接入列表?",
"help-content": "接入列表提供了一个特定客户IP地址的黑名单或白名单以及通过基本HTTP认证对代理主机的认证。\n你可以为一个接入列表配置多个客户规则、用户名和密码然后将其应用于代理主机。\n这对那些没有内置认证机制的转发网络服务或你想保护其免受未知客户的访问是最有用的。",
"item-count": "{count} {count, select, 1{User} other{Users}}",
"client-count": "{count} {count, select, 1{Rule} other{Rules}}",
"proxy-host-count": "{count} {count, select, 1{Proxy Host} other{Proxy Hosts}}",
"delete-has-hosts": "该接入列表与{count}代理主机有关,在被删除后将成为公开的。",
"details": "详情",
"authorization": "授权",
"access": "接入",
"satisfy": "满足",
"satisfy-any": "满足任何要求",
"pass-auth": "授权访问主机",
"access-add": "添加",
"auth-add": "添加",
"search": "搜索接入…"
},
"users": {
"title": "用户",
"default_error": "必须改变默认的邮箱地址",
"add": "添加用户",
"nickname": "昵称",
"full-name": "名称",
"edit-details": "编辑详情",
"change-password": "修改密码",
"edit-permissions": "编辑权限",
"sign-in-as": "以用户身份登录",
"form-title": "{id, select, undefined{New} other{Edit}} 用户",
"delete": "删除 {name, select, undefined{User} other{{name}}}",
"delete-confirm": "您确定要删除 <strong>{name}</strong> 吗?",
"password-title": "修改密码{self, select, false{ for {name}} other{}}",
"current-password": "修改密码",
"new-password": "新密码",
"confirm-password": "确认密码",
"permissions-title": "{name} 的权限",
"admin-perms": "该用户是管理员,一些项目不能被修改。",
"perms-visibility": "项目可见性",
"perms-visibility-user": "仅限创建的项目",
"perms-visibility-all": "所有项目",
"perm-manage": "管理项目",
"perm-view": "仅限查看",
"perm-hidden": "隐藏",
"search": "搜索用户…"
},
"audit-log": {
"title": "检查日志",
"empty": "没有日志。",
"empty-subtitle": "只要你或其他用户修改了什么,这些历史就会在这里显示出来。",
"proxy-host": "代理主机",
"redirection-host": "重定向主机",
"dead-host": "404主机",
"stream": "Stream",
"user": "用户",
"certificate": "证书",
"access-list": "访问列表",
"created": "创建 {name}",
"updated": "更新 {name}",
"deleted": "删除 {name}",
"enabled": "启用 {name}",
"disabled": "禁用 {name}",
"renewed": "续约 {name}",
"meta-title": "事件详情",
"view-meta": "查看详情",
"date": "日期",
"search": "搜索日志…"
},
"settings": {
"title": "设置",
"default-site": "默认站点",
"default-site-congratulations": "成功页面",
"default-site-404": "404页面",
"default-site-html": "自定义页面",
"default-site-redirect": "重定向"
}
} }
} }

View File

@ -215,6 +215,14 @@
"credentials": "# Gandi personal access token\ndns_gandi_token=PERSONAL_ACCESS_TOKEN", "credentials": "# Gandi personal access token\ndns_gandi_token=PERSONAL_ACCESS_TOKEN",
"full_plugin_name": "dns-gandi" "full_plugin_name": "dns-gandi"
}, },
"gcore": {
"name": "Gcore DNS",
"package_name": "certbot-dns-gcore",
"version": "~=0.1.8",
"dependencies": "",
"credentials": "dns_gcore_apitoken = 0123456789abcdef0123456789abcdef01234567",
"full_plugin_name": "dns-gcore"
},
"godaddy": { "godaddy": {
"name": "GoDaddy", "name": "GoDaddy",
"package_name": "certbot-dns-godaddy", "package_name": "certbot-dns-godaddy",