예제 #1
0
 public function sendMsg(Msg $msg)
 {
     $rid = (string) Uuid::uuid4();
     $this->requestAdd('msg', $rid, array('msg' => $msg));
     $data = array('rid' => $rid, 'version' => $msg->getVersion(), 'id' => $msg->getId(), 'srcNodeId' => $msg->getSrcNodeId(), 'srcSslKeyPub' => base64_encode($msg->getSrcSslKeyPub()), 'srcUserNickname' => $msg->getSrcUserNickname(), 'dstNodeId' => $msg->getDstNodeId(), 'body' => $msg->getBody(), 'password' => $msg->getPassword(), 'checksum' => $msg->getChecksum(), 'relayCount' => (int) $msg->getRelayCount() + 1, 'timeCreated' => (int) $msg->getTimeCreated(), 'hashcash' => $this->hashcashMint(static::HASHCASH_BITS_MAX));
     return $this->dataSend($this->msgCreate('msg', $data));
 }
예제 #2
0
파일: MsgTest.php 프로젝트: thefox/phpchat
 /**
  * @dataProvider providerEncryption
  */
 public function testEncryption($srcUserNickname, $subject, $text, $ignore)
 {
     $msg = new Msg();
     $msg->setVersion(1);
     $msg->setId('cafed00d-2131-4159-8e11-0b4dbadb1738');
     $msg->setSrcNodeId('cafed00d-2331-4159-8e11-0b4dbadb1738');
     $msg->setSrcSslKeyPub(static::SRC1_SSL_KEY_PUB);
     $msg->setSrcUserNickname($srcUserNickname);
     $msg->setDstNodeId('cafed00d-2431-4159-8e11-0b4dbadb1738');
     $msg->setDstSslPubKey(static::DST1_SSL_KEY_PUB);
     $msg->setSubject($subject);
     $msg->setText($text);
     $msg->setSslKeyPrv(static::SRC1_SSL_KEY_PRV, static::SSL_KEY_PRV_PASS);
     $msg->setIgnore($ignore);
     $this->assertTrue($msg->encrypt());
     $body = $msg->getBody();
     $timeCreated = $msg->getTimeCreated();
     $password = $msg->getPassword();
     $checksum = $msg->getChecksum();
     $msg = new Msg();
     $msg->setVersion(1);
     $msg->setId('cafed00d-2131-4159-8e11-0b4dbadb1738');
     $msg->setSrcNodeId('cafed00d-2331-4159-8e11-0b4dbadb1738');
     $msg->setBody($body);
     $msg->setSrcSslKeyPub(static::SRC1_SSL_KEY_PUB);
     $msg->setDstSslPubKey(static::DST1_SSL_KEY_PUB);
     $msg->setSslKeyPrv(static::DST1_SSL_KEY_PRV, static::SSL_KEY_PRV_PASS);
     $msg->setDstNodeId('cafed00d-2431-4159-8e11-0b4dbadb1738');
     $msg->setTimeCreated($timeCreated);
     $msg->setPassword($password);
     $msg->setChecksum($checksum);
     $textDecrypted = $msg->decrypt();
     $this->assertEquals($subject, $msg->getSubject());
     $this->assertEquals($text, $textDecrypted);
     $this->assertEquals($text, $msg->getText());
     $this->assertEquals($srcUserNickname, $msg->getSrcUserNickname());
     $this->assertEquals($ignore, $msg->getIgnore());
 }
예제 #3
0
파일: Server.php 프로젝트: thefox/phpchat
 public function imapMailAdd(Msg $msg)
 {
     if ($this->getKernel() && $this->getKernel()->getIpcImapConnection()) {
         $version = $msg->getVersion();
         $id = $msg->getId();
         $srcNodeId = $msg->getSrcNodeId();
         $srcUserNickname = $msg->getSrcUserNickname();
         $dstNodeId = $msg->getDstNodeId();
         $subject = $msg->getSubject();
         $text = $msg->getText();
         $checksum = $msg->getChecksum();
         $relayCount = $msg->getRelayCount();
         $encryptionMode = $msg->getEncryptionMode();
         $status = $msg->getStatus();
         $timeCreated = $msg->getTimeCreated();
         $timeReceived = $msg->getTimeReceived();
         $args = array();
         $args[] = $version;
         $args[] = $id;
         $args[] = $srcNodeId;
         $args[] = $srcUserNickname;
         $args[] = $dstNodeId;
         $args[] = $subject;
         $args[] = $text;
         $args[] = $checksum;
         $args[] = $relayCount;
         $args[] = $encryptionMode;
         $args[] = $status;
         $args[] = $timeCreated;
         $args[] = $timeReceived;
         $this->getKernel()->getIpcImapConnection()->execAsync('mailAdd', $args);
     }
 }