Merge remove-mdb branch onto trunk, branch is now closed!
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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}
|
||||
};
|
||||
|
||||
@@ -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},
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user