28 lines
648 B
Go
28 lines
648 B
Go
package server
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
)
|
|
|
|
func (s *server) handleHealth(w http.ResponseWriter) {
|
|
// TODO option to disable
|
|
// TODO use mullvad API if current provider is Mullvad
|
|
ips, err := s.lookupIP("github.com")
|
|
var errorMessage string
|
|
switch {
|
|
case err != nil:
|
|
errorMessage = fmt.Sprintf("cannot resolve github.com (%s)", err)
|
|
case len(ips) == 0:
|
|
errorMessage = "resolved no IP addresses for github.com"
|
|
default: // success
|
|
w.WriteHeader(http.StatusOK)
|
|
return
|
|
}
|
|
s.logger.Warn(errorMessage)
|
|
w.WriteHeader(http.StatusInternalServerError)
|
|
if _, err := w.Write([]byte(errorMessage)); err != nil {
|
|
s.logger.Warn(err)
|
|
}
|
|
}
|