diff --git a/GUT.Schedule/GUTSchedule.Droid/Activities/MainActivity.cs b/GUT.Schedule/GUTSchedule.Droid/Activities/MainActivity.cs index a2d409c..e4dcbc3 100644 --- a/GUT.Schedule/GUTSchedule.Droid/Activities/MainActivity.cs +++ b/GUT.Schedule/GUTSchedule.Droid/Activities/MainActivity.cs @@ -61,7 +61,7 @@ namespace GUTSchedule.Droid.Activities AssignVariables(); - /*faculty.SetList(this, Faculties.Select(i => i.name)); + faculty.SetList(this, Faculties.Select(i => i.name)); int s = Faculties.FindIndex(i => i.id == prefs.GetString("Faculty", "-123")); faculty.SetSelection(s == -1 ? 0 : s); @@ -70,7 +70,7 @@ namespace GUTSchedule.Droid.Activities // P.S. Fuck Android await Task.Delay(100); - UpdateGroupsList(); */ // TODO: Temp + UpdateGroupsList(); AddEvents(); @@ -85,14 +85,14 @@ namespace GUTSchedule.Droid.Activities reminder.SetSelection(prefs.GetInt("Reminder", 0)); calendar.SetList(this, Calendar.Calendars.Select(i => i.Name)); - int s = Calendar.Calendars.FindIndex(i => i.Id == prefs.GetString("Calendar", "-123")); + s = Calendar.Calendars.FindIndex(i => i.Id == prefs.GetString("Calendar", "-123")); calendar.SetSelection(s == -1 ? 0 : s); end.Text = endDate.ToShortDateString(); start.Text = startDate.ToShortDateString(); groupTitle.Checked = prefs.GetBoolean("AddGroupToHeader", false); - authorize.Checked = true;// prefs.GetBoolean("Authorize", true); // TODO: Temp + authorize.Checked = prefs.GetBoolean("Authorize", true); email.Text = prefs.GetString("email", ""); password.Text = prefs.GetString("password", ""); diff --git a/GUT.Schedule/GUTSchedule.Droid/Activities/StartActivity.cs b/GUT.Schedule/GUTSchedule.Droid/Activities/StartActivity.cs index fde0d79..a3f9d22 100644 --- a/GUT.Schedule/GUTSchedule.Droid/Activities/StartActivity.cs +++ b/GUT.Schedule/GUTSchedule.Droid/Activities/StartActivity.cs @@ -59,7 +59,7 @@ namespace GUT.Schedule.Droid.Activities } status.Text = Resources.GetText(Resource.String.facultiesLoadingStatus); - //MainActivity.Faculties = await Parser.GetFaculties(); // TODO: Temp + MainActivity.Faculties = await Parser.GetFaculties(); } catch (HttpRequestException e) { diff --git a/GUT.Schedule/GUTSchedule.Droid/Resources/Resource.designer.cs b/GUT.Schedule/GUTSchedule.Droid/Resources/Resource.designer.cs index b9567eb..e87a6a6 100644 --- a/GUT.Schedule/GUTSchedule.Droid/Resources/Resource.designer.cs +++ b/GUT.Schedule/GUTSchedule.Droid/Resources/Resource.designer.cs @@ -14,7 +14,7 @@ namespace GUTSchedule.Droid { - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "1.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "12.0.99.19")] public partial class Resource { diff --git a/GUT.Schedule/GUTSchedule.Droid/Resources/layout/Main.xml b/GUT.Schedule/GUTSchedule.Droid/Resources/layout/Main.xml index 1285c02..f7c9630 100644 --- a/GUT.Schedule/GUTSchedule.Droid/Resources/layout/Main.xml +++ b/GUT.Schedule/GUTSchedule.Droid/Resources/layout/Main.xml @@ -32,7 +32,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:checked="true" - android:enabled="false" android:text="@string/authorizeCheckbox"/> - + diff --git a/GUT.Schedule/GUTSchedule.UWP/Pages/MainPage.xaml.cs b/GUT.Schedule/GUTSchedule.UWP/Pages/MainPage.xaml.cs index ad57083..0c93398 100644 --- a/GUT.Schedule/GUTSchedule.UWP/Pages/MainPage.xaml.cs +++ b/GUT.Schedule/GUTSchedule.UWP/Pages/MainPage.xaml.cs @@ -45,7 +45,7 @@ namespace GUTSchedule.UWP.Pages PackageVersion ver = Package.Current.Id.Version; version.Text = $"v{ver.Major}.{ver.Minor}.{ver.Build}.{ver.Revision}"; - authorize.IsChecked = true;//(bool?)settings.Values["Authorize"] ?? true; // TODO: Temp + authorize.IsChecked = (bool?)settings.Values["Authorize"] ?? true; if (vault.RetrieveAll() is IReadOnlyList credentials && credentials.Count > 0) { email.Text = credentials.First().UserName; @@ -54,7 +54,7 @@ namespace GUTSchedule.UWP.Pages } rememberCredential.IsChecked = (bool?)settings.Values["RememberCredential"] ?? true; - /*faculty.ItemsSource = (await Parser.GetFaculties()).Select(i => new ComboBoxItem // TODO: Temp + faculty.ItemsSource = (await Parser.GetFaculties()).Select(i => new ComboBoxItem { Content = i.name, Tag = i.id, @@ -63,7 +63,7 @@ namespace GUTSchedule.UWP.Pages faculty.SelectedIndex = (faculty.ItemsSource as List).FindIndex(i => i.IsSelected); if (faculty.SelectedIndex < 0) faculty.SelectedIndex = 0; - course.SelectedIndex = (int?)settings.Values["Course"] ?? 0;*/ + course.SelectedIndex = (int?)settings.Values["Course"] ?? 0; startDate.Date = DateTime.Today; endDate.Date = startDate.Date.Value.AddDays(6); diff --git a/GUT.Schedule/GUTSchedule/Parser.cs b/GUT.Schedule/GUTSchedule/Parser.cs index 3e2badd..35f2c36 100644 --- a/GUT.Schedule/GUTSchedule/Parser.cs +++ b/GUT.Schedule/GUTSchedule/Parser.cs @@ -15,6 +15,11 @@ namespace GUTSchedule { public static class Parser { + private static readonly HttpClient client = new HttpClient(new HttpClientHandler + { + ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => true + }); + public static async Task VaildateAuthorization(string email, string password) { if (string.IsNullOrWhiteSpace(email)) @@ -22,8 +27,6 @@ namespace GUTSchedule if (string.IsNullOrWhiteSpace(password)) throw new ArgumentNullException(nameof(password)); - HttpClient client = new HttpClient(); - await client.GetAsync("https://lk.sut.ru/cabinet/"); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://lk.sut.ru/cabinet/lib/autentificationok.php"); @@ -67,7 +70,7 @@ namespace GUTSchedule } else if (exportParameters is DefaultExportParameters args) { - DateTime startDate = new DateTime(long.Parse(await new HttpClient().GetStringAsync("https://xfox111.net/API/GUTSchedule/SemesterOffsetDay"))); + DateTime startDate = new DateTime(2021, 8, 30); IHtmlDocument[] rawSchedule = await GetRawSchedule(args.FacultyId, args.Course, args.GroupId); if(rawSchedule[0] != null) schedule.AddRange(ParseRegularSchedule(startDate, rawSchedule[0])); @@ -131,20 +134,17 @@ namespace GUTSchedule private static async Task> GetList(params (string key, string value)[] parameters) { List<(string id, string name)> list = new List<(string, string)>(); - using (HttpClient client = new HttpClient()) - { - HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://cabinet.sut.ru/raspisanie_all_new.php"); - request.SetContent(parameters); - request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded"); + HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://cabinet.sut.ru/raspisanie_all_new.php"); + request.SetContent(parameters); + request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded"); - HttpResponseMessage response = await client.SendAsync(request); - string responseBody = await response.Content.ReadAsStringAsync(); - if (string.IsNullOrWhiteSpace(responseBody)) - return list; + HttpResponseMessage response = await client.SendAsync(request); + string responseBody = await response.Content.ReadAsStringAsync(); + if (string.IsNullOrWhiteSpace(responseBody)) + return list; - foreach (string s in responseBody.Remove(responseBody.Length - 1).Split(';')) - list.Add((s.Split(',')[0], s.Split(',')[1])); - } + foreach (string s in responseBody.Remove(responseBody.Length - 1).Split(';')) + list.Add((s.Split(',')[0], s.Split(',')[1])); return list; } @@ -185,29 +185,28 @@ namespace GUTSchedule throw new ArgumentNullException(nameof(groupId)); IHtmlDocument[] docs = new IHtmlDocument[2]; - using (HttpClient client = new HttpClient()) - for(int k = 1; k < 3; k++) - { - HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://cabinet.sut.ru/raspisanie_all_new"); - request.SetContent( - ("group_el", "0"), - ("kurs", course), - ("type_z", k.ToString()), - ("faculty", facultyId), - ("group", groupId), - ("ok", "Показать"), - ("schet", GetCurrentSemester())); + for (int k = 1; k < 3; k++) + { + HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://cabinet.sut.ru/raspisanie_all_new"); + request.SetContent( + ("group_el", "0"), + ("kurs", course), + ("type_z", k.ToString()), + ("faculty", facultyId), + ("group", groupId), + ("ok", "Показать"), + ("schet", GetCurrentSemester())); - request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded"); + request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded"); - HttpResponseMessage response = await client.SendAsync(request); - string responseContent = await response.Content.ReadAsStringAsync(); - if (string.IsNullOrWhiteSpace(responseContent)) - docs[k - 1] = null; + HttpResponseMessage response = await client.SendAsync(request); + string responseContent = await response.Content.ReadAsStringAsync(); + if (string.IsNullOrWhiteSpace(responseContent)) + docs[k - 1] = null; - try { docs[k - 1] = new HtmlParser().ParseDocument(responseContent); } - catch (ArgumentException) { } - } + try { docs[k - 1] = new HtmlParser().ParseDocument(responseContent); } + catch (ArgumentException) { } + } return docs; } diff --git a/changelogs/android/en-IN/changelogs/android-changelog.txt b/changelogs/android/en-IN/changelogs/android-changelog.txt index 240468f..993fdcb 100644 --- a/changelogs/android/en-IN/changelogs/android-changelog.txt +++ b/changelogs/android/en-IN/changelogs/android-changelog.txt @@ -1,3 +1,2 @@ -- Anonymous schedule export is temporarly disabled -- Fixed export failing -- Remote lessons are now appropriately marked \ No newline at end of file +- Fixed SSL error +- Turned back on anonymous schedule export \ No newline at end of file diff --git a/changelogs/android/ru-RU/changelogs/android-changelog.txt b/changelogs/android/ru-RU/changelogs/android-changelog.txt index 79c0f5c..4bc87fc 100644 --- a/changelogs/android/ru-RU/changelogs/android-changelog.txt +++ b/changelogs/android/ru-RU/changelogs/android-changelog.txt @@ -1,3 +1,2 @@ -- Анонимный экспорт расписания временно отключен -- Исправлена проблема с экспортом расписания -- Теперь дистанционные пары отмечаются как "ДОТ" \ No newline at end of file +- Исправлена проблема с SSL сетрификатами +- Анонимный экспорт расписания снова работает \ No newline at end of file diff --git a/changelogs/windows/en/baseListing/releaseNotes.txt b/changelogs/windows/en/baseListing/releaseNotes.txt index 240468f..be6e7dd 100644 --- a/changelogs/windows/en/baseListing/releaseNotes.txt +++ b/changelogs/windows/en/baseListing/releaseNotes.txt @@ -1,3 +1 @@ -- Anonymous schedule export is temporarly disabled -- Fixed export failing -- Remote lessons are now appropriately marked \ No newline at end of file +- Turned back on anonymous schedule export \ No newline at end of file diff --git a/changelogs/windows/ru/baseListing/releaseNotes.txt b/changelogs/windows/ru/baseListing/releaseNotes.txt index 79c0f5c..ea19c3b 100644 --- a/changelogs/windows/ru/baseListing/releaseNotes.txt +++ b/changelogs/windows/ru/baseListing/releaseNotes.txt @@ -1,3 +1 @@ -- Анонимный экспорт расписания временно отключен -- Исправлена проблема с экспортом расписания -- Теперь дистанционные пары отмечаются как "ДОТ" \ No newline at end of file +- Анонимный экспорт расписания снова работает \ No newline at end of file