/[mldonkey]/mldonkey/src/daemon/driver/driverControlers.ml
ViewVC logotype

Diff of /mldonkey/src/daemon/driver/driverControlers.ml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.45 by spiralvoice, Tue Sep 13 09:54:46 2005 UTC revision 1.46 by spiralvoice, Wed Sep 21 18:10:06 2005 UTC
# Line 40  let lprintf_nl () = Line 40  let lprintf_nl () =
40    lprintf "%s[dCon] "    lprintf "%s[dCon] "
41      (log_time ()); lprintf_nl2      (log_time ()); lprintf_nl2
42    
43    (* prints a new logline with date, module and does not start newline *)
44    let lprintf_n () =
45      lprintf "%s[EDK] "
46        (log_time ()); lprintf
47    
48  let rec dollar_escape o with_frames s =  let rec dollar_escape o with_frames s =
49    String2.convert false (fun b escaped c ->    String2.convert false (fun b escaped c ->
50        if escaped then        if escaped then
# Line 95  let eval auth cmd o = Line 100  let eval auth cmd o =
100    let buf = o.conn_buf in    let buf = o.conn_buf in
101    let cmd = Url.decode cmd in    let cmd = Url.decode cmd in
102    let cmd =    let cmd =
103      if String2.check_prefix cmd "ed2k://" then "dllink " ^ cmd      if String2.check_prefix cmd "ed2k://" ||
104           String2.check_prefix cmd "http://" then "dllink " ^ cmd
105      else if String2.check_prefix cmd "fha://" then "ovlink " ^ cmd      else if String2.check_prefix cmd "fha://" then "ovlink " ^ cmd
106      else cmd in      else cmd in
107    let l = String2.tokens cmd in    let l = String2.tokens cmd in
# Line 439  type telnet_conn = { Line 445  type telnet_conn = {
445    
446  let iac_will_naws = "\255\253\031"  let iac_will_naws = "\255\253\031"
447    
448  let user_reader o telnet sock nread  =  let user_reader o telnet sock nread =
449    let b = TcpBufferedSocket.buf sock in    let b = TcpBufferedSocket.buf sock in
450    let end_pos = b.pos + b.len in    let end_pos = b.pos + b.len in
451    let new_pos = end_pos - nread in    let new_pos = end_pos - nread in
# Line 561  let telnet_handler t event = Line 567  let telnet_handler t event =
567    match event with    match event with
568      TcpServerSocket.CONNECTION (s, Unix.ADDR_INET (from_ip, from_port)) ->      TcpServerSocket.CONNECTION (s, Unix.ADDR_INET (from_ip, from_port)) ->
569        let from_ip = Ip.of_inet_addr from_ip in        let from_ip = Ip.of_inet_addr from_ip in
       if Ip.matches from_ip !!allowed_ips then  
570          let token = create_token unlimited_connection_manager in          let token = create_token unlimited_connection_manager in
571          let sock = TcpBufferedSocket.create_simple token          let sock = TcpBufferedSocket.create_simple token
572            "telnet connection"            "telnet connection"
# Line 581  let telnet_handler t event = Line 586  let telnet_handler t event =
586              conn_width = 80;              conn_width = 80;
587              conn_height = 0;              conn_height = 0;
588            } in            } in
589          if Ip.matches from_ip !!allowed_ips then begin
590          TcpBufferedSocket.prevent_close sock;          TcpBufferedSocket.prevent_close sock;
591          TcpBufferedSocket.set_max_output_buffer sock !!interface_buffer;          TcpBufferedSocket.set_max_output_buffer sock !!interface_buffer;
592          TcpBufferedSocket.set_reader sock (user_reader o telnet);          TcpBufferedSocket.set_reader sock (user_reader o telnet);
# Line 590  let telnet_handler t event = Line 596  let telnet_handler t event =
596          TcpBufferedSocket.write_string sock iac_will_naws;          TcpBufferedSocket.write_string sock iac_will_naws;
597    
598          before_telnet_output o sock;          before_telnet_output o sock;
599          TcpBufferedSocket.write_string sock (text_of_html !!motd_html);          TcpBufferedSocket.write_string sock
600               (Printf.sprintf "Welcome to MLDonkey %s" Autoconf.current_version);
601    
602          TcpBufferedSocket.write_string sock (dollar_escape o false          TcpBufferedSocket.write_string sock (dollar_escape o false
603              "\n$bWelcome on mldonkey command-line$n\n\nUse $r?$n for help\n\n");              "\n$bWelcome on mldonkey command-line$n\n\nUse $r?$n for help\n\n");
604    
605          after_telnet_output o sock          after_telnet_output o sock
606            end
607        else begin        else begin
608          lprintf_nl () "Telnet connection from %s rejected (see allowed_ips setting)"          before_telnet_output o sock;
609            (Ip.to_string from_ip);          let reject_message =
610          Unix.close s            Printf.sprintf "Telnet connection from %s rejected (see allowed_ips setting)\n"
611                (Ip.to_string from_ip)
612            in
613            TcpBufferedSocket.write_string sock (dollar_escape o false reject_message);
614            shutdown sock Closed_connect_failed;
615            lprintf_n () "%s" reject_message;
616            Unix.close s
617        end        end
618    
619    | _ -> ()    | _ -> ()

Legend:
Removed from v.1.45  
changed lines
  Added in v.1.46

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26