Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
T
tls-forward
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wangmingming
tls-forward
Commits
4a78f9ab
Commit
4a78f9ab
authored
Aug 01, 2024
by
wang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
cronet
parent
449ed648
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
156 additions
and
23 deletions
+156
-23
init.go
database/init.go
+41
-0
model.go
database/model.go
+47
-0
go.mod
go.mod
+7
-1
go.sum
go.sum
+16
-0
main.go
main.go
+4
-2
request.go
model/request.go
+14
-0
client.go
tls/client.go
+7
-3
tls.go
tls/tls.go
+20
-17
No files found.
database/init.go
0 → 100644
View file @
4a78f9ab
package
database
import
(
"encoding/json"
"github.com/sirupsen/logrus"
"tls-forward/model"
)
func
NewRequestLog
(
item
model
.
ForwardItem
)
uint
{
marshal
,
err
:=
json
.
Marshal
(
item
.
Headers
)
if
err
!=
nil
{
logrus
.
Errorf
(
"序列化header 失败 %s"
,
err
.
Error
())
}
logItem
:=
RequestLog
{
Proxy
:
item
.
Proxy
,
Method
:
item
.
Method
,
Headers
:
string
(
marshal
),
Url
:
item
.
Url
,
Data
:
item
.
Data
,
Timeout
:
item
.
Timeout
,
AllowRedirects
:
item
.
AllowRedirects
,
Verify
:
item
.
Verify
,
Debug
:
item
.
Debug
,
RandomTls
:
item
.
RandomTls
,
StatusCode
:
0
,
Text
:
""
,
}
result
:=
MysqlDb
.
Create
(
&
logItem
)
// pass pointer of data to Create
if
result
.
Error
!=
nil
{
logrus
.
Errorf
(
"log插入失败 %s"
,
result
.
Error
.
Error
())
return
0
}
return
logItem
.
ID
}
func
UpdateLogInfo
(
id
uint
,
statusCode
int
,
text
string
)
{
tx
:=
MysqlDb
.
Table
(
"request_logs"
)
.
Where
(
"id = ?"
,
id
)
.
Update
(
"status_code"
,
statusCode
)
.
Update
(
"text"
,
text
)
if
tx
.
Error
!=
nil
{
logrus
.
Errorf
(
"更新记录失败 %s"
,
tx
.
Error
.
Error
())
}
}
database/model.go
0 → 100644
View file @
4a78f9ab
package
database
import
(
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
type
RequestLog
struct
{
gorm
.
Model
Proxy
string
`json:"proxy,omitempty"`
Method
string
`json:"method,omitempty"`
Headers
string
`json:"headers,omitempty"`
Url
string
`json:"url,omitempty"`
Data
string
`json:"data,omitempty"`
Timeout
int
`json:"timeout,omitempty"`
AllowRedirects
bool
`json:"allow_redirects,omitempty"`
Verify
bool
`json:"verify,omitempty"`
Debug
bool
`json:"debug"`
RandomTls
bool
`json:"random_tls"`
StatusCode
int
Text
string
}
func
(
r
RequestLog
)
Schema
()
string
{
//TODO implement me
return
"request_log"
}
func
(
r
RequestLog
)
Name
()
string
{
//TODO implement me
return
"request_log"
}
var
MysqlDb
*
gorm
.
DB
func
init
()
{
dsn
:=
"root:123456@tcp(192.168.50.110:3306)/tls?charset=utf8mb4&parseTime=True&loc=Local"
db
,
err
:=
gorm
.
Open
(
mysql
.
Open
(
dsn
),
&
gorm
.
Config
{})
db
.
AutoMigrate
(
&
RequestLog
{})
if
err
!=
nil
{
panic
(
err
)
}
MysqlDb
=
db
}
go.mod
View file @
4a78f9ab
...
@@ -11,6 +11,7 @@ require (
...
@@ -11,6 +11,7 @@ require (
)
)
require (
require (
filippo.io/edwards25519 v1.1.0 // indirect
github.com/BurntSushi/toml v1.2.1 // indirect
github.com/BurntSushi/toml v1.2.1 // indirect
github.com/andybalholm/brotli v1.0.6 // indirect
github.com/andybalholm/brotli v1.0.6 // indirect
github.com/bogdanfinn/fhttp v0.5.27 // indirect
github.com/bogdanfinn/fhttp v0.5.27 // indirect
...
@@ -22,7 +23,10 @@ require (
...
@@ -22,7 +23,10 @@ require (
github.com/go-playground/locales v0.14.1 // indirect
github.com/go-playground/locales v0.14.1 // indirect
github.com/go-playground/universal-translator v0.18.1 // indirect
github.com/go-playground/universal-translator v0.18.1 // indirect
github.com/go-playground/validator/v10 v10.11.2 // indirect
github.com/go-playground/validator/v10 v10.11.2 // indirect
github.com/go-sql-driver/mysql v1.8.1 // indirect
github.com/goccy/go-json v0.10.0 // indirect
github.com/goccy/go-json v0.10.0 // indirect
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.1.5 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/klauspost/compress v1.17.4 // indirect
github.com/klauspost/compress v1.17.4 // indirect
github.com/klauspost/cpuid/v2 v2.0.9 // indirect
github.com/klauspost/cpuid/v2 v2.0.9 // indirect
...
@@ -39,9 +43,11 @@ require (
...
@@ -39,9 +43,11 @@ require (
golang.org/x/crypto v0.17.0 // indirect
golang.org/x/crypto v0.17.0 // indirect
golang.org/x/net v0.19.0 // indirect
golang.org/x/net v0.19.0 // indirect
golang.org/x/sys v0.16.0 // indirect
golang.org/x/sys v0.16.0 // indirect
golang.org/x/text v0.1
4
.0 // indirect
golang.org/x/text v0.1
6
.0 // indirect
google.golang.org/protobuf v1.28.1 // indirect
google.golang.org/protobuf v1.28.1 // indirect
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
gorm.io/driver/mysql v1.5.7 // indirect
gorm.io/gorm v1.25.11 // indirect
)
)
go.sum
View file @
4a78f9ab
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak=
github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak=
github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY=
github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY=
...
@@ -48,12 +50,19 @@ github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJn
...
@@ -48,12 +50,19 @@ github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJn
github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
github.com/go-playground/validator/v10 v10.11.2 h1:q3SHpufmypg+erIExEKUmsgmhDTyhcJ38oeKGACXohU=
github.com/go-playground/validator/v10 v10.11.2 h1:q3SHpufmypg+erIExEKUmsgmhDTyhcJ38oeKGACXohU=
github.com/go-playground/validator/v10 v10.11.2/go.mod h1:NieE624vt4SCTJtD87arVLvdmjPAeV8BQlHtMnw9D7s=
github.com/go-playground/validator/v10 v10.11.2/go.mod h1:NieE624vt4SCTJtD87arVLvdmjPAeV8BQlHtMnw9D7s=
github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y=
github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg=
github.com/goccy/go-json v0.10.0 h1:mXKd9Qw4NuzShiRlOXKews24ufknHO7gx30lsDyokKA=
github.com/goccy/go-json v0.10.0 h1:mXKd9Qw4NuzShiRlOXKews24ufknHO7gx30lsDyokKA=
github.com/goccy/go-json v0.10.0/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
github.com/goccy/go-json v0.10.0/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/klauspost/compress v1.15.12 h1:YClS/PImqYbn+UILDnqxQCZ3RehC9N318SU3kElDUEM=
github.com/klauspost/compress v1.15.12 h1:YClS/PImqYbn+UILDnqxQCZ3RehC9N318SU3kElDUEM=
...
@@ -139,6 +148,8 @@ golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE=
...
@@ -139,6 +148,8 @@ golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE=
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4=
golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
...
@@ -153,4 +164,9 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
...
@@ -153,4 +164,9 @@ 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-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gorm.io/driver/mysql v1.5.7 h1:MndhOPYOfEp2rHKgkZIhJ16eVUIRf2HmzgoPmh7FCWo=
gorm.io/driver/mysql v1.5.7/go.mod h1:sEtPWMiqiN1N1cMXoXmBbd8C6/l+TESwriotuRRpkDM=
gorm.io/gorm v1.25.7/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8=
gorm.io/gorm v1.25.11 h1:/Wfyg1B/je1hnDx3sMkX+gAlxrlZpn6X0BXRlwXlvHg=
gorm.io/gorm v1.25.11/go.mod h1:xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ=
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
main.go
View file @
4a78f9ab
...
@@ -6,6 +6,7 @@ import (
...
@@ -6,6 +6,7 @@ import (
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin"
"github.com/sirupsen/logrus"
"github.com/sirupsen/logrus"
"gopkg.in/natefinch/lumberjack.v2"
"gopkg.in/natefinch/lumberjack.v2"
"os"
"time"
"time"
"tls-forward/tls"
"tls-forward/tls"
)
)
...
@@ -44,9 +45,10 @@ func main() {
...
@@ -44,9 +45,10 @@ func main() {
// 是否需要压缩滚动日志, 使用的 gzip 压缩
// 是否需要压缩滚动日志, 使用的 gzip 压缩
Compress
:
true
,
// disabled by default
Compress
:
true
,
// disabled by default
}
}
logrus
.
SetOutput
(
logWriter
)
fmt
.
Println
(
logWriter
)
//logrus.SetOutput(logWriter)
//logrus.SetOutput(io.MultiWriter(logWriter, os.Stdout))
//logrus.SetOutput(io.MultiWriter(logWriter, os.Stdout))
//
logrus.SetOutput(os.Stdout)
logrus
.
SetOutput
(
os
.
Stdout
)
fmt
.
Println
(
"VERSION 1.0.1"
)
fmt
.
Println
(
"VERSION 1.0.1"
)
r
:=
gin
.
New
()
//创建一个默认的路由引擎
r
:=
gin
.
New
()
//创建一个默认的路由引擎
r
.
LoadHTMLFiles
(
"tls-froward/dist/index.html"
)
r
.
LoadHTMLFiles
(
"tls-froward/dist/index.html"
)
...
...
model/request.go
0 → 100644
View file @
4a78f9ab
package
model
type
ForwardItem
struct
{
Proxy
string
`json:"proxy,omitempty"`
Method
string
`json:"method,omitempty"`
Headers
map
[
string
]
string
`json:"headers,omitempty"`
Url
string
`json:"url,omitempty"`
Data
string
`json:"data,omitempty"`
Timeout
int
`json:"timeout,omitempty"`
AllowRedirects
bool
`json:"allow_redirects,omitempty"`
Verify
bool
`json:"verify,omitempty"`
Debug
bool
`json:"debug"`
RandomTls
bool
`json:"random_tls"`
}
tls/client.go
View file @
4a78f9ab
...
@@ -16,18 +16,21 @@ import (
...
@@ -16,18 +16,21 @@ import (
"math/big"
"math/big"
"net/url"
"net/url"
"strings"
"strings"
"tls-forward/model"
)
)
type
Client
struct
{
type
Client
struct
{
Client
tls_client
.
HttpClient
Client
tls_client
.
HttpClient
Jar
tls_client
.
CookieJar
Jar
tls_client
.
CookieJar
Item
ForwardItem
Item
model
.
ForwardItem
Response
*
http
.
Response
Response
*
http
.
Response
uri
*
url
.
URL
uri
*
url
.
URL
TlsVersion
string
TlsVersion
string
LogId
uint
}
}
func
(
c
*
Client
)
Start
()
error
{
func
(
c
*
Client
)
Start
()
error
{
var
req
*
http
.
Request
var
req
*
http
.
Request
var
err
error
var
err
error
uri
,
err
:=
url
.
Parse
(
c
.
Item
.
Url
)
uri
,
err
:=
url
.
Parse
(
c
.
Item
.
Url
)
...
@@ -75,12 +78,14 @@ func (c *Client) Start() error {
...
@@ -75,12 +78,14 @@ func (c *Client) Start() error {
for
k
,
v
:=
range
c
.
Item
.
Headers
{
for
k
,
v
:=
range
c
.
Item
.
Headers
{
req
.
Header
.
Set
(
k
,
v
)
req
.
Header
.
Set
(
k
,
v
)
}
}
//c.Client.SetProxy("http://user-unifflcc-region-us:q39CEBTs5A5YQXor@pr.roxlabs.cn:4600")
//c.Client.SetProxy("http://user-unifflcc-region-us:q39CEBTs5A5YQXor@pr.roxlabs.cn:4600")
resp
,
err
:=
c
.
Client
.
Do
(
req
)
resp
,
err
:=
c
.
Client
.
Do
(
req
)
if
err
!=
nil
{
if
err
!=
nil
{
logrus
.
Error
(
"请求失败 "
,
err
.
Error
())
logrus
.
Error
(
"请求失败 "
,
err
.
Error
())
return
err
return
err
}
}
c
.
Response
=
resp
c
.
Response
=
resp
return
nil
return
nil
}
}
...
@@ -141,7 +146,7 @@ func RandRandom(a int64) int64 {
...
@@ -141,7 +146,7 @@ func RandRandom(a int64) int64 {
res
,
_
:=
rand
.
Int
(
rand
.
Reader
,
big
.
NewInt
(
a
))
res
,
_
:=
rand
.
Int
(
rand
.
Reader
,
big
.
NewInt
(
a
))
return
res
.
Int64
()
return
res
.
Int64
()
}
}
func
NewClient
(
forWard
ForwardItem
,
ios
bool
)
(
Client
,
error
)
{
func
NewClient
(
forWard
model
.
ForwardItem
,
ios
bool
)
(
Client
,
error
)
{
jar
:=
tls_client
.
NewCookieJar
()
jar
:=
tls_client
.
NewCookieJar
()
tlsVersion
:=
chromes
[
RandRandom
(
int64
(
len
(
chromes
)))]
tlsVersion
:=
chromes
[
RandRandom
(
int64
(
len
(
chromes
)))]
if
ios
{
if
ios
{
...
@@ -170,7 +175,6 @@ func NewClient(forWard ForwardItem, ios bool) (Client, error) {
...
@@ -170,7 +175,6 @@ func NewClient(forWard ForwardItem, ios bool) (Client, error) {
if
err
!=
nil
{
if
err
!=
nil
{
return
Client
{},
err
return
Client
{},
err
}
}
return
Client
{
Client
:
client
,
Item
:
forWard
,
Jar
:
jar
,
TlsVersion
:
tlsVersion
.
GetClientHelloStr
()},
nil
return
Client
{
Client
:
client
,
Item
:
forWard
,
Jar
:
jar
,
TlsVersion
:
tlsVersion
.
GetClientHelloStr
()},
nil
}
}
...
...
tls/tls.go
View file @
4a78f9ab
...
@@ -5,23 +5,12 @@ import (
...
@@ -5,23 +5,12 @@ import (
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin"
"github.com/sirupsen/logrus"
"github.com/sirupsen/logrus"
"time"
"time"
"tls-forward/database"
"tls-forward/model"
)
)
type
ForwardItem
struct
{
Proxy
string
`json:"proxy,omitempty"`
Method
string
`json:"method,omitempty"`
Headers
map
[
string
]
string
`json:"headers,omitempty"`
Url
string
`json:"url,omitempty"`
Data
string
`json:"data,omitempty"`
Timeout
int
`json:"timeout,omitempty"`
AllowRedirects
bool
`json:"allow_redirects,omitempty"`
Verify
bool
`json:"verify,omitempty"`
Debug
bool
`json:"debug"`
RandomTls
bool
`json:"random_tls"`
}
func
ForwardIOS
(
c
*
gin
.
Context
)
{
func
ForwardIOS
(
c
*
gin
.
Context
)
{
var
forWard
ForwardItem
var
forWard
model
.
ForwardItem
if
err
:=
c
.
ShouldBindJSON
(
&
forWard
);
err
!=
nil
{
if
err
:=
c
.
ShouldBindJSON
(
&
forWard
);
err
!=
nil
{
logrus
.
Error
(
err
.
Error
())
logrus
.
Error
(
err
.
Error
())
c
.
JSON
(
400
,
gin
.
H
{
c
.
JSON
(
400
,
gin
.
H
{
...
@@ -33,7 +22,11 @@ func ForwardIOS(c *gin.Context) {
...
@@ -33,7 +22,11 @@ func ForwardIOS(c *gin.Context) {
logrus
.
Infof
(
"开始转发 url: %s proxy: %s %v"
,
forWard
.
Url
,
forWard
.
Proxy
,
forWard
.
AllowRedirects
)
logrus
.
Infof
(
"开始转发 url: %s proxy: %s %v"
,
forWard
.
Url
,
forWard
.
Proxy
,
forWard
.
AllowRedirects
)
t1
:=
time
.
Now
()
t1
:=
time
.
Now
()
// 开始转发
// 开始转发
client
,
err
:=
NewClient
(
forWard
,
true
)
client
,
err
:=
NewClient
(
forWard
,
true
)
defer
func
()
{
client
.
LogId
=
database
.
NewRequestLog
(
forWard
)
}()
if
err
!=
nil
{
if
err
!=
nil
{
logrus
.
Error
(
"client初始化失败 "
,
err
.
Error
())
logrus
.
Error
(
"client初始化失败 "
,
err
.
Error
())
c
.
JSON
(
400
,
gin
.
H
{
c
.
JSON
(
400
,
gin
.
H
{
...
@@ -43,6 +36,7 @@ func ForwardIOS(c *gin.Context) {
...
@@ -43,6 +36,7 @@ func ForwardIOS(c *gin.Context) {
}
}
if
err
:=
client
.
Start
();
err
!=
nil
{
if
err
:=
client
.
Start
();
err
!=
nil
{
logrus
.
Error
(
"请求失败 "
,
err
.
Error
())
logrus
.
Error
(
"请求失败 "
,
err
.
Error
())
database
.
UpdateLogInfo
(
client
.
LogId
,
-
1
,
"请求失败 "
+
err
.
Error
())
c
.
JSON
(
400
,
gin
.
H
{
c
.
JSON
(
400
,
gin
.
H
{
"msg"
:
"请求失败 "
+
err
.
Error
(),
"msg"
:
"请求失败 "
+
err
.
Error
(),
})
})
...
@@ -65,12 +59,13 @@ func ForwardIOS(c *gin.Context) {
...
@@ -65,12 +59,13 @@ func ForwardIOS(c *gin.Context) {
return
return
}
}
}()
}()
client
.
Client
.
CloseIdleConnections
()
client
.
Client
.
CloseIdleConnections
()
logrus
.
Infof
(
"%s 转发 %s %s %d 耗时 %s"
,
client
.
TlsVersion
,
forWard
.
Url
,
forWard
.
Proxy
,
client
.
GetStatusCode
(),
time
.
Now
()
.
Sub
(
t1
)
.
String
())
logrus
.
Infof
(
"%s 转发 %s %s %d 耗时 %s"
,
client
.
TlsVersion
,
forWard
.
Url
,
forWard
.
Proxy
,
client
.
GetStatusCode
(),
time
.
Now
()
.
Sub
(
t1
)
.
String
())
c
.
JSON
(
200
,
res
)
c
.
JSON
(
200
,
res
)
}
}
func
Forward
(
c
*
gin
.
Context
)
{
func
Forward
(
c
*
gin
.
Context
)
{
var
forWard
ForwardItem
var
forWard
model
.
ForwardItem
if
err
:=
c
.
ShouldBindJSON
(
&
forWard
);
err
!=
nil
{
if
err
:=
c
.
ShouldBindJSON
(
&
forWard
);
err
!=
nil
{
logrus
.
Error
(
err
.
Error
())
logrus
.
Error
(
err
.
Error
())
c
.
JSON
(
400
,
gin
.
H
{
c
.
JSON
(
400
,
gin
.
H
{
...
@@ -83,6 +78,11 @@ func Forward(c *gin.Context) {
...
@@ -83,6 +78,11 @@ func Forward(c *gin.Context) {
t1
:=
time
.
Now
()
t1
:=
time
.
Now
()
// 开始转发
// 开始转发
client
,
err
:=
NewClient
(
forWard
,
false
)
client
,
err
:=
NewClient
(
forWard
,
false
)
client
.
LogId
=
database
.
NewRequestLog
(
forWard
)
//defer func() {
//}()
//
if
err
!=
nil
{
if
err
!=
nil
{
logrus
.
Error
(
"client初始化失败 "
,
err
.
Error
())
logrus
.
Error
(
"client初始化失败 "
,
err
.
Error
())
c
.
JSON
(
400
,
gin
.
H
{
c
.
JSON
(
400
,
gin
.
H
{
...
@@ -91,9 +91,12 @@ func Forward(c *gin.Context) {
...
@@ -91,9 +91,12 @@ func Forward(c *gin.Context) {
return
return
}
}
if
err
:=
client
.
Start
();
err
!=
nil
{
if
err
:=
client
.
Start
();
err
!=
nil
{
logrus
.
Error
(
"请求失败 "
,
err
.
Error
())
v
:=
fmt
.
Sprintf
(
"请求失败 %s"
,
err
.
Error
())
logrus
.
Error
(
v
)
database
.
UpdateLogInfo
(
client
.
LogId
,
-
1
,
v
)
c
.
JSON
(
400
,
gin
.
H
{
c
.
JSON
(
400
,
gin
.
H
{
"msg"
:
"请求失败 "
+
err
.
Error
()
,
"msg"
:
v
,
})
})
return
return
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment