This commit is contained in:
@@ -0,0 +1,123 @@
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using System.Net.Http.Json;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
|
||||
namespace AddHostToProxy
|
||||
{
|
||||
internal class Program
|
||||
{
|
||||
public static List<KeyValuePair<string, string>> ListDev = new List<KeyValuePair<string, string>>();
|
||||
static async Task Main(string[] args)
|
||||
{
|
||||
ListDev = ReadCsvFile("ListDev.csv");
|
||||
string str = await GetTokenAsync();
|
||||
foreach (var item in ListDev)
|
||||
{
|
||||
var host = new HostProxy();
|
||||
var lsDomain = new List<string>();
|
||||
var _meta = new Meta();
|
||||
host.meta = _meta;
|
||||
lsDomain.Add(item.Value+".vnk.security.local");
|
||||
host.domain_names = lsDomain;
|
||||
host.forward_host = item.Key;
|
||||
var str2 = await AddProxyHostAsync(str, host);
|
||||
Console.WriteLine($"{item.Key}\t{str2}");
|
||||
}
|
||||
Console.WriteLine("========== ЗАКОНЧИЛ ============");
|
||||
Console.ReadKey();
|
||||
}
|
||||
|
||||
public static async Task<string> GetTokenAsync()
|
||||
{
|
||||
using var client = new HttpClient();
|
||||
|
||||
var payload = new { identity = "admin@security.local", secret = "4NUDZhJ7" };
|
||||
var response = await client.PostAsJsonAsync("http://172.16.48.129:81/api/tokens", payload);
|
||||
|
||||
if (response.IsSuccessStatusCode)
|
||||
{
|
||||
// Десериализуем ответ напрямую в динамический объект или анонимный тип
|
||||
var data = await response.Content.ReadFromJsonAsync<TokenResponse>();
|
||||
return data?.Token.ToString();
|
||||
}
|
||||
|
||||
return "null";
|
||||
}
|
||||
|
||||
public static async Task<string> AddProxyHostAsync(string token, object data)
|
||||
{
|
||||
using var _httpClient = new HttpClient();
|
||||
// Формируем данные запроса
|
||||
var jsonContent = JsonSerializer.Serialize(data);
|
||||
var httpContent = new StringContent(jsonContent, Encoding.UTF8, "application/json");
|
||||
|
||||
// Устанавливаем заголовки
|
||||
_httpClient.DefaultRequestHeaders.Clear();
|
||||
_httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {token}");
|
||||
|
||||
// Отправляем запрос
|
||||
var httpResponse = await _httpClient.PostAsync("http://172.16.48.129:81/api/nginx/proxy-hosts", httpContent);
|
||||
//var httpResponse = await _httpClient.PutAsync($"http://172.16.48.129:81/api/nginx/proxy-hosts", httpContent);
|
||||
|
||||
// Проверяем статус ответа
|
||||
httpResponse.EnsureSuccessStatusCode();
|
||||
|
||||
// Возвращаем статус-код
|
||||
return httpResponse.StatusCode.ToString();
|
||||
}
|
||||
|
||||
public static List<KeyValuePair<string, string>> ReadCsvFile(string filePath)
|
||||
{
|
||||
using (var reader = new StreamReader(filePath))
|
||||
{
|
||||
while (!reader.EndOfStream)
|
||||
{
|
||||
var line = reader.ReadLine();
|
||||
if (string.IsNullOrEmpty(line)) continue;
|
||||
|
||||
// Разбиваем строку по запятой (предполагая CSV с разделителем запятой)
|
||||
var parts = line.Split(';');
|
||||
|
||||
// Проверяем, что строка содержит хотя бы две части
|
||||
if (parts.Length >= 2)
|
||||
{
|
||||
// Приводим результаты к строкам и добавляем в список
|
||||
ListDev.Add(new KeyValuePair<string, string>(parts[0].Trim(), parts[1].Trim()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return ListDev;
|
||||
}
|
||||
|
||||
// Класс для десериализации ответа
|
||||
public record TokenResponse(string Token, DateTime Expires);
|
||||
|
||||
}
|
||||
public class Meta
|
||||
{
|
||||
public bool nginx_online { get; set; } = true;
|
||||
public object nginx_err { get; set; } = null;
|
||||
}
|
||||
public class HostProxy
|
||||
{
|
||||
public bool enabled { get; set; } = true;
|
||||
public List<string> domain_names { get; set; }
|
||||
public string forward_scheme { get; set; } = "https";
|
||||
public string forward_host { get; set; }
|
||||
public int forward_port { get; set; } = 443;
|
||||
public int access_list_id { get; set; } = 0;
|
||||
public int certificate_id { get; set; } = 1;
|
||||
public bool ssl_forced { get; set; } = false;
|
||||
public bool caching_enabled { get; set; } = false;
|
||||
public bool block_exploits { get; set; } = false;
|
||||
public string advanced_config { get; set; } = "";
|
||||
public Meta meta { get; set; }
|
||||
public bool allow_websocket_upgrade { get; set; } = true;
|
||||
public bool http2_support { get; set; } = false;
|
||||
public bool hsts_enabled { get; set; } = false;
|
||||
public bool hsts_subdomains { get; set; } = false;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user