mirror of
				https://github.com/billz/raspap-webgui.git
				synced 2025-03-01 10:31:47 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			241 lines
		
	
	
		
			8.6 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			241 lines
		
	
	
		
			8.6 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
| <?php
 | |
| 
 | |
| include_once('includes/status_messages.php');
 | |
| 
 | |
| /**
 | |
|  *
 | |
|  * Find the version of the Raspberry Pi
 | |
|  * Currently only used for the system information page but may useful elsewhere
 | |
|  *
 | |
|  */
 | |
| 
 | |
| function RPiVersion()
 | |
| {
 | |
|     // Lookup table from http://www.raspberrypi-spy.co.uk/2012/09/checking-your-raspberry-pi-board-version/
 | |
|     $revisions = array(
 | |
|     '0002' => 'Model B Revision 1.0',
 | |
|     '0003' => 'Model B Revision 1.0 + ECN0001',
 | |
|     '0004' => 'Model B Revision 2.0 (256 MB)',
 | |
|     '0005' => 'Model B Revision 2.0 (256 MB)',
 | |
|     '0006' => 'Model B Revision 2.0 (256 MB)',
 | |
|     '0007' => 'Model A',
 | |
|     '0008' => 'Model A',
 | |
|     '0009' => 'Model A',
 | |
|     '000d' => 'Model B Revision 2.0 (512 MB)',
 | |
|     '000e' => 'Model B Revision 2.0 (512 MB)',
 | |
|     '000f' => 'Model B Revision 2.0 (512 MB)',
 | |
|     '0010' => 'Model B+',
 | |
|     '0013' => 'Model B+',
 | |
|     '0011' => 'Compute Module',
 | |
|     '0012' => 'Model A+',
 | |
|     'a01041' => 'a01041',
 | |
|     'a21041' => 'a21041',
 | |
|     '900092' => 'PiZero 1.2',
 | |
|     '900093' => 'PiZero 1.3',
 | |
|     '9000c1' => 'PiZero W',
 | |
|     'a02082' => 'Pi 3 Model B',
 | |
|     'a22082' => 'Pi 3 Model B',
 | |
|     'a32082' => 'Pi 3 Model B',
 | |
|     'a52082' => 'Pi 3 Model B',
 | |
|     'a020d3' => 'Pi 3 Model B+',
 | |
|     'a220a0' => 'Compute Module 3',
 | |
|     'a020a0' => 'Compute Module 3',
 | |
|     'a02100' => 'Compute Module 3+',
 | |
|     );
 | |
| 
 | |
|     $cpuinfo_array = '';
 | |
|     exec('cat /proc/cpuinfo', $cpuinfo_array);
 | |
|     $rev = trim(array_pop(explode(':', array_pop(preg_grep("/^Revision/", $cpuinfo_array)))));
 | |
|     if (array_key_exists($rev, $revisions)) {
 | |
|         return $revisions[$rev];
 | |
|     } else {
 | |
|         return 'Unknown Pi';
 | |
|     }
 | |
| }
 | |
| 
 | |
| /**
 | |
|  *
 | |
|  *
 | |
|  */
 | |
| function DisplaySystem()
 | |
