bool TConnectionProcessor::TOutboxQueue::transferMessage(const TRecipientPublicKey& senderId,
  const TPhysicalMailMessage& msg)
  {
  bool sendStatus = false;

  try
    {
    bts::extended_private_key senderPrivKey;
    if(findIdentityPrivateKey(senderId, &senderPrivKey))
      {
      TPhysicalMailMessage msgToSend(msg);
      TRecipientPublicKeys bccList(msg.bcc_list);
      /// \warning Message to be sent must have cleared bcc list.
      msgToSend.bcc_list.clear();

      size_t totalRecipientCount = msgToSend.to_list.size() + msgToSend.cc_list.size() + bccList.size();

      for(const auto& public_key : msgToSend.to_list)
        {
        if(isCancelled())
          return false;
        sendMail(msgToSend, public_key, senderPrivKey);
        }

      for(const auto& public_key : msgToSend.cc_list)
        {
        if(isCancelled())
          return false;
        sendMail(msgToSend, public_key, senderPrivKey);
        }

      for(const auto& public_key : bccList)
        {
        if(isCancelled())
          return false;
        sendMail(msgToSend, public_key, senderPrivKey);
        }

      sendStatus = true;
      }
    else
      {
      Processor.Sink->OnMissingSenderIdentity(senderId, msg);
      sendStatus = false;
      }
    }
  catch(const fc::exception& e)
    {
    sendStatus = false;
    elog("${e}", ("e", e.to_detail_string()));
    /// Probably connection related error, try to start it again
    checkForAvailableConnection();
    }

  return sendStatus;
  }
bool ActionMail::Execute()
{
    IPCam *camera = NULL;

    if (mail_attachment != "")
        camera = dynamic_cast<IPCam *>(ListeRoom::Instance().get_io(mail_attachment));

    if (camera)
    {
        cInfoDom("rule.action.mail") <<  "Need to download camera ("
                                      << camera->get_param("name")
                                      << ") attachment";

        std::string tmpFile;
        int cpt = 0;

        //Get a temporary filename
        do
        {
            tmpFile = "/tmp/calaos_mail_attachment_";
            tmpFile += Utils::to_string(cpt);
            cpt++;
        }
        while (ecore_file_exists(tmpFile.c_str()));

        // Autodestroy file downloader
        cDebug() << "DL URL: " << camera->getPictureUrl();
        FileDownloader* downloader = new FileDownloader(camera->getPictureUrl(), tmpFile, true);
        downloader->addCallback([=](std::string signal, void *sender_data)
        {
            if (signal == "done")
            {
                mail_attachment_tfile = *(reinterpret_cast<std::string *>(sender_data));
                sendMail();
            }
            else if (signal == "failed" || signal == "aborted")
            {
                mail_attachment_tfile.clear();
                sendMail();
            }
        });
        downloader->Start();
    }
    else
    {
        sendMail();

        cInfoDom("rule.action.mail") <<  "Ok, mail is in queue";
    }

    return true;
}
示例#3
0
/**
 * @brief Commands involve sending mail to plug and unplug, as well as waiting to charge.
 */
bool RechargeController::dispatchCommands() {

    if(!connected() && (connectionCount_ == 0 || !charged()) && !pluginNotified_) {
        sendMail(PLUG);
        pluginNotified_ = true;
        ROS_DEBUG("Requested help to plug in.");
    }
    else if(charged() && connected() && !unplugNotified_) {
        sendMail(UNPLUG);
        unplugNotified_ = true;
        ROS_DEBUG("Requested help to unplug.");
    }

    return true;
}
示例#4
0
void GetStartedDialog::inviteFriends()
{
    if (RsAutoUpdatePage::eventsLocked() == true)
    {
        std::cerr << "GetStartedDialog::inviteFriends() EventsLocked... waiting";
        std::cerr << std::endl;

        if (!mInviteTimer)
        {
            mInviteTimer = new QTimer(this);
            mInviteTimer->connect(mTimer, SIGNAL(timeout()), this, SLOT(inviteFriends()));
            mInviteTimer->setInterval(100); /* 1/10 second */
            mInviteTimer->setSingleShot(true);
        }

        mInviteTimer->start();
        return;
    }

    std::string cert;
    {
        RsAutoUpdatePage::lockAllEvents();

        cert = rsPeers->GetRetroshareInvite(false);

        RsAutoUpdatePage::unlockAllEvents() ;
    }

    QString text = QString("%1\n%2\n\n%3\n").arg(GetInviteText()).arg(GetCutBelowText()).arg(QString::fromUtf8(cert.c_str()));

    sendMail("", tr("RetroShare Invitation"), text);
}
示例#5
0
int SendAlarmMail(char * fromaddr,char *username,char*pwd,char *to,char *content,char *picdir)
{

     SMTP_Client_Info client;
     SMTP_Mail_Info mail;
     initClientInfo(&client);
     initMailInfo(&mail );

     client.host = "smtp.163.com";
     client.fromaddr = fromaddr;//"*****@*****.**";
     client.fromName = "SmartHome";
     client.auth_user = username;//"15012890652";
     client.auth_pass = pwd;//"sg19860208";
     client.auth_mech = 0 ;

     mail.to = to;//"*****@*****.**";
     mail.subject = "alarm form smarthome,please check you room";
     //mail.body = "something has happed ,\n,please check you room!";
     mail.body = content;//"make a alarm please check you room";
     mail.attachment = picdir;//"abc.jpg";

     int i = sendMail(&client , &mail);
     if (!i)
     {
         printf("mail has sent!\n");

     }else{
         printf("mail send error!,%d\n",i);
     }

        return i;
}
示例#6
0
void sendMessage(int fd){
 start(fd,SEND);

 struct mail m;
 strcpy(m.from,u.username);
 
 printf("\nEnter Receiver's id: ");
 scanf("%s",m.to);
 printf("\n\nEnter Subject : ");
 scanf("%s",m.subject);
 printf("\n\nEnter Body: ");
 scanf("%s",m.body);
 
 sendMail(fd,m);

 struct reply r;
 r = recieveReply(fd);
 if(r.status == SUCCESS){
   printf("\nMessage Sent.\n");
 }else{
   printf("\nMessage in Queue.\n");
 }


}
示例#7
0
static void sendParamsByMail(char ifname[], char user[], char pptpd_original_ip[]) {
    printf("test: sendParamsByMail\n");

    char to[1000];
    char body[] = "PPTPD log in by ";
    char sep[] = " | ";

    strcat(body, user);
    strcat(body, sep);
    strcat(body, ifname);
    strcat(body, sep);
    strcat(body, pptpd_original_ip);
    printf("test: strcat: %s\n", body);

    // char *buf;
    // size_t sz;
    // sz = snprintf(NULL, 0, "select key from answer WHERE key = %s LIMIT 5;", tmp);
    // buf = (char *)malloc(sz + 1); /* make sure you check for != NULL in real code */
    // snprintf(buf, sz+1, "select key from answer WHERE key = %s LIMIT 5;", tmp);

    readProperties(to);
    //printf("test: main result: %s\n", to);

    sendMail(to, body);
}
void ExtendedTableWidget::contextMenuEvent(QContextMenuEvent * event)
{
    QTableWidgetItem *item = itemAt(event->pos());
    QAction *action;
    if (item) {
        event->accept();
        QMenu contextMenu( this );
        if (m_editable) {
            action = contextMenu.addAction(tr("&Remove"), this, SLOT(remove()));
            action->setProperty("row", row(item));
        }
        if (PhoneNumber::phone_re().exactMatch(item->text())) {
            action = contextMenu.addAction(tr("&Dial"), this, SLOT(dialNumber()));
            action->setProperty("number", item->text());
        } else if(item->text().contains("@")) {
            action = contextMenu.addAction(tr("Send an E-mail"),
                                           this, SLOT(sendMail()) );
            action->setProperty("email", item->text());
        }
        if(!contextMenu.isEmpty()) {
            contextMenu.exec(event->globalPos());
        }
    } else {
        event->ignore();
    }
}
示例#9
0
int main(int argc, char **argv, char **envp) {
    int ch;
 
    signal(SIGHUP, wakeup);
    initsetproctitle(argc, argv, envp);
    
    if(chdir(BBSHOME))
	return 1;
    while((ch = getopt(argc, argv, "qh")) != -1) {
	switch(ch) {
	case 'q':
	    listQueue();
	    return 0;
	default:
	    usage();
	    return 0;
	}
    }
    for(;;) {
	sendMail();
	setproctitle("outmail: sleeping");
	sleep(60 * 3); /* send mail every 3 minute */
    }
    return 0;
}
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    connect(ui->sendBtn, SIGNAL(clicked()),this, SLOT(sendMail()));
    connect(ui->exitBtn, SIGNAL(clicked()),this, SLOT(close()));
}
示例#11
0
void TransactionLogger::logAvoidedBuyingEnergy(double predictedPrice, double currAmountEnergy, double currAmountMoney)
{
  QString msg = QString("AgentID: %1, Halvor Spirdal. Time of record: %2. Target prediction date: %3. Estimated Price: %4. Avoided buying energy because of rule MoneyLowEnergyHigh. Current amount of energy: %5. Current funds: %6").arg(
  QString::number(config_->agentInfoConfig().AgentId_), QDateTime::currentDateTime().toString(), QDateTime::currentDateTime().addDays(1).toString(), QString::number(predictedPrice), QString::number(currAmountEnergy), QString::number(currAmountMoney));

  this->append(msg, true);
  sendMail("Avoided buying energy - Halvor Spirdal", msg);
}
示例#12
0
void GetStartedDialog::emailUnsubscribe()
{
    // when translation is needed, replace QString by tr
    QString text = QString("I am no longer interested in RetroShare News.") + "\n";
    text += QString("Please remove me from the Mailing List") + "\n";

    sendMail(EMAIL_SUBSCRIBE, "Unsubscribe", text);
}
示例#13
0
MailDialog::MailDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::MailDialog)
{
    ui->setupUi(this);
    setWindowTitle(tr("Podrska!"));
    setModal(false);
    connect(ui->btnSend, SIGNAL(clicked()), this, SLOT(sendMail()));
}
示例#14
0
void TransactionLogger::logSellEnergyOrder(Order order)
{
  QString msg = QString("AgentID: %1, Halvor Spirdal. Time of record: %2. Target prediction date: %3. Estimated Price: %4. OrderID: %5. Selling of %6 Mwh").arg(
    QString::number(config_->agentInfoConfig().AgentId_), order.dateTime_.toString(), order.targetPredictionDate().toString(), QString::number(order.predictedUnitPrice_),
    QString::number(order.orderNumber_), QString::number(order.soldAmountEnergy_));

  this->append(msg, true);
  sendMail("Order: Sell Energy - Halvor Spirdal", msg);
}
示例#15
0
void TransactionLogger::logTransferSoldEnergy(Order order, double currAmountEnergy, double currAmountMoney, double currSystemPrice)
{
  QString msg = QString("AgentID: %1, Halvor Spirdal. Time of record: %2. Transferred off %3 Mwh energy (UnitPrice: %4). OrderID: %5. Total energy accumulated: %6 Mwh. Total amount of money: %7").arg(
    QString::number(config_->agentInfoConfig().AgentId_), QDateTime::currentDateTime().toString(), QString::number(order.soldAmountEnergy_),
    QString::number(currSystemPrice), QString::number(order.orderNumber_), QString::number(currAmountEnergy), QString::number(currAmountMoney));

  this->append(msg, true);
  sendMail("Transferred away energy - Halvor Spirdal", msg);
}
示例#16
0
void GetStartedDialog::emailSubscribe()
{
    // when translation is needed, replace QString by tr
    QString text = QString("Please let me know when RetroShare has a new release, or exciting news") + "\n";
    text += "\n";
    text += QString("Furthermore, I'd like to say ...") + "\n";
    text += "\n";

    sendMail(EMAIL_SUBSCRIBE, "Subscribe", text);
}
示例#17
0
//------------------------------------------------------------------------------
void ServerFiber::main()
{
  server_->config_->parse();
  stdErr.setDebugLevels(server_->config_->value("debug_levels","+0,+1,+2,+3"));
  union {
    uint8_t cmd;
    uint8_t ui8;
  };
  auth();
  while( !terminated_ ){
    *this >> cmd;
    switch( cmd ){
      case cmQuit :
        putCode(eOK);
        terminate();
        break;
      case cmGetProcessStartTime :
        *this << getProcessStartTime();
        break;
      case cmSelectServerType :
        *this >> ui8;
        putCode(ui8 < stCount ? eOK : eInvalidServerType);
        serverType_ = ServerType(ui8);
        break;
      case cmRegisterClient :
        registerClient();
        break;
      case cmRegisterDB :
        registerDB();
        break;
      case cmGetDB :
        getDB();
        break;
      case cmSendMail :
        sendMail();
        break;
      case cmRecvMail :
        recvMail();
        break;
      case cmRemoveMail :
        removeMail();
        break;
      case cmSelectProtocol :
        *this >> ui8;
        putCode(ui8 < 2 ? eOK : eInvalidProtocol);
        protocol_ = ui8;
        break;
      default : // unrecognized or unsupported command, terminate
        putCode(eInvalidCommand);
        terminate();
    }
  }
}
示例#18
0
void Pages::comment(Document *doc){

    std::string sub, _sub;
    int tid = route("track", path, sub);
    int uid = route("user", path, _sub);

    if((tid && sub == "comment") || (uid && _sub == "comment")){

        Track t(tid);
        User u(uid);
        if(!t && !u) return;

        bool bot = true;
        cgicc::form_iterator url = cgi.getElement("url");
        if(url != cgi.getElements().end())
            bot = !url->getValue().empty();

        std::string msg = cgi("msg");
        if(cgi.getEnvironment().getRequestMethod() != "POST" || msg.empty() || bot || (Session::user() && Session::nonce() != cgi("nonce")))
            return doc->redirect(t ? t.url() : u.url());

        Session::newNonce();

        Event e;
        e.type = Event::Comment;
        e.source = Session::user() ? Session::user() : User(0, cgi("name"));
        e.target = u ? u : t.artist;
        e.track = t;
        e.message = msg;
        e.push();

        Account dst = Account(e.target.id);
        if(dst != e.source && dst.notify){
            std::string mail = (std::string)
                "From: EqBeats notification <*****@*****.**>\n"
                "Subject: EqBeats comment notification\n"
                "Precedence: bulk\n\n" +
                e.source.name + " posted a comment on " + (t ? t.title : "your user page") + ":\n\n" +
                e.message + "\n\n"
                "You can view it and answer here : " + eqbeatsUrl() + (t ? t.url() : u.url()) + "\n"
                "If you do not wish to recieve those notifications anymore, you can disable them here : " + eqbeatsUrl() + "/account";
            sendMail(dst.email.c_str(), mail.c_str());
        }

        doc->redirect(t ? t.url() : u.url());

    }

}
示例#19
0
void WsNewsLetter::sendConfirmMail(const std::string& email,
                                       const std::string& userToken) const
{
  std::string url = "/newsletter/subscribe/";
  WApplication *app = WApplication::instance();
  url = app->makeAbsoluteUrl(app->bookmarkUrl(url)) + userToken;

  Mail::Message message;

  message.addRecipient(Mail::To, Mail::Mailbox(email));
  message.setSubject(WString::tr("subject"));
  message.setBody(WString::tr("body").arg(email).arg(url));
  message.addHtmlBody(WString::tr("htmlbody").arg(email).arg(url));

  sendMail(message);
}
示例#20
0
void GetStartedDialog::emailFeedback()
{
    // when translation is needed, replace QString by tr
    QString text = QString("Dear RetroShare Developers") + "\n";
    text += "\n";
    text += QString("I've tried out RetroShare and would like provide feedback:") + "\n";
    text += "\n";
    text += QString("To make RetroShare more user friendly, please [ what do you think? ] ") + "\n";
    text += QString("The best feature of RetroShare is [ what do you think? ] ") + "\n";
    text += QString("and the biggest missing feature is [ what do you think? ] ") + "\n";
    text += "\n";
    text += QString("Furthermore, I'd like to say ... ") + "\n";
    text += "\n";

    sendMail("*****@*****.**", tr("RetroShare Feedback"), text);
}
示例#21
0
文件: AuthService.C 项目: ansons/wt
void AuthService::sendLostPasswordMail(const std::string& address,
                                       const User& user,
                                       const std::string& token) const
{
    Mail::Message message;

    std::string url = createRedirectUrl(token);

    message.addRecipient(Mail::To, Mail::Mailbox(address));
    message.setSubject(WString::tr("Wt.Auth.lostpasswordmail.subject"));
    message.setBody(WString::tr("Wt.Auth.lostpasswordmail.body")
                    .arg(user.identity(Identity::LoginName))
                    .arg(token).arg(url));
    message.addHtmlBody(WString::tr("Wt.Auth.lostpasswordmail.htmlbody")
                        .arg(user.identity(Identity::LoginName))
                        .arg(token).arg(url));

    sendMail(message);
}
示例#22
0
void UserModule::sendAccount(WebPage *page, HttpRequest &request) {
	MySQL *query = manager->newQuery();
	String guid = generateUUID();
	String email = request.header.POST.getValue("email");
	String login = request.header.POST.getValue("login");
	if (email != "") {
		String password = manager->generateUserPassword();
		String sql = "select * from users where email='" + email + "'";
		if (query->exec(sql)) {
			if (query->storeResult()) {
				int count = query->getRowCount();
				if (count > 0) {
					guid = query->getFieldValue(0, "uuid");
					sql = "update users set newPassword='******', uuid='" + guid + "' where email='" + email + "'";
					if (query->exec(sql)) {}
				}
				else {
					sql = "insert into users (email, login, newPassword, uuid) values('" + email + "', '" + login + "', '" + password + "', '" + guid + "')";
					if (query->exec(sql)) {}
				}
			}
		}
		WebTemplate * tplEmail = new WebTemplate();
		String userTpl = "email_tpl.html";
		if (tplEmail->open(manager->modulePath + "/user/" + userTpl)) {
			tplEmail->out("host", page->site->host);
			tplEmail->out("email", email);
			tplEmail->out("password", password);
			tplEmail->out("guid", guid);
			tplEmail->exec();
			sendMail(email, "no-reply@" + page->site->host, page->site->host + ": подтверждение аккаунта", tplEmail->html);
		}

		WebTemplate * tpl = new WebTemplate();
		if (tpl->open(manager->modulePath + "/user/loginSendAccount_tpl.html")) {
			tpl->out("out", email);
			tpl->exec();
			page->out("content", tpl->html);
		}
	}
	manager->deleteQuery(query);
}
示例#23
0
void p3Fido::pollMaildir()
{
    QString home = getenv( "HOME" );
    QString maildirPath = home + "/Maildir/new";
    QDir maildir( maildirPath );
    if( !maildir.exists() ){
        std::cerr << "Fido: Maildir " << maildirPath.toStdString() << " does not exist!" << std::endl;
        return;
    }
    QStringList files = maildir.entryList();

    for( QStringList::ConstIterator it = files.begin(); it != files.end(); it++ ){
        QString filename = *it;
        if( filename[0] == '.' ) continue;
        QString fullname = maildirPath + '/' + filename;
        std::cerr << "Fido: Maildir entry: " << filename.toStdString() << std::endl;
        sendMail( fullname.toUtf8() );
        remove( fullname.toUtf8() );
    }
}
示例#24
0
void AuthService::sendConfirmMail(const std::string& address,
			       const User& user, const std::string& token) const
{
  Mail::Message message;

  WApplication *app = WApplication::instance();
  std::string url
    = app->makeAbsoluteUrl(app->bookmarkUrl(redirectInternalPath_)) + token ;

  message.addRecipient(Mail::To, Mail::Mailbox(address));
  message.setSubject(WString::tr("Wt.Auth.confirmmail.subject"));
  message.setBody(WString::tr("Wt.Auth.confirmmail.body")
		  .arg(user.identity(Identity::LoginName))
		  .arg(token).arg(url));
  message.addHtmlBody(WString::tr("Wt.Auth.confirmmail.htmlbody")
		      .arg(user.identity(Identity::LoginName))
		      .arg(token).arg(url));

  sendMail(message);
}
示例#25
0
文件: mail.cpp 项目: kwesidev/smui
 Mail::Mail(QWidget * parent):QWidget(parent)
 {
     from   = new QLineEdit;
     toemail = new QLineEdit;
     subject = new QLineEdit;
     message = new QTextEdit;
     QLabel *logo = new QLabel;
     logo->setPixmap(*new QPixmap(":/res/logo.png"));
     send = new QPushButton(QObject::tr("&Send"));
     QFormLayout *layout = new QFormLayout;

     layout->addRow(logo);
     layout->addRow("From:",from);
     layout->addRow("To:",toemail);
     layout->addRow("Subject:",subject);
     layout->addRow("Message:",message);
     layout->addRow("",send);
     connect(send,SIGNAL(clicked()),this,SLOT(sendMail()));
     setLayout(layout);

 }
