#include <signal.h>
#include <dcerpc_server.h>
#include <talloc.h>
#include <tevent.h>
#include <tdb.h>
#include <dlinklist.h>
#include <fcntl.h>
Data Structures | |
struct | auth_serversupplied_info |
struct | mapi_handles |
struct | mapi_handles_context |
struct | mapiproxy |
struct | mapiproxy_module |
struct | mapiproxy_module_list |
struct | mpm_session |
Defines | |
#define | __BEGIN_DECLS |
#define | __END_DECLS |
#define | EMSABP_TDB_NAME "emsabp_tdb.tdb" |
EMSABP server defines. | |
#define | MAPI_HANDLES_NULL "null" |
#define | MAPI_HANDLES_RESERVED 0xFFFFFFFF |
#define | MAPI_HANDLES_ROOT "root" |
#define | OPENCHANGE_LDB_NAME "openchange.ldb" |
Enumerations | |
enum | mapiproxy_status { MAPIPROXY_DEFAULT = 0x0, MAPIPROXY_CUSTOM = 0x1 } |
Functions | |
enum MAPISTATUS | entryid_set_AB_EntryID (TALLOC_CTX *, const char *, struct SBinary_short *) |
enum MAPISTATUS | entryid_set_folder_EntryID (TALLOC_CTX *, struct GUID *, struct GUID *, uint16_t, uint64_t, struct Binary_r **) |
enum MAPISTATUS | mapi_handles_add (struct mapi_handles_context *, uint32_t, struct mapi_handles **) |
enum MAPISTATUS | mapi_handles_delete (struct mapi_handles_context *, uint32_t) |
enum MAPISTATUS | mapi_handles_get_private_data (struct mapi_handles *, void **) |
enum MAPISTATUS | mapi_handles_get_systemfolder (struct mapi_handles *, int *) |
struct mapi_handles_context * | mapi_handles_init (TALLOC_CTX *) |
enum MAPISTATUS | mapi_handles_release (struct mapi_handles_context *) |
enum MAPISTATUS | mapi_handles_search (struct mapi_handles_context *, uint32_t, struct mapi_handles **) |
enum MAPISTATUS | mapi_handles_set_private_data (struct mapi_handles *, void *) |
enum MAPISTATUS | mapi_handles_set_systemfolder (struct mapi_handles *, int) |
struct mapiproxy_module * | mapiproxy_module_byname (const char *) |
NTSTATUS | mapiproxy_module_dispatch (struct dcesrv_call_state *, TALLOC_CTX *, void *, struct mapiproxy *) |
NTSTATUS | mapiproxy_module_init (struct dcesrv_context *) |
NTSTATUS | mapiproxy_module_ndr_pull (struct dcesrv_call_state *, TALLOC_CTX *, struct ndr_pull *) |
NTSTATUS | mapiproxy_module_pull (struct dcesrv_call_state *, TALLOC_CTX *, void *) |
NTSTATUS | mapiproxy_module_push (struct dcesrv_call_state *, TALLOC_CTX *, void *) |
__BEGIN_DECLS NTSTATUS | mapiproxy_module_register (const void *) |
NTSTATUS | mapiproxy_module_unbind (struct server_id, uint32_t) |
struct mapiproxy_module * | mapiproxy_server_byname (const char *) |
struct mapiproxy_module * | mapiproxy_server_bystatus (const char *, enum mapiproxy_status) |
NTSTATUS | mapiproxy_server_dispatch (struct dcesrv_call_state *, TALLOC_CTX *, void *, struct mapiproxy *) |
TDB_CONTEXT * | mapiproxy_server_emsabp_tdb_init (struct loadparm_context *) |
NTSTATUS | mapiproxy_server_init (struct dcesrv_context *) |
bool | mapiproxy_server_loaded (const char *) |
void * | mapiproxy_server_openchange_ldb_init (struct loadparm_context *) |
NTSTATUS | mapiproxy_server_register (const void *) |
NTSTATUS | mapiproxy_server_unbind (struct server_id, uint32_t) |
bool | mpm_session_cmp (struct mpm_session *, struct dcesrv_call_state *) |
bool | mpm_session_cmp_sub (struct mpm_session *, struct server_id, uint32_t) |
bool | mpm_session_increment_ref_count (struct mpm_session *) |
struct mpm_session * | mpm_session_init (TALLOC_CTX *, struct dcesrv_call_state *) |
struct mpm_session * | mpm_session_new (TALLOC_CTX *, struct server_id, uint32_t) |
bool | mpm_session_release (struct mpm_session *) |
bool | mpm_session_set_destructor (struct mpm_session *, bool(*destructor)(void *)) |
bool | mpm_session_set_private_data (struct mpm_session *, void *) |
enum MAPISTATUS | openchangedb_get_distinguishedName (TALLOC_CTX *, void *, uint64_t, char **) |
enum MAPISTATUS | openchangedb_get_fid_by_name (void *ldb_ctx, uint64_t, const char *, uint64_t *) |
enum MAPISTATUS | openchangedb_get_folder_count (void *, uint64_t, uint32_t *) |
enum MAPISTATUS | openchangedb_get_folder_property (TALLOC_CTX *, void *, char *, uint32_t, uint64_t, void **) |
enum MAPISTATUS | openchangedb_get_MailboxGuid (void *, char *, struct GUID *) |
enum MAPISTATUS | openchangedb_get_MailboxReplica (void *, char *, uint16_t *, struct GUID *) |
enum MAPISTATUS | openchangedb_get_mapistoreURI (TALLOC_CTX *, void *, uint64_t, char **, bool) |
enum MAPISTATUS | openchangedb_get_new_folderID (void *, uint64_t *) |
enum MAPISTATUS | openchangedb_get_PublicFolderID (void *, uint32_t, uint64_t *) |
enum MAPISTATUS | openchangedb_get_PublicFolderReplica (void *, uint16_t *, struct GUID *) |
enum MAPISTATUS | openchangedb_get_ReceiveFolder (TALLOC_CTX *, void *, const char *, const char *, uint64_t *, const char **) |
enum MAPISTATUS | openchangedb_get_SystemFolderID (void *, char *, uint32_t, uint64_t *) |
enum MAPISTATUS | openchangedb_get_table_property (TALLOC_CTX *, void *, char *, char *, uint32_t, uint32_t, void **) |
enum MAPISTATUS | openchangedb_lookup_folder_property (void *, uint32_t, uint64_t) |
const char * | openchangedb_property_get_attribute (uint32_t) |
enum MAPISTATUS | openchangedb_set_ReceiveFolder (TALLOC_CTX *, void *ldb_ctx, const char *, const char *, uint64_t) |
Variables | |
static const uint8_t | GUID_NSPI [] |
Represents the NSPI Protocol in Permanent Entry IDs. |
#define __BEGIN_DECLS |
#define __END_DECLS |
#define EMSABP_TDB_NAME "emsabp_tdb.tdb" |
EMSABP server defines.
Referenced by mapiproxy_server_emsabp_tdb_init().
#define MAPI_HANDLES_NULL "null" |
Referenced by mapi_handles_search(), mapi_handles_tdb_free(), and mapi_handles_traverse_null().
#define MAPI_HANDLES_RESERVED 0xFFFFFFFF |
Referenced by mapi_handles_search(), mapi_handles_tdb_free(), mapi_handles_add(), and mapi_handles_delete().
#define MAPI_HANDLES_ROOT "root" |
Referenced by mapi_handles_add().
#define OPENCHANGE_LDB_NAME "openchange.ldb" |
Referenced by mapiproxy_server_openchange_ldb_init().
enum mapiproxy_status |
enum MAPISTATUS entryid_set_AB_EntryID | ( | TALLOC_CTX * | mem_ctx, |
const char * | legacyExchangeDN, | ||
struct SBinary_short * | bin | ||
) |
Build an Address Book EntryID from a legacyExchangeDN
mem_ctx | pointer to the memory context |
legacyExchangeDN | the string to copy into the binary blob |
bin | the binary blob where the function stores results |
References GUID_NSPI.
Referenced by RopGetPropertiesSpecific_Mailbox().
enum MAPISTATUS entryid_set_folder_EntryID | ( | TALLOC_CTX * | mem_ctx, |
struct GUID * | MailboxGuid, | ||
struct GUID * | ReplGuid, | ||
uint16_t | FolderType, | ||
uint64_t | fid, | ||
struct Binary_r ** | rbin | ||
) |
Build a folder EntryID
mem_ctx | pointer to the memory context |
MailboxGuid | pointer to the Mailbox Guid |
ReplGuid | pointer to the Replica Guid |
FolderType | the type of folder |
fid | the folder identifier |
rbin | the Binary_r structure where the function stores results |
Referenced by openchangedb_get_folder_special_property().
enum MAPISTATUS mapi_handles_add | ( | struct mapi_handles_context * | handles_ctx, |
uint32_t | container_handle, | ||
struct mapi_handles ** | rec | ||
) |
Add a handles to the database and return a pointer on created record
handles_ctx | pointer to the MAPI handles context |
container_handle | the container handle if available |
rec | pointer on pointer to the MAPI handle structure the function returns |
References mapi_handles::handle, mapi_handles_context::tdb_ctx, MAPI_HANDLES_RESERVED, mapi_handles_traverse_null(), mapi_handles_tdb_update(), mapi_handles_tdb_free(), mapi_handles::parent_handle, mapi_handles::private_data, mapi_handles_context::last_handle, and MAPI_HANDLES_ROOT.
Referenced by EcDoRpc_RopOpenFolder(), EcDoRpc_RopGetHierarchyTable(), EcDoRpc_RopGetContentsTable(), EcDoRpc_RopCreateFolder(), EcDoRpc_RopOpenMessage(), EcDoRpc_RopCreateMessage(), EcDoRpc_RopGetAttachmentTable(), EcDoRpc_RopRegisterNotification(), EcDoRpc_RopGetPermissionsTable(), EcDoRpc_RopOpenStream(), EcDoRpc_RopLogon(), and EcDoRpc_RopGetRulesTable().
enum MAPISTATUS mapi_handles_delete | ( | struct mapi_handles_context * | handles_ctx, |
uint32_t | handle | ||
) |
Remove the MAPI handle referenced by the handle parameter from the double chained list and mark its associated TDB record as null
handles_ctx | pointer to the MAPI handles context |
handle | the handle to delete |
References mapi_handles_context::tdb_ctx, MAPI_HANDLES_RESERVED, mapi_handles_context::handles, mapi_handles::next, mapi_handles::handle, mapi_handles_tdb_free(), and mapi_handles_traverse_delete().
Referenced by mapi_handles_traverse_delete(), and EcDoRpc_RopRelease().
enum MAPISTATUS mapi_handles_get_private_data | ( | struct mapi_handles * | handle, |
void ** | private_data | ||
) |
Get the private data associated to a MAPI handle
handle | pointer to the MAPI handle structure |
private_data | pointer on pointer to the private data the function returns |
References mapi_handles::private_data.
Referenced by emsmdbp_is_mapistore(), emsmdbp_is_mailboxstore(), emsmdbp_get_contextID(), emsmdbp_object_get_folder_handle_by_fid(), emsmdbp_object_table_init(), emsmdbp_object_message_init(), emsmdbp_object_stream_init(), RopOpenFolder_GenericFolder(), EcDoRpc_RopGetHierarchyTable(), EcDoRpc_RopGetContentsTable(), EcDoRpc_RopCreateGenericFolder(), EcDoRpc_RopCreateFolder(), EcDoRpc_RopDeleteFolder(), EcDoRpc_RopDeleteMessages(), RopEmptyFolder_GenericFolder(), EcDoRpc_RopOpenMessage(), EcDoRpc_RopCreateMessage(), EcDoRpc_RopSaveChangesMessage(), EcDoRpc_RopReloadCachedInformation(), EcDoRpc_RopGetPropertiesSpecific(), EcDoRpc_RopSetProperties(), EcDoRpc_RopReadStream(), EcDoRpc_RopWriteStream(), RopSetReceiveFolder(), RopGetReceiveFolder(), EcDoRpc_RopSetColumns(), EcDoRpc_RopQueryRows(), EcDoRpc_RopQueryPosition(), EcDoRpc_RopFindRow(), EcDoRpc_RopSubmitMessage(), EcDoRpc_RopGetRulesTable(), and EcDoRpc_RopModifyRules().
enum MAPISTATUS mapi_handles_get_systemfolder | ( | struct mapi_handles * | , |
int * | |||
) |
struct mapi_handles_context* mapi_handles_init | ( | TALLOC_CTX * | mem_ctx | ) | [read] |
Initialize MAPI handles context
mem_ctx | pointer to the memory context |
References mapi_handles_context::tdb_ctx, mapi_handles_context::handles, and mapi_handles_context::last_handle.
Referenced by emsmdbp_init().
enum MAPISTATUS mapi_handles_release | ( | struct mapi_handles_context * | handles_ctx | ) |
Release MAPI handles context
handles_ctx | pointer to the MAPI handles context |
References mapi_handles_context::tdb_ctx.
Referenced by emsmdbp_mapi_handles_destructor().
enum MAPISTATUS mapi_handles_search | ( | struct mapi_handles_context * | handles_ctx, |
uint32_t | handle, | ||
struct mapi_handles ** | rec | ||
) |
Search for a record in the TDB database
handles_ctx | pointer to the MAPI handles context |
handle | MAPI handle to lookup |
rec | pointer to the MAPI handle structure the function returns |
References mapi_handles_context::tdb_ctx, MAPI_HANDLES_RESERVED, MAPI_HANDLES_NULL, mapi_handles_context::handles, mapi_handles::next, and mapi_handles::handle.
Referenced by EcDoRpc_RopOpenFolder(), EcDoRpc_RopGetHierarchyTable(), EcDoRpc_RopGetContentsTable(), EcDoRpc_RopCreateFolder(), EcDoRpc_RopDeleteFolder(), EcDoRpc_RopDeleteMessages(), EcDoRpc_RopEmptyFolder(), EcDoRpc_RopOpenMessage(), EcDoRpc_RopCreateMessage(), EcDoRpc_RopSaveChangesMessage(), EcDoRpc_RopReloadCachedInformation(), EcDoRpc_RopGetPropertiesSpecific(), EcDoRpc_RopSetProperties(), EcDoRpc_RopOpenStream(), EcDoRpc_RopReadStream(), EcDoRpc_RopWriteStream(), RopSetReceiveFolder(), RopGetReceiveFolder(), EcDoRpc_RopSetColumns(), EcDoRpc_RopQueryRows(), EcDoRpc_RopQueryPosition(), EcDoRpc_RopFindRow(), EcDoRpc_RopSubmitMessage(), EcDoRpc_RopGetRulesTable(), and EcDoRpc_RopModifyRules().
enum MAPISTATUS mapi_handles_set_private_data | ( | struct mapi_handles * | handle, |
void * | private_data | ||
) |
Set the private data associated to a MAPI handle
handle | pointer to the MAPI handle structure |
private_data | pointer to the private data to associate to the MAPI handle |
References mapi_handles::private_data.
Referenced by EcDoRpc_RopOpenFolder(), EcDoRpc_RopGetHierarchyTable(), EcDoRpc_RopGetContentsTable(), EcDoRpc_RopCreateFolder(), EcDoRpc_RopOpenMessage(), EcDoRpc_RopCreateMessage(), EcDoRpc_RopOpenStream(), and EcDoRpc_RopLogon().
enum MAPISTATUS mapi_handles_set_systemfolder | ( | struct mapi_handles * | , |
int | |||
) |
struct mapiproxy_module* mapiproxy_module_byname | ( | const char * | ) | [read] |
References num_mp_modules, and mp_modules.
Referenced by mapiproxy_module_load().
NTSTATUS mapiproxy_module_dispatch | ( | struct dcesrv_call_state * | , |
TALLOC_CTX * | , | ||
void * | , | ||
struct mapiproxy * | |||
) |
References mpm, mapiproxy_module_list::next, mapiproxy_module_list::module, mapiproxy_module::endpoint, and mapiproxy_module::dispatch.
Referenced by mapiproxy_op_dispatch().
NTSTATUS mapiproxy_module_init | ( | struct dcesrv_context * | ) |
References mpm, and mapiproxy_module_load().
Referenced by mapiproxy_op_init_server().
NTSTATUS mapiproxy_module_ndr_pull | ( | struct dcesrv_call_state * | , |
TALLOC_CTX * | , | ||
struct ndr_pull * | |||
) |
References mpm, mapiproxy_module_list::next, mapiproxy_module_list::module, mapiproxy_module::endpoint, and mapiproxy_module::ndr_pull.
Referenced by mapiproxy_op_ndr_pull().
NTSTATUS mapiproxy_module_pull | ( | struct dcesrv_call_state * | , |
TALLOC_CTX * | , | ||
void * | |||
) |
References mpm, mapiproxy_module_list::next, mapiproxy_module_list::module, mapiproxy_module::endpoint, and mapiproxy_module::pull.
Referenced by mapiproxy_op_ndr_pull().
NTSTATUS mapiproxy_module_push | ( | struct dcesrv_call_state * | , |
TALLOC_CTX * | , | ||
void * | |||
) |
References mpm, mapiproxy_module_list::next, mapiproxy_module_list::module, mapiproxy_module::endpoint, and mapiproxy_module::push.
Referenced by mapiproxy_op_ndr_push().
__BEGIN_DECLS NTSTATUS mapiproxy_module_register | ( | const void * | ) |
References mp_modules, num_mp_modules, and mapiproxy_module::name.
Referenced by samba_init_module().
NTSTATUS mapiproxy_module_unbind | ( | struct server_id | , |
uint32_t | |||
) |
struct mapiproxy_module* mapiproxy_server_byname | ( | const char * | ) | [read] |
References num_server_modules, and server_modules.
Referenced by mapiproxy_server_overwrite().
struct mapiproxy_module* mapiproxy_server_bystatus | ( | const char * | , |
enum | mapiproxy_status | ||
) | [read] |
References num_server_modules, and server_modules.
Referenced by mapiproxy_server_load().
NTSTATUS mapiproxy_server_dispatch | ( | struct dcesrv_call_state * | , |
TALLOC_CTX * | , | ||
void * | , | ||
struct mapiproxy * | |||
) |
References mapiproxy_module_list::next, mapiproxy_module_list::module, mapiproxy_module::endpoint, mapiproxy_module::dispatch, and mapiproxy::norelay.
Referenced by mapiproxy_op_dispatch().
TDB_CONTEXT* mapiproxy_server_emsabp_tdb_init | ( | struct loadparm_context * | lp_ctx | ) |
Initialize an EMSABP TDB context available to all instances when Samba is not run in single mode.
lp_ctx | pointer to the loadparm context |
return Allocated TDB context on success, otherwise NULL
References emsabp_tdb_ctx, and EMSABP_TDB_NAME.
Referenced by emsabp_tdb_init().
NTSTATUS mapiproxy_server_init | ( | struct dcesrv_context * | dce_ctx | ) |
Initialize mapiproxy servers modules
dce_ctx | pointer to the connection context |
References mapiproxy_server_load().
Referenced by mapiproxy_op_init_server().
bool mapiproxy_server_loaded | ( | const char * | ) |
References mapiproxy_module_list::next, mapiproxy_module_list::module, and mapiproxy_module::endpoint.
Referenced by mapiproxy_op_ndr_push(), and mapiproxy_op_dispatch().
void* mapiproxy_server_openchange_ldb_init | ( | struct loadparm_context * | lp_ctx | ) |
Initialize an openchange LDB context available to all mapiproxy instances. This LDB context points on the OpenChange dispatcher database used within emsmdb default provider.
lp_ctx | pointer to the loadparm context |
References openchange_ldb_ctx, and OPENCHANGE_LDB_NAME.
Referenced by emsmdbp_openchange_ldb_init().
NTSTATUS mapiproxy_server_register | ( | const void * | ) |
References server_modules, num_server_modules, and mapiproxy_module::name.
Referenced by samba_init_module().
NTSTATUS mapiproxy_server_unbind | ( | struct server_id | , |
uint32_t | |||
) |
bool mpm_session_cmp | ( | struct mpm_session * | session, |
struct dcesrv_call_state * | dce_call | ||
) |
Compare the mpm session with the session context one
This function is a wrapper on mpm_session_cmp_sub
session | pointer to the mapiproxy module session |
dce_call | pointer to the session context |
References mpm_session_cmp_sub(), and mpm_session::server_id.
Referenced by cache_pull_Release(), cache_pull_OpenMessage(), cache_push_OpenMessage(), cache_pull_OpenAttach(), cache_push_OpenAttach(), cache_pull_OpenStream(), cache_push_OpenStream(), cache_push_ReadStream(), cache_dispatch(), dcesrv_EcDoConnect(), dcesrv_EcDoDisconnect(), dcesrv_EcDoRpc(), dcesrv_EcDoConnectEx(), dcesrv_EcDoRpcExt2(), dcesrv_NspiBind(), dcesrv_NspiUnbind(), dcesrv_NspiQueryRows(), dcesrv_NspiGetMatches(), dcesrv_NspiDNToMId(), dcesrv_NspiGetProps(), dcesrv_NspiGetSpecialTable(), and dcesrv_NspiResolveNamesW().
bool mpm_session_cmp_sub | ( | struct mpm_session * | session, |
struct server_id | sid, | ||
uint32_t | context_id | ||
) |
Compare the mpm session with the session context one
session | pointer to the mapiproxy module session |
sid | reference to a server_id structure to compare |
context_id | the connection context id to compare |
References mpm_session::server_id, and mpm_session::context_id.
Referenced by mpm_session_cmp(), cache_unbind(), dcesrv_exchange_emsmdb_unbind(), and dcesrv_exchange_nsp_unbind().
bool mpm_session_increment_ref_count | ( | struct mpm_session * | session | ) |
Increment the ref_count associated to a session
session | pointer to the session where to increment ref_count |
References mpm_session::ref_count.
Referenced by dcesrv_EcDoConnect(), dcesrv_EcDoConnectEx(), and dcesrv_NspiBind().
struct mpm_session* mpm_session_init | ( | TALLOC_CTX * | mem_ctx, |
struct dcesrv_call_state * | dce_call | ||
) | [read] |
Create and return an allocated pointer to a mpm session
mem_ctx | pointer to the memory context |
dce_call | pointer to the session context |
References mpm_session_new().
Referenced by cache_pull_OpenMessage(), cache_pull_OpenAttach(), cache_pull_OpenStream(), dcesrv_EcDoConnect(), dcesrv_EcDoConnectEx(), and dcesrv_NspiBind().
struct mpm_session* mpm_session_new | ( | TALLOC_CTX * | mem_ctx, |
struct server_id | serverid, | ||
uint32_t | context_id | ||
) | [read] |
Create and return an allocated pointer to a mpm session
mem_ctx | pointer to the memory context |
serverid | reference to the session context server identifier structure |
context_id | reference to the context identifier |
References mpm_session::server_id, mpm_session::context_id, mpm_session::ref_count, mpm_session::destructor, and mpm_session::private_data.
Referenced by mpm_session_init().
bool mpm_session_release | ( | struct mpm_session * | session | ) |
Release a mapiproxy session context
session | pointer to the mpm session context |
References mpm_session::ref_count, mpm_session::destructor, and mpm_session::private_data.
Referenced by cache_pull_Release(), cache_unbind(), dcesrv_EcDoDisconnect(), dcesrv_exchange_emsmdb_unbind(), dcesrv_NspiUnbind(), and dcesrv_exchange_nsp_unbind().
bool mpm_session_set_destructor | ( | struct mpm_session * | session, |
bool(*)(void *) | destructor | ||
) |
Set the mpm session destructor
session | pointer to the mpm session context |
destructor | pointer to the destructor function |
References mpm_session::destructor.
Referenced by dcesrv_EcDoConnect(), dcesrv_EcDoConnectEx(), and dcesrv_NspiBind().
bool mpm_session_set_private_data | ( | struct mpm_session * | session, |
void * | private_data | ||
) |
Set the mpm session pointer on private data
session | pointer to the mpm session context |
private_data | generic pointer on private data |
References mpm_session::private_data.
Referenced by dcesrv_EcDoConnect(), dcesrv_EcDoConnectEx(), and dcesrv_NspiBind().
enum MAPISTATUS openchangedb_get_distinguishedName | ( | TALLOC_CTX * | parent_ctx, |
void * | _ldb_ctx, | ||
uint64_t | fid, | ||
char ** | distinguishedName | ||
) |
Retrieve the distinguishedName associated to a mailbox system folder.
parent_ctx | pointer to the parent memory context |
_ldb_ctx | pointer to the openchange LDB context |
fid | the Folder identifier to search for |
distinguishedName | pointer on pointer to the distinguishedName string the function returns |
Referenced by openchangedb_set_ReceiveFolder(), EcDoRpc_RopCreateSystemSpecialFolder(), EcDoRpc_RopCreateGenericFolder(), and DoDeleteSystemFolder().
enum MAPISTATUS openchangedb_get_fid_by_name | ( | void * | _ldb_ctx, |
uint64_t | parent_fid, | ||
const char * | foldername, | ||
uint64_t * | fid | ||
) |
Retrieve the folder ID associated with a given folder name
This function looks up the specified foldername (as a PidTagDisplayName) and returns the associated folder ID. Note that folder names are only unique in the context of a parent folder, so the parent folder needs to be provided.
_ldb_ctx | pointer to the openchange LDB context |
parent_fid | the folder ID of the parent folder |
foldername | the name to look up |
fid | the folder ID for the folder with the specified name (0 if not found) |
Referenced by EcDoRpc_RopCreateSystemSpecialFolder().
enum MAPISTATUS openchangedb_get_folder_count | ( | void * | _ldb_ctx, |
uint64_t | fid, | ||
uint32_t * | RowCount | ||
) |
Retrieve the number of sub folders for a given fid
_ldb_ctx | pointer to the openchange LDB context |
fid | the folder identifier to use for the search |
RowCount | pointer to the returned number of results |
Referenced by EcDoRpc_RopGetHierarchyTable().
enum MAPISTATUS openchangedb_get_folder_property | ( | TALLOC_CTX * | parent_ctx, |
void * | _ldb_ctx, | ||
char * | recipient, | ||
uint32_t | proptag, | ||
uint64_t | fid, | ||
void ** | data | ||
) |
Retrieve a MAPI property value from a folder record
parent_ctx | pointer to the memory context |
_ldb_ctx | pointer to the openchange LDB context |
recipient | the mailbox username |
proptag | the MAPI property tag to retrieve value for |
fid | the record folder identifier |
data | pointer on pointer to the data the function returns |
References openchangedb_property_get_attribute(), openchangedb_get_folder_special_property(), and openchangedb_get_folder_property_data().
Referenced by RopGetPropertiesSpecific_Mailbox(), and RopGetPropertiesSpecific_SystemSpecialFolder().
enum MAPISTATUS openchangedb_get_MailboxGuid | ( | void * | _ldb_ctx, |
char * | recipient, | ||
struct GUID * | MailboxGUID | ||
) |
Retrieve the mailbox GUID for given recipient from openchange dispatcher database
_ldb_ctx | pointer to the OpenChange LDB context |
recipient | the mailbox username |
MailboxGUID | pointer to the mailbox GUID the function returns |
Referenced by openchangedb_get_folder_special_property(), and RopLogon_Mailbox().
enum MAPISTATUS openchangedb_get_MailboxReplica | ( | void * | _ldb_ctx, |
char * | recipient, | ||
uint16_t * | ReplID, | ||
struct GUID * | ReplGUID | ||
) |
Retrieve the mailbox replica identifier and GUID for given recipient from openchange dispatcher database
_ldb_ctx | pointer to the OpenChange LDB context |
recipient | the mailbox username |
ReplID | pointer to the replica identifier the function returns |
ReplGUID | pointer to the replica GUID the function returns |
Referenced by openchangedb_get_folder_special_property(), and RopLogon_Mailbox().
enum MAPISTATUS openchangedb_get_mapistoreURI | ( | TALLOC_CTX * | parent_ctx, |
void * | _ldb_ctx, | ||
uint64_t | fid, | ||
char ** | mapistoreURL, | ||
bool | mailboxstore | ||
) |
Retrieve the mapistore URI associated to a mailbox system folder.
parent_ctx | pointer to the memory context |
_ldb_ctx | pointer to the openchange LDB context |
fid | the Folder identifier to search for |
mapistoreURL | pointer on pointer to the mapistore URI the function returns |
mailboxstore | boolean value which defines whether the record has to be searched within Public folders hierarchy or not |
Referenced by emsmdbp_object_folder_init().
enum MAPISTATUS openchangedb_get_new_folderID | ( | void * | _ldb_ctx, |
uint64_t * | fid | ||
) |
Return the next available FolderID
_ldb_ctx | pointer to the openchange LDB context |
fid | pointer to the fid value the function returns |
Referenced by EcDoRpc_RopCreateSystemSpecialFolder(), EcDoRpc_RopCreateGenericFolder(), and EcDoRpc_RopCreateMessage().
enum MAPISTATUS openchangedb_get_PublicFolderID | ( | void * | _ldb_ctx, |
uint32_t | SystemIdx, | ||
uint64_t * | FolderId | ||
) |
Retrieve the public folder FolderID (fid) for a given folder type
_ldb_ctx | pointer to the OpenChange LDB context |
SystemIdx | the system folder index |
FolderId | pointer to the folder identifier the function returns |
Referenced by emsmdbp_object_mailbox_init(), and RopLogon_PublicFolder().
enum MAPISTATUS openchangedb_get_PublicFolderReplica | ( | void * | _ldb_ctx, |
uint16_t * | ReplID, | ||
struct GUID * | ReplGUID | ||
) |
Retrieve the public folder replica identifier and GUID from the openchange dispatcher database
_ldb_ctx | pointer to the OpenChange LDB context |
ReplID | pointer to the replica identifier the function returns |
ReplGUID | pointer to the replica GUID the function returns |
Referenced by RopLogon_PublicFolder().
enum MAPISTATUS openchangedb_get_ReceiveFolder | ( | TALLOC_CTX * | parent_ctx, |
void * | _ldb_ctx, | ||
const char * | recipient, | ||
const char * | MessageClass, | ||
uint64_t * | fid, | ||
const char ** | ExplicitMessageClass | ||
) |
Retrieve the Explicit message class and Folder identifier associated to the MessageClass search pattern.
parent_ctx | pointer to the memory context |
_ldb_ctx | pointer to the openchange LDB context |
recipient | pointer to the mailbox's username |
MessageClass | substring to search for |
fid | pointer to the folder identifier the function returns |
ExplicitMessageClass | pointer on pointer to the complete message class the function returns |
Referenced by RopGetReceiveFolder().
enum MAPISTATUS openchangedb_get_SystemFolderID | ( | void * | _ldb_ctx, |
char * | recipient, | ||
uint32_t | SystemIdx, | ||
uint64_t * | FolderId | ||
) |
Retrieve the mailbox FolderID for given recipient from openchange dispatcher database
_ldb_ctx | pointer to the OpenChange LDB context |
recipient | the mailbox username |
SystemIdx | the system folder index |
FolderId | pointer to the folder identifier the function returns |
Referenced by emsmdbp_object_mailbox_init(), and RopLogon_Mailbox().
enum MAPISTATUS openchangedb_get_table_property | ( | TALLOC_CTX * | parent_ctx, |
void * | _ldb_ctx, | ||
char * | recipient, | ||
char * | ldb_filter, | ||
uint32_t | proptag, | ||
uint32_t | pos, | ||
void ** | data | ||
) |
Retrieve a MAPI property from a table (ldb search results)
parent_ctx | pointer to the memory context |
_ldb_ctx | pointer to the openchange LDB context |
recipient | the mailbox username |
ldb_filter | the ldb search string |
proptag | the MAPI property tag to retrieve value for |
pos | the record position in search results |
data | pointer on pointer to the data the function returns |
References openchangedb_property_get_attribute(), openchangedb_get_folder_special_property(), and openchangedb_get_folder_property_data().
Referenced by EcDoRpc_RopQueryRows().
enum MAPISTATUS openchangedb_lookup_folder_property | ( | void * | _ldb_ctx, |
uint32_t | proptag, | ||
uint64_t | fid | ||
) |
Check if a property exists within an openchange dispatcher database record
_ldb_ctx | pointer to the openchange LDB context |
proptag | the MAPI property tag to lookup |
fid | the record folder identifier |
References openchangedb_property_get_attribute().
Referenced by RopGetPropertiesSpecific_SystemSpecialFolder().
const char* openchangedb_property_get_attribute | ( | uint32_t | ) |
enum MAPISTATUS openchangedb_set_ReceiveFolder | ( | TALLOC_CTX * | parent_ctx, |
void * | _ldb_ctx, | ||
const char * | recipient, | ||
const char * | MessageClass, | ||
uint64_t | fid | ||
) |
Set the receive folder for a specific message class.
parent_ctx | pointer to the memory context |
_ldb_ctx | pointer to the openchange LDB context |
recipient | pointer to the mailbox's username |
MessageClass | message class (e.g. IPM.whatever) to set |
fid | folder identifier for the recipient folder for the message class |
References openchangedb_get_distinguishedName().
Referenced by RopSetReceiveFolder().
const uint8_t GUID_NSPI[] [static] |
{ 0xDC, 0xA7, 0x40, 0xC8, 0xC0, 0x42, 0x10, 0x1A, 0xB4, 0xB9, 0x08, 0x00, 0x2B, 0x2F, 0xE1, 0x82 }
Represents the NSPI Protocol in Permanent Entry IDs.
Referenced by entryid_set_AB_EntryID(), and emsabp_set_PermanentEntryID().
![]() ![]() ![]() |
This content is licensed under the Creative Commons Attribution ShareAlike License v. 3.0: http://creativecommons.org/licenses/by-sa/3.0/ |