[Fedora-directory-commits] adminserver/include/libdsa dsalib.h, NONE, 1.1 dsalib_pw.h, NONE, 1.1 dsalib_schema.h, NONE, 1.1

Noriko Hosoi (nhosoi) fedora-directory-commits at redhat.com
Wed Jun 13 01:37:19 UTC 2007


Author: nhosoi

Update of /cvs/dirsec/adminserver/include/libdsa
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv11558/include/libdsa

Added Files:
	dsalib.h dsalib_pw.h dsalib_schema.h 
Log Message:
Resolves: #237356
Summary: Move DS Admin Code into Admin Server (Comment #54 -- adminserver side)
Description: moving DS task CGIs to the adminserver with libdsa.



--- NEW FILE dsalib.h ---
/** BEGIN COPYRIGHT BLOCK
 * This Program is free software; you can redistribute it and/or modify it under
 * the terms of the GNU General Public License as published by the Free Software
 * Foundation; version 2 of the License.
 * 
 * This Program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License along with
 * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
 * Place, Suite 330, Boston, MA 02111-1307 USA.
 * 
 * In addition, as a special exception, Red Hat, Inc. gives You the additional
 * right to link the code of this Program with code not covered under the GNU
 * General Public License ("Non-GPL Code") and to distribute linked combinations
 * including the two, subject to the limitations in this paragraph. Non-GPL Code
 * permitted under this exception must only link to the code of this Program
 * through those well defined interfaces identified in the file named EXCEPTION
 * found in the source code files (the "Approved Interfaces"). The files of
 * Non-GPL Code may instantiate templates or use macros or inline functions from
 * the Approved Interfaces without causing the resulting work to be covered by
 * the GNU General Public License. Only Red Hat, Inc. may make changes or
 * additions to the list of Approved Interfaces. You must obey the GNU General
 * Public License in all respects for all of the Program code and other code used
 * in conjunction with the Program except the Non-GPL Code covered by this
 * exception. If you modify this file, you may extend this exception to your
 * version of the file, but you are not obligated to do so. If you do not wish to
 * provide this exception without modification, you must delete this exception
 * statement from your version and license this file solely under the GPL without
 * exception. 
 * 
 * 
 * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
 * Copyright (C) 2005 Red Hat, Inc.
 * All rights reserved.
 * END COPYRIGHT BLOCK **/

#ifdef HAVE_CONFIG_H
#  include <config.h>
#endif


#ifndef __dsalib_h
#define __dsalib_h

#include <stdio.h>
#include <time.h>
#include <stdarg.h>
#ifdef HPUX
#include <limits.h> /* for PATH_MAX */
#endif

/* error types */
#define DS_FILE_ERROR              0
#define DS_MEMORY_ERROR            1
#define DS_SYSTEM_ERROR            2
#define DS_INCORRECT_USAGE         3
#define DS_ELEM_MISSING            4
#define DS_REGISTRY_DATABASE_ERROR 5
#define DS_NETWORK_ERROR           6
#define DS_GENERAL_FAILURE         7
#define DS_WARNING                 8

/* The upper bound on error types */
#define DS_MAX_ERROR               9

/* The default error type (in case something goes wrong */
#define DS_DEFAULT_ERROR           3

#ifndef BIG_LINE
#define	BIG_LINE	1024
#endif
#ifndef PATH_MAX
#if defined( _WIN32 )
#define PATH_MAX _MAX_PATH
#else
#define PATH_MAX 256
#endif /* _WIN32 */
#endif /* PATH_MAX */
#ifndef HTML_ERRCOLOR
#define HTML_ERRCOLOR "#AA0000"
#endif
#ifndef CONTENT_NAME
#define CONTENT_NAME "content"
#endif

/* config file/path info */
#define DS_CONFIG_DIR      "DS_CONFIG_DIR"
#define DS_CONFIG_FILE     "dse.ldif"
#define DS_ORIGCONFIG_FILE "dse_original.ldif"

#define DS_CONFIG_LOCKDIR  "nsslapd-lockdir:"
#define DS_CONFIG_ERRLOG   "nsslapd-errorlog:"

#ifdef XP_UNIX

#define FILE_PATHSEP  '/'
#define FILE_PATHSEPP "/"
#define FILE_PARENT   "../"
#define WSACleanup()

#elif defined(XP_WIN32)

#define FILE_PATHSEP  '/'
#define FILE_PATHSEPP "\\\\"
#define FILE_PARENT   "..\\"

#endif /* XP_WIN32 */

#define PATH_SIZE 1024
#define ERR_SIZE 8192

/* 
   NT doesn't strictly need these, but the libadmin API which is emulated
   below uses them.
 */
#define NEWSCRIPT_MODE 0755
#define NEWFILE_MODE 0644
#define NEWDIR_MODE 0755

#if defined( XP_WIN32 )
#define DS_EXPORT_SYMBOL   __declspec( dllexport ) 
#else
#define DS_EXPORT_SYMBOL  
#endif

#if defined( XP_WIN32 )
#define ENQUOTE "\""
#else
#define ENQUOTE ""
#endif

#ifndef FILE_SEP
#ifdef XP_WIN32
  #define FILE_SEP '\\'
#else
  #define FILE_SEP '/'
#endif
#endif

#if defined( XP_WIN32 )
  #define PATH_FOR_PLATFORM(_path) ds_unixtodospath(_path)
#else
  #define PATH_FOR_PLATFORM(_path)
#endif

#define START_SCRIPT "start-slapd"
#define RESTART_SCRIPT "restart-slapd"
#define STOP_SCRIPT "stop-slapd"

#if defined( XP_WIN32 )
#define SLAPD_NAME "slapd"
#else
#define SLAPD_NAME "ns-slapd"
#endif

#define MOCHA_NAME "JavaScript"

/*
 * Return values from ds_get_updown_status()
 */
#define	DS_SERVER_UP		1
#define	DS_SERVER_DOWN		0
#define	DS_SERVER_UNKNOWN	-1
/*
 * Return values from ds_bring_up_server()
 */
#define	DS_SERVER_ALREADY_UP	-2
#define	DS_SERVER_ALREADY_DOWN	-3
#define	DS_SERVER_PORT_IN_USE		-4
#define	DS_SERVER_MAX_SEMAPHORES	-5
#define	DS_SERVER_CORRUPTED_DB		-6
#define	DS_SERVER_NO_RESOURCES		-7
#define	DS_SERVER_COULD_NOT_START	-8

/*
 * Other return values
 */
#define DS_UNKNOWN_ERROR            -1
#define DS_NO_SERVER_ROOT          -10
#define DS_CANNOT_EXEC             -11
#define DS_CANNOT_OPEN_STAT_FILE   -12
#define DS_NULL_PARAMETER          -13
#define DS_SERVER_MUST_BE_DOWN     -14
#define DS_CANNOT_OPEN_BACKUP_FILE -15
#define DS_NOT_A_DIRECTORY         -16
#define DS_CANNOT_CREATE_DIRECTORY -17
#define DS_CANNOT_OPEN_LDIF_FILE   -18
#define DS_IS_A_DIRECTORY          -19
#define DS_CANNOT_CREATE_FILE      -20
#define DS_UNDEFINED_VARIABLE      -21
#define DS_NO_SUCH_FILE            -22
#define DS_CANNOT_DELETE_FILE      -23
#define DS_UNKNOWN_SNMP_COMMAND    -24
#define DS_NON_NUMERIC_VALUE       -25
#define DS_NO_LOGFILE_NAME         -26
#define DS_CANNOT_OPEN_LOG_FILE    -27
#define DS_HAS_TOBE_READONLY_MODE  -28
#define DS_INVALID_LDIF_FILE       -29

/*
 * Types of config files.
 */
#define	DS_REAL_CONFIG	1
#define	DS_TMP_CONFIG	2

/*
 * Maximum numeric value we will accept in admin interface
 * We may at some point need per-option bounds, but for now,
 * there's just one global maximum.
 */
#define	DS_MAX_NUMERIC_VALUE	4294967295	/* 2^32 - 1 */

/* Use our own macro for rpt_err, so we can put our own error code in
   NMC_STATUS */
#undef rpt_err
#define rpt_err(CODE, STR1, STR2, STR3) \
                     fprintf( stdout, "NMC_ErrInfo: %s\n", (STR1) ); \
                     fprintf( stdout, "NMC_STATUS: %d\n", CODE )

/*
 * Flags for ds_display_config()
 */
#define DS_DISP_HRB     1       /* horizontal line to begin with */
#define DS_DISP_HRE     2       /* horizontal line to end with */
#define DS_DISP_TB      4       /* table begin */
#define DS_DISP_TE      8       /* table end */
#define DS_DISP_EOL     16      /* End Of Line */
#define DS_DISP_NOMT    32      /* display only non empty */
#define DS_DISP_NOIN    64      /* display with no input field */
#define DS_DISP_HELP    128     /* display with a help button */
#define DS_DISP_PLAIN   256     /* No table, no nothin */
#define DS_SIMPLE       (DS_DISP_EOL | DS_DISP_NOIN | DS_DISP_HELP)
 
/*
 * dci_type for ds_cfg_info
 */
#define DS_ATTR_STRING  1
#define DS_ATTR_NUMBER  2
#define DS_ATTR_ONOFF   3
#define DS_ATTR_LIMIT   4       /* a number where -1 is displayed as blank */

struct ds_cfg_info {
        char    *dci_varname;
        char    *dci_display;
        int     dci_type;
        char	*dci_help;
};
 
extern struct ds_cfg_info ds_cfg_info[];

#define LDBM_DATA_SIZE 5

/*ldbm specific backend information*/
struct ldbm_data {
  char  *tv[LDBM_DATA_SIZE][2]; /*type and value*/
};


/*
 * varname for ds_showparam()
 * NOTE: these must be kept in synch with the ds_cfg_info array defined
 * in ../lib/dsalib_conf.c
 */
#define DS_LOGLEVEL     	0
#define DS_REFERRAL     	1
#define DS_AUDITFILE	   	2
#define DS_LOCALHOST    	3
#define DS_PORT			4
#define DS_SECURITY		5
#define DS_SECURE_PORT		6
#define DS_SSL3CIPHERS		7
#define DS_PASSWDHASH		8
#define DS_ACCESSLOG		9
#define DS_ERRORLOG		10
#define DS_ROOTDN		11
#define DS_ROOTPW		12
#define DS_SUFFIX       	13
#define DS_LOCALUSER	14
#define DS_CFG_MAX		15 /* MUST be one greater than the last option */

/* These control how long we wait for the server to start up or shutdown */
#define SERVER_START_TIMEOUT 600 /* seconds */
#define SERVER_STOP_TIMEOUT SERVER_START_TIMEOUT /* same as start timeout */

typedef int (*DS_RM_RF_ERR_FUNC)(const char *path, const char *op, void *arg);

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
extern DS_EXPORT_SYMBOL char *ds_get_server_root();
extern DS_EXPORT_SYMBOL char *ds_get_install_root();
extern DS_EXPORT_SYMBOL char *ds_get_admserv_based_root();
extern DS_EXPORT_SYMBOL void ds_log_debug_message(char *msg);
extern DS_EXPORT_SYMBOL void ds_log_env(char **envp);
extern DS_EXPORT_SYMBOL int ds_get_updown_status();
extern DS_EXPORT_SYMBOL void ds_print_startstop(int stop);
extern DS_EXPORT_SYMBOL int ds_bring_up_server_install(int verbose,
	char *root, char *errorlog);
extern DS_EXPORT_SYMBOL int ds_bring_up_server(int verbose);
extern DS_EXPORT_SYMBOL char *ds_get_server_name();
extern DS_EXPORT_SYMBOL void ds_send_error(char *errstr, int print_errno);
extern DS_EXPORT_SYMBOL void ds_send_status(char *str);
extern DS_EXPORT_SYMBOL char *ds_get_cgi_var(char *cgi_var_name);
extern DS_EXPORT_SYMBOL	char *ds_get_cgi_var_simple(int index);
extern DS_EXPORT_SYMBOL char *ds_get_cgi_multiple(char *cgi_var_name);
extern DS_EXPORT_SYMBOL char *ds_get_errors_name();
extern DS_EXPORT_SYMBOL char *ds_get_access_name();
extern DS_EXPORT_SYMBOL char *ds_get_audit_name();
extern DS_EXPORT_SYMBOL char *ds_get_logfile_name(int config_type);


extern DS_EXPORT_SYMBOL int ds_bring_down_server();
extern DS_EXPORT_SYMBOL void ds_print_server_status(int isrunning);
extern DS_EXPORT_SYMBOL int ds_get_file_size(char *fileName);
extern DS_EXPORT_SYMBOL void ds_display_tail(char *fileName, int timeOut, 
    int startSeek, char *doneMsg, char *lastLine);
extern DS_EXPORT_SYMBOL int ds_ldif2db_preserve(char *file);
extern DS_EXPORT_SYMBOL int ds_ldif2db(char *file);
extern DS_EXPORT_SYMBOL int ds_ldif2db_backend_subtree(char *file, char *backend, char *subtree);
extern DS_EXPORT_SYMBOL int ds_db2ldif(char *file);
extern DS_EXPORT_SYMBOL int ds_vlvindex(char **backendList, char **attrList);
extern DS_EXPORT_SYMBOL int ds_addindex(char **attrList, char *backendName);
extern DS_EXPORT_SYMBOL int ds_db2ldif_subtree(char *file, char *subtree);
extern DS_EXPORT_SYMBOL char **ds_get_bak_dirs();
extern DS_EXPORT_SYMBOL int ds_db2bak(char *file);
extern DS_EXPORT_SYMBOL int ds_bak2db(char *file);
extern DS_EXPORT_SYMBOL int ds_get_monitor(int frontend, char *port);
extern DS_EXPORT_SYMBOL int ds_get_bemonitor(char *bemdn, char *port);
extern DS_EXPORT_SYMBOL int ds_client_access(char *port, char *dn);
extern DS_EXPORT_SYMBOL char **ds_get_config(int type);
extern DS_EXPORT_SYMBOL char *ds_get_config_dir();
extern DS_EXPORT_SYMBOL void ds_set_config_dir(char *config_dir);
extern DS_EXPORT_SYMBOL char *ds_get_run_dir();
extern DS_EXPORT_SYMBOL void ds_set_run_dir(char *run_dir);
extern DS_EXPORT_SYMBOL char *ds_get_bak_dir();
extern DS_EXPORT_SYMBOL void ds_set_bak_dir(char *bak_dir);
extern DS_EXPORT_SYMBOL char *ds_get_pwenc(char *passwd_hash, char *password);
extern DS_EXPORT_SYMBOL int ds_check_config(int type);
extern DS_EXPORT_SYMBOL int ds_check_pw(char *pwhash, char *pwclear);
extern DS_EXPORT_SYMBOL int ds_set_config(char *change_file_name);
extern DS_EXPORT_SYMBOL char **ds_get_conf_from_file(FILE *conf);
extern DS_EXPORT_SYMBOL void ds_display_config(char **ds_config);
extern DS_EXPORT_SYMBOL char *ds_get_var_name(int varnum);
extern DS_EXPORT_SYMBOL int ds_showparam(char **ds_config, int varname, int phase, 
    int occurance, char *dispname, int size, int maxlength, unsigned flags,
    char *url);
extern DS_EXPORT_SYMBOL void ds_show_pwmaxage(char *value);
extern DS_EXPORT_SYMBOL void ds_show_pwhash(char *value);
extern DS_EXPORT_SYMBOL char *ds_get_value(char **ds_config, char *parm, int phase, int occurance);
extern DS_EXPORT_SYMBOL void ds_apply_cfg_changes(int param_list[], int changed);
extern DS_EXPORT_SYMBOL int ds_commit_cfg_changes();
extern DS_EXPORT_SYMBOL int ds_config_updated();
extern DS_EXPORT_SYMBOL void ds_display_header(char *font_size, char *header);
extern DS_EXPORT_SYMBOL void ds_display_message(char *font_size, char *header);
extern DS_EXPORT_SYMBOL void ds_print_file_form(char *action, char *fileptr, char *full_fileptr);
extern DS_EXPORT_SYMBOL char *ds_get_file_meaning(char *file);
extern DS_EXPORT_SYMBOL void ds_print_file_name(char *fileptr);
extern DS_EXPORT_SYMBOL int ds_file_exists(char *filename);
extern DS_EXPORT_SYMBOL int ds_cp_file(char *sfile, char *dfile, int mode);
extern DS_EXPORT_SYMBOL time_t ds_get_mtime(char *filename);
extern DS_EXPORT_SYMBOL char *ds_get_config_value( int option );
extern DS_EXPORT_SYMBOL char **ds_get_file_list( char *dir );
extern DS_EXPORT_SYMBOL char *ds_get_tmp_dir();
extern DS_EXPORT_SYMBOL void ds_unixtodospath(char *szText);
extern DS_EXPORT_SYMBOL void ds_timetofname(char *szText);
extern DS_EXPORT_SYMBOL void ds_dostounixpath(char *szText);
extern DS_EXPORT_SYMBOL int ds_saferename(char *szSrc, char *szTarget);
extern DS_EXPORT_SYMBOL char *get_specific_help_button(char *help_link, 
    char *dispname, char *helpinfo);

/* Change the DN to a canonical format (in place); return DN. */
extern DS_EXPORT_SYMBOL char* dn_normalize (char* DN);

/* Change the DN to a canonical format (in place) and convert to v3; return DN. */
extern DS_EXPORT_SYMBOL char* dn_normalize_convert (char* DN);

/* if dn contains an unescaped quote return true */
extern DS_EXPORT_SYMBOL int ds_dn_uses_LDAPv2_quoting(const char *dn);

/* Return a copy of the DN, but with optional whitespace inserted. */
extern DS_EXPORT_SYMBOL char* ds_dn_expand (char* DN);

/* Return the value if it can be stored 'as is' in a config file.
   If it requires enquoting, allocate and return its enquoted form.
   The caller should free() the returned pointer iff it's != value. 
   On Windows, we don't want to double up on "\" characters in filespecs,
   so we need to pass in the value type */
extern DS_EXPORT_SYMBOL char* ds_enquote_config_value (int paramnum, char* value);

/*
 * Bring up a javascript alert.
 */
extern DS_EXPORT_SYMBOL void ds_alert_user(char *header, char *message);

/* Construct and return the DN that corresponds to the give DNS name.
   The caller should free() the returned pointer. */
extern DS_EXPORT_SYMBOL char* ds_DNS_to_DN (char* DNS);

/* Construct and return the DN of the LDAP server's own entry.
   The caller must NOT free() the returned pointer. */
extern DS_EXPORT_SYMBOL char* ds_get_config_DN (char** ds_config);

/* Encode characters, as described in RFC 1738 section 2.2,
   if they're 'unsafe' (as defined in RFC 1738), or '?' or
   <special> (as defined in RFC 1779).
   The caller should free() the returned pointer. */
extern DS_EXPORT_SYMBOL char* ds_URL_encode (const char*);

/* Decode characters, as described in RFC 1738 section 2.2.
   The caller should free() the returned pointer. */
extern DS_EXPORT_SYMBOL char* ds_URL_decode (const char*);

/* Encode all characters, even if 'safe' */
extern DS_EXPORT_SYMBOL char* ds_encode_all (const char*);

/* Change the effective UID and GID of this process to
   those associated with the given localuser (if any). */
extern DS_EXPORT_SYMBOL char* ds_become_localuser_name (char* localuser);

/* Change the effective UID and GID of this process to
   those associated with ds_config's localuser (if any). */
extern DS_EXPORT_SYMBOL char* ds_become_localuser (char** ds_config);

/* Change the effective UID and GID of this process back to
   what they were before calling ds_become_localuser(). */
extern DS_EXPORT_SYMBOL char* ds_become_original();

extern DS_EXPORT_SYMBOL char* ds_makeshort(char *filepath);

extern DS_EXPORT_SYMBOL int ds_search_file(char *filename, char *searchstring, char **returnstring);

/* Display an error to the user and exit from a CGI */
extern DS_EXPORT_SYMBOL void ds_report_error(int type, char *errmsg, char *details);

/* Display a warning to the user */
extern DS_EXPORT_SYMBOL void ds_report_warning(int type, char *errmsg, char *details);

/* These functions are used by the program to alter the output behaviour
if not executing in a CGI context */
extern DS_EXPORT_SYMBOL int ds_get_formatted_output(void);
extern DS_EXPORT_SYMBOL void ds_set_formatted_output(int val);

/* show a message to be parsed by the non-HTML front end */
extern DS_EXPORT_SYMBOL void ds_show_message(const char *message);

/* show a key/value pair to be parsed by the non-HTML front end */
extern DS_EXPORT_SYMBOL void ds_show_key_value(char *key, char *value);

extern DS_EXPORT_SYMBOL void ds_submit(char *helptarget) ;
extern DS_EXPORT_SYMBOL char *ds_get_helpbutton(char *topic);

extern DS_EXPORT_SYMBOL void alter_startup_line(char *startup_line);

extern DS_EXPORT_SYMBOL int ds_dir_exists(char *fn);
extern DS_EXPORT_SYMBOL int ds_mkdir(char *dir, int mode);
extern DS_EXPORT_SYMBOL char *ds_mkdir_p(char *dir, int mode);
extern DS_EXPORT_SYMBOL char *ds_salted_sha1_pw_enc (char* pwd);
extern DS_EXPORT_SYMBOL char * ds_escape_for_shell( char *s );

extern DS_EXPORT_SYMBOL char **ds_string_to_vec(char *s);

extern DS_EXPORT_SYMBOL char *ds_system_errmsg(void);

extern DS_EXPORT_SYMBOL int ds_exec_and_report(char *cmd);

/* remove a directory hierarchy - if the error function is given, it will be called upon
   error (e.g. directory not readable, cannot remove file, etc.) - if the callback function
   returns 0, this means to abort the removal, otherwise, continue
*/
extern DS_EXPORT_SYMBOL int ds_rm_rf(const char *dir, DS_RM_RF_ERR_FUNC ds_rm_rf_err_func, void *arg);
/*
  remove a registry key and report an error message if unsuccessful
*/
extern DS_EXPORT_SYMBOL int ds_remove_reg_key(void *base, const char *format, ...);
#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* __dsalib_h */


--- NEW FILE dsalib_pw.h ---
/** BEGIN COPYRIGHT BLOCK
 * This Program is free software; you can redistribute it and/or modify it under
 * the terms of the GNU General Public License as published by the Free Software
 * Foundation; version 2 of the License.
 * 
 * This Program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License along with
 * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
 * Place, Suite 330, Boston, MA 02111-1307 USA.
 * 
 * In addition, as a special exception, Red Hat, Inc. gives You the additional
 * right to link the code of this Program with code not covered under the GNU
 * General Public License ("Non-GPL Code") and to distribute linked combinations
 * including the two, subject to the limitations in this paragraph. Non-GPL Code
 * permitted under this exception must only link to the code of this Program
 * through those well defined interfaces identified in the file named EXCEPTION
 * found in the source code files (the "Approved Interfaces"). The files of
 * Non-GPL Code may instantiate templates or use macros or inline functions from
 * the Approved Interfaces without causing the resulting work to be covered by
 * the GNU General Public License. Only Red Hat, Inc. may make changes or
 * additions to the list of Approved Interfaces. You must obey the GNU General
 * Public License in all respects for all of the Program code and other code used
 * in conjunction with the Program except the Non-GPL Code covered by this
 * exception. If you modify this file, you may extend this exception to your
 * version of the file, but you are not obligated to do so. If you do not wish to
 * provide this exception without modification, you must delete this exception
 * statement from your version and license this file solely under the GPL without
 * exception. 
 * 
 * 
 * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
 * Copyright (C) 2005 Red Hat, Inc.
 * All rights reserved.
 * END COPYRIGHT BLOCK **/

#ifdef HAVE_CONFIG_H
#  include <config.h>
#endif


#ifndef __dsalib_pw_h
#define __dsalib_pw_h

extern DS_EXPORT_SYMBOL void dsparm_help_button(char *var_name, char *dispname,
	char *helpinfo);
extern DS_EXPORT_SYMBOL LDAP* bind_as_root (char** cfg, char* rootdn, 
	char* rootpw);
extern DS_EXPORT_SYMBOL void get_pw_policy(char*** pValue, char** cfg);
extern DS_EXPORT_SYMBOL void ds_showpw( char** cfg);

#endif /* __dsalib_pw_h */


--- NEW FILE dsalib_schema.h ---
/** BEGIN COPYRIGHT BLOCK
 * This Program is free software; you can redistribute it and/or modify it under
 * the terms of the GNU General Public License as published by the Free Software
 * Foundation; version 2 of the License.
 * 
 * This Program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License along with
 * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
 * Place, Suite 330, Boston, MA 02111-1307 USA.
 * 
 * In addition, as a special exception, Red Hat, Inc. gives You the additional
 * right to link the code of this Program with code not covered under the GNU
 * General Public License ("Non-GPL Code") and to distribute linked combinations
 * including the two, subject to the limitations in this paragraph. Non-GPL Code
 * permitted under this exception must only link to the code of this Program
 * through those well defined interfaces identified in the file named EXCEPTION
 * found in the source code files (the "Approved Interfaces"). The files of
 * Non-GPL Code may instantiate templates or use macros or inline functions from
 * the Approved Interfaces without causing the resulting work to be covered by
 * the GNU General Public License. Only Red Hat, Inc. may make changes or
 * additions to the list of Approved Interfaces. You must obey the GNU General
 * Public License in all respects for all of the Program code and other code used
 * in conjunction with the Program except the Non-GPL Code covered by this
 * exception. If you modify this file, you may extend this exception to your
 * version of the file, but you are not obligated to do so. If you do not wish to
 * provide this exception without modification, you must delete this exception
 * statement from your version and license this file solely under the GPL without
 * exception. 
 * 
 * 
 * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
 * Copyright (C) 2005 Red Hat, Inc.
 * All rights reserved.
 * END COPYRIGHT BLOCK **/

#ifdef HAVE_CONFIG_H
#  include <config.h>
#endif

/*
 * Routines to parse schema LDIF
 *
 * -atom
 *
 */
 
#ifndef __DSALIB_SCHEMA_H
#define __DSALIB_SCHEMA_H__



/************************************************************************

 BNF for attributes and objectclasses:

 AttributeTypeDescription = "(" whsp
            numericoid whsp              ; AttributeType identifier
          [ "NAME" qdescrs ]             ; name used in AttributeType
          [ "DESC" qdstring ]            ; description
          [ "OBSOLETE" whsp ]
          [ "SUP" woid ]                 ; derived from this other 
                                         ; AttributeType
          [ "EQUALITY" woid              ; Matching Rule name
          [ "ORDERING" woid              ; Matching Rule name
          [ "SUBSTR" woid ]              ; Matching Rule name 
          [ "SYNTAX" whsp noidlen whsp ] ; see section 4.3
          [ "SINGLE-VALUE" whsp ]        ; default multi-valued
          [ "COLLECTIVE" whsp ]          ; default not collective
          [ "NO-USER-MODIFICATION" whsp ]; default user modifiable
          [ "USAGE" whsp AttributeUsage ]; default user applications
          whsp ")"
    


 ObjectClassDescription = "(" whsp
          numericoid whsp      ; ObjectClass identifier
          [ "NAME" qdescrs ]
          [ "DESC" qdstring ]
          [ "OBSOLETE" whsp ]
          [ "SUP" oids ]       ; Superior ObjectClasses
          [ ( "ABSTRACT" / "STRUCTURAL" / "AUXILIARY" ) whsp ] 
                               ; default structural
          [ "MUST" oids ]      ; AttributeTypes
          [ "MAY" oids ]       ; AttributeTypes
      whsp ")"


************************************************************************/


/* 
 * ds_check_valid_oid: check to see if an oid is valid.
 * Oids should only contain digits and dots.
 *
 * returns 1 if valid, 0 if not
 */

DS_EXPORT_SYMBOL int ds_check_valid_oid (char *oid);


/*
 * ds_check_valid_name: check to see if an attribute name or an objectclass
 * name is valid. A valid name contains only digits, letters, or hyphens 
 *
 * returns 1 if valid, 0 if not
 *
 */

DS_EXPORT_SYMBOL int ds_check_valid_name (char *name);

/*
 * ds_get_oc_desc: 
 *
 * Input   : pointer to string containing an ObjectClassDescription
 * Returns : pointer to string containing objectclass DESC
 *
 * The caller must free the return value
 *
 */

DS_EXPORT_SYMBOL char * ds_get_oc_desc (char *oc);


/*
 * ds_get_oc_name: 
 *
 * Input  : pointer to string containing an ObjectClassDescription
 * Returns: pointer to string containing objectclass name.
 *
 * The caller must free the return value
 *
 */

DS_EXPORT_SYMBOL char *ds_get_oc_name (char *o);


/*
 * ds_get_attr_name:
 *
 * Input  : pointer to string containing an AttributeTypeDescription
 * Returns: pointer to string containing an attribute name.
 *
 * The caller must free the return value
 *
 */

DS_EXPORT_SYMBOL char *ds_get_attr_name (char *a);
  


/*
 * ds_get_oc_superior:
 *
 * Input  : pointer to string containing an ObjectClassDescription 
 * Returns: pointer to string containing the objectclass's SUP (superior/parent)
 *          objectclass
 *
 * The caller must free the return value
 *
 */

DS_EXPORT_SYMBOL char *ds_get_oc_superior (char *o);


/*
 * ds_get_attr_desc: 
 *
 * Input  : Pointer to string containing an AttributeTypeDescription
 * Returns: Pointer to string containing the attribute's description
 *
 * The caller must free the return value
 *
 */

DS_EXPORT_SYMBOL char *ds_get_attr_desc (char *a);


/*
 * ds_get_attr_syntax: 
 *
 * Input:   Pointer to string containing an AttributeTypeDescription
 * Returns: Pointer to string containing the attribute's syntax
 *
 * The caller must free the return value
 *
 */

DS_EXPORT_SYMBOL char *ds_get_attr_syntax (char *a);


/*
 * ds_get_attr_oid: 
 * 
 * Input  : Pointer to string containing an AttributeTypeDescription
 * Returns: Pointer to string containing an attribute's  oid
 *
 * The caller must free the return value
 *
 */
DS_EXPORT_SYMBOL char *ds_get_attr_oid (char *a);


/*
 * ds_get_attr_name: 
 *
 * Input  : Pointer to string containing an AttributeTypeDescription
 * Returns: Pointer to string containing the attribute's name
 *
 * The caller must free the return value
 *
 */

DS_EXPORT_SYMBOL char *ds_get_attr_name (char *a);



/*
 * syntax_oid_to_english: convert an attribute syntax oid to something more
 *                        human readable
 *
 * Input  : string containing numeric OID for a attribute syntax 
 * Returns: Human readable string
 */


DS_EXPORT_SYMBOL char *syntax_oid_to_english (char *oid);


/* StripSpaces: Remove all leading and trailing spaces from a string */

DS_EXPORT_SYMBOL char *StripSpaces (char **s);


/* ds_print_required_attrs:
 *
 * input: pointer to string containing an ObjectClassDescription
 *
 * prints JavaScript array containing the required attributes of an objectclass
 * The array name is oc_<objectclass name>_requires
 */

DS_EXPORT_SYMBOL void ds_print_required_attrs (char *o);


/* ds_print_allowed_attrs:
 *
 * input: pointer to string containing an ObjectClassDescription
 *
 * prints JavaScript array containing the allowed attributes of an objectclass
 * The array name is oc_<objectclass name>_allows
 */
DS_EXPORT_SYMBOL void ds_print_allowed_attrs (char *o);


/* ds_print_oc_oid:
 *
 * input: pointer to string containing an ObjectClassDescription
 *
 * prints JavaScript string containing an objectclass oid
 * The variable name is oc_<objectclass name>_oid
 */

DS_EXPORT_SYMBOL void ds_print_oc_oid (char *o);

/* ds_print_oc_superior:
 *
 * input: pointer to string containing an ObjectClassDescription
 *
 * prints JavaScript string containing an objectclass superior
 * The variable name is oc_<objectclass name>_superior
 */

DS_EXPORT_SYMBOL void ds_print_oc_superior (char *o); 
		   

/* underscore2hyphen: 
 *   transform underscores to hyphens in a string 
 */

DS_EXPORT_SYMBOL char *underscore2hyphen (char *src);

/* hyphen2underscore: 
 *  transform hyphens to underscores in a string 
 */

DS_EXPORT_SYMBOL char *hyphen2underscore (char *src);


#endif /* __DSALIB_SCHEMA_H__  */




More information about the Fedora-directory-commits mailing list