Lots of updates GET -> POST, ROM support
authorMarty Connor <mdc@etherboot.org>
Wed, 19 Aug 2009 00:49:26 +0000 (20:49 -0400)
committerMarty Connor <mdc@etherboot.org>
Wed, 19 Aug 2009 00:49:26 +0000 (20:49 -0400)
A pretty major rewrite to simplify things.
Took out multi-architecture support for now.
Switched from GET to POST for forms.
Added ROM support.

bottom.php
build.php
customize-flags.php
directions.php [new file with mode: 0644]
flag-table.php
globals.php
index.php
top.php
utils.php

index bac576a..5d639c1 100644 (file)
@@ -1,56 +1,43 @@
 <!--\r
-\r
-Helpful information for users downloading images\r
-\r
--->\r
-\r
+      Helpful information for users downloading images\r
+ -->\r
 <hr>\r
-\r
 <h4>\r
 Resources:\r
 </h4>\r
-\r
 <ul>\r
-\r
   <li>\r
     Source code for gPXE images is available at \r
     <a href="http://etherboot.org/wiki/download" target="_blank">\r
     http://etherboot.org/wiki/download</a>\r
     <br><br>\r
   </li>\r
-\r
   <li>\r
     For general information about using gPXE, please visit the\r
     <a href="http://www.etherboot.org/" target="_blank">\r
     Etherboot Project Home Page</a>\r
     <br><br>\r
   </li>\r
-    \r
   <li>\r
     For Email-based support for gPXE please join  \r
     <a href="http://etherboot.org/wiki/mailinglists" target="_blank">\r
     Etherboot Project mailing lists.</a>\r
     <br><br>\r
   </li>\r
-\r
   <li>\r
     For real-time online gPXE support via IRC please visit the \r
     <a href="irc://irc.freenode.net/%23etherboot"> #etherboot channel\r
     of irc.freenode.net</a>.\r
     <br><br>\r
   </li>\r
-\r
 </ul>\r
-\r
 <hr>\r
   <font size="-1">\r
     <br>\r
-    Please email <a href="mailto:webmaster@etherboot.org">webmaster@etherboot.org</a>\r
+    Please email <a href="mailto:<? echo "${webmaster_email}" ?>"><? echo "${webmaster_email}"?></a>\r
     with questions or comments about this website.\r
   </font>\r
-\r
-<br>\r
-\r
+  <br><br>\r
+<hr>\r
 </body>\r
-\r
 </html>\r
index 7afadd2..959254c 100644 (file)
--- a/build.php
+++ b/build.php
@@ -1,44 +1,28 @@
 <?php // -*- Mode: PHP; -*-
 
