Git Product home page Git Product logo

oxidized-web's Introduction

Oxidized Web Build Status Gem Version

Web userinterface and RESTful API for Oxidized.

This is not useful independently, see https://github.com/ytti/oxidized for install instructions

Live demo: http://oxidized.arahant.net

License and Copyright

Copyright 2013-2015 Saku Ytti [email protected] 2013-2015 Samer Abdel-Hafez [email protected]

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

oxidized-web's People

Contributors

crami avatar dangoscomb avatar danilopopeye avatar denngie avatar devicenull avatar floriandoublet avatar gs-kamnas avatar hestonk avatar hggh avatar ivarhjulben avatar laf avatar miff2000 avatar mikebryant avatar mk-00 avatar mortzu avatar mrrj45 avatar nickhilliard avatar nopedial avatar prtrx avatar rosiak avatar sspans avatar sts avatar supertylerc avatar wendelj avatar wk avatar yesbox avatar ytti avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

oxidized-web's Issues

converting UTC on web bug.

oxidized-web-0.6.0
oxidized-script-0.1.1
oxidized-0.9.0

converting time UTC in web UI only work on first page, the next page still showing UTC.

page 1
page 2

Preserve Spacing for Configs

The web interface currently does not preserve spacing for the configs. This causes the display of configurations to look confusing. Here's an example screenshot:

oxidized-web-no-whitespace

Additionally, the font should be monospaced to allow for easier reading.

Relative URI

the web interface is hardcoded to be located at /

It would be v. handy to have the base URI as a configurable option, because this would allow integration into an existing web site framework using proxying.

Ability for "Search in confs" to support regex searches within configurations

Currently when using the "Search in confs" button the search terms doesnt appear to support regex. So a search for ^ip http server will return no results, but ip http server returns results for ip http server and also no ip http server.

This limits the usefulness of the search in confs function to generalistic searches, rather than specific searches to identify defective devices.

Coudl we get a regex compatible search field some time?

Lock down web access?

How do I lock down this page? I don't want any random internal user to be able to pull of these device configs. Really, I only need to access the configs through the LibreNMS page (which is working great by the way!)

image

Fix Pessimistic Sinatra Dependency

Unknowingly introduced in 4ae7a5e.

$ rake build
bundler missing
WARNING:  pessimistic dependency on sinatra (~> 1.4.6) may be overly strict
  if sinatra is semantically versioned, use:
    add_runtime_dependency 'sinatra', '~> 1.4', '>= 1.4.6'
WARNING:  pessimistic dependency on sinatra-contrib (~> 1.4.6) may be overly strict
  if sinatra-contrib is semantically versioned, use:
    add_runtime_dependency 'sinatra-contrib', '~> 1.4', '>= 1.4.6'
WARNING:  See http://guides.rubygems.org/specification-reference/ for help
  Successfully built RubyGem
  Name: oxidized-web
  Version: 0.5.2
  File: oxidized-web-0.5.2.gem

Web Layout

Is there something wrong with the current layout? This is the way the site appears in Firefox and Chrome.

https://i.imgur.com/38br7wi.png

Not sure if this is on purpose or just some CSS that needs cleaned up. The old web ui had margins on the left and right, etc.

[Migration] Wildcards in .cloginrc

Hi,

I'm using wildcards for authentication in .cloginrc, example:

add user *-client1 user1
add password *-client1 pass1

add user *-client2 user2
add password *-client2 pass2

It would be great if this could work with the migration tool.

Stats Page Broken

A bug in the stats page is causing a stack trace. It did not present until I did a fresh install. The fix should be easy. I've tested it locally against a fresh install and it seems to work fine. More testing and then I'll submit.

Redesign Migration Page

The UI for the migration page does not currently fit with the UI of the rest of the web interface. It should be updated to match the rest of the UI.

Add Sorting to Stats Page

The stats page called a non-existent sort function on the table. That is removed in f90f0ea. A functioning sort mechanism should be added.

Use Bootstrap Components and CSS

There are some elements that unnecessarily use custom CSS (most strikingly, the refresh button). This should be changed to use the Bootstrap CSS and components where possible.

Tables should be updated to use additional classes, such as table-condensed, table-hover, and table-striped.

