Like query.rb, with some improvements
Early stage, tests are welcome
- Bolt protocol support
- Neo4j authentication
- Faster
- replacement for
info
,nodes
andpath
arguments of query.rb are not available yet
Only Python3 is supported
python3 -m pip install -r requirements.txt
Usage: query.py [OPTIONS] COMMAND [ARGS]...
Options:
--lang TEXT Language to use
--maxdepth INTEGER maximum length for control paths
--neo4j TEXT neo4j connection URI
--workdir DIRECTORY Root of ADCP dump directory
-v, --verbose Increase verbosity (add more to increase)
-o, --options TEXT Extra options to tweak behavior
--noprompt Disable application prompt (useful for batches)
--help Show this message and exit.
Commands:
full
graph
list_aliases
search
lang
defaults to en, only en and fr are availableneo4j
defaults tobolt://localhost
maxdepth
default to 20 (like query.rb)workdir
should be the dump folder named yyyymmdd_domainnameoptions
defaults to+deny
[+-]deny
+
produces the full graph with denied nodes (tagged DENY),-
remove denied relations and orphan nodes
list_aliases
list aliases (like adm_dom or guests)search [needle]
return the list of node ids and dngraph [search] [direction] [outfile]
produces the control graph in json format (usable by OVALI)full [outdir]
produces all graphs in output directory
query.rb --quick
replacement:
python3 query.py --workdir=[path_to dumps] --neo4j=bolt://user:password@localhost graph adm_dom to dump.json
query.rb --full
replacement:
python3 query.py --workdir=[path_to dumps] --neo4j=bolt://user:password@localhost full out
Some tests are available in the tests folder. They are used by test_adcp.py
(unittests).
All of these tests use 100 nodes (TEST_0 to TEST_99)
- 1
- The nodes TEST_X* are GROUP_MEMBER of TEST_X
- 2
- Same as 1
- TEST_2 has a control link (STAND_RIGHT_WRITE_DAC) to TEST_1
- All nodes TEST*7_ have a DENY (STAND_RIGHT_WRITE_DAC) to TEST_1
- 3
- Same as 2
- TEST_3 has a control link (STAND_RIGHT_WRITE_DAC) to TEST_2
- TEST_4 has a control link (STAND_RIGHT_WRITE_DAC) to TEST_3
- 4
- Same as 2
- All TEST_i have a control link (STAND_RIGHT_WRITE_DAC) to TEST_i+1
- TEST_9 has a control link (STAND_RIGHT_WRITE_DAC) to TEST_1 (loop)
- 5
- Same as 1
- All TEST_i have 5 control links (STAND_RIGHT_WRITE_DAC, STAND_RIGHT_WRITE_OWNER, WRITE_PROP_ALL, FS_RIGHT_WRITEDATA_ADDFILE, FS_RIGHT_APPENDDATA_ADDSUBDIR) to TEST_i+1 (no loop)
- All nodes TEST*7_ have a DENY (STAND_RIGHT_WRITE_DAC) to TEST_1
- All nodes TEST*8_ have 5 DENY (same as control links) to TEST_1
Tests can be loaded manually with tests/load_test.py [load|clean] <test_id>
(n.b. the script must be run from the root folder)