feat: init
This commit is contained in:
BIN
cmd/proxy/apps.png
Normal file
BIN
cmd/proxy/apps.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 17 KiB |
34
cmd/proxy/ca.crt
Normal file
34
cmd/proxy/ca.crt
Normal file
@@ -0,0 +1,34 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIF9DCCA9ygAwIBAgIJAODqYUwoVjJkMA0GCSqGSIb3DQEBCwUAMIGOMQswCQYD
|
||||
VQQGEwJJTDEPMA0GA1UECAwGQ2VudGVyMQwwCgYDVQQHDANMb2QxEDAOBgNVBAoM
|
||||
B0dvUHJveHkxEDAOBgNVBAsMB0dvUHJveHkxGjAYBgNVBAMMEWdvcHJveHkuZ2l0
|
||||
aHViLmlvMSAwHgYJKoZIhvcNAQkBFhFlbGF6YXJsQGdtYWlsLmNvbTAeFw0xNzA0
|
||||
MDUyMDAwMTBaFw0zNzAzMzEyMDAwMTBaMIGOMQswCQYDVQQGEwJJTDEPMA0GA1UE
|
||||
CAwGQ2VudGVyMQwwCgYDVQQHDANMb2QxEDAOBgNVBAoMB0dvUHJveHkxEDAOBgNV
|
||||
BAsMB0dvUHJveHkxGjAYBgNVBAMMEWdvcHJveHkuZ2l0aHViLmlvMSAwHgYJKoZI
|
||||
hvcNAQkBFhFlbGF6YXJsQGdtYWlsLmNvbTCCAiIwDQYJKoZIhvcNAQEBBQADggIP
|
||||
ADCCAgoCggIBAJ4Qy+H6hhoY1s0QRcvIhxrjSHaO/RbaFj3rwqcnpOgFq07gRdI9
|
||||
3c0TFKQJHpgv6feLRhEvX/YllFYu4J35lM9ZcYY4qlKFuStcX8Jm8fqpgtmAMBzP
|
||||
sqtqDi8M9RQGKENzU9IFOnCV7SAeh45scMuI3wz8wrjBcH7zquHkvqUSYZz035t9
|
||||
V6WTrHyTEvT4w+lFOVN2bA/6DAIxrjBiF6DhoJqnha0SZtDfv77XpwGG3EhA/qoh
|
||||
hiYrDruYK7zJdESQL44LwzMPupVigqalfv+YHfQjbhT951IVurW2NJgRyBE62dLr
|
||||
lHYdtT9tCTCrd+KJNMJ+jp9hAjdIu1Br/kifU4F4+4ZLMR9Ueji0GkkPKsYdyMnq
|
||||
j0p0PogyvP1l4qmboPImMYtaoFuYmMYlebgC9LN10bL91K4+jLt0I1YntEzrqgJo
|
||||
WsJztYDw543NzSy5W+/cq4XRYgtq1b0RWwuUiswezmMoeyHZ8BQJe2xMjAOllASD
|
||||
fqa8OK3WABHJpy4zUrnUBiMuPITzD/FuDx4C5IwwlC68gHAZblNqpBZCX0nFCtKj
|
||||
YOcI2So5HbQ2OC8QF+zGVuduHUSok4hSy2BBfZ1pfvziqBeetWJwFvapGB44nIHh
|
||||
WKNKvqOxLNIy7e+TGRiWOomrAWM18VSR9LZbBxpJK7PLSzWqYJYTRCZHAgMBAAGj
|
||||
UzBRMB0GA1UdDgQWBBR4uDD9Y6x7iUoHO+32ioOcw1ICZTAfBgNVHSMEGDAWgBR4
|
||||
uDD9Y6x7iUoHO+32ioOcw1ICZTAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB
|
||||
CwUAA4ICAQAaCEupzGGqcdh+L7BzhX7zyd7yzAKUoLxFrxaZY34Xyj3lcx1XoK6F
|
||||
AqsH2JM25GixgadzhNt92JP7vzoWeHZtLfstrPS638Y1zZi6toy4E49viYjFk5J0
|
||||
C6ZcFC04VYWWx6z0HwJuAS08tZ37JuFXpJGfXJOjZCQyxse0Lg0tuKLMeXDCk2Y3
|
||||
Ba0noeuNyHRoWXXPyiUoeApkVCU5gIsyiJSWOjhJ5hpJG06rQNfNYexgKrrraEin
|
||||
o0jmEMtJMx5TtD83hSnLCnFGBBq5lkE7jgXME1KsbIE3lJZzRX1mQwUK8CJDYxye
|
||||
i6M/dzSvy0SsPvz8fTAlprXRtWWtJQmxgWENp3Dv+0Pmux/l+ilk7KA4sMXGhsfr
|
||||
bvTOeWl1/uoFTPYiWR/ww7QEPLq23yDFY04Q7Un0qjIk8ExvaY8lCkXMgc8i7sGY
|
||||
VfvOYb0zm67EfAQl3TW8Ky5fl5CcxpVCD360Bzi6hwjYixa3qEeBggOixFQBFWft
|
||||
8wrkKTHpOQXjn4sDPtet8imm9UYEtzWrFX6T9MFYkBR0/yye0FIh9+YPiTA6WB86
|
||||
NCNwK5Yl6HuvF97CIH5CdgO+5C7KifUtqTOL8pQKbNwy0S3sNYvB+njGvRpR7pKV
|
||||
BUnFpB/Atptqr4CUlTXrc5IPLAqAfmwk5IKcwy3EXUbruf9Dwz69YA==
|
||||
-----END CERTIFICATE-----
|
||||
BIN
cmd/proxy/icon.ico
Normal file
BIN
cmd/proxy/icon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 66 KiB |
15
cmd/proxy/proxy.manifest
Normal file
15
cmd/proxy/proxy.manifest
Normal file
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
|
||||
<assemblyIdentity version="1.0.0.0" processorArchitecture="*" name="SomeFunkyNameHere" type="win32"/>
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"/>
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
<application xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<windowsSettings>
|
||||
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2, PerMonitor</dpiAwareness>
|
||||
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">True</dpiAware>
|
||||
</windowsSettings>
|
||||
</application>
|
||||
</assembly>
|
||||
24
cmd/proxy/proxy_linux.go
Normal file
24
cmd/proxy/proxy_linux.go
Normal file
@@ -0,0 +1,24 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
|
||||
"dyproxy/modules/proxy"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
func main() {
|
||||
cmd := &cobra.Command{
|
||||
Use: "proxy",
|
||||
Short: "serve proxy",
|
||||
RunE: proxy.ServeE,
|
||||
}
|
||||
cmd.Flags().StringP("host", "H", "https://f.jdwan.com", "default post data to host")
|
||||
cmd.Flags().BoolP("debug", "D", false, "debug mode")
|
||||
cmd.Flags().IntP("duration", "d", 10, "fans fetch duration")
|
||||
|
||||
if err := cmd.Execute(); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
114
cmd/proxy/proxy_windows.go
Normal file
114
cmd/proxy/proxy_windows.go
Normal file
@@ -0,0 +1,114 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
_ "embed"
|
||||
"fmt"
|
||||
"os"
|
||||
"os/exec"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"dyproxy/modules/proxy"
|
||||
|
||||
"github.com/lxn/walk"
|
||||
. "github.com/lxn/walk/declarative"
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
var (
|
||||
outTE *walk.TextEdit
|
||||
wnd *walk.MainWindow
|
||||
btnService *walk.PushButton
|
||||
err error
|
||||
pr *proxy.Proxy
|
||||
)
|
||||
|
||||
//go:embed ca.crt
|
||||
var ca []byte
|
||||
|
||||
func init() {
|
||||
// if go os is windows
|
||||
if strings.ToLower(os.Getenv("GOOS")) == "windows" {
|
||||
// get tmp path
|
||||
tmpPath := os.TempDir()
|
||||
// write ca.crt to tmp path
|
||||
err := os.WriteFile(tmpPath+"/ca.crt", ca, 0o644)
|
||||
if err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
logrus.Info("import root cert")
|
||||
// run certutil.exe -addstore root tmpPath+"/ca.crt"
|
||||
cmd := exec.Command("certutil.exe", "-addstore", "root", tmpPath+"/ca.crt")
|
||||
err = cmd.Run()
|
||||
if err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
MainWindow{
|
||||
AssignTo: &wnd,
|
||||
Title: "粉丝代理服务",
|
||||
Size: Size{300, 300},
|
||||
Layout: VBox{},
|
||||
Children: []Widget{
|
||||
PushButton{
|
||||
Text: "开启服务",
|
||||
MinSize: Size{300, 50},
|
||||
AssignTo: &btnService,
|
||||
OnClicked: func() {
|
||||
errChan := make(chan error)
|
||||
if btnService.Text() == "开启服务" {
|
||||
btnService.SetEnabled(false)
|
||||
outTE.AppendText("服务启动中...\r\n")
|
||||
if pr == nil {
|
||||
pr = proxy.NewProxy("https://f.jdwan.com", false, 10)
|
||||
|
||||
go func() {
|
||||
errChan <- pr.Serve(29999)
|
||||
}()
|
||||
}
|
||||
select {
|
||||
case err := <-errChan:
|
||||
outTE.AppendText(err.Error() + "\r\n")
|
||||
case <-time.After(2 * time.Second):
|
||||
outTE.AppendText("服务启动成功\r\n")
|
||||
btnService.SetText("停止服务")
|
||||
go func() {
|
||||
err = <-errChan
|
||||
outTE.AppendText("[ERR] " + err.Error() + "\r\n")
|
||||
btnService.SetText("开启服务")
|
||||
btnService.SetEnabled(true)
|
||||
}()
|
||||
}
|
||||
btnService.SetEnabled(true)
|
||||
} else {
|
||||
btnService.SetEnabled(false)
|
||||
outTE.AppendText("服务停止中...\r\n")
|
||||
pr.Shutdown()
|
||||
outTE.AppendText("服务停止成功\r\n")
|
||||
btnService.SetText("开启服务")
|
||||
btnService.SetEnabled(true)
|
||||
}
|
||||
},
|
||||
},
|
||||
TextEdit{AssignTo: &outTE, ReadOnly: true},
|
||||
},
|
||||
}.Create()
|
||||
|
||||
wnd.Closing().Attach(func(canceled *bool, reason walk.CloseReason) {
|
||||
fmt.Println("Application closing.")
|
||||
if pr != nil {
|
||||
outTE.AppendText("服务停止中...\r\n")
|
||||
pr.Shutdown()
|
||||
outTE.AppendText("服务停止成功\r\n")
|
||||
}
|
||||
})
|
||||
|
||||
wnd.Disposing().Attach(func() {
|
||||
fmt.Println("Application has exited.")
|
||||
})
|
||||
|
||||
wnd.Run()
|
||||
}
|
||||
BIN
cmd/proxy/rsrc.syso
Normal file
BIN
cmd/proxy/rsrc.syso
Normal file
Binary file not shown.
Reference in New Issue
Block a user