SynoGet - Download via Kommandozeile hinzufügen

Status
Für weitere Antworten geschlossen.

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Irgendwer hat mir mal gesagt, dass ein PC nicht zum Arbeiten oder zum Spielen da ist, sondern ausschließlich dazu, sich mit seinen Fehlern und seinen Updates zu beschäftigen.

Manchmal habe ich den Eindruck, das war eine weise Aussage. :D

itari
 

proto

Benutzer
Mitglied seit
06. Okt 2008
Beiträge
38
Punkte für Reaktionen
0
Punkte
0
Hallo Bjoern,

also ich habe jetzt an 3 Systemen

NET Framework 2.0
NET Framework 2.0 Language Pack Deutsch
NET Framework 2.0 Service Pack 1

in dieser Reihenfolge installiert.

Folgendes passiert:

Wenn ich in die Config als User den admin und das Passwort eingebe
erfolgt der Eintrag in die DS und der Download startet.

Jedoch bekomme ich eine Fehlermeldung

Rich (BBCode):
Invalid length for a Base-64 char array.
at System.Convert.FromBase64String(String s)
at SynoGet.SynoGet.decodePassword(String codedPassword)


Wenn ich einen anderen User eingebe bekomme ich direkt die Fehlermeldung

Rich (BBCode):
Login NOT successful.


Soeben habe ich als User 12345 und Passwort 0123456789 eingegeben
--> DS reagiert und Download ok

Jedoch mit folgender Fehlermeldung:

Rich (BBCode):
Ungültige Länge für einen Base-64-Zeichenarray.
   bei System.Convert.FromBase64String(String s)
   bei SynoGet.SynoGet.decodePassword(String codedPassword)

Stimmt hier irgendwas mit dem Benutzername und PW nicht?

2. Versuch 6 Ziffern
Soeben habe ich als User 123456 und Passwort 0123456789 eingegeben
--> DS reagiert und Download ok

Jedoch mit folgender Fehlermeldung:

Rich (BBCode):
Ungültige Länge für einen Base-64-Zeichenarray.
   bei System.Convert.FromBase64String(String s)
   bei SynoGet.SynoGet.decodePassword(String codedPassword)

3. Versuch 7 Ziffern
Soeben habe ich als User 1234567 und Passwort 0123456789 eingegeben
--> DS reagiert und Download ok

Jedoch mit folgender Fehlermeldung:

Rich (BBCode):
Ungültige Länge für einen Base-64-Zeichenarray.
   bei System.Convert.FromBase64String(String s)
   bei SynoGet.SynoGet.decodePassword(String codedPassword)

3. Versuch 7 Buchstaben und Ziffern bei USER
Soeben habe ich als User xxxxx22 und Passwort 0123456789 eingegeben
--> DS reagiert und Download ok

Jedoch mit folgender Fehlermeldung:

Rich (BBCode):
Ungültige Länge für einen Base-64-Zeichenarray.
   bei System.Convert.FromBase64String(String s)
   bei SynoGet.SynoGet.decodePassword(String codedPassword)


4. Versuch 7 nur Buchstaben bei USER und PW
Soeben habe ich als User xxxxx22 und Passwort 0123456789 eingegeben
--> DS reagiert und Download ok

Jedoch mit folgender Fehlermeldung:

Rich (BBCode):
Ungültige Länge für einen Base-64-Zeichenarray.
   bei System.Convert.FromBase64String(String s)
   bei SynoGet.SynoGet.decodePassword(String codedPassword)

-------------------------------------------------------
Nach den vielen Versuchen habe ich etwas festgestellt.

Erstell mal ein Passwort mit 4 Buchstaben und 4 Zahlen zusammengesetzt
z.B. abcd1234 dann bekommst du folgendes

Rich (BBCode):
Login NOT successful.

Ich zu mindestens bekomme die Fehlermeldung.
Jetzt weis ich wieso mein Username und PW die ganze Zeit
nicht ging. Toll ;)


-------------------------------------------------------------------
-------------------------------------------------------------------
Also wenn ich ein anderes PW nehme dann geht es auch bei mir, trotz
dieser Fehlermeldung
Rich (BBCode):
Ungültige Länge für einen Base-64-Zeichenarray.
   bei System.Convert.FromBase64String(String s)
   bei SynoGet.SynoGet.decodePassword(String codedPassword)

@Bjoern

kann man gegen diese Fehlermeldung was machen?

Danke
 

BjoernWeber

Benutzer
Mitglied seit
28. Sep 2008
Beiträge
22
Punkte für Reaktionen
0
Punkte
0
@proto

Hi!

Also erstmal: Schön, dass SynoGet jetzt bei Dir läuft! :D
Dann lag Dein erstes Problem wohl tatsächlich an einem defekten .Net-Framework, was?! :rolleyes:

