AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Apachemodul C -> Delphi

Ein Thema von omata · begonnen am 19. Jan 2012
Antwort Antwort
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#1

Apachemodul C -> Delphi

  Alt 19. Jan 2012, 23:07
Hallo,

ich möchte gern ein Apachemodul erstellen. Ich möchte dafür die Prozedur ap_register_provider aufrufen. Allerdings ergibt das immer eine Access Violation.

Folgende Strukturinformation habe ich gefunden...
Delphi-Quellcode:
{
* This function is used to register a provider with the global
* provider pool.
* @param pool The pool to create any storage from
* @param provider_group The group to store the provider in
* @param provider_name The name for this provider
* @param provider_version The version for this provider
* @param provider Opaque structure for this provider
* @return APR_SUCCESS if all went well
}

function ap_register_provider(
  const pool: Papr_pool_t;
  const provider_group, provider_name, provider_version: PAnsiChar;
  const provider: Pointer): apr_status_t;
  {$IFDEF WINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF}
Was ich aber nicht genau weiss, wie ist die Struktur von provider?

Hier wird die Struktur in C erklärt.

Die Struktur habe ich wie folgt umgesetzt...
Delphi-Quellcode:
type
  Tauthn_status = (
    AUTH_DENIED, AUTH_GRANTED, AUTH_USER_FOUND, AUTH_USER_NOT_FOUND,
    AUTH_GENERAL_ERROR
  );
Delphi-Quellcode:
function authn_external_check_password(r: Prequest_rec;
                                       const user:PAnsiChar;
                                       const password:PAnsiChar):Tauthn_status; cdecl;
begin
  result:=AUTH_USER_FOUND;
end;
Aufruf...
Delphi-Quellcode:
procedure RegisterHooks(p: Papr_pool_t); cdecl;
begin
  ap_register_provider(
    p,
    PAnsiChar(AUTHN_PROVIDER_GROUP),
    PAnsiChar('external'),
    PAnsiChar(AUTHN_PROVIDER_VERSION),
    @authn_external_check_password
  );
end;
Oder muss die Struktur ein Record / variantes Record sein?

Eigentlich möchte ich ap_register_auth_provider aufrufen. Aber wo ist das deklariert bzw. in welcher DLL ist diese Prozedur zufinden?

Hier sind die Informationen dazu zu finden.

So in mod_auth.h habe ich jetzt folgendes gefunden...
Code:
typedef enum {
    AUTH_DENIED,
    AUTH_GRANTED,
    AUTH_USER_FOUND,
    AUTH_USER_NOT_FOUND,
    AUTH_GENERAL_ERROR
} authn_status;

typedef enum {
    AUTHZ_DENIED,
    AUTHZ_GRANTED,
    AUTHZ_NEUTRAL,
    AUTHZ_GENERAL_ERROR,
    AUTHZ_DENIED_NO_USER,     /* denied because r->user == NULL */
} authz_status;

typedef struct {
    /* Given a username and password, expected to return AUTH_GRANTED
     * if we can validate this user/password combination.
     */
    authn_status (*check_password)(request_rec *r, const char *user,
                                   const char *password);

    /* Given a user and realm, expected to return AUTH_USER_FOUND if we
     * can find a md5 hash of 'user:realm:password'
     */
    authn_status (*get_realm_hash)(request_rec *r, const char *user,
                                   const char *realm, char **rethash);
} authn_provider;
Vielleicht habt ihr ja noch eine Idee für mich.

Geändert von omata (20. Jan 2012 um 00:10 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz