From: Thierry Parmentelat Date: Wed, 13 Jan 2010 16:52:45 +0000 (+0000) Subject: first draft of a deployment-friendly bootmanager X-Git-Tag: nodeconfig-5.0-1^2~10 X-Git-Url: http://git.onelab.eu/?p=nodeconfig.git;a=commitdiff_plain;h=5ca116d85c6f2f068d50525fa52ec3b0ca8a9ed3 first draft of a deployment-friendly bootmanager attempt to make some sense of the various locations used move the nodeconfig script, as well as the plc.d script, into bootmanager, where it belongs --- diff --git a/boot/index.php b/boot/index.php deleted file mode 100755 index 9afe279..0000000 --- a/boot/index.php +++ /dev/null @@ -1,80 +0,0 @@ - -// Copyright (C) 2006 The Trustees of Princeton University -// -// $Id$ $ -// - -// Get admin API handle -require_once 'plc_api.php'; -global $adm; - -// Default bootmanager -$bootmanager = "bootmanager.sh.sgn"; - -// Look up the node -$interfaces = $adm->GetInterfaces(array('ip' => $_SERVER['REMOTE_ADDR'])); -if (!empty($interfaces)) { - $nodes = $adm->GetNodes(array($interfaces[0]['node_id'])); - if (!empty($nodes)) { - $node = $nodes[0]; - } -} - -if (isset($node)) { - // Allow very old nodes that do not have a node key in their - // configuration files to use their "boot nonce" instead. The boot - // nonce is a random value generated by the node itself and POSTed - // by the Boot CD when it requests the Boot Manager. This is - // obviously not very secure, so we only allow it to be used if the - // requestor IP is the same as the IP address we have on record for - // the node. - - // 3.x CDs post 'version', 2.x CDs post 'id'. - if (!empty($_REQUEST['version'])) { - $version = trim($_REQUEST['version']); - } elseif (!empty($_REQUEST['id'])) { - $version = trim($_REQUEST['id']); - } else { - $version = "2.0"; - } - - if (empty($node['key']) && !empty($_REQUEST['nonce'])) { - // 3.x CDs post the boot nonce in ASCII hex. 2.x CDs post it in binary. - if (strstr($version, "2.0") === FALSE) { - // 3.x CDs post a trailing newline...sigh - $nonce = trim($_REQUEST['nonce']); - } else { - $nonce = bin2hex($_REQUEST['nonce']); - } - $adm->UpdateNode($node['node_id'], array('boot_nonce' => $nonce)); - } - - // Custom bootmanager for the node, e.g. - // planetlab-1.cs.princeton.edu_bootmanager.sh.sgn - $bootmanagers = array(strtolower($node['hostname']) . "_" . $bootmanager); - - // Custom bootmanager for the node group, e.g. - // alpha_bootmanager.sh.sgn - if (!empty($node['nodegroup_ids'])) { - $nodegroups = $adm->GetNodeGroups($node['nodegroup_ids']); - foreach ($nodegroups as $nodegroup) { - $bootmanagers[] = strtolower($nodegroup['groupname']) . "_" . $bootmanager; - } - } -} - -// Default bootmanager -$bootmanagers[] = $bootmanager; - -foreach ($bootmanagers as $bootmanager) { - if (file_exists($bootmanager)) { - readfile($bootmanager); - exit(); - } -} - -?> diff --git a/boot/uudecode.gz b/boot/uudecode.gz deleted file mode 100755 index 040c34f..0000000 Binary files a/boot/uudecode.gz and /dev/null differ