diff options
Diffstat (limited to 'ldap/admin/src/ds_ldif2db.c')
| -rw-r--r-- | ldap/admin/src/ds_ldif2db.c | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/ldap/admin/src/ds_ldif2db.c b/ldap/admin/src/ds_ldif2db.c new file mode 100644 index 00000000..f98c47da --- /dev/null +++ b/ldap/admin/src/ds_ldif2db.c @@ -0,0 +1,103 @@ +/** BEGIN COPYRIGHT BLOCK + * Copyright 2001 Sun Microsystems, Inc. + * Portions copyright 1999, 2001-2003 Netscape Communications Corporation. + * All rights reserved. + * END COPYRIGHT BLOCK **/ +/* + * ds_ldif2db.c: Converts an ldif file into a database. + * + * Anil Bhavnani + * Removed all HTML output for DS 4.0: Rob Weltman + */ + +#include <stdio.h> +#include <stdlib.h> +#include "libadminutil/admutil.h" +#include "dsalib.h" +#include "init_ds_env.h" +#include <string.h> + +int main(int argc, char *argv[]) +{ + int isrunning; + char *filename = NULL; + char *saveconfig = NULL; + int preserve; + int status; + + setbuf(stdout, 0); +#ifdef DEBUG_CGI + freopen("\\tmp\\stderr.out", "w", stderr); +#else + dup2(fileno(stdout), fileno(stderr)); +#endif /* DEBUG_CGI */ + fprintf(stdout, "Content-type: text/html\n\n"); + + if ( init_ds_env() ) + return 1; + + /* + * Get value of the "filename" variable. + */ + filename = ds_get_cgi_var("filename"); + if ( (NULL == filename) || (strlen(filename) < 1) ) { + rpt_err( DS_UNDEFINED_VARIABLE, "filename", NULL, NULL ); + return 1; + } + +#ifdef DEBUG_CGI + fprintf(stderr, "filename=%s\n", filename); +#endif /* DEBUG_CGI */ + + /* + * Get value of the "saveconfig" variable. + */ + saveconfig = ds_get_cgi_var("saveconfig"); + preserve = ( (saveconfig == NULL) || !(strcmp(saveconfig,"true")) ); + +#ifdef DEBUG_CGI + fprintf(stderr, "preserve=%d\n", preserve); +#endif /* DEBUG_CGI */ + + /* Check if server is up */ + isrunning = ds_get_updown_status(); + +#ifdef DEBUG_CGI + fprintf(stderr, "isrunning=%d\n", isrunning); +#endif /* DEBUG_CGI */ + + /* Stop it, if so */ + if (isrunning != DS_SERVER_DOWN) { + status = ds_bring_down_server(); +#ifdef DEBUG_CGI + fprintf(stderr, "status=%d\n", status); +#endif /* DEBUG_CGI */ + if(status != DS_SERVER_DOWN) { + rpt_err( DS_SERVER_MUST_BE_DOWN, filename, NULL, NULL ); + return 1; + } + } + + ds_send_status("creating database ..."); + if ( preserve ) + status = ds_ldif2db_preserve(filename); /* prints errors as needed */ + else + status = ds_ldif2db(filename); /* prints errors as needed */ + + if ( !status ) { + rpt_success("Success! The database has been imported."); + status = 0; + } else { + rpt_err( status, filename, NULL, NULL ); + status = 1; + } + + /* Restart the server if we brought it down */ + if (isrunning != DS_SERVER_DOWN) { + int retval; + if((retval=ds_bring_up_server(1)) != DS_SERVER_UP) { + ds_send_status( "An error occurred during startup" ); + } + } + return status; +} |
