You've already forked prometheus-fail2ban-exporter
							
							Compare commits
	
		
			113 Commits
		
	
	
		
			v0.1.0
			...
			5ca0f1d79c
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 5ca0f1d79c | |||
| 95f3b6b56f | |||
| 7d95e6407e | |||
| 6f5dbbba3f | |||
| 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 | 
							
								
								
									
										1
									
								
								.dockerignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.dockerignore
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| prometheus-fail2ban-exporter | ||||
							
								
								
									
										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 | ||||
| @@ -1,15 +1,13 @@ | ||||
| # EditorConfig is awesome: https://EditorConfig.org | ||||
|  | ||||
| # top-most EditorConfig file | ||||
| # Editor configuration, see http://editorconfig.org | ||||
| root = true | ||||
|  | ||||
| [*] | ||||
| indent_style = space | ||||
| indent_size = 2 | ||||
| end_of_line = lf | ||||
| charset = utf-8 | ||||
| trim_trailing_whitespace = true | ||||
| end_of_line = lf | ||||
| indent_size = 2 | ||||
| indent_style = space | ||||
| insert_final_newline = false | ||||
| trim_trailing_whitespace = true | ||||
|  | ||||
| [Makefile] | ||||
| [{Makefile,*.go}] | ||||
| indent_style = tab | ||||
							
								
								
									
										29
									
								
								.gitea/workflows/golang-linters.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								.gitea/workflows/golang-linters.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,29 @@ | ||||
| name: "Lint Golang files" | ||||
|  | ||||
| on: | ||||
|   pull_request: | ||||
|     types: [ "opened", "reopened", "synchronize" ] | ||||
|   push: | ||||
|     branches: [ '**' ] | ||||
|     tags-ignore: [ '**' ] | ||||
|   workflow_dispatch: {} | ||||
|  | ||||
| permissions: | ||||
|   contents: read | ||||
|  | ||||
| jobs: | ||||
|   golangci: | ||||
|     name: "Run golang CI linter" | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     strategy: | ||||
|       matrix: | ||||
|         go: [ stable ] | ||||
|         os: [ ubuntu-latest-amd64, ubuntu-latest-arm64 ] | ||||
|     steps: | ||||
|     - uses: actions/checkout@v4.3.0 | ||||
|     - uses: actions/setup-go@v5.5.0 | ||||
|       with: | ||||
|         go-version: ${{ matrix.go }} | ||||
|     - uses: golangci/golangci-lint-action@v8.0.0 | ||||
|       with: | ||||
| v2.3.1 # renovate: datasource=github-releases depName=golangci/golangci-lint | ||||
							
								
								
									
										42
									
								
								.gitea/workflows/golang-tests.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								.gitea/workflows/golang-tests.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,42 @@ | ||||
| name: "Run Golang tests" | ||||
|  | ||||
| on: | ||||
|   pull_request: | ||||
|     types: [ "opened", "reopened", "synchronize" ] | ||||
|   push: | ||||
|     branches: [ '**' ] | ||||
|     tags-ignore: [ '**' ] | ||||
|   workflow_dispatch: {} | ||||
|  | ||||
| jobs: | ||||
|   # integration-test: | ||||
|   #   name: "Run integration tests" | ||||
|   #   runs-on: ${{ matrix.os }} | ||||
|   #   strategy: | ||||
|   #     matrix: | ||||
|   #       go: [ stable ] | ||||
|   #       os: [ ubuntu-latest-amd64, ubuntu-latest-arm64 ] | ||||
|   #   steps: | ||||
|   #   - uses: actions/checkout@v4.3.0 | ||||
|   #   - uses: actions/setup-go@v5.5.0 | ||||
|   #     with: | ||||
|   #       go-version: ${{ matrix.go }} | ||||
|   #   - env: | ||||
|   #       GOPROXY: ${{ vars.GOPROXY }} | ||||
|   #     run: make test/integration | ||||
|  | ||||
|   unit-test: | ||||
|     name: "Run unit tests" | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     strategy: | ||||
|       matrix: | ||||
|         go: [ stable ] | ||||
|         os: [ ubuntu-latest-amd64, ubuntu-latest-arm64 ] | ||||
|     steps: | ||||
|     - uses: actions/checkout@v4.3.0 | ||||
|     - uses: actions/setup-go@v5.5.0 | ||||
|       with: | ||||
|         go-version: ${{ matrix.go }} | ||||
|     - env: | ||||
|         GOPROXY: ${{ vars.GOPROXY }} | ||||
|       run: make test/unit | ||||
							
								
								
									
										19
									
								
								.gitea/workflows/markdown-linters.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								.gitea/workflows/markdown-linters.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | ||||
