Commit 40231d86fd4534db67a0094ffd87d3fc055b698c

Authored by Imanol-Mikel Barba Sabariego
0 parents

Preliminary digger core + plugin example (MFT)

.idea/gravedigger.iml 0 → 100644
  1 +++ a/.idea/gravedigger.iml
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<module type="PYTHON_MODULE" version="4">
  3 + <component name="NewModuleRootManager">
  4 + <content url="file://$MODULE_DIR$" />
  5 + <orderEntry type="inheritedJdk" />
  6 + <orderEntry type="sourceFolder" forTests="false" />
  7 + </component>
  8 + <component name="TestRunnerService">
  9 + <option name="PROJECT_TEST_RUNNER" value="Unittests" />
  10 + </component>
  11 +</module>
0 \ No newline at end of file 12 \ No newline at end of file
.idea/misc.xml 0 → 100644
  1 +++ a/.idea/misc.xml
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<project version="4">
  3 + <component name="ProjectLevelVcsManager" settingsEditedManually="false">
  4 + <OptionsSetting value="true" id="Add" />
  5 + <OptionsSetting value="true" id="Remove" />
  6 + <OptionsSetting value="true" id="Checkout" />
  7 + <OptionsSetting value="true" id="Update" />
  8 + <OptionsSetting value="true" id="Status" />
  9 + <OptionsSetting value="true" id="Edit" />
  10 + <ConfirmationsSetting value="0" id="Add" />
  11 + <ConfirmationsSetting value="0" id="Remove" />
  12 + </component>
  13 + <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.4.2 (/usr/bin/python3.4)" project-jdk-type="Python SDK" />
  14 +</project>
0 \ No newline at end of file 15 \ No newline at end of file
.idea/modules.xml 0 → 100644
  1 +++ a/.idea/modules.xml
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<project version="4">
  3 + <component name="ProjectModuleManager">
  4 + <modules>
  5 + <module fileurl="file://$PROJECT_DIR$/.idea/gravedigger.iml" filepath="$PROJECT_DIR$/.idea/gravedigger.iml" />
  6 + </modules>
  7 + </component>
  8 +</project>
0 \ No newline at end of file 9 \ No newline at end of file
.idea/vcs.xml 0 → 100644
  1 +++ a/.idea/vcs.xml
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<project version="4">
  3 + <component name="VcsDirectoryMappings">
  4 + <mapping directory="$PROJECT_DIR$" vcs="Git" />
  5 + </component>
  6 +</project>
0 \ No newline at end of file 7 \ No newline at end of file
.idea/workspace.xml 0 → 100644
  1 +++ a/.idea/workspace.xml
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<project version="4">
  3 + <component name="ChangeListManager">
  4 + <list default="true" id="33419617-7da8-422e-9ac6-68e0b317ebf8" name="Default" comment="">
  5 + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/vcs.xml" />
  6 + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/digger.py" />
  7 + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/module.py" />
  8 + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/modules/__init__.py" />
  9 + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/modules/mft.py" />
  10 + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/modulevar.py" />
  11 + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/scripts/dig.service" />
  12 + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/scripts/digger.sh" />
  13 + <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/vars/ntfsvol.py" />
  14 + </list>
  15 + <ignored path="gravedigger.iws" />
  16 + <ignored path=".idea/workspace.xml" />
  17 + <ignored path=".idea/dataSources.local.xml" />
  18 + <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
  19 + <option name="TRACKING_ENABLED" value="true" />
  20 + <option name="SHOW_DIALOG" value="false" />
  21 + <option name="HIGHLIGHT_CONFLICTS" value="true" />
  22 + <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
  23 + <option name="LAST_RESOLUTION" value="IGNORE" />
  24 + </component>
  25 + <component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
  26 + <component name="CoverageDataManager">
  27 + <SUITE FILE_PATH="coverage/gravedigger$digger.coverage" NAME="digger Coverage Results" MODIFIED="1477298273841" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
  28 + </component>
  29 + <component name="CreatePatchCommitExecutor">
  30 + <option name="PATCH_PATH" value="" />
  31 + </component>
  32 + <component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
  33 + <component name="FavoritesManager">
  34 + <favorites_list name="gravedigger" />
  35 + </component>
  36 + <component name="FileEditorManager">
  37 + <leaf>
  38 + <file leaf-file-name="digger.sh" pinned="false" current-in-tab="false">
  39 + <entry file="file://$PROJECT_DIR$/scripts/digger.sh">
  40 + <provider selected="true" editor-type-id="text-editor">
  41 + <state relative-caret-position="133">
  42 + <caret line="7" column="39" selection-start-line="7" selection-start-column="39" selection-end-line="7" selection-end-column="39" />
  43 + <folding />
  44 + </state>
  45 + </provider>
  46 + </entry>
  47 + </file>
  48 + <file leaf-file-name="digger.py" pinned="false" current-in-tab="true">
  49 + <entry file="file://$PROJECT_DIR$/digger.py">
  50 + <provider selected="true" editor-type-id="text-editor">
  51 + <state relative-caret-position="57">
  52 + <caret line="3" column="25" selection-start-line="3" selection-start-column="25" selection-end-line="3" selection-end-column="25" />
  53 + <folding />
  54 + </state>
  55 + </provider>
  56 + </entry>
  57 + </file>
  58 + <file leaf-file-name="module.py" pinned="false" current-in-tab="false">
  59 + <entry file="file://$PROJECT_DIR$/module.py">
  60 + <provider selected="true" editor-type-id="text-editor">
  61 + <state relative-caret-position="95">
  62 + <caret line="5" column="19" selection-start-line="5" selection-start-column="19" selection-end-line="5" selection-end-column="19" />
  63 + <folding />
  64 + </state>
  65 + </provider>
  66 + </entry>
  67 + </file>
  68 + <file leaf-file-name="ntfsvol.py" pinned="false" current-in-tab="false">
  69 + <entry file="file://$PROJECT_DIR$/vars/ntfsvol.py">
  70 + <provider selected="true" editor-type-id="text-editor">
  71 + <state relative-caret-position="247">
  72 + <caret line="13" column="41" selection-start-line="13" selection-start-column="41" selection-end-line="13" selection-end-column="41" />
  73 + <folding />
  74 + </state>
  75 + </provider>
  76 + </entry>
  77 + </file>
  78 + <file leaf-file-name="mft.py" pinned="false" current-in-tab="false">
  79 + <entry file="file://$PROJECT_DIR$/modules/mft.py">
  80 + <provider selected="true" editor-type-id="text-editor">
  81 + <state relative-caret-position="266">
  82 + <caret line="14" column="12" selection-start-line="14" selection-start-column="12" selection-end-line="14" selection-end-column="12" />
  83 + <folding />
  84 + </state>
  85 + </provider>
  86 + </entry>
  87 + </file>
  88 + <file leaf-file-name="modulevar.py" pinned="false" current-in-tab="false">
  89 + <entry file="file://$PROJECT_DIR$/modulevar.py">
  90 + <provider selected="true" editor-type-id="text-editor">
  91 + <state relative-caret-position="171">
  92 + <caret line="9" column="29" selection-start-line="9" selection-start-column="29" selection-end-line="9" selection-end-column="29" />
  93 + <folding />
  94 + </state>
  95 + </provider>
  96 + </entry>
  97 + </file>
  98 + <file leaf-file-name="__init__.py" pinned="false" current-in-tab="false">
  99 + <entry file="file://$PROJECT_DIR$/modules/__init__.py">
  100 + <provider selected="true" editor-type-id="text-editor">
  101 + <state relative-caret-position="0">
  102 + <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
  103 + <folding />
  104 + </state>
  105 + </provider>
  106 + </entry>
  107 + </file>
  108 + <file leaf-file-name="dig.service" pinned="false" current-in-tab="false">
  109 + <entry file="file://$PROJECT_DIR$/scripts/dig.service">
  110 + <provider selected="true" editor-type-id="text-editor">
  111 + <state relative-caret-position="133">
  112 + <caret line="7" column="35" selection-start-line="7" selection-start-column="35" selection-end-line="7" selection-end-column="35" />
  113 + <folding />
  114 + </state>
  115 + </provider>
  116 + </entry>
  117 + </file>
  118 + </leaf>
  119 + </component>
  120 + <component name="FileTemplateManagerImpl">
  121 + <option name="RECENT_TEMPLATES">
  122 + <list>
  123 + <option value="Python Script" />
  124 + </list>
  125 + </option>
  126 + </component>
  127 + <component name="Git.Settings">
  128 + <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
  129 + </component>
  130 + <component name="IdeDocumentHistory">
  131 + <option name="CHANGED_PATHS">
  132 + <list>
  133 + <option value="$PROJECT_DIR$/digger.sh" />
  134 + <option value="$PROJECT_DIR$/dig.service" />
  135 + <option value="$PROJECT_DIR$/modules/module.py" />
  136 + <option value="$PROJECT_DIR$/modulevar.py" />
  137 + <option value="$PROJECT_DIR$/modules/mft.py" />
  138 + <option value="$PROJECT_DIR$/vars/ntfsvol.py" />
  139 + <option value="$PROJECT_DIR$/module.py" />
  140 + <option value="$PROJECT_DIR$/digger.py" />
  141 + </list>
  142 + </option>
  143 + </component>
  144 + <component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" />
  145 + <component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER" />
  146 + <component name="JsGulpfileManager">
  147 + <detection-done>true</detection-done>
  148 + <sorting>DEFINITION_ORDER</sorting>
  149 + </component>
  150 + <component name="ProjectFrameBounds">
  151 + <option name="x" value="1915" />
  152 + <option name="y" value="31" />
  153 + <option name="width" value="1930" />
  154 + <option name="height" value="1174" />
  155 + </component>
  156 + <component name="ProjectLevelVcsManager" settingsEditedManually="false">
  157 + <OptionsSetting value="true" id="Add" />
  158 + <OptionsSetting value="true" id="Remove" />
  159 + <OptionsSetting value="true" id="Checkout" />
  160 + <OptionsSetting value="true" id="Update" />
  161 + <OptionsSetting value="true" id="Status" />
  162 + <OptionsSetting value="true" id="Edit" />
  163 + <ConfirmationsSetting value="2" id="Add" />
  164 + <ConfirmationsSetting value="0" id="Remove" />
  165 + </component>
  166 + <component name="ProjectView">
  167 + <navigator currentView="ProjectPane" proportions="" version="1">
  168 + <flattenPackages />
  169 + <showMembers />
  170 + <showModules />
  171 + <showLibraryContents />
  172 + <hideEmptyPackages />
  173 + <abbreviatePackageNames />
  174 + <autoscrollToSource />
  175 + <autoscrollFromSource />
  176 + <sortByType />
  177 + <manualOrder />
  178 + <foldersAlwaysOnTop value="true" />
  179 + </navigator>
  180 + <panes>
  181 + <pane id="Scratches" />
  182 + <pane id="Scope" />
  183 + <pane id="ProjectPane">
  184 + <subPane>
  185 + <PATH>
  186 + <PATH_ELEMENT>
  187 + <option name="myItemId" value="gravedigger" />
  188 + <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
  189 + </PATH_ELEMENT>
  190 + </PATH>
  191 + <PATH>
  192 + <PATH_ELEMENT>
  193 + <option name="myItemId" value="gravedigger" />
  194 + <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
  195 + </PATH_ELEMENT>
  196 + <PATH_ELEMENT>
  197 + <option name="myItemId" value="gravedigger" />
  198 + <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
  199 + </PATH_ELEMENT>
  200 + </PATH>
  201 + <PATH>
  202 + <PATH_ELEMENT>
  203 + <option name="myItemId" value="gravedigger" />
  204 + <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
  205 + </PATH_ELEMENT>
  206 + <PATH_ELEMENT>
  207 + <option name="myItemId" value="gravedigger" />
  208 + <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
  209 + </PATH_ELEMENT>
  210 + <PATH_ELEMENT>
  211 + <option name="myItemId" value="vars" />
  212 + <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
  213 + </PATH_ELEMENT>
  214 + </PATH>
  215 + <PATH>
  216 + <PATH_ELEMENT>
  217 + <option name="myItemId" value="gravedigger" />
  218 + <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
  219 + </PATH_ELEMENT>
  220 + <PATH_ELEMENT>
  221 + <option name="myItemId" value="gravedigger" />
  222 + <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
  223 + </PATH_ELEMENT>
  224 + <PATH_ELEMENT>
  225 + <option name="myItemId" value="scripts" />
  226 + <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
  227 + </PATH_ELEMENT>
  228 + </PATH>
  229 + <PATH>
  230 + <PATH_ELEMENT>
  231 + <option name="myItemId" value="gravedigger" />
  232 + <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
  233 + </PATH_ELEMENT>
  234 + <PATH_ELEMENT>
  235 + <option name="myItemId" value="gravedigger" />
  236 + <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
  237 + </PATH_ELEMENT>
  238 + <PATH_ELEMENT>
  239 + <option name="myItemId" value="modules" />
  240 + <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
  241 + </PATH_ELEMENT>
  242 + </PATH>
  243 + </subPane>
  244 + </pane>
  245 + </panes>
  246 + </component>
  247 + <component name="PropertiesComponent">
  248 + <property name="WebServerToolWindowFactoryState" value="false" />
  249 + </component>
  250 + <component name="RecentsManager">
  251 + <key name="MoveFile.RECENT_KEYS">
  252 + <recent name="$PROJECT_DIR$" />
  253 + <recent name="$PROJECT_DIR$/scripts" />
  254 + </key>
  255 + </component>
  256 + <component name="RunManager" selected="Python.digger">
  257 + <configuration default="false" name="digger" type="PythonConfigurationType" factoryName="Python" temporary="true">
  258 + <option name="INTERPRETER_OPTIONS" value="" />
  259 + <option name="PARENT_ENVS" value="true" />
  260 + <envs>
  261 + <env name="PYTHONUNBUFFERED" value="1" />
  262 + </envs>
  263 + <option name="SDK_HOME" value="" />
  264 + <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
  265 + <option name="IS_MODULE_SDK" value="true" />
  266 + <option name="ADD_CONTENT_ROOTS" value="true" />
  267 + <option name="ADD_SOURCE_ROOTS" value="true" />
  268 + <module name="gravedigger" />
  269 + <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
  270 + <option name="SCRIPT_NAME" value="$PROJECT_DIR$/digger.py" />
  271 + <option name="PARAMETERS" value="" />
  272 + <option name="SHOW_COMMAND_LINE" value="false" />
  273 + <method />
  274 + </configuration>
  275 + <configuration default="true" type="DjangoTestsConfigurationType" factoryName="Django tests">
  276 + <option name="INTERPRETER_OPTIONS" value="" />
  277 + <option name="PARENT_ENVS" value="true" />
  278 + <envs>
  279 + <env name="PYTHONUNBUFFERED" value="1" />
  280 + </envs>
  281 + <option name="SDK_HOME" value="" />
  282 + <option name="WORKING_DIRECTORY" value="" />
  283 + <option name="IS_MODULE_SDK" value="false" />
  284 + <option name="ADD_CONTENT_ROOTS" value="true" />
  285 + <option name="ADD_SOURCE_ROOTS" value="true" />
  286 + <module name="gravedigger" />
  287 + <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
  288 + <option name="TARGET" value="" />
  289 + <option name="SETTINGS_FILE" value="" />
  290 + <option name="CUSTOM_SETTINGS" value="false" />
  291 + <option name="USE_OPTIONS" value="false" />
  292 + <option name="OPTIONS" value="" />
  293 + <method />
  294 + </configuration>
  295 + <configuration default="true" type="JavascriptDebugType" factoryName="JavaScript Debug">
  296 + <method />
  297 + </configuration>
  298 + <configuration default="true" type="PyBehaveRunConfigurationType" factoryName="Behave">
  299 + <option name="INTERPRETER_OPTIONS" value="" />
  300 + <option name="PARENT_ENVS" value="true" />
  301 + <envs />
  302 + <option name="SDK_HOME" value="" />
  303 + <option name="WORKING_DIRECTORY" value="" />
  304 + <option name="IS_MODULE_SDK" value="false" />
  305 + <option name="ADD_CONTENT_ROOTS" value="true" />
  306 + <option name="ADD_SOURCE_ROOTS" value="true" />
  307 + <module name="gravedigger" />
  308 + <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
  309 + <option name="ADDITIONAL_ARGS" value="" />
  310 + <method />
  311 + </configuration>
  312 + <configuration default="true" type="PyLettuceRunConfigurationType" factoryName="Lettuce">
  313 + <option name="INTERPRETER_OPTIONS" value="" />
  314 + <option name="PARENT_ENVS" value="true" />
  315 + <envs />
  316 + <option name="SDK_HOME" value="" />
  317 + <option name="WORKING_DIRECTORY" value="" />
  318 + <option name="IS_MODULE_SDK" value="false" />
  319 + <option name="ADD_CONTENT_ROOTS" value="true" />
  320 + <option name="ADD_SOURCE_ROOTS" value="true" />
  321 + <module name="gravedigger" />
  322 + <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
  323 + <option name="ADDITIONAL_ARGS" value="" />
  324 + <method />
  325 + </configuration>
  326 + <configuration default="true" type="PythonConfigurationType" factoryName="Python">
  327 + <option name="INTERPRETER_OPTIONS" value="" />
  328 + <option name="PARENT_ENVS" value="true" />
  329 + <envs>
  330 + <env name="PYTHONUNBUFFERED" value="1" />
  331 + </envs>
  332 + <option name="SDK_HOME" value="" />
  333 + <option name="WORKING_DIRECTORY" value="" />
  334 + <option name="IS_MODULE_SDK" value="false" />
  335 + <option name="ADD_CONTENT_ROOTS" value="true" />
  336 + <option name="ADD_SOURCE_ROOTS" value="true" />
  337 + <module name="gravedigger" />
  338 + <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
  339 + <option name="SCRIPT_NAME" value="" />
  340 + <option name="PARAMETERS" value="" />
  341 + <option name="SHOW_COMMAND_LINE" value="false" />
  342 + <method />
  343 + </configuration>
  344 + <configuration default="true" type="Tox" factoryName="Tox">
  345 + <option name="INTERPRETER_OPTIONS" value="" />
  346 + <option name="PARENT_ENVS" value="true" />
  347 + <envs />
  348 + <option name="SDK_HOME" value="" />
  349 + <option name="WORKING_DIRECTORY" value="" />
  350 + <option name="IS_MODULE_SDK" value="false" />
  351 + <option name="ADD_CONTENT_ROOTS" value="true" />
  352 + <option name="ADD_SOURCE_ROOTS" value="true" />
  353 + <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
  354 + <module name="gravedigger" />
  355 + <method />
  356 + </configuration>
  357 + <configuration default="true" type="js.build_tools.gulp" factoryName="Gulp.js">
  358 + <method />
  359 + </configuration>
  360 + <configuration default="true" type="js.build_tools.npm" factoryName="npm">
  361 + <command value="run-script" />
  362 + <scripts />
  363 + <node-interpreter value="project" />
  364 + <envs />
  365 + <method />
  366 + </configuration>
  367 + <configuration default="true" type="tests" factoryName="Attests">
  368 + <option name="INTERPRETER_OPTIONS" value="" />
  369 + <option name="PARENT_ENVS" value="true" />
  370 + <envs />
  371 + <option name="SDK_HOME" value="" />
  372 + <option name="WORKING_DIRECTORY" value="" />
  373 + <option name="IS_MODULE_SDK" value="false" />
  374 + <option name="ADD_CONTENT_ROOTS" value="true" />
  375 + <option name="ADD_SOURCE_ROOTS" value="true" />
  376 + <module name="gravedigger" />
  377 + <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
  378 + <option name="SCRIPT_NAME" value="" />
  379 + <option name="CLASS_NAME" value="" />
  380 + <option name="METHOD_NAME" value="" />
  381 + <option name="FOLDER_NAME" value="" />
  382 + <option name="TEST_TYPE" value="TEST_SCRIPT" />
  383 + <option name="PATTERN" value="" />
  384 + <option name="USE_PATTERN" value="false" />
  385 + <method />
  386 + </configuration>
  387 + <configuration default="true" type="tests" factoryName="Doctests">
  388 + <option name="INTERPRETER_OPTIONS" value="" />
  389 + <option name="PARENT_ENVS" value="true" />
  390 + <envs />
  391 + <option name="SDK_HOME" value="" />
  392 + <option name="WORKING_DIRECTORY" value="" />
  393 + <option name="IS_MODULE_SDK" value="false" />
  394 + <option name="ADD_CONTENT_ROOTS" value="true" />
  395 + <option name="ADD_SOURCE_ROOTS" value="true" />
  396 + <module name="gravedigger" />
  397 + <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
  398 + <option name="SCRIPT_NAME" value="" />
  399 + <option name="CLASS_NAME" value="" />
  400 + <option name="METHOD_NAME" value="" />
  401 + <option name="FOLDER_NAME" value="" />
  402 + <option name="TEST_TYPE" value="TEST_SCRIPT" />
  403 + <option name="PATTERN" value="" />
  404 + <option name="USE_PATTERN" value="false" />
  405 + <method />
  406 + </configuration>
  407 + <configuration default="true" type="tests" factoryName="Nosetests">
  408 + <option name="INTERPRETER_OPTIONS" value="" />
  409 + <option name="PARENT_ENVS" value="true" />
  410 + <envs />
  411 + <option name="SDK_HOME" value="" />
  412 + <option name="WORKING_DIRECTORY" value="" />
  413 + <option name="IS_MODULE_SDK" value="false" />
  414 + <option name="ADD_CONTENT_ROOTS" value="true" />
  415 + <option name="ADD_SOURCE_ROOTS" value="true" />
  416 + <module name="gravedigger" />
  417 + <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
  418 + <option name="SCRIPT_NAME" value="" />
  419 + <option name="CLASS_NAME" value="" />
  420 + <option name="METHOD_NAME" value="" />
  421 + <option name="FOLDER_NAME" value="" />
  422 + <option name="TEST_TYPE" value="TEST_SCRIPT" />
  423 + <option name="PATTERN" value="" />
  424 + <option name="USE_PATTERN" value="false" />
  425 + <option name="PARAMS" value="" />
  426 + <option name="USE_PARAM" value="false" />
  427 + <method />
  428 + </configuration>
  429 + <configuration default="true" type="tests" factoryName="Unittests">
  430 + <option name="INTERPRETER_OPTIONS" value="" />
  431 + <option name="PARENT_ENVS" value="true" />
  432 + <envs />
  433 + <option name="SDK_HOME" value="" />
  434 + <option name="WORKING_DIRECTORY" value="" />
  435 + <option name="IS_MODULE_SDK" value="false" />
  436 + <option name="ADD_CONTENT_ROOTS" value="true" />
  437 + <option name="ADD_SOURCE_ROOTS" value="true" />
  438 + <module name="gravedigger" />
  439 + <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
  440 + <option name="SCRIPT_NAME" value="" />
  441 + <option name="CLASS_NAME" value="" />
  442 + <option name="METHOD_NAME" value="" />
  443 + <option name="FOLDER_NAME" value="" />
  444 + <option name="TEST_TYPE" value="TEST_SCRIPT" />
  445 + <option name="PATTERN" value="" />
  446 + <option name="USE_PATTERN" value="false" />
  447 + <option name="PUREUNITTEST" value="true" />
  448 + <option name="PARAMS" value="" />
  449 + <option name="USE_PARAM" value="false" />
  450 + <method />
  451 + </configuration>
  452 + <configuration default="true" type="tests" factoryName="py.test">
  453 + <option name="INTERPRETER_OPTIONS" value="" />
  454 + <option name="PARENT_ENVS" value="true" />
  455 + <envs />
  456 + <option name="SDK_HOME" value="" />
  457 + <option name="WORKING_DIRECTORY" value="" />
  458 + <option name="IS_MODULE_SDK" value="false" />
  459 + <option name="ADD_CONTENT_ROOTS" value="true" />
  460 + <option name="ADD_SOURCE_ROOTS" value="true" />
  461 + <module name="gravedigger" />
  462 + <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
  463 + <option name="SCRIPT_NAME" value="" />
  464 + <option name="CLASS_NAME" value="" />
  465 + <option name="METHOD_NAME" value="" />
  466 + <option name="FOLDER_NAME" value="" />
  467 + <option name="TEST_TYPE" value="TEST_SCRIPT" />
  468 + <option name="PATTERN" value="" />
  469 + <option name="USE_PATTERN" value="false" />
  470 + <option name="testToRun" value="" />
  471 + <option name="keywords" value="" />
  472 + <option name="params" value="" />
  473 + <option name="USE_PARAM" value="false" />
  474 + <option name="USE_KEYWORD" value="false" />
  475 + <method />
  476 + </configuration>
  477 + <list size="1">
  478 + <item index="0" class="java.lang.String" itemvalue="Python.digger" />
  479 + </list>
  480 + <recent_temporary>
  481 + <list size="1">
  482 + <item index="0" class="java.lang.String" itemvalue="Python.digger" />
  483 + </list>
  484 + </recent_temporary>
  485 + </component>
  486 + <component name="ShelveChangesManager" show_recycled="false">
  487 + <option name="remove_strategy" value="false" />
  488 + </component>
  489 + <component name="TaskManager">
  490 + <task active="true" id="Default" summary="Default task">
  491 + <changelist id="33419617-7da8-422e-9ac6-68e0b317ebf8" name="Default" comment="" />
  492 + <created>1477294531575</created>
  493 + <option name="number" value="Default" />
  494 + <option name="presentableId" value="Default" />
  495 + <updated>1477294531575</updated>
  496 + </task>
  497 + <servers />
  498 + </component>
  499 + <component name="ToolWindowManager">
  500 + <frame x="1915" y="31" width="1930" height="1174" extended-state="6" />
  501 + <editor active="true" />
  502 + <layout>
  503 + <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
  504 + <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" />
  505 + <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.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
  506 + <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="-1" side_tool="false" content_ui="tabs" />
  507 + <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.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
  508 + <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.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
  509 + <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32992566" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
  510 + <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" />
  511 + <window_info id="Terminal" 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" />
  512 + <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="-1" side_tool="true" content_ui="tabs" />
  513 + <window_info id="Debug" 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="3" side_tool="false" content_ui="tabs" />
  514 + <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" />
  515 + <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
  516 + <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" />
  517 + <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
  518 + <window_info id="Find" 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" />
  519 + <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" />
  520 + <window_info id="Ant Build" active="false" anchor="right" 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" />
  521 + </layout>
  522 + </component>
  523 + <component name="VcsContentAnnotationSettings">
  524 + <option name="myLimit" value="2678400000" />
  525 + </component>
  526 + <component name="XDebuggerManager">
  527 + <breakpoint-manager />
  528 + <watches-manager />
  529 + </component>
  530 + <component name="editorHistoryManager">
  531 + <entry file="file://$PROJECT_DIR$/scripts/dig.service">
  532 + <provider selected="true" editor-type-id="text-editor">
  533 + <state relative-caret-position="133">
  534 + <caret line="7" column="35" selection-start-line="7" selection-start-column="35" selection-end-line="7" selection-end-column="35" />
  535 + <folding />
  536 + </state>
  537 + </provider>
  538 + </entry>
  539 + <entry file="file://$PROJECT_DIR$/scripts/digger.sh">
  540 + <provider selected="true" editor-type-id="text-editor">
  541 + <state relative-caret-position="133">
  542 + <caret line="7" column="39" selection-start-line="7" selection-start-column="39" selection-end-line="7" selection-end-column="39" />
  543 + <folding />
  544 + </state>
  545 + </provider>
  546 + </entry>
  547 + <entry file="file://$PROJECT_DIR$/modules/__init__.py">
  548 + <provider selected="true" editor-type-id="text-editor">
  549 + <state relative-caret-position="0">
  550 + <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
  551 + <folding />
  552 + </state>
  553 + </provider>
  554 + </entry>
  555 + <entry file="file://$PROJECT_DIR$/modulevar.py">
  556 + <provider selected="true" editor-type-id="text-editor">
  557 + <state relative-caret-position="171">
  558 + <caret line="9" column="29" selection-start-line="9" selection-start-column="29" selection-end-line="9" selection-end-column="29" />
  559 + <folding />
  560 + </state>
  561 + </provider>
  562 + </entry>
  563 + <entry file="file://$PROJECT_DIR$/vars/ntfsvol.py">
  564 + <provider selected="true" editor-type-id="text-editor">
  565 + <state relative-caret-position="247">
  566 + <caret line="13" column="41" selection-start-line="13" selection-start-column="41" selection-end-line="13" selection-end-column="41" />
  567 + <folding />
  568 + </state>
  569 + </provider>
  570 + </entry>
  571 + <entry file="file://$PROJECT_DIR$/modules/mft.py">
  572 + <provider selected="true" editor-type-id="text-editor">
  573 + <state relative-caret-position="266">
  574 + <caret line="14" column="12" selection-start-line="14" selection-start-column="12" selection-end-line="14" selection-end-column="12" />
  575 + <folding />
  576 + </state>
  577 + </provider>
  578 + </entry>
  579 + <entry file="file://$PROJECT_DIR$/module.py">
  580 + <provider selected="true" editor-type-id="text-editor">
  581 + <state relative-caret-position="95">
  582 + <caret line="5" column="19" selection-start-line="5" selection-start-column="19" selection-end-line="5" selection-end-column="19" />
  583 + <folding />
  584 + </state>
  585 + </provider>
  586 + </entry>
  587 + <entry file="file://$PROJECT_DIR$/digger.py">
  588 + <provider selected="true" editor-type-id="text-editor">
  589 + <state relative-caret-position="57">
  590 + <caret line="3" column="25" selection-start-line="3" selection-start-column="25" selection-end-line="3" selection-end-column="25" />
  591 + <folding />
  592 + </state>
  593 + </provider>
  594 + </entry>
  595 + </component>
  596 +</project>
