Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RDAP Route #49

Open
wehowski opened this issue Apr 23, 2024 · 10 comments
Open

RDAP Route #49

wehowski opened this issue Apr 23, 2024 · 10 comments

Comments

@wehowski
Copy link
Collaborator

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
Copy link
Owner

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
Copy link
Collaborator Author

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
Copy link
Owner

danielmarschall commented Apr 23, 2024

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
Copy link
Owner

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
Copy link
Owner

danielmarschall commented Apr 24, 2024

... 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
Copy link
Collaborator Author

wehowski commented May 2, 2024

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

  • OID RDAP
  • Domain Connect, DNS re-added to the protocol, the DNS-Server/API will be added to OIDplus!

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
Copy link
Collaborator Author

wehowski commented May 3, 2024

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_func_array([$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
Copy link
Owner

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.

  • Am besten geeignet (und eigentlich dafür vorgesehen) wäre das OID Resolution System (ORS), aber wie ich bereits zuvor sagte, ist das total verkompliziert sodass kein Mensch das versteht, die Spezifikation ist kostenpflichtig, und außerdem scheint nur diese koreanische Firma das zu nutzen, und sonst niemand auf der Welt. Also würde ich sagen ORS über den Harz kicken und was eigenes machen (OID-Connect)
  • 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 DNS-SEC, X.509, HSM, usw. theoretisch 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...

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
Copy link
Collaborator Author

wehowski commented May 3, 2024

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:

  • RDAP
  • DNS

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
Copy link
Collaborator Author

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:

  • RDAP Aspekt wie gesagt ist alles so gut wie fast online in Kürze auch im OIDplus
  • DNS Aspekt würde ich auch gerne im OIDplus anbieten wenn finally, ich möchte diese Spielerei mit den Ports allerdings nicht auf dem Kundenserver machen, deshalb dauert es noch und wird erst der zweite Aspekt.

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants