You've already forked prometheus-fail2ban-exporter
							
							Compare commits
	
		
			110 Commits
		
	
	
		
			v0.1.0
			...
			cefce6dca7
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| cefce6dca7 | |||
| 425c5777c4 | |||
| 3f2d9103f3 | |||
| e312ba9d12 | |||
| 7a6c5e497b | |||
| 2a9a3a3eb1 | |||
| 211d8aec18 | |||
| be8df93ac9 | |||
| 766bec03de | |||
| 533c019b80 | |||
| 8a5ebcab7c | |||
| 7540303fa3 | |||
| 5388f53963 | |||
| 4d3847ca67 | |||
| be67170a6f | |||
| e4d457d73c | |||
| 3810acad34 | |||
| b8cb19ea7b | |||
| 9eed0fe492 | |||
| 76f5437ab3 | |||
| b291247c3f | |||
| e7d99c78d1 | |||
| ec377df034 | |||
| 43fbbc015e | |||
| 064cf42743 | |||
| 35155770c8 | |||
| e9c4f60cb5 | |||
| 5ae780517a | |||
| 451b3659a1 | |||
| 218c04b34b | |||
| 4a1297b9b8 | |||
| 9cf687c7e4 | |||
| ce09c1b5df | |||
| 5d52473015 | |||
| 8c8a721e39 | |||
| 005648f7d4 | |||
| 1766f00c01 | |||
| 97c2294035 | |||
| 026f8d2d18 | |||
| 3e966f5260 | |||
| 50e213e6e6 | |||
| c5678e572a | |||
| 9f28dacf85 | |||
| 01af95399d | |||
| d1bc3d6ae8 | |||
| 8834e8d7b8 | |||
| 4d47b0d1d0 | |||
| af099ca73a | |||
| 9727e49a3f | |||
| d330eb6f52 | |||
| e880ea9041 | |||
| 4773d68b06 | |||
| 4177d66ae6 | |||
| e6f4e1ea66 | |||
| 36c53a93b3 | |||
| 005927bbf7 | |||
| 78c4eb4123 | |||
| 9d63537a1f | |||
| 5153fce32a | |||
| 78d1498fe7 | |||
| 3faf6f0e73 | |||
| c73d3e7600 | |||
| b3d8632b72 | |||
| 2ff3ef5f22 | |||
| e6b727ac7e | |||
| 25b2e1fe7b | |||
| 667fecc556 | |||
| 9020506418 | |||
| 4b75d9769b | |||
| 531baeb282 | |||
| 6ef94c27de | |||
| c81fbacdae | |||
| f542535d6b | |||
| 3f79e2617e | |||
| 996c717eb8 | |||
| 5169a4aea3 | |||
| f7ca500dcd | |||
| 5adf9e2bab | |||
| c421c25769 | |||
| bf7d914c18 | |||
| 960bcdb812 | |||
| 431b82f579 | |||
| f7db4b9303 | |||
| 6872f7bd5d | |||
| 608651dfda | |||
| 1b11f4c729 | |||
| 8604651311 | |||
| 1a99a90bb0 | |||
| 44a5e0a437 | |||
| 8ce5d09c5c | |||
| ac62565f44 | |||
| 082e304ce2 | |||
| af5bf0d6f0 | |||
| 8295b2a73e | |||
| a51317daac | |||
| 7a3ba4652c | |||
| 97ef7e9967 | |||
| c48e3f13eb | |||
| 1fad408e86 | |||
| e9a90bbf43 | |||
| 39b871a2ed | |||
| a05a8f10a2 | |||
| a2398f50a4 | |||
| a98ab32805 | |||
| 0d7925f991 | |||
| 9201ed2150 | |||
| cbafc01739 | |||
| 9d98a39082 | |||
| 3428e9b0fa | |||
| 384b181c95 | 
							
								
								
									
										832
									
								
								.drone.yml
									
									
									
									
									
								
							
							
						
						
									
										832
									
								
								.drone.yml
									
									
									
									
									
								
							| @@ -1,832 +0,0 @@ | |||||||
