[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co...
From: |
mldonkey-commits |
Subject: |
[Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co... |
Date: |
Sat, 23 Oct 2010 18:25:14 +0000 |
CVSROOT: /sources/mldonkey
Module name: mldonkey
Changes by: spiralvoice <spiralvoice> 10/10/23 18:25:14
Modified files:
distrib : ChangeLog
src/daemon/common: commonGlobals.ml commonOptions.ml
src/daemon/driver: driverCommands.ml
src/networks/donkey: donkeyClient.ml donkeyProtoClient.ml
donkeyTypes.ml
Log message:
patch #7318
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/mldonkey/distrib/ChangeLog?cvsroot=mldonkey&r1=1.1489&r2=1.1490
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/daemon/common/commonGlobals.ml?cvsroot=mldonkey&r1=1.91&r2=1.92
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/daemon/common/commonOptions.ml?cvsroot=mldonkey&r1=1.234&r2=1.235
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/daemon/driver/driverCommands.ml?cvsroot=mldonkey&r1=1.256&r2=1.257
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/donkey/donkeyClient.ml?cvsroot=mldonkey&r1=1.131&r2=1.132
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/donkey/donkeyProtoClient.ml?cvsroot=mldonkey&r1=1.48&r2=1.49
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/donkey/donkeyTypes.ml?cvsroot=mldonkey&r1=1.60&r2=1.61
Patches:
Index: distrib/ChangeLog
===================================================================
RCS file: /sources/mldonkey/mldonkey/distrib/ChangeLog,v
retrieving revision 1.1489
retrieving revision 1.1490
diff -u -b -r1.1489 -r1.1490
--- distrib/ChangeLog 23 Oct 2010 18:23:38 -0000 1.1489
+++ distrib/ChangeLog 23 Oct 2010 18:25:13 -0000 1.1490
@@ -15,6 +15,10 @@
=========
2010/10/23
+7318: EDK: Emule captcha support and slight cleanup (dennisne)
+- added support for Emule's anti-spam chat CAPTCHAs
+- added clear_message_log command to clear (long) message logs
+- HTML: reversed order of chat messages
7319: EDK: Fix CryptoPP on mips64 abi n32 (viric)
7356: options: ensure that tmp file is removed (ygrek)
7355: DC web ui: escape commands' arguments (ygrek)
Index: src/daemon/common/commonGlobals.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/daemon/common/commonGlobals.ml,v
retrieving revision 1.91
retrieving revision 1.92
diff -u -b -r1.91 -r1.92
--- src/daemon/common/commonGlobals.ml 23 May 2010 09:18:31 -0000 1.91
+++ src/daemon/common/commonGlobals.ml 23 Oct 2010 18:25:13 -0000 1.92
@@ -445,12 +445,12 @@
let log_chat_message i num n s =
Fifo.put chat_message_fifo (last_time(),i,num,n,s);
(try
- Unix2.tryopen_write_gen !messages_log [Open_creat; Open_wronly;
Open_append]
+ Unix2.tryopen_write_gen messages_log [Open_creat; Open_wronly;
Open_append]
0o600 (fun oc ->
Printf.fprintf oc "%s: %s (%s): %s\n" (Date.simple
(BasicSocket.date_of_int (last_time ()))) n i s)
with e ->
lprintf_nl "[ERROR] Exception %s while trying to log message to %s"
- (Printexc2.to_string e) !messages_log);
+ (Printexc2.to_string e) messages_log);
while (Fifo.length chat_message_fifo) > !!html_mods_max_messages do
ignore(Fifo.take chat_message_fifo)
Index: src/daemon/common/commonOptions.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/daemon/common/commonOptions.ml,v
retrieving revision 1.234
retrieving revision 1.235
diff -u -b -r1.234 -r1.235
--- src/daemon/common/commonOptions.ml 8 Aug 2010 18:37:41 -0000 1.234
+++ src/daemon/common/commonOptions.ml 23 Oct 2010 18:25:13 -0000 1.235
@@ -303,7 +303,7 @@
let files_ini = create_options_file "files.ini"
let friends_ini = create_options_file "friends.ini"
-let messages_log = ref "messages.log"
+let messages_log = "messages.log"
let servers_section = file_section servers_ini [] ""
Index: src/daemon/driver/driverCommands.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/daemon/driver/driverCommands.ml,v
retrieving revision 1.256
retrieving revision 1.257
diff -u -b -r1.256 -r1.257
--- src/daemon/driver/driverCommands.ml 7 Aug 2010 14:51:15 -0000 1.256
+++ src/daemon/driver/driverCommands.ml 23 Oct 2010 18:25:13 -0000 1.257
@@ -543,6 +543,11 @@
""
), "<minutes> :\t\t\tprint activity in the last <minutes> minutes";
+ "clear_message_log", Arg_none (fun o ->
+ Fifo.clear chat_message_fifo;
+ Printf.sprintf "Chat messages cleared"
+ ), ":\t\t\t\tclear chat message buffer";
+
"message_log", Arg_multiple (fun args o ->
let buf = o.conn_buf in
html_mods_cntr_init ();
@@ -577,7 +582,7 @@
( "0", "srh", "Client name", "Client name" ) ;
( "0", "srh", "Message text", "Message" ) ] ;
- Fifo.iter (fun (t,i,num,n,s) ->
+ List.iter (fun (t,i,num,n,s) ->
if use_html_mods o then begin
Printf.bprintf buf "\\<tr class=\\\"dl-%d\\\"\\>"
(html_mods_cntr ());
@@ -586,13 +591,15 @@
("", "sr", i);
("", "sr", Printf.sprintf "%d" num);
("", "sr", n);
- ("", "srw", (String.escaped s)) ];
+ ("", "srw", (if String.length s > 11 && String.sub s 0
11 = "data:image/" then
+ "\\<img src=\\\"" ^ String.escaped s ^ "\\\">"
+ else String.escaped s)) ];
Printf.bprintf buf "\\</tr\\>"
end
else
Printf.bprintf buf "\n%s [client #%d] %s(%s): %s\n"
(Date.simple (BasicSocket.date_of_int t)) num n i s;
- ) chat_message_fifo;
+ ) (List.rev (Fifo.to_list chat_message_fifo));
if use_html_mods o then Printf.bprintf buf
"\\</table\\>\\</div\\>\\</div\\>";
@@ -609,8 +616,10 @@
a1 ^ a2 ^ " "
) "" msglist in
let cnum = int_of_string n in
- client_say (client_find cnum) msg;
- log_chat_message "localhost" 0 !!global_login msg;
+ let c = client_find cnum in
+ let g = client_info c in
+ client_say c msg;
+ log_chat_message "FROM ME" cnum ("TO: " ^ g.client_name) msg;
Printf.sprintf "Sending msg to client #%d: %s" cnum msg;
| _ ->
if use_html_mods o then begin
@@ -673,7 +682,11 @@
Printf.bprintf buf "\\<form style=\\\"margin: 0px;\\\"
id=\\\"refresh\\\" name=\\\"refresh\\\"
action=\\\"javascript:msgWindow.location.reload();\\\"\\>
\\<td\\>\\<input style=\\\"font-family: verdana; font-size:
12px;\\\" type=submit
- Value=\\\"Refresh\\\"\\>\\</td\\>\\</form\\>\\</tr\\>\\</table\\>";
+ Value=\\\"Refresh\\\"\\>\\</td\\>\\</form\\>";
+ Printf.bprintf buf "\\<form style=\\\"margin: 0px;\\\"
id=\\\"clear\\\" name=\\\"clear\\\"
+
action=\\\"javascript:window.location.href='submit?q=clear_message_log'\\\"\\>
+ \\<td\\>\\<input style=\\\"font-family: verdana; font-size:
12px;\\\" type=submit
+ Value=\\\"Clear\\\"\\>\\</td\\>\\</form\\>\\</tr\\>\\</table\\>";
""
end
else
Index: src/networks/donkey/donkeyClient.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/donkey/donkeyClient.ml,v
retrieving revision 1.131
retrieving revision 1.132
diff -u -b -r1.131 -r1.132
--- src/networks/donkey/donkeyClient.ml 22 Oct 2009 19:58:45 -0000 1.131
+++ src/networks/donkey/donkeyClient.ml 23 Oct 2010 18:25:13 -0000 1.132
@@ -1961,6 +1961,108 @@
in
log_chat_message cip (client_num c) c.client_name s;
+
+ | M.EmuleCaptchaReq t ->
+ let buf = Buffer.create 4096 in
+ let len = String.length t in
+ let b64_map = [|
+ 'A'; 'B'; 'C'; 'D'; 'E'; 'F'; 'G'; 'H'; 'I'; 'J'; 'K'; 'L'; 'M'; 'N';
'O'; 'P';
+ 'Q'; 'R'; 'S'; 'T'; 'U'; 'V'; 'W'; 'X'; 'Y'; 'Z'; 'a'; 'b'; 'c'; 'd';
'e'; 'f';
+ 'g'; 'h'; 'i'; 'j'; 'k'; 'l'; 'm'; 'n'; 'o'; 'p'; 'q'; 'r'; 's'; 't';
'u'; 'v';
+ 'w'; 'x'; 'y'; 'z'; '0'; '1'; '2'; '3'; '4'; '5'; '6'; '7'; '8'; '9';
'+'; '/'|] in
+
+ for i = 0 to (len / 3) - 1 do
+ let c1 = int_of_char t.[i*3] in
+ let c2 = int_of_char t.[i*3+1] in
+ let c3 = int_of_char t.[i*3+2] in
+ let n1 = c1 lsr 2 in
+ let n2 = ((c1 land 3) lsl 4) lor (c2 lsr 4) in
+ let n3 = ((c2 land 0xf) lsl 2) lor (c3 lsr 6) in
+ let n4 = c3 land 63 in
+ Printf.bprintf buf "%c%c%c%c" b64_map.(n1) b64_map.(n2) b64_map.(n3)
b64_map.(n4);
+ done;
+ if (len mod 3) = 1 then (
+ let i = len - 2 in
+ let c1 = int_of_char t.[i] in
+ let c2 = int_of_char t.[i+1] in
+ let n1 = ((c1 land 0xf) lsl 2) lor (c2 lsr 6) in
+ let n2 = c2 land 63 in
+ Printf.bprintf buf "%c%c==" b64_map.(n1) b64_map.(n2)
+ )
+ else if (len mod 3) = 2 then (
+ let i = len - 3 in
+ let c1 = int_of_char t.[i] in
+ let c2 = int_of_char t.[i+1] in
+ let c3 = int_of_char t.[i+2] in
+ let n1 = ((c1 land 3) lsl 4) lor (c2 lsr 4) in
+ let n2 = ((c2 land 0xf) lsl 2) lor (c3 lsr 6) in
+ let n3 = c3 land 63 in
+ Printf.bprintf buf "%c%c%c=" b64_map.(n1) b64_map.(n2) b64_map.(n3)
+ );
+
+ let b64data = Buffer.contents buf in
+ let cip =
+ (
+ try
+
+ match c.client_source.DonkeySources.source_sock with
+ Connection sock ->
+ (Ip.to_string (peer_ip sock) ^ ":" ^ string_of_int (peer_port
sock))
+ | _ -> (match c.client_kind with
+ Direct_address (ip,port) ->
+ ((Ip.to_string ip) ^ ":" ^ string_of_int port)
+ | Indirect_address _ | Invalid_address _ -> "Indirect"
+ )
+
+ with _ ->
+
+ try
+ match c.client_kind with
+ Direct_address (ip,port) ->
+ ((Ip.to_string ip) ^ ":" ^ string_of_int port)
+ | Indirect_address _ | Invalid_address _ -> "Indirect"
+ with _ -> ""
+ )
+ in
+ log_chat_message cip (client_num c) c.client_name
("data:image/bmp;base64," ^ b64data)
+
+
+ | M.EmuleCaptchaRes t ->
+ let cip =
+ (
+ try
+
+ match c.client_source.DonkeySources.source_sock with
+ Connection sock ->
+ (Ip.to_string (peer_ip sock) ^ ":" ^ string_of_int (peer_port
sock))
+ | _ -> (match c.client_kind with
+ Direct_address (ip,port) ->
+ ((Ip.to_string ip) ^ ":" ^ string_of_int port)
+ | Indirect_address _ | Invalid_address _ -> "Indirect"
+ )
+
+ with _ ->
+
+ try
+ match c.client_kind with
+ Direct_address (ip,port) ->
+ ((Ip.to_string ip) ^ ":" ^ string_of_int port)
+ | Indirect_address _ | Invalid_address _ -> "Indirect"
+ with _ -> ""
+ )
+ in
+ log_chat_message cip (client_num c) c.client_name (
+ if t = 0 then
+ "You have correctly solved the captcha and your message was sent."
+ else if t = 1 then
+ "Wrong answer to the captcha, so your message was not sent. You
will only be sent 3 captchas. Try sending another message to receive another
captcha challenge."
+ else if t = 2 then
+ "3 captchas have already been sent to you. Fail."
+ else
+ "Unknown captcha state!?"
+ )
+
+
| M.QueryChunkMd4Req t when !CommonGlobals.has_upload = 0 ->
let file = find_file t in
Index: src/networks/donkey/donkeyProtoClient.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/donkey/donkeyProtoClient.ml,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -b -r1.48 -r1.49
--- src/networks/donkey/donkeyProtoClient.ml 31 Mar 2008 07:58:16 -0000
1.48
+++ src/networks/donkey/donkeyProtoClient.ml 23 Oct 2010 18:25:14 -0000
1.49
@@ -69,6 +69,7 @@
emule_extmultipacket = 0;
emule_largefiles = 1;
emule_kad_version = 0;
+ emule_support_captcha = 1;
}
let emule_miscoptions1 m =
@@ -121,12 +122,14 @@
let emule_miscoptions2 m =
let o =
+ (m.emule_support_captcha lsl 11) lor
(m.emule_largefiles lsl 4)
in
Int64.of_int o
let update_emule_proto_from_miscoptions2 m o =
let o = Int64.to_int o in
+ m.emule_support_captcha <- (o lsr 11) land 0x1;
m.emule_require_crypt <- (o lsr 9) land 0x1;
m.emule_request_crypt <- (o lsr 8) land 0x1;
m.emule_support_crypt <- (o lsr 7) land 0x1;
@@ -142,6 +145,7 @@
if m.emule_extmultipacket <> 0 then Printf.bprintf buf " extmultipacket
%d\n" m.emule_extmultipacket;
if m.emule_largefiles <> 0 then Printf.bprintf buf " largefiles %d\n"
m.emule_largefiles;
if m.emule_kad_version <> 0 then Printf.bprintf buf " kad_version %d\n"
m.emule_kad_version;
+ if m.emule_support_captcha <> 0 then Printf.bprintf buf " support_captcha
%d\n" m.emule_support_captcha;
Buffer.contents buf
let emule_compatoptions m =
@@ -941,6 +945,39 @@
end
+
+module EmuleCaptchaReq = struct
+
+ type t = string
+
+ let print t =
+ lprintf_nl "EmuleCaptchaReq [CAPTCHA BMP length=%d bytedata=%s]"
(String.length t) (String.escaped t)
+
+ let parse len s =
+ String.sub s 2 (len - 2)
+
+ let write buf t =
+ buf_estring buf t
+
+ end
+
+
+module EmuleCaptchaRes = struct
+
+ type t = int
+
+ let print t =
+ lprintf_nl "EmuleCaptchaRes RESPONSE=%d" t
+
+ let parse s =
+ get_uint8 s 1
+
+ let write buf t =
+ buf_int8 buf t
+
+ end
+
+
module EmuleSecIdentStateReq = struct
type t = {
@@ -1177,6 +1214,8 @@
| EmuleMultiPacketAnswerReq of Md4.t * t list
| EmuleCompressedPart of EmuleCompressedPart.t
| EmulePortTestReq of EmulePortTestReq.t
+| EmuleCaptchaReq of EmuleCaptchaReq.t
+| EmuleCaptchaRes of EmuleCaptchaRes.t
let rec print t =
begin
@@ -1248,6 +1287,10 @@
EmuleCompressedPart.print t
| EmulePortTestReq t ->
EmulePortTestReq.print t
+ | EmuleCaptchaReq t ->
+ EmuleCaptchaReq.print t
+ | EmuleCaptchaRes t ->
+ EmuleCaptchaRes.print t
| UnknownReq (opcode, s) ->
let len = String.length s in
lprintf_nl "UnknownReq: magic (%d), opcode (%d) len (%d)" opcode
@@ -1379,8 +1422,9 @@
EmuleCompressedPart (EmuleCompressedPart.parse true len s)
| 0xa2 -> BlocReq (Bloc.parse true len s) (* OP_SENDINGPART_I64 *)
| 0xa3 -> QueryBlocReq (QueryBloc.parse true len s) (*OP_REQUESTPARTS_I64
*)
- | 0xfe (* 254 *) ->
- EmulePortTestReq s
+ | 0xa5 (* 165 *) -> EmuleCaptchaReq (EmuleCaptchaReq.parse len s) (*
OP_CHATCAPTCHAREQ *)
+ | 0xa6 (* 166 *) -> EmuleCaptchaRes (EmuleCaptchaRes.parse s) (*
OP_CHATCAPTCHARES *)
+ | 0xfe (* 254 *) -> EmulePortTestReq s
| code ->
if !CommonOptions.verbose_unknown_messages then
@@ -1495,6 +1539,8 @@
| EmuleClientInfoReq _
| EmuleFileDescReq _
| EmuleQueueRankingReq _
+ | EmuleCaptchaReq _
+ | EmuleCaptchaRes _
| EmuleCompressedPart _
-> 0xC5
| QueryBlocReq t when t.QueryBloc.usesixtyfour -> 0xC5
@@ -1664,7 +1710,15 @@
| EmulePortTestReq t ->
buf_int8 buf 0xfe;
- EmulePortTestReq.write buf;
+ EmulePortTestReq.write buf
+
+ | EmuleCaptchaReq t ->
+ buf_int8 buf 0xa5;
+ EmuleCaptchaReq.write buf t
+
+ | EmuleCaptchaRes t ->
+ buf_int8 buf 0xa6;
+ EmuleCaptchaRes.write buf t
| UnknownReq (opcode, s) ->
Buffer.add_string buf s
Index: src/networks/donkey/donkeyTypes.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/donkey/donkeyTypes.ml,v
retrieving revision 1.60
retrieving revision 1.61
diff -u -b -r1.60 -r1.61
--- src/networks/donkey/donkeyTypes.ml 26 May 2007 23:21:48 -0000 1.60
+++ src/networks/donkey/donkeyTypes.ml 23 Oct 2010 18:25:14 -0000 1.61
@@ -63,6 +63,7 @@
mutable emule_extmultipacket : int;
mutable emule_largefiles : int;
mutable emule_kad_version : int;
+ mutable emule_support_captcha : int;
}
type emule_tag_name =
@@ -730,6 +731,7 @@
emule_extmultipacket = 0;
emule_largefiles = 0;
emule_kad_version = 0;
+ emule_support_captcha = 0;
}
let emule_proto () =
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co...,
mldonkey-commits <=