@@ -726,13 +726,117 @@ func MoveAndRenameFile(conn net.Conn, srcVolID uint16, srcDirID uint32, srcPath
726
726
return ok
727
727
}
728
728
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
+
729
834
// Sends the Delete command to the AFP server.
730
835
func Delete (conn net.Conn , volumeID uint16 , dirID uint32 , path string ) bool {
731
836
// requires protocol 3.2 and specific support configured at build time.
732
837
pathElements := strings .Split (path , "/" )
733
838
fileName := pathElements [len (pathElements )- 1 ]
734
839
735
- // from nmap lua library -- data = string.pack( ">BBI2I4I2I2", COMMAND.FPOpenFork, flag, volume_id, did, file_bitmap, access_mode ) .. encode_path(path)
736
840
data := []byte {}
737
841
data = append (data , AFPDelete )
738
842
data = append (data , byte (0x00 ))
0 commit comments