Created
July 11, 2020 21:55
-
-
Save umarquez/25ae7b6d0346f65f139edc3108c35d1d to your computer and use it in GitHub Desktop.
#1mC0D3 Servidor web https://youtu.be/4Yd9fhfXMmc
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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