From 671e3f1540f3a683d548dafd64c068ad6a64ac2f Mon Sep 17 00:00:00 2001 From: Daniel Weipert Date: Sun, 18 Apr 2021 21:46:19 +0200 Subject: Adds UserModule --- src/Module/Modules/UserModule.php | 70 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 src/Module/Modules/UserModule.php (limited to 'src/Module') diff --git a/src/Module/Modules/UserModule.php b/src/Module/Modules/UserModule.php new file mode 100644 index 0000000..1749b58 --- /dev/null +++ b/src/Module/Modules/UserModule.php @@ -0,0 +1,70 @@ +options = array_replace([ + 'append' => false, + 'create_home' => true, + 'groups' => [], + 'shell' => '/bin/bash', + ], $options); + } + + /** + * @inheritDoc + */ + public function checkState(): bool + { + global $ssh; + /**@var SSH2 $ssh*/ + $ssh->enablePTY(); + + $ssh->exec("cat /etc/passwd | grep $this->name:"); + $hasUser = $ssh->read(); + + $state = match ($this->state) { + State::PRESENT => str_starts_with($hasUser, "$this->name:"), + State::ABSENT => empty($hasUser), + }; + + $ssh->disablePTY(); + + return $state; + } + + /** + * @inheritDoc + */ + public function getCommands(): array + { + return match ($this->state) { + State::PRESENT => [ + "sudo adduser $this->name --quiet" . + " --shell " . $this->options['shell'] . + ($this->options['create_home'] ? '' : ' --no-create-home'), + "sudo usermod -" . ($this->options['append'] ? 'a' : '') . "G " . implode(',', $this->options['groups']) . " $this->name" + ], + State::ABSENT => [ + "sudo apt remove -y $this->package", + ], + }; + } +} -- cgit v1.2.3