diff --git a/README.md b/README.md index dcc3aca3c..203836061 100644 --- a/README.md +++ b/README.md @@ -23,9 +23,9 @@ Windows 下的 [frp](https://github.com/fatedier/frp) 图形界面客户端。 * :pencil2: 简易的编辑界面,快速完成配置 * :play_or_pause_button: 快捷启用/禁用代理条目 * 📚 多配置文件管理 -* :inbox_tray: 支持导入/导出配置文件 +* :inbox_tray: 导入/导出配置文件 * :computer: 开机自启动 -* :lock: 支持密码保护 +* :lock: 密码保护、配置文件加密 * :clock4: 支持自动删除配置文件 ## :gear: 构建 diff --git a/README_en.md b/README_en.md index ab43fe574..80fcc0aeb 100644 --- a/README_en.md +++ b/README_en.md @@ -22,13 +22,13 @@ Instructions for use: ## :sparkles: Features -* :pencil2: Simple GUI for quick configuration -* :play_or_pause_button: Quick enable/disable proxy entry -* 📚 Multiple configuration files management -* :inbox_tray: Support import/export configuration files -* :computer: Auto-start at system boot -* :lock: Support password protection -* :clock4: Support automatic deletion of configuration files +* :pencil2: Simple GUI for quick configuration. +* :play_or_pause_button: Enable/Disable proxy entry. +* 📚 Manage multiple configuration files. +* :inbox_tray: Import/Export configuration files. +* :computer: Auto-start at system boot. +* :lock: Lock application, encrypt configuration files. +* :clock4: Support automatic deletion of configuration files. ## :gear: Build diff --git a/cmd/frpmgr/resource.h b/cmd/frpmgr/resource.h index 27181d8ac..ea0ecb085 100644 --- a/cmd/frpmgr/resource.h +++ b/cmd/frpmgr/resource.h @@ -3,7 +3,6 @@ #define IDI_APP 7 #define IDI_DOT 21 -#define IDI_OPEN 22 #define IDI_REFRESH 23 #define IDI_COPY 24 #define IDI_COPY_ACT 25 diff --git a/cmd/frpmgr/resource.rc b/cmd/frpmgr/resource.rc index 75cc2c9c6..0569cf446 100644 --- a/cmd/frpmgr/resource.rc +++ b/cmd/frpmgr/resource.rc @@ -10,7 +10,6 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST manifest.xml IDI_APP ICON icon/app.ico IDI_DOT ICON icon/dot.ico -IDI_OPEN ICON icon/open.ico IDI_REFRESH ICON icon/refresh.ico IDI_COPY ICON icon/copy.ico IDI_COPY_ACT ICON icon/copy_act.ico diff --git a/docs/screenshot_en.png b/docs/screenshot_en.png index 974d86377..34a10ea5d 100644 Binary files a/docs/screenshot_en.png and b/docs/screenshot_en.png differ diff --git a/docs/screenshot_zh.png b/docs/screenshot_zh.png index 6a043724e..1fb384172 100644 Binary files a/docs/screenshot_zh.png and b/docs/screenshot_zh.png differ diff --git a/go.mod b/go.mod index 23c2c2dce..84d022aa3 100644 --- a/go.mod +++ b/go.mod @@ -30,7 +30,6 @@ require ( github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 // indirect github.com/gorilla/mux v1.8.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect - github.com/inconshreveable/mousetrap v1.0.0 // indirect github.com/klauspost/cpuid/v2 v2.0.6 // indirect github.com/klauspost/reedsolomon v1.9.15 // indirect github.com/leodido/go-urn v1.2.1 // indirect @@ -41,9 +40,6 @@ require ( github.com/quic-go/qtls-go1-19 v0.2.0 // indirect github.com/quic-go/qtls-go1-20 v0.1.0 // indirect github.com/quic-go/quic-go v0.32.0 // indirect - github.com/rodaine/table v1.0.1 // indirect - github.com/spf13/cobra v1.1.3 // indirect - github.com/spf13/pflag v1.0.5 // indirect github.com/templexxx/cpufeat v0.0.0-20180724012125-cef66df7f161 // indirect github.com/templexxx/xor v0.0.0-20191217153810-f85b25db303b // indirect github.com/tjfoc/gmsm v1.4.1 // indirect diff --git a/go.sum b/go.sum index 5a0111a56..543b1163b 100644 --- a/go.sum +++ b/go.sum @@ -42,7 +42,6 @@ cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLq cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= @@ -60,18 +59,9 @@ github.com/Azure/go-ntlmssp v0.0.0-20200615164410-66371956d46c/go.mod h1:chxPXzS github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -88,20 +78,12 @@ github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-oidc/v3 v3.4.0 h1:xz7elHb/LDwm/ERpwHd+5nb7wFHL32rsr6bBOgaeu6g= github.com/coreos/go-oidc/v3 v3.4.0/go.mod h1:eHUXhZtXPQLgEaDrOVTgwbgmz1xGOkJNye6h3zkD2Pw= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= @@ -120,15 +102,10 @@ github.com/fatedier/golib v0.1.1-0.20220321042308-c306138b83ac h1:td1FJwN/oz8+9G github.com/fatedier/golib v0.1.1-0.20220321042308-c306138b83ac/go.mod h1:fLV0TLwHqrnB/L3jbNl67Gn6PCLggDGHniX1wLrA2Qo= github.com/fatedier/kcp-go v2.0.4-0.20190803094908-fe8645b0a904+incompatible h1:ssXat9YXFvigNge/IkkZvFMn8yeYKFX+uI6wn2mLJ74= github.com/fatedier/kcp-go v2.0.4-0.20190803094908-fe8645b0a904+incompatible/go.mod h1:YpCOaxj7vvMThhIQ9AfTOPW2sfztQR5WDfs7AflSy4s= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= @@ -140,13 +117,9 @@ github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/j github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= github.com/go-playground/validator/v10 v10.11.0 h1:0W+xRM511GY47Yy3bZUbJVitCNg2BOGlCyvTqsp/xIw= github.com/go-playground/validator/v10 v10.11.0/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -227,47 +200,17 @@ github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/Oth github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/cpuid/v2 v2.0.6 h1:dQ5ueTiftKxp0gyjKSx5+8BtPWkyQbd95m8Gys/RarI= github.com/klauspost/cpuid/v2 v2.0.6/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= @@ -275,8 +218,6 @@ github.com/klauspost/reedsolomon v1.9.15 h1:g2erWKD2M6rgnPf89fCji6jNlhMKMdXcuNHM github.com/klauspost/reedsolomon v1.9.15/go.mod h1:eqPAcE7xar5CIzcdfwydOEdcmchAKAP/qs14y4GCBOk= github.com/koho/frpmgr v0.0.0-20230311212131-f5c521a0f74f h1:0tR6RReLW5WI6zogwTcGImfwNgnFxZFBTFkT/BZhtn4= github.com/koho/frpmgr v0.0.0-20230311212131-f5c521a0f74f/go.mod h1:CdksCbC3x4Swi/ePNXCeg08K1i3XdIVdy3o7elo92k8= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= @@ -287,50 +228,17 @@ github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= github.com/lxn/win v0.0.0-20210218163916-a377121e959e h1:H+t6A/QJMbhCSEH5rAuRxh+CtW96g0Or0Fxa9IKr4uc= github.com/lxn/win v0.0.0-20210218163916-a377121e959e/go.mod h1:KxxjdtRkfNoYDCUP5ryK7XJJNTnpC8atvtmTheChOtk= -github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= -github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/onsi/ginkgo/v2 v2.8.3 h1:RpbK1G8nWPNaCVFBWsOGnEQQGgASi6b8fxcWBvDYjxQ= github.com/onsi/ginkgo/v2 v2.8.3/go.mod h1:6OaUA8BCi0aZfmzYT/q9AacwTzDpNbxILUT+TlBq6MY= github.com/onsi/gomega v1.27.0 h1:QLidEla4bXUuZVFa4KX6JHCsuGgbi85LC/pCHrt/O08= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pires/go-proxyproto v0.6.2 h1:KAZ7UteSOt6urjme6ZldyFm4wDe/z0ZUP0Yv0Dos0d8= github.com/pires/go-proxyproto v0.6.2/go.mod h1:Odh9VFOZJCf9G8cLW5o435Xf1J95Jw9Gw5rnCjcwzAY= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/quic-go/qtls-go1-18 v0.2.0 h1:5ViXqBZ90wpUcZS0ge79rf029yx0dYB0McyPJwqqj7U= github.com/quic-go/qtls-go1-18 v0.2.0/go.mod h1:moGulGHK7o6O8lSPSZNoOwcLvJKJ85vVNc7oJFD65bc= github.com/quic-go/qtls-go1-19 v0.2.0 h1:Cvn2WdhyViFUHoOqK52i51k4nDX8EwIh5VJiVM4nttk= @@ -339,41 +247,17 @@ github.com/quic-go/qtls-go1-20 v0.1.0 h1:d1PK3ErFy9t7zxKsG3NXBJXZjp/kMLoIb3y/kV5 github.com/quic-go/qtls-go1-20 v0.1.0/go.mod h1:JKtK6mjbAVcUTN/9jZpvLbGxvdWIKS8uT7EiStoU1SM= github.com/quic-go/quic-go v0.32.0 h1:lY02md31s1JgPiiyfqJijpu/UX/Iun304FI3yUqX7tA= github.com/quic-go/quic-go v0.32.0/go.mod h1:/fCsKANhQIeD5l76c2JFU+07gVE3KaA0FP+0zMWwfwo= -github.com/rodaine/table v1.0.1 h1:U/VwCnUxlVYxw8+NJiLIuCxA/xa6jL38MY3FYysVWWQ= -github.com/rodaine/table v1.0.1/go.mod h1:UVEtfBsflpeEcD56nF4F5AocNFta0ZuolpSVdPtlmP4= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v1.1.3 h1:xghbfqPkxzxP3C/f3n5DdpAbdKLj4ZE4BWQI362l53M= -github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= -github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/templexxx/cpufeat v0.0.0-20180724012125-cef66df7f161 h1:89CEmDvlq/F7SJEOqkIdNDGJXrQIhuIx9D2DBXjavSU= github.com/templexxx/cpufeat v0.0.0-20180724012125-cef66df7f161/go.mod h1:wM7WEvslTq+iOEAMDLSzhVuOt5BRZ05WirO+b09GHQU= github.com/templexxx/xor v0.0.0-20191217153810-f85b25db303b h1:fj5tQ8acgNUr6O8LEplsxDhUIe2573iLkJc+PqnzZTI= @@ -382,15 +266,12 @@ github.com/thoas/go-funk v0.9.3 h1:7+nAEx3kn5ZJcnDm2Bh23N2yOtweO14bi//dvRtgLpw= github.com/thoas/go-funk v0.9.3/go.mod h1:+IWnUfUmFO1+WVYQWQtIJHeRRdaIyyYglZN7xzUPe4Q= github.com/tjfoc/gmsm v1.4.1 h1:aMe1GlZb+0bLjn+cKTPEvvn9oUEBlJitaZiiBwsbgho= github.com/tjfoc/gmsm v1.4.1/go.mod h1:j4INPkHWMrhJb38G+J6W4Tw0AbuN8Thu3PbdVYhVcTE= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xtaci/lossyconn v0.0.0-20200209145036-adba10fffc37 h1:EWU6Pktpas0n8lLQwDsRyZfmkPeRbdgPtW609es+/9E= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -399,11 +280,6 @@ go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -454,10 +330,6 @@ golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -538,12 +410,7 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -624,14 +491,12 @@ golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 h1:vVKdlvoWBphwdxWKrFZEuM0kGgGLxUOYcY4U/2Vjg44= golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= @@ -641,7 +506,6 @@ golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -862,23 +726,16 @@ google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175 google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/Knetic/govaluate.v3 v3.0.0 h1:18mUyIt4ZlRlFZAAfVetz4/rzlJs9yhN+U02F4u1AOc= gopkg.in/Knetic/govaluate.v3 v3.0.0/go.mod h1:csKLBORsPbafmSCGTEh3U7Ozmsuq8ZSIlKk1bcqph0E= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/square/go-jose.v2 v2.6.0 h1:NGk74WTnPKBNUhNzQX7PYcTLUjoq7mzKk2OKbvwk2iI= gopkg.in/square/go-jose.v2 v2.6.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/i18n/catalog.go b/i18n/catalog.go index 6f16c7bf4..bc7f781b6 100644 --- a/i18n/catalog.go +++ b/i18n/catalog.go @@ -43,240 +43,236 @@ func init() { } var messageKeyToIndex = map[string]int{ - "* Leave blank to record no log and delete the original log file.": 69, - "* Refer to the [common] section of the FRP configuration file.": 116, - "* Refer to the parameters supported by FRP.": 162, - "* Support batch import, one link per line.": 215, - "A selection is required.": 230, + "* Leave blank to record no log and delete the original log file.": 67, + "* Refer to the [common] section of the FRP configuration file.": 114, + "* Refer to the parameters supported by FRP.": 160, + "* Support batch import, one link per line.": 211, + "A selection is required.": 226, "About": 15, - "Absolute": 81, - "Add": 179, - "Admin": 74, - "Admin Address": 75, - "Admin Port": 76, - "Advanced": 107, - "All": 34, + "Absolute": 79, + "Add": 177, + "Admin": 72, + "Admin Address": 73, + "Admin Port": 74, + "Advanced": 105, + "All": 32, "All Files": 3, "An error occurred while checking for a software update.": 21, - "Another config already exists with the name \"%s\".": 46, - "Are you sure you would like to delete config \"%s\"?": 49, - "Are you sure you would like to delete proxy \"%s\"?": 209, - "Are you sure you would like to disable proxy \"%s\"?": 211, - "Assets": 78, - "Audience": 62, - "Auth": 57, - "Auth Method": 58, - "Authentication": 65, - "Auto Delete": 80, - "Bandwidth": 139, - "Basic": 52, - "Bind Address": 129, - "Bind Port": 130, + "Another config already exists with the name \"%s\".": 44, + "Are you sure you would like to delete config \"%s\"?": 47, + "Are you sure you would like to delete proxy \"%s\"?": 205, + "Are you sure you would like to disable proxy \"%s\"?": 207, + "Assets": 76, + "Audience": 60, + "Auth": 55, + "Auth Method": 56, + "Authentication": 63, + "Auto Delete": 78, + "Bandwidth": 137, + "Basic": 50, + "Bind Address": 127, + "Bind Port": 128, "Built on: %s": 2, "Cancel": 24, - "Certificate": 101, + "Certificate": 99, "Certificate Files": 5, - "Certificate Key": 103, - "Change Password": 186, - "Check Interval": 161, - "Check Timeout": 159, - "Check Type": 158, + "Certificate Key": 101, + "Change Password": 184, + "Check Interval": 159, + "Check Timeout": 157, + "Check Type": 156, "Check for updates": 18, "Checking for updates": 17, - "Client": 137, - "Common Only": 35, - "Compression": 143, - "Config already exists": 117, + "Client": 135, + "Common Only": 33, + "Compression": 141, + "Config already exists": 115, "Config already removed": 28, "Configuration": 25, "Configuration Files": 4, - "Connection": 86, - "Copy": 174, - "Copy Access Address": 207, - "Copy Share Link": 39, - "Create a Copy": 33, - "Custom": 114, - "Custom Domains": 133, - "Custom Options": 115, - "Days": 85, - "Defaults": 191, - "Define the default value when creating a new configuration.\nThe value here will not affect the existing configuration.": 192, - "Delete": 41, - "Delete Date": 83, - "Delete Days": 84, - "Delete config \"%s\"": 48, - "Delete proxy \"%s\"": 208, - "Dial Timeout": 94, - "Direct Edit": 205, - "Disable": 212, - "Disable auto-start at boot": 113, - "Disable proxy \"%s\"": 210, - "Domains": 206, - "Download": 219, + "Connection": 84, + "Copy": 172, + "Copy Access Address": 203, + "Copy Share Link": 37, + "Create a Copy": 31, + "Custom": 112, + "Custom Domains": 131, + "Custom Options": 113, + "Days": 83, + "Defaults": 189, + "Define the default value when creating a new configuration.\nThe value here will not affect the existing configuration.": 190, + "Delete": 39, + "Delete Date": 81, + "Delete Days": 82, + "Delete config \"%s\"": 46, + "Delete proxy \"%s\"": 204, + "Dial Timeout": 92, + "Disable": 208, + "Disable auto-start at boot": 111, + "Disable proxy \"%s\"": 206, + "Domains": 202, + "Download": 215, "Download updates": 16, "Edit": 30, - "Edit Client - %s": 51, - "Edit Proxy - %s": 120, - "Empty": 141, - "Enable": 203, - "Encryption": 142, - "Enter Administration Password": 222, - "Enter Password": 220, - "Exit after login failure": 112, - "Export All Configs to ZIP": 40, - "FRP Manager": 214, + "Edit Client - %s": 49, + "Edit Proxy - %s": 118, + "Empty": 139, + "Enable": 201, + "Encryption": 140, + "Enter Administration Password": 218, + "Enter Password": 216, + "Exit after login failure": 110, + "Export All Configs to ZIP": 38, + "FRP Manager": 210, "FRP version: %s": 1, - "Failure Count": 160, + "Failure Count": 158, "For FRP configuration documentation, please visit the FRP project page:": 20, "For comments or to report bugs, please visit the project page:": 19, - "Group": 155, - "Group Key": 156, - "HTTP File Server": 202, - "HTTP Password": 145, - "HTTP Proxy": 88, - "HTTP User": 144, - "Health Check": 157, - "Heart Beats": 66, - "Heartbeat": 90, - "Host Name": 100, - "Host Rewrite": 146, - "Idle Timeout": 96, - "Import Config": 44, + "Group": 153, + "Group Key": 154, + "HTTP File Server": 200, + "HTTP Password": 143, + "HTTP Proxy": 86, + "HTTP User": 142, + "Health Check": 155, + "Heart Beats": 64, + "Heartbeat": 88, + "Host Name": 98, + "Host Rewrite": 144, + "Idle Timeout": 94, + "Import Config": 42, "Import Config from File": 27, - "Import from Clipboard": 38, - "Import from File": 36, - "Import from URL": 37, - "Imported %d of %d configs.": 45, - "Interval": 91, - "Invalid Input": 224, - "Keepalive": 95, + "Import from Clipboard": 36, + "Import from File": 34, + "Import from URL": 35, + "Imported %d of %d configs.": 43, + "Interval": 89, + "Invalid Input": 220, + "Keepalive": 93, "Key Files": 6, - "Languages": 187, - "Latest": 166, - "Level": 72, - "Load Balance": 154, - "Local Address": 126, - "Local Directory": 178, - "Local Path": 151, - "Local Port": 127, - "Locations": 134, - "Log": 68, - "Log File": 70, + "Languages": 185, + "Latest": 164, + "Level": 70, + "Load Balance": 152, + "Local Address": 124, + "Local Directory": 176, + "Local Path": 149, + "Local Port": 125, + "Locations": 132, + "Log": 66, + "Log File": 68, "Log Files": 7, - "Log Level": 198, - "Log retention": 199, - "Manual Settings": 43, - "Master password": 183, - "Max Days": 73, - "Max Streams": 97, - "Multiplexer": 135, - "Mux Keepalive": 109, - "Name": 53, - "New Client": 50, - "New Config": 42, + "Log Level": 196, + "Log retention": 197, + "Manual Settings": 41, + "Master password": 181, + "Max Days": 71, + "Max Streams": 95, + "Multiplexer": 133, + "Mux Keepalive": 107, + "Name": 51, + "New Client": 48, + "New Config": 40, "New Configuration": 26, - "New Proxy": 119, + "New Proxy": 117, "New Version!": 14, - "New master password": 195, - "None": 59, + "New master password": 193, + "None": 57, "Not a number": 12, "Number out of allowed range": 8, "OK": 23, - "Off": 99, - "On": 98, - "Open Config": 204, - "Open File": 31, - "Open Log Folder": 165, - "Open Port": 181, - "Other Options": 111, - "Passive Port Range": 213, - "Password": 77, - "Password is set.": 197, + "Off": 97, + "On": 96, + "Open Log Folder": 163, + "Open Port": 179, + "Other Options": 109, + "Passive Port Range": 209, + "Password": 75, + "Password is set.": 195, "Password mismatch": 10, - "Password removed.": 194, + "Password removed.": 192, "Please check and try again.": 11, - "Please enter a number from %.f to %.f.": 225, - "Please enter a number from %s to %s.": 226, + "Please enter a number from %.f to %.f.": 221, + "Please enter a number from %s to %s.": 222, "Please enter a number greater than %d.": 9, "Please enter a valid number.": 13, - "Please enter the correct URL list.": 218, - "Please select one of the provided options.": 229, - "Plugin": 147, - "Plugin Name": 148, - "Pool Count": 89, - "Port": 180, - "Preferences": 182, - "Protocol": 87, - "Proxy Version": 140, - "Proxy already exists": 163, - "Quick Add": 200, - "Random": 121, - "Re-enter password": 196, - "Ready": 217, - "Relative": 82, - "Remote Address": 173, - "Remote Desktop": 201, - "Remote Port": 128, - "Rename automatically": 216, - "Role": 123, - "Route User": 136, - "Running": 168, - "Scope": 63, - "Secret": 61, - "Secret Key": 125, - "Select Certificate File": 102, - "Select Certificate Key File": 104, - "Select Log File": 71, - "Select Trusted CA File": 106, - "Select Unix Path": 150, - "Select a folder for directory listing.": 152, - "Select a local directory that the admin server will load resources from.": 79, - "Select language": 190, - "Selection Required": 228, - "Server": 138, - "Server Address": 54, - "Server Name": 131, - "Server Port": 55, - "Service": 176, - "Set Defaults": 193, - "Show in Folder": 32, - "Source Address": 110, - "Start": 175, - "Starting": 170, - "Status": 172, - "Stop": 177, - "Stopped": 169, - "Stopping": 171, - "Strip Prefix": 153, - "Subdomain": 132, - "TCP Mux": 108, + "Please enter the correct URL list.": 214, + "Please select one of the provided options.": 225, + "Plugin": 145, + "Plugin Name": 146, + "Pool Count": 87, + "Port": 178, + "Preferences": 180, + "Protocol": 85, + "Proxy Version": 138, + "Proxy already exists": 161, + "Quick Add": 198, + "Random": 119, + "Re-enter password": 194, + "Ready": 213, + "Relative": 80, + "Remote Address": 171, + "Remote Desktop": 199, + "Remote Port": 126, + "Rename automatically": 212, + "Role": 121, + "Route User": 134, + "Running": 166, + "Scope": 61, + "Secret": 59, + "Secret Key": 123, + "Select Certificate File": 100, + "Select Certificate Key File": 102, + "Select Log File": 69, + "Select Trusted CA File": 104, + "Select Unix Path": 148, + "Select a folder for directory listing.": 150, + "Select a local directory that the admin server will load resources from.": 77, + "Select language": 188, + "Selection Required": 224, + "Server": 136, + "Server Address": 52, + "Server Name": 129, + "Server Port": 53, + "Service": 174, + "Set Defaults": 191, + "Source Address": 108, + "Start": 173, + "Starting": 168, + "Status": 170, + "Stop": 175, + "Stopped": 167, + "Stopping": 169, + "Strip Prefix": 151, + "Subdomain": 130, + "TCP Mux": 106, "The config \"%s\" already removed.": 29, - "The config name \"%s\" already exists.": 118, - "The current display language is": 188, - "The file \"%s\" is not a valid ZIP file.": 47, - "The password is incorrect. Re-enter password.": 223, - "The proxy name \"%s\" already exists.": 164, - "The text does not match the required pattern.": 227, + "The config name \"%s\" already exists.": 116, + "The current display language is": 186, + "The file \"%s\" is not a valid ZIP file.": 45, + "The password is incorrect. Re-enter password.": 219, + "The proxy name \"%s\" already exists.": 162, + "The text does not match the required pattern.": 223, "There are currently no updates available.": 22, - "Timeout": 93, - "Token": 60, - "Token Endpoint": 64, - "Trusted CA": 105, - "Type": 122, - "Unix Path": 149, - "Unknown": 167, - "Use master password": 185, - "User": 56, + "Timeout": 91, + "Token": 58, + "Token Endpoint": 62, + "Trusted CA": 103, + "Type": 120, + "Unix Path": 147, + "Unknown": 165, + "Use master password": 183, + "User": 54, "Version: %s": 0, - "Visitor": 124, - "Work Conns": 67, - "You can set a password to restrict access to this program.\nYou will be asked to enter it the next time you use this program.": 184, - "You must enter an administration password to operate the %s.": 221, - "You must restart program to apply the modification.": 189, - "s": 92, + "Visitor": 122, + "Work Conns": 65, + "You can set a password to restrict access to this program.\nYou will be asked to enter it the next time you use this program.": 182, + "You must enter an administration password to operate the %s.": 217, + "You must restart program to apply the modification.": 187, + "s": 90, } -var en_USIndex = []uint32{ // 232 elements +var en_USIndex = []uint32{ // 228 elements // Entry 0 - 1F 0x00000000, 0x0000000f, 0x00000022, 0x00000032, 0x0000003c, 0x00000050, 0x00000062, 0x0000006c, @@ -287,65 +283,64 @@ var en_USIndex = []uint32{ // 232 elements 0x0000024b, 0x00000252, 0x00000260, 0x00000272, 0x0000028a, 0x000002a1, 0x000002c5, 0x000002ca, // Entry 20 - 3F - 0x000002d4, 0x000002e3, 0x000002f1, 0x000002f5, - 0x00000301, 0x00000312, 0x00000322, 0x00000338, - 0x00000348, 0x00000362, 0x00000369, 0x00000374, - 0x00000384, 0x00000392, 0x000003b3, 0x000003e8, - 0x00000412, 0x00000428, 0x0000045e, 0x00000469, - 0x0000047d, 0x00000483, 0x00000488, 0x00000497, - 0x000004a3, 0x000004a8, 0x000004ad, 0x000004b9, - 0x000004be, 0x000004c4, 0x000004cb, 0x000004d4, + 0x000002d8, 0x000002dc, 0x000002e8, 0x000002f9, + 0x00000309, 0x0000031f, 0x0000032f, 0x00000349, + 0x00000350, 0x0000035b, 0x0000036b, 0x00000379, + 0x0000039a, 0x000003cf, 0x000003f9, 0x0000040f, + 0x00000445, 0x00000450, 0x00000464, 0x0000046a, + 0x0000046f, 0x0000047e, 0x0000048a, 0x0000048f, + 0x00000494, 0x000004a0, 0x000004a5, 0x000004ab, + 0x000004b2, 0x000004bb, 0x000004c1, 0x000004d0, // Entry 40 - 5F - 0x000004da, 0x000004e9, 0x000004f8, 0x00000504, - 0x0000050f, 0x00000513, 0x00000554, 0x0000055d, - 0x0000056d, 0x00000573, 0x0000057c, 0x00000582, - 0x00000590, 0x0000059b, 0x000005a4, 0x000005ab, - 0x000005f4, 0x00000600, 0x00000609, 0x00000612, - 0x0000061e, 0x0000062a, 0x0000062f, 0x0000063a, - 0x00000643, 0x0000064e, 0x00000659, 0x00000663, - 0x0000066c, 0x0000066e, 0x00000676, 0x00000683, + 0x000004df, 0x000004eb, 0x000004f6, 0x000004fa, + 0x0000053b, 0x00000544, 0x00000554, 0x0000055a, + 0x00000563, 0x00000569, 0x00000577, 0x00000582, + 0x0000058b, 0x00000592, 0x000005db, 0x000005e7, + 0x000005f0, 0x000005f9, 0x00000605, 0x00000611, + 0x00000616, 0x00000621, 0x0000062a, 0x00000635, + 0x00000640, 0x0000064a, 0x00000653, 0x00000655, + 0x0000065d, 0x0000066a, 0x00000674, 0x00000681, // Entry 60 - 7F - 0x0000068d, 0x0000069a, 0x000006a6, 0x000006a9, - 0x000006ad, 0x000006b7, 0x000006c3, 0x000006db, - 0x000006eb, 0x00000707, 0x00000712, 0x00000729, - 0x00000732, 0x0000073a, 0x00000748, 0x00000757, - 0x00000765, 0x0000077e, 0x00000799, 0x000007a0, - 0x000007af, 0x000007ee, 0x00000804, 0x0000082c, - 0x00000836, 0x00000849, 0x00000850, 0x00000855, - 0x0000085a, 0x00000862, 0x0000086d, 0x0000087b, + 0x0000068d, 0x00000690, 0x00000694, 0x0000069e, + 0x000006aa, 0x000006c2, 0x000006d2, 0x000006ee, + 0x000006f9, 0x00000710, 0x00000719, 0x00000721, + 0x0000072f, 0x0000073e, 0x0000074c, 0x00000765, + 0x00000780, 0x00000787, 0x00000796, 0x000007d5, + 0x000007eb, 0x00000813, 0x0000081d, 0x00000830, + 0x00000837, 0x0000083c, 0x00000841, 0x00000849, + 0x00000854, 0x00000862, 0x0000086d, 0x00000879, // Entry 80 - 9F - 0x00000886, 0x00000892, 0x0000089f, 0x000008a9, - 0x000008b5, 0x000008bf, 0x000008ce, 0x000008d8, - 0x000008e4, 0x000008ef, 0x000008f6, 0x000008fd, - 0x00000907, 0x00000915, 0x0000091b, 0x00000926, - 0x00000932, 0x0000093c, 0x0000094a, 0x00000957, - 0x0000095e, 0x0000096a, 0x00000974, 0x00000985, - 0x00000990, 0x000009b7, 0x000009c4, 0x000009d1, - 0x000009d7, 0x000009e1, 0x000009ee, 0x000009f9, + 0x00000886, 0x00000890, 0x0000089c, 0x000008a6, + 0x000008b5, 0x000008bf, 0x000008cb, 0x000008d6, + 0x000008dd, 0x000008e4, 0x000008ee, 0x000008fc, + 0x00000902, 0x0000090d, 0x00000919, 0x00000923, + 0x00000931, 0x0000093e, 0x00000945, 0x00000951, + 0x0000095b, 0x0000096c, 0x00000977, 0x0000099e, + 0x000009ab, 0x000009b8, 0x000009be, 0x000009c8, + 0x000009d5, 0x000009e0, 0x000009ee, 0x000009fc, // Entry A0 - BF - 0x00000a07, 0x00000a15, 0x00000a24, 0x00000a50, - 0x00000a65, 0x00000a8c, 0x00000a9c, 0x00000aa3, - 0x00000aab, 0x00000ab3, 0x00000abb, 0x00000ac4, - 0x00000acd, 0x00000ad4, 0x00000ae3, 0x00000ae8, - 0x00000aee, 0x00000af6, 0x00000afb, 0x00000b0b, - 0x00000b0f, 0x00000b14, 0x00000b1e, 0x00000b2a, - 0x00000b3a, 0x00000bb7, 0x00000bcb, 0x00000bdb, - 0x00000be5, 0x00000c05, 0x00000c39, 0x00000c49, + 0x00000a0b, 0x00000a37, 0x00000a4c, 0x00000a73, + 0x00000a83, 0x00000a8a, 0x00000a92, 0x00000a9a, + 0x00000aa2, 0x00000aab, 0x00000ab4, 0x00000abb, + 0x00000aca, 0x00000acf, 0x00000ad5, 0x00000add, + 0x00000ae2, 0x00000af2, 0x00000af6, 0x00000afb, + 0x00000b05, 0x00000b11, 0x00000b21, 0x00000b9e, + 0x00000bb2, 0x00000bc2, 0x00000bcc, 0x00000bec, + 0x00000c20, 0x00000c30, 0x00000c39, 0x00000cb0, // Entry C0 - DF - 0x00000c52, 0x00000cc9, 0x00000cd6, 0x00000ce8, - 0x00000cfc, 0x00000d0e, 0x00000d1f, 0x00000d29, - 0x00000d37, 0x00000d41, 0x00000d50, 0x00000d61, - 0x00000d68, 0x00000d74, 0x00000d80, 0x00000d88, - 0x00000d9c, 0x00000db1, 0x00000de6, 0x00000dfc, - 0x00000e32, 0x00000e3a, 0x00000e4d, 0x00000e59, - 0x00000e84, 0x00000e99, 0x00000e9f, 0x00000ec2, - 0x00000ecb, 0x00000eda, 0x00000f1a, 0x00000f38, + 0x00000cbd, 0x00000ccf, 0x00000ce3, 0x00000cf5, + 0x00000d06, 0x00000d10, 0x00000d1e, 0x00000d28, + 0x00000d37, 0x00000d48, 0x00000d4f, 0x00000d57, + 0x00000d6b, 0x00000d80, 0x00000db5, 0x00000dcb, + 0x00000e01, 0x00000e09, 0x00000e1c, 0x00000e28, + 0x00000e53, 0x00000e68, 0x00000e6e, 0x00000e91, + 0x00000e9a, 0x00000ea9, 0x00000ee9, 0x00000f07, + 0x00000f35, 0x00000f43, 0x00000f70, 0x00000f9b, // Entry E0 - FF - 0x00000f66, 0x00000f74, 0x00000fa1, 0x00000fcc, - 0x00000ffa, 0x0000100d, 0x00001038, 0x00001051, -} // Size: 952 bytes + 0x00000fc9, 0x00000fdc, 0x00001007, 0x00001020, +} // Size: 936 bytes -const en_USData string = "" + // Size: 4177 bytes +const en_USData string = "" + // Size: 4128 bytes "\x02Version: %[1]s\x02FRP version: %[1]s\x02Built on: %[1]s\x02All Files" + "\x02Configuration Files\x02Certificate Files\x02Key Files\x02Log Files" + "\x02Number out of allowed range\x02Please enter a number greater than %[" + @@ -357,66 +352,65 @@ const en_USData string = "" + // Size: 4177 bytes "le checking for a software update.\x02There are currently no updates ava" + "ilable.\x02OK\x02Cancel\x02Configuration\x02New Configuration\x02Import " + "Config from File\x02Config already removed\x02The config \x22%[1]s\x22 a" + - "lready removed.\x02Edit\x02Open File\x02Show in Folder\x02Create a Copy" + - "\x02All\x02Common Only\x02Import from File\x02Import from URL\x02Import " + - "from Clipboard\x02Copy Share Link\x02Export All Configs to ZIP\x02Delete" + - "\x02New Config\x02Manual Settings\x02Import Config\x02Imported %[1]d of " + - "%[2]d configs.\x02Another config already exists with the name \x22%[1]s" + - "\x22.\x02The file \x22%[1]s\x22 is not a valid ZIP file.\x02Delete confi" + - "g \x22%[1]s\x22\x02Are you sure you would like to delete config \x22%[1]" + - "s\x22?\x02New Client\x02Edit Client - %[1]s\x02Basic\x02Name\x02Server A" + - "ddress\x02Server Port\x02User\x02Auth\x02Auth Method\x02None\x02Token" + - "\x02Secret\x02Audience\x02Scope\x02Token Endpoint\x02Authentication\x02H" + - "eart Beats\x02Work Conns\x02Log\x02* Leave blank to record no log and de" + - "lete the original log file.\x02Log File\x02Select Log File\x02Level\x02M" + - "ax Days\x02Admin\x02Admin Address\x02Admin Port\x02Password\x02Assets" + - "\x02Select a local directory that the admin server will load resources f" + - "rom.\x02Auto Delete\x02Absolute\x02Relative\x02Delete Date\x02Delete Day" + - "s\x02Days\x02Connection\x02Protocol\x02HTTP Proxy\x02Pool Count\x02Heart" + - "beat\x02Interval\x02s\x02Timeout\x02Dial Timeout\x02Keepalive\x02Idle Ti" + - "meout\x02Max Streams\x02On\x02Off\x02Host Name\x02Certificate\x02Select " + - "Certificate File\x02Certificate Key\x02Select Certificate Key File\x02Tr" + - "usted CA\x02Select Trusted CA File\x02Advanced\x02TCP Mux\x02Mux Keepali" + - "ve\x02Source Address\x02Other Options\x02Exit after login failure\x02Dis" + - "able auto-start at boot\x02Custom\x02Custom Options\x02* Refer to the [c" + - "ommon] section of the FRP configuration file.\x02Config already exists" + - "\x02The config name \x22%[1]s\x22 already exists.\x02New Proxy\x02Edit P" + - "roxy - %[1]s\x02Random\x02Type\x02Role\x02Visitor\x02Secret Key\x02Local" + - " Address\x02Local Port\x02Remote Port\x02Bind Address\x02Bind Port\x02Se" + - "rver Name\x02Subdomain\x02Custom Domains\x02Locations\x02Multiplexer\x02" + - "Route User\x02Client\x02Server\x02Bandwidth\x02Proxy Version\x02Empty" + - "\x02Encryption\x02Compression\x02HTTP User\x02HTTP Password\x02Host Rewr" + - "ite\x02Plugin\x02Plugin Name\x02Unix Path\x02Select Unix Path\x02Local P" + - "ath\x02Select a folder for directory listing.\x02Strip Prefix\x02Load Ba" + - "lance\x02Group\x02Group Key\x02Health Check\x02Check Type\x02Check Timeo" + - "ut\x02Failure Count\x02Check Interval\x02* Refer to the parameters suppo" + - "rted by FRP.\x02Proxy already exists\x02The proxy name \x22%[1]s\x22 alr" + - "eady exists.\x02Open Log Folder\x02Latest\x02Unknown\x02Running\x02Stopp" + - "ed\x02Starting\x02Stopping\x02Status\x02Remote Address\x02Copy\x02Start" + - "\x02Service\x02Stop\x02Local Directory\x02Add\x02Port\x02Open Port\x02Pr" + - "eferences\x02Master password\x02You can set a password to restrict acces" + - "s to this program.\x0aYou will be asked to enter it the next time you us" + - "e this program.\x02Use master password\x02Change Password\x02Languages" + - "\x02The current display language is\x02You must restart program to apply" + - " the modification.\x02Select language\x02Defaults\x02Define the default " + - "value when creating a new configuration.\x0aThe value here will not affe" + - "ct the existing configuration.\x02Set Defaults\x02Password removed.\x02N" + - "ew master password\x02Re-enter password\x02Password is set.\x02Log Level" + - "\x02Log retention\x02Quick Add\x02Remote Desktop\x02HTTP File Server\x02" + - "Enable\x02Open Config\x02Direct Edit\x02Domains\x02Copy Access Address" + - "\x02Delete proxy \x22%[1]s\x22\x02Are you sure you would like to delete " + - "proxy \x22%[1]s\x22?\x02Disable proxy \x22%[1]s\x22\x02Are you sure you " + - "would like to disable proxy \x22%[1]s\x22?\x02Disable\x02Passive Port Ra" + - "nge\x02FRP Manager\x02* Support batch import, one link per line.\x02Rena" + - "me automatically\x02Ready\x02Please enter the correct URL list.\x02Downl" + - "oad\x02Enter Password\x02You must enter an administration password to op" + - "erate the %[1]s.\x02Enter Administration Password\x02The password is inc" + - "orrect. Re-enter password.\x02Invalid Input\x02Please enter a number fro" + - "m %.[1]f to %.[2]f.\x02Please enter a number from %[1]s to %[2]s.\x02The" + - " text does not match the required pattern.\x02Selection Required\x02Plea" + - "se select one of the provided options.\x02A selection is required." + "lready removed.\x02Edit\x02Create a Copy\x02All\x02Common Only\x02Import" + + " from File\x02Import from URL\x02Import from Clipboard\x02Copy Share Lin" + + "k\x02Export All Configs to ZIP\x02Delete\x02New Config\x02Manual Setting" + + "s\x02Import Config\x02Imported %[1]d of %[2]d configs.\x02Another config" + + " already exists with the name \x22%[1]s\x22.\x02The file \x22%[1]s\x22 i" + + "s not a valid ZIP file.\x02Delete config \x22%[1]s\x22\x02Are you sure y" + + "ou would like to delete config \x22%[1]s\x22?\x02New Client\x02Edit Clie" + + "nt - %[1]s\x02Basic\x02Name\x02Server Address\x02Server Port\x02User\x02" + + "Auth\x02Auth Method\x02None\x02Token\x02Secret\x02Audience\x02Scope\x02T" + + "oken Endpoint\x02Authentication\x02Heart Beats\x02Work Conns\x02Log\x02*" + + " Leave blank to record no log and delete the original log file.\x02Log F" + + "ile\x02Select Log File\x02Level\x02Max Days\x02Admin\x02Admin Address" + + "\x02Admin Port\x02Password\x02Assets\x02Select a local directory that th" + + "e admin server will load resources from.\x02Auto Delete\x02Absolute\x02R" + + "elative\x02Delete Date\x02Delete Days\x02Days\x02Connection\x02Protocol" + + "\x02HTTP Proxy\x02Pool Count\x02Heartbeat\x02Interval\x02s\x02Timeout" + + "\x02Dial Timeout\x02Keepalive\x02Idle Timeout\x02Max Streams\x02On\x02Of" + + "f\x02Host Name\x02Certificate\x02Select Certificate File\x02Certificate " + + "Key\x02Select Certificate Key File\x02Trusted CA\x02Select Trusted CA Fi" + + "le\x02Advanced\x02TCP Mux\x02Mux Keepalive\x02Source Address\x02Other Op" + + "tions\x02Exit after login failure\x02Disable auto-start at boot\x02Custo" + + "m\x02Custom Options\x02* Refer to the [common] section of the FRP config" + + "uration file.\x02Config already exists\x02The config name \x22%[1]s\x22 " + + "already exists.\x02New Proxy\x02Edit Proxy - %[1]s\x02Random\x02Type\x02" + + "Role\x02Visitor\x02Secret Key\x02Local Address\x02Local Port\x02Remote P" + + "ort\x02Bind Address\x02Bind Port\x02Server Name\x02Subdomain\x02Custom D" + + "omains\x02Locations\x02Multiplexer\x02Route User\x02Client\x02Server\x02" + + "Bandwidth\x02Proxy Version\x02Empty\x02Encryption\x02Compression\x02HTTP" + + " User\x02HTTP Password\x02Host Rewrite\x02Plugin\x02Plugin Name\x02Unix " + + "Path\x02Select Unix Path\x02Local Path\x02Select a folder for directory " + + "listing.\x02Strip Prefix\x02Load Balance\x02Group\x02Group Key\x02Health" + + " Check\x02Check Type\x02Check Timeout\x02Failure Count\x02Check Interval" + + "\x02* Refer to the parameters supported by FRP.\x02Proxy already exists" + + "\x02The proxy name \x22%[1]s\x22 already exists.\x02Open Log Folder\x02L" + + "atest\x02Unknown\x02Running\x02Stopped\x02Starting\x02Stopping\x02Status" + + "\x02Remote Address\x02Copy\x02Start\x02Service\x02Stop\x02Local Director" + + "y\x02Add\x02Port\x02Open Port\x02Preferences\x02Master password\x02You c" + + "an set a password to restrict access to this program.\x0aYou will be ask" + + "ed to enter it the next time you use this program.\x02Use master passwor" + + "d\x02Change Password\x02Languages\x02The current display language is\x02" + + "You must restart program to apply the modification.\x02Select language" + + "\x02Defaults\x02Define the default value when creating a new configurati" + + "on.\x0aThe value here will not affect the existing configuration.\x02Set" + + " Defaults\x02Password removed.\x02New master password\x02Re-enter passwo" + + "rd\x02Password is set.\x02Log Level\x02Log retention\x02Quick Add\x02Rem" + + "ote Desktop\x02HTTP File Server\x02Enable\x02Domains\x02Copy Access Addr" + + "ess\x02Delete proxy \x22%[1]s\x22\x02Are you sure you would like to dele" + + "te proxy \x22%[1]s\x22?\x02Disable proxy \x22%[1]s\x22\x02Are you sure y" + + "ou would like to disable proxy \x22%[1]s\x22?\x02Disable\x02Passive Port" + + " Range\x02FRP Manager\x02* Support batch import, one link per line.\x02R" + + "ename automatically\x02Ready\x02Please enter the correct URL list.\x02Do" + + "wnload\x02Enter Password\x02You must enter an administration password to" + + " operate the %[1]s.\x02Enter Administration Password\x02The password is " + + "incorrect. Re-enter password.\x02Invalid Input\x02Please enter a number " + + "from %.[1]f to %.[2]f.\x02Please enter a number from %[1]s to %[2]s.\x02" + + "The text does not match the required pattern.\x02Selection Required\x02P" + + "lease select one of the provided options.\x02A selection is required." -var es_ESIndex = []uint32{ // 232 elements +var es_ESIndex = []uint32{ // 228 elements // Entry 0 - 1F 0x00000000, 0x00000010, 0x00000024, 0x00000041, 0x00000054, 0x0000006f, 0x00000087, 0x00000096, @@ -427,65 +421,64 @@ var es_ESIndex = []uint32{ // 232 elements 0x000002dd, 0x000002e6, 0x000002f5, 0x0000030a, 0x00000330, 0x0000034c, 0x00000376, 0x0000037d, // Entry 20 - 3F - 0x0000038d, 0x000003a3, 0x000003b3, 0x000003b9, - 0x000003c5, 0x000003dc, 0x000003ef, 0x0000040b, - 0x00000423, 0x0000044c, 0x00000453, 0x00000460, - 0x00000471, 0x00000489, 0x000004b3, 0x000004e8, - 0x00000519, 0x00000539, 0x00000579, 0x00000587, - 0x0000059e, 0x000005a6, 0x000005ad, 0x000005c5, - 0x000005d8, 0x000005e0, 0x000005e5, 0x000005ed, - 0x000005f5, 0x00000600, 0x00000608, 0x00000612, + 0x0000038d, 0x00000393, 0x0000039f, 0x000003b6, + 0x000003c9, 0x000003e5, 0x000003fd, 0x00000426, + 0x0000042d, 0x0000043a, 0x0000044b, 0x00000463, + 0x0000048d, 0x000004c2, 0x000004f3, 0x00000513, + 0x00000553, 0x00000561, 0x00000578, 0x00000580, + 0x00000587, 0x0000059f, 0x000005b2, 0x000005ba, + 0x000005bf, 0x000005c7, 0x000005cf, 0x000005da, + 0x000005e2, 0x000005ec, 0x000005f4, 0x00000608, // Entry 40 - 5F - 0x0000061a, 0x0000062e, 0x0000063d, 0x00000652, - 0x00000667, 0x00000670, 0x000006d3, 0x000006e7, - 0x00000707, 0x0000070d, 0x0000071c, 0x00000722, - 0x0000072d, 0x00000734, 0x0000073a, 0x00000742, - 0x000007a4, 0x000007bd, 0x000007c6, 0x000007cf, - 0x000007de, 0x000007ed, 0x000007f3, 0x000007fd, - 0x00000807, 0x00000812, 0x00000822, 0x00000836, - 0x00000840, 0x00000842, 0x00000850, 0x00000862, + 0x00000617, 0x0000062c, 0x00000641, 0x0000064a, + 0x000006ad, 0x000006c1, 0x000006e1, 0x000006e7, + 0x000006f6, 0x000006fc, 0x00000707, 0x0000070e, + 0x00000714, 0x0000071c, 0x0000077e, 0x00000797, + 0x000007a0, 0x000007a9, 0x000007b8, 0x000007c7, + 0x000007cd, 0x000007d7, 0x000007e1, 0x000007ec, + 0x000007fc, 0x00000810, 0x0000081a, 0x0000081c, + 0x0000082a, 0x0000083c, 0x00000846, 0x0000085c, // Entry 60 - 7F - 0x0000086c, 0x00000882, 0x00000896, 0x0000089f, - 0x000008a7, 0x000008bc, 0x000008c8, 0x000008eb, - 0x00000900, 0x0000092c, 0x0000093c, 0x00000960, - 0x00000969, 0x00000971, 0x0000097f, 0x00000997, - 0x000009a6, 0x000009d4, 0x00000a01, 0x00000a09, - 0x00000a21, 0x00000a67, 0x00000a83, 0x00000ab2, - 0x00000abe, 0x00000ad3, 0x00000add, 0x00000ae2, - 0x00000ae7, 0x00000af1, 0x00000aff, 0x00000b10, + 0x00000870, 0x00000879, 0x00000881, 0x00000896, + 0x000008a2, 0x000008c5, 0x000008da, 0x00000906, + 0x00000916, 0x0000093a, 0x00000943, 0x0000094b, + 0x00000959, 0x00000971, 0x00000980, 0x000009ae, + 0x000009db, 0x000009e3, 0x000009fb, 0x00000a41, + 0x00000a5d, 0x00000a8c, 0x00000a98, 0x00000aad, + 0x00000ab7, 0x00000abc, 0x00000ac1, 0x00000acb, + 0x00000ad9, 0x00000aea, 0x00000af7, 0x00000b05, // Entry 80 - 9F - 0x00000b1d, 0x00000b2b, 0x00000b40, 0x00000b51, - 0x00000b65, 0x00000b70, 0x00000b88, 0x00000b91, - 0x00000b9d, 0x00000bad, 0x00000bb5, 0x00000bbe, - 0x00000bca, 0x00000bdc, 0x00000be3, 0x00000beb, - 0x00000bf7, 0x00000c04, 0x00000c15, 0x00000c29, - 0x00000c32, 0x00000c39, 0x00000c43, 0x00000c5e, - 0x00000c69, 0x00000c9e, 0x00000cae, 0x00000cc2, - 0x00000cc8, 0x00000cd7, 0x00000ce8, 0x00000ced, + 0x00000b1a, 0x00000b2b, 0x00000b3f, 0x00000b4a, + 0x00000b62, 0x00000b6b, 0x00000b77, 0x00000b87, + 0x00000b8f, 0x00000b98, 0x00000ba4, 0x00000bb6, + 0x00000bbd, 0x00000bc5, 0x00000bd1, 0x00000bde, + 0x00000bef, 0x00000c03, 0x00000c0c, 0x00000c13, + 0x00000c1d, 0x00000c38, 0x00000c43, 0x00000c78, + 0x00000c88, 0x00000c9c, 0x00000ca2, 0x00000cb1, + 0x00000cc2, 0x00000cc7, 0x00000cdb, 0x00000cee, // Entry A0 - BF - 0x00000d01, 0x00000d14, 0x00000d1e, 0x00000d4c, - 0x00000d5f, 0x00000d85, 0x00000d94, 0x00000d9c, - 0x00000da8, 0x00000daf, 0x00000db8, 0x00000dc3, - 0x00000dca, 0x00000dd1, 0x00000de3, 0x00000dea, - 0x00000df3, 0x00000dfc, 0x00000e07, 0x00000e18, - 0x00000e20, 0x00000e27, 0x00000e36, 0x00000e43, - 0x00000e57, 0x00000ee7, 0x00000f00, 0x00000f17, - 0x00000f1f, 0x00000f45, 0x00000f7f, 0x00000f94, + 0x00000cf8, 0x00000d26, 0x00000d39, 0x00000d5f, + 0x00000d6e, 0x00000d76, 0x00000d82, 0x00000d89, + 0x00000d92, 0x00000d9d, 0x00000da4, 0x00000dab, + 0x00000dbd, 0x00000dc4, 0x00000dcd, 0x00000dd6, + 0x00000de1, 0x00000df2, 0x00000dfa, 0x00000e01, + 0x00000e10, 0x00000e1d, 0x00000e31, 0x00000ec1, + 0x00000eda, 0x00000ef1, 0x00000ef9, 0x00000f1f, + 0x00000f59, 0x00000f6e, 0x00000f7e, 0x00000ff9, // Entry C0 - DF - 0x00000fa4, 0x0000101f, 0x0000102e, 0x00001045, - 0x0000105f, 0x0000107f, 0x000010a1, 0x000010b3, - 0x000010cb, 0x000010db, 0x000010ed, 0x00001107, - 0x00001111, 0x00001126, 0x00001137, 0x00001140, - 0x0000115c, 0x00001173, 0x000011aa, 0x000011c5, - 0x000011fe, 0x0000120b, 0x00001223, 0x00001238, - 0x0000126f, 0x0000128a, 0x00001290, 0x000012b5, - 0x000012bf, 0x000012d9, 0x0000131d, 0x00001347, + 0x00001008, 0x0000101f, 0x00001039, 0x00001059, + 0x0000107b, 0x0000108d, 0x000010a5, 0x000010b5, + 0x000010c7, 0x000010e1, 0x000010eb, 0x000010f4, + 0x00001110, 0x00001127, 0x0000115e, 0x00001179, + 0x000011b2, 0x000011bf, 0x000011d7, 0x000011ec, + 0x00001223, 0x0000123e, 0x00001244, 0x00001269, + 0x00001273, 0x0000128d, 0x000012d1, 0x000012fb, + 0x0000133a, 0x0000134b, 0x00001372, 0x00001397, // Entry E0 - FF - 0x00001386, 0x00001397, 0x000013be, 0x000013e3, - 0x00001412, 0x00001427, 0x00001456, 0x00001472, -} // Size: 952 bytes + 0x000013c6, 0x000013db, 0x0000140a, 0x00001426, +} // Size: 936 bytes -const es_ESData string = "" + // Size: 5234 bytes +const es_ESData string = "" + // Size: 5158 bytes "\x02Versión: %[1]s\x02Versión FRP: %[1]s\x02Fecha de compilación: %[1]s" + "\x02Todos los archivos\x02Archivos de configuración\x02Archivos de certi" + "ficado\x02Archivos clave\x02Archivos de registro\x02Número fuera del ran" + @@ -499,78 +492,76 @@ const es_ESData string = "" + // Size: 5234 bytes "software.\x02Actualmente no hay actualizaciones disponibles.\x02Aceptar" + "\x02Cancelar\x02Configuración\x02Nueva Configuración\x02Importar configu" + "ración desde archivo\x02Configuración ya eliminada\x02La configuración " + - "\x22%[1]s\x22 ya se eliminó.\x02Editar\x02Abrir documento\x02Mostrar en " + - "la carpeta\x02Crear una copia\x02Todos\x02Solo común\x02Importar desde a" + - "rchivo\x02Importar desde URL\x02Importar desde portapapeles\x02Copiar co" + - "mpartir enlace\x02Exportar todas las configuraciones a ZIP\x02Borrar\x02" + - "Nueva Config\x02Ajustes manuales\x02Importar configuración\x02Importado " + - "%[1]d de %[2]d configuraciones.\x02Ya existe otra configuración con el n" + - "ombre \x22%[1]s\x22.\x02El archivo \x22%[1]s\x22 no es un archivo ZIP vá" + - "lido.\x02Eliminar configuración \x22%[1]s\x22\x02¿Está seguro de que des" + - "ea eliminar la configuración \x22%[1]s\x22?\x02Nuevo Cliente\x02Editar C" + - "liente - %[1]s\x02Básico\x02Nombre\x02Dirección del servidor\x02Puerto d" + - "e servicio\x02Usuario\x02Auth\x02Método\x02Ninguna\x02Simbólico\x02Secre" + - "to\x02Audiencia\x02Alcance\x02Dirección de token\x02Autenticación\x02Lat" + - "idos del corazón\x02Conexión de trabajo\x02Registro\x02* Déjelo en blanc" + - "o para no registrar ningún registro y eliminar el archivo de registro or" + - "iginal.\x02Archivo de registro\x02Seleccionar archivo de registro\x02Niv" + - "el\x02Días máximos\x02Admin\x02Dirección\x02Puerto\x02Clave\x02Recurso" + - "\x02Seleccione un directorio local desde el que el servidor de administr" + - "ación cargará los recursos.\x02Eliminación automática\x02Absoluto\x02Rel" + - "ativo\x02Eliminar fecha\x02Eliminar días\x02Días\x02Conexión\x02Protocol" + - "o\x02Proxy HTTP\x02Conectar cuenta\x02Latido del corazón\x02Intervalo" + - "\x02s\x02Tiempo muerto\x02Conexión agotado\x02Keepalive\x02Tiempo de ina" + - "ctividad\x02Corrientes máximas\x02Encender\x02Apagado\x02Nombre de anfit" + - "rión\x02Certificado\x02Seleccionar archivo de certificado\x02Clave de ce" + - "rtificado\x02Seleccionar archivo de clave de certificado\x02CA de confia" + - "nza\x02Seleccionar archivo CA de confianza\x02Avanzado\x02Mux TCP\x02Mux" + - " Keepalive\x02Dirección de la fuente\x02Otras opciones\x02Salir después " + - "de fallar el inicio de sesión\x02Desactivar el inicio automático al arra" + - "ncar\x02Disfraz\x02Opciones personalizadas\x02* Consulte la sección [com" + - "mon] del archivo de configuración de FRP.\x02La configuración ya existe" + - "\x02El nombre de configuración \x22%[1]s\x22 ya existe.\x02Nuevo Proxy" + - "\x02Editar Proxy - %[1]s\x02Aleatorio\x02Tipo\x02Role\x02Visitante\x02Ll" + - "ave secreta\x02Dirección local\x02Puerto local\x02Puerto remoto\x02Direc" + - "ción de enlace\x02Puerto de enlace\x02Nombre del servidor\x02Subdominio" + - "\x02Dominios personalizados\x02Ruta URL\x02Multiplexor\x02Usuario de rut" + - "a\x02Cliente\x02Servidor\x02Banda ancha\x02Versión de proxy\x02Vacío\x02" + - "Cifrado\x02Compresión\x02Usuario HTTP\x02Contraseña HTTP\x02Reescritura " + - "de host\x02Enchufar\x02Nombre\x02Ruta Unix\x02Seleccione la ruta de Unix" + - "\x02Ruta local\x02Seleccione una carpeta para la lista de directorios." + - "\x02Prefijo de tira\x02Equilibrio de carga\x02Grupo\x02Clave de grupo" + - "\x02Chequeo de salud\x02Tipo\x02Se acabó el tiempo\x02Recuento de fallas" + - "\x02Intervalo\x02* Consulte los parámetros admitidos por FRP.\x02El prox" + - "y ya existe\x02El nombre de proxy \x22%[1]s\x22 ya existe.\x02Abrir regi" + - "stro\x02Último\x02Desconocido\x02Correr\x02Detenido\x02Comenzando\x02Par" + - "ada\x02Estado\x02Dirección remota\x02Copiar\x02Comienzo\x02Servicio\x02D" + - "eténgase\x02Directorio local\x02Agregar\x02Puerto\x02Puerto abierto\x02P" + - "referencias\x02Contraseña maestra\x02Puede establecer una contraseña par" + - "a restringir el acceso a este programa.\x0aSe le pedirá que lo ingrese l" + - "a próxima vez que use este programa.\x02Usar contraseña maestra\x02Cambi" + - "ar la contraseña\x02Idiomas\x02El idioma de visualización actual es\x02D" + - "ebe reiniciar el programa para aplicar la modificación.\x02Seleccione el" + - " idioma\x02Predeterminados\x02Defina el valor predeterminado al crear un" + - "a nueva configuración.\x0aEl valor aquí no afectará la configuración exi" + - "stente.\x02Valor ajustado\x02Contraseña eliminada.\x02Nueva contraseña m" + - "aestra\x02Escriba la contraseña otra vez\x02La contraseña está configura" + - "da.\x02Nivel de registro\x02Retención de registros\x02Añadir rápido\x02E" + - "scritorio remoto\x02Servidor de archivos HTTP\x02Habilitar\x02Abrir conf" + - "iguración\x02Edición directa\x02Dominios\x02Copiar dirección de acceso" + - "\x02Eliminar proxy \x22%[1]s\x22\x02¿Está seguro de que desea eliminar e" + - "l proxy \x22%[1]s\x22?\x02Deshabilitar proxy \x22%[1]s\x22\x02¿Está segu" + - "ro de que desea desactivar el proxy \x22%[1]s\x22?\x02Deshabilitar\x02Ga" + - "ma de puertos pasivos\x02Administrador de FRP\x02* Admite importación po" + - "r lotes, un enlace por línea.\x02Renombrar automáticamente\x02Listo\x02I" + - "ntroduzca la lista de URL correcta.\x02Descargar\x02Introducir la contra" + - "seña\x02Debe ingresar una contraseña de administración para operar %[1]s" + - ".\x02Ingrese la contraseña de administración\x02La contraseña es incorre" + - "cta. Escriba la contraseña otra vez.\x02Entrada invalida\x02Ingrese un n" + - "úmero de %.[1]f a %.[2]f.\x02Ingrese un número de %[1]s a %[2]s.\x02El " + - "texto no coincide con el patrón requerido.\x02Selección requerida\x02Sel" + - "eccione una de las opciones proporcionadas.\x02Se requiere una selección" + - "." + "\x22%[1]s\x22 ya se eliminó.\x02Editar\x02Crear una copia\x02Todos\x02So" + + "lo común\x02Importar desde archivo\x02Importar desde URL\x02Importar des" + + "de portapapeles\x02Copiar compartir enlace\x02Exportar todas las configu" + + "raciones a ZIP\x02Borrar\x02Nueva Config\x02Ajustes manuales\x02Importar" + + " configuración\x02Importado %[1]d de %[2]d configuraciones.\x02Ya existe" + + " otra configuración con el nombre \x22%[1]s\x22.\x02El archivo \x22%[1]s" + + "\x22 no es un archivo ZIP válido.\x02Eliminar configuración \x22%[1]s" + + "\x22\x02¿Está seguro de que desea eliminar la configuración \x22%[1]s" + + "\x22?\x02Nuevo Cliente\x02Editar Cliente - %[1]s\x02Básico\x02Nombre\x02" + + "Dirección del servidor\x02Puerto de servicio\x02Usuario\x02Auth\x02Métod" + + "o\x02Ninguna\x02Simbólico\x02Secreto\x02Audiencia\x02Alcance\x02Direcció" + + "n de token\x02Autenticación\x02Latidos del corazón\x02Conexión de trabaj" + + "o\x02Registro\x02* Déjelo en blanco para no registrar ningún registro y " + + "eliminar el archivo de registro original.\x02Archivo de registro\x02Sele" + + "ccionar archivo de registro\x02Nivel\x02Días máximos\x02Admin\x02Direcci" + + "ón\x02Puerto\x02Clave\x02Recurso\x02Seleccione un directorio local desd" + + "e el que el servidor de administración cargará los recursos.\x02Eliminac" + + "ión automática\x02Absoluto\x02Relativo\x02Eliminar fecha\x02Eliminar día" + + "s\x02Días\x02Conexión\x02Protocolo\x02Proxy HTTP\x02Conectar cuenta\x02L" + + "atido del corazón\x02Intervalo\x02s\x02Tiempo muerto\x02Conexión agotado" + + "\x02Keepalive\x02Tiempo de inactividad\x02Corrientes máximas\x02Encender" + + "\x02Apagado\x02Nombre de anfitrión\x02Certificado\x02Seleccionar archivo" + + " de certificado\x02Clave de certificado\x02Seleccionar archivo de clave " + + "de certificado\x02CA de confianza\x02Seleccionar archivo CA de confianza" + + "\x02Avanzado\x02Mux TCP\x02Mux Keepalive\x02Dirección de la fuente\x02Ot" + + "ras opciones\x02Salir después de fallar el inicio de sesión\x02Desactiva" + + "r el inicio automático al arrancar\x02Disfraz\x02Opciones personalizadas" + + "\x02* Consulte la sección [common] del archivo de configuración de FRP." + + "\x02La configuración ya existe\x02El nombre de configuración \x22%[1]s" + + "\x22 ya existe.\x02Nuevo Proxy\x02Editar Proxy - %[1]s\x02Aleatorio\x02T" + + "ipo\x02Role\x02Visitante\x02Llave secreta\x02Dirección local\x02Puerto l" + + "ocal\x02Puerto remoto\x02Dirección de enlace\x02Puerto de enlace\x02Nomb" + + "re del servidor\x02Subdominio\x02Dominios personalizados\x02Ruta URL\x02" + + "Multiplexor\x02Usuario de ruta\x02Cliente\x02Servidor\x02Banda ancha\x02" + + "Versión de proxy\x02Vacío\x02Cifrado\x02Compresión\x02Usuario HTTP\x02Co" + + "ntraseña HTTP\x02Reescritura de host\x02Enchufar\x02Nombre\x02Ruta Unix" + + "\x02Seleccione la ruta de Unix\x02Ruta local\x02Seleccione una carpeta p" + + "ara la lista de directorios.\x02Prefijo de tira\x02Equilibrio de carga" + + "\x02Grupo\x02Clave de grupo\x02Chequeo de salud\x02Tipo\x02Se acabó el t" + + "iempo\x02Recuento de fallas\x02Intervalo\x02* Consulte los parámetros ad" + + "mitidos por FRP.\x02El proxy ya existe\x02El nombre de proxy \x22%[1]s" + + "\x22 ya existe.\x02Abrir registro\x02Último\x02Desconocido\x02Correr\x02" + + "Detenido\x02Comenzando\x02Parada\x02Estado\x02Dirección remota\x02Copiar" + + "\x02Comienzo\x02Servicio\x02Deténgase\x02Directorio local\x02Agregar\x02" + + "Puerto\x02Puerto abierto\x02Preferencias\x02Contraseña maestra\x02Puede " + + "establecer una contraseña para restringir el acceso a este programa.\x0a" + + "Se le pedirá que lo ingrese la próxima vez que use este programa.\x02Usa" + + "r contraseña maestra\x02Cambiar la contraseña\x02Idiomas\x02El idioma de" + + " visualización actual es\x02Debe reiniciar el programa para aplicar la m" + + "odificación.\x02Seleccione el idioma\x02Predeterminados\x02Defina el val" + + "or predeterminado al crear una nueva configuración.\x0aEl valor aquí no " + + "afectará la configuración existente.\x02Valor ajustado\x02Contraseña eli" + + "minada.\x02Nueva contraseña maestra\x02Escriba la contraseña otra vez" + + "\x02La contraseña está configurada.\x02Nivel de registro\x02Retención de" + + " registros\x02Añadir rápido\x02Escritorio remoto\x02Servidor de archivos" + + " HTTP\x02Habilitar\x02Dominios\x02Copiar dirección de acceso\x02Eliminar" + + " proxy \x22%[1]s\x22\x02¿Está seguro de que desea eliminar el proxy \x22" + + "%[1]s\x22?\x02Deshabilitar proxy \x22%[1]s\x22\x02¿Está seguro de que de" + + "sea desactivar el proxy \x22%[1]s\x22?\x02Deshabilitar\x02Gama de puerto" + + "s pasivos\x02Administrador de FRP\x02* Admite importación por lotes, un " + + "enlace por línea.\x02Renombrar automáticamente\x02Listo\x02Introduzca la" + + " lista de URL correcta.\x02Descargar\x02Introducir la contraseña\x02Debe" + + " ingresar una contraseña de administración para operar %[1]s.\x02Ingrese" + + " la contraseña de administración\x02La contraseña es incorrecta. Escriba" + + " la contraseña otra vez.\x02Entrada invalida\x02Ingrese un número de %.[" + + "1]f a %.[2]f.\x02Ingrese un número de %[1]s a %[2]s.\x02El texto no coin" + + "cide con el patrón requerido.\x02Selección requerida\x02Seleccione una d" + + "e las opciones proporcionadas.\x02Se requiere una selección." -var ja_JPIndex = []uint32{ // 232 elements +var ja_JPIndex = []uint32{ // 228 elements // Entry 0 - 1F 0x00000000, 0x00000018, 0x00000034, 0x0000004f, 0x00000068, 0x0000007b, 0x00000091, 0x000000a7, @@ -581,65 +572,64 @@ var ja_JPIndex = []uint32{ // 232 elements 0x00000383, 0x00000393, 0x0000039a, 0x000003aa, 0x000003db, 0x00000406, 0x0000043c, 0x00000443, // Entry 20 - 3F - 0x00000459, 0x0000046f, 0x00000488, 0x0000048f, - 0x000004a2, 0x000004c4, 0x000004dd, 0x00000508, - 0x00000524, 0x00000552, 0x00000559, 0x00000569, - 0x00000576, 0x0000058f, 0x000005d0, 0x00000612, - 0x0000065b, 0x00000674, 0x000006a5, 0x000006c1, - 0x000006e5, 0x000006ec, 0x000006f3, 0x0000070c, - 0x0000071f, 0x0000072c, 0x00000733, 0x00000740, - 0x00000747, 0x00000754, 0x0000075e, 0x00000768, + 0x0000045c, 0x00000463, 0x00000476, 0x00000498, + 0x000004b1, 0x000004dc, 0x000004f8, 0x00000526, + 0x0000052d, 0x0000053d, 0x0000054a, 0x00000563, + 0x000005a4, 0x000005e6, 0x0000062f, 0x00000648, + 0x00000679, 0x00000695, 0x000006b9, 0x000006c0, + 0x000006c7, 0x000006e0, 0x000006f3, 0x00000700, + 0x00000707, 0x00000714, 0x0000071b, 0x00000728, + 0x00000732, 0x0000073c, 0x00000743, 0x00000756, // Entry 40 - 5F - 0x0000076f, 0x00000782, 0x00000789, 0x00000799, - 0x000007a6, 0x000007ad, 0x00000816, 0x00000829, - 0x00000845, 0x0000084f, 0x0000085c, 0x00000866, - 0x0000087c, 0x0000088c, 0x0000089c, 0x000008a3, - 0x0000090a, 0x00000917, 0x0000091e, 0x00000925, - 0x0000092f, 0x0000093c, 0x00000940, 0x00000947, - 0x00000957, 0x00000969, 0x0000097f, 0x00000992, - 0x00000999, 0x0000099b, 0x000009ae, 0x000009c7, + 0x0000075d, 0x0000076d, 0x0000077a, 0x00000781, + 0x000007ea, 0x000007fd, 0x00000819, 0x00000823, + 0x00000830, 0x0000083a, 0x00000850, 0x00000860, + 0x00000870, 0x00000877, 0x000008de, 0x000008eb, + 0x000008f2, 0x000008f9, 0x00000903, 0x00000910, + 0x00000914, 0x0000091b, 0x0000092b, 0x0000093d, + 0x00000953, 0x00000966, 0x0000096d, 0x0000096f, + 0x00000982, 0x0000099b, 0x000009ab, 0x000009ca, // Entry 60 - 7F - 0x000009d7, 0x000009f6, 0x00000a0c, 0x00000a13, - 0x00000a1a, 0x00000a27, 0x00000a31, 0x00000a50, - 0x00000a60, 0x00000a8e, 0x00000aa1, 0x00000ad3, - 0x00000ada, 0x00000ae4, 0x00000afd, 0x00000b13, - 0x00000b29, 0x00000b48, 0x00000b73, 0x00000b80, - 0x00000b9c, 0x00000bef, 0x00000c11, 0x00000c3f, - 0x00000c55, 0x00000c73, 0x00000c80, 0x00000c8a, - 0x00000c91, 0x00000c9e, 0x00000ca8, 0x00000cc1, + 0x000009e0, 0x000009e7, 0x000009ee, 0x000009fb, + 0x00000a05, 0x00000a24, 0x00000a34, 0x00000a62, + 0x00000a75, 0x00000aa7, 0x00000aae, 0x00000ab8, + 0x00000ad1, 0x00000ae7, 0x00000afd, 0x00000b1c, + 0x00000b47, 0x00000b54, 0x00000b70, 0x00000bc3, + 0x00000be5, 0x00000c13, 0x00000c29, 0x00000c47, + 0x00000c54, 0x00000c5e, 0x00000c65, 0x00000c72, + 0x00000c7c, 0x00000c95, 0x00000cab, 0x00000cc1, // Entry 80 - 9F - 0x00000cd7, 0x00000ced, 0x00000d06, 0x00000d1c, - 0x00000d2c, 0x00000d3f, 0x00000d58, 0x00000d6f, - 0x00000d85, 0x00000d9b, 0x00000dae, 0x00000db8, - 0x00000dc2, 0x00000dd2, 0x00000dd6, 0x00000de0, - 0x00000de7, 0x00000df9, 0x00000e0e, 0x00000e27, - 0x00000e37, 0x00000e4a, 0x00000e56, 0x00000e6b, - 0x00000e7e, 0x00000ebe, 0x00000edd, 0x00000eea, - 0x00000ef7, 0x00000f0d, 0x00000f1a, 0x00000f24, + 0x00000cda, 0x00000cf0, 0x00000d00, 0x00000d13, + 0x00000d2c, 0x00000d43, 0x00000d59, 0x00000d6f, + 0x00000d82, 0x00000d8c, 0x00000d96, 0x00000da6, + 0x00000daa, 0x00000db4, 0x00000dbb, 0x00000dcd, + 0x00000de2, 0x00000dfb, 0x00000e0b, 0x00000e1e, + 0x00000e2a, 0x00000e3f, 0x00000e52, 0x00000e92, + 0x00000eb1, 0x00000ebe, 0x00000ecb, 0x00000ee1, + 0x00000eee, 0x00000ef8, 0x00000f0b, 0x00000f15, // Entry A0 - BF - 0x00000f37, 0x00000f41, 0x00000f54, 0x00000f8e, - 0x00000fb6, 0x00000fea, 0x00001006, 0x0000100d, - 0x0000101d, 0x0000102d, 0x00001034, 0x0000103b, - 0x00001042, 0x00001049, 0x00001062, 0x0000106c, - 0x00001076, 0x00001083, 0x0000108d, 0x0000109a, - 0x000010a1, 0x000010ab, 0x000010bb, 0x000010c8, - 0x000010e4, 0x000011a0, 0x000011cb, 0x000011ea, - 0x000011f1, 0x0000120a, 0x00001262, 0x00001278, + 0x00000f28, 0x00000f62, 0x00000f8a, 0x00000fbe, + 0x00000fda, 0x00000fe1, 0x00000ff1, 0x00001001, + 0x00001008, 0x0000100f, 0x00001016, 0x0000101d, + 0x00001036, 0x00001040, 0x0000104a, 0x00001057, + 0x00001061, 0x0000106e, 0x00001075, 0x0000107f, + 0x0000108f, 0x0000109c, 0x000010b8, 0x00001174, + 0x0000119f, 0x000011be, 0x000011c5, 0x000011de, + 0x00001236, 0x0000124c, 0x0000125c, 0x000012eb, // Entry C0 - DF - 0x00001288, 0x00001317, 0x00001330, 0x0000135b, - 0x00001380, 0x0000138a, 0x000013b8, 0x000013c8, - 0x000013d5, 0x000013e8, 0x00001407, 0x00001425, - 0x0000142c, 0x0000143c, 0x00001449, 0x00001459, - 0x0000147e, 0x000014a6, 0x000014dd, 0x00001505, - 0x00001548, 0x0000154f, 0x0000156b, 0x0000157f, - 0x000015de, 0x000015fa, 0x00001601, 0x00001635, - 0x00001648, 0x00001667, 0x000016c2, 0x000016e4, + 0x00001304, 0x0000132f, 0x00001354, 0x0000135e, + 0x0000138c, 0x0000139c, 0x000013a9, 0x000013bc, + 0x000013db, 0x000013f9, 0x00001400, 0x00001410, + 0x00001435, 0x0000145d, 0x00001494, 0x000014bc, + 0x000014ff, 0x00001506, 0x00001522, 0x00001536, + 0x00001595, 0x000015b1, 0x000015b8, 0x000015ec, + 0x000015ff, 0x0000161e, 0x00001679, 0x0000169b, + 0x000016e5, 0x000016f2, 0x00001735, 0x00001776, // Entry E0 - FF - 0x0000172e, 0x0000173b, 0x0000177e, 0x000017bf, - 0x000017fc, 0x00001809, 0x00001855, 0x0000186e, -} // Size: 952 bytes + 0x000017b3, 0x000017c0, 0x0000180c, 0x00001825, +} // Size: 936 bytes -const ja_JPData string = "" + // Size: 6254 bytes +const ja_JPData string = "" + // Size: 6181 bytes "\x02バージョン:%[1]s\x02FRP バージョン:%[1]s\x02コンパイル日:%[1]s\x02すべてのファイル\x02設定ファイル" + "\x02証明書ファイル\x02秘密鍵ファイル\x02ログファイル\x02許容範囲外の数値\x02%[1]d より大きい数値を入力してください。" + "\x02パスワードの不一致\x02もう一度確認してください。\x02数字ではありません\x02有効な数値を入力してください。\x02新しいバージ" + @@ -647,47 +637,47 @@ const ja_JPData string = "" + // Size: 6254 bytes "トページにアクセスしてください:\x02FRP 設定ドキュメントについては、FRP プロジェクトページにアクセスしてください:\x02ソフト" + "ウェアアップデートの確認中にエラーが発生しました。\x02現在、利用可能なアップデートはありません。\x02OK\x02キャンセル\x02設" + "定\x02新しい設定\x02ファイルから設定をインポートする\x02設定はすでに削除されています\x02設定「%[1]s」は既に削除されてい" + - "ます。\x02編集\x02ファイルを開く\x02フォルダで見て\x02コピーを作成する\x02全て\x02共通設定のみ\x02ファイルからイ" + - "ンポート\x02URLからインポート\x02クリップボードからインポート\x02共有リンクをコピー\x02すべての設定をZIPにエクスポート" + - "\x02削除\x02新しい設定\x02手動設定\x02設定のインポート\x14\x02\x80\x01\x00;\x02%[2]d 中の %[1" + - "]d 設定をインポートしました。\x02\x22%[1]s\x22 という名前の別の設定が既に存在します。\x02ファイル \x22%[1]s" + - "\x22 は有効なZIPファイルではありません。\x02設定 \x22%[1]s\x22 を削除\x02本当に設定 \x22%[1]s\x22 " + - "を削除しますか?\x02新しいクライアント\x02クライアントの編集 - %[1]s\x02基本\x02名前\x02サーバーアドレス\x02" + - "サーバポート\x02ユーザー\x02認証\x02認証方法\x02なし\x02トークン\x02秘密鍵\x02受信者\x02範囲\x02トークン" + - "のURL\x02認証\x02接続を維持\x02作業接続\x02ログ\x02* ログを記録せず、元のログファイルを削除するには、空白のままにし" + - "ます。\x02ログファイル\x02ログファイルを選択\x02レベル\x02最大日数\x02管理者\x02管理者アドレス\x02管理ポート" + - "\x02パスワード\x02資産\x02管理サーバーがリソースをロードするローカルディレクトリを選択します。\x02自動削除\x02絶対\x02相" + - "対\x02削除日\x02日を削除\x02日\x02接続\x02プロトコル\x02HTTP プロキシ\x02接続プールの数\x02ハートビート" + - "\x02間隔\x02s\x02タイムアウト\x02接続タイムアウト\x02接続を維持\x02アイドルタイムアウト\x02最大ストリーム\x02有" + - "効\x02無効\x02ホスト名\x02証明書\x02証明書ファイルを選択\x02証明書キー\x02証明書キーファイルを選択します\x02信頼" + - "できる CA\x02信頼できる CA ファイルを選択します\x02高度\x02多重化\x02多重化接続を維持\x02送信元アドレス\x02別" + - "のオプション\x02ログイン失敗後に終了\x02起動時に自動起動を無効にする\x02カスタム\x02カスタムオプション\x02* FRP 設" + - "定ファイルの [common] セクションを参照してください。\x02設定はすでに存在します\x02設定名 \x22%[1]s\x22 は既" + - "に存在します。\x02新しいプロキシ\x02プロキシの編集 - %[1]s\x02ランダム\x02タイプ\x02役割\x02ビジター\x02" + - "秘密鍵\x02ローカルアドレス\x02ローカルポート\x02リモートポート\x02バインドアドレス\x02バインドポート\x02サーバー名" + - "\x02サブドメイン\x02カスタムドメイン\x02URL ルーティング\x02マルチプレクサ\x02ルートユーザー\x02クライアント\x02" + - "サーバ\x02帯域幅\x02プロキシ版\x02空\x02暗号化\x02圧縮\x02HTTP ユーザー\x02HTTP パスワード\x02ホス" + - "トの書き換え\x02プラグイン\x02プラグイン名\x02Unix パス\x02Unix パスを選択\x02ローカルパス\x02ディレクトリ" + - "リストのフォルダを選択します。\x02プレフィックスを削除\x02負荷平衡\x02グループ\x02グループ秘密鍵\x02健康診断\x02タイ" + - "プ\x02タイムアウト\x02失敗数\x02チェック間隔\x02* FRP 対応のパラメータをご参照ください。\x02プロキシはすでに存在し" + - "ます\x02プロキシ名 \x22%[1]s\x22 は既に存在します。\x02ログフォルダを開く\x02最新\x02わからない\x02ランニ" + - "ング\x02停止\x02起動\x02停止\x02状態\x02リモートアドレス\x02コピー\x02始める\x02サービス\x02止まる" + - "\x02フォルダ\x02追加\x02ポート\x02ポート開放\x02環境設定\x02マスターパスワード\x02パスワードを設定して、このプログラ" + - "ムへのアクセスを制限できます。\x0a次回このプログラムを使用するときに入力するよう求められます。\x02マスターパスワードを使用する" + - "\x02パスワードを変更する\x02言語\x02現在の表示言語は\x02変更を適用するには、プログラムを再起動する必要があります。\x02言語を" + - "選択する\x02デフォルト\x02新しい設定を作成するときのデフォルト値を定義します。\x0aここでの値は、既存の設定には影響しません。" + - "\x02デフォルトの設定\x02パスワードが解除されました。\x02新しいマスターパスワード\x02再入力\x02パスワードが設定されています。" + - "\x02ログレベル\x02ログ保持\x02クイック追加\x02リモートデスクトップ\x02HTTP ファイルサーバー\x02有効\x02設定を開" + - "く\x02直接編集\x02ドメイン名\x02アクセスアドレスのコピー\x02プロキシ \x22%[1]s\x22 を削除します\x02本当に" + - "プロキシ \x22%[1]s\x22 を削除しますか?\x02プロキシ \x22%[1]s\x22 を無効にする\x02プロキシ \x22%" + - "[1]s\x22 を無効にしてもよろしいですか?\x02無効\x02パッシブポート範囲\x02FRP マネージャ\x02* バッチインポートをサ" + - "ポートします、1行に1つのリンクがあります。\x02自動的に名前を変更\x02準備\x02正しいURLリストを入力してください。\x02ダウ" + - "ンロード\x02パスワードを入力する\x02%[1]s を操作するには、管理パスワードを入力する必要があります。\x02管理者パスワードを入" + - "力\x02パスワードが正しくありません。 パスワード再入力。\x02無効入力\x02%.[1]f から %.[2]f までの数字を入力してく" + - "ださい。\x02%[1]s から %[2]s までの数値を入力してください。\x02テキストが必要なパターンと一致しません。\x02選択必須" + - "\x02提供されたオプションのいずれかを選択してください。\x02選択が必要です。" + "ます。\x02編集\x02コピーを作成する\x02全て\x02共通設定のみ\x02ファイルからインポート\x02URLからインポート\x02" + + "クリップボードからインポート\x02共有リンクをコピー\x02すべての設定をZIPにエクスポート\x02削除\x02新しい設定\x02手動設" + + "定\x02設定のインポート\x14\x02\x80\x01\x00;\x02%[2]d 中の %[1]d 設定をインポートしました。\x02" + + "\x22%[1]s\x22 という名前の別の設定が既に存在します。\x02ファイル \x22%[1]s\x22 は有効なZIPファイルではありま" + + "せん。\x02設定 \x22%[1]s\x22 を削除\x02本当に設定 \x22%[1]s\x22 を削除しますか?\x02新しいクライア" + + "ント\x02クライアントの編集 - %[1]s\x02基本\x02名前\x02サーバーアドレス\x02サーバポート\x02ユーザー\x02認" + + "証\x02認証方法\x02なし\x02トークン\x02秘密鍵\x02受信者\x02範囲\x02トークンのURL\x02認証\x02接続を維持" + + "\x02作業接続\x02ログ\x02* ログを記録せず、元のログファイルを削除するには、空白のままにします。\x02ログファイル\x02ログファ" + + "イルを選択\x02レベル\x02最大日数\x02管理者\x02管理者アドレス\x02管理ポート\x02パスワード\x02資産\x02管理サー" + + "バーがリソースをロードするローカルディレクトリを選択します。\x02自動削除\x02絶対\x02相対\x02削除日\x02日を削除\x02日" + + "\x02接続\x02プロトコル\x02HTTP プロキシ\x02接続プールの数\x02ハートビート\x02間隔\x02s\x02タイムアウト" + + "\x02接続タイムアウト\x02接続を維持\x02アイドルタイムアウト\x02最大ストリーム\x02有効\x02無効\x02ホスト名\x02証明" + + "書\x02証明書ファイルを選択\x02証明書キー\x02証明書キーファイルを選択します\x02信頼できる CA\x02信頼できる CA ファ" + + "イルを選択します\x02高度\x02多重化\x02多重化接続を維持\x02送信元アドレス\x02別のオプション\x02ログイン失敗後に終了" + + "\x02起動時に自動起動を無効にする\x02カスタム\x02カスタムオプション\x02* FRP 設定ファイルの [common] セクションを" + + "参照してください。\x02設定はすでに存在します\x02設定名 \x22%[1]s\x22 は既に存在します。\x02新しいプロキシ\x02" + + "プロキシの編集 - %[1]s\x02ランダム\x02タイプ\x02役割\x02ビジター\x02秘密鍵\x02ローカルアドレス\x02ローカ" + + "ルポート\x02リモートポート\x02バインドアドレス\x02バインドポート\x02サーバー名\x02サブドメイン\x02カスタムドメイン" + + "\x02URL ルーティング\x02マルチプレクサ\x02ルートユーザー\x02クライアント\x02サーバ\x02帯域幅\x02プロキシ版" + + "\x02空\x02暗号化\x02圧縮\x02HTTP ユーザー\x02HTTP パスワード\x02ホストの書き換え\x02プラグイン\x02プラ" + + "グイン名\x02Unix パス\x02Unix パスを選択\x02ローカルパス\x02ディレクトリリストのフォルダを選択します。\x02プレ" + + "フィックスを削除\x02負荷平衡\x02グループ\x02グループ秘密鍵\x02健康診断\x02タイプ\x02タイムアウト\x02失敗数" + + "\x02チェック間隔\x02* FRP 対応のパラメータをご参照ください。\x02プロキシはすでに存在します\x02プロキシ名 \x22%[1]" + + "s\x22 は既に存在します。\x02ログフォルダを開く\x02最新\x02わからない\x02ランニング\x02停止\x02起動\x02停止" + + "\x02状態\x02リモートアドレス\x02コピー\x02始める\x02サービス\x02止まる\x02フォルダ\x02追加\x02ポート\x02" + + "ポート開放\x02環境設定\x02マスターパスワード\x02パスワードを設定して、このプログラムへのアクセスを制限できます。\x0a次回この" + + "プログラムを使用するときに入力するよう求められます。\x02マスターパスワードを使用する\x02パスワードを変更する\x02言語\x02現在" + + "の表示言語は\x02変更を適用するには、プログラムを再起動する必要があります。\x02言語を選択する\x02デフォルト\x02新しい設定を作" + + "成するときのデフォルト値を定義します。\x0aここでの値は、既存の設定には影響しません。\x02デフォルトの設定\x02パスワードが解除され" + + "ました。\x02新しいマスターパスワード\x02再入力\x02パスワードが設定されています。\x02ログレベル\x02ログ保持\x02クイッ" + + "ク追加\x02リモートデスクトップ\x02HTTP ファイルサーバー\x02有効\x02ドメイン名\x02アクセスアドレスのコピー\x02プ" + + "ロキシ \x22%[1]s\x22 を削除します\x02本当にプロキシ \x22%[1]s\x22 を削除しますか?\x02プロキシ " + + "\x22%[1]s\x22 を無効にする\x02プロキシ \x22%[1]s\x22 を無効にしてもよろしいですか?\x02無効\x02パッシブ" + + "ポート範囲\x02FRP マネージャ\x02* バッチインポートをサポートします、1行に1つのリンクがあります。\x02自動的に名前を変更" + + "\x02準備\x02正しいURLリストを入力してください。\x02ダウンロード\x02パスワードを入力する\x02%[1]s を操作するには、管" + + "理パスワードを入力する必要があります。\x02管理者パスワードを入力\x02パスワードが正しくありません。 パスワード再入力。\x02無効入" + + "力\x02%.[1]f から %.[2]f までの数字を入力してください。\x02%[1]s から %[2]s までの数値を入力してください" + + "。\x02テキストが必要なパターンと一致しません。\x02選択必須\x02提供されたオプションのいずれかを選択してください。\x02選択が必" + + "要です。" -var ko_KRIndex = []uint32{ // 232 elements +var ko_KRIndex = []uint32{ // 228 elements // Entry 0 - 1F 0x00000000, 0x0000000e, 0x00000020, 0x00000035, 0x00000043, 0x00000051, 0x00000062, 0x00000070, @@ -698,111 +688,110 @@ var ko_KRIndex = []uint32{ // 232 elements 0x000002d3, 0x000002da, 0x000002e1, 0x000002ec, 0x0000030d, 0x00000328, 0x00000358, 0x00000365, // Entry 20 - 3F - 0x00000373, 0x00000384, 0x00000395, 0x0000039c, - 0x000003b4, 0x000003ce, 0x000003e5, 0x00000405, - 0x0000041a, 0x00000443, 0x0000044a, 0x0000045b, - 0x00000469, 0x0000047d, 0x000004b1, 0x000004ed, - 0x00000525, 0x0000053b, 0x00000567, 0x0000057b, - 0x0000059a, 0x000005a7, 0x000005ae, 0x000005bc, - 0x000005ca, 0x000005d4, 0x000005db, 0x000005e9, - 0x000005f0, 0x000005f7, 0x00000602, 0x00000610, + 0x00000376, 0x0000037d, 0x00000395, 0x000003af, + 0x000003c6, 0x000003e6, 0x000003fb, 0x00000424, + 0x0000042b, 0x0000043c, 0x0000044a, 0x0000045e, + 0x00000492, 0x000004ce, 0x00000506, 0x0000051c, + 0x00000548, 0x0000055c, 0x0000057b, 0x00000588, + 0x0000058f, 0x0000059d, 0x000005ab, 0x000005b5, + 0x000005bc, 0x000005ca, 0x000005d1, 0x000005d8, + 0x000005e3, 0x000005f1, 0x000005f8, 0x00000603, // Entry 40 - 5F - 0x00000617, 0x00000622, 0x00000629, 0x00000634, - 0x00000642, 0x0000064c, 0x000006a6, 0x000006b4, - 0x000006c9, 0x000006d0, 0x000006de, 0x000006e8, - 0x000006f9, 0x00000707, 0x00000714, 0x0000071b, - 0x0000076e, 0x0000077c, 0x00000783, 0x0000078d, - 0x0000079b, 0x000007a6, 0x000007aa, 0x000007b1, - 0x000007b8, 0x000007c7, 0x000007d2, 0x000007df, - 0x000007e6, 0x000007e8, 0x000007f5, 0x0000080a, + 0x0000060a, 0x00000615, 0x00000623, 0x0000062d, + 0x00000687, 0x00000695, 0x000006aa, 0x000006b1, + 0x000006bf, 0x000006c9, 0x000006da, 0x000006e8, + 0x000006f5, 0x000006fc, 0x0000074f, 0x0000075d, + 0x00000764, 0x0000076e, 0x0000077c, 0x00000787, + 0x0000078b, 0x00000792, 0x00000799, 0x000007a8, + 0x000007b3, 0x000007c0, 0x000007c7, 0x000007c9, + 0x000007d6, 0x000007eb, 0x000007f2, 0x00000807, // Entry 60 - 7F - 0x00000811, 0x00000826, 0x00000837, 0x0000083e, - 0x00000845, 0x00000856, 0x00000860, 0x00000878, - 0x00000886, 0x000008a2, 0x000008ba, 0x000008e0, - 0x000008ea, 0x000008f4, 0x00000909, 0x00000917, - 0x00000925, 0x00000941, 0x00000967, 0x0000096e, - 0x00000986, 0x000009c1, 0x000009e0, 0x00000a17, - 0x00000a25, 0x00000a3e, 0x00000a4b, 0x00000a52, - 0x00000a59, 0x00000a63, 0x00000a6e, 0x00000a7c, + 0x00000818, 0x0000081f, 0x00000826, 0x00000837, + 0x00000841, 0x00000859, 0x00000867, 0x00000883, + 0x0000089b, 0x000008c1, 0x000008cb, 0x000008d5, + 0x000008ea, 0x000008f8, 0x00000906, 0x00000922, + 0x00000948, 0x0000094f, 0x00000967, 0x000009a2, + 0x000009c1, 0x000009f8, 0x00000a06, 0x00000a1f, + 0x00000a2c, 0x00000a33, 0x00000a3a, 0x00000a44, + 0x00000a4f, 0x00000a5d, 0x00000a6b, 0x00000a79, // Entry 80 - 9F - 0x00000a8a, 0x00000a98, 0x00000aa9, 0x00000aba, - 0x00000ac8, 0x00000ad9, 0x00000af4, 0x00000b02, - 0x00000b12, 0x00000b23, 0x00000b33, 0x00000b3a, - 0x00000b44, 0x00000b55, 0x00000b63, 0x00000b6d, - 0x00000b74, 0x00000b83, 0x00000b95, 0x00000ba9, - 0x00000bb6, 0x00000bca, 0x00000bd6, 0x00000be9, - 0x00000bf7, 0x00000c33, 0x00000c47, 0x00000c55, - 0x00000c5c, 0x00000c6e, 0x00000c7c, 0x00000c83, + 0x00000a8a, 0x00000a9b, 0x00000aa9, 0x00000aba, + 0x00000ad5, 0x00000ae3, 0x00000af3, 0x00000b04, + 0x00000b14, 0x00000b1b, 0x00000b25, 0x00000b36, + 0x00000b44, 0x00000b4e, 0x00000b55, 0x00000b64, + 0x00000b76, 0x00000b8a, 0x00000b97, 0x00000bab, + 0x00000bb7, 0x00000bca, 0x00000bd8, 0x00000c14, + 0x00000c28, 0x00000c36, 0x00000c3d, 0x00000c4f, + 0x00000c5d, 0x00000c64, 0x00000c72, 0x00000c80, // Entry A0 - BF - 0x00000c91, 0x00000c9f, 0x00000ca6, 0x00000ce4, - 0x00000d06, 0x00000d40, 0x00000d55, 0x00000d5c, - 0x00000d70, 0x00000d7a, 0x00000d84, 0x00000d8b, - 0x00000d92, 0x00000d99, 0x00000da7, 0x00000dae, - 0x00000db5, 0x00000dbf, 0x00000dc6, 0x00000dda, - 0x00000de7, 0x00000dee, 0x00000dfc, 0x00000e03, - 0x00000e1a, 0x00000ed6, 0x00000ef4, 0x00000f08, - 0x00000f0f, 0x00000f27, 0x00000f73, 0x00000f81, + 0x00000c87, 0x00000cc5, 0x00000ce7, 0x00000d21, + 0x00000d36, 0x00000d3d, 0x00000d51, 0x00000d5b, + 0x00000d65, 0x00000d6c, 0x00000d73, 0x00000d7a, + 0x00000d88, 0x00000d8f, 0x00000d96, 0x00000da0, + 0x00000da7, 0x00000dbb, 0x00000dc8, 0x00000dcf, + 0x00000ddd, 0x00000de4, 0x00000dfb, 0x00000eb7, + 0x00000ed5, 0x00000ee9, 0x00000ef0, 0x00000f08, + 0x00000f54, 0x00000f62, 0x00000f6c, 0x00000fe4, // Entry C0 - DF - 0x00000f8b, 0x00001003, 0x0000101a, 0x0000103b, - 0x00001056, 0x0000106d, 0x00001098, 0x000010a6, - 0x000010b4, 0x000010c2, 0x000010d6, 0x000010e9, - 0x000010f0, 0x000010fe, 0x0000110c, 0x00001116, - 0x0000112e, 0x00001147, 0x00001176, 0x00001195, - 0x000011ca, 0x000011d1, 0x000011e9, 0x000011f7, - 0x00001240, 0x0000125e, 0x0000126c, 0x00001295, - 0x000012a2, 0x000012b3, 0x000012fa, 0x00001315, + 0x00000ffb, 0x0000101c, 0x00001037, 0x0000104e, + 0x00001079, 0x00001087, 0x00001095, 0x000010a3, + 0x000010b7, 0x000010ca, 0x000010d1, 0x000010db, + 0x000010f3, 0x0000110c, 0x0000113b, 0x0000115a, + 0x0000118f, 0x00001196, 0x000011ae, 0x000011bc, + 0x00001205, 0x00001223, 0x00001231, 0x0000125a, + 0x00001267, 0x00001278, 0x000012bf, 0x000012da, + 0x0000132d, 0x0000133e, 0x00001376, 0x000013b0, // Entry E0 - FF - 0x00001368, 0x00001379, 0x000013b1, 0x000013eb, - 0x00001424, 0x00001432, 0x00001465, 0x00001480, -} // Size: 952 bytes + 0x000013e9, 0x000013f7, 0x0000142a, 0x00001445, +} // Size: 936 bytes -const ko_KRData string = "" + // Size: 5248 bytes +const ko_KRData string = "" + // Size: 5189 bytes "\x02버전: %[1]s\x02FRP 버전: %[1]s\x02빌드 날짜: %[1]s\x02모든 파일\x02구성 파일\x02인증서 " + "파일\x02열쇠 파일\x02로그 파일\x02허용 범위를 벗어난 숫자\x02%[1]d보다 큰 숫자를 입력하세요.\x02암호 불일" + "치\x02확인하고 다시 시도해 주세요.\x02숫자가 아님\x02유효한 숫자를 입력하세요.\x02새로운 버전!\x02에 대한" + "\x02업데이트 다운로드\x02업데이트 확인\x02업데이트 확인\x02의견을 보거나 버그를 보고하려면 프로젝트 페이지를 방문하세요" + ":\x02FRP 구성 문서를 보려면 FRP 프로젝트 페이지를 방문하십시오:\x02소프트웨어 업데이트를 확인하는 동안 오류가 발생했" + "습니다.\x02현재 사용 가능한 업데이트가 없습니다.\x02확인\x02취소\x02구성\x02새 구성\x02파일에서 구성 가져오" + - "기\x02구성이 이미 삭제됨\x02\x22%[1]s\x22 구성이 이미 제거되었습니다.\x02편집하다\x02파일 열기\x02폴" + - "더에 표시\x02복사본 생성\x02모두\x02일반 구성만 해당\x02파일에서 가져오기\x02URL에서 가져오기\x02클립보드에" + - "서 가져오기\x02공유 링크 복사\x02모든 구성을 ZIP 으로 내보내기\x02삭제\x02구성 만들기\x02수동 설정\x02구" + - "성 가져오기\x02%[2]d개 구성 중 %[1]d개를 가져왔습니다.\x02이름이 \x22%[1]s\x22 인 다른 구성이 이미" + - " 있습니다.\x02\x22%[1]s\x22 파일은 유효한 ZIP 파일이 아닙니다.\x02\x22%[1]s\x22 구성 삭제\x02" + - "\x22%[1]s\x22 구성을 삭제하시겠습니까?\x02새 클라이언트\x02클라이언트 편집 - %[1]s\x02기초적인\x02이름" + - "\x02서버 주소\x02서버 포트\x02사용자\x02인증\x02인증 방법\x02없음\x02토큰\x02비밀 키\x02받는 사람" + - "\x02범위\x02토큰 URL\x02입증\x02대기 중\x02작동 연결\x02통나무\x02* 로그를 기록하지 않고 원본 로그 파일" + - "을 삭제하려면 비워 둡니다.\x02로그 파일\x02로그 파일 선택\x02수준\x02최대 일수\x02관리자\x02관리자 주소" + - "\x02관리 포트\x02비밀번호\x02자산\x02관리 서버가 리소스를 로드할 로컬 디렉토리를 선택하십시오.\x02자동 삭제\x02" + - "절대\x02상대적\x02날짜 삭제\x02삭제 일\x02날\x02연결\x02규약\x02HTTP 프록시\x02연결 수\x02심장박" + - "동\x02간격\x02s\x02타임아웃\x02연결 시간 초과\x02유지\x02유휴 시간 초과\x02최대 스트림\x02켜다\x02" + - "폐쇄\x02호스트 이름\x02자격증\x02인증서 파일 선택\x02인증서 키\x02인증서 키 파일 선택\x02신뢰할 수 있는 C" + - "A\x02신뢰할 수 있는 CA 파일 선택\x02고급의\x02다중화\x02다중화 대기 중\x02소스 주소\x02다른 옵션\x02로그" + - "인 실패 후 종료\x02부팅 시 자동 시작 비활성화\x02관습\x02사용자 지정 옵션\x02* FRP 설정 파일의 [commo" + - "n] 부분을 참고하세요.\x02구성이 이미 있습니다.\x02구성 이름 \x22%[1]s\x22 이(가) 이미 존재합니다.\x02새" + - " 프록시\x02프록시 편집 - %[1]s\x02무작위의\x02유형\x02역할\x02방문객\x02비밀 키\x02지역 주소\x02로컬" + - " 포트\x02원격 포트\x02바인드 주소\x02바인드 포트\x02서버 이름\x02하위 도메인\x02사용자 정의 도메인\x02URL" + - " 라우팅\x02멀티플렉서\x02경로 사용자\x02클라이언트\x02서버\x02대역폭\x02프록시 버전\x02비어 있는\x02암호화" + - "\x02압축\x02HTTP 사용자\x02HTTP 비밀번호\x02호스트 재작성\x02플러그인\x02플러그인 이름\x02Unix 경로" + - "\x02선택 Unix 경로\x02로컬 경로\x02디렉토리 목록에 대한 폴더를 선택하십시오.\x02스트립 접두사\x02부하 분산" + - "\x02그룹\x02그룹 비밀 키\x02건강 체크\x02유형\x02시간 초과\x02실패 횟수\x02간격\x02* FRP 에서 지원하" + - "는 매개변수를 참조하십시오.\x02프록시가 이미 있습니다.\x02프록시 이름 \x22%[1]s\x22 이(가) 이미 존재합니다" + - ".\x02로그 폴더 열기\x02최신\x02알려지지 않은\x02달리기\x02중지됨\x02시작\x02멎는\x02상태\x02원격 주소" + - "\x02복사\x02시작\x02서비스\x02중지\x02로컬 디렉토리\x02추가하다\x02포트\x02오픈 포트\x02옵션\x02마스터" + - " 비밀번호\x02이 프로그램에 대한 액세스를 제한하기 위해 암호를 설정할 수 있습니다.\x0a다음에 이 프로그램을 사용할 때 입력" + - "하라는 메시지가 표시됩니다.\x02마스터 비밀번호 사용\x02비밀번호 변경\x02언어\x02현재 표시 언어는\x02수정 사항을" + - " 적용하려면 프로그램을 재시작해야 합니다.\x02언어 선택\x02기본값\x02새 구성을 만들 때 기본값을 정의합니다.\x0a여기의" + - " 값은 기존 구성에 영향을 주지 않습니다.\x02기본값으로 설정\x02암호가 제거되었습니다.\x02새 마스터 비밀번호\x02비밀번" + - "호 재입력\x02비밀번호가 설정되어 있습니다.\x02로그 수준\x02로그 보존\x02빠른 추가\x02원격 데스크탑\x02HTT" + - "P 파일 서버\x02켜다\x02구성 열기\x02직접 편집\x02도메인\x02액세스 주소 복사\x02프록시 \x22%[1]s\x22" + - " 삭제\x02\x22%[1]s\x22 프록시를 삭제하시겠습니까?\x02프록시 \x22%[1]s\x22 비활성화\x02\x22%[1" + - "]s\x22 프록시를 비활성화하시겠습니까?\x02폐쇄\x02패시브 포트 범위\x02FRP 관리자\x02* 한 줄에 하나의 링크로 " + - "일괄 가져오기를 지원합니다.\x02자동으로 이름 바꾸기\x02준비가 된\x02올바른 URL 목록을 입력하세요.\x02다운로드" + - "\x02암호를 입력\x02%[1]s을(를) 작동하려면 관리 암호를 입력해야 합니다.\x02관리 비밀번호 입력\x02비밀번호가 올바" + - "르지 않습니다. 비밀번호를 다시 입력하세요.\x02잘못된 입력\x02%.[1]f에서 %.[2]f까지의 숫자를 입력하세요." + - "\x02%[1]s에서 %[2]s 사이의 숫자를 입력하십시오.\x02텍스트가 필수 패턴과 일치하지 않습니다.\x02선택 필수\x02" + - "제공된 옵션 중 하나를 선택하십시오.\x02선택이 필요합니다." + "기\x02구성이 이미 삭제됨\x02\x22%[1]s\x22 구성이 이미 제거되었습니다.\x02편집하다\x02복사본 생성\x02" + + "모두\x02일반 구성만 해당\x02파일에서 가져오기\x02URL에서 가져오기\x02클립보드에서 가져오기\x02공유 링크 복사" + + "\x02모든 구성을 ZIP 으로 내보내기\x02삭제\x02구성 만들기\x02수동 설정\x02구성 가져오기\x02%[2]d개 구성 " + + "중 %[1]d개를 가져왔습니다.\x02이름이 \x22%[1]s\x22 인 다른 구성이 이미 있습니다.\x02\x22%[1]s" + + "\x22 파일은 유효한 ZIP 파일이 아닙니다.\x02\x22%[1]s\x22 구성 삭제\x02\x22%[1]s\x22 구성을 삭" + + "제하시겠습니까?\x02새 클라이언트\x02클라이언트 편집 - %[1]s\x02기초적인\x02이름\x02서버 주소\x02서버 포" + + "트\x02사용자\x02인증\x02인증 방법\x02없음\x02토큰\x02비밀 키\x02받는 사람\x02범위\x02토큰 URL" + + "\x02입증\x02대기 중\x02작동 연결\x02통나무\x02* 로그를 기록하지 않고 원본 로그 파일을 삭제하려면 비워 둡니다." + + "\x02로그 파일\x02로그 파일 선택\x02수준\x02최대 일수\x02관리자\x02관리자 주소\x02관리 포트\x02비밀번호" + + "\x02자산\x02관리 서버가 리소스를 로드할 로컬 디렉토리를 선택하십시오.\x02자동 삭제\x02절대\x02상대적\x02날짜 삭" + + "제\x02삭제 일\x02날\x02연결\x02규약\x02HTTP 프록시\x02연결 수\x02심장박동\x02간격\x02s\x02타" + + "임아웃\x02연결 시간 초과\x02유지\x02유휴 시간 초과\x02최대 스트림\x02켜다\x02폐쇄\x02호스트 이름\x02자" + + "격증\x02인증서 파일 선택\x02인증서 키\x02인증서 키 파일 선택\x02신뢰할 수 있는 CA\x02신뢰할 수 있는 CA " + + "파일 선택\x02고급의\x02다중화\x02다중화 대기 중\x02소스 주소\x02다른 옵션\x02로그인 실패 후 종료\x02부팅" + + " 시 자동 시작 비활성화\x02관습\x02사용자 지정 옵션\x02* FRP 설정 파일의 [common] 부분을 참고하세요.\x02" + + "구성이 이미 있습니다.\x02구성 이름 \x22%[1]s\x22 이(가) 이미 존재합니다.\x02새 프록시\x02프록시 편집 " + + "- %[1]s\x02무작위의\x02유형\x02역할\x02방문객\x02비밀 키\x02지역 주소\x02로컬 포트\x02원격 포트" + + "\x02바인드 주소\x02바인드 포트\x02서버 이름\x02하위 도메인\x02사용자 정의 도메인\x02URL 라우팅\x02멀티플렉" + + "서\x02경로 사용자\x02클라이언트\x02서버\x02대역폭\x02프록시 버전\x02비어 있는\x02암호화\x02압축\x02H" + + "TTP 사용자\x02HTTP 비밀번호\x02호스트 재작성\x02플러그인\x02플러그인 이름\x02Unix 경로\x02선택 Unix" + + " 경로\x02로컬 경로\x02디렉토리 목록에 대한 폴더를 선택하십시오.\x02스트립 접두사\x02부하 분산\x02그룹\x02그룹 " + + "비밀 키\x02건강 체크\x02유형\x02시간 초과\x02실패 횟수\x02간격\x02* FRP 에서 지원하는 매개변수를 참조하" + + "십시오.\x02프록시가 이미 있습니다.\x02프록시 이름 \x22%[1]s\x22 이(가) 이미 존재합니다.\x02로그 폴더 " + + "열기\x02최신\x02알려지지 않은\x02달리기\x02중지됨\x02시작\x02멎는\x02상태\x02원격 주소\x02복사\x02" + + "시작\x02서비스\x02중지\x02로컬 디렉토리\x02추가하다\x02포트\x02오픈 포트\x02옵션\x02마스터 비밀번호" + + "\x02이 프로그램에 대한 액세스를 제한하기 위해 암호를 설정할 수 있습니다.\x0a다음에 이 프로그램을 사용할 때 입력하라는 메" + + "시지가 표시됩니다.\x02마스터 비밀번호 사용\x02비밀번호 변경\x02언어\x02현재 표시 언어는\x02수정 사항을 적용하려" + + "면 프로그램을 재시작해야 합니다.\x02언어 선택\x02기본값\x02새 구성을 만들 때 기본값을 정의합니다.\x0a여기의 값은" + + " 기존 구성에 영향을 주지 않습니다.\x02기본값으로 설정\x02암호가 제거되었습니다.\x02새 마스터 비밀번호\x02비밀번호 재" + + "입력\x02비밀번호가 설정되어 있습니다.\x02로그 수준\x02로그 보존\x02빠른 추가\x02원격 데스크탑\x02HTTP 파" + + "일 서버\x02켜다\x02도메인\x02액세스 주소 복사\x02프록시 \x22%[1]s\x22 삭제\x02\x22%[1]s" + + "\x22 프록시를 삭제하시겠습니까?\x02프록시 \x22%[1]s\x22 비활성화\x02\x22%[1]s\x22 프록시를 비활성화" + + "하시겠습니까?\x02폐쇄\x02패시브 포트 범위\x02FRP 관리자\x02* 한 줄에 하나의 링크로 일괄 가져오기를 지원합니다" + + ".\x02자동으로 이름 바꾸기\x02준비가 된\x02올바른 URL 목록을 입력하세요.\x02다운로드\x02암호를 입력\x02%[1" + + "]s을(를) 작동하려면 관리 암호를 입력해야 합니다.\x02관리 비밀번호 입력\x02비밀번호가 올바르지 않습니다. 비밀번호를 다시" + + " 입력하세요.\x02잘못된 입력\x02%.[1]f에서 %.[2]f까지의 숫자를 입력하세요.\x02%[1]s에서 %[2]s 사이의 " + + "숫자를 입력하십시오.\x02텍스트가 필수 패턴과 일치하지 않습니다.\x02선택 필수\x02제공된 옵션 중 하나를 선택하십시오." + + "\x02선택이 필요합니다." -var zh_CNIndex = []uint32{ // 232 elements +var zh_CNIndex = []uint32{ // 228 elements // Entry 0 - 1F 0x00000000, 0x0000000f, 0x00000022, 0x00000037, 0x00000044, 0x00000051, 0x0000005e, 0x0000006b, @@ -813,101 +802,100 @@ var zh_CNIndex = []uint32{ // 232 elements 0x00000213, 0x0000021a, 0x00000221, 0x0000022e, 0x00000244, 0x00000254, 0x00000275, 0x0000027c, // Entry 20 - 3F - 0x00000289, 0x0000029f, 0x000002ac, 0x000002b3, - 0x000002c3, 0x000002d3, 0x000002e2, 0x000002f5, - 0x00000308, 0x0000032b, 0x00000332, 0x0000033f, - 0x0000034c, 0x00000359, 0x0000038c, 0x000003bc, - 0x000003ea, 0x00000402, 0x00000441, 0x00000451, - 0x00000469, 0x00000470, 0x00000477, 0x00000487, - 0x00000497, 0x000004a1, 0x000004a8, 0x000004b5, - 0x000004b9, 0x000004c0, 0x000004c7, 0x000004d1, + 0x00000289, 0x00000290, 0x000002a0, 0x000002b0, + 0x000002bf, 0x000002d2, 0x000002e5, 0x00000308, + 0x0000030f, 0x0000031c, 0x00000329, 0x00000336, + 0x00000369, 0x00000399, 0x000003c7, 0x000003df, + 0x0000041e, 0x0000042e, 0x00000446, 0x0000044d, + 0x00000454, 0x00000464, 0x00000474, 0x0000047e, + 0x00000485, 0x00000492, 0x00000496, 0x0000049d, + 0x000004a4, 0x000004ae, 0x000004b8, 0x000004c5, // Entry 40 - 5F - 0x000004db, 0x000004e8, 0x000004ef, 0x000004fc, - 0x00000509, 0x00000510, 0x0000054f, 0x0000055c, - 0x0000056f, 0x00000576, 0x00000583, 0x0000058a, - 0x00000597, 0x000005a4, 0x000005ab, 0x000005b8, - 0x000005ec, 0x000005f9, 0x00000600, 0x00000607, - 0x00000614, 0x00000621, 0x00000625, 0x0000062c, - 0x00000633, 0x0000063f, 0x0000064f, 0x00000656, - 0x0000065d, 0x00000661, 0x00000668, 0x00000675, + 0x000004cc, 0x000004d9, 0x000004e6, 0x000004ed, + 0x0000052c, 0x00000539, 0x0000054c, 0x00000553, + 0x00000560, 0x00000567, 0x00000574, 0x00000581, + 0x00000588, 0x00000595, 0x000005c9, 0x000005d6, + 0x000005dd, 0x000005e4, 0x000005f1, 0x000005fe, + 0x00000602, 0x00000609, 0x00000610, 0x0000061c, + 0x0000062c, 0x00000633, 0x0000063a, 0x0000063e, + 0x00000645, 0x00000652, 0x0000065f, 0x0000066c, // Entry 60 - 7F - 0x00000682, 0x0000068f, 0x0000069f, 0x000006a6, - 0x000006ad, 0x000006ba, 0x000006c7, 0x000006da, - 0x000006e7, 0x00000700, 0x00000710, 0x00000729, - 0x00000730, 0x0000073d, 0x0000074d, 0x0000075d, - 0x0000076a, 0x00000786, 0x0000079c, 0x000007a6, - 0x000007b6, 0x000007e6, 0x000007f6, 0x00000817, - 0x00000824, 0x00000839, 0x00000846, 0x0000084d, - 0x00000854, 0x0000085e, 0x00000865, 0x00000872, + 0x0000067c, 0x00000683, 0x0000068a, 0x00000697, + 0x000006a4, 0x000006b7, 0x000006c4, 0x000006dd, + 0x000006ed, 0x00000706, 0x0000070d, 0x0000071a, + 0x0000072a, 0x0000073a, 0x00000747, 0x00000763, + 0x00000779, 0x00000783, 0x00000793, 0x000007c3, + 0x000007d3, 0x000007f4, 0x00000801, 0x00000816, + 0x00000823, 0x0000082a, 0x00000831, 0x0000083b, + 0x00000842, 0x0000084f, 0x0000085c, 0x00000869, // Entry 80 - 9F - 0x0000087f, 0x0000088c, 0x00000899, 0x000008a6, - 0x000008b3, 0x000008bd, 0x000008cd, 0x000008d8, - 0x000008e2, 0x000008ef, 0x000008f9, 0x00000903, - 0x00000910, 0x0000091d, 0x00000921, 0x0000092e, - 0x0000093b, 0x00000947, 0x00000953, 0x0000095f, - 0x00000966, 0x00000973, 0x0000097f, 0x00000992, - 0x0000099f, 0x000009cd, 0x000009da, 0x000009e7, - 0x000009f4, 0x00000a01, 0x00000a0e, 0x00000a1b, + 0x00000876, 0x00000883, 0x00000890, 0x0000089a, + 0x000008aa, 0x000008b5, 0x000008bf, 0x000008cc, + 0x000008d6, 0x000008e0, 0x000008ed, 0x000008fa, + 0x000008fe, 0x0000090b, 0x00000918, 0x00000924, + 0x00000930, 0x0000093c, 0x00000943, 0x00000950, + 0x0000095c, 0x0000096f, 0x0000097c, 0x000009aa, + 0x000009b7, 0x000009c4, 0x000009d1, 0x000009de, + 0x000009eb, 0x000009f8, 0x00000a05, 0x00000a12, // Entry A0 - BF - 0x00000a28, 0x00000a35, 0x00000a42, 0x00000a62, - 0x00000a72, 0x00000a93, 0x00000aa9, 0x00000ab0, - 0x00000ab7, 0x00000ac4, 0x00000ace, 0x00000adb, - 0x00000ae8, 0x00000aef, 0x00000afc, 0x00000b03, - 0x00000b0a, 0x00000b11, 0x00000b18, 0x00000b25, - 0x00000b2c, 0x00000b33, 0x00000b40, 0x00000b47, - 0x00000b51, 0x00000bbf, 0x00000bcf, 0x00000bdc, - 0x00000be3, 0x00000bf9, 0x00000c2a, 0x00000c37, + 0x00000a1f, 0x00000a3f, 0x00000a4f, 0x00000a70, + 0x00000a86, 0x00000a8d, 0x00000a94, 0x00000aa1, + 0x00000aab, 0x00000ab8, 0x00000ac5, 0x00000acc, + 0x00000ad9, 0x00000ae0, 0x00000ae7, 0x00000aee, + 0x00000af5, 0x00000b02, 0x00000b09, 0x00000b10, + 0x00000b1d, 0x00000b24, 0x00000b2e, 0x00000b9c, + 0x00000bac, 0x00000bb9, 0x00000bc0, 0x00000bd6, + 0x00000c07, 0x00000c14, 0x00000c1e, 0x00000c6e, // Entry C0 - DF - 0x00000c41, 0x00000c91, 0x00000ca1, 0x00000cb4, - 0x00000cc1, 0x00000cce, 0x00000ce1, 0x00000cee, - 0x00000cfb, 0x00000d08, 0x00000d15, 0x00000d27, - 0x00000d2e, 0x00000d41, 0x00000d4e, 0x00000d55, - 0x00000d68, 0x00000d80, 0x00000da7, 0x00000dbf, - 0x00000de6, 0x00000ded, 0x00000e00, 0x00000e0e, - 0x00000e3b, 0x00000e4b, 0x00000e58, 0x00000e79, - 0x00000e80, 0x00000e8d, 0x00000ebb, 0x00000ece, + 0x00000c7e, 0x00000c91, 0x00000c9e, 0x00000cab, + 0x00000cbe, 0x00000ccb, 0x00000cd8, 0x00000ce5, + 0x00000cf2, 0x00000d04, 0x00000d0b, 0x00000d12, + 0x00000d25, 0x00000d3d, 0x00000d64, 0x00000d7c, + 0x00000da3, 0x00000daa, 0x00000dbd, 0x00000dcb, + 0x00000df8, 0x00000e08, 0x00000e15, 0x00000e36, + 0x00000e3d, 0x00000e4a, 0x00000e78, 0x00000e8b, + 0x00000ead, 0x00000eba, 0x00000eec, 0x00000f1c, // Entry E0 - FF - 0x00000ef0, 0x00000efd, 0x00000f2f, 0x00000f5f, - 0x00000f84, 0x00000f8e, 0x00000fad, 0x00000fbd, -} // Size: 952 bytes + 0x00000f41, 0x00000f4b, 0x00000f6a, 0x00000f7a, +} // Size: 936 bytes -const zh_CNData string = "" + // Size: 4029 bytes +const zh_CNData string = "" + // Size: 3962 bytes "\x02版本:%[1]s\x02FRP 版本:%[1]s\x02构建日期:%[1]s\x02所有文件\x02配置文件\x02证书文件\x02密钥" + "文件\x02日志文件\x02数值超出允许范围\x02请输入一个大于 %[1]d 的数字。\x02密码不匹配\x02请检查并重试。\x02不是" + "数字\x02请输入一个有效的数字。\x02发现更新!\x02关于\x02下载更新\x02正在检查更新\x02检查更新\x02如有任何意见或报" + "告错误,请访问项目地址:\x02了解 FRP 软件配置文档,请访问 FRP 项目地址:\x02检查更新时出现错误。\x02当前没有可用的更新" + "。\x02确定\x02取消\x02配置\x02新建配置\x02从文件导入配置\x02配置已删除\x02配置名「%[1]s」已删除。\x02编" + - "辑\x02打开文件\x02在文件夹中显示\x02创建副本\x02全部\x02仅通用配置\x02从文件导入\x02从 URL 导入\x02从剪" + - "贴板导入\x02复制分享链接\x02导出所有配置 (ZIP 压缩包)\x02删除\x02新建配置\x02手动设置\x02导入配置\x02导入" + - "了 %[2]d 个配置文件中的 %[1]d 个。\x02另一个同名的配置「%[1]s」已存在。\x02文件 \x22%[1]s\x22 不是" + - "有效的压缩文件。\x02删除配置「%[1]s」\x02确定要删除配置「%[1]s」吗?此操作无法撤销。\x02新建客户端\x02编辑客户端 " + - "- %[1]s\x02基本\x02名称\x02服务器地址\x02服务器端口\x02用户名\x02认证\x02认证方式\x02无\x02令牌" + - "\x02密钥\x02接收者\x02作用域\x02令牌地址\x02鉴权\x02心跳消息\x02工作连接\x02日志\x02* 留空则不记录日志,且" + - "删除原来的日志文件。\x02日志文件\x02选择日志文件\x02级别\x02最大天数\x02管理\x02管理地址\x02管理端口\x02密码" + - "\x02静态资源\x02选择管理服务器使用的静态资源目录。\x02自动删除\x02绝对\x02相对\x02删除日期\x02删除天数\x02天" + - "\x02连接\x02协议\x02HTTP 代理\x02连接池数量\x02心跳\x02间隔\x02秒\x02超时\x02连接超时\x02保活周期" + - "\x02闲置超时\x02最大流数量\x02开启\x02关闭\x02主机名称\x02证书文件\x02选择证书文件\x02密钥文件\x02选择证书密" + - "钥文件\x02受信任证书\x02选择受信任的证书\x02高级\x02多路复用\x02复用器心跳\x02使用源地址\x02其他选项\x02初次" + - "登录失败后退出\x02禁用开机自启动\x02自定义\x02自定义参数\x02* 参考 FRP 配置文件的 [common] 部分。\x02配" + - "置已存在\x02配置名「%[1]s」已存在。\x02新建代理\x02编辑代理 - %[1]s\x02随机名称\x02类型\x02角色\x02" + - "访问者\x02私钥\x02本地地址\x02本地端口\x02远程端口\x02绑定地址\x02绑定端口\x02服务名称\x02子域名\x02自定" + - "义域名\x02URL 路由\x02复用器\x02路由用户\x02客户端\x02服务端\x02带宽限流\x02代理版本\x02空\x02加密传" + - "输\x02压缩传输\x02HTTP 用户\x02HTTP 密码\x02Host 替换\x02插件\x02插件名称\x02Unix 路径" + - "\x02选择 Unix 路径\x02本地路径\x02选择需要显示目录列表的文件夹。\x02移除前缀\x02负载均衡\x02分组名称\x02分组密" + - "钥\x02健康检查\x02检查类型\x02检查超时\x02错误次数\x02检查周期\x02* 参考 FRP 支持的参数。\x02代理已存在" + - "\x02代理名「%[1]s」已存在。\x02打开日志文件夹\x02最新\x02未知\x02正在运行\x02已停止\x02正在启动\x02正在停止" + - "\x02状态\x02远程地址\x02复制\x02启动\x02服务\x02停止\x02本地目录\x02添加\x02端口\x02打开端口\x02选项" + - "\x02主密码\x02您可以设置密码来限制访问此程序。\x0a在下次使用此程序时,您将被要求输入密码。\x02使用主密码\x02修改密码\x02" + - "语言\x02目前的显示语言\x02您必须重新启动程序才能应用修改。\x02选择语言\x02默认值\x02定义新建配置时的默认值。\x0a此处" + - "的值不会影响现有的配置。\x02设置默认值\x02密码已删除。\x02新主密码\x02确认密码\x02密码已设定。\x02日志级别\x02日" + - "志保留\x02快速添加\x02远程桌面\x02HTTP 文件服务\x02启用\x02打开配置文件\x02直接编辑\x02域名\x02复制访问" + - "地址\x02删除代理「%[1]s」\x02确定要删除代理「%[1]s」吗?\x02禁用代理「%[1]s」\x02确定要禁用代理「%[1]s」" + - "吗?\x02禁用\x02被动端口范围\x02FRP 管理器\x02* 支持批量导入,每行一个链接。\x02自动重命名\x02准备就绪\x02" + - "请输入正确的 URL 列表。\x02下载\x02输入密码\x02您必须输入管理密码来使用 %[1]s。\x02输入管理密码\x02密码错误。" + - "请重新输入。\x02输入无效\x02请输入一个从 %.[1]f 到 %.[2]f 的数字。\x02请输入一个从 %[1]s 到 %[2]s " + - "的数字。\x02文本与要求的模式不匹配。\x02必填项\x02请选择其中一个选项。\x02需要选择。" + "辑\x02创建副本\x02全部\x02仅通用配置\x02从文件导入\x02从 URL 导入\x02从剪贴板导入\x02复制分享链接\x02导" + + "出所有配置 (ZIP 压缩包)\x02删除\x02新建配置\x02手动设置\x02导入配置\x02导入了 %[2]d 个配置文件中的 %[1" + + "]d 个。\x02另一个同名的配置「%[1]s」已存在。\x02文件 \x22%[1]s\x22 不是有效的压缩文件。\x02删除配置「%[1]" + + "s」\x02确定要删除配置「%[1]s」吗?此操作无法撤销。\x02新建客户端\x02编辑客户端 - %[1]s\x02基本\x02名称\x02" + + "服务器地址\x02服务器端口\x02用户名\x02认证\x02认证方式\x02无\x02令牌\x02密钥\x02接收者\x02作用域\x02" + + "令牌地址\x02鉴权\x02心跳消息\x02工作连接\x02日志\x02* 留空则不记录日志,且删除原来的日志文件。\x02日志文件\x02" + + "选择日志文件\x02级别\x02最大天数\x02管理\x02管理地址\x02管理端口\x02密码\x02静态资源\x02选择管理服务器使用的" + + "静态资源目录。\x02自动删除\x02绝对\x02相对\x02删除日期\x02删除天数\x02天\x02连接\x02协议\x02HTTP 代" + + "理\x02连接池数量\x02心跳\x02间隔\x02秒\x02超时\x02连接超时\x02保活周期\x02闲置超时\x02最大流数量\x02" + + "开启\x02关闭\x02主机名称\x02证书文件\x02选择证书文件\x02密钥文件\x02选择证书密钥文件\x02受信任证书\x02选择受" + + "信任的证书\x02高级\x02多路复用\x02复用器心跳\x02使用源地址\x02其他选项\x02初次登录失败后退出\x02禁用开机自启动" + + "\x02自定义\x02自定义参数\x02* 参考 FRP 配置文件的 [common] 部分。\x02配置已存在\x02配置名「%[1]s」已存" + + "在。\x02新建代理\x02编辑代理 - %[1]s\x02随机名称\x02类型\x02角色\x02访问者\x02私钥\x02本地地址" + + "\x02本地端口\x02远程端口\x02绑定地址\x02绑定端口\x02服务名称\x02子域名\x02自定义域名\x02URL 路由\x02复用" + + "器\x02路由用户\x02客户端\x02服务端\x02带宽限流\x02代理版本\x02空\x02加密传输\x02压缩传输\x02HTTP 用" + + "户\x02HTTP 密码\x02Host 替换\x02插件\x02插件名称\x02Unix 路径\x02选择 Unix 路径\x02本地路径" + + "\x02选择需要显示目录列表的文件夹。\x02移除前缀\x02负载均衡\x02分组名称\x02分组密钥\x02健康检查\x02检查类型\x02检" + + "查超时\x02错误次数\x02检查周期\x02* 参考 FRP 支持的参数。\x02代理已存在\x02代理名「%[1]s」已存在。\x02打" + + "开日志文件夹\x02最新\x02未知\x02正在运行\x02已停止\x02正在启动\x02正在停止\x02状态\x02远程地址\x02复制" + + "\x02启动\x02服务\x02停止\x02本地目录\x02添加\x02端口\x02打开端口\x02选项\x02主密码\x02您可以设置密码来限" + + "制访问此程序。\x0a在下次使用此程序时,您将被要求输入密码。\x02使用主密码\x02修改密码\x02语言\x02目前的显示语言\x02您" + + "必须重新启动程序才能应用修改。\x02选择语言\x02默认值\x02定义新建配置时的默认值。\x0a此处的值不会影响现有的配置。\x02设置" + + "默认值\x02密码已删除。\x02新主密码\x02确认密码\x02密码已设定。\x02日志级别\x02日志保留\x02快速添加\x02远程桌" + + "面\x02HTTP 文件服务\x02启用\x02域名\x02复制访问地址\x02删除代理「%[1]s」\x02确定要删除代理「%[1]s」吗" + + "?\x02禁用代理「%[1]s」\x02确定要禁用代理「%[1]s」吗?\x02禁用\x02被动端口范围\x02FRP 管理器\x02* 支" + + "持批量导入,每行一个链接。\x02自动重命名\x02准备就绪\x02请输入正确的 URL 列表。\x02下载\x02输入密码\x02您必须输" + + "入管理密码来使用 %[1]s。\x02输入管理密码\x02密码错误。请重新输入。\x02输入无效\x02请输入一个从 %.[1]f 到 %." + + "[2]f 的数字。\x02请输入一个从 %[1]s 到 %[2]s 的数字。\x02文本与要求的模式不匹配。\x02必填项\x02请选择其中一个" + + "选项。\x02需要选择。" -var zh_TWIndex = []uint32{ // 232 elements +var zh_TWIndex = []uint32{ // 228 elements // Entry 0 - 1F 0x00000000, 0x0000000f, 0x00000022, 0x00000037, 0x00000044, 0x00000051, 0x0000005e, 0x0000006b, @@ -918,98 +906,97 @@ var zh_TWIndex = []uint32{ // 232 elements 0x00000213, 0x0000021a, 0x00000221, 0x0000022e, 0x00000244, 0x00000254, 0x00000275, 0x0000027c, // Entry 20 - 3F - 0x00000289, 0x0000029f, 0x000002ac, 0x000002b3, - 0x000002c3, 0x000002d3, 0x000002e2, 0x000002f5, - 0x00000308, 0x0000032b, 0x00000332, 0x0000033f, - 0x0000034c, 0x00000359, 0x0000038c, 0x000003bc, - 0x000003ea, 0x00000402, 0x00000441, 0x00000451, - 0x00000469, 0x00000470, 0x00000477, 0x00000487, - 0x00000497, 0x000004a1, 0x000004a8, 0x000004b5, - 0x000004b9, 0x000004c0, 0x000004c7, 0x000004d1, + 0x00000289, 0x00000290, 0x000002a0, 0x000002b0, + 0x000002bf, 0x000002d2, 0x000002e5, 0x00000308, + 0x0000030f, 0x0000031c, 0x00000329, 0x00000336, + 0x00000369, 0x00000399, 0x000003c7, 0x000003df, + 0x0000041e, 0x0000042e, 0x00000446, 0x0000044d, + 0x00000454, 0x00000464, 0x00000474, 0x0000047e, + 0x00000485, 0x00000492, 0x00000496, 0x0000049d, + 0x000004a4, 0x000004ae, 0x000004b8, 0x000004c5, // Entry 40 - 5F - 0x000004db, 0x000004e8, 0x000004ef, 0x000004fc, - 0x00000509, 0x00000510, 0x0000054f, 0x0000055c, - 0x0000056f, 0x00000576, 0x00000583, 0x0000058a, - 0x00000597, 0x000005a4, 0x000005ab, 0x000005b8, - 0x000005ec, 0x000005f9, 0x00000600, 0x00000607, - 0x00000614, 0x00000621, 0x00000625, 0x0000062c, - 0x00000633, 0x0000063f, 0x0000064f, 0x00000656, - 0x0000065d, 0x00000661, 0x00000668, 0x00000675, + 0x000004cc, 0x000004d9, 0x000004e6, 0x000004ed, + 0x0000052c, 0x00000539, 0x0000054c, 0x00000553, + 0x00000560, 0x00000567, 0x00000574, 0x00000581, + 0x00000588, 0x00000595, 0x000005c9, 0x000005d6, + 0x000005dd, 0x000005e4, 0x000005f1, 0x000005fe, + 0x00000602, 0x00000609, 0x00000610, 0x0000061c, + 0x0000062c, 0x00000633, 0x0000063a, 0x0000063e, + 0x00000645, 0x00000652, 0x0000065f, 0x0000066c, // Entry 60 - 7F - 0x00000682, 0x0000068f, 0x0000069f, 0x000006a6, - 0x000006ad, 0x000006ba, 0x000006c7, 0x000006da, - 0x000006e7, 0x00000700, 0x00000710, 0x00000729, - 0x00000730, 0x0000073d, 0x0000074d, 0x0000075d, - 0x0000076a, 0x00000786, 0x0000079c, 0x000007a6, - 0x000007b6, 0x000007e6, 0x000007f6, 0x00000817, - 0x00000824, 0x00000839, 0x00000846, 0x0000084d, - 0x00000854, 0x0000085e, 0x00000865, 0x00000872, + 0x0000067c, 0x00000683, 0x0000068a, 0x00000697, + 0x000006a4, 0x000006b7, 0x000006c4, 0x000006dd, + 0x000006ed, 0x00000706, 0x0000070d, 0x0000071a, + 0x0000072a, 0x0000073a, 0x00000747, 0x00000763, + 0x00000779, 0x00000783, 0x00000793, 0x000007c3, + 0x000007d3, 0x000007f4, 0x00000801, 0x00000816, + 0x00000823, 0x0000082a, 0x00000831, 0x0000083b, + 0x00000842, 0x0000084f, 0x0000085c, 0x00000869, // Entry 80 - 9F - 0x0000087f, 0x0000088c, 0x00000899, 0x000008a6, - 0x000008b3, 0x000008bd, 0x000008cd, 0x000008d8, - 0x000008e2, 0x000008ef, 0x000008f9, 0x00000903, - 0x00000910, 0x0000091d, 0x00000921, 0x0000092e, - 0x0000093b, 0x00000947, 0x00000953, 0x0000095f, - 0x00000966, 0x00000973, 0x0000097f, 0x00000992, - 0x0000099f, 0x000009cd, 0x000009da, 0x000009e7, - 0x000009f4, 0x00000a01, 0x00000a0e, 0x00000a1b, + 0x00000876, 0x00000883, 0x00000890, 0x0000089a, + 0x000008aa, 0x000008b5, 0x000008bf, 0x000008cc, + 0x000008d6, 0x000008e0, 0x000008ed, 0x000008fa, + 0x000008fe, 0x0000090b, 0x00000918, 0x00000924, + 0x00000930, 0x0000093c, 0x00000943, 0x00000950, + 0x0000095c, 0x0000096f, 0x0000097c, 0x000009aa, + 0x000009b7, 0x000009c4, 0x000009d1, 0x000009de, + 0x000009eb, 0x000009f8, 0x00000a05, 0x00000a12, // Entry A0 - BF - 0x00000a28, 0x00000a35, 0x00000a42, 0x00000a62, - 0x00000a72, 0x00000a93, 0x00000aa9, 0x00000ab0, - 0x00000ab7, 0x00000ac4, 0x00000ace, 0x00000adb, - 0x00000ae8, 0x00000aef, 0x00000afc, 0x00000b03, - 0x00000b0a, 0x00000b11, 0x00000b18, 0x00000b25, - 0x00000b2c, 0x00000b33, 0x00000b40, 0x00000b47, - 0x00000b51, 0x00000bbf, 0x00000bcf, 0x00000bdc, - 0x00000be3, 0x00000bf9, 0x00000c2a, 0x00000c37, + 0x00000a1f, 0x00000a3f, 0x00000a4f, 0x00000a70, + 0x00000a86, 0x00000a8d, 0x00000a94, 0x00000aa1, + 0x00000aab, 0x00000ab8, 0x00000ac5, 0x00000acc, + 0x00000ad9, 0x00000ae0, 0x00000ae7, 0x00000aee, + 0x00000af5, 0x00000b02, 0x00000b09, 0x00000b10, + 0x00000b1d, 0x00000b24, 0x00000b2e, 0x00000b9c, + 0x00000bac, 0x00000bb9, 0x00000bc0, 0x00000bd6, + 0x00000c07, 0x00000c14, 0x00000c1e, 0x00000c6e, // Entry C0 - DF - 0x00000c41, 0x00000c91, 0x00000ca1, 0x00000cb4, - 0x00000cc1, 0x00000cce, 0x00000ce1, 0x00000cee, - 0x00000cfb, 0x00000d08, 0x00000d15, 0x00000d27, - 0x00000d2e, 0x00000d41, 0x00000d4e, 0x00000d55, - 0x00000d68, 0x00000d80, 0x00000da7, 0x00000dbf, - 0x00000de6, 0x00000ded, 0x00000e00, 0x00000e0e, - 0x00000e3b, 0x00000e4b, 0x00000e58, 0x00000e79, - 0x00000e80, 0x00000e8d, 0x00000ebb, 0x00000ece, + 0x00000c7e, 0x00000c91, 0x00000c9e, 0x00000cab, + 0x00000cbe, 0x00000ccb, 0x00000cd8, 0x00000ce5, + 0x00000cf2, 0x00000d04, 0x00000d0b, 0x00000d12, + 0x00000d25, 0x00000d3d, 0x00000d64, 0x00000d7c, + 0x00000da3, 0x00000daa, 0x00000dbd, 0x00000dcb, + 0x00000df8, 0x00000e08, 0x00000e15, 0x00000e36, + 0x00000e3d, 0x00000e4a, 0x00000e78, 0x00000e8b, + 0x00000ead, 0x00000eba, 0x00000eec, 0x00000f1c, // Entry E0 - FF - 0x00000ef0, 0x00000efd, 0x00000f2f, 0x00000f5f, - 0x00000f84, 0x00000f8e, 0x00000fad, 0x00000fbd, -} // Size: 952 bytes + 0x00000f41, 0x00000f4b, 0x00000f6a, 0x00000f7a, +} // Size: 936 bytes -const zh_TWData string = "" + // Size: 4029 bytes +const zh_TWData string = "" + // Size: 3962 bytes "\x02版本:%[1]s\x02FRP 版本:%[1]s\x02構建日期:%[1]s\x02所有文件\x02配置文件\x02證書文件\x02密鑰" + "文件\x02日誌文件\x02數值超出允許範圍\x02請輸入一個大於 %[1]d 的數字。\x02密碼不匹配\x02請檢查並重試。\x02不是" + "數字\x02請輸入一個有效的數字。\x02發現更新!\x02關於\x02下載更新\x02正在檢查更新\x02檢查更新\x02如有任何意見或報" + "告錯誤,請訪問項目地址:\x02了解 FRP 軟件配置文檔,請訪問 FRP 項目地址:\x02檢查更新時出現錯誤。\x02當前沒有可用的更新" + "。\x02確定\x02取消\x02配置\x02新建配置\x02從文件導入配置\x02配置已刪除\x02配置名「%[1]s」已刪除。\x02編" + - "輯\x02打開文件\x02在文件夾中顯示\x02創建副本\x02全部\x02僅通用配置\x02從文件導入\x02從 URL 導入\x02從剪" + - "貼板導入\x02復制分享鏈接\x02導出所有配置 (ZIP 壓縮包)\x02刪除\x02新建配置\x02手動設置\x02導入配置\x02導入" + - "了 %[2]d 個配置文件中的 %[1]d 個。\x02另一個同名的配置「%[1]s」已存在。\x02文件 \x22%[1]s\x22 不是" + - "有效的壓縮文件。\x02刪除配置「%[1]s」\x02確定要刪除配置「%[1]s」嗎?此操作無法撤銷。\x02新建客戶端\x02編輯客戶端 " + - "- %[1]s\x02基本\x02名稱\x02服務器地址\x02服務器端口\x02用戶名\x02認證\x02認證方式\x02無\x02令牌" + - "\x02密鑰\x02接收者\x02作用域\x02令牌地址\x02鑑權\x02心跳消息\x02工作連接\x02日誌\x02* 留空則不記錄日誌,且" + - "刪除原來的日誌文件。\x02日誌文件\x02選擇日誌文件\x02級別\x02最大天數\x02管理\x02管理地址\x02管理端口\x02密碼" + - "\x02靜態資源\x02選擇管理服務器使用的靜態資源目錄。\x02自動刪除\x02絕對\x02相對\x02刪除日期\x02刪除天數\x02天" + - "\x02連接\x02協議\x02HTTP 代理\x02連接池數量\x02心跳\x02間隔\x02秒\x02超時\x02連接超時\x02保活週期" + - "\x02閒置超時\x02最大流數量\x02開啟\x02關閉\x02主機名稱\x02證書文件\x02選擇證書文件\x02密鑰文件\x02選擇證書密" + - "鑰文件\x02受信任證書\x02選擇受信任的證書\x02高級\x02多路復用\x02復用器心跳\x02使用源地址\x02其他選項\x02初次" + - "登錄失敗後退出\x02禁用開機自啟動\x02自定義\x02自定義參數\x02* 參考 FRP 配置文件的 [common] 部分。\x02配" + - "置已存在\x02配置名「%[1]s」已存在。\x02新建代理\x02編輯代理 - %[1]s\x02隨機名稱\x02類型\x02角色\x02" + - "訪問者\x02私鑰\x02本地地址\x02本地端口\x02遠程端口\x02綁定地址\x02綁定端口\x02服務名稱\x02子域名\x02自定" + - "義域名\x02URL 路由\x02復用器\x02路由用戶\x02客戶端\x02服務端\x02帶寬限流\x02代理版本\x02空\x02加密傳" + - "輸\x02壓縮傳輸\x02HTTP 用戶\x02HTTP 密碼\x02Host 替換\x02插件\x02插件名稱\x02Unix 路徑" + - "\x02選擇 Unix 路徑\x02本地路徑\x02選擇需要顯示目錄列表的文件夾。\x02移除前綴\x02負載均衡\x02分組名稱\x02分組密" + - "鑰\x02健康檢查\x02檢查類型\x02檢查超時\x02錯誤次數\x02檢查週期\x02* 參考 FRP 支持的參數。\x02代理已存在" + - "\x02代理名「%[1]s」已存在。\x02打開日誌文件夾\x02最新\x02未知\x02正在運行\x02已停止\x02正在啟動\x02正在停止" + - "\x02狀態\x02遠程地址\x02複製\x02啟動\x02服務\x02停止\x02本地目錄\x02添加\x02端口\x02打開端口\x02選項" + - "\x02主密碼\x02您可以設置密碼來限制訪問此程式。\x0a在下次使用此程式時,您將被要求輸入密碼。\x02使用主密碼\x02修改密碼\x02" + - "語言\x02目前的顯示語言\x02您必須重新啟動程式才能應用修改。\x02選擇語言\x02默認值\x02定義新建配置時的默認值。\x0a此處" + - "的值不會影響現有的配置。\x02設置默認值\x02密碼已刪除。\x02新主密碼\x02確認密碼\x02密碼已設定。\x02日誌級別\x02日" + - "誌保留\x02快速添加\x02遠程桌面\x02HTTP 文件服務\x02啟用\x02打開配置文件\x02直接編輯\x02域名\x02複製訪問" + - "地址\x02刪除代理「%[1]s」\x02確定要刪除代理「%[1]s」嗎?\x02禁用代理「%[1]s」\x02確定要禁用代理「%[1]s」" + - "嗎?\x02禁用\x02被動端口範圍\x02FRP 管理器\x02* 支持批量導入,每行一個鏈接。\x02自動重命名\x02準備就緒\x02" + - "請輸入正確的 URL 列表。\x02下載\x02輸入密碼\x02您必須輸入管理密碼來使用 %[1]s。\x02輸入管理密碼\x02密碼錯誤。" + - "請重新輸入。\x02輸入無效\x02請輸入一個從 %.[1]f 到 %.[2]f 的數字。\x02請輸入一個從 %[1]s 到 %[2]s " + - "的數字。\x02文本與要求的模式不匹配。\x02必填項\x02請選擇其中一個選項。\x02需要選擇。" + "輯\x02創建副本\x02全部\x02僅通用配置\x02從文件導入\x02從 URL 導入\x02從剪貼板導入\x02復制分享鏈接\x02導" + + "出所有配置 (ZIP 壓縮包)\x02刪除\x02新建配置\x02手動設置\x02導入配置\x02導入了 %[2]d 個配置文件中的 %[1" + + "]d 個。\x02另一個同名的配置「%[1]s」已存在。\x02文件 \x22%[1]s\x22 不是有效的壓縮文件。\x02刪除配置「%[1]" + + "s」\x02確定要刪除配置「%[1]s」嗎?此操作無法撤銷。\x02新建客戶端\x02編輯客戶端 - %[1]s\x02基本\x02名稱\x02" + + "服務器地址\x02服務器端口\x02用戶名\x02認證\x02認證方式\x02無\x02令牌\x02密鑰\x02接收者\x02作用域\x02" + + "令牌地址\x02鑑權\x02心跳消息\x02工作連接\x02日誌\x02* 留空則不記錄日誌,且刪除原來的日誌文件。\x02日誌文件\x02" + + "選擇日誌文件\x02級別\x02最大天數\x02管理\x02管理地址\x02管理端口\x02密碼\x02靜態資源\x02選擇管理服務器使用的" + + "靜態資源目錄。\x02自動刪除\x02絕對\x02相對\x02刪除日期\x02刪除天數\x02天\x02連接\x02協議\x02HTTP 代" + + "理\x02連接池數量\x02心跳\x02間隔\x02秒\x02超時\x02連接超時\x02保活週期\x02閒置超時\x02最大流數量\x02" + + "開啟\x02關閉\x02主機名稱\x02證書文件\x02選擇證書文件\x02密鑰文件\x02選擇證書密鑰文件\x02受信任證書\x02選擇受" + + "信任的證書\x02高級\x02多路復用\x02復用器心跳\x02使用源地址\x02其他選項\x02初次登錄失敗後退出\x02禁用開機自啟動" + + "\x02自定義\x02自定義參數\x02* 參考 FRP 配置文件的 [common] 部分。\x02配置已存在\x02配置名「%[1]s」已存" + + "在。\x02新建代理\x02編輯代理 - %[1]s\x02隨機名稱\x02類型\x02角色\x02訪問者\x02私鑰\x02本地地址" + + "\x02本地端口\x02遠程端口\x02綁定地址\x02綁定端口\x02服務名稱\x02子域名\x02自定義域名\x02URL 路由\x02復用" + + "器\x02路由用戶\x02客戶端\x02服務端\x02帶寬限流\x02代理版本\x02空\x02加密傳輸\x02壓縮傳輸\x02HTTP 用" + + "戶\x02HTTP 密碼\x02Host 替換\x02插件\x02插件名稱\x02Unix 路徑\x02選擇 Unix 路徑\x02本地路徑" + + "\x02選擇需要顯示目錄列表的文件夾。\x02移除前綴\x02負載均衡\x02分組名稱\x02分組密鑰\x02健康檢查\x02檢查類型\x02檢" + + "查超時\x02錯誤次數\x02檢查週期\x02* 參考 FRP 支持的參數。\x02代理已存在\x02代理名「%[1]s」已存在。\x02打" + + "開日誌文件夾\x02最新\x02未知\x02正在運行\x02已停止\x02正在啟動\x02正在停止\x02狀態\x02遠程地址\x02複製" + + "\x02啟動\x02服務\x02停止\x02本地目錄\x02添加\x02端口\x02打開端口\x02選項\x02主密碼\x02您可以設置密碼來限" + + "制訪問此程式。\x0a在下次使用此程式時,您將被要求輸入密碼。\x02使用主密碼\x02修改密碼\x02語言\x02目前的顯示語言\x02您" + + "必須重新啟動程式才能應用修改。\x02選擇語言\x02默認值\x02定義新建配置時的默認值。\x0a此處的值不會影響現有的配置。\x02設置" + + "默認值\x02密碼已刪除。\x02新主密碼\x02確認密碼\x02密碼已設定。\x02日誌級別\x02日誌保留\x02快速添加\x02遠程桌" + + "面\x02HTTP 文件服務\x02啟用\x02域名\x02複製訪問地址\x02刪除代理「%[1]s」\x02確定要刪除代理「%[1]s」嗎" + + "?\x02禁用代理「%[1]s」\x02確定要禁用代理「%[1]s」嗎?\x02禁用\x02被動端口範圍\x02FRP 管理器\x02* 支" + + "持批量導入,每行一個鏈接。\x02自動重命名\x02準備就緒\x02請輸入正確的 URL 列表。\x02下載\x02輸入密碼\x02您必須輸" + + "入管理密碼來使用 %[1]s。\x02輸入管理密碼\x02密碼錯誤。請重新輸入。\x02輸入無效\x02請輸入一個從 %.[1]f 到 %." + + "[2]f 的數字。\x02請輸入一個從 %[1]s 到 %[2]s 的數字。\x02文本與要求的模式不匹配。\x02必填項\x02請選擇其中一個" + + "選項。\x02需要選擇。" - // Total table size 34683 bytes (33KiB); checksum: F8713DA1 + // Total table size 34196 bytes (33KiB); checksum: 2012B05 diff --git a/i18n/locales/en-US/messages.gotext.json b/i18n/locales/en-US/messages.gotext.json index 6faf344ea..14af8c6a3 100644 --- a/i18n/locales/en-US/messages.gotext.json +++ b/i18n/locales/en-US/messages.gotext.json @@ -268,20 +268,6 @@ "translatorComment": "Copied from source.", "fuzzy": true }, - { - "id": "Open File", - "message": "Open File", - "translation": "Open File", - "translatorComment": "Copied from source.", - "fuzzy": true - }, - { - "id": "Show in Folder", - "message": "Show in Folder", - "translation": "Show in Folder", - "translatorComment": "Copied from source.", - "fuzzy": true - }, { "id": "Create a Copy", "message": "Create a Copy", @@ -1577,20 +1563,6 @@ "translatorComment": "Copied from source.", "fuzzy": true }, - { - "id": "Open Config", - "message": "Open Config", - "translation": "Open Config", - "translatorComment": "Copied from source.", - "fuzzy": true - }, - { - "id": "Direct Edit", - "message": "Direct Edit", - "translation": "Direct Edit", - "translatorComment": "Copied from source.", - "fuzzy": true - }, { "id": "Domains", "message": "Domains", diff --git a/i18n/locales/es-ES/messages.gotext.json b/i18n/locales/es-ES/messages.gotext.json index 6cbc8e203..b7f268b2c 100644 --- a/i18n/locales/es-ES/messages.gotext.json +++ b/i18n/locales/es-ES/messages.gotext.json @@ -206,16 +206,6 @@ "message": "Edit", "translation": "Editar" }, - { - "id": "Open File", - "message": "Open File", - "translation": "Abrir documento" - }, - { - "id": "Show in Folder", - "message": "Show in Folder", - "translation": "Mostrar en la carpeta" - }, { "id": "Create a Copy", "message": "Create a Copy", @@ -1169,16 +1159,6 @@ "message": "Enable", "translation": "Habilitar" }, - { - "id": "Open Config", - "message": "Open Config", - "translation": "Abrir configuración" - }, - { - "id": "Direct Edit", - "message": "Direct Edit", - "translation": "Edición directa" - }, { "id": "Domains", "message": "Domains", diff --git a/i18n/locales/ja-JP/messages.gotext.json b/i18n/locales/ja-JP/messages.gotext.json index 7fc51fb61..03db5ac51 100644 --- a/i18n/locales/ja-JP/messages.gotext.json +++ b/i18n/locales/ja-JP/messages.gotext.json @@ -206,16 +206,6 @@ "message": "Edit", "translation": "編集" }, - { - "id": "Open File", - "message": "Open File", - "translation": "ファイルを開く" - }, - { - "id": "Show in Folder", - "message": "Show in Folder", - "translation": "フォルダで見て" - }, { "id": "Create a Copy", "message": "Create a Copy", @@ -1179,16 +1169,6 @@ "message": "Enable", "translation": "有効" }, - { - "id": "Open Config", - "message": "Open Config", - "translation": "設定を開く" - }, - { - "id": "Direct Edit", - "message": "Direct Edit", - "translation": "直接編集" - }, { "id": "Domains", "message": "Domains", diff --git a/i18n/locales/ko-KR/messages.gotext.json b/i18n/locales/ko-KR/messages.gotext.json index a19faf6ae..8160f27c2 100644 --- a/i18n/locales/ko-KR/messages.gotext.json +++ b/i18n/locales/ko-KR/messages.gotext.json @@ -206,16 +206,6 @@ "message": "Edit", "translation": "편집하다" }, - { - "id": "Open File", - "message": "Open File", - "translation": "파일 열기" - }, - { - "id": "Show in Folder", - "message": "Show in Folder", - "translation": "폴더에 표시" - }, { "id": "Create a Copy", "message": "Create a Copy", @@ -1169,16 +1159,6 @@ "message": "Enable", "translation": "켜다" }, - { - "id": "Open Config", - "message": "Open Config", - "translation": "구성 열기" - }, - { - "id": "Direct Edit", - "message": "Direct Edit", - "translation": "직접 편집" - }, { "id": "Domains", "message": "Domains", diff --git a/i18n/locales/zh-CN/messages.gotext.json b/i18n/locales/zh-CN/messages.gotext.json index d72392a72..d0be9fae7 100644 --- a/i18n/locales/zh-CN/messages.gotext.json +++ b/i18n/locales/zh-CN/messages.gotext.json @@ -206,16 +206,6 @@ "message": "Edit", "translation": "编辑" }, - { - "id": "Open File", - "message": "Open File", - "translation": "打开文件" - }, - { - "id": "Show in Folder", - "message": "Show in Folder", - "translation": "在文件夹中显示" - }, { "id": "Create a Copy", "message": "Create a Copy", @@ -1169,16 +1159,6 @@ "message": "Enable", "translation": "启用" }, - { - "id": "Open Config", - "message": "Open Config", - "translation": "打开配置文件" - }, - { - "id": "Direct Edit", - "message": "Direct Edit", - "translation": "直接编辑" - }, { "id": "Domains", "message": "Domains", diff --git a/i18n/locales/zh-TW/messages.gotext.json b/i18n/locales/zh-TW/messages.gotext.json index 514f16413..065bbe69f 100644 --- a/i18n/locales/zh-TW/messages.gotext.json +++ b/i18n/locales/zh-TW/messages.gotext.json @@ -206,16 +206,6 @@ "message": "Edit", "translation": "編輯" }, - { - "id": "Open File", - "message": "Open File", - "translation": "打開文件" - }, - { - "id": "Show in Folder", - "message": "Show in Folder", - "translation": "在文件夾中顯示" - }, { "id": "Create a Copy", "message": "Create a Copy", @@ -1169,16 +1159,6 @@ "message": "Enable", "translation": "啟用" }, - { - "id": "Open Config", - "message": "Open Config", - "translation": "打開配置文件" - }, - { - "id": "Direct Edit", - "message": "Direct Edit", - "translation": "直接編輯" - }, { "id": "Domains", "message": "Domains", diff --git a/icon/open.ico b/icon/open.ico deleted file mode 100644 index bbde4d3bd..000000000 Binary files a/icon/open.ico and /dev/null differ diff --git a/pkg/config/client.go b/pkg/config/client.go index 07c789e33..cc7934fe0 100644 --- a/pkg/config/client.go +++ b/pkg/config/client.go @@ -3,9 +3,11 @@ package config import ( "bytes" "fmt" + "os" "strings" "github.com/koho/frpmgr/pkg/consts" + "github.com/koho/frpmgr/pkg/sec" "github.com/koho/frpmgr/pkg/util" frputil "github.com/fatedier/frp/pkg/util/util" @@ -305,7 +307,15 @@ func (conf *ClientConfig) Save(path string) error { p.Key(k).SetValue(v) } } - return cfg.SaveTo(path) + buf := &bytes.Buffer{} + if _, err = cfg.WriteTo(buf); err != nil { + return err + } + encrypted, err := sec.Encrypt(buf.Bytes()) + if err != nil { + return err + } + return os.WriteFile(path, encrypted, 0666) } func (conf *ClientConfig) Complete(read bool) { @@ -463,6 +473,13 @@ findSection: } func UnmarshalClientConfFromIni(source interface{}) (*ClientConfig, error) { + if path, ok := source.(string); ok { + data, err := ReadFile(path) + if err != nil { + return nil, err + } + source = data + } conf := NewDefaultClientConfig() cfg, err := ini.LoadSources(ini.LoadOptions{ IgnoreInlineComment: true, diff --git a/pkg/config/conf.go b/pkg/config/conf.go index 063154325..957aa9a21 100644 --- a/pkg/config/conf.go +++ b/pkg/config/conf.go @@ -2,9 +2,11 @@ package config import ( "os" + "strings" "time" "github.com/koho/frpmgr/pkg/consts" + "github.com/koho/frpmgr/pkg/sec" "github.com/koho/frpmgr/pkg/util" "gopkg.in/ini.v1" @@ -88,3 +90,19 @@ func Expiry(configPath string, del AutoDelete) (time.Duration, error) { } return 0, os.ErrNoDeadline } + +// ReadFile reads the named file and returns the contents. +// If the file extension is ".dat" then the contents will be decrypted. +func ReadFile(path string) ([]byte, error) { + data, err := os.ReadFile(path) + if err != nil { + return nil, err + } + if strings.HasSuffix(path, ".dat") { + data, err = sec.Decrypt(data) + if err != nil { + return nil, err + } + } + return data, nil +} diff --git a/pkg/config/zip.go b/pkg/config/zip.go new file mode 100644 index 000000000..5e9286d29 --- /dev/null +++ b/pkg/config/zip.go @@ -0,0 +1,57 @@ +package config + +import ( + "archive/zip" + "os" + + "github.com/koho/frpmgr/pkg/util" +) + +// Zip compresses the given config file list to a zip file. +func Zip(filename string, files []string) error { + newZipFile, err := os.Create(filename) + if err != nil { + return err + } + defer newZipFile.Close() + + zipWriter := zip.NewWriter(newZipFile) + defer zipWriter.Close() + + // Add files to zip + for _, file := range files { + if err = addFileToZip(zipWriter, file); err != nil { + return err + } + } + return nil +} + +func addFileToZip(zipWriter *zip.Writer, filename string) error { + info, err := os.Stat(filename) + if err != nil { + return err + } + + header, err := zip.FileInfoHeader(info) + if err != nil { + return err + } + baseName, _ := util.SplitExt(filename) + header.Name = baseName + ".ini" + + // Change to deflate to gain better compression + header.Method = zip.Deflate + + writer, err := zipWriter.CreateHeader(header) + if err != nil { + return err + } + + data, err := ReadFile(filename) + if err != nil { + return err + } + _, err = writer.Write(data) + return err +} diff --git a/pkg/consts/res.go b/pkg/consts/res.go index 9445972e3..665bc9305 100644 --- a/pkg/consts/res.go +++ b/pkg/consts/res.go @@ -21,7 +21,6 @@ const ( // Icons const ( IconLogo = 7 - IconOpen = 22 IconRefresh = 23 IconCopy = 24 IconCopyActive = 25 diff --git a/pkg/sec/protect.go b/pkg/sec/protect.go new file mode 100644 index 000000000..dc4fc3f8e --- /dev/null +++ b/pkg/sec/protect.go @@ -0,0 +1,61 @@ +package sec + +import ( + "fmt" + "os" + "unsafe" + + "golang.org/x/sys/windows" +) + +var entropy = bytesToBlob([]byte{ + 0x3c, 0x08, 0x7c, 0xa8, 0x13, 0x61, 0xb2, 0x0a, + 0xd1, 0x87, 0x58, 0xcf, 0xa8, 0x2f, 0x10, 0x16, +}) + +func bytesToBlob(bytes []byte) *windows.DataBlob { + blob := &windows.DataBlob{Size: uint32(len(bytes))} + if len(bytes) > 0 { + blob.Data = &bytes[0] + } + return blob +} + +func Encrypt(data []byte) ([]byte, error) { + out := windows.DataBlob{} + err := windows.CryptProtectData(bytesToBlob(data), nil, entropy, 0, nil, + windows.CRYPTPROTECT_LOCAL_MACHINE|windows.CRYPTPROTECT_UI_FORBIDDEN, &out) + if err != nil { + return nil, fmt.Errorf("unable to encrypt DPAPI protected data: %w", err) + } + ret := make([]byte, out.Size) + copy(ret, unsafe.Slice(out.Data, out.Size)) + windows.LocalFree(windows.Handle(unsafe.Pointer(out.Data))) + return ret, nil +} + +func Decrypt(data []byte) ([]byte, error) { + out := windows.DataBlob{} + err := windows.CryptUnprotectData(bytesToBlob(data), nil, entropy, 0, nil, + windows.CRYPTPROTECT_LOCAL_MACHINE|windows.CRYPTPROTECT_UI_FORBIDDEN, &out) + if err != nil { + return nil, fmt.Errorf("unable to decrypt DPAPI protected data: %w", err) + } + ret := make([]byte, out.Size) + copy(ret, unsafe.Slice(out.Data, out.Size)) + windows.LocalFree(windows.Handle(unsafe.Pointer(out.Data))) + return ret, nil +} + +// EncryptFile encrypts the input file and writes to the output file. +func EncryptFile(input string, output string) error { + data, err := os.ReadFile(input) + if err != nil { + return err + } + encrypted, err := Encrypt(data) + if err != nil { + return err + } + return os.WriteFile(output, encrypted, 0666) +} diff --git a/pkg/sec/protect_test.go b/pkg/sec/protect_test.go new file mode 100644 index 000000000..591c912f5 --- /dev/null +++ b/pkg/sec/protect_test.go @@ -0,0 +1,21 @@ +package sec + +import ( + "bytes" + "testing" +) + +func TestEncrypt(t *testing.T) { + original := []byte("Test data for DPAPI.") + e, err := Encrypt(original) + if err != nil { + t.Errorf("Error encrypting: %s", err.Error()) + } + d, err := Decrypt(e) + if err != nil { + t.Errorf("Error decrypting: %s", err.Error()) + } + if !bytes.Equal(d, original) { + t.Error("Decrypted content does not match original") + } +} diff --git a/pkg/util/file.go b/pkg/util/file.go index 4bcfebef3..1eef154b9 100644 --- a/pkg/util/file.go +++ b/pkg/util/file.go @@ -1,7 +1,6 @@ package util import ( - "archive/zip" "bufio" "fmt" "io" @@ -104,55 +103,6 @@ func ReadFileLines(path string) ([]string, error) { return lines, nil } -// ZipFiles compresses the given file list to a zip file -func ZipFiles(filename string, files []string) error { - newZipFile, err := os.Create(filename) - if err != nil { - return err - } - defer newZipFile.Close() - - zipWriter := zip.NewWriter(newZipFile) - defer zipWriter.Close() - - // Add files to zip - for _, file := range files { - if err = addFileToZip(zipWriter, file); err != nil { - return err - } - } - return nil -} - -func addFileToZip(zipWriter *zip.Writer, filename string) error { - fileToZip, err := os.Open(filename) - if err != nil { - return err - } - defer fileToZip.Close() - - info, err := fileToZip.Stat() - if err != nil { - return err - } - - header, err := zip.FileInfoHeader(info) - if err != nil { - return err - } - header.Name = filepath.Base(filename) - - // Change to deflate to gain better compression - header.Method = zip.Deflate - - writer, err := zipWriter.CreateHeader(header) - if err != nil { - return err - } - _, err = io.Copy(writer, fileToZip) - return err -} - // CopyFile copy a file from src path to dest path func CopyFile(src string, dest string) (int64, error) { srcStat, err := os.Stat(src) diff --git a/services/frp.go b/services/frp.go index 37a87809c..286f15168 100644 --- a/services/frp.go +++ b/services/frp.go @@ -1,21 +1,47 @@ package services import ( + "bytes" + "fmt" "os" + "os/signal" + "path/filepath" + "syscall" + "time" "github.com/koho/frpmgr/pkg/config" "github.com/koho/frpmgr/pkg/util" _ "github.com/fatedier/frp/assets/frpc" - frpc "github.com/fatedier/frp/cmd/frpc/sub" + "github.com/fatedier/frp/client" frpconfig "github.com/fatedier/frp/pkg/config" "github.com/fatedier/frp/pkg/util/log" ) -func runFrpClient() { - // Change program arguments for frpc to parse - // No need to change it for now - frpc.Execute() +func runFrpClient(data []byte) { + cfg, pxyCfgs, visitorCfgs, err := parseClientConfig(data) + if err != nil { + os.Exit(1) + } + log.InitLog(cfg.LogWay, cfg.LogFile, cfg.LogLevel, + cfg.LogMaxDays, cfg.DisableLogColor) + + svr, err := client.NewService(cfg, pxyCfgs, visitorCfgs, "") + if err != nil { + os.Exit(1) + } + + closedDoneCh := make(chan struct{}) + shouldGracefulClose := cfg.Protocol == "kcp" || cfg.Protocol == "quic" + // Capture the exit signal if we use kcp or quic. + if shouldGracefulClose { + go handleSignal(svr, closedDoneCh) + } + + err = svr.Run() + if err == nil && shouldGracefulClose { + <-closedDoneCh + } } func deleteFrpConfig(serviceName string, configPath string, c config.Config) { @@ -42,7 +68,11 @@ func deleteFrpConfig(serviceName string, configPath string, c config.Config) { // VerifyClientConfig validates the frp client config file func VerifyClientConfig(path string) (err error) { - _, _, _, err = frpconfig.ParseClientConfig(path) + data, err := config.ReadFile(path) + if err != nil { + return err + } + _, _, _, err = parseClientConfig(data) return } @@ -51,3 +81,88 @@ func VerifyClientProxy(source []byte) (err error) { _, _, err = frpconfig.LoadAllProxyConfsFromIni("", source, nil) return } + +func parseClientConfig(data []byte) ( + cfg frpconfig.ClientCommonConf, + pxyCfgs map[string]frpconfig.ProxyConf, + visitorCfgs map[string]frpconfig.VisitorConf, + err error, +) { + var content []byte + content, err = frpconfig.RenderContent(data) + if err != nil { + return + } + configBuffer := bytes.NewBuffer(nil) + configBuffer.Write(content) + + // Parse common section. + cfg, err = frpconfig.UnmarshalClientConfFromIni(content) + if err != nil { + return + } + cfg.Complete() + if err = cfg.Validate(); err != nil { + err = fmt.Errorf("parse config error: %v", err) + return + } + + // Aggregate proxy configs from include files. + var buf []byte + buf, err = getIncludeContents(cfg.IncludeConfigFiles) + if err != nil { + err = fmt.Errorf("getIncludeContents error: %v", err) + return + } + configBuffer.WriteString("\n") + configBuffer.Write(buf) + + // Parse all proxy and visitor configs. + pxyCfgs, visitorCfgs, err = frpconfig.LoadAllProxyConfsFromIni(cfg.User, configBuffer.Bytes(), cfg.Start) + if err != nil { + return + } + return +} + +func handleSignal(svr *client.Service, doneCh chan struct{}) { + ch := make(chan os.Signal, 1) + signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM) + <-ch + svr.GracefulClose(500 * time.Millisecond) + close(doneCh) +} + +// getIncludeContents renders all configs from paths. +// files format can be a single file path or directory or regex path. +func getIncludeContents(paths []string) ([]byte, error) { + out := bytes.NewBuffer(nil) + for _, path := range paths { + absDir, err := filepath.Abs(filepath.Dir(path)) + if err != nil { + return nil, err + } + if _, err := os.Stat(absDir); os.IsNotExist(err) { + return nil, err + } + files, err := os.ReadDir(absDir) + if err != nil { + return nil, err + } + for _, fi := range files { + if fi.IsDir() { + continue + } + absFile := filepath.Join(absDir, fi.Name()) + if matched, _ := filepath.Match(filepath.Join(absDir, filepath.Base(path)), absFile); matched { + tmpContent, err := frpconfig.GetRenderedConfFromFile(absFile) + if err != nil { + return nil, fmt.Errorf("render extra config %s error: %v", absFile, err) + } + out.Write(tmpContent) + out.WriteString("\n") + } + } + } + return out.Bytes(), nil +} diff --git a/services/service.go b/services/service.go index 9fe0e06a4..ed2af11af 100644 --- a/services/service.go +++ b/services/service.go @@ -40,7 +40,11 @@ func (service *frpService) Execute(args []string, r <-chan svc.ChangeRequest, ch log.Println("Shutting down") }() - cc, err := config.UnmarshalClientConfFromIni(service.configPath) + data, err := config.ReadFile(service.configPath) + if err != nil { + return + } + cc, err := config.UnmarshalClientConfFromIni(data) if err != nil { return } @@ -59,7 +63,7 @@ func (service *frpService) Execute(args []string, r <-chan svc.ChangeRequest, ch return } - go runFrpClient() + go runFrpClient(data) changes <- svc.Status{State: svc.Running, Accepts: svc.AcceptStop | svc.AcceptShutdown} log.Println("Startup complete") diff --git a/ui/conf.go b/ui/conf.go index 2e991937e..a32d30706 100644 --- a/ui/conf.go +++ b/ui/conf.go @@ -3,6 +3,7 @@ package ui import ( "os" "path/filepath" + "strings" "sync" "github.com/koho/frpmgr/pkg/config" @@ -64,8 +65,17 @@ func (conf *Conf) Delete() (bool, error) { // Save config to the disk. The config will be completed before saving func (conf *Conf) Save() error { conf.Data.Complete(false) - conf.Path = PathOfConf(conf.Name + ".ini") - return conf.Data.Save(conf.Path) + oldPath := conf.Path + conf.Path = PathOfConf(conf.Name + ".dat") + if err := conf.Data.Save(conf.Path); err != nil { + return err + } + // If the config is loaded from a ".ini" file, we should + // delete this file because an encrypted file is written. + if strings.HasSuffix(oldPath, ".ini") { + _ = os.Remove(oldPath) + } + return nil } var ( @@ -84,12 +94,16 @@ var ( func loadAllConfs() error { _ = config.UnmarshalAppConfFromIni(config.DefaultAppFile, &appConf) // Find all config files in `profiles` directory - files, err := filepath.Glob(PathOfConf("*.ini")) + datFiles, err := filepath.Glob(PathOfConf("*.dat")) + if err != nil { + return err + } + iniFiles, err := filepath.Glob(PathOfConf("*.ini")) if err != nil { return err } confList = make([]*Conf, 0) - for _, f := range files { + for _, f := range append(datFiles, iniFiles...) { c := NewConf(f, nil) if conf, err := config.UnmarshalClientConfFromIni(f); err == nil { c.Data = conf diff --git a/ui/confview.go b/ui/confview.go index ccd394173..8abb3b9f4 100644 --- a/ui/confview.go +++ b/ui/confview.go @@ -13,6 +13,7 @@ import ( "github.com/koho/frpmgr/pkg/config" "github.com/koho/frpmgr/pkg/consts" "github.com/koho/frpmgr/pkg/layout" + "github.com/koho/frpmgr/pkg/sec" "github.com/koho/frpmgr/pkg/util" "github.com/lxn/walk" @@ -61,15 +62,6 @@ func (cv *ConfView) View() Widget { Enabled: Bind("conf.Selected"), OnTriggered: cv.editCurrent, }, - Action{Text: i18n.Sprintf("Open File"), - Enabled: Bind("conf.Selected"), - OnTriggered: func() { cv.onOpen(false) }, - }, - Action{ - Text: i18n.Sprintf("Show in Folder"), - Enabled: Bind("conf.Selected"), - OnTriggered: func() { cv.onOpen(true) }, - }, Separator{}, Action{Text: i18n.Sprintf("New Configuration"), OnTriggered: cv.editNew}, Menu{ @@ -276,7 +268,12 @@ func (cv *ConfView) onURLImport() { showError(err, cv.Form()) continue } - if err = os.WriteFile(newPath, item.Data, 0666); err != nil { + encrypted, err := sec.Encrypt(item.Data) + if err != nil { + showError(err, cv.Form()) + continue + } + if err = os.WriteFile(newPath, encrypted, 0666); err != nil { showError(err, cv.Form()) continue } @@ -292,15 +289,21 @@ func (cv *ConfView) onURLImport() { func (cv *ConfView) checkConfName(filename string, rename bool) (string, bool) { suffix := "" checkName: - newPath := PathOfConf(util.AddFileSuffix(filename, suffix)) - if _, err := os.Stat(newPath); err == nil { - if rename { - suffix = "_" + funk.RandomString(4) - goto checkName + // The config file has two different extensions. + // We should make sure none of these files exist. + baseName, _ := util.SplitExt(filename) + datPath := PathOfConf(util.AddFileSuffix(baseName+".dat", suffix)) + iniPath := PathOfConf(util.AddFileSuffix(baseName+".ini", suffix)) + for _, path := range []string{datPath, iniPath} { + if _, err := os.Stat(path); err == nil { + if rename { + suffix = "_" + funk.RandomString(4) + goto checkName + } + return path, false } - return newPath, false } - return newPath, true + return datPath, true } func (cv *ConfView) onFileImport() { @@ -352,7 +355,7 @@ func (cv *ConfView) ImportFiles(files []string) { showError(err, cv.Form()) continue } - if _, err = util.CopyFile(path, newPath); err != nil { + if err = sec.EncryptFile(path, newPath); err != nil { showError(err, cv.Form()) continue } @@ -388,7 +391,11 @@ func (cv *ConfView) importZip(path string, data []byte, rename bool) (total, imp return err } defer fw.Close() - if _, err = fw.Write(src); err != nil { + encrypted, err := sec.Encrypt(src) + if err != nil { + return err + } + if _, err = fw.Write(encrypted); err != nil { return err } addConf(NewConf(dst, conf)) @@ -472,18 +479,6 @@ func (cv *ConfView) onCopyShareLink() { } } -func (cv *ConfView) onOpen(folder bool) { - if conf := getCurrentConf(); conf != nil { - if path, err := filepath.Abs(conf.Path); err == nil { - if folder { - openFolder(path) - } else { - openPath(path) - } - } - } -} - func (cv *ConfView) onDelete() { if conf := getCurrentConf(); conf != nil { if walk.MsgBox(cv.Form(), i18n.Sprintf("Delete config \"%s\"", conf.Name), @@ -521,7 +516,7 @@ func (cv *ConfView) onExport() { files := funk.Map(confList, func(conf *Conf) string { return conf.Path }) - if err := util.ZipFiles(dlg.FilePath, files.([]string)); err != nil { + if err := config.Zip(dlg.FilePath, files.([]string)); err != nil { showError(err, cv.Form()) } } diff --git a/ui/pluginproxy.go b/ui/pluginproxy.go index 01008faa5..3fe60fabc 100644 --- a/ui/pluginproxy.go +++ b/ui/pluginproxy.go @@ -38,7 +38,7 @@ func NewPluginProxyDialog(title string, icon *walk.Icon, plugin string) *PluginP func (pp *PluginProxyDialog) Run(owner walk.Form) (int, error) { widgets := []Widget{ Label{Text: i18n.SprintfColon("Remote Port")}, - LineEdit{Text: Bind("RemotePort", consts.ValidatePortRange...)}, + LineEdit{Text: Bind("RemotePort", consts.ValidatePortRange...), MinSize: Size{Width: 280}}, } switch pp.plugin { case consts.PluginHttpProxy, consts.PluginSocks5: @@ -51,10 +51,6 @@ func (pp *PluginProxyDialog) Run(owner walk.Form) (int, error) { }), }, widgets...) case consts.PluginStaticFile: - // Make the dialog wider - remoteView := widgets[1].(LineEdit) - remoteView.MinSize = Size{Width: 300} - widgets[1] = remoteView widgets = append(widgets, Label{Text: i18n.SprintfColon("Local Directory")}, NewBrowseLineEdit(nil, true, true, Bind("Dir", consts.ValidateNonEmpty), diff --git a/ui/proxyview.go b/ui/proxyview.go index 0cfc53bea..d36c36768 100644 --- a/ui/proxyview.go +++ b/ui/proxyview.go @@ -3,7 +3,6 @@ package ui import ( "fmt" "net" - "path/filepath" "strings" "github.com/koho/frpmgr/i18n" @@ -36,8 +35,6 @@ type ProxyView struct { vpnAction *walk.Action editAction *walk.Action deleteAction *walk.Action - openConfAction *walk.Action - showConfAction *walk.Action toggleAction *walk.Action } @@ -226,26 +223,6 @@ func (pv *ProxyView) createToolbar() ToolBar { Enabled: Bind("proxy.CurrentIndex >= 0"), OnTriggered: pv.onDelete, }, - Menu{ - Text: i18n.Sprintf("Open Config"), - Image: loadResourceIcon(consts.IconOpen, 16), - Items: []MenuItem{ - Action{ - AssignTo: &pv.openConfAction, - Text: i18n.Sprintf("Direct Edit"), - OnTriggered: func() { - pv.onOpenConfig(false) - }, - }, - Action{ - AssignTo: &pv.showConfAction, - Text: i18n.Sprintf("Show in Folder"), - OnTriggered: func() { - pv.onOpenConfig(true) - }, - }, - }, - }, }, } } @@ -296,14 +273,6 @@ func (pv *ProxyView) createProxyTable() TableView { Image: loadSysIcon("shell32", consts.IconSysCopy, 16), OnTriggered: pv.onCopyAccessAddr, }, - Menu{ - Text: i18n.Sprintf("Open Config"), - Image: loadResourceIcon(consts.IconOpen, 16), - Items: []MenuItem{ - ActionRef{Action: &pv.openConfAction}, - ActionRef{Action: &pv.showConfAction}, - }, - }, Separator{}, ActionRef{Action: &pv.deleteAction}, }, @@ -482,19 +451,6 @@ func (pv *ProxyView) onQuickAdd(qa QuickAdd) { } } -func (pv *ProxyView) onOpenConfig(folder bool) { - if pv.model == nil { - return - } - if path, err := filepath.Abs(pv.model.conf.Path); err == nil { - if folder { - openFolder(path) - } else { - openPath(path) - } - } -} - // switchToggleAction updates the toggle action based on the current selected proxy func (pv *ProxyView) switchToggleAction() { conf, proxy := pv.getConfigProxy(pv.table.CurrentIndex())