diff --git a/dist/css/custom.css b/dist/css/custom.css
index c4994797..17126ae5 100644
--- a/dist/css/custom.css
+++ b/dist/css/custom.css
@@ -48,3 +48,8 @@
height:100%;
min-height:500px;
}
+
+.logoutput {
+ width:100%;
+ height:300px;
+}
diff --git a/dist/css/hackernews.css b/dist/css/hackernews.css
index d6bb7b4d..19836947 100644
--- a/dist/css/hackernews.css
+++ b/dist/css/hackernews.css
@@ -76,3 +76,8 @@ h4 {
width: 140px;
float: left;
}
+
+.logoutput {
+ width: 100%;
+ height: 300px;
+}
diff --git a/dist/css/terminal.css b/dist/css/terminal.css
index d7896dd8..f3d04fbf 100644
--- a/dist/css/terminal.css
+++ b/dist/css/terminal.css
@@ -196,4 +196,9 @@ a:focus, a:hover {
float: left;
}
-
+.logoutput {
+ width: 100%;
+ height: 300px;
+ background-color: #000;
+ border-color: #33ff00;
+}
diff --git a/includes/functions.php b/includes/functions.php
index f391e461..ebcb8791 100755
--- a/includes/functions.php
+++ b/includes/functions.php
@@ -1,4 +1,52 @@
$val) {
+ if(is_array($val)) {
+ $res[] = "[$key]";
+ foreach($val as $skey => $sval) $res[] = "$skey = ".(is_numeric($sval) ? $sval : '"'.$sval.'"');
+ }
+ else $res[] = "$key = ".(is_numeric($val) ? $val : '"'.$val.'"');
+ }
+ if(safefilerewrite($file, implode("\r\n", $res))) {
+ return true;
+ } else {
+ return false;
+ }
+}
+
+function safefilerewrite($fileName, $dataToSave) {
+ if ($fp = fopen($fileName, 'w')) {
+ $startTime = microtime(TRUE);
+ do {
+ $canWrite = flock($fp, LOCK_EX);
+ // If lock not obtained sleep for 0 - 100 milliseconds, to avoid collision and CPU load
+ if(!$canWrite) usleep(round(rand(0, 100)*1000));
+ } while ((!$canWrite)and((microtime(TRUE)-$startTime) < 5));
+
+ //file was locked so now we can store information
+ if ($canWrite) {
+ fwrite($fp, $dataToSave);
+ flock($fp, LOCK_UN);
+ }
+ fclose($fp);
+ return true;
+ } else {
+ return false;
+ }
+}
+
+
/**
*
diff --git a/includes/hostapd.php b/includes/hostapd.php
index ece1a83d..1465d333 100755
--- a/includes/hostapd.php
+++ b/includes/hostapd.php
@@ -10,6 +10,8 @@ function DisplayHostAPDConfig(){
$status = new StatusMessages();
+ $arrHostapdConf = parse_ini_file('/etc/raspap/hostapd.ini');
+
$arrConfig = array();
$arrChannel = array('a','b','g');
$arrSecurity = array( 1 => 'WPA', 2 => 'WPA2',3=> 'WPA+WPA2');
@@ -74,6 +76,7 @@ function DisplayHostAPDConfig(){
Basic
Security
Advanced
+ Logfile Output
@@ -130,8 +133,33 @@ function DisplayHostAPDConfig(){
+
+
Logfile output
+
+
+ ';
+ } else {
+ echo "
Logfile output not enabled";
+ }
+ ?>
+
+
+
Advanced settings
+
+
+
+
+
+
+
@@ -431,6 +459,26 @@ function SaveHostAPDConfig($wpa_array, $enc_types, $modes, $interfaces, $status)
$good_input = true;
+ // Check for Logging Checkbox
+ $logEnable = 0;
+ if($arrHostapdConf['LogEnable'] == 0) {
+ if(isset($_POST['logEnable'])) {
+ // Need code to enable logfile logging here
+ $logEnable = 1;
+ exec('sudo /etc/raspap/hostapd/enablelog.sh');
+ } else {
+ exec('sudo /etc/raspap/hostapd/disablelog.sh');
+ }
+ } else {
+ if(isset($_POST['logEnable'])) {
+ $logEnable = 1;
+ exec('sudo /etc/raspap/hostapd/enablelog.sh');
+ } else {
+ exec('sudo /etc/raspap/hostapd/disablelog.sh');
+ }
+ }
+ write_php_ini(["LogEnable" => $logEnable],'/etc/raspap/hostapd.ini');
+
// Verify input
if (strlen($_POST['ssid']) == 0 || strlen($_POST['ssid']) > 32) {
// Not sure of all the restrictions of SSID
diff --git a/installers/common.sh b/installers/common.sh
index 9ac4046f..45670e66 100755
--- a/installers/common.sh
+++ b/installers/common.sh
@@ -97,6 +97,12 @@ function create_raspap_directories() {
sudo chown -R $raspap_user:$raspap_user "$raspap_dir" || install_error "Unable to change file ownership for '$raspap_dir'"
}
+# Generate logging enable/disable files for hostapd
+function create_logging_scripts() {
+ sudo mkdir /etc/raspap/hostapd
+ sudo mv /var/www/html/installers/*log.sh /etc/rasp/hostapd
+}
+
# Fetches latest files from github to webroot
function download_latest_files() {
if [ -d "$webroot_dir" ]; then
@@ -214,6 +220,8 @@ function patch_system_files() {
'/sbin/ip link set wlan0 down'
'/sbin/ip link set wlan0 up'
'/sbin/ip -s a f label wlan0'
+ '/etc/raspap/hostapd/enablelog.sh'
+ '/etc/raspap/hostapd/disablelog.sh'
)
# Check if sudoers needs patchin
@@ -250,6 +258,7 @@ function install_raspap() {
install_dependencies
enable_php_lighttpd
create_raspap_directories
+ create_logging_scripts
check_for_old_configs
download_latest_files
change_file_ownership
diff --git a/installers/disablelog.sh b/installers/disablelog.sh
new file mode 100755
index 00000000..4272b88f
--- /dev/null
+++ b/installers/disablelog.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+/bin/sed -i 's|DAEMON_OPTS=" -f /tmp/hostapd.log"|#DAEMON_OPTS=""|' /etc/default/hostapd
+
diff --git a/installers/enablelog.sh b/installers/enablelog.sh
new file mode 100755
index 00000000..79f75546
--- /dev/null
+++ b/installers/enablelog.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+/bin/sed -i 's|#DAEMON_OPTS=""|DAEMON_OPTS=" -f /tmp/hostapd.log"|' /etc/default/hostapd