Íslensk IP net
Skrifađ af Tómas A. Árnason ţann 21. nóvember 2007 - 21:53
3 athugasemdir skrifađar - toppur / botn
Fjöldi lestra: 1256
Ţessi klassi leitar uppi ţjónustuađila eftir IP tölu.

Dćmi á notkun:

$foo = new is_ip_net;
$foo->isnet( 'IP TALA HÉR' );
echo $foo->ip . ' er hjá: ' . $foo->isp();

Sýnidćmi
  1 |
  2 |
  3 |
  4 |
  5 |
  6 |
  7 |
  8 |
  9 |
 10 |
 11 |
 12 |
 13 |
 14 |
 15 |
 16 |
 17 |
 18 |
 19 |
 20 |
 21 |
 22 |
 23 |
 24 |
 25 |
 26 |
 27 |
 28 |
 29 |
 30 |
 31 |
 32 |
 33 |
 34 |
 35 |
 36 |
 37 |
 38 |
 39 |
 40 |
 41 |
 42 |
 43 |
 44 |
 45 |
 46 |
 47 |
 48 |
 49 |
 50 |
 51 |
 52 |
 53 |
 54 |
 55 |
 56 |
 57 |
 58 |
 59 |
 60 |
 61 |
 62 |
 63 |
 64 |
 65 |
 66 |
 67 |
 68 |
 69 |
 70 |
 71 |
 72 |
 73 |
 74 |
 75 |
 76 |
 77 |
 78 |
 79 |
 80 |
 81 |
 82 |
 83 |
 84 |
 85 |
 86 |
 87 |
 88 |
 89 |
 90 |
 91 |
 92 |
 93 |
 94 |
 95 |
 96 |
 97 |
 98 |
 99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
<?php

/* 
 Ţessi klassi leitar uppi ţjónustuađila eftir IP tölu.
 */
 
 
