adGroupSync/README.md
Marc Koch 0d4d6d3f46
replace tomlib with tomlkit
tomlkit can read and write toml files
2025-03-21 13:24:28 +01:00

75 lines
2.2 KiB
Markdown

# adGroupSync
This program synchronizes Active Directory groups with CiviCRM groups.
It is designed to be run as a cron job.
## Installation via pipx
```bash
pipx install --include-deps --index-url https://git.propeace.de/api/packages/ProPeace/pypi/simple/ --pip-args='--extra-index-url https://pypi.org/simple/' adgroupsync
```
## Configuration
Create a new configuration file:
```bash
adgroupsync --create-config --conf /path/to/adgroupsync_config.toml
```
Edit the configuration file and set the following values:
### AD Configuration
- `AD.DOMAIN`: The domain of the Active Directory server.
- `AD.LDAP_SERVER`: List of LDAP servers to connect to.
- `AD.PARENT_GROUP`: The parent group in Active Directory that contains all
groups that should be synchronized.
- `AD.TIMEZONE`: The timezone of the Active Directory server.
- `AD.USER`: The username of the user to connect to the Active Directory server.
- `AD.PASSWORD`: The password of the user to connect to the Active Directory
server.
### Civicrm Configuration
- `CIVICRM.API_KEY`: The API key of the CiviCRM user.
- `CIVICRM.BASE_URL`: The URL of the CiviCRM server.
- `CIVICRM.BATCH_SIZE`: The batch size for the API requests to the CiviCRM
server (only applied to contact sync). _DEFAULT: 50_
- `CIVICRM.RETRIES`: The number of retries for the API requests to the CiviCRM
server. _DEFAULT: 3_
- `CIVICRM.IGNORE_SSL`: Allow insecure connections to the CiviCRM server.
_DEFAULT: False_
### Logging Configuration
- `LOGGING.STDOUT_LOG_LEVEL`: The log level for the stdout logger. _DEFAULT:
INFO_
- `LOGGING.FILE_LOG_LEVEL`: The log level for the file logger. _DEFAULT: INFO_
- `LOGGING.LOG_DIR`: The directory to store the log file. _DEFAULT:
`/var/log/adGroupSync/`
### NTFY (optional)
If you want to send notifications about failed syncs, you can
configure [ntfy](https://ntfy.sh/).
- `NTFY.URL`: The URL of the ntfy server.
- `NTFY.TOPIC`: The topic to post the message to.
- `NTFY.ACCESS_TOKEN`: The access token for the NTFY server.
## Usage
### Manual Sync
```bash
adgroupsync --conf /path/to/adgroupsync_config.toml
```
### Cron Job
Synchronize the groups every 10 minutes:
```bash
*/10 * * * * adgroupsync --conf /path/to/adgroupsync_config.toml > /dev/null 2>&1
```