fixed an autoindex issue, working on uploading files
This commit is contained in:
@@ -15,6 +15,22 @@ server {
|
|||||||
|
|
||||||
error_page 404 ./www/error_pages/error_404.html;
|
error_page 404 ./www/error_pages/error_404.html;
|
||||||
|
|
||||||
|
|
||||||
|
# something to do with /upload
|
||||||
|
|
||||||
|
location /upload {
|
||||||
|
root ./www/test/;
|
||||||
|
index submit_form.html;
|
||||||
|
upload_dir ./www/uploaded/;
|
||||||
|
cgi_ext php;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /uploaded {
|
||||||
|
autoindex on;
|
||||||
|
root ./www/uploaded/;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
location /list {
|
location /list {
|
||||||
autoindex on;
|
autoindex on;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ void Client::parse_request_headers(std::vector<ServerConfig> &servers)
|
|||||||
_parse_request_fields();
|
_parse_request_fields();
|
||||||
|
|
||||||
// DEBUG
|
// DEBUG
|
||||||
//print_client("headers");
|
print_client("headers");
|
||||||
|
|
||||||
if (status)
|
if (status)
|
||||||
return;
|
return;
|
||||||
|
|||||||
64
srcs/cgi-bin/upload_file.php
Normal file
64
srcs/cgi-bin/upload_file.php
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
#! /bin/bash/php
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<?php
|
||||||
|
// $FileName=$_FILES['myFile']['filename'];
|
||||||
|
# $TmpName=$_FILES['myFile']['tmp_name'];
|
||||||
|
# move_uploaded_file($TmpName, $FileName);
|
||||||
|
# echo("File was uploaded successfully!");
|
||||||
|
|
||||||
|
// this part needs to be grabed from POST uri
|
||||||
|
//$target_dir = "./www/uploaded/";
|
||||||
|
$target_dir = $_POST["upload_dir"];
|
||||||
|
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
|
||||||
|
$uploadOk = 1;
|
||||||
|
$fileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
|
||||||
|
//$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
|
||||||
|
|
||||||
|
// Check if image file is a actual image or fake image
|
||||||
|
//if(isset($_POST["submit"])) {
|
||||||
|
// $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
|
||||||
|
// if($check !== false) {
|
||||||
|
// echo "File is an image - " . $check["mime"] . ".";
|
||||||
|
// $uploadOk = 1;
|
||||||
|
// } else {
|
||||||
|
// echo "File is not an image.";
|
||||||
|
// $uploadOk = 0;
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
|
// Check if file already exists
|
||||||
|
if (file_exists($target_file)) {
|
||||||
|
echo "Sorry, file already exists.";
|
||||||
|
$uploadOk = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check file size
|
||||||
|
if ($_FILES["fileToUpload"]["size"] > 500000) {
|
||||||
|
echo "Sorry, your file is too large.";
|
||||||
|
$uploadOk = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Allow certain file formats
|
||||||
|
//if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
|
||||||
|
//&& $imageFileType != "gif" ) {
|
||||||
|
// echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
|
||||||
|
// $uploadOk = 0;
|
||||||
|
//}
|
||||||
|
|
||||||
|
// Check if $uploadOk is set to 0 by an error
|
||||||
|
if ($uploadOk == 0) {
|
||||||
|
echo "Sorry, your file was not uploaded.";
|
||||||
|
// if everything is ok, try to upload file
|
||||||
|
} else {
|
||||||
|
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
|
||||||
|
echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded.";
|
||||||
|
} else {
|
||||||
|
echo "Sorry, there was an error uploading your file.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
|
||||||
|
|
||||||
@@ -105,11 +105,15 @@ void Webserv::_autoindex(Client *client, const std::string &path)
|
|||||||
{
|
{
|
||||||
std::cout << "made it to _autoindex\n";
|
std::cout << "made it to _autoindex\n";
|
||||||
|
|
||||||
|
// std::cout << "client target: " << client->get_rq_target() << '\n';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
std::string dir_list;
|
std::string dir_list;
|
||||||
DIR *dir;
|
DIR *dir;
|
||||||
struct dirent *ent;
|
struct dirent *ent;
|
||||||
|
|
||||||
std::cout << "location root: " << client->assigned_location->root << " location path: "
|
// std::cout << "location root: " << client->assigned_location->root << " location path: "
|
||||||
<< client->assigned_location->path << '\n';
|
<< client->assigned_location->path << '\n';
|
||||||
|
|
||||||
std::cout << "Path in auto is: " << path << '\n';
|
std::cout << "Path in auto is: " << path << '\n';
|
||||||
@@ -123,11 +127,13 @@ void Webserv::_autoindex(Client *client, const std::string &path)
|
|||||||
/* print all the files and directories within directory */
|
/* print all the files and directories within directory */
|
||||||
while ((ent = readdir (dir)) != NULL)
|
while ((ent = readdir (dir)) != NULL)
|
||||||
{
|
{
|
||||||
std::cout << "ent: " << ent->d_name << '\n';
|
// std::cout << "ent: " << ent->d_name << '\n';
|
||||||
if (strcmp(".", ent->d_name) == 0)
|
if (strcmp(".", ent->d_name) == 0)
|
||||||
continue ;
|
continue ;
|
||||||
dir_list.append("<a href=\"");
|
dir_list.append("<a href=\"");
|
||||||
dir_list.append(client->assigned_location->path + "/");
|
dir_list.append(client->get_rq_target());
|
||||||
|
if (dir_list[dir_list.size() - 1] != '/')
|
||||||
|
dir_list.push_back('/');
|
||||||
dir_list.append(ent->d_name);
|
dir_list.append(ent->d_name);
|
||||||
dir_list.append("\">");
|
dir_list.append("\">");
|
||||||
dir_list.append(ent->d_name);
|
dir_list.append(ent->d_name);
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ int Webserv::_read_request(Client *client)
|
|||||||
}
|
}
|
||||||
client->raw_request.append(buf, ret);
|
client->raw_request.append(buf, ret);
|
||||||
|
|
||||||
print_special(client->raw_request);
|
// print_special(client->raw_request);
|
||||||
|
|
||||||
if (!client->header_complete)
|
if (!client->header_complete)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -7,9 +7,10 @@
|
|||||||
<h1 style="text-align:center">Webserv in Test</h1>
|
<h1 style="text-align:center">Webserv in Test</h1>
|
||||||
<hr>
|
<hr>
|
||||||
<p style="text-align:center">Time to submit something:</p>
|
<p style="text-align:center">Time to submit something:</p>
|
||||||
<form action="/upload" method="post">
|
<form action="./srcs/cgi-bin/upload_file.php" method="post">
|
||||||
<input type="file" id="myFile" name="filename">
|
<input type="hidden" name="upload_dir" value="./www/uploaded/">
|
||||||
<input type="submit">
|
<input type="file" id="fileToUpload" name="myFile">
|
||||||
|
<input type="submit" value="Upload File">
|
||||||
</form>
|
</form>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Reference in New Issue
Block a user