Skip to content

Instantly share code, notes, and snippets.

@umarquez
Created July 11, 2020 21:55
Show Gist options
  • Save umarquez/25ae7b6d0346f65f139edc3108c35d1d to your computer and use it in GitHub Desktop.
Save umarquez/25ae7b6d0346f65f139edc3108c35d1d to your computer and use it in GitHub Desktop.
#1mC0D3 Servidor web https://youtu.be/4Yd9fhfXMmc
package main
import (
"flag"
"fmt"
"log"
"net/http"
"os"
)
var (
serverHost = "" // interfaz de escucha = todas
serverPort = 8080 // puerto de escucha
publicDir = "www" // directorio público
)
func init() {
// obteniendo valores por parámetros de línea de comandos
serverPort = *flag.Int(
"p",
serverPort,
"Puerto de escucha",
)
publicDir = *flag.String(
"dir",
publicDir,
"directorio público",
)
flag.Parse()
// validando directorio
dir, err := os.Open(publicDir)
if err != nil {
log.Fatal(err)
}
defer dir.Close()
dirInfo, err := dir.Stat()
if err != nil {
log.Fatal(err)
}
if !dirInfo.IsDir() {
err := fmt.Errorf(
"\"%v\" no es un directorio",
publicDir,
)
flag.Usage()
log.Fatal(err)
}
}
func main() {
// publicando el contenido en raíz
http.Handle("/", http.FileServer(http.Dir(publicDir)))
serverAddress := fmt.Sprintf(
"%v:%v",
serverHost,
serverPort,
)
// iniciando servidor
for {
log.Printf(
"Iniciando servidor en %v",
serverAddress,
)
fmt.Print("\n -- Presione CTRL+C para terminar --\n")
err := http.ListenAndServe(
serverAddress,
nil,
)
// si falla imprime el error y reintenta
log.Printf(
"error ejecutando el servicio [%v], %v",
serverAddress,
err,
)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment