Commit Graph

228 Commits

Author SHA1 Message Date
nucleogenic
0128660d40
Disabled auth improvements (#1029)
* Improve styling support when web authentication disabled, fix issue #1017

* Fix sudo PATH issue in Docker web container (allows easyinstall.sh to call commands in sbin)

* Fix logout button icon flicker/reload on resize
2022-12-11 03:31:37 +00:00
Daniel Markstedt
ce6bc79b2c
Post rebranding tweaks to web ui (#1027)
- Add a label to system name, and modify the style sheet to hide it in the modern theme
- Restore the Control Page subtitle, and hide it on small screens
- Tweak some wordings and help text
2022-12-09 20:34:46 -08:00
Daniel Markstedt
52c2aa474f
Rebrand project to PiSCSI (#1016)
* Rebrand project to PiSCSI
- rascsi ->piscsi
- rasctl -> scsictl
- rasdump -> scsidump
- ras* -> piscsi* (rasutil -> piscsi_util, etc.)

* Refined the formatting and wording of the app startup banner
* Kept some references to rascsi and rasctl where backwards compatibility is concerned
* Point to the new github repo URL

Co-authored-by: nucleogenic <nr@nucleogenic.com>
Co-authored-by: Uwe Seimet <Uwe.Seimet@seimet.de>
2022-12-05 09:58:23 -08:00
nucleogenic
88ff542aeb
Run web API test suite in GitHub Actions (#1009)
- Fixed ignore patterns in .dockerignore
- Added healthchecks to backend and web containers
- Reduced Docker image sizes
- Removed RaSCSI references in various areas (e.g. rascsi -> backend)
- Added compilation-only step to easyinstall.sh
- Moved apt package lists to variables
- Revert to triggering GitHub Actions runs on push
- Updated web/frontend_checks workflow to run black and flake8 against all Python sources
- Capture log files from backend/web containers
- Fix None to float conversion bug when user agent is absent or unrecognised
2022-12-04 14:31:57 +00:00
nucleogenic
315ef9f248
Auto-format Python sources with black, fix all issues reported by flake8 (#1010)
* Update config for black and flake8
* Auto-format Python sources with black
* Fix issues reported by flake8
* Exclude protobuf files from black
* Address formatting feedback
2022-11-30 05:19:17 +00:00
Daniel Markstedt
5afc6b911f
Remove Jinja extentions that are now built in (#1008) 2022-11-28 13:05:19 -08:00
dependabot[bot]
dd94dd8c85
Bump pillow from 9.0.1 to 9.3.0 in /python/ctrlboard (#1005)
* Bump pillow from 9.0.1 to 9.3.0 in /python/ctrlboard

Bumps [pillow](https://github.com/python-pillow/Pillow) from 9.0.1 to 9.3.0.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/9.0.1...9.3.0)

---
updated-dependencies:
- dependency-name: pillow
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-24 09:28:09 -08:00
Daniel Markstedt
88b5a1d314
OLED: Refresh network state regularly (#1002)
- counter for refreshing network status, currently set at 10 ticks (10s with the default refresh interval)
- adding a --refresh_interval option to control the overall screen refresh rate, keeping 1000ms as the default
- Restore a 'No Media' status message for RM devices that was lost with the last PR
2022-11-23 22:27:10 -08:00
Daniel Markstedt
0d95890887
Get and set pretty hostname to use as system name in Web UI (#997)
- Display the pretty hostname as system name in header
- Move IP and hostname down to the footer
- New endpoint for setting the pretty hostname, plus form field in the Web UI
- (unrelated) Use platform.uname() instead of shell uname
- (unrelated) Better logic for fetching the Mac HD Drivers zip file in easyinstall.sh
2022-11-20 10:20:32 -08:00
Daniel Markstedt
2645656199
Refactor line rendering logic, and add support for conditional displaying of LUN; Made some variables more generic, not explicitly RaSCSI. (#999) 2022-11-20 10:15:59 -08:00
Daniel Markstedt
4afb11d3dd
Shutdown splash for the OLED script; restore non-Latin transliteration; other refactoring (#991)
- Bring back the shutdown splash, with the tweak that is blanks out after 700ms
- Restore the non-Latin transliteration originally from https://github.com/akuker/RASCSI/pull/449 which was lost when the `common` package was introduced
- Bump to the latest libraries, while removing implicit dependencies from requirements.txt
- Shorter duration of the startup splash
- Reintroduce shell shutdown/reboot methods for use with the Web UI. This addresses https://github.com/akuker/RASCSI/issues/538 (the ctrlboard client will continue to use the built-in rascsi system calls which are slightly faster)
- Remove overt references to RPi. This addresses https://github.com/akuker/RASCSI/issues/990
- Other refactorings
2022-11-17 16:21:18 -08:00
Daniel Markstedt
4645e8c975
Display hardware info in footer; close open file handlers; better error handling (#989)
* Expose hardware info in env string

* Improve error handling for get_properties_by_drive_name

* Verbose uname parameters.

* Close open file in introspect method

* Add error handling for when no drive name was matched with props in the database
2022-11-15 22:28:27 -08:00
nucleogenic
3627b39af4
New theme for web UI (#957)
* Docker environment fixes

* New theme for web UI

* Apply breaking wrap to filenames only

* Reduce font sizes, whitespace and padding

* Right align action fields/buttons

* Improve mobile header, hide superfluous UI elements when logged out, drop placeholders from login labels, various other adjustments

* Force footer to bottom of screen

* Show manual link to logged out users

* Reduce header text size on desktop

* Fix incorrect selector ID

* Fix selector referencing old class name

* Fix right-aligned message when images table empty

* Add CSS linter/auto-formatter

* Run Stylelint + Prettier against modern theme CSS

* Select default theme based on browser’s user agent

* Style inputs on mobile/tablet devices

* Fixes for Safari 14 on iOS + iPad OS

* Explicitly define mobile browser support, switch to bare ua-parser without user-agent wrapper

* Add LICENSE file for modern theme icons

* Improve theme selection query string/field naming.

* Remove patch workaround from Docker build

* Update log level for UAs to info

* Move Bootstrap Reboot CSS to CDN

* Account for LUN column in attached devices table

* Prevent wrapping of config forms on small viewports

* Fix Stylelint issues

* Auto-format CSS with Prettier
2022-11-14 09:32:15 -08:00
Daniel Markstedt
85edd50047
Partition and format HFS/FAT volumes in the Web UI + SMB install (#946)
- New "format as" option when creating new images; removing the image creation options from easyinstall
- Bring in HFSer as new submodule providing the driver binaries; removing the Lido driver binary from this repo
- Add SpeedTools driver option
- Point to github mirror of hfdisk, since the original git server is down
- While rearranging the easyinstall options, moved the CtrlBoard option up to the main section
- Add an easyinstall script to configure Samba, while consolidating file sharing with Netatalk
2022-11-01 16:43:24 -07:00
Daniel Markstedt
4b109a70b0
Improve Web UI integration tests (#939)
* Remove deprecated critital log level from test

* Move drive_properties back into template data sets

* Move properties data integrity checks to test code

* Streamline the drive formatting logic
2022-10-25 08:51:04 -07:00
Daniel Markstedt
8ec5b53b28
Bump the Web UI requests lib to 2.28.1 (#938) 2022-10-24 12:53:50 -07:00
Daniel Markstedt
1da3caf568
Bump to the latest bjoern/Flask/Jinja2; click/itsdangerous/MarkupSafe are implicit dependencies of the above so removing explicit requirements. (#935) 2022-10-24 11:50:35 -07:00
dependabot[bot]
db2c542c97
Bump protobuf from 3.20.1 to 3.20.2 in /python/web (#933)
* Bump protobuf from 3.20.1 to 3.20.2 in /python/web

Bumps [protobuf](https://github.com/protocolbuffers/protobuf) from 3.20.1 to 3.20.2.
- [Release notes](https://github.com/protocolbuffers/protobuf/releases)
- [Changelog](https://github.com/protocolbuffers/protobuf/blob/main/generate_changelog.py)
- [Commits](https://github.com/protocolbuffers/protobuf/compare/v3.20.1...v3.20.2)

---
updated-dependencies:
- dependency-name: protobuf
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-23 19:06:23 -07:00
Daniel Markstedt
5172d167e7
Web UI: More file path sanitation, better network bridge warnings, each endpoint return one message (#932)
- Sanitize file paths with Path: for flat file structures, always extract Path().name, and for nested file structures either look for absolute paths, or someone trying to use ".." to traverse the dir strucutre.
- Reduce redundancy in network bridge detection method, and return somewhat more informative messages
- Make all endpoints return exactly one message
- Move some warning messages to logging
- Use tempfile for iso generation temp file handling
2022-10-23 19:05:29 -07:00
Daniel Markstedt
e3e833b4d2
Fix one case of Path object conversion that was missed during the refactoring (#929) 2022-10-22 08:01:08 -07:00
Daniel Markstedt
efd40ceab2 Descriptive names for file transfer target dirs 2022-10-19 19:31:59 -07:00
Daniel Markstedt
aed793001d Change locale fallback to info logging 2022-10-14 19:39:32 -07:00
nucleogenic
6514e24770
Docker container for Pytest (#901)
* Dockerize Pytest

* Fix auto-delete warning in delete file test

* Allow tests to be executed with a non-default home dir

* Use hostname for Docker container only if tests executed in Docker

* Update container entrypoint to pytest

* Re-format tests with black

* Define if the execution environment is a Docker container in env fixture

* Skip unsupported host bridge attachment test in Docker
2022-10-14 19:30:08 -07:00
Daniel Markstedt
a8ac6a06cf
Fix a web UI integration test (#912)
Fix an integration test that hadn't been updated after the refactoring
2022-10-14 09:12:57 -07:00
Daniel Markstedt
5a679509a1
More refactoring of Python code to address Sonar issues (#906)
- Use Path objects for file operations
- Use urllib to sanitize URLs
- Some explicit type conversions
- Consistent regex syntax
- Add rudimentary logging when archive extraction caching fails
- Fixed two cases of the property file creation not being notified in the Flash message
- added doctype and html lang attribute to the web server 502 page
2022-10-12 12:59:01 -07:00
n4al
d6153e9647
Updating Spanish translation (#902)
* Updating Spanish translation

* Removing unused translations
2022-10-10 08:54:27 -07:00
Daniel Markstedt
e8c3deea2f Update translations 2022-10-09 16:18:17 -07:00
Daniel Markstedt
1b10b123d2
Refactor python code to address Sonarcloud issues (#900)
- copy/move/delete file class methods now take Path objects as arguments
- The file download endpoint in the Web UI uses the safer download from dir method
- Simplified logging
- Merged nested if statements
- Removed naked handling of unknown error states
- Added fallback empty list for drive_properties, to avoid errors when json file is missing or broken
- Move drive_properties to env[]
- Constants for common error messages
- Dummy variable for list comprehension
2022-10-09 13:50:20 -07:00
Daniel Markstedt
62e287c96d
Remove redundant help text, table columns and parameters from the Web UI (#898)
- Remove the Size option from the Drives page, since we offer custom sizes with Drive profiles now in the Create Image form
- Fetch size from drive props data structure rather than the web form
- Remove a range of redundant / obvious help text to reduce UI clutter and emphasize the important help text
- Remove the Size column from the CD-ROM drives table since it's always N/A
- Merge the two Logging related sections, and the two Create Image related sections (semantically associated)
2022-10-07 19:55:53 -07:00
Daniel Markstedt
d1a703418c
Address Sonarcloud issues for the html code; improve on css styles (#892)
Refactor and clean up code to conform to SonarCloud static analysis, improve readability and semantics.
- Add labels for each form input, and tweak placeholder text accordingly.
- Move CSS styles to the stylesheet; minor tweaks for clarity and consistency
- Use the legacy align=center attribute for centering paragraphs (backwards compatible)
- Remove all instances of using tables for layout
- Add header tags to all remaining tables, with scope parameters.
- Add descriptions to each table
- Move drive reference hyperlinks to the drive name column (addresses "same link text leads to different URL" code smell.)
- Inject lang parameters to each html tag
- Standardize on h2 tags as top header for each template
- Add 'json' to config file UI elements, to communicate actual file name/format
- Clean up indentation
- Dropbox styling: Added a colored outline, added padding to more clearly communicate its function. Hid the (X) SVG that indicates failure, since failure is already communicated by the error text. Also, the SVG always obstructed the file name or error so was quite counter-productive.
2022-10-07 13:13:29 -07:00
Daniel Markstedt
90ace5fd53
Introduce utility method to look up drive props by drive name. (#888)
* Introduce utility method to look up drive props by drive name.

* Make /drive/create endpoint fetch file ending from properties data structure; update tests
2022-10-06 14:04:41 -07:00
Daniel Markstedt
52ebb3a2ae
Improve the logic and data structure for SCSI ID management in Web UI (#893)
- 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
2022-10-06 10:00:57 -07:00
Daniel Markstedt
52259c374f
Improve the logic for checking the network bridge configuration (#894)
* Improve the logic for checking the network bridge configuration
2022-10-05 14:14:48 -07:00
Daniel Markstedt
0e4d42f04c
Use man2html to generate man pages in the Web UI (#887)
* Use man2html to generate man pages in the web UI

* Fix tests
2022-10-04 06:38:15 -07:00
Daniel Markstedt
dcb4b33f2e
Add capabilities to get and render manpage output in the Web UI (#881)
- 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
2022-10-03 12:46:18 -07:00
Daniel Markstedt
fd47411322
Device table refinement in Web UI (#884)
* 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
2022-10-03 11:47:08 -07:00
Daniel Markstedt
2dae021cdd
Merge pull request #883 from akuker/rdmark-generalize-properties
Allow for generating properties files in the Create Image UI
2022-10-02 09:49:49 -07:00
Daniel Markstedt
5e4fa38051
Add missing watchdog requirement (#880) 2022-10-02 15:30:28 +02:00
Daniel Markstedt
c07e1a8ede Allow for generating properties files in the Create Image UI 2022-10-01 19:56:19 -07:00
Daniel Markstedt
d969fbdcce
Attach empty removable drives in the Web UI (#877)
* 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
2022-10-01 16:51:30 -07:00
Daniel Markstedt
78bab77f4b
Swedish localization update 2022-09 (#874)
* Swedish localization updates

* Use LUN for compactness
2022-09-30 21:20:19 -05:00
Daniel Markstedt
3c8e7dbef0
Allow the selecting of target dir when uploading or downloading files (#867)
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
2022-09-27 17:38:34 -07:00
nucleogenic
70c073e928
Display a warning when Pytest fixtures fail to delete a file 2022-09-27 15:39:58 +01:00
Daniel Markstedt
5da3d6c24b
Introduce info.html template and use it to render detailed info (#863)
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
2022-09-26 17:44:41 -07:00
Daniel Markstedt
edbaaf645d
Web UI tweaks: Detaching removable devices; SCSI-1 drive profiles (#854)
* Display the Detach action for injected removable media

* Flag three DEC drives as SCSI-1
2022-09-25 17:37:28 -07:00
nucleogenic
75b0994b77
Add missing asserts to API tests 2022-09-26 00:00:20 +01:00
nucleogenic
a142af571d
Improve organisation of tests 2022-09-26 00:00:20 +01:00
nucleogenic
6f7e611aa1
Add missing dev dependency flake8 2022-09-26 00:00:19 +01:00
nucleogenic
f8e58708aa
Update comments 2022-09-26 00:00:19 +01:00
nucleogenic
663de0631e
Added tests for extracting .sit and .7z archive formats 2022-09-26 00:00:19 +01:00
nucleogenic
65c2286ffe
Fix shell exit issue in web/start.sh 2022-09-26 00:00:19 +01:00
nucleogenic
8062e5f5d7
Updates to allow tests to run against a remote RaSCSI instance 2022-09-26 00:00:19 +01:00
nucleogenic
1a15c4c648
Expose env info to API clients 2022-09-26 00:00:19 +01:00
nucleogenic
0e6147e0bb
Setup pytest, flake8, black + add API tests 2022-09-26 00:00:18 +01:00
nucleogenic
dd40d7156a
Fix issue causing stale reservations after loading a config 2022-09-26 00:00:18 +01:00
nucleogenic
fb8f306005
Implement response generator for HTML and JSON requests
Supporting updates to web.py and templates
2022-09-26 00:00:18 +01:00
nucleogenic
1e9a7d2283
Move flattening of file type lists to template layer 2022-09-25 23:58:07 +01:00
nucleogenic
4ef2e20b4f
Update get_supported_locales to return a JSON serializable result 2022-09-25 23:58:07 +01:00
nucleogenic
edf65a8768
Update RaCtlCmds methods to return JSON serializable results 2022-09-25 23:58:07 +01:00
Daniel Markstedt
12b61ada84
Consistently use SI-compliant notation for file sizes (B/KiB/MiB/GiB/TiB) where appropriate. (#855) 2022-09-25 16:37:36 -05:00
dependabot[bot]
e513af694b
Bump protobuf from 3.19.3 to 3.19.5 in /python/common (#856)
* Bump protobuf from 3.19.3 to 3.19.5 in /python/common

Bumps [protobuf](https://github.com/protocolbuffers/protobuf) from 3.19.3 to 3.19.5.
- [Release notes](https://github.com/protocolbuffers/protobuf/releases)
- [Changelog](https://github.com/protocolbuffers/protobuf/blob/main/generate_changelog.py)
- [Commits](https://github.com/protocolbuffers/protobuf/compare/v3.19.3...v3.19.5)
2022-09-25 10:51:05 -07:00
dependabot[bot]
37ee5cd47f
Bump protobuf from 3.19.3 to 3.19.5 in /python/ctrlboard (#858)
* Bump protobuf from 3.19.3 to 3.19.5 in /python/ctrlboard

Bumps [protobuf](https://github.com/protocolbuffers/protobuf) from 3.19.3 to 3.19.5.
- [Release notes](https://github.com/protocolbuffers/protobuf/releases)
- [Changelog](https://github.com/protocolbuffers/protobuf/blob/main/generate_changelog.py)
- [Commits](https://github.com/protocolbuffers/protobuf/compare/v3.19.3...v3.19.5)
2022-09-25 10:49:53 -07:00
dependabot[bot]
d642b49bf6
Bump protobuf from 3.19.1 to 3.19.5 in /python/oled (#857)
* Bump protobuf from 3.19.1 to 3.19.5 in /python/oled

Bumps [protobuf](https://github.com/protocolbuffers/protobuf) from 3.19.1 to 3.19.5.
- [Release notes](https://github.com/protocolbuffers/protobuf/releases)
- [Changelog](https://github.com/protocolbuffers/protobuf/blob/main/generate_changelog.py)
- [Commits](https://github.com/protocolbuffers/protobuf/compare/v3.19.1...v3.19.5)
2022-09-25 10:47:33 -07:00
Daniel Markstedt
e7775a72cc
Generate list of image types to create programmatically in the Web UI (#850)
* 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
2022-09-21 17:14:53 -07:00
nucleogenic
882e567f2c
Merge pull request #819 from nucleogenic/docker-dev-environment
Docker environment for development and testing
2022-09-08 12:57:48 +01:00
nucleogenic
673da6312b
Add Docker environment for development and testing of the web UI
Add --token parameter to easyinstall.sh

Add --skip-token parameter to easyinstall.sh

Install required apt packages explicitly (--no-install-recommends)

Allow standalone RaSCSI and web UI installations to specify an auth token

Add development mode to web UI (web/start.sh --dev-mode)

Initial Docker-based development environment for Python and web UI

Bump protobuf version

Workaround for Flask development server and asyncio incompatibility

Build Python protobuf interface on container launch, if it doesn’t exist

Allow containers to be configured with environment variables, add support for token authentication

Move web UI live editing setup out of main Docker Compose config

Update dockerignore to exclude by default

Update README

Add OS_DISTRO, OS_VERSION and OS_ARCH build args

Allow extracted files to be moved to target when crossing a filesystem boundary

Reduce noise from watchmedo auto-restarts

Update Docker tag structure to rascsi:{build}-{platform}-{variant}

Prevent Docker Compose from attempting to pull images from Docker registry

Add workaround for issue #821

Allow container processes to be stopped with Ctrl+C

Update README, bind to ports 8080/8443 on the Docker host by default

Update README to clarify audience and no board connectivity

Add AIBOM and GAMERNIUM to --connect_type validation

Update cfilesystem.patch following rebase
2022-09-08 12:19:30 +01:00
n4al
e7004e4ea9
Updating the Spanish translation (#839) 2022-09-07 21:43:15 -05:00
nucleogenic
8c7ab75835
Update web UI following SASI removal; clean up references to SAHD in Python sources 2022-09-03 17:43:51 +01:00
Uwe Seimet
ddeede2beb
SASI code removal, error handling update, bug fixes, code cleanup (#806)
Summary ov most important changes triggered by the SASI code removal:

- Removed the SASI controller code
- New controller management. There is a new controller base class AbstractController and a class ControllerManager managing the controller lifecycle. The lifecycle management was removed from rasci.cpp and is covered by unit tests.
- New device management. The DeviceFactory manages the device lifecycle instead of rascsi.cpp. The new code is covered by unit tests.
- The lifecycle managment uses C++ collections with variable size instead of arrays with hard-coded sizes.
- The ScsiController method contains most of what was previously contained in scsidev_ctrl.cpp plus the code from sasidev_ctrl.cpp that was relevant for SCSI.
- scsi_command_util contains helper methods used for identical SCSI command implementations of more than one device
- Devices know their controllers, so that the controller instance does not need to be passed to each SCSI command. This change helps to decouple the devices from the controller. The phase_handler interface is also part of this decoupling.
- Use scsi_command_exception for propagating SCSI command execution errors, This resolves issues with the previous error handling, which was based on return values and often on magic numbers.
- Removed legacy SCSI error codes, all errors are now encoded by sense_key::, asc:: and status::.
- Fixed various warnings reported with -Wextra, -Weffc++ and -Wpedantic.
- Use constructor member initialization lists (recommended for ISO C++)
- Consistently use new/delete instead of malloc/free (recommended for ISO C++), resulting in better type safety and error handling
- Replaced variable sized arrays on the stack (violates ISO C++ and can cause a stack overflow)
- Replaced NULL by nullptr (recommended for C++), resulting in better type safety
- Use more const member functions in order to avoid side effects
- The format device page can now also be changed for hard disk drives (Fujitsu M2624S supports this, for instance), not just for MOs.
- Better encapsulation, updated access specifiers in many places
- Removed unused methods and method arguments
- Fixed a number of TODOs
- Added/updated unit tests for a lot of non-legacy classes
- Makefile support for creating HTML coverage reports with lcov/genhtml
2022-09-03 16:53:53 +02:00
Daniel Markstedt
2411afb2c4
Remove file extension validation in upload form (#826)
* Remove file extension validation in upload form. Improve on the related help text.

* Split up image and archive file suffixes.
2022-09-03 09:14:13 +02:00
Daniel Markstedt
41ddc5fc33
Allow custom drive sizes in bespoke UI; other sundry improvements (#813)
* Allow custom drive image sizes in the bespoke UI. Addresses Issue#748

* Clarify what the Pi repo mirror setup is good for.

* Use the number input type for rudimentary input validation.

* Append byte unit.

* More granular input validation using html5 attributes. Max allowed input is 256GiB in bytes.

* Correct use of html5 number input elements.
2022-08-27 20:38:23 -05:00
Daniel Markstedt
aeb6576996
Add drive property for a generic 512 byte block size CD-ROM drive. Issue#417 (#808) 2022-08-25 20:04:49 -05:00
Daniel Markstedt
4a870a137c
Swedish localization update for the next 2208 release (#798)
* Update Swedish localization for the 2208 release

* Fix typo
2022-08-25 19:59:18 -05:00
Daniel Markstedt
9302955416
Add concrete instructions on how to contribute code. (#797)
* Add concrete instructions on how to contribute code.

* Document the Python interpreter support policy

* Clarify contribution guidelines
2022-08-25 19:57:44 -05:00
nucleogenic
4f36fab55f
Fix Python 3.7 compatibility (#800) 2022-08-23 03:24:08 +01:00
Daniel Markstedt
161bd32ba7
Merge pull request #789 from nucleogenic/webui-add-extra-archive-format-support
Allow images to be extracted from StuffIt, tarball, gzip, and 7z
2022-08-19 10:56:39 -07:00
nucleogenic
b5e6438a45
Allow images to be extracted from StuffIt, tarball, gzip, and 7z archives 2022-08-12 04:19:02 +01:00
Daniel Markstedt
8cd50da2d3
Fixes to README and easyinstall text (#787)
* Update web README to point to the right dir and url

* Notify that an ssl cert is being created.

* Document the de-facto release number strategy of this project.

Co-authored-by: RaSCSI User <user@rascsi.com>
2022-08-05 09:30:20 -05:00
nucleogenic
078d0fc99f
Fix error preventing ReturnCodeMapper using payloads without parameters, formatting to avoid wrapping of messages 2022-08-05 00:37:29 +01:00
nucleogenic
0a17633de3
Add HTTPS support to web UI 2022-08-01 16:09:01 +01:00
nucleogenic
7a18939171
Add support for --log-level argument to web UI (#781)
Increase verbosity of web UI log format

Add critical to supported log levels for completeness
2022-07-31 19:02:14 -05:00
Daniel Markstedt
23f2633a77
Swedish localization for 2207 (#778)
* Update Swedish localizations

* Fix error
2022-07-30 22:09:48 -05:00
nucleogenic
ca918818bf
Fix unescaped shell arguments 2022-07-30 21:01:22 +01:00
Daniel Markstedt
956b4bcf0b
Merge pull request #767 from akuker/dependabot/pip/python/ctrlboard/pillow-9.0.1
Bump pillow from 9.0.0 to 9.0.1 in /python/ctrlboard
2022-07-29 08:27:42 -07:00
Daniel Markstedt
e51517ca60
Rebrand to RaSCSI Reloaded in key places in the code (#772)
* Add Reloaded to readme

* Add Reloaded to prominent places in the web app

* Add Reloaded to the rascsi startup message
2022-07-26 10:20:50 -05:00
nucleogenic
dc1414ba71
Add RASCSI host and port arguments to web/start.sh (#771)
* Fix data type of --rascsi-port argument

* Add support for --rascsi-host and --rascsi-port arguments

* Add short parameter names, increase specificity of web port parameter
2022-07-25 21:47:11 -07:00
Daniel Markstedt
94c98b4577
Merge pull request #768 from philenotfound/master
In case all IDs are reserved recommend 0
2022-06-30 22:50:14 -07:00
Phil Eichinger
a33a228b6b In case all IDs are reserved recommend 0
Otherwise the occupied list is empty and this exception brings down the
whole web interface.

This can be easily provoked by just reserving all IDs in the web interface.
2022-06-30 23:17:55 +02:00
dependabot[bot]
da0f9527cc
Bump pillow from 9.0.0 to 9.0.1 in /python/ctrlboard
Bumps [pillow](https://github.com/python-pillow/Pillow) from 9.0.0 to 9.0.1.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/9.0.0...9.0.1)

---
updated-dependencies:
- dependency-name: pillow
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-28 23:21:12 +00:00
Daniel Markstedt
6397d9c9a3
Add a Copy image file flow to the Web UI. (#760)
* Add a Copy image file flow to the Web UI.

* Introduce a generic file creation message and use that consistently.

* Clarify code comment
2022-06-14 21:03:56 -05:00
Kamel Makhloufi
2ae4e1c078 Updated french translation 2022-05-07 17:31:29 +02:00
Christian Victor
5fcbaa671c German translation fix 2022-05-06 20:25:01 +02:00
n4al
a7a0a3a3d4 Updated translation for malformatted string 2022-05-03 09:43:23 +02:00
Daniel Markstedt
a1a2e6089b
Fix a malformatted gettext string, and update the localization README (#758)
* Fix a gettext marked string that has one too many parantheses around it, excluding it from translations. Also, clean up layout around it.

* Add Swedish translation for the above.

* More explicit localization steps in the README to avoid recurring mistakes.
2022-05-02 14:42:09 -05:00
Daniel Markstedt
aa1f3b02e3
Make the ip and hostname show up on the Drive page as well. (#759) 2022-05-02 14:41:11 -05:00
n4al
1458e9bd18 Fix for mistranslation of DaynaPORT SCSI/Link 2022-05-01 18:42:37 +02:00
n4al
47711e734e
Updating Spanish translation of the Web UI (#756)
* Updating Spanish translation of the Web UI

* Updating Spanish translation of the Web UI without lazy option
2022-05-01 07:50:11 -07:00
Kamel Makhloufi
a1435415ae Updated french translation 2022-04-26 17:38:29 +02:00
cvictor
a684aa65ad
Updated german translation (#751)
* Updated german translation

* Removed obsolete german translations
2022-04-18 16:45:43 +02:00
Daniel Markstedt
2b5763d40c
Swedish localization for April release (#749)
* Update Swedish localization for the April release.

* Translate two more strings.
2022-04-16 11:15:06 -05:00
dependabot[bot]
8f90ce4649
Bump pillow from 9.0.0 to 9.0.1 in /python/oled (#733)
* Generated .STEP file for RaSCSI

* Added STEP file and updated symbol and 3d model references to reference the correct gender of parts. Should be no functional change

* Added STEP file and updated symbol and 3d model references to reference the correct gender of parts. Should be no functional change

* Added 3D models and correct footprints for STEP file

* Merge version 20.12.0 into the master branch (#75)

* Update README.md

Added reference to gitflow

* Updated to match new versioning structure (#73)

* Updated to match new versioning structure

* fix version number

Co-authored-by: Tony Kuker <akuker@gmail.com>

* Scsimon improvements (#74)

* Updated scsimon to save data on a nano-second time scale, instead of micro-second

* Cleanup error messages and data types

Co-authored-by: Tony Kuker <akuker@gmail.com>

* Updated for new version number

* Change reported version back to development build

Co-authored-by: Tony Kuker <akuker@gmail.com>

* Set theme jekyll-theme-midnight

* Set theme jekyll-theme-dinky

* Create CNAME

* Delete CNAME

* Update version number

* RaSCSI hardware version 2.4 (#94)

* First attempt at adding 2.5 inch drive connector

* Clean up silkscreen and fix DRC issues

* additional cleanup. Made Pin 1 of the PB connector square

* minor tweaks

* Updates for ordered version

* Generate step file and schematic pdf

* First draft of powerbook drive bracket

* Added side holes and hole for MIPI connector

* Additional updates to the powerbook 3d printed bracket

* Moved RaSCSI board 1mm in + lots of cleanup

* Added optional floppy power connector. As-ordered version 2.4a

* Added optional floppy power connector. As-ordered version 2.4a

Co-authored-by: Tony <akuker@gmail.com>

* Bump pillow from 8.1.2 to 8.2.0 in /src/oled_monitor (#108)

Bumps [pillow](https://github.com/python-pillow/Pillow) from 8.1.2 to 8.2.0.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/8.1.2...8.2.0)

---
updated-dependencies:
- dependency-name: pillow
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Create CODEOWNERS

* Create rpi_image_creation.yml

* Update README.md (#394)

added link to compatibility list.

* Revert "Update README.md (#394)" (#395)

This reverts commit 90214666c2.

* Bump pillow from 9.0.0 to 9.0.1 in /python/oled

Bumps [pillow](https://github.com/python-pillow/Pillow) from 9.0.0 to 9.0.1.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/9.0.0...9.0.1)

---
updated-dependencies:
- dependency-name: pillow
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: Tony <akuker@gmail.com>
Co-authored-by: akuker <34318535+akuker@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: stuart taylor <github@j-notation.co.uk>
Co-authored-by: RaSCSI User <user@rascsi.com>
2022-03-13 19:45:16 -05:00
Benjamin Zeiss
0297fe856a
8bit encoder detection + debounced button detection, numpy removal (#710)
* debounce interrupt events for rotary events and button presses with 400 microseconds by default.

* Massive improvements for the encoder detection. Removed numpy as a dependency.

* Debounce button presses which started to jump around.

* formatting cleanup.
2022-03-01 20:27:14 -06:00
Daniel Markstedt
da02eccb2e
Improve logic for the get_logs() method. Add rascsi-ctrlboard service. (#714) 2022-02-28 09:49:48 -08:00
Daniel Markstedt
e8f392c3f1
Create SysCmds common class, and refactor Python codebase (#697)
* Move the oled script's PiCmds module to common, and rename it SysCmds.

* Use sys_cmds.get_ip_and_host() in web UI code.

* Move the auth_active() method to device_utils

* Rename device_utils to web_utils. Make auth_active() method take the group as argument.

* Migrate all pi_cmds methods to the SysCmds common class.

* Display hostname and ip in Web UI.

* Resolve or suppress pylint warnings.

* Resolve a pylint warning.

* Resolve or suppress pylint warnings.

* Import libraries at the top level for readability. In my testing on a Pi3B+, this leads to ~1.5k more memory being used by the python3 process.

* Change page title as requested by akuker.

* Reenable the import-outside-toplevel pylint rule.

* Resolve pylint warnings.

* Fix error following refactoring.

* Minor UI tweaks.

* Cleanup.

* Break out bridge config validation into a utility method.

* Move the dropzonejs method into the web_utils package

* Move get_logs method into SysCmds class.

* Improve get logs UI.

* Resolve pylint warning.

* Standardize class instance name.
2022-02-26 21:46:35 -08:00
Benjamin Zeiss
cd0da558c3
Initial version of the Control Board UI (#687)
Initial version of the Control Board UI (#687)
2022-02-25 21:03:36 +01:00
Daniel Markstedt
cd0baa4676
Forgot to update the oled script after renaming class method. (#693) 2022-02-22 09:29:35 +01:00
Daniel Markstedt
5d92590877
Use the word Release in the context of making a SCSI ID available for use, rather than the word Unreserve which is poor English. (#692) 2022-02-21 20:31:38 +01:00
Daniel Markstedt
4252d46844
Inquire the backend for device capabilities instead of Web UI assumptions (#688)
* Add capabilities to RaCtlCmds.get_device_types() to return the image file support boolean, and list of supported block sizes.

* Inquire rascsi backend about the min block size rather than hard coding values in the web UI.

* Add class methods for getting lists of certain device types.

* Use the new class methods to get lists of device types in the web ui.

* Make use of the new class methods in the oled script.

* Remove now unused constants, and simplify logic in common_settings

* Improve device name mapping to extend the existing dictionary rather than creating a new data structure.

* Use jinja2 sort filters instead of sorting in python code. Removing redundant variables.

* Introduce the get_device_name() utility method which returns the translated name for a device acronym. Use the new method to display device name when attaching devices.

* Fix typo

* Rename Support Device to Periperal Device. General tweaks to UI strings.

* Tweak UI string.

* Fix error.
2022-02-21 09:27:31 -08:00
Daniel Markstedt
01e1aaae3e
Make the support device UI entirely procedurally generated (#686)
* Make the support device UI entirely procedurally generated, removing the special case network device UI flow.

* Clean up helptext.
2022-02-20 09:49:23 -08:00
Daniel Markstedt
2184992ce7
Tentative Web UI for the Printer device. (#676)
* Tentative Web UI for the Printer device.

* timeout must be a positive value

* Change the attach device class method to accept a dict with arbitrary key value pairs of parameters to be passed to the protobuf interface, rather than hard coded ones. Also renames the RaCtlCmds.attach_image() class method to attach_device().

* Make download_to_iso() use the new attach interface.

* Dynamically get the form items for support devices.

* Change the data structure returned by RaCtlCmds.get_device_types() to a dict, which contains the supported parameters and their default values. Leverage this data in the web ui to derive the form fields from the capabilities of rascsi.

* Tweak UI labels.

* Update FileCmds.read_config() to work with the new RaCtlCmds.attach_device() method.

* Check for numeric value.

* Streamline the UI for support devices.

* Handle support devices better by the oled screen.

* Clean up html.

* Dynamically adjust form field size based on data length.
2022-02-19 09:04:14 +01:00
Daniel Markstedt
b3bdd07fa7
Web UI and OLED: adding Support Devices (#666)
* Use the comparison operator that Python3 likes.

* Add SUPPORT_DEVICE_TYPES category, and add Host Service to it.

* Add webapp UI for attaching a support device.

* Make the OLED screen aware of the support device type.

* Tweak test to make it clear that this is experimental functionality.

* Tweak device type names
2022-02-15 13:06:27 +01:00
Daniel Markstedt
25b9b4ada2
Further improve the dynamic device info web UI (#657)
* Improve the device type selection UI

* Extend the image_files data structure with human readable device name, instead of having complex for loops in the jinja2 template.

* Leverage device type constants in the OLED monitor script

* Fix typo

* Generate the list of valid network devices that can be attached programmatically

* Fix typo
2022-02-13 10:28:50 -06:00
n4al
f96ade9149
Updating the README to reflect the new file system layout (#658)
* Updating the README to reflect the new file system layout (and dependencies)

* Compressing two environment variables into a single one

* Adding named arguments

Co-authored-by: Nemanja Lukic <nemanja.lukic@forgerock.com>
2022-02-11 16:29:48 -08:00
Daniel Markstedt
91cc0e836a
Create a mapping of human-readable and internationalized device names. Use this in the image file management UI instead of the internal acronyms. Also remove the hard-coded helptext for device types. (#655) 2022-02-07 18:48:55 -06:00
Daniel Markstedt
5c0d6fc7e9
Make the network adapter UI in the web interface able to choose LUN and device type. (#653) 2022-02-07 18:47:21 -06:00
Daniel Markstedt
2a47924a74
Revert workaround for Netatalk long file name bug, since the bug was fixed in Netatalk itself. (#629) 2022-02-03 19:37:58 -06:00
n4al
0e6e710e52
Updating README.md to reflect the project file structure (#633)
* Updating README.md to reflect the changes made to the project file structure

* Added corrections as per comments

Co-authored-by: Nemanja Lukic <nemanja.lukic@forgerock.com>
2022-02-01 20:51:51 -08:00
n4al
651aa456bd
Adding headers to Spanish version of messages.po (#634)
* Adding headers to Spanish version of messages.po

* Added corrections as per comments

Co-authored-by: Nemanja Lukic <nemanja.lukic@forgerock.com>
2022-01-31 10:29:54 -08:00
Benjamin Zeiss
c200b327e3
removed python typing for debian buster compatibility. (#632) 2022-01-30 19:15:35 -08:00
Daniel Markstedt
d58d86342f
Improve Swedish wordings (#627) 2022-01-30 09:45:01 -08:00
Daniel Markstedt
83ad97e577
Use Locale class methods to get the localized language name for display (#628) 2022-01-29 14:22:39 -08:00
n4al
fc615b5335
Correcting one fuzzy translation in Spanish (#626)
* Correcting one fuzzy translation

* Removing 'fuzzy'
2022-01-29 12:12:45 -08:00
Benjamin Zeiss
4536666544
return code mapper gettext extract fix (#622)
* fix for the wrong extraction of the return_code line.

* second try for the wrong extraction of the return_code line.
2022-01-29 09:42:16 -08:00
Daniel Markstedt
31309a8ee3
Make the default config load on rascsi-web startup without having to load it in a browser. (#620) 2022-01-29 09:41:39 -08:00
Benjamin Zeiss
089dc302e5
restructuring towards python client library #455 (#613)
* python client library clean branch for PR. #455

* removed superfluous file. #455

* removed one more superfluous file. #455

* README.md, .pylintrc and pylint based fixes. #455

* updated wrt. to the review comments. #455

* removed pylint documentation duplication. #455
2022-01-21 15:08:29 -08:00
Daniel Markstedt
423ba573cd
Fix a few malformed gettext calls (#609) 2022-01-14 22:58:32 -06:00
Daniel Markstedt
89fae8fdd5
Bumps pillow from 8.4.0 to 9.0.0. As recommended by dependabot. (#607) 2022-01-14 09:47:57 -06:00
Benjamin Zeiss
17497cf1fe clean squashed restructuring branch. #455 2022-01-09 20:22:19 +01:00