Project

General

Profile

Readme 060 » History » Revision 3

Revision 2 (Jörg Ebeling, 04/10/2019 06:29 PM) → Revision 3/4 (Jörg Ebeling, 04/10/2019 06:31 PM)

# LDAP-2-CardDAV Phone Book Gateway (l2cpbg) 

 An LDAP to CardDav (1 way read) Phone Book Gateway. 

 ## Use case 

 Most modern (business) voice phones have the capability to do comfortable LDAP directory look-up like: 

   - Directory search by alphabet letters 
   - Reverse lookup for inbound calls 
   - Reverse lookup by entering parts or the phone number 

 Unfortunately, most of the 'smaller' companies (i guess companies beyond 100 employee) don't have an 'enterprise' LDAP directory, much less than private persons. 

 Most of such companies do have something like a cloud address book, often based on WebDAV / CardDAV (i.e. Nextcloud, Ownlcoud, ...). 

 This is, where this Gateway might make your live easier (hopefully). 

 If this program get started on some kind of hardware (Windows, Mac, Linux, ???), it will do the following: 

 1.    Answer on LDAP requests from your voice phone(s) 
 2.    Ask your CardDAV (Nextcloud, Owncloud, ...) Server for the LDAP requested phone book entry 
 3.    Return the CardDAV query results, back as LDAP results to your phone. 

 ## Features 

   - Query your CardDAV address book(s) by entering the alphabetic letters (or parts of the telephone number) in your (LDAP capable) phone (and dial one of the matching numbers). 
   - Reverse lookup inbound calls and display matching contact informations on the phone. 
   - Work with human formatted (non- E.164) CardDAV entered phone numbers like: '040-123456' or '001 807 1234567' as well as '+49 (0)40 1234567-8'. 
   - Reverse lookup of phone numbers, depend on a tiny caching layer and thus a (configurable) sync interval. 

 ## Usage 

 You need some kind of 24/7 machine where this gateway live. Windows, Linux, Mac, (ARMx might come later). 

 In this current 'early' or 'beta' version, it runs in foreground. So, if you require to log off out of your machine, run it i.e. via 'screen'. 

 No installation required. Only a simple executable. Place it wherever your like. But I advice to start it as normal (non-root, non-administrative) user. 

 It will look for a configuration file in the following places (in the given order): 

 1.    ./.l2cpbgrc (or in it's parents) 
 2.    $HOME/.l2cpbgrc 
 3.    $HOME/.config/l2cpbg 
 4.    /etc/l2cpbgrc 
 5.    and some more uncommon places 

 ## Config file syntax 

 The config file syntax is 'ini' based. Following a quick sample: 

 ``` ini 
 ; Comments get started with a semicolon 
 ; 
 ; The Gateway will act/listen as LDAP Server with the following settings 
 [ldap] 
   host        = 0.0.0.0 
   ;port        = 1389 
   base        = dc=example, dc=com 

 [ldap.bind] 
   dn     = cn=pbx 
   pass = your-password 

 [dav] 
   server         = https://cloudserver.example.com/remote.php/dav 
   user           = cloud-login-name 
   pass           = cloud-login-password 
   ;addressbooks = regular-expression-of-lookup-adressbook 
   syncinterval = 5        ; Minutes 

 ;[dav.map] 
 ;    tel = TEL 
 ;    fn    = FN 

 [location] 
   int             = 1 
   area            = 807 
   maxarealength = 7 
   language        = en 

 [log] 
   conslevel      = verbose     ; Console log level. Might be one of silly, debug, verbose, info, warn or error 
   ;filename       = ./l2cpbg.log 
   ;filelevel      = info        ; File log level. Might be one of silly, debug, verbose, info, warn or error 
 ``` 

 ### Config file description 

 #### \[ldap\] part 

 `host` : Which IP to listen for LDAP requests. Defaults to '127.0.0.1' (=localhost). '0.0.0.0' means: 'Listen on all interfaces'. You've to point your LDAP phone settings to this machines IP.   
 `port` : Port to listen for LDAP requests. Defaults to port 1389. You normally don't need to change this.   
 `base` : This LDAP's 'base DN'. Choose whatever you want, but use the same settings within your phone's LDAP settings. Defaults to 'dc=example, dc=com'. 

 #### \[ldap.bind\] part 

 `dn` : Distinguish name. Name, how the phone has to log into/authorize to the gateway.   
 `pass` : Related 'dn' password, a phone has to use when logging in/authorize to the gateway. 

 #### \[dav\] part 

 `server` : Your WebDAV/CardDAV server address/URL. Please see 'Limitations'!   
 `user` : WebDav username with read access to the relevant addressbook which shall be requested for phone book lookups. Might also be a 'shared' address book.   
 `pass` : Related user password.   
 `addressbooks` : Optional regular expression of matchable addressbook(s) used for phone book lookups. If unsure, enter something. l2cpbg will log all found address books of the logged in user during startup and log them as 'Non-matching' or 'Matching' address book. 

 #### \[dav.map\] part 

 `tel` : CardDAV attribute which contain the phone numbers. Normally (and by default) 'TEL'.   
 `fn` : CardDAV's 'Full Name' attribute. Normally (and default) 'FN'. 

 #### \[location\] part 

 `int` : International area code (1 = North America, ..., 44 = United Kingdom, 49 = Germany, ...) of your location.   
 `area` : Local area code without leading 0 (20 = London (UK), 40 = Hamburg (DE), ...).   
 `maxarealength` : Longest possible length of a telephone number within your local area. If a found or received number is shorter or equal, it's identified as a number without local area prefix.   
 `country` : Two-letter [ISO 3166-1 alpha-2](https://wikipedia.org/wiki/ISO_3166-1\_alpha-2) country code (i.e. US, GB, DE, ...). 

 #### \[log\] part 

 `conslevel` : Console log level. Might be one of silly, debug, verbose, info, warn or error. Defaults to verbose.   
 `filename` : Log messages to this file. Might contain '%DATE%' with will be replaced by YYYYMMDD. Defaults to empty = no log file.   
 `filelevel` : File log level. Might be one of silly, debug, verbose, info, warn or error. Defaults to info 

 The log levels are organized as follows: 

 `silly` : This is the most verbose log level. It logs simply everything. Never use it in production environment as it might produce an awful amount of log entries!   
 `debug` : Logs a lot internal stuff, probably interesting when searching a solution for an issue. Should not be used in production environment as it produce also a lot log entries!   
 `verbose` : Logs everything which might be interesting during use. Not only results, also when something get started, detailed results and such things.   
 `info` : This is the most usual log level. Logs only stuff which is relevant.   
 `warn` : Logs stuff which doesn't behave as expected. Not critical (generic functionality should be okay) but should be noticed/checked.   
 `error` : Something essential/critical happened. Functionality is limited or aborted at all. 

 ## Phone configuration 

 Here's a sample of a Yealink SIP-T52S configuration:   
 ![Yealink SIP-T52S settings sample](https://projects.shbe.net/attachments/download/8/config_yealink-t52s_fw7084_v060_en.jpg sample](https://projects.shbe.net/attachments/download/3/config_yealink-t52s_fw7084_v060_en.jpg "Yealink SIP-T52S settings sample")   
 Take attention that <span style="color: #d97a3a;">Server Address</span> point to the machine where this gateway lives, as well as <span style="color: #d97a3a;">Port</span>, <span style="color: #d97a3a;">Base</span>, <span style="color: #d97a3a;">User Name</span> and <span style="color: #d97a3a;">Password</span> get filled with the same values as defined in your L2CPG config file. 

 ## Compatibility 

 This early version is currently only tested (working) with: 

   - CardDAV Server: 
       - [Nextcloud](https://nextcloud.com/) version 13.0.8 
   - Phone Extensions: 
       - [Yealink](https://www.yealink.com/) SIP-T52S, SIP-T54S, SIP-T54W 
   - Gateway Host OS: 
       - [Debian](https://www.debian.org/) Stretch 9.x 

 ## Limitations and Known Issues 

 There are already some known issues!!! Not sure which will get fixed, might depend on how much people are interested in. 

   - The LDAP Server doesn't support LDAPS (encrypted LDAP communication) at the moment. Therefore <span style="color: #f00;">it should not be used in an untrusted nextwork!</span> 
   - The CardDAV Server [HTTP-Authentication](https://de.wikipedia.org/wiki/HTTP-Authentifizierung) is currently restricted to 'Basic Authentication'. No 'Digest Access Authentication' like required i.e. for [Daylite](https://www.marketcircle.com). 
   - 'Basic Authentication' over 'HTTPS' will work (for sure), but without detailed certificate checking. 

 ## To-Do 

 I already have a couple of To-Do's on my list. Following a (priority ordered) list. Feel free to drop me your wishes [[#support]]. 

 1.    Daemonize (run in background/as service) 
 2.    Would be cool to enter the CardDAV relevant settings directly within the phone's LDAP settings! Possible? 

 ## Support & getting help 

 For getting help or discussing l2cpbg, please browse the [L2CPBG Forum](https://projects.shbe.net/projects/l2cpbg/boards) or check/open the [Tickets](https://projects.shbe.net/projects/l2cpbg/issues) area. 
Go to top