2023-07-17 03:23:26 +02:00
|
|
|
package actions
|
|
|
|
|
|
|
|
import (
|
|
|
|
"github.com/quexten/goldwarden/agent/config"
|
|
|
|
"github.com/quexten/goldwarden/agent/sockets"
|
|
|
|
"github.com/quexten/goldwarden/agent/vault"
|
2023-09-20 03:05:44 +02:00
|
|
|
"github.com/quexten/goldwarden/ipc/messages"
|
2023-07-17 03:23:26 +02:00
|
|
|
)
|
|
|
|
|
2023-09-20 03:05:44 +02:00
|
|
|
func handleSetApiURL(request messages.IPCMessage, cfg *config.Config, vault *vault.Vault, ctx *sockets.CallingContext) (response messages.IPCMessage, err error) {
|
|
|
|
apiURL := messages.ParsePayload(request).(messages.SetApiURLRequest).Value
|
2023-07-17 03:23:26 +02:00
|
|
|
cfg.ConfigFile.ApiUrl = apiURL
|
|
|
|
err = cfg.WriteConfig()
|
|
|
|
if err != nil {
|
2023-09-20 03:05:44 +02:00
|
|
|
return messages.IPCMessageFromPayload(messages.ActionResponse{
|
2023-07-17 03:23:26 +02:00
|
|
|
Success: false,
|
|
|
|
Message: err.Error(),
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2023-09-20 03:05:44 +02:00
|
|
|
return messages.IPCMessageFromPayload(messages.ActionResponse{
|
2023-07-17 03:23:26 +02:00
|
|
|
Success: true,
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2023-09-20 03:05:44 +02:00
|
|
|
func handleSetIdentity(request messages.IPCMessage, cfg *config.Config, vault *vault.Vault, ctx *sockets.CallingContext) (response messages.IPCMessage, err error) {
|
|
|
|
identity := messages.ParsePayload(request).(messages.SetIdentityURLRequest).Value
|
2023-07-17 03:23:26 +02:00
|
|
|
cfg.ConfigFile.IdentityUrl = identity
|
|
|
|
err = cfg.WriteConfig()
|
|
|
|
if err != nil {
|
2023-09-20 03:05:44 +02:00
|
|
|
return messages.IPCMessageFromPayload(messages.ActionResponse{
|
2023-07-17 03:23:26 +02:00
|
|
|
Success: false,
|
|
|
|
Message: err.Error(),
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2023-09-20 03:05:44 +02:00
|
|
|
return messages.IPCMessageFromPayload(messages.ActionResponse{
|
2023-07-17 03:23:26 +02:00
|
|
|
Success: true,
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2023-09-20 03:05:44 +02:00
|
|
|
func handleSetNotifications(request messages.IPCMessage, cfg *config.Config, vault *vault.Vault, ctx *sockets.CallingContext) (response messages.IPCMessage, err error) {
|
|
|
|
notifications := messages.ParsePayload(request).(messages.SetNotificationsURLRequest).Value
|
2023-09-11 15:39:19 +02:00
|
|
|
cfg.ConfigFile.NotificationsUrl = notifications
|
|
|
|
err = cfg.WriteConfig()
|
|
|
|
if err != nil {
|
2023-09-20 03:05:44 +02:00
|
|
|
return messages.IPCMessageFromPayload(messages.ActionResponse{
|
2023-09-11 15:39:19 +02:00
|
|
|
Success: false,
|
|
|
|
Message: err.Error(),
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2023-09-20 03:05:44 +02:00
|
|
|
return messages.IPCMessageFromPayload(messages.ActionResponse{
|
2023-09-11 15:39:19 +02:00
|
|
|
Success: true,
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2024-01-04 21:53:38 +01:00
|
|
|
func handleSetClientID(request messages.IPCMessage, cfg *config.Config, vault *vault.Vault, ctx *sockets.CallingContext) (response messages.IPCMessage, err error) {
|
|
|
|
clientID := messages.ParsePayload(request).(messages.SetClientIDRequest).Value
|
|
|
|
cfg.SetClientID(clientID)
|
|
|
|
err = cfg.WriteConfig()
|
|
|
|
if err != nil {
|
|
|
|
return messages.IPCMessageFromPayload(messages.ActionResponse{
|
|
|
|
Success: false,
|
|
|
|
Message: err.Error(),
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
return messages.IPCMessageFromPayload(messages.ActionResponse{
|
|
|
|
Success: true,
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
func handleSetClientSecret(request messages.IPCMessage, cfg *config.Config, vault *vault.Vault, ctx *sockets.CallingContext) (response messages.IPCMessage, err error) {
|
|
|
|
clientSecret := messages.ParsePayload(request).(messages.SetClientSecretRequest).Value
|
|
|
|
cfg.SetClientSecret(clientSecret)
|
|
|
|
err = cfg.WriteConfig()
|
|
|
|
if err != nil {
|
|
|
|
return messages.IPCMessageFromPayload(messages.ActionResponse{
|
|
|
|
Success: false,
|
|
|
|
Message: err.Error(),
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
return messages.IPCMessageFromPayload(messages.ActionResponse{
|
|
|
|
Success: true,
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2023-12-30 18:53:01 +01:00
|
|
|
func handleGetRuntimeConfig(request messages.IPCMessage, cfg *config.Config, vault *vault.Vault, ctx *sockets.CallingContext) (response messages.IPCMessage, err error) {
|
|
|
|
return messages.IPCMessageFromPayload(messages.GetRuntimeConfigResponse{
|
|
|
|
UseMemguard: cfg.ConfigFile.RuntimeConfig.UseMemguard,
|
|
|
|
SSHAgentSocketPath: cfg.ConfigFile.RuntimeConfig.SSHAgentSocketPath,
|
|
|
|
GoldwardenSocketPath: cfg.ConfigFile.RuntimeConfig.GoldwardenSocketPath,
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2023-07-17 03:23:26 +02:00
|
|
|
func init() {
|
2023-09-20 03:05:44 +02:00
|
|
|
AgentActionsRegistry.Register(messages.MessageTypeForEmptyPayload(messages.SetIdentityURLRequest{}), handleSetIdentity)
|
|
|
|
AgentActionsRegistry.Register(messages.MessageTypeForEmptyPayload(messages.SetApiURLRequest{}), handleSetApiURL)
|
|
|
|
AgentActionsRegistry.Register(messages.MessageTypeForEmptyPayload(messages.SetNotificationsURLRequest{}), handleSetNotifications)
|
2023-12-30 18:53:01 +01:00
|
|
|
AgentActionsRegistry.Register(messages.MessageTypeForEmptyPayload(messages.GetRuntimeConfigRequest{}), handleGetRuntimeConfig)
|
2024-01-04 21:53:38 +01:00
|
|
|
AgentActionsRegistry.Register(messages.MessageTypeForEmptyPayload(messages.SetClientIDRequest{}), handleSetClientID)
|
|
|
|
AgentActionsRegistry.Register(messages.MessageTypeForEmptyPayload(messages.SetClientSecretRequest{}), handleSetClientSecret)
|
2023-07-17 03:23:26 +02:00
|
|
|
}
|