71 lines
2.0 KiB
Markdown
Executable File
71 lines
2.0 KiB
Markdown
Executable File
# meincantor-api
|
|
The API backend for the GCG.MeinCantor school platform built with Rocket.rs in Rust.
|
|
|
|
It includes a plugin for receiving data from Indiware Mobil and a Keycloak authentication extension.
|
|
|
|
See the repository of the [main application](https://git.cantorgymnasium.de/cantortechnik/meincantor-app) for additional information.
|
|
|
|
## Building
|
|
|
|
Dependencies:
|
|
- `openssl-devel`
|
|
|
|
```bash
|
|
cargo build --release
|
|
```
|
|
|
|
## Deployment
|
|
|
|
### docker-compose
|
|
|
|
```
|
|
version: "3.1"
|
|
services:
|
|
api:
|
|
image: lxdb/meincantor-api
|
|
restart: always
|
|
ports:
|
|
- 8000:8000
|
|
environment:
|
|
IW_TIMETABLE_URL: https://stundenplan24.de/EXAMPLE_SCHOOL/mobil/mobdaten
|
|
IW_TIMETABLE_USER: EXAMPLE_USER
|
|
IW_TIMETABLE_PASSWORD: EXAMPLE_PASSWORD
|
|
JWT_SECRET: EXAMPLE_SECRET
|
|
JWT_ISSUER: Georg-Cantor-Gymnasium Halle(Saale)
|
|
KC_OPENID_TOKEN_ENDPOINT: https://example.keycloak.com/auth/realms/EXAMPLE_REALM/protocol/openid-connect/token
|
|
KC_OPENID_USERINFO_ENDPOINT: https://example.keycloak.com/auth/realms/EXAMPLE_REALM/protocol/openid-connect/userinfo
|
|
KC_CLIENT_ID: EXAMPLE_CLIENT
|
|
volumes:
|
|
- ./static:/app/static
|
|
```
|
|
|
|
1. Create folder `mkdir meincantor-api`
|
|
2. Create `docker-compose.yml` file with the content above
|
|
3. Start with `docker-compose up -d`
|
|
|
|
|
|
### local
|
|
|
|
1. Edit `src/config.rs`
|
|
2. Rebuild the binary
|
|
3. Execute the binary with `./target/release/api`
|
|
|
|
## Licensing
|
|
|
|
```
|
|
Copyright (C) 2021-2022 Denys Konovalov
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU Affero General Public License as published
|
|
by the Free Software Foundation, either version 3 of the License, or
|
|
any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU Affero General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Affero General Public License
|
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
```
|