From: Jiří Škrábal Date: Fri, 15 Oct 2004 13:53:28 +0000 (+0000) Subject: - conditional build depending on GLITE_LB_SERVER_WITH_WS env. variable X-Git-Tag: glite-lb-common_R_0_2_0~42 X-Git-Url: http://scientific.zcu.cz/git/?a=commitdiff_plain;h=d97e6d5a6c45af02b267c3eda101edef688b4709;p=jra1mw.git - conditional build depending on GLITE_LB_SERVER_WITH_WS env. variable - building without web services by default --- diff --git a/org.glite.lb.server/Makefile b/org.glite.lb.server/Makefile index 52ae029..e5003e3 100644 --- a/org.glite.lb.server/Makefile +++ b/org.glite.lb.server/Makefile @@ -18,10 +18,15 @@ expat_prefix=/opt/expat ares_prefix=/opt/ares gsoap_prefix=/opt/gsoap -# include project/version.properties -include Makefile.inc -include ../Makefile.inc +ifeq ($(GLITE_LB_SERVER_WITH_WS),yes) + WS_CFLAGS=-DGLITE_LB_SERVER_WITH_WS +else + WS_CFLAGS= +endif + CC=gcc GSOAP_FILES_PREFIX:= bk_ws_ @@ -44,7 +49,7 @@ DEBUG:=-g -O0 -Wall # -I/usr/include/libxml2 \ # -DNO_VOMS -DNO_GACL to be removed when voms/gridsite are available -CFLAGS:= -DNO_VOMS -DNO_GACL \ +CFLAGS:= -DNO_VOMS -DNO_GACL ${WS_CFLAGS} \ ${DEBUG} -I${stagedir}/include -I${top_srcdir}/src -I. \ -I${expat_prefix}/include \ -I${ares_prefix}/include \ @@ -78,6 +83,15 @@ SRVBONES_LIB:= -L${stagedir}/lib -lglite_lb_server_bones COMMON_LIB:= -L${stagedir}/lib -lglite_lb_common_${nothrflavour} +ifeq ($(GLITE_LB_SERVER_WITH_WS),yes) + SERVER_SOAP_OBJS:=${GSOAP_FILES_PREFIX}C.o ${GSOAP_FILES_PREFIX}Server.o \ + ws_plugin.o ws_query.o ws_fault.o ws_typeref.o + SERVER_WS_LIBS=${GSOAP_LIBS} +else + SERVER_SOAP_OBJS= + SERVER_WS_LIBS= +endif + SERVER_OBJS:= bkserverd.o get_events.o index.o jobstat.o jobstat_supp.o \ write2rgma.o lbs_db.o lb_html.o lb_http.o lb_proto.o lb_xml_parse.o \ lb_xml_parse_V21.o \ @@ -85,9 +99,6 @@ SERVER_OBJS:= bkserverd.o get_events.o index.o jobstat.o jobstat_supp.o \ stored_master.o srv_purge.o server_state.o dump.o lb_authz.o load.o \ notification.o il_notification.o notif_match.o -SERVER_SOAP_OBJS:=${GSOAP_FILES_PREFIX}C.o ${GSOAP_FILES_PREFIX}Server.o \ - ws_plugin.o ws_query.o ws_fault.o ws_typeref.o - INDEX_OBJS:= index.o index_parse.o jobstat_supp.o lbs_db.o openserver.o \ jobstat.o query.o lock.o get_events.o write2rgma.o index_lex.o \ lb_authz.o store.o bkindex.o @@ -97,7 +108,7 @@ WS_CLIENT_LIBS:= ${GSOAP_LIBS} -L${stagedir}/lib -lglite_lb_client_${nothrflavou glite_lb_bkserverd: ${SERVER_OBJS} ${SERVER_SOAP_OBJS} - ${LINK} -o $@ ${SERVER_OBJS} ${SERVER_SOAP_OBJS} ${COMMON_LIB} ${SRVBONES_LIB} ${GSOAP_LIBS} ${EXT_LIBS} + ${LINK} -o $@ ${SERVER_OBJS} ${SERVER_SOAP_OBJS} ${COMMON_LIB} ${SRVBONES_LIB} ${EXT_LIBS} ${SERVER_WS_LIBS} glite_lb_bkindex: ${INDEX_OBJS} ${LINK} -o $@ ${INDEX_OBJS} ${COMMON_LIB} ${EXT_LIBS} @@ -150,6 +161,8 @@ test_soap_conv: test_soap_conv.cpp ${WS_CLIENT_OBJS} ${CXX} -c ${CFLAGS} ${TEST_INC} $< ${LINKXX} -o $@ test_soap_conv.o ${WS_CLIENT_OBJS} ${WS_CLIENT_LIBS} ${COMMON_LIB} ${TEST_LIBS} +examples: ws_jobstat ws_query_ex + ws_jobstat: ws_jobstat.o ${WS_CLIENT_OBJS} ${LINK} -o $@ ws_jobstat.o ${WS_CLIENT_OBJS} ${WS_CLIENT_LIBS} ${EXT_LIBS} diff --git a/org.glite.lb.server/src/bkserverd.c b/org.glite.lb.server/src/bkserverd.c index 68e25cc..65f334f 100644 --- a/org.glite.lb.server/src/bkserverd.c +++ b/org.glite.lb.server/src/bkserverd.c @@ -27,7 +27,9 @@ #include +#ifdef GLITE_LB_SERVER_WITH_WS #include +#endif /* GLITE_LB_SERVER_WITH_WS */ #include "glite/lb/srvbones.h" #include "glite/lb/consumer.h" @@ -43,7 +45,10 @@ #include "lbs_db.h" #include "lb_authz.h" #include "il_notification.h" + +#ifdef GLITE_LB_SERVER_WITH_WS #include "ws_plugin.h" +#endif /* GLITE_LB_SERVER_WITH_WS */ extern int edg_wll_StoreProto(edg_wll_Context ctx); extern edg_wll_ErrorCode edg_wll_Open(edg_wll_Context ctx, char *cs); @@ -116,7 +121,9 @@ static struct option opts[] = { {"CAdir", 1, NULL, 'C'}, {"VOMSdir", 1, NULL, 'V'}, {"port", 1, NULL, 'p'}, +#ifdef GLITE_LB_SERVER_WITH_WS {"wsport", 1, NULL, 'w'}, +#endif /* GLITE_LB_SERVER_WITH_WS */ {"address", 1, NULL, 'a'}, {"debug", 0, NULL, 'd'}, {"rgmaexport", 0, NULL, 'r'}, @@ -138,6 +145,12 @@ static struct option opts[] = { {NULL,0,NULL,0} }; +#ifdef GLITE_LB_SERVER_WITH_WS +static const char *get_opt_string = "a:c:k:C:V:p:w:drm:ns:l:L:N:i:S:D:X:Y:"; +#else +static const char *get_opt_string = "a:c:k:C:V:p:drm:ns:l:L:N:i:S:D:X:Y:"; +#endif /* GLITE_LB_SERVER_WITH_WS */ + static void usage(char *me) { fprintf(stderr,"usage: %s [option]\n" @@ -147,7 +160,9 @@ static void usage(char *me) "\t-C, --CAdir\t trusted certificates directory\n" "\t-V, --VOMSdir\t trusted VOMS servers certificates directory\n" "\t-p, --port\t port to listen\n" +#ifdef GLITE_LB_SERVER_WITH_WS "\t-w, --wsport\t port to serve the web services requests\n" +#endif /* GLITE_LB_SERVER_WITH_WS */ "\t-m, --mysql\t database connect string\n" "\t-d, --debug\t don't run as daemon, additional diagnostics\n" "\t-r, --rgmaexport write state info to RGMA interface\n" @@ -192,6 +207,7 @@ int bk_accept_serve(int, void *); int bk_accept_store(int, void *); int bk_clnt_disconnect(int, void *); +#ifdef GLITE_LB_SERVER_WITH_WS /* * WS handlers */ @@ -199,20 +215,26 @@ int bk_handle_ws_connection(int, struct timeval, void *); int bk_accept_ws(int, void *); int bk_ws_clnt_reject(int); int bk_ws_clnt_disconnect(int, void *); - +#endif /*GLITE_LB_SERVER_WITH_WS */ #define SRV_SERVE 0 #define SRV_STORE 1 +#ifdef GLITE_LB_SERVER_WITH_WS #define SRV_WS 2 +#endif /* GLITE_LB_SERVER_WITH_WS */ static struct glite_srvbones_service service_table[] = { { "serve", -1, bk_handle_connection, bk_accept_serve, bk_clnt_reject, bk_clnt_disconnect }, { "store", -1, bk_handle_connection, bk_accept_store, bk_clnt_reject, bk_clnt_disconnect }, +#ifdef GLITE_LB_SERVER_WITH_WS { "WS", -1, bk_handle_ws_connection, bk_accept_ws, bk_ws_clnt_reject, bk_ws_clnt_disconnect } +#endif /* GLITE_LB_SERVER_WITH_WS */ }; struct clnt_data_t { edg_wll_Context ctx; +#ifdef GLITE_LB_SERVER_WITH_WS struct soap *soap; +#endif /* GLITE_LB_SERVER_WITH_WS */ void *mysql; edg_wll_QueryRec **job_index; edg_wll_IColumnRec *job_index_cols; @@ -227,9 +249,12 @@ int main(int argc, char *argv[]) char *mysubj = NULL; int opt; char pidfile[PATH_MAX] = EDG_BKSERVERD_PIDFILE, - *port, *ws_port, + *port, *name, *cert, *key; +#ifdef GLITE_LB_SERVER_WITH_WS + char *ws_port; +#endif /* GLITE_LB_SERVER_WITH_WS */ FILE *fpid; key_t semkey; edg_wll_Context ctx; @@ -243,7 +268,9 @@ int main(int argc, char *argv[]) if (name) name++; else name = argv[0]; asprintf(&port, "%d", GLITE_WMSC_JOBID_DEFAULT_PORT); +#ifdef GLITE_LB_SERVER_WITH_WS asprintf(&ws_port, "%d", GLITE_WMSC_JOBID_DEFAULT_PORT+2); +#endif /* GLITE_LB_SERVER_WITH_WS */ cert = key = cadir = vomsdir = NULL; /* no magic here: 1 month, 3 and 7 days */ @@ -267,14 +294,16 @@ int main(int argc, char *argv[]) if (geteuid()) snprintf(pidfile,sizeof pidfile,"%s/edg-bkserverd.pid", getenv("HOME")); - while ((opt = getopt_long(argc,argv,"a:c:k:C:V:p:w:drm:ns:l:L:N:i:S:D:X:Y:",opts,NULL)) != EOF) switch (opt) { + while ((opt = getopt_long(argc,argv,get_opt_string,opts,NULL)) != EOF) switch (opt) { case 'a': fake_host = strdup(optarg); break; case 'c': cert = optarg; break; case 'k': key = optarg; break; case 'C': cadir = optarg; break; case 'V': vomsdir = optarg; break; case 'p': free(port); port = strdup(optarg); break; +#ifdef GLITE_LB_SERVER_WITH_WS case 'w': free(ws_port); ws_port = strdup(optarg); break; +#endif /* GLITE_LB_SERVER_WITH_WS */ case 'd': debug = 1; break; case 'r': rgma_export = 1; break; case 'm': dbstring = optarg; break; @@ -427,6 +456,7 @@ a.sin_addr.s_addr = INADDR_ANY; } if ( listen(service_table[SRV_STORE].conn, CON_QUEUE) ) { perror("listen()"); return 1; } +#ifdef GLITE_LB_SERVER_WITH_WS service_table[SRV_WS].conn = socket(PF_INET, SOCK_STREAM, 0); if ( service_table[SRV_WS].conn < 0) { perror("socket()"); return 1; } a.sin_family = AF_INET; @@ -443,6 +473,8 @@ a.sin_addr.s_addr = INADDR_ANY; } if ( listen(service_table[SRV_WS].conn, CON_QUEUE) ) { perror("listen()"); return 1; } +#endif /* GLITE_LB_SERVER_WITH_WS */ + if (!cert || !key) fprintf(stderr, "%s: key or certificate file not specified" " - unable to watch them for changes!\n", argv[0]); @@ -462,7 +494,10 @@ a.sin_addr.s_addr = INADDR_ANY; if ( noAuth ) dprintf(("Promiscuous mode\n")); dprintf(("Listening at %d,%d (accepting protocols: " COMP_PROTO " and compatible) ...\n",atoi(port),atoi(port)+1)); + +#ifdef GLITE_LB_SERVER_WITH_WS dprintf(("Listening at %d (accepting web service protocol) ...\n", atoi(ws_port))); +#endif /* GLITE_LB_SERVER_WITH_WS */ if (!dbstring) dbstring = getenv("LBDB"); @@ -799,6 +834,7 @@ int bk_handle_connection(int conn, struct timeval client_start, void *data) return 0; } +#ifdef GLITE_LB_SERVER_WITH_WS int bk_handle_ws_connection(int conn, struct timeval client_start, void *data) { struct clnt_data_t *cdata = (struct clnt_data_t *) data; @@ -827,6 +863,7 @@ int bk_handle_ws_connection(int conn, struct timeval client_start, void *data) return 0; } +#endif /* GLITE_LB_SERVER_WITH_WS */ int bk_accept_store(int conn, void *cdata) { @@ -951,6 +988,7 @@ int bk_accept_serve(int conn, void *cdata) } +#ifdef GLITE_LB_SERVER_WITH_WS int bk_accept_ws(int conn, void *cdata) { struct soap *soap = ((struct clnt_data_t *) cdata)->soap; @@ -1018,6 +1056,7 @@ int bk_accept_ws(int conn, void *cdata) return 0; } +#endif /* GLITE_LB_SERVER_WITH_WS */ int bk_clnt_disconnect(int conn, void *cdata) @@ -1036,6 +1075,7 @@ int bk_clnt_disconnect(int conn, void *cdata) return 0; } +#ifdef GLITE_LB_SERVER_WITH_WS int bk_ws_clnt_disconnect(int conn, void *cdata) { int rv; @@ -1048,6 +1088,7 @@ int bk_ws_clnt_disconnect(int conn, void *cdata) return 0; } +#endif /* GLITE_LB_SERVER_WITH_WS */ int bk_clnt_reject(int conn) { @@ -1061,10 +1102,12 @@ int bk_clnt_reject(int conn) return 0; } +#ifdef GLITE_LB_SERVER_WITH_WS int bk_ws_clnt_reject(int conn) { return bk_clnt_reject(conn); } +#endif /* GLITE_LB_SERVER_WITH_WS */ static void wait_for_open(edg_wll_Context ctx, const char *dbstring)