Also wie ich schon in meinem allerersten Post geschrieben habe, muss das Passwort Base64-'codiert' sein.
Nicht jede Zeichenfolge lässt sich per Base64 decodieren. Das trifft auch auf die meisten natürlichsprachlichen Worte zu. Du solltest also Dein Passwort durch einen Base64-Encoder jagen und dann in die config eintragen.

Base64 macht dann aus einem Passwort MeinGeheimesPasswort sowas wie TWVpbkdlaGVpbWVzUGFzc3dvcnQNCg==. Wenn Du das in die config einträgst, ist auch die Fehlermeldung weg.

Wenn sich das Passwort nicht per Base64 decodieren lässt, versucht SynoGet, das Passwort so zu übergeben wie es ist (deshalb funktioniert auch der Download bei Dir), da es sich aber nicht decodieren ließ, gibts die Fehlermeldung.

Die ganze Sache mit Base64 hab ich nur reingemacht, damit man nicht einfach so sein Passwort im Klartext in einer Datei ablegen muss, was ja immer ein Sicherheitsrisiko ist (mir ist natürlich auch klar, dass Base64 keine Verschlüsslung ist, aber es ist besser als nix).

Wenn Dir das egal ist, und Du Dein Passwort im Klartext übergeben willst und Du nicht die Fehlermeldung erhalten willst, musst Du den Schalter /passwordinplaintext benutzen.

Zum Base64-Codieren Deines Passworts kannst Du sowas benutzen: http://www.webutils.pl/index.php?idx=base64, es gibt aber auch haufenweise andere Seiten/Programme, die das machen, wenn man dieser Seite nicht vertrauen will... ;)

Also dann, viele Grüße
Björn

P.S. Wens interessiert, der kann hier http://de.wikipedia.org/wiki/Base64 nachlesen, wie Base64 funktioniert. :)
 
Zuletzt bearbeitet:

proto

Benutzer
Mitglied seit
06. Okt 2008
Beiträge
38
Punkte für Reaktionen
0
Punkte
0
Hallo Bjoern,

kommt bischen spät aber wollte mich nochmal für die
Unterstützung bedanken !!!

Gruß proto
 

krahni

Benutzer
Mitglied seit
02. Dez 2008
Beiträge
92
Punkte für Reaktionen
1
Punkte
8
ich hänge mich mal hier dran ...

ich arbeite auf osx 10.5 kann also dein programm nicht so ohne weiteres nutzen.
wo schreibt der downloadmanager denn seine queue hin?
ich habe jeden monat so um die 150 download links die ich allle auf einmal einstelle, das kann ich vielleicht ja direkt in die queue stellen?
textformatierung kein problem, das kriege ich hin mit editor-macros (bbedit, ultraedit ...)
 

BjoernWeber

Benutzer
Mitglied seit
28. Sep 2008
Beiträge
22
Punkte für Reaktionen
0
Punkte
0
Hallo Krahni!

Ich habe ja in Post#10 (http://www.synology-forum.de/showpost.html?p=20418&postcount=10) erklärt, wie SynoGet arbeitet. Nämlich komplett über http-requests.
Da kannst Du auch nachlesen, wie Du einen Download in die Queue einfügst. Eine Liste der aktuell in der Queue befindlichen Downloads erhälst Du nach dem Einloggen (...download_redirector.cgi?action=login&username=xxx&passwd=yyy) mit

Rich (BBCode):
https://192.168.2.20:5001/download/download_redirector.cgi?id=FDvR157dyx1NM&action=getall&username=xxx

wobei natürlich das hinter id=... die ID ist, die Du beim Einloggen zurückerhälst und das hinter http:// die IP-Adresse Deiner Box... Naja, steht ja eigentlich alles schon in dem anderen Post.

Ich denke, es sollte sehr leicht möglich sein, mit meinem Quellcode sowas auch in Java oder bash oder Perl oder ... zu schreiben. Dafür hab ich im Moment leider keine Zeit.

Wenn Du noch Hilfe brauchst, meld Dich aber ruhig nochmal. :)

Viele Grüße
Björn
 

oldolson

Benutzer
Mitglied seit
29. Dez 2008
Beiträge
30
Punkte für Reaktionen
0
Punkte
6
Hallo Bjoern!

Weisst du, ob es möglich ist, ähnliches auch für die Audiostation zu machen? Da ich in php und co oder wie auch immer überhaupt nicht versiert bin, in Smartphone-Software-Entwicklung aber umso mehr würde ich die Titel gerne über das Smartphone auswählen (WLAN) um sie im USB-Modus auf die Anlage zu schicken. Wie kommt man hinter die nötigen Links, wie du es bei dem Download-Manager gemacht hast? Wär da für jeden Hinweis dankbar!

Grüße,
Olli
 

BjoernWeber

