From eca2fc152e8c1fb75af8e4f14226c6aab80e60b2 Mon Sep 17 00:00:00 2001 From: upstream svn Date: Sun, 28 Feb 2010 17:35:23 +0000 Subject: [PATCH] Upstream tarball 10027 --- .svn-revision | 2 +- src/libs/ec/Makefile.am | 2 +- src/libs/ec/Makefile.in | 2 +- src/libs/ec/c#/ECCodes.cs | 408 ------------ src/libs/ec/c#/ECTagTypes.cs | 41 -- src/libs/ec/c#/amuleRemote.cs | 299 --------- src/libs/ec/c#/ecProto.cs | 669 ------------------- src/libs/ec/file_generator.pl | 71 +- src/remote-gui.net/AboutBox.Designer.cs | 186 ------ src/remote-gui.net/AboutBox.cs | 112 ---- src/remote-gui.net/AboutBox.resx | 610 ----------------- src/remote-gui.net/AddLinkDialog.Designer.cs | 81 --- src/remote-gui.net/AddLinkDialog.cs | 16 - src/remote-gui.net/AddLinkDialog.resx | 120 ---- src/remote-gui.net/ConnectDlg.Designer.cs | 154 ----- src/remote-gui.net/ConnectDlg.cs | 35 - src/remote-gui.net/ConnectDlg.resx | 123 ---- src/remote-gui.net/DownloadControl.cs | 597 ----------------- src/remote-gui.net/ECCodes.cs | 408 ------------ src/remote-gui.net/ECTagTypes.cs | 41 -- src/remote-gui.net/MainWindow.Designer.cs | 222 ------- src/remote-gui.net/MainWindow.cs | 509 --------------- src/remote-gui.net/MainWindow.resx | 120 ---- src/remote-gui.net/Program.cs | 44 -- src/remote-gui.net/Properties/AssemblyInfo.cs | 33 - .../Properties/Resources.Designer.cs | 126 ---- src/remote-gui.net/Properties/Resources.resx | 148 ----- src/remote-gui.net/Properties/Settings.Designer.cs | 26 - src/remote-gui.net/Properties/Settings.settings | 7 - src/remote-gui.net/SearchControl.Designer.cs | 106 --- src/remote-gui.net/SearchControl.cs | 16 - src/remote-gui.net/SearchControl.resx | 120 ---- src/remote-gui.net/amuleData.cs | 723 --------------------- src/remote-gui.net/amuleRemote.cs | 299 --------- src/remote-gui.net/ecProto.cs | 669 ------------------- src/remote-gui.net/images/Toolbar_About.png | Bin 1517 -> 0 bytes src/remote-gui.net/images/Toolbar_Disconnect.png | Bin 2026 -> 0 bytes src/remote-gui.net/images/Toolbar_Import.png | Bin 1997 -> 0 bytes src/remote-gui.net/images/Toolbar_Network.png | Bin 2464 -> 0 bytes src/remote-gui.net/images/Toolbar_Prefs.png | Bin 1372 -> 0 bytes src/remote-gui.net/images/Toolbar_Search.png | Bin 2215 -> 0 bytes src/remote-gui.net/images/Toolbar_Shared.png | Bin 1015 -> 0 bytes src/remote-gui.net/images/Toolbar_Stats.png | Bin 1886 -> 0 bytes src/remote-gui.net/images/Toolbar_Transfers.png | Bin 1504 -> 0 bytes src/remote-gui.net/remote-gui.net.csproj | 140 ---- src/remote-gui.net/remote-gui.net.sln | 20 - 46 files changed, 8 insertions(+), 7297 deletions(-) delete mode 100644 src/libs/ec/c#/ECCodes.cs delete mode 100644 src/libs/ec/c#/ECTagTypes.cs delete mode 100644 src/libs/ec/c#/amuleRemote.cs delete mode 100644 src/libs/ec/c#/ecProto.cs delete mode 100755 src/remote-gui.net/AboutBox.Designer.cs delete mode 100755 src/remote-gui.net/AboutBox.cs delete mode 100755 src/remote-gui.net/AboutBox.resx delete mode 100644 src/remote-gui.net/AddLinkDialog.Designer.cs delete mode 100644 src/remote-gui.net/AddLinkDialog.cs delete mode 100644 src/remote-gui.net/AddLinkDialog.resx delete mode 100644 src/remote-gui.net/ConnectDlg.Designer.cs delete mode 100644 src/remote-gui.net/ConnectDlg.cs delete mode 100644 src/remote-gui.net/ConnectDlg.resx delete mode 100755 src/remote-gui.net/DownloadControl.cs delete mode 100644 src/remote-gui.net/ECCodes.cs delete mode 100644 src/remote-gui.net/ECTagTypes.cs delete mode 100644 src/remote-gui.net/MainWindow.Designer.cs delete mode 100644 src/remote-gui.net/MainWindow.cs delete mode 100644 src/remote-gui.net/MainWindow.resx delete mode 100644 src/remote-gui.net/Program.cs delete mode 100755 src/remote-gui.net/Properties/AssemblyInfo.cs delete mode 100755 src/remote-gui.net/Properties/Resources.Designer.cs delete mode 100755 src/remote-gui.net/Properties/Resources.resx delete mode 100755 src/remote-gui.net/Properties/Settings.Designer.cs delete mode 100755 src/remote-gui.net/Properties/Settings.settings delete mode 100755 src/remote-gui.net/SearchControl.Designer.cs delete mode 100755 src/remote-gui.net/SearchControl.cs delete mode 100755 src/remote-gui.net/SearchControl.resx delete mode 100755 src/remote-gui.net/amuleData.cs delete mode 100644 src/remote-gui.net/amuleRemote.cs delete mode 100644 src/remote-gui.net/ecProto.cs delete mode 100644 src/remote-gui.net/images/Toolbar_About.png delete mode 100755 src/remote-gui.net/images/Toolbar_Disconnect.png delete mode 100755 src/remote-gui.net/images/Toolbar_Import.png delete mode 100755 src/remote-gui.net/images/Toolbar_Network.png delete mode 100755 src/remote-gui.net/images/Toolbar_Prefs.png delete mode 100755 src/remote-gui.net/images/Toolbar_Search.png delete mode 100755 src/remote-gui.net/images/Toolbar_Shared.png delete mode 100755 src/remote-gui.net/images/Toolbar_Stats.png delete mode 100755 src/remote-gui.net/images/Toolbar_Transfers.png delete mode 100755 src/remote-gui.net/remote-gui.net.csproj delete mode 100755 src/remote-gui.net/remote-gui.net.sln diff --git a/.svn-revision b/.svn-revision index d70cef23..41ec1d1f 100644 --- a/.svn-revision +++ b/.svn-revision @@ -1 +1 @@ -10026 +10027 diff --git a/src/libs/ec/Makefile.am b/src/libs/ec/Makefile.am index b78270b9..a8eea333 100644 --- a/src/libs/ec/Makefile.am +++ b/src/libs/ec/Makefile.am @@ -16,7 +16,7 @@ ECGeneratedFiles: $(ECGeneratedFilesSources) EXTRA_DIST = file_generator.pl -EXTRA__DIST__SUBDIRS = abstracts java # c# cannot be included because of the # in the name +EXTRA__DIST__SUBDIRS = abstracts java include $(top_srcdir)/automake/dist-hook.am DISTCLEANFILES = $(BUILT_SOURCES) diff --git a/src/libs/ec/Makefile.in b/src/libs/ec/Makefile.in index 8a4641af..bced55a9 100644 --- a/src/libs/ec/Makefile.in +++ b/src/libs/ec/Makefile.in @@ -331,7 +331,7 @@ ECGeneratedFilesSources = \ abstracts/ECCodes.abstract EXTRA_DIST = file_generator.pl -EXTRA__DIST__SUBDIRS = abstracts java # c# cannot be included because of the # in the name +EXTRA__DIST__SUBDIRS = abstracts java DISTCLEANFILES = $(BUILT_SOURCES) all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-recursive diff --git a/src/libs/ec/c#/ECCodes.cs b/src/libs/ec/c#/ECCodes.cs deleted file mode 100644 index 62afddaf..00000000 --- a/src/libs/ec/c#/ECCodes.cs +++ /dev/null @@ -1,408 +0,0 @@ -// -// This file is part of the aMule Project. -// -// Copyright (c) 2004-2008 aMule Team ( admin@amule.org / http://www.amule.org ) -// -// 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 - -// Purpose: -// EC codes and type definition. - -namespace amule.net -{ -public enum ProtocolVersion { - EC_CURRENT_PROTOCOL_VERSION = 0x0203 -}; -public enum ECFlags { - EC_FLAG_ZLIB = 0x00000001, - EC_FLAG_UTF8_NUMBERS = 0x00000002, - EC_FLAG_HAS_ID = 0x00000004, - EC_FLAG_ACCEPTS = 0x00000010, - EC_FLAG_NOTIFY = 0x00008000, - EC_FLAG_UNKNOWN_MASK = 0xff7f7f08 -}; -public enum ECOpCodes { - EC_OP_NOOP = 0x01, - EC_OP_AUTH_REQ = 0x02, - EC_OP_AUTH_FAIL = 0x03, - EC_OP_AUTH_OK = 0x04, - EC_OP_FAILED = 0x05, - EC_OP_STRINGS = 0x06, - EC_OP_MISC_DATA = 0x07, - EC_OP_SHUTDOWN = 0x08, - EC_OP_ADD_LINK = 0x09, - EC_OP_STAT_REQ = 0x0A, - EC_OP_GET_CONNSTATE = 0x0B, - EC_OP_STATS = 0x0C, - EC_OP_GET_DLOAD_QUEUE = 0x0D, - EC_OP_GET_ULOAD_QUEUE = 0x0E, - EC_OP_GET_WAIT_QUEUE = 0x0F, - EC_OP_GET_SHARED_FILES = 0x10, - EC_OP_SHARED_SET_PRIO = 0x11, - EC_OP_PARTFILE_REMOVE_NO_NEEDED = 0x12, - EC_OP_PARTFILE_REMOVE_FULL_QUEUE = 0x13, - EC_OP_PARTFILE_REMOVE_HIGH_QUEUE = 0x14, - EC_OP_PARTFILE_CLEANUP_SOURCES = 0x15, - EC_OP_PARTFILE_SWAP_A4AF_THIS = 0x16, - EC_OP_PARTFILE_SWAP_A4AF_THIS_AUTO = 0x17, - EC_OP_PARTFILE_SWAP_A4AF_OTHERS = 0x18, - EC_OP_PARTFILE_PAUSE = 0x19, - EC_OP_PARTFILE_RESUME = 0x1A, - EC_OP_PARTFILE_STOP = 0x1B, - EC_OP_PARTFILE_PRIO_SET = 0x1C, - EC_OP_PARTFILE_DELETE = 0x1D, - EC_OP_PARTFILE_SET_CAT = 0x1E, - EC_OP_DLOAD_QUEUE = 0x1F, - EC_OP_ULOAD_QUEUE = 0x20, - EC_OP_WAIT_QUEUE = 0x21, - EC_OP_SHARED_FILES = 0x22, - EC_OP_SHAREDFILES_RELOAD = 0x23, - EC_OP_SHAREDFILES_ADD_DIRECTORY = 0x24, - EC_OP_RENAME_FILE = 0x25, - EC_OP_SEARCH_START = 0x26, - EC_OP_SEARCH_STOP = 0x27, - EC_OP_SEARCH_RESULTS = 0x28, - EC_OP_SEARCH_PROGRESS = 0x29, - EC_OP_DOWNLOAD_SEARCH_RESULT = 0x2A, - EC_OP_IPFILTER_RELOAD = 0x2B, - EC_OP_GET_SERVER_LIST = 0x2C, - EC_OP_SERVER_LIST = 0x2D, - EC_OP_SERVER_DISCONNECT = 0x2E, - EC_OP_SERVER_CONNECT = 0x2F, - EC_OP_SERVER_REMOVE = 0x30, - EC_OP_SERVER_ADD = 0x31, - EC_OP_SERVER_UPDATE_FROM_URL = 0x32, - EC_OP_ADDLOGLINE = 0x33, - EC_OP_ADDDEBUGLOGLINE = 0x34, - EC_OP_GET_LOG = 0x35, - EC_OP_GET_DEBUGLOG = 0x36, - EC_OP_GET_SERVERINFO = 0x37, - EC_OP_LOG = 0x38, - EC_OP_DEBUGLOG = 0x39, - EC_OP_SERVERINFO = 0x3A, - EC_OP_RESET_LOG = 0x3B, - EC_OP_RESET_DEBUGLOG = 0x3C, - EC_OP_CLEAR_SERVERINFO = 0x3D, - EC_OP_GET_LAST_LOG_ENTRY = 0x3E, - EC_OP_GET_PREFERENCES = 0x3F, - EC_OP_SET_PREFERENCES = 0x40, - EC_OP_CREATE_CATEGORY = 0x41, - EC_OP_UPDATE_CATEGORY = 0x42, - EC_OP_DELETE_CATEGORY = 0x43, - EC_OP_GET_STATSGRAPHS = 0x44, - EC_OP_STATSGRAPHS = 0x45, - EC_OP_GET_STATSTREE = 0x46, - EC_OP_STATSTREE = 0x47, - EC_OP_KAD_START = 0x48, - EC_OP_KAD_STOP = 0x49, - EC_OP_CONNECT = 0x4A, - EC_OP_DISCONNECT = 0x4B, - EC_OP_KAD_UPDATE_FROM_URL = 0x4D, - EC_OP_KAD_BOOTSTRAP_FROM_IP = 0x4E, - EC_OP_AUTH_SALT = 0x4F, - EC_OP_AUTH_PASSWD = 0x50, - EC_OP_IPFILTER_UPDATE = 0x51 -}; -public enum ECTagNames { - EC_TAG_STRING = 0x0000, - EC_TAG_PASSWD_HASH = 0x0001, - EC_TAG_PROTOCOL_VERSION = 0x0002, - EC_TAG_VERSION_ID = 0x0003, - EC_TAG_DETAIL_LEVEL = 0x0004, - EC_TAG_CONNSTATE = 0x0005, - EC_TAG_ED2K_ID = 0x0006, - EC_TAG_LOG_TO_STATUS = 0x0007, - EC_TAG_BOOTSTRAP_IP = 0x0008, - EC_TAG_BOOTSTRAP_PORT = 0x0009, - EC_TAG_CLIENT_ID = 0x000A, - EC_TAG_PASSWD_SALT = 0x000B, - EC_TAG_CLIENT_NAME = 0x0100, - EC_TAG_CLIENT_VERSION = 0x0101, - EC_TAG_CLIENT_MOD = 0x0102, - EC_TAG_STATS_UL_SPEED = 0x0200, - EC_TAG_STATS_DL_SPEED = 0x0201, - EC_TAG_STATS_UL_SPEED_LIMIT = 0x0202, - EC_TAG_STATS_DL_SPEED_LIMIT = 0x0203, - EC_TAG_STATS_UP_OVERHEAD = 0x0204, - EC_TAG_STATS_DOWN_OVERHEAD = 0x0205, - EC_TAG_STATS_TOTAL_SRC_COUNT = 0x0206, - EC_TAG_STATS_BANNED_COUNT = 0x0207, - EC_TAG_STATS_UL_QUEUE_LEN = 0x0208, - EC_TAG_STATS_ED2K_USERS = 0x0209, - EC_TAG_STATS_KAD_USERS = 0x020A, - EC_TAG_STATS_ED2K_FILES = 0x020B, - EC_TAG_STATS_KAD_FILES = 0x020C, - EC_TAG_STATS_LOGGER_MESSAGE = 0x020D, - EC_TAG_STATS_KAD_FIREWALLED_UDP = 0x020E, - EC_TAG_STATS_KAD_INDEXED_SOURCES = 0x020F, - EC_TAG_STATS_KAD_INDEXED_KEYWORDS = 0x0210, - EC_TAG_STATS_KAD_INDEXED_NOTES = 0x0211, - EC_TAG_STATS_KAD_INDEXED_LOAD = 0x0212, - EC_TAG_STATS_KAD_IP_ADRESS = 0x0213, - EC_TAG_STATS_BUDDY_STATUS = 0x0214, - EC_TAG_STATS_BUDDY_IP = 0x0215, - EC_TAG_STATS_BUDDY_PORT = 0x0216, - EC_TAG_PARTFILE = 0x0300, - EC_TAG_PARTFILE_NAME = 0x0301, - EC_TAG_PARTFILE_PARTMETID = 0x0302, - EC_TAG_PARTFILE_SIZE_FULL = 0x0303, - EC_TAG_PARTFILE_SIZE_XFER = 0x0304, - EC_TAG_PARTFILE_SIZE_XFER_UP = 0x0305, - EC_TAG_PARTFILE_SIZE_DONE = 0x0306, - EC_TAG_PARTFILE_SPEED = 0x0307, - EC_TAG_PARTFILE_STATUS = 0x0308, - EC_TAG_PARTFILE_PRIO = 0x0309, - EC_TAG_PARTFILE_SOURCE_COUNT = 0x030A, - EC_TAG_PARTFILE_SOURCE_COUNT_A4AF = 0x030B, - EC_TAG_PARTFILE_SOURCE_COUNT_NOT_CURRENT = 0x030C, - EC_TAG_PARTFILE_SOURCE_COUNT_XFER = 0x030D, - EC_TAG_PARTFILE_ED2K_LINK = 0x030E, - EC_TAG_PARTFILE_CAT = 0x030F, - EC_TAG_PARTFILE_LAST_RECV = 0x0310, - EC_TAG_PARTFILE_LAST_SEEN_COMP = 0x0311, - EC_TAG_PARTFILE_PART_STATUS = 0x0312, - EC_TAG_PARTFILE_GAP_STATUS = 0x0313, - EC_TAG_PARTFILE_REQ_STATUS = 0x0314, - EC_TAG_PARTFILE_SOURCE_NAMES = 0x0315, - EC_TAG_PARTFILE_COMMENTS = 0x0316, - EC_TAG_PARTFILE_STOPPED = 0x0317, - EC_TAG_PARTFILE_DOWNLOAD_ACTIVE = 0x0318, - EC_TAG_PARTFILE_LOST_CORRUPTION = 0x0319, - EC_TAG_PARTFILE_GAINED_COMPRESSION = 0x031A, - EC_TAG_PARTFILE_SAVED_ICH = 0x031B, - EC_TAG_PARTFILE_SOURCE_NAMES_COUNTS = 0x031C, - EC_TAG_PARTFILE_AVAILABLE_PARTS = 0x031D, - EC_TAG_PARTFILE_HASH = 0x031E, - EC_TAG_KNOWNFILE = 0x0400, - EC_TAG_KNOWNFILE_XFERRED = 0x0401, - EC_TAG_KNOWNFILE_XFERRED_ALL = 0x0402, - EC_TAG_KNOWNFILE_REQ_COUNT = 0x0403, - EC_TAG_KNOWNFILE_REQ_COUNT_ALL = 0x0404, - EC_TAG_KNOWNFILE_ACCEPT_COUNT = 0x0405, - EC_TAG_KNOWNFILE_ACCEPT_COUNT_ALL = 0x0406, - EC_TAG_KNOWNFILE_AICH_MASTERHASH = 0x0407, - EC_TAG_KNOWNFILE_FILENAME = 0x0408, - EC_TAG_KNOWNFILE_COMPLETE_SOURCES_LOW = 0x0409, - EC_TAG_KNOWNFILE_COMPLETE_SOURCES_HIGH = 0x040A, - EC_TAG_SERVER = 0x0500, - EC_TAG_SERVER_NAME = 0x0501, - EC_TAG_SERVER_DESC = 0x0502, - EC_TAG_SERVER_ADDRESS = 0x0503, - EC_TAG_SERVER_PING = 0x0504, - EC_TAG_SERVER_USERS = 0x0505, - EC_TAG_SERVER_USERS_MAX = 0x0506, - EC_TAG_SERVER_FILES = 0x0507, - EC_TAG_SERVER_PRIO = 0x0508, - EC_TAG_SERVER_FAILED = 0x0509, - EC_TAG_SERVER_STATIC = 0x050A, - EC_TAG_SERVER_VERSION = 0x050B, - EC_TAG_CLIENT = 0x0600, - EC_TAG_CLIENT_SOFTWARE = 0x0601, - EC_TAG_CLIENT_SCORE = 0x0602, - EC_TAG_CLIENT_HASH = 0x0603, - EC_TAG_CLIENT_FRIEND = 0x0604, - EC_TAG_CLIENT_WAIT_TIME = 0x0605, - EC_TAG_CLIENT_XFER_TIME = 0x0606, - EC_TAG_CLIENT_QUEUE_TIME = 0x0607, - EC_TAG_CLIENT_LAST_TIME = 0x0608, - EC_TAG_CLIENT_UPLOAD_SESSION = 0x0609, - EC_TAG_CLIENT_UPLOAD_TOTAL = 0x060A, - EC_TAG_CLIENT_DOWNLOAD_TOTAL = 0x060B, - EC_TAG_CLIENT_DOWNLOAD_STATE = 0x060C, - EC_TAG_CLIENT_UP_SPEED = 0x060D, - EC_TAG_CLIENT_DOWN_SPEED = 0x060E, - EC_TAG_CLIENT_FROM = 0x060F, - EC_TAG_CLIENT_USER_IP = 0x0610, - EC_TAG_CLIENT_USER_PORT = 0x0611, - EC_TAG_CLIENT_SERVER_IP = 0x0612, - EC_TAG_CLIENT_SERVER_PORT = 0x0613, - EC_TAG_CLIENT_SERVER_NAME = 0x0614, - EC_TAG_CLIENT_SOFT_VER_STR = 0x0615, - EC_TAG_CLIENT_WAITING_POSITION = 0x0616, - EC_TAG_CLIENT_IDENT_STATE = 0x0617, - EC_TAG_CLIENT_OBFUSCATED_CONNECTION = 0x0618, - EC_TAG_CLIENT_RATING = 0x0619, - EC_TAG_CLIENT_REMOTE_QUEUE_RANK = 0x061A, - EC_TAG_CLIENT_ASKED_COUNT = 0x061B, - EC_TAG_CLIENT_UPLOAD_STATE = 0x061C, - EC_TAG_CLIENT_EXT_PROTOCOL = 0x061D, - EC_TAG_CLIENT_USER_ID = 0x061E, - EC_TAG_SEARCHFILE = 0x0700, - EC_TAG_SEARCH_TYPE = 0x0701, - EC_TAG_SEARCH_NAME = 0x0702, - EC_TAG_SEARCH_MIN_SIZE = 0x0703, - EC_TAG_SEARCH_MAX_SIZE = 0x0704, - EC_TAG_SEARCH_FILE_TYPE = 0x0705, - EC_TAG_SEARCH_EXTENSION = 0x0706, - EC_TAG_SEARCH_AVAILABILITY = 0x0707, - EC_TAG_SEARCH_STATUS = 0x0708, - EC_TAG_SELECT_PREFS = 0x1000, - EC_TAG_PREFS_CATEGORIES = 0x1100, - EC_TAG_CATEGORY = 0x1101, - EC_TAG_CATEGORY_TITLE = 0x1102, - EC_TAG_CATEGORY_PATH = 0x1103, - EC_TAG_CATEGORY_COMMENT = 0x1104, - EC_TAG_CATEGORY_COLOR = 0x1105, - EC_TAG_CATEGORY_PRIO = 0x1106, - EC_TAG_PREFS_GENERAL = 0x1200, - EC_TAG_USER_NICK = 0x1201, - EC_TAG_USER_HASH = 0x1202, - EC_TAG_USER_HOST = 0x1203, - EC_TAG_GENERAL_CHECK_NEW_VERSION = 0x1204, - EC_TAG_PREFS_CONNECTIONS = 0x1300, - EC_TAG_CONN_DL_CAP = 0x1301, - EC_TAG_CONN_UL_CAP = 0x1302, - EC_TAG_CONN_MAX_DL = 0x1303, - EC_TAG_CONN_MAX_UL = 0x1304, - EC_TAG_CONN_SLOT_ALLOCATION = 0x1305, - EC_TAG_CONN_TCP_PORT = 0x1306, - EC_TAG_CONN_UDP_PORT = 0x1307, - EC_TAG_CONN_UDP_DISABLE = 0x1308, - EC_TAG_CONN_MAX_FILE_SOURCES = 0x1309, - EC_TAG_CONN_MAX_CONN = 0x130A, - EC_TAG_CONN_AUTOCONNECT = 0x130B, - EC_TAG_CONN_RECONNECT = 0x130C, - EC_TAG_NETWORK_ED2K = 0x130D, - EC_TAG_NETWORK_KADEMLIA = 0x130E, - EC_TAG_PREFS_MESSAGEFILTER = 0x1400, - EC_TAG_MSGFILTER_ENABLED = 0x1401, - EC_TAG_MSGFILTER_ALL = 0x1402, - EC_TAG_MSGFILTER_FRIENDS = 0x1403, - EC_TAG_MSGFILTER_SECURE = 0x1404, - EC_TAG_MSGFILTER_BY_KEYWORD = 0x1405, - EC_TAG_MSGFILTER_KEYWORDS = 0x1406, - EC_TAG_PREFS_REMOTECTRL = 0x1500, - EC_TAG_WEBSERVER_AUTORUN = 0x1501, - EC_TAG_WEBSERVER_PORT = 0x1502, - EC_TAG_WEBSERVER_GUEST = 0x1503, - EC_TAG_WEBSERVER_USEGZIP = 0x1504, - EC_TAG_WEBSERVER_REFRESH = 0x1505, - EC_TAG_WEBSERVER_TEMPLATE = 0x1506, - EC_TAG_PREFS_ONLINESIG = 0x1600, - EC_TAG_ONLINESIG_ENABLED = 0x1601, - EC_TAG_PREFS_SERVERS = 0x1700, - EC_TAG_SERVERS_REMOVE_DEAD = 0x1701, - EC_TAG_SERVERS_DEAD_SERVER_RETRIES = 0x1702, - EC_TAG_SERVERS_AUTO_UPDATE = 0x1703, - EC_TAG_SERVERS_URL_LIST = 0x1704, - EC_TAG_SERVERS_ADD_FROM_SERVER = 0x1705, - EC_TAG_SERVERS_ADD_FROM_CLIENT = 0x1706, - EC_TAG_SERVERS_USE_SCORE_SYSTEM = 0x1707, - EC_TAG_SERVERS_SMART_ID_CHECK = 0x1708, - EC_TAG_SERVERS_SAFE_SERVER_CONNECT = 0x1709, - EC_TAG_SERVERS_AUTOCONN_STATIC_ONLY = 0x170A, - EC_TAG_SERVERS_MANUAL_HIGH_PRIO = 0x170B, - EC_TAG_SERVERS_UPDATE_URL = 0x170C, - EC_TAG_PREFS_FILES = 0x1800, - EC_TAG_FILES_ICH_ENABLED = 0x1801, - EC_TAG_FILES_AICH_TRUST = 0x1802, - EC_TAG_FILES_NEW_PAUSED = 0x1803, - EC_TAG_FILES_NEW_AUTO_DL_PRIO = 0x1804, - EC_TAG_FILES_PREVIEW_PRIO = 0x1805, - EC_TAG_FILES_NEW_AUTO_UL_PRIO = 0x1806, - EC_TAG_FILES_UL_FULL_CHUNKS = 0x1807, - EC_TAG_FILES_START_NEXT_PAUSED = 0x1808, - EC_TAG_FILES_RESUME_SAME_CAT = 0x1809, - EC_TAG_FILES_SAVE_SOURCES = 0x180A, - EC_TAG_FILES_EXTRACT_METADATA = 0x180B, - EC_TAG_FILES_ALLOC_FULL_SIZE = 0x180C, - EC_TAG_FILES_CHECK_FREE_SPACE = 0x180D, - EC_TAG_FILES_MIN_FREE_SPACE = 0x180E, - EC_TAG_PREFS_SRCDROP = 0x1900, - EC_TAG_SRCDROP_NONEEDED = 0x1901, - EC_TAG_SRCDROP_DROP_FQS = 0x1902, - EC_TAG_SRCDROP_DROP_HQRS = 0x1903, - EC_TAG_SRCDROP_HQRS_VALUE = 0x1904, - EC_TAG_SRCDROP_AUTODROP_TIMER = 0x1905, - EC_TAG_PREFS_DIRECTORIES = 0x1A00, - EC_TAG_DIRECTORIES_INCOMING = 0x1A01, - EC_TAG_DIRECTORIES_TEMP = 0x1A02, - EC_TAG_DIRECTORIES_SHARED = 0x1A03, - EC_TAG_DIRECTORIES_SHARE_HIDDEN = 0x1A04, - EC_TAG_PREFS_STATISTICS = 0x1B00, - EC_TAG_STATSGRAPH_WIDTH = 0x1B01, - EC_TAG_STATSGRAPH_SCALE = 0x1B02, - EC_TAG_STATSGRAPH_LAST = 0x1B03, - EC_TAG_STATSGRAPH_DATA = 0x1B04, - EC_TAG_STATTREE_CAPPING = 0x1B05, - EC_TAG_STATTREE_NODE = 0x1B06, - EC_TAG_STAT_NODE_VALUE = 0x1B07, - EC_TAG_STAT_VALUE_TYPE = 0x1B08, - EC_TAG_STATTREE_NODEID = 0x1B09, - EC_TAG_PREFS_SECURITY = 0x1C00, - EC_TAG_SECURITY_CAN_SEE_SHARES = 0x1C01, - EC_TAG_IPFILTER_CLIENTS = 0x1C02, - EC_TAG_IPFILTER_SERVERS = 0x1C03, - EC_TAG_IPFILTER_AUTO_UPDATE = 0x1C04, - EC_TAG_IPFILTER_UPDATE_URL = 0x1C05, - EC_TAG_IPFILTER_LEVEL = 0x1C06, - EC_TAG_IPFILTER_FILTER_LAN = 0x1C07, - EC_TAG_SECURITY_USE_SECIDENT = 0x1C08, - EC_TAG_SECURITY_OBFUSCATION_SUPPORTED = 0x1C09, - EC_TAG_SECURITY_OBFUSCATION_REQUESTED = 0x1C0A, - EC_TAG_SECURITY_OBFUSCATION_REQUIRED = 0x1C0B, - EC_TAG_PREFS_CORETWEAKS = 0x1D00, - EC_TAG_CORETW_MAX_CONN_PER_FIVE = 0x1D01, - EC_TAG_CORETW_VERBOSE = 0x1D02, - EC_TAG_CORETW_FILEBUFFER = 0x1D03, - EC_TAG_CORETW_UL_QUEUE = 0x1D04, - EC_TAG_CORETW_SRV_KEEPALIVE_TIMEOUT = 0x1D05, - EC_TAG_PREFS_KADEMLIA = 0x1E00, - EC_TAG_KADEMLIA_UPDATE_URL = 0x1E01 -}; -public enum EC_DETAIL_LEVEL { - EC_DETAIL_CMD = 0x00, - EC_DETAIL_WEB = 0x01, - EC_DETAIL_FULL = 0x02, - EC_DETAIL_UPDATE = 0x03, - EC_DETAIL_INC_UPDATE = 0x04 -}; -public enum EC_SEARCH_TYPE { - EC_SEARCH_LOCAL = 0x00, - EC_SEARCH_GLOBAL = 0x01, - EC_SEARCH_KAD = 0x02, - EC_SEARCH_WEB = 0x03 -}; -public enum EC_STATTREE_NODE_VALUE_TYPE { - EC_VALUE_INTEGER = 0x00, - EC_VALUE_ISTRING = 0x01, - EC_VALUE_BYTES = 0x02, - EC_VALUE_ISHORT = 0x03, - EC_VALUE_TIME = 0x04, - EC_VALUE_SPEED = 0x05, - EC_VALUE_STRING = 0x06, - EC_VALUE_DOUBLE = 0x07 -}; -public enum EcPrefs { - EC_PREFS_CATEGORIES = 0x00000001, - EC_PREFS_GENERAL = 0x00000002, - EC_PREFS_CONNECTIONS = 0x00000004, - EC_PREFS_MESSAGEFILTER = 0x00000008, - EC_PREFS_REMOTECONTROLS = 0x00000010, - EC_PREFS_ONLINESIG = 0x00000020, - EC_PREFS_SERVERS = 0x00000040, - EC_PREFS_FILES = 0x00000080, - EC_PREFS_SRCDROP = 0x00000100, - EC_PREFS_DIRECTORIES = 0x00000200, - EC_PREFS_STATISTICS = 0x00000400, - EC_PREFS_SECURITY = 0x00000800, - EC_PREFS_CORETWEAKS = 0x00001000, - EC_PREFS_KADEMLIA = 0x00002000 -}; -} diff --git a/src/libs/ec/c#/ECTagTypes.cs b/src/libs/ec/c#/ECTagTypes.cs deleted file mode 100644 index 6c451c2f..00000000 --- a/src/libs/ec/c#/ECTagTypes.cs +++ /dev/null @@ -1,41 +0,0 @@ -// -// This file is part of the aMule Project. -// -// Copyright (c) 2004-2008 aMule Team ( admin@amule.org / http://www.amule.org ) -// -// 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 - -// Purpose: -// EC tag types for use on the ec library. - -namespace amule.net -{ -public enum ECTagTypes { - EC_TAGTYPE_UNKNOWN = 0, - EC_TAGTYPE_CUSTOM = 1, - EC_TAGTYPE_UINT8 = 2, - EC_TAGTYPE_UINT16 = 3, - EC_TAGTYPE_UINT32 = 4, - EC_TAGTYPE_UINT64 = 5, - EC_TAGTYPE_STRING = 6, - EC_TAGTYPE_DOUBLE = 7, - EC_TAGTYPE_IPV4 = 8, - EC_TAGTYPE_HASH16 = 9 -}; -} diff --git a/src/libs/ec/c#/amuleRemote.cs b/src/libs/ec/c#/amuleRemote.cs deleted file mode 100644 index 87326270..00000000 --- a/src/libs/ec/c#/amuleRemote.cs +++ /dev/null @@ -1,299 +0,0 @@ -// -// This file is part of the aMule Project. -// -// Copyright (c) 2003-2008 aMule Team ( admin@amule.org / http://www.amule.org ) -// Copyright (c) 2003-2008 Froenchenko Leonid ( lfroen@gmail.com / http://www.amule.org ) -// -// 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 -// -using System; -using System.IO; -using System.Security; -using System.Security.Permissions; -using System.Threading; -using System.Collections.Generic; -using System.Text; -using System.Net; -using System.Net.Sockets; - -namespace amule.net -{ - - // Define the state object for the callback. - // Use hostName to correlate calls with the proper result. - public class ResolveState { - IPHostEntry resolvedIPs; - - public string errorMsg; - - public IPHostEntry IPs - { - get { return resolvedIPs; } - set { resolvedIPs = value; } - } - } - - public class ConnectState { - public Socket sock; - public string errorMsg; - - public ConnectState(Socket s) - { - sock = s; - } - } - - public abstract class amuleECHandler { - public amuleECHandler() - { - } - - public abstract void HandlePacket(ecProto.ecPacket packet); - } - - class amuleLogicHandler : amuleECHandler { - amuleRemote m_owner; - bool m_auth_result = false; - - public amuleLogicHandler(amuleRemote o) - { - m_owner = o; - } - - public override void HandlePacket(ecProto.ecPacket packet) - { - if ( packet.Opcode() == ECOpCodes.EC_OP_AUTH_OK ) { - Console.WriteLine("amuleLogicHandler : Authenticated OK"); - m_auth_result = true; - m_owner.m_packet_op_Done.Set(); - } else { - Console.WriteLine("amuleLogicHandler : Authentication failed. Core reply was {0}", packet.Opcode()); - } - } - - public bool AuthResult() - { - return m_auth_result; - } - } - - class amuleRemote { - amuleECHandler m_handler = null; - - public ManualResetEvent m_packet_op_Done = new ManualResetEvent(false); - - // Record the IPs in the state object for later use. - static void GetHostEntryCallback(IAsyncResult ar) - { - ResolveState ioContext = (ResolveState)ar.AsyncState; - try { - ioContext.IPs = Dns.EndGetHostEntry(ar); - } catch (SocketException e) { - ioContext.errorMsg = e.Message; - } - } - - Socket m_s; - - static void ConnectCallback(IAsyncResult ar) - { - // Retrieve the socket from the state object. - ConnectState state = (ConnectState)ar.AsyncState; - try { - // Complete the connection. - state.sock.EndConnect(ar); - - Console.WriteLine("Socket connected to {0}", - state.sock.RemoteEndPoint.ToString()); - - } catch (Exception e) { - state.errorMsg = e.Message; - } - } - - byte[] m_rx_buffer = new byte[32 * 1024]; - MemoryStream m_rx_mem_stream = null; - int m_rx_byte_count = 0; - int m_rx_remaining_count = 0; - - byte[] m_tx_buffer = new byte[32 * 1024]; - MemoryStream m_tx_mem_stream = null; - - //LinkedList m_tx_queue; - BinaryReader m_sock_reader = null; - BinaryWriter m_sock_writer = null; - - static void RxCallback(IAsyncResult ar) - { - amuleRemote o = (amuleRemote)ar.AsyncState; - Console.WriteLine("RxCallback signalled, calling EndReceive"); - int bytesRead = o.m_s.EndReceive(ar); - if ( bytesRead == 0 ) { - // remote side closed connection. - // indicate error to caller - o.m_rx_byte_count = -1; - return; - } - o.m_rx_remaining_count -= bytesRead; - Console.WriteLine("RxCallback: got {0} bytes, waiting for {1}", - bytesRead, o.m_rx_remaining_count); - // are we still waiting for flags and size? - if (o.m_rx_byte_count < 8) { - if ((o.m_rx_byte_count + bytesRead) >= 8) { - // got flags and packet size - may proceed. - Int32 flags = o.m_sock_reader.ReadInt32(); - Int32 val32 = o.m_sock_reader.ReadInt32(); - - o.m_rx_remaining_count = (int)IPAddress.NetworkToHostOrder(val32) - (bytesRead - 8); - Console.WriteLine("RxCallback: expecting packet size={0}", o.m_rx_remaining_count); - if ( o.m_rx_buffer.Length <= (o.m_rx_remaining_count+o.m_rx_byte_count) ) { - byte [] new_buffer = new byte[o.m_rx_remaining_count + o.m_rx_buffer.Length + 1]; - o.m_rx_buffer.CopyTo(new_buffer, 0); - o.m_rx_buffer = new_buffer; - // - // update stream reader with new buffer - // - o.m_rx_mem_stream = new MemoryStream(o.m_rx_buffer); - o.m_sock_reader = new BinaryReader(o.m_rx_mem_stream); - } - } - } else { - if ( o.m_rx_remaining_count == 0 ) { - // - // Packet received - call handler - // - if ( o.m_handler != null ) { - o.m_rx_mem_stream.Seek(0, SeekOrigin.Begin); - Console.WriteLine("Packet received - call handler"); - ecProto.ecPacket p = new ecProto.ecPacket(o.m_sock_reader); - //m_packet_op_Done.Set(); - o.m_handler.HandlePacket(p); - Console.WriteLine("Handler done"); - } - Console.WriteLine("Signalling event"); - //m_packet_op_Done.Set(); - // - // Keep waiting for more packets - // - o.StartReceive(); - return; - } - } - o.m_rx_byte_count += bytesRead; - - // not just yet - keep waiting - o.m_s.BeginReceive(o.m_rx_buffer, o.m_rx_byte_count, o.m_rx_remaining_count, - SocketFlags.None, new AsyncCallback(RxCallback), o); - } - - static void TxCallback(IAsyncResult ar) - { - amuleRemote o = (amuleRemote)ar.AsyncState; - Console.WriteLine("TxCallback signalled, calling EndWrite"); - o.m_s.EndSend(ar); - } - - public IAsyncResult SendPacket(ecProto.ecPacket packet) - { - m_tx_mem_stream.Seek(0, SeekOrigin.Begin); - packet.Write(m_sock_writer); - - return m_s.BeginSend(m_tx_buffer, 0, packet.PacketSize(), - SocketFlags.None, new AsyncCallback(TxCallback), this); - } - - public void StartReceive() - { - // reply packet is supposed to have at least 8 bytes - m_rx_remaining_count = 8; - m_rx_byte_count = 0; - m_rx_mem_stream.Seek(0, SeekOrigin.Begin); - m_s.BeginReceive(m_rx_buffer, 0, 8, SocketFlags.None, new AsyncCallback(RxCallback), this); - } - - [DnsPermission(SecurityAction.Demand, Unrestricted = true)] - public bool ConnectToCore(string host, int port, string pass, ref string error) - { - try { - IAsyncResult async_result; - - ResolveState resolveContext = new ResolveState(); - async_result = Dns.BeginGetHostEntry(host, - new AsyncCallback(GetHostEntryCallback), resolveContext); - - async_result.AsyncWaitHandle.WaitOne(); - if ( resolveContext.IPs == null ) { - error = resolveContext.errorMsg; - return false; - } - Console.WriteLine("Resolved: '{0}' -> '{1}", host,resolveContext.IPs.AddressList[0]); - Console.WriteLine("Connecting to {0}:{1}", resolveContext.IPs.AddressList[0], port); - IPEndPoint remoteEP = new IPEndPoint(resolveContext.IPs.AddressList[0], port); - m_s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); - - ConnectState connectContext = new ConnectState(m_s); - async_result = m_s.BeginConnect(remoteEP, new AsyncCallback(ConnectCallback), connectContext); - if ( !async_result.AsyncWaitHandle.WaitOne(10000, true) ) { - error = "Timeout during connection. Possible firewall"; - return false; - } - - if ( connectContext.errorMsg != null) { - error = connectContext.errorMsg; - return false; - } - - m_tx_mem_stream = new MemoryStream(m_tx_buffer); - m_sock_writer = new BinaryWriter(m_tx_mem_stream); - m_rx_mem_stream = new MemoryStream(m_rx_buffer); - m_sock_reader = new BinaryReader(m_rx_mem_stream); - - ecProto.ecLoginPacket p = new ecProto.ecLoginPacket("amule.net", "0.0.1", pass); - async_result = SendPacket(p); - - if (!async_result.AsyncWaitHandle.WaitOne()) { - // Was unable to send login request for 1sec. Line must be really slow - return false; - } - - m_handler = new amuleLogicHandler(this); - StartReceive(); - Console.WriteLine("Waiting for auth done"); - // FIXME: must be able to cancel this read. - m_packet_op_Done.WaitOne(); - if ( m_rx_byte_count == -1 ) { - // remote side terminated connection - Console.WriteLine("Connection terminated on remote side"); - } - Console.WriteLine("Connect done"); - bool result = ((amuleLogicHandler)m_handler).AuthResult(); - m_handler = null; - return result; - } catch (Exception e) { - error = e.Message; - return false; - } - } - - public void SetECHandler(amuleECHandler h) - { - m_handler = h; - } - } -} diff --git a/src/libs/ec/c#/ecProto.cs b/src/libs/ec/c#/ecProto.cs deleted file mode 100644 index 9f0407b0..00000000 --- a/src/libs/ec/c#/ecProto.cs +++ /dev/null @@ -1,669 +0,0 @@ -// -// This file is part of the aMule Project. -// -// Copyright (c) 2003-2008 aMule Team ( admin@amule.org / http://www.amule.org ) -// Copyright (c) 2003-2008 Froenchenko Leonid ( lfroen@gmail.com / http://www.amule.org ) -// -// 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 -// - -using System; -using System.IO; -using System.Security.Cryptography; -using System.Collections.Generic; -using System.Text; - -namespace amule.net -{ - public enum EcTagTypes { - EC_TAGTYPE_UNKNOWN = 0, - EC_TAGTYPE_CUSTOM = 1, - EC_TAGTYPE_UINT8 = 2, - EC_TAGTYPE_UINT16 = 3, - EC_TAGTYPE_UINT32 = 4, - EC_TAGTYPE_UINT64 = 5, - EC_TAGTYPE_STRING = 6, - EC_TAGTYPE_DOUBLE = 7, - EC_TAGTYPE_IPV4 = 8, - EC_TAGTYPE_HASH16 = 9 - }; - - public class ecProto { - - public class ecTag { - protected int m_size; - protected EcTagTypes m_type; - protected ECTagNames m_name; - protected LinkedList m_subtags; - - public ecTag(ECTagNames n, EcTagTypes t) - { - m_name = n; - m_type = t; - m_subtags = new LinkedList(); - } - public ecTag(ECTagNames n, EcTagTypes t, LinkedList subtags) - { - m_name = n; - m_type = t; - m_subtags = subtags; ; - } - - public ecTag() - { - m_subtags = new LinkedList(); - } - - public int SubtagCount() - { - return m_subtags.Count; - } - - protected void WriteSubtags(BinaryWriter wr) - { - Int16 count16 = (Int16)m_subtags.Count; - if (count16 != 0) { - wr.Write(System.Net.IPAddress.HostToNetworkOrder(count16)); - foreach (ecTag t in m_subtags) - { - t.Write(wr); - } - } - } - - public ECTagNames Name() - { - return m_name; - } - - public virtual void Write(BinaryWriter wr) - { - Int16 name16 = (Int16)(m_name); - name16 <<= 1; - byte type8 = (byte)m_type; - Int32 size32 = (Int32)Size(); - if (m_subtags.Count != 0) { - name16 |= 1; - } - wr.Write(System.Net.IPAddress.HostToNetworkOrder(name16)); - wr.Write(type8); - wr.Write(System.Net.IPAddress.HostToNetworkOrder(size32)); - - WriteSubtags(wr); - // - // here derived class will put actual data - // - } - - protected int Size() - { - int total_size = m_size; - foreach (ecTag t in m_subtags) { - total_size += t.Size(); - // name + type + size for each tag - total_size += (2 + 1 + 4); - if (t.HaveSubtags()) { - total_size += 2; - } - } - return total_size; - } - - public LinkedList.Enumerator GetTagIterator() - { - return m_subtags.GetEnumerator(); - } - - public void AddSubtag(ecTag t) - { - m_subtags.AddLast(t); - } - - bool HaveSubtags() - { - return (m_subtags.Count != 0); - } - - public ecTag SubTag(ECTagNames name) - { - foreach (ecTag t in m_subtags) { - if (t.m_name == name) { - return t; - } - } - return null; - } - } - - public class ecTagInt : ecTag { - protected Int64 m_val; - public ecTagInt(ECTagNames n, byte v) - : base(n, EcTagTypes.EC_TAGTYPE_UINT8) - { - m_val = v; - m_size = 1; - } - - public ecTagInt(ECTagNames n, Int16 v) - : base(n, EcTagTypes.EC_TAGTYPE_UINT16) - { - m_val = v; - m_size = 2; - } - - public ecTagInt(ECTagNames n, Int32 v) - : base(n, EcTagTypes.EC_TAGTYPE_UINT32) - { - m_val = v; - m_size = 4; - } - - public ecTagInt(ECTagNames n, Int64 v) - : base(n, EcTagTypes.EC_TAGTYPE_UINT64) - { - m_val = v; - m_size = 8; - } - - public ecTagInt(ECTagNames n, Int32 tag_size, BinaryReader br, LinkedList subtags) - : base(n, EcTagTypes.EC_TAGTYPE_UINT8, subtags) - { - m_size = tag_size; - UInt64 raw_val; - Int32 hi, lo, v32; - Int16 v16; - switch ( m_size ) { - case 8: - m_type = EcTagTypes.EC_TAGTYPE_UINT64; - lo = System.Net.IPAddress.NetworkToHostOrder(br.ReadInt32()); - hi = System.Net.IPAddress.NetworkToHostOrder(br.ReadInt32()); - raw_val = ((UInt64)hi) << 32 | (UInt32)lo; - break; - case 4: - m_type = EcTagTypes.EC_TAGTYPE_UINT32; - v32 = (System.Net.IPAddress.NetworkToHostOrder(br.ReadInt32())); - raw_val = (UInt32)v32; - break; - case 2: - m_type = EcTagTypes.EC_TAGTYPE_UINT16; - v16 = System.Net.IPAddress.NetworkToHostOrder(br.ReadInt16()); - raw_val = (UInt16)v16; - break; - case 1: - m_type = EcTagTypes.EC_TAGTYPE_UINT8; - raw_val = (UInt64)br.ReadByte(); - break; - default: - throw new Exception("Unexpected size of data in integer tag"); - } - m_val = (Int64)raw_val; - if ( m_val < 0 ) { - throw new Exception("WTF - typecasting is broken?!"); - } - } - - public int ValueInt() - { - return (int)m_val; - } - - public Int64 Value64() - { - return m_val; - } - - public override void Write(BinaryWriter wr) - { - base.Write(wr); - - switch ( m_size ) { - case 8: - Int32 val32 = (Int32)(m_val >> 32); - wr.Write(System.Net.IPAddress.HostToNetworkOrder(val32)); - - val32 = (Int32)(m_val & 0xffffffff); - wr.Write(System.Net.IPAddress.HostToNetworkOrder(val32)); - break; - case 4: - val32 = (Int32)(m_val & 0xffffffff); - wr.Write(System.Net.IPAddress.HostToNetworkOrder(val32)); - break; - case 2: - Int16 val16 = (Int16)(m_val & 0xffff); - wr.Write(System.Net.IPAddress.HostToNetworkOrder(val16)); - break; - case 1: - wr.Write((byte)(m_val & 0xff)); - break; - } - - } - } - - public class ecMD5 : IComparable, IEquatable { - Int64 m_lo, m_hi; - public ecMD5(Int64 lo, Int64 hi) - { - m_hi = hi; - m_lo = lo; - } - - // - // actual byte order doesn't matter, but conversion must be consistant - // - public ecMD5(byte [] v) - { - m_lo = ((Int64)v[0] << 0) | ((Int64)v[1] << 8) | ((Int64)v[2] << 16) | ((Int64)v[3] << 24) | - ((Int64)v[4] << 32) | ((Int64)v[5] << 40) | ((Int64)v[6] << 48) | ((Int64)v[7] << 56); - m_hi = ((Int64)v[8] << 0) | ((Int64)v[9] << 8) | ((Int64)v[10] << 16) | ((Int64)v[11] << 24) | - ((Int64)v[12] << 32) | ((Int64)v[13] << 40) | ((Int64)v[14] << 48) | ((Int64)v[15] << 56); - } - - public byte [] ByteValue() - { - byte[] v = { - (byte)(m_lo >> 0), (byte)(m_lo >> 8), (byte)(m_lo >> 16), (byte)(m_lo >> 24), - (byte)(m_lo >> 32), (byte)(m_lo >> 40), (byte)(m_lo >> 48), (byte)(m_lo >> 56), - (byte)(m_hi >> 0), (byte)(m_hi >> 8), (byte)(m_hi >> 16), (byte)(m_hi >> 24), - (byte)(m_hi >> 32), (byte)(m_hi >> 40), (byte)(m_hi >> 48), (byte)(m_hi >> 56), - }; - return v; - } - - public override int GetHashCode() - { - return (int)m_lo ^ (int)m_hi; - } - - public bool Equals(ecMD5 i) - { - return (m_hi == i.m_hi) && (m_lo == i.m_lo); - } - - public int CompareTo(ecMD5 i) - { - Int64 r = ((m_hi == i.m_hi) ? (m_lo - i.m_lo) : (m_hi - i.m_hi)); - return r > 0 ? 1 : (r < 0 ? -1 : 0); - } - } - - public class ecTagMD5 : ecTag { - byte[] m_val; - - public ecTagMD5(ECTagNames n, ecMD5 value) - : base(n, EcTagTypes.EC_TAGTYPE_HASH16) - { - m_val = value.ByteValue(); - m_size = 16; - } - - public ecTagMD5(ECTagNames n, string s, bool string_is_hash) - : base(n, EcTagTypes.EC_TAGTYPE_HASH16) - { - if ( string_is_hash ) { - // in this case hash is passed as hex string - if ( s.Length != 16*2 ) { - throw new Exception("md5 hash of proto version have incorrect length"); - } - //byte[] hash_str = s.ToCharArray(); - for (int i = 0; i < 16; i++) { - string v = s.Substring(i * 2, 2); - - } - m_val = new byte[16]; - } else { - MD5CryptoServiceProvider p = new MD5CryptoServiceProvider(); - byte[] bs = System.Text.Encoding.UTF8.GetBytes(s); - m_val = p.ComputeHash(bs); - } - m_size = 16; - } - - public ecTagMD5(ECTagNames name, byte[] hash_data) - : base(name, EcTagTypes.EC_TAGTYPE_HASH16) - { - m_val = hash_data; - m_size = 16; - } - - public ecTagMD5(ECTagNames name, BinaryReader br, LinkedList subtags) - : base(name, EcTagTypes.EC_TAGTYPE_HASH16, subtags) - { - m_size = 16; - m_val = br.ReadBytes(16); - } - - public override void Write(BinaryWriter wr) - { - base.Write(wr); - wr.Write(m_val); - } - - public ecMD5 ValueMD5() - { - return new ecMD5(m_val); - } - } - - public class ecTagIPv4 : ecTag { - Int32 m_addr; - Int16 m_port; - public ecTagIPv4(ECTagNames name, BinaryReader br, LinkedList subtags) - : base(name, EcTagTypes.EC_TAGTYPE_IPV4, subtags) - { - m_size = 4+2; - m_addr = System.Net.IPAddress.NetworkToHostOrder(br.ReadInt32()); - m_port = System.Net.IPAddress.NetworkToHostOrder(br.ReadInt16()); - } - } - - public class ecTagCustom : ecTag { - byte[] m_val; - public ecTagCustom(ECTagNames n, Int32 tag_size, BinaryReader br, LinkedList subtags) - : base(n, EcTagTypes.EC_TAGTYPE_CUSTOM, subtags) - { - m_val= br.ReadBytes(tag_size); - m_size = tag_size; - } - public byte [] Value() - { - return m_val; - } - - } - - public class ecTagString : ecTag { - byte[] m_val; - public ecTagString(ECTagNames n, string s) - : base(n, EcTagTypes.EC_TAGTYPE_STRING) - { - m_val = System.Text.Encoding.UTF8.GetBytes(s); - m_size = m_val.GetLength(0) + 1; - } - - public ecTagString(ECTagNames n, Int32 tag_size, BinaryReader br, LinkedList subtags) - : base(n, EcTagTypes.EC_TAGTYPE_STRING, subtags) - { - byte[] buf = br.ReadBytes(tag_size-1); - // discard trailing '0' - br.ReadBytes(1); - - m_size = tag_size; - m_val = buf; - } - - public override void Write(BinaryWriter wr) - { - base.Write(wr); - wr.Write(m_val); - byte zero_byte = 0; - wr.Write(zero_byte); - } - public string StringValue() - { - Encoding u8 = Encoding.UTF8; - string s = u8.GetString(m_val); - return s; - } - } - - public class ecPacket : ecTag { - // since I have no zlib here, effectively disable compression - const int MaxUncompressedPacket = 0x6666; - - private ECOpCodes m_opcode; - protected Int32 m_flags; - - // - // Parsing ctor - // - ecTag ReadTag(BinaryReader br) - { - ecTag t = null; - Int16 tag_name16 = System.Net.IPAddress.NetworkToHostOrder(br.ReadInt16()); - bool have_subtags = ((tag_name16 & 1) != 0); - ECTagNames tag_name = (ECTagNames)(tag_name16 >> 1); - - byte tag_type8 = br.ReadByte(); - Int32 tag_size32 = System.Net.IPAddress.NetworkToHostOrder(br.ReadInt32()); - LinkedList subtags = null; - if ( have_subtags ) { - subtags = ReadSubtags(br); - } - EcTagTypes tag_type = (EcTagTypes)tag_type8; - switch (tag_type) { - case EcTagTypes.EC_TAGTYPE_UNKNOWN: - break; - case EcTagTypes.EC_TAGTYPE_CUSTOM: - t = new ecTagCustom(tag_name, tag_size32, br, subtags); - break; - - case EcTagTypes.EC_TAGTYPE_UINT8: - t = new ecTagInt(tag_name, 1, br, subtags); - break; - case EcTagTypes.EC_TAGTYPE_UINT16: - t = new ecTagInt(tag_name, 2, br, subtags); - break; - case EcTagTypes.EC_TAGTYPE_UINT32: - t = new ecTagInt(tag_name, 4, br, subtags); - break; - case EcTagTypes.EC_TAGTYPE_UINT64: - t = new ecTagInt(tag_name, 8, br, subtags); - break; - - case EcTagTypes.EC_TAGTYPE_STRING: - t = new ecTagString(tag_name, tag_size32, br, subtags); - break; - case EcTagTypes.EC_TAGTYPE_DOUBLE: - break; - case EcTagTypes.EC_TAGTYPE_IPV4: - t = new ecTagIPv4(tag_name, br, subtags); - break; - case EcTagTypes.EC_TAGTYPE_HASH16: - t = new ecTagMD5(tag_name, br, subtags); - break; - default: - break; - } - if ( t == null ) { - throw new Exception("Unexpected tag type"); - } - return t; - } - - LinkedList ReadSubtags(BinaryReader br) - { - Int16 count16 = System.Net.IPAddress.NetworkToHostOrder(br.ReadInt16()); - LinkedList taglist = new LinkedList(); - for (int i = 0; i < count16;i++) { - ecTag st = ReadTag(br); - taglist.AddLast(st); - } - return taglist; - } - - public ecPacket() - { - m_flags = 0x20; - } - - public ecPacket(BinaryReader br) - { - m_flags = System.Net.IPAddress.NetworkToHostOrder(br.ReadInt32()); - Int32 packet_size = System.Net.IPAddress.NetworkToHostOrder(br.ReadInt32()); - m_opcode = (ECOpCodes)br.ReadByte(); - - Int16 tags_count = System.Net.IPAddress.NetworkToHostOrder(br.ReadInt16()); - - if ( tags_count != 0 ) { - for (int i = 0; i < tags_count; i++) { - ecTag t = ReadTag(br); - AddSubtag(t); - } - } - } - - // - // Default ctor - for tx packets - public ecPacket(ECOpCodes cmd) - { - m_flags = 0x20; - m_opcode = cmd; - } - - public ecPacket(ECOpCodes cmd, EC_DETAIL_LEVEL detail_level) - { - m_flags = 0x20; - m_opcode = cmd; - if ( detail_level != EC_DETAIL_LEVEL.EC_DETAIL_FULL ) { - AddSubtag(new ecTagInt(ECTagNames.EC_TAG_DETAIL_LEVEL, (Int64)detail_level)); - } - } - - // - // Size of data for TX, not of payload - // - public int PacketSize() - { - int packet_size = Size(); - if ((m_flags & (UInt32)ECFlags.EC_FLAG_ACCEPTS) != 0) { - packet_size += 4; - } - // 1 (command) + 2 (tag count) + 4 (flags) + 4 (total size) - return packet_size + 1 + 2 + 4 + 4; - } - - public ECOpCodes Opcode() - { - return m_opcode; - } - - public override void Write(BinaryWriter wr) - { - // 1 (command) + 2 (tag count) - int packet_size = Size() + 1 + 2; - if ( packet_size > MaxUncompressedPacket ) { - m_flags |= (Int32)ECFlags.EC_FLAG_ZLIB; - } - - if ((m_flags & (UInt32)ECFlags.EC_FLAG_ZLIB) != 0) { - throw new NotImplementedException("no zlib compression yet"); - } - - - wr.Write(System.Net.IPAddress.HostToNetworkOrder((Int32)(m_flags))); - if ((m_flags & (UInt32)ECFlags.EC_FLAG_ACCEPTS) != 0) { - wr.Write(System.Net.IPAddress.HostToNetworkOrder((Int32)(m_flags))); - } - - wr.Write(System.Net.IPAddress.HostToNetworkOrder((Int32)(packet_size))); - wr.Write((byte)m_opcode); - if ( m_subtags.Count != 0 ) { - WriteSubtags(wr); - } else { - wr.Write((Int16)(0)); - } - } - - } - - // - // Specific - purpose tags - // - - public class ecLoginPacket : ecPacket { - public ecLoginPacket(string client_name, string version, string pass) - : base(ECOpCodes.EC_OP_AUTH_REQ) - { - m_flags |= 0x20 | (Int32)ECFlags.EC_FLAG_ACCEPTS; - - AddSubtag(new ecTagString(ECTagNames.EC_TAG_CLIENT_NAME, client_name)); - AddSubtag(new ecTagString(ECTagNames.EC_TAG_CLIENT_VERSION, version)); - AddSubtag(new ecTagInt(ECTagNames.EC_TAG_PROTOCOL_VERSION, - (Int64)ProtocolVersion.EC_CURRENT_PROTOCOL_VERSION)); - - AddSubtag(new ecTagMD5(ECTagNames.EC_TAG_PASSWD_HASH, pass, false)); - - // discussion is ongoing - //AddSubtag(new ecTagMD5(ECTagNames.EC_TAG_VERSION_ID, EC_VERSION_ID, true)); - } - } - - public class ecDownloadsInfoReq : ecPacket { - public ecDownloadsInfoReq() : base(ECOpCodes.EC_OP_GET_DLOAD_QUEUE) - { - } - } - - // - // Class exists only for parsing purpose - // - public class ecConnStateTag { - ecTagInt m_tag; - Int32 m_tag_val; - public ecConnStateTag(ecTagInt tag) - { - m_tag = tag; - //m_tag_val = (Int32)tag.Value64(); - m_tag_val = 0xfff; - } - - //public static explicit operator ecConnStateTag(ecTagInt t) - //{ - // return new ecConnStateTag(t.ValueInt64()); - //} - - public bool IsConnected() - { - return IsConnectedED2K() || IsConnectedKademlia(); - } - - public bool IsConnectedED2K() - { - return (m_tag_val & 0x01) != 0; - } - - public bool IsConnectingED2K() - { - return (m_tag_val & 0x02) != 0; - } - - public bool IsConnectedKademlia() - { - return (m_tag_val & 0x04) != 0; - } - - public bool IsKadFirewalled() - { - return (m_tag_val & 0x08) != 0; - } - - public bool IsKadRunning() - { - return (m_tag_val & 0x10) != 0; - } - - public ecProto.ecTag Server() - { - return m_tag.SubTag(ECTagNames.EC_TAG_SERVER); - } - } - - } -} diff --git a/src/libs/ec/file_generator.pl b/src/libs/ec/file_generator.pl index efdf02b6..41ca329e 100755 --- a/src/libs/ec/file_generator.pl +++ b/src/libs/ec/file_generator.pl @@ -105,29 +105,24 @@ sub generate_files { #Open language output files open(JAVAFILE," > " . $folder . "java/$filename" . ".java"); - open(CDASHFILE, ">${folder}/c#/${filename}.cs"); - # Print license on top. write_license_header($folder, *CPPFILE, "// ", "", $filecontent); - write_license_header($folder, *CDASHFILE, "// ", "", $filecontent); write_license_header($folder, *JAVAFILE, "// ", "", $filecontent); #Example for a language that needs start/end: #write_license_header($folder, *CFILE, "/* ", " */", $filecontent); #Add top guards for each language write_cpp_top_guard(*CPPFILE, $filename); - write_cdash_top_guard(*CDASHFILE); # JAVA doesn't need guards, but needs file type declaration print JAVAFILE "public interface " . $filename . " {\n\n"; ##Add other language guards - read_content(*INFO, *CPPFILE, *JAVAFILE, *CDASHFILE); + read_content(*INFO, *CPPFILE, *JAVAFILE); #Add bottom guards for each language write_cpp_bottom_guard(*CPPFILE, $filename); - write_cdash_bottom_guard(*CDASHFILE); # JAVA doesn't need guards, but we have to close the interface print JAVAFILE "}\n"; ##Add other language guards @@ -149,7 +144,6 @@ sub read_content { local (*INFO) = $_[0]; local (*CPPFILE) = $_[1]; local (*JAVAFILE) = $_[2]; - local (*CDASHFILE) = $_[3]; my $stop = ""; @@ -164,7 +158,7 @@ sub read_content { if ($line =~ /^\[Section Content\]$/) { print "Reading content section...\n"; - read_content_section(*INFO, *CPPFILE, *JAVAFILE, *CDASHFILE); + read_content_section(*INFO, *CPPFILE, *JAVAFILE); print CPPFILE "\n"; print JAVAFILE "\n"; } else { @@ -179,7 +173,6 @@ sub read_content_section { local (*INFO) = $_[0]; local (*CPPOUTPUT) = $_[1]; local (*JAVAOUTPUT) = $_[2]; - local (*CDASHFILE) = $_[3]; my $line = ; my $datatype = ""; @@ -191,11 +184,11 @@ sub read_content_section { } if ($datatype eq "Define") { - read_define_content(*INFO, *CPPOUTPUT, *JAVAOUTPUT, *CDASHFILE); + read_define_content(*INFO, *CPPOUTPUT, *JAVAOUTPUT); } elsif ($datatype eq "Enum") { - read_enum_content(*INFO, *CPPOUTPUT, *JAVAOUTPUT, *CDASHFILE); + read_enum_content(*INFO, *CPPOUTPUT, *JAVAOUTPUT); } elsif ($datatype eq "TypeDef") { - read_typedef_content(*INFO, *CPPOUTPUT, *JAVAOUTPUT, *CDASHFILE); + read_typedef_content(*INFO, *CPPOUTPUT, *JAVAOUTPUT); } else { die "Unknown type on content section\n"; } @@ -206,7 +199,6 @@ sub read_define_content { local (*INFO) = $_[0]; local (*CPPOUTPUT) = $_[1]; local (*JAVAOUTPUT) = $_[2]; - local (*CDASHFILE) = $_[3]; my $line = ; while (!(eof) && ($line !~ /^\[\/Section\]$/)) { @@ -214,7 +206,6 @@ sub read_define_content { if ($line =~ /^(.+)\s+(.+)$/) { write_cpp_define_line(*CPPOUTPUT, $1, $2); write_java_define_line(*JAVAOUTPUT, $1, $2); - write_cdash_define_line(*CDASHFILE, $1, $2); } else { die "Malformed content section define line\n"; } @@ -236,7 +227,6 @@ sub read_typedef_content { write_cpp_typedef_line(*CPPOUTPUT, $1, $2); # Java doesn't support typedefs, ignore it. #write_java_typedef_line(*JAVAOUTPUT, $1, $2); - # c# doesn't support typedefs either (AFAIK) } else { die "Malformed content section typedef line\n"; } @@ -250,7 +240,6 @@ sub read_enum_content { local (*INFO) = $_[0]; local (*CPPOUTPUT) = $_[1]; local (*JAVAOUTPUT) = $_[2]; - local (*CDASHFILE) = $_[3]; my $line = ; my $dataname = ""; @@ -280,12 +269,10 @@ sub read_enum_content { if ($first) { write_cpp_enum_start(*CPPOUTPUT, $dataname, $datatype); - write_cdash_enum_start(*CDASHFILE, $dataname); } write_cpp_enum_line(*CPPOUTPUT, $firstoperand, $secondoperand, $first); write_java_define_line(*JAVAOUTPUT, $firstoperand, $secondoperand, $datatype); - write_cdash_enum_line(*CDASHFILE, $firstoperand, $secondoperand, $first); if ($first) { $first = ""; @@ -298,8 +285,6 @@ sub read_enum_content { } write_cpp_enum_end(*CPPOUTPUT); - write_cdash_enum_end(*CDASHFILE); - } # Takes a file handle, and the comment start/end character for that language @@ -323,52 +308,6 @@ sub write_license_header { close(LICENSE); } -################ C# Specific Subroutines ##################### - -sub write_cdash_top_guard { - local (*OUTPUT) = $_[0]; - print OUTPUT "namespace amule.net\n{\n"; -} - -sub write_cdash_bottom_guard { - local (*OUTPUT) = $_[0]; - print OUTPUT "}\n"; -} - -sub write_cdash_enum_start { - - local (*OUTPUT) = $_[0]; - - print OUTPUT "public enum " . $_[1] . " {\n"; -} - -sub write_cdash_enum_end { - - local (*OUTPUT) = $_[0]; - - print OUTPUT "\n};\n" -} - - -sub write_cdash_enum_line { - local (*OUTPUT) = $_[0]; - - if ($_[3] !~ "yes") { - print OUTPUT ",\n" - } - - # looks like c# can't handle such values as enums - if ( not (POSIX::strtod($_[2]) & 0x8000000) ) { - print OUTPUT "\t" . $_[1] . " = " . $_[2]; - } -} - -sub write_cdash_define_line { - local (*OUTPUT) = $_[0]; - - die "ERROR: c# have no 'define' directive $_[1] $_[2]" -} - ################ CPP Specific Subroutines ##################### sub write_cpp_top_guard { diff --git a/src/remote-gui.net/AboutBox.Designer.cs b/src/remote-gui.net/AboutBox.Designer.cs deleted file mode 100755 index e58bbe2e..00000000 --- a/src/remote-gui.net/AboutBox.Designer.cs +++ /dev/null @@ -1,186 +0,0 @@ -namespace amule.net { - partial class AboutBox { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - protected override void Dispose(bool disposing) - { - if ( disposing && (components != null) ) { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutBox)); - this.tableLayoutPanel = new System.Windows.Forms.TableLayoutPanel(); - this.logoPictureBox = new System.Windows.Forms.PictureBox(); - this.labelProductName = new System.Windows.Forms.Label(); - this.labelVersion = new System.Windows.Forms.Label(); - this.labelCopyright = new System.Windows.Forms.Label(); - this.labelCompanyName = new System.Windows.Forms.Label(); - this.okButton = new System.Windows.Forms.Button(); - this.textBoxDescription = new System.Windows.Forms.TextBox(); - this.tableLayoutPanel.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).BeginInit(); - this.SuspendLayout(); - // - // tableLayoutPanel - // - this.tableLayoutPanel.AutoSize = true; - this.tableLayoutPanel.ColumnCount = 2; - this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33F)); - this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 67F)); - this.tableLayoutPanel.Controls.Add(this.logoPictureBox, 0, 0); - this.tableLayoutPanel.Controls.Add(this.labelProductName, 1, 0); - this.tableLayoutPanel.Controls.Add(this.labelVersion, 1, 1); - this.tableLayoutPanel.Controls.Add(this.labelCopyright, 1, 2); - this.tableLayoutPanel.Controls.Add(this.labelCompanyName, 1, 3); - this.tableLayoutPanel.Controls.Add(this.textBoxDescription, 1, 4); - this.tableLayoutPanel.Controls.Add(this.okButton, 1, 5); - this.tableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill; - this.tableLayoutPanel.Location = new System.Drawing.Point(9, 9); - this.tableLayoutPanel.Name = "tableLayoutPanel"; - this.tableLayoutPanel.RowCount = 6; - this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F)); - this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F)); - this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F)); - this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F)); - this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F)); - this.tableLayoutPanel.Size = new System.Drawing.Size(461, 265); - this.tableLayoutPanel.TabIndex = 0; - // - // logoPictureBox - // - this.logoPictureBox.Dock = System.Windows.Forms.DockStyle.Fill; - this.logoPictureBox.Image = ((System.Drawing.Image)(resources.GetObject("logoPictureBox.Image"))); - this.logoPictureBox.Location = new System.Drawing.Point(3, 3); - this.logoPictureBox.Name = "logoPictureBox"; - this.tableLayoutPanel.SetRowSpan(this.logoPictureBox, 6); - this.logoPictureBox.Size = new System.Drawing.Size(146, 259); - this.logoPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; - this.logoPictureBox.TabIndex = 12; - this.logoPictureBox.TabStop = false; - // - // labelProductName - // - this.labelProductName.AutoSize = true; - this.labelProductName.Dock = System.Windows.Forms.DockStyle.Fill; - this.labelProductName.Location = new System.Drawing.Point(158, 0); - this.labelProductName.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0); - this.labelProductName.MaximumSize = new System.Drawing.Size(0, 17); - this.labelProductName.Name = "labelProductName"; - this.labelProductName.Size = new System.Drawing.Size(300, 17); - this.labelProductName.TabIndex = 19; - this.labelProductName.Text = "aMule remote control"; - this.labelProductName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // - // labelVersion - // - this.labelVersion.Dock = System.Windows.Forms.DockStyle.Fill; - this.labelVersion.Location = new System.Drawing.Point(158, 26); - this.labelVersion.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0); - this.labelVersion.MaximumSize = new System.Drawing.Size(0, 17); - this.labelVersion.Name = "labelVersion"; - this.labelVersion.Size = new System.Drawing.Size(300, 17); - this.labelVersion.TabIndex = 0; - this.labelVersion.Text = "Version 0.0.1"; - this.labelVersion.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // - // labelCopyright - // - this.labelCopyright.Dock = System.Windows.Forms.DockStyle.Fill; - this.labelCopyright.Location = new System.Drawing.Point(158, 52); - this.labelCopyright.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0); - this.labelCopyright.MaximumSize = new System.Drawing.Size(0, 17); - this.labelCopyright.Name = "labelCopyright"; - this.labelCopyright.Size = new System.Drawing.Size(300, 17); - this.labelCopyright.TabIndex = 21; - this.labelCopyright.Text = "Copyright (c) 2007-2008 aMule Team ( admin@amule.org / http://www.amule.org )"; - this.labelCopyright.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // - // labelCompanyName - // - this.labelCompanyName.AutoSize = true; - this.labelCompanyName.Dock = System.Windows.Forms.DockStyle.Fill; - this.labelCompanyName.Location = new System.Drawing.Point(158, 78); - this.labelCompanyName.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0); - this.labelCompanyName.MaximumSize = new System.Drawing.Size(0, 17); - this.labelCompanyName.Name = "labelCompanyName"; - this.labelCompanyName.Size = new System.Drawing.Size(300, 17); - this.labelCompanyName.TabIndex = 22; - this.labelCompanyName.Text = "Copyright (c) 2007-2008 Froenchenko Lenid l(froen@gmail.com)"; - this.labelCompanyName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // - // okButton - // - this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.okButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.okButton.Location = new System.Drawing.Point(383, 239); - this.okButton.Name = "okButton"; - this.okButton.Size = new System.Drawing.Size(75, 23); - this.okButton.TabIndex = 24; - this.okButton.Text = "&OK"; - // - // textBoxDescription - // - this.textBoxDescription.Dock = System.Windows.Forms.DockStyle.Fill; - this.textBoxDescription.Location = new System.Drawing.Point(158, 107); - this.textBoxDescription.Margin = new System.Windows.Forms.Padding(6, 3, 3, 3); - this.textBoxDescription.Multiline = true; - this.textBoxDescription.Name = "textBoxDescription"; - this.textBoxDescription.ReadOnly = true; - this.textBoxDescription.ScrollBars = System.Windows.Forms.ScrollBars.Both; - this.textBoxDescription.Size = new System.Drawing.Size(300, 126); - this.textBoxDescription.TabIndex = 23; - this.textBoxDescription.TabStop = false; - this.textBoxDescription.Text = "Description"; - // - // AboutBox - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(479, 283); - this.Controls.Add(this.tableLayoutPanel); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "AboutBox"; - this.Padding = new System.Windows.Forms.Padding(9); - this.ShowIcon = false; - this.ShowInTaskbar = false; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "About amule.net"; - this.tableLayoutPanel.ResumeLayout(false); - this.tableLayoutPanel.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).EndInit(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.TableLayoutPanel tableLayoutPanel; - private System.Windows.Forms.PictureBox logoPictureBox; - private System.Windows.Forms.Label labelProductName; - private System.Windows.Forms.Label labelVersion; - private System.Windows.Forms.Label labelCopyright; - private System.Windows.Forms.Label labelCompanyName; - private System.Windows.Forms.Button okButton; - private System.Windows.Forms.TextBox textBoxDescription; - } -} diff --git a/src/remote-gui.net/AboutBox.cs b/src/remote-gui.net/AboutBox.cs deleted file mode 100755 index a11f2cfd..00000000 --- a/src/remote-gui.net/AboutBox.cs +++ /dev/null @@ -1,112 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Drawing; -using System.Windows.Forms; -using System.Reflection; - -namespace amule.net { - partial class AboutBox : Form { - public AboutBox() - { - InitializeComponent(); - - // Initialize the AboutBox to display the product information from the assembly information. - // Change assembly information settings for your application through either: - // - Project->Properties->Application->Assembly Information - // - AssemblyInfo.cs - this.Text = String.Format("About {0}", AssemblyTitle); - this.labelProductName.Text = AssemblyProduct; - this.labelVersion.Text = String.Format("Version {0}", AssemblyVersion); - this.labelCopyright.Text = AssemblyCopyright; - this.labelCompanyName.Text = AssemblyCompany; - this.textBoxDescription.Text = AssemblyDescription; - } - - #region Assembly Attribute Accessors - - public string AssemblyTitle - { - get - { - // Get all Title attributes on this assembly - object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), false); - // If there is at least one Title attribute - if ( attributes.Length > 0 ) { - // Select the first one - AssemblyTitleAttribute titleAttribute = (AssemblyTitleAttribute)attributes[0]; - // If it is not an empty string, return it - if ( titleAttribute.Title != "" ) - return titleAttribute.Title; - } - // If there was no Title attribute, or if the Title attribute was the empty string, return the .exe name - return System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase); - } - } - - public string AssemblyVersion - { - get - { - return Assembly.GetExecutingAssembly().GetName().Version.ToString(); - } - } - - public string AssemblyDescription - { - get - { - // Get all Description attributes on this assembly - object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false); - // If there aren't any Description attributes, return an empty string - if ( attributes.Length == 0 ) - return ""; - // If there is a Description attribute, return its value - return ((AssemblyDescriptionAttribute)attributes[0]).Description; - } - } - - public string AssemblyProduct - { - get - { - // Get all Product attributes on this assembly - object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyProductAttribute), false); - // If there aren't any Product attributes, return an empty string - if ( attributes.Length == 0 ) - return ""; - // If there is a Product attribute, return its value - return ((AssemblyProductAttribute)attributes[0]).Product; - } - } - - public string AssemblyCopyright - { - get - { - // Get all Copyright attributes on this assembly - object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false); - // If there aren't any Copyright attributes, return an empty string - if ( attributes.Length == 0 ) - return ""; - // If there is a Copyright attribute, return its value - return ((AssemblyCopyrightAttribute)attributes[0]).Copyright; - } - } - - public string AssemblyCompany - { - get - { - // Get all Company attributes on this assembly - object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCompanyAttribute), false); - // If there aren't any Company attributes, return an empty string - if ( attributes.Length == 0 ) - return ""; - // If there is a Company attribute, return its value - return ((AssemblyCompanyAttribute)attributes[0]).Company; - } - } - #endregion - } -} diff --git a/src/remote-gui.net/AboutBox.resx b/src/remote-gui.net/AboutBox.resx deleted file mode 100755 index 3df4dcb6..00000000 --- a/src/remote-gui.net/AboutBox.resx +++ /dev/null @@ -1,610 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - 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 - AZ+4Ui+mkTlKAAAAAElFTkSuQmCC - - - \ No newline at end of file diff --git a/src/remote-gui.net/AddLinkDialog.Designer.cs b/src/remote-gui.net/AddLinkDialog.Designer.cs deleted file mode 100644 index 238d0a1b..00000000 --- a/src/remote-gui.net/AddLinkDialog.Designer.cs +++ /dev/null @@ -1,81 +0,0 @@ -namespace amule.net { - partial class AddLinkDialog { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if ( disposing && (components != null) ) { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.buttonOK = new System.Windows.Forms.Button(); - this.textBoxLink = new System.Windows.Forms.TextBox(); - this.buttonCancel = new System.Windows.Forms.Button(); - this.SuspendLayout(); - // - // buttonOK - // - this.buttonOK.DialogResult = System.Windows.Forms.DialogResult.OK; - this.buttonOK.Location = new System.Drawing.Point(223, 69); - this.buttonOK.Name = "buttonOK"; - this.buttonOK.Size = new System.Drawing.Size(75, 23); - this.buttonOK.TabIndex = 0; - this.buttonOK.Text = "O&K"; - this.buttonOK.UseVisualStyleBackColor = true; - // - // textBoxLink - // - this.textBoxLink.Location = new System.Drawing.Point(12, 28); - this.textBoxLink.Name = "textBoxLink"; - this.textBoxLink.Size = new System.Drawing.Size(612, 20); - this.textBoxLink.TabIndex = 1; - // - // buttonCancel - // - this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.buttonCancel.Location = new System.Drawing.Point(321, 69); - this.buttonCancel.Name = "buttonCancel"; - this.buttonCancel.Size = new System.Drawing.Size(75, 23); - this.buttonCancel.TabIndex = 2; - this.buttonCancel.Text = "&Cancel"; - this.buttonCancel.UseVisualStyleBackColor = true; - // - // AddLinkDialog - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(636, 118); - this.Controls.Add(this.buttonCancel); - this.Controls.Add(this.textBoxLink); - this.Controls.Add(this.buttonOK); - this.Name = "AddLinkDialog"; - this.Text = "Add ed2k link"; - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.Button buttonOK; - private System.Windows.Forms.Button buttonCancel; - public System.Windows.Forms.TextBox textBoxLink; - } -} \ No newline at end of file diff --git a/src/remote-gui.net/AddLinkDialog.cs b/src/remote-gui.net/AddLinkDialog.cs deleted file mode 100644 index 94daaaf2..00000000 --- a/src/remote-gui.net/AddLinkDialog.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; -using System.Windows.Forms; - -namespace amule.net { - public partial class AddLinkDialog : Form { - public AddLinkDialog() - { - InitializeComponent(); - } - } -} \ No newline at end of file diff --git a/src/remote-gui.net/AddLinkDialog.resx b/src/remote-gui.net/AddLinkDialog.resx deleted file mode 100644 index ff31a6db..00000000 --- a/src/remote-gui.net/AddLinkDialog.resx +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/src/remote-gui.net/ConnectDlg.Designer.cs b/src/remote-gui.net/ConnectDlg.Designer.cs deleted file mode 100644 index 8406a135..00000000 --- a/src/remote-gui.net/ConnectDlg.Designer.cs +++ /dev/null @@ -1,154 +0,0 @@ -namespace amule.net -{ - partial class ConnectDlg - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.buttonConnect = new System.Windows.Forms.Button(); - this.buttonCancel = new System.Windows.Forms.Button(); - this.label1 = new System.Windows.Forms.Label(); - this.amuleHost = new System.Windows.Forms.TextBox(); - this.amulePwd = new System.Windows.Forms.TextBox(); - this.label2 = new System.Windows.Forms.Label(); - this.amulePort = new System.Windows.Forms.TextBox(); - this.label3 = new System.Windows.Forms.Label(); - this.SuspendLayout(); - // - // buttonConnect - // - this.buttonConnect.DialogResult = System.Windows.Forms.DialogResult.OK; - this.buttonConnect.Location = new System.Drawing.Point(66, 190); - this.buttonConnect.Name = "buttonConnect"; - this.buttonConnect.Size = new System.Drawing.Size(128, 50); - this.buttonConnect.TabIndex = 0; - this.buttonConnect.Text = "&Connect"; - this.buttonConnect.UseVisualStyleBackColor = true; - // - // buttonCancel - // - this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.buttonCancel.Location = new System.Drawing.Point(238, 190); - this.buttonCancel.Name = "buttonCancel"; - this.buttonCancel.Size = new System.Drawing.Size(128, 50); - this.buttonCancel.TabIndex = 1; - this.buttonCancel.Text = "Cancel"; - this.buttonCancel.UseVisualStyleBackColor = true; - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(60, 46); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(59, 13); - this.label1.TabIndex = 2; - this.label1.Text = "aMule host"; - // - // amuleHost - // - this.amuleHost.Location = new System.Drawing.Point(139, 43); - this.amuleHost.Name = "amuleHost"; - this.amuleHost.Size = new System.Drawing.Size(112, 20); - this.amuleHost.TabIndex = 3; - this.amuleHost.Text = "leox"; - // - // amulePwd - // - this.amulePwd.Location = new System.Drawing.Point(139, 106); - this.amulePwd.Name = "amulePwd"; - this.amulePwd.PasswordChar = '*'; - this.amulePwd.Size = new System.Drawing.Size(112, 20); - this.amulePwd.TabIndex = 5; - this.amulePwd.Text = "123456"; - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(60, 109); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(53, 13); - this.label2.TabIndex = 4; - this.label2.Text = "Password"; - // - // amulePort - // - this.amulePort.Location = new System.Drawing.Point(296, 43); - this.amulePort.MaxLength = 5; - this.amulePort.Name = "amulePort"; - this.amulePort.Size = new System.Drawing.Size(66, 20); - this.amulePort.TabIndex = 7; - this.amulePort.Text = "4712"; - // - // label3 - // - this.label3.AutoSize = true; - this.label3.Location = new System.Drawing.Point(265, 46); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(25, 13); - this.label3.TabIndex = 6; - this.label3.Text = "port"; - // - // ConnectDlg - // - this.AcceptButton = this.buttonConnect; - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.buttonCancel; - this.ClientSize = new System.Drawing.Size(432, 272); - this.ControlBox = false; - this.Controls.Add(this.amulePort); - this.Controls.Add(this.label3); - this.Controls.Add(this.amulePwd); - this.Controls.Add(this.label2); - this.Controls.Add(this.amuleHost); - this.Controls.Add(this.label1); - this.Controls.Add(this.buttonCancel); - this.Controls.Add(this.buttonConnect); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; - this.MaximizeBox = false; - this.Name = "ConnectDlg"; - this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide; - this.Text = "Connect to aMule core"; - this.Load += new System.EventHandler(this.ConnectDlg_Load); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.Button buttonConnect; - private System.Windows.Forms.Button buttonCancel; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.TextBox amuleHost; - private System.Windows.Forms.TextBox amulePwd; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.TextBox amulePort; - private System.Windows.Forms.Label label3; - - } -} - diff --git a/src/remote-gui.net/ConnectDlg.cs b/src/remote-gui.net/ConnectDlg.cs deleted file mode 100644 index 5ee93d9a..00000000 --- a/src/remote-gui.net/ConnectDlg.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; -using System.Windows.Forms; - -namespace amule.net -{ - public partial class ConnectDlg : Form - { - public ConnectDlg() - { - InitializeComponent(); - } - - private void ConnectDlg_Load(object sender, EventArgs e) - { - - } - public string Host() - { - return amuleHost.Text; - } - public string Pass() - { - return amulePwd.Text; - } - public string Port() - { - return amulePort.Text; - } - } -} \ No newline at end of file diff --git a/src/remote-gui.net/ConnectDlg.resx b/src/remote-gui.net/ConnectDlg.resx deleted file mode 100644 index a764f1c7..00000000 --- a/src/remote-gui.net/ConnectDlg.resx +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - True - - \ No newline at end of file diff --git a/src/remote-gui.net/DownloadControl.cs b/src/remote-gui.net/DownloadControl.cs deleted file mode 100755 index e6a03280..00000000 --- a/src/remote-gui.net/DownloadControl.cs +++ /dev/null @@ -1,597 +0,0 @@ -// -// This file is part of the aMule Project. -// -// Copyright (c) 2003-2008 aMule Team ( admin@amule.org / http://www.amule.org ) -// Copyright (c) 2003-2008 Froenchenko Leonid ( lfroen@gmail.com / http://www.amule.org ) -// -// 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 -// - -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; -using System.Windows.Forms; -using System.Configuration; - -namespace amule.net { - - [SettingsGroupNameAttribute("XferControl")] - public class amuleXferControlSettings : ApplicationSettingsBase { - [UserScopedSetting()] - [DefaultSettingValueAttribute("true")] - public bool FilenameVisible - { - get { return (bool)this["FilenameVisible"]; } - set { this["FilenameVisible"] = value; } - } - [UserScopedSetting()] - [DefaultSettingValueAttribute("200")] - public int FilenameWidth - { - get { return (int)this["FilenameWidth"]; } - set { this["FilenameWidth"] = value; } - } - - [UserScopedSetting()] - [DefaultSettingValueAttribute("true")] - public bool StatusVisible - { - get { return (bool)this["StatusVisible"]; } - set { this["StatusVisible"] = value; } - } - [UserScopedSetting()] - [DefaultSettingValueAttribute("100")] - public int StatusWidth - { - get { return (int)this["StatusWidth"]; } - set { this["StatusWidth"] = value; } - } - - [UserScopedSetting()] - [DefaultSettingValueAttribute("true")] - public bool SizeVisible - { - get { return (bool)this["SizeVisible"]; } - set { this["StatusVisible"] = value; } - } - [UserScopedSetting()] - [DefaultSettingValueAttribute("100")] - public int SizeWidth - { - get { return (int)this["SizeWidth"]; } - set { this["StatusWidth"] = value; } - } - - [UserScopedSetting()] - [DefaultSettingValueAttribute("true")] - public bool SpeedVisible - { - get { return (bool)this["SpeedVisible"]; } - set { this["SpeedVisible"] = value; } - } - [UserScopedSetting()] - [DefaultSettingValueAttribute("100")] - public int SpeedWidth - { - get { return (int)this["SpeedWidth"]; } - set { this["SpeedWidth"] = value; } - } - - [UserScopedSetting()] - [DefaultSettingValueAttribute("true")] - public bool CompletedVisible - { - get { return (bool)this["CompletedVisible"]; } - set { this["CompletedVisible"] = value; } - } - [UserScopedSetting()] - [DefaultSettingValueAttribute("100")] - public int CompletedWidth - { - get { return (int)this["CompletedWidth"]; } - set { this["CompletedWidth"] = value; } - } - - [UserScopedSetting()] - [DefaultSettingValueAttribute("true")] - public bool SourcesVisible - { - get { return (bool)this["SourcesVisible"]; } - set { this["SourcesVisible"] = value; } - } - [UserScopedSetting()] - [DefaultSettingValueAttribute("100")] - public int SourcesWidth - { - get { return (int)this["SourcesWidth"]; } - set { this["SourcesWidth"] = value; } - } - } - - public delegate void DownloadStatusListEventHandler(); - - public class amuleDownloadStatusList : amuleListView, IContainerUI { - DownloadQueueContainer m_item_container; - amuleXferControlSettings m_settings = new amuleXferControlSettings(); - - enum DOWNLOAD_CTRL_COL_ID { - COL_FILENAME_ID = 0, - COL_STATUS_ID, - COL_SIZE_ID, - COL_COMPLETED_ID, - COL_SPEED_ID, - COL_SOURCES_ID, - - COL_LAST_ID, - }; - - private ContextMenuStrip m_ctx_menu = new ContextMenuStrip(); - - public event DownloadStatusListEventHandler OnCancelItem, OnPauseItem, OnResumeItem; - - void UpdateColumnIndexes() - { - int i = 0; - m_column_index[(int)DOWNLOAD_CTRL_COL_ID.COL_FILENAME_ID] = i; - if ( m_settings.FilenameVisible ) i++; - m_column_index[(int)DOWNLOAD_CTRL_COL_ID.COL_STATUS_ID] = i; - if ( m_settings.StatusVisible ) i++; - m_column_index[(int)DOWNLOAD_CTRL_COL_ID.COL_SIZE_ID] = i; - if ( m_settings.SizeVisible ) i++; - m_column_index[(int)DOWNLOAD_CTRL_COL_ID.COL_COMPLETED_ID] = i; - if ( m_settings.CompletedVisible ) i++; - m_column_index[(int)DOWNLOAD_CTRL_COL_ID.COL_SPEED_ID] = i; - if ( m_settings.SpeedVisible ) i++; - m_column_index[(int)DOWNLOAD_CTRL_COL_ID.COL_SOURCES_ID] = i; - if ( m_settings.SourcesVisible ) i++; - } - - void SaveSettigs() - { - if ( m_settings.FilenameVisible ) { - m_settings.FilenameWidth = - Columns[m_column_index[(int)DOWNLOAD_CTRL_COL_ID.COL_FILENAME_ID]].Width; - } - if ( m_settings.StatusVisible ) { - m_settings.StatusWidth = - Columns[(int)DOWNLOAD_CTRL_COL_ID.COL_STATUS_ID].Width; - } - m_settings.Save(); - } - - public amuleDownloadStatusList() - { - OwnerDraw = true; - - DrawColumnHeader += - new DrawListViewColumnHeaderEventHandler(amuleDownloadStatusList_DrawColumnHeader); - - DrawSubItem += new DrawListViewSubItemEventHandler(amuleDownloadStatusList_DrawSubItem); - DownloadQueueItem.InitDraw3DModifiers(FontHeight + 1); - - MouseClick += new MouseEventHandler(amuleDownloadStatusList_MouseClickHandler); - ColumnClick += new ColumnClickEventHandler(amuleDownloadStatusList_ColumtClickHandler); - - m_ctx_menu.Opening += new System.ComponentModel.CancelEventHandler(cms_Opening); - m_ctx_menu.Items.Add(new ToolStripLabel("Downloads")); - m_ctx_menu.Items.Add(new ToolStripSeparator()); - - ToolStripButton it_pause = new ToolStripButton("Pause"); - it_pause.Click += new EventHandler(it_pause_Click); - m_ctx_menu.Items.Add(it_pause); - ContextMenuStrip = m_ctx_menu; - - ToolStripButton it_resume = new ToolStripButton("Resume"); - it_resume.Click += new EventHandler(it_resume_Click); - m_ctx_menu.Items.Add(it_resume); - - ToolStripButton it_cancel = new ToolStripButton("Cancel"); - it_cancel.Click += new EventHandler(it_cancel_Click); - m_ctx_menu.Items.Add(it_cancel); - - m_ctx_menu.Items.Add(new ToolStripSeparator()); - // - // Init columns - // - m_column_index = new int[(int)DOWNLOAD_CTRL_COL_ID.COL_LAST_ID]; - UpdateColumnIndexes(); - // File name - if ( m_settings.FilenameVisible ) { - CreateColumtAt("File name", m_settings.FilenameWidth, - (int)DOWNLOAD_CTRL_COL_ID.COL_FILENAME_ID); - } - AppendItemToCtxMenu(m_ctx_menu, "File name", DOWNLOAD_CTRL_COL_ID.COL_FILENAME_ID, - m_settings.FilenameVisible, new EventHandler(column_Click)); - // Status - if ( m_settings.StatusVisible ) { - CreateColumtAt("Status", m_settings.StatusWidth, - (int)DOWNLOAD_CTRL_COL_ID.COL_STATUS_ID); - } - AppendItemToCtxMenu(m_ctx_menu, "Status", DOWNLOAD_CTRL_COL_ID.COL_STATUS_ID, - m_settings.StatusVisible, new EventHandler(column_Click)); - // Size - if ( m_settings.SizeVisible ) { - CreateColumtAt("Size", m_settings.SizeWidth, - (int)DOWNLOAD_CTRL_COL_ID.COL_SIZE_ID); - } - AppendItemToCtxMenu(m_ctx_menu, "Size", DOWNLOAD_CTRL_COL_ID.COL_SIZE_ID, - m_settings.SizeVisible, new EventHandler(column_Click)); - // Completed size - if ( m_settings.CompletedVisible ) { - CreateColumtAt("Completed", m_settings.CompletedWidth, - (int)DOWNLOAD_CTRL_COL_ID.COL_COMPLETED_ID); - } - AppendItemToCtxMenu(m_ctx_menu, "Completed", DOWNLOAD_CTRL_COL_ID.COL_COMPLETED_ID, - m_settings.CompletedVisible, new EventHandler(column_Click)); - // Speed - if ( m_settings.SpeedVisible ) { - CreateColumtAt("Speed", m_settings.SpeedWidth, - (int)DOWNLOAD_CTRL_COL_ID.COL_SPEED_ID); - } - AppendItemToCtxMenu(m_ctx_menu, "Speed", DOWNLOAD_CTRL_COL_ID.COL_SPEED_ID, - m_settings.SpeedVisible, new EventHandler(column_Click)); - // Sources - if ( m_settings.SourcesVisible ) { - CreateColumtAt("Sources", m_settings.SourcesWidth, - m_column_index[(int)DOWNLOAD_CTRL_COL_ID.COL_SOURCES_ID]); - } - AppendItemToCtxMenu(m_ctx_menu, "Sources", DOWNLOAD_CTRL_COL_ID.COL_SOURCES_ID, - m_settings.SizeVisible, new EventHandler(column_Click)); - - ContextMenuStrip = m_ctx_menu; - } - - // - // Click on column visibility checkbox in context menu - // - void column_Click(object sender, EventArgs e) - { - ToolStripMenuItem col = sender as ToolStripMenuItem; - DOWNLOAD_CTRL_COL_ID col_id = (DOWNLOAD_CTRL_COL_ID)col.Tag; - bool status = !col.Checked; - col.Checked = status; - if ( !status ) { - RemoveColumnAt((int)col_id); - } - switch ( col_id ) { - case DOWNLOAD_CTRL_COL_ID.COL_FILENAME_ID: - m_settings.FilenameVisible = status; - UpdateColumnIndexes(); - if ( status ) { - CreateColumtAt("File name", m_settings.FilenameWidth, (int)col_id); - } - break; - case DOWNLOAD_CTRL_COL_ID.COL_STATUS_ID: - m_settings.StatusVisible = status; - UpdateColumnIndexes(); - if ( status ) { - CreateColumtAt("Status", m_settings.StatusWidth, (int)col_id); - } - break; - case DOWNLOAD_CTRL_COL_ID.COL_SIZE_ID: - m_settings.SizeVisible = status; - UpdateColumnIndexes(); - if ( status ) { - CreateColumtAt("Size", m_settings.SizeWidth, (int)col_id); - } - break; - case DOWNLOAD_CTRL_COL_ID.COL_COMPLETED_ID: - m_settings.CompletedVisible = status; - UpdateColumnIndexes(); - if ( status ) { - CreateColumtAt("Completed", m_settings.CompletedWidth, (int)col_id); - } - break; - case DOWNLOAD_CTRL_COL_ID.COL_SPEED_ID: - m_settings.SpeedVisible = status; - UpdateColumnIndexes(); - if ( status ) { - CreateColumtAt("Speed", m_settings.SpeedWidth, (int)col_id); - } - break; - case DOWNLOAD_CTRL_COL_ID.COL_SOURCES_ID: - m_settings.SourcesVisible = status; - UpdateColumnIndexes(); - if ( status ) { - CreateColumtAt("Sources", m_settings.SourcesWidth, (int)col_id); - } - break; - default: - break; - } - Items.Clear(); - foreach ( DownloadQueueItem i in m_item_container.Items ) { - DoInsertItem(i); - } - } - - // - // "Cancel" command in context menu - // - void it_cancel_Click(object sender, EventArgs e) - { - OnCancelItem(); - } - - // - // "Resume" command in context menu - // - void it_resume_Click(object sender, EventArgs e) - { - OnResumeItem(); - } - - // - // "Pause" command in context menu - // - void it_pause_Click(object sender, EventArgs e) - { - OnPauseItem(); - } - - public void SelectedItemsToCommand(ecProto.ecPacket cmd) - { - foreach ( ListViewItem i in SelectedItems ) { - DownloadQueueItem it = i.Tag as DownloadQueueItem; - ecProto.ecTagMD5 tag = new ecProto.ecTagMD5(ECTagNames.EC_TAG_PARTFILE, it.ID); - cmd.AddSubtag(tag); - } - } - - // - // Context menu - on opening. Can support dynamic menu creation - // - void cms_Opening(object sender, System.ComponentModel.CancelEventArgs e) - { - - e.Cancel = false; - } - - protected override void OnHandleDestroyed(EventArgs e) - { - SaveSettigs(); - base.OnHandleDestroyed(e); - } - public DownloadQueueContainer ItemContainer - { - get { return m_item_container; } - set - { - m_item_container = value; - m_item_container.NewItemStatusLineLength = Columns[1].Width; - } - } - - override protected void OnColumnWidthChanged(ColumnWidthChangedEventArgs e) - { - int status_index = m_column_index[(int)DOWNLOAD_CTRL_COL_ID.COL_STATUS_ID]; - if ( (e.ColumnIndex == status_index) && m_settings.StatusVisible) { - int new_size = Columns[status_index].Width + 1; - m_item_container.NewItemStatusLineLength = new_size; - - foreach ( ListViewItem i in Items ) { - DownloadQueueItem it = i.Tag as DownloadQueueItem; - it.AllocColorLine(new_size); - it.DrawLine(); - } - } - } - - void amuleDownloadStatusList_MouseClickHandler(object o, MouseEventArgs e) - { - if ( e.Button == MouseButtons.Right ) { - - } - } - - void amuleDownloadStatusList_ColumtClickHandler(object o, ColumnClickEventArgs e) - { - } - - unsafe void DrawStatusBar(DownloadQueueItem it, Graphics g, Rectangle posR) - { - // - // Bitmap is created as 32bpp (rgb+alpha) - // - Bitmap status_bmp = new Bitmap(posR.Width, posR.Height, - System.Drawing.Imaging.PixelFormat.Format32bppArgb); - - System.Drawing.Imaging.BitmapData bmd = status_bmp.LockBits( - new Rectangle(0, 0, status_bmp.Width, status_bmp.Height), - System.Drawing.Imaging.ImageLockMode.ReadWrite, - System.Drawing.Imaging.PixelFormat.Format32bppArgb); - - RGB[] item_color_line = it.ColorLine; - byte[] modifiers = DownloadQueueItem.Get_3D_Modifiers(); - - for ( int y = 0; y < bmd.Height; y++ ) { - byte* row = (byte*)bmd.Scan0 + (y * bmd.Stride); - - for ( int x = 0; x < bmd.Width; x++ ) { - UInt32* pixel_ptr = (UInt32*)(row + x * 4); - //row[x * 3 + 2] = 255; - //*pixel_ptr = 0xff0000; //RED - //*pixel_ptr = 0x00ff00; //GREEN - //*pixel_ptr = 0x1f0000ff; // BLUE - //*pixel_ptr = item_color_line[x] | (x << 24); - item_color_line[x].WriteToBuffWithModifier(pixel_ptr, modifiers[y]); - } - - } - - status_bmp.UnlockBits(bmd); - - g.DrawImage(status_bmp, posR); - status_bmp.Dispose(); - } - - void amuleDownloadStatusList_DrawSubItem(object sender, DrawListViewSubItemEventArgs e) - { - if ( (e.ColumnIndex == m_column_index[(int)DOWNLOAD_CTRL_COL_ID.COL_STATUS_ID]) - && m_settings.StatusVisible ) { - // status is colored bar - Rectangle r = e.Bounds; - DownloadQueueItem it = e.Item.Tag as DownloadQueueItem; - DrawStatusBar(it, e.Graphics, r); - e.DrawDefault = false; - } - else { - e.DrawBackground(); - } - e.DrawText(); - if ( e.Item.Selected ) { - e.DrawFocusRectangle(e.Bounds); - } - } - - void amuleDownloadStatusList_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e) - { - e.DrawBackground(); - e.DrawText(); - } - - /// - // interface to core - /// - void DoInsertItem(DownloadQueueItem i) - { - string first_col_txt; - if ( m_settings.FilenameVisible ) { - first_col_txt = i.Name; - } else if ( m_settings.StatusVisible ) { - first_col_txt = i.PercentDone; - } else if ( m_settings.SizeVisible ) { - first_col_txt = i.Size; - } else if ( m_settings.CompletedVisible ) { - first_col_txt = i.SizeDone; - } else if ( m_settings.SpeedVisible ) { - first_col_txt = i.Speed; - } else if ( m_settings.SourcesVisible ) { - first_col_txt = i.Sources; - } else { - first_col_txt = "all columns hidden"; - } - - ListViewItem it = new ListViewItem(first_col_txt); - - if ( m_settings.StatusVisible ) { - it.SubItems.Add(new ListViewItem.ListViewSubItem(it, i.PercentDone)); - } - if ( m_settings.SizeVisible ) { - it.SubItems.Add(new ListViewItem.ListViewSubItem(it, i.Size)); - } - if ( m_settings.CompletedVisible ) { - it.SubItems.Add(new ListViewItem.ListViewSubItem(it, i.SizeDone)); - } - if ( m_settings.SpeedVisible ) { - it.SubItems.Add(new ListViewItem.ListViewSubItem(it, i.Speed)); - } - if ( m_settings.SourcesVisible ) { - it.SubItems.Add(new ListViewItem.ListViewSubItem(it, i.Sources)); - } - - if ( m_settings.StatusVisible ) { - it.SubItems[m_column_index[(int)DOWNLOAD_CTRL_COL_ID.COL_STATUS_ID]].ForeColor = Color.White; - Columns[(int)DOWNLOAD_CTRL_COL_ID.COL_STATUS_ID].TextAlign = HorizontalAlignment.Center; - - } - it.Tag = i; - - Items.Add(it); - - i.UiItem = it; - } - - void DoUpdateItem(DownloadQueueItem i) - { - ListViewItem it = i.UiItem as ListViewItem; - int idx = m_column_index[(int)DOWNLOAD_CTRL_COL_ID.COL_STATUS_ID]; - if ( it.SubItems[idx].Text != i.PercentDone ) { - it.SubItems[idx].Text = i.PercentDone; - } - idx = (int)DOWNLOAD_CTRL_COL_ID.COL_COMPLETED_ID; - if ( it.SubItems[idx].Text != i.SizeDone ) { - it.SubItems[idx].Text = i.SizeDone; - } - idx = (int)DOWNLOAD_CTRL_COL_ID.COL_SPEED_ID; - if ( it.SubItems[idx].Text != i.Speed ) { - it.SubItems[idx].Text = i.Speed; - } - //Items - } - - #region IContainerUI Members - - delegate void UpdateCallback(); - - public void MyEndUpdate() - { - if ( InvokeRequired ) { - UpdateCallback d = new UpdateCallback(EndUpdate); - Invoke(d); - } - else { - EndUpdate(); - } - } - - public void MyBeginUpdate() - { - if ( InvokeRequired ) { - UpdateCallback d = new UpdateCallback(BeginUpdate); - Invoke(d); - } - else { - BeginUpdate(); - } - } - - delegate void ItemCallback(DownloadQueueItem i); - - public void InsertItem(object i) - { - DownloadQueueItem it = i as DownloadQueueItem; - if ( InvokeRequired ) { - ItemCallback d = new ItemCallback(DoInsertItem); - Invoke(d, it); - } - else { - DoInsertItem(it); - } - } - - public void UpdateItem(object i) - { - DownloadQueueItem it = i as DownloadQueueItem; - if ( InvokeRequired ) { - ItemCallback d = new ItemCallback(DoUpdateItem); - Invoke(d, it); - } - else { - DoUpdateItem(it); - } - } - - #endregion - } - -} diff --git a/src/remote-gui.net/ECCodes.cs b/src/remote-gui.net/ECCodes.cs deleted file mode 100644 index 62afddaf..00000000 --- a/src/remote-gui.net/ECCodes.cs +++ /dev/null @@ -1,408 +0,0 @@ -// -// This file is part of the aMule Project. -// -// Copyright (c) 2004-2008 aMule Team ( admin@amule.org / http://www.amule.org ) -// -// 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 - -// Purpose: -// EC codes and type definition. - -namespace amule.net -{ -public enum ProtocolVersion { - EC_CURRENT_PROTOCOL_VERSION = 0x0203 -}; -public enum ECFlags { - EC_FLAG_ZLIB = 0x00000001, - EC_FLAG_UTF8_NUMBERS = 0x00000002, - EC_FLAG_HAS_ID = 0x00000004, - EC_FLAG_ACCEPTS = 0x00000010, - EC_FLAG_NOTIFY = 0x00008000, - EC_FLAG_UNKNOWN_MASK = 0xff7f7f08 -}; -public enum ECOpCodes { - EC_OP_NOOP = 0x01, - EC_OP_AUTH_REQ = 0x02, - EC_OP_AUTH_FAIL = 0x03, - EC_OP_AUTH_OK = 0x04, - EC_OP_FAILED = 0x05, - EC_OP_STRINGS = 0x06, - EC_OP_MISC_DATA = 0x07, - EC_OP_SHUTDOWN = 0x08, - EC_OP_ADD_LINK = 0x09, - EC_OP_STAT_REQ = 0x0A, - EC_OP_GET_CONNSTATE = 0x0B, - EC_OP_STATS = 0x0C, - EC_OP_GET_DLOAD_QUEUE = 0x0D, - EC_OP_GET_ULOAD_QUEUE = 0x0E, - EC_OP_GET_WAIT_QUEUE = 0x0F, - EC_OP_GET_SHARED_FILES = 0x10, - EC_OP_SHARED_SET_PRIO = 0x11, - EC_OP_PARTFILE_REMOVE_NO_NEEDED = 0x12, - EC_OP_PARTFILE_REMOVE_FULL_QUEUE = 0x13, - EC_OP_PARTFILE_REMOVE_HIGH_QUEUE = 0x14, - EC_OP_PARTFILE_CLEANUP_SOURCES = 0x15, - EC_OP_PARTFILE_SWAP_A4AF_THIS = 0x16, - EC_OP_PARTFILE_SWAP_A4AF_THIS_AUTO = 0x17, - EC_OP_PARTFILE_SWAP_A4AF_OTHERS = 0x18, - EC_OP_PARTFILE_PAUSE = 0x19, - EC_OP_PARTFILE_RESUME = 0x1A, - EC_OP_PARTFILE_STOP = 0x1B, - EC_OP_PARTFILE_PRIO_SET = 0x1C, - EC_OP_PARTFILE_DELETE = 0x1D, - EC_OP_PARTFILE_SET_CAT = 0x1E, - EC_OP_DLOAD_QUEUE = 0x1F, - EC_OP_ULOAD_QUEUE = 0x20, - EC_OP_WAIT_QUEUE = 0x21, - EC_OP_SHARED_FILES = 0x22, - EC_OP_SHAREDFILES_RELOAD = 0x23, - EC_OP_SHAREDFILES_ADD_DIRECTORY = 0x24, - EC_OP_RENAME_FILE = 0x25, - EC_OP_SEARCH_START = 0x26, - EC_OP_SEARCH_STOP = 0x27, - EC_OP_SEARCH_RESULTS = 0x28, - EC_OP_SEARCH_PROGRESS = 0x29, - EC_OP_DOWNLOAD_SEARCH_RESULT = 0x2A, - EC_OP_IPFILTER_RELOAD = 0x2B, - EC_OP_GET_SERVER_LIST = 0x2C, - EC_OP_SERVER_LIST = 0x2D, - EC_OP_SERVER_DISCONNECT = 0x2E, - EC_OP_SERVER_CONNECT = 0x2F, - EC_OP_SERVER_REMOVE = 0x30, - EC_OP_SERVER_ADD = 0x31, - EC_OP_SERVER_UPDATE_FROM_URL = 0x32, - EC_OP_ADDLOGLINE = 0x33, - EC_OP_ADDDEBUGLOGLINE = 0x34, - EC_OP_GET_LOG = 0x35, - EC_OP_GET_DEBUGLOG = 0x36, - EC_OP_GET_SERVERINFO = 0x37, - EC_OP_LOG = 0x38, - EC_OP_DEBUGLOG = 0x39, - EC_OP_SERVERINFO = 0x3A, - EC_OP_RESET_LOG = 0x3B, - EC_OP_RESET_DEBUGLOG = 0x3C, - EC_OP_CLEAR_SERVERINFO = 0x3D, - EC_OP_GET_LAST_LOG_ENTRY = 0x3E, - EC_OP_GET_PREFERENCES = 0x3F, - EC_OP_SET_PREFERENCES = 0x40, - EC_OP_CREATE_CATEGORY = 0x41, - EC_OP_UPDATE_CATEGORY = 0x42, - EC_OP_DELETE_CATEGORY = 0x43, - EC_OP_GET_STATSGRAPHS = 0x44, - EC_OP_STATSGRAPHS = 0x45, - EC_OP_GET_STATSTREE = 0x46, - EC_OP_STATSTREE = 0x47, - EC_OP_KAD_START = 0x48, - EC_OP_KAD_STOP = 0x49, - EC_OP_CONNECT = 0x4A, - EC_OP_DISCONNECT = 0x4B, - EC_OP_KAD_UPDATE_FROM_URL = 0x4D, - EC_OP_KAD_BOOTSTRAP_FROM_IP = 0x4E, - EC_OP_AUTH_SALT = 0x4F, - EC_OP_AUTH_PASSWD = 0x50, - EC_OP_IPFILTER_UPDATE = 0x51 -}; -public enum ECTagNames { - EC_TAG_STRING = 0x0000, - EC_TAG_PASSWD_HASH = 0x0001, - EC_TAG_PROTOCOL_VERSION = 0x0002, - EC_TAG_VERSION_ID = 0x0003, - EC_TAG_DETAIL_LEVEL = 0x0004, - EC_TAG_CONNSTATE = 0x0005, - EC_TAG_ED2K_ID = 0x0006, - EC_TAG_LOG_TO_STATUS = 0x0007, - EC_TAG_BOOTSTRAP_IP = 0x0008, - EC_TAG_BOOTSTRAP_PORT = 0x0009, - EC_TAG_CLIENT_ID = 0x000A, - EC_TAG_PASSWD_SALT = 0x000B, - EC_TAG_CLIENT_NAME = 0x0100, - EC_TAG_CLIENT_VERSION = 0x0101, - EC_TAG_CLIENT_MOD = 0x0102, - EC_TAG_STATS_UL_SPEED = 0x0200, - EC_TAG_STATS_DL_SPEED = 0x0201, - EC_TAG_STATS_UL_SPEED_LIMIT = 0x0202, - EC_TAG_STATS_DL_SPEED_LIMIT = 0x0203, - EC_TAG_STATS_UP_OVERHEAD = 0x0204, - EC_TAG_STATS_DOWN_OVERHEAD = 0x0205, - EC_TAG_STATS_TOTAL_SRC_COUNT = 0x0206, - EC_TAG_STATS_BANNED_COUNT = 0x0207, - EC_TAG_STATS_UL_QUEUE_LEN = 0x0208, - EC_TAG_STATS_ED2K_USERS = 0x0209, - EC_TAG_STATS_KAD_USERS = 0x020A, - EC_TAG_STATS_ED2K_FILES = 0x020B, - EC_TAG_STATS_KAD_FILES = 0x020C, - EC_TAG_STATS_LOGGER_MESSAGE = 0x020D, - EC_TAG_STATS_KAD_FIREWALLED_UDP = 0x020E, - EC_TAG_STATS_KAD_INDEXED_SOURCES = 0x020F, - EC_TAG_STATS_KAD_INDEXED_KEYWORDS = 0x0210, - EC_TAG_STATS_KAD_INDEXED_NOTES = 0x0211, - EC_TAG_STATS_KAD_INDEXED_LOAD = 0x0212, - EC_TAG_STATS_KAD_IP_ADRESS = 0x0213, - EC_TAG_STATS_BUDDY_STATUS = 0x0214, - EC_TAG_STATS_BUDDY_IP = 0x0215, - EC_TAG_STATS_BUDDY_PORT = 0x0216, - EC_TAG_PARTFILE = 0x0300, - EC_TAG_PARTFILE_NAME = 0x0301, - EC_TAG_PARTFILE_PARTMETID = 0x0302, - EC_TAG_PARTFILE_SIZE_FULL = 0x0303, - EC_TAG_PARTFILE_SIZE_XFER = 0x0304, - EC_TAG_PARTFILE_SIZE_XFER_UP = 0x0305, - EC_TAG_PARTFILE_SIZE_DONE = 0x0306, - EC_TAG_PARTFILE_SPEED = 0x0307, - EC_TAG_PARTFILE_STATUS = 0x0308, - EC_TAG_PARTFILE_PRIO = 0x0309, - EC_TAG_PARTFILE_SOURCE_COUNT = 0x030A, - EC_TAG_PARTFILE_SOURCE_COUNT_A4AF = 0x030B, - EC_TAG_PARTFILE_SOURCE_COUNT_NOT_CURRENT = 0x030C, - EC_TAG_PARTFILE_SOURCE_COUNT_XFER = 0x030D, - EC_TAG_PARTFILE_ED2K_LINK = 0x030E, - EC_TAG_PARTFILE_CAT = 0x030F, - EC_TAG_PARTFILE_LAST_RECV = 0x0310, - EC_TAG_PARTFILE_LAST_SEEN_COMP = 0x0311, - EC_TAG_PARTFILE_PART_STATUS = 0x0312, - EC_TAG_PARTFILE_GAP_STATUS = 0x0313, - EC_TAG_PARTFILE_REQ_STATUS = 0x0314, - EC_TAG_PARTFILE_SOURCE_NAMES = 0x0315, - EC_TAG_PARTFILE_COMMENTS = 0x0316, - EC_TAG_PARTFILE_STOPPED = 0x0317, - EC_TAG_PARTFILE_DOWNLOAD_ACTIVE = 0x0318, - EC_TAG_PARTFILE_LOST_CORRUPTION = 0x0319, - EC_TAG_PARTFILE_GAINED_COMPRESSION = 0x031A, - EC_TAG_PARTFILE_SAVED_ICH = 0x031B, - EC_TAG_PARTFILE_SOURCE_NAMES_COUNTS = 0x031C, - EC_TAG_PARTFILE_AVAILABLE_PARTS = 0x031D, - EC_TAG_PARTFILE_HASH = 0x031E, - EC_TAG_KNOWNFILE = 0x0400, - EC_TAG_KNOWNFILE_XFERRED = 0x0401, - EC_TAG_KNOWNFILE_XFERRED_ALL = 0x0402, - EC_TAG_KNOWNFILE_REQ_COUNT = 0x0403, - EC_TAG_KNOWNFILE_REQ_COUNT_ALL = 0x0404, - EC_TAG_KNOWNFILE_ACCEPT_COUNT = 0x0405, - EC_TAG_KNOWNFILE_ACCEPT_COUNT_ALL = 0x0406, - EC_TAG_KNOWNFILE_AICH_MASTERHASH = 0x0407, - EC_TAG_KNOWNFILE_FILENAME = 0x0408, - EC_TAG_KNOWNFILE_COMPLETE_SOURCES_LOW = 0x0409, - EC_TAG_KNOWNFILE_COMPLETE_SOURCES_HIGH = 0x040A, - EC_TAG_SERVER = 0x0500, - EC_TAG_SERVER_NAME = 0x0501, - EC_TAG_SERVER_DESC = 0x0502, - EC_TAG_SERVER_ADDRESS = 0x0503, - EC_TAG_SERVER_PING = 0x0504, - EC_TAG_SERVER_USERS = 0x0505, - EC_TAG_SERVER_USERS_MAX = 0x0506, - EC_TAG_SERVER_FILES = 0x0507, - EC_TAG_SERVER_PRIO = 0x0508, - EC_TAG_SERVER_FAILED = 0x0509, - EC_TAG_SERVER_STATIC = 0x050A, - EC_TAG_SERVER_VERSION = 0x050B, - EC_TAG_CLIENT = 0x0600, - EC_TAG_CLIENT_SOFTWARE = 0x0601, - EC_TAG_CLIENT_SCORE = 0x0602, - EC_TAG_CLIENT_HASH = 0x0603, - EC_TAG_CLIENT_FRIEND = 0x0604, - EC_TAG_CLIENT_WAIT_TIME = 0x0605, - EC_TAG_CLIENT_XFER_TIME = 0x0606, - EC_TAG_CLIENT_QUEUE_TIME = 0x0607, - EC_TAG_CLIENT_LAST_TIME = 0x0608, - EC_TAG_CLIENT_UPLOAD_SESSION = 0x0609, - EC_TAG_CLIENT_UPLOAD_TOTAL = 0x060A, - EC_TAG_CLIENT_DOWNLOAD_TOTAL = 0x060B, - EC_TAG_CLIENT_DOWNLOAD_STATE = 0x060C, - EC_TAG_CLIENT_UP_SPEED = 0x060D, - EC_TAG_CLIENT_DOWN_SPEED = 0x060E, - EC_TAG_CLIENT_FROM = 0x060F, - EC_TAG_CLIENT_USER_IP = 0x0610, - EC_TAG_CLIENT_USER_PORT = 0x0611, - EC_TAG_CLIENT_SERVER_IP = 0x0612, - EC_TAG_CLIENT_SERVER_PORT = 0x0613, - EC_TAG_CLIENT_SERVER_NAME = 0x0614, - EC_TAG_CLIENT_SOFT_VER_STR = 0x0615, - EC_TAG_CLIENT_WAITING_POSITION = 0x0616, - EC_TAG_CLIENT_IDENT_STATE = 0x0617, - EC_TAG_CLIENT_OBFUSCATED_CONNECTION = 0x0618, - EC_TAG_CLIENT_RATING = 0x0619, - EC_TAG_CLIENT_REMOTE_QUEUE_RANK = 0x061A, - EC_TAG_CLIENT_ASKED_COUNT = 0x061B, - EC_TAG_CLIENT_UPLOAD_STATE = 0x061C, - EC_TAG_CLIENT_EXT_PROTOCOL = 0x061D, - EC_TAG_CLIENT_USER_ID = 0x061E, - EC_TAG_SEARCHFILE = 0x0700, - EC_TAG_SEARCH_TYPE = 0x0701, - EC_TAG_SEARCH_NAME = 0x0702, - EC_TAG_SEARCH_MIN_SIZE = 0x0703, - EC_TAG_SEARCH_MAX_SIZE = 0x0704, - EC_TAG_SEARCH_FILE_TYPE = 0x0705, - EC_TAG_SEARCH_EXTENSION = 0x0706, - EC_TAG_SEARCH_AVAILABILITY = 0x0707, - EC_TAG_SEARCH_STATUS = 0x0708, - EC_TAG_SELECT_PREFS = 0x1000, - EC_TAG_PREFS_CATEGORIES = 0x1100, - EC_TAG_CATEGORY = 0x1101, - EC_TAG_CATEGORY_TITLE = 0x1102, - EC_TAG_CATEGORY_PATH = 0x1103, - EC_TAG_CATEGORY_COMMENT = 0x1104, - EC_TAG_CATEGORY_COLOR = 0x1105, - EC_TAG_CATEGORY_PRIO = 0x1106, - EC_TAG_PREFS_GENERAL = 0x1200, - EC_TAG_USER_NICK = 0x1201, - EC_TAG_USER_HASH = 0x1202, - EC_TAG_USER_HOST = 0x1203, - EC_TAG_GENERAL_CHECK_NEW_VERSION = 0x1204, - EC_TAG_PREFS_CONNECTIONS = 0x1300, - EC_TAG_CONN_DL_CAP = 0x1301, - EC_TAG_CONN_UL_CAP = 0x1302, - EC_TAG_CONN_MAX_DL = 0x1303, - EC_TAG_CONN_MAX_UL = 0x1304, - EC_TAG_CONN_SLOT_ALLOCATION = 0x1305, - EC_TAG_CONN_TCP_PORT = 0x1306, - EC_TAG_CONN_UDP_PORT = 0x1307, - EC_TAG_CONN_UDP_DISABLE = 0x1308, - EC_TAG_CONN_MAX_FILE_SOURCES = 0x1309, - EC_TAG_CONN_MAX_CONN = 0x130A, - EC_TAG_CONN_AUTOCONNECT = 0x130B, - EC_TAG_CONN_RECONNECT = 0x130C, - EC_TAG_NETWORK_ED2K = 0x130D, - EC_TAG_NETWORK_KADEMLIA = 0x130E, - EC_TAG_PREFS_MESSAGEFILTER = 0x1400, - EC_TAG_MSGFILTER_ENABLED = 0x1401, - EC_TAG_MSGFILTER_ALL = 0x1402, - EC_TAG_MSGFILTER_FRIENDS = 0x1403, - EC_TAG_MSGFILTER_SECURE = 0x1404, - EC_TAG_MSGFILTER_BY_KEYWORD = 0x1405, - EC_TAG_MSGFILTER_KEYWORDS = 0x1406, - EC_TAG_PREFS_REMOTECTRL = 0x1500, - EC_TAG_WEBSERVER_AUTORUN = 0x1501, - EC_TAG_WEBSERVER_PORT = 0x1502, - EC_TAG_WEBSERVER_GUEST = 0x1503, - EC_TAG_WEBSERVER_USEGZIP = 0x1504, - EC_TAG_WEBSERVER_REFRESH = 0x1505, - EC_TAG_WEBSERVER_TEMPLATE = 0x1506, - EC_TAG_PREFS_ONLINESIG = 0x1600, - EC_TAG_ONLINESIG_ENABLED = 0x1601, - EC_TAG_PREFS_SERVERS = 0x1700, - EC_TAG_SERVERS_REMOVE_DEAD = 0x1701, - EC_TAG_SERVERS_DEAD_SERVER_RETRIES = 0x1702, - EC_TAG_SERVERS_AUTO_UPDATE = 0x1703, - EC_TAG_SERVERS_URL_LIST = 0x1704, - EC_TAG_SERVERS_ADD_FROM_SERVER = 0x1705, - EC_TAG_SERVERS_ADD_FROM_CLIENT = 0x1706, - EC_TAG_SERVERS_USE_SCORE_SYSTEM = 0x1707, - EC_TAG_SERVERS_SMART_ID_CHECK = 0x1708, - EC_TAG_SERVERS_SAFE_SERVER_CONNECT = 0x1709, - EC_TAG_SERVERS_AUTOCONN_STATIC_ONLY = 0x170A, - EC_TAG_SERVERS_MANUAL_HIGH_PRIO = 0x170B, - EC_TAG_SERVERS_UPDATE_URL = 0x170C, - EC_TAG_PREFS_FILES = 0x1800, - EC_TAG_FILES_ICH_ENABLED = 0x1801, - EC_TAG_FILES_AICH_TRUST = 0x1802, - EC_TAG_FILES_NEW_PAUSED = 0x1803, - EC_TAG_FILES_NEW_AUTO_DL_PRIO = 0x1804, - EC_TAG_FILES_PREVIEW_PRIO = 0x1805, - EC_TAG_FILES_NEW_AUTO_UL_PRIO = 0x1806, - EC_TAG_FILES_UL_FULL_CHUNKS = 0x1807, - EC_TAG_FILES_START_NEXT_PAUSED = 0x1808, - EC_TAG_FILES_RESUME_SAME_CAT = 0x1809, - EC_TAG_FILES_SAVE_SOURCES = 0x180A, - EC_TAG_FILES_EXTRACT_METADATA = 0x180B, - EC_TAG_FILES_ALLOC_FULL_SIZE = 0x180C, - EC_TAG_FILES_CHECK_FREE_SPACE = 0x180D, - EC_TAG_FILES_MIN_FREE_SPACE = 0x180E, - EC_TAG_PREFS_SRCDROP = 0x1900, - EC_TAG_SRCDROP_NONEEDED = 0x1901, - EC_TAG_SRCDROP_DROP_FQS = 0x1902, - EC_TAG_SRCDROP_DROP_HQRS = 0x1903, - EC_TAG_SRCDROP_HQRS_VALUE = 0x1904, - EC_TAG_SRCDROP_AUTODROP_TIMER = 0x1905, - EC_TAG_PREFS_DIRECTORIES = 0x1A00, - EC_TAG_DIRECTORIES_INCOMING = 0x1A01, - EC_TAG_DIRECTORIES_TEMP = 0x1A02, - EC_TAG_DIRECTORIES_SHARED = 0x1A03, - EC_TAG_DIRECTORIES_SHARE_HIDDEN = 0x1A04, - EC_TAG_PREFS_STATISTICS = 0x1B00, - EC_TAG_STATSGRAPH_WIDTH = 0x1B01, - EC_TAG_STATSGRAPH_SCALE = 0x1B02, - EC_TAG_STATSGRAPH_LAST = 0x1B03, - EC_TAG_STATSGRAPH_DATA = 0x1B04, - EC_TAG_STATTREE_CAPPING = 0x1B05, - EC_TAG_STATTREE_NODE = 0x1B06, - EC_TAG_STAT_NODE_VALUE = 0x1B07, - EC_TAG_STAT_VALUE_TYPE = 0x1B08, - EC_TAG_STATTREE_NODEID = 0x1B09, - EC_TAG_PREFS_SECURITY = 0x1C00, - EC_TAG_SECURITY_CAN_SEE_SHARES = 0x1C01, - EC_TAG_IPFILTER_CLIENTS = 0x1C02, - EC_TAG_IPFILTER_SERVERS = 0x1C03, - EC_TAG_IPFILTER_AUTO_UPDATE = 0x1C04, - EC_TAG_IPFILTER_UPDATE_URL = 0x1C05, - EC_TAG_IPFILTER_LEVEL = 0x1C06, - EC_TAG_IPFILTER_FILTER_LAN = 0x1C07, - EC_TAG_SECURITY_USE_SECIDENT = 0x1C08, - EC_TAG_SECURITY_OBFUSCATION_SUPPORTED = 0x1C09, - EC_TAG_SECURITY_OBFUSCATION_REQUESTED = 0x1C0A, - EC_TAG_SECURITY_OBFUSCATION_REQUIRED = 0x1C0B, - EC_TAG_PREFS_CORETWEAKS = 0x1D00, - EC_TAG_CORETW_MAX_CONN_PER_FIVE = 0x1D01, - EC_TAG_CORETW_VERBOSE = 0x1D02, - EC_TAG_CORETW_FILEBUFFER = 0x1D03, - EC_TAG_CORETW_UL_QUEUE = 0x1D04, - EC_TAG_CORETW_SRV_KEEPALIVE_TIMEOUT = 0x1D05, - EC_TAG_PREFS_KADEMLIA = 0x1E00, - EC_TAG_KADEMLIA_UPDATE_URL = 0x1E01 -}; -public enum EC_DETAIL_LEVEL { - EC_DETAIL_CMD = 0x00, - EC_DETAIL_WEB = 0x01, - EC_DETAIL_FULL = 0x02, - EC_DETAIL_UPDATE = 0x03, - EC_DETAIL_INC_UPDATE = 0x04 -}; -public enum EC_SEARCH_TYPE { - EC_SEARCH_LOCAL = 0x00, - EC_SEARCH_GLOBAL = 0x01, - EC_SEARCH_KAD = 0x02, - EC_SEARCH_WEB = 0x03 -}; -public enum EC_STATTREE_NODE_VALUE_TYPE { - EC_VALUE_INTEGER = 0x00, - EC_VALUE_ISTRING = 0x01, - EC_VALUE_BYTES = 0x02, - EC_VALUE_ISHORT = 0x03, - EC_VALUE_TIME = 0x04, - EC_VALUE_SPEED = 0x05, - EC_VALUE_STRING = 0x06, - EC_VALUE_DOUBLE = 0x07 -}; -public enum EcPrefs { - EC_PREFS_CATEGORIES = 0x00000001, - EC_PREFS_GENERAL = 0x00000002, - EC_PREFS_CONNECTIONS = 0x00000004, - EC_PREFS_MESSAGEFILTER = 0x00000008, - EC_PREFS_REMOTECONTROLS = 0x00000010, - EC_PREFS_ONLINESIG = 0x00000020, - EC_PREFS_SERVERS = 0x00000040, - EC_PREFS_FILES = 0x00000080, - EC_PREFS_SRCDROP = 0x00000100, - EC_PREFS_DIRECTORIES = 0x00000200, - EC_PREFS_STATISTICS = 0x00000400, - EC_PREFS_SECURITY = 0x00000800, - EC_PREFS_CORETWEAKS = 0x00001000, - EC_PREFS_KADEMLIA = 0x00002000 -}; -} diff --git a/src/remote-gui.net/ECTagTypes.cs b/src/remote-gui.net/ECTagTypes.cs deleted file mode 100644 index 6c451c2f..00000000 --- a/src/remote-gui.net/ECTagTypes.cs +++ /dev/null @@ -1,41 +0,0 @@ -// -// This file is part of the aMule Project. -// -// Copyright (c) 2004-2008 aMule Team ( admin@amule.org / http://www.amule.org ) -// -// 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 - -// Purpose: -// EC tag types for use on the ec library. - -namespace amule.net -{ -public enum ECTagTypes { - EC_TAGTYPE_UNKNOWN = 0, - EC_TAGTYPE_CUSTOM = 1, - EC_TAGTYPE_UINT8 = 2, - EC_TAGTYPE_UINT16 = 3, - EC_TAGTYPE_UINT32 = 4, - EC_TAGTYPE_UINT64 = 5, - EC_TAGTYPE_STRING = 6, - EC_TAGTYPE_DOUBLE = 7, - EC_TAGTYPE_IPV4 = 8, - EC_TAGTYPE_HASH16 = 9 -}; -} diff --git a/src/remote-gui.net/MainWindow.Designer.cs b/src/remote-gui.net/MainWindow.Designer.cs deleted file mode 100644 index 9b4d9041..00000000 --- a/src/remote-gui.net/MainWindow.Designer.cs +++ /dev/null @@ -1,222 +0,0 @@ -namespace amule.net -{ - partial class MainWindow - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.panelStatus = new System.Windows.Forms.Panel(); - this.textLinktatus = new System.Windows.Forms.TextBox(); - this.panelToolbar = new System.Windows.Forms.Panel(); - this.buttonAbout = new System.Windows.Forms.Button(); - this.buttonPrefs = new System.Windows.Forms.Button(); - this.buttonAddLink = new System.Windows.Forms.Button(); - this.buttonShared = new System.Windows.Forms.Button(); - this.buttonNetwork = new System.Windows.Forms.Button(); - this.buttonSearch = new System.Windows.Forms.Button(); - this.buttonXfer = new System.Windows.Forms.Button(); - this.panelMain = new System.Windows.Forms.Panel(); - this.textBoxDownSpeed = new System.Windows.Forms.TextBox(); - this.textBoxUpSpeed = new System.Windows.Forms.TextBox(); - this.panelStatus.SuspendLayout(); - this.panelToolbar.SuspendLayout(); - this.SuspendLayout(); - // - // panelStatus - // - this.panelStatus.Controls.Add(this.textBoxUpSpeed); - this.panelStatus.Controls.Add(this.textBoxDownSpeed); - this.panelStatus.Controls.Add(this.textLinktatus); - this.panelStatus.Dock = System.Windows.Forms.DockStyle.Bottom; - this.panelStatus.Location = new System.Drawing.Point(0, 362); - this.panelStatus.Name = "panelStatus"; - this.panelStatus.Size = new System.Drawing.Size(678, 24); - this.panelStatus.TabIndex = 0; - // - // textLinktatus - // - this.textLinktatus.Dock = System.Windows.Forms.DockStyle.Left; - this.textLinktatus.Location = new System.Drawing.Point(0, 0); - this.textLinktatus.Name = "textLinktatus"; - this.textLinktatus.ReadOnly = true; - this.textLinktatus.Size = new System.Drawing.Size(362, 20); - this.textLinktatus.TabIndex = 0; - // - // panelToolbar - // - this.panelToolbar.Controls.Add(this.buttonAbout); - this.panelToolbar.Controls.Add(this.buttonPrefs); - this.panelToolbar.Controls.Add(this.buttonAddLink); - this.panelToolbar.Controls.Add(this.buttonShared); - this.panelToolbar.Controls.Add(this.buttonNetwork); - this.panelToolbar.Controls.Add(this.buttonSearch); - this.panelToolbar.Controls.Add(this.buttonXfer); - this.panelToolbar.Dock = System.Windows.Forms.DockStyle.Top; - this.panelToolbar.Location = new System.Drawing.Point(0, 0); - this.panelToolbar.Name = "panelToolbar"; - this.panelToolbar.Size = new System.Drawing.Size(678, 45); - this.panelToolbar.TabIndex = 1; - // - // buttonAbout - // - this.buttonAbout.Dock = System.Windows.Forms.DockStyle.Left; - this.buttonAbout.Image = global::amule.net.Properties.Resources.Toolbar_About; - this.buttonAbout.Location = new System.Drawing.Point(270, 0); - this.buttonAbout.Name = "buttonAbout"; - this.buttonAbout.Size = new System.Drawing.Size(45, 45); - this.buttonAbout.TabIndex = 6; - this.buttonAbout.UseVisualStyleBackColor = true; - this.buttonAbout.Click += new System.EventHandler(this.buttonAbout_Click); - // - // buttonPrefs - // - this.buttonPrefs.Dock = System.Windows.Forms.DockStyle.Left; - this.buttonPrefs.Image = global::amule.net.Properties.Resources.Toolbar_Prefs; - this.buttonPrefs.Location = new System.Drawing.Point(225, 0); - this.buttonPrefs.Name = "buttonPrefs"; - this.buttonPrefs.Size = new System.Drawing.Size(45, 45); - this.buttonPrefs.TabIndex = 5; - this.buttonPrefs.UseVisualStyleBackColor = true; - this.buttonPrefs.Click += new System.EventHandler(this.buttonPrefs_Click); - // - // buttonAddLink - // - this.buttonAddLink.Dock = System.Windows.Forms.DockStyle.Left; - this.buttonAddLink.Image = global::amule.net.Properties.Resources.Toolbar_Import; - this.buttonAddLink.Location = new System.Drawing.Point(180, 0); - this.buttonAddLink.Name = "buttonAddLink"; - this.buttonAddLink.Size = new System.Drawing.Size(45, 45); - this.buttonAddLink.TabIndex = 4; - this.buttonAddLink.UseVisualStyleBackColor = true; - this.buttonAddLink.Click += new System.EventHandler(this.buttonAddLink_Click); - // - // buttonShared - // - this.buttonShared.Dock = System.Windows.Forms.DockStyle.Left; - this.buttonShared.Image = global::amule.net.Properties.Resources.Toolbar_Shared; - this.buttonShared.Location = new System.Drawing.Point(135, 0); - this.buttonShared.Name = "buttonShared"; - this.buttonShared.Size = new System.Drawing.Size(45, 45); - this.buttonShared.TabIndex = 3; - this.buttonShared.UseVisualStyleBackColor = true; - this.buttonShared.Click += new System.EventHandler(this.buttonShared_Click); - // - // buttonNetwork - // - this.buttonNetwork.Dock = System.Windows.Forms.DockStyle.Left; - this.buttonNetwork.Image = global::amule.net.Properties.Resources.Toolbar_Network; - this.buttonNetwork.Location = new System.Drawing.Point(90, 0); - this.buttonNetwork.Name = "buttonNetwork"; - this.buttonNetwork.Size = new System.Drawing.Size(45, 45); - this.buttonNetwork.TabIndex = 2; - this.buttonNetwork.UseVisualStyleBackColor = true; - this.buttonNetwork.Click += new System.EventHandler(this.buttonNetwork_Click); - // - // buttonSearch - // - this.buttonSearch.Dock = System.Windows.Forms.DockStyle.Left; - this.buttonSearch.Image = global::amule.net.Properties.Resources.Toolbar_Search; - this.buttonSearch.Location = new System.Drawing.Point(45, 0); - this.buttonSearch.Name = "buttonSearch"; - this.buttonSearch.Size = new System.Drawing.Size(45, 45); - this.buttonSearch.TabIndex = 1; - this.buttonSearch.UseVisualStyleBackColor = true; - this.buttonSearch.Click += new System.EventHandler(this.buttonSearch_Click); - // - // buttonXfer - // - this.buttonXfer.Dock = System.Windows.Forms.DockStyle.Left; - this.buttonXfer.Image = global::amule.net.Properties.Resources.Toolbar_Transfers; - this.buttonXfer.Location = new System.Drawing.Point(0, 0); - this.buttonXfer.Name = "buttonXfer"; - this.buttonXfer.Size = new System.Drawing.Size(45, 45); - this.buttonXfer.TabIndex = 0; - this.buttonXfer.UseVisualStyleBackColor = true; - this.buttonXfer.Click += new System.EventHandler(this.buttonXfer_Click); - // - // panelMain - // - this.panelMain.Dock = System.Windows.Forms.DockStyle.Fill; - this.panelMain.Location = new System.Drawing.Point(0, 45); - this.panelMain.Name = "panelMain"; - this.panelMain.Size = new System.Drawing.Size(678, 317); - this.panelMain.TabIndex = 2; - // - // textBoxDownSpeed - // - this.textBoxDownSpeed.Dock = System.Windows.Forms.DockStyle.Left; - this.textBoxDownSpeed.Location = new System.Drawing.Point(362, 0); - this.textBoxDownSpeed.Name = "textBoxDownSpeed"; - this.textBoxDownSpeed.ReadOnly = true; - this.textBoxDownSpeed.Size = new System.Drawing.Size(90, 20); - this.textBoxDownSpeed.TabIndex = 1; - // - // textBoxUpSpeed - // - this.textBoxUpSpeed.Dock = System.Windows.Forms.DockStyle.Left; - this.textBoxUpSpeed.Location = new System.Drawing.Point(452, 0); - this.textBoxUpSpeed.Name = "textBoxUpSpeed"; - this.textBoxUpSpeed.ReadOnly = true; - this.textBoxUpSpeed.Size = new System.Drawing.Size(90, 20); - this.textBoxUpSpeed.TabIndex = 2; - // - // MainWindow - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(678, 386); - this.Controls.Add(this.panelMain); - this.Controls.Add(this.panelToolbar); - this.Controls.Add(this.panelStatus); - this.Name = "MainWindow"; - this.Text = "aMule remote control"; - this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.MainWindow_FormClosed); - this.Load += new System.EventHandler(this.MainWindow_Load); - this.panelStatus.ResumeLayout(false); - this.panelStatus.PerformLayout(); - this.panelToolbar.ResumeLayout(false); - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.Panel panelStatus; - private System.Windows.Forms.Panel panelToolbar; - private System.Windows.Forms.Panel panelMain; - private System.Windows.Forms.Button buttonXfer; - private System.Windows.Forms.Button buttonSearch; - private System.Windows.Forms.TextBox textLinktatus; - private System.Windows.Forms.Button buttonNetwork; - private System.Windows.Forms.Button buttonShared; - private System.Windows.Forms.Button buttonAddLink; - private System.Windows.Forms.Button buttonPrefs; - private System.Windows.Forms.Button buttonAbout; - private System.Windows.Forms.TextBox textBoxUpSpeed; - private System.Windows.Forms.TextBox textBoxDownSpeed; - - } -} \ No newline at end of file diff --git a/src/remote-gui.net/MainWindow.cs b/src/remote-gui.net/MainWindow.cs deleted file mode 100644 index 05507adc..00000000 --- a/src/remote-gui.net/MainWindow.cs +++ /dev/null @@ -1,509 +0,0 @@ -// -// This file is part of the aMule Project. -// -// Copyright (c) 2003-2008 aMule Team ( admin@amule.org / http://www.amule.org ) -// Copyright (c) 2003-2008 Froenchenko Leonid ( lfroen@gmail.com / http://www.amule.org ) -// -// 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 -// -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; -using System.Windows.Forms; -using System.Configuration; - -namespace amule.net -{ - public partial class MainWindow : Form - { - amuleRemote m_amuleRemote = new amuleRemote(); - Timer m_updateTimer = null; - - DownloadQueueContainer m_dload_info; - SharedFileListContainer m_shared_info; - - amuleDownloadStatusList m_download_status_ctrl; - amuleSharedFilesList m_shared_list_ctrl; - - amuleSearchControl m_search_ctrl; - amuleSettings m_settings = new amuleSettings(); - - public MainWindow() - { - InitializeComponent(); - } - - enum UpdateRequestState { Stats, MainInfo }; - UpdateRequestState m_req_state; - - ecProto.ecPacket GetFullInfoRequest() - { - ecProto.ecPacket req = null; - Control current_ctrl = panelMain.Controls[0]; - if (current_ctrl == m_download_status_ctrl) { - req = m_dload_info.ReQuery(); - } else if (current_ctrl == m_shared_list_ctrl) { - req = m_shared_info.ReQuery(); - } - - if ( req == null ) { - throw new Exception("unhandled GUI state"); - } - return req; - } - - private static void UpdateTimerProc(Object myObject, - EventArgs myEventArgs) - { - MainWindow w = (MainWindow)((Timer)myObject).Tag; - - // TODO: for testing 1 request is enough - w.m_updateTimer.Stop(); - - ecProto.ecPacket req = null; - switch(w.m_req_state) { - case UpdateRequestState.Stats: - req = new ecProto.ecPacket(ECOpCodes.EC_OP_STAT_REQ); - w.m_req_state = UpdateRequestState.MainInfo; - break; - case UpdateRequestState.MainInfo: - req = w.GetFullInfoRequest(); - w.m_req_state = UpdateRequestState.Stats; - break; - } - w.m_amuleRemote.SendPacket(req); - } - - private void MainWindow_Load(object sender, EventArgs e) - { - // - // First, attempt to connect to remote core - // - ConnectDlg connectDlg = new ConnectDlg(); - string errorMsg = null; - bool connect_ok = false; - string amuleHost = "", amulePort = ""; - while ( !connect_ok ) { - if (connectDlg.ShowDialog() == DialogResult.OK) { - amuleHost = connectDlg.Host(); - amulePort = connectDlg.Port(); - string pass = connectDlg.Pass(); - int amulePort_int = 0; - try { - amulePort_int = Convert.ToInt16(amulePort, 10); - }catch(Exception) { - MessageBox.Show("Invalid port number", "Error", - MessageBoxButtons.OK, MessageBoxIcon.Error); - continue; - } - connect_ok = m_amuleRemote.ConnectToCore(amuleHost, amulePort_int, pass, ref errorMsg); - if (!connect_ok) { - Console.WriteLine("Connect failed '{0}'", errorMsg); - MessageBox.Show(errorMsg, "Connection to aMule core failed", - MessageBoxButtons.OK, MessageBoxIcon.Stop); - } - } else { - Application.Exit(); - return; - } - } - - textLinktatus.Text = "aMule core on [" + amuleHost + ":" + amulePort + "]"; - Text = "aMule remote control [" + amuleHost + ":" + amulePort + "]"; - Size = m_settings.MainWindowSize; - - m_amuleRemote.SetECHandler(new amuleMainECHanler(this)); - - // - // Connection OK at this point - // - m_download_status_ctrl = new amuleDownloadStatusList(); - m_dload_info = new DownloadQueueContainer(m_download_status_ctrl); - m_download_status_ctrl.ItemContainer = m_dload_info; - - m_download_status_ctrl.OnCancelItem += - new DownloadStatusListEventHandler(m_download_status_ctrl_OnCancelItem); - m_download_status_ctrl.OnPauseItem += - new DownloadStatusListEventHandler(m_download_status_ctrl_OnPauseItem); - m_download_status_ctrl.OnResumeItem += - new DownloadStatusListEventHandler(m_download_status_ctrl_OnResumeItem); - - m_shared_list_ctrl = new amuleSharedFilesList(); - m_shared_info = new SharedFileListContainer(m_shared_list_ctrl); - - m_search_ctrl = new amuleSearchControl(); - - m_updateTimer = new Timer(); - m_updateTimer.Tag = this; - m_updateTimer.Tick += new EventHandler(UpdateTimerProc); - m_updateTimer.Interval = 1000; - m_updateTimer.Start(); - - // default - download list view - panelMain.Controls.Add(m_download_status_ctrl); - - // for testing set needed state! - m_req_state = UpdateRequestState.MainInfo; - } - - void m_download_status_ctrl_OnResumeItem() - { - ecProto.ecPacket cmd = new ecProto.ecPacket(ECOpCodes.EC_OP_PARTFILE_RESUME); - m_download_status_ctrl.SelectedItemsToCommand(cmd); - m_amuleRemote.SendPacket(cmd); - } - - void m_download_status_ctrl_OnPauseItem() - { - ecProto.ecPacket cmd = new ecProto.ecPacket(ECOpCodes.EC_OP_PARTFILE_PAUSE); - m_download_status_ctrl.SelectedItemsToCommand(cmd); - m_amuleRemote.SendPacket(cmd); - } - - void m_download_status_ctrl_OnCancelItem() - { - string msg = "Following files will be cancelled:\n"; - foreach ( ListViewItem i in m_download_status_ctrl.SelectedItems ) { - msg += i.Text + "\n"; - } - if ( MessageBox.Show(msg, "Cancel files", MessageBoxButtons.OKCancel, - MessageBoxIcon.Question) == DialogResult.OK ) { - ecProto.ecPacket cmd = new ecProto.ecPacket(ECOpCodes.EC_OP_PARTFILE_DELETE); - m_download_status_ctrl.SelectedItemsToCommand(cmd); - m_amuleRemote.SendPacket(cmd); - } - } - - // - // Process reply for "stats" - // - delegate void StatsReplyCallback(ecProto.ecPacket packet); - public void StatsReplyInvoke(ecProto.ecPacket packet) - { - if ( InvokeRequired ) { - StatsReplyCallback d = new StatsReplyCallback(StatsReply); - Invoke(d, packet); - } else { - StatsReply(packet); - } - } - - void StatsReply(ecProto.ecPacket packet) - { - ecProto.ecTag t = null; - t = packet.SubTag(ECTagNames.EC_TAG_STATS_DL_SPEED); - int dl_speed = ((ecProto.ecTagInt)t).ValueInt(); - - t = packet.SubTag(ECTagNames.EC_TAG_STATS_UL_SPEED); - int ul_speed = ((ecProto.ecTagInt)t).ValueInt(); - //string server = ((ecProto.ecTagString)t).ToString(); - - ecProto.ecConnStateTag connState = - new ecProto.ecConnStateTag((ecProto.ecTagInt)packet.SubTag(ECTagNames.EC_TAG_CONNSTATE)); - - textBoxDownSpeed.Text = "Down:" + ValueToPrefix(dl_speed) + "/s"; - textBoxUpSpeed.Text = "Up:" + ValueToPrefix(ul_speed) + "/s"; - if ( connState.IsConnected() ) { - if (connState.IsConnectedED2K()) { - textLinktatus.Text = "ED2K: connected"; - //ecProto.ecTagString server_name = (ecProto.ecTagString)server.SubTag(ECTagNames.EC_TAG_SERVER_NAME); - //toolStripStatusServer.Text = server_name.StringValue(); - } else { - //toolStripStatusServer.Text = ""; - if (connState.IsConnectingED2K() ) { - textLinktatus.Text = "ED2K: connecting ..."; - } else { - textLinktatus.Text = "ED2K: disconnected"; - } - } - if (connState.IsConnectedKademlia()) { - //textLinktatus.Text = "KAD: connected"; - } - - } - } - - public void DloadQueueReply(ecProto.ecPacket packet) - { - ecProto.ecPacket reply = m_dload_info.HandlePacket(packet); - if ( reply != null ) { - m_amuleRemote.SendPacket(reply); - } - } - - public void SharedFilesReply(ecProto.ecPacket packet) - { - ecProto.ecPacket reply = m_shared_info.HandlePacket(packet); - if (reply != null) { - m_amuleRemote.SendPacket(reply); - } - } - - private void buttonXfer_Click(object sender, EventArgs e) - { - if ( panelMain.Controls[0] != m_download_status_ctrl ) { - panelMain.Controls.Clear(); - panelMain.Controls.Add(m_download_status_ctrl); - } - } - - private void buttonNetwork_Click(object sender, EventArgs e) - { - UpdateTimerProc(m_updateTimer, null); - } - - private void buttonSearch_Click(object sender, EventArgs e) - { - if ( panelMain.Controls[0] != m_search_ctrl ) { - panelMain.Controls.Clear(); - panelMain.Controls.Add(m_search_ctrl); - } - } - - private void buttonShared_Click(object sender, EventArgs e) - { - if ( panelMain.Controls[0] != m_shared_list_ctrl ) { - panelMain.Controls.Clear(); - panelMain.Controls.Add(m_shared_list_ctrl); - } - - } - - private void buttonAddLink_Click(object sender, EventArgs e) - { - AddLinkDialog dlg = new AddLinkDialog(); - if ( dlg.ShowDialog() == DialogResult.OK ) { - string link = dlg.textBoxLink.Text; - ecProto.ecPacket cmd = new ecProto.ecPacket(ECOpCodes.EC_OP_ADD_LINK); - ecProto.ecTagString linktag = new ecProto.ecTagString(ECTagNames.EC_TAG_STRING, link); - cmd.AddSubtag(linktag); - m_amuleRemote.SendPacket(cmd); - } - } - - private void buttonPrefs_Click(object sender, EventArgs e) - { - - } - - private void buttonAbout_Click(object sender, EventArgs e) - { - AboutBox dlg = new AboutBox(); - dlg.ShowDialog(); - } - - private void MainWindow_FormClosed(object sender, FormClosedEventArgs e) - { - m_settings.MainWindowSize = Size; - - m_settings.Save(); - } - - public string ValueToPrefix(Int64 value) - { - if ( value < 1024 ) { - return string.Format("{0} bytes", value); - } else if ( value < 1048576 ) { - return string.Format("{0:f} Kb", ((float)value) / 1024); - } else if ( value < 1073741824 ) { - return string.Format("{0:f} Mb", ((float)value) / 1048576); - } else { - return string.Format("{0:f} Gb", ((float)value) / 1073741824); - } - } - - } - - [SettingsGroupNameAttribute("Application")] - public class amuleSettings : ApplicationSettingsBase { - - [UserScopedSettingAttribute()] - public string Host - { - get { return (string)this["Host"]; } - set { this["Host"] = value; } - } - - [UserScopedSettingAttribute()] - public string Password - { - get { return (string)this["Password"]; } - set { this["Password"] = value; } - } - - [UserScopedSetting()] - [DefaultSettingValueAttribute("500, 400")] - public Size MainWindowSize - { - get { return (Size)this["MainWindowSize"]; } - set { this["MainWindowSize"] = value; } - } - - } - - public class amuleMainECHanler : amuleECHandler { - MainWindow m_owner = null; - public amuleMainECHanler(MainWindow o) - { - m_owner = o; - } - - public override void HandlePacket(ecProto.ecPacket packet) - { - ECOpCodes op = packet.Opcode(); - switch(op) { - case ECOpCodes.EC_OP_STATS: - m_owner.StatsReplyInvoke(packet); - break; - case ECOpCodes.EC_OP_DLOAD_QUEUE: - m_owner.DloadQueueReply(packet); - break; - case ECOpCodes.EC_OP_SHARED_FILES: - m_owner.SharedFilesReply(packet); - break; - case ECOpCodes.EC_OP_NOOP: - break; - default: - throw new Exception("Unhandled EC reply"); - } - } - } - - public class amuleListView : ListView { - protected int[] m_column_index; - - public amuleListView() - { - Dock = DockStyle.Fill; - View = View.Details; - DoubleBuffered = true; - FullRowSelect = true; - MultiSelect = true; - } - - public void LoadColumns(string [] columns, int [] width) - { - int i = 0; - foreach (string c in columns) { - if ( width[i] == 0 ) { - continue; - } - ColumnHeader h = new ColumnHeader(); - h.Text = c; - h.Width = width[i++]; - Columns.Add(h); - } - } - - public void CreateColumtAt(string name, int width, int index) - { - ColumnHeader h = new ColumnHeader(); - h.Text = name; - h.Width = width; - h.Tag = index; - Columns.Insert(m_column_index[index], h); - } - public void RemoveColumnAt(int index) - { - Columns.RemoveAt(m_column_index[index]); - } - - public void AppendItemToCtxMenu(ContextMenuStrip menu, string text, - object tag, bool check_state, EventHandler target) - { - ToolStripMenuItem it = new ToolStripMenuItem(text); - it.Click += target; - it.CheckState = check_state ? CheckState.Checked : CheckState.Unchecked; - it.Tag = tag; - menu.Items.Add(it); - } - } - - public class amuleSharedFilesList : amuleListView, IContainerUI { - public amuleSharedFilesList() - { - string[] columns = { "File name", "Size" }; - int[] width = { 300, 100, 100, 100 }; - LoadColumns(columns, width); - } - - #region IContainerUI Members - - delegate void UpdateCallback(); - void IContainerUI.MyEndUpdate() - { - if (InvokeRequired) { - UpdateCallback d = new UpdateCallback(EndUpdate); - Invoke(d); - } else { - EndUpdate(); - } - } - - void IContainerUI.MyBeginUpdate() - { - if (InvokeRequired) { - UpdateCallback d = new UpdateCallback(BeginUpdate); - Invoke(d); - } else { - BeginUpdate(); - } - } - - delegate void ItemCallback(SharedFileItem i); - - void IContainerUI.InsertItem(object i) - { - SharedFileItem it = i as SharedFileItem; - if (InvokeRequired) { - ItemCallback d = new ItemCallback(DoInsertItem); - Invoke(d, it); - } else { - DoInsertItem(it); - } - } - - void IContainerUI.UpdateItem(object i) - { - throw new Exception("The method or operation is not implemented."); - } - - void DoInsertItem(SharedFileItem i) - { - ListViewItem it = new ListViewItem(i.Name); - - it.SubItems.Add(new ListViewItem.ListViewSubItem(it, i.Size)); - - Items.Add(it); - - i.UiItem = it; - } - - void DoUpdateItem(SharedFileItem i) - { - ListViewItem it = i.UiItem as ListViewItem; - //Items - } - - #endregion - } -} diff --git a/src/remote-gui.net/MainWindow.resx b/src/remote-gui.net/MainWindow.resx deleted file mode 100644 index ff31a6db..00000000 --- a/src/remote-gui.net/MainWindow.resx +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/src/remote-gui.net/Program.cs b/src/remote-gui.net/Program.cs deleted file mode 100644 index 8a3b6b39..00000000 --- a/src/remote-gui.net/Program.cs +++ /dev/null @@ -1,44 +0,0 @@ -// -// This file is part of the aMule Project. -// -// Copyright (c) 2003-2008 aMule Team ( admin@amule.org / http://www.amule.org ) -// Copyright (c) 2003-2008 Froenchenko Leonid ( lfroen@gmail.com / http://www.amule.org ) -// -// 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 -// -using System; -using System.Collections.Generic; -using System.Windows.Forms; - -namespace amule.net -{ - static class Program - { - /// - /// The main entry point for the application. - /// - [STAThread] - static void Main() - { - Application.EnableVisualStyles(); - Application.SetCompatibleTextRenderingDefault(false); - Application.Run(new MainWindow()); - } - } -} diff --git a/src/remote-gui.net/Properties/AssemblyInfo.cs b/src/remote-gui.net/Properties/AssemblyInfo.cs deleted file mode 100755 index f40036ce..00000000 --- a/src/remote-gui.net/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("amule-remote.net")] -[assembly: AssemblyDescription("aMule remote control")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("remote-gui.net")] -[assembly: AssemblyCopyright("Copyright © 2007-2008 aMule Team")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("717566ab-386c-42db-a3cf-bb2b5cd0939d")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -[assembly: AssemblyVersion("0.0.1.0")] -[assembly: AssemblyFileVersion("0.0.1.0")] diff --git a/src/remote-gui.net/Properties/Resources.Designer.cs b/src/remote-gui.net/Properties/Resources.Designer.cs deleted file mode 100755 index e45f6b35..00000000 --- a/src/remote-gui.net/Properties/Resources.Designer.cs +++ /dev/null @@ -1,126 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:2.0.50727.832 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace amule.net.Properties { - using System; - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("amule.net.Properties.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - internal static System.Drawing.Bitmap Toolbar_About { - get { - object obj = ResourceManager.GetObject("Toolbar_About", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap Toolbar_Disconnect { - get { - object obj = ResourceManager.GetObject("Toolbar_Disconnect", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap Toolbar_Import { - get { - object obj = ResourceManager.GetObject("Toolbar_Import", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap Toolbar_Network { - get { - object obj = ResourceManager.GetObject("Toolbar_Network", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap Toolbar_Prefs { - get { - object obj = ResourceManager.GetObject("Toolbar_Prefs", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap Toolbar_Search { - get { - object obj = ResourceManager.GetObject("Toolbar_Search", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap Toolbar_Shared { - get { - object obj = ResourceManager.GetObject("Toolbar_Shared", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap Toolbar_Stats { - get { - object obj = ResourceManager.GetObject("Toolbar_Stats", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap Toolbar_Transfers { - get { - object obj = ResourceManager.GetObject("Toolbar_Transfers", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - } -} diff --git a/src/remote-gui.net/Properties/Resources.resx b/src/remote-gui.net/Properties/Resources.resx deleted file mode 100755 index 090df9b7..00000000 --- a/src/remote-gui.net/Properties/Resources.resx +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - ..\images\Toolbar_About.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\images\Toolbar_Disconnect.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\images\Toolbar_Import.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\images\Toolbar_Network.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\images\Toolbar_Prefs.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\images\Toolbar_Search.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\images\Toolbar_Shared.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\images\Toolbar_Stats.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\images\Toolbar_Transfers.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - \ No newline at end of file diff --git a/src/remote-gui.net/Properties/Settings.Designer.cs b/src/remote-gui.net/Properties/Settings.Designer.cs deleted file mode 100755 index 737b7d2f..00000000 --- a/src/remote-gui.net/Properties/Settings.Designer.cs +++ /dev/null @@ -1,26 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:2.0.50727.832 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace amule.net.Properties { - - - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "8.0.0.0")] - internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { - - private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - - public static Settings Default { - get { - return defaultInstance; - } - } - } -} diff --git a/src/remote-gui.net/Properties/Settings.settings b/src/remote-gui.net/Properties/Settings.settings deleted file mode 100755 index abf36c5d..00000000 --- a/src/remote-gui.net/Properties/Settings.settings +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/remote-gui.net/SearchControl.Designer.cs b/src/remote-gui.net/SearchControl.Designer.cs deleted file mode 100755 index 949686fc..00000000 --- a/src/remote-gui.net/SearchControl.Designer.cs +++ /dev/null @@ -1,106 +0,0 @@ -namespace amule.net { - partial class amuleSearchControl { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if ( disposing && (components != null) ) { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Component Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); - this.textBoxSearch = new System.Windows.Forms.TextBox(); - this.buttonStartSearch = new System.Windows.Forms.Button(); - this.comboBoxType = new System.Windows.Forms.ComboBox(); - this.tableLayoutPanel1.SuspendLayout(); - this.SuspendLayout(); - // - // tableLayoutPanel1 - // - this.tableLayoutPanel1.AutoSize = true; - this.tableLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.tableLayoutPanel1.ColumnCount = 3; - this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 44.69027F)); - this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 94F)); - this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 55.30973F)); - this.tableLayoutPanel1.Controls.Add(this.textBoxSearch, 0, 0); - this.tableLayoutPanel1.Controls.Add(this.buttonStartSearch, 2, 0); - this.tableLayoutPanel1.Controls.Add(this.comboBoxType, 1, 0); - this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); - this.tableLayoutPanel1.Name = "tableLayoutPanel1"; - this.tableLayoutPanel1.RowCount = 3; - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 12.77533F)); - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 87.22467F)); - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); - this.tableLayoutPanel1.Size = new System.Drawing.Size(452, 248); - this.tableLayoutPanel1.TabIndex = 0; - // - // textBoxSearch - // - this.textBoxSearch.Location = new System.Drawing.Point(3, 3); - this.textBoxSearch.Name = "textBoxSearch"; - this.textBoxSearch.Size = new System.Drawing.Size(153, 20); - this.textBoxSearch.TabIndex = 2; - // - // buttonStartSearch - // - this.buttonStartSearch.Location = new System.Drawing.Point(256, 3); - this.buttonStartSearch.Name = "buttonStartSearch"; - this.buttonStartSearch.Size = new System.Drawing.Size(60, 20); - this.buttonStartSearch.TabIndex = 3; - this.buttonStartSearch.Text = "Search"; - this.buttonStartSearch.UseVisualStyleBackColor = true; - // - // comboBoxType - // - this.comboBoxType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.comboBoxType.FormattingEnabled = true; - this.comboBoxType.Items.AddRange(new object[] { - "Local", - "Global", - "Kad"}); - this.comboBoxType.Location = new System.Drawing.Point(162, 3); - this.comboBoxType.Name = "comboBoxType"; - this.comboBoxType.Size = new System.Drawing.Size(70, 21); - this.comboBoxType.TabIndex = 4; - // - // amuleSearchControl - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.Controls.Add(this.tableLayoutPanel1); - this.Name = "amuleSearchControl"; - this.Size = new System.Drawing.Size(452, 248); - this.tableLayoutPanel1.ResumeLayout(false); - this.tableLayoutPanel1.PerformLayout(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; - private System.Windows.Forms.TextBox textBoxSearch; - private System.Windows.Forms.Button buttonStartSearch; - private System.Windows.Forms.ComboBox comboBoxType; - } -} diff --git a/src/remote-gui.net/SearchControl.cs b/src/remote-gui.net/SearchControl.cs deleted file mode 100755 index 6ee01d18..00000000 --- a/src/remote-gui.net/SearchControl.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Drawing; -using System.Data; -using System.Text; -using System.Windows.Forms; - -namespace amule.net { - public partial class amuleSearchControl : UserControl { - public amuleSearchControl() - { - InitializeComponent(); - } - } -} diff --git a/src/remote-gui.net/SearchControl.resx b/src/remote-gui.net/SearchControl.resx deleted file mode 100755 index ff31a6db..00000000 --- a/src/remote-gui.net/SearchControl.resx +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/src/remote-gui.net/amuleData.cs b/src/remote-gui.net/amuleData.cs deleted file mode 100755 index 1ddfc18a..00000000 --- a/src/remote-gui.net/amuleData.cs +++ /dev/null @@ -1,723 +0,0 @@ -// -// This file is part of the aMule Project. -// -// Copyright (c) 2003-2008 aMule Team ( admin@amule.org / http://www.amule.org ) -// Copyright (c) 2003-2008 Froenchenko Leonid ( lfroen@gmail.com / http://www.amule.org ) -// -// 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 -// -using System; -using System.IO; -using System.Collections.Generic; -using System.Security.Cryptography; - -namespace amule.net -{ - public class FileGap : IComparable { - public Int64 m_start, m_end; - - public int CompareTo(object obj) - { - if ( obj is FileGap ) { - FileGap temp = (FileGap)obj; - return m_start.CompareTo(temp.m_start); - } - throw new ArgumentException("object is not a FileGap"); - } - } - - public class RGB { - public byte m_R, m_G, m_B; - - unsafe public void WriteToBuffAlpha(UInt32* ptr) - { - UInt32 val = (UInt32)((m_R << 16) | (m_G << 8) | m_B); - val |= 0xff000000; - *ptr = val; - } - - unsafe public void WriteToBuffWithModifier(UInt32* ptr, byte modif) - { - byte R = (m_R > modif) ? (byte)(m_R - modif) : (byte)0; - byte G = (m_G > modif) ? (byte)(m_G - modif) : (byte)0; - byte B = (m_B > modif) ? (byte)(m_B - modif) : (byte)0; - UInt32 val = (UInt32)((R << 16) | (G << 8) | B); - val |= 0xff000000; - *ptr = val; - } - - public Int32 Color - { - get { return (Int32)((m_R << 16) | (m_G << 8) | m_B); } - set - { - m_R = (byte)(value >> 16); - m_G = (byte)((value >> 8) & 0xff); - m_B = (byte)(value & 0xff); - } - } - - } - - public class FileColoredGap : FileGap { - public Int32 m_color; - - } - - public class GapBuffer { - public FileGap[] m_buffer; - - public GapBuffer(byte[] raw_buffer, int size) - { - BinaryReader br = new BinaryReader(new MemoryStream(raw_buffer)); - int bufsize = size / (2 * sizeof(Int64)); - m_buffer = new FileGap[bufsize]; - for ( int i = 0; i < bufsize; i++ ) { - m_buffer[i] = new FileGap(); - m_buffer[i].m_start = System.Net.IPAddress.NetworkToHostOrder(br.ReadInt64()); - m_buffer[i].m_end = System.Net.IPAddress.NetworkToHostOrder(br.ReadInt64()); - } - System.Array.Sort(m_buffer); - } - } - - public class ColoredGapBuffer { - public FileColoredGap[] m_buffer; - - public ColoredGapBuffer(int size) - { - m_buffer = new FileColoredGap[size]; - for ( int i = 0; i < size; i++ ) { - m_buffer[i] = new FileColoredGap(); - } - m_buffer[0].m_start = 0; - m_buffer[0].m_end = 0; - m_buffer[0].m_color = 0; - } - } - - /// - /// RLE implementation. I need only decoder part - /// - public class RLE_Data { - bool m_use_diff; - int m_len; - byte[] m_enc_buff; - byte[] m_buff; - - public RLE_Data(int len, bool use_diff) - { - m_len = len; - m_use_diff = use_diff; - // in worst case 2-byte sequence encoded as 3. So, data can grow at 1/3 - m_enc_buff = new byte[m_len*4/3 + 1]; - m_buff = new byte[m_len]; - } - - public byte[] Buffer - { - get { return m_buff; } - } - - public int Length - { - get { return m_len; } - } - - public void Realloc(int size) - { - if ( size == m_len ) { - return; - } - - if ( (size > m_len) && (size > m_buff.Length) ) { - m_buff = new byte[size]; - m_enc_buff = new byte[size * 4 / 3 + 1]; - } - m_len = size; - } - - public void Decode(byte [] buff, int start_offset) - { - int len = buff.Length; - - int i = start_offset, j = 0; - while ( j != m_len ) { - if ( i < (len -1) ) { - if (buff[i+1] == buff[i]) { - // this is sequence - //memset(m_enc_buff + j, buff[i], buff[i + 2]); - for(int k = 0; k < buff[i + 2]; k++) { - m_enc_buff[j + k] = buff[i]; - } - j += buff[i + 2]; - i += 3; - } else { - // this is single byte - m_enc_buff[j++] = buff[i++]; - } - } else { - // only 1 byte left in encoded data - it can't be sequence - m_enc_buff[j++] = buff[i++]; - // if there's no more data, but buffer end is not reached, - // it must be error in some point - if ( j != m_len ) { - Console.WriteLine("RLE_Data: decoding error. {0} bytes decoded to {1} instead of {2}", - len, j, m_len); - throw new Exception("RLE_Data: decoding error"); - } - } - } - if ( m_use_diff ) { - for (int k = 0; k < m_len; k++) { - m_buff[k] ^= m_enc_buff[k]; - } - } - } - } - - public class PartFileEncoderData { - public RLE_Data m_part_status; - public RLE_Data m_gap_status; - - public PartFileEncoderData(int partcount, int gapcount) - { - m_part_status = new RLE_Data(partcount+1, true); - m_gap_status = new RLE_Data(gapcount*sizeof(Int64)+1, true); - } - - public void Decode(byte [] gapdata, byte [] partdata) - { - m_part_status.Decode(partdata, 0); - - // in a first dword - real size - //uint32 gapsize = ENDIAN_NTOHL(RawPeekUInt32(gapdata)); - //gapdata += sizeof(uint32); - //m_gap_status.Realloc(gapsize * 2 * sizeof(uint64)); - Int32 gapsize = System.Net.IPAddress.NetworkToHostOrder( - (Int32)gapdata[0] | ((Int32)gapdata[1] << 8) | - ((Int32)gapdata[2] << 16) | ((Int32)gapdata[3] << 24)); - - m_gap_status.Realloc(gapsize*2*sizeof(Int64)); - m_gap_status.Decode(gapdata, 4); - } - } - - // - // I: ID for this kind of tag - class amuleTag2ItemConnector { - virtual public I ID(ecProto.ecTag tag) - { - return default(I); - } - - virtual public ecProto.ecTag CreateTag(I value) - { - return null; - } - } - - public interface IContainerUI { - void MyEndUpdate(); - void MyBeginUpdate(); - - void InsertItem(object i); - void UpdateItem(object i); - } - - // - // T: item in container - abstract public class amuleGenericContainer { - private enum REQ_STATE { IDLE, REQ_SENT, FULL_REQ_SENT }; - REQ_STATE m_state = REQ_STATE.IDLE; - - LinkedList m_items = new LinkedList(); - Dictionary m_items_hash = new Dictionary(32); - - ECOpCodes m_req_cmd; - - ECTagNames m_item_tagname; - - bool m_inc_tags = true; - - protected IContainerUI m_owner; - - public amuleGenericContainer(ECOpCodes req_cmd, ECTagNames item_tagname, IContainerUI owner) - { - m_owner = owner; - m_req_cmd = req_cmd; - m_item_tagname = item_tagname; - } - - protected virtual bool Phase1Done() - { - return true; - } - - public LinkedList Items - { - get { return m_items; } - } - - protected virtual ecProto.ecTag CreateItemTag(ecProto.ecMD5 id) - { - return null; - } - - public ecProto.ecPacket ReQuery() - { - // can not issue new query until previous one is replied - if ( m_state != REQ_STATE.IDLE ) { - return null; - } - - ecProto.ecPacket request = new ecProto.ecPacket(m_req_cmd, - m_inc_tags ? EC_DETAIL_LEVEL.EC_DETAIL_INC_UPDATE : EC_DETAIL_LEVEL.EC_DETAIL_UPDATE); - m_state = REQ_STATE.REQ_SENT; - - return request; - } - - void ProcessUpdate(ecProto.ecPacket packet, ecProto.ecPacket full_req) - { - m_owner.MyBeginUpdate(); - LinkedList.Enumerator i = packet.GetTagIterator(); - while (i.MoveNext()) - { - ecProto.ecTag t = i.Current; - // sometimes reply contains additional tags - if ( t.Name() != m_item_tagname ) { - continue; - } - ecProto.ecMD5 item_id = ((ecProto.ecTagMD5)t).ValueMD5(); - if ( m_items_hash.ContainsKey(item_id) ) { - T item = m_items_hash[item_id]; - ProcessItemUpdate(item, t); - - if ( m_owner != null ) { - m_owner.UpdateItem(item); - } - } else { - if ( m_inc_tags ) { - T item = CreateItem(t); - m_items.AddLast(item); - m_items_hash[item_id] = item; - - if (m_owner != null) { - m_owner.InsertItem(item); - } - - } else { - full_req.AddSubtag(CreateItemTag(item_id)); - } - } - // - // now process item deletion - // - // TODO - } - m_owner.MyEndUpdate(); - } - - // - // derived class must provide - // - abstract protected void ProcessItemUpdate(T item, ecProto.ecTag tag); - - abstract protected T CreateItem(ecProto.ecTag tag); - - public ecProto.ecPacket HandlePacket(ecProto.ecPacket p) - { - ecProto.ecPacket reply = null; - switch (m_state) { - case REQ_STATE.IDLE: - throw new Exception("Should not get packet in IDLE state"); - case REQ_STATE.REQ_SENT: - m_state = REQ_STATE.IDLE; - if ( !Phase1Done() ) { - break; - } - ecProto.ecPacket full_request = new ecProto.ecPacket(m_req_cmd); - ProcessUpdate(p, full_request); - - // // Phase 3: request full info about files we don't have yet - if ( !m_inc_tags && (full_request.SubtagCount() != 0)) { - reply = full_request; - m_state = REQ_STATE.FULL_REQ_SENT; - } - - break; - case REQ_STATE.FULL_REQ_SENT: - m_state = REQ_STATE.IDLE; - break; - } - return reply; - } - } - - public class amuleFileItem { - protected ecProto.ecMD5 m_id; - - protected string m_filename; - protected Int64 m_filesize; - - protected const Int32 FILE_PARTSIZE = 9728000; - object m_ui_item; - - public amuleFileItem(ecProto.ecMD5 id, string name, Int64 size) - { - m_id = id; - m_filename = name; - m_filesize = size; - } - - public ecProto.ecMD5 ID - { - get { return m_id; } - } - - public string ValueToPrefix(Int64 value) - { - if (value < 1024) - { - return string.Format("{0} bytes", value); - } - else if (value < 1048576) - { - return string.Format("{0:f} Kb", ((float)value) / 1024); - } - else if (value < 1073741824) - { - return string.Format("{0:f} Mb", ((float)value) / 1048576); - } - else - { - return string.Format("{0:f} Gb", ((float)value) / 1073741824); - } - } - - public string Name - { - get { return m_filename; } - } - - public string Size - { - get { return ValueToPrefix(m_filesize); } - } - public object UiItem - { - get { return m_ui_item; } - set { m_ui_item = value; } - } - } - - public class DownloadQueueItem : amuleFileItem { - Int64 m_size_xfered, m_size_done; - Int32 m_speed; - - Int32 m_src_count, m_non_current_src_count, m_xfer_src_count, m_a4af_src_count; - - PartFileEncoderData m_decoder; - - // - // Used for colored status - // - ColoredGapBuffer m_color_gap_buff; - GapBuffer m_req_parts; - - // - // Format24BppRgb or similar - // - RGB[] m_color_line; - - public static byte[] m_modifiers; - - public RGB [] ColorLine - { - get { return m_color_line; } - } - - public static byte[] Get_3D_Modifiers() - { - return m_modifiers; - } - - public DownloadQueueItem(ecProto.ecMD5 id, string name, Int64 size, PartFileEncoderData encoder) - : base(id, name, size) - { - m_decoder = encoder; - m_color_gap_buff = new ColoredGapBuffer((Int32)(size / FILE_PARTSIZE) + 1 + 1); - } - - public static void InitDraw3DModifiers(int height) - { - if ( m_modifiers != null && m_modifiers.Length == height ) { - return; - } - m_modifiers = new byte[height]; - for ( int i = 0; i < height; i++ ) { - double curr_mod = 30 * (1 + System.Math.Cos((2*System.Math.PI)*(height-(((double)i)/height)))); - m_modifiers[i] = (byte)System.Math.Floor(curr_mod); - } - } - - public void AllocColorLine(int size) - { - m_color_line = new RGB[size]; - for ( int i = 0; i < m_color_line.Length; i++ ) { - m_color_line[i] = new RGB(); - } - } - - public void UpdateItem(ecProto.ecTag tag) - { - ecProto.ecTagInt itag = (ecProto.ecTagInt)tag.SubTag(ECTagNames.EC_TAG_PARTFILE_SIZE_DONE); - if ( itag != null ) { - m_size_done = itag.Value64(); - } - itag = (ecProto.ecTagInt)tag.SubTag(ECTagNames.EC_TAG_PARTFILE_SIZE_XFER); - if ( itag != null ) { - m_size_xfered = itag.Value64(); - } - - itag = (ecProto.ecTagInt)tag.SubTag(ECTagNames.EC_TAG_PARTFILE_SPEED); - if ( itag != null ) { - m_speed = (Int32)itag.Value64(); - } - - itag = (ecProto.ecTagInt)tag.SubTag(ECTagNames.EC_TAG_PARTFILE_SOURCE_COUNT); - if ( itag != null ) { - m_src_count = (Int32)itag.Value64(); - } - - itag = (ecProto.ecTagInt)tag.SubTag(ECTagNames.EC_TAG_PARTFILE_SOURCE_COUNT_A4AF); - if ( itag != null ) { - m_a4af_src_count = (Int32)itag.Value64(); - } - - itag = (ecProto.ecTagInt)tag.SubTag(ECTagNames.EC_TAG_PARTFILE_SOURCE_COUNT_NOT_CURRENT); - if ( itag != null ) { - m_non_current_src_count = (Int32)itag.Value64(); - } - - itag = (ecProto.ecTagInt)tag.SubTag(ECTagNames.EC_TAG_PARTFILE_SOURCE_COUNT_XFER); - if ( itag != null ) { - m_xfer_src_count = (Int32)itag.Value64(); - } - - ecProto.ecTagCustom gapstat = (ecProto.ecTagCustom)tag.SubTag(ECTagNames.EC_TAG_PARTFILE_GAP_STATUS); - ecProto.ecTagCustom partstat = (ecProto.ecTagCustom)tag.SubTag(ECTagNames.EC_TAG_PARTFILE_PART_STATUS); - m_decoder.Decode(gapstat.Value(), partstat.Value()); - - ecProto.ecTagCustom reqstat = (ecProto.ecTagCustom)tag.SubTag(ECTagNames.EC_TAG_PARTFILE_REQ_STATUS); - BinaryReader br = new BinaryReader(new MemoryStream(reqstat.Value())); - - m_req_parts = new GapBuffer(reqstat.Value(), reqstat.Value().Length); - DrawLine(); - } - - public void DrawLine() - { - GapBuffer status_gaps = new GapBuffer(m_decoder.m_gap_status.Buffer, m_decoder.m_gap_status.Length); - byte[] part_info = m_decoder.m_part_status.Buffer; - - int colored_gaps_size = 0; - for ( int j = 0; j < status_gaps.m_buffer.Length; j++ ) { - Int64 gap_start = status_gaps.m_buffer[j].m_start; - Int64 gap_end = status_gaps.m_buffer[j].m_end; - Int64 start = gap_start / FILE_PARTSIZE; - Int64 end = (gap_end / FILE_PARTSIZE) + 1; - - // - // Order is RGB - // - Int32 color = 0xff0000; - for ( Int64 i = start; i < end; i++ ) { - if ( part_info[i] != 0 ) { - int blue = 210 - (22 * (part_info[i] - 1)); - if ( blue < 0 ) { blue = 0; } - color = (blue << 8) | 255; - } - Int64 fill_gap_begin = ((i == start) ? gap_start : FILE_PARTSIZE * i); - Int64 fill_gap_end = ((i == (end - 1)) ? gap_end : FILE_PARTSIZE * (i + 1)); - - if ( (m_color_gap_buff.m_buffer[colored_gaps_size].m_end == fill_gap_begin) && - (m_color_gap_buff.m_buffer[colored_gaps_size].m_color == color) ) { - m_color_gap_buff.m_buffer[colored_gaps_size].m_end = fill_gap_end; - } else { - colored_gaps_size++; - m_color_gap_buff.m_buffer[colored_gaps_size].m_start = fill_gap_begin; - m_color_gap_buff.m_buffer[colored_gaps_size].m_end = fill_gap_end; - m_color_gap_buff.m_buffer[colored_gaps_size].m_color = color; - } - } - } - // - // Now actual drawing - // - int width = m_color_line.Length; - for ( int i = 0; i < width; i++ ) { - m_color_line[i].Color = 0x7f7f7f; - } - if ( m_filesize < width ) { - // - // if file is that small, draw it in single step - // - if ( m_req_parts.m_buffer.Length != 0 ) { - for ( int i = 0; i < width; i++ ) { - // yellow - m_color_line[i].Color = 0xffd000; - } - } else if ( m_color_gap_buff.m_buffer.Length != 0 ) { - for ( int i = 0; i < width; i++ ) { - m_color_line[i].Color = m_color_gap_buff.m_buffer[i].m_color; - } - } - } else { - Int32 factor = (Int32)(m_filesize / width); - for ( int i = 1; i <= colored_gaps_size; i++ ) { - Int32 start = (Int32)(m_color_gap_buff.m_buffer[i].m_start / factor); - Int32 end = (Int32)(m_color_gap_buff.m_buffer[i].m_end / factor); - for ( Int32 j = start; j < end; j++ ) { - m_color_line[j].Color = m_color_gap_buff.m_buffer[i].m_color; - } - } - foreach ( FileGap g in m_req_parts.m_buffer ) { - Int32 start = (Int32)(g.m_start / factor); - Int32 end = (Int32)(g.m_end / factor); - for ( Int32 j = start; j < end; j++ ) { - m_color_line[j].Color = 0xffd000; - } - } - } - } - - public string SizeDone - { - get { return ValueToPrefix(m_size_done); } - } - public string Speed - { - get { return (m_speed == 0) ? "" : (ValueToPrefix(m_speed) + "/s"); } - } - public string PercentDone - { - get { return String.Format("{0} %", m_size_done * 100 / m_filesize); } - } - public string Sources - { - get - { - string result; - if (m_non_current_src_count != 0) { - result = String.Format("{0} / {1}", - m_src_count - m_non_current_src_count, m_src_count); - } else { - result = String.Format("{0}", m_src_count); - } - if (m_a4af_src_count != 0) { - result += String.Format(" +{0}", m_a4af_src_count); - } - if ( m_xfer_src_count != 0 ) { - result += String.Format(" ({0})", m_xfer_src_count); - } - return result; - } - } - } - - public class DownloadQueueContainer : amuleGenericContainer { - Dictionary m_enc_map; - - private int m_new_item_status_length; - - public int NewItemStatusLineLength - { - get { return m_new_item_status_length; } - set { m_new_item_status_length = value; } - } - - public DownloadQueueContainer(IContainerUI owner) - : base(ECOpCodes.EC_OP_GET_DLOAD_QUEUE, ECTagNames.EC_TAG_PARTFILE, owner) - { - m_enc_map = new Dictionary(); - } - - override protected void ProcessItemUpdate(DownloadQueueItem item, ecProto.ecTag tag) - { - item.UpdateItem(tag); - - ecProto.ecMD5 id = ((ecProto.ecTagMD5)tag).ValueMD5(); - if ( !m_enc_map.ContainsKey(id) ) { - throw new Exception("No RLE decoder for download queue item"); - } - } - - override protected DownloadQueueItem CreateItem(ecProto.ecTag tag) - { - ecProto.ecMD5 id = ((ecProto.ecTagMD5)tag).ValueMD5(); - string filename = ((ecProto.ecTagString)tag.SubTag(ECTagNames.EC_TAG_PARTFILE_NAME)).StringValue(); - Int64 filesize = (Int64)((ecProto.ecTagInt)tag.SubTag(ECTagNames.EC_TAG_PARTFILE_SIZE_FULL)).Value64(); - - PartFileEncoderData e = new PartFileEncoderData((int)(filesize / 9728000), 10); - m_enc_map[id] = e; - - DownloadQueueItem i = new DownloadQueueItem(id, filename, filesize, e); - - i.AllocColorLine(m_new_item_status_length); - - i.UpdateItem(tag); - - return i; - } - } - - public class SharedFileItem : amuleFileItem { - public SharedFileItem(ecProto.ecMD5 id, string name, Int64 size) - : base(id, name, size) - { - } - } - - class SharedFileListContainer : amuleGenericContainer - { - public SharedFileListContainer(IContainerUI owner) - : base(ECOpCodes.EC_OP_GET_SHARED_FILES, ECTagNames.EC_TAG_KNOWNFILE, owner) - { - } - - override protected void ProcessItemUpdate(SharedFileItem item, ecProto.ecTag tag) - { - } - - override protected SharedFileItem CreateItem(ecProto.ecTag tag) - { - ecProto.ecMD5 id = ((ecProto.ecTagMD5)tag).ValueMD5(); - string filename = ((ecProto.ecTagString)tag.SubTag(ECTagNames.EC_TAG_PARTFILE_NAME)).StringValue(); - Int64 filesize = (Int64)((ecProto.ecTagInt)tag.SubTag(ECTagNames.EC_TAG_PARTFILE_SIZE_FULL)).Value64(); - SharedFileItem i = new SharedFileItem(id, filename, filesize); - - //i.UpdateItem(tag); - - return i; - } - } - -} diff --git a/src/remote-gui.net/amuleRemote.cs b/src/remote-gui.net/amuleRemote.cs deleted file mode 100644 index 87326270..00000000 --- a/src/remote-gui.net/amuleRemote.cs +++ /dev/null @@ -1,299 +0,0 @@ -// -// This file is part of the aMule Project. -// -// Copyright (c) 2003-2008 aMule Team ( admin@amule.org / http://www.amule.org ) -// Copyright (c) 2003-2008 Froenchenko Leonid ( lfroen@gmail.com / http://www.amule.org ) -// -// 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 -// -using System; -using System.IO; -using System.Security; -using System.Security.Permissions; -using System.Threading; -using System.Collections.Generic; -using System.Text; -using System.Net; -using System.Net.Sockets; - -namespace amule.net -{ - - // Define the state object for the callback. - // Use hostName to correlate calls with the proper result. - public class ResolveState { - IPHostEntry resolvedIPs; - - public string errorMsg; - - public IPHostEntry IPs - { - get { return resolvedIPs; } - set { resolvedIPs = value; } - } - } - - public class ConnectState { - public Socket sock; - public string errorMsg; - - public ConnectState(Socket s) - { - sock = s; - } - } - - public abstract class amuleECHandler { - public amuleECHandler() - { - } - - public abstract void HandlePacket(ecProto.ecPacket packet); - } - - class amuleLogicHandler : amuleECHandler { - amuleRemote m_owner; - bool m_auth_result = false; - - public amuleLogicHandler(amuleRemote o) - { - m_owner = o; - } - - public override void HandlePacket(ecProto.ecPacket packet) - { - if ( packet.Opcode() == ECOpCodes.EC_OP_AUTH_OK ) { - Console.WriteLine("amuleLogicHandler : Authenticated OK"); - m_auth_result = true; - m_owner.m_packet_op_Done.Set(); - } else { - Console.WriteLine("amuleLogicHandler : Authentication failed. Core reply was {0}", packet.Opcode()); - } - } - - public bool AuthResult() - { - return m_auth_result; - } - } - - class amuleRemote { - amuleECHandler m_handler = null; - - public ManualResetEvent m_packet_op_Done = new ManualResetEvent(false); - - // Record the IPs in the state object for later use. - static void GetHostEntryCallback(IAsyncResult ar) - { - ResolveState ioContext = (ResolveState)ar.AsyncState; - try { - ioContext.IPs = Dns.EndGetHostEntry(ar); - } catch (SocketException e) { - ioContext.errorMsg = e.Message; - } - } - - Socket m_s; - - static void ConnectCallback(IAsyncResult ar) - { - // Retrieve the socket from the state object. - ConnectState state = (ConnectState)ar.AsyncState; - try { - // Complete the connection. - state.sock.EndConnect(ar); - - Console.WriteLine("Socket connected to {0}", - state.sock.RemoteEndPoint.ToString()); - - } catch (Exception e) { - state.errorMsg = e.Message; - } - } - - byte[] m_rx_buffer = new byte[32 * 1024]; - MemoryStream m_rx_mem_stream = null; - int m_rx_byte_count = 0; - int m_rx_remaining_count = 0; - - byte[] m_tx_buffer = new byte[32 * 1024]; - MemoryStream m_tx_mem_stream = null; - - //LinkedList m_tx_queue; - BinaryReader m_sock_reader = null; - BinaryWriter m_sock_writer = null; - - static void RxCallback(IAsyncResult ar) - { - amuleRemote o = (amuleRemote)ar.AsyncState; - Console.WriteLine("RxCallback signalled, calling EndReceive"); - int bytesRead = o.m_s.EndReceive(ar); - if ( bytesRead == 0 ) { - // remote side closed connection. - // indicate error to caller - o.m_rx_byte_count = -1; - return; - } - o.m_rx_remaining_count -= bytesRead; - Console.WriteLine("RxCallback: got {0} bytes, waiting for {1}", - bytesRead, o.m_rx_remaining_count); - // are we still waiting for flags and size? - if (o.m_rx_byte_count < 8) { - if ((o.m_rx_byte_count + bytesRead) >= 8) { - // got flags and packet size - may proceed. - Int32 flags = o.m_sock_reader.ReadInt32(); - Int32 val32 = o.m_sock_reader.ReadInt32(); - - o.m_rx_remaining_count = (int)IPAddress.NetworkToHostOrder(val32) - (bytesRead - 8); - Console.WriteLine("RxCallback: expecting packet size={0}", o.m_rx_remaining_count); - if ( o.m_rx_buffer.Length <= (o.m_rx_remaining_count+o.m_rx_byte_count) ) { - byte [] new_buffer = new byte[o.m_rx_remaining_count + o.m_rx_buffer.Length + 1]; - o.m_rx_buffer.CopyTo(new_buffer, 0); - o.m_rx_buffer = new_buffer; - // - // update stream reader with new buffer - // - o.m_rx_mem_stream = new MemoryStream(o.m_rx_buffer); - o.m_sock_reader = new BinaryReader(o.m_rx_mem_stream); - } - } - } else { - if ( o.m_rx_remaining_count == 0 ) { - // - // Packet received - call handler - // - if ( o.m_handler != null ) { - o.m_rx_mem_stream.Seek(0, SeekOrigin.Begin); - Console.WriteLine("Packet received - call handler"); - ecProto.ecPacket p = new ecProto.ecPacket(o.m_sock_reader); - //m_packet_op_Done.Set(); - o.m_handler.HandlePacket(p); - Console.WriteLine("Handler done"); - } - Console.WriteLine("Signalling event"); - //m_packet_op_Done.Set(); - // - // Keep waiting for more packets - // - o.StartReceive(); - return; - } - } - o.m_rx_byte_count += bytesRead; - - // not just yet - keep waiting - o.m_s.BeginReceive(o.m_rx_buffer, o.m_rx_byte_count, o.m_rx_remaining_count, - SocketFlags.None, new AsyncCallback(RxCallback), o); - } - - static void TxCallback(IAsyncResult ar) - { - amuleRemote o = (amuleRemote)ar.AsyncState; - Console.WriteLine("TxCallback signalled, calling EndWrite"); - o.m_s.EndSend(ar); - } - - public IAsyncResult SendPacket(ecProto.ecPacket packet) - { - m_tx_mem_stream.Seek(0, SeekOrigin.Begin); - packet.Write(m_sock_writer); - - return m_s.BeginSend(m_tx_buffer, 0, packet.PacketSize(), - SocketFlags.None, new AsyncCallback(TxCallback), this); - } - - public void StartReceive() - { - // reply packet is supposed to have at least 8 bytes - m_rx_remaining_count = 8; - m_rx_byte_count = 0; - m_rx_mem_stream.Seek(0, SeekOrigin.Begin); - m_s.BeginReceive(m_rx_buffer, 0, 8, SocketFlags.None, new AsyncCallback(RxCallback), this); - } - - [DnsPermission(SecurityAction.Demand, Unrestricted = true)] - public bool ConnectToCore(string host, int port, string pass, ref string error) - { - try { - IAsyncResult async_result; - - ResolveState resolveContext = new ResolveState(); - async_result = Dns.BeginGetHostEntry(host, - new AsyncCallback(GetHostEntryCallback), resolveContext); - - async_result.AsyncWaitHandle.WaitOne(); - if ( resolveContext.IPs == null ) { - error = resolveContext.errorMsg; - return false; - } - Console.WriteLine("Resolved: '{0}' -> '{1}", host,resolveContext.IPs.AddressList[0]); - Console.WriteLine("Connecting to {0}:{1}", resolveContext.IPs.AddressList[0], port); - IPEndPoint remoteEP = new IPEndPoint(resolveContext.IPs.AddressList[0], port); - m_s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); - - ConnectState connectContext = new ConnectState(m_s); - async_result = m_s.BeginConnect(remoteEP, new AsyncCallback(ConnectCallback), connectContext); - if ( !async_result.AsyncWaitHandle.WaitOne(10000, true) ) { - error = "Timeout during connection. Possible firewall"; - return false; - } - - if ( connectContext.errorMsg != null) { - error = connectContext.errorMsg; - return false; - } - - m_tx_mem_stream = new MemoryStream(m_tx_buffer); - m_sock_writer = new BinaryWriter(m_tx_mem_stream); - m_rx_mem_stream = new MemoryStream(m_rx_buffer); - m_sock_reader = new BinaryReader(m_rx_mem_stream); - - ecProto.ecLoginPacket p = new ecProto.ecLoginPacket("amule.net", "0.0.1", pass); - async_result = SendPacket(p); - - if (!async_result.AsyncWaitHandle.WaitOne()) { - // Was unable to send login request for 1sec. Line must be really slow - return false; - } - - m_handler = new amuleLogicHandler(this); - StartReceive(); - Console.WriteLine("Waiting for auth done"); - // FIXME: must be able to cancel this read. - m_packet_op_Done.WaitOne(); - if ( m_rx_byte_count == -1 ) { - // remote side terminated connection - Console.WriteLine("Connection terminated on remote side"); - } - Console.WriteLine("Connect done"); - bool result = ((amuleLogicHandler)m_handler).AuthResult(); - m_handler = null; - return result; - } catch (Exception e) { - error = e.Message; - return false; - } - } - - public void SetECHandler(amuleECHandler h) - { - m_handler = h; - } - } -} diff --git a/src/remote-gui.net/ecProto.cs b/src/remote-gui.net/ecProto.cs deleted file mode 100644 index 9f0407b0..00000000 --- a/src/remote-gui.net/ecProto.cs +++ /dev/null @@ -1,669 +0,0 @@ -// -// This file is part of the aMule Project. -// -// Copyright (c) 2003-2008 aMule Team ( admin@amule.org / http://www.amule.org ) -// Copyright (c) 2003-2008 Froenchenko Leonid ( lfroen@gmail.com / http://www.amule.org ) -// -// 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 -// - -using System; -using System.IO; -using System.Security.Cryptography; -using System.Collections.Generic; -using System.Text; - -namespace amule.net -{ - public enum EcTagTypes { - EC_TAGTYPE_UNKNOWN = 0, - EC_TAGTYPE_CUSTOM = 1, - EC_TAGTYPE_UINT8 = 2, - EC_TAGTYPE_UINT16 = 3, - EC_TAGTYPE_UINT32 = 4, - EC_TAGTYPE_UINT64 = 5, - EC_TAGTYPE_STRING = 6, - EC_TAGTYPE_DOUBLE = 7, - EC_TAGTYPE_IPV4 = 8, - EC_TAGTYPE_HASH16 = 9 - }; - - public class ecProto { - - public class ecTag { - protected int m_size; - protected EcTagTypes m_type; - protected ECTagNames m_name; - protected LinkedList m_subtags; - - public ecTag(ECTagNames n, EcTagTypes t) - { - m_name = n; - m_type = t; - m_subtags = new LinkedList(); - } - public ecTag(ECTagNames n, EcTagTypes t, LinkedList subtags) - { - m_name = n; - m_type = t; - m_subtags = subtags; ; - } - - public ecTag() - { - m_subtags = new LinkedList(); - } - - public int SubtagCount() - { - return m_subtags.Count; - } - - protected void WriteSubtags(BinaryWriter wr) - { - Int16 count16 = (Int16)m_subtags.Count; - if (count16 != 0) { - wr.Write(System.Net.IPAddress.HostToNetworkOrder(count16)); - foreach (ecTag t in m_subtags) - { - t.Write(wr); - } - } - } - - public ECTagNames Name() - { - return m_name; - } - - public virtual void Write(BinaryWriter wr) - { - Int16 name16 = (Int16)(m_name); - name16 <<= 1; - byte type8 = (byte)m_type; - Int32 size32 = (Int32)Size(); - if (m_subtags.Count != 0) { - name16 |= 1; - } - wr.Write(System.Net.IPAddress.HostToNetworkOrder(name16)); - wr.Write(type8); - wr.Write(System.Net.IPAddress.HostToNetworkOrder(size32)); - - WriteSubtags(wr); - // - // here derived class will put actual data - // - } - - protected int Size() - { - int total_size = m_size; - foreach (ecTag t in m_subtags) { - total_size += t.Size(); - // name + type + size for each tag - total_size += (2 + 1 + 4); - if (t.HaveSubtags()) { - total_size += 2; - } - } - return total_size; - } - - public LinkedList.Enumerator GetTagIterator() - { - return m_subtags.GetEnumerator(); - } - - public void AddSubtag(ecTag t) - { - m_subtags.AddLast(t); - } - - bool HaveSubtags() - { - return (m_subtags.Count != 0); - } - - public ecTag SubTag(ECTagNames name) - { - foreach (ecTag t in m_subtags) { - if (t.m_name == name) { - return t; - } - } - return null; - } - } - - public class ecTagInt : ecTag { - protected Int64 m_val; - public ecTagInt(ECTagNames n, byte v) - : base(n, EcTagTypes.EC_TAGTYPE_UINT8) - { - m_val = v; - m_size = 1; - } - - public ecTagInt(ECTagNames n, Int16 v) - : base(n, EcTagTypes.EC_TAGTYPE_UINT16) - { - m_val = v; - m_size = 2; - } - - public ecTagInt(ECTagNames n, Int32 v) - : base(n, EcTagTypes.EC_TAGTYPE_UINT32) - { - m_val = v; - m_size = 4; - } - - public ecTagInt(ECTagNames n, Int64 v) - : base(n, EcTagTypes.EC_TAGTYPE_UINT64) - { - m_val = v; - m_size = 8; - } - - public ecTagInt(ECTagNames n, Int32 tag_size, BinaryReader br, LinkedList subtags) - : base(n, EcTagTypes.EC_TAGTYPE_UINT8, subtags) - { - m_size = tag_size; - UInt64 raw_val; - Int32 hi, lo, v32; - Int16 v16; - switch ( m_size ) { - case 8: - m_type = EcTagTypes.EC_TAGTYPE_UINT64; - lo = System.Net.IPAddress.NetworkToHostOrder(br.ReadInt32()); - hi = System.Net.IPAddress.NetworkToHostOrder(br.ReadInt32()); - raw_val = ((UInt64)hi) << 32 | (UInt32)lo; - break; - case 4: - m_type = EcTagTypes.EC_TAGTYPE_UINT32; - v32 = (System.Net.IPAddress.NetworkToHostOrder(br.ReadInt32())); - raw_val = (UInt32)v32; - break; - case 2: - m_type = EcTagTypes.EC_TAGTYPE_UINT16; - v16 = System.Net.IPAddress.NetworkToHostOrder(br.ReadInt16()); - raw_val = (UInt16)v16; - break; - case 1: - m_type = EcTagTypes.EC_TAGTYPE_UINT8; - raw_val = (UInt64)br.ReadByte(); - break; - default: - throw new Exception("Unexpected size of data in integer tag"); - } - m_val = (Int64)raw_val; - if ( m_val < 0 ) { - throw new Exception("WTF - typecasting is broken?!"); - } - } - - public int ValueInt() - { - return (int)m_val; - } - - public Int64 Value64() - { - return m_val; - } - - public override void Write(BinaryWriter wr) - { - base.Write(wr); - - switch ( m_size ) { - case 8: - Int32 val32 = (Int32)(m_val >> 32); - wr.Write(System.Net.IPAddress.HostToNetworkOrder(val32)); - - val32 = (Int32)(m_val & 0xffffffff); - wr.Write(System.Net.IPAddress.HostToNetworkOrder(val32)); - break; - case 4: - val32 = (Int32)(m_val & 0xffffffff); - wr.Write(System.Net.IPAddress.HostToNetworkOrder(val32)); - break; - case 2: - Int16 val16 = (Int16)(m_val & 0xffff); - wr.Write(System.Net.IPAddress.HostToNetworkOrder(val16)); - break; - case 1: - wr.Write((byte)(m_val & 0xff)); - break; - } - - } - } - - public class ecMD5 : IComparable, IEquatable { - Int64 m_lo, m_hi; - public ecMD5(Int64 lo, Int64 hi) - { - m_hi = hi; - m_lo = lo; - } - - // - // actual byte order doesn't matter, but conversion must be consistant - // - public ecMD5(byte [] v) - { - m_lo = ((Int64)v[0] << 0) | ((Int64)v[1] << 8) | ((Int64)v[2] << 16) | ((Int64)v[3] << 24) | - ((Int64)v[4] << 32) | ((Int64)v[5] << 40) | ((Int64)v[6] << 48) | ((Int64)v[7] << 56); - m_hi = ((Int64)v[8] << 0) | ((Int64)v[9] << 8) | ((Int64)v[10] << 16) | ((Int64)v[11] << 24) | - ((Int64)v[12] << 32) | ((Int64)v[13] << 40) | ((Int64)v[14] << 48) | ((Int64)v[15] << 56); - } - - public byte [] ByteValue() - { - byte[] v = { - (byte)(m_lo >> 0), (byte)(m_lo >> 8), (byte)(m_lo >> 16), (byte)(m_lo >> 24), - (byte)(m_lo >> 32), (byte)(m_lo >> 40), (byte)(m_lo >> 48), (byte)(m_lo >> 56), - (byte)(m_hi >> 0), (byte)(m_hi >> 8), (byte)(m_hi >> 16), (byte)(m_hi >> 24), - (byte)(m_hi >> 32), (byte)(m_hi >> 40), (byte)(m_hi >> 48), (byte)(m_hi >> 56), - }; - return v; - } - - public override int GetHashCode() - { - return (int)m_lo ^ (int)m_hi; - } - - public bool Equals(ecMD5 i) - { - return (m_hi == i.m_hi) && (m_lo == i.m_lo); - } - - public int CompareTo(ecMD5 i) - { - Int64 r = ((m_hi == i.m_hi) ? (m_lo - i.m_lo) : (m_hi - i.m_hi)); - return r > 0 ? 1 : (r < 0 ? -1 : 0); - } - } - - public class ecTagMD5 : ecTag { - byte[] m_val; - - public ecTagMD5(ECTagNames n, ecMD5 value) - : base(n, EcTagTypes.EC_TAGTYPE_HASH16) - { - m_val = value.ByteValue(); - m_size = 16; - } - - public ecTagMD5(ECTagNames n, string s, bool string_is_hash) - : base(n, EcTagTypes.EC_TAGTYPE_HASH16) - { - if ( string_is_hash ) { - // in this case hash is passed as hex string - if ( s.Length != 16*2 ) { - throw new Exception("md5 hash of proto version have incorrect length"); - } - //byte[] hash_str = s.ToCharArray(); - for (int i = 0; i < 16; i++) { - string v = s.Substring(i * 2, 2); - - } - m_val = new byte[16]; - } else { - MD5CryptoServiceProvider p = new MD5CryptoServiceProvider(); - byte[] bs = System.Text.Encoding.UTF8.GetBytes(s); - m_val = p.ComputeHash(bs); - } - m_size = 16; - } - - public ecTagMD5(ECTagNames name, byte[] hash_data) - : base(name, EcTagTypes.EC_TAGTYPE_HASH16) - { - m_val = hash_data; - m_size = 16; - } - - public ecTagMD5(ECTagNames name, BinaryReader br, LinkedList subtags) - : base(name, EcTagTypes.EC_TAGTYPE_HASH16, subtags) - { - m_size = 16; - m_val = br.ReadBytes(16); - } - - public override void Write(BinaryWriter wr) - { - base.Write(wr); - wr.Write(m_val); - } - - public ecMD5 ValueMD5() - { - return new ecMD5(m_val); - } - } - - public class ecTagIPv4 : ecTag { - Int32 m_addr; - Int16 m_port; - public ecTagIPv4(ECTagNames name, BinaryReader br, LinkedList subtags) - : base(name, EcTagTypes.EC_TAGTYPE_IPV4, subtags) - { - m_size = 4+2; - m_addr = System.Net.IPAddress.NetworkToHostOrder(br.ReadInt32()); - m_port = System.Net.IPAddress.NetworkToHostOrder(br.ReadInt16()); - } - } - - public class ecTagCustom : ecTag { - byte[] m_val; - public ecTagCustom(ECTagNames n, Int32 tag_size, BinaryReader br, LinkedList subtags) - : base(n, EcTagTypes.EC_TAGTYPE_CUSTOM, subtags) - { - m_val= br.ReadBytes(tag_size); - m_size = tag_size; - } - public byte [] Value() - { - return m_val; - } - - } - - public class ecTagString : ecTag { - byte[] m_val; - public ecTagString(ECTagNames n, string s) - : base(n, EcTagTypes.EC_TAGTYPE_STRING) - { - m_val = System.Text.Encoding.UTF8.GetBytes(s); - m_size = m_val.GetLength(0) + 1; - } - - public ecTagString(ECTagNames n, Int32 tag_size, BinaryReader br, LinkedList subtags) - : base(n, EcTagTypes.EC_TAGTYPE_STRING, subtags) - { - byte[] buf = br.ReadBytes(tag_size-1); - // discard trailing '0' - br.ReadBytes(1); - - m_size = tag_size; - m_val = buf; - } - - public override void Write(BinaryWriter wr) - { - base.Write(wr); - wr.Write(m_val); - byte zero_byte = 0; - wr.Write(zero_byte); - } - public string StringValue() - { - Encoding u8 = Encoding.UTF8; - string s = u8.GetString(m_val); - return s; - } - } - - public class ecPacket : ecTag { - // since I have no zlib here, effectively disable compression - const int MaxUncompressedPacket = 0x6666; - - private ECOpCodes m_opcode; - protected Int32 m_flags; - - // - // Parsing ctor - // - ecTag ReadTag(BinaryReader br) - { - ecTag t = null; - Int16 tag_name16 = System.Net.IPAddress.NetworkToHostOrder(br.ReadInt16()); - bool have_subtags = ((tag_name16 & 1) != 0); - ECTagNames tag_name = (ECTagNames)(tag_name16 >> 1); - - byte tag_type8 = br.ReadByte(); - Int32 tag_size32 = System.Net.IPAddress.NetworkToHostOrder(br.ReadInt32()); - LinkedList subtags = null; - if ( have_subtags ) { - subtags = ReadSubtags(br); - } - EcTagTypes tag_type = (EcTagTypes)tag_type8; - switch (tag_type) { - case EcTagTypes.EC_TAGTYPE_UNKNOWN: - break; - case EcTagTypes.EC_TAGTYPE_CUSTOM: - t = new ecTagCustom(tag_name, tag_size32, br, subtags); - break; - - case EcTagTypes.EC_TAGTYPE_UINT8: - t = new ecTagInt(tag_name, 1, br, subtags); - break; - case EcTagTypes.EC_TAGTYPE_UINT16: - t = new ecTagInt(tag_name, 2, br, subtags); - break; - case EcTagTypes.EC_TAGTYPE_UINT32: - t = new ecTagInt(tag_name, 4, br, subtags); - break; - case EcTagTypes.EC_TAGTYPE_UINT64: - t = new ecTagInt(tag_name, 8, br, subtags); - break; - - case EcTagTypes.EC_TAGTYPE_STRING: - t = new ecTagString(tag_name, tag_size32, br, subtags); - break; - case EcTagTypes.EC_TAGTYPE_DOUBLE: - break; - case EcTagTypes.EC_TAGTYPE_IPV4: - t = new ecTagIPv4(tag_name, br, subtags); - break; - case EcTagTypes.EC_TAGTYPE_HASH16: - t = new ecTagMD5(tag_name, br, subtags); - break; - default: - break; - } - if ( t == null ) { - throw new Exception("Unexpected tag type"); - } - return t; - } - - LinkedList ReadSubtags(BinaryReader br) - { - Int16 count16 = System.Net.IPAddress.NetworkToHostOrder(br.ReadInt16()); - LinkedList taglist = new LinkedList(); - for (int i = 0; i < count16;i++) { - ecTag st = ReadTag(br); - taglist.AddLast(st); - } - return taglist; - } - - public ecPacket() - { - m_flags = 0x20; - } - - public ecPacket(BinaryReader br) - { - m_flags = System.Net.IPAddress.NetworkToHostOrder(br.ReadInt32()); - Int32 packet_size = System.Net.IPAddress.NetworkToHostOrder(br.ReadInt32()); - m_opcode = (ECOpCodes)br.ReadByte(); - - Int16 tags_count = System.Net.IPAddress.NetworkToHostOrder(br.ReadInt16()); - - if ( tags_count != 0 ) { - for (int i = 0; i < tags_count; i++) { - ecTag t = ReadTag(br); - AddSubtag(t); - } - } - } - - // - // Default ctor - for tx packets - public ecPacket(ECOpCodes cmd) - { - m_flags = 0x20; - m_opcode = cmd; - } - - public ecPacket(ECOpCodes cmd, EC_DETAIL_LEVEL detail_level) - { - m_flags = 0x20; - m_opcode = cmd; - if ( detail_level != EC_DETAIL_LEVEL.EC_DETAIL_FULL ) { - AddSubtag(new ecTagInt(ECTagNames.EC_TAG_DETAIL_LEVEL, (Int64)detail_level)); - } - } - - // - // Size of data for TX, not of payload - // - public int PacketSize() - { - int packet_size = Size(); - if ((m_flags & (UInt32)ECFlags.EC_FLAG_ACCEPTS) != 0) { - packet_size += 4; - } - // 1 (command) + 2 (tag count) + 4 (flags) + 4 (total size) - return packet_size + 1 + 2 + 4 + 4; - } - - public ECOpCodes Opcode() - { - return m_opcode; - } - - public override void Write(BinaryWriter wr) - { - // 1 (command) + 2 (tag count) - int packet_size = Size() + 1 + 2; - if ( packet_size > MaxUncompressedPacket ) { - m_flags |= (Int32)ECFlags.EC_FLAG_ZLIB; - } - - if ((m_flags & (UInt32)ECFlags.EC_FLAG_ZLIB) != 0) { - throw new NotImplementedException("no zlib compression yet"); - } - - - wr.Write(System.Net.IPAddress.HostToNetworkOrder((Int32)(m_flags))); - if ((m_flags & (UInt32)ECFlags.EC_FLAG_ACCEPTS) != 0) { - wr.Write(System.Net.IPAddress.HostToNetworkOrder((Int32)(m_flags))); - } - - wr.Write(System.Net.IPAddress.HostToNetworkOrder((Int32)(packet_size))); - wr.Write((byte)m_opcode); - if ( m_subtags.Count != 0 ) { - WriteSubtags(wr); - } else { - wr.Write((Int16)(0)); - } - } - - } - - // - // Specific - purpose tags - // - - public class ecLoginPacket : ecPacket { - public ecLoginPacket(string client_name, string version, string pass) - : base(ECOpCodes.EC_OP_AUTH_REQ) - { - m_flags |= 0x20 | (Int32)ECFlags.EC_FLAG_ACCEPTS; - - AddSubtag(new ecTagString(ECTagNames.EC_TAG_CLIENT_NAME, client_name)); - AddSubtag(new ecTagString(ECTagNames.EC_TAG_CLIENT_VERSION, version)); - AddSubtag(new ecTagInt(ECTagNames.EC_TAG_PROTOCOL_VERSION, - (Int64)ProtocolVersion.EC_CURRENT_PROTOCOL_VERSION)); - - AddSubtag(new ecTagMD5(ECTagNames.EC_TAG_PASSWD_HASH, pass, false)); - - // discussion is ongoing - //AddSubtag(new ecTagMD5(ECTagNames.EC_TAG_VERSION_ID, EC_VERSION_ID, true)); - } - } - - public class ecDownloadsInfoReq : ecPacket { - public ecDownloadsInfoReq() : base(ECOpCodes.EC_OP_GET_DLOAD_QUEUE) - { - } - } - - // - // Class exists only for parsing purpose - // - public class ecConnStateTag { - ecTagInt m_tag; - Int32 m_tag_val; - public ecConnStateTag(ecTagInt tag) - { - m_tag = tag; - //m_tag_val = (Int32)tag.Value64(); - m_tag_val = 0xfff; - } - - //public static explicit operator ecConnStateTag(ecTagInt t) - //{ - // return new ecConnStateTag(t.ValueInt64()); - //} - - public bool IsConnected() - { - return IsConnectedED2K() || IsConnectedKademlia(); - } - - public bool IsConnectedED2K() - { - return (m_tag_val & 0x01) != 0; - } - - public bool IsConnectingED2K() - { - return (m_tag_val & 0x02) != 0; - } - - public bool IsConnectedKademlia() - { - return (m_tag_val & 0x04) != 0; - } - - public bool IsKadFirewalled() - { - return (m_tag_val & 0x08) != 0; - } - - public bool IsKadRunning() - { - return (m_tag_val & 0x10) != 0; - } - - public ecProto.ecTag Server() - { - return m_tag.SubTag(ECTagNames.EC_TAG_SERVER); - } - } - - } -} diff --git a/src/remote-gui.net/images/Toolbar_About.png b/src/remote-gui.net/images/Toolbar_About.png deleted file mode 100644 index dbe93204d6cdb1fb9efac146b198de585ee060b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcwPel00001 literal 1517 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 diff --git a/src/remote-gui.net/images/Toolbar_Network.png b/src/remote-gui.net/images/Toolbar_Network.png deleted file mode 100755 index 096e8489584adb762d2bdb7ef6e6719e32d19c44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcwPel00001 literal 2464 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 e{h!gQ6ZjL&HnQOzDPki40000|JW_w48Qt z%aMty&C8EGxNh*FdjtNqW>?7N5FENm&1|t+x|l4cu3XJeo*zqY{LatMB!2tC&edIA zT}Y);{zM}2Jb>4h0^k>nqeqWAWm!Jm-QA7Z*;%~)-o&M}N`+nFb>m;(5n6w5(9`0P zMOolDUf?-icJR`w2BqGkNSq}|SCZ*MTNUs;an_RjdDq7Vf%#Lul;rEi2dg6iMMZ!b<`#@H`sc()!yKD zIRuAI8KaDurcHImPz6xsL8=^qPB@|$G$YS(oYfTYUi(e|SWXm0tXQ!EjIk&07y!T) zNs?gOHqKA0?nb{W)9QD6Oxw0?N_Ep@Wz%MwO`$Q$%9NoDpiEt0i+c0d(t0A z^P+9r@cDcI(6tmm?ME0Qgn&|tvQFKy%c0eYyl7GAoCOL{%2C)HM=Z*i$-qp;U|mQS z#z2S;FzQsqj9M`j!!Y1a~8+J;utf*VAzyd zSJG;9a#l@(LE#7?1jGs8=79x(E(hQ<+qN47L4eE2Yh_heawQ`#3Y-MM1f>Qi@POehsA4v!+~j4`oNsQ^H7IRJm3pP%2@($azl+UqfqQ3IE+ z7RERNr_U`x7J0+c?R>FnPM?n#MpN^e${1vha2y5d2w=|UiYvn%4I%(!G8tHwHFU=S zjIsAFU%q^>t*s5ud||ck`Cp76lMjsKipC5D@&NK2P_ThK81e+n28c+(Yyi}>DPJh4 z_wC=c*f$DE88WB?)u!ZS+vi=)$D*|#m|YV=4*r_+eVVv~|2{pF4UB9VweDgE)_;2;3t zN8i}yYIKs|$hp{KR>gEt0*Qb)U=xKWoQDUzAVjGeRqx29*tb_TI@bU2sm zX0CYmR5H_@n9h86&z9DfSHHDgn4im`uC5MVuNT#7wK*D%?g|Ej@5f>>Z83m(% z`T~L=e6(T1hBaHaZiUb1!}wGd?+jkHhsUy3u2dBOMjAa1d&j00;i;YXl12r{<#KR1 z9Eiu`ICt(G{C+=FRmF)DCnf>(_V@Q+x+4GpICA7jBc=3sb93{~&dyFWH8nv|6o{e- zp66lPHZ03Rxm<>(X-KEjIDPswcJJPeL?VG|wTe_K1)t9c#u(mx_uWFJQhDZs4?Z~g zxg}VTlP6D>AAb1ZW4f+S#pCg=OeW(kl}b=m6~$r^`FtMfbQ|IeMd*fQ{iwJ7rY*vUyqkpa41-TKFs{vTBxnswUt=hC{Q=8Z8UF~!_n+PGYZQF*f>)E-vx#Z~R zX#Bu|191Qh01b!3+X8{W@AmKC?^P59lu~qbbU>0M%*@Q-l~-Q5+TY*b%H0xtL4_I> zySuyHEiEmrZnt}#%jLSy<#O$)udm{paN5 z3O85rw6%Q4sX5n7P8sw%O8IDVc%jUShN&3 z)-611{aKCH!ce!{&2QVb?fZftJj)of0Q@=}4!;qJMCf8&P#cWL;(>1kxE;tsHWrlC p_$<2(Z}nNQYhTK4Gxz^1{{l@K_Ij~~K-~ZU002ovPDHLkV1i1lMwtKr diff --git a/src/remote-gui.net/images/Toolbar_Shared.png b/src/remote-gui.net/images/Toolbar_Shared.png deleted file mode 100755 index 0171b09fa2b02c488da603cdffeacab9c28a7bb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcwPel00001 literal 1015 zcwPbb0|@+yP)+s^wa(Qec2WuE*swad-w0(C(ANK1Q8*GfQX=~s{nZR z?Ab?y!Qd|N^wt2PC|VpH9i_*|$A}2t`xQtTB}A*$YKq7gw+i6Bmz|v*vMeKnP>B*i zL@>r!W6Xnx4-7jBtTIrVUjzVXHk+;8 z-Ca7J4kbhsMHpj<n*37N7 zt2m!G-KYd2k`ISN`u+YY1DDN12$cH|^*30KB0Oy=f)09r9Lzp&cHER6%&y*LZ`BnfnGL-jSy=K|ltrJDjxB{T6*?2r= zI22x|cjcBAXE^G&&3JbS1 z2S{SWZ0^9zaXIGV9yrUgjI(J5?2*Lgynb(H>_sV@AQ$e7nvIy|MF{BM6#(a4p{k^< zcW7zC+1%e~qRPrZmy19Iya;*)yD^4oRum}13P1>9lIJ<&!qaZXWETKbm%CY138HIf z`*kF$jI-RU(U%o~qA2DfLR{~XrZr}ZfDeibN(jQ66=PjNl<~CCNa0A0LCEIL7^GSP@4br1!q(equnBn)maD$B^i4AHU*(w>!eZ_cYK$rX zsycDbnX`pZk1W|d;QXtZt~J){#w>dcFv&emLhaYbU%iB{D*#4B97($t)Q~$_eR8!r z-=z+7xwA4v4U8rWEM^8~HOtz^Xi@lRw5ao5oUAU7&9vDTJv})?)jtPzfYUXAe!u^- z?0uFvAM^Z=zh1+9a~YMBkVM_K^%MXA002ovPDHLkV1g=#;xqsN diff --git a/src/remote-gui.net/images/Toolbar_Stats.png b/src/remote-gui.net/images/Toolbar_Stats.png deleted file mode 100755 index b62959e4f3d7871c986f24c6f112153561912ea8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcwPel00001 literal 1886 zcwPZs2ch_hP)-U0|+Dp3WA0}6@ieFRyc7|mpHW@J5HSS{_yVJ zJ2Qued%e4^od}^Y(&(O4AIEWY$i^<`y(gKDE}g8M^PBd1 z*U9K*rQiPM*KYwQLucKyVLS5y-m+t7r**DU;pAUve_)o`z*kQfIH{eHM)(1dq)$dsb8~Mp?@G? zdD)>Pf=Pv|Ch_*^fmffz-z#1f^&amPF^1V0kBGtdcybfs9D;T0b^#&`^a;Z|GAu4R zTpFEq9-3P30X%plS$m%dwCRh(%rK3Qv2R13-RfwEoy%IY`LfAQ;XJ}iVd?CQP#M*3DiPwdvLaY~@ zcGt0kR^*vqu5)Ll(N&|x=zTFY}!JB^}L>6u2XM%3WY4Cz6_I3m*_8t1P01wgZHpw z7!K?W`RGPWwc%+;j&@{eMV4mU5=C(ue+Lp^0zrMk--vm%2bz)6uCy@Kn888Aj^RA3 z%~ez(S8Q?n{wmKrU*L&d1+t|YvonGK17%OPpk(rbY6kB->P=FHttX1%USjFiSs)0R zjGn8$o33%VW<*uAH~x4$(^K9d84zzE|z3jAa0KFzk}xr0M|ZZc$aD9_dD z2OQd8=IApqr;iso^3)J!Gp0M^UOh{p&paB0B0?b-(3cItBsu=^T!mZnZ5l0j;kkf) zPxR4hd9K`0_U-bVd8wb#p+5e0^*&QGEz~QDPm7X*_gL@n*3w$@X&OERgtNES_|e-H zkPwjoF#*N|m>^)^lTdG34nEn(?Zp;1Z{@f;)8h1zK|Z)r=v=BX{5=N1yR!;;bGbAv{bKxGWR3r9J6uCKPX*6^EbIPK+%AYT1S*~PJ zJc>g_5OIhoNC2WBn%*JiAs(Pxsgh|hVh|G`#?WdT7VcWcwtH?b3Z5MEiy3N-kdL5TB)%4!}l9-{(S zR1Kn<-lTpbKQAd{`k;uJH0mfEG=ElL-luo1B74cZ0WIwlei$8p5c z^3n#yItr*N%~q4x##kF;W80x)Yq2)QIoJ6xj$`6>M4{N1A{$!GCdLT4d_FNMwzQ*& zLLrYa-7=jCGab6K>%C7}XxrOPTdZ?Qi@ia(<v$v^N>)f3Fm?-LotrvvG7}Jhzj1hygiNHq*2WZsl3=Iu&^ysmU^$Hw5e3;3} zN$T|mjYfn1{y~l%JB|^_T4Y--n0ArB4)p}F8qJ} zoT{p|*3C{|pZ>vx3xE0}u()3T4A2jhfE-)2YL8*~B&Ni`Do_KQZ1G~Za6kUht;y;5 Y4{P?sxg-E8IRF3v07*qoM6N<$g5g<-#{d8T diff --git a/src/remote-gui.net/images/Toolbar_Transfers.png b/src/remote-gui.net/images/Toolbar_Transfers.png deleted file mode 100755 index d2adb7595c112e7870f932aa164d0e2aabf4e50a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcwPel00001 literal 1504 zcwPbE1t0o}P)HYZ53YuY{Gbtez~Ls&Ts*`zY!V&adk%6l`e;#MhIIz7mm zwaj(BrsA1#3!MuMZgbhLqtFrdDl_}Zc zaDA!c`>z1}-)D{yMvAj5a^FZWB7hsdE0A15aE0rw7vXoj$je?n0;Er8ZNlhb1z5cr zf*_AA&3r9oTw*f+v-La#S7DU^W4KiR6XN1ySHh|_S;>+yxyv+3J z8S3}ua}Z2GNrfnv3(CboA_%Sszt$f{>ZGZ1&a?&TF$rSdu*5)ip)8#BNXEM_=B$Y+ zZ#)Cd0uYjcOMpp&-|+#$fe;Mf1}%4QAS>-9+1B3nX#CuE)8ID047m_xZ5H{d$G<@GhZUb@ryen^Fg z3szXyQWf*z*Xu){MKNpp#y!!>CE*XYz!rWe#lZj&0bDYCzITVEgA^TpPAnwb3}9#g zrA2zlKMGKxBrXJ$OW|&y6)K8@a{!Eih#&-m4pOwcShI&#iaBTS>)RlqAzchyGBCzK zhQI`S_`QHL0n6M0;{X>7QgLv}po0dCMV4!M69!5B7UvkP`~T-m^DI`lw(Zw6WnB4Q+yOjD}-uXk#PjSlE4VN794700W@HYZ+dH2zV}~ z0K^Qq02pH-O9G7PB^c4eey;iu0=f$U-G!iI^{!u-wV~f5km0wM5g^_zpRG&m=lHxm zu=mbyHsBc0eTNfwv7Q|P#lsqYf0(dppl3KCP{g?qh4w@SMAR<;0kFdw83!W5c~4xJ z2neSK{%>an6gD9u*iK;3SwP{3>if~&|MhXRobhKkM3~7KHa7i%6f`ztF0TaO6tG7iH z0k$2$(NhPyylqW82Q-r1OB%|ka^&20tEIhR@wAk5b*cVGRQoQ%a1D)awA)SSGCpv{ zASA;zpBr`U<(QZ-6Q|3Lbv5|vw!4d+JwpZnfci317CZaq6x+5R%Sc-yTl`h9=nh(~ zDi|JsPz+Lqs;5guVR7mjTrR(0Ro0dtaTht820WBLNES|@;}yE*`H`^+6K1A9A+CB) z08&G`ID}#libF__MH5${wzf`RxN@$%yWPoez6>)g02LLW$vNh`>c(qplgCa>7@wHJ zymmFD;=K@$k6Q+RyQUMTe`s-Roqgd8`1_p+2P37Qpp)Bn?(tJ4ccPq8NE?$4>0(e( z9BGMJh;c^a*oh;Z1o3RyF5DjUy_Aenz>T z-Vp^Ls@_eWF>@?5-)dS=S@VZ(tZOWB7waMbu81DfQ_{_#E~kAQ_wAgK&5UQhBR&>_ zCtcoc7X*W_`}7SRF8Mvx)*dW?ig4U_-FI(CIJ57w5B>!sR%iM1 diff --git a/src/remote-gui.net/remote-gui.net.csproj b/src/remote-gui.net/remote-gui.net.csproj deleted file mode 100755 index 0b21600e..00000000 --- a/src/remote-gui.net/remote-gui.net.csproj +++ /dev/null @@ -1,140 +0,0 @@ - - - Debug - AnyCPU - 8.0.50727 - 2.0 - {DA4C427D-607A-4AB8-9C12-1B60AB283471} - WinExe - Properties - amule.net - amule-remote.net - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - true - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - true - - - - - - - - - - - - Form - - - AboutBox.cs - - - Form - - - AddLinkDialog.cs - - - - - Form - - - ConnectDlg.cs - - - Component - - - - - - Form - - - MainWindow.cs - - - - - Designer - AboutBox.cs - - - Designer - AddLinkDialog.cs - - - ConnectDlg.cs - Designer - - - MainWindow.cs - Designer - - - ResXFileCodeGenerator - Resources.Designer.cs - Designer - - - Designer - SearchControl.cs - - - True - Resources.resx - True - - - SettingsSingleFileGenerator - Settings.Designer.cs - - - True - Settings.settings - True - - - UserControl - - - SearchControl.cs - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/remote-gui.net/remote-gui.net.sln b/src/remote-gui.net/remote-gui.net.sln deleted file mode 100755 index 42f6f773..00000000 --- a/src/remote-gui.net/remote-gui.net.sln +++ /dev/null @@ -1,20 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual C# Express 2005 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "remote-gui.net", "remote-gui.net.csproj", "{DA4C427D-607A-4AB8-9C12-1B60AB283471}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {DA4C427D-607A-4AB8-9C12-1B60AB283471}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DA4C427D-607A-4AB8-9C12-1B60AB283471}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DA4C427D-607A-4AB8-9C12-1B60AB283471}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DA4C427D-607A-4AB8-9C12-1B60AB283471}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal -- 2.11.4.GIT