]> Cypherpunks.ru repositories - ucspi.git/blob - cmd/proxy/main.go
Fix docstring
[ucspi.git] / cmd / proxy / main.go
1 /*
2 ucspi/cmd/tlsc -- UCSPI TCP proxy client
3 Copyright (C) 2021 Sergey Matveev <stargrave@stargrave.org>
4
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, version 3 of the License.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 */
17
18 package main
19
20 import (
21         "flag"
22         "fmt"
23         "io"
24         "log"
25         "os"
26 )
27
28 func main() {
29         flag.Usage = func() {
30                 fmt.Fprintln(os.Stderr, "Usage: UCSPIserver [address] UCSPIclient [address] ucspi-proxy")
31         }
32         flag.Parse()
33         log.SetFlags(log.Lshortfile)
34
35         r := os.NewFile(6, "R")
36         if r == nil {
37                 log.Fatalln("no 6 file descriptor")
38         }
39         w := os.NewFile(7, "W")
40         if w == nil {
41                 log.Fatalln("no 7 file descriptor")
42         }
43         worker := make(chan struct{})
44         var err error
45         go func() {
46                 _, err = io.Copy(w, os.Stdin)
47                 w.Close()
48                 close(worker)
49         }()
50         go func() {
51                 io.Copy(os.Stdout, r)
52         }()
53         <-worker
54         if err != nil {
55                 log.Fatalln(err)
56         }
57 }