Author: dteske
Date: Mon Sep 23 16:47:52 2013
New Revision: 255818
URL: http://svnweb.freebsd.org/changeset/base/255818

Log:
  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

Added:
  head/usr.sbin/bsdconfig/examples/browse_packages_ftp.sh
     - copied unchanged from r255712, 
head/usr.sbin/bsdconfig/examples/browse_packages.sh
  head/usr.sbin/bsdconfig/examples/browse_packages_http.sh   (contents, props 
changed)
Deleted:
  head/usr.sbin/bsdconfig/examples/browse_packages.sh
Modified:
  head/usr.sbin/bsdconfig/examples/Makefile
  head/usr.sbin/bsdconfig/share/media/http.subr

Modified: head/usr.sbin/bsdconfig/examples/Makefile
==============================================================================
--- head/usr.sbin/bsdconfig/examples/Makefile   Mon Sep 23 14:18:34 2013        
(r255817)
+++ head/usr.sbin/bsdconfig/examples/Makefile   Mon Sep 23 16:47:52 2013        
(r255818)
@@ -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}

Copied: head/usr.sbin/bsdconfig/examples/browse_packages_ftp.sh (from r255712, 
head/usr.sbin/bsdconfig/examples/browse_packages.sh)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/usr.sbin/bsdconfig/examples/browse_packages_ftp.sh     Mon Sep 23 
16:47:52 2013        (r255818, copy of r255712, 
head/usr.sbin/bsdconfig/examples/browse_packages.sh)
@@ -0,0 +1,25 @@
+#!/bin/sh
+# $FreeBSD$
+#
+# This sample downloads the package INDEX file from FTP 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
+       _ftpPath=ftp://ftp.freebsd.org
+       # For older releases, use ftp://ftp-archive.freebsd.org
+       mediaSetFTP
+       mediaOpen
+       f_show_info "Downloading packages/INDEX from\n %s" "$_ftpPath" 
+       f_device_get media packages/INDEX > $TMPDIR/packages/INDEX
+fi
+_directoryPath=$TMPDIR
+mediaSetDirectory
+configPackages

Added: head/usr.sbin/bsdconfig/examples/browse_packages_http.sh
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/usr.sbin/bsdconfig/examples/browse_packages_http.sh    Mon Sep 23 
16:47:52 2013        (r255818)
@@ -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

Modified: head/usr.sbin/bsdconfig/share/media/http.subr
==============================================================================
--- head/usr.sbin/bsdconfig/share/media/http.subr       Mon Sep 23 14:18:34 
2013        (r255817)
+++ head/usr.sbin/bsdconfig/share/media/http.subr       Mon Sep 23 16:47:52 
2013        (r255818)
@@ -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" |
        (
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to