Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
appnotes:authmenus [2011/04/26 20:19]
genec [vesamenu.c32 current] dirname removes trailing / but leaves a "/" alone
appnotes:authmenus [2013/03/04 15:34]
genec Fix cmd.c32 -> gpxecmd.c32
Line 20: Line 20:
   ​   ​
   header ( "​Content-type:​ text/​plain"​ );   header ( "​Content-type:​ text/​plain"​ );
 +  echo "#​!gpxe\n";​
 +  ​
 +  $proto = "​https";​
 +  // Comment out/remove the following if strictly using HTTPS
 +  if (!isset($_SERVER["​HTTPS"​]))
 +    $proto = "​http";​
 +  ​
 +  // This assigns the host that gPXE should use using the most logical variables
 +  if ( $_SERVER["​HTTP_HOST"​] != ""​ ) {
 +    $host=$_SERVER["​HTTP_HOST"​];​
 +  } else {
 +    if ( $_SERVER["​SERVER_NAME"​] != 0) {
 +  $host=$_SERVER["​SERVER_NAME"​];​
 +    } else {
 +  $host=$_SERVER["​SERVER_ADDR"​];​
 +    }
 +  }
 +  ​
 +  // Comment out/remove the following if you are running on a standard port
 +  if (!((! isset($_SERVER["​HTTPS"​]) ) && ($_SERVER["​SERVER_PORT"​] == 80))
 +    && !(isset($_SERVER["​HTTPS"​]) && ($_SERVER["​SERVER_PORT"​] == 443)) ){
 +      if (strrpos($host,​ ":"​) == FALSE)
 +        $host=$host.":"​.$_SERVER["​SERVER_PORT"​];​
 +  }
   ​   ​
   $uri=$_SERVER["​REQUEST_URI"​];​   $uri=$_SERVER["​REQUEST_URI"​];​
Line 27: Line 51:
   echo "​imgfree\n";​   echo "​imgfree\n";​
   echo "​login\n";​   echo "​login\n";​
-  echo "set 209:string bootcfg.php";​+  echo "set 209:string bootcfg.php\n";
   echo "set 210:string ".   echo "set 210:string ".
-        ​"https://​\${username:​uristring}:​\${password:​uristring}@"​. +       ​$proto."://​\${username:​uristring}:​\${password:​uristring}@"​. 
-        $_SERVER["​SERVER_NAME"​].$dir."​\n";​ +       ​$host.$dir."​\n";​ 
-  echo "chain \${210:​string}pxelinux.0";​+  echo "chain \${210:​string}pxelinux.0\n";
   ?>   ?>
  
Line 46: Line 70:
   ?>   ?>
  
 +Selecting this method will require that you use gpxecmd.c32 to execute gPXE commands and scripts.
 ==== vesamenu.c32 directly ==== ==== vesamenu.c32 directly ====
 You will need a file "​boot.php"​ containing You will need a file "​boot.php"​ containing
  
-    ​<?php +  ​<?php 
-     +   
-    header ( "​Content-type:​ text/​plain"​ ); +  header ( "​Content-type:​ text/​plain"​ ); 
-     +   
-    echo "#​!gpxe\n";​ +  ​$uri=$_SERVER["​REQUEST_URI"​];​ 
-    echo "​imgfree\n";​ +  $dir=substr ( $uri, 0, strrpos ($uri, "/"​) + 1); 
-    echo "​login\n";​ +   
-    echo "chain ". +  ​echo "#​!gpxe\n";​ 
-          "​https://​\${username:​uristring}:​\${password:​uristring}@"​. +  echo "​imgfree\n";​ 
-          $_SERVER["​SERVER_NAME"]. +  echo "​login\n";​ 
-          dirname ( $_SERVER["​REQUEST_URI"​] )+  echo "chain ". 
-          "/vesamenu.c32 menu.php\n";​ +       ​"​https://​\${username:​uristring}:​\${password:​uristring}@"​. 
-    ?>+       ​$_SERVER["​HTTP_HOST"].$dir
 +       ​"​vesamenu.c32 menu.php\n";​ 
 +  ?>
  
 In order to use vesamenu.c32 directly from gPXE, you must use Syslinux-3.86 from [[http://​www.kernel.org/​pub/​linux/​utils/​boot/​syslinux/​3.xx/​]] and not the latest version. In order to use vesamenu.c32 directly from gPXE, you must use Syslinux-3.86 from [[http://​www.kernel.org/​pub/​linux/​utils/​boot/​syslinux/​3.xx/​]] and not the latest version.
Line 70: Line 97:
     filename "​https://​my.web.server/​boot/​boot.php";​     filename "​https://​my.web.server/​boot/​boot.php";​
  
-Download the latest //​syslinux//​ tarball from [[http://​www.kernel.org/​pub/​linux/​utils/​boot/​syslinux/​]] and extract it.  Copy the files //​com32/​menu/​vesamenu.c32//​ and //​com32/​modules/​cmd.c32// into the "​boot"​ directory on the web server.+Download the latest //​syslinux//​ tarball from [[http://​www.kernel.org/​pub/​linux/​utils/​boot/​syslinux/​]] and extract it.  Copy the files //​com32/​menu/​vesamenu.c32//​ and //​com32/​modules/​gpxecmd.c32// into the "​boot"​ directory on the web server.
  
 ===== Setup (interesting part) ===== ===== Setup (interesting part) =====
Line 107: Line 134:
     function sanboot ( $label, $root_path ) {     function sanboot ( $label, $root_path ) {
       label ( $label );       label ( $label );
-      echo " ​ kernel ​cmd.c32\n";​+      echo " ​ kernel ​gpxecmd.c32\n";​
       echo " ​ append sanboot "​.$root_path."​\n";​       echo " ​ append sanboot "​.$root_path."​\n";​
       echo "​\n";​       echo "​\n";​
Line 208: Line 235:
     label item1     label item1
       menu label ^1 MS-DOS 6.22       menu label ^1 MS-DOS 6.22
-      kernel ​cmd.c32+      kernel ​gpxecmd.c32
       append sanboot iscsi:​chipmunk.tuntap::::​iqn.2007-07.chipmunk:​msdos622       append sanboot iscsi:​chipmunk.tuntap::::​iqn.2007-07.chipmunk:​msdos622
     ​     ​
     label item2     label item2
       menu label ^2 Windows 2k3       menu label ^2 Windows 2k3
-      kernel ​cmd.c32+      kernel ​gpxecmd.c32
       append sanboot iscsi:​chipmunk.tuntap::::​iqn.2007-07.chipmunk:​win2k3       append sanboot iscsi:​chipmunk.tuntap::::​iqn.2007-07.chipmunk:​win2k3
     ​     ​
Line 243: Line 270:
  
 Note that Windows imposes a minimum password length of 12 characters, and a maximum of 16 characters, for iSCSI authentication;​ this scheme will silently break unless your password policy enforces an appropriate min/max password length of 12<​-->​16 characters. Note that Windows imposes a minimum password length of 12 characters, and a maximum of 16 characters, for iSCSI authentication;​ this scheme will silently break unless your password policy enforces an appropriate min/max password length of 12<​-->​16 characters.
- 
- 

QR Code
QR Code appnotes:authmenus (generated for current page)