summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--acf2/model/aaa.lua2
-rw-r--r--acf2/model/model.lua7
-rw-r--r--acf2/modules/awall.lua26
-rw-r--r--acf2/modules/net.lua10
-rw-r--r--acf2/modules/sshd.lua10
5 files changed, 31 insertions, 24 deletions
diff --git a/acf2/model/aaa.lua b/acf2/model/aaa.lua
index a5d6196..dcd9a58 100644
--- a/acf2/model/aaa.lua
+++ b/acf2/model/aaa.lua
@@ -37,7 +37,7 @@ end
local User = M.new()
User.password = Password
-User['real-name'] = M.String
+User.real_name = M.String
User.superuser = M.Boolean{default=false}
User.roles = M.Set{type=M.Reference{scope='../../../roles'}}
diff --git a/acf2/model/model.lua b/acf2/model/model.lua
index 6ff398a..2472a3c 100644
--- a/acf2/model/model.lua
+++ b/acf2/model/model.lua
@@ -45,6 +45,9 @@ function M.to_field(obj, params)
end
+local function normalize_key(key) return key:gsub('_', '-') end
+
+
M.Action = class(Member)
function M.Action:init(params)
@@ -84,6 +87,7 @@ function M.new(base)
function mt.__newindex(t, k, v)
assert(v)
+ k = normalize_key(k)
local override = t[k]
if type(v) == 'table' then v = to_member(v) end
@@ -141,6 +145,8 @@ function M.Model:init(context)
function mt.load(k, options)
local v = mt.class[k]
+ k = normalize_key(k)
+ if not v then v = mt.class[k] end
if isinstance(v, Field) then
return BoundMember(self, k, v):load(options)
@@ -179,6 +185,7 @@ function M.Model:init(context)
function mt.mmeta(name) return mt.member(name):meta() end
function mt.save(k, v)
+ k = normalize_key(k)
mt.check_removable(k, v)
return mt.member(k, false, Field):save(v)
end
diff --git a/acf2/modules/awall.lua b/acf2/modules/awall.lua
index 071db57..45c3674 100644
--- a/acf2/modules/awall.lua
+++ b/acf2/modules/awall.lua
@@ -1,5 +1,5 @@
--[[
-Copyright (c) 2012-2013 Kaarle Ritvanen
+Copyright (c) 2012-2014 Kaarle Ritvanen
See LICENSE file for license details
--]]
@@ -27,15 +27,15 @@ IPSet.range = M.Range{type=M.net.IPv4Address}
local Service = M.new()
Service.proto = M.String{required=true, ui_name='Protocol'}
Service.port = M.Set{type=M.Range{type=M.net.Port}}
-Service['icmp-type'] = M.String{ui_name='ICMP type'}
-Service['ct-helper'] = M.String{ui_name='Connection tracking helper'}
+Service.icmp_type = M.String{ui_name='ICMP type'}
+Service.ct_helper = M.String{ui_name='Connection tracking helper'}
-- TODO fw zone
local Zone = M.new()
Zone.iface = M.Set{type=M.String, ui_name='Interfaces'}
Zone.addr = M.Set{type=M.String, ui_name='Addresses'}
-Zone['route-back'] = M.Boolean{default=false}
+Zone.route_back = M.Boolean{default=false}
local LogClass = M.new()
LogClass.mode = M.String{
@@ -85,17 +85,17 @@ Limit.interval = M.Integer
Limit.log = M.Reference{scope='../../../log'}
local FilterRule = M.new(PolicyRule)
-FilterRule['conn-limit'] = M.Model{model=Limit, ui_name='Connection limit'}
-FilterRule['flow-limit'] = M.Model{model=Limit, ui_name='Flow limit'}
+FilterRule.conn_limit = M.Model{model=Limit, ui_name='Connection limit'}
+FilterRule.flow_limit = M.Model{model=Limit, ui_name='Flow limit'}
FilterRule.dnat = M.net.IPv4Address{ui_name='DNAT target'}
-FilterRule['no-track'] = M.Boolean{default=false, ui_name='CT bypass'}
+FilterRule.no_track = M.Boolean{default=false, ui_name='CT bypass'}
FilterRule.related = M.List{type=Rule, ui_name='Related packet rules'}
local DivertRule = M.new(Rule)
-DivertRule['to-port'] = M.Range{type=M.net.Port, ui_name='Target port'}
+DivertRule.to_port = M.Range{type=M.net.Port, ui_name='Target port'}
local NATRule = M.new(DivertRule)
-NATRule['to-addr'] = M.Range{type=M.net.IPv4Address, ui_name='Target address'}
+NATRule.to_addr = M.Range{type=M.net.IPv4Address, ui_name='Target address'}
local MarkRule = M.new(Rule)
MarkRule.mark = M.Integer{required=true}
@@ -112,7 +112,7 @@ AWall.log = M.Collection{
type=LogClass, ui_name='Log classes', ui_member='Log class'
}
AWall.policy = M.List{type=PolicyRule, ui_name='Policies', ui_member='Policy'}
-AWall['packet-log'] = M.List{
+AWall.packet_log = M.List{
type=PacketLogRule, ui_name='Logging', ui_member='Logging rule'
}
AWall.filter = M.List{type=FilterRule}
@@ -121,7 +121,7 @@ AWall.snat = M.List{type=NATRule, ui_name='SNAT', ui_member='SNAT rule'}
AWall.mark = M.List{
type=MarkRule, ui_name='Packet marking', ui_member='Packet marking rule'
}
-AWall['route-track'] = M.List{
+AWall.route_track = M.List{
type=MarkRule, ui_name='Route tracking', ui_member='Route tracking rule'
}
AWall.tproxy = M.List{
@@ -129,10 +129,10 @@ AWall.tproxy = M.List{
ui_name='Transparent proxy',
ui_member='Transparent proxy rule'
}
-AWall['clamp-mss'] = M.List{
+AWall.clamp_mss = M.List{
type=ClampMSSRule, ui_name='MSS clamping', ui_member='MSS clamping rule'
}
-AWall['no-track'] = M.List{
+AWall.no_track = M.List{
type=Rule, ui_name='CT bypass', ui_member='Connection tracking bypass rule'
}
AWall.ipset = M.Collection{type=IPSet, ui_name='IP sets', ui_member='IP set'}
diff --git a/acf2/modules/net.lua b/acf2/modules/net.lua
index f3a9fc0..32b9d20 100644
--- a/acf2/modules/net.lua
+++ b/acf2/modules/net.lua
@@ -19,7 +19,7 @@ local Resolv = M.new()
Resolv.servers = M.List{
type=M.net.IPAddress, addr='nameserver/#', widget='inline'
}
-Resolv['search-domains'] = M.List{
+Resolv.search_domains = M.List{
type=M.String, addr='search/domain/#', widget='inline'
}
@@ -131,7 +131,7 @@ Interface.type = M.String{
compute=function(self, iface)
if #iface.slaves > 0 then return 'bond' end
if #iface.ports > 0 then return 'bridge' end
- if iface['vlan-tag'] then return 'vlan' end
+ if iface.vlan_tag then return 'vlan' end
end,
editable=function(self, iface) return not iface:auto_vlan_tag() end,
required=true,
@@ -192,7 +192,7 @@ Interface.trunk = M.Reference{
addr='@family/link/@method/none/vlan-raw-device'
}
-- TODO ensure that (trunk, tag) is unique
-Interface['vlan-tag'] = M.Integer{
+Interface.vlan_tag = M.Integer{
condition={type='vlan'},
compute='auto_vlan_tag',
required=true,
@@ -234,13 +234,13 @@ Interface.stats = M.Collection{
local Net = M.new()
-Net['host-name'] = M.String{addr='/augeas/etc/hostname/hostname'}
+Net.host_name = M.String{addr='/augeas/etc/hostname/hostname'}
Net.hosts = M.List{type=Host, addr='/augeas/etc/hosts', layout='tabular'}
Net.resolver = M.Model{
model=Resolv, addr='/augeas/etc/resolv.conf', ui_name='DNS resolver'
}
-Net['enabled-ifaces'] = M.List{
+Net.enabled_ifaces = M.List{
type=M.Set{type=M.Reference{scope='../../interfaces', on_delete='set-null'}},
visible=false,
addr=iface_aug_addr..'/auto/#'
diff --git a/acf2/modules/sshd.lua b/acf2/modules/sshd.lua
index c79afd4..458d2d7 100644
--- a/acf2/modules/sshd.lua
+++ b/acf2/modules/sshd.lua
@@ -1,22 +1,22 @@
--[[
Copyright (c) 2013 Natanael Copa <ncopa@alpinelinux.org>
-Copyright (c) 2013 Kaarle Ritvanen
+Copyright (c) 2013-2014 Kaarle Ritvanen
See LICENSE file for license details
--]]
local M = require('acf2.model')
local Sshd = M.service('sshd')
-Sshd['root-login'] = M.Boolean{
+Sshd.root_login = M.Boolean{
addr='PermitRootLogin', ui_name='Permit root login', default=true
}
-Sshd['password-auth'] = M.Boolean{
+Sshd.password_auth = M.Boolean{
addr='PasswordAuthentication',
ui_name='Password authentication',
default=true
}
-Sshd['use-dns'] = M.Boolean{addr='UseDNS', ui_name='Use DNS', default=true}
-Sshd['agent-forward'] = M.Boolean{
+Sshd.use_dns = M.Boolean{addr='UseDNS', ui_name='Use DNS', default=true}
+Sshd.agent_forward = M.Boolean{
addr='AllowAgentForwarding', ui_name='Allow agent forwarding', default=true
}