123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251 |
- #include <QtGui>
- #include <fshost.h>
- #include "prefsofia.h"
- PrefSofia::PrefSofia(Ui::PrefDialog *ui, QObject *parent) :
- QObject(parent),
- _ui(ui)
- {
- }
- void PrefSofia::readConfig()
- {
- ISettings *settings = new ISettings();
- QDomElement cfg = settings->getConfigNode("sofia.conf");
- if ( cfg.isNull() ) {
- qDebug() << "Issue a big warning!";
- return;
- }
- int guess_mask;
- char guess_ip[80];
- switch_find_local_ip(guess_ip, sizeof(guess_ip), &guess_mask, AF_INET);
- _ui->sofiaRtpIpEdit->setText(QString(guess_ip));
- _ui->sofiaSipIpEdit->setText(QString(guess_ip));
- /* General Settings */
- QDomNodeList l = cfg.elementsByTagName("global_settings");
- QDomNodeList global_params = l.at(0).toElement().elementsByTagName("param");
- for (int i = 0; i < global_params.count(); i++) {
- QDomElement el = global_params.at(i).toElement();
- if ( el.attribute("name") == "log-level" ) {
- _ui->sofiaLogLevelSpin->setValue(el.attribute("value").toInt());
- }
- if ( el.attribute("name") == "auto-restart") {
- _ui->sofiaAutoRestartCombo->setCurrentIndex(_ui->sofiaAutoRestartCombo->findText(el.attribute("value")));
- }
- if ( el.attribute("name") == "debug-presence") {
- _ui->sofiaDebugPresenceSpin->setValue(el.attribute("value").toInt());
- }
- }
- /* Profile settings */
- /* Get only the first settings, meaning one profile supported so far */
- QDomNodeList params = cfg.elementsByTagName("settings").at(0).toElement().elementsByTagName("param");
- for (int i = 0; i < params.count(); i++) {
- QDomElement el = params.at(i).toElement();
- if ( el.attribute("name") == "user-agent-string") {
- _ui->sofiaUserAgentStringEdit->setText(el.attribute("value"));
- }
- if ( el.attribute("name") == "debug") {
- _ui->sofiaDebugSpin->setValue(el.attribute("value").toInt());
- }
- if ( el.attribute("name") == "sip-trace") {
- _ui->sofiaSipTraceCombo->setCurrentIndex(_ui->sofiaSipTraceCombo->findText(el.attribute("value")));
- }
- if ( el.attribute("name") == "context") {
- _ui->sofiaContextEdit->setText(el.attribute("value"));
- }
- if ( el.attribute("name") == "rfc2833-pt") {
- _ui->sofiaRfc2833PtEdit->setText(el.attribute("value"));
- }
- if ( el.attribute("name") == "sip-port") {
- _ui->sofiaSipPortSpin->setValue(el.attribute("value").toInt());
- }
- if ( el.attribute("name") == "dialplan") {
- _ui->sofiaDialplanEdit->setText(el.attribute("value"));
- }
- if ( el.attribute("name") == "dtmf-duration") {
- _ui->sofiaDtmfDurationSpin->setValue(el.attribute("value").toInt());
- }
- if ( el.attribute("name") == "codec-prefs") {
- _ui->sofiaProfileCodecWidget->setCodecString(el.attribute("value"));
- }
- if ( el.attribute("name") == "use-rtp-timer") {
- _ui->sofiaUseRtpTimerCombo->setCurrentIndex(_ui->sofiaUseRtpTimerCombo->findText(el.attribute("value")));
- }
- if ( el.attribute("name") == "rtp-timer-name") {
- _ui->sofiaRtpTimerNameEdit->setText(el.attribute("value"));
- }
- if ( el.attribute("name") == "rtp-ip") {
- _ui->sofiaRtpIpEdit->setText(el.attribute("value"));
- }
- if ( el.attribute("name") == "sip-ip") {
- _ui->sofiaSipIpEdit->setText(el.attribute("value"));
- }
- if ( el.attribute("name") == "hold-music") {
- _ui->sofiaHoldMusicEdit->setText(el.attribute("value"));
- }
- if ( el.attribute("name") == "apply-nat-acl") {
- _ui->sofiaApplyNatAclEdit->setText(el.attribute("value"));
- }
- if ( el.attribute("name") == "manage-presence") {
- _ui->sofiaManagePresenceCombo->setCurrentIndex(_ui->sofiaManagePresenceCombo->findText(el.attribute("value")));
- }
- if ( el.attribute("name") == "max-proceeding") {
- _ui->sofiaMaxProceedingEdit->setValue(el.attribute("value").toInt());
- }
- if ( el.attribute("name") == "inbound-codec-negotiation") {
- _ui->sofiaInboundCodecNegotiationCombo->setCurrentIndex(_ui->sofiaInboundCodecNegotiationCombo->findText(el.attribute("value")));
- }
- if ( el.attribute("name") == "nonce-ttl") {
- _ui->sofiaNonceTtlSpin->setValue(el.attribute("value").toInt());
- }
- if ( el.attribute("name") == "auth-calls") {
- _ui->sofiaAuthCallsCombo->setCurrentIndex(_ui->sofiaAuthCallsCombo->findText(el.attribute("value")));
- }
- if ( el.attribute("name") == "auth-all-packets") {
- _ui->sofiaAuthAllPacketsCombo->setCurrentIndex(_ui->sofiaAuthAllPacketsCombo->findText(el.attribute("value")));
- }
- if ( el.attribute("name") == "ext-sip-ip") {
- _ui->sofiaExtSipIpEdit->setText(el.attribute("value"));
- }
- if ( el.attribute("name") == "rtp-timeout-sec") {
- _ui->sofiaRtpTimeoutSecSpin->setValue(el.attribute("value").toInt());
- }
- if ( el.attribute("name") == "rtp-hold-timeout-sec") {
- _ui->sofiaRtpHoldTimeoutSecSpin->setValue(el.attribute("value").toInt());
- }
- if ( el.attribute("name") == "disable-register") {
- _ui->sofiaDisableRegisterCombo->setCurrentIndex(_ui->sofiaDisableRegisterCombo->findText(el.attribute("value")));
- }
- if ( el.attribute("name") == "challenge-realm") {
- _ui->sofiaChallengeRealmCombo->setCurrentIndex(_ui->sofiaChallengeRealmCombo->findText(el.attribute("value")));
- }
- }
- delete (settings);
- }
- void PrefSofia::postWriteConfig() {
- /* Here, we have to know if we need to restart the profile or not */
- return;
- }
- void PrefSofia::writeConfig()
- {
- ISettings *settings = new ISettings(this);
- QDomElement e = settings->getConfigNode("sofia.conf");
- QDomNodeList nl = e.elementsByTagName("global_settings").at(0).toElement().elementsByTagName("param");
- /* General Settings */
- for (int i = 0; i < nl.count(); i++) {
- QDomElement el = nl.at(i).toElement();
- QDomAttr val = el.attributeNode("value");
- QDomAttr var = el.attributeNode("name");
- if ( var.value() == "log-level" ) {
- val.setValue(QString::number(_ui->sofiaLogLevelSpin->value()));
- }
- if ( var.value() == "auto-restart" ) {
- val.setValue(_ui->sofiaAutoRestartCombo->currentText());
- }
- if ( var.value() == "debug-presence" ) {
- val.setValue(QString::number(_ui->sofiaDebugPresenceSpin->value()));
- }
- if ( var.value() == "rewrite-multicasted-fs-path" ) {
- val.setValue(_ui->sofiaRewriteMulticastedFsPathCombo->currentText());
- }
- }
- /* Profile settings */
- /* Get only the first settings, meaning one profile supported so far */
- QDomNodeList params = e.elementsByTagName("settings").at(0).toElement().elementsByTagName("param");
- for (int i = 0; i < params.count(); i++) {
- QDomElement el = params.at(i).toElement();
- QDomAttr val = el.attributeNode("value");
- if ( el.attribute("name") == "user-agent-string") {
- val.setValue(_ui->sofiaUserAgentStringEdit->text());
- }
- if ( el.attribute("name") == "debug") {
- val.setValue(QString::number(_ui->sofiaDebugSpin->value()));
- }
- if ( el.attribute("name") == "sip-trace") {
- val.setValue(_ui->sofiaSipTraceCombo->currentText());
- }
- if ( el.attribute("name") == "context") {
- val.setValue(_ui->sofiaContextEdit->text());
- }
- if ( el.attribute("name") == "rfc2833-pt") {
- val.setValue(_ui->sofiaRfc2833PtEdit->text());
- }
- if ( el.attribute("name") == "sip-port") {
- val.setValue(QString::number(_ui->sofiaSipPortSpin->value()));
- }
- if ( el.attribute("name") == "dialplan") {
- val.setValue(_ui->sofiaDialplanEdit->text());
- }
- if ( el.attribute("name") == "dtmf-duration") {
- val.setValue(QString::number(_ui->sofiaDtmfDurationSpin->value()));
- }
- if ( el.attribute("name") == "codec-prefs") {
- val.setValue(_ui->sofiaProfileCodecWidget->getCodecString());
- }
- if ( el.attribute("name") == "use-rtp-timer") {
- val.setValue(_ui->sofiaUseRtpTimerCombo->currentText());
- }
- if ( el.attribute("name") == "rtp-timer-name") {
- val.setValue(_ui->sofiaRtpTimerNameEdit->text());
- }
- if ( el.attribute("name") == "rtp-ip") {
- val.setValue(_ui->sofiaRtpIpEdit->text());
- }
- if ( el.attribute("name") == "sip-ip") {
- val.setValue(_ui->sofiaSipIpEdit->text());
- }
- if ( el.attribute("name") == "hold-music") {
- val.setValue(_ui->sofiaHoldMusicEdit->text());
- }
- if ( el.attribute("name") == "apply-nat-acl") {
- val.setValue(_ui->sofiaApplyNatAclEdit->text());
- }
- if ( el.attribute("name") == "manage-presence") {
- val.setValue(_ui->sofiaManagePresenceCombo->currentText());
- }
- if ( el.attribute("name") == "max-proceeding") {
- val.setValue(_ui->sofiaMaxProceedingEdit->text());
- }
- if ( el.attribute("name") == "inbound-codec-negotiation") {
- val.setValue(_ui->sofiaInboundCodecNegotiationCombo->currentText());
- }
- if ( el.attribute("name") == "nonce-ttl") {
- val.setValue(QString::number(_ui->sofiaNonceTtlSpin->value()));
- }
- if ( el.attribute("name") == "auth-calls") {
- val.setValue(_ui->sofiaAuthCallsCombo->currentText());
- }
- if ( el.attribute("name") == "auth-all-packets") {
- val.setValue(_ui->sofiaAuthAllPacketsCombo->currentText());
- }
- if ( el.attribute("name") == "ext-rtp-ip") {
- val.setValue(_ui->sofiaExtRtpIpEdit->text());
- }
- if ( el.attribute("name") == "ext-sip-ip") {
- val.setValue(_ui->sofiaExtSipIpEdit->text());
- }
- if ( el.attribute("name") == "rtp-timeout-sec") {
- val.setValue(QString::number(_ui->sofiaRtpTimeoutSecSpin->value()));
- }
- if ( el.attribute("name") == "rtp-hold-timeout-sec") {
- val.setValue(QString::number(_ui->sofiaRtpHoldTimeoutSecSpin->value()));
- }
- if ( el.attribute("name") == "disable-register") {
- val.setValue(_ui->sofiaDisableRegisterCombo->currentText());
- }
- if ( el.attribute("name") == "challenge-realm") {
- val.setValue(_ui->sofiaChallengeRealmCombo->currentText());
- }
- }
- settings->setConfigNode(e, "sofia.conf");
- delete(settings);
- }
|