1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
package main
/* a wrapper around bitmask that exposes status to a QtQml gui.
Have a look at the pkg/backend module for further enlightment. */
import (
"C"
"unsafe"
"0xacab.org/leap/bitmask-vpn/pkg/backend"
)
//export GetBitmaskVersion
func GetBitmaskVersion() *C.char {
return (*C.char)(backend.GetVersion())
}
//export Login
func Login(username, password string) {
backend.Login(username, password)
}
//export SwitchOn
func SwitchOn() {
backend.SwitchOn()
}
//export SwitchOff
func SwitchOff() {
backend.SwitchOff()
}
//export Quit
func Quit() {
backend.Quit()
}
//export DonateAccepted
func DonateAccepted() {
backend.DonateAccepted()
}
//export SubscribeToEvent
func SubscribeToEvent(event string, f unsafe.Pointer) {
backend.SubscribeToEvent(event, f)
}
//export InitializeBitmaskContext
func InitializeBitmaskContext(provider string,
jsonPtr unsafe.Pointer, jsonLen C.int,
obfs4 bool, disableAutostart bool, startVPN string) {
json := C.GoBytes(jsonPtr, jsonLen)
opts := backend.InitOptsFromJSON(provider, string(json))
opts.Obfs4 = obfs4
opts.DisableAutostart = disableAutostart
opts.StartVPN = startVPN
backend.InitializeBitmaskContext(opts)
}
//export InitializeTestBitmaskContext
func InitializeTestBitmaskContext(provider string,
jsonPtr unsafe.Pointer, jsonLen C.int) {
json := C.GoBytes(jsonPtr, jsonLen)
opts := backend.InitOptsFromJSON(provider, string(json))
opts.DisableAutostart = true
opts.SkipLaunch = true
opts.StartVPN = "no"
backend.InitializeBitmaskContext(opts)
backend.EnableMockBackend()
}
//export EnableWebAPI
func EnableWebAPI(port string) {
backend.EnableWebAPI(port)
}
//export RefreshContext
func RefreshContext() *C.char {
return (*C.char)(backend.RefreshContext())
}
//export ResetError
func ResetError(errname string) {
backend.ResetError(errname)
}
//export ResetNotification
func ResetNotification(label string) {
backend.ResetNotification(label)
}
//export InstallHelpers
func InstallHelpers() {
backend.InstallHelpers()
}
func main() {}
|