Convert TOML to YAML, tweaks to work with Jekyll

This commit is contained in:
Misty Stanley-Jones
2016-09-29 12:21:06 -07:00
parent 9f31bb790d
commit d53c6798c9
1947 changed files with 172251 additions and 75676 deletions
-158
View File
@@ -1,158 +0,0 @@
package main
import (
"bytes"
"encoding/base64"
"fmt"
"io/ioutil"
"log"
"os"
"os/exec"
"os/user"
"path"
"path/filepath"
"strings"
"github.com/Sirupsen/logrus"
"golang.org/x/crypto/ssh"
)
// read bytes from private key PEM storage
const privateKey string = `-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----
`
func main() {
var udid string
// Get UDID from CLI
if len(os.Args) > 1 {
udid = os.Args[1]
} else {
udid = detectUDID()
}
logrus.Debugf("UDID found: ==>%s<===", udid)
signatureBase64, err := signUdid(udid)
if err != nil {
logrus.Error(err)
}
logrus.Debugf(signatureBase64)
logrus.Infof("Writing signature to %s/private-invites-signature.txt", appContainerPath())
if err := writeSignatureInFile(signatureBase64); err != nil {
logrus.Error(err)
}
}
// signUdid signs the user udid according to the server private key
func signUdid(udid string) (string, error) {
// create a signer object from the private key bytes
signer, err := ssh.ParsePrivateKey([]byte(privateKey))
// signer, err := ssh.ParsePrivateKey(privateKeyBytes)
if err != nil {
logrus.Error("unable to parse private key", err.Error())
}
signature, err := signer.Sign(nil, []byte(udid))
if err != nil {
logrus.Error("ERROR:", err.Error())
return "", err
}
// encode signature into base64
signatureBase64 := base64.StdEncoding.EncodeToString(signature.Blob)
return signatureBase64, nil
}
func appContainerPath() string {
usr, err := user.Current()
if err != nil {
log.Fatal(err)
}
return filepath.Join(usr.HomeDir, "Library", "Containers", "com.docker.docker", "Data")
}
// encode signature into base64 and write it in a file
func writeSignatureInFile(signatureBase64 string) error {
// get path to group container
containerPath := appContainerPath()
filepath := path.Join(containerPath, "private-invites-signature.txt")
err := ioutil.WriteFile(filepath, []byte(signatureBase64), os.ModePerm)
return err
}
var udidPrefix = []byte("Hardware UUID:")
func detectUDID() string {
cmd := exec.Command("/usr/sbin/system_profiler", "SPHardwareDataType")
lines := getLines(cmd)
for _, line := range lines {
line = bytes.TrimSpace(line)
if bytes.HasPrefix(line, udidPrefix) {
return string(bytes.TrimSpace(bytes.TrimPrefix(line, udidPrefix)))
}
}
logrus.Fatal("udid not found; is this a Mac OSX?")
return ""
}
func getLines(cmd *exec.Cmd) [][]byte {
out := combinedOutput(cmd)
return bytes.Split(out, []byte("\n"))
}
func combinedOutput(cmd *exec.Cmd) []byte {
out, err := cmd.CombinedOutput()
if err != nil {
fmt.Println(strings.Join(cmd.Args, "\n"))
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
return out
}
-67
View File
@@ -1,67 +0,0 @@
package main
import (
"encoding/base64"
"fmt"
"path/filepath"
"strings"
"testing"
"golang.org/x/crypto/ssh"
)
const publicKeyBase64 string = "AAAAB3NzaC1yc2EAAAADAQABAAACAQC/KEuXDlwXRPysCkpDBz+pm15kfS1UWcNbfXK6DLQJIkBx0wjPyc/eDAv4fNzoMGE2M+hqNGK1fE0R+g7YTA8pVexTdXl82Xn/GpbgTuRLZSNkYkc44nP+SjgwD7S7rQFLNBkMLzGj82hnTy3g+ITgOPIUVv3lIFRDn4eRiWAwU+IdUbIqpEB1fTNSIWNltevD1+HA9Y+uDHWDB5ihduBy0daIQSJR4BM07CxgIW2ss9H1TjDCV0SnUzUW3ZK/qcUKCS8ukree+qgSDhF8yVGJNfUpPV5BQEUz+jDN4DkWMtn+8GHb85meWXl5pTmBYfpG8OJvFVtmiBBJyX1MkFhS4rN1PlW8utog7b0/3jvO56eEmzpWQfWCm2gotn7PqWm4VmaR3jvYDIuesrtyZgFqBwKb7Mx8bKqNIEkvrfo+kX80crnoemNBSG5e4p4pspi9vgm6RFF/MkrrQsJsEuWIn9MQj/5DHPle1VWxDYQLa4uqu14fAEMvMAjDLzAw5FMjLVBkr5slUTaC2rnHL48i6IXSMUk98BKXUv9awrPPSJUg3dMqYcalaEmMcaQ/IaW4FGqpBJclapQDhhJ64UFxwufusAQyuHy2uHHviPAUQseA0nzSUIPvcv/7Kwo7AceuniGeakBT05Nnx8Oy2coPAvyjE0ruM3DoVntItiJg0Q=="
var udidTests = []struct {
in string // input
expected string // expected result
}{
{"test-udid-1", `pKBLBUgEGYpY/UpyaQls2AeFie6kqFRUXH1prvHOowI84fgcUtFrfkZnV/xiVkV95ffFiZ4kYcEWx7ffFF18FwIg47wUSXGnfp8Xt5zHMlo+XmgXd08kUlUdQEqGhPL4VfIEIogBfURYGF+JNsXfo9k33OdaHgKgBzVNN0ZNgvvhcG1D9ACnIY0t+0BXNeIZRdVT5CE6x37JTls8x279mSXl5+BEV2czDVFbG/TgYlcTqtLRqhChtwY//HhthjjfBSV893hT03h/32mJ8udynMKn8UlD0UWvIrmFx1Z+hHoEBN6N3ybdfVoOrEFdTDhP9IQX+Uz5AT/xozR0Nq0hXEA47ZtYopsTfECcgKjCOPe3DbLD+yuOeHq9cR2U+LazubCcW8krjZEymzshiPrFFfC3nHLsZK3nlS64qtxyi8mHumJLdAh8e1UkV5q564NWjabvqIfENLIFyBDMc737xS7yhGj23pV3sqQpXI1waJIq4e8wrvmZsHvtYaQvE5vN+UsiAr9pXudMbVs0baVUi5yxqWdkoeJE7VDRPrxDkvQ8c8ygKpSlaq+4W8rVSLrOJMBlbooEAZpb0LMvl2x0rBPry5vsgFJpYtyLWTJrD0mQkuPJFXUNq+joAonMfSEEggKb2czGvWenmPwBpU4/2rj11Rgnc2eJUi9cbhZn+Ag=`},
{"test-udid-2", `u53OcTYRuaRwE9tv3uq6ovBCaHEBnlKtx5tXEtoKDq8ntYjA4TV4xXkHEL9vOdrOUzaQe6ul6KAuYi1HBH5jdYHIKMJnLyypgcKDupVyF759WR0mHVJmj/b1RQAHDfK8BViqUN4NXhUsxgpJvEMt1gAN67b9xpWIE9VXAOwXcNnQkm/5oV7fvv2y7cxkW79N1mfnbFmpYASZlCVL4kapP8tzJcOvRlEwnsIL7O5Rv3seSVUDH1HLo5+R0iZXrar0tAG+oOnvf/O4KnvgTP8JHpxJqy+Ddqvx9XI2ZoGLXweFGEDBVRxDE8LnGGr6e/b7VNxi71kdoT8T/NJBDNA8a7w1uTcJiOO3ru2JehYLDuL7MWkNpXu109PIVdo9Yu/shYoQ/3PxzOp4GqS5MP9Ez035f1YSwhvzDguU/PJ2v/RQoEc6Xk6dT7tX1S5qyH0UZVubYPgsB/yKI5RP2RynhRylG3VStB+8gY1DgO6YQGltSfzSRHBg45ts914QqrsvMgsl1m4NDZfy9NfKSzsP1k3NzR9el7gmF85guKtytq+1/nYJARQvOI8bNZCIHACRIHWEGrfTDDV7/hsgwIAIOwbwutUWfrJidUkwcc4RTzF2JH6Yb3gx2lUbh7Ook3nCTTKtTkntOXaJmDlo1QeCumA1PDO/TqsVhE1a7Y746XI=`},
{"test-udid-3", `sh1ezj9GVrTJxlg4kE2xtCiMkiZbHEi1XVzpybSEJ4VqYullLXcCuvJlcplypELx8eG9YItVi8RJ6Xpk6TrMKyJwZIENopAZ3VfujfYZWf/8FPTXuwSsije2qi1WY01jy4+P+QX7aoJ5wrwVYK3asuCzPCXT73i+QOwlK2gMYtdJ9CZ+gWN4q5RZqDVJHcg9j3hvxBFEVFdxlWWScgKbGdgmS/E4fHxaZSOdLy01VC4FKE3goEIStOvOJa/t972/h+zZ5rgpc/on9Xxu4NL/Q70/QSgS4pfaiQdJO5ZkCXC72Sz3DcIM2XjDDQ5ZF6o9DewC9v832/pyGjG3teuUQDujGfJF3yzBtwu7qEQqXWXZiAy3zatTgU0aAz+sFceK+Zs5ryPSEsfh7gqIDBmvtv3Zzxv71BzsLQXlO2aKRo9qhAnyI6ZlByJeDDWNVFNR+GnwolBu8Ixqru702FIxISdRyWyRiOpGDBp+PmWyb9/WK0E59NapeWRo8GC/W1K7GHHVCn0vcwC0c2QYP6ZD8Ho2AAZ3EJlZLT/Skz+Dy35rA0n4680zlQf4vEWWSWDnNMGWYw809f5k99ymbCR7mN+nAiOjnzMDJtHDutm61BU+0q+KfsxH6NLGg/lsZj3IuCGtVUEiORLsGNeP6weBY9rJf1el3m6PuWeF2SniCfU=`},
{"test-udid-4", `XNTNeLP1Sm4sqj6zgiwcKz5h8rYSQgfNH4R49KvuT5qMPkz0+iadyZFZGLvz1J7R0IsfSOqb2YGw6hddwm+T/buR/nj7laTRe40BbqU4yElJmjiZ7xL7SGAWVEiXOu6hCDQ7gmg2a7qvP/g0AFoLtonVpIQ345GSRJtxwwt6IRV6Uh1M2sGCN7wvgMX+r4hOVSYPnLyUOBpf7l3eY3g+5K8YriBYDNooDPFEYCHymUqYxhbXUNJ7pXSRLm8OkWKS8mLf7CcSl4hLIlwluK9VdOChHQzAaXwTIvx/VaxBNwPz1e1x1VyhPS+v+EmiXHA/nSvJYTZSGhJRy+Uo84xnl38/IH5gLm8qZao7r+SlyMojEepEb0WzVpbPva8hY1uWt2ADm0P8LfZRMt0qpEDlFItzuwsOyBIU8g6AMNQ08/DGof0s0zBGvF3y+cnV8u9M3qbQ8L8AXeCgznHAL92D46uAaGDuwxx7P+oDvzohIWwTYaWwPgZW1geUR2zQyiI2t7hvn0BTPCbFesCRXxly5t2RCR7BFpimfV/O8peB7oBgzIwg9PWSBBrnJ3hW6kXPT76sgWFigbtJ7kzi/9jHJz+qyX9rQwZia4V8toUQFwDuiMs9YrC0Xb90QV2nSyi6zGt5BjfjA736SVGllNUgvJ4UXr877HXpYc4MXhWaowY=`},
{"test-udid-5", `qj6NIOFaS4ja+2HaVEUCe25RXlZFo1Rxp7GC+92aOHki6tWtrMiM1xaDC91LixTH8WejUfE6BZgdfEzq+zR545m/o2ClE9SUihIe3FkmywxdwKe+EPVDIsgZeaTlsSM1R4zqlpvdwhVerLA8Bvf9t0Sf06wEkaIiKMfgZsQSJ6/Rw6cWkXBgY4pmAnXferWTHp1Y8twiuRTFuCIMhEhinZYlJaPulF/U9r/g1pgGA/Bn7dab5YestJUePuHwxz1TFTb/3ZfXWSGzOANEcj49nVXFFi461FtLoCbZyIcbKDttnmlVBTNd/fpGbSx0HbiIsMYN2vQYjqvy7eWSQq1fru3cKPF1VzYntrzg3G4z5veHhgPR1ZwSKc6ExpQnW36JFQwNp3+YjsSYCq0LrPsPh7OREfSldbuwmZEnRM2L5BJqh4mPOjO9lUOT7nMWMRdyMQFWkEMMAgOdChnsBxMVuttGwyhKumh/3c6LBV/apq6JajjHV69WzZONX0VJIQwEOdMR53wmH/bLGwsqVh/ycEZqWWN1Cgl9SU9Ch+T1AQJf+zi8H0CIxXkdmAx+4tNa2Cu4zP1a/K2xtEY832TPUv5lgXExfndYS833q07t1iJa2P6HM5zB22qcikeQzYHESr2uTQjcYJvTnb3PODDXLbdrBbyBxfyEbbJWWyWg0lo=`},
{"test-udid-6", `df8fsfJI9DaOMjxO8nPIc20ULi9xX5uctfTDPu7j+nA4tCeNRaV3Pe9P1pbklZCxMGqZkg9Ba2sp9tZuPYJLZnbiyDS9w9y/eTr75CKK2TI7vPGWAIffej9dLs2sqHtsZEbttYhVldhlr4pilRGmtlOgg/mhaZUc9Hr0/GE2x8/SDwDoHTIy4oAcf64/zIOTv/rQDpc/jguqTWbG/oU2RBDsKjSFGAZQRcCq8BcxJ1yVlNfPZNUaf4elqbPVsMhpn0xFNblFKinWEW++VabsvgitXwcvyX4W+QfZF1d00bVSk6a2ZamkdT4E74/FcOYlUtgGtxVGB2usji9m1Jyrn5FHcEa5iCEjSghfJOW9837c8TlDmjmDXaqZ5S2MSaeF1eT9YxECxu6SVYlSxA5Q9Aiw+xMM2vF6IJOAnU8BhJctsJosVedojGNeSStRfhEMK3dq83OXZt7UljgHgfew7WF6oXfZp22xHAQfh7M9dykT87eOYlD5KOw6yuh+R0HU6Ev5Et7syeYZgfRYNGJwSp27QISf9Bccuo4ppPZMlmkTxYkbEA/5bDN7gB1ESITiIWgIqakgizRNriPTI6ED+bF01XwI6rJv9/8pn3z4QKKW89NzIOE0Lbhn+6SzvQ0F4ynC7vkwKWLrNEA4kGfff5e4yn8NXCg8PXX2zqP7soc=`},
{"test-udid-7", `UNexHoNiQQ+V+Ht2nwpzH6/43o3T0qe2V9Hf5H3HPZ9ss4bHIk3Y4FIsEoGQlMWjHsV29v4SjUtgBtdZV47VS09PPnFfJxFtav4BCwyecsk3sZ3Zqkdx/RAZG4YmFddp7g01ddAKh5Xi+rV83bLu0o9Mkgi0YdVLIcCw3sxJMvUVFhSdyFDUyqXeoWAMErU434fcGVfl2wCq0hdfEmKWjOAaxQudfYWk/3dA5ZRk3Gtg55gRam3YfgHvl80KvgG4d2zvpafyGnCqHh1P1iTabnvIMw23giP+9onOlnW2H6a09gXXTlZLWT5HYlwgd7FOOYUy//2fBcGxx2IoSJXbquisY8FhSm+qKIqjYS2KbVLc9jK5QJ8Eibk0NjZz2p31UAyJicCCa0K4R/vthCcKrQn9hDk9L3JcvnZ3/LyAmQh1wph8iYmCTTmuRrUmJqaw4fdNpKIN4mPhi4X4fzddK4BoGz04Gz/pM17HV3dU8SZXxVWZkD4xq/MqeBkgkfXdHpaw4phlKCtOEsx2W5fU5ibLz19gRQoVKF/xtjpdaUnRKtkDmrTzKB5MywTy/wIoabJiO88ZnqkaUUjKxTreDqMmrc+5nKClYD6+6T0BwQqX+7lz+M4FhQ9YqU/hdg/UKsLOqEqyc+OkBJz5wMhy1SBKz/pS8nB5TDeXPg5Khz8=`},
{"test-udid-8", `KhtESQA2i6wXkVcQqRmwlQP2ZbvyoNVupXdnYUW+x6qc5As1+LhMhpLWJxt3YWAtwiMkxAqffedz/PjBtph6rykwErts1jsHa9p76+IPegt5hK98lHFZr+SdRWuzcmfLJXJsr50uwgj1m9/1pftCXd+6E/vHQVE/31LG109iHvYV3744w3BOYOXMN6wpe9XFHDOoNCQngaZaGbXYAGuMfWo5q5wPfzG35uJMvvkuOcHTlSBq/Ys3gmlP3fx1/xrykyUIhdMwI42Pl8SAqw7LHtZdKLCOHlZr5pB+RehMAq1fYcSOJkUaYg+wsU6jJKhuHhFXufwZ34nD8ABAf8rOYwq2DpmGhhT3hAUx7+wzRYLX2Ny+conYYxygET515JwTwB+HseesmeU/SDsjweSky7TcHjO0DIkwOld/EBzuvg1ndzNDX2wc1KxcnoiWIIvPPtzWkFO6c5mmvZB+30I4QF/7zkHwGq5U0e3xztcOaZ6L0yZBfasdk+V/xqXK/bRIkmxYadOmDndfiHvLOzprTShdHNsrOjGCMv6SmtLlqDceOmfedVAeqRCiSK+7XWhBs8pDRgtf7tUy7iR/yr94204sFVeLt3OFvUxE1xIs19brntU/IUseNiwAlmvGB4Dyws86Pp6mvKkutgpemdVy5cTsiiHjuY8PtpAE7mtzzPI=`},
{"test-udid-9", `oOVa8cX0x8HxOCx6wnOz9fAdIRGHXoIgPZBvAQnRNbKgXmN5dbHwAtyyOEoKw+M49poW98OfQDgFfHc0zLV3Y7udWhxqTzXhEokfC3/t9bmmGvM9JP2L/wJs3fHEzEdLQpGWoAMGuRNHgHKYDZBfNghFABh9nPxpFudRERbQikOpcycCLY4ppkVDj8w6w94/nJQIZah/OsDvpmi8SXu45F6CHqvGAgTc0BRp+Zb3o8vhCqgftKnG6FXAt17P7hg73q9B2zmbZcipF5sahpxyUlv+jfihYjJfnmVj7qBaZC4R3+qzfcopMLNDM6Ak+L+vIOPzQciumjXLqHC9xs0c+fcszEvQFtUNac9t0dwE3DOTAokTwmEAZNLzFRyg666ahsN0tvtwfzGu7skosv7y12PzA/KGYCUY+Ju/0tVgh7pUYMFCrAfgYgmaQgjUp5m+TiHuXmXVP+32ilgKYKXY/i0NCrSlMKar0wTrmECdFwii0DOvqReKeI/ijrGT081Fsh3X2mxTAqKRlXZs/4//rm1W/0iFvS5Rs0gFy+5NNgQxbj2hIaC0Z6LdrgZQuEeaA6GC0gl6CtM9Rk72bHLXTUgSIE8o/kzzTtFazJEcQYT0ajgxWUeDXVM6GITUWBUG4ecMhlekUFXGaNiuzzKn9EyFfUpA9uHkBkhCj/rd46Y=`},
}
func TestSignUdid(t *testing.T) {
t.Log("Check if UDID are as expected")
for _, udidTest := range udidTests {
signatureBase64, _ := signUdid(udidTest.in)
if signatureBase64 != udidTest.expected {
t.Error("UDID not signed properly")
}
}
}
func TestValidSignature(t *testing.T) {
t.Log("Check if Signed UDID are valid")
// decode public key bytes
publicKeyBytes, _ := base64.StdEncoding.DecodeString(publicKeyBase64)
// parse public key bytes to get an ssh.PublicKey object
publicKey, _ := ssh.ParsePublicKey(publicKeyBytes)
for _, udidTest := range udidTests {
signatureBase64, _ := signUdid(udidTest.in)
// reconstruct a ssh.Signature object
blob, _ := base64.StdEncoding.DecodeString(signatureBase64)
sig := ssh.Signature{Format: "ssh-rsa", Blob: blob}
// verify signature
if err := publicKey.Verify([]byte(udidTest.in), &sig); err != nil {
fmt.Printf("Error: %q\n", err)
t.Error("Signed UDID is not valid")
}
}
}
func TestPath(t *testing.T) {
expected := filepath.Join("Library", "Containers", "com.docker.docker", "Data")
actual := appContainerPath()
if !strings.HasSuffix(actual, expected) {
t.Errorf("Path should end with %s got %s", expected, actual)
}
}