# Agente CtrlStation - MacOS

## **CtrlStation Agent para macOS**

### O que é?

O **System Monitor Agent** é um serviço de segundo plano para macOS projetado para monitorar a atividade da sessão do usuário e interagir com um servidor de gerenciamento remoto.

Suas principais funções são:

- **Monitorar Eventos**: Detecta e reporta quando o usuário realiza as seguintes ações:
    
    
    - Logon (início da sessão)
    - Logout (fim da sessão)
    - Bloqueio de Tela
    - Desbloqueio de Tela
- **Controle de Jornada**: A cada 30 segundos, contata o servidor CtrlStation para verificar se há comandos remotos para:
    
    
    - Bloquear a tela ou efetuar logout do usuário.
    - Exibir notificações de aviso em popup

O agente é configurado como um serviço de usuário (`LaunchAgent`), o que significa que ele inicia automaticamente quando o usuário faz login e para quando ele faz logout.

### Requisitos

- **Sistema Operacional**: macOS Ventura (versão 13.0) ou mais recente.

### Download

O agente é distribuído como um pacote de instalação `.pkg`.

- **Link para Download**: https://download.ctrlstation.com/CtrlStationAgent-v1.2.1.pkg

Será solicitado um usuário e senha, estes dados são fornecidos pela LAB3 ou seu parceiro de revenda.

### Instalação

A instalação é simples e guiada. Siga os passos abaixo:

1. **Execute o Instalador** Dê um duplo clique no arquivo `CtrlStationAgent-v1.2.1.pkg` que você baixou.
2. **Siga as Instruções** Prossiga pelas telas do instalador. Ele copiará os arquivos necessários para as pastas corretas e configurará o serviço.
3. **Aprove a Permissão de Automação** Ao final da instalação, o sistema solicitará permissão para que o agente possa controlar eventos do sistema (necessário para o bloqueio de tela). Você **deve** clicar em **"OK"**.
4. **Crie o Arquivo de Configuração (Passo Obrigatório)** O agente não funcionará sem as informações do servidor. Você precisa criar este arquivo manualmente:
    
    
    - **Caminho Exato**: `~/.config/CtrlStationAgent/config.json`
    - (O instalador abrirá a pasta `~/.config/``CtrlStationAgent` para você. Se não, crie-a manualmente).
    - **Conteúdo do Arquivo** (use o template abaixo, substituindo com seus dados
        
        ```json
        {
            "apiURL": "https://[empresa].ctrlstation.com/api",
            "accessToken": "[disponivel em configurações - licença]"
        }
        ```
        
        <div _ngcontent-ng-c1794923285="" class="code-block ng-tns-c1794923285-801 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwig3ovDoqyPAxUAAAAAHQAAAAAQ2Ac" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_0b9434002474b161","c_6f31365f278c2efe",null,"rc_aab4c4366d980082",null,null,"pt",null,1,null,null,1,0]]" style="display: block;"><div _ngcontent-ng-c1794923285="" class="code-block-decoration header-formatted gds-title-s ng-tns-c1794923285-801 ng-star-inserted"><span class="ng-tns-c1794923285-801">JSON</span></div></div>

Após criar o arquivo `config.json`, o serviço, que já está rodando, o detectará e começará a funcionar normalmente.

### Desinstalação

Para remover completamente o agente, recomendamos o uso do script de desinstalação.

**Crie o Script de Desinstalação**

- - Abra um editor de texto e cole o conteúdo abaixo.
    - Salve o arquivo com o nome `uninstall.sh`.
        
        ```bash
        #!/bin/bash
        echo "Iniciando a desinstalação do CtrlStation Agent..."
        
        PLIST_PATH="~/Library/LaunchAgents/com.lab3dvlp.CtrlStationAgent.plist"
        APP_SUPPORT_DIR="~/Library/Application Support/CtrlstAtionAgent"
        CONFIG_DIR=~/.config/CtrlstAtionAgent
        
        echo "[1/4] Parando e descarregando o serviço..."
        eval launchctl unload "$PLIST_PATH" 2>/dev/null
        
        echo "[2/4] Removendo arquivos do serviço e da aplicação..."
        eval rm -f "$PLIST_PATH"
        eval rm -rf "$APP_SUPPORT_DIR"
        
        echo "[3/4] Removendo arquivos de log..."
        rm -f /tmp/ctrlstationagent.log /tmp/ctrlstationagent.error.log
        
        echo "[4/4] Verificando arquivos de configuração..."
        if [ -d "$(eval echo $CONFIG_DIR)" ]; then
            read -p "Deseja remover a pasta de configuração ${CONFIG_DIR}? [s/N] " response
            if [[ "${response,,}" == "s" ]]; then
                eval rm -rf "$CONFIG_DIR"
                echo "Pasta de configuração removida."
            else
                echo "Pasta de configuração mantida."
            fi
        fi
        
        echo ""
        echo "Desinstalação concluída! Lembre-se de remover a permissão de Automação nos Ajustes do Sistema."
        ```

**Execute o Script**

- - Abra o **Terminal**.
    - Navegue até a Mesa: `cd ~/Desktop`
    - Dê permissão de execução: `chmod +x uninstall.sh`
    - Rode o script: `./uninstall.sh`

**Remova a Permissão Manualmente**

- Vá para **Ajustes do Sistema &gt; Privacidade e Segurança &gt; Automação**.
- Encontre o `SystemMonitorAgent` e remova-o usando o botão (`-`).

### Funcionamento e Logs

#### Como Funciona

- O agente inicia junto com a sua sessão de usuário.
- Ele permanece ativo em segundo plano, consumindo o mínimo de recursos.
- Toda a comunicação com a API é registrada nos arquivos de log para fins de depuração.

#### Verificando os Logs

Se você precisar verificar se o agente está funcionando ou diagnosticar um problema, os logs são o melhor lugar para procurar.

- **Log de Atividade**: Contém informações sobre eventos detectados, heartbeats e respostas da API.
    
    
    - Caminho: `/tmp/ctrlstationagent.log`
- **Log de Erros**: Registra quaisquer falhas ou erros que ocorram na execução do agente.
    
    
    - Caminho: `/tmp/ctrlstationagent.error.log`

Para visualizar os logs em tempo real, use o seguinte comando no Terminal:

```bash
tail -f /tmp/systemmonitoragent.log
```

Pressione `Control + C` para parar de visualizar.