| --- |  | ||||||
| kind: pipeline |  | ||||||
| type: kubernetes |  | ||||||
| name: linter |  | ||||||
|  |  | ||||||
| clone: |  | ||||||
|   disable: true |  | ||||||
|  |  | ||||||
| platform: |  | ||||||
|   os: linux |  | ||||||
|  |  | ||||||
| steps: |  | ||||||
| - name: clone |  | ||||||
|   image: git.cryptic.systems/volker.raschek/git:1.3.1 |  | ||||||
|  |  | ||||||
| - name: markdown lint |  | ||||||
|   commands: |  | ||||||
|   - markdownlint *.md |  | ||||||
|   image: git.cryptic.systems/volker.raschek/markdownlint:0.36.0 |  | ||||||
|   resources: |  | ||||||
|     limits: |  | ||||||
|       cpu: 150 |  | ||||||
|       memory: 150M |  | ||||||
|  |  | ||||||
| - name: email-notification |  | ||||||
|   environment: |  | ||||||
|     SMTP_FROM_ADDRESS: |  | ||||||
|       from_secret: smtp_from_address |  | ||||||
|     SMTP_FROM_NAME: |  | ||||||
|       from_secret: smtp_from_name |  | ||||||
|     SMTP_HOST: |  | ||||||
|       from_secret: smtp_host |  | ||||||
|     SMTP_USERNAME: |  | ||||||
|       from_secret: smtp_username |  | ||||||
|     SMTP_PASSWORD: |  | ||||||
|       from_secret: smtp_password |  | ||||||
|   image: git.cryptic.systems/volker.raschek/drone-email:0.1.5 |  | ||||||
|   resources: |  | ||||||
|     limits: |  | ||||||
|       cpu: 150 |  | ||||||
|       memory: 150M |  | ||||||
|   when: |  | ||||||
|     status: |  | ||||||
|     - changed |  | ||||||
|     - failure |  | ||||||
|  |  | ||||||
| trigger: |  | ||||||
|   event: |  | ||||||
|     exclude: |  | ||||||
|     - tag |  | ||||||
|  |  | ||||||
| --- |  | ||||||
| kind: pipeline |  | ||||||
| type: docker |  | ||||||
| name: unit-test-amd64 |  | ||||||
|  |  | ||||||
| clone: |  | ||||||
|   disable: true |  | ||||||
|  |  | ||||||
| platform: |  | ||||||
|   arch: amd64 |  | ||||||
|  |  | ||||||
| steps: |  | ||||||
| - name: clone |  | ||||||
|   image: git.cryptic.systems/volker.raschek/git:1.3.1 |  | ||||||
|  |  | ||||||
| - name: unit-test |  | ||||||
|   commands: |  | ||||||
|   - go test -v ./... |  | ||||||
|   image: docker.io/library/golang:1.21.0 |  | ||||||
|  |  | ||||||
| trigger: |  | ||||||
|   event: |  | ||||||
|     exclude: |  | ||||||
|     - tag |  | ||||||
|  |  | ||||||
| --- |  | ||||||
| kind: pipeline |  | ||||||
| type: docker |  | ||||||
| name: unit-test-arm-v7 |  | ||||||
|  |  | ||||||
| clone: |  | ||||||
|   disable: true |  | ||||||
|  |  | ||||||
| platform: |  | ||||||
|   arch: arm |  | ||||||
|  |  | ||||||
| steps: |  | ||||||
| - name: clone |  | ||||||
|   image: git.cryptic.systems/volker.raschek/git:1.3.1 |  | ||||||
|  |  | ||||||
| - name: unit-test |  | ||||||
|   commands: |  | ||||||
|   - go test -v ./... |  | ||||||
|   image: docker.io/library/golang:1.21.0 |  | ||||||
|  |  | ||||||
| trigger: |  | ||||||
|   event: |  | ||||||
|     include: |  | ||||||
|     - pull_request |  | ||||||
|     - push |  | ||||||
|     exclude: |  | ||||||
|     - tag |  | ||||||
|  |  | ||||||
| --- |  | ||||||
| kind: pipeline |  | ||||||
| type: docker |  | ||||||
| name: unit-test-arm64 |  | ||||||
|  |  | ||||||
| clone: |  | ||||||
|   disable: true |  | ||||||
|  |  | ||||||
| platform: |  | ||||||
|   arch: arm64 |  | ||||||
|  |  | ||||||
| steps: |  | ||||||
| - name: clone |  | ||||||
|   image: git.cryptic.systems/volker.raschek/git:1.3.1 |  | ||||||
|  |  | ||||||
| - name: unit-test |  | ||||||
|   commands: |  | ||||||
|   - go test -v ./... |  | ||||||
|   image: docker.io/library/golang:1.21.0 |  | ||||||
|  |  | ||||||
| trigger: |  | ||||||
|   event: |  | ||||||
|     include: |  | ||||||
|     - pull_request |  | ||||||
|     - push |  | ||||||
|     exclude: |  | ||||||
|     - tag |  | ||||||
|  |  | ||||||
| --- |  | ||||||
| kind: pipeline |  | ||||||
| type: docker |  | ||||||
| name: dry-run-amd64 |  | ||||||
|  |  | ||||||
| clone: |  | ||||||
|   disable: true |  | ||||||
|  |  | ||||||
| depends_on: |  | ||||||
| - linter |  | ||||||
| - unit-test-amd64 |  | ||||||
|  |  | ||||||
| platform: |  | ||||||
|   os: linux |  | ||||||
|   arch: amd64 |  | ||||||
|  |  | ||||||
| steps: |  | ||||||
| - name: clone |  | ||||||
|   image: git.cryptic.systems/volker.raschek/git:1.3.1 |  | ||||||
|  |  | ||||||
| - name: build |  | ||||||
|   image: docker.io/plugins/docker:20.10.9 |  | ||||||
|   settings: |  | ||||||
|     auto_tag: false |  | ||||||
|     dockerfile: Dockerfile |  | ||||||
|     dry_run: true |  | ||||||
|     force_tag: true |  | ||||||
|     no_cache: true |  | ||||||
|     purge: true |  | ||||||
|     mirror: |  | ||||||
|       from_secret: docker_io_mirror |  | ||||||
|     registry: git.cryptic.systems |  | ||||||
|     repo: git.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter |  | ||||||
|     tags: latest-amd64 |  | ||||||
|     username: |  | ||||||
|       from_secret: git_cryptic_systems_container_registry_user |  | ||||||
|     password: |  | ||||||
|       from_secret: git_cryptic_systems_container_registry_password |  | ||||||
|  |  | ||||||
| - name: email-notification |  | ||||||
|   environment: |  | ||||||
|     SMTP_FROM_ADDRESS: |  | ||||||
|       from_secret: smtp_from_address |  | ||||||
|     SMTP_FROM_NAME: |  | ||||||
|       from_secret: smtp_from_name |  | ||||||
|     SMTP_HOST: |  | ||||||
|       from_secret: smtp_host |  | ||||||
|     SMTP_USERNAME: |  | ||||||
|       from_secret: smtp_username |  | ||||||
|     SMTP_PASSWORD: |  | ||||||
|       from_secret: smtp_password |  | ||||||
|   image: git.cryptic.systems/volker.raschek/drone-email:0.1.5 |  | ||||||
|   when: |  | ||||||
|     status: |  | ||||||
|     - changed |  | ||||||
|     - failure |  | ||||||
|  |  | ||||||
| trigger: |  | ||||||
|   branch: |  | ||||||
|     exclude: |  | ||||||
|     - master |  | ||||||
|   event: |  | ||||||
|   - pull_request |  | ||||||
|   - push |  | ||||||
|   repo: |  | ||||||
|   - volker.raschek/prometheus-fail2ban-exporter |  | ||||||
|  |  | ||||||
| --- |  | ||||||
| kind: pipeline |  | ||||||
| type: docker |  | ||||||
| name: dry-run-arm-v7 |  | ||||||
|  |  | ||||||
| clone: |  | ||||||
|   disable: true |  | ||||||
|  |  | ||||||
| depends_on: |  | ||||||
| - linter |  | ||||||
| - unit-test-arm-v7 |  | ||||||
|  |  | ||||||
| platform: |  | ||||||
|   os: linux |  | ||||||
|   arch: arm |  | ||||||
|  |  | ||||||
| steps: |  | ||||||
| - name: clone |  | ||||||
|   image: git.cryptic.systems/volker.raschek/git:1.3.1 |  | ||||||
|  |  | ||||||
| - name: build |  | ||||||
|   image: docker.io/plugins/docker:20.10.9 |  | ||||||
|   settings: |  | ||||||
|     auto_tag: false |  | ||||||
|     dockerfile: Dockerfile |  | ||||||
|     dry_run: true |  | ||||||
|     force_tag: true |  | ||||||
|     no_cache: true |  | ||||||
|     purge: true |  | ||||||
|     mirror: |  | ||||||
|       from_secret: docker_io_mirror |  | ||||||
|     registry: git.cryptic.systems |  | ||||||
|     repo: git.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter |  | ||||||
|     tags: latest-arm-v7 |  | ||||||
|     username: |  | ||||||
|       from_secret: git_cryptic_systems_container_registry_user |  | ||||||
|     password: |  | ||||||
|       from_secret: git_cryptic_systems_container_registry_password |  | ||||||
|  |  | ||||||
| - name: email-notification |  | ||||||
|   environment: |  | ||||||
|     SMTP_FROM_ADDRESS: |  | ||||||
|       from_secret: smtp_from_address |  | ||||||
|     SMTP_FROM_NAME: |  | ||||||
|       from_secret: smtp_from_name |  | ||||||
|     SMTP_HOST: |  | ||||||
|       from_secret: smtp_host |  | ||||||
|     SMTP_USERNAME: |  | ||||||
|       from_secret: smtp_username |  | ||||||
|     SMTP_PASSWORD: |  | ||||||
|       from_secret: smtp_password |  | ||||||
|   image: git.cryptic.systems/volker.raschek/drone-email:0.1.5 |  | ||||||
|   when: |  | ||||||
|     status: |  | ||||||
|     - changed |  | ||||||
|     - failure |  | ||||||
|  |  | ||||||
| trigger: |  | ||||||
|   branch: |  | ||||||
|     exclude: |  | ||||||
|     - master |  | ||||||
|   event: |  | ||||||
|   - pull_request |  | ||||||
|   - push |  | ||||||
|   repo: |  | ||||||
|   - volker.raschek/prometheus-fail2ban-exporter |  | ||||||
|  |  | ||||||
| --- |  | ||||||
| kind: pipeline |  | ||||||
| type: docker |  | ||||||
| name: dry-run-arm64-v8 |  | ||||||
|  |  | ||||||
| clone: |  | ||||||
|   disable: true |  | ||||||
|  |  | ||||||
| depends_on: |  | ||||||
| - linter |  | ||||||
| - unit-test-arm64 |  | ||||||
|  |  | ||||||
| platform: |  | ||||||
|   os: linux |  | ||||||
|   arch: arm64 |  | ||||||
|  |  | ||||||
| steps: |  | ||||||
| - name: clone |  | ||||||
|   image: git.cryptic.systems/volker.raschek/git:1.3.1 |  | ||||||
|  |  | ||||||
| - name: build |  | ||||||
|   image: docker.io/plugins/docker:20.10.9 |  | ||||||
|   settings: |  | ||||||
|     auto_tag: false |  | ||||||
|     dockerfile: Dockerfile |  | ||||||
|     dry_run: true |  | ||||||
|     force_tag: true |  | ||||||
|     no_cache: true |  | ||||||
|     purge: true |  | ||||||
|     mirror: |  | ||||||
|       from_secret: docker_io_mirror |  | ||||||
|     registry: git.cryptic.systems |  | ||||||
|     repo: git.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter |  | ||||||
|     tags: latest-arm64-v8 |  | ||||||
|     username: |  | ||||||
|       from_secret: git_cryptic_systems_container_registry_user |  | ||||||
|     password: |  | ||||||
|       from_secret: git_cryptic_systems_container_registry_password |  | ||||||
|  |  | ||||||
| - name: email-notification |  | ||||||
|   environment: |  | ||||||
|     SMTP_FROM_ADDRESS: |  | ||||||
|       from_secret: smtp_from_address |  | ||||||
|     SMTP_FROM_NAME: |  | ||||||
|       from_secret: smtp_from_name |  | ||||||
|     SMTP_HOST: |  | ||||||
|       from_secret: smtp_host |  | ||||||
|     SMTP_USERNAME: |  | ||||||
|       from_secret: smtp_username |  | ||||||
|     SMTP_PASSWORD: |  | ||||||
|       from_secret: smtp_password |  | ||||||
|   image: git.cryptic.systems/volker.raschek/drone-email:0.1.5 |  | ||||||
|   when: |  | ||||||
|     status: |  | ||||||
|     - changed |  | ||||||
|     - failure |  | ||||||
|  |  | ||||||
| trigger: |  | ||||||
|   branch: |  | ||||||
|     exclude: |  | ||||||
|     - master |  | ||||||
|   event: |  | ||||||
|   - pull_request |  | ||||||
|   - push |  | ||||||
|   repo: |  | ||||||
|   - volker.raschek/prometheus-fail2ban-exporter |  | ||||||
|  |  | ||||||
| --- |  | ||||||
| kind: pipeline |  | ||||||
| type: docker |  | ||||||
| name: latest-amd64 |  | ||||||
|  |  | ||||||
| clone: |  | ||||||
|   disable: true |  | ||||||
|  |  | ||||||
| depends_on: |  | ||||||
| - linter |  | ||||||
| - unit-test-amd64 |  | ||||||
|  |  | ||||||
| platform: |  | ||||||
|   os: linux |  | ||||||
|   arch: amd64 |  | ||||||
|  |  | ||||||
| steps: |  | ||||||
| - name: clone |  | ||||||
|   image: git.cryptic.systems/volker.raschek/git:1.3.1 |  | ||||||
|  |  | ||||||
| - name: build |  | ||||||
|   image: docker.io/plugins/docker:20.10.9 |  | ||||||
|   settings: |  | ||||||
|     auto_tag: false |  | ||||||
|     dockerfile: Dockerfile |  | ||||||
|     force_tag: true |  | ||||||
|     no_cache: true |  | ||||||
|     purge: true |  | ||||||
|     mirror: |  | ||||||
|       from_secret: docker_io_mirror |  | ||||||
|     registry: git.cryptic.systems |  | ||||||
|     repo: git.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter |  | ||||||
|     tags: latest-amd64 |  | ||||||
|     username: |  | ||||||
|       from_secret: git_cryptic_systems_container_registry_user |  | ||||||
|     password: |  | ||||||
|       from_secret: git_cryptic_systems_container_registry_password |  | ||||||
|  |  | ||||||
| - name: email-notification |  | ||||||
|   environment: |  | ||||||
|     SMTP_FROM_ADDRESS: |  | ||||||
|       from_secret: smtp_from_address |  | ||||||
|     SMTP_FROM_NAME: |  | ||||||
|       from_secret: smtp_from_name |  | ||||||
|     SMTP_HOST: |  | ||||||
|       from_secret: smtp_host |  | ||||||
|     SMTP_USERNAME: |  | ||||||
|       from_secret: smtp_username |  | ||||||
|     SMTP_PASSWORD: |  | ||||||
|       from_secret: smtp_password |  | ||||||
|   image: git.cryptic.systems/volker.raschek/drone-email:0.1.5 |  | ||||||
|   when: |  | ||||||
|     status: |  | ||||||
|     - changed |  | ||||||
|     - failure |  | ||||||
|  |  | ||||||
| trigger: |  | ||||||
|   branch: |  | ||||||
|   - master |  | ||||||
|   event: |  | ||||||
|   - cron |  | ||||||
|   - push |  | ||||||
|   repo: |  | ||||||
|   - volker.raschek/prometheus-fail2ban-exporter |  | ||||||
|  |  | ||||||
| --- |  | ||||||
| kind: pipeline |  | ||||||
| type: docker |  | ||||||
| name: latest-arm-v7 |  | ||||||
|  |  | ||||||
| clone: |  | ||||||
|   disable: true |  | ||||||
|  |  | ||||||
| depends_on: |  | ||||||
| - linter |  | ||||||
| - unit-test-arm-v7 |  | ||||||
|  |  | ||||||
| platform: |  | ||||||
|   os: linux |  | ||||||
|   arch: arm |  | ||||||
|  |  | ||||||
| steps: |  | ||||||
| - name: clone |  | ||||||
|   image: git.cryptic.systems/volker.raschek/git:1.3.1 |  | ||||||
|  |  | ||||||
| - name: build |  | ||||||
|   image: docker.io/plugins/docker:20.10.9 |  | ||||||
|   settings: |  | ||||||
|     auto_tag: false |  | ||||||
|     dockerfile: Dockerfile |  | ||||||
|     force_tag: true |  | ||||||
|     no_cache: true |  | ||||||
|     purge: true |  | ||||||
|     mirror: |  | ||||||
|       from_secret: docker_io_mirror |  | ||||||
|     registry: git.cryptic.systems |  | ||||||
|     repo: git.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter |  | ||||||
|     tags: latest-arm-v7 |  | ||||||
|     username: |  | ||||||
|       from_secret: git_cryptic_systems_container_registry_user |  | ||||||
|     password: |  | ||||||
|       from_secret: git_cryptic_systems_container_registry_password |  | ||||||
|  |  | ||||||
| - name: email-notification |  | ||||||
|   environment: |  | ||||||
|     SMTP_FROM_ADDRESS: |  | ||||||
|       from_secret: smtp_from_address |  | ||||||
|     SMTP_FROM_NAME: |  | ||||||
|       from_secret: smtp_from_name |  | ||||||
|     SMTP_HOST: |  | ||||||
|       from_secret: smtp_host |  | ||||||
|     SMTP_USERNAME: |  | ||||||
|       from_secret: smtp_username |  | ||||||
|     SMTP_PASSWORD: |  | ||||||
|       from_secret: smtp_password |  | ||||||
|   image: git.cryptic.systems/volker.raschek/drone-email:0.1.5 |  | ||||||
|   when: |  | ||||||
|     status: |  | ||||||
|     - changed |  | ||||||
|     - failure |  | ||||||
|  |  | ||||||
| trigger: |  | ||||||
|   branch: |  | ||||||
|   - master |  | ||||||
|   event: |  | ||||||
|   - cron |  | ||||||
|   - push |  | ||||||
|   repo: |  | ||||||
|   - volker.raschek/prometheus-fail2ban-exporter |  | ||||||
|  |  | ||||||
| --- |  | ||||||
| kind: pipeline |  | ||||||
| type: docker |  | ||||||
| name: latest-arm64-v8 |  | ||||||
|  |  | ||||||
| clone: |  | ||||||
|   disable: true |  | ||||||
|  |  | ||||||
| depends_on: |  | ||||||
| - linter |  | ||||||
| - unit-test-arm64 |  | ||||||
|  |  | ||||||
| platform: |  | ||||||
|   os: linux |  | ||||||
|   arch: arm64 |  | ||||||
|  |  | ||||||
| steps: |  | ||||||
| - name: clone |  | ||||||
|   image: git.cryptic.systems/volker.raschek/git:1.3.1 |  | ||||||
|  |  | ||||||
| - name: build |  | ||||||
|   image: docker.io/plugins/docker:20.10.9 |  | ||||||
|   settings: |  | ||||||
|     auto_tag: false |  | ||||||
|     dockerfile: Dockerfile |  | ||||||
|     force_tag: true |  | ||||||
|     no_cache: true |  | ||||||
|     purge: true |  | ||||||
|     mirror: |  | ||||||
|       from_secret: docker_io_mirror |  | ||||||
|     registry: git.cryptic.systems |  | ||||||
|     repo: git.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter |  | ||||||
|     tags: latest-arm64-v8 |  | ||||||
|     username: |  | ||||||
|       from_secret: git_cryptic_systems_container_registry_user |  | ||||||
|     password: |  | ||||||
|       from_secret: git_cryptic_systems_container_registry_password |  | ||||||
|  |  | ||||||
| - name: email-notification |  | ||||||
|   environment: |  | ||||||
|     SMTP_FROM_ADDRESS: |  | ||||||
|       from_secret: smtp_from_address |  | ||||||
|     SMTP_FROM_NAME: |  | ||||||
|       from_secret: smtp_from_name |  | ||||||
|     SMTP_HOST: |  | ||||||
|       from_secret: smtp_host |  | ||||||
|     SMTP_USERNAME: |  | ||||||
|       from_secret: smtp_username |  | ||||||
|     SMTP_PASSWORD: |  | ||||||
|       from_secret: smtp_password |  | ||||||
|   image: git.cryptic.systems/volker.raschek/drone-email:0.1.5 |  | ||||||
|   when: |  | ||||||
|     status: |  | ||||||
|     - changed |  | ||||||
|     - failure |  | ||||||
|  |  | ||||||
| trigger: |  | ||||||
|   branch: |  | ||||||
|   - master |  | ||||||
|   event: |  | ||||||
|   - cron |  | ||||||
|   - push |  | ||||||
|   repo: |  | ||||||
|   - volker.raschek/prometheus-fail2ban-exporter |  | ||||||
|  |  | ||||||
| --- |  | ||||||
| kind: pipeline |  | ||||||
| type: kubernetes |  | ||||||
| name: latest-manifest |  | ||||||
|  |  | ||||||
| clone: |  | ||||||
|   disable: true |  | ||||||
|  |  | ||||||
| depends_on: |  | ||||||
| - latest-amd64 |  | ||||||
| - latest-arm-v7 |  | ||||||
| - latest-arm64-v8 |  | ||||||
|  |  | ||||||
| # docker.io/plugins/manifest only for amd64 architectures available |  | ||||||
| node_selector: |  | ||||||
|   kubernetes.io/os: linux |  | ||||||
|   kubernetes.io/arch: amd64 |  | ||||||
|  |  | ||||||
| steps: |  | ||||||
| - name: clone |  | ||||||
|   image: git.cryptic.systems/volker.raschek/git:1.3.1 |  | ||||||
|  |  | ||||||
| - name: build-manifest |  | ||||||
|   image: docker.io/plugins/manifest:1.4.0 |  | ||||||
|   settings: |  | ||||||
|     auto_tag: false |  | ||||||
|     ignore_missing: true |  | ||||||
|     spec: manifest.tmpl |  | ||||||
|     username: |  | ||||||
|       from_secret: git_cryptic_systems_container_registry_user |  | ||||||
|     password: |  | ||||||
|       from_secret: git_cryptic_systems_container_registry_password |  | ||||||
|  |  | ||||||
| - name: email-notification |  | ||||||
|   environment: |  | ||||||
|     SMTP_FROM_ADDRESS: |  | ||||||
|       from_secret: smtp_from_address |  | ||||||
|     SMTP_FROM_NAME: |  | ||||||
|       from_secret: smtp_from_name |  | ||||||
|     SMTP_HOST: |  | ||||||
|       from_secret: smtp_host |  | ||||||
|     SMTP_USERNAME: |  | ||||||
|       from_secret: smtp_username |  | ||||||
|     SMTP_PASSWORD: |  | ||||||
|       from_secret: smtp_password |  | ||||||
|   image: git.cryptic.systems/volker.raschek/drone-email:0.1.5 |  | ||||||
|   resources: |  | ||||||
|     limits: |  | ||||||
|       cpu: 150 |  | ||||||
|       memory: 150M |  | ||||||
|   when: |  | ||||||
|     status: |  | ||||||
|     - changed |  | ||||||
|     - failure |  | ||||||
|  |  | ||||||
| trigger: |  | ||||||
|   branch: |  | ||||||
|   - master |  | ||||||
|   event: |  | ||||||
|   - cron |  | ||||||
|   - push |  | ||||||
|   repo: |  | ||||||
|   - volker.raschek/prometheus-fail2ban-exporter |  | ||||||
|  |  | ||||||
| --- |  | ||||||
| kind: pipeline |  | ||||||
| type: docker |  | ||||||
| name: tagged-amd64 |  | ||||||
|  |  | ||||||
| clone: |  | ||||||
|   disable: true |  | ||||||
|  |  | ||||||
| platform: |  | ||||||
|   os: linux |  | ||||||
|   arch: amd64 |  | ||||||
|  |  | ||||||
| steps: |  | ||||||
| - name: clone |  | ||||||
|   image: git.cryptic.systems/volker.raschek/git:1.3.1 |  | ||||||
|  |  | ||||||
| - name: build |  | ||||||
|   image: docker.io/plugins/docker:20.10.9 |  | ||||||
|   settings: |  | ||||||
|     auto_tag: true |  | ||||||
|     auto_tag_suffix: amd64 |  | ||||||
|     dockerfile: Dockerfile |  | ||||||
|     force_tag: true |  | ||||||
|     no_cache: true |  | ||||||
|     purge: true |  | ||||||
|     mirror: |  | ||||||
|       from_secret: docker_io_mirror |  | ||||||
|     registry: git.cryptic.systems |  | ||||||
|     repo: git.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter |  | ||||||
|     username: |  | ||||||
|       from_secret: git_cryptic_systems_container_registry_user |  | ||||||
|     password: |  | ||||||
|       from_secret: git_cryptic_systems_container_registry_password |  | ||||||
|     build_args: |  | ||||||
|     - VERSION=${DRONE_TAG} |  | ||||||
|  |  | ||||||
| - name: email-notification |  | ||||||
|   environment: |  | ||||||
|     SMTP_FROM_ADDRESS: |  | ||||||
|       from_secret: smtp_from_address |  | ||||||
|     SMTP_FROM_NAME: |  | ||||||
|       from_secret: smtp_from_name |  | ||||||
|     SMTP_HOST: |  | ||||||
|       from_secret: smtp_host |  | ||||||
|     SMTP_USERNAME: |  | ||||||
|       from_secret: smtp_username |  | ||||||
|     SMTP_PASSWORD: |  | ||||||
|       from_secret: smtp_password |  | ||||||
|   image: git.cryptic.systems/volker.raschek/drone-email:0.1.5 |  | ||||||
|   when: |  | ||||||
|     status: |  | ||||||
|     - changed |  | ||||||
|     - failure |  | ||||||
|  |  | ||||||
| trigger: |  | ||||||
|   event: |  | ||||||
|   - tag |  | ||||||
|   repo: |  | ||||||
|   - volker.raschek/prometheus-fail2ban-exporter |  | ||||||
|  |  | ||||||
| --- |  | ||||||
| kind: pipeline |  | ||||||
| type: docker |  | ||||||
| name: tagged-arm-v7 |  | ||||||
|  |  | ||||||
| clone: |  | ||||||
|   disable: true |  | ||||||
|  |  | ||||||
| platform: |  | ||||||
|   os: linux |  | ||||||
|   arch: arm |  | ||||||
|  |  | ||||||
| steps: |  | ||||||
| - name: clone |  | ||||||
|   image: git.cryptic.systems/volker.raschek/git:1.3.1 |  | ||||||
|  |  | ||||||
| - name: build |  | ||||||
|   image: docker.io/plugins/docker:20.10.9 |  | ||||||
|   settings: |  | ||||||
|     auto_tag: true |  | ||||||
|     auto_tag_suffix: arm-v7 |  | ||||||
|     dockerfile: Dockerfile |  | ||||||
|     force_tag: true |  | ||||||
|     no_cache: true |  | ||||||
|     purge: true |  | ||||||
|     mirror: |  | ||||||
|       from_secret: docker_io_mirror |  | ||||||
|     registry: git.cryptic.systems |  | ||||||
|     repo: git.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter |  | ||||||
|     username: |  | ||||||
|       from_secret: git_cryptic_systems_container_registry_user |  | ||||||
|     password: |  | ||||||
|       from_secret: git_cryptic_systems_container_registry_password |  | ||||||
|     build_args: |  | ||||||
|     - VERSION=${DRONE_TAG} |  | ||||||
|  |  | ||||||
| - name: email-notification |  | ||||||
|   environment: |  | ||||||
|     SMTP_FROM_ADDRESS: |  | ||||||
|       from_secret: smtp_from_address |  | ||||||
|     SMTP_FROM_NAME: |  | ||||||
|       from_secret: smtp_from_name |  | ||||||
|     SMTP_HOST: |  | ||||||
|       from_secret: smtp_host |  | ||||||
|     SMTP_USERNAME: |  | ||||||
|       from_secret: smtp_username |  | ||||||
|     SMTP_PASSWORD: |  | ||||||
|       from_secret: smtp_password |  | ||||||
|   image: git.cryptic.systems/volker.raschek/drone-email:0.1.5 |  | ||||||
|   when: |  | ||||||
|     status: |  | ||||||
|     - changed |  | ||||||
|     - failure |  | ||||||
|  |  | ||||||
| trigger: |  | ||||||
|   event: |  | ||||||
|   - tag |  | ||||||
|   repo: |  | ||||||
|   - volker.raschek/prometheus-fail2ban-exporter |  | ||||||
|  |  | ||||||
| --- |  | ||||||
| kind: pipeline |  | ||||||
| type: docker |  | ||||||
| name: tagged-arm64-v8 |  | ||||||
|  |  | ||||||
| clone: |  | ||||||
|   disable: true |  | ||||||
|  |  | ||||||
| platform: |  | ||||||
|   os: linux |  | ||||||
|   arch: arm64 |  | ||||||
|  |  | ||||||
| steps: |  | ||||||
| - name: clone |  | ||||||
|   image: git.cryptic.systems/volker.raschek/git:1.3.1 |  | ||||||
|  |  | ||||||
| - name: build |  | ||||||
|   image: docker.io/plugins/docker:20.10.9 |  | ||||||
|   settings: |  | ||||||
|     auto_tag: true |  | ||||||
|     auto_tag_suffix: arm64-v8 |  | ||||||
|     dockerfile: Dockerfile |  | ||||||
|     force_tag: true |  | ||||||
|     no_cache: true |  | ||||||
|     purge: true |  | ||||||
|     mirror: |  | ||||||
|       from_secret: docker_io_mirror |  | ||||||
|     registry: git.cryptic.systems |  | ||||||
|     repo: git.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter |  | ||||||
|     username: |  | ||||||
|       from_secret: git_cryptic_systems_container_registry_user |  | ||||||
|     password: |  | ||||||
|       from_secret: git_cryptic_systems_container_registry_password |  | ||||||
|     build_args: |  | ||||||
|     - VERSION=${DRONE_TAG} |  | ||||||
|  |  | ||||||
| - name: email-notification |  | ||||||
|   environment: |  | ||||||
|     SMTP_FROM_ADDRESS: |  | ||||||
|       from_secret: smtp_from_address |  | ||||||
|     SMTP_FROM_NAME: |  | ||||||
|       from_secret: smtp_from_name |  | ||||||
|     SMTP_HOST: |  | ||||||
|       from_secret: smtp_host |  | ||||||
|     SMTP_USERNAME: |  | ||||||
|       from_secret: smtp_username |  | ||||||
|     SMTP_PASSWORD: |  | ||||||
|       from_secret: smtp_password |  | ||||||
|   image: git.cryptic.systems/volker.raschek/drone-email:0.1.5 |  | ||||||
|   when: |  | ||||||
|     status: |  | ||||||
|     - changed |  | ||||||
|     - failure |  | ||||||
|  |  | ||||||
| trigger: |  | ||||||
|   event: |  | ||||||
|   - tag |  | ||||||
|   repo: |  | ||||||
|   - volker.raschek/prometheus-fail2ban-exporter |  | ||||||
|  |  | ||||||
| --- |  | ||||||
| kind: pipeline |  | ||||||
| type: kubernetes |  | ||||||
| name: tagged-manifest |  | ||||||
|  |  | ||||||
| clone: |  | ||||||
|   disable: true |  | ||||||
|  |  | ||||||
| depends_on: |  | ||||||
| - tagged-amd64 |  | ||||||
| - tagged-arm-v7 |  | ||||||
| - tagged-arm64-v8 |  | ||||||
|  |  | ||||||
| # docker.io/plugins/manifest only for amd64 architectures available |  | ||||||
| node_selector: |  | ||||||
|   kubernetes.io/os: linux |  | ||||||
|   kubernetes.io/arch: amd64 |  | ||||||
|  |  | ||||||
| steps: |  | ||||||
| - name: clone |  | ||||||
|   image: git.cryptic.systems/volker.raschek/git:1.3.1 |  | ||||||
|  |  | ||||||
| - name: build-manifest |  | ||||||
|   image: docker.io/plugins/manifest:1.4.0 |  | ||||||
|   settings: |  | ||||||
|     auto_tag: true |  | ||||||
|     ignore_missing: true |  | ||||||
|     spec: manifest.tmpl |  | ||||||
|     username: |  | ||||||
|       from_secret: git_cryptic_systems_container_registry_user |  | ||||||
|     password: |  | ||||||
|       from_secret: git_cryptic_systems_container_registry_password |  | ||||||
|  |  | ||||||
| - name: email-notification |  | ||||||
|   environment: |  | ||||||
|     SMTP_FROM_ADDRESS: |  | ||||||
|       from_secret: smtp_from_address |  | ||||||
|     SMTP_FROM_NAME: |  | ||||||
|       from_secret: smtp_from_name |  | ||||||
|     SMTP_HOST: |  | ||||||
|       from_secret: smtp_host |  | ||||||
|     SMTP_USERNAME: |  | ||||||
|       from_secret: smtp_username |  | ||||||
|     SMTP_PASSWORD: |  | ||||||
|       from_secret: smtp_password |  | ||||||
|   image: git.cryptic.systems/volker.raschek/drone-email:0.1.5 |  | ||||||
|   resources: |  | ||||||
|     limits: |  | ||||||
|       cpu: 150 |  | ||||||
|       memory: 150M |  | ||||||
|   when: |  | ||||||
|     status: |  | ||||||
|     - changed |  | ||||||
|     - failure |  | ||||||
|  |  | ||||||
| trigger: |  | ||||||
|   event: |  | ||||||
|   - tag |  | ||||||
|   repo: |  | ||||||
|   - volker.raschek/prometheus-fail2ban-exporter |  | ||||||
							
								
								
									
										24
									
								
								.gitea/workflows/golang-tests.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								.gitea/workflows/golang-tests.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | |||||||
