public function __construct($message = null, $code = 0, \Exception $previous = null)
 {
     parent::__construct($message, $code, $previous);
     if (Configuration::getVerbose() >= 1) {
         Sonic::getLogger()->addError($message);
     }
 }
Exemple #2
0
 public function send()
 {
     if (!$this->verifyRequest()) {
         throw new \Exception("Error: Malformed request!");
     } else {
         $header = array();
         foreach ($this->headers as $key => $value) {
             $header[] = $key . ': ' . $value;
         }
         $ch = curl_init('http://' . $this->server . $this->path);
         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
         if ($this->method == 'GET') {
             curl_setopt($ch, CURLOPT_HTTPGET, true);
             $header[] = 'User-Agent: ' . SONIC_REQUEST__USERAGENT;
             $header[] = 'Connection: close';
             curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
         } elseif ($this->method == 'POST') {
             curl_setopt($ch, CURLOPT_POST, true);
             $header[] = 'User-Agent: ' . SONIC_REQUEST__USERAGENT;
             $header[] = 'Content-type: application/json';
             $header[] = 'Connection: close';
             $header[] = 'Content-Length: ' . strlen($this->body);
             $header[] = 'Expect: ';
             // explicitly un-setting Expect header
             curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
             curl_setopt($ch, CURLOPT_POSTFIELDS, $this->body);
         } elseif ($this->method == 'PUT') {
             curl_setopt($ch, CURLOPT_POST, true);
             $header[] = 'User-Agent: ' . SONIC_REQUEST__USERAGENT;
             $header[] = 'Content-type: application/json';
             $header[] = 'Connection: close';
             $header[] = 'Content-Length: ' . strlen($this->body);
             $header[] = 'Expect: ';
             // explicitly un-setting Expect header
             curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
             curl_setopt($ch, CURLOPT_POSTFIELDS, $this->body);
             curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
             //curl PUT only accepts files
         } elseif ($this->method == 'DELETE') {
             curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
             $header[] = 'User-Agent: ' . SONIC_REQUEST__USERAGENT;
             $header[] = 'Connection: close';
             $header[] = 'Expect: ';
             // explicitly un-setting Expect header
             curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
         }
         if (Configuration::getCurlVerbose() >= 1) {
             curl_setopt($ch, CURLOPT_VERBOSE, 1);
         }
         curl_setopt($ch, CURLOPT_HEADER, true);
         $response = curl_exec($ch);
         $header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
         $header = substr($response, 0, $header_size);
         $body = substr($response, $header_size);
         if (curl_errno($ch) != CURLE_OK) {
             throw new \Exception('Connection error: ' . curl_error($ch));
         }
         curl_close($ch);
         return array('headers' => $header, 'body' => $body);
     }
 }
