Giter Site home page Giter Site logo

radare2-webui's Introduction

radare2-webui

ci CodeQL Code Climate

This repository contains the different WebUIs for radare2:

  • enyo enyo (mobile)
  • m material (responsive)
  • p panels (desktop)
  • t tiles (legacy)

Install

First, you should install radare2, then r2pm will handle this for you:

$ r2pm -i www-enyo
$ r2pm -i www-m
$ r2pm -i www-p
$ r2pm -i www-t

This process will install the proper UI by downloading the latest version available.

Troubleshooting

The Web UIs (/m specifically) are using some tools that require an updated version of node, so if you encounter the following error, you should consider an update.

~/radare2-webui/www/m/node_modules/gulp-google-webfonts/index.js:209
    request.name = path.posix.join(options.fontsDir, request.name);
TypeError: Cannot call method 'join' of undefined

Updating node is easy, I recommand you to follow this article:

sudo npm cache clean -f
sudo npm install -g n
sudo n stable

Use it

You can run one of the UI by typing the following command with: enyo, m, p and t.

$ r2 -q -e http.ui=<UI> -c=H /bin/ls

Uninstall

To uninstall an UI, you can use this command.

$ r2pm -u <package>

Soon...

You will soon be able to chose between a global installation or an installation from your home directory with -g option.

Also, we will propose you to install the last released version from a tarball with a specific option.

Contribute

If you want to contribute, you should read this to know how to set your environment.

radare2-webui's People

Contributors

dependabot[bot] avatar dorpvom avatar eagleoflqj avatar frenchyeti avatar gcolajan avatar islamoc avatar itayc0hen avatar jpenalbae avatar nischay-pro avatar nonchip avatar novia713 avatar pwntester avatar radare avatar xvilka avatar z-y00 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

Watchers

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

radare2-webui's Issues

Close left menu when clicking on an entry

when the window is small, tapping on an entry from the left menu must close the menu to show the contents instead of having the user to tap in the greyed out area

Retire /t and /enyo

Since they're not used anymore - may be move them to the 'extras' instead of this?

Better Visualization

There are several ways to improve the experience when inspecting binaries or data structures. D3 have several goodies that can make it quite handy to navigate:

for example:

PD: http://getspringy.com/

Make the graph view more accessible

  • Allow to toggle between disasm and graph like in visual mode or /p (space?))
  • Center bbgraph on current node
  • Add callgraph for xrefs and such
  • Add full program callgraph view

Better disassembly

The disassembly view should be easily configurable, without entering the settings panel.

  • Change color theme
  • Show/hide bytes, lines, references, asmemu/emustr
  • All numbers should be clickable (already done?)
  • Support multiple columns to walk disasm refs horizontally
  • ...

Button for saving project doesn't work in Webui & OS Windows

Button doesn't save information (name of functions, comments) in files of *.d project folder and user lost data when radare2 was crashed on /p

When use WEB console or Button (Save Project) then file in C:\Users<USER>.config\radare2\projects\NAME will be empty:
----- CUT-----
# r2 rdb project file
# flags
# eval
# sections
# meta
----END CUT-----

If you will use normal console (not WEB) then save works fine.

From radareorg/radare2#3981

/m graph configurable

  • toggle comments
  • show esil
  • change color theme
  • change font (better for ascii art?)
  • center scroll on first block

enyo and p are too big

$ du -hs *
 20M    enyo
856K    m
 13M    p
 36K    t

Compare with r2's shlr/www ones:

$ du -hs m p t enyo
856K    m
1.3M    p
4.0K    t
3.3M    enyo

Graph-related issues

  • Draggable background, like in IDA. It would be nice to be able to move the graph around by dragging the background.
  • z-index issues with minimap. The graph can be over the minimap.
  • Real-time minimap dragging. Currently, the graph moves after the minimap has been dragged.

@radare : Last point was disabled for performance . It was terrible slow

From radareorg/radare2#2106

Shrink size of /m

  • Uglify/tinify all .js
  • Same for .css
  • Same for .html
  • Remove unnecessary files. See below
prop:fonts pancake$ du -hs *
136K    MaterialIcons-Regular.eot
 28K    MaterialIcons-Regular.ijmap
120K    MaterialIcons-Regular.ttf
 56K    MaterialIcons-Regular.woff
 44K    MaterialIcons-Regular.woff2
4.0K    README.md
 20K    Roboto-italic-400.woff
 20K    Roboto-italic-700.woff
 20K    Roboto-normal-100.woff
 20K    Roboto-normal-300.woff
 20K    Roboto-normal-400.woff
 20K    Roboto-normal-500.woff
 20K    Roboto-normal-700.woff
 20K    Roboto-normal-900.woff

WebUI can't do "real time" collaboration

Currently the webui can be used for collaborative reversing. However when one user adds a comment, renames, etc. the other users will not receive the update until the page is refreshed or something on the page is modified.

Ideally the core would tell connected clients to reload or send some sort of update.

Fron @radare : The T command is suposed to be used to send notification messages to all clients to make them refresh a panel or so, none of the webuis use it yet

From radareorg/radare2#1981

/m Enhanced Settings panel

  • Use switch instead of checkboxes when it makes sense
  • Styl-ish select/option comboboxes
  • Add more options or settings

switch example

<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="switch-1">
  <input type="checkbox" id="switch-1" class="mdl-switch__input" checked>
  <span class="mdl-switch__label"></span>
</label>
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="switch-2">
  <input type="checkbox" id="switch-2" class="mdl-switch__input">
  <span class="mdl-switch__label"></span>
</label>

Better hex editor

Some issues here

  •  Support inline editing in ascii and hex code
  • Support infinite scrolling
  • Select ranges and put colors in them
  • no flags are displayed (maybe you need a command to show flags in a range)
  • dblclick on offset selects the whole line
  • infinite scrolling seems fine to me, didnt noticed glitches
  • no edition is possible yet
  • no selection is supported yet
  • word/endian selectors look ugly (applies to preferences panel too)

shlr/www is not maintainable

Current graphs doesnt work in Chrome because this is the only browser that have deprecated a specific javascript function to manipulate SVG required by joint.js. Trying to upgrade joint.js results in a complete hell of javascript dependencies that break other stuff.

This is also problematic for the distro packagers which have to be careful when including random .js files that have non-lgpl compatible licenses like the joint.js

  • Keep only one single, self-written without dependencies, UI in r2 (i vote for the material one)
  • Use bower/browserify/... to maintain js deps like jquery, joint
  • Use grunt/bypp instead of makefiles to generate the uglified files
  • Update all enyo/joint/jquery/jquery-ui/material/.. dependencies
  • Make them available via r2pm

From radareorg/radare2#4181

Make (fcn) clickable in disasm /m panel

When clicking in (fcn) the user will be prompted to rename the function.

optional if we can handle right click or long press it can be used to add more options

Click on function doesn't work

Try to open file r2 -q -e http.ui=p -c=H /bin/ls but click on function in list move to wrong places

  • main -> 0x402a00 (normal address)
  • Jump to 0x402900
  • entry0 -> 0x4049a0 (normal address)
  • Jump to 0x4048a0

OS: Linux 4.4.13-1-MANJARO #1 SMP PREEMPT Wed Jun 8 09:21:59 UTC 2016 x86_64 GNU/Linux

Add button to reopen

  • reopen in read-write (oo+)
  • relaunch process (ood)

suggested when trying to write and op fails

local variable support

make the var keyword be clickable in the disasm panel.

when clicked the user will be prompted to rename or remove the local variable definition.

│           ; var int local_660h @ rbp-0x660
│           ; var int local_658h @ rbp-0x658
│           ; var int local_654h @ rbp-0x654
│           ; var int local_650h @ rbp-0x650
│           ; var int local_64ch @ rbp-0x64c
│           ; var int local_648h @ rbp-0x648
│           ; var int local_640h @ rbp-0x640
│           ; var int local_440h @ rbp-0x440
│           ; var int local_34h @ rbp-0x34
│           ; var int local_30h @ rbp-0x30
│           ; var int local_2eh @ rbp-0x2e
│           ; var int local_0h @ rbp-0x0
│           0x100001174      push rbp
│           0x100001175      mov rbp, rsp
│           0x100001178      push r15
│           0x10000117a      push r14

