Browse Source

Add Wifi N option

Julien VAUBOURG 10 years ago
parent
commit
71b630005b

+ 2 - 0
conf/hostapd.conf.tpl

@@ -1,6 +1,8 @@
 interface=<TPL:WIFI_DEVICE>
 ssid=<TPL:WIFI_SSID>
 hw_mode=g
+<TPL:N_COMMENT>ieee80211n=1
+<TPL:N_COMMENT>wmm_enabled=1
 channel=<TPL:WIFI_CHANNEL>
 macaddr_acl=0
 auth_algs=1

+ 7 - 0
conf/init_ynh-hotspot

@@ -89,6 +89,12 @@ start_hostapd() {
   sed "s|<TPL:WIFI_PASSPHRASE>|${ynh_wifi_passphrase}|g" -i /etc/hostapd/hostapd.conf
   sed "s|<TPL:WIFI_CHANNEL>|${ynh_wifi_channel}|g" -i /etc/hostapd/hostapd.conf
 
+  if [ "${ynh_wifi_n}" -eq 1 ]; then
+    sed "s|<TPL:N_COMMENT>||g" -i /etc/hostapd/hostapd.conf
+  else
+    sed "s|<TPL:N_COMMENT>|#|g" -i /etc/hostapd/hostapd.conf
+  fi
+
   service hostapd start
 }
 
@@ -186,6 +192,7 @@ ynh_wifi_device=$(moulinette_get wifi_device)
 ynh_wifi_ssid=$(moulinette_get wifi_ssid)
 ynh_wifi_passphrase=$(moulinette_get wifi_passphrase)
 ynh_wifi_channel=$(moulinette_get wifi_channel)
+ynh_wifi_n=$(moulinette_get wifi_n)
 ynh_ip6_addr=$(moulinette_get ip6_addr)
 ynh_ip6_net=$(moulinette_get ip6_net)
 ynh_ip6_dns0=$(moulinette_get ip6_dns0)

+ 1 - 0
scripts/install

@@ -40,6 +40,7 @@ sudo yunohost app setting hotspot wifi_ssid -v "${wifi_ssid}"
 sudo yunohost app setting hotspot wifi_passphrase -v "${wifi_passphrase}"
 sudo yunohost app setting hotspot wifi_device -v "${wifi_device}"
 sudo yunohost app setting hotspot wifi_channel -v 6
+sudo yunohost app setting hotspot wifi_n -v 0
 sudo yunohost app setting hotspot ip6_addr -v "${ip6_addr}"
 sudo yunohost app setting hotspot ip6_net -v "${ip6_net}"
 sudo yunohost app setting hotspot ip6_dns0 -v "${ip6_dns0}"

+ 2 - 2
sources/controller.php

@@ -16,8 +16,6 @@ function restart_service() {
 }
 
 dispatch('/', function() {
-  set('title', T_('Wifi Hotspot'));
-
   exec('ip link', $devs);
   $wifi_device = moulinette_get('wifi_device');
   $devs_list = "";
@@ -37,6 +35,7 @@ dispatch('/', function() {
   set('wifi_ssid', moulinette_get('wifi_ssid'));
   set('wifi_passphrase', moulinette_get('wifi_passphrase'));
   set('wifi_channel', moulinette_get('wifi_channel'));
+  set('wifi_n', moulinette_get('wifi_n'));
   set('wifi_device', $wifi_device);
   set('wifi_device_list', $devs_list);
   set('ip6_net', moulinette_get('ip6_net'));
@@ -53,6 +52,7 @@ dispatch_put('/settings', function() {
   moulinette_set('wifi_ssid', $_POST['wifi_ssid']);
   moulinette_set('wifi_passphrase', $_POST['wifi_passphrase']);
   moulinette_set('wifi_channel', $_POST['wifi_channel']);
+  moulinette_set('wifi_n', isset($_POST['wifi_n']) ? 1 : 0);
   moulinette_set('wifi_device', $_POST['wifi_device']);
   moulinette_set('ip6_net', $_POST['ip6_net']);
   moulinette_set('ip6_dns0', $_POST['ip6_dns0']);

+ 28 - 0
sources/public/css/bootstrap-toggle.min.css

@@ -0,0 +1,28 @@
+/*! ========================================================================
+ * Bootstrap Toggle: bootstrap-toggle.css v2.0.0
+ * http://www.bootstraptoggle.com
+ * ========================================================================
+ * Copyright 2014 Min Hur, The New York Times Company
+ * Licensed under MIT
+ * ======================================================================== */
+.checkbox label .toggle,.checkbox-inline .toggle{margin-left:-20px;margin-right:5px}
+.toggle{position:relative;overflow:hidden}
+.toggle input[type=checkbox]{display:none}
+.toggle-group{position:absolute;width:200%;top:0;bottom:0;left:0;transition:left .35s;-webkit-transition:left .35s;-moz-user-select:none;-webkit-user-select:none}
+.toggle.off .toggle-group{left:-100%}
+.toggle-on{position:absolute;top:0;bottom:0;left:0;right:50%;margin:0;border:0;border-radius:0}
+.toggle-off{position:absolute;top:0;bottom:0;left:50%;right:0;margin:0;border:0;border-radius:0}
+.toggle-handle{position:relative;margin:0 auto;padding-top:0;padding-bottom:0;height:100%;width:0;border-width:0 1px}
+.toggle.btn{min-width:59px;min-height:34px}
+.toggle-on.btn{padding-right:24px}
+.toggle-off.btn{padding-left:24px}
+.toggle.btn-lg{min-width:79px;min-height:45px}
+.toggle-on.btn-lg{padding-right:31px}
+.toggle-off.btn-lg{padding-left:31px}
+.toggle-handle.btn-lg{width:40px}
+.toggle.btn-sm{min-width:50px;min-height:30px}
+.toggle-on.btn-sm{padding-right:20px}
+.toggle-off.btn-sm{padding-left:20px}
+.toggle.btn-xs{min-width:35px;min-height:22px}
+.toggle-on.btn-xs{padding-right:12px}
+.toggle-off.btn-xs{padding-left:12px}

File diff suppressed because it is too large
+ 9 - 0
sources/public/js/bootstrap-toggle.min.js


+ 2 - 0
sources/public/js/custom.js

@@ -26,4 +26,6 @@ $(document).ready(function() {
 
     input.attr('value', $(this).text());
   });
+
+  $('.switch').bootstrapToggle();
 });

+ 3 - 1
sources/views/layout.html.php

@@ -6,13 +6,15 @@
 <head>
   <meta charset="utf-8">
   <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-  <title>VPN Client <? echo (isset($title)) ? "| ".$title : "" ?></title>
+  <title>Wifi Hotspot <? echo (isset($title)) ? "| ".$title : "" ?></title>
   <meta name="viewport" content="width=device-width">
   <link media="all" type="text/css" href="<?= PUBLIC_DIR ?>/bootstrap/css/bootstrap.min.css" rel="stylesheet">
   <link media="all" type="text/css" href="<?= PUBLIC_DIR ?>/bootstrap/css/bootstrap-theme.min.css" rel="stylesheet">
+  <link media="all" type="text/css" href="<?= PUBLIC_DIR ?>/css/bootstrap-toggle.min.css" rel="stylesheet">
   <link media="all" type="text/css" href="<?= PUBLIC_DIR ?>/css/style.css" rel="stylesheet">
   <script src="<?= PUBLIC_DIR ?>/jquery/jquery-2.1.1.min.js"></script>
   <script src="<?= PUBLIC_DIR ?>/bootstrap/js/bootstrap.min.js"></script>
+  <script src="<?= PUBLIC_DIR ?>/js/bootstrap-toggle.min.js"></script>
   <script src="<?= PUBLIC_DIR ?>/js/custom.js"></script>
 </head>
 <body>

+ 9 - 0
sources/views/settings.html.php

@@ -49,6 +49,15 @@
               </div>
             </div>
           </div>
+
+          <div class="form-group">
+            <label for="wifi_passphrase" class="col-sm-3 control-label"><?= T_('Wifi N') ?></label>
+            <div class="col-sm-9 input-group-btn" data-toggle="tooltip" data-title="<?= T_('Only if your antenna is 802.11n compliant') ?>">
+              <div class="input-group">
+                <input type="checkbox" class="form-control switch" name="wifi_n" id="wifi_n" value="1" <?= $wifi_n == 1 ? 'checked="checked"' : '' ?> />
+              </div>
+            </div>
+          </div>
   
           <div class="form-group">
             <label for="wifi_device" class="col-sm-3 control-label"><?= T_('Device') ?></label>