⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 btg.js

📁 LINUX下
💻 JS
📖 第 1 页 / 共 4 页
字号:
<!--/* * btg Copyright (C) 2005 Michael Wojciechowski. * Web client written by Johan Str枚m. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA *//* * $Id: btg.js,v 1.1.4.17 2007/09/17 15:34:50 wojci Exp $ *//************************************************** * Global variables **************************************************//* This list contains all Status() objects presented in the context * table. Is used from updateContextTable */var contextList = new Array();/* Indicates if we should autoupdate contexts */var doAutoRefresh = 0;/* If window is focused or blurred */var isBlurred = 0;/* Defines if there are no "custom" statusmessages show */var isStatusIdle = 0;/* Context data age, how many seconds since we last got an update of the contexts */var contextsAge = 0;/* Refresh timer */var refreshTimeout = 20;var timerHandle = null;// Constant.var noLimit     = -1;// Constant.var bytesPerKiB = 1024;/************************************************** * Functions called from user interface in some  * way or another (either via user action or other * events). **************************************************//* sessionList, list existing sessions */function sessionList(){	setStatus("Listing available sessions...");	btg_sessionList(cb_sessionList, cb_sessionList_err);}/* auth, authorize  */function auth(){    // !!!    var username = encodeURIComponent(document.frm_auth.username.value);    var password = encodeURIComponent(document.frm_auth.password.value);    document.frm_auth.username.value = "";    document.frm_auth.password.value = "";    setStatus("Logging in " + username + "...");    btg_auth(cb_auth, cb_auth_err, username, password);}/* deauth, deauthorize (logout) */function deauth(){	setStatus("Logging out...");	btg_deauth(cb_deauth, cb_deauth);}/* sessionAttach, attach to a existing session */function sessionAttach(){	var id = document.frm_sessionlist.sessionlist.options[document.frm_sessionlist.sessionlist.selectedIndex].value;	setStatus("Attaching to session " + id + "...");	btg_sessionAttach(cb_sessionAttach, cb_sessionAttach_err, id);}/* sessionSetup, setup a new session */function sessionSetup(){	var seedLimit = document.frm_sessionsetup.seedLimit.value;	var seedTimeout = document.frm_sessionsetup.seedTimeout.value;	if(seedLimit.length == 0)		seedLimit = noLimit;	if(seedTimeout.length == 0)		seedTimeout = noLimit;	else		// User enters minutes...		seedTimeout=seedTimeout*60;	setStatus("Setting up new session...");	btg_sessionSetup(cb_sessionSetup, cb_sessionSetup_err, seedLimit, seedTimeout);}/* sessionDetach, detach from the current session */function sessionDetach(){	setStatus("Detaching from session...");	btg_sessionDetach(cb_sessionDetach, cb_sessionDetach_err);}/* sessionQuit, quit the currently attached session */function sessionQuit(){	if(!confirm("Are you realy sure you want to terminate this session and all torrents downloading in it?"))		return;		setStatus("Terminating session...");	btg_sessionQuit(cb_sessionQuit, cb_sessionQuit_err);}function cleanAllContexts(){	setStatus("Cleaning session...");	btg_cleanAll(cb_cleanAll, cb_cleanAll_err);}function showGlobalLimits(){	setUIState(4);	setStatus("Setting global limits.");	btg_globallimitstatus(cb_globallimitstatus, cb_globallimitstatus_err);}function cancelGlobalLimits(){	setStatus("Not setting global limits.");	setUIState(3);}function setGlobalLimits(){	var eUl = document.getElementById('gupload');	var eDl = document.getElementById('gdownload');	var eMu = document.getElementById('gmaxuploads');	var eMc = document.getElementById('gmaxconn');	var ul, dl, mu, mc;	if (eUl.value != "" && parseInt(eUl.value) > 0)		{		ul = parseInt(eUl.value)*bytesPerKiB;	}	else 	{		ul = noLimit;	}	if(eDl.value != "" && parseInt(eDl.value) > 0)	{		dl = parseInt(eDl.value)*bytesPerKiB;	}	else	{		dl = noLimit;	}	if(eMu.value != "" && parseInt(eMu.value) > 0)	{		mu = parseInt(eMu.value);	}	else	{		mu = noLimit;	}	if(eMc.value != "" && parseInt(eMc.value) > 0)	{		mc = parseInt(eMc.value);	}	else	{		mc = noLimit;	}	// Set the limits:	btg_globallimit(cb_globallimit, cb_globallimit_err, ul, dl, mu, mc);}/* contextStart, start a specific torrent */function contextStop(id){	setStatus("Stopping torrent...");	btg_contextStop(cb_contextStop, cb_contextStop_err, id);}/* contextStop, stop a specific torrent */function contextStart(id){	setStatus("Starting torrent...");	btg_contextStart(cb_contextStart, cb_contextStart_err, id);}/* contextAbort, remove a specific torrent */function contextAbort(id){	if(!confirm("Are you sure?"))		return;	var eraseData = 0;	if(confirm("Do you want to remove the downloaded data from disk?"))		eraseData = 1;	setStatus("Deleting torrent...");	btg_contextAbort(cb_contextAbort, cb_contextAbort_err, id, eraseData);}/* contextClean, clean/remove a specific torrent */function contextClean(id){	if(!confirm("Are you sure?"))		return;	setStatus("Moving torrent...");	btg_contextClean(cb_contextClean, cb_contextClean_err, id);}/* contextPeers, get peer list for a torrent */function contextPeers(id){	setStatus("Getting peers list...");	btg_contextPeers(cb_contextPeers, cb_contextPeers_err, id);}/* contextLimitStatus, get limits for a specific torrent (or a list of torrents, comma delimited) */function contextLimitStatus(id){	setStatus("Getting limit status...");	btg_contextLimitStatus(cb_contextLimitStatus, cb_contextLimitStatus_err, id);}/* toogleContextDetails, toogles the details info for a specific torrent on/off */function toogleContextDetails(id){	var detailsRow= document.getElementById('context_'+id+'_details_row')	var controlRow= document.getElementById('context_'+id+'_control_row')	if(detailsRow.style.display == '')	{		detailsRow.style.display='none';		controlRow.style.display='none';	}	else	{		detailsRow.style.display='';		controlRow.style.display='';	}}/* hideAllContextDetails, hides details info for all torrents */function hideAllContextDetails(){	var table = document.getElementById('torrent_table');	for(var x = 0; x < table.rows.length; x++)	{		var row = table.rows[x];		if(row.id.match(/context_(\d+)_details_row/) || row.id.match(/context_(\d+)_control_row/))			row.style.display='none';	}}/* saveContextLimit, save limits for a specific context */function saveContextLimit(id){	var eUl = document.getElementById('txtUploadLimit_'+id);	var eDl = document.getElementById('txtDownloadLimit_'+id);	var eSl = document.getElementById('txtSeedLimit_'+id);	var eSt = document.getElementById('txtSeedTimeout_'+id);	var ul, dl, sl, st;	if(eUl.value != "" && parseInt(eUl.value) > 0)	ul = parseInt(eUl.value)*bytesPerKiB;	else ul = noLimit;	if(eDl.value != "" && parseInt(eDl.value) > 0)	dl = parseInt(eDl.value)*bytesPerKiB;	else dl = noLimit;	if(eSl.value != "" && parseInt(eSl.value) > 0)	sl = parseInt(eSl.value);	else sl = noLimit;	if(eSt.value != "" && parseInt(eSt.value) > 0)	st = parseInt(eSt.value)*60;	else st = noLimit;	btg_contextLimit(cb_contextLimit, cb_contextLimit_err, id, ul, dl, sl, st, 0);}/* uploadCheck, called from upload form's onSubmit */function uploadCheck(){	var file = document.getElementById('upload_input');	if(file.value == '')	{		alert('Please select a file.');		return false;	}	/* Make sure file ends with .torrent */	if(!file.value.match(/\.torrent$/))	{		alert('Only .torrent files allowed.');		return false;	}	/* Valid file */	setStatus('Uploading torrent...');	return true;}/* Init, called from BODYs onLoad */function init(is_authed, session){	/* Call our timer function (direct now but later once a second) */	timerHandle = setTimeout(timer, 1);	if(is_authed == 0)	{		setUIState(1);		setStatus("Waiting for login.");	}	else if(session == -1)	{		/* Authed, but no session attached, display session list */		sessionList();		setUIState(2);	}else	{		/* Authed and attached */		setStatus("Loading context list...");		doAutoRefresh = 1;		refreshContextList();		setUIState(3);	}	/* Everything should be loaded now, show main container */	document.getElementById('container').style.display='block';		/* Setup handlers so we dont run when we're not focused */	window.onblur = function(){ isBlurred = true; };	window.onfocus = function(){ isBlurred = false; timer(); };}/** * Updates the UI state. * @param state 	Value 0 indicates state not known/daemon dead, dont show any controls. *						Value 1 indicates not authed, show auth controls. *						Value 2 indicates authed but not attached to any session, show attach and create. *						Value 3 indicates attached, show context list etc. */function setUIState(state){	if(state == 0)	// State unknown/daemon unrechable	{		document.getElementById('layer_sessions').style.display='none';		document.getElementById('layer_auth').style.display='none';		document.getElementById('attach_button').style.display='none';		document.getElementById('setup_button').style.display='none';		document.getElementById('quit_button').style.display='none';		document.getElementById('refresh_button').style.display='none';		document.getElementById('collapse_button').style.display='none';		document.getElementById('cleanall_button').style.display='none';		document.getElementById('layer_glimit').style.display='none';		document.getElementById('glimit_button').style.display='none';		document.getElementById('glimit_cancel_button').style.display='none';		document.getElementById('glimit_set_button').style.display='none';		document.getElementById('detach_button').style.display='none';		document.getElementById('logout_button').style.display='none';		document.getElementById('upload').style.display='none';		document.getElementById('layer_contexts').style.display='none';		document.getElementById('status_download').style.display='none';		document.getElementById('status_upload').style.display='none';		doAutoRefresh = 0;	}	else if(state == 1)	// Not authorized, show authorize controls.	{		document.getElementById('layer_auth').style.display='block';		document.getElementById('layer_sessions').style.display='none';		document.getElementById('attach_button').style.display='none';		document.getElementById('setup_button').style.display='none';		document.getElementById('quit_button').style.display='none';		document.getElementById('refresh_button').style.display='none';		document.getElementById('collapse_button').style.display='none';		document.getElementById('cleanall_button').style.display='none';		document.getElementById('layer_glimit').style.display='none';		document.getElementById('glimit_button').style.display='none';		document.getElementById('glimit_cancel_button').style.display='none';		document.getElementById('glimit_set_button').style.display='none';		document.getElementById('detach_button').style.display='none';		document.getElementById('logout_button').style.display='none';		document.getElementById('upload').style.display='none';		document.getElementById('layer_contexts').style.display='none';		document.getElementById('status_download').style.display='none';		document.getElementById('status_upload').style.display='none';		doAutoRefresh = 0;	}	else if(state == 2)	// Authorized, not attached to any session. Show attach and setup controls.	{		document.getElementById('layer_auth').style.display='none';		document.getElementById('quit_button').style.display='none';		document.getElementById('refresh_button').style.display='none';		document.getElementById('collapse_button').style.display='none';		document.getElementById('cleanall_button').style.display='none';		document.getElementById('layer_glimit').style.display='none';		document.getElementById('glimit_button').style.display='none';		document.getElementById('glimit_cancel_button').style.display='none';		document.getElementById('glimit_set_button').style.display='none';		document.getElementById('detach_button').style.display='none';		document.getElementById('upload').style.display='none';		document.getElementById('layer_contexts').style.display='none';		document.getElementById('status_download').style.display='none';		document.getElementById('status_upload').style.display='none';		document.getElementById('layer_sessions').style.display='block';		document.getElementById('attach_button').style.display='inline';		document.getElementById('setup_button').style.display='inline';		document.getElementById('logout_button').style.display='inline';		doAutoRefresh = 0;	}	else if(state == 3)	// Authorized, attached to a session. Show context list and controls. 	{		document.getElementById('layer_sessions').style.display='none';		document.getElementById('attach_button').style.display='none';		document.getElementById('setup_button').style.display='none';		document.getElementById('refresh_button').style.display='block';		document.getElementById('quit_button').style.display='inline';		document.getElementById('collapse_button').style.display='inline';		document.getElementById('cleanall_button').style.display='inline';		document.getElementById('layer_glimit').style.display='none';		document.getElementById('glimit_button').style.display='inline';		document.getElementById('glimit_cancel_button').style.display='none';		document.getElementById('glimit_set_button').style.display='none';		document.getElementById('detach_button').style.display='inline';		document.getElementById('logout_button').style.display='inline';		document.getElementById('upload').style.display='block';		document.getElementById('layer_contexts').style.display='block';		document.getElementById('status_download').style.display='inline';		document.getElementById('status_upload').style.display='inline';		doAutoRefresh = 1;	}	else if(state == 4)	// Authorized, Set global limits.	{		// !!!		document.getElementById('layer_sessions').style.display='none';		document.getElementById('attach_button').style.display='none';		document.getElementById('setup_button').style.display='none';		document.getElementById('refresh_button').style.display='none';		document.getElementById('quit_button').style.display='inline';		document.getElementById('collapse_button').style.display='none';		document.getElementById('cleanall_button').style.display='none';		document.getElementById('layer_glimit').style.display='block';		document.getElementById('glimit_button').style.display='none';		document.getElementById('glimit_cancel_button').style.display='inline';		document.getElementById('glimit_set_button').style.display='inline';		document.getElementById('detach_button').style.display='inline';		document.getElementById('logout_button').style.display='inline';		document.getElementById('upload').style.display='none';		document.getElementById('layer_contexts').style.display='none';		document.getElementById('status_download').style.display='none';		document.getElementById('status_upload').style.display='none';		doAutoRefresh = 0;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -