Codebase list feroxbuster / 5a2b5ef
Update upstream source from tag 'upstream/2.7.3' Update to upstream version '2.7.3' with Debian dir b80ecb057aed6b1d9bd589922e0c16b394b6a4b2 Daniel Ruiz de Alegría 1 year, 4 months ago
20 changed file(s) with 316 addition(s) and 257 deletion(s). Raw diff Collapse all Expand all
455455 "avatar_url": "https://avatars.githubusercontent.com/u/111092?v=4",
456456 "profile": "http://udoprog.github.io/",
457457 "contributions": [
458 "code"
459 ]
460 },
461 {
462 "login": "kmanc",
463 "name": "kmanc",
464 "avatar_url": "https://avatars.githubusercontent.com/u/14863147?v=4",
465 "profile": "https://github.com/kmanc",
466 "contributions": [
467 "bug",
458468 "code"
459469 ]
460470 }
33
44 [[package]]
55 name = "aho-corasick"
6 version = "0.7.19"
7 source = "registry+https://github.com/rust-lang/crates.io-index"
8 checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e"
6 version = "0.7.20"
7 source = "registry+https://github.com/rust-lang/crates.io-index"
8 checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac"
99 dependencies = [
1010 "memchr",
1111 ]
1212
1313 [[package]]
1414 name = "anyhow"
15 version = "1.0.66"
16 source = "registry+https://github.com/rust-lang/crates.io-index"
17 checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6"
15 version = "1.0.68"
16 source = "registry+https://github.com/rust-lang/crates.io-index"
17 checksum = "2cb2f989d18dd141ab8ae82f64d1a8cdd37e0840f73a406896cf5e99502fab61"
1818
1919 [[package]]
2020 name = "ascii-canvas"
3737
3838 [[package]]
3939 name = "assert_cmd"
40 version = "2.0.6"
41 source = "registry+https://github.com/rust-lang/crates.io-index"
42 checksum = "ba45b8163c49ab5f972e59a8a5a03b6d2972619d486e19ec9fe744f7c2753d3c"
40 version = "2.0.7"
41 source = "registry+https://github.com/rust-lang/crates.io-index"
42 checksum = "fa3d466004a8b4cb1bc34044240a2fd29d17607e2e3bd613eb44fd48e8100da3"
4343 dependencies = [
4444 "bstr",
4545 "doc-comment",
5151
5252 [[package]]
5353 name = "async-channel"
54 version = "1.7.1"
55 source = "registry+https://github.com/rust-lang/crates.io-index"
56 checksum = "e14485364214912d3b19cc3435dde4df66065127f05fa0d75c712f36f12c2f28"
57 dependencies = [
58 "concurrent-queue 1.2.4",
54 version = "1.8.0"
55 source = "registry+https://github.com/rust-lang/crates.io-index"
56 checksum = "cf46fee83e5ccffc220104713af3292ff9bc7c64c7de289f66dae8e38d826833"
57 dependencies = [
58 "concurrent-queue",
5959 "event-listener",
6060 "futures-core",
6161 ]
6868 dependencies = [
6969 "async-lock",
7070 "async-task",
71 "concurrent-queue 2.0.0",
71 "concurrent-queue",
7272 "fastrand",
7373 "futures-lite",
7474 "slab",
9191
9292 [[package]]
9393 name = "async-io"
94 version = "1.10.0"
95 source = "registry+https://github.com/rust-lang/crates.io-index"
96 checksum = "e8121296a9f05be7f34aa4196b1747243b3b62e048bb7906f644f3fbfc490cf7"
94 version = "1.12.0"
95 source = "registry+https://github.com/rust-lang/crates.io-index"
96 checksum = "8c374dda1ed3e7d8f0d9ba58715f924862c63eae6849c92d3a18e7fbde9e2794"
9797 dependencies = [
9898 "async-lock",
9999 "autocfg",
100 "concurrent-queue 1.2.4",
100 "concurrent-queue",
101101 "futures-lite",
102102 "libc",
103103 "log",
106106 "slab",
107107 "socket2",
108108 "waker-fn",
109 "winapi",
109 "windows-sys 0.42.0",
110110 ]
111111
112112 [[package]]
130130
131131 [[package]]
132132 name = "async-process"
133 version = "1.5.0"
134 source = "registry+https://github.com/rust-lang/crates.io-index"
135 checksum = "02111fd8655a613c25069ea89fc8d9bb89331fa77486eb3bc059ee757cfa481c"
133 version = "1.6.0"
134 source = "registry+https://github.com/rust-lang/crates.io-index"
135 checksum = "6381ead98388605d0d9ff86371043b5aa922a3905824244de40dc263a14fcba4"
136136 dependencies = [
137137 "async-io",
138 "async-lock",
138139 "autocfg",
139140 "blocking",
140141 "cfg-if",
141142 "event-listener",
142143 "futures-lite",
143144 "libc",
144 "once_cell",
145145 "signal-hook",
146 "winapi",
146 "windows-sys 0.42.0",
147147 ]
148148
149149 [[package]]
181181
182182 [[package]]
183183 name = "async-trait"
184 version = "0.1.58"
185 source = "registry+https://github.com/rust-lang/crates.io-index"
186 checksum = "1e805d94e6b5001b651426cf4cd446b1ab5f319d27bab5c644f61de0a804360c"
184 version = "0.1.60"
185 source = "registry+https://github.com/rust-lang/crates.io-index"
186 checksum = "677d1d8ab452a3936018a687b20e6f7cf5363d713b732b8884001317b0e48aa3"
187187 dependencies = [
188188 "proc-macro2",
189189 "quote",
202202 source = "registry+https://github.com/rust-lang/crates.io-index"
203203 checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
204204 dependencies = [
205 "hermit-abi",
205 "hermit-abi 0.1.19",
206206 "libc",
207207 "winapi",
208208 ]
253253
254254 [[package]]
255255 name = "blocking"
256 version = "1.2.0"
257 source = "registry+https://github.com/rust-lang/crates.io-index"
258 checksum = "c6ccb65d468978a086b69884437ded69a90faab3bbe6e67f242173ea728acccc"
256 version = "1.3.0"
257 source = "registry+https://github.com/rust-lang/crates.io-index"
258 checksum = "3c67b173a56acffd6d2326fb7ab938ba0b00a71480e14902b2591c87bc5741e8"
259259 dependencies = [
260260 "async-channel",
261 "async-lock",
261262 "async-task",
262263 "atomic-waker",
263264 "fastrand",
264265 "futures-lite",
265 "once_cell",
266266 ]
267267
268268 [[package]]
269269 name = "bstr"
270 version = "1.0.1"
271 source = "registry+https://github.com/rust-lang/crates.io-index"
272 checksum = "fca0852af221f458706eb0725c03e4ed6c46af9ac98e6a689d5e634215d594dd"
270 version = "1.1.0"
271 source = "registry+https://github.com/rust-lang/crates.io-index"
272 checksum = "b45ea9b00a7b3f2988e9a65ad3917e62123c38dba709b666506207be96d1790b"
273273 dependencies = [
274274 "memchr",
275275 "once_cell",
291291
292292 [[package]]
293293 name = "bytes"
294 version = "1.2.1"
295 source = "registry+https://github.com/rust-lang/crates.io-index"
296 checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db"
297
298 [[package]]
299 name = "cache-padded"
300 version = "1.2.0"
301 source = "registry+https://github.com/rust-lang/crates.io-index"
302 checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c"
294 version = "1.3.0"
295 source = "registry+https://github.com/rust-lang/crates.io-index"
296 checksum = "dfb24e866b15a1af2a1b663f10c6b6b8f397a84aadb828f12e5b289ec23a3a3c"
303297
304298 [[package]]
305299 name = "castaway"
309303
310304 [[package]]
311305 name = "cc"
312 version = "1.0.76"
313 source = "registry+https://github.com/rust-lang/crates.io-index"
314 checksum = "76a284da2e6fe2092f2353e51713435363112dfd60030e22add80be333fb928f"
306 version = "1.0.78"
307 source = "registry+https://github.com/rust-lang/crates.io-index"
308 checksum = "a20104e2335ce8a659d6dd92a51a767a0c062599c73b343fd152cb401e828c3d"
315309
316310 [[package]]
317311 name = "cfg-if"
321315
322316 [[package]]
323317 name = "clap"
324 version = "4.0.26"
325 source = "registry+https://github.com/rust-lang/crates.io-index"
326 checksum = "2148adefda54e14492fb9bddcc600b4344c5d1a3123bd666dcb939c6f0e0e57e"
327 dependencies = [
328 "atty",
318 version = "4.0.32"
319 source = "registry+https://github.com/rust-lang/crates.io-index"
320 checksum = "a7db700bc935f9e43e88d00b0850dae18a63773cfbec6d8e070fccf7fef89a39"
321 dependencies = [
329322 "bitflags",
330323 "clap_lex",
324 "is-terminal",
331325 "once_cell",
332326 "strsim",
333327 "termcolor",
334 "terminal_size 0.2.2",
328 "terminal_size",
335329 ]
336330
337331 [[package]]
338332 name = "clap_complete"
339 version = "4.0.5"
340 source = "registry+https://github.com/rust-lang/crates.io-index"
341 checksum = "96b0fba905b035a30d25c1b585bf1171690712fbb0ad3ac47214963aa4acc36c"
333 version = "4.0.7"
334 source = "registry+https://github.com/rust-lang/crates.io-index"
335 checksum = "10861370d2ba66b0f5989f83ebf35db6421713fd92351790e7fdd6c36774c56b"
342336 dependencies = [
343337 "clap",
344338 ]
354348
355349 [[package]]
356350 name = "concurrent-queue"
357 version = "1.2.4"
358 source = "registry+https://github.com/rust-lang/crates.io-index"
359 checksum = "af4780a44ab5696ea9e28294517f1fffb421a83a25af521333c838635509db9c"
360 dependencies = [
361 "cache-padded",
362 ]
363
364 [[package]]
365 name = "concurrent-queue"
366351 version = "2.0.0"
367352 source = "registry+https://github.com/rust-lang/crates.io-index"
368353 checksum = "bd7bef69dc86e3c610e4e7aed41035e2a7ed12e72dd7530f61327a6579a4390b"
372357
373358 [[package]]
374359 name = "console"
375 version = "0.15.2"
376 source = "registry+https://github.com/rust-lang/crates.io-index"
377 checksum = "c050367d967ced717c04b65d8c619d863ef9292ce0c5760028655a2fb298718c"
360 version = "0.15.3"
361 source = "registry+https://github.com/rust-lang/crates.io-index"
362 checksum = "5556015fe3aad8b968e5d4124980fbe2f6aaee7aeec6b749de1faaa2ca5d0a4c"
378363 dependencies = [
379364 "encode_unicode",
380365 "lazy_static",
381366 "libc",
382 "terminal_size 0.1.17",
383367 "unicode-width",
384 "winapi",
368 "windows-sys 0.42.0",
385369 ]
386370
387371 [[package]]
408392
409393 [[package]]
410394 name = "crossbeam-utils"
411 version = "0.8.12"
412 source = "registry+https://github.com/rust-lang/crates.io-index"
413 checksum = "edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac"
395 version = "0.8.14"
396 source = "registry+https://github.com/rust-lang/crates.io-index"
397 checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f"
414398 dependencies = [
415399 "cfg-if",
416400 ]
485469
486470 [[package]]
487471 name = "ctrlc"
488 version = "3.2.3"
489 source = "registry+https://github.com/rust-lang/crates.io-index"
490 checksum = "1d91974fbbe88ec1df0c24a4f00f99583667a7e2e6272b2b92d294d81e462173"
472 version = "3.2.4"
473 source = "registry+https://github.com/rust-lang/crates.io-index"
474 checksum = "1631ca6e3c59112501a9d87fd86f21591ff77acd31331e8a73f8d80a65bbdd71"
491475 dependencies = [
492476 "nix",
493 "winapi",
477 "windows-sys 0.42.0",
494478 ]
495479
496480 [[package]]
649633
650634 [[package]]
651635 name = "env_logger"
652 version = "0.9.3"
653 source = "registry+https://github.com/rust-lang/crates.io-index"
654 checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7"
655 dependencies = [
656 "atty",
636 version = "0.10.0"
637 source = "registry+https://github.com/rust-lang/crates.io-index"
638 checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0"
639 dependencies = [
657640 "humantime",
641 "is-terminal",
658642 "log",
659643 "regex",
660644 "termcolor",
698682
699683 [[package]]
700684 name = "feroxbuster"
701 version = "2.7.1"
685 version = "2.7.3"
702686 dependencies = [
703687 "anyhow",
704688 "assert_cmd",
940924
941925 [[package]]
942926 name = "gloo-timers"
943 version = "0.2.4"
944 source = "registry+https://github.com/rust-lang/crates.io-index"
945 checksum = "5fb7d06c1c8cc2a29bee7ec961009a0b2caa0793ee4900c2ffb348734ba1c8f9"
927 version = "0.2.5"
928 source = "registry+https://github.com/rust-lang/crates.io-index"
929 checksum = "98c4a8d6391675c6b2ee1a6c8d06e8e2d03605c44cec1270675985a4c2a5500b"
946930 dependencies = [
947931 "futures-channel",
948932 "futures-core",
985969 ]
986970
987971 [[package]]
972 name = "hermit-abi"
973 version = "0.2.6"
974 source = "registry+https://github.com/rust-lang/crates.io-index"
975 checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
976 dependencies = [
977 "libc",
978 ]
979
980 [[package]]
988981 name = "html5ever"
989982 version = "0.26.0"
990983 source = "registry+https://github.com/rust-lang/crates.io-index"
1006999 dependencies = [
10071000 "bytes",
10081001 "fnv",
1009 "itoa 1.0.4",
1002 "itoa 1.0.5",
10101003 ]
10111004
10121005 [[package]]
10341027
10351028 [[package]]
10361029 name = "httpmock"
1037 version = "0.6.6"
1038 source = "registry+https://github.com/rust-lang/crates.io-index"
1039 checksum = "c159c4fc205e6c1a9b325cb7ec135d13b5f47188ce175dabb76ec847f331d9bd"
1030 version = "0.6.7"
1031 source = "registry+https://github.com/rust-lang/crates.io-index"
1032 checksum = "c6b56b6265f15908780cbee987912c1e98dbca675361f748291605a8a3a1df09"
10401033 dependencies = [
10411034 "assert-json-diff",
10421035 "async-object-pool",
10811074 "http-body",
10821075 "httparse",
10831076 "httpdate",
1084 "itoa 1.0.4",
1077 "itoa 1.0.5",
10851078 "pin-project-lite",
10861079 "socket2",
10871080 "tokio",
11151108
11161109 [[package]]
11171110 name = "indexmap"
1118 version = "1.9.1"
1119 source = "registry+https://github.com/rust-lang/crates.io-index"
1120 checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e"
1111 version = "1.9.2"
1112 source = "registry+https://github.com/rust-lang/crates.io-index"
1113 checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
11211114 dependencies = [
11221115 "autocfg",
11231116 "hashbrown",
11461139
11471140 [[package]]
11481141 name = "io-lifetimes"
1149 version = "0.7.5"
1150 source = "registry+https://github.com/rust-lang/crates.io-index"
1151 checksum = "59ce5ef949d49ee85593fc4d3f3f95ad61657076395cbbce23e2121fc5542074"
1142 version = "1.0.3"
1143 source = "registry+https://github.com/rust-lang/crates.io-index"
1144 checksum = "46112a93252b123d31a119a8d1a1ac19deac4fac6e0e8b0df58f0d4e5870e63c"
1145 dependencies = [
1146 "libc",
1147 "windows-sys 0.42.0",
1148 ]
11521149
11531150 [[package]]
11541151 name = "ipnet"
1155 version = "2.5.1"
1156 source = "registry+https://github.com/rust-lang/crates.io-index"
1157 checksum = "f88c5561171189e69df9d98bcf18fd5f9558300f7ea7b801eb8a0fd748bd8745"
1152 version = "2.7.0"
1153 source = "registry+https://github.com/rust-lang/crates.io-index"
1154 checksum = "11b0d96e660696543b251e58030cf9787df56da39dab19ad60eae7353040917e"
1155
1156 [[package]]
1157 name = "is-terminal"
1158 version = "0.4.2"
1159 source = "registry+https://github.com/rust-lang/crates.io-index"
1160 checksum = "28dfb6c8100ccc63462345b67d1bbc3679177c75ee4bf59bf29c8b1d110b8189"
1161 dependencies = [
1162 "hermit-abi 0.2.6",
1163 "io-lifetimes",
1164 "rustix",
1165 "windows-sys 0.42.0",
1166 ]
11581167
11591168 [[package]]
11601169 name = "isahc"
12001209
12011210 [[package]]
12021211 name = "itoa"
1203 version = "1.0.4"
1204 source = "registry+https://github.com/rust-lang/crates.io-index"
1205 checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc"
1212 version = "1.0.5"
1213 source = "registry+https://github.com/rust-lang/crates.io-index"
1214 checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440"
12061215
12071216 [[package]]
12081217 name = "js-sys"
12791288
12801289 [[package]]
12811290 name = "libc"
1282 version = "0.2.137"
1283 source = "registry+https://github.com/rust-lang/crates.io-index"
1284 checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89"
1291 version = "0.2.139"
1292 source = "registry+https://github.com/rust-lang/crates.io-index"
1293 checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79"
12851294
12861295 [[package]]
12871296 name = "libnghttp2-sys"
13071316
13081317 [[package]]
13091318 name = "linux-raw-sys"
1310 version = "0.0.46"
1311 source = "registry+https://github.com/rust-lang/crates.io-index"
1312 checksum = "d4d2456c373231a208ad294c33dc5bff30051eafd954cd4caae83a712b12854d"
1319 version = "0.1.4"
1320 source = "registry+https://github.com/rust-lang/crates.io-index"
1321 checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4"
13131322
13141323 [[package]]
13151324 name = "lock_api"
14071416
14081417 [[package]]
14091418 name = "nix"
1410 version = "0.25.0"
1411 source = "registry+https://github.com/rust-lang/crates.io-index"
1412 checksum = "e322c04a9e3440c327fca7b6c8a63e6890a32fa2ad689db972425f07e0d22abb"
1413 dependencies = [
1414 "autocfg",
1419 version = "0.26.1"
1420 source = "registry+https://github.com/rust-lang/crates.io-index"
1421 checksum = "46a58d1d356c6597d08cde02c2f09d785b09e28711837b1ed667dc652c08a694"
1422 dependencies = [
14151423 "bitflags",
14161424 "cfg-if",
14171425 "libc",
1426 "static_assertions",
14181427 ]
14191428
14201429 [[package]]
14401449
14411450 [[package]]
14421451 name = "num_cpus"
1443 version = "1.14.0"
1444 source = "registry+https://github.com/rust-lang/crates.io-index"
1445 checksum = "f6058e64324c71e02bc2b150e4f3bc8286db6c83092132ffa3f6b1eab0f9def5"
1446 dependencies = [
1447 "hermit-abi",
1452 version = "1.15.0"
1453 source = "registry+https://github.com/rust-lang/crates.io-index"
1454 checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
1455 dependencies = [
1456 "hermit-abi 0.2.6",
14481457 "libc",
14491458 ]
14501459
14621471
14631472 [[package]]
14641473 name = "openssl"
1465 version = "0.10.42"
1466 source = "registry+https://github.com/rust-lang/crates.io-index"
1467 checksum = "12fc0523e3bd51a692c8850d075d74dc062ccf251c0110668cbd921917118a13"
1474 version = "0.10.45"
1475 source = "registry+https://github.com/rust-lang/crates.io-index"
1476 checksum = "b102428fd03bc5edf97f62620f7298614c45cedf287c271e7ed450bbaf83f2e1"
14681477 dependencies = [
14691478 "bitflags",
14701479 "cfg-if",
15031512
15041513 [[package]]
15051514 name = "openssl-sys"
1506 version = "0.9.77"
1507 source = "registry+https://github.com/rust-lang/crates.io-index"
1508 checksum = "b03b84c3b2d099b81f0953422b4d4ad58761589d0229b5506356afca05a3670a"
1515 version = "0.9.80"
1516 source = "registry+https://github.com/rust-lang/crates.io-index"
1517 checksum = "23bbbf7854cd45b83958ebe919f0e8e516793727652e27fda10a8384cfc790b7"
15091518 dependencies = [
15101519 "autocfg",
15111520 "cc",
15171526
15181527 [[package]]
15191528 name = "os_str_bytes"
1520 version = "6.4.0"
1521 source = "registry+https://github.com/rust-lang/crates.io-index"
1522 checksum = "7b5bf27447411e9ee3ff51186bf7a08e16c341efdde93f4d823e8844429bed7e"
1529 version = "6.4.1"
1530 source = "registry+https://github.com/rust-lang/crates.io-index"
1531 checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee"
15231532
15241533 [[package]]
15251534 name = "parking"
15391548
15401549 [[package]]
15411550 name = "parking_lot_core"
1542 version = "0.9.4"
1543 source = "registry+https://github.com/rust-lang/crates.io-index"
1544 checksum = "4dc9e0dc2adc1c69d09143aff38d3d30c5c3f0df0dad82e6d25547af174ebec0"
1551 version = "0.9.5"
1552 source = "registry+https://github.com/rust-lang/crates.io-index"
1553 checksum = "7ff9f3fef3968a3ec5945535ed654cb38ff72d7495a25619e2247fb15a2ed9ba"
15451554 dependencies = [
15461555 "cfg-if",
15471556 "libc",
17041713
17051714 [[package]]
17061715 name = "polling"
1707 version = "2.4.0"
1708 source = "registry+https://github.com/rust-lang/crates.io-index"
1709 checksum = "ab4609a838d88b73d8238967b60dd115cc08d38e2bbaf51ee1e4b695f89122e2"
1716 version = "2.5.2"
1717 source = "registry+https://github.com/rust-lang/crates.io-index"
1718 checksum = "22122d5ec4f9fe1b3916419b76be1e80bcb93f618d071d2edf841b137b2a2bd6"
17101719 dependencies = [
17111720 "autocfg",
17121721 "cfg-if",
17131722 "libc",
17141723 "log",
17151724 "wepoll-ffi",
1716 "winapi",
1725 "windows-sys 0.42.0",
17171726 ]
17181727
17191728 [[package]]
17301739
17311740 [[package]]
17321741 name = "predicates"
1733 version = "2.1.3"
1734 source = "registry+https://github.com/rust-lang/crates.io-index"
1735 checksum = "ed6bd09a7f7e68f3f0bf710fb7ab9c4615a488b58b5f653382a687701e458c92"
1742 version = "2.1.4"
1743 source = "registry+https://github.com/rust-lang/crates.io-index"
1744 checksum = "f54fc5dc63ed3bbf19494623db4f3af16842c0d975818e469022d09e53f0aa05"
17361745 dependencies = [
17371746 "difflib",
17381747 "float-cmp",
17601769
17611770 [[package]]
17621771 name = "proc-macro-hack"
1763 version = "0.5.19"
1764 source = "registry+https://github.com/rust-lang/crates.io-index"
1765 checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5"
1772 version = "0.5.20+deprecated"
1773 source = "registry+https://github.com/rust-lang/crates.io-index"
1774 checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068"
17661775
17671776 [[package]]
17681777 name = "proc-macro2"
1769 version = "1.0.47"
1770 source = "registry+https://github.com/rust-lang/crates.io-index"
1771 checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725"
1778 version = "1.0.49"
1779 source = "registry+https://github.com/rust-lang/crates.io-index"
1780 checksum = "57a8eca9f9c4ffde41714334dee777596264c7825420f521abc92b5b5deb63a5"
17721781 dependencies = [
17731782 "unicode-ident",
17741783 ]
17751784
17761785 [[package]]
17771786 name = "quote"
1778 version = "1.0.21"
1779 source = "registry+https://github.com/rust-lang/crates.io-index"
1780 checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179"
1787 version = "1.0.23"
1788 source = "registry+https://github.com/rust-lang/crates.io-index"
1789 checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b"
17811790 dependencies = [
17821791 "proc-macro2",
17831792 ]
19551964
19561965 [[package]]
19571966 name = "rlimit"
1958 version = "0.8.3"
1959 source = "registry+https://github.com/rust-lang/crates.io-index"
1960 checksum = "f7278a1ec8bfd4a4e07515c589f5ff7b309a373f987393aef44813d9dcf87aa3"
1967 version = "0.9.0"
1968 source = "registry+https://github.com/rust-lang/crates.io-index"
1969 checksum = "ea5c77e0e5e2bfeb5fcf2c084eb20a9ed9d95cab167d88784956c29419342925"
19611970 dependencies = [
19621971 "libc",
19631972 ]
19731982
19741983 [[package]]
19751984 name = "rustix"
1976 version = "0.35.13"
1977 source = "registry+https://github.com/rust-lang/crates.io-index"
1978 checksum = "727a1a6d65f786ec22df8a81ca3121107f235970dc1705ed681d3e6e8b9cd5f9"
1985 version = "0.36.6"
1986 source = "registry+https://github.com/rust-lang/crates.io-index"
1987 checksum = "4feacf7db682c6c329c4ede12649cd36ecab0f3be5b7d74e6a20304725db4549"
19791988 dependencies = [
19801989 "bitflags",
19811990 "errno",
19871996
19881997 [[package]]
19891998 name = "rustversion"
1990 version = "1.0.9"
1991 source = "registry+https://github.com/rust-lang/crates.io-index"
1992 checksum = "97477e48b4cf8603ad5f7aaf897467cf42ab4218a38ef76fb14c2d6773a6d6a8"
1999 version = "1.0.11"
2000 source = "registry+https://github.com/rust-lang/crates.io-index"
2001 checksum = "5583e89e108996506031660fe09baa5011b9dd0341b89029313006d1fb508d70"
19932002
19942003 [[package]]
19952004 name = "ryu"
1996 version = "1.0.11"
1997 source = "registry+https://github.com/rust-lang/crates.io-index"
1998 checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09"
2005 version = "1.0.12"
2006 source = "registry+https://github.com/rust-lang/crates.io-index"
2007 checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde"
19992008
20002009 [[package]]
20012010 name = "schannel"
20152024
20162025 [[package]]
20172026 name = "scraper"
2018 version = "0.13.0"
2019 source = "registry+https://github.com/rust-lang/crates.io-index"
2020 checksum = "5684396b456f3eb69ceeb34d1b5cb1a2f6acf7ca4452131efa3ba0ee2c2d0a70"
2027 version = "0.14.0"
2028 source = "registry+https://github.com/rust-lang/crates.io-index"
2029 checksum = "fc7cb4dae083699a22a65aa9d2699c27f525e35dffaec38b10801e958ed4cf27"
20212030 dependencies = [
20222031 "cssparser",
20232032 "ego-tree",
20742083
20752084 [[package]]
20762085 name = "semver"
2077 version = "1.0.14"
2078 source = "registry+https://github.com/rust-lang/crates.io-index"
2079 checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4"
2086 version = "1.0.16"
2087 source = "registry+https://github.com/rust-lang/crates.io-index"
2088 checksum = "58bc9567378fc7690d6b2addae4e60ac2eeea07becb2c64b9f218b53865cba2a"
20802089
20812090 [[package]]
20822091 name = "serde"
2083 version = "1.0.147"
2084 source = "registry+https://github.com/rust-lang/crates.io-index"
2085 checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965"
2092 version = "1.0.152"
2093 source = "registry+https://github.com/rust-lang/crates.io-index"
2094 checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb"
20862095 dependencies = [
20872096 "serde_derive",
20882097 ]
20892098
20902099 [[package]]
20912100 name = "serde_derive"
2092 version = "1.0.147"
2093 source = "registry+https://github.com/rust-lang/crates.io-index"
2094 checksum = "4f1d362ca8fc9c3e3a7484440752472d68a6caa98f1ab81d99b5dfe517cec852"
2101 version = "1.0.152"
2102 source = "registry+https://github.com/rust-lang/crates.io-index"
2103 checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e"
20952104 dependencies = [
20962105 "proc-macro2",
20972106 "quote",
21002109
21012110 [[package]]
21022111 name = "serde_json"
2103 version = "1.0.87"
2104 source = "registry+https://github.com/rust-lang/crates.io-index"
2105 checksum = "6ce777b7b150d76b9cf60d28b55f5847135a003f7d7350c6be7a773508ce7d45"
2106 dependencies = [
2107 "itoa 1.0.4",
2112 version = "1.0.91"
2113 source = "registry+https://github.com/rust-lang/crates.io-index"
2114 checksum = "877c235533714907a8c2464236f5c4b2a17262ef1bd71f38f35ea592c8da6883"
2115 dependencies = [
2116 "itoa 1.0.5",
21082117 "ryu",
21092118 "serde",
21102119 ]
21262135 checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
21272136 dependencies = [
21282137 "form_urlencoded",
2129 "itoa 1.0.4",
2138 "itoa 1.0.5",
21302139 "ryu",
21312140 "serde",
21322141 ]
22242233 version = "1.2.0"
22252234 source = "registry+https://github.com/rust-lang/crates.io-index"
22262235 checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
2236
2237 [[package]]
2238 name = "static_assertions"
2239 version = "1.1.0"
2240 source = "registry+https://github.com/rust-lang/crates.io-index"
2241 checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
22272242
22282243 [[package]]
22292244 name = "string_cache"
22592274
22602275 [[package]]
22612276 name = "syn"
2262 version = "1.0.103"
2263 source = "registry+https://github.com/rust-lang/crates.io-index"
2264 checksum = "a864042229133ada95abf3b54fdc62ef5ccabe9515b64717bcb9a1919e59445d"
2277 version = "1.0.107"
2278 source = "registry+https://github.com/rust-lang/crates.io-index"
2279 checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5"
22652280 dependencies = [
22662281 "proc-macro2",
22672282 "quote",
23152330
23162331 [[package]]
23172332 name = "terminal_size"
2318 version = "0.1.17"
2319 source = "registry+https://github.com/rust-lang/crates.io-index"
2320 checksum = "633c1a546cee861a1a6d0dc69ebeca693bf4296661ba7852b9d21d159e0506df"
2321 dependencies = [
2322 "libc",
2323 "winapi",
2324 ]
2325
2326 [[package]]
2327 name = "terminal_size"
2328 version = "0.2.2"
2329 source = "registry+https://github.com/rust-lang/crates.io-index"
2330 checksum = "40ca90c434fd12083d1a6bdcbe9f92a14f96c8a1ba600ba451734ac334521f7a"
2333 version = "0.2.3"
2334 source = "registry+https://github.com/rust-lang/crates.io-index"
2335 checksum = "cb20089a8ba2b69debd491f8d2d023761cbf196e999218c591fa1e7e15a21907"
23312336 dependencies = [
23322337 "rustix",
23332338 "windows-sys 0.42.0",
23472352
23482353 [[package]]
23492354 name = "thiserror"
2350 version = "1.0.37"
2351 source = "registry+https://github.com/rust-lang/crates.io-index"
2352 checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e"
2355 version = "1.0.38"
2356 source = "registry+https://github.com/rust-lang/crates.io-index"
2357 checksum = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0"
23532358 dependencies = [
23542359 "thiserror-impl",
23552360 ]
23562361
23572362 [[package]]
23582363 name = "thiserror-impl"
2359 version = "1.0.37"
2360 source = "registry+https://github.com/rust-lang/crates.io-index"
2361 checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb"
2364 version = "1.0.38"
2365 source = "registry+https://github.com/rust-lang/crates.io-index"
2366 checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f"
23622367 dependencies = [
23632368 "proc-macro2",
23642369 "quote",
23912396
23922397 [[package]]
23932398 name = "tokio"
2394 version = "1.21.2"
2395 source = "registry+https://github.com/rust-lang/crates.io-index"
2396 checksum = "a9e03c497dc955702ba729190dc4aac6f2a0ce97f913e5b1b5912fc5039d9099"
2399 version = "1.23.0"
2400 source = "registry+https://github.com/rust-lang/crates.io-index"
2401 checksum = "eab6d665857cc6ca78d6e80303a02cea7a7851e85dfbd77cbdc09bd129f1ef46"
23972402 dependencies = [
23982403 "autocfg",
23992404 "bytes",
24062411 "signal-hook-registry",
24072412 "socket2",
24082413 "tokio-macros",
2409 "winapi",
2414 "windows-sys 0.42.0",
24102415 ]
24112416
24122417 [[package]]
24132418 name = "tokio-macros"
2414 version = "1.8.0"
2415 source = "registry+https://github.com/rust-lang/crates.io-index"
2416 checksum = "9724f9a975fb987ef7a3cd9be0350edcbe130698af5b8f7a631e23d42d052484"
2419 version = "1.8.2"
2420 source = "registry+https://github.com/rust-lang/crates.io-index"
2421 checksum = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8"
24172422 dependencies = [
24182423 "proc-macro2",
24192424 "quote",
24582463
24592464 [[package]]
24602465 name = "toml"
2461 version = "0.5.9"
2462 source = "registry+https://github.com/rust-lang/crates.io-index"
2463 checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7"
2466 version = "0.5.10"
2467 source = "registry+https://github.com/rust-lang/crates.io-index"
2468 checksum = "1333c76748e868a4d9d1017b5ab53171dfd095f70c712fdb4653a406547f598f"
24642469 dependencies = [
24652470 "serde",
24662471 ]
25282533
25292534 [[package]]
25302535 name = "unicode-ident"
2531 version = "1.0.5"
2532 source = "registry+https://github.com/rust-lang/crates.io-index"
2533 checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3"
2536 version = "1.0.6"
2537 source = "registry+https://github.com/rust-lang/crates.io-index"
2538 checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc"
25342539
25352540 [[package]]
25362541 name = "unicode-normalization"
00 [package]
11 name = "feroxbuster"
2 version = "2.7.2"
2 version = "2.7.3"
33 authors = ["Ben 'epi' Risher (@epi052)"]
44 license = "MIT"
55 edition = "2021"
2828 dirs = "4.0.0"
2929
3030 [dependencies]
31 scraper = "0.13.0"
31 scraper = "0.14.0"
3232 futures = "0.3.21"
3333 tokio = { version = "1.18.2", features = ["full"] }
3434 tokio-util = { version = "0.7.1", features = ["codec"] }
3535 log = "0.4.17"
36 env_logger = "0.9.0"
36 env_logger = "0.10.0"
3737 reqwest = { version = "0.11.10", features = ["socks"] }
3838 # uses feature unification to add 'serde' to reqwest::Url
3939 url = { version = "2.2.2", features = ["serde"] }
5050 dirs = "4.0.0"
5151 regex = "1.5.5"
5252 crossterm = "0.25.0"
53 rlimit = "0.8.3"
53 rlimit = "0.9.0"
5454 ctrlc = "3.2.2"
5555 fuzzyhash = "0.2.1"
5656 anyhow = "1.0.57"
221221 <td align="center"><a href="https://github.com/hunter0x8"><img src="https://avatars.githubusercontent.com/u/46222314?v=4?s=100" width="100px;" alt="Muhammad Ahsan"/><br /><sub><b>Muhammad Ahsan</b></sub></a><br /><a href="https://github.com/epi052/feroxbuster/issues?q=author%3Ahunter0x8" title="Bug reports">🐛</a></td>
222222 <td align="center"><a href="https://github.com/cortantief"><img src="https://avatars.githubusercontent.com/u/34527333?v=4?s=100" width="100px;" alt="cortantief"/><br /><sub><b>cortantief</b></sub></a><br /><a href="https://github.com/epi052/feroxbuster/issues?q=author%3Acortantief" title="Bug reports">🐛</a> <a href="https://github.com/epi052/feroxbuster/commits?author=cortantief" title="Code">💻</a></td>
223223 <td align="center"><a href="https://github.com/dsaxton"><img src="https://avatars.githubusercontent.com/u/2658661?v=4?s=100" width="100px;" alt="Daniel Saxton"/><br /><sub><b>Daniel Saxton</b></sub></a><br /><a href="#ideas-dsaxton" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/epi052/feroxbuster/commits?author=dsaxton" title="Code">💻</a></td>
224 <td align="center"><a href="https://github.com/narkopolo"><img src="https://avatars.githubusercontent.com/u/16690056?v=4?s=100" width="100px;" alt="narkopolo"/><br /><sub><b>narkopolo</b></sub></a><br /><a href="#ideas-narkopolo" title="Ideas, Planning, & Feedback">🤔</a></td>
224 <td align="center"><a href="https://github.com/n0kovo"><img src="https://avatars.githubusercontent.com/u/16690056?v=4?s=100" width="100px;" alt="narkopolo"/><br /><sub><b>n0kovo</b></sub></a><br /><a href="#ideas-n0kovo" title="Ideas, Planning, & Feedback">🤔</a></td>
225225 <td align="center"><a href="https://ring0.lol"><img src="https://avatars.githubusercontent.com/u/1893909?v=4?s=100" width="100px;" alt="Justin Steven"/><br /><sub><b>Justin Steven</b></sub></a><br /><a href="#ideas-justinsteven" title="Ideas, Planning, & Feedback">🤔</a></td>
226226 <td align="center"><a href="https://github.com/7047payloads"><img src="https://avatars.githubusercontent.com/u/95562424?v=4?s=100" width="100px;" alt="7047payloads"/><br /><sub><b>7047payloads</b></sub></a><br /><a href="https://github.com/epi052/feroxbuster/commits?author=7047payloads" title="Code">💻</a></td>
227227 <td align="center"><a href="https://github.com/unkn0wnsyst3m"><img src="https://avatars.githubusercontent.com/u/21272239?v=4?s=100" width="100px;" alt="unkn0wnsyst3m"/><br /><sub><b>unkn0wnsyst3m</b></sub></a><br /><a href="#ideas-unkn0wnsyst3m" title="Ideas, Planning, & Feedback">🤔</a></td>
244244 <td align="center"><a href="https://github.com/herrcykel"><img src="https://avatars.githubusercontent.com/u/1936757?v=4?s=100" width="100px;" alt="O"/><br /><sub><b>O</b></sub></a><br /><a href="https://github.com/epi052/feroxbuster/commits?author=herrcykel" title="Code">💻</a></td>
245245 <td align="center"><a href="http://udoprog.github.io/"><img src="https://avatars.githubusercontent.com/u/111092?v=4?s=100" width="100px;" alt="John-John Tedro"/><br /><sub><b>John-John Tedro</b></sub></a><br /><a href="https://github.com/epi052/feroxbuster/commits?author=udoprog" title="Code">💻</a></td>
246246 </tr>
247 <tr>
248 <td align="center"><a href="https://github.com/kmanc"><img src="https://avatars.githubusercontent.com/u/14863147?v=4?s=100" width="100px;" alt="kmanc"/><br /><sub><b>kmanc</b></sub></a><br /><a href="https://github.com/epi052/feroxbuster/issues?q=author%3Akmanc" title="Bug reports">🐛</a> <a href="https://github.com/epi052/feroxbuster/commits?author=kmanc" title="Code">💻</a></td>
249 </tr>
247250 </tbody>
248251 </table>
249252
2323 '--replay-proxy=[Send only unfiltered requests through a Replay Proxy, instead of all requests]:REPLAY_PROXY:_urls' \
2424 '*-R+[Status Codes to send through a Replay Proxy when found (default: --status-codes value)]:REPLAY_CODE: ' \
2525 '*--replay-codes=[Status Codes to send through a Replay Proxy when found (default: --status-codes value)]:REPLAY_CODE: ' \
26 '-a+[Sets the User-Agent (default: feroxbuster/2.7.1)]:USER_AGENT: ' \
27 '--user-agent=[Sets the User-Agent (default: feroxbuster/2.7.1)]:USER_AGENT: ' \
26 '-a+[Sets the User-Agent (default: feroxbuster/2.7.3)]:USER_AGENT: ' \
27 '--user-agent=[Sets the User-Agent (default: feroxbuster/2.7.3)]:USER_AGENT: ' \
2828 '*-x+[File extension(s) to search for (ex: -x php -x pdf js)]:FILE_EXTENSION: ' \
2929 '*--extensions=[File extension(s) to search for (ex: -x php -x pdf js)]:FILE_EXTENSION: ' \
3030 '*-m+[Which HTTP request method(s) should be sent (default: GET)]:HTTP_METHODS: ' \
2929 [CompletionResult]::new('--replay-proxy', 'replay-proxy', [CompletionResultType]::ParameterName, 'Send only unfiltered requests through a Replay Proxy, instead of all requests')
3030 [CompletionResult]::new('-R', 'R', [CompletionResultType]::ParameterName, 'Status Codes to send through a Replay Proxy when found (default: --status-codes value)')
3131 [CompletionResult]::new('--replay-codes', 'replay-codes', [CompletionResultType]::ParameterName, 'Status Codes to send through a Replay Proxy when found (default: --status-codes value)')
32 [CompletionResult]::new('-a', 'a', [CompletionResultType]::ParameterName, 'Sets the User-Agent (default: feroxbuster/2.7.1)')
33 [CompletionResult]::new('--user-agent', 'user-agent', [CompletionResultType]::ParameterName, 'Sets the User-Agent (default: feroxbuster/2.7.1)')
32 [CompletionResult]::new('-a', 'a', [CompletionResultType]::ParameterName, 'Sets the User-Agent (default: feroxbuster/2.7.3)')
33 [CompletionResult]::new('--user-agent', 'user-agent', [CompletionResultType]::ParameterName, 'Sets the User-Agent (default: feroxbuster/2.7.3)')
3434 [CompletionResult]::new('-x', 'x', [CompletionResultType]::ParameterName, 'File extension(s) to search for (ex: -x php -x pdf js)')
3535 [CompletionResult]::new('--extensions', 'extensions', [CompletionResultType]::ParameterName, 'File extension(s) to search for (ex: -x php -x pdf js)')
3636 [CompletionResult]::new('-m', 'm', [CompletionResultType]::ParameterName, 'Which HTTP request method(s) should be sent (default: GET)')
2626 cand --replay-proxy 'Send only unfiltered requests through a Replay Proxy, instead of all requests'
2727 cand -R 'Status Codes to send through a Replay Proxy when found (default: --status-codes value)'
2828 cand --replay-codes 'Status Codes to send through a Replay Proxy when found (default: --status-codes value)'
29 cand -a 'Sets the User-Agent (default: feroxbuster/2.7.1)'
30 cand --user-agent 'Sets the User-Agent (default: feroxbuster/2.7.1)'
29 cand -a 'Sets the User-Agent (default: feroxbuster/2.7.3)'
30 cand --user-agent 'Sets the User-Agent (default: feroxbuster/2.7.3)'
3131 cand -x 'File extension(s) to search for (ex: -x php -x pdf js)'
3232 cand --extensions 'File extension(s) to search for (ex: -x php -x pdf js)'
3333 cand -m 'Which HTTP request method(s) should be sent (default: GET)'
789789 if args.get_count("verbosity") > 0 {
790790 // occurrences_of returns 0 if none are found; this is protected in
791791 // an if block for the same reason as the quiet option
792 config.verbosity = args.get_count("verbosity") as u8;
792 config.verbosity = args.get_count("verbosity");
793793 }
794794
795795 if came_from_cli!(args, "no_recursion") {
100100 handles.filters.data.clone(),
101101 );
102102
103 let state_file = open_file(&filename);
103 // User didn't set the --no-state flag (so saved_state is still the default true)
104 if handles.config.save_state {
105 let state_file = open_file(&filename);
104106
105 let mut buffered_file = state_file?;
106 write_to(&state, &mut buffered_file, true)?;
107 let mut buffered_file = state_file?;
108 write_to(&state, &mut buffered_file, true)?;
109 }
107110
108111 log::trace!("exit: sigint_handler (end of program)");
109112 std::process::exit(1);
2121 fn should_filter_response(&self, response: &FeroxResponse) -> bool {
2222 let other = FuzzyHash::new(response.text());
2323
24 if let Ok(result) = FuzzyHash::compare(&self.hash, &other.to_string()) {
24 if let Ok(result) = FuzzyHash::compare(&self.hash, other.to_string()) {
2525 return result >= self.threshold;
2626 }
2727
6464 kind: "log".to_string(),
6565 };
6666
67 PROGRESS_PRINTER.println(&log_entry.as_str());
67 PROGRESS_PRINTER.println(log_entry.as_str());
6868
6969 if let Some(buffered_file) = file.clone() {
7070 if let Ok(mut unlocked) = buffered_file.write() {
4343 static ref PARALLEL_LIMITER: Semaphore = Semaphore::new(0);
4444 }
4545
46 /// Create a HashSet of Strings from the given wordlist then stores it inside an Arc
46 /// Create a Vec of Strings from the given wordlist then stores it inside an Arc
4747 fn get_unique_words_from_wordlist(path: &str) -> Result<Arc<Vec<String>>> {
4848 log::trace!("enter: get_unique_words_from_wordlist({})", path);
49 let mut trimmed_word = false;
4950
5051 let file = File::open(path).with_context(|| format!("Could not open {}", path))?;
5152
6061 for line in reader.lines() {
6162 line.map(|result| {
6263 if !result.starts_with('#') && !result.is_empty() {
63 words.push(result);
64 if result.starts_with('/') {
65 words.push(result.trim_start_matches('/').to_string());
66 trimmed_word = true;
67 } else {
68 words.push(result);
69 }
6470 }
6571 })
6672 .ok();
73 }
74
75 if trimmed_word {
76 log::warn!("Some words in the wordlist started with a leading forward-slash; those words were trimmed (i.e. /word -> word)");
6777 }
6878
6979 log::trace!(
327337
328338 let new_folder = slugify_filename(&base_name.to_string_lossy(), "", "logs");
329339
330 let final_path = output_path.with_file_name(&new_folder);
340 let final_path = output_path.with_file_name(new_folder);
331341
332342 // create the directory or fail silently, assuming the reason for failure is that
333343 // the path exists already
414414 .get("Location")
415415 .unwrap() // known Some() already
416416 .to_str()
417 .unwrap_or("Unknown");
417 .unwrap_or("Unknown")
418 .to_string();
419
420 let loc = if loc.starts_with('/') {
421 if let Ok(joined) = self.url().join(&loc) {
422 joined.to_string()
423 } else {
424 loc
425 }
426 } else {
427 loc
428 };
418429
419430 // prettify the redirect target
420431 let loc = style(loc).yellow();
232232 false
233233 }
234234
235 /// small wrapper to inspect ScanStatus and see if it's Cancelled
236 pub fn is_cancelled(&self) -> bool {
237 if let Ok(guard) = self.status.lock() {
238 return matches!(*guard, ScanStatus::Cancelled);
239 }
240 false
241 }
242
235243 /// await a task's completion, similar to a thread's join; perform necessary bookkeeping
236244 pub async fn join(&self) {
237245 log::trace!("enter join({:?})", self);
137137 let mut deser_scan: FeroxScan =
138138 serde_json::from_value(scan.clone()).unwrap_or_default();
139139
140 if deser_scan.is_cancelled() {
141 // if the scan was cancelled by the user, mark it as complete. This will
142 // prevent the scan from being resumed as well as prevent the wordlist
143 // from requesting it again
144 if let Ok(mut guard) = deser_scan.status.lock() {
145 *guard = ScanStatus::Complete;
146 }
147 }
148
140149 // FeroxScans gets -q value from config as usual; the FeroxScans themselves
141150 // rely on that value being passed in. If the user starts a scan without -q
142151 // and resumes the scan but adds -q, FeroxScan will not have the proper value
327327 log::info!(
328328 "requesting {} collected words: {:?}...",
329329 new_words_len,
330 &new_words[..new_words_len.min(3) as usize]
330 &new_words[..new_words_len.min(3)]
331331 );
332332
333333 self.stream_requests(
4444 let mock = srv.mock(|when, then| {
4545 when.method(GET).path("/LICENSE");
4646 then.status(200)
47 .body(&srv.url("'/homepage/assets/img/icons/handshake.svg'"));
47 .body(srv.url("'/homepage/assets/img/icons/handshake.svg'"));
4848 });
4949
5050 let mock_two = srv.mock(|when, then| {
8989
9090 let js_mock = srv.mock(|when, then| {
9191 when.method(GET).path("/js");
92 then.status(301).header("Location", &srv.url("/js/"));
92 then.status(301).header("Location", srv.url("/js/"));
9393 });
9494
9595 let js_prod_mock = srv.mock(|when, then| {
9696 when.method(GET).path("/js/prod");
97 then.status(301).header("Location", &srv.url("/js/prod/"));
97 then.status(301).header("Location", srv.url("/js/prod/"));
9898 });
9999
100100 let js_dev_mock = srv.mock(|when, then| {
101101 when.method(GET).path("/js/dev");
102 then.status(301).header("Location", &srv.url("/js/dev/"));
102 then.status(301).header("Location", srv.url("/js/dev/"));
103103 });
104104
105105 let js_dev_file_mock = srv.mock(|when, then| {
154154
155155 let js_mock = srv.mock(|when, then| {
156156 when.method(GET).path("/js");
157 then.status(301).header("Location", &srv.url("/js/"));
157 then.status(301).header("Location", srv.url("/js/"));
158158 });
159159
160160 let api_mock = srv.mock(|when, then| {
164164
165165 let js_prod_mock = srv.mock(|when, then| {
166166 when.method(GET).path("/js/prod");
167 then.status(301).header("Location", &srv.url("/js/prod/"));
167 then.status(301).header("Location", srv.url("/js/prod/"));
168168 });
169169
170170 let js_dev_mock = srv.mock(|when, then| {
171171 when.method(GET).path("/js/dev");
172 then.status(301).header("Location", &srv.url("/js/dev/"));
172 then.status(301).header("Location", srv.url("/js/dev/"));
173173 });
174174
175175 let js_dev_file_mock = srv.mock(|when, then| {
1515 let mock = srv.mock(|when, then| {
1616 when.method(GET).path("/LICENSE");
1717 then.status(200)
18 .body(&srv.url("'/homepage/assets/img/icons/handshake.svg'"));
18 .body(srv.url("'/homepage/assets/img/icons/handshake.svg'"));
1919 });
2020
2121 let mock_two = srv.mock(|when, then| {
135135 let mock = srv.mock(|when, then| {
136136 when.method(GET).path("/LICENSE");
137137 then.status(200)
138 .body(&srv.url("\"/homepage/assets/img/icons/handshake.svg\""));
138 .body(srv.url("\"/homepage/assets/img/icons/handshake.svg\""));
139139 });
140140
141141 let mock_two = srv.mock(|when, then| {
142142 when.method(GET).path("/README");
143143 then.status(200)
144 .body(&srv.url("\"/homepage/assets/img/icons/handshake.svg\""));
144 .body(srv.url("\"/homepage/assets/img/icons/handshake.svg\""));
145145 });
146146
147147 let mock_three = srv.mock(|when, then| {
184184 let mock = srv.mock(|when, then| {
185185 when.method(GET).path("/LICENSE");
186186 then.status(200)
187 .body(&srv.url("\"/homepage/assets/img/icons/handshake.svg\""));
187 .body(srv.url("\"/homepage/assets/img/icons/handshake.svg\""));
188188 });
189189
190190 let mock_two = srv.mock(|when, then| {
412412
413413 let mock_dir_redir = srv.mock(|when, then| {
414414 when.method(GET).path("/misc");
415 then.status(301).header("Location", &srv.url("/misc/"));
415 then.status(301).header("Location", srv.url("/misc/"));
416416 });
417417 let mock_dir = srv.mock(|when, then| {
418418 when.method(GET).path("/misc/");
521521
522522 let mock_dir_redir = srv.mock(|when, then| {
523523 when.method(GET).path("/misc");
524 then.status(301).header("Location", &srv.url("/misc/"));
524 then.status(301).header("Location", srv.url("/misc/"));
525525 });
526526 let mock_dir = srv.mock(|when, then| {
527527 when.method(GET).path("/misc/");
599599 let mock = srv.mock(|when, then| {
600600 when.method(GET).path("/LICENSE");
601601 then.status(200)
602 .body(&srv.url("'/homepage/assets/img/icons/handshake.svg'"));
602 .body(srv.url("'/homepage/assets/img/icons/handshake.svg'"));
603603 });
604604
605605 let mock_two = srv.mock(|when, then| {
195195 let file_regex = Regex::new("ferox-[a-zA-Z_:0-9]+-[0-9]+.log").unwrap();
196196 let dir_regex = Regex::new("output-file-[0-9]+.logs").unwrap();
197197
198 let sub_dir = output_dir.as_ref().join(&sub_dir);
198 let sub_dir = output_dir.as_ref().join(sub_dir);
199199
200200 // created directory like output-file-1627845741.logs/
201201 assert!(dir_regex.is_match(&sub_dir.to_string_lossy()));
5252
5353 let js_mock = srv.mock(|when, then| {
5454 when.method(GET).path("/js");
55 then.status(301).header("Location", &srv.url("/js/"));
55 then.status(301).header("Location", srv.url("/js/"));
5656 });
5757
5858 let js_prod_mock = srv.mock(|when, then| {
5959 when.method(GET).path("/js/prod");
60 then.status(301).header("Location", &srv.url("/js/prod/"));
60 then.status(301).header("Location", srv.url("/js/prod/"));
6161 });
6262
6363 let js_dev_mock = srv.mock(|when, then| {
6464 when.method(GET).path("/js/dev");
65 then.status(301).header("Location", &srv.url("/js/dev/"));
65 then.status(301).header("Location", srv.url("/js/dev/"));
6666 });
6767
6868 let js_dev_file_mock = srv.mock(|when, then| {
115115
116116 let js_mock = srv.mock(|when, then| {
117117 when.method(GET).path("/js/");
118 then.status(200).header("Location", &srv.url("/js/"));
118 then.status(200).header("Location", srv.url("/js/"));
119119 });
120120
121121 let js_prod_mock = srv.mock(|when, then| {
122122 when.method(GET).path("/js/prod/");
123 then.status(200).header("Location", &srv.url("/js/prod/"));
123 then.status(200).header("Location", srv.url("/js/prod/"));
124124 });
125125
126126 let js_dev_mock = srv.mock(|when, then| {
127127 when.method(GET).path("/js/dev/");
128 then.status(200).header("Location", &srv.url("/js/dev/"));
128 then.status(200).header("Location", srv.url("/js/dev/"));
129129 });
130130
131131 let js_dev_file_mock = srv.mock(|when, then| {
863863 when.method(GET).path("/LICENSE");
864864 then.status(301)
865865 .body("this is a test")
866 .header("Location", &srv.url("/LICENSE"));
866 .header("Location", srv.url("/LICENSE"));
867867 });
868868
869869 let mock2 = srv.mock(|when, then| {