File: e2k-security-descriptor.h

package info (click to toggle)
evolution-data-server 1.6.3-5etch3
  • links: PTS
  • area: main
  • in suites: etch
  • size: 59,384 kB
  • ctags: 43,218
  • sloc: ansic: 319,315; tcl: 30,499; xml: 19,166; sh: 18,776; perl: 11,529; cpp: 8,259; java: 7,653; makefile: 6,448; awk: 1,338; yacc: 1,103; sed: 772; cs: 505; lex: 134; asm: 14
file content (81 lines) | stat: -rw-r--r-- 3,203 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
/* Copyright (C) 2001-2004 Novell, Inc. */

#ifndef __E2K_SECURITY_DESCRIPTOR_H__
#define __E2K_SECURITY_DESCRIPTOR_H__

#include "e2k-types.h"
#include <glib-object.h>
#include <libxml/tree.h>

#define E2K_TYPE_SECURITY_DESCRIPTOR            (e2k_security_descriptor_get_type ())
#define E2K_SECURITY_DESCRIPTOR(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), E2K_TYPE_SECURITY_DESCRIPTOR, E2kSecurityDescriptor))
#define E2K_SECURITY_DESCRIPTOR_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), E2K_TYPE_SECURITY_DESCRIPTOR, E2kSecurityDescriptorClass))
#define E2K_IS_SECURITY_DESCRIPTOR(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), E2K_TYPE_SECURITY_DESCRIPTOR))
#define E2K_IS_SECURITY_DESCRIPTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), E2K_TYPE_SECURITY_DESCRIPTOR))

struct _E2kSecurityDescriptor {
	GObject parent;

	E2kSecurityDescriptorPrivate *priv;
};

struct _E2kSecurityDescriptorClass {
	GObjectClass parent_class;
};

GType                  e2k_security_descriptor_get_type      (void);

E2kSecurityDescriptor *e2k_security_descriptor_new           (xmlNodePtr             xml_form,
							      GByteArray            *binary_form);
GByteArray            *e2k_security_descriptor_to_binary     (E2kSecurityDescriptor *sd);

GList                 *e2k_security_descriptor_get_sids      (E2kSecurityDescriptor *sd);
E2kSid                *e2k_security_descriptor_get_default   (E2kSecurityDescriptor *sd);
void                   e2k_security_descriptor_remove_sid    (E2kSecurityDescriptor *sd,
							      E2kSid                *sid);


/* MAPI folder permissions */
#define E2K_PERMISSION_READ_ANY         0x001
#define E2K_PERMISSION_CREATE           0x002
#define E2K_PERMISSION_EDIT_OWNED       0x008
#define E2K_PERMISSION_DELETE_OWNED     0x010
#define E2K_PERMISSION_EDIT_ANY         0x020
#define E2K_PERMISSION_DELETE_ANY       0x040
#define E2K_PERMISSION_CREATE_SUBFOLDER 0x080
#define E2K_PERMISSION_OWNER            0x100
#define E2K_PERMISSION_CONTACT          0x200
#define E2K_PERMISSION_FOLDER_VISIBLE   0x400

#define E2K_PERMISSION_EDIT_MASK	(E2K_PERMISSION_EDIT_ANY | E2K_PERMISSION_EDIT_OWNED)
#define E2K_PERMISSION_DELETE_MASK	(E2K_PERMISSION_DELETE_ANY | E2K_PERMISSION_DELETE_OWNED)

guint32 e2k_security_descriptor_get_permissions (E2kSecurityDescriptor *sd,
						 E2kSid *sid);
void    e2k_security_descriptor_set_permissions (E2kSecurityDescriptor *sd,
						 E2kSid *sid,
						 guint32 perms);

/* Outlook-defined roles */
typedef enum {
	E2K_PERMISSIONS_ROLE_OWNER,
	E2K_PERMISSIONS_ROLE_PUBLISHING_EDITOR,
	E2K_PERMISSIONS_ROLE_EDITOR,
	E2K_PERMISSIONS_ROLE_PUBLISHING_AUTHOR,
	E2K_PERMISSIONS_ROLE_AUTHOR,
	E2K_PERMISSIONS_ROLE_NON_EDITING_AUTHOR,
	E2K_PERMISSIONS_ROLE_REVIEWER,
	E2K_PERMISSIONS_ROLE_CONTRIBUTOR,
	E2K_PERMISSIONS_ROLE_NONE,

	E2K_PERMISSIONS_ROLE_NUM_ROLES,
	E2K_PERMISSIONS_ROLE_CUSTOM = -1
} E2kPermissionsRole;

const char        *e2k_permissions_role_get_name  (E2kPermissionsRole role);
guint32            e2k_permissions_role_get_perms (E2kPermissionsRole role);

E2kPermissionsRole e2k_permissions_role_find      (guint perms);

#endif