mirror of https://github.com/cbeuw/Cloak
Quich and lazy way to load and run cloak as dynamic library
This commit is contained in:
parent
c3d5470ef7
commit
0013b7ea7d
12
Makefile
12
Makefile
|
|
@ -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-*
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue