func (d *Daemon) setupRBACServer(rbacURL string, rbacKey string, rbacExpiry int64, rbacAgentURL string, rbacAgentUsername string, rbacAgentPrivateKey string, rbacAgentPublicKey string) error {
	if d.rbac != nil || rbacURL == "" || rbacAgentURL == "" || rbacAgentUsername == "" || rbacAgentPrivateKey == "" || rbacAgentPublicKey == "" {
		return nil
	}

	// Get a new server struct
	server, err := rbac.NewServer(rbacURL, rbacKey, rbacAgentURL, rbacAgentUsername, rbacAgentPrivateKey, rbacAgentPublicKey)
	if err != nil {
		return err
	}

	// Set projects helper
	server.ProjectsFunc = func() (map[int64]string, error) {
		var result map[int64]string
		err := d.cluster.Transaction(func(tx *db.ClusterTx) error {
			var err error
			result, err = tx.ProjectMap()
			return err
		})

		return result, err
	}

	// Perform full sync
	err = server.SyncProjects()
	if err != nil {
		return err
	}

	server.StartStatusCheck()

	d.rbac = server

	// Enable candid authentication
	err = d.setupExternalAuthentication(fmt.Sprintf("%s/auth", rbacURL), rbacKey, rbacExpiry, "")
	if err != nil {
		return err
	}

	return nil
}
func (d *Daemon) setupRBACServer(rbacURL string, rbacKey string, rbacExpiry int64, rbacAgentURL string, rbacAgentUsername string, rbacAgentPrivateKey string, rbacAgentPublicKey string) error {
	if d.rbac != nil || rbacURL == "" || rbacAgentURL == "" || rbacAgentUsername == "" || rbacAgentPrivateKey == "" || rbacAgentPublicKey == "" {
		return nil
	}

	
	server, err := rbac.NewServer(rbacURL, rbacKey, rbacAgentURL, rbacAgentUsername, rbacAgentPrivateKey, rbacAgentPublicKey)
	if err != nil {
		return err
	}

	
	server.ProjectsFunc = func() (map[int64]string, error) {
		var result map[int64]string
		err := d.cluster.Transaction(func(tx *db.ClusterTx) error {
			var err error
			result, err = tx.ProjectMap()
			return err
		})

		return result, err
	}

	
	err = server.SyncProjects()
	if err != nil {
		return err
	}

	server.StartStatusCheck()

	d.rbac = server

	
	err = d.setupExternalAuthentication(fmt.Sprintf("%s/auth", rbacURL), rbacKey, rbacExpiry, "")
	if err != nil {
		return err
	}

	return nil
}
func ( d * Daemon ) setupRBACServer ( rbacURL string , rbacKey string , rbacExpiry int64 , rbacAgentURL string , rbacAgentUsername string , rbacAgentPrivateKey string , rbacAgentPublicKey string ) error { if d . rbac != nil || rbacURL == " " || rbacAgentURL == " " || rbacAgentUsername == " " || rbacAgentPrivateKey == " " || rbacAgentPublicKey == " " { return nil } // Get a new server struct server , err := rbac . NewServer ( rbacURL , rbacKey , rbacAgentURL , rbacAgentUsername , rbacAgentPrivateKey , rbacAgentPublicKey ) if err != nil { return err } // Set projects helper server . ProjectsFunc = func ( ) ( map [ int64 ] string , error ) { var result map [ int64 ] string err := d . cluster . Transaction ( func ( tx * db . ClusterTx ) error { var err error result , err = tx . ProjectMap ( ) return err } ) return result , err } // Perform full sync err = server . SyncProjects ( ) if err != nil { return err } server . StartStatusCheck ( ) d . rbac = server // Enable candid authentication err = d . setupExternalAuthentication ( fmt . Sprintf ( " " , rbacURL ) , rbacKey , rbacExpiry , " " ) if err != nil { return err } return nil }
// Setup RBAC
Setup RBAC