jpnic

package module
v0.5.0 Latest Latest
Warning

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

Go to latest
Published: Jan 10, 2022 License: MIT Imports: 20 Imported by: 1

README

JPNIC Web Transaction

概要

  • IPv4登録
  • IPv4変更
  • IPv6登録
  • IPv6変更
  • IPv4情報の閲覧
  • IPv6情報の閲覧
  • 割当済みIPv4返却申請
  • 割当済みIPv6返却申請
  • 担当者情報の追加/変更
  • 申請一覧/申請情報(詳細)
  • 資源管理者情報

また、詳しい仕様に関してはJPNIC側のトランザクション資料と照らし合わせながら使う必要があります。

使用方法(例)

	con := Config{
		URL:          "https://[URL]",
		CertFilePath: "/home/[UserName]/cert.pem",
		KeyFilePath:  "/home/[UserName]/key.pem",
		CAFilePath:   "/home/[UserName]/ca.pem",
	}
	
	input := WebTransaction{}
	
	err := con.Send(input)
	if err != nil {
	    log.Println(err)
	}

未実装機能

  • Check機能が未実装
  • ResponseのError内容の判別機能が未実装

注意点

** v0.xでは破壊的な変更が繰り返されるため、ご注意ください **

Documentation

Index

Constants

View Source
const (
	// 追加
	IPv4Register = 10
	IPv4Edit     = 11
	IPv6Register = 20
	IPv6Edit     = 21

	Infra         = 1
	User          = 2
	Reassignment1 = 3
	Reassignment2 = 4

	// エラーコードやステータスコード
	IPRegistrySystemError                = 1010
	NoCertificateOrUnableToGetMentorCode = 1020
	AuthorityError                       = 1021
	ApplicationProcessingError           = 1030
	InadequateParameters                 = 1099

	MissingRequiredFieldsError                    = 1001
	ExceedsStringError                            = 1002
	ViolationOfTypeError                          = 1003
	InadequateContentFormatError                  = 1004
	InadequateContentExistenceError               = 1005
	InadequateContentMultipleNetworksNotSpecified = 1006
	InadequateContentEtc                          = 1007

	NetWorkAndKindIDError        = 1101
	NetworkAndIPAddressError     = 1102
	NetworkAndNetworkNameError   = 1103
	NetworkAndInfraUserKindError = 1104
	NetworkAndOrgJP1Error        = 1105
	NetworkAndOrgJP2Error        = 1106
	NetworkAndOrgJP3Error        = 1107
	NetworkAndOrg1Error          = 1108
	NetworkAndOrg2Error          = 1109
	NetworkAndOrg3Error          = 1110
	NetworkAndZipCodeError       = 1111
	NetworkAndAddrJP1Error       = 1112
	NetworkAndAddrJP2Error       = 1113
	NetworkAndAddrJP3Error       = 1114
	NetworkAndAddr1Error         = 1115
	NetworkAndAddr2Error         = 1116
	NetworkAndAddr3Error         = 1117
	NetworkAndAbuseError         = 1118
	NetworkAndRyakusyoError      = 1119
	NetworkAndNameServerError    = 1120
	NetworkAndNotifyEmailError   = 1121
	NetworkAndPlanError          = 1122
	NetworkAndDeliNoError        = 1123
	NetworkAndReturnDateError    = 1124
	AdminAndJPNICHandleError     = 1200
	AdminAndNameJPError          = 1201
	AdminAndNameError            = 1202
	AdminAndEmailError           = 1203
	AdminAndOrgJP1Error          = 1204
	AdminAndOrgJP2Error          = 1205
	AdminAndOrgJP3Error          = 1206
	AdminAndOrg1Error            = 1207
	AdminAndOrg2Error            = 1208
	AdminAndOrg3Error            = 1209
	AdminAndZipCodeError         = 1210
	AdminAndAddrJP1Error         = 1211
	AdminAndAddrJP2Error         = 1212
	AdminAndAddrJP3Error         = 1213
	AdminAndAddr1Error           = 1214
	AdminAndAddr2Error           = 1215
	AdminAndAddr3Error           = 1216
	AdminAndDivisionJPError      = 1217
	AdminAndDivisionError        = 1218
	AdminAndPhoneError           = 1219
	AdminAndFaxError             = 1220
	AdminAndNotifyMailError      = 1221
	Tech1AndJPNICHandleError     = 1300
	Tech1AndNameJPError          = 1301
	Tech1AndNameError            = 1302
	Tech1AndEmailError           = 1303
	Tech1AndOrgJP1Error          = 1304
	Tech1AndOrgJP2Error          = 1305
	Tech1AndOrgJP3Error          = 1306
	Tech1AndOrg1Error            = 1307
	Tech1AndOrg2Error            = 1308
	Tech1AndOrg3Error            = 1309
	Tech1AndZipCodeError         = 1310
	Tech1AndAddrJP1Error         = 1311
	Tech1AndAddrJP2Error         = 1312
	Tech1AndAddrJP3Error         = 1313
	Tech1AndAddr1Error           = 1314
	Tech1AndAddr2Error           = 1315
	Tech1AndAddr3Error           = 1316
	Tech1AndDivisionJPError      = 1317
	Tech1AndDivisionError        = 1318
	Tech1AndPhoneError           = 1319
	Tech1AndFaxError             = 1320
	Tech1AndNotifyMailError      = 1321
	Tech2AndJPNICHandleError     = 1400
	Tech2AndNameJPError          = 1401
	Tech2AndNameError            = 1402
	Tech2AndEmailError           = 1403
	Tech2AndOrgJP1Error          = 1404
	Tech2AndOrgJP2Error          = 1405
	Tech2AndOrgJP3Error          = 1406
	Tech2AndOrg1Error            = 1407
	Tech2AndOrg2Error            = 1408
	Tech2AndOrg3Error            = 1409
	Tech2AndZipCodeError         = 1410
	Tech2AndAddrJP1Error         = 1411
	Tech2AndAddrJP2Error         = 1412
	Tech2AndAddrJP3Error         = 1413
	Tech2AndAddr1Error           = 1414
	Tech2AndAddr2Error           = 1415
	Tech2AndAddr3Error           = 1416
	Tech2AndDivisionJPError      = 1417
	Tech2AndDivisionError        = 1418
	Tech2AndPhoneError           = 1419
	Tech2AndFaxError             = 1420
	Tech2AndNotifyMailError      = 1421
	EtcCertIDError               = 1501
	EtcPasswordError             = 1502
)

