From 6a6c4ba9ee9943bfe6243991589bec4dfc4d86fe Mon Sep 17 00:00:00 2001 From: Smile Rex Date: Tue, 10 Mar 2026 01:33:54 +0300 Subject: [PATCH] add certs --- main.go | 31 +++++++++++++++++-------------- qgo.quizer.space-key.pem | 28 ++++++++++++++++++++++++++++ qgo.quizer.space.pem | 25 +++++++++++++++++++++++++ 3 files changed, 70 insertions(+), 14 deletions(-) create mode 100644 qgo.quizer.space-key.pem create mode 100644 qgo.quizer.space.pem diff --git a/main.go b/main.go index 3bbf19d..53a6938 100644 --- a/main.go +++ b/main.go @@ -6,40 +6,46 @@ import ( "log" "net/http" + "github.com/quic-go/quic-go/http3" "github.com/quic-go/webtransport-go" ) func main() { - - mux := http.NewServeMux() - + // 1. Создаем WebTransport Server wt := &webtransport.Server{ CheckOrigin: func(r *http.Request) bool { return true }, } + mux := http.NewServeMux() mux.HandleFunc("/chat", func(w http.ResponseWriter, r *http.Request) { - + // 2. Апгрейд соединения до WebTransport session, err := wt.Upgrade(w, r) if err != nil { - log.Println("upgrade error:", err) + log.Printf("Upgrade error: %v", err) return } - go handleChatSession(session) }) - server := &http.Server{ + // 3. Настройка HTTP/3 сервера + // В современных версиях quic-go/http3 достаточно передать Handler, + // который внутри вызывает wt.Upgrade + server := http3.Server{ Addr: ":8080", Handler: mux, } - fmt.Println("Server started") + fmt.Println("WebTransport (HTTP/3) Server started on :8080") - log.Fatal(server.ListenAndServe()) + // 4. Запуск с TLS (обязательно для HTTP/3) + // Для теста в Swarm используйте свои cert.pem и key.pem + err := server.ListenAndServeTLS("qgo.quizer.space.pem", "qgo.quizer.space-key.pem") + if err != nil { + log.Fatal(err) + } } func handleChatSession(session *webtransport.Session) { - for { stream, err := session.AcceptStream(context.Background()) if err != nil { @@ -48,12 +54,9 @@ func handleChatSession(session *webtransport.Session) { go func(s webtransport.Stream) { defer s.Close() - buf := make([]byte, 1024) n, _ := s.Read(buf) - - fmt.Println("Message:", string(buf[:n])) - + fmt.Printf("Message: %s\n", string(buf[:n])) s.Write([]byte("Server: OK")) }(*stream) } diff --git a/qgo.quizer.space-key.pem b/qgo.quizer.space-key.pem new file mode 100644 index 0000000..49aa6bd --- /dev/null +++ b/qgo.quizer.space-key.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDSOex5d+izX1d5 +j60wiUjTvMYC5cpykoeMVLzMGyCuIBFvBj2s/6fU0Q1xu6QRhRP//QOmUZRDqJ6/ +kNcs38fBst8humrDqpY0geP+CIeHq5DqvehRtrJEAyMnAF+BvnqmTbEhKGN/Vobe +48Nk0bJjoqbf4y9UBdKJ3WKGkDZDMbQKcnD6mUPvSI8S9oXreA+qllP3DA/5JnCd +DlzUc0F9hrCTTIluEO5/birs1e0VbKWlxw81HrUmJGKaMdAwzby4yH0S0O37VU/b +X9vkU3zBjMY//N/GG8ymhigvW6lVxvTX6bz5vRvx1XLKBMBK8nzI4KZo8jhQQg/U +UEOgpfeXAgMBAAECggEABRz3jXTHKiW1gPVnpviP1uaOgl+IbwT1WwpslSJLxzBs +fCDQuzZ0pI55Hz0LHon4FI/Y2OC/FG4zfkFNmn/O4f0xxCY+loe9o4VNQE6AzWH0 +4mDAF8yzxUe2QSqXKBaz8PuOxVmwIda+7QjpJbib+CRqnqNt8UM6/bNuxAsZ5sRx +Z7orKKpluDkaowhiXucnpmaeDvCOlLbnfMoChemIvrxwPik0AAfyBbMLb/fB648K +7JR18tYQFz5dSXebqUc9vp7//c/zLdED9O8thOQIsWh/lRGjDqHzC6TrqTpe4iGW +jgr9+9/HRxva4MMcu/+hRziB/M4+sin0VN46gDOBcQKBgQDZn3xh9YKQLFAUBxjF +rkTBVNbwMCfsMgx1bBENJH2uUTEAgyUTQFr8ClLEcdbwD5PUxYI3APGHImlEqhT8 +5jZZfnDwdjwL7phfILAm/y4wxZ+Uoll8LQJ1wrtdqY8dxtq3zpSDqf2yzdUmVZE5 +lh5gOmXoG59Dp9U6/B6xqnluLQKBgQD3TIPjhfaFFln9HLnfMG2tKWDhwp3femqS +NOy4F2DAa2wDzRyDysnabJWYvziAgVslvBJUn3T7De+1ktHNsESsfBG/37kFGTva +QMSDGO5wDHAWD8qORmNEpXvi6QvN949M1bEVhMjcobs95s05HiAILx24oXE6nWZT +6M5rWRqbUwKBgHwIEfQi4U8acml3wf6o3Db0C6zJRXew7rjd5rn+2kLHs43/MNpQ +C4sqtxGPcFlSB4d1Kkn/F6lVS3n/FgctjjxjfCsQuBh03BMbpkoTllflypYEEcxc +OtKzMeaoBRGLjIzGCI8iC54lAh7fFe4kSRu/LOWlGJiOx1De8P+BkcPhAoGADFqs +NA+bMybctAJdXsMCl6X7iwu361QoQsmWEdRJJxO2v7HdfNACqYDHMGxNHE5aCVaN +6+BTbb9SfFWrWYU2yQ8hq943VgPes5aMuqfiMYLNjqyXR+hISUOjHsDZsB5v8Dy0 +rgiGKE+EFSGUmwfgPchsya53A6CdXg/BUCeRZrUCgYBOM5RiHnkZrkWJ/zfKF6Mu +qavcEDWo5qQD8Dd8tzFGA48r8zVgr6+6Lqm736EHFLWw+TKTsXlV1AkvuX40CZkg +GP7319dc5ytzITMIo3vEMpf1VS1RrrN7nRoVSiKzQplnU1+CTWPZckKP9h8oKn+9 +zk0yHcuSd8wV2oa4KSGAHw== +-----END PRIVATE KEY----- diff --git a/qgo.quizer.space.pem b/qgo.quizer.space.pem new file mode 100644 index 0000000..26d13de --- /dev/null +++ b/qgo.quizer.space.pem @@ -0,0 +1,25 @@ +-----BEGIN CERTIFICATE----- +MIIENDCCApygAwIBAgIQGGUyGgFmEmhZArrvVGYLDDANBgkqhkiG9w0BAQsFADB1 +MR4wHAYDVQQKExVta2NlcnQgZGV2ZWxvcG1lbnQgQ0ExJTAjBgNVBAsMHFJFWFxz +bWlsZXJleEBSZXggKFNtaWxlIFJleCkxLDAqBgNVBAMMI21rY2VydCBSRVhcc21p +bGVyZXhAUmV4IChTbWlsZSBSZXgpMB4XDTI2MDMwOTIyMzMyNVoXDTI4MDYwOTIy +MzMyNVowUDEnMCUGA1UEChMebWtjZXJ0IGRldmVsb3BtZW50IGNlcnRpZmljYXRl +MSUwIwYDVQQLDBxSRVhcc21pbGVyZXhAUmV4IChTbWlsZSBSZXgpMIIBIjANBgkq +hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0jnseXfos19XeY+tMIlI07zGAuXKcpKH +jFS8zBsgriARbwY9rP+n1NENcbukEYUT//0DplGUQ6iev5DXLN/HwbLfIbpqw6qW +NIHj/giHh6uQ6r3oUbayRAMjJwBfgb56pk2xIShjf1aG3uPDZNGyY6Km3+MvVAXS +id1ihpA2QzG0CnJw+plD70iPEvaF63gPqpZT9wwP+SZwnQ5c1HNBfYawk0yJbhDu +f24q7NXtFWylpccPNR61JiRimjHQMM28uMh9EtDt+1VP21/b5FN8wYzGP/zfxhvM +poYoL1upVcb01+m8+b0b8dVyygTASvJ8yOCmaPI4UEIP1FBDoKX3lwIDAQABo2Uw +YzAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwHwYDVR0jBBgw +FoAU5b3W0xZSMRVucu6dgemt+ce4/v0wGwYDVR0RBBQwEoIQcWdvLnF1aXplci5z +cGFjZTANBgkqhkiG9w0BAQsFAAOCAYEAWQVEtzMWonkl8Kp/pVI4qzAmc4bzWyod +pAZYTr/NPNTCUfYFX/3rjfQrSZVsctKoQO4fItTI4jpy4wMgGqQb/XA/Js2bFBpo +L4Hw67QllQcGz+GldYKa7uI9mr1kfddmsiGIS60vO4ggYvYkSLUMTEZQt+zYbqRw +dB0A3dNZnB4xRisUN7a/LodzSEAVXkCVr28hXEiJ2f6rOCs6BUsPrZ44UOC5btzp +NreZN8AtbnhYfYM1tHBDYgblcIW1oMbN0nvPcU0x9+BVCFg0b8/15o2rPH5YpJPm +8n0BMxYVafsFAm3YQM3DOCTlqofbC5pjlZgcJKh7oS+dq2AfR6IT9XLRV+NnyDU+ +vHa2gp0CXL5snPgkSybfms2VrwBwVVtv19DVKEcmhxn4uAcWh9dmdMX9wVc7J7cX +alexvIKPJpftIJeMRBkEtRdmGCamYB+q9wdfcY4EVvDMBajR3Rkc2gQJKzvKbqg3 +MArIHJMHCwJSQV/IwFVSulnCPjY7MQTf +-----END CERTIFICATE-----