require "${General::swroot}/header.pl";
my $FASTD_CONFIG = "${General::swroot}/freifunk/fastd.conf";
-my $NETWORKS_LIST = "${General::swroot}/freifunk/networks.json";
+my $NETWORKS_DIR = "${General::swroot}/freifunk/networks";
#workaround to suppress a warning when a variable is used only once
my @dummy = ( ${Header::colouryellow} );
}
}
+sub LoadNetworks() {
+ opendir (DIR, $NETWORKS_DIR) or die $!;
+
+ my @networks = ();
+ while (my $filename = readdir(DIR)) {
+ my $network = &LoadNetwork("$NETWORKS_DIR/$filename");
+
+ if (defined($network)) {
+ push(@networks, $network);
+ }
+ }
+
+ closedir(DIR);
+
+ return @networks;
+}
+
+sub LoadNetwork() {
+ my $file = shift;
+
+ if (-e $file) {
+ return JSON::Parse::json_file_to_perl($file);
+ }
+
+ return undef;
+}
+
sub GetNetworkList() {
- my $list = JSON::Parse::json_file_to_perl($NETWORKS_LIST);
+ my @networks = &LoadNetworks();
my @ret = ();
- foreach my $network (@$list) {
+ foreach my $network (@networks) {
push(@ret, [$network->{'id'}, $network->{'name'}]);
}
- return sort { $a->{1} cmp $b->{1} } @ret;
+ return sort { $a{1} cmp $b{1} } @ret;
}
sub GetNetwork($) {
my $id = shift;
- my $list = JSON::Parse::json_file_to_perl($NETWORKS_LIST);
+ my @networks = &LoadNetworks();
- foreach my $network (@$list) {
+ foreach my $network (@networks) {
return $network if ($network->{'id'} eq $id);
}