|  | name: Golang Tests | ||||||
|  |  | ||||||
|  | on: | ||||||
|  |   pull_request: | ||||||
|  |     types: [ "opened", "reopened", "synchronize" ] | ||||||
|  |   push: | ||||||
|  |     branches: [ '**' ] | ||||||
|  |     tags-ignore: [ '**' ] | ||||||
|  |  | ||||||
|  | jobs: | ||||||
|  |   unittest: | ||||||
|  |     runs-on: ${{ matrix.os }} | ||||||
|  |     strategy: | ||||||
|  |       matrix: | ||||||
|  |         go: [ stable ] | ||||||
|  |         os: [ ubuntu-latest-amd64, ubuntu-latest-arm64 ] | ||||||
|  |     steps: | ||||||
|  |     - uses: actions/checkout@v5.0.0 | ||||||
|  |     - uses: actions/setup-go@v5.5.0 | ||||||
|  |       with: | ||||||
|  |         go-version: ${{ matrix.go }} | ||||||
|  |     - env: | ||||||
|  |         GOPROXY: ${{ vars.GOPROXY }} | ||||||
|  |       run: make test/unit | ||||||
							
								
								
									
										27
									
								
								.gitea/workflows/golangci-lint.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								.gitea/workflows/golangci-lint.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | |||||||