0 \ No newline at end of file 597 \ No newline at end of file
__pycache__/module.cpython-34.pyc 0 → 100644
No preview for this file type
__pycache__/modulevar.cpython-34.pyc 0 → 100644
No preview for this file type
digger.py 0 → 100644
  1 +++ a/digger.py
  1 +#! /usr/bin/env python3
  2 +
  3 +import locale
  4 +from dialog import Dialog
  5 +import glob
  6 +import os
  7 +import sys
  8 +import subprocess as sp
  9 +
  10 +sys.path.append('modules')
  11 +sys.path.append('vars')
  12 +
  13 +vars = {}
  14 +
  15 +def getModules():
  16 + choiceList = []
  17 + modules = []
  18 + for filename in glob.glob('./modules/*.py'):
  19 + modules.append(os.path.splitext(os.path.basename(filename))[0])
  20 + modules.remove('__init__')
  21 +
  22 + for modname in modules:
  23 + try:
  24 + module = __import__(modname)
  25 + instance = module.getInstance(vars)
  26 + choiceList.append((instance.name,instance.description,False))
  27 + del instance
  28 + del module
  29 + sys.modules.pop(modname)
  30 + except Exception as e:
  31 + print("Exception raised while importing " + modname)
  32 +
  33 + choiceList.append(("all","Execute all modules",False))
  34 + return choiceList
  35 +
  36 +def prepareModule(moduleName):
  37 + module = __import__(moduleName).getInstance(vars)
  38 + module.getVars()
  39 + return module
  40 +
  41 +locale.setlocale(locale.LC_ALL, '')
  42 +d = Dialog(dialog="dialog",autowidgetsize=True)
  43 +d.set_background_title("My little program")
  44 +
  45 +moduleList = getModules()
  46 +code, tags = d.checklist("Select modules to execute",
  47 + choices=moduleList,
  48 + title="Module selection")
  49 +if code == d.OK:
  50 + runlist = []
  51 + if "All" in tags:
  52 + for module in moduleList:
  53 + runlist.append(prepareModule(module))
  54 + else:
  55 + for tag in tags:
  56 + runlist.append(prepareModule(tag))
  57 +
  58 + sp.call('clear', shell=True)
  59 +
  60 + for module in runlist:
  61 + print("Running " + module.name + "...")
  62 + try:
  63 + module.run()
  64 + except Exception as e:
  65 + print("Exception raised while running " + module.name + ": " + str(e))
module.py 0 → 100644
  1 +++ a/module.py
  1 +from abc import ABCMeta, abstractmethod
  2 +
  3 +class Module(object):
  4 + __metaclass__ = ABCMeta
  5 +
  6 + sharedVars = {}
  7 + name = ""
  8 + description = ""
  9 + vars = []
  10 +
  11 + @abstractmethod
  12 + def run(self):
  13 + pass
  14 +
  15 + def getVars(self):
  16 + for var in self.vars:
  17 + if var in self.sharedVars:
  18 + continue
  19 + modvar = __import__(var).getInstance()
  20 + modvar.query()
  21 + self.sharedVars[modvar.name] = modvar
0 \ No newline at end of file 22 \ No newline at end of file
modules/__init__.py 0 → 100644
  1 +++ a/modules/__init__.py
modules/__pycache__/mft.cpython-34.pyc 0 → 100644
No preview for this file type
modules/mft.py 0 → 100644
  1 +++ a/modules/mft.py
  1 +from module import Module
  2 +
  3 +def getInstance(vars):
  4 + return MFTModule(vars)
  5 +
  6 +class MFTModule(Module):
  7 +
  8 + def __init__(self,vars):
  9 + self.sharedVars = vars
  10 + self.name = "mft"
  11 + self.description = "Extracts NTFS MFT"
  12 + self.vars = ["ntfsvol"]
  13 +
  14 + def run(self):
  15 + pass
  16 +
modulevar.py 0 → 100644
  1 +++ a/modulevar.py
  1 +from abc import ABCMeta,abstractmethod
  2 +
  3 +class Modulevar(object):
  4 + __metaclass__ = ABCMeta
  5 +
  6 + name = ""
  7 + description = ""
  8 + value = None
  9 +
  10 + def setValue(self,value):
  11 + self.value = value
  12 +
  13 + @abstractmethod
  14 + def query(self):
  15 + pass
0 \ No newline at end of file 16 \ No newline at end of file
scripts/dig.service 0 → 100644
  1 +++ a/scripts/dig.service
  1 +[Unit]
  2 +Description=Gravedigger's start script
  3 +After=getty@tty1.service
  4 +
  5 +[Service]
  6 +Type=simple
  7 +ExecStart=/usr/local/bin/digger.sh
  8 +ExecReload=/usr/local/bin/digger.sh
  9 +StandardInput=tty
  10 +StandardOutput=tty
  11 +TTYPath=/dev/tty1
  12 +Restart=always
  13 +
  14 +[Install]
  15 +WantedBy=default.target
scripts/digger.sh 0 → 100644
  1 +++ a/scripts/digger.sh
  1 +#!/bin/bash
  2 +
  3 +GD_PATH="/opt/gravedigger"
  4 +
  5 +#set tty
  6 +/bin/stty -echoprt
  7 +
  8 +/usr/bin/env python3 $GD_PATH/digger.py
0 \ No newline at end of file 9 \ No newline at end of file
vars/__pycache__/ntfsvol.cpython-34.pyc 0 → 100644
No preview for this file type
vars/ntfsvol.py 0 → 100644
  1 +++ a/vars/ntfsvol.py
  1 +from modulevar import Modulevar
  2 +
  3 +def getInstance():
  4 + return NTFSVol()
  5 +
  6 +class NTFSVol(Modulevar):
  7 +
  8 + def __init__(self):
  9 + self.name = "ntfsvol"
  10 + self.description = "NTFS Volume"
  11 + self.value = None
  12 +
  13 + def query(self):
  14 + print("WHAT IS VAR " + self.name)
0 \ No newline at end of file 15 \ No newline at end of file