working on rpc xml types

This commit is contained in:
mykola2312 2025-01-22 13:53:32 +02:00
parent b60aa935ce
commit d736c76fe4
2 changed files with 54 additions and 5 deletions

View file

@ -2,6 +2,26 @@ package rpc
import "encoding/xml" import "encoding/xml"
type LuxRpcWAN struct {
XMLName xml.Name `xml:"wan"`
Addr4 string `xml:"addr4"`
Addr6 string `xml:"addr6"`
}
type LuxRpcOption struct {
XMLName xml.Name `xml:"option"`
Type int `xml:"type,attr"`
Blob string `xml:",innerxml"`
}
type LuxRpcState struct {
XMLName xml.Name `xml:"state"`
WAN LuxRpcWAN `xml:"wan"`
Options []LuxRpcOption `xml:"option"`
}
type LuxRpcHost struct { type LuxRpcHost struct {
XMLName xml.Name `xml:"host"` XMLName xml.Name `xml:"host"`
HostID string `xml:"id,attr"` HostID string `xml:"id,attr"`
@ -19,6 +39,28 @@ type LuxRpcRequest struct {
Hosts []LuxRpcHost `xml:"host"` Hosts []LuxRpcHost `xml:"host"`
} }
type LuxRpcKeyNode struct {
XMLName xml.Name `xml:"node"`
ID string `xml:"id,attr"`
KeyBlob string `xml:"key"`
IVBlob string `xml:"iv"`
}
type LuxRpcKeyHost struct {
XMLName xml.Name `xml:"host"`
ID string `xml:"id,attr"`
KeyBlob string `xml:"key"`
IVBlob string `xml:"iv"`
}
type LuxRpcKeyStore struct {
XMLName xml.Name `xml:"keystore"`
Nodes []LuxRpcKeyNode `xml:"node"`
Hosts []LuxRpcKeyHost `xml:"host"`
}
type LuxRpcRoute struct { type LuxRpcRoute struct {
XMLName xml.Name `xml:"route"` XMLName xml.Name `xml:"route"`
Type int `xml:"type,attr"` Type int `xml:"type,attr"`
@ -32,9 +74,9 @@ type LuxRpcResponse struct {
RequestID int `xml:"id,attr"` RequestID int `xml:"id,attr"`
// Command-specific fields // Command-specific fields
KeyStoreBlob string `xml:"keystore"` Keystore LuxRpcKeyStore `xml:"keystore"`
Routes []LuxRpcRoute `xml:"route"` Routes []LuxRpcRoute `xml:"route"`
Hosts []LuxRpcHost `xml:"host"` Hosts []LuxRpcHost `xml:"host"`
} }
type LuxRpcError struct { type LuxRpcError struct {

View file

@ -43,8 +43,15 @@ func TestRequestDecoding(t *testing.T) {
func TestResponseEncoding(t *testing.T) { func TestResponseEncoding(t *testing.T) {
xmlBytes, err := xml.Marshal(rpc.LuxRpcResponse{ xmlBytes, err := xml.Marshal(rpc.LuxRpcResponse{
RequestID: 1, RequestID: 1,
KeyStoreBlob: "*base64 keystore*", Keystore: rpc.LuxRpcKeyStore{
Nodes: []rpc.LuxRpcKeyNode{
{ID: "1111", KeyBlob: "base64 key", IVBlob: "base64 iv"},
},
Hosts: []rpc.LuxRpcKeyHost{
{ID: "0002", KeyBlob: "base64 key", IVBlob: "base64 iv"},
},
},
}) })
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)