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 %}
{% for config in config_files %}
< 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" >
{% for f in files %}
{% 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" >
< form action = "/scsi/unreserve" method = "post" >
< input name = "scsi_id" type = "hidden" value = "{{ device.id }}" >
2021-12-26 21:36:12 +00:00
< input type = "submit" value = "{{ _(" Unreserve " ) } } " >
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 >
2021-12-26 21:36:12 +00:00
< li > {{ _("If RaSCSI was unable to detect the device type associated with the image, you can choose the type from the dropdown.") }}< / li >
< li > {{ _("Types: SAHD = SASI HDD | SCHD = SCSI HDD | SCRM = Removable | SCMO = Magneto-Optical | SCCD = CD-ROM | SCBR = Host Bridge | SCDP = DaynaPORT") }}< / 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 >
2020-12-31 01:39:32 +00:00
< tr >
2021-12-26 21:36:12 +00:00
< td > < b > {{ _("File") }}< / b > < / td >
< td > < b > {{ _("Size") }}< / b > < / td >
< td > < b > {{ _("Actions") }}< / b > < / td >
2020-12-31 01:39:32 +00:00
< / tr >
{% for file in files %}
< 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 >
2021-11-09 03:10:52 +00:00
{% elif file["zip_members"] %}
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;" >
2021-11-09 03:10:52 +00:00
{% for member in file["zip_members"] %}
2021-11-14 01:38:01 +00:00
{% if not member.lower().endswith(PROPERTIES_SUFFIX) %}
2021-11-07 00:25:02 +00:00
< li >
2021-11-14 01:38:01 +00:00
{% if member + "." + PROPERTIES_SUFFIX in file["zip_members"] %}
< details > < summary > {{ member }}
< form action = "/files/unzip" method = "post" >
< input name = "zip_file" type = "hidden" value = "{{ file['name'] }}" >
< input name = "zip_member" type = "hidden" value = "{{ member }}" >
2021-12-26 21:36:12 +00:00
< input type = "submit" value = "{{ _(" Unzip " ) } } " onclick = "processNotify('{{ _(" Unzipping a single file . . . " ) } } ' ) " >
2021-11-14 01:38:01 +00:00
< / form >
< / summary >
< ul style = "list-style: none;" >
< li >
{{ member + "." + PROPERTIES_SUFFIX }}
< / li >
< / ul >
< / details >
{% else %}
2021-11-09 03:10:52 +00:00
< label for = "zip_member" > {{ member }}< / label >
2021-11-07 00:25:02 +00:00
< form action = "/files/unzip" method = "post" >
2021-11-09 03:10:52 +00:00
< input name = "zip_file" type = "hidden" value = "{{ file['name'] }}" >
< input name = "zip_member" type = "hidden" value = "{{ member }}" >
2021-12-26 21:36:12 +00:00
< input type = "submit" value = "{{ _(" Unzip " ) } } " onclick = "processNotify('{{ _(" Unzipping a single file . . . " ) } } ' ) " >
2021-11-07 00:25:02 +00:00
< / form >
2021-11-14 01:38:01 +00:00
{% endif %}
2021-11-07 00:25:02 +00:00
< / li >
2021-11-14 01:38:01 +00:00
{% endif %}
2021-10-26 20:05:15 +00:00
{% endfor %}
< / 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 %}
2021-11-09 03:10:52 +00:00
{% if file["name"].lower().endswith(ARCHIVE_FILE_SUFFIX) %}
2021-11-07 00:25:02 +00:00
< form action = "/files/unzip" method = "post" >
2021-11-09 03:10:52 +00:00
< input name = "zip_file" type = "hidden" value = "{{ file['name'] }}" >
< input name = "zip_members" type = "hidden" value = "{{ file['zip_members'] }}" >
2021-12-26 21:36:12 +00:00
< input type = "submit" value = "{{ _(" Unzip All " ) } } " onclick = "processNotify('{{ _(" Unzipping 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 >
2021-10-24 17:19:07 +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 >
2021-11-07 00:25:02 +00:00
< input name = "unit" type = "number" size = "2" value = "0" min = "0" max = "31" >
{% if file["detected_type"] != "UNDEFINED" %}
< input name = "type" type = "hidden" value = "{{ file['detected_type'] }}" >
{{ file["detected_type"] }}
{% else %}
< select name = "type" >
< option selected value = "" >
2021-12-26 21:36:12 +00:00
{{ _("Type") }}
2021-11-07 00:25:02 +00:00
< / option >
{% for d in device_types %}
< option value = "{{ d }}" >
{{ d }}
< / option >
2020-12-31 01:39:32 +00:00
{% endfor %}
2021-11-07 00:25:02 +00:00
{% endif %}
2021-09-26 03:27:43 +00:00
< / select >
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 >
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 / >
2021-09-23 19:43:05 +00:00
2021-11-07 00:25:02 +00:00
< details >
< summary class = "heading" >
2021-12-26 21:36:12 +00:00
{{ _("Attach Ethernet Adapter") }}
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 > {{ _("Emulates a SCSI DaynaPORT Ethernet Adapter. < a href = \"%(url)s\" > Host drivers and configuration required< / a > .", url="https://github.com/akuker/RASCSI/wiki/Dayna-Port-SCSI-Link") }}
2021-11-07 00:25:02 +00:00
< / li >
2021-12-26 21:36:12 +00:00
< li > {{ _("If you have a DHCP setup, choose only the interface you have configured the bridge with. You can ignore the Static IP fields when attaching.") }}< / li >
< 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") }}
2021-11-07 00:25:02 +00:00
< / li >
< li style = "list-style: none" > {% if bridge_configured %}< / li >
2021-12-26 21:36:12 +00:00
< li > {{ _("The < tt > rascsi_bridge< / tt > interface is active and ready to be used by DaynaPORT!") }}< / li >
2021-11-07 00:25:02 +00:00
< li style = "list-style: none" > {% endif %}< / 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 = "/daynaport/attach" method = "post" >
2021-12-26 21:36:12 +00:00
< label for = "if" > {{ _("Interface:") }}< / label >
2021-11-07 00:25:02 +00:00
< select name = "if" >
{% for if in netinfo["ifs"] %}
< option value = "{{ if }}" >
{{ if }}
< / option >
{% endfor %}
< / select >
2021-12-26 21:36:12 +00:00
< label for = "ip" > {{ _("Static IP (optional):") }}< / label >
2021-11-07 00:25:02 +00:00
< input name = "ip" type = "text" size = "15" placeholder = "10.10.20.1" minlength = "7" maxlength = "15" pattern = "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$" >
< input name = "mask" type = "number" size = "2" placeholder = "24" min = "16" max = "30" >
2021-12-26 21:36:12 +00:00
< label for = "scsi_id" > {{ _("SCSI ID:") }}< / label >
2021-11-07 00:25:02 +00:00
< 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
< input type = "submit" value = "{{ _(" Attach " ) } } " >
2021-11-07 00:25:02 +00:00
< / form >
< / td >
< / tr >
< / table >
2021-11-09 03:11:27 +00:00
{% if macproxy_configured %}
2021-12-26 21:36:12 +00:00
< p > < small > {{ _("Macproxy is running at %(ip_addr)s (default port 5000)", ip_addr=ip_addr) }}< / small > < / p >
2021-11-09 03:11:27 +00:00
{% else %}
2021-12-26 21:36:12 +00:00
< 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 >
2021-11-09 03:11:27 +00:00
{% endif %}
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-09-22 05:51:06 +00:00
chunkSize: 1000000 // bytes
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 >
< input name = "size" type = "number" placeholder = "{{ _(" MB " ) } } " min = "1" size = "6" required >
< 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 >
2021-11-07 00:25:02 +00:00
< input name = "lines" type = "number" placeholder = "200" min = "1" size = "4" >
2021-12-26 21:36:12 +00:00
< label for = "scope" > {{ _("Scope:") }}< / label >
2021-11-07 00:25:02 +00:00
< select name = "scope" >
< option value = "default" >
default
< / option >
< option value = "rascsi" >
rascsi.service
< / option >
< option value = "rascsi-web" >
rascsi-web.service
< / option >
< / 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 %}