On 11/15, Stuart Henderson wrote: > Except for special situations (e.g. what we have in autoconf), an @conflict > on the same port doesn't make sense. > > > +@ask-update rancid-<3v0 Make sure router.db files use new fields separator > > before upgrading > > I think either MESSAGE *or* @ask-update is enough. ask-update is quite
Stuart, thank you for your comments! I agree that MESSAGE should be enough. Please see the updated patch with your suggestions applied and some more cleanups, like removal of Looking Glass configs (I don't see any reason to keep it while corresponding scripts were removed in the first place), relocation of misc example files from ${PREFIX}/share to ${PREFIX}/share/examples and commenting out several man pages for which corresponding binaries were removed. -- With best regards, Pavel Korovin
Index: Makefile =================================================================== RCS file: /cvs/ports/sysutils/rancid/Makefile,v retrieving revision 1.17 diff -u -p -r1.17 Makefile --- Makefile 15 May 2013 09:49:40 -0000 1.17 +++ Makefile 16 Nov 2016 01:58:05 -0000 @@ -2,8 +2,9 @@ COMMENT = Really Awesome New Cisco confIg Differ -DISTNAME = rancid-2.3.8 -REVISION = 0 +DISTNAME = rancid-3.5.1 +DISTPATCH = 1 +PKGNAME = ${DISTNAME}pl${DISTPATCH} EPOCH = 0 CATEGORIES = sysutils @@ -19,20 +20,19 @@ WANTLIB = c util MASTER_SITES = ftp://ftp.shrubbery.net/pub/rancid/ +PATCHFILES = ${DISTNAME}.p${DISTPATCH}.gz + RUN_DEPENDS = lang/expect BUILD_DEPENDS = ${RUN_DEPENDS} LOCALSTATEDIR = ${BASELOCALSTATEDIR}/rancid -AUTOMAKE_VERSION = 1.8 -CONFIGURE_STYLE = automake +CONFIGURE_STYLE = gnu CONFIGURE_ARGS = --prefix=${PREFIX} \ --disable-mk-localstatedir +MAKE_FLAGS = sysconfdir=${BASESYSCONFDIR}/rancid +FAKE_FLAGS = sysconfdir=${PREFIX}/share/examples/rancid USE_GMAKE = yes -USE_GROFF = Yes - -pre-configure: - @cp ${FILESDIR}/fnlogin.in ${WRKSRC}/bin/fnlogin.in .include <bsd.port.mk> Index: distinfo =================================================================== RCS file: /cvs/ports/sysutils/rancid/distinfo,v retrieving revision 1.6 diff -u -p -r1.6 distinfo --- distinfo 18 Jan 2015 03:15:14 -0000 1.6 +++ distinfo 16 Nov 2016 01:58:05 -0000 @@ -1,2 +1,4 @@ -SHA256 (rancid-2.3.8.tar.gz) = RORMh6IpaNUinAHWCqRpYNoCOiSEbu9D+ePI1w/Vs/s= -SIZE (rancid-2.3.8.tar.gz) = 379908 +SHA256 (rancid-3.5.1.p1.gz) = GqbR11OkR4dA3jbeTn8Zmiio1ZZ/iAfShCHJ4yogAPQ= +SHA256 (rancid-3.5.1.tar.gz) = 82V5MNbr+FWs2WHJrK3v+wUM2e15gJ+tXbHB917PxxE= +SIZE (rancid-3.5.1.p1.gz) = 202 +SIZE (rancid-3.5.1.tar.gz) = 501561 Index: files/fnlogin.in =================================================================== RCS file: files/fnlogin.in diff -N files/fnlogin.in --- files/fnlogin.in 16 Dec 2008 21:07:55 -0000 1.1.1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,544 +0,0 @@ -#! @EXPECT_PATH@ -- -## -## $Id: fnlogin.in,v 1.1.1.1 2008/12/16 21:07:55 pea Exp $ -## -## rancid 2.3.2a7 -## Copyright (C) 1997-2006 by Terrapin Communications, Inc. -## All rights reserved. -## -## This software may be freely copied, modified and redistributed -## without fee for non-commerical purposes provided that this license -## remains intact and unmodified with any RANCID distribution. -## -## There is no warranty or other guarantee of fitness of this software. -## It is provided solely "as is". The author(s) disclaim(s) all -## responsibility and liability with respect to this software's usage -## or its effect upon hardware, computer systems, other software, or -## anything else. -## -## Except where noted otherwise, rancid was written by and is maintained by -## Henry Kilmer, John Heasley, Andrew Partan, Pete Whiting, and Austin Schutz. -## -# -# The login expect scripts were based on Erik Sherk's gwtn, by permission. -# Netscreen hacks implemented by Stephen Gill <gil...@yahoo.com>. -# -# nlogin - netscreen login -# -# Most options are intuitive for logging into a netscreen firewall. -# -# Misc notes -# netscreen does not have the concept of "enable", once logged in, a -# users permissions can not change. - -# Usage line -set usage "Usage: $argv0 \[-c command\] \[-Evar=x\] \[-f cloginrc-file\] \ -\[-p user-password\] \ -\[-s script-file\] \[-t timeout\] \[-u username\] \ -\[-v vty-password\] \[-x command-file\] \ -\[-y ssh_cypher_type\] router \[router...\]\n" - -# env(CLOGIN) may contain: -# x == do not set xterm banner or name - -# Password file -set password_file $env(HOME)/.cloginrc -# Default is to login to the firewall -set do_command 0 -set do_script 0 -# The default is to look in the password file to find the passwords. This -# tracks if we receive them on the command line. -set do_passwd 1 -set do_enapasswd 1 - -# Find the user in the ENV, or use the unix userid. -if {[ info exists env(CISCO_USER) ]} { - set default_user $env(CISCO_USER) -} elseif {[ info exists env(USER) ]} { - set default_user $env(USER) -} elseif {[ info exists env(LOGNAME) ]} { - set default_user $env(LOGNAME) -} else { - # This uses "id" which I think is portable. At least it has existed - # (without options) on all machines/OSes I've been on recently - - # unlike whoami or id -nu. - if [ catch {exec id} reason ] { - send_error "\nError: could not exec id: $reason\n" - exit 1 - } - regexp {\(([^)]*)} "$reason" junk default_user -} -if {[ info exists env(CLOGINRC) ]} { - set password_file $env(CLOGINRC) -} - -# Sometimes firewall take awhile to answer (the default is 10 sec) -set timeout 45 - -# Process the command line -for {set i 0} {$i < $argc} {incr i} { - set arg [lindex $argv $i] - - switch -glob -- $arg { - # Username - -u* - - -U* { - if {! [ regexp .\[uU\](.+) $arg ignore user]} { - incr i - set username [ lindex $argv $i ] - } - # VTY Password - } -p* - - -P* { - if {! [ regexp .\[pP\](.+) $arg ignore userpasswd]} { - incr i - set userpasswd [ lindex $argv $i ] - } - set do_passwd 0 - # Environment variable to pass to -s scripts - } -E* - { - if {[ regexp .\[E\](.+)=(.+) $arg ignore varname varvalue]} { - set E$varname $varvalue - } else { - send_user "\nError: invalid format for -E in $arg\n" - exit 1 - } - # Command to run. - } -c* - - -C* { - if {! [ regexp .\[cC\](.+) $arg ignore command]} { - incr i - set command [ lindex $argv $i ] - } - set do_command 1 - # Expect script to run. - } -s* - - -S* { - if {! [ regexp .\[sS\](.+) $arg ignore sfile]} { - incr i - set sfile [ lindex $argv $i ] - } - if { ! [ file readable $sfile ] } { - send_user "\nError: Can't read $sfile\n" - exit 1 - } - set do_script 1 - # cypher type - } -y* - - -Y* { - if {! [ regexp .\[eE\](.+) $arg ignore cypher]} { - incr i - set cypher [ lindex $argv $i ] - } - # alternate cloginrc file - } -f* - - -F* { - if {! [ regexp .\[fF\](.+) $arg ignore password_file]} { - incr i - set password_file [ lindex $argv $i ] - } - } -t* - - -T* { - incr i - set timeout [ lindex $argv $i ] - } -x* - - -X { - if {! [ regexp .\[xX\](.+) $arg ignore cmd_file]} { - incr i - set cmd_file [ lindex $argv $i ] - } - if [ catch {set cmd_fd [open $cmd_file r]} reason ] { - send_user "\nError: $reason\n" - exit 1 - } - set cmd_text [read $cmd_fd] - close $cmd_fd - set command [join [split $cmd_text \n] \;] - set do_command 1 - # Does tacacs automatically enable us? - } -autoenable { - # ignore autoenable - } -* { - send_user "\nError: Unknown argument! $arg\n" - send_user $usage - exit 1 - } default { - break - } - } -} -# Process firewalls...no firewalls listed is an error. -if { $i == $argc } { - send_user "\nError: $usage" -} - -# Only be quiet if we are running a script (it can log its output -# on its own) -if { $do_script } { - log_user 0 -} else { - log_user 1 -} - -# -# Done configuration/variable setting. Now run with it... -# - -# Sets Xterm title if interactive...if its an xterm and the user cares -proc label { host } { - global env - # if CLOGIN has an 'x' in it, don't set the xterm name/banner - if [info exists env(CLOGIN)] { - if {[string first "x" $env(CLOGIN)] != -1} { return } - } - # take host from ENV(TERM) - if [info exists env(TERM)] { - if [regexp \^(xterm|vs) $env(TERM) ignore ] { - send_user "\033]1;[lindex [split $host "."] 0]\a" - send_user "\033]2;$host\a" - } - } -} - -# This is a helper function to make the password file easier to -# maintain. Using this the password file has the form: -# add password sl* pete cow -# add password at* steve -# add password * hanky-pie -proc add {var args} { global int_$var ; lappend int_$var $args} -proc include {args} { - global env - regsub -all "(^{|}$)" $args {} args - if { [ regexp "^/" $args ignore ] == 0 } { - set args $env(HOME)/$args - } - source_password_file $args -} - -proc find {var firewall} { - upvar int_$var list - if { [info exists list] } { - foreach line $list { - if { [string match [lindex $line 0] $firewall ] } { - return [lrange $line 1 end] - } - } - } - return {} -} - -# Loads the password file. Note that as this file is tcl, and that -# it is sourced, the user better know what to put in there, as it -# could install more than just password info... I will assume however, -# that a "bad guy" could just as easy put such code in the clogin -# script, so I will leave .cloginrc as just an extention of that script -proc source_password_file { password_file } { - global env - if { ! [file exists $password_file] } { - send_user "\nError: password file ($password_file) does not exist\n" - exit 1 - } - file stat $password_file fileinfo - if { [expr ($fileinfo(mode) & 007)] != 0000 } { - send_user "\nError: $password_file must not be world readable/writable\n" - exit 1 - } - if [ catch {source $password_file} reason ] { - send_user "\nError: $reason\n" - exit 1 - } -} - -# Log into the firewall. -# returns: 0 on success, 1 on failure -proc login { firewall user userpswd passwd enapasswd prompt cmethod -cyphertype } { - global spawn_id in_proc do_command do_script sshcmd - set in_proc 1 - set uprompt_seen 0 - - # Telnet to the firewall & try to login. - set progs [llength $cmethod] - foreach prog [lrange $cmethod 0 end] { - incr progs -1 - if [string match "telnet*" $prog] { - regexp {telnet(:([^[:space:]]+))*} $prog command suffix port - if {"$port" == ""} { - set retval [ catch {spawn telnet $firewall} reason ] - } else { - set retval [ catch {spawn telnet $firewall $port} reason ] - } - if { $retval } { - send_user "\nError: telnet failed: $reason\n" - return 1 - } - } elseif ![string compare $prog "ssh"] { - if [ catch {spawn $sshcmd -c $cyphertype -x -l $user $firewall} reason ] { - send_user "\nError: $sshcmd failed: $reason\n" - return 1 - } - } elseif ![string compare $prog "rsh"] { - send_error "\nError: unsupported method: rsh\n" - if { $progs == 0 } { - return 1 - } - continue; - } else { - send_user "\nError: unknown connection method: $prog\n" - return 1 - } - - sleep 0.3 - - # This helps cleanup each expect clause. - expect_after { - timeout { - send_user "\nError: TIMEOUT reached\n" - catch {close}; wait - if { $in_proc} { - return 1 - } else { - continue - } - } eof { - send_user "\nError: EOF received\n" - catch {close}; wait - if { $in_proc} { - return 1 - } else { - continue - } - } - } - - # Here we get a little tricky. There are several possibilities: - # the firewall can ask for a username and passwd and then - # talk to the TACACS server to authenticate you, or if the - # TACACS server is not working, then it will use the enable - # passwd. Or, the firewall might not have TACACS turned on, - # then it will just send the passwd. - # if telnet fails with connection refused, try ssh - expect { - "Connection refused" { - send_user "\nError: Connection Refused\n"; wait; return 1 - } eof { send_user "\nError: Couldn't login\n"; wait; return 1 - } "Unknown host\r\n" { - expect eof - send_user "\nError: Unknown host\n"; wait; return 1 - } "Host is unreachable" { - expect eof - send_user "\nError: Host Unreachable!\n"; wait; return 1 - } "No address associated with name" { - expect eof - send_user "\nError: Unknown host\n"; wait; return 1 - } - -re "Are you sure you want to continue connecting .*" { - send "yes\r" - send_user "Host $firewall added to the list of known hosts.\n" - exp_continue } - -re "Host key not found .* \(yes\/no\)\?" { - send "yes\r" - send_user "Host $firewall added to the list of known hosts.\n" - exp_continue } - -re "HOST IDENTIFICATION HAS CHANGED.* \(yes\/no\)\?" { - send "no\r" - send_user "\nError: The host key for $firewall has changed. Update the SSH known_hosts file accordingly.\n" - return 1 } - -re "Offending key for .* \(yes\/no\)\?" { - send "no\r" - send_user "\nError: host key mismatch for $firewall. Update the SSH known_hosts file accordingly.\n" - return 1 } - denied { send_user "\nError: Check your passwd for $firewall\n" - catch {close}; wait; return 1 - } - " ### Login failed" {send_user "\nError: Check your passwd for $firewall\n"; return 1 } - -re "(login:)" { - sleep 1; - send "$user\r" - set uprompt_seen 1 - exp_continue - } - -re "@\[^\r\n]+\[Pp]assword:" { - # ssh pwd prompt - sleep 1 - send "$userpswd\r" - exp_continue - } - "\[Pp]assword:" { - sleep 1; - if {$uprompt_seen == 1} { - send "$userpswd\r" - } else { - send "$passwd\r" - } - exp_continue - } - -- "$prompt" { break; } - } - } - set in_proc 0 - return 0 -} - -# Run commands given on the command line. -proc run_commands { prompt command } { - global in_proc - set in_proc 1 - - # Disable output paging. -# send "config system console\r" -# send "set output standard\r" -# send "end\r" -# expect -re $prompt {} - - # Is this a multi-command? - if [ string match "*\;*" "$command" ] { - set commands [split $command \;] - set num_commands [llength $commands] - - for {set i 0} {$i < $num_commands} { incr i} { - send "[subst [lindex $commands $i]]\r" - expect { - -re "\[\n\r]+" { exp_continue } - -re "$prompt" {} - -gl "--More-- " { send " " - exp_continue - } - } - } - } else { - send "[subst $command]\r" - expect { - -re "\[\n\r]+" { exp_continue } - -re "$prompt" {} - -gl "--More-- " { send " " - exp_continue - } - } - } -# send "config system console\r" -# send "set output more\r" -# send "end\r" -# expect -re $prompt {} - send "exit\r" - expect { - -re "$prompt" { - #send "exit\r" - exp_continue - } - -re "\[\n\r]+" { exp_continue } - -gl "Configuration modified, save?" { - send "n\r" - exp_continue - } - timeout { catch {close}; wait - return 0 - } - eof { return 0 } - } - set in_proc 0d -} - -# -# For each firewall... (this is main loop) -# -source_password_file $password_file -set in_proc 0 -foreach firewall [lrange $argv $i end] { - set firewall [string tolower $firewall] - send_user "$firewall\n" - - # FortiOS 2.x prompts can end in either '#' or '$' - set prompt "\[#\\$] $" - - # Figure out passwords - if { $do_passwd || $do_enapasswd } { - set pswd [find password $firewall] - if { [llength $pswd] == 0 } { - send_user "\nError: no password for $firewall in $password_file.\n" - continue - } - set passwd [join [lindex $pswd 0] ""] - set enapasswd [join [lindex $pswd 1] ""] - } else { - set passwd $userpasswd - set enapasswd $enapasswd - } - - # Figure out username - if {[info exists username]} { - # command line username - set ruser $username - } else { - set ruser [join [find user $firewall] ""] - if { "$ruser" == "" } { set ruser $default_user } - } - - # Figure out username's password (if different from the vty password) - if {[info exists userpasswd]} { - # command line username - set userpswd $userpasswd - } else { - set userpswd [join [find userpassword $firewall] ""] - if { "$userpswd" == "" } { set userpswd $passwd } - } - - - # Figure out cypher type - if {[info exists cypher]} { - # command line cypher type - set cyphertype $cypher - } else { - set cyphertype [find cyphertype $firewall] - if { "$cyphertype" == "" } { set cyphertype "3des" } - } - - # Figure out connection method - set cmethod [find method $firewall] - if { "$cmethod" == "" } { set cmethod {{telnet} {ssh}} } - - # Figure out the SSH executable name - set sshcmd [find sshcmd $firewall] - if { "$sshcmd" == "" } { set sshcmd {ssh} } - - # Login to the firewall - if {[login $firewall $ruser $userpswd $passwd $enapasswd $prompt $cmethod $cyphertype]} { - continue - } - - # we are logged in, now figure out the full prompt - send "\r" - expect { - -re "\[\r\n]+" { exp_continue; } - -re "^(.+$prompt)" { set junk $expect_out(0,string); } - if {[$junk = "(^\\$ $)"]} { - set prompt $junk; - } else { - if {[$junk = "(^# $)"]} { set prompt $junk ; } - } - } - - if { $do_command } { - if {[run_commands $prompt $command]} { - continue - } - } elseif { $do_script } { - # Disable output paging. -# send "config system console\r" -# send "set output standard\r" -# send "end\r" -# expect -re $prompt {} - source $sfile - close - } else { - label $firewall - log_user 1 - interact - } - - # End of for each firewall - wait - sleep 0.3 -} -exit 0 Index: patches/patch-Makefile_in =================================================================== RCS file: /cvs/ports/sysutils/rancid/patches/patch-Makefile_in,v retrieving revision 1.4 diff -u -p -r1.4 patch-Makefile_in --- patches/patch-Makefile_in 8 Jun 2012 13:59:08 -0000 1.4 +++ patches/patch-Makefile_in 16 Nov 2016 01:58:05 -0000 @@ -1,21 +1,21 @@ -$OpenBSD: patch-Makefile_in,v 1.4 2012/06/08 13:59:08 pea Exp $ ---- Makefile.in.orig Thu Nov 17 22:10:12 2011 -+++ Makefile.in Tue May 29 13:19:25 2012 -@@ -16,7 +16,7 @@ - @SET_MAKE@ - - VPATH = @srcdir@ +$OpenBSD$ +--- Makefile.in.orig Tue Sep 6 17:12:39 2016 ++++ Makefile.in Wed Nov 16 02:34:44 2016 +@@ -70,7 +70,7 @@ am__make_running_with_option = \ + test $$has_opt = yes + am__make_dryrun = (target_option=n; $(am__make_running_with_option)) + am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ +pkgdatadir = $(datadir)/doc/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ -@@ -242,7 +242,7 @@ top_build_prefix = @top_build_prefix@ +@@ -351,7 +351,7 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = foreign no-dependencies -pkgdata_DATA = COPYING CHANGES FAQ README README.lg UPGRADING cloginrc.sample -+pkgdata_DATA = COPYING CHANGES FAQ README README.lg UPGRADING - EXTRA_DIST = BUGS Todo configure install-sh \ ++pkgdata_DATA = COPYING CHANGES FAQ README UPGRADING + EXTRA_DIST = BUGS Todo configure configure.vers install-sh \ mkinstalldirs Makefile.in Todo $(pkgdata_DATA) Index: patches/patch-bin_Makefile_in =================================================================== RCS file: patches/patch-bin_Makefile_in diff -N patches/patch-bin_Makefile_in --- patches/patch-bin_Makefile_in 8 Jun 2012 13:59:08 -0000 1.5 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,12 +0,0 @@ -$OpenBSD: patch-bin_Makefile_in,v 1.5 2012/06/08 13:59:08 pea Exp $ ---- bin/Makefile.in.orig Thu Nov 17 22:10:11 2011 -+++ bin/Makefile.in Tue May 29 13:19:25 2012 -@@ -363,6 +363,8 @@ f10rancid: $(top_builddir)/config.status $(srcdir)/f10 - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ - flogin: $(top_builddir)/config.status $(srcdir)/flogin.in - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ -+fnlogin: $(top_builddir)/config.status $(srcdir)/fnlogin.in -+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ - francid: $(top_builddir)/config.status $(srcdir)/francid.in - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ - fnlogin: $(top_builddir)/config.status $(srcdir)/fnlogin.in Index: patches/patch-bin_fnrancid_in =================================================================== RCS file: patches/patch-bin_fnrancid_in diff -N patches/patch-bin_fnrancid_in --- patches/patch-bin_fnrancid_in 8 Jun 2012 13:59:08 -0000 1.5 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,27 +0,0 @@ -$OpenBSD: patch-bin_fnrancid_in,v 1.5 2012/06/08 13:59:08 pea Exp $ ---- bin/fnrancid.in.orig Wed Mar 9 18:19:15 2011 -+++ bin/fnrancid.in Tue May 29 13:19:25 2012 -@@ -172,6 +172,7 @@ sub GetSystem { - - while (<INPUT>) { - tr/\015//d; -+ s/exit//gi ; - next if /^\s*$/; - last if (/$prompt/); - -@@ -215,6 +216,15 @@ sub GetConf { - next; - } - ProcessHistory("","","","$_"); -+ if (length($host) == 0) { -+ if ( $file) { -+ print(STDERR "Too few arguments: file name required\n"); -+ exit(1); -+ } else { -+ print(STDERR "Too few arguments: host name required\n"); -+ exit(1); -+ } -+ } - } - $found_end = 1; - return(1); Index: patches/patch-configure =================================================================== RCS file: /cvs/ports/sysutils/rancid/patches/patch-configure,v retrieving revision 1.6 diff -u -p -r1.6 patch-configure --- patches/patch-configure 18 May 2015 10:12:33 -0000 1.6 +++ patches/patch-configure 16 Nov 2016 01:58:05 -0000 @@ -1,7 +1,7 @@ -$OpenBSD: patch-configure,v 1.6 2015/05/18 10:12:33 espie Exp $ ---- configure.orig Thu Nov 17 22:10:12 2011 -+++ configure Mon May 18 12:09:18 2015 -@@ -5461,7 +5461,7 @@ fi +$OpenBSD$ +--- configure.orig Tue Nov 8 10:16:39 2016 ++++ configure Tue Nov 8 10:17:17 2016 +@@ -5471,7 +5471,7 @@ fi # ping seems to take one of two formats for count (N) # BSD: ping -c N host # SVR: ping host N @@ -10,28 +10,3 @@ $OpenBSD: patch-configure,v 1.6 2015/05/ if test $? -eq 0 ; then LG_PING_CMD="$PING_PATH -c 1" else -@@ -6068,7 +6068,7 @@ ac_config_files="$ac_config_files bin/nslogin bin/nsra - - ac_config_files="$ac_config_files bin/nxrancid" - --ac_config_files="$ac_config_files bin/prancid" -+ac_config_files="$ac_config_files bin/prancid bin/fnlogin" - - ac_config_files="$ac_config_files bin/rivlogin bin/rivrancid" - -@@ -6854,6 +6854,7 @@ do - "bin/mtrancid") CONFIG_FILES="$CONFIG_FILES bin/mtrancid" ;; - "bin/mtlogin") CONFIG_FILES="$CONFIG_FILES bin/mtlogin" ;; - "bin/nlogin") CONFIG_FILES="$CONFIG_FILES bin/nlogin" ;; -+ "bin/fnlogin") CONFIG_FILES="$CONFIG_FILES bin/fnlogin" ;; - "bin/nrancid") CONFIG_FILES="$CONFIG_FILES bin/nrancid" ;; - "bin/nslogin") CONFIG_FILES="$CONFIG_FILES bin/nslogin" ;; - "bin/nsrancid") CONFIG_FILES="$CONFIG_FILES bin/nsrancid" ;; -@@ -7586,6 +7587,7 @@ $as_echo X"$file" | - "bin/mtrancid":F) chmod a+x $ac_file ;; - "bin/mtlogin":F) chmod a+x $ac_file ;; - "bin/nlogin":F) chmod a+x $ac_file ;; -+ "bin/fnlogin":F) chmod a+x $ac_file ;; - "bin/nrancid":F) chmod a+x $ac_file ;; - "bin/nslogin":F) chmod a+x $ac_file ;; - "bin/nsrancid":F) chmod a+x $ac_file ;; Index: patches/patch-etc_Makefile_in =================================================================== RCS file: /cvs/ports/sysutils/rancid/patches/patch-etc_Makefile_in,v retrieving revision 1.4 diff -u -p -r1.4 patch-etc_Makefile_in --- patches/patch-etc_Makefile_in 8 Jun 2012 13:59:08 -0000 1.4 +++ patches/patch-etc_Makefile_in 16 Nov 2016 01:58:05 -0000 @@ -1,16 +1,16 @@ -$OpenBSD: patch-etc_Makefile_in,v 1.4 2012/06/08 13:59:08 pea Exp $ ---- etc/Makefile.in.orig Thu Nov 17 22:10:11 2011 -+++ etc/Makefile.in Tue May 29 13:19:25 2012 -@@ -22,7 +22,7 @@ - # permission and modified beyond recognition. - - VPATH = @srcdir@ +$OpenBSD$ +--- etc/Makefile.in.orig Tue Sep 6 17:12:39 2016 ++++ etc/Makefile.in Wed Nov 16 03:51:28 2016 +@@ -70,7 +70,7 @@ am__make_running_with_option = \ + test $$has_opt = yes + am__make_dryrun = (target_option=n; $(am__make_running_with_option)) + am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ +pkgdatadir = $(datadir)/examples/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ -@@ -423,26 +423,10 @@ uninstall-am: uninstall-pkgdataDATA +@@ -534,30 +534,10 @@ uninstall-am: uninstall-pkgdataDATA uninstall-sysconfD install-data-local: all @@ -24,6 +24,9 @@ $OpenBSD: patch-etc_Makefile_in,v 1.4 20 - else \ - $(INSTALL_DATA) rancid.conf.sample $(DESTDIR)$(sysconfdir)/rancid.conf; \ - fi; \ +- if test ! -f $(DESTDIR)$(sysconfdir)/rancid.types.conf ; then \ +- $(INSTALL_DATA) rancid.types.conf $(DESTDIR)$(sysconfdir)/rancid.types.conf; \ +- fi; \ - if test -f $(DESTDIR)$(sysconfdir)/lg.conf ; then \ - echo ""; \ - echo "WARNING: *** $(DESTDIR)$(sysconfdir)/lg.conf exists. See "; \ @@ -33,11 +36,12 @@ $OpenBSD: patch-etc_Makefile_in,v 1.4 20 - else \ - $(INSTALL_DATA) lg.conf.sample $(DESTDIR)$(sysconfdir)/lg.conf; \ - fi; \ -- fi +- fi; \ +- $(INSTALL_DATA) rancid.types.base $(DESTDIR)$(sysconfdir)/rancid.types.base + test -z "$(pkgdatadir)" || $(mkdir_p) "$(DESTDIR)$(pkgdatadir)" + $(INSTALL_DATA) ../cloginrc.sample $(DESTDIR)$(pkgdatadir)/cloginrc.sample; \ -+ $(INSTALL_DATA) rancid.conf.sample $(DESTDIR)$(pkgdatadir)/rancid.conf; \ -+ $(INSTALL_DATA) lg.conf.sample $(DESTDIR)$(pkgdatadir)/lg.conf; \ ++ $(INSTALL_DATA) rancid.conf.sample $(DESTDIR)$(pkgdatadir)/rancid.conf.sample; \ ++ $(INSTALL_DATA) rancid.types.base $(DESTDIR)$(pkgdatadir)/rancid.types.base lg.conf.sample: Makefile $(srcdir)/lg.conf.sample.in rm -f lg.conf.sample lg.conf.sample.tmp; \ Index: patches/patch-etc_rancid_conf_sample_in =================================================================== RCS file: patches/patch-etc_rancid_conf_sample_in diff -N patches/patch-etc_rancid_conf_sample_in --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-etc_rancid_conf_sample_in 16 Nov 2016 01:58:05 -0000 @@ -0,0 +1,12 @@ +$OpenBSD$ +--- etc/rancid.conf.sample.in.orig Tue Nov 8 10:22:04 2016 ++++ etc/rancid.conf.sample.in Tue Nov 8 10:22:57 2016 +@@ -32,7 +32,7 @@ TMPDIR=/tmp; export TMPDIR + # Be careful changing this, it affects CVSROOT below. It should be a FQPN, not + # relative. + BASEDIR=@localstatedir@; export BASEDIR +-PATH=@bindir@:@ENV_PATH@; export PATH ++PATH=/usr/bin:/bin:@prefix@/bin; export PATH + # + # Set to the name of the sendmail executable (or script) that will accept the + # -t option to take its rcpt and other headers from std-in and $MAILOPTS (see Index: patches/patch-share_Makefile_in =================================================================== RCS file: patches/patch-share_Makefile_in diff -N patches/patch-share_Makefile_in --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-share_Makefile_in 16 Nov 2016 01:58:05 -0000 @@ -0,0 +1,22 @@ +$OpenBSD$ +--- share/Makefile.in.orig Tue Sep 6 17:12:39 2016 ++++ share/Makefile.in Wed Nov 16 04:10:43 2016 +@@ -71,7 +71,7 @@ am__make_running_with_option = \ + test $$has_opt = yes + am__make_dryrun = (target_option=n; $(am__make_running_with_option)) + am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +-pkgdatadir = $(datadir)/@PACKAGE@ ++pkgdatadir = $(datadir)/examples/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkglibexecdir = $(libexecdir)/@PACKAGE@ +@@ -276,8 +276,7 @@ top_srcdir = @top_srcdir@ + AUTOMAKE_OPTIONS = foreign + pkgdata_SCRIPTS = rancid-cvspurge rtrfilter downreport + dist_pkgdata_SCRIPTS = getipacctg +-dist_pkgdata_DATA = README.misc cisco-load.exp cisco-reload.exp \ +- index.html lgnotes.html ++dist_pkgdata_DATA = README.misc cisco-load.exp cisco-reload.exp + + EXTRA_DIST = rancid-cvspurge.in rancid.spec rtrfilter.in downreport.in + CLEANFILES = rancid-cvspurge downreport Index: pkg/DESCR =================================================================== RCS file: /cvs/ports/sysutils/rancid/pkg/DESCR,v retrieving revision 1.1.1.1 diff -u -p -r1.1.1.1 DESCR --- pkg/DESCR 16 Dec 2008 21:07:55 -0000 1.1.1.1 +++ pkg/DESCR 16 Nov 2016 01:58:05 -0000 @@ -1,12 +1,12 @@ RANCID monitors a router's (or more generally a device's) configuration, including software and hardware (cards, serial numbers, -etc) and uses CVS (Concurrent Version System) to maintain history of +etc) and uses CVS (Concurrent Version System) to maintain history of changes. RANCID does this by the very simple process summarized here: - * login to each device in the router table (router.db) - * run various commands to get the information that will be saved - * cook the output; re-format, remove oscillating or incrementing data + * login to each device in the router table (router.db) + * run various commands to get the information that will be saved + * cook the output; re-format, remove oscillating or incrementing data * email any differences (sample) from the previous collection to a - mail list + mail list * and finally commit those changes to the revision control system Index: pkg/MESSAGE =================================================================== RCS file: pkg/MESSAGE diff -N pkg/MESSAGE --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ pkg/MESSAGE 16 Nov 2016 01:58:05 -0000 @@ -0,0 +1,7 @@ +If you are upgrading from rancid-<3, please note that router.db field +separator has been changed from ':' to ';' to avoid conflict with IPv6 +addresses. Replace the field separator in router.db files before running +rancid. + +The configuration files location is changed from ${SYSCONFDIR} to +${SYSCONFDIR}/rancid. Index: pkg/PLIST =================================================================== RCS file: /cvs/ports/sysutils/rancid/pkg/PLIST,v retrieving revision 1.7 diff -u -p -r1.7 PLIST --- pkg/PLIST 8 Jun 2012 13:59:08 -0000 1.7 +++ pkg/PLIST 16 Nov 2016 01:58:05 -0000 @@ -2,18 +2,22 @@ @conflict par-* @newgroup _rancid:613 @newuser _rancid:613:_rancid:daemon:Rancid user:/var/rancid:/bin/sh +bin/a10login bin/agmrancid bin/alogin +bin/anlogin bin/arancid -bin/arrancid bin/avologin bin/avorancid bin/blogin bin/brancid +bin/brlogin bin/cat5rancid bin/clogin +bin/complogin bin/control_rancid bin/cssrancid +bin/dllogin bin/elogin bin/erancid bin/f10rancid @@ -21,7 +25,6 @@ bin/f5rancid bin/flogin bin/fnlogin bin/fnrancid -bin/francid bin/hlogin @bin bin/hpuifilter bin/hrancid @@ -29,48 +32,74 @@ bin/htlogin bin/htrancid bin/jerancid bin/jlogin -bin/jrancid @comment bin/lg.cgi @comment bin/lgform.cgi bin/mrancid bin/mrvlogin -bin/mrvrancid bin/mtlogin bin/mtrancid bin/nlogin bin/nrancid bin/nslogin bin/nsrancid -bin/nxrancid -bin/par -bin/prancid +bin/panlogin +@bin bin/par +bin/plogin bin/rancid bin/rancid-cvs bin/rancid-fe bin/rancid-run +bin/rblogin bin/rivlogin bin/rivrancid bin/rrancid +bin/rtftpcopy bin/srancid bin/tlogin -bin/tntlogin -bin/tntrancid bin/trancid -bin/xrancid -bin/xrrancid +bin/ulogin +bin/wlogin +bin/xilogin +bin/xirancid +bin/xlogin bin/zrancid +lib/rancid/ +lib/rancid/acos.pm +lib/rancid/aeos.pm +lib/rancid/arbor.pm +lib/rancid/bigip.pm +lib/rancid/ciscowlc.pm +lib/rancid/dell.pm +lib/rancid/edgemax.pm +lib/rancid/edgerouter.pm +lib/rancid/eos.pm +lib/rancid/exos.pm +lib/rancid/foundry.pm +lib/rancid/ios.pm +lib/rancid/iosxr.pm +lib/rancid/junos.pm +lib/rancid/mrv.pm +lib/rancid/nxos.pm +lib/rancid/panos.pm +lib/rancid/rancid.pm +lib/rancid/rbt.pm +lib/rancid/wavesvros.pm @man man/man1/agmrancid.1 @man man/man1/alogin.1 +@man man/man1/anlogin.1 +@man man/man1/anrancid.1 @man man/man1/arancid.1 -@man man/man1/arrancid.1 +@comment man/man1/arrancid.1 @man man/man1/avologin.1 @man man/man1/avorancid.1 @man man/man1/blogin.1 @man man/man1/brancid.1 @man man/man1/cat5rancid.1 @man man/man1/clogin.1 +@man man/man1/complogin.1 @man man/man1/control_rancid.1 @man man/man1/cssrancid.1 +@man man/man1/dllogin.1 @man man/man1/elogin.1 @man man/man1/erancid.1 @man man/man1/f10rancid.1 @@ -78,27 +107,26 @@ bin/zrancid @man man/man1/flogin.1 @man man/man1/fnlogin.1 @man man/man1/fnrancid.1 -@man man/man1/francid.1 @man man/man1/hlogin.1 @man man/man1/hrancid.1 @man man/man1/htlogin.1 @man man/man1/htrancid.1 @man man/man1/jerancid.1 @man man/man1/jlogin.1 -@man man/man1/jrancid.1 -@man man/man1/lg_intro.1 +@comment man/man1/lg_intro.1 @man man/man1/mrancid.1 @man man/man1/mrvlogin.1 -@man man/man1/mrvrancid.1 @man man/man1/mtlogin.1 @man man/man1/mtrancid.1 @man man/man1/nlogin.1 @man man/man1/nrancid.1 @man man/man1/nslogin.1 @man man/man1/nsrancid.1 -@man man/man1/nxrancid.1 +@comment man/man1/nxrancid.1 +@man man/man1/panlogin.1 @man man/man1/par.1 -@man man/man1/prancid.1 +@man man/man1/plogin.1 +@comment man/man1/prancid.1 @man man/man1/rancid-cvs.1 @man man/man1/rancid-run.1 @man man/man1/rancid.1 @@ -108,15 +136,19 @@ bin/zrancid @man man/man1/rrancid.1 @man man/man1/srancid.1 @man man/man1/tlogin.1 -@man man/man1/tntlogin.1 -@man man/man1/tntrancid.1 @man man/man1/trancid.1 -@man man/man1/xrancid.1 -@man man/man1/xrrancid.1 +@man man/man1/ulogin.1 +@man man/man1/wlogin.1 +@man man/man1/xilogin.1 +@man man/man1/xirancid.1 +@man man/man1/xlogin.1 @man man/man1/zrancid.1 +@man man/man3/rancid.3 @man man/man5/cloginrc.5 -@man man/man5/lg.conf.5 +@comment man/man5/lg.conf.5 @man man/man5/rancid.conf.5 +@comment @man man/man5/rancid.types.base.5 +@man man/man5/rancid.types.conf.5 @man man/man5/router.db.5 share/doc/pkg-readmes/${FULLPKGNAME} share/doc/rancid/ @@ -124,25 +156,22 @@ share/doc/rancid/CHANGES share/doc/rancid/COPYING share/doc/rancid/FAQ share/doc/rancid/README -share/doc/rancid/README.lg share/doc/rancid/UPGRADING share/examples/rancid/ +@sample ${SYSCONFDIR}/rancid/ +share/examples/rancid/README.misc +share/examples/rancid/cisco-load.exp +share/examples/rancid/cisco-reload.exp share/examples/rancid/cloginrc.sample -share/examples/rancid/lg.conf -share/examples/rancid/lg.conf.sample -share/examples/rancid/rancid.conf -@sample ${SYSCONFDIR}/rancid.conf +share/examples/rancid/downreport +share/examples/rancid/getipacctg +@comment share/examples/rancid/lg.conf.sample +share/examples/rancid/rancid-cvspurge share/examples/rancid/rancid.conf.sample -share/rancid/ -share/rancid/README.misc -share/rancid/cisco-load.exp -share/rancid/cisco-reload.exp -share/rancid/downreport -share/rancid/getipacctg -share/rancid/index.html -share/rancid/lgnotes.html -share/rancid/rancid-cvspurge -share/rancid/rtrfilter +@sample ${SYSCONFDIR}/rancid/rancid.conf +share/examples/rancid/rancid.types.base +@sample ${SYSCONFDIR}/rancid/rancid.types.base +share/examples/rancid/rtrfilter @mode 755 @owner _rancid @group _rancid Index: pkg/README =================================================================== RCS file: /cvs/ports/sysutils/rancid/pkg/README,v retrieving revision 1.2 diff -u -p -r1.2 README --- pkg/README 2 Jun 2011 13:41:41 -0000 1.2 +++ pkg/README 16 Nov 2016 01:58:05 -0000 @@ -4,19 +4,19 @@ $OpenBSD: README,v 1.2 2011/06/02 13:41: | Running ${FULLPKGNAME} on OpenBSD +----------------------------------------------------------------------- -On OpenBSD, RANCID lives and works in /var/rancid, with user id _rancid. +On OpenBSD, RANCID lives and works in ${LOCALSTATEDIR}, with user id _rancid. Quick Installation Guide (an example): -1) Modify ${SYSCONFDIR}/rancid.conf. The variable LIST_OF_GROUPS is a space - delimited list of router "groups". +1) Modify ${SYSCONFDIR}/rancid/rancid.conf. The variable LIST_OF_GROUPS is + a space delimited list of router "groups". e.g.: LIST_OF_GROUPS="backbone aggregation switches" -2) Create /var/rancid/.cloginrc, with read/write permissions only for +2) Create ${LOCALSTATEDIR}/.cloginrc, with read/write permissions only for the _rancid user, e.g. 0600 or 0640. - Review ${TRUEPREFIX}/share/examples/rancid/cloginrc.sample for examples + Review ${TRUEPREFIX}/share/examples/rancid/cloginrc.sample for examples and a good starting point. See also cloginrc(5). Test to make sure that you can login to every router. @@ -35,7 +35,7 @@ Quick Installation Guide (an example): do it. See also rancid-cvs(1). 5) For each "group", modify the router.db file in the group directory. - The file is of the form "router:mfg:state", where "router" is + The file is of the form "router;mfg;state", where "router" is the name (we use FQDN) of the router, mfg is the manufacturer from the set of (cat5|cisco|juniper), and "state" is either up or down. Each router listed as "up" will have the configuration grabbed. @@ -44,16 +44,16 @@ Quick Installation Guide (an example): 6) For first-time users or new installations, run `rancid-run' (with no arguments) as the user _rancid and check the resulting log file(s) - (in /var/rancid/logs/*) for errors. Repeat until there are no + (in ${LOCALSTATEDIR}/logs/*) for errors. Repeat until there are no errors. 7) Put `rancid-run' in _rancid's crontab to be called however often you want it to run for each group (rancid-run [<GROUP>]). If you run it less often than once/hour, check the setting of OLDTIME in - ${SYSCONFDIR}/rancid.conf. + ${SYSCONFDIR}/rancid/rancid.conf. Example: # run config differ hourly 1 * * * * ${TRUEPREFIX}/bin/rancid-run # clean out config differ logs - 50 23 * * * /usr/bin/find /var/rancid/logs -type f -mtime +2 -exec rm {} \; + 50 23 * * * /usr/bin/find ${LOCALSTATEDIR}/logs -type f -mtime +2 -exec rm {} \;