MAPIProxy 2.0 API Documentation

- Main Page
- Related Pages
- Data Structures
- Files

- File List
- Globals

Functions
emsmdbp.c File Reference

EMSMDB Provider implementation. More...

`#include "mapiproxy/dcesrv_mapiproxy.h"`
`#include "dcesrv_exchange_emsmdb.h"`
`#include "mapiproxy/libmapiserver/libmapiserver.h"`
`#include <ldap_ndr.h>`

## Functions
_PUBLIC_ struct emsmdbp_context * | emsmdbp_init (struct loadparm_context *lp_ctx, const char *username, void *ldb_ctx)
static int | emsmdbp_mapi_handles_destructor (void *data)
static int | emsmdbp_mapi_store_destructor (void *data)
_PUBLIC_ void * | emsmdbp_openchange_ldb_init (struct loadparm_context *lp_ctx)
_PUBLIC_ enum MAPISTATUS | emsmdbp_resolve_recipient (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, char *recipient, struct mapi_SPropTagArray *properties, struct RecipientRow *row)
_PUBLIC_ bool | emsmdbp_verify_user (struct dcesrv_call_state *dce_call, struct emsmdbp_context *emsmdbp_ctx)
_PUBLIC_ bool | emsmdbp_verify_userdn (struct dcesrv_call_state *dce_call, struct emsmdbp_context *emsmdbp_ctx, const char *legacyExchangeDN, struct ldb_message **msg)

## Detailed Description

EMSMDB Provider implementation.

## Function Documentation

_PUBLIC_ struct emsmdbp_context* emsmdbp_init | ( | struct loadparm_context * | lp_ctx,
|  | const char * | username,
|  | void * | ldb_ctx
| ) |  |
| read

Initialize the EMSMDBP context and open connections to Samba databases.

Parameters

  lp_ctx | pointer to the loadparm_context
  username | account name for current session
  ldb_ctx | pointer to the openchange dispatcher ldb database

Returns
  Allocated emsmdbp_context pointer on success, otherwise NULL

References emsmdbp_mapi_handles_destructor(), emsmdbp_mapi_store_destructor(), and mapi_handles_init().

Referenced by dcesrv_EcDoConnect(), and dcesrv_EcDoConnectEx().

static int emsmdbp_mapi_handles_destructor | ( | void * | data | ) |
| static

Release the MAPI handles context used by EMSMDB provider context

Parameters

  data | pointer on data to destroy

Returns
  0 on success, otherwise -1

References mapi_handles_release().

Referenced by emsmdbp_init().

static int emsmdbp_mapi_store_destructor | ( | void * | data | ) |
| static

Release the MAPISTORE context used by EMSMDB provider context

Parameters

  data | pointer on data to destroy

Returns
  0 on success, otherwise -1

Referenced by emsmdbp_init().

_PUBLIC_ void* emsmdbp_openchange_ldb_init | ( | struct loadparm_context * | lp_ctx | ) |

Open openchange.ldb database

Parameters

  lp_ctx | pointer on the loadparm_context

Note
  This function is just a wrapper over mapiproxy_server_openchange_ldb_init

Returns
  Allocated LDB context on success, otherwise NULL

References mapiproxy_server_openchange_ldb_init().

Referenced by dcesrv_exchange_emsmdb_init().

_PUBLIC_ enum MAPISTATUS emsmdbp_resolve_recipient | ( | TALLOC_CTX * | mem_ctx,
|  | struct emsmdbp_context * | emsmdbp_ctx,
|  | char * | recipient,
|  | struct mapi_SPropTagArray * | properties,
|  | struct RecipientRow * | row
| ) |  |

Resolve a recipient and build the associated RecipientRow structure

Parameters

  mem_ctx | pointer to the memory context
  emsmdbp_ctx | pointer to the EMSMDBP context
  recipient | pointer to the recipient string
  properties | array of properties to lookup for a recipient
  row | the RecipientRow to fill in

Note
  This is a very preliminary implementation with a lot of pseudo-hardcoded things. Lot of work is required to make this function generic and to cover all different cases

Returns
  Allocated RecipientRow on success, otherwise NULL

References libmapiserver_push_property().

_PUBLIC_ bool emsmdbp_verify_user | ( | struct dcesrv_call_state * | dce_call,
|  | struct emsmdbp_context * | emsmdbp_ctx
| ) |  |

Check if the authenticated user belongs to the Exchange organization and is enabled

Parameters

  dce_call | pointer to the session context
  emsmdbp_ctx | pointer to the EMSMDBP context

Returns
  true on success, otherwise false

References openchangedb_get_MailboxReplica().

Referenced by dcesrv_EcDoConnect(), and dcesrv_EcDoConnectEx().

_PUBLIC_ bool emsmdbp_verify_userdn | ( | struct dcesrv_call_state * | dce_call,
|  | struct emsmdbp_context * | emsmdbp_ctx,
|  | const char * | legacyExchangeDN,
|  | struct ldb_message ** | msg
| ) |  |

Check if the user record which legacyExchangeDN points to belongs to the Exchange organization and is enabled

Parameters

  dce_call | pointer to the session context
  emsmdbp_ctx | pointer to the EMSMDBP context
  legacyExchangeDN | pointer to the userDN to lookup
  msg | pointer on pointer to the LDB message matching the record

Note
  Users can set msg to NULL if they do not intend to retrieve the message

Returns
  true on success, otherwise false

Referenced by dcesrv_EcDoConnect(), and dcesrv_EcDoConnectEx().

| This content is licensed under the Creative Commons Attribution ShareAlike License v. 3.0: http://creativecommons.org/licenses/by-sa/3.0/