]> _ Git - tortuga-home.git/commitdiff
.
authorVincent <vincent@enhydra.fr>
Tue, 9 Jul 2019 07:30:40 +0000 (09:30 +0200)
committerVincent <vincent@enhydra.fr>
Tue, 9 Jul 2019 07:30:40 +0000 (09:30 +0200)
.idea/workspace.xml
scripts/lib/lib.php
scripts/lib/redis.php
scripts/lib/ssh.php [new file with mode: 0644]
servers/cron.php
servers/domoticz.php
servers/insteon.php
servers/ssh.php

index 975a45af4a77e5c03395eed65c222d9b8e75da5d..99a77062e34007a7d8f5daccfac5b2619afe7244 100644 (file)
@@ -2,31 +2,14 @@
 <project version="4">
   <component name="ChangeListManager">
     <list default="true" id="352ce63a-b52a-41a2-979b-becda7920939" name="Default" comment=".">
-      <change beforePath="$PROJECT_DIR$/.idea/deployment.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/deployment.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/home.iml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/home.iml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/php.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/php.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/webServers.xml" beforeDir="false" />
+      <change afterPath="$PROJECT_DIR$/scripts/lib/ssh.php" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/composer.json" beforeDir="false" afterPath="$PROJECT_DIR$/composer.json" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/composer.lock" beforeDir="false" afterPath="$PROJECT_DIR$/composer.lock" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/config/media.php" beforeDir="false" afterPath="$PROJECT_DIR$/config/media.php" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/config/music.php" beforeDir="false" afterPath="$PROJECT_DIR$/config/music.php" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/config/tv.php" beforeDir="false" afterPath="$PROJECT_DIR$/config/tv.php" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/scripts/cron/cron.php" beforeDir="false" afterPath="$PROJECT_DIR$/scripts/cron/cron.php" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/scripts/lib/domoticz.php" beforeDir="false" afterPath="$PROJECT_DIR$/scripts/lib/domoticz.php" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/scripts/lib/insteon.php" beforeDir="false" afterPath="$PROJECT_DIR$/scripts/lib/insteon.php" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/scripts/lib/lib.php" beforeDir="false" afterPath="$PROJECT_DIR$/scripts/lib/lib.php" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/scripts/lib/medialibrary.php" beforeDir="false" afterPath="$PROJECT_DIR$/scripts/lib/medialibrary.php" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/scripts/lib/mediarasp.php" beforeDir="false" afterPath="$PROJECT_DIR$/scripts/lib/mediarasp.php" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/scripts/lib/redis.php" beforeDir="false" afterPath="$PROJECT_DIR$/scripts/lib/redis.php" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/scripts/lib/state.php" beforeDir="false" afterPath="$PROJECT_DIR$/scripts/lib/state.php" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/scripts/lib/tmdb.php" beforeDir="false" afterPath="$PROJECT_DIR$/scripts/lib/tmdb.php" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/scripts/sections.php" beforeDir="false" afterPath="$PROJECT_DIR$/scripts/sections.php" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/scripts/seen.php" beforeDir="false" afterPath="$PROJECT_DIR$/scripts/seen.php" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/servers/cron.php" beforeDir="false" afterPath="$PROJECT_DIR$/servers/cron.php" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/servers/domoticz.php" beforeDir="false" afterPath="$PROJECT_DIR$/servers/domoticz.php" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/servers/insteon.php" beforeDir="false" afterPath="$PROJECT_DIR$/servers/insteon.php" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/servers/startdaemon" beforeDir="false" afterPath="$PROJECT_DIR$/servers/startdaemon" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/servers/stopdaemon" beforeDir="false" afterPath="$PROJECT_DIR$/servers/stopdaemon" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/servers/ssh.php" beforeDir="false" afterPath="$PROJECT_DIR$/servers/ssh.php" afterDir="false" />
     </list>
     <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
     <option name="SHOW_DIALOG" value="false" />
   </component>
   <component name="FileEditorManager">
     <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
-      <file pinned="false" current-in-tab="false">
+      <file pinned="false" current-in-tab="true">
         <entry file="file://$PROJECT_DIR$/servers/insteon.php">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="113">
-              <caret line="13" selection-start-line="13" selection-end-line="14" selection-end-column="37" />
+            <state relative-caret-position="204">
+              <caret line="24" column="22" selection-start-line="24" selection-start-column="22" selection-end-line="24" selection-end-column="22" />
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/servers/startdaemon">
+        <entry file="file://$PROJECT_DIR$/servers/domoticz.php">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="17">
-              <caret line="1" column="43" lean-forward="true" selection-start-line="1" selection-start-column="43" selection-end-line="1" selection-end-column="43" />
+            <state relative-caret-position="-183">
+              <caret line="14" column="59" selection-start-line="14" selection-start-column="59" selection-end-line="14" selection-end-column="59" />
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/servers/stopdaemon">
+        <entry file="file://$PROJECT_DIR$/servers/ssh.php">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="34">
-              <caret line="2" column="11" lean-forward="true" selection-start-line="2" selection-start-column="11" selection-end-line="2" selection-end-column="11" />
+            <state relative-caret-position="293">
+              <caret line="32" column="47" selection-start-line="32" selection-start-column="47" selection-end-line="32" selection-end-column="47" />
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/vendor/predis/predis/src/Client.php">
+        <entry file="file://$PROJECT_DIR$/servers/cron.php">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="220">
-              <caret line="384" column="20" lean-forward="true" selection-start-line="384" selection-start-column="20" selection-end-line="384" selection-end-column="20" />
+            <state relative-caret-position="85">
+              <caret line="5" column="25" selection-start-line="5" selection-start-column="25" selection-end-line="5" selection-end-column="25" />
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/config/tv.php">
+        <entry file="file://$PROJECT_DIR$/scripts/lib/lib.php">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="255">
-              <caret line="15" selection-start-line="15" selection-end-line="15" />
+            <state relative-caret-position="-1826">
+              <caret line="375" selection-start-line="375" selection-end-line="375" />
             </state>
           </provider>
         </entry>
       </file>
-      <file pinned="false" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/servers/domoticz.php">
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/scripts/lib/ssh.php">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="594">
-              <caret line="41" column="28" selection-start-line="41" selection-start-column="28" selection-end-line="41" selection-end-column="28" />
+            <state relative-caret-position="211">
+              <caret line="42" column="101" selection-start-line="42" selection-start-column="101" selection-end-line="42" selection-end-column="101" />
             </state>
           </provider>
         </entry>
       <file pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/scripts/lib/insteon.php">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="594">
-              <caret line="44" column="4" selection-start-line="44" selection-start-column="4" selection-end-line="44" selection-end-column="52" />
+            <state relative-caret-position="197">
+              <caret line="37" selection-start-line="37" selection-end-line="44" selection-end-column="52" />
             </state>
           </provider>
         </entry>
       <file pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/scripts/lib/redis.php">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="407">
-              <caret line="46" column="17" selection-start-line="46" selection-start-column="17" selection-end-line="46" selection-end-column="17" />
+            <state relative-caret-position="306">
+              <caret line="57" column="45" selection-start-line="57" selection-start-column="45" selection-end-line="57" selection-end-column="45" />
+              <folding>
+                <element signature="e#7#25#0#PHP" expanded="true" />
+              </folding>
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/scripts/lib/domoticz.php">
+        <entry file="file://$PROJECT_DIR$/scripts/lib/tmdb.php">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="119">
-              <caret line="7" column="1" lean-forward="true" selection-start-line="7" selection-start-column="1" selection-end-line="7" selection-end-column="1" />
+            <state relative-caret-position="143">
+              <caret line="142" selection-start-line="142" selection-end-line="142" />
             </state>
           </provider>
         </entry>
   </component>
   <component name="FindInProjectRecents">
     <findStrings>
