Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
projectdiscovery
GitHub Repository: projectdiscovery/nuclei
Path: blob/dev/pkg/protocols/network/networkclientpool/clientpool.go
2072 views
1
package networkclientpool
2
3
import (
4
"fmt"
5
6
"github.com/projectdiscovery/fastdialer/fastdialer"
7
"github.com/projectdiscovery/nuclei/v3/pkg/protocols/common/protocolstate"
8
"github.com/projectdiscovery/nuclei/v3/pkg/types"
9
)
10
11
// Init initializes the clientpool implementation
12
func Init(options *types.Options) error {
13
return nil
14
}
15
16
// Configuration contains the custom configuration options for a client
17
type Configuration struct {
18
CustomDialer *fastdialer.Dialer
19
}
20
21
// Hash returns the hash of the configuration to allow client pooling
22
func (c *Configuration) Hash() string {
23
return ""
24
}
25
26
// Get creates or gets a client for the protocol based on custom configuration
27
func Get(options *types.Options, configuration *Configuration /*TODO review unused parameters*/) (*fastdialer.Dialer, error) {
28
if configuration != nil && configuration.CustomDialer != nil {
29
return configuration.CustomDialer, nil
30
}
31
dialers := protocolstate.GetDialersWithId(options.ExecutionId)
32
if dialers == nil {
33
return nil, fmt.Errorf("dialers not initialized for %s", options.ExecutionId)
34
}
35
return dialers.Fastdialer, nil
36
}
37
38