📄 opcodes.h
字号:
//this file is part of eMule
//Copyright (C)2002 Merkur ( merkur-@users.sourceforge.net / http://www.emule-project.net )
//
//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., 675 Mass Ave, Cambridge, MA 02139, USA.
#pragma once
// MOD Note: Do not change this part - Merkur
#define EMULE_PROTOCOL 0x01
// MOD Note: end
#define EDONKEYVERSION 0x3C
#define PREFFILE_VERSION 0x14 //<<-- last change: reduced .dat, by using .ini
#define PARTFILE_VERSION 0xe0
#define PARTFILE_SPLITTEDVERSION 0xe1
#define CREDITFILE_VERSION 0x12
#define CREDITFILE_VERSION_29 0x11
#define COMPILE_DATE __DATE__
#define COMPILE_TIME __TIME__
#ifdef _DEBUG
#define EMULE_GUID "EMULE-{4EADC6FC-516F-4b7c-9066-97D893649570}-DEBUG"
#else
#define EMULE_GUID "EMULE-{4EADC6FC-516F-4b7c-9066-97D893649570}"
#endif
#define SEC2MS(sec) ((sec)*1000)
#define MIN2MS(min) SEC2MS((min)*60)
// MOD Note: Do not change this part - Merkur
#define UDPSEARCHSPEED 1000 //1 sec - if this value is too low you will miss sources
#define MAX_RESULTS 100 // max global search results
#define MAX_MORE_SEARCH_REQ 5 // this gives a max. total search results of (1+5)*201 = 1206 or (1+5)*300 = 1800
#define MAX_CLIENTCONNECTIONTRY 2
#define CONNECTION_TIMEOUT 40000 //40 secs - set his 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 1500000 //25 mins
#define SERVERREASKTIME 900000 //15 mins - don't set this too low, it wont speed up anything, but it could kill emule or your internetconnection
#define UDPSERVERREASKTIME 1800000 //30 mins
#define SOURCECLIENTREASK 1080000 //18 mins
#define KADEMLIAASKTIME 1000 //10 second
#define KADEMLIATOTALFILE 3 //Total files to search sources for.
#define KADEMLIAREASKTIME 3600000 //1 hour
#define KADEMLIAPUBLISHTIME 2000 //2 second
#define KADEMLIATOTALSTORESRC 1 //Total hashes to store.
#define KADEMLIATOTALSTOREKEY 1 //Total hashes to store.
#define KADEMLIAREPUBLISHTIME 18000 //5 hours
//#define KADEMLIAINDEXCLEAN 18000 //5 hours
#define KADEMLIAINDEXCLEAN 7200 //2 hours
#define ED2KREPUBLISHTIME 60000 //1 min
#define MINCOMMONPENALTY 9
#define UDPSERVERSTATTIME 5000 //5 secs
#define UDPSERVSTATREASKTIME 14400 //4 hours
#define UDPSERVERPORT 4665 //default udp port
#define RSAKEYSIZE 384 //384 bits
// MOD Note: end
//#define CONFIGFOLDER "config\\"
#define CONFIGFOLDER "\\"
#define MAXCONPER5SEC 20
#define MAXCON5WIN9X 10
#define UPLOAD_CHECK_CLIENT_DR 2048
#define UPLOAD_CLIENT_DATARATE 3072 // uploadspeed per client in bytes - you may want to adjust this if you have a slow connection or T1-T3 ;)
#define MAX_UP_CLIENTS_ALLOWED 100 // 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 MIN_UP_CLIENTS_ALLOWED 2 // min. clients allowed to download regardless UPLOAD_CLIENT_DATARATE or any other factors. Don't set this too high
#define DOWNLOADTIMEOUT 100000
#define CONSERVTIMEOUT 25000 // agelimit for pending connection attempts
#define RARE_FILE 25
#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 1000
#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 LOCALSERVERREQUESTS 20000 // only one local src request during this timespan
#define DISKSPACERECHECKTIME 900000 // SLUGFILLER: checkDiskspace
// you shouldn't change anything here if you are not really sure, or emule will probaly not work
#define MAXFRAGSIZE 1300
#define PARTSIZE 9728000
#define EMBLOCKSIZE 184320
#define OP_EDONKEYHEADER 0xE3
//#define OP_KADEMLIAHEADER 0xE4
//#define OP_KADEMLIAPACKEDPROT 0xE5
#define OP_KADEMLIAHEADER 0xD0
#define OP_KADEMLIAPACKEDPROT 0xD1
#define OP_EDONKEYPROT OP_EDONKEYHEADER
#define OP_PACKEDPROT 0xD4
#define OP_EMULEPROT 0xC5
#define OP_MLDONKEYPROT 0x00
#define MET_HEADER 0x0E
#define UNLIMITED 0xFFFF
//Proxytypes deadlake
#define PROXYTYPE_NOPROXY 0
#define PROXYTYPE_SOCKS4 1
#define PROXYTYPE_SOCKS4A 2
#define PROXYTYPE_SOCKS5 3
#define PROXYTYPE_HTTP11 4
// client <-> server
#define OP_LOGINREQUEST 0x01 //<HASH 16><ID 4><PORT 2><1 Tag_set>
#define OP_REJECT 0x05 //(null)
#define OP_GETSERVERLIST 0x14 //(null)client->server
#define OP_OFFERFILES 0x15 // <count 4>(<HASH 16><ID 4><PORT 2><1 Tag_set>)[count]
#define OP_SEARCHREQUEST 0x16 // <Query_Tree>
#define OP_DISCONNECT 0x18 // (not verified)
#define OP_GETSOURCES 0x19 // <HASH 16>
#define OP_SEARCH_USER 0x1A // <Query_Tree>
#define OP_CALLBACKREQUEST 0x1C // <ID 4>
#define OP_QUERY_CHATS 0x1D // (deprecated not supported by server any longer)
#define OP_CHAT_MESSAGE 0x1E // (deprecated not supported by server any longer)
#define OP_JOIN_ROOM 0x1F // (deprecated not supported by server any longer)
#define OP_QUERY_MORE_RESULT 0x21 // (null)
#define OP_SERVERLIST 0x32 // <count 1>(<IP 4><PORT 2>)[count] server->client
#define OP_SEARCHRESULT 0x33 // <count 4>(<HASH 16><ID 4><PORT 2><1 Tag_set>)[count]
#define OP_SERVERSTATUS 0x34 // <USER 4><FILES 4>
#define OP_CALLBACKREQUESTED 0x35 // <IP 4><PORT 2>
#define OP_CALLBACK_FAIL 0x36 // (null notverified)
#define OP_SERVERMESSAGE 0x38 // <len 2><Message len>
#define OP_CHAT_ROOM_REQUEST 0x39 // (deprecated not supported by server any longer)
#define OP_CHAT_BROADCAST 0x3A // (deprecated not supported by server any longer)
#define OP_CHAT_USER_JOIN 0x3B // (deprecated not supported by server any longer)
#define OP_CHAT_USER_LEAVE 0x3C // (deprecated not supported by server any longer)
#define OP_CHAT_USER 0x3D // (deprecated not supported by server any longer)
#define OP_IDCHANGE 0x40 // <NEW_ID 4>
#define OP_SERVERIDENT 0x41 // <HASH 16><IP 4><PORT 2>{1 TAG_SET}
#define OP_FOUNDSOURCES 0x42 // <HASH 16><count 1>(<ID 4><PORT 2>)[count]
#define OP_USERS_LIST 0x43 // <count 4>(<HASH 16><ID 4><PORT 2><1 Tag_set>)[count]
//client <-> UDP server
#define OP_GLOBSEARCHREQ2 0x92 // <search_tree>
#define OP_GLOBSERVSTATREQ 0x96 // (null)
#define OP_GLOBSERVSTATRES 0x97 // <USER 4><FILES 4>
#define OP_GLOBSEARCHREQ 0x98 // <search_tree>
#define OP_GLOBSEARCHRES 0x99 //
#define OP_GLOBGETSOURCES 0x9A // <HASH 16>
#define OP_GLOBFOUNDSOURCES 0x9B //
#define OP_GLOBCALLBACKREQ 0x9C // <IP 4><PORT 2><client_ID 4>
#define OP_INVALID_LOWID 0x9E // <ID 4>
#define OP_SERVER_LIST_REQ 0xA0 // <IP 4><PORT 2>
#define OP_SERVER_LIST_RES 0xA1 // <count 1> (<ip 4><port 2>)[count]
#define OP_SERVER_DESC_REQ 0xA2 // (null)
#define OP_SERVER_DESC_RES 0xA3 // <name_len 2><name name_len><desc_len 2 desc_en>
#define OP_SERVER_LIST_REQ2 0xA4 // (null)
// client <-> client
#define OP_HELLO 0x01 // 0x10<HASH 16><ID 4><PORT 2><1 Tag_set>
#define OP_SENDINGPART 0x46 // <HASH 16><von 4><bis 4><Daten len:(von-bis)>
#define OP_REQUESTPARTS 0x47 // <HASH 16><von[3] 4*3><bis[3] 4*3>
#define OP_FILEREQANSNOFIL 0x48 // <HASH 16>
#define OP_END_OF_DOWNLOAD 0x49 // <HASH 16>
#define OP_ASKSHAREDFILES 0x4A // (null)
#define OP_ASKSHAREDFILESANSWER 0x4B // <count 4>(<HASH 16><ID 4><PORT 2><1 Tag_set>)[count]
#define OP_HELLOANSWER 0x4C // <HASH 16><ID 4><PORT 2><1 Tag_set><SERVER_IP 4><SERVER_PORT 2>
#define OP_CHANGE_CLIENT_ID 0x4D // <ID_old 4><ID_new 4>
#define OP_MESSAGE 0x4E // <len 2><Message len>
#define OP_SETREQFILEID 0x4F // <HASH 16>
#define OP_FILESTATUS 0x50 // <HASH 16><count 2><status(bit array) len:((count+7)/8)>
#define OP_HASHSETREQUEST 0x51 // <HASH 16>
#define OP_HASHSETANSWER 0x52 // <count 2><HASH[count] 16*count>
#define OP_STARTUPLOADREQ 0x54 // <HASH 16>
#define OP_ACCEPTUPLOADREQ 0x55 // (null)
#define OP_CANCELTRANSFER 0x56 // (null)
#define OP_OUTOFPARTREQS 0x57 // (null)
#define OP_FILEREQUEST 0x58 // <HASH 16> (more correctly file_name_request)
#define OP_FILEREQANSWER 0x59 // <HASH 16><len 4><NAME len>
#define OP_CHANGE_SLOT 0x5B // <HASH 16>
#define OP_QUEUERANK 0x5C // <wert 4> (slot index of the request)
#define OP_ASKSHAREDDIRS 0x5D // (null)
#define OP_ASKSHAREDFILESDIR 0x5E // <len 2><Directory len>
#define OP_ASKSHAREDDIRSANS 0x5F // <count 4>(<len 2><Directory len>)[count]
#define OP_ASKSHAREDFILESDIRANS 0x60 // <len 2><Directory len><count 4>(<HASH 16><ID 4><PORT 2><1 Tag_set>)[count]
#define OP_ASKSHAREDDENIEDANS 0x61 // (null)
// extened prot client <-> extened prot client
#define OP_EMULEINFO 0x01 //
#define OP_EMULEINFOANSWER 0x02 //
#define OP_COMPRESSEDPART 0x40 //
#define OP_QUEUERANKING 0x60 // <RANG 2>
#define OP_FILEDESC 0x61 // <len 2><NAME len>
#define OP_REQUESTSOURCES 0x81 // <HASH 16>
#define OP_ANSWERSOURCES 0x82 //
#define OP_PUBLICKEY 0x85 // <len 1><pubkey len>
#define OP_SIGNATURE 0x86 // v1: <len 1><signature len> v2:<len 1><signature len><sigIPused 1>
#define OP_SECIDENTSTATE 0x87 // <state 1><rndchallenge 4>
#define OP_REQUESTPREVIEW 0x90 // <HASH 16>
#define OP_PREVIEWANSWER 0x91 // <HASH 16><frames 1>{frames * <len 4><frame len>}
// extened prot client <-> extened prot client UDP
#define OP_REASKFILEPING 0x90 // <HASH 16>
#define OP_REASKACK 0x91 // <RANG 2>
#define OP_FILENOTFOUND 0x92 // (null)
#define OP_QUEUEFULL 0x93 // (null)
// server.met
#define ST_SERVERNAME 0x01 // <string>
#define ST_DESCRIPTION 0x0B // <string>
#define ST_PING 0x0C // <int>
#define ST_PREFERENCE 0x0E // <int>
#define ST_FAIL 0x0D // <int>
#define ST_DYNIP 0x85
//#define ST_LASTPING 0x86 // <int> No longer used.
#define ST_MAXUSERS 0x87
#define ST_SOFTFILES 0x88
#define ST_HARDFILES 0x89
#define ST_LASTPING 0x90 // <int>
#define ST_VERSION 0x91 // <string>
#define ST_UDPFLAGS 0x92 // <int>
//file tags
#define FT_FILENAME 0x01
#define TAG_NAME "\x01"
#define FT_FILESIZE 0x02 // <int>
#define TAG_SIZE "\x02"
#define FT_FILETYPE 0x03 // <string>
#define TAG_TYPE "\x03"
#define FT_FILEFORMAT 0x04 // <string>
#define TAG_FORMAT "\x04"
#define FT_LASTSEENCOMPLETE 0x05
#define TAG_COLLECTION "\x05"
#define TAG_PART_PATH "\x06"
#define TAG_PART_HASH "\x07"
#define FT_TRANSFERED 0x08 // <int>
#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 // <string>
#define TAG_TEMPFILE "\x12"
//#define FT_PRIORITY 0x13 // Not used anymore
#define TAG_PRIORITY "\x13"
#define FT_STATUS 0x14
#define TAG_STATUS "\x14"
#define FT_SOURCES 0x15
#define TAG_AVAILABILITY "\x15"
#define FT_PERMISSIONS 0x16
#define TAG_QTIME "\x16"
//#define FT_ULPRIORITY 0x17 // Not used anymore
#define TAG_PARTS "\x17"
#define FT_DLPRIORITY 0x18 // Was 13
#define FT_ULPRIORITY 0x19 // Was 17
#define FT_KADLASTPUBLISHKEY 0x20 // <uint32>
#define FT_KADLASTPUBLISHSRC 0x21 // <uint32>
#define TAG_MEDIA_ARTIST "\xD0" // <string>
#define FT_MEDIA_ARTIST 0xD0 // <string>
#define TAG_MEDIA_ALBUM "\xD1" // <string>
#define FT_MEDIA_ALBUM 0xD1 // <string>
#define TAG_MEDIA_TITLE "\xD2" // <string>
#define FT_MEDIA_TITLE 0xD2 // <string>
#define TAG_MEDIA_LENGTH "\xD3" // <uint32> !!!
#define FT_MEDIA_LENGTH 0xD3 // <uint32> !!!
#define TAG_MEDIA_BITRATE "\xD4" // <uint32>
#define FT_MEDIA_BITRATE 0xD4 // <uint32>
#define TAG_MEDIA_CODEC "\xD5" // <string>
#define FT_MEDIA_CODEC 0xD5 // <string>
#define TAG_TTH_TAIL_1 "\xF8" // <uint32>
#define FT_TTH_TAIL_1 0xF8
#define TAG_TTH_TAIL_2 "\xF9" // <uint32>
#define FT_TTH_TAIL_2 0xF9
#define TAG_SERVERPORT "\xFA"
#define TAG_SERVERIP "\xFB"
#define TAG_SOURCEUPORT "\xFC"
#define FT_SOURCEUPORT 0xFC
#define TAG_SOURCEPORT "\xFD"
#define FT_SOURCEPORT 0xFD
#define TAG_SOURCEIP "\xFE"
#define FT_SOURCEIP 0xFE
#define TAG_SOURCETYPE "\xFF"
#define FT_SOURCETYPE 0xFF
// additional media meta data tags from eDonkeyHybrid (note also the uppercase/lowercase)
#define FT_ED2K_MEDIA_ARTIST "Artist" // <string>
#define FT_ED2K_MEDIA_ALBUM "Album" // <string>
#define FT_ED2K_MEDIA_TITLE "Title" // <string>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -