Commit a2c7cda7 authored by 黄大凯's avatar 黄大凯
Browse files

Try to download a file

parent 37393a8e
Loading
Loading
Loading
Loading
+24 −11
Original line number Diff line number Diff line
@@ -204,11 +204,19 @@ func GetFiles(data chan byte, filelist *[]FileInfo) {
		}
		fmt.Println(idx)
		// idx out of range?
		GetFile(data, &((*filelist)[idx]))
		GetFile(data, &((*filelist)[idx]), filelist)
	}
}

func GetFile(data chan byte, info *FileInfo) {
func lookup(size int64, filelist *[]FileInfo) {
	for i,f := range(*filelist) {
		if f.Size == size {
			fmt.Println("True File:", i, f)
		}
	}
}

func GetFile(data chan byte, info *FileInfo, filelist *[]FileInfo) {

	path := info.Path

@@ -217,22 +225,27 @@ func GetFile(data chan byte, info *FileInfo) {
	clen := GetInteger(data)  /* checksum length */
	remainder := GetInteger(data)  /* block remainder */

	fmt.Println(path, count, blen, clen, remainder)

	fmt.Println(path, count, blen, clen, remainder, info.Size)
	buf := new(bytes.Buffer)
	for {
		t := GetInteger(data)

		if t == 0 {
		token := GetInteger(data)
		fmt.Println("TOKEN", token)
		if token == 0 {
			break
		} else if t < 0 {
		} else if token < 0 {
			// Reference
		} else {
			ctx := make([]byte, t)
			ctx := make([]byte, token)
			GetBytes(data, ctx)
			fmt.Println(ctx)
			ioutil.WriteFile("temp.txt", ctx, 0644)
			fmt.Println("Buff size:", buf.Len())
			buf.Write(ctx)
		}
	}
	fmt.Println("Buff Total size:", buf.Len())
	lookup(int64(buf.Len()), filelist)
	ioutil.WriteFile("temp.txt", buf.Bytes(), 0644)



	// Remote MD4
	md4 := make([]byte, 16)
+16 −12
Original line number Diff line number Diff line
package rsync

import (
	"bytes"
	"encoding/binary"
	"fmt"
	"io"
@@ -126,25 +125,30 @@ func Generate(conn net.Conn, filelist *[]FileInfo) {
	// Those files are `basis files`
	var idx int32
	for i:=0; i < len(*filelist); i++ {
		if strings.Index((*filelist)[i].Path, "src.rpm") != -1 {
		if strings.Index((*filelist)[i].Path, "SRPMS/Packages/p/PyXB-1.2.4-2.el7.src.rpm") != -1 {	// 95533 SRPMS/Packages/z/zanata-python-client-1.5.1-1.el7.src.rpm
			idx = int32(i)
			fmt.Println("Pick:", (*filelist)[i].Path)
			fmt.Println("Pick:", (*filelist)[i].Path, idx)
			break
		}
	}
		buf := new(bytes.Buffer)
		binary.Write(buf, binary.LittleEndian, idx)
		fmt.Println(buf.Bytes())
		conn.Write(buf.Bytes())
		//buf := new(bytes.Buffer)
		binary.Write(conn, binary.LittleEndian, idx)
		//fmt.Println(buf.Bytes())
		//conn.Write(buf.Bytes())
		//binary.Write(conn, binary.LittleEndian, uint16(0x8000))
		empty := []byte{0,0,0,0}

		// identifier, block count, block length, checksum length, block remainder, blocks(short+long)
		conn.Write(empty)
		binary.Write(conn, binary.LittleEndian, int32(32768))
		binary.Write(conn, binary.LittleEndian, int32(2))
		conn.Write(empty)
		conn.Write(empty)
		conn.Write(empty)
		// Empty checksum


		buf.Reset()
		binary.Write(buf, binary.LittleEndian, -1)
		conn.Write(buf.Bytes())
		//buf.Reset()
		binary.Write(conn, binary.LittleEndian, int32(-1))
		//conn.Write(buf.Bytes())


}