Diff for /libaitcfg/inc/aitpwd.h between versions 1.1.2.4 and 1.8

version 1.1.2.4, 2012/09/18 13:32:48 version 1.8, 2025/01/31 00:03:15
Line 12  terms: Line 12  terms:
 All of the documentation and software included in the ELWIX and AITNET  All of the documentation and software included in the ELWIX and AITNET
 Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>  Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>
   
Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012Copyright 2004 - 2024
         by Michael Pounov <misho@elwix.org>.  All rights reserved.          by Michael Pounov <misho@elwix.org>.  All rights reserved.
   
 Redistribution and use in source and binary forms, with or without  Redistribution and use in source and binary forms, with or without
Line 48  SUCH DAMAGE. Line 48  SUCH DAMAGE.
   
   
 #include <time.h>  #include <time.h>
   #include <sys/types.h>
   #include <elwix.h>
   
   
   #define PWD_CRIT_NAME   0
   #define PWD_CRIT_UID    1
   #define PWD_CRIT_GID    2
   
   
 struct tagAcctDB {  struct tagAcctDB {
         unsigned short  db_ver;          unsigned short  db_ver;
         unsigned char   db_lock;          unsigned char   db_lock;
Line 62  struct tagAcctDB { Line 69  struct tagAcctDB {
         uint64_t        db_since;          uint64_t        db_since;
   
         int             db_h;           /* optional */          int             db_h;           /* optional */
} __packed;} __attribute__((packed));
   
 /* Search callback function, compare to match argument to record match ...   /* Search callback function, compare to match argument to record match ... 
  *  (return: -1 error, 0 not match or 1 match)   *  (return: -1 error, 0 not match or 1 match)
Line 111  typedef enum { ALL = -1,  Line 118  typedef enum { ALL = -1, 
         Shell           Shell 
 } passwd_attr_t;  } passwd_attr_t;
   
   #ifdef __cplusplus
   extern "C" {
   #endif
   
 /*  /*
  * cfgInitPasswd() - Init password root   * cfgInitPasswd() - Init password root
  *   *
 * @pwd = Password root * return: NULL error or !=NULL allocated password root
 * return: -1 error or 0 ok 
  */   */
int cfgInitPasswd(pwd_root_t * __restrict pwd);pwd_root_t *cfgInitPasswd();
 /*  /*
    * cfgEndPasswd() - Free resources & password root
    *
    * @ppwd = Password root
    * return: none
    */
   void cfgEndPasswd(pwd_root_t **ppwd);
   /*
  * cfgLoadPasswd() - Load passwords from file   * cfgLoadPasswd() - Load passwords from file
  *   *
  * @pwdName = Passwords filename   * @pwdName = Passwords filename
Line 175  int cfgWritePasswd(FILE *f, pwd_root_t * __restrict pw Line 191  int cfgWritePasswd(FILE *f, pwd_root_t * __restrict pw
  */   */
 int cfgConcatPasswd(pwd_root_t * __restrict pwd, pwd_root_t * __restrict add_pwd);  int cfgConcatPasswd(pwd_root_t * __restrict pwd, pwd_root_t * __restrict add_pwd);
   
 #if 0  
 /*  /*
 * pwdFreeValue() Free passwd_t value * cfgAuthPasswd() - Authenticate user against passwords db
 * @ppwd = User object *
 * @idx = Index of attribute, if ALL == idx is free all structure * @pwd = Password root
 * return: 0 ok, -1 error * @csName = Username
*/ * @csPass = Password
inline int pwdFreeValue(passwd_t * __restrict ppwd, passwd_attr_t idx); * return: =NULL deny or !=NULL allow
/* */
 * pwdSetValue() Set passwd_t valueconst struct tagUser *cfgAuthPasswd(pwd_root_t * __restrict pwd, 
 * @ppwd = User object                const char *csName, const char *csPass);
 * @idx = Index of attribute, if ALL == idx clean User object and set username! 
 * @Value = Value to set 
 * return: number of fields in passwd_t; -1 error:: can`t set passwd_t 
*/ 
inline int pwdSetValue(passwd_t * __restrict ppwd, passwd_attr_t idx, unsigned char *Value); 
/* 
 * pwdGetValue() Get passwd_t value 
 * @pwd = User object 
 * @idx = Index of attribute, if ALL == idx is error! 
 * @Value = Value to get 
 * @valLen = Size of Value string 
 * return: number of fields in passwd_t; -1 error:: can`t get passwd_t 
*/ 
inline int pwdGetValue(passwd_t __restrict pwd, passwd_attr_t idx, unsigned char *Value, int valLen); 
   
   
 /*  /*
 * pwd_FindAttribute() Find by attribute position in user array * cfg_findPasswdBy() - Find user by criteria position in list
 * @pwd = User array *
 * @idx = Index of attribute, if ALL == idx return number of user array elements * @pwd = Password root
 * @csAttr = User attribute * @criteria = Search criteria [PWD_CRIT_NAME|PWD_CRIT_UID|PWD_CRIT_GID]
 * return: 0 not found item; -1 error: null parameters; >0 position in array + 1 * @arg1 = Username | UID | GID
*/ * return: NULL not found item or error and !=NULL found item
inline int pwd_FindAttribute(passwd_t __restrict pwd, passwd_attr_t idx, const unsigned char *csAttr); 
/* 
 * pwd_SetAttribute() Set user in array or add new user if not exists 
 * @ppwd = User array 
 * @idx = Index of attribute to set 
 * @val = User structure for setup 
 * return: 0 nothing changed, -1 error: not enough memory; 1 find and update item; 2 added new item 
*/ 
int pwd_SetAttribute(passwd_t * __restrict ppwd, passwd_attr_t idx, passwd_t val); 
/* 
 * pwd_GetAttribute() Get user from array, set username in val 
 * @pwd = User array 
 * @idx = Index of attribute to get, if idx == ALL return full element items 
 * @val = User structure 
 * return: 0 not found, -1 error; >0 found at position in array + 1 
*/ 
int pwd_GetAttribute(passwd_t __restrict pwd, passwd_attr_t idx, passwd_t val); 
/* 
 * pwd_UnsetAttribute() Unset user from array and free resources! 
 * @ppwd = User array 
 * @idx = Index of attribute to unset, if idx == ALL unset(delete) all items in element 
 * @val = User structure 
 * return: 0 item not found, -1 error: null parameters; >0 number of elements leave in array 
*/ 
int pwd_UnsetAttribute(passwd_t * __restrict ppwd, passwd_attr_t idx, passwd_t val); 
/* 
 * pwd_Authenticate() Authenticate user, set username and password in val 
 * @pwd = User array 
 * @val = User structure for authenticate, set username & password  
        after authentication fill other fields if exists 
 * return: 0 not found, -1 error; >0 found at position in array + 1 
*/ 
int pwd_Authenticate(passwd_t __restrict pwd, passwd_t val); 
 
 
/* 
 * pwd_openAcct() Open accounting aDat binary database 
 * @csName - DB name 
 * @minR - Minimum records in database 
 * @maxR - Maximum records in database(round-robin db), if 0 unlimited grow 
 * @recSize - Size of record element 
 * @wrapR - If maxR >0 give ability to wrap round-robin db 
 * return: NULL error or !=NULL opened db handle 
  */   */
struct tagAcctDB *pwd_openAcct(const char *csName, unsigned int minR, unsigned int maxR, const struct tagUser *cfg_findPasswdBy(pwd_root_t * __restrict pwd, int criteria, ...);
                size_t recSize, unsigned char wrapR); 
 /*  /*
 * pwd_closeAcct() Close accounting aDat binary database * cfg_unsetPasswd() - Unset item from passwords and free resources
 * @db - DB handle *
 * return: none * @pwd = Password root
  * @criteria = Search criteria [PWD_CRIT_NAME|PWD_CRIT_UID]
  * @arg1 = Username | UID
  * return: 0 item not found, -1 error or 1 removed item
  */   */
void pwd_closeAcct(struct tagAcctDB ** __restrict db);int cfg_unsetPasswd(pwd_root_t * __restrict pwd, int criteria, ...);
 /*  /*
 * pwd_writeAcct() Write accounting record to aDat binary database * cfg_setPasswd() - Set item in password or adding new item if not exists
 * @db - DB handle *
 * @posR - At position number, if db is unlimited grow (-1) write at last free record * @cfg = Password root
 * @rec - Record data * @fields = Following parameters are continuous to certain field
 * return: -1 error or 0 ok * @csName = Username
  * @arg1 = Password
  * @arg2 = UID
  * @arg3 = GID
  * @arg4 = Login class
  * @arg5 = Chage date
  * @arg6 = Expire date
  * @arg7 = Realm
  * @arg8 = Home dir
  * @arg9 = Shell
  * return: 0 nothing changed, -1 error, 1 found and updated item or 2 added new item
  */   */
int pwd_writeAcct(struct tagAcctDB * __restrict db, unsigned int posR, void *rec);int cfg_setPasswd(pwd_root_t * __restrict pwd, passwd_attr_t fields, const char *csName, ...);
 /*  /*
 * pwd_readAcct() Read accounting record from aDat binary database * cfg_getPasswd() - Get item from passwords and return structure from it
 * @db - DB handle *
 * @posR - From position number * @pwd = Password root
 * @rec - Record data buffer * @criteria = Search criteria [PWD_CRIT_NAME|PWD_CRIT_UID]
 * @recsize - Record data buffer size * @arg1 = Username | UID
 * return: -1 error or 0 ok * return: NULL item not found, !=NULL structure found
  */   */
int pwd_readAcct(struct tagAcctDB * __restrict db, unsigned int posR, void *rec, int recsize);const struct tagUser *cfg_getPasswd(pwd_root_t * __restrict pwd, int criteria, ...);
   
/*#ifdef __cplusplus
 * pwd_findAcct() Find accounting record from aDat binary database}
 * @db - DB handle 
 * @from - From position 
 * @to - To position, if 0 search to end-of-file 
 * @func - Check for match callback function 
 * @arg - Argument passthrough to callback as argument for search 
 * return: -1 error, 0 not found or >1 founded at position! (p.s:start from 1) 
 */ 
int64_t pwd_findAcct(struct tagAcctDB * __restrict db, unsigned int from, unsigned int to,  
                cb_acct_f func, void *arg); 
 #endif  #endif
   
   
 #endif  #endif

Removed from v.1.1.2.4  
changed lines
  Added in v.1.8


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>