Assignment 1
Due Date: 2019-10-06
Available Points: 20
A web server with a limited set of methods, status codes, headers, MIME types, and the access log.Methods
GET
HEAD
OPTIONS
TRACE
Status Codes
200
- OK400
- Bad Request403
- Forbidden404
- Not Found500
- Internal Server Error501
- Not Implemented505
- HTTP Version Not Supported
Request Headers
Connection: close
Host
Response Headers
Date
Server
Last-Modified
Content-Length
Content-Type
Connection: close
Allow
MIME Types
text/plain
text/html
text/xml
image/png
image/jpeg
image/gif
application/pdf
application/vnd.ms-powerpoint
application/vnd.ms-word
message/http
application/octet-stream
(default MIME type)
Your Access Log
GET /.well-known/access.log HTTP/1.1
- cf. RFC 8615
- Typically not a good idea to expose your logs via the web server, but OK for this project
- Implement as a virtual URI
- Use Common Log Format
- Server with
Content-type: text/plain
Notes
- Limited functionality - Points will be deducted for headers, response codes, etc. that are not explicitly defined in this assignment!
Submission and Evaluation
- Extract sample test files tarball into your web server’s document root
- Place your
Dockerfile
at the root of your repository (not inside of a nested folder) - Make your
Dockerfile
run your server on port80
by default - Release your implementation with the
a1
tag - Submissions will be evaluated using a variation of
cs531a1
test suite from our testing service and some manual inspection of responses and source code (if necessary) - Tests will be performed based on the contents and structure of the
a1-test
folder of the sample test files