ungleich_hack_3/README.md

62 lines
2.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ungleich_hack_3
A micro project proposed as a solution for [Hack 3: IPv6 cat](https://ungleich.ch/u/projects/jobs-hacks-bounties/) from [ungleich](https://ungleich.ch/).
## Overview
Per requirements, the project behaves differently depending on the version of the [Internet Protocol](https://en.wikipedia.org/wiki/Internet_Protocol) used to navigate it:
- Via IPv4, it shows a static page saying "Sorry, only reachable by IPv6"
- Via IPv6, it shows a friendly cat picture
To determine which version is used, we examine the visitors IP address. This is done in a [middleware](require_ipv6) that responds with an error page to non-IPv6 requests.
If the request goes through, a simple [application](friendly_cat) can be accesses, with a single index view showing a friendly picture of a cat.
## Usage
To install and run the project on your own computer, you must ensure that the following prerequisites are fulfilled:
- your operating system [supports IPv6](https://en.wikipedia.org/wiki/Comparison_of_IPv6_support_in_operating_systems)
- you can run [Python](https://www.python.org/) version 3.6 or above (it is recommended to use a [virtual environment](https://docs.python.org/3/tutorial/venv.html)), with:
- [`pip`](https://pip.pypa.io/)
- [`setuptools`](https://pypi.org/project/setuptools/)
- you can run the [`make`](https://www.gnu.org/software/make/) command
Proceed to [cloning](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/cloning-a-repository) this repository, and navigate to its directory.
Then, execute the following command to install the projects required modules:
```sh
make install
```
Then, execute the following command to run the project using Djangos built-in web server:
```sh
make run
```
You can then navigate the project at [http://localhost:8000/](http://localhost:8000/).
## Deployment
To install and run the project in production, you must ensure that the following extra prerequisites are fulfilled:
- you can run an [WSGI](https://www.python.org/dev/peps/pep-3333/) server with IPv6 support to expose the projects [`application`](https://docs.djangoproject.com/en/3.0/howto/deployment/wsgi/#the-application-object)
- you can run a web server with IPv6 support to act as a file server for the projects static files, and as a reverse proxy between the WSGI server and the internet
Proceed to deploying this repository, and navigate to its directory.
Then, execute the following command to install the projects static files:
```sh
make build
```
Then, configure and run your WSGI server and your web server.
## Hacking
See [CONTRIBUTING](CONTRIBUTING.md) for developer documentation.