From 5206bcd72f52bece3ff35268a2284ec4e84c6109 Mon Sep 17 00:00:00 2001 From: Rob Austein Date: Sun, 3 May 2015 23:15:33 -0400 Subject: Initial commit of my silly build script collection. --- http-what-repos.py | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100755 http-what-repos.py (limited to 'http-what-repos.py') diff --git a/http-what-repos.py b/http-what-repos.py new file mode 100755 index 0000000..27125bd --- /dev/null +++ b/http-what-repos.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python + +# List Cryptech git repository URLs by scraping them from the +# automatically generated Trac page. Yes, we know too much about how +# the generation script and Trac format this page, c'est la vie. + +from urllib import urlopen +from xml.etree.ElementTree import ElementTree +from tempfile import NamedTemporaryFile +from os import environ, fchmod + +url = "https://wiki.cryptech.is/wiki/GitRepositories" + +cacert = '''\ +-----BEGIN CERTIFICATE----- +MIIERzCCAy+gAwIBAgIBADANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJVUzEL +MAkGA1UECBMCTUExEDAOBgNVBAcTB1JlYWRpbmcxITAfBgNVBAoTGEdydW5jaHdl +YXRoZXIgQXNzb2NpYXRlczEkMCIGCSqGSIb3DQEJARYVcG9zdG1hc3RlckBoYWN0 +cm4ubmV0MCAXDTEwMDkyNTA1MzQ0MloYDzIxMDkwOTI1MDUzNDQyWjB1MQswCQYD +VQQGEwJVUzELMAkGA1UECBMCTUExEDAOBgNVBAcTB1JlYWRpbmcxITAfBgNVBAoT +GEdydW5jaHdlYXRoZXIgQXNzb2NpYXRlczEkMCIGCSqGSIb3DQEJARYVcG9zdG1h +c3RlckBoYWN0cm4ubmV0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA +wf723VEaWozuyJCytEgFkEMXDd17RTChb4RCpqFrlswbKEk4/Vw7IvBeLYNfl5F8 +1hx6ca7CU4qD+4tVkanJ7dJhT9a1jWPKjx/Xz8rpZBSDzgiDZNlgX4giDHjG3Ju8 +QcT9Elpx4SEBxeaVEl2AXXsShv1PrSpCt9WUdS+0NQkA7z3cXASNPOBFoITM37pC +21nuQuocpjFTaGXw5s3/FhVgcKSUHmQN5UdYK5N2w7pcn7UV2v92UFYSG9cEjQL5 +DfPqzJeLemzmUl+XBqSfY/gPCyJdAPOudflnFyptVv3BrmMQYEyJBeRnt2o5aYWd +q1w2wB2HPsEglm1K19gEoQIDAQABo4HfMIHcMAwGA1UdEwQFMAMBAf8wCwYDVR0P +BAQDAgEGMB0GA1UdDgQWBBQkrUZV1MeYpBcTnpsuT60UPRjCZjCBnwYDVR0jBIGX +MIGUgBQkrUZV1MeYpBcTnpsuT60UPRjCZqF5pHcwdTELMAkGA1UEBhMCVVMxCzAJ +BgNVBAgTAk1BMRAwDgYDVQQHEwdSZWFkaW5nMSEwHwYDVQQKExhHcnVuY2h3ZWF0 +aGVyIEFzc29jaWF0ZXMxJDAiBgkqhkiG9w0BCQEWFXBvc3RtYXN0ZXJAaGFjdHJu +Lm5ldIIBADANBgkqhkiG9w0BAQUFAAOCAQEAMeBzm4x6hlwbcrR8AcjSP4S/8+pW +4WsmkuKlZMyP/E4rc2DpVBi9WRnLtQoQ+FDU47VkG1D97i+HYx1Ky7W8oU4YB3Xr +ptoAenVmiQOVnbMluuQlxBa8JbOizt+BzL0NJEC6gHvCYT5SmFFsJgXBQZNPpRJb +cDzuilf3b6vCFtRL+hD75VFLkljQWUWt59cNPGhtBItsq3q72LZ2ftPgk9ufC2h3 +whlvaaZldSFGnPRcFgXYYUootSh0yUW2lIHn52s/tPRN6XXnrdz+cLUCCchSkPOi +Q9q/UFgaXUetsqlb56PINOrLZUpAfqC4xFBVVo2oI0ubFq173QlATQpn/w== +-----END CERTIFICATE----- +''' + +try: + ssl_cert_file = NamedTemporaryFile("w") + ssl_cert_file.write(cacert) + ssl_cert_file.flush() + try: + fchmod(ssl_cert_file.fileno(), 0600) + except: + pass + environ["SSL_CERT_FILE"] = ssl_cert_file.name # OpenSSL looks for this + environ["GIT_SSL_CAINFO"] = ssl_cert_file.name # Git looks for this + + for x in ElementTree(file = urlopen(url)).iter("{http://www.w3.org/1999/xhtml}tt"): + if x.text.startswith("https://git.cryptech.is/") and x.text.endswith(".git"): + print x.text + +finally: + ssl_cert_file.close() -- cgit v1.2.3