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, [EMAIL PROTECTED] 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:[EMAIL PROTECTED] # > # # > ############################################### > > > 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="[EMAIL PROTECTED]" 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="[EMAIL PROTECTED]" 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="[EMAIL PROTECTED]" 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="[EMAIL PROTECTED]" 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="[EMAIL PROTECTED]" 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="[EMAIL PROTECTED]" 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="[EMAIL PROTECTED]" 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="[EMAIL PROTECTED]" 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="[EMAIL PROTECTED]" 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="[EMAIL PROTECTED]" 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="[EMAIL PROTECTED]" 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="[EMAIL PROTECTED]" 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="[EMAIL PROTECTED]" 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="[EMAIL PROTECTED]" 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="[EMAIL PROTECTED]" id="file_1"> > <query xmlns="jabber:iq:oob"> > <abort/> > </query> > </iq> _______________________________________________ jdev mailing list [EMAIL PROTECTED] http://mailman.jabber.org/listinfo/jdev
