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 | ... | ... |