You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficcontrol.apache.org by ra...@apache.org on 2018/10/26 20:38:06 UTC
[trafficcontrol] 02/02: Fix TO Go DS, DSS to create urlsig params
This is an automated email from the ASF dual-hosted git repository.
rawlin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficcontrol.git
commit aacb65a08098dc439a37de0eed31954016a54c70
Author: Robert Butts <ro...@apache.org>
AuthorDate: Fri Oct 19 16:34:16 2018 -0600
Fix TO Go DS, DSS to create urlsig params
Fixes #2919
---
lib/go-tc/deliveryservices.go | 2 +-
lib/go-tc/enum.go | 2 ++
.../deliveryservice/deliveryservicesv13.go | 23 ++++++++++++++++++----
.../deliveryservice/servers/servers.go | 11 +++++++----
4 files changed, 29 insertions(+), 9 deletions(-)
diff --git a/lib/go-tc/deliveryservices.go b/lib/go-tc/deliveryservices.go
index 55e1cc8..504e957 100644
--- a/lib/go-tc/deliveryservices.go
+++ b/lib/go-tc/deliveryservices.go
@@ -391,7 +391,7 @@ func (ds *DeliveryServiceNullableV12) Validate(tx *sql.Tx) error {
func (ds *DeliveryServiceNullable) Sanitize() {
ds.DeliveryServiceNullableV12.Sanitize()
- signedAlgorithm := "url_sig"
+ signedAlgorithm := SigningAlgorithmURLSig
if ds.Signed && (ds.SigningAlgorithm == nil || *ds.SigningAlgorithm == "") {
ds.SigningAlgorithm = &signedAlgorithm
}
diff --git a/lib/go-tc/enum.go b/lib/go-tc/enum.go
index 943104f..cef0c72 100644
--- a/lib/go-tc/enum.go
+++ b/lib/go-tc/enum.go
@@ -137,6 +137,8 @@ func DSTypeCategoryFromString(s string) DSTypeCategory {
}
}
+const SigningAlgorithmURLSig = "url_sig"
+
// CacheStatus represents the Traffic Server status set in Traffic Ops (online, offline, admin_down, reported). The string values of this type should match the Traffic Ops values.
type CacheStatus string
diff --git a/traffic_ops/traffic_ops_golang/deliveryservice/deliveryservicesv13.go b/traffic_ops/traffic_ops_golang/deliveryservice/deliveryservicesv13.go
index f1dfba5..c6be2d1 100644
--- a/traffic_ops/traffic_ops_golang/deliveryservice/deliveryservicesv13.go
+++ b/traffic_ops/traffic_ops_golang/deliveryservice/deliveryservicesv13.go
@@ -201,7 +201,7 @@ func create(tx *sql.Tx, cfg config.Config, user *auth.CurrentUser, ds tc.Deliver
ds.ExampleURLs = MakeExampleURLs(ds.Protocol, *ds.Type, *ds.RoutingName, *ds.MatchList, cdnDomain)
- if err := EnsureParams(tx, *ds.ID, *ds.XMLID, ds.EdgeHeaderRewrite, ds.MidHeaderRewrite, ds.RegexRemap, ds.CacheURL, dsType); err != nil {
+ if err := EnsureParams(tx, *ds.ID, *ds.XMLID, ds.EdgeHeaderRewrite, ds.MidHeaderRewrite, ds.RegexRemap, ds.CacheURL, ds.SigningAlgorithm, dsType); err != nil {
return tc.DeliveryServiceNullable{}, http.StatusInternalServerError, nil, errors.New("ensuring ds parameters:: " + err.Error())
}
@@ -512,7 +512,7 @@ func update(tx *sql.Tx, cfg config.Config, user *auth.CurrentUser, ds *tc.Delive
}
}
- if err := EnsureParams(tx, *ds.ID, *ds.XMLID, ds.EdgeHeaderRewrite, ds.MidHeaderRewrite, ds.RegexRemap, ds.CacheURL, dsType); err != nil {
+ if err := EnsureParams(tx, *ds.ID, *ds.XMLID, ds.EdgeHeaderRewrite, ds.MidHeaderRewrite, ds.RegexRemap, ds.CacheURL, ds.SigningAlgorithm, dsType); err != nil {
return tc.DeliveryServiceNullable{}, http.StatusInternalServerError, nil, errors.New("ensuring ds parameters:: " + err.Error())
}
@@ -605,7 +605,7 @@ func readGetDeliveryServices(params map[string]string, tx *sqlx.Tx, user *auth.C
if ds.DeepCachingType != nil {
*ds.DeepCachingType = tc.DeepCachingTypeFromString(string(*ds.DeepCachingType))
}
- ds.Signed = ds.SigningAlgorithm != nil && *ds.SigningAlgorithm == "url_sig"
+ ds.Signed = ds.SigningAlgorithm != nil && *ds.SigningAlgorithm == tc.SigningAlgorithmURLSig
dses = append(dses, ds)
}
@@ -786,7 +786,7 @@ const (
// EnsureParams ensures the given delivery service's necessary parameters exist on profiles of servers assigned to the delivery service.
// Note the edgeHeaderRewrite, midHeaderRewrite, regexRemap, and cacheURL may be nil, if the delivery service does not have those values.
-func EnsureParams(tx *sql.Tx, dsID int, xmlID string, edgeHeaderRewrite *string, midHeaderRewrite *string, regexRemap *string, cacheURL *string, dsType tc.DSType) error {
+func EnsureParams(tx *sql.Tx, dsID int, xmlID string, edgeHeaderRewrite *string, midHeaderRewrite *string, regexRemap *string, cacheURL *string, signingAlgorithm *string, dsType tc.DSType) error {
if err := ensureHeaderRewriteParams(tx, dsID, xmlID, edgeHeaderRewrite, edgeTier, dsType); err != nil {
return errors.New("creating edge header rewrite parameters: " + err.Error())
}
@@ -799,6 +799,9 @@ func EnsureParams(tx *sql.Tx, dsID int, xmlID string, edgeHeaderRewrite *string,
if err := ensureCacheURLParams(tx, dsID, xmlID, cacheURL); err != nil {
return errors.New("creating mid cacheurl parameters: " + err.Error())
}
+ if err := ensureURLSigParams(tx, dsID, xmlID, signingAlgorithm); err != nil {
+ return errors.New("creating urlsig parameters: " + err.Error())
+ }
return nil
}
@@ -833,6 +836,18 @@ ON CONFLICT DO NOTHING
return nil
}
+func ensureURLSigParams(tx *sql.Tx, dsID int, xmlID string, signingAlgorithm *string) error {
+ configFile := "url_sig_" + xmlID + ".config"
+ if signingAlgorithm == nil || *signingAlgorithm != tc.SigningAlgorithmURLSig {
+ return deleteLocationParam(tx, configFile)
+ }
+ locationParamID, err := ensureLocation(tx, configFile)
+ if err != nil {
+ return err
+ }
+ return createDSLocationProfileParams(tx, locationParamID, dsID)
+}
+
func ensureRegexRemapParams(tx *sql.Tx, dsID int, xmlID string, regexRemap *string) error {
configFile := "regex_remap_" + xmlID + ".config"
if regexRemap == nil || *regexRemap == "" {
diff --git a/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go b/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go
index 648966b..3f2b88a 100644
--- a/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go
+++ b/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go
@@ -274,7 +274,7 @@ func GetReplaceHandler(w http.ResponseWriter, r *http.Request) {
respServers = append(respServers, server)
}
- if err := deliveryservice.EnsureParams(inf.Tx.Tx, *dsId, ds.Name, ds.EdgeHeaderRewrite, ds.MidHeaderRewrite, ds.RegexRemap, ds.CacheURL, ds.Type); err != nil {
+ if err := deliveryservice.EnsureParams(inf.Tx.Tx, *dsId, ds.Name, ds.EdgeHeaderRewrite, ds.MidHeaderRewrite, ds.RegexRemap, ds.CacheURL, ds.SigningAlgorithm, ds.Type); err != nil {
api.HandleErr(w, r, inf.Tx.Tx, http.StatusInternalServerError, nil, errors.New("deliveryservice_server replace ensuring ds parameters: "+err.Error()))
return
}
@@ -340,7 +340,7 @@ func GetCreateHandler(w http.ResponseWriter, r *http.Request) {
return
}
- if err := deliveryservice.EnsureParams(inf.Tx.Tx, ds.ID, ds.Name, ds.EdgeHeaderRewrite, ds.MidHeaderRewrite, ds.RegexRemap, ds.CacheURL, ds.Type); err != nil {
+ if err := deliveryservice.EnsureParams(inf.Tx.Tx, ds.ID, ds.Name, ds.EdgeHeaderRewrite, ds.MidHeaderRewrite, ds.RegexRemap, ds.CacheURL, ds.SigningAlgorithm, ds.Type); err != nil {
api.HandleErr(w, r, inf.Tx.Tx, http.StatusInternalServerError, nil, errors.New("deliveryservice_server replace ensuring ds parameters: "+err.Error()))
return
}
@@ -592,6 +592,7 @@ type DSInfo struct {
EdgeHeaderRewrite *string
MidHeaderRewrite *string
RegexRemap *string
+ SigningAlgorithm *string
CacheURL *string
}
@@ -604,6 +605,7 @@ SELECT
ds.edge_header_rewrite,
ds.mid_header_rewrite,
ds.regex_remap,
+ ds.signing_algorithm,
ds.cacheurl
FROM
deliveryservice ds
@@ -612,7 +614,7 @@ WHERE
ds.id = $1
`
di := DSInfo{ID: id}
- if err := tx.QueryRow(qry, id).Scan(&di.Name, &di.Type, &di.EdgeHeaderRewrite, &di.MidHeaderRewrite, &di.RegexRemap, &di.CacheURL); err != nil {
+ if err := tx.QueryRow(qry, id).Scan(&di.Name, &di.Type, &di.EdgeHeaderRewrite, &di.MidHeaderRewrite, &di.RegexRemap, &di.SigningAlgorithm, &di.CacheURL); err != nil {
if err == sql.ErrNoRows {
return DSInfo{}, false, nil
}
@@ -631,6 +633,7 @@ SELECT
ds.edge_header_rewrite,
ds.mid_header_rewrite,
ds.regex_remap,
+ ds.signing_algorithm,
ds.cacheurl
FROM
deliveryservice ds
@@ -639,7 +642,7 @@ WHERE
ds.xml_id = $1
`
di := DSInfo{Name: dsName}
- if err := tx.QueryRow(qry, dsName).Scan(&di.ID, &di.Type, &di.EdgeHeaderRewrite, &di.MidHeaderRewrite, &di.RegexRemap, &di.CacheURL); err != nil {
+ if err := tx.QueryRow(qry, dsName).Scan(&di.ID, &di.Type, &di.EdgeHeaderRewrite, &di.MidHeaderRewrite, &di.RegexRemap, &di.SigningAlgorithm, &di.CacheURL); err != nil {
if err == sql.ErrNoRows {
return DSInfo{}, false, nil
}