1 <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML
4.0//EN'
>
3 Tomato RAF Transmission GUI
4 Copyright (C) 2007-2011 Shibby
5 http://openlinksys.info
6 For use with Tomato RAF Firmware only.
7 No part of this file may be used without permission.
11 <meta http-equiv='content-type' content='text/html;charset=utf-
8'
>
12 <meta name='robots' content='noindex,nofollow'
>
13 <title>[<%
ident(); %>] Nas: BitTorrent Client
</title>
14 <link rel='stylesheet' type='text/css' href='tomato.css'
>
15 <link rel='stylesheet' type='text/css' href='color.css'
>
16 <script type='text/javascript' src='tomato.js'
></script>
17 <style type='text/css'
>
23 <script type='text/javascript'
>
24 // <% nvram("bt_enable,bt_binary,bt_binary_custom,bt_custom,bt_port,bt_dir,bt_settings,bt_settings_custom,bt_incomplete,bt_rpc_enable,bt_rpc_wan,bt_auth,bt_login,bt_password,bt_port_gui,bt_dl_enable,bt_dl,bt_ul_enable,bt_ul,bt_peer_limit_global,bt_peer_limit_per_torrent,bt_ul_slot_per_torrent,bt_ratio_enable,bt_ratio,bt_ratio_idle_enable,bt_ratio_idle,bt_dht,bt_pex,bt_lpd,bt_utp,bt_blocklist,bt_blocklist_url,bt_sleep,bt_check,bt_check_time,bt_dl_queue_enable,bt_dl_queue_size,bt_ul_queue_enable,bt_ul_queue_size,bt_message,bt_log,bt_log_path"); %>
26 var btgui_link
= ' <a href="http://' + location
.hostname
+':<% nv('bt_port_gui
'); %>" target="_blank"><i>[Click here to open Transmission GUI]</i></a>';
28 function verifyFields(focused
, quiet
)
32 var a
= E('_f_bt_enable').checked
;
33 var c
= E('_f_bt_rpc_enable').checked
;
34 var d
= E('_f_bt_dl_enable').checked
;
35 var e
= E('_f_bt_ul_enable').checked
;
36 var g
= E('_f_bt_ratio_enable').checked
;
37 var h
= E('_f_bt_auth').checked
;
38 var i
= E('_f_bt_blocklist').checked
;
39 var k
= E('_f_bt_dl_queue_enable').checked
;
40 var l
= E('_f_bt_ul_queue_enable').checked
;
41 var m
= E('_f_bt_check').checked
;
42 var n
= E('_f_bt_ratio_idle_enable').checked
;
43 var r
= E('_f_bt_log').checked
;
45 E('_bt_custom').disabled
= !a
;
46 E('_bt_binary').disabled
= !a
;
47 E('_bt_dir').disabled
= !a
;
48 E('_bt_port').disabled
= !a
;
49 E('_bt_sleep').disabled
= !a
;
50 E('_f_bt_incomplete').disabled
= !a
;
51 E('_f_bt_check').disabled
= !a
;
52 E('_bt_check_time').disabled
= !a
|| !m
;
53 E('_bt_settings').disabled
= !a
;
54 E('_f_bt_rpc_enable').disabled
= !a
;
55 E('_bt_port_gui').disabled
= !a
|| !c
;
56 E('_f_bt_auth').disabled
= !a
|| !c
;
57 E('_bt_login').disabled
= !a
|| !c
|| !h
;
58 E('_bt_password').disabled
= !a
|| !c
| !h
;
59 E('_f_bt_rpc_wan').disabled
= !a
|| !c
|| !h
;
60 E('_f_bt_dl_enable').disabled
= !a
;
61 E('_bt_dl').disabled
= !a
|| !d
;
62 E('_f_bt_ul_enable').disabled
= !a
;
63 E('_bt_ul').disabled
= !a
|| !e
;
64 E('_bt_peer_limit_global').disabled
= !a
;
65 E('_bt_peer_limit_per_torrent').disabled
= !a
;
66 E('_bt_ul_slot_per_torrent').disabled
= !a
;
67 E('_f_bt_ratio_enable').disabled
= !a
;
68 E('_bt_ratio').disabled
= !a
|| !g
;
69 E('_f_bt_ratio_idle_enable').disabled
= !a
;
70 E('_bt_ratio_idle').disabled
= !a
|| !n
;
71 E('_f_bt_dht').disabled
= !a
;
72 E('_f_bt_pex').disabled
= !a
;
73 E('_f_bt_lpd').disabled
= !a
;
74 E('_f_bt_utp').disabled
= !a
;
75 E('_f_bt_blocklist').disabled
= !a
;
76 E('_bt_blocklist_url').disabled
= !a
|| !i
;
77 E('_f_bt_dl_queue_enable').disabled
= !a
;
78 E('_bt_dl_queue_size').disabled
= !a
|| !k
;
79 E('_f_bt_ul_queue_enable').disabled
= !a
;
80 E('_bt_ul_queue_size').disabled
= !a
|| !l
;
81 E('_bt_message').disabled
= !a
;
82 E('_f_bt_log').disabled
= !a
;
83 E('_bt_log_path').disabled
= !a
|| !r
;
85 var o
= (E('_bt_settings').value
== 'custom');
86 elem
.display('_bt_settings_custom', o
&& a
);
88 var p
= (E('_bt_binary').value
== 'custom');
89 elem
.display('_bt_binary_custom', p
&& a
);
91 if (!v_length('_bt_custom', quiet
, 0, 2048)) ok
= 0;
93 var s
= E('_bt_custom');
94 if (s
.value
.search(/"rpc-enable":/) == 0) {
95 ferror
.set(s
, 'Cannot set "rpc-enable" option here. You can set it in Tomato GUI', quiet
);
98 if (s
.value
.search(/"peer-port":/) == 0) {
99 ferror
.set(s
, 'Cannot set "peer-port" option here. You can set it in Tomato GUI', quiet
);
102 if (s
.value
.search(/"speed-limit-down-enabled":/) == 0) {
103 ferror
.set(s
, 'Cannot set "speed-limit-down-enabled" option here. You can set it in Tomato GUI', quiet
);
106 if (s
.value
.search(/"speed-limit-up-enabled":/) == 0) {
107 ferror
.set(s
, 'Cannot set "speed-limit-up-enabled" option here. You can set it in Tomato GUI', quiet
);
110 if (s
.value
.search(/"speed-limit-down":/) == 0) {
111 ferror
.set(s
, 'Cannot set "speed-limit-down" option here. You can set it in Tomato GUI', quiet
);
114 if (s
.value
.search(/"speed-limit-up":/) == 0) {
115 ferror
.set(s
, 'Cannot set "speed-limit-up" option here. You can set it in Tomato GUI', quiet
);
118 if (s
.value
.search(/"rpc-port":/) == 0) {
119 ferror
.set(s
, 'Cannot set "rpc-port" option here. You can set it in Tomato GUI', quiet
);
122 if (s
.value
.search(/"rpc-whitelist-enabled":/) == 0) {
123 ferror
.set(s
, 'Cannot set "rpc-whitelist-enabled" option here. Whitelist is always disabled', quiet
);
126 if (s
.value
.search(/"rpc-username":/) == 0) {
127 ferror
.set(s
, 'Cannot set "rpc-username" option here. You can set it in Tomato GUI', quiet
);
130 if (s
.value
.search(/"rpc-password":/) == 0) {
131 ferror
.set(s
, 'Cannot set "rpc-password" option here. You can set it in Tomato GUI', quiet
);
134 if (s
.value
.search(/"download-dir":/) == 0) {
135 ferror
.set(s
, 'Cannot set "download-dir" option here. You can set it in Tomato GUI', quiet
);
138 if (s
.value
.search(/"incomplete-dir-enabled":/) == 0) {
139 ferror
.set(s
, 'Cannot set "incomplete-dir-enabled" option here. You can set it in Tomato GUI', quiet
);
142 if (s
.value
.search(/"incomplete-dir":/) == 0) {
143 ferror
.set(s
, 'Cannot set "incomplete-dir" option here. If incomplete dir is enabled, all incomplete files will be downloaded to "/download_dir/.incomplete" directory.', quiet
);
146 if (s
.value
.search(/"peer-limit-global":/) == 0) {
147 ferror
.set(s
, 'Cannot set "peer-limit-global" option here. You can set it in Tomato GUI', quiet
);
150 if (s
.value
.search(/"peer-limit-per-torrent":/) == 0) {
151 ferror
.set(s
, 'Cannot set "peer-limit-per-torrent" option here. You can set it in Tomato GUI', quiet
);
154 if (s
.value
.search(/"upload-slots-per-torrent":/) == 0) {
155 ferror
.set(s
, 'Cannot set "upload-slots-per-torrent" option here. You can set it in Tomato GUI', quiet
);
158 if (s
.value
.search(/"dht-enabled":/) == 0) {
159 ferror
.set(s
, 'Cannot set "dht-enabled" option here. You can set it in Tomato GUI', quiet
);
162 if (s
.value
.search(/"pex-enabled":/) == 0) {
163 ferror
.set(s
, 'Cannot set "pex-enabled" option here. You can set it in Tomato GUI', quiet
);
166 if (s
.value
.search(/"lpd-enabled":/) == 0) {
167 ferror
.set(s
, 'Cannot set "lpd-enabled" option here. You can set it in Tomato GUI', quiet
);
170 if (s
.value
.search(/"utp-enabled":/) == 0) {
171 ferror
.set(s
, 'Cannot set "utp-enabled" option here. You can set it in Tomato GUI', quiet
);
174 if (s
.value
.search(/"ratio-limit-enabled":/) == 0) {
175 ferror
.set(s
, 'Cannot set "ratio-limit-enabled" option here. You can set it in Tomato GUI', quiet
);
178 if (s
.value
.search(/"ratio-limit":/) == 0) {
179 ferror
.set(s
, 'Cannot set "ratio-limit" option here. You can set it in Tomato GUI', quiet
);
182 if (s
.value
.search(/"rpc-authentication-required":/) == 0) {
183 ferror
.set(s
, 'Cannot set "rpc-authentication-required" option here. You can set it in Tomato GUI', quiet
);
186 if (s
.value
.search(/"blocklist-enabled":/) == 0) {
187 ferror
.set(s
, 'Cannot set "blocklist-enabled" option here. You can set it in Tomato GUI', quiet
);
190 if (s
.value
.search(/"blocklist-url":/) == 0) {
191 ferror
.set(s
, 'Cannot set "blocklist-url" option here. You can set it in Tomato GUI', quiet
);
194 if (s
.value
.search(/"download-queue-enabled":/) == 0) {
195 ferror
.set(s
, 'Cannot set "download-queue-enabled" option here. You can set it in Tomato GUI', quiet
);
198 if (s
.value
.search(/"download-queue-size":/) == 0) {
199 ferror
.set(s
, 'Cannot set "download-queue-size" option here. You can set it in Tomato GUI', quiet
);
202 if (s
.value
.search(/"seed-queue-enabled":/) == 0) {
203 ferror
.set(s
, 'Cannot set "seed-queue-enabled" option here. You can set it in Tomato GUI', quiet
);
206 if (s
.value
.search(/"seed-queue-size":/) == 0) {
207 ferror
.set(s
, 'Cannot set "seed-queue-size" option here. You can set it in Tomato GUI', quiet
);
210 if (s
.value
.search(/"idle-seeding-limit-enabled":/) == 0) {
211 ferror
.set(s
, 'Cannot set "idle-seeding-limit-enabled" option here. You can set it in Tomato GUI', quiet
);
214 if (s
.value
.search(/"idle-seeding-limit":/) == 0) {
215 ferror
.set(s
, 'Cannot set "idle-seeding-limit" option here. You can set it in Tomato GUI', quiet
);
218 if (s
.value
.search(/"message-level":/) == 0) {
219 ferror
.set(s
, 'Cannot set "message-level" option here. You can set it in Tomato GUI', quiet
);
227 if (verifyFields(null, 0)==0) return;
229 fom
.bt_enable
.value
= E('_f_bt_enable').checked
? 1 : 0;
230 fom
.bt_incomplete
.value
= E('_f_bt_incomplete').checked
? 1 : 0;
231 fom
.bt_check
.value
= E('_f_bt_check').checked
? 1 : 0;
232 fom
.bt_rpc_enable
.value
= E('_f_bt_rpc_enable').checked
? 1 : 0;
233 fom
.bt_auth
.value
= E('_f_bt_auth').checked
? 1 : 0;
234 fom
.bt_rpc_wan
.value
= E('_f_bt_rpc_wan').checked
? 1 : 0;
235 fom
.bt_dl_enable
.value
= E('_f_bt_dl_enable').checked
? 1 : 0;
236 fom
.bt_ul_enable
.value
= E('_f_bt_ul_enable').checked
? 1 : 0;
237 fom
.bt_ratio_enable
.value
= E('_f_bt_ratio_enable').checked
? 1 : 0;
238 fom
.bt_ratio_idle_enable
.value
= E('_f_bt_ratio_idle_enable').checked
? 1 : 0;
239 fom
.bt_dht
.value
= E('_f_bt_dht').checked
? 1 : 0;
240 fom
.bt_pex
.value
= E('_f_bt_pex').checked
? 1 : 0;
241 fom
.bt_lpd
.value
= E('_f_bt_lpd').checked
? 1 : 0;
242 fom
.bt_utp
.value
= E('_f_bt_utp').checked
? 1 : 0;
243 fom
.bt_blocklist
.value
= E('_f_bt_blocklist').checked
? 1 : 0;
244 fom
.bt_log
.value
= E('_f_bt_log').checked
? 1 : 0;
245 fom
.bt_dl_queue_enable
.value
= E('_f_bt_dl_queue_enable').checked
? 1 : 0;
246 fom
.bt_ul_queue_enable
.value
= E('_f_bt_ul_queue_enable').checked
? 1 : 0;
248 if (fom
.bt_enable
.value
== 0) {
249 fom
._service
.value
= 'bittorrent-stop';
252 fom
._service
.value
= 'bittorrent-restart';
254 form
.submit('_fom', 1);
263 <body onLoad=
"init()">
264 <table id='container' cellspacing=
0>
265 <tr><td colspan=
2 id='header'
>
266 <div class='title'
>Tomato
</div>
267 <div class='version'
>Version <%
version(); %></div>
269 <tr id='body'
><td id='navi'
><script type='text/javascript'
>navi()</script></td>
271 <div id='ident'
><%
ident(); %></div>
272 <div class='section-title'
>Basic Settings
</div>
273 <div class='section' id='config-section'
>
274 <form id='_fom' method='post' action='tomato.cgi'
>
275 <input type='hidden' name='_nextpage' value='nas-bittorrent.asp'
>
276 <input type='hidden' name='_service' value='bittorrent-restart'
>
277 <input type='hidden' name='bt_enable'
>
278 <input type='hidden' name='bt_incomplete'
>
279 <input type='hidden' name='bt_check'
>
280 <input type='hidden' name='bt_rpc_enable'
>
281 <input type='hidden' name='bt_auth'
>
282 <input type='hidden' name='bt_rpc_wan'
>
283 <input type='hidden' name='bt_dl_enable'
>
284 <input type='hidden' name='bt_ul_enable'
>
285 <input type='hidden' name='bt_blocklist'
>
286 <input type='hidden' name='bt_log'
>
287 <input type='hidden' name='bt_ratio_enable'
>
288 <input type='hidden' name='bt_ratio_idle_enable'
>
289 <input type='hidden' name='bt_dht'
>
290 <input type='hidden' name='bt_pex'
>
291 <input type='hidden' name='bt_lpd'
>
292 <input type='hidden' name='bt_utp'
>
293 <input type='hidden' name='bt_dl_queue_enable'
>
294 <input type='hidden' name='bt_ul_queue_enable'
>
296 <script type='text/javascript'
>
297 createFieldTable('', [
298 { title
: 'Enable torrent client', name
: 'f_bt_enable', type
: 'checkbox', value
: nvram
.bt_enable
== '1', suffix
: ' <small>*</small>' },
299 { title
: 'Transmission binary path', multi
: [
300 { name
: 'bt_binary', type
: 'select', options
: [
302 ['internal','Internal (/usr/bin)'],
304 ['optware','Optware (/opt/bin)'],
305 ['custom','Custom'] ], value
: nvram
.bt_binary
, suffix
: ' <small>*</small> ' },
306 { name
: 'bt_binary_custom', type
: 'text', maxlen
: 40, size
: 40, value
: nvram
.bt_binary_custom
}
308 { title
: 'Keep alive', name
: 'f_bt_check', type
: 'checkbox', value
: nvram
.bt_check
== '1', suffix
: ' <small>*</small>' },
309 { title
: 'Check alive every', indent
: 2, name
: 'bt_check_time', type
: 'text', maxlen
: 5, size
: 7, value
: nvram
.bt_check_time
, suffix
: ' <small>minutes (range: 1 - 55; default: 15)</small>' },
310 { title
: 'Delay at startup', name
: 'bt_sleep', type
: 'text', maxlen
: 5, size
: 7, value
: nvram
.bt_sleep
, suffix
: ' <small>seconds (range: 1 - 60; default: 10)</small>' },
311 { title
: 'Listening port', name
: 'bt_port', type
: 'text', maxlen
: 5, size
: 7, value
: nvram
.bt_port
, suffix
: ' <small>*</small>' },
312 { title
: 'Download directory', name
: 'bt_dir', type
: 'text', maxlen
: 40, size
: 40, value
: nvram
.bt_dir
},
313 { title
: 'Use .incomplete/', indent
: 2, name
: 'f_bt_incomplete', type
: 'checkbox', value
: nvram
.bt_incomplete
== '1' }
317 <li><b>Enable torrent client
</b> - Caution! - If your router only has
32MB of RAM, you'll have to use swap.
318 <li><b>Transmission binary path
</b> Path to the directory containing transmission-daemon etc.
319 <li><b>Keep alive
</b> - If enabled, transmission-daemon will be checked at the specified interval and will re-launch after a crash.
320 <li><b>Listening port
</b> - Port used for torrent client. Make sure this port is not in use.
323 <div class='section-title'
>Remote Access
<script>W(btgui_link
);</script></div>
324 <div class='section'
>
325 <script type='text/javascript'
>
326 createFieldTable('', [
327 { title
: 'Enable GUI', name
: 'f_bt_rpc_enable', type
: 'checkbox', value
: nvram
.bt_rpc_enable
== '1' },
328 { title
: 'Listening GUI port', indent
: 2, name
: 'bt_port_gui', type
: 'text', maxlen
: 32, size
: 5, value
: nvram
.bt_port_gui
, suffix
: ' <small>*</small>' },
329 { title
: 'Authentication required', name
: 'f_bt_auth', type
: 'checkbox', value
: nvram
.bt_auth
== '1', suffix
: ' <small>*</small>' },
330 { title
: 'Username', indent
: 2, name
: 'bt_login', type
: 'text', maxlen
: 32, size
: 15, value
: nvram
.bt_login
},
331 { title
: 'Password', indent
: 2, name
: 'bt_password', type
: 'password', maxlen
: 32, size
: 15, value
: nvram
.bt_password
},
332 { title
: 'Allow remote access', name
: 'f_bt_rpc_wan', type
: 'checkbox', value
: nvram
.bt_rpc_wan
== '1', suffix
: ' <small>*</small>' }
336 <li><b>Listening GUI port
</b> - Port used for Transmission GUI. Make sure this port is not in use.
337 <li><b>Authentication required
</b> - Authentication is
<b><i>highly recomended
</i></b>. GUI will prompt for user/pass.
338 <li><b>Allow remote access
</b> - This option will open the Transmission GUI port from the WAN side and allow the GUI to be accessed from the internet.
341 <div class='section-title'
>Limits
</div>
342 <div class='section'
>
343 <script type='text/javascript'
>
344 createFieldTable('', [
345 { title
: 'Download limit', multi
: [
346 { name
: 'f_bt_dl_enable', type
: 'checkbox', value
: nvram
.bt_dl_enable
== '1', suffix
: ' ' },
347 { name
: 'bt_dl', type
: 'text', maxlen
: 10, size
: 7, value
: nvram
.bt_dl
, suffix
: ' <small>kB/s</small>' } ] },
348 { title
: 'Upload limit', multi
: [
349 { name
: 'f_bt_ul_enable', type
: 'checkbox', value
: nvram
.bt_ul_enable
== '1', suffix
: ' ' },
350 { name
: 'bt_ul', type
: 'text', maxlen
: 10, size
: 7, value
: nvram
.bt_ul
, suffix
: ' <small>kB/s</small>' } ] },
351 { title
: 'Stop seeding at ratio', multi
: [
352 { name
: 'f_bt_ratio_enable', type
: 'checkbox', value
: nvram
.bt_ratio_enable
== '1', suffix
: ' ' },
353 { name
: 'bt_ratio', type
: 'select', options
: [['0.0000','0.0'],['0.1000','0.1'],['0.2000','0.2'],['0.5000','0.5'],['1.0000','1.0'],['1.5000','1.5'],['2.0000','2.0'],['2.5000','2.5'],['3.0000','3.0']], value
: nvram
.bt_ratio
} ] },
354 { title
: 'Stop seeding if idle for', multi
: [
355 { name
: 'f_bt_ratio_idle_enable', type
: 'checkbox', value
: nvram
.bt_ratio_idle_enable
== '1', suffix
: ' ' },
356 { name
: 'bt_ratio_idle', type
: 'text', maxlen
: 10, size
: 7, value
: nvram
.bt_ratio_idle
, suffix
: ' <small>minutes (range: 1 - 55; default: 30)</small>' } ] },
357 { title
: 'Global peer limit', name
: 'bt_peer_limit_global', type
: 'text', maxlen
: 10, size
: 7, value
: nvram
.bt_peer_limit_global
, suffix
: ' <small>(range: 10 - 1000; default: 150)</small>' },
358 { title
: 'Peer limit per torrent', name
: 'bt_peer_limit_per_torrent', type
: 'text', maxlen
: 10, size
: 7, value
: nvram
.bt_peer_limit_per_torrent
, suffix
: ' <small>(range: 1 - 200; default: 30)</small>' },
359 { title
: 'Upload slots per torrent', name
: 'bt_ul_slot_per_torrent', type
: 'text', maxlen
: 10, size
: 7, value
: nvram
.bt_ul_slot_per_torrent
, suffix
: ' <small>(range: 1 - 50; default: 10)</small>' }
363 <div class='section-title'
>Queue torrents
</div>
364 <div class='section'
>
365 <script type='text/javascript'
>
366 createFieldTable('', [
367 { title
: 'Downloads queuing', multi
: [
368 { name
: 'f_bt_dl_queue_enable', type
: 'checkbox', value
: nvram
.bt_dl_queue_enable
== '1', suffix
: ' ' },
369 { name
: 'bt_dl_queue_size', type
: 'text', maxlen
: 5, size
: 7, value
: nvram
.bt_dl_queue_size
, suffix
: ' <small>(range: 1 - 30; default: 5) *</small>' }
371 { title
: 'Seeds queuing', multi
: [
372 { name
: 'f_bt_ul_queue_enable', type
: 'checkbox', value
: nvram
.bt_ul_queue_enable
== '1', suffix
: ' ' },
373 { name
: 'bt_ul_queue_size', type
: 'text', maxlen
: 5, size
: 7, value
: nvram
.bt_ul_queue_size
, suffix
: ' <small>(range: 1 - 30; default: 5) *</small>' }
378 <li><b>Downloads queuing
</b> - If enabled, this option will limit how many torrents can be downloaded at once.
379 <li><b>Seeds queuing
</b> - If enabled, this option will limit how many torrents can be uploaded/seeded at once.
382 <div class='section-title'
>Advanced Settings
</div>
383 <div class='section'
>
384 <script type='text/javascript'
>
385 createFieldTable('', [
386 { title
: 'Find more peers using', multi
: [
387 { suffix
: ' DHT ', name
: 'f_bt_dht', type
: 'checkbox', value
: nvram
.bt_dht
== '1' },
388 { suffix
: ' PEX ', name
: 'f_bt_pex', type
: 'checkbox', value
: nvram
.bt_pex
== '1' },
389 { suffix
: ' LPD ', name
: 'f_bt_lpd', type
: 'checkbox', value
: nvram
.bt_lpd
== '1' },
390 { suffix
: ' uTP ', name
: 'f_bt_utp', type
: 'checkbox', value
: nvram
.bt_utp
== '1' }
392 { title
: 'Message level', name
: 'bt_message', type
: 'select', options
: [ ['0','None'], ['1','Error'], ['2','Info'], ['3','Debug'] ], value
: nvram
.bt_message
, suffix
: ' ' },
393 { title
: 'Save settings location', multi
: [
394 { name
: 'bt_settings', type
: 'select', options
: [
395 ['down_dir','In the Download directory (Recommended)'],
400 ['/cifs1','CIFS 1'],['/cifs2','CIFS 2'],
402 ['/tmp','RAM (Temporary)'], ['custom','Custom'] ], value
: nvram
.bt_settings
, suffix
: ' ' },
403 { name
: 'bt_settings_custom', type
: 'text', maxlen
: 60, size
: 40, value
: nvram
.bt_settings_custom
}
405 { title
: 'Blocklist', multi
: [
406 { name
: 'f_bt_blocklist', type
: 'checkbox', value
: nvram
.bt_blocklist
== '1', suffix
: ' ' },
407 { name
: 'bt_blocklist_url', type
: 'text', maxlen
: 80, size
: 60, value
: nvram
.bt_blocklist_url
}
409 { title
: 'Custom Log File Path', multi
: [
410 { name
: 'f_bt_log', type
: 'checkbox', value
: nvram
.bt_log
== '1', suffix
: ' ' },
411 { name
: 'bt_log_path', type
: 'text', maxlen
: 80, size
: 60, value
: nvram
.bt_log_path
, suffix
: ' /transmission.log' }
414 { title
: '<a href="https://trac.transmissionbt.com/wiki/EditConfigFiles" target="_new">Transmission</a><br>Custom configuration', name
: 'bt_custom', type
: 'textarea', value
: nvram
.bt_custom
}
421 <tr><td id='footer' colspan=
2>
423 <span id='footer-msg'
></span>
424 <input type='button' value='Save' id='save-button' onclick='save()'
>
425 <input type='button' value='Cancel' id='cancel-button' onclick='javascript:reloadPage();'
>
430 <script type='text/javascript'
>verifyFields(null, 1);</script>