getUserSession()->getUser(); $this->uid = ($user) ? $user->getUID() : ''; $this->settings = new Settings($this->uid); $this->dataDir = \OC::$server->getSystemConfig()->getValue('datadirectory'); $this->appPath = \OC::$server->getAppManager()->getAppPath('ncdownloader'); $this->userFolder = Helper::getUserFolder($this->uid); $container = $this->getContainer(); $container->registerService('UserId', function (IContainer $container) { return $this->uid; }); $container->registerService('Aria2', function (IContainer $container) { return new Aria2($this->getConfig()); }); $container->registerService('Youtube', function (IContainer $container) { $config = [ 'binary' => $this->settings->setType(Settings::TYPE['SYSTEM'])->get("ncd_yt_binary"), 'downloadDir' => $this->getRealDownloadDir(), 'settings' => $this->settings->setType(Settings::TYPE['USER'])->getYoutube(), ]; return new Youtube($config); }); $container->registerService('Settings', function (IContainer $container) { return new Settings($this->uid); }); $container->registerService('MainController', function (IContainer $container) { return new MainController( $container->query('AppName'), $container->query('Request'), $container->query('UserId'), \OC::$server->getL10N('ncdownloader'), //\OC::$server->getRootFolder(), $container->query('Aria2'), $container->query('Youtube') ); }); $container->registerService('Aria2Controller', function (IContainer $container) { return new Aria2Controller( $container->query('AppName'), $container->query('Request'), $container->query('UserId'), \OC::$server->getL10N('ncdownloader'), \OC::$server->getRootFolder(), $container->query('Aria2') ); }); $container->registerService('YoutubeController', function (IContainer $container) { return new YoutubeController( $container->query('AppName'), $container->query('Request'), $container->query('UserId'), \OC::$server->getL10N('ncdownloader'), $container->query('Aria2'), $container->query('Youtube') ); }); $container->registerService('crawler', function () { return new Crawler(); }); $container->registerService('httpClient', function () { $agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36'; return HttpClient::create([ 'headers' => [ 'User-Agent' => $agent, ], ]); }); $container->registerService(TPB::class, function (IContainer $container) { $crawler = $container->query('crawler'); $client = $container->query('httpClient'); return new TPB($crawler, $client); }); $container->registerService(bitSearch::class, function (IContainer $container) { $crawler = $container->query('crawler'); $client = $container->query('httpClient'); return new bitSearch($crawler, $client); }); $container->registerService(sliderkz::class, function (IContainer $container) { $client = $container->query('httpClient'); return new sliderkz($client); }); } private function getRealDownloadDir() { //relative nextcloud user path $dir = $this->settings->get('ncd_downloader_dir') ?? "/Downloads"; return $this->dataDir . $this->userFolder . $dir; } private function getRealTorrentsDir() { $dir = $this->settings->get('ncd_torrents_dir') ?? "/Torrents"; return $this->dataDir . $this->userFolder . $dir; } private function getConfig() { //$this->config = \OC::$server->getAppConfig(); $realDownloadDir = $this->getRealDownloadDir(); $torrentsDir = $this->getRealTorrentsDir(); $aria2_dir = $this->dataDir . "/aria2"; $settings['seed_time'] = $this->settings->get("ncd_seed_time"); $settings['seed_ratio'] = $this->settings->get("ncd_seed_ratio"); if (is_array($customSettings = $this->settings->getAria2())) { $settings = array_merge($customSettings, $settings); } $token = $this->settings->setType(Settings::TYPE['SYSTEM'])->get('ncd_rpctoken'); $config = [ 'dir' => $realDownloadDir, 'torrents_dir' => $torrentsDir, 'conf_dir' => $aria2_dir, 'token' => $token, 'settings' => $settings, 'binary' => $this->settings->setType(Settings::TYPE['SYSTEM'])->get('ncd_aria2_binary'), 'startHook' => $this->appPath . "/hooks/startHook.sh", 'completeHook' => $this->appPath . "/hooks/completeHook.sh", ]; return $config; } }