about summary refs log tree commit diff
path: root/src/main.go
blob: 74f8f51175947f00de083802e2295a14942953f1 (plain)
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
package main

import (
	"log"
	"net/http"

	"github.com/gliderlabs/ssh"
	"github.com/gorilla/mux"
)

var (
	metrics_num_passwords int
	metrics_city_num      map[string]int
	cities                map[string]location
)

func main() {

	// create a map mapping a city to an amount of hits
	metrics_city_num = make(map[string]int)

	// create a cities map mapping a city to a location
	cities = make(map[string]location)

	// start the ssh server
	log.Println("Starting SSH listener")
	go func() {
		listenErr := ssh.ListenAndServe(":2222", nil, ssh.PasswordAuth(handlePass))
		if listenErr != nil {
			log.Fatalln(listenErr.Error())
		}
	}()

	// start the http server logging the metrics
	log.Println("Starting HTTP metrics listener")

	r := mux.NewRouter()
	r.HandleFunc("/", indexHandler)
	r.HandleFunc("/metrics", metricsHandler)
	r.HandleFunc("/locations", locationHandlerEndpoint)

	// start the http server exposing the metrics and the locations
	listenErr := http.ListenAndServe(":8084", r)

	// handle potential errors
	if listenErr != nil {
		log.Fatalln(listenErr.Error())
	}
}