danielmarschall / oidplus

OIDplus 2.0 - An OpenSource online Registration Authority for OIDs and other Object Types
https://www.oidplus.com
Apache License 2.0
10 stars 6 forks source link

RDAP Route #49

Open wehowski opened 2 months ago

wehowski commented 2 months ago

Hallo Daniel, das plugin: https://github.com/frdl/oidplus-frdlweb-rdap/blob/main/OIDplusPagePublicRdap.class.php ...wird zur Zeit upgedated in bezug auf rdap-conformance/-extensions und OID-Connect.

https://hosted.oidplus.com/viathinksoft/oid/1.3.6.1.4.1.37476.30.9.1494410075 geht nicht vergl. geht: https://webfan.de/apps/registry/rdap/oid/1.3.6.1.4.1.37553.8.8.7

Wichtig: Es MUSS eine RDAP-Rest Url vefügbar sein: ...rdapbase../oid/2.999

danielmarschall commented 2 months ago

Hallo Till,

vielen Dank für deine Mühen, dass du dich so in das OID Thema vertiefst und Plugins entwickelst. Leider verstehe ich das ganze nicht bzw. es ist zu viel Input für mich im Moment.

Wenn von meiner Seite etwas korrigiert oder implementiert werden soll, bräuchte ich genauere Informationen was ich machen soll.

Bei deinem Beispiel verstehe ich nicht, woher soll meine Instanz wissen, dass 1494410075 der Hash Wert von "1.3.6.1.4.1.37553.8.8.7" ist? Ein Hash ist nur eine Einwegfunktion. 1.3.6.1.4.1.37553.8.8.7 befindet sich nicht in meiner Datenbank.

wehowski commented 2 months ago

Hallo Daniel, bin mittendrin, doku(s) folgt heute nacht oder morgen... (*)

Nur zu korrigieren: Das Beispiel bezieht sich nur auf den Pfad! Neuere Instanzen haben eine REST-RDAP-URI, bei den alten funktioniert das nur mit /...rdap.php?...queryParameter.... Dazu musst Du das Plugin https://github.com/frdl/oidplus-frdlweb-rdap auf eine neuere Version/die aktuelle Version updaten.

danielmarschall commented 2 months ago

Hallo Till,

ich bin beeindruckt wie viel Arbeit du in dieses Plugin gesteckt hast :-)

Ich verstehe zwar immer noch nicht so genau, was das Plugin macht, aber ich vertraue dir natürlich und werde es so in den Core einspielen, wenn es funktioniert.

Ich habe den aktuellen GIT stand eingespielt auf mein Testsystem: https://hosted.oidplus.com/viathinksoft_dev/

Erkannt/Geladen wird das Plugin: image

Aber ich seh' da nicht dass sich da irgendwas tut: https://hosted.oidplus.com/viathinksoft_dev/oid/2.999

~Muss da noch irgendwas mit .htaccess gemacht werden? (Das wäre schlecht, denn wir müssen auch mit Microsoft IIS und Nginx kompatibel bleiben)~ Edit: ich sehe du verwendest handle404(), so wie es vorgesehen ist. Das ist gut. Aber ich denke es gibt da wohl irgendein Problem weil mein OIDplus in einem Unterordner drin ist?


Noch eine Sache:

PHPStan schlägt Alarm wegen einiger Probleme mit dem Plugin. Bitte prüfe diese Punkte einmal.

 ------ -------------------------------------------------------------------------------
  Line   plugins/frdl/publicPages/oidplus-frdlweb-rdap/OIDplusPagePublicRdap.class.php
 ------ -------------------------------------------------------------------------------
  31     Class ViaThinkSoft\OIDplus\OIDplusOid referenced with incorrect case:
         ViaThinkSoft\OIDplus\OIDplusOID.
  148    Call to an undefined method
         ViaThinkSoft\OIDplus\OIDplusPlugin::getWebfat().
  149    Call to static method unflatten() on an unknown class
         Wehowski\Helpers\ArrayHelper.
         💡 Learn more at https://phpstan.org/user-guide/discovering-symbols
  209    Parameter #3 $limit of function preg_split expects int, null given.
  418    Access to an undefined property
         Frdlweb\OIDplus\OIDplusPagePublicRdap::$db_table_exists.
         💡 Learn more:
            https://phpstan.org/blog/solving-phpstan-access-to-undefined-property
  425    Access to an undefined property
         Frdlweb\OIDplus\OIDplusPagePublicRdap::$db_table_exists.
         💡 Learn more:
            https://phpstan.org/blog/solving-phpstan-access-to-undefined-property
  428    Access to an undefined property
         Frdlweb\OIDplus\OIDplusPagePublicRdap::$db_table_exists.
         💡 Learn more:
            https://phpstan.org/blog/solving-phpstan-access-to-undefined-property
  431    Access to an undefined property
         Frdlweb\OIDplus\OIDplusPagePublicRdap::$db_table_exists.
         💡 Learn more:
            https://phpstan.org/blog/solving-phpstan-access-to-undefined-property
  434    Access to an undefined property
         Frdlweb\OIDplus\OIDplusPagePublicRdap::$db_table_exists.
         💡 Learn more:
            https://phpstan.org/blog/solving-phpstan-access-to-undefined-property
  437    Access to an undefined property
         Frdlweb\OIDplus\OIDplusPagePublicRdap::$db_table_exists.
         💡 Learn more:
            https://phpstan.org/blog/solving-phpstan-access-to-undefined-property
  440    Access to an undefined property
         Frdlweb\OIDplus\OIDplusPagePublicRdap::$db_table_exists.
         💡 Learn more:
            https://phpstan.org/blog/solving-phpstan-access-to-undefined-property
  443    Access to an undefined property
         Frdlweb\OIDplus\OIDplusPagePublicRdap::$db_table_exists.
         💡 Learn more:
            https://phpstan.org/blog/solving-phpstan-access-to-undefined-property
  446    Access to an undefined property
         Frdlweb\OIDplus\OIDplusPagePublicRdap::$db_table_exists.
         💡 Learn more:
            https://phpstan.org/blog/solving-phpstan-access-to-undefined-property
  474    Undefined variable: $hint
  496    Parameter #2 $replace of function header expects bool, int given.
  524    Parameter #2 $replace of function header expects bool, int given.
  567    Variable $out_type might not be defined.
  568    Variable $out_content might not be defined.
  606    Method Frdlweb\OIDplus\OIDplusPagePublicRdap::restApiCall() should
         return array|false but return statement is missing.
~  631    Call to an undefined method
         ViaThinkSoft\OIDplus\OIDplusObject::isConfidental().~  ==> fixed https://github.com/frdl/oidplus-frdlweb-rdap/commit/4159211c34d00b5a0f8cd5496c89f5d68ad01690
~  651    Call to an undefined method
         ViaThinkSoft\OIDplus\OIDplusObject::isConfidental().~  ==> fixed https://github.com/frdl/oidplus-frdlweb-rdap/commit/4159211c34d00b5a0f8cd5496c89f5d68ad01690
 ------ -------------------------------------------------------------------------------
danielmarschall commented 2 months ago

Hallo Till,

kurzes Update, ich habe die neue Git version runtergeladen,

jetzt kommt Folgendes (und das System ist tot). Das dürfen wir natürlich nicht so in den Core einbauen, wenn das System dann Out of the Box tot ist :-)

You have to install the dependencies of the plugin package https://github.com/frdl/oidplus-frdlweb-rdap via composer OR you need the plugin https://github.com/frdl/oidplus-io4-bridge-plugin to be installed in OIDplus and its remote-autoloader enabled. Read about how to use composer with OIDplus at: https://weid.info/plus/ .
Technical information about the problem:

ViaThinkSoft\OIDplus\OIDplusException
at file .../plugins/frdl/publicPages/oidplus-frdlweb-rdap/OIDplusPagePublicRdap.class.php (line 518)

Stacktrace:
#0 .../includes/classes/OIDplus.class.php(1351): Frdlweb\OIDplus\OIDplusPagePublicRdap->init()
#1 .../index.php(31): ViaThinkSoft\OIDplus\OIDplus::init()
#2 {main}

Seitens PHPstan:

 ------ -------------------------------------------------------------------------------------------
  Line   plugins/frdl/publicPages/oidplus-frdlweb-rdap/OIDplusPagePublicRdap.class.php
 ------ -------------------------------------------------------------------------------------------
  69     Instantiated class Symfony\Component\Cache\Adapter\FilesystemAdapter not found.
         💡 Learn more at https://phpstan.org/user-guide/discovering-symbols
  667    Instantiated class Webfan\RDAP\Rdap not found.
         💡 Learn more at https://phpstan.org/user-guide/discovering-symbols
  668    Call to method addService() on an unknown class Webfan\RDAP\Rdap.
         💡 Learn more at https://phpstan.org/user-guide/discovering-symbols
  670    Undefined variable: $protocol
  688    Instantiated class Webfan\RDAP\Rdap not found.
         💡 Learn more at https://phpstan.org/user-guide/discovering-symbols
  689    Call to method addService() on an unknown class Webfan\RDAP\Rdap.
         💡 Learn more at https://phpstan.org/user-guide/discovering-symbols
  691    Undefined variable: $protocol
  790    Variable $out_type might not be defined.
  791    Variable $out_content might not be defined.
  869    Method Frdlweb\OIDplus\OIDplusPagePublicRdap::restApiCall() should return array|false but
         return statement is missing.
 ------ -------------------------------------------------------------------------------------------
danielmarschall commented 2 months ago

... und ja, ich weiß dass du noch mitten in der Entwicklung bist. Ich versuche dir mit den PHPStan Ausgaben schonmal vorab zu helfen so gut ich kann :-)

Ganz wichtig am Ende ist nur: Das System muss "out of the box" laufen, auf allen gängigen Plattformen. Es muss alles im Core drin sein, ohne dass man Composer nutzen muss. (Man kann natürlich composer nutzen, aber eben optional.) Es ist einfach wichtig, dass man die ZIP entpackt, per FTP hochlädt, und OIDplus soll sofort funktionieren, das ist mein Idealbild von OOBE. (OOBE = Out of Box Experience)

wehowski commented 2 months ago

Hallo Daniel, vielen Dank für Deine Meldungen und Hilfe!!!

Meldungen wie ".... on an unknown class...." und PHPStan zu beheben macht in "meiner" Entwiclungs- und Remtote-Code Version keinen Sinn, die Klassen MÜSSEN in diesem flow dynamisch/lazy geladen werden, alle meine Klassen und Methoden sind AUF KEINEN FALL in jeder Laufzeit statisch deklariert verfügbar.

"(Man kann natürlich composer nutzen, aber eben optional.)" KEINE PHP-Entwicklung ohne Composer!!!

-> Composer ist eben dafür gedacht die Abhängigkeiten in das Projekt zu packen...!

Wie schon die erste Meldung besagt: Nach composer installation der Plugins, und nach Packaging der Produktiv-Version sollten die nötigen Abhängigkeiten im Projekt vorhanden sein und dann "auch ohne composer" verfügbar.

Dokumentation folgt wie angekündigt in Kürze, Neu:

OID Hosting

WEIDplus

U.a. remote-source apis, remote-container, remote-installer und mehr, ... letzendlich alles (brauchbare) und was das neue OID Hosting verwendet soll ja ggf. auch öffentlich oder auch als OIDplus Pugin verfügbar sein. https://github.com/WEID-Consortium/WEIDplus

OIDplus Core

Wenn Funktionen fertig, Fehler bereinigt, Tests abgeschlossen, Composer ausgeführt und/oder die Abhängigkeiten statisch hinzugefügt wurden und Du gegengeprüft hast, können Erweiterungen oder Plugins in den OIDplus stable core übernommen werden.


Die neuen Plugins sind unfertig und die neuesten Versionen sind noch nicht auf github.

Ich stelle noch zunächst einige Funktionen fertig bevor ich nach und nach hochlade. Ich gebe Dir bescheid, und denke das Du wahrscheinlich eher morgen stabiles testen kannst....

Viele Grüße

wehowski commented 2 months ago

Hallo Daniel, ich erläutere mal meine nächsten "Pläne" in Bezug auf Protokoll und OIDplus. Siehe oben, damit es das ganze später auch in Deinem offiziellen OIDplus core geben kann:

Vielleicht fällt Dir auch ein besseres Format ein!?

DNS Nameserver: Habe NS für connect.oid.zone auf dns.webfan.de gestellt, der eigene Nameserver und alles funktioniert wie ich mir gedacht habe, habe den Prozess aber noch nicht immer online geschaltet (kommt später) weshalb nicht immer verfügbar, temporär zurückgeschaltet, da wird noch getestet...

Das Bootstrap file, siehe Artikel oben: https://oid.zone/rdap/data/oid.json Impl: https://github.com/frdl/oid-connect-rdap/blob/ec70bce522f7dbab90d3ec291b64f1f1789eed9a/src/Webfan/RDAP/Rdap.php#L54 wird intervallmäßig gelesen und gespeichert von: https://oid.root.sx/rest/v1/bootstrap/root/oid.json ( oid.root.sx ist free-firlefanz als ausweichung für connect.oid.zone die "offiziell" aber noch nicht produktiv online) https://oid.root.sx/rest/v1/bootstrap/root/oid.json ist ein OIDplus und tut folgendes: https://github.com/frdl/oidplus-frdlweb-rdap/blob/main/OIDplusPagePublicRdap.class.php#L856 Lies Dir bitte die entsprechenden Methoden durch, Vroschlag für OIDplus:
$out = \call_user_funcarray([$plugin, 'rdapBootstrap'.$namespace.'services'], [$out]); Du könntest für "cronjobJobbyPrepareTasks" und "rdapBootstrap" ein offizielles OIDplus interface einführen?

Als Bonus die Beispielimplementation für OIDplus: https://github.com/frdl/oidplus-frdlweb-rdap/blob/main/OIDplusPagePublicRdap.class.php#L828 public function rdapBootstrap_oid_services(array $out) : array Die Methode fügt unseren zweiten "akkreditierten Eintrittspunkt" hinzu, die OIDplus Instanzen Object Info OIDs: https://oid.zone/rdap/data/oid.json

...

\Webfan\RDAP\Rdap ist zweimal in OIDplusPagePublicRdap implementiert, als Hinweis: Es gibt ein lokales Boostrap und ein lokales, bzw. ein loakes authoritatives. Und es gibt sub-delelgationen, dafür auch ein "unakreditiertes" Beispiel: https://oid.zone/join-weid/rdap-sub-delegation-by-frdlwebinidot-extension

...

Viele Grüße Till P.S: Wegen der Namensverwechselung die Du schon angesprochen hast nenne ich "OID-Connect" jetzt " OID Hosting Protocol Specification", was meinst Du? Ich würde die Sache gerne von allem implemenationsspezifischem und wehowskimäßigem bereinigen und so auf Kommunismus dem Konsortium anhängen!?!

danielmarschall commented 2 months ago

Hallo Till,

zu dem Namen: Wenn OID-Connect sowas ähnliches sein soll wie https://www.domainconnect.org/ dann wäre OID-Connect eigentlich der beste Name. Andernfalls ist OID HPS eine gute Idee. Oder ist OIDR (OID Router) auch passend?

Soll ich zu viathinksoft.de einen TXT Record hinterlegen? Welchen möchtest du da haben?

Wie gesagt, sobald du Codes hast, mache ich gerne ein Update und lasse dich dann wissen, ob es auf dem ViaThinkSoft-Server zu problemen kommt, und ob PHPStan meckert.

Du fragtest noch, ob es neben DNS und IANA-PEN noch weitere Möglichkeiten gäbe.

Wir dürfen aber bei dieser ganzen Thematik nicht vergessen, dass das System nach Möglichkeit autark funktionieren soll, und nicht von ViaThinkSoft oder webfan abhängig ist. Man weis nicht, was in der Zukunft passiert, aber es kann ja sein, dass es ViaThinkSoft und webfan in ein paar Jahren nicht mehr gibt, und dann wäre es blöd, wenn das Protokoll dann stirbt. Es wäre also wichtig, dass ViaThinkSoft/webfan nicht das "Root" ist.

wehowski commented 2 months ago

Hallo Daniel, domainconnect.org ist in meiner "berüchtigten Anwendungsschicht" absolut auch zur Verwendung vorgesehen, OID Hosting mit dem RDAP ist auf Protokoll level aber absolut was anderes, ich möchte beides absolut in Verwendung sehen aber absolut auf keinen Fall das beides verwechselt wird!!!

OID Hosting hat im Prinzip zwei Aspekte:

Domainconnect ist absolut interessant für das konkrete Managing des DNS Hosting (nicht aber wie RDAP bspw. für die Registry Info) bei kompatiblen Serviceanbietern, das alles zusammen sollte am Ende zusammen funktionieren möglichst anbieteragnostisch!

Bin grad nach Hause gekommen, lese mir Deinen Beitrag erstmal in Ruhe durch, nach dem ersten überfliegen aber stimme ich Dir zu.

wehowski commented 1 month ago

Hallo Daniel, bitte entschuldige die Verzögerung(en), mir ging es letzte Woche gesundheitlich ziemlich schlecht (Grippe, Margen Darm, undsonstso). Alles dauert bei mir länger als früher, was ich als nächstes in Bezug auf das neue Protokoll im Kopf habe steht eigentlich so gut wie und ist im Prinzip nur eine Frage von ein paar Arbeitsnachmittagen!!!

Allerdings gibt es dann daran noch viel zu dokumentieren, und dann vor allem zu benutzen, zu erweitern und die Begrifflichkeiten zu klären und Protokoll und Implementationen herzustellen!!!

zu dem Namen: Wenn OID-Connect sowas ähnliches sein soll wie https://www.domainconnect.org/ dann wäre OID-Connect eigentlich der beste Name. Andernfalls ist OID HPS eine gute Idee. Oder ist OIDR (OID Router) auch passend?

RDAP kann über die rdap EXTENSIONS infos liefern zu den Nameservern, SERVICES und AUTHORITIES und DELEGIERTEN RDAP Servern. Das OID Hosting bezieht sich weniger auf das konservative DNS Hosting (das ist auch vorgesehen als abgetrennter teilweise noch zu bearbeitender Aspekt), ... Daniel sieh es mal so: Dir "gehört" eine OID, die Du registriert hast, aber den SERVICE, (z.B. OIDplus, verknüpfte Dienste wie SIP, DNS, WWW, RDAP für weitere Dienste) könntest Du bei einem "OID Registrar" oder Registrar oder Service "hosten". Dieses "OID Hosting" ist im Prinzip ... vielleicht ist der Name noch Kacke, es ist ein Bündel von Protokollen und Erweiterungen!!?


Eine Vision von mir wäre, dass man kryptografisch sicher beweisen könnte, dass man eine OID besitzt, sozusagen eine digitale Besitzurkunde. Das wäre mit https://github.com/danielmarschall/oidplus/issues/20theoretisch möglich, würde aber unsere Möglichkeiten eventuell überschreiten. Wir bräuchten eine Art Trusted Chain, bei der RA "X" der RA "Y" kryptografisch sicher den Besitz der OID zusichert... Nun, das "Ownership" of an OID ist eigentlich schon spezifiziert, und entsprechend unterschiedlich automatisierbar spezifiziert, daran MÜSSEN und können wir uns einfach halten. On "Top-Level" erfordert es natürlich sowas wie manuelle Moderation Knoten wie PEN hinzuzufügen oder auch wie im Beispiel OIDplus Object IDs, on "the next level" könnte eigentlich jeder OID Registrar (ACHTUNG: SERVICE LEVEL AGREEMENT !!!) seine eigenen Zertifikate und sonstiges Definieren (insofern der Service unsere beanspruchten Protokolle bedient)!?!

Wenn wir das ganze genauer/CERT spezifizieren wollen, könnten wir das über RDAP Extensions machen? (Dafür habe ich eine OIDplus Methode vorgesehen, siehe oben)


Finally:

Es wäre also wichtig, dass ViaThinkSoft/webfan nicht das "Root" ist. Wichtig ist ja auch das das ganze nach ViaThinkSoft/webfan benutzt werden kann, ViaThinkSoft/webfan ist auch jetzt nicht "das Root", es gibt kein Root, aber einen RDAP Root Server mit OID Roots/RDAP Services Verknüpfungen.