MCPcopy Create free account
hub / github.com/chainreactors/spray / BuildTasks

Method BuildTasks

core/option.go:1119–1264  ·  view source on GitHub ↗
(r *Runner)

Source from the content-addressed store, hash-verified

1117}
1118
1119func (opt *Option) BuildTasks(r *Runner) (*TaskGenerator, error) {
1120 // prepare task`
1121 var err error
1122 gen := NewTaskGenerator(opt.PortRange)
1123 if opt.ResumeFrom != "" {
1124 stats, err := pkg.ReadStatistors(opt.ResumeFrom)
1125 if err != nil {
1126 logs.Log.Error(err.Error())
1127 }
1128 r.Count = len(stats)
1129 gen.Name = "resume " + opt.ResumeFrom
1130 go func() {
1131 for _, stat := range stats {
1132 gen.In <- &Task{baseUrl: stat.BaseUrl, origin: NewOrigin(stat)}
1133 }
1134 close(gen.In)
1135 }()
1136 } else {
1137 var file *os.File
1138
1139 // 根据不同的输入类型生成任务
1140 if len(opt.URL) == 1 {
1141 gen.Name = opt.URL[0]
1142 go func() {
1143 gen.Run(opt.URL[0])
1144 close(gen.In)
1145 }()
1146 r.Count = 1
1147 } else if len(opt.URL) > 1 {
1148 go func() {
1149 for _, u := range opt.URL {
1150 gen.Run(u)
1151 }
1152 close(gen.In)
1153 }()
1154 gen.Name = "cmd"
1155 r.Count = len(opt.URL)
1156 } else if opt.RawFile != "" {
1157 raw, err := os.Open(opt.RawFile)
1158 if err != nil {
1159 return nil, err
1160 }
1161 defer raw.Close()
1162
1163 req, err := http.ReadRequest(bufio.NewReader(raw))
1164 if err != nil {
1165 return nil, err
1166 }
1167
1168 // Read request body if present
1169 if req.Body != nil {
1170 r.Body, err = ioutil.ReadAll(req.Body)
1171 if err != nil {
1172 return nil, err
1173 }
1174 req.Body.Close()
1175 }
1176

Callers 1

NewRunnerMethod · 0.95

Calls 7

RunMethod · 0.95
ReadStatistorsFunction · 0.92
NewTaskGeneratorFunction · 0.85
NewOriginFunction · 0.85
ErrorMethod · 0.80
CloseMethod · 0.45
StringMethod · 0.45

Tested by

no test coverage detected