星号PBX配置语法检查器

asterisklint的Python项目详细描述


星号PBX配置语法检查器图片::https://bettercodehub.com/edge/badge/ossobv/asterisklint

asterisklint是一套检查星号pbx
配置文件语法的工具。

请举例说明。



调用代码块::console


$asterisklint
用法:asterisklint[-h]command
asterisklint:错误:需要以下参数:command


$asterisklint ls
内置:
ls列出可用命令。

/usr/lib/python/dist包:
dialplan check对dialplan执行健全性检查。以"extensions.conf"
作为参数。使用alint_ignore抑制错误类。
dialplan show dialplan就像星号对cli命令所做的那样
"dialplan show"。以"extensions.conf"作为参数。
func_odbc-check对func_odbc.conf执行健全性检查。以
"func_odbc.conf"作为参数。使用alint_ignore抑制错误类

ident scan report类似命名的上下文、标签和变量。
以"extensions.conf"作为参数。所有
的分析错误都被抑制。
模块显示
拨号计划使用的模块、应用程序和函数。以"extensions.conf"作为参数。

s,1(argument1,argument2)
相同=>;n,回报(音频文件)


现在对其运行"dialplan check"命令:

……代码块::console

$alint_ignore=h_dp_u asterisklint dialplan check extensions.conf
extensions.conf:2 h_pat_u non_u canonical:pattern'8[2-9]x'不是规范形式的'8nx'
extensions.conf:3 w_app_bad_x case:app'gosub'没有正确的大小写'gosub'
extensions.conf:3 w_app_balance:app data'1(argument1,argument2'看起来像不平衡的括号/引号/卷曲
extensions.conf:4 e_app_missing:app'payback'不存在,dialplan将在此停止!
extensions.conf:3 e_dp_goto_nocontext:找不到Goto to somewhere,s,1的上下文

它有很多地方可以抱怨这个小片段。但这是对的。我们甚至用alint ignore抑制了关于缺少的```[general]``和`[global]``
上下文的两个提示。

它检查的所有内容都没有文档记录,也没有检查我们喜欢的所有内容。但这是个开始。欢迎提供错误报告。功能请求
最好附带一个修补程序:-)


如果在"modules.conf"中使用"autoload=no",请尝试"modules show"。

代码块:console

$asterisklint modules show--help
用法:asterisklint modules show[-h][--func odbc func\u odbc conf]
[extensions\u conf]


显示拨号计划使用的模块、应用程序和功能。当
在modules.conf中使用autoload=no时很有用。请注意,您确实需要更多的模块
而不仅仅是列出的这些模块。


位置参数:
extensions_conf path to extensions.conf

可选参数:
-h,--帮助显示此帮助消息并退出
--func odbc func_odbc conf
func_odbc.conf的路径,如果
与extensions.conf在同一个目录中找到,则会自动读取;设置
清空以禁用安装。或者,为了更方便,
通过``pip3(1)``安装pypi上传的版本:

…代码块::console

$sudo pip3 install asterisklint

成功安装asterisklint



``dialplan check``作为git commit钩子很有用,例如
`.git/hooks/pre commit`:

。代码块:sh

/bin/sh
export alint_ignore=根据需要调整


asterisklint dialplan check path/to/extensions.conf
ret=$?
如果测试$ret-ne 0;,则返回一个或多个拨号计划语法错误。请在提交前修复。'>;&;2
退出$ret
fi


exit 0



todo
----


*表达式解析。
*web:请求之间保持状态:
-on 500 error,下一个用户可能会出现较旧的错误(因为
messagedef singleton)
-后台/后台黑客存储在请求
*日志/存储集变量之间,并与读取的变量进行比较。同时记录通过array()函数设置的变量。(哈希?)
*修复各种包含问题:
-递归包含可能使星号溢出堆栈。
-添加对递归拨号计划包含的检查。
-扫描缺少的拨号计划包含。
*修剪CallerID匹配(在FreePBX拨号计划中使用)。
*Func ODBC解析改进:
-检查缺少的概要/语法(将语法与argn count进行比较)
-检查val(只写)和arg的正确用法以及缺少的sql_esc
-生成odbc函数,而不是像现在这样的上下文
(请参阅func_odbc.py中的更多内容。)
*添加"app check"``命令对单个行执行拨号计划检查。
*add``expr check`` command to do expression(`$[…]```)检查。
例如add:
exten=>;x!,1,set(boolean=$["<;555>;=1234])
;set(boolean=$[${callerID(all)}=1234])
;不正确地使用"all",应使用"num"
=>;语法错误,意外的"=",应为"-"或"!"或"("或"<;token>;"
*允许多行变量使用+=(key=val;key+=more val)。
*调查exten=>;s,n(label)……扩展名=>;s,标签+10…有效。
*对于goto/gosub访问:
-如果涉及$vars,请尝试通过regex匹配上下文?
-允许在注释中放置"noqa"样式的异常?
*根据需要改进文档。
*在1.0之前,开始添加版本控制(包括semver),以便用户可以从自定义脚本中依赖稳定的api。还要对脚本进行版本化
(命令),这样如果出现问题,脚本就不会与较旧/较新的lib通信。




bugs
---

*库的运行非常频繁。别指望它很快就会稳定下来。注意版本!
*多行注释(``;--…--不支持;``)。有人用过吗?
*不检查限制(对于低内存和正常模式,拨号计划线路分别限制在255或8191字节
)。
*库/套件仅限于python3。现在,使python2
兼容的努力比需求更大。在未来,python2的兼容性将变得更加不相关。2015-2017年《osso o b.v.2015-2017年》




>0.4.1(2018-10-10)
~~~~~~~~~~~~~~~~~~


>错误修复:


*处理func()参数中的${vars}。
*修复func-odbc-check中的错误。
*加快拨号计划goto解析速度。
*不中断自定义命令支持。


>
改进:::
改进:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

*添加缺少的app_milliwatt、app_mysql、app_originate、
func_audiohookinherit、func_volume_register。
*添加初步的func_odbc-annotate命令;功能未完成。
*添加(现已过时的)vg.py contrib c修改某些文件的命令,以便接受稍有不同的语法。
*检查execif()中调用的应用程序。


0.4.0(2017-04-05)
~~~~~~~~~~~~~~~~~~~~~~

>错误修复:

*执行拨号计划文件突变时,在符号链接目标上操作
不替换符号链接。
*不要将自述文件安装到/usr中,而是在
/usr/share/doc/asterisklint(或使用不同的前缀)中。
*还可以在包含的上下文中搜索优先级标签。

改进:

*添加各种应用:
-验证,controlplayback,pickupchan
-pickupold1v4(一个解决方法,请参见星号-26464)
-voicemailplaymsg,vmsayname,
-继续while,endwhile,exitwhile,while,
-agi,deadagi,eagi,
-stopmusiconhold
*添加各种功能:
-db,db-exists,db-keys,db-delete,
-md5,timeout
-local,local_peek,stack_peek
*添加函数参数的初始检查:仅限于我们已经在未定义的应用程序上使用的括号检查。
*添加application set()支持。添加函数set()支持。这也支持检查对可写函数的调用。
*只要您一致地选择一个,就可以同时使用"background"和"background"拼写。
*一系列重构可以使bettercodehub更满意。如果您创建了
自定义子命令,查看mainbase类。
*添加以星号13为输入的测试示例dialplan。
*将web前端添加到存储库中。

>0.3.0(2016-06-08)
~~~~~~~~~~~~~~~~~~~~~~

*添加初步goto/gosub扫描:dialplan检查现在尝试查找不存在的goto目的地。新的错误类:
e戋dp戋goto戋context戋nolabel,e戋dp戋goto戋nocontext,e戋dp戋goto戋nolabel,
w戋dp戋goto戋context戋noexten。
*添加初步的应用程序参数检查。新错误类:
e_app_arg_ifconst,e_app_arg_ifempty,e_app_arg_语法。
*添加新命令:ident scan。它列出了使用过的上下文、标签和
变量,并通过比较
它们之间的差异来查找输入错误。添加星号应用程序:nocdr,录制。
*指向extensions.conf路径的命令现在默认扫描当前目录中的该命令。
*python3.5测试用例兼容性修复程序。

>0.2.1(2016-01-29)
~~~~~~~~~~~~~~~~~~~~~~~

*不要在初始化中查找自定义命令。

0.2.0(2016-01-29)
~~~~~~~~~~~~~~~~~~~~~~~~

*添加部分Func ODBC检查。
*添加新命令:func ODBC-check
*对模块显示和拨号计划显示执行Func ODBC检查,因此,如果您使用Func ODBC,就不会被e_u func_u missing错误淹没。
*修复一些变量/拨号计划分析错误,改进一些。

<0.1.0(2016-01-15)
~~~~~~~~~~~~~~~~~~~~~~~

*初始版本。
*以下命令可用:
dialplan check,拨号计划显示,模块显示

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java连接usb到uart设备到安卓设备>3.1   可以强制Php中的web应用程序与Java中的桌面应用程序一起工作吗?   java为什么自定义系统类加载器不工作?   数组在Java中解析具有多个分隔符的字符串   PMD Java 8德米特定律   JavaSpringMVC表单验证不适用于嵌套的复杂类型   让Eclipse Java组织导入以使用Google checkstyle   java Appium:无法创建新会话   java如何在数组中声明新字段   java如何解决“无法初始化类org.apache.cassandra.config.DatabaseDescriptor”?   java AsyncTask创建socket   java向@CreatedBy添加更多信息   如何在ubuntu中运行包含大量jars依赖项的java文件   java如何使用<s:select>标记并在中休眠来填充下拉列表?   java获取错误:找不到符号变量“level”和“next_level_button”   javaweb应用中基于UI的ajax显示代码流   Java长到MySql   java JvisualVM:奇怪的应用程序行为   ubuntu将Java程序的输出结果保存到一个文件中