Webshare
Webshare ist ein einfacher, leichter, selbst gehosteter Webservice mit dem man einfach Dateien und Links über eine eigene, kurze URL teilen kann.
Funktionen
- Dateien teilen mit einer einfachen, benutzerdefinierten URL
- Links verkürzen (wie Bitly)
- Ablaufdatum für Shares
- Dateien in einem eigenen Verzeichnis auf dem Webserver speichern
- Share-Informationen werden in einer MySQL Datenbank gespeichert
- Existierende Shares werden in der Admin Seite aufgelistet
- Shares können auf der Admin Seite einzeln gelöscht werden
Installation
- Dateien vom letzten Release herunterladen.
- Dateien entpacken und auf den eigenen Webserver hochladen.
- Dateien an den richtigen Ort verschieben:
- Die Dateien im home Verzeichnis müssen innerhalb des Root-Verzeichnisses des Webservers sein. Sie können auch in einem Unterverzeichnis liegen und der Inhalt der index.php Datei kann auch über eine eingene Datei ausgeführt werden für erweiterte Nutzung. Die .htaccess Datei leitet lediglich alle Anfragen auf die index.php Datei weiter.
- Das webshare Verzeichnis muss dagegen in einem Ordner oberhalb des Root-Verzeichnisses sein, um direkte Zugriffe auf die Dateien zu verhindern. Die Dateien können frei verschoben werden, nur die Dateien innerhalb des function Verzeichnisses sollten in einem Verzeichnis zusammen bleiben.
- Die MySQL Tabelle für webshare muss folgende Struktur haben:
name type null default uri varchar(50) no none type varchar(50) no none value varchar(200) no none password varchar(200) yes NULL expireDate datetime yes NULL createDate datetime no current_timestamp()
Für eine einfache Installation kann die install.sql Datei verwendet werden, die mit Webshare mitgeliefert wird. - Config-Datei anpassen:
- Setzte den Installationspfad, wenn sich die index.php Datei in einem Unterverzeichnis des Root-Verzeichnisses befindet.
- Pfad zum Speicherort für Dateien setzen.
- Pfad zur Admin, View und Password Datei anpassen.
- Datenbank Login Informationen eingeben (hostname, username, password, database name und table name für Webshare).
- Aktion anpassen, wenn ein Error 404 auftritt.
- Zugriff zur Admin Seite durch Überprüfung des Login Statuses limitieren (empfohlen) oder eine Authentifizierung mit einer .htaccess Datei benutzen
- Aktion setzen, wenn die Admin Page ohne Rechte aufgerufen wurde
Anpassung
Die Webshare Installation ist individuell anpassbar, indem man die Beispielseiten in das eigene Design einbindet. Jede Seite hat nur ein paar Elemente, die sie beinhalten muss, damit Webshare korrekt funktioniert.
Generelle Outputs
Das Webshare\Output Object stellt einige Informationen über den aktuellen Share zur Verfügung:
- Webshare\Output::$uri: Die URI des Shares.
- Webshare\Output::$value: Der Inhalt des Shares, also entweder der Link oder der Dateiname. Sollte nicht in der Passwort Page benutzt werden, da es Informationen über den Share bereitstellt, ohne das Passwort einzugeben.
- Webshare\Output::$expireDate: Der Zeitpunkt an dem der Share auslaufen wird.
- Webshare\Output::$createDate: Der Zeitpunkt an dem der Share erstellt wurde.
- Webshare\Output::$status: Statusinformationen über den aktuellen Share, kann nur in einigen Pages benutzt werden.
- Webshare\Output::link($uri, $text, $longLink): Function to output a link to an URI in webshare, for example the admin page. $uri sets the URI to link to, $text adjusts the text that is visible (default is the link itself), $longLink controls wether the link should just be the URI / text or an complete link with hostname and option to copy it.
Admin Page
Die Admin Seite muss ein Formular bereitstellen, um einen neuen Share hinzuzufügen. Dazu werden mehrere Inputs benötigt.
<form method="post" enctype="multipart/form-data">
<input type="text" name="uri" pattern="[a-zA-Z0-9_-]+" required><br>
<input type="file" name="file"><br>
<input type="url" name="link"><br>
<input type="text" name="password"><br>
<input type="datetime-local" name="expireDate"><br>
<input type="submit" name="submit" /><br>
</form>
Um Nachrichten nach dem Versuch einen neuen Share hinzuzufügen anzuzeigen, sollte zudem folgender PHP code eingebaut werden.
<?php if ($status[0] == "success") { ?>
// Success message, add the php line below to output a link and a copy icon to the share.
<?php print($status[1]) ?>
<?php }
if ($status[0] == "errorBoth") { ?>
// Message if share adding failed due to a provision of file and link input at the same time.
<?php }
if ($status[0] == "errorUri") { ?>
// Message if share adding failed because the entered URI is already in use.
<?php }
if ($status[0] == "errorUploadSize") { ?>
// Message if share adding failed due to an excess of the upload size.
<?php }
if ($status[0] == "errorDefault") { ?>
// Message if share adding failed for another reason.
<?php } ?>
Um eine Liste aller existierenden Shares anzuzeigen, muss folgende Tabellenstruktur verwendet werden. Das PHP Script gibt die Daten aus, die Links ermöglichen das Sortieren der Tabelle nach den verschiedenen Spalten.
<table>
<th><a href="?sort=uri">URI</a></th>
<th><a href="?sort=type">Type</a></th>
<th><a href="?sort=value">Value</a></th>
<th><a href="?sort=password">Password</a></th>
<th><a href="?sort=expireDate">Expire Date</a></th>
<th><a href="?sort=createDate">Create Date</a></th>
<?php print($shareList) ?>
</table>
Eine Beispiel Admin Seite kann hier aufgerufen werden.
View Page
Die View Seite sollte eine Vorschau der angefragten Datei anzeigen. Dazu muss mit folgendem PHP Code die Vorschau ausgegeben werden.
<?php print($sharePreview) ?>
Um den Namen der Datei darzustellen kann dieser Code verwendet werden:
<?php print($shareFileName) ?>
Eine Beispiel View Seite kann hier aufgerufen werden.
Password Page
Die Password Seite muss ein Formular enthalten, um das Passwort zum aufgerufenen Share einzugeben.
<form method="post">
<label>Password: </label><input type="password" name="password"><br>
<input type="submit" value="Submit password" name="submit"><br>
</form>
Außerdem sollte folgender PHP Code eingefügt werden, damit Nachrichten über den Status der Passworteingabe ausgegeben werden können.
<?php if ($status == "incorrect") { ?>
// Message if the password is incorrect
<?php } else { ?>
// Default message that requests the user to enter the password
<?php } ?>
Eine Beispiel Password Seite kann hier aufgerufen werden.
Delete page
Die Delete Seite muss ein Formular bereitstellen, um die Löschung eines Shares zu bestätigen. Dazu sollte folgender Code verwendet werden:
<form method="post">
<input type="hidden" name="share" value="<?php print($uri) ?>">
<input type="submit" name="submit" value="Delete"><br>
</form>
Um den Benutzer über eine erfolgreiche Löschung zu informieren, kann mit folgendem PHP Code nach einer Überprüfung des Lösch-Statuses eine Nachricht ausgegeben werden.
<?php if ($status == "success") { ?>
// Success message in HTML
<?php } else { ?>
// Form from above
<?php } ?>
Error 404 Page
Die Error 404 Seite hat keine benötigten Teile, sie sollte den Benutzer lediglich darüber informieren, dass die der aufgerufene Share nicht existiert.
Eine Beispiel Error 404 Seite kann hier aufgerufen werden.
Credit und Lizenz
© 2023 Friedinger
Lizenz: MIT License