#!/usr/bin/php
<?php

// Note: The GW generators have newer code

error_reporting(E_ALL E_NOTICE E_STRICT E_DEPRECATED);

define('USE_CACHE'true);

// ---

include __DIR__ '/ipv4_functions.inc.phps';
include 
__DIR__ '/grep_funcs.inc.phps';
include 
__DIR__ '/rirs.inc.phps';

// This is like __DIR__, but does not resolve symlinks
// (useful for sharing the source codes locally by symlinking)
define('DIR'dirname($_SERVER['SCRIPT_FILENAME']));

foreach (
$rirs as &$rir) {
    if (
USE_CACHE) {
        
$rirstat_file file(DIR "/cache/rirstats/$rir");
    } else {
        
$rirstat_file file($rirstat_urls[$rir]);
    }

    
$rirstat_file antigrep($rirstat_file'#');
    
$rirstat_file grep($rirstat_file'ipv4');
    
$rirstat_file antigrep($rirstat_file'summary');

    
# ---

    
$xxx = array();

    echo 
"$rir: Step 1 - Prepare\n";

    foreach (
$rirstat_file as $x) {
        
$x trim($x);
        if (
$x == '') continue;

        
$ary explode('|'$x);

        
# Example:
        # afrinic|ZM|ipv4|196.46.192.0|8192|20031024|allocated
        # ^0      ^1 ^2   ^3           ^4   ^5       ^6

        
$baseip $ary[3];
        
$nums $ary[4];
        
# $state = $ary[6];

        
$topip ipv4_add($baseip$nums-1);

        
$xxx[$baseip] = $topip;
    }

    
$xxx ipv4_merge_address_blocks($xxx"$rir: Step 2 - ");

    
// --- CIDR finden ---

    
echo "$rir: Step 3 - Analyze address ranges and write CIDR blocks\n";

    
$hf fopen(DIR "/out/ipv4_cidr_$rir.new"'w');
    
$hs fopen(DIR "/out/ipv4_cidr_shortened_$rir.new"'w');
    
$hb fopen(DIR "/out/ipv4_blocks_$rir.new"'w');

    foreach (
$xxx as $baseip => &$topip) {
        
fwrite($hbipv4_complete($baseip)." - ".ipv4_complete($topip)."\n");

        
$rirstat_file ipv4_range2cidr($baseip$topiptrue);
        foreach (
$rirstat_file as $x) {
            
fwrite($hs"$x\n");
        }

        
$rirstat_file ipv4_range2cidr($baseip$topipfalse);
        foreach (
$rirstat_file as $x) {
            
fwrite($hf"$x\n");
        }
    }

    
fclose($hb);
    
fclose($hs);
    
fclose($hf);

    
rename(DIR "/out/ipv4_cidr_$rir.new"DIR "/out/ipv4_cidr_$rir");
    
rename(DIR "/out/ipv4_cidr_shortened_$rir.new"DIR "/out/ipv4_cidr_shortened_$rir");
    
rename(DIR "/out/ipv4_blocks_$rir.new"DIR "/out/ipv4_blocks_$rir");
}

echo 
"Finished!\n";

?>