/* * Copyright (c) 2026 RAVAPI Soluções. Todos os direitos reservados. * www.ravapi.com */ using System; using System.IO; using System.Reflection; namespace TechDeskAgent { /// /// Lê e salva configurações do arquivo config.ini ao lado do EXE. /// Pode ser pré-configurado antes do deploy via GPO. /// public class AgentConfig { public const string VERSAO = "1.0.0"; // Caminho do config.ini ao lado do EXE private static readonly string ConfigPath = Path.Combine( Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "config.ini" ); // ── Propriedades ────────────────────────────────────────────────────── /// URL base da API TechDesk (ex: https://techdesk.ravapi.com/api/monitoramento/) public string ApiUrl { get; set; } = "https://techdesk.ravapi.com/api/monitoramento/"; /// ID do cliente RAVAPI — pré-configurado antes do deploy public string ClientId { get; set; } = ""; /// Token gerado no registro inicial — preenchido automaticamente public string Token { get; set; } = ""; /// Intervalo de coleta em minutos public int IntervaloMinutos { get; set; } = 15; // ── Carregamento ────────────────────────────────────────────────────── public static AgentConfig Load() { var cfg = new AgentConfig(); if (!File.Exists(ConfigPath)) { Logger.Warn($"config.ini não encontrado em {ConfigPath}. Usando padrões."); cfg.Save(); // cria arquivo com valores padrão return cfg; } foreach (var linha in File.ReadAllLines(ConfigPath)) { if (linha.StartsWith("#") || !linha.Contains("=")) continue; var partes = linha.Split(new[] { '=' }, 2); var chave = partes[0].Trim(); var valor = partes[1].Trim(); switch (chave.ToLower()) { case "api_url": cfg.ApiUrl = valor; break; case "client_id": cfg.ClientId = valor; break; case "token": cfg.Token = valor; break; case "intervalo_minutos": if (int.TryParse(valor, out var mins)) cfg.IntervaloMinutos = mins; break; } } return cfg; } // ── Persistência ────────────────────────────────────────────────────── public void Save() { File.WriteAllText(ConfigPath, $@"# TechDesk Agent — Configuracao # Copyright (c) 2026 RAVAPI Solucoes. www.ravapi.com # ATENCAO: nao edite este arquivo manualmente durante execucao do servico. # URL base da API TechDesk Pro api_url = {ApiUrl} # ID do cliente RAVAPI (fornecido pela RAVAPI Solucoes) client_id = {ClientId} # Token de autenticacao do terminal (gerado automaticamente no primeiro registro) token = {Token} # Intervalo de coleta em minutos (padrao: 15) intervalo_minutos = {IntervaloMinutos} "); } } }