summaryrefslogtreecommitdiff
path: root/internal/server
diff options
context:
space:
mode:
Diffstat (limited to 'internal/server')
-rw-r--r--internal/server/handlers/networkwriter.go28
-rw-r--r--internal/server/handlers/readcommand.go2
2 files changed, 30 insertions, 0 deletions
diff --git a/internal/server/handlers/networkwriter.go b/internal/server/handlers/networkwriter.go
index fb77b47..f60b7bd 100644
--- a/internal/server/handlers/networkwriter.go
+++ b/internal/server/handlers/networkwriter.go
@@ -300,6 +300,34 @@ func (shw *ServerHandlerWriter) Write(data []byte) (int, error) {
}
}
+// WriteLine implements LineWriter interface by sending data with proper sourceID
+func (shw *ServerHandlerWriter) WriteLine(data []byte, sourceID string, stats interface{}) error {
+ if len(data) == 0 {
+ return nil
+ }
+
+ // Create a line object with proper sourceID
+ contentBuffer := bytes.NewBuffer(data)
+
+ // Extract stats if available
+ var transmittedPerc int = 100
+ var count uint64 = 0
+
+ // Check if stats is fs.stats type (from internal/io/fs package)
+ // For now, we'll use default values since the stats type is internal to fs package
+
+ lineObj := line.New(contentBuffer, count, transmittedPerc, sourceID)
+
+ select {
+ case shw.server.lines <- lineObj:
+ return nil
+ default:
+ // Channel is full, report error
+ shw.sendServerMessage("Server lines channel full, dropping data")
+ return fmt.Errorf("server lines channel full")
+ }
+}
+
// sendServerMessage sends a message through the existing server message channel
func (shw *ServerHandlerWriter) sendServerMessage(message string) {
if shw.serverMessages == nil {
diff --git a/internal/server/handlers/readcommand.go b/internal/server/handlers/readcommand.go
index f7568a5..616bf31 100644
--- a/internal/server/handlers/readcommand.go
+++ b/internal/server/handlers/readcommand.go
@@ -151,6 +151,7 @@ func (r *readCommand) readFiles(ctx context.Context, ltx lcontext.LContext,
} else {
// In client-server mode, write to server handler lines channel
output = NewServerHandlerWriter(r.server, r.server.serverMessages, r.server.user)
+
}
// Create appropriate processor based on mode
@@ -161,6 +162,7 @@ func (r *readCommand) readFiles(ctx context.Context, ltx lcontext.LContext,
// Generate globID just like the original system
globID := r.makeGlobID(path, glob)
+
if !r.server.user.HasFilePermission(path, "readfiles") {
dlog.Server.Error(r.server.user, "No permission to read file", path)
r.server.sendln(r.server.serverMessages, dlog.Server.Warn(r.server.user,