示例#1
0
文件: shop.php 项目: scuba323/dcoin
set_time_limit(0);
define('ABSPATH', dirname(dirname(__FILE__)) . '/');
require_once ABSPATH . 'db_config.php';
require_once ABSPATH . 'includes/autoload.php';
require_once ABSPATH . 'includes/errors.php';
$db = new MySQLidb(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME, DB_PORT);
if (get_my_block_id($db) > get_block_id($db)) {
    die('get_my_block_id > get_block_id');
}
$currency_list = get_currency_list($db);
// нужно знать текущий блок, который есть у большинства нодов
$block_id = get_confirmed_block_id($db);
// сколько должно быть подтверждений, т.е. кол-во блоков сверху
$confirmations = 5;
// берем всех юзеров по порядку
$community = get_community_users($db);
for ($k = 0; $k < sizeof($community); $k++) {
    $private_key = '';
    $MY_PREFIX = $community[$k] . '_';
    //print $MY_PREFIX."\n";
    $table_exists = $db->query(__FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__, "\n\t\t\tSHOW TABLES LIKE '" . DB_PREFIX . "{$MY_PREFIX}my_keys'\n\t\t\t", 'num_rows');
    if (!$table_exists) {
        continue;
    }
    // проверим, майнер ли
    $miner_id = $db->query(__FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__, "\n\t\tSELECT `miner_id`\n\t\tFROM `" . DB_PREFIX . "miners_data`\n\t\tWHERE `user_id` = {$community[$k]}\n\t\tLIMIT 1\n\t\t", 'fetch_one');
    if ($miner_id) {
        // наш приватный ключ нода, которым будем расшифровывать комменты
        $private_key = get_node_private_key($db, $MY_PREFIX);
    }
    // возможно, что комменты будут зашифрованы юзерским ключем
示例#2
0
 }
 debug_print('Закончили спать, теперь генерим блок', __FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__);
 $block_id = $testBlock->prev_block['block_id'];
 if (!$block_id) {
     debug_print("continue", __FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__);
     main_unlock();
     unset($testBlock);
     sleep(1);
     continue;
 }
 $my_user_id = $testBlock->user_id;
 $new_block_id = $block_id + 1;
 $new_block_id_binary = dec_binary($new_block_id, 4);
 $user_id_binary = dec_binary($testBlock->cur_user_id, 5);
 $level_binary = dec_binary($testBlock->level, 1);
 if (get_community_users($db)) {
     $my_prefix = $testBlock->user_id . '_';
 } else {
     $my_prefix = '';
 }
 $node_private_key = get_node_private_key($db, $my_prefix);
 $prev_head_hash = $testBlock->prev_block['head_hash'];
 #####################################
 ##		 Формируем блок
 #####################################
 print '$new_block_id=' . $new_block_id . "\n";
 print '$cur_user_id=' . $testBlock->cur_user_id . "\n";
 if (!$testBlock->cur_user_id) {
     debug_print("continue", __FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__);
     main_unlock();
     unset($testBlock);
示例#3
0
文件: home.php 项目: scuba323/dcoin
    die("!defined('DC')");
}
$variables = ParseData::get_all_variables($db);
if (empty($_SESSION['restricted'])) {
    $tpl['public_key'] = $db->query(__FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__, "\n\t\t\tSELECT `public_key`\n\t\t\tFROM `" . DB_PREFIX . MY_PREFIX . "my_keys`\n\t\t\tWHERE `block_id` = (SELECT max(`block_id`) FROM `" . DB_PREFIX . MY_PREFIX . "my_keys` )\n\t\t\t", 'fetch_one');
    $tpl['public_key'] = bin2hex($tpl['public_key']);
}
$tpl['my_notice'] = get_my_notice_data();
$tpl['script_version'] = str_ireplace('[ver]', get_current_version($db), $lng['script_version']);
$script_name = $db->query(__FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__, "\n\t\tSELECT `script_name`\n\t\tFROM `" . DB_PREFIX . "main_lock`\n\t\t", 'fetch_one');
if ($script_name == 'my_lock') {
    $tpl['demons_status'] = 'OFF';
} else {
    $tpl['demons_status'] = 'ON';
}
if (isset($db) && get_community_users($db)) {
    $pool_admin_user_id = $db->query(__FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__, "\n\t\t\t\tSELECT `pool_admin_user_id`\n\t\t\t\tFROM `" . DB_PREFIX . "config`\n\t\t\t\t", 'fetch_one');
    if ((int) $_SESSION['user_id'] === (int) $pool_admin_user_id) {
        define('POOL_ADMIN', true);
    }
}
// несколько краудфандинговых проектов
$res = $db->query(__FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__, "\n\t\tSELECT `" . DB_PREFIX . "cf_projects`.*\n\t\tFROM `" . DB_PREFIX . "cf_projects`\n\t\tLEFT JOIN `" . DB_PREFIX . "cf_projects_data` ON  `" . DB_PREFIX . "cf_projects_data`.`project_id` = `" . DB_PREFIX . "cf_projects`.`id`\n\t\tWHERE `del_block_id` = 0 AND\n\t\t\t\t\t  `end_time` > " . time() . " AND\n\t\t\t\t\t `lang_id` = {$lang}\n\t\tORDER BY `funders` DESC\n\t\tLIMIT 3\n\t\t");
while ($row = $db->fetchArray($res)) {
    $row = array_merge(project_data($row), $row);
    $tpl['projects'][$row['id']] = $row;
}
// история операций по кошелькам
if (empty($_SESSION['restricted'])) {
    // получаем последние транзакции по кошелькам
    $res = $db->query(__FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__, "\n\t\t\t\tSELECT *\n\t\t\t\tFROM `" . DB_PREFIX . MY_PREFIX . "my_dc_transactions`\n\t\t\t\tWHERE `status` = 'approved'\n\t\t\t\tORDER BY `id` DESC\n\t\t\t\tLIMIT 0, 10\n\t\t\t\t");
示例#4
0
$db = new MySQLidb(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME, DB_PORT);
while (true) {
    // отметимся в БД, что мы живы.
    upd_deamon_time($db);
    // проверим, не нужно нам выйти, т.к. обновилась версия скрипта
    if (check_deamon_restart($db)) {
        exit;
    }
    $my_config = $db->query(__FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__, "\n\t\t\tSELECT `out_connections`,\n\t\t\t\t\t\t `local_gate_ip`\n\t\t\tFROM `" . DB_PREFIX . "config`\n\t\t\t", 'fetch_array');
    if ($my_config['local_gate_ip']) {
        sleep(5);
        continue;
    }
    // ровно стольким нодам мы будем слать хэши блоков и тр-ий
    $max_hosts = $my_config['out_connections'] ? $my_config['out_connections'] : 10;
    $collective = get_community_users($db);
    if (!$collective) {
        // сингл-мод
        $collective[0] = $db->query(__FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__, "\n\t\t\t\tSELECT `user_id`\n\t\t\t\tFROM `" . DB_PREFIX . "my_table`\n\t\t\t\t", 'fetch_one');
    }
    // в сингл-моде будет только $my_miners_ids[0]
    $my_miners_ids = get_my_miners_ids($db, $collective);
    $nodes_ban = array();
    $hosts = array();
    $urls = array();
    $del_miners = array();
    $nodes_inc = '';
    $nodes_count = 0;
    // забаненные хосты
    $res = $db->query(__FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__, "\n\t\t\t\tSELECT `host`, `ban_start`\n\t\t\t\tFROM `" . DB_PREFIX . "nodes_ban`\n\t\t\t\tLEFT JOIN `" . DB_PREFIX . "miners_data` ON `" . DB_PREFIX . "miners_data`.`user_id` = `" . DB_PREFIX . "nodes_ban`.`user_id`\n\t\t\t\t");
    while ($row = $db->fetchArray($res)) {
示例#5
0
require_once ABSPATH . 'includes/autoload.php';
require_once ABSPATH . 'includes/errors.php';
$db = new MySQLidb(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME, DB_PORT);
// валюты
$res = $db->query(__FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__, '
		SELECT `id`,
					 `name`
		FROM `' . DB_PREFIX . 'currency`
		ORDER BY `name`
		');
while ($row = $db->fetchArray($res)) {
    $currency_list[$row['id']] = $row['name'];
}
$notifications_array = array();
$user_email_sms_data = array();
$my_users_ids = get_community_users($db);
if (!$my_users_ids) {
    $community = false;
    // сингл-мод
    $my_users_ids[0] = $db->query(__FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__, "\n\t\t\tSELECT `user_id`\n\t\t\tFROM `" . DB_PREFIX . "my_table`\n\t\t\t", 'fetch_one');
} else {
    $community = true;
}
if (get_my_block_id($db) > get_block_id($db)) {
    exit;
}
if ($my_users_ids) {
    for ($i = 0; $i < sizeof($my_users_ids); $i++) {
        if ($community) {
            $my_prefix = $my_users_ids[$i] . '_';
        } else {
示例#6
0
function decrypt_data(&$binary_tx, $db, &$decrypted_key = '')
{
    if (!$binary_tx) {
        return '[error]!$binary_tx';
    }
    // вначале пишется user_id, чтобы в режиме пула можно было понять
    $my_user_id = ParseData::binary_dec_string_shift($binary_tx, 5);
    debug_print('$my_user_id=' . $my_user_id, __FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__);
    // изымем зашифрванный ключ, а всё, что останется в $binary_tx - сами зашифрованные хэши тр-ий/блоков
    $encrypted_key = ParseData::string_shift($binary_tx, ParseData::decode_length($binary_tx));
    debug_print('$encrypted_key=' . $encrypted_key, __FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__);
    if (!$encrypted_key) {
        return '[error]!$encrypted_key';
    }
    $my_user_id = intval($my_user_id);
    $collective = get_community_users($db);
    if ($collective) {
        if (!in_array($my_user_id, $collective)) {
            return '[error] bad user_id';
        }
        $my_prefix = $my_user_id . '_';
    } else {
        $my_prefix = '';
    }
    debug_print('$my_prefix=' . $my_prefix, __FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__);
    $private_key = $db->query(__FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__, "\n\t\t\t\tSELECT `private_key`\n\t\t\t\tFROM `" . DB_PREFIX . "{$my_prefix}my_node_keys`\n\t\t\t\tWHERE `block_id` = (SELECT max(`block_id`) FROM `" . DB_PREFIX . "{$my_prefix}my_node_keys`)\n\t\t\t\t", 'fetch_one');
    //debug_print('$private_key='.$private_key, __FILE__, __LINE__,  __FUNCTION__,  __CLASS__, __METHOD__);
    if (!$private_key) {
        return '[error]!$my_private_key';
    }
    $rsa = new Crypt_RSA();
    $rsa->loadKey($private_key, CRYPT_RSA_PRIVATE_FORMAT_PKCS1);
    $rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1);
    $decrypted_key = $rsa->decrypt($encrypted_key);
    debug_print('$decrypted_key=' . $decrypted_key, __FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__);
    if (!$decrypted_key) {
        return '[error]!$decrypted_key';
    }
    $aes = new Crypt_AES();
    $aes->setKey($decrypted_key);
    // теперь в $binary_tx будет обычная тр-ия
    $binary_tx = $aes->decrypt($binary_tx);
    debug_print('$binary_data=' . $binary_tx, __FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__);
    debug_print('$binary_data(hex)=' . bin2hex($binary_tx), __FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__);
    return $binary_tx;
}
示例#7
0
 function mydctx_rollback()
 {
     // если работаем в режиме пула
     $community = get_community_users($this->db);
     if ($community) {
         for ($i = 0; $i < sizeof($community); $i++) {
             $my_prefix = $community[$i] . '_';
             // может захватиться несколько транзакций, но это не страшно, т.к. всё равно надо откатывать
             $this->db->query(__FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__, "\n\t\t\t\t\t\tDELETE FROM `" . DB_PREFIX . "{$my_prefix}my_dc_transactions`\n\t\t\t\t\t\tWHERE `block_id` = {$this->block_data['block_id']}\n\t\t\t\t\t\t");
             $AffectedRows = $this->db->getAffectedRows();
             $this->rollbackAI("{$my_prefix}my_dc_transactions", $AffectedRows);
         }
     } else {
         // может захватиться несколько транзакций, но это не страшно, т.к. всё равно надо откатывать
         $this->db->query(__FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__, "\n\t\t\t\t\tDELETE FROM `" . DB_PREFIX . "my_dc_transactions`\n\t\t\t\t\tWHERE `block_id` = {$this->block_data['block_id']}\n\t\t\t\t\t");
         $AffectedRows = $this->db->getAffectedRows();
         $this->rollbackAI("my_dc_transactions", $AffectedRows);
     }
 }