void tst_QXmppIceConnection::testBind()
{
    const int componentId = 1024;

    QXmppLogger logger;
    logger.setLoggingType(QXmppLogger::StdoutLogging);

    QXmppIceConnection client;
    connect(&client, SIGNAL(logMessage(QXmppLogger::MessageType,QString)),
            &logger, SLOT(log(QXmppLogger::MessageType,QString)));
    client.setIceControlling(true);
    client.addComponent(componentId);

    QXmppIceComponent *component = client.component(componentId);
    QVERIFY(component);

    QCOMPARE(client.gatheringState(), QXmppIceConnection::NewGatheringState);
    client.bind(QXmppIceComponent::discoverAddresses());
    QCOMPARE(client.gatheringState(), QXmppIceConnection::CompleteGatheringState);
    QCOMPARE(client.localCandidates().size(), component->localCandidates().size());
    QVERIFY(!client.localCandidates().isEmpty());
    foreach (const QXmppJingleCandidate &c, client.localCandidates()) {
        QCOMPARE(c.component(), componentId);
        QCOMPARE(c.type(), QXmppJingleCandidate::HostType);
    }
}
Beispiel #2
0
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    // we want one argument : the domain to serve
    if (argc != 2)
    {
        fprintf(stderr, "Usage: xmppServer <domain>\n");
        return EXIT_FAILURE;
    }
    const QString domain = QString::fromLocal8Bit(argv[1]);

    QXmppLogger logger;
    logger.setLoggingType(QXmppLogger::StdoutLogging);
    
    passwordChecker checker;

    QXmppServer server;
    server.setDomain(domain);
    server.setLogger(&logger);
    server.setPasswordChecker(&checker);
    server.listenForClients();
    server.listenForServers();
    return a.exec();
}
void Lvk::CA::XmppChatbot::setupLogger()
{
    Cmn::Settings settings;
    QString logsPath = settings.value(SETTING_LOGS_PATH).toString();
    QString logFilename = logsPath + QDir::separator() + "./xmpp.log";

    Cmn::Logger::rotateLog(logFilename);

    QXmppLogger *xmppLogger = new QXmppLogger(this);
    xmppLogger->setLoggingType(QXmppLogger::FileLogging);
    xmppLogger->setLogFilePath(logFilename);
    xmppLogger->setMessageTypes(QXmppLogger::AnyMessage);
    m_xmppClient->setLogger(xmppLogger);
}
void tst_QXmppIceConnection::testConnect()
{
    const int componentId = 1024;

    QXmppLogger logger;
    logger.setLoggingType(QXmppLogger::StdoutLogging);

    QXmppIceConnection clientL;
    connect(&clientL, SIGNAL(logMessage(QXmppLogger::MessageType,QString)),
            &logger, SLOT(log(QXmppLogger::MessageType,QString)));
    clientL.setIceControlling(true);
    clientL.addComponent(componentId);
    clientL.bind(QXmppIceComponent::discoverAddresses());

    QXmppIceConnection clientR;
    connect(&clientR, SIGNAL(logMessage(QXmppLogger::MessageType,QString)),
            &logger, SLOT(log(QXmppLogger::MessageType,QString)));
    clientR.setIceControlling(false);
    clientR.addComponent(componentId);
    clientR.bind(QXmppIceComponent::discoverAddresses());

    // exchange credentials
    clientL.setRemoteUser(clientR.localUser());
    clientL.setRemotePassword(clientR.localPassword());
    clientR.setRemoteUser(clientL.localUser());
    clientR.setRemotePassword(clientL.localPassword());

    // exchange candidates
    foreach (const QXmppJingleCandidate &candidate, clientR.localCandidates())
        clientL.addRemoteCandidate(candidate);
    foreach (const QXmppJingleCandidate &candidate, clientL.localCandidates())
        clientR.addRemoteCandidate(candidate);

    // start ICE
    QEventLoop loop;
    connect(&clientL, SIGNAL(connected()), &loop, SLOT(quit()));
    connect(&clientR, SIGNAL(connected()), &loop, SLOT(quit()));

    clientL.connectToHost();
    clientR.connectToHost();

    // check both clients are connected
    loop.exec();
    loop.exec();
    QVERIFY(clientL.isConnected());
    QVERIFY(clientR.isConnected());
}
void tst_QXmppIceConnection::testBindStun()
{
    const int componentId = 1024;

    QXmppLogger logger;
    logger.setLoggingType(QXmppLogger::StdoutLogging);

    QHostInfo stunInfo = QHostInfo::fromName("stun.l.google.com");
    QVERIFY(!stunInfo.addresses().isEmpty());

    QXmppIceConnection client;
    connect(&client, SIGNAL(logMessage(QXmppLogger::MessageType,QString)),
            &logger, SLOT(log(QXmppLogger::MessageType,QString)));
    client.setIceControlling(true);
    client.setStunServer(stunInfo.addresses().first(), 19302);
    client.addComponent(componentId);

    QXmppIceComponent *component = client.component(componentId);
    QVERIFY(component);

    QCOMPARE(client.gatheringState(), QXmppIceConnection::NewGatheringState);
    client.bind(QXmppIceComponent::discoverAddresses());
    QCOMPARE(client.gatheringState(), QXmppIceConnection::BusyGatheringState);

    QEventLoop loop;
    connect(&client, SIGNAL(gatheringStateChanged()),
            &loop, SLOT(quit()));
    loop.exec();

    bool foundReflexive = false;
    QCOMPARE(client.gatheringState(), QXmppIceConnection::CompleteGatheringState);
    QCOMPARE(client.localCandidates().size(), component->localCandidates().size());
    QVERIFY(!client.localCandidates().isEmpty());
    foreach (const QXmppJingleCandidate &c, client.localCandidates()) {
        QCOMPARE(c.component(), componentId);
        if (c.type() == QXmppJingleCandidate::ServerReflexiveType)
            foundReflexive = true;
        else
            QCOMPARE(c.type(), QXmppJingleCandidate::HostType);
    }
    QVERIFY(foundReflexive);
}
Beispiel #6
0
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
  
    // Set up logging 
    QXmppLogger *logger = QXmppLogger::getLogger();
    logger->setLoggingType(QXmppLogger::SignalLogging);

    LogViewer viewer;
    QObject::connect(logger, SIGNAL(message(QXmppLogger::MessageType,QString)),
            &viewer, SLOT(log(QXmppLogger::MessageType,QString)));
    viewer.show();

    // Connect to server
    QXmppClient client;
    // client.connectToServer("*****@*****.**", "passwd");
    client.connectToServer("*****@*****.**", "qxmpp123");

    return a.exec();
}
Beispiel #7
0
int
main (int argc, char* argv[])
{
  QCoreApplication::setApplicationName ("egalite");
  QCoreApplication::setOrganizationName ("BerndStramm");
  QCoreApplication::setOrganizationDomain ("bernd-stramm.com");
  deliberate::ProgramVersion pv ("Egalite");
  QCoreApplication::setApplicationVersion (pv.Version());

#if EGALITE_GENCERT
  QCA::Initializer  qcaInit;
#endif
  
  QApplication  app (argc,argv);

  QSettings  settings;
  deliberate::SetSettings (settings);
  settings.setValue ("program",pv.MyName());


  QStringList  configMessages;  
  configMessages.append (QObject::tr("Build with Qt %1").arg(QT_VERSION_STR));
  configMessages.append (QObject::tr("Running with Qt %1").arg(qVersion()));
  
  bool qcaGenerateSupported (false);
  
#if EGALITE_GENCERT
  QCA::scanForPlugins ();
  qcaGenerateSupported = QCA::isSupported ("cert");
#endif
  
  // We need to ensure that we have certificate handling support
  if ( qcaGenerateSupported ) {
    configMessages << "No PKI certificate support on this system" ;
  } else {
    configMessages << " Certificate support available ";
  }
  #if DO_AUDIO
    #if DELIBERATE_QT_AUDIO_OK
    configMessages << QString(" Audio enabled with Qt %1") 
                      .arg (DELIBERATE_QT_NUM) ;
    #else
    configMessages << QString(" No Audio Input with Qt %1") 
                       .arg (DELIBERATE_QT_NUM) ;
    #endif
  #else
    #if DO_MOBI_AUDIO
      #if DELIBERATE_QT_AUDIO_OK
      configMessages << QString(" MobilAudio enabled with Qt %1") 
                        .arg (DELIBERATE_QT_NUM) ;
      #else
      configMessages << QString(" No MobilAudio Input with Qt %1") 
                         .arg (DELIBERATE_QT_NUM) ;
      #endif
    #else
    configMessages << QString (" Audio Disabled in Build Configuration");
    #endif
  #endif
  QString locale = QLocale::system().name();
  QTranslator  translate;
  QString xlateFile (QString ("egalite_") + locale);
  QString langDir (":/translate");
  translate.load (xlateFile, langDir);
  QTextCodec::setCodecForTr (QTextCodec::codecForName ("utf8"));
  app.installTranslator (&translate);

  deliberate::CmdOptions  opts ("Egalite");
  opts.AddSoloOption ("debug","D",QObject::tr("show Debug log window"));
  opts.AddStringOption ("logdebug","L",QObject::tr("write Debug log to file"));
  opts.AddStringOption ("lang","l",
                   QObject::tr("language (2-letter lower case)"));
  opts.AddSoloOption ("phone","P",QObject::tr("use phone user interface"));

 // deliberate::UseMyOwnMessageHandler ();

  bool optsOk = opts.Parse (argc, argv);
  if (!optsOk) {
    opts.Usage ();
    exit(1);
  }
  if (opts.WantHelp ()) {
    opts.Usage ();
    exit (0);
  }
  pv.CLIVersion ();
  for (int cm=0; cm<configMessages.size(); cm++) {
    deliberate::StdOut () << configMessages[cm] << endl;
  }
  if (opts.WantVersion ()) {
    exit (0);
  }
  bool showDebug = opts.SeenOpt ("debug");

  deliberate::StartDebugLog (showDebug);
  bool logDebug = opts.SeenOpt ("logdebug");
  if (logDebug) {
    QString logfile ("/dev/null");
    opts.SetStringOpt ("logdebug",logfile);
    deliberate::StartFileLog (logfile);
  }
  QXmppLogger * xlogger = QXmppLogger::getLogger();
  if (showDebug || logDebug) {
    xlogger->setLoggingType (QXmppLogger::FileLogging);
  } else {
    xlogger->setLoggingType (QXmppLogger::NoLogging);
  }

  if (opts.SeenOpt ("lang")) {
    QString newlocale (locale);
    opts.SetStringOpt ("lang",newlocale);
    if (newlocale != locale) {   
      QString xlateFile (QString ("egalite_") + newlocale);
      QString langDir (":/translate");
      translate.load (xlateFile, langDir);
      QTextCodec::setCodecForTr (QTextCodec::codecForName ("utf8"));
      app.installTranslator (&translate);
    }
  }
  /** the real main program starts here */
  qDebug () << " plugin library paths " <<  QCoreApplication::libraryPaths();

  egalite::DChatMain  chatmain;
#if 0
  QString defaultFamily = QFont().family ();
  QString fontFamily ("default");
  int pointSize (-1);
  fontFamily = deliberate::Settings().value("style/normalfont",fontFamily)
                   .toString();
  deliberate::Settings().setValue ("style/normalfont",fontFamily);
  if (fontFamily == "default") {
    fontFamily = defaultFamily;
  }
  pointSize = deliberate::Settings().value ("style/normalpointsize",pointSize)
                   .toInt ();
  deliberate::Settings().setValue ("style/normalpointsize",pointSize);
  if (pointSize < 0) {
    pointSize = QFont().pointSize();
  }
  app.setFont (QFont (fontFamily, pointSize));
#endif
  bool isPhone = opts.SeenOpt("phone");
  if (isPhone) {
    QFont font = app.font();
    font.setPointSize(font.pointSize()+6);
    app.setFont(font);
  }
  qDebug () << " setting point size to " << app.font().pointSize();
  chatmain.Init (&app,isPhone);
  chatmain.setWindowTitle (egalite::Magic::Name);
  app.setWindowIcon (chatmain.windowIcon());

  chatmain.AddConfigMessages (configMessages);

  chatmain.Run ();
  int result = app.exec ();
  qDebug () << " application returns " << result;
}