Benutzer
Mitglied seit
28. Sep 2008
Beiträge
22
Punkte für Reaktionen
0
Punkte
0
Hallo oldolson!

Also ich hab mir die Kommunikation der Audiostation mal ganz kurz angeschaut und das sieht deutlich komplizierter aus, als bei der Downloadstation. Aber machbar ist das, was Du willst, sicherlich.

Die Audiostation benutzt das ganze Repertoire moderner Webapplikationen: HTTP-Posts und -Gets, Cookies, XMLHttpRequests und, was bei Deiner Umsetzung auch ein bisschen problematisch sein könnte, die Diskstation antwortet auf alle Anfragen gzip-encoded (außer wenn dann die Musik kommt, das ist dann audio/mpeg), d.h. Du musst nicht nur die Anfragen als XMLHttpRequest inkl. Cookies senden, Du musst dann auch die Antworten erst mit gzip dekomprimieren.
Aber wie gesagt, machbar ist das sicher alles, wenn man ein bisschen Zeit investiert.

Man kann sich die Kommunikation zwischen Browser (oder Downloadredirector oder anderen Tools) und der Diskstation mit einem Netzwerksniffer wie Wireshark oder dem Microsoft Network Monitor anschauen. Dabei sollte man natürlich die Audiostation nur über http, nicht über https aufrufen, sonst sieht man gar nix.
Man startet zunächst in dem Sniffer einen Aufzeichnungsvorgang, dieser protokolliert dann sämtlichen Netzwerkverkehr. Dann loggt man sich in die Audiostation ein, startet einen Titel, o.ä. und hält die Aufzeichnung im Sniffer an.
Danach schaut man sich die übertragenen HTTP-Requests und -Responds an und baut diese Kommunikation genauso nach.
Soweit die Theorie, ist halt im Falle der Audiostation schon ein bisschen Arbeit.

Bin gespannt auf Deine erste Beta-Version! :D

Viele Grüße
Björn
 

oldolson

Benutzer
Mitglied seit
29. Dez 2008
Beiträge
30
Punkte für Reaktionen
0
Punkte
6
Ok, ich werde dann in den nächsten paar Tagen ne Beta bereitstellen!
Grüße,
Olli
 

Flitzer

Benutzer
Mitglied seit
06. Dez 2007
Beiträge
48
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

kurze Frage,
funktioniert SynoGet mit folgender Firmware Version:
Servername DiskStation
Modellname DS-106
Arbeitsspeicher insgesamt 64 MB
Firmware-version DSM 2.0-0590


Bei mir liegt die download.cgi unter
/usr/syno/synoman/webman/modules/downloadman.cgi


Wenn ich den Pfad umstelle geht es auch nicht....

Kann es an der firmware liegen?
 

BjoernWeber

Benutzer
Mitglied seit
28. Sep 2008
Beiträge
22
Punkte für Reaktionen
0
Punkte
0
Hallo Flitzer!

Wenn ich mich mal kurz zitieren darf... ;-)

Ich denke, es wird nur mit der aktuellen Firmware (2.0-0722) funktionieren, denn es benutzt die JSONHttpRequests, die Synology (soweit ich weiß) erst mit dieser Version eingeführt hat.​

Also unter Firmware 722 wirds einfach nicht gehen, da Synology da direkt PostgreSQL Kommandos an die Box geschickt hat. Das wurde dann mit 722 geändert (auf JSONHttpRequests), d.h. mit Firmware < 722 wirst Du mit SynoGet leider keinen Erfolg haben.

Viele Grüße
Björn
 

BjoernWeber

Benutzer
Mitglied seit
28. Sep 2008
Beiträge
22
Punkte für Reaktionen
0
Punkte
0

ong10

Benutzer
Mitglied seit
20. Mai 2010
Beiträge
262
Punkte für Reaktionen
3
Punkte
18
wie NZB mit Synoget?

Hallo,

wie kann ich statt einer URL zu übergeben (was m.E. dem gleichen Event entspricht, als wenn ich die URL unten auf der DownloadCenter-Seite im Kasten poste und den "+" Knopf drücke) etwas über das Menü der DownloadCenter Webseite, nämlich über den Button "Erstellen" übergeben.

Konkret: Wie nutze ich SynoGet um z.B. ein NZB - das zudem auch noch direkt von Platte kommt (!) - ins DownloadCenter einzustellen?

Olaf
 

BjoernWeber

Benutzer
Mitglied seit
28. Sep 2008
Beiträge
22
Punkte für Reaktionen
0
Punkte
0
Hallo!

Konkret: Wie nutze ich SynoGet um z.B. ein NZB - das zudem auch noch direkt von Platte kommt (!) - ins DownloadCenter einzustellen?

Kurze Antwort: Gar nicht.

