diff --git a/EtherJack-payload.service b/EtherJack-payload.service new file mode 100644 index 0000000..c63c977 --- /dev/null +++ b/EtherJack-payload.service @@ -0,0 +1,11 @@ +[Unit] +Description=EtherJack Payload +After=network.target + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/local/EtherJack/bin/ej_callback + +[Install] +WantedBy=multi-user.target diff --git a/EtherJack.conf b/EtherJack.conf index e246c80..60560e7 100644 --- a/EtherJack.conf +++ b/EtherJack.conf @@ -1,12 +1,10 @@ ################ # EhterJack.conf ################ -EJMODE= +EJMODE=preset EJPATH=/usr/local/EtherJack ENGAGEMENT=$(date +%F.%N) EJLOG=ej.log -EJEXE= -CALLHOME=$EJPATH/bin/$EJEXE PKTS=5 -TESTIP=93.184.216.34 -TESTPORT=80 +TESTIP=104.18.26.120 +TESTPORT=443 diff --git a/EtherJack.service b/EtherJack.service index b5f7a52..047f697 100644 --- a/EtherJack.service +++ b/EtherJack.service @@ -1,13 +1,9 @@ [Unit] Description=EtherJack Service -After=network-online.target -Requires=network-online.target [Service] WorkingDirectory=/usr/local/EtherJack ExecStart=/usr/local/EtherJack/EtherJack.sh -RemainAfterExit=no -Restart=on-failure [Install] WantedBy=multi-user.target diff --git a/lan/routefinder.sh b/lan/routefinder.sh index f76f348..fe8ec42 100755 --- a/lan/routefinder.sh +++ b/lan/routefinder.sh @@ -36,7 +36,7 @@ while [ "$DONE" == "NO" ]; do echo "Network and route setup complete" >>$EJLOG echo "Calling home" >>$EJLOG echo "############### END ROUTEFINDER ###############" >>$EJLOG - $CALLHOME + systemctl start Etherjack-payload fi done done diff --git a/preset/preset.sh b/preset/preset.sh index 380c5e2..3dbd86e 100755 --- a/preset/preset.sh +++ b/preset/preset.sh @@ -50,6 +50,8 @@ case $CONFIG in dhcp|DHCP) echo "Configuring EJ for a DHCP configuration" >>$EJLOG systemctl stop NetworkManager + ifconfig eth0 down + ifconfig eth0 up systemctl start NetworkManager DONE=NO while [ $DONE == "NO" ]; do @@ -70,7 +72,7 @@ case $CONFIG in echo "My Gateway is: $DHCPGTW" >>$EJLOG echo "My Nameserver is: $DHCPNS" >>$EJLOG echo "Calling home" >>$EJLOG - $CALLHOME + systemctl start Etherjack-payload DONE=YES fi done diff --git a/tests/test_config_validation.bats b/tests/test_config_validation.bats index 531fc20..800795a 100644 --- a/tests/test_config_validation.bats +++ b/tests/test_config_validation.bats @@ -100,12 +100,24 @@ load 'helpers/common' grep -q "ExecStart=.*EtherJack.sh" "$REPO_ROOT/EtherJack.service" } -@test "EtherJack.service requires network-online.target" { - grep -q "network-online.target" "$REPO_ROOT/EtherJack.service" +# --------------------------------------------------------------------------- +# EtherJack-payload.service +# --------------------------------------------------------------------------- + +@test "EtherJack-payload.service file exists" { + [ -f "$REPO_ROOT/EtherJack-payload.service" ] +} + +@test "EtherJack-payload.service ExecStart references ej_callback" { + grep -q "ExecStart=.*ej_callback" "$REPO_ROOT/EtherJack-payload.service" +} + +@test "EtherJack-payload.service is Type=oneshot" { + grep -q "^Type=oneshot" "$REPO_ROOT/EtherJack-payload.service" } -@test "EtherJack.service has Restart=on-failure" { - grep -q "^Restart=on-failure" "$REPO_ROOT/EtherJack.service" +@test "EtherJack-payload.service is WantedBy=multi-user.target" { + grep -q "WantedBy=multi-user.target" "$REPO_ROOT/EtherJack-payload.service" } # --------------------------------------------------------------------------- diff --git a/tests/test_preset_mode.bats b/tests/test_preset_mode.bats index 9e86f76..11ca1bc 100644 --- a/tests/test_preset_mode.bats +++ b/tests/test_preset_mode.bats @@ -109,9 +109,15 @@ EOF [[ "$output" == *"MOCK:systemctl start NetworkManager"* ]] } -@test "CONFIG=DHCP eventually executes the payload" { +@test "CONFIG=DHCP resets eth0 before starting NetworkManager" { run_preset DHCP - [[ "$output" == *"payload executed"* ]] + [[ "$output" == *"MOCK:ifconfig eth0 down"* ]] + [[ "$output" == *"MOCK:ifconfig eth0 up"* ]] +} + +@test "CONFIG=DHCP starts the payload service via systemctl" { + run_preset DHCP + [[ "$output" == *"MOCK:systemctl start Etherjack-payload"* ]] } # ---------------------------------------------------------------------------