44 lines
839 B
Go
44 lines
839 B
Go
package chisel
|
|
|
|
import (
|
|
chserver "github.com/jpillora/chisel/server"
|
|
)
|
|
|
|
type Server struct {
|
|
address string
|
|
port string
|
|
fingerprint string
|
|
}
|
|
|
|
func NewServer(address string, port string) *Server {
|
|
return &Server{
|
|
address: address,
|
|
port: port,
|
|
}
|
|
}
|
|
|
|
// Start starts the reverse tunnel server
|
|
func (server *Server) Start() error {
|
|
|
|
// TODO: keyseed management (persistence)
|
|
// + auth management
|
|
// Consider multiple users for auth?
|
|
config := &chserver.Config{
|
|
Reverse: true,
|
|
KeySeed: "keyseedexample",
|
|
Auth: "agent@randomstring",
|
|
}
|
|
|
|
chiselServer, err := chserver.NewServer(config)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
server.fingerprint = chiselServer.GetFingerprint()
|
|
return chiselServer.Start(server.address, server.port)
|
|
}
|
|
|
|
func (server *Server) GetFingerprint() string {
|
|
return server.fingerprint
|
|
}
|