Skip to content

Commit 71915a1

Browse files
committed
Made SoftwareUpdater unable to crash the software
1 parent 320311e commit 71915a1

File tree

2 files changed

+86
-81
lines changed

2 files changed

+86
-81
lines changed

AssistantComputerControl/MainProgram.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ class MainProgram {
3030
releaseDate = "2020-08-02 21:25:00", //YYYY-MM-DD H:i:s - otherwise it gives an error
3131
appName = "AssistantComputerControl",
3232

33-
//sentryToken = "super_secret";
34-
sentryToken = "https://[email protected]/1287269"; //Remove on git push
33+
sentryToken = "super_secret";
34+
3535

3636
static public bool debug = true,
3737
unmuteVolumeChange = true,

AssistantComputerControl/SoftwareUpdater.cs

Lines changed: 84 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -41,105 +41,110 @@ public bool Check(bool debug = false) {
4141
Properties.Settings.Default.Save();
4242
}
4343

44-
if (RemoteFileExists(releaseJsonUrl)) {
45-
using (WebClient client = new WebClient()) {
46-
latestReleaseJson = client.DownloadString(releaseJsonUrl);
47-
}
48-
if (latestReleaseJson == string.Empty) {
49-
latestReleaseJson = null;
44+
try {
45+
if (RemoteFileExists(releaseJsonUrl)) {
46+
using (WebClient client = new WebClient()) {
47+
latestReleaseJson = client.DownloadString(releaseJsonUrl);
48+
}
49+
if (latestReleaseJson == string.Empty) {
50+
latestReleaseJson = null;
51+
}
5052
}
51-
}
5253

53-
//Check and get beta
54-
if (Properties.Settings.Default.BetaProgram && RemoteFileExists(betaJsonUrl)) {
55-
using (WebClient client = new WebClient()) {
56-
latestBetaJson = client.DownloadString(betaJsonUrl);
54+
//Check and get beta
55+
if (Properties.Settings.Default.BetaProgram && RemoteFileExists(betaJsonUrl)) {
56+
using (WebClient client = new WebClient()) {
57+
latestBetaJson = client.DownloadString(betaJsonUrl);
58+
}
59+
if (latestBetaJson == string.Empty)
60+
latestBetaJson = null;
5761
}
58-
if (latestBetaJson == string.Empty)
59-
latestBetaJson = null;
60-
}
6162

62-
if (latestReleaseJson != null || latestBetaJson != null) {
63-
Version newVersion = null
64-
, latestRelease
65-
, latestBeta;
66-
67-
if (latestReleaseJson != null && latestBetaJson != null) {
68-
//Beta program enabled; check both release and beta for newest update
69-
latestRelease = JsonConvert.DeserializeObject<Version>(latestReleaseJson);
70-
latestBeta = JsonConvert.DeserializeObject<Version>(latestBetaJson);
71-
72-
if (DateTime.Parse(latestRelease.datetime) > DateTime.Parse(MainProgram.releaseDate) ||
73-
DateTime.Parse(latestBeta.datetime) > DateTime.Parse(MainProgram.releaseDate)) {
74-
//Both latest release and beta is ahead of this current build
75-
if (DateTime.Parse(latestRelease.datetime) > DateTime.Parse(latestBeta.datetime)) {
76-
//Release is newest
77-
newVersion = latestRelease;
63+
if (latestReleaseJson != null || latestBetaJson != null) {
64+
Version newVersion = null
65+
, latestRelease
66+
, latestBeta;
67+
68+
if (latestReleaseJson != null && latestBetaJson != null) {
69+
//Beta program enabled; check both release and beta for newest update
70+
latestRelease = JsonConvert.DeserializeObject<Version>(latestReleaseJson);
71+
latestBeta = JsonConvert.DeserializeObject<Version>(latestBetaJson);
72+
73+
if (DateTime.Parse(latestRelease.datetime) > DateTime.Parse(MainProgram.releaseDate) ||
74+
DateTime.Parse(latestBeta.datetime) > DateTime.Parse(MainProgram.releaseDate)) {
75+
//Both latest release and beta is ahead of this current build
76+
if (DateTime.Parse(latestRelease.datetime) > DateTime.Parse(latestBeta.datetime)) {
77+
//Release is newest
78+
newVersion = latestRelease;
79+
} else {
80+
//Beta is newest
81+
newVersion = latestBeta;
82+
}
7883
} else {
79-
//Beta is newest
80-
newVersion = latestBeta;
81-
}
82-
} else {
83-
//None of them are newer. Nothing new
84-
MainProgram.DoDebug("Software up to date (beta program enabled)");
85-
86-
MainProgram.isCheckingForUpdate = false;
87-
return false;
88-
}
89-
} else if (latestReleaseJson != null && latestBetaJson == null) {
90-
//Only check latest
91-
latestRelease = JsonConvert.DeserializeObject<Version>(latestReleaseJson);
84+
//None of them are newer. Nothing new
85+
MainProgram.DoDebug("Software up to date (beta program enabled)");
9286

93-
if (DateTime.Parse(latestRelease.datetime) > DateTime.Parse(MainProgram.releaseDate) && latestRelease.version != MainProgram.softwareVersion) {
94-
//Newer build
95-
newVersion = latestRelease;
96-
} else {
97-
//Not new, move on
98-
MainProgram.DoDebug("Software up to date");
99-
MainProgram.isCheckingForUpdate = false;
100-
return false;
101-
}
102-
} else if (latestReleaseJson == null && latestBetaJson != null) {
103-
//Couldn't reach "latest" update, but beta-updates are enabled
104-
latestBeta = JsonConvert.DeserializeObject<Version>(latestBetaJson);
87+
MainProgram.isCheckingForUpdate = false;
88+
return false;
89+
}
90+
} else if (latestReleaseJson != null && latestBetaJson == null) {
91+
//Only check latest
92+
latestRelease = JsonConvert.DeserializeObject<Version>(latestReleaseJson);
10593

106-
if(latestBeta != null) {
107-
if (DateTime.Parse(latestBeta.datetime) > DateTime.Parse(MainProgram.releaseDate)) {
94+
if (DateTime.Parse(latestRelease.datetime) > DateTime.Parse(MainProgram.releaseDate) && latestRelease.version != MainProgram.softwareVersion) {
10895
//Newer build
109-
newVersion = latestBeta;
96+
newVersion = latestRelease;
11097
} else {
11198
//Not new, move on
112-
MainProgram.DoDebug("Software up to date (beta program enabled)");
99+
MainProgram.DoDebug("Software up to date");
113100
MainProgram.isCheckingForUpdate = false;
114101
return false;
115102
}
103+
} else if (latestReleaseJson == null && latestBetaJson != null) {
104+
//Couldn't reach "latest" update, but beta-updates are enabled
105+
latestBeta = JsonConvert.DeserializeObject<Version>(latestBetaJson);
106+
107+
if (latestBeta != null) {
108+
if (DateTime.Parse(latestBeta.datetime) > DateTime.Parse(MainProgram.releaseDate)) {
109+
//Newer build
110+
newVersion = latestBeta;
111+
} else {
112+
//Not new, move on
113+
MainProgram.DoDebug("Software up to date (beta program enabled)");
114+
MainProgram.isCheckingForUpdate = false;
115+
return false;
116+
}
117+
}
118+
} else {
119+
MainProgram.DoDebug("Both release and beta is NULL, no new updates, or no contact to the server.");
116120
}
117-
} else {
118-
MainProgram.DoDebug("Both release and beta is NULL, no new updates, or no contact to the server.");
119-
}
120121

121-
if (newVersion != null && newVersion.version != MainProgram.softwareVersion) {
122-
//New version available
123-
MainProgram.DoDebug("New software version found (" + newVersion.version + ") [" + newVersion.type + "], current; " + MainProgram.softwareVersion);
124-
DialogResult dialogResult = MessageBox.Show(Translator.__("new_version_found", "check_for_update").Replace("{version_num}", newVersion.version).Replace("{version_type}", newVersion.type), Translator.__("new_version_found_title", "check_for_update") + " | " + MainProgram.messageBoxTitle, MessageBoxButtons.YesNo);
125-
if (dialogResult == DialogResult.Yes) {
126-
MainProgram.DoDebug("User chose \"yes\" to install update");
127-
DownloadFile(newVersion.installpath + "&upgrade=true");
128-
} else if (dialogResult == DialogResult.No) {
129-
MainProgram.DoDebug("User did not want to install update");
122+
if (newVersion != null && newVersion.version != MainProgram.softwareVersion) {
123+
//New version available
124+
MainProgram.DoDebug("New software version found (" + newVersion.version + ") [" + newVersion.type + "], current; " + MainProgram.softwareVersion);
125+
DialogResult dialogResult = MessageBox.Show(Translator.__("new_version_found", "check_for_update").Replace("{version_num}", newVersion.version).Replace("{version_type}", newVersion.type), Translator.__("new_version_found_title", "check_for_update") + " | " + MainProgram.messageBoxTitle, MessageBoxButtons.YesNo);
126+
if (dialogResult == DialogResult.Yes) {
127+
MainProgram.DoDebug("User chose \"yes\" to install update");
128+
DownloadFile(newVersion.installpath + "&upgrade=true");
129+
} else if (dialogResult == DialogResult.No) {
130+
MainProgram.DoDebug("User did not want to install update");
131+
}
132+
MainProgram.isCheckingForUpdate = false;
133+
return true;
134+
} else {
135+
MainProgram.DoDebug("Software up to date");
136+
if (debug)
137+
MessageBox.Show(Translator.__("no_new_update", "check_for_update"), Translator.__("check_for_update_title", "check_for_update") + " | " + MainProgram.messageBoxTitle);
130138
}
131-
MainProgram.isCheckingForUpdate = false;
132-
return true;
133139
} else {
134-
MainProgram.DoDebug("Software up to date");
140+
MainProgram.DoDebug("Could not reach the webserver (both 'release' and 'beta' json files couldn't be reached)");
135141
if (debug)
136-
MessageBox.Show(Translator.__("no_new_update", "check_for_update"), Translator.__("check_for_update_title", "check_for_update") + " | " + MainProgram.messageBoxTitle);
142+
MessageBox.Show(Translator.__("webservers_offline", "check_for_update"), Translator.__("check_for_update_title", "check_for_update") + " | " + MainProgram.messageBoxTitle);
137143
}
138-
} else {
139-
MainProgram.DoDebug("Could not reach the webserver (both 'release' and 'beta' json files couldn't be reached)");
140-
if (debug)
141-
MessageBox.Show(Translator.__("webservers_offline", "check_for_update"), Translator.__("check_for_update_title", "check_for_update") + " | " + MainProgram.messageBoxTitle);
144+
} catch (Exception e) {
145+
MainProgram.DoDebug("Failed to check for update (exception); " + e.Message);
142146
}
147+
143148
MainProgram.isCheckingForUpdate = false;
144149
return false;
145150
}

0 commit comments

Comments
 (0)