--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptomgmtlibs/securitytestfw/test/autotesting/configchangebats.pl Wed Jul 08 11:25:26 2009 +0100
@@ -0,0 +1,329 @@
+#
+# Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of the License "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+# This script is designed to provide a working ethernet setup
+# for EKA1 or EKA2. It works by running Netcards.exe
+# then taking the output from Netcards (ethernet.ini)
+# and appending the ethernet settings to epoc.ini for EKA2
+# or creating ethermac.dat and etherdriver.dat for EKA1
+# The script can
+# - create a working ethernet setup with "ethernet" config option
+# - restore previous setup with "restore" config option
+# Please note: The script assumes that target wins is running on EKA1
+# Copied from configchange.pl to make use of environment varible for mac address
+# Copied from configchangebats.pl to adapt for multiple network cards in "Blade" type servers.
+#
+
+use Getopt::Long;
+use Cwd;
+
+use Getopt::Long;
+use Cwd;
+
+my $config="default";
+my $target="default";
+my $kernel="default";
+my $showhelp='0';
+
+my $etherNif;
+my $etherMac = $ENV{'WINSCW_MAC'};
+my $etherSpeed;
+
+# this variable is passed as an argument to netcards.exe
+# specifies which interface to use in case of multiple interfaces
+
+my $interface=0;
+
+$/ = "\n";
+
+GetOptions('config=s' => \$config, 'kernel=s' => \$kernel, 'target=s' => \$target, 'variant=s' => \$variant, 'help' => \$showhelp, 'interface:i' => \$interface);
+
+$config = lc( $config );
+$kernel = lc( $kernel );
+$target = lc( $target );
+$variant = lc( $variant );
+
+
+
+if( $showhelp || ( $kernel ne "eka1" && $kernel ne "eka2" ) ||
+ ( $target ne "wins" && $target ne "winscw" ) ||
+ ( $config ne "ethernetwithcommdb" && $config ne "restorecommdb" && $config ne "ethernetnocommdb" ) ||
+ ( $variant ne "udeb" && $variant ne "urel" ) )
+ {
+ print "Command usage: configchange --config [ethernetWithCommDB|restoreCommDB|ethernetNoCommDB] --kernel [EKA1|EKA2] --target [wins|winscw] --variant [UDEB|UREL]\n";
+ print "\t\t--config \tSelect required configuration\n";
+ print "\t\t--kernel \tKernel variant\n";
+ print "\t\t--target \tTarget emulator\n";
+ print "\t\t--variant \tBuild type\n";
+ print "\t\t--interface \tInterface Number\n";
+ print "\t\t--help \tThis text\n";
+ exit 0;
+ }
+
+my $epocroot = &getEpocroot;
+my $drive = &getDrive;
+
+if($ENV{'SERVER_TYPE'} && $ENV{'SERVER_TYPE'} =~ /blade/i){
+ $interface=1;
+}
+
+
+my $netIF = "";
+my $netConfigOutput = `net config rdr`;
+
+# Sample output:
+#J:\epoc32\winscw\c>net config rdr
+#Computer name \\SYWINPAP0005
+#Full Computer name SYWINPAP0005.prod.ad.symbian.intra
+#User name extkesavanathimoolam
+#
+#Workstation active on
+# NetbiosSmb (000000000000)
+# NetBT_Tcpip_{0B887A6F-A34C-4A43-85A4-FA5D58BEEE8A} (00215E2CB2F6)
+
+
+# capture the network-interface info to compare it later with netcards output
+if($netConfigOutput =~ /NetBT_Tcpip_\{(.*)?\}/i){
+ $netIF = $1;
+}
+
+
+# netcards output sample
+#J:\epoc32\winscw\c>\epoc32\tools\netcards.exe 1
+#Adapters installed:
+#N/A - \Device\NPF_GenericDialupAdapter
+# Adapter for generic dialup and VPN capture
+#
+# 1 - \Device\NPF_{0B887A6F-A34C-4A43-85A4-FA5D58BEEE8A}
+# Broadcom Advanced Server Program Driver for Windows Server 2003 with SNP
+#
+#
+# 2 - \Device\NPF_{11F02767-7BDE-49FF-87F2-FD7F46FA8C60}
+# Broadcom L2 NDIS client driver
+#
+# 3 - \Device\NPF_{9672396E-2361-42BF-80CF-1E03AF7BD59F}
+# Broadcom L2 NDIS client driver
+#
+#Using adapter 1
+#Physical address read: 00:21:5e:2c:b2:f6
+#Writing settings to ethernet.ini.
+
+
+$netCardsCommand = "$drive\\$epocroot\\epoc32\\tools\\netcards $interface";
+foreach (split("\n",`$netCardsCommand`)){
+ if(/\s*(\d)\s+\-\s+.*?$netIF/){
+ $interface = $1;
+ last;
+ }
+}
+
+
+
+
+if( $config ne "restorecommdb" )
+ {
+ # must be creating some ethernet setup
+ if( $config eq "ethernetwithcommdb" )
+ {
+ # write an appropriate commDB setup
+ print( "Setting up CommDB for ethernet\n" );
+ system( "$drive\\$epocroot\\epoc32\\release\\$target\\$variant\\ceddump" ) == 0
+ or die "Error running ceddump!\n";
+ system( "move $drive\\$epocroot\\epoc32\\$target\\c\\cedout.cfg $drive\\$epocroot\\epoc32\\$target\\c\\nonethernetced.cfg" ) == 0
+ or die "Failed to rename cedout.cfg!\n";
+ system( "$drive\\$epocroot\\epoc32\\release\\$target\\$variant\\ced -dtextshell -- -i c:\\EthernetCed.xml") == 0
+ or die "Error running ced!\n";
+ }
+ print( "Running Netcards to obtain adapter info\n" );
+ system( "$drive\\$epocroot\\epoc32\\tools\\netcards $interface" ) == 0
+ or die "Error running netcards!\n";
+
+ open ( INFILE, "ethernet.ini" ) or die "Can't find netcards output file, ethernet.ini!\n"; # get from current directory where netcards wrote it to
+
+ if ($kernel eq "eka1")
+ {
+ open ( ETHERDRV, ">$drive\\$epocroot\\epoc32\\$target\\c\\system\\data\\etherdriver.dat" ) or die "Can't open $drive\\$epocroot\\epoc32\\$target\\c\\system\\data\\etherdriver.dat!\n";
+ }
+
+ while( <INFILE> )
+ {
+ chomp;
+ my $sLine = $_;
+
+ if( $sLine =~ /ETHER_NIF=(.*)/i )
+ {
+ #print "Matched ETHER_NIF\n";
+ if ($kernel eq "eka1")
+ {
+ print ETHERDRV "$1";
+ }
+ else
+ {
+ $etherNif = $1;
+ }
+ }
+ elsif( $sLine =~ /ETHER_SPEED=(.*)/i )
+ {
+ #print "Matched ETHER_SPEED\n";
+ if ($kernel eq "eka2")
+ {
+ $etherSpeed = $1;
+ }
+ }
+ #print "line: $sLine\n";
+ }
+ if ($kernel eq "eka1")
+ {
+ close( ETHERDRV );
+ }
+ else
+ {
+ # do the insertion to epoc.ini
+ &generateEpocIni;
+ }
+ close( INFILE );
+ }
+else
+ {
+ if( -f "$drive\\$epocroot\\epoc32\\$target\\c\\nonethernetced.cfg" )
+ {
+ system( "$drive\\$epocroot\\epoc32\\release\\$target\\$variant\\ced -i c:\\nonethernetced.cfg" ) == 0
+ or die "Can't find backup ced file!\n";
+ system( "move $drive\\$epocroot\\epoc32\\$target\\c\\nonethernetced.cfg $drive\\$epocroot\\epoc32\\$target\\c\\cedout.cfg" ) == 0
+ or die "Can't rename backup ced file!\n";
+ }
+ else
+ {
+ print "No restore file found!\n";
+ }
+ }
+
+
+
+
+#
+# Determines, validates, and returns EPOCROOT.
+#
+sub getEpocroot
+{
+ my $epocroot = $ENV{EPOCROOT};
+ die "ERROR: Must set the EPOCROOT environment variable.\n"
+ if (!defined($epocroot));
+ $epocroot =~ s-/-\\-go; # for those working with UNIX shells
+ die "ERROR: EPOCROOT must be an absolute path, " .
+ "not containing a drive letter.\n" if ($epocroot !~ /^\\/);
+ die "ERROR: EPOCROOT must not be a UNC path.\n" if ($epocroot =~ /^\\\\/);
+ die "ERROR: EPOCROOT must end with a backslash.\n" if ($epocroot !~ /\\$/);
+ die "ERROR: EPOCROOT must specify an existing directory.\n"
+ if (!-d $epocroot);
+ return $epocroot;
+}
+
+#
+# Determines and returns the current drive, if any.
+#
+sub getDrive
+{
+ my $wd = cwd;
+ my $drive;
+ if($wd =~ /^([a-zA-Z]:)/) {
+ $drive = $1;
+ } else {
+ # Perhaps we're on a machine that has no drives.
+ $drive = "";
+ }
+ return $drive;
+}
+
+#
+#
+#
+sub generateEpocIni
+{
+ my @outLines;
+ my $length = 0;
+ my $needToAppend = TRUE;
+ my $epocIniAlreadyExists = FALSE;
+ my $finished = FALSE;
+ print "generating epoc ini\n";
+ if ( -e "$drive\\$epocroot\\epoc32\\data\\epoc.ini" )
+ {
+ $epocIniAlreadyExists = TRUE;
+ open( EPOCINI, "+<$drive\\$epocroot\\epoc32\\data\\epoc.ini" );
+ seek( EPOCINI, 0, 0 );
+ while( <EPOCINI> )
+ {
+ chomp;
+ my $sLine = $_;
+ if( $sLine =~ /ETHER_NIF=(.*)/i )
+ {
+ #print "matched etherNIF\n";
+ $length = length( $etherNif );
+
+ substr( $sLine, (index( $sLine, "=" )+1), $length ) = $etherNif;
+ $needToAppend = FALSE;
+ }
+ elsif( $sLine =~ /ETHER_MAC=(.*)/i )
+ {
+ print "Matched ETHER_MAC\n";
+ $length = length( $etherMac );
+ substr( $sLine, (index( $sLine, "=" )+1), $length ) = $etherMac;
+ $needToAppend = FALSE;
+ }
+ elsif( $sLine =~ /ETHER_SPEED=(.*)/i )
+ {
+ #print "Matched etherSpeed\n";
+ $length = length( $etherSpeed );
+ substr( $sLine, (index( $sLine, "=" )+1), $length ) = $etherSpeed;
+ $needToAppend = FALSE;
+ }
+ push( @outLines, $sLine );
+ push( @outLines, "\n" );
+ }
+ if ( $needToAppend eq FALSE )
+ {
+ print "Writing new settings into epoc.ini\n";
+ # we have read the entire file and replaced what we need to
+ # now lets write it back to the file
+ seek( EPOCINI, 0, 0 );
+ print EPOCINI @outLines;
+ $finished = TRUE;
+ }
+ close ( EPOCINI );
+ }
+
+ if ( $finished eq FALSE )
+ {
+ if ( ($needToAppend eq TRUE) && ($epocIniAlreadyExists eq TRUE) )
+ {
+ print "Appending settings to current epoc.ini\n";
+ # we must append all the settings onto the end of the current epoc.ini
+ open( EPOCINI, ">>$drive\\$epocroot\\epoc32\\data\\epoc.ini" ) or die "Can't open epoc.ini!\n";
+ }
+ elsif ( $epocIniAlreadyExists eq FALSE )
+ {
+ print "Creating new epoc.ini\n";
+ # create new file
+ open( EPOCINI, ">$drive\\$epocroot\\epoc32\\data\\epoc.ini" );
+ }
+
+ print EPOCINI "\nETHER_NIF=";
+ print EPOCINI "$etherNif\n";
+ print EPOCINI "ETHER_MAC=";
+ print EPOCINI "$etherMac\n";
+ print EPOCINI "ETHER_SPEED=";
+ print EPOCINI "$etherSpeed\n";
+ close ( EPOCINI );
+ }
+}