diff options
Diffstat (limited to 'src/UfwModule.php')
| -rw-r--r-- | src/UfwModule.php | 28 | 
1 files changed, 24 insertions, 4 deletions
diff --git a/src/UfwModule.php b/src/UfwModule.php index 1ec4452..02be515 100644 --- a/src/UfwModule.php +++ b/src/UfwModule.php @@ -18,13 +18,35 @@ class UfwModule extends Module       */      public function checkState(): bool      { -        return false; +        $state = false; + +        Connection::enablePty(); + +        Connection::exec('sudo ufw status'); +        $status = Connection::read(); + +        if ($this->state === State::ENABLED) { +            $rule = strtoupper($this->rule); +            Connection::exec("sudo ufw status | grep '$this->name\|$rule'"); +            $statusGrep = Connection::read(); + +            $state = +                str_contains($status, 'Status: active') && +                str_contains($statusGrep, $this->name) && str_contains($statusGrep, $rule); +        } +        else if ($this->state === State::DISABLED) { +            $state = str_contains($status, 'Status: inactive'); +        } + +        Connection::disablePty(); + +        return $state;      }      /**       * @inheritDoc       */ -    public function getCommands(): array +    public function execute(): void      {          Connection::exec(implode(PHP_EOL, [              "sudo ufw $this->rule $this->name", @@ -33,7 +55,5 @@ class UfwModule extends Module                  State::DISABLED => "sudo ufw disable",              },          ])); - -        return [];      }  }  | 
