Эх сурвалжийг харах

Panel - Network: Add wirless config editor

DSR! 4 жил өмнө
parent
commit
b13f9044d8

+ 18 - 1
src/pineapple/modules/Networking/api/module.php

@@ -92,6 +92,10 @@ class Networking extends SystemModule
             case 'setFirewallConfig':
                 $this->setFirewallConfig();
                 break;
+
+            case 'saveWirelessConfig':
+                $this->saveWirelessConfig();
+                break;
         }
     }
 
@@ -121,7 +125,11 @@ class Networking extends SystemModule
     private function getAdvancedData()
     {
         exec("ifconfig -a", $ifconfig);
-        $this->response = array("hostname" => gethostname(), "ifconfig" => implode("\n", $ifconfig));
+        $this->response = array(
+            "hostname" => gethostname(),
+            "ifconfig" => implode("\n", $ifconfig),
+            "wireless" => file_get_contents('/etc/config/wireless')
+        );
     }
 
     private function setHostname()
@@ -252,4 +260,13 @@ class Networking extends SystemModule
 
         $this->response = array("success" => true);
     }
+
+    private function saveWirelessConfig()
+    {
+        if (isset($this->request->wireless)) {
+            file_put_contents('/etc/config/wireless', $this->request->wireless);
+            $this->execBackground('wifi');
+            $this->response = array("success" => true);
+        }
+    }
 }

+ 18 - 1
src/pineapple/modules/Networking/js/module.js

@@ -322,9 +322,11 @@ registerController('NetworkingMACAddressesController', ['$api', '$scope', '$time
 registerController('NetworkingAdvancedController', ['$api', '$scope', '$timeout', function($api, $scope, $timeout) {
     $scope.hostnameUpdated = false;
     $scope.wirelessReset = false;
+    $scope.wirelessUpdated = false;
     $scope.data = {
         hostname: "Pineapple",
-        ifconfig: ""
+        ifconfig: "",
+        wireless: ""
     };
 
     $scope.reloadData = (function() {
@@ -367,6 +369,21 @@ registerController('NetworkingAdvancedController', ['$api', '$scope', '$timeout'
         });
     });
 
+    $scope.saveWirelessConfig = (function() {
+        $api.request({
+            module: 'Networking',
+            action: 'saveWirelessConfig',
+            wireless: $scope.data['wireless']
+        }, function(response) {
+            if (response.success === true) {
+                $scope.wirelessUpdated = true;
+                $timeout(function(){
+                    $scope.wirelessUpdated = false;
+                }, 5000);
+            }
+        });
+    });
+
     $scope.reloadData();
 }]);
 

+ 20 - 11
src/pineapple/modules/Networking/module.html

@@ -288,8 +288,8 @@
 </div>
 
 <div class="row">
-    <div class="col-md-6" ng-controller="NetworkingMACAddressesController">
-        <div class="panel panel-default">
+    <div class="col-md-6">
+        <div class="panel panel-default" ng-controller="NetworkingMACAddressesController">
             <div class="panel-heading">
                 <h3 class="panel-title">MAC Addresses
                     <span class="dropdown">
@@ -331,12 +331,10 @@
                 </div>
             </div>
         </div>
-    </div>
-
-    <div class="col-md-6" ng-controller="NetworkingAdvancedController">
-        <div class="panel panel-default">
+        <div class="panel panel-default" ng-controller="NetworkingAdvancedController">
             <div class="panel-heading">
-                <h3 class="panel-title">Advanced
+                <h3 class="panel-title">
+                    Wireless config
                     <span class="dropdown">
                         <button class="btn btn-xs btn-default dropdown-toggle" type="button" id="NetworkingAdvancedDropdown" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                             <small><span class="caret"></span></small>
@@ -347,6 +345,21 @@
                     </span>
                 </h3>
             </div>
+            <div class="panel-body">
+                <p>
+                    <textarea class="form-control" rows="12" ng-model="data['wireless']"></textarea>
+                </p>
+                <p class="alert well-sm alert-success" ng-show="wirelessUpdated">Config saved successfully</p>
+                <button type="submit" class="btn btn-default" ng-click="saveWirelessConfig()">Save config</button>
+            </div>
+        </div>
+    </div>
+
+    <div class="col-md-6" ng-controller="NetworkingAdvancedController">
+        <div class="panel panel-default">
+            <div class="panel-heading">
+                <h3 class="panel-title">Advanced</h3>
+            </div>
             <div class="panel-body">
                 <div class="alert well-sm alert-success" ng-show="wirelessReset">The Wireless Configuration has been reset. The Network will now restart.</div>
                 <div class="alert well-sm alert-success" ng-show="hostnameUpdated">The hostname has been updated successfully.</div>
@@ -369,7 +382,3 @@
         </div>
     </div>
 </div>
-
-<div class="row">
-
-</div>