ni-cai commited on
Commit
468a83f
1 Parent(s): 9c9c8de

Upload 5 files

Browse files
Files changed (5) hide show
  1. docker-compose.yml +14 -0
  2. go.sum +145 -0
  3. init.go +239 -0
  4. main.go +37 -0
  5. 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