Merge pull request #193 from waveywaves/feature/CSRFProtectionToggle
Add ability to disable CSRFProtection in the Jenkins master
This commit is contained in:
		
						commit
						eed47e9f12
					
				|  | @ -310,6 +310,9 @@ type JenkinsMaster struct { | ||||||
| 	// Plugins contains plugins required by user
 | 	// Plugins contains plugins required by user
 | ||||||
| 	// +optional
 | 	// +optional
 | ||||||
| 	Plugins []Plugin `json:"plugins,omitempty"` | 	Plugins []Plugin `json:"plugins,omitempty"` | ||||||
|  | 
 | ||||||
|  | 	// DisableCSRFProtection allows you to toggle CSRF Protection on Jenkins
 | ||||||
|  | 	DisableCSRFProtection bool `json:"disableCSRFProtection"` | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Service defines Kubernetes service attributes
 | // Service defines Kubernetes service attributes
 | ||||||
|  |  | ||||||
|  | @ -9,6 +9,17 @@ import ( | ||||||
| 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | const ( | ||||||
|  | 	basicSettingsGroovyScriptName               = "1-basic-settings.groovy" | ||||||
|  | 	enableCSRFGroovyScriptName                  = "2-enable-csrf.groovy" | ||||||
|  | 	disableUsageStatsGroovyScriptName           = "3-disable-usage-stats.groovy" | ||||||
|  | 	enableMasterAccessControlGroovyScriptName   = "4-enable-master-access-control.groovy" | ||||||
|  | 	disableInsecureFeaturesGroovyScriptName     = "5-disable-insecure-features.groovy" | ||||||
|  | 	configureKubernetesPluginGroovyScriptName   = "6-configure-kubernetes-plugin.groovy" | ||||||
|  | 	configureViewsGroovyScriptName              = "7-configure-views.groovy" | ||||||
|  | 	disableJobDslScriptApprovalGroovyScriptName = "8-disable-job-dsl-script-approval.groovy" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
| const basicSettingsFmt = ` | const basicSettingsFmt = ` | ||||||
| import jenkins.model.Jenkins | import jenkins.model.Jenkins | ||||||
| import jenkins.model.JenkinsLocationConfiguration | import jenkins.model.JenkinsLocationConfiguration | ||||||
|  | @ -168,23 +179,26 @@ func GetBaseConfigurationConfigMapName(jenkins *v1alpha2.Jenkins) string { | ||||||
| // NewBaseConfigurationConfigMap builds Kubernetes config map used to base configuration
 | // NewBaseConfigurationConfigMap builds Kubernetes config map used to base configuration
 | ||||||
| func NewBaseConfigurationConfigMap(meta metav1.ObjectMeta, jenkins *v1alpha2.Jenkins) *corev1.ConfigMap { | func NewBaseConfigurationConfigMap(meta metav1.ObjectMeta, jenkins *v1alpha2.Jenkins) *corev1.ConfigMap { | ||||||
| 	meta.Name = GetBaseConfigurationConfigMapName(jenkins) | 	meta.Name = GetBaseConfigurationConfigMapName(jenkins) | ||||||
| 
 | 	groovyScriptsMap := map[string]string{ | ||||||
| 	return &corev1.ConfigMap{ | 		basicSettingsGroovyScriptName:             fmt.Sprintf(basicSettingsFmt, constants.DefaultAmountOfExecutors), | ||||||
| 		TypeMeta:   buildConfigMapTypeMeta(), | 		enableCSRFGroovyScriptName:                enableCSRF, | ||||||
| 		ObjectMeta: meta, | 		disableUsageStatsGroovyScriptName:         disableUsageStats, | ||||||
| 		Data: map[string]string{ | 		enableMasterAccessControlGroovyScriptName: enableMasterAccessControl, | ||||||
| 			"1-basic-settings.groovy":               fmt.Sprintf(basicSettingsFmt, constants.DefaultAmountOfExecutors), | 		disableInsecureFeaturesGroovyScriptName:   disableInsecureFeatures, | ||||||
| 			"2-enable-csrf.groovy":                  enableCSRF, | 		configureKubernetesPluginGroovyScriptName: fmt.Sprintf(configureKubernetesPluginFmt, | ||||||
| 			"3-disable-usage-stats.groovy":          disableUsageStats, |  | ||||||
| 			"4-enable-master-access-control.groovy": enableMasterAccessControl, |  | ||||||
| 			"5-disable-insecure-features.groovy":    disableInsecureFeatures, |  | ||||||
| 			"6-configure-kubernetes-plugin.groovy": fmt.Sprintf(configureKubernetesPluginFmt, |  | ||||||
| 			jenkins.ObjectMeta.Namespace, | 			jenkins.ObjectMeta.Namespace, | ||||||
| 			fmt.Sprintf("http://%s.%s:%d", GetJenkinsHTTPServiceName(jenkins), jenkins.ObjectMeta.Namespace, jenkins.Spec.Service.Port), | 			fmt.Sprintf("http://%s.%s:%d", GetJenkinsHTTPServiceName(jenkins), jenkins.ObjectMeta.Namespace, jenkins.Spec.Service.Port), | ||||||
| 			fmt.Sprintf("%s.%s:%d", GetJenkinsSlavesServiceName(jenkins), jenkins.ObjectMeta.Namespace, jenkins.Spec.SlaveService.Port), | 			fmt.Sprintf("%s.%s:%d", GetJenkinsSlavesServiceName(jenkins), jenkins.ObjectMeta.Namespace, jenkins.Spec.SlaveService.Port), | ||||||
| 		), | 		), | ||||||
| 			"7-configure-views.groovy":                 configureViews, | 		configureViewsGroovyScriptName:              configureViews, | ||||||
| 			"8-disable-job-dsl-script-approval.groovy": disableJobDSLScriptApproval, | 		disableJobDslScriptApprovalGroovyScriptName: disableJobDSLScriptApproval, | ||||||
| 		}, | 	} | ||||||
|  | 	if jenkins.Spec.Master.DisableCSRFProtection { | ||||||
|  | 		delete(groovyScriptsMap, enableCSRFGroovyScriptName) | ||||||
|  | 	} | ||||||
|  | 	return &corev1.ConfigMap{ | ||||||
|  | 		TypeMeta:   buildConfigMapTypeMeta(), | ||||||
|  | 		ObjectMeta: meta, | ||||||
|  | 		Data:       groovyScriptsMap, | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue