// // This file is part of the aMule Project. // // Copyright (c) 2003-2006 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef OPCODES_H #define OPCODES_H #define SEC2MS(sec) ((sec)*1000) #define MIN2MS(min) SEC2MS((min)*60) #define HR2MS(hr) MIN2MS((hr)*60) #define DAY2MS(day) HR2MS((day)*24) #define SEC(sec) (sec) #define MIN2S(min) ((min)*60) #define HR2S(hr) MIN2S((hr)*60) #define DAY2S(day) HR2S((day)*24) // Handlers enum { // socket handlers LISTENSOCKET_HANDLER = wxID_HIGHEST+123, // random safe ID CLIENTTCPSOCKET_HANDLER, SERVERUDPSOCKET_HANDLER, SERVERSOCKET_HANDLER, CLIENTUDPSOCKET_HANDLER, PROXY_SOCKET_HANDLER, // Custom Events ID_CORETIMER, ID_GUITIMER, TM_DNSDONE, TM_SOURCESDNSDONE, TM_TCPSOCKET, TM_UDPSOCKET }; // MOD Note: Do not change this part - Merkur #define CURRENT_VERSION_SHORT 0x44 #define EMULE_PROTOCOL 0x01 // MOD Note: end // aMule version // No more Mod Version unless we're cvs // RELEASERS: REMOVE THE DEFINE ON THE RELEASES, PLEASE // AND FIX THE MOD_VERSION_LONG //#define __CVS__ #ifdef __CVS__ #define MOD_VERSION_LONG wxT("aMule CVS") #else #define MOD_VERSION_LONG wxT("aMule 2.1.3") #endif #define VERSION_MJR 2 #define VERSION_MIN 1 #define VERSION_UPDATE 3 #define EDONKEYVERSION 0x3c #define PREFFILE_VERSION 0x14 //<<-- last change: reduced .dat, by using .ini #define PARTFILE_VERSION 0xe0 #define PARTFILE_SPLITTEDVERSION 0xe1 // For edonkey part files importing. #define CREDITFILE_VERSION 0x12 #define COMPILE_DATE __DATE__ #define COMPILE_TIME __TIME__ enum EClientSoftware { SO_EMULE = 0, SO_CDONKEY = 1, SO_LXMULE = 2, SO_AMULE = 3, SO_SHAREAZA = 4, SO_EMULEPLUS = 5, SO_HYDRANODE = 6, SO_NEW2_MLDONKEY = 0x0a, SO_LPHANT = 0x14, SO_NEW2_SHAREAZA = 0x28, SO_EDONKEYHYBRID = 0x32, SO_EDONKEY = 0x33, SO_MLDONKEY = 0x34, SO_OLDEMULE = 0x35, SO_UNKNOWN = 0x36, SO_NEW_SHAREAZA = 0x44, SO_NEW_MLDONKEY = 0x98, SO_COMPAT_UNK = 0xFF }; // MOD Note: Do not change this part - Merkur #define MAX_RESULTS 100 // max global search results #define MAX_CLIENTCONNECTIONTRY 2 #define CONNECTION_TIMEOUT 40000 // set this lower if you want less connections at once, set it higher if you have enough sockets (edonkey has its own timout too, so a very high value won't effect this) #define FILEREASKTIME 1300000 // 1300000 <- original value *** #define SERVERREASKTIME 800000 // don't set this too low, it wont speed up anything, but it could kill amule or your internetconnection #define UDPSERVERREASKTIME 1300000 // 1300000 <- original value *** #define SOURCECLIENTREASKS MIN2MS(40) //40 mins #define SOURCECLIENTREASKF MIN2MS(5) //5 mins #define KADEMLIAASKTIME SEC2MS(1) //1 second #define KADEMLIATOTALFILE 7 //Total files to search sources for. #define KADEMLIAREASKTIME HR2MS(1) //1 hour #define KADEMLIAPUBLISHTIME SEC(2) //2 second #define KADEMLIATOTALSTORENOTES 1 //Total hashes to store. #define KADEMLIATOTALSTORESRC 2 //Total hashes to store. #define KADEMLIATOTALSTOREKEY 1 //Total hashes to store. #define KADEMLIAREPUBLISHTIMES HR2S(5) //5 hours #define KADEMLIAREPUBLISHTIMEN HR2S(24) //24 hours #define KADEMLIAREPUBLISHTIMEK HR2S(24) //24 hours #define KADEMLIADISCONNECTDELAY MIN2S(20) //20 mins #define KADEMLIAMAXINDEX 50000 //Total keyword indexes. #define KADEMLIAMAXENTRIES 60000 //Total keyword entries. #define KADEMLIAMAXSOUCEPERFILE 300 //Max number of sources per file in index. #define KADEMLIAMAXNOTESPERFILE 50 //Max number of notes per entry in index. #define KADEMLIABUDDYTIMEOUT MIN2MS(10) // 10 min to receive the buddy #define ED2KREPUBLISHTIME MIN2MS(1) //1 min #define MINCOMMONPENALTY 4 #define UDPSERVERSTATTIME SEC2MS(5) //5 secs #define UDPSERVSTATREASKTIME HR2MS(4) //4 hours - eMule uses HR2S, we are based on GetTickCount, hence MS #define UDPSERVERPORT 4665 //default udp port #define UDPMAXQUEUETIME SEC2MS(30) //30 Seconds #define RSAKEYSIZE 384 //384 bits #define MAX_SOURCES_FILE_SOFT 500 #define MAX_SOURCES_FILE_UDP 50 #define SESSIONMAXTRANS (9.3*1024*1024) // 9.3 Mbytes. "Try to send complete chunks" always sends this amount of data #define SESSIONMAXTIME HR2MS(1) //1 hour #define MAXFILECOMMENTLEN 50 #define MIN_UP_CLIENTS_ALLOWED 2 // min. clients allowed to download regardless UPLOAD_CLIENT_DATARATE or any other factors. Don't set this too high // MOD Note: end #define MAXCONPER5SEC 20 #define MAXCON5WIN9X 10 #define UPLOAD_CHECK_CLIENT_DR 1000 #define UPLOAD_LOW_CLIENT_DR 2400 // uploadspeed per client in bytes - you may want to adjust // this if you have a slow connection or T1-T3 ;) #define UPLOAD_CLIENT_DATARATE 3072 #define MAX_UP_CLIENTS_ALLOWED 250 // max. clients allowed regardless UPLOAD_CLIENT_DATARATE or any other factors. Don't set this too low, use DATARATE to adjust uploadspeed per client #define DOWNLOADTIMEOUT 100000 #define CONSERVTIMEOUT 25000 // agelimit for pending connection attempts #define RARE_FILE 50 #define BADCLIENTBAN 4 #define MIN_REQUESTTIME 590000 #define MAX_PURGEQUEUETIME 3600000 #define PURGESOURCESWAPSTOP 900000 // (15 mins), how long forbid swapping a source to a certain file (NNP,...) #define CONNECTION_LATENCY 22050 // latency for responces #define SOURCESSLOTS 100 #define MINWAIT_BEFORE_DLDISPLAY_WINDOWUPDATE 1500 #define MAXAVERAGETIME 40000 //millisecs #define CLIENTBANTIME 7200000 // 2h #define TRACKED_CLEANUP_TIME 3600000 // 1 hour #define KEEPTRACK_TIME 7200000 // 2h //how long to keep track of clients which were once in the uploadqueue #define CLIENTLIST_CLEANUP_TIME MIN2MS(34) // 34 min // you shouldn't change anything here if you are not really sure, or amule will probaly not work enum FileConstants { MAX_FILE_SIZE = 4290048000u, // (4294967295/PARTSIZE)*PARTSIZE PARTSIZE = 9728000u, BLOCKSIZE = 184320u, EMBLOCKSIZE = 184320u }; #define MAXFRAGSIZE 1300 #define MET_HEADER 0x0E const unsigned UNLIMITED = 0; // Known protocols enum Protocols { OP_EDONKEYHEADER = 0xE3, OP_EDONKEYPROT = OP_EDONKEYHEADER, OP_PACKEDPROT = 0xD4, OP_EMULEPROT = 0xC5, OP_KADEMLIAHEADER = 0xE4, OP_KADEMLIAPACKEDPROT = 0xE5, OP_MLDONKEYPROT = 0x00 }; // OP-codes used with TCP server connctions. enum OP_ClientToServer { OP_LOGINREQUEST = 0x01, // <1 Tag_set> OP_REJECT = 0x05, // (null) OP_GETSERVERLIST = 0x14, // (null)client->server OP_OFFERFILES = 0x15, // (<1 Tag_set>)[count] OP_SEARCHREQUEST = 0x16, // OP_DISCONNECT = 0x18, // (not verified) OP_GETSOURCES = 0x19, // /v2 (17.3) OP_SEARCH_USER = 0x1A, // OP_CALLBACKREQUEST = 0x1C, // // OP_QUERY_CHATS = 0x1D, // (deprecated not supported by server any longer) // OP_CHAT_MESSAGE = 0x1E, // (deprecated not supported by server any longer) // OP_JOIN_ROOM = 0x1F, // (deprecated not supported by server any longer) OP_QUERY_MORE_RESULT = 0x21, // (null) OP_SERVERLIST = 0x32, // ()[count] server->client OP_SEARCHRESULT = 0x33, // (<1 Tag_set>)[count] OP_SERVERSTATUS = 0x34, // OP_CALLBACKREQUESTED = 0x35, // OP_CALLBACK_FAIL = 0x36, // (null notverified) OP_SERVERMESSAGE = 0x38, // // OP_CHAT_ROOM_REQUEST = 0x39, // (deprecated not supported by server any longer) // OP_CHAT_BROADCAST = 0x3A, // (deprecated not supported by server any longer) // OP_CHAT_USER_JOIN = 0x3B, // (deprecated not supported by server any longer) // OP_CHAT_USER_LEAVE = 0x3C, // (deprecated not supported by server any longer) // OP_CHAT_USER = 0x3D, // (deprecated not supported by server any longer) OP_IDCHANGE = 0x40, // OP_SERVERIDENT = 0x41, // {1 TAG_SET} OP_FOUNDSOURCES = 0x42, // ()[count] OP_USERS_LIST = 0x43 // (<1 Tag_set>)[count] }; //client <-> UDP server #define OP_GLOBGETSOURCES2 0x94 // * #define OP_GLOBSERVSTATREQ 0x96 // (null) #define OP_GLOBSERVSTATRES 0x97 // #define OP_GLOBSEARCHREQ 0x98 // #define OP_GLOBSEARCHRES 0x99 // #define OP_GLOBGETSOURCES 0x9A // #define OP_GLOBFOUNDSOURCES 0x9B // #define OP_GLOBCALLBACKREQ 0x9C // #define OP_INVALID_LOWID 0x9E // #define OP_SERVER_LIST_REQ 0xA0 // #define OP_SERVER_LIST_RES 0xA1 // ()[count] #define OP_SERVER_DESC_REQ 0xA2 // (null) #define OP_SERVER_DESC_RES 0xA3 // #define OP_SERVER_LIST_REQ2 0xA4 // (null) #define INV_SERV_DESC_LEN 0xF0FF // used as an 'invalid' string len for OP_SERVER_DESC_REQ/RES // client <-> client #define OP_HELLO 0x01 // 0x10<1 Tag_set> #define OP_SENDINGPART 0x46 // #define OP_REQUESTPARTS 0x47 // #define OP_FILEREQANSNOFIL 0x48 // #define OP_END_OF_DOWNLOAD 0x49 // #define OP_ASKSHAREDFILES 0x4A // (null) #define OP_ASKSHAREDFILESANSWER 0x4B // (<1 Tag_set>)[count] #define OP_HELLOANSWER 0x4C // <1 Tag_set> #define OP_CHANGE_CLIENT_ID 0x4D // #define OP_MESSAGE 0x4E // #define OP_SETREQFILEID 0x4F // #define OP_FILESTATUS 0x50 // #define OP_HASHSETREQUEST 0x51 // #define OP_HASHSETANSWER 0x52 // #define OP_STARTUPLOADREQ 0x54 // #define OP_ACCEPTUPLOADREQ 0x55 // (null) #define OP_CANCELTRANSFER 0x56 // (null) #define OP_OUTOFPARTREQS 0x57 // (null) #define OP_REQUESTFILENAME 0x58 // (more correctly file_name_request) #define OP_REQFILENAMEANSWER 0x59 // #define OP_CHANGE_SLOT 0x5B // #define OP_QUEUERANK 0x5C // (slot index of the request) #define OP_ASKSHAREDDIRS 0x5D // (null) #define OP_ASKSHAREDFILESDIR 0x5E // #define OP_ASKSHAREDDIRSANS 0x5F // ()[count] #define OP_ASKSHAREDFILESDIRANS 0x60 // (<1 T #define OP_ASKSHAREDDENIEDANS 0x61 // (null) // this 'identifier' is used for referencing shared part (incomplete) files with the OP_ASKSHAREDDIRS and related opcodes // it was introduced with eDonkeyHybrid and is considered as part of the protocol. #define OP_INCOMPLETE_SHARED_FILES wxT("!Incomplete Files") // extened prot client <-> extened prot client #define OP_EMULEINFO 0x01 // #define OP_EMULEINFOANSWER 0x02 // #define OP_COMPRESSEDPART 0x40 // #define OP_QUEUERANKING 0x60 // #define OP_FILEDESC 0x61 // #define OP_VERIFYUPSREQ 0x71 // (never used) #define OP_VERIFYUPSANSWER 0x72 // (never used) #define OP_UDPVERIFYUPREQ 0x73 // (never used) #define OP_UDPVERIFYUPA 0x74 // (never used) #define OP_REQUESTSOURCES 0x81 // #define OP_ANSWERSOURCES 0x82 // #define OP_PUBLICKEY 0x85 // #define OP_SIGNATURE 0x86 // v1: // v2: #define OP_SECIDENTSTATE 0x87 // #define OP_REQUESTPREVIEW 0x90 // #define OP_PREVIEWANSWER 0x91 // {frames * } #define OP_MULTIPACKET 0x92 #define OP_MULTIPACKETANSWER 0x93 #define OP_PEERCACHE_QUERY 0x94 #define OP_PEERCACHE_ANSWER 0x95 #define OP_PEERCACHE_ACK 0x96 #define OP_PUBLICIP_REQ 0x97 #define OP_PUBLICIP_ANSWER 0x98 #define OP_CALLBACK 0x99 // #define OP_REASKCALLBACKTCP 0x9A #define OP_AICHREQUEST 0x9B // #define OP_AICHANSWER 0x9C // #define OP_AICHFILEHASHANS 0x9D #define OP_AICHFILEHASHREQ 0x9E #define OP_BUDDYPING 0x9F #define OP_BUDDYPONG 0xA0 // extened prot client <-> extened prot client UDP #define OP_REASKFILEPING 0x90 // #define OP_REASKACK 0x91 // #define OP_FILENOTFOUND 0x92 // (null) #define OP_QUEUEFULL 0x93 // (null) #define OP_REASKCALLBACKUDP 0x94 #define OP_PORTTEST 0xFE // Connection Test // server.met #define ST_SERVERNAME 0x01 // #define ST_DESCRIPTION 0x0B // #define ST_PING 0x0C // #define ST_PREFERENCE 0x0E // #define ST_FAIL 0x0D // #define ST_DYNIP 0x85 // #define ST_LASTPING 0x86 // #define ST_MAXUSERS 0x87 #define ST_SOFTFILES 0x88 #define ST_HARDFILES 0x89 #define ST_LASTPING 0x90 // #define ST_VERSION 0x91 // #define ST_UDPFLAGS 0x92 // #define ST_AUXPORTSLIST 0x93 // #define ST_LOWIDUSERS 0x94 // //file tags //file tags #define FT_FILENAME 0x01 // #define TAG_FILENAME "\x01" // #define FT_FILESIZE 0x02 // #define TAG_FILESIZE "\x02" // #define FT_FILETYPE 0x03 // or #define TAG_FILETYPE "\x03" // #define FT_FILEFORMAT 0x04 // #define TAG_FILEFORMAT "\x04" // #define FT_LASTSEENCOMPLETE 0x05 // #define TAG_COLLECTION "\x05" #define TAG_PART_PATH "\x06" // #define TAG_PART_HASH "\x07" #define FT_TRANSFERED 0x08 // #define TAG_COPIED "\x08" // #define FT_GAPSTART 0x09 // #define TAG_GAP_START "\x09" // #define FT_GAPEND 0x0A // #define TAG_GAP_END "\x0A" // #define TAG_DESCRIPTION "\x0B" // #define TAG_PING "\x0C" #define TAG_FAIL "\x0D" #define TAG_PREFERENCE "\x0E" #define TAG_PORT "\x0F" #define TAG_IP_ADDRESS "\x10" #define TAG_VERSION "\x11" // #define FT_PARTFILENAME 0x12 // #define TAG_TEMPFILE "\x12" // #define FT_OLDDLPRIORITY 0x13 // Not used anymore #define TAG_PRIORITY "\x13" // #define FT_STATUS 0x14 // #define TAG_STATUS "\x14" // #define FT_SOURCES 0x15 // #define TAG_SOURCES "\x15" // #define TAG_AVAILABILITY "\x15" // #define FT_PERMISSIONS 0x16 // #define TAG_PERMISSIONS "\x16" #define TAG_QTIME "\x16" #define FT_OLDULPRIORITY 0x17 // Not used anymore #define TAG_PARTS "\x17" #define FT_DLPRIORITY 0x18 // Was 13 #define FT_ULPRIORITY 0x19 // Was 17 #define FT_KADLASTPUBLISHKEY 0x20 // #define FT_KADLASTPUBLISHSRC 0x21 // #define FT_FLAGS 0x22 // #define FT_DL_ACTIVE_TIME 0x23 // #define FT_CORRUPTEDPARTS 0x24 // #define FT_DL_PREVIEW 0x25 #define FT_KADLASTPUBLISHNOTES 0x26 // #define FT_AICH_HASH 0x27 #define FT_COMPLETE_SOURCES 0x30 // nr. of sources which share a complete version //of the associated file (supported by eserver 16.46+) // statistic #define FT_ATTRANSFERED 0x50 // #define FT_ATREQUESTED 0x51 // #define FT_ATACCEPTED 0x52 // #define FT_CATEGORY 0x53 // #define FT_ATTRANSFEREDHI 0x54 // #define TAG_MEDIA_ARTIST "\xD0" // #define FT_MEDIA_ARTIST 0xD0 // #define TAG_MEDIA_ALBUM "\xD1" // #define FT_MEDIA_ALBUM 0xD1 // #define TAG_MEDIA_TITLE "\xD2" // #define FT_MEDIA_TITLE 0xD2 // #define TAG_MEDIA_LENGTH "\xD3" // !!! #define FT_MEDIA_LENGTH 0xD3 // !!! #define TAG_MEDIA_BITRATE "\xD4" // #define FT_MEDIA_BITRATE 0xD4 // #define TAG_MEDIA_CODEC "\xD5" // #define FT_MEDIA_CODEC 0xD5 // #define FT_FILERATING 0xF7 // #define TAG_FILERATING "\xF7" // #define TAG_BUDDYHASH "\xF8" // #define TAG_CLIENTLOWID "\xF9" // #define TAG_SERVERPORT "\xFA" // #define TAG_SERVERIP "\xFB" // #define TAG_SOURCEUPORT "\xFC" // #define TAG_SOURCEPORT "\xFD" // #define TAG_SOURCEIP "\xFE" // #define TAG_SOURCETYPE "\xFF" // #define TAGTYPE_HASH 0x01 #define TAGTYPE_STRING 0x02 #define TAGTYPE_UINT32 0x03 #define TAGTYPE_FLOAT32 0x04 #define TAGTYPE_BOOL 0x05 #define TAGTYPE_BOOLARRAY 0x06 #define TAGTYPE_BLOB 0x07 #define TAGTYPE_UINT16 0x08 #define TAGTYPE_UINT8 0x09 #define TAGTYPE_BSOB 0x0A #define TAGTYPE_STR1 0x11 #define TAGTYPE_STR2 0x12 #define TAGTYPE_STR3 0x13 #define TAGTYPE_STR4 0x14 #define TAGTYPE_STR5 0x15 #define TAGTYPE_STR6 0x16 #define TAGTYPE_STR7 0x17 #define TAGTYPE_STR8 0x18 #define TAGTYPE_STR9 0x19 #define TAGTYPE_STR10 0x1A #define TAGTYPE_STR11 0x1B #define TAGTYPE_STR12 0x1C #define TAGTYPE_STR13 0x1D #define TAGTYPE_STR14 0x1E #define TAGTYPE_STR15 0x1F #define TAGTYPE_STR16 0x20 #define TAGTYPE_STR17 0x21 // accepted by eMule 0.42f (02-Mai-2004) in receiving code // only because of a flaw, those tags are handled correctly, // but should not be handled at all #define TAGTYPE_STR18 0x22 // accepted by eMule 0.42f (02-Mai-2004) in receiving code // only because of a flaw, those tags are handled correctly, // but should not be handled at all #define TAGTYPE_STR19 0x23 // accepted by eMule 0.42f (02-Mai-2004) in receiving code // only because of a flaw, those tags are handled correctly, // but should not be handled at all #define TAGTYPE_STR20 0x24 // accepted by eMule 0.42f (02-Mai-2004) in receiving code // only because of a flaw, those tags are handled correctly, // but should not be handled at all #define TAGTYPE_STR21 0x25 // accepted by eMule 0.42f (02-Mai-2004) in receiving code // only because of a flaw, those tags are handled correctly, // but should not be handled at all #define TAGTYPE_STR22 0x26 // accepted by eMule 0.42f (02-Mai-2004) in receiving code // only because of a flaw, those tags are handled correctly, // but should not be handled at all #define ED2KFTSTR_AUDIO wxT("Audio") // value for eD2K tag FT_FILETYPE #define ED2KFTSTR_VIDEO wxT("Video") // value for eD2K tag FT_FILETYPE #define ED2KFTSTR_IMAGE wxT("Image") // value for eD2K tag FT_FILETYPE #define ED2KFTSTR_DOCUMENT wxT("Doc") // value for eD2K tag FT_FILETYPE #define ED2KFTSTR_PROGRAM wxT("Pro") // value for eD2K tag FT_FILETYPE #define ED2KFTSTR_ARCHIVE wxT("Arc") // eMule internal use only #define ED2KFTSTR_CDIMAGE wxT("Iso") // eMule internal use only // additional media meta data tags from eDonkeyHybrid (note also the uppercase/lowercase) #define FT_ED2K_MEDIA_ARTIST "Artist" // #define FT_ED2K_MEDIA_ALBUM "Album" // #define FT_ED2K_MEDIA_TITLE "Title" // #define FT_ED2K_MEDIA_LENGTH "length" // !!! #define FT_ED2K_MEDIA_BITRATE "bitrate" // #define FT_ED2K_MEDIA_CODEC "codec" // #define TAG_NSENT "# Sent" #define TAG_ONIP "ip" #define TAG_ONPORT "port" // ed2k search expression comparison operators #define ED2K_SEARCH_OP_EQUAL 0 // eserver 16.45+ #define ED2K_SEARCH_OP_GREATER 1 // dserver #define ED2K_SEARCH_OP_LESS 2 // dserver #define ED2K_SEARCH_OP_GREATER_EQUAL 3 // eserver 16.45+ #define ED2K_SEARCH_OP_LESS_EQUAL 4 // eserver 16.45+ #define ED2K_SEARCH_OP_NOTEQUAL 5 // eserver 16.45+ // Kad search expression comparison operators #define KAD_SEARCH_OP_EQUAL 0 // eMule 0.43+ #define KAD_SEARCH_OP_GREATER_EQUAL 1 // eMule 0.40+; NOTE: this different than ED2K! #define KAD_SEARCH_OP_LESS_EQUAL 2 // eMule 0.40+; NOTE: this different than ED2K! #define KAD_SEARCH_OP_GREATER 3 // eMule 0.43+; NOTE: this different than ED2K! #define KAD_SEARCH_OP_LESS 4 // eMule 0.43+; NOTE: this different than ED2K! #define KAD_SEARCH_OP_NOTEQUAL 5 // eMule 0.43+ #define CT_NAME 0x01 #define CT_PORT 0x0f #define CT_VERSION 0x11 #define CT_SERVER_FLAGS 0x20 // currently only used to inform a server about supported features #define CT_EMULECOMPAT_OPTIONS 0xef #define CT_EMULE_RESERVED1 0xf0 #define CT_EMULE_RESERVED2 0xf1 #define CT_EMULE_RESERVED3 0xf2 #define CT_EMULE_RESERVED4 0xf3 #define CT_EMULE_RESERVED5 0xf4 #define CT_EMULE_RESERVED6 0xf5 #define CT_EMULE_RESERVED7 0xf6 #define CT_EMULE_RESERVED8 0xf7 #define CT_EMULE_RESERVED9 0xf8 #define CT_EMULE_UDPPORTS 0xf9 #define CT_EMULE_MISCOPTIONS1 0xfa #define CT_EMULE_VERSION 0xfb #define CT_EMULE_BUDDYIP 0xfc #define CT_EMULE_BUDDYUDP 0xfd #define CT_EMULE_MISCOPTIONS2 0xfe #define CT_EMULE_RESERVED13 0xff enum { MP_MESSAGE = 11000, // Random start ID that doesn't conflict with wxDesigner MP_DETAIL, MP_ADDFRIEND, MP_REMOVEFRIEND, MP_SHOWLIST, MP_FRIENDSLOT, MP_CHANGE2FILE, MP_CANCEL, MP_STOP, MP_RESUME, MP_PAUSE, MP_CLEARCOMPLETED, MP_VIEW, MP_SENDMESSAGE, MP_WS, MP_RAZORSTATS, MP_GETCOMMENTS, //For comments MP_CMT, MP_PRIOVERYLOW, MP_PRIOLOW, MP_PRIONORMAL, MP_PRIOHIGH, MP_PRIOVERYHIGH, MP_POWERSHARE, MP_PRIOAUTO, MP_GETED2KLINK, MP_GETSOURCEED2KLINK, MP_GETHOSTNAMESOURCEED2KLINK, MP_GETAICHED2KLINK, MP_METINFO, MP_CONNECTTO, MP_REMOVE, MP_REMOVEALL, MP_UNBAN, MP_ADDTOSTATIC, MP_REMOVEFROMSTATIC, MP_VIEWFILECOMMENTS, MP_CAT_ADD, MP_CAT_EDIT, MP_CAT_REMOVE, MP_TOOGLELIST, MP_CLOSE_TAB, MP_CLOSE_ALL_TABS, MP_CLOSE_OTHER_TABS, MP_RENAME, /* Razor 1a - Modif by MikaelB Opcodes for : - Drop No Needed Sources now - Drop Full Queue Sources now - Drop High Queue Rating Sources now - Clean Up Sources now ( drop NNS, FQS and HQRS ) - Swap every A4AF to this file now - Swap every A4AF to this file ( AUTO ) - Swap every A4AF to any other file now */ MP_DROP_NO_NEEDED_SOURCES, MP_DROP_FULL_QUEUE_SOURCES, MP_DROP_HIGH_QUEUE_RATING_SOURCES, MP_CLEAN_UP_SOURCES, MP_SWAP_A4AF_TO_THIS, MP_SWAP_A4AF_TO_THIS_AUTO, MP_SWAP_A4AF_TO_ANY_OTHER, //menus MP_MENU_PRIO, MP_MENU_EXTD, MP_MENU_CATS, // CMuleListCtrl tabs. MP_LISTCOL_1, MP_LISTCOL_2, MP_LISTCOL_3, MP_LISTCOL_4, MP_LISTCOL_5, MP_LISTCOL_6, MP_LISTCOL_7, MP_LISTCOL_8, MP_LISTCOL_9, MP_LISTCOL_10, MP_LISTCOL_11, MP_LISTCOL_12, MP_LISTCOL_13, MP_LISTCOL_14, MP_LISTCOL_15, MP_ASSIGNCAT = 10800, // reserve some for categories! MP_CAT_SET0 = 10900, // reserve some for change all-cats (about 20) MP_SWITCHCTRL_0 = 10950, MP_SWITCHCTRL_9 = 10959, }; // *Mule tagnames enum MuleTags { ET_COMPRESSION = 0x20u, ET_UDPPORT = 0x21u, ET_UDPVER = 0x22u, ET_SOURCEEXCHANGE = 0x23u, ET_COMMENTS = 0x24u, ET_EXTENDEDREQUEST = 0x25u, ET_COMPATIBLECLIENT = 0x26u, ET_FEATURES = 0x27u, //! bit 0: SecIdent v1 - bit 1: SecIdent v2 ET_MOD_VERSION = 0x55u, ET_FEATURESET = 0x54u, // int - [Bloodymad Featureset] ET_OS_INFO = 0x94u // Reused rand tag (MOD_OXY), because the type is unknown }; // KADEMLIA (opcodes) (udp) #define KADEMLIA_BOOTSTRAP_REQ 0x00 // #define KADEMLIA_BOOTSTRAP_RES 0x08 // *(CNT) #define KADEMLIA_HELLO_REQ 0x10 // #define KADEMLIA_HELLO_RES 0x18 // #define KADEMLIA_REQ 0x20 // #define KADEMLIA_RES 0x28 // *(CNT) #define KADEMLIA_SEARCH_REQ 0x30 // [ext] //#define UNUSED 0x31 // Old Opcode, don't use. #define KADEMLIA_SRC_NOTES_REQ 0x32 // #define KADEMLIA_SEARCH_RES 0x38 // ( *(CNT2))*(CNT1) //#define UNUSED 0x39 // Old Opcode, don't use. #define KADEMLIA_SRC_NOTES_RES 0x3A // ( *(CNT2))*(CNT1) #define KADEMLIA_PUBLISH_REQ 0x40 // ( *(CNT2))*(CNT1) //#define UNUSED 0x41 // Old Opcode, don't use. #define KADEMLIA_PUB_NOTES_REQ 0x42 // *(CNT2))*(CNT1) #define KADEMLIA_PUBLISH_RES 0x48 // //#define UNUSED 0x49 // Old Opcode, don't use. #define KADEMLIA_PUB_NOTES_RES 0x4A // #define KADEMLIA_FIREWALLED_REQ 0x50 // #define KADEMLIA_FINDBUDDY_REQ 0x51 // #define KADEMLIA_CALLBACK_REQ 0x52 // #define KADEMLIA_FIREWALLED_RES 0x58 // #define KADEMLIA_FIREWALLED_ACK 0x59 // (null) #define KADEMLIA_FINDBUDDY_RES 0x5A // // KADEMLIA (parameter) #define KADEMLIA_FIND_VALUE 0x02 #define KADEMLIA_STORE 0x04 #define KADEMLIA_FIND_NODE 0x0B #define DISKSPACERECHECKTIME 60000 // checkDiskspace #endif // OPCODES_H