-      <find>#mask</find>
       <find>hideMaskTimeout</find>
       <find>bureau/plasma/on</find>
       <find>#mas</find>
       <find>connectRedis()</find>
       <find>setex(</find>
       <find>set_time_limit</find>
+      <find>ssh</find>
     </findStrings>
     <replaceStrings>
       <replace />
   <component name="IdeDocumentHistory">
     <option name="CHANGED_PATHS">
       <list>
-        <option value="$PROJECT_DIR$/scripts/domoticz_device_event.php" />
-        <option value="$PROJECT_DIR$/js/home.js" />
         <option value="$PROJECT_DIR$/config/bureau.php" />
         <option value="$PROJECT_DIR$/config/chambre.php" />
         <option value="$PROJECT_DIR$/config/cuisine.php" />
         <option value="$PROJECT_DIR$/scripts/lib/jarvis.php" />
         <option value="$PROJECT_DIR$/tools/jarvis/console.php" />
         <option value="$PROJECT_DIR$/tools/jarvis/commands" />
-        <option value="$PROJECT_DIR$/servers/ssh.php" />
         <option value="$APPLICATION_CONFIG_DIR$/Composer Log/Composer Log.composerLog" />
         <option value="$PROJECT_DIR$/composer.json" />
         <option value="$PROJECT_DIR$/config/media.php" />
         <option value="$PROJECT_DIR$/config/music.php" />
         <option value="$PROJECT_DIR$/scripts/sections.php" />
         <option value="$PROJECT_DIR$/scripts/seen.php" />
-        <option value="$PROJECT_DIR$/scripts/lib/lib.php" />
         <option value="$PROJECT_DIR$/scripts/lib/medialibrary.php" />
         <option value="$PROJECT_DIR$/scripts/lib/mediarasp.php" />
         <option value="$PROJECT_DIR$/scripts/lib/state.php" />
         <option value="$PROJECT_DIR$/scripts/lib/tmdb.php" />
         <option value="$PROJECT_DIR$/scripts/cron/cron.php" />
-        <option value="$PROJECT_DIR$/scripts/lib/insteon.php" />
         <option value="$PROJECT_DIR$/config/tv.php" />
-        <option value="$PROJECT_DIR$/scripts/lib/redis.php" />
-        <option value="$PROJECT_DIR$/servers/insteon.php" />
         <option value="$PROJECT_DIR$/servers/startdaemon" />
         <option value="$PROJECT_DIR$/servers/stopdaemon" />
         <option value="$PROJECT_DIR$/scripts/lib/domoticz.php" />
         <option value="$PROJECT_DIR$/servers/domoticz.php" />
+        <option value="$PROJECT_DIR$/scripts/lib/redis.php" />
+        <option value="$PROJECT_DIR$/servers/cron.php" />
+        <option value="$PROJECT_DIR$/scripts/lib/lib.php" />
+        <option value="$PROJECT_DIR$/scripts/lib/insteon.php" />
+        <option value="$PROJECT_DIR$/scripts/lib/ssh.php" />
+        <option value="$PROJECT_DIR$/servers/ssh.php" />
+        <option value="$PROJECT_DIR$/servers/insteon.php" />
       </list>
     </option>
   </component>
       <path value="$PROJECT_DIR$/vendor/predis/predis" />
     </include_path>
   </component>
-  <component name="ProjectFrameBounds" extendedState="6">
-    <option name="x" value="121" />
-    <option name="y" value="79" />
+  <component name="ProjectFrameBounds">
+    <option name="x" value="1233" />
+    <option name="y" value="102" />
     <option name="width" value="1436" />
     <option name="height" value="771" />
   </component>
     </navigator>
     <panes>
       <pane id="PackagesPane" />
-      <pane id="Scope" />
       <pane id="ProjectPane">
         <subPane>
           <expand>
           <select />
         </subPane>
       </pane>
+      <pane id="Scope" />
     </panes>
   </component>
   <component name="PropertiesComponent">
       <workItem from="1562139612183" duration="879000" />
       <workItem from="1562187458066" duration="10928000" />
       <workItem from="1562315270549" duration="3917000" />
-      <workItem from="1562430904715" duration="18310000" />
-    </task>
-    <task id="LOCAL-00143" summary=".">
-      <created>1550049045334</created>
-      <option name="number" value="00143" />
-      <option name="presentableId" value="LOCAL-00143" />
-      <option name="project" value="LOCAL" />
-      <updated>1550049045334</updated>
+      <workItem from="1562430904715" duration="18334000" />
+      <workItem from="1562654595102" duration="2716000" />
     </task>
     <task id="LOCAL-00144" summary=".">
       <created>1550049087023</created>
       <option name="project" value="LOCAL" />
       <updated>1562482720839</updated>
     </task>
-    <option name="localTasksCounter" value="192" />
+    <task id="LOCAL-00192" summary=".">
+      <created>1562618964460</created>
+      <option name="number" value="00192" />
+      <option name="presentableId" value="LOCAL-00192" />
+      <option name="project" value="LOCAL" />
+      <updated>1562618964460</updated>
+    </task>
+    <option name="localTasksCounter" value="193" />
     <servers />
   </component>
   <component name="TimeTrackingManager">
-    <option name="totallyTimeSpent" value="1254870000" />
+    <option name="totallyTimeSpent" value="1257610000" />
   </component>
   <component name="TodoView">
     <todo-panel id="selected-file">
     </todo-panel>
   </component>
   <component name="ToolWindowManager">
-    <frame x="-8" y="-8" width="2576" height="1056" extended-state="6" />
+    <frame x="1233" y="102" width="1436" height="771" extended-state="0" />
+    <editor active="true" />
     <layout>
       <window_info id="Nl-Palette" order="0" />
       <window_info id="Image Layers" order="1" />
       <window_info id="Designer" order="3" />
       <window_info id="UI Designer" order="4" />
       <window_info id="Favorites" order="5" sideWeight="0.4576547" side_tool="true" weight="0.22506666" />
-      <window_info active="true" content_ui="combo" id="Project" order="6" sideWeight="0.49456522" visible="true" weight="0.21979332" />
+      <window_info active="true" content_ui="combo" id="Project" order="6" sideWeight="0.49456522" visible="true" weight="0.22311047" />
       <window_info anchor="bottom" id="Message" order="0" />
       <window_info anchor="bottom" id="Find" order="1" sideWeight="0.48251194" visible="true" weight="0.30444205" />
       <window_info anchor="bottom" id="Run" order="2" sideWeight="0.4674086" weight="0.3217768" />
       <window_info anchor="bottom" id="TODO" order="6" sideWeight="0.49920508" weight="0.32936078" />
       <window_info anchor="bottom" id="Version Control" order="7" sideWeight="0.49801272" weight="0.32936078" />
       <window_info anchor="bottom" id="Terminal" order="8" sideWeight="0.44395867" weight="0.2383532" />
-      <window_info anchor="bottom" id="File Transfer" order="9" sideWeight="0.43759936" weight="0.2524377" />
+      <window_info anchor="bottom" id="File Transfer" order="9" sideWeight="0.43759936" visible="true" weight="0.2523511" />
       <window_info anchor="bottom" id="Database Changes" order="10" show_stripe_button="false" />
       <window_info anchor="bottom" id="Docker" order="11" show_stripe_button="false" />
       <window_info anchor="bottom" id="Messages" order="12" />
       <window_info anchor="right" id="Palette&#9;" order="7" />
       <window_info anchor="right" id="Capture Analysis" order="8" />
       <window_info anchor="right" id="Theme Preview" order="9" />
-      <window_info anchor="right" id="Remote Host" order="10" sideWeight="0.48598132" visible="true" weight="0.0918124" />
+      <window_info anchor="right" id="Remote Host" order="10" sideWeight="0.48427674" visible="true" weight="0.09156977" />
       <window_info anchor="right" id="SciView" order="11" weight="0.3298887" />
-      <window_info anchor="right" id="Structure" order="12" sideWeight="0.5140187" side_tool="true" visible="true" weight="0.0918124" />
+      <window_info anchor="right" id="Structure" order="12" sideWeight="0.5157233" side_tool="true" visible="true" weight="0.09156977" />
       <window_info anchor="right" id="Data View" order="13" />
       <window_info anchor="right" id="Maven" order="14" />
     </layout>
     <option name="FILTER_TARGETS" value="false" />
   </component>
   <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/servers/stopdaemon.php" />
-    <entry file="file://$PROJECT_DIR$/servers/_startdaemon.php">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="85">
-          <caret line="5" column="6" selection-start-line="5" selection-start-column="1" selection-end-line="5" selection-end-column="6" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/servers/stopserver">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="51">
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/servers/ssh.php">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="391">
-          <caret line="23" selection-start-line="23" selection-end-line="23" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/composer.json">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="170">
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/scripts/lib/lib.php">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="205">
-          <caret line="176" column="23" selection-start-line="176" selection-start-column="23" selection-end-line="176" selection-end-column="23" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/scripts/lib/mediarasp.php">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="198">
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/scripts/lib/tmdb.php">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="2136">
-          <caret line="495" column="75" selection-start-line="495" selection-start-column="75" selection-end-line="495" selection-end-column="75" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/servers/cron.php">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="85">
-          <caret line="5" column="14" selection-start-line="5" selection-end-line="5" selection-end-column="14" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/scripts/import.php">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="153">
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/scripts/lib/insteon.php">
+    <entry file="file://$PROJECT_DIR$/servers/startdaemon">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="17">
+          <caret line="1" column="43" selection-start-line="1" selection-start-column="43" selection-end-line="1" selection-end-column="43" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/servers/stopdaemon">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="594">
-          <caret line="44" column="4" selection-start-line="44" selection-start-column="4" selection-end-line="44" selection-end-column="52" />
+        <state relative-caret-position="34">
+          <caret line="2" column="11" selection-start-line="2" selection-start-column="11" selection-end-line="2" selection-end-column="11" />
         </state>
       </provider>
     </entry>
     <entry file="file://$PROJECT_DIR$/vendor/predis/predis/src/Client.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="220">
-          <caret line="384" column="20" lean-forward="true" selection-start-line="384" selection-start-column="20" selection-end-line="384" selection-end-column="20" />
+        <state relative-caret-position="6171">
+          <caret line="384" column="20" selection-start-line="384" selection-start-column="20" selection-end-line="384" selection-end-column="20" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/scripts/lib/domoticz.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="119">
+          <caret line="7" column="1" selection-start-line="7" selection-start-column="1" selection-end-line="7" selection-end-column="1" />
         </state>
       </provider>
     </entry>
         </state>
       </provider>
     </entry>
+    <entry file="file://$PROJECT_DIR$/scripts/lib/server.php">
+      <provider selected="true" editor-type-id="text-editor" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/scripts/lib/tmdb.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="143">
+          <caret line="142" selection-start-line="142" selection-end-line="142" />
+        </state>
+      </provider>
+    </entry>
     <entry file="file://$PROJECT_DIR$/scripts/lib/redis.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="407">
-          <caret line="46" column="17" selection-start-line="46" selection-start-column="17" selection-end-line="46" selection-end-column="17" />
+        <state relative-caret-position="306">
+          <caret line="57" column="45" selection-start-line="57" selection-start-column="45" selection-end-line="57" selection-end-column="45" />
+          <folding>
+            <element signature="e#7#25#0#PHP" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/servers/startdaemon">
+    <entry file="file://$PROJECT_DIR$/servers/cron.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="17">
-          <caret line="1" column="43" lean-forward="true" selection-start-line="1" selection-start-column="43" selection-end-line="1" selection-end-column="43" />
+        <state relative-caret-position="85">
+          <caret line="5" column="25" selection-start-line="5" selection-start-column="25" selection-end-line="5" selection-end-column="25" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/servers/stopdaemon">
+    <entry file="file://$PROJECT_DIR$/servers/domoticz.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="34">
-          <caret line="2" column="11" lean-forward="true" selection-start-line="2" selection-start-column="11" selection-end-line="2" selection-end-column="11" />
+        <state relative-caret-position="-183">
+          <caret line="14" column="59" selection-start-line="14" selection-start-column="59" selection-end-line="14" selection-end-column="59" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/scripts/lib/domoticz.php">
+    <entry file="file://$PROJECT_DIR$/scripts/lib/lib.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="119">
-          <caret line="7" column="1" lean-forward="true" selection-start-line="7" selection-start-column="1" selection-end-line="7" selection-end-column="1" />
+        <state relative-caret-position="-1826">
+          <caret line="375" selection-start-line="375" selection-end-line="375" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/servers/insteon.php">
+    <entry file="file://$PROJECT_DIR$/scripts/lib/insteon.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="113">
-          <caret line="13" selection-start-line="13" selection-end-line="14" selection-end-column="37" />
+        <state relative-caret-position="197">
+          <caret line="37" selection-start-line="37" selection-end-line="44" selection-end-column="52" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/servers/domoticz.php">
+    <entry file="file://$PROJECT_DIR$/scripts/lib/ssh.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="211">
+          <caret line="42" column="101" selection-start-line="42" selection-start-column="101" selection-end-line="42" selection-end-column="101" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/servers/ssh.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="293">
+          <caret line="32" column="47" selection-start-line="32" selection-start-column="47" selection-end-line="32" selection-end-column="47" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/servers/insteon.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="594">
-          <caret line="41" column="28" selection-start-line="41" selection-start-column="28" selection-end-line="41" selection-end-column="28" />
+        <state relative-caret-position="204">
+          <caret line="24" column="22" selection-start-line="24" selection-start-column="22" selection-end-line="24" selection-end-column="22" />
         </state>
       </provider>
     </entry>
index 927961bbddf46b30f5b16db19f9b65ef8b7fe9b0..de1c541cd2cf7b231dc66110f69c6efbf6777c4b 100644 (file)
@@ -38,6 +38,7 @@ require_once ROOT . '/scripts/lib/velib.php';
 require_once ROOT . '/scripts/lib/traffic.php';
 require_once ROOT . '/scripts/lib/medialibrary.php';
 require_once ROOT . '/scripts/lib/heartbeats.php';
+require_once ROOT . '/scripts/lib/ssh.php';
 
 
 profile('Loaded libraries', __FILE__, __LINE__);
@@ -373,57 +374,6 @@ function ping($ip, $timeout = 5, $port = 1817)
     return $res;
 }
 
-function getSSHInstance($device = null, $sudo = false)
-{
-    global $ssh, $devices;
-    if (!isset($ssh)) {
-        $ssh = [];
-    }
-
-    if (null === $device) {
-        $device = getCurrentConfig();
-    }
-
-    if (!isset($ssh[$device])) {
-        if (!isset($devices[$device])) {
-            $ssh[$device] = false;
-        } else {
-            $d = $devices[$device];
-            $user = $sudo ? 'root' : $d['user'];
-            //if (getState('device_' . $device . '_awake') == '1') {
-            $ssh[$device] = ssh2_connect($d['host'], 22);
-            if ($ssh[$device]) {
-                if (!ssh2_auth_password($ssh[$device], $user, $d['password'])) {
-                    $ssh[$device] = false;
-                }
-                       } else {
-                               $ssh[$device] = false;
-                       }
-        }
-    }
-    return $ssh[$device];
-}
-
-function sshCommand($command, $device = null, $blocking = true, $sudo = false)
-{
-    $ssh = getSSHInstance($device, $sudo);
-    if ($ssh) {
-        $stream = ssh2_exec($ssh, $command);
-        $errorStream = ssh2_fetch_stream($stream, SSH2_STREAM_STDERR);
-
-        stream_set_blocking($errorStream, $blocking);
-        stream_set_blocking($stream, $blocking);
-
-        $res = array('cmd' => $command, 'device' => $device, 'output' => trim(stream_get_contents($stream)), 'error' => stream_get_contents($errorStream));
-        // Close the streams
-        fclose($errorStream);
-        fclose($stream);
-    } else {
-        $res = array('cmd' => $command, 'device' => $device, 'error' => 'no device');
-    }
-    return $res;
-}
-
 function volume($volume, $increase = '')
 {
     $d = config('VOLUME_DEVICE');
index 0fed9edc1b0f0eddd9670778bf2db9234037579e..a5540a9aa65669dc686dae83d43e3d6574b9de6e 100644 (file)
@@ -1,30 +1,37 @@
 <?php
 
 use Predis\Client;
+use Predis\PubSub\DispatcherLoop;
 
 
 class StringSetIb
-    extends Predis\Command\StringSet {
+    extends Predis\Command\StringSet
+{
 
-    protected function filterArguments(Array $arguments) {
+    protected function filterArguments(Array $arguments)
+    {
         $arguments[1] = igbinary_serialize($arguments[1]);
         return $arguments;
     }
 }
 
 class StringSetexIb
-    extends Predis\Command\StringSetExpire {
+    extends Predis\Command\StringSetExpire
+{
 
-    protected function filterArguments(Array $arguments) {
+    protected function filterArguments(Array $arguments)
+    {
         $arguments[2] = igbinary_serialize($arguments[2]);
         return $arguments;
     }
 }
 
 class StringGetIb
-    extends Predis\Command\StringGet {
+    extends Predis\Command\StringGet
+{
 
-    public function parseResponse($data) {
+    public function parseResponse($data)
+    {
         return igbinary_unserialize($data);
     }
 }
@@ -34,20 +41,21 @@ class StringGetIb
  */
 function connectRedis()
 {
-       global $redis;
+    global $redis;
 
-       if (!isset($redis)) {
-           $redis=getRedisClient();
+    if (!isset($redis)) {
+        $redis = getRedisClient();
 
-       }
-       return $redis;
+    }
+    return $redis;
 }
 
 /**
  * @return Client
  */
-function getRedisClient(){
-    $redis=new Client();
+function getRedisClient()
+{
+    $redis = new Client('tcp://127.0.0.1:6379?read_write_timeout=0');
     $profile = $redis->getProfile();
 
     // If you want, you can override SET or GET just like any other command, but I
@@ -59,3 +67,36 @@ function getRedisClient(){
     return $redis;
 }
 
+function redisEventListener($channel, $callback)
+{
+    $pubsubRedis = getRedisClient();
+    $pubsub = $pubsubRedis->pubSubLoop();
+    // Create a dispatcher loop instance and attach a bunch of callbacks.
+    $dispatcher = new Predis\PubSub\DispatcherLoop($pubsub);
+
+    $dispatcher->attachCallback($channel, $events = new class($callback)
+    {
+        protected $_callback;
+
+        public function __construct($callback)
+        {
+            $this->_callback = $callback;
+        }
+
+        public function __invoke($payload)
+        {
+            if ($payload == 'handle_queue') {
+                call_user_func($this->_callback);
+            }
+        }
+    }
+    );
+    try {
+        echo 'Run dispatcher';
+        $dispatcher->run();
+    } catch (Exception $e) {
+        echo 'Error while running dispatcher : ' . $e->getMessage();
+        redisEventListener($channel, $callback);
+    }
+}
+
diff --git a/scripts/lib/ssh.php b/scripts/lib/ssh.php
new file mode 100644 (file)
index 0000000..04b064c
--- /dev/null
@@ -0,0 +1,66 @@
+<?php
+
+function getSSHInstance($device = null, $sudo = false)
+{
+    global $ssh, $devices;
+    if (!isset($ssh)) {
+        $ssh = [];
+    }
+
+    if (null === $device) {
+        $device = getCurrentConfig();
+    }
+
+    $instance_key = $device . ($sudo ? '_sudo' : '');
+
+    if (!isset($ssh[$instance_key])) {
+        if (!isset($devices[$device])) {
+            $ssh[$instance_key] = false;
+        } else {
+            $d = $devices[$device];
+            $user = $sudo ? 'root' : $d['user'];
+            //if (getState('device_' . $device . '_awake') == '1') {
+            $ssh[$instance_key] = ssh2_connect($d['host'], 22);
+            if ($ssh[$instance_key]) {
+                if (!ssh2_auth_password($ssh[$instance_key], $user, $d['password'])) {
+                    $ssh[$instance_key] = false;
+                }
+            } else {
+                $ssh[$instance_key] = false;
+            }
+        }
+    }
+    return $ssh[$device];
+}
+
+function sshCommand($command, $device = null, $blocking = true, $sudo = false)
+{
+    $redis = connectRedis();
+    $queue = $redis->get('ssh_queue');
+    if (!is_array($queue)) {
+        $queue = [];
+    }
+    $queue[] = ['command' => $command, 'device' => $device, 'blocking' => $blocking, 'sudo' => $sudo];
+    $redis->igbset('ssh_queue', $queue);
+    $redis->publish('ssh_event', 'handle_queue');
+}
+
+function sshRunCommand($command, $device = null, $blocking = true, $sudo = false)
+{
+    $ssh = getSSHInstance($device, $sudo);
+    if ($ssh) {
+        $stream = ssh2_exec($ssh, $command);
+        $errorStream = ssh2_fetch_stream($stream, SSH2_STREAM_STDERR);
+
+        stream_set_blocking($errorStream, $blocking);
+        stream_set_blocking($stream, $blocking);
+
+        $res = array('cmd' => $command, 'device' => $device, 'output' => trim(stream_get_contents($stream)), 'error' => stream_get_contents($errorStream));
+        // Close the streams
+        fclose($errorStream);
+        fclose($stream);
+    } else {
+        $res = array('cmd' => $command, 'device' => $device, 'error' => 'no device');
+    }
+    return $res;
+}
index c3a610da1462481fcb9e851cc361ccf547298bde..98f4a876007aaf681462a5507a89d33f7e65be27 100644 (file)
@@ -3,12 +3,17 @@
 require_once __DIR__ . "/../scripts/import.php";
 require_once __DIR__ . '/../scripts/cron/cron.php';
 // Set time limit to indefinite execution
+echo 'Run home cron daemon' . "\n";
 set_time_limit(0);
 ignore_user_abort(true);
 $min = intval(date('i'));
 while (true) {
     $begin = time();
-    cronOneLoop($min);
+    try {
+        cronOneLoop($min);
+    } catch (Exception $e) {
+        echo 'An error occured ' . $e->getMessage() . "\n";
+    }
     $diff = time() - $begin;
     if ($diff < 60 && $diff > 0) {
         sleep(60 - $diff);
index ca8cb25ef22e129765d6781cee78b54b6635c6a7..2f5d1795a3d9f7147a9a5a808788ca87910358f7 100644 (file)
@@ -12,25 +12,7 @@ ignore_user_abort(true);
 echo 'Run home server domoticz' . "\n";
 
 $redis = connectRedis();
-
-$pubsubRedis = getRedisClient();
-$pubsub = $pubsubRedis->pubSubLoop();
-// Create a dispatcher loop instance and attach a bunch of callbacks.
-$dispatcher = new Predis\PubSub\DispatcherLoop($pubsub);
-
-class EventsListener
-{
-    public function __invoke($payload)
-    {
-        if ($payload == 'handle_queue') {
-            handleDomoticzQueue();
-        }
-    }
-}
-
-$dispatcher->attachCallback('domoticz_event', ($events = new EventsListener()));
-$dispatcher->run();
-
+redisEventListener('domoticz_event','handleDomoticzQueue');
 
 function handleDomoticzQueue()
 {
index 80369d70f33771ec4d83ea93701db914d6deb03f..39f2533beb795b18a67d577b0f4b4de7210f75ca 100644 (file)
@@ -11,24 +11,7 @@ echo 'Run home server insteon' . "\n";
 
 $redis = connectRedis();
 
-$pubsubRedis = getRedisClient();
-$pubsub = $pubsubRedis->pubSubLoop();
-// Create a dispatcher loop instance and attach a bunch of callbacks.
-$dispatcher = new Predis\PubSub\DispatcherLoop($pubsub);
-
-class EventsListener
-{
-    public function __invoke($payload)
-    {
-        if ($payload == 'handle_queue') {
-            handleInsteonQueue();
-        }
-    }
-}
-
-$dispatcher->attachCallback('insteon_event', ($events = new EventsListener()));
-$dispatcher->run();
-
+redisEventListener('insteon_event','handleInsteonQueue');
 
 function handleInsteonQueue()
 {
index 0cd553fa397d3fc979f45d9446474965f17ce873..09c14cc6d86dadc3eb04d087517229a583dbe8a3 100644 (file)
@@ -7,19 +7,29 @@ require_once __DIR__ . "/../scripts/import.php";
 set_time_limit(0);
 ignore_user_abort(true);
 
-$redis = connectRedis();
-
 echo 'Run home server ssh' . "\n";
 
-while (true) {
-    $wait = handleSSHQueues();
+$redis = connectRedis();
+redisEventListener('ssh_event', 'handleSSHQueues');
 
-    if ($wait > 0) {
-        usleep($wait * 1000000);
-    }
-}
+$connections = [];
 
 function handleSSHQueues()
 {
+    global $redis;
+    $queue_name = 'ssh_queue';
+    $queue = $redis->igbget($queue_name);
+    if (!is_array($queue)) {
+        $queue = [];
+        $redis->igbset($queue_name, $queue);
+    }
+
+    if (!count($queue)) {
+        return;
+    }
 
+    $command = array_shift($queue);
+    $redis->igbset($queue_name, $queue);
+    echo 'Run command ' . json_encode($command) . "\n";
+    sshRunCommand($command['command'], $command['device'], $command['blocking'], $command['sudo']);
 }
\ No newline at end of file