small refactor*
This commit is contained in:
parent
b6b541e050
commit
24a4d30275
232 changed files with 2164 additions and 1906 deletions
server/pkg/go-nfs
58
server/pkg/go-nfs/mount.go
Normal file
58
server/pkg/go-nfs/mount.go
Normal file
|
@ -0,0 +1,58 @@
|
|||
package nfs
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
|
||||
"github.com/willscott/go-nfs-client/nfs/xdr"
|
||||
)
|
||||
|
||||
const (
|
||||
mountServiceID = 100005
|
||||
)
|
||||
|
||||
func init() {
|
||||
_ = RegisterMessageHandler(mountServiceID, uint32(MountProcNull), onMountNull)
|
||||
_ = RegisterMessageHandler(mountServiceID, uint32(MountProcMount), onMount)
|
||||
_ = RegisterMessageHandler(mountServiceID, uint32(MountProcUmnt), onUMount)
|
||||
}
|
||||
|
||||
func onMountNull(ctx context.Context, w *response, userHandle Handler) error {
|
||||
return w.writeHeader(ResponseCodeSuccess)
|
||||
}
|
||||
|
||||
func onMount(ctx context.Context, w *response, userHandle Handler) error {
|
||||
// TODO: auth check.
|
||||
dirpath, err := xdr.ReadOpaque(w.req.Body)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
mountReq := MountRequest{Header: w.req.Header, Dirpath: dirpath}
|
||||
status, handle, flavors := userHandle.Mount(ctx, w.conn, mountReq)
|
||||
|
||||
if err := w.writeHeader(ResponseCodeSuccess); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
writer := bytes.NewBuffer([]byte{})
|
||||
if err := xdr.Write(writer, uint32(status)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
rootHndl := userHandle.ToHandle(ctx, handle, []string{})
|
||||
|
||||
if status == MountStatusOk {
|
||||
_ = xdr.Write(writer, rootHndl)
|
||||
_ = xdr.Write(writer, flavors)
|
||||
}
|
||||
return w.Write(writer.Bytes())
|
||||
}
|
||||
|
||||
func onUMount(ctx context.Context, w *response, userHandle Handler) error {
|
||||
_, err := xdr.ReadOpaque(w.req.Body)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return w.writeHeader(ResponseCodeSuccess)
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue