#!/usr/bin/perl -w use strict; use MongoDB; use CGI; use warnings; use boolean qw(:all); # no warnings "experimental::smartmatch"; #use Data::Dumper; ### Config ### my $dname = "dtel-ix"; my $dbuser = "dtel-ix"; my $dbpass = "fh49HEF89Bxusm"; #my $dbhost = "web.dtel-ix.net"; my $dbhost = "109.68.46.87"; my $dbcoll = "members"; ### Connect to MongoDB ### my $mongo_client = MongoDB->connect('mongodb://' . $dbuser . ':' . $dbpass . '@' . $dbhost . '/' . $dname); my $mongo_db = $mongo_client->get_database($dname); my $mongo_coll = $mongo_db->get_collection($dbcoll); # $mongo_client->authenticate($dname, $dbuser, $dbpass); ### Print HTML header ### my $CGI = CGI->new; print $CGI->header(-type => 'text/html', -charset => 'utf-8'); print $CGI->start_html(-style => [ { 'src' => "/templates/system/css/members.css" } ]); ### Get GET variables ### my $order = $CGI->param('order'); my $asc = $CGI->param('asc'); if (!defined $order) {$order='eng_name'} if (!defined $asc) {$asc=1} ### Retrieve information from DB ### my @res; my $c = $mongo_coll ->find({active => boolean::true}); while(my $hash=$c->next) { push(@res, $hash); } my @sorted; my $asc_link; my @sort_chars = qw(eng_name policy country); my @sort_digits = qw(asn port_speed); if ($order ~~ @sort_chars) { if ($asc==1) { $asc_link="asc=0"; @sorted = sort { lc($a->{$order}) cmp lc($b->{$order})} @res; } elsif ((!defined $asc)||($asc==0)) { $asc_link="asc=1"; @sorted = sort { lc($b->{$order}) cmp lc($a->{$order})} @res; } } elsif ($order ~~ @sort_digits) { if ($asc==1) { $asc_link="asc=0"; @sorted = sort { $a->{$order} <=> $b->{$order}} @res; } elsif ((!defined $asc)||($asc==0)) { $asc_link="asc=1"; @sorted = sort { $b->{$order} <=> $a->{$order}} @res; } } else { $asc_link="asc=0"; @sorted = sort { lc($a->{$order}) cmp lc($b->{$order})} @res; } #print Dumper(@sorted); ### Print table header ### print '
# | '; if ($order =~ "eng_name") {print "Member | "} else {print "Member | "} if ($order =~ "asn") {print "AS | "} else {print "AS | "} if ($order =~ "policy") {print "Policy | "} else {print "Policy | "} if ($order =~ "country") {print "Country | "} else {print "Country | "} print "
$sorted[$i]{eng_name} | $sorted[$i]{asn} | $sorted[$i]{policy} | $sorted[$i]{country} |