<?php

/*
 * Copyright 2005 - 2025 Centreon (https://www.centreon.com/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * For more information : contact@centreon.com
 *
 */

declare(strict_types=1);

namespace Centreon\Infrastructure\RemoteServer;

use Centreon\Domain\RemoteServer\Interfaces\RemoteServerLocalConfigurationRepositoryInterface;

class RemoteServerRepositoryFile implements RemoteServerLocalConfigurationRepositoryInterface
{
    /** @var string */
    private $centreonConfFilePath;

    /**
     * @param string $centreonConfFilePath
     */
    public function setCentreonConfFilePath(string $centreonConfFilePath): void
    {
        $this->centreonConfFilePath = DIRECTORY_SEPARATOR . ltrim($centreonConfFilePath, DIRECTORY_SEPARATOR);
    }

    /**
     * @inheritDoc
     */
    public function updateInstanceModeCentral(): void
    {
        system(
            "sed -i -r 's/(\\\$instance_mode?\s+=?\s+\")([a-z]+)(\";)/\\1central\\3/' "
            . escapeshellarg($this->centreonConfFilePath)
        );
    }

    /**
     * @inheritDoc
     */
    public function updateInstanceModeRemote(): void
    {
        system(
            "sed -i -r 's/(\\\$instance_mode?\s+=?\s+\")([a-z]+)(\";)/\\1remote\\3/' "
            . escapeshellarg($this->centreonConfFilePath)
        );
    }
}
