mirror of
https://github.com/projectdiscovery/nuclei.git
synced 2026-11-09 04:09:43 -10:00
* refactor: adopt XDG storage and layered configs Load XDG system configuration (and /etc/nuclei/config.yaml) before the active user configuration, selected config, profile, and command line. Preserve explicit command-line values, replace collections between layers, and defer stateful option handling until the final values are known. Keep callback flags and authentication setup limited to the CLI. Move configuration loading, profile resolution, inline targets, and inline secrets into internal/configuration. Keep NUCLEI_CONFIG_DIR as a compatibility override for the user configuration directory. Use platform directories for configuration, template data, persistent state, and cache data. Discover default template roots through XDG_DATA_HOME and XDG_DATA_DIRS without assigning ownership semantics to the selected path. Store template state in XDG_STATE_HOME and migrate the legacy .templates-config.json file when needed. Persist the active template path, keep custom provider templates below that root, and apply the same installation, update, health-check, and reset behavior to every root. Keep .nuclei-ignore with the active template root. Derive its local hash from the file and pass the remote hash through the update check without persisting either value. Move generated resume and crash-recovery files into persistent state and use XDG_CACHE_HOME for the catalog index. Write template state and cache snapshots atomically with private permissions. Validate every reset target before deleting any path. Reject broad or unsafe targets, preserve explicit resume paths, and remove generated inline-secret directories on normal, interrupted, and fatal exits. Isolate configuration, state, cache, and template paths in functional and integration tests, and add coverage for layered precedence, state migration, active-root lifecycle, reset safety, and private file modes. Closes #6755 Signed-off-by: Dwi Siswanto <[email protected]> * chore(cmd): use memProfile+ext instead Signed-off-by: Dwi Siswanto <[email protected]> * fix(lib): gate SDK version check Signed-off-by: Dwi Siswanto <[email protected]> --------- Signed-off-by: Dwi Siswanto <[email protected]>