Adding configuration of adguard port (#5)
* Added possibility to configure url adguard port
This commit is contained in:
parent
7571d78c9c
commit
a4ffbd5f1c
|
@ -1,14 +1,13 @@
|
|||
FROM --platform=$BUILDPLATFORM golang:1.15-alpine3.12 AS build
|
||||
FROM golang:1.15-alpine3.12 as build
|
||||
ARG TARGETOS
|
||||
ARG TARGETARCH
|
||||
|
||||
WORKDIR /tmp/adguard_exporter
|
||||
|
||||
RUN apk --no-cache add git alpine-sdk upx
|
||||
RUN apk --no-cache add git alpine-sdk
|
||||
COPY . .
|
||||
RUN GO111MODULE=on go mod vendor
|
||||
RUN CGO_ENABLED=0 GOOS=$TARGETOS GOARCH=$TARGETARCH go build -ldflags '-s -w' -o adguard_exporter ./
|
||||
RUN upx -f --brute adguard_exporter
|
||||
RUN CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -ldflags '-s -w' -o adguard_exporter ./
|
||||
|
||||
FROM scratch
|
||||
LABEL name="adguard-exporter"
|
||||
|
|
|
@ -70,6 +70,7 @@ docker run \
|
|||
-e 'adguard_hostname=192.168.10.252' \
|
||||
-e 'adguard_username=admin' \
|
||||
-e 'adguard_password=mypassword' \
|
||||
-e 'adguard_port=' \ #optional if adguard is not using port 80 (http)/443 (https)
|
||||
-e 'interval=10s' \
|
||||
-e 'log_limit=10000' \
|
||||
-e 'server_port=9617' \
|
||||
|
@ -121,6 +122,7 @@ services:
|
|||
- adguard_hostname=192.168.10.252
|
||||
- adguard_username=admin
|
||||
- adguard_password=/run/secrets/my-adguard-pass
|
||||
- adguard_port= #optional
|
||||
- interval=10s
|
||||
- log_limit=10000
|
||||
```
|
||||
|
@ -151,6 +153,7 @@ services:
|
|||
- adguard_hostname=192.168.10.252
|
||||
- adguard_username=admin
|
||||
- adguard_password=/run/secrets/my-adguard-pass
|
||||
- adguard_port= #optional
|
||||
- interval=10s
|
||||
- log_limit=10000
|
||||
```
|
||||
|
@ -219,6 +222,9 @@ scrape_configs:
|
|||
# Password defined on the Adguard interface
|
||||
-adguard_password string (optional)
|
||||
|
||||
# Port to use to communicate with Adguard API
|
||||
-adguard_port string (optional)
|
||||
|
||||
# Limit for the return log data
|
||||
-log_limit string (optional) (default "1000")
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@ import (
|
|||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"reflect"
|
||||
"time"
|
||||
|
||||
|
@ -19,6 +20,7 @@ type Config struct {
|
|||
AdguardHostname string `config:"adguard_hostname"`
|
||||
AdguardUsername string `config:"adguard_username"`
|
||||
AdguardPassword string `config:"adguard_password"`
|
||||
AdguardPort string `config:"adguard_port"`
|
||||
ServerPort string `config:"server_port"`
|
||||
Interval time.Duration `config:"interval"`
|
||||
LogLimit string `config:"log_limit"`
|
||||
|
@ -30,6 +32,7 @@ func getDefaultConfig() *Config {
|
|||
AdguardHostname: "127.0.0.1",
|
||||
AdguardUsername: "",
|
||||
AdguardPassword: "",
|
||||
AdguardPort: "80",
|
||||
ServerPort: "9617",
|
||||
Interval: 10 * time.Second,
|
||||
LogLimit: "1000",
|
||||
|
@ -48,7 +51,20 @@ func Load() *Config {
|
|||
cfg := getDefaultConfig()
|
||||
err := loader.Load(context.Background(), cfg)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
log.Printf("Could not load the configuration...")
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
//Set the adguard port based on the input configuration
|
||||
if cfg.AdguardPort == "" {
|
||||
if cfg.AdguardProtocol == "http" {
|
||||
cfg.AdguardPort = "80"
|
||||
} else if cfg.AdguardProtocol == "https" {
|
||||
cfg.AdguardPort = "443"
|
||||
} else {
|
||||
log.Printf("protocol %s is invalid. Must be http or https.", cfg.AdguardProtocol)
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
cfg.show()
|
||||
|
|
|
@ -7,7 +7,6 @@ import (
|
|||
"io/ioutil"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
|
@ -36,16 +35,13 @@ type Client struct {
|
|||
}
|
||||
|
||||
// NewClient method initializes a new AdGuard client.
|
||||
func NewClient(protocol, hostname string, username, password string, interval time.Duration, logLimit string) *Client {
|
||||
if protocol != "http" && protocol != "https" {
|
||||
log.Printf("protocol %s is invalid. Must be http or https.", protocol)
|
||||
os.Exit(1)
|
||||
}
|
||||
func NewClient(protocol, hostname, username, password, adport string, interval time.Duration, logLimit string) *Client {
|
||||
|
||||
port = 80
|
||||
if protocol == "https" {
|
||||
port = 443
|
||||
temp, err := strconv.Atoi(adport)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
port = uint16(temp)
|
||||
|
||||
return &Client{
|
||||
protocol: protocol,
|
||||
|
@ -194,7 +190,7 @@ func (c *Client) MakeRequest(url string) []byte {
|
|||
log.Fatal("An error has occurred when creating HTTP statistics request", err)
|
||||
}
|
||||
|
||||
req.Host = "adguard.home-lab.io"
|
||||
req.Host = c.hostname
|
||||
req.Header.Add("User-Agent", "Mozilla/5.0")
|
||||
|
||||
if c.isUsingPassword() {
|
||||
|
|
6
main.go
6
main.go
|
@ -26,14 +26,14 @@ func main() {
|
|||
|
||||
metrics.Init()
|
||||
|
||||
initAdguardClient(conf.AdguardProtocol, conf.AdguardHostname, conf.AdguardUsername, conf.AdguardPassword, conf.Interval, conf.LogLimit)
|
||||
initAdguardClient(conf.AdguardProtocol, conf.AdguardHostname, conf.AdguardUsername, conf.AdguardPassword, conf.AdguardPort, conf.Interval, conf.LogLimit)
|
||||
initHttpServer(conf.ServerPort)
|
||||
|
||||
handleExitSignal()
|
||||
}
|
||||
|
||||
func initAdguardClient(protocol, hostname string, username, password string, interval time.Duration, logLimit string) {
|
||||
client := adguard.NewClient(protocol, hostname, username, password, interval, logLimit)
|
||||
func initAdguardClient(protocol, hostname, username, password, port string, interval time.Duration, logLimit string) {
|
||||
client := adguard.NewClient(protocol, hostname, username, password, port, interval, logLimit)
|
||||
go client.Scrape()
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue