File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 3535- ` index.lua ` - Исполняется. Отдает html разметку с именем файла и ссылкой на второй файл ` dump-headers.lua `
3636- ` dump-headers.lua ` - Исполняется. Отдает разметку таблицы заголовков запроса ` http `
3737- ` getfile.lua ` - С аргументом ` name ` позволяет загрузить файл.
38+ - ` payload.lua ` - Файл генерирует полезную нагрузку в 1ГБ для демонстрации паралельной обработки запросов.
39+ - ` test.html ` - Содержит набор символов для симуляции полезной нагрузки.
40+ - ` test_client.lua ` - Создает определенное колличество одновременных соединений с сервером и выводит результаты быстродействия.
3841
39- * обязательные файлы
42+ * обязательные файлы
Original file line number Diff line number Diff line change 1- local base = [[ <!DOCTYPE html>
1+ local base_head = [[ <!DOCTYPE html>
22<html lang='ru'><!-- Noncompliant -->
33 <head>
44 <title>File not found</title>
55 <meta content="text/html; charset=utf-8" />
66 </head>
7- <body>
8- %s
9- </body>
10- </html>]]
7+ <body>]]
118
129local file = io.open (request .args .name , " rb" )
1310if file then
11+ local data_lenghth = file :seek (" end" )
1412 response .headers [" Content-Type" ] = " application/octet-stream"
1513 response .headers [" Content-Disposition" ] = " attachment; filename=" .. request .args .name
16- io .html :write (file :read (" *a" ))
14+ response .headers [" Content-Length" ] = tostring (data_lenghth )
15+ send_response (response )
16+
17+ file :seek (" set" )
18+ for l in file :lines (1024 ) do
19+ coroutine.yield (l )
20+ end
1721else
18- io .html :write (base :format (" <p>File " .. request .args .name .. " not found</p>" ))
22+ send_response (response )
23+ coroutine.yield (base_head )
24+ coroutine.yield (" <p>File " .. request .args .name .. " not found</p>" )
25+ coroutine.yield (" </body>\n </html>" )
1926end
Original file line number Diff line number Diff line change 1+ response .headers [" Content-Type" ] = " application/octet-stream"
2+ response .headers [" Content-Disposition" ] = " attachment; filename=payload.bin"
3+ response .headers [" Content-Length" ] = tostring ((1024 * 1024 * 1024 ))
4+ send_response (response )
5+
6+ local str = " UZPPZQKDLBODEHECQVYLWNSDLSCIIIGJVYZRMONZFTVDUGJVDOFVQUQRMZFYWQHDNC\
7+ GALMGERPTEWTQIGCKCPSSAQCHGJQJGZSMTSUKFZCOKJAQUQUUHSCQLMNLRMSUFLVMBGHUCSUMENBTHT\
8+ UIEBKLKHDLBKBAYWDRTAJJEDMJDWMDKXHGDYEOHIPTHYQYMRLIUGFAZUKBKDHPKYLDWIGHJEQJVZJQB\
9+ LVBPIDQVMSUIXORGDTLABKSOBQWMGFRQDTTBJAQXXVZXTHHNBWYSIGUKNWPLCZVUDOVLBQMAJSRXWWB\
10+ YFJYDGZACDPOKVYDBZCQMKVZPTDZIIHDNUUMZARVWGGYQUJKHEBSNXZDTSGGOAYCDCIZGOJYZWEDZVT\
11+ PNUKFANUSDTCTKQCVYKWLVAASNTIVVXNPWDKJHIINACJCSYJOYVNRBMDMHONDHNSAAMFZNXMGXVTZKO\
12+ XIDZONGSKGJLPLQBFUIRLEANFMOOMLGWMWRAPMYFREDHNNUBVRKWJDZXXOHPVLRQBJHBYJAUBPNRZHW\
13+ JLRMNYIEEZKTOBFBQIOXIYSXTFQCBJVBYSYXEFPSUICDTMWLMTHVEUFVOSZFBBSDZBMNCCNTIZTYGTL\
14+ XTBEFGMPXLVSDCRIFFIXXSLWXPTWJIPKVLEOBZETBDFZBUSUKPFNPHCGFHHVXETSDUESLIDPVDZAWCU\
15+ MOYPKSCJHFIYMTRURIMDBSLPJLSDEEEISOXUDXUZXNWOGLFWSXOMCQNOBWGWHOMMNYVWLHXYZIMLBYZ\
16+ MUTDMVSWPFUSLXRBJHPXVSDPWKIGNWTDXLBYYYOQEABLIHQZZITQOTLDGDXFFQZOZFSPQOWSAWKPXPE\
17+ EOKRNGSTGQRYFRMILZJJTLGEOSEWWGYDPBFYUFETWWHUYXTAPWVYWNWFGNDQBUFMLRMTXGQCRRRVPJZ\
18+ TNNJVWZYTXCDMWMOKWZEYNXRPDBSZCVTJFKAMZNGKMYPKVVHTPKIRZAUMOIMFZYYHQHWGXGXUUUEIPU\
19+ NQJZTWPWEH"
20+
21+ for i = 1 , (1024 * 1024 ) do
22+ coroutine.yield (str )
23+ end
You can’t perform that action at this time.
0 commit comments