| name: "Lint Markdown files" | ||||
|  | ||||
| on: | ||||
|   pull_request: | ||||
|     types: [ "opened", "reopened", "synchronize" ] | ||||
|   push: | ||||
|     branches: [ '*' ] | ||||
|     tags-ignore: [ '*' ] | ||||
|   workflow_dispatch: {} | ||||
|  | ||||
| jobs: | ||||
|   markdown-lint: | ||||
|     name: "Run markdown linter" | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - uses: actions/checkout@v4.3.0 | ||||
|     - uses: DavidAnson/markdownlint-cli2-action@v20.0.0 | ||||
|       with: | ||||
|         globs: '**/*.md' | ||||
							
								
								
									
										53
									
								
								.gitea/workflows/release.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								.gitea/workflows/release.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,53 @@ | ||||
| name: "Release" | ||||
|  | ||||
| on: | ||||
|   push: | ||||
|     tags: [ '**' ] | ||||
|  | ||||
| permissions: | ||||
|   contents: write | ||||
|  | ||||
| jobs: | ||||
|   release: | ||||
|     name: "Release application" | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - uses: actions/checkout@v4.3.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.11.2 # renovate: datasource=github-releases depName=goreleaser/goreleaser | ||||
|         args: release --clean | ||||
|  | ||||
|   sync-to-hub-docker-io: | ||||
|     name: "Upload Images to 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@v4.3.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 | ||||
| coverage.txt | ||||
| dist | ||||
							
								
								
									
										13
									
								
								.golangci.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								.golangci.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| version: "2" | ||||
| linters: | ||||
|   default: standard | ||||
|   enable: | ||||
|   - errname | ||||
|   - gosec | ||||
|  | ||||
|   exclusions: | ||||
|     rules: [] | ||||
|     warn-unused: true | ||||
|  | ||||
| run: | ||||
|   tests: true | ||||
							
								
								
									
										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: | ||||
|   # Number of characters | ||||
|   line_length: 80 | ||||
|   line_length: 120 | ||||
|   # Number of characters for headings | ||||
|   heading_line_length: 80 | ||||
|   heading_line_length: 120 | ||||
|   # Number of characters for code blocks | ||||
|   code_block_line_length: 80 | ||||
|   code_block_line_length: 120 | ||||
|   # Include code blocks | ||||
|   code_blocks: false | ||||
|   # Include tables | ||||
|   tables: false | ||||
|   # Include headings | ||||
|   headings: true | ||||
|   # Include headings | ||||
|   headers: true | ||||
|   # Strict length checking | ||||
|   strict: false | ||||
|   # Stern length checking | ||||
| @@ -70,11 +68,6 @@ MD022: | ||||
|   # Blank lines below heading | ||||
|   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: | ||||
|   # 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 | ||||
| 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 | ||||
| COPY prometheus-fail2ban-exporter-* /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?= | ||||
| 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) | ||||
|  | ||||
| # List make commands | ||||
| .PHONY: ls | ||||
| ls: | ||||
| 	cat Makefile | grep "^[a-zA-Z#].*" | cut -d ":" -f 1 | sed s';#;\n#;'g | ||||
| # PROM_FAIL2BAN_EXP_IMAGE_REGISTRY_NAME | ||||
| # Defines the name of the new container to be built using several variables. | ||||
| PROM_FAIL2BAN_EXP_IMAGE_REGISTRY_NAME:=git.cryptic.systems | ||||
| PROM_FAIL2BAN_EXP_IMAGE_REGISTRY_USER:=volker.raschek | ||||
|  | ||||
| # Download dependencies | ||||
| .PHONY: download | ||||
| download: | ||||
| 	go mod download | ||||
| PROM_FAIL2BAN_EXP_IMAGE_NAMESPACE?=${PROM_FAIL2BAN_EXP_IMAGE_REGISTRY_USER} | ||||
| PROM_FAIL2BAN_EXP_IMAGE_NAME:=${EXECUTABLE} | ||||
| PROM_FAIL2BAN_EXP_IMAGE_VERSION?=latest | ||||
| 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 | ||||
| .PHONY: update | ||||
| update: | ||||
| 	go get -u | ||||
| 	go mod download | ||||
| 	go mod tidy | ||||
| # BIN | ||||
| # ============================================================================== | ||||
| prometheus-fail2ban-exporter: | ||||
| 	CGO_ENABLED=0 \ | ||||
| 	GOPROXY=$(shell go env GOPROXY) \ | ||||
| 		go build -ldflags "-X 'main.version=${VERSION}' -X 'main.date=$(shell date --rfc-3339=seconds )'" -o ${@} main.go | ||||
|  | ||||
| # Run project tests | ||||
| .PHONY: test | ||||
| test: download | ||||
| 	go test ./... -v -race | ||||
| # CLEAN | ||||
| # ============================================================================== | ||||
| PHONY+=clean | ||||
| clean: | ||||
| 	rm --force --recursive prometheus-fail2ban-exporter | ||||
|  | ||||
| # Look for "suspicious constructs" in source code | ||||
| .PHONY: vet | ||||
| vet: download | ||||
| 	go vet ./... | ||||
| # TESTS | ||||
| # ============================================================================== | ||||
| PHONY+=test/unit | ||||
| 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: fmt | ||||
| fmt: download | ||||
| 	go mod tidy | ||||
| 	go fmt ./... | ||||
| PHONY+=test/integration | ||||
| test/integration: | ||||
| 	CGO_ENABLED=0 \ | ||||
| 	GOPROXY=$(shell go env GOPROXY) \ | ||||
| 		go test -v -p 1 -count=1 -timeout 1200s ./it/... | ||||
|  | ||||
| # Check for unformatted go code | ||||
| .PHONY: check/fmt | ||||
| check/fmt: download | ||||
| 	test -z $(shell gofmt -l .) | ||||
| PHONY+=test/coverage | ||||
| test/coverage: test/unit | ||||
| 	CGO_ENABLED=0 \ | ||||
| 	GOPROXY=$(shell go env GOPROXY) \ | ||||
| 		go tool cover -html=coverage.txt | ||||
|  | ||||
| # Build project | ||||
| .PHONY: build | ||||
| build: | ||||
| 	CGO_ENABLED=0 go build \ | ||||
| 	-ldflags "\ | ||||
| 	-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 | ||||
| # GOLANGCI-LINT | ||||
| # ============================================================================== | ||||
| PHONY+=golangci-lint | ||||
| golangci-lint: | ||||
| 	golangci-lint run --concurrency=$(shell nproc) | ||||
|  | ||||
| # build container-image | ||||
| .PHONY: build/container-image | ||||
| build/container-image: | ||||
| # INSTALL | ||||
| # ============================================================================== | ||||
| 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 \ | ||||
| 		--tag ${EXECUTABLE} \ | ||||
| 		--build-arg VERSION=${VERSION} \ | ||||
| 		--file Dockerfile \ | ||||
| 		--no-cache \ | ||||
| 		--pull \ | ||||
| 		--tag ${PROM_FAIL2BAN_EXP_IMAGE_FULLY_QUALIFIED} \ | ||||
| 		. | ||||
|  | ||||
| .PHONY: install | ||||
| install: build | ||||
| 	mkdir --parents ${DESTDIR}/usr/lib/systemd/system | ||||
| 	sed -e "s/EXECUTABLE/${EXECUTABLE}/gm" systemd/systemd.service > ${DESTDIR}/usr/lib/systemd/system/${EXECUTABLE}.service | ||||
| 	chmod 0644 ${DESTDIR}/usr/lib/systemd/system/${EXECUTABLE}.service | ||||
| # DELETE CONTAINER IMAGE | ||||
| # ============================================================================== | ||||
| PHONY:=container-image/delete | ||||
| container-image/delete: | ||||
| 	- ${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 | ||||
| 	install -D --mode 0600 env ${DESTDIR}/etc/conf.d/${EXECUTABLE} | ||||
|  | ||||
| 	install -D --mode 0755 --target-directory ${DESTDIR}${PREFIX}/share/licenses/${EXECUTABLE} LICENSE | ||||
|  | ||||
| .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 | ||||
| # PHONY | ||||
| # ============================================================================== | ||||
| # Declare the contents of the PHONY variable as phony.  We keep that information | ||||
| # in a variable so we can use it in if_changed. | ||||
| .PHONY: ${PHONY} | ||||
							
								
								
									
										68
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										68
									
								
								README.md
									
									
									
									
									
								
							| @@ -1,11 +1,7 @@ | ||||
| # 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 | ||||
|  | ||||
| @@ -21,8 +17,8 @@ The exporter can be run as a standalone binary or a docker container. | ||||
|  | ||||
| ### 1.1. Standalone | ||||
|  | ||||
| The following command will start collecting metrics from the | ||||
| `/var/run/fail2ban/fail2ban.sock` file and expose them on port `9191`. | ||||
| The following command will start collecting metrics from the `/var/run/fail2ban/fail2ban.sock` file and expose them on | ||||
| port `9191`. | ||||
|  | ||||
| ```bash | ||||
| $ 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 | ||||
| [releases](https://gitlab.com/hectorjsmith/fail2ban-prometheus-exporter/-/releases) | ||||
| page. | ||||
| [releases](https://gitlab.com/hectorjsmith/fail2ban-prometheus-exporter/-/releases) page. | ||||
|  | ||||
| There is also an [example systemd service | ||||
| file](/_examples/systemd/fail2ban_exporter.service) included in the repository. | ||||
| This is a starting point to run the exporter as a service. | ||||
| There is also an [example systemd service file](/_examples/systemd/fail2ban_exporter.service) included in the | ||||
| repository. This is a starting point to run the exporter as a service. | ||||
|  | ||||
| ### 1.2. Docker | ||||
|  | ||||
| @@ -68,14 +62,11 @@ services: | ||||
| ``` | ||||
|  | ||||
| Use the `:latest` tag to get the latest stable release. See the [registry | ||||
| page](https://gitlab.com/hectorjsmith/fail2ban-prometheus-exporter/container_registry) | ||||
| for all available tags. | ||||
| page](https://gitlab.com/hectorjsmith/fail2ban-prometheus-exporter/container_registry) for all available tags. | ||||
|  | ||||
| **NOTE:** While it is possible to mount the `fail2ban.sock` file directly, it is | ||||
| recommended to mount the parent folder instead. The `.sock` file is deleted by | ||||
| 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) | ||||
| **NOTE:** While it is possible to mount the `fail2ban.sock` file directly, it is recommended to mount the parent folder | ||||
| instead. The `.sock` file is deleted by 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) | ||||
| for more details. | ||||
|  | ||||
| ## 2. Metrics | ||||
| @@ -117,20 +108,18 @@ Status for the jail: sshd | ||||
|  | ||||
| ### 2.1. Grafana | ||||
|  | ||||
| The metrics exported by this tool are compatible with Prometheus and Grafana. A | ||||
| sample grafana dashboard can be found in the | ||||
| [grafana.json](/_examples/grafana/dashboard.json) file. Just import the contents | ||||
| of this file into a new Grafana dashboard to get started. | ||||
| The metrics exported by this tool are compatible with Prometheus and Grafana. A sample grafana dashboard can be found in | ||||
| the [grafana.json](/_examples/grafana/dashboard.json) file. Just import the contents of this file into a new Grafana | ||||
| dashboard to get started. | ||||
|  | ||||
| The dashboard supports displaying data from multiple exporters. Use the | ||||
| `instance` dashboard variable to select which ones to display. | ||||
| The dashboard supports displaying data from multiple exporters. Use the `instance` dashboard variable to select which | ||||
| ones to display. | ||||
|  | ||||
| *(Sample dashboard is compatible with Grafana `9.1.8` and above)* | ||||
|  | ||||
| ## 3. Configuration | ||||
|  | ||||
| The exporter is configured with CLI flags and environment variables. | ||||
| There are no configuration files. | ||||
| The exporter is configured with CLI flags and environment variables. There are no configuration files. | ||||
|  | ||||
| ### CLI flags | ||||
|  | ||||
| @@ -164,8 +153,7 @@ Flags: | ||||
|  | ||||
| ### Environment variables | ||||
|  | ||||
| Each environment variable corresponds to a CLI flag. | ||||
| If both are specified, the CLI flag takes precedence. | ||||
| Each environment variable corresponds to a CLI flag. If both are specified, the CLI flag takes precedence. | ||||
|  | ||||
| | Environment variable            | Corresponding CLI flag                            | | ||||
| |---------------------------------|---------------------------------------------------| | ||||
| @@ -185,23 +173,18 @@ Building from source has the following dependencies: | ||||
|  | ||||
| From there, simply run `make build` | ||||
|  | ||||
| This will download the necessary dependencies and build a `fail2ban_exporter` | ||||
| binary in the root of the project. | ||||
| This will download the necessary dependencies and build a `fail2ban_exporter` binary in the root of the project. | ||||
|  | ||||
| ## 5. Textfile metrics | ||||
|  | ||||
| For more flexibility the exporter also allows exporting metrics collected from a | ||||
| text file. | ||||
| For more flexibility the exporter also allows exporting metrics collected from a text file. | ||||
|  | ||||
| To enable textfile metrics provide the directory to read files from with the | ||||
| `--collector.textfile.directory` flag. | ||||
| To enable textfile metrics provide the directory to read files from with the `--collector.textfile.directory` flag. | ||||
|  | ||||
| Metrics collected from these files will be exposed directly alongside the other | ||||
| metrics without any additional processing. This means that it is the | ||||
| responsibility of the file creator to ensure the format is correct. | ||||
| Metrics collected from these files will be exposed directly alongside the other metrics without any additional | ||||
| processing. This means that it is the responsibility of the file creator to ensure the format is correct. | ||||
|  | ||||
| By exporting textfile metrics an extra metric is also exported with an error | ||||
| count for each file: | ||||
| By exporting textfile metrics an extra metric is also exported with an error count for each file: | ||||
|  | ||||
| ```text | ||||
| # HELP textfile_error Checks for errors while reading text files | ||||
| @@ -213,8 +196,7 @@ textfile_error{path="file.prom"} 0 | ||||
|  | ||||
| ### Running in Docker | ||||
|  | ||||
| To collect textfile metrics inside a docker container, a couple of things need | ||||
| to be done: | ||||
| To collect textfile metrics inside a docker container, a couple of things need to be done: | ||||
|  | ||||
| 1. Mount the folder with the metrics files | ||||
| 2. Set the `F2B_COLLECTOR_TEXT_PATH` environment variable | ||||
|   | ||||
| @@ -68,7 +68,7 @@ | ||||
|     { | ||||
|       "datasource": { | ||||
|         "type": "prometheus", | ||||
|         "uid": "${DS_PROMETHEUS}" | ||||
|         "uid": "prometheus" | ||||
|       }, | ||||
|       "description": "", | ||||
|       "fieldConfig": { | ||||
| @@ -129,7 +129,7 @@ | ||||
|         { | ||||
|           "datasource": { | ||||
|             "type": "prometheus", | ||||
|             "uid": "${DS_PROMETHEUS}" | ||||
|             "uid": "prometheus" | ||||
|           }, | ||||
|           "editorMode": "code", | ||||
|           "exemplar": false, | ||||
| @@ -143,7 +143,7 @@ | ||||
|         { | ||||
|           "datasource": { | ||||
|             "type": "prometheus", | ||||
|             "uid": "${DS_PROMETHEUS}" | ||||
|             "uid": "prometheus" | ||||
|           }, | ||||
|           "editorMode": "code", | ||||
|           "exemplar": false, | ||||
| @@ -158,7 +158,7 @@ | ||||
|         { | ||||
|           "datasource": { | ||||
|             "type": "prometheus", | ||||
|             "uid": "${DS_PROMETHEUS}" | ||||
|             "uid": "prometheus" | ||||
|           }, | ||||
|           "editorMode": "code", | ||||
|           "exemplar": false, | ||||
| @@ -230,7 +230,7 @@ | ||||
|     { | ||||
|       "datasource": { | ||||
|         "type": "prometheus", | ||||
|         "uid": "${DS_PROMETHEUS}" | ||||
|         "uid": "prometheus" | ||||
|       }, | ||||
|       "description": "", | ||||
|       "fieldConfig": { | ||||
| @@ -309,7 +309,7 @@ | ||||
|         { | ||||
|           "datasource": { | ||||
|             "type": "prometheus", | ||||
|             "uid": "${DS_PROMETHEUS}" | ||||
|             "uid": "prometheus" | ||||
|           }, | ||||
|           "editorMode": "code", | ||||
|           "exemplar": true, | ||||
| @@ -328,7 +328,7 @@ | ||||
|     { | ||||
|       "datasource": { | ||||
|         "type": "prometheus", | ||||
|         "uid": "${DS_PROMETHEUS}" | ||||
|         "uid": "prometheus" | ||||
|       }, | ||||
|       "description": "", | ||||
|       "fieldConfig": { | ||||
| @@ -407,7 +407,7 @@ | ||||
|         { | ||||
|           "datasource": { | ||||
|             "type": "prometheus", | ||||
|             "uid": "${DS_PROMETHEUS}" | ||||
|             "uid": "prometheus" | ||||
|           }, | ||||
|           "editorMode": "code", | ||||
|           "exemplar": true, | ||||
| @@ -425,7 +425,7 @@ | ||||
|     { | ||||
|       "datasource": { | ||||
|         "type": "prometheus", | ||||
|         "uid": "${DS_PROMETHEUS}" | ||||
|         "uid": "prometheus" | ||||
|       }, | ||||
|       "description": "", | ||||
|       "fieldConfig": { | ||||
| @@ -504,7 +504,7 @@ | ||||
|         { | ||||
|           "datasource": { | ||||
|             "type": "prometheus", | ||||
|             "uid": "${DS_PROMETHEUS}" | ||||
|             "uid": "prometheus" | ||||
|           }, | ||||
|           "editorMode": "code", | ||||
|           "exemplar": true, | ||||
| @@ -522,7 +522,7 @@ | ||||
|     { | ||||
|       "datasource": { | ||||
|         "type": "prometheus", | ||||
|         "uid": "${DS_PROMETHEUS}" | ||||
|         "uid": "prometheus" | ||||
|       }, | ||||
|       "description": "", | ||||
|       "fieldConfig": { | ||||
| @@ -601,7 +601,7 @@ | ||||
|         { | ||||
|           "datasource": { | ||||
|             "type": "prometheus", | ||||
|             "uid": "${DS_PROMETHEUS}" | ||||
|             "uid": "prometheus" | ||||
|           }, | ||||
|           "editorMode": "code", | ||||
|           "exemplar": true, | ||||
| @@ -619,7 +619,7 @@ | ||||
|     { | ||||
|       "datasource": { | ||||
|         "type": "prometheus", | ||||
|         "uid": "${DS_PROMETHEUS}" | ||||
|         "uid": "prometheus" | ||||
|       }, | ||||
|       "description": "", | ||||
|       "fieldConfig": { | ||||
| @@ -699,7 +699,7 @@ | ||||
|         { | ||||
|           "datasource": { | ||||
|             "type": "prometheus", | ||||
|             "uid": "${DS_PROMETHEUS}" | ||||
|             "uid": "prometheus" | ||||
|           }, | ||||
|           "editorMode": "code", | ||||
|           "exemplar": true, | ||||
| @@ -717,7 +717,7 @@ | ||||
|     { | ||||
|       "datasource": { | ||||
|         "type": "prometheus", | ||||
|         "uid": "${DS_PROMETHEUS}" | ||||
|         "uid": "prometheus" | ||||
|       }, | ||||
|       "description": "", | ||||
|       "fieldConfig": { | ||||
| @@ -797,7 +797,7 @@ | ||||
|         { | ||||
|           "datasource": { | ||||
|             "type": "prometheus", | ||||
|             "uid": "${DS_PROMETHEUS}" | ||||
|             "uid": "prometheus" | ||||
|           }, | ||||
|           "editorMode": "code", | ||||
|           "exemplar": true, | ||||
| @@ -842,7 +842,7 @@ | ||||
|         "current": {}, | ||||
|         "datasource": { | ||||
|           "type": "prometheus", | ||||
|           "uid": "${DS_PROMETHEUS}" | ||||
|           "uid": "prometheus" | ||||
|         }, | ||||
|         "definition": "f2b_up", | ||||
|         "description": "Select which instance(s) to show", | ||||
|   | ||||
| @@ -1,7 +1,9 @@ | ||||
| # Systemd | ||||
|  | ||||
| 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 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. | ||||
|   | ||||
| @@ -74,7 +74,7 @@ func validateFlags(cliCtx *kong.Context) { | ||||
| 		} | ||||
| 	} | ||||
| 	if !flagsValid { | ||||
| 		cliCtx.PrintUsage(false) | ||||
| 		_ = cliCtx.PrintUsage(false) | ||||
| 		fmt.Println() | ||||
| 		for i := 0; i < len(messages); i++ { | ||||
| 			fmt.Println(messages[i]) | ||||
|   | ||||
| @@ -50,7 +50,7 @@ func (c *Collector) Collect(ch chan<- prometheus.Metric) { | ||||
| 			os.Exit(1) | ||||
| 		} | ||||
| 	} else { | ||||
| 		defer s.Close() | ||||
| 		defer func() { _ = s.Close() }() | ||||
| 	} | ||||
|  | ||||
| 	c.collectServerUpMetric(ch, s) | ||||
|   | ||||
							
								
								
									
										29
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										29
									
								
								go.mod
									
									
									
									
									
								
							| @@ -1,22 +1,25 @@ | ||||
| module git.cryptic.systems/volker.raschek/prometheus-fail2ban-exporter | ||||
|  | ||||
| go 1.20 | ||||
| go 1.23.0 | ||||
|  | ||||
| toolchain go1.24.6 | ||||
|  | ||||
| require ( | ||||
| 	github.com/alecthomas/kong v0.8.0 | ||||
| 	github.com/kisielk/og-rek v1.2.0 | ||||
| 	github.com/nlpodyssey/gopickle v0.2.0 | ||||
| 	github.com/prometheus/client_golang v1.16.0 | ||||
| 	github.com/alecthomas/kong v1.12.1 | ||||
| 	github.com/kisielk/og-rek v1.3.0 | ||||
| 	github.com/nlpodyssey/gopickle v0.3.0 | ||||
| 	github.com/prometheus/client_golang v1.23.0 | ||||
| ) | ||||
|  | ||||
| require ( | ||||
| 	github.com/aristanetworks/gomap v0.0.0-20240919214256-2b26376628e1 // indirect | ||||
| 	github.com/beorn7/perks v1.0.1 // indirect | ||||
| 	github.com/cespare/xxhash/v2 v2.2.0 // indirect | ||||
| 	github.com/golang/protobuf v1.5.3 // indirect | ||||
| 	github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect | ||||
| 	github.com/prometheus/client_model v0.4.0 // indirect | ||||
| 	github.com/prometheus/common v0.44.0 // indirect | ||||
| 	github.com/prometheus/procfs v0.11.0 // indirect | ||||
| 	golang.org/x/sys v0.9.0 // indirect | ||||
| 	google.golang.org/protobuf v1.31.0 // indirect | ||||
| 	github.com/cespare/xxhash/v2 v2.3.0 // indirect | ||||
| 	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect | ||||
| 	github.com/prometheus/client_model v0.6.2 // indirect | ||||
| 	github.com/prometheus/common v0.65.0 // indirect | ||||
| 	github.com/prometheus/procfs v0.16.1 // indirect | ||||
| 	golang.org/x/sys v0.33.0 // indirect | ||||
| 	golang.org/x/text v0.25.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/kong v0.8.0 h1:ryDCzutfIqJPnNn0omnrgHLbAggDQM2VWHikE1xqK7s= | ||||
| github.com/alecthomas/kong v0.8.0/go.mod h1:n1iCIO2xS46oE8ZfYCNDqdR0b0wZNrXAIAqro/2132U= | ||||
| github.com/alecthomas/repr v0.1.0 h1:ENn2e1+J3k09gyj2shc0dHr/yjaWSHRlrJ4DPMevDqE= | ||||
| github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= | ||||
| github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= | ||||
| github.com/alecthomas/kong v1.12.1 h1:iq6aMJDcFYP9uFrLdsiZQ2ZMmcshduyGv4Pek0MQPW0= | ||||
| 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/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= | ||||
| github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= | ||||
| github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= | ||||
| github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= | ||||
| 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/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= | ||||
| github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= | ||||
| github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= | ||||
| 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/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||
| github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||
| github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||||
| 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/kisielk/og-rek v1.2.0/go.mod h1:6ihsOSzSAxR/65S3Bn9zNihoEqRquhDQZ2c6I2+MG3c= | ||||
| github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= | ||||
| github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= | ||||
| github.com/nlpodyssey/gopickle v0.2.0 h1:4naD2DVylYJupQLbCQFdwo6yiXEmPyp+0xf5MVlrBDY= | ||||
| github.com/nlpodyssey/gopickle v0.2.0/go.mod h1:YIUwjJ2O7+vnBsxUN+MHAAI3N+adqEGiw+nDpwW95bY= | ||||
| github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8= | ||||
| github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc= | ||||
| github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY= | ||||
| github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= | ||||
| github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= | ||||
| github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= | ||||
| github.com/prometheus/procfs v0.11.0 h1:5EAgkfkMl659uZPbe9AS2N68a7Cc1TJbPEuGzFuRbyk= | ||||
| github.com/prometheus/procfs v0.11.0/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM= | ||||
| golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||||
| golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s= | ||||
| golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= | ||||
| google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= | ||||
| google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= | ||||
| google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= | ||||
| github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= | ||||
| github.com/kisielk/og-rek v1.3.0 h1:lTXdQXqFETZKA//FWH4RBNAuiJ/dofxIwHAidoUZoMk= | ||||
| github.com/kisielk/og-rek v1.3.0/go.mod h1:4at7oxyfBTDilURhNCf7irHWtosJlJl9uyqUqAkrP4w= | ||||
| github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= | ||||
| github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= | ||||
| github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= | ||||
| github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= | ||||
| github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= | ||||
| github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= | ||||
| github.com/nlpodyssey/gopickle v0.3.0 h1:BLUE5gxFLyyNOPzlXxt6GoHEMMxD0qhsE4p0CIQyoLw= | ||||
| github.com/nlpodyssey/gopickle v0.3.0/go.mod h1:f070HJ/yR+eLi5WmM1OXJEGaTpuJEUiib19olXgYha0= | ||||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||
| github.com/prometheus/client_golang v1.23.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc= | ||||
| github.com/prometheus/client_golang v1.23.0/go.mod h1:i/o0R9ByOnHX0McrTMTyhYvKE4haaf2mW08I+jGAjEE= | ||||
| github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= | ||||
| github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= | ||||
| github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= | ||||
| github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= | ||||
| github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= | ||||
| github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= | ||||
| 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 ( | ||||
| 	version = "dev" | ||||
| 	commit  = "none" | ||||
| 	date    = "unknown" | ||||
| 	builtBy = "unknown" | ||||
| ) | ||||
| 
 | ||||
| func printAppVersion() { | ||||
| 	fmt.Println(version) | ||||
| 	fmt.Printf("    build date:  %s\r\n    commit hash: %s\r\n    built by:    %s\r\n", date, commit, builtBy) | ||||
| 	fmt.Printf("Version:    %s\n", version) | ||||
| 	fmt.Printf("Build date: %s\n", date) | ||||
| } | ||||
| 
 | ||||
| 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", | ||||
|   "assigneesFromCodeOwners": true, | ||||
|   "automergeStrategy": "merge-commit", | ||||
|   "automergeType": "pr", | ||||
|   "labels": [ "renovate" ], | ||||
|   "packageRules": [ | ||||
|     { | ||||
|       "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" | ||||
|   "extends": [ | ||||
|     "local>volker.raschek/renovate-config:default#master", | ||||
|     "local>volker.raschek/renovate-config:container#master", | ||||
|     "local>volker.raschek/renovate-config:actions#master", | ||||
|     "local>volker.raschek/renovate-config:golang#master", | ||||
|     "local>volker.raschek/renovate-config:regexp#master" | ||||
|   ] | ||||
| } | ||||
|   | ||||
| @@ -4,6 +4,7 @@ import ( | ||||
| 	"bufio" | ||||
| 	"bytes" | ||||
| 	"fmt" | ||||
|  | ||||
| 	"github.com/nlpodyssey/gopickle/pickle" | ||||
| ) | ||||
|  | ||||
| @@ -62,7 +63,7 @@ func (s *Fail2BanSocket) read() (interface{}, error) { | ||||
| 		if (module == "builtins" || module == "__builtin__") && name == "str" { | ||||
| 			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() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user