class is_ip_net
{
    
//    Ég vill geta sett IP töluna sjálfkrafa.
    
var $ip;
    
    
//     Net sem uppgefin IP-tala tilheyrir.
    
var $net;
    
    
//     Ţjónustuađili IP-tölu.
    
var $isp;
    
    
//     AS-númer sem IP-tala tilheyrir.
    
var $asn;

    
/* Array yfir íslensk IP-net og tengingu ţeirra viđ AS-númer
    IP/Maski                AS-númer
    */
    
    
var $as_numer = array(
    
'127.0.0.1/32'        => '0',            /* Localhost        0        */
    
'62.145.128.0/19'     => '12969',     /* OgVodafone         12969    */
    
'78.40.248.0/21'     => '43571',     /* Nova                43571   */
    
'79.171.96.0/21'    => '43892',        /* Basis             43892    */
    
'80.248.16.0/20'     => '39418',     /* Nýherji             39418    */
    
'81.15.0.0/17'        => '12969',     /* OgVodafone         12969    */
    
'82.112.64.0/19'    => '31236',        /* Rvk.    borg        31236     */
    
'82.148.64.0/19'    => '29348',        /* Menntam. ráđun.    29348    */
    
'82.221.0.0/16'        => '30818',        /* Skýrr             30818    */
    
'83.173.0.0/18'        => '31441',         /* OR                 31441    */
    
'85.116.64.0/19'    => '34678',        /* Tölvun            34678    */
    
'85.197.192.0/18'    => '34364',        /* Hive                34464    */
    
'85.220.0.0/17'        => '6677',        /* Síminn            6677    */
    
'87.237.32.0/21'    => '35834',        /* CCP                35834    */
    
'88.149.0.0/17'        => '34464',        /* Hive                34464    */
    
'88.151.48.0/21'    => '39472',        /* KB                39472    */
    
'89.160.128.0/17'    => '12969',        /* OgVodafone        12969    */
    
'130.208.0.0/16'    => '15474',        /* RHNET            15474    */
    
'157.157.0.0/16'     => '6677',         /* Síminn             6677    */
    
'192.147.34.0/24'    => '6677',        /* Síminn            6677    */
    
'193.4.0.0/16'        => '12969',        /* OgVodafone        12969    */
    
'193.109.16.0/20'    => '24743',     /* Snerpa            24743    */
    
'194.105.224.0/19'    => '6677',        /* Síminn            6677    */
    
'194.144.0.0/16'    => '12969',        /* OgVodafone        12969    */
    
'212.30.192.0/19'    => '6677',        /* Síminn            6677    */
    
'212.126.224.0/19'    => '25244',        /* deCode            25244    */
    
'213.167.128.0/19'    => '6677',        /* Síminn            6677    */
    
'213.176.128.0/19'    => '12969',        /* OgVodafone        12969    */
    
'213.181.96.0/19'    => '31410',     /* Netsamskipti     31410    */
    
'213.190.96.0/19'    => '25509',     /* Vortex            25509    */
    
'213.213.128.0/19'    => '12969',        /* OgVodafone        12969    */
    
'213.220.64.0/18'    => '12969',     /* OgVodafone        12969    */
    
'217.9.128.0/20'     => '12969',        /* OgVodafone        12969    */
    
'217.28.176.0/20'    => '29689',        /* Skyggnir         29689    */
    
'217.151.160.0/19'    => '12969',        /* OgVodafone        12969    */
    
'217.171.208.0/20'    => '12969'        /* Thekking            12969    */
    
);
    
    
/* Array yfir íslensk IP-net samkvćmt RIX. Má uppfćra ef ţörf krefur.
    IP/Maski            IP/Maski                            
    */
                
    
var $ip_net = array(
    
'127.0.0.1/32'        => '127.0.0.1/32',        /* Localhost        0        */    // Notađ viđ debugging
    
'62.145.128.0/19'     => '62.145.128.0/19',     /* OgVodafone         12969    */
    
'78.40.248.0/21'     => '78.40.248.0/21',     /* Nova                43571   */
    
'79.171.96.0/21'    => '79.171.96.0/21',    /* Basis             43892    */
    
'80.248.16.0/20'     => '80.248.16.0/20',     /* Nýherji            39418    */
    
'81.15.0.0/17'        => '81.15.0.0/17',         /* OgVodafone         12969    */
    
'82.112.64.0/19'    => '82.112.64.0/19',    /* Rvk. borg        31236     */
    
'82.148.64.0/19'    => '82.148.64.0/19',    /* Menntam. ráđun.    29348    */
    
'82.221.0.0/16'        => '82.221.0.0/16',        /* Skýrr            30818    */
    
'83.173.0.0/18'        => '83.173.0.0/18',         /* OR                 31441    */
    
'85.116.64.0/19'    => '85.116.64.0/19',    /* Tölvun            34678    */
    
'85.197.192.0/18'    => '85.197.192.0/18',    /* Hive                34464    */
    
'85.220.0.0/17'        => '85.220.0.0/17',        /* Síminn            6677    */
    
'87.237.32.0/21'    => '87.237.32.0/21',    /* CCP                35834    */
    
'88.149.0.0/17'        => '88.149.0.0/17',        /* Hive                34464    */
    
'88.151.48.0/21'    => '88.151.48.0/21',    /* KB                39472    */
    
'89.160.128.0/17'    => '89.160.128.0/17',    /* OgVodafone        12969    */
    
'130.208.0.0/16'    => '130.208.0.0/16',    /* RHNET            15474    */
    
'157.157.0.0/16'     => '157.157.0.0/16',     /* Síminn             6677    */
    
'192.147.34.0/24'    => '192.147.34.0/24',    /* Síminn            6677    */
    
'193.4.0.0/16'        => '193.4.0.0/16',        /* OgVodafone        12969    */
    
'193.109.16.0/20'    => '193.109.16.0/20',     /* Snerpa            24743    */
    
'194.105.224.0/19'    => '194.105.224.0/19',    /* Sími&#140;nn            6677    */
    
'194.144.0.0/16'    => '194.144.0.0/16',    /* OgVodafone        12969    */
    
'212.30.192.0/19'    => '212.30.192.0/19',    /* Síminn            6677    */
    
'212.126.224.0/19'    => '212.126.224.0/19',    /* deCode            25244    */
    
'213.167.128.0/19'    => '213.167.128.0/19',    /* Síminn            6677    */
    
'213.176.128.0/19'    => '213.176.128.0/19',    /* OgVodafone        12969    */
    
'213.181.96.0/19'    => '213.181.96.0/19',     /* Netsamskipti     31410    */
    
'213.190.96.0/19'    => '213.190.96.0/19',     /* Vortex            25509    */
    
'213.213.128.0/19'    => '213.213.128.0/19',    /* OgVodafone        12969    */
    
'213.220.64.0/18'    => '213.220.64.0/18',     /* OgVodafone        12969    */
    
'217.9.128.0/20'     => '217.9.128.0/20',    /* OgVodafone        12969    */
    
'217.28.176.0/20'    => '217.28.176.0/20',    /* Skyggnir         29689    */
    
'217.151.160.0/19'    => '217.151.160.0/19',    /* OgVodafone        12969    */
    
'217.171.208.0/20'    => '217.171.208.0/20'    /* Thekking            12969    */
    
);
    
    
/*    Array yfir íslenska eigendur AS-neta samkvćmt RIX
    AS                    Eigandi
    */
    
    
var $isps = array(
    
'0'                => 'Heimanet',                /* Localhost        0        */     // Notađ viđ debugging
    
'12969'            => 'OgVodafone',             /* OgVodafone         12969    */
    
'43571'         => 'Nova',                     /* Nova                43571   */
    
'43892'            => 'Basis',                    /* Basis             43892    */
    
'39418'         => 'Nýherji',                 /* Nýherji            39418    */
    
'31236'            => 'Reykjavíkurborg',        /* Rvk. borg        31236     */
    
'29348'            => 'Menntamálaráđuneytiđ',    /* Menntam. ráđun.    29348    */
    
'30818'            => 'Skýrr',                    /* Skýrr            30818    */
    
'31441'            => 'Orkuveita Reykjavíkur'/* OR                 31441    */
    
'34678'            => 'Tölvun',                /* Tölvun            34678    */
    
'34464'            => 'Hive',                    /* Hive                34464    */
    
'6677'            => 'Síminn',                /* Síminn            6677    */
    
'35834'            => 'CCP',                    /* CCP                35834    */
    
'39472'            => 'Kaupţing',                /* KB                39472    */
    
'15474'            => 'RHNET',                    /* RHNET            15474    */
    
'25743'            => 'Snerpa',                 /* Snerpa            24743    */
    
'25244'            => 'deCode',                /* deCode            25244    */
    
'31410'            => 'Netsamskipti',             /* Netsamskipti     31410    */
    
'25509'            => 'Vortexe',                 /* Vortex            25509    */
    
'29689'            => 'Skyggnir',                /* Skyggnir         29689    */
    
);

