summaryrefslogtreecommitdiffstats
path: root/usr.sbin/bsdconfig
diff options
context:
space:
mode:
authordteske <dteske@FreeBSD.org>2013-09-23 16:47:52 +0000
committerdteske <dteske@FreeBSD.org>2013-09-23 16:47:52 +0000
commit64fbf758553e27367ea243f3b71bd0a09fc59001 (patch)
tree23751ed225bd593991bc9963b08e562085da94c9 /usr.sbin/bsdconfig
parent23d9cd5eff5ee7d7588bd950e305cacab59ce40d (diff)
downloadFreeBSD-src-64fbf758553e27367ea243f3b71bd0a09fc59001.zip
FreeBSD-src-64fbf758553e27367ea243f3b71bd0a09fc59001.tar.gz
Fix a bug in HTTP checking/fetching.
Fix a bug in HTTP checking/fetching. Add Main Site to HTTP menu. Add new example script browse_packages_http.sh and move existing example script browse_packages.sh -> browse_packages_ftp.sh Reviewed by: gjb, brd Approved by: re (gjb), clusteradm (brd) MFC after: 3 days
Diffstat (limited to 'usr.sbin/bsdconfig')
-rw-r--r--usr.sbin/bsdconfig/examples/Makefile2
-rwxr-xr-xusr.sbin/bsdconfig/examples/browse_packages_ftp.sh (renamed from usr.sbin/bsdconfig/examples/browse_packages.sh)0
-rwxr-xr-xusr.sbin/bsdconfig/examples/browse_packages_http.sh25
-rw-r--r--usr.sbin/bsdconfig/share/media/http.subr15
4 files changed, 38 insertions, 4 deletions
diff --git a/usr.sbin/bsdconfig/examples/Makefile b/usr.sbin/bsdconfig/examples/Makefile
index 78711d2..d8813ce 100644
--- a/usr.sbin/bsdconfig/examples/Makefile
+++ b/usr.sbin/bsdconfig/examples/Makefile
@@ -3,7 +3,7 @@
NO_OBJ=
FILESDIR= ${SHAREDIR}/examples/bsdconfig
-FILES= browse_packages.sh bsdconfigrc
+FILES= browse_packages_ftp.sh browse_packages_http.sh bsdconfigrc
beforeinstall:
mkdir -p ${DESTDIR}${FILESDIR}
diff --git a/usr.sbin/bsdconfig/examples/browse_packages.sh b/usr.sbin/bsdconfig/examples/browse_packages_ftp.sh
index 1deb562..1deb562 100755
--- a/usr.sbin/bsdconfig/examples/browse_packages.sh
+++ b/usr.sbin/bsdconfig/examples/browse_packages_ftp.sh
diff --git a/usr.sbin/bsdconfig/examples/browse_packages_http.sh b/usr.sbin/bsdconfig/examples/browse_packages_http.sh
new file mode 100755
index 0000000..e88a576
--- /dev/null
+++ b/usr.sbin/bsdconfig/examples/browse_packages_http.sh
@@ -0,0 +1,25 @@
+#!/bin/sh
+# $FreeBSD$
+#
+# This sample downloads the package INDEX file from HTTP to /tmp (if it doesn't
+# already exist) and then displays the package configuration/management screen
+# using the local INDEX file (results in faster browsing of packages from-start
+# since the INDEX can be loaded from local media).
+#
+# NOTE: Packages cannot be installed unless staged to /tmp/packages/All
+#
+. /usr/share/bsdconfig/script.subr
+nonInteractive=1
+TMPDIR=/tmp
+if [ ! -e "$TMPDIR/packages/INDEX" ]; then
+ [ -d "$TMPDIR/packages" ] || mkdir -p "$TMPDIR/packages" || exit 1
+ _httpPath=http://ftp.freebsd.org
+ # For older releases, use http://ftp-archive.freebsd.org
+ mediaSetHTTP
+ mediaOpen
+ f_show_info "Downloading packages/INDEX from\n %s" "$_httpPath"
+ f_device_get media packages/INDEX > $TMPDIR/packages/INDEX
+fi
+_directoryPath=$TMPDIR
+mediaSetDirectory
+configPackages
diff --git a/usr.sbin/bsdconfig/share/media/http.subr b/usr.sbin/bsdconfig/share/media/http.subr
index 1236c99..984d771 100644
--- a/usr.sbin/bsdconfig/share/media/http.subr
+++ b/usr.sbin/bsdconfig/share/media/http.subr
@@ -77,7 +77,8 @@ f_dialog_menu_media_http()
f_dialog_title_restore
local prompt="$msg_please_select_the_site_closest_to_you_or_other"
local menu_list="
- 'URL' '$msg_specify_some_other_http_site'
+ '$msg_main_site' 'ftp.freebsd.org'
+ 'URL' '$msg_specify_some_other_http_site'
" # END-QUOTE
local hline="$msg_select_a_site_thats_close"
@@ -390,8 +391,12 @@ f_http_check_access()
f_show_info "$msg_checking_access_to" "$http_path"
local rx
+ case "$http_path" in
+ http://*|/*) : valid request ;;
+ *) http_path="/$http_path" # full URI requests only
+ esac
if ! rx=$(
- printf "GET /%s/ HTTP/1.0\r\n\r\n" "${http_path%/}" |
+ printf "GET %s/ HTTP/1.0\r\n\r\n" "${http_path%/}" |
nc -n "$host" "$http_port"
); then
f_show_msg "$msg_couldnt_connect_to_server http://%s:%s/" \
@@ -583,8 +588,12 @@ f_media_get_http()
local http_path
f_getvar $VAR_HTTP_PATH%/ http_path
- local url="/$http_path/$file" rx
+ case "$http_path" in
+ http://*|/*) : valid request ;;
+ *) http_path="/$http_path" # full URI requests only
+ esac
+ local url="$http_path/$file" rx
f_dprintf "sending http request for: %s" "$url"
printf "GET %s HTTP/1.0\r\n\r\n" "$url" | nc -n "$host" "$http_port" |
(
OpenPOWER on IntegriCloud