Files
bongo/include/nmlib.h
T
2026-07-19 16:08:29 +02:00

198 lines
8.6 KiB
C

/****************************************************************************
* <Novell-copyright>
* Copyright (c) 2001 Novell, Inc. All Rights Reserved.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of version 2 of the GNU General Public License
* as published by the Free Software Foundation.
*
* 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, contact Novell, Inc.
*
* To contact Novell about this file by physical or electronic mail, you
* may find current contact information at www.novell.com.
* </Novell-copyright>
****************************************************************************/
// Parts Copyright (C) 2007 Alex Hudson. See COPYING for details.
#ifndef _BONGO_NMAP_LIBRARY_H
#define _BONGO_NMAP_LIBRARY_H
#include <connio.h>
#include <nmap.h>
#include <bongocal.h>
/*
NMAP Library Return Codes
*/
#define NMAP_ERROR_COMM -501 /* an IP error has occurred */
#define NMAP_ERROR_INVALID_RESPONSE_CODE -502 /* the response code is not a 4 digit number followed by a - or space */
#define NMAP_ERROR_LINE_TOO_LONG -503 /* the line does not fit in the network buffer */
#define NMAP_ERROR_BUFFER_TOO_SHORT -504 /* the line in the network buffer is bigger than the destination buffer */
#define NMAP_ERROR_CALLBACK_FUNCTION_NOT_DEFINED -505 /* the line in the network buffer is bigger than the destination buffer */
#define NMAP_ERROR_CALLBACK_FUNCTION_FAILED -506 /* the line in the network buffer is bigger than the destination buffer */
#define NMAP_ERROR_BAD_PROPERTY -507 /* the line in the network buffer is bigger than the destination buffer */
#define NMAP_ERROR_PROTOCOL -508 /* the server response is unexpected */
/*
*/
#define NMAP_REGISTRATION_CLIENT_STACK_SIZE (128 * 1024)
/*
*/
typedef enum _RegistrationStates {
REGISTRATION_LOADING,
REGISTRATION_ALLOCATING,
REGISTRATION_CONNECTING,
REGISTRATION_REGISTERING,
REGISTRATION_COMPLETED,
REGISTRATION_ABORT,
REGISTRATION_FAILED,
REGISTRATION_MAX_STATES
} RegistrationStates;
typedef BOOL (* NMAPOutOfBoundsCallback)(void *param, char *beginPtr, char *endPtr);
/* Mime stuff */
typedef struct _NmapMimeInfo {
char type[MIME_TYPE_LEN + 1];
char subtype[MIME_SUBTYPE_LEN + 1];
char charset[MIME_CHARSET_LEN + 1];
unsigned char encoding[MIME_ENCODING_LEN + 1];
unsigned char name[MIME_NAME_LEN + 1];
int start;
int size;
int headersize; /* rfc822-specific, not used */
int lines; /* not used */
} NmapMimeInfo;
int NMAPParseMIMELine(char *line, NmapMimeInfo *info);
BOOL NMAPFindToplevelMimePart(Connection *conn,
const char *id,
const char *supertype,
const char *subtype,
NmapMimeInfo *info);
BOOL NMAPQueueFindToplevelMimePart(Connection *conn,
const char *id,
const char *supertype,
const char *subtype,
NmapMimeInfo *info);
char *NMAPReadMimePartUTF8(Connection *conn,
const char *guid,
NmapMimeInfo *info,
int maxRead);
char *NMAPQueueReadMimePartUTF8(Connection *conn,
const char *qID,
NmapMimeInfo *info,
int maxRead);
typedef struct {
char *buffer;
char *name;
size_t nameLen;
char *value;
size_t valueLen;
} NmapProperty;
/*
*/
#define NMAPAlloc(b) ConnAlloc((b))
#define NMAPFree(c) ConnFree((c))
#define NMAPClose(c, f) ConnClose((c), (f))
#define NMAPRead(c, b, l) ConnRead((c), (b), (l))
#define NMAPReadCount(c, b, l) ConnReadCount((c), (b), (l))
#define NMAPReadToFile(c, f, l) ConnReadToFile((c), (f), (l))
#define NMAPReadToConn(s, d, l) ConnReadToConn((c), (d), (l))
#define NMAPWrite(c, b, l) ConnWrite((c), (b), (l))
#define NMAPWriteFromFile(c, f, l) ConnWriteFromFile((c), (f), (l))
#define NMAPSend(c, b, l) ConnSend((c), (b), (l))
#define NMAPReceive(c, b, l) ConnReceive((c), (b), (l))
/*
*/
BOOL NMAPInitialize();
void NMAPSetEncryption(bongo_ssl_context *context);
bongo_ssl_context *NMAPSSLContextAlloc(void);
int NMAPSendCommand(Connection *conn, const char *command, size_t length);
int NMAPSendCommandF(Connection *conn, const char *format, ...) XPL_PRINTF(2, 3);
int NMAPReadResponse(Connection *conn, char *response, size_t length, BOOL check);
int NMAPReadResponseLine(Connection *conn, char *response, size_t length, BOOL check);
int NMAPReadResponseAndCount(Connection *conn, unsigned long *count);
int NMAPRunCommandF(Connection *conn, char *response, size_t length, const char *format, ...) XPL_PRINTF(4, 5);
/* Configuration function for agents etc. */
BOOL
NMAPReadConfigFile(const char *file, char **output);
BOOL
NMAPReplaceConfigFile(const char *file, const char *content,
size_t content_length);
int NMAPReadCrLf(Connection *conn);
int NMAPReadPropertyValueLength(Connection *conn, const char *propertyName, size_t *propertyValueLen);
int NMAPReadPropertyValueLength64(Connection *conn, const char *propertyName, uint64_t *propertyValueLen);
int NMAPReadTextPropertyResponse(Connection *conn, const char *propertyName, char *propertyBuffer, size_t propertyBufferLen);
int NMAPGetTextProperty(Connection *conn, uint64_t guid, const char *propertyName, char *propertyBuffer, size_t propertyBufferLen);
int NMAPSetTextProperty(Connection *conn, uint64_t guid, const char *propertyName, const char *propertyValue, unsigned long propertyValueLen);
int NMAPSetTextPropertyFilename(Connection *conn, const char *filename, const char *propertyName, const char *propertyValue, unsigned long propertyValueLen);
int NMAPReadDecimalPropertyResponse(Connection *conn, const char *propertyName, long *propertyValue);
int NMAPReadUInt64PropertyResponse(Connection *conn, const char *propertyName, uint64_t *propertyValue);
int NMAPGetDecimalProperty(Connection *conn, uint64_t guid, const char *propertyName, long *propertyValue);
int NMAPSetDecimalProperty(Connection *conn, uint64_t guid, const char *propertyName, long propertyValue);
int NMAPReadHexadecimalPropertyResponse(Connection *conn, const char *propertyName, unsigned long *propertyValue);
int NMAPGetHexadecimalProperty(Connection *conn, uint64_t guid, const char *propertyName, unsigned long *propertyValue);
int NMAPSetHexadecimalProperty(Connection *conn, uint64_t guid, const char *propertyName, unsigned long propertyValue);
int NMAPCreateCollection(Connection *conn,
const char *collectionName,
uint64_t *guid);
int NMAPCreateCalendar(Connection *nmap,
const char *calendarName,
uint64_t *guid);
BongoCalObject *NMAPGetEvents(Connection *conn, const char *calendar, BongoCalTime start, BongoCalTime end);
BOOL NMAPAddEvent(Connection *conn, BongoCalObject *cal, const char *calendar, char *uid, int uidLen);
/* NMAPReadAnswer and NMAPReadAnswerLine are deprecated in favor of NMAPReadResponse and NMAPReadResponseLine */
int NMAPReadAnswer(Connection *conn, char *response, size_t length, BOOL checkForResult);
int NMAPReadAnswerLine(Connection *conn, char *response, size_t length, BOOL checkForResult);
Connection *NMAPConnect(char *address, struct sockaddr_in *addr);
Connection *NMAPConnectEx(char *address, struct sockaddr_in *addr, TraceDestination *destination);
Connection *NMAPConnectQueue(char *address, struct sockaddr_in *addr);
Connection *NMAPConnectQueueEx(char *address, struct sockaddr_in *addr, TraceDestination *destination);
BOOL NMAPEncrypt(Connection *conn, char *response, int length, BOOL force);
BOOL NMAPAuthenticateToStore(Connection *conn, char *response, int length);
BOOL NMAPAuthenticateToQueue(Connection *conn, char *response, int length);
int NMAPAuthenticateWithCookie(Connection *conn, const char *user, const char *cookie, char *buffer, int length);
BOOL NMAPAuthenticateThenUserAndStore(Connection *conn, unsigned char *user);
void NMAPQuit(Connection *conn);
RegistrationStates QueueRegister(const char *dn, unsigned long queue, unsigned short port);
void NMAPCancelQueueRegistration(void);
#endif /* _BONGO_NMAP_LIBRARY_H */