00001
00002
00003
00004
00005
00006
00007
00008
00018 #ifndef _GSISocketServer_h_
00019 #define _GSISocketServer_h_
00020
00022 #include "edg/workload/common/socket++/SocketServer.h"
00024 #include <globus_gss_assist.h>
00025
00026 namespace edg {
00027 namespace workload {
00028 namespace common {
00029 namespace socket_pp {
00030
00032 class GSISocketAgent;
00034 struct GSIAuthenticationContext;
00035
00044 class GSISocketServer : public SocketServer
00045 {
00046 public:
00047 enum limited_proxy_mode_t { normal, multi };
00053 GSISocketServer(int, int=5);
00058 virtual ~GSISocketServer();
00059
00063 virtual void Close();
00070 virtual GSISocketAgent* Listen();
00076 void RedirectGSIOutput(FILE *fp) { if(fp!=NULL) gsi_logfile = fp; }
00077
00078 void LimitedProxyMode(limited_proxy_mode_t mode) { limited_proxy_mode = mode; }
00079
00080 private:
00087 gss_ctx_id_t AcceptGSIAuthentication(int sock, GSIAuthenticationContext&);
00089 FILE *gsi_logfile;
00090 limited_proxy_mode_t limited_proxy_mode;
00091 };
00092
00093 }
00094 }
00095 }
00096 }
00097
00098 #endif
00099
00100
00101
00102
00103
00104
00105
00106
00107