Hello. This message was cross-posted to openchange-dev (minor edits for clarity/relevance).

I am having some difficulty getting ocsmanager working correctly. It appears that autodiscover works as expected, however, free/busy lookups fail using the test instructions in the README.txt. I've not bothered with an Outlook 2010 client yet. This has been on the back burner for a long time in the hopes that it would magically work with some future release. I've stepped through every bit of this that I know how and am looking for some direction in debugging. At first glance, it seems like it might be related to the warning message below (when starting paster):

Dec 01 21:48:38 Server2 systemd[1]: Started OpenChange OCSManager.

Dec 01 21:48:47 Server2 paster[357]: Dec 01 21:48:47 samba [357]: [ERROR] [so-product-registry] failed to load product Appointments required by SOGoBackend.

Dec 01 21:48:47 Server2 paster[357]: Dec 01 21:48:47 samba [357]: [so-product-registry] could not load product: SOGoBackend

Dec 01 21:48:47 Server2 paster[357]: Dec 01 21:48:47 samba [357]: <0x0x55bb2ea64da0[SOGoCache]> Cache cleanup interval set every 300.000000 seconds

Dec 01 21:48:47 Server2 paster[357]: Dec 01 21:48:47 samba [357]: <0x0x55bb2ea64da0[SOGoCache]> Using host(s) '127.0.0.1' as server(s)


I should note that this is similar to an old SOGo bug due to using a newer GNUStep version (which has since been fixed). My current versions, in case it is related, are:
gnustep-base 1.24.8-2
gnustep-make 2.6.7-1


Using the example fb.xml listed in the README.txt for ocsmanager (correcting with valid email addresses) the first error message in traceback is:

interface=Wsdl11(), in_protocol=Soap11(), out_protocol=Soap11())

Module spyne.interface.wsdl.wsdl11:149 in __init__

super(Wsdl11, self).__init__(interface)

Module spyne.interface.xml_schema._base:111 in __init__

pref = self.interface.prefmap[self.interface.app.tns]

AttributeError: 'NoneType' object has no attribute 'prefmap'

Keep in mind I'm working from CLI only and grabbing what I think is relevant. I'm unable to access the web-based debug info as it is prompting for authentication, and nothing seems to work (though I'm able to get it to display some info if I keep failing auth).

I expect that "NoneType" is something empty that shouldn't be. If so, could that be related to the messages displayed when starting paster? I'm expecting so, but asking anyway. I've seen these types of errors from a few different sources, but no resolution as of yet. Same file gives plausible results with Zentyal 4.2. I'd love to be the person who posts the solution, however, I feel I am well outside of my depth here.

FYI, I'm also way outside of a standard config. I'm running Arch Linux with Samba-4.3.1, Openchange-2.3 with SizedXid/ndr additions (needed by sogo-openchange 2.3.3a) and the server_id_str_buf changes in the openchange bug #407 (zentyal #176). This particular problem dates back quite a while. Problem exists with git as well (with 407 taken care of). I've gone through the python deps pretty thoroughly following my previous inquiry on the openchange-dev list, and think I'm pretty much on par there, but obviously no guarantees. I'm really hoping that this will result in a facepalm, as I am so close.


My oscmanager.ini (obfuscated where necessary):

#
# ocsmanager - Pylons configuration
#
# The %(here)s variable will be replaced with the parent directory of this file
#
[DEFAULT]
debug = true
email_to = postmas...@domain.tld
smtp_server = localhost
error_email_from = postmas...@domain.tld

[main]
auth = ldap
mapistore_root = /var/lib/samba/private
mapistore_data = /var/lib/samba/private/mapistore
debug = yes

[auth:ldap]
host = ldap://server.internal.domain.tld
port = 389
bind_dn = CN=unprivelegeduser,CN=Users,DC=internal,DC=domain,DC=tld
bind_pw = Zg0m8riwtChrlIJMbMM1vdUg1xZaaK17AYkH0LkOMB2wPzDVGym2vkONqVFeFlC
basedn = CN=Users,DC=internal,DC=domain,DC=tld
#filter = (cn=%s)
#attrs = userPassword, x-isActive

[server:main]
use = egg:Paste#http
host = server.internal.domain.tld
port = 5000
protocol_version = HTTP/1.1

[app:main]
use = egg:ocsmanager
full_stack = true
static_files = true
cache_dir = %(here)s/data
beaker.session.key = ocsmanager
beaker.session.secret = SDyKK3dKyDgW0mlpqttTMGU1f
app_instance_uuid = {ee533ebc-f266-49d1-ae10-d017ee6aa98c}
NTLMAUTHHANDLER_WORKDIR = /var/cache/ntlmauthhandler
SAMBA_HOST = server.internal.domain.tld

[rpcproxy:ldap]
host = server.internal.domain.tld
port = 389
basedn = CN=Users,DC=internal,DC=domain,DC=tld

# WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT*
# Debug mode will enable the interactive debugging tool, allowing ANYONE to
# execute malicious code after an exception is raised.
set debug = false

[autodiscover]
# The client address that is not in these networks have RPC/Proxy
# prioritaised. It only works for Outlook 2010 or higher. Delimiter: ,
# internal_networks = 0.0.0.0/0

[autodiscover:rpcproxy]
# Enabled RPC/Proxy or not
enabled = true
# We assume the autodiscover host and the EWS (Free/Busy) are in the same host
external_hostname = mail.domain.tld
# Require SSL to logon. Default value is false
ssl = true

[outofoffice]
# Set the backend.
# Possible backends: file, managesieve
# file makes sieve and OCSManager lives in the same host
# managesieve indicates the server to put/get the sieve script
backend = file

[outofoffice:file]
# Path of the sieve script for the user
#   Expansion variables (example user.n...@example.com):
#       $domain   = example.com
#       $user     = user.name
#       $fulluser = user.n...@example.com
sieve_script_path = /var/vmail/$user/sieve/sieve-script
# If the sieve script directory hierarchy does not exist, it will be created
sieve_script_path_mkdir = true

[outofoffice:managesieve]
# It requires to have a master password to get into every account
# server = 127.0.0.1
# SSL on/off
# ssl = true
# Master password
# secret = secret

# Logging configuration
[loggers]
keys = root

[handlers]
keys = console

[formatters]
keys = generic

[logger_root]
level = INFO
handlers = console

[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = NOTSET
formatter = generic

[formatter_generic]
format = %(asctime)s %(levelname)-5.5s [%(name)s] [%(threadName)s] %(message)s


I hope that is enough information to at least point to a likely suspect. Hopefully we can get it resolved for others as well.

Thanks in advance for any pointers.

--DJ Lucas
--
users@sogo.nu
https://inverse.ca/sogo/lists

Reply via email to