Modernize Bongo 0.7.0 foundation

This commit is contained in:
Mario Fetka
2026-07-16 14:26:58 +02:00
parent 27a70c1332
commit 16015f8559
516 changed files with 16029 additions and 24385 deletions
+4 -3
View File
@@ -49,7 +49,7 @@
int aliasCmpFunc (const void *lft, const void *rgt);
QueueConfiguration Conf = { 0, {0, }, };
QueueConfiguration Conf = {0};
long
CalculateCheckQueueLimit(unsigned long concurrent, unsigned long sequential)
@@ -205,11 +205,11 @@ ReadConfiguration (BOOL *recover)
unsigned int x;
for(x=0;x<Conf.domains->len;x++) {
char *aconfig;
unsigned char path[100];
char path[100];
BongoJsonNode *node;
struct _AliasStruct a;
a.original = MemStrdup(g_array_index(Conf.domains, unsigned char *, x));
a.original = MemStrdup(g_array_index(Conf.domains, char *, x));
a.to = NULL;
a.aliases = NULL;
a.mapping_type = 0;
@@ -262,6 +262,7 @@ ReadConfiguration (BOOL *recover)
void
CheckConfig(BongoAgent *agent)
{
UNUSED_PARAMETER(agent);
/* TODO: Figure out how we are going to handle this type of situation */
return;
}
+3 -3
View File
@@ -108,9 +108,9 @@ typedef struct _QueueConfiguration {
} QueueConfiguration;
struct _AliasStruct{
unsigned char* original;
unsigned char* to;
unsigned int mapping_type;
char *original;
char *to;
int mapping_type;
GArray *aliases;
};
+9 -10
View File
@@ -26,7 +26,7 @@
#include "domain.h"
int
QDBStartup(int minimum, int maximum)
QDBStartup(int minimum __attribute__((unused)), int maximum __attribute__((unused)))
{
return 0;
}
@@ -43,48 +43,48 @@ QDBHandleAlloc(void)
}
void
QDBHandleRelease(void *handle)
QDBHandleRelease(void *handle __attribute__((unused)))
{
}
int
QDBAdd(void *handle, unsigned char *domain, unsigned long queueID, int queue)
QDBAdd(void *handle __attribute__((unused)), char *domain __attribute__((unused)), unsigned long queueID __attribute__((unused)), int queue __attribute__((unused)))
{
return -1;
}
int
QDBRemoveID(void *handle, unsigned long queueID)
QDBRemoveID(void *handle __attribute__((unused)), unsigned long queueID __attribute__((unused)))
{
return -1;
}
int
QDBRemoveDomain(void *handle, unsigned char *domain)
QDBRemoveDomain(void *handle __attribute__((unused)), char *domain __attribute__((unused)))
{
return -1;
}
int
QDBSearchID(void *handle, unsigned long queueID)
QDBSearchID(void *handle __attribute__((unused)), unsigned long queueID __attribute__((unused)))
{
return -1;
}
int
QDBSearchDomain(void *handle, unsigned char *domain)
QDBSearchDomain(void *handle __attribute__((unused)), char *domain __attribute__((unused)))
{
return -1;
}
int
QDBQuery(void *handle, unsigned char *query, QDBQueryResults *results)
QDBQuery(void *handle __attribute__((unused)), char *query __attribute__((unused)), QDBQueryResults *results __attribute__((unused)))
{
return -1;
}
int
QDBDump(unsigned char *domain)
QDBDump(char *domain __attribute__((unused)))
{
return -1;
}
@@ -93,4 +93,3 @@ void
QDBSummarizeQueue(void)
{
}
+5 -5
View File
@@ -11,13 +11,13 @@ int QDBStartup(int minimum, int maximum);
void QDBShutdown(void);
void *QDBHandleAlloc(void);
void QDBHandleRelease(void *handle);
int QDBAdd(void *handle, unsigned char *domain, unsigned long queueID, int queue);
int QDBAdd(void *handle, char *domain, unsigned long queueID, int queue);
int QDBRemoveID(void *handle, unsigned long queueID);
int QDBRemoveDomain(void *handle, unsigned char *domain);
int QDBRemoveDomain(void *handle, char *domain);
int QDBSearchID(void *handle, unsigned long queueID);
int QDBSearchDomain(void *handle, unsigned char *domain);
int QDBQuery(void *handle, unsigned char *query, QDBQueryResults *results);
int QDBDump(unsigned char *domain);
int QDBSearchDomain(void *handle, char *domain);
int QDBQuery(void *handle, char *query, QDBQueryResults *results);
int QDBDump(char *domain);
void QDBSummarizeQueue(void);
#endif
+11 -11
View File
@@ -30,7 +30,7 @@
#include <connio.h>
static BOOL
ParseDispositionParameters(unsigned char *ptr, MIMEPartStruct *part)
ParseDispositionParameters(char *ptr, MIMEPartStruct *part)
{
RFC2231ParamStruct *rfc2231Name = NULL;
@@ -67,7 +67,7 @@ ParseDispositionParameters(unsigned char *ptr, MIMEPartStruct *part)
}
__inline static BOOL
ParseTypeParameters(unsigned char *ptr, MIMEPartStruct *part)
ParseTypeParameters(char *ptr, MIMEPartStruct *part)
{
RFC2231ParamStruct *rfc2231Name = NULL;
@@ -289,7 +289,7 @@ FreeMIME(MIMEReportStruct *report)
}
MIMEReportStruct *
ParseMIME(FILE *fh, unsigned long headerSize, unsigned long messageSize, long bodyLines, unsigned char *line, unsigned long lineSize)
ParseMIME(FILE *fh, unsigned long headerSize, unsigned long messageSize, long bodyLines, char *line, unsigned long lineSize)
{
int i;
int j;
@@ -305,12 +305,12 @@ ParseMIME(FILE *fh, unsigned long headerSize, unsigned long messageSize, long bo
unsigned long lastHeaderStart = 0;
unsigned long lastHeaderLen = 0;
unsigned long contentHeaderLen = 0;
unsigned char *ptr;
unsigned char *start;
unsigned char *end;
unsigned char *header = NULL;
unsigned char *currentSeparator = NULL;
unsigned char *allocatedSeparator = NULL;
char *ptr;
char *start;
char *end;
char *header = NULL;
char *currentSeparator = NULL;
char *allocatedSeparator = NULL;
BOOL lastInHeader = TRUE;
BOOL inHeader = TRUE;
BOOL skip = FALSE;
@@ -322,7 +322,7 @@ ParseMIME(FILE *fh, unsigned long headerSize, unsigned long messageSize, long bo
partsAllocated = MIME_STRUCT_ALLOC;
part = (MIMEPartStruct *)MemMalloc((sizeof(MIMEPartStruct) * partsAllocated) + sizeof(MIMEReportStruct));
header = (unsigned char *)MemMalloc(sizeof(unsigned char)*MAX_HEADER);
header = (char *)MemMalloc(sizeof(char)*MAX_HEADER);
if (!part || !header) {
if (part) {
MemFree(part);
@@ -462,7 +462,7 @@ ParseMIME(FILE *fh, unsigned long headerSize, unsigned long messageSize, long bo
doingDigest = TRUE;
}
ParseTypeParameters(end + 1, &part[partNo]);
if (part[partNo].separator) {
if (part[partNo].separator[0] != '\0') {
currentSeparator = part[partNo].separator;
}
partNo++;
+7 -7
View File
@@ -29,12 +29,12 @@
#include "connio.h"
typedef struct _MIMEPartStruct {
unsigned char separator[MIME_SEPARATOR_LEN+1];
unsigned char type[MIME_TYPE_LEN+1];
unsigned char subtype[MIME_SUBTYPE_LEN+1];
unsigned char charset[MIME_CHARSET_LEN+1];
unsigned char encoding[MIME_ENCODING_LEN+1];
unsigned char name[MIME_NAME_LEN+1];
char separator[MIME_SEPARATOR_LEN+1];
char type[MIME_TYPE_LEN+1];
char subtype[MIME_SUBTYPE_LEN+1];
char charset[MIME_CHARSET_LEN+1];
char encoding[MIME_ENCODING_LEN+1];
char name[MIME_NAME_LEN+1];
long headerStart;
unsigned long headerLen;
unsigned long start;
@@ -60,6 +60,6 @@ typedef struct _MIMEReportStruct {
int SendMIME(Connection *conn, MIMEReportStruct *report);
int SendMimeDetails(Connection *conn, MIMEReportStruct *report);
void FreeMIME(MIMEReportStruct *report);
MIMEReportStruct *ParseMIME(FILE *fh, unsigned long headerSize, unsigned long messageSize, long bodyLines, unsigned char *line, unsigned long lineSize);
MIMEReportStruct *ParseMIME(FILE *fh, unsigned long headerSize, unsigned long messageSize, long bodyLines, char *line, unsigned long lineSize);
#endif
+303 -259
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -36,7 +36,7 @@ typedef struct _QueuePushClient {
unsigned long usageCount;
unsigned long errorCount;
unsigned char identifier[101];
char identifier[101];
} QueuePushClient;
typedef struct _QueueList {
@@ -46,7 +46,7 @@ typedef struct _QueueList {
} QueueList;
typedef struct _QueuePoolList {
unsigned char identifier[101]; /* each queue agent should have a unique identifier so that pooling will work correctly */
char identifier[101]; /* each queue agent should have a unique identifier so that pooling will work correctly */
AddressPool pool;
} QueuePoolList;
+118 -112
View File
@@ -36,7 +36,7 @@
#include "domain.h"
#include "messages.h"
QueueAgent Agent = { {0, }, };
QueueAgent Agent = {0};
static int CommandAuth(void *param);
static int CommandPass(void *param);
@@ -47,60 +47,60 @@ static int CommandDomainLocation(void *param);
int aliasFindFunc(const void *str, const void *node);
static ProtocolCommand authCommands[] = {
{ NMAP_AUTH_COMMAND, NMAP_AUTH_HELP, sizeof(NMAP_AUTH_COMMAND) - 1, CommandAuth, NULL, NULL },
{ NMAP_HELP_COMMAND, NMAP_HELP_HELP, sizeof(NMAP_HELP_COMMAND) - 1, CommandHelp, NULL, NULL },
{ NMAP_PASS_COMMAND, NMAP_PASS_HELP, sizeof(NMAP_PASS_COMMAND) - 1, CommandPass, NULL, NULL },
{ NMAP_QUIT_COMMAND, NMAP_QUIT_HELP, sizeof(NMAP_QUIT_COMMAND) - 1, CommandQuit, NULL, NULL },
{ NMAP_ADDRESS_RESOLVE_COMMAND, NMAP_ADDRESS_RESOLVE_HELP, sizeof(NMAP_ADDRESS_RESOLVE_COMMAND) -1, CommandAddressResolve, NULL, NULL },
{ NMAP_DOMAIN_LOCATION_COMMAND, NMAP_DOMAIN_LOCATION_HELP, sizeof(NMAP_DOMAIN_LOCATION_COMMAND) -1, CommandDomainLocation, NULL, NULL },
{ NULL, NULL, 0, NULL, NULL, NULL }
{ NMAP_AUTH_COMMAND, NMAP_AUTH_HELP, sizeof(NMAP_AUTH_COMMAND) - 1, CommandAuth, NULL, NULL, NULL, BlackCommand },
{ NMAP_HELP_COMMAND, NMAP_HELP_HELP, sizeof(NMAP_HELP_COMMAND) - 1, CommandHelp, NULL, NULL, NULL, BlackCommand },
{ NMAP_PASS_COMMAND, NMAP_PASS_HELP, sizeof(NMAP_PASS_COMMAND) - 1, CommandPass, NULL, NULL, NULL, BlackCommand },
{ NMAP_QUIT_COMMAND, NMAP_QUIT_HELP, sizeof(NMAP_QUIT_COMMAND) - 1, CommandQuit, NULL, NULL, NULL, BlackCommand },
{ NMAP_ADDRESS_RESOLVE_COMMAND, NMAP_ADDRESS_RESOLVE_HELP, sizeof(NMAP_ADDRESS_RESOLVE_COMMAND) -1, CommandAddressResolve, NULL, NULL, NULL, BlackCommand },
{ NMAP_DOMAIN_LOCATION_COMMAND, NMAP_DOMAIN_LOCATION_HELP, sizeof(NMAP_DOMAIN_LOCATION_COMMAND) -1, CommandDomainLocation, NULL, NULL, NULL, BlackCommand },
{ NULL, NULL, 0, NULL, NULL, NULL, NULL, BlackCommand }
};
static ProtocolCommand commands[] = {
{ NMAP_HELP_COMMAND, NMAP_HELP_HELP, sizeof(NMAP_HELP_COMMAND) - 1, CommandHelp, NULL, NULL },
{ NMAP_QADDM_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QADDM_COMMAND) - 1, CommandQaddm, NULL, NULL },
{ NMAP_QADDQ_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QADDQ_COMMAND) - 1, CommandQaddq, NULL, NULL },
{ NMAP_QABRT_COMMAND, NMAP_QABRT_HELP, sizeof(NMAP_QABRT_COMMAND) - 1, CommandQabrt, NULL, NULL },
{ NMAP_QBODY_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QBODY_COMMAND) - 1, CommandQbody, NULL, NULL },
{ NMAP_QBRAW_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QBRAW_COMMAND) - 1, CommandQbraw, NULL, NULL },
{ NMAP_QCOPY_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QCOPY_COMMAND) - 1, CommandQcopy, NULL, NULL },
{ NMAP_QCREA_COMMAND, NMAP_QCREA_HELP, sizeof(NMAP_QCREA_COMMAND) - 1, CommandQcrea, NULL, NULL },
{ NMAP_QDELE_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QDELE_COMMAND) - 1, CommandQdele, NULL, NULL },
{ NMAP_QDONE_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QDONE_COMMAND) - 1, CommandQdone, NULL, NULL },
{ NMAP_QDSPC_COMMAND, NMAP_QDSPC_HELP, sizeof(NMAP_QDSPC_COMMAND) - 1, CommandQdspc, NULL, NULL },
{ NMAP_QGREP_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QGREP_COMMAND) - 1, CommandQgrep, NULL, NULL },
{ NMAP_QHEAD_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QHEAD_COMMAND) - 1, CommandQhead, NULL, NULL },
{ NMAP_QINFO_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QINFO_COMMAND) - 1, CommandQinfo, NULL, NULL },
{ NMAP_QMOD_FROM_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QMOD_FROM_COMMAND) - 1, CommandQmodFrom, NULL, NULL },
{ NMAP_QMOD_FLAGS_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QMOD_FLAGS_COMMAND) - 1, CommandQmodFlags, NULL, NULL },
{ NMAP_QMOD_LOCAL_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QMOD_LOCAL_COMMAND) - 1, CommandQmodLocal, NULL, NULL },
{ NMAP_QMOD_MAILBOX_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QMOD_MAILBOX_COMMAND) - 1, CommandQmodMailbox, NULL, NULL },
{ NMAP_QMOD_RAW_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QMOD_RAW_COMMAND) - 1, CommandQmodRaw, NULL, NULL },
{ NMAP_QMOD_TO_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QMOD_TO_COMMAND) - 1, CommandQmodTo, NULL, NULL },
{ NMAP_QMIME_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QMIME_COMMAND) - 1, CommandQmime, NULL, NULL },
{ NMAP_QMOVE_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QMOVE_COMMAND) - 1, CommandQmove, NULL, NULL },
{ NMAP_QRCP_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QRCP_COMMAND) - 1, CommandQrcp, NULL, NULL },
{ NMAP_QRETR_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QRETR_COMMAND) - 1, CommandQretr, NULL, NULL },
{ NMAP_QRTS_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QRTS_COMMAND) - 1, CommandQrts, NULL, NULL },
{ NMAP_QRUN_COMMAND, NMAP_QRUN_HELP, sizeof(NMAP_QRUN_COMMAND) - 1, CommandQrun, NULL, NULL },
{ NMAP_QSRCH_DOMAIN_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QSRCH_DOMAIN_COMMAND) - 1, CommandQsrchDomain, NULL, NULL },
{ NMAP_QSRCH_HEADER_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QSRCH_HEADER_COMMAND) - 1, CommandQsrchHeader, NULL, NULL },
{ NMAP_QSRCH_BODY_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QSRCH_BODY_COMMAND) - 1, CommandQsrchBody, NULL, NULL },
{ NMAP_QSRCH_BRAW_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QSRCH_BRAW_COMMAND) - 1, CommandQsrchBraw, NULL, NULL },
{ NMAP_QSTOR_ADDRESS_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QSTOR_ADDRESS_COMMAND) - 1, CommandQstorAddress, NULL, NULL },
{ NMAP_QSTOR_CAL_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QSTOR_CAL_COMMAND) - 1, CommandQstorCal, NULL, NULL },
{ NMAP_QSTOR_FLAGS_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QSTOR_FLAGS_COMMAND) - 1, CommandQstorFlags, NULL, NULL },
{ NMAP_QSTOR_FROM_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QSTOR_FROM_COMMAND) - 1, CommandQstorFrom, NULL, NULL },
{ NMAP_QSTOR_LOCAL_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QSTOR_LOCAL_COMMAND) - 1, CommandQstorLocal, NULL, NULL },
{ NMAP_QSTOR_MESSAGE_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QSTOR_MESSAGE_COMMAND) - 1, CommandQstorMessage, NULL, NULL },
{ NMAP_QSTOR_RAW_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QSTOR_RAW_COMMAND) - 1, CommandQstorRaw, NULL, NULL },
{ NMAP_QSTOR_TO_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QSTOR_TO_COMMAND) - 1, CommandQstorTo, NULL, NULL },
{ NMAP_QUIT_COMMAND, NMAP_QUIT_HELP, sizeof(NMAP_QUIT_COMMAND) - 1, CommandQuit, NULL, NULL },
{ NMAP_QWAIT_COMMAND, NMAP_QWAIT_HELP, sizeof(NMAP_QWAIT_COMMAND) - 1, CommandQwait, NULL, NULL },
{ NMAP_QFLUSH_COMMAND, NMAP_QFLUSH_HELP, sizeof(NMAP_QFLUSH_COMMAND) -1, CommandQflush, NULL, NULL },
{ NMAP_ADDRESS_RESOLVE_COMMAND, NMAP_ADDRESS_RESOLVE_HELP, sizeof(NMAP_ADDRESS_RESOLVE_COMMAND) -1, CommandAddressResolve, NULL, NULL },
{ NMAP_DOMAIN_LOCATION_COMMAND, NMAP_DOMAIN_LOCATION_HELP, sizeof(NMAP_DOMAIN_LOCATION_COMMAND) -1, CommandDomainLocation, NULL, NULL },
{ NULL, NULL, 0, NULL, NULL, NULL }
{ NMAP_HELP_COMMAND, NMAP_HELP_HELP, sizeof(NMAP_HELP_COMMAND) - 1, CommandHelp, NULL, NULL, NULL, BlackCommand },
{ NMAP_QADDM_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QADDM_COMMAND) - 1, CommandQaddm, NULL, NULL, NULL, BlackCommand },
{ NMAP_QADDQ_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QADDQ_COMMAND) - 1, CommandQaddq, NULL, NULL, NULL, BlackCommand },
{ NMAP_QABRT_COMMAND, NMAP_QABRT_HELP, sizeof(NMAP_QABRT_COMMAND) - 1, CommandQabrt, NULL, NULL, NULL, BlackCommand },
{ NMAP_QBODY_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QBODY_COMMAND) - 1, CommandQbody, NULL, NULL, NULL, BlackCommand },
{ NMAP_QBRAW_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QBRAW_COMMAND) - 1, CommandQbraw, NULL, NULL, NULL, BlackCommand },
{ NMAP_QCOPY_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QCOPY_COMMAND) - 1, CommandQcopy, NULL, NULL, NULL, BlackCommand },
{ NMAP_QCREA_COMMAND, NMAP_QCREA_HELP, sizeof(NMAP_QCREA_COMMAND) - 1, CommandQcrea, NULL, NULL, NULL, BlackCommand },
{ NMAP_QDELE_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QDELE_COMMAND) - 1, CommandQdele, NULL, NULL, NULL, BlackCommand },
{ NMAP_QDONE_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QDONE_COMMAND) - 1, CommandQdone, NULL, NULL, NULL, BlackCommand },
{ NMAP_QDSPC_COMMAND, NMAP_QDSPC_HELP, sizeof(NMAP_QDSPC_COMMAND) - 1, CommandQdspc, NULL, NULL, NULL, BlackCommand },
{ NMAP_QGREP_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QGREP_COMMAND) - 1, CommandQgrep, NULL, NULL, NULL, BlackCommand },
{ NMAP_QHEAD_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QHEAD_COMMAND) - 1, CommandQhead, NULL, NULL, NULL, BlackCommand },
{ NMAP_QINFO_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QINFO_COMMAND) - 1, CommandQinfo, NULL, NULL, NULL, BlackCommand },
{ NMAP_QMOD_FROM_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QMOD_FROM_COMMAND) - 1, CommandQmodFrom, NULL, NULL, NULL, BlackCommand },
{ NMAP_QMOD_FLAGS_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QMOD_FLAGS_COMMAND) - 1, CommandQmodFlags, NULL, NULL, NULL, BlackCommand },
{ NMAP_QMOD_LOCAL_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QMOD_LOCAL_COMMAND) - 1, CommandQmodLocal, NULL, NULL, NULL, BlackCommand },
{ NMAP_QMOD_MAILBOX_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QMOD_MAILBOX_COMMAND) - 1, CommandQmodMailbox, NULL, NULL, NULL, BlackCommand },
{ NMAP_QMOD_RAW_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QMOD_RAW_COMMAND) - 1, CommandQmodRaw, NULL, NULL, NULL, BlackCommand },
{ NMAP_QMOD_TO_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QMOD_TO_COMMAND) - 1, CommandQmodTo, NULL, NULL, NULL, BlackCommand },
{ NMAP_QMIME_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QMIME_COMMAND) - 1, CommandQmime, NULL, NULL, NULL, BlackCommand },
{ NMAP_QMOVE_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QMOVE_COMMAND) - 1, CommandQmove, NULL, NULL, NULL, BlackCommand },
{ NMAP_QRCP_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QRCP_COMMAND) - 1, CommandQrcp, NULL, NULL, NULL, BlackCommand },
{ NMAP_QRETR_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QRETR_COMMAND) - 1, CommandQretr, NULL, NULL, NULL, BlackCommand },
{ NMAP_QRTS_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QRTS_COMMAND) - 1, CommandQrts, NULL, NULL, NULL, BlackCommand },
{ NMAP_QRUN_COMMAND, NMAP_QRUN_HELP, sizeof(NMAP_QRUN_COMMAND) - 1, CommandQrun, NULL, NULL, NULL, BlackCommand },
{ NMAP_QSRCH_DOMAIN_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QSRCH_DOMAIN_COMMAND) - 1, CommandQsrchDomain, NULL, NULL, NULL, BlackCommand },
{ NMAP_QSRCH_HEADER_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QSRCH_HEADER_COMMAND) - 1, CommandQsrchHeader, NULL, NULL, NULL, BlackCommand },
{ NMAP_QSRCH_BODY_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QSRCH_BODY_COMMAND) - 1, CommandQsrchBody, NULL, NULL, NULL, BlackCommand },
{ NMAP_QSRCH_BRAW_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QSRCH_BRAW_COMMAND) - 1, CommandQsrchBraw, NULL, NULL, NULL, BlackCommand },
{ NMAP_QSTOR_ADDRESS_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QSTOR_ADDRESS_COMMAND) - 1, CommandQstorAddress, NULL, NULL, NULL, BlackCommand },
{ NMAP_QSTOR_CAL_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QSTOR_CAL_COMMAND) - 1, CommandQstorCal, NULL, NULL, NULL, BlackCommand },
{ NMAP_QSTOR_FLAGS_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QSTOR_FLAGS_COMMAND) - 1, CommandQstorFlags, NULL, NULL, NULL, BlackCommand },
{ NMAP_QSTOR_FROM_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QSTOR_FROM_COMMAND) - 1, CommandQstorFrom, NULL, NULL, NULL, BlackCommand },
{ NMAP_QSTOR_LOCAL_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QSTOR_LOCAL_COMMAND) - 1, CommandQstorLocal, NULL, NULL, NULL, BlackCommand },
{ NMAP_QSTOR_MESSAGE_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QSTOR_MESSAGE_COMMAND) - 1, CommandQstorMessage, NULL, NULL, NULL, BlackCommand },
{ NMAP_QSTOR_RAW_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QSTOR_RAW_COMMAND) - 1, CommandQstorRaw, NULL, NULL, NULL, BlackCommand },
{ NMAP_QSTOR_TO_COMMAND, NMAP_HELP_NOT_DEFINED, sizeof(NMAP_QSTOR_TO_COMMAND) - 1, CommandQstorTo, NULL, NULL, NULL, BlackCommand },
{ NMAP_QUIT_COMMAND, NMAP_QUIT_HELP, sizeof(NMAP_QUIT_COMMAND) - 1, CommandQuit, NULL, NULL, NULL, BlackCommand },
{ NMAP_QWAIT_COMMAND, NMAP_QWAIT_HELP, sizeof(NMAP_QWAIT_COMMAND) - 1, CommandQwait, NULL, NULL, NULL, BlackCommand },
{ NMAP_QFLUSH_COMMAND, NMAP_QFLUSH_HELP, sizeof(NMAP_QFLUSH_COMMAND) -1, CommandQflush, NULL, NULL, NULL, BlackCommand },
{ NMAP_ADDRESS_RESOLVE_COMMAND, NMAP_ADDRESS_RESOLVE_HELP, sizeof(NMAP_ADDRESS_RESOLVE_COMMAND) -1, CommandAddressResolve, NULL, NULL, NULL, BlackCommand },
{ NMAP_DOMAIN_LOCATION_COMMAND, NMAP_DOMAIN_LOCATION_HELP, sizeof(NMAP_DOMAIN_LOCATION_COMMAND) -1, CommandDomainLocation, NULL, NULL, NULL, BlackCommand },
{ NULL, NULL, 0, NULL, NULL, NULL, NULL, BlackCommand }
};
int aliasFindFunc(const void *str, const void *node) {
@@ -120,9 +120,9 @@ int hostedFindFunc(const void *str1, const void *str2) {
* 2: username == domain
* 3: username == auth subsystem
*/
BOOL aliasing(char *addr, int *cnt, unsigned char *buffer) {
unsigned char *local = NULL;
unsigned char *domain = NULL;
BOOL aliasing(char *addr, int *cnt, char *buffer) {
char *local = NULL;
char *domain = NULL;
int i=-1;
BOOL result=FALSE;
@@ -239,7 +239,7 @@ BOOL aliasing(char *addr, int *cnt, unsigned char *buffer) {
int CommandAddressResolve(void *param) {
BOOL handled=FALSE;
int cnt=0;
unsigned char buffer[1024]; /* FIXME: is this too big? */
char buffer[1024]; /* FIXME: is this too big? */
QueueClient *client = (QueueClient *)param;
handled = aliasing(client->buffer + 16, &cnt, buffer);
@@ -255,8 +255,8 @@ int CommandDomainLocation(void *param) {
QueueClient *client = (QueueClient *)param;
// FIXME: is this actually used at all with our current aliasing stuff?
/* first find the domain in the request */
unsigned char *domain = client->buffer + 16;
char *domain = client->buffer + 16;
#if 0
/* now search for it */
int idx = GArrayFindSorted(Conf.hostedDomains, domain, (ArrayCompareFunc)hostedFindFunc);
@@ -271,11 +271,11 @@ int CommandDomainLocation(void *param) {
return 0;
}
int
int
CommandAuth(void *param)
{
unsigned char *ptr;
unsigned char credential[XPLHASH_MD5_LENGTH];
char *ptr;
char credential[XPLHASH_MD5_LENGTH];
QueueClient *client = (QueueClient *)param;
xpl_hash_context context;
@@ -284,7 +284,7 @@ CommandAuth(void *param)
return ConnWriteStr(client->conn, MSG3000UNKNOWN);
}
ptr += 7;
XplHashNew(&context, XPLHASH_MD5);
XplHashWrite(&context, client->authChallenge, strlen(client->authChallenge));
XplHashWrite(&context, Conf.serverHash, NMAP_HASH_SIZE);
@@ -304,11 +304,11 @@ CommandAuth(void *param)
return(-1);
}
int
int
CommandPass(void *param)
{
unsigned char *ptr;
unsigned char *pass;
char *ptr;
char *pass;
int result;
struct sockaddr_in nmap;
QueueClient *client = (QueueClient *)param;
@@ -316,32 +316,33 @@ CommandPass(void *param)
ptr = client->buffer + 4;
if (*ptr++ == ' ') {
if ( (toupper(ptr[0]) == 'U')
&& (toupper(ptr[1]) == 'S')
&& (toupper(ptr[2]) == 'E')
&& (toupper(ptr[3]) == 'R')
&& (ptr[4] == ' ')
&& (ptr[5] != '\0')
&& (!isspace(ptr[5]))
if ( (toupper(ptr[0]) == 'U')
&& (toupper(ptr[1]) == 'S')
&& (toupper(ptr[2]) == 'E')
&& (toupper(ptr[3]) == 'R')
&& (ptr[4] == ' ')
&& (ptr[5] != '\0')
&& (!isspace(ptr[5]))
&& ((pass = strchr(ptr + 5, ' ')) != NULL)) {
ptr += 5;
*pass++ = '\0';
result = MsgAuthVerifyPassword(ptr, pass);
if ((result==0) && (nmap.sin_addr.s_addr == MsgGetHostIPAddress())) {
if ((result == 0) && (MsgAuthGetUserStore(ptr, &nmap) == 0) &&
(nmap.sin_addr.s_addr == MsgGetHostIPAddress())) {
return(ConnWrite(client->conn, MSG1000OK, sizeof(MSG1000OK) - 1));
} else {
return(ConnWrite(client->conn, MSG4120USERLOCKED, sizeof(MSG4120USERLOCKED) - 1));
}
Log(LOG_NOTICE, "PASS USER failed for user from host %s", LOGIP(client->conn->socketAddress));
} else if ( (toupper(ptr[0]) == 'S')
&& (toupper(ptr[1]) == 'Y')
&& (toupper(ptr[2]) == 'S')
&& (toupper(ptr[3]) == 'T')
&& (toupper(ptr[4]) == 'E')
&& (toupper(ptr[5]) == 'M')
} else if ( (toupper(ptr[0]) == 'S')
&& (toupper(ptr[1]) == 'Y')
&& (toupper(ptr[2]) == 'S')
&& (toupper(ptr[3]) == 'T')
&& (toupper(ptr[4]) == 'E')
&& (toupper(ptr[5]) == 'M')
&& (ptr[6] == ' ')) {
ptr += 7;
@@ -362,25 +363,25 @@ CommandPass(void *param)
ConnWrite(client->conn, MSG3010BADARGC, sizeof(MSG3010BADARGC) - 1);
client->done = TRUE;
return(-1);
}
static int
static int
CommandQuit(void *param)
{
QueueClient *client = param;
client->done = TRUE;
return -1;
}
static int
static int
CommandHelp(void *param)
{
int ccode;
unsigned char *ptr;
char *ptr;
QueueClient *client = (QueueClient *)param;
ptr = client->buffer + 4;
@@ -394,7 +395,7 @@ CommandHelp(void *param)
} else {
command = ProtocolCommandTreeSearch(&Agent.authCommands, ptr);
}
if (command) {
if (command->help) {
ccode = ConnWrite(client->conn, command->help, strlen(command->help));
@@ -415,7 +416,7 @@ CommandHelp(void *param)
return(ccode);
}
void
void
QueueClientFree(void *clientp)
{
QueueClient *client = clientp;
@@ -423,11 +424,11 @@ QueueClientFree(void *clientp)
MemPrivatePoolReturnEntry(Agent.clientMemPool, client);
}
static BOOL
static BOOL
CheckTrustedHost(QueueClient *client)
{
int i = 0;
if (Conf.trustedHosts) {
/* TODO: this can be optimized a little bit */
XplRWReadLockAcquire(&Conf.lock);
@@ -441,22 +442,22 @@ int
HandleCommand(QueueClient *client)
{
int ccode = 0;
while (Agent.agent.state < BONGO_AGENT_STATE_STOPPING
&& client && client->conn && !client->done) {
client->buffer[0] = '\0';
ccode = ConnReadAnswer(client->conn, client->buffer, CONN_BUFSIZE);
if ((ccode != -1) && (ccode < CONN_BUFSIZE)) {
if ((ccode != -1) && (ccode < CONN_BUFSIZE)) {
ProtocolCommand *command;
if (client->authorized) {
command = ProtocolCommandTreeSearch(&Agent.commands, client->buffer);
} else {
command = ProtocolCommandTreeSearch(&Agent.authCommands, client->buffer);
command = ProtocolCommandTreeSearch(&Agent.authCommands, client->buffer);
}
if (command) {
ccode = command->handler(client);
} else {
@@ -465,7 +466,7 @@ HandleCommand(QueueClient *client)
} else {
ccode = ConnWrite(client->conn, MSG3240NOAUTH, sizeof(MSG3240NOAUTH) - 1);
}
Log(LOG_DEBUG, "Handled command from %s", LOGIP(client->conn->socketAddress));
}
} else if (ccode == -1) {
@@ -477,11 +478,11 @@ HandleCommand(QueueClient *client)
}
}
return(ccode);
return(ccode);
}
static int
ProcessClient(void *clientp, Connection *conn)
ProcessClient(void *clientp, Connection *conn)
{
QueueClient *client = clientp;
client->conn = conn;
@@ -495,11 +496,11 @@ ProcessClient(void *clientp, Connection *conn)
} else {
ccode = ConnWriteF(client->conn, "1000 %s %s\r\n", BongoGlobals.hostname, MSG1000READY);
}
if (ccode == -1) {
return -1;
}
if ((ccode = ConnFlush(client->conn)) == -1) {
return -1;
}
@@ -507,9 +508,10 @@ ProcessClient(void *clientp, Connection *conn)
return HandleCommand(client);
}
static void
static void
QueueServer(void *ignored)
{
UNUSED_PARAMETER(ignored);
XplRenameThread(XplGetThreadID(), AGENT_DN " Server");
XplSafeIncrement(Agent.activeThreads);
@@ -556,7 +558,7 @@ ServerSocketInit(int port)
conn->socketAddress.sin_port = htons(port);
conn->socketAddress.sin_addr.s_addr = MsgGetAgentBindIPAddress();
/* Get root privs back for the bind. It's ok if this fails -
/* Get root privs back for the bind. It's ok if this fails -
* the user might not need to be root to bind to the port */
XplSetEffectiveUserId(0);
@@ -589,8 +591,10 @@ CheckDiskspace(BongoAgent *agent)
unsigned long bytesPerBlock;
unsigned long wantFree;
UNUSED_PARAMETER(agent);
bytesPerBlock = XplGetDiskBlocksize(Conf.spoolPath);
freeBlocks = XplGetDiskspaceFree(Conf.spoolPath);
freeBlocks = XplGetDiskspaceFree(Conf.spoolPath);
wantFree = (Conf.minimumFree / bytesPerBlock) + 1;
if (freeBlocks != 0x7f000000) {
@@ -600,7 +604,7 @@ CheckDiskspace(BongoAgent *agent)
/* overflow if a volume had more than 16 TB. */
Agent.flags |= QUEUE_AGENT_DISK_SPACE_LOW;
Log(LOG_ERROR, "Disk space for %s low: have %ld free, want %ld.", Conf.spoolPath, freeBlocks, wantFree);
} else {
Agent.flags &= ~QUEUE_AGENT_DISK_SPACE_LOW;
@@ -623,19 +627,19 @@ CheckLoad(BongoAgent *agent)
if (!Conf.loadMonitorDisabled) {
current = XplGetServerUtilization(&upTime, &idleTime);
if (current <= Conf.loadMonitorLow) {
if (state) {
if (Conf.defaultConcurrentWorkers > Conf.maxConcurrentWorkers) {
Conf.maxConcurrentWorkers *= 2;
}
state = 0;
} else {
if (Conf.defaultConcurrentWorkers > Conf.maxConcurrentWorkers) {
Conf.maxConcurrentWorkers *= 2;
}
if (Conf.defaultSequentialWorkers > Conf.maxSequentialWorkers) {
Conf.maxSequentialWorkers *= 2;
}
@@ -653,12 +657,12 @@ CheckLoad(BongoAgent *agent)
}
Conf.queueCheck = CalculateCheckQueueLimit(Conf.maxConcurrentWorkers, Conf.maxSequentialWorkers);
}
}
}
}
#endif
static void
SignalHandler(int sigtype)
static void
SignalHandler(int sigtype)
{
BongoAgentHandleSignal(&Agent.agent, sigtype);
}
@@ -672,13 +676,16 @@ XplServiceMain(int argc, char *argv[])
int ccode;
int startupOpts;
UNUSED_PARAMETER(argc);
UNUSED_PARAMETER(argv);
LogStart();
if (XplSetRealUser(MsgGetUnprivilegedUser()) < 0) {
Log(LOG_ERROR, "Could not drop to unprivileged user '%s'", MsgGetUnprivilegedUser());
return -1;
}
XplInit();
/* Set the default port */
@@ -691,7 +698,7 @@ XplServiceMain(int argc, char *argv[])
Log(LOG_ERROR, "Initialization failed exiting.");
return -1;
}
XplRWLockInit(&Conf.lock);
XplSafeWrite(Agent.activeThreads, 0);
@@ -733,9 +740,8 @@ XplServiceMain(int argc, char *argv[])
XplStartMainThread(AGENT_NAME, &id, QueueServer, 8192, NULL, ccode);
LogShutdown();
XplUnloadApp(XplGetThreadID());
return 0;
}
+6 -6
View File
@@ -46,10 +46,10 @@ typedef struct {
BOOL done;
/* Buffers */
unsigned char authChallenge[MAXEMAILNAMESIZE + 1];
unsigned char buffer[CONN_BUFSIZE + 1];
unsigned char line[CONN_BUFSIZE + 1];
unsigned char path[XPL_MAX_PATH + 1];
char authChallenge[MAXEMAILNAMESIZE + 1];
char buffer[CONN_BUFSIZE + 1];
char line[CONN_BUFSIZE + 1];
char path[XPL_MAX_PATH + 1];
/* Active queue entry */
struct {
@@ -60,7 +60,7 @@ typedef struct {
unsigned long id;
unsigned long target;
unsigned char workQueue[12];
char workQueue[12];
MIMEReportStruct *report;
} entry;
@@ -95,7 +95,7 @@ extern QueueAgent Agent;
void QueueClientFree(void *clientp);
int HandleCommand(QueueClient *client);
BOOL aliasing(char *addr, int *cnt, unsigned char *buffer);
BOOL aliasing(char *addr, int *cnt, char *buffer);
#define STACKSPACE_Q (1024*80)