X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=src%2Fcypherpunks.ru%2Fgovpn%2Fcmd%2Fgovpn-server%2Fproxy.go;fp=src%2Fcypherpunks.ru%2Fgovpn%2Fcmd%2Fgovpn-server%2Fproxy.go;h=f1f5e09d37aeec0558de8033cd361e2e595e9b62;hb=cecb63f12f4a9f523276a0c19c7feb7437c7f53a;hp=0000000000000000000000000000000000000000;hpb=5123d4cd2b5cfbbba1112710ce29d3d85a3b3ef9;p=govpn.git diff --git a/src/cypherpunks.ru/govpn/cmd/govpn-server/proxy.go b/src/cypherpunks.ru/govpn/cmd/govpn-server/proxy.go new file mode 100644 index 0000000..f1f5e09 --- /dev/null +++ b/src/cypherpunks.ru/govpn/cmd/govpn-server/proxy.go @@ -0,0 +1,45 @@ +/* +GoVPN -- simple secure free software virtual private network daemon +Copyright (C) 2014-2016 Sergey Matveev + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +package main + +import ( + "log" + "net/http" +) + +type proxyHandler struct{} + +func (p proxyHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { + conn, _, err := w.(http.Hijacker).Hijack() + if err != nil { + log.Println("Hijacking failed:", err.Error()) + return + } + conn.Write([]byte("HTTP/1.0 200 OK\n\n")) + go handleTCP(conn) +} + +func proxyStart() { + log.Println("HTTP proxy listening on:" + *proxy) + s := &http.Server{ + Addr: *proxy, + Handler: proxyHandler{}, + } + log.Println("HTTP proxy result:", s.ListenAndServe()) +}