$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; } } /** * * Add CSRF Token to form * */ function CSRFToken() { ?> ' , PHP_EOL; foreach ($options as $opt => $label) { $select = ''; $key = isAssoc($options) ? $opt : $label; if ($key == $selected) { $select = ' selected="selected"'; } echo '' , PHP_EOL; } echo '' , PHP_EOL; } /** * * @param string $input * @param string $string * @param int $offset * @param string $separator * @return $string */ function GetDistString($input, $string, $offset, $separator) { $string = substr($input, strpos($input, $string)+$offset, strpos(substr($input, strpos($input, $string)+$offset), $separator)); return $string; } /** * * @param array $arrConfig * @return $config */ function ParseConfig($arrConfig) { $config = array(); foreach ($arrConfig as $line) { $line = trim($line); if ($line != "" && $line[0] != "#") { $arrLine = explode("=", $line); $config[$arrLine[0]] = ( count($arrLine) > 1 ? $arrLine[1] : true ); } } return $config; } /** * * @param string $freq * @return $channel */ function ConvertToChannel($freq) { if ($freq >= 2412 && $freq <= 2484) { $channel = ($freq - 2407)/5; } elseif ($freq >= 4915 && $freq <= 4980) { $channel = ($freq - 4910)/5 + 182; } elseif ($freq >= 5035 && $freq <= 5865) { $channel = ($freq - 5030)/5 + 6; } else { $channel = -1; } if ($channel >= 1 && $channel <= 196) { return $channel; } else { return 'Invalid Channel'; } } /** * Converts WPA security string to readable format * @param string $security * @return string */ function ConvertToSecurity($security) { $options = array(); preg_match_all('/\[([^\]]+)\]/s', $security, $matches); foreach ($matches[1] as $match) { if (preg_match('/^(WPA\d?)/', $match, $protocol_match)) { $protocol = $protocol_match[1]; $matchArr = explode('-', $match); if (count($matchArr) > 2) { $options[] = htmlspecialchars($protocol . ' ('. $matchArr[2] .')', ENT_QUOTES); } else { $options[] = htmlspecialchars($protocol, ENT_QUOTES); } } } if (count($options) === 0) { // This could also be WEP but wpa_supplicant doesn't have a way to determine // this. // And you shouldn't be using WEP these days anyway. return 'Open'; } else { return implode('
', $options); } } /** * * */ function DisplayOpenVPNConfig() { exec('cat '. RASPI_OPENVPN_CLIENT_CONFIG, $returnClient); exec('cat '. RASPI_OPENVPN_SERVER_CONFIG, $returnServer); exec('pidof openvpn | wc -l', $openvpnstatus); if ($openvpnstatus[0] == 0) { $status = '
OpenVPN is not running
'; } else { $status = '
OpenVPN is running
'; } // parse client settings foreach ($returnClient as $a) { if ($a[0] != "#") { $arrLine = explode(" ", $a) ; $arrClientConfig[$arrLine[0]]=$arrLine[1]; } } // parse server settings foreach ($returnServer as $a) { if ($a[0] != "#") { $arrLine = explode(" ", $a) ; $arrServerConfig[$arrLine[0]]=$arrLine[1]; } } ?>
Configure OpenVPN

Client settings

Server settings

' , PHP_EOL; } else { echo '' , PHP_EOL; } ?>
TOR is not running
'; } else { $status = '
TOR is running
'; } $arrConfig = array(); foreach ($return as $a) { if ($a[0] != "#") { $arrLine = explode(" ", $a) ; $arrConfig[$arrLine[0]]=$arrLine[1]; } } ?>
Configure TOR proxy

Basic settings

Relay settings

' , PHP_EOL; } else { echo '' , PHP_EOL; }; ?>
' , PHP_EOL; } } elseif (isset($_POST['StopOpenVPN'])) { echo "Attempting to stop openvpn"; exec('sudo /etc/init.d/openvpn stop', $return); foreach ($return as $line) { echo htmlspecialchars($line, ENT_QUOTES).'
' , PHP_EOL; } } elseif (isset($_POST['StartTOR'])) { echo "Attempting to start TOR"; exec('sudo /etc/init.d/tor start', $return); foreach ($return as $line) { echo htmlspecialchars($line, ENT_QUOTES).'
' , PHP_EOL; } } elseif (isset($_POST['StopTOR'])) { echo "Attempting to stop TOR"; exec('sudo /etc/init.d/tor stop', $return); foreach ($return as $line) { echo htmlspecialchars($line, ENT_QUOTES).'
' , PHP_EOL; } } }