github.com/munnerz/test-infra@v0.0.0-20190108210205-ce3d181dc989/maintenance/oncall.html (about) 1 <!DOCTYPE html> 2 <!-- To "deploy": gsutil cp -Z oncall.html gs://kubernetes-jenkins/ --> 3 <html> 4 <script> 5 // extracted/modified from kubernetes/test-infra/gubernator/static/build.js 6 function get(uri, callback) { 7 if (uri[0] === '/') { 8 // Matches /bucket/file/path -> [..., "bucket", "file/path"] 9 var groups = uri.match(/([^/:]+)\/(.*)/); 10 var bucket = groups[1], path = groups[2]; 11 var url = 'https://www.googleapis.com/storage/v1/b/' + bucket + '/o/' + 12 encodeURIComponent(path) + '?alt=media'; 13 } else { 14 var url = uri; 15 } 16 var req = new XMLHttpRequest(); 17 req.open('GET', url); 18 req.onload = function(resp) { 19 callback(req); 20 } 21 req.send(); 22 } 23 24 function build_table(req) { 25 var data = req.response; 26 var oncall = JSON.parse(data).Oncall; 27 var keys = Object.keys(oncall).sort(); 28 29 var html = '' 30 for (var i = 0; i < keys.length; i++) { 31 var key = keys[i]; 32 var person = oncall[key]; 33 html += '<h2>' + key + ': '; 34 if (person) { 35 html += '<a href="https://github.com/' + person + '">'; 36 html += person + '<img src="https://github.com/' + person + '.png?size=125"></a>'; 37 } else { 38 html += 'None' 39 } 40 html += '</h2>'; 41 } 42 43 // trivial XSS, but storage.googleapis.com is even more trivial XSS! 44 document.getElementById('oncall').innerHTML = html; 45 46 document.getElementById('updated').innerText = req.getResponseHeader('date'); 47 } 48 49 get('/kubernetes-jenkins/oncall.json', build_table); 50 </script> 51 <title>K8S Oncall Rotation</title> 52 <style> 53 body { background-color: #eee; padding-left: 30%; } 54 img { padding-left: 10px; max-width: 125px; } 55 </style> 56 <body> 57 <h1>Kubernetes Oncall Rotation</h1> 58 <p>Updated: <span id="updated">Never</span></a> 59 <div id="oncall">Loading...</div> 60 <div><h2>release managers: <a href="https://git.k8s.io/sig-release/release-managers.md#release-managers">on GitHub</a></h2></div> 61 <sub><a href="https://storage.googleapis.com/kubernetes-jenkins/oncall.json">data source</a></sub> 62 </body> 63 </html>