Short: Messenger client (File trans. & Avatars) Author: trebs@iinet.net.au (Michael Trebilcock) Uploader: trebs iinet net au (Michael Trebilcock) Type: comm/tcp Version: 1.2 Re-upld Architecture: generic (19 Jan 10) Second re-upload! This is horrible. First one to fix it for 68k, second one to remove the "Disabling direct connections" line when running on 68k, and also to make the OS3 style icons work properly. OS4 users: rxsocket.library may cause a DSI error. Click "Ignore" and it will not appear again until the next system reboot. So far I have not encountered this on OS4.1 Update 1. Note: When live timestamps are enabled, copy text from chat windows by typing a letter first, and then proceed to drag over the text. Installing KingCON is recommended to enable scrollbars in CON windows. The latest OS4 compatible KingCON is included in AmiKit. Updates at http://members.iinet.net.au/~trebs/AmiMSN/ Introduction ============ AmiMSN is a full featured MSN Messenger client for the Amiga. It is written in AREXX and uses rxsocket.library, rexxdossupport.library, and rexxsupport.library. AmiMSN can send and receive files using the MSNFTP and MSNP2Pv1 protocols. For MSNFTP, the sender must not be behind a firewall. The MSNP2Pv1 implementation sends and receives through the switchboard if a direct connection cannot be established. AmiMSN is also currently the only MSN client written for the Amiga that receives & sends avatar images, and displays email notification messages. It communicates directly with Microsoft's own MSN messenger servers using the MSNP11 protocol. It spoofs as MSN Messenger 8.1.0178 for maximum compatibility. It is primarily a console client, but has been coded to allow any IRC client to act as it's GUI. It is similar to BitlBee and adheres closely to RFC 1459 for compatibility with most IRC clients. Features ======== - Spoofs as MSN Messenger 8.1.0178 - Automatically set IDLE status after X amount of minutes. - IRCd mode similar to BitlBee but closer RFC 1459 compliance. - Complete contact list management. - Some emoticons automatically converted to descriptive text. - Status sorting (Online users shown first in contact list). - Uses automatic adding and privacy settings. - Command to save settings/database in a human readable form. - Communicates directly with the MSN servers, no need for a Jabber account or the like. - Debug option to save all MSN server I/O to a log file. - Communicates in MSNP11 (many other clients use MSNP8). - Automatic ANSI<->Unicode (and vice versa) charset conversion. - Personal Messages support. - OS3 and OS4 compatible. OS4 is automatically detected. - Supports file sending/receiving between all major clients, aMSN, WLM, Windows Messenger, Pidgin, Emesene and Adium. - Retrieves and sends avatar images to all major clients. - Direct connection file transfers utilising uPnP. Installation ============ Place AmiMSN in a directory of your choice, and edit the AmiMSN.cfg file. If you are using a WIP (work in progress) version with a .rexx file, then type "RX AmiMSN" to run it.. Alternatively type "protect AmiMSN.rexx +s" and you will be able to run the .rexx as an executeable. CStat is for the initial connection status. It is the status you will login with. 0 = Hidden 1 = Online 2 = Busy 3 = Be Right Back 4 = Away 5 = On The Phone 6 = Out To Lunch 7 = Idle You can bypass CStat by starting AmiMSN with an argument, for example: 6. Work:AmiMSN> AmiMSN 1 6. Work:AmiMSN> AmiMSN IRCd 1 To enable automatic smiley-to-text conversion, simply have Emoticons.txt in the program directory. Configuration file settings: "Allow" is needed to make sure no outside access is permitted to AmiMSN's IRCd. Normally keep this at 127.0.0.1 unless you are connecting from a LAN. "AIdle" is to set the amount of minutes to be idle for, before automatically setting your status to "Idle". Set to 0 to disable. "Avtar" needs to be set to the path of your .png avatar file. This file must be of the size 96x96 or 96x72 with a bitplane depth of 24 or 32bits and must be saved in PNG format. "TStmp" has 3 modes. 0 = Off, 1 = On (not own text), 2 = Live timestamp. This setting effects the timestamps in chat windows. Todo ==== - Updates the AmiMSN.db file when someone changes their nickname. (IRC) Contact list management. Read "Usage" for more info. Scheduled for final AmiMSN 1.3: - Direct connection file transfers in both directions. - Remembers your personal message. - Caches avatar images. - Ability to abort sending a file mid-transfer. - Ctrl-C'ing a chat window closes switchboard session. - Chat sessions can now be logged. Usage ===== When you run AmiMSN, it will connect, and then show a command list. Type a command to show the usage. Your Avatar can be changed at any time using the AVATAR command. If your email address is not verified, you must go to one of these URLs: http://memberservices.passport.net/uiemailval.srf?id=507&lc=1033&ru=http://messenger.msn.com/ https://accountservices.passport.net/uiemailval.srf?lc=1031&warnd=0&lc=1031  AmiMSN can act as an IRC server. Each group will appear as a channel, and the contacts in that group will appear as users in the channel. Opped users are Online. Voiced users are Away or Busy, and standard users are Offline. As of yet, complete contact list management is not available in IRC mode. To send a message to a contact, just private message them as you normally would any other user on IRC. To run as an IRC server, type "AmiMSN IRCd", then simply point AmIRC to server 127.0.0.1 port 6667. There is a timeout of 20 seconds after you start AmiMSN, if you do not connect to the IRCd during that time, it will automatically revert to console mode. This IRC daemon mode provides AmiMSN with some extra features: - Any IRC client can now act as AmiMSN's GUI. - The WHOIS command shows Idle and Signon times for each contact. - IRC client features such as sounds can be used, etc.. - You can rename everyone on your contact list.. An MOTD (Message Of The Day) file, AmiMSN.motd will be used if it exists. For nickname renaming in IRCd mode, create a file called Aliases.txt, and have their .NET passport (email) as the first word, and the nickname you choose for them, as the 2nd word. Example: abc123@hotmail.com testnick Requirements ============ rxsocket.library (ftp://de.aminet.net/pub/aminet/comm/tcp/rxsocket.lha) rxlibnet.library (ftp://de.aminet.net/pub/aminet/comm/tcp/rxsocket.lha) rexxdossupport.library (ftp://de.aminet.net/pub/aminet/util/rexx/rexxdossupport.lha) rexxsupport.library (comes with AmigaOS) ixemul.library (for OS3, ftp://de.aminet.net/pub/aminet/util/libs/ixemul-48.0.lha) curl (For 68k. Rename the .020, http://aminet.net/comm/tcp/curl-7.10.5.lha) OpenSSL (For OS4 only) miniupnpc (included in archive) Credits ======= Thanks to all of the people on www.hypothetic.org and their forums for providing the necessary information needed to code an MSN Messenger client. Thanks to msnpiki for providing documentation on the latest MSN protocols. Thanks to all those on the fanatic.co.nz forum. Special thanks to: Frédéric Laprise (ShdW) for giving me ideas and example code, and extensive testing which has led to getting rid of many bugs. James Carroll (jahc) for being available whenever I need to test code. Martin Merz for creating some fantastic icons for me. Adam (aka Rebel) from Underground Arcade for creating the old-style WB icons. Anyone else I forgot to thank. Glossary ======== (FL) Forward list = People on your contact list (RL) Reverse list = People who have you on their contact list (BL) Block list = People you have blocked from seeing you online (AL) Allow list = People who are allowed to see you online (PL) Pending list = People who are pending authorization Disclaimer ========== Windows Live Messenger and its protocol is copyrighted by Microsoft. I do not take any responsibility in how this program is used, or for any damage caused by this program. You use this at your own risk. License ======= AmiMSN is free to use, modify, and re-distribute. Any publically available modification of AmiMSN must make a note in the archive or files provided, that it does not respresent that of the official version, and a link to the official publication of AmiMSN must be provided. Reasonable attempts to contact me must be made before AmiMSN can ever be considered Abandonware. History ======= 1.2 (17 January 2010): - Minor memory leak fix. - Launch from icons. PNG/NewIcon/Old-style icons included. - Removal of MD5SUM. Using function in rxlibnet. - Only says "is now known as" if they were already online. - "User is typing.." message sent to recipients. This is only now possible due to the new switchboard code in 1.1. - Changed text font (that will be shown on recipients side) from MS Sans Serif to Segoe UI - Recognises when WLM aborts a file being sent to you. - Thumbnail data sent from Windows Live Messenger when an image file is offered, is saved to RAM:Preview.png - Obtain ticket quicker on OS4. - If someone offers you a file without saying anything first, a window will now open. Increases compatibility with some clients that use a new switchboard session for file transfers. - Small change to try to stop clients from requesting your avatar too often. - A few minor optimizations. - Fixed long standing bug when removing a group in IRCd mode. Anyone who was online in the group/channel that was removed, the WHOIS reponse would still show them being in that now non-existant channel. - CRUDE Direct connection support for receiving when listening. Should work in the majority of cases when receiving from WLM. Tested successfully also with aMSN. - Initial mailbox data notifications over 1024 bytes caused AmiMSN to stall at "Checking who is online". - Fixed small bug to prevent reading wrong amount of bytes from a socket in rare circumstances. 1.1 (04 October 2009): - Automatic Idle to Online only triggered for actual chat messages. - MSNP2Pv1 file receiving support. - LIST 1 will list only online contacts. - Modified the timestamping code to avoid glitches. Looks nicer now! - Major overhall of the switchboard code, now integrated into the main loop, allowing greater control of chat windows. IRCd mode now uses less memory and has increased responsiveness. - Now sends, receives & displays avatar images! Check .readme for info. - Includes a native OS4 executable of Base64. - No longer displays email notifications if all fields are "0". - Detects OS4 on Classic systems. - Main window is now timestamped. - Changed the default dimensions of chat windows. 1.0 (14 September 2009) - All changes since 05 June 04: - Skipped to version 1.0 because of this major update. - Fixed: Removed usage of Lower(). I didn't know it needed rexxkuang11.library - Fixed: Now works with all .NET passports. (Previously only worked with hotmail.com accounts) - File transfer via MSNFTP support added. Sender must accept inbound connections. - Changed: AmiMSN.cfg now requires you set a default initial status, or you may start AmiMSN with an argument. Read "Installation" above. - Fixed: ReadCList() function couldn't parse a contact that was pending authorization and not in your forward list. This also cause the DETAILS command to crash AmiMSN when it encountered this. - Fixed: ADDUSER would crash AmiMSN if you tried adding someone who was in your database but not on your forward list. - Fixed: ADDUSER would crash AmiMSN if you tried to add someone who was already in your contact list. - Fixed: RX now only has to be in your path (run C:PATH to have a look). - Fixed: Breaking the program with Ctrl-C will behave nicely. - Changed: Everything placed into one main executeable/script. - Fixed: You now can't initiate a conversation with someone offline. - Fixed: In some cases AmiMSN would try reading a message that wasn't there. - Added: P4-Context header is now parsed. Needed for BOT2K3. - Added: Notification server disconnection messages now parsed. - Added: AmiMSN.cfg now has a version number. - Added: Smileys are converted to descriptive text. - Fixed: Crashed if non-integer parameter was used for group management. - Speed optimizations in processing status changes. - Changed: IM window now shows the email address of participants. - Fixed: Accents now properly encoded for the RENAME command. - Added: People on your "Pending list" now added to your reverse list. - Added: Handling of hotmail email notification messages. - Added: Revamped the DETAILS command. It is now much more presentable. - Added: Automatically set your "Idle" status after x amount of minutes, and a command to change your auto-idle settings without restarting. - Added: BLOCK and UNBLOCK commands to manipulate your block list. - Changed: OUT command has now been changed to QUIT. - Changed: Now communicates in the MSNP11 protocol. You will require bc for the challenge response algorithm. - Fixed: Unknown content received in a conversation is now ignored. - Fixed: Messages with no text are properly shown. - Added: Debug log file is now time-stamped. - Added: ALLOW and REMALLOW commands to manipulate your allow list. - Added: MSNP11 PSM (Personal Message) support. Use the PSM command. - Fixed: No longer shows useless status information, for example someone changes their status from Online, to Online. - Added: Extra error checking for ADDUSER/REMUSER. - Fixed: Initial online list is now properly parsed again. - Changed/Fixed: Revamped the RemHex() function to properly parse %25's, and filter out codes from the "Messenger Plus!" addon. - Now shows in DETAILS command if someone has an MSN Spaces account. - Changed: Now uses ASL requesters instead of reqtools requesters. - Changed: STATUS command accepts a numeric parameter to change status. - Changed: Stunnel removed. OpenSSL for PPC, curl for 68k. - Fixed: Advertisements ignored and no longer cause issues. - Added: MSNP2P v1 file transfer support. Compatible with all major clients. Sending files behind a firewall is now possible. - Umlauts, dipthongs & accents are decoded in a different order due to unicode sometimes being encoded in HTML hex codes. ', " etc.. converted. - Chat windows are timestamped using ANSI escape codes. - Email addresses no longer case sensitive. % - IRCd support heavily updated. Changed: Removed PIPE: usage and replaced it with xxxClip(). Fixed: AmiMSN-IM sent the wrong amount of chars when a message in unicode format was received in IRCd mode, this caused the whole IRCd to collapse. The IRCd should at least be "stable" now. Fixed: If a person invites another into the conversation, you will be aware of it instead of all messages appearing to come from the original contact. Fixed: "Cannot send to channel message" now sent properly. Changed: To avoid timeouts, there is now a time limit in which you must join the IRCd, or it will automatically revert to console mode. Added: Idle time is reset for user in IRCd mode when they message you. Added: As in accordance with RFC 1459, the IRCd will show the away message for each PRIVMSG you send to a user. Added: Setting /AWAY and /BACK on the IRCd will set your MSN status too. Fixed: Incorrectly sent "No text to send" error message if you tried sending a blank message to someone. Added: Aliases.txt support for nickname renaming. Passport as first word, alias as 2nd word. I.E: abc123@hotmail.com testnick Fixed: "No such channel" now sent when parting a channel you are not in. Fixed: No error message when trying to join a channel you're already in. Fixed: You can now send USER before NICK when connecting to the IRCd. Added: AmiMSN is now an existing nickname. This will prevent "AmiMSN: No such nick/channel" in some certain circumstances. Added: /NAMES support to list who is in a channel. Changed: For client compatibility reasons, you will now be allowed to leave channels, but you will be forced to rejoin them. Changed: The "realname" field of a WHOIS reply now shows their MSN handle. Changed: Channel topics are no longer locked. Added: You now join each channel after checking who is online. 0.6 (05 June 04): - IRCd: Nicknames in IRCd mode are now the prefix of their email address, this will eliminate any problems with commas in their nickname, as commas are not permitted in email addresses. It also looks a bit cleaner. - IRCd: Optimized IRC reading routines. - IRCd: Shows proper "You're not channel operator" message when you try to change a channel mode. - IRCd: You can no longer change your nickname to one currently in use. - IRCd: You can also now change the case of your nickname. - Fixed: Problems when adding a group with a space in the name. - Optimized the contact list reading function. - Microsloth finally fixed their MSNP10 protocol. Had to rearrange a few bits of code to get it working properly again when your .db file matches the one on the MSN server. If you've been having problems with 0.5, delete your .db file before using 0.6. Discovered an AmIRC bug whilst implementing REMGROUP in IRCd mode: If you have "Use pages by default" enabled, and you are forceably brought into a channel, and never click on the channel tab to see who's in it, and then leave the channel (still never clicking on the tab), AmIRC freezes. This should really be fixed, as /fake is not the only way to do it, there is SAJOIN on some IRCds. All they have to do is SAJOIN and SAPART you while you aren't paying attention, for it to freeze. 0.5 (27 May 04): - DETAILS command fixed. Checking for Automatic adding setting was the wrong way around. - DETAILS command now shows both group number and group ID. - LIST command now shows changes from REMGROUP/ADDGROUP/RENGROUP. - Small automatic adding bug fix. - No longer requires MiamiNetStat. Found an example non-blocking script that uses RxSocket.library, and learnt how to do asynchronous arexx from that. This is a major update as Miami(Dx) is no longer required to be running. As a result, conversations will have less lag. You can now use this within WinUAE and other emulators with an emulated bsdsocket.library. - TCP: device is no longer a requirement. - Converts unicode characters to ANSI in conversations. - Debug log file option. Enable by adding Debug = 1 to .cfg file. - !! IRC daemon mode !! Read below in Usage for more information. - Pings the server every 60 seconds to prevent server from disconnecting you after being away for too long. - AUTO and PRIVACY command now case-insensitive. - Fixed: You can now initiate conversations in rapid succession. - Fixed a bug when listing contact list after adding someone to it after someone changed their status since you logged on. Follow me? heh 0.4: - Now works with normal AND migrated accounts. ^^ If your account is not migrated, you may need to delete the AmiMSN.db file and have it re-generated again. - LIST now shows people not in a group. - Contact list now sorted with people Online shown first. - New commands ADDUSER, REMUSER, ADDGROUP, REMGROUP RENGROUP, HELP, OUT and RAW - Local contact list (LIST) updated after add/remove. ^^ Doesn't work with ADDGROUP/REMGROUP/RENGROUP yet. - Fixed potential problems when you first connect and change a setting or start a conversation before the server sends you a challenge ping. - More error checking. - AmiMSN now compressed into an exe, and configuration settings placed in AmiMSN.cfg - Fixed small problem with "Lost connection to" before a conversation even starts. - MiamiNetStat now used every 4 seconds instead of 5. - DETAILS command now fixed for people who aren't on your FL list. 0.3: - "On The Phone" & "Out To Lunch" status bugs fixed. - Re-coded to work with the newly introduced MSNP10 protocol 0.2: - "Hidden" status bug fixed - Rename your nickname added - Checks for MD5SUM, and quits if it cannot find it - DETAILS command now reads from memory and saves to file - PRIVACY and AUTO commands added - Optimizations here and there - Nickname is shown when someone goes offline - LIST now sorts people into their groups - MiamiNetStat is now protected from deletion - Usage for REMOVE command fixed - Only one MNS.tmp file for all connections - Removed unnecessary Say() function in AmiMSN-IM.rexx - GTC (aka AUTO) setting now takes affect - Invite people into your conversation. 0.1: - First aminet release