diff --git a/CMakeLists.txt b/CMakeLists.txt index 285c2de..13604f5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,11 @@ cmake_minimum_required(VERSION 2.6) cmake_policy(VERSION 2.6) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/") +set(BONGO_V_MAJOR 0) +set(BONGO_V_MINOR 1) +set(BONGO_V_BUILD 0) +set(BONGO_V_STR "${BONGO_V_MAJOR}.${BONGO_V_MINOR}.${BONGO_V_BUILD}") + # arguments we can supply to the build system - TODO set(BONGO_USER "root" CACHE STRING "User account Bongo should run under") option(CONN_TRACE "Enable connection tracing" OFF) @@ -35,11 +40,18 @@ include_directories(BEFORE ${CMAKE_CURRENT_SOURCE_DIR}/include/) include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR}/include/) # now build our various libraries, agents, binaries. -foreach (LIBRARY xpl streamio logging msgapi connio bongoutil - json cal nmap python/libbongo python/bongo) +# DO NOT ALTER (SO)VERSION ON LIBRARIES WITHOUT ASKING! +foreach (LIBRARY xpl streamio logging msgapi connio util json cal nmap) add_subdirectory (src/libs/${LIBRARY}) + set_target_properties(bongo${LIBRARY} PROPERTIES + SOVERSION 0 + VERSION ${BONGO_V_STR} + ) endforeach (LIBRARY) +add_subdirectory(src/libs/python/libbongo) +add_subdirectory(src/libs/python/bongo) + foreach (AGENT antispam avirus imap pop queue rules smtp store) add_subdirectory (src/agents/${AGENT}) endforeach (AGENT) diff --git a/cmake/Distribution.cmake b/cmake/Distribution.cmake index e2782e4..6a003c1 100644 --- a/cmake/Distribution.cmake +++ b/cmake/Distribution.cmake @@ -2,9 +2,9 @@ set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Mail and calendering made simple") set(CPACK_PACKAGE_VENDOR "Bongo Project") set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README") set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING") -set(CPACK_PACKAGE_VERSION_MAJOR "0") -set(CPACK_PACKAGE_VERSION_MINOR "1") -set(CPACK_PACKAGE_VERSION_PATCH "0") +set(CPACK_PACKAGE_VERSION_MAJOR "${BONGO_V_MAJOR}") +set(CPACK_PACKAGE_VERSION_MINOR "${BONGO_V_MINOR}") +set(CPACK_PACKAGE_VERSION_PATCH "${BONGO_V_PATCH}") set(CPACK_PACKAGE_INSTALL_DIRECTORY "CMake ${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}") diff --git a/include/bongoagent.h b/include/bongoagent.h index a353829..b49b84e 100644 --- a/include/bongoagent.h +++ b/include/bongoagent.h @@ -96,7 +96,7 @@ typedef struct _BongoConfigItem { } BongoConfigItem; BOOL ReadBongoConfiguration(BongoConfigItem *config, char *filename); -BOOL ProcessBongoConfiguration(BongoConfigItem *config, const BongoJsonNode *node); +BOOL ProcessBongoConfiguration(BongoConfigItem *config, BongoJsonNode *node); BOOL SetBongoConfigItem(BongoConfigItem *schema, BongoJsonNode *node); void FreeBongoConfiguration(BongoConfigItem *config); diff --git a/src/agents/queue/conf.c b/src/agents/queue/conf.c index 427232e..1c2a8e0 100644 --- a/src/agents/queue/conf.c +++ b/src/agents/queue/conf.c @@ -22,6 +22,7 @@ #include +#include "queued.h" #include "conf.h" #include "queue.h" @@ -203,7 +204,7 @@ ReadConfiguration (BOOL *recover) unsigned int x; for(x=0;xlen;x++) { - unsigned char *aconfig; + char *aconfig; unsigned char path[100]; BongoJsonNode *node; struct _AliasStruct a; diff --git a/src/agents/queue/mime.c b/src/agents/queue/mime.c index aea67f4..853ba51 100644 --- a/src/agents/queue/mime.c +++ b/src/agents/queue/mime.c @@ -228,7 +228,7 @@ SendMimeDetails(Connection *conn, MIMEReportStruct *report) for (i=0; i < parts; i++) { /* 2002 */ if (XplStrCaseCmp(part[i].subtype, "RFC822") && ((i + 1) < parts)) { - ccode = ConnWriteF(conn, "2002-%s %s %s %s \"%s\" %d %lu %lu %lu %lu %lu\r\n", + ccode = ConnWriteF(conn, "2002-%s %s %s %s \"%s\" %ld %lu %lu %lu %lu %lu\r\n", part[i].type, part[i].subtype, part[i].charset, @@ -241,7 +241,7 @@ SendMimeDetails(Connection *conn, MIMEReportStruct *report) part[i + 1].start - part[i].start, part[i].lines); } else if (XplStrCaseCmp(part[i].type, "TEXT")) { - ccode = ConnWriteF(conn, "2002-%s %s %s %s \"%s\" %d %lu %lu %lu 0 %lu\r\n", + ccode = ConnWriteF(conn, "2002-%s %s %s %s \"%s\" %ld %lu %lu %lu 0 %lu\r\n", part[i].type, part[i].subtype, part[i].charset, @@ -253,7 +253,7 @@ SendMimeDetails(Connection *conn, MIMEReportStruct *report) part[i].length, part[i].lines); } else { - ccode = ConnWriteF(conn, "2002-%s %s %s %s \"%s\" %d %lu %lu %lu 0 0\r\n", + ccode = ConnWriteF(conn, "2002-%s %s %s %s \"%s\" %ld %lu %lu %lu 0 0\r\n", part[i].type, part[i].subtype, part[i].charset, diff --git a/src/agents/queue/queue.c b/src/agents/queue/queue.c index 9df8ddb..beabf01 100644 --- a/src/agents/queue/queue.c +++ b/src/agents/queue/queue.c @@ -2135,7 +2135,7 @@ CreateDSNMessage(FILE *data, FILE *control, FILE *rtsData, FILE *rtsControl, BOO case DELIVER_QUOTA_EXCEEDED: { if (Conf.quotaMessage && (Conf.quotaMessage[0] != '\0')) { - fprintf(rtsData, Conf.quotaMessage); + fprintf(rtsData, "%s", Conf.quotaMessage); } else { fprintf(rtsData, DEFAULT_QUOTA_MESSAGE); } diff --git a/src/agents/queue/queued.c b/src/agents/queue/queued.c index 1457174..8d7fcef 100644 --- a/src/agents/queue/queued.c +++ b/src/agents/queue/queued.c @@ -242,7 +242,7 @@ int CommandAddressResolve(void *param) { unsigned char buffer[1024]; /* FIXME: is this too big? */ QueueClient *client = (QueueClient *)param; - handled = aliasing(client->buffer + 16, &cnt, &buffer); + handled = aliasing(client->buffer + 16, &cnt, buffer); if (!handled) { ConnWriteF(client->conn, MSG4001NO_USER"\r\n", client->buffer + 16); } else { diff --git a/src/agents/smtp/smtpd.c b/src/agents/smtp/smtpd.c index cccc6e0..8f41b57 100644 --- a/src/agents/smtp/smtpd.c +++ b/src/agents/smtp/smtpd.c @@ -3969,7 +3969,7 @@ ReadConfiguration (void) LocalAddress = MsgGetHostIPAddress (); - MsgGetServerCredential(&NMAPHash); + MsgGetServerCredential(NMAPHash); return (TRUE); } diff --git a/src/apps/config/store.c b/src/apps/config/store.c index 80c119a..9717d14 100644 --- a/src/apps/config/store.c +++ b/src/apps/config/store.c @@ -115,7 +115,7 @@ PutOrReplaceConfig(StoreClient *client, char *collection, char *filename, char * char command[1024]; snprintf(command, 1000, "INFO %s/%s\r\n", collection, filename); - ccode = NMAPSendCommandF(client->conn, command); + ccode = NMAPSendCommandF(client->conn, "%s", command); ccode = NMAPReadAnswer(client->conn, client->buffer, sizeof(client->buffer), TRUE); while (ccode == 2001) ccode = NMAPReadAnswer(client->conn, client->buffer, sizeof(client->buffer), TRUE); @@ -130,7 +130,7 @@ PutOrReplaceConfig(StoreClient *client, char *collection, char *filename, char * collection, STORE_DOCTYPE_CONFIG, len, filename); } - NMAPSendCommandF(client->conn, command); + NMAPSendCommandF(client->conn, "%s", command); ccode = NMAPReadAnswer(client->conn, client->buffer, sizeof(client->buffer), TRUE); if (ccode == 2002) { @@ -151,7 +151,7 @@ BOOL NMAPSimpleCommand(StoreClient *client, char *command) { CCode ccode; - NMAPSendCommandF(client->conn, command); + NMAPSendCommandF(client->conn, "%s", command); ccode = NMAPReadAnswer(client->conn, client->buffer, sizeof(client->buffer), TRUE); if (1000 == ccode) return TRUE; diff --git a/src/apps/manager/manager.c b/src/apps/manager/manager.c index 134e550..adb0242 100644 --- a/src/apps/manager/manager.c +++ b/src/apps/manager/manager.c @@ -302,7 +302,7 @@ StartAgentsWithPriority(int priority, BOOL onlyCrashed, BOOL printMessage) static BOOL LoadAgentConfiguration() { - unsigned char *config; + char *config; BOOL retcode = FALSE; BongoJsonNode *node; BongoJsonResult res; diff --git a/src/libs/msgapi/cookie.c b/src/libs/msgapi/cookie.c index 04a2965..6e50dda 100644 --- a/src/libs/msgapi/cookie.c +++ b/src/libs/msgapi/cookie.c @@ -158,7 +158,7 @@ MsgAuthDeleteCookie(const char *username, const char *token) // next, clear the existing file rewind(cookiefile); - ftruncate((int)cookiefile, 0); + ftruncate(fileno(cookiefile), 0); // now, go through memory writing out only the cookies we want to keep for (i = 0; i < cookiecount; i++) { diff --git a/src/libs/msgapi/sqldb.c b/src/libs/msgapi/sqldb.c index ee7d3c9..8b90001 100644 --- a/src/libs/msgapi/sqldb.c +++ b/src/libs/msgapi/sqldb.c @@ -180,7 +180,7 @@ MsgSQLBeginTransaction(MsgSQLHandle *handle) case SQLITE_BUSY: return -2; default: - printf("Database error %d : %s\n", result, sqlite3_errmsg(stmt->stmt)); + printf("Database error %d : %s\n", result, sqlite3_errmsg(handle->db)); //DStoreStmtError(handle, stmt); return -1; } @@ -212,7 +212,7 @@ MsgSQLCommitTransaction(MsgSQLHandle *handle) if (SQLITE_DONE != result) { // DStoreStmtError(handle, stmt); - printf("Database commit error %d: %s\n", result, sqlite3_errmsg(stmt->stmt)); + printf("Database commit error %d: %s\n", result, sqlite3_errmsg(handle->db)); return -1; } return 0; @@ -440,10 +440,8 @@ MsgSQLResultInt64(MsgSQLStatement *_stmt, int column) int MsgSQLResultText(MsgSQLStatement *_stmt, int column, char *result, size_t result_size) { - char *out; - + const char *out = sqlite3_column_text(_stmt->stmt, column); DEBUG(" - result text %ld\n", _stmt->stmt) - out = sqlite3_column_text(_stmt->stmt, column); if (out != NULL) strncpy(result, out, result_size); @@ -453,6 +451,6 @@ MsgSQLResultText(MsgSQLStatement *_stmt, int column, char *result, size_t result int MsgSQLResultTextPtr(MsgSQLStatement *_stmt, int column, char **ptr) { - *ptr = sqlite3_column_text(_stmt->stmt, column); + *ptr = strdup(sqlite3_column_text(_stmt->stmt, column)); return 0; } diff --git a/src/libs/nmap/bongoagent.c b/src/libs/nmap/bongoagent.c index 7317595..9c90c89 100644 --- a/src/libs/nmap/bongoagent.c +++ b/src/libs/nmap/bongoagent.c @@ -274,7 +274,7 @@ ReadBongoConfiguration(BongoConfigItem *config, char *filename) { */ BOOL -ProcessBongoConfiguration(BongoConfigItem *config, const BongoJsonNode *node) +ProcessBongoConfiguration(BongoConfigItem *config, BongoJsonNode *node) { while (config->type != BONGO_JSON_NULL) { BongoJsonNode *result = BongoJsonJPath(node, config->source); diff --git a/src/libs/bongoutil/CMakeLists.txt b/src/libs/util/CMakeLists.txt similarity index 100% rename from src/libs/bongoutil/CMakeLists.txt rename to src/libs/util/CMakeLists.txt diff --git a/src/libs/bongoutil/array.c b/src/libs/util/array.c similarity index 100% rename from src/libs/bongoutil/array.c rename to src/libs/util/array.c diff --git a/src/libs/bongoutil/bongokeyword.c b/src/libs/util/bongokeyword.c similarity index 100% rename from src/libs/bongoutil/bongokeyword.c rename to src/libs/util/bongokeyword.c diff --git a/src/libs/bongoutil/bongothreadpool.c b/src/libs/util/bongothreadpool.c similarity index 100% rename from src/libs/bongoutil/bongothreadpool.c rename to src/libs/util/bongothreadpool.c diff --git a/src/libs/bongoutil/bongoutil.c b/src/libs/util/bongoutil.c similarity index 100% rename from src/libs/bongoutil/bongoutil.c rename to src/libs/util/bongoutil.c diff --git a/src/libs/bongoutil/fileio.c b/src/libs/util/fileio.c similarity index 100% rename from src/libs/bongoutil/fileio.c rename to src/libs/util/fileio.c diff --git a/src/libs/bongoutil/hashtable.c b/src/libs/util/hashtable.c similarity index 100% rename from src/libs/bongoutil/hashtable.c rename to src/libs/util/hashtable.c diff --git a/src/libs/bongoutil/lists.c b/src/libs/util/lists.c similarity index 100% rename from src/libs/bongoutil/lists.c rename to src/libs/util/lists.c diff --git a/src/libs/bongoutil/memmgrp.h b/src/libs/util/memmgrp.h similarity index 100% rename from src/libs/bongoutil/memmgrp.h rename to src/libs/util/memmgrp.h diff --git a/src/libs/bongoutil/memstack.c b/src/libs/util/memstack.c similarity index 100% rename from src/libs/bongoutil/memstack.c rename to src/libs/util/memstack.c diff --git a/src/libs/bongoutil/pools.c b/src/libs/util/pools.c similarity index 100% rename from src/libs/bongoutil/pools.c rename to src/libs/util/pools.c diff --git a/src/libs/bongoutil/quicksort.c b/src/libs/util/quicksort.c similarity index 100% rename from src/libs/bongoutil/quicksort.c rename to src/libs/util/quicksort.c diff --git a/src/libs/bongoutil/stringbuilder.c b/src/libs/util/stringbuilder.c similarity index 100% rename from src/libs/bongoutil/stringbuilder.c rename to src/libs/util/stringbuilder.c diff --git a/src/libs/bongoutil/tests/bongokeyword_test.c b/src/libs/util/tests/bongokeyword_test.c similarity index 100% rename from src/libs/bongoutil/tests/bongokeyword_test.c rename to src/libs/util/tests/bongokeyword_test.c diff --git a/src/libs/bongoutil/tests/checktest.c b/src/libs/util/tests/checktest.c similarity index 100% rename from src/libs/bongoutil/tests/checktest.c rename to src/libs/util/tests/checktest.c diff --git a/src/libs/bongoutil/tests/stringops_test.c b/src/libs/util/tests/stringops_test.c similarity index 100% rename from src/libs/bongoutil/tests/stringops_test.c rename to src/libs/util/tests/stringops_test.c diff --git a/src/libs/bongoutil/tests/template.c b/src/libs/util/tests/template.c similarity index 100% rename from src/libs/bongoutil/tests/template.c rename to src/libs/util/tests/template.c diff --git a/src/libs/bongoutil/tests/utf7mod_test.c b/src/libs/util/tests/utf7mod_test.c similarity index 100% rename from src/libs/bongoutil/tests/utf7mod_test.c rename to src/libs/util/tests/utf7mod_test.c diff --git a/src/libs/bongoutil/utf7mod.c b/src/libs/util/utf7mod.c similarity index 100% rename from src/libs/bongoutil/utf7mod.c rename to src/libs/util/utf7mod.c