admin-ui ng转发域名增加

This commit is contained in:
2026-09-11 00:13:41 +08:00
parent 0b7f1f9667
commit 283f971c0f
10 changed files with 7842 additions and 84 deletions
+2 -2
View File
@@ -1,5 +1,5 @@
# ========== 构建前端 ==========
FROM docker.m.daocloud.io/node:18-alpine AS builder
FROM node:18-alpine AS builder
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
@@ -13,7 +13,7 @@ RUN npm run build
# ========== 部署到 Nginx ==========
FROM docker.m.daocloud.io/nginx:alpine
FROM nginx:alpine
COPY --from=builder /app/dist/ /usr/share/nginx/html/
COPY ngnix.conf /etc/nginx/conf.d/default.conf
+13 -12
View File
@@ -19,12 +19,12 @@ services:
container_name: postgres
restart: unless-stopped
ports:
- "15432:5432"
- "5432:5432"
environment:
# 仅首次初始化空数据卷时生效;库内超级用户已被 ALTER ROLE 改名、口令已改,
# 这里写成与新库一致的名字/口令(占位符,需你自行替换成实际值)。
POSTGRES_USER: sql9f15b63fd203b36e
POSTGRES_PASSWORD: 1ec94b1acdaf57b66030242d418fad5a
POSTGRES_USER: 259278618@qq.com
POSTGRES_PASSWORD: Tongli686^*^
POSTGRES_DB: postgres
volumes:
- /data/pgsql:/var/lib/postgresql/data
@@ -32,8 +32,9 @@ services:
networks:
- redfuture-net
healthcheck:
# 健康检查只探“服务在不在”,不带 -U 指定角色,避免跟着超级用户名改来改去
test: ["CMD-SHELL", "pg_isready"]
# 真实连接探测(容器内本地 socket 是 trust 认证免密),角色/库名引用环境变量;
# 不用 pg_isready:它不带 -U 时以 OS 用户 root 握手,服务器每 10s 记一条 FATAL: role "root" does not exist
test: ["CMD-SHELL", "psql -U \"$$POSTGRES_USER\" -d \"$$POSTGRES_DB\" -c 'select 1'"]
interval: 10s
timeout: 5s
retries: 5
@@ -50,8 +51,8 @@ services:
- /data/pgsql/backup:/backup
environment:
TZ: Asia/Shanghai # 使下面的 02:00 与备份文件名时间都按北京时间计算
PGUSER: sql9f15b63fd203b36e # ← 改为你 ALTER ROLE 后的新超级用户名
PGPASSWORD: 1ec94b1acdaf57b66030242d418fad5a # ← 改为新超级用户口令
PGUSER: 259278618@qq.com # ← 改为你 ALTER ROLE 后的新超级用户名
PGPASSWORD: Tongli686^*^ # ← 改为新超级用户口令
PGHOST: postgres
PGPORT: 5432
BACKUP_DIR: /backup
@@ -66,10 +67,10 @@ services:
echo "[$(date '+%F %T %Z')] postgres-backup started. Will run once per day at 02:00."
while true; do
# 睡到下一个 02:00(容器 TZ=Asia/Shanghai → 即北京时间凌晨2点)
now=$(date +%s)
target=$(date -d "today 02:00" +%s)
[ "$target" -le "$now" ] && target=$(date -d "tomorrow 02:00" +%s)
echo "[$(date '+%F %T')] next backup scheduled at $(date -d "@$target" '+%F %T')"
now=$$(date +%s)
target=$$(date -d "today 02:00" +%s)
[ "$${target}" -le "$${now}" ] && target=$$(date -d "tomorrow 02:00" +%s)
echo "[$(date '+%F %T')] next backup scheduled at $(date -d "@$${target}" '+%F %T')"
sleep $(( target - now ))
f="backup_$(date +%Y%m%d_%H%M%S).sql.gz"
@@ -92,7 +93,7 @@ services:
restart: unless-stopped
ports:
- "6379:6379"
# command: redis-server --requirepass Bjang09@686^*^
command: redis-server --requirepass Tongli686^*^
volumes:
- /data/redis:/data
networks:
+13 -1
View File
@@ -1,3 +1,15 @@
FROM docker.m.daocloud.io/nginx:alpine
FROM nginx:alpine
COPY default.conf /etc/nginx/conf.d/default.conf
COPY ssl /etc/nginx/ssl
# 启动时自动获取宿主机内网 IP,替换 __API_HOST__ 占位符(与 admin-ui 同方案,可用 API_HOST 环境变量覆盖)
RUN printf '%s\n' \
'#!/bin/sh' \
'set -e' \
'if [ -n "$API_HOST" ]; then' \
' HOST_IP="$API_HOST"' \
'else' \
' HOST_IP=$(route -n 2>/dev/null | grep "^0.0.0.0" | tr -s " " | cut -d " " -f2)' \
'fi' \
'sed -i "s/__API_HOST__/$HOST_IP/g" /etc/nginx/conf.d/default.conf' \
> /docker-entrypoint.d/01-set-api-host.sh && chmod +x /docker-entrypoint.d/01-set-api-host.sh
+7459
View File
File diff suppressed because it is too large Load Diff
+73 -69
View File
@@ -1,97 +1,101 @@
# WebSocket connection upgrade
# WebSocket 升级头透传:客户端带 Upgrade 头(WS 握手)时 Connection upgrade,普通请求保持 close
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
# HTTP - 反代到 115.227.17.84(生产前端
# Giteagitea.animal-spot.icu → 3000
server {
listen 80;
server_name redpowerfuture.com *.redpowerfuture.com;
client_max_body_size 500M;
location ^~ /
{
proxy_pass http://115.227.17.84;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_http_version 1.1;
# proxy_hide_header Upgrade;
add_header X-Cache $upstream_cache_status;
#Set Nginx Cache
set $static_filefFEkdMm2 0;
if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" )
{
set $static_filefFEkdMm2 1;
expires 1m;
}
if ( $static_filefFEkdMm2 = 0 )
{
add_header Cache-Control no-cache;
}
}
}
# HTTPS - 转发到 116.204.74.41
server {
listen 443 ssl default_server;
server_name redpowerfuture.com *.redpowerfuture.com;
ssl_certificate /etc/nginx/ssl/scs1779764972146_redpowerfuture.com_server.crt;
ssl_certificate_key /etc/nginx/ssl/scs1779764972146_redpowerfuture.com_server.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
client_max_body_size 500M;
server_name gitea.animal-spot.icu;
client_max_body_size 1m;
location / {
proxy_pass http://116.204.74.41;
proxy_pass http://__API_HOST__:3000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 75s;
proxy_send_timeout 86400s;
proxy_read_timeout 86400s;
# WebSocket 升级头透传
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_connect_timeout 30s;
proxy_send_timeout 30s;
proxy_read_timeout 30s;
}
}
# 非 redpowerfuture.com 的 HTTP 请求转发
# Gitea HTTPS(证书覆盖 gitea.animal-spot.icu / www.gitea.animal-spot.icu
server {
listen 80 default_server;
server_name _;
client_max_body_size 500M;
location ^~ /
{
proxy_pass http://115.227.17.84;
listen 443 ssl;
server_name gitea.animal-spot.icu;
ssl_certificate /etc/nginx/ssl/gitea.animal-spot.icu.pem;
ssl_certificate_key /etc/nginx/ssl/gitea.animal-spot.icu.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
client_max_body_size 1m;
location / {
proxy_pass http://__API_HOST__:3000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket 升级头透传
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_connect_timeout 30s;
proxy_send_timeout 30s;
proxy_read_timeout 30s;
}
}
# 顶级域名/HTTPS(证书覆盖 animal-spot.icu / www.animal-spot.icu
server {
listen 443 ssl default_server;
server_name animal-spot.icu www.animal-spot.icu;
ssl_certificate /etc/nginx/ssl/animal-spot.icu.pem;
ssl_certificate_key /etc/nginx/ssl/animal-spot.icu.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
client_max_body_size 1m;
location / {
proxy_pass http://__API_HOST__:8080;
proxy_http_version 1.1;
# proxy_hide_header Upgrade;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket 升级头透传
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_connect_timeout 30s;
proxy_send_timeout 30s;
proxy_read_timeout 30s;
}
}
add_header X-Cache $upstream_cache_status;
#Set Nginx Cache
# 其余所有域名 → 项目管理(8080)
server {
listen 80 default_server;
server_name _;
client_max_body_size 1m;
set $static_filefFEkdMm2 0;
if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" )
{
set $static_filefFEkdMm2 1;
expires 1m;
}
if ( $static_filefFEkdMm2 = 0 )
{
add_header Cache-Control no-cache;
}
location / {
proxy_pass http://__API_HOST__:8080;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket 升级头透传
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_connect_timeout 30s;
proxy_send_timeout 30s;
proxy_read_timeout 30s;
}
}
+104
View File
@@ -0,0 +1,104 @@
# WebSocket connection upgrade
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
# HTTPS 分流:主域名/www 走 115.227.17.84,其他二级域名走 116.204.74.41
map $host $https_upstream {
default http://116.204.74.41;
redpowerfuture.com http://115.227.17.84;
www.redpowerfuture.com http://115.227.17.84;
}
# HTTP - 反代到 115.227.17.84(生产前端)
server {
listen 80;
server_name redpowerfuture.com *.redpowerfuture.com;
client_max_body_size 500M;
location ^~ /
{
proxy_pass http://115.227.17.84;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_http_version 1.1;
# proxy_hide_header Upgrade;
add_header X-Cache $upstream_cache_status;
#Set Nginx Cache
set $static_filefFEkdMm2 0;
if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" )
{
set $static_filefFEkdMm2 1;
expires 1m;
}
if ( $static_filefFEkdMm2 = 0 )
{
add_header Cache-Control no-cache;
}
}
}
# HTTPS - 转发到 116.204.74.41
server {
listen 443 ssl default_server;
server_name redpowerfuture.com *.redpowerfuture.com;
ssl_certificate /etc/nginx/ssl/scs1779764972146_redpowerfuture.com_server.crt;
ssl_certificate_key /etc/nginx/ssl/scs1779764972146_redpowerfuture.com_server.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
client_max_body_size 500M;
location / {
proxy_pass $https_upstream/;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 75s;
proxy_send_timeout 86400s;
proxy_read_timeout 86400s;
}
}
# 非 redpowerfuture.com 的 HTTP 请求转发
server {
listen 80 default_server;
server_name _;
client_max_body_size 500M;
location ^~ /
{
proxy_pass http://115.227.17.84;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_http_version 1.1;
# proxy_hide_header Upgrade;
add_header X-Cache $upstream_cache_status;
#Set Nginx Cache
set $static_filefFEkdMm2 0;
if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" )
{
set $static_filefFEkdMm2 1;
expires 1m;
}
if ( $static_filefFEkdMm2 = 0 )
{
add_header Cache-Control no-cache;
}
}
}
+27
View File
@@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAtYRXsIXmxjMiwMcSV8qSmM6QWF4lYBAOQsx0TSJmrHYH9oJo
PpJhNzaIB8wiBWFpvWOjEnF7saZ05+yvMzpn0q/ZGHNqjuO761p10Wyosb4MIIid
BVE8AvZXToeGat5zIu4/R/k+eBb07yzshowP30gX1ltQDURiju62XKb/1kNGqs2F
1pjCHcnoVr4jaJSPuEM6IKVnE2WTI9vPXBWAM5xW37xbjrXauwTo0BuLFxhJMWpW
QfRLYtMVuhXbHCTwqbTsiZz+ih97vNBy4AogevZpU0xhKMIB12dCY3K+huVPD2Zn
Srjm3ByFNaHOw13MlKczVVxhPWbuBVJUk1MRwQIDAQABAoIBABX8481tjvSr3ZYa
F0H8tzDc9tXJg8AE+eFEGIN+ew8BljnZdqy7uRyB1c0SAH4D3JX1Q5v4lLoClq9A
d8GeHdUC+aqRUpNgCVO7Z8G4Zp/vTFNFkTXDbyBRvGY2GwWHkE1nLFG44sUTzNRL
LhSnU0XiGwcblREiW0kCqCMFlMCcvcPrOcE3Cfb5/F4EpS7ks07GDH7T8+0aUNtP
3kX+K2/w/KAeq06mygySE8Gh5r4tPxikcMkPWdTXlIhPlx7w0P1gvgA2RP7rrRsl
VDRiNY9LnQzBiHHVAskbYUxCpqHp8fWosnN9kGER3t4g/uv/rNUje9/PaIAou1t9
i6NBhsUCgYEA6hGTsw12Vd+AgIvOM+g/JQD98aoTm+Nge7JU+jAcCZ/DwalYrFqj
ac2nmKjL3eJh828GcLzujy8oyFCzs/Yoa7XjrFLJvKj+ZQJCGrTLoWmeAcxjLd/t
A6nzq+3Caw5ZwEbx/7kpm2puH8D7n+Grl6iWJLgLydEfqbXypN7PSe0CgYEAxoY/
tf26TMUUkN34d2eSYZUyx+H2HRfHTs6oEYSr3xHq7d8xPpphV8FFV9Zyc2itrxxq
DtwwfW9hmxcBOJGat34+7SntAgIg3sk/IG5u7Mmjh01tnZ97F8L7qiRU3oiT0Sju
rmSRGL9lcJKilgHiKc2PFeiw3NUMkaOU47vcnKUCgYBV2IR3EuTnscULYDsMRo2C
IM8CJwJyFf5433rTF3nw/atqB5YCAGwWjdp93sqGYlTSV1HhXymPUhh+/zopMoq4
lkkeFm7uxnwmx6E+8jgMxxOwTSnC1XGz+kzoLZc0dFrubharV1mvKmWhN8IRbU7l
nGsUpHuOVShrsdOALEeSMQKBgEONEsi+WVIeDW1t2knm+Cw0NF9HSBOGL89lClNL
rZ/t3N6r/3mp1k2h+hJ1aeRTTiYzqPL9gZJs/+1h2oyBHwAo+QiCJ59zUfP8znoe
magAxKAZfJ8R0TS4qCGw0yAVoRaesvisR6MAHWg8vQ4F/grzYyi1UNkTtX8pBlSn
a93xAoGBAMUPWWu24ReHb4wQouZt9O2/XFY8ezZTFU0g/82VG8/LEQ9HmOteA0yZ
/6av1DrOVFI1kKuGtmNUJTzDjNFgWR3LHdXMQYQlksz23GDdHSwGWrVHghwwWJ/o
1lafzZyUjcDk0cuJRQ/UsjJOqnC3myNRu4AiZKv4l6nEjNAMMyVB
-----END RSA PRIVATE KEY-----
+62
View File
@@ -0,0 +1,62 @@
-----BEGIN CERTIFICATE-----
MIIGCjCCBPKgAwIBAgIQCpZ7oy9JRaJJjaFzSgR8BjANBgkqhkiG9w0BAQsFADBu
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMS0wKwYDVQQDEyRFbmNyeXB0aW9uIEV2ZXJ5d2hlcmUg
RFYgVExTIENBIC0gRzIwHhcNMjYwOTEwMDAwMDAwWhcNMjYxMjA4MjM1OTU5WjAa
MRgwFgYDVQQDEw9hbmltYWwtc3BvdC5pY3UwggEiMA0GCSqGSIb3DQEBAQUAA4IB
DwAwggEKAoIBAQC1hFewhebGMyLAxxJXypKYzpBYXiVgEA5CzHRNImasdgf2gmg+
kmE3NogHzCIFYWm9Y6MScXuxpnTn7K8zOmfSr9kYc2qO47vrWnXRbKixvgwgiJ0F
UTwC9ldOh4Zq3nMi7j9H+T54FvTvLOyGjA/fSBfWW1ANRGKO7rZcpv/WQ0aqzYXW
mMIdyehWviNolI+4QzogpWcTZZMj289cFYAznFbfvFuOtdq7BOjQG4sXGEkxalZB
9Eti0xW6FdscJPCptOyJnP6KH3u80HLgCiB69mlTTGEowgHXZ0Jjcr6G5U8PZmdK
uObcHIU1oc7DXcyUpzNVXGE9Zu4FUlSTUxHBAgMBAAGjggL2MIIC8jAfBgNVHSME
GDAWgBR435GQX+7erPbFdevVTFVT7yRKtjAdBgNVHQ4EFgQU0lVlHy90YG1/Twsm
oIY4F4PtkcYwLwYDVR0RBCgwJoIPYW5pbWFsLXNwb3QuaWN1ghN3d3cuYW5pbWFs
LXNwb3QuaWN1MD4GA1UdIAQ3MDUwMwYGZ4EMAQIBMCkwJwYIKwYBBQUHAgEWG2h0
dHA6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0l
BBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMIGABggrBgEFBQcBAQR0MHIwJAYIKwYB
BQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBKBggrBgEFBQcwAoY+aHR0
cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0VuY3J5cHRpb25FdmVyeXdoZXJlRFZU
TFNDQS1HMi5jcnQwDAYDVR0TAQH/BAIwADCCAX0GCisGAQQB1nkCBAIEggFtBIIB
aQFnAHYAwjF+V0UZo0XufzjespBB68fCIVoiv3/Vta12mtkOUs0AAAGgjATixQAA
BAMARzBFAiBBPfQhRlv/eiD4qVZMiOVFHEkDaLkKdCYX19Irs2dX3gIhALhzsxPN
YnBzEUQwNNnK0iyjRhA9oFEQ90F2yHLTHWiEAHYA2AlVO5RPev/IFhlvlE+Fq7D4
/F6HVSYPFdEucrtFSxQAAAGgjATi3wAABAMARzBFAiAIWIMpLTaxXijEtZisV0qg
9SyycjOke7YdAIhNNelBhAIhAOY6+Y/ros1X+mntqLX1LxLdZquQerWoBiQ+TZRP
NB30AHUAlE5Dh/rswe+B8xkkJqgYZQHH0184AgE/cmd9VTcuGdgAAAGgjATi0QAA
BAMARjBEAiAt/Fy5RJ+SQOP366DkR5b2L+JTNHeRUQaJcY2grSWk8gIgcgAi7Oyg
emm+lSYLdv9S3pxPOi5JfaDl9axpdon9h9QwDQYJKoZIhvcNAQELBQADggEBALzl
PeXqF2zhers/8bRiWNF2Q1u+8tGgUjRsnUd0OXC8KTyHZuyXwKEGAZVdmmXbfm0H
yUbGNz9epzyT0n/1FYf9UDIxNwjaWUDPPsYtS6f/vXmgXe2+KXgX4qdtfU2E43q9
ArMj7zEOAFfAHHhvvHK3k9V+vNWTqikxG29Q6qHVeSuv4F5SVI4x9MyHSmV81Tsf
wkHEvc9xf6StGsJCCiF1VbByHIBxhcbRnsVmgXDJQLZYmDokz1uRDiFaUpTYHKoL
AAheQMj22WI8GCOtQOFXejZA1MajaXKsnHhJeY7OPAZstzj89AkTXiWFAc6EIg1D
SfYl7swPuzkkPUZGBN8=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEqjCCA5KgAwIBAgIQDeD/te5iy2EQn2CMnO1e0zANBgkqhkiG9w0BAQsFADBh
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH
MjAeFw0xNzExMjcxMjQ2NDBaFw0yNzExMjcxMjQ2NDBaMG4xCzAJBgNVBAYTAlVT
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
b20xLTArBgNVBAMTJEVuY3J5cHRpb24gRXZlcnl3aGVyZSBEViBUTFMgQ0EgLSBH
MjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAO8Uf46i/nr7pkgTDqnE
eSIfCFqvPnUq3aF1tMJ5hh9MnO6Lmt5UdHfBGwC9Si+XjK12cjZgxObsL6Rg1njv
NhAMJ4JunN0JGGRJGSevbJsA3sc68nbPQzuKp5Jc8vpryp2mts38pSCXorPR+sch
QisKA7OSQ1MjcFN0d7tbrceWFNbzgL2csJVQeogOBGSe/KZEIZw6gXLKeFe7mupn
NYJROi2iC11+HuF79iAttMc32Cv6UOxixY/3ZV+LzpLnklFq98XORgwkIJL1HuvP
ha8yvb+W6JislZJL+HLFtidoxmI7Qm3ZyIV66W533DsGFimFJkz3y0GeHWuSVMbI
lfsCAwEAAaOCAU8wggFLMB0GA1UdDgQWBBR435GQX+7erPbFdevVTFVT7yRKtjAf
BgNVHSMEGDAWgBROIlQgGJXm427mD/r6uRLtBhePOTAOBgNVHQ8BAf8EBAMCAYYw
HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8C
AQAwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdp
Y2VydC5jb20wQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQu
Y29tL0RpZ2lDZXJ0R2xvYmFsUm9vdEcyLmNybDBMBgNVHSAERTBDMDcGCWCGSAGG
/WwBAjAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BT
MAgGBmeBDAECATANBgkqhkiG9w0BAQsFAAOCAQEAoBs1eCLKakLtVRPFRjBIJ9LJ
L0s8ZWum8U8/1TMVkQMBn+CPb5xnCD0GSA6L/V0ZFrMNqBirrr5B241OesECvxIi
98bZ90h9+q/X5eMyOD35f8YTaEMpdnQCnawIwiHx06/0BfiTj+b/XQih+mqt3ZXe
xNCJqKexdiB2IWGSKcgahPacWkk/BAQFisKIFYEqHzV974S3FAz/8LIfD58xnsEN
GfzyIDkH3JrwYZ8caPTf6ZX9M1GrISN8HnWTtdNCH2xEajRa/h9ZBXjUyFKQrGk2
n2hcLrfZSbynEC/pSw/ET7H5nWwckjmAJ1l9fcnbqkU/pf6uMQmnfl0JQjJNSg==
-----END CERTIFICATE-----
+27
View File
@@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEApu0T6QMu4CvJAU5a4DnP86uCHWmsZAn3Gr0XL0C6x7a1MtAr
X/l3KkK3dJeZGToE5pWulQ8g1fNpb7VayF0SDksu1sZ53ednqKh0UMOTDuO6/+9G
ETPeUVomJKIhxVkBTP9XQJbBsw1m4trJmYsvMCJhxYVueg/mSo2Dwyaoyk4ZLlDe
Dyjl9l1T92f9cJl3CDpoBgiDQkuLo/FVhmAg8jrRw7R2QjZrBheo/+WzsD+0Xc05
5ghvJHwhB15zZz5rp4TNxFTuSpdBdynIGBDSBcyzVi3fKigqvP+TBRLgt45H4Itd
C30qZuVJ2opG4ZQ1GjfCONTovTshzXnglX6tdwIDAQABAoIBAChr9IxSZwGF2NDm
Jn9xwHejKojw0/wNpbbl3z1kEVbXWZ2KZ1aAVGj5au9i3oILWLB1wqb52Nu2a+vP
IMKwNvUbI6aCvXQM2z8uO6xrD6tlXh0n1fHIe6d7iw0H7eGaIgSBOKG9X/552lZI
4NS7rZucV8y6+Pu56exXxHZ3YBxM1PZTMpZAn9pSaKmSKpGeN4bNLan/MJN7So0/
+UXa+EaOal6mj0EV0VsiZ+zraCfcHspeoo4YSjxV4bKxIKYgd7mXNSNODyU2w714
puz7rFxkYT6xzN3+F0/mjspbD/xt9crWKU4ecp9Clas9HYg2i1LjaBtqjeVdXVex
ZqfVQ0ECgYEA2JToZeZhv1eErLvFsn1DOuM50gTY9RnlvUssiXl/vPTf6kVGvN5D
ww6jyAhrpJsztdnfSGQG92Zsl08uSfosItbzsjKmc9AIVPRAHT8zvJ82ClnlDESj
97PdxBsn4GVCBF8Y2ZY2d+xG5MD9Z6GV8GZLE0gQ1osAg7G0OQj+pRECgYEAxU6W
8cOd2of33ftrQFb7XccLKRGX6f9MQP9k59SsBuvLGNZ0/BT8Mtb38V3jN1Mt5CY3
nXxIHdFZ/5iXFrGcRZ6srhhr0U7P8u2AIaynosW3s87oNK+4UFyxbZivLodvO3Wj
303KkqQWnvLa91xRcpa3LTvDwnIOLmZh5PS9igcCgYEAqAxqgl6O66uZq3mK/WKK
Xs/elmHigdOVWhpRNV5Lyi7q6tjT+Uowo9HhLR2zgCZYqjqiMIZEjYQwr/rlPMtb
obDNqC/6zZPWUyyt7sOSfkG+6as0uR8tZs5uPXKgr1GCNuge3P3bx5NSsr44IUfU
kpKcoBpjzkROouCoqTSceTECgYB/vl0uFEecWBHb787Frks6sQcBxPlFL9xv7Kqp
CmGCbaFl6Ft/ZhrO061d4Tqd9EWvBCtX1EJgw81wFZwkvkN+M7h7UyZjMpKiJrCh
nMZANaC1Us22Ztp/dTQO0B8Dkf4rUgQSLKxt+r0Glhe8tVGqTfg02g/pUazqz7Cr
6uTYewKBgEJR43xisdDvb/9QqtH3mD1S2XDcTQK/u60x9PHQnr+ESFjM6qa42E1C
E5dXRfOMNY5913by/q+xxIX/p8oJZkLzHb+3FdaHIEESnHnEd+LFlGqhtcpmVrKQ
SnpWNNS9xbBHhvV5/QYQNfYhvxhRa+oeLrwsicNdyKqMDgjVGTkL
-----END RSA PRIVATE KEY-----
+62
View File
@@ -0,0 +1,62 @@
-----BEGIN CERTIFICATE-----
MIIGHjCCBQagAwIBAgIQDZIuD80BUmtuTVNEw6sVqzANBgkqhkiG9w0BAQsFADBu
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMS0wKwYDVQQDEyRFbmNyeXB0aW9uIEV2ZXJ5d2hlcmUg
RFYgVExTIENBIC0gRzIwHhcNMjYwOTEwMDAwMDAwWhcNMjYxMjA4MjM1OTU5WjAg
MR4wHAYDVQQDExVnaXRlYS5hbmltYWwtc3BvdC5pY3UwggEiMA0GCSqGSIb3DQEB
AQUAA4IBDwAwggEKAoIBAQCm7RPpAy7gK8kBTlrgOc/zq4IdaaxkCfcavRcvQLrH
trUy0Ctf+XcqQrd0l5kZOgTmla6VDyDV82lvtVrIXRIOSy7Wxnnd52eoqHRQw5MO
47r/70YRM95RWiYkoiHFWQFM/1dAlsGzDWbi2smZiy8wImHFhW56D+ZKjYPDJqjK
ThkuUN4PKOX2XVP3Z/1wmXcIOmgGCINCS4uj8VWGYCDyOtHDtHZCNmsGF6j/5bOw
P7RdzTnmCG8kfCEHXnNnPmunhM3EVO5Kl0F3KcgYENIFzLNWLd8qKCq8/5MFEuC3
jkfgi10LfSpm5UnaikbhlDUaN8I41Oi9OyHNeeCVfq13AgMBAAGjggMEMIIDADAf
BgNVHSMEGDAWgBR435GQX+7erPbFdevVTFVT7yRKtjAdBgNVHQ4EFgQUmq9HzUSz
4H//qqOcihUshCArnQ4wOwYDVR0RBDQwMoIVZ2l0ZWEuYW5pbWFsLXNwb3QuaWN1
ghl3d3cuZ2l0ZWEuYW5pbWFsLXNwb3QuaWN1MD4GA1UdIAQ3MDUwMwYGZ4EMAQIB
MCkwJwYIKwYBBQUHAgEWG2h0dHA6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAOBgNV
HQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMIGABggr
BgEFBQcBAQR0MHIwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNv
bTBKBggrBgEFBQcwAoY+aHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0VuY3J5
cHRpb25FdmVyeXdoZXJlRFZUTFNDQS1HMi5jcnQwDAYDVR0TAQH/BAIwADCCAX8G
CisGAQQB1nkCBAIEggFvBIIBawFpAHYAwjF+V0UZo0XufzjespBB68fCIVoiv3/V
ta12mtkOUs0AAAGgjAFGGgAABAMARzBFAiBidQiZ0gzyM3DA6xAxIBLFqWuZPdSJ
id+WqD9BEe2PLAIhAKZL2PHvgdgM/7t6DFRjmOVvdEUiivYKWwYaBfOtGB8mAHYA
2AlVO5RPev/IFhlvlE+Fq7D4/F6HVSYPFdEucrtFSxQAAAGgjAFGOQAABAMARzBF
AiEA4hdoZtzxBGh5o66GZcEuEOsQHBTLhaaqq+CapCtOIuYCIBb3kiBWTTO5Sr/2
txqrDoFJX+ylWQLSbiBOGtYU0H8FAHcAlE5Dh/rswe+B8xkkJqgYZQHH0184AgE/
cmd9VTcuGdgAAAGgjAFGIwAABAMASDBGAiEA/MK40WynslZ90XWL+CrSyAEh2SrZ
g4h4oIgLAkxqg40CIQDPtyt+4bTE4vttDJgXJx2LZ4mYPXStaNaYLMdhuBB7jDAN
BgkqhkiG9w0BAQsFAAOCAQEAN9ial9rS/pi3KQ22RkIxOMBK6z4H8tTYAKtbIJDK
CraTobyHerWvI8WXhBTVKKU4Q6ddrIdfzu7+zPmIDux6wh0g1hY6jYBdPVdZu8J5
HGQieW9B57o3exv1JDeGccd4vpAxZINBDWb/W83gRQq6mLsDVTTkBvjfCdj4cFIi
jpRC/titLdElhYk8IHIrbcgkeOwtjQ9k+tyAt9KyXvVJbUJ7MLsio5z/uC3fj71k
BwPIy/7+kBIXEiOzw8/lvDO54BXmptpJY4N7A1inqbcL8l4xCksXSjOwWiDQSHyU
7YAymyCxMN1xpxfGxgcCylnbKFESSQOTTUblVEjKj8Du7Q==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEqjCCA5KgAwIBAgIQDeD/te5iy2EQn2CMnO1e0zANBgkqhkiG9w0BAQsFADBh
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH
MjAeFw0xNzExMjcxMjQ2NDBaFw0yNzExMjcxMjQ2NDBaMG4xCzAJBgNVBAYTAlVT
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
b20xLTArBgNVBAMTJEVuY3J5cHRpb24gRXZlcnl3aGVyZSBEViBUTFMgQ0EgLSBH
MjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAO8Uf46i/nr7pkgTDqnE
eSIfCFqvPnUq3aF1tMJ5hh9MnO6Lmt5UdHfBGwC9Si+XjK12cjZgxObsL6Rg1njv
NhAMJ4JunN0JGGRJGSevbJsA3sc68nbPQzuKp5Jc8vpryp2mts38pSCXorPR+sch
QisKA7OSQ1MjcFN0d7tbrceWFNbzgL2csJVQeogOBGSe/KZEIZw6gXLKeFe7mupn
NYJROi2iC11+HuF79iAttMc32Cv6UOxixY/3ZV+LzpLnklFq98XORgwkIJL1HuvP
ha8yvb+W6JislZJL+HLFtidoxmI7Qm3ZyIV66W533DsGFimFJkz3y0GeHWuSVMbI
lfsCAwEAAaOCAU8wggFLMB0GA1UdDgQWBBR435GQX+7erPbFdevVTFVT7yRKtjAf
BgNVHSMEGDAWgBROIlQgGJXm427mD/r6uRLtBhePOTAOBgNVHQ8BAf8EBAMCAYYw
HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8C
AQAwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdp
Y2VydC5jb20wQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQu
Y29tL0RpZ2lDZXJ0R2xvYmFsUm9vdEcyLmNybDBMBgNVHSAERTBDMDcGCWCGSAGG
/WwBAjAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BT
MAgGBmeBDAECATANBgkqhkiG9w0BAQsFAAOCAQEAoBs1eCLKakLtVRPFRjBIJ9LJ
L0s8ZWum8U8/1TMVkQMBn+CPb5xnCD0GSA6L/V0ZFrMNqBirrr5B241OesECvxIi
98bZ90h9+q/X5eMyOD35f8YTaEMpdnQCnawIwiHx06/0BfiTj+b/XQih+mqt3ZXe
xNCJqKexdiB2IWGSKcgahPacWkk/BAQFisKIFYEqHzV974S3FAz/8LIfD58xnsEN
GfzyIDkH3JrwYZ8caPTf6ZX9M1GrISN8HnWTtdNCH2xEajRa/h9ZBXjUyFKQrGk2
n2hcLrfZSbynEC/pSw/ET7H5nWwckjmAJ1l9fcnbqkU/pf6uMQmnfl0JQjJNSg==
-----END CERTIFICATE-----