* Introduce utility method to look up drive props by drive name.
* Make /drive/create endpoint fetch file ending from properties data structure; update tests
- Have the get_scsi_ids() utility method return a dict, while adding occupied_ids. Leverage this to improve the logic for detecting which IDs are available to be reserved in the Web UI. (Which fixes a recent regression bug that's causing no IDs to be detected as available to be reserved.)
- Improve /scsi/attach endpoint logic to capture dynamic parameter fields now prefixed with "param_" (previous it scanned for any arbitrary field, which wasn't very accurate or secure)
- Added Product string to the block_size:512 CD-ROM device, so that it's obvious when it's being used.
- Tweaked test data for attach_device tests
* Moved rasctl/rascsi core code to folders
* Improved granularity in order to add more unit tests
* Pointer handling update
* Updated ID and controller handling
* Updated memory management
* Added unit tests
* Fixed SonarCloud issues
- class method to get arbitrary file contents
- new web UI endpoint to fetch the contents of rascsi man pages (rendered txt files)
- Link to manpage in page footer
- Link to new wiki page for image type docs
- Other UI tweaks
* Refine the attached device table to optimize information displayed
* Error handling when attempting to insert withough image file
* Format the parameters in the jinja template instead
* Call the DaynaPORT device Ethernet Adapter in the Web UI
* Read the drive properties file once and store it in the Flask app config. Spin out the drive properties formatting to a helper method.
* Add empty removable disk drives to the attach peripherals UI
* Refinement of UI labels and help text, moving some context to the wiki
Uses a single endpoint for downloading files
Adds a select field to pick target dir for both download and upload forms
Moves the Macproxy/Netatalk helptext into the helptext blocks, and the related status messages down into the page footer
new:
- new templates to render structured info contents in
- get_diskinfo() class method that calls disktype and returns the results
- /diskinfo endpoint in the Flask app that renders the results from get_diskinfo()
changed:
- /logs/show and /scsi/info endpoints in the Flask app render in templates
- Now using the "RaSCSI Reloaded Control Page" header to function as the link back to the homepage (instead of the github project) which is in line with how most webapps work
- Removed the center style for "Attached!" to allow the ? button to be placed on the same line
- Remove individual device info, and introduced show all device info in a template
* Generate list of image types to create programmatically based on rascsi capabilities, rather than a hard-coded list in the Web UI.
* Add explicit sorting of dicts for display in the Web UI, to avoid random order in certain environments.
* Remove redundant sorting line, and add code comments.
* Add helptext for the SCSI-1 image type