Commit c7ca2f4e19b1bdf885b201c6ddf25fc187b361ec
1 parent
0173b110
Exists in
master
and in
1 other branch
update README.md
Showing
1 changed file
with
63 additions
and
39 deletions
Show diff stats
README.md
| @@ -30,7 +30,6 @@ format=columns | @@ -30,7 +30,6 @@ format=columns | ||
| 30 | 30 | ||
| 31 | The file is in `~/.config/pip/` in Linux/FreeBSD and `~/Library/Application Support/pip/pip.conf` in MacOS. | 31 | The file is in `~/.config/pip/` in Linux/FreeBSD and `~/Library/Application Support/pip/pip.conf` in MacOS. |
| 32 | 32 | ||
| 33 | - | ||
| 34 | --- | 33 | --- |
| 35 | 34 | ||
| 36 | ## 2. Installation | 35 | ## 2. Installation |
| @@ -38,12 +37,16 @@ The file is in `~/.config/pip/` in Linux/FreeBSD and `~/Library/Application Supp | @@ -38,12 +37,16 @@ The file is in `~/.config/pip/` in Linux/FreeBSD and `~/Library/Application Supp | ||
| 38 | Download and install (`USERNAME` is your account on bitbucket): | 37 | Download and install (`USERNAME` is your account on bitbucket): |
| 39 | 38 | ||
| 40 | ```bash | 39 | ```bash |
| 40 | +cd ~ | ||
| 41 | git clone https://USERNAME@bitbucket.org/USERNAME/perguntations.git | 41 | git clone https://USERNAME@bitbucket.org/USERNAME/perguntations.git |
| 42 | cd perguntations | 42 | cd perguntations |
| 43 | npm install | 43 | npm install |
| 44 | pip3 install . | 44 | pip3 install . |
| 45 | ``` | 45 | ``` |
| 46 | 46 | ||
| 47 | +Here, the repository is installed in the user home directory. | ||
| 48 | +You may wish to adjust to somewhere else. | ||
| 49 | + | ||
| 47 | The command `npm` installs the javascript libraries and `pip3` installs the | 50 | The command `npm` installs the javascript libraries and `pip3` installs the |
| 48 | python webserver. | 51 | python webserver. |
| 49 | This will also automatically install the python dependencies required. | 52 | This will also automatically install the python dependencies required. |
| @@ -64,8 +67,6 @@ case). | @@ -64,8 +67,6 @@ case). | ||
| 64 | mkdir -p ~/.local/share/certs | 67 | mkdir -p ~/.local/share/certs |
| 65 | ``` | 68 | ``` |
| 66 | 69 | ||
| 67 | -### Selfsigned certificates | ||
| 68 | - | ||
| 69 | Self-signed certificates are not certified by a recognised authority and | 70 | Self-signed certificates are not certified by a recognised authority and |
| 70 | browsers will complain that the certificate is not trusted. | 71 | browsers will complain that the certificate is not trusted. |
| 71 | 72 | ||
| @@ -74,36 +75,9 @@ cd ~/.local/share/certs | @@ -74,36 +75,9 @@ cd ~/.local/share/certs | ||
| 74 | openssl req -x509 -newkey rsa:4096 -keyout privkey.pem -out cert.pem -days 365 -nodes | 75 | openssl req -x509 -newkey rsa:4096 -keyout privkey.pem -out cert.pem -days 365 -nodes |
| 75 | ``` | 76 | ``` |
| 76 | 77 | ||
| 77 | -### LetsEncript (FreeBSD) | ||
| 78 | - | ||
| 79 | -Generating certificates for a public server (FreeBSD) requires a registered | ||
| 80 | -domain with fixed IP. | ||
| 81 | - | ||
| 82 | -```sh | ||
| 83 | -sudo pkg install py27-certbot # FreeBSD | ||
| 84 | -sudo service pf stop # disable pf firewall (FreeBSD) | ||
| 85 | -sudo certbot certonly --standalone -d www.example.com | ||
| 86 | -sudo service pf start # enable pf firewall | ||
| 87 | -``` | ||
| 88 | - | ||
| 89 | -Certificates are saved in `/usr/local/etc/letsencrypt/live/www.example.com/`. | ||
| 90 | -Copy them to the `certs` directory and change permissions: | ||
| 91 | - | ||
| 92 | -```sh | ||
| 93 | -chmod 400 cert.pem privkey.pem | ||
| 94 | -``` | ||
| 95 | - | ||
| 96 | -Certificate renewals can be done as follows: | ||
| 97 | - | ||
| 98 | -```sh | ||
| 99 | -sudo service pf stop # shutdown firewall | ||
| 100 | -sudo certbot renew | ||
| 101 | -sudo service pf start # start firewall | ||
| 102 | -``` | ||
| 103 | - | ||
| 104 | -Again, copy certificate files `privkey.pem` and `cert.pem` to the `certs` | ||
| 105 | -directory. | ||
| 106 | - | 78 | +To have a true certificate, like the ones issued by LetsEncrypt, the host |
| 79 | +must have a registered domain name. | ||
| 80 | +See instructions for FreeBSD at the end of this page. | ||
| 107 | 81 | ||
| 108 | --- | 82 | --- |
| 109 | 83 | ||
| @@ -115,29 +89,49 @@ as a template for your own tests and questions. | @@ -115,29 +89,49 @@ as a template for your own tests and questions. | ||
| 115 | To run the demonstration test you need to initialize the database using one of | 89 | To run the demonstration test you need to initialize the database using one of |
| 116 | the following methods: | 90 | the following methods: |
| 117 | 91 | ||
| 118 | -```.bash | ||
| 119 | -cd demo | 92 | +```bash |
| 93 | +cd ~/perguntations/demo | ||
| 120 | 94 | ||
| 121 | initdb students.csv # initialize from a CSV file | 95 | initdb students.csv # initialize from a CSV file |
| 122 | initdb --admin # only adds the administrator account | 96 | initdb --admin # only adds the administrator account |
| 123 | initdb --add 123 "Asterix Gaules" # add one student | 97 | initdb --add 123 "Asterix Gaules" # add one student |
| 98 | +``` | ||
| 99 | + | ||
| 100 | +This will create or update a `students.db` file that contains a sqlite3 | ||
| 101 | +database. | ||
| 102 | +The database stores user passwords, and grades of the tests submitted by the | ||
| 103 | +students. | ||
| 104 | + | ||
| 105 | +The actual tests are stored in JSON files in the following directory: | ||
| 124 | 106 | ||
| 107 | +```bash | ||
| 125 | mkdir ans # directory where the student tests are saved | 108 | mkdir ans # directory where the student tests are saved |
| 109 | +``` | ||
| 110 | + | ||
| 111 | +A test is specified in a single `yaml` file. | ||
| 112 | +The demo already includes one: | ||
| 113 | + | ||
| 114 | +```bash | ||
| 115 | +$EDITOR tutorial.yaml # edit test configuration | ||
| 116 | +``` | ||
| 126 | 117 | ||
| 127 | -$EDITOR test-tutorial.yaml # edit test configuration | 118 | +To start the server with this test run: |
| 128 | 119 | ||
| 129 | -perguntations --help # get help | 120 | +```bash |
| 130 | perguntations tutorial.yaml # run demo test | 121 | perguntations tutorial.yaml # run demo test |
| 131 | ``` | 122 | ``` |
| 132 | 123 | ||
| 124 | +Several options are available, run `perguntations --help` for a list. | ||
| 125 | + | ||
| 133 | The server listens on port 8443 of all IPs of all network interfaces. | 126 | The server listens on port 8443 of all IPs of all network interfaces. |
| 134 | Open the browser at `http://127.0.0.1:8443/` and login as user number `0` | 127 | Open the browser at `http://127.0.0.1:8443/` and login as user number `0` |
| 135 | (administrator) and choose any password. The administrator is redirected to the | 128 | (administrator) and choose any password. The administrator is redirected to the |
| 136 | administration page that shows all the students and their state. | 129 | administration page that shows all the students and their state. |
| 137 | 130 | ||
| 138 | 1. Authorize students by clicking the checkboxes. | 131 | 1. Authorize students by clicking the checkboxes. |
| 139 | -2. Open a different browser at `http://127.0.0.1:8443/` and login as one of the | ||
| 140 | -authorized students. Answer the questions and submit. | 132 | +2. Open a different browser (or exit administrator) at `http://127.0.0.1:8443/` |
| 133 | +and login as one of the authorized students. | ||
| 134 | +Answer the questions and submit. You should get a grade at the end. | ||
| 141 | 135 | ||
| 142 | The server can be stoped from the terminal with `^C`. | 136 | The server can be stoped from the terminal with `^C`. |
| 143 | 137 | ||
| @@ -192,6 +186,36 @@ Optionally, to activate pf on boot, edit `rc.conf`: | @@ -192,6 +186,36 @@ Optionally, to activate pf on boot, edit `rc.conf`: | ||
| 192 | pflog_flags="" | 186 | pflog_flags="" |
| 193 | pflog_logfile="/var/log/pflog" | 187 | pflog_logfile="/var/log/pflog" |
| 194 | 188 | ||
| 189 | +## Generating certificates with LetsEncript (FreeBSD) | ||
| 190 | + | ||
| 191 | +Generating certificates for a public server (FreeBSD) requires a registered | ||
| 192 | +domain with fixed IP. | ||
| 193 | + | ||
| 194 | +```sh | ||
| 195 | +sudo pkg install py27-certbot # FreeBSD | ||
| 196 | +sudo service pf stop # disable pf firewall (FreeBSD) | ||
| 197 | +sudo certbot certonly --standalone -d www.example.com | ||
| 198 | +sudo service pf start # enable pf firewall | ||
| 199 | +``` | ||
| 200 | + | ||
| 201 | +Certificates are saved in `/usr/local/etc/letsencrypt/live/www.example.com/`. | ||
| 202 | +Copy them to the `certs` directory and change permissions: | ||
| 203 | + | ||
| 204 | +```sh | ||
| 205 | +chmod 400 cert.pem privkey.pem | ||
| 206 | +``` | ||
| 207 | + | ||
| 208 | +Certificate renewals can be done as follows: | ||
| 209 | + | ||
| 210 | +```sh | ||
| 211 | +sudo service pf stop # shutdown firewall | ||
| 212 | +sudo certbot renew | ||
| 213 | +sudo service pf start # start firewall | ||
| 214 | +``` | ||
| 215 | + | ||
| 216 | +Again, copy certificate files `privkey.pem` and `cert.pem` to the `certs` | ||
| 217 | +directory. | ||
| 218 | + | ||
| 195 | 219 | ||
| 196 | ## Troubleshooting | 220 | ## Troubleshooting |
| 197 | 221 |