This repository was archived by the owner on May 3, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProgram.cs
More file actions
78 lines (72 loc) · 4.47 KB
/
Program.cs
File metadata and controls
78 lines (72 loc) · 4.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
using System;
using System.Runtime.InteropServices;
using Aliyun.Acs.Core.Auth;
using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Profile;
using Newtonsoft.Json;
namespace cf2dns_script_DotnetCSharp
{
internal class Program
{
static async Task Main(string[] args) //args[0]-->优选ipkey args[1]-->AliAPIKeyid arg[2]-->AliAPISecret
{
Console.WriteLine("Hello, World! Cf2dns_script_DotnetCSharp with AliCloudDNS");
var body =new Utils.IPKey();
body.key = args[0];
var result=await Utils.POST("https://api.hostmonit.com/get_optimization_ip", JsonConvert.SerializeObject(body));
var CloudFlareOptimizationIp = JsonConvert.DeserializeObject<Utils.CloudFlare_Optimization_IP>(result);
Utils.WriteLog(Utils.LogEnum.Info,"GET result \n"+result);
#region Add Public CloudFlareOptimizationIP
body.key = "o1zrmHAF";
var public_result= await Utils.POST("https://api.hostmonit.com/get_optimization_ip", JsonConvert.SerializeObject(body));
var public_CloudFlareOptimizationIp =
JsonConvert.DeserializeObject<Utils.CloudFlare_Optimization_IP>(public_result);
Utils.WriteLog(Utils.LogEnum.Info,"Get result \n"+public_result);
CloudFlareOptimizationIp.info.CMCCip.AddRange(public_CloudFlareOptimizationIp.info.CMCCip.Take(2));
CloudFlareOptimizationIp.info.CTCCip.AddRange(public_CloudFlareOptimizationIp.info.CTCCip.Take(2));
CloudFlareOptimizationIp.info.CUCCip.AddRange(public_CloudFlareOptimizationIp.info.CUCCip.Take(2));
#endregion
#region Sort CloudFlareOptimizationIP
CloudFlareOptimizationIp.info.CMCCip.Sort((x,y) => x.ping.CompareTo(y.ping) );
CloudFlareOptimizationIp.info.CMCCip.Sort((x,y)=> -x.speedkbs.CompareTo(y.speedkbs));
CloudFlareOptimizationIp.info.CTCCip.Sort((x, y) => x.ping.CompareTo(y.ping));
CloudFlareOptimizationIp.info.CTCCip.Sort((x, y) => -x.speedkbs.CompareTo(y.speedkbs));
CloudFlareOptimizationIp.info.CUCCip.Sort((x, y) => x.ping.CompareTo(y.ping));
CloudFlareOptimizationIp.info.CUCCip.Sort((x, y) => -x.speedkbs.CompareTo(y.speedkbs));
#endregion
var provider = new AccessKeyCredentialProvider(args[1], args[2]);
IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou");
DefaultAcsClient client = new DefaultAcsClient(profile, provider);
var AliDNSResultModel =
JsonConvert.DeserializeObject<Utils.AliDNSRecordsResult>(
Utils.DescribeDomainRecords(client, "natsurainko.work"));
List<Utils.DNSRecord> now = AliDNSResultModel.info.Record
.Where(x=>x.Type=="A"&&(x.RR=="fluentlauncher"||x.RR=="resource")).ToList<Utils.DNSRecord>();
foreach (var i in now)
{
Utils.DeleteDomainRecord(client,i.RecordId);
}
#region AddDomainRecord
foreach (var i in CloudFlareOptimizationIp.info.CMCCip.Take(3).ToList())
{
Utils.AddDomainRecord(client,"A","resource","natsurainko.work",i.ipnumber,Utils.LineEnum.mobile);
Utils.AddDomainRecord(client,"A","fluentlauncher","natsurainko.work",i.ipnumber,Utils.LineEnum.mobile);
//Utils.AddDomainRecord(client,"A","www","natsurainko.work",i.ipnumber,Utils.LineEnum.mobile);
}
foreach (var i in CloudFlareOptimizationIp.info.CTCCip.Take(3).ToList())
{
Utils.AddDomainRecord(client, "A", "resource", "natsurainko.work", i.ipnumber, Utils.LineEnum.telecom);
Utils.AddDomainRecord(client, "A", "fluentlauncher", "natsurainko.work", i.ipnumber, Utils.LineEnum.telecom);
//Utils.AddDomainRecord(client, "A", "www", "natsurainko.work", i.ipnumber, Utils.LineEnum.telecom);
}
foreach (var i in CloudFlareOptimizationIp.info.CUCCip.Take(3).ToList())
{
Utils.AddDomainRecord(client, "A", "resource", "natsurainko.work", i.ipnumber, Utils.LineEnum.unicom);
Utils.AddDomainRecord(client, "A", "fluentlauncher", "natsurainko.work", i.ipnumber, Utils.LineEnum.unicom);
//Utils.AddDomainRecord(client, "A", "www", "natsurainko.work", i.ipnumber, Utils.LineEnum.unicom);
}
#endregion
Utils.WriteLog(Utils.LogEnum.Info, "Successful!");
}
}
}