Merge pull request #68 from gabriel-samfira/sanitize-log-entries

Sanitize log entries
This commit is contained in:
Gabriel 2023-01-23 18:06:06 +02:00 committed by GitHub
commit 03d632c2b6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 17 additions and 10 deletions

View file

@ -25,6 +25,7 @@ import (
gErrors "garm/errors"
runnerParams "garm/params"
"garm/runner"
"garm/util"
wsWriter "garm/websocket"
"github.com/gorilla/websocket"
@ -113,7 +114,7 @@ func (a *APIController) CatchAll(w http.ResponseWriter, r *http.Request) {
case runnerParams.WorkflowJobEvent:
a.handleWorkflowJobEvent(w, r)
default:
log.Printf("ignoring unknown event %s", event)
log.Printf("ignoring unknown event %s", util.SanitizeLogEntry(string(event)))
return
}
}

View file

@ -11,6 +11,7 @@ import (
"time"
apiParams "garm/apiserver/params"
"garm/util"
"github.com/gorilla/websocket"
"github.com/spf13/cobra"
@ -61,7 +62,7 @@ var logCmd = &cobra.Command{
log.Printf("read: %q", err)
return
}
log.Print(string(message))
log.Print(util.SanitizeLogEntry(string(message)))
}
}()

View file

@ -30,6 +30,7 @@ import (
"garm/params"
"garm/runner/common"
providerCommon "garm/runner/providers/common"
"garm/util"
"github.com/google/go-github/v48/github"
"github.com/google/uuid"
@ -365,7 +366,7 @@ func (r *basePoolManager) acquireNewInstance(job params.WorkflowJob) error {
}
return errors.Wrap(err, "fetching suitable pool")
}
log.Printf("adding new runner with requested tags %s in pool %s", strings.Join(job.WorkflowJob.Labels, ", "), pool.ID)
log.Printf("adding new runner with requested tags %s in pool %s", util.SanitizeLogEntry(strings.Join(job.WorkflowJob.Labels, ", ")), util.SanitizeLogEntry(pool.ID))
if !pool.Enabled {
log.Printf("selected pool (%s) is disabled", pool.ID)
@ -658,7 +659,7 @@ func (r *basePoolManager) getRunnerDetailsFromJob(job params.WorkflowJob) (param
runnerDetails, err := r.store.GetInstanceByName(context.Background(), runnerInfo.Name)
if err != nil {
log.Printf("could not find runner details for %s", runnerInfo.Name)
log.Printf("could not find runner details for %s", util.SanitizeLogEntry(runnerInfo.Name))
return params.RunnerInfo{}, errors.Wrap(err, "fetching runner details")
}
@ -701,15 +702,15 @@ func (r *basePoolManager) HandleWorkflowJob(job params.WorkflowJob) error {
if errors.Is(err, runnerErrors.ErrNotFound) {
return nil
}
log.Printf("failed to update runner %s status", runnerInfo.Name)
log.Printf("failed to update runner %s status", util.SanitizeLogEntry(runnerInfo.Name))
return errors.Wrap(err, "updating runner")
}
log.Printf("marking instance %s as pending_delete", runnerInfo.Name)
log.Printf("marking instance %s as pending_delete", util.SanitizeLogEntry(runnerInfo.Name))
if err := r.setInstanceStatus(runnerInfo.Name, providerCommon.InstancePendingDelete, nil); err != nil {
if errors.Is(err, runnerErrors.ErrNotFound) {
return nil
}
log.Printf("failed to update runner %s status", runnerInfo.Name)
log.Printf("failed to update runner %s status", util.SanitizeLogEntry(runnerInfo.Name))
return errors.Wrap(err, "updating runner")
}
case "in_progress":
@ -733,7 +734,7 @@ func (r *basePoolManager) HandleWorkflowJob(job params.WorkflowJob) error {
if errors.Is(err, runnerErrors.ErrNotFound) {
return nil
}
log.Printf("failed to update runner %s status", runnerInfo.Name)
log.Printf("failed to update runner %s status", util.SanitizeLogEntry(runnerInfo.Name))
return errors.Wrap(err, "updating runner")
}
}

View file

@ -599,10 +599,10 @@ func (r *Runner) DispatchWorkflowJob(hookTargetType, signature string, jobData [
switch HookTargetType(hookTargetType) {
case RepoHook:
log.Printf("got hook for repo %s/%s", job.Repository.Owner.Login, job.Repository.Name)
log.Printf("got hook for repo %s/%s", util.SanitizeLogEntry(job.Repository.Owner.Login), util.SanitizeLogEntry(job.Repository.Name))
poolManager, err = r.findRepoPoolManager(job.Repository.Owner.Login, job.Repository.Name)
case OrganizationHook:
log.Printf("got hook for org %s", job.Organization.Login)
log.Printf("got hook for org %s", util.SanitizeLogEntry(job.Organization.Login))
poolManager, err = r.findOrgPoolManager(job.Organization.Login)
case EnterpriseHook:
poolManager, err = r.findEnterprisePoolManager(job.Enterprise.Slug)

View file

@ -327,3 +327,7 @@ func NewLoggingMiddleware(writer io.Writer) func(http.Handler) http.Handler {
return gorillaHandlers.CombinedLoggingHandler(writer, next)
}
}
func SanitizeLogEntry(entry string) string {
return strings.Replace(strings.Replace(entry, "\n", "", -1), "\r", "", -1)
}