|
|
|
@ -20,7 +20,7 @@
|
|
|
|
|
<script type='text/javascript' src='vpn.js'></script>
|
|
|
|
|
<script type='text/javascript'>
|
|
|
|
|
|
|
|
|
|
// <% nvram("vpn_server_eas,vpn_server_dns,vpn_server1_poll,vpn_server1_if,vpn_server1_proto,vpn_server1_port,vpn_server1_firewall,vpn_server1_sn,vpn_server1_nm,vpn_server1_local,vpn_server1_remote,vpn_server1_dhcp,vpn_server1_r1,vpn_server1_r2,vpn_server1_crypt,vpn_server1_comp,vpn_server1_cipher,vpn_server1_reneg,vpn_server1_hmac,vpn_server1_plan,vpn_server1_ccd,vpn_server1_c2c,vpn_server1_ccd_excl,vpn_server1_ccd_val,vpn_server1_pdns,vpn_server1_rgw,vpn_server1_userpass,vpn_server1_nocert,vpn_server1_users_val,vpn_server1_custom,vpn_server1_static,vpn_server1_ca,vpn_server1_crt,vpn_server1_key,vpn_server1_dh,vpn_server2_poll,vpn_server2_if,vpn_server2_proto,vpn_server2_port,vpn_server2_firewall,vpn_server2_sn,vpn_server2_nm,vpn_server2_local,vpn_server2_remote,vpn_server2_dhcp,vpn_server2_r1,vpn_server2_r2,vpn_server2_crypt,vpn_server2_comp,vpn_server2_cipher,vpn_server2_reneg,vpn_server2_hmac,vpn_server2_plan,vpn_server2_ccd,vpn_server2_c2c,vpn_server2_ccd_excl,vpn_server2_ccd_val,vpn_server2_pdns,vpn_server2_rgw,vpn_server2_userpass,vpn_server2_nocert,vpn_server2_users_val,vpn_server2_custom,vpn_server2_static,vpn_server2_ca,vpn_server2_crt,vpn_server2_key,vpn_server2_dh"); %>
|
|
|
|
|
// <% nvram("vpn_server_eas,vpn_server_dns,vpn_server1_poll,vpn_server1_if,vpn_server1_proto,vpn_server1_port,vpn_server1_firewall,vpn_server1_sn,vpn_server1_nm,vpn_server1_local,vpn_server1_remote,vpn_server1_dhcp,vpn_server1_r1,vpn_server1_r2,vpn_server1_crypt,vpn_server1_comp,vpn_server1_cipher,vpn_server1_reneg,vpn_server1_hmac,vpn_server1_plan,vpn_server1_ccd,vpn_server1_c2c,vpn_server1_ccd_excl,vpn_server1_ccd_val,vpn_server1_pdns,vpn_server1_rgw,vpn_server1_userpass,vpn_server1_nocert,vpn_server1_users_val,vpn_server1_custom,vpn_server1_static,vpn_server1_ca,vpn_server1_crt,vpn_server1_key,vpn_server1_dh,vpn_server1_br,vpn_server2_poll,vpn_server2_if,vpn_server2_proto,vpn_server2_port,vpn_server2_firewall,vpn_server2_sn,vpn_server2_nm,vpn_server2_local,vpn_server2_remote,vpn_server2_dhcp,vpn_server2_r1,vpn_server2_r2,vpn_server2_crypt,vpn_server2_comp,vpn_server2_cipher,vpn_server2_reneg,vpn_server2_hmac,vpn_server2_plan,vpn_server2_ccd,vpn_server2_c2c,vpn_server2_ccd_excl,vpn_server2_ccd_val,vpn_server2_pdns,vpn_server2_rgw,vpn_server2_userpass,vpn_server2_nocert,vpn_server2_users_val,vpn_server2_custom,vpn_server2_static,vpn_server2_ca,vpn_server2_crt,vpn_server2_key,vpn_server2_dh,vpn_server2_br,lan_ifname,lan1_ifname,lan2_ifname,lan3_ifname"); %>
|
|
|
|
|
|
|
|
|
|
function CCDGrid() { return this; }
|
|
|
|
|
CCDGrid.prototype = new TomatoGrid;
|
|
|
|
@ -181,6 +181,7 @@ function verifyFields(focused, quiet)
|
|
|
|
|
elem.display(E(t+'_custom_crypto_text'), auth.value == "custom");
|
|
|
|
|
elem.display(PR('_vpn_'+t+'_sn'), PR('_f_vpn_'+t+'_plan'), auth.value == "tls" && iface.value == "tun");
|
|
|
|
|
elem.display(PR('_f_vpn_'+t+'_dhcp'), auth.value == "tls" && iface.value == "tap");
|
|
|
|
|
elem.display(PR('_vpn_'+t+'_br'), iface.value == "tap");
|
|
|
|
|
elem.display(E(t+'_range'), !dhcp.checked);
|
|
|
|
|
elem.display(PR('_vpn_'+t+'_local'), auth.value == "secret" && iface.value == "tun");
|
|
|
|
|
elem.display(PR('_f_vpn_'+t+'_ccd'), auth.value == "tls");
|
|
|
|
@ -204,6 +205,26 @@ function verifyFields(focused, quiet)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var bridge1 = E('_vpn_server1_br');
|
|
|
|
|
if(nvram.lan_ifname.length < 1)
|
|
|
|
|
bridge1.options[0].disabled=true;
|
|
|
|
|
if(nvram.lan1_ifname.length < 1)
|
|
|
|
|
bridge1.options[1].disabled=true;
|
|
|
|
|
if(nvram.lan2_ifname.length < 1)
|
|
|
|
|
bridge1.options[2].disabled=true;
|
|
|
|
|
if(nvram.lan3_ifname.length < 1)
|
|
|
|
|
bridge1.options[3].disabled=true;
|
|
|
|
|
|
|
|
|
|
var bridge2 = E('_vpn_server2_br');
|
|
|
|
|
if(nvram.lan_ifname.length < 1)
|
|
|
|
|
bridge2.options[0].disabled=true;
|
|
|
|
|
if(nvram.lan1_ifname.length < 1)
|
|
|
|
|
bridge2.options[1].disabled=true;
|
|
|
|
|
if(nvram.lan2_ifname.length < 1)
|
|
|
|
|
bridge2.options[2].disabled=true;
|
|
|
|
|
if(nvram.lan3_ifname.length < 1)
|
|
|
|
|
bridge2.options[3].disabled=true;
|
|
|
|
|
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -511,6 +532,12 @@ for (i = 0; i < tabs.length; ++i)
|
|
|
|
|
createFieldTable('', [
|
|
|
|
|
{ title: 'Start with WAN', name: 'f_vpn_'+t+'_eas', type: 'checkbox', value: nvram.vpn_server_eas.indexOf(''+(i+1)) >= 0 },
|
|
|
|
|
{ title: 'Interface Type', name: 'vpn_'+t+'_if', type: 'select', options: [ ['tap','TAP'], ['tun','TUN'] ], value: eval( 'nvram.vpn_'+t+'_if' ) },
|
|
|
|
|
{ title: 'Bridge TAP with', indent: 2, name: 'vpn_'+t+'_br', type: 'select', options: [
|
|
|
|
|
['br0','LAN (br0)*'],
|
|
|
|
|
['br1','LAN1 (br1)'],
|
|
|
|
|
['br2','LAN2 (br2)'],
|
|
|
|
|
['br3','LAN3 (br3)']
|
|
|
|
|
], value: eval ( 'nvram.vpn_'+t+'_br' ), suffix: ' <small>* default</small> ' },
|
|
|
|
|
{ title: 'Protocol', name: 'vpn_'+t+'_proto', type: 'select', options: [ ['udp','UDP'], ['tcp-server','TCP'] ], value: eval( 'nvram.vpn_'+t+'_proto' ) },
|
|
|
|
|
{ title: 'Port', name: 'vpn_'+t+'_port', type: 'text', value: eval( 'nvram.vpn_'+t+'_port' ) },
|
|
|
|
|
{ title: 'Firewall', name: 'vpn_'+t+'_firewall', type: 'select', options: [ ['auto', 'Automatic'], ['external', 'External Only'], ['custom', 'Custom'] ], value: eval( 'nvram.vpn_'+t+'_firewall' ) },
|
|
|
|
|