summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xscripts/vyatta-config-loader.pl89
-rwxr-xr-xscripts/vyatta-save-config.pl140
2 files changed, 114 insertions, 115 deletions
diff --git a/scripts/vyatta-config-loader.pl b/scripts/vyatta-config-loader.pl
index c5a1164..9e296ad 100755
--- a/scripts/vyatta-config-loader.pl
+++ b/scripts/vyatta-config-loader.pl
@@ -8,12 +8,12 @@
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
-#
+#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
-#
+#
# This code was originally developed by Vyatta, Inc.
# Portions created by Vyatta are Copyright (C) 2006, 2007, 2008 Vyatta, Inc.
# All Rights Reserved.
@@ -40,11 +40,11 @@ umask 0002;
# Set up logging
openlog("config-loader", "nofail", LOG_LOCAL0);
-open (STDIN, '<', "/dev/null")
+open(STDIN, '<', "/dev/null")
or die "Can't open /dev/null : $!";
-open (STDOUT, '>>', $CONFIG_LOG)
+open(STDOUT, '>>', $CONFIG_LOG)
or die "Can't open $CONFIG_LOG : $!";
-open (STDERR, '>&STDOUT')
+open(STDERR, '>&STDOUT')
or die "Can't redirect stderr: $!";
sub trace {
@@ -55,7 +55,7 @@ sub trace {
# get a list of all config statement in the startup config file
my %cfg_hier = Vyatta::ConfigLoad::getStartupConfigStatements($ARGV[0],'true');
-my @all_nodes = @{ $cfg_hier{'set'} };
+my @all_nodes = @{$cfg_hier{'set'}};
# empty configuration?
die "Empty configuration!\n"
@@ -76,28 +76,28 @@ foreach (@all_nodes) {
my @pr = @$path_ref;
if ($pr[0] =~ /^comment$/) {
- my $ct = 0;
- my $rel_path;
- foreach my $rp (@pr[1..$#pr]) {
- $ct++;
- my $tmp_path = $rel_path . "/" . $rp;
- my $node_path = "/opt/vyatta/share/vyatta-cfg/templates/"
- . $tmp_path . "/node.def";
-
- last if ($rp eq '"');
- last if ($rp eq '""');
-
- if ( !-e $node_path ) {
- #pop this element
- delete $pr[$ct];
- last;
- }
- $rel_path = $tmp_path;
- }
-
- my $comment_cmd = "$CWRAPPER " . join(" ",@pr) ;
- `$comment_cmd`;
- next;
+ my $ct = 0;
+ my $rel_path;
+ foreach my $rp (@pr[1..$#pr]) {
+ $ct++;
+ my $tmp_path = $rel_path . "/" . $rp;
+ my $node_path = "/opt/vyatta/share/vyatta-cfg/templates/". $tmp_path . "/node.def";
+
+ last if ($rp eq '"');
+ last if ($rp eq '""');
+
+ if (!-e $node_path) {
+
+ #pop this element
+ delete $pr[$ct];
+ last;
+ }
+ $rel_path = $tmp_path;
+ }
+
+ my $comment_cmd = "$CWRAPPER " . join(" ",@pr);
+ `$comment_cmd`;
+ next;
}
my $cmd = 'set ' . join(' ', @pr);
@@ -105,8 +105,8 @@ foreach (@all_nodes) {
# Show all commands in log
trace $cmd;
unless (system("$CWRAPPER $cmd") == 0) {
- warn "*** %s failed: %d\n", $cmd, $?;
- syslog(LOG_NOTICE, "[[%s]] failed", $cmd);
+ warn "*** %s failed: %d\n", $cmd, $?;
+ syslog(LOG_NOTICE, "[[%s]] failed", $cmd);
}
}
@@ -116,7 +116,7 @@ syslog(LOG_INFO, "Configuration took %d seconds.", $commit_start - $start);
unless (system($COMMIT_CMD) == 0) {
warn "*** Commit failed: %d\n", $?;
- syslog (LOG_WARNING, "Commit failed at boot");
+ syslog(LOG_WARNING, "Commit failed at boot");
system($CLEANUP_CMD);
system($END_CMD);
@@ -124,27 +124,26 @@ unless (system($COMMIT_CMD) == 0) {
}
my $commit_end = time;
-syslog(LOG_INFO, "Commit succeeded took %d seconds.",
- $commit_end - $commit_start);
+syslog(LOG_INFO, "Commit succeeded took %d seconds.",$commit_end - $commit_start);
# Now process any deactivate nodes
-my @deactivate_nodes = @{ $cfg_hier{'deactivate'} };
+my @deactivate_nodes = @{$cfg_hier{'deactivate'}};
if (@deactivate_nodes) {
foreach (@deactivate_nodes) {
- my $cmd = "deactivate " . $_;
- trace $cmd;
-
- unless (system("$CWRAPPER $cmd") == 0) {
- warn "*** %s failed: %d\n", $cmd, $?;
- syslog(LOG_WARNING, "[[%s]] failed", $cmd);
- last;
- }
+ my $cmd = "deactivate " . $_;
+ trace $cmd;
+
+ unless (system("$CWRAPPER $cmd") == 0) {
+ warn "*** %s failed: %d\n", $cmd, $?;
+ syslog(LOG_WARNING, "[[%s]] failed", $cmd);
+ last;
+ }
}
unless (system($COMMIT_CMD) == 0) {
- warn "deactivate commit failed: %d\n", $?;
- syslog(LOG_NOTICE, "Commit deactivate failed at boot");
- system($CLEANUP_CMD);
+ warn "deactivate commit failed: %d\n", $?;
+ syslog(LOG_NOTICE, "Commit deactivate failed at boot");
+ system($CLEANUP_CMD);
}
}
diff --git a/scripts/vyatta-save-config.pl b/scripts/vyatta-save-config.pl
index b397195..96dd4b1 100755
--- a/scripts/vyatta-save-config.pl
+++ b/scripts/vyatta-save-config.pl
@@ -8,12 +8,12 @@
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
-#
+#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
-#
+#
# This code was originally developed by Vyatta, Inc.
# Portions created by Vyatta are Copyright (C) 2006, 2007, 2008 Vyatta, Inc.
# All Rights Reserved.
@@ -34,84 +34,84 @@ my $url_tmp_file = $bootpath . "/config.boot.$$";
my $show_default = 1;
if ($#ARGV > 1) {
- print "Usage: save [config_file_name] --no-defaults\n";
- exit 1;
+ print "Usage: save [config_file_name] --no-defaults\n";
+ exit 1;
}
-
if (defined($ARGV[0])) {
if ($ARGV[0] ne '--no-defaults') {
- $save_file = $ARGV[0];
- }
- else {
- $show_default = 0;
+ $save_file = $ARGV[0];
+ }else {
+ $show_default = 0;
}
if (defined($ARGV[1]) && $ARGV[1] eq '--no-defaults') {
- $show_default = 0;
+ $show_default = 0;
}
}
-
my $mode = 'local';
my $proto;
if ($save_file =~ /^[^\/]\w+:\//) {
- if ($save_file =~ /^(\w+):\/\/\w/) {
- $mode = 'url';
- $proto = lc($1);
- if ($proto eq 'tftp') {
- } elsif ($proto eq 'ftp') {
- } elsif ($proto eq 'scp') {
+ if ($save_file =~ /^(\w+):\/\/\w/) {
+ $mode = 'url';
+ $proto = lc($1);
+ if ($proto eq 'tftp') {
+ } elsif ($proto eq 'ftp') {
+ } elsif ($proto eq 'scp') {
+ } else {
+ print "Invalid url protocol [$proto]\n";
+ exit 1;
+ }
} else {
- print "Invalid url protocol [$proto]\n";
- exit 1;
+ print "Invalid url [$save_file]\n";
+ exit 1;
}
- } else {
- print "Invalid url [$save_file]\n";
- exit 1;
- }
}
if ($mode eq 'local' and !($save_file =~ /^\//)) {
- # relative path
- $save_file = "$bootpath/$save_file";
+
+ # relative path
+ $save_file = "$bootpath/$save_file";
}
my $version_str = `/opt/vyatta/sbin/vyatta_current_conf_ver.pl`;
+
# when presenting to users, show shortened /config path
my $shortened_save_file = get_short_config_path($save_file);
print "Saving configuration to '$shortened_save_file'...\n";
my $save;
if ($mode eq 'local') {
+
# first check if this file exists, and if so ensure this is a config file.
if (-e $save_file) {
- my $result = `grep ' === vyatta-config-version:' $save_file`;
- if (!defined $result || length($result) == 0) {
- print "File exists and is not a Vyatta configuration file, aborting save!\n";
- exit 1;
- }
+ my $result = `grep ' === vyatta-config-version:' $save_file`;
+ if (!defined $result || length($result) == 0) {
+ print "File exists and is not a Vyatta configuration file, aborting save!\n";
+ exit 1;
+ }
}
# this overwrites the file if it exists. we could create a backup first.
open $save, '>', $save_file
- or die "Can not open file '$save_file': $!\n";
+ or die "Can not open file '$save_file': $!\n";
} elsif ($mode eq 'url') {
- die "Package [curl] not installed\n" unless ( -f '/usr/bin/curl');
+ die "Package [curl] not installed\n" unless (-f '/usr/bin/curl');
open $save, '>', $url_tmp_file
- or die "Cannot open file '$url_tmp_file': $!\n";
+ or die "Cannot open file '$url_tmp_file': $!\n";
}
select $save;
my $show_cmd = 'cli-shell-api showConfig --show-active-only --show-ignore-edit';
if ($show_default) {
- $show_cmd .= ' --show-show-defaults';
+ $show_cmd .= ' --show-show-defaults';
}
open(my $show_fd, '-|', $show_cmd) or die 'Cannot execute config output';
while (<$show_fd>) {
- print;
+ print;
}
close($show_fd);
print $version_str;
@@ -122,41 +122,41 @@ close $save;
if ($mode eq 'url') {
- my $rc = 0;
- if ($proto eq 'scp' ){
- $save_file =~ m/scp:\/\/(.*?)\//;
- my $host = $1;
- my $user = getpwuid($<);
- if ($host =~ m/(.*)@(.*)/) {
- $user = $1;
- $host = $2;
- }
-
- $rc = system("curl -u $user -# -T $url_tmp_file $save_file");
- if( $rc >> 8 == 51 ){
- my $rsa_key = `ssh-keyscan -t rsa $host 2>/dev/null`;
- print "The authenticity of host '$host' can't be established.\n";
- my $fingerprint = `ssh-keygen -lf /dev/stdin <<< \"$rsa_key\" | awk {' print \$2 '}`;
- chomp $fingerprint;
- print "RSA key fingerprint is $fingerprint.\n";
- if (prompt("Are you sure you want to continue connecting (yes/no) [Yes]? ", -tynd=>"y")) {
- mkdir "$ENV{HOME}/.ssh/",0700 unless -d "$ENV{HOME}/.ssh";
- open(my $known_hosts, ">>", "$ENV{HOME}/.ssh/known_hosts")
- or die "Cannot open known_hosts: $!";
- print $known_hosts "$rsa_key\n";
- close($known_hosts);
- $rc = system("curl -u $user -# -T $url_tmp_file $save_file");
- print "\n";
- }
- }
- } else {
- $rc = system("curl -# -T $url_tmp_file $save_file");
- }
- system("rm -f $url_tmp_file");
- if ($rc) {
- print "Error saving $save_file\n";
- exit 1;
- }
+ my $rc = 0;
+ if ($proto eq 'scp'){
+ $save_file =~ m/scp:\/\/(.*?)\//;
+ my $host = $1;
+ my $user = getpwuid($<);
+ if ($host =~ m/(.*)@(.*)/) {
+ $user = $1;
+ $host = $2;
+ }
+
+ $rc = system("curl -u $user -# -T $url_tmp_file $save_file");
+ if($rc >> 8 == 51){
+ my $rsa_key = `ssh-keyscan -t rsa $host 2>/dev/null`;
+ print "The authenticity of host '$host' can't be established.\n";
+ my $fingerprint = `ssh-keygen -lf /dev/stdin <<< \"$rsa_key\" | awk {' print \$2 '}`;
+ chomp $fingerprint;
+ print "RSA key fingerprint is $fingerprint.\n";
+ if (prompt("Are you sure you want to continue connecting (yes/no) [Yes]? ", -tynd=>"y")) {
+ mkdir "$ENV{HOME}/.ssh/",0700 unless -d "$ENV{HOME}/.ssh";
+ open(my $known_hosts, ">>", "$ENV{HOME}/.ssh/known_hosts")
+ or die "Cannot open known_hosts: $!";
+ print $known_hosts "$rsa_key\n";
+ close($known_hosts);
+ $rc = system("curl -u $user -# -T $url_tmp_file $save_file");
+ print "\n";
+ }
+ }
+ } else {
+ $rc = system("curl -# -T $url_tmp_file $save_file");
+ }
+ system("rm -f $url_tmp_file");
+ if ($rc) {
+ print "Error saving $save_file\n";
+ exit 1;
+ }
}
print "Done\n";