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 | 30 | |
| 31 | 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 | 35 | ## 2. Installation |
| ... | ... | @@ -38,12 +37,16 @@ The file is in `~/.config/pip/` in Linux/FreeBSD and `~/Library/Application Supp |
| 38 | 37 | Download and install (`USERNAME` is your account on bitbucket): |
| 39 | 38 | |
| 40 | 39 | ```bash |
| 40 | +cd ~ | |
| 41 | 41 | git clone https://USERNAME@bitbucket.org/USERNAME/perguntations.git |
| 42 | 42 | cd perguntations |
| 43 | 43 | npm install |
| 44 | 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 | 50 | The command `npm` installs the javascript libraries and `pip3` installs the |
| 48 | 51 | python webserver. |
| 49 | 52 | This will also automatically install the python dependencies required. |
| ... | ... | @@ -64,8 +67,6 @@ case). |
| 64 | 67 | mkdir -p ~/.local/share/certs |
| 65 | 68 | ``` |
| 66 | 69 | |
| 67 | -### Selfsigned certificates | |
| 68 | - | |
| 69 | 70 | Self-signed certificates are not certified by a recognised authority and |
| 70 | 71 | browsers will complain that the certificate is not trusted. |
| 71 | 72 | |
| ... | ... | @@ -74,36 +75,9 @@ cd ~/.local/share/certs |
| 74 | 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 | 89 | To run the demonstration test you need to initialize the database using one of |
| 116 | 90 | the following methods: |
| 117 | 91 | |
| 118 | -```.bash | |
| 119 | -cd demo | |
| 92 | +```bash | |
| 93 | +cd ~/perguntations/demo | |
| 120 | 94 | |
| 121 | 95 | initdb students.csv # initialize from a CSV file |
| 122 | 96 | initdb --admin # only adds the administrator account |
| 123 | 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 | 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 | 121 | perguntations tutorial.yaml # run demo test |
| 131 | 122 | ``` |
| 132 | 123 | |
| 124 | +Several options are available, run `perguntations --help` for a list. | |
| 125 | + | |
| 133 | 126 | The server listens on port 8443 of all IPs of all network interfaces. |
| 134 | 127 | Open the browser at `http://127.0.0.1:8443/` and login as user number `0` |
| 135 | 128 | (administrator) and choose any password. The administrator is redirected to the |
| 136 | 129 | administration page that shows all the students and their state. |
| 137 | 130 | |
| 138 | 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 | 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 | 186 | pflog_flags="" |
| 193 | 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 | 220 | ## Troubleshooting |
| 197 | 221 | ... | ... |