67 lines
1.6 KiB
Go
67 lines
1.6 KiB
Go
package portal
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
|
|
"github.com/apex/log"
|
|
"github.com/dpogorzelski/speedrun/proto/portal"
|
|
)
|
|
|
|
func (s *Server) FileRead(ctx context.Context, file *portal.FileReadRequest) (*portal.FileReadResponse, error) {
|
|
fields := log.Fields{
|
|
"context": "file",
|
|
"command": "read",
|
|
"name": file.GetPath(),
|
|
}
|
|
log := log.WithFields(fields)
|
|
log.Debug("Received file read request")
|
|
|
|
content, err := os.ReadFile(file.GetPath())
|
|
if err != nil {
|
|
log.Error(err.Error())
|
|
return nil, err
|
|
}
|
|
|
|
return &portal.FileReadResponse{State: portal.State_UNKNOWN, Content: string(content)}, nil
|
|
}
|
|
|
|
func (s *Server) FileCp(ctx context.Context, file *portal.FileCpRequest) (*portal.FileCpResponse, error) {
|
|
fields := log.Fields{
|
|
"context": "file",
|
|
"command": "cp",
|
|
"name": file.GetDst(),
|
|
}
|
|
log := log.WithFields(fields)
|
|
log.Debug("Received file cp request")
|
|
|
|
if file.GetRemoteSrc() && file.GetRemoteDst() {
|
|
content, err := os.ReadFile(file.GetSrc())
|
|
if err != nil {
|
|
log.Error(err.Error())
|
|
return nil, err
|
|
}
|
|
|
|
err = os.WriteFile(file.GetDst(), content, 0644)
|
|
if err != nil {
|
|
log.Error(err.Error())
|
|
return nil, err
|
|
}
|
|
|
|
} else if file.GetRemoteDst() {
|
|
err := os.WriteFile(file.GetDst(), file.GetContent(), 0644)
|
|
if err != nil {
|
|
log.Error(err.Error())
|
|
return nil, err
|
|
}
|
|
} else if file.GetRemoteSrc() {
|
|
content, err := os.ReadFile(file.GetSrc())
|
|
if err != nil {
|
|
log.Error(err.Error())
|
|
return nil, err
|
|
}
|
|
return &portal.FileCpResponse{State: portal.State_UNKNOWN, Content: content}, nil
|
|
}
|
|
return &portal.FileCpResponse{State: portal.State_UNKNOWN}, nil
|
|
}
|