[ARVADOS] updated: 1.2.0-34-gd69693c92

Git user git at public.curoverse.com
Mon Sep 10 16:18:31 EDT 2018


Summary of changes:
 lib/controller/federation.go      | 10 ++++------
 lib/controller/federation_test.go |  7 +++++--
 sdk/go/keepclient/perms.go        | 10 ++++++----
 3 files changed, 15 insertions(+), 12 deletions(-)

       via  d69693c92dbd82cfe5e797f2dbffc6f32e0e2ff0 (commit)
      from  9c1f240500cca97fe986b529fcfc9c7f9fe1a283 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


commit d69693c92dbd82cfe5e797f2dbffc6f32e0e2ff0
Author: Peter Amstutz <pamstutz at veritasgenetics.com>
Date:   Mon Sep 10 16:18:01 2018 -0400

    13993: Consolidate SignedLocatorPattern with keepclient.SignedLocatorRe
    
    Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <pamstutz at veritasgenetics.com>

diff --git a/lib/controller/federation.go b/lib/controller/federation.go
index 3467a6de9..c4ccb15d2 100644
--- a/lib/controller/federation.go
+++ b/lib/controller/federation.go
@@ -19,6 +19,7 @@ import (
 	"git.curoverse.com/arvados.git/sdk/go/arvados"
 	"git.curoverse.com/arvados.git/sdk/go/auth"
 	"git.curoverse.com/arvados.git/sdk/go/httpserver"
+	"git.curoverse.com/arvados.git/sdk/go/keepclient"
 )
 
 var wfRe = regexp.MustCompile(`^/arvados/v1/workflows/([0-9a-z]{5})-[^/]+$`)
@@ -72,9 +73,6 @@ func (h *GenericFederatedRequestHandler) ServeHTTP(w http.ResponseWriter, req *h
 	h.handler.remoteClusterRequest(m[1], w, req, nil)
 }
 
