Merge remove-mdb branch onto trunk, branch is now closed!

This commit is contained in:
alexhudson
2008-01-23 08:20:27 +00:00
parent 39d68be761
commit d337c3d486
298 changed files with 10738 additions and 18877 deletions
+13 -14
View File
@@ -1,19 +1,19 @@
# -*- Makefile -*-
pkgpyexecdir = $(pyexecdir)/libbongo
pkgpyexec_PYTHON := \
pkgpyexec_PYTHON = \
src/libs/python/libbongo/__init__.py
pkgpyexec_LTLIBRARIES := \
pkgpyexec_LTLIBRARIES = \
libs.la \
bootstrap.la
libs_la_SOURCES := \
# src/libs/python/libbongo/mdb.c
libs_la_SOURCES = \
src/libs/python/libbongo/cal.c \
src/libs/python/libbongo/calcmd.c \
src/libs/python/libbongo/libs.c \
src/libs/python/libbongo/libs.h \
src/libs/python/libbongo/mdb.c \
src/libs/python/libbongo/msgapi.c \
src/libs/python/libbongo/msgapi-defs.c \
src/libs/python/libbongo/msgapi-defs.h \
@@ -22,40 +22,39 @@ libs_la_SOURCES := \
src/libs/python/libbongo/streamio.c \
src/libs/python/libbongo/json.c \
src/libs/python/libbongo/json.h \
src/libs/python/libbongo/tests.c \
src/libs/python/libbongo/bongoutil.c
libs_la_CPPFLAGS := $(AM_CPPFLAGS) \
libs_la_CPPFLAGS = $(AM_CPPFLAGS) \
$(PYTHON_CPPFLAGS) \
$(bongo_CFLAGS)
libs_la_LDFLAGS := -avoid-version -module
libs_la_LIBADD := \
libs_la_LDFLAGS = -avoid-version -module
libs_la_LIBADD = \
$(PYTHON_LIBS) \
libbongocal.la \
libbongocalcmd.la \
libbongoutil.la \
libbongo-json.la \
libbongomdb.la \
libbongomsgapi.la \
libbongostreamio.la
bootstrap_la_SOURCES := \
# src/libs/python/libbongo/mdb.c
bootstrap_la_SOURCES = \
src/libs/python/libbongo/bootstrap.c \
src/libs/python/libbongo/bootstrap.h \
src/libs/python/libbongo/mdb.c \
src/libs/python/libbongo/msgapi-defs.c \
src/libs/python/libbongo/msgapi-defs.h \
src/libs/python/libbongo/pybongo.c \
src/libs/python/libbongo/pybongo.h
bootstrap_la_CPPFLAGS := $(AM_CPPFLAGS) \
bootstrap_la_CPPFLAGS = $(AM_CPPFLAGS) \
$(PYTHON_CPPFLAGS) \
$(bongo_CFLAGS)
bootstrap_la_LDFLAGS := -avoid-version -module
bootstrap_la_LIBADD := \
bootstrap_la_LDFLAGS = -avoid-version -module
bootstrap_la_LIBADD = \
$(PYTHON_LIBS) \
libbongomdb.la \
libbongomsgapi.la
src/libs/python/libbongo/libs.so: libs.la
-3
View File
@@ -31,7 +31,6 @@
#include "bootstrap.h"
#include "msgapi-defs.h"
#include <bongo-config.h>
#include <mdb.h>
#include <memmgr.h>
#include <msgapi.h>
@@ -54,7 +53,6 @@ PyMethodDef MsgApiMethods[] = {
PyMODINIT_FUNC
initbootstrap()
{
MDBHandle directoryHandle=NULL;
char dbfdir[PATH_MAX];
/* Initialize the various bongo libraries */
@@ -68,7 +66,6 @@ initbootstrap()
PyObject *module = Py_InitModule("bootstrap", ModuleMethods);
/* Add the Bongo libs */
AddLibrary(module, "mdb", MdbMethods, MdbEnums);
AddLibrary(module, "msgapi", MsgApiMethods, MsgApiEnums);
}
+2 -1
View File
@@ -180,7 +180,8 @@ cal_JsonToIcal(PyObject *self, PyObject *args)
if (comp) {
PyObject *ret;
ret = Py_BuildValue("s", icalcomponent_as_ical_string(comp));
char *data = icalcomponent_as_ical_string(comp);
ret = PyUnicode_Decode(data, strlen(data), "utf-8", "strict");
icalcomponent_free(comp);
return ret;
} else {
+6 -15
View File
@@ -25,7 +25,6 @@
#include "pybongo.h"
#include <bongo-config.h>
#include <xpl.h>
#include <mdb.h>
#include <connio.h>
#include <memmgr.h>
#include <msgapi.h>
@@ -50,12 +49,11 @@ extern EnumItemDef MsgApiEnums[];
extern PyMethodDef StreamIOMethods[];
extern PyMethodDef BongoJsonMethods[];
extern PyMethodDef BongoUtilMethods[];
extern PyMethodDef TestMethods[];
PyMODINIT_FUNC
initlibs()
{
MDBHandle directoryHandle=NULL;
char dbfdir[PATH_MAX];
/* Initialize the various bongo libraries */
@@ -71,22 +69,15 @@ initlibs()
return;
}
directoryHandle = MsgInit();
if (!directoryHandle) {
PyErr_SetString(PyExc_ImportError,
"bongo.libs error: MsgInit() failed");
return;
}
MsgInit();
MsgGetDBFDir(dbfdir);
if (!BongoCalInit(dbfdir)) {
if (!BongoCalInit(MsgGetDir(MSGAPI_DIR_DBF, NULL, 0))) {
PyErr_SetString(PyExc_ImportError,
"bongo.libs error: BongoCalInit() failed");
return;
}
if (!NMAPInitialize(directoryHandle)) {
if (!NMAPInitialize()) {
PyErr_SetString(PyExc_ImportError,
"bongo.libs error: NMAPInitialize() failed");
return;
@@ -110,11 +101,11 @@ initlibs()
/* Add the Bongo libs */
AddLibrary(module, "cal", CalMethods, NULL);
AddLibrary(module, "calcmd", CalCmdMethods, CalCmdEnums);
AddLibrary(module, "mdb", MdbMethods, MdbEnums);
AddLibrary(module, "msgapi", MsgApiMethods, MsgApiEnums);
AddLibrary(module, "msgapi", MsgApiMethods, NULL);
AddLibrary(module, "streamio", StreamIOMethods, NULL);
AddLibrary(module, "bongojson", BongoJsonMethods, NULL);
AddLibrary(module, "bongoutil", BongoUtilMethods, NULL);
AddLibrary(module, "tests", TestMethods, NULL);
BongoJsonPostInit(module);
BongoCalPostInit(module);
-286
View File
@@ -1,294 +1,8 @@
#include <Python.h>
#include "msgapi-defs.h"
PyObject *
msgapi_GetConfigProperty(PyObject *self, PyObject *args)
{
unsigned char *property;
unsigned char buf[256]; //MSGSRV_CONFIG_MAX_PROP_CHARS + 1
if (!PyArg_ParseTuple(args, "s", &property)) {
return NULL;
}
if(MsgGetConfigProperty(buf, property)) {
return Py_BuildValue("s", buf);
}
return NULL;
}
PyObject *
msgapi_GetUnprivilegedUser(PyObject *self, PyObject *args)
{
return Py_BuildValue("z", MsgGetUnprivilegedUser());
}
EnumItemDef MsgApiEnums[] = {
{"MAX_PROP_CHARS", MSGSRV_CONFIG_MAX_PROP_CHARS, NULL},
{"MESSAGING_SERVER", 0, MSGSRV_CONFIG_PROP_MESSAGING_SERVER},
{"WEB_ADMIN_SERVER", 0, MSGSRV_CONFIG_PROP_WEB_ADMIN_SERVER},
{"DEFAULT_CONTEXT", 0, MSGSRV_CONFIG_PROP_DEFAULT_CONTEXT},
{"BONGO_SERVICES", 0, MSGSRV_CONFIG_PROP_BONGO_SERVICES},
{"CONFIG_FILENAME", 0, MSGSRV_CONFIG_FILENAME},
{"ROOT", 0, MSGSRV_ROOT},
{"USER_SETTINGS_ROOT", 0, MSGSRV_USER_SETTINGS_ROOT},
{"C_ROOT", 0, MSGSRV_C_ROOT},
{"C_SERVER", 0, MSGSRV_C_SERVER},
{"C_WEBADMIN", 0, MSGSRV_C_WEBADMIN},
{"C_ADDRESSBOOK", 0, MSGSRV_C_ADDRESSBOOK},
{"C_AGENT", 0, MSGSRV_C_AGENT},
{"C_ALIAS", 0, MSGSRV_C_ALIAS},
{"C_ANTISPAM", 0, MSGSRV_C_ANTISPAM},
{"C_FINGER", 0, MSGSRV_C_FINGER},
{"C_GATEKEEPER", 0, MSGSRV_C_GATEKEEPER},
{"C_CONNMGR", 0, MSGSRV_C_CONNMGR},
{"C_IMAP", 0, MSGSRV_C_IMAP},
{"C_LIST", 0, MSGSRV_C_LIST},
{"C_NDSLIST", 0, MSGSRV_C_NDSLIST},
{"C_LISTCONTAINER", 0, MSGSRV_C_LISTCONTAINER},
{"C_LISTUSER", 0, MSGSRV_C_LISTUSER},
{"C_LISTAGENT", 0, MSGSRV_C_LISTAGENT},
{"C_STORE", 0, MSGSRV_C_STORE},
{"C_QUEUE", 0, MSGSRV_C_QUEUE},
{"C_POP", 0, MSGSRV_C_POP},
{"C_PROXY", 0, MSGSRV_C_PROXY},
{"C_RULESRV", 0, MSGSRV_C_RULESRV},
{"C_SIGNUP", 0, MSGSRV_C_SIGNUP},
{"C_SMTP", 0, MSGSRV_C_SMTP},
{"C_PARENTCONTAINER", 0, MSGSRV_C_PARENTCONTAINER},
{"C_PARENTOBJECT", 0, MSGSRV_C_PARENTOBJECT},
{"C_TEMPLATECONTAINER", 0, MSGSRV_C_TEMPLATECONTAINER},
{"C_ITIP", 0, MSGSRV_C_ITIP},
{"C_ANTIVIRUS", 0, MSGSRV_C_ANTIVIRUS},
{"C_RESOURCE", 0, MSGSRV_C_RESOURCE},
{"C_CONNMGR_MODULE", 0, MSGSRV_C_CONNMGR_MODULE},
{"C_CM_USER_MODULE", 0, MSGSRV_C_CM_USER_MODULE},
{"C_CM_LISTS_MODULE", 0, MSGSRV_C_CM_LISTS_MODULE},
{"C_CM_RBL_MODULE", 0, MSGSRV_C_CM_RBL_MODULE},
{"C_CM_RDNS_MODULE", 0, MSGSRV_C_CM_RDNS_MODULE},
{"C_CALCMD", 0, MSGSRV_C_CALCMD},
{"C_COLLECTOR", 0, MSGSRV_C_COLLECTOR},
{"C_USER", 0, MSGSRV_C_USER},
{"C_ORGANIZATIONAL_ROLE", 0, MSGSRV_C_ORGANIZATIONAL_ROLE},
{"C_ORGANIZATION", 0, MSGSRV_C_ORGANIZATION},
{"C_ORGANIZATIONAL_UNIT", 0, MSGSRV_C_ORGANIZATIONAL_UNIT},
{"C_GROUP", 0, MSGSRV_C_GROUP},
{"C_USER_SETTINGS_CONTAINER", 0, MSGSRV_C_USER_SETTINGS_CONTAINER},
{"C_USER_SETTINGS", 0, MSGSRV_C_USER_SETTINGS},
{"AGENT_ADDRESSBOOK", 0, MSGSRV_AGENT_ADDRESSBOOK},
{"AGENT_ALIAS", 0, MSGSRV_AGENT_ALIAS},
{"AGENT_ANTISPAM", 0, MSGSRV_AGENT_ANTISPAM},
{"AGENT_FINGER", 0, MSGSRV_AGENT_FINGER},
{"AGENT_GATEKEEPER", 0, MSGSRV_AGENT_GATEKEEPER},
{"AGENT_CALCMD", 0, MSGSRV_AGENT_CALCMD},
{"AGENT_CONNMGR", 0, MSGSRV_AGENT_CONNMGR},
{"AGENT_IMAP", 0, MSGSRV_AGENT_IMAP},
{"AGENT_LIST", 0, MSGSRV_AGENT_LIST},
{"AGENT_STORE", 0, MSGSRV_AGENT_STORE},
{"AGENT_QUEUE", 0, MSGSRV_AGENT_QUEUE},
{"AGENT_POP", 0, MSGSRV_AGENT_POP},
{"AGENT_PROXY", 0, MSGSRV_AGENT_PROXY},
{"AGENT_RULESRV", 0, MSGSRV_AGENT_RULESRV},
{"AGENT_SIGNUP", 0, MSGSRV_AGENT_SIGNUP},
{"AGENT_SMTP", 0, MSGSRV_AGENT_SMTP},
{"AGENT_ITIP", 0, MSGSRV_AGENT_ITIP},
{"AGENT_ANTIVIRUS", 0, MSGSRV_AGENT_ANTIVIRUS},
{"AGENT_DMC", 0, MSGSRV_AGENT_DMC},
{"AGENT_CMUSER", 0, MSGSRV_AGENT_CMUSER},
{"AGENT_CMLISTS", 0, MSGSRV_AGENT_CMLISTS},
{"AGENT_CMRBL", 0, MSGSRV_AGENT_CMRBL},
{"AGENT_CMRDNS", 0, MSGSRV_AGENT_CMRDNS},
{"AGENT_COLLECTOR", 0, MSGSRV_AGENT_COLLECTOR},
{"A_AGENT_STATUS", 0, MSGSRV_A_AGENT_STATUS},
{"A_ALIAS", 0, MSGSRV_A_ALIAS},
{"A_AUTHENTICATION_REQUIRED", 0, MSGSRV_A_AUTHENTICATION_REQUIRED},
{"A_CONFIGURATION", 0, MSGSRV_A_CONFIGURATION},
{"A_CLIENT", 0, MSGSRV_A_CLIENT},
{"A_CONTEXT", 0, MSGSRV_A_CONTEXT},
{"A_DOMAIN", 0, MSGSRV_A_DOMAIN},
{"A_EMAIL_ADDRESS", 0, MSGSRV_A_EMAIL_ADDRESS},
{"A_DISABLED", 0, MSGSRV_A_DISABLED},
{"A_FINGER_MESSAGE", 0, MSGSRV_A_FINGER_MESSAGE},
{"A_HOST", 0, MSGSRV_A_HOST},
{"A_IP_ADDRESS", 0, MSGSRV_A_IP_ADDRESS},
{"A_LDAP_SERVER", 0, MSGSRV_A_LDAP_SERVER},
{"A_LDAP_NMAP_SERVER", 0, MSGSRV_A_LDAP_NMAP_SERVER},
{"A_LDAP_SEARCH_DN", 0, MSGSRV_A_LDAP_SEARCH_DN},
{"A_MESSAGE_LIMIT", 0, MSGSRV_A_MESSAGE_LIMIT},
{"A_MESSAGING_SERVER", 0, MSGSRV_A_MESSAGING_SERVER},
{"A_MODULE_NAME", 0, MSGSRV_A_MODULE_NAME},
{"A_MODULE_VERSION", 0, MSGSRV_A_MODULE_VERSION},
{"A_MONITORED_QUEUE", 0, MSGSRV_A_MONITORED_QUEUE},
{"A_QUEUE_SERVER", 0, MSGSRV_A_QUEUE_SERVER},
{"A_STORE_SERVER", 0, MSGSRV_A_STORE_SERVER},
{"A_OFFICIAL_NAME", 0, MSGSRV_A_OFFICIAL_NAME},
{"A_QUOTA_MESSAGE", 0, MSGSRV_A_QUOTA_MESSAGE},
{"A_POSTMASTER", 0, MSGSRV_A_POSTMASTER},
{"A_REPLY_MESSAGE", 0, MSGSRV_A_REPLY_MESSAGE},
{"A_URL", 0, MSGSRV_A_URL},
{"A_RESOLVER", 0, MSGSRV_A_RESOLVER},
{"A_ROUTING", 0, MSGSRV_A_ROUTING},
{"A_SERVER_STATUS", 0, MSGSRV_A_SERVER_STATUS},
{"A_QUEUE_INTERVAL", 0, MSGSRV_A_QUEUE_INTERVAL},
{"A_QUEUE_TIMEOUT", 0, MSGSRV_A_QUEUE_TIMEOUT},
{"A_UID", 0, MSGSRV_A_UID},
{"A_VACATION_MESSAGE", 0, MSGSRV_A_VACATION_MESSAGE},
{"A_WORD", 0, MSGSRV_A_WORD},
{"A_MESSAGE_STORE", 0, MSGSRV_A_MESSAGE_STORE},
{"A_FORWARDING_ADDRESS", 0, MSGSRV_A_FORWARDING_ADDRESS},
{"A_FORWARDING_ENABLED", 0, MSGSRV_A_FORWARDING_ENABLED},
{"A_AUTOREPLY_ENABLED", 0, MSGSRV_A_AUTOREPLY_ENABLED},
{"A_AUTOREPLY_MESSAGE", 0, MSGSRV_A_AUTOREPLY_MESSAGE},
{"A_PORT", 0, MSGSRV_A_PORT},
{"A_SSL_PORT", 0, MSGSRV_A_SSL_PORT},
{"A_SNMP_DESCRIPTION", 0, MSGSRV_A_SNMP_DESCRIPTION},
{"A_SNMP_VERSION", 0, MSGSRV_A_SNMP_VERSION},
{"A_SNMP_ORGANIZATION", 0, MSGSRV_A_SNMP_ORGANIZATION},
{"A_SNMP_LOCATION", 0, MSGSRV_A_SNMP_LOCATION},
{"A_SNMP_CONTACT", 0, MSGSRV_A_SNMP_CONTACT},
{"A_SNMP_NAME", 0, MSGSRV_A_SNMP_NAME},
{"A_MESSAGING_DISABLED", 0, MSGSRV_A_MESSAGING_DISABLED},
{"A_STORE_TRUSTED_HOSTS", 0, MSGSRV_A_STORE_TRUSTED_HOSTS},
{"A_QUOTA_VALUE", 0, MSGSRV_A_QUOTA_VALUE},
{"A_SCMS_USER_THRESHOLD", 0, MSGSRV_A_SCMS_USER_THRESHOLD},
{"A_SCMS_SIZE_THRESHOLD", 0, MSGSRV_A_SCMS_SIZE_THRESHOLD},
{"A_SMTP_VERIFY_ADDRESS", 0, MSGSRV_A_SMTP_VERIFY_ADDRESS},
{"A_SMTP_ALLOW_AUTH", 0, MSGSRV_A_SMTP_ALLOW_AUTH},
{"A_SMTP_ALLOW_VRFY", 0, MSGSRV_A_SMTP_ALLOW_VRFY},
{"A_SMTP_ALLOW_EXPN", 0, MSGSRV_A_SMTP_ALLOW_EXPN},
{"A_WORK_DIRECTORY", 0, MSGSRV_A_WORK_DIRECTORY},
{"A_LOGLEVEL", 0, MSGSRV_A_LOGLEVEL},
{"A_MINIMUM_SPACE", 0, MSGSRV_A_MINIMUM_SPACE},
{"A_SMTP_SEND_ETRN", 0, MSGSRV_A_SMTP_SEND_ETRN},
{"A_SMTP_ACCEPT_ETRN", 0, MSGSRV_A_SMTP_ACCEPT_ETRN},
{"A_LIMIT_REMOTE_PROCESSING", 0, MSGSRV_A_LIMIT_REMOTE_PROCESSING},
{"A_LIMIT_REMOTE_START_WD", 0, MSGSRV_A_LIMIT_REMOTE_START_WD},
{"A_LIMIT_REMOTE_END_WD", 0, MSGSRV_A_LIMIT_REMOTE_END_WD},
{"A_LIMIT_REMOTE_START_WE", 0, MSGSRV_A_LIMIT_REMOTE_START_WE},
{"A_LIMIT_REMOTE_END_WE", 0, MSGSRV_A_LIMIT_REMOTE_END_WE},
{"A_PRODUCT_VERSION", 0, MSGSRV_A_PRODUCT_VERSION},
{"A_PROXY_LIST", 0, MSGSRV_A_PROXY_LIST},
{"A_MAXIMUM_ITEMS", 0, MSGSRV_A_MAXIMUM_ITEMS},
{"A_TIME_INTERVAL", 0, MSGSRV_A_TIME_INTERVAL},
{"A_RELAYHOST", 0, MSGSRV_A_RELAYHOST},
{"A_ALIAS_OPTIONS", 0, MSGSRV_A_ALIAS_OPTIONS},
{"A_LDAP_OPTIONS", 0, MSGSRV_A_LDAP_OPTIONS},
{"A_CUSTOM_ALIAS", 0, MSGSRV_A_CUSTOM_ALIAS},
{"A_ADVERTISING_CONFIG", 0, MSGSRV_A_ADVERTISING_CONFIG},
{"A_LANGUAGE", 0, MSGSRV_A_LANGUAGE},
{"A_PREFERENCES", 0, MSGSRV_A_PREFERENCES},
{"A_QUOTA_WARNING", 0, MSGSRV_A_QUOTA_WARNING},
{"A_QUEUE_TUNING", 0, MSGSRV_A_QUEUE_TUNING},
{"A_TIMEOUT", 0, MSGSRV_A_TIMEOUT},
{"A_PRIVACY", 0, MSGSRV_A_PRIVACY},
{"A_THREAD_LIMIT", 0, MSGSRV_A_THREAD_LIMIT},
{"A_DBF_PAGESIZE", 0, MSGSRV_A_DBF_PAGESIZE},
{"A_DBF_KEYSIZE", 0, MSGSRV_A_DBF_KEYSIZE},
{"A_ADDRESSBOOK_CONFIG", 0, MSGSRV_A_ADDRESSBOOK_CONFIG},
{"A_ADDRESSBOOK_URL_SYSTEM", 0, MSGSRV_A_ADDRESSBOOK_URL_SYSTEM},
{"A_ADDRESSBOOK_URL_PUBLIC", 0, MSGSRV_A_ADDRESSBOOK_URL_PUBLIC},
{"A_ADDRESSBOOK", 0, MSGSRV_A_ADDRESSBOOK},
{"A_SERVER_STANDALONE", 0, MSGSRV_A_SERVER_STANDALONE},
{"A_FORWARD_UNDELIVERABLE", 0, MSGSRV_A_FORWARD_UNDELIVERABLE},
{"A_PHRASE", 0, MSGSRV_A_PHRASE},
{"A_ACCOUNTING_ENABLED", 0, MSGSRV_A_ACCOUNTING_ENABLED},
{"A_ACCOUNTING_DATA", 0, MSGSRV_A_ACCOUNTING_DATA},
{"A_BILLING_DATA", 0, MSGSRV_A_BILLING_DATA},
{"A_BLOCKED_ADDRESS", 0, MSGSRV_A_BLOCKED_ADDRESS},
{"A_ALLOWED_ADDRESS", 0, MSGSRV_A_ALLOWED_ADDRESS},
{"A_RECIPIENT_LIMIT", 0, MSGSRV_A_RECIPIENT_LIMIT},
{"A_RBL_HOST", 0, MSGSRV_A_RBL_HOST},
{"A_SIGNATURE", 0, MSGSRV_A_SIGNATURE},
{"A_CONNMGR", 0, MSGSRV_A_CONNMGR},
{"A_CONNMGR_CONFIG", 0, MSGSRV_A_CONNMGR_CONFIG},
{"A_USER_DOMAIN", 0, MSGSRV_A_USER_DOMAIN},
{"A_RTS_ANTISPAM_CONFIG", 0, MSGSRV_A_RTS_ANTISPAM_CONFIG},
{"A_SPOOL_DIRECTORY", 0, MSGSRV_A_SPOOL_DIRECTORY},
{"A_SCMS_DIRECTORY", 0, MSGSRV_A_SCMS_DIRECTORY},
{"A_DBF_DIRECTORY", 0, MSGSRV_A_DBF_DIRECTORY},
{"A_NLS_DIRECTORY", 0, MSGSRV_A_NLS_DIRECTORY},
{"A_BIN_DIRECTORY", 0, MSGSRV_A_BIN_DIRECTORY},
{"A_LIB_DIRECTORY", 0, MSGSRV_A_LIB_DIRECTORY},
{"A_DEFAULT_CHARSET", 0, MSGSRV_A_DEFAULT_CHARSET},
{"A_RULE", 0, MSGSRV_A_RULE},
{"A_RELAY_DOMAIN", 0, MSGSRV_A_RELAY_DOMAIN},
{"A_LIST_DIGESTTIME", 0, MSGSRV_A_LIST_DIGESTTIME},
{"A_LIST_ABSTRACT", 0, MSGSRV_A_LIST_ABSTRACT},
{"A_LIST_DESCRIPTION", 0, MSGSRV_A_LIST_DESCRIPTION},
{"A_LIST_CONFIGURATION", 0, MSGSRV_A_LIST_CONFIGURATION},
{"A_LIST_STORE", 0, MSGSRV_A_LIST_STORE},
{"A_LIST_NMAPSTORE", 0, MSGSRV_A_LIST_NMAPSTORE},
{"A_LIST_MODERATOR", 0, MSGSRV_A_LIST_MODERATOR},
{"A_LIST_OWNER", 0, MSGSRV_A_LIST_OWNER},
{"A_LIST_SIGNATURE", 0, MSGSRV_A_LIST_SIGNATURE},
{"A_LIST_SIGNATURE_HTML", 0, MSGSRV_A_LIST_SIGNATURE_HTML},
{"A_LIST_DIGEST_VERSION", 0, MSGSRV_A_LIST_DIGEST_VERSION},
{"A_LIST_MEMBERS", 0, MSGSRV_A_LIST_MEMBERS},
{"A_LISTUSER_OPTIONS", 0, MSGSRV_A_LISTUSER_OPTIONS},
{"A_LISTUSER_ADMINOPTIONS", 0, MSGSRV_A_LISTUSER_ADMINOPTIONS},
{"A_LISTUSER_PASSWORD", 0, MSGSRV_A_LISTUSER_PASSWORD},
{"A_FEATURE_SET", 0, MSGSRV_A_FEATURE_SET},
{"A_PRIVATE_KEY_LOCATION", 0, MSGSRV_A_PRIVATE_KEY_LOCATION},
{"A_CERTIFICATE_LOCATION", 0, MSGSRV_A_CERTIFICATE_LOCATION},
{"A_CONFIG_CHANGED", 0, MSGSRV_A_CONFIG_CHANGED},
{"A_LISTSERVER_NAME", 0, MSGSRV_A_LISTSERVER_NAME},
{"A_LIST_WELCOME_MESSAGE", 0, MSGSRV_A_LIST_WELCOME_MESSAGE},
{"A_PARENT_OBJECT", 0, MSGSRV_A_PARENT_OBJECT},
{"A_FEATURE_INHERITANCE", 0, MSGSRV_A_FEATURE_INHERITANCE},
{"A_TEMPLATE", 0, MSGSRV_A_TEMPLATE},
{"A_TIMEZONE", 0, MSGSRV_A_TIMEZONE},
{"A_LOCALE", 0, MSGSRV_A_LOCALE},
{"A_PASSWORD_CONFIGURATION", 0, MSGSRV_A_PASSWORD_CONFIGURATION},
{"A_TITLE", 0, MSGSRV_A_TITLE},
{"A_DEFAULT_TEMPLATE", 0, MSGSRV_A_DEFAULT_TEMPLATE},
{"A_TOM_MANAGER", 0, MSGSRV_A_TOM_MANAGER},
{"A_TOM_CONTEXTS", 0, MSGSRV_A_TOM_CONTEXTS},
{"A_TOM_DOMAINS", 0, MSGSRV_A_TOM_DOMAINS},
{"A_TOM_OPTIONS", 0, MSGSRV_A_TOM_OPTIONS},
{"A_DESCRIPTION", 0, MSGSRV_A_DESCRIPTION},
{"A_STATSERVER_1", 0, MSGSRV_A_STATSERVER_1},
{"A_STATSERVER_2", 0, MSGSRV_A_STATSERVER_2},
{"A_STATSERVER_3", 0, MSGSRV_A_STATSERVER_3},
{"A_STATSERVER_4", 0, MSGSRV_A_STATSERVER_4},
{"A_STATSERVER_5", 0, MSGSRV_A_STATSERVER_5},
{"A_STATSERVER_6", 0, MSGSRV_A_STATSERVER_6},
{"A_NEWS", 0, MSGSRV_A_NEWS},
{"A_MANAGER", 0, MSGSRV_A_MANAGER},
{"A_AVAILABLE_SHARES", 0, MSGSRV_A_AVAILABLE_SHARES},
{"A_OWNED_SHARES", 0, MSGSRV_A_OWNED_SHARES},
{"A_NEW_SHARE_MESSAGE", 0, MSGSRV_A_NEW_SHARE_MESSAGE},
{"A_AVAILABLE_PROXIES", 0, MSGSRV_A_AVAILABLE_PROXIES},
{"A_OWNED_PROXIES", 0, MSGSRV_A_OWNED_PROXIES},
{"A_RESOURCE_MANAGER", 0, MSGSRV_A_RESOURCE_MANAGER},
{"A_BONGO_MESSAGING_SERVER", 0, MSGSRV_A_BONGO_MESSAGING_SERVER},
{"A_ACL", 0, MSGSRV_A_ACL},
{"A_WA_DEFAULT_TEMPLATE", 0, MSGSRV_A_WA_DEFAULT_TEMPLATE},
{"A_WA_ALLOWED_TEMPLATES", 0, MSGSRV_A_WA_ALLOWED_TEMPLATES},
{"A_WA_DISALLOWED_TEMPLATES", 0, MSGSRV_A_WA_DISALLOWED_TEMPLATES},
{"A_SMS_AUTHORIZED_PHONES", 0, MSGSRV_A_SMS_AUTHORIZED_PHONES},
{"A_CALCMD_ADDRESS_SUFFIX", 0, MSGSRV_A_CALCMD_ADDRESS_SUFFIX},
{"A_MAX_LOAD", 0, MSGSRV_A_MAX_LOAD},
{"A_ACL_ENABLED", 0, MSGSRV_A_ACL_ENABLED},
{"A_UBE_SMTP_AFTER_POP", 0, MSGSRV_A_UBE_SMTP_AFTER_POP},
{"A_UBE_REMOTE_AUTH_ONLY", 0, MSGSRV_A_UBE_REMOTE_AUTH_ONLY},
{"A_MAX_FLOOD_COUNT", 0, MSGSRV_A_MAX_FLOOD_COUNT},
{"A_MAX_NULL_SENDER_RECIPS", 0, MSGSRV_A_MAX_NULL_SENDER_RECIPS},
{"A_MAX_MX_SERVERS", 0, MSGSRV_A_MAX_MX_SERVERS},
{"A_RELAY_LOCAL_MAIL", 0, MSGSRV_A_RELAY_LOCAL_MAIL},
{"A_CLUSTERED", 0, MSGSRV_A_CLUSTERED},
{"A_FORCE_BIND", 0, MSGSRV_A_FORCE_BIND},
{"A_SSL_TLS", 0, MSGSRV_A_SSL_TLS},
{"A_SSL_ALLOW_CHAINED", 0, MSGSRV_A_SSL_ALLOW_CHAINED},
{"A_BOUNCE_RETURN", 0, MSGSRV_A_BOUNCE_RETURN},
{"A_BOUNCE_CC_POSTMASTER", 0, MSGSRV_A_BOUNCE_CC_POSTMASTER},
{"A_QUOTA_USER", 0, MSGSRV_A_QUOTA_USER},
{"A_QUOTA_SYSTEM", 0, MSGSRV_A_QUOTA_SYSTEM},
{"A_REGISTER_QUEUE", 0, MSGSRV_A_REGISTER_QUEUE},
{"A_QUEUE_LIMIT_BOUNCES", 0, MSGSRV_A_QUEUE_LIMIT_BOUNCES},
{"A_LIMIT_BOUNCE_ENTRIES", 0, MSGSRV_A_LIMIT_BOUNCE_ENTRIES},
{"A_LIMIT_BOUNCE_INTERVAL", 0, MSGSRV_A_LIMIT_BOUNCE_INTERVAL},
{"A_DOMAIN_ROUTING", 0, MSGSRV_A_DOMAIN_ROUTING},
{"A_MONITOR_INTERVAL", 0, MSGSRV_A_MONITOR_INTERVAL},
{"A_MANAGER_PORT", 0, MSGSRV_A_MANAGER_PORT},
{"A_MANAGER_SSL_PORT", 0, MSGSRV_A_MANAGER_SSL_PORT},
{NULL, 0, NULL}
};
-303
View File
@@ -72,79 +72,6 @@ msgapi_CollectUser(PyObject *self, PyObject *args)
return Py_None;
}
PyDoc_STRVAR(DirectoryHandle_doc,
"DirectoryHandle() -> handle\n\
\n\
Return the directory handle used by libmsgapi.");
static PyObject *
msgapi_DirectoryHandle(PyObject *self, PyObject *args)
{
MDBHandle handle;
if (!PyArg_ParseTuple(args, "")) {
return NULL;
}
handle = (MDBHandle)MsgDirectoryHandle();
if (handle == NULL) {
Py_INCREF(Py_None);
return Py_None;
}
return PyCObject_FromVoidPtr(handle, NULL);
}
PyDoc_STRVAR(FindObject_doc,
"FindObject(u) -> string dn\n\
\n\
Return a string containing the dn of user u.");
static PyObject *
msgapi_FindObject(PyObject *self, PyObject *args)
{
unsigned char *user;
unsigned int len=MDB_MAX_OBJECT_CHARS+1;
unsigned char buf[len];
if (!PyArg_ParseTuple(args, "s", &user)) {
return NULL;
}
if (!MsgFindObject(user, buf, NULL, NULL, NULL)) {
Py_INCREF(Py_None);
return Py_None;
}
return Py_BuildValue("s", buf);
}
PyDoc_STRVAR(FindUserNmap_doc,
"FindUserNmap(u) -> (string host, int port) tuple\n\
\n\
Return the ip address and port of user u's document store.");
static PyObject *
msgapi_FindUserNmap(PyObject *self, PyObject *args)
{
unsigned char *user;
unsigned int len=33;
unsigned char buf[len];
unsigned short port;
if (!PyArg_ParseTuple(args, "s", &user)) {
return NULL;
}
if (!MsgFindUserNmap(user, buf, len, &port)) {
Py_INCREF(Py_None);
return Py_None;
}
return Py_BuildValue("si", buf, port);
}
PyDoc_STRVAR(GetUserFeature_doc,
"GetUserFeature(dn, featurename, ) -> array of strings\n\
\n\
@@ -177,227 +104,6 @@ static const char *features[] = {
NULL
};
PyDoc_STRVAR(GetUserSetting_doc, "GetUserSetting(user, attribute)\n");
static PyObject *
msgapi_GetUserSetting(PyObject *self, PyObject *args)
{
unsigned char *user;
char *attribute;
MDBValueStruct *v;
PyObject *ret = Py_None;
int i;
if (!PyArg_ParseTuple(args, "ss", &user, &attribute)) {
return NULL;
}
v = MDBCreateValueStruct(MsgDirectoryHandle(), NULL);
if (v) {
if (MsgGetUserSetting(user, attribute, v)) {
ret = PyList_New(v->Used);
for (i = 0; i < v->Used; i++) {
PyList_SetItem(ret, i, PyString_FromString(v->Value[i]));
}
} else {
ret = PyList_New(0);
}
MDBDestroyValueStruct(v);
} else {
Py_INCREF(Py_None);
}
return ret;
}
PyDoc_STRVAR(SetUserSetting_doc, "SetUserSetting(user, attribute, values)\n");
static PyObject *
msgapi_SetUserSetting(PyObject *self, PyObject *args)
{
unsigned char *user;
char *attribute;
char *val;
void *vals;
MDBValueStruct *v;
PyObject *item;
PyObject *ret = Py_False;
int i, size;
if (!PyArg_ParseTuple(args, "ssO", &user, &attribute, &vals)) {
return NULL;
}
v = MDBCreateValueStruct(MsgDirectoryHandle(), NULL);
if (v) {
size = PyList_Size(vals);
for (i = 0; i < size; i++) {
item = PyList_GetItem(vals, i);
PyArg_Parse(item, "s", &val);
if (!MDBAddValue(val, v)) {
break;
}
}
if (i == size && MsgSetUserSetting(user, attribute, v)) {
ret = Py_True;
}
MDBDestroyValueStruct(v);
}
Py_INCREF(ret);
return ret;
}
PyDoc_STRVAR(AddUserSetting_doc, "AddUserSetting(user, attribute, value)\n");
static PyObject *
msgapi_AddUserSetting(PyObject *self, PyObject *args)
{
unsigned char *user;
char *attribute;
char *value;
MDBValueStruct *v;
PyObject *ret = Py_False;
if (!PyArg_ParseTuple(args, "sss", &user, &attribute, &value)) {
return NULL;
}
v = MDBCreateValueStruct(MsgDirectoryHandle(), NULL);
if (v) {
if (MsgAddUserSetting(user, attribute, value, v)) {
ret = Py_True;
}
MDBDestroyValueStruct(v);
}
Py_INCREF(ret);
return ret;
}
PyDoc_STRVAR(GetUserDisplayName_doc,
"GetUserDisplayName(user) -> string\n\
\n\
Return a string containing the display name of the user.");
static PyObject *
msgapi_GetUserDisplayName(PyObject *self, PyObject *args)
{
unsigned char *userDN;
unsigned char *name;
MDBValueStruct *v;
PyObject *ret;
if (!PyArg_ParseTuple(args, "s", &userDN)) {
return NULL;
}
v = MDBCreateValueStruct(MsgDirectoryHandle(), NULL);
if (v) {
name = MsgGetUserDisplayName(userDN, v);
MDBDestroyValueStruct(v);
ret = Py_BuildValue("s", name);
MemFree(name);
} else {
Py_INCREF(Py_None);
ret = Py_None;
}
return ret;
}
PyDoc_STRVAR(GetUserEmailAddress_doc,
"GetUserEmailAddress(user) -> string\n\
\n\
Return a string containing the email address of the user.");
static PyObject *
msgapi_GetUserEmailAddress(PyObject *self, PyObject *args)
{
unsigned char *userDN;
unsigned char email[400]; /* according to RFC2821, the maximum length of a
user name is 64 chars. A domain name can be
255. */
MDBValueStruct *v;
PyObject *ret;
if (!PyArg_ParseTuple(args, "s", &userDN)) {
return NULL;
}
v = MDBCreateValueStruct(MsgDirectoryHandle(), NULL);
if (v) {
MsgGetUserEmailAddress(userDN, v, email, sizeof(email)-1);
MDBDestroyValueStruct(v);
ret = Py_BuildValue("s", email);
} else {
Py_INCREF(Py_None);
ret = Py_None;
}
return ret;
}
static PyObject *
msgapi_GetUserFeature(PyObject *self, PyObject *args)
{
unsigned char *user;
char *feature;
char *attribute;
unsigned int len=33;
unsigned char buf[len];
char row;
int col;
if (!PyArg_ParseTuple(args, "sss", &user, &feature, &attribute)) {
return NULL;
}
row = 'A';
for (col = 0; features[col] != NULL; col++) {
if (!strcmp(features[col], feature)) {
break;
}
}
if (features[col]) {
MDBValueStruct *v;
PyObject *ret;
v = MDBCreateValueStruct(MsgDirectoryHandle(), NULL);
if (MsgGetUserFeature(user, row, col, attribute, v)) {
int i;
ret = PyList_New(v->Used);
for (i = 0; i < v->Used; i++) {
PyList_SetItem(ret, i, PyString_FromString(v->Value[i]));
}
} else {
Py_INCREF(Py_None);
ret = Py_None;
}
MDBDestroyValueStruct(v);
return ret;
} else {
Py_INCREF(Py_None);
return Py_None;
}
}
static void
ThrowImportException(int code)
{
@@ -613,20 +319,11 @@ extern PyObject *msgapi_GetConfigProperty(PyObject *, PyObject *);
PyMethodDef MsgApiMethods[] = {
{"CollectAllUsers", msgapi_CollectAllUsers, METH_VARARGS | METH_STATIC, CollectAllUsers_doc},
{"CollectUser", msgapi_CollectUser, METH_VARARGS | METH_STATIC, CollectUser_doc},
{"DirectoryHandle", msgapi_DirectoryHandle, METH_VARARGS | METH_STATIC, DirectoryHandle_doc},
{"FindObject", msgapi_FindObject, METH_VARARGS | METH_STATIC, FindObject_doc},
{"FindUserNmap", msgapi_FindUserNmap, METH_VARARGS | METH_STATIC, FindUserNmap_doc},
{"GetUserSetting", msgapi_GetUserSetting, METH_VARARGS | METH_STATIC, GetUserSetting_doc},
{"SetUserSetting", msgapi_SetUserSetting, METH_VARARGS | METH_STATIC, SetUserSetting_doc},
{"GetUserDisplayName", msgapi_GetUserDisplayName, METH_VARARGS | METH_STATIC, GetUserDisplayName_doc},
{"GetUserEmailAddress", msgapi_GetUserEmailAddress, METH_VARARGS | METH_STATIC, GetUserEmailAddress_doc},
{"GetUserFeature", msgapi_GetUserFeature, METH_VARARGS | METH_STATIC, GetUserFeature_doc},
{"ImportIcsUrl", msgapi_ImportIcsUrl, METH_VARARGS | METH_STATIC, ImportIcsUrl_doc},
{"ImportIcs", msgapi_ImportIcs, METH_VARARGS | METH_STATIC, ImportIcs_doc},
{"IcsSubscribe", msgapi_IcsSubscribe, METH_VARARGS | METH_STATIC, IcsSubscribe_doc},
{"IcsImport", msgapi_IcsImport, METH_VARARGS | METH_STATIC, IcsImport_doc},
{"NmapChallenge", msgapi_NmapChallenge, METH_VARARGS | METH_STATIC, NmapChallenge_doc},
{"GetConfigProperty", msgapi_GetConfigProperty, METH_VARARGS | METH_STATIC, GetConfigProperty_doc},
{"GetUnprivilegedUser", msgapi_GetUnprivilegedUser, METH_VARARGS | METH_STATIC, GetUnprivilegedUser_doc},
{"GetBuildVersion", msgapi_GetBuildVersion, METH_VARARGS | METH_STATIC, GetBuildVersion_doc},
{"GetAvailableVersion", msgapi_GetAvailableVersion, METH_VARARGS | METH_STATIC, GetAvailableVersion_doc},
+47
View File
@@ -0,0 +1,47 @@
#include <Python.h>
#include <bongo-config.h>
#include "libs.h"
#ifdef __cplusplus
extern "C" {
#endif
// to test this:
// from libbongo.libs import tests
// print tests.GetAsciiString()
// print tests.GetUnicodeString()
static PyObject *
test_GetAsciiString(void)
{
char *hello_english = "Hello";
PyObject *ret;
ret = Py_BuildValue("s", hello_english);
return ret;
}
static PyObject *
test_GetUnicodeString(void)
{
char *hello_finnish = "hyvää päivää";
PyObject *ret;
ret = PyUnicode_Decode(hello_finnish, strlen(hello_finnish),
"utf-8", "strict");
return ret;
}
PyMethodDef TestMethods[] = {
{"GetAsciiString", test_GetAsciiString, METH_VARARGS | METH_STATIC},
{"GetUnicodeString", test_GetUnicodeString, METH_VARARGS | METH_STATIC},
{NULL, NULL, 0, NULL}
};
#ifdef __cplusplus
}
#endif