2020-12-31 01:39:32 +00:00
{% extends "base.html" %}
2021-11-07 00:25:02 +00:00
{% block content %}
2020-12-31 01:39:32 +00:00
2021-11-07 00:25:02 +00:00
< details >
< summary class = "heading" >
2021-12-26 21:36:12 +00:00
{{ _("Current RaSCSI Configuration") }}
2021-11-07 00:25:02 +00:00
< / summary >
2021-09-28 20:39:08 +00:00
< ul >
2021-12-26 21:36:12 +00:00
< li > {{ _("Displays the currently attached devices for each available SCSI ID.") }}< / li >
< li > {{ _("Save and load device configurations, stored as json files in < tt > %(config_dir)s< / tt > ", config_dir=CFG_DIR) }}< / tt > < / li >
< li > {{ _("To have a particular device configuration load when RaSCSI starts, save it as < em > default< / em > .") }}< / li >
2021-09-28 20:39:08 +00:00
< / ul >
2021-11-07 00:25:02 +00:00
< / details >
< p > < form action = "/config/load" method = "post" >
< select name = "name" required = "" width = "14" >
{% if config_files %}
2022-02-21 17:27:31 +00:00
{% for config in config_files|sort %}
2021-11-07 00:25:02 +00:00
< option value = "{{ config }}" >
{{ config.replace(".json", '') }}
< / option >
{% endfor %}
{% else %}
< option disabled >
2021-12-26 21:36:12 +00:00
{{ _("No saved configurations") }}
2021-11-07 00:25:02 +00:00
< / option >
{% endif %}
< / select >
2021-12-26 21:36:12 +00:00
< input name = "load" type = "submit" value = "{{ _(" Load " ) } } " onclick = "return confirm('{{ _(" Detach all current device and Load configuration ? " ) } } ' ) " >
< input name = "delete" type = "submit" value = "{{ _(" Delete " ) } } " onclick = "return confirm('{{ _(" Delete configuration file ? " ) } } ' ) " >
2021-11-07 00:25:02 +00:00
< / form > < / p >
< p > < form action = "/config/save" method = "post" >
< input name = "name" placeholder = "default" size = "20" >
2021-12-26 21:36:12 +00:00
< input type = "submit" value = "{{ _(" Save " ) } } " >
2021-11-07 00:25:02 +00:00
< / form > < / p >
< table border = "black" cellpadding = "3" >
< tbody >
2020-12-31 01:39:32 +00:00
< tr >
2021-12-26 21:36:12 +00:00
< td > < b > {{ _("ID") }}< / b > < / td >
2021-11-07 00:25:02 +00:00
{% if units %}
2021-12-26 21:36:12 +00:00
< td > < b > {{ _("LUN") }}< / b > < / td >
2021-11-07 00:25:02 +00:00
{% endif %}
2021-12-26 21:36:12 +00:00
< td > < b > {{ _("Type") }}< / b > < / td >
< td > < b > {{ _("Status") }}< / b > < / td >
< td > < b > {{ _("File") }}< / b > < / td >
< td > < b > {{ _("Product") }}< / b > < / td >
< td > < b > {{ _("Actions") }}< / b > < / td >
2020-12-31 01:39:32 +00:00
< / tr >
{% for device in devices %}
< tr >
2021-09-19 21:29:01 +00:00
{% if device["id"] not in reserved_scsi_ids %}
2021-11-07 00:25:02 +00:00
< td style = "text-align:center" > {{ device.id }}< / td >
{% if units %}
2021-11-07 02:11:17 +00:00
< td style = "text-align:center" > {{ device.unit }}< / td >
2021-11-07 00:25:02 +00:00
{% endif %}
< td style = "text-align:center" > {{ device.device_type }}< / td >
< td style = "text-align:center" > {{ device.status }}< / td >
2021-11-09 02:55:04 +00:00
< td style = "text-align:left" >
{% if "No Media" in device.status %}
< form action = "/scsi/attach" method = "post" >
< input name = "scsi_id" type = "hidden" value = "{{ device.id }}" >
< input name = "unit" type = "hidden" value = "{{ device.unit }}" >
< input name = "type" type = "hidden" value = "{{ device.device_type }}" >
< input name = "file_size" type = "hidden" value = "{{ device.size }}" >
< select type = "select" name = "file_name" >
2022-02-27 05:46:35 +00:00
{% for f in files|sort(attribute='name') %}
2021-11-09 02:55:04 +00:00
{% if device.device_type == "SCCD" %}
{% if f["name"].lower().endswith(cdrom_file_suffix) %}
< option value = "{{ f[" name " ] } } " > {{ f["name"].replace(base_dir, '') }}< / option >
{% endif %}
{% elif device.device_type == "SCRM" %}
{% if f["name"].lower().endswith(removable_file_suffix) %}
< option value = "{{ f[" name " ] } } " > {{ f["name"].replace(base_dir, '') }}< / option >
{% endif %}
{% elif device.device_type == "SCMO" %}
{% if f["name"].lower().endswith(mo_file_suffix) %}
< option value = "{{ f[" name " ] } } " > {{ f["name"].replace(base_dir, '') }}< / option >
{% endif %}
{% endif %}
{% endfor %}
< / select >
2021-12-26 21:36:12 +00:00
< input type = "submit" value = "{{ _(" Attach " ) } } " >
2021-11-09 02:55:04 +00:00
< / form >
{% else %}
{{ device.file }}
{% endif %}
2021-12-23 17:13:51 +00:00
< / td >
2021-11-07 00:25:02 +00:00
{% if device.vendor == "RaSCSI" %}
< td style = "text-align:center" > {{ device.product }}< / td >
{% else %}
< td style = "text-align:center" > {{ device.vendor }} {{ device.product }}< / td >
{% endif %}
2021-11-07 02:11:17 +00:00
< td style = "text-align:center" >
2021-11-07 00:25:02 +00:00
{% if device.device_type != "-" %}
{% if device.device_type in REMOVABLE_DEVICE_TYPES and "No Media" not in device.status %}
2021-12-26 21:36:12 +00:00
< form action = "/scsi/eject" method = "post" onsubmit = "return confirm('{{ _(" Eject Disk ? WARNING: On Mac OS , eject the Disk in the Finder instead ! " ) } } ' ) " >
2021-11-07 00:25:02 +00:00
< input name = "scsi_id" type = "hidden" value = "{{ device.id }}" >
2021-11-07 02:11:17 +00:00
< input name = "unit" type = "hidden" value = "{{ device.unit }}" >
2021-12-26 21:36:12 +00:00
< input type = "submit" value = "{{ _(" Eject " ) } } " >
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 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* 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 d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* 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 39ca12d8b153c706316ce79f4fec65c9abc60024.
* 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-15 02:51:12 +00:00
< / form >
2020-12-31 01:39:32 +00:00
{% else %}
2021-12-26 21:36:12 +00:00
< form action = "/scsi/detach" method = "post" onsubmit = "return confirm('{{ _(" Detach Device ? " ) } } ' ) " >
2021-11-07 00:25:02 +00:00
< input name = "scsi_id" type = "hidden" value = "{{ device.id }}" >
2021-11-07 02:11:17 +00:00
< input name = "unit" type = "hidden" value = "{{ device.unit }}" >
2021-12-26 21:36:12 +00:00
< input type = "submit" value = "{{ _(" Detach " ) } } " >
2020-12-31 01:39:32 +00:00
< / form >
2021-11-07 00:25:02 +00:00
{% endif %}
2021-09-23 00:16:23 +00:00
< form action = "/scsi/info" method = "post" >
2021-11-07 00:25:02 +00:00
< input name = "scsi_id" type = "hidden" value = "{{ device.id }}" >
2021-11-07 02:11:17 +00:00
< input name = "unit" type = "hidden" value = "{{ device.unit }}" >
2021-12-26 21:36:12 +00:00
< input type = "submit" value = "{{ _(" Info " ) } } " >
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 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* 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 d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* 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 39ca12d8b153c706316ce79f4fec65c9abc60024.
* 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-15 02:51:12 +00:00
< / form >
2021-11-07 02:11:17 +00:00
{% else %}
2021-12-26 21:36:12 +00:00
< form action = "/scsi/reserve" method = "post" onsubmit = "var memo = prompt('{{ _(" Enter a memo for this reservation " ) } } ' ) ; if ( memo = == null ) event . preventDefault ( ) ; document . getElementById ( ' memo_ { { device . id } } ' ) . value = memo;" >
2021-11-07 02:11:17 +00:00
< input name = "scsi_id" type = "hidden" value = "{{ device.id }}" >
< input name = "memo" id = "memo_{{ device.id }}" type = "hidden" value = "" >
2021-12-26 21:36:12 +00:00
< input type = "submit" value = "{{ _(" Reserve " ) } } " >
2021-11-07 02:11:17 +00:00
< / form >
2021-11-07 00:25:02 +00:00
{% endif %}
2020-12-31 01:39:32 +00:00
< / td >
{% else %}
2021-11-07 00:25:02 +00:00
< td class = "inactive" > {{ device.id }}< / td >
{% if units %}
2021-10-13 09:03:31 +00:00
< td class = "inactive" > < / td >
2021-11-07 00:25:02 +00:00
{% endif %}
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 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* 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 d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* 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 39ca12d8b153c706316ce79f4fec65c9abc60024.
* 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-15 02:51:12 +00:00
< td class = "inactive" > < / td >
2021-12-26 21:36:12 +00:00
< td class = "inactive" > {{ _("Reserved ID") }}< / td >
2021-11-07 02:11:17 +00:00
< td class = "inactive" > {{ RESERVATIONS[device.id] }}< / td >
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 210abc775d9a79dd0c631cf3877966a2923f4d5b.
* Revert "Updated parameter handling"
This reverts commit 35302addd59f5f5e1cc032888ba32dcbb426a846.
* 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 d35a15ea8e520517d25e1e1054ad1aeda9f85f2e.
* 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 39ca12d8b153c706316ce79f4fec65c9abc60024.
* 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-15 02:51:12 +00:00
< td class = "inactive" > < / td >
2021-11-07 02:11:17 +00:00
< td class = "inactive" >
2022-02-21 19:31:38 +00:00
< form action = "/scsi/release" method = "post" >
2021-11-07 02:11:17 +00:00
< input name = "scsi_id" type = "hidden" value = "{{ device.id }}" >
2022-02-21 19:31:38 +00:00
< input type = "submit" value = "{{ _(" Release " ) } } " >
2021-11-07 02:11:17 +00:00
< / form >
< / td >
2020-12-31 01:39:32 +00:00
{% endif %}
< / tr >
{% endfor %}
2021-11-07 00:25:02 +00:00
< / tbody >
< / table >
2021-12-26 21:36:12 +00:00
< p > < form action = "/scsi/detach_all" method = "post" onsubmit = "return confirm('{{ _(" Detach all SCSI Devices ? " ) } } ' ) " >
< input type = "submit" value = "{{ _(" Detach All Devices " ) } } " >
2021-11-07 00:25:02 +00:00
< / form > < / p >
< hr / >
< details >
< summary class = "heading" >
2021-12-26 21:36:12 +00:00
{{ _("Image File Management") }}
2021-11-07 00:25:02 +00:00
< / summary >
2021-09-28 20:39:08 +00:00
< ul >
2021-12-26 21:36:12 +00:00
< li > {{ _("Manage image files in the active RaSCSI image directory: < tt > %(directory)s< / tt > with a scan depth of %(scan_depth)s.", directory=base_dir, scan_depth=scan_depth) }}< / li >
< li > {{ _("Select a valid SCSI ID and < a href = \"%(url)s\" > LUN< / a > to attach to. Unless you know what you're doing, always use LUN 0.", url="https://en.wikipedia.org/wiki/Logical_unit_number") }}
2021-11-07 00:25:02 +00:00
< / li >
2022-02-21 17:27:31 +00:00
< li > {{ _("If RaSCSI was unable to detect the media type associated with the image, you get to choose the type from the dropdown.") }}< / li >
2021-09-28 20:39:08 +00:00
< / ul >
2021-11-07 00:25:02 +00:00
< / details >
2021-09-28 20:39:08 +00:00
2021-11-07 00:25:02 +00:00
< table border = "black" cellpadding = "3" >
< tbody >
2022-02-20 17:49:23 +00:00
< tr style = "font-weight: bold;" >
< td > {{ _("File") }}< / td >
< td > {{ _("Size") }}< / td >
2022-02-21 17:27:31 +00:00
< td > {{ _("Parameters and Actions") }}< / td >
2020-12-31 01:39:32 +00:00
< / tr >
2022-02-21 17:27:31 +00:00
{% for file in files|sort(attribute='name') %}
2020-12-31 01:39:32 +00:00
< tr >
2021-10-24 06:00:40 +00:00
{% if file["prop"] %}
< td >
< details >
2021-11-07 00:25:02 +00:00
< summary >
{{ file["name"] }}
< / summary >
2021-11-14 01:38:01 +00:00
< ul style = "list-style: none;" >
2021-10-24 06:00:40 +00:00
{% for key in file["prop"] %}
2021-11-07 00:25:02 +00:00
< li > {{ key }}: {{ file['prop'][key] }}< / li >
2021-10-24 06:00:40 +00:00
{% endfor %}
2021-11-09 03:10:52 +00:00
< form action = "/files/download" method = "post" >
2021-11-14 01:38:01 +00:00
< input name = "file" type = "hidden" value = "{{ CFG_DIR }}/{{ file['name'].replace(base_dir, '') }}.{{ PROPERTIES_SUFFIX }}" >
2021-12-26 21:36:12 +00:00
< input type = "submit" value = "{{ _(" Properties File " ) } } & # 8595 ; " >
2021-11-09 03:10:52 +00:00
< / form >
2021-10-24 06:00:40 +00:00
< / ul >
2021-11-07 00:25:02 +00:00
< / details >
2021-10-24 06:00:40 +00:00
< / td >
2022-08-12 03:19:02 +00:00
{% elif file["archive_contents"] %}
2021-10-26 20:05:15 +00:00
< td >
< details >
2021-11-07 00:25:02 +00:00
< summary >
{{ file["name"] }}
< / summary >
2021-11-14 01:38:01 +00:00
< ul style = "list-style: none;" >
2022-08-12 03:19:02 +00:00
{% for member in file["archive_contents"] %}
{% if not member["is_properties_file"] %}
2021-11-14 01:38:01 +00:00
< li >
2022-08-12 03:19:02 +00:00
{% if member["related_properties_file"] %}
< details >
< summary >
< label > {{ member["path"] }}< / label >
< form action = "/files/extract_image" method = "post" >
< input name = "archive_file" type = "hidden" value = "{{ file['name'] }}" >
< input name = "archive_members" type = "hidden" value = "{{ member[" path " ] } } | { { member [ " related_properties_file " ] } } " >
< input type = "submit" value = "{{ _(" Extract " ) } } " onclick = "processNotify('{{ _(" Extracting a single file . . . " ) } } ' ) " >
< / form >
< / summary >
< ul style = "list-style: none;" >
< li > {{ member["related_properties_file"] }}< / li >
< / ul >
< / details >
{% else %}
< label > {{ member["path"] }}< / label >
< form action = "/files/extract_image" method = "post" >
< input name = "archive_file" type = "hidden" value = "{{ file[" name " ] } } " >
< input name = "archive_members" type = "hidden" value = "{{ member[" path " ] } } " >
< input type = "submit" value = "{{ _(" Extract " ) } } " onclick = "processNotify('{{ _(" Extracting a single file . . . " ) } } ' ) " >
< / form >
{% endif %}
2021-11-14 01:38:01 +00:00
< / li >
{% endif %}
2022-08-12 03:19:02 +00:00
{% endfor %}
2021-10-26 20:05:15 +00:00
< / ul >
2021-11-07 00:25:02 +00:00
< / details >
2021-10-26 20:05:15 +00:00
< / td >
2021-11-07 00:25:02 +00:00
{% else %}
< td > {{ file["name"] }}< / td >
{% endif %}
2020-12-31 01:39:32 +00:00
< td style = "text-align:center" >
2021-09-23 00:16:23 +00:00
< form action = "/files/download" method = "post" >
2021-11-09 03:10:52 +00:00
< input name = "file" type = "hidden" value = "{{ base_dir }}/{{ file['name'] }}" >
2021-12-26 21:36:12 +00:00
< input type = "submit" value = "{{ file['size_mb'] }} {{ _(" MB " ) } } & # 8595 ; " >
2020-12-31 01:39:32 +00:00
< / form >
< / td >
2021-11-07 00:25:02 +00:00
< td >
{% if file["name"] in attached_images %}
< center >
2021-12-26 21:36:12 +00:00
{{ _("Attached!") }}
2021-11-07 00:25:02 +00:00
< / center >
{% else %}
2022-08-12 03:19:02 +00:00
{% if file["archive_contents"] %}
< form action = "/files/extract_image" method = "post" >
< input name = "archive_file" type = "hidden" value = "{{ file['name'] }}" >
{% set pipe = joiner("|") %}
< input name = "archive_members" type = "hidden" value = "{% for member in file[" archive_contents " ] % } { { pipe ( ) } } { { member [ " path " ] } } { % endfor % } " >
< input type = "submit" value = "{{ _(" Extract All " ) } } " onclick = "processNotify('{{ _(" Extracting all files . . . " ) } } ' ) " >
2021-11-07 00:25:02 +00:00
< / form >
{% else %}
< form action = "/scsi/attach" method = "post" >
< input name = "file_name" type = "hidden" value = "{{ file['name'] }}" >
< input name = "file_size" type = "hidden" value = "{{ file['size'] }}" >
2021-12-26 21:36:12 +00:00
< label for = "id" > {{ _("ID") }}< / label >
2022-02-08 00:48:55 +00:00
< select name = "scsi_id" >
2020-12-31 01:39:32 +00:00
{% for id in scsi_ids %}
2021-11-07 00:25:02 +00:00
< option name = "id" value = "{{id}}" { % if id = = recommended_id % } selected { % endif % } >
{{ id }}
< / option >
{% endfor %}
< / select >
2021-12-26 21:36:12 +00:00
< label for = "unit" > {{ _("LUN") }}< / label >
2022-08-28 01:38:23 +00:00
< input name = "unit" type = "number" value = "0" min = "0" max = "31" step = "1" >
2021-11-07 00:25:02 +00:00
{% if file["detected_type"] != "UNDEFINED" %}
< input name = "type" type = "hidden" value = "{{ file['detected_type'] }}" >
2022-02-13 16:28:50 +00:00
{{ file['detected_type_name'] }}
2021-11-07 00:25:02 +00:00
{% else %}
< select name = "type" >
2022-02-13 16:28:50 +00:00
< option selected disabled value = "" >
2022-02-21 17:27:31 +00:00
{{ _("Select media type") }}
2021-11-07 00:25:02 +00:00
< / option >
2022-02-13 16:28:50 +00:00
{% for key, value in device_types.items() %}
2022-02-21 17:27:31 +00:00
{% if key in DISK_DEVICE_TYPES %}
2022-02-08 00:48:55 +00:00
< option value = "{{ key }}" >
2022-02-21 17:27:31 +00:00
{{ value["name"] }}
2021-11-07 00:25:02 +00:00
< / option >
2022-02-08 00:48:55 +00:00
{% endif %}
2020-12-31 01:39:32 +00:00
{% endfor %}
2022-02-08 00:48:55 +00:00
< / select >
2021-11-07 00:25:02 +00:00
{% endif %}
2021-12-26 21:36:12 +00:00
< input type = "submit" value = "{{ _(" Attach " ) } } " >
2021-11-07 00:25:02 +00:00
{% endif %}
2020-12-31 01:39:32 +00:00
< / form >
2021-12-26 21:36:12 +00:00
< form action = "/files/rename" method = "post" onsubmit = "var new_file_name = prompt('{{ _(" Enter new file name for: % ( file_name ) s " , file_name = file["name"]) } } ' , ' { { file [ ' name ' ] } } ' ) ; if ( new_file_name = == null ) event . preventDefault ( ) ; document . getElementById ( ' new_file_name_ { { loop . index } } ' ) . value = new_file_name;" >
2021-12-14 02:50:36 +00:00
< input name = "file_name" type = "hidden" value = "{{ file['name'] }}" >
< input name = "new_file_name" id = "new_file_name_{{ loop.index }}" type = "hidden" value = "" >
2021-12-26 21:36:12 +00:00
< input type = "submit" value = "{{ _(" Rename " ) } } " >
2021-12-14 02:50:36 +00:00
< / form >
2022-06-15 02:03:56 +00:00
< form action = "/files/copy" method = "post" onsubmit = "var copy_file_name = prompt('{{ _(" Save copy of % ( file_name ) s as: " , file_name = file["name"]) } } ' , ' { { file [ ' name ' ] } } ' ) ; if ( copy_file_name = == null ) event . preventDefault ( ) ; document . getElementById ( ' copy_file_name_ { { loop . index } } ' ) . value = copy_file_name;" >
< input name = "file_name" type = "hidden" value = "{{ file['name'] }}" >
< input name = "copy_file_name" id = "copy_file_name_{{ loop.index }}" type = "hidden" value = "" >
< input type = "submit" value = "{{ _(" Copy " ) } } " >
< / form >
2021-12-26 21:36:12 +00:00
< form action = "/files/delete" method = "post" onsubmit = "return confirm('{{ _(" Delete file: % ( file_name ) s ? " , file_name = file["name"]) } } ' ) " >
2021-12-14 02:50:36 +00:00
< input name = "file_name" type = "hidden" value = "{{ file['name'] }}" >
2021-12-26 21:36:12 +00:00
< input type = "submit" value = "{{ _(" Delete " ) } } " >
2020-12-31 01:39:32 +00:00
< / form >
2021-11-07 00:25:02 +00:00
{% endif %}
2020-12-31 01:39:32 +00:00
< / td >
< / tr >
{% endfor %}
2021-11-07 00:25:02 +00:00
< / tbody >
< / table >
2021-12-26 21:36:12 +00:00
< p > < small > {{ _("%(disk_space)s MB disk space remaining on the Pi", disk_space=free_disk) }}< / small > < / p >
2020-12-31 01:39:32 +00:00
2021-11-07 00:25:02 +00:00
< hr / >
< details >
< summary class = "heading" >
2022-02-21 17:27:31 +00:00
{{ _("Attach Peripheral Device") }}
2021-11-07 00:25:02 +00:00
< / summary >
2021-09-28 20:39:08 +00:00
< ul >
2022-02-20 17:49:23 +00:00
< li > {{ _("< a href = \"%(url1)s\" > DaynaPORT SCSI/Link< / a > and < a href = \"%(url2)s\" > X68000 Host Bridge< / a > are network devices.", url1="https://github.com/akuker/RASCSI/wiki/Dayna-Port-SCSI-Link", url2="https://github.com/akuker/RASCSI/wiki/X68000#Host_File_System_driver") }}
2021-11-07 00:25:02 +00:00
< / li >
2022-02-20 17:49:23 +00:00
< ul >
< li > {{ _("If you have a DHCP setup, choose only the interface you have configured the bridge with. You can ignore the inet field when attaching.") }}< / li >
2021-12-26 21:36:12 +00:00
< li > {{ _("Configure the network bridge by running easyinstall.sh, or follow the < a href = \"%(url)s\" > manual steps in the wiki< / a > .", url="https://github.com/akuker/RASCSI/wiki/Dayna-Port-SCSI-Link#manual-setup") }}
2022-02-20 17:49:23 +00:00
{% if bridge_configured %}
< li > {{ _("The < tt > rascsi_bridge< / tt > network bridge is active and ready to be used by an emulated network adapter!") }}< / li >
{% endif %}
2021-11-07 00:25:02 +00:00
< / li >
2022-02-20 17:49:23 +00:00
< / ul >
< li > {{ _("The Printer and Host Services device are currently supported on compatible Atari systems, and require < a href = \"%(url)s\" > driver software< / a > to be installed on the host system.", url="https://www.hddriver.net/en/rascsi_tools.html") }}
2022-02-15 12:06:27 +00:00
< / li >
< / ul >
< / details >
2022-02-19 08:04:14 +00:00
< table border = "black" cellpadding = "3" >
2022-02-20 17:49:23 +00:00
< tr style = "font-weight: bold;" >
2022-02-21 17:27:31 +00:00
< td > {{ _("Peripheral") }}< / td >
< td > {{ _("Parameters and Actions") }}< / td >
2022-02-20 17:49:23 +00:00
< / tr >
2022-02-21 17:27:31 +00:00
{% for type in PERIPHERAL_DEVICE_TYPES %}
2022-02-19 08:04:14 +00:00
< tr >
< td >
2022-02-21 17:27:31 +00:00
< div > {{ device_types[type]["name"] }}< / div >
2022-02-19 08:04:14 +00:00
< / td >
< td >
2022-02-20 17:49:23 +00:00
< form action = "/scsi/attach_device" method = "post" >
2022-02-19 08:04:14 +00:00
< input name = "type" type = "hidden" value = "{{ type }}" >
2022-02-21 17:27:31 +00:00
{% for key, value in device_types[type]["params"].items() %}
2022-02-19 08:04:14 +00:00
< label for = "{{ key }}" > {{ key }}:< / label >
{% if value.isnumeric() %}
2022-08-28 01:38:23 +00:00
< input name = "{{ key }}" type = "number" value = "{{ value }}" >
2022-02-20 17:49:23 +00:00
{% elif key == "interface" %}
< select name = "interface" >
{% for if in netinfo["ifs"] %}
< option value = "{{ if }}" >
{{ if }}
< / option >
{% endfor %}
< / select >
2022-02-19 08:04:14 +00:00
{% else %}
2022-02-20 17:49:23 +00:00
< input name = "{{ key }}" type = "text" size = "{{ value|length }}" placeholder = "{{ value }}" >
2022-02-19 08:04:14 +00:00
{% endif %}
{% endfor %}
2022-02-15 12:06:27 +00:00
< label for = "scsi_id" > {{ _("SCSI ID:") }}< / label >
< select name = "scsi_id" >
{% for id in scsi_ids %}
< option value = "{{ id }}" { % if id = = recommended_id % } selected { % endif % } >
{{ id }}
< / option >
{% endfor %}
< / select >
< label for = "unit" > {{ _("LUN") }}< / label >
2022-08-28 01:38:23 +00:00
< input name = "unit" type = "number" value = "0" min = "0" max = "31" step = "1" >
2022-02-15 12:06:27 +00:00
< input type = "submit" value = "{{ _(" Attach " ) } } " >
< / form >
< / td >
< / tr >
2022-02-19 08:04:14 +00:00
{% endfor %}
2022-02-15 12:06:27 +00:00
< / table >
2022-02-20 17:49:23 +00:00
{% if macproxy_configured %}
< p > < small > {{ _("Macproxy is running at %(ip_addr)s (default port 5000)", ip_addr=ip_addr) }}< / small > < / p >
{% else %}
< p > < small > {{ _("Install < a href = \"%(url)s\" > Macproxy< / a > to browse the Web with any vintage browser. It's not just for Macs!", url="https://github.com/akuker/RASCSI/wiki/Vintage-Web-Proxy#macproxy") }}< / small > < / p >
{% endif %}
2022-02-15 12:06:27 +00:00
2021-11-07 00:25:02 +00:00
< hr / >
< details >
< summary class = "heading" >
2021-12-26 21:36:12 +00:00
{{ _("Upload File") }}
2021-11-07 00:25:02 +00:00
< / summary >
2021-09-28 20:39:08 +00:00
< ul >
2021-12-26 21:36:12 +00:00
< li > {{ _("Uploads file to < tt > %(directory)s< / tt > . The largest file size accepted is %(max_file_size)s MB.", directory=base_dir, max_file_size=max_file_size) }}< / li >
< li > {{ _("For unrecognized file types, try renaming hard drive images to '.hds', CD-ROM images to '.iso', and removable drive images to '.hdr' before uploading.") }}< / li >
< li > {{ _("Recognized file types: %(valid_file_suffix)s", valid_file_suffix=valid_file_suffix) }}< / li >
2021-09-28 20:39:08 +00:00
< / ul >
2021-11-07 00:25:02 +00:00
< / details >
< table style = "border: none" >
< tr style = "border: none" >
< td style = "border: none; vertical-align:top;" >
< form name = "dropper" action = "/files/upload" method = "post" class = "dropzone dz-clickable" enctype = "multipart/form-data" id = "dropper" > < / form >
< / td >
< / tr >
< / table >
< script type = "application/javascript" >
2021-09-22 05:51:06 +00:00
Dropzone.options.dropper = {
paramName: 'file',
2021-11-07 00:25:02 +00:00
acceptedFiles: '{{ valid_file_suffix }}',
2021-09-22 05:51:06 +00:00
chunking: true,
forceChunking: true,
url: '/files/upload',
2021-11-07 00:25:02 +00:00
maxFilesize: {{ max_file_size }}, // MB
2021-12-28 01:18:56 +00:00
chunkSize: 1000000, // bytes
dictDefaultMessage: "{{ _("Drop files here to upload") }}",
dictFallbackMessage: "{{ _("Your browser does not support drag'n'drop file uploads.") }}",
dictFallbackText: "{{ _("Please use the fallback form below to upload your files like in the olden days.") }}",
dictFileTooBig: "{{ _("File is too big: {{filesize}}MB. Max filesize: {{maxFilesize}}MB.") }}",
dictInvalidFileType: "{{ _("You can't upload files of this type.") }}",
dictResponseError: "{{ _("Server responded with code: {{statusCode}}") }}",
dictCancelUpload:" {{ _("Cancel upload") }}",
dictUploadCanceled: "{{ _("Upload canceled.") }}",
dictCancelUploadConfirmation: "{{ _("Are you sure you want to cancel this upload?") }}",
dictRemoveFile: "{{ _("Remove file") }}",
dictMaxFilesExceeded: "{{ _("You can not upload any more files.") }}",
dictFileSizeUnits: {
tb: "{{ _("TB") }}",
gb: "{{ _("GB") }}",
mb: "{{ _("MB") }}",
kb: "{{ _("KB") }}",
2022-08-28 01:38:23 +00:00
b: "{{ _("B") }}"
2021-12-28 01:18:56 +00:00
}
2021-09-21 23:55:08 +00:00
}
2021-11-07 00:25:02 +00:00
< / script >
2020-12-31 01:39:32 +00:00
2021-11-07 00:25:02 +00:00
< hr / >
2020-12-31 01:39:32 +00:00
2021-11-07 00:25:02 +00:00
< details >
< summary class = "heading" >
2021-12-26 21:36:12 +00:00
{{ _("Download File to Images") }}
2021-11-07 00:25:02 +00:00
< / summary >
2021-09-28 20:39:08 +00:00
< ul >
2021-12-26 21:36:12 +00:00
< li > {{ _("Given a URL, download that file to the < tt > %(directory)s< / tt > directory.", directory=base_dir) }}< / li >
2021-09-28 20:39:08 +00:00
< / ul >
2021-11-07 00:25:02 +00:00
< / details >
< table style = "border: none" >
< tr style = "border: none" >
< td style = "border: none; vertical-align:top;" >
< form action = "/files/download_to_images" method = "post" >
2021-12-26 21:36:12 +00:00
< label for = "url" > {{ _("URL:") }}< / label >
< input name = "url" placeholder = "{{ _(" URL " ) } } " required = "" type = "url" >
< input type = "submit" value = "{{ _(" Download " ) } } " onclick = "processNotify('{{ _(" Downloading File to Images . . . " ) } } ' ) " >
2021-11-07 00:25:02 +00:00
< / form >
< / td >
< / tr >
< / table >
< hr / >
< details >
< summary class = "heading" >
2021-12-26 21:36:12 +00:00
{{ _("Download File to AppleShare") }}
2021-11-07 00:25:02 +00:00
< / summary >
2021-10-20 00:43:15 +00:00
< ul >
2021-12-26 21:36:12 +00:00
< li > {{ _("Given a URL, download that file to the < tt > %(directory)s< / tt > directory and share it over AFP.", directory=AFP_DIR) }}< / li >
< li > {{ _("Manage the files you download here through AppleShare on your vintage Mac.") }}< / li >
< li > {{ _("Requires < a href = \"%(url)s\" > Netatalk< / a > to be installed and configured correctly for your network.", url="https://github.com/akuker/RASCSI/wiki/AFP-File-Sharing") }}< / li >
2021-10-20 00:43:15 +00:00
< / ul >
2021-11-07 00:25:02 +00:00
< / details >
{% if netatalk_configured %}
< table style = "border: none" >
< tr style = "border: none" >
< td style = "border: none; vertical-align:top;" >
< form action = "/files/download_to_afp" method = "post" >
2021-12-26 21:36:12 +00:00
< label for = "url" > {{ _("URL:") }}< / label >
< input name = "url" placeholder = "{{ _(" URL " ) } } " required = "" type = "url" >
< input type = "submit" value = "{{ _(" Download " ) } } " onclick = "processNotify('{{ _(" Downloading File to AppleShare . . . " ) } } ' ) " >
2021-11-07 00:25:02 +00:00
< / form >
< / td >
< / tr >
< / table >
{% if netatalk_configured == 1 %}
2021-12-26 21:36:12 +00:00
< p > < small > {{ _("The AppleShare server is running. No active connections.") }}< / small > < / p >
2021-11-07 00:25:02 +00:00
{% elif netatalk_configured == 2 %}
2021-12-26 21:36:12 +00:00
< p > < small > {{ _("%(value)d active AFP connection", value=(netatalk_configured - 1)) }}< / small > < / p >
2021-11-07 00:25:02 +00:00
{% elif netatalk_configured > 2 %}
2021-12-26 21:36:12 +00:00
< p > < small > {{ _("%(value)d active AFP connections", value=(netatalk_configured - 1)) }}< / small > < / p >
2021-11-07 00:25:02 +00:00
{% endif %}
{% else %}
2021-12-26 21:36:12 +00:00
< p > {{ _("Install < a href = \"%(url)s\" > Netatalk< / a > to use the AppleShare File Server.", url="https://github.com/akuker/RASCSI/wiki/AFP-File-Sharing") }}< / p >
2021-11-07 00:25:02 +00:00
{% endif %}
< hr / >
< details >
< summary class = "heading" >
2021-12-26 21:36:12 +00:00
{{ _("Download File and Create CD-ROM image") }}
2021-11-07 00:25:02 +00:00
< / summary >
2021-09-28 20:39:08 +00:00
< ul >
2021-12-26 21:36:12 +00:00
< li > {{ _("Create an ISO file system CD-ROM image with the downloaded file, and mount it on the given SCSI ID.") }}< / li >
< li > {{ _("HFS is for Mac OS, Joliet for Windows, and Rock Ridge for POSIX.") }}< / li >
< li > {{ _("On Mac OS, a < a href = \"%(url)s\" > compatible CD-ROM driver< / a > is required.", url="https://github.com/akuker/RASCSI/wiki/Drive-Setup#Mounting_CD_ISO_or_MO_images") }}< / li >
< li > {{ _("If the downloaded file is a zip archive, we will attempt to unzip it and store the resulting files.") }}< / li >
2021-09-28 20:39:08 +00:00
< / ul >
2021-11-07 00:25:02 +00:00
< / details >
< table style = "border: none" >
< tr style = "border: none" >
< td style = "border: none; vertical-align:top;" >
2021-12-26 21:36:12 +00:00
< label for = "scsi_id" > {{ _("SCSI ID:") }}< / label >
2021-11-07 00:25:02 +00:00
< form action = "/files/download_to_iso" method = "post" >
< select name = "scsi_id" >
{% for id in scsi_ids %}
< option value = "{{ id }}" { % if id = = recommended_id % } selected { % endif % } >
{{ id }}
< / option >
{% endfor %}
< / select >
2021-12-26 21:36:12 +00:00
< label for = "url" > {{ _("URL:") }}< / label >
< input name = "url" placeholder = "{{ _(" URL " ) } } " required = "" type = "url" >
< label for = "type" > {{ _("Type:") }}< / label >
2021-12-13 00:52:35 +00:00
< select name = "type" >
< option value = "-hfs" >
HFS
< / option >
< option value = "-iso-level 1" >
ISO-9660 Level 1
< / option >
< option value = "-iso-level 2" >
ISO-9660 Level 2
< / option >
< option value = "-iso-level 3" >
ISO-9660 Level 3
< / option >
< option value = "-J" >
Joliet
< / option >
< option value = "-r" >
Rock Ridge
< / option >
< / select >
2021-12-26 21:36:12 +00:00
< input type = "submit" value = "{{ _(" Download and Mount CD-ROM image " ) } } " onclick = "processNotify('{{ _(" Downloading File and generating CD-ROM image . . . " ) } } ' ) " >
2021-11-07 00:25:02 +00:00
< / form >
< / td >
< / tr >
< / table >
< hr / >
< details >
< summary class = "heading" >
2021-12-26 21:36:12 +00:00
{{ _("Create Empty Disk Image File") }}
2021-11-07 00:25:02 +00:00
< / summary >
2021-09-28 20:39:08 +00:00
< ul >
2021-12-26 21:36:12 +00:00
< li > {{ _("The Generic image type is recommended for most computer platforms.") }}< / li >
< li > {{ _("APPLE GENUINE (.hda) and NEC GENUINE (.hdn) image types will make RaSCSI behave as a particular drive type that are recognized by Mac and PC98 systems, respectively.") }}< / li >
< li > {{ _("SASI images should only be used on the original Sharp X68000, or other legacy systems that utilize this pre-SCSI standard.") }}< / li >
2021-09-28 20:39:08 +00:00
< / ul >
2021-11-07 00:25:02 +00:00
< / details >
< table style = "border: none" >
< tr style = "border: none" >
< td style = "border: none; vertical-align:top;" >
< form action = "/files/create" method = "post" >
2021-12-26 21:36:12 +00:00
< label for = "file_name" > {{ _("File Name:") }}< / label >
< input name = "file_name" placeholder = "{{ _(" File Name " ) } } " required = "" type = "text" >
< label for = "type" > {{ _("Type:") }}< / label >
2021-11-07 00:25:02 +00:00
< select name = "type" >
< option value = "hds" >
2021-12-26 21:36:12 +00:00
{{ _("SCSI Hard Disk image (Generic) [.hds]") }}
2021-11-07 00:25:02 +00:00
< / option >
< option value = "hda" >
2021-12-26 21:36:12 +00:00
{{ _("SCSI Hard Disk image (APPLE GENUINE) [.hda]") }}
2021-11-07 00:25:02 +00:00
< / option >
< option value = "hdn" >
2021-12-26 21:36:12 +00:00
{{ _("SCSI Hard Disk image (NEC GENUINE) [.hdn]") }}
2021-11-07 00:25:02 +00:00
< / option >
< option value = "hdr" >
2021-12-26 21:36:12 +00:00
{{ _("SCSI Removable Media Disk image (Generic) [.hdr]") }}
2021-11-07 00:25:02 +00:00
< / option >
< option value = "hdf" >
2021-12-26 21:36:12 +00:00
{{ _("SASI Hard Disk image (Legacy) [.hdf]") }}
2021-11-07 00:25:02 +00:00
< / option >
< / select >
2021-12-26 21:36:12 +00:00
< label for = "size" > {{ _("Size:") }}< / label >
2022-08-28 01:38:23 +00:00
< input name = "size" type = "number" placeholder = "{{ _(" MB " ) } } " min = "1" max = "262144" required >
2021-12-26 21:36:12 +00:00
< input type = "submit" value = "{{ _(" Create " ) } } " >
2021-11-07 00:25:02 +00:00
< / form >
< / td >
< / tr >
< / table >
< hr / >
< details >
< summary class = "heading" >
2021-12-26 21:36:12 +00:00
{{ _("Create Named Drive") }}
2021-11-07 00:25:02 +00:00
< / summary >
2021-09-28 20:39:08 +00:00
< ul >
2021-12-26 21:36:12 +00:00
< li > {{ _("Create pairs of images and properties files from a list of real-life drives.") }}< / li >
< li > {{ _("This will make RaSCSI use certain vendor strings and block sizes that may improve compatibility with certain systems.") }}< / li >
2021-09-28 20:39:08 +00:00
< / ul >
2021-11-07 00:25:02 +00:00
< / details >
2021-12-26 21:36:12 +00:00
< p > < a href = "/drive/list" > {{ _("Create a named disk image that mimics real-life drives") }}< / a > < / p >
2021-09-28 20:39:08 +00:00
2021-11-07 00:25:02 +00:00
< hr / >
2021-09-19 21:29:01 +00:00
2021-11-07 00:25:02 +00:00
< details >
< summary class = "heading" >
2021-12-26 21:36:12 +00:00
{{ _("Logging") }}
2021-11-07 00:25:02 +00:00
< / summary >
2021-09-28 20:39:08 +00:00
< ul >
2021-12-26 21:36:12 +00:00
< li > {{ _("Fetch a certain number of lines of system logs with the given scope.") }}< / li >
2021-09-28 20:39:08 +00:00
< / ul >
2021-11-07 00:25:02 +00:00
< / details >
< table style = "border: none" >
< tr style = "border: none" >
< td style = "border: none; vertical-align:top;" >
< form action = "/logs/show" method = "post" >
2021-12-26 21:36:12 +00:00
< label for = "lines" > {{ _("Log Lines:") }}< / label >
2022-08-28 01:38:23 +00:00
< input name = "lines" type = "number" value = "200" min = "0" max = "99999" step = "100" >
2021-12-26 21:36:12 +00:00
< label for = "scope" > {{ _("Scope:") }}< / label >
2021-11-07 00:25:02 +00:00
< select name = "scope" >
2022-02-28 17:49:48 +00:00
< option value = "" >
{{ _("All logs") }}
2021-11-07 00:25:02 +00:00
< / option >
< option value = "rascsi" >
2022-02-28 17:49:48 +00:00
rascsi
2021-11-07 00:25:02 +00:00
< / option >
< option value = "rascsi-web" >
2022-02-28 17:49:48 +00:00
rascsi-web
2021-11-07 00:25:02 +00:00
< / option >
2022-02-27 05:46:35 +00:00
< option value = "rascsi-oled" >
2022-02-28 17:49:48 +00:00
rascsi-oled
< / option >
< option value = "rascsi-ctrlboard" >
rascsi-ctrlboard
2022-02-27 05:46:35 +00:00
< / option >
2021-11-07 00:25:02 +00:00
< / select >
2021-12-26 21:36:12 +00:00
< input type = "submit" value = "{{ _(" Show Logs " ) } } " >
2021-11-07 00:25:02 +00:00
< / form >
< / td >
< / tr >
< / table >
< hr / >
< details >
< summary class = "heading" >
2021-12-26 21:36:12 +00:00
{{ _("Server Log Level") }}
2021-11-07 00:25:02 +00:00
< / summary >
2021-09-28 20:39:08 +00:00
< ul >
2021-12-26 21:36:12 +00:00
< li > {{ _("Change the log level of the RaSCSI backend process.") }}< / li >
< li > {{ _("The current dropdown selection indicates the active log level.") }}< / li >
2021-09-28 20:39:08 +00:00
< / ul >
2021-11-07 00:25:02 +00:00
< / details >
< table style = "border: none" >
< tr style = "border: none" >
< td style = "border: none; vertical-align:top;" >
< form action = "/logs/level" method = "post" >
2021-12-26 21:36:12 +00:00
< label for = "level" > {{ _("Log Level:") }}< / label >
2021-11-07 00:25:02 +00:00
< select name = "level" >
{% for level in log_levels %}
< option value = "{{ level }}" { % if level = = current_log_level % } selected { % endif % } >
{{ level }}
< / option >
{% endfor %}
< / select >
2021-12-26 21:36:12 +00:00
< input type = "submit" value = "{{ _(" Set Log Level " ) } } " >
2021-11-07 00:25:02 +00:00
< / form >
< / td >
< / tr >
< / table >
< hr / >
2021-12-27 21:21:56 +00:00
< details >
< summary class = "heading" >
{{ _("Language") }}
< / summary >
< ul >
< li > {{ _("Change the Web Interface language.") }}< / li >
< / ul >
< / details >
< table style = "border: none" >
< tr style = "border: none" >
< td style = "border: none; vertical-align:top;" >
< form action = "/language" method = "post" >
< label for = "language" > {{ _("Language:") }}< / label >
< select name = "locale" >
{% for locale in locales %}
< option value = "{{ locale.language }}" >
{{ locale.language }} - {{ locale.display_name }}
< / option >
{% endfor %}
< / select >
< input type = "submit" value = "{{ _(" Change Language " ) } } " >
< / form >
< / td >
< / tr >
< / table >
< hr / >
2021-11-07 00:25:02 +00:00
< details >
< summary class = "heading" >
2021-12-26 21:36:12 +00:00
{{ _("Raspberry Pi Operations") }}
2021-11-07 00:25:02 +00:00
< / summary >
2021-09-28 20:39:08 +00:00
< ul >
2021-12-26 21:36:12 +00:00
< li > {{ _("Reboot or shut down the Raspberry Pi that RaSCSI is running on.") }}< / li >
< li > {{ _("IMPORTANT: Always shut down the Pi before turning off the power. Failing to do so may lead to data loss.") }}< / li >
2021-09-28 20:39:08 +00:00
< / ul >
2021-11-07 00:25:02 +00:00
< / details >
< table style = "border: none" >
< tr style = "border: none" >
< td style = "border: none; vertical-align:top;" >
2021-12-26 21:36:12 +00:00
< form action = "/pi/reboot" method = "post" onclick = "if (confirm('{{ _(" Reboot the Raspberry Pi ? " ) } } ' ) ) shutdownNotify ( ' { { _ ( " Rebooting the Raspberry Pi . . . " ) } } ' ) ; else event . preventDefault ( ) ; " >
< input type = "submit" value = "{{ _(" Reboot Raspberry Pi " ) } } " >
2021-11-07 00:25:02 +00:00
< / form >
< / td >
< td style = "border: none; vertical-align:top;" >
2021-12-26 21:36:12 +00:00
< form action = "/pi/shutdown" method = "post" onclick = "if (confirm('{{ _(" Shut down the Raspberry Pi ? " ) } } ' ) ) shutdownNotify ( ' { { _ ( " Shutting down the Raspberry Pi . . . " ) } } ' ) ; else event . preventDefault ( ) ; " >
< input type = "submit" value = "{{ _(" Shut Down Raspberry Pi " ) } } " >
2021-11-07 00:25:02 +00:00
< / form >
< / td >
< / tr >
< / table >
{% endblock content %}