/* nwdbm.h 25-Apr-00 */ /* (C)opyright (C) 1993,2000 Martin Stover, Marburg, Germany * * 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; either version 2 of the License, or * (at your option) any later version. * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _NWDBM_H_ #define _NWDBM_H_ #define NETOBJ_KEY_SIZE 4 typedef struct { uint32 id; /* Objekt ID */ /* --------------- */ uint8 name[48]; uint16 type; uint8 flags; /* statisch, dynamisch */ uint8 security; } NETOBJ; #define NETIOBJ_KEY_SIZE 50 typedef struct { uint8 name[48]; uint16 type; /* --------------- */ uint32 id; /* Objekt ID */ } NETIOBJ; #define NETPROP_KEY_SIZE 5 typedef struct { uint32 obj_id; /* ID OBJECT */ uint8 id; /* PROPERTY id */ /* --------------- */ uint8 name[16]; uint8 flags; /* statisch, dynamisch */ uint8 security; } NETPROP; #define NETVAL_KEY_SIZE 6 typedef struct { uint32 obj_id; /* ID OBJECT */ uint8 prop_id; /* PROPERTY id */ uint8 segment; /* Segment Nr */ /* --------------- */ uint8 value[128]; /* Inhalt */ } NETVAL; /* Object Flags */ #define O_FL_STAT 0x0 #define O_FL_DYNA 0x1 /* Property Flags */ /* BIT 7 */ #define P_FL_STAT 0x0 #define P_FL_DYNA 0x1 /* BIT 6 */ #define P_FL_ITEM 0x0 #define P_FL_SET 0x2 extern int tells_server_version; extern int password_scheme; extern uint8 *sys_unixname; /* Unixname of SYS: ends with '/' */ extern int sys_unixnamlen; /* len of unixname */ extern int sys_downshift; /* is SYS downshift */ extern uint8 *sys_sysname; /* Name of first Volume, normally SYS */ extern uint32 network_serial_nmbr; extern uint16 network_appl_nmbr; extern int entry8_flags; #define PW_SCHEME_CHANGE_PW 1 #define PW_SCHEME_LOGIN 2 #define PW_SCHEME_GET_KEY_FAIL 4 #define PW_SCHEME_ALLOW_EMPTY_PW 8 /* ** LOGIN_CONTROL structure is an 86 byte structure that contains ** account password information ** Paolo Prandini mst:25-Apr-00 ** */ typedef struct { uint8 accountExpiresYear; uint8 accountExpiresMonth; uint8 accountExpiresDay; uint8 accountExpired; uint8 passwordExpiresYear; uint8 passwordExpiresMonth; uint8 passwordExpiresDay; uint8 passwordGraceLogins; uint8 expirationInterval[2]; /* hi-lo */ uint8 graceReset; uint8 minimumPasswordLength; uint8 maxConcurrentConnections[2]; /* hi-lo */ uint8 timeBitMap[42]; uint8 lastLoginDate[6]; uint8 restrictionFlags; // bit 0=1 disallow pwd change, // bit 1=1 require unique pwd uint8 filler; uint8 maxDiskBlocks[4]; /* hi-lo */ uint8 badLoginCount[2]; /* hi-lo */ uint8 nextResetTime[4]; /* hi-lo */ uint8 badStationAddress[12]; } LOGIN_CONTROL; /* ** USER_DEFAULTS structure is a structure that contains ** default account password information */ typedef struct { uint8 accountExpiresYear; uint8 accountExpiresMonth; uint8 accountExpiresDay; uint8 restrictionFlags; uint8 expirationInterval[2]; /* hi-lo */ uint8 graceReset; uint8 minimumPasswordLength; uint8 maxConcurrentConnections[2]; /* hi-lo */ uint8 timeBitMap[42]; uint8 balance[4]; /* ?? */ uint8 creditLimit[4]; /* ?? */ uint8 maxDiskBlocks[4]; /* hi-lo */ uint8 createHomeDir; } USER_DEFAULTS; /* next routine is in nwbind.c !!!! */ extern int b_acc(uint32 obj_id, int security, int forwrite); extern void sync_dbm(void); extern int nw_get_prop(int object_type, uint8 *object_name, int object_namlen, int segment_nr, uint8 *prop_name, int prop_namlen, uint8 *property_value, uint8 *more_segments, uint8 *property_flags); extern int find_obj_id(NETOBJ *o); extern int scan_for_obj(NETOBJ *o, uint32 last_obj_id, int ignore_rights); extern int nw_delete_obj(NETOBJ *obj); extern int nw_rename_obj(NETOBJ *o, uint8 *newname); extern int nw_change_obj_security(NETOBJ *o, int newsecurity); extern int nw_get_obj(NETOBJ *o); extern int nw_get_prop_val_by_obj_id(uint32 obj_id, int segment_nr, uint8 *prop_name, int prop_namlen, uint8 *property_value, uint8 *more_segments, uint8 *property_flags); extern int nw_get_prop_val(int object_type, uint8 *object_name, int object_namlen, int segment_nr, uint8 *prop_name, int prop_namlen, uint8 *property_value, uint8 *more_segments, uint8 *property_flags); extern int nw_delete_property(int object_type, uint8 *object_name, int object_namlen, uint8 *prop_name, int prop_namlen); extern int nw_is_member_in_set(uint32 obj_id, char *propname, uint32 member_id); extern int nw_is_obj_in_set(int object_type, uint8 *object_name, int object_namlen, uint8 *prop_name, int prop_namlen, int member_type, uint8 *member_name, int member_namlen); extern int nw_add_obj_to_set(int object_type, uint8 *object_name, int object_namlen, uint8 *prop_name, int prop_namlen, int member_type, uint8 *member_name, int member_namlen); extern int nw_delete_obj_from_set(int object_type, uint8 *object_name, int object_namlen, uint8 *prop_name, int prop_namlen, int member_type, uint8 *member_name, int member_namlen); extern int nw_write_prop_value(int object_type, uint8 *object_name, int object_namlen, int segment_nr, int erase_segments, uint8 *prop_name, int prop_namlen, uint8 *property_value); extern int nw_change_prop_security(int object_type, uint8 *object_name, int object_namlen, uint8 *prop_name, int prop_namlen, int prop_security); extern int nw_scan_property(NETPROP *prop, int object_type, uint8 *object_name, int object_namlen, uint8 *prop_name, int prop_namlen, uint32 *last_scan); extern int nw_get_prop_val_str(uint32 q_id, char *propname, uint8 *buff); extern int nw_create_obj(NETOBJ *obj, uint32 wanted_id); extern int nw_obj_has_prop(NETOBJ *obj); extern int nw_create_prop(int object_type, uint8 *object_name, int object_namlen, uint8 *prop_name, int prop_namlen, int prop_flags, int prop_security); extern uint32 nw_new_obj_prop(uint32 wanted_id, char *objname, int objtype, int objflags, int objsecurity, char *propname, int propflags, int propsecurity, char *value, int valuesize, int ever); extern int nw_is_security_equal(uint32 id1, uint32 id2); #define HAVE_SU_RIGHTS(id) ( ((id)==1L) || !nw_is_security_equal(1L, (id))) extern int get_groups_i_m_in(uint32 id, uint32 *gids); extern int get_guid(int *gid, int *uid, uint32 obj_id, uint8 *name); /* mst:25-Apr-00 */ extern int nw_get_login_control(uint32 obj_id, LOGIN_CONTROL *plc); extern int nw_set_login_control(uint32 obj_id, LOGIN_CONTROL *plc); extern int nw_test_passwd(uint32 obj_id, uint8 *vgl_key, uint8 *akt_key); extern int nw_test_unenpasswd(uint32 obj_id, uint8 *password); extern int nw_set_passwd(uint32 obj_id, char *password, int dont_ch); extern int nw_keychange_passwd(uint32 obj_id, uint8 *cryptkey, uint8 *oldpass, int cryptedlen, uint8 *newpass, int id_flags); extern int nw_test_adr_time_access(uint32 obj_id, ipxAddr_t *client_adr); extern int nwdbm_mkdir(char *unixname, int mode, int flags); extern int nwdbm_rmdir(char *path); extern void test_ins_unx_user(uint32 id); extern int test_allow_password_change(uint32 id); extern int nw_fill_standard(char *servername, ipxAddr_t *adr); extern int nw_init_dbm(char *servername, ipxAddr_t *adr); extern void nw_exit_dbm(void); extern int do_export_dbm(char *path); extern int do_import_dbm(char *path); extern int do_export_dbm_to_dir(void); #endif