[JDEV] p2p filetransfer proposal
Julian Missig
julian at jabber.org
Tue Feb 12 21:02:47 CST 2002
call it whatever you want... edrin:iq:filetransfer... whatever.
On Tue, 2002-02-12 at 21:41, aliban at gmx.net wrote:
> So what do you suggest? i will need something ;)
>
> > This does *not* comply with the jabber:iq:oob namespace, you have to
> > call it something else.
> >
> > On Tue, 2002-02-12 at 20:45, aliban at gmx.net wrote:
> > > hi,
> > > i just wrote this paper just because i need such a thing quite soon
> > > for my own client.
> > >
> > > greetings, Edrin
> > > any comments are welcome!
> > > (maybe i should switch the methode of comparing the filesize to
> > > comparing a file checksum... any idea how to calculate this?)
> > >
> > > ###############################################
> > > # #
> > > # new File Transfer proposal #
> > > # #
> > > ###############################################
> > > # PROJECT HISTORY #
> > > # 12.02.2002 v.1.0 experimental #
> > > # #
> > > ###############################################
> > > # #
> > > # This is a description of the XML and TCP #
> > > # part of the file transfer used in #
> > > # combination with jabberFS (jabber File #
> > > # Sharing). #
> > > # The same methodes are used for filetransfer #
> > > # with Skabber, a jabber client for Windows #
> > > # #
> > > # This project is maintained by #
> > > # JID:Edrin at amessage.de #
> > > # #
> > > ###############################################
> > >
> > >
> > > v.1.0 experimental
> > >
> > > Faust´s IP: 12.34.56.78
> > > Mephisto´s IP: 66.66.66.66
> > >
> > > <connecting/> client wants the other client to open a port
> > > <listening/> client opened a port
> > > <append/> client wants only a part of a file (after byte XYZ)
> > > <filebytesdone>13000</filebytesdone> means that the client has
> > > already 13000 bytes of the file...
> > > <ip></ip> of the </connecting> side should be optional (if you are
> > > in an intranet you could
> > > only fill it with 192.168.0.xy and that would not be helpfull)
> > > <abort/> if one side wants to abort simply send a <abort/> and
> > > both sides will cleanup.
> > >
> > > jabberFS is a component for jabberd i´m writing soon. it will store
> > > filenames in a mysql database
> > > id="file_1" should be associated with a socket
> > >
> > >
> > >
> > > the listening should have a timeout. if the listening socket timeouts
> > > (nobody connected)
> > > it should send <timeout/>
> > >
> > > <iq type="result" to="Mephisto at goethe.de" id="file_1">
> > > <query xmlns="jabber:iq:oob">
> > > <timeout/>
> > > </query>
> > > </iq>
> > >
> > > if the </timeout> occures this might be caused because someone
> > > is behind a firewall and does not know it.
> > > you might automatically switch the connecting/listening side,
> > > please contact me about this case so we can discuss and
> > > develp this event.
> > >
> > > a running filetransfer can simply be stoped by closing the socket.
> > > no further xml exchange would be
> > > neccessary.
> > >
> > > /******************************************************************/
> > > SEND A FILE TO SOMEONE
> > > /******************************************************************/
> > >
> > > 1. SEND_PROPOSAL
> > > Faust wants to send a file to Mephisto
> > >
> > > <iq type="set" to="Mephisto at goethe.de" id="file_1">
> > > <query xmlns="jabber:iq:oob">
> > > <connecting/>
> > > <ip>12.34.56.78</ip>
> > > <filename>my_girl.jpg</filename>
> > > <filesize>35012<filesize>
> > > <desc>A cool girl i met yesterday.</desc>
> > > </query>
> > > </iq>
> > >
> > >
> > > 2.a ACCEPT SEND_PROPOSAL
> > > Mephisto accepts the file
> > >
> > > <iq type="result" to="Faust at goethe.de" id="file_1">
> > > <query xmlns="jabber:iq:oob">
> > > <listening/>
> > > <ip>66.66.66.66</ip>
> > > <port>6666</port>
> > > <filename>my_girl.jpg</filename>
> > > <filesize>35012<filesize>
> > > <desc>A cool girl i met yesterday.</desc>
> > > </query>
> > > </iq>
> > >
> > > Mephisto accepts the file and indicates that he has already 13000
> > > bytes of it.
> > > He is listening on port 6666 and He will append the remaining
> > > 35012-13000 bytes
> > > to the part of the file he already has. He will close the tcp
> > > connection on port
> > > 6666 after he received the 35012-13000 bytes.
> > >
> > > <iq type="result" to="Faust at goethe.de" id="file_1">
> > > <query xmlns="jabber:iq:oob">
> > > <listening/>
> > > <append/>
> > > <ip>66.66.66.66</ip>
> > > <port>6666</port>
> > > <filename>my_girl.jpg</filename>
> > > <filesize>35012<filesize>
> > > <filebytesdone>13000</filebytesdone>
> > > <desc>A cool girl i met yesterday.</desc>
> > > </query>
> > > </iq>
> > >
> > > Mephisto is behind a firewall and responds with a connect
> > > indicating that Faust
> > > must create a listening socket.
> > >
> > > <iq type="result" to="Faust at goethe.de" id="file_1">
> > > <query xmlns="jabber:iq:oob">
> > > <connecting/>
> > > <append/>
> > > <ip>66.66.66.66</ip>
> > > <filename>my_girl.jpg</filename>
> > > <filesize>35012<filesize>
> > > <filebytesdone>13000</filebytesdone>
> > > <desc>A cool girl i met yesterday.</desc>
> > > </query>
> > > </iq>
> > >
> > > <iq type="set" to="Mephisto at goethe.de" id="file_1">
> > > <query xmlns="jabber:iq:oob">
> > > <listening/>
> > > <append/>
> > > <ip>12.34.56.78</ip>
> > > <port>1234</port>
> > > <filename>my_girl.jpg</filename>
> > > <filesize>35012<filesize>
> > > <filebytesdone>13000</filebytesdone>
> > > <desc>A cool girl i met yesterday.</desc>
> > > </query>
> > > </iq>
> > >
> > > 2.b DECLINE SEND_PROPOSAL
> > > Mephisto does not want this file.
> > >
> > > <iq type="result" to="Faust at goethe.de" id="file_1">
> > > <query xmlns="jabber:iq:oob">
> > > <abort/>
> > > </query>
> > > </iq>
> > >
> > > /******************************************************************/
> > > GET A FILE FROM SOMEONE
> > > /******************************************************************/
> > >
> > > 1. GET_PROPOSAL
> > > Faust wants to get a file from Mephisto
> > >
> > > <iq type="get" to="Mephisto at goethe.de" id="file_1">
> > > <query xmlns="jabber:iq:oob">
> > > <connecting/>
> > > <ip>12.34.56.78</ip>
> > > <filename>song_hell.mp3</filename>
> > > <desc>standart jabberFS file request</desc>
> > > </query>
> > > </iq>
> > >
> > > 2.a ACCEPT GET_PROPOSAL
> > > Mephisto accepts it and offers the file on port 6666.
> > >
> > > <iq type="result" to="Faust at goethe.de" id="file_1">
> > > <query xmlns="jabber:iq:oob">
> > > <listening/>
> > > <ip>66.66.66.66</ip>
> > > <port>6666</port>
> > > <filename>song_hell.mp3</filename>
> > > <filesize>3050122<filesize>
> > > <desc>standart jabberFS file request</desc>
> > > </query>
> > > </iq>
> > >
> > > 1. GET_PROPOSAL_RESUME (resume broken file)
> > > Faust wants to get a file from Mephisto. He has already 66000
> > > bytes of the
> > > 3050122 bytes big file.
> > >
> > > <iq type="get" to="Mephisto at goethe.de" id="file_1">
> > > <query xmlns="jabber:iq:oob">
> > > <connecting/>
> > > <append/>
> > > <ip>12.34.56.78</ip>
> > > <filename>song_hell.mp3</filename>
> > > <filesize>3050122<filesize>
> > > <filebytesdone>66000</filebytesdone>
> > > <desc>standart jabberFS file request</desc>
> > > </query>
> > > </iq>
> > >
> > > 2.a ACCEPT GET_PROPOSAL_RESUME (resume broken file)
> > > Mephisto accepts it and offers this file on port 6666.
> > >
> > > <iq type="result" to="Faust at goethe.de" id="file_1">
> > > <query xmlns="jabber:iq:oob">
> > > <listening/>
> > > <append/>
> > > <ip>66.66.66.66</ip>
> > > <port>6666</port>
> > > <filename>song_hell.mp3</filename>
> > > <filesize>3050122<filesize>
> > > <filebytesdone>66000</filebytesdone>
> > > <desc>standart jabberFS file request</desc>
> > > </query>
> > > </iq>
> > >
> > > if Mephisto has another file with the same name but other size, he
> > > will offer this, too.
> > > Faust can deside to accept this or to send a </block>
> > >
> > > <iq type="result" to="Faust at goethe.de" id="file_1">
> > > <query xmlns="jabber:iq:oob">
> > > <listening/>
> > > <ip>66.66.66.66</ip>
> > > <port>6666</port>
> > > <filename>song_hell.mp3</filename>
> > > <filesize>3050743<filesize>
> > > <desc>standart jabberFS file request</desc>
> > > </query>
> > > </iq>
> > >
> > > Mephisto is behind a firewall and responds with a connect
> > > indicating that Faust
> > > must create a listening socket.
> > >
> > > <iq type="result" to="Faust at goethe.de" id="file_1">
> > > <query xmlns="jabber:iq:oob">
> > > <connecting/>
> > > <append/>
> > > <ip>66.66.66.66</ip>
> > > <filename>song_hell.mp3</filename>
> > > <filesize>3050122<filesize>
> > > <filebytesdone>66000</filebytesdone>
> > > <desc>standart jabberFS file request</desc>
> > > </query>
> > > </iq>
> > >
> > > <iq type="set" to="Mephisto at goethe.de" id="file_1">
> > > <query xmlns="jabber:iq:oob">
> > > <listening/>
> > > <append/>
> > > <ip>12.34.56.78</ip>
> > > <port>1234</port>
> > > <filename>song_hell.mp3</filename>
> > > <filesize>3050122<filesize>
> > > <filebytesdone>66000</filebytesdone>
> > > <desc>standart jabberFS file request</desc>
> > > </query>
> > > </iq>
> > >
> > > 2.b. DECLINE GET_PROPOSAL
> > > Mephisto does not want to offer or does not have this file.
> > >
> > > <iq type="result" to="Faust at goethe.de" id="file_1">
> > > <query xmlns="jabber:iq:oob">
> > > <abort/>
> > > </query>
> > > </iq>
> >
> >
> > _______________________________________________
> > jdev mailing list
> > jdev at jabber.org
> > http://mailman.jabber.org/listinfo/jdev
> >
>
>
> _______________________________________________
> jdev mailing list
> jdev at jabber.org
> http://mailman.jabber.org/listinfo/jdev
--
email: julian at jabber.org
jabber:julian at jabber.org
More information about the JDev
mailing list