oxidized-web 0.14.0 → 0.15.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of oxidized-web might be problematic. Click here for more details.

metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oxidized-web
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.0
4
+ version: 0.15.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Saku Ytti
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2024-06-28 00:00:00.000000000 Z
12
+ date: 2025-02-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: charlock_holmes
@@ -81,20 +81,34 @@ dependencies:
81
81
  - - "~>"
82
82
  - !ruby/object:Gem::Version
83
83
  version: '2.3'
84
+ - !ruby/object:Gem::Dependency
85
+ name: ostruct
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: '0.6'
91
+ type: :runtime
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: '0.6'
84
98
  - !ruby/object:Gem::Dependency
85
99
  name: oxidized
86
100
  requirement: !ruby/object:Gem::Requirement
87
101
  requirements:
88
102
  - - "~>"
89
103
  - !ruby/object:Gem::Version
90
- version: '0.26'
104
+ version: '0.31'
91
105
  type: :runtime
92
106
  prerelease: false
93
107
  version_requirements: !ruby/object:Gem::Requirement
94
108
  requirements:
95
109
  - - "~>"
96
110
  - !ruby/object:Gem::Version
97
- version: '0.26'
111
+ version: '0.31'
98
112
  - !ruby/object:Gem::Dependency
99
113
  name: puma
100
114
  requirement: !ruby/object:Gem::Requirement
@@ -102,9 +116,6 @@ dependencies:
102
116
  - - ">="
103
117
  - !ruby/object:Gem::Version
104
118
  version: 3.11.4
105
- - - "<"
106
- - !ruby/object:Gem::Version
107
- version: 6.5.0
108
119
  type: :runtime
109
120
  prerelease: false
110
121
  version_requirements: !ruby/object:Gem::Requirement
@@ -112,9 +123,6 @@ dependencies:
112
123
  - - ">="
113
124
  - !ruby/object:Gem::Version
114
125
  version: 3.11.4
115
- - - "<"
116
- - !ruby/object:Gem::Version
117
- version: 6.5.0
118
126
  - !ruby/object:Gem::Dependency
119
127
  name: sinatra
120
128
  requirement: !ruby/object:Gem::Requirement
@@ -122,9 +130,6 @@ dependencies:
122
130
  - - ">="
123
131
  - !ruby/object:Gem::Version
124
132
  version: 1.4.6
125
- - - "<"
126
- - !ruby/object:Gem::Version
127
- version: '5.0'
128
133
  type: :runtime
129
134
  prerelease: false
130
135
  version_requirements: !ruby/object:Gem::Requirement
@@ -132,9 +137,6 @@ dependencies:
132
137
  - - ">="
133
138
  - !ruby/object:Gem::Version
134
139
  version: 1.4.6
135
- - - "<"
136
- - !ruby/object:Gem::Version
137
- version: '5.0'
138
140
  - !ruby/object:Gem::Dependency
139
141
  name: sinatra-contrib
140
142
  requirement: !ruby/object:Gem::Requirement
@@ -142,9 +144,6 @@ dependencies:
142
144
  - - ">="
143
145
  - !ruby/object:Gem::Version
144
146
  version: 1.4.6
145
- - - "<"
146
- - !ruby/object:Gem::Version
147
- version: '5.0'
148
147
  type: :runtime
149
148
  prerelease: false
150
149
  version_requirements: !ruby/object:Gem::Requirement
@@ -152,9 +151,6 @@ dependencies:
152
151
  - - ">="
153
152
  - !ruby/object:Gem::Version
154
153
  version: 1.4.6
155
- - - "<"
156
- - !ruby/object:Gem::Version
157
- version: '5.0'
158
154
  - !ruby/object:Gem::Dependency
159
155
  name: bundler
160
156
  requirement: !ruby/object:Gem::Requirement
@@ -245,56 +241,56 @@ dependencies:
245
241
  requirements:
246
242
  - - "~>"
247
243
  - !ruby/object:Gem::Version
248
- version: 1.64.1
244
+ version: 1.72.1
249
245
  type: :development
