ipio

package
v0.1.5 Latest Latest
Warning

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

Go to latest
Published: Mar 1, 2023 License: Apache-2.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

View Source
const (
	CommentPrefix = "#"
	MetaPrefix    = "# Meta: "
	FieldSep      = ","
)
View Source
const (
	SelectorGroupSep    = "|"
	SelectorFieldSep    = ","
	SelectorRuleSep     = ":"
	SelectorKeyValueSep = "="
)

Variables

This section is empty.

Functions

func ScanWrite

func ScanWrite(s Scanner, w Writer) error

ScanWrite 扫描并写入

Types

type DBReader

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

func NewDBReader

func NewDBReader(db db.Database, selector *FieldSelector) *DBReader

NewDBReader 初始化 IP 库读取器

func (*DBReader) Close

func (s *DBReader) Close() error

Close 关闭

func (*DBReader) Find

func (s *DBReader) Find(ip net.IP) (*ipx.Range, []string, error)

Find 查询IP所在网段和对应数据

func (*DBReader) Meta

func (s *DBReader) Meta() model.Meta

Meta 返回 meta 信息

type DBScanner

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

DBScanner IP库扫描读取工具

func NewDBScanner

func NewDBScanner(db db.Database, selector *FieldSelector, rw rewriter.Rewriter) *DBScanner

NewDBScanner 初始化 IP 库扫描读取器

func (*DBScanner) Close

func (s *DBScanner) Close() error

Close 关闭

func (*DBScanner) Err

func (s *DBScanner) Err() error

func (*DBScanner) Find

func (s *DBScanner) Find(ip net.IP) (*ipx.Range, []string, error)

Find 查询IP所在网段和对应数据

func (*DBScanner) Init

func (s *DBScanner) Init(meta model.Meta) error

Init 初始化

func (*DBScanner) Meta

func (s *DBScanner) Meta() model.Meta

Meta 返回 meta 信息

func (*DBScanner) Result

func (s *DBScanner) Result() (*ipx.Range, []string)

func (*DBScanner) Scan

func (s *DBScanner) Scan() bool

Scan 扫描IP库

type FieldSelector

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

FieldSelector 字段选择器

func NewFieldSelector

func NewFieldSelector(arg string) *FieldSelector

NewFieldSelector 初始化字段选择器 用于选择输出的字段,支持简单的匹配逻辑 输入的参数格式为: <fields>[|<rule1>:<fields>|<rule2>:<fields>|<default fields>] @ <fields> - 字段列表,表示需要输出的字段,字段之间使用","分隔 @ <rule> - 匹配规则,非必填项,以<key>=<value>表示,匹配上的话,则使用<rule>对应的<fields>,匹配优先级为<fields>的顺序 @ <default fields> - 默认字段列表,非必填项,若<default fileds>为空,则使用<fields> @ sep - Select函数输出数据的分隔符,默认为"," 举例 country,province,city,isp|country=中国:country,province,city,isp|country,-,-,- 针对国家区分IP库精度,若国家是"中国",返回"国家,省份,城市,运营商",若国家不是"中国",返回"国家,-,-,-" country|country=中国:CN|OV 返回中国和海外 isp|isp=电信:电信|isp=联通:联通|isp=移动:移动|其他 返回电信、联通、移动和其他运营商

func (*FieldSelector) Fields

func (f *FieldSelector) Fields() []string

Fields 返回字段列表

func (*FieldSelector) Select

func (f *FieldSelector) Select(data map[string]string) []string

Select 选择字段

type IPScanScanner

type IPScanScanner struct {
	FilePath string
	// contains filtered or unexported fields
}

IPScanScanner IPScan 扫描工具

func NewIPScanScanner

func NewIPScanScanner(filePath string) (*IPScanScanner, error)

NewIPScanScanner 初始化 IPScan 扫描实例

func (*IPScanScanner) Close

func (s *IPScanScanner) Close() error

Close 关闭

func (*IPScanScanner) Err

func (s *IPScanScanner) Err() error

Err 返回错误

func (*IPScanScanner) Meta

func (s *IPScanScanner) Meta() model.Meta

Meta 返回元数据

func (*IPScanScanner) Result

func (s *IPScanScanner) Result() (*ipx.Range, []string)

Result 返回结果

func (*IPScanScanner) Scan

func (s *IPScanScanner) Scan() bool

Scan 扫描下一条数据,返回 true 表示有数据,false 表示没有数据

type IPScanWriter

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

IPScanWriter IPScan 写入工具

func NewIPScanWriter

func NewIPScanWriter(meta model.Meta, w io.Writer) (*IPScanWriter, error)

NewIPScanWriter 初始化 IPScan 写入实例

func (*IPScanWriter) Insert

func (w *IPScanWriter) Insert(ipr *ipx.Range, values []string) error

Insert 插入数据

func (*IPScanWriter) Save

func (w *IPScanWriter) Save(_w io.Writer) error

Save 保存数据

type Reader

type Reader interface {

	// Meta 返回元数据
	Meta() model.Meta

	// Find 查询IP所在网段和对应数据
	Find(ip net.IP) (*ipx.Range, []string, error)

	// Close 关闭
	Close() error
}

Reader IP库读取工具 从数据库中获取IP的地理位置信息,并格式化数据

type ScanWriter

type ScanWriter struct {
	Scanner
	Writer
}

ScanWriter IP库扫描写入工具

func NewScanWriter

func NewScanWriter(s Scanner, w Writer) *ScanWriter

NewScanWriter 初始化 IP 库扫描写入实例

func (*ScanWriter) ScanWrite

func (sw *ScanWriter) ScanWrite() error

ScanWrite 扫描并写入

type Scanner

type Scanner interface {

	// Meta 返回元数据
	Meta() model.Meta

	// Scan 扫描下一条数据,返回 true 表示有数据,false 表示没有数据
	Scan() bool

	// Result 返回结果
	Result() (*ipx.Range, []string)

	// Err 返回错误
	Err() error

	// Close 关闭
	Close() error
}

Scanner IP库扫描工具

type Writer

type Writer interface {

	// Insert 插入数据
	Insert(ipr *ipx.Range, values []string) error

	// Save 保存数据
	Save(w io.Writer) error
}

Writer IP库写入工具

Jump to

Keyboard shortcuts

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