Initial commit
This commit is contained in:
commit
8b8a3d66cc
47
README.md
Normal file
47
README.md
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
# URL Shortener
|
||||||
|
|
||||||
|
*URL Shortener* ist eine grafische Oberfläche für [Kutt](https://github.com/thedevs-network/kutt), um [Kurzlinks](https://de.wikipedia.org/wiki/Kurz-URL-Dienst) zu beliebigen URLs zu erzeugen.
|
||||||
|
|
||||||
|
## Anwendung
|
||||||
|
|
||||||
|
### Ersteinrichtung
|
||||||
|
|
||||||
|
In der Konfigurationsdatei `~/.urlshortener` werden die URL der Kutt-Instanz sowie der API-KEY gespeichert.
|
||||||
|
|
||||||
|
![](img/Setup.png)
|
||||||
|
|
||||||
|
### Kurzlink erzeugen
|
||||||
|
|
||||||
|
- **URL** (obligatorisch): Eine beliebige URL einer existierenden Webseite, für die ein Kurzlink erzeugt werden soll. Befindet sich in der Zwischenablage eine URL, so wird sie hier automatisch eingefügt.
|
||||||
|
|
||||||
|
- **Kurzlink** (optional): Frei wählbar oder zufällig erzeugt.
|
||||||
|
|
||||||
|
- **Wiederverwendung** (obligatorisch): Existiert bereits ein Kurzlink zu der URL, dann wird bei *true* kein neuer Kurzlink erzeugt, bei *false* wohl.
|
||||||
|
|
||||||
|
- **Verfallszeit** (optional): Der Kurzlink wird gelöscht, wenn die Verfallszeit abgelaufen ist: ***5m*** für *5 Minuten*, ***2h*** für *2 Stunden*, ***30d*** für *30 Tage*.
|
||||||
|
|
||||||
|
- **Passwort** (optional): Beim Aufruf des Kurzlinks wird nach einem Passwort gefragt.
|
||||||
|
|
||||||
|
- **Beschreibung** (optional): Die Beschreibung wird in der Weboberfläche von Kutt angezeigt.
|
||||||
|
|
||||||
|
![](img/Options.png)
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
Folgende Programme müssen installiert sein, damit *URL Shortener* ordnungsgemäss funktionieren kann:
|
||||||
|
|
||||||
|
- bash
|
||||||
|
|
||||||
|
- yad
|
||||||
|
|
||||||
|
- jq
|
||||||
|
|
||||||
|
- curl
|
||||||
|
|
||||||
|
- notify-send
|
||||||
|
|
||||||
|
- xclip
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*URL Shortener* ist auch als [AppImage](https://z3h.de/ez) verfügbar.
|
BIN
img/Options.png
Normal file
BIN
img/Options.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
BIN
img/Setup.png
Normal file
BIN
img/Setup.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.9 KiB |
103
urlshortener
Executable file
103
urlshortener
Executable file
@ -0,0 +1,103 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Von Tim Peters, https://z3h.de/url-shortener
|
||||||
|
##############################################
|
||||||
|
|
||||||
|
HOST=
|
||||||
|
API_KEY=
|
||||||
|
APP_NAME="URL Shortener"
|
||||||
|
FILE_CONFIG=~/.urlshortener
|
||||||
|
|
||||||
|
addUrl() {
|
||||||
|
|
||||||
|
local data=
|
||||||
|
local result=
|
||||||
|
local link=
|
||||||
|
local error=
|
||||||
|
|
||||||
|
[ -n "$1" ] && data="${data}\"target\": \"$1\""
|
||||||
|
[ -n "$2" ] && data="${data},\"customurl\": \"$2\""
|
||||||
|
[ -n "$3" ] && data="${data},\"reuse\": $3"
|
||||||
|
[ -n "$4" ] && data="${data},\"expire_in\": \"$4\""
|
||||||
|
[ -n "$5" ] && data="${data},\"password\": \"$5\""
|
||||||
|
[ -n "$6" ] && data="${data},\"description\": \"$6\""
|
||||||
|
|
||||||
|
result="$( \
|
||||||
|
curl \
|
||||||
|
-s -H "X-API-KEY: $API_KEY" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
--data "{$data}" \
|
||||||
|
"$HOST/api/v2/links"
|
||||||
|
)"
|
||||||
|
|
||||||
|
link="$( echo "$result" | jq .link | tr -d \" )"
|
||||||
|
error="$( echo "$result" | jq .error | tr -d \" )"
|
||||||
|
|
||||||
|
if [ "$link" != "null" ]; then
|
||||||
|
echo -n "$link" | xclip -selection c
|
||||||
|
notify-send -t 5000 "$link wurde in die Zwischenablage kopiert"
|
||||||
|
elif [ "$error" != "null" ]; then
|
||||||
|
notify-send -t 10000 "$error"
|
||||||
|
fi
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
addConfig() {
|
||||||
|
|
||||||
|
yad \
|
||||||
|
--form \
|
||||||
|
--title="URL Shortener" \
|
||||||
|
--text="Ersteinrichtung" \
|
||||||
|
--field="URL" \
|
||||||
|
--field="API-KEY" > "$FILE_CONFIG" || exit
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
getConfig() {
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
[ -r "$FILE_CONFIG" ] || addConfig
|
||||||
|
HOST="$( cut -d\| -f1 < "$FILE_CONFIG" )"
|
||||||
|
API_KEY="$( cut -d\| -f2 < "$FILE_CONFIG" )"
|
||||||
|
if [ -z "$HOST" ] && [ -z "$API_KEY" ]; then
|
||||||
|
addConfig
|
||||||
|
else
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
getUrlFromClipboard() {
|
||||||
|
|
||||||
|
xclip -o | grep -E "^https*://"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
getConfig
|
||||||
|
FORM="$( \
|
||||||
|
yad \
|
||||||
|
--form \
|
||||||
|
--title="$APP_NAME" \
|
||||||
|
--text="URL und Einstellmöglichkeiten" \
|
||||||
|
--field="URL" \
|
||||||
|
--field="Kurzlink" \
|
||||||
|
--field="Wiederverwendung:CB" \
|
||||||
|
--field="Verfallszeit:CBE" \
|
||||||
|
--field="Passwort:H" \
|
||||||
|
--field="Beschreibung" \
|
||||||
|
"$( getUrlFromClipboard )" \
|
||||||
|
"" \
|
||||||
|
"true\!false" \
|
||||||
|
"\!7d\!30d\!180d\!365d" \
|
||||||
|
"" \
|
||||||
|
"" \
|
||||||
|
)"
|
||||||
|
|
||||||
|
[ -n "$FORM" ] && \
|
||||||
|
addUrl \
|
||||||
|
"$( echo "$FORM" | cut -d\| -f1 )" \
|
||||||
|
"$( echo "$FORM" | cut -d\| -f2 )" \
|
||||||
|
"$( echo "$FORM" | cut -d\| -f3 )" \
|
||||||
|
"$( echo "$FORM" | cut -d\| -f4 )" \
|
||||||
|
"$( echo "$FORM" | cut -d\| -f5 )" \
|
||||||
|
"$( echo "$FORM" | cut -d\| -f6 )"
|
Loading…
Reference in New Issue
Block a user