-var SignedLocatorPattern = regexp.MustCompile(
-	`^([0-9a-fA-F]{32}\+[0-9]+)((\+[B-Z][A-Za-z0-9 at _-]*)*)(\+A[A-Za-z0-9 at _-]*)((\+[B-Z][A-Za-z0-9 at _-]*)*)$`)
-
 type rewriteSignaturesClusterId string
 
 func (clusterId rewriteSignaturesClusterId) rewriteSignatures(resp *http.Response) (newResponse *http.Response, err error) {
@@ -93,7 +91,7 @@ func (clusterId rewriteSignaturesClusterId) rewriteSignatures(resp *http.Respons
 
 	// rewriting signatures will make manifest text 5-10% bigger so calculate
 	// capacity accordingly
-	updatedManifest := bytes.NewBuffer(make([]byte, 0, len(col.ManifestText)+(len(col.ManifestText)/10)))
+	updatedManifest := bytes.NewBuffer(make([]byte, 0, int(float64(len(col.ManifestText))*1.1)))
 
 	scanner := bufio.NewScanner(strings.NewReader(col.ManifestText))
 	scanner.Buffer(make([]byte, 1048576), len(col.ManifestText))
@@ -107,10 +105,10 @@ func (clusterId rewriteSignaturesClusterId) rewriteSignatures(resp *http.Respons
 		updatedManifest.WriteString(tokens[0])
 		for _, token := range tokens[1:] {
 			updatedManifest.WriteString(" ")
-			m := SignedLocatorPattern.FindStringSubmatch(token)
+			m := keepclient.SignedLocatorRe.FindStringSubmatch(token)
 			if m != nil {
 				// Rewrite the block signature to be a remote signature
-				fmt.Fprintf(updatedManifest, "%s%s+R%s-%s%s", m[1], m[2], clusterId, m[4][2:], m[5])
+				fmt.Fprintf(updatedManifest, "%s%s%s+R%s-%s%s", m[1], m[2], m[3], clusterId, m[5][2:], m[8])
 			} else {
 				updatedManifest.WriteString(token)
 			}
diff --git a/lib/controller/federation_test.go b/lib/controller/federation_test.go
index 1b9bd1122..f70a8981f 100644
--- a/lib/controller/federation_test.go
+++ b/lib/controller/federation_test.go
@@ -16,6 +16,7 @@ import (
 	"git.curoverse.com/arvados.git/sdk/go/arvados"
 	"git.curoverse.com/arvados.git/sdk/go/arvadostest"
 	"git.curoverse.com/arvados.git/sdk/go/httpserver"
+	"git.curoverse.com/arvados.git/sdk/go/keepclient"
 	"github.com/Sirupsen/logrus"
 	check "gopkg.in/check.v1"
 )
@@ -313,11 +314,13 @@ func (s *FederationSuite) TestGetRemoteCollection(c *check.C) {
 `)
 
 	// Confirm the regular expression identifies other groups of hints correctly
-	c.Check(SignedLocatorPattern.FindStringSubmatch(`6a4ff0499484c6c79c95cd8c566bd25f+249025+B1+C2+A05227438989d04712ea9ca1c91b556cef01d5cc7 at 5ba5405b+D3+E4`),
+	c.Check(keepclient.SignedLocatorRe.FindStringSubmatch(`6a4ff0499484c6c79c95cd8c566bd25f+249025+B1+C2+A05227438989d04712ea9ca1c91b556cef01d5cc7 at 5ba5405b+D3+E4`),
 		check.DeepEquals,
 		[]string{"6a4ff0499484c6c79c95cd8c566bd25f+249025+B1+C2+A05227438989d04712ea9ca1c91b556cef01d5cc7 at 5ba5405b+D3+E4",
-			"6a4ff0499484c6c79c95cd8c566bd25f+249025",
+			"6a4ff0499484c6c79c95cd8c566bd25f",
+			"+249025",
 			"+B1+C2", "+C2",
 			"+A05227438989d04712ea9ca1c91b556cef01d5cc7 at 5ba5405b",
+			"05227438989d04712ea9ca1c91b556cef01d5cc7", "5ba5405b",
 			"+D3+E4", "+E4"})
 }
diff --git a/sdk/go/keepclient/perms.go b/sdk/go/keepclient/perms.go
index 68f0b46be..a77983322 100644
--- a/sdk/go/keepclient/perms.go
+++ b/sdk/go/keepclient/perms.go
@@ -65,7 +65,9 @@ func SignLocator(blobLocator, apiToken string, expiry time.Time, blobSignatureTT
 		"@" + timestampHex
 }
 
-var signedLocatorRe = regexp.MustCompile(`^([[:xdigit:]]{32}).*\+A([[:xdigit:]]{40})@([[:xdigit:]]{8})`)
+var SignedLocatorRe = regexp.MustCompile(
+	//1                 2          34                         5   6                  7                 89
+	`^([[:xdigit:]]{32})(\+[0-9]+)?((\+[B-Z][A-Za-z0-9 at _-]*)*)(\+A([[:xdigit:]]{40})@([[:xdigit:]]{8}))((\+[B-Z][A-Za-z0-9 at _-]*)*)$`)
 
 // VerifySignature returns nil if the signature on the signedLocator
 // can be verified using the given apiToken. Otherwise it returns
@@ -78,13 +80,13 @@ var signedLocatorRe = regexp.MustCompile(`^([[:xdigit:]]{32}).*\+A([[:xdigit:]]{
 // This function is intended to be used by system components and admin
 // utilities: userland programs do not know the permissionSecret.
 func VerifySignature(signedLocator, apiToken string, blobSignatureTTL time.Duration, permissionSecret []byte) error {
-	matches := signedLocatorRe.FindStringSubmatch(signedLocator)
+	matches := SignedLocatorRe.FindStringSubmatch(signedLocator)
 	if matches == nil {
 		return ErrSignatureMissing
 	}
 	blobHash := matches[1]
-	signatureHex := matches[2]
-	expiryHex := matches[3]
+	signatureHex := matches[6]
+	expiryHex := matches[7]
 	if expiryTime, err := parseHexTimestamp(expiryHex); err != nil {
 		return ErrSignatureInvalid
 	} else if expiryTime.Before(time.Now()) {

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list