Skip to content
Snippets Groups Projects
backend.go 2.6 KiB
Newer Older
  • Learn to ignore specific revisions
  • Kali Kaneko's avatar
    Kali Kaneko committed
    package main
    
    
    /* a wrapper around bitmask that exposes status to a QtQml gui.
       Have a look at the pkg/backend module for further enlightment. */
    
    Kali Kaneko's avatar
    Kali Kaneko committed
    
    import (
    
    Kali Kaneko's avatar
    Kali Kaneko committed
    	"unsafe"
    
    
    	"0xacab.org/leap/bitmask-vpn/pkg/backend"
    
    //export GetBitmaskVersion
    func GetBitmaskVersion() *C.char {
    
    	return (*C.char)(backend.GetVersion())
    }
    
    
    //export Login
    
    Kali Kaneko's avatar
    Kali Kaneko committed
    func Login(username, password string) {
    	backend.Login(username, password)
    
    Kali Kaneko's avatar
    Kali Kaneko committed
    //export SwitchOn
    func SwitchOn() {
    
    	backend.SwitchOn()
    
    Kali Kaneko's avatar
    Kali Kaneko committed
    }
    
    //export SwitchOff
    func SwitchOff() {
    
    	backend.SwitchOff()
    
    //export UseLocation
    func UseLocation(label string) {
    
    meskio's avatar
    meskio committed
    	// a bit of a hack to force the compiler to copy the string
    	// so the original C++ string will not be used as it will be changed down the line
    	location := string([]byte(label))
    	backend.UseLocation(location)
    
    //export UseAutomaticGateway
    func UseAutomaticGateway() {
    	backend.UseAutomaticGateway()
    }
    
    
    //export SetTransport
    func SetTransport(transport string) {
    	backend.SetTransport(string(transport))
    
    //export GetTransport
    func GetTransport() *C.char {
    	return (*C.char)(backend.GetTransport())
    }
    
    
    Kali Kaneko's avatar
    Kali Kaneko committed
    //export Quit
    func Quit() {
    
    //export DonateAccepted
    func DonateAccepted() {
    	backend.DonateAccepted()
    }
    
    
    //export DonateSeen
    func DonateSeen() {
    	backend.DonateSeen()
    }
    
    
    Kali Kaneko's avatar
    Kali Kaneko committed
    //export SubscribeToEvent
    func SubscribeToEvent(event string, f unsafe.Pointer) {
    
    	backend.SubscribeToEvent(event, f)
    
    Kali Kaneko's avatar
    Kali Kaneko committed
    }
    
    //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
    
    Kali Kaneko's avatar
    Kali Kaneko committed
    	go backend.InitializeBitmaskContext(opts)
    
    Kali Kaneko's avatar
    Kali Kaneko committed
    }
    
    //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
    
    Kali Kaneko's avatar
    Kali Kaneko committed
    	opts.SkipLaunch = true
    
    	opts.StartVPN = "no"
    
    Kali Kaneko's avatar
    Kali Kaneko committed
    	backend.InitializeBitmaskContext(opts)
    	backend.EnableMockBackend()
    
    //export EnableWebAPI
    
    func EnableWebAPI(port string) {
    	backend.EnableWebAPI(port)
    
    Kali Kaneko's avatar
    Kali Kaneko committed
    //export RefreshContext
    func RefreshContext() *C.char {
    
    	return (*C.char)(backend.RefreshContext())
    
    Kali Kaneko's avatar
    Kali Kaneko committed
    //export ResetError
    func ResetError(errname string) {
    	backend.ResetError(errname)
    }
    
    
    Kali Kaneko's avatar
    Kali Kaneko committed
    //export ResetNotification
    func ResetNotification(label string) {
    	backend.ResetNotification(label)
    }
    
    
    Kali Kaneko's avatar
    Kali Kaneko committed
    //export InstallHelpers
    func InstallHelpers() {
    
    	backend.InstallHelpers()
    
    Kali Kaneko's avatar
    Kali Kaneko committed
    }
    
    func main() {}