Merge branch 'master' into add_export_to_filter
This commit is contained in:
commit
a12c7d90ab
|
@ -0,0 +1,326 @@
|
||||||
|
# ==========================================================================
|
||||||
|
#
|
||||||
|
# ZoneMinder iPhone Control Protocol Module, $Date: 2018-07-15 00:20:00 +0000 $, $Revision: 0003 $
|
||||||
|
# Copyright (C) 2001-2008 Philip Coombes
|
||||||
|
#
|
||||||
|
# Modified for iPhone ipcamera for IOS BY PETER ZARGLIS n 2018-06-09 13:45:00
|
||||||
|
# This program is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU General Public License
|
||||||
|
# as published by the Free Software Foundation; either version 2
|
||||||
|
# of the License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
#
|
||||||
|
# ==========================================================================
|
||||||
|
#
|
||||||
|
# This module contains the implementation of the iPhone ipcamera for IOS
|
||||||
|
# control protocol.
|
||||||
|
#
|
||||||
|
# ==========================================================================
|
||||||
|
package ZoneMinder::Control::IPCAMIOS;
|
||||||
|
|
||||||
|
use 5.006;
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
|
||||||
|
require ZoneMinder::Base;
|
||||||
|
require ZoneMinder::Control;
|
||||||
|
|
||||||
|
our @ISA = qw(ZoneMinder::Control);
|
||||||
|
|
||||||
|
our $VERSION = $ZoneMinder::Base::VERSION;
|
||||||
|
|
||||||
|
# ==========================================================================
|
||||||
|
#
|
||||||
|
# iPhone ipcamera for IOS Protocol
|
||||||
|
#
|
||||||
|
# ==========================================================================
|
||||||
|
|
||||||
|
use ZoneMinder::Logger qw(:all);
|
||||||
|
use ZoneMinder::Config qw(:all);
|
||||||
|
use Time::HiRes qw( usleep );
|
||||||
|
|
||||||
|
my $loopfactor=100000;
|
||||||
|
|
||||||
|
sub new
|
||||||
|
{
|
||||||
|
my $class = shift;
|
||||||
|
my $id = shift;
|
||||||
|
my $self = ZoneMinder::Control->new( $id );
|
||||||
|
my $logindetails = "";
|
||||||
|
bless( $self, $class );
|
||||||
|
srand( time() );
|
||||||
|
return $self;
|
||||||
|
}
|
||||||
|
|
||||||
|
our $AUTOLOAD;
|
||||||
|
|
||||||
|
sub AUTOLOAD
|
||||||
|
{
|
||||||
|
my $self = shift;
|
||||||
|
my $class = ref($self) || croak( "$self not object" );
|
||||||
|
my $name = $AUTOLOAD;
|
||||||
|
$name =~ s/.*://;
|
||||||
|
if ( exists($self->{$name}) )
|
||||||
|
{
|
||||||
|
return( $self->{$name} );
|
||||||
|
}
|
||||||
|
Fatal( "Can't access $name member of object of class $class" );
|
||||||
|
}
|
||||||
|
|
||||||
|
sub open
|
||||||
|
{
|
||||||
|
my $self = shift;
|
||||||
|
|
||||||
|
$self->loadMonitor();
|
||||||
|
|
||||||
|
use LWP::UserAgent;
|
||||||
|
$self->{ua} = LWP::UserAgent->new;
|
||||||
|
$self->{ua}->agent( "ZoneMinder Control Agent" );
|
||||||
|
|
||||||
|
|
||||||
|
$self->{state} = 'open';
|
||||||
|
}
|
||||||
|
|
||||||
|
sub close
|
||||||
|
{
|
||||||
|
my $self = shift;
|
||||||
|
$self->{state} = 'closed';
|
||||||
|
}
|
||||||
|
|
||||||
|
sub sendCmd
|
||||||
|
{
|
||||||
|
my $self = shift;
|
||||||
|
my $cmd = shift;
|
||||||
|
my $result = undef;
|
||||||
|
my $req = HTTP::Request->new( GET=>"http://".$self->{Monitor}->{ControlAddress}."/$cmd" );
|
||||||
|
my $res = $self->{ua}->request($req);
|
||||||
|
if ( $res->is_success )
|
||||||
|
{
|
||||||
|
$result = $res->decoded_content;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Error( "Error check failed: '".$res->status_line()."'" );
|
||||||
|
}
|
||||||
|
return( $result );
|
||||||
|
}
|
||||||
|
sub getDisplayAttr
|
||||||
|
{
|
||||||
|
my $self = shift;
|
||||||
|
my $param = shift;
|
||||||
|
my $cmdget = "parameters?";
|
||||||
|
my $resp = $self->sendCmd( $cmdget );
|
||||||
|
my @fields = split(',',$resp);
|
||||||
|
my $response=$fields[$param];
|
||||||
|
my @buffer=split(':',$response);
|
||||||
|
my $response2=$buffer[1];
|
||||||
|
return ($response2);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub sleep
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
# Flip image vertically -> Horz -> off
|
||||||
|
sub moveConUp
|
||||||
|
{
|
||||||
|
my $self = shift;
|
||||||
|
my $params = shift;
|
||||||
|
Debug( "Flip Image" );
|
||||||
|
my $dvalue=$self->getDisplayAttr(3);
|
||||||
|
if ( $dvalue == 2 )
|
||||||
|
{
|
||||||
|
$dvalue=0;
|
||||||
|
my $cmd = "parameters?flip=$dvalue";
|
||||||
|
$self->sendCmd( $cmd );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$dvalue=$dvalue+1;
|
||||||
|
my $cmd = "parameters?flip=$dvalue";
|
||||||
|
$self->sendCmd( $cmd );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# Change camera (front facing or back)
|
||||||
|
sub moveConDown
|
||||||
|
{
|
||||||
|
my $self = shift;
|
||||||
|
my $params = shift;
|
||||||
|
Debug( "Change Camera" );
|
||||||
|
my $dvalue=$self->getDisplayAttr(7);
|
||||||
|
if ( $dvalue == 0 )
|
||||||
|
{
|
||||||
|
my $cmd = "parameters?camera=1";
|
||||||
|
$self->sendCmd( $cmd );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
my $cmd = "parameters?camera=0";
|
||||||
|
$self->sendCmd( $cmd );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# Picture Orientation Clockwise
|
||||||
|
sub moveConRight
|
||||||
|
{
|
||||||
|
my $self = shift;
|
||||||
|
my $params = shift;
|
||||||
|
Debug( "Orientation" );
|
||||||
|
my $dvalue=$self->getDisplayAttr(10);
|
||||||
|
if ( $dvalue == 1 )
|
||||||
|
{
|
||||||
|
$dvalue=4;
|
||||||
|
my $cmd = "parameters?rotation=$dvalue";
|
||||||
|
$self->sendCmd( $cmd );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$dvalue=$dvalue-1;
|
||||||
|
my $cmd = "parameters?rotation=$dvalue";
|
||||||
|
$self->sendCmd( $cmd );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# Picture Orientation Anti-Clockwise
|
||||||
|
sub moveConLeft
|
||||||
|
{
|
||||||
|
my $self = shift;
|
||||||
|
my $params = shift;
|
||||||
|
Debug( "Orientation" );
|
||||||
|
my $dvalue=$self->getDisplayAttr(10);
|
||||||
|
if ( $dvalue == 4 )
|
||||||
|
{
|
||||||
|
$dvalue=1;
|
||||||
|
my $cmd = "parameters?rotation=$dvalue";
|
||||||
|
$self->sendCmd( $cmd );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$dvalue=$dvalue+1;
|
||||||
|
my $cmd = "parameters?rotation=$dvalue";
|
||||||
|
$self->sendCmd( $cmd );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# presetHome is used to turn off Torch, unlock Focus, unlock Exposure, unlock white-balance, rotation, image flipping
|
||||||
|
# Just basically reset all the little variables and set it to medium quality
|
||||||
|
# Rotation = 0 means it will autoselect using built in detection
|
||||||
|
sub presetHome
|
||||||
|
{
|
||||||
|
my $self = shift;
|
||||||
|
Debug( "Home Preset" );
|
||||||
|
my $cmd = "parameters?torch=0&focus=0&wb=0&exposure=0&rotation=0&flip=0&quality=0.5";
|
||||||
|
$self->sendCmd( $cmd );
|
||||||
|
}
|
||||||
|
|
||||||
|
sub focusAbsNear
|
||||||
|
# Focus Un/Lock
|
||||||
|
{
|
||||||
|
my $self = shift;
|
||||||
|
my $params = shift;
|
||||||
|
Debug( "Focus Un/Lock" );
|
||||||
|
my $dvalue=$self->getDisplayAttr(2);
|
||||||
|
if ( $dvalue == 0 )
|
||||||
|
{
|
||||||
|
my $cmd = "parameters?focus=1";
|
||||||
|
$self->sendCmd( $cmd );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
my $cmd = "parameters?focus=0";
|
||||||
|
$self->sendCmd( $cmd );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub focusAbsFar
|
||||||
|
# Exposure Un/Lock
|
||||||
|
{
|
||||||
|
my $self = shift;
|
||||||
|
my $params = shift;
|
||||||
|
Debug( "Exposure Un/Lock" );
|
||||||
|
my $dvalue=$self->getDisplayAttr(11);
|
||||||
|
if ( $dvalue == 0 )
|
||||||
|
{
|
||||||
|
my $cmd = "parameters?exposure=1";
|
||||||
|
$self->sendCmd( $cmd );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
my $cmd = "parameters?exposure=0";
|
||||||
|
$self->sendCmd( $cmd );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# Increase stream Quality (from 0 to 10)
|
||||||
|
sub irisAbsOpen
|
||||||
|
{
|
||||||
|
my $self = shift;
|
||||||
|
my $params = shift;
|
||||||
|
Debug( "Quality" );
|
||||||
|
my $dvalue=$self->getDisplayAttr(8);
|
||||||
|
if ( $dvalue < 1 )
|
||||||
|
{
|
||||||
|
$dvalue=$dvalue+0.1;
|
||||||
|
my $cmd = "parameters?quality=$dvalue";
|
||||||
|
$self->sendCmd( $cmd );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Decrease stream Quality (from 10 to 0)
|
||||||
|
sub irisAbsClose
|
||||||
|
{
|
||||||
|
my $self = shift;
|
||||||
|
my $params = shift;
|
||||||
|
Debug( "Quality" );
|
||||||
|
my $dvalue=$self->getDisplayAttr(8);
|
||||||
|
if ( $dvalue > 0 )
|
||||||
|
{
|
||||||
|
$dvalue=$dvalue-0.1;
|
||||||
|
my $cmd = "parameters?quality=$dvalue";
|
||||||
|
$self->sendCmd( $cmd );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# White Balance Un/Lock
|
||||||
|
sub whiteAbsIn
|
||||||
|
{
|
||||||
|
my $self = shift;
|
||||||
|
my $params = shift;
|
||||||
|
Debug( "White Balance" );
|
||||||
|
my $dvalue=$self->getDisplayAttr(9);
|
||||||
|
if ( $dvalue == 0 )
|
||||||
|
{
|
||||||
|
my $cmd = "parameters?wb=1";
|
||||||
|
$self->sendCmd( $cmd );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
my $cmd = "parameters?wb=0";
|
||||||
|
$self->sendCmd( $cmd );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Torch control on/off
|
||||||
|
sub whiteAbsOut
|
||||||
|
{
|
||||||
|
my $self = shift;
|
||||||
|
my $params = shift;
|
||||||
|
Debug( "Torch" );
|
||||||
|
my $dvalue=$self->getDisplayAttr(5);
|
||||||
|
if ( $dvalue == 0 )
|
||||||
|
{
|
||||||
|
my $cmd = "parameters?torch=1";
|
||||||
|
$self->sendCmd( $cmd );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
my $cmd = "parameters?torch=0";
|
||||||
|
$self->sendCmd( $cmd );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
1;
|
|
@ -173,6 +173,12 @@ my $cwd = getcwd;
|
||||||
|
|
||||||
my $video_name;
|
my $video_name;
|
||||||
my @event_ids;
|
my @event_ids;
|
||||||
|
|
||||||
|
# Fail if the path to a valid ffmpeg binary is not set
|
||||||
|
if ( ! -x $Config{ZM_PATH_FFMPEG} ) {
|
||||||
|
Fatal("Ffmpeg binary not found or not executable. Verify ZM_PATH_FFMPEG points to ffmpeg, avconv, or a compatible binary.");
|
||||||
|
}
|
||||||
|
|
||||||
if ( $event_id ) {
|
if ( $event_id ) {
|
||||||
@event_ids = ( $event_id );
|
@event_ids = ( $event_id );
|
||||||
|
|
||||||
|
|
|
@ -70,49 +70,11 @@ class AppController extends Controller {
|
||||||
throw new UnauthorizedException(__('API Disabled'));
|
throw new UnauthorizedException(__('API Disabled'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
// We need to reject methods that are not authenticated
|
||||||
$options = array('conditions' => array('Config.' . $this->Config->primaryKey => 'ZM_OPT_USE_AUTH'));
|
// besides login and logout
|
||||||
$config = $this->Config->find('first', $options);
|
if (strcasecmp($this->params->controller, "host") &&
|
||||||
$zmOptAuth = $config['Config']['Value'];
|
strcasecmp($this->params->action, "login") &&
|
||||||
|
strcasecmp($this->params->action,"logout")) {
|
||||||
if ( $zmOptAuth == '1' ) {
|
|
||||||
require_once "../../../includes/auth.php";
|
|
||||||
|
|
||||||
global $user;
|
|
||||||
$user = $this->Session->read('user');
|
|
||||||
|
|
||||||
if ( isset($_REQUEST['user']) and isset($_REQUEST['pass']) ) {
|
|
||||||
$user = userLogin($_REQUEST['user'],$_REQUEST['pass']);
|
|
||||||
if ( !$user ) {
|
|
||||||
throw new UnauthorizedException(__('User not found'));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( isset($_REQUEST['auth']) ) {
|
|
||||||
$user = getAuthUser($_REQUEST['auth']);
|
|
||||||
if ( ! $user ) {
|
|
||||||
throw new UnauthorizedException(__('User not found'));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} # end if REQUEST['auth']
|
|
||||||
|
|
||||||
if ( 0 and $user ) {
|
|
||||||
# We have to redo the session variables because cakephp's Session code will overwrite the normal php session
|
|
||||||
# Actually I'm not sure that is true. Getting indeterminate behaviour
|
|
||||||
Logger::Debug("user.Username: " . $this->Session->read('user.Username'));
|
|
||||||
if ( ! $this->Session->Write('user', $user) )
|
|
||||||
$this->log("Error writing session var user");
|
|
||||||
Logger::Debug("user.Username: " . $this->Session->read('user.Username'));
|
|
||||||
if ( ! $this->Session->Write('user.Username', $user['Username']) )
|
|
||||||
$this->log("Error writing session var user.Username");
|
|
||||||
if ( ! $this->Session->Write('password', $user['Password']) )
|
|
||||||
$this->log("Error writing session var user.Username");
|
|
||||||
if ( ! $this->Session->Write('user.Enabled', $user['Enabled']) )
|
|
||||||
$this->log("Error writing session var user.Enabled");
|
|
||||||
if ( ! $this->Session->Write('remoteAddr', $_SERVER['REMOTE_ADDR']) )
|
|
||||||
$this->log("Error writing session var remoteAddr");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!$this->Session->read('user.Username')) {
|
if (!$this->Session->read('user.Username')) {
|
||||||
throw new UnauthorizedException(__('Not Authenticated'));
|
throw new UnauthorizedException(__('Not Authenticated'));
|
||||||
|
@ -122,21 +84,7 @@ class AppController extends Controller {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->Session->Write('allowedMonitors',$user['MonitorIds']);
|
|
||||||
$this->Session->Write('streamPermission',$user['Stream']);
|
|
||||||
$this->Session->Write('eventPermission',$user['Events']);
|
|
||||||
$this->Session->Write('controlPermission',$user['Control']);
|
|
||||||
$this->Session->Write('systemPermission',$user['System']);
|
|
||||||
$this->Session->Write('monitorPermission',$user['Monitors']);
|
|
||||||
} else {
|
|
||||||
// if auth is not on, you can do everything
|
|
||||||
//$userMonitors = $this->User->find('first', $options);
|
|
||||||
$this->Session->Write('allowedMonitors','');
|
|
||||||
$this->Session->Write('streamPermission','View');
|
|
||||||
$this->Session->Write('eventPermission','Edit');
|
|
||||||
$this->Session->Write('controlPermission','Edit');
|
|
||||||
$this->Session->Write('systemPermission','Edit');
|
|
||||||
$this->Session->Write('monitorPermission','Edit');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} # end function beforeFilter()
|
} # end function beforeFilter()
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@ App::uses('AppController', 'Controller');
|
||||||
|
|
||||||
class HostController extends AppController {
|
class HostController extends AppController {
|
||||||
|
|
||||||
public $components = array('RequestHandler');
|
public $components = array('RequestHandler', 'Session');
|
||||||
|
|
||||||
public function daemonCheck($daemon=false, $args=false) {
|
public function daemonCheck($daemon=false, $args=false) {
|
||||||
$string = Configure::read('ZM_PATH_BIN').'/zmdc.pl check';
|
$string = Configure::read('ZM_PATH_BIN').'/zmdc.pl check';
|
||||||
|
@ -30,12 +30,124 @@ class HostController extends AppController {
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
function getCredentials() {
|
|
||||||
// ignore debug warnings from other functions
|
|
||||||
$this->view='Json';
|
function login() {
|
||||||
|
|
||||||
|
$options = array('conditions' => array('Config.' . $this->Config->primaryKey => 'ZM_OPT_USE_AUTH'));
|
||||||
|
$config = $this->Config->find('first', $options);
|
||||||
|
$zmOptAuth = $config['Config']['Value'];
|
||||||
|
|
||||||
|
if ( $zmOptAuth == '1' ) {
|
||||||
|
require_once "../../../includes/auth.php";
|
||||||
|
|
||||||
|
global $user;
|
||||||
|
$user = $this->Session->read('user');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$mUser = $this->request->data('user');
|
||||||
|
$mPassword = $this->request->data('pass');
|
||||||
|
$mAuth = $this->request->data('auth');
|
||||||
|
|
||||||
|
|
||||||
|
if ( $mUser and $mPassword) {
|
||||||
|
$user = userLogin($mUser, $mPassword);
|
||||||
|
if ( !$user ) {
|
||||||
|
throw new UnauthorizedException(__('User not found or incorrect password'));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
elseif ( $mAuth ) {
|
||||||
|
$user = getAuthUser($mAuth);
|
||||||
|
if ( ! $user ) {
|
||||||
|
throw new UnauthorizedException(__('User not found or incorrect password'));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
throw new UnauthorizedException(__('missing credentials'));
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( 0 and $user ) {
|
||||||
|
# We have to redo the session variables because cakephp's Session code will overwrite the normal php session
|
||||||
|
# Actually I'm not sure that is true. Getting indeterminate behaviour
|
||||||
|
Logger::Debug("user.Username: " . $this->Session->read('user.Username'));
|
||||||
|
if ( ! $this->Session->Write('user', $user) )
|
||||||
|
$this->log("Error writing session var user");
|
||||||
|
Logger::Debug("user.Username: " . $this->Session->read('user.Username'));
|
||||||
|
if ( ! $this->Session->Write('user.Username', $user['Username']) )
|
||||||
|
$this->log("Error writing session var user.Username");
|
||||||
|
if ( ! $this->Session->Write('password', $user['Password']) )
|
||||||
|
$this->log("Error writing session var user.Username");
|
||||||
|
if ( ! $this->Session->Write('user.Enabled', $user['Enabled']) )
|
||||||
|
$this->log("Error writing session var user.Enabled");
|
||||||
|
if ( ! $this->Session->Write('remoteAddr', $_SERVER['REMOTE_ADDR']) )
|
||||||
|
$this->log("Error writing session var remoteAddr");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// I don't think this is really needed - the Username part
|
||||||
|
// Enabled check is ok
|
||||||
|
if ( !$user['Username'] ) {
|
||||||
|
throw new UnauthorizedException(__('Not Authenticated'));
|
||||||
|
return;
|
||||||
|
} else if ( !$user['Enabled'] ) {
|
||||||
|
throw new UnauthorizedException(__('User is not enabled'));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$this->Session->Write('allowedMonitors',$user['MonitorIds']);
|
||||||
|
$this->Session->Write('streamPermission',$user['Stream']);
|
||||||
|
$this->Session->Write('eventPermission',$user['Events']);
|
||||||
|
$this->Session->Write('controlPermission',$user['Control']);
|
||||||
|
$this->Session->Write('systemPermission',$user['System']);
|
||||||
|
$this->Session->Write('monitorPermission',$user['Monitors']);
|
||||||
|
} else {
|
||||||
|
// if auth is not on, you can do everything
|
||||||
|
//$userMonitors = $this->User->find('first', $options);
|
||||||
|
$this->Session->Write('allowedMonitors','');
|
||||||
|
$this->Session->Write('streamPermission','View');
|
||||||
|
$this->Session->Write('eventPermission','Edit');
|
||||||
|
$this->Session->Write('controlPermission','Edit');
|
||||||
|
$this->Session->Write('systemPermission','Edit');
|
||||||
|
$this->Session->Write('monitorPermission','Edit');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$cred = $this->_getCredentials();
|
||||||
|
$ver = $this->_getVersion();
|
||||||
|
$this->set(array(
|
||||||
|
'credentials' => $cred[0],
|
||||||
|
'append_password'=>$cred[1],
|
||||||
|
'version' => $ver[0],
|
||||||
|
'apiversion' => $ver[1],
|
||||||
|
'_serialize' => array('credentials',
|
||||||
|
'append_password',
|
||||||
|
'version',
|
||||||
|
'apiversion'
|
||||||
|
)));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// clears out session
|
||||||
|
function logout() {
|
||||||
|
global $user;
|
||||||
|
$this->Session->Write('user', null);
|
||||||
|
|
||||||
|
$this->set(array(
|
||||||
|
'result' => 'ok',
|
||||||
|
'_serialize' => array('result')
|
||||||
|
));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private function _getCredentials() {
|
||||||
$credentials = '';
|
$credentials = '';
|
||||||
$appendPassword = 0;
|
$appendPassword = 0;
|
||||||
|
|
||||||
$this->loadModel('Config');
|
$this->loadModel('Config');
|
||||||
$isZmAuth = $this->Config->find('first',array('conditions' => array('Config.' . $this->Config->primaryKey => 'ZM_OPT_USE_AUTH')))['Config']['Value'];
|
$isZmAuth = $this->Config->find('first',array('conditions' => array('Config.' . $this->Config->primaryKey => 'ZM_OPT_USE_AUTH')))['Config']['Value'];
|
||||||
|
|
||||||
|
@ -52,13 +164,23 @@ class HostController extends AppController {
|
||||||
$credentials = 'user='.$this->Session->read('user.Username');
|
$credentials = 'user='.$this->Session->read('user.Username');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return array($credentials, $appendPassword);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function getCredentials() {
|
||||||
|
// ignore debug warnings from other functions
|
||||||
|
$this->view='Json';
|
||||||
|
$val = $this->_getCredentials();
|
||||||
$this->set(array(
|
$this->set(array(
|
||||||
'credentials'=> $credentials,
|
'credentials'=> $val[0],
|
||||||
'append_password'=>$appendPassword,
|
'append_password'=>$val[1],
|
||||||
'_serialize' => array('credentials', 'append_password')
|
'_serialize' => array('credentials', 'append_password')
|
||||||
) );
|
) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// If $mid is set, only return disk usage for that monitor
|
// If $mid is set, only return disk usage for that monitor
|
||||||
// Else, return an array of total disk usage, and per-monitor
|
// Else, return an array of total disk usage, and per-monitor
|
||||||
// usage.
|
// usage.
|
||||||
|
@ -136,17 +258,17 @@ class HostController extends AppController {
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
function getVersion() {
|
private function _getVersion() {
|
||||||
//throw new UnauthorizedException(__('API Disabled'));
|
|
||||||
$version = Configure::read('ZM_VERSION');
|
$version = Configure::read('ZM_VERSION');
|
||||||
// not going to use the ZM_API_VERSION
|
|
||||||
// requires recompilation and dependency on ZM upgrade
|
|
||||||
//$apiversion = Configure::read('ZM_API_VERSION');
|
|
||||||
$apiversion = '1.0';
|
$apiversion = '1.0';
|
||||||
|
return array($version, $apiversion);
|
||||||
|
}
|
||||||
|
|
||||||
|
function getVersion() {
|
||||||
|
$val = $this->_getVersion();
|
||||||
$this->set(array(
|
$this->set(array(
|
||||||
'version' => $version,
|
'version' => $val[0],
|
||||||
'apiversion' => $apiversion,
|
'apiversion' => $val[1],
|
||||||
'_serialize' => array('version', 'apiversion')
|
'_serialize' => array('version', 'apiversion')
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
|
@ -118,6 +118,7 @@ if ( $action == 'login' && isset($_REQUEST['username']) && ( ZM_AUTH_TYPE == 're
|
||||||
userLogout();
|
userLogout();
|
||||||
$view='login';
|
$view='login';
|
||||||
$refreshParent = true;
|
$refreshParent = true;
|
||||||
|
return;
|
||||||
} else {
|
} else {
|
||||||
//Let them login but show an error
|
//Let them login but show an error
|
||||||
echo '<script type="text/javascript">alert("'.translate('RecaptchaWarning').'"); </script>';
|
echo '<script type="text/javascript">alert("'.translate('RecaptchaWarning').'"); </script>';
|
||||||
|
@ -125,7 +126,6 @@ if ( $action == 'login' && isset($_REQUEST['username']) && ( ZM_AUTH_TYPE == 're
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} // end if success==false
|
} // end if success==false
|
||||||
|
|
||||||
} // end if using reCaptcha
|
} // end if using reCaptcha
|
||||||
|
|
||||||
$username = validStr($_REQUEST['username']);
|
$username = validStr($_REQUEST['username']);
|
||||||
|
|
|
@ -61,7 +61,7 @@ function userLogin($username, $password='', $passwordHashed=false) {
|
||||||
}
|
}
|
||||||
if ( $close_session )
|
if ( $close_session )
|
||||||
session_write_close();
|
session_write_close();
|
||||||
return $user;
|
return isset($user) ? $user: null;
|
||||||
} # end function userLogin
|
} # end function userLogin
|
||||||
|
|
||||||
function userLogout() {
|
function userLogout() {
|
||||||
|
|
|
@ -55,7 +55,7 @@ require_once( 'includes/Monitor.php' );
|
||||||
if (
|
if (
|
||||||
(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')
|
(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')
|
||||||
or
|
or
|
||||||
($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
|
(isset($_SERVER['HTTP_X_FORWARDED_PROTO']) and ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'))
|
||||||
) {
|
) {
|
||||||
$protocol = 'https';
|
$protocol = 'https';
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue