策略扩展
策略扩展功能使您可以为内置策略类型编写扩展函数。这些扩展可以在策略表达式中使用,就像内置函数一样。它们是在评估相应的策略表达式时执行的。此功能可用于:
- 向现有策略添加自定义功能。
- 为复杂的客户需求实施逻辑结构。
策略扩展功能使用户能够为内置策略类型编写扩展函数,从而解决了这些限制。然后可以在策略表达式中使用这些扩展,就像内置函数一样。它们是在评估相应的策略表达式时执行的。
下表列出了编写扩展时可以使用的策略类型及其关联映射。
策略类型 | 映射的策略类型 | 输出 |
---|---|---|
TEXT_T | NSTEXT | 字符串 |
BOOL_AT | NSBOOL | 布尔值 |
NUM_AT | NSNUM | 数字(双精度浮点数) |
DOUBLE_AT | NSDOUBLE | 数字(双精度浮点数) |
使用策略扩展的先决条件
导入的函数必须符合现有的策略标准。因此:
- 函数名称必须以字母开头,可以包含数字或下划线。
- NetScaler 策略将函数名称视为不区分大小写。
- 即使扩展语言返回多个值,该函数也必须返回单个值。
- 不支持参数数量可变的函数。
延期策略是如何运作的
NetScaler 设备上的现有策略使用解释器来评估导入到策略扩展文件中的功能。当用户在策略扩展文件中导入新函数时:
- 扩展文件已通过语法和其他条件的验证。
- 如果验证失败,则将错误报告给用户。
- 如果验证成功,则扩展文件将导入到 NetScaler 设备,其内容可用于策略表达式,就像任何内置策略函数一样
-
如果策略表达式评估在运行时返回错误,则将其报告为 undef 事件,相关的错误计数器将递增。
注意: 如果发生策略 undef 事件并且策略规则包含一个或多个策略扩展函数,则
show ns extension <name>
命令将在应用于这些策略扩展时显示 undef 命中次数。如果扩展函数中止,则中止计数器值将增加。 -
如果策略表达式求值成功,则表达式评估将继续,直到对整个表达式进行求值,或者直到表达式因错误而中止。
-
如果扩展函数运行时间过长,则会中止,与该扩展函数相关的错误计数器会增加。扩展功能采用沙盒化处理,可防止:
- NetScaler 设备上的 CPU 使用率过高。
- NetScaler 设备上的内存使用量过大。
- 使用有害的内置库或第三方库或二进制文件。
- 长时间运行的脚本可能会导致 NetScaler 设备重新启动。
已复制!
失败!