oxidized-web 0.14.0 → 0.15.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.

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.0
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-17 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
-