Skip to content

Commit

Permalink
Set command-line slogger in launcher interactive
Browse files Browse the repository at this point in the history
  • Loading branch information
RebeccaMahany committed Feb 20, 2024
1 parent 11ab5c1 commit 255b38d
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 7 deletions.
13 changes: 12 additions & 1 deletion cmd/launcher/interactive.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"errors"
"flag"
"fmt"
"log/slog"
"os"
"strings"

Expand All @@ -14,6 +15,7 @@ import (
"github.com/kolide/launcher/ee/tuf"
"github.com/kolide/launcher/pkg/autoupdate"
"github.com/kolide/launcher/pkg/launcher"
"github.com/kolide/launcher/pkg/log/multislogger"
"github.com/kolide/launcher/pkg/osquery/interactive"
)

Expand All @@ -34,6 +36,15 @@ func runInteractive(args []string) error {

logger := logutil.NewServerLogger(*flDebug)

slogLevel := slog.LevelInfo
if *flDebug {
slogLevel = slog.LevelDebug
}

slogger := multislogger.New(slog.NewTextHandler(os.Stderr, &slog.HandlerOptions{
Level: slogLevel,
})).Logger

osquerydPath := *flOsquerydPath
if osquerydPath == "" {
latestOsquerydBinary, err := tuf.CheckOutLatestWithoutConfig("osqueryd", logger)
Expand Down Expand Up @@ -80,7 +91,7 @@ func runInteractive(args []string) error {
flOsqueryFlags = append(flOsqueryFlags, fmt.Sprintf("tls_server_certs=%s", certs))
}

osqueryProc, extensionsServer, err := interactive.StartProcess(rootDir, osquerydPath, flOsqueryFlags)
osqueryProc, extensionsServer, err := interactive.StartProcess(slogger, rootDir, osquerydPath, flOsqueryFlags)
if err != nil {
return fmt.Errorf("error starting osqueryd: %s", err)
}
Expand Down
10 changes: 5 additions & 5 deletions pkg/osquery/interactive/interactive.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,22 @@ package interactive

import (
"fmt"
"log/slog"
"os"
"path/filepath"
"runtime"
"time"

"github.com/kolide/kit/fsutil"
"github.com/kolide/launcher/pkg/augeas"
"github.com/kolide/launcher/pkg/log/multislogger"
osqueryRuntime "github.com/kolide/launcher/pkg/osquery/runtime"
"github.com/kolide/launcher/pkg/osquery/table"
osquery "github.com/osquery/osquery-go"
)

const extensionName = "com.kolide.launcher_interactive"

func StartProcess(rootDir, osquerydPath string, osqueryFlags []string) (*os.Process, *osquery.ExtensionManagerServer, error) {
func StartProcess(slogger *slog.Logger, rootDir, osquerydPath string, osqueryFlags []string) (*os.Process, *osquery.ExtensionManagerServer, error) {

if err := os.MkdirAll(rootDir, fsutil.DirMode); err != nil {
return nil, nil, fmt.Errorf("creating root dir for interactive mode: %w", err)
Expand Down Expand Up @@ -58,7 +58,7 @@ func StartProcess(rootDir, osquerydPath string, osqueryFlags []string) (*os.Proc
return nil, nil, fmt.Errorf("error waiting for osquery to create socket: %w", err)
}

extensionServer, err := loadExtensions(socketPath, osquerydPath)
extensionServer, err := loadExtensions(slogger, socketPath, osquerydPath)
if err != nil {
err = fmt.Errorf("error loading extensions: %w", err)

Expand Down Expand Up @@ -100,7 +100,7 @@ func buildOsqueryFlags(socketPath, augeasLensesPath string, osqueryFlags []strin
return flags
}

func loadExtensions(socketPath string, osquerydPath string) (*osquery.ExtensionManagerServer, error) {
func loadExtensions(slogger *slog.Logger, socketPath string, osquerydPath string) (*osquery.ExtensionManagerServer, error) {
client, err := osquery.NewClient(socketPath, 10*time.Second, osquery.MaxWaitTime(10*time.Second))
if err != nil {
return nil, fmt.Errorf("error creating osquery client: %w", err)
Expand All @@ -117,7 +117,7 @@ func loadExtensions(socketPath string, osquerydPath string) (*osquery.ExtensionM
return extensionManagerServer, fmt.Errorf("error creating extension manager server: %w", err)
}

extensionManagerServer.RegisterPlugin(table.PlatformTables(multislogger.New().Logger, osquerydPath)...)
extensionManagerServer.RegisterPlugin(table.PlatformTables(slogger, osquerydPath)...)

if err := extensionManagerServer.Start(); err != nil {
return nil, fmt.Errorf("error starting extension manager server: %w", err)
Expand Down
3 changes: 2 additions & 1 deletion pkg/osquery/interactive/interactive_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import (
"testing"

"github.com/kolide/kit/fsutil"
"github.com/kolide/launcher/pkg/log/multislogger"
"github.com/kolide/launcher/pkg/packaging"
"github.com/stretchr/testify/require"
)
Expand Down Expand Up @@ -83,7 +84,7 @@ func TestProc(t *testing.T) {
require.NoError(t, downloadOsquery(rootDir))
osquerydPath := filepath.Join(rootDir, "osqueryd")

proc, _, err := StartProcess(rootDir, osquerydPath, tt.osqueryFlags)
proc, _, err := StartProcess(multislogger.New().Logger, rootDir, osquerydPath, tt.osqueryFlags)

if tt.errContainsStr != "" {
require.Error(t, err)
Expand Down

0 comments on commit 255b38d

Please sign in to comment.