Skip to content

Commit d699c27

Browse files
authored
fix(installer): handle removal of deleted templates during update (#5998)
* fix(installer): handle removal of deleted templates during update Signed-off-by: Dwi Siswanto <[email protected]> * chore(installer): no log for non-existent deleted templates err Signed-off-by: Dwi Siswanto <[email protected]> * feat(installer): purge empty dirs after removing deleted templates Signed-off-by: Dwi Siswanto <[email protected]> * Revert "feat(installer): purge empty dirs after removing deleted templates" This reverts commit 8175e2a. * fix(installer): use semicolons as delimiters Signed-off-by: Dwi Siswanto <[email protected]> * feat(installer): add mods count in `*templateUpdateResults.String` Signed-off-by: Dwi Siswanto <[email protected]> --------- Signed-off-by: Dwi Siswanto <[email protected]>
1 parent ceab596 commit d699c27

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

pkg/installer/template.go

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,15 @@ type templateUpdateResults struct {
4545
func (t *templateUpdateResults) String() string {
4646
var buff bytes.Buffer
4747
data := [][]string{
48-
{strconv.Itoa(t.totalCount), strconv.Itoa(len(t.additions)), strconv.Itoa(len(t.deletions))},
48+
{
49+
strconv.Itoa(t.totalCount),
50+
strconv.Itoa(len(t.additions)),
51+
strconv.Itoa(len(t.modifications)),
52+
strconv.Itoa(len(t.deletions)),
53+
},
4954
}
5055
table := tablewriter.NewWriter(&buff)
51-
table.SetHeader([]string{"Total", "Added", "Removed"})
56+
table.SetHeader([]string{"Total", "Added", "Modified", "Removed"})
5257
for _, v := range data {
5358
table.Append(v)
5459
}
@@ -151,6 +156,13 @@ func (t *TemplateManager) updateTemplatesAt(dir string) error {
151156
// summarize all changes
152157
results := t.summarizeChanges(oldchecksums, newchecksums)
153158

159+
// remove deleted templates
160+
for _, deletion := range results.deletions {
161+
if err := os.Remove(deletion); err != nil && !os.IsNotExist(err) {
162+
gologger.Warning().Msgf("failed to remove deleted template %s: %s", deletion, err)
163+
}
164+
}
165+
154166
// print summary
155167
if results.totalCount > 0 {
156168
gologger.Info().Msgf("Successfully updated nuclei-templates (%v) to %s. GoodLuck!", ghrd.Latest.GetTagName(), dir)
@@ -343,7 +355,7 @@ func (t *TemplateManager) getChecksumFromDir(dir string) (map[string]string, err
343355
checksums, err := os.ReadFile(checksumFilePath)
344356
if err == nil {
345357
allChecksums := make(map[string]string)
346-
for _, v := range strings.Split(string(checksums), "\n") {
358+
for _, v := range strings.Split(string(checksums), ";") {
347359
v = strings.TrimSpace(v)
348360
tmparr := strings.Split(v, ",")
349361
if len(tmparr) != 2 {
@@ -366,7 +378,10 @@ func (t *TemplateManager) writeChecksumFileInDir(dir string) error {
366378
}
367379
var buff bytes.Buffer
368380
for k, v := range checksumMap {
369-
buff.WriteString(k + "," + v)
381+
buff.WriteString(k)
382+
buff.WriteString(",")
383+
buff.WriteString(v)
384+
buff.WriteString(";")
370385
}
371386
return os.WriteFile(config.DefaultConfig.GetChecksumFilePath(), buff.Bytes(), checkSumFilePerm)
372387
}

0 commit comments

Comments
 (0)