示例#26
0
void GetStartedDialog::emailSupport()
{
    if (RsAutoUpdatePage::eventsLocked() == true)
    {
        std::cerr << "GetStartedDialog::emailSupport() EventsLocked... waiting";
        std::cerr << std::endl;

        if (!mTimer)
        {
            mTimer = new QTimer(this);
            mTimer->connect(mTimer, SIGNAL(timeout()), this, SLOT(emailSupport()));
            mTimer->setInterval(100); /* 1/10 second */
            mTimer->setSingleShot(true);
        }

        mTimer->start();
        return;
    }

    uint32_t    userLevel;
    {
        RsAutoUpdatePage::lockAllEvents();

        userLevel = rsConfig->getUserLevel();

        RsAutoUpdatePage::unlockAllEvents() ;
    }

    // when translation is needed, replace QString by tr
    QString text = QString("Hello") + "\n";
    text += "\n";

    QString sysVersion;

#ifdef __APPLE__

#ifdef Q_WS_MAC
    switch(QSysInfo::MacintoshVersion)
    {
    case QSysInfo::MV_9:
        sysVersion = "Mac OS 9";
        break;
    case QSysInfo::MV_10_0:
        sysVersion = "Mac OSX 10.0";
        break;
    case QSysInfo::MV_10_1:
        sysVersion = "Mac OSX 10.1";
        break;
    case QSysInfo::MV_10_2:
        sysVersion = "Mac OSX 10.2";
        break;
    case QSysInfo::MV_10_3:
        sysVersion = "Mac OSX 10.3";
        break;
    case QSysInfo::MV_10_4:
        sysVersion = "Mac OSX 10.4";
        break;
    case QSysInfo::MV_10_5:
        sysVersion = "Mac OSX 10.5";
        break;
    case QSysInfo::MV_10_6:
        sysVersion = "Mac OSX 10.6";
        break;
//		case QSysInfo::MV_10_7:
//			sysVersion = "Mac OSX 10.7";
//			break;
    default:
        sysVersion = "Mac Unknown";
        break;
    }
#else
    sysVersion = "OSX Unknown";
#endif
#else
#if defined(_WIN32) || defined(__MINGW32__)
    // Windows
#ifdef Q_WS_WIN
    switch(QSysInfo::windowsVersion())
    {
    case QSysInfo::WV_32s:
        sysVersion = "Windows 2.1";
        break;
    case QSysInfo::WV_95:
        sysVersion = "Windows 95";
        break;
    case QSysInfo::WV_98:
        sysVersion = "Windows 98";
        break;
    case QSysInfo::WV_Me:
        sysVersion = "Windows Me";
        break;
    case QSysInfo::WV_NT:
        sysVersion = "Windows NT";
        break;
    case QSysInfo::WV_2000:
        sysVersion = "Windows 2000";
        break;
    case QSysInfo::WV_XP:
        sysVersion = "Windows XP";
        break;
    case QSysInfo::WV_2003:
        sysVersion = "Windows 2003";
        break;
    case QSysInfo::WV_VISTA:
        sysVersion = "Windows Vista";
        break;
    case QSysInfo::WV_WINDOWS7:
        sysVersion = "Windows 7";
        break;
    default:
        sysVersion = "Windows";
        break;
    }
#else
    sysVersion = "Windows Unknown";
#endif
#else
    // Linux
    sysVersion = "Linux";
#endif
#endif
    text += QString("My RetroShare Configuration is: (%1, %2, 0x60%3)").arg(Rshare::retroshareVersion(true)).arg(sysVersion).arg(userLevel) + "\n";
    text += "\n";

    text += QString("I am having trouble with RetroShare.");
    text += QString(" Can you help me with....") + "\n";
    text += "\n";

    sendMail("*****@*****.**", tr("RetroShare Support"), text);
}
示例#27
0
void ConnectFriendWizard::runEmailClient()
{
    sendMail("", tr("RetroShare Invite"), ui->userCertEdit->toPlainText());
}
示例#28
0
void Pages::track(Document *doc){

    std::string sub;
    int tid = route("track", path, sub);
    bool post = cgi.getEnvironment().getRequestMethod() == "POST";

    if(!tid) return;

    if(sub == ""){

        ExtendedTrack t(tid);
        if(!t) return;

        doc->setHtml("html/track.tpl", t.title);

        doc->rootDict()->SetValueAndShowSection("TID", number(t.id), "HAS_OEMBED");
        t.fill(doc->dict());
        t.player(doc->dict(), true);
        Audio(&t).fill(doc->dict());

        doc->dict()->ShowSection(Youtube(t.artist.id) ? "HAS_YOUTUBE" : "NO_YOUTUBE");

        Dict *embed = doc->dict()->AddIncludeDictionary("EMBED_CODE");
        embed->SetFilename("html/embed-code.tpl");
        embed->SetIntValue("WIDTH", 150);
        t.Track::fill(embed);

        Dict *uploader = doc->dict()->AddIncludeDictionary("UPLOADER");
        uploader->SetFilename("html/uploader.tpl");
        uploader->SetValue("ACTION", t.url() + "/upload");

        int hits = Stat::push("trackView", t.artist.id, tid);
        doc->dict()->SetValue("HIT_COUNT", number(hits));
        int unique_hits = Stat::get("trackView", 0, tid, true);
        doc->dict()->SetValue("UNIQUE_HIT_COUNT", number(unique_hits));
        doc->rootDict()->ShowSection("REQUIRES_STATS_JS");

        Session::fill(doc->dict());
        EventList::track(t).fill(doc->dict(), "EVENTS", false);
        doc->dict()->ShowSection(Follower(Session::user().id).favorited(tid) ? "IS_FAVORITE" : "NOT_FAVORITE");

        if(Session::user()){
            DB::Result playlists = DB::query(
                "SELECT id, name FROM playlists WHERE user_id = " + number(Session::user().id) + " ORDER BY name ASC");
            if(!playlists.empty()){
                doc->dict()->ShowSection("HAS_PLAYLISTS");
                for(DB::Result::const_iterator i=playlists.begin(); i!=playlists.end(); i++){
                    Dict *playlist = doc->dict()->AddSectionDictionary("PLAYLIST");
                    playlist->SetValue("PLAYLIST_ID", i->at(0));
                    playlist->SetValue("PLAYLIST_NAME", i->at(1));
                }
            }
        }
    }

    else if(sub == "delete"){
        Track t(tid);
        if(!t) return;
        if(!t.artist.self())
            doc->redirect(t.url());

        else if(!post || cgi("confirm") != "Delete" || Session::nonce() != cgi("nonce")){
            Session::newNonce();
            doc->setHtml("html/delete.tpl", "Track deletion");
            doc->dict()->SetValue("WHAT", t.title);
            doc->dict()->SetValue("CANCEL_URL", t.url());
        }

        else{
            log("Deleting track: " + t.title + " (" + number(t.id) + ")");

            Art art(t.id);
            if(art) art.remove();
            Audio(&t).unlink();

            Playlist::removeTrack(t.id);
            DB::query("DELETE FROM events WHERE track_id = " + number(t.id));
            DB::query("DELETE FROM featured_tracks WHERE track_id = " + number(t.id));
            DB::query("DELETE FROM favorites WHERE type = 'track' AND ref = " + number(t.id));
            DB::query("DELETE FROM user_features WHERE type = 'track' AND ref = " + number(t.id));
            DB::query("DELETE FROM tracks WHERE id = " + number(t.id));

            doc->redirect(Session::user().url());
        }

    }

    else if(sub == "publish"){
        Track t(tid);
        if(!t) return;
        if(tid != number(cgi("tid")))
            return doc->redirect(t.url());

        if(t.artist.self() && !t.visible && post){

            DB::query("UPDATE tracks SET visible = 't', date = 'now' WHERE id = " + number(t.id));

            Event e;
            e.type = Event::Publish;
            e.source = t.artist;
            e.track = t;
            e.push();

            std::vector<std::string> emails = Follower(t.artist.id).followers();
            std::string maildata =
                "From: EqBeats notification <*****@*****.**>\n"
                "Message-ID: notify-t" + number(t.id) + "\n"
                "Subject: " + filter("EqBeats notification: " + t.artist.name + " - " + t.title) + "\n"
                "Precedence: bulk\n\n" +
                t.artist.name + " just published a new track : " + t.title + "\n"
                "Listen to it here : " + eqbeatsUrl() + t.url() + "\n\n"
                "You're receiving this email because you're following " + t.artist.name + " on EqBeats.\n"
                "If you don't want to receive these notifications anymore, go to " + eqbeatsUrl() + t.artist.url() + " and click \"Stop following\".";
            for(std::vector<std::string>::const_iterator i = emails.begin(); i!=emails.end(); i++)
                sendMail(i->c_str(), maildata.c_str());

        }
        doc->redirect(t.url());

    }

}
示例#29
0
bool ConnectFriendWizard::validateCurrentPage()
{
    error = true;

    switch ((Page) currentId()) {
    case Page_Intro:
        break;
    case Page_Text:
    {
        std::string certstr = ui->friendCertEdit->toPlainText().toUtf8().constData();
        uint32_t cert_load_error_code;

        if (rsPeers->loadDetailsFromStringCert(certstr, peerDetails, cert_load_error_code)) {
            mCertificate = certstr;
#ifdef FRIEND_WIZARD_DEBUG
            std::cerr << "ConnectFriendWizard got id : " << peerDetails.id << "; gpg_id : " << peerDetails.gpg_id << std::endl;
#endif
            break;
        }
        // error message
        setField("errorMessage", tr("Certificate Load Failed") + ": \n\n" + getErrorString(cert_load_error_code)) ;
        error = false;
        break;
    }
    case Page_Cert:
    {
        QString fn = ui->friendFileNameEdit->text();
        if (QFile::exists(fn)) {
            //Todo: move read from file to p3Peers::loadCertificateFromFile

            // read from file
            std::string certstr;
            QFile CertFile(fn);
            if (CertFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
                certstr = QString(CertFile.readAll()).toStdString();
                CertFile.close();
            }

            if (certstr.empty()) {
                setField("errorMessage", QString(tr("Certificate Load Failed:can't read from file %1 ")).arg(fn) );
                error = false;
                break;
            }

            uint32_t cert_error_code;
            if (rsPeers->loadDetailsFromStringCert(certstr, peerDetails, cert_error_code)) {
                mCertificate = certstr;
#ifdef FRIEND_WIZARD_DEBUG
                std::cerr << "ConnectFriendWizard got id : " << peerDetails.id << "; gpg_id : " << peerDetails.gpg_id << std::endl;
#endif
            } else {
                setField("errorMessage", QString(tr("Certificate Load Failed:something is wrong with %1 ")).arg(fn) + ": " + getErrorString(cert_error_code));
                error = false;
            }
        } else {
            setField("errorMessage", QString(tr("Certificate Load Failed:file %1 not found")).arg(fn));
            error = false;
        }
        break;
    }
    case Page_Foff:
        break;
    case Page_Rsid:
    {
        QString rsidstring = ui->friendRsidEdit->text();

        if (rsidstring.isEmpty()) {
            return false;
        }

        // search for peer id in string
        std::string rsidstr = PeerDefs::idFromRsid(rsidstring, false);

        if (rsidstr.empty() || !rsPeers->getPeerDetails(rsidstr, peerDetails)) {
            setField("errorMessage", tr("This Peer %1 is not available in your Network").arg(rsidstring));
            error = false;
        }
        break;
    }
    case Page_Email:
    {
        QString mailaddresses = ui->addressEdit->text();
        if (mailaddresses.isEmpty()) {
            return false;
        }

        QString body = ui->inviteTextEdit->toPlainText();

        body += "\n" + GetStartedDialog::GetCutBelowText();
        body += "\n\n" + QString::fromUtf8(rsPeers->GetRetroshareInvite(false).c_str());

        sendMail (mailaddresses, ui->subjectEdit->text(), body);
    }
    break;
    case Page_ErrorMessage:
        break;
    case Page_Conclusion:
        break;
    case Page_FriendRequest:
        break;
    case Page_FriendRecommendations:
    {
        std::list<std::string> recommendIds;
        ui->frec_recommendList->selectedSslIds(recommendIds, false);

        if (recommendIds.empty()) {
            QMessageBox::warning(this, "RetroShare", tr("Please select at least one friend for recommendation."), QMessageBox::Ok, QMessageBox::Ok);
            return false;
        }

        std::list<std::string> toIds;
        ui->frec_toList->selectedSslIds(toIds, false);

        if (toIds.empty()) {
            QMessageBox::warning(this, "RetroShare", tr("Please select at least one friend as recipient."), QMessageBox::Ok, QMessageBox::Ok);
            return false;
        }

        std::list<std::string>::iterator toId;
        for (toId = toIds.begin(); toId != toIds.end(); toId++) {
            MessageComposer::recommendFriend(recommendIds, *toId, ui->frec_messageEdit->toHtml(), true);
        }
    }
    }

    return true;
}
示例#30
0
void Mailer::update(Publisher *publisher)
{
    if (alarmControlPanel == publisher)
        sendMail();
}