from ocsmanager.config.routing import make_map
import openchange.mapistore as mapistore
+# samba
+import samba.param
+from samba import Ldb
+from samba.samdb import SamDB
+from samba.auth import system_session, admin_session
+
+FIRST_ORGANIZATION = "First Organization"
+FIRST_ORGANIZATION_UNIT = "First Administrative Group"
+
+def _load_samba_environment():
+ """Load the samba configuration vars from smb.conf and the sam.db.
+
+ """
+
+ params = samba.param.LoadParm()
+ params.load_default()
+
+ netbiosname = params.get("netbios name")
+ hostname = netbiosname.lower()
+
+ dnsdomain = params.get("realm")
+ dnsdomain = dnsdomain.lower()
+
+ serverrole = params.get("server role")
+ if serverrole == "domain controller":
+ domaindn = "DC=" + dnsdomain.replace(".", ",DC=")
+ else:
+ domaindn = "CN=" + netbiosname
+
+ rootdn = domaindn
+ configdn = "CN=Configuration," + rootdn
+ firstorg = FIRST_ORGANIZATION
+ firstou = FIRST_ORGANIZATION_UNIT
+
+ samdb_ldb = SamDB(url=params.samdb_url(), lp=params)
+ sam_environ = {"samdb_ldb": samdb_ldb,
+ "private_dir": params.get("private dir"),
+ "domaindn": domaindn,
+ "oc_user_basedn": "CN=%s,CN=%s,CN=%s,%s" \
+ % (firstou, firstorg, netbiosname, domaindn),
+ "firstorgdn": ("CN=%s,CN=Microsoft Exchange,CN=Services,%s"
+ % (firstorg, configdn)),
+ "legacyserverdn": ("/o=%s/ou=%s/cn=Configuration/cn=Servers"
+ "/cn=%s"
+ % (firstorg, firstou, netbiosname)),
+ "hostname": hostname,
+ "dnsdomain": dnsdomain}
+
+ # OpenChange dispatcher DB names
+
+ return sam_environ
+
+
+def _load_ocdb():
+ """Return a Ldb object pointing to the openchangedb.ldb
+
+ """
+
+ params = samba.param.LoadParm()
+ params.load_default()
+
+ ocdb = Ldb(os.path.join(params.get("private dir"), "openchange.ldb"))
+
+ return ocdb
+
+
def load_environment(global_conf, app_conf):
"""Configure the Pylons environment via the ``pylons.config``
object
ocsconfig = OCSConfig.OCSConfig(os.path.join(config.get('here'), 'ocsmanager.ini'))
config['ocsmanager'] = ocsconfig.load()
+ config['samba'] = _load_samba_environment()
+ config['oc_ldb'] = _load_ocdb()
+
mapistore.set_mapping_path(config['ocsmanager']['main']['mapistore_data'])
- config['mapistore'] = mapistore.mapistore(config['ocsmanager']['main']['mapistore_root']).management()
+ mstore = mapistore.MAPIStore(config['ocsmanager']['main']['mapistore_root'])
+ config['mapistore'] = mstore
+ config['management'] = mstore.management()
if config['ocsmanager']['main']['debug'] == "yes":
- config['mapistore'].verbose = True;
+ config['management'].verbose = True;
return config