3 // Deprecated. Node Manager should manage keys.
5 // .ssh/authorized_keys generator
8 // keys.php?role=admin (all PlanetLab administrators)
9 // keys.php?root (PlanetLab root and users allowed root on the querying node)
10 // keys.php?site_admin (PIs and tech contacts at the querying node's site)
12 // Mark Huang <mlhuang@cs.princeton.edu>
13 // Aaron Klingaman <alk@cs.princeton.edu>
14 // Copyright (C) 2004 The Trustees of Princeton University
16 // $Id: keys.php,v 1.1 2006/11/06 22:02:17 mlhuang Exp $
19 // Get admin API handle
20 require_once 'plc_api.php';
26 if (!empty($_REQUEST['role'])) {
27 // XXX Implement API query filters
28 // $persons = $adm->GetPersons(array('roles' => array($_REQUEST['role'])));
29 $all_persons = $adm->GetPersons();
30 foreach ($all_persons as $person) {
31 if (in_array($_REQUEST['role'], $person['roles'])) {
37 if (isset($_REQUEST['site_admin'])) {
39 $nodenetworks = $adm->GetNodeNetworks(array('ip' => $_SERVER['REMOTE_ADDR']));
40 if (!empty($nodenetworks)) {
41 $nodes = $adm->GetNodes(array($nodenetworks[0]['node_id']));
49 $sites = $adm->GetSites(array($node['site_id']));
50 if ($sites && $sites[0]['person_ids']) {
51 // XXX Implement API query filters
52 // $persons = $adm->GetPersons(array('person_id' => $sites[0]['person_ids'],
53 // 'roles' => array('pi')));
54 // $persons += $adm->GetPersons(array('person_id' => $sites[0]['person_ids'],
55 // 'roles' => array('tech')));
56 $all_persons = $adm->GetPersons($sites[0]['person_ids']);
57 foreach ($all_persons as $person) {
58 if (in_array('pi', $person['roles']) ||
59 in_array('tech', $person['roles'])) {
67 if (isset($_REQUEST['root'])) {
68 $keys[] = array('key' => file_get_contents(PLC_ROOT_SSH_KEY_PUB));
71 if (!empty($persons)) {
73 foreach ($persons as $person) {
74 $key_ids = $key_ids + $person['key_ids'];
77 if (!empty($key_ids)) {
78 $keys = $keys + $adm->GetKeys($key_ids);
82 foreach ($keys as $key) {