Webshare

GitHub Repository

Webshare ist ein einfacher, leichter, selbst gehosteter Webservice mit dem man einfach Dateien und Links über eine eigene, kurze URL teilen kann.

Funktionen

Installation

  1. Dateien vom letzten Release herunterladen.
  2. Download Webshare

    Mit dem Download werden die Download Bedingungen (Haftungsausschluss und Urheberrecht) akzeptiert.

    Für Webshare gilt die MIT License.

    Download

  3. Dateien entpacken und auf den eigenen Webserver hochladen.
  4. 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.
  5. 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()
    Um eindeutige Short Links zu garantieren, sollte uri ein Primary Key Index sein.
    Für eine einfache Installation kann die install.sql Datei verwendet werden, die mit Webshare mitgeliefert wird.
  6. 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:

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