Add statusbar line

The idea is to have a thin line at the bottom to show progress bars or status messages.

Clicking in the statusbar must open a floating panel in the bottom with tabs:

  • terminal console to read all those messages
  • r2 console
  • project notes
  • calculator
  • assembler/disassembler
  • checksummer

Fix colors in /m

There are several problems in /m with the colors right now. the color scheme is probably not the best one which brings some issues:

  • blue lines in graph are not visible
  • some panels must be in black and others in white
  • there's no easy way for the user to change the r2 color palete (and save it for later) from /m
  • the pink buttons contrast too much with the rest of turqoise and grey colors
  • the settings panel should contain options to configure all this stuff

Add codeclimate support

  • Add the code climate via Settings => Add services => Code climate
    Only @radare has right to do that.
  • Exclude libs and unwanted js
  • Add badges to the README.md
  • Tweaking more the result to add stuff like csslint
  • Review other tools for code check like https://www.bithound.io and related

make build failed TypeError: Cannot call method 'join' of undefined

here is the full log

make build
make -C www build
make[1]: Entering directory '/home/oddcoder/radare2-webui/www'
npm install
npm WARN package.json [email protected] No README data
/home/oddcoder/radare2-webui/www/node_modules/.bin/gulp
[07:32:30] Using gulpfile ~/radare2-webui/www/gulpfile.js
[07:32:30] Starting 'default'...
[07:32:30] Using cwd: /home/oddcoder/radare2-webui/www
[07:32:30] Using bower dir: ../dist/vendors/
[07:32:32] bower cached https://github.com/jquery/jquery-dist.git#2.2.3
[07:32:32] bower validate 2.2.3 against https://github.com/jquery/jquery-dist.git#^2.2.1
[07:32:34] bower install jquery#2.2.3
[07:32:34] Finished 'default' after 4.53 s
make[1]: Leaving directory '/home/oddcoder/radare2-webui/www'
make -C www/enyo build
make[1]: Entering directory '/home/oddcoder/radare2-webui/www/enyo'
npm install
npm http GET https://registry.npmjs.org/bower
npm http GET https://registry.npmjs.org/gulp
npm http GET https://registry.npmjs.org/gulp-clean-css
npm http GET https://registry.npmjs.org/gulp-concat
npm http GET https://registry.npmjs.org/gulp-bower/0.0.13
npm http GET https://registry.npmjs.org/gulp-uglify
npm http GET https://registry.npmjs.org/gulp-replace
npm http 304 https://registry.npmjs.org/bower
npm http 304 https://registry.npmjs.org/gulp
npm http 200 https://registry.npmjs.org/gulp-clean-css
npm http 304 https://registry.npmjs.org/gulp-concat
npm http 304 https://registry.npmjs.org/gulp-uglify
npm http 304 https://registry.npmjs.org/gulp-replace
npm http 304 https://registry.npmjs.org/gulp-bower/0.0.13
npm http GET https://registry.npmjs.org/concat-with-sourcemaps
npm http GET https://registry.npmjs.org/gulp-util
npm http GET https://registry.npmjs.org/gulp-util
npm http GET https://registry.npmjs.org/clean-css
npm http GET https://registry.npmjs.org/readable-stream
npm http GET https://registry.npmjs.org/object-assign
npm http GET https://registry.npmjs.org/vinyl-sourcemaps-apply
npm http GET https://registry.npmjs.org/vinyl-bufferstream
npm http GET https://registry.npmjs.org/through2
npm http GET https://registry.npmjs.org/istextorbinary/1.0.2
npm http GET https://registry.npmjs.org/readable-stream
npm http GET https://registry.npmjs.org/deap
npm http GET https://registry.npmjs.org/gulp-util
npm http GET https://registry.npmjs.org/isobject
npm http GET https://registry.npmjs.org/through2
npm http GET https://registry.npmjs.org/replacestream
npm http GET https://registry.npmjs.org/vinyl-sourcemaps-apply
npm http GET https://registry.npmjs.org/uglify-save-license
npm http GET https://registry.npmjs.org/fancy-log
npm http GET https://registry.npmjs.org/uglify-js/2.6.2
npm http GET https://registry.npmjs.org/archy
npm http GET https://registry.npmjs.org/deprecated
npm http GET https://registry.npmjs.org/interpret
npm http GET https://registry.npmjs.org/chalk
npm http GET https://registry.npmjs.org/orchestrator
npm http GET https://registry.npmjs.org/pretty-hrtime
npm http GET https://registry.npmjs.org/liftoff
npm http GET https://registry.npmjs.org/vinyl-fs
npm http GET https://registry.npmjs.org/v8flags
npm http GET https://registry.npmjs.org/minimist
npm http GET https://registry.npmjs.org/semver
npm http GET https://registry.npmjs.org/tildify
npm http GET https://registry.npmjs.org/through2/0.6.2
npm http GET https://registry.npmjs.org/walk/2.3.3
npm http GET https://registry.npmjs.org/inquirer
npm http 304 https://registry.npmjs.org/concat-with-sourcemaps
npm http 304 https://registry.npmjs.org/gulp-util
npm http 304 https://registry.npmjs.org/gulp-util
npm http 304 https://registry.npmjs.org/object-assign
npm http 304 https://registry.npmjs.org/vinyl-sourcemaps-apply
npm http 304 https://registry.npmjs.org/readable-stream
npm http 200 https://registry.npmjs.org/clean-css
npm http 200 https://registry.npmjs.org/through2
npm http 304 https://registry.npmjs.org/readable-stream
npm http 304 https://registry.npmjs.org/vinyl-bufferstream
npm http 304 https://registry.npmjs.org/deap
npm http 304 https://registry.npmjs.org/istextorbinary/1.0.2
npm http 304 https://registry.npmjs.org/gulp-util
npm http 304 https://registry.npmjs.org/isobject
npm http 200 https://registry.npmjs.org/through2
npm http 304 https://registry.npmjs.org/replacestream
npm http 304 https://registry.npmjs.org/vinyl-sourcemaps-apply
npm http 304 https://registry.npmjs.org/uglify-save-license
npm http 200 https://registry.npmjs.org/fancy-log
npm http 304 https://registry.npmjs.org/archy
npm http 304 https://registry.npmjs.org/deprecated
npm http GET https://registry.npmjs.org/source-map
npm http 304 https://registry.npmjs.org/interpret
npm http 304 https://registry.npmjs.org/uglify-js/2.6.2
npm http GET https://registry.npmjs.org/xtend
npm http 304 https://registry.npmjs.org/orchestrator
npm http GET https://registry.npmjs.org/bufferstreams/1.0.1
npm http GET https://registry.npmjs.org/multipipe
npm http GET https://registry.npmjs.org/replace-ext/0.0.1
npm http GET https://registry.npmjs.org/vinyl
npm http GET https://registry.npmjs.org/array-differ
npm http GET https://registry.npmjs.org/beeper
npm http 304 https://registry.npmjs.org/pretty-hrtime
npm http 304 https://registry.npmjs.org/liftoff
npm http 304 https://registry.npmjs.org/vinyl-fs
npm http 200 https://registry.npmjs.org/chalk
npm http GET https://registry.npmjs.org/dateformat
npm http GET https://registry.npmjs.org/gulplog
npm http GET https://registry.npmjs.org/has-gulplog
npm http GET https://registry.npmjs.org/lodash._reevaluate
npm http GET https://registry.npmjs.org/lodash._reescape
npm http GET https://registry.npmjs.org/array-uniq
npm http GET https://registry.npmjs.org/lodash._reinterpolate
npm http GET https://registry.npmjs.org/lodash.template
npm http GET https://registry.npmjs.org/escape-string-regexp
npm http GET https://registry.npmjs.org/textextensions
npm http GET https://registry.npmjs.org/binaryextensions
npm http 200 https://registry.npmjs.org/v8flags
npm http 304 https://registry.npmjs.org/minimist
npm http 304 https://registry.npmjs.org/semver
npm http 304 https://registry.npmjs.org/tildify
npm http GET https://registry.npmjs.org/string_decoder
npm http GET https://registry.npmjs.org/inherits
npm http GET https://registry.npmjs.org/process-nextick-args
npm http GET https://registry.npmjs.org/isarray
npm http GET https://registry.npmjs.org/core-util-is
npm http GET https://registry.npmjs.org/util-deprecate
npm http 304 https://registry.npmjs.org/inquirer
npm http 304 https://registry.npmjs.org/source-map
npm http 304 https://registry.npmjs.org/xtend
npm http 304 https://registry.npmjs.org/walk/2.3.3
npm http GET https://registry.npmjs.org/buffer-shims
npm http 304 https://registry.npmjs.org/replace-ext/0.0.1
npm http 304 https://registry.npmjs.org/vinyl
npm http GET https://registry.npmjs.org/time-stamp
npm http GET https://registry.npmjs.org/os-homedir
npm http 304 https://registry.npmjs.org/array-differ
npm http GET https://registry.npmjs.org/escape-string-regexp
npm http 304 https://registry.npmjs.org/beeper
npm http 304 https://registry.npmjs.org/multipipe
npm http GET https://registry.npmjs.org/isarray/1.0.0
npm http GET https://registry.npmjs.org/has-ansi
npm http GET https://registry.npmjs.org/supports-color
npm http GET https://registry.npmjs.org/ansi-styles
npm http GET https://registry.npmjs.org/strip-ansi
npm http 304 https://registry.npmjs.org/dateformat
npm http 304 https://registry.npmjs.org/gulplog
npm http GET https://registry.npmjs.org/user-home
npm http 200 https://registry.npmjs.org/has-gulplog
npm http GET https://registry.npmjs.org/sequencify
npm http GET https://registry.npmjs.org/end-of-stream
npm http GET https://registry.npmjs.org/stream-consume
npm http 200 https://registry.npmjs.org/lodash._reevaluate
npm http 304 https://registry.npmjs.org/lodash._reescape
npm http GET https://registry.npmjs.org/defaults
npm http GET https://registry.npmjs.org/glob-watcher
npm http GET https://registry.npmjs.org/mkdirp
npm http 304 https://registry.npmjs.org/array-uniq
npm http GET https://registry.npmjs.org/glob-stream
npm http 304 https://registry.npmjs.org/through2/0.6.2
npm http 304 https://registry.npmjs.org/lodash._reinterpolate
npm http 304 https://registry.npmjs.org/lodash.template
npm http 304 https://registry.npmjs.org/escape-string-regexp
npm http GET https://registry.npmjs.org/strip-bom
npm http GET https://registry.npmjs.org/graceful-fs
npm http GET https://registry.npmjs.org/findup-sync
npm http GET https://registry.npmjs.org/flagged-respawn
npm http 200 https://registry.npmjs.org/textextensions
npm http 304 https://registry.npmjs.org/binaryextensions
npm http 304 https://registry.npmjs.org/bufferstreams/1.0.1
npm http 304 https://registry.npmjs.org/string_decoder
npm http GET https://registry.npmjs.org/resolve
npm http GET https://registry.npmjs.org/rechoir
npm http GET https://registry.npmjs.org/extend
npm http 304 https://registry.npmjs.org/process-nextick-args
npm http 304 https://registry.npmjs.org/isarray
npm http 200 https://registry.npmjs.org/inherits
npm http 304 https://registry.npmjs.org/core-util-is
npm http 304 https://registry.npmjs.org/util-deprecate
npm http 304 https://registry.npmjs.org/buffer-shims
npm http 304 https://registry.npmjs.org/time-stamp
npm http 304 https://registry.npmjs.org/os-homedir
npm http 304 https://registry.npmjs.org/escape-string-regexp
npm http 304 https://registry.npmjs.org/has-ansi
npm http GET https://registry.npmjs.org/isarray/0.0.1
npm http GET https://registry.npmjs.org/glogg
npm http GET https://registry.npmjs.org/sparkles
npm http 304 https://registry.npmjs.org/ansi-styles
npm http 200 https://registry.npmjs.org/supports-color
npm http 304 https://registry.npmjs.org/strip-ansi
npm http 304 https://registry.npmjs.org/user-home
npm http GET https://registry.npmjs.org/lodash._basetostring
npm http GET https://registry.npmjs.org/lodash._basevalues
npm http GET https://registry.npmjs.org/lodash.escape
npm http GET https://registry.npmjs.org/lodash._basecopy
npm http GET https://registry.npmjs.org/lodash.templatesettings
npm http 304 https://registry.npmjs.org/end-of-stream
npm http GET https://registry.npmjs.org/lodash.keys
npm http GET https://registry.npmjs.org/lodash._isiterateecall
npm http GET https://registry.npmjs.org/lodash.restparam
npm http 200 https://registry.npmjs.org/sequencify
npm http 200 https://registry.npmjs.org/stream-consume
npm http 304 https://registry.npmjs.org/defaults
npm http GET https://registry.npmjs.org/duplexer2/0.0.2
npm http GET https://registry.npmjs.org/clone-stats
npm http GET https://registry.npmjs.org/clone
npm http 304 https://registry.npmjs.org/glob-watcher
npm http 304 https://registry.npmjs.org/glob-stream
npm http 200 https://registry.npmjs.org/mkdirp
npm http 304 https://registry.npmjs.org/strip-bom
npm http 304 https://registry.npmjs.org/graceful-fs
npm http GET https://registry.npmjs.org/meow
npm http GET https://registry.npmjs.org/get-stdin
npm WARN deprecated [email protected]: graceful-fs v3.0.0 and before will fail on node releases >= v7.0. Please update to graceful-fs@^4.0.0 as soon as possible. Use 'npm ls graceful-fs' to find it in the tree.
npm http 304 https://registry.npmjs.org/findup-sync
npm http 304 https://registry.npmjs.org/flagged-respawn
npm http GET https://registry.npmjs.org/ansi-regex
npm http 304 https://registry.npmjs.org/isarray/1.0.0
npm http 200 https://registry.npmjs.org/resolve
npm http 304 https://registry.npmjs.org/extend
npm http 200 https://registry.npmjs.org/rechoir
npm http 304 https://registry.npmjs.org/isarray/0.0.1
npm http GET https://registry.npmjs.org/once
npm http 304 https://registry.npmjs.org/sparkles
npm http 304 https://registry.npmjs.org/lodash._basetostring
npm http 200 https://registry.npmjs.org/lodash._basevalues
npm http GET https://registry.npmjs.org/ordered-read-streams
npm http GET https://registry.npmjs.org/first-chunk-stream
npm http GET https://registry.npmjs.org/unique-stream
npm http GET https://registry.npmjs.org/glob2base
npm http 200 https://registry.npmjs.org/lodash.escape
npm http 304 https://registry.npmjs.org/lodash.templatesettings
npm http GET https://registry.npmjs.org/glob
npm http GET https://registry.npmjs.org/minimatch
npm http 200 https://registry.npmjs.org/lodash._basecopy
npm http GET https://registry.npmjs.org/is-utf8
npm http 304 https://registry.npmjs.org/lodash.keys
npm http 304 https://registry.npmjs.org/lodash._isiterateecall
npm http 304 https://registry.npmjs.org/lodash.restparam
npm http GET https://registry.npmjs.org/clone
npm http 304 https://registry.npmjs.org/clone-stats
npm http 304 https://registry.npmjs.org/clone
npm http 304 https://registry.npmjs.org/meow
npm http 304 https://registry.npmjs.org/get-stdin
npm http 304 https://registry.npmjs.org/ansi-regex
npm http 304 https://registry.npmjs.org/glogg
npm http GET https://registry.npmjs.org/gaze
npm http 304 https://registry.npmjs.org/duplexer2/0.0.2
npm http 304 https://registry.npmjs.org/once
npm http 304 https://registry.npmjs.org/ordered-read-streams
npm http 304 https://registry.npmjs.org/first-chunk-stream
npm http 304 https://registry.npmjs.org/unique-stream
npm http 304 https://registry.npmjs.org/glob2base
npm http GET https://registry.npmjs.org/cli-cursor
npm http GET https://registry.npmjs.org/cli-width
npm http GET https://registry.npmjs.org/ansi-escapes
npm http GET https://registry.npmjs.org/readline2
npm http GET https://registry.npmjs.org/rx-lite
npm http GET https://registry.npmjs.org/figures
npm http GET https://registry.npmjs.org/string-width
npm http GET https://registry.npmjs.org/run-async
npm http 304 https://registry.npmjs.org/glob
npm http GET https://registry.npmjs.org/lodash
npm http 304 https://registry.npmjs.org/minimatch
npm http GET https://registry.npmjs.org/through
npm http 304 https://registry.npmjs.org/is-utf8
npm http 304 https://registry.npmjs.org/clone
npm http 304 https://registry.npmjs.org/gaze
npm http 304 https://registry.npmjs.org/cli-cursor
npm http 304 https://registry.npmjs.org/ansi-escapes
npm http 200 https://registry.npmjs.org/cli-width
npm http 304 https://registry.npmjs.org/rx-lite
npm http 304 https://registry.npmjs.org/readline2
npm http 304 https://registry.npmjs.org/string-width
npm http 304 https://registry.npmjs.org/run-async
npm http 304 https://registry.npmjs.org/lodash
npm http GET https://registry.npmjs.org/lodash.isarguments
npm http GET https://registry.npmjs.org/lodash._getnative
npm http GET https://registry.npmjs.org/lodash.isarray
npm http 200 https://registry.npmjs.org/figures
npm http GET https://registry.npmjs.org/lodash._root
npm http 304 https://registry.npmjs.org/through
npm http GET https://registry.npmjs.org/wrappy
npm http GET https://registry.npmjs.org/loud-rejection
npm http GET https://registry.npmjs.org/map-obj
npm http GET https://registry.npmjs.org/read-pkg-up
npm http GET https://registry.npmjs.org/normalize-package-data
npm http GET https://registry.npmjs.org/camelcase-keys
npm http GET https://registry.npmjs.org/redent
npm http GET https://registry.npmjs.org/trim-newlines
npm http GET https://registry.npmjs.org/decamelize
npm http GET https://registry.npmjs.org/find-index
npm http GET https://registry.npmjs.org/foreachasync
npm http GET https://registry.npmjs.org/minimist/0.0.8
npm http GET https://registry.npmjs.org/restore-cursor
npm http GET https://registry.npmjs.org/code-point-at
npm http GET https://registry.npmjs.org/is-fullwidth-code-point
npm http GET https://registry.npmjs.org/mute-stream/0.0.5
npm http 304 https://registry.npmjs.org/lodash.isarguments
npm http 304 https://registry.npmjs.org/lodash._getnative
npm http 304 https://registry.npmjs.org/lodash.isarray
npm http GET https://registry.npmjs.org/globule
npm http 304 https://registry.npmjs.org/lodash._root
npm http GET https://registry.npmjs.org/commander
npm http 304 https://registry.npmjs.org/loud-rejection
npm http 304 https://registry.npmjs.org/map-obj
npm http 304 https://registry.npmjs.org/read-pkg-up
npm http GET https://registry.npmjs.org/inflight
npm http GET https://registry.npmjs.org/brace-expansion
npm http GET https://registry.npmjs.org/path-is-absolute
npm http 304 https://registry.npmjs.org/wrappy
npm http 304 https://registry.npmjs.org/camelcase-keys
npm http 304 https://registry.npmjs.org/redent
npm http 200 https://registry.npmjs.org/normalize-package-data
npm http 304 https://registry.npmjs.org/trim-newlines
npm http 304 https://registry.npmjs.org/decamelize
npm http 304 https://registry.npmjs.org/find-index
npm http 304 https://registry.npmjs.org/minimist/0.0.8
npm http 304 https://registry.npmjs.org/restore-cursor
npm http 304 https://registry.npmjs.org/code-point-at
npm http 304 https://registry.npmjs.org/foreachasync
npm http 304 https://registry.npmjs.org/is-fullwidth-code-point
npm http 200 https://registry.npmjs.org/globule
npm http 304 https://registry.npmjs.org/commander
npm http 304 https://registry.npmjs.org/inflight
npm http 304 https://registry.npmjs.org/brace-expansion
npm http 304 https://registry.npmjs.org/path-is-absolute
npm http GET https://registry.npmjs.org/find-up
npm http GET https://registry.npmjs.org/indent-string
npm http GET https://registry.npmjs.org/strip-indent
npm http 304 https://registry.npmjs.org/mute-stream/0.0.5
npm http GET https://registry.npmjs.org/read-pkg
npm http GET https://registry.npmjs.org/camelcase
npm http GET https://registry.npmjs.org/array-find-index
npm http GET https://registry.npmjs.org/signal-exit
npm http GET https://registry.npmjs.org/exit-hook
npm http GET https://registry.npmjs.org/onetime
npm http GET https://registry.npmjs.org/number-is-nan
npm http GET https://registry.npmjs.org/concat-map/0.0.1
npm http GET https://registry.npmjs.org/balanced-match
npm http GET https://registry.npmjs.org/graceful-readlink
npm http 304 https://registry.npmjs.org/find-up
npm http 304 https://registry.npmjs.org/indent-string
npm http 304 https://registry.npmjs.org/strip-indent
npm http 304 https://registry.npmjs.org/array-find-index
npm http 304 https://registry.npmjs.org/signal-exit
npm http 304 https://registry.npmjs.org/exit-hook
npm http 304 https://registry.npmjs.org/camelcase
npm WARN deprecated [email protected]: lodash@<3.0.0 is no longer maintained. Upgrade to lodash@^4.0.0.
npm http 200 https://registry.npmjs.org/onetime
npm http 200 https://registry.npmjs.org/number-is-nan
npm http 304 https://registry.npmjs.org/read-pkg
npm http 304 https://registry.npmjs.org/concat-map/0.0.1
npm http 304 https://registry.npmjs.org/balanced-match
npm http 304 https://registry.npmjs.org/graceful-readlink
npm http GET https://registry.npmjs.org/repeating
npm http GET https://registry.npmjs.org/uglify-to-browserify
npm http GET https://registry.npmjs.org/async
npm http GET https://registry.npmjs.org/yargs
npm http GET https://registry.npmjs.org/load-json-file
npm http GET https://registry.npmjs.org/pinkie-promise
npm http GET https://registry.npmjs.org/path-type
npm http GET https://registry.npmjs.org/path-exists
npm http GET https://registry.npmjs.org/is-builtin-module
npm http GET https://registry.npmjs.org/hosted-git-info
npm http GET https://registry.npmjs.org/validate-npm-package-license
npm http GET https://registry.npmjs.org/amdefine
npm http GET https://registry.npmjs.org/lru-cache
npm http GET https://registry.npmjs.org/sigmund
npm http 200 https://registry.npmjs.org/repeating
npm WARN deprecated [email protected]: graceful-fs v3.0.0 and before will fail on node releases >= v7.0. Please update to graceful-fs@^4.0.0 as soon as possible. Use 'npm ls graceful-fs' to find it in the tree.
npm http 200 https://registry.npmjs.org/uglify-to-browserify
npm http GET https://registry.npmjs.org/is-finite
npm http 304 https://registry.npmjs.org/path-type
npm http 200 https://registry.npmjs.org/pinkie-promise
npm http 304 https://registry.npmjs.org/yargs
npm http 200 https://registry.npmjs.org/async
npm http 304 https://registry.npmjs.org/is-builtin-module
npm http 200 https://registry.npmjs.org/hosted-git-info
npm http 304 https://registry.npmjs.org/path-exists
npm http 304 https://registry.npmjs.org/validate-npm-package-license
npm http 304 https://registry.npmjs.org/load-json-file
npm http 304 https://registry.npmjs.org/amdefine
npm http 304 https://registry.npmjs.org/lru-cache
npm http GET https://registry.npmjs.org/window-size/0.1.0
npm http GET https://registry.npmjs.org/builtin-modules
npm http GET https://registry.npmjs.org/pinkie
npm http 304 https://registry.npmjs.org/sigmund
npm http 304 https://registry.npmjs.org/is-finite
npm http GET https://registry.npmjs.org/pify
npm http GET https://registry.npmjs.org/parse-json
npm http GET https://registry.npmjs.org/cliui
npm http GET https://registry.npmjs.org/spdx-correct
npm http GET https://registry.npmjs.org/spdx-expression-parse
npm http 304 https://registry.npmjs.org/builtin-modules
npm http 304 https://registry.npmjs.org/pinkie
npm http 304 https://registry.npmjs.org/pify
npm http 200 https://registry.npmjs.org/cliui
npm http 304 https://registry.npmjs.org/parse-json
npm http 304 https://registry.npmjs.org/spdx-correct
npm http 304 https://registry.npmjs.org/spdx-expression-parse
npm http GET https://registry.npmjs.org/spdx-license-ids
npm http GET https://registry.npmjs.org/spdx-license-ids
npm http GET https://registry.npmjs.org/error-ex
npm http GET https://registry.npmjs.org/spdx-exceptions
npm http 304 https://registry.npmjs.org/window-size/0.1.0
npm http GET https://registry.npmjs.org/center-align
npm http GET https://registry.npmjs.org/right-align
npm http GET https://registry.npmjs.org/wordwrap/0.0.2
npm http 200 https://registry.npmjs.org/spdx-license-ids
npm http 200 https://registry.npmjs.org/spdx-license-ids
npm http 304 https://registry.npmjs.org/error-ex
npm http 304 https://registry.npmjs.org/right-align
npm http 304 https://registry.npmjs.org/spdx-exceptions
npm http GET https://registry.npmjs.org/is-arrayish
npm http 304 https://registry.npmjs.org/center-align
npm http 304 https://registry.npmjs.org/wordwrap/0.0.2
npm http GET https://registry.npmjs.org/lazy-cache
npm http GET https://registry.npmjs.org/align-text
npm http GET https://registry.npmjs.org/align-text
npm http 200 https://registry.npmjs.org/is-arrayish
npm http 200 https://registry.npmjs.org/lazy-cache
npm http 304 https://registry.npmjs.org/align-text
npm http 304 https://registry.npmjs.org/align-text
npm http GET https://registry.npmjs.org/longest
npm http GET https://registry.npmjs.org/kind-of
npm http GET https://registry.npmjs.org/repeat-string
npm http 304 https://registry.npmjs.org/longest
npm http 304 https://registry.npmjs.org/kind-of
npm http 304 https://registry.npmjs.org/repeat-string
npm http GET https://registry.npmjs.org/is-buffer
npm http 304 https://registry.npmjs.org/is-buffer
npm WARN engine [email protected]: wanted: {"node":">=0.12"} (current: {"node":"v0.10.42","npm":"1.3.6"})
npm WARN engine [email protected]: wanted: {"node":">=0.12"} (current: {"node":"v0.10.42","npm":"1.3.6"})
[email protected] node_modules/gulp-replace
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected], [email protected])
└── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected])

[email protected] node_modules/gulp-concat
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected])
└── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected])

[email protected] node_modules/gulp
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected])
├── [email protected] ([email protected])
├── [email protected]
├── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected])
├── [email protected] ([email protected], [email protected], [email protected])
├── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected])
├── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected])
└── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected])

[email protected] node_modules/gulp-clean-css
├── [email protected]
├── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected], [email protected])
└── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected])

[email protected] node_modules/bower

[email protected] node_modules/gulp-bower
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected])
└── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected])

[email protected] node_modules/gulp-uglify
├── [email protected]
├── [email protected]
├── [email protected] ([email protected])
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected])
└── [email protected] ([email protected], [email protected], [email protected], [email protected])
/home/oddcoder/radare2-webui/www/enyo/node_modules/.bin/gulp
[07:32:53] Using gulpfile ~/radare2-webui/www/enyo/gulpfile.js
[07:32:53] Starting 'bower'...
[07:32:53] Using cwd: /home/oddcoder/radare2-webui/www/enyo
[07:32:53] Using bower dir: ../../dist/enyo/vendors/
[07:32:54] Starting 'js'...
[07:32:54] Finished 'js' after 9.79 ms
[07:32:54] Starting 'css'...
[07:32:54] Finished 'css' after 6 ms
[07:32:54] Starting 'common'...
[07:32:54] Finished 'common' after 1.39 ms
[07:32:54] bower not-cached https://github.com/jlbfalcao/jquery.layout.git#*
[07:32:54] bower resolve https://github.com/jlbfalcao/jquery.layout.git#*
[07:32:54] bower cached git://github.com/enyojs/enyo.git#86fb4f6ec0
[07:32:54] bower validate 86fb4f6ec0 against git://github.com/enyojs/enyo.git#86fb4f6ec0d52a05cf5324cbc630c2fce4880e67
[07:32:54] bower cached https://github.com/jquery/jquery-dist.git#2.2.3
[07:32:54] bower validate 2.2.3 against https://github.com/jquery/jquery-dist.git#^2.2.1
[07:32:54] bower cached https://github.com/jashkenas/backbone.git#1.3.3
[07:32:54] bower validate 1.3.3 against https://github.com/jashkenas/backbone.git#^1.3.2
[07:32:54] bower cached https://github.com/flesler/jquery.scrollTo.git#2.1.2
[07:32:54] bower validate 2.1.2 against https://github.com/flesler/jquery.scrollTo.git#^2.1.2
[07:32:54] bower cached https://github.com/components/jqueryui.git#1.11.4
[07:32:54] bower validate 1.11.4 against https://github.com/components/jqueryui.git#^1.11.4
[07:32:54] bower cached https://github.com/clientIO/joint.git#0.9.7
[07:32:54] bower validate 0.9.7 against https://github.com/clientIO/joint.git#^0.9.7
[07:32:56] bower checkout master
[07:32:56] bower cached https://github.com/jquery/jquery-dist.git#2.2.3
[07:32:56] bower validate 2.2.3 against https://github.com/jquery/jquery-dist.git#>=1.8
[07:32:57] bower cached https://github.com/jashkenas/backbone.git#1.2.1
[07:32:57] bower validate 1.2.1 against https://github.com/jashkenas/backbone.git#1.2.1
[07:32:57] bower cached https://github.com/jquery/jquery-dist.git#2.0.3
[07:32:57] bower validate 2.0.3 against https://github.com/jquery/jquery-dist.git#2.0.3
[07:32:57] bower cached https://github.com/cpettitt/dagre.git#0.7.4
[07:32:57] bower validate 0.7.4 against https://github.com/cpettitt/dagre.git#0.7.4
[07:32:57] bower cached https://github.com/cpettitt/graphlib.git#1.0.7
[07:32:57] bower validate 1.0.7 against https://github.com/cpettitt/graphlib.git#1.0.7
[07:32:57] bower cached https://github.com/lodash/lodash.git#3.10.1
[07:32:57] bower validate 3.10.1 against https://github.com/lodash/lodash.git#3.10.1
[07:33:03] bower resolved https://github.com/jlbfalcao/jquery.layout.git#ab39ea2748
[07:33:04] bower cached https://github.com/jashkenas/underscore.git#1.8.3
[07:33:04] bower validate 1.8.3 against https://github.com/jashkenas/underscore.git#>=1.7.0
[07:33:04] bower cached https://github.com/jashkenas/underscore.git#1.8.3
[07:33:04] bower validate 1.8.3 against https://github.com/jashkenas/underscore.git#>=1.8.3
[07:33:11] bower solved Unable to find suitable version for jquery
[07:33:11] bower solved Unable to find suitable version for backbone
[07:33:11] bower install enyo#86fb4f6ec0
[07:33:11] bower install jquery.scrollTo#2.1.2
[07:33:11] bower install jquery#2.0.3
[07:33:11] bower install jquery-ui#1.11.4
[07:33:11] bower install jointjs#0.9.7
[07:33:11] bower install graphlib#1.0.7
[07:33:11] bower install dagre#0.7.4
[07:33:11] bower install jquery.layout#ab39ea2748
[07:33:11] bower install backbone#1.3.3
[07:33:11] bower install lodash#3.10.1
[07:33:11] bower install underscore#1.8.3
[07:33:17] Finished 'bower' after 23 s
[07:33:17] Starting 'default'...
[07:33:17] Finished 'default' after 858 μs
make[1]: Leaving directory '/home/oddcoder/radare2-webui/www/enyo'
make -C www/m build
make[1]: Entering directory '/home/oddcoder/radare2-webui/www/m'
npm install
npm WARN package.json [email protected] No README data
/home/oddcoder/radare2-webui/www/m/node_modules/.bin/gulp
[07:33:40] Using gulpfile ~/radare2-webui/www/m/gulpfile.js
[07:33:40] Starting 'jscs'...
[07:33:41] Starting 'bower'...
[07:33:41] Using cwd: /home/oddcoder/radare2-webui/www/m
[07:33:41] Using bower dir: ./vendors/
Line must be at most 120 characters at /home/oddcoder/radare2-webui/www/m/js/index.js :
    13 |function uiButton(href, label, type) {
    14 | if (type == 'active') {
    15 |  return '&nbsp;<a href="' + href.replace(/"/g,'\'') + '" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-color--accent mdl-color-text--accent-contrast" style="background-color:#f04040 !important">' + label + '</a>';
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------^
    16 | }
    17 | return '&nbsp;<a href="' + href.replace(/"/g,'\'') + '" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-color--accent mdl-color-text--accent-contrast">' + label + '</a>';

Line must be at most 120 characters at /home/oddcoder/radare2-webui/www/m/js/index.js :
    15 |  return '&nbsp;<a href="' + href.replace(/"/g,'\'') + '" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-color--accent mdl-color-text--accent-contrast" style="background-color:#f04040 !important">' + label + '</a>';
    16 | }
    17 | return '&nbsp;<a href="' + href.replace(/"/g,'\'') + '" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-color--accent mdl-color-text--accent-contrast">' + label + '</a>';
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------^
    18 |}
    19 |

Line must be at most 120 characters at /home/oddcoder/radare2-webui/www/m/js/index.js :
   110 |
   111 |function uiCheckList(grp, id, label) {
   112 | return '<li> <label for="' + grp + '" class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect"> <input type="checkbox" id="' + id + '" class="mdl-checkbox__input" /><span class="mdl-checkbox__label">' + label + '</span> </label> </li>';
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------^
   113 |}
   114 |

If statement without curly braces at /home/oddcoder/radare2-webui/www/m/js/index.js :
   122 |
   123 |function setFlagspace(fs) {
   124 | if (!fs) fs = prompt('name');
---------^
   125 | if (!fs) return;
   126 | r2.cmd('fs ' + fs, function() {

If statement without curly braces at /home/oddcoder/radare2-webui/www/m/js/index.js :
   123 |function setFlagspace(fs) {
   124 | if (!fs) fs = prompt('name');
   125 | if (!fs) return;
---------^
   126 | r2.cmd('fs ' + fs, function() {
   127 |  flagspaces();

If statement without curly braces at /home/oddcoder/radare2-webui/www/m/js/index.js :
   130 |
   131 |function renameFlagspace(fs) {
   132 | if (!fs) fs = prompt('name');
---------^
   133 | if (!fs) return;
   134 | r2.cmd('fsr ' + fs, function() {

If statement without curly braces at /home/oddcoder/radare2-webui/www/m/js/index.js :
   131 |function renameFlagspace(fs) {
   132 | if (!fs) fs = prompt('name');
   133 | if (!fs) return;
---------^
   134 | r2.cmd('fsr ' + fs, function() {
   135 |  flagspaces();

If statement without curly braces at /home/oddcoder/radare2-webui/www/m/js/index.js :
   138 |
   139 |function delFlagspace(fs) {
   140 | if (!fs) fs = '.';
---------^
   141 | if (!fs) return;
   142 | r2.cmd('fs-' + fs, function() {

If statement without curly braces at /home/oddcoder/radare2-webui/www/m/js/index.js :
   139 |function delFlagspace(fs) {
   140 | if (!fs) fs = '.';
   141 | if (!fs) return;
---------^
   142 | r2.cmd('fs-' + fs, function() {
   143 |  flagspaces();

If statement without curly braces at /home/oddcoder/radare2-webui/www/m/js/index.js :
   176 |    var a = '';
   177 |    a += '<a href="javascript:setFlagspace(\'' + line[3] + '\')">';
   178 |    if (selected) a += '<font color=\'red\'>' + line[3] + '</font>';
------------^
   179 |    else a += line[3];
   180 |    a += '</a>';

Else statement without curly braces at /home/oddcoder/radare2-webui/www/m/js/index.js :
   177 |    a += '<a href="javascript:setFlagspace(\'' + line[3] + '\')">';
   178 |    if (selected) a += '<font color=\'red\'>' + line[3] + '</font>';
   179 |    else a += line[3];
------------^
   180 |    a += '</a>';
   181 |    body += uiTableRow([

All identifiers must be camelCase or UPPER_CASE at /home/oddcoder/radare2-webui/www/m/js/index.js :
   295 |
   296 |function uiCombo(d) {
   297 | var fun_name = 'combo' + (++comboId);
-------------^
   298 | var fun = fun_name + ' = function(e) {';
   299 | fun += ' var sel = document.getElementById("opt_' + fun_name + '");';

All identifiers must be camelCase or UPPER_CASE at /home/oddcoder/radare2-webui/www/m/js/index.js :
   296 |function uiCombo(d) {
   297 | var fun_name = 'combo' + (++comboId);
   298 | var fun = fun_name + ' = function(e) {';
-------------------^
   299 | fun += ' var sel = document.getElementById("opt_' + fun_name + '");';
   300 | fun += ' var opt = sel.options[sel.selectedIndex].value;';

All identifiers must be camelCase or UPPER_CASE at /home/oddcoder/radare2-webui/www/m/js/index.js :
   297 | var fun_name = 'combo' + (++comboId);
   298 | var fun = fun_name + ' = function(e) {';
   299 | fun += ' var sel = document.getElementById("opt_' + fun_name + '");';
-------------------------------------------------------------^
   300 | fun += ' var opt = sel.options[sel.selectedIndex].value;';
   301 | fun += ' switch (opt) {';

All identifiers must be camelCase or UPPER_CASE at /home/oddcoder/radare2-webui/www/m/js/index.js :
   306 | // CSP violation here
   307 | eval(fun);
   308 | var out = '<select id="opt_' + fun_name + '" onchange="' + fun_name + '()">';
----------------------------------------^
   309 | for (var a in d) {
   310 |  var def = (d[a].default) ? ' default' : '';

All identifiers must be camelCase or UPPER_CASE at /home/oddcoder/radare2-webui/www/m/js/index.js :
   306 | // CSP violation here
   307 | eval(fun);
   308 | var out = '<select id="opt_' + fun_name + '" onchange="' + fun_name + '()">';
--------------------------------------------------------------------^
   309 | for (var a in d) {
   310 |  var def = (d[a].default) ? ' default' : '';

Implicit string conversion at /home/oddcoder/radare2-webui/www/m/js/index.js :
   317 |function uiSwitch(d) {
   318 | // TODO: not yet done
   319 | var out = '' + d +
-------------------^
   320 | '<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="switch-1">' +
   321 | '<input type="checkbox" id="switch-1" class="mdl-switch__input" checked />' +

Line must be at most 120 characters at /home/oddcoder/radare2-webui/www/m/js/index.js :
   326 |
   327 |function uiBlock(d) {
   328 | var out = '<div class="mdl-card__supporting-text mdl-shadow--2dp mdl-color-text--blue-grey-50 mdl-cell" style="display:inline-block;margin:5px;color:black !important;background-color:white !important">';
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------^
   329 | out += '<h3 style="color:black">' + d.name + '</h3>';
   330 | for (var i in d.blocks) {

Mixed spaces and tabs found at /home/oddcoder/radare2-webui/www/m/js/index.js :
   415 | { name: 'ATT', js: 'configATT' }
   416 | ]},
   417 |         {
--------^
   418 |   name: 'Colors', buttons: [
   419 |   { name: 'Yes', js: 'configColorTrue', default: true },

Line must be at most 120 characters at /home/oddcoder/radare2-webui/www/m/js/index.js :
   485 |  var color = '#f0f0f0';
   486 |  d = clickableOffsets(d);
   487 |  c.innerHTML += '<pre style=\'margin:1.2em;font-family:Console,Courier New,monospace;color:' + color + ' !important\'>' + d + '<pre>';
-----------------------------------------------------------------------------------------------------------------------------------------------^
   488 | });
   489 |}

If statement without curly braces at /home/oddcoder/radare2-webui/www/m/js/index.js :
   532 |  for (var i in lines) {
   533 |   var line = lines[i].split(/ +/);
   534 |   if (line.length >= 3)
-----------^
   535 |   body += uiTableRow([
   536 |   '+' + line[0],

All identifiers must be camelCase or UPPER_CASE at /home/oddcoder/radare2-webui/www/m/js/index.js :
   545 |}
   546 |
   547 |var last_console_output = '';
------------^
   548 |
   549 |function runCommand(text) {

If statement without curly braces at /home/oddcoder/radare2-webui/www/m/js/index.js :
   548 |
   549 |function runCommand(text) {
   550 | if (!text)
---------^
   551 | text = document.getElementById('input').value;
   552 | r2.cmd(text, function(d) {

All identifiers must be camelCase or UPPER_CASE at /home/oddcoder/radare2-webui/www/m/js/index.js :
   551 | text = document.getElementById('input').value;
   552 | r2.cmd(text, function(d) {
   553 |  last_console_output = '\n' + d;
----------^
   554 |  document.getElementById('output').innerHTML = last_console_output;
   555 | });

All identifiers must be camelCase or UPPER_CASE at /home/oddcoder/radare2-webui/www/m/js/index.js :
   552 | r2.cmd(text, function(d) {
   553 |  last_console_output = '\n' + d;
   554 |  document.getElementById('output').innerHTML = last_console_output;
--------------------------------------------------------^
   555 | });
   556 |}

Line must be at most 120 characters at /home/oddcoder/radare2-webui/www/m/js/index.js :
   585 | if (inColor) {
   586 |  c.style.backgroundColor = '#202020';
   587 |  c.innerHTML += '<input style=\'position:fixed;padding-left:10px;top:4em;height:1.8em;color:white\' onkeypress=\'consoleKey()\' class=\'mdl-card--expand mdl-textfield__input\' id=\'input\'/>';
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------^
   588 |  //c.innerHTML += uiButton('javascript:runCommand()', 'Run');
   589 |  c.innerHTML += '<div id=\'output\' class=\'pre\' style=\'color:white !important\'><div>';

Line must be at most 120 characters at /home/oddcoder/radare2-webui/www/m/js/index.js :
   590 | } else {
   591 |  c.style.backgroundColor = '#f0f0f0';
   592 |  c.innerHTML += '<input style=\'color:black\' onkeypress=\'consoleKey()\' class=\'mdl-card--expand mdl-textfield__input\' id=\'input\'/>';
---------------------------------------------------------------------------------------------------------------------------------------------------^
   593 |  c.innerHTML += uiButton('javascript:runCommand()', 'Run');
   594 |  c.innerHTML += '<div id=\'output\' class=\'pre\' style=\'color:black!important\'><div>';

All identifiers must be camelCase or UPPER_CASE at /home/oddcoder/radare2-webui/www/m/js/index.js :
   594 |  c.innerHTML += '<div id=\'output\' class=\'pre\' style=\'color:black!important\'><div>';
   595 | }
   596 | document.getElementById('output').innerHTML = last_console_output;
-------------------------------------------------------^
   597 |}
   598 |

If statement without curly braces at /home/oddcoder/radare2-webui/www/m/js/index.js :
   614 |}
   615 |function runSearchCode(text) {
   616 | if (!text) text = document.getElementById('search_input').value;
---------^
   617 | r2.cmd('"/c ' + text + '"', function(d) {
   618 |  document.getElementById('search_output').innerHTML = clickableOffsets(d);

If statement without curly braces at /home/oddcoder/radare2-webui/www/m/js/index.js :
   620 |}
   621 |function runSearchString(text) {
   622 | if (!text) text = document.getElementById('search_input').value;
---------^
   623 | r2.cmd('/ ' + text, function(d) {
   624 |  document.getElementById('search_output').innerHTML = clickableOffsets(d);

If statement without curly braces at /home/oddcoder/radare2-webui/www/m/js/index.js :
   626 |}
   627 |function runSearchROP(text) {
   628 | if (!text) text = document.getElementById('search_input').value;
---------^
   629 | r2.cmd('"/R ' + text + '"', function(d) {
   630 |  document.getElementById('search_output').innerHTML = clickableOffsets(d);

If statement without curly braces at /home/oddcoder/radare2-webui/www/m/js/index.js :
   633 |
   634 |function runSearch(text) {
   635 | if (!text)
---------^
   636 | text = document.getElementById('search_input').value;
   637 | if (text[0] == '"') {

All identifiers must be camelCase or UPPER_CASE at /home/oddcoder/radare2-webui/www/m/js/index.js :
   648 |function indentScript() {
   649 | var str = document.getElementById('script').value;
   650 | var indented = js_beautify(str);
------------------------^
   651 | document.getElementById('script').value = indented;
   652 | localStorage['script'] = indented;

Use dot notation instead of brackets for member expressions at /home/oddcoder/radare2-webui/www/m/js/index.js :
   650 | var indented = js_beautify(str);
   651 | document.getElementById('script').value = indented;
   652 | localStorage['script'] = indented;
----------------------^
   653 |}
   654 |

Use dot notation instead of brackets for member expressions at /home/oddcoder/radare2-webui/www/m/js/index.js :
   655 |function runScript() {
   656 | var str = document.getElementById('script').value;
   657 | localStorage['script'] = str;
----------------------^
   658 | document.getElementById('scriptOutput').innerHTML = '';
   659 | try {

Line must be at most 120 characters at /home/oddcoder/radare2-webui/www/m/js/index.js :
   707 | c.style.backgroundColor = '#f0f0f0';
   708 | var out = '<br />';
   709 | out += '<input style=\'background-color:white !important;padding-left:10px;top:3.5em;height:1.8em;color:white\' onkeypress=\'searchKey()\' class=\'mdl-card--expand mdl-textfield__input\' id=\'search_input\'/>';
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------^
   710 | out += '<br />';
   711 | out += uiButton('javascript:runSearch()', 'Hex');

Line must be at most 120 characters at /home/oddcoder/radare2-webui/www/m/js/index.js :
   721 |function uiTableBegin(cols) {
   722 | var out = '';
   723 | out += '<table style="margin-left:10px" class="mdl-data-table mdl-js-data-table mdl-data-table--selectable mdl-shadow--2dp">';
---------------------------------------------------------------------------------------------------------------------------------------^
   724 | //out += '<table class="mdl-data-table mdl-js-data-table mdl-data-table--selectable">';
   725 |

If statement without curly braces at /home/oddcoder/radare2-webui/www/m/js/index.js :
   745 | for (var i in cols) {
   746 |  var col = cols[i];
   747 |  if (!col) continue;
----------^
   748 |  if (col[0] == '+') {
   749 |   col = clickableOffsets(col.substring(1));

If statement without curly braces at /home/oddcoder/radare2-webui/www/m/js/index.js :
   775 |  for (var i in lines) {
   776 |   var line = lines[i].split(/ /);
   777 |   if (line.length >= 3)
-----------^
   778 |   body += uiTableRow([
   779 |   '+' + line[0],

If statement without curly braces at /home/oddcoder/radare2-webui/www/m/js/index.js :
   800 |  for (var i in lines) {
   801 |   var line = lines[i].split(/ (.+)?/);
   802 |   if (line.length >= 2)
-----------^
   803 |   body += uiTableRow([
   804 |   '+' + line[0],

Line must be at most 120 characters at /home/oddcoder/radare2-webui/www/m/js/index.js :
   887 | r2.cmd('pd 128' + tail, function(d) {
   888 |  var dis = clickableOffsets(d);
   889 |  c.innerHTML += '<center>' + uiRoundButton('javascript:up()', 'keyboard_arrow_up') + uiRoundButton('javascript:down()', 'keyboard_arrow_down') + '</center>';
----------------------------------------------------------------------------------------------------------------------------------------------------------------------^
   890 |  c.innerHTML += '<pre style=\'font-family:Console,Courier New,monospace;color:grey\'>' + dis + '<pre>';
   891 |  c.innerHTML += '<center>' + uiRoundButton('javascript:down()', 'keyboard_arrow_down') + '</center><br /><br />';

Use dot notation instead of brackets for member expressions at /home/oddcoder/radare2-webui/www/m/js/index.js :
  1011 | document.getElementById('title').innerHTML = 'Blocks';
  1012 | var c = document.getElementById('content');
  1013 | c.style['overflow'] = 'none';
-----------------^
  1014 | var color = inColor ? 'white' : 'black';
  1015 | c.innerHTML = '<br />';

Line must be at most 120 characters at /home/oddcoder/radare2-webui/www/m/js/index.js :
  1014 | var color = inColor ? 'white' : 'black';
  1015 | c.innerHTML = '<br />';
  1016 | c.innerHTML += '&nbsp;<a href="javascript:panelDisasm()" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-color--accent mdl-color-text--accent-contrast">&lt; INFO</a> <h3 color=white></h3>';
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------^
  1017 | var tail = inColor ? '@e:scr.color=1,scr.html=1' : '';
  1018 | r2.cmd('pdr' + tail, function(d) {

Use dot notation instead of brackets for member expressions at /home/oddcoder/radare2-webui/www/m/js/index.js :
  1024 | document.getElementById('title').innerHTML = 'Function';
  1025 | var c = document.getElementById('content');
  1026 | c.style['overflow'] = 'none';
-----------------^
  1027 | var color = inColor ? 'white' : 'black';
  1028 | c.innerHTML = '<br />';

Line must be at most 120 characters at /home/oddcoder/radare2-webui/www/m/js/index.js :
  1027 | var color = inColor ? 'white' : 'black';
  1028 | c.innerHTML = '<br />';
  1029 | c.innerHTML += '&nbsp;<a href="javascript:panelDisasm()" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-color--accent mdl-color-text--accent-contrast">&lt; INFO</a> <h3 color=white></h3>';
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------^
  1030 | var tail = inColor ? '@e:scr.color=1,scr.html=1,asm.lineswidth=0' : '@e:asm.lineswidth=0';
  1031 | r2.cmd('e scr.color=1;s entry0;s $S;pD $SS;e scr.color=0', function(d) {

Use dot notation instead of brackets for member expressions at /home/oddcoder/radare2-webui/www/m/js/index.js :
  1038 | document.getElementById('title').innerHTML = 'Function';
  1039 | var c = document.getElementById('content');
  1040 | c.style['overflow'] = 'none';
-----------------^
  1041 | var color = inColor ? 'white' : 'black';
  1042 | c.innerHTML = '<br />';

Line must be at most 120 characters at /home/oddcoder/radare2-webui/www/m/js/index.js :
  1041 | var color = inColor ? 'white' : 'black';
  1042 | c.innerHTML = '<br />';
  1043 | c.innerHTML += '&nbsp;<a href="javascript:panelDisasm()" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-color--accent mdl-color-text--accent-contrast">&lt; INFO</a> <h3 color=white></h3>';
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------^
  1044 | var tail = inColor ? '@e:scr.color=1,scr.html=1,asm.lineswidth=0' : '@e:asm.lineswidth=0';
  1045 | r2.cmd('pdf' + tail, function(d) {

Use dot notation instead of brackets for member expressions at /home/oddcoder/radare2-webui/www/m/js/index.js :
  1051 | document.getElementById('title').innerHTML = 'Decompile';
  1052 | var c = document.getElementById('content');
  1053 | c.style['overflow'] = 'none';
-----------------^
  1054 | var color = inColor ? 'white' : 'black';
  1055 | c.innerHTML = '<br />';

Line must be at most 120 characters at /home/oddcoder/radare2-webui/www/m/js/index.js :
  1054 | var color = inColor ? 'white' : 'black';
  1055 | c.innerHTML = '<br />';
  1056 | c.innerHTML += '&nbsp;<a href="javascript:panelDisasm()" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-color--accent mdl-color-text--accent-contrast">&lt; INFO</a> <h3 color=white></h3>';
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------^
  1057 | var tail = inColor ? '@e:scr.color=1,scr.html=1' : '';
  1058 | r2.cmd('pdc' + tail, function(d) {

Use dot notation instead of brackets for member expressions at /home/oddcoder/radare2-webui/www/m/js/index.js :
  1064 | document.getElementById('title').innerHTML = 'Graph';
  1065 | var c = document.getElementById('content');
  1066 | c.style['overflow'] = 'auto';
-----------------^
  1067 | var color = inColor ? 'white' : 'black';
  1068 | c.innerHTML = '<br />&nbsp;<a href="javascript:panelDisasm()" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-color--accent mdl-color-text--accent-contrast">&lt; INFO</a>';


50 code style errors found.
[07:33:44] Finished 'jscs' after 3.34 s
[07:33:45] Finished 'bower' after 3.92 s
[07:33:45] Starting 'js'...
[07:33:45] Finished 'js' after 6.62 ms
[07:33:45] Starting 'fonts'...
[07:33:45] Finished 'fonts' after 3.42 ms
[07:33:45] Starting 'css'...
[07:33:45] Finished 'css' after 3.81 ms
[07:33:45] Starting 'default'...
[07:33:45] Finished 'default' after 799 μs

/home/oddcoder/radare2-webui/www/m/node_modules/gulp-google-webfonts/index.js:209
                request.name = path.posix.join(options.fontsDir, request.name);
                                          ^
TypeError: Cannot call method 'join' of undefined
    at makeFontFace (/home/oddcoder/radare2-webui/www/m/node_modules/gulp-google-webfonts/index.js:209:31)
    at Array.map (native)
    at generateFontCss (/home/oddcoder/radare2-webui/www/m/node_modules/gulp-google-webfonts/index.js:204:6)
    at parseCss (/home/oddcoder/radare2-webui/www/m/node_modules/gulp-google-webfonts/index.js:191:4)
    at fn (/home/oddcoder/radare2-webui/www/m/node_modules/gulp-google-webfonts/node_modules/async/lib/async.js:638:34)
    at Object._onImmediate (/home/oddcoder/radare2-webui/www/m/node_modules/gulp-google-webfonts/node_modules/async/lib/async.js:554:34)
    at processImmediate [as _immediateCallback] (timers.js:363:15)
Makefile:4: recipe for target 'build' failed
make[1]: *** [build] Error 8
make[1]: Leaving directory '/home/oddcoder/radare2-webui/www/m'
Makefile:30: recipe for target 'material' failed
make: *** [material] Error 2

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.