[JDEV] MIU, was: MSN transport questions

harmeet_im at kodemuse.com harmeet_im at kodemuse.com
Thu Sep 4 01:41:58 CDT 2003

----- Original Message -----
From: maqi at jabberstudio.org
> What are the current features of MIU?

Currently MSNP8 is supported for send/recv messages, buddy list
management and status.  AIM and ICQ is supported for send/recv
messages, budddy list including nick names retrieval & buddy presence
notifications.  Yahoo is in very early stage.

I will be adding a scope document shortly with web site for planned
features with some timeline.
Here is a precursor:

- Tools to track Protocol changes (use it to figure out deltas from
  Oscar spec currrently)
- Support for AIM, ICQ, MSN, Yahoo. IRC and possibly Jabber to
- Library to support basic messeging but will contain processing
  data units for additional features.
- UI for basic IM. Could add direct IM, file transfer etc. if folks
  help out. This is to allow people to use the library on daily basis
  and help track IM network issues. Also allows developers to build UI
  as they Like it.  
- Code Generation. Bulk of code for all IM Protocols would be
  generated. I am currently settling on Webmacro for this. The
  communication part would be common and the library would be easily
  portable from Java, TCL, C++ etc.

More in a scope and design document prob. in a week or so.

> AIM/ICQ SSI (server side buddy list) support?

Partly. SSI is a large set, but I am working on it. Code generator for
AIM generates some of SSI stubs, I have handcoded some, but this area
needs work and re-work

> Full presence support?

for AIM, ICQ, MSN presence is tracked. I expect this would be done. If
you look at the project and spot holes or if I didn't understand the
breadth of this question please let me know.

> By what clients is MIU used?

It has its' own UI client and a few people use it. My employer is
financing (part) of my time on it.
There will be at some point nightly/weekly test runs and a good
attempt to fight against library atrophy.  The desire is to have a
long term, viable open source project with liberal Apache style
license. Hope is that folks like yourself may get interested and
contribute to build a healthy community. Contributions, participation
is very wellcome if MIU project interests you (external site will be

Regd C/Java debate:
  My 2 cents are that one could generate code for PDUs and use
  either. I was thinking of generating code for Java, Itcl(OO variant
  of TCL) and possible C++ and C#.  would be good too. Generation is
  currently not great for now and nothing I could point to, but trying
  to understand a good way. If someone wants to help out that is
  awesome. I think a better forum would be miu-devel list at
  sourceforge.net but ideas are of course more important than forum.

A few folks asked me offline about MSNP8 details. I am responding here
as more than one person is interested in this. There is documentation
for MSNP8, but it is a mess. I am not going to describe MSNP7 as it is
documented at hypothetic.org. I am also assuming one knows MSN P7
well. USR command is the key change so revising USR cmd and login steps
for MSN P7 may be useful.

Here is what I had to do in authentication part. (haven't yet found any other issues)
- Get rid of INF commands. (just don't send them)
- Change USR Authentication from MD5 to CKI.

here is the USR sequence.
C: USR <transactionID> TWN I <userid>   // I means initate
[S: <may issue redirect>]
S: USR <transactionID> TWN S .. lc=...
take the part from 'lc=' till end of line this is the challenge.

Now start SSL.  ( see
// get the host to do SSL authentication against.
1. Fetch https://nexus.passport.com/rdr/pprdr.asp
2. Look for response header PassportURLs
3. Split the header value on ','
4. Look for part that starts with "DALogin=". Extract loginURL(host&URI)

// now authenticate
1. Make get request against LoginURL from DALogin header above.
2. In get request add this header Authorization: Passport1.4
   userid>,pwd=<urlencoded password>,<challenge got from USER
   <transactionID> TWN S <challenge>
3. From resonse read 'Authentication-Info' header
4. Split response value on ',' and obtain value within single
  quoutes in part that starts with from-pp. This is the authentication
  value that allows you to to finish login process. Let us call this

close ssl and go back to USR login process.
C: USR <transactionID> TWN S <auth-token>
Server should respond with
S: USR <transactionID> OK

And then you are in MSNP7 and hypothetic.org world.

Feel free to build from this documentation or use the library. I
can modify the library if you need something for easier reuse. 


More information about the JDev mailing list