diff --git a/pkg/llm/chatgpt.go b/pkg/llm/chatgpt.go index 1c10f89..5ad8c67 100644 --- a/pkg/llm/chatgpt.go +++ b/pkg/llm/chatgpt.go @@ -7,8 +7,8 @@ import ( "github.com/cloudwego/eino-ext/components/model/openai" "github.com/cloudwego/eino/schema" "github.com/facebookincubator/go-belt/tool/logger" - "github.com/xaionaro-go/secret" llmtypes "github.com/xaionaro-go/streamctl/pkg/llm/types" + "github.com/xaionaro-go/streamctl/pkg/secret" ) type ChatGPT struct { diff --git a/pkg/p2p/implementations/weron/p2p.go b/pkg/p2p/implementations/weron/p2p.go index 43efb3a..873d3fa 100644 --- a/pkg/p2p/implementations/weron/p2p.go +++ b/pkg/p2p/implementations/weron/p2p.go @@ -20,10 +20,10 @@ import ( "github.com/pojntfx/weron/pkg/wrtcconn" "github.com/pojntfx/weron/pkg/wrtcip" "github.com/xaionaro-go/observability" - "github.com/xaionaro-go/secret" "github.com/xaionaro-go/streamctl/pkg/consts" p2pconsts "github.com/xaionaro-go/streamctl/pkg/p2p/implementations/weron/consts" "github.com/xaionaro-go/streamctl/pkg/p2p/types" + "github.com/xaionaro-go/streamctl/pkg/secret" ) const ( diff --git a/pkg/screenshoter/screenshoter_wayland.go b/pkg/screenshoter/screenshoter_wayland.go index 1733146..466e574 100644 --- a/pkg/screenshoter/screenshoter_wayland.go +++ b/pkg/screenshoter/screenshoter_wayland.go @@ -23,8 +23,8 @@ import ( "github.com/xaionaro-go/avpipeline/node" "github.com/xaionaro-go/avpipeline/packet" "github.com/xaionaro-go/observability" - "github.com/xaionaro-go/secret" "github.com/xaionaro-go/streamctl/pkg/screenshot" + "github.com/xaionaro-go/secret" "golang.org/x/sys/unix" ) @@ -57,7 +57,7 @@ func (s *ScreenshoterWayland) Loop( logger.Debugf(ctx, "starting wf-recorder") args := []string{ "wf-recorder", - "-o", "DP-2", + "-o", "DP-8", "-y", "-r", fmt.Sprintf("%f", 1.0/interval.Seconds()), "-c", "rawvideo", diff --git a/pkg/secret/any.go b/pkg/secret/any.go new file mode 100644 index 0000000..1c6c19b --- /dev/null +++ b/pkg/secret/any.go @@ -0,0 +1,61 @@ +package secret + +import ( + "encoding/base64" + "fmt" + + "github.com/xaionaro-go/secret" + "gopkg.in/yaml.v2" +) + +type Any[T any] struct { + secret.Any[T] +} + +func New[T any](in T) Any[T] { + return Any[T]{Any: secret.New(in)} +} + +func (s Any[T]) MarshalYAML() (_ret []byte, _err error) { + defer func() { + if r := recover(); r != nil { + _err = fmt.Errorf("got a panic: %v", r) + } + }() + + var v any = s.Get() + if b, ok := v.([]byte); ok { + v = base64.StdEncoding.EncodeToString(b) + } + b, err := yaml.Marshal(v) + return b, err +} + +func (s *Any[T]) UnmarshalYAML(b []byte) (_err error) { + defer func() { + if r := recover(); r != nil { + _err = fmt.Errorf("got a panic: %v", r) + } + }() + + var v T + if _, ok := any(v).([]byte); ok { + var str string + err := yaml.Unmarshal(b, &str) + if err != nil { + return fmt.Errorf("unable to yaml.Unmarshal: %w", err) + } + b, err := base64.StdEncoding.DecodeString(str) + if err != nil { + return fmt.Errorf("unable to decode '%s' as base64: %w", str, err) + } + s.Set(any(b).(T)) + } else { + err := yaml.Unmarshal(b, &v) + if err != nil { + return fmt.Errorf("unable to yaml.Unmarshal: %w", err) + } + s.Set(v) + } + return nil +} diff --git a/pkg/secret/bytes.go b/pkg/secret/bytes.go new file mode 100644 index 0000000..2ed3b7c --- /dev/null +++ b/pkg/secret/bytes.go @@ -0,0 +1,3 @@ +package secret + +type Bytes = Any[[]byte] diff --git a/pkg/secret/oauth2_token.go b/pkg/secret/oauth2_token.go new file mode 100644 index 0000000..940af39 --- /dev/null +++ b/pkg/secret/oauth2_token.go @@ -0,0 +1,9 @@ +package secret + +import ( + "golang.org/x/oauth2" +) + +// OAuth2Token stores an OAuth2 token in an encrypted state in memory, so that +// you don't accidentally leak these secrets via logging or whatever. +type OAuth2Token = Any[oauth2.Token] diff --git a/pkg/secret/string.go b/pkg/secret/string.go new file mode 100644 index 0000000..c5996b6 --- /dev/null +++ b/pkg/secret/string.go @@ -0,0 +1,3 @@ +package secret + +type String = Any[string] diff --git a/pkg/streamcontrol/kick/kick.go b/pkg/streamcontrol/kick/kick.go index 3eb8a05..f22debf 100644 --- a/pkg/streamcontrol/kick/kick.go +++ b/pkg/streamcontrol/kick/kick.go @@ -18,8 +18,8 @@ import ( "github.com/scorfly/gokick" "github.com/xaionaro-go/kickcom" "github.com/xaionaro-go/observability" - "github.com/xaionaro-go/secret" "github.com/xaionaro-go/streamctl/pkg/oauthhandler" + "github.com/xaionaro-go/streamctl/pkg/secret" "github.com/xaionaro-go/streamctl/pkg/streamcontrol" "github.com/xaionaro-go/xsync" ) diff --git a/pkg/streamcontrol/kick/types/config.go b/pkg/streamcontrol/kick/types/config.go index ef8d566..e5b4914 100644 --- a/pkg/streamcontrol/kick/types/config.go +++ b/pkg/streamcontrol/kick/types/config.go @@ -4,9 +4,9 @@ import ( "context" "time" - "github.com/xaionaro-go/secret" "github.com/xaionaro-go/streamctl/pkg/buildvars" "github.com/xaionaro-go/streamctl/pkg/oauthhandler" + "github.com/xaionaro-go/streamctl/pkg/secret" streamctl "github.com/xaionaro-go/streamctl/pkg/streamcontrol" ) diff --git a/pkg/streamcontrol/kick/types/custom_data.go b/pkg/streamcontrol/kick/types/custom_data.go index 0e58d4f..6ca6a19 100644 --- a/pkg/streamcontrol/kick/types/custom_data.go +++ b/pkg/streamcontrol/kick/types/custom_data.go @@ -1,7 +1,7 @@ package kick import ( - "github.com/xaionaro-go/secret" + "github.com/xaionaro-go/streamctl/pkg/secret" ) type CustomData struct { diff --git a/pkg/streamcontrol/obs/types/config.go b/pkg/streamcontrol/obs/types/config.go index c6d4e74..24dad99 100644 --- a/pkg/streamcontrol/obs/types/config.go +++ b/pkg/streamcontrol/obs/types/config.go @@ -3,7 +3,7 @@ package types import ( "time" - "github.com/xaionaro-go/secret" + "github.com/xaionaro-go/streamctl/pkg/secret" streamctl "github.com/xaionaro-go/streamctl/pkg/streamcontrol" ) diff --git a/pkg/streamcontrol/twitch/auth/access_token_app.go b/pkg/streamcontrol/twitch/auth/access_token_app.go index 1c460f8..296e2ee 100644 --- a/pkg/streamcontrol/twitch/auth/access_token_app.go +++ b/pkg/streamcontrol/twitch/auth/access_token_app.go @@ -5,7 +5,7 @@ import ( "fmt" "github.com/facebookincubator/go-belt/tool/logger" - "github.com/xaionaro-go/secret" + "github.com/xaionaro-go/streamctl/pkg/secret" twitch "github.com/xaionaro-go/streamctl/pkg/streamcontrol/twitch/types" ) diff --git a/pkg/streamcontrol/twitch/auth/access_token_user.go b/pkg/streamcontrol/twitch/auth/access_token_user.go index 1c63d20..7867c7a 100644 --- a/pkg/streamcontrol/twitch/auth/access_token_user.go +++ b/pkg/streamcontrol/twitch/auth/access_token_user.go @@ -6,7 +6,7 @@ import ( "github.com/facebookincubator/go-belt/tool/logger" "github.com/xaionaro-go/observability" - "github.com/xaionaro-go/secret" + "github.com/xaionaro-go/streamctl/pkg/secret" twitch "github.com/xaionaro-go/streamctl/pkg/streamcontrol/twitch/types" ) diff --git a/pkg/streamcontrol/twitch/cmd/chatlistener/main.go b/pkg/streamcontrol/twitch/cmd/chatlistener/main.go index afebf2e..967bfcb 100644 --- a/pkg/streamcontrol/twitch/cmd/chatlistener/main.go +++ b/pkg/streamcontrol/twitch/cmd/chatlistener/main.go @@ -12,8 +12,8 @@ import ( "github.com/facebookincubator/go-belt/tool/logger/implementation/zap" "github.com/nicklaw5/helix/v2" "github.com/xaionaro-go/observability" - "github.com/xaionaro-go/secret" "github.com/xaionaro-go/streamctl/pkg/oauthhandler" + "github.com/xaionaro-go/streamctl/pkg/secret" "github.com/xaionaro-go/streamctl/pkg/streamcontrol/twitch" "github.com/xaionaro-go/streamctl/pkg/streamcontrol/twitch/auth" ) diff --git a/pkg/streamcontrol/twitch/twitch.go b/pkg/streamcontrol/twitch/twitch.go index 76fb6f5..d3012b7 100644 --- a/pkg/streamcontrol/twitch/twitch.go +++ b/pkg/streamcontrol/twitch/twitch.go @@ -16,9 +16,9 @@ import ( "github.com/hashicorp/go-multierror" "github.com/nicklaw5/helix/v2" "github.com/xaionaro-go/observability" - "github.com/xaionaro-go/secret" "github.com/xaionaro-go/streamctl/pkg/buildvars" "github.com/xaionaro-go/streamctl/pkg/ringbuffer" + "github.com/xaionaro-go/streamctl/pkg/secret" "github.com/xaionaro-go/streamctl/pkg/streamcontrol" "github.com/xaionaro-go/streamctl/pkg/streamcontrol/twitch/auth" "github.com/xaionaro-go/xsync" diff --git a/pkg/streamcontrol/twitch/types/config.go b/pkg/streamcontrol/twitch/types/config.go index 09f1fc0..94c16d6 100644 --- a/pkg/streamcontrol/twitch/types/config.go +++ b/pkg/streamcontrol/twitch/types/config.go @@ -1,8 +1,8 @@ package twitch import ( - "github.com/xaionaro-go/secret" "github.com/xaionaro-go/streamctl/pkg/buildvars" + "github.com/xaionaro-go/streamctl/pkg/secret" streamctl "github.com/xaionaro-go/streamctl/pkg/streamcontrol" ) diff --git a/pkg/streamcontrol/youtube/types/config.go b/pkg/streamcontrol/youtube/types/config.go index 50bbc85..a7bc89d 100644 --- a/pkg/streamcontrol/youtube/types/config.go +++ b/pkg/streamcontrol/youtube/types/config.go @@ -4,8 +4,8 @@ import ( "context" "fmt" - "github.com/xaionaro-go/secret" "github.com/xaionaro-go/streamctl/pkg/oauthhandler" + "github.com/xaionaro-go/streamctl/pkg/secret" streamctl "github.com/xaionaro-go/streamctl/pkg/streamcontrol" "golang.org/x/oauth2" ) diff --git a/pkg/streamcontrol/youtube/youtube.go b/pkg/streamcontrol/youtube/youtube.go index e137ad8..d8dba49 100644 --- a/pkg/streamcontrol/youtube/youtube.go +++ b/pkg/streamcontrol/youtube/youtube.go @@ -22,8 +22,8 @@ import ( "github.com/go-yaml/yaml" "github.com/hashicorp/go-multierror" "github.com/xaionaro-go/observability" - "github.com/xaionaro-go/secret" "github.com/xaionaro-go/streamctl/pkg/oauthhandler" + "github.com/xaionaro-go/streamctl/pkg/secret" "github.com/xaionaro-go/streamctl/pkg/streamcontrol" "github.com/xaionaro-go/timeapiio" "github.com/xaionaro-go/xcontext" diff --git a/pkg/streamd/config/git_repo_config.go b/pkg/streamd/config/git_repo_config.go index fcdfb65..5712776 100644 --- a/pkg/streamd/config/git_repo_config.go +++ b/pkg/streamd/config/git_repo_config.go @@ -1,7 +1,7 @@ package config import ( - "github.com/xaionaro-go/secret" + "github.com/xaionaro-go/streamctl/pkg/secret" ) type GitRepoConfig struct { diff --git a/pkg/streamd/config/p2p_network.go b/pkg/streamd/config/p2p_network.go index d157658..93f97a9 100644 --- a/pkg/streamd/config/p2p_network.go +++ b/pkg/streamd/config/p2p_network.go @@ -10,7 +10,7 @@ import ( "github.com/google/uuid" "github.com/goombaio/namegenerator" - "github.com/xaionaro-go/secret" + "github.com/xaionaro-go/streamctl/pkg/secret" ) type P2PPrivateKey struct { diff --git a/pkg/streamd/llm.go b/pkg/streamd/llm.go index aa589c9..746b49b 100644 --- a/pkg/streamd/llm.go +++ b/pkg/streamd/llm.go @@ -5,9 +5,9 @@ import ( "fmt" "github.com/facebookincubator/go-belt/tool/logger" - "github.com/xaionaro-go/secret" llms "github.com/xaionaro-go/streamctl/pkg/llm" llmtypes "github.com/xaionaro-go/streamctl/pkg/llm/types" + "github.com/xaionaro-go/streamctl/pkg/secret" "github.com/xaionaro-go/xcontext" "github.com/xaionaro-go/xsync" ) diff --git a/pkg/streamserver/streamforward/stream_forwards.go b/pkg/streamserver/streamforward/stream_forwards.go index b9b5bfc..7ccf3d3 100644 --- a/pkg/streamserver/streamforward/stream_forwards.go +++ b/pkg/streamserver/streamforward/stream_forwards.go @@ -11,7 +11,7 @@ import ( "github.com/xaionaro-go/lockmap" "github.com/xaionaro-go/observability" "github.com/xaionaro-go/recoder" - "github.com/xaionaro-go/secret" + "github.com/xaionaro-go/streamctl/pkg/secret" "github.com/xaionaro-go/streamctl/pkg/streamcontrol/youtube" "github.com/xaionaro-go/streamctl/pkg/streamd/memoize" "github.com/xaionaro-go/streamctl/pkg/streamserver/types" diff --git a/pkg/streamserver/types/types.go b/pkg/streamserver/types/types.go index e0605b3..82a52fe 100644 --- a/pkg/streamserver/types/types.go +++ b/pkg/streamserver/types/types.go @@ -2,7 +2,7 @@ package types import ( "github.com/xaionaro-go/recoder/xaionaro-go-rtmp/yutoppgortmp" - "github.com/xaionaro-go/secret" + "github.com/xaionaro-go/streamctl/pkg/secret" "github.com/xaionaro-go/streamctl/pkg/streamtypes" )