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

Handle 404 method $request argument if OIDplus has a weburi base path #50

Open
wehowski opened this issue May 13, 2024 · 4 comments
Open

Comments

@wehowski
Copy link
Collaborator

Hallo Daniel,
...Neuigkeiten sind in Arbeit, noch etwas Geduld...

Wenn OIDplus nicht im Webroot liegt sondern in einem Unterverzeichnis ( so wie z.B. https://weid.info/plus/ ), dann stimmt das $request Argument an die handle404 Methode nicht so ganz!

Hier mal ein Workaround um den Pfad zu korrigieren:

   public function handle404(string $request): bool {
	 	//die($request);
	    $CDN_BASEPATH =	OIDplus::baseConfig()->getValue('FRDLWEB_CDN_RELATIVE_URI', self::DEFAULT_CDN_BASEPATH );
	    $BASE_URI = rtrim(OIDplus::webpath(OIDplus::localpath(),OIDplus::PATH_ABSOLUTE_CANONICAL), '/ ').'/'.trim($CDN_BASEPATH, '/ ').'/';
	   $rel_url_original =substr($_SERVER['REQUEST_URI'], strlen(OIDplus::webpath(null, OIDplus::PATH_RELATIVE_TO_ROOT)));
	   
	   /*
	    if(!str_starts_with($request, $CDN_BASEPATH)){
			print_r([$request, $CDN_BASEPATH, $rel_url_original]);
			die();
			return false;
		}
		*/
        $request = $rel_url_original;
@danielmarschall
Copy link
Owner

Hallo Till, kannst du mir mal ein Beispiel geben bei dem es (was?) nicht funktioniert? Mein OIDplus funktioniert doch
https://hosted.oidplus.com/viathinksoft/

@wehowski
Copy link
Collaborator Author

Hallo Daniel,
es geht darum das die custom REST routes nicht funktionieren im handle404 handler, es sei denn ich bearbeite den Request wie siehe oben.

Es ist auch super wichtig das z.b. https://hosted.oidplus.com/viathinksoft/oid/2.999 oder https://hosted.oidplus.com/viathinksoft/custom-rdap-path/2.999 funktioniert, da rdap per query-parameter von der Spezifikation nicht erlaubt ist (es sei den für lokale/spezielle look-ups im OIDplus).

....

Viele Grüße
Till

@danielmarschall
Copy link
Owner

Hallo Till,

ja, https://hosted.oidplus.com/viathinksoft/oid/2.999 wäre schön, aber hier haben wir ein großes Problem, nämlich bräuchten wir hier Rewrite Regeln o.ä. und das ist bei jedem Servertyp anders. Bei Apache weiß ich wie man das macht mit .htaccess (aber: nicht jeder Server hat mod_rewrite installiert), aber wie man es bei nginx und Microsoft IIS funktioniert, weiß ich nicht. Daher ist es leider gar nicht trivial das zu realisieren. Es ist wichtig, dass OIDplus auf Windows, Linux und Mac läuft, mit zumindest den Servern Apache, IIS und nginx.

Bzgl. deinem Codesnippet von oben, du meinst also ich sollte FRDLWEB_CDN_RELATIVE_URI in den Kern einbauen? Gibt es da nicht eine alternative Möglichkeit? Ich möchte eigentlich Drittanbieter-Sachen möglichst nicht in den Kern (includes/classes/) einbauen. Wir müssten dem Ding zumindest einen anderen Namen geben, sodass die Funktion allgemeingültig und für andere Drittanbieter auch verwendet werden kann.

Außerdem, ich bräuchte noch die Info welchen Code du genau meinst, denn ich steh ziemlich auf dem Schlauch. Die Funktion handle404 gibt es laut GitHub fünf Mal im Code https://github.com/search?q=repo%3Adanielmarschall%2Foidplus%20handle404&type=code

Viele Grüße
Daniel

@wehowski
Copy link
Collaborator Author

Hallo Daniel,
meinst also ich sollte FRDLWEB_CDN_RELATIVE_URI in den Kern einbauen?
NEIN, das ist der falsche approach.

Viele Spezifikationen z.B. auch RDAP verlangen ein bestimmtes Muster an "sauberen" REST-Routes! Alternative Request-Handler können zusätzlich existieren bzw. je nach Aufgabe.

...

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