|  | name: Golang CI lint | ||||||
|  |  | ||||||
|  | on: | ||||||
|  |   pull_request: | ||||||
|  |     types: [ "opened", "reopened", "synchronize" ] | ||||||
|  |   push: | ||||||
|  |     branches: [ '**' ] | ||||||
|  |     tags-ignore: [ '**' ] | ||||||
|  |  | ||||||
|  | permissions: | ||||||
|  |   contents: read | ||||||
|  |  | ||||||
|  | jobs: | ||||||
|  |   golangci: | ||||||
|  |     runs-on: ${{ matrix.os }} | ||||||
|  |     strategy: | ||||||
|  |       matrix: | ||||||
|  |         go: [ stable ] | ||||||
|  |         os: [ ubuntu-latest-amd64, ubuntu-latest-arm64 ] | ||||||
|  |     steps: | ||||||
|  |     - uses: actions/checkout@v5.0.0 | ||||||
|  |     - uses: actions/setup-go@v5.5.0 | ||||||
|  |       with: | ||||||
|  |         go-version: ${{ matrix.go }} | ||||||
|  |     - uses: golangci/golangci-lint-action@v8.0.0 | ||||||
|  |       with: | ||||||
|  |         version: v2.1 | ||||||
							
								
								
									
										18
									
								
								.gitea/workflows/markdown-linters.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								.gitea/workflows/markdown-linters.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | |||||||
|  | name: 'Lint Markdown files' | ||||||
|  |  | ||||||
|  | on: | ||||||
|  |   pull_request: | ||||||
|  |     types: [ "opened", "reopened", "synchronize" ] | ||||||
|  |   push: | ||||||
|  |     branches: [ '*' ] | ||||||
|  |     tags-ignore: [ '*' ] | ||||||
|  |  | ||||||
|  | jobs: | ||||||
|  |   markdown-lint: | ||||||
|  |     runs-on: | ||||||
|  |     - ubuntu-latest | ||||||
|  |     steps: | ||||||
|  |     - uses: actions/checkout@v5.0.0 | ||||||
|  |     - uses: DavidAnson/markdownlint-cli2-action@v20.0.0 | ||||||
|  |       with: | ||||||
|  |         globs: '**/*.md' | ||||||
							
								
								
									
										52
									
								
								.gitea/workflows/release.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								.gitea/workflows/release.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,52 @@ | |||||||
|  | name: Release | ||||||
|  |  | ||||||
|  | on: | ||||||
|  |   push: | ||||||
|  |     tags: [ '**' ] | ||||||
|  |  | ||||||
|  | permissions: | ||||||
|  |   contents: write | ||||||
|  |  | ||||||
|  | jobs: | ||||||
|  |   release: | ||||||
|  |     runs-on: | ||||||
|  |     - ubuntu-latest | ||||||
|  |     steps: | ||||||
|  |     - uses: actions/checkout@v5.0.0 | ||||||
|  |     - uses: docker/setup-qemu-action@v3.6.0 | ||||||
|  |     - uses: actions/setup-go@v5.5.0 | ||||||
|  |       with: | ||||||
|  |         go-version: stable | ||||||
|  |     - uses: docker/login-action@v3.5.0 | ||||||
|  |       with: | ||||||
|  |         registry: git.cryptic.systems | ||||||
|  |         username: ${{ github.repository_owner }} | ||||||
|  |         password: ${{ secrets.GIT_CRYPTIC_SYSTEMS_PACKAGE_REGISTRY_TOKEN }} | ||||||
|  |     - env: | ||||||
|  |         GITEA_TOKEN: ${{ secrets.GIT_CRYPTIC_SYSTEMS_PACKAGE_REGISTRY_TOKEN }} | ||||||
|  |         GONOSUMDB: ${{ vars.GONOSUMDB }} | ||||||
|  |         GOPROXY: ${{ vars.GOPROXY }} | ||||||
|  |       uses: goreleaser/goreleaser-action@v6.3.0 | ||||||
|  |       with: | ||||||
|  |         version: "~> v2" | ||||||
|  |         args: release --clean | ||||||
|  |  | ||||||
|  |   sync-to-hub-docker-io: | ||||||
|  |     needs: | ||||||
|  |     - release | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     steps: | ||||||
|  |     - name: Copy images to docker.io | ||||||
|  |       run: | | ||||||
|  |         TAG=$(echo ${{ github.ref_name }} | sed 's/v//gm') | ||||||
|  |  | ||||||
|  |         apt-get update --yes | ||||||
|  |         apt-get install --yes skopeo | ||||||
|  |         skopeo copy \ | ||||||
|  |           --all \ | ||||||
|  |           --dest-password ${{ secrets.DOCKER_IO_PASSWORD }} \ | ||||||
|  |           --dest-username ${{ secrets.DOCKER_IO_USERNAME }} \ | ||||||
|  |           --src-password ${{ secrets.GIT_CRYPTIC_SYSTEMS_PACKAGE_REGISTRY_TOKEN }} \ | ||||||
|  |           --src-username volker.raschek \ | ||||||
|  |             docker://git.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter:${TAG} \ | ||||||
|  |             docker://docker.io/volkerraschek/prometheus-fail2ban-exporter:${TAG} | ||||||
							
								
								
									
										20
									
								
								.gitea/workflows/update-docker-hub-description.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								.gitea/workflows/update-docker-hub-description.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | |||||||
|  | name: Update Docker Hub Description | ||||||
|  |  | ||||||
|  | on: | ||||||
|  |   push: | ||||||
|  |     branches: [ 'master' ] | ||||||
|  |     paths: [ 'README.md' ] | ||||||
|  |   workflow_dispatch: {} | ||||||
|  |  | ||||||
|  | jobs: | ||||||
|  |   update-description-on-hub-docker-io: | ||||||
|  |     runs-on: | ||||||
|  |     - ubuntu-latest | ||||||
|  |     steps: | ||||||
|  |     - uses: actions/checkout@v5.0.0 | ||||||
|  |     - uses: peter-evans/dockerhub-description@v4.0.2 | ||||||
|  |       with: | ||||||
|  |         username: ${{ secrets.DOCKER_IO_USERNAME }} | ||||||
|  |         password: ${{ secrets.DOCKER_IO_PASSWORD }} | ||||||
|  |         repository: volkerraschek/prometheus-fail2ban-exporter | ||||||
|  |         readme-filepath: README.md | ||||||
							
								
								
									
										9
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1,8 +1,3 @@ | |||||||
| .idea/ |  | ||||||
| vendor/ |  | ||||||
| *.iml |  | ||||||
|  |  | ||||||
| build/ |  | ||||||
| dist/ |  | ||||||
|  |  | ||||||
| prometheus-fail2ban-exporter | prometheus-fail2ban-exporter | ||||||
|  | coverage.txt | ||||||
|  | dist | ||||||
							
								
								
									
										175
									
								
								.goreleaser.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										175
									
								
								.goreleaser.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,175 @@ | |||||||
|  | project_name: prometheus-fail2ban-exporter | ||||||
|  |  | ||||||
|  | archives: | ||||||
|  | - formats: [ "tar.xz" ] | ||||||
|  |   files: | ||||||
|  |   - README.md | ||||||
|  |   - LICENSE | ||||||
|  |  | ||||||
|  | before: | ||||||
|  |   hooks: | ||||||
|  |   - go mod tidy | ||||||
|  |  | ||||||
|  | builds: | ||||||
|  | - main: main.go | ||||||
|  |   binary: >- | ||||||
|  |     {{ .ProjectName }}- | ||||||
|  |     {{- .Version }}- | ||||||
|  |     {{- .Os }}- | ||||||
|  |     {{- if eq .Arch "amd64" }}amd64 | ||||||
|  |     {{- else if eq .Arch "amd64_v1" }}amd64 | ||||||
|  |     {{- else }}{{ .Arch }}{{ end }} | ||||||
|  |     {{- if .Arm }}-{{ .Arm }}{{ end }} | ||||||
|  |   env: | ||||||
|  |   - CGO_ENABLED=0 | ||||||
|  |   - GONOSUMDB={{ .Env.GONOSUMDB }} | ||||||
|  |   - GOPROXY={{ .Env.GOPROXY }} | ||||||
|  |   goos: | ||||||
|  |   - linux | ||||||
|  |   goarch: | ||||||
|  |   - amd64 | ||||||
|  |   - arm | ||||||
|  |   - arm64 | ||||||
|  |   - riscv64 | ||||||
|  |   goarm: | ||||||
|  |   - "6" | ||||||
|  |   - "7" | ||||||
|  |   flags: | ||||||
|  |   - -trimpath | ||||||
|  |   ldflags: | ||||||
|  |   - -s -w -X 'main.version={{ trimprefix .Tag "v" }}' -X 'main.date={{ time "2006-01-02T15:04:05Z07:00" }}' | ||||||
|  |  | ||||||
|  | changelog: | ||||||
|  |   filters: | ||||||
|  |     exclude: | ||||||
|  |     - '^chore' | ||||||
|  |     - '^docs' | ||||||
|  |     - '^test' | ||||||
|  |     - Merge pull request | ||||||
|  |     - Merge branch | ||||||
|  |     - go mod tidy | ||||||
|  |   format: "{{.SHA}}: {{.Message}} (@{{.AuthorUsername}})" | ||||||
|  |   groups: | ||||||
|  |   - title: Features | ||||||
|  |     regexp: '^.*?feat(\([[:word:]]+\))??!?:.+$' | ||||||
|  |     order: 0 | ||||||
|  |   - title: "Bug fixes" | ||||||
|  |     regexp: '^.*?fix(\([[:word:]]+\))??!?:.+$' | ||||||
|  |     order: 1 | ||||||
|  |   - title: Others | ||||||
|  |     order: 999 | ||||||
|  |   sort: asc | ||||||
|  |   use: git | ||||||
|  |  | ||||||
|  | dockers: | ||||||
|  | - build_flag_templates: | ||||||
|  |   - --label=org.opencontainers.image.created={{ time "2006-01-02T15:04:05Z07:00" }} | ||||||
|  |   - --label=org.opencontainers.image.description={{ .ProjectName }} | ||||||
|  |   - --label=org.opencontainers.image.documentation={{ .ProjectName }} | ||||||
|  |   - --label=org.opencontainers.image.revision={{ .FullCommit }} | ||||||
|  |   - --label=org.opencontainers.image.source={{ .GitURL }} | ||||||
|  |   - --label=org.opencontainers.image.title={{ .ProjectName }} | ||||||
|  |   - --label=org.opencontainers.image.url=https://git.cryptic.systems/volker.raschek/{{ .ProjectName }} | ||||||
|  |   - --label=org.opencontainers.image.version={{ trimprefix .Tag "v" }} | ||||||
|  |   - --platform=linux/amd64 | ||||||
|  |   - --pull | ||||||
|  |   dockerfile: Dockerfile | ||||||
|  |   goarch: amd64 | ||||||
|  |   goos: linux | ||||||
|  |   image_templates: | ||||||
|  |   - 'git.cryptic.systems/volker.raschek/{{ .ProjectName }}:{{ trimprefix .Tag "v" }}-amd64' | ||||||
|  |   skip_push: false | ||||||
|  |   use: buildx | ||||||
|  |  | ||||||
|  | - build_flag_templates: | ||||||
|  |   - --label=org.opencontainers.image.created={{ time "2006-01-02T15:04:05Z07:00" }} | ||||||
|  |   - --label=org.opencontainers.image.description={{ .ProjectName }} | ||||||
|  |   - --label=org.opencontainers.image.documentation={{ .ProjectName }} | ||||||
|  |   - --label=org.opencontainers.image.revision={{ .FullCommit }} | ||||||
|  |   - --label=org.opencontainers.image.source={{ .GitURL }} | ||||||
|  |   - --label=org.opencontainers.image.title={{ .ProjectName }} | ||||||
|  |   - --label=org.opencontainers.image.url=https://git.cryptic.systems/volker.raschek/{{ .ProjectName }} | ||||||
|  |   - --label=org.opencontainers.image.version={{ trimprefix .Tag "v" }} | ||||||
|  |   - --platform=linux/arm/v6 | ||||||
|  |   - --pull | ||||||
|  |   dockerfile: Dockerfile | ||||||
|  |   goarch: arm | ||||||
|  |   goarm: "6" | ||||||
|  |   goos: linux | ||||||
|  |   image_templates: | ||||||
|  |   - 'git.cryptic.systems/volker.raschek/{{ .ProjectName }}:{{ trimprefix .Tag "v" }}-arm-v6' | ||||||
|  |   skip_push: false | ||||||
|  |   use: buildx | ||||||
|  |  | ||||||
|  | - build_flag_templates: | ||||||
|  |   - --label=org.opencontainers.image.created={{ time "2006-01-02T15:04:05Z07:00" }} | ||||||
|  |   - --label=org.opencontainers.image.description={{ .ProjectName }} | ||||||
|  |   - --label=org.opencontainers.image.documentation={{ .ProjectName }} | ||||||
|  |   - --label=org.opencontainers.image.revision={{ .FullCommit }} | ||||||
|  |   - --label=org.opencontainers.image.source={{ .GitURL }} | ||||||
|  |   - --label=org.opencontainers.image.title={{ .ProjectName }} | ||||||
|  |   - --label=org.opencontainers.image.url=https://git.cryptic.systems/volker.raschek/{{ .ProjectName }} | ||||||
|  |   - --label=org.opencontainers.image.version={{ trimprefix .Tag "v" }} | ||||||
|  |   - --platform=linux/arm/v7 | ||||||
|  |   - --pull | ||||||
|  |   dockerfile: Dockerfile | ||||||
|  |   goarch: arm | ||||||
|  |   goarm: "7" | ||||||
|  |   goos: linux | ||||||
|  |   image_templates: | ||||||
|  |   - 'git.cryptic.systems/volker.raschek/{{ .ProjectName }}:{{ trimprefix .Tag "v" }}-arm-v7' | ||||||
|  |   skip_push: false | ||||||
|  |   use: buildx | ||||||
|  |  | ||||||
|  | - build_flag_templates: | ||||||
|  |   - --label=org.opencontainers.image.created={{ time "2006-01-02T15:04:05Z07:00" }} | ||||||
|  |   - --label=org.opencontainers.image.description={{ .ProjectName }} | ||||||
|  |   - --label=org.opencontainers.image.documentation={{ .ProjectName }} | ||||||
|  |   - --label=org.opencontainers.image.revision={{ .FullCommit }} | ||||||
|  |   - --label=org.opencontainers.image.source={{ .GitURL }} | ||||||
|  |   - --label=org.opencontainers.image.title={{ .ProjectName }} | ||||||
|  |   - --label=org.opencontainers.image.url=https://git.cryptic.systems/volker.raschek/{{ .ProjectName }} | ||||||
|  |   - --label=org.opencontainers.image.version={{ trimprefix .Tag "v" }} | ||||||
|  |   - --platform=linux/arm64 | ||||||
|  |   - --pull | ||||||
|  |   dockerfile: Dockerfile | ||||||
|  |   goarch: arm64 | ||||||
|  |   goos: linux | ||||||
|  |   image_templates: | ||||||
|  |   - 'git.cryptic.systems/volker.raschek/{{ .ProjectName }}:{{ trimprefix .Tag "v" }}-arm64' | ||||||
|  |   skip_push: false | ||||||
|  |   use: buildx | ||||||
|  |  | ||||||
|  | - build_flag_templates: | ||||||
|  |   - --label=org.opencontainers.image.created={{ time "2006-01-02T15:04:05Z07:00" }} | ||||||
|  |   - --label=org.opencontainers.image.description={{ .ProjectName }} | ||||||
|  |   - --label=org.opencontainers.image.documentation={{ .ProjectName }} | ||||||
|  |   - --label=org.opencontainers.image.revision={{ .FullCommit }} | ||||||
|  |   - --label=org.opencontainers.image.source={{ .GitURL }} | ||||||
|  |   - --label=org.opencontainers.image.title={{ .ProjectName }} | ||||||
|  |   - --label=org.opencontainers.image.url=https://git.cryptic.systems/volker.raschek/{{ .ProjectName }} | ||||||
|  |   - --label=org.opencontainers.image.version={{ trimprefix .Tag "v" }} | ||||||
|  |   - --platform=linux/riscv64 | ||||||
|  |   - --pull | ||||||
|  |   dockerfile: Dockerfile | ||||||
|  |   goarch: riscv64 | ||||||
|  |   goos: linux | ||||||
|  |   image_templates: | ||||||
|  |   - 'git.cryptic.systems/volker.raschek/{{ .ProjectName }}:{{ trimprefix .Tag "v" }}-riscv64' | ||||||
|  |   skip_push: false | ||||||
|  |   use: buildx | ||||||
|  |  | ||||||
|  | docker_manifests: | ||||||
|  | - name_template: 'git.cryptic.systems/volker.raschek/{{ .ProjectName }}:{{ trimprefix .Tag "v" }}' | ||||||
|  |   image_templates: | ||||||
|  |   - 'git.cryptic.systems/volker.raschek/{{ .ProjectName }}:{{ trimprefix .Tag "v" }}-amd64' | ||||||
|  |   - 'git.cryptic.systems/volker.raschek/{{ .ProjectName }}:{{ trimprefix .Tag "v" }}-arm-v6' | ||||||
|  |   - 'git.cryptic.systems/volker.raschek/{{ .ProjectName }}:{{ trimprefix .Tag "v" }}-arm-v7' | ||||||
|  |   - 'git.cryptic.systems/volker.raschek/{{ .ProjectName }}:{{ trimprefix .Tag "v" }}-arm64' | ||||||
|  |   - 'git.cryptic.systems/volker.raschek/{{ .ProjectName }}:{{ trimprefix .Tag "v" }}-riscv64' | ||||||
|  |  | ||||||
|  | gitea_urls: | ||||||
|  |   api: https://git.cryptic.systems/api/v1 | ||||||
|  |   download: https://git.cryptic.systems | ||||||
|  |  | ||||||
|  | version: 2 | ||||||
| @@ -45,19 +45,17 @@ MD012: | |||||||
| # MD013/line-length - Line length | # MD013/line-length - Line length | ||||||
| MD013: | MD013: | ||||||
|   # Number of characters |   # Number of characters | ||||||
|   line_length: 80 |   line_length: 120 | ||||||
|   # Number of characters for headings |   # Number of characters for headings | ||||||
|   heading_line_length: 80 |   heading_line_length: 120 | ||||||
|   # Number of characters for code blocks |   # Number of characters for code blocks | ||||||
|   code_block_line_length: 80 |   code_block_line_length: 120 | ||||||
|   # Include code blocks |   # Include code blocks | ||||||
|   code_blocks: false |   code_blocks: false | ||||||
|   # Include tables |   # Include tables | ||||||
|   tables: false |   tables: false | ||||||
|   # Include headings |   # Include headings | ||||||
|   headings: true |   headings: true | ||||||
|   # Include headings |  | ||||||
|   headers: true |  | ||||||
|   # Strict length checking |   # Strict length checking | ||||||
|   strict: false |   strict: false | ||||||
|   # Stern length checking |   # Stern length checking | ||||||
| @@ -70,11 +68,6 @@ MD022: | |||||||
|   # Blank lines below heading |   # Blank lines below heading | ||||||
|   lines_below: 1 |   lines_below: 1 | ||||||
|  |  | ||||||
| # MD024/no-duplicate-heading/no-duplicate-header - Multiple headings with the same content |  | ||||||
| MD024: |  | ||||||
|   # Only check sibling headings |  | ||||||
|   allow_different_nesting: true |  | ||||||
|  |  | ||||||
| # MD025/single-title/single-h1 - Multiple top-level headings in the same document | # MD025/single-title/single-h1 - Multiple top-level headings in the same document | ||||||
| MD025: | MD025: | ||||||
|   # Heading level |   # Heading level | ||||||
|   | |||||||
							
								
								
									
										18
									
								
								Dockerfile
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								Dockerfile
									
									
									
									
									
								
							| @@ -1,19 +1,5 @@ | |||||||
| FROM docker.io/library/golang:1.20.5-buster AS build | FROM scratch AS build | ||||||
|  |  | ||||||
| WORKDIR /workspace | COPY prometheus-fail2ban-exporter-* /usr/bin/prometheus-fail2ban-exporter | ||||||
| ADD . /workspace |  | ||||||
|  |  | ||||||
| RUN apt update --yes && \ |  | ||||||
|     apt install --yes build-essential && \ |  | ||||||
|     make install \ |  | ||||||
|       PREFIX=/usr \ |  | ||||||
|       DESTDIR=/app \ |  | ||||||
|       EXECUTABLE=prometheus-fail2ban-exporter |  | ||||||
|  |  | ||||||
| FROM docker.io/library/debian:10-slim |  | ||||||
|  |  | ||||||
| COPY --from=build /app / |  | ||||||
|  |  | ||||||
| EXPOSE 9191 |  | ||||||
|  |  | ||||||
| ENTRYPOINT [ "/usr/bin/prometheus-fail2ban-exporter" ] | ENTRYPOINT [ "/usr/bin/prometheus-fail2ban-exporter" ] | ||||||
							
								
								
									
										167
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										167
									
								
								Makefile
									
									
									
									
									
								
							| @@ -1,85 +1,118 @@ | |||||||
|  | EXECUTABLE=prometheus-fail2ban-exporter | ||||||
|  | VERSION?=$(shell git describe --abbrev=0)+hash.$(shell git rev-parse --short HEAD) | ||||||
|  |  | ||||||
|  | # Destination directory and prefix to place the compiled binaries, documentaions | ||||||
|  | # and other files. | ||||||
| DESTDIR?= | DESTDIR?= | ||||||
| PREFIX?=/usr/local | PREFIX?=/usr/local | ||||||
| EXECUTABLE?=prometheus-fail2ban-exporter |  | ||||||
|  |  | ||||||
|  | # CONTAINER_RUNTIME | ||||||
|  | # The CONTAINER_RUNTIME variable will be used to specified the path to a | ||||||
|  | # container runtime. This is needed to start and run a container image. | ||||||
| CONTAINER_RUNTIME?=$(shell which podman) | CONTAINER_RUNTIME?=$(shell which podman) | ||||||
|  |  | ||||||
| # List make commands | # PROM_FAIL2BAN_EXP_IMAGE_REGISTRY_NAME | ||||||
| .PHONY: ls | # Defines the name of the new container to be built using several variables. | ||||||
| ls: | PROM_FAIL2BAN_EXP_IMAGE_REGISTRY_NAME:=git.cryptic.systems | ||||||
| 	cat Makefile | grep "^[a-zA-Z#].*" | cut -d ":" -f 1 | sed s';#;\n#;'g | PROM_FAIL2BAN_EXP_IMAGE_REGISTRY_USER:=volker.raschek | ||||||
|  |  | ||||||
| # Download dependencies | PROM_FAIL2BAN_EXP_IMAGE_NAMESPACE?=${PROM_FAIL2BAN_EXP_IMAGE_REGISTRY_USER} | ||||||
| .PHONY: download | PROM_FAIL2BAN_EXP_IMAGE_NAME:=${EXECUTABLE} | ||||||
| download: | PROM_FAIL2BAN_EXP_IMAGE_VERSION?=latest | ||||||
| 	go mod download | PROM_FAIL2BAN_EXP_IMAGE_FULLY_QUALIFIED=${PROM_FAIL2BAN_EXP_IMAGE_REGISTRY_NAME}/${PROM_FAIL2BAN_EXP_IMAGE_NAMESPACE}/${PROM_FAIL2BAN_EXP_IMAGE_NAME}:${PROM_FAIL2BAN_EXP_IMAGE_VERSION} | ||||||
|  |  | ||||||
| # Update project dependencies | # BIN | ||||||
| .PHONY: update | # ============================================================================== | ||||||
| update: | prometheus-fail2ban-exporter: | ||||||
| 	go get -u | 	CGO_ENABLED=0 \ | ||||||
| 	go mod download | 	GOPROXY=$(shell go env GOPROXY) \ | ||||||
| 	go mod tidy | 		go build -ldflags "-X 'main.version=${VERSION}' -X 'main.date=$(shell date --rfc-3339=seconds )'" -o ${@} main.go | ||||||
|  |  | ||||||
| # Run project tests | # CLEAN | ||||||
| .PHONY: test | # ============================================================================== | ||||||
| test: download | PHONY+=clean | ||||||
| 	go test ./... -v -race | clean: | ||||||
|  | 	rm --force --recursive prometheus-fail2ban-exporter | ||||||
|  |  | ||||||
| # Look for "suspicious constructs" in source code | # TESTS | ||||||
| .PHONY: vet | # ============================================================================== | ||||||
| vet: download | PHONY+=test/unit | ||||||
| 	go vet ./... | test/unit: | ||||||
|  | 	CGO_ENABLED=0 \ | ||||||
|  | 	GOPROXY=$(shell go env GOPROXY) \ | ||||||
|  | 		go test -v -p 1 -coverprofile=coverage.txt -covermode=count -timeout 1200s ./... | ||||||
|  |  | ||||||
| # Format code | PHONY+=test/integration | ||||||
| .PHONY: fmt | test/integration: | ||||||
| fmt: download | 	CGO_ENABLED=0 \ | ||||||
| 	go mod tidy | 	GOPROXY=$(shell go env GOPROXY) \ | ||||||
| 	go fmt ./... | 		go test -v -p 1 -count=1 -timeout 1200s ./it/... | ||||||
|  |  | ||||||
| # Check for unformatted go code | PHONY+=test/coverage | ||||||
| .PHONY: check/fmt | test/coverage: test/unit | ||||||
| check/fmt: download | 	CGO_ENABLED=0 \ | ||||||
| 	test -z $(shell gofmt -l .) | 	GOPROXY=$(shell go env GOPROXY) \ | ||||||
|  | 		go tool cover -html=coverage.txt | ||||||
|  |  | ||||||
| # Build project | # GOLANGCI-LINT | ||||||
| .PHONY: build | # ============================================================================== | ||||||
| build: | PHONY+=golangci-lint | ||||||
| 	CGO_ENABLED=0 go build \ | golangci-lint: | ||||||
| 	-ldflags "\ | 	golangci-lint run --concurrency=$(shell nproc) | ||||||
| 	-X main.version=${shell git describe --tags} \ |  | ||||||
| 	-X main.commit=${shell git rev-parse HEAD} \ |  | ||||||
| 	-X main.date=${shell date --iso-8601=seconds} \ |  | ||||||
| 	-X main.builtBy=manual \ |  | ||||||
| 	" \ |  | ||||||
| 	-trimpath \ |  | ||||||
| 	-o ${EXECUTABLE} \ |  | ||||||
| 	exporter.go |  | ||||||
|  |  | ||||||
| # build container-image | # INSTALL | ||||||
| .PHONY: build/container-image | # ============================================================================== | ||||||
| build/container-image: | PHONY+=uninstall | ||||||
|  | install: prometheus-fail2ban-exporter | ||||||
|  | 	install --directory ${DESTDIR}/etc/bash_completion.d | ||||||
|  | 	./prometheus-fail2ban-exporter completion bash > ${DESTDIR}/etc/bash_completion.d/${EXECUTABLE} | ||||||
|  |  | ||||||
|  | 	install --directory ${DESTDIR}${PREFIX}/bin | ||||||
|  | 	install --mode 0755 ${EXECUTABLE} ${DESTDIR}${PREFIX}/bin/${EXECUTABLE} | ||||||
|  |  | ||||||
|  | 	install --directory ${DESTDIR}${PREFIX}/share/licenses/${EXECUTABLE} | ||||||
|  | 	install --mode 0644 LICENSE ${DESTDIR}${PREFIX}/share/licenses/${EXECUTABLE}/LICENSE | ||||||
|  |  | ||||||
|  | 	install --directory ${DESTDIR}${PREFIX}/systemd/system | ||||||
|  | 	install --mode 0644 systemd/systemd.service ${DESTDIR}${PREFIX}/systemd/system/${EXECUTABLE}.service | ||||||
|  | 	sed --in-place --regexp-extended 's/EXECUTABLE/${EXECUTABLE}/gm' ${DESTDIR}${PREFIX}/systemd/system/${EXECUTABLE}.service | ||||||
|  |  | ||||||
|  | # UNINSTALL | ||||||
|  | # ============================================================================== | ||||||
|  | PHONY+=uninstall | ||||||
|  | uninstall: | ||||||
|  | 	-rm --force --recursive \ | ||||||
|  | 		${DESTDIR}/etc/bash_completion.d/${EXECUTABLE} \ | ||||||
|  | 		${DESTDIR}${PREFIX}/bin/${EXECUTABLE} \ | ||||||
|  | 		${DESTDIR}${PREFIX}/share/licenses/${EXECUTABLE} | ||||||
|  |  | ||||||
|  | # BUILD CONTAINER IMAGE | ||||||
|  | # ============================================================================== | ||||||
|  | PHONY+=container-image/build | ||||||
|  | container-image/build: | ||||||
| 	${CONTAINER_RUNTIME} build \ | 	${CONTAINER_RUNTIME} build \ | ||||||
| 		--tag ${EXECUTABLE} \ | 		--build-arg VERSION=${VERSION} \ | ||||||
|  | 		--file Dockerfile \ | ||||||
|  | 		--no-cache \ | ||||||
|  | 		--pull \ | ||||||
|  | 		--tag ${PROM_FAIL2BAN_EXP_IMAGE_FULLY_QUALIFIED} \ | ||||||
| 		. | 		. | ||||||
|  |  | ||||||
| .PHONY: install | # DELETE CONTAINER IMAGE | ||||||
| install: build | # ============================================================================== | ||||||
| 	mkdir --parents ${DESTDIR}/usr/lib/systemd/system | PHONY:=container-image/delete | ||||||
| 	sed -e "s/EXECUTABLE/${EXECUTABLE}/gm" systemd/systemd.service > ${DESTDIR}/usr/lib/systemd/system/${EXECUTABLE}.service | container-image/delete: | ||||||
| 	chmod 0644 ${DESTDIR}/usr/lib/systemd/system/${EXECUTABLE}.service | 	- ${CONTAINER_RUNTIME} image rm ${PROM_FAIL2BAN_EXP_IMAGE_FULLY_QUALIFIED} | ||||||
|  |  | ||||||
| 	install -D --mode 0755 --target-directory ${DESTDIR}${PREFIX}/bin ${EXECUTABLE} | # PUSH CONTAINER IMAGE | ||||||
|  | # ============================================================================== | ||||||
|  | PHONY+=container-image/push | ||||||
|  | container-image/push: | ||||||
|  | 	echo ${PROM_FAIL2BAN_EXP_IMAGE_REGISTRY_PASSWORD} | ${CONTAINER_RUNTIME} login ${PROM_FAIL2BAN_EXP_IMAGE_REGISTRY_NAME} --username ${PROM_FAIL2BAN_EXP_IMAGE_REGISTRY_USER} --password-stdin | ||||||
|  | 	${CONTAINER_RUNTIME} push ${PROM_FAIL2BAN_EXP_IMAGE_FULLY_QUALIFIED} | ||||||
|  |  | ||||||
| # NOTE: Set restrict file permissions by default to protect optional basic auth credentials | # PHONY | ||||||
| 	install -D --mode 0600 env ${DESTDIR}/etc/conf.d/${EXECUTABLE} | # ============================================================================== | ||||||
|  | # Declare the contents of the PHONY variable as phony.  We keep that information | ||||||
| 	install -D --mode 0755 --target-directory ${DESTDIR}${PREFIX}/share/licenses/${EXECUTABLE} LICENSE | # in a variable so we can use it in if_changed. | ||||||
|  | .PHONY: ${PHONY} | ||||||
| .PHONY: uninstall |  | ||||||
| uninstall: |  | ||||||
| 	-rm --recursive --force \ |  | ||||||
| 		${DESTDIR}${PREFIX}/bin/${EXECUTABLE} \ |  | ||||||
| 		${DESTDIR}/usr/lib/systemd/system/${EXECUTABLE}.service \ |  | ||||||
| 		${DESTDIR}/etc/conf.d/${EXECUTABLE} \ |  | ||||||
| 		${DESTDIR}${PREFIX}/share/licenses/${EXECUTABLE}/LICENSE |  | ||||||
							
								
								
									
										68
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										68
									
								
								README.md
									
									
									
									
									
								
							| @@ -1,11 +1,7 @@ | |||||||
| # prometheus-fail2ban-exporter | # prometheus-fail2ban-exporter | ||||||
|  |  | ||||||
| [](https://drone.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter) | This is a fork of Hector's fail2ban [exporter](https://gitlab.com/hectorjsmith/fail2ban-prometheus-exporter). This fork | ||||||
|  | contains some changes to get the application running in a kubernetes cluster. | ||||||
| This is a fork of Hector's fail2ban |  | ||||||
| [exporter](https://gitlab.com/hectorjsmith/fail2ban-prometheus-exporter). This |  | ||||||
| fork contains some changes to get the application running in a kubernetes |  | ||||||
| cluster. |  | ||||||
|  |  | ||||||
| ## Table of Contents | ## Table of Contents | ||||||
|  |  | ||||||
| @@ -21,8 +17,8 @@ The exporter can be run as a standalone binary or a docker container. | |||||||
|  |  | ||||||
| ### 1.1. Standalone | ### 1.1. Standalone | ||||||
|  |  | ||||||
| The following command will start collecting metrics from the | The following command will start collecting metrics from the `/var/run/fail2ban/fail2ban.sock` file and expose them on | ||||||
| `/var/run/fail2ban/fail2ban.sock` file and expose them on port `9191`. | port `9191`. | ||||||
|  |  | ||||||
| ```bash | ```bash | ||||||
| $ fail2ban_exporter --collector.f2b.socket=/var/run/fail2ban/fail2ban.sock --web.listen-address=":9191" | $ fail2ban_exporter --collector.f2b.socket=/var/run/fail2ban/fail2ban.sock --web.listen-address=":9191" | ||||||
| @@ -35,12 +31,10 @@ $ fail2ban_exporter --collector.f2b.socket=/var/run/fail2ban/fail2ban.sock --web | |||||||
| ``` | ``` | ||||||
|  |  | ||||||
| Binary files for each release can be found on the | Binary files for each release can be found on the | ||||||
| [releases](https://gitlab.com/hectorjsmith/fail2ban-prometheus-exporter/-/releases) | [releases](https://gitlab.com/hectorjsmith/fail2ban-prometheus-exporter/-/releases) page. | ||||||
| page. |  | ||||||
|  |  | ||||||
| There is also an [example systemd service | There is also an [example systemd service file](/_examples/systemd/fail2ban_exporter.service) included in the | ||||||
| file](/_examples/systemd/fail2ban_exporter.service) included in the repository. | repository. This is a starting point to run the exporter as a service. | ||||||
| This is a starting point to run the exporter as a service. |  | ||||||
|  |  | ||||||
| ### 1.2. Docker | ### 1.2. Docker | ||||||
|  |  | ||||||
| @@ -68,14 +62,11 @@ services: | |||||||
| ``` | ``` | ||||||
|  |  | ||||||
| Use the `:latest` tag to get the latest stable release. See the [registry | Use the `:latest` tag to get the latest stable release. See the [registry | ||||||
| page](https://gitlab.com/hectorjsmith/fail2ban-prometheus-exporter/container_registry) | page](https://gitlab.com/hectorjsmith/fail2ban-prometheus-exporter/container_registry) for all available tags. | ||||||
| for all available tags. |  | ||||||
|  |  | ||||||
| **NOTE:** While it is possible to mount the `fail2ban.sock` file directly, it is | **NOTE:** While it is possible to mount the `fail2ban.sock` file directly, it is recommended to mount the parent folder | ||||||
| recommended to mount the parent folder instead. The `.sock` file is deleted by | instead. The `.sock` file is deleted by fail2ban on shutdown and re-created on startup and this causes problems for the | ||||||
| fail2ban on shutdown and re-created on startup and this causes problems for the | docker mount. See [this reply](https://gitlab.com/hectorjsmith/fail2ban-prometheus-exporter/-/issues/11#note_665003499) | ||||||
| docker mount. See [this |  | ||||||
| reply](https://gitlab.com/hectorjsmith/fail2ban-prometheus-exporter/-/issues/11#note_665003499) |  | ||||||
| for more details. | for more details. | ||||||
|  |  | ||||||
| ## 2. Metrics | ## 2. Metrics | ||||||
| @@ -117,20 +108,18 @@ Status for the jail: sshd | |||||||
|  |  | ||||||
| ### 2.1. Grafana | ### 2.1. Grafana | ||||||
|  |  | ||||||
| The metrics exported by this tool are compatible with Prometheus and Grafana. A | The metrics exported by this tool are compatible with Prometheus and Grafana. A sample grafana dashboard can be found in | ||||||
| sample grafana dashboard can be found in the | the [grafana.json](/_examples/grafana/dashboard.json) file. Just import the contents of this file into a new Grafana | ||||||
| [grafana.json](/_examples/grafana/dashboard.json) file. Just import the contents | dashboard to get started. | ||||||
| of this file into a new Grafana dashboard to get started. |  | ||||||
|  |  | ||||||
| The dashboard supports displaying data from multiple exporters. Use the | The dashboard supports displaying data from multiple exporters. Use the `instance` dashboard variable to select which | ||||||
| `instance` dashboard variable to select which ones to display. | ones to display. | ||||||
|  |  | ||||||
| *(Sample dashboard is compatible with Grafana `9.1.8` and above)* | *(Sample dashboard is compatible with Grafana `9.1.8` and above)* | ||||||
|  |  | ||||||
| ## 3. Configuration | ## 3. Configuration | ||||||
|  |  | ||||||
| The exporter is configured with CLI flags and environment variables. | The exporter is configured with CLI flags and environment variables. There are no configuration files. | ||||||
| There are no configuration files. |  | ||||||
|  |  | ||||||
| ### CLI flags | ### CLI flags | ||||||
|  |  | ||||||
| @@ -164,8 +153,7 @@ Flags: | |||||||
|  |  | ||||||
| ### Environment variables | ### Environment variables | ||||||
|  |  | ||||||
| Each environment variable corresponds to a CLI flag. | Each environment variable corresponds to a CLI flag. If both are specified, the CLI flag takes precedence. | ||||||
| If both are specified, the CLI flag takes precedence. |  | ||||||
|  |  | ||||||
| | Environment variable            | Corresponding CLI flag                            | | | Environment variable            | Corresponding CLI flag                            | | ||||||
| |---------------------------------|---------------------------------------------------| | |---------------------------------|---------------------------------------------------| | ||||||
| @@ -185,23 +173,18 @@ Building from source has the following dependencies: | |||||||
|  |  | ||||||
| From there, simply run `make build` | From there, simply run `make build` | ||||||
|  |  | ||||||
| This will download the necessary dependencies and build a `fail2ban_exporter` | This will download the necessary dependencies and build a `fail2ban_exporter` binary in the root of the project. | ||||||
| binary in the root of the project. |  | ||||||
|  |  | ||||||
| ## 5. Textfile metrics | ## 5. Textfile metrics | ||||||
|  |  | ||||||
| For more flexibility the exporter also allows exporting metrics collected from a | For more flexibility the exporter also allows exporting metrics collected from a text file. | ||||||
| text file. |  | ||||||
|  |  | ||||||
| To enable textfile metrics provide the directory to read files from with the | To enable textfile metrics provide the directory to read files from with the `--collector.textfile.directory` flag. | ||||||
| `--collector.textfile.directory` flag. |  | ||||||
|  |  | ||||||
| Metrics collected from these files will be exposed directly alongside the other | Metrics collected from these files will be exposed directly alongside the other metrics without any additional | ||||||
| metrics without any additional processing. This means that it is the | processing. This means that it is the responsibility of the file creator to ensure the format is correct. | ||||||
| responsibility of the file creator to ensure the format is correct. |  | ||||||
|  |  | ||||||
| By exporting textfile metrics an extra metric is also exported with an error | By exporting textfile metrics an extra metric is also exported with an error count for each file: | ||||||
| count for each file: |  | ||||||
|  |  | ||||||
| ```text | ```text | ||||||
| # HELP textfile_error Checks for errors while reading text files | # HELP textfile_error Checks for errors while reading text files | ||||||
| @@ -213,8 +196,7 @@ textfile_error{path="file.prom"} 0 | |||||||
|  |  | ||||||
| ### Running in Docker | ### Running in Docker | ||||||
|  |  | ||||||
| To collect textfile metrics inside a docker container, a couple of things need | To collect textfile metrics inside a docker container, a couple of things need to be done: | ||||||
| to be done: |  | ||||||
|  |  | ||||||
| 1. Mount the folder with the metrics files | 1. Mount the folder with the metrics files | ||||||
| 2. Set the `F2B_COLLECTOR_TEXT_PATH` environment variable | 2. Set the `F2B_COLLECTOR_TEXT_PATH` environment variable | ||||||
|   | |||||||
| @@ -68,7 +68,7 @@ | |||||||
|     { |     { | ||||||
|       "datasource": { |       "datasource": { | ||||||
|         "type": "prometheus", |         "type": "prometheus", | ||||||
|         "uid": "${DS_PROMETHEUS}" |         "uid": "prometheus" | ||||||
|       }, |       }, | ||||||
|       "description": "", |       "description": "", | ||||||
|       "fieldConfig": { |       "fieldConfig": { | ||||||
| @@ -129,7 +129,7 @@ | |||||||
|         { |         { | ||||||
|           "datasource": { |           "datasource": { | ||||||
|             "type": "prometheus", |             "type": "prometheus", | ||||||
|             "uid": "${DS_PROMETHEUS}" |             "uid": "prometheus" | ||||||
|           }, |           }, | ||||||
|           "editorMode": "code", |           "editorMode": "code", | ||||||
|           "exemplar": false, |           "exemplar": false, | ||||||
| @@ -143,7 +143,7 @@ | |||||||
|         { |         { | ||||||
|           "datasource": { |           "datasource": { | ||||||
|             "type": "prometheus", |             "type": "prometheus", | ||||||
|             "uid": "${DS_PROMETHEUS}" |             "uid": "prometheus" | ||||||
|           }, |           }, | ||||||
|           "editorMode": "code", |           "editorMode": "code", | ||||||
|           "exemplar": false, |           "exemplar": false, | ||||||
| @@ -158,7 +158,7 @@ | |||||||
|         { |         { | ||||||
|           "datasource": { |           "datasource": { | ||||||
|             "type": "prometheus", |             "type": "prometheus", | ||||||
|             "uid": "${DS_PROMETHEUS}" |             "uid": "prometheus" | ||||||
|           }, |           }, | ||||||
|           "editorMode": "code", |           "editorMode": "code", | ||||||
|           "exemplar": false, |           "exemplar": false, | ||||||
| @@ -230,7 +230,7 @@ | |||||||
|     { |     { | ||||||
|       "datasource": { |       "datasource": { | ||||||
|         "type": "prometheus", |         "type": "prometheus", | ||||||
|         "uid": "${DS_PROMETHEUS}" |         "uid": "prometheus" | ||||||
|       }, |       }, | ||||||
|       "description": "", |       "description": "", | ||||||
|       "fieldConfig": { |       "fieldConfig": { | ||||||
| @@ -309,7 +309,7 @@ | |||||||
|         { |         { | ||||||
|           "datasource": { |           "datasource": { | ||||||
|             "type": "prometheus", |             "type": "prometheus", | ||||||
|             "uid": "${DS_PROMETHEUS}" |             "uid": "prometheus" | ||||||
|           }, |           }, | ||||||
|           "editorMode": "code", |           "editorMode": "code", | ||||||
|           "exemplar": true, |           "exemplar": true, | ||||||
| @@ -328,7 +328,7 @@ | |||||||
|     { |     { | ||||||
|       "datasource": { |       "datasource": { | ||||||
|         "type": "prometheus", |         "type": "prometheus", | ||||||
|         "uid": "${DS_PROMETHEUS}" |         "uid": "prometheus" | ||||||
|       }, |       }, | ||||||
|       "description": "", |       "description": "", | ||||||
|       "fieldConfig": { |       "fieldConfig": { | ||||||
| @@ -407,7 +407,7 @@ | |||||||
|         { |         { | ||||||
|           "datasource": { |           "datasource": { | ||||||
|             "type": "prometheus", |             "type": "prometheus", | ||||||
|             "uid": "${DS_PROMETHEUS}" |             "uid": "prometheus" | ||||||
|           }, |           }, | ||||||
|           "editorMode": "code", |           "editorMode": "code", | ||||||
|           "exemplar": true, |           "exemplar": true, | ||||||
| @@ -425,7 +425,7 @@ | |||||||
|     { |     { | ||||||
|       "datasource": { |       "datasource": { | ||||||
|         "type": "prometheus", |         "type": "prometheus", | ||||||
|         "uid": "${DS_PROMETHEUS}" |         "uid": "prometheus" | ||||||
|       }, |       }, | ||||||
|       "description": "", |       "description": "", | ||||||
|       "fieldConfig": { |       "fieldConfig": { | ||||||
| @@ -504,7 +504,7 @@ | |||||||
|         { |         { | ||||||
|           "datasource": { |           "datasource": { | ||||||
|             "type": "prometheus", |             "type": "prometheus", | ||||||
|             "uid": "${DS_PROMETHEUS}" |             "uid": "prometheus" | ||||||
|           }, |           }, | ||||||
|           "editorMode": "code", |           "editorMode": "code", | ||||||
|           "exemplar": true, |           "exemplar": true, | ||||||
| @@ -522,7 +522,7 @@ | |||||||
|     { |     { | ||||||
|       "datasource": { |       "datasource": { | ||||||
|         "type": "prometheus", |         "type": "prometheus", | ||||||
|         "uid": "${DS_PROMETHEUS}" |         "uid": "prometheus" | ||||||
|       }, |       }, | ||||||
|       "description": "", |       "description": "", | ||||||
|       "fieldConfig": { |       "fieldConfig": { | ||||||
| @@ -601,7 +601,7 @@ | |||||||
|         { |         { | ||||||
|           "datasource": { |           "datasource": { | ||||||
|             "type": "prometheus", |             "type": "prometheus", | ||||||
|             "uid": "${DS_PROMETHEUS}" |             "uid": "prometheus" | ||||||
|           }, |           }, | ||||||
|           "editorMode": "code", |           "editorMode": "code", | ||||||
|           "exemplar": true, |           "exemplar": true, | ||||||
| @@ -619,7 +619,7 @@ | |||||||
|     { |     { | ||||||
|       "datasource": { |       "datasource": { | ||||||
|         "type": "prometheus", |         "type": "prometheus", | ||||||
|         "uid": "${DS_PROMETHEUS}" |         "uid": "prometheus" | ||||||
|       }, |       }, | ||||||
|       "description": "", |       "description": "", | ||||||
|       "fieldConfig": { |       "fieldConfig": { | ||||||
| @@ -699,7 +699,7 @@ | |||||||
|         { |         { | ||||||
|           "datasource": { |           "datasource": { | ||||||
|             "type": "prometheus", |             "type": "prometheus", | ||||||
|             "uid": "${DS_PROMETHEUS}" |             "uid": "prometheus" | ||||||
|           }, |           }, | ||||||
|           "editorMode": "code", |           "editorMode": "code", | ||||||
|           "exemplar": true, |           "exemplar": true, | ||||||
| @@ -717,7 +717,7 @@ | |||||||
|     { |     { | ||||||
|       "datasource": { |       "datasource": { | ||||||
|         "type": "prometheus", |         "type": "prometheus", | ||||||
|         "uid": "${DS_PROMETHEUS}" |         "uid": "prometheus" | ||||||
|       }, |       }, | ||||||
|       "description": "", |       "description": "", | ||||||
|       "fieldConfig": { |       "fieldConfig": { | ||||||
| @@ -797,7 +797,7 @@ | |||||||
|         { |         { | ||||||
|           "datasource": { |           "datasource": { | ||||||
|             "type": "prometheus", |             "type": "prometheus", | ||||||
|             "uid": "${DS_PROMETHEUS}" |             "uid": "prometheus" | ||||||
|           }, |           }, | ||||||
|           "editorMode": "code", |           "editorMode": "code", | ||||||
|           "exemplar": true, |           "exemplar": true, | ||||||
| @@ -842,7 +842,7 @@ | |||||||
|         "current": {}, |         "current": {}, | ||||||
|         "datasource": { |         "datasource": { | ||||||
|           "type": "prometheus", |           "type": "prometheus", | ||||||
|           "uid": "${DS_PROMETHEUS}" |           "uid": "prometheus" | ||||||
|         }, |         }, | ||||||
|         "definition": "f2b_up", |         "definition": "f2b_up", | ||||||
|         "description": "Select which instance(s) to show", |         "description": "Select which instance(s) to show", | ||||||
|   | |||||||
| @@ -1,7 +1,9 @@ | |||||||
| # Systemd | # Systemd | ||||||
|  |  | ||||||
| The `.service` file in this directory should be copied to the `/etc/systemd/system/` folder. | The `.service` file in this directory should be copied to the `/etc/systemd/system/` folder. | ||||||
|  |  | ||||||
| - It expects the binary file to be installed at `/usr/sbin/fail2ban_exporter`. | - It expects the binary file to be installed at `/usr/sbin/fail2ban_exporter`. | ||||||
| - It expects a user named `fail2ban_exporter` to exist. This user should not have a shell or any special privileges aside from read-access to the fail2ban socket file. | - It expects a user named `fail2ban_exporter` to exist. This user should not have a shell or any special privileges | ||||||
|  |   aside from read-access to the fail2ban socket file. | ||||||
|  |  | ||||||
| The `ExecStart` line can be modified to add any custom CLI flags. | The `ExecStart` line can be modified to add any custom CLI flags. | ||||||
|   | |||||||
| @@ -74,7 +74,7 @@ func validateFlags(cliCtx *kong.Context) { | |||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	if !flagsValid { | 	if !flagsValid { | ||||||
| 		cliCtx.PrintUsage(false) | 		_ = cliCtx.PrintUsage(false) | ||||||
| 		fmt.Println() | 		fmt.Println() | ||||||
| 		for i := 0; i < len(messages); i++ { | 		for i := 0; i < len(messages); i++ { | ||||||
| 			fmt.Println(messages[i]) | 			fmt.Println(messages[i]) | ||||||
|   | |||||||
| @@ -50,7 +50,7 @@ func (c *Collector) Collect(ch chan<- prometheus.Metric) { | |||||||
| 			os.Exit(1) | 			os.Exit(1) | ||||||
| 		} | 		} | ||||||
| 	} else { | 	} else { | ||||||
| 		defer s.Close() | 		defer func() { _ = s.Close() }() | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	c.collectServerUpMetric(ch, s) | 	c.collectServerUpMetric(ch, s) | ||||||
|   | |||||||
							
								
								
									
										29
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										29
									
								
								go.mod
									
									
									
									
									
								
							| @@ -1,22 +1,25 @@ | |||||||
| module git.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter | module git.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter | ||||||
|  |  | ||||||
| go 1.20 | go 1.23.0 | ||||||
|  |  | ||||||
|  | toolchain go1.24.6 | ||||||
|  |  | ||||||
| require ( | require ( | ||||||
| 	github.com/alecthomas/kong v0.8.0 | 	github.com/alecthomas/kong v1.12.1 | ||||||
| 	github.com/kisielk/og-rek v1.2.0 | 	github.com/kisielk/og-rek v1.3.0 | ||||||
| 	github.com/nlpodyssey/gopickle v0.2.0 | 	github.com/nlpodyssey/gopickle v0.3.0 | ||||||
| 	github.com/prometheus/client_golang v1.16.0 | 	github.com/prometheus/client_golang v1.23.0 | ||||||
| ) | ) | ||||||
|  |  | ||||||
| require ( | require ( | ||||||
|  | 	github.com/aristanetworks/gomap v0.0.0-20240919214256-2b26376628e1 // indirect | ||||||
| 	github.com/beorn7/perks v1.0.1 // indirect | 	github.com/beorn7/perks v1.0.1 // indirect | ||||||
| 	github.com/cespare/xxhash/v2 v2.2.0 // indirect | 	github.com/cespare/xxhash/v2 v2.3.0 // indirect | ||||||
| 	github.com/golang/protobuf v1.5.3 // indirect | 	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect | ||||||
| 	github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect | 	github.com/prometheus/client_model v0.6.2 // indirect | ||||||
| 	github.com/prometheus/client_model v0.4.0 // indirect | 	github.com/prometheus/common v0.65.0 // indirect | ||||||
| 	github.com/prometheus/common v0.44.0 // indirect | 	github.com/prometheus/procfs v0.16.1 // indirect | ||||||
| 	github.com/prometheus/procfs v0.11.0 // indirect | 	golang.org/x/sys v0.33.0 // indirect | ||||||
| 	golang.org/x/sys v0.9.0 // indirect | 	golang.org/x/text v0.25.0 // indirect | ||||||
| 	google.golang.org/protobuf v1.31.0 // indirect | 	google.golang.org/protobuf v1.36.6 // indirect | ||||||
| ) | ) | ||||||
|   | |||||||
							
								
								
									
										80
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										80
									
								
								go.sum
									
									
									
									
									
								
							| @@ -1,38 +1,50 @@ | |||||||
| github.com/alecthomas/assert/v2 v2.1.0 h1:tbredtNcQnoSd3QBhQWI7QZ3XHOVkw1Moklp2ojoH/0= | github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= | ||||||
| github.com/alecthomas/kong v0.8.0 h1:ryDCzutfIqJPnNn0omnrgHLbAggDQM2VWHikE1xqK7s= | github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= | ||||||
| github.com/alecthomas/kong v0.8.0/go.mod h1:n1iCIO2xS46oE8ZfYCNDqdR0b0wZNrXAIAqro/2132U= | github.com/alecthomas/kong v1.12.1 h1:iq6aMJDcFYP9uFrLdsiZQ2ZMmcshduyGv4Pek0MQPW0= | ||||||
| github.com/alecthomas/repr v0.1.0 h1:ENn2e1+J3k09gyj2shc0dHr/yjaWSHRlrJ4DPMevDqE= | github.com/alecthomas/kong v1.12.1/go.mod h1:p2vqieVMeTAnaC83txKtXe8FLke2X07aruPWXyMPQrU= | ||||||
|  | github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc= | ||||||
|  | github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= | ||||||
|  | github.com/aristanetworks/gomap v0.0.0-20240919214256-2b26376628e1 h1:D5mrqTj0YyG8O2A2SUCuPc2Qf68vyTBaWChSBAJtYJk= | ||||||
|  | github.com/aristanetworks/gomap v0.0.0-20240919214256-2b26376628e1/go.mod h1:v/+Hpx3wuPnPWEwT1unZJsNUe4Pu/y1Y+qAf+xj0Ykg= | ||||||
| github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= | github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= | ||||||
| github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= | github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= | ||||||
| github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= | github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= | ||||||
| github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= | github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= | ||||||
| github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= | github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= | ||||||
| github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||||
| github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= | github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||||
| github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= | github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||||||
| github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= |  | ||||||
| github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= |  | ||||||
| github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= |  | ||||||
| github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= | github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= | ||||||
| github.com/kisielk/og-rek v1.2.0 h1:CTvDIin+YnetsSQAYbe+QNAxXU3B50C5hseEz8xEoJw= | github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= | ||||||
| github.com/kisielk/og-rek v1.2.0/go.mod h1:6ihsOSzSAxR/65S3Bn9zNihoEqRquhDQZ2c6I2+MG3c= | github.com/kisielk/og-rek v1.3.0 h1:lTXdQXqFETZKA//FWH4RBNAuiJ/dofxIwHAidoUZoMk= | ||||||
| github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= | github.com/kisielk/og-rek v1.3.0/go.mod h1:4at7oxyfBTDilURhNCf7irHWtosJlJl9uyqUqAkrP4w= | ||||||
| github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= | github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= | ||||||
| github.com/nlpodyssey/gopickle v0.2.0 h1:4naD2DVylYJupQLbCQFdwo6yiXEmPyp+0xf5MVlrBDY= | github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= | ||||||
| github.com/nlpodyssey/gopickle v0.2.0/go.mod h1:YIUwjJ2O7+vnBsxUN+MHAAI3N+adqEGiw+nDpwW95bY= | github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= | ||||||
| github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8= | github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= | ||||||
| github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc= | github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= | ||||||
| github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY= | github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= | ||||||
| github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= | github.com/nlpodyssey/gopickle v0.3.0 h1:BLUE5gxFLyyNOPzlXxt6GoHEMMxD0qhsE4p0CIQyoLw= | ||||||
| github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= | github.com/nlpodyssey/gopickle v0.3.0/go.mod h1:f070HJ/yR+eLi5WmM1OXJEGaTpuJEUiib19olXgYha0= | ||||||
| github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= | github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||||
| github.com/prometheus/procfs v0.11.0 h1:5EAgkfkMl659uZPbe9AS2N68a7Cc1TJbPEuGzFuRbyk= | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||||
| github.com/prometheus/procfs v0.11.0/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM= | github.com/prometheus/client_golang v1.23.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc= | ||||||
| golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | github.com/prometheus/client_golang v1.23.0/go.mod h1:i/o0R9ByOnHX0McrTMTyhYvKE4haaf2mW08I+jGAjEE= | ||||||
| golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s= | github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= | ||||||
| golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= | ||||||
| golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= | ||||||
| google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= | github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= | ||||||
| google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= | github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= | ||||||
| google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= | github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= | ||||||
| google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= | github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= | ||||||
|  | github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= | ||||||
|  | go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= | ||||||
|  | go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= | ||||||
|  | golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= | ||||||
|  | golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= | ||||||
|  | golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= | ||||||
|  | golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= | ||||||
|  | google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= | ||||||
|  | google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= | ||||||
|  | gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= | ||||||
|  | gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||||||
|   | |||||||
| @@ -16,14 +16,12 @@ import ( | |||||||
| 
 | 
 | ||||||
| var ( | var ( | ||||||
| 	version = "dev" | 	version = "dev" | ||||||
| 	commit  = "none" |  | ||||||
| 	date    = "unknown" | 	date    = "unknown" | ||||||
| 	builtBy = "unknown" |  | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| func printAppVersion() { | func printAppVersion() { | ||||||
| 	fmt.Println(version) | 	fmt.Printf("Version:    %s\n", version) | ||||||
| 	fmt.Printf("    build date:  %s\r\n    commit hash: %s\r\n    built by:    %s\r\n", date, commit, builtBy) | 	fmt.Printf("Build date: %s\n", date) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func main() { | func main() { | ||||||
| @@ -1,26 +0,0 @@ | |||||||
| image: git.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}} |  | ||||||
| {{#if build.tags}} |  | ||||||
| tags: |  | ||||||
| {{#each build.tags}} |  | ||||||
|   - {{this}} |  | ||||||
| {{/each}} |  | ||||||
|   - "latest" |  | ||||||
| {{/if}} |  | ||||||
| manifests: |  | ||||||
|   - |  | ||||||
|     image: git.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}}-amd64 |  | ||||||
|     platform: |  | ||||||
|       architecture: amd64 |  | ||||||
|       os: linux |  | ||||||
|   - |  | ||||||
|     image: git.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}}-arm-v7 |  | ||||||
|     platform: |  | ||||||
|       architecture: arm |  | ||||||
|       os: linux |  | ||||||
|       variant: v7 |  | ||||||
|   - |  | ||||||
|     image: git.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}}-arm64-v8 |  | ||||||
|     platform: |  | ||||||
|       architecture: arm64 |  | ||||||
|       os: linux |  | ||||||
|       variant: v8 |  | ||||||
| @@ -1,38 +1,10 @@ | |||||||
| { | { | ||||||
|   "$schema": "https://docs.renovatebot.com/renovate-schema.json", |   "$schema": "https://docs.renovatebot.com/renovate-schema.json", | ||||||
|   "assigneesFromCodeOwners": true, |   "extends": [ | ||||||
|   "automergeStrategy": "merge-commit", |     "local>volker.raschek/renovate-config:default#master", | ||||||
|   "automergeType": "pr", |     "local>volker.raschek/renovate-config:container#master", | ||||||
|   "labels": [ "renovate" ], |     "local>volker.raschek/renovate-config:actions#master", | ||||||
|   "packageRules": [ |     "local>volker.raschek/renovate-config:golang#master", | ||||||
|     { |     "local>volker.raschek/renovate-config:regexp#master" | ||||||
|       "description": "Automatically update minor and patch versions of used drone-ci images", |   ] | ||||||
|       "addLabels": [ "renovate/droneci", "renovate/automerge" ], |  | ||||||
|       "excludePackagePatterns": [ "plugins/docker" ], |  | ||||||
|       "automerge": true, |  | ||||||
|       "matchManagers": "droneci", |  | ||||||
|       "matchUpdateTypes": [ "minor", "patch"] |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|       "description": "Automatically update minor and patch versions of go modules", |  | ||||||
|       "addLabels": [ "renovate/gomod", "renovate/automerge" ], |  | ||||||
|       "automerge": true, |  | ||||||
|       "matchBaseBranches": [ "master" ], |  | ||||||
|       "matchManagers": [ "gomod" ], |  | ||||||
|       "matchUpdateTypes": [ "minor", "patch" ] |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|       "description": "Prepare MR for major update minor of go modules", |  | ||||||
|       "addLabels": [ "renovate/gomod" ], |  | ||||||
|       "automerge": false, |  | ||||||
|       "matchBaseBranches": [ "master" ], |  | ||||||
|       "matchManagers": [ "gomod" ], |  | ||||||
|       "matchUpdateTypes": [ "major" ] |  | ||||||
|     } |  | ||||||
|   ], |  | ||||||
|   "postUpdateOptions": [ |  | ||||||
|     "gomodTidy" |  | ||||||
|   ], |  | ||||||
|   "rebaseLabel": "renovate/rebase", |  | ||||||
|   "rebaseWhen": "behind-base-branch" |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -4,6 +4,7 @@ import ( | |||||||
| 	"bufio" | 	"bufio" | ||||||
| 	"bytes" | 	"bytes" | ||||||
| 	"fmt" | 	"fmt" | ||||||
|  |  | ||||||
| 	"github.com/nlpodyssey/gopickle/pickle" | 	"github.com/nlpodyssey/gopickle/pickle" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| @@ -62,7 +63,7 @@ func (s *Fail2BanSocket) read() (interface{}, error) { | |||||||
| 		if (module == "builtins" || module == "__builtin__") && name == "str" { | 		if (module == "builtins" || module == "__builtin__") && name == "str" { | ||||||
| 			return &Py_builtins_str{}, nil | 			return &Py_builtins_str{}, nil | ||||||
| 		} | 		} | ||||||
| 		return nil, fmt.Errorf("class not found: " + module + " : " + name) | 		return nil, fmt.Errorf("class not found: %s: %s", module, name) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	return unpickler.Load() | 	return unpickler.Load() | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user