mirror of
https://github.com/antoniomika/sish.git
synced 2025-09-26 19:21:15 +08:00
Update golangci-lint
This commit is contained in:
3
.github/workflows/build.yml
vendored
3
.github/workflows/build.yml
vendored
@@ -34,10 +34,9 @@ jobs:
|
||||
- name: Checkout repo
|
||||
uses: actions/checkout@v3
|
||||
- name: Lint the codebase
|
||||
uses: golangci/golangci-lint-action@v3
|
||||
uses: golangci/golangci-lint-action@v8
|
||||
with:
|
||||
version: latest
|
||||
args: -E goimports -E godot
|
||||
- name: Run tests
|
||||
run: |
|
||||
go test -v ./... -cover -race -coverprofile=coverage.out
|
||||
|
9
.golangci.yml
Normal file
9
.golangci.yml
Normal file
@@ -0,0 +1,9 @@
|
||||
version: "2"
|
||||
|
||||
linters:
|
||||
enable:
|
||||
- godot
|
||||
|
||||
formatters:
|
||||
enable:
|
||||
- goimports
|
@@ -459,7 +459,12 @@ func Start(state *utils.State) {
|
||||
state.TCPListeners.Store(httpsServer.Addr, tH)
|
||||
}
|
||||
|
||||
defer httpsListener.Close()
|
||||
defer func() {
|
||||
err := httpsListener.Close()
|
||||
if err != nil {
|
||||
log.Println("Error closing https listener:", err)
|
||||
}
|
||||
}()
|
||||
|
||||
log.Fatal(httpsServer.ServeTLS(httpsListener, "", ""))
|
||||
}()
|
||||
@@ -491,7 +496,12 @@ func Start(state *utils.State) {
|
||||
httpListener = l
|
||||
}
|
||||
|
||||
defer httpListener.Close()
|
||||
defer func() {
|
||||
err := httpListener.Close()
|
||||
if err != nil {
|
||||
log.Println("Error closing http listener:", err)
|
||||
}
|
||||
}()
|
||||
|
||||
log.Fatal(httpServer.Serve(httpListener))
|
||||
}
|
||||
|
@@ -26,7 +26,15 @@ func (pL *proxyListener) Accept() (net.Conn, error) {
|
||||
clientRemote, _, err := net.SplitHostPort(cl.RemoteAddr().String())
|
||||
|
||||
if err != nil || pL.State.IPFilter.Blocked(clientRemote) {
|
||||
cl.Close()
|
||||
err := cl.Close()
|
||||
if err != nil {
|
||||
log.Println("Error closing connection:", err)
|
||||
}
|
||||
|
||||
if viper.GetBool("debug") {
|
||||
log.Printf("Blocked connection from %s to %s", cl.RemoteAddr().String(), cl.LocalAddr().String())
|
||||
}
|
||||
|
||||
return pL.Accept()
|
||||
}
|
||||
|
||||
@@ -58,14 +66,24 @@ func (pL *proxyListener) Accept() (net.Conn, error) {
|
||||
connectionLocation, err := balancer.NextServer()
|
||||
if err != nil {
|
||||
log.Println("Unable to load connection location:", err)
|
||||
teeConn.Close()
|
||||
|
||||
err := teeConn.Close()
|
||||
if err != nil {
|
||||
log.Println("Error closing teeConn:", err)
|
||||
}
|
||||
|
||||
return pL.Accept()
|
||||
}
|
||||
|
||||
host, err := base64.StdEncoding.DecodeString(connectionLocation.Host)
|
||||
if err != nil {
|
||||
log.Println("Unable to decode connection location:", err)
|
||||
teeConn.Close()
|
||||
|
||||
err := teeConn.Close()
|
||||
if err != nil {
|
||||
log.Println("Error closing teeConn:", err)
|
||||
}
|
||||
|
||||
return pL.Accept()
|
||||
}
|
||||
|
||||
@@ -93,7 +111,12 @@ func (pL *proxyListener) Accept() (net.Conn, error) {
|
||||
conn, err := net.Dial("unix", hostAddr)
|
||||
if err != nil {
|
||||
log.Println("Error connecting to tcp balancer:", err)
|
||||
teeConn.Close()
|
||||
|
||||
err := teeConn.Close()
|
||||
if err != nil {
|
||||
log.Println("Error closing teeConn:", err)
|
||||
}
|
||||
|
||||
return pL.Accept()
|
||||
}
|
||||
|
||||
|
@@ -421,14 +421,14 @@ func getProxyProtoVersion(proxyProtoUserVersion string) byte {
|
||||
proxyProtoUserVersion = viper.GetString("proxy-protocol-version")
|
||||
}
|
||||
|
||||
realProtoVersion := 0
|
||||
if proxyProtoUserVersion == "1" {
|
||||
realProtoVersion = 1
|
||||
} else if proxyProtoUserVersion == "2" {
|
||||
realProtoVersion = 2
|
||||
switch proxyProtoUserVersion {
|
||||
case "1":
|
||||
return 1
|
||||
case "2":
|
||||
return 2
|
||||
default:
|
||||
return 0
|
||||
}
|
||||
|
||||
return byte(realProtoVersion)
|
||||
}
|
||||
|
||||
// parseDeadline parses the deadline string provided by the client to a time object.
|
||||
|
@@ -66,7 +66,12 @@ func handleCancelRemoteForward(newRequest *ssh.Request, sshConn *utils.SSHConnec
|
||||
|
||||
if holder.OriginalAddr == check.Addr && holder.OriginalPort == check.Rport {
|
||||
closed = true
|
||||
holder.Close()
|
||||
|
||||
err := holder.Close()
|
||||
if err != nil {
|
||||
log.Println("Error closing listener:", err)
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
@@ -174,8 +179,16 @@ func handleRemoteForward(newRequest *ssh.Request, sshConn *utils.SSHConnection,
|
||||
}
|
||||
return
|
||||
}
|
||||
tmpfile.Close()
|
||||
os.Remove(tmpfile.Name())
|
||||
|
||||
err = tmpfile.Close()
|
||||
if err != nil {
|
||||
log.Println("Error closing temporary file:", err)
|
||||
}
|
||||
|
||||
err = os.Remove(tmpfile.Name())
|
||||
if err != nil {
|
||||
log.Println("Error removing temporary file:", err)
|
||||
}
|
||||
|
||||
listenAddr := tmpfile.Name()
|
||||
|
||||
@@ -205,10 +218,19 @@ func handleRemoteForward(newRequest *ssh.Request, sshConn *utils.SSHConnection,
|
||||
deferHandler := func() {}
|
||||
|
||||
cleanupChanListener := func() {
|
||||
listenerHolder.Close()
|
||||
err := listenerHolder.Close()
|
||||
if err != nil {
|
||||
log.Println("Error closing listener:", err)
|
||||
}
|
||||
|
||||
state.Listeners.Delete(listenAddr)
|
||||
sshConn.Listeners.Delete(listenAddr)
|
||||
os.Remove(listenAddr)
|
||||
|
||||
err = os.Remove(listenAddr)
|
||||
if err != nil {
|
||||
log.Println("Error removing unix socket:", err)
|
||||
}
|
||||
|
||||
deferHandler()
|
||||
}
|
||||
|
||||
@@ -334,7 +356,11 @@ func handleRemoteForward(newRequest *ssh.Request, sshConn *utils.SSHConnection,
|
||||
})
|
||||
|
||||
if balancers == 0 {
|
||||
tH.Listener.Close()
|
||||
err := tH.Listener.Close()
|
||||
if err != nil {
|
||||
log.Println("Error closing TCPListener:", err)
|
||||
}
|
||||
|
||||
state.Listeners.Delete(tcpAddr)
|
||||
state.TCPListeners.Delete(tcpAddr)
|
||||
}
|
||||
@@ -373,7 +399,11 @@ func handleRemoteForward(newRequest *ssh.Request, sshConn *utils.SSHConnection,
|
||||
newChan, newReqs, err := sshConn.SSHConn.OpenChannel("forwarded-tcpip", ssh.Marshal(resp))
|
||||
if err != nil {
|
||||
sshConn.SendMessage(err.Error(), true)
|
||||
cl.Close()
|
||||
|
||||
err := cl.Close()
|
||||
if err != nil {
|
||||
log.Println("Error closing client connection:", err)
|
||||
}
|
||||
}
|
||||
|
||||
if sshConn.ProxyProto != 0 && listenerType == utils.TCPListener {
|
||||
|
@@ -182,7 +182,11 @@ func Start() {
|
||||
state.Listeners.Store(viper.GetString("ssh-address"), listener)
|
||||
|
||||
defer func() {
|
||||
listener.Close()
|
||||
err := listener.Close()
|
||||
if err != nil {
|
||||
log.Println("Error closing listener:", err)
|
||||
}
|
||||
|
||||
state.Listeners.Delete(viper.GetString("ssh-address"))
|
||||
}()
|
||||
|
||||
@@ -205,7 +209,15 @@ func Start() {
|
||||
clientRemote, _, err := net.SplitHostPort(conn.RemoteAddr().String())
|
||||
|
||||
if err != nil || state.IPFilter.Blocked(clientRemote) {
|
||||
conn.Close()
|
||||
err := conn.Close()
|
||||
if err != nil {
|
||||
log.Println("Error closing connection:", err)
|
||||
}
|
||||
|
||||
if viper.GetBool("debug") {
|
||||
log.Printf("Blocked connection from %s to %s", conn.RemoteAddr().String(), conn.LocalAddr().String())
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
@@ -220,7 +232,10 @@ func Start() {
|
||||
<-time.After(viper.GetDuration("cleanup-unauthed-timeout"))
|
||||
clientLoggedInMutex.Lock()
|
||||
if !clientLoggedIn {
|
||||
conn.Close()
|
||||
err := conn.Close()
|
||||
if err != nil {
|
||||
log.Println("Error closing connection:", err)
|
||||
}
|
||||
}
|
||||
clientLoggedInMutex.Unlock()
|
||||
}()
|
||||
@@ -233,8 +248,12 @@ func Start() {
|
||||
clientLoggedIn = true
|
||||
clientLoggedInMutex.Unlock()
|
||||
if err != nil {
|
||||
conn.Close()
|
||||
log.Println(err)
|
||||
err := conn.Close()
|
||||
if err != nil {
|
||||
log.Println("Error closing connection:", err)
|
||||
}
|
||||
|
||||
log.Println("SSH connection could not be established", err)
|
||||
return
|
||||
}
|
||||
|
||||
|
@@ -92,7 +92,13 @@ func HandleSSHConn(sshListener net.Listener, successAuth *chan bool) {
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
defer func() {
|
||||
err := conn.Close()
|
||||
if err != nil {
|
||||
log.Print("Error closing connection", err)
|
||||
}
|
||||
}()
|
||||
|
||||
// GetSSHConfig is the method we are testing to validate that it
|
||||
// can use an http request to validate client public key auth
|
||||
@@ -102,7 +108,11 @@ func HandleSSHConn(sshListener net.Listener, successAuth *chan bool) {
|
||||
*successAuth <- false
|
||||
return
|
||||
}
|
||||
connection.Close()
|
||||
|
||||
err = connection.Close()
|
||||
if err != nil {
|
||||
log.Print("Error closing connection", err)
|
||||
}
|
||||
|
||||
*successAuth <- true
|
||||
}
|
||||
@@ -117,7 +127,14 @@ func TestAuthenticationKeyRequest(t *testing.T) {
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
defer os.RemoveAll(dir)
|
||||
|
||||
defer func() {
|
||||
err := os.RemoveAll(dir)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
}()
|
||||
|
||||
viper.Set("private-keys-directory", dir)
|
||||
viper.Set("authentication", true)
|
||||
|
||||
@@ -193,7 +210,12 @@ func TestAuthenticationKeyRequest(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
defer sshListener.Close()
|
||||
defer func() {
|
||||
err := sshListener.Close()
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
}()
|
||||
|
||||
successAuth := make(chan bool)
|
||||
go HandleSSHConn(sshListener, &successAuth)
|
||||
@@ -217,7 +239,10 @@ func TestAuthenticationKeyRequest(t *testing.T) {
|
||||
t.Log("ssh client rejected", err)
|
||||
} else {
|
||||
t.Log("ssh client connected")
|
||||
client.Close()
|
||||
err := client.Close()
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
didAuth := <-successAuth
|
||||
|
@@ -82,7 +82,12 @@ func (s *SSHConnection) ListenerCount() int {
|
||||
func (s *SSHConnection) CleanUp(state *State) {
|
||||
s.Closed.Do(func() {
|
||||
close(s.Close)
|
||||
s.SSHConn.Close()
|
||||
|
||||
err := s.SSHConn.Close()
|
||||
if err != nil {
|
||||
log.Println("Error closing SSH connection:", err)
|
||||
}
|
||||
|
||||
state.SSHConnections.Delete(s.SSHConn.RemoteAddr().String())
|
||||
log.Println("Closed SSH connection for:", s.SSHConn.RemoteAddr().String(), "user:", s.SSHConn.User())
|
||||
})
|
||||
@@ -208,8 +213,15 @@ func (i IdleTimeoutConn) Write(buf []byte) (int, error) {
|
||||
// CopyBoth copies betwen a reader and writer and will cleanup each.
|
||||
func CopyBoth(writer net.Conn, reader io.ReadWriteCloser) {
|
||||
closeBoth := func() {
|
||||
reader.Close()
|
||||
writer.Close()
|
||||
err := reader.Close()
|
||||
if err != nil {
|
||||
log.Println("Error closing reader:", err)
|
||||
}
|
||||
|
||||
err = writer.Close()
|
||||
if err != nil {
|
||||
log.Println("Error closing writer:", err)
|
||||
}
|
||||
}
|
||||
|
||||
var tcon io.ReadWriter
|
||||
|
@@ -169,7 +169,10 @@ func (c *WebConsole) HandleDisconnectRoute(proxyUrl string, g *gin.Context) {
|
||||
listener, ok := listenerTmp.(*ListenerHolder)
|
||||
|
||||
if ok {
|
||||
listener.Close()
|
||||
err := listener.Close()
|
||||
if err != nil {
|
||||
log.Println("Error closing listener:", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -194,12 +197,7 @@ func (c *WebConsole) HandleClients(proxyUrl string, g *gin.Context) {
|
||||
routeListeners := map[string]map[string]any{}
|
||||
|
||||
sshConn.Listeners.Range(func(name string, val net.Listener) bool {
|
||||
ok := true
|
||||
if name == "" {
|
||||
ok = false
|
||||
}
|
||||
|
||||
if ok {
|
||||
if name != "" {
|
||||
listeners = append(listeners, name)
|
||||
}
|
||||
|
||||
@@ -347,7 +345,10 @@ func (c *WebConsole) RemoveRoute(route string) {
|
||||
}
|
||||
|
||||
for _, client := range clients {
|
||||
client.Conn.Close()
|
||||
err := client.Conn.Close()
|
||||
if err != nil {
|
||||
log.Println("Error closing websocket connection:", err)
|
||||
}
|
||||
}
|
||||
|
||||
c.Clients.Delete(route)
|
||||
@@ -407,7 +408,11 @@ func (c *WebConsole) BroadcastRoute(route string, message []byte) {
|
||||
// Handle is the only place socket reads and writes happen.
|
||||
func (c *WebClient) Handle() {
|
||||
defer func() {
|
||||
c.Conn.Close()
|
||||
err := c.Conn.Close()
|
||||
if err != nil {
|
||||
log.Println("Error closing websocket connection:", err)
|
||||
}
|
||||
|
||||
c.Console.RemoveClient(c.Route, c)
|
||||
}()
|
||||
|
||||
|
@@ -92,7 +92,15 @@ func (tH *TCPHolder) Handle(state *State) {
|
||||
clientRemote, _, err := net.SplitHostPort(cl.RemoteAddr().String())
|
||||
|
||||
if err != nil || state.IPFilter.Blocked(clientRemote) {
|
||||
cl.Close()
|
||||
err := cl.Close()
|
||||
if err != nil {
|
||||
log.Printf("Unable to close connection: %s", err)
|
||||
}
|
||||
|
||||
if viper.GetBool("debug") {
|
||||
log.Printf("Blocked connection from %s to %s", cl.RemoteAddr().String(), cl.LocalAddr().String())
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
@@ -103,7 +111,12 @@ func (tH *TCPHolder) Handle(state *State) {
|
||||
tlsHello, teeConn, err := PeekTLSHello(cl)
|
||||
if tlsHello == nil {
|
||||
log.Printf("Unable to read TLS hello: %s", err)
|
||||
cl.Close()
|
||||
|
||||
err := cl.Close()
|
||||
if err != nil {
|
||||
log.Printf("Unable to close connection: %s", err)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
@@ -112,7 +125,12 @@ func (tH *TCPHolder) Handle(state *State) {
|
||||
_, err = io.ReadFull(teeConn, bufBytes)
|
||||
if err != nil {
|
||||
log.Printf("Unable to read buffered data: %s", err)
|
||||
cl.Close()
|
||||
|
||||
err := cl.Close()
|
||||
if err != nil {
|
||||
log.Printf("Unable to close connection: %s", err)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
@@ -131,7 +149,12 @@ func (tH *TCPHolder) Handle(state *State) {
|
||||
|
||||
if pB == nil {
|
||||
log.Printf("Unable to load connection location: %s not found on TCP listener %s", balancerName, tH.TCPHost)
|
||||
cl.Close()
|
||||
|
||||
err := cl.Close()
|
||||
if err != nil {
|
||||
log.Printf("Unable to close connection: %s", err)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
}
|
||||
@@ -141,14 +164,24 @@ func (tH *TCPHolder) Handle(state *State) {
|
||||
connectionLocation, err := balancer.NextServer()
|
||||
if err != nil {
|
||||
log.Println("Unable to load connection location:", err)
|
||||
cl.Close()
|
||||
|
||||
err := cl.Close()
|
||||
if err != nil {
|
||||
log.Printf("Unable to close connection: %s", err)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
host, err := base64.StdEncoding.DecodeString(connectionLocation.Host)
|
||||
if err != nil {
|
||||
log.Println("Unable to decode connection location:", err)
|
||||
cl.Close()
|
||||
|
||||
err := cl.Close()
|
||||
if err != nil {
|
||||
log.Printf("Unable to close connection: %s", err)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
@@ -176,7 +209,12 @@ func (tH *TCPHolder) Handle(state *State) {
|
||||
conn, err := net.Dial("unix", hostAddr)
|
||||
if err != nil {
|
||||
log.Println("Error connecting to tcp balancer:", err)
|
||||
cl.Close()
|
||||
|
||||
err := cl.Close()
|
||||
if err != nil {
|
||||
log.Printf("Unable to close connection: %s", err)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
@@ -184,7 +222,12 @@ func (tH *TCPHolder) Handle(state *State) {
|
||||
_, err := conn.Write(bufBytes)
|
||||
if err != nil {
|
||||
log.Println("Unable to write to conn:", err)
|
||||
cl.Close()
|
||||
|
||||
err := cl.Close()
|
||||
if err != nil {
|
||||
log.Printf("Unable to close connection: %s", err)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
}
|
||||
|
@@ -176,7 +176,10 @@ func GetRandomPortInRange(listenAddr string, portRange string) uint32 {
|
||||
return GetRandomPortInRange(listenAddr, portRange)
|
||||
}
|
||||
|
||||
ln.Close()
|
||||
err = ln.Close()
|
||||
if err != nil {
|
||||
log.Println("Error closing listener:", err)
|
||||
}
|
||||
|
||||
return bindPort
|
||||
}
|
||||
@@ -742,7 +745,10 @@ func GetOpenPort(addr string, port uint32, state *State, sshConn *SSHConnection,
|
||||
if listenErr != nil {
|
||||
err = listenErr
|
||||
} else {
|
||||
ln.Close()
|
||||
err := ln.Close()
|
||||
if err != nil {
|
||||
log.Println("Error closing listener:", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user