From 1bfb42f748947a224da4dbb31508aa3281e7898b Mon Sep 17 00:00:00 2001 From: Michal Kubecek Date: Mon, 13 Apr 2015 10:10:00 +0200 Subject: replace common C++ by GNU uCommon/commoncpp Also requires version 2 of libccrtp and libzrtpcpp. --- configure.in | 13 +++--- src/audio/audio_decoder.h | 1 - src/audio/audio_encoder.h | 1 - src/audio/audio_rx.cpp | 1 - src/audio/dtmf_player.h | 1 - src/audio/freq_gen.h | 2 +- src/audio/tone_gen.h | 1 - src/call_script.h | 1 - src/mwi/simple_msg_sum_body.h | 1 - src/parser/request.cpp | 105 +++++++++++++++++++----------------------- src/parser/sip_body.h | 2 +- src/sequence_number.h | 1 - src/sys_settings.cpp | 2 +- src/user.h | 1 - src/util.h | 2 +- 15 files changed, 58 insertions(+), 77 deletions(-) diff --git a/configure.in b/configure.in index edd4953..491c733 100644 --- a/configure.in +++ b/configure.in @@ -45,10 +45,6 @@ AC_CHECK_HEADERS([linux/errqueue.h],[],[],[ #include #endif]) -# Check version of the Common C++ library. -# This also sets the cc++2 include directory in CXXFLAGS -OST_CCXX2_VERSION(1.6.0,,exit) - # Temporarily add some default directories to PKG_CONFIG_PATH such that # the user will not be burdened with setting PKG_CONFIG_PATH OLD_PKG_CONFIG_PATH=$PKG_CONFIG_PATH @@ -66,7 +62,9 @@ fi export PKG_CONFIG_PATH -PKG_CHECK_MODULES(CCRTP, libccrtp1 >= 1.6.0) +PKG_CHECK_MODULES(CCRTP, libccrtp >= 2.0.0) +PKG_CHECK_MODULES(UCOMMON, ucommon >= 5.0.0) +CCRTP_LIBS="$CCRTP_LIBS $UCOMMON_LIBS" PKG_CHECK_MODULES(XML2, libxml-2.0) # AC_CHECK_HEADER(libxml/tree.h, [], @@ -136,7 +134,7 @@ done #echo "INCLUDEPATH += `$CCGNU2_CONFIG --includes`" | sed -e s/-I//g > $QT_INCL_PRO # libccrtp1(ccrtp) depend from libccgnu2(commoncpp2) and # should include above flags ! -echo "INCLUDEPATH += `$PKG_CONFIG --cflags-only-I libccrtp1`" | sed -e s/-I//g >> $QT_INCL_PRO +echo "INCLUDEPATH += `$PKG_CONFIG --cflags-only-I libccrtp`" | sed -e s/-I//g >> $QT_INCL_PRO echo "INCLUDEPATH += `$PKG_CONFIG --cflags-only-I libxml-2.0`" | sed -e s/-I//g >> $QT_INCL_PRO # get libraries specified on command line @@ -144,6 +142,7 @@ echo $LDFLAGS | xargs echo LIBS += >> $QT_INCL_PRO echo "LIBS += `$CCGNU2_CONFIG --stdlibs`" >> $QT_INCL_PRO echo "LIBS += $CCRTP_LIBS" >> $QT_INCL_PRO +echo "LIBS += $UCOMMON_LIBS" >> $QT_INCL_PRO echo "LIBS += $XML2_LIBS" >> $QT_INCL_PRO # Check if KDE is available @@ -264,7 +263,7 @@ fi # Check if zrtp is available if test "x$ac_cv_zrtp" = "xyes" then - PKG_CHECK_MODULES(ZRTP, libzrtpcpp >= 1.3.0) + PKG_CHECK_MODULES(ZRTP, libzrtpcpp >= 2.0.0) AC_CHECK_LIB(zrtpcpp, main, [ AC_CHECK_HEADER(libzrtpcpp/ZrtpQueue.h, [], [AC_MSG_ERROR([zrtp header files missing])]) diff --git a/src/audio/audio_decoder.h b/src/audio/audio_decoder.h index 5fa9c55..cee198f 100644 --- a/src/audio/audio_decoder.h +++ b/src/audio/audio_decoder.h @@ -21,7 +21,6 @@ #ifndef _AUDIO_DECODER_H #define _AUDIO_DECODER_H -#include #include "twinkle_config.h" #include "audio_codecs.h" #include "user.h" diff --git a/src/audio/audio_encoder.h b/src/audio/audio_encoder.h index d280567..e2fb874 100644 --- a/src/audio/audio_encoder.h +++ b/src/audio/audio_encoder.h @@ -21,7 +21,6 @@ #ifndef _AUDIO_ENCODER_H #define _AUDIO_ENCODER_H -#include #include "twinkle_config.h" #include "audio_codecs.h" #include "user.h" diff --git a/src/audio/audio_rx.cpp b/src/audio/audio_rx.cpp index bb6db2b..db6d4f3 100644 --- a/src/audio/audio_rx.cpp +++ b/src/audio/audio_rx.cpp @@ -22,7 +22,6 @@ #include #include #include -#include #include "audio_rx.h" #include "log.h" diff --git a/src/audio/dtmf_player.h b/src/audio/dtmf_player.h index 5fa88db..0145289 100644 --- a/src/audio/dtmf_player.h +++ b/src/audio/dtmf_player.h @@ -21,7 +21,6 @@ #ifndef _DTMF_PLAYER_H #define _DTMF_PLAYER_H -#include #include "twinkle_config.h" #include "audio_encoder.h" #include "freq_gen.h" diff --git a/src/audio/freq_gen.h b/src/audio/freq_gen.h index 5659739..6817baa 100644 --- a/src/audio/freq_gen.h +++ b/src/audio/freq_gen.h @@ -26,7 +26,7 @@ #define _FREQ_GEN_H #include -#include +#include using namespace std; diff --git a/src/audio/tone_gen.h b/src/audio/tone_gen.h index 1323fd4..a789734 100644 --- a/src/audio/tone_gen.h +++ b/src/audio/tone_gen.h @@ -21,7 +21,6 @@ #include #include -#include #include #include "sys_settings.h" #include "threads/mutex.h" diff --git a/src/call_script.h b/src/call_script.h index 4253bda..db19987 100644 --- a/src/call_script.h +++ b/src/call_script.h @@ -65,7 +65,6 @@ #include #include -#include #include "user.h" #include "parser/request.h" diff --git a/src/mwi/simple_msg_sum_body.h b/src/mwi/simple_msg_sum_body.h index 48f7584..346626f 100644 --- a/src/mwi/simple_msg_sum_body.h +++ b/src/mwi/simple_msg_sum_body.h @@ -26,7 +26,6 @@ #include #include -#include #include "parser/sip_body.h" #include "sockets/url.h" diff --git a/src/parser/request.cpp b/src/parser/request.cpp index 1e678d4..550a011 100644 --- a/src/parser/request.cpp +++ b/src/parser/request.cpp @@ -23,9 +23,9 @@ #include "milenage.h" #include "audits/memman.h" #include -#include +#include -using namespace ost; +using namespace UCOMMON_NAMESPACE; // AKAv1-MD5 algorithm specific helpers @@ -148,10 +148,10 @@ int b64_dec(const u8 * src, u8 * dst, int len) // authentication with AKAv1-MD5 algorithm (RFC 3310) bool t_request::authorize_akav1_md5(const t_digest_challenge &dchlg, - const string &username, const string &passwd, uint8 *op, uint8 *amf, + const std::string &username, const std::string &passwd, uint8 *op, uint8 *amf, unsigned long nc, - const string &cnonce, const string &qop, string &resp, - string &fail_reason) const + const std::string &cnonce, const std::string &qop, std::string &resp, + std::string &fail_reason) const { u8 nonce64[B64_DEC_SZ(dchlg.nonce.size())]; int len = b64_dec((const u8 *)dchlg.nonce.c_str(), nonce64, dchlg.nonce.size()); @@ -183,7 +183,7 @@ bool t_request::authorize_akav1_md5(const t_digest_challenge &dchlg, for (i=0; i < AKA_SQNLEN; i++) sqn[i] = sqnxoraka[i] ^ ak[i]; - string res_str = string((char *)res, AKA_RESLEN); + std::string res_str = std::string((char *)res, AKA_RESLEN); return authorize_md5(dchlg, username, res_str, nc, cnonce, qop, resp, fail_reason); @@ -192,11 +192,11 @@ bool t_request::authorize_akav1_md5(const t_digest_challenge &dchlg, // authentication with MD5 algorithm bool t_request::authorize_md5(const t_digest_challenge &dchlg, - const string &username, const string &passwd, unsigned long nc, - const string &cnonce, const string &qop, string &resp, - string &fail_reason) const + const std::string &username, const std::string &passwd, unsigned long nc, + const std::string &cnonce, const std::string &qop, std::string &resp, + std::string &fail_reason) const { - string A1, A2; + std::string A1, A2; // RFC 2617 3.2.2.2 A1 = username + ":" + dchlg.realm + ":" + passwd; @@ -207,60 +207,51 @@ bool t_request::authorize_md5(const t_digest_challenge &dchlg, A2 = method2str(method, unknown_method) + ":" + uri.encode(); A2 += ":"; if (body) { - MD5Digest MD5body; - MD5body << body->encode(); - ostringstream os; - os << MD5body; - A2 += os.str(); + digest_t MD5body = "md5"; + MD5body.puts(body->encode().c_str()); + A2 += std::string(MD5body.c_str()); } else { - MD5Digest MD5body; - MD5body << ""; - ostringstream os; - os << MD5body; - A2 += os.str(); + digest_t MD5body = "md5"; + MD5body.puts(""); + A2 += std::string(MD5body.c_str()); } } - // RFC 2716 3.2.2.1 // Caculate digest - MD5Digest MD5A1; - MD5Digest MD5A2; - ostringstream HA1; - ostringstream HA2; + digest_t MD5A1 = "md5"; + digest_t MD5A2 = "md5"; - MD5A1 << A1; - MD5A2 << A2; - HA1 << MD5A1; - HA2 << MD5A2; + MD5A1.puts(A1.c_str()); + MD5A2.puts(A2.c_str()); - string x; + std::string x; if (cmp_nocase(qop, QOP_AUTH) == 0 || cmp_nocase(qop, QOP_AUTH_INT) == 0) { - x = HA1.str() + ":"; + x = std::string(MD5A1.c_str()); + x += ":"; x += dchlg.nonce + ":"; x += int2str(nc, "%08x") + ":"; x += cnonce + ":"; x += qop + ":"; - x += HA2.str(); + x += std::string(MD5A2.c_str()); } else { - x = HA1.str() + ":"; + x = std::string(MD5A1.c_str()); + x += ":"; x += dchlg.nonce + ":"; - x += HA2.str(); + x += std::string(MD5A2.c_str()); } - MD5Digest digest; - digest << x; - ostringstream dresp; - dresp << digest; + digest_t digest = "md5"; + digest.puts(x.c_str()); - resp = dresp.str(); + resp = std::string(digest.c_str()); return true; } bool t_request::authorize(const t_challenge &chlg, t_user *user_config, - const string &username, const string &passwd, unsigned long nc, - const string &cnonce, t_credentials &cr, string &fail_reason) const + const std::string &username, const std::string &passwd, unsigned long nc, + const std::string &cnonce, t_credentials &cr, std::string &fail_reason) const { // Only Digest authentication is supported if (cmp_nocase(chlg.auth_scheme, AUTH_DIGEST) != 0) { @@ -271,17 +262,17 @@ bool t_request::authorize(const t_challenge &chlg, t_user *user_config, const t_digest_challenge &dchlg = chlg.digest_challenge; - string qop = ""; + std::string qop = ""; // Determine QOP // If both auth and auth-int are supported by the server, then // choose auth to avoid problems with SIP ALGs. A SIP ALG rewrites // the body of a message, thereby breaking auth-int authentication. if (!dchlg.qop_options.empty()) { - const list::const_iterator i = find( + const list::const_iterator i = find( dchlg.qop_options.begin(), dchlg.qop_options.end(), QOP_AUTH_INT); - const list::const_iterator j = find( + const list::const_iterator j = find( dchlg.qop_options.begin(), dchlg.qop_options.end(), QOP_AUTH); if (j != dchlg.qop_options.end()) @@ -297,7 +288,7 @@ bool t_request::authorize(const t_challenge &chlg, t_user *user_config, } bool ret = false; - string resp; + std::string resp; if (cmp_nocase(dchlg.algorithm, ALG_MD5) == 0) { ret = authorize_md5(dchlg, username, passwd, nc, cnonce, @@ -359,15 +350,15 @@ t_request::t_request(const t_method m) : t_sip_message() { method = m; } -void t_request::set_method(const string &s) { +void t_request::set_method(const std::string &s) { method = str2method(s); if (method == METHOD_UNKNOWN) { unknown_method = s; } } -string t_request::encode(bool add_content_length) { - string s; +std::string t_request::encode(bool add_content_length) { + std::string s; s = method2str(method, unknown_method) + ' ' + uri.encode(); s += " SIP/"; @@ -377,9 +368,9 @@ string t_request::encode(bool add_content_length) { return s; } -list t_request::encode_env(void) { - string s; - list l = t_sip_message::encode_env(); +list t_request::encode_env(void) { + std::string s; + list l = t_sip_message::encode_env(); s = "SIPREQUEST_METHOD="; s += method2str(method, unknown_method); @@ -431,7 +422,7 @@ void t_request::set_route(const t_url &target_uri, const list &route_se } } -t_response *t_request::create_response(int code, string reason) const +t_response *t_request::create_response(int code, std::string reason) const { t_response *r; @@ -458,7 +449,7 @@ t_response *t_request::create_response(int code, string reason) const return r; } -bool t_request::is_valid(bool &fatal, string &reason) const { +bool t_request::is_valid(bool &fatal, std::string &reason) const { if (!t_sip_message::is_valid(fatal, reason)) return false; fatal = false; @@ -702,8 +693,8 @@ void t_request::set_destination(const t_ip_port &ip_port) { } bool t_request::www_authorize(const t_challenge &chlg, t_user *user_config, - const string &username, const string &passwd, unsigned long nc, - const string &cnonce, t_credentials &cr, string &fail_reason) + const std::string &username, const std::string &passwd, unsigned long nc, + const std::string &cnonce, t_credentials &cr, std::string &fail_reason) { if (!authorize(chlg, user_config, username, passwd, nc, cnonce, cr, fail_reason)) { return false; @@ -715,8 +706,8 @@ bool t_request::www_authorize(const t_challenge &chlg, t_user *user_config, } bool t_request::proxy_authorize(const t_challenge &chlg, t_user *user_config, - const string &username, const string &passwd, unsigned long nc, - const string &cnonce, t_credentials &cr, string &fail_reason) + const std::string &username, const std::string &passwd, unsigned long nc, + const std::string &cnonce, t_credentials &cr, std::string &fail_reason) { if (!authorize(chlg, user_config, username, passwd, nc, cnonce, cr, fail_reason)) { return false; diff --git a/src/parser/sip_body.h b/src/parser/sip_body.h index 88c93a7..a63115b 100644 --- a/src/parser/sip_body.h +++ b/src/parser/sip_body.h @@ -20,7 +20,7 @@ #ifndef _H_SIP_BODY #define _H_SIP_BODY -#include +#include #include #include diff --git a/src/sequence_number.h b/src/sequence_number.h index c192012..6119506 100644 --- a/src/sequence_number.h +++ b/src/sequence_number.h @@ -24,7 +24,6 @@ #ifndef _SEQUENCE_NUMBER_H #define _SEQUENCE_NUMBER_H -#include /** * Sequence numbers. diff --git a/src/sys_settings.cpp b/src/sys_settings.cpp index 36e7142..9a9ee11 100644 --- a/src/sys_settings.cpp +++ b/src/sys_settings.cpp @@ -1064,7 +1064,7 @@ string t_sys_settings::about(bool html) const { if (html) s += "
"; s += "\n"; - s += "* GNU CommonC++ - http://www.gnu.org/software/commoncpp"; + s += "* GNU uCommon C++ - http://www.gnutelephony.org/index.php/Category:Software"; if (html) s += "

"; s += "\n\n"; diff --git a/src/user.h b/src/user.h index 94c015a..f78652d 100644 --- a/src/user.h +++ b/src/user.h @@ -25,7 +25,6 @@ #include #include -#include #include "protocol.h" #include "sys_settings.h" #include "audio/audio_codecs.h" diff --git a/src/util.h b/src/util.h index b2509df..2f246da 100644 --- a/src/util.h +++ b/src/util.h @@ -26,7 +26,7 @@ #include #include -#include +#include using namespace std; -- cgit v1.2.3