common

package
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 1, 2026 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// FlyObjectNetwork 网络对象(地址对象、地址组)的CLI字符串
	FlyObjectNetwork = "NETWORK"
	// FlyObjectService 服务对象(服务对象、服务组)的CLI字符串
	FlyObjectService = "SERVICE"
	// FlyObjectNat NAT规则的CLI字符串(统一字段)
	FlyObjectNat = "NAT"
	// FlyObjectPool SNAT池对象的CLI字符串
	FlyObjectPool = "POOL"
	// FlyObjectSecurityPolicy 安全策略的CLI字符串
	FlyObjectSecurityPolicy = "SECURITY_POLICY"
)

核心标准字段(所有防火墙通用)

View Source
const (
	// FlyObjectAcl ACL规则的CLI字符串(SecPath, Common V2)
	FlyObjectAcl = "ACL"
	// FlyObjectVip VIP对象的CLI字符串(Common V2, FortiGate使用STATIC_NAT)
	FlyObjectVip = "VIP"
	// FlyObjectMip MIP对象的CLI字符串(Common V2)
	FlyObjectMip = "MIP"
	// FlyObjectStaticNat 静态NAT规则(Sangfor, FortiGate)
	FlyObjectStaticNat = "STATIC_NAT"
	// FlyObjectDynamicNat 动态NAT规则(Sangfor, FortiGate)
	FlyObjectDynamicNat = "DYNAMIC_NAT"
)

扩展字段(部分防火墙使用)

View Source
const (
	// FlyObjectNetworkObjectGroup 网络对象组(FortiGate)
	FlyObjectNetworkObjectGroup = "NETWORK_OBJECT_GROUP"
	// FlyObjectServiceGroup 服务对象组(FortiGate)
	FlyObjectServiceGroup = "SERVICE_GROUP"
	// FlyObjectClis CLI命令列表(FortiGate)
	FlyObjectClis = "CLIS"
)

FortiGate特定扩展字段

View Source
const (
	// FlyObjectNetworkIPv4Object IPv4网络对象(SecPath XML格式)
	FlyObjectNetworkIPv4Object = "NETWORK_IPv4_OBJECT"
	// FlyObjectNetworkIPv6Object IPv6网络对象(SecPath XML格式)
	FlyObjectNetworkIPv6Object = "NETWORK_IPv6_OBJECT"
	// FlyObjectNetworkIPv4Group IPv4网络组(SecPath XML格式)
	FlyObjectNetworkIPv4Group = "NETWORK_IPv4_GROUP"
	// FlyObjectNetworkIPv6Group IPv6网络组(SecPath XML格式)
	FlyObjectNetworkIPv6Group = "NETWORK_IPv6_GROUP"
	// FlyObjectServerOnInterface 接口上的服务器(SecPath XML格式)
	FlyObjectServerOnInterface = "SERVER_ON_INTERFACE"
	// FlyObjectNatPolicy NAT策略(SecPath XML格式)
	FlyObjectNatPolicy = "NAT_POLICY"
)

SecPath特定扩展字段(XML格式)

View Source
const (
	RetryMethodNext   = "next"
	RetryMethodSuffix = "suffix"
)

Variables

View Source
var DefaultTemplates = NamingTemplates{
	NetworkTemplate:    `ADDR_{if:isHost=="true"}HOST_{ip}{else if:isNetwork="true"}NET_{ip}_{mask}{else}RANGE_{start}_{end}{endif}`,
	L3ProtocolTemplate: "SVC_L3_{protocol}",
	ICMPTemplate:       "SVC_ICMP_{type}_{code}",
	L4Template:         "SVC_{protocol}_{if:src_port!='0 65535'}SRC_{src_port}{endif}_DST_{dst_port}",
}

Functions

func FindPolicyByIntent

func FindPolicyByIntent(node firewall.FirewallNode, intent *policy.Intent, fromZone, toZone string, config MatchConfig) []firewall.FirewallPolicy

FindPolicyByIntent 通过intent寻找匹配的policy

func GenerateObjectName

