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'] = $aria2_installed = $this->aria2->isInstalled(); $params['aria2_bin'] = $aria2_bin = $this->aria2->getBin(); $params['aria2_executable'] = $aria2_executable = $this->aria2->isExecutable(); $params['youtube_installed'] = $youtube_installed = $this->youtube->isInstalled(); $params['youtube_bin'] = $youtube_bin = $this->youtube->getBin(); $params['youtube_executable'] = $youtube_executable = $this->youtube->isExecutable(); $params['ncd_hide_errors'] = $this->settings->get("ncd_hide_errors", false); $params['counter'] = $this->counters->getCounters(); $params['python_installed'] = $python_installed = Helper::pythonInstalled(); $errors = []; if ($aria2_installed && !$aria2_executable) { array_push($errors, sprintf("aria2 is installed but don't have the right permissions.Please execute command sudo chmod 755 %s", $aria2_bin)); } if ($youtube_installed && (!$youtube_executable || !@is_readable($youtube_bin))) { array_push($errors, sprintf("youtube-dl is installed but don't have the right permissions.Please execute command sudo chmod 755 %s", $youtube_bin)); } else if (!$youtube_installed) { array_push($errors, "youtube-dl is not installed!"); } if (!$python_installed) { array_push($errors, "python is not installed!"); } $params['errors'] = $errors; $params['settings'] = json_encode([ 'is_admin' => \OC_User::isAdminUser($this->uid), 'admin_url' => $this->urlGenerator->linkToRoute("settings.AdminSettings.index", ['section' => 'ncdownloader']), 'personal_url' => $this->urlGenerator->linkToRoute("settings.PersonalSettings.index", ['section' => 'ncdownloader']), 'ncd_hide_errors' => $params['ncd_hide_errors'], ]); $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); } }