Geoip MaxMind DB 生成指南

目前MaxMind对MMDB的读写支持如下
Writer:
perl
Reader:
C
C#
Java
Perl
PHP
Python

所以本文着重介绍如何快速使用perl生成mmdb文件,以及查询mmdb基本原理


工作环境:Centos 6.5

一、安装perl环境

忽略解压、cd等基础操作

二、生成库文件

  • 编写perl代码,下面为样例,将读local.db文件,生成dt.mmdb文件
use MaxMind::DB::Writer::Tree;
use Net::Works::Network;

use strict;
use warnings;
use Path::Class;
use autodie;

my %types = (
    product => 'utf8_string',
    rack => 'utf8_string',
    administrator => 'utf8_string',
    room => 'utf8_string',
);

my $tree = MaxMind::DB::Writer::Tree->new(
    ip_version            => 4,
    record_size           => 24,
    database_type         => 'kevin_test',
    languages             => [ 'en' ],
    description           => { en => 'Used in MarkDown display' },
    map_key_type_callback => sub {
    $types{ $_[0] } },
);

sub tree_insert_network{
   
    my $network = Net::Works::Network->new_from_string( string => $_[1] );
    $_[0]->insert_network(
        $network,
        {
        product => $_[2],
        rack => $_[3],
        administrator => $_[4],
        room => $_[5]
        },
    );
}

sub build_tree{
   
    my $dir = dir(".");
    my $file = $dir->file($_[0]);
    my $content = $file->slurp();
    my $file_handle = $file->openr();
    binmode($file_handle, ":utf8");
    while( my $line = $file_handle->getline() ) {
        $line =~ s/^\s+|\s+$//g;
        if ($line eq "") {
            next;
        }
        my @values = split('\|', $line);
        for (
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值