    function 
isnet($ip)
    {
        
$this->ip $ip;
        
$this->cidr($ip,$this->ip_net);
    }
    
    function 
cidr($addr$cidr '')
    {
        if( !isset(
$cidr))
        {
            
$cidr $this->ip_net;
        }
        
        unset(
$ret);
        
        if(
is_array($cidr))
        {
            foreach(
$cidr as $num => $net)
            {
                if(
$this->cidr($addr$net))
                {
                    
//$output = true;
                    
$ret $num;
                }
               }
        }
        else
        {
            list(
$ip$mask) = explode('/'$cidr);
            
$mask 0xffffffff << (32 $mask);
            if((
ip2long($addr) & $mask) === (ip2long($ip) & $mask))
            {
                
$ret true;
            }
               else
               {
                
$ret false;
            }
           }
           
           if(
strlen($ret) > 7)
           {
               
$this->net $ret;
               
$this->asn $this->as_numer[$ret];
               
$as $this->asn;
               
$this->isp $this->isps[$as];
           }
           
        return 
$ret;
    }
    
    
//    Einföld leiđ til ţess ađ sćkja AS-númeriđ.
    
function asn()
    {
        return 
$this->asn;
    }
    
    
//     Skilar ţjónustuađila.
    
function isp()
    {
        return 
$this->isp;
    }    
    
    
// Setjum $this->ip breytuna.
    
function set_ip($ip)
    {
        
$this->ip $ip;
    }
}

?>



26. nóvember 2007 - 02:40
#1 - Gaui
http://www.gaui.is
Flottur klasi hjá ţér. Ţú hefđir samt alveg mátt útskýra notkun hans, en ég lagađi ţađ fyrir ţig. Endilega sendu meira inn.

13. desember 2007 - 21:09
#2 - Tómas
http://ms.tomasarnason.com
Ţar sem ţađ er lítiđ ađ gera í 10. bekk ţessa stundina skal ég reyna ađ 'bomma' nokkrum scriptum hérna inn á nćstunni...

Ég virđist ná ţví sama útur ţessari scriptu sem ég bjó til. Ţar ađ segja ef ćtlunin hjá ţér međ ţessu er ađeins ađ sćkja netrekandann.