Dafür ist SynoGet nicht gemacht. Rein technisch ist das übrigens sicher nicht das selbe "Event": Beim Runterladen von Links per HTTP oder FTP muss ausschließlich eine URL an die Diskstation übertragen werden, bei dem was Du willst, muss erstmal ne Datei übertragen werden. Vielleicht erweitere ich SynoGet irgendwann mal um diese Funktion, aber im Moment hab ich keine Zeit dazu.
Aber wenn jemand anderer das machen will: Gerne! Der Quellcode liegt ja vor.

Viele Grüße
Björn
 

Alexx

Benutzer
Mitglied seit
04. Nov 2010
Beiträge
3
Punkte für Reaktionen
0
Punkte
0
Wie in download_redirector.cgi Zielverzeichnis festlegen?

Hallo Bjoern,

Deine Beispiele einen Download-Link direkt per http zu übergeben
habe ich ausprobiert, hat auch prima geklappt.
Der Download wird im Download-Manager angezeigt.

Dazu habe ich noch ein paar Fragen:
Der Download bricht nach der ungefähr der Hälfte ab, ich vermute
das Zielverzeichnis war nicht das richtige.

Wie kann ich das Zielverzeichnis per cgi-reqest angeben ?

Kann ich im Zielverzeichnis auch direkt einen anderen Dateinamen angeben,
unter dem der Download gespeichert werden soll ?

Hintergrund: Ich will ein PHP-Skript schreiben, dass die Aufnahmen bei bong.tv abholt und die Metadaten in eine Datenbank speichert.

Vielen Dank schon mal im voraus.

Alexander
 

BjoernWeber

Benutzer
Mitglied seit
28. Sep 2008
Beiträge
22
Punkte für Reaktionen
0
Punkte
0
Hi Alexx,

keine Ahnung, wie das geht. Diese Funktionen hab ich für SynoGet nie gebraucht und daher auch nie versucht, herauszufinden, wie das geht. Da musst Du wahrscheinlich selbst mal nen Packet-Sniffer anwerfen...

Viele Grüße
Björn
 

BjoernWeber

Benutzer
Mitglied seit
28. Sep 2008
Beiträge
22
Punkte für Reaktionen
0
Punkte
0
P.S. In den letzten vier Jahren wurde SynoGet mehrere tausend Mal runtergeladen, aber mir wurden genau 0,00 € gespendet. Also, wenn Du SynoGet benutzt, bitte spende was!
 
Zuletzt bearbeitet:

Thunder-man

Benutzer
Mitglied seit
09. Mai 2015
Beiträge
2
Punkte für Reaktionen
0
Punkte
0
Hey, interessantes Tool.

Per URL Protokoll kann man es auch mit einem Bookmarklet nutzen.
(SynoGet müsste aber dazu angepasst werden)

Findet man auf einer HP einen Download, kopiert man den Link
und startet das Bookmarklet, gibt den Link ein und fertig.

Dazu erstellt man eine Reg Datei:
--------------------------------------------------------------------------------
Rich (BBCode):
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\SynoGet]
@="URL:SynoGet Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\SynoGet\shell]

[HKEY_CLASSES_ROOT\SynoGet\shell\open]

[HKEY_CLASSES_ROOT\SynoGet\shell\open\command]
@="\"F:\\Data\\.Tools\\SynoGet\\SynoGet_starter.exe\" \"%1\""
------------------------------------------------------------------------------------


Bookmarklet:
---------------
Rich (BBCode):
javascript:(function(){Download%20=%20prompt('Pfad%20zur%20Datei%3A%20%28Download%29');var%20newURL=%22SynoGet:%22+Download;window.location.href=newURL})();


Hinweis:
SynoGet müsste aber angepasst werden, weil jetzt dem Downloadlink per URL Protokoll synoget: vorangestellt wird.
Der übergebene Link sieht dann z.B. so aus synoget:http://www.mein-download/Test.zip

Es müssen also die ersten 8 Zeichen entfernt werden ...

Oder mein schreibt sich selber ein kleines Tool, welches man anstelle der SynoGet.exe im URL Protokoll einträgt.
(SynoGet_starter.exe)

z.B. mit AutoIt:

Rich (BBCode):
;#RequireAdmin
#include <MsgBoxConstants.au3>

IF $CMDLINE[0]>1 OR $CMDLINE[0]=1 THEN
$CMD=$CMDLINE[1]
$CMD=STRINGTRIMLEFT($CMD,8) ;SynoGet und :   URL z.B. SynoGet:http://www.paperfile.net/123.zip
SLEEP(100)
;~ MsgBox($MB_SYSTEMMODAL, "Info", $CMD, 6)
$PID=RUN("F:\Data\.Tools\SynoGet\SynoGet.exe" & " " & '"'& $CMD &'"')
PROCESSWAITCLOSE($PID,20)
EXIT
ENDIF


Have Fun
Thunder-man
 
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