|
|
1.1 ! root 1: using System; ! 2: using System.Linq; ! 3: using System.Text; ! 4: using System.Net; ! 5: using System.Runtime.Serialization.Json; ! 6: using System.Xml; ! 7: using System.Xml.Linq; ! 8: ! 9: namespace CleanFlashCommon { ! 10: public class Version { ! 11: private string name; ! 12: private string version; ! 13: private string url; ! 14: ! 15: public Version(string name, string version, string url) { ! 16: this.name = name; ! 17: this.version = version; ! 18: this.url = url; ! 19: } ! 20: ! 21: public string GetName() { ! 22: return name; ! 23: } ! 24: ! 25: public string GetVersion() { ! 26: return version; ! 27: } ! 28: ! 29: public string GetUrl() { ! 30: return url; ! 31: } ! 32: } ! 33: ! 34: public class UpdateChecker { ! 35: private static readonly string FLASH_VERSION = "34.0.0.192"; ! 36: private static readonly string VERSION = "v34.0.0.192"; ! 37: private static readonly string AUTHOR = "cleanflash"; ! 38: private static readonly string REPO = "installer"; ! 39: private static readonly string USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36"; ! 40: ! 41: public static string GetAPILink() { ! 42: return "https://api.github.com/repos/" + AUTHOR + "/" + REPO + "/releases/latest"; ! 43: } ! 44: ! 45: public static string GetFlashVersion() { ! 46: return FLASH_VERSION; ! 47: } ! 48: ! 49: public static string GetCurrentVersion() { ! 50: return VERSION; ! 51: } ! 52: ! 53: private static Version GetLatestVersionUnsafe() { ! 54: using (WebClient client = new WebClient()) { ! 55: client.Headers.Add("user-agent", USER_AGENT); ! 56: ! 57: string release = client.DownloadString(GetAPILink()); ! 58: XmlDictionaryReader jsonReader = JsonReaderWriterFactory.CreateJsonReader(Encoding.UTF8.GetBytes(release), new XmlDictionaryReaderQuotas()); ! 59: XElement root = XElement.Load(jsonReader); ! 60: ! 61: string name = root.Descendants("name").FirstOrDefault().Value; ! 62: string tag = root.Descendants("tag_name").FirstOrDefault().Value; ! 63: string url = root.Descendants("html_url").FirstOrDefault().Value; ! 64: ! 65: if (!url.StartsWith("https://")) { ! 66: // This is a suspicious URL... We shouldn't trust it. ! 67: return null; ! 68: } ! 69: ! 70: return new Version(name, tag, url); ! 71: } ! 72: } ! 73: ! 74: public static Version GetLatestVersion() { ! 75: try { ! 76: return GetLatestVersionUnsafe(); ! 77: } catch (Exception e) { ! 78: Console.WriteLine(e); ! 79: return null; ! 80: } ! 81: } ! 82: } ! 83: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.