| {
 | |
| 
 | |
|     $status = new StatusMessages();
 | |
| 
 | |
|     if (isset($_POST['SaveLanguage'])) {
 | |
|         if (CSRFValidate()) {
 | |
|             if (isset($_POST['locale'])) {
 | |
|                 $_SESSION['locale'] = $_POST['locale'];
 | |
|                 $status->addMessage('Language setting saved', 'success');
 | |
|             }
 | |
|         } else {
 | |
|             error_log('CSRF violation');
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     // define locales
 | |
|     $arrLocales = array(
 | |
|     'en_GB.UTF-8' => 'English',
 | |
|     'de_DE.UTF-8' => 'Deutsch',
 | |
|     'fr_FR.UTF-8' => 'Français',
 | |
|     'it_IT.UTF-8' => 'Italiano',
 | |
|     'pt_BR.UTF-8' => 'Português',
 | |
|     'sv_SE.UTF-8' => 'Svenska',
 | |
|     'nl_NL.UTF-8' => 'Nederlands',
 | |
|     'zh_CN.UTF-8' => '简体中文 (Chinese simplified)',
 | |
|     'cs_CZ.UTF-8' => 'Čeština',
 | |
|     'ru_RU.UTF-8' => 'Русский',
 | |
|     'es_MX.UTF-8' => 'Español',
 | |
|     'fi_FI.UTF-8' => 'Finnish',
 | |
|     'si_LK.UTF-8' => 'Sinhala',
 | |
|     'tr_TR.UTF-8' => 'Türkçe'
 | |
|     );
 | |
| 
 | |
|     // hostname
 | |
|     exec("hostname -f", $hostarray);
 | |
|     $hostname = $hostarray[0];
 | |
| 
 | |
|     // uptime
 | |
|     $uparray = explode(" ", exec("cat /proc/uptime"));
 | |
|     $seconds = round($uparray[0], 0);
 | |
|     $minutes = $seconds / 60;
 | |
|     $hours   = $minutes / 60;
 | |
|     $days    = floor($hours / 24);
 | |
|     $hours   = floor($hours   - ($days * 24));
 | |
|     $minutes = floor($minutes - ($days * 24 * 60) - ($hours * 60));
 | |
|     $uptime= '';
 | |
|     if ($days    != 0) {
 | |
|         $uptime .= $days    . ' day'    . (($days    > 1)? 's ':' ');
 | |
|     }
 | |
|     if ($hours   != 0) {
 | |
|         $uptime .= $hours   . ' hour'   . (($hours   > 1)? 's ':' ');
 | |
|     }
 | |
|     if ($minutes != 0) {
 | |
|         $uptime .= $minutes . ' minute' . (($minutes > 1)? 's ':' ');
 | |
|     }
 | |
| 
 | |
|     // mem used
 | |
|     $memused_status = "primary";
 | |
|     exec("free -m | awk '/Mem:/ { total=$2 ; used=$3 } END { print used/total*100}'", $memarray);
 | |
|     $memused = floor($memarray[0]);
 | |
|     if ($memused > 90) {
 | |
|         $memused_status = "danger";
 | |
|     } elseif ($memused > 75) {
 | |
|         $memused_status = "warning";
 | |
|     } elseif ($memused >  0) {
 | |
|         $memused_status = "success";
 | |
|     }
 | |
| 
 | |
|     // cpu load
 | |
|     $cores   = exec("grep -c ^processor /proc/cpuinfo");
 | |
|     $loadavg = exec("awk '{print $1}' /proc/loadavg");
 | |
|     $cpuload = floor(($loadavg * 100) / $cores);
 | |
|     if ($cpuload > 90) {
 | |
|         $cpuload_status = "danger";
 | |
|     } elseif ($cpuload > 75) {
 | |
|         $cpuload_status = "warning";
 | |
|     } elseif ($cpuload >  0) {
 | |
|         $cpuload_status = "success";
 | |
|     }
 | |
| 
 | |
| ?>
 | |
|   <div class="row">
 | |
|   <div class="col-lg-12">
 | |
|   <div class="panel panel-primary">
 | |
|   <div class="panel-heading"><i class="fa fa-cube fa-fw"></i> <?php echo _("System"); ?></div>
 | |
|   <div class="panel-body">
 | |
| 
 | |
| <?php
 | |
| if (isset($_POST['system_reboot'])) {
 | |
|     echo '<div class="alert alert-warning">' . _("System Rebooting Now!") . '</div>';
 | |
|     $result = shell_exec("sudo /sbin/reboot");
 | |
| }
 | |
| if (isset($_POST['system_shutdown'])) {
 | |
|     echo '<div class="alert alert-warning">' . _("System Shutting Down Now!") . '</div>';
 | |
|     $result = shell_exec("sudo /sbin/shutdown -h now");
 | |
| }
 | |
| ?>
 | |
| 
 | |
|   <div class="row">
 | |
|   <div class="col-md-12">
 | |
|   <div class="panel panel-default">
 | |
|   <div class="panel-body">
 | |
|   <p><?php $status->showMessages(); ?></p>
 | |
|   <form role="form" action="?page=system_info" method="POST">
 | |
|   <ul class="nav nav-tabs" role="tablist">
 | |
|     <li role="presentation" class="active systemtab"><a href="#system" aria-controls="system" role="tab" data-toggle="tab"><?php echo _("System"); ?></a></li>
 | |
|     <li role="presentation" class="languagetab"><a href="#language" aria-controls="language" role="tab" data-toggle="tab"><?php echo _("Language"); ?></a></li>
 | |
|     <li role="presentation" class="consoletab"><a href="#console" aria-controls="console" role="tab" data-toggle="tab"><?php echo _("Console"); ?></a></li>
 | |
|   </ul>
 | |
| 
 | |
|   <div class="systemtabcontent tab-content">
 | |
|     <div role="tabpanel" class="tab-pane active" id="system">
 | |
|       <div class="row">
 | |
|         <div class="col-lg-6">
 | |
|           <h4><?php echo _("System Information"); ?></h4>
 | |
|           <div class="info-item"><?php echo _("Hostname"); ?></div> <?php echo htmlspecialchars($hostname, ENT_QUOTES); ?></br>
 | |
|           <div class="info-item"><?php echo _("Pi Revision"); ?></div> <?php echo htmlspecialchars(RPiVersion(), ENT_QUOTES); ?></br>
 | |
|           <div class="info-item"><?php echo _("Uptime"); ?></div>   <?php echo htmlspecialchars($uptime, ENT_QUOTES); ?></br></br>
 | |
|           <div class="info-item"><?php echo _("Memory Used"); ?></div>
 | |
|           <div class="progress">
 | |
|           <div class="progress-bar progress-bar-<?php echo htmlspecialchars($memused_status, ENT_QUOTES); ?> progress-bar-striped active"
 | |
|           role="progressbar"
 | |
|           aria-valuenow="<?php echo htmlspecialchars($memused, ENT_QUOTES); ?>" aria-valuemin="0" aria-valuemax="100"
 | |
|           style="width: <?php echo htmlspecialchars($memused, ENT_QUOTES); ?>%;"><?php echo htmlspecialchars($memused, ENT_QUOTES); ?>%
 | |
|           </div>
 | |
|           </div>
 | |
|           <div class="info-item"><?php echo _("CPU Load"); ?></div>
 | |
|           <div class="progress">
 | |
|           <div class="progress-bar progress-bar-<?php echo htmlspecialchars($cpuload_status, ENT_QUOTES); ?> progress-bar-striped active"
 | |
|           role="progressbar"
 | |
|           aria-valuenow="<?php echo htmlspecialchars($cpuload, ENT_QUOTES); ?>" aria-valuemin="0" aria-valuemax="100"
 | |
|           style="width: <?php echo htmlspecialchars($cpuload, ENT_QUOTES); ?>%;"><?php echo htmlspecialchars($cpuload, ENT_QUOTES); ?>%
 | |
|           </div>
 | |
|           </div>
 | |
| 
 | |
|           <form action="?page=system_info" method="POST">
 | |
|           <input type="submit" class="btn btn-warning" name="system_reboot"   value="<?php echo _("Reboot"); ?>" />
 | |
|           <input type="submit" class="btn btn-warning" name="system_shutdown" value="<?php echo _("Shutdown"); ?>" />
 | |
|           <input type="button" class="btn btn-outline btn-primary" value="<?php echo _("Refresh"); ?>" onclick="document.location.reload(true)" />
 | |
|           </form>
 | |
|         </div>
 | |
|       </div>
 | |
|     </div>
 | |
| 
 | |
|     <div role="tabpanel" class="tab-pane" id="language">
 | |
|       <h4><?php echo _("Language settings") ;?></h4>
 | |
|         <?php CSRFToken() ?>
 | |
|       <div class="row">
 | |
|         <div class="form-group col-md-4">
 | |
|           <label for="code"><?php echo _("Select a language"); ?></label>
 | |
|             <?php SelectorOptions('locale', $arrLocales, $_SESSION['locale']); ?>
 | |
|         </div>
 | |
|       </div>
 | |
|       <input type="submit" class="btn btn-outline btn-primary" name="SaveLanguage" value="<?php echo _("Save settings"); ?>" />
 | |
|       <input type="button" class="btn btn-outline btn-primary" value="<?php echo _("Refresh"); ?>" onclick="document.location.reload(true)" />
 | |
|     </div>
 | |
| 
 | |
|     <div role="tabpanel" class="tab-pane" id="console">
 | |
|       <div class="row">
 | |
|         <div class="col-lg-12"> 
 | |
|           <iframe src="includes/webconsole.php" class="webconsole"></iframe>
 | |
|         </div>
 | |
|       </div>
 | |
|     </div>
 | |
| 
 | |
|     </div><!-- /.systemtabcontent -->
 | |
| 
 | |
|     </div><!-- /.panel-default -->
 | |
|     </div><!-- /.col-md-6 -->
 | |
|     </div><!-- /.row -->
 | |
|   </div><!-- /.panel-body -->
 | |
|   </form>
 | |
|   </div><!-- /.panel-primary -->
 | |
|   <div class="panel-footer"></div>
 | |
|   </div><!-- /.panel-primary -->
 | |
|   </div><!-- /.col-lg-12 -->
 | |
|   </div><!-- /.row -->
 | |
| <?php
 | |
| }
 | |
| 
 |