Changeset 4695

Show
Ignore:
Timestamp:
02/23/07 14:04:22 (1 year ago)
Author:
morris
Message:

Match server's p7 support

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • wire/branches/p7/Makefile.in

    r4538 r4695  
    111111clean: clean-recursive 
    112112        rm -f $(objdir)/wire/*.o 
    113         rm -f $(objdir)/*.d 
     113        rm -f $(objdir)/wire/*.d 
    114114        rm -f $(rundir)/wire 
    115115 
  • wire/branches/p7/wire/client.c

    r4685 r4695  
    5050static void                                                     wr_message_ping_reply(wi_p7_message_t *); 
    5151static void                                                     wr_message_server_info(wi_p7_message_t *); 
     52static void                                                     wr_message_user_info(wi_p7_message_t *); 
     53static void                                                     wr_message_user_list(wi_p7_message_t *); 
     54static void                                                     wr_message_user_list_done(wi_p7_message_t *); 
    5255 
    5356 
     
    160163        wi_hash_set_data_for_key(wr_message_handlers, wr_message_ping_reply, WI_STR("wired.ping.reply")); 
    161164        wi_hash_set_data_for_key(wr_message_handlers, wr_message_server_info, WI_STR("wired.server_info")); 
     165        wi_hash_set_data_for_key(wr_message_handlers, wr_message_user_info, WI_STR("wired.user_info")); 
     166        wi_hash_set_data_for_key(wr_message_handlers, wr_message_user_list, WI_STR("wired.user_list")); 
     167        wi_hash_set_data_for_key(wr_message_handlers, wr_message_user_list_done, WI_STR("wired.user_list.done")); 
    162168 
    163169        wr_icon = wi_data_init_with_base64(wi_data_alloc(), wi_string_with_cstring(wr_default_icon)); 
     
    512518                return NULL; 
    513519         
    514         wi_string_convert_encoding(string, wr_server_string_encoding, wr_client_string_encoding); 
    515  
    516         return string; 
     520        return wi_string_by_converting_encoding(string, wr_server_string_encoding, wr_client_string_encoding); 
    517521} 
    518522 
     
    558562                wr_send_message(message); 
    559563        } 
     564 
     565        message = wi_p7_message_with_name(WI_STR("wired.join_chat"), wr_p7_socket); 
     566        wi_p7_message_set_uint32_for_name(message, wr_chat_id(wr_public_chat), WI_STR("wired.chat.id")); 
     567        wr_send_message(message); 
    560568} 
    561569 
     
    570578        wi_p7_message_t         *reply; 
    571579 
    572         wr_server = wr_server_init(wr_server_alloc()); 
    573         wr_server->name = wi_retain(wi_p7_message_string_for_name(message, WI_STR("wired.server_info.name"))); 
    574         wr_server->description = wi_retain(wi_p7_message_string_for_name(message, WI_STR("wired.server_info.description"))); 
    575         wr_server->startdate = wi_retain(wi_p7_message_string_for_name(message, WI_STR("wired.server_info.launch"))); 
    576 //      wr_server->files = wi_string_uint32(WI_ARRAY(arguments, 4)); 
    577 //      wr_server->size = wi_string_uint64(WI_ARRAY(arguments, 5)); 
     580        if(wr_server) 
     581                wi_release(wr_server); 
     582         
     583        wr_server = wr_server_init_with_message(wr_server_alloc(), message); 
    578584 
    579585        wr_draw_divider(); 
     
    589595 
    590596 
    591 #pragma mark - 
     597static void wr_message_user_info(wi_p7_message_t *reply) { 
     598        wr_printf_prefix(WI_STR("User info:")); 
     599 
    592600/* 
    593 static void wr_msg_200(wi_array_t *arguments) { 
    594         double          protocol; 
    595          
    596         protocol = wi_string_double(wr_protocol_version_string); 
    597          
    598         wr_server = wr_server_init(wr_server_alloc()); 
    599         wr_server->version = wi_retain(WI_ARRAY(arguments, 0)); 
    600         wr_server->protocol = wi_string_double(WI_ARRAY(arguments, 1)); 
    601         wr_server->name = wi_retain(WI_ARRAY(arguments, 2)); 
    602         wr_server->description = wi_retain(WI_ARRAY(arguments, 3)); 
    603         wr_server->startdate = wi_date_init_with_iso8601_string(wi_date_alloc(), WI_ARRAY(arguments, 4)); 
    604         wr_server->files = wi_string_uint32(WI_ARRAY(arguments, 4)); 
    605         wr_server->size = wi_string_uint64(WI_ARRAY(arguments, 5)); 
    606  
    607         wr_draw_divider(); 
    608          
    609         if(!wr_logged_in) { 
    610                 if(wr_server->protocol > protocol) { 
    611                         wr_wprintf_prefix(wr_console_window, WI_STR("Server protocol version %.1f may not be fully compatible with client protocol version %.1f"), 
    612                                 wr_server->protocol, protocol); 
    613                 } 
    614  
    615                 wr_send_command(WI_STR("CLIENT %#@"), wr_client_version_string); 
    616                 wr_send_command(WI_STR("NICK %#@"), wr_nick); 
    617                 wr_send_command(WI_STR("STATUS %#@"), wr_status); 
    618                 wr_send_command(WI_STR("ICON %u%c%#@"), 0, WR_FIELD_SEPARATOR, wr_icon); 
    619                 wr_send_command(WI_STR("USER %#@"), wr_login); 
    620                 wr_send_command(WI_STR("PASS %#@"), (wi_string_length(wr_password) == 0) ? NULL : wi_string_sha1(wr_password)); 
    621                  
    622                 wr_send_command(WI_STR("WHO %u"), 1); 
    623  
    624                 wr_logged_in = true; 
    625         } 
    626 
    627  
    628  
    629  
    630 static void wr_msg_201(wi_array_t *arguments) { 
    631         wr_wprintf_prefix(wr_console_window, WI_STR("Logged in, welcome to %@"), wr_server->name); 
    632 
    633  
    634  
    635  
    636 static void wr_msg_202(wi_array_t *arguments) { 
    637         wi_time_interval_t      interval; 
    638  
    639         if(wr_ping_time > 0.0) { 
    640                 interval = wi_time_interval() - wr_ping_time; 
    641                  
    642                 wr_wprintf_prefix(wr_console_window, WI_STR("Ping reply after %.2fms"), interval * 1000.0); 
    643                  
    644                 wr_ping_time = 0.0; 
    645         } 
    646 
    647  
    648  
    649  
    650 static void wr_msg_300(wi_array_t *arguments) { 
    651         wr_chat_t       *chat; 
    652         wr_user_t       *user; 
    653         wr_cid_t        cid; 
    654         wr_uid_t        uid; 
    655  
    656         cid = wi_string_uint32(WI_ARRAY(arguments, 0)); 
    657         uid = wi_string_uint32(WI_ARRAY(arguments, 1)); 
    658  
    659         chat = wr_chats_chat_with_cid(cid); 
    660         user = wr_chat_user_with_uid(chat, uid); 
    661          
    662         if(user && !wr_is_ignored(wr_user_nick(user))) 
    663                 wr_wprint_say(wr_windows_window_with_chat(chat), wr_user_nick(user), WI_ARRAY(arguments, 2)); 
    664 
    665  
    666  
    667  
    668 static void wr_msg_301(wi_array_t *arguments) { 
    669         wr_chat_t       *chat; 
    670         wr_user_t       *user; 
    671         wr_cid_t        cid; 
    672         wr_uid_t        uid; 
    673  
    674         cid = wi_string_uint32(WI_ARRAY(arguments, 0)); 
    675         uid = wi_string_uint32(WI_ARRAY(arguments, 1)); 
    676  
    677         chat = wr_chats_chat_with_cid(cid); 
    678         user = wr_chat_user_with_uid(chat, uid); 
    679          
    680         if(user && !wr_is_ignored(wr_user_nick(user))) 
    681                 wr_wprint_me(wr_windows_window_with_chat(chat), wr_user_nick(user), WI_ARRAY(arguments, 2)); 
    682 
    683  
    684  
    685  
    686 static void wr_msg_302(wi_array_t *arguments) { 
    687         wr_chat_t       *chat; 
    688         wr_user_t       *user; 
    689         wr_cid_t        cid; 
    690          
    691         cid = wi_string_uint32(WI_ARRAY(arguments, 0)); 
    692         chat = wr_chats_chat_with_cid(cid); 
    693  
    694         user = wr_user_init_with_arguments(wr_user_alloc(), arguments); 
    695         wr_chat_add_user(chat, user); 
    696         wi_release(user); 
    697  
    698         wr_draw_divider(); 
    699         wr_wprintf_prefix(wr_windows_window_with_chat(chat), WI_STR("%@ has joined"), 
    700                 wr_user_nick(user)); 
    701 
    702  
    703  
    704  
    705 static void wr_msg_303(wi_array_t *arguments) { 
    706         wr_chat_t       *chat; 
    707         wr_user_t       *user; 
    708         wr_cid_t        cid; 
    709         wr_uid_t        uid; 
    710  
    711         cid = wi_string_uint32(WI_ARRAY(arguments, 0)); 
    712         uid = wi_string_uint32(WI_ARRAY(arguments, 1)); 
    713  
    714         chat = wr_chats_chat_with_cid(cid); 
    715         user = wr_chat_user_with_uid(chat, uid); 
    716  
    717         if(user) { 
    718                 wr_wprintf_prefix(wr_windows_window_with_chat(chat), WI_STR("%@ has left"), 
    719                         wr_user_nick(user)); 
    720                  
    721                 wr_chat_remove_user(chat, user); 
    722                 wr_draw_divider(); 
    723         } 
    724 
    725  
    726  
    727  
    728 static void wr_msg_304(wi_array_t *arguments) { 
    729         wi_string_t             *nick; 
    730         wr_user_t               *user; 
    731         wr_uid_t                uid; 
    732  
    733         uid = wi_string_uint32(WI_ARRAY(arguments, 0)); 
    734         user = wr_chat_user_with_uid(wr_public_chat, uid); 
    735  
    736         if(user) { 
    737                 nick = WI_ARRAY(arguments, 4); 
    738                  
    739                 if(!wi_is_equal(wr_user_nick(user), nick)) { 
    740                         wr_wprintf_prefix(wr_console_window, WI_STR("%@ is now known as %@"), 
    741                                 wr_user_nick(user), nick); 
    742  
    743                         wr_user_set_nick(user, nick); 
    744                 } 
    745  
    746                 wr_user_set_idle(user, wi_string_bool(WI_ARRAY(arguments, 1))); 
    747                 wr_user_set_admin(user, wi_string_bool(WI_ARRAY(arguments, 2))); 
    748                 wr_user_set_status(user, WI_ARRAY(arguments, 5)); 
    749         } 
    750 
    751  
    752  
    753  
    754 static void wr_msg_305(wi_array_t *arguments) { 
    755         wr_user_t               *user; 
    756         wr_window_t             *window; 
    757         wr_uid_t                uid; 
    758  
    759         uid = wi_string_uint32(WI_ARRAY(arguments, 0)); 
    760         user = wr_chat_user_with_uid(wr_public_chat, uid); 
    761  
    762         if(user && !wr_is_ignored(wr_user_nick(user))) { 
    763                 window = wr_windows_window_with_user(user); 
    764                  
    765                 if(!window) { 
    766                         window = wr_window_init_with_user(wr_window_alloc(), user); 
    767                         wr_windows_add_window(window); 
    768                         wi_release(window); 
    769                 } 
    770                  
    771                 wr_wprint_msg(window, wr_user_nick(user), WI_ARRAY(arguments, 1)); 
    772                 wr_reply_uid = wr_user_id(user); 
    773         } 
    774 
    775  
    776  
    777  
    778 static void wr_msg_306(wi_array_t *arguments) { 
    779         wi_string_t             *message; 
    780         wr_user_t               *killer, *victim; 
    781         wr_uid_t                killer_uid, victim_uid; 
    782  
    783         victim_uid = wi_string_uint32(WI_ARRAY(arguments, 0)); 
    784         killer_uid = wi_string_uint32(WI_ARRAY(arguments, 1)); 
    785         message = WI_ARRAY(arguments, 2); 
    786  
    787         victim = wr_chat_user_with_uid(wr_public_chat, victim_uid); 
    788         killer = wr_chat_user_with_uid(wr_public_chat, killer_uid); 
    789  
    790         if(killer && victim) { 
    791                 if(wi_string_length(message) > 0) { 
    792                         wr_wprintf_prefix(wr_console_window, WI_STR("%@ was kicked by %@: %@"), 
    793                                 wr_user_nick(victim), wr_user_nick(killer), message); 
    794                 } else { 
    795                         wr_wprintf_prefix(wr_console_window, WI_STR("%@ was kicked by %@"), 
    796                                 wr_user_nick(victim), wr_user_nick(killer)); 
    797                 } 
    798         } 
    799  
    800         if(victim) { 
    801                 wr_chat_remove_user(wr_public_chat, victim); 
    802                 wr_draw_divider(); 
    803         } 
    804 
    805  
    806  
    807  
    808 static void wr_msg_307(wi_array_t *arguments) { 
    809         wi_string_t             *message; 
    810         wr_user_t               *killer, *victim; 
    811         wr_uid_t                killer_uid, victim_uid; 
    812  
    813         victim_uid = wi_string_uint32(WI_ARRAY(arguments, 0)); 
    814         killer_uid = wi_string_uint32(WI_ARRAY(arguments, 1)); 
    815         message = WI_ARRAY(arguments, 2); 
    816  
    817         victim = wr_chat_user_with_uid(wr_public_chat, victim_uid); 
    818         killer = wr_chat_user_with_uid(wr_public_chat, killer_uid); 
    819  
    820         if(killer && victim) { 
    821                 if(wi_string_length(message) > 0) { 
    822                         wr_wprintf_prefix(wr_console_window, WI_STR("%@ was banned by %@: %@"), 
    823                                 wr_user_nick(victim), wr_user_nick(killer), message); 
    824                 } else { 
    825                         wr_wprintf_prefix(wr_console_window, WI_STR("%@ was banned by %@"), 
    826                                 wr_user_nick(victim), wr_user_nick(killer)); 
    827                 } 
    828         } 
    829  
    830         if(victim) { 
    831                 wr_chat_remove_user(wr_public_chat, victim); 
    832                 wr_draw_divider(); 
    833         } 
    834 
    835  
    836  
    837  
     601  
    838602static void wr_msg_308(wi_array_t *arguments) { 
    839603        wi_enumerator_t         *enumerator; 
     
    901665                } 
    902666        } 
     667}*/ 
     668 
     669} 
     670 
     671 
     672 
     673static void wr_message_user_list(wi_p7_message_t *reply) { 
     674        wr_user_t                       *user; 
     675        wr_chat_t                       *chat; 
     676        wi_p7_uint32_t          cid; 
     677         
     678        if(!wi_p7_message_get_uint32_for_name(reply, &cid, WI_STR("wired.chat.id"))) 
     679                return; 
     680         
     681        chat = wr_chats_chat_with_cid(cid); 
     682         
     683        if(chat) { 
     684                user = wr_user_init_with_message(wr_user_alloc(), reply); 
     685                wr_chat_add_user(chat, user); 
     686                wi_release(user); 
     687        } 
     688} 
     689 
     690 
     691 
     692static void wr_message_user_list_done(wi_p7_message_t *reply) { 
     693        wr_chat_t                       *chat; 
     694        wi_p7_uint32_t          cid; 
     695         
     696        if(!wi_p7_message_get_uint32_for_name(reply, &cid, WI_STR("wired.chat.id"))) 
     697                return; 
     698         
     699        chat = wr_chats_chat_with_cid(cid); 
     700         
     701        if(chat) { 
     702                wr_draw_divider(); 
     703                wr_print_users(wr_windows_window_with_chat(chat)); 
     704        } 
     705} 
     706 
     707 
     708 
     709#pragma mark - 
     710/* 
     711static void wr_msg_200(wi_array_t *arguments) { 
     712        double          protocol; 
     713         
     714        protocol = wi_string_double(wr_protocol_version_string); 
     715         
     716        wr_server = wr_server_init(wr_server_alloc()); 
     717        wr_server->version = wi_retain(WI_ARRAY(arguments, 0)); 
     718        wr_server->protocol = wi_string_double(WI_ARRAY(arguments, 1)); 
     719        wr_server->name = wi_retain(WI_ARRAY(arguments, 2)); 
     720        wr_server->description = wi_retain(WI_ARRAY(arguments, 3)); 
     721        wr_server->startdate = wi_date_init_with_iso8601_string(wi_date_alloc(), WI_ARRAY(arguments, 4)); 
     722        wr_server->files = wi_string_uint32(WI_ARRAY(arguments, 4)); 
     723        wr_server->size = wi_string_uint64(WI_ARRAY(arguments, 5)); 
     724 
     725        wr_draw_divider(); 
     726         
     727        if(!wr_logged_in) { 
     728                if(wr_server->protocol > protocol) { 
     729                        wr_wprintf_prefix(wr_console_window, WI_STR("Server protocol version %.1f may not be fully compatible with client protocol version %.1f"), 
     730                                wr_server->protocol, protocol); 
     731                } 
     732 
     733                wr_send_command(WI_STR("CLIENT %#@"), wr_client_version_string); 
     734                wr_send_command(WI_STR("NICK %#@"), wr_nick); 
     735                wr_send_command(WI_STR("STATUS %#@"), wr_status); 
     736                wr_send_command(WI_STR("ICON %u%c%#@"), 0, WR_FIELD_SEPARATOR, wr_icon); 
     737                wr_send_command(WI_STR("USER %#@"), wr_login); 
     738                wr_send_command(WI_STR("PASS %#@"), (wi_string_length(wr_password) == 0) ? NULL : wi_string_sha1(wr_password)); 
     739                 
     740                wr_send_command(WI_STR("WHO %u"), 1); 
     741 
     742                wr_logged_in = true; 
     743        } 
     744} 
     745 
     746 
     747 
     748static void wr_msg_201(wi_array_t *arguments) { 
     749        wr_wprintf_prefix(wr_console_window, WI_STR("Logged in, welcome to %@"), wr_server->name); 
     750} 
     751 
     752 
     753 
     754static void wr_msg_202(wi_array_t *arguments) { 
     755        wi_time_interval_t      interval; 
     756 
     757        if(wr_ping_time > 0.0) { 
     758                interval = wi_time_interval() - wr_ping_time; 
     759                 
     760                wr_wprintf_prefix(wr_console_window, WI_STR("Ping reply after %.2fms"), interval * 1000.0); 
     761                 
     762                wr_ping_time = 0.0; 
     763        } 
     764} 
     765 
     766 
     767 
     768static void wr_msg_300(wi_array_t *arguments) { 
     769        wr_chat_t       *chat; 
     770        wr_user_t       *user; 
     771        wr_cid_t        cid; 
     772        wr_uid_t        uid; 
     773 
     774        cid = wi_string_uint32(WI_ARRAY(arguments, 0)); 
     775        uid = wi_string_uint32(WI_ARRAY(arguments, 1)); 
     776 
     777        chat = wr_chats_chat_with_cid(cid); 
     778        user = wr_chat_user_with_uid(chat, uid); 
     779         
     780        if(user && !wr_is_ignored(wr_user_nick(user))) 
     781                wr_wprint_say(wr_windows_window_with_chat(chat), wr_user_nick(user), WI_ARRAY(arguments, 2)); 
     782} 
     783 
     784 
     785 
     786static void wr_msg_301(wi_array_t *arguments) { 
     787        wr_chat_t       *chat; 
     788        wr_user_t       *user; 
     789        wr_cid_t        cid; 
     790        wr_uid_t        uid; 
     791 
     792        cid = wi_string_uint32(WI_ARRAY(arguments, 0)); 
     793        uid = wi_string_uint32(WI_ARRAY(arguments, 1)); 
     794 
     795        chat = wr_chats_chat_with_cid(cid); 
     796        user = wr_chat_user_with_uid(chat, uid); 
     797         
     798        if(user && !wr_is_ignored(wr_user_nick(user))) 
     799                wr_wprint_me(wr_windows_window_with_chat(chat), wr_user_nick(user), WI_ARRAY(arguments, 2)); 
     800} 
     801 
     802 
     803 
     804static void wr_msg_302(wi_array_t *arguments) { 
     805        wr_chat_t       *chat; 
     806        wr_user_t       *user; 
     807        wr_cid_t        cid; 
     808         
     809        cid = wi_string_uint32(WI_ARRAY(arguments, 0)); 
     810        chat = wr_chats_chat_with_cid(cid); 
     811 
     812        user = wr_user_init_with_arguments(wr_user_alloc(), arguments); 
     813        wr_chat_add_user(chat, user); 
     814        wi_release(user); 
     815 
     816        wr_draw_divider(); 
     817        wr_wprintf_prefix(wr_windows_window_with_chat(chat), WI_STR("%@ has joined"), 
     818                wr_user_nick(user)); 
     819} 
     820 
     821 
     822 
     823static void wr_msg_303(wi_array_t *arguments) { 
     824        wr_chat_t       *chat; 
     825        wr_user_t       *user; 
     826        wr_cid_t        cid; 
     827        wr_uid_t        uid; 
     828 
     829        cid = wi_string_uint32(WI_ARRAY(arguments, 0)); 
     830        uid = wi_string_uint32(WI_ARRAY(arguments, 1)); 
     831 
     832        chat = wr_chats_chat_with_cid(cid); 
     833        user = wr_chat_user_with_uid(chat, uid); 
     834 
     835        if(user) { 
     836                wr_wprintf_prefix(wr_windows_window_with_chat(chat), WI_STR("%@ has left"), 
     837                        wr_user_nick(user)); 
     838                 
     839                wr_chat_remove_user(chat, user); 
     840                wr_draw_divider(); 
     841        } 
     842} 
     843 
     844 
     845 
     846static void wr_msg_304(wi_array_t *arguments) { 
     847        wi_string_t             *nick; 
     848        wr_user_t               *user; 
     849        wr_uid_t                uid; 
     850 
     851        uid = wi_string_uint32(WI_ARRAY(arguments, 0)); 
     852        user = wr_chat_user_with_uid(wr_public_chat, uid); 
     853 
     854        if(user) { 
     855                nick = WI_ARRAY(arguments, 4); 
     856                 
     857                if(!wi_is_equal(wr_user_nick(user), nick)) { 
     858                        wr_wprintf_prefix(wr_console_window, WI_STR("%@ is now known as %@"), 
     859                                wr_user_nick(user), nick); 
     860 
     861                        wr_user_set_nick(user, nick); 
     862                } 
     863 
     864                wr_user_set_idle(user, wi_string_bool(WI_ARRAY(arguments, 1))); 
     865                wr_user_set_admin(user, wi_string_bool(WI_ARRAY(arguments, 2))); 
     866                wr_user_set_status(user, WI_ARRAY(arguments, 5)); 
     867        } 
     868} 
     869 
     870 
     871 
     872static void wr_msg_305(wi_array_t *arguments) { 
     873        wr_user_t               *user; 
     874        wr_window_t             *window; 
     875        wr_uid_t                uid; 
     876 
     877        uid = wi_string_uint32(WI_ARRAY(arguments, 0)); 
     878        user = wr_chat_user_with_uid(wr_public_chat, uid); 
     879 
     880        if(user && !wr_is_ignored(wr_user_nick(user))) { 
     881                window = wr_windows_window_with_user(user); 
     882                 
     883                if(!window) { 
     884                        window = wr_window_init_with_user(wr_window_alloc(), user); 
     885                        wr_windows_add_window(window); 
     886                        wi_release(window); 
     887                } 
     888                 
     889                wr_wprint_msg(window, wr_user_nick(user), WI_ARRAY(arguments, 1)); 
     890                wr_reply_uid = wr_user_id(user); 
     891        } 
     892} 
     893 
     894 
     895 
     896static void wr_msg_306(wi_array_t *arguments) { 
     897        wi_string_t             *message; 
     898        wr_user_t               *killer, *victim; 
     899        wr_uid_t                killer_uid, victim_uid; 
     900 
     901        victim_uid = wi_string_uint32(WI_ARRAY(arguments, 0)); 
     902        killer_uid = wi_string_uint32(WI_ARRAY(arguments, 1)); 
     903        message = WI_ARRAY(arguments, 2); 
     904 
     905        victim = wr_chat_user_with_uid(wr_public_chat, victim_uid); 
     906        killer = wr_chat_user_with_uid(wr_public_chat, killer_uid); 
     907 
     908        if(killer && victim) { 
     909                if(wi_string_length(message) > 0) { 
     910                        wr_wprintf_prefix(wr_console_window, WI_STR("%@ was kicked by %@: %@"), 
     911                                wr_user_nick(victim), wr_user_nick(killer), message); 
     912                } else { 
     913                        wr_wprintf_prefix(wr_console_window, WI_STR("%@ was kicked by %@"), 
     914                                wr_user_nick(victim), wr_user_nick(killer)); 
     915                } 
     916        } 
     917 
     918        if(victim) { 
     919                wr_chat_remove_user(wr_public_chat, victim); 
     920                wr_draw_divider(); 
     921        } 
     922} 
     923 
     924 
     925 
     926static void wr_msg_307(wi_array_t *arguments) { 
     927        wi_string_t             *message; 
     928        wr_user_t               *killer, *victim; 
     929        wr_uid_t                killer_uid, victim_uid; 
     930 
     931        victim_uid = wi_string_uint32(WI_ARRAY(arguments, 0)); 
     932        killer_uid = wi_string_uint32(WI_ARRAY(arguments, 1)); 
     933        message = WI_ARRAY(arguments, 2); 
     934 
     935        victim = wr_chat_user_with_uid(wr_public_chat, victim_uid); 
     936        killer = wr_chat_user_with_uid(wr_public_chat, killer_uid); 
     937 
     938        if(killer && victim) { 
     939                if(wi_string_length(message) > 0) { 
     940                        wr_wprintf_prefix(wr_console_window, WI_STR("%@ was banned by %@: %@"), 
     941                                wr_user_nick(victim), wr_user_nick(killer), message); 
     942                } else { 
     943                        wr_wprintf_prefix(wr_console_window, WI_STR("%@ was banned by %@"), 
     944                                wr_user_nick(victim), wr_user_nick(killer)); 
     945                } 
     946        } 
     947 
     948        if(victim) { 
     949                wr_chat_remove_user(wr_public_chat, victim); 
     950                wr_draw_divider(); 
     951        } 
     952} 
     953 
     954 
     955 
     956static void wr_msg_308(wi_array_t *arguments) { 
     957        wi_enumerator_t         *enumerator; 
     958        wi_date_t                       *date; 
     959        wi_array_t                      *array, *transfers; 
     960        wi_string_t                     *string, *interval, *name, *transferred, *size, *speed; 
     961        wi_uinteger_t           n; 
     962        wi_boolean_t            first; 
     963         
     964        wr_printf_prefix(WI_STR("User info:"), 
     965                WI_ARRAY(arguments, 4)); 
     966 
     967        wr_printf_block(WI_STR("Nick:        %@"), WI_ARRAY(arguments, 4)); 
     968 
     969        if(wr_server->protocol >= 1.1) 
     970                wr_printf_block(WI_STR("Status:      %@"), WI_ARRAY(arguments, 15)); 
     971 
     972        wr_printf_block(WI_STR("Login:       %@"), WI_ARRAY(arguments, 5)); 
     973        wr_printf_block(WI_STR("ID:          %@"), WI_ARRAY(arguments, 0)); 
     974        wr_printf_block(WI_STR("Address:     %@"), WI_ARRAY(arguments, 6)); 
     975        wr_printf_block(WI_STR("Host:        %@"), WI_ARRAY(arguments, 7)); 
     976        wr_printf_block(WI_STR("Client:      %@"), WI_ARRAY(arguments, 8)); 
     977        wr_printf_block(WI_STR("Cipher:      %@/%@ bits"), WI_ARRAY(arguments, 9), WI_ARRAY(arguments, 10)); 
     978 
     979        date = wi_date_with_iso8601_string(WI_ARRAY(arguments, 11)); 
     980        interval = wi_time_interval_string(wi_date_time_interval_since_now(date)); 
     981    string = wi_date_string_with_format(date, WI_STR("%a %b %e %T %Y")); 
     982        wr_printf_block(WI_STR("Login Time:  %@, since %@"), interval, string); 
     983 
     984        date = wi_date_with_iso8601_string(WI_ARRAY(arguments, 12)); 
     985        interval = wi_time_interval_string(wi_date_time_interval_since_now(date)); 
     986    string = wi_date_string_with_format(date, WI_STR("%a %b %e %T %Y")); 
     987        wr_printf_block(WI_STR("Idle Time:   %@, since %@"), interval, string); 
     988         
     989        for(n = WR_TRANSFER_DOWNLOAD; n <= WR_TRANSFER_UPLOAD; n++) { 
     990                string          = WI_ARRAY(arguments, (n == WR_TRANSFER_DOWNLOAD) ? 13 : 14); 
     991                transfers       = wi_string_components_separated_by_string(string, WI_STR(WR_GROUP_SEPARATOR_STR)); 
     992                enumerator      = wi_array_data_enumerator(transfers); 
     993                first           = true; 
     994                 
     995                while((string = wi_enumerator_next_data(enumerator))) { 
     996                        array   = wi_string_components_separated_by_string(string, WI_STR(WR_RECORD_SEPARATOR_STR)); 
     997                         
     998                        if(wi_array_count(array) == 4) { 
     999                                name            = wi_string_last_path_component(WI_ARRAY(array, 0)); 
     1000                                transferred     = wr_files_string_for_size(wi_string_uint64(WI_ARRAY(array, 1))); 
     1001                                size            = wr_files_string_for_size(wi_string_uint64(WI_ARRAY(array, 2))); 
     1002                                speed           = wr_files_string_for_size(wi_string_uint32(WI_ARRAY(array, 3))); 
     1003                                 
     1004                                if(first) { 
     1005                                        if(n == WR_TRANSFER_DOWNLOAD) { 
     1006                                                wr_printf_block(WI_STR("Downloads:   %@, %@ of %@, %@/s"), 
     1007                                                        name, transferred, size, speed); 
     1008                                        } else { 
     1009                                                wr_printf_block(WI_STR("Uploads:     %@, %@ of %@, %@/s"), 
     1010                                                        name, transferred, size, speed); 
     1011                                        } 
     1012                                } else { 
     1013                                        wr_printf_block(WI_STR("             %@, %@ of %@, %@/s"), 
     1014                                                name, transferred, size, speed); 
     1015                                } 
     1016                        } 
     1017                         
     1018                        first = false; 
     1019                } 
     1020        } 
    9031021} 
    9041022 
  • wire/branches/p7/wire/commands.c

    r4685 r4695  
    849849 
    850850static void wr_cmd_info(wi_array_t *arguments) { 
     851        wi_p7_message_t *message; 
    851852        wi_enumerator_t *enumerator; 
    852853        wi_string_t             *nick; 
     
    865866                } 
    866867 
    867                 wr_send_command(WI_STR("INFO %u"), wr_user_id(user)); 
     868                message = wi_p7_message_with_name(WI_STR("wired.get_user_info"), wr_p7_socket); 
     869                wi_p7_message_set_uint32_for_name(message, wr_user_id(user), WI_STR("wired.user.id")); 
     870                wr_send_message(message); 
    868871        } 
    869872} 
  • wire/branches/p7/wire/server.c

    r4399 r4695  
    3131#include <wired/wired.h> 
    3232 
     33#include "client.h" 
    3334#include "server.h" 
    3435 
     
    6162 
    6263 
    63 wr_server_t * wr_server_init(wr_server_t *server) { 
     64wr_server_t * wr_server_init_with_message(wr_server_t *server, wi_p7_message_t *message) { 
     65        server->name                            = wi_retain(wr_message_string_for_name(message, WI_STR("wired.info.name"))); 
     66        server->description                     = wi_retain(wr_message_string_for_name(message, WI_STR("wired.info.description"))); 
     67        server->start_time                      = wi_retain(wi_p7_message_date_for_name(message, WI_STR("wired.info.start_time"))); 
     68        server->application_name        = wi_retain(wr_message_string_for_name(message, WI_STR("wired.info.application_name"))); 
     69        server->application_version     = wi_retain(wr_message_string_for_name(message, WI_STR("wired.info.application_version"))); 
     70        server->os_name                         = wi_retain(wr_message_string_for_name(message, WI_STR("wired.info.os_name"))); 
     71        server->os_version                      = wi_retain(wr_message_string_for_name(message, WI_STR("wired.info.os_version"))); 
     72        server->arch                            = wi_retain(wr_message_string_for_name(message, WI_STR("wired.info.arch"))); 
     73//      server->files                           = wi_string_uint32(WI_ARRAY(arguments, 4)); 
     74//      server->size                            = wi_string_uint64(WI_ARRAY(arguments, 5)); 
     75 
    6476        return server; 
    6577} 
     
    7082        wr_server_t             *server = instance; 
    7183         
    72         wi_release(server->version); 
    7384        wi_release(server->name); 
    7485        wi_release(server->description); 
    75         wi_release(server->startdate); 
     86        wi_release(server->start_time); 
     87        wi_release(server->application_name); 
     88        wi_release(server->application_version); 
     89        wi_release(server->os_name); 
     90        wi_release(server->os_version); 
     91        wi_release(server->arch); 
    7692} 
  • wire/branches/p7/wire/server.h

    r4423 r4695  
    3333        wi_runtime_base_t                               base; 
    3434 
    35         wi_string_t                                             *version; 
    36         double                                                  protocol; 
    3735        wi_string_t                                             *name; 
    3836        wi_string_t                                             *description; 
    39         wi_date_t                                               *startdate; 
    40         uint32_t                                                files; 
    41         wi_file_offset_t                                size; 
     37        wi_date_t                                               *start_time; 
     38        wi_string_t                                             *application_name; 
     39        wi_string_t                                             *application_version; 
     40        wi_string_t                                             *os_name; 
     41        wi_string_t                                             *os_version; 
     42        wi_string_t                                             *arch; 
     43        uint64_t                                                files; 
     44        uint64_t                                                size; 
    4245}; 
    4346typedef struct _wr_server                       wr_server_t; 
     
    4750 
    4851wr_server_t *                                           wr_server_alloc(void); 
    49 wr_server_t *                                           wr_server_init(wr_server_t *); 
     52wr_server_t *                                           wr_server_init_with_message(wr_server_t *, wi_p7_message_t *); 
    5053 
    5154#endif /* WR_SERVER_H */ 
  • wire/branches/p7/wire/users.c

    r4577 r4695  
    127127 
    128128 
     129wr_user_t * wr_user_init_with_message(wr_user_t *user, wi_p7_message_t *message) { 
     130        wi_p7_message_get_uint32_for_name(message, &user->uid, WI_STR("wired.user.id")); 
     131        wi_p7_message_get_bool_for_name(message, &user->admin, WI_STR("wired.user.admin")); 
     132        wi_p7_message_get_bool_for_name(message, &user->idle, WI_STR("wired.user.idle")); 
     133 
     134        user->nick = wi_retain(wi_p7_message_string_for_name(message, WI_STR("wired.user.nick"))); 
     135        user->status = wi_retain(wi_p7_message_string_for_name(message, WI_STR("wired.user.status"))); 
     136         
     137        return user; 
     138} 
     139 
     140 
     141 
    129142wr_user_t * wr_user_init_with_arguments(wr_user_t *user, wi_array_t *arguments) { 
    130143        user->uid               = wi_string_uint32(WI_ARRAY(arguments, 1)); 
  • wire/branches/p7/wire/users.h

    r4423 r4695  
    4242 
    4343wr_user_t *                                                     wr_user_alloc(void); 
     44wr_user_t *                                                     wr_user_init_with_message(wr_user_t *, wi_p7_message_t *); 
    4445wr_user_t *                                                     wr_user_init_with_arguments(wr_user_t *, wi_array_t *); 
    4546 
  • wire/branches/p7/wire/windows.c

    r4423 r4695  
    543543        wr_printf_block(WI_STR("Description:  %@"), wr_server->description); 
    544544 
    545         interval = wi_time_interval_string(wi_date_time_interval_since_now(wr_server->startdate)); 
    546         string = wi_date_string_with_format(wr_server->startdate, WI_STR("%a %b %e %T %Y")); 
     545        interval = wi_time_interval_string(wi_date_time_interval_since_now(wr_server->start_time)); 
     546        string = wi_date_string_with_format(wr_server->start_time, WI_STR("%a %b %e %T %Y")); 
    547547        wr_printf_block(WI_STR("Uptime:       %@, since %@"), interval, string); 
    548548 
    549549        wr_printf_block(WI_STR("Files:        %@"), wr_files_string_for_count(wr_server->files)); 
    550550        wr_printf_block(WI_STR("Size:         %@"), wr_files_string_for_size(wr_server->size)); 
    551         wr_printf_block(WI_STR("Version:      %@"), wr_server->version); 
    552         wr_printf_block(WI_STR("Protocol:     %.1f"), wr_server->protocol); 
    553         wr_printf_block(WI_STR("SSL Protocol: %@"), wi_socket_cipher_version(wr_socket)); 
    554         wr_printf_block(WI_STR("Cipher:       %@/%u bits"), 
    555                 wi_socket_cipher_name(wr_socket), 
    556                 wi_socket_cipher_bits(wr_socket)); 
    557         wr_printf_block(WI_STR("Certificate:  %@/%u bits, %@"), 
    558                 wi_socket_certificate_name(wr_socket), 
    559                 wi_socket_certificate_bits(wr_socket), 
    560                 wi_socket_certificate_hostname(wr_socket)); 
     551        wr_printf_block(WI_STR("Cipher:       %u-bit %@"), 
     552                wi_cipher_bits(wi_p7_socket_cipher(wr_p7_socket)), 
     553                wi_cipher_name(wi_p7_socket_cipher(wr_p7_socket))); 
    561554} 
    562555