function cloudaddons_url($extra)
{
    global $_G;
    require_once DISCUZ_ROOT . './source/discuz_version.php';
    $data = 'siteuniqueid=' . rawurlencode(cloudaddons_getuniqueid()) . '&siteurl=' . rawurlencode($_G['siteurl']) . '&sitever=' . DISCUZ_VERSION . '/' . DISCUZ_RELEASE . '&sitecharset=' . CHARSET . '&mysiteid=' . $_G['setting']['my_siteid'];
    $param = 'data=' . rawurlencode(base64_encode($data));
    $param .= '&md5hash=' . substr(md5($data . TIMESTAMP), 8, 8) . '&timestamp=' . TIMESTAMP;
    return CLOUDADDONS_DOWNLOAD_URL . '?' . $param . $extra;
}
Пример #2
0
if (!$operation) {
    cloudaddons_check();
    shownav('cloudaddons');
    $extra = '';
    if (!empty($_GET['id'])) {
        $extra .= '&mod=app&ac=item&id=' . rawurlencode($_GET['id']);
    }
    if (!empty($_GET['extra'])) {
        $extra .= '&' . addslashes($_GET['extra']);
    }
    $url = cloudaddons_url($extra);
    echo '<script type="text/javascript">location.href=\'' . $url . '\';</script>';
} elseif ($operation == 'download') {
    $step = intval($_GET['step']);
    $addoni = intval($_GET['i']);
    if (!$_GET['md5hash'] || md5($_GET['addonids'] . md5(cloudaddons_getuniqueid() . $_GET['timestamp'])) != $_GET['md5hash']) {
        cpmsg('cloudaddons_validator_error', '', 'error');
    }
    $addonids = explode(',', $_GET['addonids']);
    list($_GET['key'], $_GET['type'], $_GET['rid']) = explode('.', isset($addonids[$addoni]) ? $addonids[$addoni] : $addonids[0]);
    if ($step == 0) {
        cpmsg('cloudaddons_downloading', "action=cloudaddons&operation=download&addonids={$_GET['addonids']}&i={$addoni}&step=1&md5hash=" . $_GET['md5hash'] . '&timestamp=' . $_GET['timestamp'], 'loading', array('addonid' => $_GET['key'] . '.' . $_GET['type']), '<div>0%</div>', FALSE);
    } elseif ($step == 1) {
        $packnum = isset($_GET['num']) ? $_GET['num'] : 0;
        $tmpdir = DISCUZ_ROOT . './data/download/' . $_GET['rid'];
        $end = '';
        $md5tmp = DISCUZ_ROOT . './data/download/' . $_GET['rid'] . '.md5';
        if ($packnum) {
            list($md5total, $md5s) = unserialize(implode('', @file($md5tmp)));
            dmkdir($tmpdir, 0777, false);
        } else {