mirror of
https://github.com/edgelesssys/constellation.git
synced 2025-02-02 02:24:56 -05:00
debugd: add check for info fields
Signed-off-by: Paul Meyer <49727155+katexochen@users.noreply.github.com>
This commit is contained in:
parent
a0a7294546
commit
ac74de86fb
@ -13,9 +13,11 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
"net"
|
"net"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/edgelesssys/constellation/v2/debugd/internal/bootstrapper"
|
"github.com/edgelesssys/constellation/v2/debugd/internal/bootstrapper"
|
||||||
"github.com/edgelesssys/constellation/v2/debugd/internal/debugd"
|
"github.com/edgelesssys/constellation/v2/debugd/internal/debugd"
|
||||||
|
"github.com/edgelesssys/constellation/v2/debugd/internal/debugd/logcollector"
|
||||||
pb "github.com/edgelesssys/constellation/v2/debugd/service"
|
pb "github.com/edgelesssys/constellation/v2/debugd/service"
|
||||||
"github.com/edgelesssys/constellation/v2/internal/config"
|
"github.com/edgelesssys/constellation/v2/internal/config"
|
||||||
"github.com/edgelesssys/constellation/v2/internal/constants"
|
"github.com/edgelesssys/constellation/v2/internal/constants"
|
||||||
@ -85,16 +87,19 @@ func deploy(cmd *cobra.Command, fileHandler file.Handler, constellationConfig *c
|
|||||||
ips = []string{idFile.IP}
|
ips = []string{idFile.IP}
|
||||||
}
|
}
|
||||||
|
|
||||||
infos, err := cmd.Flags().GetStringToString("info")
|
info, err := cmd.Flags().GetStringToString("info")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if err := checkInfoMap(info); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
for _, ip := range ips {
|
for _, ip := range ips {
|
||||||
|
|
||||||
input := deployOnEndpointInput{
|
input := deployOnEndpointInput{
|
||||||
debugdEndpoint: ip,
|
debugdEndpoint: ip,
|
||||||
infos: infos,
|
infos: info,
|
||||||
bootstrapperPath: bootstrapperPath,
|
bootstrapperPath: bootstrapperPath,
|
||||||
reader: reader,
|
reader: reader,
|
||||||
}
|
}
|
||||||
@ -196,6 +201,22 @@ func uploadBootstrapper(ctx context.Context, client pb.DebugdClient, in deployOn
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func checkInfoMap(info map[string]string) error {
|
||||||
|
logPrefix, logFields := logcollector.InfoFields()
|
||||||
|
for k := range info {
|
||||||
|
if !strings.HasPrefix(k, logPrefix) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
subkey := strings.TrimPrefix(k, logPrefix)
|
||||||
|
|
||||||
|
if _, ok := logFields[subkey]; !ok {
|
||||||
|
return fmt.Errorf("invalid subkey %q for info key %q", subkey, fmt.Sprintf("%s.%s", logPrefix, k))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
type fileToStreamReader interface {
|
type fileToStreamReader interface {
|
||||||
ReadStream(filename string, stream bootstrapper.WriteChunkStream, chunksize uint, showProgress bool) error
|
ReadStream(filename string, stream bootstrapper.WriteChunkStream, chunksize uint, showProgress bool) error
|
||||||
}
|
}
|
||||||
|
15
debugd/internal/debugd/logcollector/fields.go
Normal file
15
debugd/internal/debugd/logcollector/fields.go
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
/*
|
||||||
|
Copyright (c) Edgeless Systems GmbH
|
||||||
|
|
||||||
|
SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
*/
|
||||||
|
|
||||||
|
package logcollector
|
||||||
|
|
||||||
|
// InfoFields are the fields that are allowed in the info map
|
||||||
|
// under the prefix "logcollect.".
|
||||||
|
func InfoFields() (string, map[string]struct{}) {
|
||||||
|
return "logcollect.", map[string]struct{}{
|
||||||
|
"admin": {}, // the name of the person running the cdbg command
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user