Reload api does not work

oxidized (0.10.0, 0.4.1)
oxidized-script (0.1.1)
oxidized-web (0.6.1, 0.6.0)

When I run:
curl http://localhost:8888/reload
I get:
Errno::ENOENT: No such file or directory - /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.1/lib/oxidized/web/views/default.haml
This file indeed does not exist.

full error:
Errno::ENOENT: No such file or directory - /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.1/lib/oxidized/web/views/default.haml
/home/oxidized/.gem/ruby/gems/tilt-2.0.2/lib/tilt/template.rb:219:in initialize' /home/oxidized/.gem/ruby/gems/tilt-2.0.2/lib/tilt/template.rb:219:inopen'
/home/oxidized/.gem/ruby/gems/tilt-2.0.2/lib/tilt/template.rb:219:in read_template_file' /home/oxidized/.gem/ruby/gems/tilt-2.0.2/lib/tilt/template.rb:78:inblock in initialize'
/home/oxidized/.gem/ruby/gems/tilt-2.0.2/lib/tilt/template.rb:79:in call' /home/oxidized/.gem/ruby/gems/tilt-2.0.2/lib/tilt/template.rb:79:ininitialize'
/home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:861:in new' /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:861:inblock in compile_template'
/home/oxidized/.gem/ruby/gems/tilt-2.0.2/lib/tilt.rb:104:in block in fetch' /home/oxidized/.gem/ruby/gems/tilt-2.0.2/lib/tilt.rb:103:infetch'
/home/oxidized/.gem/ruby/gems/tilt-2.0.2/lib/tilt.rb:103:in fetch' /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:840:incompile_template'
/home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:821:in render' /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:676:inhaml'
/home/oxidized/.gem/ruby/gems/oxidized-web-0.6.1/lib/oxidized/web/webapp.rb:235:in out' /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.1/lib/oxidized/web/webapp.rb:73:inblock in class:WebApp'
/home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:1610:in call' /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:1610:inblock in compile!'
/home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:974:in []' /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:974:inblock (3 levels) in route!'
/home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:993:in route_eval' /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:974:inblock (2 levels) in route!'
/home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:1014:in block in process_route' /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:1012:incatch'
/home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:1012:in process_route' /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:972:inblock in route!'
/home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:971:in each' /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:971:inroute!'
/home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:1084:in block in dispatch!' /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:1066:inblock in invoke'
/home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:1066:in catch' /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:1066:ininvoke'
/home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:1081:in dispatch!' /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:906:inblock in call!'
/home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:1066:in block in invoke' /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:1066:incatch'
/home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:1066:in invoke' /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:906:incall!'
/home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:894:in call' /home/oxidized/.gem/ruby/gems/rack-protection-1.5.3/lib/rack/protection/xss_header.rb:18:incall'
/home/oxidized/.gem/ruby/gems/rack-protection-1.5.3/lib/rack/protection/path_traversal.rb:16:in call' /home/oxidized/.gem/ruby/gems/rack-protection-1.5.3/lib/rack/protection/json_csrf.rb:18:incall'
/home/oxidized/.gem/ruby/gems/rack-protection-1.5.3/lib/rack/protection/base.rb:49:in call' /home/oxidized/.gem/ruby/gems/rack-protection-1.5.3/lib/rack/protection/base.rb:49:incall'
/home/oxidized/.gem/ruby/gems/rack-protection-1.5.3/lib/rack/protection/frame_options.rb:31:in call /home/oxidized/.gem/ruby/gems/rack-1.6.4/lib/rack/nulllogger.rb:9:incall'
/home/oxidized/.gem/ruby/gems/rack-1.6.4/lib/rack/head.rb:13:in call' /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/show_exceptions.rb:21:incall'
/home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:181:in call' /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:2021:incall'
/home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:1486:in block in call' /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:1795:insynchronize'
/home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:1486:in call' /home/oxidized/.gem/ruby/gems/rack-1.6.4/lib/rack/urlmap.rb:66:inblock in call'
/home/oxidized/.gem/ruby/gems/rack-1.6.4/lib/rack/urlmap.rb:50:in each' /home/oxidized/.gem/ruby/gems/rack-1.6.4/lib/rack/urlmap.rb:50:incall'
/home/oxidized/.gem/ruby/gems/rack-1.6.4/lib/rack/builder.rb:153:in call' /home/oxidized/.gem/ruby/gems/puma-2.15.3/lib/puma/server.rb:541:inhandle_request'
/home/oxidized/.gem/ruby/gems/puma-2.15.3/lib/puma/server.rb:388:in process_client' /home/oxidized/.gem/ruby/gems/puma-2.15.3/lib/puma/server.rb:270:inblock in run'
/home/oxidized/.gem/ruby/gems/puma-2.15.3/lib/puma/thread_pool.rb:106:in call' /home/oxidized/.gem/ruby/gems/puma-2.15.3/lib/puma/thread_pool.rb:106:inblock in spawn_thread'

Other API calls such as getting a host's configuration works fine.

When querying a obviously non existent API call I get a non-existent answer
curl http://localhost:8888/foo

....

Sinatra doesn’t know this ditty.

....

When querying a non-existent, but similar API call then I get the same as with reload:

curl http://localhost:8888/reloadje
Errno::ENOENT: No such file or directory - /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.1/lib/oxidized/web/views/default.haml
....

timestamps from UTC > CDT

I've seen the other posts in regards to the timestamps how they should be converting to browser time, but I can't seem to get this to work.

I have the server set to UTC and can confirm my Browser should be set to CDT.

Ideally i'd like to see it all in CDT, but am not very familiar with JS, so looking through the code didn't yield any results for me.

Can anyone point me in the right direction? To get timestamps to update based on browser time, or change the system to do CDT altogether?

Improve Template Readability

The HAML templates do not make use of some HAML features that improve the readability of the templates. At a minimum, the templates should be updated to:

  • Use Ruby 1.9 hash symbol syntax
  • Use implicit div tags
  • Use shorthand class syntax
  • Use shorthand id syntax

How to use?

I must be blind, were is the installation, config and startup information?

Columns disappears after page reload

I select IP in the Hide/Show Columns select-list, the IP column shows up.
If I click the Refresh button in the UI or F5 in the browser the IP columns disappears again.

Would have been nice if this setting is saved somewhere permanently.

Ensure API is Consistent

API should not conditionally return attributes. It should return all attributes, even if they are empty.

This is a potentially breaking change if others are relying on attributes being absent.

grouping device

hai, i want to ask, how to make grouping device on oxidized for example based on location, all my device now belonging default group. please some advice.

Expose log file via web UI

This could be as simple as offering a page that loads the log file in full and displays it via www.

If the web UI is the preferred way to interact with oxi, it should be possible to look up any errors/warnings in there, as well.

no useable nodes

I can't for the life of me figure this out i'm getting returned the correct info from librenms, but oxidized refused to start running it just says no usable nodes... please help

curl -H 'X-Auth-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxc' http://127.0.0.1/api/v0/oxidized
Returns the following....

[
{
"hostname": "ofcswitch-1",
"os": "xos"
},
{
"hostname": "ofcswitch-1",
"os": "xos"
}
]

/root/.config/oxidized/config
username: usernameexample
password: passwordexample
debug: true
rest: 127.0.0.1:8888
input:
default: ssh
debug: false
ssh:
secure: false
output:
default: file
file:
directory: /root/.config/oxidized/configs
source:
default: http
debug: true
http:
url: http://127.0.0.1/api/v0/oxidized
scheme: http
debug: true
delimiter: !ruby/regexp /:/
map:
name: hostname
model: os
headers:
X-Auth-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxc

i even tried adding model_map: xos:xos but didn't work either still getting same error every time i try to start it

