entity

package
v0.0.0-...-68016d8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 21, 2026 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const HEADER_LINE_SIZE = 20

HEADER_LINE_SIZE 定义了头行的大小。

View Source
const HeaderSize = 12

Variables

This section is empty.

Functions

func GetIndexBlockLength

func GetIndexBlockLength(dbType string) int

GetIndexBlockLength 返回索引块的长度

Types

type DataBlock

type DataBlock struct {
	// contains filtered or unexported fields
}

DataBlock 表示数据库中的一个数据块。 它包含一个区域和一个指向数据库文件中数据的指针。 DataBlock 对象的内存结构如下: +----------------+-----------+ | []byte | int | +----------------+-----------+ | region | dataPtr | +----------------+-----------+

func NewDataBlock

func NewDataBlock(region []byte, dataPtr int) *DataBlock

NewDataBlock 创建一个新的 DataBlock,使用给定的 region 和 dataPtr。

func (*DataBlock) GetDataPtr

func (db *DataBlock) GetDataPtr() int

GetDataPtr 返回此数据块的数据指针。

func (*DataBlock) GetRegion

func (db *DataBlock) GetRegion(geoMapData []byte, columnSelection int64) string

GetRegion 返回此数据块的区域。

func (*DataBlock) SetDataPtr

func (db *DataBlock) SetDataPtr(dataPtr int) *DataBlock

SetDataPtr 将此数据块的数据指针设置为指定值。

func (*DataBlock) SetRegion

func (db *DataBlock) SetRegion(region []byte) *DataBlock

SetRegion 将此数据块的区域设置为指定值。

type DecryptedBlock

type DecryptedBlock struct {
	// contains filtered or unexported fields
}

DecryptedBlock

  • 表示加密前的解密数据块,包含客户端ID、过期日期和IP数据库的起始指针。
  • 该结构体提供了将这些数据序列化为字节数组的功能,并使用AES加密。 *
  • +----------------+----------------+----------------+----------------+
  • | clientId | expirationDate | | |
  • | (12 位) | (20 位) | | |
  • +----------------+----------------+----------------+----------------+
  • | randomSize (32 位) |
  • +--------------------------------------------------------------------+
  • | 保留 (64 位) |
  • +--------------------------------------------------------------------+

func Decrypt

func Decrypt(key string, encryptedBytes []byte) (*DecryptedBlock, error)

Decrypt 解密加密的字节并返回DecryptedBlock

func (*DecryptedBlock) Encrypt

func (d *DecryptedBlock) Encrypt(data []byte, key string) ([]byte, error)

Encrypt 使用指定的密钥对提供的字节数组进行AES加密 密钥应为表示AES密钥的base64编码字符串

func (*DecryptedBlock) GetClientId

func (d *DecryptedBlock) GetClientId() int

GetClientId 获取客户端ID

func (*DecryptedBlock) GetExpirationDate

func (d *DecryptedBlock) GetExpirationDate() int

GetExpirationDate 获取过期日期

func (*DecryptedBlock) GetRandomSize

func (d *DecryptedBlock) GetRandomSize() int

GetRandomSize 获取随机字节的大小 此方法返回加密过程中使用的随机字节的大小 随机字节的大小对于确保加密的唯一性和安全性至关重要

func (*DecryptedBlock) SetClientId

func (d *DecryptedBlock) SetClientId(clientId int)

SetClientId 设置客户端ID

func (*DecryptedBlock) SetExpirationDate

func (d *DecryptedBlock) SetExpirationDate(expirationDate int)

SetExpirationDate 设置过期日期

func (*DecryptedBlock) SetRandomSize

func (d *DecryptedBlock) SetRandomSize(randomSize int)

SetRandomSize 设置随机字节的大小 此方法允许设置加密过程中要使用的随机字节的大小 调整随机字节的大小可能会影响加密的安全性和性能

func (*DecryptedBlock) ToBytes

