Synology 3rd Party CONFIG

Status
Für weitere Antworten geschlossen.

QTip

Super-Moderator
Teammitglied
Mitglied seit
04. Sep 2008
Beiträge
2.341
Punkte für Reaktionen
14
Punkte
84

Kalysto

Benutzer
Mitglied seit
30. Dez 2014
Beiträge
384
Punkte für Reaktionen
10
Punkte
18
was genau sagt denn die index.conf aus ?? finde dazu nichts auch nicht in der Doku....

Screenshot 2018-05-02 19.22.48.png
Geht irgend wie nicht....

muss ich die config datei in einen anderen Ordner packen weil ich die UI geändert habe also den Pfad kann das sein ??

EDIT:
wenn ich in der INFO:
Rich (BBCode):
dsmuidir="app"
raus nehmen und den Ordner:
Rich (BBCode):
/app/texts/ger/strings
änder in:
/texts/ger/strings

dann geht es .... weis aber net warum..
 
Zuletzt bearbeitet:

Kalysto

Benutzer
Mitglied seit
30. Dez 2014
Beiträge
384
Punkte für Reaktionen
10
Punkte
18
Einer ne Idee zu den Fragen oben :D

Da es dein Thread ist, kannst du auch erstmal fragen was du möchtest. Außerdem bezieht sich ja alles auf ein Thema, von daher sehe ich da erstmal kein Problem drin.

Das man dein SPK auch starten kann, wenn es im Paketzentrum gestoppt ist, liegt am fehlenden SynoToken. Schau dir mal diesen Thread an und Bau den Token in dein SPK ein.

Das dein gestopptes SPK noch im DSM angezeigt wird liegt wohl an einem fehlerhaften Script unter /scripts/start-stop-status. Poste doch mal, was du da drin stehen hast!

Tommes

Das heißt für den SynoToken würde meine index.php so aussehen:
PHP:
// Berechtigung
require('page/check_appprivilege.php');
list($synotoken, $synouser, $is_admin) = check_privilege('SYNO.SDS.SynoDSApps.Application');
if ($synouser == '') {
	exit();
}
$token = ($synotoken ? "?SynoToken=".$synotoken : "");

// Zum Anmelden
$login = shell_exec("/usr/syno/synoman/webman/login.cgi");
preg_match('/\"SynoToken\"\s*?:\s*?\"(.*)\"/',$login,$synotoken);
$synotoken = trim($synotoken[1]);
$tmpenv = getenv('QUERY_STRING');
putenv('QUERY_STRING=SynoToken='.$synotoken);
?>

HTML:
<a href="test_seite.php?<?php echo $token; ?>">Test Seite</a>

meine test_seite.php so:

PHP:
$synouser = shell_exec("/usr/syno/synoman/webman/modules/authenticate.cgi");
if ($synouser == '') {
	exit();
}

So sollte es Stimmen oder ??

wie sollte die start-stop-status Datei denn aussehen ??
Hier mal meine:

Rich (BBCode):
#!/bin/sh

LOG="/var/packages/$SYNOPKG_PKGNAME/UDB"
start_stop_status="/var/packages/$SYNOPKG_PKGNAME/start_stop_status"
start_stop_status_cron="/var/packages/$SYNOPKG_PKGNAME/start_stop_status_cron"
cron_path="/etc/crontab"

if [ -n "$SYNOPKG_DSM_LANGUAGE" -a "$SYNOPKG_DSM_LANGUAGE" == "def" ]
then
	string_path=$(cat "/usr/syno/synoman/webman/3rdparty/$SYNOPKG_PKGNAME/texts/enu/strings")
else
	string_path=$(cat "/usr/syno/synoman/webman/3rdparty/$SYNOPKG_PKGNAME/texts/$SYNOPKG_DSM_LANGUAGE/strings")
fi

cron_start() {
	if [ -f "$start_stop_status_cron" ]
	then
		IFS=$'\n'
		for cron in $(cat "$start_stop_status_cron" | sed 's:	::g' | sed 's:\*::g')
		do
			number=$(cat "$start_stop_status_cron" | sed 's:	::g' | sed 's:\*::g' | egrep -n "$cron" | egrep -o "([0-9]{1,100}):" | egrep -o "([0-9]{1,100})")
			echo $(head -n"$number" "$start_stop_status_cron" | tail -n1) >> "$cron_path"
			sed -i "$number,1d" "$start_stop_status_cron"
		done
		unset IFS
		
		if [ $(cat "$start_stop_status_cron" | wc -c) -lt "2" ]
		then
			rm "$start_stop_status_cron"
			result_001=$?
			if [ "$result_001" -eq "0" ]
			then
				DONE="0"
			else
				ERROR="1"
			fi
		fi
	fi
}

cron_stop() {
	IFS=$'\n'
	for cron in $(cat "$cron_path" | sed 's:	::g' | sed 's:\*::g')
	do
		if [ $(echo "$cron" | egrep "DS_BackUp|DS_Delete|EX_BackUp|EX_Delete") ]
		then
			number=$(cat "$cron_path" | sed 's:	::g' | sed 's:\*::g' | egrep -n "$cron" | egrep -o "([0-9]{1,100}):" | egrep -o "([0-9]{1,100})")
			echo $(head -n"$number" "$cron_path" | tail -n1) >> "$start_stop_status_cron"
			sed -i "$number,1d" "$cron_path"
		fi
	done
	unset IFS
}

case $1 in
	start)
		if [ -n "$SYNOPKG_PKG_STATUS" ]
		then
			exit 0
		else
			echo "$(date "+%A %d %B %Y - %Hh:%Mmin:%Ssec") -- Start-Stop-Status [$SYNOPKG_PKG_STATUS]" >> "$LOG"
			echo "________________________________________________________" >> "$LOG"
			if [ -n "$start_stop_status" -a $(cat "$start_stop_status") -eq "3" ]
			then
				cron_start
			else
				echo "0" > "$start_stop_status"
				result_103=$(cat "$start_stop_status")
				if [ "$result_103" -eq "0" ]
				then
					echo "$(date "+%A %d %B %Y - %Hh:%Mmin:%Ssec") -- $(echo "$string_path" | grep "start_done_reboot = \"" | sed 's:start_done_reboot = \"::g' | sed 's:\"::g')" >> "$LOG"
					echo "________________________________________________________" >> "$LOG"
					exit 0
				else
					echo "$(date "+%A %d %B %Y - %Hh:%Mmin:%Ssec") -- $(echo "$string_path" | grep "start_error_reboot = \"" | sed 's:start_error_reboot = \"::g' | sed 's:\"::g')" >> "$LOG"
					echo "________________________________________________________" >> "$LOG"
					exit 1
				fi
			fi
		fi
		;;
	stop)
		if [ -n "$SYNOPKG_PKG_STATUS" ]
		then
			exit 3
		fi
		;;
	status)
		if [ -n "$start_stop_status" -a $(cat "$start_stop_status") -eq "3" ]
		then
			exit 3
		elif [ -n "$start_stop_status" -a $(cat "$start_stop_status") -eq "0" ]
		then
			exit 0
		else
			exit 4
		fi
		;;
	log)
		echo "$(date "+%A %d %B %Y - %Hh:%Mmin:%Ssec") -- $(echo "$string_path" | grep "start_stop_status_log = \"" | sed 's:start_stop_status_log = \"::g' | sed 's:\"::g')" >> "$LOG"
		echo "________________________________________________________" >> "$LOG"
		echo "$LOG"
		;;
esac

so sieht sie zur zeit aus...
würde mich über Tips und hilfe wie immer Freun :D:D
 

QTip