-// If user chose "Configure" option on form
-if ( $_GET['A'] == "Configure" ) {
+require_once "utils.php";
 
-    // Enable  more extensive customization of options
+// If user chose "Customize" option on form
+if ( $_POST['A'] == "Customize" ) {
+
+    // Present user with form to customize build options
     require_once "customize-flags.php";
-       
+
     exit ();
 
-// The next conditional includes all other cases except "Get ROM"
-//   particularly the explicit ($A == "Start Over") case
-//
-} else if ( $_GET['A'] != "Get ROM" ) { 
+// The following conditional includes all other cases except "Get ROM"
+// particularly the explicit ($A == "Start Over") case
+} else if ( $_POST['A'] != "Get ROM" ) { 
        
        // Note that this method of redirections discards all the
        // configuration flags, which is intentional in this case.
-    // ( To pass through all the flags, we could just 
-    // 'include ( "index.php" );' here )
-
-       $dir = dirname ( $_SERVER['PHP_SELF'] );
-
-       if ( $dir == "." || $dir == "/" ) {
-               $dir = "";
-       }
-
-       $isHTTPS = ( isset ( $_SERVER["HTTPS"] ) && $_SERVER["HTTPS"] == "on" );
-       $port = ( isset($_SERVER["SERVER_PORT"] ) && 
-                         ( ( !$isHTTPS && $_SERVER["SERVER_PORT"] != "80" ) || 
-                               ( $isHTTPS  && $_SERVER["SERVER_PORT"] != "443" ) ) );
-
-       $port = ( $port ) ? ':' . $_SERVER["SERVER_PORT"] : '';
-
-       $dest = ( $isHTTPS ? 'https://' : 'http://' ) .
-               $_SERVER["SERVER_NAME"] . $dir . "/";
 
+    $dest = curDirURL ();
        header ( "Location: $dest" );
 
-       // This should normally not be seen, because the "header"
-       // statement above should cause immediate redirection
-       // but just in case...
+       // This next "echo" should normally not be seen, because 
+       // the "header" statement above should cause immediate 
+       // redirection but just in case...
 
        echo "Try this: <a href=\"$dest\">$dest</a>";
 
@@ -48,13 +32,15 @@ if ( $_GET['A'] == "Configure" ) {
 // OK, we're going to try to use whatever options have been set
 // to build an image.
 
-require_once "config-info.php";
-
 $flags = get_flags ();
 
-// (debug) show flags
-// echo "<p>Flags: </p>";
-// showflags ( $flags );
+// For debugging
+// echo "===== build.php =====" . "<br>";
+// echo "\$_POST['ofmt'] = " . "\"${_POST['ofmt']}\"" . "<br>";
+// echo "\$_POST['nic'] = " . "\"${_POST['nic']}\"" .  "<br>";
+// echo "\$_POST['pci_vendor_code'] = " . "\"${_POST['pci_vendor_code']}\"" . "<br>";
+// echo "\$_POST['pci_device_code'] = " . "\"${_POST['pci_device_code']}\"" . "<br>";
+// show_flags ( $flags );
 // exit ();
 
 // Make temporary copy of src directory
@@ -64,46 +50,77 @@ $config_dir = $dir . "/config";
 // Or, for debugging, we can define our own source tree.
 // $dir = "/var/romtmp/src";
 
-$nicfile     = get_nicfile();
-$nicfilename = "gpxe-$version-$nicfile";
-$target      = "bin/$nicfile";
-
 // Write config files
 write_gpxe_config_files ( $config_dir, $flags );
 
-// Make the requested image.  $status is set to 0 on success
-exec ( "make -C '$dir' '$target' 2>&1", $maketxt, $status );
+// Make sure at least $nic was supplied
+if ( ! isset ( $_POST['nic'] ) ) {
+    die ( "No NIC supplied!" );
+}
+if ( isset ( $nics[$_POST['nic']] ) ) {
+    $nic = $nics[$_POST['nic']];
+} else {
+    die ( "Invalid NIC supplied!" );
+}
 
-// (debugging) take a look at the Make output
-//echo "<blockquote>"."<pre>";
-//echo htmlentities ( implode("\n", $maketxt ) );
-//echo "</pre>"."</blockquote>";
-//deltempdir ( $dir );
-//exit ();
+// Get requested format
+$ofmt = isset ( $_POST['ofmt'] ) ? $_POST['ofmt'] : "";
+$fmt_extension = isset ( $ofmts[$ofmt] ) ? $ofmts[$ofmt] : 'dsk';
+
+if ( $nic == 'undionly' && $fmt_extension == "pxe" ) {
+    $fmt_extension = "kpxe";
+} else if ( $fmt_extension == "rom" ) {
+    // concatenate the pci codes to get the $nic part of the
+    // Make target
+    $pci_codes = strtolower (  $_POST['pci_vendor_code']
+                             . $_POST['pci_device_code'] );
+    $nic = $pci_codes;
+    if ( ! isset ( $roms[$pci_codes] ) ) {
+        die (   "Sorry, no driver supports device <br>"
+              . "${_POST['pci_vendor_code']}:"
+              . "${_POST['pci_device_code']}" );
+    }
+}
+
+// Make the requested image.  $status is set to 0 on success
+$make_target = "bin/${nic}.${fmt_extension}";
+exec ( "make -C '$dir' '$make_target' 2>&1", $maketxt, $status );
+
+// for debugging
+echo "\$_POST['ofmt'] = " . "\"${_POST['ofmt']}\"" . "<br>";
+echo "\$_POST['nic'] = " . "\"${_POST['nic']}\"" .  "<br>";
+echo "\$_POST['pci_vendor_code'] = " . "\"${_POST['pci_vendor_code']}\"" . "<br>";
+echo "\$_POST['pci_device_code'] = " . "\"${_POST['pci_device_code']}\"" . "<br>";
+echo "<blockquote>"."<pre>";
+echo htmlentities ( implode("\n", $maketxt ) );
+echo "</pre>"."</blockquote>";
+// deltempdir ( $dir );
+die ( "Build directory is $dir" );
 
 // Send ROM to browser (with extreme prejudice)
 
 if ( $status == 0 ) {
 
-    $fp = fopen("$dir/$target", "rb" );
+    $fp = fopen("$dir/$make_target", "rb" );
     if ( $fp > 0 ) {
 
-        $len = filesize ( "$dir/$target" );
+        $len = filesize ( "$dir/$make_target" );
         if ( $len > 0 ) {
 
             $buf = fread ( $fp, $len );
             fclose ( $fp );
             deltempdir ( $dir );
 
-               //echo "$nicfilename<br>"; exit ();
+            $output_filename = "gpxe-${version}-${nic}.${fmt_extension}";
+               //echo "${output_filename}<br>"; exit ();
 
             // Try to force IE to handle downloading right.
             Header ( "Cache-control: private");
             Header ( "Content-Type: application/x-octet-stream; " .
-                     "name=$nicfilename");
+                     "name=$output_filename");
             Header ( "Content-Disposition: attachment; " .
-                     "Filename=$nicfilename");
-            Header ( "Content-Location: $nicfilename");
+                     "Filename=$output_filename");
+            Header ( "Content-Location: $output_filename");
             Header ( "Content-Length: $len");
 
             echo $buf;
@@ -118,9 +135,9 @@ deltempdir ( $dir );
 
 // Announce failure if $status from make was non-zero
 
-$header_title = "ROM-o-matic: $nicfile Build Failed";
-$html_title   = "$nicfile Build Failed";
-$description  = "$nicfile ROM driver build failed";
+$header_title = "Build failed";
+$html_title   = "Build failed";
+$description  = "Build failed";
 
 include_once ( $top_inc );
 
index aa7dbdd..50b410f 100644 (file)
@@ -1,83 +1,40 @@
 <?php // -*- Mode: PHP; -*-
 
-require_once "config-info.php";
+require_once "utils.php";
 
-$nics = get_nics();
 $flags = get_flags();
-$nicfile = get_nicfile();
-$arch = cleanstring($_GET['arch']);
+
+$build = "<input type=\"submit\" name=\"A\" value=\"Get ROM\">";
+$restart = "<input type=\"submit\" name=\"A\" value=\"Start Over\">";
 
 // Begin html output
 include_once $top_inc;
 
 ?>
 
-<form action="build.php" method=GET>
- <input type="hidden" name="version" value = "<? echo $version ?>">
- <? /* Set F to keep build.php from using flag defaults, since we've
-       already done that. */ ?>
- <input type="hidden" name="F" value="ignore">
-
- <? /* Just pass thru other values we don't touch: */ ?>
- <input type="hidden" name="nic" value="<? echo htmlentities($_GET['nic']) ?>">
- <input type="hidden" name="ofmt" 
-  value="<? echo htmlentities ( isset ( $_GET['ofmt'] ) ? $_GET['ofmt'] : '' ) ?>">
- <input type="hidden" name="arch" value="<? echo $arch ?>">
-
-<? $build = "<input type=\"submit\" name=\"A\" value=\"Get ROM\">";
-   $restart = "<input type=\"submit\" name=\"A\" value=\"Start Over\">";
-?>
-
-<h3>
-<ul>
-<li>
-Make configuration changes and press <? echo $build ?> to generate and download an image,
-</li>
-<li>
-Or press <? echo $restart ?> to return to the main page.
-</li>
-</h3>
-
-<p></p>
-<hr>
-
-<ul>
-
-<li>Choose NIC/ROM type: 
-<? echo keys_menubox("nic", $nics, isset($_GET['nic']) ? $_GET['nic'] : "") ?>
-  <p>
-  PCI IDs for available NICs are documented
-  <a href="<? echo $src_dir ?>/bin/NIC" target="_blank">here.</a>
-  <br>You need to know this if you are going to burn/flash a ROM image because
-  <br> PCI IDs on the NIC and ROM must match. If you are making any other
-  <br> kind of image, you only need to match the family (<strong>family</strong>:rom_name)
-  <br> part of the identifier.
-  </p>
-</li>
-
-<li>Choose output format:
-<? echo keys_menubox("ofmt", $ofmts, isset($_GET['ofmt']) ? $_GET['ofmt'] : "") ?>
-<p></p>
-</li>
-
-</ul>
-
-<hr>
-
-<? echo_flags($flags); ?>
-
-<hr>
-<center><table width="35%"><tr>
-<td align="left"> <? echo $build; ?> </td>
-<td align="right"> <? echo $restart ?></td>
-</tr></table></center>
-
+<form action="build.php" method=POST>
+  <input type="hidden" name="version" value = "<? echo $version ?>">
+  <h3>
+  <ul>
+    Make changes below and press <? echo $build ?> to create an image, <br>
+    Or press <? echo $restart ?> to return to the main page.
+  </ul>
+  </h3>
+  <hr>
+  <ul>
+  <? require ( "directions.php" ); ?>
+  </ul>
+  <hr>
+  <? echo_flags( $flags ); ?>
+  <hr>
+  <center><table width="35%"><tr>
+  <td align="left"> <? echo $build; ?> </td>
+  <td align="right"> <? echo $restart ?></td>
+  </tr></table></center>
 </form>
 
-<? include_once $bottom_inc ?>
-
+<? include_once $bottom_inc; ?>
 <?
-
 // For emacs:
 //
 // Local variables:
@@ -85,5 +42,4 @@ Or press <? echo $restart ?> to return to the main page.
 //  c-indent-level: 4
 //  tab-width: 4
 // End:
-
 ?>
diff --git a/directions.php b/directions.php
new file mode 100644 (file)
index 0000000..85f882c
--- /dev/null
@@ -0,0 +1,41 @@
+    <li>
+      Choose an output format: <? echo keys_menubox ( "ofmt", $ofmts,
+      isset ( $_POST['ofmt'] ) ? $_POST['ofmt'] : "") ?>
+      <br><br>
+    </li>
+    <li>
+      Choose a NIC type: <? echo keys_menubox ( "nic", $nics, 
+      isset ( $_POST['nic'] ) ? $_POST['nic'] : "" ) ?>
+      <br><br>
+    </li>
+    <li>
+      (optional -- <b>for binary ROM image format only</b>) <br><br>
+      If you have chosen to create a binary ROM as your output format,<br>
+      you must enter 4 hex digits below for PCI VENDOR CODE and
+      PCI DEVICE CODE<br>
+      for the NIC device for which you are making the ROM image.<br><br>
+      Information on how to determine NIC PCI IDs may be found
+      <a href="http://etherboot.org/wiki/romburning" 
+      target="_blank">here</a>.
+      <br><br>
+      PCI VENDOR CODE:  <? echo textbox ( "pci_vendor_code",
+      isset ( $_POST['pci_vendor_code'] ) ? $_POST['pci_vendor_code'] 
+              : "", 5 ); ?> 
+      &nbsp;&nbsp;
+      PCI DEVICE CODE:  <? echo textbox ( "pci_device_code",
+      isset ( $_POST['pci_device_code'] ) ? $_POST['pci_device_code']
+              : "", 5 ); ?> 
+      <h4>Please note for ROM images:</h4>
+      <ul>
+        <li>
+          gPXE does not support all possible PCI IDs for supported 
+          NICs.
+          <br><br>
+        </li>
+        <li>
+          If you enter PCI IDs, we will attempt to determine the correct<br>
+          driver to support them, and will ignore any NIC type entered 
+          above.<br><br>
+        </li>
+      </ul>
+    </li>
index a13d052..c51db39 100644 (file)
@@ -1,5 +1,16 @@
 <?php // -*- Mode: PHP; -*-
 
+$ofmts = array  
+    ( "Floppy bootable Image (.dsk)" => "dsk",
+      "SYSLINUX floppy Image (.sdsk)" => "sdsk",
+      "ISO bootable image (.iso)" => "iso",
+      "ISO bootable image with legacy floppy emulation (.liso)" => "liso",
+      "LILO/GRUB/SYSLINUX loadable Linux kernel format (.lkrn)" => "lkrn",
+      "PXE bootstrap loader format Image (.pxe)" => "pxe",
+      "USB Keychain Disk Image (.usb)" => "usb",
+      "Binary ROM Image (.rom)" => "rom",
+    );
+
 $flag_table = array (
 
        // Begin Console Options:
@@ -13,20 +24,18 @@ $flag_table = array (
        
        "CONSOLE_FIRMWARE"
        => array (
-          "flag" => "CONSOLE_FIRMWARE",
-          "arch" => "all",
+          "flag" => "CONSOLE_PCBIOS",
           "type" => "on/off",
           "value" => "on",
-          "cfgsec" => "general"
+          "cfgsec" => "console"
           ),
        
        "CONSOLE_SERIAL"
        => array (
           "flag" => "CONSOLE_SERIAL",
-          "arch" => "all",
           "type" => "on/off",
           "value" => "off",
-          "cfgsec" => "general"
+          "cfgsec" => "console"
           ),
        
        // End Console Options
@@ -44,27 +53,24 @@ $flag_table = array (
        "TIMER_BIOS"
        => array (
           "flag" => "TIMER_BIOS",
-          "arch" => "all",
           "type" => "on/off",
           "value" => "on",
           "hide_from_user" => "yes",
-          "cfgsec" => "general"
+          "cfgsec" => "timer"
           ),
        
        "TIMER_RDTSC"
        => array (
           "flag" => "TIMER_RDTSC",
-          "arch" => "all",
           "type" => "on/off",
-          "value" => "on",
+          "value" => "off",
           "hide_from_user" => "yes",
-          "cfgsec" => "general"
+          "cfgsec" => "timer"
           ),
-       
+
        "BANNER_TIMEOUT"
        => array (
           "flag" => "BANNER_TIMEOUT",
-          "arch" => "all",
           "type" => "integer",
           "value" => "20",
           "cfgsec" => "general"
@@ -85,7 +91,6 @@ $flag_table = array (
        "NET_PROTO_IPV4"
        => array (
           "flag" => "NET_PROTO_IPV4",
-          "arch" => "all",
           "type" => "on/off",
           "value" => "on",
           "hide_from_user" => "yes",
@@ -106,7 +111,6 @@ $flag_table = array (
        "COMCONSOLE"
        => array ( 
           "flag" => "COMCONSOLE",
-          "arch" => "all",
           "type" => "integer", // usually hex, e.g. 0x378
           "value" => "0x3F8",
           "cfgsec" => "serial"
@@ -116,7 +120,6 @@ $flag_table = array (
        => array (
           "flag" => "COMPRESERVE",
           "type" => "on/off",
-          "arch" => "all",
           "value" => "off",
           "cfgsec" => "serial"
           ),
@@ -125,7 +128,6 @@ $flag_table = array (
        => array (
           "flag" => "COMSPEED",
           "type" => "integer",
-          "arch" => "all",
           "value" => "9600",
           "cfgsec" => "serial"
           ),
@@ -134,7 +136,6 @@ $flag_table = array (
        => array (
           "flag" => "COMDATA",
           "type" => "integer",
-          "arch" => "all",
           "value" => "8",
           "cfgsec" => "serial"
           ),
@@ -143,7 +144,6 @@ $flag_table = array (
        => array (
           "flag" => "COMPARITY",
           "type" => "integer",
-          "arch" => "all",
           "value" => "0",
           "cfgsec" => "serial"
           ),
@@ -152,7 +152,6 @@ $flag_table = array (
        => array (
           "flag" => "COMSTOP",
           "type" => "integer",
-          "arch" => "all",
           "value" => "1",
           "cfgsec" => "serial"
           ),
@@ -172,7 +171,6 @@ $flag_table = array (
        => array (
           "flag" => "DOWNLOAD_PROTO_TFTP",
           "type" => "on/off",
-          "arch" => "all",
           "value" => "on",
           "cfgsec" => "general"
           ),
@@ -181,7 +179,6 @@ $flag_table = array (
        => array (
           "flag" => "DOWNLOAD_PROTO_HTTP",
           "type" => "on/off",
-          "arch" => "all",
           "value" => "on",
           "cfgsec" => "general"
           ),
@@ -190,7 +187,6 @@ $flag_table = array (
        => array (
           "flag" => "DOWNLOAD_PROTO_FTP",
           "type" => "on/off",
-          "arch" => "all",
           "value" => "off",
           "cfgsec" => "general"
           ),
@@ -210,20 +206,10 @@ $flag_table = array (
        => array ( 
           "flag" => "DNS_RESOLVER",
           "type" => "on/off",
-          "arch" => "all",
           "value" => "on",
           "cfgsec" => "general"
                ),
        
-       //      "NMB_RESOLVER"
-       //      => array (
-       //                "flag" => "NMB_RESOLVER",
-       //                "type" => "on/off",
-       //                "arch" => "all",
-       //                "value" => "off",
-       //                "cfgsec" => "general"
-       //                ),
-       
        // End Name resolution modules
        
        // Begin Image types
@@ -239,7 +225,6 @@ $flag_table = array (
        => array (
           "flag" => "IMAGE_ELF",
           "type" => "on/off",
-          "arch" => "all",
           "value" => "on",
           "cfgsec" => "general"
           ),
@@ -248,7 +233,6 @@ $flag_table = array (
        => array ( 
           "flag" => "IMAGE_NBI",
           "type" => "on/off",
-          "arch" => "all",
           "value" => "on",
           "cfgsec" => "general"
                ),
@@ -257,7 +241,6 @@ $flag_table = array (
        => array (
           "flag" => "IMAGE_MULTIBOOT",
           "type" => "on/off",
-          "arch" => "all",
           "value" => "on",
           "cfgsec" => "general"
           ),
@@ -266,7 +249,6 @@ $flag_table = array (
        => array (
           "flag" => "IMAGE_PXE",
           "type" => "on/off",
-          "arch" => "all",
           "value" => "on",
           "cfgsec" => "general"
           ),
@@ -275,7 +257,6 @@ $flag_table = array (
        => array (
           "flag" => "IMAGE_SCRIPT",
           "type" => "on/off",
-          "arch" => "all",
           "value" => "on",
           "cfgsec" => "general"
           ),
@@ -284,7 +265,6 @@ $flag_table = array (
        => array (
           "flag" => "IMAGE_BZIMAGE",
           "type" => "on/off",
-          "arch" => "all",
           "value" => "on",
           "cfgsec" => "general"
           ),
@@ -304,7 +284,6 @@ $flag_table = array (
        => array (
           "flag" => "IMAGE_CMD",
           "type" => "on/off",
-          "arch" => "all",
           "value" => "on",
           "cfgsec" => "general"
           ),
@@ -313,7 +292,6 @@ $flag_table = array (
        => array (
           "flag" => "AUTOBOOT_CMD",
           "type" => "on/off",
-          "arch" => "all",
           "value" => "on",
           "cfgsec" => "general"
           ),
@@ -322,7 +300,6 @@ $flag_table = array (
        => array (
           "flag" => "NVO_CMD",
           "type" => "on/off",
-          "arch" => "all",
           "value" => "on",
           "cfgsec" => "general"
           ),
@@ -331,7 +308,6 @@ $flag_table = array (
        => array (
           "flag" => "CONFIG_CMD",
           "type" => "on/off",
-          "arch" => "all",
           "value" => "on",
           "cfgsec" => "general"
           ),
@@ -340,7 +316,6 @@ $flag_table = array (
        => array (
           "flag" => "IFMGMT_CMD",
           "type" => "on/off",
-          "arch" => "all",
           "value" => "on",
           "cfgsec" => "general"
           ),
@@ -349,7 +324,6 @@ $flag_table = array (
        => array (
           "flag" => "ROUTE_CMD",
           "type" => "on/off",
-          "arch" => "all",
           "value" => "on",
           "cfgsec" => "general"
           ),
@@ -358,7 +332,6 @@ $flag_table = array (
        => array ( 
           "flag" => "DHCP_CMD",
           "type" => "on/off",
-          "arch" => "all",
           "value" => "on",
           "cfgsec" => "general"
                ),
@@ -367,7 +340,6 @@ $flag_table = array (
        => array ( 
           "flag" => "SANBOOT_CMD",
           "type" => "on/off",
-          "arch" => "all",
           "value" => "on",
           "cfgsec" => "general"
                ),
index f0a3650..41a6e1e 100644 (file)
@@ -1,30 +1,24 @@
 <?php // -*- Mode: PHP; -*-
 
-$ofmts = array  
-    ( "Floppy bootable Image (.dsk)" => "dsk",
-      "Binary ROM Image (.rom)" => "rom",
-      "ISO bootable image (.iso)" => "iso",
-      "ISO bootable image with legacy floppy emulation (.liso)" => "liso",
-      "LILO/GRUB/SYSLINUX loadable Linux kernel format (.lkrn)" => "lkrn",
-      "PXE bootstrap loader format Image (.pxe)" => "pxe",
-      "USB Keychain Disk Image (.usb)" => "usb",
-    );
-
 // Directory containing gPXE source code tree
 $src_dir = "../../src";
 
 // Compute gPXE version based on source tree
 $version = trim ( shell_exec ( "cd $src_dir; make version" ) );
 
+// Email address of person responsible for this website
+$webmaster_email = "webmaster@example.com";
+
+// Files that header and footer text
+$top_inc = "top.php";
+$bottom_inc = "bottom.php";
+
 // Descriptive strings
 $header_title = "ROM-o-matic for gPXE $version";
+$html_tagline = "ROM-o-matic dynamically generates gPXE images";
 $html_title   = "ROM-o-matic for gPXE $version"; 
 $description  = "a dynamic gPXE image generator";
 
-// Filenames of files containing header and footer text
-$top_inc = "top.php";
-$bottom_inc = "bottom.php";
-
 // For emacs:
 // Local variables:
 //  c-basic-offset: 4
index 2a8e3aa..f1aa89c 100644 (file)
--- a/index.php
+++ b/index.php
@@ -1,68 +1,27 @@
 <?php // -*- Mode: PHP; -*-
 
-require_once "config-info.php";
-
-$families = get_families ();
-$nics = get_nics ();
-$flags = get_flags ();
-$encoded_flags = encode_flags ( $flags );
+require_once "utils.php";
 
 // Begin html output
 include_once $top_inc;
 
 ?>
-
-<form action="build.php" method=GET>
+<form action="build.php" method=POST>
   <input type="hidden" name="version" value = "<? echo $version ?>">
-  <input type="hidden" name="F" value="<? echo $encoded_flags ?>">
-  <input type="hidden" name="arch" value="<? echo (isset($_GET['arch']) ? cleanstring($_GET['arch']) : "i386")?>">
-
-<h3>
-ROM-o-matic dynamically generates gPXE images.
-</h3>
-
-To create a gPXE image:
-
-<ol>
-
-<li>
-
-  Choose an output format: <? echo keys_menubox("ofmt", $ofmts, isset($_GET['ofmt']) ? $_GET['ofmt'] : "") ?>
-  <br><br>
-  
-</li>
-
-<li>
-
-  Choose a NIC type: <? echo keys_menubox("nic", $families, isset($_GET['nic']) ? $_GET['nic'] : "") ?>
-  <br><br>
-
-  PCI IDs for available NICs are documented
-  <a href="<? echo $src_dir ?>/bin/NIC" target="_blank">here.</a>
-  <br> You need to know this if you are going to burn/flash a ROM image because
-  <br> PCI IDs on the NIC and ROM must match. If you are making any other
-  <br> kind of image, you only need to match the family (<strong>family</strong>:rom_name)
-  <br> part of the identifier.
-  <br><br>
-
-</li>
-
-<li>
-
-  (optional) To customize image configuration: <input type="submit" name="A" value="Configure">
-  <br><br>
-
-</li>
-
-<li>
-
-  To generate and download an image: <input type="submit" name="A" value="Get ROM">
-  <br><br>
-  
-</li>
-
-</ol>
-
+  <h3>To create an image:</h3>
+  <ol>
+    <? require ( "directions.php" ); ?>
+    <li>
+      (optional) To customize image configuration: 
+      <input type="submit" name="A" value="Customize">
+      <br><br>
+    </li>
+    <li>
+      To generate and download an image: 
+      <input type="submit" name="A" value="Get ROM">
+      <br><br>
+    </li>
+  </ol>
 </form>
 
 <? include_once $bottom_inc ?>
diff --git a/top.php b/top.php
index c73ec97..e3644c3 100644 (file)
--- a/top.php
+++ b/top.php
@@ -1,14 +1,14 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-
 <html>
-
 <head>
-  <link rev="made" href="mailto:webaster@etherboot.org">
+  <link rev="made" href="mailto:<? echo "${webmaster_email}" ?>">
   <meta name="keywords" content="rom, etherboot, gpxe, open source, rom-o-matic.net">
   <title><? echo $header_title ?></title>
   <meta name="description" content="<? echo $description ?>">
 </head>
-
-<h2><? echo $html_title ?></h2>
-
+<h2><? echo "$html_title" ?></h2>
+<hr>
+<h3>
+<h2><? echo "$html_tagline" ?></h2>
+</h3>
 <hr>
index 7d3492d..9e2c80b 100644 (file)
--- a/utils.php
+++ b/utils.php
@@ -1,59 +1,26 @@
 <? // -*- Mode: PHP; -*-
 
-require_once "flag-table.php";
+// Show more runtime errors
+// error_reporting ( -1 );
 
-// Some debugging calls:
-// dump_flag_table ();
-// dump_flag_codes ();
-// dump_flag_table_keys_sorted ();
-// exit ();
+// Include table of user-configurable gPXE options
+require_once "flag-table.php";
 
-// Include shadow-able globals
+// Include user-shadowable globals
 require_once "globals.php";
 
-// Allow shadowing of globals
-include_once "local-config.php";
-
-// echo "$version<br>"; exit ();
-
-function value_key ( $ofmt ) 
-{
-        // Here we decide which $flag_table key is associated with
-        // the variable we want to retrieve.  The reason for this is
-        // that we might want to return a different value based on 
-        // what kind of build we are doing.  In particular, if we ever
-        // Support EFI or LinuxBIOS builds, we might want to return
-        // different values than for PC BIOS builds. In which 
-        // case we could do someting like:
-    //    return (strpos ($ofmt, "LinuxBIOS" ) === false 
-    //            ? "value" : "valuelnx" );
-
-        // For now, we return the key "value", since that is the 
-        // slot that contains the usual value associated with this key
-    return ( "value" );
+// Allow user to shadow globals
+if ( is_file ( 'local-config.php' ) ) { 
+    include "local-config.php";
 }
 
-function snarf_file ( $fname ) 
-{
-    $len = filesize ( $fname );
-    if ( $len > 0 ) {
-        $fp = fopen ( $fname, "rb" );
-        if ( $fp > 0 ) {
-            $buf = fread ( $fp, $len );
-            fclose ( $fp );
-            if ( $buf ) 
-                return ($buf);
-        }
-    }
-    die ( "Unable to get $fname" );
-    return 0;
-}
+list ( $nics, $roms ) = parse_nics_file ();
 
-function get_nics () 
+function parse_nics_file ()
 {
-    global $version, $src_dir;
-
-    $nic = ( isset ( $_GET['nic'] ) ? $_GET['nic'] : '' );
+    // Extract NIC families and associated ROM PCI IDs from 
+    // the src/bin/NIC file.
+    global $src_dir;
 
     $fd = fopen( "$src_dir/bin/NIC", "r" );
 
@@ -63,125 +30,52 @@ function get_nics ()
     }
 
     $nics = array ();
-    $family = "";
+    $roms = array ();
+    $nic = "";
 
     while ( !feof ( $fd ) ) {
 
         $line = trim ( fgets ( $fd, 200 ) );
 
-        if ( strpos ( $line, "family" ) === 0 ) {
-
-            list ( $dummy, $family ) = split( "[ \t]+", $line );
-            settype ( $family, "string" );
-
-        } else if ( $line != "" && $line[0] != '#' ) {
+        $first_eight_chars = substr ( $line, 0, 8 );
+        settype ( $first_eight_chars, "string" );
 
-            list ( $rom, $pci_ids ) = split ( "[ \t]+", $line );
-            settype ( $rom, "string" );
+        if ( strpos ( $first_eight_chars, "family" ) === 0 ) {
 
-            if ( $pci_ids == "-" ) 
-                                $pci_ids = "";
-
-            $fam_name = substr ( $family, strrpos ( $family, "/" ) + 1, 
-                         strlen ( $family ) - strrpos ( $family, "/" ) + 1 );
-            $option = ( $pci_ids ? "$fam_name:$rom -- [$pci_ids]" : "$fam_name:$rom" );
-
-            // * Kludge - fix incoming $nic if any.
-            if ( $nic == $rom ) 
-                                $nic = $option;
+            // get pathname of NIC driver
+            list ( $dummy, $nic ) = split( "[ \t]+", $line );
+            settype ( $nic, "string" );
+            
+            // extract filename name of driver from pathname
+            $nic = substr ( $nic, strrpos ( $nic, "/" ) + 1, 
+                          strlen ( $nic ) - strrpos ( $nic, "/" ) + 1 );
 
-            // ISA drivers are per-family, PCI are per-ROM. If ever decide
-            // to cache the drivers, can use this key.
-            $nics[$option] = ( $pci_ids ? "PCI:" . $rom : "ISA:" . $family );
+            $nics[$nic] = $nic;
 
-            // echo $nics array for debugging
-            // echo "\$nics[$option] "." -> ".$nics[$option]."<br>";
+            // For each ISA NIC, there can only be one ROM variant
+            $roms[$nic] = $nic;
         }
-    }
-
-    $nics["gpxe:all-drivers"] = "PCI:gpxe";
-    fclose ( $fd );
-    ksort ( $nics );
-    return( $nics );
-}
-
-function get_families () 
-{
-    global $version, $src_dir;
-
-    $nic = ( isset ( $_GET['nic'] ) ? $_GET['nic'] : '' );
 
-    $fd = fopen( "$src_dir/bin/NIC", "r" );
+        // If the first 8 digits of the line are hex digits
+        // add this rom to the current nic family.
 
-    if ( $fd < 1 ) {
-        trigger_error ( "Missing NIC Config Info" );
-        exit ();
-    }
-
-    $families = array ();
-    $family = "";
-
-    while ( !feof ( $fd ) ) {
-
-        $line = trim ( fgets ( $fd, 200 ) );
-
-        if ( strpos ( $line, "family" ) === 0 ) {
-
-            list ( $dummy, $family ) = split( "[ \t]+", $line );
-            $fam_name = substr ( $family, strrpos ( $family, "/" ) + 1, 
-                         strlen ( $family ) - strrpos ( $family, "/" ) + 1 );
-            settype ( $family, "string" );
-            
-            $families[$fam_name] = $fam_name;
+        if (    ( strlen ( $first_eight_chars ) == 8 ) 
+             && ( ctype_xdigit ( $first_eight_chars ) )
+             && ( $nic != "" ) ) {
+        
+            $roms[$first_eight_chars] = $nic;
         }
     }
     fclose ( $fd );
 
-    // Add special cases
-    $families["all-drivers"] = "gpxe";
-        
-    ksort ( $families );
-    return ( $families );
-}
+    // add special cases
+    $nics["undi"] = "undionly";
+    $nics["gpxe-all-drivers"] = "gpxe";
 
-function get_nicfile () 
-{
-    global $ofmts;
-
-    $nic = $_GET['nic'];
-    $ofmt = $_GET['ofmt'];
-
-    $n = strpos ( $nic, " " );
-    $family = substr ( $nic, 0, strpos ( $nic,":" ) );
-
-    $rom = ( $n > 0 ? 
-         substr ( $nic, strpos ( $nic, ":" ) + 1, 
-                 $n - ( strlen ( $family ) + 1 ) ) :  
-                  $family );
-
-    $ftype = $ofmts[$ofmt];
-    if ( $ftype == "" ) $ftype = "dsk"; 
-
-    // if .rom format is requested, return rom name,
-    //   since .rom images are PCI ID specific, and 
-    //   rules only exist to build bin/$rom for Binary
-    //    ROM images types
-    if ( $ftype == "rom" )
-        $retval = cleanstring ( $rom . "." . $ftype );
-    else
-        $retval = cleanstring ( $family . "." . $ftype );
-
-    // Let's take a look at what was chosen.
-    //  echo "strpos ( \$nic, \":\" ) ->" . strpos ( $nic, ":" ) . "<br>";
-    //  echo "\$n ->" . "$n" . "<br>";
-    //  echo "\$nic ->" . "|$nic|" . "<br>";
-    //  echo "\$rom ->" . "|$rom|" . "<br>";
-    //  echo "\$family ->" . "|$family|" . "<br>";
-    //  echo "\$ftype ->" . "|$ftype|" . "<br>";
-    //  echo "\$retval ->" . "|$retval|" . "<br>";
-    //  exit();
-
-    return ( $retval );
+    // put NICs in nice alpha order for menu
+    ksort ( $nics );
+
+    return ( array ( $nics, $roms ) );
 }
 
 function hidden ( $flag, $value ) 
@@ -226,101 +120,25 @@ function keys_menubox ( $name, $options, $value )
     return $s . "</select>";
 }  
 
-function encode_flags ( $flags ) 
-{
-    // Encode flags to keep size down, so can use GET's instead of POST's
-    // Note that the value may need to be urlencoded.
-
-    global $flag_table;
-
-    $s = "";
-
-       foreach ( $flags as $flag => $value ) {
-        $prop = $flag_table[$flag];
-        $type = $prop["type"];
-        $s .= $prop["code"];
-
-        if ( $type != "on/off" ) {
-            $n = strlen ( $value );
-            $nstr = strval ( $n );
-
-            if ( $n < 10 ) 
-                $nstr = "0" . $nstr;
-
-            if ( $n >= 80 ) 
-                die ( "Value too long!" );
-
-            $s .= $nstr . $value;
-        }
-    }
-    return $s;
-}
-
-function decode_flags_into ( $s, $flags ) 
-{
-    global $flag_codes;
-    $len = strlen ( $s );
-
-    $pos = 0;
-    while ( $pos < $len ) {
-
-        $code = substr ( $s, $pos, 2 );
-        $pos += 2;
-        $prop = $flag_codes[$code];
-        $flag = $prop["flag"];
-        $value = "on";
-        $type = $prop["type"];
-
-        if ( $prop["type"] != "on/off" ) {
-            $n = intval ( substr ( $s, $pos, 2 ) );
-            $pos += 2;
-            $value = substr ( $s, $pos, $n );
-            $pos += $n;
-        }
-        $flags[$flag] = $value;
-    }
-    return $flags;
-}
-
 function default_flags () 
 {
     global $flag_table;
-
-    if ( isset ( $_GET["F"] ) )
-        $F = $_GET["F"];
-
-    if ( isset ( $_GET["nic"] ) )
-        $nic = $_GET["nic"];
-
-    if ( isset ( $_GET["nicfile"] ) )
-        $nicfile = $_GET["nicfile"];
-
-    if ( isset ( $_GET["ofmt"] ) )
-        $ofmt = $_GET["ofmt"];
-
-    if ( isset ( $_GET["arch"] ) )
-        $arch = $_GET["arch"];
-
+    
     $flags = array ();
-    if ( isset ( $F ) && $F != "ignore" && isset ( $arch ) &&
-         ( ( isset ( $nic ) && isset ( $ofmt ) ) || isset ( $nicfile ) ) ) {
-        $vkey = value_key($ofmt);
 
-               foreach ( $flag_table as $key => $props ) {
+    foreach ( $flag_table as $key => $props ) {
 
-            $farch = isset ( $props["arch"] ) ? $props["arch"] : "";
+        $flag  = $props["flag"];
+        $type  = $props["type"];
 
-            if ( isset ( $arch ) && ( $farch == "all" || $farch == $arch ) ) {
+        // Fields like headers have no "value" property
+        $value = isset ( $props["value"] ) ? $props['value'] : '';
 
-                $flag = $props["flag"];
-                $type = $props["type"];
-                $value = ( isset ( $props[$vkey] ) ? $props[$vkey] : $props["value"] );
-                if ( $type != "on/off" || $value == "on" ) {
-                    $flags[$flag] = $value;
-                }
+        if ( $value != '' ) {
+            if ( $type != "on/off" || $value == "on" ) {
+                $flags[$flag] = $props["value"];
             }
         }
-        $flags = decode_flags_into ( $F, $flags );
     }
     return $flags;
 }
@@ -328,15 +146,15 @@ function default_flags ()
 function get_flags () 
 {
     global $flag_table;
+    
     $flags = default_flags ();
 
-    // echo "<p>Flags in get_flags (): </p>";
-    // show_flags ( $flags );
-
     foreach ( $flag_table as $key => $props ) {
+
         $flag = $props["flag"];
-        if ( isset ( $_GET["$flag"] ) ) {
-            $flags[$flag] = $_GET["$flag"];
+        
+        if ( isset ( $_POST["$flag"] ) ) {
+            $flags[$flag] = $_POST["$flag"];
         }
     }
     return $flags;
@@ -344,19 +162,13 @@ function get_flags ()
 
 function echo_flags ( $flags )
 {
-    global $version;
     global $flag_table;
 
-    $arch = isset ( $_GET['arch'] ) ? $_GET['arch'] : '';
-
     echo "<table>\n";
 
        foreach ( $flag_table as $key => $props ) {
 
-        $farch = isset ( $props["arch"] ) ? $props["arch"] : "";
-
         // Hide parameters from users that should not be changed.
-
         $hide_from_user = isset ( $props["hide_from_user"] ) ? $props["hide_from_user"] : "no";
 
         $flag = $props["flag"];
@@ -368,50 +180,44 @@ function echo_flags ( $flags )
 
             // Hidden flags cannot not be set by the user.  We use hidden form
             // fields to keep them at their default values.
-            if ( $type != "header" && ( $farch == "all" || $farch == $arch ) ) {
+            if ( $type != "header" ) {
                 echo hidden ( $flag, $value );
             }
-
+            
         } else {
+            
+            // Flag (gPXE compile option) should be displayed to user
 
-            if ( $type == "header" || $farch == "all" || $farch == $arch ) {
-      
-                if ( $type == "header" ) {
-  
-                    $label = $props["label"];
-                    echo "<td colspan=2><hr><h3>$label</h3><hr></td>";
-  
-                } else if ($type == "on/off" ) {
-  
-                    echo "<td>", checkbox($flag, $value), "</td><td><b>$flag</b></td>";
-  
-                } else {        // no checkbox
-  
-                    echo "<td>&nbsp;</td><td><b>$flag: </b>";
-  
-                    if ($type == "choice" ) {
-                        $options = $props["options"];
-                        echo menubox($flag, $options, $value);
-                    }
-  
-                    else {
-                        echo textbox($flag, $value, ($type == "integer" ? 5 : 25));
-                    }
-  
-                    echo "</td>";
-  
-                }
-  
-                echo "</tr>\n";
-  
-                if ( $type != "header" ) {
+            if ( $type == "header" ) {
+
+                $label = $props["label"];
+                echo "<td colspan=2><hr><h3>$label</h3><hr></td>";
+
+            } else if ($type == "on/off" ) {
+
+                echo "<td>", checkbox ( $flag, $value ), "</td><td><b>$flag</b></td>";
+
+            } else {   // don't display checkbox for non-on/off flags
+
+                echo "<td>&nbsp;</td><td><b>$flag: </b>";
+
+                if ($type == "choice" ) {
+                    $options = $props["options"];
+                    echo menubox($flag, $options, $value);
 
-                    echo "<tr><td>&nbsp;</td>";
-                    echo "<td>\n";
-                    include_once "doc/$flag.html";
-                    echo "\n</td></tr>\n";
+                } else {
 
+                    echo textbox($flag, $value, ($type == "integer" ? 5 : 25));
                 }
+                echo "</td>";
+            }
+            echo "</tr>\n";
+
+            if ( $type != "header" ) {
+                echo "<tr><td>&nbsp;</td>";
+                echo "<td>\n";
+                include_once "doc/$flag.html";
+                echo "\n</td></tr>\n";
             }
         }
     }
@@ -466,34 +272,6 @@ function get_cfgsecs ()
     return ( $cfgsecs );
 }
 
-function write_config_file ( $fname, $arch, $flags ) 
-{
-    global $flag_table;
-
-    $cfgsecs = get_cfgsecs ();
-
-    $fp = fopen ( $fname, "wb" );
-    if ( $fp <= 0 ) {
-        die ( "Unable to open $fname file for output!" );
-    }
-
-    foreach ( $cfgsecs as $cfgsec ) {
-
-        fwrite ( $fp, "/* @BEGIN ${cfgsec}.h \n*/ \n\n" );
-
-        foreach ( $flags as $key => $value ) {
-
-            // When the flag matches this section name, write it out
-            if ( $flag_table[$key]["cfgsec"] == $cfgsec ) {
-                fwrite ( $fp, pprint_flag ( $key, $value ) . "\n" );
-            } 
-
-        }
-        fwrite ( $fp, "\n/* @END ${cfgsec}.h \n*/ \n\n" );
-    }
-    fclose($fp);
-}
-
 function write_gpxe_config_files ( $config_dir, $flags ) 
 {
     global $flag_table;
@@ -554,52 +332,23 @@ function cleanstring ( $s )
     return $result;
 }
 
-function copydir ( $src, $dst ) 
-{
-    if ( !mkdir ( $dst, 0700 ) ) {
-        die ( "mkdir failed" );
-    }
-
-    $dp = opendir ( $src );
-    if ( $dp < 1 ) {
-        die ( "opendir failed" );
-    }
-
-    while ( $file = readdir ( $dp ) ) {
-
-        if ( is_dir ( "$src/$file" ) ) {
-
-            if ($file[0] != "." ) {
-                copydir ( "$src/$file", "$dst/$file" );
-            }
-        } else {
-
-            copy ( "$src/$file", "$dst/$file" );
-        }
-    }
-    closedir ( $dp );
-}
-
 function mktempcopy ( $src, $dst ) 
 {
     if ( $src[0] != "/" ) {
         $src = dirname ( $_SERVER['SCRIPT_FILENAME'] ) . "/" . $src;
     }
 
-    $dir = tempnam ( $dst, "ROM" );
+    $dir = tempnam ( $dst, "MDCROM" );
     unlink( $dir );
 
-    //  copydir ( $src, $dir );
-
     exec ( "/bin/cp -a '$src' '$dir' 2>&1", $cpytxt, $status );  
-
     if ( $status != 0 ) {
         die ( "src directory copy failed!" );
     }
     return ( $dir );
 }
 
-function deltempdir ( $dir ) 
+function deltempdir ( $dir )
 {
     $dp = opendir ( $dir );
     if ($dp < 1) {
@@ -623,25 +372,35 @@ function deltempdir ( $dir )
     }
 }
 
-// Debugging functions
-
-function debug_info () 
+function curDirURL () 
 {
-    $F = $_GET['F'];
-    $nic = $_GET['nic'];
-    $ofmt = $_GET['ofmt'];
+        $dir = dirname ( $_SERVER['PHP_SELF'] );
 
-    $s = "F=\"" . htmlentities($F) . "\"<br>\n";
-    $s .= "nic=\"" . htmlentities($nic) . "\"<br>\n";
-    $s .= "ofmt=\"" . htmlentities($ofmt) . "\"<br>\n";
+        if ( $dir == "." || $dir == "/" ) {
+                $dir = "";
+        }
 
-    return $s;
+        $isHTTPS = ( isset ( $_SERVER["HTTPS"] ) && $_SERVER["HTTPS"] == "on" );
+        $port = ( isset($_SERVER["SERVER_PORT"] ) && 
+                          ( ( !$isHTTPS && $_SERVER["SERVER_PORT"] != "80" ) || 
+                                ( $isHTTPS  && $_SERVER["SERVER_PORT"] != "443" ) ) );
+
+        $port = ( $port ) ? ':' . $_SERVER["SERVER_PORT"] : '';
+
+        $dest = ( $isHTTPS ? 'https://' : 'http://' ) .
+                $_SERVER["SERVER_NAME"] . $dir . "/";
+
+        return $dest;
 }
 
-function showflags ( $flags ) 
+// Debugging functions
+
+function show_flags ( $flags ) 
 {
+    echo ( "\$flags contains " . count ( $flags ) . " elements:" . "<br>" );
+
        foreach ( $flags as $key => $flag ) {
-        print ( "flag[".$key."]="."\"$flag\""."<br>" );
+        echo ( "\$flags[" . $key . "]=" . "\"$flag\"" . "<br>" );
     }
 }
 
@@ -682,43 +441,6 @@ function dump_flag_codes ()
     }
 }
 
-function curPageURL () 
-{
-    $isHTTPS = ( isset ( $_SERVER["HTTPS"] ) && $_SERVER["HTTPS"] == "on" );
-
-    $port = ( isset($_SERVER["SERVER_PORT"] ) && 
-          ( ( !$isHTTPS && $_SERVER["SERVER_PORT"] != "80" ) || 
-            ( $isHTTPS  && $_SERVER["SERVER_PORT"] != "443" ) ) );
-
-    $port = ( $port ) ? ':' . $_SERVER["SERVER_PORT"] : '';
-
-    $url = ( $isHTTPS ? 'https://' : 'http://' ) .
-        $_SERVER["SERVER_NAME"] . $port . $_SERVER["REQUEST_URI"];
-
-    return $url;
-}
-
-function curDirURL () 
-{
-        $dir = dirname ( $_SERVER['PHP_SELF'] );
-
-        if ( $dir == "." || $dir == "/" ) {
-                $dir = "";
-        }
-
-        $isHTTPS = ( isset ( $_SERVER["HTTPS"] ) && $_SERVER["HTTPS"] == "on" );
-        $port = ( isset($_SERVER["SERVER_PORT"] ) && 
-                          ( ( !$isHTTPS && $_SERVER["SERVER_PORT"] != "80" ) || 
-                                ( $isHTTPS  && $_SERVER["SERVER_PORT"] != "443" ) ) );
-
-        $port = ( $port ) ? ':' . $_SERVER["SERVER_PORT"] : '';
-
-        $dest = ( $isHTTPS ? 'https://' : 'http://' ) .
-                $_SERVER["SERVER_NAME"] . $dir . "/";
-
-        return $dest;
-}
-
 // For emacs:
 // Local variables:
 //  c-basic-offset: 4