+ add cgi checks for error in script output + fix script_path relative to absolute + cgi makefile more efficient
505 lines
17 KiB
HTML
505 lines
17 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<title></title>
|
|
<style>
|
|
body {
|
|
display: flex;
|
|
flex-direction: column;
|
|
margin: auto;
|
|
}
|
|
div {
|
|
display: flex;
|
|
flex-direction: row;
|
|
flex-wrap: wrap;
|
|
margin: auto;
|
|
}
|
|
form {
|
|
display: flex;
|
|
flex-direction: column;
|
|
margin: 20px;
|
|
padding: 5px;
|
|
}
|
|
form > * {
|
|
display: flex;
|
|
margin: 5px auto 5px 5px;
|
|
}
|
|
mark {
|
|
margin: 0px 3px;
|
|
}
|
|
#get form {
|
|
border: 1px solid red;
|
|
}
|
|
#post form {
|
|
border: 1px solid green;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
|
|
<!--
|
|
. cgi_cpp.cpp
|
|
cgi_cpp_bad_headers.cpp
|
|
cgi_cpp_empty.cpp
|
|
. cgi_cpp_empty_lines.cpp
|
|
. cgi_cpp_len.cpp
|
|
. cgi_cpp_len_big.cpp
|
|
. cgi_cpp_len_small.cpp
|
|
. cgi_cpp_no_body.cpp
|
|
cgi_cpp_no_headers.cpp
|
|
cgi_cpp_only_crlf.cpp
|
|
. cgi_cpp_sleep.cpp
|
|
. cgi_cpp_status.cpp
|
|
-->
|
|
|
|
<div id="get">
|
|
<form method="get" action="/cgi-bin/cgi_cpp.out">
|
|
<p><mark>get</mark> form</p>
|
|
<p>to <mark>/cgi-bin/cgi_cpp.out</mark></p>
|
|
<label for="fname">First name:</label><br>
|
|
<input type="text" id="fname" name="fname" value="John"><br>
|
|
<label for="lname">Last name:</label><br>
|
|
<input type="text" id="lname" name="lname" value="Doe"><br><br>
|
|
<input type="submit" value="submit">
|
|
<h3>expectation:</h3>
|
|
<p>normal output</p>
|
|
</form>
|
|
<br>
|
|
|
|
<form method="get" action="/cgi-bin/cgi_cpp_len.out">
|
|
<p><mark>get</mark> form</p>
|
|
<p>to <mark>/cgi-bin/cgi_cpp_len.out</mark></p>
|
|
<label for="fname">First name:</label><br>
|
|
<input type="text" id="fname" name="fname" value="John"><br>
|
|
<label for="lname">Last name:</label><br>
|
|
<input type="text" id="lname" name="lname" value="Doe"><br><br>
|
|
<input type="submit" value="submit">
|
|
<h3>expectation:</h3>
|
|
<p>normal output</p>
|
|
</form>
|
|
<br>
|
|
|
|
<form method="get" action="/cgi-bin/cgi_cpp_len_big.out">
|
|
<p><mark>get</mark> form</p>
|
|
<p>to <mark>/cgi-bin/cgi_cpp_len_big.out</mark></p>
|
|
<label for="fname">First name:</label><br>
|
|
<input type="text" id="fname" name="fname" value="John"><br>
|
|
<label for="lname">Last name:</label><br>
|
|
<input type="text" id="lname" name="lname" value="Doe"><br><br>
|
|
<input type="submit" value="submit">
|
|
<h3>expectation:</h3>
|
|
<p>normal output</p>
|
|
</form>
|
|
<br>
|
|
|
|
<form method="get" action="/cgi-bin/cgi_cpp_len_small.out">
|
|
<p><mark>get</mark> form</p>
|
|
<p>to <mark>/cgi-bin/cgi_cpp_len_small.out</mark></p>
|
|
<label for="fname">First name:</label><br>
|
|
<input type="text" id="fname" name="fname" value="John"><br>
|
|
<label for="lname">Last name:</label><br>
|
|
<input type="text" id="lname" name="lname" value="Doe"><br><br>
|
|
<input type="submit" value="submit">
|
|
<h3>expectation:</h3>
|
|
<p>normal output</p>
|
|
</form>
|
|
<br>
|
|
|
|
<form method="get" action="/cgi-bin/cgi_cpp_status.out">
|
|
<p><mark>get</mark> form</p>
|
|
<p>to <mark>/cgi-bin/cgi_cpp_status.out</mark></p>
|
|
<label for="fname">First name:</label><br>
|
|
<input type="text" id="fname" name="fname" value="John"><br>
|
|
<label for="lname">Last name:</label><br>
|
|
<input type="text" id="lname" name="lname" value="Doe"><br><br>
|
|
<select name="status">
|
|
<option value="100">100</option>
|
|
<option value="101">101</option>
|
|
<option value="102">102</option>
|
|
<option value="103">103</option>
|
|
<option value="200" selected>200</option>
|
|
<option value="201">201</option>
|
|
<option value="202">202</option>
|
|
<option value="203">203</option>
|
|
<option value="204">204</option>
|
|
<option value="205">205</option>
|
|
<option value="206">206</option>
|
|
<option value="207">207</option>
|
|
<option value="208">208</option>
|
|
<option value="226">226</option>
|
|
<option value="300">300</option>
|
|
<option value="301">301</option>
|
|
<option value="302">302</option>
|
|
<option value="303">303</option>
|
|
<option value="304">304</option>
|
|
<option value="305">305</option>
|
|
<option value="306">306</option>
|
|
<option value="307">307</option>
|
|
<option value="308">308</option>
|
|
<option value="400">400</option>
|
|
<option value="401">401</option>
|
|
<option value="402">402</option>
|
|
<option value="403">403</option>
|
|
<option value="404">404</option>
|
|
<option value="405">405</option>
|
|
<option value="406">406</option>
|
|
<option value="407">407</option>
|
|
<option value="408">408</option>
|
|
<option value="409">409</option>
|
|
<option value="410">410</option>
|
|
<option value="411">411</option>
|
|
<option value="412">412</option>
|
|
<option value="413">413</option>
|
|
<option value="414">414</option>
|
|
<option value="415">415</option>
|
|
<option value="416">416</option>
|
|
<option value="417">417</option>
|
|
<option value="418">418</option>
|
|
<option value="421">421</option>
|
|
<option value="422">422</option>
|
|
<option value="423">423</option>
|
|
<option value="424">424</option>
|
|
<option value="425">425</option>
|
|
<option value="426">426</option>
|
|
<option value="428">428</option>
|
|
<option value="429">429</option>
|
|
<option value="431">431</option>
|
|
<option value="451">451</option>
|
|
<option value="500">500</option>
|
|
<option value="501">501</option>
|
|
<option value="502">502</option>
|
|
<option value="503">503</option>
|
|
<option value="504">504</option>
|
|
<option value="505">505</option>
|
|
<option value="506">506</option>
|
|
<option value="507">507</option>
|
|
<option value="508">508</option>
|
|
<option value="510">510</option>
|
|
<option value="511">511</option>
|
|
</select>
|
|
<input type="submit" value="submit">
|
|
<h3>expectation:</h3>
|
|
<p>depend on status code</p>
|
|
</form>
|
|
<br>
|
|
|
|
<form method="get" action="/cgi-bin/cgi_cpp_empty_lines.out">
|
|
<p><mark>get</mark> form</p>
|
|
<p>to <mark>/cgi-bin/cgi_cpp_empty_lines.out</mark></p>
|
|
<label for="fname">First name:</label><br>
|
|
<input type="text" id="fname" name="fname" value="John"><br>
|
|
<label for="lname">Last name:</label><br>
|
|
<input type="text" id="lname" name="lname" value="Doe"><br><br>
|
|
<input type="submit" value="submit">
|
|
<h3>expectation:</h3>
|
|
<p>normal output</p>
|
|
</form>
|
|
<br>
|
|
|
|
<form method="get" action="/cgi-bin/cgi_cpp_sleep.out">
|
|
<p><mark>get</mark> form</p>
|
|
<p>to <mark>/cgi-bin/cgi_cpp_sleep.out</mark></p>
|
|
<label for="fname">First name:</label><br>
|
|
<input type="text" id="fname" name="fname" value="John"><br>
|
|
<label for="lname">Last name:</label><br>
|
|
<input type="text" id="lname" name="lname" value="Doe"><br><br>
|
|
<input type="submit" value="submit">
|
|
<h3>expectation:</h3>
|
|
<p>the request will sleep for one minute</p>
|
|
<p>but other request chould not be blocked</p>
|
|
</form>
|
|
<br>
|
|
|
|
<form method="get" action="/cgi-bin/cgi_cpp_no_body.out">
|
|
<p><mark>get</mark> form</p>
|
|
<p>to <mark>/cgi-bin/cgi_cpp_no_body.out</mark></p>
|
|
<label for="fname">First name:</label><br>
|
|
<input type="text" id="fname" name="fname" value="John"><br>
|
|
<label for="lname">Last name:</label><br>
|
|
<input type="text" id="lname" name="lname" value="Doe"><br><br>
|
|
<input type="submit" value="submit">
|
|
<h3>expectation:</h3>
|
|
<p>blank page</p>
|
|
</form>
|
|
<br>
|
|
|
|
<form method="get" action="/cgi-bin/cgi_cpp_bad_headers.out">
|
|
<p><mark>get</mark> form</p>
|
|
<p>to <mark>/cgi-bin/cgi_cpp_bad_headers.out</mark></p>
|
|
<label for="fname">First name:</label><br>
|
|
<input type="text" id="fname" name="fname" value="John"><br>
|
|
<label for="lname">Last name:</label><br>
|
|
<input type="text" id="lname" name="lname" value="Doe"><br><br>
|
|
<input type="submit" value="submit">
|
|
<h3>expectation:</h3>
|
|
<p>error 500</p>
|
|
</form>
|
|
<br>
|
|
|
|
<form method="get" action="/cgi-bin/cgi_cpp_empty.out">
|
|
<p><mark>get</mark> form</p>
|
|
<p>to <mark>/cgi-bin/cgi_cpp_empty.out</mark></p>
|
|
<label for="fname">First name:</label><br>
|
|
<input type="text" id="fname" name="fname" value="John"><br>
|
|
<label for="lname">Last name:</label><br>
|
|
<input type="text" id="lname" name="lname" value="Doe"><br><br>
|
|
<input type="submit" value="submit">
|
|
<h3>expectation:</h3>
|
|
<p>error 500</p>
|
|
</form>
|
|
<br>
|
|
|
|
<form method="get" action="/cgi-bin/cgi_cpp_no_headers.out">
|
|
<p><mark>get</mark> form</p>
|
|
<p>to <mark>/cgi-bin/cgi_cpp_no_headers.out</mark></p>
|
|
<label for="fname">First name:</label><br>
|
|
<input type="text" id="fname" name="fname" value="John"><br>
|
|
<label for="lname">Last name:</label><br>
|
|
<input type="text" id="lname" name="lname" value="Doe"><br><br>
|
|
<input type="submit" value="submit">
|
|
<h3>expectation:</h3>
|
|
<p>error 500</p>
|
|
</form>
|
|
<br>
|
|
|
|
<form method="get" action="/cgi-bin/cgi_cpp_only_crlf.out">
|
|
<p><mark>get</mark> form</p>
|
|
<p>to <mark>/cgi-bin/cgi_cpp_only_crlf.out</mark></p>
|
|
<label for="fname">First name:</label><br>
|
|
<input type="text" id="fname" name="fname" value="John"><br>
|
|
<label for="lname">Last name:</label><br>
|
|
<input type="text" id="lname" name="lname" value="Doe"><br><br>
|
|
<input type="submit" value="submit">
|
|
<h3>expectation:</h3>
|
|
<p>error 500</p>
|
|
</form>
|
|
</div>
|
|
|
|
<div id="post">
|
|
<form method="post" action="/cgi-bin/cgi_cpp.out">
|
|
<p><mark>post</mark> form</p>
|
|
<p>to <mark>/cgi-bin/cgi_cpp.out</mark></p>
|
|
<label for="fname">First name:</label><br>
|
|
<input type="text" id="fname" name="fname" value="John"><br>
|
|
<label for="lname">Last name:</label><br>
|
|
<input type="text" id="lname" name="lname" value="Doe"><br><br>
|
|
<input type="submit" value="submit">
|
|
<h3>expectation:</h3>
|
|
<p>normal output</p>
|
|
</form>
|
|
<br>
|
|
|
|
<form method="post" action="/cgi-bin/cgi_cpp_len.out">
|
|
<p><mark>post</mark> form</p>
|
|
<p>to <mark>/cgi-bin/cgi_cpp_len.out</mark></p>
|
|
<label for="fname">First name:</label><br>
|
|
<input type="text" id="fname" name="fname" value="John"><br>
|
|
<label for="lname">Last name:</label><br>
|
|
<input type="text" id="lname" name="lname" value="Doe"><br><br>
|
|
<input type="submit" value="submit">
|
|
<h3>expectation:</h3>
|
|
<p>normal output</p>
|
|
</form>
|
|
<br>
|
|
|
|
<form method="post" action="/cgi-bin/cgi_cpp_len_big.out">
|
|
<p><mark>post</mark> form</p>
|
|
<p>to <mark>/cgi-bin/cgi_cpp_len_big.out</mark></p>
|
|
<label for="fname">First name:</label><br>
|
|
<input type="text" id="fname" name="fname" value="John"><br>
|
|
<label for="lname">Last name:</label><br>
|
|
<input type="text" id="lname" name="lname" value="Doe"><br><br>
|
|
<input type="submit" value="submit">
|
|
<h3>expectation:</h3>
|
|
<p>normal output</p>
|
|
</form>
|
|
<br>
|
|
|
|
<form method="post" action="/cgi-bin/cgi_cpp_len_small.out">
|
|
<p><mark>post</mark> form</p>
|
|
<p>to <mark>/cgi-bin/cgi_cpp_len_small.out</mark></p>
|
|
<label for="fname">First name:</label><br>
|
|
<input type="text" id="fname" name="fname" value="John"><br>
|
|
<label for="lname">Last name:</label><br>
|
|
<input type="text" id="lname" name="lname" value="Doe"><br><br>
|
|
<input type="submit" value="submit">
|
|
<h3>expectation:</h3>
|
|
<p>normal output</p>
|
|
</form>
|
|
<br>
|
|
|
|
<form method="post" action="/cgi-bin/cgi_cpp_status.out">
|
|
<p><mark>post</mark> form</p>
|
|
<p>to <mark>/cgi-bin/cgi_cpp_status.out</mark></p>
|
|
<label for="fname">First name:</label><br>
|
|
<input type="text" id="fname" name="fname" value="John"><br>
|
|
<label for="lname">Last name:</label><br>
|
|
<input type="text" id="lname" name="lname" value="Doe"><br><br>
|
|
<select name="status">
|
|
<option value="100">100</option>
|
|
<option value="101">101</option>
|
|
<option value="102">102</option>
|
|
<option value="103">103</option>
|
|
<option value="200" selected>200</option>
|
|
<option value="201">201</option>
|
|
<option value="202">202</option>
|
|
<option value="203">203</option>
|
|
<option value="204">204</option>
|
|
<option value="205">205</option>
|
|
<option value="206">206</option>
|
|
<option value="207">207</option>
|
|
<option value="208">208</option>
|
|
<option value="226">226</option>
|
|
<option value="300">300</option>
|
|
<option value="301">301</option>
|
|
<option value="302">302</option>
|
|
<option value="303">303</option>
|
|
<option value="304">304</option>
|
|
<option value="305">305</option>
|
|
<option value="306">306</option>
|
|
<option value="307">307</option>
|
|
<option value="308">308</option>
|
|
<option value="400">400</option>
|
|
<option value="401">401</option>
|
|
<option value="402">402</option>
|
|
<option value="403">403</option>
|
|
<option value="404">404</option>
|
|
<option value="405">405</option>
|
|
<option value="406">406</option>
|
|
<option value="407">407</option>
|
|
<option value="408">408</option>
|
|
<option value="409">409</option>
|
|
<option value="410">410</option>
|
|
<option value="411">411</option>
|
|
<option value="412">412</option>
|
|
<option value="413">413</option>
|
|
<option value="414">414</option>
|
|
<option value="415">415</option>
|
|
<option value="416">416</option>
|
|
<option value="417">417</option>
|
|
<option value="418">418</option>
|
|
<option value="421">421</option>
|
|
<option value="422">422</option>
|
|
<option value="423">423</option>
|
|
<option value="424">424</option>
|
|
<option value="425">425</option>
|
|
<option value="426">426</option>
|
|
<option value="428">428</option>
|
|
<option value="429">429</option>
|
|
<option value="431">431</option>
|
|
<option value="451">451</option>
|
|
<option value="500">500</option>
|
|
<option value="501">501</option>
|
|
<option value="502">502</option>
|
|
<option value="503">503</option>
|
|
<option value="504">504</option>
|
|
<option value="505">505</option>
|
|
<option value="506">506</option>
|
|
<option value="507">507</option>
|
|
<option value="508">508</option>
|
|
<option value="510">510</option>
|
|
<option value="511">511</option>
|
|
</select>
|
|
<input type="submit" value="submit">
|
|
<h3>expectation:</h3>
|
|
<p>depend on status code</p>
|
|
</form>
|
|
<br>
|
|
|
|
<form method="post" action="/cgi-bin/cgi_cpp_empty_lines.out">
|
|
<p><mark>post</mark> form</p>
|
|
<p>to <mark>/cgi-bin/cgi_cpp_empty_lines.out</mark></p>
|
|
<label for="fname">First name:</label><br>
|
|
<input type="text" id="fname" name="fname" value="John"><br>
|
|
<label for="lname">Last name:</label><br>
|
|
<input type="text" id="lname" name="lname" value="Doe"><br><br>
|
|
<input type="submit" value="submit">
|
|
<h3>expectation:</h3>
|
|
<p>normal output</p>
|
|
</form>
|
|
<br>
|
|
|
|
<form method="post" action="/cgi-bin/cgi_cpp_sleep.out">
|
|
<p><mark>post</mark> form</p>
|
|
<p>to <mark>/cgi-bin/cgi_cpp_sleep.out</mark></p>
|
|
<label for="fname">First name:</label><br>
|
|
<input type="text" id="fname" name="fname" value="John"><br>
|
|
<label for="lname">Last name:</label><br>
|
|
<input type="text" id="lname" name="lname" value="Doe"><br><br>
|
|
<input type="submit" value="submit">
|
|
<h3>expectation:</h3>
|
|
<p>the request will sleep for one minute</p>
|
|
<p>but other request chould not be blocked</p>
|
|
</form>
|
|
<br>
|
|
|
|
<form method="post" action="/cgi-bin/cgi_cpp_no_body.out">
|
|
<p><mark>post</mark> form</p>
|
|
<p>to <mark>/cgi-bin/cgi_cpp_no_body.out</mark></p>
|
|
<label for="fname">First name:</label><br>
|
|
<input type="text" id="fname" name="fname" value="John"><br>
|
|
<label for="lname">Last name:</label><br>
|
|
<input type="text" id="lname" name="lname" value="Doe"><br><br>
|
|
<input type="submit" value="submit">
|
|
<h3>expectation:</h3>
|
|
<p>blank page</p>
|
|
</form>
|
|
<br>
|
|
|
|
<form method="post" action="/cgi-bin/cgi_cpp_bad_headers.out">
|
|
<p><mark>post</mark> form</p>
|
|
<p>to <mark>/cgi-bin/cgi_cpp_bad_headers.out</mark></p>
|
|
<label for="fname">First name:</label><br>
|
|
<input type="text" id="fname" name="fname" value="John"><br>
|
|
<label for="lname">Last name:</label><br>
|
|
<input type="text" id="lname" name="lname" value="Doe"><br><br>
|
|
<input type="submit" value="submit">
|
|
<h3>expectation:</h3>
|
|
<p>error 500</p>
|
|
</form>
|
|
<br>
|
|
|
|
<form method="post" action="/cgi-bin/cgi_cpp_empty.out">
|
|
<p><mark>post</mark> form</p>
|
|
<p>to <mark>/cgi-bin/cgi_cpp_empty.out</mark></p>
|
|
<label for="fname">First name:</label><br>
|
|
<input type="text" id="fname" name="fname" value="John"><br>
|
|
<label for="lname">Last name:</label><br>
|
|
<input type="text" id="lname" name="lname" value="Doe"><br><br>
|
|
<input type="submit" value="submit">
|
|
<h3>expectation:</h3>
|
|
<p>error 500</p>
|
|
</form>
|
|
<br>
|
|
|
|
<form method="post" action="/cgi-bin/cgi_cpp_no_headers.out">
|
|
<p><mark>post</mark> form</p>
|
|
<p>to <mark>/cgi-bin/cgi_cpp_no_headers.out</mark></p>
|
|
<label for="fname">First name:</label><br>
|
|
<input type="text" id="fname" name="fname" value="John"><br>
|
|
<label for="lname">Last name:</label><br>
|
|
<input type="text" id="lname" name="lname" value="Doe"><br><br>
|
|
<input type="submit" value="submit">
|
|
<h3>expectation:</h3>
|
|
<p>error 500</p>
|
|
</form>
|
|
<br>
|
|
|
|
<form method="post" action="/cgi-bin/cgi_cpp_only_crlf.out">
|
|
<p><mark>post</mark> form</p>
|
|
<p>to <mark>/cgi-bin/cgi_cpp_only_crlf.out</mark></p>
|
|
<label for="fname">First name:</label><br>
|
|
<input type="text" id="fname" name="fname" value="John"><br>
|
|
<label for="lname">Last name:</label><br>
|
|
<input type="text" id="lname" name="lname" value="Doe"><br><br>
|
|
<input type="submit" value="submit">
|
|
<h3>expectation:</h3>
|
|
<p>error 500</p>
|
|
</form>
|
|
</div>
|
|
|
|
</body>
|
|
</html>
|
|
|