LoxBerry::Storage::get_storage

@storages = LoxBerry::Storage::get_storage(BOOL readwriteonly, [STRING localdatadir]);


Die Funktion get_storage sammelt alle vorhandenen Storage-Punkte (USB, Netzwerk, Lokal) und liefert einen Array zurück, der auch direkt in HTML::Template verwendet werden kann. 

LoxBerry Compatibility

Diese Funktion steht erst ab LoxBerry 1.2.1 zur Verfügung. Bitte dies entsprechend als Minimum-Version in der plugin.cfg setzen.


Innerhalb eines Plugins wäre es denkbar, einige (große) Datenmengen oder häufige Schreibzugriffe auf einen externen Datenträger auszulagern oder von dort aus Daten, z. B. MP3-Dateien, einzulesen.

Der zurückgegebene Array kann direkt in HTML::Template benutzt werden. 

Parameter

Parameter Funktion
(optional)

readwriteonly
Ist der erste Parameter = 1, werden nur Devices ausgegeben, auf die sowohl Lese- als auch Schreibberechtigung besteht. Andernfalls werden alle Devices, also auch diejenigen, die nur read-only sind, ausgegeben.
(optional)

localdatadir
Standardmäßig (ohne Angabe) wird als lokales Datenverzeichnis das $lbpdatadir zurückgeliefert.

Bei Angabe dieses Parameters wird das angegebene Verzeichnis als lokales Datenverzeichnis zurückgeliefert.


Variablen

Hash-Variable pro Array-ZeileInhalt
PATH Der vollständige Pfad zu diesem Storage-Punkt. PATH ist immer unique und kann als Schlüssel (Key) verwendet werden.
NAME Liefert einen einheitlichen, berechneten Namen zurück, der für die Darstellung in der Benutzeroberfläche gedacht ist. Die Darstellung ist je nach Gruppe unterschiedlich.

Der Name enthält auch die Größe des Datenträgers in GB.
GROUP * net → Netzwerk-Shares
* usb → USB-Devices
* local → Lokaler Speicher auf dem LoxBerry (aktuell nur $plugindatadir)
TYPE Der Typ des Storages - bei usb das Dateisystem, bei net der Protokolltyp (z.B. smb), bei local → local
WRITABLE Zeigt an, ob der Pfad beschreibbar ist

* 0/undef → Read-Only
* 1 → Writable

Für TYPE = 'local' wird nicht explizit geprüft, sondern immer 1 zurückgeliefert
USED Liefert den am Datenträger verwendeten Speicher in KB
AVAILABLE Liefert den am Datenträger verfügbaren Speicher in KB
SIZE Liefert die Größe des Datenträgers in KB
SIZE_GB Liefert die Größe des Datenträgers in GB
Nur GROUP=USB:
USBSTORAGE_DEVICE Vom System identifizierter Name des USB-Datenträgers
USBSTORAGE_BLOCKDEVICE Normalerweise der Mountpoint des Blockdevices, z.B. /dev/sda
Nur GROUP=NET:
NETSHARE_SERVER Servername
NETSHARE_SHARENAME Name des Fileshares

  

Verwendung

use LoxBerry::Storage;
use LoxBerry::Web;
my @storage = LoxBerry::Storage::get_storage();
 
print STDERR "USB Devices:\n";
foreach my $storagepoint (@storage) {
    print STDERR "$storagepoint->{NAME} $storagepoint->{PATH} $storagepoint->{WRITABLE}\n";
}
 
$htmltemplate->param('STORAGE' => \@storage);
 
# Access a single element
print STDERR "Single element: " . $storage[0]->{NAME} . "\n"; 


Verwendung mit HTML::Template

<TMPL_LOOP STORAGE>
            <div style="display: flex">
                <div style="min-width: 50px"><TMPL_VAR PATH></div>
                <div style="min-width: 200px"><TMPL_VAR TYPE></div>
                <div style="min-width: 200px"><TMPL_VAR SIZE_GB> GB</div>
            </div>
    </TMPL_LOOP>