-
Notifications
You must be signed in to change notification settings - Fork 2.7k
/
Copy pathconstants.go
80 lines (71 loc) · 2.48 KB
/
constants.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package config
import (
"strings"
"github.com/Masterminds/semver/v3"
)
type AppMode string
const (
AppModeLibrary AppMode = "library"
AppModeCLI AppMode = "cli"
)
var (
// Global Var to control behaviours specific to cli or library
// maybe this should be moved to utils ??
// this is overwritten in cmd/nuclei/main.go
CurrentAppMode = AppModeLibrary
)
const (
TemplateConfigFileName = ".templates-config.json"
NucleiTemplatesDirName = "nuclei-templates"
OfficialNucleiTemplatesRepoName = "nuclei-templates"
NucleiIgnoreFileName = ".nuclei-ignore"
NucleiTemplatesIndexFileName = ".templates-index" // contains index of official nuclei templates
NucleiTemplatesCheckSumFileName = ".checksum"
NewTemplateAdditionsFileName = ".new-additions"
CLIConfigFileName = "config.yaml"
ReportingConfigFilename = "reporting-config.yaml"
// Version is the current version of nuclei
Version = `v3.4.2`
// Directory Names of custom templates
CustomS3TemplatesDirName = "s3"
CustomGitHubTemplatesDirName = "github"
CustomAzureTemplatesDirName = "azure"
CustomGitLabTemplatesDirName = "gitlab"
BinaryName = "nuclei"
FallbackConfigFolderName = ".nuclei-config"
NucleiConfigDirEnv = "NUCLEI_CONFIG_DIR"
)
// IsOutdatedVersion compares two versions and returns true
// if the current version is outdated
func IsOutdatedVersion(current, latest string) bool {
if latest == "" {
// if pdtm api call failed it's assumed that the current version is outdated
// and it will be confirmed while updating from GitHub
// this fixes `version string empty` errors
return true
}
current = trimDevIfExists(current)
currentVer, _ := semver.NewVersion(current)
newVer, _ := semver.NewVersion(latest)
if currentVer == nil || newVer == nil {
// fallback to naive comparison
return current == latest
}
return newVer.GreaterThan(currentVer)
}
// trimDevIfExists trims `-dev` suffix from version string if it exists
func trimDevIfExists(version string) string {
if strings.HasSuffix(version, "-dev") {
return strings.TrimSuffix(version, "-dev")
}
return version
}
// similar to go pattern of enabling debug related features
// we add custom/extra switches for debugging purposes
const (
// DebugArgHostErrorStats is used to print host error stats
// when it is closed
DebugArgHostErrorStats = "host-error-stats"
// DebugExportReqURLPattern is used to export request URL pattern
DebugExportURLPattern = "req-url-pattern"
)