Hi,

As stated in my last mail, when I run retroshare-nogui, it rejects my
plugin with the following message :

RsPluginManager::loadList():
   Reference executable hash: 2bf0bcb5ace17e7dfad6681b051ff083cee1e531
   Accepted hash: 89dc2a00adae7a2b4e7bce01d287b6457b3d8eea
(WW) Executable hashes do not match. Executable hash has changed.
Discarding the list of accepted/rejected plugins.
Found plugin /home/jeetu/.retroshare/extensions6/libEmptyPlugin.so
  Loading plugin...
  Loading plugin /home/jeetu/.retroshare/extensions6/libEmptyPlugin.so
    -> hashing.
    -> hash = 89dc2a00adae7a2b4e7bce01d287b6457b3d8eea
    -> hash rejected. Giving up plugin.
Examined a total of 1 plugins.
PluginManager: saving list.
  Saving current executable hash: 537e4a87038d4b18df08f9ab00b0ef7069e82985
  89dc2a00adae7a2b4e7bce01d287b6457b3d8eea : REJECTED


Is there something I need to do in my plugin to get it to work within
retroshare-nogui?

I need to test out this plugin with retroshare running in headless mode.

Would appreciate if someone could help me here.

Thank you.

Regards,
Jeetu



On Mon, Oct 17, 2016 at 7:20 PM, jeetu.gol...@gmail.com
<jeetu.gol...@gmail.com> wrote:
> Hi Cyril,
>
> *Warning - a really really long read below, am truly sorry for that*
>
>>I suggest that you use your SSH tunnel manually: send clear packets with some 
>>ID in them (packet
>>number, whatever you prefer)
>>and make sure that you get them all on the other end of the tunnel, without 
>>major delay. Normally
>>this should work,
>
> I have been trying to get my head around this issue (yet). I have been
> taking a lot of trials, including what you suggested above. The
> following are my findings :
>
> - I wrote a python client and server to stress test the tunnel in a
> few ways and didn't find anything untoward. Of course, one thing I
> would probably like to do at some point is repeat this along with a
> hash of each packet being sent to verify integrity of data. Right now,
> my tests were a little crude.
>
> - SSH X Forwarding through my tunnel works absolutely well if I am
> using the Chromium browser remotely, for some strange reason. It
> routinely fails with gnome-calculator, gedit, libreoffice.
>
>
> - I have been in discussion with the Xorg team too to see if this had
> any co-relation with a possible graphics and / or the X server and
> they have been very helpful and we have tried out various tests to
> check if this was related to GL, etc. Have tried different desktop
> environments - Xfce, Enlightenment,etc. So far all of that has turned
> up empty.
>
>
> - I have collected Wireshark data to see what is happening on the
> wire. These packets show that failure always occurs (so far) when :
>
> SSH Server sends a packet (Usually 118 bytes) -> this gets received by
> the SSH client through the tunnel.
> The SSH Client then sends a packet (Usually 166 bytes) -> this gets
> received by the SSH server through the tunnel
>
> From here on there is a lot of traffic going on where the SSH client
> keeps sending stuff to the RS tunnel port on the same machine, however
> this data doesn't get received by the server.
>
> The SSH server also sends a few packets down the pipe, but these don't
> get received by the client.
>
> *The above is (almost) consistently what I see when the desktop has
> frozen and I stop recording Wireshark data.*
>
> Please feel free to ask for the wireshark data if need be.
>
>
>
> - What is most interesting, and this is what I realized just this
> weekend, is that the following network configurations causes the X
> forwarding over my RS tunnel to predictably and consistently either
> succeed or fail :
>
> Scenario a)
>
> Machine 1 - Desktop with Debian Unstable; acting as X Server; SSH
> client connects to this end of the RS tunnel
>
> Machine 2 - Laptop with Debian Testing; hosts the X clients, SSH
> server is at this end.
>
> Result : If the program being run is Chromium or something simple like
> xterm, sclock all is well, otherwise the X client will surely hang at
> some point.
>
> Scenario b)
>
> Machine 1 (Host VM) - Desktop with Debian Unstable as host;
> Retroshare's GUI and my tunnel plugin will run here; neither SSH
> client nor server will run on this machine.
>
> Machine 2 (Guest VM) - Ubuntu / Debian Testing / Debian Unstable as
> guest in a VM; SSH client will connect from here to the RS tunnel end
> point on Machine 1. X server will be inside the VM.
>
> Machine 3 - Laptop with Debian Testing; hosts the X clients, SSH
> server is at this end.
>
> Result: All applications will work absolutely perfectly without hanging at 
> all.
>
> Scenario c)
>
> Machine 1 (Guest VM) - Ubuntu / Debian Testing / Debian Unstable as
> guest in a VM (OS is same as above); RS GUI and my tunnel plugin will
> run inside the VM; SSH client connects to this end of the RS tunnel;
> X server will be inside this VM.
>
> Machine 2 - Laptop with Debian Testing; hosts the X clients, SSH
> server is at this end.
>
> Result : If the program being run is Chromium or something simple like
> xterm, sclock all is well, otherwise the X client will surely hang at
> some point.
>
>
> Scenario b) had lead me to believe this could be an issue related to X
> server, GL / GLX or the graphics drivers running on bare metal with
> accelerated graphics, however Scenario c) behaving exactly like
> Scenario a) puts a spanner in the works to that theory.
>
> I am unable to see the full picture here. If my tunnel is faulty then
> why work in Scenario b)? Why do things fail in configuration such as
> Scenario c) and a)?
>
> One  co-relation "could" be that as soon as the X server is the same
> as the machine with the RS GUI things fail. Yes I know this is a
> stretch.
>
> The RS client is a Qt client and could it be that when the X server
> for the remote X client is on the same machine there is a lock up
> somewhere causing a freeze. I really don't know how / why this could
> be....but am desperate.
>
> To rule out the above I wanted to run RS in non-gui mode with my
> plugin coming up and then try out the tests.
>
> When running retroshare-nogui however my plugin doesn't come up. I see
> the following on the console :
>
> Found plugin /home/jeetu/.retroshare/extensions6/libEmptyPlugin.so
>   Loading plugin...
>   Loading plugin /home/jeetu/.retroshare/extensions6/libEmptyPlugin.so
>     -> hashing.
>     -> hash = 89dc2a00adae7a2b4e7bce01d287b6457b3d8eea
>     -> hash rejected. Giving up plugin.
> Examined a total of 1 plugins.
> PluginManager: saving list.
>   Saving current executable hash: 537e4a87038d4b18df08f9ab00b0ef7069e82985
>   89dc2a00adae7a2b4e7bce01d287b6457b3d8eea : REJECTED
>
>
> I'm probably doing something wrong and I admit I haven't gone through
> the manual in depth to figure out if I need to change my plugin in
> some way to run with RS-nogui. Could you please let me know how I can
> get the plugin to work in headless mode.
>
> Also I would really appreciate any thoughts on any of the above? I
> have no clue where to turn from here.
>
>
> Once again, truly apologise for the extremely long read above. Been at
> it for months now and had a lot to report :)
>
> Thank you for your time.
>
> Regards,
> Jeetu
>
>
> On Sat, Jul 30, 2016 at 11:13 PM, jeetu.gol...@gmail.com
> <jeetu.gol...@gmail.com> wrote:
>> Hi Cyril,
>>
>> Thanks for the reply.
>>
>> Yes this sounds like a good strategy. I will try to go ahead and build a
>> python based program that will stress tests this tunnel with packets of
>> varying sizes in a bi-directional fashion. Hopefully I will be able to
>> reproduce this error and we can come closer to understanding where the
>> problem lies.
>>
>> Thank you for your help thus far and your offer to look at libretroshare :)
>>
>> Regards,
>> Jeetu
>>
>>
>> On 28 Jul 2016 13:45, "Cyril Soler" <cso...@users.sourceforge.net> wrote:
>>>
>>> I suggest that you use your SSH tunnel manually: send clear packets with
>>> some ID in them (packet
>>> number, whatever you prefer)
>>> and make sure that you get them all on the other end of the tunnel,
>>> without major delay. Normally
>>> this should work,
>>> but if it does not, and if you're able to create a working prototype that
>>> shows the bug, I can take
>>> a look at libretroshare to find the problem for you.
>>>
>>> Otherwise, because problems occur mainly when X is used, it might be that
>>> X expects some particular
>>> params of the SSH connection (which you get probably when doing "ssh -X or
>>> ssh -Y" but not using
>>> your own tunnel system). It's probably worth looking into this.
>>>
>>> On 28/07/2016 10:04, jeetu.gol...@gmail.com wrote:
>>> > Hello Cyril,
>>> >
>>> > To report back, I tried out the latest RS master codebase from github
>>> > with my plugin as per your suggestion. Unfortunately the issue is
>>> > still the same.
>>> >
>>> > While I said earlier most of the times (say 90%) the failure occurs
>>> > when there are many small bytes of approx 172 bytes following by
>>> > something like 7556 bytes or some such number (usually above 3000
>>> > bytes).
>>> >
>>> > However, there are instances when the freeze-up occurs with a
>>> > relatively short number of bytes....maybe as low as 60 or 70 bytes. So
>>> > when I tried running gedit, during startup itself, the ssh client end
>>> > froze. While most of the time I will get the main interface window to
>>> > the X client and it freezes somewhere along the line, there are also
>>> > moments such as these when it just hands early on itself.
>>> >
>>> > I also tried to log in to just a SSH console session via the RS tunnel
>>> > plugin and did a "du" on my root directory just to generate a lot of
>>> > text traffic in the form of file names scrolling as du goes through my
>>> > directory. This worked fine and didn't baulk. However this situation
>>> > is a little different from a SSH X forward since here there is only
>>> > unidrectional traffic (from ssh server to ssh client). Whereas with a
>>> > SSH forward there is a lot of bi-directional traffic. Dunno if that
>>> > helps, just trying to get as many clues as possible,
>>> >
>>> > I am also not using any message queue or buffer within my own code, so
>>> > as information comes in from ssh client or server I push it down the
>>> > pipe via sendItem. Not sure if somehow the information coming in from
>>> > these ends is going out of sync and causing a freeze-up.
>>> >
>>> > Your suggestion of this being related to the bug you had closed
>>> > wherein the SSL stream would lock up on occasion waiting for another
>>> > packed, definitely seemed to fit the profile of the above behaviour.
>>> >
>>> > Is there some other way we can capture additional data from within RS
>>> > that would help you confirm or rule out if this problem still persists
>>> > or that would help us concretely ascertain if my code is messing up
>>> > things or not?
>>> >
>>> > Since the SSH traffic is all encrypted, I am unable to verify if the
>>> > data itself gets corrupted somewhere along the line. Though if that
>>> > were to happen the SSH client / server should cut off connection with
>>> > a bad MAC / bad HMAC / Bad Packet Length or some such message if I
>>> > understand it correctly. Though to rule this out I am considering
>>> > building a python client and server that will try to push through
>>> > controlled data to and fro this pipe, and try to replicate this
>>> > freeze....hopefully something there will then be able to clarify if
>>> > data corruption is occurring and is the problem.
>>> >
>>> > As you can say I am fast approaching a state where I am desperate for
>>> > ideas ;).....any help or suggestion would help my sanity to a great
>>> > deal :)
>>> >
>>> > Thank you so much for your time and help :)
>>> >
>>> > Bye for now.
>>> >
>>> >
>>> >
>>> > On Mon, Jul 25, 2016 at 11:46 PM, jeetu.gol...@gmail.com
>>> > <jeetu.gol...@gmail.com> wrote:
>>> >> Hi Cyril,
>>> >>
>>> >> Thank you so much for taking the time to reply :)
>>> >>
>>> >>> This does not seem like a crazy amount of traffic either. I'm not sure
>>> >>> which >version of RS you're
>>> >> I've been working with RS v0.6.0
>>> >>
>>> >>> using, but a few weeks ago, I fixed a bug that would cause SSL packets
>>> >>> to >hang in the pipeline until
>>> >>> a new packet arrives. This could be the reason as your X server is
>>> >>> maybe >waiting for the stream to
>>> >>> reach a given point before continuing.
>>> >> Oh wow :) so there is hope :).....I shall download the latest master
>>> >> of RS and try again with that....will keep you posted on the progress
>>> >> I make :)
>>> >>
>>> >>> As I understand, you developed a RS service that streams SSL
>>> >>> connection >binary items through RS
>>> >>> friend connections?
>>> >>> You're most probably using RsItem objects then. Their size is limited
>>> >>> to >262144 bytes. Any packet
>>> >>> larger gets dropped.
>>> >> Yes I have been using RsItem objects...and this explains so much
>>> >> :).....is there some other class object I should use wherein this
>>> >> limit is not there / or more relaxed? Though at this moment this isn't
>>> >> a problem for me since I chunk the data and then send it. However it
>>> >> would be good to know what my options here are :)
>>> >>
>>> >>
>>> >> This definitely has given me quite a bit of clarity and hope.....I
>>> >> shall try with the latest code and well fingers crossed :)....will
>>> >> report back asap.
>>> >>
>>> >> Thank you.
>>> >>
>>> >> Bye for now
>>> >>
>>> >>
>>> >> On Mon, Jul 25, 2016 at 7:51 PM, Cyril Soler
>>> >> <cso...@users.sourceforge.net> wrote:
>>> >>> Hi!
>>> >>>
>>> >>> Congrats for your project!
>>> >>> It's nice to see that you managed to develop a plugin! See below some
>>> >>> possible answers to your problem:
>>> >>>
>>> >>> On 25/07/2016 08:09, jeetu.gol...@gmail.com wrote:
>>> >>>> Hi everyone,
>>> >>>>
>>> >>>> First, let me thank all of you for giving us Retroshare. Works
>>> >>>> beautifully :) Thanks.
>>> >>>>
>>> >>>> I am one of the developers of the open source project eBrainPool
>>> >>>> (http://ebrain.in) and for this project I have been toying with a RS
>>> >>>> plugin that will allow me to tunnel SSH traffic between RS users. The
>>> >>>> idea is to SSH forward X clients tunneled via RS.
>>> >>>>
>>> >>>> I have extended the EmtyPluginRS and taken inspiration from the VOIP
>>> >>>> plugin to extend Retroshare 0.6.0.
>>> >>>>
>>> >>>> I have managed to successfully create a tunnel between two end points
>>> >>>> - it's a very dirty hack - but I can essentially do a ssh login and
>>> >>>> work within a console session without any problem. SSH forwarding of
>>> >>>> simpler X clients such as xclock, xcalc,etc work without any issues
>>> >>>> either.
>>> >>>>
>>> >>>> With more sophisticated X clients such as gnome-calculator, gedit,etc
>>> >>>> somewhere along as I use it, my ssh client with the entire X
>>> >>>> environment freezes up. This usually happens when huge amounts of
>>> >>>> data
>>> >>>> need to be sent together by the SSH client. For e.g. if a button is
>>> >>>> pressed in gnome-calculator then at times it is liable to freeze up.
>>> >>>>
>>> >>>> On further investigation I have realized that the button press
>>> >>>> translates to a huge number of messages coming in from the SSH client
>>> >>>> of 170 bytes or so and a final message of approx 3556 bytes or so
>>> >>>> before things freeze up. I then have to kill my ssh client in console
>>> >>>> to regain access to my X environment.
>>> >>> This does not seem like a crazy amount of traffic either. I'm not sure
>>> >>> which version of RS you're
>>> >>> using, but a few weeks ago, I fixed a bug that would cause SSL packets
>>> >>> to hang in the pipeline until
>>> >>> a new packet arrives. This could be the reason as your X server is
>>> >>> maybe waiting for the stream to
>>> >>> reach a given point before continuing.
>>> >>>> I have tried both approaches in my plugin - with a separate thread to
>>> >>>> accept input to / from the client, and also without a separate
>>> >>>> thread.
>>> >>>> The issue and point of failure is the same.
>>> >>>>
>>> >>>> Granted I definitely do not understand the RS architecture well
>>> >>>> enough
>>> >>>> and I fear that it is this lack of understanding that is causing this
>>> >>>> problem.
>>> >>>>
>>> >>>> I am not using any sort of message queue and as data is being
>>> >>>> received
>>> >>>> from the client or server I am simply pushing it down the pipe (via
>>> >>>> sendItem).
>>> >>>>
>>> >>>> I have noticed that extremely large blocks of data (say 100k or such)
>>> >>>> simply disappear and are not received at the other end. Therefore I
>>> >>>> chunk data from ssh server or client into blocks of 16384. I have
>>> >>>> tried different block sizes but it doesn't help the bug I have above.
>>> >>> As I understand, you developed a RS service that streams SSL
>>> >>> connection binary items through RS
>>> >>> friend connections?
>>> >>> You're most probably using RsItem objects then. Their size is limited
>>> >>> to 262144 bytes. Any packet
>>> >>> larger gets dropped.
>>> >>> I don't know about the released version, but the current trunk
>>> >>> displays some information about that
>>> >>> when it happens.
>>> >>>
>>> >>>
>>>
>>

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Retroshare-devel mailing list
Retroshare-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/retroshare-devel

Reply via email to