_declspec( dllexport ) HANDLE GetServerList(char *retPort) { char ports[MAXPORTNAME]; BOOL status = NOERROR; HANDLE serverList; status = OSGetEnvironmentString("Ports", ports, MAXPORTNAME); if (status == TRUE) { //try first port for(UINT i=0; i < strlen(ports); i++) { if (ports[i] == ',' || ports[i] == '\0') { retPort[i] = '\0'; break; } retPort[i] = ports[i]; } } status = NSGetServerList((char *)retPort, &serverList); if (status == NOERROR) { return serverList; } else { return (HANDLE)NULL; } }
_declspec ( dllexport ) WORD GetCurrentUserMailFileName(char *retMailFile) { BOOL bStatus; bStatus = OSGetEnvironmentString(_T("MailFile"), retMailFile, (WORD)strlen(retMailFile)); return (WORD)strlen(retMailFile); }
void NotesHelper::InitialiseSession() { if(m_notesInitialised) return; if (0 != NotesInit()) throw CppUnitException(_T("Failed to Initialise Notes runtime"), __LINE__, _T(__FILE__)); char serverName[1024] = {0}; if(TRUE != OSGetEnvironmentString("MailServer", serverName, sizeof(serverName))) throw CppUnitException(_T("Failed to obtain the Lotus Domino Mail Server"), __LINE__, _T(__FILE__)); char szMailFileName[MAXUSERNAME + 1]; strcpy(szMailFileName, MAILBOX_NAME); char szMailBoxPath[MAXPATH + 1] = {0}; OSPathNetConstruct(0, serverName, szMailFileName, szMailBoxPath); STATUS error = NSFDbOpen(szMailBoxPath, &m_hMailBox); if (NOERROR != error) throw CppUnitException(_T("Failed to open mail.box"), __LINE__, _T(__FILE__)); m_notesInitialised = true; }
_declspec ( dllexport ) WORD GetServerNamesEx(char retServerNames[MAX_SERVERS][MAXPATH]) { BOOL status = NOERROR; char szLocation[MAXENVVALUE]; char szPAB[MAXENVVALUE]; HANDLE db; char full_netpath[MAXPATH-1]; NOTEID view_id; HCOLLECTION hCollection; COLLECTIONPOSITION pCollPosition; HANDLE hBuffer; DWORD NumberReturned = 0; NOTEID *IdList; NOTEHANDLE note; char szFieldName[80] = { 0 }; char szFieldType[80] = { 0 }; WORD retServerCount = 0; bool bUseLocal = false; // first, get the name of the current location status = OSGetEnvironmentString("Location", szLocation, MAXENVVALUE); if (status == TRUE) { char *pb = strchr(szLocation, ','); if (pb != NULL) *pb = 0 ; } status = OSGetEnvironmentString("MAILSERVER", szPAB, MAXENVVALUE); if (status == TRUE) { char *pb = strchr(szPAB, ','); if (pb != NULL) *pb = 0 ; } if (status = OSPathNetConstruct(NULL, szPAB, _T("names.nsf"), full_netpath)) { printf("unable to open the public NAB %s!!names.nsf\n", szFieldName); return 0; } if (status = NSFDbOpen (full_netpath, &db)) return 0; if (bUseLocal) { // choose local PAB view if (status = NIFFindView(db, _T("Connections"), &view_id)) { NSFDbClose(db); return 0; } } else { // choose server list from server Directory if (status = NIFFindView(db, _T("Servers"), &view_id)) { NSFDbClose(db); return 0; } } if (status = NIFOpenCollection( db, db, view_id, 0, NULLHANDLE, &hCollection, NULL, NULL, NULL, NULL )) { NSFDbClose(db); return 0; } pCollPosition.Level = 0; pCollPosition.Tumbler[0] = 1; if (status = NIFReadEntries(hCollection, &pCollPosition, NAVIGATE_CURRENT, 1L, NAVIGATE_NEXT, 0xFFFFFFFF, READ_MASK_NOTEID, &hBuffer, NULL, NULL, &NumberReturned, NULL)) { NIFCloseCollection(hCollection); NSFDbClose(db); return 0; } strcpy_s(retServerNames[retServerCount++], MAXPATH, _T("Local")); if (NumberReturned != 0) { if (hBuffer != NULLHANDLE) { IdList = (NOTEID far *)OSLockObject(hBuffer); for (DWORD i=0; i<(DWORD)NumberReturned; i++) { if (status = NSFNoteOpen( db, IdList[i], 0, ¬e)) { // skip categories } else { // scan documents WORD lenFieldName = NSFItemGetText(note, (bUseLocal) ? _T("Destination") : _T("ServerName"), szFieldName, sizeof(szFieldName)); strcpy_s(retServerNames[retServerCount++], MAXPATH, szFieldName); status = NSFNoteClose(note); } } OSUnlockObject(hBuffer); OSMemFree(hBuffer); } } if (status) { NIFCloseCollection(hCollection); NSFDbClose(db); return 0; } if (status = NIFCloseCollection(hCollection)) { NSFDbClose(db); return 0; } if (status = NSFDbClose(db)) return 0; return retServerCount; }