956 lines
33 KiB
C
956 lines
33 KiB
C
/****************************************************************************
|
|
Source module name: nwlogin.h
|
|
Release %version: 112 %
|
|
|
|
Copyright (c) 1989-1999 Novell, Inc. All Rights Reserved.
|
|
U.S. Patent Number 5,781,724 -- Novell, Inc.
|
|
|
|
THIS WORK IS SUBJECT TO U.S. AND INTERNATIONAL COPYRIGHT LAWS AND
|
|
TREATIES. NO PART OF THIS WORK MAY BE USED, PRACTICED, PERFORMED
|
|
COPIED, DISTRIBUTED, REVISED, MODIFIED, TRANSLATED, ABRIDGED, CONDENSED,
|
|
EXPANDED, COLLECTED, COMPILED, LINKED, RECAST, TRANSFORMED OR ADAPTED
|
|
WITHOUT THE PRIOR WRITTEN CONSENT OF NOVELL, INC. ANY USE OR EXPLOITATION
|
|
OF THIS WORK WITHOUT AUTHORIZATION COULD SUBJECT THE PERPETRATOR TO
|
|
CRIMINAL AND CIVIL LIABILITY.$
|
|
|
|
****************************************************************************/
|
|
/****************************************************************************
|
|
2-6-98 KPW remove PRE_NETWARE_LOGIN event - never used and don't plan to
|
|
2-18-98 KPW added NWLG_RESTART_PRIMARY_LOGIN restartMode
|
|
****************************************************************************/
|
|
#ifndef NWLOGIN_H
|
|
#define NWLOGIN_H
|
|
|
|
#ifndef NTYPES_H
|
|
#include <ntypes.h>
|
|
#endif
|
|
|
|
// MSVC 4.x MSVC 1.52 4.x BC4.x BC5.x
|
|
#if !defined (_WINDOWS_) && !defined(_INC_WINDOWS) && !defined(__WINDOWS_H)
|
|
// take care of a compile error for modules that do not need windows.h
|
|
// but do include nwlogin.h
|
|
typedef nuint HWND;
|
|
#if defined(_WIN64)
|
|
typedef __int64 INT_PTR;
|
|
#else
|
|
typedef _W64 int INT_PTR;
|
|
#endif
|
|
#endif
|
|
|
|
#ifndef NWCALDEF_H
|
|
#include <nwcaldef.h>
|
|
#endif
|
|
|
|
#ifndef __NWDSDEFS_H
|
|
#include <nwdsdefs.h>
|
|
#endif
|
|
|
|
// #if defined (N_ARCH_32)
|
|
#if ! defined ( NWAPIDEF_H )
|
|
#include <nwapidef.h>
|
|
#endif
|
|
// #endif
|
|
|
|
#ifndef _NWDSDC_HEADER_
|
|
#include <nwdsdc.h>
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/*
|
|
Event constants
|
|
Command Line parsing events
|
|
*/
|
|
|
|
#define NWLG_CMD_LINE_PARSING_EVENTS \
|
|
NWLG_EVENT(INITIALIZE,0) \
|
|
NWLG_EVENT(CMD_LINE_SERVICE,1) \
|
|
NWLG_EVENT(CMD_LINE_USER,2) \
|
|
NWLG_EVENT(CMD_LINE_NS,3) \
|
|
NWLG_EVENT(PRESCRIPT_CLS,4) \
|
|
NWLG_EVENT(CMD_LINE_SCRIPT_FILE,5) \
|
|
NWLG_EVENT(CMD_LINE_PROFILE,51) \
|
|
NWLG_EVENT(CMD_LINE_FLAGS,52) \
|
|
NWLG_EVENT(CMD_LINE_ARGS,53) \
|
|
NWLG_EVENT(CMD_LINE_BIND_LOGIN,6) \
|
|
NWLG_EVENT(CMD_LINE_TREE,7) \
|
|
NWLG_EVENT(RESOLVE_USER_NAME,8) \
|
|
NWLG_EVENT(NO_BANNER,9) \
|
|
NWLG_EVENT(CMD_LINE_ARG_DONE,10) \
|
|
NWLG_EVENT(CMD_LINE_HELP,11)
|
|
|
|
/*
|
|
Script related events
|
|
*/
|
|
|
|
#define NWLG_SCRIPT_EVENTS \
|
|
NWLG_EVENT(PRE_SCRIPTS,12) \
|
|
NWLG_EVENT(OPEN_SCRIPT,13) \
|
|
NWLG_EVENT(GET_SCRIPT_LINE,14) \
|
|
NWLG_EVENT(SCRIPT_BREAK,15) \
|
|
NWLG_EVENT(REWIND_SCRIPT,16) \
|
|
NWLG_EVENT(BIND_ATTACH,17) \
|
|
NWLG_EVENT(TERMINATE,18) \
|
|
NWLG_EVENT(CLEAR_SCREEN,19) \
|
|
NWLG_EVENT(DOS_COMSPEC,20) \
|
|
NWLG_EVENT(DS_CONTEXT,21) \
|
|
NWLG_EVENT(DISP_FILE,22) \
|
|
NWLG_EVENT(DOS_BREAK,23) \
|
|
NWLG_EVENT(DOS_VERIFY,24) \
|
|
NWLG_EVENT(DRIVE,25) \
|
|
NWLG_EVENT(EXIT,26) \
|
|
NWLG_EVENT(EXEC,27) \
|
|
NWLG_EVENT(FIRE_PHASERS,28) \
|
|
NWLG_EVENT(DISP_LTIME,29) \
|
|
NWLG_EVENT(MACHINE,30) \
|
|
NWLG_EVENT(MEMBER_OF,31) \
|
|
NWLG_EVENT(NO_DEFAULT,32) \
|
|
NWLG_EVENT(TERM_CMD,33) \
|
|
NWLG_EVENT(PAUSE,34) \
|
|
NWLG_EVENT(DOS_PC_COMPAT,35) \
|
|
NWLG_EVENT(PROFILE,36) \
|
|
NWLG_EVENT(NOTHING,37) \
|
|
NWLG_EVENT(BIND_SCRIPT_SERVER,38) \
|
|
NWLG_EVENT(SET_ENV_VAR,39) \
|
|
NWLG_EVENT(SYNC_TIME_FLAG,40) \
|
|
NWLG_EVENT(DOS_SWAP_PATH,41) \
|
|
NWLG_EVENT(DISP_LINE,42) \
|
|
NWLG_EVENT(INCLUDE,43) \
|
|
NWLG_EVENT(TREE_ATTACH,44) \
|
|
NWLG_EVENT(SWAP_CMD,45) \
|
|
NWLG_EVENT(NO_SWAP_CMD,46) \
|
|
NWLG_EVENT(CHDIR,47) \
|
|
NWLG_EVENT(LOGOUT_ALL,48) \
|
|
NWLG_EVENT(LOGOUT_ONE,49) \
|
|
NWLG_EVENT(CONTINUE,50) \
|
|
NWLG_EVENT(RUN_SCRIPT,60) \
|
|
NWLG_EVENT(POST_SCRIPTS,61) \
|
|
NWLG_EVENT(DISP_BANNER,62) \
|
|
NWLG_EVENT(PWD_EXP_CHK,63) \
|
|
NWLG_EVENT(PWD_EXP_CHK_STAT,64) \
|
|
NWLG_EVENT(PWD_EXP_UPD,65)
|
|
|
|
|
|
/*
|
|
Connection Events
|
|
*/
|
|
#define NWLG_CONN_EVENTS \
|
|
NWLG_EVENT(CONN_GET,90) \
|
|
NWLG_EVENT(CONN_AUTH,91) \
|
|
NWLG_EVENT(CONN_EXPIRED,92) \
|
|
NWLG_EVENT(SYNC_PWD_START,93) \
|
|
NWLG_EVENT(SYNC_PWD_END,94) \
|
|
NWLG_EVENT(SYNC_LIST_BLD,95) \
|
|
NWLG_EVENT(SYNC_LIST_UPD,96) \
|
|
NWLG_EVENT(SYNC_LIST_FREE,97) \
|
|
NWLG_EVENT(PRE_LOGIN,98)
|
|
|
|
/* Internal SYSTEM type message */
|
|
|
|
#define NWLG_SYSTEM_EVENTS \
|
|
NWLG_EVENT(SYSTEM,100) \
|
|
NWLG_EVENT(NETWARE_LOGIN,101) \
|
|
NWLG_EVENT(START_LOGIN,102) \
|
|
NWLG_EVENT(ELSE,190) \
|
|
NWLG_EVENT(END,191) \
|
|
NWLG_EVENT(GOTO,192) \
|
|
NWLG_EVENT(IF,193) \
|
|
NWLG_EVENT(IFDO,194) \
|
|
NWLG_EVENT(LABEL,195) \
|
|
NWLG_EVENT(MAP,196) \
|
|
NWLG_EVENT(SHIFT,197)
|
|
|
|
/*
|
|
Map events
|
|
*/
|
|
/* Individual map events */
|
|
|
|
#define NWLG_MAP_EVENTS \
|
|
NWLG_EVENT(MAP_ADD,200) \
|
|
NWLG_EVENT(MAP_DEL,201) \
|
|
NWLG_EVENT(MAP_CHANGE,202) \
|
|
NWLG_EVENT(MAP_MOVE,203) \
|
|
NWLG_EVENT(MAP_DISP,204) \
|
|
NWLG_EVENT(MAP_MSG,205) \
|
|
NWLG_EVENT(MAP_ERR,206)
|
|
|
|
/* detail map events from parser
|
|
summary events below are passed to event handler
|
|
*/
|
|
|
|
#define NWLG_MAP_DETAIL_EVENTS \
|
|
NWLG_EVENT(MAP_ADD_DRV,210) \
|
|
NWLG_EVENT(MAP_ADD_DRV_TO_SDRV,211) \
|
|
NWLG_EVENT(MAP_ADD_SRCH,212) \
|
|
NWLG_EVENT(MAP_ADD_SRCH_TO_SDRV,213) \
|
|
NWLG_EVENT(MAP_CHG_DRV_TO_SDRV,214) \
|
|
NWLG_EVENT(MAP_CHG_INS_DRV_TO_SDRV,215) \
|
|
NWLG_EVENT(MAP_CHG_SRCH,216) \
|
|
NWLG_EVENT(MAP_DEL_DRV,217) \
|
|
NWLG_EVENT(MAP_DEL_SRCH,218) \
|
|
NWLG_EVENT(MAP_DISP_ALL_DRVS,219) \
|
|
NWLG_EVENT(MAP_DISP_DRV,220) \
|
|
NWLG_EVENT(MAP_DISP_OFF,221) \
|
|
NWLG_EVENT(MAP_DISP_ON,222) \
|
|
NWLG_EVENT(MAP_DISP_SRCH,223) \
|
|
NWLG_EVENT(MAP_ERRORS_OFF,224) \
|
|
NWLG_EVENT(MAP_ERRORS_ON,225) \
|
|
NWLG_EVENT(MAP_INS_SRCH,226) \
|
|
NWLG_EVENT(MAP_INS_SRCH_TO_SDRV,227) \
|
|
NWLG_EVENT(MAP_NEXT_DRV,228)
|
|
|
|
/*
|
|
event types for extended script commands and to introduce some new hooks
|
|
used by Mobile
|
|
*/
|
|
#define NWLG_SCRIPT_EX_EVENTS \
|
|
NWLG_EVENT(CAPTURE_PRINTER,301) \
|
|
NWLG_EVENT(DCACHE_ADD,302) \
|
|
NWLG_EVENT(DCACHE_FIND,303) \
|
|
NWLG_EVENT(DO_GOTO,305) \
|
|
NWLG_EVENT(AVAILABLE_DRIVE,309) \
|
|
NWLG_EVENT(NOTIFY_PARENT_WINDOW,310) \
|
|
NWLG_EVENT(PARSE_SCRIPT_LINE,311) \
|
|
NWLG_EVENT(NOTIFY_LOGIN_NAMES,312) \
|
|
NWLG_EVENT(GET_LOCATION_NAME,314) \
|
|
NWLG_EVENT(GET_FIRST_NETWORK_DRIVE,315)
|
|
|
|
/*
|
|
Event types for communication between extensions and default UI.
|
|
*/
|
|
#define NWLG_EXT_UI_EVENTS \
|
|
NWLG_EVENT(UI_DATA_CHANGED,400) \
|
|
NWLG_EVENT(UI_DC_USERNAME,0x0101) \
|
|
NWLG_EVENT(UI_DC_TREE_LOGIN,0x0201) \
|
|
NWLG_EVENT(UI_DC_TREE,0x0202) \
|
|
NWLG_EVENT(UI_DC_SERVER,0x0203) \
|
|
NWLG_EVENT(UI_DC_BINDERY_CONN,0x0204) \
|
|
NWLG_EVENT(UI_DC_CONTEXT,0x0205) \
|
|
NWLG_EVENT(UI_DC_CLEAR_CONNS,0x0206) \
|
|
NWLG_EVENT(UI_DC_RUN_SCRIPTS,0x0301) \
|
|
NWLG_EVENT(UI_DC_DISPLAY_RESULTS,0x0302) \
|
|
NWLG_EVENT(UI_DC_AUTO_CLOSE,0x0303) \
|
|
NWLG_EVENT(UI_DC_LOGIN_SCRIPT,0x0304) \
|
|
NWLG_EVENT(UI_DC_PROFILE_SCRIPT,0x0305) \
|
|
NWLG_EVENT(UI_DC_VAR,0x0400) \
|
|
NWLG_EVENT(FORGOTTEN_PWD_CLICK,0x0500) \
|
|
NWLG_EVENT(DHCP_CHECK, 0x0501) \
|
|
NWLG_EVENT(UI_DC_MOBILE_PROFILE,0x4101) \
|
|
NWLG_EVENT(UI_DC_CONNECT_OFFLINE,0x4102) \
|
|
NWLG_EVENT(UI_DC_DEBUG_MODE,0x4301) \
|
|
NWLG_EVENT(UI_DC_VERBOSE_MODE,0x4302)
|
|
|
|
#define NWLG_MISC_EVENTS \
|
|
NWLG_EVENT(UNKNOWN,999)
|
|
|
|
#define NWLG_EVENT_LIST \
|
|
NWLG_CMD_LINE_PARSING_EVENTS \
|
|
NWLG_SCRIPT_EVENTS \
|
|
NWLG_CONN_EVENTS \
|
|
NWLG_SYSTEM_EVENTS \
|
|
NWLG_MAP_EVENTS \
|
|
NWLG_MAP_DETAIL_EVENTS \
|
|
NWLG_SCRIPT_EX_EVENTS \
|
|
NWLG_EXT_UI_EVENTS \
|
|
NWLG_MISC_EVENTS \
|
|
|
|
#undef NWLG_EVENT
|
|
#define NWLG_EVENT(name,number) \
|
|
NWLG_##name=number,
|
|
|
|
typedef enum { NWLG_EVENT_LIST } NWLG_Event_t ;
|
|
|
|
/*
|
|
END OF Event constants
|
|
*/
|
|
|
|
/*
|
|
NWLogin Shared Data identifier tags
|
|
*/
|
|
#define NWLG_SD_SERVER 1
|
|
#define NWLG_SD_USER 2
|
|
#define NWLG_SD_NS 3
|
|
#define NWLG_SD_CLS 4
|
|
#define NWLG_SD_SCRIPT_FILE 5
|
|
#define NWLG_SD_BIND_LOGIN 6
|
|
#define NWLG_SD_TREE_NAME 7
|
|
#define NWLG_SD_SWAP_FLAG 8
|
|
#define NWLG_SD_SWAP_PATH 9
|
|
#define NWLG_SD_NB 10
|
|
|
|
#define NWLG_SD_ACCESS_SERVER 11
|
|
#define NWLG_SD_AM_PM 12
|
|
#define NWLG_SD_DAY 13
|
|
#define NWLG_SD_DAY_OF_WEEK 14
|
|
#define NWLG_SD_ENVAR 15
|
|
#define NWLG_SD_FILE_SERVER 16
|
|
#define NWLG_SD_FULL_NAME 17
|
|
#define NWLG_SD_GREETING_TIME 18
|
|
#define NWLG_SD_HOUR 19
|
|
#define NWLG_SD_HOUR24 20
|
|
#define NWLG_SD_LAST_NAME 21
|
|
#define NWLG_SD_LOGIN_NAME 22
|
|
#define NWLG_SD_LOGIN_CONTEXT 23
|
|
#define NWLG_SD_MACHINE 24
|
|
#define NWLG_SD_MINUTE 25
|
|
#define NWLG_SD_MONTH 26
|
|
#define NWLG_SD_MONTH_NAME 27
|
|
#define NWLG_SD_NDAY_OF_YEAR 28
|
|
#define NWLG_SD_NET_ADDRESS 29
|
|
#define NWLG_SD_MAIL_STATUS 30
|
|
#define NWLG_SD_PASSWORD_EXPIRES 31
|
|
#define NWLG_SD_OS_VERSION 32
|
|
#define NWLG_SD_OS_NAME 33
|
|
#define NWLG_SD_REQ_VERSION 34
|
|
#define NWLG_SD_REQ_CONTEXT 35
|
|
#define NWLG_SD_SECOND 36
|
|
#define NWLG_SD_SHORT_YEAR 37
|
|
#define NWLG_SD_SHELL_VERSION 38
|
|
#define NWLG_SD_SHORT_MACHINE 39
|
|
#define NWLG_SD_STATION 40
|
|
#define NWLG_SD_USER_OBJ 41
|
|
#define NWLG_SD_YEAR 42
|
|
#define NWLG_SD_CL_USER 43
|
|
#define NWLG_SD_CL_SERVER 44
|
|
#define NWLG_SD_PROFILE 45
|
|
#define NWLG_SD_PASSWORD 46
|
|
#define NWLG_SD_LOADPATH 47
|
|
#define NWLG_SD_CMD_LINE_FLAGS 48
|
|
#define NWLG_SD_CMD_LINE_ARG 49
|
|
#define NWLG_SD_CONTEXT_HND 50
|
|
#define NWLG_SD_PC_COMPATIBLE 51
|
|
#define NWLG_SD_PRI_CONN_HANDLE 52
|
|
#define NWLG_SD_APP_INSTANCE_HND 53
|
|
#define NWLG_SD_ERROR_LEVEL 54
|
|
#define NWLG_SD_START_INFO 55
|
|
#define NWLG_SD_MULTI_TREE 56
|
|
|
|
/* Extensions to the Shared Data identifier tags for Mobile */
|
|
#define NWLG_SD_DISPLAY_ERRORS 100
|
|
#define NWLG_SD_DISPLAY_MAPPINGS 101
|
|
#define NWLG_SD_PARSED_NAME 102
|
|
#define NWLG_SD_PARSED_STRING 103
|
|
#define NWLG_SD_PARSED_CMD_TYPE 104
|
|
#define NWLG_SD_CL_SERVER_VERSION 105
|
|
#define NWLG_SD_CL_SERVER_TYPE 106
|
|
#define NWLG_SD_CL_TREE 107
|
|
|
|
/*
|
|
END OF NWLogin Shared Data identifier tags
|
|
*/
|
|
|
|
/*
|
|
Error codes
|
|
*/
|
|
|
|
#define NWLG_ERR_VERSION 0xff
|
|
|
|
/*
|
|
Return codes for handlers
|
|
*/
|
|
#define NWLG_OK 0
|
|
#define NWLG_RETRY 1
|
|
#define NWLG_ABORT 2
|
|
#define NWLG_FAIL 3
|
|
#define NWLG_IGNORE 4
|
|
#define NWLG_STOP_CYCLE 5
|
|
#define NWLG_CANCEL 6
|
|
#define NWLG_SHUT_DOWN 7
|
|
#define NWLG_SHUT_DOWN_RESTART 8
|
|
|
|
/*
|
|
END OF Return codes for handlers
|
|
*/
|
|
|
|
#define NWLG_ON N_TRUE
|
|
#define NWLG_OFF N_FALSE
|
|
|
|
/*
|
|
Command Line Flag masks (NWLG_SD_CMD_LINE_FLAGS)
|
|
*/
|
|
|
|
#define NWLG_CL_FLAG_CLS 0x00000001 /* Clear screen before login */
|
|
#define NWLG_CL_FLAG_NS 0x00000002 /* Attach to a server and do not run script */
|
|
#define NWLG_CL_FLAG_ATTACH 0x00000002
|
|
#define NWLG_CL_FLAG_UNUSED 0x00000004 /* Was bindery flag */
|
|
#define NWLG_CL_FLAG_TREE 0x00000008 /* name specified on cmd line is a tree name */
|
|
|
|
#define NWLG_CL_FLAG_NB 0x00000010 /* Do not show login banner */
|
|
#define NWLG_CL_FLAG_SWAP 0x00000020 /* (DOS) Swap to mem or disk for external cmds */
|
|
#define NWLG_CL_FLAG_NOSWAP 0x00000040 /* (DOS) Do not swap to mem or disk for external cmds */
|
|
#define NWLG_CL_FLAG_SCRIPT 0x00000080 /* Script file name specified on command line */
|
|
|
|
#define NWLG_CL_FLAG_RDF 0x00000100 /* (WIN) Restore permanent connections when done */
|
|
#define NWLG_CL_FLAG_EXTFORK 0x00000200 /* external command is another process */
|
|
#define NWLG_CL_FLAG_NO_DISPLAY 0x00000400 /* Do not display script results */
|
|
#define NWLG_CL_FLAG_NA 0x00000800 /* /NA only, do not login just run scripts
|
|
/NA and /AT(/NS) login and do not run scripts */
|
|
|
|
#define NWLG_CL_FLAG_NO_CLOSE 0x00001000 /* /NC Do not close script results */
|
|
#define NWLG_CL_FLAG_ADVANCED 0x00002000 /* /A Advanced level login UI */
|
|
#define NWLG_CL_FLAG_CONTINUE 0x00004000 /* /CONT accept command line and pass to API without stopping for initial UI */
|
|
#define NWLG_CL_FLAG_SIMPLE 0x00008000 /* /SI Simple UI */
|
|
|
|
#define NWLG_CL_FLAG_MAP_ROOT_OFF 0x00010000 /* do not force map root on NT or other platform that can handle relative mapping */
|
|
#define NWLG_CL_FLAG_START_UI 0x00020000 /* Internal flag to that start_UI in progress */
|
|
#define NWLG_CL_FLAG_DUI 0x00040000 /* Internal flag to set skipUI = NWLG_OPTION_ON | NWLG_DISABLE_UI */
|
|
#define NWLG_CL_FLAG_STATE_ADVANCED 0x00080000 /* Internal flag to force the Advanced dialog to display */
|
|
|
|
#define NWLG_CL_FLAG_FPW 0x00100000 /* Internal flag to signal Forgotten Password Invocation */
|
|
|
|
#define NWLG_CL_FLAG_RUN_SCRIPT 0x20000000 /* Internal flag to run scripts */
|
|
#define NWLG_CL_FLAG_CLEAR_CONN 0x40000000 /* Internal flag to clear connection (logout) before login */
|
|
#define NWLG_CL_FLAG_DEBUG 0x80000000 /* API in debug mode */
|
|
|
|
/* Map flags */
|
|
#define NWLG_MAP_FLAG_INSERT 0x00000001
|
|
#define NWLG_MAP_FLAG_ROOT 0x00000002
|
|
#define NWLG_MAP_FLAG_PHYSICAL 0x00000004
|
|
|
|
/*
|
|
Get Service connection type flags
|
|
*/
|
|
#define NWLG_CONN_GET_DEFAULT 0
|
|
#define NWLG_CONN_GET_SERVER 1
|
|
#define NWLG_CONN_GET_TREE 2
|
|
|
|
/*
|
|
Known Service types
|
|
*/
|
|
#define NWLG_TYPE_DS 0
|
|
#define NWLG_TYPE_BINDERY 1
|
|
#define NWLG_TYPE_HOST_OS 9
|
|
|
|
/*
|
|
Message type and login process definitions.
|
|
Allows room for future expansion and definitions
|
|
Defines are used mainly for defining what type of messages are
|
|
sent to IO routines.
|
|
The first defines show what part of the login process we are in.
|
|
The NWLG_MSGTYP_... are || with _PROC_ to indicate specific message type within
|
|
process. Currently, the only one that is looked at is _MSGTYP_ERROR in
|
|
IO event NWLG_IO_DATA_BLOCK
|
|
*/
|
|
#define NWLG_PROC 0x00ff
|
|
#define NWLG_PROC_INIT 0x0000
|
|
#define NWLG_PROC_LOGIN 0x0010
|
|
#define NWLG_PROC_SCRIPT 0x0020
|
|
#define NWLG_PROC_TERM 0x0040
|
|
|
|
#define NWLG_MSGTYP 0xff00
|
|
#define NWLG_MSGTYP_INFO 0x0100
|
|
#define NWLG_MSGTYP_ERROR 0x0200
|
|
#define NWLG_MSGTYP_SCRIPT 0x0400
|
|
|
|
/************************ Handler definitions ********************/
|
|
|
|
/*
|
|
I/O handler events
|
|
*/
|
|
#define NWLG_IO_MSG_PAUSE 0
|
|
#define NWLG_IO_IDENTITY 1
|
|
#define NWLG_IO_YES_NO 2
|
|
#define NWLG_IO_DATA_BLOCK 3
|
|
#define NWLG_IO_BANNER 4
|
|
#define NWLG_IO_FILE 5
|
|
#define NWLG_IO_ERROR 6
|
|
#define NWLG_IO_CLS 7
|
|
#define NWLG_IO_SOUNDS 8
|
|
#define NWLG_IO_CHANGE_PWD 9
|
|
#define NWLG_IO_CONFIRM_REATTACH 10
|
|
#define NWLG_IO_DOS_SWAP_PATH 11
|
|
#define NWLG_IO_START_UI 12
|
|
#define NWLG_IO_FINISH_UI 13
|
|
#define NWLG_IO_START_LOG 14
|
|
#define NWLG_IO_FINISH_LOG 15
|
|
#define NWLG_IO_WAIT 16
|
|
#define NWLG_IO_GET_TEXT 17
|
|
|
|
#define NWLG_IO_EXP_PWD 22
|
|
#define NWLG_IO_LOGIN_CR 23
|
|
|
|
#define NWLG_IO_PWD_CHG 1
|
|
#define NWLG_IO_PWD_SYNC 0
|
|
|
|
#define NWLG_IO_WAIT_ON 1
|
|
#define NWLG_IO_WAIT_OFF 0
|
|
|
|
|
|
#define NWLG_IO_BRING_TO_FRONT 99
|
|
|
|
/* IO routine optional extensions */
|
|
#define NWLG_IO_GET_DATA_LINE 900
|
|
#define NWLG_IO_GET_DATA_BUF 901
|
|
|
|
#if defined (N_PLAT_MSW)
|
|
/*
|
|
Special values for the progress to NWMLGUIUpdate().
|
|
A positive integer indicates the line count of a disconnected script
|
|
*/
|
|
#define NWLG_UIU_LOGIN_BEGIN (-1) // Connected/Disconnected: output dialog opens
|
|
#define NWLG_UIU_LOGIN_PROPER_UPDATE (-2) // Connected: regular update from login proper (called many times)
|
|
#define NWLG_UIU_SCRIPTS_BEGIN (-3) // Connected/Disconnected: signal that login proper is complete and scripts are about to run
|
|
#define NWLG_UIU_END_OF_SCRIPT (-4) // Connected: signal that a script has closed
|
|
#define NWLG_UIU_ALL_PROCESSING_COMPLETE (-5) // Connected/Disconnected: all login and script processing done
|
|
#define NWLG_UIU_DISC_SCRIPT_LINE (-6) // Disconnected: signal that a new line is about to execute
|
|
#define NWLG_UIU_ABORTED_INCOMPLETE (-7) // Connected/Disconnected: user aborted from debug dialog with script exec incomplete
|
|
#endif
|
|
|
|
/*
|
|
Event manager return codes
|
|
*/
|
|
|
|
#define NWLG_EVT_OK NWLG_OK
|
|
#define NWLG_EVT_RETRY NWLG_RETRY
|
|
#define NWLG_EVT_ABORT NWLG_ABORT
|
|
#define NWLG_EVT_FAIL NWLG_FAIL
|
|
#define NWLG_EVT_IGNORE NWLG_IGNORE
|
|
#define NWLG_EVT_STOP_CYCLE NWLG_STOP_CYCLE
|
|
/*
|
|
Event delivery types
|
|
*/
|
|
|
|
#define NWLG_EVT_SYSTEM 0
|
|
#define NWLG_EVT_PRIVATE 1
|
|
#define NWLG_EVT_BROADCAST 2
|
|
#define NWLG_EVT_UNTIL_OK 3
|
|
#define NWLG_EVT_UNTIL_FAIL 4
|
|
|
|
#define NWLG_RESTART_NONE 0x0000
|
|
/* only set during initial pass of NT login */
|
|
#define NWLG_RESTART_AUTH_ONLY 0x0001
|
|
#define NWLG_RESTART_SCRIPT 0x0002
|
|
/* only set if netware authentication is performed in another module */
|
|
#define NWLG_RESTART_ALT_AUTH 0x0004
|
|
#define NWLG_RESTART_UNLOCK 0x0008
|
|
#define NWLG_RESTART_CITRIX_AUTH 0x0080
|
|
#define NWLG_RESTART_NETWARE_LOGIN 0x0100
|
|
#define NWLG_RESTART_PRIMARY_LOGIN 0x4000
|
|
|
|
/*
|
|
Flag set/clear/test macros
|
|
*/
|
|
|
|
#define NWLGSetFlag( flag, var ) ((var) = (flag) | (var))
|
|
#define NWLGSetFlagP( flag, pvar ) ((*pvar) = (flag) | (*pvar))
|
|
|
|
#define NWLGClearFlag( flag, var ) ((var) = (~(flag)) & (var))
|
|
#define NWLGClearFlagP( flag, pvar ) ((*pvar) = (~(flag)) & (*pvar))
|
|
|
|
#define NWLGTestFlag( flag, var ) (((var) & (flag)) ? N_TRUE : N_FALSE)
|
|
#define NWLGTestFlagP( flag, pvar ) (((*pvar) & (flag)) ? N_TRUE : N_FALSE)
|
|
|
|
/***
|
|
Version information
|
|
***/
|
|
#define NWLG_MAJOR_VER 5
|
|
#define NWLG_MINOR_VER 0
|
|
#define NWLG_REV_VER 0
|
|
|
|
#define NWLGSetVersionP( pVersion ) pVersion->major = NWLG_MAJOR_VER;\
|
|
pVersion->minor=NWLG_MINOR_VER;pVersion->revision = NWLG_REV_VER;
|
|
#define NWLGSetVersion( version ) version.major = NWLG_MAJOR_VER;\
|
|
version.minor=NWLG_MINOR_VER;version.revision = NWLG_REV_VER;
|
|
|
|
#define NWLGVersionLong( version ) (unsigned long) (version.major * 1000000L \
|
|
+ version.minor * 1000 \
|
|
+ version.revision)
|
|
#define NWLGVersionLongP( pVersion ) (unsigned long) (pVersion->major * 1000000L \
|
|
+ pVersion->minor * 1000 \
|
|
+ pVersion->revision)
|
|
#define NWLGVersionLongV( major, minor, revision ) (unsigned long) (major * 1000000L \
|
|
+ minor * 1000 + revision)
|
|
#define NWLG_CURRENT_VERSION NWLGUIVersionLongV( NWLG_MAJOR_VER, NWLG_MINOR_VER, NWLG_REV_VER )
|
|
|
|
typedef struct tagNWLGAccessRec N_FAR * pNWLGAccessRec;
|
|
|
|
N_TYPEDEF_CALLBACK( NWCCODE, pEVTSend )
|
|
(
|
|
nint deliveryType,
|
|
pNWLGAccessRec pAccess,
|
|
nint event,
|
|
nint eventType,
|
|
nint eventSubType,
|
|
INT_PTR param1,
|
|
INT_PTR param2,
|
|
nflag32 flags
|
|
);
|
|
|
|
N_TYPEDEF_CALLBACK( NWCCODE, pEvtHndlr )
|
|
(
|
|
pNWLGAccessRec pAccess,
|
|
nint event,
|
|
nint eventType,
|
|
nint eventSubType,
|
|
INT_PTR param1,
|
|
INT_PTR param2,
|
|
nflag32 flag
|
|
);
|
|
|
|
N_TYPEDEF_CALLBACK( NWCCODE, pIOHndlr )
|
|
(
|
|
pNWLGAccessRec pAccess,
|
|
nint ioEvent,
|
|
INT_PTR param1,
|
|
INT_PTR param2,
|
|
nflag32 flags
|
|
);
|
|
|
|
|
|
#if defined(__BORLANDC__) // Don't pack the structs.
|
|
# pragma option -a
|
|
#elif defined(N_ARCH_16)
|
|
# pragma pack(2)
|
|
#else
|
|
# pragma pack(4)
|
|
#endif
|
|
|
|
typedef struct tagNWLGAccessRec
|
|
{
|
|
INT_PTR id; /* event handlers' unique id assigned by NWLogin */
|
|
NWCCODE status; /* NWLG_OK, ... */
|
|
NWRCODE errCode; /* Additional error code information */
|
|
pEvtHndlr pEventHandler; /* callback to extension Event Handler */
|
|
pEvtHndlr pExceptionHandler; /* callback to extension Exception Handler */
|
|
pIOHndlr pIOHandler; /* callback to extension IO Event Handler */
|
|
nptr pUserData; /* optional extension defined data pointer */
|
|
} NWLGAccessRec;
|
|
|
|
typedef struct tagNWVersion
|
|
{
|
|
nuint16 major;
|
|
nuint8 minor;
|
|
nuint8 revision;
|
|
} NWVersion;
|
|
|
|
typedef NWVersion N_FAR * pNWVersion;
|
|
|
|
|
|
/***************************************************************************/
|
|
/* Start up information structures */
|
|
/***************************************************************************/
|
|
|
|
/* Elemnts for a generic linked list where id contains the type of data */
|
|
typedef struct tagNWLGStartInfoData
|
|
{
|
|
nuint32 id;
|
|
struct tagNWLGStartInfoData *next;
|
|
nptr data;
|
|
} NWLGStartInfoData;
|
|
|
|
typedef NWLGStartInfoData N_FAR * pNWLGStartInfoData;
|
|
|
|
/* Elements for a linked list of strings. */
|
|
typedef struct tagNWLGStringElement
|
|
{
|
|
pnstr text;
|
|
struct tagNWLGStringElement *next;
|
|
} NWLGStringElement;
|
|
|
|
typedef NWLGStringElement N_FAR * pNWLGStringElement;
|
|
|
|
/* linked list of command line args */
|
|
typedef struct tagNWLGStartInfoCmdArgs
|
|
{
|
|
pnstr arg;
|
|
struct tagNWLGStartInfoCmdArgs *next;
|
|
nint argLen;
|
|
} NWLGStartInfoCmdArgs;
|
|
|
|
typedef NWLGStartInfoCmdArgs N_FAR * pNWLGStartInfoCmdArgs;
|
|
#define NWLG_CMDLINE_ARG_LEN 65
|
|
|
|
#define NWLG_STARTINFO_NONE 0
|
|
#define NWLG_STARTINFO_USE 1
|
|
#define NWLG_STARTINFO_CMDLINE 2
|
|
|
|
typedef struct tagNWLGStartInfo
|
|
{
|
|
NWVersion APIVersion;
|
|
pNWLGStartInfoData dataList;// linked list pointer or NULL
|
|
pEVTSend pNWLGEVTSend;
|
|
nint useStartInfo; // NWLG_STARTINFO_NONE:0, NWLG_STARTINFO_USE:1, NWLG_STARTINFO_CMDLINE:2
|
|
nint serverLen;
|
|
pnstr server; // server to log into
|
|
nint treeLen;
|
|
pnstr tree; // tree name if logging into tree instead of specific server
|
|
nint userLen;
|
|
pnstr user; // real login user name (normally no context)
|
|
nint scriptUserLen;
|
|
pnstr scriptUser; // user name to use when executing scripts
|
|
nint passwordLen;
|
|
pnstr password;
|
|
nint profileLen;
|
|
pnstr profile; // profile file/object name
|
|
nint scriptFileLen;
|
|
pnstr scriptFile; // override script file/object name
|
|
nint contextLen;
|
|
pnstr context; // full text context without leading '.'
|
|
nint bannerInfoLen;
|
|
pnstr bannerInfo; // name of banner file (NI)
|
|
nint swapPathLen;
|
|
pnstr swapPath; // DOS only
|
|
pNWLGStartInfoCmdArgs cmdLine;// linked list of command line args (%2 %3 %4...%MAX_SCRIPT_ARGS+2)
|
|
nbool noBanner;
|
|
nbool _unused; // force bindery conns
|
|
nbool clearConns; // combination of /NS
|
|
nbool clearScreen; // cmd line versions
|
|
nbool singleTree; // TRUE = do not allow multi-tree login
|
|
nbool restorePerm; // W31 restore permanent connections
|
|
nbool runScripts; // and /NA
|
|
nint noSwap; // DOS - swap flag
|
|
nint internalFlags; // 9-21-98 KPW Reserved
|
|
nptr pData; /** Start Version 1.0.1 **/
|
|
nint restartMode; /* NT - 0=Full Login, 1=Authenticate only, 2=Restart at Script NWLG_RESTART_... */
|
|
nbool disableLoginExt; /* TRUE do not allow extensions */
|
|
HWND hwndParent; /* HWND to treat as this DLL's main window */
|
|
nuint32 NWMLGFlags; /* Mobile flags */
|
|
nuint32 callingModule; //
|
|
pnstr providerName; // Shell Login Extension DLL name (NOVELLNP, EDCMOBILE...)
|
|
pEvtHndlr providerCallBack; // used to call back W95 provider (not implemented)
|
|
pEvtHndlr pReserved1; // future FN pointers
|
|
pEvtHndlr pReserved2; // future FN pointers
|
|
pEvtHndlr pReserved3; // future FN pointers
|
|
// 04-02-98 Make available for all 32bit platforms - start
|
|
// #if defined (N_ARCH_32) IKM- Removed ifdef 08-23-99 as per Ransom's suggestion to make this available to ALL platforms
|
|
NWCONN_HANDLE expiredConnID;
|
|
nstr expiredPassword[MAX_DN_BYTES]; /* password that expired */
|
|
nstr expiredServiceName[NW_MAX_SERVER_NAME_BYTES]; /* server or tree name or workstation description (WindowsNT...) */
|
|
nint expiredServiceType; /* NDS or BINDERY */
|
|
nbool expiredDSbinderyServer; /* ds server attached bindery mode SPD 47924 */
|
|
nbool expiredPrimaryLogin; /* is this from the initial or primary login */
|
|
nbool expiredWkstaPassword;
|
|
nstr expiredWkstaNewPassword[MAX_DN_BYTES];
|
|
// #endif IKM- Removed ifdef 08-23-99 as per Ransom's suggestion to make this available to ALL platforms
|
|
// 04-02-98 Make available for all 32bit platforms - end
|
|
} NWLGStartInfo;
|
|
|
|
typedef NWLGStartInfo N_FAR * pNWLGStartInfo;
|
|
|
|
/* IDs for items found in linked list 'dataList' */
|
|
#define NWLGID_COMMAND_LINE 0x00000000L /* Command-line string */
|
|
#define NWLGID_SI 0x00000001L /* NWLGStartInfo */
|
|
#define NWLGID_SI_ORIG 0x00000002L /* Original NWLGStartInfo */
|
|
#define NWLGID_UI 0x00000011L /* NWLGUIStartInfo */
|
|
#define NWLGID_UI_ORIG 0x00000012L /* Original NWLGUIStartInfo */
|
|
|
|
//
|
|
// Other NWLGStartInfoData ID types not defined here:
|
|
//
|
|
// #define NWLGID_LOCKED_9X 0x00000023 /* UNLOCK.H */
|
|
// #define NWLGID_CMD_LINE_INFO 0x00000030 /* NWLGUICL.H */
|
|
// #define NWLGID_TAB_BINDERY 0x00000031 /* AXBNDRYTAB.H */
|
|
// #define NWLGID_TAB_CRED 0x00000032 /* AXCREDTAB.H */
|
|
// #define NWLGID_TAB_CREDNT 0x00000033 /* AXCREDNTTAB.H */
|
|
// #define NWLGID_TAB_DIALUP 0x00000034 /* AXDIALTAB.H */
|
|
// #define NWLGID_TAB_NDS 0x00000035 /* AXNDSTAB.H */
|
|
// #define NWLGID_TAB_SCRIPT 0x00000036 /* AXSCRIPTTAB.H */
|
|
// #define NWLGID_NMAS 0x00000055 /* NWLNMAS.H */
|
|
// #define NWLGID_UI_CONTAINER 0x00000056 /* LOGW32DLG.H */
|
|
//
|
|
|
|
/* End of StartInfo */
|
|
/***************************************************************************/
|
|
|
|
typedef struct tagNWLGMapRec
|
|
{
|
|
nchar driveLetter; /* NULL char for next drive i.e. c = (char)0 */
|
|
nuint searchOrder; /* 0 for not a search drive */
|
|
pnstr path; /* call NWParsePath to get it parsed */
|
|
} NWLGMapRec;
|
|
|
|
|
|
typedef NWLGMapRec N_FAR * pNWLGMapRec;
|
|
|
|
|
|
/************************ NWLOGIN structures ********************/
|
|
|
|
typedef struct tagNWLGUserIDStruct
|
|
{
|
|
NWDSContextHandle context;
|
|
pnstr server;
|
|
pnstr user;
|
|
pnstr password;
|
|
nbool changeServer; /* allow server/tree to change */
|
|
nbool DSLogin; /* NDS or bindery login */
|
|
NWCONN_HANDLE connID;
|
|
nptr data;
|
|
nflag32 flags;
|
|
pnstr tree;
|
|
pnstr szContext;
|
|
nbool treeLogin; /* tree or server login */
|
|
char hintMagic[4]; /* if set to "HINT" then pointer to string follows */
|
|
pnstr pHint;
|
|
} NWLGUserID;
|
|
|
|
typedef NWLGUserID N_FAR * pNWLGUserID;
|
|
|
|
typedef struct tagNWLGSrvcConnStruct
|
|
{
|
|
pnstr server; /* connect(ed) to server name */
|
|
pnstr tree; /* connect(ed) to tree name */
|
|
nint serviceType; /* server, tree or default */
|
|
pnint connType;
|
|
NWCONN_HANDLE N_FAR *connID;
|
|
} NWLGSrvcConn;
|
|
|
|
typedef NWLGSrvcConn N_FAR * pNWLGSrvcConn;
|
|
|
|
typedef struct tagNWLGScriptInfoStruct
|
|
{
|
|
nint idx;
|
|
nint scriptNameLen;
|
|
pnstr scriptName;
|
|
nint len;
|
|
pnstr line;
|
|
nint scriptLineNum;
|
|
nbool crt;
|
|
struct CLoginScript* OloginScript; // ref to C++ CLoginScript instance
|
|
} NWLGScriptInfo;
|
|
|
|
typedef NWLGScriptInfo N_FAR * pNWLGScriptInfo;
|
|
|
|
#if defined(__BORLANDC__) // Restore to compiler specified.
|
|
# pragma option -a.
|
|
#else
|
|
# pragma pack()
|
|
#endif
|
|
|
|
|
|
/************************ NWLOGIN API's ********************/
|
|
|
|
N_EXTERN_LIBRARY( NWCCODE )
|
|
NWLoginInit
|
|
(
|
|
pNWLGAccessRec pAccess,
|
|
pNWVersion pRuntimeVersion
|
|
);
|
|
|
|
N_EXTERN_LIBRARY( NWCCODE )
|
|
NWLogin
|
|
(
|
|
pNWLGAccessRec pAccess,
|
|
pnstr cmdLine,
|
|
pnstr password,
|
|
pNWLGStartInfo infoStruct
|
|
);
|
|
|
|
N_EXTERN_LIBRARY( NWCCODE )
|
|
NWLoginTerm
|
|
(
|
|
pNWLGAccessRec pAccess,
|
|
nflag32 reserved
|
|
);
|
|
|
|
N_EXTERN_LIBRARY( void )
|
|
NWLoginVersion
|
|
(
|
|
pNWVersion pRuntimeVersion
|
|
);
|
|
|
|
N_EXTERN_LIBRARY( nbool )
|
|
NWLGBringLoginToFront
|
|
(
|
|
void
|
|
);
|
|
|
|
N_EXTERN_LIBRARY( NWCCODE )
|
|
NWLGDefaultEvtHandler
|
|
(
|
|
pNWLGAccessRec pAccess,
|
|
nint event,
|
|
nint eventType,
|
|
nint eventSubType,
|
|
INT_PTR param1,
|
|
INT_PTR param2,
|
|
nflag32 flags
|
|
);
|
|
|
|
N_EXTERN_LIBRARY( NWCCODE )
|
|
NWLGDefaultExcptHandler
|
|
(
|
|
pNWLGAccessRec pAccess,
|
|
nint event,
|
|
nint eventType,
|
|
nint eventSubType,
|
|
INT_PTR param1,
|
|
INT_PTR param2,
|
|
nflag32 flags
|
|
);
|
|
|
|
N_EXTERN_LIBRARY( NWCCODE )
|
|
NWLGDefaultIOHandler
|
|
(
|
|
pNWLGAccessRec pAccess,
|
|
nint ioEvent,
|
|
nparam param1,
|
|
nparam param2,
|
|
nflag32 flags
|
|
);
|
|
|
|
N_EXTERN_LIBRARY( NWCCODE )
|
|
NWLGGetLoginData
|
|
(
|
|
nint identifier, /* NWLG_SD_... value*/
|
|
nint itemIndex, /* 0 or 0.. for multi valued */
|
|
nptr retvalue,
|
|
nint len
|
|
);
|
|
|
|
N_EXTERN_LIBRARY( NWCCODE )
|
|
NWLGSetLoginData
|
|
(
|
|
nint identifier,
|
|
nint itemIndex,
|
|
INT_PTR value
|
|
);
|
|
|
|
N_EXTERN_LIBRARY( NWCCODE )
|
|
NWLGOpenScriptFD
|
|
(
|
|
nint fd,
|
|
nbool crt,
|
|
pnint ccode
|
|
);
|
|
|
|
N_EXTERN_LIBRARY( void )
|
|
NWLGSetCtrlBreak
|
|
(
|
|
void
|
|
);
|
|
|
|
N_EXTERN_LIBRARY( NWCCODE )
|
|
NWLGEVTSend
|
|
(
|
|
nint deliveryType,
|
|
pNWLGAccessRec pAccess,
|
|
nint event,
|
|
nint eventType,
|
|
nint eventSubType,
|
|
INT_PTR param1,
|
|
INT_PTR param2,
|
|
nflag32 flags
|
|
);
|
|
|
|
N_EXTERN_LIBRARY( NWCCODE )
|
|
NWLGIOEVTSend
|
|
(
|
|
pNWLGAccessRec pAccess,
|
|
nint ioEvent,
|
|
INT_PTR param1,
|
|
INT_PTR param2,
|
|
nflag32 flags
|
|
);
|
|
N_EXTERN_LIBRARY( NWCCODE )
|
|
_NWLGGetInitialConn
|
|
(
|
|
pNWLGAccessRec pAccess
|
|
);
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|