* init and prepare a record
*/
-uint32_t ocb_record_init(struct ocb_context *ocb_ctx, const char *dn, const char *id,
- struct mapi_SPropValue_array *props)
+uint32_t ocb_record_init(struct ocb_context *ocb_ctx, const char *objclass, const char *dn,
+ const char *id, struct mapi_SPropValue_array *props)
{
TALLOC_CTX *mem_ctx;
struct ldb_context *ldb_ctx;
/* add records for cn */
ldb_msg_add_string(ocb_ctx->msg, "cn", id);
+ /* add filters attributes */
+ ldb_msg_add_string(ocb_ctx->msg, "objectClass", objclass);
+
talloc_free(basedn);
return 0;
return 0;
}
+
+/**
+ * Add a property (attr, value) couple to the current record
+ */
uint32_t ocb_record_add_property(struct ocb_context *ocb_ctx,
struct mapi_SPropValue *lpProp)
{
uint32_t ocb_release(struct ocb_context *);
uint32_t ocb_record_init(struct ocb_context *, const char *,
- const char *,struct mapi_SPropValue_array *);
+ const char *, const char *, struct mapi_SPropValue_array *);
uint32_t ocb_record_commit(struct ocb_context *);
uint32_t ocb_record_add_property(struct ocb_context *, struct mapi_SPropValue *);
#define DEFAULT_OCBCONF "%s/.openchange/openchangebackup.conf"
#define DEFAULT_OCBDB "%s/.openchange/openchangebackup_%s.ldb"
+/* objectClass */
+#define OCB_OBJCLASS_CONTAINER "container"
+#define OCB_OBJCLASS_MESSAGE "message"
+#define OCB_OBJCLASS_ATTACHMENT "attachment"
+
#endif /* __OPENCHANGEBACKUP_H__ */
uint32_t ret;
uint32_t i;
- ret = ocb_record_init(ocb_ctx, contentdn, uuid, props);
+ ret = ocb_record_init(ocb_ctx, OCB_OBJCLASS_ATTACHMENT, contentdn, uuid, props);
if (ret == -1) return MAPI_E_SUCCESS;
for (i = 0; i < props->cValues; i++) {
ret = ocb_record_add_property(ocb_ctx, &props->lpProps[i]);
}
/**
- * write contents to the database (message, appointment, contact, task, note etc.)
+ * write message to the database (email, appointment, contact, task, note etc.)
*/
-static enum MAPISTATUS mapidump_write_content(TALLOC_CTX *mem_ctx,
+static enum MAPISTATUS mapidump_write_message(TALLOC_CTX *mem_ctx,
struct ocb_context *ocb_ctx,
struct mapi_SPropValue_array *props,
const char *contentdn,
uint32_t ret;
uint32_t i;
- ret = ocb_record_init(ocb_ctx, contentdn, uuid, props);
+ ret = ocb_record_init(ocb_ctx, OCB_OBJCLASS_MESSAGE, contentdn, uuid, props);
if (ret == -1) return MAPI_E_SUCCESS;
for (i = 0; i < props->cValues; i++) {
ret = ocb_record_add_property(ocb_ctx, &props->lpProps[i]);
uint32_t ret;
uint32_t i;
- ret = ocb_record_init(ocb_ctx, containerdn, uuid, props);
+ ret = ocb_record_init(ocb_ctx, OCB_OBJCLASS_CONTAINER, containerdn, uuid, props);
if (ret == -1) return MAPI_E_SUCCESS;
for (i = 0; i < props->cValues; i++) {
ret = ocb_record_add_property(ocb_ctx, &props->lpProps[i]);
sbin = (const struct SBinary_short *)find_mapi_SPropValue_data(&props, PR_SOURCE_KEY);
uuid = get_MAPI_uuid(mem_ctx, sbin);
contentdn = talloc_asprintf(mem_ctx, "cn=%s,%s", uuid, containerdn);
- mapidump_write_content(mem_ctx, ocb_ctx, &props, contentdn, uuid);
+ mapidump_write_message(mem_ctx, ocb_ctx, &props, contentdn, uuid);
/* If Message has attachments then process them */
has_attach = (const uint8_t *)find_mapi_SPropValue_data(&props, PR_HASATTACH);