github.com/haalcala/mattermost-server-change-repo/v5@v5.33.2/model/plugin_valid.go (about)

     1  // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
     2  // See LICENSE.txt for license information.
     3  
     4  package model
     5  
     6  import (
     7  	"regexp"
     8  	"unicode/utf8"
     9  )
    10  
    11  const (
    12  	MinIdLength  = 3
    13  	MaxIdLength  = 190
    14  	ValidIdRegex = `^[a-zA-Z0-9-_\.]+$`
    15  )
    16  
    17  // ValidId constrains the set of valid plugin identifiers:
    18  //  ^[a-zA-Z0-9-_\.]+
    19  var validId *regexp.Regexp
    20  
    21  func init() {
    22  	validId = regexp.MustCompile(ValidIdRegex)
    23  }
    24  
    25  // IsValidPluginId verifies that the plugin id has a minimum length of 3, maximum length of 190, and
    26  // contains only alphanumeric characters, dashes, underscores and periods.
    27  //
    28  // These constraints are necessary since the plugin id is used as part of a filesystem path.
    29  func IsValidPluginId(id string) bool {
    30  	if utf8.RuneCountInString(id) < MinIdLength {
    31  		return false
    32  	}
    33  
    34  	if utf8.RuneCountInString(id) > MaxIdLength {
    35  		return false
    36  	}
    37  
    38  	return validId.MatchString(id)
    39  }