123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- package main
- import (
- "fmt"
- "github.com/valyala/fasthttp"
- )
- var domains = make(map[string]fasthttp.RequestHandler)
- func main() {
- server := &fasthttp.Server{
- // You can check the access using openssl command:
- // $ openssl s_client -connect localhost:8080 << EOF
- // > GET /
- // > Host: localhost
- // > EOF
- //
- // $ openssl s_client -connect localhost:8080 << EOF
- // > GET /
- // > Host: 127.0.0.1:8080
- // > EOF
- //
- Handler: func(ctx *fasthttp.RequestCtx) {
- h, ok := domains[string(ctx.Host())]
- if !ok {
- ctx.NotFound()
- return
- }
- h(ctx)
- },
- }
- // preparing first host
- cert, priv, err := fasthttp.GenerateTestCertificate("localhost:8080")
- if err != nil {
- panic(err)
- }
- domains["localhost:8080"] = func(ctx *fasthttp.RequestCtx) {
- ctx.WriteString("You are accessing to localhost:8080\n")
- }
- err = server.AppendCertEmbed(cert, priv)
- if err != nil {
- panic(err)
- }
- // preparing second host
- cert, priv, err = fasthttp.GenerateTestCertificate("127.0.0.1")
- if err != nil {
- panic(err)
- }
- domains["127.0.0.1:8080"] = func(ctx *fasthttp.RequestCtx) {
- ctx.WriteString("You are accessing to 127.0.0.1:8080\n")
- }
- err = server.AppendCertEmbed(cert, priv)
- if err != nil {
- panic(err)
- }
- fmt.Println(server.ListenAndServeTLS(":8080", "", ""))
- }
|