00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef CHIPCARD_SERVER2_SERVER_L_H
00016 #define CHIPCARD_SERVER2_SERVER_L_H
00017
00018 #include <gwenhywfar/plugin.h>
00019
00020
00023 #define LCS_DEFAULT_DHFILE "chipcardd-dh.pem"
00024 #define LCS_DEFAULT_CERTFILE "chipcardd-cert.pem"
00025
00026 #define LCS_IPC_URL "/libchipcard2/server"
00027
00031 #define LCS_PATH_DESTLIB "libchipcard2"
00032 #define LCS_PATH_DRIVER_INFODIR "DriverInfoDir"
00033 #define LCS_PATH_DRIVER_EXECDIR "DriverExecDir"
00034
00035 #define LCS_PATH_SERVICE_EXECDIR "ServiceExecDir"
00036
00037 #define LCS_PATH_SERVER_DATADIR "DataDir"
00038 #define LCS_PATH_SERVER_NEWCERTDIR "NewCertDir"
00039 #define LCS_PATH_SERVER_TRUSTEDCERTDIR "TrustedCertDir"
00040 #define LCS_PATH_SERVER_LOGDIR "LogDir"
00041
00042 #define LCS_REGKEY_BASE "Software\\Libchipcard2\\Server\\Paths"
00043
00048 #define LCS_PLUGIN_DRIVER "Libchipcard2_Driver"
00049
00052 #define LCS_PLUGIN_SERVICE "Libchipcard2_Service"
00053
00054
00055 #include <gwenhywfar/ipc.h>
00056 #include <gwenhywfar/requestmgr.h>
00057 #include <gwenhywfar/inherit.h>
00058 #include <gwenhywfar/db.h>
00059 #include <gwenhywfar/buffer.h>
00060 #include <gwenhywfar/netlayer.h>
00061
00062
00063 typedef struct LCS_SERVER LCS_SERVER;
00064 GWEN_INHERIT_FUNCTION_DEFS(LCS_SERVER)
00065
00066
00067 #include <chipcard2/chipcard2.h>
00068 #include "common/card.h"
00069 #include "connection_l.h"
00070 #include "devicemanager/devicemanager_l.h"
00071
00072
00073
00074 typedef void (*LCS_SERVER_DRIVER_CHG_FN)(LCS_SERVER *cs,
00075 GWEN_TYPE_UINT32 did,
00076 const char *driverType,
00077 const char *driverName,
00078 const char *libraryFile,
00079 LC_DRIVER_STATUS newSt,
00080 const char *reason);
00081
00082 typedef void (*LCS_SERVER_READER_CHG_FN)(LCS_SERVER *cs,
00083 GWEN_TYPE_UINT32 did,
00084 GWEN_TYPE_UINT32 rid,
00085 const char *readerType,
00086 const char *readerName,
00087 const char *readerInfo,
00088 LC_READER_STATUS newSt,
00089 const char *reason);
00090
00091 typedef void (*LCS_SERVER_NEWCARD_FN)(LCS_SERVER *cs, LCCO_CARD *card);
00092
00093 typedef void (*LCS_SERVER_CARDREMOVED_FN)(LCS_SERVER *cs,
00094 GWEN_TYPE_UINT32 rid,
00095 int slotNum,
00096 GWEN_TYPE_UINT32 cardNum);
00097
00098 typedef int (*LCS_SERVER_HANDLEREQUEST_FN)(LCS_SERVER *cs,
00099 GWEN_TYPE_UINT32 rid,
00100 const char *name,
00101 GWEN_DB_NODE *dbReq);
00102
00103 typedef void (*LCS_SERVER_CONNECTION_DOWN_FN)(LCS_SERVER *cs,
00104 GWEN_NETLAYER *conn);
00105
00106 typedef void (*LCS_SERVER_SERVICE_CHG_FN)(LCS_SERVER *cs,
00107 GWEN_TYPE_UINT32 sid,
00108 const char *serviceType,
00109 const char *serviceName,
00110 LC_SERVICE_STATUS newSt,
00111 const char *reason);
00112
00113
00114 LCS_SERVER *LCS_Server_new();
00115 void LCS_Server_free(LCS_SERVER *cs);
00116
00117 int LCS_Server_Init(LCS_SERVER *cs, GWEN_DB_NODE *db);
00118 int LCS_Server_Fini(LCS_SERVER *cs, GWEN_DB_NODE *db);
00119
00121 int LCS_Server_Work(LCS_SERVER *cs);
00122
00123
00127 void LCS_Server_BeginUseReaders(LCS_SERVER *cs);
00128 void LCS_Server_EndUseReaders(LCS_SERVER *cs, int count);
00129
00130
00131
00132 LCS_SERVER_DRIVER_CHG_FN
00133 LCS_Server_SetDriverChgFn(LCS_SERVER *cs,
00134 LCS_SERVER_DRIVER_CHG_FN f);
00135 LCS_SERVER_READER_CHG_FN
00136 LCS_Server_SetReaderChgFn(LCS_SERVER *cs,
00137 LCS_SERVER_READER_CHG_FN f);
00138 LCS_SERVER_NEWCARD_FN
00139 LCS_Server_SetNewCardFn(LCS_SERVER *cs,
00140 LCS_SERVER_NEWCARD_FN f);
00141 LCS_SERVER_CARDREMOVED_FN
00142 LCS_Server_SetCardRemovedFn(LCS_SERVER *cs,
00143 LCS_SERVER_CARDREMOVED_FN f);
00144
00145 LCS_SERVER_HANDLEREQUEST_FN
00146 LCS_Server_SetHandleRequestFn(LCS_SERVER *cs,
00147 LCS_SERVER_HANDLEREQUEST_FN f);
00148
00149 LCS_SERVER_CONNECTION_DOWN_FN
00150 LCS_Server_SetConnectionDownFn(LCS_SERVER *cs,
00151 LCS_SERVER_CONNECTION_DOWN_FN f);
00152 LCS_SERVER_SERVICE_CHG_FN
00153 LCS_Server_SetServiceChgFn(LCS_SERVER *cs,
00154 LCS_SERVER_SERVICE_CHG_FN f);
00155
00156
00162 void LCS_Server_UseConnectionFor(LCS_SERVER *cs,
00163 GWEN_NETLAYER *conn,
00164 LCS_CONNECTION_TYPE t,
00165 GWEN_TYPE_UINT32 ipcId);
00166
00167
00172 void LCS_Server_DriverChg(LCS_SERVER *cs,
00173 GWEN_TYPE_UINT32 did,
00174 const char *driverType,
00175 const char *driverName,
00176 const char *libraryFile,
00177 LC_DRIVER_STATUS newSt,
00178 const char *reason);
00179
00180 void LCS_Server_ReaderChg(LCS_SERVER *cs,
00181 GWEN_TYPE_UINT32 did,
00182 GWEN_TYPE_UINT32 rid,
00183 const char *readerType,
00184 const char *readerName,
00185 const char *readerInfo,
00186 LC_READER_STATUS newSt,
00187 const char *reason);
00188
00195 void LCS_Server_NewCard(LCS_SERVER *cs, LCCO_CARD *card);
00196
00197 void LCS_Server_CardRemoved(LCS_SERVER *cs,
00198 GWEN_TYPE_UINT32 rid,
00199 int slotNum,
00200 GWEN_TYPE_UINT32 cardNum);
00201
00202 void LCS_Server_ConnectionDown(LCS_SERVER *cs,
00203 GWEN_NETLAYER *conn);
00204
00205 void LCS_Server_ServiceChg(LCS_SERVER *cs,
00206 GWEN_TYPE_UINT32 sid,
00207 const char *serviceType,
00208 const char *serviceName,
00209 LC_SERVICE_STATUS newSt,
00210 const char *reason);
00211
00216 GWEN_IPCMANAGER *LCS_Server_GetIpcManager(const LCS_SERVER *cs);
00217 GWEN_IPC_REQUEST_MANAGER *LCS_Server_GetRequestManager(const LCS_SERVER *cs);
00218
00219 LCDM_DEVICEMANAGER *LCS_Server_GetDeviceManager(const LCS_SERVER *cs);
00220 void LCS_Server_SetDeviceManager(LCS_SERVER *cs, LCDM_DEVICEMANAGER *dm);
00221
00222
00223 int LCS_Server_ReplaceVar(const char *path,
00224 const char *var,
00225 const char *value,
00226 GWEN_BUFFER *nbuf);
00227
00228
00229 int LCS_Server_SendErrorResponse(LCS_SERVER *cs,
00230 GWEN_TYPE_UINT32 rid,
00231 int code,
00232 const char *text);
00233
00234 void LCS_Server_DumpState(const LCS_SERVER *cs);
00235
00236
00237 #endif
00238
00239
00240