Commit Graph

31 Commits

Author SHA1 Message Date
Daniel Markstedt
ab82d6e4eb
Web Interface i18n (#564)
* Add flask_babel 2.0.0 to requirements

* Partial i18n

* Use current locale for protobuf requests

* Don't store generated messages.pot in git

* Internationalize all python code

* Formatting fixes

* Partial internationalization of html

* Iterate on html i18n

* Completed i18n of code

* Improve i18n of strings

* Blurb about i18n in the readme

* Improve i18n strings

* Add the compiled messages.mo files to .gitignore

* Add complete Swedish localization

* Generate localizations in start.sh

* Only compile messages.mo in start.sh; better sequence

* Fix bug
2021-12-26 15:36:12 -06:00
Daniel Markstedt
c19c814863
Support for nested image dirs in the Web Interface (#558)
* Remove secure_filename for user created images

* Code cleanup

* Store relative path to image file in data structure

* Match attached images against relative paths

* Display scan depth in UI
2021-12-23 11:13:51 -06:00
Daniel Markstedt
ab55d95fd4
Add token authentication to Web UI and OLED monitor script (#554)
* Throw 403 forbidden if token auth is enabled

* Use argparse to parse port and password parameters; use password token to authenticate

* Move config file loading to before_first_request block

* Add token auth to monitor script

* Install script for enabling token auth

* Token config flow for oled monitor installation

* Correct permissions

* Fix bug

* Cleanup
2021-12-23 11:12:16 -06:00
Daniel Markstedt
c887edfc8c
Remove special elevated privileges for the Web Interface (#536)
* Use the pi_shutdown method to restart the rascsi service

* Use the pi_shutdown method to restart the rascsi service

* Remove modifications to sudoers no longer needed

* Introduce sleeps attempting to connect to socket; reduce overall number of retries

* Remove systemd helped methods and the functionality that depends on it

* Attempts to speed up splash code

* Remove unneccessary verbosity

* Attempt to optimize service definition
2021-12-19 17:50:03 -06:00
Daniel Markstedt
39c65beb99
Better Pi shutdown handling in Web Interface (#522)
* Add shutdown method

* Use shutdown method

* Use proto shutdown commands; remove old shell commands

* Add explicit monitor_rascsi shutdown

* Better method name

* Add code comment

* Fix bug
2021-12-13 19:37:28 -08:00
Daniel Markstedt
7e546e2cb8
ID reservation in Web UI (#416)
* Remove dead code

* Clean up indentation

* Cleanup

* Move socket commands into its own file

* Move non-rascsi command methods into its own file

* Refactoring

* Bring back list_config_files

* Cleanup

* Cleanup of status messages

* Remove unused libraries

* Resolve pylint warnings

* Resolve pylint warnings

* Remove unused library

* Resolve pylint warnings

* Clean up status messages

* Add requests lib to requirements.txt

* Clean up status messages

* Resolve interpolation warnings for logging

* Resolve pylint warnings

* Resolve pylint warnings

* Resolve pylint warnings

* Resolve pylint warnings

* Resolve pylint warnings

* Resolve pylint warnings

* Resolve pylint warnings

* Cleanup

* Add html/head/body tags to the base document

* Resolve pylint warnings

* Resolve pylint warnings

* Resolve pylint warnings

* Resolve pylint warnings

* Resolve pylint warnings

* Resolve pylint warnings

* Resolve pylint warnings

* Add .pylintrc and suppress warnings for the generated protobuf module

* Resolve pylint warnings

* Clean up docstrings

* Fix error

* Cleanup

* Add info on pylint to README

* Store .pylintrc in parent dir to allow other Python packages to use it

* Tidy index.html

* Cleanup

* Resolve jinja-ninja warnings

* Cleanup

* Cleanup

* Cleanup

* Cleanup

* Cleanup

* Save and load id reservations in config file

* Reserve and unreserve in the web ui

* TODO

* Add backwards compatibility with 21.10 config files

* Comment cleanup

* Save and load reservation memos into the config file

* Cleanup

* Resolve pylint warnings

* Fix bugs

* Fix bug

* Fix bugs

* Cleanup

* Fix typo

* Fix successful return clause

* Cleanup

* Fix bugs
2021-11-06 21:11:17 -05:00
Daniel Markstedt
54b3e480a5
Web UI code cleanup and refactoring (#409)
* Remove dead code

* Clean up indentation

* Cleanup

* Move socket commands into its own file

* Move non-rascsi command methods into its own file

* Refactoring

* Bring back list_config_files

* Cleanup

* Cleanup of status messages

* Remove unused libraries

* Resolve pylint warnings

* Resolve pylint warnings

* Remove unused library

* Resolve pylint warnings

* Clean up status messages

* Add requests lib to requirements.txt

* Clean up status messages

* Resolve interpolation warnings for logging

* Resolve pylint warnings

* Resolve pylint warnings

* Resolve pylint warnings

* Resolve pylint warnings

* Resolve pylint warnings

* Resolve pylint warnings

* Resolve pylint warnings

* Cleanup

* Add html/head/body tags to the base document

* Resolve pylint warnings

* Resolve pylint warnings

* Resolve pylint warnings

* Resolve pylint warnings

* Resolve pylint warnings

* Resolve pylint warnings

* Resolve pylint warnings

* Add .pylintrc and suppress warnings for the generated protobuf module

* Resolve pylint warnings

* Clean up docstrings

* Fix error

* Cleanup

* Add info on pylint to README

* Store .pylintrc in parent dir to allow other Python packages to use it

* Tidy index.html

* Cleanup

* Resolve jinja-ninja warnings

* Cleanup

* Cleanup

* Cleanup

* Cleanup

* Cleanup

* Fix wording
2021-11-06 19:25:02 -05:00
Daniel Markstedt
1b8a0c341d Fix typo and the multiline strings. 2021-10-26 15:51:57 -07:00
Uwe Seimet
cc1783c1cd
Improved remote connection error handling (#376)
* Improved remote connection error handling

* Improved error handling by adding a magic string to each message

* Interface comment update

* Interface comment update

* Improve error messages

* Clients send the magic word to authenticate

Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
2021-10-25 16:04:10 -07:00
Daniel Markstedt
f2d889aca1
Show image size under DEVICE INFO (#314) 2021-10-13 19:56:53 -05:00
Daniel Markstedt
fa12f49078
Inquire the server about current image dir (#313) 2021-10-13 19:54:29 -05:00
Uwe Seimet
89d66ef02b
Support for multiple SCSI LUNs (#318)
* Updated logging

* Updated logging

* Updated logging

* Updated ID/LUN parsing

* Updated handling of max_id

* The -HD option sets type to SAHD

* Replaced is_sasi by device type

* Updated logging

* Logging update

* Improved LUN evaluation

* Check LUN against UnitMax

* Comment update

* LUN parsing update

* Logging update

* Logging update

* Updated ReportLuns

* Updated REPORT LUNS

* Cleanup

* Updated REPORT LUNS

* Updated Execute()

* Updated LUN handling

* Check for consecutive LUNs

* Added LUN check for remotely attached devices

* Remember LUN selected by IDENTIFY

* Evaluate LUN from IDENTIFY message

* Added comment

* Updated REPORT LUNS

* Initlize LUN

* Logging update

* Support 32 LUNs

* rasctl display update

* Updated LUN check for LUNSs > 7

* Simplified LUN validation

* Fixed wrong ID/LUN handling with values > 9

* Log level update

* Manpage update

* rascsi parser update

* Updated error handling

* Updated error handling

* Updated LUN setup validation

* Updated logging

* Improved validation of consecutive LUNs

* Renaming

* Detach all LUNs equal to or higher than the one specified

* Add support for LUN in the device list

* Add ability to show device info for LUNs

* Make it possible to detach and eject LUNs

* Show full path to prop file

* Show only LUN columns when non-0 LUNs present

* Support for attaching LUNs

* Add helptext

* Fix handling of removable media

* Retain the previous behavior of recommending the next unoccupied id

* SCSI ID validation no longer needed due to changed logic

* Make use of recommended id everywhere

* Docstring

Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
2021-10-13 11:03:31 +02:00
Uwe Seimet
a638fec8a8
Feature interface granularity (#304)
* Added VERSION_INFO

* Added LOG_LEVEL_INFO

* Added RESERVED_IDS_INFO

* Renaming

* Renaming

* Split rasctl

* Code cleanup

* Removed unused method

* Include cleanup

* More cleanup

* More cleanup

* Simplified sending commands

* Fully set up command

* Further simplified sending commands

* Moved code

* Include cleanup

* Reject reserving an ID that is in use

* Update rascsi-web for the changes in protobuf interface

Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
2021-10-06 23:25:43 +02:00
Daniel Markstedt
4945862c91 Query rascsi for the supported file endings, rather than hardcode lists in python code 2021-09-30 14:10:51 -07:00
Daniel Markstedt
0e4c2b7fd7 Add more docstrings 2021-09-29 09:48:34 -07:00
Daniel Markstedt
44298bf031 Add docstrings and clean up layout 2021-09-29 07:03:10 -07:00
Daniel Markstedt
ff00b6005c Fix bugs with attaching removable images 2021-09-28 16:04:16 -07:00
Daniel Markstedt
18e55bea2d
Feature attach suggestion (#260)
* Issue 232 -- will not generate PC98 emulator image formats

* Introducing dropdown for selecting device type which defaults to a recommendation based on file ending, while removing the quiet logic to autodetect type on the frond end side

* Added device type to PbImageFile

* Comment update

* Code cleanup

* More code cleanup

* Extraced methods

* Extracted methods

* Renaming

* Moved code

* Visility update

* Updated error handling

* Removed duplicate error handling

* Removed duplicate code

* Code cleanup

* Moved code

* Moved code

* Leverage new device type field for files in protobuf interface

* Tweak label

* Tweak template

* Fix bug

* Add types legend

* Add tip about renaming image files

Co-authored-by: Uwe Seimet <Uwe.Seimet@seimet.de>
2021-09-25 22:27:43 -05:00
Daniel Markstedt
d434dfe918 Improve error message 2021-09-20 10:47:00 -07:00
Daniel Markstedt
591bbb4325 Store drive size instead of block number 2021-09-19 18:35:15 -07:00
Daniel Markstedt
133372ff09 Move scsi id reservation management to the backend 2021-09-19 15:57:28 -07:00
Daniel Markstedt
15febd1ee6
Disk image profile management using a sidecar config file (#242)
* Handle a case where reserved ids on the Web UI side are not actually reserved on the backend side

* Better error handling when no device is found in list_devices

* Better warning message

* Tag message as error

* Fix device_info

* Get reserved ids from the server instead of storing a client side state, which caused front and backend to get out of sync in certain cases.

* Initial implementation of sidecar configuration reading and writing

* Use bytes for drive image creation internally

* Add named drive section

* Move header to base.html

* Create the disk profile list page

* Make lists of HDDs, CDRs, and Removable drives

* Implement disk image + sidecar creation

* Implement CD-ROM device sidecar creation method

* Add more device configurations

* Add disclaimer

* Hide URL if none is provided

* Make the web ui use the new protobuf parameter maps

* Make daynaport attaching UI more flexible

* Use the protobuf interface to create image files

* Use new create image method for the sidecar flow as well

* Move file deletion logic to protobuf commands; Refactor saving/loading config files

* Update disk image creation

* Fix error

* Disk images the script makes are in Mac format

* Add blurb about the risks with using Lido driver (issue#40) to the easyinstall script, while pushing less for using that feature.

* Make shutdown and reboot async operations

* More informative footer contents

* Wordsmith the Mac drive options

* Link to relevant section in the wiki

* Added GET_IMAGE_FILES

* Added default folder to GET_IMAGE_FILES

* Renaming

* Updated setting image folder

* Lists available net interfaces as a drop down when attaching daynaport

* Macs should use the hds image file ending

* Fixed default image folder handling

* Refer to device properties, instead of sidecars

* Added NETWORK_INTERFACES_INFO

* Filter "lo"

* Use PF_INET in favor of PF_INET6

* Added network interfaces to server info

* Drive property file ending defined in one place; Add handling of common urllib and file system exceptions.

* Use protobuf interface to get network interface info

* Use protobuf interface for list_files

* Repeated field cleanup

* Renaming

* Added DEVICE_TYPES_INFO

* Comment update

* Added -y option to rasctl

* Add the remaining recommended drive profiles provided by rpajarola

* Fix typos

* Add warnings to CD-ROM descriptions

* Add more recommended Sun drives

* Add capacity to name

* Move footer into base.html

* Handle removable drive insertion in the attach method (easy to do with protobuf)

* Limit which arguments to pass to an image injection command

* Cleanup

* Sort image and config files alphabetically

* Make compatible with updated protobuf interface

* Sort drives alphabetically by name

* Decriptive text for CD-ROM section

* Better description

* Hyperlink to disks page instead of button

Co-authored-by: Uwe Seimet <Uwe.Seimet@seimet.de>
2021-09-19 14:29:01 -07:00
Daniel Markstedt
8a3642bf9a
Move to protobuf for the webapp, major overhaul to easyinstall.sh, code comment translations (#229)
* Making saving and loading config files work with protobuf

* Formatted the Status column, and fixed the available ID logic

* Updated handling of removed status for devices without image file support

* Comment update

* Fixed typo

* Updated logging

* Updated handling of removed status for devices without image file support

* Comment update

* Fixed typo

* Updated logging

* Better handling of device status

* Updated parameter handling

* Updated setting default interfaces

* Revert "Updated setting default interfaces"

This reverts commit 210abc775d.

* Revert "Updated parameter handling"

This reverts commit 35302addd5.

* Abort with a 404 if rascsi is not running. Use any protobuf response to determine whether rascsi is running (should hardly be required anymore due to the other change, but just in case).

* Move id reservation back into __main__

* Remove check for device type when validating Removed image

* Leverage device property data for better status messages

* Remove redundant string sanitation when reading config csv file

* Clean up device list generation

* Cleanup

* Remove duplicates before building valid scsi id list

* Fully translated cfilesystem.h code comments to English; partially translated cfilesystem.cpp

* rascsi supports reserving IDs

* Updated help message

* Replaced BOOL by bool

* Logging update

* Logging update

* Cleanup

* Restructure the easyinstall.sh script to combine the install/update flows, and disallow installing the webapp by itself

* Remove redundant steps handled in Makefile

* Add the functionality to specify connect_type through a parameter

* Add validation to the argument parser allowing only STANDARD and FULLSPEC as options

* Complete translation of code comments for cfilesystem.h; partial translation for cfilesystem.cpp

* Cleanup

* Merge parts of the Network Assistant script by sonique6784; fix the run_choice startup parameter

* Improve on the network setup messages

* Fix routing address

* Add checks for previous configuration; cleanup

* Cleanup

* Remove redundant step in wired setup. Improve messages.

* Cleanup

* Added default parameters to device properties

* Return parameters a device was set up with

* Add flows for configuring custom network settings; adopting some logic by –sonique6784

* Improved device initialization

* Updated default parameter handling

* Updated default parameter handling

* Fixed typo

* Comment updates

* Comment update

* Make iso generation work again, and add error handling to urllib actions

* Manage default parameters in the respective device

* Print available network interfaces. Clean up step and improve descriptive messages.

* Make the script clean up previous configurations

* Make the script only show relevant interfaces

* Partial translation of cfilesystem.cpp

* Do not pass empty parameter string

* Added supports_params flag

* Completely translate code comments in cfilesystem.cpp

* Show rascsi-web status after installing

* Refactoring

* Made comparisons more consistent

* Updated error handling

* Updated exception handling

* Made comparisons more consistent

* Updated error handling

* Overlooked code comment translation

* Renaming

* Better error handling for socket connection

* Disable two NEC hd image types due to issue#232

* Comment update

* NEC sectors size must be 512 bytes

* Updated logging

* Updated vendor name handling

* Updated handling of media loading/unloading

* Comment update

* NEC sectors size must be 512 bytes

* Updated logging

* Updated vendor name handling

* Updated handling of media loading/unloading

* Better handling of removable disks in the web ui

* Added stoppable property and stopped status

* Made MO stoppable

* Removed duplicate code

* Removed duplicate code

* Copy read-only property

* Renaming

* Add an assistant for reserving scsi ids

* Don't show action if no device attached

* Implement a device_info app path, and cut down on device columns always shown

* Cleanup

* Removed duplicate code, added START/STOP

* Improved default parameter handling

* Updated load/eject handling

* Logging update

* Fixed typo

* Verified START/STOP UNIT

* Updated logging

* Updated status handling

* Updated status handling

* More status handling updates

* Logging update

* Made instance fields local variables

* Removed duplicate code, added START/STOP

* Improved default parameter handling

* Updated load/eject handling

* Logging update

* Fixed typo

* Verified START/STOP UNIT

* Updated logging

* Updated status handling

* Updated status handling

* More status handling updates

* Logging update

* Made instance fields local variables

* Made disk_t private

* Made some data structures private

* Fixed ARM compile issue

* Fast forward instead of rebase existing git repo

* Fixed ctapdriver initialization issue

* Reset read-only status when opening an image file

* Cleanup

* Cleanup

* Made logging more consistent

* Updated log level

* Cleanup

* Log load/eject on error level for testing

* Revert "Log load/eject on error level for testing"

This reverts commit d35a15ea8e.

* Assume drive is not ready after having been stopped

* Updated status handling

* Make the csv config files store all relevant device data for reading

* Read 9 column csv config files

* Fixed typo

* Rebuild manpage

* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)

* Removed unused code

* Enum data type update

* Removed duplicate range check

* Removed duplicate code

* Removed more duplicate code

* Logging update

* SCCD sector size was not meant to be configurable

* Better error handling for csv reading and writing

* Updated configurable sector size properties

* Removed assertion

* Improved error handling

* Updated error handling

* Re-added special error handling only relevant for SASI

* Added TODOs

* Comment update

* Added override modifier

* Removed obsolete debug flag (related code was not called)

* Comment and logging updates

* Removed obsolete try/catch

* Revert "Removed obsolete try/catch"

This reverts commit 39ca12d8b1.

* Comment update

* Removed duplicate code

* Updated error messages, use more foreach loops

* Avoid storing RaSCSI generated product info in config file

* Updated logging

* Logging update

* Save config files in json instead of csv

* Fix bugs with json config loading

* Refactoring & remove unused code

* Refactoring

* Display upper case file endings in file management list

* Only show product vendor for non-RaSCSI devices in the device list

* Translate code comment

* Refactoring

* Fix bad identation

* Improve valid file extension handling

* Add validation when attaching removable media

* Display valid file endings under the file list

* Cleanup

* Don't store 0 block size

* Fix indentation

* Read and write config files in key:pair format

* Add section for controlling logging

* README update

* Added block_count

* Cleanup, fix typos

* Support attaching CD-ROM with custom block size

* Evaluate block size when inserting a media

* rasctl display capacity if available

* Info message update

* Use kwargs for device attachment

* Fix bugs in attach_image kwargs; make config file more readable

* POC for attaching device with profile

* Only list product types valid for the particular image file

* Perform validation of HDD image size based on the product profile

* Implement sidecar config files for drive images.

* Added missing product name to NEC vital product data

* MO block size depends on capacity only

* Better error handling for device sidecar config loading

* Extended property/status display

* Property display update

* Updated error handling

* Handle image sizes in bytes internally

* Revert change

* Resolve bad merge

Co-authored-by: Uwe Seimet <Uwe.Seimet@seimet.de>
2021-09-14 21:51:12 -05:00
Uwe Seimet
3e7f317c49
Configurable block size, controller/device cleanup, dispatchers per device, bridge setup (#203)
* Use foreach

* Renaming

* Revert "Renaming"

This reverts commit b0554b9c0a.

* Manpage updates

* Removed obsolete assertions

* Replaced QWORD by uint64_t and removed respective typedef

* Removed LPCSTR typedef

* Removed LPCTSTR typedef

* Removed LPTSTR typedef

* Renamed SCSI command interface classes

* Renamed xm6.h to rascsi.h

* Moved interface classes to new interfaces subfolder

* Added include

* Fixed compilation issues of 64 bit Ubuntu

* Renaming

* Sort block sizes

* protobuf interface description update

* Fixed handling for sector size for non-disk devices

* Fixed typo

* Fixed comment

* Translate code commends into English, removing redundant ones (#214)

* Comment update

* For other bridge interfaces than eth0 IP address and netmask can be provided

* Added special rule for testing on x86 PCs

* Translated code comments into English, removing some redundant ones in the process, plus fixing typos (#215)

* Translate code commends into English, removing redundant ones

* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
  code
  - Fixed a few typos and mistakes

* Comment update

* Removed unused typedefs

* Added special rule for testing on x86 PCs

* Comment update

* Comment update

* Updated capacity calculation

* Updated protobuf interface to signal parameter support

* Simplified protobuf interface

* Updated rasctl server info output

* Updated logging

* protobuf interface has to return block only if it is configurable

* Updated block size handling

* Improved error message if ID is already in use

* Removed typedef

* Renamed protobuf interface method

* Renaming

* Use protobuf::Messsge instead of protobuf::MessageLite

* default_image_folder cannot be an empty string, removed obsolete check

* Logging update

* Made some error messages more concise

* Removed magic constant

* Updated error message

* Comment update

* Names of removable media drives must be constant and not contain the capacity

* Improved DeviceFactory error handling

* More error handing improvements

* Interface comment update

* Pass interface list to ctapdriver when creating bridge

* Moved initialization code

* Updated rasctl server information output

* Improved handling of MO capacities

* Renaming

* Comment update

* Reject inserting a medium when there is already a medium present (eject first)

* Save list of files in use before dry-run

* Updated rasctl server info message

* Comment update

* Fixed typo

* Cleaned list handling

* Sort devices list by ID *and unit*

* Improved block size check

* Fixed issue with missing method in old Raspberry Pi OS protobuf implementation

* Updated error message

* Improve and fix bugs with saving&loading configuration files for rascsi-web (#218)

* Translate code commends into English, removing redundant ones

* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
  code
  - Fixed a few typos and mistakes

* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device

* Add comment and TODO

* Partial translation of cfilesystem.h

* Move csv read/write logic into file_cmd.py

* Load default.csv on rascsi-web startup

* Add rudimentary error handling to config loading/saving

* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.

* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids

* Fix error handling when failing to open a csv file for read or write

* Removed unused structures, code and type cleanup

* Use unscoped enums for commands

* SASI Format opcode is 0x06, not 0x04 (see comment in code)

* Removed duplicate command

* Code review, data type updates

* Data type updated, use #pragma once

* Logging update

* Renaming

* Renaming

* Removed duplicate code

* Renaming

* Refactoring

* Removed TODO

* Updated logging

* Comment update

* Comment update

* Updated GetEventStatusNotification

* Removed goto

* Options -h and -v do not require to be the root user (fixes issue #166)

* Updated error messages and exception handling

* Added number of supported LUNs to protobuf interface

* Updated list handling of protobuf interface

* Comment update

* Improved error handling

* Added missing return statement

* Allow empty device list

* Fixed unnecessary detach_all() when config file isn't read (#221)

* Translate code commends into English, removing redundant ones

* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
  code
  - Fixed a few typos and mistakes

* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device

* Add comment and TODO

* Partial translation of cfilesystem.h

* Move csv read/write logic into file_cmd.py

* Load default.csv on rascsi-web startup

* Add rudimentary error handling to config loading/saving

* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.

* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids

* Fix error handling when failing to open a csv file for read or write

* Run detach_all() only after succeeding to open a file for reading

* Protecting/unprotecing a non-ready medium is considered not possible

* Updated error message

* Extract detaching all devices, add parameter list support

* Comment update

* Fixed typos

* Restore files in use if dry-run fails

* Feature configurable reserved id for rascsi-web (#223)

* Translate code commends into English, removing redundant ones

* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
  code
  - Fixed a few typos and mistakes

* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device

* Add comment and TODO

* Partial translation of cfilesystem.h

* Move csv read/write logic into file_cmd.py

* Load default.csv on rascsi-web startup

* Add rudimentary error handling to config loading/saving

* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.

* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids

* Fix error handling when failing to open a csv file for read or write

* Run detach_all() only after succeeding to open a file for reading

* Make the reserved SCSI id configurable through an argument to start.sh; make the rascsi-web service reserve 7 by default to maintain current behavior.

* Make it possible to reserve multiple scsi ids in the web ui

* Added support for reserved IDs

* rasctl output update

* Re-ordered logging

* Logging update

* Make use of the newly introduced 'rasctl -r' to have the webui reserve ids on the backend side upon startup (#224)

* Translate code commends into English, removing redundant ones

* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
  code
  - Fixed a few typos and mistakes

* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device

* Add comment and TODO

* Partial translation of cfilesystem.h

* Move csv read/write logic into file_cmd.py

* Load default.csv on rascsi-web startup

* Add rudimentary error handling to config loading/saving

* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.

* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids

* Fix error handling when failing to open a csv file for read or write

* Run detach_all() only after succeeding to open a file for reading

* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.

* Updated string to integer conversions

* Improved string to integer conversion

* Move string to integer conversion to rasutil

* Removed unused variable

* Fixed detach, which did not remove the filename from the filenames set

* Re-added folder to gitignore

* Set/Display patch version

* Fix issue where reserved ids were not reserved again when restarting rascsi-service from within the web ui (#226)

* Translate code commends into English, removing redundant ones

* - Translated all remaining Japanese code comments in src/raspberrypi/ to English, with the exception of cfilesystem.cpp|h
- Removed some redundant comments where the context is obvious from the
  code
  - Fixed a few typos and mistakes

* - Store only file path and name to configuration csv
- Strip known non-file path strings when reading configuration csv (backwards compatibility)
- Validate SCSI ID before attempting to attach a device

* Add comment and TODO

* Partial translation of cfilesystem.h

* Move csv read/write logic into file_cmd.py

* Load default.csv on rascsi-web startup

* Add rudimentary error handling to config loading/saving

* Implement a delete configuration csv file feature. Also rename the delete_image method to delete_file and made it take the full file patch as argument to be consistent with other file operation methods.

* Catch the exception when attempting to exclude SCSI id that is already in use from a list of valid SCSI ids

* Fix error handling when failing to open a csv file for read or write

* Run detach_all() only after succeeding to open a file for reading

* Make use of the new 'rasctl -r' command to reserve IDs on the backend side as well.

* Make sure reserved SCSI IDs gets reserved again when restarting rascsi-service from within the web ui

* Updated interface comment

* Accept daynaport as legacy type

* Fixed typo

* Remove file from the list of files in use when ejected with a SCSI command

* Check for attached device for INSERT, EJECT, PROTECT, UNPROTECT

* Fixed error handling

* Fixed filepath handling

* Added more device shortcuts to rasctl

* Fixed function declaration

* Extraced ATTACH and DETACH

* Extracted INSERT

* Simplified ProcessCmd

* Comment update

* Fixed memory leak

* Log information on whether a new device is protected or read-only

* Updated errro message

* Updated error message

* Initialize private fields

* Updated rasctl help message

* Added DEVICE_INFO to protobuf interface

* Improved error handling

* DEVICE_INFO supports device list

* Updated server info handling

* Unified result handling with oneof, all commands now return PbResult

* A result can always return a message string

* Fixed typo

* Simplified sending of commands

* Improved error handling

* Removed unused code

* Updated error handling

* Code cleanup

* Comment update

* Updated logging

* Updated error handling

* Updated handling of removed status for devices without image file support

* Comment update

* Fixed typo

* Updated logging

* Updated parameter handling

* Updated setting default interfaces

* Revert "Updated setting default interfaces"

This reverts commit 210abc775d.

* Revert "Updated parameter handling"

This reverts commit 35302addd5.

* rascsi supports reserving IDs

* Updated help message

* Replaced BOOL by bool

* Logging update

* Logging update

* Added default parameters to device properties

* Return parameters a device was set up with

* Improved device initialization

* Updated default parameter handling

* Updated default parameter handling

* Fixed typo

* Comment updates

* Comment update

* Manage default parameters in the respective device

* Do not pass empty parameter string

* Added supports_params flag

* Made comparisons more consistent

* Updated error handling

* Updated exception handling

* Renaming

* Comment update

* NEC sectors size must be 512 bytes

* Updated logging

* Updated vendor name handling

* Updated handling of media loading/unloading

* Added stoppable property and stopped status

* Made MO stoppable

* Removed duplicate code

* Removed duplicate code

* Copy read-only property

* Renaming

* Removed duplicate code, added START/STOP

* Improved default parameter handling

* Updated load/eject handling

* Logging update

* Fixed typo

* Verified START/STOP UNIT

* Updated logging

* Updated status handling

* Updated status handling

* More status handling updates

* Logging update

* Made instance fields local variables

* Made disk_t private

* Made some data structures private

* Fixed ARM compile issue

* Fixed ctapdriver initialization issue

* Reset read-only status when opening an image file

* Made logging more consistent

* Updated log level

* Log load/eject on error level for testing

* Revert "Log load/eject on error level for testing"

This reverts commit d35a15ea8e.

* Assume drive is not ready after having been stopped

* Updated status handling

* Fixed typo

* Rebuild manpage

* Fixed issue #234 (MODE SENSE (10) returns wrong mode parameter header)

* Removed unused code

* Enum data type update

* Removed duplicate range check

* Removed duplicate code

* Removed more duplicate code

* Logging update

* SCCD sector size was not meant to be configurable

* Updated configurable sector size properties

* Removed assertion

* Improved error handling

* Updated error handling

* Re-added special error handling only relevant for SASI

* Added TODOs

* Comment update

* Added override modifier

* Removed obsolete debug flag (related code was not called)

* Comment and logging updates

* Removed obsolete try/catch

* Revert "Removed obsolete try/catch"

This reverts commit 39ca12d8b1.

* Comment update

* Removed duplicate code

* Updated error messages, use more foreach loops

* Updated logging

* Logging update

* README update

* Added block_count

* Evaluate block size when inserting a media

* rasctl display capacity if available

* Info message update

* Added missing product name to NEC vital product data

* MO block size depends on capacity only

* Extended property/status display

* Property display update

* Updated error handling

* (Doc only changes) Fix typos and add clarification that SASI is used on Unix workstations

Co-authored-by: Daniel Markstedt <markstedt@gmail.com>
Co-authored-by: Tony Kuker <akuker@gmail.com>
2021-09-14 20:23:04 -05:00
Daniel Markstedt
795286f4c4
Fix for issue#199. Also removed check for daynaport in attach_image() since that branch will never be reached in the current webui implementation. (#206) 2021-08-23 10:30:14 +02:00
Daniel Markstedt
66342dc18a
Fix for issue#197. Also removed the valid file extensions list from web/file_cmds.py since it wasn't used. (#205) 2021-08-22 21:37:43 +02:00
Uwe Seimet
0bd12e93f5
Refactoring, device handling extensions, additional settings, improved error handling, 64 bit OS support, fixed issues (#184)
* Device type unification, support of removable media

* Added support for .hdr extension

* Removable flag cleanup

* Manpage update

* Enriched PbOperation with PbDevice

* Added file size to PbImageFile

* Added device list support

* Set image_file

* Make remote interface more robust by ignoring SIGPIPE

* Return status only once

* Fixed typo

* Error handling update

* When starting rascsi parse everything before attaching devices

* Added dry run mode

* Comment update

* Updated logging

* Added Device base class, Disk class inherits from it

* Renaming

* Use vectors for controllers and disks, as preparation for using maps

* Updated file support handling

* Comment update

* DaynaPort and Bridge inherit from Device instead of Disk

* ProcessCmd() now works with devices instead of disks

* Renaming

* Added DeviceFactory

* Improved factory

* Comment update

* protected disk_t

* Code cleanup, added translations

* Device name can be set for rascsi

* rasctl can set device name

* Manpage update

* Manpage update

* Formatting update

* Check for missing name

* Initialize fd

* Initialize type

* Fixed string length issue

* Updated capacity formatting

* Fixed typo

* Split PbDevice into device and device definition

* Added TODO

* Renaming

* Renaming

* Device types can be explicitly specified with -t (no FILE:TYPE syntax anymore)

* Fixed compile-time issue

* Removed unused Append mode, updated read-only handling

* Type handling and manpage update

* Cleanup

* rasctl parser cleanup

* Review

* Constructor update

* Added .hdr (SCRM) support to web interface, tested web interface

* Default folder can be set remotely

* Removed deprecated operation

* DETACH supports all parameters in order to detach all devices

* include cleanup

* Logging should not depend on NDEBUG, for RaSCSI it is not peformance-critical

* INFO is default log level

* Exception renaming

* Updated GetPaddedName()

* Inheritance update

* Added BlockDevice class

* Removed unused code

* Updated typedefs

* Revert "Updated typedefs"

This reverts commit 546b46215a.

* Removed unused code

* Fixed warnign

* Use standard C++ integer types, use streams to resolve printf data type issues

* Added TODOs

* Added TODO

* Renaming

* Added TODO

* Added TODO

* Improved dry-run

* Code cleanup

* Updated handling of unknown options, code review and cleanup

* Manpage update

* Added PrimaryDevice

* Include cleanup

* Added pure virtual methods

* Comment updates

* Split rasutil

* Replaced some occurrences of BOOL

* Removed obsolete RASCSI definition in xm6.h

* Removed unused code, updated TODOs, replaced BOOL

* Added capacity check (issue #192)

* Fixed (most likely) https://github.com/akuker/RASCSI/issues/191

* Fixed wrong error messages

* For root the default image folder is /home/pi/images, updated error handling

* Dynaport code review

* Improved error handling

* Implemented READ CAPACITY(16)

* Comment update

* Commands can be 16 bytes long

* Implemented READ/WRITE/VERIFY(16)

* Comment update

* Renamed method to reflect the name of the respective SCSI command

* Do not created devices during dryRun

* Fixed padding of SCSIHD_APPLE vendor and product

* Initial implementation

* Updated ReportLuns

* Byte count update

* Fixed typo

* Finalized REPORT LUNS

* Removed TODO

* Updated TODO

* TODO update

* Updated device factory

* Comment update

* 64 bit update, tested on Ubuntu 64 bit system

* Removed assertion

* SCSI hard disks always have Apple specific mode pages (resolves issue #193)

* Error messsage update, 64 bit cleanup

* Reduced streams usage

* Updated handling of device flags

* MOs are protectable

* Removed duplicate error code handling

* Removed duplicate code

* Fixed CmdReadToc buffer overflow (https://github.com/akuker/RASCSI/issues/194)

* Added naive implementation of GET EVENT STATUS NOTIFICATION to avoid wranings

* HD must set removable device bit if the media is removable

* Removed duplicate logging

* Updated daynaport additional length

* Removed broken daynaport REQUEST SENSE. Successfully tested with my Mac.

* EnableInterface should not always return TRUE

* Updated Inquiry

* Updated LUN handling

* Replaced incorrect free by delete

* Updated comments and write-protection handling

* Made default HD name consistent

* STATUS_NOERROR is default

* Fixed Eject

* More eject handling updates

* Manpage updates

* Logging update

* Changed debug level

* Logging update

* Log capacity of all media types

* Logging update

* Encapsulated disk.blocks

* Encapsulated sector size

* Added overrides

* Added more overrides

* Fixed error message

* Fixed typos

* Fixed logging

* Added logging

* Use PrimaryDevice when calling Inquiry

* Comment update

* Changed default buffer size for testing

* Reverted last change

* Removed debug output

* De-inlined methods because optimized code did not work with them inlined

* Web interface can attach Daynaport again

* Improved handling of read-only hard disks

* Fixed issue with "all" semantics of DETACH

* rasctl supports adding removable media devices without providing a filename

* Removed unused flag in PbDeviceDefinition

* Updated rasctl output for ecjected media (resolves issue #199)

* Validate default folder name when changing default folder
2021-08-21 16:45:30 -05:00
Eric Helgeson
ea4486d1c0
Speed up web uploads and various fixes (#158)
* Move to bjoern

* Stream upload

* wip

* Streams

* check for filename

* Allow easyinstall to be scripted

* Tell user we're done

* show help

* ignore hfdisk

* fix var

* Allow override of remote by setting GIT_REMOTE, default to origin

* Better handling of local changes

* Give user more info

* Fix #156 - show all supported types in web interface

* *.mos does not seem to be valid - ractl throws error

* Try some minor optomizations
Error handling
2021-07-31 10:52:09 -05:00
Eric Helgeson
0b78f09f8d Add DaynaPORT config to web
Add bridge-utils

Minor fixes to easyinstall

Can now save config, detach all devices

Bridge script error out if any command fails
2021-02-01 19:48:56 -06:00
Eric Helgeson
943a9ab537 Black code formatting 2021-02-01 11:39:50 -06:00
Eric Helgeson
37f1166fd8
New Web Interface (#69)
* gitignore

* New Web Interface
Fixed spacing/tabs in easy install
Added migration check
Fix update web not actually updating

Migrating from https://github.com/erichelgeson/RaSCSI-web

* Allow user to select multiple types when creating images

* Show all devices even if nothing is attached.

* If attaching an iso to a cd device, dont detach, just insert

* UI feedback and restart rascsi service

* Check for any non-0 exit code for apache2 detection

* Pretty/informative 502

* Add confirms to some actions. Works in netscape 4.7

* Fix order of params for create_new_image

* Move non-route method to service

* Add method for getting logs

* Move settings to single file
add ability to mock commands for local dev
2020-12-30 19:39:32 -06:00