func GenerateObjectName(auto *keys.AutoIncrementKeys, obj interface{}, itFunc func() firewall.NamerIterator, node firewall.FirewallNode, templates *NamingTemplates, retryMethod string, onm *ObjectNameManager, useBaseFirst bool) (keys.Keys, bool, error)

func GenerateObjectNameWithStarlark

func GenerateObjectNameWithStarlark(auto *keys.AutoIncrementKeys, obj interface{}, itFunc func() firewall.NamerIterator, node firewall.FirewallNode, templates *NamingTemplates, retryMethod string, onm *ObjectNameManager, useBaseFirst bool, starlarkExecutor StarlarkExecutor) (keys.Keys, bool, error)

GenerateObjectNameWithStarlark 生成对象名称(支持 Starlark 模板) starlarkExecutor: 可选的 Starlark 执行器,如果提供则使用 Starlark 模板生成名称

Types

type Field

type Field struct {
	Type     string
	Format   string
	Width    int
	Start    int
	Step     int
	IsMainID bool
	NoRender bool
}

type IDTemplate

type IDTemplate struct {
	// contains filtered or unexported fields
}

func NewPolicyTemplate

func NewPolicyTemplate(template string, getIterator func() firewall.NamerIterator) *IDTemplate

func (*IDTemplate) Extract

func (pt *IDTemplate) Extract(policy string) (map[string]string, error)

func (*IDTemplate) Generate

func (pt *IDTemplate) Generate(variables map[string]interface{}) (int, string)

func (*IDTemplate) GetLastSequence

func (pt *IDTemplate) GetLastSequence(name string) int

func (*IDTemplate) Initialize

func (pt *IDTemplate) Initialize() *IDTemplate

func (*IDTemplate) SetLastSequence

func (pt *IDTemplate) SetLastSequence(name string, value int)

func (*IDTemplate) WithCurrentTime

func (pt *IDTemplate) WithCurrentTime(t time.Time) *IDTemplate

func (*IDTemplate) WithCustomIDExtractor

func (pt *IDTemplate) WithCustomIDExtractor(extractor func(string) int) *IDTemplate

func (*IDTemplate) WithCustomValidator

func (pt *IDTemplate) WithCustomValidator(validator func(string) bool) *IDTemplate

func (*IDTemplate) WithLastDate

func (pt *IDTemplate) WithLastDate(name string, t time.Time) *IDTemplate

func (*IDTemplate) WithMaxRetries

func (pt *IDTemplate) WithMaxRetries(maxRetries int) *IDTemplate

type MatchConfig

type MatchConfig struct {
	MatchThreshold      int   // 匹配阈值,默认为2
	MatchSrc            bool  // 是否匹配源地址
	MatchDst            bool  // 是否匹配目标地址
	MatchService        bool  // 是否匹配服务
	StrictZone          bool  // 是否严格匹配zone(false则允许any匹配任何zone)
	EmptyZoneMatchesAny *bool // 当zone列表为空时,是否匹配任何zone(nil表示未设置,默认为true)
}

MatchConfig 定义匹配配置

type NamingTemplates

type NamingTemplates struct {
	NetworkTemplate    string
	L3ProtocolTemplate string
	ICMPTemplate       string
	L4Template         string
}

type ObjectNameManager

type ObjectNameManager struct {
	// contains filtered or unexported fields
}

func NewObjectNameManager

func NewObjectNameManager() *ObjectNameManager

NewObjectNameManager 创建一个新的 ObjectNameManager

func (*ObjectNameManager) AddGeneratedName

func (onm *ObjectNameManager) AddGeneratedName(name string)

AddGeneratedName 添加一个生成过的名称

func (*ObjectNameManager) IsNameGenerated

func (onm *ObjectNameManager) IsNameGenerated(name string) bool

IsNameGenerated 检查名称是否已经生成过

type ObjectStatus

type ObjectStatus int
const (
	ObjectNotExist ObjectStatus = iota
	ObjectExistSame
	ObjectExistDifferent
)

type StarlarkExecutor

type StarlarkExecutor func(intent *policy.Intent, template string, metaData map[string]interface{}) string

StarlarkExecutor 用于执行 Starlark 模板的函数类型 intent: 策略意图 template: Starlark 模板代码字符串 metaData: 元数据

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL