X-Git-Url: http://git.indexdata.com/?p=yazproxy-moved-to-github.git;a=blobdiff_plain;f=include%2Fyazproxy%2Fmodule.h;h=d238925b36ec924b35472f5bdd96413a8084c00a;hp=7afbff55cf6ce5e178d2917f9e7c8cbb94bcf22b;hb=dfdff5f2d2825a500d3d27200d2ec32ee063a975;hpb=e9a5a9feeb12335c668b73dbb6385908be6806f1 diff --git a/include/yazproxy/module.h b/include/yazproxy/module.h index 7afbff5..d238925 100644 --- a/include/yazproxy/module.h +++ b/include/yazproxy/module.h @@ -1,7 +1,5 @@ -/* $Id: module.h,v 1.2 2005-02-21 14:27:31 adam Exp $ - Copyright (c) 1998-2005, Index Data. - -This file is part of the yaz-proxy. +/* This file is part of YAZ proxy + Copyright (C) 1998-2009 Index Data YAZ proxy is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -14,18 +12,17 @@ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License -along with YAZ proxy; see the file LICENSE. If not, write to the -Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA -02111-1307, USA. - */ +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ #ifndef YAZ_PROXY_MODULE_H #define YAZ_PROXY_MODULE_H_INCLUDED struct Yaz_ProxyModule_entry { int int_version; - char *module_name; - char *module_description; + const char *module_name; + const char *module_description; void *fl; }; @@ -37,17 +34,47 @@ struct Yaz_ProxyModule_int0 { void *(*init)(void); // Init handler - returns module-specific handle void (*destroy)( // Destroy handler - void *handle // module-specific handle as returned by init - ); + 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) + 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 + * c-file-style: "Stroustrup" + * indent-tabs-mode: nil + * End: + * vim: shiftwidth=4 tabstop=8 expandtab + */ +