about summary refs log tree commit diff
path: root/src/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.go')
-rw-r--r--src/main.go49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/main.go b/src/main.go
new file mode 100644
index 0000000..74f8f51
--- /dev/null
+++ b/src/main.go
@@ -0,0 +1,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())
+	}
+}