added Malcolm
This commit is contained in:
		
							
								
								
									
										77
									
								
								Vagrant/resources/malcolm/moloch/scripts/bs4_remove_div.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										77
									
								
								Vagrant/resources/malcolm/moloch/scripts/bs4_remove_div.py
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,77 @@ | ||||
| #!/usr/bin/env python | ||||
| # -*- coding: utf-8 -*- | ||||
|  | ||||
| from __future__ import print_function | ||||
|  | ||||
| from bs4 import BeautifulSoup | ||||
| import argparse | ||||
| import os | ||||
| import sys | ||||
|  | ||||
| ################################################################################################### | ||||
| debug = False | ||||
| PY3 = (sys.version_info.major >= 3) | ||||
| scriptName = os.path.basename(__file__) | ||||
| scriptPath = os.path.dirname(os.path.realpath(__file__)) | ||||
| origPath = os.getcwd() | ||||
|  | ||||
| ################################################################################################### | ||||
| if not PY3: | ||||
|   if hasattr(__builtins__, 'raw_input'): input = raw_input | ||||
|  | ||||
| try: | ||||
|   FileNotFoundError | ||||
| except NameError: | ||||
|   FileNotFoundError = IOError | ||||
|  | ||||
| ################################################################################################### | ||||
| # print to stderr | ||||
| def eprint(*args, **kwargs): | ||||
|   print(*args, file=sys.stderr, **kwargs) | ||||
|  | ||||
| ################################################################################################### | ||||
| # convenient boolean argument parsing | ||||
| def str2bool(v): | ||||
|   if v.lower() in ('yes', 'true', 't', 'y', '1'): | ||||
|     return True | ||||
|   elif v.lower() in ('no', 'false', 'f', 'n', '0'): | ||||
|     return False | ||||
|   else: | ||||
|     raise argparse.ArgumentTypeError('Boolean value expected.') | ||||
|  | ||||
| ################################################################################################### | ||||
| # main | ||||
| def main(): | ||||
|   global debug | ||||
|  | ||||
|   parser = argparse.ArgumentParser(description=scriptName, add_help=False, usage='{} <arguments>'.format(scriptName)) | ||||
|   parser.add_argument('-v', '--verbose', dest='debug', type=str2bool, nargs='?', const=True, default=False, help="Verbose output") | ||||
|   parser.add_argument('-i', '--input', required=True, metavar='<STR>', type=str, help='Input file') | ||||
|   parser.add_argument('-o', '--output', required=True, metavar='<STR>', type=str, help='Output file') | ||||
|   parser.add_argument('-c', '--div-class', required=True, dest='divClass', metavar='<STR>', type=str, default='', help='div class to remove') | ||||
|   parser.add_argument('-p', '--parser', required=False, dest='parser', metavar='<STR>', type=str, default='html.parser', help='BeautifulSoup parser') | ||||
|   parser.add_argument('-e', '--encoding', required=False, dest='encoding', metavar='<STR>', type=str, default='utf-8', help='Encoding for output file') | ||||
|   try: | ||||
|     parser.error = parser.exit | ||||
|     args = parser.parse_args() | ||||
|   except SystemExit: | ||||
|     parser.print_help() | ||||
|     exit(2) | ||||
|  | ||||
|   debug = args.debug | ||||
|   if debug: | ||||
|     eprint(os.path.join(scriptPath, scriptName)) | ||||
|     eprint("Arguments: {}".format(sys.argv[1:])) | ||||
|     eprint("Arguments: {}".format(args)) | ||||
|   else: | ||||
|     sys.tracebacklimit = 0 | ||||
|  | ||||
|   soup = BeautifulSoup(open(args.input), args.parser) | ||||
|   for div in soup.find_all("div", { 'class' : args.divClass }): | ||||
|     div.decompose() | ||||
|  | ||||
|   with open(args.output, 'wb') as f: | ||||
|     f.write(soup.prettify(args.encoding)) | ||||
|  | ||||
| if __name__ == '__main__': | ||||
|   main() | ||||
							
								
								
									
										75
									
								
								Vagrant/resources/malcolm/moloch/scripts/initmoloch.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										75
									
								
								Vagrant/resources/malcolm/moloch/scripts/initmoloch.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,75 @@ | ||||
| #!/bin/bash | ||||
|  | ||||
| # Copyright (c) 2021 Battelle Energy Alliance, LLC.  All rights reserved. | ||||
|  | ||||
| rm -f /var/run/moloch/initialized /var/run/moloch/runwise | ||||
|  | ||||
| echo "Giving Elasticsearch time to start..." | ||||
| /data/elastic_search_status.sh 2>&1 && echo "Elasticsearch is running!" | ||||
|  | ||||
| # download and/or update geo updates | ||||
| $ARKIMEDIR/bin/moloch_update_geo.sh | ||||
|  | ||||
| # start and wait patiently for WISE | ||||
| if [[ "$WISE" = "on" ]] ; then | ||||
|   touch /var/run/moloch/runwise | ||||
|   echo "Giving WISE time to start..." | ||||
|   sleep 5 | ||||
|   until curl -sSf --output /dev/null "http://127.0.0.1:8081/fields?ver=1" | ||||
|   do | ||||
|       echo "Waiting for WISE to start" | ||||
|       sleep 1 | ||||
|   done | ||||
|   echo "WISE is running!" | ||||
|   echo | ||||
| fi | ||||
|  | ||||
| # initialize the contents of the Elasticearch database if it has never been initialized (ie., the users_v# table hasn't been created) | ||||
| if [[ $(curl -fs -XGET -H'Content-Type: application/json' "http://$ES_HOST:$ES_PORT/_cat/indices/users_v*" | wc -l) < 1 ]]; then | ||||
|  | ||||
|   echo "Initializing Elasticsearch database..." | ||||
|  | ||||
| 	$ARKIMEDIR/db/db.pl http://$ES_HOST:$ES_PORT initnoprompt | ||||
|  | ||||
| 	# this password isn't going to be used by Arkime, nginx will do the auth instead | ||||
| 	$ARKIMEDIR/bin/moloch_add_user.sh "${MALCOLM_USERNAME}" "${MALCOLM_USERNAME}" "ignored" --admin --webauthonly --webauth | ||||
|  | ||||
|   # this is a hacky way to get all of the Arkime-parseable field definitions put into E.S. | ||||
|   touch /tmp/not_a_packet.pcap | ||||
|   $ARKIMEDIR/bin/moloch-capture --packetcnt 0 -r /tmp/not_a_packet.pcap >/dev/null 2>&1 | ||||
|   rm -f /tmp/not_a_packet.pcap | ||||
|  | ||||
|   #set some default settings I want for moloch | ||||
|   curl -sS -H'Content-Type: application/json' -XPOST http://$ES_HOST:$ES_PORT/users_v7/user/$MALCOLM_USERNAME/_update -d "@$ARKIMEDIR/etc/user_settings.json" | ||||
|  | ||||
|   echo -e "\nElasticsearch database initialized!\n" | ||||
|  | ||||
| else | ||||
|   echo "Elasticsearch database previously initialized!" | ||||
|   echo | ||||
|  | ||||
|   if /data/moloch-needs-upgrade.sh 2>&1; then | ||||
|     echo "Elasticsearch database needs to be upgraded for $ARKIME_VERSION!" | ||||
|     $ARKIMEDIR/db/db.pl http://$ES_HOST:$ES_PORT upgradenoprompt | ||||
|     echo "Elasticsearch database upgrade complete!" | ||||
|     echo | ||||
|  | ||||
|   else | ||||
|     echo "Elasticsearch database is up-to-date for Arkime version $ARKIME_VERSION!" | ||||
|     echo | ||||
|  | ||||
|   fi # if /data/moloch-needs-upgrade.sh | ||||
| fi # if/else Elasticsearch database initialized | ||||
|  | ||||
| # increase Elasticsearch max shards per node from default if desired | ||||
| if [[ -n $ES_MAX_SHARDS_PER_NODE ]]; then | ||||
|   # see https://github.com/elastic/elasticsearch/issues/40803 | ||||
|   curl -sS -H'Content-Type: application/json' -XPUT http://$ES_HOST:$ES_PORT/_cluster/settings -d "{ \"persistent\": { \"cluster.max_shards_per_node\": \"$ES_MAX_SHARDS_PER_NODE\" } }" | ||||
| fi | ||||
|  | ||||
| # before running viewer, call _refresh to make sure everything is available for search first | ||||
| curl -sS -XPOST http://$ES_HOST:$ES_PORT/_refresh | ||||
|  | ||||
| touch /var/run/moloch/initialized | ||||
|  | ||||
| # the (viewer|wise)_service.sh scripts will start/restart those processes | ||||
							
								
								
									
										45
									
								
								Vagrant/resources/malcolm/moloch/scripts/moloch-needs-upgrade.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										45
									
								
								Vagrant/resources/malcolm/moloch/scripts/moloch-needs-upgrade.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,45 @@ | ||||
| #!/bin/bash | ||||
|  | ||||
| # Copyright (c) 2021 Battelle Energy Alliance, LLC.  All rights reserved. | ||||
|  | ||||
| # this script returns: | ||||
| #   0 - an UPGRADE IS NEEDED for Arkime indices | ||||
| #   1 - an UPGRADE IS NOT NEEDED for Arkime indices | ||||
| RETURN_CODE=1 | ||||
|  | ||||
| set -e | ||||
|  | ||||
| # see Arkime's db.pl (https://github.com/arkime/arkime/blob/master/db/db.pl) near the bottom for this list | ||||
|  declare -A ARKIME_INDEX_CURRENT_VERSIONS=( | ||||
|   [dstats_v]=dstats_v4 | ||||
|   [fields_v]=fields_v3 | ||||
|   [files_v]=files_v6 | ||||
|   [hunts_v]=hunts_v2 | ||||
|   [lookups_v]=lookups_v1 | ||||
|   [queries_v]=queries_v3 | ||||
|   [sequence_v]=sequence_v3 | ||||
|   [stats_v]=stats_v4 | ||||
|   [users_v]=users_v7 | ||||
| ) | ||||
|  | ||||
| # get a list of all current indices and loop over them | ||||
| while read INDEX_NAME; do | ||||
|  | ||||
|   # for each current index, check to see if it's one of the Arkime indices (prefixed by | ||||
|   # the key of ARKIME_INDEX_CURRENT_VERSIONS) | ||||
|   for INDEX_PREFIX in "${!ARKIME_INDEX_CURRENT_VERSIONS[@]}"; do | ||||
|     if [[ ${INDEX_NAME} = ${INDEX_PREFIX}* ]]; then | ||||
|  | ||||
|       # if this is a Arkime index, make sure the version matches what we think it should | ||||
|       if [[ ${INDEX_NAME} != ${ARKIME_INDEX_CURRENT_VERSIONS[$INDEX_PREFIX]} ]]; then | ||||
|         RETURN_CODE=0 | ||||
|         echo "${INDEX_NAME}:${ARKIME_INDEX_CURRENT_VERSIONS[$INDEX_PREFIX]}" 1>&2 | ||||
|         break | ||||
|       fi # compare INDEX_NAME vs. full Arkime index name with version | ||||
|  | ||||
|     fi # compare INDEX_NAME vs. INDEX_PREFIX | ||||
|   done # loop over ARKIME_INDEX_CURRENT_VERSIONS | ||||
|  | ||||
| done <<<$(curl -fsS -H"Content-Type: application/json" -XGET "http://$ES_HOST:$ES_PORT/_cat/indices?v" | tail -n +2 | awk '{print $3}') | ||||
|  | ||||
| exit $RETURN_CODE | ||||
							
								
								
									
										27
									
								
								Vagrant/resources/malcolm/moloch/scripts/moloch_update_geo.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										27
									
								
								Vagrant/resources/malcolm/moloch/scripts/moloch_update_geo.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,27 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
