Giter VIP home page Giter VIP logo

rdp-inspector's People

Contributors

janodvarko avatar jsnajdr avatar rpl avatar

Stargazers

 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

rdp-inspector's Issues

TypeError: actorProto is undefined

It looks like we need to change the inspector-actor.js to support changes in the protocol.js ActorClass, which currently raises the following error:

console.error: rdpinspector: JPM [error]   Message: TypeError: actorProto is undefined   Stack:     ActorClass@resource://devtools/shared/protocol.js:1107:3 @resource://rdpinspector-at-getfirebug-dot-com/lib/inspector-actor.js:108:22
...

By looking at the usage of ActorClass in the actors define in the mozilla-central repo, it looks like we need to make the same change introduced to the standard RDP actors into our custom "lazily injected" inspector-actor, e.g. the protocol specs needs to be passed as a separate parameter and created using the new generateActorSpec helper defined in the protocol.js module.

Useful references:

WebIDE connection is not listed in the Connections window

Open RDP connection with a simulator (using WebIDE) and try to listen to the RDP packets. The problem is that the connection is not listed in the Connections window - the WebIDE tab is empty.

STR:

  1. Open Web Developer -> WebIDE
  2. Make sure you have at least one Simulator installed
  3. Click on the Simulator in the Right panel -> you should see the Simulator window.
  4. Open RDP Connections window using the toolbar-button dropdown menu: Connect...
  5. The WebIDE tab is empty

Connecting through the Connect page should also be supported (Web Developer -> Connect ...)

Note: checking the 'Open automatically on new WebIDE connections' option doesn't work either. If I checked and re-open the menu, it's unchecked again.

Honza

Update gDevTools.jsm path after migration

In 47, we enabled warnings for old DevTools paths. It should be safe to just update old paths without maintaining both versions, since the "new" paths are in Release now.

13:53:27.830 DEPRECATION WARNING: This path to gDevTools.jsm is deprecated.  Please use Cu.import("resource://devtools/client/framework/gDevTools.jsm") to load this module.
You may find more details about this deprecation at: https://bugzil.la/912121
resource:///modules/devtools/client/framework/gDevTools.jsm 19 null
resource://gre/modules/commonjs/toolkit/loader.js -> resource://rdpinspector-at-getfirebug-dot-com/node_modules/firebug.sdk/lib/core/devtools.js 18 safeImport
resource://gre/modules/commonjs/toolkit/loader.js -> resource://rdpinspector-at-getfirebug-dot-com/node_modules/firebug.sdk/lib/core/devtools.js 97 null
resource://gre/modules/commonjs/toolkit/loader.js 279 evaluate
resource://gre/modules/commonjs/toolkit/loader.js 331 load
resource://gre/modules/commonjs/toolkit/loader.js 653 _require
resource://gre/modules/commonjs/toolkit/loader.js 607 require
resource://gre/modules/commonjs/toolkit/loader.js -> resource://rdpinspector-at-getfirebug-dot-com/node_modules/firebug.sdk/lib/core/window.js 11 null
resource://gre/modules/commonjs/toolkit/loader.js 279 evaluate
resource://gre/modules/commonjs/toolkit/loader.js 331 load
resource://gre/modules/commonjs/toolkit/loader.js 653 _require
resource://gre/modules/commonjs/toolkit/loader.js 607 require
resource://gre/modules/commonjs/toolkit/loader.js -> resource://rdpinspector-at-getfirebug-dot-com/node_modules/firebug.sdk/lib/context.js 12 null
resource://gre/modules/commonjs/toolkit/loader.js 279 evaluate
resource://gre/modules/commonjs/toolkit/loader.js 331 load
resource://gre/modules/commonjs/toolkit/loader.js 653 _require
resource://gre/modules/commonjs/toolkit/loader.js 607 require
resource://gre/modules/commonjs/toolkit/loader.js -> resource://rdpinspector-at-getfirebug-dot-com/node_modules/firebug.sdk/lib/toolbox-chrome.js 18 null
resource://gre/modules/commonjs/toolkit/loader.js 279 evaluate
resource://gre/modules/commonjs/toolkit/loader.js 331 load
resource://gre/modules/commonjs/toolkit/loader.js 653 _require
resource://gre/modules/commonjs/toolkit/loader.js 607 require
resource://gre/modules/commonjs/toolkit/loader.js -> resource://rdpinspector-at-getfirebug-dot-com/lib/main.js 8 null
resource://gre/modules/commonjs/toolkit/loader.js 279 evaluate
resource://gre/modules/commonjs/toolkit/loader.js 331 load
resource://gre/modules/commonjs/toolkit/loader.js 768 main
resource://gre/modules/commonjs/toolkit/loader.js -> resource://rdpinspector-at-getfirebug-dot-com/index.js 32 null
resource://gre/modules/commonjs/toolkit/loader.js 279 evaluate
resource://gre/modules/commonjs/toolkit/loader.js 331 load
resource://gre/modules/commonjs/toolkit/loader.js 768 main
resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/addon/runner.js 147 run
resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/addon/runner.js 87 startup/</<
resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js 937 Handler.prototype.process
resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js 816 this.PromiseWalker.walkerLoop

rdpinspector:TypeError: gDevTools is undefined

Trying devtools in Nightly (47.0a1 from 8ef94be995a453f5c464278c53478ba8c8554f81)
Having trouble
Trying to install rdpinspector to debug
Having more trouble:

rdpinspector:TypeError: gDevTools is undefined
Stack trace:
ToolboxChrome<.initialize@resource://gre/modules/commonjs/toolkit/loader.js -> resource://rdpinspector-at-getfirebug-dot-com/node_modules/firebug.sdk/lib/toolbox-chrome.js:48:5
main@resource://gre/modules/commonjs/toolkit/loader.js -> resource://rdpinspector-at-getfirebug-dot-com/lib/main.js:29:3
run@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/addon/runner.js:153:7
startup/</<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/addon/runner.js:87:9
Handler.prototype.process@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:937:23
this.PromiseWalker.walkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:816:7
Promise*this.PromiseWalker.scheduleWalkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:747:11
this.PromiseWalker.schedulePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:779:7
this.PromiseWalker.completePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:714:7
handler@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/addon/window.js:56:3
EventListener.handleEvent*EventTargetInterposition.methods.addEventListener@resource://gre/modules/RemoteAddonsParent.jsm:626:5
AddonInterpositionService.prototype.interposeProperty/desc.value@resource://gre/components/multiprocessShims.js:160:52
@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/addon/window.js:54:1
evaluate@resource://gre/modules/commonjs/toolkit/loader.js:279:19
load@resource://gre/modules/commonjs/toolkit/loader.js:331:5
_require@resource://gre/modules/commonjs/toolkit/loader.js:653:16
require@resource://gre/modules/commonjs/toolkit/loader.js:607:12
startup/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/addon/runner.js:72:21
Handler.prototype.process@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:937:23
this.PromiseWalker.walkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:816:7
Promise*this.PromiseWalker.scheduleWalkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:747:11
this.PromiseWalker.schedulePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:779:7
this.PromiseWalker.completePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:714:7
listener/<@resource://gre/modules/sdk/system/Startup.js:51:46
 etc..

yo, wassup?

Hide packets generated by RDPi itself

RDPi is also using the protocol and it would be great to identify and hide these packets. It's a bit confusing for the user since those aren't expected.

Honza

Better UI/UX for WebIDE support

This is a follow up for issue #52
The following description taken from related pull request: #60

Currently if you open RDPi window with WebIDE you can't inspect RDP communication for a Toolbox. Similar problem was there already before, it isn't possible to intercept packets for the second opened Toolbox.

I think we still need a drop-down list (a combo-box) with list of all available connections (including Toolbox and WebIDE connections) displayed at the top of the RDPi window allowing the user to pick a connection to observe...

I am thinking about the following use cases:

A RDPi opened when there is no connection

  1. The user opens RDPi console. There is neither Toolbox nor WebIDE open, so the console is empty since there is no connection available (the list of connections is also empty). Opening the console does not open the Toolbox automatically.
  2. The user opens the Toolbox. The list of connections has automatically one entry. Since it's the first connection it's auto-selected, so the console automatically displays RDP traffic for the Toolbox.

Q: we could auto-select connection in the list according to the currently selected toolbox (can be a follow up).

B RDPi opened when there is a connection

  1. The user opens the Toolbox (or more than one)
  2. The user opens RDPi console. If there is just one connection it's automatically selected and the console displays RDP traffic for it. If there are more connections, the first one in the list is selected automatically.

Further comments:

  • The list of connections is updated automatically as a Toolbox and/or WebIDE are opened or closed.
  • If active connection is closed another one from the list (the first one?) is automatically selected.
  • Connection label should clearly indicate what window is associated with it (e.g. using nice prefix "Toolbox/WebIDE" or window title just like now).
  • The user should be able to explicitly open two RDPi consoles to observer two connections at the same time (but this should be probably done as a follow up)

