mirror of https://github.com/cbeuw/Cloak
Library mode (external main) now can be enabled with build flag
This commit is contained in:
parent
0013b7ea7d
commit
d0517dfe40
4
Makefile
4
Makefile
|
|
@ -18,12 +18,12 @@ server:
|
||||||
|
|
||||||
client-dynlib:
|
client-dynlib:
|
||||||
mkdir -p build
|
mkdir -p build
|
||||||
go build -ldflags "-X main.version=${version}" -buildmode=c-shared -o libck-client.so ./cmd/ck-client
|
go build -ldflags "-X main.version=${version}" -buildmode=c-shared -tags=external_main -o libck-client.so ./cmd/ck-client
|
||||||
mv libck-client* ./build
|
mv libck-client* ./build
|
||||||
|
|
||||||
server-dynlib:
|
server-dynlib:
|
||||||
mkdir -p build
|
mkdir -p build
|
||||||
go build -ldflags "-X main.version=${version}" -buildmode=c-shared -o libck-server.so ./cmd/ck-server
|
go build -ldflags "-X main.version=${version}" -buildmode=c-shared -tags=external_main -o libck-server.so ./cmd/ck-server
|
||||||
mv libck-server* ./build
|
mv libck-server* ./build
|
||||||
|
|
||||||
install:
|
install:
|
||||||
|
|
|
||||||
|
|
@ -10,8 +10,6 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
"os"
|
"os"
|
||||||
"C"
|
|
||||||
"unsafe"
|
|
||||||
|
|
||||||
"github.com/cbeuw/Cloak/internal/common"
|
"github.com/cbeuw/Cloak/internal/common"
|
||||||
|
|
||||||
|
|
@ -20,19 +18,6 @@ import (
|
||||||
log "github.com/sirupsen/logrus"
|
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
|
var version string
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
//go:build external_main
|
||||||
|
// +build external_main
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"C"
|
||||||
|
"unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
//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()
|
||||||
|
}
|
||||||
|
|
@ -9,8 +9,6 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"runtime"
|
"runtime"
|
||||||
"strings"
|
"strings"
|
||||||
"C"
|
|
||||||
"unsafe"
|
|
||||||
|
|
||||||
"github.com/cbeuw/Cloak/internal/common"
|
"github.com/cbeuw/Cloak/internal/common"
|
||||||
"github.com/cbeuw/Cloak/internal/server"
|
"github.com/cbeuw/Cloak/internal/server"
|
||||||
|
|
@ -70,19 +68,6 @@ func parseSSBindAddr(ssRemoteHost string, ssRemotePort string, ckBindAddr *[]net
|
||||||
return nil
|
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() {
|
func main() {
|
||||||
var config string
|
var config string
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
//go:build external_main
|
||||||
|
// +build external_main
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"C"
|
||||||
|
"unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
//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()
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue