mirror of
https://github.com/akuker/RASCSI.git
synced 2026-04-20 11:17:58 +00:00
Rebrand project to PiSCSI (#1016)
* Rebrand project to PiSCSI - rascsi ->piscsi - rasctl -> scsictl - rasdump -> scsidump - ras* -> piscsi* (rasutil -> piscsi_util, etc.) * Refined the formatting and wording of the app startup banner * Kept some references to rascsi and rasctl where backwards compatibility is concerned * Point to the new github repo URL Co-authored-by: nucleogenic <nr@nucleogenic.com> Co-authored-by: Uwe Seimet <Uwe.Seimet@seimet.de>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# RaSCSI Web
|
||||
# PiSCSI Web
|
||||
|
||||
## Setup local dev env
|
||||
|
||||
@@ -18,16 +18,16 @@ $ BASE_DIR=/tmp/images/ PATH=$PATH:`pwd`/mock/bin/ cd python/web && PYTHON_COMMO
|
||||
### Mocks for local development
|
||||
|
||||
You may edit the files under `mock/bin` to simulate Linux command responses.
|
||||
TODO: rascsi-web uses protobuf commands to send and receive data from rascsi.
|
||||
TODO: piscsi-web uses protobuf commands to send and receive data from piscsi.
|
||||
A separate mocking solution will be needed for this interface.
|
||||
|
||||
## (Optional) Pushing to the Pi via git
|
||||
|
||||
This is a setup for pushing code changes from your local development environment to the Raspberry Pi without a roundtrip to the remote GitHub repository.
|
||||
|
||||
Setup a bare repo on the rascsi
|
||||
Setup a bare repo on the piscsi
|
||||
```
|
||||
$ ssh pi@rascsi
|
||||
$ ssh pi@piscsi
|
||||
$ mkdir /home/pi/dev.git && cd /home/pi/dev.git
|
||||
$ git --bare init
|
||||
Initialized empty Git repository in /home/pi/dev.git
|
||||
@@ -35,8 +35,8 @@ Initialized empty Git repository in /home/pi/dev.git
|
||||
|
||||
Locally
|
||||
```
|
||||
$ cd ~/source/RASCSI
|
||||
$ git remote add pi ssh://pi@rascsi/home/pi/dev.git
|
||||
$ cd ~/source/PISCSI
|
||||
$ git remote add pi ssh://pi@piscsi/home/pi/dev.git
|
||||
$ git push pi master
|
||||
```
|
||||
|
||||
@@ -54,8 +54,8 @@ $ pybabel --help
|
||||
```
|
||||
|
||||
To create a new localization, it needs to be added to the LANGAUGES constant in
|
||||
web/settings.py. To localize messages coming from the RaSCSI backend, update also code in
|
||||
raspberrypi/localizer.cpp in the RaSCSI C++ code.
|
||||
web/settings.py. To localize messages coming from the PiSCSI backend, update also code in
|
||||
raspberrypi/localizer.cpp in the PiSCSI C++ code.
|
||||
|
||||
Once this is done, it is time to localize the Python code. The below steps are derived from the [Flask-Babel documentation](https://python-babel.github.io/flask-babel/index.html#translating-applications).
|
||||
|
||||
@@ -118,7 +118,7 @@ msgstr ""
|
||||
|
||||
### Contributing to the project
|
||||
|
||||
New or updated localizations are treated just like any other code change. See the [project README](https://github.com/akuker/RASCSI/tree/rdmark-readme-contributions#how-do-i-contribute) for further information.
|
||||
New or updated localizations are treated just like any other code change. See the [project README](https://github.com/PiSCSI/piscsi/tree/master#how-do-i-contribute) for further information.
|
||||
|
||||
### (Optional) See translation stats for a localization
|
||||
Install the gettext package and use msgfmt to see the translation progress.
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Mock responses to rascsi-web
|
||||
# Mock responses to piscsi-web
|
||||
case $1 in
|
||||
"show")
|
||||
echo "rascsi_bridge 8000.dca632b05dd1 no eth0"
|
||||
echo "piscsi_bridge 8000.dca632b05dd1 no eth0"
|
||||
;;
|
||||
|
||||
**)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Mock responses to rascsi-web
|
||||
# Mock responses to piscsi-web
|
||||
case $1 in
|
||||
-n)
|
||||
echo "logs $*"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Mock responses to rascsi-web
|
||||
# Mock responses to piscsi-web
|
||||
case $1 in
|
||||
is-active)
|
||||
echo "is-active"
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>RaSCSI-Web is Starting</title>
|
||||
<title>PiSCSI Web UI is Starting</title>
|
||||
<meta http-equiv="refresh" content="2">
|
||||
</head>
|
||||
</html>
|
||||
<body>
|
||||
<center>
|
||||
<h1>RaSCSI-Web is Starting....</h1>
|
||||
<h1>PiSCSI Web UI is Starting....</h1>
|
||||
<h2>This page will automatically refresh.</h2>
|
||||
<p>First boot and upgrades can take a second while resolving dependencies.</p>
|
||||
<p>If you're seeing this page for over a minute please check the logs at <tt>sudo journalctl -f</tt></p>
|
||||
<p>If you're seeing this page for over a minute, please check the logs at <tt>sudo journalctl -f</tt></p>
|
||||
</center>
|
||||
</body>
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
# /etc/nginx/sites-available/default
|
||||
# Simple proxy_pass for RaSCSI-web
|
||||
# Simple proxy_pass for PiSCSI-web
|
||||
server {
|
||||
listen [::]:80 default_server;
|
||||
listen 80 default_server;
|
||||
listen 443 ssl http2;
|
||||
listen [::]:443 ssl http2;
|
||||
|
||||
ssl_certificate /etc/ssl/certs/rascsi-web.crt;
|
||||
ssl_certificate_key /etc/ssl/private/rascsi-web.key;
|
||||
ssl_certificate /etc/ssl/certs/piscsi-web.crt;
|
||||
ssl_certificate_key /etc/ssl/private/piscsi-web.key;
|
||||
ssl_session_timeout 1d;
|
||||
ssl_session_cache shared:MozSSL:10m;
|
||||
ssl_session_tickets off;
|
||||
|
||||
+3
-3
@@ -1,12 +1,12 @@
|
||||
[Unit]
|
||||
Description=RaSCSI-Web service
|
||||
Description=PiSCSI-Web service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
Restart=always
|
||||
ExecStart=/home/pi/RASCSI/python/web/start.sh
|
||||
SyslogIdentifier=RASCSIWEB
|
||||
ExecStart=/home/pi/piscsi/python/web/start.sh
|
||||
SyslogIdentifier=PISCSIWEB
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@@ -357,7 +357,7 @@
|
||||
"name": "Iomega Floptical 1.44MB",
|
||||
"file_type": "hdr",
|
||||
"description": "Iomega Floptical 1.44MB SCSI drive",
|
||||
"url": "https://github.com/akuker/RASCSI/wiki/Iomega-Floptical"
|
||||
"url": "https://github.com/PiSCSI/piscsi/wiki/Iomega-Floptical"
|
||||
},
|
||||
{
|
||||
"device_type": "SCRM",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "RaSCSI",
|
||||
"name": "PiSCSI",
|
||||
"icons": [
|
||||
{
|
||||
"src": "\/pwa\/android-icon-36x36.png",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
"""Module for mapping between return codes and translated strings"""
|
||||
|
||||
from rascsi.return_codes import ReturnCodes
|
||||
from piscsi.return_codes import ReturnCodes
|
||||
from flask_babel import _, lazy_gettext
|
||||
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ Constant definitions used by other modules
|
||||
"""
|
||||
|
||||
from os import getenv, getcwd
|
||||
import rascsi.common_settings
|
||||
import piscsi.common_settings
|
||||
|
||||
WEB_DIR = getcwd()
|
||||
HOME_DIR = "/".join(WEB_DIR.split("/")[0:3])
|
||||
@@ -12,15 +12,15 @@ FILE_SERVER_DIR = f"{HOME_DIR}/shared_files"
|
||||
|
||||
MAX_FILE_SIZE = getenv("MAX_FILE_SIZE", str(1024 * 1024 * 1024 * 4)) # 4gb
|
||||
|
||||
# The file name of the default config file that loads when rascsi-web starts
|
||||
DEFAULT_CONFIG = f"default.{rascsi.common_settings.CONFIG_FILE_SUFFIX}"
|
||||
# The file name of the default config file that loads when piscsi-web starts
|
||||
DEFAULT_CONFIG = f"default.{piscsi.common_settings.CONFIG_FILE_SUFFIX}"
|
||||
# File containing canonical drive properties
|
||||
DRIVE_PROPERTIES_FILE = WEB_DIR + "/drive_properties.json"
|
||||
|
||||
# The user group that is used for webapp authentication
|
||||
AUTH_GROUP = "rascsi"
|
||||
AUTH_GROUP = "piscsi"
|
||||
|
||||
# The language locales supported by RaSCSI
|
||||
# The language locales supported by PiSCSI
|
||||
LANGUAGES = ["en", "de", "sv", "fr", "es"]
|
||||
|
||||
# Available themes
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
"""
|
||||
Module for sending and receiving data over a socket connection with the RaSCSI backend
|
||||
Module for sending and receiving data over a socket connection with the PiSCSI backend
|
||||
"""
|
||||
|
||||
from flask import abort
|
||||
from flask_babel import _
|
||||
|
||||
from rascsi.exceptions import (
|
||||
from piscsi.exceptions import (
|
||||
EmptySocketChunkException,
|
||||
InvalidProtobufResponse,
|
||||
FailedSocketConnectionException,
|
||||
)
|
||||
from rascsi.socket_cmds import SocketCmds
|
||||
from piscsi.socket_cmds import SocketCmds
|
||||
|
||||
|
||||
class SocketCmdsFlask(SocketCmds):
|
||||
"""
|
||||
Class for sending and receiving data over a socket connection with the RaSCSI backend
|
||||
Class for sending and receiving data over a socket connection with the PiSCSI backend
|
||||
"""
|
||||
|
||||
# pylint: disable=useless-super-delegation
|
||||
@@ -25,7 +25,7 @@ class SocketCmdsFlask(SocketCmds):
|
||||
def send_pb_command(self, payload):
|
||||
"""
|
||||
Takes a (str) containing a serialized protobuf as argument.
|
||||
Establishes a socket connection with RaSCSI.
|
||||
Establishes a socket connection with PiSCSI.
|
||||
"""
|
||||
try:
|
||||
return super().send_pb_command(payload)
|
||||
@@ -34,8 +34,8 @@ class SocketCmdsFlask(SocketCmds):
|
||||
abort(
|
||||
404,
|
||||
_(
|
||||
"The RaSCSI Web Interface failed to connect to RaSCSI at "
|
||||
"%(host)s:%(port)s with error: %(error_msg)s. The RaSCSI "
|
||||
"The PiSCSI Web Interface failed to connect to PiSCSI at "
|
||||
"%(host)s:%(port)s with error: %(error_msg)s. The PiSCSI "
|
||||
"process is not running or may have crashed.",
|
||||
host=self.host,
|
||||
port=self.port,
|
||||
@@ -52,7 +52,7 @@ class SocketCmdsFlask(SocketCmds):
|
||||
abort(
|
||||
503,
|
||||
_(
|
||||
"The RaSCSI Web Interface lost connection to RaSCSI. "
|
||||
"The PiSCSI Web Interface lost connection to PiSCSI. "
|
||||
"Please go back and try again. "
|
||||
"If the issue persists, please report a bug."
|
||||
),
|
||||
@@ -62,7 +62,7 @@ class SocketCmdsFlask(SocketCmds):
|
||||
abort(
|
||||
500,
|
||||
_(
|
||||
"The RaSCSI Web Interface did not get a valid response from RaSCSI. "
|
||||
"The PiSCSI Web Interface did not get a valid response from PiSCSI. "
|
||||
"Please go back and try again. "
|
||||
"If the issue persists, please report a bug."
|
||||
),
|
||||
|
||||
@@ -525,7 +525,7 @@ section > details ul {
|
||||
|
||||
/*
|
||||
------------------------------------------------------------------------------
|
||||
Index > Section: Current RaSCSI configuration
|
||||
Index > Section: Current PiSCSI configuration
|
||||
------------------------------------------------------------------------------
|
||||
*/
|
||||
body:not(.logged-in) section:not(#current-config, #manual) {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<!doctype html>
|
||||
<html lang="{{ env["locale"] }}">
|
||||
<head>
|
||||
<title>{{ _("RaSCSI Reloaded Control Page") }} [{{ env["host"] }}]</title>
|
||||
<title>{{ _("PiSCSI Control Page") }} [{{ env["host"] }}]</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="/pwa/apple-icon-57x57.png">
|
||||
@@ -66,13 +66,13 @@
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<div align="center" class="login-status authentication-disabled">
|
||||
{{ _("Web Interface Authentication Disabled") }} - {{ _("See <a href=\"%(url)s\" target=\"_blank\">Wiki</a> for more information", url="https://github.com/akuker/RASCSI/wiki/Web-Interface#enable-authentication") }}
|
||||
{{ _("Web Interface Authentication Disabled") }} - {{ _("See <a href=\"%(url)s\" target=\"_blank\">Wiki</a> for more information", url="https://github.com/PiSCSI/piscsi/wiki/Web-Interface#enable-authentication") }}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div align="center" class="title">
|
||||
<a href="/">
|
||||
<h1>{{ _("RaSCSI Reloaded") }}</h1>
|
||||
<h1>{{ _("PiSCSI") }}</h1>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
{% endif %}
|
||||
</div>
|
||||
<div>
|
||||
{{ _("RaSCSI Reloaded version:") }} <b>{{ env["version"] }} <a href="https://github.com/akuker/RASCSI/commit/{{ env["running_env"]["git"] }}" target="_blank">{{ env["running_env"]["git"][:7] }}</a></b>
|
||||
{{ _("PiSCSI version:") }} <b>{{ env["version"] }} <a href="https://github.com/PiSCSI/piscsi/commit/{{ env["running_env"]["git"] }}" target="_blank">{{ env["running_env"]["git"][:7] }}</a></b>
|
||||
</div>
|
||||
<div>
|
||||
{{ _("Hardware and OS:") }} {{ env["running_env"]["env"] }}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
{% block content %}
|
||||
<h2>{{ _("Disclaimer") }}</h2>
|
||||
<p>{{ _("These device profiles are provided as-is with no guarantee to work equally to the actual physical device they are named after. You may need to provide appropirate device drivers and/or configuration parameters for them to function properly. If you would like to see data modified, or have additional devices to add to the list, please raise an issue ticket at <a href=\"%(url)s\">GitHub</a>.", url="https://github.com/akuker/RASCSI/issues") }}</p>
|
||||
<p>{{ _("These device profiles are provided as-is with no guarantee to work equally to the actual physical device they are named after. You may need to provide appropirate device drivers and/or configuration parameters for them to function properly. If you would like to see data modified, or have additional devices to add to the list, please raise an issue ticket at <a href=\"%(url)s\">GitHub</a>.", url="https://github.com/PiSCSI/piscsi/issues") }}</p>
|
||||
<h2>{{ _("Hard Disk Drives") }}</h2>
|
||||
|
||||
<table cellpadding="3" border="black" summary="List of hard drives">
|
||||
|
||||
@@ -4,11 +4,11 @@
|
||||
<section id="current-config">
|
||||
<details>
|
||||
<summary class="heading">
|
||||
{{ _("Current RaSCSI Configuration") }}
|
||||
{{ _("Current PiSCSI Configuration") }}
|
||||
</summary>
|
||||
<ul>
|
||||
<li>{{ _("Save and load device configurations, stored as json files in <tt>%(config_dir)s</tt>", config_dir=CFG_DIR) }}</li>
|
||||
<li>{{ _("To have a particular device configuration load when RaSCSI starts, save it as <em>default</em>.") }}</li>
|
||||
<li>{{ _("To have a particular device configuration load when PiSCSI starts, save it as <em>default</em>.") }}</li>
|
||||
</ul>
|
||||
</details>
|
||||
|
||||
@@ -112,11 +112,11 @@
|
||||
{% endif %}
|
||||
</td>
|
||||
<td class="product" align="center">
|
||||
{% if device.vendor != "RaSCSI" %}
|
||||
{% if device.vendor != "PiSCSI" %}
|
||||
{{ device.vendor }}
|
||||
{% endif %}
|
||||
{{ device.product }}
|
||||
{% if device.vendor != "RaSCSI" %}
|
||||
{% if device.vendor != "PiSCSI" %}
|
||||
{{ device.revision }}
|
||||
{% endif %}
|
||||
</td>
|
||||
@@ -180,7 +180,7 @@
|
||||
{{ _("Image File Management") }}
|
||||
</summary>
|
||||
<ul>
|
||||
<li>{{ _("Manage image files in the active RaSCSI image directory: <tt>%(directory)s</tt> with a scan depth of %(scan_depth)s.", directory=env["image_dir"], scan_depth=scan_depth) }}</li>
|
||||
<li>{{ _("Manage image files in the active PiSCSI image directory: <tt>%(directory)s</tt> with a scan depth of %(scan_depth)s.", directory=env["image_dir"], scan_depth=scan_depth) }}</li>
|
||||
<li>{{ _("Select a valid SCSI ID and <a href=\"%(url)s\" target=\"_blank\">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") }}
|
||||
</li>
|
||||
<li>
|
||||
@@ -361,13 +361,13 @@
|
||||
<ul>
|
||||
</li>
|
||||
{% if bridge_configured %}
|
||||
<li>{{ _("The <tt>rascsi_bridge</tt> network bridge is active and ready to be used by an emulated network adapter!") }}</li>
|
||||
<li>{{ _("The <tt>piscsi_bridge</tt> network bridge is active and ready to be used by an emulated network adapter!") }}</li>
|
||||
{% else %}
|
||||
<li>{{ _("Please configure the <tt>rascsi_bridge</tt> network bridge before attaching an emulated network adapter!") }}</li>
|
||||
<li>{{ _("Please configure the <tt>piscsi_bridge</tt> network bridge before attaching an emulated network adapter!") }}</li>
|
||||
{% endif %}
|
||||
<li>{{ _("To browse the modern web, install a vintage web proxy such as <a href=\"%(url)s\" target=\"_blank\">Macproxy</a>.", url="https://github.com/akuker/RASCSI/wiki/Vintage-Web-Proxy#macproxy") }}</li>
|
||||
<li>{{ _("To browse the modern web, install a vintage web proxy such as <a href=\"%(url)s\" target=\"_blank\">Macproxy</a>.", url="https://github.com/PiSCSI/piscsi/wiki/Vintage-Web-Proxy#macproxy") }}</li>
|
||||
</li>
|
||||
<li>{{ _("Read more about <a href=\"%(url)s\" target=\"_blank\">supported device types</a> on the wiki.", url="https://github.com/akuker/RASCSI/wiki/Supported-Device-Types") }}
|
||||
<li>{{ _("Read more about <a href=\"%(url)s\" target=\"_blank\">supported device types</a> on the wiki.", url="https://github.com/PiSCSI/piscsi/wiki/Supported-Device-Types") }}
|
||||
</li>
|
||||
</ul>
|
||||
</details>
|
||||
@@ -587,7 +587,7 @@
|
||||
{{ _("Create Empty Disk Image File") }}
|
||||
</summary>
|
||||
<ul>
|
||||
<li>{{ _("Please refer to <a href=\"%(url)s\" target=\"_blank\">wiki documentation</a> to learn more about the supported image file types.", url="https://github.com/akuker/RASCSI/wiki/Supported-Device-Types#image-types") }}</li>
|
||||
<li>{{ _("Please refer to <a href=\"%(url)s\" target=\"_blank\">wiki documentation</a> to learn more about the supported image file types.", url="https://github.com/PiSCSI/piscsi/wiki/Supported-Device-Types#image-types") }}</li>
|
||||
<li>{{ _("It is not recommended to use the Lido hard disk driver with the Macintosh Plus.") }}</li>
|
||||
</ul>
|
||||
</details>
|
||||
@@ -661,17 +661,17 @@
|
||||
<option value="">
|
||||
{{ _("All logs") }}
|
||||
</option>
|
||||
<option value="rascsi">
|
||||
rascsi
|
||||
<option value="piscsi">
|
||||
piscsi
|
||||
</option>
|
||||
<option value="rascsi-web">
|
||||
rascsi-web
|
||||
<option value="piscsi-web">
|
||||
piscsi-web
|
||||
</option>
|
||||
<option value="rascsi-oled">
|
||||
rascsi-oled
|
||||
<option value="piscsi-oled">
|
||||
piscsi-oled
|
||||
</option>
|
||||
<option value="rascsi-ctrlboard">
|
||||
rascsi-ctrlboard
|
||||
<option value="piscsi-ctrlboard">
|
||||
piscsi-ctrlboard
|
||||
</option>
|
||||
</select>
|
||||
<input type="submit" value="{{ _("Show Logs") }}">
|
||||
@@ -759,7 +759,7 @@
|
||||
<hr/>
|
||||
|
||||
<section id="manual">
|
||||
<a href="/sys/manpage?app=rascsi"><p>{{ _("Read the RaSCSI Manual") }}</p></a>
|
||||
<a href="/sys/manpage?app=piscsi"><p>{{ _("Read the PiSCSI Manual") }}</p></a>
|
||||
</section>
|
||||
|
||||
{% endblock content %}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# German translations for RaSCSI.
|
||||
# German translations for PiSCSI.
|
||||
# Copyright (C) 2021 akuker
|
||||
# This file is distributed under the same license as the RaSCSI project.
|
||||
# This file is distributed under the same license as the PiSCSI project.
|
||||
# Christian Victor <christian.victor@gmail.com>, 2021.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: RaSCSI 68kmla Edition\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/akuker/RASCSI/issues\n"
|
||||
"Project-Id-Version: PiSCSI 68kmla Edition\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/akuker/PISCSI/issues\n"
|
||||
"POT-Creation-Date: 2022-05-06 18:47+0200\n"
|
||||
"PO-Revision-Date: 2022-05-06 20:22+0200\n"
|
||||
"Last-Translator: Christian Victor <christian.victor@gmail.com>\n"
|
||||
@@ -104,36 +104,36 @@ msgstr ""
|
||||
#: src/socket_cmds_flask.py:34
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The RaSCSI Web Interface failed to connect to RaSCSI at %(host)s:%(port)s with "
|
||||
"error: %(error_msg)s. The RaSCSI process is not running or may have crashed."
|
||||
"The PiSCSI Web Interface failed to connect to PiSCSI at %(host)s:%(port)s with "
|
||||
"error: %(error_msg)s. The PiSCSI process is not running or may have crashed."
|
||||
msgstr ""
|
||||
"Das RaSCSI-Webinterface konnte sich mit Fehler %(error_msg)s nicht mit RaSCSI "
|
||||
"an %(host)s:%(port)s verbinden. Der RaSCSI-Prozess läuft nicht oder könnte "
|
||||
"Das PiSCSI-Webinterface konnte sich mit Fehler %(error_msg)s nicht mit PiSCSI "
|
||||
"an %(host)s:%(port)s verbinden. Der PiSCSI-Prozess läuft nicht oder könnte "
|
||||
"abgestürzt sein."
|
||||
|
||||
#: src/socket_cmds_flask.py:45
|
||||
msgid ""
|
||||
"The RaSCSI Web Interface lost connection to RaSCSI. Please go back and try "
|
||||
"The PiSCSI Web Interface lost connection to PiSCSI. Please go back and try "
|
||||
"again. If the issue persists, please report a bug."
|
||||
msgstr ""
|
||||
"Das RaSCSI-Webinterface hat die Verbindung verloren. Bitte gehe zurück und "
|
||||
"Das PiSCSI-Webinterface hat die Verbindung verloren. Bitte gehe zurück und "
|
||||
"versuche es nochmals. Wenn das Problem bestehen bleibt, melde bitte einen Bug."
|
||||
|
||||
#: src/socket_cmds_flask.py:54
|
||||
msgid ""
|
||||
"The RaSCSI Web Interface did not get a valid response from RaSCSI. Please go "
|
||||
"The PiSCSI Web Interface did not get a valid response from PiSCSI. Please go "
|
||||
"back and try again. If the issue persists, please report a bug."
|
||||
msgstr ""
|
||||
"Das RaSCSI-Webinterface hat keine gültige Antwort von RaSCSI bekommen. Bitte "
|
||||
"Das PiSCSI-Webinterface hat keine gültige Antwort von PiSCSI bekommen. Bitte "
|
||||
"gehe zurück und versuche es nochmals. Wenn das Problem bestehen bleibt, melde "
|
||||
"bitte einen Bug."
|
||||
|
||||
#: src/web.py:105
|
||||
msgid ""
|
||||
"RaSCSI is password protected. Start the Web Interface with the --password "
|
||||
"PiSCSI is password protected. Start the Web Interface with the --password "
|
||||
"parameter."
|
||||
msgstr ""
|
||||
"RaSCSI ist passwortgeschützt. Starte das Webinterface mit dem —password "
|
||||
"PiSCSI ist passwortgeschützt. Starte das Webinterface mit dem —password "
|
||||
"Parameter."
|
||||
|
||||
#: src/web.py:209
|
||||
@@ -184,11 +184,11 @@ msgstr ""
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The image file size %(file_size)s bytes is not a multiple of %(block_size)s. "
|
||||
"RaSCSI will ignore the trailing data. The image may be corrupted, so proceed "
|
||||
"PiSCSI will ignore the trailing data. The image may be corrupted, so proceed "
|
||||
"with caution."
|
||||
msgstr ""
|
||||
"Die Imagedateigröße %(file_size)s Bytes ist kein Vielfaches von %(block_size)s. "
|
||||
"RaSCSI wird die hinten überstehenden Daten ignorieren. Das Image könnte "
|
||||
"PiSCSI wird die hinten überstehenden Daten ignorieren. Das Image könnte "
|
||||
"beschädigt werden. Verfahre bitte mit Vorsicht."
|
||||
|
||||
#: src/web.py:576
|
||||
@@ -434,8 +434,8 @@ msgid "File upload successful!"
|
||||
msgstr "Dateiupload erfolgreich!"
|
||||
|
||||
#: src/templates/base.html:4 src/templates/base.html:67
|
||||
msgid "RaSCSI Control Page"
|
||||
msgstr "RaSCSI Kontrollseite"
|
||||
msgid "PiSCSI Control Page"
|
||||
msgstr "PiSCSI Kontrollseite"
|
||||
|
||||
#: src/templates/base.html:29
|
||||
msgid ""
|
||||
@@ -484,8 +484,8 @@ msgid "See <a href=\"%(url)s\" target=\"_blank\">Wiki</a> for more information"
|
||||
msgstr "Siehe <a href=„%(url)s“ target=„_blank“>Wiki</a> für mehr Informationen"
|
||||
|
||||
#: src/templates/base.html:92
|
||||
msgid "RaSCSI version: "
|
||||
msgstr "RaSCSI-Version: "
|
||||
msgid "PiSCSI version: "
|
||||
msgstr "PiSCSI-Version: "
|
||||
|
||||
#: src/templates/base.html:93
|
||||
msgid "Pi environment: "
|
||||
@@ -585,8 +585,8 @@ msgid "%(disk_space)s MB disk space remaining on the Pi"
|
||||
msgstr "%(disk_space)s MB Festplattenplatz auf dem Pi übrig"
|
||||
|
||||
#: src/templates/index.html:6
|
||||
msgid "Current RaSCSI Configuration"
|
||||
msgstr "Aktuelle RaSCSI-Konfiguration"
|
||||
msgid "Current PiSCSI Configuration"
|
||||
msgstr "Aktuelle PiSCSI-Konfiguration"
|
||||
|
||||
#: src/templates/index.html:9
|
||||
msgid "Displays the currently attached devices for each available SCSI ID."
|
||||
@@ -603,10 +603,10 @@ msgstr ""
|
||||
|
||||
#: src/templates/index.html:11
|
||||
msgid ""
|
||||
"To have a particular device configuration load when RaSCSI starts, save it as "
|
||||
"To have a particular device configuration load when PiSCSI starts, save it as "
|
||||
"<em>default</em>."
|
||||
msgstr ""
|
||||
"Um eine bestimmte Gerätekonfiguration zu laden wenn RaSCSI startet, speichere "
|
||||
"Um eine bestimmte Gerätekonfiguration zu laden wenn PiSCSI startet, speichere "
|
||||
"sie als <em>default</em>."
|
||||
|
||||
#: src/templates/index.html:25
|
||||
@@ -718,10 +718,10 @@ msgstr "Image-Dateiverwaltung"
|
||||
#: src/templates/index.html:155
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Manage image files in the active RaSCSI image directory: <tt>%(directory)s</tt> "
|
||||
"Manage image files in the active PiSCSI image directory: <tt>%(directory)s</tt> "
|
||||
"with a scan depth of %(scan_depth)s."
|
||||
msgstr ""
|
||||
"Verwalte Imagedateien im aktiven RaSCSI Imageverzeichnis <tt>%(directory)s</tt> "
|
||||
"Verwalte Imagedateien im aktiven PiSCSI Imageverzeichnis <tt>%(directory)s</tt> "
|
||||
"mit einer Scantiefe von %(scan_depth)s."
|
||||
|
||||
#: src/templates/index.html:156
|
||||
@@ -735,10 +735,10 @@ msgstr ""
|
||||
|
||||
#: src/templates/index.html:158
|
||||
msgid ""
|
||||
"If RaSCSI was unable to detect the media type associated with the image, you "
|
||||
"If PiSCSI was unable to detect the media type associated with the image, you "
|
||||
"get to choose the type from the dropdown."
|
||||
msgstr ""
|
||||
"Wenn RaSCSI den zugehörigen Medientyp des Images nicht erkennen konnte, kannst "
|
||||
"Wenn PiSCSI den zugehörigen Medientyp des Images nicht erkennen konnte, kannst "
|
||||
"Du ihn im Dropdown auswählen."
|
||||
|
||||
#: src/templates/index.html:166
|
||||
@@ -828,10 +828,10 @@ msgstr ""
|
||||
|
||||
#: src/templates/index.html:310
|
||||
msgid ""
|
||||
"The <tt>rascsi_bridge</tt> network bridge is active and ready to be used by an "
|
||||
"The <tt>piscsi_bridge</tt> network bridge is active and ready to be used by an "
|
||||
"emulated network adapter!"
|
||||
msgstr ""
|
||||
"Die <tt>rascsi_bridge</tt>-Netzwerk-Bridge ist aktiv und bereit vom emulierten "
|
||||
"Die <tt>piscsi_bridge</tt>-Netzwerk-Bridge ist aktiv und bereit vom emulierten "
|
||||
"Netzwerkadapter verwendet zu werden!"
|
||||
|
||||
#: src/templates/index.html:314
|
||||
@@ -1090,11 +1090,11 @@ msgstr ""
|
||||
|
||||
#: src/templates/index.html:540
|
||||
msgid ""
|
||||
"APPLE GENUINE (.hda) and NEC GENUINE (.hdn) image types will make RaSCSI behave "
|
||||
"APPLE GENUINE (.hda) and NEC GENUINE (.hdn) image types will make PiSCSI behave "
|
||||
"as a particular drive type that are recognized by Mac and PC98 systems, "
|
||||
"respectively."
|
||||
msgstr ""
|
||||
"APPLE GENUINE (.hda) und NEC GENUINE (.hdn) Imagetypen lassen RaSCSI sich wie "
|
||||
"APPLE GENUINE (.hda) und NEC GENUINE (.hdn) Imagetypen lassen PiSCSI sich wie "
|
||||
"ein bestimmter Laufwerkstyp, der von jeweils Mac und PC98-Systemen erkannt "
|
||||
"wird, verhalten."
|
||||
|
||||
@@ -1151,10 +1151,10 @@ msgstr ""
|
||||
|
||||
#: src/templates/index.html:584
|
||||
msgid ""
|
||||
"This will make RaSCSI use certain vendor strings and block sizes that may "
|
||||
"This will make PiSCSI use certain vendor strings and block sizes that may "
|
||||
"improve compatibility with certain systems."
|
||||
msgstr ""
|
||||
"Dies bewirkt daß RaSCSI bestimmte Vendor-Strings und Blockgrößen verwendet die "
|
||||
"Dies bewirkt daß PiSCSI bestimmte Vendor-Strings und Blockgrößen verwendet die "
|
||||
"die Kompatibilität mit bestimmten Systemen verbessern könnten."
|
||||
|
||||
#: src/templates/index.html:587
|
||||
@@ -1191,8 +1191,8 @@ msgid "Server Log Level"
|
||||
msgstr "Server Log Level"
|
||||
|
||||
#: src/templates/index.html:636
|
||||
msgid "Change the log level of the RaSCSI backend process."
|
||||
msgstr "Ändere den Log-Level des RaSCSI Hintergrundprozesses."
|
||||
msgid "Change the log level of the PiSCSI backend process."
|
||||
msgstr "Ändere den Log-Level des PiSCSI Hintergrundprozesses."
|
||||
|
||||
#: src/templates/index.html:637
|
||||
msgid "The current dropdown selection indicates the active log level."
|
||||
@@ -1227,8 +1227,8 @@ msgid "Raspberry Pi Operations"
|
||||
msgstr "Raspberry Pi Operationen"
|
||||
|
||||
#: src/templates/index.html:693
|
||||
msgid "Reboot or shut down the Raspberry Pi that RaSCSI is running on."
|
||||
msgstr "Den Raspberry Pi auf dem RaSCSI läuft neustarten oder herunterfahren."
|
||||
msgid "Reboot or shut down the Raspberry Pi that PiSCSI is running on."
|
||||
msgstr "Den Raspberry Pi auf dem PiSCSI läuft neustarten oder herunterfahren."
|
||||
|
||||
#: src/templates/index.html:694
|
||||
msgid ""
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
# Spanish translations for RaSCSI.
|
||||
# Spanish translations for PiSCSI.
|
||||
# Copyright (C) 2022 akuker
|
||||
# This file is distributed under the same license as the RaSCSI 68kmla
|
||||
# This file is distributed under the same license as the PiSCSI 68kmla
|
||||
# project.
|
||||
# Nemanja Lukic <nemluk@pm.me>, 2022.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: RaSCSI 68kmla Edition\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/akuker/RASCSI/issues\n"
|
||||
"Project-Id-Version: PiSCSI 68kmla Edition\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/akuker/PISCSI/issues\n"
|
||||
"POT-Creation-Date: 2022-10-09 17:19+0200\n"
|
||||
"PO-Revision-Date: 2022-10-10 08:38+0200\n"
|
||||
"Last-Translator: n4al <n4al@pm.me>\n"
|
||||
@@ -113,35 +113,35 @@ msgstr "No se puede extraer el archivo: %(error)s"
|
||||
#: src/socket_cmds_flask.py:34
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The RaSCSI Web Interface failed to connect to RaSCSI at %(host)s:%(port)s with "
|
||||
"error: %(error_msg)s. The RaSCSI process is not running or may have crashed."
|
||||
"The PiSCSI Web Interface failed to connect to PiSCSI at %(host)s:%(port)s with "
|
||||
"error: %(error_msg)s. The PiSCSI process is not running or may have crashed."
|
||||
msgstr ""
|
||||
"La interfaz web de RaSCSI no pudo conectarse a RaSCSI en %(host)s:%(port)s con "
|
||||
"el error: %(error_msg)s. El proceso RaSCSI no se está ejecutando o puede haber "
|
||||
"La interfaz web de PiSCSI no pudo conectarse a PiSCSI en %(host)s:%(port)s con "
|
||||
"el error: %(error_msg)s. El proceso PiSCSI no se está ejecutando o puede haber "
|
||||
"fallado."
|
||||
|
||||
#: src/socket_cmds_flask.py:45
|
||||
msgid ""
|
||||
"The RaSCSI Web Interface lost connection to RaSCSI. Please go back and try "
|
||||
"The PiSCSI Web Interface lost connection to PiSCSI. Please go back and try "
|
||||
"again. If the issue persists, please report a bug."
|
||||
msgstr ""
|
||||
"La interfaz web de RaSCSI ha perdido la conexión con RaSCSI. Por favor, vuelva "
|
||||
"La interfaz web de PiSCSI ha perdido la conexión con PiSCSI. Por favor, vuelva "
|
||||
"a intentarlo. Si el problema persiste, informe de un error."
|
||||
|
||||
#: src/socket_cmds_flask.py:54
|
||||
msgid ""
|
||||
"The RaSCSI Web Interface did not get a valid response from RaSCSI. Please go "
|
||||
"The PiSCSI Web Interface did not get a valid response from PiSCSI. Please go "
|
||||
"back and try again. If the issue persists, please report a bug."
|
||||
msgstr ""
|
||||
"La interfaz web de RaSCSI no ha obtenido una respuesta válida de RaSCSI. Por "
|
||||
"La interfaz web de PiSCSI no ha obtenido una respuesta válida de PiSCSI. Por "
|
||||
"favor, vuelva a intentarlo. Si el problema persiste, informe de un error."
|
||||
|
||||
#: src/web.py:182
|
||||
msgid ""
|
||||
"RaSCSI is password protected. Start the Web Interface with the --password "
|
||||
"PiSCSI is password protected. Start the Web Interface with the --password "
|
||||
"parameter."
|
||||
msgstr ""
|
||||
"RaSCSI está protegido por contraseña. Inicie la Interfaz Web con el parámetro —"
|
||||
"PiSCSI está protegido por contraseña. Inicie la Interfaz Web con el parámetro —"
|
||||
"password."
|
||||
|
||||
#: src/web.py:318
|
||||
@@ -162,8 +162,8 @@ msgstr "Se ha producido un error al obtener la información del disco: %(error)s
|
||||
|
||||
#: src/web.py:493
|
||||
#, python-format
|
||||
msgid "%(app)s is not a recognized RaSCSI app"
|
||||
msgstr "%(app)s no es una aplicación RaSCSI reconocida"
|
||||
msgid "%(app)s is not a recognized PiSCSI app"
|
||||
msgstr "%(app)s no es una aplicación PiSCSI reconocida"
|
||||
|
||||
#: src/web.py:527
|
||||
#, python-format
|
||||
@@ -211,11 +211,11 @@ msgstr ""
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The image file size %(file_size)s bytes is not a multiple of %(block_size)s. "
|
||||
"RaSCSI will ignore the trailing data. The image may be corrupted, so proceed "
|
||||
"PiSCSI will ignore the trailing data. The image may be corrupted, so proceed "
|
||||
"with caution."
|
||||
msgstr ""
|
||||
"El tamaño del archivo de imagen %(file_size)s bytes no es un múltiplo de "
|
||||
"%(block_size)s. RaSCSI ignorará los datos finales. La imagen puede estar "
|
||||
"%(block_size)s. PiSCSI ignorará los datos finales. La imagen puede estar "
|
||||
"corrupta, así que proceda con precaución."
|
||||
|
||||
#: src/web.py:698
|
||||
@@ -428,8 +428,8 @@ msgid "File upload successful!"
|
||||
msgstr "¡La carga de archivos se ha realizado con éxito!"
|
||||
|
||||
#: src/templates/base.html:4 src/templates/base.html:68
|
||||
msgid "RaSCSI Reloaded Control Page"
|
||||
msgstr "Página de control RaSCSI Reloaded"
|
||||
msgid "PiSCSI Control Page"
|
||||
msgstr "Página de control PiSCSI"
|
||||
|
||||
#: src/templates/base.html:29
|
||||
msgid ""
|
||||
@@ -498,8 +498,8 @@ msgid "Macproxy is running at %(ip_addr)s (default port 5000)"
|
||||
msgstr "Macproxy se está ejecutando en %(ip_addr)s (puerto por defecto: 5000)"
|
||||
|
||||
#: src/templates/base.html:104
|
||||
msgid "RaSCSI Reloaded version: "
|
||||
msgstr "Versión de RaSCSI Reloaded: "
|
||||
msgid "PiSCSI version: "
|
||||
msgstr "Versión de PiSCSI: "
|
||||
|
||||
#: src/templates/base.html:107
|
||||
msgid "Pi environment: "
|
||||
@@ -643,8 +643,8 @@ msgid "%(disk_space)s MiB disk space remaining on the Pi"
|
||||
msgstr "%(disk_space)s MiB de espacio en disco restante en la Pi"
|
||||
|
||||
#: src/templates/index.html:6
|
||||
msgid "Current RaSCSI Configuration"
|
||||
msgstr "Configuración actual de RaSCSI"
|
||||
msgid "Current PiSCSI Configuration"
|
||||
msgstr "Configuración actual de PiSCSI"
|
||||
|
||||
#: src/templates/index.html:9
|
||||
#, python-format
|
||||
@@ -657,11 +657,11 @@ msgstr ""
|
||||
|
||||
#: src/templates/index.html:10
|
||||
msgid ""
|
||||
"To have a particular device configuration load when RaSCSI starts, save it as "
|
||||
"To have a particular device configuration load when PiSCSI starts, save it as "
|
||||
"<em>default</em>."
|
||||
msgstr ""
|
||||
"Para que se cargue una configuración de dispositivo concreta cuando se inicie "
|
||||
"RaSCSI, guárdela como <em>default</em>."
|
||||
"PiSCSI, guárdela como <em>default</em>."
|
||||
|
||||
#: src/templates/index.html:16 src/templates/index.html:37
|
||||
#: src/templates/index.html:71
|
||||
@@ -762,11 +762,11 @@ msgstr "Gestión de archivos de imagen"
|
||||
#: src/templates/index.html:174
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Manage image files in the active RaSCSI image directory: <tt>%(directory)s</tt> "
|
||||
"Manage image files in the active PiSCSI image directory: <tt>%(directory)s</tt> "
|
||||
"with a scan depth of %(scan_depth)s."
|
||||
msgstr ""
|
||||
"Gestionar los archivos de imagen en el directorio activo de las imágenes de "
|
||||
"RaSCSI: <tt>%(directory)s</tt> con la profundidad de escaneo de %(scan_depth)s."
|
||||
"PiSCSI: <tt>%(directory)s</tt> con la profundidad de escaneo de %(scan_depth)s."
|
||||
|
||||
#: src/templates/index.html:175
|
||||
#, python-format
|
||||
@@ -857,18 +857,18 @@ msgstr "Conectar dispositivo periférico"
|
||||
|
||||
#: src/templates/index.html:345
|
||||
msgid ""
|
||||
"The <tt>rascsi_bridge</tt> network bridge is active and ready to be used by an "
|
||||
"The <tt>piscsi_bridge</tt> network bridge is active and ready to be used by an "
|
||||
"emulated network adapter!"
|
||||
msgstr ""
|
||||
"¡El puente de red <tt>rascsi_bridge</tt> está activo y listo para ser utilizado "
|
||||
"¡El puente de red <tt>piscsi_bridge</tt> está activo y listo para ser utilizado "
|
||||
"por un adaptador de red emulado!"
|
||||
|
||||
#: src/templates/index.html:347
|
||||
msgid ""
|
||||
"Please configure the <tt>rascsi_bridge</tt> network bridge before attaching an "
|
||||
"Please configure the <tt>piscsi_bridge</tt> network bridge before attaching an "
|
||||
"emulated network adapter!"
|
||||
msgstr ""
|
||||
"Configure el puente de red <tt>rascsi_bridge</tt> antes de conectar un "
|
||||
"Configure el puente de red <tt>piscsi_bridge</tt> antes de conectar un "
|
||||
"adaptador de red emulado!"
|
||||
|
||||
#: src/templates/index.html:349
|
||||
@@ -1171,8 +1171,8 @@ msgid "Shut Down Raspberry Pi"
|
||||
msgstr "Apagar la Raspberry Pi"
|
||||
|
||||
#: src/templates/index.html:689
|
||||
msgid "Read the RaSCSI Manual"
|
||||
msgstr "Lea el manual de RaSCSI"
|
||||
msgid "Read the PiSCSI Manual"
|
||||
msgstr "Lea el manual de PiSCSI"
|
||||
|
||||
#: src/templates/logs.html:4
|
||||
#, python-format
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# French translations for RaSCSI.
|
||||
# French translations for PiSCSI.
|
||||
# Copyright (C) 2021 akuker
|
||||
# This file is distributed under the same license as the RaSCSI project.
|
||||
# This file is distributed under the same license as the PiSCSI project.
|
||||
# Kamel Makhloufi <melkalehun@gmail.com>, 2021.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: RaSCSI 68kmla Edition\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/akuker/RASCSI/issues\n"
|
||||
"Project-Id-Version: PiSCSI 68kmla Edition\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/akuker/PISCSI/issues\n"
|
||||
"POT-Creation-Date: 2022-05-07 17:26+0200\n"
|
||||
"PO-Revision-Date: 2022-05-07 17:28+0200\n"
|
||||
"Last-Translator: Kamel Makhloufi <melkalehun@gmail.com>\n"
|
||||
@@ -108,35 +108,35 @@ msgstr "code_retour"
|
||||
#: src/socket_cmds_flask.py:34
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The RaSCSI Web Interface failed to connect to RaSCSI at %(host)s:%(port)s with "
|
||||
"error: %(error_msg)s. The RaSCSI process is not running or may have crashed."
|
||||
"The PiSCSI Web Interface failed to connect to PiSCSI at %(host)s:%(port)s with "
|
||||
"error: %(error_msg)s. The PiSCSI process is not running or may have crashed."
|
||||
msgstr ""
|
||||
"L’interface web RaSCSI n’as pas pu se connecter à RaSCSI à l’adresse %(host)s:"
|
||||
"%(port)s avec l’erreur : %(error_msg)s. Le processus RaSCSI n’est peut-être pas "
|
||||
"L’interface web PiSCSI n’as pas pu se connecter à PiSCSI à l’adresse %(host)s:"
|
||||
"%(port)s avec l’erreur : %(error_msg)s. Le processus PiSCSI n’est peut-être pas "
|
||||
"en cours d’exécution ou a planté."
|
||||
|
||||
#: src/socket_cmds_flask.py:45
|
||||
msgid ""
|
||||
"The RaSCSI Web Interface lost connection to RaSCSI. Please go back and try "
|
||||
"The PiSCSI Web Interface lost connection to PiSCSI. Please go back and try "
|
||||
"again. If the issue persists, please report a bug."
|
||||
msgstr ""
|
||||
"L’interface web RaSCSI à perdu la connexion à RaSCSI. Merci de réessayer. Si le "
|
||||
"L’interface web PiSCSI à perdu la connexion à PiSCSI. Merci de réessayer. Si le "
|
||||
"problème persiste, merci de faire remonter un bug."
|
||||
|
||||
#: src/socket_cmds_flask.py:54
|
||||
msgid ""
|
||||
"The RaSCSI Web Interface did not get a valid response from RaSCSI. Please go "
|
||||
"The PiSCSI Web Interface did not get a valid response from PiSCSI. Please go "
|
||||
"back and try again. If the issue persists, please report a bug."
|
||||
msgstr ""
|
||||
"L’interface web RaSCSI à reçu une réponse invalide de RaSCSI. Merci de "
|
||||
"L’interface web PiSCSI à reçu une réponse invalide de PiSCSI. Merci de "
|
||||
"réessayer. Si le problème persiste, merci de faire remonter un bug."
|
||||
|
||||
#: src/web.py:105
|
||||
msgid ""
|
||||
"RaSCSI is password protected. Start the Web Interface with the --password "
|
||||
"PiSCSI is password protected. Start the Web Interface with the --password "
|
||||
"parameter."
|
||||
msgstr ""
|
||||
"RaSCSI est protégé par un mot de passe. Merci de démarrer l’interface web avec "
|
||||
"PiSCSI est protégé par un mot de passe. Merci de démarrer l’interface web avec "
|
||||
"le paramètre --password."
|
||||
|
||||
#: src/web.py:209
|
||||
@@ -189,11 +189,11 @@ msgstr ""
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The image file size %(file_size)s bytes is not a multiple of %(block_size)s. "
|
||||
"RaSCSI will ignore the trailing data. The image may be corrupted, so proceed "
|
||||
"PiSCSI will ignore the trailing data. The image may be corrupted, so proceed "
|
||||
"with caution."
|
||||
msgstr ""
|
||||
"La taille du fichier image %(file_size)s octets n’est pas un multiple de "
|
||||
"%(block_size)s. RaSCSI va ignorer les données de fin. L’image peut être "
|
||||
"%(block_size)s. PiSCSI va ignorer les données de fin. L’image peut être "
|
||||
"corrompue, merci de continuer avec précaution."
|
||||
|
||||
#: src/web.py:576
|
||||
@@ -439,8 +439,8 @@ msgid "File upload successful!"
|
||||
msgstr "Transfert de fichier réussi !"
|
||||
|
||||
#: src/templates/base.html:4 src/templates/base.html:67
|
||||
msgid "RaSCSI Control Page"
|
||||
msgstr "Page de contrôle de RaSCSI"
|
||||
msgid "PiSCSI Control Page"
|
||||
msgstr "Page de contrôle de PiSCSI"
|
||||
|
||||
#: src/templates/base.html:29
|
||||
msgid ""
|
||||
@@ -490,8 +490,8 @@ msgstr ""
|
||||
"Voir le <a href=\"%(url)s\" target=\"_blank\">Wiki</a> pour plus d’informations"
|
||||
|
||||
#: src/templates/base.html:92
|
||||
msgid "RaSCSI version: "
|
||||
msgstr "RaSCSI version : "
|
||||
msgid "PiSCSI version: "
|
||||
msgstr "PiSCSI version : "
|
||||
|
||||
#: src/templates/base.html:93
|
||||
msgid "Pi environment: "
|
||||
@@ -591,8 +591,8 @@ msgid "%(disk_space)s MB disk space remaining on the Pi"
|
||||
msgstr "%(disk_space)s MO d’espace disque restant sur le Pi"
|
||||
|
||||
#: src/templates/index.html:6
|
||||
msgid "Current RaSCSI Configuration"
|
||||
msgstr "Configuration RaSCSI actuelle"
|
||||
msgid "Current PiSCSI Configuration"
|
||||
msgstr "Configuration PiSCSI actuelle"
|
||||
|
||||
#: src/templates/index.html:9
|
||||
msgid "Displays the currently attached devices for each available SCSI ID."
|
||||
@@ -609,11 +609,11 @@ msgstr ""
|
||||
|
||||
#: src/templates/index.html:11
|
||||
msgid ""
|
||||
"To have a particular device configuration load when RaSCSI starts, save it as "
|
||||
"To have a particular device configuration load when PiSCSI starts, save it as "
|
||||
"<em>default</em>."
|
||||
msgstr ""
|
||||
"Pour avoir une configuration de périphérique en particulier chargée au "
|
||||
"démarrage de RaSCSI, sauvegardez la en tant que <em>default</em>."
|
||||
"démarrage de PiSCSI, sauvegardez la en tant que <em>default</em>."
|
||||
|
||||
#: src/templates/index.html:25
|
||||
msgid "No saved configurations"
|
||||
@@ -726,10 +726,10 @@ msgstr "Gestion des fichiers d'image"
|
||||
#: src/templates/index.html:155
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Manage image files in the active RaSCSI image directory: <tt>%(directory)s</tt> "
|
||||
"Manage image files in the active PiSCSI image directory: <tt>%(directory)s</tt> "
|
||||
"with a scan depth of %(scan_depth)s."
|
||||
msgstr ""
|
||||
"Gérer les fichiers image dans le dossier image RaSCSI actif : <tt>"
|
||||
"Gérer les fichiers image dans le dossier image PiSCSI actif : <tt>"
|
||||
"%(directory)s</tt> avec un profondeur de scan de %(scan_depth)s."
|
||||
|
||||
#: src/templates/index.html:156
|
||||
@@ -743,10 +743,10 @@ msgstr ""
|
||||
|
||||
#: src/templates/index.html:158
|
||||
msgid ""
|
||||
"If RaSCSI was unable to detect the media type associated with the image, you "
|
||||
"If PiSCSI was unable to detect the media type associated with the image, you "
|
||||
"get to choose the type from the dropdown."
|
||||
msgstr ""
|
||||
"Si RaSCSI n'as pas pu détecter le type de média associé à l'image, vous pouvez "
|
||||
"Si PiSCSI n'as pas pu détecter le type de média associé à l'image, vous pouvez "
|
||||
"choisir le type depuis le menu déroulant."
|
||||
|
||||
#: src/templates/index.html:166
|
||||
@@ -837,10 +837,10 @@ msgstr ""
|
||||
|
||||
#: src/templates/index.html:310
|
||||
msgid ""
|
||||
"The <tt>rascsi_bridge</tt> network bridge is active and ready to be used by an "
|
||||
"The <tt>piscsi_bridge</tt> network bridge is active and ready to be used by an "
|
||||
"emulated network adapter!"
|
||||
msgstr ""
|
||||
"L'interface <tt>rascsi_bridge</tt> est active et prête à être utilisée par un "
|
||||
"L'interface <tt>piscsi_bridge</tt> est active et prête à être utilisée par un "
|
||||
"adaptateur réseau émulé!"
|
||||
|
||||
#: src/templates/index.html:314
|
||||
@@ -1103,12 +1103,12 @@ msgstr "Le type d'image générique est recommandé pour la plupart des platefor
|
||||
|
||||
#: src/templates/index.html:540
|
||||
msgid ""
|
||||
"APPLE GENUINE (.hda) and NEC GENUINE (.hdn) image types will make RaSCSI behave "
|
||||
"APPLE GENUINE (.hda) and NEC GENUINE (.hdn) image types will make PiSCSI behave "
|
||||
"as a particular drive type that are recognized by Mac and PC98 systems, "
|
||||
"respectively."
|
||||
msgstr ""
|
||||
"Les types d'image APPLE AUTHENTIQUE (.hda) et NEC AUTHENTIQUE (.hdn) feront que "
|
||||
"RaSCSI se comportera comme un type de disque particulier qui sont reconnus par "
|
||||
"PiSCSI se comportera comme un type de disque particulier qui sont reconnus par "
|
||||
"les systèmes Mac et PC98 respectivement."
|
||||
|
||||
#: src/templates/index.html:541
|
||||
@@ -1164,10 +1164,10 @@ msgstr ""
|
||||
|
||||
#: src/templates/index.html:584
|
||||
msgid ""
|
||||
"This will make RaSCSI use certain vendor strings and block sizes that may "
|
||||
"This will make PiSCSI use certain vendor strings and block sizes that may "
|
||||
"improve compatibility with certain systems."
|
||||
msgstr ""
|
||||
"RaSCSI utilisera certains noms de vendeurs et tailles de blocs afin d'améliorer "
|
||||
"PiSCSI utilisera certains noms de vendeurs et tailles de blocs afin d'améliorer "
|
||||
"la compatibilité avec certains systèmes."
|
||||
|
||||
#: src/templates/index.html:587
|
||||
@@ -1205,8 +1205,8 @@ msgid "Server Log Level"
|
||||
msgstr "Niveau de journalisation du serveur"
|
||||
|
||||
#: src/templates/index.html:636
|
||||
msgid "Change the log level of the RaSCSI backend process."
|
||||
msgstr "Changer le niveau de journalisation des processus principaux RaSCSI."
|
||||
msgid "Change the log level of the PiSCSI backend process."
|
||||
msgstr "Changer le niveau de journalisation des processus principaux PiSCSI."
|
||||
|
||||
#: src/templates/index.html:637
|
||||
msgid "The current dropdown selection indicates the active log level."
|
||||
@@ -1241,8 +1241,8 @@ msgid "Raspberry Pi Operations"
|
||||
msgstr "Opérations Raspberry Pi"
|
||||
|
||||
#: src/templates/index.html:693
|
||||
msgid "Reboot or shut down the Raspberry Pi that RaSCSI is running on."
|
||||
msgstr "Redémarrer ou éteindre le Raspberry Pi sur lequel RaSCSI s'exécute."
|
||||
msgid "Reboot or shut down the Raspberry Pi that PiSCSI is running on."
|
||||
msgstr "Redémarrer ou éteindre le Raspberry Pi sur lequel PiSCSI s'exécute."
|
||||
|
||||
#: src/templates/index.html:694
|
||||
msgid ""
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# Swedish translations for RaSCSI.
|
||||
# Swedish translations for PiSCSI.
|
||||
# Copyright (C) 2021 akuker
|
||||
# This file is distributed under the same license as the RaSCSI project.
|
||||
# This file is distributed under the same license as the PiSCSI project.
|
||||
# Daniel Markstedt <markstedt@gmail.com>, 2021.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: RaSCSI Reloaded\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/akuker/RASCSI/issues\n"
|
||||
"Project-Id-Version: PiSCSI\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/akuker/PISCSI/issues\n"
|
||||
"POT-Creation-Date: 2022-10-07 21:10-0700\n"
|
||||
"PO-Revision-Date: 2022-10-07 20:16-0800\n"
|
||||
"Last-Translator: Daniel Markstedt <markstedt@gmail.com>\n"
|
||||
@@ -112,36 +112,36 @@ msgstr "Kunde ej packa upp arkivet: %(error)s"
|
||||
#: src/socket_cmds_flask.py:34
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The RaSCSI Web Interface failed to connect to RaSCSI at %(host)s:%(port)s"
|
||||
" with error: %(error_msg)s. The RaSCSI process is not running or may have"
|
||||
"The PiSCSI Web Interface failed to connect to PiSCSI at %(host)s:%(port)s"
|
||||
" with error: %(error_msg)s. The PiSCSI process is not running or may have"
|
||||
" crashed."
|
||||
msgstr ""
|
||||
"RaSCSIs webbgränssnitt kunde inte ansluta till RaSCSI på "
|
||||
"%(host)s:%(port)s med felmeddelandet %(error_msg)s. RaSCSI-processen är "
|
||||
"PiSCSIs webbgränssnitt kunde inte ansluta till PiSCSI på "
|
||||
"%(host)s:%(port)s med felmeddelandet %(error_msg)s. PiSCSI-processen är "
|
||||
"antingen avslagen eller har krashat."
|
||||
|
||||
#: src/socket_cmds_flask.py:45
|
||||
msgid ""
|
||||
"The RaSCSI Web Interface lost connection to RaSCSI. Please go back and "
|
||||
"The PiSCSI Web Interface lost connection to PiSCSI. Please go back and "
|
||||
"try again. If the issue persists, please report a bug."
|
||||
msgstr ""
|
||||
"RaSCSIs webbgränssnitt tappade kontaken med RaSCSI. Gå tillbaks och "
|
||||
"PiSCSIs webbgränssnitt tappade kontaken med PiSCSI. Gå tillbaks och "
|
||||
"försök igen. Om samma fel upprepas så rapportera en bugg."
|
||||
|
||||
#: src/socket_cmds_flask.py:54
|
||||
msgid ""
|
||||
"The RaSCSI Web Interface did not get a valid response from RaSCSI. Please"
|
||||
"The PiSCSI Web Interface did not get a valid response from PiSCSI. Please"
|
||||
" go back and try again. If the issue persists, please report a bug."
|
||||
msgstr ""
|
||||
"RaSCSIs webbgränssnitt fick en ogiltig respons från RaSCSI. Gå tillbaks "
|
||||
"PiSCSIs webbgränssnitt fick en ogiltig respons från PiSCSI. Gå tillbaks "
|
||||
"och försök igen. Om samma fel upprepas så rapportera en bugg."
|
||||
|
||||
#: src/web.py:182
|
||||
msgid ""
|
||||
"RaSCSI is password protected. Start the Web Interface with the --password"
|
||||
"PiSCSI is password protected. Start the Web Interface with the --password"
|
||||
" parameter."
|
||||
msgstr ""
|
||||
"RaSCSI är lösenordsskyddat. Start webbgränssnittet med parametern "
|
||||
"PiSCSI är lösenordsskyddat. Start webbgränssnittet med parametern "
|
||||
"--password ."
|
||||
|
||||
#: src/web.py:318
|
||||
@@ -161,8 +161,8 @@ msgstr "Ett fel inträffade när vi hämtade skivinfo: %(error)s"
|
||||
|
||||
#: src/web.py:493
|
||||
#, python-format
|
||||
msgid "%(app)s is not a recognized RaSCSI app"
|
||||
msgstr "%(app)s är inte en giltig RaSCSI-app"
|
||||
msgid "%(app)s is not a recognized PiSCSI app"
|
||||
msgstr "%(app)s är inte en giltig PiSCSI-app"
|
||||
|
||||
#: src/web.py:527
|
||||
#, python-format
|
||||
@@ -212,11 +212,11 @@ msgstr ""
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The image file size %(file_size)s bytes is not a multiple of "
|
||||
"%(block_size)s. RaSCSI will ignore the trailing data. The image may be "
|
||||
"%(block_size)s. PiSCSI will ignore the trailing data. The image may be "
|
||||
"corrupted, so proceed with caution."
|
||||
msgstr ""
|
||||
"Filstorleken %(file_size)s byte är inte en multipel av %(block_size)s. "
|
||||
"RaSCSI ignorerar den överflödiga datan. Skivbilden är möjligen förstörd, "
|
||||
"PiSCSI ignorerar den överflödiga datan. Skivbilden är möjligen förstörd, "
|
||||
"så var försiktig när du använder den."
|
||||
|
||||
#: src/web.py:698
|
||||
@@ -432,8 +432,8 @@ msgid "File upload successful!"
|
||||
msgstr "Filen har laddas upp!"
|
||||
|
||||
#: src/templates/base.html:4 src/templates/base.html:68
|
||||
msgid "RaSCSI Reloaded Control Page"
|
||||
msgstr "RaSCSI Reloaded kontrollsida"
|
||||
msgid "PiSCSI Control Page"
|
||||
msgstr "PiSCSI kontrollsida"
|
||||
|
||||
#: src/templates/base.html:29
|
||||
msgid ""
|
||||
@@ -501,8 +501,8 @@ msgid "Macproxy is running at %(ip_addr)s (default port 5000)"
|
||||
msgstr "Macproxy är tillgängligt på %(ip_addr)s (vanligtvis port 5000)"
|
||||
|
||||
#: src/templates/base.html:104
|
||||
msgid "RaSCSI Reloaded version: "
|
||||
msgstr "RaSCSI Reloaded-version: "
|
||||
msgid "PiSCSI version: "
|
||||
msgstr "PiSCSI-version: "
|
||||
|
||||
#: src/templates/base.html:107
|
||||
msgid "Pi environment: "
|
||||
@@ -646,8 +646,8 @@ msgid "%(disk_space)s MiB disk space remaining on the Pi"
|
||||
msgstr "%(disk_space)s MiB återstår på Pi-systemets skiva"
|
||||
|
||||
#: src/templates/index.html:6
|
||||
msgid "Current RaSCSI Configuration"
|
||||
msgstr "Nuvarande RaSCSI-konfiguration"
|
||||
msgid "Current PiSCSI Configuration"
|
||||
msgstr "Nuvarande PiSCSI-konfiguration"
|
||||
|
||||
#: src/templates/index.html:9
|
||||
#, python-format
|
||||
@@ -660,11 +660,11 @@ msgstr ""
|
||||
|
||||
#: src/templates/index.html:10
|
||||
msgid ""
|
||||
"To have a particular device configuration load when RaSCSI starts, save "
|
||||
"To have a particular device configuration load when PiSCSI starts, save "
|
||||
"it as <em>default</em>."
|
||||
msgstr ""
|
||||
"Om du sparar en enhetskonfiguration som <em>default</em> så laddas den "
|
||||
"när RaSCSI startar."
|
||||
"när PiSCSI startar."
|
||||
|
||||
#: src/templates/index.html:16 src/templates/index.html:37
|
||||
#: src/templates/index.html:71
|
||||
@@ -764,7 +764,7 @@ msgstr "Bildfilshanterare"
|
||||
#: src/templates/index.html:174
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Manage image files in the active RaSCSI image directory: "
|
||||
"Manage image files in the active PiSCSI image directory: "
|
||||
"<tt>%(directory)s</tt> with a scan depth of %(scan_depth)s."
|
||||
msgstr ""
|
||||
"Hantera filer i den aktiva bildfilskatalogen: <tt>%(directory)s</tt> med "
|
||||
@@ -858,18 +858,18 @@ msgstr "Anslut tillbehör"
|
||||
|
||||
#: src/templates/index.html:345
|
||||
msgid ""
|
||||
"The <tt>rascsi_bridge</tt> network bridge is active and ready to be used "
|
||||
"The <tt>piscsi_bridge</tt> network bridge is active and ready to be used "
|
||||
"by an emulated network adapter!"
|
||||
msgstr ""
|
||||
"Nätverksbryggan <tt>rascsi_bridge</tt> är påslagen och kan användas av "
|
||||
"Nätverksbryggan <tt>piscsi_bridge</tt> är påslagen och kan användas av "
|
||||
"det emulerade gränssnittet!"
|
||||
|
||||
#: src/templates/index.html:347
|
||||
msgid ""
|
||||
"Please configure the <tt>rascsi_bridge</tt> network bridge before "
|
||||
"Please configure the <tt>piscsi_bridge</tt> network bridge before "
|
||||
"attaching an emulated network adapter!"
|
||||
msgstr ""
|
||||
"Se till att ställa in och sätta på <tt>rascsi_bridge</tt> innan du "
|
||||
"Se till att ställa in och sätta på <tt>piscsi_bridge</tt> innan du "
|
||||
"ansluter det emulerade nätverksgränssnittet!"
|
||||
|
||||
#: src/templates/index.html:349
|
||||
@@ -1170,8 +1170,8 @@ msgid "Shut Down Raspberry Pi"
|
||||
msgstr "Stäng av Raspberry Pi"
|
||||
|
||||
#: src/templates/index.html:689
|
||||
msgid "Read the RaSCSI Manual"
|
||||
msgstr "Läs manualen för RaSCSI"
|
||||
msgid "Read the PiSCSI Manual"
|
||||
msgstr "Läs manualen för PiSCSI"
|
||||
|
||||
#: src/templates/logs.html:4
|
||||
#, python-format
|
||||
|
||||
+58
-58
@@ -10,7 +10,7 @@ from functools import wraps
|
||||
from grp import getgrall
|
||||
|
||||
import bjoern
|
||||
from rascsi.return_codes import ReturnCodes
|
||||
from piscsi.return_codes import ReturnCodes
|
||||
from simplepam import authenticate
|
||||
from flask_babel import Babel, Locale, refresh, _
|
||||
|
||||
@@ -28,11 +28,11 @@ from flask import (
|
||||
jsonify,
|
||||
)
|
||||
|
||||
from rascsi.ractl_cmds import RaCtlCmds
|
||||
from rascsi.file_cmds import FileCmds
|
||||
from rascsi.sys_cmds import SysCmds
|
||||
from piscsi.piscsi_cmds import PiscsiCmds
|
||||
from piscsi.file_cmds import FileCmds
|
||||
from piscsi.sys_cmds import SysCmds
|
||||
|
||||
from rascsi.common_settings import (
|
||||
from piscsi.common_settings import (
|
||||
CFG_DIR,
|
||||
CONFIG_FILE_SUFFIX,
|
||||
PROPERTIES_SUFFIX,
|
||||
@@ -79,7 +79,7 @@ def get_env_info():
|
||||
"""
|
||||
Get information about the app/host environment
|
||||
"""
|
||||
server_info = ractl_cmd.get_server_info()
|
||||
server_info = piscsi_cmd.get_server_info()
|
||||
ip_addr, host = sys_cmd.get_ip_and_host()
|
||||
|
||||
if "username" in session:
|
||||
@@ -198,18 +198,18 @@ def index():
|
||||
"""
|
||||
Sets up data structures for and renders the index page
|
||||
"""
|
||||
if not ractl_cmd.is_token_auth()["status"] and not APP.config["RASCSI_TOKEN"]:
|
||||
if not piscsi_cmd.is_token_auth()["status"] and not APP.config["PISCSI_TOKEN"]:
|
||||
abort(
|
||||
403,
|
||||
_(
|
||||
"RaSCSI is password protected. "
|
||||
"PiSCSI is password protected. "
|
||||
"Start the Web Interface with the --password parameter."
|
||||
),
|
||||
)
|
||||
|
||||
server_info = ractl_cmd.get_server_info()
|
||||
devices = ractl_cmd.list_devices()
|
||||
device_types = map_device_types_and_names(ractl_cmd.get_device_types()["device_types"])
|
||||
server_info = piscsi_cmd.get_server_info()
|
||||
devices = piscsi_cmd.list_devices()
|
||||
device_types = map_device_types_and_names(piscsi_cmd.get_device_types()["device_types"])
|
||||
image_files = file_cmd.list_images()
|
||||
config_files = file_cmd.list_config_files()
|
||||
ip_addr, host = sys_cmd.get_ip_and_host()
|
||||
@@ -251,7 +251,7 @@ def index():
|
||||
return response(
|
||||
template="index.html",
|
||||
locales=get_supported_locales(),
|
||||
netinfo=ractl_cmd.get_network_info(),
|
||||
netinfo=piscsi_cmd.get_network_info(),
|
||||
bridge_configured=sys_cmd.is_bridge_setup(),
|
||||
devices=formatted_devices,
|
||||
attached_images=attached_images,
|
||||
@@ -267,16 +267,16 @@ def index():
|
||||
image_suffixes_to_create=image_suffixes_to_create,
|
||||
valid_image_suffixes=valid_image_suffixes,
|
||||
max_file_size=int(int(MAX_FILE_SIZE) / 1024 / 1024),
|
||||
drive_properties=format_drive_properties(APP.config["RASCSI_DRIVE_PROPERTIES"]),
|
||||
drive_properties=format_drive_properties(APP.config["PISCSI_DRIVE_PROPERTIES"]),
|
||||
RESERVATIONS=RESERVATIONS,
|
||||
CFG_DIR=CFG_DIR,
|
||||
FILE_SERVER_DIR=FILE_SERVER_DIR,
|
||||
PROPERTIES_SUFFIX=PROPERTIES_SUFFIX,
|
||||
ARCHIVE_FILE_SUFFIXES=ARCHIVE_FILE_SUFFIXES,
|
||||
CONFIG_FILE_SUFFIX=CONFIG_FILE_SUFFIX,
|
||||
REMOVABLE_DEVICE_TYPES=ractl_cmd.get_removable_device_types(),
|
||||
DISK_DEVICE_TYPES=ractl_cmd.get_disk_device_types(),
|
||||
PERIPHERAL_DEVICE_TYPES=ractl_cmd.get_peripheral_device_types(),
|
||||
REMOVABLE_DEVICE_TYPES=piscsi_cmd.get_removable_device_types(),
|
||||
DISK_DEVICE_TYPES=piscsi_cmd.get_disk_device_types(),
|
||||
PERIPHERAL_DEVICE_TYPES=piscsi_cmd.get_peripheral_device_types(),
|
||||
)
|
||||
|
||||
|
||||
@@ -297,7 +297,7 @@ def drive_list():
|
||||
return response(
|
||||
template="drives.html",
|
||||
files=file_cmd.list_images()["files"],
|
||||
drive_properties=format_drive_properties(APP.config["RASCSI_DRIVE_PROPERTIES"]),
|
||||
drive_properties=format_drive_properties(APP.config["PISCSI_DRIVE_PROPERTIES"]),
|
||||
)
|
||||
|
||||
|
||||
@@ -365,7 +365,7 @@ def drive_create():
|
||||
drive_name = request.form.get("drive_name")
|
||||
file_name = Path(request.form.get("file_name")).name
|
||||
|
||||
properties = get_properties_by_drive_name(APP.config["RASCSI_DRIVE_PROPERTIES"], drive_name)
|
||||
properties = get_properties_by_drive_name(APP.config["PISCSI_DRIVE_PROPERTIES"], drive_name)
|
||||
|
||||
if not properties:
|
||||
return response(
|
||||
@@ -409,7 +409,7 @@ def drive_cdrom():
|
||||
|
||||
# Creating the drive properties file
|
||||
file_name = f"{file_name}.{PROPERTIES_SUFFIX}"
|
||||
properties = get_properties_by_drive_name(APP.config["RASCSI_DRIVE_PROPERTIES"], drive_name)
|
||||
properties = get_properties_by_drive_name(APP.config["PISCSI_DRIVE_PROPERTIES"], drive_name)
|
||||
|
||||
if not properties:
|
||||
return response(
|
||||
@@ -478,7 +478,7 @@ def show_diskinfo():
|
||||
safe_path = is_safe_path(file_name)
|
||||
if not safe_path["status"]:
|
||||
return response(error=True, message=safe_path["msg"])
|
||||
server_info = ractl_cmd.get_server_info()
|
||||
server_info = piscsi_cmd.get_server_info()
|
||||
returncode, diskinfo = sys_cmd.get_diskinfo(Path(server_info["image_dir"]) / file_name)
|
||||
if returncode == 0:
|
||||
return response(
|
||||
@@ -498,12 +498,12 @@ def show_manpage():
|
||||
"""
|
||||
Displays manpage
|
||||
"""
|
||||
app_allowlist = ["rascsi", "rasctl", "rasdump", "scsimon"]
|
||||
app_allowlist = ["piscsi", "scsictl", "scsidump", "scsimon"]
|
||||
|
||||
app = request.args.get("app", type=str)
|
||||
|
||||
if app not in app_allowlist:
|
||||
return response(error=True, message=_("%(app)s is not a recognized RaSCSI app", app=app))
|
||||
return response(error=True, message=_("%(app)s is not a recognized PiSCSI app", app=app))
|
||||
|
||||
file_path = f"{WEB_DIR}/../../../doc/{app}.1"
|
||||
html_to_strip = [
|
||||
@@ -567,11 +567,11 @@ def show_logs():
|
||||
@login_required
|
||||
def log_level():
|
||||
"""
|
||||
Sets RaSCSI backend log level
|
||||
Sets PiSCSI backend log level
|
||||
"""
|
||||
level = request.form.get("level") or "info"
|
||||
|
||||
process = ractl_cmd.set_log_level(level)
|
||||
process = piscsi_cmd.set_log_level(level)
|
||||
if process["status"]:
|
||||
return response(message=_("Log level set to %(value)s", value=level))
|
||||
|
||||
@@ -595,7 +595,7 @@ def attach_device():
|
||||
# Attempt to fetch the drive properties based on drive name
|
||||
drive_props = None
|
||||
if drive_name:
|
||||
for drive in APP.config["RASCSI_DRIVE_PROPERTIES"]:
|
||||
for drive in APP.config["PISCSI_DRIVE_PROPERTIES"]:
|
||||
if drive["name"] == drive_name:
|
||||
drive_props = drive
|
||||
break
|
||||
@@ -625,7 +625,7 @@ def attach_device():
|
||||
kwargs["revision"] = drive_props["revision"]
|
||||
kwargs["block_size"] = drive_props["block_size"]
|
||||
|
||||
process = ractl_cmd.attach_device(scsi_id, **kwargs)
|
||||
process = piscsi_cmd.attach_device(scsi_id, **kwargs)
|
||||
process = ReturnCodeMapper.add_msg(process)
|
||||
if process["status"]:
|
||||
return response(
|
||||
@@ -661,7 +661,7 @@ def attach_image():
|
||||
|
||||
if device_type:
|
||||
kwargs["device_type"] = device_type
|
||||
device_types = ractl_cmd.get_device_types()
|
||||
device_types = piscsi_cmd.get_device_types()
|
||||
expected_block_size = min(device_types["device_types"][device_type]["block_sizes"])
|
||||
|
||||
# Attempt to load the device properties file:
|
||||
@@ -679,13 +679,13 @@ def attach_image():
|
||||
kwargs["block_size"] = conf["block_size"]
|
||||
expected_block_size = conf["block_size"]
|
||||
|
||||
process = ractl_cmd.attach_device(scsi_id, **kwargs)
|
||||
process = piscsi_cmd.attach_device(scsi_id, **kwargs)
|
||||
process = ReturnCodeMapper.add_msg(process)
|
||||
if process["status"]:
|
||||
if int(file_size) % int(expected_block_size):
|
||||
logging.warning(
|
||||
"The image file size %s bytes is not a multiple of %s. "
|
||||
"RaSCSI will ignore the trailing data. "
|
||||
"PiSCSI will ignore the trailing data. "
|
||||
"The image may be corrupted, so proceed with caution.",
|
||||
file_size,
|
||||
expected_block_size,
|
||||
@@ -710,7 +710,7 @@ def detach_all_devices():
|
||||
"""
|
||||
Detaches all currently attached devices
|
||||
"""
|
||||
process = ractl_cmd.detach_all()
|
||||
process = piscsi_cmd.detach_all()
|
||||
if process["status"]:
|
||||
return response(message=_("Detached all SCSI devices"))
|
||||
|
||||
@@ -725,7 +725,7 @@ def detach():
|
||||
"""
|
||||
scsi_id = request.form.get("scsi_id")
|
||||
unit = request.form.get("unit")
|
||||
process = ractl_cmd.detach_by_id(scsi_id, unit)
|
||||
process = piscsi_cmd.detach_by_id(scsi_id, unit)
|
||||
if process["status"]:
|
||||
return response(
|
||||
message=_(
|
||||
@@ -747,7 +747,7 @@ def eject():
|
||||
scsi_id = request.form.get("scsi_id")
|
||||
unit = request.form.get("unit")
|
||||
|
||||
process = ractl_cmd.eject_by_id(scsi_id, unit)
|
||||
process = piscsi_cmd.eject_by_id(scsi_id, unit)
|
||||
if process["status"]:
|
||||
return response(
|
||||
message=_(
|
||||
@@ -765,7 +765,7 @@ def device_info():
|
||||
"""
|
||||
Displays detailed info for all attached devices
|
||||
"""
|
||||
process = ractl_cmd.list_devices()
|
||||
process = piscsi_cmd.list_devices()
|
||||
if process["status"]:
|
||||
return response(
|
||||
template="deviceinfo.html",
|
||||
@@ -783,9 +783,9 @@ def reserve_id():
|
||||
"""
|
||||
scsi_id = request.form.get("scsi_id")
|
||||
memo = request.form.get("memo")
|
||||
reserved_ids = ractl_cmd.get_reserved_ids()["ids"]
|
||||
reserved_ids = piscsi_cmd.get_reserved_ids()["ids"]
|
||||
reserved_ids.extend(scsi_id)
|
||||
process = ractl_cmd.reserve_scsi_ids(reserved_ids)
|
||||
process = piscsi_cmd.reserve_scsi_ids(reserved_ids)
|
||||
if process["status"]:
|
||||
RESERVATIONS[int(scsi_id)] = memo
|
||||
return response(message=_("Reserved SCSI ID %(id_number)s", id_number=scsi_id))
|
||||
@@ -800,9 +800,9 @@ def release_id():
|
||||
Releases the reservation of a SCSI ID as well as the memo for the reservation
|
||||
"""
|
||||
scsi_id = request.form.get("scsi_id")
|
||||
reserved_ids = ractl_cmd.get_reserved_ids()["ids"]
|
||||
reserved_ids = piscsi_cmd.get_reserved_ids()["ids"]
|
||||
reserved_ids.remove(scsi_id)
|
||||
process = ractl_cmd.reserve_scsi_ids(reserved_ids)
|
||||
process = piscsi_cmd.reserve_scsi_ids(reserved_ids)
|
||||
if process["status"]:
|
||||
RESERVATIONS[int(scsi_id)] = ""
|
||||
return response(
|
||||
@@ -896,7 +896,7 @@ def download_to_iso():
|
||||
),
|
||||
)
|
||||
|
||||
process_attach = ractl_cmd.attach_device(
|
||||
process_attach = piscsi_cmd.attach_device(
|
||||
scsi_id,
|
||||
device_type="SCCD",
|
||||
params={"file": process["file_name"]},
|
||||
@@ -936,7 +936,7 @@ def download_file():
|
||||
if destination == "file_server":
|
||||
destination_dir = FILE_SERVER_DIR
|
||||
else:
|
||||
server_info = ractl_cmd.get_server_info()
|
||||
server_info = piscsi_cmd.get_server_info()
|
||||
destination_dir = server_info["image_dir"]
|
||||
process = file_cmd.download_to_dir(url, destination_dir, Path(url).name)
|
||||
process = ReturnCodeMapper.add_msg(process)
|
||||
@@ -967,7 +967,7 @@ def upload_file():
|
||||
if destination == "file_server":
|
||||
destination_dir = FILE_SERVER_DIR
|
||||
else:
|
||||
server_info = ractl_cmd.get_server_info()
|
||||
server_info = piscsi_cmd.get_server_info()
|
||||
destination_dir = server_info["image_dir"]
|
||||
return upload_with_dropzonejs(destination_dir)
|
||||
|
||||
@@ -1056,7 +1056,7 @@ def create_file():
|
||||
|
||||
# Creating the drive properties file, if one is chosen
|
||||
if drive_name:
|
||||
properties = get_properties_by_drive_name(APP.config["RASCSI_DRIVE_PROPERTIES"], drive_name)
|
||||
properties = get_properties_by_drive_name(APP.config["PISCSI_DRIVE_PROPERTIES"], drive_name)
|
||||
if properties:
|
||||
prop_file_name = f"{full_file_name}.{PROPERTIES_SUFFIX}"
|
||||
process = file_cmd.write_drive_properties(prop_file_name, properties)
|
||||
@@ -1095,7 +1095,7 @@ def download():
|
||||
safe_path = is_safe_path(file_name)
|
||||
if not safe_path["status"]:
|
||||
return response(error=True, message=safe_path["msg"])
|
||||
server_info = ractl_cmd.get_server_info()
|
||||
server_info = piscsi_cmd.get_server_info()
|
||||
return send_from_directory(server_info["image_dir"], str(file_name), as_attachment=True)
|
||||
|
||||
|
||||
@@ -1262,7 +1262,7 @@ def change_language():
|
||||
"""
|
||||
locale = request.form.get("locale")
|
||||
session["language"] = locale
|
||||
ractl_cmd.locale = session["language"]
|
||||
piscsi_cmd.locale = session["language"]
|
||||
file_cmd.locale = session["language"]
|
||||
refresh()
|
||||
|
||||
@@ -1297,7 +1297,7 @@ def detect_locale():
|
||||
This requires the Flask app to have started first.
|
||||
"""
|
||||
session["language"] = get_locale()
|
||||
ractl_cmd.locale = session["language"]
|
||||
piscsi_cmd.locale = session["language"]
|
||||
file_cmd.locale = session["language"]
|
||||
|
||||
|
||||
@@ -1318,11 +1318,11 @@ def log_http_request():
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
APP.secret_key = "rascsi_is_awesome_insecure_secret_key"
|
||||
APP.secret_key = "piscsi_is_awesome_insecure_secret_key"
|
||||
APP.config["SESSION_TYPE"] = "filesystem"
|
||||
APP.config["MAX_CONTENT_LENGTH"] = int(MAX_FILE_SIZE)
|
||||
|
||||
parser = argparse.ArgumentParser(description="RaSCSI Web Interface command line arguments")
|
||||
parser = argparse.ArgumentParser(description="PiSCSI Web Interface command line arguments")
|
||||
parser.add_argument(
|
||||
"--port",
|
||||
type=int,
|
||||
@@ -1335,21 +1335,21 @@ if __name__ == "__main__":
|
||||
type=str,
|
||||
default="",
|
||||
action="store",
|
||||
help="Token password string for authenticating with RaSCSI",
|
||||
help="Token password string for authenticating with PiSCSI",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--rascsi-host",
|
||||
"--backend-host",
|
||||
type=str,
|
||||
default="localhost",
|
||||
action="store",
|
||||
help="RaSCSI host. Default: localhost",
|
||||
help="PiSCSI backend hostname. Default: localhost",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--rascsi-port",
|
||||
"--backend-port",
|
||||
type=int,
|
||||
default=6868,
|
||||
action="store",
|
||||
help="RaSCSI port. Default: 6868",
|
||||
help="PiSCSI backend port number. Default: 6868",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--log-level",
|
||||
@@ -1366,7 +1366,7 @@ if __name__ == "__main__":
|
||||
)
|
||||
|
||||
arguments = parser.parse_args()
|
||||
APP.config["RASCSI_TOKEN"] = arguments.password
|
||||
APP.config["PISCSI_TOKEN"] = arguments.password
|
||||
|
||||
logging.config.dictConfig(
|
||||
{
|
||||
@@ -1389,9 +1389,9 @@ if __name__ == "__main__":
|
||||
}
|
||||
)
|
||||
|
||||
sock_cmd = SocketCmdsFlask(host=arguments.rascsi_host, port=arguments.rascsi_port)
|
||||
ractl_cmd = RaCtlCmds(sock_cmd=sock_cmd, token=APP.config["RASCSI_TOKEN"])
|
||||
file_cmd = FileCmds(sock_cmd=sock_cmd, ractl=ractl_cmd, token=APP.config["RASCSI_TOKEN"])
|
||||
sock_cmd = SocketCmdsFlask(host=arguments.backend_host, port=arguments.backend_port)
|
||||
piscsi_cmd = PiscsiCmds(sock_cmd=sock_cmd, token=APP.config["PISCSI_TOKEN"])
|
||||
file_cmd = FileCmds(sock_cmd=sock_cmd, piscsi=piscsi_cmd, token=APP.config["PISCSI_TOKEN"])
|
||||
sys_cmd = SysCmds()
|
||||
|
||||
if Path(f"{CFG_DIR}/{DEFAULT_CONFIG}").is_file():
|
||||
@@ -1399,12 +1399,12 @@ if __name__ == "__main__":
|
||||
if Path(f"{DRIVE_PROPERTIES_FILE}").is_file():
|
||||
process = file_cmd.read_drive_properties(DRIVE_PROPERTIES_FILE)
|
||||
if process["status"]:
|
||||
APP.config["RASCSI_DRIVE_PROPERTIES"] = process["conf"]
|
||||
APP.config["PISCSI_DRIVE_PROPERTIES"] = process["conf"]
|
||||
else:
|
||||
APP.config["RASCSI_DRIVE_PROPERTIES"] = []
|
||||
APP.config["PISCSI_DRIVE_PROPERTIES"] = []
|
||||
logging.error(process["msg"])
|
||||
else:
|
||||
APP.config["RASCSI_DRIVE_PROPERTIES"] = []
|
||||
APP.config["PISCSI_DRIVE_PROPERTIES"] = []
|
||||
logging.warning("Could not read drive properties from %s", DRIVE_PROPERTIES_FILE)
|
||||
|
||||
logging.info("Starting WSGI server...")
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
"""
|
||||
Module for RaSCSI Web Interface utility methods
|
||||
Module for PiSCSI Web Interface utility methods
|
||||
"""
|
||||
|
||||
import logging
|
||||
@@ -12,7 +12,7 @@ from flask import request, make_response
|
||||
from flask_babel import _
|
||||
from werkzeug.utils import secure_filename
|
||||
|
||||
from rascsi.sys_cmds import SysCmds
|
||||
from piscsi.sys_cmds import SysCmds
|
||||
|
||||
|
||||
def get_valid_scsi_ids(devices, reserved_ids):
|
||||
@@ -79,7 +79,7 @@ def sort_and_format_devices(devices):
|
||||
|
||||
def map_device_types_and_names(device_types):
|
||||
"""
|
||||
Takes a (dict) corresponding to the data structure returned by RaCtlCmds.get_device_types()
|
||||
Takes a (dict) corresponding to the data structure returned by PiscsiCmds.get_device_types()
|
||||
Returns a (dict) of device_type:device_name mappings of localized device names
|
||||
"""
|
||||
for device in device_types.keys():
|
||||
@@ -229,7 +229,7 @@ def is_bridge_configured(interface):
|
||||
PATH_SYSCTL = "/etc/sysctl.conf"
|
||||
PATH_IPTV4 = "/etc/iptables/rules.v4"
|
||||
PATH_DHCPCD = "/etc/dhcpcd.conf"
|
||||
PATH_BRIDGE = "/etc/network/interfaces.d/rascsi_bridge"
|
||||
PATH_BRIDGE = "/etc/network/interfaces.d/piscsi_bridge"
|
||||
return_msg = _("Configure the network bridge for %(interface)s first: ", interface=interface)
|
||||
to_configure = []
|
||||
sys_cmd = SysCmds()
|
||||
|
||||
+10
-10
@@ -100,11 +100,11 @@ while [ "$1" != "" ]; do
|
||||
-P | --password)
|
||||
ARG_PASSWORD="--password $VALUE"
|
||||
;;
|
||||
-h | --rascsi-host)
|
||||
ARG_RASCSI_HOST="--rascsi-host $VALUE"
|
||||
-h | --backend-host)
|
||||
ARG_BACKEND_HOST="--backend-host $VALUE"
|
||||
;;
|
||||
-o | --rascsi-port)
|
||||
ARG_RASCSI_PORT="--rascsi-port $VALUE"
|
||||
-o | --backend-port)
|
||||
ARG_BACKEND_PORT="--backend-port $VALUE"
|
||||
;;
|
||||
-l | --log-level)
|
||||
ARG_LOG_LEVEL="--log-level $VALUE"
|
||||
@@ -122,13 +122,13 @@ done
|
||||
|
||||
PYTHON_COMMON_PATH=$(dirname $PWD)/common/src
|
||||
export PYTHONPATH=$PWD/src:${PYTHON_COMMON_PATH}
|
||||
cd src
|
||||
cd src || exit 1
|
||||
|
||||
if [[ $ARG_DEV_MODE ]]; then
|
||||
echo "Starting web UI (dev mode) ..."
|
||||
echo "Starting PiSCSI Web UI (dev mode) ..."
|
||||
watchmedo auto-restart --directory=../../ --pattern=*.py --recursive -- \
|
||||
python3 web.py ${ARG_PORT} ${ARG_PASSWORD} ${ARG_RASCSI_HOST} ${ARG_RASCSI_PORT} ${ARG_LOG_LEVEL} ${ARG_DEV_MODE}
|
||||
python3 web.py ${ARG_PORT} ${ARG_PASSWORD} ${ARG_BACKEND_HOST} ${ARG_BACKEND_PORT} ${ARG_LOG_LEVEL} ${ARG_DEV_MODE}
|
||||
else
|
||||
echo "Starting web UI ..."
|
||||
python3 web.py ${ARG_PORT} ${ARG_PASSWORD} ${ARG_RASCSI_HOST} ${ARG_RASCSI_PORT} ${ARG_LOG_LEVEL} ${ARG_DEV_MODE}
|
||||
fi
|
||||
echo "Starting PiSCSI Web UI ..."
|
||||
python3 web.py ${ARG_PORT} ${ARG_PASSWORD} ${ARG_BACKEND_HOST} ${ARG_BACKEND_PORT} ${ARG_LOG_LEVEL} ${ARG_DEV_MODE}
|
||||
fi
|
||||
|
||||
@@ -3,12 +3,12 @@ from conftest import STATUS_SUCCESS, STATUS_ERROR
|
||||
|
||||
# route("/login", methods=["POST"])
|
||||
def test_login_with_valid_credentials(pytestconfig, http_client_unauthenticated):
|
||||
# Note: This test depends on the rascsi group existing and 'username' a member the group
|
||||
# Note: This test depends on the piscsi group existing and 'username' a member the group
|
||||
response = http_client_unauthenticated.post(
|
||||
"/login",
|
||||
data={
|
||||
"username": pytestconfig.getoption("rascsi_username"),
|
||||
"password": pytestconfig.getoption("rascsi_password"),
|
||||
"username": pytestconfig.getoption("piscsi_username"),
|
||||
"password": pytestconfig.getoption("piscsi_password"),
|
||||
},
|
||||
)
|
||||
|
||||
@@ -34,7 +34,7 @@ def test_login_with_invalid_credentials(http_client_unauthenticated):
|
||||
assert response.status_code == 401
|
||||
assert response_data["status"] == STATUS_ERROR
|
||||
assert response_data["messages"][0]["message"] == (
|
||||
"You must log in with valid credentials for a user in the 'rascsi' group"
|
||||
"You must log in with valid credentials for a user in the 'piscsi' group"
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -107,11 +107,11 @@ def test_create_image_with_properties_file(http_client, delete_file):
|
||||
|
||||
# route("/sys/manpage", methods=["POST"])
|
||||
def test_show_manpage(http_client):
|
||||
response = http_client.get("/sys/manpage?app=rascsi")
|
||||
response = http_client.get("/sys/manpage?app=piscsi")
|
||||
response_data = response.json()
|
||||
|
||||
assert response.status_code == 200
|
||||
assert "rascsi" in response_data["data"]["manpage"]
|
||||
assert "piscsi" in response_data["data"]["manpage"]
|
||||
|
||||
|
||||
# route("/healthcheck", methods=["GET"])
|
||||
|
||||
@@ -61,7 +61,7 @@ def test_show_logs(http_client):
|
||||
"/logs/show",
|
||||
data={
|
||||
"lines": 100,
|
||||
"scope": "rascsi",
|
||||
"scope": "piscsi",
|
||||
},
|
||||
)
|
||||
|
||||
@@ -69,7 +69,7 @@ def test_show_logs(http_client):
|
||||
|
||||
assert response.status_code == 200
|
||||
assert response_data["data"]["lines"] == "100"
|
||||
assert response_data["data"]["scope"] == "rascsi"
|
||||
assert response_data["data"]["scope"] == "piscsi"
|
||||
|
||||
|
||||
# route("/config/save", methods=["POST"])
|
||||
|
||||
@@ -11,8 +11,8 @@ def pytest_addoption(parser):
|
||||
parser.addoption("--base_url", action="store", default=default_base_url)
|
||||
parser.addoption("--httpserver_host", action="store", default=socket.gethostname())
|
||||
parser.addoption("--httpserver_listen_address", action="store", default="0.0.0.0")
|
||||
parser.addoption("--rascsi_username", action="store", default="pi")
|
||||
parser.addoption("--rascsi_password", action="store", default="rascsi")
|
||||
parser.addoption("--piscsi_username", action="store", default="pi")
|
||||
parser.addoption("--piscsi_password", action="store", default="piscsi")
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
@@ -21,7 +21,7 @@ def env(pytestconfig):
|
||||
return {
|
||||
"is_docker": bool(os.getenv("DOCKER")),
|
||||
"home_dir": home_dir,
|
||||
"cfg_dir": f"{home_dir}/.config/rascsi",
|
||||
"cfg_dir": f"{home_dir}/.config/piscsi",
|
||||
"images_dir": f"{home_dir}/images",
|
||||
"file_server_dir": f"{home_dir}/shared_files",
|
||||
}
|
||||
@@ -63,8 +63,8 @@ def create_http_client(pytestconfig):
|
||||
session.post(
|
||||
"/login",
|
||||
data={
|
||||
"username": pytestconfig.getoption("rascsi_username"),
|
||||
"password": pytestconfig.getoption("rascsi_password"),
|
||||
"username": pytestconfig.getoption("piscsi_username"),
|
||||
"password": pytestconfig.getoption("piscsi_password"),
|
||||
},
|
||||
)
|
||||
return session
|
||||
|
||||
Reference in New Issue
Block a user