コード例 #1
0
ファイル: update.class.php プロジェクト: GaelGRIFFON/core
 public static function checkAllUpdate($_filter = '', $_findNewObject = true)
 {
     $findCore = false;
     $marketObject = array('logical_id' => array(), 'version' => array());
     if ($_findNewObject) {
         self::findNewUpdateObject();
     }
     $updates = self::all($_filter);
     if (is_array($updates)) {
         foreach (self::all($_filter) as $update) {
             if ($update->getType() == 'core') {
                 if ($findCore) {
                     $update->remove();
                     continue;
                 }
                 $findCore = true;
                 $update->setType('core');
                 $update->setLogicalId('jeedom');
                 if (method_exists('jeedom', 'version')) {
                     $update->setLocalVersion(jeedom::version());
                 } else {
                     $update->setLocalVersion(getVersion('jeedom'));
                 }
                 $update->save();
                 $update->checkUpdate();
             } else {
                 if ($update->getStatus() != 'hold') {
                     $marketObject['logical_id'][] = array('logicalId' => $update->getLogicalId(), 'type' => $update->getType());
                     $marketObject['version'][] = $update->getConfiguration('version', 'stable');
                     $marketObject[$update->getType() . $update->getLogicalId()] = $update;
                 }
             }
         }
     }
     if (!$findCore) {
         $update = new update();
         $update->setType('core');
         $update->setLogicalId('jeedom');
         if (method_exists('jeedom', 'version')) {
             $update->setLocalVersion(jeedom::version());
         } else {
             $update->setLocalVersion(getVersion('jeedom'));
         }
         $update->save();
         $update->checkUpdate();
     }
     $markets_infos = market::getInfo($marketObject['logical_id'], $marketObject['version']);
     foreach ($markets_infos as $logicalId => $market_info) {
         $update = $marketObject[$logicalId];
         if (is_object($update)) {
             $update->setStatus($market_info['status']);
             $update->setConfiguration('market_owner', $market_info['market_owner']);
             $update->setConfiguration('market', $market_info['market']);
             $update->setRemoteVersion($market_info['datetime']);
             $update->save();
         }
     }
     config::save('update::lastCheck', date('Y-m-d H:i:s'));
 }
コード例 #2
0
ファイル: plugin.ajax.php プロジェクト: GaelGRIFFON/core
 */
try {
    require_once dirname(__FILE__) . '/../../core/php/core.inc.php';
    include_file('core', 'authentification', 'php');
    if (!isConnect()) {
        throw new Exception(__('401 - Accès non autorisé', __FILE__));
    }
    if (init('action') == 'getConf') {
        if (!isConnect('admin')) {
            throw new Exception(__('401 - Accès non autorisé', __FILE__));
        }
        $plugin = plugin::byId(init('id'));
        $return = utils::o2a($plugin);
        $return['activate'] = $plugin->isActive();
        $return['configurationPath'] = $plugin->getPathToConfigurationById();
        $return['checkVersion'] = version_compare(jeedom::version(), $plugin->getRequire());
        $return['status'] = market::getInfo(array('logicalId' => $plugin->getId(), 'type' => 'plugin'));
        $return['update'] = utils::o2a(update::byLogicalId($plugin->getId()));
        ajax::success($return);
    }
    if (init('action') == 'toggle') {
        if (!isConnect('admin')) {
            throw new Exception(__('401 - Accès non autorisé', __FILE__));
        }
        $plugin = plugin::byId(init('id'));
        if (!is_object($plugin)) {
            throw new Exception(__('Plugin introuvable : ', __FILE__) . init('id'));
        }
        $plugin->setIsEnable(init('state'));
        ajax::success();
    }
コード例 #3
0
ファイル: jeedom.class.php プロジェクト: GaelGRIFFON/core
 public static function needUpdate($_refresh = false)
 {
     $return = array();
     $return['currentVersion'] = market::getJeedomCurrentVersion($_refresh);
     $return['version'] = jeedom::version();
     if (version_compare($return['currentVersion'], $return['version'], '>')) {
         $return['needUpdate'] = true;
     } else {
         $return['needUpdate'] = false;
     }
     return $return;
 }
コード例 #4
0
ファイル: plugin.class.php プロジェクト: saez0pub/core
 public function setIsEnable($_state)
 {
     if (version_compare(jeedom::version(), $this->getRequire()) == -1 && $_state == 1) {
         throw new Exception('Votre version de jeedom n\'est pas assez récente pour activer ce plugin');
     }
     $alreadyActive = config::byKey('active', $this->getId(), 0);
     if ($_state == 1) {
         if (config::byKey('jeeNetwork::mode') != 'master' && $this->getAllowRemote() != 1) {
             throw new Exception('Vous ne pouvez pas activer ce plugin sur un Jeedom configuré en esclave');
         }
         //market::checkPayment($this->getId());
         config::save('active', $_state, $this->getId());
     }
     if ($_state == 0) {
         $eqLogics = eqLogic::byType($this->getId());
         if (is_array($eqLogics)) {
             foreach ($eqLogics as $eqLogic) {
                 try {
                     $eqLogic->setConfiguration('previousIsEnable', $eqLogic->getIsEnable());
                     $eqLogic->setConfiguration('previousIsVisible', $eqLogic->getIsVisible());
                     $eqLogic->setIsEnable(0);
                     $eqLogic->setIsVisible(0);
                     $eqLogic->save();
                 } catch (Exception $e) {
                 }
             }
         }
         $listeners = listener::byClass($this->getId());
         if (is_array($listeners)) {
             foreach ($listeners as $listener) {
                 $listener->remove();
             }
         }
     }
     if ($alreadyActive == 0 && $_state == 1) {
         foreach (eqLogic::byType($this->getId()) as $eqLogic) {
             try {
                 $eqLogic->setIsEnable($eqLogic->getConfiguration('previousIsEnable', 1));
                 $eqLogic->setIsVisible($eqLogic->getConfiguration('previousIsVisible', 1));
                 $eqLogic->save();
             } catch (Exception $e) {
             }
         }
     }
     try {
         if ($_state == 1) {
             if ($alreadyActive == 1) {
                 $out = $this->callInstallFunction('update');
             } else {
                 $out = $this->callInstallFunction('install');
             }
         } else {
             if ($alreadyActive == 1) {
                 $out = $this->callInstallFunction('remove');
             }
         }
         if (isset($out) && trim($out) != '') {
             log::add($this->getId(), 'info', "Installation/remove/update result : " . $out);
         }
     } catch (Exception $e) {
         config::save('active', $alreadyActive, $this->getId());
         log::add('plugin', 'error', $e->getMessage());
         throw $e;
     }
     if ($_state == 0) {
         config::save('active', $_state, $this->getId());
     }
     return true;
 }
コード例 #5
0
ファイル: index.php プロジェクト: GaelGRIFFON/core
            echo '<li class="cursor"><a id="bt_expertMode" state="0"><i class="fa fa-square-o"></i> {{Mode expert}}</a></li>';
        }
        if (jeedom::isCapable('sudo')) {
            echo '<li class="cursor expertModeVisible"><a id="bt_rebootSystem" state="0"><i class="fa fa-repeat"></i> {{Redémarrer}}</a></li>';
            echo '<li class="cursor expertModeVisible"><a id="bt_haltSystem" state="0"><i class="fa fa-power-off"></i> {{Eteindre}}</a></li>';
        }
    }
    ?>
	<li class="expertModeVisible"><a href="#" id="bt_showEventInRealTime"><i class="fa fa-tachometer"></i> {{Temps réel}}</a></li>
													<li><a href="index.php?v=m"><i class="fa fa-mobile"></i> {{Version mobile}}</a></li>
													<li class="divider"></li>
													<li><a href="index.php?v=d&logout=1"><i class="fa fa-sign-out"></i> {{Se déconnecter}}</a></li>
													<li class="divider"></li>
													<li><a href="#">{{Node JS}} <span class="span_nodeJsState binary red tooltips"></span></a></li>
													<li><a href="#" id="bt_jeedomAbout">{{Version}} v<?php 
    echo jeedom::version();
    ?>
</a></li>
												</ul>
											</li>

											<?php 
    if (network::ehtIsUp()) {
        echo '<li><a href="#"><i class="fa fa-sitemap tooltips" title="{{Connecté en filaire}}"></i></a></li>';
    }
    if (network::wlanIsUp()) {
        $signalStrength = network::signalStrength();
        if ($signalStrength !== '' && $signalStrength >= 0) {
            if ($signalStrength > 80) {
                echo '<li><a href="#"><i class="jeedom2-fdp1-signal5 tooltips" title="{{Connecté en wifi. Signal : ' . $signalStrength . '%}}"></i></a></li>';
            } else {
コード例 #6
0
ファイル: market.class.php プロジェクト: saez0pub/core
 public static function getJsonRpc()
 {
     if (config::byKey('market::address') == '') {
         throw new Exception(__('Aucune addresse n\'est renseignée pour le market', __FILE__));
     }
     if (config::byKey('market::username') != '' && config::byKey('market::password') != '') {
         $params = array('username' => config::byKey('market::username'), 'password' => config::byKey('market::password'), 'password_type' => 'sha1', 'jeedomversion' => jeedom::version(), 'hwkey' => jeedom::getHardwareKey(), 'addrComplement' => config::byKey('externalComplement'), 'information' => array('nbMessage' => message::nbMessage(), 'hardware' => method_exists('jeedom', 'getHardwareName') ? jeedom::getHardwareName() : ''));
         if (config::byKey('market::allowDNS') != 1) {
             $params['addr'] = config::byKey('externalAddr');
             $params['addrProtocol'] = config::byKey('externalProtocol');
             $params['addrPort'] = config::byKey('externalPort');
         }
         $jsonrpc = new jsonrpcClient(config::byKey('market::address') . '/core/api/api.php', '', $params);
     } else {
         $jsonrpc = new jsonrpcClient(config::byKey('market::address') . '/core/api/api.php', '', array('jeedomversion' => jeedom::version(), 'hwkey' => jeedom::getHardwareKey()));
     }
     $jsonrpc->setCb_class('market');
     $jsonrpc->setCb_function('postJsonRpc');
     return $jsonrpc;
 }
コード例 #7
0
ファイル: utils.inc.php プロジェクト: GaelGRIFFON/core
function getVersion($_name)
{
    return jeedom::version();
}
コード例 #8
0
ファイル: jeeApi.php プロジェクト: GaelGRIFFON/core
     }
     if (!file_exists($uploaddir)) {
         mkdir($uploaddir);
     }
     if (!file_exists($uploaddir)) {
         throw new Exception('Repertoire de téléversement non trouvé : ' . $uploaddir);
     }
     $_file = $_FILES['file'];
     $extension = strtolower(strrchr($_file['name'], '.'));
     if (!in_array($extension, array('.tar.gz', '.gz', '.tar'))) {
         throw new Exception('Extension du fichier non valide (autorisé .tar.gz, .tar et .gz) : ' . $extension);
     }
     if (filesize($_file['tmp_name']) > 50000000) {
         throw new Exception('La taille du fichier est trop importante (maximum 50Mo)');
     }
     $bakcup_name = 'backup-' . jeedom::version() . '-' . date("d-m-Y-H\\hi") . '.tar.gz';
     $uploadfile = $uploaddir . '/' . $bakcup_name;
     if (!move_uploaded_file($_file['tmp_name'], $uploadfile)) {
         throw new Exception('Impossible de téléverser le fichier');
     }
     jeedom::restore($uploadfile, true);
     $jsonrpc->makeSuccess('ok');
 }
 if ($jsonrpc->getMethod() == 'jeeNetwork::backup') {
     jeedom::backup(true);
     $jsonrpc->makeSuccess('ok');
 }
 /*             * ************************Log*************************** */
 if ($jsonrpc->getMethod() == 'log::get') {
     $jsonrpc->makeSuccess(log::get($params['log'], $params['start'], $params['nbLine']));
 }
コード例 #9
0
ファイル: install.php プロジェクト: GaelGRIFFON/core
        $logLevel = array('info' => 0, 'debug' => 0, 'event' => 0, 'error' => 1);
        if (init('mode') != 'force') {
            echo "Jeedom est-il installé sur un Rasberry PI ? [o/N] ";
            if (trim(fgets(STDIN)) === 'o') {
                config::save('cronSleepTime', 60);
            }
        } else {
            config::save('cronSleepTime', 60);
        }
        config::save('logLevel', $logLevel);
        echo "OK\n";
        echo 'Installation de socket.io et express (peut etre très long > 30min)';
        echo shell_exec('cd ' . dirname(__FILE__) . '/../core/nodeJS;sudo npm install socket.io;npm install express');
        echo "OK\n";
    }
    config::save('version', jeedom::version());
} catch (Exception $e) {
    if ($update) {
        if ($backup_ok && $update_begin) {
            jeedom::restore();
        }
        jeedom::start();
    }
    echo __('Erreur durant l\'installation : ', __FILE__) . $e->getMessage();
    echo __('Details : ', __FILE__) . print_r($e->getTrace());
    echo "[END UPDATE ERROR]\n";
    throw $e;
}
echo "[END UPDATE SUCCESS]\n";
function incrementVersion($_version)
{
コード例 #10
0
ファイル: show.log.msg.php プロジェクト: bobox59/arduidom
 * Jeedom 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 Jeedom. If not, see <http://www.gnu.org/licenses/>.
 */
if (!isConnect('admin')) {
    throw new Exception('401 Unauthorized');
}
//if (config::byKey('enableLogging', 'arduidom', 0) == 0) {
//    echo '<div class="alert alert-danger">{{Vous n\'avez pas activé l\'enregistrement de tous les messages : allez dans Générale -> Plugin puis rfxcom et coché la case correspondante}}</div>';
//}
if (arduidom::get_daemon_mode() != "OK") {
    if (substr(jeedom::version(), 0, 1) == 2) {
        event::add('jeedom::alert', array('level' => 'error', 'message' => __("Action Impossible : Le démon ne fonctionne pas !", __FILE__)));
    }
}
?>


<pre id='pre_ardulog' style='overflow: auto; height: 95%;width:90%;'></pre>


<script>
    getArduLog(1);

    function getArduLog(_autoUpdate) {
        $.ajax({
            type: 'POST',
コード例 #11
0
ファイル: arduidom.class.php プロジェクト: bobox59/arduidom
 public static function sendtoArduino($_tcpmsg, $_AID)
 {
     $General_Debug = config::byKey('generalDebug', 'arduidom', 0, true);
     if ($_AID == 0) {
         $General_Debug = 0;
     }
     // Pas de log sur démon direct, trop bavard...
     if ($General_Debug) {
         log::add('arduidom', 'debug', "^--------------------------------------------------------------------------------------");
     }
     if ($General_Debug) {
         log::add('arduidom', 'debug', 'sendtoArduino(' . $_tcpmsg . ',' . $_AID . ') called');
     }
     $func_start_time = getmicrotime(true);
     $daemonmode = self::get_daemon_mode();
     if ($daemonmode == "FLASHING") {
         log::add("arduidom", "debug", "sendtoArduino impossible, arduino en cours de flashage...");
         return "DAEMON_NOT_OK";
     }
     $port = config::byKey('A' . $_AID . '_port', 'arduidom', 'none', true);
     $ip = config::byKey('A' . $_AID . '_daemonip', 'arduidom', '127.0.0.1', true);
     if ($port != 'none' && $port != "" || $_AID == 0) {
         if (file_exists($port) || $port == 'Network' || $_AID == 0) {
             if ($port != 'Network') {
                 //if ($General_Debug) log::add('arduidom', 'debug', 'Le démon ' . $_AID . ' est un démon python');
                 if ($General_Debug) {
                     log::add('arduidom', 'debug', 'IP: ' . $ip . ":" . (58200 + intval($_AID)));
                 }
                 $fp = fsockopen($ip, 58200 + intval($_AID), $errno, $errstr, 10);
             } else {
                 //if ($General_Debug) log::add('arduidom', 'debug', 'Le démon ' . $_AID . ' est un arduino Réseau (IP:' . $ip . ")");
                 if ($General_Debug) {
                     log::add('arduidom', 'debug', 'IP: ' . $ip . ":58174");
                 }
                 $fp = fsockopen($ip, 58174, $errno, $errstr, 1);
             }
             if (!$fp) {
                 if ($_AID == 0) {
                     log::add('arduidom', 'error', "Le démon " . $_AID . " n'est pas connecté ! (errstr:" . $errstr . ")");
                     if ($General_Debug) {
                         log::add('arduidom', 'debug', "v--------------------------------------------------------------------------------------");
                     }
                 } else {
                     log::add('arduidom', 'error', "L'Arduino " . $_AID . " n'est pas connecté ! (errstr:" . $errstr . ")");
                     if ($General_Debug) {
                         log::add('arduidom', 'debug', "v--------------------------------------------------------------------------------------");
                     }
                 }
                 return $errstr;
             } else {
                 stream_set_timeout($fp, 10);
                 if ($_AID == 0) {
                     if ($General_Debug) {
                         log::add('arduidom', 'debug', "Le démon " . $_AID . " est connecté, envoi...");
                     }
                 } else {
                     if ($General_Debug) {
                         log::add('arduidom', 'debug', "L'Arduino " . $_AID . " est connecté, envoi...");
                     }
                 }
                 if ($port == "Network") {
                     $_tcpmsg = $_tcpmsg . "\n";
                 }
                 // ajout d'une fin de ligne pour shield ethernet
                 fwrite($fp, $_tcpmsg);
                 $start_time = time();
                 $resp = "";
                 if ($port == "Network") {
                     if ($General_Debug) {
                         log::add('arduidom', 'debug', "Attente de la réponse de l'arduino " . $_AID . " ...");
                     }
                     while (!feof($fp)) {
                         $resp = $resp . fgets($fp);
                         if (time() - $start_time > 10) {
                             // Time out de 10 secondes pour le check du démon
                             log::add('arduidom', 'error', "Erreur: TIMEOUT sur attente de réponse de l'arduino " . $_AID);
                             if (substr(jeedom::version(), 0, 1) == 2) {
                                 event::add('jeedom::alert', array('level' => 'error', 'message' => __("Erreur: TIMEOUT sur attente de réponse de l'arduino " . $_AID, __FILE__)));
                             }
                             if ($General_Debug) {
                                 log::add('arduidom', 'debug', "v--------------------------------------------------------------------------------------");
                             }
                             return "TIMEOUT";
                         }
                     }
                     $resp = str_replace("\r", '', $resp);
                     $resp = str_replace("\n", '', $resp);
                     if ($General_Debug) {
                         log::add('arduidom', 'debug', 'Réponse TCP recue = ' . $resp);
                     }
                     if (time() - $start_time > 10) {
                         // Time out de 10 secondes pour le check du démon
                         log::add('arduidom', 'error', "Erreur: TIMEOUT sur Réponse de l'arduino " . $_AID);
                         if (substr(jeedom::version(), 0, 1) == 2) {
                             event::add('jeedom::alert', array('level' => 'error', 'message' => __("Erreur: TIMEOUT sur Réponse de l'arduino " . $_AID, __FILE__)));
                         }
                         if ($General_Debug) {
                             log::add('arduidom', 'debug', "v--------------------------------------------------------------------------------------");
                         }
                         return "TIMEOUT";
                     }
                     fclose($fp);
                 } else {
                     while (!feof($fp)) {
                         $resp = fgets($fp);
                         $_tcpmsg = str_replace("\n", '', $_tcpmsg);
                         if ($General_Debug) {
                             log::add('arduidom', 'debug', '$_tcpmsg=' . $_tcpmsg);
                         }
                         if (time() - $start_time > 10) {
                             // Time out de 10 secondes pour le check du démon
                             log::add('arduidom', 'error', "Erreur: TIMEOUT sur Réponse du démon " . $_AID);
                             if ($General_Debug) {
                                 log::add('arduidom', 'debug', "v--------------------------------------------------------------------------------------");
                             }
                             return "TIMEOUT";
                         }
                     }
                     fclose($fp);
                 }
                 $elapsed_time = getmicrotime(true) - $func_start_time;
                 $elapsed_time = $elapsed_time * 1000;
                 $elapsed_time = number_format($elapsed_time, 1, '.', '') . " ms";
                 if ($General_Debug) {
                     log::add('arduidom', 'debug', 'sendtoArduino(' . $_tcpmsg . ',' . $_AID . ') reply [' . $resp . '] takes ' . $elapsed_time);
                 }
                 if ($General_Debug) {
                     log::add('arduidom', 'debug', "v--------------------------------------------------------------------------------------");
                 }
                 return $resp;
             }
         } else {
             log::add('arduidom', 'error', __('Le port Arduino (' . $port . ')est vide ou n\'existe pas', __FILE__), 'noArduinoComPort');
             if ($General_Debug) {
                 log::add('arduidom', 'debug', "v--------------------------------------------------------------------------------------");
             }
             return "BAD_CONFIG";
         }
     }
     if ($General_Debug) {
         log::add('arduidom', 'debug', "sendtoarduino return EMPTY");
     }
     if ($General_Debug) {
         log::add('arduidom', 'debug', "v--------------------------------------------------------------------------------------");
     }
     return "EMPTY";
 }