added option for disabling bt protocol for non-admin uses close #3;
This commit is contained in:
@@ -39,8 +39,11 @@ class MainController extends Controller
|
||||
$this->dbconn = new DbHelper();
|
||||
$this->counters = new Counters($aria2, $this->dbconn, $UserId);
|
||||
$this->youtube = $youtube;
|
||||
$this->settings = new Settings($UserId);
|
||||
|
||||
$this->settings = new Settings($this->uid);
|
||||
$this->isAdmin = \OC_User::isAdminUser($this->uid);
|
||||
$this->hideError = $this->settings->get("ncd_hide_errors", false);
|
||||
$this->disable_bt_nonadmin = $this->settings->setType($this->settings::TYPE['SYSTEM'])->get("ncd_disable_bt", false);
|
||||
$this->accessDenied = $this->l10n->t("Sorry,only admin users can download files via BT!");
|
||||
}
|
||||
/**
|
||||
* @NoAdminRequired
|
||||
@@ -68,10 +71,11 @@ class MainController extends Controller
|
||||
$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['ncd_hide_errors'] = $this->hideError;
|
||||
$params['counter'] = $this->counters->getCounters();
|
||||
$params['python_installed'] = Helper::pythonInstalled();
|
||||
$params['ffmpeg_installed'] = Helper::ffmpegInstalled();
|
||||
$params['is_admin'] = $this->isAdmin;
|
||||
$sites = [];
|
||||
foreach (Helper::getSearchSites() as $site) {
|
||||
$label = $site['class']::getLabel();
|
||||
@@ -107,10 +111,11 @@ class MainController extends Controller
|
||||
$params['errors'] = $errors;
|
||||
|
||||
$params['settings'] = json_encode([
|
||||
'is_admin' => \OC_User::isAdminUser($this->uid),
|
||||
'is_admin' => $this->isAdmin,
|
||||
'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'],
|
||||
'ncd_hide_errors' => $this->hideError,
|
||||
'ncd_disable_bt' => $this->disable_bt_nonadmin,
|
||||
]);
|
||||
return $params;
|
||||
}
|
||||
@@ -121,6 +126,11 @@ class MainController extends Controller
|
||||
public function Download()
|
||||
{
|
||||
$url = trim($this->request->getParam('text-input-value'));
|
||||
if (Helper::isMagnet($url)) {
|
||||
if ($this->disable_bt_nonadmin && !($this->isAdmin)) {
|
||||
return new JSONResponse(['error' => $this->accessDenied]);
|
||||
}
|
||||
}
|
||||
//$type = trim($this->request->getParam('type'));
|
||||
$resp = $this->_download($url);
|
||||
return new JSONResponse($resp);
|
||||
@@ -156,6 +166,9 @@ class MainController extends Controller
|
||||
*/
|
||||
public function Upload()
|
||||
{
|
||||
if ($this->disable_bt_nonadmin && !$this->isAdmin) {
|
||||
return new JSONResponse(['error' => $this->l10n->t($this->accessDenied)]);
|
||||
}
|
||||
if (is_uploaded_file($file = $_FILES['torrentfile']['tmp_name'])) {
|
||||
$file = $this->aria2->getTorrentsDir() . '/' . Helper::cleanString($_FILES['torrentfile']['name']);
|
||||
|
||||
|
||||
@@ -70,7 +70,7 @@ export default {
|
||||
|
||||
set(value) {
|
||||
this.status = value;
|
||||
this.$emit("changed", value);
|
||||
this.$emit("changed", this.name,value);
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
@@ -1,11 +1,22 @@
|
||||
<template>
|
||||
<section id="ncdownloader-settings-collapsible-container">
|
||||
<div class="ncdownloader-settings-item" :data-tippy-content="tippy">
|
||||
<div class="ncdownloader-settings-item" :data-tippy-content="errorTooltip">
|
||||
<toggleButton
|
||||
:disabledText="toggleText"
|
||||
:enabledText="toggleText"
|
||||
:disabledText="errorText"
|
||||
:enabledText="errorText"
|
||||
:defaultStatus="toggleStatus"
|
||||
@changed="toggle"
|
||||
name="ncd_hide_errors"
|
||||
></toggleButton>
|
||||
</div>
|
||||
<div class="ncdownloader-settings-item" :data-tippy-content="btTooltip">
|
||||
<toggleButton
|
||||
v-if="isAdmin"
|
||||
disabledText="Disable BT for non-admin users"
|
||||
enabledText="Disable BT for non-admin users"
|
||||
:defaultStatus="btStatus"
|
||||
name="ncd_disable_bt"
|
||||
@changed="toggle"
|
||||
></toggleButton>
|
||||
</div>
|
||||
<div class="ncdownloader-settings-item">
|
||||
@@ -45,17 +56,20 @@ export default {
|
||||
admin: admin,
|
||||
isAdmin: this.settings.is_admin,
|
||||
sectionName: t("ncdownloader", "Settings"),
|
||||
toggleText: t("ncdownloader", "Hide Errors"),
|
||||
errorText: t("ncdownloader", "Hide Errors"),
|
||||
toggleStatus: helper.str2Boolean(this.settings.ncd_hide_errors),
|
||||
tippy: t("ncdownloader", "enable this to hide errors"),
|
||||
btStatus: helper.str2Boolean(this.settings.ncd_disable_bt),
|
||||
errorTooltip: t("ncdownloader", "Enable this to hide errors"),
|
||||
btTooltip: t("ncdownload", "Disable BT for non-admin users"),
|
||||
};
|
||||
},
|
||||
created() {},
|
||||
methods: {
|
||||
toggle(value) {
|
||||
toggle(name, value) {
|
||||
let data = {};
|
||||
data["ncd_hide_errors"] = value ? 1 : 0;
|
||||
const url = helper.generateUrl(basePath + "/personal/save");
|
||||
data[name] = value ? 1 : 0;
|
||||
let path = (name == "ncd_disable_bt") ? "/admin/save" : "/personal/save";
|
||||
const url = helper.generateUrl(basePath + path);
|
||||
Http.getInstance(url)
|
||||
.setData(data)
|
||||
.setHandler((resp) => {
|
||||
|
||||
@@ -13,6 +13,7 @@ extract($_);
|
||||
<?php print($l->t('Download & Search'));?>
|
||||
</button>
|
||||
</div>
|
||||
<?php if ($is_admin): ?>
|
||||
<div class="app-navigation-new" id="start-aria2">
|
||||
<?php if ($aria2_installed && $aria2_executable): ?>
|
||||
<button type="button" class="icon-power"
|
||||
@@ -30,6 +31,7 @@ extract($_);
|
||||
</button>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<ul>
|
||||
<li class="active-downloads">
|
||||
<div class="app-navigation-entry-bullet"></div>
|
||||
|
||||
Reference in New Issue
Block a user