Update workflow/uploading_a_show.md

This commit is contained in:
Ken Fallon 2024-12-20 12:10:31 +00:00
parent 51bf445948
commit 90e6f7d26f

View File

@ -1,166 +1,166 @@
# Requesting a slot # Uploading a show
This process involves requesting a slot and verifying that the request is valid. This process involves requesting a slot and verifying that the request is valid.
[`calendar.php`](https://repo.anhonesthost.net/HPR/hpr_hub/src/branch/main/hub/calendar.php) → [`request.php`](https://repo.anhonesthost.net/HPR/hpr_hub/src/branch/main/hub/request.php) → [`request_confirm.php`](https://repo.anhonesthost.net/HPR/hpr_hub/src/branch/main/hub/request_confirm.php) → `email` → [`upload.php`](https://repo.anhonesthost.net/HPR/hpr_hub/src/branch/main/hub/upload.php) → [`upload_confirm.php`](https://repo.anhonesthost.net/HPR/hpr_hub/src/branch/main/hub/upload_confirm.php) → `email` [`calendar.php`](https://repo.anhonesthost.net/HPR/hpr_hub/src/branch/main/hub/calendar.php) → [`request.php`](https://repo.anhonesthost.net/HPR/hpr_hub/src/branch/main/hub/request.php) → [`request_confirm.php`](https://repo.anhonesthost.net/HPR/hpr_hub/src/branch/main/hub/request_confirm.php) → `email` → [`upload.php`](https://repo.anhonesthost.net/HPR/hpr_hub/src/branch/main/hub/upload.php) → [`upload_confirm.php`](https://repo.anhonesthost.net/HPR/hpr_hub/src/branch/main/hub/upload_confirm.php) → `email`
## Summary ## Summary
- The host has their show recorded and wishes to select a slot. - The host has their show recorded and wishes to select a slot.
- They go to https://hackerpublicradio.org/ and select the [⇧Upload⇧](https://hub.hackerpublicradio.org/calendar.php), which executes [calendar.php](https://repo.anhonesthost.net/HPR/hpr_hub/src/branch/main/hub/calendar.php). - They go to https://hackerpublicradio.org/ and select the [⇧Upload⇧](https://hub.hackerpublicradio.org/calendar.php), which executes [calendar.php](https://repo.anhonesthost.net/HPR/hpr_hub/src/branch/main/hub/calendar.php).
- The host selects a slot from [request.php](https://repo.anhonesthost.net/HPR/hpr_hub/src/branch/main/hub/request.php), which executes [request_confirm.php](https://repo.anhonesthost.net/HPR/hpr_hub/src/branch/main/hub/request_confirm.php). - The host selects a slot from [request.php](https://repo.anhonesthost.net/HPR/hpr_hub/src/branch/main/hub/request.php), which executes [request_confirm.php](https://repo.anhonesthost.net/HPR/hpr_hub/src/branch/main/hub/request_confirm.php).
- An email is sent to the host. - An email is sent to the host.
- The host clicks on the email link and is redirected to [upload.php](https://repo.anhonesthost.net/HPR/hpr_hub/src/branch/main/hub/upload.php). - The host clicks on the email link and is redirected to [upload.php](https://repo.anhonesthost.net/HPR/hpr_hub/src/branch/main/hub/upload.php).
- The host fills in the form which executes [upload_confirm.php](https://repo.anhonesthost.net/HPR/hpr_hub/src/branch/main/hub/upload_confirm.php). - The host fills in the form which executes [upload_confirm.php](https://repo.anhonesthost.net/HPR/hpr_hub/src/branch/main/hub/upload_confirm.php).
- The host receives a confirmation email. - The host receives a confirmation email.
## Sequence Diagram Requesting a slot ## Sequence Diagram Requesting a slot
```mermaid ```mermaid
sequenceDiagram sequenceDiagram
host->>HPR: Reserve Slot host->>HPR: Reserve Slot
HPR->>HPR: Remove any old stale requests HPR->>HPR: Remove any old stale requests
HPR->>HPR: Remove any requests from this IP older than 15min HPR->>HPR: Remove any requests from this IP older than 15min
HPR->>HPR: Check for existing upload from this IP HPR->>HPR: Check for existing upload from this IP
alt Existing Upload found alt Existing Upload found
HPR->>host: You already made a request for a show HPR->>host: You already made a request for a show
Note over host: 412 Precondition Failed Note over host: 412 Precondition Failed
end end
HPR->>HPR: Create a temporary entry for this host HPR->>HPR: Create a temporary entry for this host
HPR->>HPR: Check for excessive uploads HPR->>HPR: Check for excessive uploads
alt Excessive uploads found alt Excessive uploads found
HPR->>host: Uploads have temporarily been suspended HPR->>host: Uploads have temporarily been suspended
Note over host: 412 Precondition Failed Note over host: 412 Precondition Failed
end end
HPR->>HPR: Populate the list of posted shows HPR->>HPR: Populate the list of posted shows
HPR->>HPR: Validate provided ID HPR->>HPR: Validate provided ID
alt Invalid ID found alt Invalid ID found
HPR->>HPR: Log IP to naughty file. HPR->>HPR: Log IP to naughty file.
HPR->>host: 412 Precondition Failed HPR->>host: 412 Precondition Failed
Note over host: 412 Precondition Failed Note over host: 412 Precondition Failed
end end
HPR->>HPR: Generate webform of free slots HPR->>HPR: Generate webform of free slots
HPR->>HPR: Populate the list of posted shows HPR->>HPR: Populate the list of posted shows
HPR->>host: Webform HPR->>host: Webform
host->>HPR: show ID and email host->>HPR: show ID and email
loop Preform Checks loop Preform Checks
alt If check fails alt If check fails
HPR->>HPR: Log Error HPR->>HPR: Log Error
HPR->>host: 412 ${error_code} HPR->>host: 412 ${error_code}
else All checks passed else All checks passed
HPR-->>email: email upload url HPR-->>email: email upload url
email-->>host: email upload url email-->>host: email upload url
end end
end end
``` ```
## Checks in request.php and request_confirm.php ## Checks in request.php and request_confirm.php
| 412 Error Code | Check | | 412 Error Code | Check |
| --- | ------ | | --- | ------ |
| e015b7c89da03385a9156d3e5d2eb25d | The ID is not an integer | | e015b7c89da03385a9156d3e5d2eb25d | The ID is not an integer |
| 1493a07dec01a006d11bf43d2f17e5aa | The ID is negative | | 1493a07dec01a006d11bf43d2f17e5aa | The ID is negative |
| 79543dbb498ec47404aaed4d56bdc22b | Only one argument was allowed | | 79543dbb498ec47404aaed4d56bdc22b | Only one argument was allowed |
| f1f531c768f64404cb00437254b06d71 | The ID is too large | | f1f531c768f64404cb00437254b06d71 | The ID is too large |
| 2227263ac7171aca3214d155dec539ad | The ID is already allotted | | 2227263ac7171aca3214d155dec539ad | The ID is already allotted |
| 5971624889258aefb44e5f7bf8dffbd4 | We are under DDOS attack. | | 5971624889258aefb44e5f7bf8dffbd4 | We are under DDOS attack. |
| 19e9019c9615f755aec834000892ee9e | Wrong method used | | 19e9019c9615f755aec834000892ee9e | Wrong method used |
| 9bb147a251e8db132dafa93d98f8487f | Your hiding your IP Address | | 9bb147a251e8db132dafa93d98f8487f | Your hiding your IP Address |
| 02de1aef3b9490a417c39170d8f06028 | You did not use the web form | | 02de1aef3b9490a417c39170d8f06028 | You did not use the web form |
| 2162941738512bfdb1d21f288ee7cdb4 | You skipped the request page | | 2162941738512bfdb1d21f288ee7cdb4 | You skipped the request page |
| f0ad965f523b5c2ade071eb20d3618b5 | A breach in the space time continuum | | f0ad965f523b5c2ade071eb20d3618b5 | A breach in the space time continuum |
| 6570026fd11fc31ac0cada3e1dae4d0b | There is too long a time entering the form | | 6570026fd11fc31ac0cada3e1dae4d0b | There is too long a time entering the form |
| a32fbe5f0494eb7f34034b164739314d | Wrong date | | a32fbe5f0494eb7f34034b164739314d | Wrong date |
| 76eaa1a1556faeadfc14631c35b8590a | Missing an email address | | 76eaa1a1556faeadfc14631c35b8590a | Missing an email address |
| 8c307efe37146015a35e2d928c2c0f69 | Not a valid email | | 8c307efe37146015a35e2d928c2c0f69 | Not a valid email |
| 705f8e26e42a90b31075a110674b19ee | Not a valid date | | 705f8e26e42a90b31075a110674b19ee | Not a valid date |
| ad7f805c2f42be77122ec52f114fe318 | Date failed format check | | ad7f805c2f42be77122ec52f114fe318 | Date failed format check |
| 9424f7407b2fb83407760ad763286b53 | Episode Number is wrong | | 9424f7407b2fb83407760ad763286b53 | Episode Number is wrong |
| 59c7bff340d023773d987d71df545110 | Invalid date | | 59c7bff340d023773d987d71df545110 | Invalid date |
| 47d186ad8d5b21ec7d455477ea08b023 | Episode already exists | | 47d186ad8d5b21ec7d455477ea08b023 | Episode already exists |
| 7304801e8ce3b9096d28dbe1a0faa642 | Episode number is outside allowable window | | 7304801e8ce3b9096d28dbe1a0faa642 | Episode number is outside allowable window |
| 34c4259b45927da50ba5c49970f880a4 | Episode date is outside allowable window | | 34c4259b45927da50ba5c49970f880a4 | Episode date is outside allowable window |
| d0e113355b35f96945124d8e507759a0 | Problem finding the date and episode number | | d0e113355b35f96945124d8e507759a0 | Problem finding the date and episode number |
| 434cb53552ce1e2708e74a42f438028c | Problem mapping the date to the episode number | | 434cb53552ce1e2708e74a42f438028c | Problem mapping the date to the episode number |
| c7405e79b54f582e8db46c69ec4b0f24 | Problem writing to the database | | c7405e79b54f582e8db46c69ec4b0f24 | Problem writing to the database |
## Sequence Diagram uploading a show ## Sequence Diagram uploading a show
```mermaid ```mermaid
sequenceDiagram sequenceDiagram
host->>HPR: Host clicks on link from email host->>HPR: Host clicks on link from email
loop Preform Checks loop Preform Checks
alt If check fails alt If check fails
HPR->>HPR: Log Error HPR->>HPR: Log Error
HPR->>host: 412 ${error_code} HPR->>host: 412 ${error_code}
else All checks passed else All checks passed
HPR->>host: Webform HPR->>host: Webform
end end
end end
host->>HPR: Uploads show host->>HPR: Uploads show
loop Preform Checks loop Preform Checks
alt If check fails alt If check fails
HPR->>HPR: Log Error HPR->>HPR: Log Error
HPR->>host: 412 ${error_code} HPR->>host: 412 ${error_code}
else All checks passed else All checks passed
HPR-->>HPR: Save files HPR-->>HPR: Save files
HPR-->>email: Upload Confirmation HPR-->>email: Upload Confirmation
email-->>host: Upload Confirmation email-->>host: Upload Confirmation
end end
end end
``` ```
## Checks in upload.php ## Checks in upload.php
| 412 Error Code | Check | | 412 Error Code | Check |
| --- | ------ | | --- | ------ |
| 9a77e4ab24410cbf68a3a05ba97221e4 | Wrong method used | | 9a77e4ab24410cbf68a3a05ba97221e4 | Wrong method used |
| e8ac90fc2a8996e5fb7a83e73e636e80 | The format of the key is invalid | | e8ac90fc2a8996e5fb7a83e73e636e80 | The format of the key is invalid |
| 91432866e3c9c36a9c4884345d578761 | Could not find reservation in the Database | | 91432866e3c9c36a9c4884345d578761 | Could not find reservation in the Database |
| b019bd29c1fe5b756e4b620a5428f730 | The Database entry is missing fields | | b019bd29c1fe5b756e4b620a5428f730 | The Database entry is missing fields |
| 35a7f4e80ecba8284049e9d6261ae523 | Can't Delete entry from Database | | 35a7f4e80ecba8284049e9d6261ae523 | Can't Delete entry from Database |
| 066c518314f0d3b1ad3e4af60fcf36ce | Unable to remove temporary lock | | 066c518314f0d3b1ad3e4af60fcf36ce | Unable to remove temporary lock |
| 5cb513b590ab5859bf7603b79402a5cb | Could not find Host in Database | | 5cb513b590ab5859bf7603b79402a5cb | Could not find Host in Database |
## Checks in upload_confirm.php ## Checks in upload_confirm.php
| 412 Error Code | Check | | 412 Error Code | Check |
| --- | ------ | | --- | ------ |
| 88fe2bc11a90f9f9ab9bdcc8a82d7401 | We are under DDOS attack. | | 88fe2bc11a90f9f9ab9bdcc8a82d7401 | We are under DDOS attack. |
| 29e9019c9615f755aec834000892ee9e | Wrong method used | | 29e9019c9615f755aec834000892ee9e | Wrong method used |
| abb147a251e8db132dafa93d98f8487f | Your hiding your IP Address | | abb147a251e8db132dafa93d98f8487f | Your hiding your IP Address |
| 7a994999b40e3dc2e3eecfdc36a78d23 | Incorrect number of fields provided | | 7a994999b40e3dc2e3eecfdc36a78d23 | Incorrect number of fields provided |
| 2fb4c4e05f0e8f37a5b47565cfb863f5 | The format of the key is invalid | | 2fb4c4e05f0e8f37a5b47565cfb863f5 | The format of the key is invalid |
| 3162941738512bfdb1d21f288ee7cdb4 | Cant find reservation in the Database | | 3162941738512bfdb1d21f288ee7cdb4 | Cant find reservation in the Database |
| 457bf84c726d1cbbd381933e3a08b2ac | The email is missing from the Database | | 457bf84c726d1cbbd381933e3a08b2ac | The email is missing from the Database |
| 00ad965f523b5c2ade071eb20d3618b5 | The Timestamp is to old | | 00ad965f523b5c2ade071eb20d3618b5 | The Timestamp is to old |
| 7570026fd11fc31ac0cada3e1dae4d0b | The Timestamp is to young | | 7570026fd11fc31ac0cada3e1dae4d0b | The Timestamp is to young |
| 32831f22fb96d02ce819127d558d28a2 | The Title length is not OK | | 32831f22fb96d02ce819127d558d28a2 | The Title length is not OK |
| ecfcc4c12bf4319d412d66fd2e239249 | The Summary length is not OK | | ecfcc4c12bf4319d412d66fd2e239249 | The Summary length is not OK |
| a8345484b7a4ebad5af54937a3b2e26b | The Shownotes are missing | | a8345484b7a4ebad5af54937a3b2e26b | The Shownotes are missing |
| b5609bad7edd70d76d75652fb0592ec4 | The shownotes_format is not OK | | b5609bad7edd70d76d75652fb0592ec4 | The shownotes_format is not OK |
| 39cc8812b02607d613c6a7ba7e789f2c | The explicit flag is missing | | 39cc8812b02607d613c6a7ba7e789f2c | The explicit flag is missing |
| 198ab3b8af59ffba12c335239bde2876 | The explicit is not either Yes or Clean | | 198ab3b8af59ffba12c335239bde2876 | The explicit is not either Yes or Clean |
| 194c24ff7396901c0ccc42fb21344683 | The license length is incorrect | | 194c24ff7396901c0ccc42fb21344683 | The license length is incorrect |
| f5609bad7edd70d76d75652fb0592ec4 | The license is not a valid value | | f5609bad7edd70d76d75652fb0592ec4 | The license is not a valid value |
| 5860799406a323209b902d5104fe7bae | The Notes are greater than max 40000 | | 5860799406a323209b902d5104fe7bae | The Notes are greater than max 40000 |
| f1c83b57821d562f66246d975ef28994 | The Series number is incorrect | | f1c83b57821d562f66246d975ef28994 | The Series number is incorrect |
| 27457bada69cbc352af762bdf649e905 | The Series has not been found | | 27457bada69cbc352af762bdf649e905 | The Series has not been found |
| 49a69b565acecf9d2a96aacc73aec5aa | The Tags are not the correct length | | 49a69b565acecf9d2a96aacc73aec5aa | The Tags are not the correct length |
| 626eae845e0a448be0544775ab5e4dc4 | The host_name is not set or is not the correct length | | 626eae845e0a448be0544775ab5e4dc4 | The host_name is not set or is not the correct length |
| f69ec5999e0a02def5a110489401347f | The host_profile is not the correct length | | f69ec5999e0a02def5a110489401347f | The host_profile is not the correct length |
| f2816b32e97be090a96ceabdc9230c9c | The host_license is not in the correct range | | f2816b32e97be090a96ceabdc9230c9c | The host_license is not in the correct range |
| 978a18fa8558f3180897429e63d6ae55 | The host_license is not a predfined value | | 978a18fa8558f3180897429e63d6ae55 | The host_license is not a predfined value |
| 277dc98d43e7840d9f296cce1bc3ec2c | The hostid is missing or is set to 0 | | 277dc98d43e7840d9f296cce1bc3ec2c | The hostid is missing or is set to 0 |
| 93fcc22d0c5ee3fac35e6d658db76059 | Could not get the MAX(hostid) from the Database | | 93fcc22d0c5ee3fac35e6d658db76059 | Could not get the MAX(hostid) from the Database |
| a0f6cae871b85cb66f85d7ed5e91d1bb | The host id is not an int, or is not in the correct range | | a0f6cae871b85cb66f85d7ed5e91d1bb | The host id is not an int, or is not in the correct range |
| 6d4f180c49ff9b9154bd80070ec2c1f3 | The url is not set or is not the correct length | | 6d4f180c49ff9b9154bd80070ec2c1f3 | The url is not set or is not the correct length |
| 9c307efe37146015a35e2d928c2c0f69 | The url has been altered | | 9c307efe37146015a35e2d928c2c0f69 | The url has been altered |
| d4250c369bd81b27cdc53d0d53321ecd | The upload dir already exists | | d4250c369bd81b27cdc53d0d53321ecd | The upload dir already exists |
| 804c4be123ca0327840b76bf4f8eb19e | Unable to create upload dir | | 804c4be123ca0327840b76bf4f8eb19e | Unable to create upload dir |
| 33370d1c5c19a6ca4ef3f3ce59158e57 | The shownotes txt file already exists | | 33370d1c5c19a6ca4ef3f3ce59158e57 | The shownotes txt file already exists |
| 85c8df74d172794c49233c1a94c299fd | The shownotes json file already exists | | 85c8df74d172794c49233c1a94c299fd | The shownotes json file already exists |
| a1534e6d525352dce7183a2e22862049 | The dir_structure is missing after write | | a1534e6d525352dce7183a2e22862049 | The dir_structure is missing after write |
| ab8051b531c120b8bffd2a5b25a19cc3 | The shownotes.txt is missing after write | | ab8051b531c120b8bffd2a5b25a19cc3 | The shownotes.txt is missing after write |
| 3eb02d6b9ea801d4c5909b4fac0ccd96 | The shownotes.json is missing after write | | 3eb02d6b9ea801d4c5909b4fac0ccd96 | The shownotes.json is missing after write |
| c1381f1d2492f81074d8cb70c85f5fc8 | The host photo, has too long type | | c1381f1d2492f81074d8cb70c85f5fc8 | The host photo, has too long type |
| 76ec33229ca023336a2b1c649b0491f5 | Could not update Database | | 76ec33229ca023336a2b1c649b0491f5 | Could not update Database |