Bittorrent: Add "Custom Log File Path" to GUI
[tomato.git] / release / src / router / www / nas-bittorrent.asp
blob6bced37abdd2f18caa01fba525d1b06aa3642950
1 <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0//EN'>
2 <!--
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.
8 -->
9 <html>
10 <head>
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'>
18 textarea {
19 width: 98%;
20 height: 15em;
22 </style>
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 = '&nbsp;&nbsp;<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)
30 var ok = 1;
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);
96 ok = 0; }
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);
100 ok = 0; }
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);
104 ok = 0; }
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);
108 ok = 0; }
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);
112 ok = 0; }
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);
116 ok = 0; }
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);
120 ok = 0; }
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);
124 ok = 0; }
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);
128 ok = 0; }
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);
132 ok = 0; }
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);
136 ok = 0; }
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);
140 ok = 0; }
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);
144 ok = 0; }
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);
148 ok = 0; }
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);
152 ok = 0; }
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);
156 ok = 0; }
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);
160 ok = 0; }
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);
164 ok = 0; }
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);
168 ok = 0; }
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);
172 ok = 0; }
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);
176 ok = 0; }
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);
180 ok = 0; }
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);
184 ok = 0; }
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);
188 ok = 0; }
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);
192 ok = 0; }
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);
196 ok = 0; }
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);
200 ok = 0; }
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);
204 ok = 0; }
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);
208 ok = 0; }
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);
212 ok = 0; }
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);
216 ok = 0; }
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);
220 ok = 0; }
222 return ok;
225 function save()
227 if (verifyFields(null, 0)==0) return;
228 var fom = E('_fom');
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';
251 else {
252 fom._service.value = 'bittorrent-restart';
254 form.submit('_fom', 1);
257 function init()
260 </script>
261 </head>
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>
268 </td></tr>
269 <tr id='body'><td id='navi'><script type='text/javascript'>navi()</script></td>
270 <td id='content'>
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: [
301 /* BBT-BEGIN */
302 ['internal','Internal (/usr/bin)'],
303 /* BBT-END */
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 }
307 ] },
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' }
315 </script>
316 <ul>
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.
321 </ul>
322 </div>
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>' }
334 </script>
335 <ul>
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.
339 </ul>
340 </div>
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>' }
361 </script>
362 </div>
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>' }
370 ] },
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>' }
376 </script>
377 <ul>
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.
380 </ul>
381 </div>
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: '&nbsp; DHT &nbsp;&nbsp;&nbsp;', name: 'f_bt_dht', type: 'checkbox', value: nvram.bt_dht == '1' },
388 { suffix: '&nbsp; PEX &nbsp;&nbsp;&nbsp;', name: 'f_bt_pex', type: 'checkbox', value: nvram.bt_pex == '1' },
389 { suffix: '&nbsp; LPD &nbsp;&nbsp;&nbsp;', name: 'f_bt_lpd', type: 'checkbox', value: nvram.bt_lpd == '1' },
390 { suffix: '&nbsp; uTP &nbsp;&nbsp;&nbsp;', name: 'f_bt_utp', type: 'checkbox', value: nvram.bt_utp == '1' }
391 ] },
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)'],
396 /* JFFS2-BEGIN */
397 ['/jffs','JFFS2'],
398 /* JFFS2-END */
399 /* CIFS-BEGIN */
400 ['/cifs1','CIFS 1'],['/cifs2','CIFS 2'],
401 /* CIFS-END */
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 }
404 ] },
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 }
408 ] },
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' }
412 ] },
413 null,
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 }
416 </script>
417 </div>
418 </form>
419 </div>
420 </td></tr>
421 <tr><td id='footer' colspan=2>
422 <form>
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();'>
426 </form>
427 </div>
428 </td></tr>
429 </table>
430 <script type='text/javascript'>verifyFields(null, 1);</script>
431 </body>
432 </html>