@@ -192,7 +192,7 @@ func New(ctx context.Context, mc paho.Client, cfg *Config, nc nodered.Client, lo
192192 }
193193
194194 topic := fmt .Sprintf ("m/%s/c/%s/services/agent/heartbeat" ,
195- cfg .DomainID , cfg .Channels .CtrlChan ())
195+ cfg .DomainID , cfg .Channels .DataChan ())
196196 go ag .selfHeartbeat (ctx , topic , cfg .Heartbeat .Interval , cfg .MQTT .QoS )
197197
198198 return ag , nil
@@ -285,7 +285,11 @@ func (a *agent) Control(uuid, cmdStr string) error {
285285// b, _ := toml.Marshal(cfg)
286286// config_file_content := base64.StdEncoding.EncodeToString(b).
287287func (a * agent ) ServiceConfig (ctx context.Context , uuid , cmdStr string ) error {
288- cmdArgs := strings .Split (strings .ReplaceAll (cmdStr , " " , "" ), "," )
288+ rawParts := strings .Split (cmdStr , "," )
289+ cmdArgs := make ([]string , len (rawParts ))
290+ for i , p := range rawParts {
291+ cmdArgs [i ] = strings .TrimSpace (p )
292+ }
289293 if len (cmdArgs ) < 1 {
290294 return errInvalidCommand
291295 }
@@ -323,16 +327,10 @@ func (a *agent) ServiceConfig(ctx context.Context, uuid, cmdStr string) error {
323327 resp = notFound
324328 }
325329 case "set" :
326- // Use SplitN(3) so values containing commas (e.g. URLs) are preserved.
327- parts := strings .SplitN (cmdStr , "," , 3 )
328- setArgs := make ([]string , len (parts ))
329- for i , p := range parts {
330- setArgs [i ] = strings .TrimSpace (p )
331- }
332- if len (setArgs ) < 3 || setArgs [1 ] == "" || setArgs [2 ] == "" {
330+ if len (cmdArgs ) < 3 || cmdArgs [1 ] == "" || cmdArgs [2 ] == "" {
333331 return errInvalidCommand
334332 }
335- key , val := setArgs [1 ], setArgs [2 ]
333+ key , val := cmdArgs [1 ], cmdArgs [2 ]
336334 if ! settableKeys [key ] {
337335 return errInvalidCommand
338336 }
@@ -882,6 +880,8 @@ func validateSettableValue(key, val string) error {
882880 if err != nil || d <= 0 {
883881 return errInvalidCommand
884882 }
883+ default :
884+ return errInvalidCommand
885885 }
886886 return nil
887887}
0 commit comments