dnszone.go 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551
  1. // Copyright 2019 Yunion
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. package cloudprovider
  15. import (
  16. "yunion.io/x/pkg/utils"
  17. )
  18. type TDnsZoneType string
  19. type TDnsPolicyType string
  20. type TDnsType string
  21. type TDnsPolicyValue string
  22. type TDnsTTLRangeType string
  23. type TDnsProductType string
  24. const (
  25. PublicZone = TDnsZoneType("PublicZone")
  26. PrivateZone = TDnsZoneType("PrivateZone")
  27. )
  28. const (
  29. ContinuousTTlRange = TDnsTTLRangeType("ContinuousTTlRange")
  30. DiscreteTTlRange = TDnsTTLRangeType("DiscreteTTlRange")
  31. )
  32. const (
  33. DnsPolicyTypeSimple = TDnsPolicyType("Simple") //简单
  34. DnsPolicyTypeByCarrier = TDnsPolicyType("ByCarrier") //运营商
  35. DnsPolicyTypeByGeoLocation = TDnsPolicyType("ByGeoLocation") //地理区域
  36. DnsPolicyTypeBySearchEngine = TDnsPolicyType("BySearchEngine") //搜索引擎
  37. DnsPolicyTypeByCloudPlatform = TDnsPolicyType("ByCloudPlatform") //云厂商
  38. DnsPolicyTypeIpRange = TDnsPolicyType("IpRange") //自定义IP范围
  39. DnsPolicyTypeWeighted = TDnsPolicyType("Weighted") //加权
  40. DnsPolicyTypeFailover = TDnsPolicyType("Failover") //故障转移
  41. DnsPolicyTypeMultiValueAnswer = TDnsPolicyType("MultiValueAnswer") //多值应答
  42. DnsPolicyTypeLatency = TDnsPolicyType("Latency") //延迟
  43. )
  44. const (
  45. DnsTypeA = TDnsType("A")
  46. DnsTypeAAAA = TDnsType("AAAA")
  47. DnsTypeCAA = TDnsType("CAA")
  48. DnsTypeCNAME = TDnsType("CNAME")
  49. DnsTypeMX = TDnsType("MX")
  50. DnsTypeNS = TDnsType("NS")
  51. DnsTypeSRV = TDnsType("SRV")
  52. DnsTypeSOA = TDnsType("SOA")
  53. DnsTypeTXT = TDnsType("TXT")
  54. DnsTypePTR = TDnsType("PTR")
  55. DnsTypeDS = TDnsType("DS")
  56. DnsTypeDNSKEY = TDnsType("DNSKEY")
  57. DnsTypeIPSECKEY = TDnsType("IPSECKEY")
  58. DnsTypeNAPTR = TDnsType("NAPTR")
  59. DnsTypeSPF = TDnsType("SPF")
  60. DnsTypeSSHFP = TDnsType("SSHFP")
  61. DnsTypeTLSA = TDnsType("TLSA")
  62. DnsTypeREDIRECT_URL = TDnsType("REDIRECT_URL") //显性URL转发
  63. DnsTypeFORWARD_URL = TDnsType("FORWARD_URL") //隐性URL转发
  64. )
  65. const (
  66. // 旗舰版
  67. DnsProductUltimate = TDnsProductType("Ultimate")
  68. // 企业版
  69. DnsProductEnterprise = TDnsProductType("Enterprise")
  70. // 专业版
  71. DnsProductProfessional = TDnsProductType("Professional")
  72. // 免费版
  73. DnsProductFree = TDnsProductType("Free")
  74. )
  75. var (
  76. SUPPORTED_DNS_TYPES = []TDnsType{
  77. DnsTypeA,
  78. DnsTypeAAAA,
  79. DnsTypeCAA,
  80. DnsTypeCNAME,
  81. DnsTypeMX,
  82. DnsTypeNS,
  83. DnsTypeSRV,
  84. DnsTypeSOA,
  85. DnsTypeTXT,
  86. DnsTypePTR,
  87. DnsTypeDS,
  88. DnsTypeDNSKEY,
  89. DnsTypeIPSECKEY,
  90. DnsTypeNAPTR,
  91. DnsTypeSPF,
  92. DnsTypeSSHFP,
  93. DnsTypeTLSA,
  94. DnsTypeREDIRECT_URL,
  95. DnsTypeFORWARD_URL,
  96. }
  97. )
  98. var (
  99. DnsPolicyValueEmpty = TDnsPolicyValue("")
  100. DnsPolicyValueUnicom = TDnsPolicyValue("unicom")
  101. DnsPolicyValueTelecom = TDnsPolicyValue("telecom")
  102. DnsPolicyValueChinaMobile = TDnsPolicyValue("chinamobile")
  103. DnsPolicyValueCernet = TDnsPolicyValue("cernet")
  104. DnsPolicyValueDrPeng = TDnsPolicyValue("drpeng")
  105. DnsPolicyValueBtvn = TDnsPolicyValue("btvn")
  106. DnsPolicyValueOversea = TDnsPolicyValue("oversea")
  107. DnsPolicyValueMainland = TDnsPolicyValue("mainland")
  108. DnsPolicyValueNAmerica = TDnsPolicyValue("os_namerica")
  109. DnsPolicyValueEuro = TDnsPolicyValue("os_euro")
  110. DnsPolicyValueBaidu = TDnsPolicyValue("baidu")
  111. DnsPolicyValueGoogle = TDnsPolicyValue("google")
  112. DnsPolicyValueBing = TDnsPolicyValue("bing")
  113. DnsPolicyValueYoudao = TDnsPolicyValue("youdao")
  114. DnsPolicyValueSousou = TDnsPolicyValue("sousou")
  115. DnsPolicyValueSougou = TDnsPolicyValue("sougou")
  116. DnsPolicyValueQihu360 = TDnsPolicyValue("qihu360")
  117. )
  118. var AwsGeoLocations = []TDnsPolicyValue{
  119. TDnsPolicyValue("Default"),
  120. TDnsPolicyValue("Andorra"),
  121. TDnsPolicyValue("United Arab Emirates"),
  122. TDnsPolicyValue("Afghanistan"),
  123. TDnsPolicyValue("Antigua and Barbuda"),
  124. TDnsPolicyValue("Anguilla"),
  125. TDnsPolicyValue("Albania"),
  126. TDnsPolicyValue("Armenia"),
  127. TDnsPolicyValue("Angola"),
  128. TDnsPolicyValue("Antarctica"),
  129. TDnsPolicyValue("Argentina"),
  130. TDnsPolicyValue("American Samoa"),
  131. TDnsPolicyValue("Austria"),
  132. TDnsPolicyValue("Australia"),
  133. TDnsPolicyValue("Aruba"),
  134. TDnsPolicyValue("Åland"),
  135. TDnsPolicyValue("Azerbaijan"),
  136. TDnsPolicyValue("Bosnia and Herzegovina"),
  137. TDnsPolicyValue("Barbados"),
  138. TDnsPolicyValue("Bangladesh"),
  139. TDnsPolicyValue("Belgium"),
  140. TDnsPolicyValue("Burkina Faso"),
  141. TDnsPolicyValue("Bulgaria"),
  142. TDnsPolicyValue("Bahrain"),
  143. TDnsPolicyValue("Burundi"),
  144. TDnsPolicyValue("Benin"),
  145. TDnsPolicyValue("Saint Barthélemy"),
  146. TDnsPolicyValue("Bermuda"),
  147. TDnsPolicyValue("Brunei"),
  148. TDnsPolicyValue("Bolivia"),
  149. TDnsPolicyValue("Bonaire"),
  150. TDnsPolicyValue("Brazil"),
  151. TDnsPolicyValue("Bahamas"),
  152. TDnsPolicyValue("Bhutan"),
  153. TDnsPolicyValue("Botswana"),
  154. TDnsPolicyValue("Belarus"),
  155. TDnsPolicyValue("Belize"),
  156. TDnsPolicyValue("Canada"),
  157. TDnsPolicyValue("Cocos [Keeling] Islands"),
  158. TDnsPolicyValue("Congo"),
  159. TDnsPolicyValue("Central African Republic"),
  160. TDnsPolicyValue("Republic of the Congo"),
  161. TDnsPolicyValue("Switzerland"),
  162. TDnsPolicyValue("Ivory Coast"),
  163. TDnsPolicyValue("Cook Islands"),
  164. TDnsPolicyValue("Chile"),
  165. TDnsPolicyValue("Cameroon"),
  166. TDnsPolicyValue("China"),
  167. TDnsPolicyValue("Colombia"),
  168. TDnsPolicyValue("Costa Rica"),
  169. TDnsPolicyValue("Cuba"),
  170. TDnsPolicyValue("Cape Verde"),
  171. TDnsPolicyValue("Curaçao"),
  172. TDnsPolicyValue("Cyprus"),
  173. TDnsPolicyValue("Czech Republic"),
  174. TDnsPolicyValue("Germany"),
  175. TDnsPolicyValue("Djibouti"),
  176. TDnsPolicyValue("Denmark"),
  177. TDnsPolicyValue("Dominica"),
  178. TDnsPolicyValue("Dominican Republic"),
  179. TDnsPolicyValue("Algeria"),
  180. TDnsPolicyValue("Ecuador"),
  181. TDnsPolicyValue("Estonia"),
  182. TDnsPolicyValue("Egypt"),
  183. TDnsPolicyValue("Eritrea"),
  184. TDnsPolicyValue("Spain"),
  185. TDnsPolicyValue("Ethiopia"),
  186. TDnsPolicyValue("Finland"),
  187. TDnsPolicyValue("Fiji"),
  188. TDnsPolicyValue("Falkland Islands"),
  189. TDnsPolicyValue("Federated States of Micronesia"),
  190. TDnsPolicyValue("Faroe Islands"),
  191. TDnsPolicyValue("France"),
  192. TDnsPolicyValue("Gabon"),
  193. TDnsPolicyValue("United Kingdom"),
  194. TDnsPolicyValue("Grenada"),
  195. TDnsPolicyValue("Georgia"),
  196. TDnsPolicyValue("French Guiana"),
  197. TDnsPolicyValue("Guernsey"),
  198. TDnsPolicyValue("Ghana"),
  199. TDnsPolicyValue("Gibraltar"),
  200. TDnsPolicyValue("Greenland"),
  201. TDnsPolicyValue("Gambia"),
  202. TDnsPolicyValue("Guinea"),
  203. TDnsPolicyValue("Guadeloupe"),
  204. TDnsPolicyValue("Equatorial Guinea"),
  205. TDnsPolicyValue("Greece"),
  206. TDnsPolicyValue("South Georgia and the South Sandwich Islands"),
  207. TDnsPolicyValue("Guatemala"),
  208. TDnsPolicyValue("Guam"),
  209. TDnsPolicyValue("Guinea-Bissau"),
  210. TDnsPolicyValue("Guyana"),
  211. TDnsPolicyValue("Hong Kong"),
  212. TDnsPolicyValue("Honduras"),
  213. TDnsPolicyValue("Croatia"),
  214. TDnsPolicyValue("Haiti"),
  215. TDnsPolicyValue("Hungary"),
  216. TDnsPolicyValue("Indonesia"),
  217. TDnsPolicyValue("Ireland"),
  218. TDnsPolicyValue("Israel"),
  219. TDnsPolicyValue("Isle of Man"),
  220. TDnsPolicyValue("India"),
  221. TDnsPolicyValue("British Indian Ocean Territory"),
  222. TDnsPolicyValue("Iraq"),
  223. TDnsPolicyValue("Iran"),
  224. TDnsPolicyValue("Iceland"),
  225. TDnsPolicyValue("Italy"),
  226. TDnsPolicyValue("Jersey"),
  227. TDnsPolicyValue("Jamaica"),
  228. TDnsPolicyValue("Hashemite Kingdom of Jordan"),
  229. TDnsPolicyValue("Japan"),
  230. TDnsPolicyValue("Kenya"),
  231. TDnsPolicyValue("Kyrgyzstan"),
  232. TDnsPolicyValue("Cambodia"),
  233. TDnsPolicyValue("Kiribati"),
  234. TDnsPolicyValue("Comoros"),
  235. TDnsPolicyValue("Saint Kitts and Nevis"),
  236. TDnsPolicyValue("North Korea"),
  237. TDnsPolicyValue("Republic of Korea"),
  238. TDnsPolicyValue("Kuwait"),
  239. TDnsPolicyValue("Cayman Islands"),
  240. TDnsPolicyValue("Kazakhstan"),
  241. TDnsPolicyValue("Laos"),
  242. TDnsPolicyValue("Lebanon"),
  243. TDnsPolicyValue("Saint Lucia"),
  244. TDnsPolicyValue("Liechtenstein"),
  245. TDnsPolicyValue("Sri Lanka"),
  246. TDnsPolicyValue("Liberia"),
  247. TDnsPolicyValue("Lesotho"),
  248. TDnsPolicyValue("Lithuania"),
  249. TDnsPolicyValue("Luxembourg"),
  250. TDnsPolicyValue("Latvia"),
  251. TDnsPolicyValue("Libya"),
  252. TDnsPolicyValue("Morocco"),
  253. TDnsPolicyValue("Monaco"),
  254. TDnsPolicyValue("Republic of Moldova"),
  255. TDnsPolicyValue("Montenegro"),
  256. TDnsPolicyValue("Saint Martin"),
  257. TDnsPolicyValue("Madagascar"),
  258. TDnsPolicyValue("Marshall Islands"),
  259. TDnsPolicyValue("Macedonia"),
  260. TDnsPolicyValue("Mali"),
  261. TDnsPolicyValue("Myanmar [Burma]"),
  262. TDnsPolicyValue("Mongolia"),
  263. TDnsPolicyValue("Macao"),
  264. TDnsPolicyValue("Northern Mariana Islands"),
  265. TDnsPolicyValue("Martinique"),
  266. TDnsPolicyValue("Mauritania"),
  267. TDnsPolicyValue("Montserrat"),
  268. TDnsPolicyValue("Malta"),
  269. TDnsPolicyValue("Mauritius"),
  270. TDnsPolicyValue("Maldives"),
  271. TDnsPolicyValue("Malawi"),
  272. TDnsPolicyValue("Mexico"),
  273. TDnsPolicyValue("Malaysia"),
  274. TDnsPolicyValue("Mozambique"),
  275. TDnsPolicyValue("Namibia"),
  276. TDnsPolicyValue("New Caledonia"),
  277. TDnsPolicyValue("Niger"),
  278. TDnsPolicyValue("Norfolk Island"),
  279. TDnsPolicyValue("Nigeria"),
  280. TDnsPolicyValue("Nicaragua"),
  281. TDnsPolicyValue("Netherlands"),
  282. TDnsPolicyValue("Norway"),
  283. TDnsPolicyValue("Nepal"),
  284. TDnsPolicyValue("Nauru"),
  285. TDnsPolicyValue("Niue"),
  286. TDnsPolicyValue("New Zealand"),
  287. TDnsPolicyValue("Oman"),
  288. TDnsPolicyValue("Panama"),
  289. TDnsPolicyValue("Peru"),
  290. TDnsPolicyValue("French Polynesia"),
  291. TDnsPolicyValue("Papua New Guinea"),
  292. TDnsPolicyValue("Philippines"),
  293. TDnsPolicyValue("Pakistan"),
  294. TDnsPolicyValue("Poland"),
  295. TDnsPolicyValue("Saint Pierre and Miquelon"),
  296. TDnsPolicyValue("Pitcairn Islands"),
  297. TDnsPolicyValue("Puerto Rico"),
  298. TDnsPolicyValue("Palestine"),
  299. TDnsPolicyValue("Portugal"),
  300. TDnsPolicyValue("Palau"),
  301. TDnsPolicyValue("Paraguay"),
  302. TDnsPolicyValue("Qatar"),
  303. TDnsPolicyValue("Réunion"),
  304. TDnsPolicyValue("Romania"),
  305. TDnsPolicyValue("Serbia"),
  306. TDnsPolicyValue("Russia"),
  307. TDnsPolicyValue("Rwanda"),
  308. TDnsPolicyValue("Saudi Arabia"),
  309. TDnsPolicyValue("Solomon Islands"),
  310. TDnsPolicyValue("Seychelles"),
  311. TDnsPolicyValue("Sudan"),
  312. TDnsPolicyValue("Sweden"),
  313. TDnsPolicyValue("Singapore"),
  314. TDnsPolicyValue("Saint Helena"),
  315. TDnsPolicyValue("Slovenia"),
  316. TDnsPolicyValue("Svalbard and Jan Mayen"),
  317. TDnsPolicyValue("Slovakia"),
  318. TDnsPolicyValue("Sierra Leone"),
  319. TDnsPolicyValue("San Marino"),
  320. TDnsPolicyValue("Senegal"),
  321. TDnsPolicyValue("Somalia"),
  322. TDnsPolicyValue("Suriname"),
  323. TDnsPolicyValue("South Sudan"),
  324. TDnsPolicyValue("São Tomé and Príncipe"),
  325. TDnsPolicyValue("El Salvador"),
  326. TDnsPolicyValue("Sint Maarten"),
  327. TDnsPolicyValue("Syria"),
  328. TDnsPolicyValue("Swaziland"),
  329. TDnsPolicyValue("Turks and Caicos Islands"),
  330. TDnsPolicyValue("Chad"),
  331. TDnsPolicyValue("French Southern Territories"),
  332. TDnsPolicyValue("Togo"),
  333. TDnsPolicyValue("Thailand"),
  334. TDnsPolicyValue("Tajikistan"),
  335. TDnsPolicyValue("Tokelau"),
  336. TDnsPolicyValue("East Timor"),
  337. TDnsPolicyValue("Turkmenistan"),
  338. TDnsPolicyValue("Tunisia"),
  339. TDnsPolicyValue("Tonga"),
  340. TDnsPolicyValue("Turkey"),
  341. TDnsPolicyValue("Trinidad and Tobago"),
  342. TDnsPolicyValue("Tuvalu"),
  343. TDnsPolicyValue("Taiwan"),
  344. TDnsPolicyValue("Tanzania"),
  345. TDnsPolicyValue("Ukraine"),
  346. TDnsPolicyValue("Uganda"),
  347. TDnsPolicyValue("U.S. Minor Outlying Islands"),
  348. TDnsPolicyValue("United States"),
  349. TDnsPolicyValue("Alaska"),
  350. TDnsPolicyValue("Alabama"),
  351. TDnsPolicyValue("Arkansas"),
  352. TDnsPolicyValue("Arizona"),
  353. TDnsPolicyValue("California"),
  354. TDnsPolicyValue("Colorado"),
  355. TDnsPolicyValue("Connecticut"),
  356. TDnsPolicyValue("District of Columbia"),
  357. TDnsPolicyValue("Delaware"),
  358. TDnsPolicyValue("Florida"),
  359. TDnsPolicyValue("Georgia"),
  360. TDnsPolicyValue("Hawaii"),
  361. TDnsPolicyValue("Iowa"),
  362. TDnsPolicyValue("Idaho"),
  363. TDnsPolicyValue("Illinois"),
  364. TDnsPolicyValue("Indiana"),
  365. TDnsPolicyValue("Kansas"),
  366. TDnsPolicyValue("Kentucky"),
  367. TDnsPolicyValue("Louisiana"),
  368. TDnsPolicyValue("Massachusetts"),
  369. TDnsPolicyValue("Maryland"),
  370. TDnsPolicyValue("Maine"),
  371. TDnsPolicyValue("Michigan"),
  372. TDnsPolicyValue("Minnesota"),
  373. TDnsPolicyValue("Missouri"),
  374. TDnsPolicyValue("Mississippi"),
  375. TDnsPolicyValue("Montana"),
  376. TDnsPolicyValue("North Carolina"),
  377. TDnsPolicyValue("North Dakota"),
  378. TDnsPolicyValue("Nebraska"),
  379. TDnsPolicyValue("New Hampshire"),
  380. TDnsPolicyValue("New Jersey"),
  381. TDnsPolicyValue("New Mexico"),
  382. TDnsPolicyValue("Nevada"),
  383. TDnsPolicyValue("New York"),
  384. TDnsPolicyValue("Ohio"),
  385. TDnsPolicyValue("Oklahoma"),
  386. TDnsPolicyValue("Oregon"),
  387. TDnsPolicyValue("Pennsylvania"),
  388. TDnsPolicyValue("Rhode Island"),
  389. TDnsPolicyValue("South Carolina"),
  390. TDnsPolicyValue("South Dakota"),
  391. TDnsPolicyValue("Tennessee"),
  392. TDnsPolicyValue("Texas"),
  393. TDnsPolicyValue("Utah"),
  394. TDnsPolicyValue("Virginia"),
  395. TDnsPolicyValue("Vermont"),
  396. TDnsPolicyValue("Washington"),
  397. TDnsPolicyValue("Wisconsin"),
  398. TDnsPolicyValue("West Virginia"),
  399. TDnsPolicyValue("Wyoming"),
  400. TDnsPolicyValue("Uruguay"),
  401. TDnsPolicyValue("Uzbekistan"),
  402. TDnsPolicyValue("Vatican City"),
  403. TDnsPolicyValue("Saint Vincent and the Grenadines"),
  404. TDnsPolicyValue("Venezuela"),
  405. TDnsPolicyValue("British Virgin Islands"),
  406. TDnsPolicyValue("U.S. Virgin Islands"),
  407. TDnsPolicyValue("Vietnam"),
  408. TDnsPolicyValue("Vanuatu"),
  409. TDnsPolicyValue("Wallis and Futuna"),
  410. TDnsPolicyValue("Samoa"),
  411. TDnsPolicyValue("Kosovo"),
  412. TDnsPolicyValue("Yemen"),
  413. TDnsPolicyValue("Mayotte"),
  414. TDnsPolicyValue("South Africa"),
  415. TDnsPolicyValue("Zambia"),
  416. TDnsPolicyValue("Zimbabwe"),
  417. TDnsPolicyValue("Africa"),
  418. TDnsPolicyValue("Antarctica"),
  419. TDnsPolicyValue("Asia"),
  420. TDnsPolicyValue("Europe"),
  421. TDnsPolicyValue("North America"),
  422. TDnsPolicyValue("Oceania"),
  423. TDnsPolicyValue("South America"),
  424. }
  425. var AwsRegions = []TDnsPolicyValue{
  426. TDnsPolicyValue("us-east-2"),
  427. TDnsPolicyValue("us-east-1"),
  428. TDnsPolicyValue("us-west-1"),
  429. TDnsPolicyValue("us-west-2"),
  430. TDnsPolicyValue("af-south-1"),
  431. TDnsPolicyValue("ap-east-1"),
  432. TDnsPolicyValue("ap-south-1"),
  433. TDnsPolicyValue("ap-northeast-3"),
  434. TDnsPolicyValue("ap-northeast-2"),
  435. TDnsPolicyValue("ap-southeast-1"),
  436. TDnsPolicyValue("ap-southeast-2"),
  437. TDnsPolicyValue("ap-northeast-1"),
  438. TDnsPolicyValue("ca-central-1"),
  439. TDnsPolicyValue("cn-north-1"),
  440. TDnsPolicyValue("cn-northwest-1"),
  441. TDnsPolicyValue("eu-central-1"),
  442. TDnsPolicyValue("eu-west-1"),
  443. TDnsPolicyValue("eu-west-2"),
  444. TDnsPolicyValue("eu-south-1"),
  445. TDnsPolicyValue("eu-west-3"),
  446. TDnsPolicyValue("eu-north-1"),
  447. TDnsPolicyValue("me-south-1"),
  448. TDnsPolicyValue("sa-east-1"),
  449. TDnsPolicyValue("us-gov-east-1"),
  450. TDnsPolicyValue("us-gov-west-1"),
  451. }
  452. var AwsFailovers = []TDnsPolicyValue{
  453. TDnsPolicyValue("PRIMARY"),
  454. TDnsPolicyValue("SECONDARY"),
  455. }
  456. type TTlRange struct {
  457. RangeType TDnsTTLRangeType
  458. TTLMinValue int64
  459. TTLMaxValue int64
  460. AllowedTTLs []int64 // sorted
  461. }
  462. func (ttlR TTlRange) GetSuppportedTTL(ttl int64) int64 {
  463. if ttlR.RangeType == ContinuousTTlRange {
  464. if ttl < ttlR.TTLMinValue {
  465. return ttlR.TTLMinValue
  466. }
  467. if ttl > ttlR.TTLMaxValue {
  468. return ttlR.TTLMaxValue
  469. }
  470. return ttl
  471. }
  472. if ttlR.RangeType == DiscreteTTlRange {
  473. if ttl < ttlR.AllowedTTLs[0] {
  474. return ttlR.AllowedTTLs[0]
  475. }
  476. for i := 0; i < len(ttlR.AllowedTTLs)-1; i++ {
  477. if ttl > ttlR.AllowedTTLs[i] && ttl < ttlR.AllowedTTLs[i+1] {
  478. if ttl-ttlR.AllowedTTLs[i] < ttlR.AllowedTTLs[i+1]-ttl {
  479. return ttlR.AllowedTTLs[i]
  480. }
  481. return ttlR.AllowedTTLs[i+1]
  482. }
  483. }
  484. return ttlR.AllowedTTLs[len(ttlR.AllowedTTLs)-1]
  485. }
  486. return ttl
  487. }
  488. var TtlRangeAliyunEnterprise = TTlRange{RangeType: ContinuousTTlRange, TTLMinValue: 1, TTLMaxValue: 86400}
  489. var TtlRangeAliyunFree = TTlRange{RangeType: ContinuousTTlRange, TTLMinValue: 600, TTLMaxValue: 86400}
  490. var TtlRangeAliyunPvtz = TTlRange{RangeType: DiscreteTTlRange, AllowedTTLs: []int64{5, 10, 15, 20, 30, 60, 120, 300, 600, 1800, 3600, 43200, 86400}}
  491. var TtlRangeQcloudEnterpriseUltimate = TTlRange{RangeType: ContinuousTTlRange, TTLMinValue: 1, TTLMaxValue: 604800}
  492. var TtlRangeQcloudEnterpriseStandard = TTlRange{RangeType: ContinuousTTlRange, TTLMinValue: 30, TTLMaxValue: 604800}
  493. var TtlRangeQcloudEnterpriseBasic = TTlRange{RangeType: ContinuousTTlRange, TTLMinValue: 60, TTLMaxValue: 604800}
  494. var TtlRangeQcloudPersonalProfessional = TTlRange{RangeType: ContinuousTTlRange, TTLMinValue: 120, TTLMaxValue: 604800}
  495. var TtlRangeQcloudFree = TTlRange{RangeType: ContinuousTTlRange, TTLMinValue: 600, TTLMaxValue: 604800}
  496. type SPrivateZoneVpc struct {
  497. Id string
  498. RegionId string
  499. }
  500. type SDnsZoneCreateOptions struct {
  501. Name string
  502. Desc string
  503. ZoneType TDnsZoneType
  504. Vpcs []SPrivateZoneVpc
  505. }
  506. func IsSupportPolicyValue(v1 TDnsPolicyValue, arr []TDnsPolicyValue) bool {
  507. isIn, _ := utils.InArray(v1, arr)
  508. return isIn
  509. }
  510. type DnsRecord struct {
  511. Desc string
  512. DnsName string
  513. DnsType TDnsType
  514. DnsValue string
  515. Proxied bool
  516. Enabled bool
  517. Ttl int64
  518. MxPriority int64
  519. PolicyType TDnsPolicyType
  520. PolicyValue TDnsPolicyValue
  521. }