2021-10-29 03:19:43 +05:30
|
|
|
package inputs
|
|
|
|
|
|
2023-07-22 00:49:52 +02:00
|
|
|
import (
|
|
|
|
|
"github.com/projectdiscovery/httpx/common/httpx"
|
|
|
|
|
"github.com/projectdiscovery/nuclei/v2/pkg/protocols/common/contextargs"
|
|
|
|
|
"github.com/projectdiscovery/nuclei/v2/pkg/utils"
|
|
|
|
|
)
|
2022-11-09 14:18:56 +01:00
|
|
|
|
2021-10-29 03:19:43 +05:30
|
|
|
type SimpleInputProvider struct {
|
2022-11-09 14:18:56 +01:00
|
|
|
Inputs []*contextargs.MetaInput
|
2021-10-29 03:19:43 +05:30
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Count returns the number of items for input provider
|
|
|
|
|
func (s *SimpleInputProvider) Count() int64 {
|
|
|
|
|
return int64(len(s.Inputs))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Scan calls a callback function till the input provider is exhausted
|
2022-11-09 14:18:56 +01:00
|
|
|
func (s *SimpleInputProvider) Scan(callback func(value *contextargs.MetaInput) bool) {
|
2021-10-29 03:19:43 +05:30
|
|
|
for _, v := range s.Inputs {
|
2022-10-20 17:23:00 +05:30
|
|
|
if !callback(v) {
|
|
|
|
|
return
|
|
|
|
|
}
|
2021-10-29 03:19:43 +05:30
|
|
|
}
|
|
|
|
|
}
|
2022-11-16 11:12:39 +05:30
|
|
|
|
|
|
|
|
// Set adds item to input provider
|
|
|
|
|
func (s *SimpleInputProvider) Set(value string) {
|
|
|
|
|
s.Inputs = append(s.Inputs, &contextargs.MetaInput{Input: value})
|
|
|
|
|
}
|
2023-07-22 00:49:52 +02:00
|
|
|
|
|
|
|
|
// SetWithProbe adds item to input provider with http probing
|
|
|
|
|
func (s *SimpleInputProvider) SetWithProbe(value string, httpxClient *httpx.HTTPX) {
|
|
|
|
|
valueToAppend := value
|
|
|
|
|
if result := utils.ProbeURL(value, httpxClient); result != "" {
|
|
|
|
|
valueToAppend = result
|
|
|
|
|
}
|
|
|
|
|
s.Inputs = append(s.Inputs, &contextargs.MetaInput{Input: valueToAppend})
|
|
|
|
|
}
|