StatusCodeは+1000をしているため、注意が必要

Variables

This section is empty.

Functions

func Check

func Check(input WebTransaction) error

func ErrorStatusText

func ErrorStatusText(code int) string

ErrorStatusの場合はcodeを自動で+1000する

func Marshal

func Marshal(input WebTransaction) (string, error)

func StatusText

func StatusText(code int) string

Types

type AdminUser

type AdminUser struct {
	JPNICHandle string `json:"jpnic_handle"`
	NameJP      string `json:"name_jp"`
	Name        string `json:"name"`
	Email       string `json:"email"`
	OrgJP1      string `json:"org_jp_1"`
	OrgJP2      string `json:"org_jp_2"`
	OrgJP3      string `json:"org_jp_3"`
	Org1        string `json:"org_1"`
	Org2        string `json:"org_2"`
	Org3        string `json:"org_3"`
	ZipCode     string `json:"zip_code"`
	AddrJP1     string `json:"addr_jp_1"`
	AddrJP2     string `json:"addr_jp_2"`
	AddrJP3     string `json:"addr_jp_3"`
	Addr1       string `json:"addr_1"`
	Addr2       string `json:"addr_2"`
	Addr3       string `json:"addr_3"`
	DivisionJP  string `json:"division_jp"`
	Division    string `json:"division"`
	Phone       string `json:"phone"`
	Fax         string `json:"fax"`
	NotifyMail  string `json:"notify_mail"`
}

type Config

type Config struct {
	URL         string
	PfxFilePath string
	PfxPass     string
	CAFilePath  string
}

func (*Config) GetIPUser

func (c *Config) GetIPUser(userURL string) (InfoDetail, error)

func (*Config) GetJPNICHandle

func (c *Config) GetJPNICHandle(handle string) (JPNICHandleDetail, error)

func (*Config) GetResourceManagement

func (c *Config) GetResourceManagement() (ResourceInfo, string, error)

func (*Config) SearchIPv4 added in v0.5.0

func (c *Config) SearchIPv4(myself, isDetail bool, search SearchIPv4) ([]InfoIPv4, []JPNICHandleDetail, error)

func (*Config) SearchIPv6 added in v0.5.0

func (c *Config) SearchIPv6(myself, isDetail bool, search SearchIPv6) ([]InfoIPv6, []JPNICHandleDetail, error)

func (*Config) Send

func (c *Config) Send(input WebTransaction) Result

type Etc

type Etc struct {
	CertID   string `json:"cert_id"`
	Password string `json:"password"`
}

type InfoDetail

type InfoDetail struct {
	IPAddress            string `json:"ip_address"`
	Ryakusho             string `json:"ryakusho"`
	Type                 string `json:"type"`
	InfraUserKind        string `json:"infra_user_kind"`
	NetworkName          string `json:"network_name"`
	Org                  string `json:"org"`
	OrgEn                string `json:"org_en"`
	PostCode             string `json:"post_code"`
	Address              string `json:"address"`
	AddressEn            string `json:"address_en"`
	AdminJPNICHandle     string `json:"admin_jpnic_handle"`
	AdminJPNICHandleLink string `json:"admin_jpnic_handle_link"`
	TechJPNICHandle      string `json:"tech_jpnic_handle"`
	TechJPNICHandleLink  string `json:"tech_jpnic_handle_link"`
	NameServer           string `json:"name_server"`
	DSRecord             string `json:"ds_record"`
	NotifyAddress        string `json:"notify_address"`
	DeliNo               string `json:"deli_no"`
	RecepNo              string `json:"recep_no"`
	AssignDate           string `json:"assign_date"`
	ReturnDate           string `json:"return_date"`
	UpdateDate           string `json:"update_date"`
}

type InfoIPv4

type InfoIPv4 struct {
	IPAddress   string     `json:"ip_address"`
	DetailLink  string     `json:"detail_link"`
	Size        string     `json:"size"`
	NetworkName string     `json:"network_name"`
	AssignDate  string     `json:"assign_date"`
	ReturnDate  string     `json:"return_date"`
	OrgName     string     `json:"org_name"`
	Ryakusho    string     `json:"ryakusho"`
	RecepNo     string     `json:"recep_no"`
	DeliNo      string     `json:"deli_no"`
	Type        string     `json:"type"`
	KindID      string     `json:"kind_id"`
	InfoDetail  InfoDetail `json:"info_detail"`
}

type InfoIPv6

type InfoIPv6 struct {
	IPAddress   string     `json:"ip_address"`
	DetailLink  string     `json:"detail_link"`
	NetworkName string     `json:"network_name"`
	AssignDate  string     `json:"assign_date"`
	ReturnDate  string     `json:"return_date"`
	OrgName     string     `json:"org_name"`
	Ryakusho    string     `json:"ryakusho"`
	RecepNo     string     `json:"recep_no"`
	DeliNo      string     `json:"deli_no"`
	KindID      string     `json:"kind_id"`
	InfoDetail  InfoDetail `json:"info_detail"`
}

type JPNICHandleDetail

type JPNICHandleDetail struct {
	IsJPNICHandle bool   `json:"is_jpnic_handle"`
	JPNICHandle   string `json:"jpnic_handle"`
	Name          string `json:"name"`
	NameEn        string `json:"name_en"`
	Email         string `json:"email"`
	Org           string `json:"org"`
	OrgEn         string `json:"org_en"`
	Division      string `json:"division"`
	DivisionEn    string `json:"division_en"`
	Title         string `json:"title"`
	TitleEn       string `json:"title_en"`
	Tel           string `json:"tel"`
	Fax           string `json:"fax"`
	NotifyAddress string `json:"notify_address"`
	UpdateDate    string `json:"update_date"`
}

type JPNICHandleInput

type JPNICHandleInput struct {
	IsJPNICHandle bool   `json:"is_jpnic_handle"`
	JPNICHandle   string `json:"jpnic_handle"`
	Name          string `json:"name"`
	NameEn        string `json:"name_en"`
	Email         string `json:"email"`
	Org           string `json:"org"`
	OrgEn         string `json:"org_en"`
	Address       string `json:"address"`
	AddressEn     string `json:"address_en"`
	ZipCode       string `json:"zip_code"`
	Division      string `json:"division"`
	DivisionEn    string `json:"division_en"`
	Title         string `json:"title"`
	TitleEn       string `json:"title_en"`
	Tel           string `json:"tel"`
	Fax           string `json:"fax"`
	NotifyMail    string `json:"notify_mail"`
	ApplyMail     string `json:"apply_mail"`
}

type Network

type Network struct {
	KindID        string `json:"kind_id"`
	IPAddress     string `json:"ip_address"`
	NetworkName   string `json:"network_name"`
	InfraUserKind string `json:"infra_user_kind"`
	OrgJP1        string `json:"org_jp_1"`
	OrgJP2        string `json:"org_jp_2"`
	OrgJP3        string `json:"org_jp_3"`
	Org1          string `json:"org_1"`
	Org2          string `json:"org_2"`
	Org3          string `json:"org_3"`
	ZipCode       string `json:"zip_code"`
	AddrJP1       string `json:"addr_jp_1"`
	AddrJP2       string `json:"addr_jp_2"`
	AddrJP3       string `json:"addr_jp_3"`
	Addr1         string `json:"addr_1"`
	Addr2         string `json:"addr_2"`
	Addr3         string `json:"addr_3"`
	Abuse         string `json:"abuse"`
	Ryakusyo      string `json:"ryakusho"`
	NameServer    string `json:"name_server"`
	NotifyEmail   string `json:"notify_email"`
	Plan          string `json:"plan"`
	DeliNo        string `json:"deli_no"`
	ReturnDate    string `json:"return_date"`
}

type RequestInfo

type RequestInfo struct {
	RecepNo      string `json:"recep_no"`
	DeliNo       string `json:"deli_no"`
	ApplyKind    string `json:"apply_kind"`
	ApplyClass   string `json:"apply_class"`
	Applicant    string `json:"applicant"`
	ApplyDate    string `json:"apply_date"`
	CompleteDate string `json:"complete_date"`
	Status       string `json:"status"`
}

type ResourceCIDRBlock

type ResourceCIDRBlock struct {
	Address          string  `json:"address"`
	AssignDate       string  `json:"assign_date"`
	UtilizationRatio float64 `json:"utilization_ratio"`
	UsedAddress      uint64  `json:"used_address"`
	AllAddress       uint64  `json:"all_address"`
}

type ResourceInfo

type ResourceInfo struct {
	ResourceManagerInfo ResourceManagerInfo `json:"resource_manager_info"`
	UtilizationRatio    float64             `json:"utilization_ratio"`
	UsedAddress         uint64              `json:"used_address"`
	AllAddress          uint64              `json:"all_address"`
	ADRatio             float64             `json:"ad_ratio"`
	ResourceCIDRBlock   []ResourceCIDRBlock `json:"resource_cidr_block"`
}

type ResourceManagerInfo

type ResourceManagerInfo struct {
	ResourceManagerNo         string `json:"resource_manager_no"`
	Ryakusyo                  string `json:"ryakusho"`
	Org                       string `json:"org"`
	OrgEn                     string `json:"org_en"`
	ZipCode                   string `json:"zip_code"`
	Address                   string `json:"address"`
	AddressEn                 string `json:"address_en"`
	Tel                       string `json:"tel"`
	Fax                       string `json:"fax"`
	ResourceManagementManager string `json:"resource_management_manager"`
	ContactPerson             string `json:"contact_person"`
	Inquiry                   string `json:"inquiry"`
	NotifyMail                string `json:"notify_mail"`
	AssigmentWindowSize       string `json:"assigment_window_size"`
	ManagementStartDate       string `json:"management_start_date"`
	ManagementEndDate         string `json:"management_end_date"`
	UpdateDate                string `json:"update_date"`
}

type Result

type Result struct {
	Err           error
	ResultErr     []error
	RecepNo       string
	AdmJPNICHdl   string
	Tech1JPNICHdl string
	Tech2JPNICHdl string
	Response      string
}

type ReturnIPv6List

type ReturnIPv6List struct {
	NetworkID     string `json:"network_id"`
	IPAddress     string `json:"ip_address"`
	NetworkName   string `json:"network_name"`
	InfraUserKind string `json:"infra_user_kind"`
	AssignDate    string `json:"assign_date"`
}

type SearchIPv4 added in v0.5.0

type SearchIPv4 struct {
	IPAddress      string `json:"ip_address"`
	SizeStart      string `json:"size_start"`
	SizeEnd        string `json:"size_end"`
	NetworkName    string `json:"network_name"`
	RegStart       string `json:"reg_start"`
	RegEnd         string `json:"reg_end"`
	ReturnStart    string `json:"return_start"`
	ReturnEnd      string `json:"return_end"`
	Org            string `json:"org"`
	Ryakusho       string `json:"ryakusho"`
	RecepNo        string `json:"recep_no"`
	DeliNo         string `json:"deli_no"`
	IsPA           bool   `json:"is_pa"`            // 割り振り
	IsAllocate     bool   `json:"is_allocate"`      // 割り振り
	IsAssignInfra  bool   `json:"is_assign_infra"`  //インフラ割当
	IsAssignUser   bool   `json:"is_assign_user"`   //ユーザ割当
	IsSubAllocate  bool   `json:"is_sub_allocate"`  //SUBA
	IsHistoricalPI bool   `json:"is_historical_pi"` //歴史的PI
	IsSpecialPI    bool   `json:"is_special_pi"`    //特殊用途PI
}

type SearchIPv6 added in v0.5.0

type SearchIPv6 struct {
	IPAddress     string `json:"ip_address"`
	SizeStart     string `json:"size_start"`
	SizeEnd       string `json:"size_end"`
	NetworkName   string `json:"network_name"`
	RegStart      string `json:"reg_start"`
	RegEnd        string `json:"reg_end"`
	ReturnStart   string `json:"return_start"`
	ReturnEnd     string `json:"return_end"`
	Org           string `json:"org"`
	Ryakusho      string `json:"ryakusho"`
	RecepNo       string `json:"recep_no"`
	DeliNo        string `json:"deli_no"`
	IsAllocate    bool   `json:"is_allocate"`     // 割振
	IsAssignInfra bool   `json:"is_assign_infra"` //インフラ割当
	IsAssignUser  bool   `json:"is_assign_user"`  //ユーザ割当
	IsSubAllocate bool   `json:"is_sub_allocate"` //再割当
}

type TechUser

type TechUser struct {
	JPNICHandle string `json:"jpnic_handle"`
	NameJP      string `json:"name_jp"`
	Name        string `json:"name"`
	Email       string `json:"email"`
	OrgJP1      string `json:"org_jp_1"`
	OrgJP2      string `json:"org_jp_2"`
	OrgJP3      string `json:"org_jp_3"`
	Org1        string `json:"org_1"`
	Org2        string `json:"org_2"`
	Org3        string `json:"org_3"`
	ZipCode     string `json:"zip_code"`
	AddrJP1     string `json:"addr_jp_1"`
	AddrJP2     string `json:"addr_jp_2"`
	AddrJP3     string `json:"addr_jp_3"`
	Addr1       string `json:"addr_1"`
	Addr2       string `json:"addr_2"`
	Addr3       string `json:"addr_3"`
	DivisionJP  string `json:"division_jp"`
	Division    string `json:"division"`
	Phone       string `json:"phone"`
	Fax         string `json:"fax" `
	NotifyMail  string `json:"notify_mail"`
}

type WebTransaction

type WebTransaction struct {
	Network   Network    `json:"network"`
	AdminUser AdminUser  `json:"admin_user"`
	TechUsers []TechUser `json:"tech_users"`
	Etc       Etc        `json:"etc"`
}

Jump to

Keyboard shortcuts

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