vipnet_parser 2.3.0 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
|