Commit cab247c9f11c2a51a1510a48b6513c3685cd473d
1 parent
a8d19a1a
Exists in
master
and in
1 other branch
updated README and BUGS
Showing
2 changed files
with
43 additions
and
13 deletions
Show diff stats
BUGS.md
| @@ -19,6 +19,9 @@ ou usar push (websockets?) | @@ -19,6 +19,9 @@ ou usar push (websockets?) | ||
| 19 | 19 | ||
| 20 | # TODO | 20 | # TODO |
| 21 | 21 | ||
| 22 | +- gerar teste qd o prof autoriza. | ||
| 23 | +- enviar resposta de cada pergunta individualmente. | ||
| 24 | + | ||
| 22 | - experimentar gerador de svg que inclua no markdown da pergunta e ver se funciona. | 25 | - experimentar gerador de svg que inclua no markdown da pergunta e ver se funciona. |
| 23 | - imagens jpg/png nas perguntas. | 26 | - imagens jpg/png nas perguntas. |
| 24 | - suportar cotacao to teste diferente de 20 (e.g. para juntar perguntas em papel). opcao "points: 18" que normaliza total para 18 em vez de 20. | 27 | - suportar cotacao to teste diferente de 20 (e.g. para juntar perguntas em papel). opcao "points: 18" que normaliza total para 18 em vez de 20. |
README.md
| @@ -4,9 +4,9 @@ | @@ -4,9 +4,9 @@ | ||
| 4 | 2. [Running a demo](#running-a-demo) | 4 | 2. [Running a demo](#running-a-demo) |
| 5 | 3. [Troubleshooting](#troubleshooting) | 5 | 3. [Troubleshooting](#troubleshooting) |
| 6 | 6 | ||
| 7 | -## Installation | 7 | +## 1. Installation |
| 8 | 8 | ||
| 9 | -### Requirements | 9 | +### 1.1 Requirements |
| 10 | 10 | ||
| 11 | The webserver is a python application and requires `python3.6` and `pip` to be installed, plus the following additional packages: | 11 | The webserver is a python application and requires `python3.6` and `pip` to be installed, plus the following additional packages: |
| 12 | 12 | ||
| @@ -16,13 +16,14 @@ The webserver is a python application and requires `python3.6` and `pip` to be i | @@ -16,13 +16,14 @@ The webserver is a python application and requires `python3.6` and `pip` to be i | ||
| 16 | - Pygments | 16 | - Pygments |
| 17 | - SQLAlchemy | 17 | - SQLAlchemy |
| 18 | - bcrypt | 18 | - bcrypt |
| 19 | +- markdown | ||
| 19 | 20 | ||
| 20 | These can be installed for a single user (recommended), in a python virtual environment or system wide. | 21 | These can be installed for a single user (recommended), in a python virtual environment or system wide. |
| 21 | 22 | ||
| 22 | #### Installing packages for a single user (recommended) | 23 | #### Installing packages for a single user (recommended) |
| 23 | 24 | ||
| 24 | ```.bash | 25 | ```.bash |
| 25 | -pip3 install --user tornado mistune pyyaml pygments sqlalchemy bcrypt | 26 | +pip3 install --user tornado mistune pyyaml pygments sqlalchemy bcrypt markdown |
| 26 | ``` | 27 | ``` |
| 27 | 28 | ||
| 28 | #### Installing packages in a virtual environment (alternative) | 29 | #### Installing packages in a virtual environment (alternative) |
| @@ -31,7 +32,7 @@ pip3 install --user tornado mistune pyyaml pygments sqlalchemy bcrypt | @@ -31,7 +32,7 @@ pip3 install --user tornado mistune pyyaml pygments sqlalchemy bcrypt | ||
| 31 | pyvenv-3.6 venv/perguntations # or other virtualenv directory | 32 | pyvenv-3.6 venv/perguntations # or other virtualenv directory |
| 32 | source venv/perguntations/bin/activate # activate virtualenv | 33 | source venv/perguntations/bin/activate # activate virtualenv |
| 33 | 34 | ||
| 34 | -pip3 install tornado mistune pyyaml pygments sqlalchemy bcrypt | 35 | +pip3 install tornado mistune pyyaml pygments sqlalchemy bcrypt markdown |
| 35 | ``` | 36 | ``` |
| 36 | 37 | ||
| 37 | #### Installing packages system wide (alternative) | 38 | #### Installing packages system wide (alternative) |
| @@ -51,7 +52,7 @@ port install py36-py36-tornado py36-mistune? py36-yaml py36-pygments... | @@ -51,7 +52,7 @@ port install py36-py36-tornado py36-mistune? py36-yaml py36-pygments... | ||
| 51 | ``` | 52 | ``` |
| 52 | 53 | ||
| 53 | 54 | ||
| 54 | -### Install and setup perguntations | 55 | +### 1.2 Install and setup perguntations |
| 55 | 56 | ||
| 56 | There is no installer, pip or otherwise. It's still in development and has to be run from sources. Use `git` to get the sources: | 57 | There is no installer, pip or otherwise. It's still in development and has to be run from sources. Use `git` to get the sources: |
| 57 | 58 | ||
| @@ -65,11 +66,35 @@ where USERNAME is your account on bitbucket. | @@ -65,11 +66,35 @@ where USERNAME is your account on bitbucket. | ||
| 65 | The server will run an https server and requires valid certificates. | 66 | The server will run an https server and requires valid certificates. |
| 66 | To generate certificates, there are two possibilities: public server with static IP address or a private server. | 67 | To generate certificates, there are two possibilities: public server with static IP address or a private server. |
| 67 | 68 | ||
| 68 | -#### Generating certificates for a public server | 69 | +#### Generating certificates for a public server (FreeBSD) |
| 69 | 70 | ||
| 70 | -For a public server, `letsencrypt` will allow a certificate to be generated. | 71 | +```sh |
| 72 | +sudo pkg install py27-certbot # FreeBSD | ||
| 73 | +``` | ||
| 74 | + | ||
| 75 | +Shutdown the firewall and any server running. Then run the script to generate the certificate: | ||
| 76 | + | ||
| 77 | +```sh | ||
| 78 | +sudo service pf stop # disable pf firewall (FreeBSD) | ||
| 79 | +sudo certbot certonly --standalone -d www.example.com | ||
| 80 | +sudo service pf start # enable pf firewall | ||
| 81 | +``` | ||
| 82 | + | ||
| 83 | +Certificates are saved under `/usr/local/etc/letsencrypt/live/www.example.com/`. Copy them to `aprendizations/certs` and change permissions to be readable: | ||
| 71 | 84 | ||
| 72 | -TODO: explain... | 85 | +```sh |
| 86 | +sudo cp /usr/local/etc/letsencrypt/live/www.example.com/cert.pem . | ||
| 87 | +sudo cp /usr/local/etc/letsencrypt/live/www.example.com/privkey.pem . | ||
| 88 | +chmod 400 cert.pem privkey.pem | ||
| 89 | +``` | ||
| 90 | + | ||
| 91 | +Renews can be done as follows: | ||
| 92 | + | ||
| 93 | +```sh | ||
| 94 | +sudo service pf stop # shutdown firewall | ||
| 95 | +sudo certbot renew | ||
| 96 | +sudo service pf start # start firewall | ||
| 97 | +``` | ||
| 73 | 98 | ||
| 74 | Copy certificates `cert.crt` and `cert.key` to the `perguntations/certs/` directory. | 99 | Copy certificates `cert.crt` and `cert.key` to the `perguntations/certs/` directory. |
| 75 | 100 | ||
| @@ -79,7 +104,7 @@ Self-signed certificates are not certified by a recognised authority and browser | @@ -79,7 +104,7 @@ Self-signed certificates are not certified by a recognised authority and browser | ||
| 79 | 104 | ||
| 80 | ```bash | 105 | ```bash |
| 81 | cd perguntations/certs/ | 106 | cd perguntations/certs/ |
| 82 | -openssl req -x509 -newkey rsa:4096 -keyout cert.key -out cert.crt -days -nodes | 107 | +openssl req -x509 -newkey rsa:4096 -keyout cert.key -out cert.crt -days 365 -nodes |
| 83 | ``` | 108 | ``` |
| 84 | 109 | ||
| 85 | ## Running a demo | 110 | ## Running a demo |
| @@ -92,12 +117,14 @@ To run the demonstration test: | @@ -92,12 +117,14 @@ To run the demonstration test: | ||
| 92 | cd WHERE/YOU/INSTALLED/perguntations | 117 | cd WHERE/YOU/INSTALLED/perguntations |
| 93 | 118 | ||
| 94 | # create and initialize database using one of the following methods: | 119 | # create and initialize database using one of the following methods: |
| 95 | -./initdb.py students.csv # from CSV file | ||
| 96 | -./initdb.py --demo # initialize with fake students | ||
| 97 | -./initdb.py # only adds the administrator account | 120 | +./initdb.py students.csv # initialize from a CSV file |
| 121 | +./initdb.py --admin # only adds the administrator account | ||
| 122 | +./initdb.py --add 123 "Asterix Gaules" # add one student | ||
| 123 | + | ||
| 124 | +# a database file "students.db" is created | ||
| 98 | mv students.db demo/ | 125 | mv students.db demo/ |
| 99 | 126 | ||
| 100 | -# create directory to save the student's tests | 127 | +# create directory to save the finished tests |
| 101 | mkdir demo/ans | 128 | mkdir demo/ans |
| 102 | 129 | ||
| 103 | # edit test configuration and check if everything looks right | 130 | # edit test configuration and check if everything looks right |