diff --git a/inst/testing/nemo1/README.txt b/inst/testing/nemo1/README.txt index 1ec124fd50e4045feec031adff4feaa759bc9159..f7e58d56eb122186c38e196ec6e6883df334bff9 100644 --- a/inst/testing/nemo1/README.txt +++ b/inst/testing/nemo1/README.txt @@ -1,4 +1,29 @@ += all-in-one-build of NeMo-detection+mitigation container and Freertr router + test hosts + +pre-requisites: docker, ethtool + +1.) clone all nemo-repos as subdirs here (including ./nemo-docker) + +2.) run ./mynemo-docker-dind --allx +(will build and start everything; +finally will run vsmd process in foreground (in vsmd1 inner container); Please keep it running! +(TODO: run vsmd in background as a daemon controlled by systemd in vsmd1 inner container) ) + +3.) (in other terminal:) run ./mynemo-docker-dind --nemo-get-filename-of-certfile # get location of HTTPS cert file (accessible as root, to be imported into your web browser) + +4.) access localhost port 443 via your web browser, with the HTTPS certfile from 3. installed +(if you need to re-install a new version of this HTTPS certificate, do not forget to retract the previous version) + +If the terminal where vsmd runs in foreground is closed for any reason, or vsmd therein is stopped or so, +you can restart vsmd in foreground again by: +./mynemo-docker-dind --run-vsmd-in-vsmd-container + + +... + +======== + = build+run nemo docker-in-docker container together with freertr+attack/victim-hosts docker-compose 0) diff --git a/inst/testing/nemo1/mynemo-docker-dind b/inst/testing/nemo1/mynemo-docker-dind index 3ffca39651b7d529fc595d89b1c5c01760d09905..2ae7f027618817885c17a856e8779b62af69dfa3 100755 --- a/inst/testing/nemo1/mynemo-docker-dind +++ b/inst/testing/nemo1/mynemo-docker-dind @@ -60,6 +60,7 @@ fi #xarg ./mynemo-docker-dind --docker.containerids # get inside container ids #xarg #xarg ./mynemo-docker-dind --setup-and-run-vsmd-container # setup and run vsmd inner container; finally run vsmd in foreground +#xarg ./mynemo-docker-dind --run-vsmd-in-vsmd-container # re-run vsmd in foreground in vsmd inner container #xarg #xarg 3. related to freertr+host1+host2 docker-compose: #xarg @@ -80,6 +81,8 @@ docker_outer_volume_forinnerdockerdir="dind1" outer_https_port="8000" +extra_port_redirection_args=(-p "8025:8025") + docker_log_postfix="_1" # has to be consistent with docker_outer__container_name? # @@ -210,7 +213,7 @@ elif [ "$1" = "--docker-build" ]; then #arg ## echo "# starting new debian-docker-in-docker container:" 1>&2 - (set -x; docker run -d --privileged --volume "$SSH_AUTH_SOCK:/ssh-auth-sock" --volume "$docker_outer_volume_forinnerdockerdir:/var/lib/docker/" --hostname "$docker_outer_hostname" --name "$docker_outer__container_name" -t -p "$outer_https_port:443" "$docker_outer__image_name") + (set -x; docker run -d --privileged --volume "$SSH_AUTH_SOCK:/ssh-auth-sock" --volume "$docker_outer_volume_forinnerdockerdir:/var/lib/docker/" --hostname "$docker_outer_hostname" --name "$docker_outer__container_name" -t -p "$outer_https_port:443" "${extra_port_redirection_args[@]}" "$docker_outer__image_name") #(set -x; docker run -d --privileged --net dind-mgmt --net nemo-flow-input --volume "$SSH_AUTH_SOCK:/ssh-auth-sock" --volume "$docker_outer_volume_forinnerdockerdir:/var/lib/docker/" --hostname "$docker_outer_hostname" --name "$docker_outer__container_name" -t -p 8000:443 "$docker_outer__image_name") #(set -x; docker run -d --privileged --net dind-mgmt --volume "$SSH_AUTH_SOCK:/ssh-auth-sock" --volume "$docker_outer_volume_forinnerdockerdir:/var/lib/docker/" --hostname "$docker_outer_hostname" --name "$docker_outer__container_name" -t -p 8000:443 "$docker_outer__image_name") docker network connect "$network1_name" "$docker_outer__container_name" @@ -509,13 +512,15 @@ elif [ "$1" = "--all1" ]; then #arg # --all --prune --verbose shift 1 #exec "$0" --all --prune --verbose "$@" #arg rest - exec "$0" --build-and-setup --prune --verbose "$@" #arg rest + #exec "$0" --build-and-setup --prune --verbose "$@" #arg rest + exec "$0" --build-and-setup --prune --verbose --dev "$@" #arg rest elif [ "$1" = "--all0" ]; then #arg # --all --prune --verbose shift 1 #exec "$0" --build-and-bash --build-without-data -c './mygit_clone_nemo0 && cd nemo-docker && ./setup.sh "$@"' -- "$@" #arg rest - exec "$0" --build-and-setup --build-without-data --prune --pre-setup-shcode "./mygit_clone_nemo0" --verbose + #exec "$0" --build-and-setup --build-without-data --prune --pre-setup-shcode "./mygit_clone_nemo0" --verbose + exec "$0" --build-and-setup --build-without-data --prune --pre-setup-shcode "./mygit_clone_nemo0" --verbose --dev #arg @@ -526,6 +531,11 @@ elif [ "$1" = "--setup-and-run-vsmd-container" ]; then #arg # prep vsmd inner do #"$0" --exec ./mynemo-mitigation-vsmd-install "$0" --exec ./mynemo-mitigation-init-container.sh +elif [ "$1" = "--run-vsmd-in-vsmd-container" ]; then #arg # just run vsmd in vsmd continer in foreground + shift 1 + + "$0" --exec ./mynemo-mitigation-vsmd-run-in-container + #arg elif [ "$1" = "--freertr-testnet-prep-and-run" ]; then #arg # prep and run docker-compose for freertr+host1+host2 (started in back-ground) @@ -757,7 +767,7 @@ elif [ "$1" = "--allx" ]; then #arg # all-in-one mode set -x # build and init nemo-outer container and build and init and run all detection container inside - "$0" --all1 + "$0" --all1 "$@" # init frnet comprising freertr router and host1/host2 test network "$0" --freertr-testnet-prep-and-run diff --git a/inst/testing/nemo1/mynemo-mitigation-vsmd-run-in-container b/inst/testing/nemo1/mynemo-mitigation-vsmd-run-in-container new file mode 100755 index 0000000000000000000000000000000000000000..f36944c5709781cc430650d48fd36b7ef42f5610 --- /dev/null +++ b/inst/testing/nemo1/mynemo-mitigation-vsmd-run-in-container @@ -0,0 +1,18 @@ +#!/bin/bash +# + +## + +container_name="$1" +shift 1 + +[ -n "$container_name" ] || container_name="vsmd1" + +## + +# assumes an initialized and running inner container, having been setup by ./mynemo-mitigation-init-container.sh before +# just re-runs last action of ./mynemo-mitigation-init-container.sh, which is to run vsmd process in foreground + +#docker exec -ti "$container_name" ./mynemo-mitigation-vsmd-install-and-run +docker exec -ti "$container_name" ./mynemo-mitigation-vsmd-run + diff --git a/inst/testing/nemo1/nemo-outer/nemo-mitigation/vsmd-rootfs/home/freerouter/stats.py b/inst/testing/nemo1/nemo-outer/nemo-mitigation/vsmd-rootfs/home/freerouter/stats.py index b1b98392ba0d15910850821ec40997b526f894b3..91c32552d88bf9f68a88dcf4104ea16ffd117567 100755 --- a/inst/testing/nemo1/nemo-outer/nemo-mitigation/vsmd-rootfs/home/freerouter/stats.py +++ b/inst/testing/nemo1/nemo-outer/nemo-mitigation/vsmd-rootfs/home/freerouter/stats.py @@ -91,9 +91,31 @@ for item in fileinput.input(): afi = "IPv4" dest_net = line[14] source_net = line[11] + + add_opts_str="" + proto = line[10].split("-")[0] - sport = line[13].split("-")[0] + proto = proto.rstrip() + if proto=="all": + proto="" + if proto!="": + add_opts_str=add_opts_str+",Proto:="+str(proto) + dport = line[16].split("-")[0] + dport = dport.rstrip() + if dport=="all": + dport="" + if dport!="": + print("using dport="+str(dport)+".") + add_opts_str=add_opts_str+",DPort:="+str(dport) + + sport = line[13].split("-")[0] + sport = sport.rstrip() + if sport=="all": + sport="" + if sport!="": + add_opts_str=add_opts_str+",SPort:="+str(sport) + match = line[7].split("=")[1].replace(")", "") match_left = match.split("(")[0] match_right = match.split("(")[1] @@ -117,7 +139,8 @@ for item in fileinput.input(): match_left = match_left, match_right = match_right, drop_left = drop_left, - drop_right = drop_right + drop_right = drop_right, + add_opts_str = add_opts_str ) #print("content="+str(content)) diff --git a/inst/testing/nemo1/nemo-outer/nemo-mitigation/vsmd-rootfs/home/freerouter/templates/template.txt b/inst/testing/nemo1/nemo-outer/nemo-mitigation/vsmd-rootfs/home/freerouter/templates/template.txt index 64254705b892e0e2a46d9d7c5b8ca70237322750..25084c929d73cf1cafd4e65e98ffeb12a07b8b16 100644 --- a/inst/testing/nemo1/nemo-outer/nemo-mitigation/vsmd-rootfs/home/freerouter/templates/template.txt +++ b/inst/testing/nemo1/nemo-outer/nemo-mitigation/vsmd-rootfs/home/freerouter/templates/template.txt @@ -1,5 +1,5 @@ AFI: {{ afi }} -Flow :Dest:{{ dest_net }}/{{ dest_mask }},Source:{{ source_net }}/{{ source_mask }},Proto:={{ proto }},DPort:={{ dport }},SPort:={{ sport }} +Flow :Dest:{{ dest_net }}/{{ dest_mask }},Source:{{ source_net }}/{{ source_mask }}{{ add_opts_str }} Actions : discard Synced: TRUE Last Error: 0:No error diff --git a/install-centos.sh b/install-centos.sh index 4167658b2f1aefc990dfabc72c54e86afadad4d6..fb03305bc087ed764291bd5bbbc4370fd756f6b8 100755 --- a/install-centos.sh +++ b/install-centos.sh @@ -502,10 +502,12 @@ fi python_version="$(python3 --version | cut -d ' ' -f 2,2)" if [ "$assume__sqlite_version__to_old" = 1 ]; then echo "$0: assume__sqlite_version__to_old=$assume__sqlite_version__to_old => using requirements-centos.txt" 1>&2 - cp "$fod_dir/requirements-centos.txt" "$fod_dir/requirements.txt" + #cp "$fod_dir/requirements-centos.txt" "$fod_dir/requirements.txt" + cp "$fod_dir/requirements.txt.d/requirements-centos.txt" "$fod_dir/requirements.txt" elif [ -e "$fod_dir/requirements.txt.python$python_version" ]; then echo "$0: using python version specific $fod_dir/requirements.txt.python$python_version" 1>&2 - cp "$fod_dir/requirements.txt.python$python_version" "$fod_dir/requirements.txt" + #cp "$fod_dir/requirements.txt.python$python_version" "$fod_dir/requirements.txt" + cp "$fod_dir/requirements.txt.d/requirements.txt.python$python_version" "$fod_dir/requirements.txt" else echo "$0: using $fod_dir/requirements.txt" 1>&2 fi diff --git a/install-debian.sh b/install-debian.sh index 3bb580b79790c1b517f8b039acea1edb23dbad8d..3ae44e55311bc2a026f8bd2a136fc53cb50ff096 100755 --- a/install-debian.sh +++ b/install-debian.sh @@ -48,6 +48,8 @@ fi ############################################################################# ############################################################################# +show_env_for_debugging=0 + fod_dir="/srv/flowspy" venv_dir="/srv/venv" @@ -148,6 +150,11 @@ ifc_setup__wait_for_ifc__in_runfod=0 findfix_file_permissions=1 +# + +requirements_txt__filename_relative__default="requirements.txt" +requirements_txt__filename_relative="$requirements_txt__filename_relative__default" + ############################################################################## ############################################################################## @@ -332,7 +339,7 @@ while [ $# -gt 0 ]; do install_basesw_os=1 #install_basesw_python=0 #install_fodproper=0 - elif [ $# -ge 1 -a "$1" = "--basesw_python" ]; then + elif [ $# -ge 1 -a \( "$1" = "--basesw_python" -o "$1" = "--python-update-only" \) ]; then shift 1 install_default_used=0 @@ -353,6 +360,13 @@ while [ $# -gt 0 ]; do #install_basesw_os=0 #install_basesw_python=0 install_fodproper=1 + elif [ $# -ge 1 -a \( "$1" = "--pyrequirements" \) ]; then + shift 1 + requirements_txt__filename_relative="$1" + shift 1 + elif [ "$1" = "--show-env" ]; then + shift 1 + show_env_for_debugging=1 elif [ $# -ge 1 -a \( "$1" = "--supervisor" -o "$1" = "--supervisord" \) ]; then shift 1 install_with_supervisord=1 @@ -685,11 +699,16 @@ python_version="$(python3 --version | cut -d ' ' -f 2,2)" #if [ "$assume__sqlite_version__to_old" = 1 ]; then # echo "$0: assume__sqlite_version__to_old=$assume__sqlite_version__to_old => using requirements-centos.txt" 1>&2 # cp "$fod_dir/requirements-centos.txt" "$fod_dir/requirements.txt" -if [ -e "$fod_dir/requirements.txt.python$python_version" ]; then - echo "$0: using python version specific $fod_dir/requirements.txt.python$python_version" 1>&2 - cp "$fod_dir/requirements.txt.python$python_version" "$fod_dir/requirements.txt" +if [ "$requirements_txt__filename_relative" != "$requirements_txt__filename_relative__default" ]; then + echo "python reqs: using $fod_dir/$requirements_txt__filename_relative" 1>&2 + cp -f "$fod_dir/$requirements_txt__filename_relative" "$fod_dir/requirements.txt" else - echo "$0: using $fod_dir/requirements.txt" 1>&2 + if [ -e "$fod_dir/requirements.txt.python$python_version" ]; then + echo "python reqs: using python version specific $fod_dir/requirements.txt.python$python_version" 1>&2 + cp -f "$fod_dir/requirements.txt.d/requirements.txt.python$python_version" "$fod_dir/requirements.txt" + else + echo "python reqs: using default $fod_dir/$requirements_txt__filename_relative__default" 1>&2 + fi fi ############################################################################# @@ -800,7 +819,9 @@ if [ "$install_fodproper" = 1 ]; then source "$venv_dir/bin/activate" - export 1>&2 + if [ "$show_env_for_debugging" = 1 ]; then + export 1>&2 + fi ## diff --git a/requirements.txt b/requirements.txt index cd1303262f17132b480a4cd31693fc96acc9ed2e..6ec5cf42edbeec0901d6bb936c4dd1104ce72190 100644 --- a/requirements.txt +++ b/requirements.txt @@ -27,7 +27,7 @@ PyYAML #wsgiref six requests -pysnmp +pysnmp<=5.1.0 ply ipaddress idna diff --git a/requirements-centos.txt b/requirements.txt.d/requirements-centos.txt similarity index 100% rename from requirements-centos.txt rename to requirements.txt.d/requirements-centos.txt diff --git a/requirements.txt.d/requirements.txt.freeze-py3.10.12 b/requirements.txt.d/requirements.txt.freeze-py3.10.12 new file mode 100644 index 0000000000000000000000000000000000000000..14ee7cc7918442fad97a36a3010dfebd46c1a815 --- /dev/null +++ b/requirements.txt.d/requirements.txt.freeze-py3.10.12 @@ -0,0 +1,81 @@ +amqp==5.2.0 +anyjson==0.3.3 +appdirs==1.4.4 +asgiref==3.8.1 +async-timeout==4.0.3 +attrs==24.2.0 +bcrypt==4.2.0 +billiard==3.6.4.0 +celery==5.2.3 +certifi==2024.8.30 +cffi==1.17.1 +charset-normalizer==3.4.0 +cl==0.0.3 +click==8.1.7 +click-didyoumean==0.3.1 +click-plugins==1.1.1 +click-repl==0.3.0 +confusable-homoglyphs==3.3.1 +cryptography==43.0.1 +Django==3.2.16 +django-admin==2.0.2 +django-excel-response2==3.0.6 +django-form-utils==1.0.3 +django-picklefield==2.0 +django-registration==3.1.2 +django-settings-export==1.2.1 +django-six==1.0.5 +django-tinymce==4.1.0 +djangorestframework==3.12.0 +excel-base==1.0.4 +gevent==24.10.2 +greenlet==3.1.1 +gunicorn==23.0.0 +idna==3.10 +iniconfig==2.0.0 +intervaltree==3.1.0 +ipaddress==1.0.23 +isoweek==1.3.3 +kombu==5.2.3 +longerusername==0.4 +lxml==5.3.0 +mailer==0.8.1 +mysqlclient==2.2.4 +ncclient==0.6.16 +packaging==24.1 +paramiko==3.5.0 +pluggy==1.5.0 +ply==3.11 +prompt_toolkit==3.0.48 +psutil==6.1.0 +py==1.11.0 +pyasn1==0.4.8 +pycparser==2.22 +pycrypto==2.6.1 +PyNaCl==1.5.0 +pyparsing==3.2.0 +pysmi==1.2.1 +pysnmp==5.1.0 +pysnmpcrypto==0.0.4 +pytest==6.2.5 +pytest-django==4.4.0 +python-dateutil==2.9.0.post0 +python-memcached==1.62 +pytz==2024.2 +PyYAML==6.0.2 +redis==5.1.1 +requests==2.32.3 +screen==1.0.1 +six==1.16.0 +sortedcontainers==2.4.0 +sqlparse==0.5.1 +TimeConvert==3.0.13 +toml==0.10.2 +typing_extensions==4.12.2 +tzlocal==5.2 +urllib3==2.2.3 +vine==5.1.0 +wcwidth==0.2.13 +xlwt==1.3.0 +zope.event==5.0 +zope.interface==7.1.0 diff --git a/requirements.txt.d/requirements.txt.freeze-py3.8.10 b/requirements.txt.d/requirements.txt.freeze-py3.8.10 new file mode 100644 index 0000000000000000000000000000000000000000..5a174ae9b5233ce309424866978e1319f468a631 --- /dev/null +++ b/requirements.txt.d/requirements.txt.freeze-py3.8.10 @@ -0,0 +1,82 @@ +amqp==5.2.0 +anyjson==0.3.3 +appdirs==1.4.4 +asgiref==3.8.1 +async-timeout==4.0.3 +attrs==24.2.0 +backports.zoneinfo==0.2.1 +bcrypt==4.2.0 +billiard==3.6.4.0 +celery==5.2.3 +certifi==2024.8.30 +cffi==1.17.1 +charset-normalizer==3.4.0 +cl==0.0.3 +click==8.1.7 +click-didyoumean==0.3.1 +click-plugins==1.1.1 +click-repl==0.3.0 +confusable-homoglyphs==3.3.1 +cryptography==43.0.3 +Django==3.2.16 +django-admin==2.0.2 +django-excel-response2==3.0.6 +django-form-utils==1.0.3 +django-picklefield==2.0 +django-registration==3.1.2 +django-settings-export==1.2.1 +django-six==1.0.5 +django-tinymce==4.1.0 +djangorestframework==3.12.0 +excel-base==1.0.4 +gevent==24.2.1 +greenlet==3.1.1 +gunicorn==23.0.0 +idna==3.10 +iniconfig==2.0.0 +intervaltree==3.1.0 +ipaddress==1.0.23 +isoweek==1.3.3 +kombu==5.2.3 +longerusername==0.4 +lxml==5.3.0 +mailer==0.8.1 +mysqlclient==2.2.5 +ncclient==0.6.16 +packaging==24.1 +paramiko==3.5.0 +pluggy==1.5.0 +ply==3.11 +prompt-toolkit==3.0.48 +psutil==6.1.0 +py==1.11.0 +pyasn1==0.4.8 +pycparser==2.22 +pycrypto==2.6.1 +PyNaCl==1.5.0 +pyparsing==3.1.4 +pysmi==1.2.1 +pysnmp==5.1.0 +pysnmpcrypto==0.0.4 +pytest==6.2.5 +pytest-django==4.4.0 +python-dateutil==2.9.0.post0 +python-memcached==1.62 +pytz==2024.2 +PyYAML==6.0.2 +redis==5.1.1 +requests==2.32.3 +screen==1.0.1 +six==1.16.0 +sortedcontainers==2.4.0 +sqlparse==0.5.1 +TimeConvert==3.0.13 +toml==0.10.2 +typing-extensions==4.12.2 +tzlocal==5.2 +urllib3==2.2.3 +vine==5.1.0 +wcwidth==0.2.13 +xlwt==1.3.0 +zope.event==5.0 +zope.interface==7.1.0 diff --git a/requirements.txt.d/requirements.txt.python3.10.12 b/requirements.txt.d/requirements.txt.python3.10.12 new file mode 100644 index 0000000000000000000000000000000000000000..14ee7cc7918442fad97a36a3010dfebd46c1a815 --- /dev/null +++ b/requirements.txt.d/requirements.txt.python3.10.12 @@ -0,0 +1,81 @@ +amqp==5.2.0 +anyjson==0.3.3 +appdirs==1.4.4 +asgiref==3.8.1 +async-timeout==4.0.3 +attrs==24.2.0 +bcrypt==4.2.0 +billiard==3.6.4.0 +celery==5.2.3 +certifi==2024.8.30 +cffi==1.17.1 +charset-normalizer==3.4.0 +cl==0.0.3 +click==8.1.7 +click-didyoumean==0.3.1 +click-plugins==1.1.1 +click-repl==0.3.0 +confusable-homoglyphs==3.3.1 +cryptography==43.0.1 +Django==3.2.16 +django-admin==2.0.2 +django-excel-response2==3.0.6 +django-form-utils==1.0.3 +django-picklefield==2.0 +django-registration==3.1.2 +django-settings-export==1.2.1 +django-six==1.0.5 +django-tinymce==4.1.0 +djangorestframework==3.12.0 +excel-base==1.0.4 +gevent==24.10.2 +greenlet==3.1.1 +gunicorn==23.0.0 +idna==3.10 +iniconfig==2.0.0 +intervaltree==3.1.0 +ipaddress==1.0.23 +isoweek==1.3.3 +kombu==5.2.3 +longerusername==0.4 +lxml==5.3.0 +mailer==0.8.1 +mysqlclient==2.2.4 +ncclient==0.6.16 +packaging==24.1 +paramiko==3.5.0 +pluggy==1.5.0 +ply==3.11 +prompt_toolkit==3.0.48 +psutil==6.1.0 +py==1.11.0 +pyasn1==0.4.8 +pycparser==2.22 +pycrypto==2.6.1 +PyNaCl==1.5.0 +pyparsing==3.2.0 +pysmi==1.2.1 +pysnmp==5.1.0 +pysnmpcrypto==0.0.4 +pytest==6.2.5 +pytest-django==4.4.0 +python-dateutil==2.9.0.post0 +python-memcached==1.62 +pytz==2024.2 +PyYAML==6.0.2 +redis==5.1.1 +requests==2.32.3 +screen==1.0.1 +six==1.16.0 +sortedcontainers==2.4.0 +sqlparse==0.5.1 +TimeConvert==3.0.13 +toml==0.10.2 +typing_extensions==4.12.2 +tzlocal==5.2 +urllib3==2.2.3 +vine==5.1.0 +wcwidth==0.2.13 +xlwt==1.3.0 +zope.event==5.0 +zope.interface==7.1.0 diff --git a/requirements.txt.python3.6.8 b/requirements.txt.d/requirements.txt.python3.6.8 similarity index 100% rename from requirements.txt.python3.6.8 rename to requirements.txt.d/requirements.txt.python3.6.8 diff --git a/requirements.txt.python3.7.3 b/requirements.txt.d/requirements.txt.python3.7.3 similarity index 100% rename from requirements.txt.python3.7.3 rename to requirements.txt.d/requirements.txt.python3.7.3 diff --git a/requirements.txt.d/requirements.txt.python3.8.10 b/requirements.txt.d/requirements.txt.python3.8.10 new file mode 100644 index 0000000000000000000000000000000000000000..5a174ae9b5233ce309424866978e1319f468a631 --- /dev/null +++ b/requirements.txt.d/requirements.txt.python3.8.10 @@ -0,0 +1,82 @@ +amqp==5.2.0 +anyjson==0.3.3 +appdirs==1.4.4 +asgiref==3.8.1 +async-timeout==4.0.3 +attrs==24.2.0 +backports.zoneinfo==0.2.1 +bcrypt==4.2.0 +billiard==3.6.4.0 +celery==5.2.3 +certifi==2024.8.30 +cffi==1.17.1 +charset-normalizer==3.4.0 +cl==0.0.3 +click==8.1.7 +click-didyoumean==0.3.1 +click-plugins==1.1.1 +click-repl==0.3.0 +confusable-homoglyphs==3.3.1 +cryptography==43.0.3 +Django==3.2.16 +django-admin==2.0.2 +django-excel-response2==3.0.6 +django-form-utils==1.0.3 +django-picklefield==2.0 +django-registration==3.1.2 +django-settings-export==1.2.1 +django-six==1.0.5 +django-tinymce==4.1.0 +djangorestframework==3.12.0 +excel-base==1.0.4 +gevent==24.2.1 +greenlet==3.1.1 +gunicorn==23.0.0 +idna==3.10 +iniconfig==2.0.0 +intervaltree==3.1.0 +ipaddress==1.0.23 +isoweek==1.3.3 +kombu==5.2.3 +longerusername==0.4 +lxml==5.3.0 +mailer==0.8.1 +mysqlclient==2.2.5 +ncclient==0.6.16 +packaging==24.1 +paramiko==3.5.0 +pluggy==1.5.0 +ply==3.11 +prompt-toolkit==3.0.48 +psutil==6.1.0 +py==1.11.0 +pyasn1==0.4.8 +pycparser==2.22 +pycrypto==2.6.1 +PyNaCl==1.5.0 +pyparsing==3.1.4 +pysmi==1.2.1 +pysnmp==5.1.0 +pysnmpcrypto==0.0.4 +pytest==6.2.5 +pytest-django==4.4.0 +python-dateutil==2.9.0.post0 +python-memcached==1.62 +pytz==2024.2 +PyYAML==6.0.2 +redis==5.1.1 +requests==2.32.3 +screen==1.0.1 +six==1.16.0 +sortedcontainers==2.4.0 +sqlparse==0.5.1 +TimeConvert==3.0.13 +toml==0.10.2 +typing-extensions==4.12.2 +tzlocal==5.2 +urllib3==2.2.3 +vine==5.1.0 +wcwidth==0.2.13 +xlwt==1.3.0 +zope.event==5.0 +zope.interface==7.1.0 diff --git a/systemd/fod-celeryd.service.dist b/systemd/fod-celeryd.service.dist index 3fcc0dde41b2196333acedef361db73edb7e9a1e..afa3c973c06b9c21c921c50064ee1489221d7e3a 100644 --- a/systemd/fod-celeryd.service.dist +++ b/systemd/fod-celeryd.service.dist @@ -17,11 +17,16 @@ WorkingDirectory=/srv/flowspy #RuntimeDirectory=yourservice #RuntimeDirectoryMode=0755 -ExecStartPre=-/bin/mkdir -p /var/run/fod/ -ExecStartPre=-/bin/chown fod: /var/run/fod/ -ExecStartPre=-/bin/rm -f -r /var/run/fod/snmppoll.lock -ExecStartPre=-/bin/rm -f /srv/flowspy/snmp_temp_data.lock +# executed as root: +#PermissionsStartOnly=True +ExecStartPre=+-/bin/mkdir -p /var/run/fod/ +ExecStartPre=+-/bin/chown fod: /var/run/fod/ +ExecStartPre=+-/bin/rm -f -r /var/run/fod/snmppoll.lock +ExecStartPre=+-/bin/rm -f /srv/flowspy/snmp_temp_data.lock + +# executed as user fod: ExecStartPre=-/srv/flowspy/flowspy/run_celery_preactions + #ExecStart=/srv/flowspy/pythonenv celery -A flowspy worker -B --concurrency=2 -l debug -f /srv/flowspy/log/celery.log ExecStart=/srv/flowspy/pythonenv celery -A flowspy worker -B --concurrency=2 -l info -f /srv/flowspy/log/celery.log #PIDFile=/tmp/yourservice.pid