func (d *DecryptedBlock) ToBytes() []byte

ToBytes 将DecryptedBlock实例序列化为字节数组 数组结构如下:前4字节包含客户端ID和过期日期, 接下来的4字节包含随机大小,最后8字节保留并初始化为0

func (*DecryptedBlock) ToEncryptedBytes

func (d *DecryptedBlock) ToEncryptedBytes(key string) ([]byte, error)

ToEncryptedBytes 将DecryptedBlock加密并返回加密后的字节

type HeaderBlock

type HeaderBlock struct {
	// contains filtered or unexported fields
}

HeaderBlock 表示数据库中的一个头块。 它包含一个索引起始IP地址和一个索引指针。 它还提供了一个方法来获取用于数据库存储的字节。

HeaderBlock实例的内存布局:

+-----------------+-----------------+ | indexStartIp | indexPtr | | (字节数组) | (int) | +-----------------+-----------------+

func NewHeaderBlock

func NewHeaderBlock(indexStartIp []byte, indexPtr int) *HeaderBlock

NewHeaderBlock 使用指定的索引起始IP地址和索引指针构造一个新的HeaderBlock。

func (*HeaderBlock) GetBytes

func (hb *HeaderBlock) GetBytes() []byte

GetBytes 返回用于数据库存储的字节。 返回的字节数组长度为20字节,前16字节为索引起始IP地址,后4字节为索引指针。

func (*HeaderBlock) GetIndexPtr

func (hb *HeaderBlock) GetIndexPtr() int

GetIndexPtr 返回此头块的索引指针。

func (*HeaderBlock) GetIndexStartIp

func (hb *HeaderBlock) GetIndexStartIp() []byte

GetIndexStartIp 返回此头块的索引起始IP地址。

func (*HeaderBlock) SetIndexPtr

func (hb *HeaderBlock) SetIndexPtr(indexPtr int) *HeaderBlock

SetIndexPtr 将此头块的索引指针设置为指定值。

func (*HeaderBlock) SetIndexStartIp

func (hb *HeaderBlock) SetIndexStartIp(indexStartIp []byte) *HeaderBlock

SetIndexStartIp 将此头块的索引起始IP地址设置为指定值。

type HyperHeaderBlock

type HyperHeaderBlock struct {
	Version            int64
	ClientId           int64
	EncryptedBlockSize int
	EncryptedData      []byte
	DecryptedBlock     *DecryptedBlock
}

func FromBytes

func FromBytes(bytes []byte) *HyperHeaderBlock

FromBytes 从12字节长的字节数组反序列化HyperHeaderBlock实例。 此方法接受一个字节数组并从中构造一个HyperHeaderBlock实例。 字节数组的结构预期如下: - 前4个字节表示HyperHeaderBlock的版本。 - 接下来的4个字节表示客户端ID。 - 再接下来的4个字节表示加密数据的长度。

func (*HyperHeaderBlock) GetClientId

func (h *HyperHeaderBlock) GetClientId() int64

GetClientId 获取HyperHeaderBlock的客户端ID。

func (*HyperHeaderBlock) GetDecryptedBlock

func (h *HyperHeaderBlock) GetDecryptedBlock() *DecryptedBlock

GetDecryptedBlock 获取解密后的块。

func (*HyperHeaderBlock) GetEncryptedBlockSize

func (h *HyperHeaderBlock) GetEncryptedBlockSize() int

GetEncryptedBlockSize 获取加密数据块的大小。

func (*HyperHeaderBlock) GetEncryptedData

func (h *HyperHeaderBlock) GetEncryptedData() []byte

GetEncryptedData 获取加密数据。

func (*HyperHeaderBlock) GetHeaderSize

func (h *HyperHeaderBlock) GetHeaderSize() int

GetHeaderSize 返回HyperHeaderBlock的总大小。 大小计算为以下各项之和: - 头部的大小(12字节) - 加密数据块的大小 - 随机字节的大小

