Fungsi penguraian alamat IP menyelesaikan alamat IP menjadi lokasi geografis, mengklasifikasikan jenis alamat, mengonversi antar format, serta memeriksa keanggotaan Blok CIDR.
Fungsi
|
Function |
Description |
|
Mengurai alamat IP untuk mendapatkan negara, provinsi, dan kota. |
|
|
Memeriksa apakah suatu alamat IP termasuk dalam Blok Classless Inter-Domain Routing (CIDR). |
|
|
Memeriksa apakah alamat IP merupakan Alamat IPv4 atau Alamat IPv6. |
|
|
Memeriksa apakah alamat IP merupakan alamat private atau public. |
|
|
Mengonversi alamat IP menjadi Blok CIDR. |
|
|
Memformat Blok CIDR agar menggunakan panjang awalan atau subnet mask. |
|
|
Memeriksa apakah dua Blok CIDR saling tumpang tindih. |
|
|
Mengonversi alamat IP dari string menjadi bilangan bulat panjang (long integer). |
|
|
Mengonversi bilangan bulat panjang (long integer) menjadi string alamat IP. |
geo_parse
Mengurai alamat IP untuk mengambil informasi negara, provinsi, dan kota.
-
Sintaksis
geo_parse(ip, ip_db="SLS-GeoIP", keep_fields=None, provider="ipip", ip_sep=None) -
Parameter
Parameter
Tipe Parameter
Wajib
Deskripsi
ip
String
Ya
Alamat IP yang akan diurai. Untuk mengurai beberapa alamat IP dalam satu string, gunakan parameter ip_sep untuk menentukan pemisah.
ip_db
String
Ya
Basis data alamat IP yang digunakan untuk penguraian. Nilai yang valid:
-
SLS-GeoIP: Basis data IP bawaan SLS. Default. Diperbarui setiap hari. Tidak memerlukan konfigurasi tambahan.
-
Basis data IP kustom: Gunakan
res_oss_file(endpoint, ak_id, ak_key, bucket, file, format='text', change_detect_interval=0,fetch_interval=2,refresh_retry_max=60,encoding='utf8',error='ignore'). Untuk detail parameter, lihat res_oss_file.
keep_fields
Tuple
Tidak
Kunci yang disertakan dalam hasil yang dikembalikan.
-
Jika Anda menggunakan basis data IP bawaan SLS, informasi berikut dikembalikan secara default:
-
city: Nama kota.
-
province: Nama provinsi.
-
country: Nama negara.
-
city_en: Kode wilayah administratif atau nama bahasa Inggris kota.
-
province_en: Kode wilayah administratif atau nama bahasa Inggris provinsi.
-
country_en: Kode atau nama bahasa Inggris negara atau wilayah.
-
isp: Nama Penyedia layanan internet (ISP).
-
lat: Latitude lokasi alamat IP.
-
lon: Longitude lokasi alamat IP.
-
-
Jika Anda menggunakan basis data IP kustom, informasi berikut dikembalikan secara default:
-
city: Nama kota.
-
province: Nama provinsi.
-
country: Nama negara.
-
Contoh,
keep_fields=("city","country")hanya mengembalikan bidangcitydancountry.Anda juga dapat menggunakan
keep_fieldsuntuk mengganti nama kunci. Contohnya,(("city","cty"),("country","state"))mengganti nama bidang output menjadictydanstate.provider
String
Tidak
Parameter ini hanya berlaku ketika ip_db diatur ke basis data IP kustom. Nilai yang valid:
-
ipip: Nilai default. Menggunakan basis data alamat IP biner dalam format IPDB yang disediakan oleh IPIP. Untuk mengunduh basis data tersebut, kunjungi ipip.
-
ip2location: Menggunakan basis data alamat IP biner global dari IP2Location. Untuk mengunduh basis data tersebut, kunjungi ip2location. Hanya paket biner yang didukung.
ip_sep
String
Tidak
Pemisah untuk beberapa alamat IP dalam satu string. Hasil dikembalikan dalam format JSON. Default: None (tidak melakukan pemisahan).
-
-
Respons
Mengembalikan dictionary:
{ "city": "...", "province":"...", "country": "..." } -
Contoh
-
Contoh 1: Kueri data menggunakan basis data IP bawaan SLS.
-
Log mentah
ip : 203.0.113.1 -
Aturan transformasi
e_set("geo", geo_parse(v("ip"))) -
Hasil
ip : 203.0.113.1 geo: {"city":"Hangzhou","province":"Zhejiang","country":"China","isp":"China Mobile","lat":30.16,"lon":120.12}
-
-
Contoh 2: Urai beberapa alamat IP dari satu field menggunakan basis data IP bawaan SLS.
-
Log mentah
ip : 203.0.113.4, 192.0.2.2, 198.51.100.2 -
Aturan transformasi
e_set("geo", geo_parse(v("ip"), ip_sep=",")) -
Hasil
ip : 203.0.113.4, 192.0.2.2, 198.51.100.2 geo : {"203.0.113.4": {"country_en": "CN", "province_en": "330000", "city_en": "330200", "country": "China", "province": "Zhejiang", "city": "Ningbo", "isp": "China Telecom", "lat": 29.8782, "lon": 121.549}, "192.0.2.2": {"country_en": "CN", "province_en": "320000", "city_en": "321300", "country": "China", "province": "Jiangsu", "city": "Suqian", "isp": "China Telecom", "lat": 33.9492, "lon": 118.296}, "198.51.100.2": {"country_en": "CN", "province_en": "330000", "city_en": "330500", "country": "China", "province": "Zhejiang", "city": "Huzhou", "isp": "China Telecom", "lat": 30.8703, "lon": 120.093}}
-
-
Contoh 3: Kueri data menggunakan basis data IP kustom.
-
Log mentah
ip : 203.0.113.1 -
Aturan transformasi
e_set("geo",geo_parse(v("ip"), ip_db=res_oss_file(endpoint='http://oss-cn-hangzhou.aliyuncs.com', ak_id='your ak_id', ak_key='your ak_key', bucket='your bucket', file='ipipfree.ipdb', format='binary',change_detect_interval=20))) -
Hasil
ip : 203.0.113.1 geo : {"city": "Hangzhou", "province":"Zhejiang","country": "China"}
-
-
Contoh 4: Kueri dengan basis data IP kustom dan ganti nama field output.
-
Log mentah
ip : 203.0.113.1 -
Aturan transformasi
e_set("geo",geo_parse(v("ip"), ip_db=res_oss_file(endpoint='http://oss-cn-hangzhou.aliyuncs.com', ak_id='your ak_id', ak_key='your ak_key', bucket='your bucket', file='ipipfree.ipdb', format='binary',change_detect_interval=20),keep_fields=(("city","cty"),("country","state"),("province","pro")))) -
Hasil
ip : 203.0.113.1 geo : { "state": "China","pro": "Zhejiang","cty": "Hangzhou"}
-
-
Contoh 5: Kueri dengan basis data IP kustom dan pilih field output.
-
Log mentah
ip : 203.0.113.1 -
Aturan transformasi
e_set("geo",geo_parse(v("ip"), ip_db=res_oss_file(endpoint='http://oss-cn-hangzhou.aliyuncs.com', ak_id='your ak_id', ak_key='your ak_key', bucket='your bucket', file='ipipfree.ipdb', format='binary',change_detect_interval=20),keep_fields=("country","province"))) -
Hasil
ip : 203.0.113.1 geo : { "country": "China","province": "Zhejiang"}
-
-
Contoh 6: Kueri dengan basis data IP kustom menggunakan penyedia IP2Location.
-
Log mentah
ip : 203.0.113.2 -
Aturan transformasi
e_set("geo", geo_parse(v("ip"), ip_db=res_oss_file(endpoint='http://oss-cn-hangzhou.aliyuncs.com',ak_id="your ak_id", ak_key="your ak_secret", bucket='log-etl-staging', file='your ip2location bin file', format='binary', change_detect_interval=20),provider="ip2location")) -
Hasil
ip : 203.0.113.2 geo : {"city":"Dearborn","province":"Michigan","country":"United States"}
Transformasi data menggunakan SDK IP2Location open source untuk Python, yang mendukung field-field berikut. Jika suatu field tidak dapat diurai, pastikan basis data IP2Location Anda mencakupnya.
country_short country_long / Transformasi data menggunakan field country sebagai gantinya. region / Transformasi data menggunakan field province sebagai gantinya. city isp latitude longitude domain zipcode timezone netspeed idd_code area_code weather_code weather_name mcc mnc mobile_brand elevation usage_type -
-
Contoh 7: Urai beberapa alamat IP menggunakan basis data IP kustom.
-
Log mentah
ip : 203.0.113.3, 192.0.2.1, 198.51.100.1 -
Aturan transformasi
e_set("geo", geo_parse(v("ip"), ip_db=res_oss_file(endpoint='http://oss-cn-hangzhou.aliyuncs.com', ak_id="ak_id", ak_key="ak_secret", bucket='log-etl-staging', file='calendar.csv/IP2LOCATION-LITE-DB3.BIN', format='binary', change_detect_interval=20), provider="ip2location", ip_sep=",")) -
Hasil
ip : 203.0.113.3, 192.0.2.1, 198.51.100.1 geo : {"203.0.113.3": {"city": "Dearborn", "province": "Michigan", "country": "United States"}, "192.0.2.1": {"city": "Hangzhou", "province": "Zhejiang", "country": "China"}, "198.51.100.1": {"city": "Hangzhou", "province": "Zhejiang", "country": "China"}}
-
-
ip_cidrmatch
Memeriksa apakah suatu alamat IP termasuk dalam Blok CIDR. Mengembalikan True jika cocok, False jika tidak. Mendukung IPv4 dan IPv6.
-
Sintaksis
ip_cidrmatch(cidr_subnet, ip,default="") -
Parameter
Nama Parameter
Tipe Parameter
Wajib
Deskripsi
cidr_subnet
String
Ya
Blok CIDR. Contoh: 192.168.1.0/24.
ip
String
Ya
Alamat IP yang akan diperiksa.
default
String
Tidak
Nilai fallback jika alamat IP tidak dapat dicocokkan. Bisa kosong.
-
Respons
Mengembalikan True jika alamat IP cocok dengan Blok CIDR. Jika tidak, mengembalikan False.
-
Contoh
-
Contoh 1: Alamat IPv4 cocok dengan Blok CIDR dan fungsi mengembalikan True.
-
Log mentah
cidr_subnet: 192.168.1.0/24 ip: 192.168.1.100 -
Aturan transformasi
e_set("is_belong",ip_cidrmatch(v("cidr_subnet"),v("ip"))) -
Hasil
cidr_subnet: 192.168.1.0/24 ip: 192.168.1.100 is_belong: true
-
-
Contoh 2: Alamat IPv4 tidak cocok dengan Blok CIDR dan fungsi mengembalikan False.
-
Log mentah
cidr_subnet: 192.168.1.0/24 ip: 10.10.1.100 -
Aturan transformasi
e_set("is_belong",ip_cidrmatch(v("cidr_subnet"),v("ip"))) -
Hasil
cidr_subnet: 192.168.1.0/24 ip: 10.10.1.100 is_belong: false
-
-
Contoh 3: Alamat IP tidak dapat dicocokkan dengan Blok CIDR dan fungsi mengembalikan unknown.
-
Log mentah
cidr_subnet: 192.168.1.0/24 ip: a -
Aturan transformasi
e_set("is_belong",ip_cidrmatch(v("cidr_subnet"),v("ip"),default="unknown")) -
Hasil
cidr_subnet: 192.168.1.0/24 ip: a is_belong: unknown
-
-
ip_version
Mengembalikan versi alamat IP: IPv4 atau IPv6.
-
Sintaksis
ip_version(ip,default="") -
Parameter
Parameter
Tipe Parameter
Wajib
Deskripsi
ip
String
Ya
Alamat IP.
default
String
Tidak
Nilai fallback jika versi tidak dapat ditentukan. Bisa kosong.
-
Respons
Mengembalikan IPv4 atau IPv6.
-
Contoh
-
Contoh 1: Periksa versi alamat IPv4.
-
Log mentah
ip: 192.168.1.100 -
Aturan transformasi
e_set("version",ip_version(v("ip"))) -
Hasil
ip: 192.168.1.100 version: IPv4
-
-
Contoh 2: Periksa versi alamat IPv6.
-
Log mentah
ip: ::1 -
Aturan transformasi
e_set("version",ip_version(v("ip"))) -
Hasil
ip: ::1 version: IPv6
-
-
ip_type
Mengembalikan jenis alamat IP: private, reserved, loopback, public, atau allocated ripe ncc.
-
Sintaksis
ip_type(ip,default="") -
Parameter
Parameter
Tipe
Wajib
Deskripsi
ip
String
Ya
Alamat IP.
default
String
Tidak
Nilai fallback jika jenis tidak dapat ditentukan. Bisa kosong.
-
Respons
Mengembalikan jenis alamat IP. Nilai yang valid adalah private, reserved, loopback, public, dan allocated ripe ncc.
-
Contoh
-
Contoh 1: Periksa alamat loopback.
-
Log mentah
ip: 127.0.0.1 -
Aturan transformasi
e_set("type",ip_type(v("ip"))) -
Hasil
ip: 127.0.0.1 type: loopback
-
-
Contoh 2: Periksa apakah alamat IP bersifat private.
-
Log mentah
ip: 47.100.XX.XX -
Aturan transformasi
e_set("type",ip_type(v("ip"))) -
Hasil
ip: 47.100.XX.XX type: private
-
-
Contoh 3: Memeriksa alamat publik.
-
Log mentah
ip: 47.100.XX.XX -
Aturan transformasi
e_set("type",ip_type(v("ip"))) -
Hasil
ip: 47.100.XX.XX type: public
-
-
Contoh 4: Periksa jenis alamat IPv6 yang merupakan alamat loopback.
-
Log mentah
ip: ::1 -
Aturan transformasi
e_set("type",ip_type(v("ip"))) -
Hasil
ip: ::1 type: loopback
-
-
Contoh 5: Periksa jenis alamat IPv6 yang merupakan alamat allocated ripe ncc.
-
Log mentah
ip: 2001:0658:022a:cafe:0200::1 -
Aturan transformasi
e_set("type",ip_type(v("ip"))) -
Hasil
ip: 2001:0658:022a:cafe:0200::1 type: allocated ripe ncc
-
-
ip_makenet
Mengonversi alamat IP menjadi Blok CIDR.
-
Sintaksis
ip_makenet(ip, subnet_mask=None,default="") -
Parameter
Nama Parameter
Tipe Parameter
Wajib
Deskripsi
ip
String
Ya
Alamat IP.
subnet_mask
String
Ya
Subnet mask. Contoh: 255.255.255.0.
CatatanJika Anda menentukan rentang alamat IP untuk parameter ip, Anda dapat mengosongkan parameter subnet_mask.
default
String
Tidak
Nilai fallback jika konversi gagal. Bisa kosong.
-
Respons
Mengembalikan Blok CIDR.
-
Contoh
-
Contoh 1: Konversi alamat IP menjadi Blok CIDR.
-
Log mentah
ip: 192.168.1.0 -
Aturan transformasi
e_set("makenet",ip_makenet(v("ip"),"255.255.255.0")) -
Hasil
ip: 192.168.1.0 makenet: 192.168.1.0/24
-
-
Contoh 2: Konversi rentang alamat IP menjadi Blok CIDR.
-
Log mentah
ip: 192.168.1.0-192.168.1.255 -
Aturan transformasi
e_set("makenet",ip_makenet(v("ip"))) -
Hasil
ip: 192.168.1.0-192.168.1.255 makenet: 192.168.1.0/24
-
-
Contoh 3: Konversi rentang alamat IP menjadi Blok CIDR.
-
Log mentah
ip: 192.168.1.0/255.255.255.0 -
Aturan transformasi
e_set("makenet",ip_makenet(v("ip"))) -
Hasil
ip: 192.168.1.0/255.255.255.0 makenet: 192.168.1.0/24
-
-
ip_to_format
Mengonversi Blok CIDR ke format tertentu, seperti panjang awalan, subnet mask, atau rentang alamat IP.
-
Sintaksis
ip_to_format(cidr_subnet, want_prefix_len=0,default="") -
Parameter
Nama Parameter
Tipe
Wajib
Deskripsi
cidr_subnet
String
Ya
Blok CIDR. Contoh: 192.168.1.0/24
want_prefix_len
Int
Tidak
Format output. Default: 0.
-
0: Tidak diformat.
-
1: Format awalan.
-
2: Format netmask.
-
3: Rentang alamat IP.
default
String
Tidak
Nilai fallback jika pemformatan gagal. Bisa kosong.
-
-
Respons
Mengembalikan alamat IP dalam format yang ditentukan.
-
Contoh
-
Contoh 1: Mengembalikan Blok CIDR input tanpa mengubah format.
-
Log mentah
ip: 192.168.1.0/24 -
Aturan transformasi
e_set("strNormal",ip_to_format(v("ip"),0)) -
Hasil
ip: 192.168.1.0/24 strNormal: 192.168.1.0/24
-
-
Contoh 2: Memformat Blok CIDR agar menggunakan awalan.
-
Log mentah
ip: 192.168.1.0/24 -
Aturan transformasi
e_set("strNormal",ip_to_format(v("ip"),1)) -
Hasil
ip: 192.168.1.0/24 strNormal: 192.168.1.0/24
-
-
Contoh 3: Memformat Blok CIDR agar menggunakan subnet mask.
-
Log mentah
ip: 192.168.1.0/24 -
Aturan transformasi
e_set("strNormal",ip_to_format(v("ip"),2)) -
Hasil
ip: 192.168.1.0/24 strNormal: 192.168.1.0/255.255.255.0
-
-
Contoh 4: Memformat Blok CIDR sebagai rentang alamat IP.
-
Log mentah
ip: 192.168.1.0/24 -
Aturan transformasi
e_set("strNormal",ip_to_format(v("ip"),3)) -
Hasil
ip: 192.168.1.0/24 strNormal: 192.168.1.0-192.168.1.255
-
-
ip_overlaps
Menentukan apakah dua Blok CIDR saling tumpang tindih.
-
Sintaksis
ip_overlaps(cidr_subnet, cidr_subnet2,default="") -
Parameter
Nama Parameter
Tipe Parameter
Wajib
Deskripsi
cidr_subnet
String
Ya
Blok CIDR pertama.
cidr_subnet2
String
Ya
Blok CIDR kedua.
default
String
Tidak
Nilai fallback jika tumpang tindih tidak dapat ditentukan. Bisa kosong.
-
Respons
-
Fungsi mengembalikan 0 jika dua Blok CIDR tidak saling tumpang tindih.
-
Fungsi mengembalikan 1 jika dua Blok CIDR tumpang tindih di bagian akhir.
-
Fungsi mengembalikan -1 jika dua Blok CIDR tumpang tindih di bagian awal.
-
-
Contoh
-
Contoh 1: Dua Blok CIDR tidak saling tumpang tindih.
-
Log mentah
cidr1: 192.168.0.0/23 cidr2: 192.168.2.0/24 -
Aturan transformasi
e_set("overlaps",ip_overlaps(v("cidr1"),v("cidr2"))) -
Hasil
cidr1: 192.168.0.0/23 cidr2: 192.168.2.0/24 overlaps: 0
-
-
Contoh 2: Dua Blok CIDR tumpang tindih di bagian awal.
-
Log mentah
cidr1: 192.168.1.0/24 cidr2: 192.168.0.0/23 -
Aturan transformasi
e_set("overlaps",ip_overlaps(v("cidr1"),v("cidr2"))) -
Hasil
cidr1: 192.168.1.0/24 cidr2: 192.168.0.0/23 overlaps: -1
-
-
Contoh 3: Dua Blok CIDR tumpang tindih di bagian akhir.
-
Log mentah
cidr1: 192.168.0.0/23 cidr2: 192.168.1.0/24 -
Aturan transformasi
e_set("overlaps",ip_overlaps(v("cidr1"),v("cidr2"))) -
Hasil
cidr1: 192.168.0.0/23 cidr2: 192.168.1.0/24 overlaps: 1
-
-
ip2long
Mengonversi alamat IP dari string menjadi bilangan bulat panjang (long integer).
-
Sintaksis
ip2long(value,default=0) -
Parameter
Nama Parameter
Tipe Parameter
Wajib
Deskripsi
value
String
Ya
Nilai yang akan dikonversi.
default
String
Tidak
Nilai fallback untuk alamat IP yang tidak valid. Contoh: 0.
-
Respons
Mengembalikan representasi bilangan bulat panjang (long integer) dari alamat IP yang valid.
-
Contoh
-
Contoh 1: Kasus default
-
Log mentah
ip: 192.168.0.100 -
Aturan transformasi
e_set("long_ip",ip2long(v("ip"))) -
Hasil
ip: 192.168.0.100 long_ip: 167772160
-
-
Contoh 2: Alamat IP tidak valid
-
Log mentah
ip: 47.100.XX.XX -
Aturan transformasi
e_set("long_ip",ip2long(v("ip"), "ignore")) -
Hasil
ip:47.100.XX.XX long_ip:ignore
-
-
long2ip
Mengonversi bilangan bulat panjang (long integer) menjadi alamat IP dalam format string.
-
Sintaksis
long2ip(value,default="") -
Parameter
Nama Parameter
Tipe Parameter
Wajib
Deskripsi
value
String
Ya
Nilai yang akan dikonversi.
default
String
Tidak
Nilai fallback untuk bilangan bulat panjang (long integer) yang tidak valid. Default: string kosong.
-
Respons
Mengembalikan alamat IP dalam format string yang dikonversi dari bilangan bulat panjang (long integer) yang valid.
-
Contoh
-
Contoh 1: Kasus default
-
Log mentah
long: 167772160 -
Aturan transformasi
e_set("ip",long2ip(v("long"))) -
Hasil
long: 167772160 ip: 192.168.0.100
-
-
Contoh 2: Konversi dari bilangan bulat panjang ke alamat IP gagal
-
Log mentah
long: 4294967296 -
Aturan transformasi
e_set("ip",long2ip(v("long"))) -
Hasil
long: 4294967296 ip:
-
-
Contoh 3: Penanganan error kustom untuk konversi yang gagal
-
Log mentah
long: 4294967296 -
Aturan transformasi
e_set("ip",long2ip(v("long"),default="xxx")) -
Hasil
long: 4294967296 ip: xxx
-
-