feat(torrents): add H&R system enable config

This commit is contained in:
OldHawk
2018-05-20 21:54:14 +08:00
parent bd19f3ec05
commit 120a7da5c1
25 changed files with 58 additions and 37 deletions

View File

@@ -964,6 +964,7 @@ module.exports = {
* when admin/oper to delete a h&r torrent, system will auto remove all warning and number of user
* NOTE: you can change these value at anytime if you understand it
*
* @enable: setting whether enable the H&R function
* @condition: the condition of HnR warning, user must meet one of them before you receive the warning
* @seedTime: torrent seed time, unit of day, default to 7 days
* @seedTime_str: string desc of @seedTime
@@ -975,6 +976,7 @@ module.exports = {
* @checkWaringInterval_str: string desc of @checkWaringInterval
*/
hitAndRun: {
enable: true,
condition: {
seedTime: 60 * 60 * 1000 * 24 * 7,
seedTime_str: '7d',

View File

@@ -22,6 +22,8 @@ var supportConfig = config.meanTorrentConfig.support;
var backupConfig = config.meanTorrentConfig.backup;
var announceConfig = config.meanTorrentConfig.announce;
var signConfig = config.meanTorrentConfig.sign;
var hnrConfig = config.meanTorrentConfig.hitAndRun;
var inbox = require('inbox');
var simpleParser = require('mailparser').simpleParser;
@@ -71,7 +73,10 @@ module.exports = function (app) {
cronJobs.push(removeGhostPeers());
cronJobs.push(checkUserAccountIdleStatus());
cronJobs.push(countUsersHnrWarning());
if (hnrConfig.enable) {
cronJobs.push(countUsersHnrWarning());
}
if (supportConfig.mailTicketSupportService) {
cronJobs.push(listenServiceEmail());

View File

@@ -200,7 +200,7 @@
<dt class="h-line">{{ 'CA_TORRENT_ATTR' | translate}}:</dt>
<dd class="h-line">
<div class="checkbox checkbox-hnr">
<label class="checkbox-inline">
<label class="checkbox-inline" ng-if="vm.hnrConfig.enable">
<input type="checkbox" ng-model="vm.filterHnR"
ng-change="vm.onHnRChanged();"> {{ 'CA_TORRENT_HNR' | translate}}
</label>

View File

@@ -365,7 +365,7 @@ exports.announce = function (req, res) {
if not find and torrent is h&r and user isn`t vip, then create complete record
---------------------------------------------------------------*/
function (done) {
if (req.torrent.torrent_hnr && !req.passkeyuser.isVip) {
if (hnrConfig.enable && req.torrent.torrent_hnr && !req.passkeyuser.isVip) {
Complete.findOne({
torrent: req.torrent._id,
user: req.passkeyuser._id
@@ -429,19 +429,23 @@ exports.announce = function (req, res) {
---------------------------------------------------------------*/
function (done) {
if (!req.seeder && !req.passkeyuser.isVip && event(query.event) === EVENT_STARTED) {
if (req.passkeyuser.hnr_warning >= hnrConfig.forbiddenDownloadMinWarningNumber) {
if (!req.torrent.torrent_hnr) {
done(190);
} else {
if (!req.completeTorrent) {
done(191);
if (hnrConfig.enable) {
if (req.passkeyuser.hnr_warning >= hnrConfig.forbiddenDownloadMinWarningNumber) {
if (!req.torrent.torrent_hnr) {
done(190);
} else {
if (!req.completeTorrent.hnr_warning) {
done(190);
if (!req.completeTorrent) {
done(191);
} else {
done(null);
if (!req.completeTorrent.hnr_warning) {
done(190);
} else {
done(null);
}
}
}
} else {
done(null);
}
} else {
done(null);
@@ -711,7 +715,7 @@ exports.announce = function (req, res) {
---------------------------------------------------------------*/
function (curru, currd, done) {
if (curru > 0 || currd > 0) {
if (req.completeTorrent) {
if (hnrConfig.enable && req.completeTorrent) {
mtDebug.debugGreen('---------------WRITE COMPLETE DATA----------------', 'ANNOUNCE', true, req.passkeyuser);
req.completeTorrent.update({
$inc: {
@@ -735,7 +739,7 @@ exports.announce = function (req, res) {
---------------------------------------------------------------*/
function (done) {
if (!req.currentPeer.isNewCreated) {
if (req.completeTorrent && req.completeTorrent.complete && event(query.event) !== EVENT_COMPLETED) {
if (hnrConfig.enable && req.completeTorrent && req.completeTorrent.complete && event(query.event) !== EVENT_COMPLETED) {
mtDebug.debugGreen('---------------UPDATE H&R COMPLETE TOTAL_SEED_TIME----------------', 'ANNOUNCE', true, req.passkeyuser);
req.completeTorrent.update({
$inc: {
@@ -847,7 +851,7 @@ exports.announce = function (req, res) {
---------------------------------------------------------------*/
function (done) {
if (!req.currentPeer.isNewCreated) {
if (req.completeTorrent && event(query.event) !== EVENT_COMPLETED) {
if (hnrConfig.enable && req.completeTorrent && event(query.event) !== EVENT_COMPLETED) {
mtDebug.debugGreen('---------------COUNT H&R WARNING FOR USER----------------', 'ANNOUNCE', true, req.passkeyuser);
req.completeTorrent.countHnRWarning(false, true);
}
@@ -864,7 +868,7 @@ exports.announce = function (req, res) {
if (event(query.event) === EVENT_STOPPED) {
mtDebug.debugGreen('---------------EVENT_STOPPED----------------', 'ANNOUNCE', true, req.passkeyuser);
if (req.completeTorrent) {
if (hnrConfig.enable && req.completeTorrent) {
req.completeTorrent.countHnRWarning(true, false);
}
removeCurrPeer(function () {
@@ -937,7 +941,7 @@ exports.announce = function (req, res) {
req.currentPeer.globalUpdateMethod(true);
}
if (req.completeTorrent) {
if (hnrConfig.enable && req.completeTorrent) {
req.completeTorrent.globalUpdateMethod(true);
}
@@ -1033,7 +1037,7 @@ exports.announce = function (req, res) {
}).exec();
//update completeTorrent complete status
if (req.completeTorrent) {
if (hnrConfig.enable && req.completeTorrent) {
req.completeTorrent.update({
$set: {
complete: true

View File

@@ -1614,7 +1614,7 @@
VIDEO: {
SELF: 'Video Info',
FORMAT: 'Format',
Duration: 'Duration',
DURATION: 'Duration',
BITRATE: 'Bit Rate',
WIDTH: 'Width',
HEIGHT: 'Height',

View File

@@ -181,12 +181,14 @@
* checkHnRWarning
*/
vm.checkHnRWarning = function () {
vm.getWarning();
$interval(vm.getWarning, vm.hnrConfig.checkWaringInterval);
if(vm.hnrConfig.enable) {
vm.getWarning();
$interval(vm.getWarning, vm.hnrConfig.checkWaringInterval);
}
};
vm.getWarning = function () {
if (Authentication.user) {
if (Authentication.user && vm.hnrConfig.enable) {
UsersService.getUserWarningNumber()
.then(function (data) {
vm.user.hnr_warning = Authentication.user.hnr_warning = data.hnr_warning;

View File

@@ -19,6 +19,7 @@
vm.torrentSalesType = MeanTorrentConfig.meanTorrentConfig.torrentSalesType;
vm.torrentRLevels = MeanTorrentConfig.meanTorrentConfig.torrentRecommendLevel;
vm.salesGlobalConfig = MeanTorrentConfig.meanTorrentConfig.torrentGlobalSales;
vm.hnrConfig = MeanTorrentConfig.meanTorrentConfig.hitAndRun;
/**
* buildPager

View File

@@ -78,7 +78,7 @@
<a ui-sref="{{item.state}}">
<i class="fa fa-fw {{item.faIcon}} {{item.faClass}}"></i><span ng-bind="item.title" menu-title="{{item.title}}"></span>
</a>
<span class="badge menu-badge badge_danger" ng-show="vm.user.hnr_warning>0">{{vm.user.hnr_warning}}</span>
<span class="badge menu-badge badge_danger" ng-show="vm.user.hnr_warning>0 && vm.hnrConfig.enable">{{vm.user.hnr_warning}}</span>
</li>
<li ui-sref-active="active" ng-repeat="item in vm.scoreMenu.items" class="menu-parent">
<a ui-sref="{{item.state}}">

View File

@@ -16,6 +16,7 @@
vm.signConfig = MeanTorrentConfig.meanTorrentConfig.sign;
vm.announce = MeanTorrentConfig.meanTorrentConfig.announce;
vm.itemsPerPageConfig = MeanTorrentConfig.meanTorrentConfig.itemsPerPage;
vm.hnrConfig = MeanTorrentConfig.meanTorrentConfig.hitAndRun;
vm.invitationFields = {
isOfficial: true

View File

@@ -15,6 +15,7 @@
vm.signConfig = MeanTorrentConfig.meanTorrentConfig.sign;
vm.user = Authentication.user;
vm.announce = MeanTorrentConfig.meanTorrentConfig.announce;
vm.hnrConfig = MeanTorrentConfig.meanTorrentConfig.hitAndRun;
vm.invitePopover = {
title: 'INVITATION.TITLE_SEND',

View File

@@ -131,7 +131,7 @@
<li>{{ 'STATUS_FIELD.SEEDED' | translate}}{{ vm.selectedUser.seeded }}</li>
<li>{{ 'STATUS_FIELD.LEECHED' | translate}}{{ vm.selectedUser.leeched }}</li>
<li>{{ 'STATUS_FIELD.FINISHED' | translate}}{{ vm.selectedUser.finished }}</li>
<li ng-if="vm.selectedUser.hnr_warning>0">
<li ng-if="vm.selectedUser.hnr_warning>0 && vm.hnrConfig.enable">
{{ 'STATUS_FIELD.HNR_WARNING' | translate}}<span class="badge badge_danger">{{vm.selectedUser.hnr_warning}}</span>
</li>

View File

@@ -163,7 +163,7 @@
<li>{{ 'STATUS_FIELD.SEEDED' | translate}}{{ vm.selectedUser.seeded }}</li>
<li>{{ 'STATUS_FIELD.LEECHED' | translate}}{{ vm.selectedUser.leeched }}</li>
<li>{{ 'STATUS_FIELD.FINISHED' | translate}}{{ vm.selectedUser.finished }}</li>
<li ng-if="vm.selectedUser.hnr_warning>0">
<li ng-if="vm.selectedUser.hnr_warning>0 && vm.hnrConfig.enable">
{{ 'STATUS_FIELD.HNR_WARNING' | translate}}<span class="badge badge_danger">{{vm.selectedUser.hnr_warning}}</span>
</li>

View File

@@ -24,6 +24,7 @@
vm.torrentRLevels = MeanTorrentConfig.meanTorrentConfig.torrentRecommendLevel;
vm.torrentTypeConfig = MeanTorrentConfig.meanTorrentConfig.torrentType;
vm.salesGlobalConfig = MeanTorrentConfig.meanTorrentConfig.torrentGlobalSales;
vm.hnrConfig = MeanTorrentConfig.meanTorrentConfig.hitAndRun;
vm.torrentType = localStorageService.get('admin_last_selected_type') || 'movie';
vm.filterVIP = isSelectedVipType(vm.torrentType);

View File

@@ -24,6 +24,7 @@
vm.torrentTypeConfig = MeanTorrentConfig.meanTorrentConfig.torrentType;
vm.salesGlobalConfig = MeanTorrentConfig.meanTorrentConfig.torrentGlobalSales;
vm.rssConfig = MeanTorrentConfig.meanTorrentConfig.rss;
vm.hnrConfig = MeanTorrentConfig.meanTorrentConfig.hitAndRun;
vm.searchTags = [];
vm.searchKey = $state.params.keys || '';

View File

@@ -290,7 +290,7 @@ pre.prettyprint {
background-color: #f7f7f7;
border: solid 1px #ddd;
border-radius: 3px;
padding: 2px 3px 2px 25px;
padding: 0 3px 0 25px;
margin-bottom: 3px;
&:hover {
border: solid 1px @brand-primary;
@@ -327,7 +327,7 @@ pre.prettyprint {
background-color: #f7f7f7;
border: solid 1px #ddd;
border-radius: 3px;
padding: 2px 3px 2px 25px;
padding: 0 3px 0 25px;
margin-bottom: 3px;
margin-right: 4px;
&:hover {

View File

@@ -75,7 +75,7 @@
<span class="label label-se-info" ng-if="item.torrent_type == 'tvserial'"
ng-click="$event.stopPropagation();">S{{item.torrent_seasons}}E{{item.torrent_episodes}}</span>
<span class="label label-hnr-info" ng-if="item.torrent_hnr" ng-class="{'used': parent.filterHnR}"
<span class="label label-hnr-info" ng-if="item.torrent_hnr && vm.hnrConfig.enable" ng-class="{'used': parent.filterHnR}"
ng-click="vm.onHnRClicked(); $event.stopPropagation();">H&R</span>
<span class="label label-vip-info" ng-if="item.torrent_vip" ng-class="{'used': parent.filterVIP}"
@@ -227,7 +227,8 @@
</button>
</div>
<div class="margin-top-2">
<button class="btn col-xs-6 btn-xs btn-default" ng-click="vm.toggleHnR(item); $event.stopPropagation();">
<button class="btn col-xs-6 btn-xs btn-default" ng-disabled="!vm.hnrConfig.enable"
ng-click="vm.toggleHnR(item); $event.stopPropagation();">
{{ (item.torrent_hnr ? 'ADMIN_BASIC_UNSET_HNR' : 'ADMIN_BASIC_SET_HNR') | translate}}
</button>
<button class="btn col-xs-6 btn-xs btn-default" ng-click="vm.toggleVIP(item); $event.stopPropagation();">

View File

@@ -105,7 +105,7 @@
<dt class="h-line">{{ 'CA_TORRENT_ATTR' | translate}}:</dt>
<dd class="h-line">
<span class="checkbox checkbox-hnr">
<label class="checkbox-inline">
<label class="checkbox-inline" ng-if="vm.hnrConfig.enable">
<input type="checkbox" ng-model="vm.filterHnR" ng-change="vm.onHnRChanged();"> {{ 'CA_TORRENT_HNR' | translate}}
</label>
<label class="checkbox-inline" ng-if="!vm.isGlobalSaleNow()">

View File

@@ -171,7 +171,7 @@
<dt class="h-line">{{ 'CA_TORRENT_ATTR' | translate}}:</dt>
<dd class="h-line">
<div class="checkbox checkbox-hnr">
<label class="checkbox-inline">
<label class="checkbox-inline" ng-if="vm.hnrConfig.enable">
<input type="checkbox" ng-model="vm.filterHnR" ng-change="vm.onHnRChanged();"> {{ 'CA_TORRENT_HNR' | translate}}
</label>
<label class="checkbox-inline" ng-if="!vm.isGlobalSaleNow()">

View File

@@ -15,6 +15,7 @@
vm.scoreLevelData = ScoreLevelService.getScoreLevelJson(vm.user.score);
vm.announce = MeanTorrentConfig.meanTorrentConfig.announce;
vm.signConfig = MeanTorrentConfig.meanTorrentConfig.sign;
vm.hnrConfig = MeanTorrentConfig.meanTorrentConfig.hitAndRun;
/**
* unIdle

View File

@@ -19,6 +19,7 @@
vm.messageTo = messageTo;
vm.isContextUserSelf = isContextUserSelf;
vm.scoreLevelData = ScoreLevelService.getScoreLevelJson(vm.user.score);
vm.hnrConfig = MeanTorrentConfig.meanTorrentConfig.hitAndRun;
mtDebug.info(user);

View File

@@ -254,7 +254,7 @@
<dt class="h-line">{{ 'STATUS_FIELD.FINISHED' | translate}}</dt>
<dd class="h-line">{{ vm.user.finished }}</dd>
<div ng-if="vm.user.hnr_warning>0">
<div ng-if="vm.user.hnr_warning>0 && vm.hnrConfig.enable">
<dt class="h-line">{{ 'STATUS_FIELD.HNR_WARNING' | translate}}</dt>
<dd class="h-line">
<span class="badge badge_danger">{{vm.user.hnr_warning}}</span>

View File

@@ -7,7 +7,7 @@
</h4>
</span>
<div class="alert alert-warning text-center" role="alert" ng-if="vm.user.hnr_warning>0">
<div class="alert alert-warning text-center" role="alert" ng-if="vm.user.hnr_warning>0 && vm.hnrConfig.enable">
<span translate="WARNING_TOOLTIP" translate-values="{wnumber: vm.user.hnr_warning}"></span>
<a ui-sref="status.warning">{{'WARNING_DETAIL_LINK' | translate}}</a>
</div>
@@ -184,7 +184,7 @@
<dt class="h-line">{{ 'STATUS_FIELD.FINISHED' | translate}}</dt>
<dd class="h-line">{{ vm.user.finished }}</dd>
<div ng-if="vm.user.hnr_warning>0">
<div ng-if="vm.user.hnr_warning>0 && vm.hnrConfig.enable">
<dt class="h-line">{{ 'STATUS_FIELD.HNR_WARNING' | translate}}</dt>
<dd class="h-line">
<span class="badge badge_danger">{{vm.user.hnr_warning}}</span>

View File

@@ -17,7 +17,7 @@
<a><i class="fa fa-arrow-down fa-2x" aria-hidden="true"></i><span
class="tab-title">{{'STATUS_DOWNLOADING' | translate}}</span></a>
</li>
<li ui-sref="status.warning" ui-sref-active="active" title="{{'STATUS_WARNING' | translate}}">
<li ui-sref="status.warning" ui-sref-active="active" title="{{'STATUS_WARNING' | translate}}" ng-if="vm.hnrConfig.enable">
<a><i class="fa fa-warning fa-2x" aria-hidden="true"></i><span class="tab-title">{{'STATUS_WARNING' | translate}}</span></a>
</li>
</ul>

View File

@@ -168,7 +168,7 @@
<dt class="h-line">{{ 'STATUS_FIELD.FINISHED' | translate}}</dt>
<dd class="h-line">{{ vm.user.finished }}</span></dd>
<div ng-if="vm.user.hnr_warning>0">
<div ng-if="vm.user.hnr_warning>0 && vm.hnrConfig.enable">
<dt class="h-line">{{ 'STATUS_FIELD.HNR_WARNING' | translate}}</dt>
<dd class="h-line"><span class="badge badge_danger">{{vm.user.hnr_warning}}</span></dd>
</div>

View File

@@ -125,7 +125,7 @@
<dt class="h-line">{{ 'CA_TORRENT_ATTR' | translate}}:</dt>
<dd class="h-line">
<div class="checkbox checkbox-hnr">
<label class="checkbox-inline">
<label class="checkbox-inline" ng-if="vm.hnrConfig.enable">
<input type="checkbox" ng-model="vm.filterHnR"
ng-change="vm.onHnRChanged();"> {{ 'CA_TORRENT_HNR' | translate}}
</label>