static void AppMain(string[] args) { ServiceLogger Logger = new ServiceLogger(DateTime.Now.ToString() + ".log"); byte[] EncryptedConfig = CopyEmbeddedDataToMemory(); string DecryptedConfig = Encoding.UTF8.GetString(EncryptedConfig); // todo: replace with DecryptEmbeddedData(EncryptedConfig); UpdaterConfiguration Config = JsonConvert.DeserializeObject <UpdaterConfiguration>(DecryptedConfig); UpdaterService Updater = new UpdaterService(Config, Logger); #if DEBUG_BUILD Logger.WriteLog("Encrypted configuration data >\n" + BitConverter.ToString(EncryptedConfig).Replace("-", " ")); Logger.WriteLog("Decrypted configuration data >\n" + DecryptedConfig); #endif Console.Title = "[SELLER BEAST] " + Config.StoreName + " | " + Config.CompanyId; UpdateAutorunKey(Config); CreateUninstaller(Config); Updater.RunTimers(); // todo: catch closes and ask if they really want to close the application. }
public UpdaterService(UpdaterConfiguration Config, ServiceLogger Logger) { string CurrentDirectory = Directory.GetCurrentDirectory(); this.Config = Config; this.Logger = Logger; this.HttpChannel = new HttpClient(); this.ApiBase = Config.UpdaterApiUrl; this.ApiCheckVersion = this.InitRoute("last-updated"); this.ApiGetExtension = this.InitRoute("extension"); this.ChromeDirectory = CurrentDirectory + "/chrome"; this.MasterDirectory = CurrentDirectory + "/master-extension"; this.RunningDirectory = CurrentDirectory + "/running-extension"; this.ProxyConfigFile = CurrentDirectory + "/proxy.json"; this.VersionFile = CurrentDirectory + "/version.dat"; this.CurrentVersion = File.Exists(this.VersionFile) ? ReadVersion() : "0"; this.ExtensionSync = new FileSystemSync( this.MasterDirectory, this.RunningDirectory); this.ExtensionSync.AddBinding("ProxyAddress", "$PROXY_ADDRESS", "/?"); this.ExtensionSync.AddBinding("ProxyUsername", "$PROXY_USERNAME", "/?"); this.ExtensionSync.AddBinding("ProxyPassword", "$PROXY_PASSWORD", "/?"); this.ExtensionSync.AddBinding("ExtensionId", "$EXTENSION_ID", "/?"); this.ExtensionSync.AddBinding("ExtensionPassword", "$EXTENSION_PW", "/?"); this.ExtensionSync.AddBinding("MerchantToken", "$MERCHANT_TOKEN", "/?"); this.ExtensionSync.AddBinding("ExtensionApi", "$API_BASE", "/?"); this.UpdateTimer = new Timer(Config.UpdateInterval) { AutoReset = true }; this.WatchDogTimer = new Timer(Config.WatchDogInterval) { AutoReset = true }; this.UpdateTimer.Elapsed += ExtensionUpdate; this.WatchDogTimer.Elapsed += WatchDogUpdate; if (!File.Exists(this.ProxyConfigFile)) { string ProxyConfig = "{\n\t\"Address\":\"" + Config.ProxyAddress + "\",\n" + "\t\"Username\":\"" + Config.ProxyUsername + "\",\n" + "\t\"Password\":\"" + Config.ProxyPassword + "\"\n}"; File.WriteAllText(this.ProxyConfigFile, ProxyConfig); } this.CfgWatcher = new FileSystemWatcher(Directory.GetCurrentDirectory(), ".json"); this.CfgWatcher.NotifyFilter |= NotifyFilters.LastWrite; this.CfgWatcher.Changed += (s, e) => this.CfgChanged(s, e); this.CfgWatcher.EnableRaisingEvents = true; }