From 0b43101c5bea49b4e2e07a5c9cca6ad9c616f073 Mon Sep 17 00:00:00 2001 From: Nicola Murino Date: Tue, 27 Apr 2021 18:06:39 +0200 Subject: [PATCH] fix as per review --- request-example.go | 2 +- request-interfaces.go | 6 +++--- request-server.go | 8 ++++---- request-server_test.go | 10 +++++----- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/request-example.go b/request-example.go index 6fa6136..ba22bcd 100644 --- a/request-example.go +++ b/request-example.go @@ -469,7 +469,7 @@ func (fs *root) Realpath(p string) string { if fs.startDirectory == "" || fs.startDirectory == "/" { return cleanPath(p) } - return cleanPathWithBase(p, fs.startDirectory) + return cleanPathWithBase(fs.startDirectory, p) } // In memory file-system-y thing that the Hanlders live on diff --git a/request-interfaces.go b/request-interfaces.go index 05012bf..41e3327 100644 --- a/request-interfaces.go +++ b/request-interfaces.go @@ -86,13 +86,13 @@ type LstatFileLister interface { Lstat(*Request) (ListerAt, error) } -// RealpathFileLister is a FileLister that implements the Realpath method. +// RealPathFileLister is a FileLister that implements the Realpath method. // We use "/" as start directory for relative paths, implementing this // interface you can customize the start directory. // You have to return an absolute POSIX path. -type RealpathFileLister interface { +type RealPathFileLister interface { FileLister - Realpath(string) string + RealPath(string) string } // ListerAt does for file lists what io.ReaderAt does for files. diff --git a/request-server.go b/request-server.go index 51c2e4a..b58aefc 100644 --- a/request-server.go +++ b/request-server.go @@ -199,8 +199,8 @@ func (rs *RequestServer) packetWorker( rpkt = statusFromError(pkt.ID, rs.closeRequest(handle)) case *sshFxpRealpathPacket: var realPath string - if realPather, ok := rs.Handlers.FileList.(RealpathFileLister); ok { - realPath = realPather.Realpath(pkt.getPath()) + if realPather, ok := rs.Handlers.FileList.(RealPathFileLister); ok { + realPath = realPather.RealPath(pkt.getPath()) } else { realPath = cleanPath(pkt.getPath()) } @@ -284,10 +284,10 @@ func cleanPacketPath(pkt *sshFxpRealpathPacket, realPath string) responsePacket // Makes sure we have a clean POSIX (/) absolute path to work with func cleanPath(p string) string { - return cleanPathWithBase(p, "/") + return cleanPathWithBase("/", p) } -func cleanPathWithBase(p, base string) string { +func cleanPathWithBase(base, p string) string { p = filepath.ToSlash(p) if !path.IsAbs(p) { return path.Join(base, p) diff --git a/request-server_test.go b/request-server_test.go index a45b231..62cf311 100644 --- a/request-server_test.go +++ b/request-server_test.go @@ -816,15 +816,15 @@ func TestRealPath(t *testing.T) { } p := root.Realpath(".") - require.Equal(t, root.startDirectory, p) + assert.Equal(t, root.startDirectory, p) p = root.Realpath("/") - require.Equal(t, "/", p) + assert.Equal(t, "/", p) p = root.Realpath("..") - require.Equal(t, "/", p) + assert.Equal(t, "/", p) p = root.Realpath("../../..") - require.Equal(t, "/", p) + assert.Equal(t, "/", p) p = root.Realpath("relpath") - require.Equal(t, path.Join(root.startDirectory, "relpath"), p) + assert.Equal(t, path.Join(root.startDirectory, "relpath"), p) } func TestCleanPath(t *testing.T) {