mirror of
				https://github.com/billz/raspap-webgui.git
				synced 2025-03-01 10:31:47 +00:00 
			
		
		
		
	@@ -11,28 +11,32 @@ function Status($message, $level='success', $dismissable=true) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function DisplayAuthConfig($username, $password){
 | 
			
		||||
  $status = '';
 | 
			
		||||
  if (isset($_POST['UpdateAdminPassword'])) {
 | 
			
		||||
		if (password_verify($_POST['oldpass'], $password)) {
 | 
			
		||||
			$new_username=trim($_POST['username']);
 | 
			
		||||
			if ($_POST['newpass'] != $_POST['newpassagain']) {
 | 
			
		||||
				$status = Status('New passwords do not match', 'danger');
 | 
			
		||||
			} else if ($new_username == '') {
 | 
			
		||||
				$status = Status('Username must not be empty', 'danger');
 | 
			
		||||
			} else {
 | 
			
		||||
				if ($auth_file = fopen(RASPI_ADMIN_DETAILS, 'w')) {
 | 
			
		||||
					fwrite($auth_file, $new_username.PHP_EOL);
 | 
			
		||||
					fwrite($auth_file, password_hash($_POST['newpass'], PASSWORD_BCRYPT).PHP_EOL);
 | 
			
		||||
					fclose($auth_file);
 | 
			
		||||
					$username = $new_username;
 | 
			
		||||
					$status = Status('Admin password updated');
 | 
			
		||||
	$status = '';
 | 
			
		||||
	if (isset($_POST['UpdateAdminPassword'])) {
 | 
			
		||||
		if (CSRFValidate()) {
 | 
			
		||||
			if (password_verify($_POST['oldpass'], $password)) {
 | 
			
		||||
				$new_username=trim($_POST['username']);
 | 
			
		||||
				if ($_POST['newpass'] != $_POST['newpassagain']) {
 | 
			
		||||
					$status = Status('New passwords do not match', 'danger');
 | 
			
		||||
				} else if ($new_username == '') {
 | 
			
		||||
					$status = Status('Username must not be empty', 'danger');
 | 
			
		||||
				} else {
 | 
			
		||||
					$status = Status('Failed to update admin password', 'danger');
 | 
			
		||||
					if ($auth_file = fopen(RASPI_ADMIN_DETAILS, 'w')) {
 | 
			
		||||
						fwrite($auth_file, $new_username.PHP_EOL);
 | 
			
		||||
						fwrite($auth_file, password_hash($_POST['newpass'], PASSWORD_BCRYPT).PHP_EOL);
 | 
			
		||||
						fclose($auth_file);
 | 
			
		||||
						$username = $new_username;
 | 
			
		||||
						$status = Status('Admin password updated');
 | 
			
		||||
					} else {
 | 
			
		||||
						$status = Status('Failed to update admin password', 'danger');
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			} else {
 | 
			
		||||
				$status = Status('Old password does not match', 'danger');
 | 
			
		||||
			}
 | 
			
		||||
		} else {
 | 
			
		||||
			$status = Status('Old password does not match', 'danger');
 | 
			
		||||
		}
 | 
			
		||||
    } else {
 | 
			
		||||
			error_log('CSRF violation');
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
?>
 | 
			
		||||
	<div class="row">
 | 
			
		||||
@@ -42,6 +46,7 @@ function DisplayAuthConfig($username, $password){
 | 
			
		||||
				<div class="panel-body">
 | 
			
		||||
					<p><?php echo $status; ?></p>
 | 
			
		||||
					<form role="form" action="/?page=auth_conf" method="POST">
 | 
			
		||||
						<?php CSRFToken() ?>
 | 
			
		||||
						<div class="row">
 | 
			
		||||
							<div class="form-group col-md-4">
 | 
			
		||||
								<label for="username">Username</label>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,25 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
*
 | 
			
		||||
* Add CSRF Token to form
 | 
			
		||||
*
 | 
			
		||||
*/
 | 
			
		||||
function CSRFToken() {
 | 
			
		||||
?>
 | 
			
		||||
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>" />
 | 
			
		||||
<?php
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
*
 | 
			
		||||
* Validate CSRF Token
 | 
			
		||||
*
 | 
			
		||||
*/
 | 
			
		||||
function CSRFValidate() {
 | 
			
		||||
  return hash_equals($_POST['csrf_token'], $_SESSION['csrf_token']);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
*
 | 
			
		||||
* @param string $input
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										10
									
								
								index.php
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								index.php
									
									
									
									
									
								
							@@ -44,6 +44,16 @@ include_once( 'includes/functions.php' );
 | 
			
		||||
 | 
			
		||||
$output = $return = 0;
 | 
			
		||||
$page = $_GET['page'];
 | 
			
		||||
 | 
			
		||||
session_start();
 | 
			
		||||
if (empty($_SESSION['csrf_token'])) {
 | 
			
		||||
    if (function_exists('mcrypt_create_iv')) {
 | 
			
		||||
        $_SESSION['csrf_token'] = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));
 | 
			
		||||
    } else {
 | 
			
		||||
        $_SESSION['csrf_token'] = bin2hex(openssl_random_pseudo_bytes(32));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
$csrf_token = $_SESSION['csrf_token'];
 | 
			
		||||
?>
 | 
			
		||||
 | 
			
		||||
<!DOCTYPE html>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user