Quich and lazy way to load and run cloak as dynamic library

This commit is contained in:
Aleksandr Sakharov 2026-01-20 19:57:04 +03:00
parent c3d5470ef7
commit 0013b7ea7d
3 changed files with 41 additions and 1 deletions

View File

@ -16,10 +16,20 @@ server:
go build -ldflags "-X main.version=${version}" ./cmd/ck-server
mv ck-server* ./build
client-dynlib:
mkdir -p build
go build -ldflags "-X main.version=${version}" -buildmode=c-shared -o libck-client.so ./cmd/ck-client
mv libck-client* ./build
server-dynlib:
mkdir -p build
go build -ldflags "-X main.version=${version}" -buildmode=c-shared -o libck-server.so ./cmd/ck-server
mv libck-server* ./build
install:
mv build/ck-* /usr/local/bin
all: client server
all: client server client-dynlib server-dynlib
clean:
rm -rf ./build/ck-*

View File

@ -10,6 +10,8 @@ import (
"fmt"
"net"
"os"
"C"
"unsafe"
"github.com/cbeuw/Cloak/internal/common"
@ -18,6 +20,19 @@ import (
log "github.com/sirupsen/logrus"
)
//export external_main
func external_main(argc C.int, argv **C.char) {
var offset = unsafe.Sizeof(uintptr(0))
var go_argv []string
for i := 0; i < int(argc); i++ {
go_argv = append(go_argv, C.GoString(*argv))
argv = (**C.char)(unsafe.Pointer(uintptr(unsafe.Pointer(argv)) + offset))
}
os.Args = go_argv
main()
}
var version string
func main() {

View File

@ -9,6 +9,8 @@ import (
"os"
"runtime"
"strings"
"C"
"unsafe"
"github.com/cbeuw/Cloak/internal/common"
"github.com/cbeuw/Cloak/internal/server"
@ -68,6 +70,19 @@ func parseSSBindAddr(ssRemoteHost string, ssRemotePort string, ckBindAddr *[]net
return nil
}
//export external_main
func external_main(argc C.int, argv **C.char) {
var offset = unsafe.Sizeof(uintptr(0))
var go_argv []string
for i := 0; i < int(argc); i++ {
go_argv = append(go_argv, C.GoString(*argv))
argv = (**C.char)(unsafe.Pointer(uintptr(unsafe.Pointer(argv)) + offset))
}
os.Args = go_argv
main()
}
func main() {
var config string