Honza

Support for WebIDE

It would be great to see packet generated by WebIDE tool. Both should be supported, communication with the simulator and real remote devices.

The WebIDE runs in its own window and don't have the RDP Inspector icon, so currently there is no (user) way to attach to its Connection object.

UX:
I thinks that there could be a list of all connections in RDPi toolbar and the user could just pick the one that should be intercepted.

Let's discuss on our meeting.

Honza

Introduce a search box

The main tab bar should have a search box on the right side. Just like a panel in the developer Toolbox.
The search box should be used to filter the packet list

It should be possible to filter according to:

  1. an arbitrary search text
  2. actor id to/from.
  3. send/received
  4. any other packet fields?

(can be implemented as follows ups)

Honza

Append little arrows to packets in the list

Packets in the packet list should have little arrows:

  1. Sent packets: an arrow on the left side
  2. Received packets: an arrow on the right side

Just like every modern chat app does with text messages.

Honza

Implement the Actors tab

The Actors tab should show:

  1. All registered tab actors
  2. All registered global actors

It should be possible to refresh the view anytime using a 'Refresh' button on the panel's toolbar.

Honza

Error: Wrong State: Expected 'detached', but current state is 'attached'

STR:

  1. Make sure to open at least one Toolbox
  2. Open the connection list
  3. Double click the entry to open RDPi console
  4. Close the RDPi console
  5. Double click the entry again, check out the Web console for the error.

Error: Wrong State: Expected 'detached', but current state is 'attached'
Stack trace:
expectState/<@resource://rdpinspector-at-getfirebug-dot-com/lib/inspector-actor.js:57:29
actorProto/</handler@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/protocol.js:1013:19
DSC_onPacket@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/main.js:1601:15
LocalDebuggerTransport.prototype.send/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/shared/transport/transport.js:569:11
makeInfallible/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/shared/DevToolsUtils.js:87:14
makeInfallible/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/shared/DevToolsUtils.js:87:14

Honza

TypeError: Rdp.registerGlobalActor(...) is undefined

I am seeing the following error when opening RDPi Console:
(Firefox Nightly)

Console Service ERROR [JavaScript Error: "TypeError: Rdp.registerGlobalActor(...) is undefined" {file: "resource://gre/modules/commonjs/toolkit/loader.js -> resource://rdpinspector-at-getfirebug-dot-com/lib/inspector-service.js" line: 280}] [JavaScript Error: "TypeError: Rdp.registerGlobalActor(...) is undefined" {file: "resource://gre/modules/commonjs/toolkit/loader.js -> resource://rdpinspector-at-getfirebug-dot-com/lib/inspector-service.js" line: 280}]

@rpl Any tips why this happens?

Honza

Implement 'Summary' command

There is a 'Bookmark' button in the main toolbar and clicking on it should insert horizontal separator into the list of packets.

The separator should:

  1. Visually separate packets in the list
  2. Display amount of data sent/received
  3. Display number of packets sent/received

Honza

Implement 'Cache packets before the inspector is opened' option

There is an 'Options' button in the Packets panel.
There is an option waiting to be implemented

Cache packets before the inspector is opened

Packets are cached till the inspector window is opened, so the user can see also packets fired at the very beginning. It should be possible to switch this off (to avoid performance penalties)

Honza

Packet filtering should be case insensitive

Packet filtering should be case insensitive by default.
There can be an option that allows both: case sensitive and insensitive filtering.
(can be done as a followup)

Honza

Implement "edit and resend"

I would really love to have a way to edit and resend an RDP packet (like the DevTools do in the Network panel).

Here is a test case:

  1. Something weird happens on the DevTools or on my extension, I open the RDP Inspector to inspect the packets
  2. I identify the packet and identify a potential malformation of it (bad or missing property)
  3. I right-click on the packet and select "edit and resend the packet" => I am in the "Send packet" side-panel, with the properties of the packet pre-filled
  4. I edit the properties
  5. I send the packet and observe the behavior.

version: 1.0.4.1-signed

Florent

TypeError: postChromeMessage is not a function

On the latest Nightly, RDP inspector doesn't work and there is this error in the browser console:

TypeError: postChromeMessage is not a function main.js:52:1

The postChromeMessage function is defined in frame-script.js, where there's another error reported, so the definition code is never even called:

SyntaxError: "use strict" not allowed in function with destructuring parameter frame-script.js:12

