source: genesis/nodes/genesis-to-py.pl@ 6541

Last change on this file since 6541 was 6541, checked in by roland, 16 years ago

Fixed some bugs regarding exodus import.
11a detection should work, but some bugs regarding ethernet
to wifi bridges do exist.

  • Property svn:executable set to *
File size: 2.9 KB
Line 
1#!/usr/bin/env perl
2use Geo::Coordinates::RDNAP qw/from_rd to_rd dms/;
3
4
5# RD X,Y -> RD Noorderbreedte, Oosterbreedte
6# http://web.inter.nl.net/users/F.Kissels/gps/conversie.html
7
8# Little perl to convert genesis files into python config files,
9# Which gonna be used for more logic stuff ;-)
10
11# Avoid junk node imports, use following line to import valid nodes
12# Usage: for file in CNode*/wleiden.conf proxy*/wleiden.conf; do ./genesis-to-py.pl $file; done > py.conf
13do($ARGV[0]) || die;
14
15my %status_labels = ( up => 'up', down => 'dw', planned => 'pl' );
16
17$interfaces = join(',',keys %config);
18if ( ($X =~ /\d+/) and ($Y =~ /\d+/) and ($X > 10) and ($Y > 10)) {
19 ($lat, $lon, $h) = from_rd( $X, $Y, 0);
20} else {
21 $lat = $lon = $h = 0;
22}
23
24$status = $status_labels{$status} || 'up'; # ensure reporting a correct status
25
26print <<EOF;
27[$nodename]
28location = $location
29status = $status
30latitude = $lat
31longitude = $lon
32interfaces = $interfaces
33x = $X
34y = $Y
35masterip = $master_ip
36nodetype = $nodetype
37name = $nodename
38configtype = node
39
40EOF
41
42
43foreach $if (keys %config) {
44 print <<EOF;
45[$nodename/$if]
46EOF
47 %tmp = (
48 'configtype' => 'interface',
49 'dhcp' => 'no',
50 'compass-direction' => '',
51 );
52 foreach $line (split('\n',$config{$if})) {
53 ($key, $value) = split(/=/,$line);
54 if ($key and (lc($key) =~ /^[a-z].*/)) {
55 #print "$key : $value\n";
56 $value = lc($value);
57 if ($key =~ /^type$/i) {
58 if ($value eq 'ethernet') {
59 $value = 'eth';
60 } else {
61 $value = '11b';
62 }
63 } elsif ($key =~ /^mode$/i) {
64 if ($value eq 'master') {
65 $value = 'ms';
66 } else { # managed
67 $value = 'mn';
68 }
69 } elsif ($key =~ /^polar$/i) {
70 if ($value eq 'hor') {
71 $value = 'hr';
72 } else {
73 $value = 'vr';
74 }
75 } elsif ($key =~ /^essid$/i) {
76 $key = 'ssid';
77
78 # Dirty hack to fetch compass direction of essid
79 $value =~ /[a-z]+-([a-z]+)\..*/;
80 $direction = $1;
81 # Translate into English
82 if ($direction ne "omni") {
83 $direction =~ tr/oz/es/;
84 }
85 # node AMwtrt1 and 'test' directions
86 if ($direction eq "wtrtr" or $direction eq "test") {
87 $direction = '';
88 }
89 $tmp{'compass-direction'} = $direction;
90 } elsif ($key =~ /^gain$/i) {
91 $value =~ s/dbi//;
92 }
93 $tmp{lc($key)} = $value;
94 }
95 }
96# 11a
97 if ( $tmp{type} eq '11b' && $tmp{channel} > 13 ) {
98 $tmp{type} = '11a';
99 }
100
101 foreach $key (keys %tmp) {
102 print "$key=$tmp{$key}\n";
103 }
104 print "\n";
105}
Note: See TracBrowser for help on using the repository browser.