grim/gobnc
Clone
Summary
Browse
Changes
Graph
Just cleaning up old incomplete commits
draft
2020-04-27, Gary Kramlich
289b2d7f32b6
Just cleaning up old incomplete commits
package
server
import
(
"fmt"
"net"
"sync"
)
type
Server
struct
{
cfg
*
Config
sock
net
.
Listener
proxies
map
[
string
]
*
Proxy
proxyLock
sync
.
Mutex
}
func
NewServer
(
cfg
*
Config
)
*
Server
{
return
&
Server
{
cfg
:
cfg
,
proxies
:
map
[
string
]
*
Proxy
{},
}
}
func
(
s
*
Server
)
Listen
()
error
{
if
s
.
sock
!=
nil
{
return
fmt
.
Errorf
(
"server already listening"
)
}
sock
,
err
:=
net
.
Listen
(
"tcp"
,
s
.
cfg
.
ListenAddress
())
if
err
!=
nil
{
return
err
}
s
.
sock
=
sock
defer
s
.
sock
.
Close
()
for
{
conn
,
err
:=
s
.
sock
.
Accept
()
if
err
!=
nil
{
return
err
}
proxy
:=
NewProxy
(
s
,
conn
)
go
proxy
.
Run
()
}
return
nil
}