X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=include%2Fyazproxy%2Fmodule.h;h=5518919395b15628921d0f6e82794072b53c4508;hb=aea59072802dbcc47655a4ed12b9ae28b89fea8e;hp=6d2fd34e4c73bfaf7c4b07bf78a6b82aea9014ed;hpb=c6ca4f0f79d5ea0ca391d420bcb6dd6b4d7935d2;p=yazproxy-moved-to-github.git diff --git a/include/yazproxy/module.h b/include/yazproxy/module.h index 6d2fd34..5518919 100644 --- a/include/yazproxy/module.h +++ b/include/yazproxy/module.h @@ -1,4 +1,4 @@ -/* $Id: module.h,v 1.1 2005-02-11 15:19:08 adam Exp $ +/* $Id: module.h,v 1.6 2005-06-25 15:58:33 adam Exp $ Copyright (c) 1998-2005, Index Data. This file is part of the yaz-proxy. @@ -34,10 +34,49 @@ struct Yaz_ProxyModule_entry { #define YAZPROXY_RET_PERM 2 /* Permissiong denied, reject etc. */ struct Yaz_ProxyModule_int0 { - void *(*init)(void); - void (*destroy)(void *handle); - int (*authenticate)(void *handle, - const char *user, const char *group, const char *pw); + void *(*init)(void); // Init handler - returns module-specific handle + + void (*destroy)( // Destroy handler + void *handle // module-specific handle as returned by init + ); + + int (*authenticate)( // Authenticate handler. Returns YAZPROXY_RET_.. + void *handle, // module-specific handle as returned by init + const char *name, // target name (or NULL if default target) + void *element_ptr, // xmlnodePtr thing to XML config this + const char *user, // User ID (or NULL if no suppliied User ID) + const char *group, // Group ID (or NULL if no supplied Group ID) + const char *pw, // Password (or NULL if no supplied password) + const char *peer_IP// IP address of client + ); +}; + +class Yaz_ProxyModule; + +class Yaz_ProxyModules { + friend class Proxy_Msg; + public: + Yaz_ProxyModules(); + ~Yaz_ProxyModules(); + int authenticate(const char *module_name, + const char *target_name, void *element_ptr, + const char *user, + const char *group, + const char *password, + const char *peer_IP); + int add_module(const char *fname); + void unload_modules(); + private: + Yaz_ProxyModule *m_list; + int m_no_open; }; #endif +/* + * Local variables: + * c-basic-offset: 4 + * indent-tabs-mode: nil + * End: + * vim: shiftwidth=4 tabstop=8 expandtab + */ +