- [kopano](src/kopano/plugin/movetopublicldap.py) Include Kopano copyright and license.
parent
6e32101634
commit
36cd823be8
|
@ -470,7 +470,7 @@ kopanoResourceType: publicFolder:Public Stores/public
|
|||
```
|
||||
|
||||
messages to `public@example.com` will be delivered to the public store in `Public Stores/public`.
|
||||
The central [attribute](https://documentation.kopano.io/kopanocore_administrator_manual/appendix_b.html#appendix-b-ldap-attribute-description) is `kopanoResourceType: publicFolder:Public Stores/public`. It contains a token and a folder name. The token match is case sensitive and there must be a colon `:` separating
|
||||
The central [attribute](https://documentation.kopano.io/kopanocore_administrator_manual/appendix_b.html#appendix-b-ldap-attribute-description) is `kopanoResourceType: publicFolder:Public Stores/public`. It contains a token and a folder name. The token match is case sensitive and there must be a colon `:` separating
|
||||
the token and the public folder name. The folder name can contain space and
|
||||
sub folders, which are distinguished using a forward slash `/`.
|
||||
|
||||
|
@ -483,7 +483,7 @@ ldap_public_folder_attribute = kopanoResourceType
|
|||
ldap_public_folder_attribute_token = publicFolder
|
||||
```
|
||||
|
||||
As with other parameters, environment variables can be used to define them: `LDAP_PUBLIC_FOLDER_ATTRIBUTE=kopanoResourceType` and `LDAP_PUBLIC_FOLDER_ATTRIBUTE_TOKEN=publicFolder`.
|
||||
As with other parameters, environment variables can be used to define them: `LDAP_PUBLIC_FOLDER_ATTRIBUTE=kopanoResourceType` and `LDAP_PUBLIC_FOLDER_ATTRIBUTE_TOKEN=publicFolder`.
|
||||
|
||||
## Shared folders
|
||||
|
||||
|
|
|
@ -16,6 +16,7 @@ LDAP_GROUPOU=groups
|
|||
LDAP_GROUPOBJ=kopano-group
|
||||
LDAP_TEST_USER=demo
|
||||
LDAP_TEST_USERPW=demo
|
||||
LDAP_TEST_USERAS=trial
|
||||
LDAP_TEST_ADMIN=admin
|
||||
LDAP_TEST_ADMINPW=admin
|
||||
LDAP_TEST_GROUP=team
|
||||
|
|
|
@ -149,6 +149,7 @@ userPassword: $(LDAP_TEST_USERPW)
|
|||
telephoneNumber: 0123 123456789
|
||||
title: First User
|
||||
kopanoAccount: 1
|
||||
kopanoAliases: $(LDAP_TEST_USERAS)@$(MAIL_DOMAIN)
|
||||
kopanoEnabledFeatures: imap
|
||||
kopanoEnabledFeatures: pop3
|
||||
endef
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
""" movetopublicldap.py
|
||||
# SPDX-License-Identifier: AGPL-3.0-only
|
||||
""" (c) 2019 Kopano
|
||||
|
||||
This is an LDAP lookup extension to the move to public plugin.
|
||||
movetopublicldap.py
|
||||
|
||||
This is an LDAP lookup extension to the move to public plugin movetopublic.py.
|
||||
The changes to the original work are highlihgted below.
|
||||
|
||||
The move to public plugin moves incoming messages to a folder in the public
|
||||
store. If folders are missing they will be created.
|
||||
|
@ -40,7 +44,8 @@ import ldap
|
|||
import os.path
|
||||
|
||||
class KConfigParser(ZConfigParser):
|
||||
""" Extends zconfig.ZConfigParser to also allow !directive in cfg files """
|
||||
""" Extends zconfig.ZConfigParser to also allow !directive in cfg files.
|
||||
Change type addition. """
|
||||
def __init__(self, configfile, defaultconfig={}):
|
||||
self.config = configparser.ConfigParser(defaults=defaultconfig,
|
||||
delimiters=('='), comment_prefixes=('#', '!'))
|
||||
|
@ -70,7 +75,8 @@ class MoveToPublic(IMapiDAgentPlugin):
|
|||
self.readconfig(self.CONFIGFILES, self.DEFAULTCONFIG)
|
||||
|
||||
def readconfig(self, configfiles=CONFIGFILES, defaultconfig=DEFAULTCONFIG):
|
||||
""" Reads ldap.cfg and movetopublicldap.cfg into self.config """
|
||||
""" Reads ldap.cfg and movetopublicldap.cfg into self.config.
|
||||
Change type addition. """
|
||||
options = [opt.split('_', 1)[1] for opt in defaultconfig.keys()]
|
||||
config = None
|
||||
for configfile in configfiles:
|
||||
|
@ -87,7 +93,8 @@ class MoveToPublic(IMapiDAgentPlugin):
|
|||
return self.config
|
||||
|
||||
def searchfilter(self, recipient):
|
||||
""" (&(uid=recipient)(kopanoResourceType=publicFolder:*)) """
|
||||
""" (&(uid=recipient)(kopanoResourceType=publicFolder:*)).
|
||||
Change type addition. """
|
||||
return ("(&({}={})({}={}:*))"
|
||||
.format(self.config['user_unique_attribute'],
|
||||
recipient,
|
||||
|
@ -96,8 +103,8 @@ class MoveToPublic(IMapiDAgentPlugin):
|
|||
|
||||
def searchquery(self, recipient):
|
||||
""" Query a LDAP/AD driectory server to lookup recipient using
|
||||
search_base and return public_folder_attribute
|
||||
"""
|
||||
search_base and return public_folder_attribute.
|
||||
Change type addition. """
|
||||
if not self.config or not self.config['uri']:
|
||||
self.logger.logError(("!--- ldap_uri is not defined."
|
||||
" Please check {}" .format(self.CONFIGFILES)))
|
||||
|
@ -133,7 +140,8 @@ class MoveToPublic(IMapiDAgentPlugin):
|
|||
return result
|
||||
|
||||
def publicfolder(self, recipient):
|
||||
""" Check for ldap_public_folder_attribute_token and return folder """
|
||||
""" Check for ldap_public_folder_attribute_token and return folder.
|
||||
Change type addition. """
|
||||
destination_folder = []
|
||||
result = self.searchquery(recipient)
|
||||
if result:
|
||||
|
@ -149,6 +157,8 @@ class MoveToPublic(IMapiDAgentPlugin):
|
|||
return destination_folder
|
||||
|
||||
def PreDelivery(self, session, addrbook, store, folder, message):
|
||||
""" Original code from movetopublic.py with call to self.publicfolder().
|
||||
Change type modification. """
|
||||
|
||||
props = message.GetProps([PR_RECEIVED_BY_EMAIL_ADDRESS_W], 0)
|
||||
if props[0].ulPropTag != PR_RECEIVED_BY_EMAIL_ADDRESS_W:
|
||||
|
|
Loading…
Reference in New Issue