#include <libgen.h>
#include "glite/lb/lb_maildir.h"
-#include "glite/security/glite_gsplugin.h"
#include "jpps_H.h"
#include "jpps_.nsmap"
#include "jptype_map.h"
+#include "glite/security/glite_gsplugin.h"
+#include "glite/security/glite_gscompat.h"
#include "globus_ftp_client.h"
-#include "soap_version.h"
#if GSOAP_VERSION <= 20602
#define soap_call___jpsrv__RegisterJob soap_call___ns1__RegisterJob
#endif
#ifndef dprintf
-#define dprintf(x) { if (debug) printf x; }
+#define dprintf(FMT, ARGS...) { if (debug) printf(FMT, ##ARGS); }
#endif
+#define check_soap_fault(SOAP, ERR) glite_jp_clientCheckFault((SOAP), (ERR), name, 1)
+
#ifndef GLITE_JPIMPORTER_PIDFILE
#define GLITE_JPIMPORTER_PIDFILE "/var/run/glite-jpimporter.pid"
#endif
static const char *get_opt_string = "hgp:r:d:s:i:t:c:k:C:";
+#include "glite/jp/ws_fault.c"
+
static void usage(char *me)
{
fprintf(stderr,"usage: %s [option]\n"
static int slave(int (*)(void), const char *);
-static int check_soap_fault(struct soap *, int);
static int reg_importer(void);
static int dump_importer(void);
static int sandbox_importer(void);
openlog(name, LOG_PID, LOG_DAEMON);
} else { setpgid(0, getpid()); }
- dprintf(("Master pid %d\n", getpid()));
+ dprintf("Master pid %d\n", getpid());
if ( globus_module_activate(GLOBUS_FTP_CLIENT_MODULE) != GLOBUS_SUCCESS ) {
- dprintf(("[master] Could not activate ftp client module\n"));
+ dprintf("[master] Could not activate ftp client module\n");
if (!debug) syslog(LOG_INFO, "Could not activate ftp client module\n");
exit(1);
- } else dprintf(("[master] Ftp client module activated\n"));
+ } else dprintf("[master] Ftp client module activated\n");
if ( !server_cert || !server_key )
fprintf(stderr, "%s: key or certificate file not specified"
if ( cadir ) setenv("X509_CERT_DIR", cadir, 1);
edg_wll_gss_watch_creds(server_cert, &cert_mtime);
if ( !edg_wll_gss_acquire_cred_gsi(server_cert, server_key, &mycred, &mysubj, &gss_code) ) {
- dprintf(("[master] Server identity: %s\n", mysubj));
+ dprintf("[master] Server identity: %s\n", mysubj);
} else {
char *errmsg;
edg_wll_gss_get_error(&gss_code, "edg_wll_gss_acquire_cred_gsi()", &errmsg);
- dprintf(("[master] %s\n", errmsg));
+ dprintf("[master] %s\n", errmsg);
free(errmsg);
- dprintf(("[master] Running unauthenticated\n"));
+ dprintf("[master] Running unauthenticated\n");
}
memset(&sa, 0, sizeof(sa)); assert(sa.sa_handler == NULL);
while ( (pid = waitpid(-1, NULL, WNOHANG)) > 0 ) {
if ( !die ) {
if ( pid == reg_pid ) {
- dprintf(("[master] reg importer slave died [%d]\n", pid));
+ dprintf("[master] reg importer slave died [%d]\n", pid);
if (!debug) syslog(LOG_INFO, "reg importer slave died [%d]\n", die);
if ( (reg_pid = slave(reg_importer, "reg-imp")) < 0 ) {
perror("starting reg importer slave");
kill(0, SIGINT);
exit(1);
}
- dprintf(("[master] reg importer slave restarted [%d]\n", reg_pid));
+ dprintf("[master] reg importer slave restarted [%d]\n", reg_pid);
} else if ( pid == dump_pid ) {
- dprintf(("[master] dump importer slave died [%d]\n", pid));
+ dprintf("[master] dump importer slave died [%d]\n", pid);
if (!debug) syslog(LOG_INFO, "dump importer slave died [%d]\n", die);
if ( (dump_pid = slave(dump_importer, "dump-imp")) < 0 ) {
perror("starting dump importer slave");
kill(0, SIGINT);
exit(1);
}
- dprintf(("[master] dump importer slave restarted [%d]\n", dump_pid));
+ dprintf("[master] dump importer slave restarted [%d]\n", dump_pid);
} else if ( pid == sandbox_pid ) {
- dprintf(("[master] sandbox importer slave died [%d]\n", pid));
+ dprintf("[master] sandbox importer slave died [%d]\n", pid);
if (!debug) syslog(LOG_INFO, "sandbox importer slave died [%d]\n", die);
if ( (sandbox_pid = slave(sandbox_importer, "sandbox-imp")) < 0 ) {
perror("starting sandbox importer slave");
kill(0, SIGINT);
exit(1);
}
- dprintf(("[master] sandbox importer slave restarted [%d]\n", sandbox_pid));
+ dprintf("[master] sandbox importer slave restarted [%d]\n", sandbox_pid);
}
}
}
}
- dprintf(("[master] Terminating on signal %d\n", die));
+ dprintf("[master] Terminating on signal %d\n", die);
if (!debug) syslog(LOG_INFO, "Terminating on signal %d\n", die);
kill(0, die);
sigaddset(&sset, SIGUSR1);
sigprocmask(SIG_BLOCK, &sset, NULL);
- dprintf(("[%s] slave started - pid [%d]\n", name, getpid()));
+ dprintf("[%s] slave started - pid [%d]\n", name, getpid());
while ( !die && conn_cnt < MAX_REG_CONNS ) {
int ret = fn();
}
if ( die ) {
- dprintf(("[%s] Terminating on signal %d\n", name, getpid(), die));
+ dprintf("[%s] Terminating on signal %d\n", name, getpid(), die);
if ( !debug ) syslog(LOG_INFO, "Terminating on signal %d", die);
}
- dprintf(("[%s] Terminating after %d connections\n", name, conn_cnt));
+ dprintf("[%s] Terminating after %d connections\n", name, conn_cnt);
if ( !debug ) syslog(LOG_INFO, "Terminating after %d connections", conn_cnt);
exit(0);
ret = edg_wll_MaildirTransStart(reg_mdir, &msg, &fname);
if ( ret < 0 ) {
- dprintf(("[%s] edg_wll_MaildirTransStart: %s (%s)\n", name, strerror(errno), lbm_errdesc));
+ dprintf("[%s] edg_wll_MaildirTransStart: %s (%s)\n", name, strerror(errno), lbm_errdesc);
if ( !debug ) syslog(LOG_ERR, "edg_wll_MaildirTransStart: %s (%s)", strerror(errno), lbm_errdesc);
return -1;
} else if ( ret > 0 ) {
- dprintf(("[%s] JP registration request received\n", name));
+ dprintf("[%s] JP registration request received\n", name);
if ( !debug ) syslog(LOG_INFO, "JP registration request received\n");
ret = 0;
if ( !(aux = strchr(msg, '\n')) ) {
- dprintf(("[%s] Wrong format of message!\n", name));
+ dprintf("[%s] Wrong format of message!\n", name);
if ( !debug ) syslog(LOG_ERR, "Wrong format of message\n");
ret = 0;
} else do {
*aux++ = '\0';
in.job = msg;
in.owner = aux;
- dprintf(("[%s] Registering '%s'\n", name, msg));
+ dprintf("[%s] Registering '%s'\n", name, msg);
if ( !debug ) syslog(LOG_INFO, "Registering '%s'\n", msg);
ret = soap_call___jpsrv__RegisterJob(soap, jpps, "", &in, &empty);
if ( (ret = check_soap_fault(soap, ret)) ) break;
}
if ( ret < 0 ) {
- dprintf(("[%s] edg_wll_MaildirTransStart: %s (%s)\n", name, strerror(errno), lbm_errdesc));
+ dprintf("[%s] edg_wll_MaildirTransStart: %s (%s)\n", name, strerror(errno), lbm_errdesc);
if ( !debug ) syslog(LOG_ERR, "edg_wll_MaildirTransStart: %s (%s)", strerror(errno), lbm_errdesc);
return -1;
}
- dprintf(("[%s] dump JP import request received\n", name));
+ dprintf("[%s] dump JP import request received\n", name);
if ( !debug ) syslog(LOG_INFO, "dump JP import request received");
ret = 0;
if ( parse_msg(msg, tab) < 0 ) {
- dprintf(("[%s] Wrong format of message!\n", name));
+ dprintf("[%s] Wrong format of message!\n", name);
if ( !debug ) syslog(LOG_ERR, "Wrong format of message");
ret = 0;
} else do {
su_in.name = NULL;
su_in.commitBefore = 1000 + time(NULL);
su_in.contentType = "text/lb";
- dprintf(("[%s] Importing LB dump file '%s'\n", name, tab[_file].val));
+ dprintf("[%s] Importing LB dump file '%s'\n", name, tab[_file].val);
if ( !debug ) syslog(LOG_INFO, "Importing LB dump file '%s'\n", msg);
ret = soap_call___jpsrv__StartUpload(soap, tab[_jpps].val?:jpps, "", &su_in, &su_out);
if ( (ret = check_soap_fault(soap, ret)) ) break;
- dprintf(("[%s] Destination: %s\n\tCommit before: %s\n", name, su_out.destination, ctime(&su_out.commitBefore)));
+ dprintf("[%s] Destination: %s\n\tCommit before: %s\n", name, su_out.destination, ctime(&su_out.commitBefore));
if (su_out.destination == NULL) {
- dprintf(("[%s] StartUpload returned NULL destination\n", name));
+ dprintf("[%s] StartUpload returned NULL destination\n", name);
if ( !debug ) syslog(LOG_ERR, "StartUpload returned NULL destination");
break;
}
if ( (fhnd = open(tab[_file].val, O_RDONLY)) < 0 ) {
- dprintf(("[%s] Can't open dump file: %s\n", name, tab[_file].val));
+ dprintf("[%s] Can't open dump file: %s\n", name, tab[_file].val);
if ( !debug ) syslog(LOG_ERR, "Can't open dump file: %s", tab[_file].val);
ret = 1;
break;
}
if ( (ret = gftp_put_file(su_out.destination, fhnd)) ) break;
close(fhnd);
- dprintf(("[%s] File sent, commiting the upload\n", name));
+ dprintf("[%s] File sent, commiting the upload\n", name);
cu_in.destination = su_out.destination;
ret = soap_call___jpsrv__CommitUpload(soap, tab[_jpps].val?:jpps, "", &cu_in, &empty);
if ( (ret = check_soap_fault(soap, ret)) ) break;
- dprintf(("[%s] Dump upload succesfull\n", name));
+ dprintf("[%s] Dump upload succesfull\n", name);
if (store && *store) {
bname = strdup(tab[_file].val);
snprintf(fspec, sizeof fspec, "%s/%s", store, basename(bname));
if (rename(tab[_file].val, fspec) != 0)
fprintf(stderr, "moving %s to %s failed: %s\n", tab[_file].val, fspec, strerror(errno));
else
- dprintf(("[%s] moving %s to %s OK\n", name, tab[_file].val, fspec));
+ dprintf("[%s] moving %s to %s OK\n", name, tab[_file].val, fspec);
} else {
if (unlink(tab[_file].val) != 0)
fprintf(stderr, "removing %s failed: %s\n", tab[_file].val, strerror(errno));
else
- dprintf(("[%s] %s removed\n", name, tab[_file].val));
+ dprintf("[%s] %s removed\n", name, tab[_file].val);
}
} while (0);
}
if ( ret < 0 ) {
- dprintf(("[%s] edg_wll_MaildirTransStart: %s (%s)\n", name, strerror(errno), lbm_errdesc));
+ dprintf("[%s] edg_wll_MaildirTransStart: %s (%s)\n", name, strerror(errno), lbm_errdesc);
if ( !debug ) syslog(LOG_ERR, "edg_wll_MaildirTransStart: %s (%s)", strerror(errno), lbm_errdesc);
return -1;
}
- dprintf(("[%s] sandbox JP import request received\n", name));
+ dprintf("[%s] sandbox JP import request received\n", name);
if ( !debug ) syslog(LOG_INFO, "sandbox JP import request received");
ret = 0;
if ( parse_msg(msg, tab) < 0 ) {
- dprintf(("[%s] Wrong format of message!\n", name));
+ dprintf("[%s] Wrong format of message!\n", name);
if ( !debug ) syslog(LOG_ERR, "Wrong format of message");
ret = 0;
} else do {
su_in.name = NULL;
su_in.commitBefore = 1000 + time(NULL);
su_in.contentType = "tar/lb";
- dprintf(("[%s] Importing LB sandbox tar file '%s'\n", name, tab[_file].val));
+ dprintf("[%s] Importing LB sandbox tar file '%s'\n", name, tab[_file].val);
if ( !debug ) syslog(LOG_INFO, "Importing LB sandbox tar file '%s'\n", msg);
ret = soap_call___jpsrv__StartUpload(soap, tab[_jpps].val?:jpps, "", &su_in, &su_out);
ret = check_soap_fault(soap, ret);
/* XXX: grrrrrrr! test it!!!*/
// if ( (ret = check_soap_fault(soap, ret)) ) break;
- dprintf(("[%s] Destination: %s\n\tCommit before: %s\n", name, su_out.destination, ctime(&su_out.commitBefore)));
+ dprintf("[%s] Destination: %s\n\tCommit before: %s\n", name, su_out.destination, ctime(&su_out.commitBefore));
if ( (fhnd = open(tab[_file].val, O_RDONLY)) < 0 ) {
- dprintf(("[%s] Can't open sandbox tar file: %s\n", name, tab[_file].val));
+ dprintf("[%s] Can't open sandbox tar file: %s\n", name, tab[_file].val);
if ( !debug ) syslog(LOG_ERR, "Can't open sandbox tar file: %s", tab[_file].val);
ret = 1;
break;
}
if ( (ret = gftp_put_file(su_out.destination, fhnd)) ) break;
close(fhnd);
- dprintf(("[%s] File sent, commiting the upload\n", name));
+ dprintf("[%s] File sent, commiting the upload\n", name);
cu_in.destination = su_out.destination;
ret = soap_call___jpsrv__CommitUpload(soap, tab[_jpps].val?:jpps, "", &cu_in, &empty);
if ( (ret = check_soap_fault(soap, ret)) ) break;
- dprintf(("[%s] Dump upload succesfull\n", name));
+ dprintf("[%s] Dump upload succesfull\n", name);
} while (0);
edg_wll_MaildirTransEnd(sandbox_mdir, fname, ret? LBMD_TRANS_FAILED_RETRY: LBMD_TRANS_OK);
}
-
-static int check_soap_fault(struct soap *soap, int err)
-{
- struct SOAP_ENV__Detail *detail;
- struct jptype__genericFault *f;
- char *reason,
- indent[200] = " ";
-
-
- switch ( err ) {
- case SOAP_OK:
- dprintf(("[%s] ok\n", name));
- break;
-
- case SOAP_FAULT:
- case SOAP_SVR_FAULT:
- if (soap->version == 2) {
- detail = soap->fault->SOAP_ENV__Detail;
- reason = soap->fault->SOAP_ENV__Reason;
- } else {
- detail = soap->fault->detail;
- reason = soap->fault->faultstring;
- }
- dprintf(("[%s] %s\n", name, reason));
- if ( !debug ) syslog(LOG_ERR, "%s", reason);
- assert(detail->__type == SOAP_TYPE__genericFault);
-#if GSOAP_VERSION >=20700
- f = ((struct _genericFault *) detail->fault) -> jpelem__genericFault;
-#else
- f = ((struct _genericFault *) detail->value) -> jpelem__genericFault;
-#endif
- while (f) {
- dprintf(("[%s] %s%s: %s (%s)\n",
- name, indent,
- f->source, f->text, f->description));
- if ( !debug ) syslog(LOG_ERR, "%s%s: %s (%s)",
- reason, f->source, f->text, f->description);
- f = f->reason;
- strcat(indent, " ");
- }
- return -1;
-
- default: soap_print_fault(soap,stderr);
- return -1;
- }
-
- return 0;
-}
-
/** Parses every line looking for pattern string and stores the value into
* the given variable
*
{
if ( err != GLOBUS_SUCCESS ) {
char *tmp = globus_object_printable_to_string(err);
- dprintf(("[%s] Error in callback: %s\n", name, tmp));
+ dprintf("[%s] Error in callback: %s\n", name, tmp);
if ( !debug ) syslog(LOG_ERR, "Error in callback: %s", tmp);
gError = GLOBUS_TRUE;
globus_libc_free(tmp);
int rc;
globus_mutex_lock(&gLock);
if ( (rc = read(*((int *)user_arg), gBuffer, BUFSZ)) < 0 ) {
- dprintf(("[%s] Error reading dump file\n", name));
+ dprintf("[%s] Error reading dump file\n", name);
if ( !debug ) syslog(LOG_ERR, "Error reading dump file");
gDone = GLOBUS_TRUE;
gError = GLOBUS_TRUE;
globus_ftp_client_handleattr_t hnd_attr;
#define put_file_err(errs) { \
- dprintf(("[%s] %s\n", name, errs)); \
+ dprintf("[%s] %s\n", name, errs); \
if ( !debug ) syslog(LOG_ERR, errs); \
return 1; \
}
if ( globus_ftp_client_put(
&hnd, url, &op_attr,
GLOBUS_NULL, gftp_done_cb, (void *)&fhnd) != GLOBUS_SUCCESS) {
- dprintf(("[%s] Could not start file put\n", name));
+ dprintf("[%s] Could not start file put\n", name);
if ( !debug ) syslog(LOG_ERR, "Could not start file put");
gError = GLOBUS_TRUE;
gDone = GLOBUS_TRUE;
int rc;
globus_mutex_lock(&gLock);
if ( (rc = read(fhnd, gBuffer, BUFSZ)) < 0 ) {
- dprintf(("[%s] Error reading dump file\n", name));
+ dprintf("[%s] Error reading dump file\n", name);
if ( !debug ) syslog(LOG_ERR, "Error reading dump file");
gDone = GLOBUS_TRUE;
gError = GLOBUS_TRUE;