3 // .ssh/authorized_keys generator
4 // Node Manager should manage user keys.
5 // This script remains current for special cases like root, site_admin, and monitor
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
19 // Get admin API handle
20 require_once 'plc_api.php';
26 if (!empty($_REQUEST['role'])) {
27 // API cannot filter on role_ids nor roles
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'])) {
38 // NOTE: this user is not used by the monitor for the moment.
40 /* // {ple,pl}_monitor user is created on the nodes by the monitor-runlevelagent init script. */
41 /* if (isset($_REQUEST[PLC_SLICE_PREFIX . '_monitor'])) { */
42 /* $user = $adm->GetPersons(array('first_name' => 'Site', 'last_name' => 'Assistant')); */
43 /* if (!empty($user)) { */
44 /* $persons[] = $user[0]; */
48 if (isset($_REQUEST['site_admin']) && isset($_REQUEST['node_id'])) {
49 $nodes = $adm->GetNodes(array(intval($_REQUEST['node_id'])));
55 $sites = $adm->GetSites(array($node['site_id']));
56 // Can't filter on roles so have to brute force through entire userlist of site.
57 if ($sites && $sites[0]['person_ids']) {
58 $all_persons = $adm->GetPersons($sites[0]['person_ids']);
59 if (!empty($all_persons))
60 foreach ($all_persons as $person)
61 if ((in_array('pi', $person['roles']) || in_array('tech', $person['roles'])) && $person['enabled'])
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 if ($person['key_ids']) {
75 $person_key_ids = $person['key_ids'];
76 foreach ($person_key_ids as $person_key_id) {
77 $key_ids[] = $person_key_id;
82 $keys = $adm->GetKeys($key_ids);
85 foreach ($keys as $key)
86 print $key['key']. "\n";