From da1f7203b029ade08acacac04797b8e1eb0505d9 Mon Sep 17 00:00:00 2001 From: tracer Date: Wed, 19 Jan 2022 21:07:22 +0100 Subject: [PATCH] removed old table stuff --- bindAPI/src/Controller/BindAPI.php | 248 +++++++++++++++++++++++++++++ 1 file changed, 248 insertions(+) create mode 100755 bindAPI/src/Controller/BindAPI.php diff --git a/bindAPI/src/Controller/BindAPI.php b/bindAPI/src/Controller/BindAPI.php new file mode 100755 index 0000000..1c4cb05 --- /dev/null +++ b/bindAPI/src/Controller/BindAPI.php @@ -0,0 +1,248 @@ +dbConnection = (new DatabaseConnection())->getConnection(); + $this->apiUsers = new ApiUsers($this->dbConnection); + $this->domainController = new DomainController($this->dbConnection); + + } + + + function runCommand() + { + if ($this->argc < 2) { + $this->showUsage(); + } + + [$command, $subcommand] = explode(':', $this->argv[1]); + + try { + match ($command) { + 'apikeys' => $this->handleApiKeys($subcommand), + 'domains' => $this->handleDomains($subcommand) + }; + } catch(UnhandledMatchError) { + echo 'Unknown command: ' . $command . PHP_EOL; + exit(1); + } + } + + + /** + * @return void + */ + function showUsage(): void + { + echo 'Usage' . PHP_EOL; + echo "\033[33mapikeys" . PHP_EOL; + echo "\033[32m\tapikeys:list" . PHP_EOL; + echo "\033[32m\tapikeys:create" . PHP_EOL; + echo "\033[32m\tapikeys:delete {ID}" . PHP_EOL; + echo "\033[33mdomains" . PHP_EOL; + echo "\033[32m\tdomains:list" . PHP_EOL; + echo "\033[32m\tdomains:create {A=} {AAAA=}" . PHP_EOL; + echo "\033[32m\tdomains:update {name} {A=} {AAAA=}" . PHP_EOL; + echo "\033[32m\tdomains:delete" . PHP_EOL; + echo "\033[32m\tdomains:check" . PHP_EOL; + echo PHP_EOL . "\033[39me.g. ./bin/console apikey:list" . PHP_EOL; + exit(0); + } + + + /** + * @param \App\Controller\ApiUsers $apiUsers + * + * @return void + */ + function handleApikeysCreate(ApiUsers $apiUsers): void + { + $result = $apiUsers->create(); + echo 'API key ' . $result['row'] . ' has been generated. Store it in a save place, it cannot be recovered.' . PHP_EOL; + echo "\033[32m\t" . $result['tokenPrefix'] . '.' . $result['key'] . PHP_EOL; + exit(0); + } + + + /** + * @param ApiUsers $apiUsers + * + * @return void + */ + function handleApikeysList(ApiUsers $apiUsers): void + { + echo 'All valid API keys:' . PHP_EOL; + $keys = $apiUsers->findAll(); + if ($keys) { + $table = new ConsoleTable(); + $table->setHeaders(['ID', 'API key prefix']); + foreach ($keys as $key) { + $table->addRow([$key['id'], $key['api_token_prefix']]); + } + $table->setPadding(2); + $table->display(); + + } else { + echo 'No keys found.' . PHP_EOL; + } + exit(0); + } + + + /** + * @param ApiUsers $apiUsers + * + * @return void + */ + function handleApikeysDelete(ApiUsers $apiUsers): void + { + $id = $argv[2] ?? 0; + if ($id == 0) { + echo 'You need to add the ID of the token.' . PHP_EOL; + exit(1); + } + if ($apiUsers->findByID($id)) { + $apiUsers->delete($id); + echo 'Token ' . $id . ' has been deleted.' . PHP_EOL; + exit(0); + } else { + echo 'Unknown ID: ' . $id . PHP_EOL; + exit(1); + } + } + + + /** + * @param \App\Controller\DomainController $domainController + * + * @return void + */ + function handleDomainsList(DomainController $domainController): void + { + echo 'All available domains:' . PHP_EOL; + $domains = $domainController->findAll(); + if ($domains) { + $table = new ConsoleTable(); + $table->setHeaders(['ID', 'Name', 'A', 'AAAA']); + foreach ($domains as $domain) { + $table->addRow([$domain['id'], $domain['name'], $domain['a'], $domain['aaaa']]); + } + $table->setPadding(2); + $table->display(); + } else { + echo 'No domains found.' . PHP_EOL; + exit(1); + } + exit(0); + } + + + /** + * @param \App\Controller\DomainController $domainController + * + * @return void + */ + function handleDomainCreate(DomainController $domainController): void + { + $name = $this->argv[2] ?? ""; + if (empty($name)) { + echo 'You need to supply the domain name.' . PHP_EOL; + exit(1); + } + + $filteredName = filter_var($name, FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME); + if (!empty($filteredName) && str_contains($filteredName, '.')) { + $name = $filteredName; + } else { + echo "$name is no valid DNS domain name." . PHP_EOL; + exit(1); + } + + foreach ($this->argv as $argument) { + if (str_contains($argument, '=')) { + [$key, $value] = explode('=', $argument); + $arguments[$key] = $value; + } + } + $a = $arguments['a'] ?? ""; + $aaaa = $arguments['aaaa'] ?? ""; + if (empty($a) && empty($aaaa)) { + echo 'At least one IP address is required.'; + exit(0); + } + + if ($domainController->findByName($name)) { + echo "Domain: $name already exists." . PHP_EOL; + exit(1); + } else { + $dcResult = $domainController->insert($name, $a, $aaaa); + echo "Domain $name has been created" . PHP_EOL; + exit(0); + } + } + + /** + * @param string $subcommand + * + * @return void + */ + public function handleApiKeys(string $subcommand): void + { + try { + match ($subcommand) { + 'create' => $this->handleApikeysCreate($this->apiUsers), + 'list' => $this->handleApikeysList($this->apiUsers), + 'delete' => $this->handleApikeysDelete($this->apiUsers), + }; + } catch (UnhandledMatchError $error) { + echo 'Unknown action: ' . $subcommand . PHP_EOL; + } + } + + /** + * @param string $subcommand + * + * @return void + */ + public function handleDomains(string $subcommand): void + { + try { + match ($subcommand) { + 'list' => $this->handleDomainsList($this->domainController), + 'create' => $this->handleDomainCreate($this->domainController), + + }; + } catch (UnhandledMatchError $error) { + echo "Unknown Command: $subcommand" . PHP_EOL; + exit(1); + } + } +}