summaryrefslogtreecommitdiff
path: root/src/hub/src/spreadspace.org/sfive/s5srvConf.go
blob: c4a61588746591c53fc1c71bd9657a9336056d3e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
//
// sfive
//
// sfive - spreadspace streaming statistics suite is a generic
// statistic collection tool for streaming server infrastuctures.
// The system collects and stores meta data like number of views
// and throughput from a number of streaming servers and stores
// it in a global data store.
// The data acquisition is designed to be generic and extensible in
// order to support different streaming software.
// sfive also contains tools and applications to filter and visualize
// live and recorded data.
//
//
// Copyright (C) 2014-2017 Christian Pointner <equinox@spreadspace.org>
//                         Markus Grüneis <gimpf@gimpf.org>
//
// This file is part of sfive.
//
// sfive is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 3
// as published by the Free Software Foundation.
//
// sfive is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with sfive. If not, see <http://www.gnu.org/licenses/>.
//

package sfive

type PipeInterfaceConfig struct {
	ListenPath string `json:"listen" yaml:"listen" toml:"listen"`
}

type PipegramInterfaceConfig struct {
	ListenPath string `json:"listen" yaml:"listen" toml:"listen"`
}

type WebInterfaceConfig struct {
	ListenAddr string `json:"listen" yaml:"listen" toml:"listen"`
}

type InterfacesConfig struct {
	Pipe     PipeInterfaceConfig     `json:"pipe" yaml:"pipe" toml:"pipe"`
	Pipegram PipegramInterfaceConfig `json:"pipegram" yaml:"pipegram" toml:"pipegram"`
	Web      WebInterfaceConfig      `json:"web" yaml:"web" toml:"web"`
}

type TransformConfig struct {
	Anonymize   bool   `json:"anonymize" yaml:"anonymize" toml:"anonymize"`
	AnonKeyfile string `json:"anonymization-key" yaml:"anonymization-key" toml:"anonymization-key"`
	GeoipDB     string `json:"geo-ip-db" yaml:"geo-ip-db" toml:"geo-ip-db"`
}

type AuthConfig struct {
	Token    string `json:"token" yaml:"token" toml:"token"`
	Username string `json:"username" yaml:"username" toml:"username"`
	Password string `json:"password" yaml:"password" toml:"password"`
}

type SFiveForwardConfig struct {
	URL string `json:"url" yaml:"url" toml:"url"`
	AuthConfig
}

type ESForwardConfig struct {
	URL string `json:"url" yaml:"url" toml:"url"`
	AuthConfig
}

type GraphiteForwardConfig struct {
	Host     string `json:"host" yaml:"host" toml:"host"`
	BasePath string `json:"base-path" yaml:"base-path" toml:"base-path"`
}

type PiwikForwardConfig struct {
	URL     string `json:"url" yaml:"url" toml:"url"`
	SiteURL string `json:"site-url" yaml:"site-url" toml:"site-url"`
	SiteID  uint   `json:"site-id" yaml:"site-id" toml:"site-id"`
	AuthConfig
}

type ForwardsConfig struct {
	SFive         SFiveForwardConfig    `json:"sfive" yaml:"sfive" toml:"sfive"`
	Elasticsearch ESForwardConfig       `json:"elasticsearch" yaml:"elasticsearch" toml:"elasticsearch"`
	Graphite      GraphiteForwardConfig `json:"graphite" yaml:"graphite" toml:"graphite"`
	Piwik         PiwikForwardConfig    `json:"piwik" yaml:"piwik" toml:"piwik"`
}

type SrvConfig struct {
	Interfaces InterfacesConfig `json:"interfaces" yaml:"interfaces" toml:"interfaces"`
	Transform  TransformConfig  `json:"transform" yaml:"transform" toml:"transform"`
	Store      StoreConfig      `json:"store" yaml:"store" toml:"store"`
	Forwards   ForwardsConfig   `json:"forwards" yaml:"forwards" toml:"forwards"`
}