[root@librenms oxidized]# oxidized
source returns no usable nodes
/usr/local/share/gems/gems/oxidized-0.9.0/lib/oxidized/core.rb:23:in initialize': source returns no usable nodes (Oxidized::Core::NoNodesFound) from /usr/local/share/gems/gems/oxidized-0.9.0/lib/oxidized/core.rb:12:innew'
from /usr/local/share/gems/gems/oxidized-0.9.0/lib/oxidized/core.rb:12:in new' from /usr/local/share/gems/gems/oxidized-0.9.0/lib/oxidized/cli.rb:9:inrun'
from /usr/local/share/gems/gems/oxidized-0.9.0/bin/oxidized:9:in <top (required)>' from /usr/local/bin/oxidized:23:inload'
from /usr/local/bin/oxidized:23:in `

'

Prefer Single Quotes

Related to #68.

Prefer single quotes over double quotes when interpolation is not necessary.

unable to fetch node when using groups

/node/fetch/groupName/nodeName returns "node not found"
/node/fetch/nodeName also returns "node not found"

After removing group from map, node's config is returned from /node/fetch/nodeName

Poor Mobile Experience

Although Bootstrap is used, the mobile experience is poor. The way the UI is written, it does not detect mobile devices and adjust accordingly.

Crash after installing/enabling oxidized-web

2016-01-07 10:52:36 - SyntaxError - /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:9: syntax error, unexpected ':', expecting =>
'data-toggle': 'collapse',
^
/home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:9: syntax error, unexpected ',', expecting tSTRING_DEND
/home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:10: syntax error, unexpected ':', expecting tSTRING_DEND
'data-target': '#ox-nav',
^
/home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:10: syntax error, unexpected ',', expecting tSTRING_DEND
/home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:11: syntax error, unexpected ':', expecting tSTRING_DEND
'aria-expanded': 'false')}>\n <spa...
^
/home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:11: syntax error, unexpected ')', expecting tSTRING_DEND
'aria-expanded': 'false')}>\n <span class='...
^
/home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:11: syntax error, unexpected keyword_class, expecting keyword_do or '{' or '('
...se')}>\n Toggle Navigation<...
... ^
/home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:11: syntax error, unexpected tCONSTANT, expecting keyword_do or '{' or '('
...ass='sr-only'>Toggle Navigation
\n <span cl...
... ^
/home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:11: unknown regexp options - pa
/home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:11: syntax error, unexpected $undefined
...\n <span class='ico...
... ^
/home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:11: syntax error, unexpected keyword_class, expecting keyword_do or '{' or '('
.../span>\n \n ...
... ^
/home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:11: syntax error, unexpected '<'
... \n <span cla...
... ^
/home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:11: unknown regexp options - pa
/home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:11: syntax error, unexpected $undefined
...\n \n ...
... ^
/home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:17: unknown regexp option - g
/home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:17: syntax error, unexpected $undefined
...ng_40px.png'))}>Oxidized\n \n </di...
... ^
/home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:17: unknown regexp options - dv
/home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:17: syntax error, unexpected $undefined
... \n \n <div class='collapse...
... ^
/home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:17: syntax error, unexpected keyword_class, expecting keyword_do or '{' or '('
... \n <div class='collapse navbar-collapse' i...
... ^
/home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:17: syntax error, unexpected tIDENTIFIER, expecting tSTRING_DEND
...s='collapse navbar-collapse' id='ox-nav'>\n <ul cla...
... ^
/home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:17: syntax error, unexpected $undefined
... navbar-collapse' id='ox-nav'>\n <ul class='nav nav...
... ^
/home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:17: syntax error, unexpected keyword_class, expecting keyword_do or '{' or '('
...='ox-nav'>\n

    \n ...
    ... ^
    /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:17: syntax error, unexpected $undefined
    ...
      \n <li#{
      ... ^
      /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:21: syntax error, unexpected tSTRING_DEND, expecting '}'
      _hamlout.attributes({}, nil, class: request.path_in...
      ^
      /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:21: Can't assign to nil
      _hamlout.attributes({}, nil, class: request.path_info == ...
      ^
      /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:21: syntax error, unexpected ')', expecting tSTRING_DEND
      ...'/nodes/stats' ? 'active' : '')}>\n <a#{_hamlou...
      ... ^
      /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:22: syntax error, unexpected '}', expecting tSTRING_DEND
      ...href: url_for('/nodes/stats'))}>Stats\n ...
      ... ^
      /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:22: unknown regexp option - l
      /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:22: syntax error, unexpected $undefined
      ...}>Stats\n \n <li#{_hamlout.ad...
      ... ^
      /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:24: syntax error, unexpected '}', expecting tSTRING_DEND
      ... '/migration' ? 'active' : '')}>\n <a#{_hamlout...
      ... ^
      /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:25: syntax error, unexpected '}', expecting tSTRING_DEND
      ..., href: url_for('/migration'))}>Migration\n <...
      ... ^
      /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:25: unknown regexp option - l
      /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:25: syntax error, unexpected $undefined
      ...gration\n \n
    \n <...
    ... ^
    /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:34: unknown regexp options - pa
    /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:34: syntax error, unexpected $undefined
    ...icon glyphicon-search'>\n \n ...
    ... ^
    /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:34: unknown regexp options - dv
    /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:34: syntax error, unexpected $undefined
    ... \n \n \n <...
    ... ^
    /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:34: unknown regexp options - dv
    /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:34: syntax error, unexpected $undefined
    ... \n \n \n \n ...
    ... ^
    /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:34: unknown regexp options - av
    /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:34: syntax error, unexpected $undefined
    ...div>\n \n \n <div class='container-fl...
    ... ^
    /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:34: syntax error, unexpected keyword_class, expecting keyword_do or '{' or '('
    ...iv>\n \n
    \n #{...
    ... ^
    /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:34: syntax error, unexpected $undefined
    ...
    \n #{_hamlout.adjust_tabs...
    ... ^
    /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:39: syntax error, unexpected '}', expecting tSTRING_DEND
    ));}\n
    \n <script#{_h...
    ^
    /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:39: unknown regexp options - crpt
    /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:39: syntax error, unexpected $undefined
    ...bootstrap.min.js'))}></script>\n <script#{
    ... ^
    /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:40: syntax error, unexpected '}', expecting tSTRING_DEND
    ...ts/jquery.dataTables.min.js'))}></script>\n <script#{
    ... ^
    /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:41: unknown regexp options - crpt
    /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:41: syntax error, unexpected $undefined
    ...les.bootstrap.js'))}></script>\n <script#{
    ... ^
    /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:42: syntax error, unexpected '}', expecting tSTRING_DEND
    ...cripts/dataTables.colVis.js'))}></script>\n <script#{
    ... ^
    /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:43: unknown regexp options - crpt
    /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:43: syntax error, unexpected $undefined
    ...ipts/oxidized.js'))}></script>\n \n\n", -2, f...
    ... ^
    /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:43: unknown regexp options - htl
    /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:43: syntax error, unexpected $undefined
    ...></script>\n \n\n", -2, false);
    ... ^
    /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:43: unterminated string meets end of file
    /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/views/layout.haml:43: syntax error, unexpected end-of-input, expecting tSTRING_DEND
    end;end;end;end
    ^:
    /home/oxidized/.gem/ruby/gems/tilt-1.4.1/lib/tilt/template.rb:264:in class_eval' /home/oxidized/.gem/ruby/gems/tilt-1.4.1/lib/tilt/template.rb:264:incompile_template_method'
    /home/oxidized/.gem/ruby/gems/tilt-1.4.1/lib/tilt/template.rb:240:in compiled_method' /home/oxidized/.gem/ruby/gems/tilt-1.4.1/lib/tilt/template.rb:169:inevaluate'
    /home/oxidized/.gem/ruby/gems/tilt-1.4.1/lib/tilt/haml.rb:24:in evaluate' /home/oxidized/.gem/ruby/gems/tilt-1.4.1/lib/tilt/template.rb:103:inrender'
    /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:822:in render' /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:831:inblock in render'
    /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:831:in catch' /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:831:inrender'
    /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:676:in haml' /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/webapp.rb:235:inout'
    /home/oxidized/.gem/ruby/gems/oxidized-web-0.6.0/lib/oxidized/web/webapp.rb:45:in block in <class:WebApp>' /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:1610:incall'
    /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:1610:in block in compile!' /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:974:in[]'
    /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:974:in block (3 levels) in route!' /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:993:inroute_eval'
    /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:974:in block (2 levels) in route!' /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:1014:inblock in process_route'
    /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:1012:in catch' /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:1012:inprocess_route'
    /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:972:in block in route!' /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:971:ineach'
    /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:971:in route!' /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:1084:inblock in dispatch!'
    /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:1066:in block in invoke' /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:1066:incatch'
    /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:1066:in invoke' /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:1081:indispatch!'
    /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:906:in block in call!' /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:1066:inblock in invoke'
    /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:1066:in catch' /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:1066:ininvoke'
    /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:906:in call!' /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:894:incall'
    /home/oxidized/.gem/ruby/gems/rack-protection-1.5.3/lib/rack/protection/xss_header.rb:18:in call' /home/oxidized/.gem/ruby/gems/rack-protection-1.5.3/lib/rack/protection/path_traversal.rb:16:incall'
    /home/oxidized/.gem/ruby/gems/rack-protection-1.5.3/lib/rack/protection/json_csrf.rb:18:in call' /home/oxidized/.gem/ruby/gems/rack-protection-1.5.3/lib/rack/protection/base.rb:49:incall'
    /home/oxidized/.gem/ruby/gems/rack-protection-1.5.3/lib/rack/protection/base.rb:49:in call' /home/oxidized/.gem/ruby/gems/rack-protection-1.5.3/lib/rack/protection/frame_options.rb:31:incall'
    /home/oxidized/.gem/ruby/gems/rack-1.6.0/lib/rack/nulllogger.rb:9:in call' /home/oxidized/.gem/ruby/gems/rack-1.6.0/lib/rack/head.rb:13:incall'
    /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/show_exceptions.rb:21:in call' /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:181:incall'
    /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:2021:in call' /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:1486:inblock in call'
    /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:1795:in synchronize' /home/oxidized/.gem/ruby/gems/sinatra-1.4.6/lib/sinatra/base.rb:1486:incall'
    /home/oxidized/.gem/ruby/gems/rack-1.6.0/lib/rack/urlmap.rb:66:in block in call' /home/oxidized/.gem/ruby/gems/rack-1.6.0/lib/rack/urlmap.rb:50:ineach'
    /home/oxidized/.gem/ruby/gems/rack-1.6.0/lib/rack/urlmap.rb:50:in call' /home/oxidized/.gem/ruby/gems/rack-1.6.0/lib/rack/builder.rb:153:incall'
    /home/oxidized/.gem/ruby/gems/puma-2.11.1/lib/puma/server.rb:507:in handle_request' /home/oxidized/.gem/ruby/gems/puma-2.11.1/lib/puma/server.rb:375:inprocess_client'
    /home/oxidized/.gem/ruby/gems/puma-2.11.1/lib/puma/server.rb:262:in block in run' /home/oxidized/.gem/ruby/gems/puma-2.11.1/lib/puma/thread_pool.rb:104:incall'
    /home/oxidized/.gem/ruby/gems/puma-2.11.1/lib/puma/thread_pool.rb:104:in `block in spawn_thread'

ArgumentError at /node/version

I'm using groups and I get this error when clicking on versions.

ArgumentError at /node/version
wrong number of arguments (0 for 1+)
file: versions.haml
location: count
line: 41

Missing Stats Link

A link to the stats page is missing. It can be manually accessed at the /nodes/stats URI. Additionally, although this page exists, it doesn't appear to follow the newer UI style of other pages.

Provide More Stats

Currently, the stats page (/nodes/stats) only provides the last failure, and only for nodes that have failed.

Looking at the JSON response, it seems we could also provide the following stats:

  • Total number of failures
  • Percentage of failures
  • Average time to run
  • Last successful run

Query Supported Models

Is there a way to query for a list of available models? I'm working on a web-based way to manage the node list, and it would be great if one could validate the model before adding it to the database.

Thanks!

Escape HTML on config views

Some configs have to remove things like the passwords. The problem is that these aren't escaped, so sometimes it breaks the view.

Maybe it's a good idea to escape the config?

User Interface

I was playing with the frontend code a bit and pulled in bootstrapcss. Thats what I came up with, I wonder what you guys think about it. It features a realtime search as well.

image

Accessing the web interface

Please forgive my ignorance here.

I've got this on the same box as LibreNMS, and oxidized itself is working fine.

ruby 10519 root 9u IPv4 59343430 0t0 TCP 127.0.0.1:8888 (LISTEN)

What is the default directory or port for oxidized-web?

Streamline UI

Sometimes I want to search the configs from places other than the nodes page. Also, migrating RANCID configs seems more suited to being in a navbar.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.