From 2d043179f4723b15eb63df92d6cdb031511f10ee Mon Sep 17 00:00:00 2001 From: Vadim Dashevskiy Date: Sun, 2 Nov 2014 10:29:30 +0000 Subject: MSN protocol stopped working (R.I.P), moved to deprecated, banned by the core, delete mask in PluginUpdater was created git-svn-id: http://svn.miranda-ng.org/main/trunk@10896 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/!Deprecated/MSN/Docs/gpl.txt | 340 +++ plugins/!Deprecated/MSN/Docs/history-msn.txt | 529 ++++ plugins/!Deprecated/MSN/Docs/readme-msn.txt | 125 + plugins/!Deprecated/MSN/Docs/todo-msn.txt | 10 + plugins/!Deprecated/MSN/Docs/translate-msn.txt | 169 ++ plugins/!Deprecated/MSN/msn_10.vcxproj | 260 ++ plugins/!Deprecated/MSN/msn_10.vcxproj.filters | 151 ++ plugins/!Deprecated/MSN/msn_12.vcxproj | 263 ++ plugins/!Deprecated/MSN/msn_12.vcxproj.filters | 151 ++ .../!Deprecated/MSN/proto_msn/Proto_MSN_10.vcxproj | 131 + .../MSN/proto_msn/Proto_MSN_10.vcxproj.filters | 23 + .../!Deprecated/MSN/proto_msn/Proto_MSN_12.vcxproj | 135 ++ .../MSN/proto_msn/Proto_MSN_12.vcxproj.filters | 23 + plugins/!Deprecated/MSN/proto_msn/res/Away.ico | Bin 0 -> 5430 bytes .../!Deprecated/MSN/proto_msn/res/Invisible.ico | Bin 0 -> 5430 bytes plugins/!Deprecated/MSN/proto_msn/res/Occupied.ico | Bin 0 -> 5430 bytes plugins/!Deprecated/MSN/proto_msn/res/Offline.ico | Bin 0 -> 5430 bytes plugins/!Deprecated/MSN/proto_msn/res/Online.ico | Bin 0 -> 5430 bytes plugins/!Deprecated/MSN/proto_msn/res/Phone.ico | Bin 0 -> 5430 bytes plugins/!Deprecated/MSN/proto_msn/res/Proto_MSN.rc | 74 + plugins/!Deprecated/MSN/proto_msn/src/resource.h | 21 + plugins/!Deprecated/MSN/res/inbox.ico | Bin 0 -> 1150 bytes plugins/!Deprecated/MSN/res/invite.ico | Bin 0 -> 1150 bytes plugins/!Deprecated/MSN/res/list_al.ico | Bin 0 -> 1150 bytes plugins/!Deprecated/MSN/res/list_bl.ico | Bin 0 -> 1150 bytes plugins/!Deprecated/MSN/res/list_fl.ico | Bin 0 -> 1150 bytes plugins/!Deprecated/MSN/res/list_ph.ico | Bin 0 -> 1150 bytes plugins/!Deprecated/MSN/res/list_rl.ico | Bin 0 -> 1150 bytes plugins/!Deprecated/MSN/res/msn.ico | Bin 0 -> 5430 bytes plugins/!Deprecated/MSN/res/msn.rc | 367 +++ plugins/!Deprecated/MSN/res/msnblock.ico | Bin 0 -> 1150 bytes plugins/!Deprecated/MSN/res/netmeeting.ico | Bin 0 -> 1150 bytes plugins/!Deprecated/MSN/res/profile.ico | Bin 0 -> 1150 bytes plugins/!Deprecated/MSN/res/services.ico | Bin 0 -> 1150 bytes plugins/!Deprecated/MSN/res/version.rc | 39 + plugins/!Deprecated/MSN/src/des.c | 639 +++++ plugins/!Deprecated/MSN/src/des.h | 170 ++ plugins/!Deprecated/MSN/src/ezxml.c | 967 ++++++++ plugins/!Deprecated/MSN/src/ezxml.h | 165 ++ plugins/!Deprecated/MSN/src/msn.cpp | 151 ++ plugins/!Deprecated/MSN/src/msn_auth.cpp | 485 ++++ plugins/!Deprecated/MSN/src/msn_avatar.cpp | 122 + plugins/!Deprecated/MSN/src/msn_chat.cpp | 469 ++++ plugins/!Deprecated/MSN/src/msn_commands.cpp | 1753 ++++++++++++++ plugins/!Deprecated/MSN/src/msn_contact.cpp | 272 +++ plugins/!Deprecated/MSN/src/msn_errors.cpp | 93 + plugins/!Deprecated/MSN/src/msn_ftold.cpp | 395 +++ plugins/!Deprecated/MSN/src/msn_global.h | 884 +++++++ plugins/!Deprecated/MSN/src/msn_http.cpp | 130 + plugins/!Deprecated/MSN/src/msn_libstr.cpp | 319 +++ plugins/!Deprecated/MSN/src/msn_links.cpp | 171 ++ plugins/!Deprecated/MSN/src/msn_lists.cpp | 623 +++++ plugins/!Deprecated/MSN/src/msn_mail.cpp | 424 ++++ plugins/!Deprecated/MSN/src/msn_menu.cpp | 460 ++++ plugins/!Deprecated/MSN/src/msn_mime.cpp | 536 +++++ plugins/!Deprecated/MSN/src/msn_misc.cpp | 1293 ++++++++++ plugins/!Deprecated/MSN/src/msn_msgqueue.cpp | 190 ++ plugins/!Deprecated/MSN/src/msn_msgsplit.cpp | 124 + plugins/!Deprecated/MSN/src/msn_natdetect.cpp | 496 ++++ plugins/!Deprecated/MSN/src/msn_opts.cpp | 684 ++++++ plugins/!Deprecated/MSN/src/msn_p2p.cpp | 2525 ++++++++++++++++++++ plugins/!Deprecated/MSN/src/msn_p2ps.cpp | 292 +++ plugins/!Deprecated/MSN/src/msn_proto.cpp | 1107 +++++++++ plugins/!Deprecated/MSN/src/msn_proto.h | 567 +++++ plugins/!Deprecated/MSN/src/msn_soapab.cpp | 1713 +++++++++++++ plugins/!Deprecated/MSN/src/msn_soapstore.cpp | 781 ++++++ plugins/!Deprecated/MSN/src/msn_srv.cpp | 378 +++ plugins/!Deprecated/MSN/src/msn_ssl.cpp | 140 ++ plugins/!Deprecated/MSN/src/msn_std.cpp | 65 + plugins/!Deprecated/MSN/src/msn_svcs.cpp | 624 +++++ plugins/!Deprecated/MSN/src/msn_switchboard.cpp | 53 + plugins/!Deprecated/MSN/src/msn_threads.cpp | 769 ++++++ plugins/!Deprecated/MSN/src/msn_ws.cpp | 180 ++ plugins/!Deprecated/MSN/src/resource.h | 100 + plugins/!Deprecated/MSN/src/stdafx.cpp | 18 + plugins/!Deprecated/MSN/src/version.h | 33 + 76 files changed, 24171 insertions(+) create mode 100644 plugins/!Deprecated/MSN/Docs/gpl.txt create mode 100644 plugins/!Deprecated/MSN/Docs/history-msn.txt create mode 100644 plugins/!Deprecated/MSN/Docs/readme-msn.txt create mode 100644 plugins/!Deprecated/MSN/Docs/todo-msn.txt create mode 100644 plugins/!Deprecated/MSN/Docs/translate-msn.txt create mode 100644 plugins/!Deprecated/MSN/msn_10.vcxproj create mode 100644 plugins/!Deprecated/MSN/msn_10.vcxproj.filters create mode 100644 plugins/!Deprecated/MSN/msn_12.vcxproj create mode 100644 plugins/!Deprecated/MSN/msn_12.vcxproj.filters create mode 100644 plugins/!Deprecated/MSN/proto_msn/Proto_MSN_10.vcxproj create mode 100644 plugins/!Deprecated/MSN/proto_msn/Proto_MSN_10.vcxproj.filters create mode 100644 plugins/!Deprecated/MSN/proto_msn/Proto_MSN_12.vcxproj create mode 100644 plugins/!Deprecated/MSN/proto_msn/Proto_MSN_12.vcxproj.filters create mode 100644 plugins/!Deprecated/MSN/proto_msn/res/Away.ico create mode 100644 plugins/!Deprecated/MSN/proto_msn/res/Invisible.ico create mode 100644 plugins/!Deprecated/MSN/proto_msn/res/Occupied.ico create mode 100644 plugins/!Deprecated/MSN/proto_msn/res/Offline.ico create mode 100644 plugins/!Deprecated/MSN/proto_msn/res/Online.ico create mode 100644 plugins/!Deprecated/MSN/proto_msn/res/Phone.ico create mode 100644 plugins/!Deprecated/MSN/proto_msn/res/Proto_MSN.rc create mode 100644 plugins/!Deprecated/MSN/proto_msn/src/resource.h create mode 100644 plugins/!Deprecated/MSN/res/inbox.ico create mode 100644 plugins/!Deprecated/MSN/res/invite.ico create mode 100644 plugins/!Deprecated/MSN/res/list_al.ico create mode 100644 plugins/!Deprecated/MSN/res/list_bl.ico create mode 100644 plugins/!Deprecated/MSN/res/list_fl.ico create mode 100644 plugins/!Deprecated/MSN/res/list_ph.ico create mode 100644 plugins/!Deprecated/MSN/res/list_rl.ico create mode 100644 plugins/!Deprecated/MSN/res/msn.ico create mode 100644 plugins/!Deprecated/MSN/res/msn.rc create mode 100644 plugins/!Deprecated/MSN/res/msnblock.ico create mode 100644 plugins/!Deprecated/MSN/res/netmeeting.ico create mode 100644 plugins/!Deprecated/MSN/res/profile.ico create mode 100644 plugins/!Deprecated/MSN/res/services.ico create mode 100644 plugins/!Deprecated/MSN/res/version.rc create mode 100644 plugins/!Deprecated/MSN/src/des.c create mode 100644 plugins/!Deprecated/MSN/src/des.h create mode 100644 plugins/!Deprecated/MSN/src/ezxml.c create mode 100644 plugins/!Deprecated/MSN/src/ezxml.h create mode 100644 plugins/!Deprecated/MSN/src/msn.cpp create mode 100644 plugins/!Deprecated/MSN/src/msn_auth.cpp create mode 100644 plugins/!Deprecated/MSN/src/msn_avatar.cpp create mode 100644 plugins/!Deprecated/MSN/src/msn_chat.cpp create mode 100644 plugins/!Deprecated/MSN/src/msn_commands.cpp create mode 100644 plugins/!Deprecated/MSN/src/msn_contact.cpp create mode 100644 plugins/!Deprecated/MSN/src/msn_errors.cpp create mode 100644 plugins/!Deprecated/MSN/src/msn_ftold.cpp create mode 100644 plugins/!Deprecated/MSN/src/msn_global.h create mode 100644 plugins/!Deprecated/MSN/src/msn_http.cpp create mode 100644 plugins/!Deprecated/MSN/src/msn_libstr.cpp create mode 100644 plugins/!Deprecated/MSN/src/msn_links.cpp create mode 100644 plugins/!Deprecated/MSN/src/msn_lists.cpp create mode 100644 plugins/!Deprecated/MSN/src/msn_mail.cpp create mode 100644 plugins/!Deprecated/MSN/src/msn_menu.cpp create mode 100644 plugins/!Deprecated/MSN/src/msn_mime.cpp create mode 100644 plugins/!Deprecated/MSN/src/msn_misc.cpp create mode 100644 plugins/!Deprecated/MSN/src/msn_msgqueue.cpp create mode 100644 plugins/!Deprecated/MSN/src/msn_msgsplit.cpp create mode 100644 plugins/!Deprecated/MSN/src/msn_natdetect.cpp create mode 100644 plugins/!Deprecated/MSN/src/msn_opts.cpp create mode 100644 plugins/!Deprecated/MSN/src/msn_p2p.cpp create mode 100644 plugins/!Deprecated/MSN/src/msn_p2ps.cpp create mode 100644 plugins/!Deprecated/MSN/src/msn_proto.cpp create mode 100644 plugins/!Deprecated/MSN/src/msn_proto.h create mode 100644 plugins/!Deprecated/MSN/src/msn_soapab.cpp create mode 100644 plugins/!Deprecated/MSN/src/msn_soapstore.cpp create mode 100644 plugins/!Deprecated/MSN/src/msn_srv.cpp create mode 100644 plugins/!Deprecated/MSN/src/msn_ssl.cpp create mode 100644 plugins/!Deprecated/MSN/src/msn_std.cpp create mode 100644 plugins/!Deprecated/MSN/src/msn_svcs.cpp create mode 100644 plugins/!Deprecated/MSN/src/msn_switchboard.cpp create mode 100644 plugins/!Deprecated/MSN/src/msn_threads.cpp create mode 100644 plugins/!Deprecated/MSN/src/msn_ws.cpp create mode 100644 plugins/!Deprecated/MSN/src/resource.h create mode 100644 plugins/!Deprecated/MSN/src/stdafx.cpp create mode 100644 plugins/!Deprecated/MSN/src/version.h (limited to 'plugins/!Deprecated') diff --git a/plugins/!Deprecated/MSN/Docs/gpl.txt b/plugins/!Deprecated/MSN/Docs/gpl.txt new file mode 100644 index 0000000000..45645b4b53 --- /dev/null +++ b/plugins/!Deprecated/MSN/Docs/gpl.txt @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/plugins/!Deprecated/MSN/Docs/history-msn.txt b/plugins/!Deprecated/MSN/Docs/history-msn.txt new file mode 100644 index 0000000000..b3f08ab339 --- /dev/null +++ b/plugins/!Deprecated/MSN/Docs/history-msn.txt @@ -0,0 +1,529 @@ +Legend: +[+] added +[*] changed +[-] deleted +[!] bug fixed + +Version 0.7.1.0 +=============== +[+] All bitmap processing routines were removed in honour of the loadavatars plugin + +Version 0.7.0.1 +=============== +[+] IcoLib Integration + +Version 0.5.0.3 +=============== +[+] added support for custom smileys +[!] bug 0001996 fixed: No Contact Idetification When an Unsupport Feature Even Occurs + +Version 0.5.0.1 +=============== +[!] bug 0002083 fixed: Filetransfer suddenly stops +[!] bug 0002067 fixed: MSN connection fails in gateway mode through http-proxy (with authentication) +[!] bug 0001584 fixed: Crash when sender cancels file send + +Version 0.4.3.1 +=============== +[!] bug 0001887 fixed: Sometimes getting Error 540 from server then disconnect. +[!] fix for the invalid chars in the MSN chat + +Version 0.4.3.0 +=============== +[+] first Unicode version of the MSN plugin +[!] wish 0001015: nudges (thanks Tweetie for a patch) +[!] bug 0001532 fixed: Hotmail does not open from miranda +[!] bug 0001536 fixed: Contacts displayed as online while MSN isn't connected yet + +Version 0.4.1.3 +=============== +[+] support for dropping idle switchboards was added + +Version 0.4.1.2 +=============== +[+] Unicode in the nicknames and groups. Requires clistw & Miranda +0.4.3 bld. 32 or later +[*] avatar setting dialog was moved to View/Change User Details section +[!] fix for initial email notification in the MSNP11 mode +[!] fix for the "User is already in your contact list" error +[!] bug 0001427 fixed: Error 540 during login on slow connections +[!] bug 0001468 fixed: MSN 7.5 users cannot load Miranda users avatar. +[!] BYE command was handled incorrectly +[!] fix for the old MSN file transfers: a received file cannot be opened + +Version 0.4.1.1 +=============== +[!] fixed a bug when Miranda hangs up on exit, when the +clist_modern plugin is installed + +Version 0.4.0.4 +=============== +[!] important bugfix: MSNP11 status messages may block the login +process. +[!] fix for the problems with the keep-alive thread +[*] numerous minor changes and bugfixes. + +Version 0.4.0.3 +=============== +[+] MSNP11 support added +[+] wish #0001239 fixed: MSN Personal Status Messages +[+] WebMessenger detection added +[!] fix for the GPF on exit + +Version 0.4.0.2 +=============== +[!] bug #0000913 fixed: no zero-termination after _snprintf (potential +security issue) +[!] bug #0001176 fixed: can't send messages to the MSN WebMessenger +[!] bug #0001202 fixed: Can't delete received file directory +[!] various memory leaks + +Version 0.4.0.1 +=============== +[+] wish #0000971 fixed: Block & Unblock actions must be separated +[+] wish #0000966 fixed: to show the warning when a contact tries +to establish a audio/video/webcam conference with you. +[-] removed support for old versions of Miranda. +[!] bug #0000996 fixed: File transfer fails when auto-accept is on +and file already exists in destination directory +[!] fixes for minor string allocation problems. + +WARNING!!! All versions since this one require Miranda 0.4.x core. +This is required by the project admins. + +Version 0.1.7.11 +================ +[+] full support for server-side groups and contacts +[+] wish #0000142 fixed: a popup for session disconnection +[+] wish #0000149 fixed: CHAT.DLL support was added for groupchats (thanks noname) +[!] bug #0000458 fixed: Messages disappear when sending to MSN. +[!] bug #0000684 fixed: a file with the Unicode name fails to open after +the successful transfer. +[!] bug #0000761 fixed: apply button in options->popups->msn enabled on +first showing of page +[!] minor fix for P2P file transfers over NAT + +Version 0.1.7.10 +================ +[!] multiple bugfixes for gateways & P2P file transfers +[*] login rules were changed a bit: now Miranda assigns its own +proxy address to SSL connection when the 'Use IE proxy settings' +option is turned off. If you don't use a proxy, nothing gets +changed. +[!] bug #0000580 fixed: the large messages disappear being sent. +[!] bug #0000601 fixed: files with incorrect file names aren't +saved during P2P file transfers. +[!] bug #0000565 fixed: avatar file names becomes different after +using the dbtool, that's why the MSN folder may have the same +avatars several times. +[!] bug #0000437 fixed: expert must have an option to choose the +needed status translation schema for Away, BRB & N/A statuses. +[!] bug #0000541 fixed: if Miranda asks to overwrite a file +during the f/t, a crash can occur when user cancels it. +[*] translation file modification. + +Version 0.1.7.9a +================ +[!] bug #0000564 fixed: MSN Messenger doesn't confirm a file +transfer from Miranda when it goes via the server + +Version 0.1.7.9 +=============== +[+] wish #000519: the ability to create avatars from PNG images. +[+] contact's phone numbers support was added +[+] options dialog was changed to allow a user to see his own avatar. +[-] mSN protocol v.9 support code was removed +[!] option 'File Transfers -> If a file already exists -> Rename' +doesn't work for MSN P2P transfers. +[!] bug #0000092 fixed: 'User Is Typing' event delay is too slow. +[!] bug #0000423 fixed: Send Message To Offline User Return Message Time +Out message +[!] bug #0000444 fixed: the passive P2P transfer fails if MSN Messenger +returns bad IP address +[!] bug #0000554 fixed: fake Hotmail notifications are shown, even +when there's no new mail available +[*] translation file modification. + +Version 0.1.7.8 +=============== +[+] 'View MSN services status' menu item was added to the main menu +[+] Massive improvements for P2P file transfers + +Version 0.1.7.7 +=============== +[!] fixed some bugs with file transfer cancellation. +[*] minor changes in MSN object id handling. +[*] internal changes to the threading mechanism to make it more stable + +Version 0.1.7.6 +=============== +[+] the support for v10 P2P incoming passive direct connections was +added. DC are used when a sender reports the 'Direct-Connect' +connection type in the 'Conn-Type' request fiels. +[+] the support for newly added avatar notifications was added +(works only under 0.3.4+ core). +[+] the MSN/GetAvatarInformation service was added to support the +external avatar readers like tabSRMM etc. +[*] incoming file transfers now use the standard settings for +ports: via Options -> Network, MSN plugin connections. The existing +settings are transferred, but you can use port ranges now to +establish several transfers (one transfer for each contact) +[-] the 'Incoming port' setting was deleted from MSN network options. +[*] blocked contacts from the server lists aren't temporary anymore. +It also avoids the contact list flickering during login. +[!] bugfix (error #0000331): incoming file transfers seem to fail +being initiated from the MSN Messenger; +[!] bugfix (error #0000333): contacts aren't deleted from server when +you press Del key in the contact list + +Version 0.1.7.5 +=============== +[+] full avatars support added: you can set your own avatar +and transfer it to another people. +[!] bugfix for error 0000319: MSN server list manager shall not display +contacts of another protocols, groups also shouldn't be displayed. +[!] bugfix: MSN plugin adds a contact to CL during a search by e-mail. +[!] bugfix: massive fixes for authorization, both for v.9 and v.10 + +Version 0.1.7.4 +=============== +[+] server lists manager was added to Options -> Network +[!] bugfix for timeouts caused by User-Is-Typing notifications. +[!] bugfix (error #000305): MSN protocol freezes Miranda under +Windows 98/ME after login (many thanks to Hilary Cheng for a solution) + +Version 0.1.7.3 +=============== +[!] bugfix for file transfers: the incorrect address was used +during sending a file. +[+] added a 'View profile' contacts popup menu item (thanks koobs for an idea) +[*] numerous fixes for MSN v10. + +Version 0.1.7.2 +=============== +[!] bugfix (error #0000222): you can add yourself using Find/Add contacts. +[!] bugfix (error #0000123): Away and N/A modes are switched. +[!] bugfix: e-mail, password and nickname can't be saved into the +empty profile database. +[!] bugfix: Cancel button does not close the png2dib d/l dialog. + +Version 0.1.7.1 +=============== +[!] critical bugfix (err.#50): typing notification can result to +the infinite timeouts during message sending. + +Version 0.1.7.0 +=============== +[*] plugin lost its compatibility with Miranda 0.2.x due to stability +reasons, version 0.3.x is required. +[+] first version of MSN avatars (user-defined pictures). +[+] added an option to support avatars and d/l the DLL. +[*] PNG support was moved from IE components to libpng. +[+] added an option not to get the nickname from a server, to allow +a user to identify his/her location via a nick. +[!] fixed a problem with the lack of diagnostics on error 715. +[!] some minor bugfixes to file transfers. +[-] support for MSNP v.8 was removed. +[*] translation file was slightly modified. + +Version 0.1.6.8 +=============== +[!] rarely occurred GPF fixed during file transfers +[!] MSN gateway access without a proxy breaks connections +when 'user-is-typing' messages are transferred first. +[!] MSN server closes connection if a PNG command is send to +a switchboard thread +[!] PNG command is not send when a proxy exists. + +Version 0.1.6.7 +=============== +Official version for Miranda 0.3.3 release +[!] minor interface fixes in the options dialog. + +Version 0.1.6.6 (requires SRMM Unicode 1.0.1.3!!!) +=============== +[*] keep-alive support was redesigned to avoid threading problems +[!] bugfix: rare GPF fixed after reconnecting to the MSN server +[!] bugfix for all plugins like AwaySys for sending non-Unicode +messages. + +Version 0.1.6.5 +=============== +[!] bugfix: file receiving was broken. + +Version 0.1.6.4 +=============== +[*] gateway support redesigned to provide the gateway access +without both proxies and MSN Gateway plugin. +[!] a few minor memory leaks were fixed. +[*] minor interface changes in the options dialogs, translation +file was synchronized with the current options dialogs. + +Version 0.1.6.3 +=============== +[!] bugfix: if both built-in gateway and 'Keep connection alive' checkbox +are enabled, disconnection occurs every 2 minutes. +[!] bugfix: a blocked contact becomes unblocked after relogin, if it's +not deleted. + +Version 0.1.6.2 +=============== +[+] option "Use IE proxy settings" was added to simplify life for +users of the MSN Gateway plugin. +[*] options page was divided into two ones: general MSN options and +network options. +[!] bugfix: option 'Disable all contacts not included...' could not be changed +[!] bugfix: GPF sometimes occurred when starting an external mailer +(thanks Daniel for kind cooperation) + +Version 0.1.6.1 +=============== +[+] built-in gateway added (requires Miranda 0.3.3 or later) +[+] 'User is typing' support added (requires SRMM or SRMM MOD plugin) +[+] Full Unicode support for messages was added (requires SRMM MOD Unicode) +[+] MSN main menu item is created in the same section with all +another protocols +[*] 'block/unlock' feature is integrated with Options->Status->Visible +[!] bugfix: a port remains opened after the file trasnfer cancel. +[!] bugfix: if a contact list is very long, all contacts can be +shown in the Offline mode. +[!] a whole bunch of minor bugfixes, changes and improvements. + +Version 0.1.5.11 +================ +[+] Netmeeting support added +[-] MSNP7 support is deleted and this option is locked +[+] option was added to launch a specific program when the new +Hotmail arrives. +[+] option was added to display errors as popups to avoid the +interface locking. +[*] additional diagnostics was added to handle the case when +Internet Explorer is in the Offline mode (thanks to Jonas Svensson). +[*] numerous minor changes in option dialogs and debug messages. + +Version 0.1.5.10 +================ +[!] bug fixed: the "Use MSN protocol v.8" option is not saved +correctly after pressing Apply/Ok in the options dialog if this +option was never saved in the database before. +[*] the source code was changed to allow the compilation without +the Platform SDK. + +Version 0.1.5.9 +=============== +[!] bug in new URL encode mechanism prevents messages from being sent +if the contact's email contains underscores. + +Version 0.1.5.8 +=============== +[+] new MSN Menu item was added to edit user's MSN profile in a browser +[!] bug fixed: authorization problems when many MSN accounts are +used in the same Miranda installation. +[!] bug fixed: if a password contains non-alphabetical characters +(like punctuation, ampersand, plus, etc) the MSNP8 login could return +error 401 Unauthorized. MSNP7 login works Ok. +[!] bug fixed: if a contact changes its status to Invisible, it's +not possible to send messages to him/her anymore. +[*] the popup displaying procedure was changed to avoid so called +'frozen popups'effect. +[*] the "Use MSN protocol v.8" option is now turned on by default. + +Version 0.1.5.7 +=============== +[*] the SSL autorization procedure was changed: now it uses +Internet Explorer's proxy settings to log in. It also resolves +problems with proxies that require authorization (previously you +could see the error 407 in the network log when trying to logon). +In this case MSN plugin tries automatically to apply the login and +the password from the Options -> Network -> MSN. +[*] cookies usage had been turned off, it means that you can logon +automatically into MSN Messenger and simultaneously logon using +Miranda under different account. +[*] error diagnostic has been slightly enhanced. +[*] WinInet.dll now gets unloaded from memory after login to use +less memory. +[!] bug fixed: attemp to find/add a contact that already exists in +your contact list resulted to strange error message. + +Version 0.1.5.6 +=============== +[+] added the external IP autodetection if the protocol v.8 is +used. It can significantly simplify life if you have the dynamic +external IP address. +[*] minor fixes in the Options dialog + +Version 0.1.5.5 +=============== +[!] bug fixed: 'Cancel' button does not stop the file transfer +[!] bug fixed: contacts with leading digits in the e-mail are not +processed properly. +[!] bug fixed: you cannot send messages to a person if you tried to +send the first message in the Invisible mode. + +Version 0.1.5.4 +=============== +[*] the file senging does not require to talk anymore +[!] bug fixed: fast sending of two or more messages results to the GPF + +Version 0.1.5.3 +=============== +[!] bug fixed: memory corruption in multichat mode + +Version 0.1.5.2 +=============== +[!] bug fixed: LastSeen plugin shows the incorrect time of contact's logout. +[!] bug fixed: you cannot block a contact if it's offline (even if you're online). +[!] bug fixed: when MSNP8 is used, some contacts are skipped at all during +the synchronization procedure. + +Version 0.1.5.1 +=============== +[!] bug fixed: 'Display menu' option does not really disable the MSN menu +[*] translate-msn.txt updated. +[+] minor changes in the options dialog + +Version 0.1.5.0 +=============== +[+] MSN Protocol v.8 support added. +[+] a "Invite to chat" contact menu item is added. +[*] multichat support is fully redesigned and fixed. +[*] multiple file transfers are fully redesigned and fixed. +[!] bug fixed: when you set your own nickname with spaces, it appears in +the options dialog URL-encoded (with %20 instead of a space char). +[!] bug fixed: opened switchboard sessions weren't closed when you go +offline without closing Miranda. + +Version 0.1.4.12 +================ +[!] bug fixed: Hotmail inbox is not shown after a clicking on a Hotmail +popup under Windows 9x +[!] bug fixed: a user's own nickname is not properly saved after changing. + +Version 0.1.4.11 +================ +[*] changed blocked user visualization method: nickname is never got +corrupted anymore, visibility mode is used now. M will show blocked +contacts in italic by default, but you can tune the font/color/style of +the 'invisible' users at the Options/Contact List/List text tab, for item +called "Online contacts for whom you have a different visibility". +[!] bug fixed: an authorization is rerequested after deleting a contact. +[!] bug fixed: the very long nickname can be set, and then cut off when +saving to the database or the server +[!] bug fixed: when viewing the user options, an 'Updating...' string is +blinking all the time. + +Version 0.1.4.10 +================ +[+] option added to block all another MSN contacts. Attention: you +must be online to edit this option. +[!] search-by-email mechanism fixed. +[!] bug fixed: user email is shown in popups instead of nickname +[!] bug fixed: when migrating from previous versions of MSN plugin +a lot of authorization requests are shown. + +Version 0.1.4.9 (May Day Build :) +=============== +[!] bug fixed: "First message delivered" displayed as a message +box if the Popup plugin is not installed. +[!] bug fixed: contact's e-mail is shown instead of a user's +nick name when "First message delivered" popup is shown + +Version 0.1.4.8 +=============== +[!] bug fixed: the first message get lost when another message +editor window is opened. +[+] "First message delivered" popup can be enabled separately. + +Version 0.1.4.7 +=============== +[+] separate timeout for Hotmail popups added +[*] options layout changed: all popup options are grouped on the +separate options page: Options/Popups/MSN. +[!] bug fixed: Hotmail popups got 'frozen' after being clicked + +Version 0.1.4.6 +=============== +[!] bug fixed: offline messages are get lost without notification + +Version 0.1.4.5 +=============== +[*] first message sending routine is changed to release message editor immediately. +This does not fix the delay problem completely, but user will never see the timeout +dialog again. If the Popup plugin is installed, user will be notified using a popup +message when the first message will be really delivered. +[!] bugfix: when you go offline from the online mode, both modes are disabled in +the plugin's statuses menu. +[!] minor interface bugfixes in the options dialog + +Version 0.1.4.4 +=============== +MSN plugin is added as a protocol to the Miranda's sources CVS tree. +[!] fixed a problem with sending raw data to the HTTP proxy. +[+] new option: popup timeouts. Requires Popup plugin v. 1.0.1.9 or later +[*] popups interface changed not to call Web browser when 'typing' popups are clicked +[*] FAQ is added to the readme.txt + +Version 0.1.4.3 +=============== +[+] new option: display 'user is typing' messages as popups if an appropriate plugin is installed +[+] new option: send a font color/style alongside with messages. This +option also fixes a problem with displaying messages in the standard +Windows Messenger using an ugly/incorrect font/size/style. +[!] fixed a memory leak when calling popups. + +Version 0.1.4.2 +=============== + +A couple of bugfixes from Pixador (thank him for a patch): +[!] multiple MSN plugins do not work together. +[!] GPF when user presses Block/Unblock several times; + +Version 0.1.4.1 +=============== + +Numerous bugfixes: +[!] file sending/receiving almost works now, excluding multi-file sending from Miranda to WM. +[!] a lot of memory leaks, double deletions, memory corruptions etc. fixed. + +Version 0.1.4.0 +=============== + +Entering next major release: +[+] proxy support added; +[+] network traffic logging added; +[!] fixed bug with 100% processor usage; +[!] fixed bug with displaying incorrect file names in the file accept dialog. + +Version 0.1.3.4 +=============== + +[*] code of Authorization/Deny changed to show an authorization request only once; +[!] memory corruption fixed; +[!] GPF with blocking/unblocking fixed. + +Version 0.1.3.3 +=============== + +[*] language of plugin is changed to C++; +[!] bug with offline authorization fixed; + +Version 0.1.3.0 +=============== + +[!] fixed a bug with GPF on exit; +[!] fixed a bug with contacts blocking/unblocking; +[!] fixed a bug with strange crashes time to time; +[!] fixed a memory leak; +[!] fixed the ANSI <-> UTF conversion scheme to avoid problems with old versions of Windows (like 95 OSR2). + +Version 0.1.2.1 +=============== + +Written by Rako Shizuka. +The second version with extended functionality: file transfers, blocking etc. + +Version 0.1.2.0 +=============== + +Written by Richard Hughes aka cyreve. +The first version with basic functionality diff --git a/plugins/!Deprecated/MSN/Docs/readme-msn.txt b/plugins/!Deprecated/MSN/Docs/readme-msn.txt new file mode 100644 index 0000000000..8c0a035958 --- /dev/null +++ b/plugins/!Deprecated/MSN/Docs/readme-msn.txt @@ -0,0 +1,125 @@ +Protocol for the Miranda IM for communicating with users of +the MSN Messenger protocol. + +Copyright (C) 2003-5 George Hazan (ghazan@postman.ru) +Copyright (C) 2001-3 Richard Hughes (original version), + +Miranda IM: the free icq client for MS Windows +Copyright (C) 2002-5 Martin Oberg, Robert Rainwater, Sam Kothari, Lyon Lim +Copyright (C) 2000-2 Richard Hughes, Roland Rabien & Tristan Van de Vreede + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +================================================================================ +Useful plugins which can help you to work with the MSN protocol +================================================================================ + +Popup 1.0.1.9 +(http://miranda-im.org/download/details.php?action=viewfile&id=299) +Popup Plus 2.0.3.8 +(http://miranda-im.org/download/details.php?action=viewfile&id=1170) +---------------------- +All notifications in the MSN plugin are made using the Popup +plugin. After the Popup plugin installation there will be some +options available for tuning, you will find them in +Options/Popups/MSN tab. + +Chat 0.2.0.2 +(http://miranda-im.org/download/details.php?action=viewfile&id=1309) +---------------------- +This plugin allows you to support group chats with many MSN users. Without +that plugin you can't leave a chat been being invited, so if you plan to +use groupchats, this plugin is essential. + +SRMM (Unicode) 1.0.4.3 +(http://miranda-im.org/download/details.php?action=viewfile&id=1136) +tabSRMM (Unicode) 0.9.9.95 +(http://hell.at.eu.org/forums) +---------------------- +They both are true Unicode-aware message editors. Using them you can +send/receive Unicode messages, so you won't be dependent on the +codepages, encodings etc. They work only under NT4/Win2k/XP/2003. + +Unicode History Viewer +(http://miranda-im.org/download/details.php?action=viewfile&id=1109) +---------------------- +If you work under NT4/Win2k/XP/2003, and you can send/receive messages +in Unicode, the standard history viewer will show question-marks when +Unicode characters cannot be mapped to the current codepage. In this +case you can use this plugin to have no problems at all. + +================================================================================ +Frequently asked questions. +================================================================================ + +Q1. I want to use the OpenSSL libraries, but plugin can't find or load +them. Where can I find the valid DLLs for Win32? + +A1. http://www.slproweb.com/products/Win32OpenSSL.html +Use the latest stable version. + +---------------------------------------------------------------- + +Q2. I get strange errors with connection, proxies, file sending/ +receiving. How can I find the reason of the problem? + +A2. Some useful information is grouped in the networking-msn.txt. +If it does not help, try to create a network log. Go to +Options/Network and press a "Log Options" button (the only button +in the upper-right corner). Very often this log helps users to +find a hidden diagnostic messages, or simply understand what is +happening concretely. If a problem persists, you can contact me, +and upon request, send me (zipped!) a piece of this log. + +---------------------------------------------------------------- + +Q3. My Miranda logged into the MSN network successfully, but I +cannot send a message, and a contact's menu item 'Message' is blocked. + +A3. The problem is in the Conversation Style Messaging plugin. +CSM plugin is incompatible with the MSN plugin because of the +error in it. Disable it and/or delete, if you want to use the MSN +protocol + +---------------------------------------------------------------- + +Q4. I want to compile your sources, but got a lot of errors. + +A4. First, you should download new Miranda's SDK sources, and +place the MSN plugin's sources into Protocol\MSN subdirectory +(accordingly to the Miranda's directory tree). Notice that MSN is +not a plugin anymore, it's stored among another protocols. Look at +http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/miranda-icq to +view the complete directory structure. + +Then download the Popup plugin, and unzip header file m_popup.h +to the SDK\headers_c directory. Then you should be able to compile +MSN plugin without problems. + +Installation of Microsoft Platform SDK is not required to +compile MSN plugin sources + +---------------------------------------------------------------- + +Q5. When I receive an authorization request, my own nickname is +shown in the contact list. Is it a bug? + +A5. Yes, it is, but it cannot be solved now. Miranda uses UINs +to identify a contact, but because MSN protocol have no UINs, +your own nickname (as a default one) is shown. + +---------------------------------------------------------------- + +WMBR, George Hazan (ghazan@postman.ru). diff --git a/plugins/!Deprecated/MSN/Docs/todo-msn.txt b/plugins/!Deprecated/MSN/Docs/todo-msn.txt new file mode 100644 index 0000000000..627c0ae56b --- /dev/null +++ b/plugins/!Deprecated/MSN/Docs/todo-msn.txt @@ -0,0 +1,10 @@ +There're most important problems and known bugs: + +1. File transfers: +- problems with the multihomed machines. +- better diagnostics. + +If you know a problem that is not listed here, report it via e-mail. + +WMBR, George Hazan +ghazan@postman.ru diff --git a/plugins/!Deprecated/MSN/Docs/translate-msn.txt b/plugins/!Deprecated/MSN/Docs/translate-msn.txt new file mode 100644 index 0000000000..552e1951ec --- /dev/null +++ b/plugins/!Deprecated/MSN/Docs/translate-msn.txt @@ -0,0 +1,169 @@ +; MSN 0.1.7.9 translation strings + +[MSN Protocol] +[%s plugin connections] +[Hotmail] +[Hotmail Notify] +[Hotmail from %s] +[Hotmail from %s (%s)] +[A new mail has come from %s (title: %s).] +[A new mail has come from %s (%s) (title: %s).] +[Subject: %s] +[Unread mail is available: %d messages (%d junk e-mails).] +[Test: Arrival Hotmail] +[A New Hotmail has come!] +[Contact left channel] + +; Messages + +[%s (%s) has joined the chat with %s] +[First message delivered] +[typing...] + +; Menus + +[&Block] +[&Unblock] +[Display Hotmail &Inbox] +[&Invite to chat] +[Set &Nickname] +[Edit MSN &Profile] +[&Start Netmeeting] +[Set &Avatar] +[View MSN Services &Status] +[&View Profile] + + +; Errors + +[Attempt to make the SSL connection resulted to error %d: %s.] +[Cannot start the file transfer: no free sockets. Error %d: %s.] +[Cannot start the file transfer due to the lack of free sockets.] +[Cannot start the file transfer: cannot listen on a socket. Error %d: %s.] +[Contact tried to send its webcam data (currently not supported)] +[Contact tried to view our webcam data (currently not supported)] +[Contact tried to open an audio conference (currently not supported)] +[file transfer is canceled by remote host] +[file transfer: time out occurred] +[Internet Explorer is in the 'Offline' mode. Switch IE to the 'Online' mode and then try to relogin] +[MSN plugin cannot add a new contact because the contact list is full] +[MSN protocol allows only one file to be sent at a time] +[MSN protocol does not allow you to communicate with others when you are invisible] +[MSN protocol does not support offline messages] +[MSN Services are temporarily unavailable, please try to connect later] +[Message is too long: MSN messages are limited by 1202 UTF8 chars] +[Server has requested an unknown protocol set (%s)] +[Unknown or invalid host name was specified (%s). Error %d: %s] +[Unprocessed error: %s] +[Unrecognised error %d. The server has closed our connection] +[User is already in your contact list] +[You must be talking to start Netmeeting] +[You must specify your e-mail in Options/Network/MSN] +[Your username or password is incorrect] +[Your MSN account e-mail is unverified. Goto http://www.passport.com and verify the primary e-mail first] + +; Options dialog + +[Network] +[PopUps] +[E-mail address] + +[Full e-mail:] +[Password:] +[Nickname:] +[Create a new MSN messenger account using the MSN website] +[Expert] +[Use MSN protocol v.8] +[Disable main menu] +[Send message font color/size info inside messages] +[Disable all contacts not included into my contact list] +[Enable avatars support] +[Manage server groups] +[Treat Away status as 'Be Right Back'] +[Never update your nickname from server] +[Run the following application when new Hotmail arrives] +[Server groups import may change your contact list layout after next login. Do you want to upload your groups to the server?] + +; Network options dialog + +[Connection settings] +[Login server:] +[Port:] +[Use HTTP gateway mode (incompatible with MSN Gateway plugin)] +[Use IE proxy settings] +[Keep connection alive (send a ping packet every minute)] +[Notify me when a message delivery has failed] +[Use MSN Messenger 7 protocol] +[Use OpenSSL encryption (requires LIBSSL32.DLL)] + +[Incoming file transfers] +[Automatically obtain host/port for incoming file transfers] +[Your host (or router):] +[Reset] +[The changes you have made require you to reconnect to the MSN Messenger network before they take effect] +[The changes you have made require you to restart Miranda IM before they take effect] + + +; Popup options dialog + +[Colors] +[Background color] +[Text color] +[&Use Windows colors] +[Disable receiving Hotmail notifications] +[Ignore new messages in 'Junk Mail' folder only (at startup)] +[Timeout (*)] +[Previe&w] +[Other] +[Display popups when user is typing] +[Enable 'First message delivered' popup] +[(*) Timeouts require Popup v. 1.0.1.9 or later] +[Display errors using popups] + +; pnd2dib download dialog + +[png2lib download] +[To enable the avatar support, you must obtain the valid copy of the +png2dib.dll. Choose one of the following:] +[[Install] - install a png2lib plugin using Miranda Installer] +[[Download] - manually download a zipped DLL and then unzip it to the +plugins folder] +[[Cancel] - disable the avatar support] + + +; Server list manager + +[Server Lists] +[Server List Manager] +[Contact is included into your server list] +[Somebody included you in his/her server list] +[Allowed (active) contact] +[Blocked contact] + +; chat window +[Me] +[Others] + +; chat log message +[This conversation has been inactive, participants will be removed.] +[To resume the conversation, please quit this session and start a new chat session.] + +; contact list and chat title +[MSN Chat #] + +; message box +[There is only 1 person left in the chat, do you want to switch back to standard message window?] +[User is already in the chat session.] +[No active chat session is found.] + +; menus +[User &details] +[User &history] +[&Leave chat session] +[&Invite user...] + +; options dialog +[Avatar] +[Running on a mobile device] +[Running on a MSN mobile device] +[Using MSN Webmessenger] diff --git a/plugins/!Deprecated/MSN/msn_10.vcxproj b/plugins/!Deprecated/MSN/msn_10.vcxproj new file mode 100644 index 0000000000..2cf0ee8aef --- /dev/null +++ b/plugins/!Deprecated/MSN/msn_10.vcxproj @@ -0,0 +1,260 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + MSN + {7B0F213E-C15E-4219-8AE5-49DD3D3D553D} + + + + DynamicLibrary + Unicode + true + + + DynamicLibrary + Unicode + + + DynamicLibrary + Unicode + true + + + DynamicLibrary + Unicode + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30128.1 + $(SolutionDir)$(Configuration)\Plugins\ + $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)64\Plugins\ + $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)\Plugins\ + $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)64\Plugins\ + $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ + true + + + + Disabled + ..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories) + _DEBUG;_WINDOWS;_USRDLL;MSN_EXPORTS;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + true + Fast + Use + msn_global.h + Level3 + EditAndContinue + 4996;%(DisableSpecificWarnings) + false + + + _DEBUG;%(PreprocessorDefinitions) + ..\..\include;..\..\include\msapi + + + ws2_32.lib;comctl32.lib;Rpcrt4.lib;%(AdditionalDependencies) + true + false + $(IntDir)$(TargetName).lib + Windows + 0x19000000 + $(ProfileDir)..\..\bin10\lib + + + + + Disabled + ..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories) + _DEBUG;_WINDOWS;_USRDLL;MSN_EXPORTS;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + true + Fast + Use + msn_global.h + 4996;%(DisableSpecificWarnings) + Level3 + false + + + _DEBUG;%(PreprocessorDefinitions) + ..\..\include;..\..\include\msapi + + + ws2_32.lib;comctl32.lib;Rpcrt4.lib;%(AdditionalDependencies) + type=%27Win32%27 name=%27Microsoft.Windows.Common-Controls%27 version=%276.0.0.0%27 processorArchitecture=%27*%27 publicKeyToken=%276595b64144ccf1df%27 language=%27*%27;%(AdditionalManifestDependencies) + true + false + $(IntDir)$(TargetName).lib + Windows + 0x19000000 + $(ProfileDir)..\..\bin10\lib + + + + + Full + OnlyExplicitInline + Size + ..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories) + NDEBUG;_WINDOWS;_USRDLL;MSN_EXPORTS;%(PreprocessorDefinitions) + true + false + false + true + Fast + Use + msn_global.h + Level3 + 4996;%(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + ..\..\include;..\..\include\msapi + + + /PDBALTPATH:%_PDB% + ws2_32.lib;comctl32.lib;Rpcrt4.lib;%(AdditionalDependencies) + type=%27Win32%27 name=%27Microsoft.Windows.Common-Controls%27 version=%276.0.0.0%27 processorArchitecture=%27X86%27 publicKeyToken=%276595b64144ccf1df%27 language=%27*%27;%(AdditionalManifestDependencies) + true + true + true + 0x19000000 + false + $(IntDir)$(TargetName).lib + Windows + $(ProfileDir)..\..\bin10\lib + + + + + Full + OnlyExplicitInline + Size + ..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories) + NDEBUG;_WINDOWS;_USRDLL;MSN_EXPORTS;%(PreprocessorDefinitions) + true + false + false + true + Fast + Use + msn_global.h + Level3 + 4996;%(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + ..\..\include;..\..\include\msapi + + + /PDBALTPATH:%_PDB% + ws2_32.lib;comctl32.lib;Rpcrt4.lib;%(AdditionalDependencies) + type=%27Win32%27 name=%27Microsoft.Windows.Common-Controls%27 version=%276.0.0.0%27 processorArchitecture=%27*%27 publicKeyToken=%276595b64144ccf1df%27 language=%27*%27;%(AdditionalManifestDependencies) + true + true + true + 0x19000000 + false + $(IntDir)$(TargetName).lib + Windows + $(ProfileDir)..\..\bin10\lib + + + + + NotUsing + + + NotUsing + + + + Create + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/!Deprecated/MSN/msn_10.vcxproj.filters b/plugins/!Deprecated/MSN/msn_10.vcxproj.filters new file mode 100644 index 0000000000..b9585f0393 --- /dev/null +++ b/plugins/!Deprecated/MSN/msn_10.vcxproj.filters @@ -0,0 +1,151 @@ + + + + + {f9e2dbb2-638e-4619-a597-b259fe9cb28c} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {851bc859-759a-4ee2-a998-896565b85abc} + ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe + + + {a696658a-8e44-4b58-b62e-1afe9b41c748} + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Resource Files + + + Resource Files + + + + + Resource Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + \ No newline at end of file diff --git a/plugins/!Deprecated/MSN/msn_12.vcxproj b/plugins/!Deprecated/MSN/msn_12.vcxproj new file mode 100644 index 0000000000..33657ea881 --- /dev/null +++ b/plugins/!Deprecated/MSN/msn_12.vcxproj @@ -0,0 +1,263 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + MSN + {7B0F213E-C15E-4219-8AE5-49DD3D3D553D} + + + + DynamicLibrary + Unicode + true + v120_xp + + + DynamicLibrary + Unicode + v120_xp + + + DynamicLibrary + Unicode + true + v120_xp + + + DynamicLibrary + Unicode + v120_xp + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30128.1 + $(SolutionDir)$(Configuration)\Plugins\ + $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)64\Plugins\ + $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)\Plugins\ + $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)64\Plugins\ + $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ + true + + + + Disabled + ..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories) + _DEBUG;_WINDOWS;_USRDLL;MSN_EXPORTS;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + true + Fast + Use + msn_global.h + Level3 + EditAndContinue + 4996;%(DisableSpecificWarnings) + false + + + _DEBUG;%(PreprocessorDefinitions) + ..\..\include;..\..\include\msapi + + + ws2_32.lib;comctl32.lib;Rpcrt4.lib;%(AdditionalDependencies) + true + false + $(IntDir)$(TargetName).lib + Windows + 0x19000000 + $(ProfileDir)..\..\bin12\lib + false + + + + + Disabled + ..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories) + _DEBUG;_WINDOWS;_USRDLL;MSN_EXPORTS;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + true + Fast + Use + msn_global.h + 4996;%(DisableSpecificWarnings) + Level3 + false + + + _DEBUG;%(PreprocessorDefinitions) + ..\..\include;..\..\include\msapi + + + ws2_32.lib;comctl32.lib;Rpcrt4.lib;%(AdditionalDependencies) + type=%27Win32%27 name=%27Microsoft.Windows.Common-Controls%27 version=%276.0.0.0%27 processorArchitecture=%27*%27 publicKeyToken=%276595b64144ccf1df%27 language=%27*%27;%(AdditionalManifestDependencies) + true + false + $(IntDir)$(TargetName).lib + Windows + 0x19000000 + $(ProfileDir)..\..\bin12\lib + + + + + Full + OnlyExplicitInline + Size + ..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories) + NDEBUG;_WINDOWS;_USRDLL;MSN_EXPORTS;%(PreprocessorDefinitions) + true + false + false + true + Fast + Use + msn_global.h + Level3 + 4996;%(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + ..\..\include;..\..\include\msapi + + + ws2_32.lib;comctl32.lib;Rpcrt4.lib;%(AdditionalDependencies) + type=%27Win32%27 name=%27Microsoft.Windows.Common-Controls%27 version=%276.0.0.0%27 processorArchitecture=%27X86%27 publicKeyToken=%276595b64144ccf1df%27 language=%27*%27;%(AdditionalManifestDependencies) + true + true + true + 0x19000000 + false + $(IntDir)$(TargetName).lib + Windows + $(ProfileDir)..\..\bin12\lib + + + + + Full + OnlyExplicitInline + Size + ..\..\include;..\..\plugins\ExternalAPI;%(AdditionalIncludeDirectories) + NDEBUG;_WINDOWS;_USRDLL;MSN_EXPORTS;%(PreprocessorDefinitions) + true + false + false + true + Fast + Use + msn_global.h + Level3 + 4996;%(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + ..\..\include;..\..\include\msapi + + + ws2_32.lib;comctl32.lib;Rpcrt4.lib;%(AdditionalDependencies) + type=%27Win32%27 name=%27Microsoft.Windows.Common-Controls%27 version=%276.0.0.0%27 processorArchitecture=%27*%27 publicKeyToken=%276595b64144ccf1df%27 language=%27*%27;%(AdditionalManifestDependencies) + true + true + true + 0x19000000 + false + $(IntDir)$(TargetName).lib + Windows + $(ProfileDir)..\..\bin12\lib + + + + + NotUsing + + + NotUsing + + + + Create + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/!Deprecated/MSN/msn_12.vcxproj.filters b/plugins/!Deprecated/MSN/msn_12.vcxproj.filters new file mode 100644 index 0000000000..b9585f0393 --- /dev/null +++ b/plugins/!Deprecated/MSN/msn_12.vcxproj.filters @@ -0,0 +1,151 @@ + + + + + {f9e2dbb2-638e-4619-a597-b259fe9cb28c} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {851bc859-759a-4ee2-a998-896565b85abc} + ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe + + + {a696658a-8e44-4b58-b62e-1afe9b41c748} + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Resource Files + + + Resource Files + + + + + Resource Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + \ No newline at end of file diff --git a/plugins/!Deprecated/MSN/proto_msn/Proto_MSN_10.vcxproj b/plugins/!Deprecated/MSN/proto_msn/Proto_MSN_10.vcxproj new file mode 100644 index 0000000000..b1f887ef0e --- /dev/null +++ b/plugins/!Deprecated/MSN/proto_msn/Proto_MSN_10.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {7BC6C3E7-2B17-4718-A82E-084798710E14} + Proto_MSN + + + + DynamicLibrary + true + Unicode + + + DynamicLibrary + true + Unicode + + + DynamicLibrary + false + Unicode + + + DynamicLibrary + false + Unicode + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\Icons\ + $(SolutionDir)$(Configuration)64\Icons\ + $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)\Icons\ + $(SolutionDir)$(Configuration)64\Icons\ + $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ + true + + + + Windows + true + false + $(SolutionDir)\lib + + + _DEBUG;%(PreprocessorDefinitions) + ..\..\..\include\msapi + + + + + Windows + true + false + $(SolutionDir)\lib + + + _DEBUG;%(PreprocessorDefinitions) + ..\..\..\include\msapi + + + + + Windows + true + false + $(SolutionDir)\lib + + + NDEBUG;%(PreprocessorDefinitions) + ..\..\..\include\msapi + + + + + Windows + true + false + $(SolutionDir)\lib + + + NDEBUG;%(PreprocessorDefinitions) + ..\..\..\include\msapi + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/!Deprecated/MSN/proto_msn/Proto_MSN_10.vcxproj.filters b/plugins/!Deprecated/MSN/proto_msn/Proto_MSN_10.vcxproj.filters new file mode 100644 index 0000000000..13a42fab36 --- /dev/null +++ b/plugins/!Deprecated/MSN/proto_msn/Proto_MSN_10.vcxproj.filters @@ -0,0 +1,23 @@ + + + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Header Files + + + + + Resource Files + + + \ No newline at end of file diff --git a/plugins/!Deprecated/MSN/proto_msn/Proto_MSN_12.vcxproj b/plugins/!Deprecated/MSN/proto_msn/Proto_MSN_12.vcxproj new file mode 100644 index 0000000000..e85378ccbb --- /dev/null +++ b/plugins/!Deprecated/MSN/proto_msn/Proto_MSN_12.vcxproj @@ -0,0 +1,135 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {7BC6C3E7-2B17-4718-A82E-084798710E14} + Proto_MSN + + + + DynamicLibrary + true + Unicode + v120_xp + + + DynamicLibrary + true + Unicode + v120_xp + + + DynamicLibrary + false + Unicode + v120_xp + + + DynamicLibrary + false + Unicode + v120_xp + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)\Icons\ + $(SolutionDir)$(Configuration)64\Icons\ + $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)\Icons\ + $(SolutionDir)$(Configuration)64\Icons\ + $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ + true + + + + Windows + true + false + $(SolutionDir)\lib + + + _DEBUG;%(PreprocessorDefinitions) + ..\..\..\include\msapi + + + + + Windows + true + false + $(SolutionDir)\lib + + + _DEBUG;%(PreprocessorDefinitions) + ..\..\..\include\msapi + + + + + Windows + true + false + $(SolutionDir)\lib + + + NDEBUG;%(PreprocessorDefinitions) + ..\..\..\include\msapi + + + + + Windows + true + false + $(SolutionDir)\lib + + + NDEBUG;%(PreprocessorDefinitions) + ..\..\..\include\msapi + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/!Deprecated/MSN/proto_msn/Proto_MSN_12.vcxproj.filters b/plugins/!Deprecated/MSN/proto_msn/Proto_MSN_12.vcxproj.filters new file mode 100644 index 0000000000..13a42fab36 --- /dev/null +++ b/plugins/!Deprecated/MSN/proto_msn/Proto_MSN_12.vcxproj.filters @@ -0,0 +1,23 @@ + + + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Header Files + + + + + Resource Files + + + \ No newline at end of file diff --git a/plugins/!Deprecated/MSN/proto_msn/res/Away.ico b/plugins/!Deprecated/MSN/proto_msn/res/Away.ico new file mode 100644 index 0000000000..861c161ed1 Binary files /dev/null and b/plugins/!Deprecated/MSN/proto_msn/res/Away.ico differ diff --git a/plugins/!Deprecated/MSN/proto_msn/res/Invisible.ico b/plugins/!Deprecated/MSN/proto_msn/res/Invisible.ico new file mode 100644 index 0000000000..382e3bf50d Binary files /dev/null and b/plugins/!Deprecated/MSN/proto_msn/res/Invisible.ico differ diff --git a/plugins/!Deprecated/MSN/proto_msn/res/Occupied.ico b/plugins/!Deprecated/MSN/proto_msn/res/Occupied.ico new file mode 100644 index 0000000000..47c63a4214 Binary files /dev/null and b/plugins/!Deprecated/MSN/proto_msn/res/Occupied.ico differ diff --git a/plugins/!Deprecated/MSN/proto_msn/res/Offline.ico b/plugins/!Deprecated/MSN/proto_msn/res/Offline.ico new file mode 100644 index 0000000000..d52328aa47 Binary files /dev/null and b/plugins/!Deprecated/MSN/proto_msn/res/Offline.ico differ diff --git a/plugins/!Deprecated/MSN/proto_msn/res/Online.ico b/plugins/!Deprecated/MSN/proto_msn/res/Online.ico new file mode 100644 index 0000000000..7388d3928f Binary files /dev/null and b/plugins/!Deprecated/MSN/proto_msn/res/Online.ico differ diff --git a/plugins/!Deprecated/MSN/proto_msn/res/Phone.ico b/plugins/!Deprecated/MSN/proto_msn/res/Phone.ico new file mode 100644 index 0000000000..144bc48e59 Binary files /dev/null and b/plugins/!Deprecated/MSN/proto_msn/res/Phone.ico differ diff --git a/plugins/!Deprecated/MSN/proto_msn/res/Proto_MSN.rc b/plugins/!Deprecated/MSN/proto_msn/res/Proto_MSN.rc new file mode 100644 index 0000000000..6d2a82de81 --- /dev/null +++ b/plugins/!Deprecated/MSN/proto_msn/res/Proto_MSN.rc @@ -0,0 +1,74 @@ +// Microsoft Visual C++ generated resource script. +// +#include "..\src\resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// Russian (Russia) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS) +LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "..\\src\\resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_ICON1 ICON "Offline.ico" +IDI_ICON2 ICON "Online.ico" +IDI_ICON3 ICON "Away.ico" +IDI_ICON4 ICON "Invisible.ico" +IDI_ICON6 ICON "Occupied.ico" +IDI_ICON8 ICON "Phone.ico" +#endif // Russian (Russia) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/plugins/!Deprecated/MSN/proto_msn/src/resource.h b/plugins/!Deprecated/MSN/proto_msn/src/resource.h new file mode 100644 index 0000000000..2842dcf4f3 --- /dev/null +++ b/plugins/!Deprecated/MSN/proto_msn/src/resource.h @@ -0,0 +1,21 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by Proto_MSN.rc +// +#define IDI_ICON1 105 +#define IDI_ICON2 104 +#define IDI_ICON3 128 +#define IDI_ICON4 130 +#define IDI_ICON6 159 +#define IDI_ICON8 1002 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 109 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/plugins/!Deprecated/MSN/res/inbox.ico b/plugins/!Deprecated/MSN/res/inbox.ico new file mode 100644 index 0000000000..7a5e461f6f Binary files /dev/null and b/plugins/!Deprecated/MSN/res/inbox.ico differ diff --git a/plugins/!Deprecated/MSN/res/invite.ico b/plugins/!Deprecated/MSN/res/invite.ico new file mode 100644 index 0000000000..25bd23be86 Binary files /dev/null and b/plugins/!Deprecated/MSN/res/invite.ico differ diff --git a/plugins/!Deprecated/MSN/res/list_al.ico b/plugins/!Deprecated/MSN/res/list_al.ico new file mode 100644 index 0000000000..05bd93fac4 Binary files /dev/null and b/plugins/!Deprecated/MSN/res/list_al.ico differ diff --git a/plugins/!Deprecated/MSN/res/list_bl.ico b/plugins/!Deprecated/MSN/res/list_bl.ico new file mode 100644 index 0000000000..58d39b6fcf Binary files /dev/null and b/plugins/!Deprecated/MSN/res/list_bl.ico differ diff --git a/plugins/!Deprecated/MSN/res/list_fl.ico b/plugins/!Deprecated/MSN/res/list_fl.ico new file mode 100644 index 0000000000..fb77874fc4 Binary files /dev/null and b/plugins/!Deprecated/MSN/res/list_fl.ico differ diff --git a/plugins/!Deprecated/MSN/res/list_ph.ico b/plugins/!Deprecated/MSN/res/list_ph.ico new file mode 100644 index 0000000000..da5a991a0c Binary files /dev/null and b/plugins/!Deprecated/MSN/res/list_ph.ico differ diff --git a/plugins/!Deprecated/MSN/res/list_rl.ico b/plugins/!Deprecated/MSN/res/list_rl.ico new file mode 100644 index 0000000000..1e22656d1d Binary files /dev/null and b/plugins/!Deprecated/MSN/res/list_rl.ico differ diff --git a/plugins/!Deprecated/MSN/res/msn.ico b/plugins/!Deprecated/MSN/res/msn.ico new file mode 100644 index 0000000000..818824f3a0 Binary files /dev/null and b/plugins/!Deprecated/MSN/res/msn.ico differ diff --git a/plugins/!Deprecated/MSN/res/msn.rc b/plugins/!Deprecated/MSN/res/msn.rc new file mode 100644 index 0000000000..b8b9fa5d98 --- /dev/null +++ b/plugins/!Deprecated/MSN/res/msn.rc @@ -0,0 +1,367 @@ +// Microsoft Visual C++ generated resource script. +// +#include "..\src\resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// Neutral resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU) +LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL +#pragma code_page(1252) + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_OPT_MSN DIALOGEX 0, 0, 304, 176 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_VISIBLE +EXSTYLE WS_EX_CONTROLPARENT +FONT 8, "MS Shell Dlg", 0, 0, 0x1 +BEGIN + GROUPBOX "MSN",IDC_STMSNGROUP,5,0,298,84,WS_GROUP + RTEXT "Live ID:",IDC_STATIC,16,20,52,8 + EDITTEXT IDC_HANDLE,72,18,100,12,ES_AUTOHSCROLL + RTEXT "Password:",IDC_STATIC,16,36,52,8 + EDITTEXT IDC_PASSWORD,72,34,100,12,ES_PASSWORD | ES_AUTOHSCROLL + RTEXT "Nickname:",IDC_STATIC,16,52,52,8 + EDITTEXT IDC_HANDLE2,72,50,100,12,ES_AUTOHSCROLL + CONTROL "Create a new Windows Live account",IDC_NEWMSNACCOUNTLINK, + "Hyperlink",WS_TABSTOP,21,68,208,8 + GROUPBOX "Expert",IDC_STATIC,4,84,298,88,WS_GROUP + CONTROL "Send message font color/size info inside messages",IDC_SENDFONTINFO, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,95,280,10 + CONTROL "Disable all contacts not included into my contact list",IDC_DISABLE_ANOTHER_CONTACTS, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,106,280,10 + CONTROL "Manage server groups",IDC_MANAGEGROUPS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,116,280,10 + CONTROL "Allow people on my contact list send messages to mobile device",IDC_MOBILESEND, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,126,280,10 + CONTROL "Run the following application when new Hotmail arrives",IDC_RUN_APP_ON_HOTMAIL, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,137,280,10 + EDITTEXT IDC_MAILER_APP,22,153,237,12,ES_AUTOHSCROLL + PUSHBUTTON "...",IDC_ENTER_MAILER_APP,265,153,15,12 +END + +IDD_OPT_MSN_CONN DIALOGEX 0, 0, 304, 127 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_VISIBLE +EXSTYLE WS_EX_CONTROLPARENT +FONT 8, "MS Shell Dlg", 0, 0, 0x1 +BEGIN + GROUPBOX "Connection settings",IDC_STATIC,4,3,298,64 + RTEXT "Direct:",IDC_STATIC,10,18,52,8 + EDITTEXT IDC_DIRECTSERVER,68,16,135,12,ES_AUTOHSCROLL + LTEXT " 1863",IDC_STATIC,209,16,28,12,SS_SUNKEN + RTEXT "Gateway:",IDC_STATIC,10,32,52,8 + EDITTEXT IDC_GATEWAYSERVER,68,30,135,12,ES_AUTOHSCROLL + CONTROL " 80",IDC_STATIC,"Static",SS_SIMPLE | SS_SUNKEN | WS_GROUP,209,30,28,12 + PUSHBUTTON "Reset",IDC_RESETSERVER,244,16,48,12 + CONTROL "Notify me when a message delivery has failed",IDC_SLOWSEND, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,49,285,8 + GROUPBOX "Incoming file transfers",IDC_STATIC,4,74,298,48 + COMBOBOX IDC_HOSTOPT,10,86,285,30,CBS_DROPDOWNLIST | WS_TABSTOP + RTEXT "Your host (or router):",IDC_STATIC,10,103,90,8 + EDITTEXT IDC_YOURHOST,105,102,190,12,ES_AUTOHSCROLL +END + +IDD_LISTSMGR DIALOGEX 0, 0, 304, 228 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_VISIBLE +EXSTYLE WS_EX_CONTROLPARENT +FONT 8, "MS Shell Dlg", 0, 0, 0x1 +BEGIN + GROUPBOX "Server List Manager",IDC_STATIC,4,0,298,224 + CONTROL "",IDC_LIST,"CListControl",WS_TABSTOP | 0x1f3,9,12,287,169,WS_EX_CLIENTEDGE + ICON "",IDC_ICON_LC,10,184,20,20,SS_REALSIZEIMAGE + LTEXT "Contact is on your local list",IDC_STATIC,28,184,144,8 + ICON "",IDC_ICON_FL,10,197,20,20,SS_REALSIZEIMAGE + LTEXT "Contact is included into your server list",IDC_STATIC,28,197,144,8 + ICON "",IDC_ICON_AL,187,184,20,20,SS_REALSIZEIMAGE + LTEXT "Allowed (active) contact",IDC_STATIC,204,184,82,8 + ICON "",IDC_ICON_BL,187,196,20,20,SS_REALSIZEIMAGE + LTEXT "Blocked contact",IDC_STATIC,204,196,82,8 + ICON "",IDC_ICON_RL,10,209,21,20,SS_REALSIZEIMAGE + LTEXT "Somebody included you in his/her server list",IDC_STATIC,28,209,144,8 + PUSHBUTTON "Refresh",IDC_LISTREFRESH,218,209,80,13 +END + +IDD_OPT_NOTIFY DIALOGEX 0, 0, 289, 126 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_CHILD +EXSTYLE WS_EX_CONTROLPARENT +FONT 8, "MS Shell Dlg", 0, 0, 0x1 +BEGIN + GROUPBOX "Hotmail",IDC_STATIC,5,7,262,60 + CONTROL "Disable Popup notifications",IDC_DISABLEHOTMAILPOPUP, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,18,245,10 + CONTROL "Disable Tray notifications",IDC_DISABLEHOTMAILTRAY, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,41,245,10 + CONTROL "Ignore new messages not in Inbox folder",IDC_DISABLEHOTJUNK, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,52,245,10 + GROUPBOX "Other",IDC_STATIC,5,68,262,49 + CONTROL "Display errors using popups",IDC_ERRORS_USING_POPUPS, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,79,245,10 + CONTROL "Enable 'Chat Session Established' popup",IDC_NOTIFY_FIRSTMSG, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,92,245,10 + CONTROL "Enable 'Contact left channel' popup",IDC_NOTIFY_ENDSESSION, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,105,245,8 + CONTROL "Disable Contact List notifications",IDC_DISABLEHOTMAILCL, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,30,245,10 +END + +IDD_SETNICKNAME DIALOGEX 0, 0, 187, 42 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Set Nickname" +FONT 8, "MS Shell Dlg", 0, 0, 0x1 +BEGIN + EDITTEXT IDC_NICKNAME,5,5,177,12,ES_AUTOHSCROLL + DEFPUSHBUTTON "OK",IDOK,36,23,50,14 + PUSHBUTTON "Cancel",IDCANCEL,102,23,50,14 +END + +IDD_USEROPTS DIALOGEX 0, 0, 224, 132 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD +FONT 8, "MS Shell Dlg", 0, 0, 0x1 +BEGIN + CONTROL "",IDC_CCARD_TAB1,"SysTabControl32",0x0,0,0,223,117 +END + +IDD_CARD_GEN DIALOGEX 0, 0, 278, 130 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_SYSMENU +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + LTEXT "Mobile Device (used for SMS)",IDC_STATIC,7,8,126,8 + EDITTEXT IDC_CARD_GEN_PHONE,7,17,122,12,ES_AUTOHSCROLL + EDITTEXT IDC_CARD_GEN_IM2,7,73,125,13,ES_AUTOHSCROLL + LTEXT "Spouse/Partner",IDC_STATIC,7,64,122,8 + EDITTEXT IDC_EDIT5,143,18,121,12,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT6,145,74,118,12,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT7,144,46,119,12,ES_AUTOHSCROLL + LTEXT "Middle Name",IDC_STATIC,145,35,117,8 + LTEXT "First Name",IDC_STATIC,143,8,120,8 + LTEXT "Last Name",IDC_STATIC,145,63,116,8 + COMBOBOX IDC_COMBO1,7,100,67,30,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_COMBO2,77,100,28,30,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP + EDITTEXT IDC_CARD_GEN_IM3,105,100,25,12,ES_AUTOHSCROLL + COMBOBOX IDC_COMBO3,144,100,67,30,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_COMBO4,212,100,28,30,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP + EDITTEXT IDC_CARD_GEN_IM4,240,100,25,12,ES_AUTOHSCROLL + LTEXT "Anniversary",IDC_STATIC,7,91,123,8 + LTEXT "Birthday",IDC_STATIC,145,91,123,8 + EDITTEXT IDC_CARD_GEN_IM5,7,47,125,13,ES_AUTOHSCROLL + LTEXT "Nickname",IDC_STATIC,7,38,94,8 +END + +IDD_CARD_CONTACT DIALOGEX 0, 0, 344, 156 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_SYSMENU +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + EDITTEXT IDC_EDIT1,7,19,107,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT2,7,48,107,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT3,7,77,107,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT4,7,102,107,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT5,7,123,107,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT6,130,18,107,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT7,130,46,107,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT8,130,74,107,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT9,130,100,107,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT10,130,121,107,14,ES_AUTOHSCROLL + LTEXT "Middle Name",IDC_STATIC,129,7,41,8 + LTEXT "First Name",IDC_STATIC,7,7,35,8 + LTEXT "Last Name",IDC_STATIC,7,36,34,8 +END + +IDD_ACCMGRUI DIALOGEX 0, 0, 186, 134 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_VISIBLE +EXSTYLE WS_EX_CONTROLPARENT +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + LTEXT "Live ID:",IDC_STATIC,0,0,53,12 + EDITTEXT IDC_HANDLE,54,0,131,12,ES_AUTOHSCROLL + LTEXT "Password:",IDC_STATIC,0,16,53,12 + EDITTEXT IDC_PASSWORD,54,16,131,12,ES_PASSWORD | ES_AUTOHSCROLL + CONTROL "Create a new Windows Live account",IDC_NEWMSNACCOUNTLINK, + "Hyperlink",WS_TABSTOP,0,60,183,12 + LTEXT "Place:",IDC_STATIC,0,31,53,12 + EDITTEXT IDC_PLACE,54,31,131,12,ES_AUTOHSCROLL +END + +IDD_DELETECONTACT DIALOGEX 0, 0, 213, 76 +STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION +CAPTION "MSN Delete Contact" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + DEFPUSHBUTTON "OK",IDOK,82,55,50,14 + CONTROL "Remove from Hotmail Address book",IDC_REMOVEHOT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,32,199,10 + CONTROL "Block Contact",IDC_REMOVEBLOCK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,18,199,10 +END + +IDD_CHATROOM_INVITE DIALOGEX 0, 0, 190, 179 +STYLE DS_SETFONT | DS_3DLOOK | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU +EXSTYLE WS_EX_TOPMOST +CAPTION "Invite Contact To Chat" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + LTEXT "Live ID",-1,7,128,43,9 + PUSHBUTTON "&Invite",IDOK,29,159,46,14 + PUSHBUTTON "&Cancel",IDCANCEL,112,159,45,14 + CONTROL "",IDC_CCLIST,"CListControl",WS_TABSTOP | 0x16f,7,4,174,119,WS_EX_CLIENTEDGE + EDITTEXT IDC_EDITSCR,7,138,121,12,ES_AUTOHSCROLL + PUSHBUTTON "Add",IDC_ADDSCR,133,136,49,14 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_OPT_MSN, DIALOG + BEGIN + VERTGUIDE, 12 + VERTGUIDE, 292 + END + + IDD_OPT_MSN_CONN, DIALOG + BEGIN + VERTGUIDE, 10 + VERTGUIDE, 68 + VERTGUIDE, 203 + VERTGUIDE, 209 + VERTGUIDE, 237 + VERTGUIDE, 295 + END + + IDD_LISTSMGR, DIALOG + BEGIN + END + + IDD_OPT_NOTIFY, DIALOG + BEGIN + RIGHTMARGIN, 276 + VERTGUIDE, 5 + VERTGUIDE, 14 + VERTGUIDE, 259 + VERTGUIDE, 267 + BOTTOMMARGIN, 123 + END + + IDD_SETNICKNAME, DIALOG + BEGIN + END + + IDD_USEROPTS, DIALOG + BEGIN + END + + IDD_CARD_GEN, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 271 + TOPMARGIN, 7 + BOTTOMMARGIN, 123 + END + + IDD_CARD_CONTACT, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 337 + TOPMARGIN, 7 + BOTTOMMARGIN, 149 + END + + IDD_ACCMGRUI, DIALOG + BEGIN + RIGHTMARGIN, 183 + TOPMARGIN, 7 + BOTTOMMARGIN, 106 + END + + IDD_DELETECONTACT, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 206 + TOPMARGIN, 7 + BOTTOMMARGIN, 69 + END + + IDD_CHATROOM_INVITE, DIALOG + BEGIN + RIGHTMARGIN, 188 + TOPMARGIN, 4 + BOTTOMMARGIN, 173 + END +END +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_MSN ICON "msn.ico" +IDI_MSNBLOCK ICON "msnblock.ico" +IDI_SERVICES ICON "services.ico" +IDI_INBOX ICON "inbox.ico" +IDI_INVITE ICON "invite.ico" +IDI_NETMEETING ICON "netmeeting.ico" +IDI_PROFILE ICON "profile.ico" +IDI_LIST_FL ICON "list_fl.ico" +IDI_LIST_AL ICON "list_al.ico" +IDI_LIST_BL ICON "list_bl.ico" +IDI_LIST_RL ICON "list_rl.ico" +IDI_LIST_LC ICON "list_ph.ico" + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "..\\src\\resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include \r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + +#endif // Neutral resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/plugins/!Deprecated/MSN/res/msnblock.ico b/plugins/!Deprecated/MSN/res/msnblock.ico new file mode 100644 index 0000000000..26c0a6d040 Binary files /dev/null and b/plugins/!Deprecated/MSN/res/msnblock.ico differ diff --git a/plugins/!Deprecated/MSN/res/netmeeting.ico b/plugins/!Deprecated/MSN/res/netmeeting.ico new file mode 100644 index 0000000000..40e341ec16 Binary files /dev/null and b/plugins/!Deprecated/MSN/res/netmeeting.ico differ diff --git a/plugins/!Deprecated/MSN/res/profile.ico b/plugins/!Deprecated/MSN/res/profile.ico new file mode 100644 index 0000000000..2056f57798 Binary files /dev/null and b/plugins/!Deprecated/MSN/res/profile.ico differ diff --git a/plugins/!Deprecated/MSN/res/services.ico b/plugins/!Deprecated/MSN/res/services.ico new file mode 100644 index 0000000000..2aca9a8bb4 Binary files /dev/null and b/plugins/!Deprecated/MSN/res/services.ico differ diff --git a/plugins/!Deprecated/MSN/res/version.rc b/plugins/!Deprecated/MSN/res/version.rc new file mode 100644 index 0000000000..df06238f1f --- /dev/null +++ b/plugins/!Deprecated/MSN/res/version.rc @@ -0,0 +1,39 @@ +#ifdef APSTUDIO_INVOKED +#error this file is not editable by Microsoft Visual C++ +#endif //APSTUDIO_INVOKED + +#include +#include "..\src\version.h" + +VS_VERSION_INFO VERSIONINFO + FILEVERSION __FILEVERSION_STRING + PRODUCTVERSION __FILEVERSION_STRING + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "000004b0" + BEGIN + VALUE "CompanyName", "Boris Krasnovskiy, George Hazan, Richard Hughes" + VALUE "FileDescription", "Miranda NG MSN Messenger plugin" + VALUE "FileVersion", __VERSION_STRING + VALUE "InternalName", "msn" + VALUE "LegalCopyright", "Copyright (c) 2001-2009 Boris Krasnovskiy, George Hazan, Richard Hughes" + VALUE "OriginalFilename", "msn.dll" + VALUE "ProductName", "Miranda" + VALUE "ProductVersion", __VERSION_STRING + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0, 1200 + END +END diff --git a/plugins/!Deprecated/MSN/src/des.c b/plugins/!Deprecated/MSN/src/des.c new file mode 100644 index 0000000000..030fb983cd --- /dev/null +++ b/plugins/!Deprecated/MSN/src/des.c @@ -0,0 +1,639 @@ +/* + * FIPS-46-3 compliant Triple-DES implementation + * + * Copyright (C) 2006-2007 Christophe Devine + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License, version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA + */ +/* + * DES, on which TDES is based, was originally designed by IBM in + * 1974 and adopted as a standard by NIST (formerly NBS). + * + * http://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf + */ + + +#ifndef __GNUC__ +#pragma hdrstop +#endif + +#ifndef _CRT_SECURE_NO_DEPRECATE +#define _CRT_SECURE_NO_DEPRECATE 1 +#endif + +#include + +#include "des.h" + +/* + * 32-bit integer manipulation macros (big endian) + */ +#ifndef GET_UINT32_BE +#define GET_UINT32_BE(n,b,i) \ +{ \ + (n) = ( (unsigned long) (b)[(i) ] << 24 ) \ + | ( (unsigned long) (b)[(i) + 1] << 16 ) \ + | ( (unsigned long) (b)[(i) + 2] << 8 ) \ + | ( (unsigned long) (b)[(i) + 3] ); \ +} +#endif +#ifndef PUT_UINT32_BE +#define PUT_UINT32_BE(n,b,i) \ +{ \ + (b)[(i) ] = (unsigned char) ( (n) >> 24 ); \ + (b)[(i) + 1] = (unsigned char) ( (n) >> 16 ); \ + (b)[(i) + 2] = (unsigned char) ( (n) >> 8 ); \ + (b)[(i) + 3] = (unsigned char) ( (n) ); \ +} +#endif + +/* + * Expanded DES S-boxes + */ +static const unsigned long SB1[64] = +{ + 0x01010400, 0x00000000, 0x00010000, 0x01010404, + 0x01010004, 0x00010404, 0x00000004, 0x00010000, + 0x00000400, 0x01010400, 0x01010404, 0x00000400, + 0x01000404, 0x01010004, 0x01000000, 0x00000004, + 0x00000404, 0x01000400, 0x01000400, 0x00010400, + 0x00010400, 0x01010000, 0x01010000, 0x01000404, + 0x00010004, 0x01000004, 0x01000004, 0x00010004, + 0x00000000, 0x00000404, 0x00010404, 0x01000000, + 0x00010000, 0x01010404, 0x00000004, 0x01010000, + 0x01010400, 0x01000000, 0x01000000, 0x00000400, + 0x01010004, 0x00010000, 0x00010400, 0x01000004, + 0x00000400, 0x00000004, 0x01000404, 0x00010404, + 0x01010404, 0x00010004, 0x01010000, 0x01000404, + 0x01000004, 0x00000404, 0x00010404, 0x01010400, + 0x00000404, 0x01000400, 0x01000400, 0x00000000, + 0x00010004, 0x00010400, 0x00000000, 0x01010004 +}; + +static const unsigned long SB2[64] = +{ + 0x80108020, 0x80008000, 0x00008000, 0x00108020, + 0x00100000, 0x00000020, 0x80100020, 0x80008020, + 0x80000020, 0x80108020, 0x80108000, 0x80000000, + 0x80008000, 0x00100000, 0x00000020, 0x80100020, + 0x00108000, 0x00100020, 0x80008020, 0x00000000, + 0x80000000, 0x00008000, 0x00108020, 0x80100000, + 0x00100020, 0x80000020, 0x00000000, 0x00108000, + 0x00008020, 0x80108000, 0x80100000, 0x00008020, + 0x00000000, 0x00108020, 0x80100020, 0x00100000, + 0x80008020, 0x80100000, 0x80108000, 0x00008000, + 0x80100000, 0x80008000, 0x00000020, 0x80108020, + 0x00108020, 0x00000020, 0x00008000, 0x80000000, + 0x00008020, 0x80108000, 0x00100000, 0x80000020, + 0x00100020, 0x80008020, 0x80000020, 0x00100020, + 0x00108000, 0x00000000, 0x80008000, 0x00008020, + 0x80000000, 0x80100020, 0x80108020, 0x00108000 +}; + +static const unsigned long SB3[64] = +{ + 0x00000208, 0x08020200, 0x00000000, 0x08020008, + 0x08000200, 0x00000000, 0x00020208, 0x08000200, + 0x00020008, 0x08000008, 0x08000008, 0x00020000, + 0x08020208, 0x00020008, 0x08020000, 0x00000208, + 0x08000000, 0x00000008, 0x08020200, 0x00000200, + 0x00020200, 0x08020000, 0x08020008, 0x00020208, + 0x08000208, 0x00020200, 0x00020000, 0x08000208, + 0x00000008, 0x08020208, 0x00000200, 0x08000000, + 0x08020200, 0x08000000, 0x00020008, 0x00000208, + 0x00020000, 0x08020200, 0x08000200, 0x00000000, + 0x00000200, 0x00020008, 0x08020208, 0x08000200, + 0x08000008, 0x00000200, 0x00000000, 0x08020008, + 0x08000208, 0x00020000, 0x08000000, 0x08020208, + 0x00000008, 0x00020208, 0x00020200, 0x08000008, + 0x08020000, 0x08000208, 0x00000208, 0x08020000, + 0x00020208, 0x00000008, 0x08020008, 0x00020200 +}; + +static const unsigned long SB4[64] = +{ + 0x00802001, 0x00002081, 0x00002081, 0x00000080, + 0x00802080, 0x00800081, 0x00800001, 0x00002001, + 0x00000000, 0x00802000, 0x00802000, 0x00802081, + 0x00000081, 0x00000000, 0x00800080, 0x00800001, + 0x00000001, 0x00002000, 0x00800000, 0x00802001, + 0x00000080, 0x00800000, 0x00002001, 0x00002080, + 0x00800081, 0x00000001, 0x00002080, 0x00800080, + 0x00002000, 0x00802080, 0x00802081, 0x00000081, + 0x00800080, 0x00800001, 0x00802000, 0x00802081, + 0x00000081, 0x00000000, 0x00000000, 0x00802000, + 0x00002080, 0x00800080, 0x00800081, 0x00000001, + 0x00802001, 0x00002081, 0x00002081, 0x00000080, + 0x00802081, 0x00000081, 0x00000001, 0x00002000, + 0x00800001, 0x00002001, 0x00802080, 0x00800081, + 0x00002001, 0x00002080, 0x00800000, 0x00802001, + 0x00000080, 0x00800000, 0x00002000, 0x00802080 +}; + +static const unsigned long SB5[64] = +{ + 0x00000100, 0x02080100, 0x02080000, 0x42000100, + 0x00080000, 0x00000100, 0x40000000, 0x02080000, + 0x40080100, 0x00080000, 0x02000100, 0x40080100, + 0x42000100, 0x42080000, 0x00080100, 0x40000000, + 0x02000000, 0x40080000, 0x40080000, 0x00000000, + 0x40000100, 0x42080100, 0x42080100, 0x02000100, + 0x42080000, 0x40000100, 0x00000000, 0x42000000, + 0x02080100, 0x02000000, 0x42000000, 0x00080100, + 0x00080000, 0x42000100, 0x00000100, 0x02000000, + 0x40000000, 0x02080000, 0x42000100, 0x40080100, + 0x02000100, 0x40000000, 0x42080000, 0x02080100, + 0x40080100, 0x00000100, 0x02000000, 0x42080000, + 0x42080100, 0x00080100, 0x42000000, 0x42080100, + 0x02080000, 0x00000000, 0x40080000, 0x42000000, + 0x00080100, 0x02000100, 0x40000100, 0x00080000, + 0x00000000, 0x40080000, 0x02080100, 0x40000100 +}; + +static const unsigned long SB6[64] = +{ + 0x20000010, 0x20400000, 0x00004000, 0x20404010, + 0x20400000, 0x00000010, 0x20404010, 0x00400000, + 0x20004000, 0x00404010, 0x00400000, 0x20000010, + 0x00400010, 0x20004000, 0x20000000, 0x00004010, + 0x00000000, 0x00400010, 0x20004010, 0x00004000, + 0x00404000, 0x20004010, 0x00000010, 0x20400010, + 0x20400010, 0x00000000, 0x00404010, 0x20404000, + 0x00004010, 0x00404000, 0x20404000, 0x20000000, + 0x20004000, 0x00000010, 0x20400010, 0x00404000, + 0x20404010, 0x00400000, 0x00004010, 0x20000010, + 0x00400000, 0x20004000, 0x20000000, 0x00004010, + 0x20000010, 0x20404010, 0x00404000, 0x20400000, + 0x00404010, 0x20404000, 0x00000000, 0x20400010, + 0x00000010, 0x00004000, 0x20400000, 0x00404010, + 0x00004000, 0x00400010, 0x20004010, 0x00000000, + 0x20404000, 0x20000000, 0x00400010, 0x20004010 +}; + +static const unsigned long SB7[64] = +{ + 0x00200000, 0x04200002, 0x04000802, 0x00000000, + 0x00000800, 0x04000802, 0x00200802, 0x04200800, + 0x04200802, 0x00200000, 0x00000000, 0x04000002, + 0x00000002, 0x04000000, 0x04200002, 0x00000802, + 0x04000800, 0x00200802, 0x00200002, 0x04000800, + 0x04000002, 0x04200000, 0x04200800, 0x00200002, + 0x04200000, 0x00000800, 0x00000802, 0x04200802, + 0x00200800, 0x00000002, 0x04000000, 0x00200800, + 0x04000000, 0x00200800, 0x00200000, 0x04000802, + 0x04000802, 0x04200002, 0x04200002, 0x00000002, + 0x00200002, 0x04000000, 0x04000800, 0x00200000, + 0x04200800, 0x00000802, 0x00200802, 0x04200800, + 0x00000802, 0x04000002, 0x04200802, 0x04200000, + 0x00200800, 0x00000000, 0x00000002, 0x04200802, + 0x00000000, 0x00200802, 0x04200000, 0x00000800, + 0x04000002, 0x04000800, 0x00000800, 0x00200002 +}; + +static const unsigned long SB8[64] = +{ + 0x10001040, 0x00001000, 0x00040000, 0x10041040, + 0x10000000, 0x10001040, 0x00000040, 0x10000000, + 0x00040040, 0x10040000, 0x10041040, 0x00041000, + 0x10041000, 0x00041040, 0x00001000, 0x00000040, + 0x10040000, 0x10000040, 0x10001000, 0x00001040, + 0x00041000, 0x00040040, 0x10040040, 0x10041000, + 0x00001040, 0x00000000, 0x00000000, 0x10040040, + 0x10000040, 0x10001000, 0x00041040, 0x00040000, + 0x00041040, 0x00040000, 0x10041000, 0x00001000, + 0x00000040, 0x10040040, 0x00001000, 0x00041040, + 0x10001000, 0x00000040, 0x10000040, 0x10040000, + 0x10040040, 0x10000000, 0x00040000, 0x10001040, + 0x00000000, 0x10041040, 0x00040040, 0x10000040, + 0x10040000, 0x10001000, 0x10001040, 0x00000000, + 0x10041040, 0x00041000, 0x00041000, 0x00001040, + 0x00001040, 0x00040040, 0x10000000, 0x10041000 +}; + +/* + * PC1: left and right halves bit-swap + */ +static const unsigned long LHs[16] = +{ + 0x00000000, 0x00000001, 0x00000100, 0x00000101, + 0x00010000, 0x00010001, 0x00010100, 0x00010101, + 0x01000000, 0x01000001, 0x01000100, 0x01000101, + 0x01010000, 0x01010001, 0x01010100, 0x01010101 +}; + +static const unsigned long RHs[16] = +{ + 0x00000000, 0x01000000, 0x00010000, 0x01010000, + 0x00000100, 0x01000100, 0x00010100, 0x01010100, + 0x00000001, 0x01000001, 0x00010001, 0x01010001, + 0x00000101, 0x01000101, 0x00010101, 0x01010101, +}; + +/* + * Initial Permutation macro + */ +#define DES_IP(X,Y) \ +{ \ + T = ((X >> 4) ^ Y) & 0x0F0F0F0F; Y ^= T; X ^= (T << 4); \ + T = ((X >> 16) ^ Y) & 0x0000FFFF; Y ^= T; X ^= (T << 16); \ + T = ((Y >> 2) ^ X) & 0x33333333; X ^= T; Y ^= (T << 2); \ + T = ((Y >> 8) ^ X) & 0x00FF00FF; X ^= T; Y ^= (T << 8); \ + Y = ((Y << 1) | (Y >> 31)) & 0xFFFFFFFF; \ + T = (X ^ Y) & 0xAAAAAAAA; Y ^= T; X ^= T; \ + X = ((X << 1) | (X >> 31)) & 0xFFFFFFFF; \ +} + +/* + * Final Permutation macro + */ +#define DES_FP(X,Y) \ +{ \ + X = ((X << 31) | (X >> 1)) & 0xFFFFFFFF; \ + T = (X ^ Y) & 0xAAAAAAAA; X ^= T; Y ^= T; \ + Y = ((Y << 31) | (Y >> 1)) & 0xFFFFFFFF; \ + T = ((Y >> 8) ^ X) & 0x00FF00FF; X ^= T; Y ^= (T << 8); \ + T = ((Y >> 2) ^ X) & 0x33333333; X ^= T; Y ^= (T << 2); \ + T = ((X >> 16) ^ Y) & 0x0000FFFF; Y ^= T; X ^= (T << 16); \ + T = ((X >> 4) ^ Y) & 0x0F0F0F0F; Y ^= T; X ^= (T << 4); \ +} + +/* + * DES round macro + */ +#define DES_ROUND(X,Y) \ +{ \ + T = *SK++ ^ X; \ + Y ^= SB8[ (T ) & 0x3F ] ^ \ + SB6[ (T >> 8) & 0x3F ] ^ \ + SB4[ (T >> 16) & 0x3F ] ^ \ + SB2[ (T >> 24) & 0x3F ]; \ + \ + T = *SK++ ^ ((X << 28) | (X >> 4)); \ + Y ^= SB7[ (T ) & 0x3F ] ^ \ + SB5[ (T >> 8) & 0x3F ] ^ \ + SB3[ (T >> 16) & 0x3F ] ^ \ + SB1[ (T >> 24) & 0x3F ]; \ +} + +static void des_main_ks( unsigned long SK[32], unsigned char key[8] ) +{ + int i; + unsigned long X, Y, T; + + GET_UINT32_BE( X, key, 0 ); + GET_UINT32_BE( Y, key, 4 ); + + /* + * Permuted Choice 1 + */ + T = ((Y >> 4) ^ X) & 0x0F0F0F0F; X ^= T; Y ^= (T << 4); + T = ((Y ) ^ X) & 0x10101010; X ^= T; Y ^= (T ); + + X = (LHs[ (X ) & 0xF] << 3) | (LHs[ (X >> 8) & 0xF ] << 2) + | (LHs[ (X >> 16) & 0xF] << 1) | (LHs[ (X >> 24) & 0xF ] ) + | (LHs[ (X >> 5) & 0xF] << 7) | (LHs[ (X >> 13) & 0xF ] << 6) + | (LHs[ (X >> 21) & 0xF] << 5) | (LHs[ (X >> 29) & 0xF ] << 4); + + Y = (RHs[ (Y >> 1) & 0xF] << 3) | (RHs[ (Y >> 9) & 0xF ] << 2) + | (RHs[ (Y >> 17) & 0xF] << 1) | (RHs[ (Y >> 25) & 0xF ] ) + | (RHs[ (Y >> 4) & 0xF] << 7) | (RHs[ (Y >> 12) & 0xF ] << 6) + | (RHs[ (Y >> 20) & 0xF] << 5) | (RHs[ (Y >> 28) & 0xF ] << 4); + + X &= 0x0FFFFFFF; + Y &= 0x0FFFFFFF; + + /* + * calculate subkeys + */ + for ( i = 0; i < 16; i++ ) + { + if ( i < 2 || i == 8 || i == 15 ) + { + X = ((X << 1) | (X >> 27)) & 0x0FFFFFFF; + Y = ((Y << 1) | (Y >> 27)) & 0x0FFFFFFF; + } + else + { + X = ((X << 2) | (X >> 26)) & 0x0FFFFFFF; + Y = ((Y << 2) | (Y >> 26)) & 0x0FFFFFFF; + } + + *SK++ = ((X << 4) & 0x24000000) | ((X << 28) & 0x10000000) + | ((X << 14) & 0x08000000) | ((X << 18) & 0x02080000) + | ((X << 6) & 0x01000000) | ((X << 9) & 0x00200000) + | ((X >> 1) & 0x00100000) | ((X << 10) & 0x00040000) + | ((X << 2) & 0x00020000) | ((X >> 10) & 0x00010000) + | ((Y >> 13) & 0x00002000) | ((Y >> 4) & 0x00001000) + | ((Y << 6) & 0x00000800) | ((Y >> 1) & 0x00000400) + | ((Y >> 14) & 0x00000200) | ((Y ) & 0x00000100) + | ((Y >> 5) & 0x00000020) | ((Y >> 10) & 0x00000010) + | ((Y >> 3) & 0x00000008) | ((Y >> 18) & 0x00000004) + | ((Y >> 26) & 0x00000002) | ((Y >> 24) & 0x00000001); + + *SK++ = ((X << 15) & 0x20000000) | ((X << 17) & 0x10000000) + | ((X << 10) & 0x08000000) | ((X << 22) & 0x04000000) + | ((X >> 2) & 0x02000000) | ((X << 1) & 0x01000000) + | ((X << 16) & 0x00200000) | ((X << 11) & 0x00100000) + | ((X << 3) & 0x00080000) | ((X >> 6) & 0x00040000) + | ((X << 15) & 0x00020000) | ((X >> 4) & 0x00010000) + | ((Y >> 2) & 0x00002000) | ((Y << 8) & 0x00001000) + | ((Y >> 14) & 0x00000808) | ((Y >> 9) & 0x00000400) + | ((Y ) & 0x00000200) | ((Y << 7) & 0x00000100) + | ((Y >> 7) & 0x00000020) | ((Y >> 3) & 0x00000011) + | ((Y << 2) & 0x00000004) | ((Y >> 21) & 0x00000002); + } +} + +/* + * DES key schedule (56-bit) + */ +void des_set_key( des_context *ctx, unsigned char key[8] ) +{ + int i; + + des_main_ks( ctx->esk, key ); + + for ( i = 0; i < 32; i += 2 ) + { + ctx->dsk[i ] = ctx->esk[30 - i]; + ctx->dsk[i + 1] = ctx->esk[31 - i]; + } +} + +static void des_crypt( unsigned long SK[32], + unsigned char input[8], + unsigned char output[8] ) +{ + unsigned long X, Y, T; + + GET_UINT32_BE( X, input, 0 ); + GET_UINT32_BE( Y, input, 4 ); + + DES_IP( X, Y ); + + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + + DES_FP( Y, X ); + + PUT_UINT32_BE( Y, output, 0 ); + PUT_UINT32_BE( X, output, 4 ); +} + +/* + * DES block encryption (ECB mode) + */ +void des_encrypt( des_context *ctx, + unsigned char input[8], + unsigned char output[8] ) +{ + des_crypt( ctx->esk, input, output ); +} + +/* + * DES block decryption (ECB mode) + */ +void des_decrypt( des_context *ctx, + unsigned char input[8], + unsigned char output[8] ) +{ + des_crypt( ctx->dsk, input, output ); +} + +/* + * DES-CBC buffer encryption + */ +void des_cbc_encrypt( des_context *ctx, + unsigned char iv[8], + unsigned char *input, + unsigned char *output, + int len ) +{ + int i; + + while( len > 0 ) + { + for ( i = 0; i < 8; i++ ) + output[i] = input[i] ^ iv[i]; + + des_crypt( ctx->esk, output, output ); + memcpy( iv, output, 8 ); + + input += 8; + output += 8; + len -= 8; + } +} + +/* + * DES-CBC buffer decryption + */ +void des_cbc_decrypt( des_context *ctx, + unsigned char iv[8], + unsigned char *input, + unsigned char *output, + int len ) +{ + int i; + unsigned char temp[8]; + + while( len > 0 ) + { + memcpy( temp, input, 8 ); + des_crypt( ctx->dsk, input, output ); + + for ( i = 0; i < 8; i++ ) + output[i] = output[i] ^ iv[i]; + + memcpy( iv, temp, 8 ); + + input += 8; + output += 8; + len -= 8; + } +} + +/* + * Triple-DES key schedule (112-bit) + */ +void des3_set_2keys( des3_context *ctx, unsigned char key[16] ) +{ + int i; + + des_main_ks( ctx->esk , key ); + des_main_ks( ctx->dsk + 32, key + 8 ); + + for ( i = 0; i < 32; i += 2 ) + { + ctx->dsk[i ] = ctx->esk[30 - i]; + ctx->dsk[i + 1] = ctx->esk[31 - i]; + + ctx->esk[i + 32] = ctx->dsk[62 - i]; + ctx->esk[i + 33] = ctx->dsk[63 - i]; + + ctx->esk[i + 64] = ctx->esk[ i]; + ctx->esk[i + 65] = ctx->esk[ 1 + i]; + + ctx->dsk[i + 64] = ctx->dsk[ i]; + ctx->dsk[i + 65] = ctx->dsk[ 1 + i]; + } +} + +/* + * Triple-DES key schedule (168-bit) + */ +void des3_set_3keys( des3_context *ctx, unsigned char key[24] ) +{ + int i; + + des_main_ks( ctx->esk , key ); + des_main_ks( ctx->dsk + 32, key + 8 ); + des_main_ks( ctx->esk + 64, key + 16 ); + + for ( i = 0; i < 32; i += 2 ) + { + ctx->dsk[i ] = ctx->esk[94 - i]; + ctx->dsk[i + 1] = ctx->esk[95 - i]; + + ctx->esk[i + 32] = ctx->dsk[62 - i]; + ctx->esk[i + 33] = ctx->dsk[63 - i]; + + ctx->dsk[i + 64] = ctx->esk[30 - i]; + ctx->dsk[i + 65] = ctx->esk[31 - i]; + } +} + +static void des3_crypt( unsigned long SK[96], + unsigned char input[8], + unsigned char output[8] ) +{ + unsigned long X, Y, T; + + GET_UINT32_BE( X, input, 0 ); + GET_UINT32_BE( Y, input, 4 ); + + DES_IP( X, Y ); + + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + + DES_ROUND( X, Y ); DES_ROUND( Y, X ); + DES_ROUND( X, Y ); DES_ROUND( Y, X ); + DES_ROUND( X, Y ); DES_ROUND( Y, X ); + DES_ROUND( X, Y ); DES_ROUND( Y, X ); + DES_ROUND( X, Y ); DES_ROUND( Y, X ); + DES_ROUND( X, Y ); DES_ROUND( Y, X ); + DES_ROUND( X, Y ); DES_ROUND( Y, X ); + DES_ROUND( X, Y ); DES_ROUND( Y, X ); + + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + DES_ROUND( Y, X ); DES_ROUND( X, Y ); + + DES_FP( Y, X ); + + PUT_UINT32_BE( Y, output, 0 ); + PUT_UINT32_BE( X, output, 4 ); +} + +/* + * Triple-DES block encryption (ECB mode) + */ +void des3_encrypt( des3_context *ctx, + unsigned char input[8], + unsigned char output[8] ) +{ + des3_crypt( ctx->esk, input, output ); +} + +/* + * Triple-DES block decryption (ECB mode) + */ +void des3_decrypt( des3_context *ctx, + unsigned char input[8], + unsigned char output[8] ) +{ + des3_crypt( ctx->dsk, input, output ); +} + +/* + * 3DES-CBC buffer encryption + */ +void des3_cbc_encrypt( des3_context *ctx, + unsigned char iv[8], + unsigned char *input, + unsigned char *output, + int len ) +{ + int i; + + while( len > 0 ) + { + for ( i = 0; i < 8; i++ ) + output[i] = input[i] ^ iv[i]; + + des3_crypt( ctx->esk, output, output ); + memcpy( iv, output, 8 ); + + input += 8; + output += 8; + len -= 8; + } +} + +/* + * 3DES-CBC buffer decryption + */ +void des3_cbc_decrypt( des3_context *ctx, + unsigned char iv[8], + unsigned char *input, + unsigned char *output, + int len ) +{ + int i; + unsigned char temp[8]; + + while( len > 0 ) + { + memcpy( temp, input, 8 ); + des3_crypt( ctx->dsk, input, output ); + + for ( i = 0; i < 8; i++ ) + output[i] = output[i] ^ iv[i]; + + memcpy( iv, temp, 8 ); + + input += 8; + output += 8; + len -= 8; + } +} diff --git a/plugins/!Deprecated/MSN/src/des.h b/plugins/!Deprecated/MSN/src/des.h new file mode 100644 index 0000000000..e1fc923fad --- /dev/null +++ b/plugins/!Deprecated/MSN/src/des.h @@ -0,0 +1,170 @@ +/** + * \file des.h + */ +#ifndef _DES_H +#define _DES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief DES context structure + */ +typedef struct +{ + unsigned long esk[32]; /*!< DES encryption subkeys */ + unsigned long dsk[32]; /*!< DES decryption subkeys */ +} +des_context; + +/** + * \brief Triple-DES context structure + */ +typedef struct +{ + unsigned long esk[96]; /*!< Triple-DES encryption subkeys */ + unsigned long dsk[96]; /*!< Triple-DES decryption subkeys */ +} +des3_context; + +/** + * \brief DES key schedule (56-bit) + * + * \param ctx DES context to be initialized + * \param key 8-byte secret key + */ +void des_set_key( des_context *ctx, unsigned char key[8] ); + +/** + * \brief DES block encryption (ECB mode) + * + * \param ctx DES context + * \param input plaintext block + * \param output ciphertext block + */ +void des_encrypt( des_context *ctx, + unsigned char input[8], + unsigned char output[8] ); + +/** + * \brief DES block decryption (ECB mode) + * + * \param ctx DES context + * \param input ciphertext block + * \param output plaintext block + */ +void des_decrypt( des_context *ctx, + unsigned char input[8], + unsigned char output[8] ); + +/** + * \brief DES-CBC buffer encryption + * + * \param ctx DES context + * \param iv initialization vector (modified after use) + * \param input buffer holding the plaintext + * \param output buffer holding the ciphertext + * \param len length of the data to be encrypted + */ +void des_cbc_encrypt( des_context *ctx, + unsigned char iv[8], + unsigned char *input, + unsigned char *output, + int len ); + +/** + * \brief DES-CBC buffer decryption + * + * \param ctx DES context + * \param iv initialization vector (modified after use) + * \param input buffer holding the ciphertext + * \param output buffer holding the plaintext + * \param len length of the data to be decrypted + */ +void des_cbc_decrypt( des_context *ctx, + unsigned char iv[8], + unsigned char *input, + unsigned char *output, + int len ); + +/** + * \brief Triple-DES key schedule (112-bit) + * + * \param ctx 3DES context to be initialized + * \param key 16-byte secret key + */ +void des3_set_2keys( des3_context *ctx, unsigned char key[16] ); + +/** + * \brief Triple-DES key schedule (168-bit) + * + * \param ctx 3DES context to be initialized + * \param key 24-byte secret key + */ +void des3_set_3keys( des3_context *ctx, unsigned char key[24] ); + +/** + * \brief Triple-DES block encryption (ECB mode) + * + * \param ctx 3DES context + * \param input plaintext block + * \param output ciphertext block + */ +void des3_encrypt( des3_context *ctx, + unsigned char input[8], + unsigned char output[8] ); + +/** + * \brief Triple-DES block decryption (ECB mode) + * + * \param ctx 3DES context + * \param input ciphertext block + * \param output plaintext block + */ +void des3_decrypt( des3_context *ctx, + unsigned char input[8], + unsigned char output[8] ); + +/** + * \brief 3DES-CBC buffer encryption + * + * \param ctx 3DES context + * \param iv initialization vector (modified after use) + * \param input buffer holding the plaintext + * \param output buffer holding the ciphertext + * \param len length of the data to be encrypted + */ +void des3_cbc_encrypt( des3_context *ctx, + unsigned char iv[8], + unsigned char *input, + unsigned char *output, + int len ); + +/** + * \brief 3DES-CBC buffer decryption + * + * \param ctx 3DES context + * \param iv initialization vector (modified after use) + * \param input buffer holding the ciphertext + * \param output buffer holding the plaintext + * \param len length of the data to be decrypted + */ +void des3_cbc_decrypt( des3_context *ctx, + unsigned char iv[8], + unsigned char *input, + unsigned char *output, + int len ); + +/* + * \brief Checkup routine + * + * \return 0 if successful, or 1 if the test failed + */ +int des_self_test( int verbose ); + +#ifdef __cplusplus +} +#endif + +#endif /* des.h */ diff --git a/plugins/!Deprecated/MSN/src/ezxml.c b/plugins/!Deprecated/MSN/src/ezxml.c new file mode 100644 index 0000000000..41ef70598e --- /dev/null +++ b/plugins/!Deprecated/MSN/src/ezxml.c @@ -0,0 +1,967 @@ +/* ezxml.c + * + * Copyright 2004-2006 Aaron Voisine + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#if defined(_DEBUG) && !defined(__GNUC__) + #define _CRTDBG_MAP_ALLOC + #include + #include +#else + #include +#endif + +#include +#include +#include +#include +#include + +#include "ezxml.h" + +#ifndef SIZE_MAX +#define SIZE_MAX UINT_MAX +#endif + +#define EZXML_WS "\t\r\n " // whitespace +#define EZXML_ERRL 128 // maximum error string length + +typedef struct ezxml_root *ezxml_root_t; +struct ezxml_root { // additional data for the root tag + struct ezxml xml; // is a super-struct built on top of ezxml struct + ezxml_t cur; // current xml tree insertion point + char *m; // original xml string + size_t len; // length of allocated memory for mmap, -1 for malloc + char *u; // UTF-8 conversion of string if original was UTF-16 + char *s; // start of work area + char *e; // end of work area + char **ent; // general entities (ampersand sequences) + char ***attr; // default attributes + char ***pi; // processing instructions + short standalone; // non-zero if + char err[EZXML_ERRL]; // error string +}; + +char *EZXML_NIL[] = { NULL }; // empty, null terminated array of strings + +// returns the first child tag with the given name or NULL if not found +ezxml_t ezxml_child(ezxml_t xml, const char *name) +{ + xml = (xml) ? xml->child : NULL; + while (xml && strcmp(name, xml->name)) xml = xml->sibling; + return xml; +} + +// returns the Nth tag with the same name in the same subsection or NULL if not +// found +ezxml_t ezxml_idx(ezxml_t xml, int idx) +{ + for (; xml && idx; idx--) xml = xml->next; + return xml; +} + +// returns the value of the requested tag attribute or NULL if not found +const char *ezxml_attr(ezxml_t xml, const char *attr) +{ + int i = 0, j = 1; + ezxml_root_t root = (ezxml_root_t)xml; + + if (! xml || ! xml->attr) return NULL; + while (xml->attr[i] && strcmp(attr, xml->attr[i])) i += 2; + if (xml->attr[i]) return xml->attr[i + 1]; // found attribute + + while (root->xml.parent) root = (ezxml_root_t)root->xml.parent; // root tag + for (i = 0; root->attr[i] && strcmp(xml->name, root->attr[i][0]); i++); + if (! root->attr[i]) return NULL; // no matching default attributes + while (root->attr[i][j] && strcmp(attr, root->attr[i][j])) j += 3; + return (root->attr[i][j]) ? root->attr[i][j + 1] : NULL; // found default +} + +// same as ezxml_get but takes an already initialized va_list +ezxml_t ezxml_vget(ezxml_t xml, va_list ap) +{ + char *name = va_arg(ap, char *); + int idx = -1; + + if (name && *name) { + idx = va_arg(ap, int); + xml = ezxml_child(xml, name); + } + return (idx < 0) ? xml : ezxml_vget(ezxml_idx(xml, idx), ap); +} + +// Traverses the xml tree to retrieve a specific subtag. Takes a variable +// length list of tag names and indexes. The argument list must be terminated +// by either an index of -1 or an empty string tag name. Example: +// title = ezxml_get(library, "shelf", 0, "book", 2, "title", -1); +// This retrieves the title of the 3rd book on the 1st shelf of library. +// Returns NULL if not found. +ezxml_t ezxml_get(ezxml_t xml, ...) +{ + va_list ap; + ezxml_t r; + + va_start(ap, xml); + r = ezxml_vget(xml, ap); + va_end(ap); + return r; +} + +// returns a null terminated array of processing instructions for the given +// target +const char **ezxml_pi(ezxml_t xml, const char *target) +{ + ezxml_root_t root = (ezxml_root_t)xml; + int i = 0; + + if (! root) return (const char **)EZXML_NIL; + while (root->xml.parent) root = (ezxml_root_t)root->xml.parent; // root tag + while (root->pi[i] && strcmp(target, root->pi[i][0])) i++; // find target + return (const char **)((root->pi[i]) ? root->pi[i] + 1 : EZXML_NIL); +} + +// set an error string and return root +ezxml_t ezxml_err(ezxml_root_t root, char *s, const char *err, ...) +{ + va_list ap; + int line = 1; + char *t, fmt[EZXML_ERRL]; + + for (t = root->s; t < s; t++) if (*t == '\n') line++; + _snprintf(fmt, EZXML_ERRL, "[error near line %d]: %s", line, err); + + va_start(ap, err); + _vsnprintf(root->err, EZXML_ERRL, fmt, ap); + va_end(ap); + + return &root->xml; +} + +// Recursively decodes entity and character references and normalizes new lines +// ent is a null terminated array of alternating entity names and values. set t +// to '&' for general entity decoding, '%' for parameter entity decoding, 'c' +// for cdata sections, ' ' for attribute normalization, or '*' for non-cdata +// attribute normalization. Returns s, or if the decoded string is longer than +// s, returns a malloced string that must be freed. +char *ezxml_decode(char *s, char **ent, char t) +{ + char *e, *r = s, *m = s; + long b, c, d, l; +/* + for (; *s; s++) { // normalize line endings + while (*s == '\r') { + *(s++) = '\n'; + if (*s == '\n') memmove(s, (s + 1), strlen(s)); + } + } +*/ + for (s = r; ; ) { + while (*s && *s != '&' && (*s != '%' || t != '%') && (*s & 0x80 || !isspace(*s))) s++; + + if (! *s) break; + else if (t != 'c' && ! strncmp(s, "&#", 2)) { // character reference + if (s[2] == 'x') c = strtol(s + 3, &e, 16); // base 16 + else c = strtol(s + 2, &e, 10); // base 10 + if (! c || *e != ';') { s++; continue; } // not a character ref + + if (c < 0x80) *(s++) = (char)c; // US-ASCII subset + else { // multi-byte UTF-8 sequence + for (b = 0, d = c; d; d /= 2) b++; // number of bits in c + b = (b - 2) / 5; // number of bytes in payload + *(s++) = (char)((0xFF << (7 - b)) | (c >> (6 * b))); // head + while (b) *(s++) = (char)(0x80 | ((c >> (6 * --b)) & 0x3F)); // payload + } + + memmove(s, strchr(s, ';') + 1, strlen(strchr(s, ';'))); + } + else if ((*s == '&' && (t == '&' || t == ' ' || t == '*')) || + (*s == '%' && t == '%')) { // entity reference + for (b = 0; ent[b] && strncmp(s + 1, ent[b], strlen(ent[b])); + b += 2); // find entity in entity list + + if (ent[b++]) { // found a match + if ((c = (long)strlen(ent[b])) - 1 > (e = strchr(s, ';')) - s) { + l = (d = (long)(s - r)) + c + (long)strlen(e); // new length + r = (r == m) ? strcpy(malloc(l), r) : realloc(r, l); + e = strchr((s = r + d), ';'); // fix up pointers + } + + memmove(s + c, e + 1, strlen(e)); // shift rest of string + strncpy(s, ent[b], c); // copy in replacement text + } + else s++; // not a known entity + } + else if ((t == ' ' || t == '*') && isspace(*s)) *(s++) = ' '; + else s++; // no decoding needed + } + + if (t == '*') { // normalize spaces for non-cdata attributes + for (s = r; *s; s++) { + if ((l = (long)strspn(s, " "))) memmove(s, s + l, strlen(s + l) + 1); + while (*s && *s != ' ') s++; + } + if (--s >= r && *s == ' ') *s = '\0'; // trim any trailing space + } + return r; +} + +// called when parser finds start of new tag +void ezxml_open_tag(ezxml_root_t root, char *name, char **attr) +{ + ezxml_t xml = root->cur; + + if (xml->name) xml = ezxml_add_child(xml, name, strlen(xml->txt)); + else xml->name = name; // first open tag + + xml->attr = attr; + root->cur = xml; // update tag insertion point +} + +// called when parser finds character content between open and closing tag +void ezxml_char_content(ezxml_root_t root, char *s, size_t len, char t) +{ + ezxml_t xml = root->cur; + char *m = s; + size_t l; + + if (! xml || ! xml->name || ! len) return; // sanity check + + s[len] = '\0'; // null terminate text (calling functions anticipate this) + len = strlen(s = ezxml_decode(s, root->ent, t)) + 1; + + if (! *(xml->txt)) xml->txt = s; // initial character content + else { // allocate our own memory and make a copy + xml->txt = (xml->flags & EZXML_TXTM) // allocate some space + ? realloc(xml->txt, (l = strlen(xml->txt)) + len) + : strcpy(malloc((l = strlen(xml->txt)) + len), xml->txt); + strcpy(xml->txt + l, s); // add new char content + if (s != m) free(s); // free s if it was malloced by ezxml_decode() + } + + if (xml->txt != m) ezxml_set_flag(xml, EZXML_TXTM); +} + +// called when parser finds closing tag +ezxml_t ezxml_close_tag(ezxml_root_t root, char *name, char *s) +{ + if (! root->cur || ! root->cur->name || strcmp(name, root->cur->name)) + return ezxml_err(root, s, "unexpected closing tag ", name); + + root->cur = root->cur->parent; + return NULL; +} + +// checks for circular entity references, returns non-zero if no circular +// references are found, zero otherwise +int ezxml_ent_ok(char *name, char *s, char **ent) +{ + int i; + + for (; ; s++) { + while (*s && *s != '&') s++; // find next entity reference + if (! *s) return 1; + if (! strncmp(s + 1, name, strlen(name))) return 0; // circular ref. + for (i = 0; ent[i] && strncmp(ent[i], s + 1, strlen(ent[i])); i += 2); + if (ent[i] && ! ezxml_ent_ok(name, ent[i + 1], ent)) return 0; + } +} + +// called when the parser finds a processing instruction +void ezxml_proc_inst(ezxml_root_t root, char *s, size_t len) +{ + int i = 0, j = 1; + char *target = s; + + s[len] = '\0'; // null terminate instruction + if (*(s += strcspn(s, EZXML_WS))) { + *s = '\0'; // null terminate target + s += strspn(s + 1, EZXML_WS) + 1; // skip whitespace after target + } + + if (! strcmp(target, "xml")) { // + if ((s = strstr(s, "standalone")) && ! strncmp(s + strspn(s + 10, + EZXML_WS "='\"") + 10, "yes", 3)) root->standalone = 1; + return; + } + + if (! root->pi[0]) *(root->pi = malloc(sizeof(char **))) = NULL; //first pi + + while (root->pi[i] && strcmp(target, root->pi[i][0])) i++; // find target + if (! root->pi[i]) { // new target + root->pi = realloc(root->pi, sizeof(char **) * (i + 2)); + root->pi[i] = malloc(sizeof(char *) * 3); + root->pi[i][0] = target; + root->pi[i][1] = (char *)(root->pi[i + 1] = NULL); // terminate pi list + root->pi[i][2] = _strdup(""); // empty document position list + } + + while (root->pi[i][j]) j++; // find end of instruction list for this target + root->pi[i] = realloc(root->pi[i], sizeof(char *) * (j + 3)); + root->pi[i][j + 2] = realloc(root->pi[i][j + 1], j + 1); + strcpy(root->pi[i][j + 2] + j - 1, (root->xml.name) ? ">" : "<"); + root->pi[i][j + 1] = NULL; // null terminate pi list for this target + root->pi[i][j] = s; // set instruction +} + +// called when the parser finds an internal doctype subset +short ezxml_internal_dtd(ezxml_root_t root, char *s, size_t len) +{ + char q, *c, *t, *n = NULL, *v, **ent, **pe; + int i, j; + + pe = memcpy(malloc(sizeof(EZXML_NIL)), EZXML_NIL, sizeof(EZXML_NIL)); + + for (s[len] = '\0'; s; ) { + while (*s && *s != '<' && *s != '%') s++; // find next declaration + + if (! *s) break; + else if (! strncmp(s, "'); + continue; + } + + for (i = 0, ent = (*c == '%') ? pe : root->ent; ent[i]; i++); + ent = realloc(ent, (i + 3) * sizeof(char *)); // space for next ent + if (*c == '%') pe = ent; + else root->ent = ent; + + *(++s) = '\0'; // null terminate name + if ((s = strchr(v, q))) *(s++) = '\0'; // null terminate value + ent[i + 1] = ezxml_decode(v, pe, '%'); // set value + ent[i + 2] = NULL; // null terminate entity list + if (! ezxml_ent_ok(n, ent[i + 1], ent)) { // circular reference + if (ent[i + 1] != v) free(ent[i + 1]); + ezxml_err(root, v, "circular entity declaration &%s", n); + break; + } + else ent[i] = n; // set entity name + } + else if (! strncmp(s, "")) == '>') continue; + else *s = '\0'; // null terminate tag name + for (i = 0; root->attr[i] && strcmp(n, root->attr[i][0]); i++); + + while (*(n = s + 1 + strspn(s + 1, EZXML_WS)) && *n != '>') { + if (*(s = n + strcspn(n, EZXML_WS))) *s = '\0'; // attr name + else { ezxml_err(root, t, "malformed ") - 1; + if (*c == ' ') continue; // cdata is default, nothing to do + v = NULL; + } + else if ((*s == '"' || *s == '\'') && // default value + (s = strchr(v = s + 1, *s))) *s = '\0'; + else { ezxml_err(root, t, "malformed attr[i]) { // new tag name + root->attr = (! i) ? malloc(2 * sizeof(char **)) + : realloc(root->attr, + (i + 2) * sizeof(char **)); + root->attr[i] = malloc(2 * sizeof(char *)); + root->attr[i][0] = t; // set tag name + root->attr[i][1] = (char *)(root->attr[i + 1] = NULL); + } + + for (j = 1; root->attr[i][j]; j += 3); // find end of list + root->attr[i] = realloc(root->attr[i], + (j + 4) * sizeof(char *)); + + root->attr[i][j + 3] = NULL; // null terminate list + root->attr[i][j + 2] = c; // is it cdata? + root->attr[i][j + 1] = (v) ? ezxml_decode(v, root->ent, *c) + : NULL; + root->attr[i][j] = n; // attribute name + } + } + else if (! strncmp(s, ""); // comments + else if (! strncmp(s, ""))) + ezxml_proc_inst(root, c, s++ - c); + } + else if (*s == '<') s = strchr(s, '>'); // skip other declarations + else if (*(s++) == '%' && ! root->standalone) break; + } + + free(pe); + return ! *root->err; +} + +// Converts a UTF-16 string to UTF-8. Returns a new string that must be freed +// or NULL if no conversion was needed. +char *ezxml_str2utf8(char **s, size_t *len) +{ + char *u; + size_t l = 0, sl, max = *len; + long c, d; + int b, be = (**s == '\xFE') ? 1 : (**s == '\xFF') ? 0 : -1; + + if (be == -1) return NULL; // not UTF-16 + + u = malloc(max); + for (sl = 2; sl < *len - 1; sl += 2) { + c = (be) ? (((*s)[sl] & 0xFF) << 8) | ((*s)[sl + 1] & 0xFF) //UTF-16BE + : (((*s)[sl + 1] & 0xFF) << 8) | ((*s)[sl] & 0xFF); //UTF-16LE + if (c >= 0xD800 && c <= 0xDFFF && (sl += 2) < *len - 1) { // high-half + d = (be) ? (((*s)[sl] & 0xFF) << 8) | ((*s)[sl + 1] & 0xFF) + : (((*s)[sl + 1] & 0xFF) << 8) | ((*s)[sl] & 0xFF); + c = (((c & 0x3FF) << 10) | (d & 0x3FF)) + 0x10000; + } + + while (l + 6 > max) u = realloc(u, max += EZXML_BUFSIZE); + if (c < 0x80) u[l++] = (char)c; // US-ASCII subset + else { // multi-byte UTF-8 sequence + for (b = 0, d = c; d; d /= 2) b++; // bits in c + b = (b - 2) / 5; // bytes in payload + u[l++] = (char)((0xFF << (7 - b)) | (c >> (6 * b))); // head + while (b) u[l++] = (char)(0x80 | ((c >> (6 * --b)) & 0x3F)); // payload + } + } + return *s = realloc(u, *len = l); +} + +// frees a tag attribute list +void ezxml_free_attr(char **attr) { + int i = 0; + char *m; + + if (! attr || attr == EZXML_NIL) return; // nothing to free + while (attr[i]) i += 2; // find end of attribute list + m = attr[i + 1]; // list of which names and values are malloced + for (i = 0; m[i]; i++) { + if (m[i] & EZXML_NAMEM) free(attr[i * 2]); + if (m[i] & EZXML_TXTM) free(attr[(i * 2) + 1]); + } + free(m); + free(attr); +} + +// parse the given xml string and return an ezxml structure +ezxml_t ezxml_parse_str(char *s, size_t len) +{ + ezxml_root_t root = (ezxml_root_t)ezxml_new(NULL); + char q, e, *d, **attr, **a = NULL; // initialize a to avoid compile warning + int l, i, j; + + root->m = s; + if (! len) return ezxml_err(root, NULL, "root tag missing"); + root->u = ezxml_str2utf8(&s, &len); // convert utf-16 to utf-8 + root->e = (root->s = s) + len; // record start and end of work area + + e = s[len - 1]; // save end char + s[len - 1] = '\0'; // turn end char into null terminator + + while (*s && *s != '<') s++; // find first tag + if (! *s) return ezxml_err(root, s, "root tag missing"); + + for (; ; ) { + attr = (char **)EZXML_NIL; + d = ++s; + + if (isalpha(*s) || *s == '_' || *s == ':' || *s < '\0') { // new tag + if (! root->cur) + return ezxml_err(root, d, "markup outside of root element"); + + s += strcspn(s, EZXML_WS "/>"); + while (isspace(*s)) *(s++) = '\0'; // null terminate tag name + + if (*s && *s != '/' && *s != '>') // find tag in default attr list + for (i = 0; (a = root->attr[i]) && strcmp(a[0], d); i++); + + for (l = 0; *s && *s != '/' && *s != '>'; l += 2) { // new attrib + attr = (l) ? realloc(attr, (l + 4) * sizeof(char *)) + : malloc(4 * sizeof(char *)); // allocate space + attr[l + 3] = (l) ? realloc(attr[l + 1], (l / 2) + 2) + : malloc(2); // mem for list of maloced vals + strcpy(attr[l + 3] + (l / 2), " "); // value is not malloced + attr[l + 2] = NULL; // null terminate list + attr[l + 1] = ""; // temporary attribute value + attr[l] = s; // set attribute name + + s += strcspn(s, EZXML_WS "=/>"); + if (*s == '=' || isspace(*s)) { + *(s++) = '\0'; // null terminate tag attribute name + q = *(s += strspn(s, EZXML_WS "=")); + if (q == '"' || q == '\'') { // attribute value + attr[l + 1] = ++s; + while (*s && *s != q) s++; + if (*s) *(s++) = '\0'; // null terminate attribute val + else { + ezxml_free_attr(attr); + return ezxml_err(root, d, "missing %c", q); + } + + for (j = 1; a && a[j] && strcmp(a[j], attr[l]); j +=3); + attr[l + 1] = ezxml_decode(attr[l + 1], root->ent, + (char)((a && a[j]) ? *a[j + 2] : ' ')); + if (attr[l + 1] < d || attr[l + 1] > s) + attr[l + 3][l / 2] = EZXML_TXTM; // value malloced + } + } + while (isspace(*s)) s++; + } + + if (*s == '/') { // self closing tag + *(s++) = '\0'; + if ((*s && *s != '>') || (! *s && e != '>')) { + if (l) ezxml_free_attr(attr); + return ezxml_err(root, d, "missing >"); + } + ezxml_open_tag(root, d, attr); + ezxml_close_tag(root, d, s); + } + else if ((q = *s) == '>' || (! *s && e == '>')) { // open tag + *s = '\0'; // temporarily null terminate tag name + ezxml_open_tag(root, d, attr); + *s = q; + } + else { + if (l) ezxml_free_attr(attr); + return ezxml_err(root, d, "missing >"); + } + } + else if (*s == '/') { // close tag + s += strcspn(d = s + 1, EZXML_WS ">") + 1; + if (! (q = *s) && e != '>') return ezxml_err(root, d, "missing >"); + *s = '\0'; // temporarily null terminate tag name + if (ezxml_close_tag(root, d, s)) return &root->xml; + if (isspace(*s = q)) s += strspn(s, EZXML_WS); + } + else if (! strncmp(s, "!--", 3)) { // xml comment + if (! (s = strstr(s + 3, "--")) || (*(s += 2) != '>' && *s) || + (! *s && e != '>')) return ezxml_err(root, d, "unclosed