Harald Welte | 5a3fa77 | 2008-12-29 05:35:02 +0000 | [diff] [blame] | 1 | #!/usr/bin/perl |
| 2 | |
| 3 | use strict; |
| 4 | use DBI; |
| 5 | my $dbh = DBI->connect("dbi:SQLite:dbname=hlr.sqlite3","",""); |
| 6 | |
| 7 | |
| 8 | my %mcc_names; |
| 9 | my %mcc_mnc_names; |
| 10 | |
Harald Welte | 730bc65 | 2010-01-01 15:08:38 +0100 | [diff] [blame] | 11 | sub get_mcc_mnc_name($) |
| 12 | { |
| 13 | my $mcc_mnc = shift; |
| 14 | my $ret = $mcc_mnc; |
| 15 | |
| 16 | if ($mcc_mnc_names{$mcc_mnc} ne '') { |
| 17 | $ret = $mcc_mnc_names{$mcc_mnc}; |
| 18 | } |
| 19 | |
| 20 | return $ret; |
| 21 | } |
| 22 | |
Harald Welte | 5a3fa77 | 2008-12-29 05:35:02 +0000 | [diff] [blame] | 23 | sub read_networks($) |
| 24 | { |
| 25 | my $filename = shift; |
| 26 | my $cur_name; |
| 27 | |
| 28 | open(INFILE, $filename); |
| 29 | while (my $l = <INFILE>) { |
| 30 | chomp($l); |
| 31 | if ($l =~ /^#/) { |
| 32 | next; |
| 33 | } |
| 34 | if ($l =~ /^\t/) { |
| 35 | my ($mcc, $mnc, $brand, $r) = split(' ', $l, 4); |
| 36 | #printf("%s|%s|%s\n", $mcc, $mnc, $brand); |
| 37 | $mcc_mnc_names{"$mcc-$mnc"} = $brand; |
| 38 | $mcc_names{$mcc} = $cur_name; |
| 39 | } elsif ($l =~ /^(\w\w)\t(.*)/) { |
| 40 | #printf("%s|%s\n", $1, $2); |
| 41 | $cur_name = $2; |
| 42 | } |
| 43 | } |
| 44 | close(INFILE); |
| 45 | } |
| 46 | |
| 47 | read_networks("networks.tab"); |
| 48 | |
| 49 | my %oper_count; |
| 50 | my %country_count; |
| 51 | |
Harald Welte | 730bc65 | 2010-01-01 15:08:38 +0100 | [diff] [blame] | 52 | #my $sth = $dbh->prepare("SELECT imsi FROM subscriber where authorized=1"); |
Harald Welte | 5a3fa77 | 2008-12-29 05:35:02 +0000 | [diff] [blame] | 53 | my $sth = $dbh->prepare("SELECT imsi FROM subscriber"); |
| 54 | |
| 55 | $sth->execute(); |
| 56 | |
| 57 | while (my $href = $sth->fetchrow_hashref) { |
| 58 | my ($mcc, $mnc) = $$href{imsi} =~ /(\d{3})(\d{2}).*/; |
| 59 | #printf("%s %s-%s \n", $$href{imsi}, $mcc, $mnc); |
| 60 | $oper_count{"$mcc-$mnc"}++; |
| 61 | $country_count{$mcc}++; |
| 62 | } |
| 63 | |
| 64 | |
Harald Welte | 730bc65 | 2010-01-01 15:08:38 +0100 | [diff] [blame] | 65 | foreach my $c (sort{$country_count{$b} <=> $country_count{$a}} keys %country_count) { |
Harald Welte | 5a3fa77 | 2008-12-29 05:35:02 +0000 | [diff] [blame] | 66 | printf("%s: %d\n", $mcc_names{$c}, $country_count{$c}); |
Harald Welte | 730bc65 | 2010-01-01 15:08:38 +0100 | [diff] [blame] | 67 | |
| 68 | foreach my $k (sort{$oper_count{$b} <=> $oper_count{$a}} keys %oper_count) { |
| 69 | if ($k =~ /^$c-/) { |
| 70 | printf("\t%s: %d\n", get_mcc_mnc_name($k), $oper_count{$k}); |
| 71 | } |
Harald Welte | 5a3fa77 | 2008-12-29 05:35:02 +0000 | [diff] [blame] | 72 | } |
Harald Welte | 730bc65 | 2010-01-01 15:08:38 +0100 | [diff] [blame] | 73 | } |