250
246
  prerelease: false
251
247
  version_requirements: !ruby/object:Gem::Requirement
252
248
  requirements:
253
249
  - - "~>"
254
250
  - !ruby/object:Gem::Version
255
- version: 1.64.1
251
+ version: 1.72.1
256
252
  - !ruby/object:Gem::Dependency
257
253
  name: rubocop-minitest
258
254
  requirement: !ruby/object:Gem::Requirement
259
255
  requirements:
260
256
  - - "~>"
261
257
  - !ruby/object:Gem::Version
262
- version: 0.35.0
258
+ version: 0.37.1
263
259
  type: :development
264
260
  prerelease: false
265
261
  version_requirements: !ruby/object:Gem::Requirement
266
262
  requirements:
267
263
  - - "~>"
268
264
  - !ruby/object:Gem::Version
269
- version: 0.35.0
265
+ version: 0.37.1
270
266
  - !ruby/object:Gem::Dependency
271
267
  name: rubocop-rails
272
268
  requirement: !ruby/object:Gem::Requirement
273
269
  requirements:
274
270
  - - "~>"
275
271
  - !ruby/object:Gem::Version
276
- version: 2.25.0
272
+ version: 2.30.0
277
273
  type: :development
278
274
  prerelease: false
279
275
  version_requirements: !ruby/object:Gem::Requirement
280
276
  requirements:
281
277
  - - "~>"
282
278
  - !ruby/object:Gem::Version
283
- version: 2.25.0
279
+ version: 2.30.0
284
280
  - !ruby/object:Gem::Dependency
285
281
  name: rubocop-rake
286
282
  requirement: !ruby/object:Gem::Requirement
287
283
  requirements:
288
284
  - - "~>"
289
285
  - !ruby/object:Gem::Version
290
- version: 0.6.0
286
+ version: 0.7.1
291
287
  type: :development
292
288
  prerelease: false
293
289
  version_requirements: !ruby/object:Gem::Requirement
294
290
  requirements:
295
291
  - - "~>"
296
292
  - !ruby/object:Gem::Version
297
- version: 0.6.0
293
+ version: 0.7.1
298
294
  - !ruby/object:Gem::Dependency
299
295
  name: simplecov
300
296
  requirement: !ruby/object:Gem::Requirement
@@ -329,14 +325,14 @@ dependencies:
329
325
  requirements:
330
326
  - - "~>"
331
327
  - !ruby/object:Gem::Version
332
- version: 0.12.3
328
+ version: 0.13.1
333
329
  type: :development
334
330
  prerelease: false
335
331
  version_requirements: !ruby/object:Gem::Requirement
336
332
  requirements:
337
333
  - - "~>"
338
334
  - !ruby/object:Gem::Version
339
- version: 0.12.3
335
+ version: 0.13.1
340
336
  description: puma+sinatra+haml webUI + REST API for oxidized
341
337
  email:
342
338
  - saku@ytti.fi
@@ -361,13 +357,11 @@ files:
361
357
  - Rakefile
362
358
  - docs/development.md
363
359
  - lib/oxidized/web.rb
364
- - lib/oxidized/web/mig.rb
365
360
  - lib/oxidized/web/public/css/oxidized.css
366
361
  - lib/oxidized/web/public/images/favicon.ico
367
362
  - lib/oxidized/web/public/images/oxidizing.png
368
363
  - lib/oxidized/web/public/images/oxidizing_40px.png
369
364
  - lib/oxidized/web/public/scripts/oxidized.js
370
- - lib/oxidized/web/public/scripts/script-migration.js
371
365
  - lib/oxidized/web/public/weblibs/bootstrap-icons.css
372
366
  - lib/oxidized/web/public/weblibs/bootstrap.bundle.js
373
367
  - lib/oxidized/web/public/weblibs/bootstrap.bundle.js.map
@@ -391,7 +385,6 @@ files:
391
385
  - lib/oxidized/web/views/footer.haml
392
386
  - lib/oxidized/web/views/head.haml
393
387
  - lib/oxidized/web/views/layout.haml
394
- - lib/oxidized/web/views/migration.haml
395
388
  - lib/oxidized/web/views/node.haml
396
389
  - lib/oxidized/web/views/nodes.haml
397
390
  - lib/oxidized/web/views/stats.haml
@@ -402,6 +395,8 @@ files:
402
395
  - package-lock.json
403
396
  - package.json
404
397
  - spec/node_spec.rb
398
+ - spec/node_version_spec.rb
399
+ - spec/nodes_spec.rb
405
400
  - spec/root_spec.rb
406
401
  - spec/spec_helper.rb
407
402
  - spec/webapp_spec.rb
@@ -1,140 +0,0 @@
1
- module Oxidized
2
- module API
3
- class Mig
4
- def initialize(hash_router_db, cloginrc, path_new_router)
5
- @hash_router_db = hash_router_db
6
- @cloginrc = cloginrc
7
- @path_new_router = path_new_router
8
- end
9
-
10
- # read cloginrc and return a hash with node name, which a hash value which contains user,
11
- # password, eventually enable
12
- def cloginrc(clogin_file)
13
- close_file = clogin_file
14
- file = close_file.read
15
- file = file.gsub('add', '')
16
-
17
- hash = {}
18
- file.each_line do |line|
19
- # stock all device name, and password and enable if there is one
20
- line = line.split
21
- (0..line.length).each do |i|
22
- if line[i] == 'user'
23
- # add the equipment and user if not exist
24
- hash[line[i + 1]] = { user: line[i + 2] } unless hash[line[i + 1]]
25
- # if the equipment exist, add password and enable password
26
- elsif line[i] == 'password'
27
- if hash[line[i + 1]]
28
- if line.length > i + 2
29
- h = hash[line[i + 1]]
30
- h[:password] = line[i + 2]
31
- h[:enable] = line[i + 3] if /\s*/.match(line[i + 3])
32
- hash[line[i + 1]] = h
33
- elsif line.length == i + 2
34
- h = hash[line[i + 1]]
35
- h[:password] = line[i + 2]
36
- hash[line[i + 1]] = h
37
- end
38
- end
39
- end
40
- end
41
- end
42
- close_file.close
43
- hash
44
- end
45
-
46
- def model_dico(model)
47
- dico = { 'cisco' => 'ios', 'foundry' => 'ironware' }
48
- model = model.gsub("\n", '')
49
- model = dico[model] if dico[model]
50
- model
51
- end
52
-
53
- # add node and group for an equipment (take a list of router.db)
54
- def rancid_group(router_db_list)
55
- model = {}
56
- hash = cloginrc @cloginrc
57
- router_db_list.each do |router_db|
58
- group = router_db[:group]
59
- file_close = router_db[:file]
60
- file = file_close.read
61
- file = file.gsub(':up', '')
62
- file.gsub(' ', '')
63
-
64
- file.each_line do |line|
65
- line = line.split(':')
66
- node = line[0]
67
- next unless hash[node]
68
-
69
- h = hash[node]
70
- model = model_dico line[1].to_s
71
- h[:model] = model
72
- h[:group] = group
73
- end
74
- file_close.close
75
- end
76
- hash
77
- end
78
-
79
- # write a router.db conf, need the hash and the path of the file we whish create
80
- def write_router_db(hash)
81
- router_db = File.new(@path_new_router, 'w')
82
- hash.each do |key, value|
83
- line = key.to_s
84
- line += ":#{value[:model]}"
85
- line += ":#{value[:user]}"
86
- line += ":#{value[:password]}"
87
- line += ":#{value[:group]}"
88
- line += ":#{value[:enable]}" if value[:enable]
89
- router_db.puts(line)
90
- end
91
- router_db.close
92
- end
93
-
94
- def edit_conf_file(path_conf, router_db_path)
95
- file_close = File.open(path_conf, 'r')
96
- file = file_close
97
- file = file.read
98
- source_reached = false
99
- new_file = []
100
- file.each_line do |line|
101
- if source_reached
102
- next unless /^\w/.match(line)
103
-
104
- source_reached = false
105
- end
106
- new_file.push(line)
107
- next unless /source:/.match(line)
108
-
109
- source_reached = true
110
- new_file.push(" default: csv\n")
111
- new_file.push(" csv:\n")
112
- new_file.push(" file: #{router_db_path}\n")
113
- new_file.push(" delimiter: !ruby/regexp /:/\n")
114
- new_file.push(" map:\n")
115
- new_file.push(" name: 0\n")
116
- new_file.push(" model: 1\n")
117
- new_file.push(" username: 2\n")
118
- new_file.push(" password: 3\n")
119
- new_file.push(" group: 4\n")
120
- new_file.push(" vars_map:\n")
121
- new_file.push(" enable: 5\n")
122
- next
123
- end
124
- file_close.close
125
-
126
- new_conf = File.new(path_conf, "w")
127
- new_file.each do |line|
128
- new_conf.puts(line)
129
- end
130
- new_conf.close
131
- end
132
-
133
- def go_rancid_migration
134
- hash = rancid_group @hash_router_db
135
- write_router_db hash
136
- edit_conf_file "#{Dir.home}/.config/oxidized/config", @path_new_router
137
- end
138
- end
139
- end
140
- end
@@ -1,15 +0,0 @@
1
- var number = 1;
2
-
3
- function add_file_upload(){
4
- number++;
5
- document.getElementById('number').value = number;
6
- var table = document.getElementById("files");
7
- var row = table.insertRow(-1);
8
- var group = row.insertCell(0);
9
- group.id = "file";
10
- var file = row.insertCell(1);
11
- file.id = "file";
12
- group.innerHTML = '<input type="text" name="group' + number +'" value="default">';
13
- file.innerHTML = '<input type="file" name="file' + number +'" required >';
14
-
15
- }
@@ -1,53 +0,0 @@
1
- .alert.alert-warning
2
- The RANCID migration tool is deprecated and will be removed in a future
3
- release. If you still need it
4
- %b and
5
- are willing to maintain it, open an issue at
6
- %a{href: 'https://github.com/ytti/oxidized-web/issues'}oxidized-web issues (github)
7
-
8
- %h2
9
- RANCID to Oxidized
10
- %small router.db and Group Migration
11
- %form.form-horizontal{method: 'post', enctype: 'multipart/form-data',
12
- role: 'form'}
13
- .form-group
14
- %label.col-sm-3{for: 'path_new_file'}
15
- Oxidized router.db Path
16
- .col-sm-3
17
- %input.form-control{type: 'text', name: 'path_new_file',
18
- placeholder: 'Path/to_file/here.db'}
19
- .form-group
20
- %label.col-sm-3{for: 'clogrinc'} .cloginrc File
21
- .col-sm-3
22
- .input-group
23
- %input.form-control{type: 'text'}
24
- %span.input-group-btn
25
- %span.btn.btn-default.btn-file
26
- %input{type: 'file', name: 'cloginrc'}
27
- Browse
28
-
29
- .form-group
30
- .col-sm-12
31
- .row
32
- %label.col-sm-3.label-control RANCID router.db File
33
- %label.col-sm-3.label-control Device Group
34
- .col-sm-12#rancid_routerdbs
35
- .row#rancidDb1
36
- .col-sm-3
37
- .input-group
38
- %input.form-control{type: 'text'}
39
- %span.input-group-btn
40
- %span.btn.btn-default.btn-file
41
- %input#file1{type: 'file', name: 'file1', required: ''}
42
- Browse
43
- .col-sm-3
44
- %input.form-control#group1{type: 'text', name: 'group1',
45
- value: 'default'}
46
- .row
47
- .col-sm-3
48
- %button.btn.btn-default#add{type: 'button'} Add More
49
-
50
- .form-group
51
- .col-sm-12
52
- %button.btn.btn-primary#upload_button{type: 'submit'} Migrate!
53
-