mirror of
https://github.com/IceWhaleTech/CasaOS.git
synced 2025-12-24 05:24:43 +00:00
Determine the hole punching technique
This commit is contained in:
44
pkg/utils/file/block.go
Normal file
44
pkg/utils/file/block.go
Normal file
@@ -0,0 +1,44 @@
|
||||
package file
|
||||
|
||||
import (
|
||||
"crypto/md5"
|
||||
"encoding/hex"
|
||||
"math"
|
||||
)
|
||||
|
||||
// Get info of block
|
||||
func GetBlockInfo(fileSize int) (blockSize int, length int) {
|
||||
switch {
|
||||
case fileSize <= 1<<28: //256M
|
||||
blockSize = 1 << 17 //128kb
|
||||
case fileSize <= 1<<29: //512M
|
||||
blockSize = 1 << 18 //256kb
|
||||
case fileSize <= 1<<30: //1G
|
||||
blockSize = 1 << 19 //512kb
|
||||
case fileSize <= 1<<31: //2G
|
||||
blockSize = 1 << 20 //(mb)
|
||||
case fileSize <= 1<<32: //4G
|
||||
blockSize = 1 << 21 //2mb
|
||||
case fileSize <= 1<<33: //8G
|
||||
blockSize = 1 << 22 //4mb
|
||||
case fileSize <= 1<<34: //16g
|
||||
blockSize = 1 << 23 //8mb
|
||||
default:
|
||||
blockSize = 1 << 24 //16mb
|
||||
}
|
||||
temp := float64(fileSize) / float64(blockSize)
|
||||
length = int(math.Ceil(temp))
|
||||
return
|
||||
}
|
||||
|
||||
//get the hash of the data
|
||||
func GetHash(data []byte) string {
|
||||
sum := md5.Sum(data)
|
||||
return hex.EncodeToString(sum[:])
|
||||
}
|
||||
|
||||
//Comparison data hash
|
||||
func ComparisonHash(data []byte, hash string) bool {
|
||||
sum := md5.Sum(data)
|
||||
return hex.EncodeToString(sum[:]) == hash
|
||||
}
|
||||
Reference in New Issue
Block a user