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) . '×tamp=' . TIMESTAMP; return CLOUDADDONS_DOWNLOAD_URL . '?' . $param . $extra; }
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'] . '×tamp=' . $_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 {