# 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 Automatically create a cron job in the user's crontab that synchronizes the groups every 10 minutes: ```bash adgroupsync --conf /path/to/adgroupsync_config.toml --create-cron '*/10 * * * *' ```