2022-11-29 23:53:05 +05:30
|
|
|
package updatecheck
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"io"
|
|
|
|
|
|
|
|
|
|
jsoniter "github.com/json-iterator/go"
|
2023-03-01 16:50:21 +01:00
|
|
|
"github.com/projectdiscovery/retryablehttp-go"
|
2022-11-29 23:53:05 +05:30
|
|
|
)
|
|
|
|
|
|
|
|
|
|
const (
|
|
|
|
|
RegisterServer = "https://version-check.nuclei.sh/"
|
|
|
|
|
VersionsCall = "versions"
|
|
|
|
|
IgnoreCall = "ignore"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// LatestVersion is the latest version info for nuclei and templates repos
|
|
|
|
|
type LatestVersion struct {
|
|
|
|
|
Nuclei string
|
|
|
|
|
Templates string
|
|
|
|
|
IgnoreHash string
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// GetLatestNucleiTemplatesVersion returns the latest version info for nuclei and templates repos
|
|
|
|
|
func GetLatestNucleiTemplatesVersion() (*LatestVersion, error) {
|
2023-03-01 16:50:21 +01:00
|
|
|
resp, err := retryablehttp.DefaultClient().Get(RegisterServer + VersionsCall)
|
2022-11-29 23:53:05 +05:30
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
data := make(map[string]string)
|
2023-03-01 16:50:21 +01:00
|
|
|
if err := jsoniter.NewDecoder(resp.Body).Decode(&data); err != nil {
|
2022-11-29 23:53:05 +05:30
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
return &LatestVersion{Nuclei: data["nuclei"], Templates: data["templates"], IgnoreHash: data["ignore-hash"]}, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// GetLatestIgnoreFile returns the latest version of nuclei ignore
|
|
|
|
|
func GetLatestIgnoreFile() ([]byte, error) {
|
2023-03-02 09:01:24 +01:00
|
|
|
resp, err := retryablehttp.DefaultClient().Get(RegisterServer + IgnoreCall)
|
2022-11-29 23:53:05 +05:30
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
|
2023-03-01 16:50:21 +01:00
|
|
|
data, err := io.ReadAll(resp.Body)
|
2022-11-29 23:53:05 +05:30
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
return data, nil
|
|
|
|
|
}
|