{"id":37211066,"url":"https://github.com/atc0005/brick","last_synced_at":"2026-01-15T00:02:25.130Z","repository":{"id":38206295,"uuid":"236002190","full_name":"atc0005/brick","owner":"atc0005","description":"Automatically disable EZproxy user accounts via incoming webhook requests.","archived":true,"fork":false,"pushed_at":"2024-02-15T12:03:42.000Z","size":6575,"stargazers_count":5,"open_issues_count":31,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-06-19T16:45:58.456Z","etag":null,"topics":["disable","email","ezproxy","fail2ban","golang","microsoft-teams","sessions","terminate","webhook"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/atc0005.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-01-24T12:51:13.000Z","updated_at":"2024-02-15T12:14:17.000Z","dependencies_parsed_at":"2024-06-19T16:22:29.004Z","dependency_job_id":"2913b6ed-8a6b-4e28-9a43-31bf8d43a8bf","html_url":"https://github.com/atc0005/brick","commit_stats":null,"previous_names":[],"tags_count":45,"template":false,"template_full_name":null,"purl":"pkg:github/atc0005/brick","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atc0005%2Fbrick","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atc0005%2Fbrick/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atc0005%2Fbrick/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atc0005%2Fbrick/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/atc0005","download_url":"https://codeload.github.com/atc0005/brick/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atc0005%2Fbrick/sbom","scorecard":{"id":214272,"data":{"date":"2025-08-11","repo":{"name":"github.com/atc0005/brick","commit":"bae5cd8640f6a689be1f96bbf3f779883892252c"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.4,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/3 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"project is archived","details":["Warn: Repository is archived."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: jobLevel 'contents' permission set to 'write': .github/workflows/release-build.yml:18","Warn: no topLevel permission defined: .github/workflows/lint-and-build.yml:1","Warn: no topLevel permission defined: .github/workflows/project-analysis.yml:1","Warn: no topLevel permission defined: .github/workflows/release-build.yml:1","Warn: no topLevel permission defined: .github/workflows/scheduled-monthly.yml:1","Warn: no topLevel permission defined: .github/workflows/scheduled-weekly.yml:1"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: third-party GitHubAction not pinned by hash: .github/workflows/lint-and-build.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/atc0005/brick/lint-and-build.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/lint-and-build.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/atc0005/brick/lint-and-build.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/project-analysis.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/atc0005/brick/project-analysis.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/project-analysis.yml:49: update your workflow using https://app.stepsecurity.io/secureworkflow/atc0005/brick/project-analysis.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/project-analysis.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/atc0005/brick/project-analysis.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/project-analysis.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/atc0005/brick/project-analysis.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release-build.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/atc0005/brick/release-build.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/scheduled-monthly.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/atc0005/brick/scheduled-monthly.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/scheduled-weekly.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/atc0005/brick/scheduled-weekly.yml/master?enable=pin","Warn: containerImage not pinned by hash: dependabot/docker/builds/Dockerfile:25: pin your Docker image by updating ghcr.io/atc0005/go-ci:go-ci-oldstable-build-v0.15.0 to ghcr.io/atc0005/go-ci:go-ci-oldstable-build-v0.15.0@sha256:d392f60baad3513e486597dbdf3c7ff36c523e5986ea8648df8d25c0cab63b88","Warn: containerImage not pinned by hash: dependabot/docker/go/Dockerfile:26: pin your Docker image by updating golang:1.20.14 to golang:1.20.14@sha256:8f9af7094d0cb27cc783c697ac5ba25efdc4da35f8526db21f7aebb0b0b4f18a","Info:   0 out of   9 third-party GitHubAction dependencies pinned","Info:   0 out of   2 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.5.5 not signed: https://api.github.com/repos/atc0005/brick/releases/142141900","Warn: release artifact v0.5.5-rc.1 not signed: https://api.github.com/repos/atc0005/brick/releases/141980175","Warn: release artifact v0.5.5-alpha.2 not signed: https://api.github.com/repos/atc0005/brick/releases/141979910","Warn: release artifact v0.5.5-alpha.1 not signed: https://api.github.com/repos/atc0005/brick/releases/140877376","Warn: release artifact v0.5.4 not signed: https://api.github.com/repos/atc0005/brick/releases/137713333","Warn: release artifact v0.5.5 does not have provenance: https://api.github.com/repos/atc0005/brick/releases/142141900","Warn: release artifact v0.5.5-rc.1 does not have provenance: https://api.github.com/repos/atc0005/brick/releases/141980175","Warn: release artifact v0.5.5-alpha.2 does not have provenance: https://api.github.com/repos/atc0005/brick/releases/141979910","Warn: release artifact v0.5.5-alpha.1 does not have provenance: https://api.github.com/repos/atc0005/brick/releases/140877376","Warn: release artifact v0.5.4 does not have provenance: https://api.github.com/repos/atc0005/brick/releases/137713333"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-17T01:22:27.855Z","repository_id":38206295,"created_at":"2025-08-17T01:22:27.855Z","updated_at":"2025-08-17T01:22:27.855Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28439606,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T22:37:52.437Z","status":"ssl_error","status_checked_at":"2026-01-14T22:37:31.496Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["disable","email","ezproxy","fail2ban","golang","microsoft-teams","sessions","terminate","webhook"],"created_at":"2026-01-15T00:02:25.055Z","updated_at":"2026-01-15T00:02:25.115Z","avatar_url":"https://github.com/atc0005.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- omit in toc --\u003e\n# brick\n\n![brick project logo][brick-logo]\n\nAutomatically disable [EZproxy](docs/ezproxy.md) user accounts via incoming\nwebhook requests.\n\n[![Latest Release](https://img.shields.io/github/release/atc0005/brick.svg?style=flat-square)](https://github.com/atc0005/brick/releases/latest)\n[![Go Reference](https://pkg.go.dev/badge/github.com/atc0005/brick.svg)](https://pkg.go.dev/github.com/atc0005/brick)\n[![go.mod Go version](https://img.shields.io/github/go-mod/go-version/atc0005/brick)](https://github.com/atc0005/brick)\n[![Lint and Build](https://github.com/atc0005/brick/actions/workflows/lint-and-build.yml/badge.svg)](https://github.com/atc0005/brick/actions/workflows/lint-and-build.yml)\n[![Project Analysis](https://github.com/atc0005/brick/actions/workflows/project-analysis.yml/badge.svg)](https://github.com/atc0005/brick/actions/workflows/project-analysis.yml)\n\n\u003c!-- omit in toc --\u003e\n## Table of contents\n\n- [Project home](#project-home)\n- [Status](#status)\n- [Overview](#overview)\n  - [EZproxy's purpose](#ezproxys-purpose)\n  - [brick's purpose](#bricks-purpose)\n  - [brick in action](#brick-in-action)\n  - [The end result](#the-end-result)\n- [Features](#features)\n  - [Current](#current)\n  - [Missing](#missing)\n  - [Future](#future)\n- [Changelog](#changelog)\n- [Documentation](#documentation)\n  - [TL;DR](#tldr)\n  - [Hands-on / demo](#hands-on--demo)\n  - [Index](#index)\n- [License](#license)\n- [References](#references)\n\n## Project home\n\nSee [our GitHub repo][repo-url] for the latest code, to file an issue or\nsubmit improvements for review and potential inclusion into the project.\n\n## Status\n\nAlpha quality; most\n[MVP](https://en.wikipedia.org/wiki/Minimum_viable_product) functionality is\npresent, but a number of improvements to make this tool useful to a broad\naudience are still missing.\n\n## Overview\n\n### EZproxy's purpose\n\nPer the [EZproxy Wikipedia page](https://en.wikipedia.org/wiki/EZproxy):\n\n\u003e EZproxy is a web proxy server used by libraries to give access from outside\nthe library's computer network to restricted-access websites that authenticate\nusers by IP address. This allows library patrons at home or elsewhere to log\nin through their library's EZproxy server and gain access to resources to\nwhich their library subscribes, such as bibliographic databases.\n\n### brick's purpose\n\n`brick` is an application that is intended to run alongside an existing\n[EZproxy](docs/ezproxy.md) instance and a Splunk monitoring system in order to\ndisable (suspected) compromised user accounts.\n\n### brick in action\n\nWhen Splunk, identifies suspect account behavior (based on sysadmin-specified\nthresholds), it delivers a webhook payload to a HTTP endpoint on `brick` for\nprocessing. `brick` then disables the suspect user account and (optionally)\ngenerates one or more notifications listing the action(s) taken. All actions\nare logged.\n\nAt this point, the associated user sessions can be optionally (and\nautomatically) terminated using two approaches:\n\n1. using (not officially documented) `ezproxy` binary subcommand\n1. using the provided fail2ban config files\n\nIf using native termination support, all active user sessions associated with\nthe reported username will be terminated using the kill subcommand provided by\nthe official `ezproxy` binary. The sysadmin will need to provide the path to\nthe `ezproxy` binary and the associated Active Users and Hosts \"state\" file\nwhere sessions are tracked.\n\nIf installed and configured appropriately, fail2ban can be used to to monitor\nthe reported users log file and ban the associated IP address. This ban should\nbe for `MaxLifetime` minutes ([EZproxy](docs/ezproxy.md) setting) + a small\nbuffer to force active sessions associated with the disabled user account to\ntimeout and terminate.\n\n### The end result\n\nThe net effect is that reported user accounts are immediately disabled and\ncompromised accounts can no longer be used with [EZproxy](docs/ezproxy.md)\nuntil manually removed from the disabled users file.\n\n**NOTE:** `brick` has not been designed to identify user accounts directly.\nInstead, this application but rather relies on other systems (currently\nlimited to Splunk) to make the decision as to which accounts should be\ndisabled.\n\nThe hope is to extend payload format support to include Graylog and other\npopular log monitoring systems in the future.\n\nSee also:\n\n- [High-level overview](docs/start-here.md)\n- our other [documentation](#documentation) for further instructions\n\n## Features\n\n### Current\n\n- Highly configurable (with more configuration choices to be exposed in the future)\n\n- Optional automatic (but not officially documented) termination of user\n  sessions via official `ezproxy` binary\n\n- Optional filtering of JSON payload sender IP Addresses\n  - default setting is to accept payloads from any IP Address, relying on\n    host-level firewall rules to prevent receipt from rouge systems\n  - if a list of trusted IP Addresses is provided, those IP Addresses will be\n    the only ones allowed to submit JSON payloads\n\n- `es` CLI application\n  - small CLI app to list and optionally terminate user sessions for a\n    specific username\n  - intended for quick troubleshooting or as an optional replacement for\n    logging into the admin UI to terminate user sessions for a specific\n    username\n\n- Supports configuration settings from multiple sources\n  - command-line flags\n  - environment variables\n  - configuration file\n  - reasonable default settings\n\n- Ignore individual usernames (i.e., prevent disabling listed accounts)\n- Ignore individual IP Addresses (i.e., prevent disabling associated account)\n\n- User configurable logging settings\n  - levels, format and output (see [configuration settings\n    doc](docs/configure.md))\n\n- Optional notifications\n  - Microsoft Teams\n  - Email\n  - generated for multiple events\n    - alert received\n    - disabled user\n    - ignored user\n    - ignored IP Address\n    - error occurred\n  - configurable retries and delay between retries\n  - configurable notifications rate limit (used to respect remote API limits)\n\n- Logging\n  - Payload receipt from monitoring system\n    - logging of rejected payloads\n    - logging of accepted payloads\n  - Action taken due to payload\n    - username ignored\n      - due to username inclusion in ignore file for usernames\n      - due to IP Address inclusion in ignore file for IP Addresses\n    - username disabled\n\n- `contrib` files/content\n  - intended solely for demo purposes\n    - `postfix`\n    - `docker`\n      - `Maildev` container\n    - sample JSON payloads for use with `curl` or other http/API clients\n    - [demo environment](docs/demo.md) doc\n    - slides from group presentation/demo\n    - shell scripts to setup test/demo environment\n  - intended for demo *and* as a template for production use\n    - `fail2ban`\n    - `brick`\n    - `rsyslog`\n    - `systemd`\n\nThe `contrib` content is provided both to allow for spinning up a [demo\nenvironment](docs/demo.md) in order to provide a hands-on sense of what this\nproject can do and (at least some of the files) to use as a template for a\nproduction installation (e.g., the `fail2ban` config files). At some point we\nhope to provide one or more Ansible playbooks (GH-29) to replace the shell\nscripts currently used by this project for setting up a test/demo environment.\n\n### Missing\n\nKnown issues:\n\n- Documentation\n  - The docs are beginning to take overall shape, but still need a lot of work\n\n### Future\n\n| Priority | Milestone                                                                                  | Description                                                                                                                                            |\n| -------- | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| Low      | [Unplanned](https://github.com/atc0005/brick/milestone/5)                                  | Potential merit, but are either low demand or are more complex to implement than other issues under consideration.                                     |\n| Medium   | [Future](https://github.com/atc0005/brick/milestone/3)                                     | Considered to have merit and sufficiently low complexity to fit within a near-future milestone.                                                        |\n| High     | [vX.Y.Z](https://github.com/atc0005/brick/milestones?direction=desc\u0026sort=title\u0026state=open) | Milestones with a [semantic versioning](https://semver.org/) pattern reflect collections of issues that are in a planning or active development state. |\n\n## Changelog\n\nSee the [`CHANGELOG.md`](CHANGELOG.md) file for the changes associated with\neach release of this application. Changes that have been merged to `master`,\nbut not yet in an official release may also be noted in the file under the\n`Unreleased` section. A helpful link to the Git commit history since the last\nofficial release is also provided for further review.\n\n## Documentation\n\n### TL;DR\n\n1. Install dependencies, including `fail2ban`\n1. Setup environment\n   1. create new service account/group\n   1. create log directory\n   1. create cache directory for disabled users file\n   1. set ownership, permissions\n   1. customize config files\n      - `brick`\n      - `fail2ban`\n      - ...\n   1. deploy config files (including systemd unit file, logrotate conf, ...)\n1. Build `brick`\n1. Deploy `brick`\n1. Configure [EZproxy](docs/ezproxy.md) to use new disabled users file\n1. Configure Splunk alerts\n1. Test!\n\n### Hands-on / demo\n\nThese resources were used to provide a demo to our team prior to gather\nfeedback, well before deployment plans were locked-in. The notes are detailed\n(perhaps overly so) and were used as a reference before/during the team demo.\n\nThe PowerPoint is much like it sounds and the demo scripts are used to\n(reasonably) quickly prepare a local \"throwaway\" VM for the demo. Reviewing\nthis material may help you decide if this project is a good fit for use at\nyour institution.\n\n- [demo notes](docs/demo.md) (verbose)\n- [demo scripts](contrib/demo/README.md)\n- Slides used in live demo\n  - [PowerPoint file](contrib/demo/ppt/brick-demo.pptx)\n  - [PDF file](contrib/demo/ppt/brick-demo.pdf)\n\n### Index\n\n| Order | Name                             | Description                                                                                               |\n| ----- | -------------------------------- | --------------------------------------------------------------------------------------------------------- |\n| 1     | [Why?](docs/start-here.md)       | High-level overview of application design and purpose                                                     |\n| *2*   | [Demo](docs/demo.md)             | Presentation material for a local demo that I will provide to showcase existing and future functionality. |\n| 2     | [Build](docs/build.md)           | Building/compiling `brick`                                                                                |\n| 3     | [Deploy](docs/deploy.md)         | Deploying `brick`                                                                                         |\n| 4     | [Configure](docs/configure.md)   | Settings supported by `brick`                                                                             |\n| 5     | [Fail2Ban](docs/fail2ban.md)     | Brief coverage on integrating with Fail2Ban (to monitor and take action on events recorded by `brick`)    |\n| 6     | [EZproxy](docs/ezproxy.md)       | Brief coverage on integrating with EZproxy (suggested settings, using files generated by `brick`)         |\n| 7     | [Rsyslog](docs/rsyslog.md)       | Brief coverage on adding a Rsyslog action to route messages from `brick`                                  |\n| 8     | [Endpoints](docs/endpoints.md)   | Current endpoints offered by `brick`                                                                      |\n| 9     | [Splunk](docs/splunk.md)         | Brief coverage on configuring an alert to send to `brick` (NOTE: *highly* environment specific)           |\n| 10    | [References](docs/references.md) | Various reference material used while developing `brick`                                                  |\n\n## License\n\nTaken directly from the [`LICENSE`](LICENSE) and [`NOTICE.txt`](NOTICE.txt) files:\n\n```License\nCopyright 2020-Present Adam Chalkley\n\nhttps://github.com/atc0005/brick/blob/master/LICENSE\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed\nunder the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\nCONDITIONS OF ANY KIND, either express or implied. See the License for the\nspecific language governing permissions and limitations under the License.\n```\n\n## References\n\nVarious references used when developing this project can be found in our\n[references](docs/references.md) doc.\n\n\u003c!-- Footnotes here  --\u003e\n\n[repo-url]: \u003chttps://github.com/atc0005/brick\u003e  \"This project's GitHub repo\"\n\n[brick-logo]: media/brick-logo-rounded.png \"brick project logo\"\n\n\u003c!-- []: PLACEHOLDER \"DESCRIPTION_HERE\" --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatc0005%2Fbrick","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fatc0005%2Fbrick","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatc0005%2Fbrick/lists"}