Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
mirrors
openwrt
luci
提交
1d08361b
L
luci
项目概览
mirrors
/
openwrt
/
luci
11 个月 前同步成功
通知
43
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
luci
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
1d08361b
编写于
8月 17, 2008
作者:
J
Jo-Philipp Wich
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
* luci/libs: uvl: add support for external validation commands, various cleanups
上级
ed5c3eac
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
102 addition
and
26 deletion
+102
-26
libs/uvl/luasrc/uvl.lua
libs/uvl/luasrc/uvl.lua
+29
-16
libs/uvl/luasrc/uvl/dependencies.lua
libs/uvl/luasrc/uvl/dependencies.lua
+0
-9
libs/uvl/luasrc/uvl/loghelper.lua
libs/uvl/luasrc/uvl/loghelper.lua
+8
-1
libs/uvl/luasrc/uvl/validation.lua
libs/uvl/luasrc/uvl/validation.lua
+65
-0
未找到文件。
libs/uvl/luasrc/uvl.lua
浏览文件 @
1d08361b
...
...
@@ -21,15 +21,16 @@ require("luci.util")
require
(
"luci.model.uci"
)
require
(
"luci.uvl.loghelper"
)
require
(
"luci.uvl.datatypes"
)
--
require("luci.uvl.validation")
require
(
"luci.uvl.validation"
)
require
(
"luci.uvl.dependencies"
)
TYPE_SECTION
=
0x01
TYPE_VARIABLE
=
0x02
TYPE_ENUM
=
0x03
STRICT_UNKNOWN_SECTIONS
=
true
STRICT_UNKNOWN_OPTIONS
=
true
STRICT_UNKNOWN_SECTIONS
=
true
STRICT_UNKNOWN_OPTIONS
=
true
STRICT_EXTERNAL_VALIDATORS
=
true
local
default_schemedir
=
"/etc/scheme"
...
...
@@ -242,6 +243,11 @@ function UVL._validate_option( self, option, nodeps )
if
not
nodeps
then
return
luci
.
uvl
.
dependencies
.
check
(
self
,
option
)
end
local
ok
,
err
=
luci
.
uvl
.
validation
.
check
(
self
,
option
)
if
not
ok
and
STRICT_EXTERNAL_VALIDATORS
then
return
false
,
self
.
log
.
validator_error
(
option
,
err
)
end
end
return
true
,
nil
...
...
@@ -353,6 +359,10 @@ function UVL._read_scheme_parts( self, scheme, schemes )
end
end
end
s
.
dynamic
=
s
.
dynamic
or
false
s
.
unique
=
s
.
unique
or
false
s
.
required
=
s
.
required
or
false
end
end
end
...
...
@@ -402,6 +412,7 @@ function UVL._read_scheme_parts( self, scheme, schemes )
end
t
.
type
=
t
.
type
or
"variable"
t
.
datatype
=
t
.
datatype
or
"string"
t
.
required
=
t
.
required
or
false
end
end
...
...
@@ -485,22 +496,24 @@ end
-- Read a validator specification
function
UVL
.
_read_validator
(
self
,
value
,
validators
)
local
validator
if
value
and
value
:
match
(
"/"
)
and
self
.
datatypes
.
file
(
value
)
then
validator
=
value
else
validator
=
self
:
_resolve_function
(
value
)
end
if
value
then
local
validator
if
validator
then
if
not
validators
then
validators
=
{
validator
}
else
table.insert
(
validators
,
validator
)
if
value
:
match
(
"^exec:"
)
then
validator
=
value
:
gsub
(
"^exec:"
,
""
)
elseif
value
:
match
(
"^lua:"
)
then
validator
=
self
:
_resolve_function
(
(
value
:
gsub
(
"^lua:"
,
""
)
)
)
end
return
validators
if
validator
then
if
not
validators
then
validators
=
{
validator
}
else
table.insert
(
validators
,
validator
)
end
return
validators
end
end
end
...
...
libs/uvl/luasrc/uvl/dependencies.lua
浏览文件 @
1d08361b
...
...
@@ -16,15 +16,6 @@ $Id$
module
(
"luci.uvl.dependencies"
,
package
.
seeall
)
local
function
_assert
(
condition
,
fmt
,
...
)
if
not
condition
then
return
assert
(
nil
,
string.format
(
fmt
,
...
)
)
else
return
condition
end
end
function
_parse_reference
(
r
,
c
,
s
,
o
)
local
ref
=
{
}
local
vars
=
{
...
...
libs/uvl/luasrc/uvl/loghelper.lua
浏览文件 @
1d08361b
...
...
@@ -30,6 +30,13 @@ function section_error( section, message )
)
end
function
validator_error
(
option
,
message
)
return
string.format
(
'External validator in option "%s" failed:\n%s'
,
option
:
cid
(),
message
or
"Unknown error"
)
end
function
dump_dependency
(
dep
,
ref
,
v
,
e
)
local
str
=
nil
...
...
@@ -46,7 +53,7 @@ function dump_dependency( dep, ref, v, e )
str
=
string.format
(
'%s) failed:\n\t%s'
,
str
,
e
or
string.format
(
str
,
e
and
e
:
gsub
(
"
\n
"
,
"
\n\t
"
)
or
string.format
(
'Option "%s" %s'
,
table.concat
(
ref
,
"."
),
(
type
(
v
)
==
"boolean"
...
...
libs/uvl/luasrc/uvl/validation.lua
0 → 100644
浏览文件 @
1d08361b
--[[
UCI Validation Layer - Validation helper
(c) 2008 Jo-Philipp Wich <xm@leipzig.freifunk.net>
(c) 2008 Steven Barth <steven@midlink.org>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
$Id$
]]
--
module
(
"luci.uvl.validation"
,
package
.
seeall
)
require
(
"luci.fs"
)
require
(
"luci.sys"
)
function
_exec
(
bin
,
args
)
local
cmd
,
output
=
""
,
nil
for
_
,
v
in
ipairs
({
bin
,
unpack
(
args
)
})
do
cmd
=
cmd
..
string.format
(
"%q "
,
v
):
gsub
(
"
([
%$`
])
"
,
"
\\
%1"
)
end
local
tmpfile
=
"/tmp/uvl"
..
luci
.
sys
.
uniqueid
(
8
)
local
retval
=
os.execute
(
cmd
..
" 1>"
..
tmpfile
..
" 2>"
..
tmpfile
)
if
luci
.
fs
.
access
(
tmpfile
)
then
output
=
luci
.
fs
.
readfile
(
tmpfile
)
luci
.
fs
.
unlink
(
tmpfile
)
end
return
retval
,
output
end
function
check
(
self
,
object
)
local
item
=
object
:
option
()
if
item
.
validators
then
for
_
,
val
in
ipairs
(
item
.
validators
)
do
local
ok
,
err
=
false
,
nil
local
args
=
{
item
.
type
,
unpack
(
object
.
cref
),
item
.
datatype
,
object
:
value
()
}
if
type
(
val
)
==
"function"
then
ok
,
err
=
val
(
unpack
(
args
))
else
ok
,
err
=
_exec
(
val
,
args
)
ok
=
(
ok
==
0
)
end
if
not
ok
then
return
false
,
err
end
end
end
return
true
,
nil
end
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录