Readme 095 » History » Version 5
Jörg Ebeling, 12/25/2022 08:51 PM
1 | 1 | Jörg Ebeling | # LDAP-2-CardDAV Phone Book Gateway (l2cpbg) |
---|---|---|---|
2 | |||
3 | An LDAP to CardDav (1 way read) Phone Book Gateway. |
||
4 | 4 | Jörg Ebeling | ![Functional L2CPBG Diagram](https://projects.shbe.net/attachments/download/163/L2CPBG%200.9.5%20Diagram.svg "Functional L2CPBG Diagram") |
5 | 1 | Jörg Ebeling | |
6 | ## Use case |
||
7 | |||
8 | Most modern (business) voice phones have the capability to do |
||
9 | comfortable LDAP directory look-up like: |
||
10 | |||
11 | - Directory search by alphabet letters |
||
12 | - Reverse lookup for in- or out-bound calls |
||
13 | - Reverse lookup by entering parts or the phone number |
||
14 | |||
15 | Unfortunately, most of the 'smaller' companies (i guess companies beyond |
||
16 | 100 employee) don't have an 'enterprise' LDAP directory, much less than |
||
17 | private persons. |
||
18 | |||
19 | Most of such companies do have something like a cloud address book, |
||
20 | often based on WebDAV / CardDAV (i.e. Nextcloud, Ownlcoud, Baïkal, |
||
21 | Daylite, Synology Contacts, ...). |
||
22 | |||
23 | This is, where this Gateway might make your live easier. |
||
24 | |||
25 | 5 | Jörg Ebeling | If this program (daemon/service) get started on some kind of hardware (Windows, macOS, Linux, Raspberry or the like), it will do the following: |
26 | 1 | Jörg Ebeling | |
27 | 3 | Jörg Ebeling | 1. Synchronize your CardDAV Server(s), to a small local database cache |
28 | 1 | Jörg Ebeling | 2. Wait and answer for LDAP requests from your voice/desktop phone(s) |
29 | |||
30 | ## Features |
||
31 | |||
32 | - Query the contacts of your CardDAV address book(s) by entering |
||
33 | the alphabetic letters (or parts of the telephone number) in your (LDAP capable) phone (and dial one of the matching numbers) |
||
34 | - Reverse lookup inbound calls and display matching contact |
||
35 | informations on the phone |
||
36 | - Work with local formatted (non- E.164) entered phone numbers |
||
37 | like: '040-123456' or '001 807 1234567' as well as '+49 (0)40 |
||
38 | 1234567-8', so that there's no need to format the phone numbers of your CardDAV contacts in a special notation |
||
39 | - Supports short internal extension phone numbers as well as Fritz!Box specific **\<extension> or *\<line> format |
||
40 | - Support dial prefix for external line |
||
41 | - Support selection of a specific addressbook per phone, via "ou=\<addressbook>, \<BaseDN>" |
||
42 | 5 | Jörg Ebeling | - Support the merge of multiple address books from a single or multiple CardDAV Server(s) into a specified LDAP address book |
43 | 1 | Jörg Ebeling | |
44 | ## Usage |
||
45 | |||
46 | You need some kind of 24/7 machine where this gateway live. Windows PC, |
||
47 | Linux, macOS, Raspberry or the like. |
||
48 | |||
49 | By default it will look for a configuration file in the following places (in the |
||
50 | given order): |
||
51 | |||
52 | 1. ./l2cpbg.conf |
||
53 | 2. /etc/l2cpbg.conf |
||
54 | 3. /usr/local/etc/l2cpbg.conf |
||
55 | 4. \<exec directory\>/l2cpbg.conf |
||
56 | |||
57 | It will write to a small local database directory (defaults to 'os.TempDir()/l2cpbg.db'). |
||
58 | |||
59 | At the moment there's no "Admin GUI". But for miminimal infos like "uptime", "license", "number of search requests", "number of sent result records", as well as immediate CardDAV-Server sync trigger, you might send the l2cpbg process a `SIGHUP` signal and check the logs afterwards. |
||
60 | |||
61 | You might be also interested in the output of `l2cpbg --help`. |
||
62 | |||
63 | 5 | Jörg Ebeling | ## License |
64 | 1 | Jörg Ebeling | |
65 | | Version | max. phones [^1] | Version blaming in Phone Display | max. LDAP requests/h | max. phonebook entries [^2] | Gold features [^3] | Price/€ [^4] | |
||
66 | |:----------|:---------:|:--:|:---------:|:---------:|:---:|-------:| |
||
67 | |Free | 2 | ✓ | 12 | 100 | ✗ | 0,00 | |
||
68 | |Max3 | 3 | ✗ | unlimited | 500 | ✗ | 29,00 | |
||
69 | |Max5 | 5 | ✗ | unlimited | 1000 | ✗ | 49,00 | |
||
70 | |Max10 | 10 | ✗ | unlimited | 2000 | ✗ | 79,00 | |
||
71 | |Pro10 | 10 | ✗ | unlimited | unlimited | ✓ | 149,00 | |
||
72 | |Pro50 | 50 | ✗ | unlimited | unlimited | ✓ | 299,00 | |
||
73 | |Enterprise | unlimited | ✗ | unlimited | unlimited | ✓ | 499,00 | |
||
74 | |||
75 | [^1]: Every device/phone which successful login to L2CPBG, lock a phone-slot (via IP) for 8 hours |
||
76 | |||
77 | [^2]: In real, the number of imported CardDAV contacts get limited |
||
78 | |||
79 | 5 | Jörg Ebeling | [^3]: Gold features are: Multi-instance capability, Multi-CardDAV Servers (or accounts), Multi-AddressBook-Merge |
80 | 1 | Jörg Ebeling | |
81 | [^4]: Inkl. German VAT |
||
82 | |||
83 | 5 | Jörg Ebeling | Before deciding to buy a license, please ensure that L2CPBG work as expected with all your phones and your CardDAV server. If you can't test it because of a free limitations, or any other reason, don't hesitate to ask for a 60 day evaluation license. Simply drop me a mail to projects@shbe.net with your real name. |
84 | 1 | Jörg Ebeling | |
85 | ## Installation |
||
86 | |||
87 | ### Linux Debian ".deb" packages |
||
88 | |||
89 | `dpkg -i l2cpbg_<version>_<architecture>.deb` to install the package. |
||
90 | |||
91 | - A sample configuration get places at `/etc/l2cpbg.conf`. |
||
92 | - Initial startup will fail due to wrong/missing settings in config section `[dav]`! |
||
93 | - Adapt at least `[ldap]`, `[ldap.bind]`, `[dav]` as well as `[location]` sections (in /etc/l2cpbg.conf) to your need. |
||
94 | - Once done, restart l2cpbg by `systemctrl restart l2cpbg` and check startup by `systemctrl status l2cpbg`. |
||
95 | - The full log can be read by `journalctl -u l2cpbg`. |
||
96 | - To watch the actual/live logging, use `journalctl -fu l2cpbg`. |
||
97 | |||
98 | If l2cpbg started up, adapt your phone(s) to point their "LDAP Directory" lookup requests to l2cpbg with the settings you defined in /etc/l2cpbg.conf. |
||
99 | |||
100 | ### Linux binary "tar.gz" packages ("systemd" Systems) |
||
101 | |||
102 | 1. Extract binary i.e. to /usr/local/bin: `sudo tar xvf l2cpbg_0.9.2_linux-amd64.tgz -C /usr/local/bin/ l2cpbg` |
||
103 | 2. Extract config file, i.e. to /etc: `sudo tar xvf l2cpbg_0.9.2_linux-amd64.tgz -C /etc/ l2cpbg.conf` |
||
104 | 3. Adapt config section `[ldap]`, `[ldap.bind]`, `[dav]` as well as `[location]` to your need. |
||
105 | 4. Do a first foreground start via `l2cpbg` and check terminal output for any issues. \<Ctrl-c\>, edit config and start `l2cpbg` till terminal output is okay. |
||
106 | 5. If terminal output is okay and everything work as expected. \<Ctrl-c\> to stop forground process. |
||
107 | 6. Install L2CPBG as service/daemon via `sudo l2cpbg --service=install`. You should see a single "... 'install' succeed" message. |
||
108 | 7. Now that L2CPBG got installed as a service/daemon you can use `sudo systemctrl start|stop|restart l2cpbg`. When booting next, L2CPBG should get started automatically and log output to systemd journal. |
||
109 | 8. The full log can be read by `journalctl -u l2cpbg`. |
||
110 | 9. To watch the actual/live logging, use `journalctl -fu l2cpbg`. |
||
111 | |||
112 | Adapt your phone(s) to point their "LDAP Directory" lookup requests to l2cpbg with the settings you defined in /etc/l2cpbg.conf. |
||
113 | |||
114 | Uninstalling the service/daemon is simply done by `sudo l2cpbg --service=uninstall` |
||
115 | |||
116 | ### Linux binary "tar.gz" packages ("SysV" Systems) |
||
117 | |||
118 | 1. Extract binary i.e. to /usr/local/bin: `sudo tar xvf l2cpbg_0.9.2_linux-amd64.tgz -C /usr/local/bin/ l2cpbg` |
||
119 | 2. Extract config file, i.e. to /etc: `sudo tar xvf l2cpbg_0.9.2_linux-amd64.tgz -C /etc/ l2cpbg.conf` |
||
120 | 3. Adapt config section `[ldap]`, `[ldap.bind]`, `[dav]` as well as `[location]` to your need. |
||
121 | 4. Do a first foreground start via `l2cpbg` and check terminal output for any issues. \<Ctrl-c\>, edit config and start `l2cpbg` till terminal output is okay. |
||
122 | 5. If terminal output is okay and everything work as expected. \<Ctrl-c\> to stop forground process. |
||
123 | 6. Install L2CPBG as service/daemon via `sudo l2cpbg --service=install`. You should see a single "... 'install' succeed" message. |
||
124 | 7. Now that L2CPBG got installed as a service/daemon you can use `sudo service l2cpbg start|stop|restart`. When booting next time, L2CPBG should get started automatically and log output get send to /var/log/l2cpbg.err|log. |
||
125 | |||
126 | Adapt your phone(s) to point their "LDAP Directory" lookup requests to l2cpbg with the settings you defined in /etc/l2cpbg.conf. |
||
127 | |||
128 | Uninstalling the service/daemon is simply done by `sudo l2cpbg --service=uninstall` |
||
129 | |||
130 | ### Important macOS upgrade info: |
||
131 | If you already have l2cpbg versiom 0.9.2 installed, you need to deactivate your old l2cpbg instance via `l2cpbg --service=stop` and `l2cpbg --service=uninstall`, **before** installing the new version. After installing the new version, activate it again (via `l2cpbg --service=install` and `l2cpbg --service=start`) |
||
132 | |||
133 | ### MacOS "pkg" package ("launchd" System) |
||
134 | |||
135 | The package (pkg) installer does the following: |
||
136 | |||
137 | - Extract the L2CPBG package to '/opt/l2cpbg'. |
||
138 | - Place a l2cpbg command symlink into '/usr/local/bin' (which is in PATH), so that you're able to call the gateway binary 'l2cpbg' independent of your working directory. |
||
139 | - A sample l2cpbg configuration file get places in `/usr/local/etc/l2cpbg.conf`. |
||
140 | |||
141 | After installation, initial startup would fail due to wrong/missing settings in config section `[dav]`! |
||
142 | |||
143 | 1. Edit config by opening '/usr/local/etc/l2cpbg.conf' i.e. with TextEdit `open -a TextEdit /usr/local/etc/l2cpbg.conf` |
||
144 | 2. Adapt at least `[ldap]`, `[ldap.bind]`, `[dav]` as well as your `[location]` sections to your need. When done, don't forget to save! |
||
145 | 3. Do a first foreground start via `l2cpbg` in Terminal, and check terminal output for any issues. \<Ctrl-c\> (abort l2cpbg), edit config and start `l2cpbg` again, till terminal output is okay. |
||
146 | 4. If terminal output is okay and everything work as expected. \<Ctrl-c\> (abort l2cpbg) to stop forground process. |
||
147 | 5. Install L2CPBG as service/daemon via `sudo l2cpbg --service=install`. You should see a single "... 'install' succeed" message. |
||
148 | 6. Now that L2CPBG got installed as a service/daemon you can use `sudo l2cpbg --service=start|stop|restart`. When booting next time, L2CPBG should get started automatically and log output is send to /usr/local/var/log/l2cpbg.log. |
||
149 | |||
150 | Adapt your phone(s) to point their "LDAP Directory" lookup requests to l2cpbg with the settings you defined in /usr/local/etc/l2cpbg.conf. |
||
151 | |||
152 | Uninstalling the service/daemon is simply done by `sudo l2cpbg --service=uninstall` |
||
153 | |||
154 | Uninstalling the whole package is done by `sudo /opt/l2cpbg/uninstall.sh` |
||
155 | |||
156 | ### Windows binary "zip" packages |
||
157 | |||
158 | 1. Extract content of zip package to your preferred location, i.e. `C:\Program Files\LDAP2CardDAV-Gateway`. Take attention that the 32-bit version should be installted (by convention) somewhere under `C:\Program Files (x86)`! |
||
159 | 2. Run "notepad" as Administrator, open `C:\Program Files\LDAP2CardDAV-Gateway\l2cpbg.conf` within Notepad, and adapt config section `[ldap]`, `[ldap.bind]`, `[dav]` as well as `[location]` to your need. When done, don't forget to save! |
||
160 | 3. Now it's time to try a first start of the Gateway. Run a "Command" shell as Administrator and change to the installation directory, i.e. `cd C:\Program Files\LDAP2CardDAV-Gateway`, start it in foreground by `l2cpbg.exe` and check terminal output for any issues. \<Ctrl-c\>, edit config and start `l2cpbg.exe` till terminal output is okay. |
||
161 | 5 | Jörg Ebeling | 4. If terminal output is okay and everything (your phones) work as expected. \<Ctrl-c\> to stop forground process. |
162 | 1 | Jörg Ebeling | 5. Install L2CPBG as service/daemon via `l2cpbg.exe --service=install`. You should see a single "... 'install' succeed" message. |
163 | 7. Now that L2CPBG got installed as a service you can use `l2cpbg.exe --service=start|stop|restart`. After 'start'ed as service, log entries can be viewed by Windows Event Viewer (eventvwr). When booting next time, L2CPBG should get started automatically. |
||
164 | |||
165 | Uninstalling the service/daemon is simply done by `l2cpbg.exe --service=uninstall` |
||
166 | |||
167 | ## Configfile syntax |
||
168 | |||
169 | Since version 0.9.0 the config file syntax has changed from 'ini' to 'toml'. Not a big deal, but you need to adapt some entries. Mainly strings have to be entered within quotes! |
||
170 | |||
171 | Following a quick minimal sample: |
||
172 | ``` |
||
173 | # Comments get started with a hash character |
||
174 | |||
175 | # |
||
176 | # The Gateway will act as LDAP Server, listening |
||
177 | # for requests from your phone(s). |
||
178 | # |
||
179 | [ldap] |
||
180 | host = "0.0.0.0" |
||
181 | #port = 1389 |
||
182 | base = "dc=example, dc=com" |
||
183 | |||
184 | [ldap.bind] |
||
185 | dn = "cn=pbx" |
||
186 | pass = "your-password" |
||
187 | |||
188 | # |
||
189 | # Your CardDAV server where this Gateway get the contacts from |
||
190 | # |
||
191 | [dav] |
||
192 | server = "https://cloudserver.example.com/remote.php/dav" |
||
193 | user = "cloud-login-name" |
||
194 | pass = "cloud-login-password" |
||
195 | #pass = "[AES256]encrypted-cloud-login-password" # Please see command line option '--encryptPassword' |
||
196 | |||
197 | [location] |
||
198 | int = 1 # Your international code. 1 = US, 49 = Germany, ... |
||
199 | area = 807 # Your local area code (without a leading 0) |
||
200 | maxarealength = 7 |
||
201 | country = "EN" |
||
202 | ``` |
||
203 | |||
204 | ### Config file description (by section) |
||
205 | |||
206 | #### \[ldap\] = LDAP Server settings |
||
207 | |||
208 | `host` : Which IP to listen for LDAP requests. Defaults to "0.0.0.0" = 'Listen on all interfaces'. You've to point your LDAP phone settings to this machines IP/hostname. |
||
209 | |||
210 | `port` : Which port to listen for LDAP requests. Defaults to port 1389. The standard LDAP port is 389, so you need to change your phone to the port you configure here. |
||
211 | |||
212 | `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'. |
||
213 | |||
214 | #### \[ldap.bind\] = LDAP bind/auth settings |
||
215 | |||
216 | `dn` : Distinguish name. Name, how the phone has to log into/authorize |
||
217 | to the gateway. |
||
218 | |||
219 | `pass` : Related 'dn' password, a phone has to use when logging in/authorize to the gateway. |
||
220 | |||
221 | 5 | Jörg Ebeling | #### \[dav\] or \[dav.xxx\]= WebDav/CardDav server settings |
222 | 1 | Jörg Ebeling | |
223 | `server` : Your WebDAV/CardDAV server address/URL. Please see 'Limitations'! |
||
224 | |||
225 | `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. |
||
226 | |||
227 | 5 | Jörg Ebeling | `pass` : Related user password. If you don't like to store your CardDAV-Server password in clear-text here, you've also the possibility to use the AES-256 encrypted variant of the password here. Please check l2cpbg's command line option `--encryptPassword` (see `l2cpbg --help`). If you already stored the encrypted password variant here, you can also check/validate it with command line option `--testDavPassword`. |
228 | 1 | Jörg Ebeling | |
229 | `addressbooks` : Optional regular expression string of matchable addressbook(s) |
||
230 | used for phone book lookups. If unsure, enter something. l2cpbg will log |
||
231 | all found address books of the logged in CardDav user during startup and |
||
232 | log them as 'Non-matching' or 'Matching' address book(s). |
||
233 | |||
234 | 5 | Jörg Ebeling | `mergeas` : Optional multi CardDAV/account feature. |
235 | Merge the configured CardDAV server section as ou=\<mergeas string\> LDAP organisation unit. With this config option you've the possibility to merge multiple CardDAV server or accounts either into a single 'merged' LDAP addressbook, or in separate ones. However you like. When importing them into separate ones, you've the possibility to choose them within you phone via the BaseDN option. |
||
236 | By this you've i.e. the possibility to import a company wide phonebook, as well as a (or multiple) private one(s). |
||
237 | |||
238 | 1 | Jörg Ebeling | `syncinterval` : Interval of CardDav sync checks. Given as string with suffix 'm' for minutes, or 'h' as hours. Has to be greater than "2m". |
239 | |||
240 | `chunksize` : If an address book get loaded the first time, it get loaded in "chunks of contacts" in this given size. You may increase this value for quicker initial load, but if your CardDAV server answer with an "507 Insufficient Storage" error or similar, you need to lower this value. Default to 200. This option was added in L2CPBG version 0.8.1. |
||
241 | |||
242 | `insecurecert` controls whether a client verifies the server's certificate |
||
243 | chain and host name. If insecurecert is true, crypto/tls accepts any |
||
244 | certificate presented by the server and any host name in that certificate. |
||
245 | In this mode, TLS is susceptible to machine-in-the-middle attacks unless |
||
246 | custom verification is used. This should be used only for testing or in |
||
247 | trusted environments. Defaults to *false*. This option was added in L2CPBG version 0.9.1. |
||
248 | |||
249 | 5 | Jörg Ebeling | <del>#### \[dav.map\] = CardDav mapping</del> |
250 | 1 | Jörg Ebeling | |
251 | 5 | Jörg Ebeling | <del>`tel` : CardDAV attribute which contain phone numbers. Normally (and |
252 | by default) 'TEL'. Don't change this, except your really know what you're doing.</del> |
||
253 | 1 | Jörg Ebeling | |
254 | #### \[location\] = Local area settings |
||
255 | |||
256 | `int` : International area code (1 = North America, ..., 44 = United |
||
257 | Kingdom, 49 = Germany, ...) of your location. |
||
258 | |||
259 | ~~`intPrefix` : Dial prefix for international calls. Mostly "00". Defaults to "00". |
||
260 | ATTENTION: Has to be entered as string like "00".~~ |
||
261 | |||
262 | `area` : Local area code without leading 0 (20 = London (UK), 40 = |
||
263 | Hamburg (DE), ...). |
||
264 | |||
265 | `areaPrefix` : Dial prefix for national calls. Mostly "0". Defaults to "0". |
||
266 | ATTENTION: Has to be entered as string like "0". |
||
267 | |||
268 | `maxarealength` : Longest possible length of a telephone number within |
||
269 | your local area. If a CardDAV or incoming number is shorter or equal, it's |
||
270 | identified as a number within your local area. |
||
271 | |||
272 | `country` : Two-letter [ISO 3166-1 alpha-2](https://wikipedia.org/wiki/ISO_3166-1_alpha-2) country code (i.e. US, GB, DE, ...). |
||
273 | |||
274 | `maxintlength` : Maximum length of internal phone numbers. These numbers |
||
275 | don't get harmonized or E.164 converted. |
||
276 | |||
277 | `prettifyNums` : By default phone numbers loaded from CardDAV get prettified in two ways: |
||
278 | At first, if a CardDAV number is stored in international format, but you live in the same country, the international part get removed. |
||
279 | At second, the number get formatted in (spaced or braced) number groups as it's common in your country. |
||
280 | You can disable this prettifying by setting the value to false. |
||
281 | |||
282 | `prettifyNoAreaInSameArea` : Strip local area code from destination number when located in same area. Boolean true|false, defaults to true. |
||
283 | |||
284 | `prettifyRemoveSpaces` : Boolean (true|false) which will remove all spaces from a prettified phone number. Defaults to false. |
||
285 | |||
286 | `extdialprefix` : Optional external dial prefix for getting an external line. Get prefixed before the phone number if outgoing number length \> `maxintlength` |
||
287 | |||
288 | #### [log] = Logging |
||
289 | |||
290 | `level` : Log level. Might be one of "trace", "debug", "info", "warn", "error" or "fatal". Defaults to "info". |
||
291 | |||
292 | The log levels are organized as follows: |
||
293 | |||
294 | `trace` : This is the most verbose log level. It logs simply everything. |
||
295 | Never use it in production environment as it might produce an awful amount of log entries! |
||
296 | When started as Windows-Service, 'trace' messages doesn't get send to windows event console. |
||
297 | |||
298 | `debug` : Logs a lot internal stuff, probably interesting when searching |
||
299 | a solution for an issue. Should not be used in production environment as |
||
300 | it produce also a lot log entries! |
||
301 | When started as Windows-Service, 'debug' messages doesn't get send to windows event console. |
||
302 | |||
303 | `info` : This is the most usual log level. Logs only stuff which is relevant. |
||
304 | |||
305 | `warn` : Logs stuff which doesn't behave as expected. Not critical (generic functionality should be okay) but should be noticed/checked. |
||
306 | |||
307 | `error` : Something essential/critical happened. Functionality is limited or aborted at all. |
||
308 | |||
309 | `fatal` : Game over. |
||
310 | |||
311 | #### [db] = Internal database |
||
312 | |||
313 | `directory` : An own directory where to store the internal database. Defaults to |
||
314 | 'os.TempDir()/l2cpbg.db' which is not very useful on Linux based systems as it normally get cleaned after each reboot. |
||
315 | |||
316 | Choose yourself where to store the database. |
||
317 | If you've a small CardDAV server with <= 200 contacts, let the DB in the default location. |
||
318 | An initial sync of 200 contacts (after a reboot) will be quickly done. |
||
319 | Not much storage space is needed. An CardDAV server with approx. 4 thousand contacts, take about 10 MByte storage. |
||
320 | |||
321 | ATTENTION: If you use one of the .deb packages, the binary get started as user=l2cpbg. |
||
322 | Thus, the given directory, manually need to made owned by l2cpbg via |
||
323 | `chown -R l2cpbg:l2cpbg /your/db/directory`! Otherwise the DB process will fail on missing read/write permissions! |
||
324 | |||
325 | #### [ldap.map...] = LDAP/CardDav mapping |
||
326 | |||
327 | Every LDAP attribute which is used within a phone(s) filter or response, need to have a corresponding CardDav mapping which get done as follows: |
||
328 | |||
329 | First you need to define a separate block for the LDAP attribute in the following syntax: `[ldap.map.<ldap attribute name (case sensitive)>]` |
||
330 | Within such a LDAP mapping block you have to define: |
||
331 | |||
332 | `dav` : Corresponding CardDav field/attribute name. |
||
333 | |||
334 | and optional define the following settings: |
||
335 | |||
336 | `itypes` : Regular expression (RE2 syntax) of including relevant CardDav types or *Apple addressbook label* (Apple Adressbook extension: X-ABLabel). |
||
337 | |||
338 | `etypes` : Regular expression (RE2 syntax) of **excluding** relevant CardDav types or *Apple addressbook label* (Apple Adressbook extension: X-ABLabel). |
||
339 | |||
340 | `index` : Zero based index in the case of a multi-value CardDav field. |
||
341 | |||
342 | For an overview of the predefined/default LDAP/CardDav mappings, take a |
||
343 | look into 'l2cpbg.sample.conf' file. |
||
344 | |||
345 | ## Phone configuration |
||
346 | |||
347 | ### Gigaset |
||
348 | |||
349 | Here's a configuration sample of a Gigaset N510 IP PRO: |
||
350 | ![Gigaset N510 IP PRO settings sample for L2CPBG 0.7.0](https://projects.shbe.net/attachments/download/19/config_gigaset-n510-ip-pro_v070_de.jpg "Gigaset N510 IP PRO settings sample for L2CPBG 0.7.0") |
||
351 | Take attention that 'Server Address' point to the machine where this gateway lives (as well as 'Serverport') |
||
352 | |||
353 | 'BaseDN', 'Common User Name' and 'Common Password' get filled with the same values as defined in your L2CPG config file. |
||
354 | |||
355 | 5 | Jörg Ebeling | ### Mitel (Aastra) |
356 | |||
357 | At first, you need to know that Mitel's LDAP implementation is a little bit different than the one from the other phones. |
||
358 | While the other phones always do a live request to the LDAP server when searching for a contact or phone number, |
||
359 | Mitel does 36 initial "give me all contacts" for "sn=0*, 1*, ..., a*, b*, ..., z*" once it boot, or during configured schedule (but not more often than once a day?!). |
||
360 | |||
361 | So, once Mitel loaded all contacts, it handles all searches internally. Also reverse-lookup searches for incoming calls get handled internally. |
||
362 | This in turn means, that most of L2CPBG's number prettyfying might disturb i.e. Mitels reverse lookup logic. |
||
363 | Because of this, you better should disable the relevant prettyfying via L2CPBG's config entries: |
||
364 | ```shell |
||
365 | [location] |
||
366 | prettifyNoAreaInSameArea = false |
||
367 | prettifyRemoveSpaces = true |
||
368 | ``` |
||
369 | This will result in more ugly phone numbers within the directory, but probably give better results for Mitel-internal reverse lookup searches. |
||
370 | |||
371 | Next: |
||
372 | |||
373 | Mitel's LDAP directory configuration can't be done within the Phone's or Web GUI. |
||
374 | Instead of, it need to be done within the provisioning file(s) startup.cfg, \<model\>.cfg and/or \<MAC\>.cfg (please check your Mitel documentation how to provision). |
||
375 | |||
376 | Following the required Mitel provisioning entries, based on L2CPBG's default config. |
||
377 | Don't forget to adapt if you changed these within your L2CPBG's config: |
||
378 | |||
379 | ```shell |
||
380 | # General LDAP Settings: |
||
381 | ldap enabled: 1 |
||
382 | ldap name: CardDAV |
||
383 | ldap server: cn=phone:your-password@<L2CPBG's IP>:1389 |
||
384 | ldap base dn: dc=example, dc=com |
||
385 | ldap search scope: subtree |
||
386 | |||
387 | # Reverse Lookup: |
||
388 | # For best results, use num of local phone number digit + number of area code digits, but not higher than 9 |
||
389 | # Example: |
||
390 | # You complete local phone number is: +49 8421 12345 |
||
391 | # Your local phone number is 5 nums long + area code length is 4 = 9 |
||
392 | directory digits match: 9 |
||
393 | |||
394 | # LDAP Attribute definitions |
||
395 | # (required because they seem to have no defaults) |
||
396 | ldap cn attribute: cn |
||
397 | ldap first name attribute list: givenName |
||
398 | ldap last name attribute list: sn |
||
399 | ldap company attribute list: company |
||
400 | ldap job title attribute list: title |
||
401 | ldap business street attribute list: street |
||
402 | ldap business city attribute list: l |
||
403 | ldap business state attribute list: st |
||
404 | ldap business postal code attribute list: postalCode |
||
405 | ldap business country attribute list: c |
||
406 | ldap home street attribute list: homeStreet |
||
407 | ldap home city attribute list: homeCity |
||
408 | ldap home state attribute list: homeState |
||
409 | ldap home postal code attribute list: homePostalCode |
||
410 | ldap home country attribute list: homeCountry |
||
411 | ldap business phone 1 attribute list: telephoneNumber |
||
412 | ldap home phone 1 attribute list: homePhone |
||
413 | ldap mobile phone attribute list: mobile |
||
414 | ldap business fax attribute list: facsimileTelephoneNumber |
||
415 | ldap email 1 attribute list: mail |
||
416 | ldap email 2 attribute list: homeMail |
||
417 | ``` |
||
418 | Reboot your phone and when it seem to be ready, wait further 2 to 3 minutes till it start to request all LDAP Addresses from L2CPBG's LDAP Server (see L2CPBG's log, journal or event messaages). |
||
419 | |||
420 | Go to the phone's web GUI and define a 'Directory' key (Left menue: Operation / Softkeys and XML) |
||
421 | |||
422 | 1 | Jörg Ebeling | ### Yealink |
423 | |||
424 | Another configuration sample of a Yealink SIP-T52S: |
||
425 | ![Yealink SIP-T52S settings sample for L2CPBG 0.7.0](https://projects.shbe.net/attachments/download/18/config_yealink-t52s_fw7084_v070_en.jpg "Yealink SIP-T52S settings sample for L2CPBG 0.7.0") |
||
426 | Take attention that 'Server Address' point to the machine where this gateway lives (as well as 'Port'). |
||
427 | |||
428 | 'Base', 'User Name' and 'Password' get filled with the same values as defined in your L2CPG config file. |
||
429 | |||
430 | ### Snom |
||
431 | |||
432 | The LDAP configuration of Snom phones look similar to the ones of |
||
433 | Gigaset or Yealink. |
||
434 | But a user reported that entering `(|(cn=*%*)(sn=*%*)(givenName=*%*)(company=*%*))` within 'LDAP name filter' did the trick for working name searches. |
||
435 | |||
436 | 5 | Jörg Ebeling | ## Special / Gold features |
437 | 1 | Jörg Ebeling | |
438 | ### Multi-Instances (Pro or Evaluation license required) |
||
439 | |||
440 | There might be special configuration requirements like different CardDAV Server/Phonebook combinations/permissions, or multi-locations requirements which can't yet configured in L2CPBG. |
||
441 | |||
442 | For such special cases, you might start multiple L2CPBG instances. Each with his own configuration or even with the more comfortable merge/overlay configuration loading. |
||
443 | |||
444 | Imagine: You already have a standard instance running, like described within the [Installation](https://projects.shbe.net/projects/l2cpbg/wiki/Readme_093#Installation) section. But now you've a special requirement like a office branch (which has access through your office VPN to your L2CPBG server) for which you need other [location] settings. |
||
445 | |||
446 | `--instance-suffix` functionality might solve this for you! |
||
447 | |||
448 | Do the following to configure and install a new instance: |
||
449 | |||
450 | 1. We need to give the new instance some kind of meaningfull name. In the following we decide for 'foo' |
||
451 | 2. Copy your l2cpbg.conf file (as described in [Installation](https://projects.shbe.net/projects/l2cpbg/wiki/Readme_093#Installation)) to l2cpbg-foo.conf, and open it in notepad (or whichever editor your prefer |
||
452 | 3. Change the [ldap] port to a free port. I.e. from 1389 to 1390 |
||
453 | 4. If you have configured a [db] directory, give the new instance a separate (and exclusive) db directoy. If you don't have a configured [db] directory entry, you can leave it as it is. By default the db get stored at OS.Tempdir()/l2cpbg-\<instance-suffix\>.db |
||
454 | 5. Change the configuration stuff why you where interested in a separate instance. |
||
455 | 6. Test your new configuration in foreground (the same way as you did during the normal instance installation see [Installation](https://projects.shbe.net/projects/l2cpbg/wiki/Readme_093#Installation), but with '--config' option pointing to your new instance configuration. |
||
456 | 7. Once the configuration is good, you can call `l2cpbg.exe --instance-suffix=foo --service=start|stop|restart` like during normal install (except the additional parameter --instance-suffix=foo) |
||
457 | |||
458 | When dealing with the configuration of multi-instances, you will heavily benefit from L2CPBG's possibility to do merge/overlay config loading, which is not more than loading each subsequent config on top of the previous one. |
||
459 | By this you'll have i.e. your main configuration in l2cpbg.conf whereas your l2cpbg-foo.conf contains only the two or three config changes you're interested in. Then, by adding `--config=<your config directory>/l2cpbg.conf,<your config directory>/l2cpbg-foo.conf` as l2cpbg command option, it's done. |
||
460 | |||
461 | ## Compatibility |
||
462 | |||
463 | L2CPBG was tested with: |
||
464 | |||
465 | - CardDAV Server: |
||
466 | - [Baïkal](https://sabre.io/baikal/) version 0.7.x |
||
467 | - [Daylite](https://www.marketcircle.com/) |
||
468 | - [Nextcloud](https://nextcloud.com/) version 13, 15, 16, 18, 20, 22 |
||
469 | - [Synology Contacts](https://www.synology.com/dsm/packages/Contacts) |
||
470 | - Desktop & Mobile Phones: |
||
471 | - [Gigaset](https://www.gigasetpro.com/) N510 IP PRO, N670 IP Pro |
||
472 | - [Grandstream](http://www.grandstream.com/) GXP2170 |
||
473 | 5 | Jörg Ebeling | - [Mitel](https://www.mitel.com/de-de/produkte/telefone-und-zubehoer/ip-telefone-und-peripherie/6900-ip-series) 6900 Series |
474 | 1 | Jörg Ebeling | - [Snom](https://www.snom.com/) 300, D315, D335 |
475 | - [Yealink](https://www.yealink.com/) SIP-T52S, SIP-T54S, SIP-T54W, SIP-T58 (Android) |
||
476 | - [Fanvil](https://fanvil.com/) X3U, X7C, X210 |
||
477 | - Gateway Host OS: |
||
478 | - [Debian](https://www.debian.org/) Stretch 9.x, Buster 10.x (running at amd64 as well as ARMv7), Bullseye 11.x |
||
479 | - [Gentoo](https://www.gentoo.org) amd64 |
||
480 | 5 | Jörg Ebeling | - [macOS](https://www.apple.com/macos/) ™ Sierra 10.12.6, Catalina 10.15.7, Big Sur 11.6<!--, Ventura 13.1 --> |
481 | 1 | Jörg Ebeling | - [Ubuntu](https://ubuntu.com/) 20.04 (Focal Fossa) |
482 | - [Windows](https://www.microsoft.com/windows) 10, Server 2016 |
||
483 | |||
484 | ## Limitations and Known Issues |
||
485 | |||
486 | - The internal LDAP Server doesn't support LDAPS (encrypted LDAP |
||
487 | communication) at the moment. Therefore |
||
488 | **it should not be used in an untrusted network!** |
||
489 | If you're interested to run it in an untrusted network, |
||
490 | please drop me a short note. |
||
491 | |||
492 | ## Support & getting help |
||
493 | |||
494 | For getting help or discussing l2cpbg, please browse the [L2CPBG |
||
495 | Forum](https://projects.shbe.net/projects/l2cpbg/boards) or check/open |
||
496 | the [Tickets](https://projects.shbe.net/projects/l2cpbg/issues) area. |