junoser 0.5.5 → 0.5.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.pre-commit-config.yaml +1 -1
- data/CHANGELOG.md +9 -0
- data/Gemfile.lock +6 -6
- data/LICENSE.txt +1 -1
- data/README.md +1 -1
- data/lib/junoser/input.rb +21 -0
- data/lib/junoser/parser.rb +16 -16
- data/lib/junoser/ruler.rb +3 -2
- data/lib/junoser/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4881a7d03899a61a155ba962e077a6ca784a6ca254ff526d58942e4d106156b8
|
4
|
+
data.tar.gz: bbe11bdff5a203610c548add8633484c799053dd6195f8e247eade567bb2e8a1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 86cf2a739b40ce9254fd610b289af47734e21bd960b0687cc612c4765bd2e4e29241e39e6505a3902bd1c47cb5fea579ed047d9b3de850691407c644e8babdf3
|
7
|
+
data.tar.gz: b850d666c030f79dcbd5c5b269b7a411ab214c607efb3600c6170f8b417772887d2a5b0767adbce90d3d09387a5e122af45818e5a717056346c1d095585e0389
|
data/.pre-commit-config.yaml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
## [0.5.6] - 2024-05-01
|
2
|
+
|
3
|
+
### Fixed
|
4
|
+
|
5
|
+
* "teardown" may appear outside of "prefix-limit" block
|
6
|
+
* "tcp-flags" should accept a quoted string as an argument
|
7
|
+
* Structured config with square brackets ( `[ ... ]` ) should be parsed even when it's split into multiple lines
|
8
|
+
|
9
|
+
|
1
10
|
## [0.5.5] - 2023-11-14
|
2
11
|
|
3
12
|
### Fixed
|
data/Gemfile.lock
CHANGED
@@ -1,21 +1,21 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
junoser (0.5.
|
4
|
+
junoser (0.5.6)
|
5
5
|
parslet
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
|
-
mini_portile2 (2.8.
|
11
|
-
nokogiri (1.
|
10
|
+
mini_portile2 (2.8.6)
|
11
|
+
nokogiri (1.16.4)
|
12
12
|
mini_portile2 (~> 2.8.2)
|
13
13
|
racc (~> 1.4)
|
14
14
|
parslet (2.0.0)
|
15
15
|
power_assert (2.0.3)
|
16
|
-
racc (1.7.
|
17
|
-
rake (13.
|
18
|
-
test-unit (3.6.
|
16
|
+
racc (1.7.3)
|
17
|
+
rake (13.2.1)
|
18
|
+
test-unit (3.6.2)
|
19
19
|
power_assert
|
20
20
|
|
21
21
|
PLATFORMS
|
data/LICENSE.txt
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
The MIT License (MIT)
|
2
2
|
|
3
|
-
Copyright (c) 2015-
|
3
|
+
Copyright (c) 2015-2024 Shintaro Kojima
|
4
4
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
data/README.md
CHANGED
data/lib/junoser/input.rb
CHANGED
@@ -13,6 +13,7 @@ module Junoser
|
|
13
13
|
|
14
14
|
content = remove_blank_and_comment_line(content)
|
15
15
|
content = unify_carriage_return(content)
|
16
|
+
content = unify_square_brackets(content)
|
16
17
|
end
|
17
18
|
|
18
19
|
|
@@ -30,5 +31,25 @@ module Junoser
|
|
30
31
|
str.gsub! /\r\n?/, "\n"
|
31
32
|
str
|
32
33
|
end
|
34
|
+
|
35
|
+
# Statements or [ ... ] may be split into multiple lines. This method unifies them into one line.
|
36
|
+
def unify_square_brackets(str)
|
37
|
+
lines = []
|
38
|
+
|
39
|
+
open_brackets = 0
|
40
|
+
str.split("\n").each do |line|
|
41
|
+
raise "ERROR: invalid statement: #{line}" if open_brackets < 0
|
42
|
+
|
43
|
+
if open_brackets == 0
|
44
|
+
lines << line
|
45
|
+
else
|
46
|
+
lines.last << " " << line
|
47
|
+
end
|
48
|
+
|
49
|
+
open_brackets += line.count('[') - line.count(']')
|
50
|
+
end
|
51
|
+
|
52
|
+
lines.join("\n")
|
53
|
+
end
|
33
54
|
end
|
34
55
|
end
|
data/lib/junoser/parser.rb
CHANGED
@@ -20385,7 +20385,7 @@ module Junoser
|
|
20385
20385
|
b(str("destination-prefix-list"),
|
20386
20386
|
firewall_prefix_list
|
20387
20387
|
),
|
20388
|
-
a(str("tcp-flags"), arg),
|
20388
|
+
a(str("tcp-flags"), quote | arg),
|
20389
20389
|
str("tcp-initial"),
|
20390
20390
|
str("tcp-established"),
|
20391
20391
|
str("is-fragment")
|
@@ -20453,7 +20453,7 @@ module Junoser
|
|
20453
20453
|
(str("af11") | str("af12") | str("af13") | str("af21") | str("af22") | str("af23") | str("af31") | str("af32") | str("af33") | str("af41") | str("af42") | str("af43") | str("ef") | str("cs0") | str("cs1") | str("cs2") | str("cs3") | str("cs4") | str("cs5") | str("cs6") | str("cs7") | str("be") | arg)
|
20454
20454
|
)
|
20455
20455
|
),
|
20456
|
-
a(str("tcp-flags"), arg),
|
20456
|
+
a(str("tcp-flags"), quote | arg),
|
20457
20457
|
str("tcp-initial"),
|
20458
20458
|
str("tcp-established")
|
20459
20459
|
)
|
@@ -20899,7 +20899,7 @@ module Junoser
|
|
20899
20899
|
(str("ftp-data") | str("ftp") | str("ssh") | str("telnet") | str("smtp") | str("tacacs") | str("tacacs-ds") | str("domain") | str("dhcp") | str("bootps") | str("bootpc") | str("tftp") | str("finger") | str("https") | str("kerberos-sec") | str("pop3") | str("sunrpc") | str("ident") | str("nntp") | str("ntp") | str("netbios-ns") | str("netbios-dgm") | str("netbios-ssn") | str("imap") | str("snmptrap") | str("snmp") | str("xdmcp") | str("bgp") | str("ldap") | str("mobileip-agent") | str("mobilip-mn") | str("msdp") | str("http") | str("snpp") | str("biff") | str("exec") | str("login") | str("who") | str("cmd") | str("syslog") | str("printer") | str("talk") | str("ntalk") | str("rip") | str("timed") | str("klogin") | str("kshell") | str("ldp") | str("krb-prop") | str("krbupdate") | str("kpasswd") | str("socks") | str("afs") | str("pptp") | str("radius") | str("radacct") | str("zephyr-srv") | str("zephyr-clt") | str("zephyr-hm") | str("nfsd") | str("eklogin") | str("ekshell") | str("rkinit") | str("cvspserver") | arg)
|
20900
20900
|
)
|
20901
20901
|
),
|
20902
|
-
a(str("tcp-flags"), arg),
|
20902
|
+
a(str("tcp-flags"), quote | arg),
|
20903
20903
|
c(
|
20904
20904
|
b(str("icmp-code"),
|
20905
20905
|
(str("network-unreachable") | str("host-unreachable") | str("protocol-unreachable") | str("port-unreachable") | str("fragmentation-needed") | str("source-route-failed") | str("destination-network-unknown") | str("destination-host-unknown") | str("source-host-isolated") | str("destination-network-prohibited") | str("destination-host-prohibited") | str("network-unreachable-for-tos") | str("host-unreachable-for-tos") | str("communication-prohibited-by-filtering") | str("host-precedence-violation") | str("precedence-cutoff-in-effect") | str("redirect-for-network") | str("redirect-for-host") | str("redirect-for-tos-and-net") | str("redirect-for-tos-and-host") | str("ttl-eq-zero-during-transit") | str("ttl-eq-zero-during-reassembly") | str("ip-header-bad") | str("required-option-missing") | arg)
|
@@ -21271,7 +21271,7 @@ module Junoser
|
|
21271
21271
|
b(str("destination-prefix-list"),
|
21272
21272
|
firewall_prefix_list
|
21273
21273
|
),
|
21274
|
-
a(str("tcp-flags"), arg),
|
21274
|
+
a(str("tcp-flags"), quote | arg),
|
21275
21275
|
str("tcp-initial"),
|
21276
21276
|
str("tcp-established"),
|
21277
21277
|
str("is-fragment")
|
@@ -21339,7 +21339,7 @@ module Junoser
|
|
21339
21339
|
(str("af11") | str("af12") | str("af13") | str("af21") | str("af22") | str("af23") | str("af31") | str("af32") | str("af33") | str("af41") | str("af42") | str("af43") | str("ef") | str("cs0") | str("cs1") | str("cs2") | str("cs3") | str("cs4") | str("cs5") | str("cs6") | str("cs7") | str("be") | arg)
|
21340
21340
|
)
|
21341
21341
|
),
|
21342
|
-
a(str("tcp-flags"), arg),
|
21342
|
+
a(str("tcp-flags"), quote | arg),
|
21343
21343
|
str("tcp-initial"),
|
21344
21344
|
str("tcp-established")
|
21345
21345
|
)
|
@@ -27339,7 +27339,7 @@ module Junoser
|
|
27339
27339
|
(str("ftp-data") | str("ftp") | str("ssh") | str("telnet") | str("smtp") | str("tacacs") | str("tacacs-ds") | str("domain") | str("dhcp") | str("bootps") | str("bootpc") | str("tftp") | str("finger") | str("https") | str("kerberos-sec") | str("pop3") | str("sunrpc") | str("ident") | str("nntp") | str("ntp") | str("netbios-ns") | str("netbios-dgm") | str("netbios-ssn") | str("imap") | str("snmptrap") | str("snmp") | str("xdmcp") | str("bgp") | str("ldap") | str("mobileip-agent") | str("mobilip-mn") | str("msdp") | str("http") | str("snpp") | str("biff") | str("exec") | str("login") | str("who") | str("cmd") | str("syslog") | str("printer") | str("talk") | str("ntalk") | str("rip") | str("timed") | str("klogin") | str("kshell") | str("ldp") | str("krb-prop") | str("krbupdate") | str("kpasswd") | str("socks") | str("afs") | str("pptp") | str("radius") | str("radacct") | str("zephyr-srv") | str("zephyr-clt") | str("zephyr-hm") | str("nfsd") | str("eklogin") | str("ekshell") | str("rkinit") | str("cvspserver") | arg)
|
27340
27340
|
)
|
27341
27341
|
),
|
27342
|
-
a(str("tcp-flags"), arg),
|
27342
|
+
a(str("tcp-flags"), quote | arg),
|
27343
27343
|
str("tcp-initial"),
|
27344
27344
|
str("tcp-established"),
|
27345
27345
|
c(
|
@@ -27591,7 +27591,7 @@ module Junoser
|
|
27591
27591
|
(str("ftp-data") | str("ftp") | str("ssh") | str("telnet") | str("smtp") | str("tacacs") | str("tacacs-ds") | str("domain") | str("dhcp") | str("bootps") | str("bootpc") | str("tftp") | str("finger") | str("https") | str("kerberos-sec") | str("pop3") | str("sunrpc") | str("ident") | str("nntp") | str("ntp") | str("netbios-ns") | str("netbios-dgm") | str("netbios-ssn") | str("imap") | str("snmptrap") | str("snmp") | str("xdmcp") | str("bgp") | str("ldap") | str("mobileip-agent") | str("mobilip-mn") | str("msdp") | str("http") | str("snpp") | str("biff") | str("exec") | str("login") | str("who") | str("cmd") | str("syslog") | str("printer") | str("talk") | str("ntalk") | str("rip") | str("timed") | str("klogin") | str("kshell") | str("ldp") | str("krb-prop") | str("krbupdate") | str("kpasswd") | str("socks") | str("afs") | str("pptp") | str("radius") | str("radacct") | str("zephyr-srv") | str("zephyr-clt") | str("zephyr-hm") | str("nfsd") | str("eklogin") | str("ekshell") | str("rkinit") | str("cvspserver") | arg)
|
27592
27592
|
)
|
27593
27593
|
),
|
27594
|
-
a(str("tcp-flags"), arg),
|
27594
|
+
a(str("tcp-flags"), quote | arg),
|
27595
27595
|
str("tcp-initial"),
|
27596
27596
|
str("tcp-established"),
|
27597
27597
|
c(
|
@@ -27704,7 +27704,7 @@ module Junoser
|
|
27704
27704
|
(str("any") | str("hop-by-hop") | str("routing") | str("mobility") | str("esp") | str("fragment") | str("dstopts") | str("ah") | arg)
|
27705
27705
|
)
|
27706
27706
|
),
|
27707
|
-
a(str("tcp-flags"), arg),
|
27707
|
+
a(str("tcp-flags"), quote | arg),
|
27708
27708
|
str("tcp-initial"),
|
27709
27709
|
str("tcp-established"),
|
27710
27710
|
c(
|
@@ -29581,7 +29581,7 @@ module Junoser
|
|
29581
29581
|
),
|
29582
29582
|
str("tcp-initial"),
|
29583
29583
|
str("tcp-established"),
|
29584
|
-
a(str("tcp-flags"), arg),
|
29584
|
+
a(str("tcp-flags"), quote | arg),
|
29585
29585
|
b(str("interface"),
|
29586
29586
|
match_interface_object
|
29587
29587
|
),
|
@@ -30037,7 +30037,7 @@ module Junoser
|
|
30037
30037
|
a(str("ah-spi"), arg),
|
30038
30038
|
a(str("ah-spi-except"), arg)
|
30039
30039
|
),
|
30040
|
-
a(str("tcp-flags"), arg),
|
30040
|
+
a(str("tcp-flags"), quote | arg),
|
30041
30041
|
c(
|
30042
30042
|
b(str("loss-priority"),
|
30043
30043
|
(str("low") | str("high") | str("medium-low") | str("medium-high"))
|
@@ -30216,7 +30216,7 @@ module Junoser
|
|
30216
30216
|
),
|
30217
30217
|
str("tcp-initial"),
|
30218
30218
|
str("tcp-established"),
|
30219
|
-
a(str("tcp-flags"), arg),
|
30219
|
+
a(str("tcp-flags"), quote | arg),
|
30220
30220
|
c(
|
30221
30221
|
a(str("esp-spi"), arg),
|
30222
30222
|
a(str("esp-spi-except"), arg)
|
@@ -30386,7 +30386,7 @@ module Junoser
|
|
30386
30386
|
),
|
30387
30387
|
str("tcp-initial"),
|
30388
30388
|
str("tcp-established"),
|
30389
|
-
a(str("tcp-flags"), arg),
|
30389
|
+
a(str("tcp-flags"), quote | arg),
|
30390
30390
|
c(
|
30391
30391
|
a(str("esp-spi"), arg),
|
30392
30392
|
a(str("esp-spi-except"), arg)
|
@@ -30875,7 +30875,7 @@ module Junoser
|
|
30875
30875
|
a(str("fragment-offset-except"), arg)
|
30876
30876
|
),
|
30877
30877
|
a(str("fragment-flags"), arg),
|
30878
|
-
a(str("tcp-flags"), arg),
|
30878
|
+
a(str("tcp-flags"), quote | arg),
|
30879
30879
|
c(
|
30880
30880
|
a(str("ah-spi"), arg),
|
30881
30881
|
a(str("ah-spi-except"), arg)
|
@@ -109012,7 +109012,7 @@ module Junoser
|
|
109012
109012
|
(str("ftp-data") | str("ftp") | str("ssh") | str("telnet") | str("smtp") | str("tacacs") | str("tacacs-ds") | str("domain") | str("dhcp") | str("bootps") | str("bootpc") | str("tftp") | str("finger") | str("https") | str("kerberos-sec") | str("pop3") | str("sunrpc") | str("ident") | str("nntp") | str("ntp") | str("netbios-ns") | str("netbios-dgm") | str("netbios-ssn") | str("imap") | str("snmptrap") | str("snmp") | str("xdmcp") | str("bgp") | str("ldap") | str("mobileip-agent") | str("mobilip-mn") | str("msdp") | str("http") | str("snpp") | str("biff") | str("exec") | str("login") | str("who") | str("cmd") | str("syslog") | str("printer") | str("talk") | str("ntalk") | str("rip") | str("timed") | str("klogin") | str("kshell") | str("ldp") | str("krb-prop") | str("krbupdate") | str("kpasswd") | str("socks") | str("afs") | str("pptp") | str("radius") | str("radacct") | str("zephyr-srv") | str("zephyr-clt") | str("zephyr-hm") | str("nfsd") | str("eklogin") | str("ekshell") | str("rkinit") | str("cvspserver") | arg)
|
109013
109013
|
)
|
109014
109014
|
),
|
109015
|
-
a(str("tcp-flags"), arg),
|
109015
|
+
a(str("tcp-flags"), quote | arg),
|
109016
109016
|
c(
|
109017
109017
|
b(str("ip-protocol"),
|
109018
109018
|
(str("icmp6") | str("icmpv6") | str("igmp") | str("ipip") | str("tcp") | str("egp") | str("udp") | str("rsvp") | str("gre") | str("esp") | str("ah") | str("icmp") | str("ospf") | str("pim") | str("sctp") | str("dstopts") | str("routing") | str("fragment") | str("hop-by-hop") | str("ipv6") | str("no-next-header") | str("vrrp") | arg)
|
@@ -109114,7 +109114,7 @@ module Junoser
|
|
109114
109114
|
(str("ftp-data") | str("ftp") | str("ssh") | str("telnet") | str("smtp") | str("tacacs") | str("tacacs-ds") | str("domain") | str("dhcp") | str("bootps") | str("bootpc") | str("tftp") | str("finger") | str("https") | str("kerberos-sec") | str("pop3") | str("sunrpc") | str("ident") | str("nntp") | str("ntp") | str("netbios-ns") | str("netbios-dgm") | str("netbios-ssn") | str("imap") | str("snmptrap") | str("snmp") | str("xdmcp") | str("bgp") | str("ldap") | str("mobileip-agent") | str("mobilip-mn") | str("msdp") | str("http") | str("snpp") | str("biff") | str("exec") | str("login") | str("who") | str("cmd") | str("syslog") | str("printer") | str("talk") | str("ntalk") | str("rip") | str("timed") | str("klogin") | str("kshell") | str("ldp") | str("krb-prop") | str("krbupdate") | str("kpasswd") | str("socks") | str("afs") | str("pptp") | str("radius") | str("radacct") | str("zephyr-srv") | str("zephyr-clt") | str("zephyr-hm") | str("nfsd") | str("eklogin") | str("ekshell") | str("rkinit") | str("cvspserver") | arg)
|
109115
109115
|
)
|
109116
109116
|
),
|
109117
|
-
a(str("tcp-flags"), arg)
|
109117
|
+
a(str("tcp-flags"), quote | arg)
|
109118
109118
|
)
|
109119
109119
|
)
|
109120
109120
|
)
|
@@ -122382,7 +122382,7 @@ module Junoser
|
|
122382
122382
|
(str("ftp-data") | str("ftp") | str("ssh") | str("telnet") | str("smtp") | str("tacacs") | str("tacacs-ds") | str("domain") | str("dhcp") | str("bootps") | str("bootpc") | str("tftp") | str("finger") | str("https") | str("kerberos-sec") | str("pop3") | str("sunrpc") | str("ident") | str("nntp") | str("ntp") | str("netbios-ns") | str("netbios-dgm") | str("netbios-ssn") | str("imap") | str("snmptrap") | str("snmp") | str("xdmcp") | str("bgp") | str("ldap") | str("mobileip-agent") | str("mobilip-mn") | str("msdp") | str("http") | str("snpp") | str("biff") | str("exec") | str("login") | str("who") | str("cmd") | str("syslog") | str("printer") | str("talk") | str("ntalk") | str("rip") | str("timed") | str("klogin") | str("kshell") | str("ldp") | str("krb-prop") | str("krbupdate") | str("kpasswd") | str("socks") | str("afs") | str("pptp") | str("radius") | str("radacct") | str("zephyr-srv") | str("zephyr-clt") | str("zephyr-hm") | str("nfsd") | str("eklogin") | str("ekshell") | str("rkinit") | str("cvspserver") | arg)
|
122383
122383
|
)
|
122384
122384
|
),
|
122385
|
-
a(str("tcp-flags"), arg),
|
122385
|
+
a(str("tcp-flags"), quote | arg),
|
122386
122386
|
c(
|
122387
122387
|
b(str("icmp-code"),
|
122388
122388
|
(str("network-unreachable") | str("host-unreachable") | str("protocol-unreachable") | str("port-unreachable") | str("fragmentation-needed") | str("source-route-failed") | str("destination-network-unknown") | str("destination-host-unknown") | str("source-host-isolated") | str("destination-network-prohibited") | str("destination-host-prohibited") | str("network-unreachable-for-tos") | str("host-unreachable-for-tos") | str("communication-prohibited-by-filtering") | str("host-precedence-violation") | str("precedence-cutoff-in-effect") | str("redirect-for-network") | str("redirect-for-host") | str("redirect-for-tos-and-net") | str("redirect-for-tos-and-host") | str("ttl-eq-zero-during-transit") | str("ttl-eq-zero-during-reassembly") | str("ip-header-bad") | str("required-option-missing") | arg)
|
data/lib/junoser/ruler.rb
CHANGED
@@ -56,6 +56,7 @@ module Junoser
|
|
56
56
|
str.gsub! '"message" arg', '"message" (quote | arg)'
|
57
57
|
str.gsub! '"description" arg', '"description" (quote | arg)'
|
58
58
|
str.gsub! '"as-path-prepend" arg', '"as-path-prepend" (quote | arg)'
|
59
|
+
str.gsub! '"tcp-flags" arg', '"tcp-flags" (quote | arg)'
|
59
60
|
|
60
61
|
str.gsub!(/^(\s*)"as-path" arg \(\s*c\(\s*arg/) do
|
61
62
|
format(['"as-path" arg (',
|
@@ -245,8 +246,8 @@ module Junoser
|
|
245
246
|
str.gsub!(/^(rule\(:license_object\) do.*?"key") arg/m) { "#{$1} (quote | arg)" }
|
246
247
|
|
247
248
|
# Fix .xsd: "prefix-limit teardown"
|
248
|
-
str.gsub!(/^(\s*)"teardown" (\(.*?as\(:oneline\)\s*\)\s*\))/m) do
|
249
|
-
"#{$1}\"teardown\" arg #{$
|
249
|
+
str.gsub!(/^((\s*)"maximum" arg,)\s*"teardown" (\(.*?as\(:oneline\)\s*\)\s*\))/m) do
|
250
|
+
"#{$1}\n#{$2}\"teardown\" arg #{$3},\n#{$2}\"teardown\""
|
250
251
|
end
|
251
252
|
|
252
253
|
# Fix .xsd: faster interface speed support
|
data/lib/junoser/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: junoser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shintaro Kojima
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-04-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parslet
|