205 línur í 85:

<?php
/**
* @author Birkir Rafn Guđjónsson
* @copyright 2007
*/

$iptala = '127.0.0.1';

#Gerum ip net frá rix
$ipnet = array(
'127.0.0.1/32'        => 'Heimanet',          /* Localhost        0        */
'62.145.128.0/19'    => 'Vodafone',             /* OgVodafone         12969    */
'78.40.248.0/21'    => 'Nova',                 /* Nova                43571   */
'79.171.96.0/21'    => 'Basis',                /* Basis             43892    */
'80.248.16.0/20'    => 'Nýherji',             /* Nýherji             39418    */
'81.15.0.0/17'        => 'Vodafone',             /* OgVodafone         12969    */
'82.112.64.0/19'    => 'Reykjavíkurborg',   /* Rvk.    borg        31236     */
'82.148.64.0/19'    => 'Menntamálaráđuneitiđ',/* Menntam. ráđun.    29348    */
'82.221.0.0/16'        => 'Skýrr',                /* Skýrr             30818    */
'83.173.0.0/18'        => 'OR',                 /* OR                 31441    */
'85.116.64.0/19'    => 'Tölvun',            /* Tölvun            34678    */
'85.197.192.0/18'    => 'Hive',                /* Hive                34464    */
'85.220.0.0/17'        => 'Síminn',            /* Síminn            6677    */
'87.237.32.0/21'    => 'CPP',                  /* CCP                35834    */
'88.149.0.0/17'        => 'Hive',              /* Hive                34464    */
'88.151.48.0/21'    => 'KB Banki',            /* KB                39472    */
'89.160.128.0/17'    => 'Vodafone',            /* OgVodafone        12969    */
'130.208.0.0/16'    => 'RHNet',                /* RHNET            15474    */
'157.157.0.0/16'    => 'Síminn',             /* Síminn             6677    */
'192.147.34.0/24'    => 'Síminn',            /* Síminn            6677    */
'193.4.0.0/16'        => 'Vodafone',            /* OgVodafone        12969    */
'193.109.16.0/20'    => 'Snerpa',             /* Snerpa            24743    */
'194.105.224.0/19'    => 'Síminn',            /* Síminn            6677    */
'194.144.0.0/16'    => 'Vodafone',            /* OgVodafone        12969    */
'212.30.192.0/19'    => 'Síminn',            /* Síminn            6677    */
'212.126.224.0/19'    => 'deCode',            /* deCode            25244    */
'213.167.128.0/19'    => 'Síminn',            /* Síminn            6677    */
'213.176.128.0/19'    => 'Vodafone',            /* OgVodafone        12969    */
'213.181.96.0/19'    => 'Netsamskipti',         /* Netsamskipti     31410    */
'213.190.96.0/19'    => 'Vortex',             /* Vortex            25509    */
'213.213.128.0/19'    => 'Vodafone',            /* OgVodafone        12969    */
'213.220.64.0/18'    => 'Vodafone',             /* OgVodafone        12969    */
'217.9.128.0/20'    => 'Vodafone',            /* OgVodafone        12969    */
'217.28.176.0/20'    => 'Skyggnir',            /* Skyggnir         29689    */
'217.151.160.0/19'    => 'Vodafone',            /* OgVodafone        12969    */
'217.171.208.0/20'    => 'Ţekking'            /* Thekking          12969 */
);

#Fyrir hvern ipmaska í array, skal skipta í $ipmaski og $audkenni
foreach($ipnet as $ipmaski => $audkenni){
   
   
# Búum til regular expression fyrir ip maska
   
ereg("([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})/([0-9]{1,3})", $ipmaski, $tala);

   
# Finnum upphafs-endatölu og enda-endatölu
   
$byrjar = $tala[4];
   
$endar = $tala[5];
   
   
#Gerum allar ip tölur sem tölubiliđ vill
   
while($byrjar <= $endar){
       
       
# Gerum ip tölu
       
$testip = $tala[1].'.'.$tala[2].'.'.$tala[3].'.'.$byrjar;
       
       
# Ef ip tala sú sama og á ip neti ţá birtum viđ netrekanda.
       
if($testip==$iptala){
           
            echo
$audkenni;
           
        }
       
       
$byrjar++;
    }

}
?>




Nafn:


Netfang:


Veffang:


Hvađ er tólf plús einn?



Skilabođ: