commit
20614df544
4 changed files with 199 additions and 0 deletions
@ -0,0 +1,3 @@ |
|||||
|
module partyinvites |
||||
|
|
||||
|
go 1.17 |
||||
@ -0,0 +1,58 @@ |
|||||
|
{{ define "body"}} |
||||
|
<div class="container"> |
||||
|
<h1> Este es el servidor Raspberry Pi!</h3> |
||||
|
<h2>Algunas acciones</h4> |
||||
|
<div class="row"> |
||||
|
<div class="col"> |
||||
|
<div class="card" style="width: 24rem;"> |
||||
|
<i class="bi-cpu-fill card-img-top" style="text-align: center; font-size: 10rem; color: darkorange;"></i> |
||||
|
|
||||
|
<div class="card-body"> |
||||
|
<h5 class="card-title"> |
||||
|
Servidor Proliant |
||||
|
{{ if .ProliantIsAlive }} |
||||
|
<span class="badge bg-success">Encendido</span> |
||||
|
{{ else }} |
||||
|
<span class="badge bg-warning">Apagado</span> |
||||
|
{{ end }} |
||||
|
</h5> |
||||
|
<p class="card-text"> |
||||
|
El servidor Proliant |
||||
|
</p> |
||||
|
|
||||
|
{{ if .ProliantIsAlive }} |
||||
|
<a class="btn btn-danger" href="/power-off-proliant">Apagar</a> |
||||
|
{{ else }} |
||||
|
<a class="btn btn-primary" href="/power-on-proliant">Encender</a> |
||||
|
{{ end }} |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="col"> |
||||
|
<div class="card" style="width: 24rem;"> |
||||
|
<i class="bi-server card-img-top" style="text-align: center; font-size: 10rem; color: darkorange;"></i> |
||||
|
|
||||
|
<div class="card-body"> |
||||
|
<h5 class="card-title"> |
||||
|
Servidor Oracle |
||||
|
{{ if .OracleIsAlive }} |
||||
|
<span class="badge bg-success">Encendido</span> |
||||
|
{{ else }} |
||||
|
<span class="badge bg-warning">Apagado</span> |
||||
|
{{ end }} |
||||
|
</h5> |
||||
|
<p class="card-text"> |
||||
|
El servidor Oracle |
||||
|
</p> |
||||
|
|
||||
|
{{ if .OracleIsAlive }} |
||||
|
<a class="btn btn-danger" href="/power-off-oracle">Apagar</a> |
||||
|
{{ else }} |
||||
|
<a class="btn btn-primary" href="/power-on-oracle">Encender</a> |
||||
|
{{ end }} |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
{{ end }} |
||||
@ -0,0 +1,14 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html> |
||||
|
<head> |
||||
|
<meta name="viewport" content="width=device-width" /> |
||||
|
<title>Raspberry Pi - Rodley</title> |
||||
|
<link href= |
||||
|
"https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.1.1/css/bootstrap.min.css" |
||||
|
rel="stylesheet"> |
||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.8.0/font/bootstrap-icons.css"> |
||||
|
</head> |
||||
|
<body class="p-2"> |
||||
|
{{ block "body" . }} Content Goes Here {{ end }} |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,124 @@ |
|||||
|
package main |
||||
|
|
||||
|
import ( |
||||
|
"fmt" |
||||
|
"html/template" |
||||
|
"net/http" |
||||
|
"os/exec" |
||||
|
"time" |
||||
|
) |
||||
|
|
||||
|
var templates = make(map[string]*template.Template, 3) |
||||
|
|
||||
|
func loadTemplates() { |
||||
|
templateNames := [1]string{"index"} |
||||
|
for index, name := range templateNames { |
||||
|
t, err := template.ParseFiles("layout.html", name+".html") |
||||
|
if err == nil { |
||||
|
templates[name] = t |
||||
|
fmt.Println("Loaded template", index, name) |
||||
|
} else { |
||||
|
panic(err) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
func indexHandler(writer http.ResponseWriter, request *http.Request) { |
||||
|
proliantIsAlive := pingServer("server.rodley.net") |
||||
|
oracleIsAlive := oracleServerUp() |
||||
|
|
||||
|
statuses := struct { |
||||
|
ProliantIsAlive bool |
||||
|
OracleIsAlive bool |
||||
|
}{ProliantIsAlive: proliantIsAlive, OracleIsAlive: oracleIsAlive} |
||||
|
|
||||
|
fmt.Println("Statuses:", statuses) |
||||
|
templates["index"].Execute(writer, statuses) |
||||
|
} |
||||
|
|
||||
|
func pingServer(serverName string) bool { |
||||
|
cmd := exec.Command("ping", "-c 1", serverName) |
||||
|
fmt.Printf("Running ping and waiting for it to finish...\n") |
||||
|
err := cmd.Run() |
||||
|
if err == nil { |
||||
|
return true |
||||
|
} else { |
||||
|
return false |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
func oracleServerUp() bool { |
||||
|
return portOpen("oracle.rodley.net", "1521") |
||||
|
} |
||||
|
|
||||
|
func portOpen(serverName string, port string) bool { |
||||
|
command := "nmap " + serverName + " | grep " + port |
||||
|
fmt.Println(command) |
||||
|
|
||||
|
cmd := exec.Command("bash", "-c", command) |
||||
|
fmt.Printf("Running nmap looking for the open port...\n") |
||||
|
err := cmd.Run() |
||||
|
if err == nil { |
||||
|
return true |
||||
|
} else { |
||||
|
fmt.Println("Err", err) |
||||
|
return false |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
func powerOnOracle() bool { |
||||
|
cmd := exec.Command("./start_oracle.sh") |
||||
|
err := cmd.Run() |
||||
|
if err == nil { |
||||
|
return true |
||||
|
} else { |
||||
|
fmt.Println("Error ", err) |
||||
|
return false |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
func powerOffOracle() bool { |
||||
|
cmd := exec.Command("./stop_oracle.sh") |
||||
|
err := cmd.Run() |
||||
|
if err == nil { |
||||
|
return true |
||||
|
} else { |
||||
|
fmt.Println("Error ", err) |
||||
|
return false |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
func powerOnOracleHandler(writer http.ResponseWriter, request *http.Request) { |
||||
|
result := powerOnOracle() |
||||
|
if result == true { |
||||
|
time.Sleep(10 * time.Second) |
||||
|
http.Redirect(writer, request, "/", 301) |
||||
|
} else { |
||||
|
// TODO: Ver como render el error
|
||||
|
http.Redirect(writer, request, "/", 301) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
func powerOffOracleHandler(writer http.ResponseWriter, request *http.Request) { |
||||
|
result := powerOffOracle() |
||||
|
if result == true { |
||||
|
time.Sleep(10 * time.Second) |
||||
|
http.Redirect(writer, request, "/", 301) |
||||
|
} else { |
||||
|
// TODO: Ver como render el error
|
||||
|
http.Redirect(writer, request, "/", 301) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
func main() { |
||||
|
loadTemplates() |
||||
|
|
||||
|
http.HandleFunc("/", indexHandler) |
||||
|
http.HandleFunc("/power-on-oracle", powerOnOracleHandler) |
||||
|
http.HandleFunc("/power-off-oracle", powerOffOracleHandler) |
||||
|
|
||||
|
err := http.ListenAndServe(":5001", nil) |
||||
|
if err != nil { |
||||
|
fmt.Println(err) |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue