@@ -726,13 +726,117 @@ func MoveAndRenameFile(conn net.Conn, srcVolID uint16, srcDirID uint32, srcPath
726726 return ok
727727}
728728
729+ // Sends the AddAppl command to the AFP server.
730+ func AddAppl (conn net.Conn , volID uint16 , dirID uint32 , creator [4 ]byte , applTag [4 ]byte , path string ) bool {
731+ data := []byte {}
732+ data = append (data , AFPAddAppl )
733+ data = append (data , byte (0x00 ))
734+ volIDBytes := make ([]byte , 2 )
735+ binary .BigEndian .PutUint16 (volIDBytes , volID )
736+ data = append (data , volIDBytes ... )
737+ dirIDBytes := make ([]byte , 4 )
738+ binary .BigEndian .PutUint32 (dirIDBytes , dirID )
739+ data = append (data , dirIDBytes ... )
740+ data = append (data , creator [0 ])
741+ data = append (data , creator [1 ])
742+ data = append (data , creator [2 ])
743+ data = append (data , creator [3 ])
744+ data = append (data , applTag [0 ])
745+ data = append (data , applTag [1 ])
746+ data = append (data , applTag [2 ])
747+ data = append (data , applTag [3 ])
748+ data = append (data , byte (0x2 ))
749+ data = append (data , uint8 (len (path )))
750+ data = append (data , []byte (path )... )
751+
752+ packet := CreateFPPacket (DSICommand , data )
753+
754+ // send message
755+ ok := WritePacket (conn , packet )
756+ if ! ok {
757+ return false
758+ }
759+
760+ // read response
761+ _ , ok = ReadPacket (conn )
762+
763+ return ok
764+ }
765+
766+ // Sends the GetAppl command to the AFP server.
767+ func GetAppl (conn net.Conn , volID uint16 , creator [4 ]byte , aIndex uint16 , bitmap uint16 ) (* FPPacket , bool ) {
768+ data := []byte {}
769+ data = append (data , AFPGetAppl )
770+ data = append (data , byte (0x00 ))
771+ volIDBytes := make ([]byte , 2 )
772+ binary .BigEndian .PutUint16 (volIDBytes , volID )
773+ data = append (data , volIDBytes ... )
774+ data = append (data , creator [0 ])
775+ data = append (data , creator [1 ])
776+ data = append (data , creator [2 ])
777+ data = append (data , creator [3 ])
778+ aIndexBytes := make ([]byte , 2 )
779+ binary .BigEndian .PutUint16 (aIndexBytes , aIndex )
780+ data = append (data , aIndexBytes ... )
781+ bitmapBytes := make ([]byte , 2 )
782+ binary .BigEndian .PutUint16 (bitmapBytes , bitmap )
783+ data = append (data , bitmapBytes ... )
784+
785+ packet := CreateFPPacket (DSICommand , data )
786+
787+ // send message
788+ ok := WritePacket (conn , packet )
789+ if ! ok {
790+ return nil , false
791+ }
792+
793+ // read response
794+ response , ok := ReadPacket (conn )
795+
796+ return response , ok
797+ }
798+
799+
800+ // Sends the setfileparams command to the AFP server.
801+ func SetFilParams (conn net.Conn , volID uint16 , dirID uint32 , bitmap uint16 , path string , buffer []byte ) bool {
802+ data := []byte {}
803+ data = append (data , AFPSetFileParams )
804+ data = append (data , byte (0x00 ))
805+ volIDBytes := make ([]byte , 2 )
806+ binary .BigEndian .PutUint16 (volIDBytes , volID )
807+ data = append (data , volIDBytes ... )
808+ dirIDBytes := make ([]byte , 4 )
809+ binary .BigEndian .PutUint32 (dirIDBytes , dirID )
810+ data = append (data , dirIDBytes ... )
811+ bitmapBytes := make ([]byte , 2 )
812+ binary .BigEndian .PutUint16 (bitmapBytes , bitmap )
813+ data = append (data , bitmapBytes ... )
814+ data = append (data , byte (0x2 ))
815+ data = append (data , uint8 (len (path )))
816+ data = append (data , []byte (path )... )
817+ data = append (data , buffer ... )
818+
819+ packet := CreateFPPacket (DSICommand , data )
820+
821+ // send message
822+ ok := WritePacket (conn , packet )
823+ if ! ok {
824+ return false
825+ }
826+
827+ // read response
828+ _ , ok = ReadPacket (conn )
829+
830+ return ok
831+ }
832+
833+
729834// Sends the Delete command to the AFP server.
730835func Delete (conn net.Conn , volumeID uint16 , dirID uint32 , path string ) bool {
731836 // requires protocol 3.2 and specific support configured at build time.
732837 pathElements := strings .Split (path , "/" )
733838 fileName := pathElements [len (pathElements )- 1 ]
734839
735- // from nmap lua library -- data = string.pack( ">BBI2I4I2I2", COMMAND.FPOpenFork, flag, volume_id, did, file_bitmap, access_mode ) .. encode_path(path)
736840 data := []byte {}
737841 data = append (data , AFPDelete )
738842 data = append (data , byte (0x00 ))
0 commit comments