/** * Добавление хоста в базу Пингера. * * @param string $label Лейбл добавляемого хоста. * @param string $fqdn FQDN добавляемого хоста. * @access public * @static */ public static function cmdAdd($label, $fqdn) { // первичная проверка аргументов $argsOk = true; if (!preg_match('~^[a-z0-9-]{3,48}$~', $label)) { fwrite(STDERR, "Label contains invalid characters. Only [a-z0-9-]{3,48} allowed.\n"); $argsOk = false; } if (!preg_match('~^[a-z0-9-\\.]{3,224}$~', $fqdn)) { fwrite(STDERR, "FQDN contains invalid characters. Only [a-z0-9-\\.]{3,224} allowed.\n"); $argsOk = false; } if (!$argsOk) { exit(1); } // подключение к СУБД DB::open(); // проверка на занятость лейбла и хоста $res = DBQueries::hostUniqueness($label, $fqdn); $check = $res->fetch_object(); if ($check->label) { fwrite(STDERR, "Host w/label '{$label}' is already exists.\n"); } if ($check->fqdn) { fwrite(STDERR, "Host w/FQDN '{$fqdn}' is already exists.\n"); } if ($check->label || $check->fqdn) { exit(1); } // добавление хоста в БД DBQueries::hostInsert($label, $fqdn); $id = DB::id(); // добавление пустой записи в таблицу данных DBQueries::dataPush($id, HostStatuses::CREATED_ENABLED, 0); // добавление хоста в кэш Redis $redis = RKS::getInstance(); $redis->hMset('hosts:data:' . $label, ['id' => $id, 'label' => $label, 'fqdn' => $fqdn, 'addr' => false, 'status' => false, 'state' => false]); $redis->sAdd("hosts:enabled", $label); exit(0); }