package main

import "C"
import (
	"encoding/json"
	"fmt"
)

type AccessControl struct {
	Mode              string   `json:"mode"`
	AcceptList        []string `json:"acceptList"`
	RejectList        []string `json:"rejectList"`
	IsFilterSystemApp bool     `json:"isFilterSystemApp"`
}

type AndroidProps struct {
	Enable        bool           `json:"enable"`
	AccessControl *AccessControl `json:"accessControl"`
	AllowBypass   bool           `json:"allowBypass"`
	SystemProxy   bool           `json:"systemProxy"`
}

type State struct {
	AndroidProps
	CurrentProfileName string `json:"currentProfileName"`
	MixedPort          int    `json:"mixedPort"`
	OnlyProxy          bool   `json:"onlyProxy"`
}

var state State

//export getState
func getState() *C.char {
	data, err := json.Marshal(state)
	if err != nil {
		fmt.Println("Error:", err)
		return C.CString("")
	}
	return C.CString(string(data))
}

//export setState
func setState(s *C.char) {
	paramsString := C.GoString(s)
	err := json.Unmarshal([]byte(paramsString), &state)
	if err != nil {
		return
	}
}
