Index: trunk/misc/createRnx3Aliases.pl
===================================================================
--- trunk/misc/createRnx3Aliases.pl	(revision 8344)
+++ 	(revision )
@@ -1,683 +1,0 @@
-#!/usr/bin/env perl
-
-# ========================================================================
-# createRnx3Aliases.pl
-# ========================================================================
-#
-# Purpose : Helps to create Rnx3 alias mountpoints for a existing
-#           BKG NtripCaster installation. See help for details.
-#
-# Revision: $Id$
-# ========================================================================
-
-# Uses
-use strict;
-use warnings;
-
-# Arguments
-my ($confDir) = @ARGV;
-if ( !defined $confDir || $confDir =~ /-h|--help/ ) {
-    print <<EOI_HLP;
-
-createRnx3Aliases.pl - Helps to create Rnx3 alias mountpoints for a existing
-    BKG NtripCaster installation.
-
-    See White Paper URL???
-    For NtripCaster admins.
-    The output contains the alias records for the ntripcaster.conf file.
-    Creates a new sourcetable file with alias records included.
-
-USAGE:
-  $0 <ntripcaster-conf-dir>
-
-EXAMPLES:
-   $0 /home/rt/eurefcaster/conf
-
-Authors:
-   Erwin Wiesensarter <Erwin.Wiesensarter\@bkg.bund.de>
-
-EOI_HLP
-    exit;
-}
-
-my $ntripcaster_conf = $confDir . '/ntripcaster.conf';
-my $sourcetable_dat  = $confDir . '/sourcetable.dat';
-
-my @igsLongNames = <DATA>;
-chomp $_ for (@igsLongNames);
-
-my @existing_mpts;
-my %st_streams = parseSourcetable($sourcetable_dat);
-
-# Create alias names for each stream
-# ----------------------------------
-my @alias;
-my $rnx3Name = "";
-while ( my ( $fourCharId, $rows ) = each %st_streams ) {
-
-    # RAW streams
-    my @raw = grep ( $_->[3] =~ /RAW/i, @$rows );
-    if (@raw) {
-        if ( scalar @raw > 1 ) {
-            warn "WARN: more than one RAW stream for $fourCharId\n";
-        }
-        my $i = 0;
-        foreach (@raw) {
-            if ( $i == 0 ) {
-                $rnx3Name = $fourCharId . "00" . $_->[8] . 9;
-                if ( grep { $rnx3Name eq $_ } @existing_mpts ) {
-                    print "$rnx3Name already exists - skip";
-                    next;
-                }
-                printf "%-5s  %-8s  %-6s %-9s\n", $_->[1], $_->[3], $_->[4], $rnx3Name;
-                push ( @alias, [ $_->[1], $rnx3Name ] );
-            }
-            else {
-                printf "%-5s  %-8s  %-6s %-9s\n", $_->[1], $_->[3], $_->[4], "skipped";
-            }
-
-            $i++;
-        }
-    }
-
-    # RTCM streams
-    my @rtcm = map { $_->[0] }
-      sort { $b->[2] <=> $a->[2] }
-      map { [ $_, split ( /\s+/, $_->[3], 2 ) ] }
-      grep { $_->[3] =~ /RTCM/i } @$rows;
-
-    my $i = 0;
-    foreach (@rtcm) {
-        $rnx3Name = $fourCharId . "00" . $_->[8] . $i++;
-        if ( grep { $rnx3Name eq $_ } @existing_mpts ) {
-            print "$rnx3Name already exists - skip";
-            next;
-        }
-        printf "%-5s  %-15s  %-9s\n", $_->[1], $_->[3], $rnx3Name;
-        push ( @alias, [ $_->[1], $rnx3Name ] );
-    }
-
-    print "\n";
-}
-
-print "===================== Alias ===================== (insert in $ntripcaster_conf)\n";
-foreach ( sort { ( $a->[1] ) cmp ( $b->[1] ) } @alias ) {
-    print "alias /$_->[1] /$_->[0]\n";
-}
-print "\n";
-
-writeNewSourcetable($sourcetable_dat);
-
-###############################################################################
-sub parseSourcetable {
-    my ($sourcetableFil) = @_;
-
-    my %st;
-    open ( my $ST, '<', $sourcetableFil ) || die "Could not open file '$sourcetableFil': $!\n";
-    while (<$ST>) {
-        chomp;
-        next if ( $_ =~ /^#/ );
-        $_ =~ /^(CAS|NET|STR);.+/ || die "Weird sourcetable line: [$_]";
-        if ( $_ =~ /^STR;/ ) {
-            my @fields = split ';', $_;
-            push ( @existing_mpts, $fields[1] );
-            scalar @fields >= 18 || die "Not enough fields in line: [$_]\nsee http://software.rtcm-ntrip.org/wiki/STR";
-            if ( $fields[1] =~ /^CLK|EPH$/i ) {
-                print "INFO: skip $fields[1]\n";
-                next;
-            }
-
-            # Consider only mountpoint names with length 5
-            if ( length ( $fields[1] ) == 5 ) {
-                my $fourCharId = substr ( $fields[1], 0, 4 );
-
-                # Compare country code with official IGS station list (IGS Network.csv 21.12.2017 from
-                # http://www.igs.org/network)
-                my @igs_found = grep ( $fourCharId eq substr ( $_, 0, 4 ), @igsLongNames );
-                if (@igs_found) {
-                    my $rnx3Name = $fourCharId . "00" . $fields[8];
-                    $rnx3Name eq $igs_found[0]
-                      || die
-                      "wrong country code \"$fields[8]\" for sourcetable stream $fields[1] (IGS: $igs_found[0])\n";
-                }
-                push ( @{ $st{$fourCharId} }, \@fields );
-            }
-        }
-    }
-    close ($ST);
-    return %st;
-}
-
-sub writeNewSourcetable {
-    my ($sourcetable_orig) = @_;
-
-    my $sourcetable_new = $sourcetable_orig . '.new';
-
-    open ( my $ORIG, '<', $sourcetable_orig ) || die "Could not open file '$sourcetable_orig': $!\n";
-    open ( my $NEW,  '>', $sourcetable_new )  || die "Could not open file '$sourcetable_new': $!\n";
-    while (<$ORIG>) {
-        print $NEW $_;
-        my @fields = split ( ';', $_ );
-        if ( @fields && $fields[0] eq "STR" ) {
-            my @found = grep ( $_->[0] eq $fields[1], @alias );    # search for mountpoint
-            if (@found) {
-                $fields[1]  = $found[0]->[1];
-                $fields[18] = $found[0]->[0];
-                my $alias_rc = join ( ';', @fields );
-                print $NEW "$alias_rc\n";
-            }
-        }
-    }
-    close ($ORIG) || die "Could not close file $sourcetable_orig: $!";
-    close ($NEW)  || die "Could not close file $sourcetable_new: $!";
-
-    print "INFO: New sourcetable $sourcetable_new created\n";
-}
-
-__DATA__
-ABMF00GLP
-ABPO00MDG
-ADIS00ETH
-AGGO00ARG
-AIRA00JPN
-AJAC00FRA
-ALBH00CAN
-ALGO00CAN
-ALIC00AUS
-ALRT00CAN
-AMC200USA
-ANKR00TUR
-ANMG00MYS
-ANTC00CHL
-AREG00PER
-AREQ00PER
-ARTU00RUS
-ARUC00ARM
-ASCG00SHN
-ASPA00USA
-AUCK00NZL
-AZU100USA
-BADG00RUS
-BAIE00CAN
-BAKE00CAN
-BAKO00IDN
-BAMF00CAN
-BARH00USA
-BHR300BHR
-BHR400BHR
-BIK000KGZ
-BILL00USA
-BJCO00BEN
-BJFS00CHN
-BJNM00CHN
-BLYT00USA
-BNOA00IDN
-BOGI00POL
-BOGT00COL
-BOR100POL
-BRAZ00BRA
-BREW00USA
-BRFT00BRA
-BRMU00GBR
-BRST00FRA
-BRUN00BRN
-BRUX00BEL
-BSHM00ISR
-BTNG00IDN
-BUCU00ROU
-BZRG00ITA
-CAGS00CAN
-CAS100ATA
-CCJ200JPN
-CEBR00ESP
-CEDU00AUS
-CGGN00NGA
-CHAN00CHN
-CHIL00USA
-CHOF00JPN
-CHPG00BRA
-CHPI00BRA
-CHTI00NZL
-CHUM00KAZ
-CHUR00CAN
-CHWK00CAN
-CIT100USA
-CKIS00COK
-CKSV00TWN
-CLAR00USA
-CMP900USA
-CMUM00THA
-CNMR00USA
-COCO00AUS
-CORD00ARG
-COSO00USA
-COTE00ATA
-COYQ00CHL
-CPNM00THA
-CPVG00CPV
-CRAO00UKR
-CRFP00USA
-CRO100VIR
-CUSV00THA
-CUT000AUS
-CUUT00THA
-CZTG00ATF
-DAE200KOR
-DAEJ00KOR
-DAKR00SEN
-DARW00AUS
-DAV100ATA
-DEAR00ZAF
-DGAR00GBR
-DHLG00USA
-DJIG00DJI
-DLF100NLD
-DLTV00VNM
-DRAG00ISR
-DRAO00CAN
-DUBO00CAN
-DUM100ATA
-DUND00NZL
-DYNG00GRC
-EBRE00ESP
-EIL300USA
-EIL400USA
-EPRT00USA
-ESCU00CAN
-EUSM00MYS
-FAA100PYF
-FAIR00USA
-FALE00WSM
-FALK00FLK
-FFMJ00DEU
-FLIN00CAN
-FLRS00PRT
-FRDN00CAN
-FTNA00WLF
-FUNC00PRT
-GAMB00PYF
-GAMG00KOR
-GANP00SVK
-GCGO00USA
-GENO00ITA
-GLPS00ECU
-GLSV00UKR
-GMSD00JPN
-GODE00USA
-GODN00USA
-GODS00USA
-GODZ00USA
-GOL200USA
-GOLD00USA
-GOP600CZE
-GOP700CZE
-GOPE00CZE
-GOUG00SHN
-GRAC00FRA
-GRAS00FRA
-GRAZ00AUT
-GUAM00GUM
-GUAO00CHN
-GUAT00GTM
-GUUG00GUM
-HALY00SAU
-HAMD00IRN
-HARB00ZAF
-HARV00USA
-HERS00GBR
-HERT00GBR
-HKSL00HKG
-HKWS00HKG
-HLFX00CAN
-HNLC00USA
-HNPT00USA
-HNUS00ZAF
-HOB200AUS
-HOFN00ISL
-HOLB00CAN
-HOLM00CAN
-HOLP00USA
-HRAG00ZAF
-HRAO00ZAF
-HUEG00DEU
-HYDE00IND
-IENG00ITA
-IISC00IND
-INEG00MEX
-INVK00CAN
-IQAL00CAN
-IQQE00CHL
-IRKJ00RUS
-IRKM00RUS
-IRKT00RUS
-ISBA00IRQ
-ISPA00CHL
-ISTA00TUR
-IZMI00TUR
-JCTW00ZAF
-JFNG00CHN
-JNAV00VNM
-JOG200IDN
-JOZ200POL
-JOZE00POL
-JPLM00USA
-JPRE00ZAF
-KARR00AUS
-KAT100AUS
-KELY00GRL
-KERG00ATF
-KGNI00JPN
-KHAR00UKR
-KIR000SWE
-KIR800SWE
-KIRI00KIR
-KIRU00SWE
-KIT300UZB
-KITG00UZB
-KMNM00TWN
-KOKB00USA
-KOKV00USA
-KOS100NLD
-KOUC00NCL
-KOUG00GUF
-KOUR00GUF
-KRGG00ATF
-KRS100TUR
-KSMV00JPN
-KUNM00CHN
-KUUJ00CAN
-KZN200RUS
-LAE100PNG
-LAMA00POL
-LAUT00FJI
-LBCH00USA
-LCK300IND
-LCK400IND
-LEIJ00DEU
-LHAZ00CHN
-LLAG00ESP
-LMMF00MTQ
-LPAL00ESP
-LPGS00ARG
-LROC00FRA
-M0SE00ITA
-MAC100AUS
-MAD200ESP
-MADR00ESP
-MAG000RUS
-MAJU00MHL
-MAL200KEN
-MANA00NIC
-MAR600SWE
-MAR700SWE
-MARS00FRA
-MAS100ESP
-MAT100ITA
-MATE00ITA
-MATG00ITA
-MAUI00USA
-MAW100ATA
-MAYG00MYT
-MBAR00UGA
-MCHL00AUS
-MCIL00JPN
-MCM400ATA
-MDO100USA
-MDVJ00RUS
-MEDI00ITA
-MELI00ESP
-MERS00TUR
-MET300FIN
-METG00FIN
-METS00FIN
-MFKG00ZAF
-MGUE00ARG
-MIKL00UKR
-MIZU00JPN
-MKEA00USA
-MOBJ00RUS
-MOBK00RUS
-MOBN00RUS
-MOBS00AUS
-MOIU00KEN
-MONP00USA
-MORP00GBR
-MQZG00NZL
-MRL100NZL
-MRL200NZL
-MRO100AUS
-MTKA00JPN
-MTV100URY
-MTV200URY
-NAIN00CAN
-NAMA00SAU
-NANO00CAN
-NAUR00NRU
-NCKU00TWN
-NICO00CYP
-NIST00USA
-NIUM00NIU
-NKLG00GAB
-NLIB00USA
-NNOR00AUS
-NOT100ITA
-NOVM00RUS
-NRC100CAN
-NRIL00RUS
-NRL100USA
-NRMD00NCL
-NTUS00SGP
-NURK00RWA
-NVSK00RUS
-NYA100NOR
-NYA200NOR
-NYAL00NOR
-OAK100GBR
-OAK200GBR
-OBE400DEU
-OHI200ATA
-OHI300ATA
-ONS100SWE
-ONSA00SWE
-OPMT00FRA
-ORID00MKD
-OSN300KOR
-OSN400KOR
-OUS200NZL
-OWMG00NZL
-PADO00ITA
-PALM00ATA
-PARC00CHL
-PARK00AUS
-PBRI00IND
-PDEL00PRT
-PEN200HUN
-PENC00HUN
-PERT00AUS
-PETS00RUS
-PGEN00PHL
-PICL00CAN
-PIE100USA
-PIMO00PHL
-PIN100USA
-PNGM00PNG
-POHN00FSM
-POL200KGZ
-POLV00UKR
-POTS00DEU
-POVE00BRA
-PPPC00PHL
-PRDS00CAN
-PRE300ZAF
-PRE400ZAF
-PTAG00PHL
-PTBB00DEU
-PTGG00PHL
-PTVL00VUT
-QAQ100GRL
-QIKI00CAN
-QUI300ECU
-QUI400ECU
-QUIN00USA
-RABT00MAR
-RAEG00PRT
-RAMO00ISR
-RBAY00ZAF
-RCMN00KEN
-RDSD00DOM
-RECF00BRA
-REDU00BEL
-RESO00CAN
-REUN00REU
-REYK00ISL
-RGDG00ARG
-RIGA00LVA
-RIO200ARG
-RIOP00ECU
-ROAP00ESP
-ROCK00USA
-ROTH00ATA
-SALU00BRA
-SAMO00WSM
-SANT00CHL
-SASK00CAN
-SASS00DEU
-SAVO00BRA
-SBOK00ZAF
-SCH200CAN
-SCIP00USA
-SCOR00GRL
-SCRZ00BOL
-SCTB00ATA
-SCUB00CUB
-SEJN00KOR
-SEY200SYC
-SEYG00SYC
-SFDM00USA
-SFER00ESP
-SGOC00LKA
-SHAO00CHN
-SHE200CAN
-SIMO00ZAF
-SIN100SGP
-SMST00JPN
-SNI100USA
-SOD300FIN
-SOFI00BGR
-SOLA00SAU
-SOLO00SLB
-SPK100USA
-SPT000SWE
-SPTU00BRA
-SSIA00SLV
-STFU00USA
-STHL00GBR
-STJ300CAN
-STJO00CAN
-STK200JPN
-STR100AUS
-STR200AUS
-SULP00UKR
-SUTH00ZAF
-SUTM00ZAF
-SUWN00KOR
-SVTL00RUS
-SYDN00AUS
-SYOG00ATA
-TABL00USA
-TANA00ETH
-TASH00UZB
-TCMS00TWN
-TDOU00ZAF
-TEHN00IRN
-THTG00PYF
-THTI00PYF
-THU200GRL
-THU300GRL
-TID100AUS
-TIDB00AUS
-TIT200DEU
-TIXI00RUS
-TLSE00FRA
-TLSG00FRA
-TNML00TWN
-TONG00TON
-TORP00USA
-TOW200AUS
-TRAK00USA
-TRO100NOR
-TSK200JPN
-TSKB00JPN
-TUBI00TUR
-TUVA00TUV
-TWTF00TWN
-UCAL00CAN
-UCLP00USA
-UCLU00CAN
-UFPR00BRA
-ULAB00MNG
-ULDI00ZAF
-UNB300CAN
-UNBD00CAN
-UNBJ00CAN
-UNBN00CAN
-UNSA00ARG
-UNX200AUS
-UNX300AUS
-URUM00CHN
-USN700USA
-USN800USA
-USN900USA
-USNO00USA
-USUD00JPN
-UZHL00UKR
-VACS00MUS
-VALD00CAN
-VESL00ATA
-VILL00ESP
-VIS000SWE
-VNDP00USA
-VOIM00MDG
-WAB200CHE
-WARK00NZL
-WARN00DEU
-WDC500USA
-WDC600USA
-WES200USA
-WGTN00NZL
-WHC100USA
-WHIT00CAN
-WIDC00USA
-WILL00CAN
-WIND00NAM
-WLSN00USA
-WROC00POL
-WSRT00NLD
-WTZ300DEU
-WTZA00DEU
-WTZR00DEU
-WTZS00DEU
-WTZZ00DEU
-WUH200CHN
-WUHN00CHN
-XIAN00CHN
-XMIS00AUS
-YAKT00RUS
-YAR200AUS
-YAR300AUS
-YARR00AUS
-YEBE00ESP
-YEL200CAN
-YELL00CAN
-YIBL00OMN
-YKRO00CIV
-YONS00KOR
-YSSK00RUS
-ZAMB00ZMB
-ZECK00RUS
-ZIM200CHE
-ZIM300CHE
-ZIMJ00CHE
-ZIMM00CHE
-ZWE200RUS
-
