mirror of
https://github.com/tobychui/zoraxy.git
synced 2025-06-01 13:17:21 +02:00
71 lines
1.8 KiB
Go
71 lines
1.8 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
"strconv"
|
|
|
|
plugin "aroz.org/zoraxy/debugger/mod/zoraxy_plugin"
|
|
)
|
|
|
|
const (
|
|
PLUGIN_ID = "org.aroz.zoraxy.debugger"
|
|
UI_PATH = "/debug"
|
|
)
|
|
|
|
func main() {
|
|
// Serve the plugin intro spect
|
|
// This will print the plugin intro spect and exit if the -introspect flag is provided
|
|
runtimeCfg, err := plugin.ServeAndRecvSpec(&plugin.IntroSpect{
|
|
ID: "org.aroz.zoraxy.debugger",
|
|
Name: "Plugin Debugger",
|
|
Author: "aroz.org",
|
|
AuthorContact: "https://aroz.org",
|
|
Description: "A debugger for Zoraxy <-> plugin communication pipeline",
|
|
URL: "https://zoraxy.aroz.org",
|
|
Type: plugin.PluginType_Router,
|
|
VersionMajor: 1,
|
|
VersionMinor: 0,
|
|
VersionPatch: 0,
|
|
|
|
GlobalCapturePaths: []plugin.CaptureRule{
|
|
{
|
|
CapturePath: "/debug_test", //Capture all traffic of all HTTP proxy rule
|
|
IncludeSubPaths: true,
|
|
},
|
|
},
|
|
GlobalCaptureIngress: "",
|
|
AlwaysCapturePaths: []plugin.CaptureRule{},
|
|
AlwaysCaptureIngress: "",
|
|
|
|
UIPath: UI_PATH,
|
|
|
|
/*
|
|
SubscriptionPath: "/subept",
|
|
SubscriptionsEvents: []plugin.SubscriptionEvent{
|
|
*/
|
|
})
|
|
if err != nil {
|
|
//Terminate or enter standalone mode here
|
|
panic(err)
|
|
}
|
|
|
|
// Register the shutdown handler
|
|
plugin.RegisterShutdownHandler(func() {
|
|
// Do cleanup here if needed
|
|
fmt.Println("Debugger Terminated")
|
|
})
|
|
|
|
http.HandleFunc(UI_PATH+"/", RenderDebugUI)
|
|
http.HandleFunc("/gcapture", HandleIngressCapture)
|
|
fmt.Println("Debugger started at http://127.0.0.1:" + strconv.Itoa(runtimeCfg.Port))
|
|
http.ListenAndServe("127.0.0.1:"+strconv.Itoa(runtimeCfg.Port), nil)
|
|
}
|
|
|
|
// Handle the captured request
|
|
func HandleIngressCapture(w http.ResponseWriter, r *http.Request) {
|
|
fmt.Fprint(w, "Capture request received")
|
|
w.Header().Set("Content-Type", "text/html")
|
|
w.Write([]byte("This request is captured by the debugger"))
|
|
}
|