use sgoendoer\Sonic\Sonic;
use sgoendoer\Sonic\Config\Configuration;
use sgoendoer\Sonic\Crypt\KeyPair;
use sgoendoer\Sonic\Crypt\PublicKey;
use sgoendoer\Sonic\Crypt\PrivateKey;
use sgoendoer\Sonic\Identity\EntityAuthData;
use sgoendoer\Sonic\Identity\SocialRecord;
use sgoendoer\Sonic\Identity\SocialRecordBuilder;
use sgoendoer\Sonic\Identity\SocialRecordManager;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// setting up configuration
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Configuration::setVerbose(0);
Configuration::setCurlVerbose(1);
Configuration::setLogfile(__DIR__ . '/../sonic.log');
Configuration::setTimezone('Europe/Berlin');
try {
    $platformSR = '{"socialRecord":{"@context":"http://sonic-project.net/","@type":"socialrecord","type":"platform","globalID":"2UZCAI2GM45T160MDN44OIQ8GKN5GGCKO96LC9ZOQCAEVAURA8","platformGID":"2UZCAI2GM45T160MDN44OIQ8GKN5GGCKO96LC9ZOQCAEVAURA8","displayName":"social.snet.tu-berlin.de","profileLocation":"http://social.snet.tu-berlin.de/sonic-sdk/","personalPublicKey":"-----BEGIN PUBLIC KEY-----MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtKXJWNeV1ld7oSXWelgeJlJSabwL2YN0f3tg6ZPEf3mlmt7e+PpBHp8ECsbZlkcKvRuoDxy+7YSFoPcy0nACrPVw4xX+9+fSvJQXlM/3yNi30U/VvdUBaWBzxuI7IAqoUYSV5dVA4FFgHlIOIDktQeQmz+Ob06cxRg2TgqOjaaERkC1tTc0TO4UsqQOfl03IPc0ZrVyuHTWZd/Cc/UE9LRhJvZ/eV4OgZL0f5rJXD3N9XyKsd6npRTJPEBqj1ixNKzBiP8tvkD23FUGdOFpiUq3eLmIoxljWwDW/6M+sX6i08UZh8RDIK8b/FnJxUKyfssZ1Nd8QtgGe6uwMoAnv124Nimd2IqSrvRw3SO52v1NzGGrvb3c1L6f6clPAVCA8Z6ujBCTv7tUXCN5YUIKjzIXUfkyUhjZFS3fQuPTiB1Pk/75aDcdRB0wcmN4hOKAA2B3jXV3fT/Jz3woY7HLIOG/qCEWjMMjW6oB74jnXe6rOWqspmFC6lzAjVlu7tL+UnqYvr6WdZJZmZdw4YkuWdi5kSRyZrNZ2SFswSus5/QL/hTA1bLmWUzCFIP+312SSo6xp7tnqVtWSJBkRy4T9CYux2/csaDQ4BiNyBdRorz28LUuLaVLT5A3s9VaU331AtWOb4xYMbKArqrpJns3/aYcuURhJKMG+Gguvzn1EJqMCAwEAAQ==-----END PUBLIC KEY-----","accountPublicKey":"-----BEGIN PUBLIC KEY-----MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnO/pV1hRbAFZ65OhBr843xm5Iu200OpI39ADhppKcH87rV0SPvRFfNXKGMt0UPf6YeYAagWgvm+o+Ynu6jb0u3ev9bPblvM6r4Syj+k9SfCDS3QvVLiLUE/V5Ht8tW/fcyGpgg+6GYvBksD0Q+kesLWtbQdLx/m4txdiI7tVkma504P4XS+X0yvIqdC8jh5t+mSBkdw9mtNf/c10Vvs2ijBc39qPIBkA7rE724cg2uPor8TWgsm3rZ4ZCCY/lwbhDfDxPbQbEtWCq94ks9+moi1xJTP09688KmuFX5GjwtYl4zL96mze9B1LXrQ6kJBZEf8fpaWASH6IxNMNC+U3v7Y/E0CI2oyfNV5O6w6K4u3a/rGXZgIXuO9dHfB6rMSpox2OL7mbY+7H/f86AbXWZWGXmpm4CaImys9C9BaUF1f5Hvt3ZQHr1o+qn+SEmsjfANogsisCoy8r1cwBUY9rUOIFo8THEc6M8+E6Qxi3eK7YNrMJvasWh5WH5AG4dejylzoIKQcR65aBl5jUIzVVYLfPxP6D5qfATqnEIGxhb3NaSNrrPLDxEvlHVWeIPdBRSZRJwXORYuAz0lEbeYRMuSBsPJ12nXc2BB3N2wyp+cyZ2KDnDJQO246bPDQTIm+P1pzXCnWdo54wJmD10g/E10pfY1SYsXM+XEV/tobwJXECAwEAAQ==-----END PUBLIC KEY-----","salt":"82daf2b77b46f36d","datetime":"2016-01-13T10:58:52+01:00","active":1,"keyRevocationList":[]},"accountPrivateKey":"-----BEGIN PRIVATE KEY-----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-----END PRIVATE KEY-----","personalPrivateKey":"-----BEGIN PRIVATE KEY-----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-----END PRIVATE KEY-----"}';
    $aliceSR = '{"socialRecord":{"@context":"http://sonic-project.net/","@type":"socialrecord","type":"user","globalID":"4802C8DE6UZZ5BICQI830A8P8BW3YB5EBPGXWNRH1EP7H838V7","platformGID":"2UZCAI2GM45T160MDN44OIQ8GKN5GGCKO96LC9ZOQCAEVAURA8","displayName":"Alice","profileLocation":"http://social.snet.tu-berlin.de/sonic-sdk/","personalPublicKey":"-----BEGIN PUBLIC KEY-----MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzMp0mukaLQl2Ya0RmZKtioXx3gifTe6Bu2UUsrOgwd/SHB3g438pcJBqF8pvPKKhx0hgp8MX1W3IGyqsNsIbFF2b4r9VrtDqUUd0WBCKsvBNcqxfqWkez2kVB+Q3hQkOjyocuO8I6v1rvkFNsio0E9XLPcLOiYJL3qHrbQFI+qtshfgjeK9taZbrEX6uY4VQ602fb8dHK9ieCV/W46RCTQS4+ac1+y1CAyH7gQ5TPMZ2vraeLR4kA1r8l/u3ZhB8b8biMt81K/WVcEf+8K4LAi/Tub1uDowKU2HNveG5ov055hvbvYv/9z1kEFGpTEMOzl0hiK4DGkvpugVO9nUfyy7VA85ZgkBpY4WoHGoZQbubyBsMwqpmT1pkUwAQTKnv6ME1YLLY81YjeshQz+YezT/gqH0uC3a+ZcQotFanNyTvQrtjxQSqeOA87K1RwfJvn9QS4Lz3MMt8eSK1/H+aFavDBARgzAGPgDRBTtjKSvdImZ1g5zd9pItzGV9ZcasvTY3/m6U5L9ByiiFEHLQJr9eKBb0OAoQVG9G5vYQ1f1CF7OtYQA2L0ygc4TwwLCjILBJDoqiOuYgq/wVzE1200G1tQ504hLdaUJIETCLxvDhyMI3TbywxLSyihYjC3Tge68X+rKPgZoY4ahTok0CszOzYf4lDsYmKAPIVDH5C5AECAwEAAQ==-----END PUBLIC KEY-----","accountPublicKey":"-----BEGIN PUBLIC KEY-----MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvgeptoYIVDvxPPIk4ZBpRy/SohpJPTHSguP3VjWG0xL8zllZSkdBLS1ijBGCxG/jx5KebBSLSkIAjEdby0/FKRjLTBqC7eak6s/1zUUzoABXwu/JckAToOJK5R/iSwAd5jOa94Bl6q7Pu6kfBsDSg43JOkIU0rvfMNcgdo/9GJwI2tg6/ZjM5YWNoRcHvl2XXM0lljJrxfVlXpWNhTUUoy/IrnyPhBlhHCXtbCVo/U5gQ5O6ymqwewRyWwhfvaWrWiwAW6KnvBz3ddCmjBArerOciVtcSXRoJ01jQP4HeDTzQDxvDb4ymAewfoRuzp0ctL4tMMS8P+XxpQmNrivZP+thwEM+jB8XLkbFB1Pj0aTdQzCkrJupiSz8mK5aBBptjPsek50egoOEyf5LY3y/daup5rbLFLE58pNO13GdtDiin0NDVwrC19uKrvy5vca/+O1lZjTaVNrP9FN9ug2wZ62N7Q6vyZT0H+7wkdbGWeKhxMa1j05dx0v61dp91k6N4wWXEeAknLw06FrCKicKjA6LQIVrT9KYjWDI9ewwaoKbRyrKJrHNoZg1+Mua+x3TWsXAEGE91+Mgdd0UZQ+XBihjyq76ccZULbzJ/flGeOyVUMwXg05QNT6zXRDyNUPUyb8HoI0kHlT8nRDF9kkKu2Yx40EhsrAQogoEqgxeYoUCAwEAAQ==-----END PUBLIC KEY-----","salt":"abb0afd289f102f3","datetime":"2016-01-13T10:58:54+01:00","active":1,"keyRevocationList":[]},"accountPrivateKey":"-----BEGIN PRIVATE KEY-----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-----END PRIVATE KEY-----","personalPrivateKey":"-----BEGIN PRIVATE KEY-----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-----END PRIVATE KEY-----"}';
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // creating SocialRecord object to work with
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    echo "Initializing platform SocialRecord... ";
    // Init with imported SocialRecord $sr /////////////////////////////////////////////////////////////////////////////
    $sr = SocialRecordManager::importSocialRecord($platformSR);
    $platformSocialRecord = $sr['socialRecord'];
    $platformAccountKeyPair = $sr['accountKeyPair'];
    $platformPersonalKeyPair = $sr['personalKeyPair'];
    echo "done!\n";
    echo "Initializing user SocialRecord... ";
    // Init with imported SocialRecord $sr /////////////////////////////////////////////////////////////////////////////
Exemple #4
0
 /**
  * extracts the GID from the path
  */
 public function getTargetedGID()
 {
     return explode('/', str_replace(Configuration::getApiPath(), '', $this->path))[0];
 }
Exemple #5
0
 /**
  * return the monolog logger instance
  * 
  * @return the logger instance
  */
 public static function getLogger()
 {
     if (self::$logger === NULL) {
         self::$logger = new Logger('sonic');
         self::$logger->pushHandler(new StreamHandler(Configuration::getLogfile()));
     }
     return self::$logger;
 }
Exemple #6
0
<?php

namespace sgoendoer\Sonic;

use sgoendoer\Sonic\Config\Configuration;
if (version_compare(PHP_VERSION, '5.6.0') < 0) {
    // 5.5 introduced hash_pbkdf2(). 5.5 for some reason still incompatible
    die('SONIC SDK requires PHP 5.6 or higher to run. Your version: ' . PHP_VERSION . "\n\n");
}
if (version_compare(explode(' ', OPENSSL_VERSION_TEXT)[1], '1.0.0') < 0) {
    // private key headers were changed after 0.9.8n
    die('SONIC SDK requires OpenSSL 1.0.0 or higher to run. Your version: ' . OPENSSL_VERSION_TEXT . "\n\n");
}
if (!function_exists('curl_version')) {
    // we need the curl extension
    die('SONIC SDK requires cURL to be installed.' . "\n\n");
}
date_default_timezone_set(Configuration::getTimezone());
define('SONIC_HEADER__TARGET_API', 'SonicTargetAPI');
define('SONIC_HEADER__DATE', 'SonicResourceDate');
define('SONIC_HEADER__PLATFORM_GID', 'SonicPlatformGID');
define('SONIC_HEADER__SOURCE_GID', 'SonicSourceGID');
define('SONIC_HEADER__SIGNATURE', 'SonicSignature');
define('SONIC_HEADER__RANDOM', 'SonicRandom');
define('SONIC_HEADER__AUTH_TOKEN', 'SonicAuthToken');
define('SONIC_SDK__APP_NAME', 'SonicSDK');
define('SONIC_SDK__APP_VERSION', '0.2.5');
define('SONIC_SDK__APP_VERSION_NAME', 'beta2.5');
define('SONIC_SDK__API_VERSION', '0.1.2');
define('SONIC_REQUEST__USERAGENT', SONIC_SDK__APP_NAME . '/' . SONIC_SDK__APP_VERSION);
Exemple #7
0
 /**
  * Pushes an update for a SocialRecord to the GSLS. The SocialRecord will be transformed into a signed JWT, which is then stored in the GSLS
  * 
  * @param $sr The SocialRecord
  * @param $personalPrivateKey The private key to sign the JWT
  * 
  * @throws Exception
  * 
  * @return result json string
  */
 public static function putSocialRecord(SocialRecord $sr, $personalPrivateKey)
 {
     if (!$sr->verify()) {
         throw new \Excetion("Error: Invalid Social Record");
     }
     // create and sign JWT
     $signer = new Sha512();
     $personalPrivateKey = PrivateKey::formatPEM($personalPrivateKey);
     $token = (new Builder())->set('socialRecord', base64_encode($sr->getJSONString()))->sign($signer, $personalPrivateKey)->getToken();
     $ch = curl_init(Configuration::getPrimaryGSLSNode());
     if (Configuration::getCurlVerbose() >= 2) {
         curl_setopt($ch, CURLOPT_VERBOSE, 1);
     }
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     curl_setopt($ch, CURLOPT_POST, true);
     curl_setopt($ch, CURLOPT_TIMEOUT, Configuration::getGSLSTimeout());
     curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
     curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json', 'Content-Length: ' . strlen((string) $token)));
     curl_setopt($ch, CURLOPT_POSTFIELDS, (string) $token);
     $result = curl_exec($ch);
     if (curl_errno($ch) != CURLE_OK) {
         $ch = curl_init(Configuration::getSecondaryGSLSNode());
         if (Configuration::getCurlVerbose() >= 2) {
             curl_setopt($ch, CURLOPT_VERBOSE, 1);
         }
         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
         curl_setopt($ch, CURLOPT_HTTPGET, 1);
         $result = curl_exec($ch);
         if (curl_errno($ch) != CURLE_OK) {
             throw new \Exception('Connection error: ' . curl_error($ch));
         }
     }
     $result = json_decode($result);
     curl_close($ch);
     if ($result->responseCode != 200) {
         throw new \Exception("Error: " . $result->message);
     } else {
         return $result;
     }
 }