Bezeichner wird nicht überprüft

  • Hallo,


    Dieses Fehler ist etwas schwierig zu erklären und es ist eigentlich kein Fehler vom WCF, aber es könnte eine Überprüfung geben.


    Es geht darum, ich habe gerade eine eigene Quelle für Plugins programmiert ( worüber meine eigenen Plugins laufen ) und hatte im Bezeichner einen Schreibfehler.


    Gehen wir davon aus, dass wir folgende tar.gz ausliefern:
    test.tar.gz
    Darin befindet sich eine gültige file.tar und eine gültige Package.xml mit der Verlinkungen zur file.tar und dem Bezeichner:
    de.test.wcf.plugin


    Der eigene Packetserver liefert diese Datei jedoch durch einen Fehler mit einem anderem Bezeichner aus:
    de.test.plugin


    Das erste installieren ist nicht dramatisch und läuft durch. Alles installiert. Wenn man jetzt jedoch "vergessen" hat, dass dieses Plugin installiert ist und sucht nach dem Plugin, bekommt man dieses angezeigt, weil der Bezeichner ja nicht installiert ist.
    Klickt man nun auf das Plugin "Installieren" fängt das WCF an und bricht dann mit der "logischen" Meldung "Datei kann nicht ersetzt werden da die Datei zum Plugin de.test.plugin gehört" ab.
    Jetzt habe ich das Plugin 2x im Paketmanager. Das Deinstallieren, wird die Datei löschen und im schlimmsten Falle (da ja dann noch 1x installiert) einen Fehler werfen, da die Dateien fehlen.


    Mein Vorschlag:
    Das WCF vertraut nicht allein auf den Paket-Server, sondern überprüft nach dem Download der tar.gz:
    1.) Ist der Bezeichner, der von dem Paket-Server genannt wurde, identisch mit dem im Paket?
    2.) ist das Plugin bereits installiert.


    Auch wenn der Fehler unwahrscheinlich ist, kann er auftreten und bei Benutzern die eben wirklich nur "Anwender" sind, das system durch Installieren von einer Fehlerhaft arbeitenden Quelle auf den Kopf stellen.


    Ich hoffe es war verständlich.


    Jetzt noch:
    Mehrmals getestet unter WCF 2.0.8


    Gruß Stephan

  • Der Fehler ist nicht schwierig zu beschreiben. Im Prinzip:

    • Du hast den Order/die Datei falsch benannt
    • Du hast den falschen Dateinamen kopiert
    • Der Paketserver liefert folglich falsche Angaben aus
    • Das WCF ist verwirrt



    2.) ist das Plugin bereits installiert.

    Das wird doch bereits geprüft - anhand der Daten vom Paketserver.


    1.) Ist der Bezeichner, der von dem Paket-Server genannt wurde, identisch mit dem im Paket?

    Wenn man das Paket noch extra zum Prüfen der Daten öffnen muss, kann man sich den Paketserver gleich sparen und ne Dateiliste bereitstellen. (Bei nach Updates suchen löst das dann bei 1000 Plugins mit x Paketen einen immensen Traffic aus.)
    Bei der Installation selbst lasst ich mir das eingehen, dass nochmal alles geprüft wird, wobei das auch nicht Sinn der Sache eines Paketservers ist.


    Auch wenn der Fehler unwahrscheinlich ist, kann er auftreten und bei Benutzern die eben wirklich nur "Anwender" sind, das system auf den Kopf stellen.

    Vielleicht ist es für Anwender sinnvoller, sich entsprechende Lösungen zu beschaffen als selbst im Code rumzudoktern.



    Abgesehen davon Dateinamen von Plugin-Paketen interessieren weder das WCF noch den Benutzer. Falls du das automatisiert übertragen lässt, solltest du dich auf die package.xml stützen statt den Dateinamen.


    Entschuldige das Zerhacken deines Beitrags. ;)
    Im Prinzip habe ich nichts gegen eine Gegenprüfung der package.xml nach dem Download.


    (Ich habe das Problem nicht selbst überprüft.)

  • Bitte lese erneut einmal den Beitrag und verstehe diesen. Falls notwendig Probier es aus.
    In meinen Augen, zumindest von dem was du schreibst, ist die Problematik nicht angekommen.


    Wenn ein Entwickler einen Fehler macht und ein Anwender dies installieren will hat der Anwender das Problem am Hals. Dazu braucht er nicht in den Dateien rum fummeln wie du es sagst sondern nur installieren. Zudem wird das Paket beim installieren sowieso entpackt also kann das ganz Problemlos überprüft werden.
    Zudem ist nicht falsch benannt, sondern wie erwähnt der Paketserver gibt einen anderen Bezeichner an, als tatsächlich im Paket.


    Weiterhin weiß ich dass dem WCF Dateinamen egal sind. Du hast nicht verstanden dass es um den Fehlerhaften Bezeichner im Paketserver geht!


    Und beim installieren sind dann Dateinamen wieder interessant denn das WCF überschreibt keine Dateien die einem anderem Plugin angehören.


    Gruß Stephan

  • Ich hatte den Satz mit dem Anwender falsch (flüchtig) gelesen. :/
    Ich hatte es so verstanden, dass ein Anwender den Paketserver betreibt. Der Anwender, der installiert, fummelt natürlich nirgends rum, das ist klar.


    Was mit gerade einfällt...
    Bei der Installation müssen die Routinen eh ausgelesen werden, da hat man eh schon einen Zugriff auf die Datei und alles geparsed.



    sondern wie erwähnt der Paketserver gibt einen anderen Bezeichner an, als tatsächlich im Paket.

    Das meinte ich ja. Dementsprechend muss der Bezeichner im Paketserver falsch sein. Und ich hatte einfach angenommen, dass du den aus dem Dateinamen kopiert hattest (so habe ich das damals immer gemacht).


    Die Problematik mit dem Bezeichner ist mir durchaus klar.

  • Nein das kopieren habe ich natürlich nicht gemacht. Ich hatte in meiner Programmierung einfach einen Fehler mit variabel Verknüpfung, was nicht tragisch ist. Das ist aber auch nicht das Problem worum es hier primär geht.


    Dabei ist mir nur aufgefallen dass durch das alleinige Installieren eines Plugins über eine Fehlerhafte Quelle das System im schlimmsten Falle Fehler produzieren können.


    Gruß Stephan


    Edit: Natürlich muss beim Suchen von Updates nicht jedes Paket überprüft werden. Aber wenn ich auf Installieren klicke bei einem Plugin könnte die Meldung kommen:
    Der Bezeichner ist nicht identisch mit dem genannten vom Paketserver

    • Official Post

    Der Paketserver ist dafür zuständig korrekte und vollständige Angaben zu den angebotenen Paketen zu machen, dies liegt auch daran das die Installation via Paket-Server vollkommen anders abläuft.

  • Naja wenn ich mir irgend ein Spiel kaufe wird vor dem Installieren auch geguckt ob die Vorrausetzungen gegeben sind. Da wird nicht nur darauf vertraut, was auf der Verpackung steht.


    Und hier ist es quasi so. Das WCF des Kunden prüft die Verpackung und installiert ohne zu gucken was wirklich installiert wird.



    Aber ok wenn es egal ist das sich der User das WCF dadurch zerschießt passt es ja ;)

  • Naja, man sollte als Betreiber eines Paketservers schon wissen was man tut ;)
    Das WCF vertraut halt auf die richtigkeit der Angaben des Paketservers.


    Just my 5 Cents...

  • Wenn auf alles Vertraut wird, brauchen wir nirgends Sicherheitsabfragen. Vertrauen ist gut Kontrolle ist besser.
    Und bevor ich als Anwender mein System verhaue, verhindert sowas besser das WCF und ist "schlauer" als ein Quellen-Betreiber.

  • Paketserver von Dritten sind per se unsicher. Du solltest nur Paketserver eintragen, denen du wirklich vertraust.


    Ein Paketserver kann jedes beliebige Paket ausliefern. Trägst du einen Paketserver eines Dritten ein, so ist es für diesen ein leichtes, dir manipulierte Pakete mit Remote-Shells und anderem Schadcode unterzujubeln, oder deine gesamte Benutzerdatenbank irgendwohin zu senden.


    Eine zusätzliche Kontrolle bringt dir da nullkommagarnix....

    "A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP" — Leonard Nimoy

  • Mir ist das alles bewusst. Und mir ist es auch relativ egal.
    Ich habe nur WoltLab und meinen eigenen in der Liste und das reicht auch.


    Es war halt nur als Info. Wenn es unwichtig ist, ist es so. Mich betrifft es ja nicht

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!