new_api implementations of core PlanetLabConf files; some are deprecated but we need...
[nodeconfig.git] / keys.php
1 <?php
2 //
3 // Deprecated. Node Manager should manage keys.
4 //
5 // .ssh/authorized_keys generator
6 //
7 // Basic usage:
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)
11 //
12 // Mark Huang <mlhuang@cs.princeton.edu>
13 // Aaron Klingaman <alk@cs.princeton.edu>
14 // Copyright (C) 2004 The Trustees of Princeton University
15 //
16 // $Id: keys.php,v 1.8 2005/10/04 18:11:26 alk Exp $
17 //
18
19 // Get admin API handle
20 require_once 'plc_api.php';
21 global $adm;
22
23 $persons = array();
24 $keys = array();
25
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'])) {
32       $persons[] = $person;
33     }
34   }
35 }
36
37 if (isset($_REQUEST['site_admin'])) {
38   // Look up the node
39   $nodenetworks = $adm->GetNodeNetworks(array($_SERVER['REMOTE_ADDR']));
40   if (!empty($nodenetworks)) {
41     $nodes = $adm->GetNodes(array($nodenetworks[0]['node_id']));
42     if (!empty($nodes)) {
43       $node = $nodes[0];
44     }
45   }
46   
47   if (isset($node)) {
48     // Look up the site
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'])) {
60           $persons[] = $person;
61         }
62       }
63     }
64   }
65 }
66
67 if (isset($_REQUEST['root'])) {
68   $keys[] = array('key' => file_get_contents(PLC_ROOT_SSH_KEY_PUB));
69 }
70
71 if (!empty($persons)) {
72   $key_ids = array();
73   foreach ($persons as $person) {
74     $key_ids = $key_ids + $person['key_ids'];
75   }
76
77   if (!empty($key_ids)) {
78     $keys = $keys + $adm->GetKeys($key_ids);
79   }
80 }
81
82 foreach ($keys as $key) {
83   print $key['key'];
84 }
85
86 ?>