* Initial comit for ip filtering service implementation * Add audit logs for IP Filters * start of webapp work * Stashing * Updates based on Agniva's feedback around service vs einterface * Updates completed * Commit before refactoring, everything's working * First pass of cleanup complete, front-end tests added * actually add files * Updates to some translation strings, running i18n-extract * Lock everything behind a feature flag * Fix tests, try to fix some linter stuff * Fixed linter for JS, on to scss * Fixed linter for scss * Fix linter * More fixes for pipeline * Support for IPV6 * Remove tsx file that was removed in masteR * Revert package.json and package-lock.json to master, add cidr-regex dep into channels/package.json * Another commit to force fix Github * Fixes around IPV6. Some suggestions from Matt re: UX review. Fixing pipelines for tests and types on new cidr-regex package * Changes to address Matt's feedback * A few more changes for clean up * Add support for permissions * Fix vet for OpenAPI spec * Actually add the yaml file for openapi * Add permission migration to allow support for IP Filtering * Fix tests * Final fixes from Matt * Remove cancel button from page, update link outs to documentation * Update test to account for removed cancel button * Adjustments based on feedback from Harrison * More fixes from PR feedback * Add a t to fix translations that doesn't seem to be breaking anyone else? * More fix * updates for PR feedback * Fix linter * Fix types * Now fix the linter again * Add back tests because Harrison was able to get them running * Adjustments for PR feedback * Remove admin_definition.jsx * Fix linter * [CLD-6453] IP Filtering notification email for sysadmins (#25224) * Initial commit for IP filtering alert email * Updates to style for email, addition of ip_filtering email: * Fix pipelines * Adjustments from Matt's feedback * Padding changes * template diff (#25249) Co-authored-by: Gabe Jackson <3694686+gabrieljackson@users.noreply.github.com> * Fix hardcoded true, remove bool return value --------- Co-authored-by: Mattermost Build <build@mattermost.com> Co-authored-by: Gabe Jackson <3694686+gabrieljackson@users.noreply.github.com> * Lock feature behind enterprise license. Drop cidr-regex in favour of ipaddr.js dependency. Refactor isIpAddressWithinRanges to use ipaddr.js * Add a couple server tests * fix linter * Fix types from merge conflicts --------- Co-authored-by: Mattermost Build <build@mattermost.com> Co-authored-by: Gabe Jackson <3694686+gabrieljackson@users.noreply.github.com>
90 строки
2.1 KiB
Go
90 строки
2.1 KiB
Go
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
package model
|
|
|
|
import (
|
|
"reflect"
|
|
"strconv"
|
|
)
|
|
|
|
type FeatureFlags struct {
|
|
// Exists only for unit and manual testing.
|
|
// When set to a value, will be returned by the ping endpoint.
|
|
TestFeature string
|
|
// Exists only for testing bool functionality. Boolean feature flags interpret "on" or "true" as true and
|
|
// all other values as false.
|
|
TestBoolFeature bool
|
|
|
|
// Enable the remote cluster service for shared channels.
|
|
EnableRemoteClusterService bool
|
|
|
|
// AppsEnabled toggles the Apps framework functionalities both in server and client side
|
|
AppsEnabled bool
|
|
|
|
PermalinkPreviews bool
|
|
|
|
// CallsEnabled controls whether or not the Calls plugin should be enabled
|
|
CallsEnabled bool
|
|
|
|
NormalizeLdapDNs bool
|
|
|
|
PostPriority bool
|
|
|
|
// Enable WYSIWYG text editor
|
|
WysiwygEditor bool
|
|
|
|
OnboardingTourTips bool
|
|
|
|
DeprecateCloudFree bool
|
|
|
|
CloudReverseTrial bool
|
|
|
|
EnableExportDirectDownload bool
|
|
|
|
StreamlinedMarketplace bool
|
|
|
|
CloudIPFiltering bool
|
|
ConsumePostHook bool
|
|
}
|
|
|
|
func (f *FeatureFlags) SetDefaults() {
|
|
f.TestFeature = "off"
|
|
f.TestBoolFeature = false
|
|
f.EnableRemoteClusterService = false
|
|
f.AppsEnabled = true
|
|
f.NormalizeLdapDNs = false
|
|
f.CallsEnabled = true
|
|
f.DeprecateCloudFree = false
|
|
f.WysiwygEditor = false
|
|
f.OnboardingTourTips = true
|
|
f.CloudReverseTrial = false
|
|
f.EnableExportDirectDownload = false
|
|
f.StreamlinedMarketplace = true
|
|
f.CloudIPFiltering = false
|
|
f.ConsumePostHook = false
|
|
}
|
|
|
|
// ToMap returns the feature flags as a map[string]string
|
|
// Supports boolean and string feature flags.
|
|
func (f *FeatureFlags) ToMap() map[string]string {
|
|
refStructVal := reflect.ValueOf(*f)
|
|
refStructType := reflect.TypeOf(*f)
|
|
ret := make(map[string]string)
|
|
for i := 0; i < refStructVal.NumField(); i++ {
|
|
refFieldVal := refStructVal.Field(i)
|
|
if !refFieldVal.IsValid() {
|
|
continue
|
|
}
|
|
refFieldType := refStructType.Field(i)
|
|
switch refFieldType.Type.Kind() {
|
|
case reflect.Bool:
|
|
ret[refFieldType.Name] = strconv.FormatBool(refFieldVal.Bool())
|
|
default:
|
|
ret[refFieldType.Name] = refFieldVal.String()
|
|
}
|
|
}
|
|
|
|
return ret
|
|
}
|