Super-Moderator
Teammitglied
Mitglied seit
04. Sep 2008
Beiträge
2.341
Punkte für Reaktionen
14
Punkte
84
Das heißt für den SynoToken würde meine index.php so aussehen:
Du hast viel zu viel Code von meinem Script drin, wird nicht benötigt, das macht mein Script schon.
In der ersten aufgerufenen Datei, meist die index.php, bindest du das Script ein, meldest dich an und prüfst die Berechtigung.
PHP:
// Berechtigung
require('page/check_appprivilege.php');
list($synotoken, $synouser, $is_admin) = check_privilege('SYNO.SDS.SynoDSApps.Application');
if ($synouser == '') {
    exit();
}

In allen anderen Scripten, die vom Haupscript aufgerufen werden, wird nur noch die Authentizität überprüft
PHP:
$synouser = shell_exec("/usr/syno/synoman/webman/modules/authenticate.cgi");
if ($synouser == '') {
    exit();
}
 

Kalysto

Benutzer
Mitglied seit
30. Dez 2014
Beiträge
384
Punkte für Reaktionen
10
Punkte
18
okay danke dir.
das mit der Berechtigung geht zum teil.
wenn ich mir nun keine Berechtigung gebe verschwindet die App im Hauptmenü aber über die URL könnte ich dies immer noch aufrufen ist das normal ?

wenn ich nun meine anderen Seiten aufrufe mit der:
PHP:
$synouser = shell_exec("/usr/syno/synoman/webman/modules/authenticate.cgi");
if ($synouser == '') {
    exit();
}

zeigen mir die Seiten nichts an also geht der Aufruf irgend wie nicht....
muss ich noch etwas beachten ??

wenn ich:
PHP:
$synouser = shell_exec("/usr/syno/synoman/webman/modules/authenticate.cgi");
echo $synouser;
abfrage bekomme ich
keine Ausgabe..... wieso ?

wenn ich das ganze normal über die Shell aufrufe bekomme ich meinen namen ausgegeben es liegt also irgend wie an php....
aber wo ....

ich weis ich nerve sorry...
 
Zuletzt bearbeitet:

QTip

Super-Moderator
Teammitglied
Mitglied seit
04. Sep 2008
Beiträge
2.341
Punkte für Reaktionen
14
Punkte
84
Wenn du die Seiten nur direkt per Browserurl aufrufst, musst du auf allen Seiten am Anfang die Anmeldung einbauen. Rufst du die Seiten von der Hauptseite aus auf, kommt es auf die Art des Aufrufs an.
Bei normalem Link benötigst du dann noch das SynoToken als Anhang.
nach dem Abschnitt mit der Anmeldung diese Zeile zusätzlich einfügen
PHP:
my $token = ($synotoken ? "?SynoToken=".$synotoken : "");
und dann an jede Url das SynoToken anhängen
PHP:
"deine-url....".$token;

wenn ich:
PHP:
$synouser = shell_exec("/usr/syno/synoman/webman/modules/authenticate.cgi");
echo $synouser;
abfrage bekomme ich
keine Ausgabe..... wieso ?
Wenn der User nicht berechtigt ist, ist der Inhalt der Variable $synouser leer, deswegen gibt es keine Ausgabe, nur leerer Bildschirm.
 

Kalysto

Benutzer
Mitglied seit
30. Dez 2014
Beiträge
384
Punkte für Reaktionen
10
Punkte
18
ich bekomme es nicht hin....
ich mache meinen Aufruf so:

index.php --> Zweit_Seite.php

der Link von Index.php sieht so aus:
Rich (BBCode):
/webman/3rdparty/SynoDSApps/page/Lysto%20BackUp/index.php?SynoToken=NpiNrIijMRkuU

und dennoch geht die Seite nicht auf und bleibt leer....
ich verstehs nicht....
 

QTip

Super-Moderator
Teammitglied
Mitglied seit
04. Sep 2008
Beiträge
2.341
Punkte für Reaktionen
14
Punkte
84
Ich sehe nicht wo du in dem Link die 2. Seite aufrufst, da steht nur
Rich (BBCode):
index.php?SynoToken=NpiNrIijMRkuU
 

Kalysto

Benutzer
Mitglied seit
30. Dez 2014
Beiträge
384
Punkte für Reaktionen
10
Punkte
18
oka da hätte ich dir mehr info geben sollen.

unter:
Rich (BBCode):
/webman/3rdparty/SynoDSApps/index.php
welches meine Homeseite ist darunter findet man dies:
PHP:
require('page/check_appprivilege.php');
	list($synotoken, $synouser, $is_admin) = check_privilege('SYNO.SDS.SynoDSApps.Application');
	$token = ($synotoken ? "?SynoToken=".$synotoken : "");
	if ($synouser == '') {
    	exit();
	}
HTML:
<li><a href="page/Lysto BackUp/index.php<?php echo $token; ?>">Lysto BackUp</a></li>

und so ist die Darstellung im Browser:
Rich (BBCode):
/webman/3rdparty/SynoDSApps/page/Lysto%20BackUp/index.php?SynoToken=NpiNrIijMRkuU
welche mir eig. richtig erscheint...

und unter:
Rich (BBCode):
/webman/3rdparty/SynoDSApps/page/Lysto BackUp/index.php
findet man dies:
PHP:
$synouser = shell_exec("/usr/syno/synoman/webman/modules/authenticate.cgi");
	if ($synouser == '') {
		echo fehler;
		echo $synouser;
    	exit($synouser);
	}

das heißt ich habe eine Index.php welche ich als erstes aufrufen tue für meine Hauptansicht und dann eine Index.php für eine jeweilige app.
 

Kalysto

Benutzer
Mitglied seit
30. Dez 2014
Beiträge
384
Punkte für Reaktionen
10
Punkte
18
Zum Erstellen der Hilfe vorm Erzeugen des SPK brauchst du das Toolkit (64bit DS oder 64bit Linux VM). Alle User, die dann dein SPK installieren, benötigen kein Toolkit.

gibt es eine Alternative zu dem Toolkit....
bekomme da nur ne Fehlermeldung....

fatal: unable to access 'https://github.com/SynologyOpenSource/pkgscripts-ng.git/': error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
 

Kalysto

Benutzer
Mitglied seit
30. Dez 2014
Beiträge
384
Punkte für Reaktionen
10
Punkte
18
SynoToken // Benutzerrechte

Hallo Zusammen,

Ich habe nun mein Problem entdeckt...
meine Datei sieht nun wie folgt aus:
Rich (BBCode):
/usr/syno/..../SynoDSApps/index.php
PHP:
require('page/check_appprivilege.php');
	list($synotoken, $synouser, $is_admin) = check_privilege('SYNO.SDS.SynoDSApps.Application');
	$token = ($synotoken ? "?SynoToken=".$synotoken : "");
	if ($synouser == '') {
		exit();
	}
Neue Seiten Aufrufe:
HTML:
<li><a href="page/Lysto BackUp/index.php<?php echo $token; ?>">Lysto BackUp</a></li>

Unter:
Rich (BBCode):
/usr/syno/..../SynoDSApps/page/Lysto BackUp/index.php
sieht es wie folgt aus:
PHP:
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
		$clientIP = $_SERVER['HTTP_X_FORWARDED_FOR'];
	}
	elseif (isset($_SERVER['HTTP_X_REAL_IP'])){
		$clientIP = $_SERVER['HTTP_X_REAL_IP'];
	}
	else {
		$clientIP = $_SERVER['REMOTE_ADDR'];
	}
	putenv('HTTP_COOKIE='.$_SERVER['HTTP_COOKIE']);
	putenv('REMOTE_ADDR='.$clientIP);
	putenv('QUERY_STRING=SynoToken='.$_GET['SynoToken']);
	$token = ($synotoken ? "?SynoToken=".$synotoken : "");
	$synouser = shell_exec("/usr/syno/synoman/webman/modules/authenticate.cgi");
	if ($synouser == '') {
    	exit();
	}
Neue Seiten Aufrufe:
HTML:
<li><a href="create_backup.php<?php $token; ?>">Backup erstellen</a></
<li><a href="create_LB.php<?php $token; ?>">LB Backup erstellen</a></
<li><a href="restore.php<?php $token; ?>">Backup wiederherstellen</a></
<li><a href="overview.php<?php $token; ?>">Backup Übersicht</a></li>

usw.....

Was ich nun auch getest habe ist wenn man nicht im DSM angemeldet ist kann man sich nicht einloggen wie gewünscht was perfekt Funktionieren tut!
Aber wenn ich nun unter:
Rich (BBCode):
Systemsteuerung->Berechtigungen->SynoDSApp´s
gehe und hier alle Benutzer und Gruppen verweigere sodass keiner mehr zugriff hat kann ich mich dennoch einloggen bzw. die Seite aufrufen was ja so nicht gewünscht ist....

meine Config Datei sieht folgendermaßen aus:
Rich (BBCode):
{
	".url": {
		"SYNO.SDS.SynoDSApps.Application": {
			"type": "legacy",
			"allUsers": "true",
			"allowMultiInstance": "false",
			"title": "config:title",
			"desc": "config:desc",
			"icon": "images/syno_{0}.png",
			"appWindow": "SYNO.SDS.SynoDSApps.Application",
			"texts": "texts",
			"grantPrivilege": "local",
			"advanceGrantPrivilege": "true",
			"width": 700,
			"height": 700,
			"url": "/webman/3rdparty/SynoDSApps/index.php"
		}
	}
}


Muss ich hier noch etwas beachten für die rechteverwaltung ??
 

QTip

Super-Moderator
Teammitglied
Mitglied seit
04. Sep 2008
Beiträge
2.341
Punkte für Reaktionen
14
Punkte
84
Ich vermute mal, du hast entweder den admin oder einen User, welcher derAdministratoren Gruppe angehört, verwendet. Der admin und alle in der Administratoren Gruppe haben immer Zugriff, egal was du einstellst. Versuche es mit einem "normalen" User, dann sollte es funktionieren wie gewünscht.
Ich habe aber beim Testen noch eine Eigenart in Bezug auf weitere Admins festgestellt, die ich demnächst beheben werde. Als ich damals das Script geschrieben habe, gab es nur den "admin", man konnte keine weiteren Admins erstellen.
Vorerst haben Admins immer Zugang.
 

Kalysto

Benutzer
Mitglied seit
30. Dez 2014
Beiträge
384
Punkte für Reaktionen
10
Punkte
18
Hay,
Du hast recht!
Es liegt an dem Admin habe es nun mit einem "normalen" User getestet und da ging es wunderbar ;)
 

Kalysto

Benutzer
Mitglied seit
30. Dez 2014
Beiträge
384
Punkte für Reaktionen
10
Punkte
18
Toolkit

Hallo Zusammen,

Ich habe mich nun nochmal genauer mit dem Toolkit befasst....
auf der Seite:
https://www.synology-wiki.de/index.php/Integration_einer_Hilfe_in_DSM_5.1-#Benutzung_in_Installationspaketen_.28SPK.29
wird beschrieben das das Toolkit:
Rich (BBCode):
Wichtig: Das Toolkit kann nur in einer 64-Bit Umgebung benutzt werden!!!
nun habe ich auf der Seite:
https://www.synology-wiki.de/index.php/Welchen_Prozessortyp_besitzt_mein_System%3F
meine DS214Play gesucht und gefunden und wird als:
Rich (BBCode):
x86-32	Intel Atom	CE5335 (2C/4T)	DS214play
Dargestellt das heißt doch das ich nun nur 32Bit habe korrekt ??

Was habe ich denn nun aber für eine Möglichkeit die DSM-Hilfe zu generieren....
gibt es da eine alternative oder habe ihr einen Trick wie ich das anstellen könnte ??

Ich danke euch :D
 

QTip

Super-Moderator
Teammitglied
Mitglied seit
04. Sep 2008
Beiträge
2.341
Punkte für Reaktionen
14
Punkte
84
Du kannst versuchen es auf deiner DS214play zu installieren. Ich bin aber der Meinung, daß ich das selbst schon probiert hatte und eine Fehlermeldung bezügl. 64bit bekam. Ansonsten kannst du das Toolkit auch auf einem virtuellen Linux 64bit , z.B. per Oracle VM VirtualBox, installieren...Distribution dürfte egal sein.
 

Kalysto

Benutzer
Mitglied seit
30. Dez 2014
Beiträge
384
Punkte für Reaktionen
10
Punkte
18
Versucht hatte ich es bereits kommt diese Meldung:
Rich (BBCode):
/volume1/02_public/3rd_Party_Apps/toolkit/pkgscripts-master> ./EnvDeploy -v 5.2 -p evansport

Desired platform: evansport
Desired version: 5.2 (5.2)
Destination folder: /volume1/02_public/3rd_Party_Apps/toolkit/build_env
Clean if target exists: No

Continue if above settings are OK.
Continue? (y/n)[n]: y
Continue ...


--2018-05-20 23:42:28--  http://sourceforge.net/projects/dsgpl/files/toolkit/evansport//ds.evansport-5.2.env.tgz
Resolving sourceforge.net... 216.105.38.13
Connecting to sourceforge.net|216.105.38.13|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://sourceforge.net/projects/dsgpl/files/toolkit/evansport//ds.evansport-5.2.env.tgz [following]
https://sourceforge.net/projects/dsgpl/files/toolkit/evansport//ds.evansport-5.2.env.tgz: HTTPS support not compiled in.
--2018-05-20 23:42:28--  http://sourceforge.net/projects/dsgpl/files/toolkit/notification.txt
Resolving sourceforge.net... 216.105.38.13
Connecting to sourceforge.net|216.105.38.13|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://sourceforge.net/projects/dsgpl/files/toolkit/notification.txt [following]
https://sourceforge.net/projects/dsgpl/files/toolkit/notification.txt: HTTPS support not compiled in.
Error: Fail to download ds.evansport-5.2.env.tgz!!

er meckert eig. wegen dem HTTPS und nicht der 64-bit wegen.....

muss ich Oracle VM VirtualBox auf meiner DS Installieren oder auf einem Anderen Rechner habe einen MacBook Pro.. und von dort aus das Toolkits installieren ?
Aber rein theoretisch muss ich das auch der DS Installieren da es mir aufm Mac nichts nützen würde oder ?

Brauche ich das Toolkit denn eig. Unbedingt oder kann ich die Hilfe Seiten auch ohne das Toolkit erstellen oder generiert mir das irgend welche Dateien welche ich für das SPK benötige ?
 
Zuletzt bearbeitet:

Kalysto

Benutzer
Mitglied seit
30. Dez 2014
Beiträge
384
Punkte für Reaktionen
10
Punkte
18
Bash --> Sprache DSM abfragen

Hallo zusammen,

Ich wollte fragen ob es möglich ist über Bash die DSM Sprache abzufragen ??
Die Dateien welche ich gefunden habe ist zwar eine Language erhalten ist aber als def ?? angegeben womit ich nicht sonderlich viel anfangen kann :(

vllt. hat ja einer von euch ne Idee :)
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.160
Punkte für Reaktionen
407
Punkte
393
Hallo,
/etc/synoinfo.conf dort der Parameter language.

Gruß Götz
 

Kalysto

Benutzer
Mitglied seit
30. Dez 2014
Beiträge
384
Punkte für Reaktionen
10
Punkte
18
ja da war ich auf aber da steht:
Rich (BBCode):
language="def"

und selbst wenn ich im DSM die Sprache ändere ändert sich dort nichts.... :(
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.160
Punkte für Reaktionen
407
Punkte
393
Hallo,
dann bist Du wohl bei /etc.defaults/synoinfo.conf, bei mir ändert sich der Parameter unter /etc/synoinfo.conf.

Gruß Götz
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat