Skip to content

Commit f3bb1ac

Browse files
committed
daniel har hjälp mig med ändringar
1 parent baa3981 commit f3bb1ac

File tree

2 files changed

+27
-29
lines changed

2 files changed

+27
-29
lines changed

src/main/java/org/example/ConnectionHandler.java

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44
import org.example.filter.IpFilter;
55
import org.example.httpparser.HttpParser;
66
import org.example.httpparser.HttpRequest;
7+
8+
import java.io.File;
9+
import java.nio.file.Files;
10+
import java.nio.file.NoSuchFileException;
711
import java.util.ArrayList;
812
import java.util.List;
913
import org.example.filter.Filter;
@@ -69,19 +73,30 @@ public void runConnectionHandler() throws IOException {
6973
// Check cache FIRST
7074
byte[] cachedBytes = FileCache.get(cacheKey);
7175
if (cachedBytes != null) {
72-
System.out.println("✓ Cache HIT: " + sanitizedUri);
73-
HttpResponseBuilder cachedResp = new HttpResponseBuilder();
74-
cachedResp.setContentTypeFromFilename(sanitizedUri);
75-
cachedResp.setBody(cachedBytes);
76-
client.getOutputStream().write(cachedResp.build());
76+
System.out.println(" Cache HIT: " + sanitizedUri);
77+
response.setContentTypeFromFilename(sanitizedUri);
78+
response.setBody(cachedBytes);
79+
client.getOutputStream().write(response.build());
7780
client.getOutputStream().flush();
7881
return;
7982
}
8083

8184
// Cache miss - StaticFileHandler reads and caches
82-
System.out.println("✗ Cache MISS: " + sanitizedUri);
83-
StaticFileHandler sfh = new StaticFileHandler();
84-
sfh.sendGetRequest(client.getOutputStream(), sanitizedUri);
85+
System.out.println(" Cache MISS: " + sanitizedUri);
86+
try {
87+
byte[] fileBytes = Files.readAllBytes(new File("www", sanitizedUri).toPath());
88+
FileCache.put(cacheKey, fileBytes); // ← SPARAR I CACHEN HÄR
89+
90+
response.setContentTypeFromFilename(sanitizedUri);
91+
response.setBody(fileBytes);
92+
client.getOutputStream().write(response.build());
93+
client.getOutputStream().flush();
94+
} catch (NoSuchFileException e) {
95+
response.setStatusCode(HttpResponseBuilder.SC_NOT_FOUND);
96+
response.setBody("404 Not Found");
97+
client.getOutputStream().write(response.build());
98+
client.getOutputStream().flush();
99+
}
85100
}
86101

87102
private String sanitizeUri(String uri) {

src/main/java/org/example/StaticFileHandler.java

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -24,24 +24,22 @@ public StaticFileHandler(String webRoot) {
2424
}
2525

2626
public void sendGetRequest(OutputStream outputStream, String uri) throws IOException {
27-
String sanitizedUri = sanitizeUri(uri);
28-
29-
if (isPathTraversal(sanitizedUri)) {
27+
if (isPathTraversal(uri)) {
3028
writeResponse(outputStream, 403, "Forbidden");
3129
return;
3230
}
3331

3432
try {
35-
String cacheKey = webRoot + ":" + sanitizedUri;
33+
String cacheKey = "www:" + uri;
3634
byte[] fileBytes = FileCache.get(cacheKey);
3735

3836
if (fileBytes == null) {
39-
fileBytes = Files.readAllBytes(new File(webRoot, sanitizedUri).toPath());
37+
fileBytes = Files.readAllBytes(new File(webRoot, uri).toPath());
4038
FileCache.put(cacheKey, fileBytes);
4139
}
4240

4341
HttpResponseBuilder response = new HttpResponseBuilder();
44-
response.setContentTypeFromFilename(sanitizedUri);
42+
response.setContentTypeFromFilename(uri);
4543
response.setBody(fileBytes);
4644
outputStream.write(response.build());
4745
outputStream.flush();
@@ -53,21 +51,6 @@ public void sendGetRequest(OutputStream outputStream, String uri) throws IOExcep
5351
}
5452
}
5553

56-
57-
private String sanitizeUri(String uri) {
58-
if (uri == null || uri.isEmpty()) return "index.html";
59-
60-
int endIndex = Math.min(
61-
uri.indexOf('?') < 0 ? uri.length() : uri.indexOf('?'),
62-
uri.indexOf('#') < 0 ? uri.length() : uri.indexOf('#')
63-
);
64-
65-
return uri.substring(0, endIndex)
66-
.replace("\0", "")
67-
.replaceAll("^/+", "")
68-
.replaceAll("^$", "index.html");
69-
}
70-
7154
private boolean isPathTraversal(String uri) {
7255
try {
7356
Path webRootPath = Paths.get(webRoot).toAbsolutePath().normalize();

0 commit comments

Comments
 (0)