#!/bin/bash # /usr/syno/synoman/webman/3rdparty/synOTR/index.cgi PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin # System initiieren # --------------------------------------------------------------------- machinetyp=$(uname --machine) if [ $machinetyp = "x86_64" ]; then include_synowebapi=synowebapi_x86_64 elif [ $machinetyp = "i686" ]; then include_synowebapi=synowebapi_i686 elif [ $machinetyp = "armv7" ]; then include_synowebapi=synowebapi_armv7 fi app_name="synOTR" app_home=$(echo /volume*/@appstore/${app_name}/ui) [ ! -d "${app_home}" ] && exit # Zurücksetzten möglicher Zugangsberechtigungen unset syno_login syno_token syno_user user_exist is_admin is_privileged # DSM - SynoToken einlesen, überprüfen und an QUERY_STRING übergeben # --------------------------------------------------------------------- # REQUEST_METHOD auf GET ändern, damit der SynoToken ausgewertet werden kann [[ "${REQUEST_METHOD}" == "POST" ]] && REQUEST_METHOD="GET" && OLD_REQUEST_METHOD="POST" # Lokalisierung der login.cgi zum extrahieren des SynoToken syno_login=$(/usr/syno/synoman/webman/login.cgi) # Auslesen des SynoToken aus der login.cgi if echo ${syno_login} | grep -q SynoToken ; then syno_token=$(echo "${syno_login}" | grep SynoToken | cut -d ":" -f2| cut -d '"' -f2) else exit fi # Füge den SynoToken dem QUERY_STRING hinzu [ -z ${QUERY_STRING} ] && QUERY_STRING="SynoToken=${syno_token}" || QUERY_STRING="${QUERY_STRING}&SynoToken=${syno_token}" # Prüfen, ob der SynoToken dem System übergeben wurde [ -z "${syno_token}" ] && exit # REQUEST_METHOD wieder zurück auf POST setzen [[ "${OLD_REQUEST_METHOD}" == "POST" ]] && REQUEST_METHOD="POST" && unset OLD_REQUEST_METHOD # DSM - Angemeldeten Benutzer einlesen und Berechtigung überprüfen # --------------------------------------------------------------------- # Lokalisierung der authenticate.cgi zum extrahieren des angemeldeten Benutzers syno_user=$(/usr/syno/synoman/webman/authenticate.cgi) # Prüfen, ob der Benutzer existiert user_exist=$(grep -o "^${syno_user}:" /etc/passwd) [ -n "${user_exist}" ] && user_exist="yes" || exit # Prüfen, ob der lokale Benutzer der Gruppe "administrators" angehört if id -G "${syno_user}" | grep -q 101; then is_admin="yes" else is_admin="no" fi # Prüfen, ob der Benutzer über die nötige Authentifizierung auf App-Ebene verfügt if [ -f "${app_home}/includes/$include_synowebapi" ] ; then rar_data=$($app_home/includes/$include_synowebapi --exec api=SYNO.Core.Desktop.Initdata method=get version=1 runner="$syno_user" | jq '.data.AppPrivilege') syno_privilege=$(echo "${rar_data}" | grep "SYNO.SDS.ThirdParty.App.${app_name}" | cut -d ":" -f2 | cut -d '"' -f2) if echo "${syno_privilege}" | grep -q "true"; then is_authenticated="yes" else is_authenticated="no" fi else is_authenticated="no" txtActivatePrivileg="To enable app level authentication do...
root@[local-machine]:~# cp /usr/syno/bin/synowebapi /var/packages/${app_name}/target/ui/modules
root@[local-machine]:~# chown ${app_name}.${app_name} /var/packages/$MYPKG/target/ui/modules/synowebapi" fi # Zugangsberechtigungen und Privilegien zum Schutz auf "readonly" setzen oder leeren unset syno_login rar_data syno_privilege readonly syno_token syno_user user_exist is_admin is_authenticated # --------------------------------------------------------------------- # Benutzerordner initiieren dir=$(echo /volume*/@appstore/synOTR/ui) || exit get_var=$(which get_key_value) || exit set_var=$(which synosetkeyvalue) || exit usersettings="$dir/usersettings" var="$dir/usersettings/var.txt" # var="$usersettings/var.txt" # stop="$usersettings/stop.txt" stop="$dir/usersettings/stop.txt" black="color: #000000" green="color: #00B10D" red="color: #DF0101" synotrred="color: #BD0010" blue="color: #2A588C" orange="color: #FFA500" grey="color: #424242" grey1="color: #53657D" grey2="color: #374355" # Konfiguration laden: source $dir/app/etc/Konfiguration.txt # MAC-Adresse auslesen (um DEV-Seiten zu verstecken) read MAC synOTR ' echo '
' echo ' ' echo '

' # Layout - Dynamischer Seitenaustausch echo '
' if [ -z "$mainpage" ]; then echo 'Die Seite konnte nicht geladen werden!' else script="$mainpage.sh" if [ -f "$script" ]; then . ./"$script" else . ./main.sh fi fi # Fehlerausgabe if [ -f "$usersettings/stop2.txt" ]; then #
echo '

' IFS=' ' for i in $(< "$usersettings/stop2.txt"); do IFS="$backifs" echo ''$i'' done [ -f "$stop" ] && rm "$stop" [ -f "$usersettings/stop2.txt" ] && rm "$usersettings/stop2.txt" echo '

' #
fi if [ -f "$stop" ]; then cp "$stop" "$usersettings/stop2.txt" echo '' fi # Footer if [ -f "footer.sh" ] && [ ! -f "$stop" ]; then . ./footer.sh fi # Layout - Grundgerüst schließen - echo '
'