(r *Runner)
| 1117 | } |
| 1118 | |
| 1119 | func (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 |
no test coverage detected