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>