Mercurial > ~mikael > mcabber > hg
comparison mcabber/mcabber/xmpp_iq.c @ 2066:69699ba3010f
Add 'iq_version_hide', 'iq_version_hide_version'
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Sun, 28 Apr 2013 11:25:13 +0200 |
parents | c09fc3834c69 |
children | 79659eb4f66f |
comparison
equal
deleted
inserted
replaced
2065:c09fc3834c69 | 2066:69699ba3010f |
---|---|
700 LmHandlerResult handle_iq_version(LmMessageHandler *h, LmConnection *c, | 700 LmHandlerResult handle_iq_version(LmMessageHandler *h, LmConnection *c, |
701 LmMessage *m, gpointer ud) | 701 LmMessage *m, gpointer ud) |
702 { | 702 { |
703 LmMessage *r; | 703 LmMessage *r; |
704 LmMessageNode *query; | 704 LmMessageNode *query; |
705 char *os = NULL; | |
706 char *ver = mcabber_version(); | |
707 | 705 |
708 if (!settings_opt_get_int("iq_hide_requests")) { | 706 if (!settings_opt_get_int("iq_hide_requests")) { |
709 scr_LogPrint(LPRINT_LOGNORM, "Received an IQ version request from <%s>", | 707 scr_LogPrint(LPRINT_LOGNORM, "Received an IQ version request from <%s>", |
710 lm_message_get_from(m)); | 708 lm_message_get_from(m)); |
711 } | 709 } |
710 | |
711 if (settings_opt_get_int("iq_version_hide")) { | |
712 send_iq_error(c, m, XMPP_ERROR_SERVICE_UNAVAILABLE); | |
713 return LM_HANDLER_RESULT_REMOVE_MESSAGE; | |
714 } | |
715 | |
716 r = lm_message_new_iq_from_query(m, LM_MESSAGE_SUB_TYPE_RESULT); | |
717 | |
718 query = lm_message_node_add_child(r->node, "query", NULL); | |
719 lm_message_node_set_attribute(query, "xmlns", NS_VERSION); | |
720 | |
721 lm_message_node_add_child(query, "name", PACKAGE_NAME); | |
722 | |
723 // MCabber version | |
724 if (!settings_opt_get_int("iq_version_hide_version")) { | |
725 char *ver = mcabber_version(); | |
726 lm_message_node_add_child(query, "version", ver); | |
727 g_free(ver); | |
728 } | |
729 | |
730 // OS details | |
712 if (!settings_opt_get_int("iq_version_hide_os")) { | 731 if (!settings_opt_get_int("iq_version_hide_os")) { |
732 char *os; | |
713 struct utsname osinfo; | 733 struct utsname osinfo; |
714 uname(&osinfo); | 734 uname(&osinfo); |
715 os = g_strdup_printf("%s %s %s", osinfo.sysname, osinfo.release, | 735 os = g_strdup_printf("%s %s %s", osinfo.sysname, osinfo.release, |
716 osinfo.machine); | 736 osinfo.machine); |
717 } | |
718 | |
719 r = lm_message_new_iq_from_query(m, LM_MESSAGE_SUB_TYPE_RESULT); | |
720 | |
721 query = lm_message_node_add_child(r->node, "query", NULL); | |
722 lm_message_node_set_attribute(query, "xmlns", NS_VERSION); | |
723 | |
724 lm_message_node_add_child(query, "name", PACKAGE_NAME); | |
725 lm_message_node_add_child(query, "version", ver); | |
726 if (os) { | |
727 lm_message_node_add_child(query, "os", os); | 737 lm_message_node_add_child(query, "os", os); |
728 g_free(os); | 738 g_free(os); |
729 } | 739 } |
730 | 740 |
731 g_free(ver); | |
732 lm_connection_send(c, r, NULL); | 741 lm_connection_send(c, r, NULL); |
733 lm_message_unref(r); | 742 lm_message_unref(r); |
734 return LM_HANDLER_RESULT_REMOVE_MESSAGE; | 743 return LM_HANDLER_RESULT_REMOVE_MESSAGE; |
735 } | 744 } |
736 | 745 |