<commit_before># ocupado
Plug-in based tool which checks a user data source against an authoritative source and alerts on any anomalies.

[![Build Status](https://api.travis-ci.org/ashcrow/ocupado.png)](https://travis-ci.org/ashcrow/ocupado/)

## Example Usage
```
$ ocupado -V conf/test.ini
- Plugins loaded: ['ocupado.plugin.test:Test']
- Plugins initialized: ['ocupado.plugin.test:Test']
- Getting users for plugin ocupado.plugin.test:Test
- Could not find user example in the authoritative plugin
- Notifying via ocupado.output.test:Test for: ['example']
$
```

## Available Plugins
* [LDAP](https://github.com/ashcrow/ocupado_plugin_ldap)
* [GoogleGroups](https://github.com/ashcrow/ocupado_plugin_google_groups)

## Available Outputs
* SMTP (built in)

## Configuration
While the configuration system has been built to allow for future extending a simple INI style
configuration is shipped and shown in examples.

### INI Sections
There are three required sections: plugin, output, and authoritative. Each uses the same
format and expects a list of ```module = class``` like so:

```ini
[plugin]
my.plugin.module = PluginClass
another.plugin.module = AnotherClass
```

Each ```module = class``` is configured with it's *own section* using the the module as the
section name. This section takes ```key = value``` pairs which will be passed to a plugin's
```__init__```. For instance, to configure ```my.plugin.module = PluginClass``` above:

```ini
[my.plugin.module]
username = user
domain = example.org
# ...
```
<commit_msg>doc: Added GoogleGroupsFree link in README.md.<commit_after># ocupado
Plug-in based tool which checks a user data source against an authoritative source and alerts on any anomalies.

[![Build Status](https://api.travis-ci.org/ashcrow/ocupado.png)](https://travis-ci.org/ashcrow/ocupado/)

## Example Usage
```
$ ocupado -V conf/test.ini
- Plugins loaded: ['ocupado.plugin.test:Test']
- Plugins initialized: ['ocupado.plugin.test:Test']
- Getting users for plugin ocupado.plugin.test:Test
- Could not find user example in the authoritative plugin
- Notifying via ocupado.output.test:Test for: ['example']
$
```

## Available Plugins
* [LDAP](https://github.com/ashcrow/ocupado_plugin_ldap)
* [GoogleGroups](https://github.com/ashcrow/ocupado_plugin_google_groups)
* [GoogleGroupsFree](https://github.com/ashcrow/ocupado_plugin_google_groups_free)

## Available Outputs
* SMTP (built in)

## Configuration
While the configuration system has been built to allow for future extending a simple INI style
configuration is shipped and shown in examples.

### INI Sections
There are three required sections: plugin, output, and authoritative. Each uses the same
format and expects a list of ```module = class``` like so:

```ini
[plugin]
my.plugin.module = PluginClass
another.plugin.module = AnotherClass
```

Each ```module = class``` is configured with it's *own section* using the the module as the
section name. This section takes ```key = value``` pairs which will be passed to a plugin's
```__init__```. For instance, to configure ```my.plugin.module = PluginClass``` above:

```ini
[my.plugin.module]
username = user
domain = example.org
# ...
```

{'fraction_non_alphanumeric': 0.12515723270440252, 'fraction_numerical': 0.0, 'mean_word_length': 5.013232514177694, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 9, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1231484', 'n_tokens_mistral': 978, 'n_tokens_neox': 935, 'n_words': 326}