vipnet_parser 2.3.0 → 2.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/vipnet_parser/iplirconf.rb +81 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eaa3221fe438682301be1ece5f90a475d60c68bb
|
4
|
+
data.tar.gz: bd26ed5b99529a755ff15b06f50d60ea58f532af
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0f100d4b4f2625ffa68c94ceac7f34ca2db5d710a3d947e687e2dae9cc5872d0b9b2389f3f8b9457243f0336cc0b36797558507999d69a7759bf895ca2f4ec7d
|
7
|
+
data.tar.gz: ec4e7364811f3cb1d21557c2da28854b2ac7304436b7d4bd0b31887a570abba1b535787359ce902a2060f3a3123bf7592bd699d1caaf9bd889980af9d5f72d18
|
@@ -96,6 +96,87 @@ module VipnetParser
|
|
96
96
|
parsed_config_version
|
97
97
|
end
|
98
98
|
|
99
|
+
def downgrade(to)
|
100
|
+
# TODO: downgrade string too (need rebuild() first).
|
101
|
+
return false unless @hash
|
102
|
+
version = self.version
|
103
|
+
version =~ /^(?<minor_version>\d\.\d)\.*/
|
104
|
+
return false unless Regexp.last_match
|
105
|
+
minor_version = Regexp.last_match(:minor_version)
|
106
|
+
|
107
|
+
case to
|
108
|
+
when "3.x"
|
109
|
+
case minor_version
|
110
|
+
when "4.2"
|
111
|
+
new_hash = @hash.clone
|
112
|
+
props_to_delete = {
|
113
|
+
id: { any: %i(exclude_from_tunnels accessiplist) },
|
114
|
+
visibility: %i(tunneldefault subnet_real subnet_virtual),
|
115
|
+
misc: %i(
|
116
|
+
config_version timesync tunnel_local_network
|
117
|
+
ompnumthreads tcptunnel_establish tunnel_virt_assignment
|
118
|
+
),
|
119
|
+
}
|
120
|
+
props_to_add = {
|
121
|
+
misc: [{ iparponly: "off" }],
|
122
|
+
}
|
123
|
+
|
124
|
+
@hash.each_key do |key|
|
125
|
+
# { a: 1, b: 2 }.map(&:first)
|
126
|
+
# =>
|
127
|
+
# [:a, :b]
|
128
|
+
next unless props_to_delete.map(&:first).include?(key)
|
129
|
+
props = props_to_delete[key]
|
130
|
+
|
131
|
+
# Delete new props.
|
132
|
+
hashes_to_delete = []
|
133
|
+
case props
|
134
|
+
|
135
|
+
# "id" key.
|
136
|
+
when Hash
|
137
|
+
props = props.values.first
|
138
|
+
subkeys = @hash[key].map(&:first)
|
139
|
+
subkeys.each do |subkey|
|
140
|
+
props.each do |prop|
|
141
|
+
hashes_to_delete.push([new_hash[key][subkey], prop])
|
142
|
+
end
|
143
|
+
end
|
144
|
+
else
|
145
|
+
props.each do |prop|
|
146
|
+
hashes_to_delete.push([new_hash[key], prop])
|
147
|
+
end
|
148
|
+
end
|
149
|
+
hashes_to_delete.each { |hash| hash.first.delete(hash.last) }
|
150
|
+
end
|
151
|
+
|
152
|
+
# Add default values of deprecated props.
|
153
|
+
props_to_add.each do |key, props|
|
154
|
+
props.each do |prop|
|
155
|
+
new_hash[key].merge!(prop)
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
# Move to old "ip" style.
|
160
|
+
new_hash[:id].each_key do |id|
|
161
|
+
next unless new_hash[:id][id][:ip]
|
162
|
+
new_hash[:id][id][:ip].each_with_index do |ip, i|
|
163
|
+
ip =~ /^(?<ip>.+),\s(?<accessip>.+)/
|
164
|
+
next unless Regexp.last_match
|
165
|
+
new_hash[:id][id][:ip][i] = Regexp.last_match(:ip)
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
@hash = new_hash
|
170
|
+
|
171
|
+
true
|
172
|
+
else
|
173
|
+
false
|
174
|
+
end
|
175
|
+
else
|
176
|
+
false
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
99
180
|
def _section_hash(section_content, hash_key = nil)
|
100
181
|
hash = {}
|
101
182
|
|