Commit Graph

18 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
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
aa0e5a287b
Error handling in subprocess run (#516) 2021-12-12 11:13:19 -06:00
Daniel Markstedt
a2af7623af
Make the restart rascsi service endpoint actually check for systemd s… (#487)
* Make the restart rascsi service endpoint actually check for systemd service status before doing anything. Introduced error handling and more verbose messages.

* Cleanup
2021-11-27 19:17:36 -06:00
Daniel Markstedt
7818552ca9
Resolve pylint warnings (#488)
* Suppress the import outside toplevel pylint rule -- I think we want to save memory

* Resolve pylint warnings
2021-11-27 14:11:59 -06:00
Daniel Markstedt
5b397229cd
Introduce async operations in webapp (#485)
* Introduce run_async for system processes

* Remove redundant code for system shutdown and reboot endpoints

* Use async process with systemd_service

* Modify innerHTML to show progress messages

* Add docstring
2021-11-26 20:59:25 -08:00
Daniel Markstedt
5346d110a9
User authentication in the Web Interface (#483)
* Add flask-login library

* Add simplepam lib to requirements

* We don't use flask-login after all

* User authentication in the web app using simplepam

* Allow only users in the sudo group to log in

* Tweak string

* This way to enforce authenticated state doesn't work here

* Open links to github in new tab

* Disallow uploads when not authenticated

* Check for the rascsi group on the system to enable webapp auth. Allow only users in the rascsi group to authenticate.

* Make the AUTH_GROUP a global constant.

* Add easyinstall option for web interface auth

* Make AUTH_GROUP a constant

* More accurate change scope
2021-11-26 22:41:10 -06:00
Daniel Markstedt
c8b6ac409b
Indicator of a running macproxy daemon in the webapp (#436)
* Support for downloading properties files

* Show extra message when unzipping properties file

* Add logic to unzip method

* Move unzipped properties into CFG_DIR

* Better status message

* Cleanup

* Generic process introspection method

* Show macproxy status in the webapp
2021-11-08 19:11:27 -08:00
Daniel Markstedt
59e9d8584c
Check for network bridge configuration before attaching daynaport (#428) 2021-11-08 20:34:49 -06: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
8ab16a1fb2
Restart monitor_rascsi from the Web UI (#341) 2021-10-19 17:58:30 -07:00
Daniel Markstedt
84ba78327b
Feature afpshare in rascsi-web (#333)
* Define afp_dir

* Implement generic download_to_dir() method

* Display AFP share download only when netatalk is running

* Make url input required

* Better help text

* Fix server error

* Better error handling

* Typo fix

* Tweak helptext

* Show number of afpd processes running

* Tweak label
2021-10-19 19:43:15 -05:00
Daniel Markstedt
250d63d483 Display available disk space on the Pi 2021-09-24 13:30:59 -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
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