| 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 | |
|---|
| | 667 | }*/ |
|---|
| | 668 | |
|---|
| | 669 | } |
|---|
| | 670 | |
|---|
| | 671 | |
|---|
| | 672 | |
|---|
| | 673 | static 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 | |
|---|
| | 692 | static 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 | /* |
|---|
| | 711 | static 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 | |
|---|
| | 748 | static 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 | |
|---|
| | 754 | static 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 | |
|---|
| | 768 | static 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 | |
|---|
| | 786 | static 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 | |
|---|
| | 804 | static 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 | |
|---|
| | 823 | static 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 | |
|---|
| | 846 | static 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 | |
|---|
| | 872 | static 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 | |
|---|
| | 896 | static 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 | |
|---|
| | 926 | static 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 | |
|---|
| | 956 | static 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 | } |
|---|