This error seems like something recently introduced in SpiderMonkey?

Implement splitter component

A splitter reactjs component is needed.

Usage as follows:

Splitter({mode: "vertical", left: DIV(), right: DIV()};

Rendered e.g. in between the packet list and packet details component.

Honza

Implement 'Show inline packets details' option

There is an 'Options' button in the Packets panel.
There is an option waiting to be implemented
Show inline packets details

An inline property preview is displayed within a packet in the packet list.
Search for TreeView({data: previewData, mode: mode}) in packet.js

Honza

No packets displayed: inspector is broken because of a platform change

Since around 15-Dec-2016, the RDP inspector is broken - no packets are ever displayed in the UI and the addon logs an error about "window.postChromeMessage" being null.

Mozregression told me that the breaking change is bug 1322414. This changed the syntax for:

<browser type="content-primary">

to

<browser type="content" primary="true">

with no backward compatibility.

Fixing the <browser> elements in connections-window.xul and inspector-window.xul makes the RDP inspector work again.

A bad thing is that there is no way to specify content-primary in a way that works both before and after. But even if I remove the primary attribute, the inspector still works well, so maybe just <browser type="content"> is good enough in this case.

Download link

The readme file should contain a download link.

Florent

Show/hide the side panel

It should be possible to show/hide the side panel using a button on the right side of the console toolbar. Check out Firebug.next theme to see how this should look like.

Honza

Export React components from modules

React components should be directly exported from modules (not using createFactory).
The client should be always responsible for calling createFactory.
This will also help to write tests.

Honza

Going to need to update the module path for DevToolsUtils after Bug 912121 sticks

In a local fxteam build, I see the following error. In https://bugzilla.mozilla.org/show_bug.cgi?id=912121 the path to some devtools modules (including DevToolsUtils) has changed:

console.error: rdpinspector: 
  Message: Module `devtools/toolkit/DevToolsUtils.js` is not found at resource://gre/modules/devtools/toolkit/DevToolsUtils.js
  Stack:
    @resource://rdpinspector-at-getfirebug-dot-com/node_modules/firebug.sdk/lib/core/window.js:13:28
@resource://rdpinspector-at-getfirebug-dot-com/node_modules/firebug.sdk/lib/context.js:13:17
@resource://rdpinspector-at-getfirebug-dot-com/node_modules/firebug.sdk/lib/toolbox-chrome.js:17:21
@resource://rdpinspector-at-getfirebug-dot-com/lib/main.js:8:27
@resource://rdpinspector-at-getfirebug-dot-com/index.js:32:15
run@resource://gre/modules/commonjs/sdk/addon/runner.js:145:19
startup/</<@resource://gre/modules/commonjs/sdk/addon/runner.js:86:7
Handler.prototype.process@resource://gre/modules/Promise-backend.js:934:23
this.PromiseWalker.walkerLoop@resource://gre/modules/Promise-backend.js:813:7
Promise*this.PromiseWalker.scheduleWalkerLoop@resource://gre/modules/Promise-backend.js:744:11
this.PromiseWalker.schedulePromise@resource://gre/modules/Promise-backend.js:776:7
this.PromiseWalker.completePromise@resource://gre/modules/Promise-backend.js:711:7
handler@resource://gre/modules/commonjs/sdk/addon/window.js:56:3

Limit number of rendered packets

The packet list should have a limit of displayed packets. If the limit is reached there should be "more" link at the top of the list.

Honza

Keep same packets visible within the viewport when not scrolling

I was trying to look at a particular sequence of requests, but the visible requests keep scrolling out of view. Maybe it's filled up a buffer and is pruning the older ones? But it makes it a little hard to keep track of. If nothing else, it'd be great to be able to pause the incoming stream.

packets

Packet editor side bar

It should be possible to send packet to the backend.
(see also: firebug/firebug.next#375)

From the pull:

  1. The editor UX should be similar to what we have done in Firebug 2 for the Watch panel. See wiki: https://getfirebug.com/wiki/index.php/Watch_Side_Panel The panel shows how rows should be edited/appended/removed
  2. A "type" field can automatically offer (auto-complete) options from ObjectActor.requestTypes (ideally: request fields like actor id, etc. are filled in automatically)

Honza

Support for custom connections

It should be possible to monitor even connection that are initiated by custom clients (e.g.coming from extensions) not only the Toolbox and WebIDE

Honza

Implement 'Clear' command

There is a 'Clear' button in the Packet's panel toolbar and clicking on it should remove all packets from the list.

Honza

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.