Update auth server docs and fix some styling

This commit is contained in:
Tanner Collin 2019-02-25 17:32:59 -07:00
parent d2cb012e1e
commit 3863f58b41
3 changed files with 76 additions and 1 deletions

View File

@ -78,6 +78,8 @@ Example response:
{ {
"url": "http://tools-auth.protospace.ca/tool/table-saw/", "url": "http://tools-auth.protospace.ca/tool/table-saw/",
"category": "http://tools-auth.protospace.ca/category/wood-shop/", "category": "http://tools-auth.protospace.ca/category/wood-shop/",
"firmware": "0010",
"upgrade_group": "Critical",
"name": "Table Saw", "name": "Table Saw",
"slug": "table-saw", "slug": "table-saw",
"info": "scary tool", "info": "scary tool",
@ -88,6 +90,8 @@ Example response:
{ {
"url": "http://tools-auth.protospace.ca/tool/jointer/", "url": "http://tools-auth.protospace.ca/tool/jointer/",
"category": "http://tools-auth.protospace.ca/category/wood-shop/", "category": "http://tools-auth.protospace.ca/category/wood-shop/",
"firmware": "0010",
"upgrade_group": "Testing",
"name": "Jointer", "name": "Jointer",
"slug": "jointer", "slug": "jointer",
"info": "goes buzz buzz", "info": "goes buzz buzz",
@ -107,6 +111,8 @@ Example response:
{ {
"url": "http://tools-auth.protospace.ca/tool/metal-lathe/", "url": "http://tools-auth.protospace.ca/tool/metal-lathe/",
"category": "http://tools-auth.protospace.ca/category/metal-shop/", "category": "http://tools-auth.protospace.ca/category/metal-shop/",
"firmware": "0010",
"upgrade_group": "Critical",
"name": "Metal Lathe", "name": "Metal Lathe",
"slug": "metal-lathe", "slug": "metal-lathe",
"info": "spins fast", "info": "spins fast",
@ -142,6 +148,38 @@ Example response:
"00000B8567,00000A4123,00000C9999" "00000B8567,00000A4123,00000C9999"
``` ```
#### POST `/infolog/[MAC]/`
Send log entries to the auth server for logging. Entries are base64 encoded in the `log` param.
Returns the number of entries processed, the current server unix time, and the firmware version for that lockout.
Example request:
```
curl -d log=cHJldGVuZCB0aGF0IHRoZXNlIGFyZSBhY3R1YWwgbG9nIGVudHJpZXMgYW5kIHJhbmRvbSB0ZXh0 http://tools-auth.protospace.ca/infolog/2C3AE843A15F/
```
Example response:
```
{
"processed": 7,
"version": "MRWIZARD 0010 MRWIZARD",
"unixTime": 1551139854
}
```
#### GET `/update/[MAC]/`
Returns the current firmware binary that should be running on the lockout.
Example request:
```
curl http://tools-auth.protospace.ca/update/2C3AE843A15F/
```
### For authenticated users ### For authenticated users
#### GET `/user/` #### GET `/user/`
@ -168,6 +206,26 @@ Example response:
] ]
``` ```
#### PUT `/select-courses/`
Send a list of course slugs that the user has taken in the `courses` param separated by a comma.
This allows users to declare which courses they have taken the first time they log into the lockout website (honour system).
Operation can only be done once. Returns the number of courses added.
Example request:
```
curl -X PUT -H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b" -d courses=wood-1,wood-2,metal-mig http://tools-auth.protospace.ca/select-courses/
```
Example response:
```
{"updated":3}
```
### For lockout admins ### For lockout admins
Ensure images are square and 1280x1280 px large. Slugs should be lowercase and one word (replace spaces with hyphens). Ensure images are square and 1280x1280 px large. Slugs should be lowercase and one word (replace spaces with hyphens).
@ -190,6 +248,14 @@ Get a specific category, modify or delete an existing one.
Note: you can only delete a category that has no tools. Note: you can only delete a category that has no tools.
#### GET, POST `/course/`
Get a list of courses, or post a new course to the database.
#### GET, PUT, DELETE `/course/[slug]/`
Get a specific course, modify or delete an existing one.
#### GET `/profile/` #### GET `/profile/`
Get a list of all profiles. Get a list of all profiles.
@ -200,6 +266,14 @@ Get a specific profile, or modify an existing one.
Here you can authorize users on tools or make them another lockout admin. Here you can authorize users on tools or make them another lockout admin.
#### GET, POST `/firmware/`
Get a version of the firmware, or post a new one to the database.
Select which group of tools to deploy the new firmware version to, then upload a firmware .bin file. The version number is extracted from the binary data and must be unique.
Updating firmware objects is not allowed. To assign a new tool to a firmware version, go through the tool object.
#### PUT `/update-cards/` #### PUT `/update-cards/`
Send a dictionary of username=card_number,card_number,card_number pairs to update any profiles already in the system. Users not already registered will be ignored. Send a dictionary of username=card_number,card_number,card_number pairs to update any profiles already in the system. Users not already registered will be ignored.

View File

@ -8,6 +8,7 @@
#define CARD_CHECK_LENGTH 2 #define CARD_CHECK_LENGTH 2
#define CARD_HEAD_BYTE 0x2 #define CARD_HEAD_BYTE 0x2
#define CARD_TAIL_BYTE 0x3 #define CARD_TAIL_BYTE 0x3
struct __attribute__((packed)) cardData { struct __attribute__((packed)) cardData {
char head; char head;
char data[CARD_DATA_LENGTH]; char data[CARD_DATA_LENGTH];

View File

@ -2,7 +2,7 @@
void processWifiState() void processWifiState()
{ {
switch(wifiState) { switch (wifiState) {
case WIFI_DISCONNECTED: case WIFI_DISCONNECTED:
commState = COMM_INIT; commState = COMM_INIT;