| # Copyright (c) 2021 Battelle Energy Alliance, LLC.  All rights reserved. | ||||
|  | ||||
| cd "${ARKIMEDIR:-/data/moloch}"/etc | ||||
|  | ||||
| wget -nv --no-check-certificate -O ipv4-address-space.csv_new https://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.csv && \ | ||||
|   mv -f ipv4-address-space.csv_new ipv4-address-space.csv || \ | ||||
|   rm -f ipv4-address-space.csv_new | ||||
|  | ||||
| wget -nv -O oui.txt_new https://raw.githubusercontent.com/wireshark/wireshark/master/manuf && \ | ||||
|   mv -f oui.txt_new oui.txt || \ | ||||
|   rm -f oui.txt_new | ||||
|  | ||||
| # MaxMind now requires a (free) license key to download the free versions of | ||||
| # their GeoIP databases. This should be provided as an environment variable. | ||||
| #   see https://dev.maxmind.com/geoip/geoipupdate/#Direct_Downloads | ||||
| #   see https://github.com/arkime/arkime/issues/1350 | ||||
| #   see https://github.com/arkime/arkime/issues/1352 | ||||
| if [ ${#MAXMIND_GEOIP_DB_LICENSE_KEY} -gt 1 ]; then | ||||
|   for DB in ASN Country City; do | ||||
|     curl -s -S -L -o "GeoLite2-$DB.mmdb.tar.gz" "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-$DB&license_key=$MAXMIND_GEOIP_DB_LICENSE_KEY&suffix=tar.gz" && \ | ||||
|       tar xf "GeoLite2-$DB.mmdb.tar.gz" --wildcards --no-anchored '*.mmdb' --strip=1 && \ | ||||
|       chmod 644 "GeoLite2-$DB.mmdb" && \ | ||||
|       rm -f "GeoLite2-$DB.mmdb.tar.gz" | ||||
|   done | ||||
| fi | ||||
							
								
								
									
										13
									
								
								Vagrant/resources/malcolm/moloch/scripts/viewer_service.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										13
									
								
								Vagrant/resources/malcolm/moloch/scripts/viewer_service.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| #!/bin/bash | ||||
|  | ||||
| # Copyright (c) 2021 Battelle Energy Alliance, LLC.  All rights reserved. | ||||
|  | ||||
|  | ||||
| while true; do | ||||
|   if [[ -f /var/run/moloch/initialized && "$VIEWER" == "on" ]]; then | ||||
|     echo "Launch viewer..." | ||||
|     cd $ARKIMEDIR/viewer | ||||
|     $ARKIMEDIR/bin/node viewer.js -c $ARKIMEDIR/etc/config.ini | tee -a $ARKIMEDIR/logs/viewer.log 2>&1 | ||||
|   fi | ||||
|   sleep 5 | ||||
| done | ||||
							
								
								
									
										15
									
								
								Vagrant/resources/malcolm/moloch/scripts/wipemoloch.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										15
									
								
								Vagrant/resources/malcolm/moloch/scripts/wipemoloch.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| #!/bin/bash | ||||
|  | ||||
| # Copyright (c) 2021 Battelle Energy Alliance, LLC.  All rights reserved. | ||||
|  | ||||
|  | ||||
| echo "Checking Elasticsearch..." | ||||
| /data/elastic_search_status.sh 2>&1 && echo "Elasticsearch is running!" | ||||
|  | ||||
| #Wipe is the same initalize except it keeps users intact | ||||
| echo WIPE | /data/moloch/db/db.pl http://$ES_HOST:$ES_PORT wipe | ||||
|  | ||||
| #this is a hacky way to get all of the parseable field definitions put into E.S. | ||||
| touch /tmp/not_a_packet.pcap | ||||
| $ARKIMEDIR/bin/moloch-capture --packetcnt 0 -r /tmp/not_a_packet.pcap >/dev/null 2>&1 | ||||
| rm -f /tmp/not_a_packet.pcap | ||||
							
								
								
									
										14
									
								
								Vagrant/resources/malcolm/moloch/scripts/wise_service.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										14
									
								
								Vagrant/resources/malcolm/moloch/scripts/wise_service.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,14 @@ | ||||
| #!/bin/bash | ||||
|  | ||||
| # Copyright (c) 2021 Battelle Energy Alliance, LLC.  All rights reserved. | ||||
|  | ||||
|  | ||||
| while true; do | ||||
|   if [[ ("$WISE" == "on") && (-f /var/run/moloch/runwise) && (-f $ARKIMEDIR/etc/wise.ini) ]]; then | ||||
|     echo "Launch wise..." | ||||
|     pushd $ARKIMEDIR/wiseService >/dev/null 2>&1 | ||||
|     $ARKIMEDIR/bin/node wiseService.js -c $ARKIMEDIR/etc/wise.ini | ||||
|     popd >/dev/null 2>&1 | ||||
|   fi | ||||
|   sleep 5 | ||||
| done | ||||
		Reference in New Issue
	
	Block a user