123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274 |
- /*
- * Copyright 2005 - 2016 Zarafa and its licensors
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
- #include <kopano/platform.h>
- #ifndef ECDEFS_H
- #define ECDEFS_H
- namespace KC {
- // Get permission type
- #define ACCESS_TYPE_DENIED 1
- #define ACCESS_TYPE_GRANT 2
- #define ACCESS_TYPE_BOTH 3
- #define ecRightsNone 0x00000000L
- #define ecRightsReadAny 0x00000001L
- #define ecRightsCreate 0x00000002L
- #define ecRightsEditOwned 0x00000008L
- #define ecRightsDeleteOwned 0x00000010L
- #define ecRightsEditAny 0x00000020L
- #define ecRightsDeleteAny 0x00000040L
- #define ecRightsCreateSubfolder 0x00000080L
- #define ecRightsFolderAccess 0x00000100L
- //#define ecrightsContact 0x00000200L
- #define ecRightsFolderVisible 0x00000400L
- #define ecRightsTemplateNoRights ecRightsFolderVisible
- #define ecRightsTemplateReadOnly ecRightsTemplateNoRights | ecRightsReadAny
- #define ecRightsTemplateSecretary ecRightsTemplateReadOnly | ecRightsCreate | ecRightsEditOwned | ecRightsDeleteOwned | ecRightsEditAny | ecRightsDeleteAny
- #define ecRightsTemplateOwner ecRightsTemplateSecretary | ecRightsCreateSubfolder | ecRightsFolderAccess
- /* #define ecRightsTemplateReviewer ecRightsTemplateReadOnly */
- /* #define ecRightsTemplateAuthor ecRightsTemplateReadOnly | ecRightsCreate | ecRightsEditOwned | ecRightsDeleteOwned */
- /* #define ecRightsTemplateEditor ecRightsTemplateReadOnly | ecRightsCreate | ecRightsEditAny | ecRightsDeleteAny */
- #define ecRightsAll 0x000005FBL
- #define ecRightsFullControl 0x000004FBL
- #define ecRightsDefault ecRightsNone | ecRightsFolderVisible
- #define ecRightsDefaultPublic ecRightsReadAny | ecRightsFolderVisible
- #define ecRightsAdmin 0x00001000L
- #define ecRightsAllMask 0x000015FBL
- // Right change indication (state field in struct)
- #define RIGHT_NORMAL 0x00
- #define RIGHT_NEW 0x01
- #define RIGHT_MODIFY 0x02
- #define RIGHT_DELETED 0x04
- #define RIGHT_AUTOUPDATE_DENIED 0x08
- #define OBJECTCLASS(__type, __class) \
- ( (((__type) << 16) | ((__class) & 0xffff)) )
- #define OBJECTCLASS_CLASSTYPE(__class) \
- ( ((__class) & 0xffff0000) )
- #define OBJECTCLASS_TYPE(__class) \
- ( (objecttype_t)(((__class) >> 16) & 0xffff) )
- #define OBJECTCLASS_ISTYPE(__class) \
- ( ((__class) & 0xffff) == 0 && ((__class) >> 16) != 0)
- #define OBJECTCLASS_FIELD_COMPARE(__left, __right) \
- ( !(__left) || !(__right) || (__left) == (__right) )
- #define OBJECTCLASS_COMPARE(__left, __right) \
- ( OBJECTCLASS_FIELD_COMPARE(OBJECTCLASS_TYPE(__left), OBJECTCLASS_TYPE(__right)) && \
- OBJECTCLASS_FIELD_COMPARE((__left) & 0xffff, (__right) & 0xffff) )
- #define OBJECTCLASS_COMPARE_SQL(__column, __objclass) \
- string(((__objclass) == 0) ? \
- "TRUE" : \
- ((__objclass) & 0xffff) ? \
- __column " = " + stringify(__objclass) : \
- "(" __column " & 0xffff0000) = " + stringify((__objclass) & 0xffff0000))
- enum objecttype_t {
- OBJECTTYPE_UNKNOWN = 0,
- OBJECTTYPE_MAILUSER = 1,
- OBJECTTYPE_DISTLIST = 3,
- OBJECTTYPE_CONTAINER = 4
- };
- enum objectclass_t {
- OBJECTCLASS_UNKNOWN = OBJECTCLASS(OBJECTTYPE_UNKNOWN, 0),
- /* All User (active and nonactive) objectclasses */
- OBJECTCLASS_USER = OBJECTCLASS(OBJECTTYPE_MAILUSER, 0),
- ACTIVE_USER = OBJECTCLASS(OBJECTTYPE_MAILUSER, 1),
- NONACTIVE_USER = OBJECTCLASS(OBJECTTYPE_MAILUSER, 2),
- NONACTIVE_ROOM = OBJECTCLASS(OBJECTTYPE_MAILUSER, 3),
- NONACTIVE_EQUIPMENT = OBJECTCLASS(OBJECTTYPE_MAILUSER, 4),
- NONACTIVE_CONTACT = OBJECTCLASS(OBJECTTYPE_MAILUSER, 5),
- /* All distribution lists */
- OBJECTCLASS_DISTLIST = OBJECTCLASS(OBJECTTYPE_DISTLIST, 0),
- DISTLIST_GROUP = OBJECTCLASS(OBJECTTYPE_DISTLIST, 1),
- DISTLIST_SECURITY = OBJECTCLASS(OBJECTTYPE_DISTLIST, 2),
- DISTLIST_DYNAMIC = OBJECTCLASS(OBJECTTYPE_DISTLIST, 3),
- /* All container objects */
- OBJECTCLASS_CONTAINER = OBJECTCLASS(OBJECTTYPE_CONTAINER, 0),
- CONTAINER_COMPANY = OBJECTCLASS(OBJECTTYPE_CONTAINER, 1),
- CONTAINER_ADDRESSLIST = OBJECTCLASS(OBJECTTYPE_CONTAINER, 2)
- };
- enum userobject_relation_t {
- OBJECTRELATION_GROUP_MEMBER = 1,
- OBJECTRELATION_COMPANY_VIEW = 2,
- OBJECTRELATION_COMPANY_ADMIN = 3,
- OBJECTRELATION_QUOTA_USERRECIPIENT = 4,
- OBJECTRELATION_QUOTA_COMPANYRECIPIENT = 5,
- OBJECTRELATION_USER_SENDAS = 6,
- OBJECTRELATION_ADDRESSLIST_MEMBER = 7
- };
- // Warning, those values are the same as ECSecurity::eQuotaStatus
- enum eQuotaStatus{ QUOTA_OK, QUOTA_WARN, QUOTA_SOFTLIMIT, QUOTA_HARDLIMIT};
- enum userobject_admin_level_t {
- ADMIN_LEVEL_ADMIN = 1, /* Administrator over user's own company. */
- ADMIN_LEVEL_SYSADMIN = 2 /* System administrator (same rights as SYSTEM). */
- };
- struct ECENTRYID {
- unsigned int cb;
- unsigned char* lpb;
- };
- struct ECSVRNAMELIST {
- unsigned int cServers;
- LPTSTR* lpszaServer;
- };
- struct SPROPMAPENTRY {
- unsigned int ulPropId;
- LPTSTR lpszValue;
- };
- typedef struct SPROPMAPENTRY *LPSPROPMAPENTRY;
- struct SPROPMAP {
- unsigned int cEntries;
- LPSPROPMAPENTRY lpEntries;
- };
- typedef struct SPROPMAP *LPSPROPMAP;
- struct MVPROPMAPENTRY {
- unsigned int ulPropId;
- int cValues;
- LPTSTR* lpszValues;
- };
- typedef struct MVPROPMAPENTRY *LPMVPROPMAPENTRY;
- struct MVPROPMAP {
- unsigned int cEntries;
- LPMVPROPMAPENTRY lpEntries;
- };
- typedef struct MVPROPMAP *LPMVPROPMAP;
- struct ECUSER {
- LPTSTR lpszUsername; // username@companyname
- LPTSTR lpszPassword;
- LPTSTR lpszMailAddress;
- LPTSTR lpszFullName;
- LPTSTR lpszServername;
- objectclass_t ulObjClass;
- unsigned int ulIsAdmin; // See userobject_admin_level_t
- unsigned int ulIsABHidden; // Is user hidden from address book
- unsigned int ulCapacity; // Resource capacity
- SPROPMAP sPropmap; // Extra anonymous properties for addressbook
- MVPROPMAP sMVPropmap; // Extra anonymous MV properties for addressbook
- ECENTRYID sUserId;
- };
- struct ECGROUP {
- LPTSTR lpszGroupname; // groupname@companyname
- LPTSTR lpszFullname;
- LPTSTR lpszFullEmail;
- ECENTRYID sGroupId;
- unsigned int ulIsABHidden; // Is group hidden from address book
- SPROPMAP sPropmap; // Extra anonymous properties for addressbook
- MVPROPMAP sMVPropmap; // Extra anonymous MV properties for addressbook
- };
- struct ECCOMPANY {
- ECENTRYID sAdministrator; // userid of the administrator
- LPTSTR lpszCompanyname;
- LPTSTR lpszServername;
- ECENTRYID sCompanyId;
- unsigned int ulIsABHidden; // Is company hidden from address book
- SPROPMAP sPropmap; // Extra anonymous properties for addressbook
- MVPROPMAP sMVPropmap; // Extra anonymous MV properties for addressbook
- };
- struct ECUSERCLIENTUPDATESTATUS {
- unsigned int ulTrackId;
- time_t tUpdatetime;
- LPTSTR lpszCurrentversion;
- LPTSTR lpszLatestversion;
- LPTSTR lpszComputername;
- unsigned int ulStatus;
- };
- #define UPDATE_STATUS_UNKNOWN 0
- #define UPDATE_STATUS_SUCCESS 1
- #define UPDATE_STATUS_PENDING 2
- #define UPDATE_STATUS_FAILED 3
- struct ECPERMISSION {
- unsigned int ulType;
- unsigned int ulRights;
- unsigned int ulState;
- ECENTRYID sUserId;
- };
- struct ECQUOTA {
- bool bUseDefaultQuota;
- bool bIsUserDefaultQuota; // Default quota for users within company
- int64_t llWarnSize;
- int64_t llSoftSize;
- int64_t llHardSize;
- };
- struct ECQUOTASTATUS {
- int64_t llStoreSize;
- eQuotaStatus quotaStatus;
- };
- struct ECSERVER {
- LPTSTR lpszName;
- LPTSTR lpszFilePath;
- LPTSTR lpszHttpPath;
- LPTSTR lpszSslPath;
- LPTSTR lpszPreferedPath;
- ULONG ulFlags;
- };
- struct ECSERVERLIST {
- unsigned int cServers;
- ECSERVER *lpsaServer;
- };
- // Flags for ns__submitMessage
- #define EC_SUBMIT_LOCAL 0x00000000
- #define EC_SUBMIT_MASTER 0x00000001
- #define EC_SUBMIT_DOSENTMAIL 0x00000002
- // GetServerDetails
- #define EC_SERVERDETAIL_NO_NAME 0x00000001
- #define EC_SERVERDETAIL_FILEPATH 0x00000002
- #define EC_SERVERDETAIL_HTTPPATH 0x00000004
- #define EC_SERVERDETAIL_SSLPATH 0x00000008
- #define EC_SERVERDETAIL_PREFEREDPATH 0x00000010
- #define EC_SDFLAG_IS_PEER 0x00000001
- #define EC_SDFLAG_HAS_PUBLIC 0x00000002
- // CreateStore flag(s)
- #define EC_OVERRIDE_HOMESERVER 0x00000001
- } /* namespace */
- #endif
|