You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vcl.apache.org by jf...@apache.org on 2014/09/11 18:01:49 UTC
svn commit: r1624325 [8/13] - in /vcl/trunk/web: ./ .ht-inc/
.ht-inc/authmethods/ css/ js/ js/resources/
Modified: vcl/trunk/web/.ht-inc/serverprofiles.php
URL: http://svn.apache.org/viewvc/vcl/trunk/web/.ht-inc/serverprofiles.php?rev=1624325&r1=1624324&r2=1624325&view=diff
==============================================================================
--- vcl/trunk/web/.ht-inc/serverprofiles.php (original)
+++ vcl/trunk/web/.ht-inc/serverprofiles.php Thu Sep 11 16:01:48 2014
@@ -29,245 +29,30 @@
////////////////////////////////////////////////////////////////////////////////
function serverProfiles() {
global $user;
+ if(! in_array("serverProfileAdmin", $user["privileges"])) {
+ print "No access to manage server profiles.<br>\n";
+ return;
+ }
print "<div dojoType=\"dojo.data.ItemFileWriteStore\" jsId=\"profilesstore\" ";
print "data=\"profilesstoredata\"></div>\n";
- if(in_array("serverProfileAdmin", $user["privileges"])) {
- print "<div id=\"mainTabContainer\" dojoType=\"dijit.layout.TabContainer\"\n";
- print " style=\"width:630px;height:600px\">\n";
- }
- print "<div id=\"deploytab\" dojoType=\"dijit.layout.ContentPane\" title=\"Deploy Server\" selected=\"true\">\n";
- $data = deployHTML();
+ print "<div id=\"mainTabContainer\" dojoType=\"dijit.layout.TabContainer\"\n";
+ print " style=\"width:630px;height:600px\">\n";
+
+ print "<div id=\"manageprofiles\" dojoType=\"dijit.layout.ContentPane\" title=\"Manage Profiles\">\n";
+ $data = manageProfilesHTML();
print $data['html'];
- print "</div>\n"; # deploy tab
+ print "</div>\n"; # manageprofiles tab
- if(in_array("serverProfileAdmin", $user["privileges"])) {
- print "<div id=\"manageprofiles\" dojoType=\"dijit.layout.ContentPane\" title=\"Manage Profiles\">\n";
- $data = manageProfilesHTML();
- print $data['html'];
- print "</div>\n"; # manageprofiles tab
-
- print "<div id=\"grouping\" dojoType=\"dijit.layout.ContentPane\" title=\"Manage Grouping\">\n";
- $data = manageGroupingHTML();
- print $data['html'];
- print "</div>\n"; # grouping tab
- }
+ print "<div id=\"grouping\" dojoType=\"dijit.layout.ContentPane\" title=\"Manage Grouping\">\n";
+ $data = manageGroupingHTML();
+ print $data['html'];
+ print "</div>\n"; # grouping tab
print "</div>\n"; # tab container
}
////////////////////////////////////////////////////////////////////////////////
///
-/// \fn deployHTML()
-///
-/// \return an array with one element with a key of 'html' whose value is the
-/// html content for the deploy tab
-///
-/// \brief builds the html for the deploy tab
-///
-////////////////////////////////////////////////////////////////////////////////
-function deployHTML() {
- global $user, $skin;
- $profiles = getUserResources(array("serverCheckOut"), array("available"));
-
- $h = '';
- $h .= "<h2>Deploy Server</h2>\n";
- $h .= "<span id=\"deployprofileslist\"";
- if(! count($profiles['serverprofile']))
- $h .= " class=\"hidden\"";
- $h .= ">\n";
- $h .= "Profile: ";
- $h .= "<select dojoType=\"dijit.form.Select\" id=\"deployprofileid\" ";
- $h .= "onChange=\"deployProfileChanged();\" sortByLabel=\"true\"></select><br>\n";
- $h .= "<fieldset>\n";
- $h .= "<legend>Description:</legend>\n";
- $h .= "<div id=\"deploydesc\"></div>\n";
- $h .= "</fieldset>\n";
- $cont = addContinuationsEntry('AJserverProfileData', array('mode' => 'checkout'));
- $h .= "<button dojoType=\"dijit.form.Button\" id=\"deployFetchProfilesBtn\">\n";
- $h .= " Apply Profile\n";
- $h .= " <script type=\"dojo/method\" event=onClick>\n";
- $h .= " getServerProfileData('$cont', 'deployprofileid', getServerProfileDataDeployCB);\n";
- $h .= " </script>\n";
- $h .= "</button>";
- $h .= "<br><hr><br>\n";
- $h .= "<input type=\"hidden\" id=\"appliedprofileid\" value=\"0\">\n";
- $h .= "</span>\n"; # deployprofileslist
-
- $h .= "<div id=\"deployprofilediv\">\n";
- $h .= "<table summary=\"\">\n";
- $h .= " <tr>\n";
- $h .= " <th align=right>Name:</th>\n";
- $h .= " <td><input type=\"text\" name=\"deployname\" id=\"deployname\" ";
- $h .= "dojoType=\"dijit.form.TextBox\" style=\"width: 400px\"></td>\n";
- $h .= " </tr>\n";
- $h .= " <tr>\n";
- $h .= " <th align=right>Environment:</th>\n";
- $h .= " <td>\n";
- $resources = getUserResources(array("imageAdmin", "imageCheckOut"));
- $images = removeNoCheckout($resources["image"]);
- $extraimages = getServerProfileImages($user['id']);
- foreach($extraimages as $id => $image)
- $images[$id] = $image;
- uasort($images, 'sortKeepIndex');
- if(USEFILTERINGSELECT && count($images) < FILTERINGSELECTTHRESHOLD) {
- $h .= " <select dojoType=\"dijit.form.FilteringSelect\" id=\"deployimage\" ";
- $h .= "style=\"width: 400px\" queryExpr=\"*\${0}*\" required=\"true\" ";
- $h .= "highlightMatch=\"all\" autoComplete=\"false\">\n";
- }
- else
- $h .= " <select dojoType=\"dijit.form.Select\" id=\"deployimage\">\n";
- foreach($images as $id => $image) {
- $image = preg_replace('/&/', '&', $image);
- $h .= " <option value=\"$id\">$image</option>\n";
- }
- $h .= " </select>\n";
- $h .= " </td>\n";
- $h .= " </tr>\n";
- /*$h .= " <tr>\n";
- $h .= " <th align=right>Fixed IP Address:</th>\n";
- $h .= " <td><input type=\"text\" id=\"deployfixedIP\" ";
- $h .= "dojoType=\"dijit.form.ValidationTextBox\" ";
- $h .= "regExp=\"([0-9]{1,3}\\.){3}([0-9]{1,3})\">(optional)</td>\n";
- $h .= " </tr>\n";*/
- /*$h .= " <tr>\n";
- $h .= " <th align=right>Fixed MAC Address:</th>\n";
- $h .= " <td><input type=\"text\" id=\"deployfixedMAC\" ";
- $h .= "dojoType=\"dijit.form.ValidationTextBox\" ";
- $h .= "regExp=\"([0-9a-fA-F]{2}:){5}([0-9a-fA-F]{2})\">(optional)</td>\n";
- $h .= " </tr>\n";*/
- $h .= " <tr>\n";
- $h .= " <th align=right>Admin User Group:</th>\n";
- $h .= " <td>\n";
- $admingroups = getUserGroups();
- $logingroups = $admingroups;
- /*$admingroups = getUserEditGroups($user['id']);
- $logingroups = $admingroups;
- $extraadmingroups = getServerProfileGroups($user['id'], 'admin');
- foreach($extraadmingroups as $id => $group)
- $admingroups[$id] = $group;
- uasort($admingroups, 'sortKeepIndex');*/
- if(USEFILTERINGSELECT && count($admingroups) < FILTERINGSELECTTHRESHOLD) {
- $h .= " <select dojoType=\"dijit.form.FilteringSelect\" id=\"deployadmingroup\" ";
- $h .= "style=\"width: 400px\" queryExpr=\"*\${0}*\" required=\"true\" ";
- $h .= "highlightMatch=\"all\" autoComplete=\"false\">\n";
- }
- else
- $h .= " <select id=\"deployadmingroup\">\n";
- $h .= " <option value=\"0\">None</option>\n";
- foreach($admingroups as $id => $group) {
- if($group['name'] == 'None' || preg_match('/^None@.*$/', $group['name']))
- continue;
- $h .= " <option value=\"$id\">{$group['name']}</option>\n";
- }
- #foreach($admingroups as $id => $group)
- # $h .= " <option value=\"$id\">$group</option>\n";
- $h .= " </select>\n";
- $h .= " </td>\n";
- $h .= " </tr>\n";
- $h .= " <tr>\n";
- $h .= " <th align=right>Access User Group:</th>\n";
- $h .= " <td>\n";
- /*$extralogingroups = getServerProfileGroups($user['id'], 'login');
- foreach($extralogingroups as $id => $group)
- $logingroups[$id] = $group;
- uasort($logingroups, 'sortKeepIndex');*/
- if(USEFILTERINGSELECT && count($logingroups) < FILTERINGSELECTTHRESHOLD) {
- $h .= " <select dojoType=\"dijit.form.FilteringSelect\" id=\"deploylogingroup\" ";
- $h .= "style=\"width: 400px\" queryExpr=\"*\${0}*\" required=\"true\" ";
- $h .= "highlightMatch=\"all\" autoComplete=\"false\">\n";
- }
- else
- $h .= " <select id=\"deploylogingroup\">\n";
- $h .= " <option value=\"0\">None</option>\n";
- foreach($logingroups as $id => $group) {
- if($group['name'] == 'None' || preg_match('/^None@.*$/', $group['name']))
- continue;
- $h .= " <option value=\"$id\">{$group['name']}</option>\n";
- }
- #foreach($logingroups as $id => $group)
- # $h .= " <option value=\"$id\">$group</option>\n";
- $h .= " </select>\n";
- $h .= " </td>\n";
- $h .= " </tr>\n";
- $h .= " <tr class=\"hidden\">\n";
- $h .= " <th align=right>Monitored:</th>\n";
- $h .= " <td><input type=\"checkbox\" ";
- $h .= "id=\"deploymonitored\" dojoType=\"dijit.form.CheckBox\"></td>\n";
- $h .= " </tr>\n";
- $h .= "</table><br><br>\n";
- $h .= "When would you like to deploy the server?<br>\n";
- $h .= " ";
- $h .= "<input type=\"radio\" id=\"startnow\" name=\"deploystart\" ";
- $h .= "onclick=\"setStartNow();\" checked>\n";
- $h .= "<label for=\"startnow\">Now</label><br>\n";
- $h .= " ";
- $h .= "<input type=\"radio\" id=\"startlater\" name=\"deploystart\" ";
- $h .= "onclick=\"setStartLater();\">\n";
- $h .= "<label for=\"startlater\">Later:</label>\n";
- $h .= "<div dojoType=\"dijit.form.DateTextBox\" ";
- $h .= "id=\"deploystartdate\" onChange=\"setStartLater();\" ";
- $h .= "style=\"width: 88px\"></div>\n";
- $h .= "<div id=\"deploystarttime\" dojoType=\"dijit.form.TimeTextBox\" ";
- $h .= "style=\"width: 88px\" onChange=\"setStartLater();\"></div>\n";
- $h .= "<small>(" . date('T') . ")</small><br><br>\n";
- $h .= "Ending for server:<br>\n";
- $h .= " ";
- $h .= "<input type=\"radio\" id=\"endindef\" name=\"deployend\" ";
- $h .= "onclick=\"setEndIndef();\" checked>\n"; # TODO should this 'checked' be hard coded?
- $h .= "<label for=\"endindef\">Indefinite</label><br>\n";
- $h .= " ";
- $h .= "<input type=\"radio\" id=\"endat\" name=\"deployend\" ";
- $h .= "onclick=\"setEndAt();\">\n";
- $h .= "<label for=\"endat\">At this time:</label>\n";
- $h .= "<div type=\"text\" dojoType=\"dijit.form.DateTextBox\" ";
- $h .= "id=\"deployenddate\" onChange=\"setEndAt();\" ";
- $h .= "style=\"width: 88px\"></div>\n";
- $h .= "<div type=\"text\" id=\"deployendtime\" dojoType=\"dijit.form.TimeTextBox\" ";
- $h .= "style=\"width: 88px\" onChange=\"setEndAt();\"></div>\n";
- $h .= "<small>(" . date('T') . ")</small><br><br>\n";
- $h .= "<div class=\"rederrormsg hidden\" id=\"deployerr\"></div>\n";
- $cont = addContinuationsEntry('AJdeployServer', array(), SECINDAY, 1, 0);
- $h .= "<button dojoType=\"dijit.form.Button\" id=\"deploybtn\">\n";
- $h .= " Deploy Server\n";
- $h .= " <script type=\"dojo/method\" event=onClick>\n";
- $h .= " submitDeploy();\n";
- $h .= " </script>\n";
- $h .= "</button><br><br>\n";
- $h .= "<input type=\"hidden\" id=\"deploycont\" value=\"$cont\">\n";
- $h .= "</div>\n"; # deployprofilediv
-
- $h .= "<div dojoType=dijit.Dialog\n";
- $h .= " id=\"suggestedTimes\"\n";
- $h .= " title=\"Available Times\"\n";
- $h .= " duration=250\n";
- $h .= " draggable=true>\n";
- $h .= " <div id=\"suggestloading\" style=\"text-align: center\">";
- $h .= "<img src=\"themes/$skin/css/dojo/images/loading.gif\" style=\"vertical-align: middle;\"> Loading...</div>\n";
- $h .= " <div id=\"suggestContent\"></div>\n";
- $h .= " <input type=\"hidden\" id=\"suggestcont\">\n";
- $h .= " <input type=\"hidden\" id=\"selectedslot\">\n";
- $h .= " <div align=\"center\">\n";
- $h .= " <button id=\"suggestDlgBtn\" dojoType=\"dijit.form.Button\" disabled>\n";
- $h .= " Use Selected Time\n";
- $h .= " <script type=\"dojo/method\" event=\"onClick\">\n";
- $h .= " useSuggestedDeploySlot();\n";
- $h .= " </script>\n";
- $h .= " </button>\n";
- $h .= " <button id=\"suggestDlgCancelBtn\" dojoType=\"dijit.form.Button\">\n";
- $h .= " Cancel\n";
- $h .= " <script type=\"dojo/method\" event=\"onClick\">\n";
- $h .= " dijit.byId('suggestDlgBtn').set('disabled', true);\n";
- $h .= " dijit.byId('suggestedTimes').hide();\n";
- $h .= " dojo.byId('suggestContent').innerHTML = '';\n";
- $h .= " </script>\n";
- $h .= " </button>\n";
- $h .= " </div>\n";
- $h .= "</div>\n";
- return array('html' => $h);
-}
-
-////////////////////////////////////////////////////////////////////////////////
-///
/// \fn manageProfilesHTML()
///
/// \return an array with one element with a key of 'html' whose value is the
@@ -343,12 +128,6 @@ function manageProfilesHTML() {
$h .= " </td>\n";
$h .= " </tr>\n";
/*$h .= " <tr>\n";
- $h .= " <th align=right>Fixed IP Address:</th>\n";
- $h .= " <td><input type=\"text\" name=\"profilefixedIP\" id=\"profilefixedIP\" ";
- $h .= "dojoType=\"dijit.form.ValidationTextBox\" ";
- $h .= "regExp=\"([0-9]{1,3}\\.){3}([0-9]{1,3})\">(optional)</td>\n";
- $h .= " </tr>\n";*/
- /*$h .= " <tr>\n";
$h .= " <th align=right>Fixed MAC Address:</th>\n";
$h .= " <td><input type=\"text\" name=\"profilefixedMAC\" id=\"profilefixedMAC\" ";
$h .= "dojoType=\"dijit.form.ValidationTextBox\" ";
@@ -357,7 +136,10 @@ function manageProfilesHTML() {
$h .= " <tr>\n";
$h .= " <th align=right>Admin User Group:</th>\n";
$h .= " <td>\n";
- $admingroups = getUserGroups();
+ if($user['showallgroups'])
+ $admingroups = getUserGroups();
+ else
+ $admingroups = getUserGroups(0, $user['affiliationid']);
$logingroups = $admingroups;
/*$admingroups = getUserEditGroups($user['id']);
$logingroups = $admingroups;
@@ -413,6 +195,36 @@ function manageProfilesHTML() {
$h .= " <td><input type=\"checkbox\" name=\"profilemonitored\" ";
$h .= "id=\"profilemonitored\" dojoType=\"dijit.form.CheckBox\"></td>\n";
$h .= " </tr>\n";
+ $h .= " <tbody class=\"boxedtablerows\">\n";
+ $regip1 = "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)";
+ $regip4 = "$regip1\\.$regip1\\.$regip1\\.$regip1";
+ $h .= " <tr>\n";
+ $h .= " <th align=right>Fixed IP Address:</th>\n";
+ $h .= " <td><input type=\"text\" name=\"profilefixedIP\" id=\"profilefixedIP\" ";
+ $h .= "dojoType=\"dijit.form.ValidationTextBox\" ";
+ $h .= "regExp=\"$regip4\" onKeyUp=\"checkFixedSet('profile');\">(optional)</td>\n";
+ $h .= " </tr>\n";
+ $h .= " <tr>\n";
+ $h .= " <th align=right>Netmask:</th>\n";
+ $h .= " <td><input type=\"text\" id=\"profilenetmask\" ";
+ $h .= "dojoType=\"dijit.form.ValidationTextBox\" ";
+ $h .= "regExp=\"$regip4\" validator=\"validateNetmask\" ";
+ $h .= "onKeyUp=\"fetchRouterDNS('profile');\" disabled>";
+ $h .= "</td>\n";
+ $h .= " </tr>\n";
+ $h .= " <tr>\n";
+ $h .= " <th align=right>Router:</th>\n";
+ $h .= " <td><input type=\"text\" id=\"profilerouter\" ";
+ $h .= "dojoType=\"dijit.form.ValidationTextBox\" ";
+ $h .= "regExp=\"$regip4\" disabled></td>\n";
+ $h .= " </tr>\n";
+ $h .= " <tr>\n";
+ $h .= " <th align=right>DNS Server(s):</th>\n";
+ $h .= " <td><input type=\"text\" id=\"profiledns\" ";
+ $h .= "dojoType=\"dijit.form.ValidationTextBox\" ";
+ $h .= "regExp=\"($regip4)(,$regip4){0,2}\" disabled></td>\n";
+ $h .= " </tr>\n";
+ $h .= " </tbody>\n";
$h .= "</table>\n";
$cont = addContinuationsEntry('AJsaveServerProfile');
$h .= "<br><br>\n";
@@ -639,8 +451,12 @@ function AJserverProfileData() {
unset($data['owner']);
unset($data['admingroup']);
unset($data['logingroup']);
- if($data['fixedIP'] == 'NULL')
+ if($data['fixedIP'] == 'NULL') {
$data['fixedIP'] = '';
+ $data['netmask'] = '';
+ $data['router'] = '';
+ $data['dns'] = '';
+ }
if($data['fixedMAC'] == 'NULL')
$data['fixedMAC'] = '';
if(is_null($data['admingroupid']))
@@ -682,296 +498,6 @@ function AJserverProfileStoreData() {
////////////////////////////////////////////////////////////////////////////////
///
-/// \fn AJdeployServer()
-///
-/// \brief processes request information and creates reservation if everything
-/// ok
-///
-////////////////////////////////////////////////////////////////////////////////
-function AJdeployServer() {
- global $user, $remoteIP;
- $profilename = processInputVar('name', ARG_STRING);
- $profileid = processInputVar('profileid', ARG_NUMERIC);
- $imageid = processInputVar('imageid', ARG_NUMERIC);
- $resources = getUserResources(array("imageAdmin", "imageCheckOut"));
- $images = removeNoCheckout($resources["image"]);
- $extraimages = getServerProfileImages($user['id']);
- if(! array_key_exists($imageid, $images) &&
- ! array_key_exists($imageid, $extraimages)) {
- $cont = addContinuationsEntry('AJdeployServer', array(), SECINDAY, 1, 0);
- $data = array('error' => 1,
- 'cont' => $cont,
- 'msg' => 'You do not have access to use this environment.');
- sendJSON($data);
- return;
- }
- if(! preg_match('/^([-a-zA-Z0-9_\. ]){0,255}$/', $profilename)) {
- $cont = addContinuationsEntry('AJdeployServer', array(), SECINDAY, 1, 0);
- $data = array('error' => 1,
- 'cont' => $cont,
- 'msg' => "The name can only contain letters, numbers, spaces, dashes(-), "
- . "underscores(_), and periods(.) and can be up to 255 characters long");
- sendJSON($data);
- return;
- }
- $ipaddr = processInputVar('ipaddr', ARG_STRING);
- $ipaddrArr = explode('.', $ipaddr);
- if($ipaddr != '' && (! preg_match('/^(([0-9]){1,3}\.){3}([0-9]){1,3}$/', $ipaddr) ||
- $ipaddrArr[0] < 1 || $ipaddrArr[0] > 255 ||
- $ipaddrArr[1] < 0 || $ipaddrArr[1] > 255 ||
- $ipaddrArr[2] < 0 || $ipaddrArr[2] > 255 ||
- $ipaddrArr[3] < 0 || $ipaddrArr[3] > 255)) {
- $cont = addContinuationsEntry('AJdeployServer', array(), SECINDAY, 1, 0);
- $data = array('error' => 1,
- 'cont' => $cont,
- 'msg' => "Invalid IP address. Must be w.x.y.z with each of "
- . "w, x, y, and z being between 1 and 255 (inclusive)");
- sendJSON($data);
- return;
- }
- $macaddr = processInputVar('macaddr', ARG_STRING);
- if($macaddr != '' && ! preg_match('/^(([A-Fa-f0-9]){2}:){5}([A-Fa-f0-9]){2}$/', $macaddr)) {
- $cont = addContinuationsEntry('AJdeployServer', array(), SECINDAY, 1, 0);
- $data = array('error' => 1,
- 'cont' => $cont,
- 'msg' => "Invalid MAC address. Must be XX:XX:XX:XX:XX:XX "
- . "with each pair of XX being from 00 to FF (inclusive)");
- sendJSON($data);
- return;
- }
- $admingroupid = processInputVar('admingroupid', ARG_NUMERIC);
- $usergroups = getUserGroups();
- /*$usergroups = getUserEditGroups($user['id']);
- $extraadmingroups = getServerProfileGroups($user['id'], 'admin');*/
- if($admingroupid != 0 && ! array_key_exists($admingroupid, $usergroups) /*&&
- ! array_key_exists($admingroupid, $extraadmingroups)*/) {
- $cont = addContinuationsEntry('AJdeployServer', array(), SECINDAY, 1, 0);
- $data = array('error' => 1,
- 'cont' => $cont,
- 'msg' => "You do not have access to use the specified admin user group.");
- sendJSON($data);
- return;
- }
- $logingroupid = processInputVar('logingroupid', ARG_NUMERIC);
- #$extralogingroups = getServerProfileGroups($user['id'], 'login');
- if($logingroupid != 0 && ! array_key_exists($logingroupid, $usergroups) /*&&
- ! array_key_exists($logingroupid, $extralogingroups)*/) {
- $cont = addContinuationsEntry('AJdeployServer', array(), SECINDAY, 1, 0);
- $data = array('error' => 1,
- 'cont' => $cont,
- 'msg' => "You do not have access to use the specified access user group.");
- sendJSON($data);
- return;
- }
- $monitored = processInputVar('monitored', ARG_NUMERIC);
- if($monitored != 0 && $monitored != 1)
- $monitored = 0;
- $startmode = processInputVar('startmode', ARG_NUMERIC);
- if($startmode != 0 && $startmode != 1) {
- $cont = addContinuationsEntry('AJdeployServer', array(), SECINDAY, 1, 0);
- $data = array('error' => 1,
- 'cont' => $cont,
- 'msg' => "Invalid start information submitted");
- sendJSON($data);
- return;
- }
- $endmode = processInputVar('endmode', ARG_NUMERIC);
- if($endmode != 0 && $endmode != 1) {
- $cont = addContinuationsEntry('AJdeployServer', array(), SECINDAY, 1, 0);
- $data = array('error' => 1,
- 'cont' => $cont,
- 'msg' => "Invalid end information submitted");
- sendJSON($data);
- return;
- }
- if($startmode == 1) {
- $tmp = processInputVar('start', ARG_NUMERIC);
- if(! preg_match('/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})$/', $tmp, $matches)) {
- $cont = addContinuationsEntry('AJdeployServer', array(), SECINDAY, 1, 0);
- $data = array('error' => 1,
- 'cont' => $cont,
- 'msg' => "Invalid start date/time submitted");
- sendJSON($data);
- return;
- }
- $startts = datetimeToUnix("{$matches[1]}-{$matches[2]}-{$matches[3]} {$matches[4]}:{$matches[5]}:00");
- }
- else {
- $tmp = time();
- $startts = unixFloor15();
- }
- if($endmode == 1) {
- $tmp = processInputVar('end', ARG_NUMERIC);
- if(! preg_match('/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})$/', $tmp, $matches)) {
- $cont = addContinuationsEntry('AJdeployServer', array(), SECINDAY, 1, 0);
- $data = array('error' => 1,
- 'cont' => $cont,
- 'msg' => "Invalid end date/time submitted");
- sendJSON($data);
- return;
- }
- $endts = datetimeToUnix("{$matches[1]}-{$matches[2]}-{$matches[3]} {$matches[4]}:{$matches[5]}:00");
- }
- else {
- $tmp = time();
- $endts = datetimeToUnix("2038-01-01 00:00:00");
- }
-
- $resources = getUserResources(array("serverCheckOut", "serverProfileAdmin"),
- array("available","administer"));
- if(! array_key_exists($profileid, $resources['serverprofile']))
- $profileid = 0;
- elseif($profileid != 0) {
- $tmp = getServerProfiles($profileid);
- $tmp = $tmp[$profileid];
- if($tmp['imageid'] != $imageid &&
- (($tmp['fixedIP'] != $ipaddr && $tmp['fixedMAC'] != $macaddr) ||
- ($tmp['fixedIP'] == $ipaddr && $ipaddr == '' && $tmp['fixedMAC'] == $macaddr && $macaddr == '')))
- $profileid = 0;
- }
-
- // TODO handle selection of multiple revisions
-
- // get semaphore lock
- if(! semLock())
- abort(3);
-
- $revisionid = getProductionRevisionid($imageid);
- $images = getImages(0, $imageid);
- $availablerc = isAvailable($images, $imageid, $revisionid, $startts, $endts,
- 0, 0, 0, 0, $ipaddr, $macaddr);
- if($availablerc < 1) {
- $cdata = array('start' => $startts,
- 'end' => $endts,
- 'imageid' => $imageid,
- 'server' => 1,
- 'ip' => $ipaddr,
- 'mac' => $macaddr);
- if($startmode == 0)
- $cdata['now'] = 1;
- else
- $cdata['now'] = 0;
- $sugcont = addContinuationsEntry('AJshowRequestSuggestedTimes', $cdata);
- }
- if($availablerc == -3) {
- $cont = addContinuationsEntry('AJdeployServer', array(), SECINDAY, 1, 0);
- $msg = "The IP or MAC address you specified overlaps with another "
- . "reservation using the same IP or MAC address you specified. "
- . "Please use a different IP or MAC or select a different time "
- . "to deploy the server.";
- $data = array('error' => 2,
- 'cont' => $cont,
- 'sugcont' => $sugcont,
- 'msg' => $msg);
- sendJSON($data);
- return;
- }
- $max = getMaxOverlap($user['id']);
- if($availablerc > 0 && checkOverlap($startts, $endts, $max)) {
- $cont = addContinuationsEntry('AJdeployServer', array(), SECINDAY, 1, 0);
- if($max == 0)
- $msg = "The time you specified overlaps with another reservation you "
- . "currently have. You are only allowed to have a single "
- . "reservation at a time. You either need to end your existing "
- . "reservation or specify a time for this one that does not "
- . "overlap with your other reservation.";
- else
- $msg = "The time you specified overlaps with other reservations you "
- . "currently have. You are allowed to have $max overlapping "
- . "reservations at a time. You either need to end an existing "
- . "reservation or specify a time for this one that does not "
- . "overlap with your other reservations.";
- $data = array('error' => 1,
- 'cont' => $cont,
- 'msg' => $msg);
- sendJSON($data);
- return;
- }
- if($availablerc == -1) {
- $cont = addContinuationsEntry('AJdeployServer', array(), SECINDAY, 1, 0);
- $msg = "You have requested an environment that is limited in the number "
- . "of concurrent reservations that can be made. No further "
- . "reservations for the environment can be made for the time you "
- . "have selected. Please select another time to use the "
- . "environment.";
- $data = array('error' => 2,
- 'cont' => $cont,
- 'sugcont' => $sugcont,
- 'msg' => $msg);
- sendJSON($data);
- return;
- }
- if($availablerc == -2) {
- $cont = addContinuationsEntry('AJdeployServer', array(), SECINDAY, 1, 0);
- $msg = "The time period you selected is not available due to scheduled "
- . "system downtime for maintenance. Please select another time to use "
- . "the environment.";
- $data = array('error' => 2,
- 'cont' => $cont,
- 'sugcont' => $sugcont,
- 'msg' => $msg);
- sendJSON($data);
- return;
- }
- if($availablerc == 0) {
- $cont = addContinuationsEntry('AJdeployServer', array(), SECINDAY, 1, 0);
- $msg = "The requested time period is not available. Please select a "
- . "different time.";
- $data = array('error' => 2,
- 'cont' => $cont,
- 'sugcont' => $sugcont,
- 'msg' => $msg);
- sendJSON($data);
- return;
- }
- $requestid = addRequest();
- $query = "UPDATE reservation "
- . "SET remoteIP = '$remoteIP' "
- . "WHERE requestid = $requestid";
- doQuery($query);
- $fields = array('requestid', 'serverprofileid');
- $values = array($requestid, $profileid);
- if($profilename == '') {
- $fields[] = 'name';
- $profilename = $images[$imageid]['prettyname'];
- $values[] = "'$profilename'";
- }
- else {
- $fields[] = 'name';
- $profilename = mysql_real_escape_string($profilename);
- $values[] = "'$profilename'";
- }
- if($ipaddr != '') {
- $fields[] = 'fixedIP';
- $values[] = "'$ipaddr'";
- }
- if($macaddr != '') {
- $fields[] = 'fixedMAC';
- $values[] = "'$macaddr'";
- }
- if($admingroupid != 0) {
- $fields[] = 'admingroupid';
- $values[] = $admingroupid;
- }
- if($logingroupid != 0) {
- $fields[] = 'logingroupid';
- $values[] = $logingroupid;
- }
- if($monitored != 0) {
- $fields[] = 'monitored';
- $values[] = 1;
- }
- $allfields = implode(',', $fields);
- $allvalues = implode(',', $values);
- $query = "INSERT INTO serverrequest ($allfields) VALUES ($allvalues)";
- doQuery($query, 101);
- $ret['success'] = 1;
- $ret['redirecturl'] = BASEURL . SCRIPT . "?mode=viewRequests";
- sendJSON($ret);
-}
-
-////////////////////////////////////////////////////////////////////////////////
-///
/// \fn AJsaveServerProfile
///
/// \brief updates server profile information
@@ -1023,14 +549,20 @@ function AJsaveServerProfile() {
$ret['name'] = $data['name'];
$ret['id'] = $id;
$ret['newprofile'] = 1;
+ if($fixedIP != '') {
+ $vdata = array('netmask' => $data['netmask'],
+ 'router' => $data['router'],
+ 'dns' => $data['dnsArr']);
+ setVariable("fixedIPsp$id", $vdata, 'yaml');
+ }
}
else {
$query = "UPDATE serverprofile SET "
. "name = '$name', "
. "description = '$desc', "
. "imageid = {$data['imageid']}, "
- . "fixedIP = '{$data['fixedIP']}', "
- . "fixedMAC = '{$data['fixedMAC']}', "
+ . "fixedIP = '$fixedIP', "
+ . "fixedMAC = '$fixedMAC', "
. "admingroupid = {$data['admingroupid']}, "
. "logingroupid = {$data['logingroupid']}, "
. "monitored = {$data['monitored']} "
@@ -1041,6 +573,21 @@ function AJsaveServerProfile() {
$ret['id'] = $data['profileid'];
$ret['newprofile'] = 0;
}
+ if($data['fixedIP'] != '') {
+ $vdata = array('netmask' => $data['netmask'],
+ 'router' => $data['router'],
+ 'dns' => $data['dnsArr']);
+ setVariable("fixedIPsp{$ret['id']}", $vdata, 'yaml');
+ $ret['netmask'] = $data['netmask'];
+ $ret['router'] = $data['router'];
+ $ret['dns'] = $data['dns'];
+ $allnets = getVariable('fixedIPavailnetworks', array());
+ $network = ip2long($data['fixedIP']) & ip2long($data['netmask']);
+ $key = long2ip($network) . "/{$data['netmask']}";
+ $allnets[$key] = array('router' => $data['router'],
+ 'dns' => $data['dnsArr']);
+ setVariable('fixedIPavailnetworks', $allnets, 'yaml');
+ }
$ret['access'] = 'admin';
$ret['desc'] = preg_replace("/\n/", "<br>", $data['desc']);
$_SESSION['usersessiondata'] = array();
@@ -1105,11 +652,15 @@ function processProfileInput() {
$ret['name'] = processInputVar('name', ARG_STRING);
$ret['desc'] = processInputVar('desc', ARG_STRING);
$ret['imageid'] = processInputVar('imageid', ARG_NUMERIC);
- $ret['fixedIP'] = processInputVar('fixedIP', ARG_STRING);
$ret['fixedMAC'] = processInputVar('fixedMAC', ARG_STRING);
$ret['admingroupid'] = processInputVar('admingroupid', ARG_NUMERIC);
$ret['logingroupid'] = processInputVar('logingroupid', ARG_NUMERIC);
$monitored = processInputVar('monitored', ARG_STRING);
+ $ret['fixedIP'] = processInputVar('fixedIP', ARG_STRING);
+ $ret['netmask'] = processInputVar('netmask', ARG_STRING);
+ $ret['router'] = processInputVar('router', ARG_STRING);
+ $ret['dns'] = processInputVar('dns', ARG_STRING);
+ $ret['dnsArr'] = array();
$err = array();
@@ -1150,17 +701,56 @@ function processProfileInput() {
$addrArr = explode('.', $ret['fixedIP']);
if($ret['fixedIP'] == '')
$ret['fixedIP'] = 'NULL';
- elseif(! preg_match('/^(([0-9]){1,3}\.){3}([0-9]){1,3}$/', $ret['fixedIP']) ||
- $addrArr[0] < 1 || $addrArr[0] > 255 ||
- $addrArr[1] < 0 || $addrArr[1] > 255 ||
- $addrArr[2] < 0 || $addrArr[2] > 255 ||
- $addrArr[3] < 1 || $addrArr[3] > 255) {
- $err['msg'] = "Invalid value for Fixed IP Address. Must be w.x.y.z with each of "
- . "w, x, y, and z being between 1 and 255 (inclusive)";
+ elseif(! validateIPv4addr($ret['fixedIP'])) {
+ $err['msg'] = "Invalid value for Fixed IP Address. Must be w.x.y.z with each of "
+ . "w, x, y, and z being between 1 and 255 (inclusive)";
$err['field'] = 'fixedIP';
$err['error'] = 1;
return $err;
}
+ elseif(! preg_match('/^[1]+0[^1]+$/', sprintf('%032b', ip2long($ret['netmask'])))) {
+ $err['msg'] = "Invalid netmask specified";
+ $err['field'] = 'netmask';
+ $err['error'] = 1;
+ return $err;
+ }
+ elseif(! validateIPv4addr($ret['router'])) {
+ $err['msg'] = "Invalid value for Router. Must be w.x.y.z with each of "
+ . "w, x, y, and z being between 1 and 255 (inclusive)";
+ $err['field'] = 'router';
+ $err['error'] = 1;
+ return $err;
+ }
+ elseif((ip2long($ret['fixedIP']) & ip2long($ret['netmask'])) !=
+ (ip2long($ret['router']) & ip2long($ret['netmask']))) {
+ $err['msg'] = "IP address and router are not on the same subnet "
+ . "based on the specified netmask.";
+ $err['field'] = 'router';
+ $err['error'] = 1;
+ return $err;
+ }
+ if($ret['fixedIP'] != '') {
+ $tmp = explode(',', $ret['dns']);
+ $cnt = 0;
+ foreach($tmp as $dnsaddr) {
+ if($cnt && $dnsaddr == '')
+ continue;
+ if($cnt == 3) {
+ $err['msg'] = "Too many DNS servers specified - up to 3 are allowed.";
+ $err['field'] = 'dns';
+ $err['error'] = 1;
+ return $err;
+ }
+ if(! validateIPv4addr($dnsaddr)) {
+ $err['msg'] = "Invalid DNS server specified";
+ $err['field'] = 'dns';
+ $err['error'] = 1;
+ return $err;
+ }
+ $ret['dnsArr'][] = $dnsaddr;
+ $cnt++;
+ }
+ }
if($ret['fixedMAC'] == '')
$ret['fixedMAC'] = 'NULL';
@@ -1210,111 +800,6 @@ function processProfileInput() {
////////////////////////////////////////////////////////////////////////////////
///
-/// \fn getServerProfiles($id)
-///
-/// \param $id - (optional) if specified, only return data for specified profile
-///
-/// \return an array where each key is a profile id whose value is an array with
-/// these values:\n
-/// \b name - profile name\n
-/// \b description - profile description\n
-/// \b imageid - id of image associated with profile\n
-/// \b image - pretty name of image associated with profile\n
-/// \b ownerid - user id of owner of profile\n
-/// \b owner - unityid of owner of profile\n
-/// \b fixedIP - IP address to be used with deployed profile\n
-/// \b fixedMAC - MAC address to be used with deployed profile\n
-/// \b admingroupid - id of admin user group associated with profile\n
-/// \b admingroup - name of admin user group associated with profile\n
-/// \b logingroupid - id of login user group associated with profile\n
-/// \b logingroup - name of login user group associated with profile\n
-/// \b monitored - whether or not deployed profile should be monitored\n
-/// \b resourceid - resource id of profile
-///
-/// \brief gets information about server profiles
-///
-////////////////////////////////////////////////////////////////////////////////
-function getServerProfiles($id=0) {
- $key = getKey(array('getServerProfiles', $id));
- if(array_key_exists($key, $_SESSION['usersessiondata']))
- return $_SESSION['usersessiondata'][$key];
- $query = "SELECT s.id, "
- . "s.name, "
- . "s.description, "
- . "s.imageid, "
- . "i.prettyname AS image, "
- . "s.ownerid, "
- . "CONCAT(u.unityid, '@', a.name) AS owner, "
- . "s.fixedIP, "
- . "s.fixedMAC, "
- . "s.admingroupid, "
- . "CONCAT(ga.name, '@', aa.name) AS admingroup, "
- . "s.logingroupid, "
- . "CONCAT(gl.name, '@', al.name) AS logingroup, "
- . "s.monitored, "
- . "r.id AS resourceid "
- . "FROM serverprofile s "
- . "LEFT JOIN image i ON (i.id = s.imageid) "
- . "LEFT JOIN user u ON (u.id = s.ownerid) "
- . "LEFT JOIN affiliation a ON (a.id = u.affiliationid) "
- . "LEFT JOIN usergroup ga ON (ga.id = s.admingroupid) "
- . "LEFT JOIN affiliation aa ON (aa.id = ga.affiliationid) "
- . "LEFT JOIN usergroup gl ON (gl.id = s.logingroupid) "
- . "LEFT JOIN affiliation al ON (al.id = gl.affiliationid) "
- . "LEFT JOIN resource r ON (r.subid = s.id) "
- . "WHERE r.resourcetypeid = 17 ";
- if($id != 0)
- $query .= "AND s.id = $id";
- else
- $query .= "ORDER BY name";
- $qh = doQuery($query, 101);
- $profiles = array();
- while($row = mysql_fetch_assoc($qh))
- $profiles[$row['id']] = $row;
- $_SESSION['usersessiondata'][$key] = $profiles;
- return $profiles;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-///
-/// \fn getServerProfileImages($userid)
-///
-/// \param $userid - id from user table
-///
-/// \return array where the key is the id of the image and the value is the
-/// prettyname of the image
-///
-/// \brief builds an array of images that user has access to via server profiles
-///
-////////////////////////////////////////////////////////////////////////////////
-function getServerProfileImages($userid) {
- $key = getKey(array('getServerProfileImages', $userid));
- if(array_key_exists($key, $_SESSION['usersessiondata']))
- return $_SESSION['usersessiondata'][$key];
- $resources = getUserResources(array('serverCheckOut', 'serverProfileAdmin'),
- array('available', 'administer'));
- $ids = array_keys($resources['serverprofile']);
- $inids = implode(',', $ids);
- if(empty($inids)) {
- $_SESSION['usersessiondata'][$key] = array();
- return array();
- }
- $query = "SELECT i.id, "
- . "i.prettyname AS image "
- . "FROM serverprofile s, "
- . "image i "
- . "WHERE s.imageid = i.id AND "
- . "s.id IN ($inids)";
- $qh = doQuery($query, 101);
- $profiles = array();
- while($row = mysql_fetch_assoc($qh))
- $profiles[$row['id']] = $row['image'];
- $_SESSION['usersessiondata'][$key] = $profiles;
- return $profiles;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-///
/// \fn getServerProfileGroups($userid, $type)
///
/// \param $userid - id from user table
@@ -1639,4 +1124,44 @@ function AJremProfileFromGroup() {
}
sendJSON($arr);
}
+
+////////////////////////////////////////////////////////////////////////////////
+///
+/// \fn AJfetchRouterDNS()
+///
+/// \brief get router and dns information for a given IP address
+///
+////////////////////////////////////////////////////////////////////////////////
+function AJfetchRouterDNS() {
+ $data = array('status' => 'none');
+ $page = processInputVar('page', ARG_STRING);
+ if($page != 'deploy' && $page != 'profile') {
+ sendJSON($data);
+ return;
+ }
+ $ipaddr = processInputVar('ipaddr', ARG_STRING);
+ # validate fixed IP address
+ if(! validateIPv4addr($ipaddr)) {
+ sendJSON($data);
+ return;
+ }
+ # validate netmask
+ $netmask = processInputVar('netmask', ARG_STRING);
+ $bnetmask = ip2long($netmask);
+ if(! preg_match('/^[1]+0[^1]+$/', sprintf('%032b', $bnetmask))) {
+ sendJSON($data);
+ return;
+ }
+ $network = ip2long($ipaddr) & $bnetmask;
+ $availnets = getVariable('fixedIPavailnetworks', array());
+ $key = long2ip($network) . "/$netmask";
+ if(array_key_exists($key, $availnets)) {
+ $data = array('status' => 'success',
+ 'page' => $page,
+ 'router' => $availnets[$key]['router'],
+ 'dns' => implode(',', $availnets[$key]['dns']));
+ }
+ sendJSON($data);
+}
+
?>
Added: vcl/trunk/web/.ht-inc/siteconfig.php
URL: http://svn.apache.org/viewvc/vcl/trunk/web/.ht-inc/siteconfig.php?rev=1624325&view=auto
==============================================================================
--- vcl/trunk/web/.ht-inc/siteconfig.php (added)
+++ vcl/trunk/web/.ht-inc/siteconfig.php Thu Sep 11 16:01:48 2014
@@ -0,0 +1,222 @@
+<?php
+/*
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+////////////////////////////////////////////////////////////////////////////////
+///
+/// \fn siteconfig()
+///
+/// \brief prints a page of site configuration options
+///
+////////////////////////////////////////////////////////////////////////////////
+function siteconfig() {
+ $h = '';
+ $h .= "<h2>Site Configuration</h2>\n";
+
+ $globalopts = 0;
+ if(checkUserHasPerm('Site Configuration (global)'))
+ $globalopts = 1;
+
+ $h .= "<div id=\"mainTabContainer\" dojoType=\"dijit.layout.TabContainer\"\n";
+ $h .= " doLayout=\"false\">\n";
+
+ $h .= generalOptions($globalopts);
+
+ $h .= "</div>\n"; # mainTabContainer
+
+ print $h;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+///
+/// \fn generalOptions()
+///
+/// \brief prints a page of site configuration options
+///
+////////////////////////////////////////////////////////////////////////////////
+function generalOptions($globalopts) {
+ $h = '';
+ $h .= "<div id=\"globalopts\" dojoType=\"dijit.layout.ContentPane\" title=\"Global Options\">\n";
+ $h .= timeSourceHTML($globalopts);
+ $h .= connectedUserCheckHTML($globalopts);
+ $h .= "</div>\n";
+ return $h;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+///
+/// \fn
+///
+/// \brief
+///
+////////////////////////////////////////////////////////////////////////////////
+function timeSourceHTML($globalopts) {
+ $h = "<div class=\"configwidget\">\n";
+ $h .= "<h3>Time Source</h3>\n";
+ $h .= "<span class=\"siteconfigdesc\">\n";
+ $h .= "Set the default list of time servers to be used on installed nodes. These can be overridden for each management node under the settings for a given management node. Separate hostnames using a comma (,).<br><br>\n";
+ $h .= "</span>\n";
+ $val = getVariable('timesource|global', '', 1);
+ # TODO start here 2 - decide on text or textarea; if text, fix regexp; if textarea, remove regexp
+ $h .= labeledFormItem('timesource', 'Time Servers', 'text', $val['regexp'], '', $val['value']);
+ $h .= "<div id=\"timesourcemsg\"></div>\n";
+ $h .= dijitButton('timesourcebtn', 'Submit Changes', "saveTimeSource();", 1);
+ $cont = addContinuationsEntry('AJupdateTimeSource', array('origval' => $val));
+ $h .= "<input type=hidden id=timesourcecont value=\"$cont\">\n";
+ $h .= "</div>\n";
+ return $h;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+///
+/// \fn
+///
+/// \brief
+///
+////////////////////////////////////////////////////////////////////////////////
+function AJupdateTimeSource() {
+ if(! checkUserHasPerm('Site Configuration (global)')) {
+ $arr = array('status' => 'noaccess',
+ 'msg' => _('You do not have access to set the global Time Server setting.'));
+ sendJSON($arr);
+ return;
+ }
+ $origval = getContinuationVar('origval');
+ $val = processInputVar('timesource', ARG_STRING);
+ $val = preg_replace('/\s+/', '', $val);
+ if($origval != $val) {
+ $servers = explode(',', $val);
+ foreach($servers as $key => $server) {
+ if($server == '') {
+ unset($servers[$key]);
+ continue;
+ }
+ if(! preg_match('/^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$/', $server)) {
+ $arr = array('status' => 'failed',
+ 'msgid' => 'timesourcemsg',
+ 'btn' => 'timesourcebtn',
+ 'errmsg' => _('Invalid server(s) specified.'));
+ sendJSON($arr);
+ return;
+ }
+ }
+ $newval = implode(',', $servers);
+ setVariable('timesource|global', $newval);
+ }
+ $arr = array('status' => 'success',
+ 'msgid' => 'timesourcemsg',
+ 'btn' => 'timesourcebtn',
+ 'msg' => _('Time Server successfully updated'));
+ sendJSON($arr);
+}
+
+////////////////////////////////////////////////////////////////////////////////
+///
+/// \fn
+///
+/// \brief Image
+///
+////////////////////////////////////////////////////////////////////////////////
+function connectedUserCheckHTML($globalopts) {
+ $data = getVariablesRegex('^ignore_connections_gte.*');
+ $h = "<div class=\"configwidget\" style=\"width: 48%;\">\n";
+ $h .= "<h3>Connected User Check</h3>\n";
+ $h .= "<span class=\"siteconfigdesc\">\n";
+ $h .= "Perform checks to time out reservations if a reservation duration is less than the specified value (minutes).<br><br>\n";
+ $h .= "</span>\n";
+ $origvals = array();
+ if(empty($data)) {
+ $val = 1440;
+ $h .= labeledFormItem('ignore_connections_gte', 'global', 'text', '', 1, $val);
+ $origvals['ignore_connections_gte'] = array('id' => 'ignore_connections_gte', 'val' => $val);
+ }
+ else {
+ $extra = array('smallDelta' => 60, 'largeDelta' => 240);
+ foreach($data as $prekey => $val) {
+ $key = str_replace('|', '_', $prekey);
+ $tmp = explode('|', $prekey);
+ if(count($tmp) > 1)
+ $label = $tmp[1];
+ else
+ $label = 'global';
+ $h .= labeledFormItem($key, $label, 'spinner', '{min:0, max:10080}', 1, $val, '', '', $extra, '', '', 0);
+ # TODO start here, make delete button work, add a way to add exception for other affiliations
+ if($key != 'ignore_connections_gte')
+ $h .= dijitButton("{$key}delbtn", "Delete", "deleteConnectedUserCheck('$key');") . "<br>\n";
+ else
+ $h .= "<br>\n";
+ $origvals[$prekey] = array('id' => $key, 'val' => $val);
+ }
+ }
+ $h .= dijitButton('connectedusercheckbtn', 'Submit Changes', "saveConnectedUserCheck();", 1);
+ $cont = addContinuationsEntry('AJupdateConnectedUserCheck', array('origvals' => $origvals));
+ $h .= "<input type=hidden id=connectedusercheckcont value=\"$cont\">\n";
+ $h .= "</div>\n";
+ return $h;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+///
+/// \fn
+///
+/// \brief
+///
+////////////////////////////////////////////////////////////////////////////////
+function AJupdateConnectedUserCheck() {
+ if(! checkUserHasPerm('Site Configuration (global)') &&
+ ! checkUserHasPerm('Site Configuration (affiliaton only)')) {
+ $arr = array('status' => 'noaccess',
+ 'msg' => _('You do not have access to modify the Connected User Check settings.'));
+ sendJSON($arr);
+ return;
+ }
+
+
+
+
+
+ # TODO copied from AJupdateTimeSource
+ /*$origvals = getContinuationVar('origvals');
+ $val = processInputVar('timesource', ARG_STRING);
+ $val = preg_replace('/\s+/', '', $val);
+ if($origval != $val) {
+ $servers = explode(',', $val);
+ foreach($servers as $key => $server) {
+ if($server == '') {
+ unset($servers[$key]);
+ continue;
+ }
+ if(! preg_match('/^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$/', $server)) {
+ $arr = array('status' => 'failed',
+ 'msgid' => 'timesourcemsg',
+ 'btn' => 'timesourcebtn',
+ 'errmsg' => _('Invalid server(s) specified.'));
+ sendJSON($arr);
+ return;
+ }
+ }
+ $newval = implode(',', $servers);
+ setVariable('timesource|global', $newval);
+ }
+ $arr = array('status' => 'success',
+ 'msgid' => 'timesourcemsg',
+ 'btn' => 'timesourcebtn',
+ 'msg' => _('Time Server successfully updated'));
+ sendJSON($arr);*/
+}
+
+?>
Modified: vcl/trunk/web/.ht-inc/sitemaintenance.php
URL: http://svn.apache.org/viewvc/vcl/trunk/web/.ht-inc/sitemaintenance.php?rev=1624325&r1=1624324&r2=1624325&view=diff
==============================================================================
--- vcl/trunk/web/.ht-inc/sitemaintenance.php (original)
+++ vcl/trunk/web/.ht-inc/sitemaintenance.php Thu Sep 11 16:01:48 2014
@@ -94,8 +94,8 @@ function siteMaintenance() {
$reason = substr($item['reason'], 0, 30) . '...';
$rt .= " <span id=\"morereason\">$reason</span>\n";
$rt .= " <div dojoType=\"dijit.Tooltip\" connectId=\"morereason\">\n";
- $reason = preg_replace('/(.{1,50}[ \n])/', '\1<br>', $item['reason']);
- $reason = preg_replace('/\n<br>\n/', "<br><br>\n", $reason);
+ $reason = preg_replace("/(.{1,50}([ \n]|$))/", '\1<br>', $item['reason']);
+ $reason = preg_replace("/\n<br>\n/", "<br><br>\n", $reason);
$rt .= "$reason</div>\n";
$rt .= "</td>\n";
}
@@ -106,7 +106,7 @@ function siteMaintenance() {
$msg = substr($item['usermessage'], 0, 30) . '...';
$rt .= " <span id=\"moreusermsg\">$msg</span>\n";
$rt .= " <div dojoType=\"dijit.Tooltip\" connectId=\"moreusermsg\">\n";
- $msg = preg_replace('/(.{1,50}[ \n])/', '\1<br>', $item['usermessage']);
+ $msg = preg_replace("/(.{1,50}([ \n]|$))/", "\1<br>", $item['usermessage']);
$msg = preg_replace('/\n<br>\n/', "<br><br>\n", $msg);
$rt .= "$msg</div>\n";
$rt .= "</td>\n";
@@ -366,9 +366,9 @@ function AJgetDelSiteMaintenanceData() {
$allowres = 'Yes';
else
$allowres = 'No';
- $reason = preg_replace('/(.{1,50}[ \n])/', '\1<br>', $data['reason']);
+ $reason = preg_replace("/(.{1,50}([ \n]|$))/", '\1<br>', $data['reason']);
$reason = preg_replace('/\n<br>\n/', "<br><br>\n", $reason);
- $usermsg = preg_replace('/(.{1,50}[ \n])/', '\1<br>', $data['usermessage']);
+ $usermsg = preg_replace("/(.{1,50}([ \n]|$))/", '\1<br>', $data['usermessage']);
$usermsg = preg_replace('/\n<br>\n/', "<br><br>\n", $usermsg);
$arr = array('start' => $start,
'end' => $end,
Modified: vcl/trunk/web/.ht-inc/states.php
URL: http://svn.apache.org/viewvc/vcl/trunk/web/.ht-inc/states.php?rev=1624325&r1=1624324&r2=1624325&view=diff
==============================================================================
--- vcl/trunk/web/.ht-inc/states.php (original)
+++ vcl/trunk/web/.ht-inc/states.php Thu Sep 11 16:01:48 2014
@@ -26,15 +26,10 @@ $actions["pages"] = array();
$actions["nextmodes"] = array();
$actions["entry"] = array('main',
- 'newRequest',
'viewRequests',
'blockAllocations',
'userpreferences',
'viewGroups',
- 'selectImageOption',
- 'viewSchedules',
- 'selectComputers',
- 'selectMgmtnodeOption',
'serverProfiles',
'pickTimeTable',
'viewNodes',
@@ -49,13 +44,22 @@ $actions["entry"] = array('main',
'selectauth',
'xmlrpcaffiliations',
'submitLogin',
- 'imageClickThrough',
'clearCache',
'errorrpt',
'auth',
'continuationsError',
'requestBlockAllocation',
'dashboard',
+ 'resource',
+ 'config',
+ 'image',
+ 'computer',
+ 'managementnode',
+ 'schedule',
+ 'RESTresourceBasic',
+ 'RESTresourceDetail',
+ #'testDojoREST',
+ 'siteconfig',
);
$noHTMLwrappers = array('sendRDPfile',
@@ -73,35 +77,11 @@ $noHTMLwrappers = array('sendRDPfile',
'AJsubmitRenameNode',
'AJupdateWaitTime',
'AJviewRequests',
- 'submitRequest',
- 'submitTestProd',
+ 'AJnewRequest',
'selectauth',
'submitLogin',
'submitgeneralprefs',
- 'AJupdateImage',
- 'jsonImageGroupingImages',
- 'jsonImageGroupingGroups',
- 'jsonImageMapCompGroups',
- 'jsonImageMapImgGroups',
- 'AJaddImageToGroup',
- 'AJremImageFromGroup',
- 'AJaddGroupToImage',
- 'AJremGroupFromImage',
- 'imageGroupingGrid',
- 'AJaddCompGrpToImgGrp',
- 'AJremCompGrpFromImgGrp',
- 'AJaddImgGrpToCompGrp',
- 'AJremImgGrpFromCompGrp',
- 'imageMappingGrid',
'jsonGetGroupInfo',
- 'jsonCompGroupingComps',
- 'jsonCompGroupingGroups',
- 'compGroupingGrid',
- 'AJaddCompToGroup',
- 'AJremCompFromGroup',
- 'AJaddGroupToComp',
- 'AJremGroupFromComp',
- 'generateDHCP',
'errorrpt',
'vmhostdata',
'updateVMlimit',
@@ -117,6 +97,7 @@ $noHTMLwrappers = array('sendRDPfile',
'AJupdateRevisionProduction',
'AJupdateRevisionComments',
'AJdeleteRevisions',
+ 'AJfilterCompGroups',
'AJupdateBlockStatus',
'JSONprivnodelist',
'jsonGetUserGroupMembers',
@@ -144,8 +125,6 @@ $noHTMLwrappers = array('sendRDPfile',
'AJgetDelSiteMaintenanceData',
'AJeditSiteMaintenance',
'AJdeleteSiteMaintenance',
- 'AJgetScheduleTimesData',
- 'AJsaveScheduleTimes',
'AJvalidateUserid',
'AJupdateDashboard',
'AJgetStatData',
@@ -163,7 +142,7 @@ $noHTMLwrappers = array('sendRDPfile',
'AJaddProfileToGroup',
'AJremProfileFromGroup',
'AJserverProfileStoreData',
- 'AJdeployServer',
+ 'AJfetchRouterDNS',
'AJconfirmDeleteRequest',
'AJsubmitDeleteRequest',
'AJconfirmRemoveRequest',
@@ -177,35 +156,68 @@ $noHTMLwrappers = array('sendRDPfile',
'AJshowReinstallRequest',
'AJreinstallRequest',
'AJshowRequestSuggestedTimes',
- 'AJgenerateUtilData',
'AJcanceltovmhostinuse',
'jsonUserGroupStore',
'jsonResourceGroupStore',
'changeLocale',
- 'submitEditImage',
+ 'AJviewBlockAllocationUsage',
+ 'AJrestartImageCapture',
+ 'jsonResourceStore',
+ 'AJpromptToggleDeleteResource',
+ 'AJsubmitToggleDeleteResource',
+ 'AJsaveResource',
+ 'AJeditResource',
+ 'jsonResourceGroupingGroups',
+ 'AJaddRemGroupResource',
+ 'AJaddRemResourceGroup',
+ 'jsonResourceGroupingResources',
+ 'jsonResourceMappingMapToGroups',
+ 'AJaddRemMapToGroup',
+ 'jsonResourceMappingGroups',
+ 'AJaddRemGroupMapTo',
+ 'jsonConfigMapStore',
+ 'AJeditConfigMapping',
+ 'AJsaveConfigMapping',
+ 'AJdeleteConfigMapping',
+ 'AJsubmitDeleteConfigMapping',
+ 'AJconfigSystem',
+ 'RESTresourceBasic',
+ 'RESTresourceDetail',
+ 'AJstartImage',
+ 'AJupdateImage',
+ 'AJupdateTimeSource',
+ 'AJreloadComputers',
+ 'AJsubmitReloadComputers',
+ 'AJdeleteComputers',
+ 'AJsubmitDeleteComputers',
+ 'AJcompScheduleChange',
+ 'AJsubmitCompScheduleChange',
+ 'AJgenerateDHCPdata',
+ 'AJhostsData',
+ 'AJcompStateChange',
+ 'AJcompProvisioningChange',
+ 'AJsubmitCompProvisioningChange',
+ 'AJsubmitCompStateChange',
+ 'AJsubmitComputerStateLater',
+ 'AJconnectRequest',
);
# main
$actions['mode']['main'] = "main"; # entry
$actions['pages']['main'] = "main";
-# new reservations
-$actions['mode']['newRequest'] = "newReservation"; # entry
-$actions['mode']['submitRequest'] = "submitRequest";
+# reservations
+$actions['mode']['AJnewRequest'] = "AJnewRequest";
$actions['mode']['AJupdateWaitTime'] = "AJupdateWaitTime";
-$actions['mode']['submitTestProd'] = "submitRequest";
+$actions['mode']['AJconfigSystem'] = "AJconfigSystem";
$actions['mode']['selectTimeTable'] = "showTimeTable";
-$actions['mode']['AJshowRequestSuggestedTimes'] = "AJshowRequestSuggestedTimes";
$actions['args']['selectTimeTable'] = 1;
-$actions['pages']['newRequest'] = "newReservations";
-$actions['pages']['submitRequest'] = "newReservations";
-$actions['pages']['AJupdateWaitTime'] = "newReservations";
-$actions['pages']['submitTestProd'] = "newReservations";
-$actions['pages']['selectTimeTable'] = "newReservations";
-$actions['pages']['AJshowRequestSuggestedTimes'] = "newReservations";
-$actions['nextmodes']['newRequest'] = array();
-
-# current reservations
+$actions['mode']['AJshowRequestSuggestedTimes'] = "AJshowRequestSuggestedTimes";
+$actions['mode']['AJrebootRequest'] = "AJrebootRequest";
+$actions['mode']['AJreinstallRequest'] = "AJreinstallRequest";
+$actions['mode']['AJsetImageProduction'] = "AJsetImageProduction";
+$actions['mode']['AJsubmitSetImageProduction'] = "AJsubmitSetImageProduction";
+$actions['mode']['AJshowReinstallRequest'] = "AJshowReinstallRequest";
$actions['mode']['viewRequests'] = "viewRequests"; # entry
$actions['mode']['AJviewRequests'] = "viewRequests"; # entry
$actions['mode']['AJeditRequest'] = "AJeditRequest";
@@ -214,22 +226,31 @@ $actions['mode']['AJconfirmDeleteRequest
$actions['mode']['AJsubmitDeleteRequest'] = "AJsubmitDeleteRequest";
$actions['mode']['AJconfirmRemoveRequest'] = "AJconfirmRemoveRequest";
$actions['mode']['AJsubmitRemoveRequest'] = "AJsubmitRemoveRequest";
-$actions['mode']['connectRequest'] = "connectRequest";
+$actions['mode']['AJconnectRequest'] = "AJconnectRequest";
$actions['mode']['sendRDPfile'] = "sendRDPfile";
$actions['mode']['AJcheckConnectTimeout'] = "AJcheckConnectTimeout";
#$actions['mode']['connectMindterm'] = "connectMindterm";
#$actions['mode']['connectRDPapplet'] = "connectRDPapplet";
-$actions['pages']['viewRequests'] = "currentReservations";
-$actions['pages']['AJviewRequests'] = "currentReservations";
-$actions['pages']['AJeditRequest'] = "currentReservations";
-$actions['pages']['AJsubmitEditRequest'] = "currentReservations";
-$actions['pages']['AJconfirmDeleteRequest'] = "currentReservations";
-$actions['pages']['AJsubmitDeleteRequest'] = "currentReservations";
-$actions['pages']['AJconfirmRemoveRequest'] = "currentReservations";
-$actions['pages']['AJsubmitRemoveRequest'] = "currentReservations";
-$actions['pages']['connectRequest'] = "currentReservations";
-$actions['pages']['sendRDPfile'] = "currentReservations";
-$actions['pages']['AJcheckConnectTimeout'] = "currentReservations";
+$actions['pages']['AJnewRequest'] = "reservations";
+$actions['pages']['AJupdateWaitTime'] = "reservations";
+$actions['pages']['AJconfigSystem'] = "reservations";
+$actions['pages']['selectTimeTable'] = "reservations";
+$actions['pages']['AJshowRequestSuggestedTimes'] = "reservations";
+$actions['pages']['AJrebootRequest'] = "reservations";
+$actions['pages']['AJreinstallRequest'] = "reservations";
+$actions['pages']['AJsubmitSetImageProduction'] = "reservations";
+$actions['pages']['AJshowReinstallRequest'] = "reservations";
+$actions['pages']['viewRequests'] = "reservations";
+$actions['pages']['AJviewRequests'] = "reservations";
+$actions['pages']['AJeditRequest'] = "reservations";
+$actions['pages']['AJsubmitEditRequest'] = "reservations";
+$actions['pages']['AJconfirmDeleteRequest'] = "reservations";
+$actions['pages']['AJsubmitDeleteRequest'] = "reservations";
+$actions['pages']['AJconfirmRemoveRequest'] = "reservations";
+$actions['pages']['AJsubmitRemoveRequest'] = "reservations";
+$actions['pages']['AJconnectRequest'] = "reservations";
+$actions['pages']['sendRDPfile'] = "reservations";
+$actions['pages']['AJcheckConnectTimeout'] = "reservations";
#$actions['pages']['connectMindterm'] = "currentReservations";
#$actions['pages']['connectRDPapplet'] = "currentReservations";
@@ -253,6 +274,7 @@ $actions['mode']['AJviewBlockAllocationT
$actions['mode']['AJtoggleBlockTime'] = "AJtoggleBlockTime";
$actions['mode']['viewBlockAllocatedMachines'] = "viewBlockAllocatedMachines";
$actions['mode']['AJgetBlockAllocatedMachineData'] = "AJgetBlockAllocatedMachineData";
+$actions['mode']['AJviewBlockAllocationUsage'] = "AJviewBlockAllocationUsage";
$actions['pages']['blockAllocations'] = "blockAllocations";
$actions['pages']['newBlockAllocation'] = "blockAllocations";
$actions['pages']['editBlockAllocation'] = "blockAllocations";
@@ -272,6 +294,7 @@ $actions['pages']['AJtoggleBlockTime'] =
$actions['pages']['AJviewBlockAllocation'] = "blockAllocations";
$actions['pages']['viewBlockAllocatedMachines'] = "blockAllocations";
$actions['pages']['AJgetBlockAllocatedMachineData'] = "blockAllocations";
+$actions['pages']['AJviewBlockAllocationUsage'] = "blockAllocations";
# user preferences
$actions['mode']['userpreferences'] = "userpreferences"; # entry
@@ -321,249 +344,6 @@ $actions['pages']['jsonGetGroupInfo'] =
$actions['pages']['jsonUserGroupStore'] = "manageGroups";
$actions['pages']['jsonResourceGroupStore'] = "manageGroups";
-# manage images
-$actions['mode']['selectImageOption'] = "selectImageOption"; # entry
-$actions['mode']['viewImages'] = "viewImages";
-$actions['mode']['viewImageGrouping'] = "viewImageGrouping";
-$actions['mode']['viewImageMapping'] = "viewImageMapping";
-$actions['mode']['newImage'] = "editOrAddImage";
-$actions['args']['newImage'] = "1";
-$actions['mode']['startImage'] = "startImage";
-$actions['mode']['startCheckpoint'] = "startCheckpoint";
-$actions['mode']['submitCheckpoint'] = "submitCheckpoint";
-$actions['mode']['updateExistingImageComments'] = "updateExistingImageComments";
-$actions['mode']['updateExistingImage'] = "updateExistingImage";
-$actions['mode']['setImageProduction'] = "setImageProduction";
-$actions['mode']['AJsetImageProduction'] = "AJsetImageProduction";
-$actions['mode']['submitSetImageProduction'] = "submitSetImageProduction";
-$actions['mode']['AJsubmitSetImageProduction'] = "AJsubmitSetImageProduction";
-$actions['mode']['submitImageButton'] = "submitImageButton";
-$actions['mode']['submitEditImage'] = "submitEditImage";
-$actions['mode']['AJupdateImage'] = "AJupdateImage";
-$actions['mode']['submitEditImageButtons'] = "submitEditImageButtons";
-$actions['mode']['imageClickThroughAgreement'] = "imageClickThroughAgreement";
-$actions['mode']['submitAddImage'] = "submitAddImage";
-$actions['mode']['submitImageGroups'] = "submitImageGroups";
-$actions['mode']['submitImageMapping'] = "submitImageMapping";
-$actions['mode']['submitDeleteImage'] = "submitDeleteImage";
-$actions['mode']['imageClickThrough'] = "imageClickThrough";
-$actions['mode']['jsonImageGroupingImages'] = "jsonImageGroupingImages";
-$actions['mode']['jsonImageGroupingGroups'] = "jsonImageGroupingGroups";
-$actions['mode']['AJaddImageToGroup'] = "AJaddImageToGroup";
-$actions['mode']['AJremImageFromGroup'] = "AJremImageFromGroup";
-$actions['mode']['AJaddGroupToImage'] = "AJaddGroupToImage";
-$actions['mode']['AJremGroupFromImage'] = "AJremGroupFromImage";
-$actions['mode']['imageGroupingGrid'] = "imageGroupingGrid";
-$actions['mode']['jsonImageMapCompGroups'] = "jsonImageMapCompGroups";
-$actions['mode']['AJaddCompGrpToImgGrp'] = "AJaddCompGrpToImgGrp";
-$actions['mode']['AJremCompGrpFromImgGrp'] = "AJremCompGrpFromImgGrp";
-$actions['mode']['jsonImageMapImgGroups'] = "jsonImageMapImgGroups";
-$actions['mode']['AJaddImgGrpToCompGrp'] = "AJaddImgGrpToCompGrp";
-$actions['mode']['AJremImgGrpFromCompGrp'] = "AJremImgGrpFromCompGrp";
-$actions['mode']['imageMappingGrid'] = "imageMappingGrid";
-$actions['mode']['AJupdateRevisionProduction'] = "AJupdateRevisionProduction";
-$actions['mode']['AJupdateRevisionComments'] = "AJupdateRevisionComments";
-$actions['mode']['AJdeleteRevisions'] = "AJdeleteRevisions";
-$actions['mode']['connectmethodDialogContent'] = "connectmethodDialogContent";
-$actions['mode']['jsonImageConnectMethods'] = "jsonImageConnectMethods";
-$actions['mode']['AJaddImageConnectMethod'] = "AJaddImageConnectMethod";
-$actions['mode']['AJremImageConnectMethod'] = "AJremImageConnectMethod";
-$actions['mode']['subimageDialogContent'] = "subimageDialogContent";
-$actions['mode']['AJaddSubimage'] = "AJaddSubimage";
-$actions['mode']['AJremSubimage'] = "AJremSubimage";
-$actions['mode']['AJrebootRequest'] = "AJrebootRequest";
-$actions['mode']['AJshowReinstallRequest'] = "AJshowReinstallRequest";
-$actions['mode']['AJreinstallRequest'] = "AJreinstallRequest";
-$actions['pages']['selectImageOption'] = "manageImages";
-$actions['pages']['viewImages'] = "manageImages";
-$actions['pages']['viewImageGrouping'] = "manageImages";
-$actions['pages']['viewImageMapping'] = "manageImages";
-$actions['pages']['newImage'] = "manageImages";
-$actions['pages']['startImage'] = "manageImages";
-$actions['pages']['startCheckpoint'] = "manageImages";
-$actions['pages']['submitCheckpoint'] = "manageImages";
-$actions['pages']['updateExistingImageComments'] = "manageImages";
-$actions['pages']['updateExistingImage'] = "manageImages";
-$actions['pages']['setImageProduction'] = "manageImages";
-$actions['pages']['AJsetImageProduction'] = "manageImages";
-$actions['pages']['submitSetImageProduction'] = "manageImages";
-$actions['pages']['AJsubmitSetImageProduction'] = "manageImages";
-$actions['pages']['submitImageButton'] = "manageImages";
-$actions['pages']['submitEditImage'] = "manageImages";
-$actions['pages']['submitEditImageButtons'] = "manageImages";
-$actions['pages']['imageClickThroughAgreement'] = "manageImages";
-$actions['pages']['submitAddImage'] = "manageImages";
-$actions['pages']['submitImageGroups'] = "manageImages";
-$actions['pages']['submitImageMapping'] = "manageImages";
-$actions['pages']['submitDeleteImage'] = "manageImages";
-$actions['pages']['imageClickThrough'] = "manageImages";
-$actions['pages']['AJupdateImage'] = "manageImages";
-$actions['pages']['jsonImageGroupingImages'] = "manageImages";
-$actions['pages']['jsonImageGroupingGroups'] = "manageImages";
-$actions['pages']['AJaddImageToGroup'] = "manageImages";
-$actions['pages']['AJremImageFromGroup'] = "manageImages";
-$actions['pages']['AJaddGroupToImage'] = "manageImages";
-$actions['pages']['AJremGroupFromImage'] = "manageImages";
-$actions['pages']['imageGroupingGrid'] = "manageImages";
-$actions['pages']['jsonImageMapCompGroups'] = "manageImages";
-$actions['pages']['AJaddCompGrpToImgGrp'] = "manageImages";
-$actions['pages']['AJremCompGrpFromImgGrp'] = "manageImages";
-$actions['pages']['jsonImageMapImgGroups'] = "manageImages";
-$actions['pages']['AJaddImgGrpToCompGrp'] = "manageImages";
-$actions['pages']['AJremImgGrpFromCompGrp'] = "manageImages";
-$actions['pages']['imageMappingGrid'] = "manageImages";
-$actions['pages']['AJupdateRevisionProduction'] = "manageImages";
-$actions['pages']['AJupdateRevisionComments'] = "manageImages";
-$actions['pages']['AJdeleteRevisions'] = "manageImages";
-$actions['pages']['connectmethodDialogContent'] = "manageImages";
-$actions['pages']['jsonImageConnectMethods'] = "manageImages";
-$actions['pages']['AJaddImageConnectMethod'] = "manageImages";
-$actions['pages']['AJremImageConnectMethod'] = "manageImages";
-$actions['pages']['subimageDialogContent'] = "manageImages";
-$actions['pages']['AJaddSubimage'] = "manageImages";
-$actions['pages']['AJremSubimage'] = "manageImages";
-$actions['pages']['AJrebootRequest'] = "manageImages";
-$actions['pages']['AJshowReinstallRequest'] = "manageImages";
-$actions['pages']['AJreinstallRequest'] = "manageImages";
-
-# manage schedules
-$actions['mode']['viewSchedules'] = "viewSchedules"; # entry
-$actions['mode']['editSchedule'] = "editOrAddSchedule";
-$actions['args']['editSchedule'] = 0;
-$actions['mode']['confirmEditSchedule'] = "confirmEditOrAddSchedule";
-$actions['args']['confirmEditSchedule'] = 0;
-$actions['mode']['submitEditSchedule'] = "submitEditSchedule";
-$actions['mode']['confirmAddSchedule'] = "confirmEditOrAddSchedule";
-$actions['args']['confirmAddSchedule'] = 1;
-$actions['mode']['submitAddSchedule'] = "submitAddSchedule";
-$actions['mode']['confirmDeleteSchedule'] = "confirmDeleteSchedule";
-$actions['mode']['submitDeleteSchedule'] = "submitDeleteSchedule";
-$actions['mode']['submitScheduleGroups'] = "submitScheduleGroups";
-$actions['mode']['AJgetScheduleTimesData'] = "AJgetScheduleTimesData";
-$actions['mode']['AJsaveScheduleTimes'] = "AJsaveScheduleTimes";
-$actions['pages']['viewSchedules'] = "manageSchedules";
-$actions['pages']['editSchedule'] = "manageSchedules";
-$actions['pages']['confirmEditSchedule'] = "manageSchedules";
-$actions['pages']['submitEditSchedule'] = "manageSchedules";
-$actions['pages']['confirmAddSchedule'] = "manageSchedules";
-$actions['pages']['submitAddSchedule'] = "manageSchedules";
-$actions['pages']['confirmDeleteSchedule'] = "manageSchedules";
-$actions['pages']['submitDeleteSchedule'] = "manageSchedules";
-$actions['pages']['submitScheduleGroups'] = "manageSchedules";
-$actions['pages']['AJgetScheduleTimesData'] = "manageSchedules";
-$actions['pages']['AJsaveScheduleTimes'] = "manageSchedules";
-
-# manage computers
-$actions['mode']['selectComputers'] = "selectComputers"; # entry
-$actions['mode']['viewComputers'] = "viewComputers";
-$actions['mode']['viewComputerGroups'] = "viewComputerGroups";
-$actions['mode']['computerUtilities'] = "computerUtilities";
-$actions['mode']['reloadComputers'] = "reloadComputers";
-$actions['mode']['submitReloadComputers'] = "submitReloadComputers";
-$actions['mode']['compStateChange'] = "compStateChange";
-$actions['mode']['submitCompStateChange'] = "submitCompStateChange";
-$actions['mode']['compScheduleChange'] = "compScheduleChange";
-$actions['mode']['submitCompScheduleChange'] = "submitCompScheduleChange";
-$actions['mode']['AJgenerateUtilData'] = "AJgenerateUtilData";
-$actions['mode']['editComputer'] = "editOrAddComputer";
-$actions['args']['editComputer'] = 0;
-$actions['mode']['addComputer'] = "editOrAddComputer";
-$actions['args']['addComputer'] = 1;
-$actions['mode']['confirmEditComputer'] = "confirmEditOrAddComputer";
-$actions['args']['confirmEditComputer'] = 0;
-$actions['mode']['confirmAddComputer'] = "confirmEditOrAddComputer";
-$actions['args']['confirmAddComputer'] = 1;
-$actions['mode']['submitEditComputer'] = "submitEditComputer";
-$actions['mode']['computerAddMaintenanceNote'] = "computerAddMaintenanceNote";
-$actions['mode']['AJcanceltovmhostinuse'] = "AJcanceltovmhostinuse";
-$actions['mode']['addComputerSetVMHostProfile'] = "addComputerSetVMHostProfile";
-$actions['mode']['submitAddComputer'] = "submitAddComputer";
-$actions['mode']['submitComputerVMHostLater'] = "submitComputerVMHostLater";
-$actions['mode']['submitComputerGroups'] = "submitComputerGroups";
-$actions['mode']['confirmDeleteComputer'] = "confirmDeleteComputer";
-$actions['mode']['submitDeleteComputer'] = "submitDeleteComputer";
-$actions['mode']['bulkAddComputer'] = "bulkAddComputer";
-$actions['mode']['confirmAddBulkComputers'] = "confirmAddBulkComputers";
-$actions['mode']['submitAddBulkComputers'] = "submitAddBulkComputers";
-$actions['mode']['jsonCompGroupingComps'] = "jsonCompGroupingComps";
-$actions['mode']['jsonCompGroupingGroups'] = "jsonCompGroupingGroups";
-$actions['mode']['compGroupingGrid'] = "compGroupingGrid";
-$actions['mode']['AJaddCompToGroup'] = "AJaddCompToGroup";
-$actions['mode']['AJremCompFromGroup'] = "AJremCompFromGroup";
-$actions['mode']['AJaddGroupToComp'] = "AJaddGroupToComp";
-$actions['mode']['AJremGroupFromComp'] = "AJremGroupFromComp";
-$actions['mode']['generateDHCP'] = "generateDHCP";
-$actions['pages']['selectComputers'] = "manageComputers";
-$actions['pages']['viewComputers'] = "manageComputers";
-$actions['pages']['viewComputerGroups'] = "manageComputers";
-$actions['pages']['computerUtilities'] = "manageComputers";
-$actions['pages']['reloadComputers'] = "manageComputers";
-$actions['pages']['submitReloadComputers'] = "manageComputers";
-$actions['pages']['compStateChange'] = "manageComputers";
-$actions['pages']['submitCompStateChange'] = "manageComputers";
-$actions['pages']['compScheduleChange'] = "manageComputers";
-$actions['pages']['submitCompScheduleChange'] = "manageComputers";
-$actions['pages']['AJgenerateUtilData'] = "manageComputers";
-$actions['pages']['editComputer'] = "manageComputers";
-$actions['pages']['addComputer'] = "manageComputers";
-$actions['pages']['confirmEditComputer'] = "manageComputers";
-$actions['pages']['confirmAddComputer'] = "manageComputers";
-$actions['pages']['submitEditComputer'] = "manageComputers";
-$actions['pages']['computerAddMaintenanceNote'] = "manageComputers";
-$actions['pages']['AJcanceltovmhostinuse'] = "manageComputers";
-$actions['pages']['computerAddedMaintenceNote'] = "manageComputers";
-$actions['pages']['addComputerSetVMHostProfile'] = "manageComputers";
-$actions['pages']['submitAddComputer'] = "manageComputers";
-$actions['pages']['submitComputerVMHostLater'] = "manageComputers";
-$actions['pages']['submitComputerGroups'] = "manageComputers";
-$actions['pages']['confirmDeleteComputer'] = "manageComputers";
-$actions['pages']['submitDeleteComputer'] = "manageComputers";
-$actions['pages']['bulkAddComputer'] = "manageComputers";
-$actions['pages']['confirmAddBulkComputers'] = "manageComputers";
-$actions['pages']['submitAddBulkComputers'] = "manageComputers";
-$actions['pages']['jsonCompGroupingComps'] = "manageComputers";
-$actions['pages']['jsonCompGroupingGroups'] = "manageComputers";
-$actions['pages']['compGroupingGrid'] = "manageComputers";
-$actions['pages']['AJaddCompToGroup'] = "manageComputers";
-$actions['pages']['AJremCompFromGroup'] = "manageComputers";
-$actions['pages']['AJaddGroupToComp'] = "manageComputers";
-$actions['pages']['AJremGroupFromComp'] = "manageComputers";
-$actions['pages']['generateDHCP'] = "manageComputers";
-
-# management nodes
-$actions['mode']['selectMgmtnodeOption'] = "selectMgmtnodeOption"; # entry
-$actions['mode']['viewMgmtnodes'] = "viewMgmtnodes";
-$actions['mode']['editMgmtNode'] = "editOrAddMgmtnode";
-$actions['args']['editMgmtNode'] = "0";
-$actions['mode']['addMgmtNode'] = "editOrAddMgmtnode";
-$actions['args']['addMgmtNode'] = "1";
-$actions['mode']['confirmEditMgmtnode'] = "confirmEditOrAddMgmtnode";
-$actions['args']['confirmEditMgmtnode'] = "0";
-$actions['mode']['confirmAddMgmtnode'] = "confirmEditOrAddMgmtnode";
-$actions['args']['confirmAddMgmtnode'] = "1";
-$actions['mode']['submitEditMgmtnode'] = "submitEditMgmtnode";
-$actions['mode']['submitAddMgmtnode'] = "submitAddMgmtnode";
-$actions['mode']['confirmDeleteMgmtnode'] = "confirmDeleteMgmtnode";
-$actions['mode']['submitDeleteMgmtnode'] = "submitDeleteMgmtnode";
-$actions['mode']['viewMgmtnodeGrouping'] = "viewMgmtnodeGrouping";
-$actions['mode']['submitMgmtnodeGroups'] = "submitMgmtnodeGroups";
-$actions['mode']['viewMgmtnodeMapping'] = "viewMgmtnodeMapping";
-$actions['mode']['submitMgmtnodeMapping'] = "submitMgmtnodeMapping";
-$actions['pages']['selectMgmtnodeOption'] = "managementNodes";
-$actions['pages']['viewMgmtnodes'] = "managementNodes";
-$actions['pages']['editMgmtNode'] = "managementNodes";
-$actions['pages']['addMgmtNode'] = "managementNodes";
-$actions['pages']['confirmEditMgmtnode'] = "managementNodes";
-$actions['pages']['confirmAddMgmtnode'] = "managementNodes";
-$actions['pages']['submitEditMgmtnode'] = "managementNodes";
-$actions['pages']['submitAddMgmtnode'] = "managementNodes";
-$actions['pages']['confirmDeleteMgmtnode'] = "managementNodes";
-$actions['pages']['submitDeleteMgmtnode'] = "managementNodes";
-$actions['pages']['viewMgmtnodeGrouping'] = "managementNodes";
-$actions['pages']['submitMgmtnodeGroups'] = "managementNodes";
-$actions['pages']['viewMgmtnodeMapping'] = "managementNodes";
-$actions['pages']['submitMgmtnodeMapping'] = "managementNodes";
-
# server profiles
$actions['mode']['serverProfiles'] = "serverProfiles"; # entry
$actions['mode']['AJsaveServerProfile'] = "AJsaveServerProfile";
@@ -576,7 +356,7 @@ $actions['mode']['AJremGroupFromProfile'
$actions['mode']['AJaddProfileToGroup'] = "AJaddProfileToGroup";
$actions['mode']['AJremProfileFromGroup'] = "AJremProfileFromGroup";
$actions['mode']['AJserverProfileStoreData'] = "AJserverProfileStoreData";
-$actions['mode']['AJdeployServer'] = "AJdeployServer";
+$actions['mode']['AJfetchRouterDNS'] = "AJfetchRouterDNS";
$actions['pages']['serverProfiles'] = "serverProfiles";
$actions['pages']['AJsaveServerProfile'] = "serverProfiles";
$actions['pages']['AJserverProfileData'] = "serverProfiles";
@@ -588,7 +368,7 @@ $actions['pages']['AJremGroupFromProfile
$actions['pages']['AJaddProfileToGroup'] = "serverProfiles";
$actions['pages']['AJremProfileFromGroup'] = "serverProfiles";
$actions['pages']['AJserverProfileStoreData'] = "serverProfiles";
-$actions['pages']['AJdeployServer'] = "serverProfiles";
+$actions['pages']['AJfetchRouterDNS'] = "serverProfiles";
# time table
# TODO a few of these belong to new reservation
@@ -749,8 +529,139 @@ $actions['pages']['AJdeleteSiteMaintenan
# dashboard
$actions['mode']['dashboard'] = "dashboard";
$actions['mode']['AJupdateDashboard'] = "AJupdateDashboard";
+$actions['mode']['AJrestartImageCapture'] = "AJrestartImageCapture";
$actions['pages']['dashboard'] = "dashboard";
$actions['pages']['AJupdateDashboard'] = "dashboard";
+$actions['pages']['AJrestartImageCapture'] = "dashboard";
+
+# site configuration
+$actions['mode']['siteconfig'] = "siteconfig";
+$actions['mode']['AJupdateTimeSource'] = "AJupdateTimeSource";
+$actions['pages']['siteconfig'] = "siteconfig";
+$actions['pages']['AJupdateTimeSource'] = "siteconfig";
+
+# resource
+$actions['mode']['resource'] = "resource";
+$actions['mode']['config'] = "resource";
+$actions['args']['config'] = 'config';
+$actions['mode']['image'] = "resource";
+$actions['args']['image'] = 'image';
+$actions['mode']['computer'] = "resource";
+$actions['args']['computer'] = 'computer';
+$actions['mode']['managementnode'] = "resource";
+$actions['args']['managementnode'] = 'managementnode';
+$actions['mode']['schedule'] = "resource";
+$actions['args']['schedule'] = 'schedule';
+$actions['mode']['viewResources'] = "viewResources";
+$actions['mode']['jsonResourceStore'] = "jsonResourceStore";
+$actions['mode']['AJpromptToggleDeleteResource'] = "AJpromptToggleDeleteResource";
+$actions['mode']['AJsubmitToggleDeleteResource'] = "AJsubmitToggleDeleteResource";
+$actions['mode']['AJsaveResource'] = "AJsaveResource";
+$actions['mode']['AJeditResource'] = "AJeditResource";
+$actions['mode']['groupMapHTML'] = "groupMapHTML";
+$actions['mode']['editConfigMap'] = "editConfigMap";
+$actions['mode']['jsonResourceGroupingGroups'] = "jsonResourceGroupingGroups";
+$actions['mode']['AJaddRemGroupResource'] = "AJaddRemGroupResource";
+$actions['mode']['AJaddRemResourceGroup'] = "AJaddRemResourceGroup";
+$actions['mode']['jsonResourceGroupingResources'] = "jsonResourceGroupingResources";
+$actions['mode']['jsonResourceMappingMapToGroups'] = "jsonResourceMappingMapToGroups";
+$actions['mode']['AJaddRemMapToGroup'] = "AJaddRemMapToGroup";
+$actions['mode']['jsonResourceMappingGroups'] = "jsonResourceMappingGroups";
+$actions['mode']['AJaddRemGroupMapTo'] = "AJaddRemGroupMapTo";
+$actions['mode']['jsonConfigMapStore'] = "jsonConfigMapStore";
+$actions['mode']['AJeditConfigMapping'] = "AJeditConfigMapping";
+$actions['mode']['AJsaveConfigMapping'] = "AJsaveConfigMapping";
+$actions['mode']['AJdeleteConfigMapping'] = "AJdeleteConfigMapping";
+$actions['mode']['AJsubmitDeleteConfigMapping'] = "AJsubmitDeleteConfigMapping";
+$actions['mode']['connectmethodDialogContent'] = "connectmethodDialogContent";
+$actions['mode']['subimageDialogContent'] = "subimageDialogContent";
+$actions['mode']['AJaddSubimage'] = "AJaddSubimage";
+$actions['mode']['AJremSubimage'] = "AJremSubimage";
+$actions['mode']['AJupdateImage'] = "AJupdateImage";
+$actions['mode']['AJcanceltovmhostinuse'] = "AJcanceltovmhostinuse";
+$actions['mode']['AJreloadComputers'] = "AJreloadComputers";
+$actions['mode']['AJsubmitReloadComputers'] = "AJsubmitReloadComputers";
+$actions['mode']['AJdeleteComputers'] = "AJdeleteComputers";
+$actions['mode']['AJsubmitDeleteComputers'] = "AJsubmitDeleteComputers";
+$actions['mode']['AJcompScheduleChange'] = "AJcompScheduleChange";
+$actions['mode']['AJsubmitCompScheduleChange'] = "AJsubmitCompScheduleChange";
+$actions['mode']['AJgenerateDHCPdata'] = "AJgenerateDHCPdata";
+$actions['mode']['AJhostsData'] = "AJhostsData";
+$actions['mode']['AJcompStateChange'] = "AJcompStateChange";
+$actions['mode']['AJcompProvisioningChange'] = "AJcompProvisioningChange";
+$actions['mode']['AJsubmitCompProvisioningChange'] = "AJsubmitCompProvisioningChange";
+$actions['mode']['AJsubmitCompStateChange'] = "AJsubmitCompStateChange";
+$actions['mode']['AJsubmitComputerStateLater'] = "AJsubmitComputerStateLater";
+$actions['mode']['jsonImageConnectMethods'] = "jsonImageConnectMethods";
+$actions['mode']['AJaddImageConnectMethod'] = "AJaddImageConnectMethod";
+$actions['mode']['AJremImageConnectMethod'] = "AJremImageConnectMethod";
+$actions['mode']['AJstartImage'] = "AJstartImage";
+$actions['mode']['AJupdateRevisionComments'] = "AJupdateRevisionComments";
+$actions['mode']['AJdeleteRevisions'] = "AJdeleteRevisions";
+$actions['mode']['AJupdateRevisionProduction'] = "AJupdateRevisionProduction";
+$actions['mode']['AJfilterCompGroups'] = "AJfilterCompGroups";
+$actions['pages']['resource'] = "resource";
+$actions['pages']['config'] = "config";
+$actions['pages']['image'] = "image";
+$actions['pages']['computer'] = "computer";
+$actions['pages']['managementnode'] = "managementnode";
+$actions['pages']['schedule'] = "schedule";
+$actions['pages']['viewResources'] = "resource";
+$actions['pages']['jsonResourceStore'] = "resource";
+$actions['pages']['AJpromptToggleDeleteResource'] = "resource";
+$actions['pages']['AJsubmitToggleDeleteResource'] = "resource";
+$actions['pages']['AJsaveResource'] = "resource";
+$actions['pages']['AJeditResource'] = "resource";
+$actions['pages']['groupMapHTML'] = "resource";
+$actions['pages']['editConfigMap'] = "resource";
+$actions['pages']['jsonResourceGroupingGroups'] = "resource";
+$actions['pages']['AJaddRemGroupResource'] = "resource";
+$actions['pages']['AJaddRemResourceGroup'] = "resource";
+$actions['pages']['jsonResourceGroupingResources'] = "resource";
+$actions['pages']['jsonResourceMappingMapToGroups'] = "resource";
+$actions['pages']['AJaddRemMapToGroup'] = "resource";
+$actions['pages']['jsonResourceMappingGroups'] = "resource";
+$actions['pages']['AJaddRemGroupMapTo'] = "resource";
+$actions['pages']['jsonConfigMapStore'] = "resource";
+$actions['pages']['AJeditConfigMapping'] = "resource";
+$actions['pages']['AJsaveConfigMapping'] = "resource";
+$actions['pages']['AJdeleteConfigMapping'] = "resource";
+$actions['pages']['AJsubmitDeleteConfigMapping'] = "resource";
+$actions['pages']['connectmethodDialogContent'] = "resource";
+$actions['pages']['subimageDialogContent'] = "resource";
+$actions['pages']['AJaddSubimage'] = "resource";
+$actions['pages']['AJremSubimage'] = "resource";
+$actions['pages']['AJupdateImage'] = "resource";
+$actions['pages']['AJcanceltovmhostinuse'] = "resource";
+$actions['pages']['AJreloadComputers'] = "resource";
+$actions['pages']['AJsubmitReloadComputers'] = "resource";
+$actions['pages']['AJdeleteComputers'] = "resource";
+$actions['pages']['AJsubmitDeleteComputers'] = "resource";
+$actions['pages']['AJcompScheduleChange'] = "resource";
+$actions['pages']['AJsubmitCompScheduleChange'] = "resource";
+$actions['pages']['AJgenerateDHCPdata'] = "resource";
+$actions['pages']['AJhostsData'] = "resource";
+$actions['pages']['AJcompStateChange'] = "resource";
+$actions['pages']['AJcompProvisioningChange'] = "resource";
+$actions['pages']['AJsubmitCompProvisioningChange'] = "resource";
+$actions['pages']['AJsubmitCompStateChange'] = "resource";
+$actions['pages']['AJsubmitComputerStateLater'] = "resource";
+$actions['pages']['jsonImageConnectMethods'] = "resource";
+$actions['pages']['AJaddImageConnectMethod'] = "resource";
+$actions['pages']['AJremImageConnectMethod'] = "resource";
+$actions['pages']['AJstartImage'] = "resource";
+$actions['pages']['AJupdateRevisionComments'] = "resource";
+$actions['pages']['AJupdateRevisionProduction'] = "resource";
+$actions['pages']['AJdeleteRevisions'] = "resource";
+$actions['pages']['AJfilterCompGroups'] = "resource";
+
+# storebackend
+$actions['mode']['RESTresourceBasic'] = "RESTresourceBasic";
+$actions['mode']['RESTresourceDetail'] = "RESTresourceDetail";
+#$actions['mode']['testDojoREST'] = "testDojoREST";
+$actions['pages']['RESTresourceBasic'] = "storebackend";
+$actions['pages']['RESTresourceDetail'] = "storebackend";
+#$actions['pages']['testDojoREST'] = "storebackend";
# RPC
$actions['mode']['xmlrpccall'] = "xmlrpccall";