func (*HyperHeaderBlock) GetVersion

func (h *HyperHeaderBlock) GetVersion() int64

GetVersion 获取HyperHeaderBlock的版本。

func (*HyperHeaderBlock) SetClientId

func (h *HyperHeaderBlock) SetClientId(clientId int64)

SetClientId 设置HyperHeaderBlock的客户端ID。

func (*HyperHeaderBlock) SetDecryptedBlock

func (h *HyperHeaderBlock) SetDecryptedBlock(decryptedBlock *DecryptedBlock)

SetDecryptedBlock 设置解密后的块。

func (*HyperHeaderBlock) SetEncryptedBlockSize

func (h *HyperHeaderBlock) SetEncryptedBlockSize(encryptedBlockSize int)

SetEncryptedBlockSize 设置加密数据块的大小。

func (*HyperHeaderBlock) SetEncryptedData

func (h *HyperHeaderBlock) SetEncryptedData(encryptedData []byte)

SetEncryptedData 设置加密数据。

func (*HyperHeaderBlock) SetVersion

func (h *HyperHeaderBlock) SetVersion(version int64)

SetVersion 设置HyperHeaderBlock的版本。

func (*HyperHeaderBlock) ToBytes

func (h *HyperHeaderBlock) ToBytes() []byte

ToBytes 将HyperHeaderBlock实例转换为字节数组。 此方法将HyperHeaderBlock实例序列化为字节数组,可用于存储或传输。 字节数组的结构如下: - 前4个字节表示HyperHeaderBlock的版本。 - 接下来的4个字节表示客户端ID。 - 再接下来的4个字节表示加密数据的长度。

type IndexBlock

type IndexBlock struct {
	// contains filtered or unexported fields
}

IndexBlock 表示数据库中的索引块。 索引块包含起始IP、结束IP、数据指针和数据长度。 起始IP和结束IP用于确定数据块覆盖的IP地址范围。 数据指针用于定位数据库中的数据块。 数据长度用于从数据库中读取数据块。

func NewIndexBlock

func NewIndexBlock(startIp, endIp []byte, dataPtr, dataLen int, dbType string) *IndexBlock

NewIndexBlock 是IndexBlock结构体的构造函数。 它使用提供的值初始化起始IP、结束IP、数据指针和数据长度。

参数:

startIp: 数据块覆盖范围的起始IP地址。
endIp: 数据块覆盖范围的结束IP地址。
dataPtr: 数据库中数据块的指针。
dataLen: 数据块的字节长度。
dbType: 数据库类型(IPv4或IPv6)。

func (*IndexBlock) GetBytes

func (ib *IndexBlock) GetBytes() []byte

GetBytes 返回表示索引块的字节数组。 字节数组的结构如下: +------------+-----------+-----------+ | 4/16 bytes | 4/16bytes | 4bytes | 1bytes +------------+-----------+-----------+

起始IP       结束IP      数据指针    长度

返回值: 表示索引块的字节数组。

func (*IndexBlock) GetDataLen

func (ib *IndexBlock) GetDataLen() int

func (*IndexBlock) GetDataPtr

func (ib *IndexBlock) GetDataPtr() int

func (*IndexBlock) GetEndIp

func (ib *IndexBlock) GetEndIp() []byte

func (*IndexBlock) GetStartIp

func (ib *IndexBlock) GetStartIp() []byte

func (*IndexBlock) SetDataLen

func (ib *IndexBlock) SetDataLen(dataLen int) *IndexBlock

func (*IndexBlock) SetDataPtr

func (ib *IndexBlock) SetDataPtr(dataPtr int) *IndexBlock

func (*IndexBlock) SetEndIp

func (ib *IndexBlock) SetEndIp(endIp []byte) *IndexBlock

func (*IndexBlock) SetStartIp

func (ib *IndexBlock) SetStartIp(startIp []byte) *IndexBlock

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL