ipdb

package module
Version: v1.2.1 Latest Latest
Warning

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

Go to latest
Published: Jun 23, 2019 License: Apache-2.0 Imports: 10 Imported by: 0

README

ipdb-go

TravisCI Build Status Coverage Status IPDB Database API Document

IPIP.net officially supported IP database ipdb format parsing library

Installing

go get github.com/yygt/ipdb-go

Code Example

支持IPDB格式地级市精度IP离线库(免费版,每周高级版,每日标准版,每日高级版,每日专业版,每日旗舰版)


package main

import (
	"github.com/yygt/ipdb-go"
	"net"
	"fmt"
	"log"
)

func main() {
	db, err := ipdb.NewCity("/path/to/city.ipv4.ipdb")
	if err != nil {
		log.Fatal(err)
	}

	db.Reload("/path/to/city.ipv4.ipdb") // 更新 ipdb 文件后可调用 Reload 方法重新加载内容

	fmt.Println(db.IsIPv4()) // check database support ip type
	fmt.Println(db.IsIPv6()) // check database support ip type
	fmt.Println(db.BuildTime()) // database build time
	fmt.Println(db.Languages()) // database support language
	fmt.Println(db.Fields()) // database support fields

	fmt.Println(db.FindInfo(net.ParseIP("2001:250:200::"), "CN")) // return CityInfo
	fmt.Println(db.Find(net.ParseIP("1.1.1.1"), "CN")) // return []string
	fmt.Println(db.FindMap(net.ParseIP("118.28.8.8"), "CN")) // return map[string]string
	fmt.Println(db.FindInfo(net.ParseIP("127.0.0.1"), "CN")) // return CityInfo

	fmt.Println()
}

地级市精度库数据字段说明

country_name : 国家名字 (每周高级版及其以上版本包含)
region_name  : 省名字   (每周高级版及其以上版本包含)
city_name    : 城市名字 (每周高级版及其以上版本包含)
owner_domain : 所有者   (每周高级版及其以上版本包含)
isp_domain  : 运营商 (每周高级版与每日高级版及其以上版本包含)
latitude  :  纬度   (每日标准版及其以上版本包含)
longitude : 经度    (每日标准版及其以上版本包含)
timezone : 时区     (每日标准版及其以上版本包含)
utc_offset : UTC时区    (每日标准版及其以上版本包含)
china_admin_code : 中国行政区划代码 (每日标准版及其以上版本包含)
idd_code : 国家电话号码前缀 (每日标准版及其以上版本包含)
country_code : 国家2位代码  (每日标准版及其以上版本包含)
continent_code : 大洲代码   (每日标准版及其以上版本包含)
idc : IDC |  VPN   (每日专业版及其以上版本包含)
base_station : 基站 | WIFI (每日专业版及其以上版本包含)
country_code3 : 国家3位代码 (每日专业版及其以上版本包含)
european_union : 是否为欧盟成员国: 1 | 0 (每日专业版及其以上版本包含)
currency_code : 当前国家货币代码    (每日旗舰版及其以上版本包含)
currency_name : 当前国家货币名称    (每日旗舰版及其以上版本包含)
anycast : ANYCAST       (每日旗舰版及其以上版本包含)

适用于IPDB格式的中国地区 IPv4 区县库

db, err := ipdb.NewDistrict("/path/to/quxian.ipdb")
if err != nil {
	log.Fatal(err)
}
fmt.Println(db.IsIPv4())    // check database support ip type
fmt.Println(db.IsIPv6())    // check database support ip type
fmt.Println(db.Languages()) // database support language
fmt.Println(db.Fields())    // database support fields

fmt.Println(db.Find(net.ParseIP("1.12.7.255"), "CN"))
fmt.Println(db.FindMap(net.ParseIP("2001:250:200::"), "CN"))
fmt.Println(db.FindInfo(net.ParseIP("1.12.7.255"), "CN"))

fmt.Println()

适用于IPDB格式的基站 IPv4 库

db, err := ipdb.NewBaseStation("/path/to/station_ip.ipdb")
if err != nil {
	log.Fatal(err)
}

fmt.Println(db.FindMap(net.ParseIP("223.220.223.255"), "CN"))

Documentation

Index

Constants

View Source
const IPv4 = 0x01
View Source
const IPv6 = 0x02

Variables

View Source
var (
	ErrFileSize = errors.New("IP Database file size error.")
	ErrMetaData = errors.New("IP Database metadata error.")
	ErrReadFull = errors.New("IP Database ReadFull error.")

	ErrDatabaseError = errors.New("database error")

	ErrIPFormat = errors.New("Query IP Format error.")

	ErrNoSupportLanguage = errors.New("language not support")
	ErrNoSupportIPv4     = errors.New("IPv4 not support")
	ErrNoSupportIPv6     = errors.New("IPv6 not support")

	ErrDataNotExists = errors.New("data is not exists")
)

Functions

This section is empty.

Types

type BaseStation

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

func NewBaseStation

func NewBaseStation(name string) (*BaseStation, error)

func (*BaseStation) BuildTime

func (db *BaseStation) BuildTime() time.Time

func (*BaseStation) Fields

func (db *BaseStation) Fields() []string

func (*BaseStation) Find

func (db *BaseStation) Find(ip net.IP, language string) ([]string, error)

func (*BaseStation) FindInfo

func (db *BaseStation) FindInfo(ip net.IP, language string) (*BaseStationInfo, error)

func (*BaseStation) FindMap

func (db *BaseStation) FindMap(ip net.IP, language string) (map[string]string, error)

func (*BaseStation) IsIPv4

func (db *BaseStation) IsIPv4() bool

func (*BaseStation) IsIPv6

func (db *BaseStation) IsIPv6() bool

func (*BaseStation) Languages

func (db *BaseStation) Languages() []string

func (*BaseStation) Reload

func (db *BaseStation) Reload(name string) error

type BaseStationInfo

type BaseStationInfo struct {
	CountryName string `json:"country_name"`
	RegionName  string `json:"region_name"`
	CityName    string `json:"city_name"`
	OwnerDomain string `json:"owner_domain"`
	IspDomain   string `json:"isp_domain"`
	BaseStation string `json:"base_station"`
}

type City

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

City struct

func NewCity

func NewCity(name string) (*City, error)

NewCity initialize

func (*City) BuildTime

func (db *City) BuildTime() time.Time

BuildTime return database build Time

func (*City) Fields

func (db *City) Fields() []string

Fields return support fields

func (*City) Find

func (db *City) Find(ip net.IP, language string) ([]string, error)

Find query with ip

func (*City) FindInfo

func (db *City) FindInfo(ip net.IP, language string) (*CityInfo, error)

FindInfo query with ip

func (*City) FindMap

func (db *City) FindMap(ip net.IP, language string) (map[string]string, error)

FindMap query with ip

func (*City) IsIPv4

func (db *City) IsIPv4() bool

IsIPv4 whether support ipv4

func (*City) IsIPv6

func (db *City) IsIPv6() bool

IsIPv6 whether support ipv6

func (*City) Languages

func (db *City) Languages() []string

Languages return support languages

func (*City) Reload

func (db *City) Reload(name string) error

Reload the database

type CityInfo

type CityInfo struct {
	CountryName    string `json:"country_name"`
	RegionName     string `json:"region_name"`
	CityName       string `json:"city_name"`
	OwnerDomain    string `json:"owner_domain"`
	IspDomain      string `json:"isp_domain"`
	Latitude       string `json:"latitude"`
	Longitude      string `json:"longitude"`
	Timezone       string `json:"timezone"`
	UtcOffset      string `json:"utc_offset"`
	ChinaAdminCode string `json:"china_admin_code"`
	IddCode        string `json:"idd_code"`
	CountryCode    string `json:"country_code"`
	ContinentCode  string `json:"continent_code"`
	IDC            string `json:"idc"`
	BaseStation    string `json:"base_station"`
	CountryCode3   string `json:"country_code3"`
	EuropeanUnion  string `json:"european_union"`
	CurrencyCode   string `json:"currency_code"`
	CurrencyName   string `json:"currency_name"`
	Anycast        string `json:"anycast"`
}

CityInfo is City Database Content

type District

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

func NewDistrict

func NewDistrict(name string) (*District, error)

func (*District) BuildTime

func (db *District) BuildTime() time.Time

func (*District) Fields

func (db *District) Fields() []string

func (*District) Find

func (db *District) Find(ip net.IP, language string) ([]string, error)

func (*District) FindInfo

func (db *District) FindInfo(ip net.IP, language string) (*DistrictInfo, error)

func (*District) FindMap

func (db *District) FindMap(ip net.IP, language string) (map[string]string, error)

func (*District) IsIPv4

func (db *District) IsIPv4() bool

func (*District) IsIPv6

func (db *District) IsIPv6() bool

func (*District) Languages

func (db *District) Languages() []string

func (*District) Reload

func (db *District) Reload(name string) error

type DistrictInfo

type DistrictInfo struct {
	CountryName    string `json:"country_name"`
	RegionName     string `json:"region_name"`
	CityName       string `json:"city_name"`
	DistrictName   string `json:"district_name"`
	ChinaAdminCode string `json:"china_admin_code"`
	CoveringRadius string `json:"covering_radius"`
	Latitude       string `json:"latitude"`
	Longitude      string `json:"longitude"`
}

type IDC

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

func NewIDC

func NewIDC(name string) (*IDC, error)

func (*IDC) BuildTime

func (db *IDC) BuildTime() time.Time

func (*IDC) Fields

func (db *IDC) Fields() []string

func (*IDC) Find

func (db *IDC) Find(ip net.IP, language string) ([]string, error)

func (*IDC) FindInfo

func (db *IDC) FindInfo(ip net.IP, language string) (*IDCInfo, error)

func (*IDC) FindMap

func (db *IDC) FindMap(ip net.IP, language string) (map[string]string, error)

func (*IDC) IsIPv4

func (db *IDC) IsIPv4() bool

func (*IDC) IsIPv6

func (db *IDC) IsIPv6() bool

func (*IDC) Languages

func (db *IDC) Languages() []string

func (*IDC) Reload

func (db *IDC) Reload(name string) error

type IDCInfo

type IDCInfo struct {
	CountryName string `json:"country_name"`
	RegionName  string `json:"region_name"`
	CityName    string `json:"city_name"`
	OwnerDomain string `json:"owner_domain"`
	IspDomain   string `json:"isp_domain"`
	IDC         string `json:"idc"`
}

type MetaData

type MetaData struct {
	Build     int64          `json:"build"`
	IPVersion uint16         `json:"ip_version"`
	Languages map[string]int `json:"languages"`
	NodeCount int            `json:"node_count"`
	TotalSize int            `json:"total_size"`
	Fields    []string       `json:"fields"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
t or T : Toggle theme light dark auto
y or Y : Canonical URL