2022-06-30 21:32:56 +01:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"net"
|
|
|
|
"net/http"
|
2024-05-03 12:45:58 +01:00
|
|
|
"net/url"
|
2022-06-30 21:32:56 +01:00
|
|
|
"os"
|
|
|
|
"strconv"
|
|
|
|
"time"
|
|
|
|
|
2024-03-04 14:59:47 +01:00
|
|
|
"github.com/rramiachraf/dumb/handlers"
|
2024-05-02 21:29:50 +01:00
|
|
|
"github.com/rramiachraf/dumb/utils"
|
2022-06-30 21:32:56 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
func main() {
|
2024-05-02 21:29:50 +01:00
|
|
|
logger := utils.NewLogger(os.Stdout)
|
2022-06-30 21:32:56 +01:00
|
|
|
|
|
|
|
server := &http.Server{
|
2024-03-06 20:53:29 +01:00
|
|
|
Handler: handlers.New(logger),
|
2023-03-12 13:29:33 +01:00
|
|
|
WriteTimeout: 25 * time.Second,
|
|
|
|
ReadTimeout: 25 * time.Second,
|
2022-06-30 21:32:56 +01:00
|
|
|
}
|
|
|
|
|
2024-05-03 12:45:58 +01:00
|
|
|
PROXY_ENV := os.Getenv("PROXY")
|
|
|
|
if PROXY_ENV != "" {
|
|
|
|
if _, err := url.ParseRequestURI(PROXY_ENV); err != nil {
|
|
|
|
logger.Error("invalid proxy")
|
|
|
|
os.Exit(1)
|
|
|
|
}
|
|
|
|
|
|
|
|
logger.Info("using a custom proxy for requests")
|
|
|
|
}
|
|
|
|
|
2022-06-30 21:32:56 +01:00
|
|
|
port, _ := strconv.Atoi(os.Getenv("PORT"))
|
|
|
|
|
|
|
|
if port == 0 {
|
|
|
|
port = 5555
|
2024-05-02 21:29:50 +01:00
|
|
|
logger.Info("using default port %d", port)
|
2022-06-30 21:32:56 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
l, err := net.Listen("tcp", fmt.Sprintf(":%d", port))
|
|
|
|
if err != nil {
|
2024-05-02 21:29:50 +01:00
|
|
|
logger.Error(err.Error())
|
2022-06-30 21:32:56 +01:00
|
|
|
}
|
|
|
|
|
2024-05-02 21:29:50 +01:00
|
|
|
logger.Info("server is listening on port %d", port)
|
2022-06-30 21:32:56 +01:00
|
|
|
|
2024-05-02 21:29:50 +01:00
|
|
|
if err := server.Serve(l); err != nil {
|
|
|
|
logger.Error(err.Error())
|
|
|
|
os.Exit(1)
|
|
|
|
}
|
2022-06-30 21:32:56 +01:00
|
|
|
}
|