fix(licence): refus de la 2e couche indiscernable d'une route inconnue
Le 404 a corps vide etait remplace par la page HTML d'Indy, distincte du 404 JSON d'une route inexistante : on pouvait lister les routes reelles. La 2e couche renvoie maintenant exactement le meme JSON. Ajoute un exe d'essai qui saute l'ecran d'activation, pour eprouver la 2e couche depuis l'application. Define de compilation LICENCE_TEST_SKIP_SCREEN, jamais un reglage : un interrupteur dans config.txt ferait sauter la 1re couche sans rapiecage. Build dedie, .dcu a part ; verifie que seul l'exe d'essai porte le define. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -45,7 +45,7 @@ var
|
||||
implementation
|
||||
|
||||
uses
|
||||
PM.LicenceGate;
|
||||
PM.LicenceGate, PM.JSON;
|
||||
|
||||
constructor TPMRouter.Create;
|
||||
begin
|
||||
@@ -92,12 +92,15 @@ begin
|
||||
// DEUXIEME COUCHE DE LICENCE : ici, et seulement ici. Seules les routes
|
||||
// de l'API arrivent a cette ligne — les fichiers de l'ecran d'activation
|
||||
// passent par TryServeEmbedded, qui n'est pas garde, sinon l'ecran qui
|
||||
// permet de s'activer ne pourrait plus se charger. 404 et non 403, comme
|
||||
// le reste du verrouillage : ne pas dire ce qui manque.
|
||||
// permet de s'activer ne pourrait plus se charger.
|
||||
//
|
||||
// LE MEME 404 QU'UNE ROUTE INEXISTANTE, AU CARACTERE PRES. Un corps vide
|
||||
// ne suffisait pas : Indy le remplace par sa propre page, qui se
|
||||
// distinguait du JSON d'une route inconnue — et revelait donc quelles
|
||||
// routes existent. Refuser doit etre indiscernable de ne rien avoir.
|
||||
if not ApiLicenceOk then
|
||||
begin
|
||||
AResponse.ResponseNo := 404;
|
||||
AResponse.ContentText := '';
|
||||
TJSONHelper.SendError(AResponse, 404, 'Not found');
|
||||
Exit(True);
|
||||
end;
|
||||
SetLength(LParams, LMatch.Groups.Count - 1);
|
||||
|
||||
Reference in New Issue
Block a user