Upload 5 files
Browse files- docker-compose.yml +14 -0
- go.sum +145 -0
- init.go +239 -0
- main.go +37 -0
- url.txt +309 -0
docker-compose.yml
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
version: '3.8'
|
2 |
+
services:
|
3 |
+
deeplx:
|
4 |
+
build:
|
5 |
+
context: .
|
6 |
+
dockerfile: Dockerfile
|
7 |
+
args:
|
8 |
+
GOOS: linux
|
9 |
+
GOARCH: amd64
|
10 |
+
image: deeplx-local
|
11 |
+
ports:
|
12 |
+
- "62155:62155"
|
13 |
+
container_name: deeplx
|
14 |
+
restart: unless-stopped
|
go.sum
ADDED
@@ -0,0 +1,145 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M=
|
2 |
+
github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY=
|
3 |
+
github.com/bytedance/sonic v1.11.6 h1:oUp34TzMlL+OY1OUWxHqsdkgC/Zfc85zGqw9siXjrc0=
|
4 |
+
github.com/bytedance/sonic v1.11.6/go.mod h1:LysEHSvpvDySVdC2f87zGWf6CIKJcAvqab1ZaiQtds4=
|
5 |
+
github.com/bytedance/sonic/loader v0.1.1 h1:c+e5Pt1k/cy5wMveRDyk2X4B9hF4g7an8N3zCYjJFNM=
|
6 |
+
github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
|
7 |
+
github.com/cloudflare/circl v1.3.8 h1:j+V8jJt09PoeMFIu2uh5JUyEaIHTXVOHslFoLNAKqwI=
|
8 |
+
github.com/cloudflare/circl v1.3.8/go.mod h1:PDRU+oXvdD7KCtgKxW95M5Z8BpSCJXQORiZFnBQS5QU=
|
9 |
+
github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y=
|
10 |
+
github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w=
|
11 |
+
github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg=
|
12 |
+
github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY=
|
13 |
+
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
14 |
+
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
15 |
+
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
16 |
+
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
17 |
+
github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0=
|
18 |
+
github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk=
|
19 |
+
github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
|
20 |
+
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
|
21 |
+
github.com/gin-gonic/gin v1.10.0 h1:nTuyha1TYqgedzytsKYqna+DfLos46nTv2ygFy86HFU=
|
22 |
+
github.com/gin-gonic/gin v1.10.0/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y=
|
23 |
+
github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
|
24 |
+
github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
|
25 |
+
github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=
|
26 |
+
github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
|
27 |
+
github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=
|
28 |
+
github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
|
29 |
+
github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=
|
30 |
+
github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
|
31 |
+
github.com/go-playground/validator/v10 v10.20.0 h1:K9ISHbSaI0lyB2eWMPJo+kOS/FBExVwjEviJTixqxL8=
|
32 |
+
github.com/go-playground/validator/v10 v10.20.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM=
|
33 |
+
github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
|
34 |
+
github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
|
35 |
+
github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU=
|
36 |
+
github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
|
37 |
+
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
38 |
+
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
39 |
+
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
40 |
+
github.com/google/pprof v0.0.0-20240509144519-723abb6459b7 h1:velgFPYr1X9TDwLIfkV7fWqsFlf7TeP11M/7kPd/dVI=
|
41 |
+
github.com/google/pprof v0.0.0-20240509144519-723abb6459b7/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw=
|
42 |
+
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
|
43 |
+
github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=
|
44 |
+
github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
|
45 |
+
github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=
|
46 |
+
github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
|
47 |
+
github.com/imroc/req/v3 v3.43.5 h1:fL7dOEfld+iEv1rwnIxseJz2/Y7JZ/HgbAURLZkat80=
|
48 |
+
github.com/imroc/req/v3 v3.43.5/go.mod h1:SQIz5iYop16MJxbo8ib+4LnostGCok8NQf8ToyQc2xA=
|
49 |
+
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
|
50 |
+
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
|
51 |
+
github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU=
|
52 |
+
github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
|
53 |
+
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
54 |
+
github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM=
|
55 |
+
github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
|
56 |
+
github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M=
|
57 |
+
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
|
58 |
+
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
|
59 |
+
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
60 |
+
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
61 |
+
github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ=
|
62 |
+
github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI=
|
63 |
+
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
64 |
+
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
65 |
+
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
66 |
+
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
|
67 |
+
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
68 |
+
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
|
69 |
+
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
|
70 |
+
github.com/onsi/ginkgo/v2 v2.17.3 h1:oJcvKpIb7/8uLpDDtnQuf18xVnwKp8DTD7DQ6gTd/MU=
|
71 |
+
github.com/onsi/ginkgo/v2 v2.17.3/go.mod h1:nP2DPOQoNsQmsVyv5rDA8JkXQoCs6goXIvr/PRJ1eCc=
|
72 |
+
github.com/onsi/gomega v1.33.0 h1:snPCflnZrpMsy94p4lXVEkHo12lmPnc3vY5XBbreexE=
|
73 |
+
github.com/onsi/gomega v1.33.0/go.mod h1:+925n5YtiFsLzzafLUHzVMBpvvRAzrydIBiSIxjX3wY=
|
74 |
+
github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=
|
75 |
+
github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs=
|
76 |
+
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
|
77 |
+
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
78 |
+
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
79 |
+
github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo=
|
80 |
+
github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A=
|
81 |
+
github.com/quic-go/quic-go v0.43.1 h1:fLiMNfQVe9q2JvSsiXo4fXOEguXHGGl9+6gLp4RPeZQ=
|
82 |
+
github.com/quic-go/quic-go v0.43.1/go.mod h1:132kz4kL3F9vxhW3CtQJLDVwcFe5wdWeJXXijhsO57M=
|
83 |
+
github.com/refraction-networking/utls v1.6.6 h1:igFsYBUJPYM8Rno9xUuDoM5GQrVEqY4llzEXOkL43Ig=
|
84 |
+
github.com/refraction-networking/utls v1.6.6/go.mod h1:BC3O4vQzye5hqpmDTWUqi4P5DDhzJfkV1tdqtawQIH0=
|
85 |
+
github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
|
86 |
+
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
|
87 |
+
github.com/samber/lo v1.39.0 h1:4gTz1wUhNYLhFSKl6O+8peW0v2F4BCY034GRpU9WnuA=
|
88 |
+
github.com/samber/lo v1.39.0/go.mod h1:+m/ZKRl6ClXCE2Lgf3MsQlWfh4bn1bz6CXEOxnEXnEA=
|
89 |
+
github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo=
|
90 |
+
github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0=
|
91 |
+
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
92 |
+
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
93 |
+
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
94 |
+
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
|
95 |
+
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
96 |
+
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
97 |
+
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
98 |
+
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
99 |
+
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
100 |
+
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
101 |
+
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
|
102 |
+
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
103 |
+
github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
|
104 |
+
github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
|
105 |
+
github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE=
|
106 |
+
github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
|
107 |
+
github.com/ycvk/endless v0.0.0-20240425132555-71b31d16be07 h1:A2rqcS6q0CdGyzAiSJrodyAcmRknggK/CoADl3luPBA=
|
108 |
+
github.com/ycvk/endless v0.0.0-20240425132555-71b31d16be07/go.mod h1:zzOu1a0/ntowiZdsZB7KHvqxtw6jUGpSCB2v5ojjUOc=
|
109 |
+
go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU=
|
110 |
+
go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc=
|
111 |
+
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
|
112 |
+
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
|
113 |
+
golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
|
114 |
+
golang.org/x/arch v0.8.0 h1:3wRIsP3pM4yUptoR96otTUOXI367OS0+c9eeRi9doIc=
|
115 |
+
golang.org/x/arch v0.8.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys=
|
116 |
+
golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI=
|
117 |
+
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
|
118 |
+
golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 h1:vr/HnozRka3pE4EsMEg1lgkXJkTFJCVUX+S/ZT6wYzM=
|
119 |
+
golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc=
|
120 |
+
golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA=
|
121 |
+
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
122 |
+
golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac=
|
123 |
+
golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
|
124 |
+
golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
|
125 |
+
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
126 |
+
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
127 |
+
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
128 |
+
golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=
|
129 |
+
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
130 |
+
golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk=
|
131 |
+
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
132 |
+
golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
|
133 |
+
golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
|
134 |
+
golang.org/x/tools v0.21.0 h1:qc0xYgIbsSDt9EyWz05J5wfa7LOVW0YTLOXrqdLAWIw=
|
135 |
+
golang.org/x/tools v0.21.0/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
|
136 |
+
google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg=
|
137 |
+
google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
|
138 |
+
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
139 |
+
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
|
140 |
+
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
141 |
+
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
142 |
+
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
143 |
+
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
144 |
+
nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50=
|
145 |
+
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
|
init.go
ADDED
@@ -0,0 +1,239 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
package main
|
2 |
+
|
3 |
+
import (
|
4 |
+
"context"
|
5 |
+
"deeplx-local/channel"
|
6 |
+
"deeplx-local/cron"
|
7 |
+
"deeplx-local/pkg"
|
8 |
+
"deeplx-local/service"
|
9 |
+
"errors"
|
10 |
+
"fmt"
|
11 |
+
"github.com/imroc/req/v3"
|
12 |
+
lop "github.com/samber/lo/parallel"
|
13 |
+
"github.com/sourcegraph/conc/pool"
|
14 |
+
"log"
|
15 |
+
"net/http"
|
16 |
+
"os"
|
17 |
+
"os/exec"
|
18 |
+
"os/signal"
|
19 |
+
"regexp"
|
20 |
+
"strconv"
|
21 |
+
"strings"
|
22 |
+
"syscall"
|
23 |
+
"time"
|
24 |
+
)
|
25 |
+
|
26 |
+
var (
|
27 |
+
client = req.NewClient().SetTimeout(3 * time.Second)
|
28 |
+
hunterKey = os.Getenv("hunter_api_key")
|
29 |
+
quakeKey = os.Getenv("360_api_key")
|
30 |
+
scanService service.ScanService
|
31 |
+
)
|
32 |
+
|
33 |
+
// readFile
|
34 |
+
func readFile(filename string) ([]byte, error) {
|
35 |
+
_, err := os.Stat(filename)
|
36 |
+
if err != nil {
|
37 |
+
// file no exit, create it and return nil
|
38 |
+
if errors.Is(err, os.ErrNotExist) {
|
39 |
+
log.Println("url.txt is not exist")
|
40 |
+
return nil, os.WriteFile(filename, []byte{}, 0600)
|
41 |
+
}
|
42 |
+
|
43 |
+
// Other error
|
44 |
+
return nil, err
|
45 |
+
}
|
46 |
+
|
47 |
+
// file exist, read it
|
48 |
+
content, err := os.ReadFile("url.txt")
|
49 |
+
if err != nil {
|
50 |
+
log.Fatal(err)
|
51 |
+
}
|
52 |
+
|
53 |
+
return content, nil
|
54 |
+
}
|
55 |
+
|
56 |
+
// getValidURLs 从文件中读取并处理URL
|
57 |
+
func getValidURLs() []string {
|
58 |
+
content, err := readFile("url.txt")
|
59 |
+
if err != nil {
|
60 |
+
log.Fatal(err)
|
61 |
+
}
|
62 |
+
|
63 |
+
var urls []string
|
64 |
+
if len(content) == 0 {
|
65 |
+
log.Println("url.txt is empty")
|
66 |
+
s := getScanService()
|
67 |
+
scan := s.Scan()
|
68 |
+
if len(scan) == 0 {
|
69 |
+
log.Fatalln("url.txt is empty and scan failed")
|
70 |
+
return nil
|
71 |
+
}
|
72 |
+
urls = processUrls(scan)
|
73 |
+
} else {
|
74 |
+
urls = strings.Split(string(content), "\n")
|
75 |
+
}
|
76 |
+
// 处理URL
|
77 |
+
urls = processUrls(urls)
|
78 |
+
|
79 |
+
validList := make([]string, 0, len(urls))
|
80 |
+
|
81 |
+
// 并发检查URL可用性
|
82 |
+
p := pool.New().WithMaxGoroutines(30)
|
83 |
+
for _, url := range urls {
|
84 |
+
p.Go(func() {
|
85 |
+
if availability, err := pkg.CheckURLAvailability(client, url); err == nil && availability {
|
86 |
+
validList = append(validList, url)
|
87 |
+
}
|
88 |
+
})
|
89 |
+
}
|
90 |
+
p.Wait()
|
91 |
+
|
92 |
+
log.Printf("available urls count: %d\n", len(validList))
|
93 |
+
//os.WriteFile("url.txt", []byte(strings.Join(validList, "\n")), 0600) // 保存
|
94 |
+
return validList
|
95 |
+
}
|
96 |
+
|
97 |
+
func processUrls(urls []string) []string {
|
98 |
+
// 使用正则表达式处理 URL 后缀
|
99 |
+
suffixPattern := regexp.MustCompile(`(?:/translate)?/?$`)
|
100 |
+
// 使用正则表达式处理 URL 前缀
|
101 |
+
prefixPattern := regexp.MustCompile("^(http|https)://")
|
102 |
+
|
103 |
+
urls = lop.Map(urls, func(url string, _ int) string {
|
104 |
+
u := strings.TrimSpace(url)
|
105 |
+
u = suffixPattern.ReplaceAllString(u, "/translate")
|
106 |
+
if prefixPattern.MatchString(u) {
|
107 |
+
return u
|
108 |
+
}
|
109 |
+
return "http://" + u
|
110 |
+
})
|
111 |
+
|
112 |
+
// 去重
|
113 |
+
distinctURLs(&urls)
|
114 |
+
// 保存处理后的URL
|
115 |
+
os.WriteFile("url.txt", []byte(strings.Join(urls, "\n")), 0600)
|
116 |
+
return urls
|
117 |
+
}
|
118 |
+
|
119 |
+
// distinctURLs 去重
|
120 |
+
func distinctURLs(urls *[]string) {
|
121 |
+
if len(*urls) == 0 {
|
122 |
+
return
|
123 |
+
}
|
124 |
+
hashset := make(map[string]struct{})
|
125 |
+
for i := 0; i < len(*urls); i++ {
|
126 |
+
if _, ok := hashset[(*urls)[i]]; ok {
|
127 |
+
copy((*urls)[i:], (*urls)[i+1:])
|
128 |
+
*urls = (*urls)[:len(*urls)-1]
|
129 |
+
i--
|
130 |
+
} else {
|
131 |
+
hashset[(*urls)[i]] = struct{}{}
|
132 |
+
}
|
133 |
+
}
|
134 |
+
}
|
135 |
+
|
136 |
+
// 监听退出
|
137 |
+
func exit(engine *http.Server) {
|
138 |
+
osSig := make(chan os.Signal, 1)
|
139 |
+
quit := make(chan bool, 1)
|
140 |
+
|
141 |
+
signal.Notify(osSig, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT)
|
142 |
+
go func() {
|
143 |
+
sig := <-osSig
|
144 |
+
fmt.Println("收到退出信号: ", sig)
|
145 |
+
// 退出web服务
|
146 |
+
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
|
147 |
+
defer cancel()
|
148 |
+
if err := engine.Shutdown(ctx); err != nil {
|
149 |
+
fmt.Println("web服务退出失败: ", err)
|
150 |
+
}
|
151 |
+
if sig == syscall.SIGHUP {
|
152 |
+
channel.Restart <- sig
|
153 |
+
quit <- true
|
154 |
+
} else {
|
155 |
+
quit <- true
|
156 |
+
}
|
157 |
+
}()
|
158 |
+
<-quit
|
159 |
+
fmt.Println("服务 PID 为: ", os.Getpid())
|
160 |
+
fmt.Println("服务已退出")
|
161 |
+
// 查杀
|
162 |
+
exec.Command("killall", "main", strconv.Itoa(os.Getpid())).Run()
|
163 |
+
// 自杀
|
164 |
+
exec.Command("kill", "-9", strconv.Itoa(os.Getpid())).Run()
|
165 |
+
}
|
166 |
+
|
167 |
+
func exitV1() {
|
168 |
+
osSig := make(chan os.Signal, 1)
|
169 |
+
quit := make(chan bool, 1)
|
170 |
+
|
171 |
+
signal.Notify(osSig, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT)
|
172 |
+
go func() {
|
173 |
+
sig := <-osSig
|
174 |
+
fmt.Println("收到退出信号: ", sig)
|
175 |
+
channel.Quit <- sig
|
176 |
+
quit <- true
|
177 |
+
}()
|
178 |
+
<-quit
|
179 |
+
}
|
180 |
+
|
181 |
+
func getScanService() service.ScanService {
|
182 |
+
if scanService != nil {
|
183 |
+
return scanService
|
184 |
+
}
|
185 |
+
|
186 |
+
if hunterKey == "" && quakeKey == "" {
|
187 |
+
log.Println("未提供有YingTu 或 360的API Key")
|
188 |
+
return nil
|
189 |
+
}
|
190 |
+
|
191 |
+
var (
|
192 |
+
cli = req.NewClient().SetTimeout(15 * time.Second)
|
193 |
+
services []service.ScanService
|
194 |
+
)
|
195 |
+
|
196 |
+
if hunterKey != "" {
|
197 |
+
services = append(services, service.NewYingTuScanService(cli, hunterKey))
|
198 |
+
}
|
199 |
+
|
200 |
+
if quakeKey != "" {
|
201 |
+
services = append(services, service.NewQuake360ScanService(cli, quakeKey))
|
202 |
+
}
|
203 |
+
|
204 |
+
// 返回组合扫描服务
|
205 |
+
return service.NewCombinedScanService(services...)
|
206 |
+
|
207 |
+
}
|
208 |
+
|
209 |
+
func autoScan() {
|
210 |
+
scanService := getScanService()
|
211 |
+
if scanService == nil {
|
212 |
+
return
|
213 |
+
}
|
214 |
+
cron.StartTimer(time.Hour*24*2, func() {
|
215 |
+
scan := scanService.Scan()
|
216 |
+
distinctURLs(&scan) // 去重
|
217 |
+
urls := processUrls(scan) // 处理URL
|
218 |
+
writeFile("url.txt", urls) // 保存
|
219 |
+
exec.Command("kill", "-1", strconv.Itoa(os.Getpid())).Run() // 重启
|
220 |
+
})
|
221 |
+
}
|
222 |
+
|
223 |
+
func writeFile(path string, urls []string) {
|
224 |
+
// 打开文件,如果文件不存在则创建
|
225 |
+
file, err := os.OpenFile(path, os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0600)
|
226 |
+
if err != nil {
|
227 |
+
log.Println("文件打开失败", err)
|
228 |
+
return
|
229 |
+
}
|
230 |
+
defer file.Close()
|
231 |
+
|
232 |
+
// 要写入的内容,增量保存
|
233 |
+
text := "\n" + strings.Join(urls, "\n")
|
234 |
+
|
235 |
+
// 写入文件
|
236 |
+
if _, err = file.WriteString(text); err != nil {
|
237 |
+
log.Println("写入文件失败", err)
|
238 |
+
}
|
239 |
+
}
|
main.go
ADDED
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
package main
|
2 |
+
|
3 |
+
import (
|
4 |
+
"deeplx-local/service"
|
5 |
+
"deeplx-local/web"
|
6 |
+
"errors"
|
7 |
+
"github.com/gin-gonic/gin"
|
8 |
+
"github.com/ycvk/endless"
|
9 |
+
"log"
|
10 |
+
"net/http"
|
11 |
+
)
|
12 |
+
|
13 |
+
func main() {
|
14 |
+
initServer() // 初始化服务
|
15 |
+
autoScan() // 自动扫描
|
16 |
+
exitV1() // 监听退出
|
17 |
+
select {}
|
18 |
+
}
|
19 |
+
|
20 |
+
func initServer() {
|
21 |
+
// 从文件中读取并处理URL
|
22 |
+
urLs := getValidURLs()
|
23 |
+
|
24 |
+
// 注册服务
|
25 |
+
gin.SetMode(gin.ReleaseMode)
|
26 |
+
r := gin.Default()
|
27 |
+
//lxService := service.NewDeepLXService(&urLs)
|
28 |
+
balancerService := service.NewLoadBalancer(&urLs)
|
29 |
+
lxHandler := web.NewDeepLXHandler(balancerService)
|
30 |
+
lxHandler.RegisterRoutes(r)
|
31 |
+
|
32 |
+
go func() {
|
33 |
+
if err := endless.ListenAndServe("0.0.0.0:62155", r); err != nil && !errors.Is(err, http.ErrServerClosed) {
|
34 |
+
log.Fatal("web服务启动失败: ", err)
|
35 |
+
}
|
36 |
+
}()
|
37 |
+
}
|
url.txt
ADDED
@@ -0,0 +1,309 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
http://150.158.80.45:6009/translate
|
2 |
+
http://120.46.95.125:1188/translate
|
3 |
+
http://124.223.61.24:1199/translate
|
4 |
+
http://101.43.100.100:1188/translate
|
5 |
+
http://119.3.249.194:1188/translate
|
6 |
+
http://113.45.191.39:1188/translate
|
7 |
+
http://81.70.207.129:1188/translate
|
8 |
+
http://119.91.23.165:1188/translate
|
9 |
+
http://101.43.224.133:1188/translate
|
10 |
+
http://159.75.240.245:1188/translate
|
11 |
+
http://39.105.97.161:1188/translate
|
12 |
+
http://47.119.172.46:1188/translate
|
13 |
+
http://43.132.160.253:1188/translate
|
14 |
+
http://deeplx.0x318.com/translate
|
15 |
+
http://124.223.85.170:1188/translate
|
16 |
+
http://47.76.126.155:1188/translate
|
17 |
+
http://47.242.206.190:1188/translate
|
18 |
+
http://116.252.28.28:1188/translate
|
19 |
+
http://122.112.213.216:11188/translate
|
20 |
+
http://121.41.99.203:1188/translate
|
21 |
+
http://123.56.13.17:1188/translate
|
22 |
+
http://165.154.5.156:1188/translate
|
23 |
+
http://47.119.24.34:1188/translate
|
24 |
+
http://101.42.160.235:1188/translate
|
25 |
+
http://153.36.242.81:10030/translate
|
26 |
+
http://124.71.191.52:1188/translate
|
27 |
+
http://116.62.112.61:1188/translate
|
28 |
+
http://8.134.81.54:60005/translate
|
29 |
+
http://82.157.49.14:1188/translate
|
30 |
+
http://59.110.162.193:1188/translate
|
31 |
+
http://106.14.139.26:1188/translate
|
32 |
+
https://49.232.185.166/translate
|
33 |
+
http://120.55.189.173:1188/translate
|
34 |
+
http://43.143.233.18:1188/translate
|
35 |
+
http://47.109.98.57:1188/translate
|
36 |
+
http://116.205.130.49:1188/translate
|
37 |
+
http://8.138.111.57:1188/translate
|
38 |
+
http://deeplx.xukecheng.tech/translate
|
39 |
+
http://109.206.245.73:1188/translate
|
40 |
+
http://119.28.13.127:1188/translate
|
41 |
+
http://43.154.208.219:1188/translate
|
42 |
+
http://124.221.198.187:1188/translate
|
43 |
+
http://139.159.242.136:1188/translate
|
44 |
+
http://139.224.191.20:1188/translate
|
45 |
+
http://47.102.106.172:1188/translate
|
46 |
+
http://121.43.36.212:1188/translate
|
47 |
+
http://8.131.60.61:1188/translate
|
48 |
+
http://42.192.21.116:1188/translate
|
49 |
+
http://16.163.29.52:12294/translate
|
50 |
+
http://139.159.254.35:1188/translate
|
51 |
+
http://log.windroad.work:6009/translate
|
52 |
+
http://deepl.19921130.xyz/translate
|
53 |
+
https://deepl.kevinzhang.cn/translate
|
54 |
+
http://43.139.218.213:1188/translate
|
55 |
+
http://panel.windroad.work:6009/translate
|
56 |
+
http://8.130.121.171:1188/translate
|
57 |
+
http://43.143.198.166:1188/translate
|
58 |
+
http://www.vpn.yanhao.ren:1188/translate
|
59 |
+
http://6948lsh.yanhao.ren:1188/translate
|
60 |
+
http://api.yimiwork.com:1188/translate
|
61 |
+
http://fdweb.yanhao.ren:1188/translate
|
62 |
+
http://m.1mi.cn:1188/translate
|
63 |
+
http://webmail.yanhao.ren:1188/translate
|
64 |
+
http://site.yanhao.ren:1188/translate
|
65 |
+
http://news.1mi.cn:1188/translate
|
66 |
+
http://42.193.23.136:1188/translate
|
67 |
+
http://ycgn51.hkp9ki2.top:1188/translate
|
68 |
+
http://1.12.229.77:1188/translate
|
69 |
+
https://dx.mmyy.fun/translate
|
70 |
+
http://wbsubdomain.a.bb.ccc.dddd.yanhao.ren:1188/translate
|
71 |
+
http://82.157.137.187:1188/translate
|
72 |
+
http://123.60.157.70:8085/translate
|
73 |
+
http://101.42.227.165:1188/translate
|
74 |
+
http://38.47.100.106:1188/translate
|
75 |
+
http://120.26.116.45:1188/translate
|
76 |
+
http://47.120.42.220:1188/translate
|
77 |
+
http://flowingyears.space:1188/translate
|
78 |
+
http://120.46.163.33:1188/translate
|
79 |
+
http://sq.363337.xyz:10030/translate
|
80 |
+
http://jscu.200913.xyz:10030/translate
|
81 |
+
http://mhy6.muhanyun.cn:10030/translate
|
82 |
+
http://hyjumprss.top:1188/translate
|
83 |
+
http://101.42.168.152:1188/translate
|
84 |
+
http://s1461a.top:1188/translate
|
85 |
+
http://43.138.215.164:1188/translate
|
86 |
+
http://101.43.76.234:1188/translate
|
87 |
+
http://49.235.73.101:1188/translate
|
88 |
+
http://58.87.104.110:1188/translate
|
89 |
+
http://42.192.93.139:10003/translate
|
90 |
+
http://121.40.157.111:1188/translate
|
91 |
+
http://101.35.115.171:1188/translate
|
92 |
+
http://103.152.35.2:1188/translate
|
93 |
+
http://47.103.194.159:1188/translate
|
94 |
+
http://49.233.41.73:1188/translate
|
95 |
+
http://62.106.70.227:1188/translate
|
96 |
+
http://176.126.114.231:1188/translate
|
97 |
+
http://82.156.36.11:1188/translate
|
98 |
+
http://119.91.152.74:1188/translate
|
99 |
+
http://203.25.119.208:1188/translate
|
100 |
+
http://122.152.221.70:1188/translate
|
101 |
+
http://117.50.183.46:1188/translate
|
102 |
+
http://182.150.116.147:1188/translate
|
103 |
+
http://175.178.237.179:1188/translate
|
104 |
+
http://54.64.224.232:1188/translate
|
105 |
+
http://103.158.190.203:4321/translate
|
106 |
+
http://52.194.218.139:1188/translate
|
107 |
+
http://132.145.80.159:1188/translate
|
108 |
+
http://146.56.165.8:1188/translate
|
109 |
+
http://141.11.139.95:1188/translate
|
110 |
+
http://1.12.243.147:1188/translate
|
111 |
+
http://132.226.232.50:1188/translate
|
112 |
+
http://202.81.237.189:1188/translate
|
113 |
+
http://46.8.19.173:1188/translate
|
114 |
+
http://195.154.184.125:1188/translate
|
115 |
+
http://18.142.80.110:1188/translate
|
116 |
+
http://182.42.127.225:1188/translate
|
117 |
+
http://168.138.214.221:1188/translate
|
118 |
+
http://132.145.93.176:1188/translate
|
119 |
+
http://45.147.51.155:1188/translate
|
120 |
+
http://8.142.134.155:1188/translate
|
121 |
+
http://47.236.22.51:1188/translate
|
122 |
+
http://38.148.254.10:1188/translate
|
123 |
+
http://142.171.218.100:1188/translate
|
124 |
+
http://148.135.107.108:1188/translate
|
125 |
+
http://168.138.34.126:1188/translate
|
126 |
+
http://150.230.200.159:1188/translate
|
127 |
+
http://106.14.17.223:1188/translate
|
128 |
+
http://101.133.141.24:8188/translate
|
129 |
+
http://23.94.122.132:1188/translate
|
130 |
+
http://211.227.72.101:1188/translate
|
131 |
+
http://107.150.100.170:8880/translate
|
132 |
+
http://209.141.49.210:1188/translate
|
133 |
+
http://95.164.86.107:1188/translate
|
134 |
+
http://142.171.77.219:1188/translate
|
135 |
+
http://165.227.18.166:1188/translate
|
136 |
+
http://18.157.122.228:1188/translate
|
137 |
+
http://167.99.24.220:1188/translate
|
138 |
+
http://107.175.28.239:1188/translate
|
139 |
+
http://45.145.72.29:1188/translate
|
140 |
+
http://8.210.101.225:1188/translate
|
141 |
+
http://37.123.196.26:1188/translate
|
142 |
+
http://172.245.131.60:8081/translate
|
143 |
+
http://104.234.60.178:1188/translate
|
144 |
+
http://121.43.165.38:1188/translate
|
145 |
+
http://129.153.73.237:1188/translate
|
146 |
+
http://142.171.218.120:8000/translate
|
147 |
+
http://23.94.104.174:1188/translate
|
148 |
+
http://142.171.199.125:1188/translate
|
149 |
+
http://116.203.83.80:1188/translate
|
150 |
+
http://43.134.250.154:1188/translate
|
151 |
+
http://103.163.186.90:1188/translate
|
152 |
+
http://148.135.58.49:1188/translate
|
153 |
+
http://148.135.51.114:1188/translate
|
154 |
+
http://42.98.172.229:1188/translate
|
155 |
+
http://162.55.35.20:1188/translate
|
156 |
+
http://142.171.3.185:1188/translate
|
157 |
+
http://157.245.192.219:1188/translate
|
158 |
+
http://150.230.254.8:9033/translate
|
159 |
+
http://146.56.97.135:1188/translate
|
160 |
+
http://152.67.211.94:1188/translate
|
161 |
+
http://104.168.43.152:1188/translate
|
162 |
+
http://51.222.13.40:1188/translate
|
163 |
+
http://148.135.73.241:1188/translate
|
164 |
+
http://148.135.81.210:1188/translate
|
165 |
+
http://37.123.193.136:1188/translate
|
166 |
+
http://148.135.124.106:1188/translate
|
167 |
+
http://148.135.70.165:1188/translate
|
168 |
+
http://107.173.255.75:7788/translate
|
169 |
+
http://142.171.59.190:1188/translate
|
170 |
+
http://74.48.170.227:1188/translate
|
171 |
+
http://107.189.1.3:1188/translate
|
172 |
+
http://154.40.56.85:1188/translate
|
173 |
+
http://142.171.12.29:1188/translate
|
174 |
+
http://148.135.61.236:1188/translate
|
175 |
+
http://43.154.124.164:1188/translate
|
176 |
+
http://74.48.19.200:1188/translate
|
177 |
+
http://74.48.52.216:1188/translate
|
178 |
+
http://185.106.209.123:1188/translate
|
179 |
+
http://114.55.7.143:1188/translate
|
180 |
+
http://119.28.32.110:1188/translate
|
181 |
+
http://192.210.143.151:1188/translate
|
182 |
+
http://150.230.46.219:8136/translate
|
183 |
+
http://64.112.42.240:1188/translate
|
184 |
+
http://142.171.198.78:1188/translate
|
185 |
+
http://104.168.22.220:1188/translate
|
186 |
+
http://107.175.28.34:1188/translate
|
187 |
+
http://142.171.225.251:1188/translate
|
188 |
+
http://47.76.48.116:1188/translate
|
189 |
+
http://45.152.67.153:1188/translate
|
190 |
+
http://190.92.242.194:1188/translate
|
191 |
+
http://89.117.172.208:1188/translate
|
192 |
+
http://20.89.43.13:1188/translate
|
193 |
+
http://148.135.98.234:1188/translate
|
194 |
+
http://103.114.163.230:1188/translate
|
195 |
+
http://141.11.139.98:1188/translate
|
196 |
+
http://38.47.98.127:1188/translate
|
197 |
+
http://8.222.213.133:1188/translate
|
198 |
+
http://47.243.28.163:1188/translate
|
199 |
+
http://104.208.71.189:1188/translate
|
200 |
+
http://43.143.240.2:1188/translate
|
201 |
+
http://124.220.101.194:1188/translate
|
202 |
+
http://43.130.10.231:1188/translate
|
203 |
+
http://43.156.58.228:1188/translate
|
204 |
+
http://148.135.106.166:1188/translate
|
205 |
+
http://148.135.62.170:1188/translate
|
206 |
+
http://192.210.142.53:1188/translate
|
207 |
+
http://192.227.249.132:1188/translate
|
208 |
+
http://15.228.190.225:12294/translate
|
209 |
+
http://42.193.219.103:1188/translate
|
210 |
+
http://138.2.95.93:1188/translate
|
211 |
+
http://37.123.192.81:1188/translate
|
212 |
+
http://45.143.234.207:1188/translate
|
213 |
+
http://52.140.204.252:1188/translate
|
214 |
+
http://107.172.87.53:1188/translate
|
215 |
+
http://142.171.224.118:1188/translate
|
216 |
+
http://43.133.184.109:1188/translate
|
217 |
+
http://5.252.226.8:1188/translate
|
218 |
+
http://168.138.161.149:1188/translate
|
219 |
+
http://101.35.175.93:1188/translate
|
220 |
+
http://1.12.45.103:1188/translate
|
221 |
+
http://193.32.151.19:1188/translate
|
222 |
+
http://195.245.242.19:1188/translate
|
223 |
+
http://103.117.103.14:1188/translate
|
224 |
+
http://141.11.90.131:1188/translate
|
225 |
+
http://43.134.189.147:1188/translate
|
226 |
+
http://23.94.223.217:1188/translate
|
227 |
+
http://107.172.103.49:1188/translate
|
228 |
+
http://129.146.98.200:1188/translate
|
229 |
+
http://110.42.225.114:1988/translate
|
230 |
+
http://129.146.241.124:1188/translate
|
231 |
+
http://124.222.168.113:1188/translate
|
232 |
+
http://141.147.151.154:1188/translate
|
233 |
+
http://158.101.157.53:1188/translate
|
234 |
+
http://155.248.187.32:1188/translate
|
235 |
+
http://150.230.108.185:1188/translate
|
236 |
+
http://150.230.32.50:1188/translate
|
237 |
+
http://118.89.199.180:80/translate
|
238 |
+
http://117.50.162.145:1188/translate
|
239 |
+
http://81.70.94.105:1188/translate
|
240 |
+
http://103.247.28.212:1188/translate
|
241 |
+
http://107.174.88.163:1188/translate
|
242 |
+
http://107.172.137.246:1188/translate
|
243 |
+
http://138.2.11.53:1188/translate
|
244 |
+
http://106.14.72.237:1188/translate
|
245 |
+
http://47.107.100.134:1188/translate
|
246 |
+
http://8.140.203.210:1188/translate
|
247 |
+
http://172.104.83.81:1188/translate
|
248 |
+
http://168.138.161.222:1188/translate
|
249 |
+
http://104.214.145.200:1188/translate
|
250 |
+
http://139.224.225.116:1188/translate
|
251 |
+
http://120.76.141.173:1188/translate
|
252 |
+
http://39.100.95.114:1188/translate
|
253 |
+
http://158.247.197.25:1188/translate
|
254 |
+
http://47.116.37.52:1188/translate
|
255 |
+
http://198.46.215.119:1188/translate
|
256 |
+
http://43.155.174.62:1188/translate
|
257 |
+
http://194.87.252.161:1188/translate
|
258 |
+
http://47.236.38.78:1188/translate
|
259 |
+
http://209.141.41.59:1188/translate
|
260 |
+
http://120.79.93.103:1188/translate
|
261 |
+
http://38.6.176.90:1024/translate
|
262 |
+
http://120.76.140.44:1188/translate
|
263 |
+
http://121.43.134.47:1188/translate
|
264 |
+
http://150.158.45.100:1188/translate
|
265 |
+
http://106.14.104.93:1188/translate
|
266 |
+
http://107.172.234.71:1188/translate
|
267 |
+
http://47.107.109.131:1188/translate
|
268 |
+
http://150.230.46.11:1188/translate
|
269 |
+
http://192.9.147.173:1188/translate
|
270 |
+
http://144.24.84.231:1188/translate
|
271 |
+
http://165.154.203.71:1188/translate
|
272 |
+
http://152.67.213.75:1188/translate
|
273 |
+
http://213.35.115.52:1188/translate
|
274 |
+
http://157.90.115.116:1188/translate
|
275 |
+
http://35.220.175.223:1188/translate
|
276 |
+
http://207.148.127.142:1188/translate
|
277 |
+
http://101.133.234.93:1188/translate
|
278 |
+
http://120.78.82.181:1188/translate
|
279 |
+
http://120.77.245.55:1188/translate
|
280 |
+
http://170.64.190.34:1188/translate
|
281 |
+
http://39.101.74.119:1188/translate
|
282 |
+
http://45.33.120.170:1188/translate
|
283 |
+
http://124.71.99.68:1188/translate
|
284 |
+
http://8.134.151.104:1188/translate
|
285 |
+
http://8.142.90.128:1188/translate
|
286 |
+
http://107.173.186.30:1188/translate
|
287 |
+
http://119.3.6.116:1188/translate
|
288 |
+
http://138.2.123.154:1188/translate
|
289 |
+
http://194.233.71.122:1188/translate
|
290 |
+
http://20.205.96.238:1188/translate
|
291 |
+
http://39.107.101.134:1188/translate
|
292 |
+
http://118.89.199.180/translate
|
293 |
+
http://138.68.240.43:1188/translate
|
294 |
+
http://51.81.210.63:1188/translate
|
295 |
+
http://39.105.60.208:1188/translate
|
296 |
+
http://193.32.149.239:1188/translate
|
297 |
+
http://144.24.94.118:1188/translate
|
298 |
+
http://139.99.66.128:1188/translate
|
299 |
+
http://123.57.16.233:1188/translate
|
300 |
+
http://146.56.111.210:1188/translate
|
301 |
+
http://42.194.148.47:1188/translate
|
302 |
+
http://152.69.180.143:1188/translate
|
303 |
+
http://146.56.111.178:1188/translate
|
304 |
+
http://146.56.111.132:8180/translate
|
305 |
+
http://123.116.149.203:1188/translate
|
306 |
+
http://42.192.83.104:1188/translate
|
307 |
+
http://101.201.38.103:1188/translate
|
308 |
+
http://1.14.59.89:1188/translate
|
309 |
+
http://120.55.63.151:1188/translate
|