add: process injection features

add: remove remote processes
fix: minor fixes and reformats
This commit is contained in:
cr0hn
2016-02-19 01:40:54 +01:00
parent d8ce0c9c07
commit 1dd70221c8
7 changed files with 437 additions and 368 deletions

505
.idea/workspace.xml generated
View File

@@ -1,9 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="f21e0167-ea6b-49ab-b506-bdd65f63e425" name="Default" comment="add: listing remote functions and export function templates">
<list default="true" id="f21e0167-ea6b-49ab-b506-bdd65f63e425" name="Default" comment="fix: minor fix to avoid future exceptions">
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/enteletaor_lib/modules/proc/proc_inject_process.py" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/enteletaor_lib/modules/proc/proc_remove.py" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/enteletaor_lib/modules/proc/__init__.py" afterPath="$PROJECT_DIR$/enteletaor_lib/modules/proc/__init__.py" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/enteletaor_lib/modules/proc/cmd_actions.py" afterPath="$PROJECT_DIR$/enteletaor_lib/modules/proc/cmd_actions.py" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/enteletaor_lib/modules/proc/proc_list_process.py" afterPath="$PROJECT_DIR$/enteletaor_lib/modules/proc/proc_list_process.py" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/enteletaor_lib/modules/proc/utils.py" afterPath="$PROJECT_DIR$/enteletaor_lib/modules/proc/utils.py" />
</list>
<ignored path="Enteletaor.iws" />
<ignored path=".idea/workspace.xml" />
@@ -28,6 +33,7 @@
<SUITE FILE_PATH="coverage/Enteletaor$prueba_docout.coverage" NAME="prueba_docout Coverage Results" MODIFIED="1453933562882" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$USER_HOME$/Documents/Projects/Enteletaor" />
<SUITE FILE_PATH="coverage/Enteletaor$argsubparsers.coverage" NAME="argsubparsers Coverage Results" MODIFIED="1455616100673" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/enteletaor_lib" />
<SUITE FILE_PATH="coverage/Enteletaor$enteletaor_module_redis_discover_db.coverage" NAME="enteletaor module redis discover-db Coverage Results" MODIFIED="1455716503611" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/enteletaor_lib" />
<SUITE FILE_PATH="coverage/Enteletaor$enteletaor_proc_inject.coverage" NAME="enteletaor proc inject Coverage Results" MODIFIED="1455840396543" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/enteletaor_lib" />
<SUITE FILE_PATH="coverage/Enteletaor$enteletaor_module_shell.coverage" NAME="enteletaor module shell Coverage Results" MODIFIED="1455636836919" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/enteletaor_lib" />
<SUITE FILE_PATH="coverage/Enteletaor$enteletaor.coverage" NAME="enteletaor Coverage Results" MODIFIED="1455617820233" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/enteletaor_lib" />
</component>
@@ -39,15 +45,20 @@
<favorites_list name="Enteletaor" />
</component>
<component name="FileEditorManager">
<leaf>
<file leaf-file-name="proc_list_process.py" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/proc/proc_list_process.py">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file leaf-file-name="utils.py" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/proc/utils.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="-0.59217876">
<caret line="65" column="0" selection-start-line="65" selection-start-column="0" selection-end-line="65" selection-end-column="0" />
<state vertical-scroll-proportion="0.53093815">
<caret line="47" column="35" selection-start-line="47" selection-start-column="35" selection-end-line="47" selection-end-column="35" />
<folding>
<element signature="e#25#34#0" expanded="true" />
<element signature="e#273#432#1" expanded="true" />
<element signature="e#25#35#0" expanded="true" />
<element signature="e#255#874#0" expanded="false" />
<element signature="e#255#414#1" expanded="true" />
<element signature="e#1099#1749#0" expanded="false" />
<element signature="e#1099#1196#1" expanded="true" />
<element signature="e#1890#2009#1" expanded="true" />
<element signature="e#2711#2853#1" expanded="true" />
</folding>
</state>
</provider>
@@ -71,9 +82,6 @@
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/../stb-core/enteletaor_lib/__init__.py" />
<option value="$PROJECT_DIR$/../stb-core/enteletaor_lib/libs/core/data.py" />
<option value="$PROJECT_DIR$/../stb-core/enteletaor_lib/libs/hooks/config/__init__.py" />
<option value="$PROJECT_DIR$/../stb-core/enteletaor_lib/libs/hooks/__init__.py" />
<option value="$PROJECT_DIR$/../stb-core/enteletaor_lib/libs/core/logging.py" />
<option value="$PROJECT_DIR$/../stb-core/enteletaor_lib/libs/core/bootloader.py" />
@@ -117,11 +125,14 @@
<option value="$PROJECT_DIR$/enteletaor_lib/modules/redis/cmd_actions.py" />
<option value="$PROJECT_DIR$/enteletaor_lib/modules/redis/redis_cache.py" />
<option value="$PROJECT_DIR$/enteletaor_lib/modules/redis/utils.py" />
<option value="$PROJECT_DIR$/enteletaor_lib/modules/proc/utils.py" />
<option value="$PROJECT_DIR$/enteletaor_lib/modules/proc/proc_raw_dump.py" />
<option value="$PROJECT_DIR$/enteletaor_lib/modules/redis/redis_commands.txt" />
<option value="$PROJECT_DIR$/enteletaor_lib/modules/proc/__init__.py" />
<option value="$PROJECT_DIR$/enteletaor_lib/modules/proc/proc_remove.py" />
<option value="$PROJECT_DIR$/enteletaor_lib/modules/proc/cmd_actions.py" />
<option value="$PROJECT_DIR$/enteletaor_lib/modules/proc/proc_list_process.py" />
<option value="$PROJECT_DIR$/enteletaor_lib/modules/proc/proc_inject_process.py" />
<option value="$PROJECT_DIR$/enteletaor_lib/modules/proc/utils.py" />
</list>
</option>
</component>
@@ -133,8 +144,8 @@
<component name="ProjectFrameBounds">
<option name="x" value="4" />
<option name="y" value="23" />
<option name="width" value="1916" />
<option name="height" value="1057" />
<option name="width" value="1276" />
<option name="height" value="777" />
</component>
<component name="ProjectLevelVcsManager" settingsEditedManually="false">
<OptionsSetting value="true" id="Add" />
@@ -161,6 +172,8 @@
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="Scratches" />
<pane id="Scope" />
<pane id="ProjectPane">
<subPane>
<PATH>
@@ -211,6 +224,28 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="Enteletaor" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="enteletaor" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="enteletaor_lib" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="modules" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="redis" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="Enteletaor" />
@@ -235,8 +270,6 @@
</PATH>
</subPane>
</pane>
<pane id="Scope" />
<pane id="Scratches" />
</panes>
</component>
<component name="PropertiesComponent">
@@ -249,13 +282,6 @@
<property name="list.type.of.created.stylesheet" value="CSS" />
</component>
<component name="RecentsManager">
<key name="MoveFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/enteletaor_lib/modules/proc" />
<recent name="$PROJECT_DIR$/enteletaor_lib/modules/redis" />
<recent name="$PROJECT_DIR$/../stb-core/enteletaor_lib/libs" />
<recent name="$PROJECT_DIR$/../stb-core/enteletaor_lib/libs/core" />
<recent name="$USER_HOME$/Documents/Projects/Enteletaor/enteletaor_lib" />
</key>
<key name="CopyFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/enteletaor_lib/modules/proc" />
<recent name="$PROJECT_DIR$/enteletaor_lib/modules/redis" />
@@ -263,8 +289,15 @@
<recent name="$PROJECT_DIR$/enteletaor_lib/modules/help" />
<recent name="$PROJECT_DIR$/../stb-core/enteletaor_lib/libs" />
</key>
<key name="MoveFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/enteletaor_lib/modules/proc" />
<recent name="$PROJECT_DIR$/enteletaor_lib/modules/redis" />
<recent name="$PROJECT_DIR$/../stb-core/enteletaor_lib/libs" />
<recent name="$PROJECT_DIR$/../stb-core/enteletaor_lib/libs/core" />
<recent name="$USER_HOME$/Documents/Projects/Enteletaor/enteletaor_lib" />
</key>
</component>
<component name="RunManager" selected="Python.enteletaor proc list-process">
<component name="RunManager" selected="Python.enteletaor proc inject">
<configuration default="false" name="argsubparsers" type="PythonConfigurationType" factoryName="Python" temporary="true">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
@@ -600,7 +633,25 @@
<option name="SHOW_COMMAND_LINE" value="false" />
<method />
</configuration>
<list size="9">
<configuration default="false" name="enteletaor proc inject" type="PythonConfigurationType" factoryName="Python">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/enteletaor_lib" />
<option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="enteletaor" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/enteletaor_lib/enteletaor.py" />
<option name="PARAMETERS" value="-vvv proc inject --target 10.211.55.69 -f send_mail.json" />
<option name="SHOW_COMMAND_LINE" value="false" />
<method />
</configuration>
<list size="10">
<item index="0" class="java.lang.String" itemvalue="Python.enteletaor" />
<item index="1" class="java.lang.String" itemvalue="Python.enteletaor module redis dump" />
<item index="2" class="java.lang.String" itemvalue="Python.enteletaor module redis cache-poison" />
@@ -609,7 +660,8 @@
<item index="5" class="java.lang.String" itemvalue="Python.enteletaor module redis disconnect" />
<item index="6" class="java.lang.String" itemvalue="Python.enteletaor proc raw-dump" />
<item index="7" class="java.lang.String" itemvalue="Python.enteletaor proc list-process" />
<item index="8" class="java.lang.String" itemvalue="Python.argsubparsers" />
<item index="8" class="java.lang.String" itemvalue="Python.enteletaor proc inject" />
<item index="9" class="java.lang.String" itemvalue="Python.argsubparsers" />
</list>
<recent_temporary>
<list size="1">
@@ -685,27 +737,33 @@
<option name="project" value="LOCAL" />
<updated>1455806589094</updated>
</task>
<option name="localTasksCounter" value="11" />
<task id="LOCAL-00011" summary="fix: minor fix to avoid future exceptions">
<created>1455806975815</created>
<option name="number" value="00011" />
<option name="project" value="LOCAL" />
<updated>1455806975815</updated>
</task>
<option name="localTasksCounter" value="12" />
<servers />
</component>
<component name="ToolWindowManager">
<frame x="4" y="23" width="1916" height="1057" extended-state="6" />
<frame x="4" y="23" width="1276" height="777" extended-state="6" />
<editor active="true" />
<layout>
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.23701298" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.48808292" sideWeight="0.508547" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32953367" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32953367" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3562044" sideWeight="0.4946581" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.22797927" sideWeight="0.4957265" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.22542734" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32746115" sideWeight="0.4957265" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32953367" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32953367" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.35568514" sideWeight="0.4946581" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.22627737" sideWeight="0.4957265" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4310881" sideWeight="0.491453" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.58978105" sideWeight="0.491453" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
@@ -734,7 +792,8 @@
<MESSAGE value="fix - improved output messages" />
<MESSAGE value="add: new options for redis cache attack" />
<MESSAGE value="add: listing remote functions and export function templates" />
<option name="LAST_COMMIT_MESSAGE" value="add: listing remote functions and export function templates" />
<MESSAGE value="fix: minor fix to avoid future exceptions" />
<option name="LAST_COMMIT_MESSAGE" value="fix: minor fix to avoid future exceptions" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager>
@@ -744,11 +803,6 @@
<line>29</line>
<option name="timeStamp" value="31" />
</line-breakpoint>
<line-breakpoint enabled="true" type="python-line">
<url>file://$PROJECT_DIR$/enteletaor_lib/modules/proc/utils.py</url>
<line>29</line>
<option name="timeStamp" value="285" />
</line-breakpoint>
</breakpoints>
<breakpoints-dialog>
<breakpoints-dialog />
@@ -760,7 +814,7 @@
</properties>
</breakpoint>
</default-breakpoints>
<option name="time" value="286" />
<option name="time" value="294" />
</breakpoint-manager>
<watches-manager>
<configuration name="PythonConfigurationType">
@@ -769,61 +823,10 @@
</watches-manager>
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/enteletaor_lib/libs/core/patterns.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.30930233">
<caret line="7" column="24" selection-start-line="7" selection-start-column="24" selection-end-line="7" selection-end-column="24" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/libs/core/__init__.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0608">
<caret line="2" column="0" selection-start-line="2" selection-start-column="0" selection-end-line="2" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/__init__.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="7" column="0" selection-start-line="7" selection-start-column="0" selection-end-line="7" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/libs/core/model_old.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.21153846">
<caret line="57" column="16" selection-start-line="57" selection-start-column="16" selection-end-line="57" selection-end-column="16" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/libs/core/config.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.34508547">
<caret line="23" column="8" selection-start-line="23" selection-start-column="8" selection-end-line="23" selection-end-column="8" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/enteletaor_web.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.57371795">
<caret line="46" column="12" selection-start-line="46" selection-start-column="12" selection-end-line="46" selection-end-column="12" />
<folding>
<element signature="e#25#36#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/README.md">
<provider editor-type-id="MarkdownPreviewEditor">
<state />
</provider>
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.27824268">
<caret line="7" column="0" selection-start-line="7" selection-start-column="0" selection-end-line="7" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
@@ -831,7 +834,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
@@ -843,22 +845,10 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/hooks.md">
<provider editor-type-id="MarkdownPreviewEditor">
<state />
</provider>
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.16527197">
<caret line="6" column="0" selection-start-line="6" selection-start-column="0" selection-end-line="6" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/MANIFEST.in">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.26181102">
<caret line="7" column="28" selection-start-line="7" selection-start-column="28" selection-end-line="7" selection-end-column="28" />
<folding />
</state>
</provider>
</entry>
@@ -882,7 +872,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.5620567">
<caret line="30" column="0" selection-start-line="30" selection-start-column="0" selection-end-line="30" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
@@ -890,7 +879,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.3326087">
<caret line="66" column="57" selection-start-line="66" selection-start-column="57" selection-end-line="66" selection-end-column="57" />
<folding />
</state>
</provider>
</entry>
@@ -898,10 +886,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.83651805">
<caret line="27" column="58" selection-start-line="27" selection-start-column="58" selection-end-line="27" selection-end-column="58" />
<folding>
<element signature="e#232#273#1" expanded="false" />
<element signature="e#447#519#1" expanded="false" />
</folding>
</state>
</provider>
</entry>
@@ -909,10 +893,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.74097663">
<caret line="20" column="0" selection-start-line="20" selection-start-column="0" selection-end-line="20" selection-end-column="0" />
<folding>
<element signature="e#25#39#0" expanded="true" />
<element signature="e#203#248#1" expanded="true" />
</folding>
</state>
</provider>
</entry>
@@ -920,7 +900,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.40339702">
<caret line="10" column="15" selection-start-line="10" selection-start-column="15" selection-end-line="10" selection-end-column="15" />
<folding />
</state>
</provider>
</entry>
@@ -928,9 +907,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.44373673">
<caret line="11" column="1" selection-start-line="11" selection-start-column="1" selection-end-line="11" selection-end-column="1" />
<folding>
<element signature="e#35#73#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
@@ -938,7 +914,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.06737588">
<caret line="2" column="0" selection-start-line="2" selection-start-column="0" selection-end-line="2" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
@@ -946,21 +921,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.32978722">
<caret line="32" column="0" selection-start-line="32" selection-start-column="0" selection-end-line="32" selection-end-column="0" />
<folding>
<element signature="e#383#630#0" expanded="false" />
<element signature="e#819#1013#1" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/.virtualenvs/enteletaor/lib/python3.4/site-packages/kombu/connection.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.4503546">
<caret line="1000" column="61" selection-start-line="1000" selection-start-column="61" selection-end-line="1000" selection-end-column="61" />
<folding>
<element signature="e#73#111#0" expanded="false" />
<element signature="e#14371#15835#1" expanded="false" />
</folding>
</state>
</provider>
</entry>
@@ -968,9 +928,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.37056738">
<caret line="11" column="6" selection-start-line="11" selection-start-column="6" selection-end-line="11" selection-end-column="6" />
<folding>
<element signature="e#26#84#1" expanded="false" />
</folding>
</state>
</provider>
</entry>
@@ -1021,104 +978,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.28987518">
<caret line="349" column="0" selection-start-line="349" selection-start-column="0" selection-end-line="349" selection-end-column="0" />
<folding>
<element signature="e#4392#4545#0" expanded="false" />
<element signature="e#4578#4731#0" expanded="false" />
<element signature="e#4765#4924#0" expanded="false" />
<element signature="e#4968#5583#1" expanded="false" />
<element signature="e#5676#5975#0" expanded="false" />
<element signature="e#6030#6371#0" expanded="false" />
<element signature="e#6437#6900#1" expanded="false" />
<element signature="e#7759#8057#1" expanded="false" />
<element signature="e#8456#8619#1" expanded="false" />
<element signature="e#8697#9001#1" expanded="false" />
<element signature="e#10811#11113#0" expanded="false" />
<element signature="e#11162#11406#0" expanded="false" />
<element signature="e#12084#12173#0" expanded="false" />
<element signature="e#12201#12705#0" expanded="false" />
<element signature="e#12371#12472#0" expanded="false" />
<element signature="e#12516#12542#0" expanded="false" />
<element signature="e#12576#12705#0" expanded="false" />
<element signature="e#12733#13426#0" expanded="false" />
<element signature="e#12817#12866#0" expanded="false" />
<element signature="e#12899#12912#0" expanded="false" />
<element signature="e#12949#12962#0" expanded="false" />
<element signature="e#12996#13009#0" expanded="false" />
<element signature="e#13064#13341#0" expanded="false" />
<element signature="e#13375#13426#0" expanded="false" />
<element signature="e#13463#14634#0" expanded="false" />
<element signature="e#13781#13933#0" expanded="false" />
<element signature="e#13971#14152#0" expanded="false" />
<element signature="e#14186#14516#0" expanded="false" />
<element signature="e#14552#14634#0" expanded="false" />
<element signature="e#14607#14634#0" expanded="false" />
<element signature="e#14677#15679#0" expanded="false" />
<element signature="e#14807#14929#0" expanded="false" />
<element signature="e#14967#15066#0" expanded="false" />
<element signature="e#15111#15227#0" expanded="false" />
<element signature="e#15280#15478#0" expanded="false" />
<element signature="e#15522#15679#0" expanded="false" />
<element signature="e#15726#16906#0" expanded="false" />
<element signature="e#16015#16172#0" expanded="false" />
<element signature="e#16217#16350#0" expanded="false" />
<element signature="e#16403#16608#0" expanded="false" />
<element signature="e#16652#16906#0" expanded="false" />
<element signature="e#16944#17266#0" expanded="false" />
<element signature="e#17511#17602#0" expanded="false" />
<element signature="e#17634#17694#0" expanded="false" />
<element signature="e#17738#18729#0" expanded="false" />
<element signature="e#17989#18258#0" expanded="false" />
<element signature="e#18295#18495#0" expanded="false" />
<element signature="e#18542#18601#0" expanded="false" />
<element signature="e#18649#18729#0" expanded="false" />
<element signature="e#18763#19539#0" expanded="false" />
<element signature="e#19010#19073#0" expanded="false" />
<element signature="e#19105#19270#0" expanded="false" />
<element signature="e#19323#19539#0" expanded="false" />
<element signature="e#19590#22240#0" expanded="false" />
<element signature="e#20429#20797#0" expanded="false" />
<element signature="e#20829#21803#0" expanded="false" />
<element signature="e#21856#22240#0" expanded="false" />
<element signature="e#22272#23044#0" expanded="false" />
<element signature="e#22517#22578#0" expanded="false" />
<element signature="e#22610#22775#0" expanded="false" />
<element signature="e#22828#23044#0" expanded="false" />
<element signature="e#23078#24222#0" expanded="false" />
<element signature="e#23696#23841#0" expanded="false" />
<element signature="e#23886#23909#0" expanded="false" />
<element signature="e#23962#24089#0" expanded="false" />
<element signature="e#24121#24222#0" expanded="false" />
<element signature="e#24257#25088#0" expanded="false" />
<element signature="e#24473#24566#0" expanded="false" />
<element signature="e#24598#24743#0" expanded="false" />
<element signature="e#24796#25088#0" expanded="false" />
<element signature="e#25127#25705#0" expanded="false" />
<element signature="e#25289#25357#0" expanded="false" />
<element signature="e#25410#25705#0" expanded="false" />
<element signature="e#25736#28093#0" expanded="false" />
<element signature="e#26178#26602#0" expanded="false" />
<element signature="e#26663#27129#0" expanded="false" />
<element signature="e#27195#27370#0" expanded="false" />
<element signature="e#27419#27764#0" expanded="false" />
<element signature="e#27798#27820#0" expanded="false" />
<element signature="e#27863#27885#0" expanded="false" />
<element signature="e#27928#27959#0" expanded="false" />
<element signature="e#28003#28024#0" expanded="false" />
<element signature="e#28070#28093#0" expanded="false" />
<element signature="e#28124#33636#0" expanded="false" />
<element signature="e#28957#29471#0" expanded="false" />
<element signature="e#29532#30400#0" expanded="false" />
<element signature="e#30460#30970#0" expanded="false" />
<element signature="e#31036#31638#0" expanded="false" />
<element signature="e#31687#32216#0" expanded="false" />
<element signature="e#32297#32907#0" expanded="false" />
<element signature="e#32963#33189#0" expanded="false" />
<element signature="e#33224#33369#0" expanded="false" />
<element signature="e#33403#33428#0" expanded="false" />
<element signature="e#33461#33485#0" expanded="false" />
<element signature="e#33529#33555#0" expanded="false" />
<element signature="e#33599#33636#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
@@ -1126,7 +985,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.2108183">
<caret line="12" column="31" selection-start-line="12" selection-start-column="31" selection-end-line="12" selection-end-column="31" />
<folding />
</state>
</provider>
</entry>
@@ -1134,11 +992,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.062030077">
<caret line="69" column="74" selection-start-line="69" selection-start-column="74" selection-end-line="69" selection-end-column="74" />
<folding>
<element signature="e#25#35#0" expanded="true" />
<element signature="e#1847#1924#1" expanded="true" />
<element signature="e#3218#3307#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
@@ -1156,16 +1009,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.74786323">
<caret line="175" column="52" selection-start-line="175" selection-start-column="52" selection-end-line="175" selection-end-column="52" />
<folding>
<element signature="e#25#35#0" expanded="true" />
<element signature="e#424#541#1" expanded="true" />
<element signature="e#1060#1190#1" expanded="true" />
<element signature="e#1615#1986#1" expanded="true" />
<element signature="e#6203#6524#0" expanded="false" />
<element signature="e#6203#6292#1" expanded="true" />
<element signature="e#6632#7336#0" expanded="false" />
<element signature="e#6632#6873#1" expanded="true" />
</folding>
</state>
</provider>
</entry>
@@ -1207,17 +1050,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ATTACKS.md">
<provider editor-type-id="MarkdownPreviewEditor">
<state />
</provider>
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.74067795">
<caret line="23" column="0" selection-start-line="23" selection-start-column="0" selection-end-line="23" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/api.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.18387097">
@@ -1245,16 +1077,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/__init__.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.14786585">
<caret line="16" column="0" selection-start-line="16" selection-start-column="0" selection-end-line="16" selection-end-column="0" />
<folding>
<element signature="e#580#747#1" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/redis/redis_clients.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.50747865">
@@ -1268,8 +1090,8 @@
<state vertical-scroll-proportion="0.51282054">
<caret line="40" column="0" selection-start-line="40" selection-start-column="0" selection-end-line="40" selection-end-column="0" />
<folding>
<element signature="e#25#37#0" expanded="true" />
<element signature="e#664#700#1" expanded="true" />
<element signature="e#25#37#0" expanded="false" />
<element signature="e#664#700#1" expanded="false" />
</folding>
</state>
</provider>
@@ -1279,9 +1101,9 @@
<state vertical-scroll-proportion="0.75106835">
<caret line="41" column="21" selection-start-line="41" selection-start-column="21" selection-end-line="41" selection-end-column="21" />
<folding>
<element signature="e#25#39#0" expanded="true" />
<element signature="e#25#39#0" expanded="false" />
<element signature="e#771#903#0" expanded="false" />
<element signature="e#1008#1066#1" expanded="true" />
<element signature="e#1008#1066#1" expanded="false" />
</folding>
</state>
</provider>
@@ -1291,12 +1113,11 @@
<state vertical-scroll-proportion="0.24358974">
<caret line="119" column="4" selection-start-line="119" selection-start-column="4" selection-end-line="119" selection-end-column="61" />
<folding>
<element signature="e#25#37#0" expanded="true" />
<element signature="e#25#37#0" expanded="false" />
<element signature="e#672#790#0" expanded="false" />
<element signature="e#672#706#1" expanded="true" />
<element signature="e#898#931#1" expanded="true" />
<element signature="e#2984#3020#1" expanded="true" />
<marker date="1455798242000" expanded="true" signature="896:2861" placeholder="..." />
<element signature="e#672#706#1" expanded="false" />
<element signature="e#898#931#1" expanded="false" />
<element signature="e#2984#3020#1" expanded="false" />
</folding>
</state>
</provider>
@@ -1314,49 +1135,137 @@
<state vertical-scroll-proportion="0.5886752">
<caret line="29" column="43" selection-start-line="29" selection-start-column="43" selection-end-line="29" selection-end-column="43" />
<folding>
<element signature="e#25#35#0" expanded="true" />
<element signature="e#25#35#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/proc/utils.py">
<entry file="file://$PROJECT_DIR$/hooks.md">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.33333334">
<caret line="42" column="4" selection-start-line="42" selection-start-column="4" selection-end-line="42" selection-end-column="4" />
<state vertical-scroll-proportion="0.24203822">
<caret line="6" column="0" selection-start-line="6" selection-start-column="0" selection-end-line="6" selection-end-column="0" />
<folding />
</state>
</provider>
<provider editor-type-id="MarkdownPreviewEditor">
<state />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/ATTACKS.md">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.84713376">
<caret line="21" column="30" selection-start-line="21" selection-start-column="30" selection-end-line="21" selection-end-column="30" />
<folding />
</state>
</provider>
<provider editor-type-id="MarkdownPreviewEditor">
<state />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/README.md">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.28237793">
<caret line="7" column="0" selection-start-line="7" selection-start-column="0" selection-end-line="7" selection-end-column="0" />
<folding />
</state>
</provider>
<provider editor-type-id="MarkdownPreviewEditor">
<state />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/__init__.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.8369565">
<caret line="26" column="54" selection-start-line="26" selection-start-column="54" selection-end-line="26" selection-end-column="54" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/.virtualenvs/enteletaor/lib/python3.4/collections/__init__.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.3325062">
<caret line="49" column="19" selection-start-line="49" selection-start-column="15" selection-end-line="49" selection-end-column="19" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/proc/proc_remove.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.49162862">
<caret line="17" column="0" selection-start-line="17" selection-start-column="0" selection-end-line="17" selection-end-column="0" />
<folding>
<element signature="e#25#55#0" expanded="true" />
<element signature="e#256#375#1" expanded="true" />
<element signature="e#1056#1198#1" expanded="true" />
<element signature="e#25#39#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/proc/__init__.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.26213592">
<caret line="32" column="21" selection-start-line="32" selection-start-column="21" selection-end-line="32" selection-end-column="21" />
<state vertical-scroll-proportion="0.49162862">
<caret line="51" column="38" selection-start-line="51" selection-start-column="38" selection-end-line="51" selection-end-column="38" />
<folding>
<element signature="e#25#39#0" expanded="true" />
<element signature="e#490#822#0" expanded="false" />
<element signature="e#622#954#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/proc/cmd_actions.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.6456311">
<caret line="23" column="64" selection-start-line="23" selection-start-column="51" selection-end-line="23" selection-end-column="64" />
<state vertical-scroll-proportion="0.4207317">
<caret line="19" column="51" selection-start-line="19" selection-start-column="51" selection-end-line="19" selection-end-column="60" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/.virtualenvs/enteletaor/lib/python3.4/site-packages/kombu/simple.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.61538464">
<caret line="110" column="71" selection-start-line="110" selection-start-column="71" selection-end-line="110" selection-end-column="71" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/.virtualenvs/enteletaor/lib/python3.4/site-packages/kombu/connection.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.5210918">
<caret line="675" column="23" selection-start-line="675" selection-start-column="23" selection-end-line="675" selection-end-column="23" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/proc/proc_list_process.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="-0.59217876">
<caret line="65" column="0" selection-start-line="65" selection-start-column="0" selection-end-line="65" selection-end-column="0" />
<state vertical-scroll-proportion="0.64684016">
<caret line="38" column="64" selection-start-line="38" selection-start-column="64" selection-end-line="38" selection-end-column="64" />
<folding>
<element signature="e#25#34#0" expanded="true" />
<element signature="e#273#432#1" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/proc/proc_inject_process.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.17657992">
<caret line="18" column="0" selection-start-line="18" selection-start-column="0" selection-end-line="18" selection-end-column="0" />
<folding>
<element signature="e#26#36#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/enteletaor_lib/modules/proc/utils.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.53093815">
<caret line="47" column="35" selection-start-line="47" selection-start-column="35" selection-end-line="47" selection-end-column="35" />
<folding>
<element signature="e#25#35#0" expanded="true" />
<element signature="e#255#874#0" expanded="false" />
<element signature="e#255#414#1" expanded="true" />
<element signature="e#1099#1749#0" expanded="false" />
<element signature="e#1099#1196#1" expanded="true" />
<element signature="e#1890#2009#1" expanded="true" />
<element signature="e#2711#2853#1" expanded="true" />
</folding>
</state>
</provider>

View File

@@ -7,9 +7,11 @@ from modules import IModule
from libs.core.structs import CommonData
from libs.core.models import IntegerField, StringField, SelectField
from .cmd_actions import parser_proc_raw_dump, parser_proc_list_process
from .cmd_actions import parser_proc_raw_dump, parser_proc_list_process, parser_proc_inject_process
from .proc_remove import action_proc_remove
from .proc_raw_dump import action_proc_raw_dump
from .proc_list_process import action_proc_list_process
from .proc_inject_process import action_proc_inject_process
log = logging.getLogger()
@@ -44,6 +46,16 @@ class RemoteProcessModule(IModule):
cmd_args=parser_proc_list_process,
action=action_proc_list_process
),
'inject': dict(
help="list remote process and their params",
cmd_args=parser_proc_inject_process,
action=action_proc_inject_process
),
'remove': dict(
help="remove remote processes in server",
cmd_args=None,
action=action_proc_remove
),
}
name = "proc"

View File

@@ -17,9 +17,20 @@ def parser_proc_raw_dump(parser):
# ----------------------------------------------------------------------
def parser_proc_list_process(parser):
parser.add_argument("-N", "--no-stream", dest="no_stream", action="store_true", default=False,
help="force to not listen until message is received")
gr = parser.add_argument_group("process exporting options")
gr.add_argument("-T", "--make-template", dest="template", type=str,
help="export process as a JSON template format, ready to make injections")
gr.add_argument("-F", "--function-name", dest="function_name", type=str,
help="only export this function name")
# ----------------------------------------------------------------------
def parser_proc_inject_process(parser):
gr = parser.add_argument_group("process importing options")
gr.add_argument("-f", "--function-file", dest="function_files", type=str, required=True,
help="import process info from JSON file")

View File

@@ -0,0 +1,76 @@
# -*- coding: utf-8 -*-
import six
import uuid
import json
import logging
from kombu import Connection
from collections import OrderedDict
log = logging.getLogger()
# ----------------------------------------------------------------------
def action_proc_inject_process(config):
if config.function_files is None:
log.warning(" - input .json file with process files is needed")
return
# --------------------------------------------------------------------------
# Load process information
# --------------------------------------------------------------------------
with open(config.function_files, "r") as f:
f_info = json.load(f)
log.warning(" - Building process...")
# Search and inject process
injections = []
for p in f_info:
parameters = OrderedDict({x["param_position"]: x["param_value"] for x in p['parameters']})
# --------------------------------------------------------------------------
# Fill process information
# --------------------------------------------------------------------------
inject_process = {
"args": [x for x, y in six.iteritems(parameters)],
"callbacks": None,
"chord": None,
"errbacks": None,
"eta": None,
"expires": None,
"id": uuid.uuid1(),
"kwargs": {},
"retries": 0,
"task": "tasks.%s" % p["function"],
"taskset": None,
"timelimit": [
None,
None
],
"utc": True
}
injections.append(inject_process)
# --------------------------------------------------------------------------
# Re-inject messages
# --------------------------------------------------------------------------
log.warning(" - Trying to connect with server...")
url = '%s://%s' % (config.broker_type, config.target)
with Connection(url) as conn:
in_queue = conn.SimpleQueue('celery')
log.warning(" - Sending processes to '%s'" % config.target)
for i, e in enumerate(injections, 1):
log.warning(" %s) %s" % (i, e['task']))
# pass
in_queue.put(e, serializer="pickle")

View File

@@ -5,50 +5,14 @@ import six
import json
import logging
from time import sleep
from kombu import Connection
from .utils import list_remote_process
from .utils import list_remote_process, get_param_type, export_process
log = logging.getLogger()
# ----------------------------------------------------------------------
def get_param_type(value):
"""
Try to identify the parameter type by their value
:return: string with type. Valid values: str, int, float, dict, list, bytes, object
:rtype: str
"""
try:
# Distinguish between int and float
if int(value) == value:
return "int"
else:
return "float"
except ValueError:
# If raises type must be string or complex data
if type(value) == dict:
return "dict"
elif type(value) == list:
return "list"
elif type(value) == bytes:
try:
value.decode()
return "bytes"
except Exception:
return "str"
elif type(value) == str:
return "str"
else:
return "object"
# ----------------------------------------------------------------------
def action_proc_list_process(config):
@@ -57,17 +21,31 @@ def action_proc_list_process(config):
url = '%s://%s' % (config.broker_type, config.target)
with Connection(url) as conn:
in_queue = conn.SimpleQueue('celery')
process_info = {}
# Get remote process
for remote_process, remote_args in list_remote_process(config, in_queue):
first_msg = True
while 1:
for remote_process, remote_args in list_remote_process(config, in_queue):
if remote_process not in process_info:
process_info[remote_process] = remote_args
if remote_process not in process_info:
process_info[remote_process] = remote_args
if config.no_stream is False and not process_info:
if first_msg is True:
log.error(" -> Not messages found. Waiting ...")
first_msg = False
sleep(0.1)
else:
break
# --------------------------------------------------------------------------
# Try to identify parameters types
# --------------------------------------------------------------------------
# Display info
log.error(" - Remote process found:")
@@ -81,31 +59,7 @@ def action_proc_list_process(config):
if config.template is not None:
log.warning(" - Building template...")
export_data = []
for p, v in six.iteritems(process_info):
# Function name restriction?
if config.function_name is not None and config.function_name != p:
continue
# Extract function params
l_params = {}
for i, l_p in enumerate(v):
l_params = {
'param_position': i,
'param_type': get_param_type(l_p)
}
# Add to function information
l_process = {
'function': p,
'parameters': l_params
}
# Add to all data
export_data.append(l_process)
export_data = export_process(process_info, config)
# --------------------------------------------------------------------------
# Save template

View File

@@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
import logging
from kombu import Connection
from .utils import get_remote_messages
log = logging.getLogger()
# ----------------------------------------------------------------------
def action_proc_remove(config):
log.warning(" - Trying to connect with server...")
url = '%s://%s' % (config.broker_type, config.target)
with Connection(url) as conn:
in_queue = conn.SimpleQueue('celery')
# Get remote process
for _ in get_remote_messages(config, in_queue, False):
pass
log.error(" - All processes removed from '%s'" % config.target)

View File

@@ -1,12 +1,92 @@
# -*- coding: utf-8 -*-
import six
from kombu.simple import Empty
from six.moves.cPickle import loads
from kombu.exceptions import SerializationError
# ----------------------------------------------------------------------
def get_remote_messages(config, queue):
def get_param_type(value):
"""
Try to identify the parameter type by their value
:return: string with type. Valid values: str, int, float, dict, list, bytes, object
:rtype: str
"""
try:
# Distinguish between int and float
if int(value) == value:
return "int"
else:
return "float"
except ValueError:
# If raises type must be string or complex data
if type(value) == dict:
return "dict"
elif type(value) == list:
return "list"
elif type(value) == bytes:
try:
value.decode()
return "bytes"
except Exception:
return "str"
elif type(value) == str:
return "str"
else:
return "object"
# ----------------------------------------------------------------------
# Import/export process information
# ----------------------------------------------------------------------
def export_process(process_info, config):
"""
Export process info to json file
:return: return a dict JSON compatible
:rtype: dict
"""
export_data = []
for p, v in six.iteritems(process_info):
# Function name restriction?
if config.function_name is not None and config.function_name != p:
continue
# Extract function params
params = []
for i, l_p in enumerate(v):
l_params = {
'param_position': i,
'param_type': get_param_type(l_p),
'param_value': None
}
params.append(l_params)
# Add to function information
l_process = {
'function': p,
'parameters': params
}
# Add to all data
export_data.append(l_process)
return export_data
# ----------------------------------------------------------------------
def get_remote_messages(config, queue, fill=True, block=False):
"""
Get all messages from queue without removing from it
@@ -35,8 +115,9 @@ def get_remote_messages(config, queue):
except Empty:
# When Queue is Empty -> reinject all removed messages
for x in to_inject:
queue.put(x, serializer="pickle")
if fill is True:
for x in to_inject:
queue.put(x, serializer="pickle")
# ----------------------------------------------------------------------