appName = $appName; $this->uid = $UserId; $this->l10n = $IL10N; //$this->rootFolder = $rootFolder; OC_Util::setupFS(); $this->aria2 = $aria2; $this->aria2->init(); $this->urlGenerator = \OC::$server->getURLGenerator(); $this->dbconn = new DbHelper(); $this->counters = new Counters($aria2, $this->dbconn, $UserId); $this->youtube = $youtube; $this->settings = new Settings($UserId); } /** * @NoAdminRequired * @NoCSRFRequired */ public function Index() { // $str = \OC::$server->getDatabaseConnection()->getInner()->getPrefix(); //$config = \OC::$server->getAppConfig(); OC_Util::addScript($this->appName, 'app'); // OC_Util::addStyle($this->appName, 'table'); $params = array(); $params['aria2_running'] = $this->aria2->isRunning(); $params['aria2_installed'] = $this->aria2->isInstalled(); $params['aria2_bin'] = $this->aria2->getBin(); $params['aria2_executable'] = $this->aria2->isExecutable(); $params['youtube_installed'] = $this->youtube->isInstalled(); $params['youtube_bin'] = $this->youtube->getBin(); $params['youtube_executable'] = $this->youtube->isExecutable(); $params['ncd_hide_errors'] = $this->settings->get("ncd_hide_errors"); $params['counter'] = $this->counters->getCounters(); $params['settings_url'] = $this->urlGenerator->linkToRoute("settings.PersonalSettings.index", ['section' => 'ncdownloader']); $params['admin_settings_url'] = $this->urlGenerator->linkToRoute("settings.AdminSettings.index", ['section' => 'ncdownloader']); $params['is_admin'] = \OC_User::isAdminUser($this->uid); $response = new TemplateResponse($this->appName, 'Index', $params); return $response; } /** * @NoAdminRequired * @NoCSRFRequired */ public function Download() { $url = trim($this->request->getParam('text-input-value')); //$type = trim($this->request->getParam('type')); $resp = $this->_download($url); return new JSONResponse($resp); } private function _download($url) { if ($filename = Helper::getFileName($url)) { $this->aria2->setFileName($filename); } if (!($result = $this->aria2->download($url))) { return ['error' => 'failed to download the file for some reason!']; } if (isset($result['error'])) { return $result; } $data = [ 'uid' => $this->uid, 'gid' => $result, 'type' => Helper::DOWNLOADTYPE['ARIA2'], 'filename' => $filename ?? 'unknown', 'timestamp' => time(), 'data' => serialize(['link' => $url]), ]; $this->dbconn->save($data); $resp = ['message' => $filename, 'result' => $result, 'file' => $filename]; return $resp; } /** * @NoAdminRequired * @NoCSRFRequired */ public function Upload() { if (is_uploaded_file($file = $_FILES['torrentfile']['tmp_name'])) { $file = $this->aria2->getTorrentsDir() . '/' . Helper::cleanString($_FILES['torrentfile']['name']); move_uploaded_file($_FILES['torrentfile']['tmp_name'], $file); if (!($result = $this->aria2->btDownload($file))) { return ['error' => 'failed to download the file for some reason!']; } if (isset($result['error'])) { return $result; } $data = [ 'uid' => $this->uid, 'gid' => $result['gid'], 'type' => Helper::DOWNLOADTYPE['ARIA2'], 'filename' => $result['filename'] ?? 'unknown', 'timestamp' => time(), ]; $this->dbconn->save($data); $resp = ['message' => $result['filename'], 'result' => $result['gid'], 'file' => $result['filename']]; } return new JSONResponse($resp); } }