From b8be3ecc1d049a15220b320a37398a179f5524ca Mon Sep 17 00:00:00 2001 From: Alexander Sergeev Date: Mon, 21 Oct 2024 17:55:44 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D0=BB=D0=BD=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D1=8C=D1=8E=20=D1=83=D0=B1=D1=80=D0=B0=D0=BB=20=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=B0=20=D0=BD=D0=B0=20=D1=81=D0=B5=D1=80=D0=B2=D0=B5?= =?UTF-8?q?=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App.config | 2 +- Bot_Funcs.cs | 152 ------------------------------ FirehoseFinder.csproj | 10 +- Forms/Form1.Designer.cs | 9 ++ Forms/Form1.cs | 121 +++++++++++++++++++----- Forms/Form1.resx | 47 +++++---- Guide.cs | 15 ++- Properties/AssemblyInfo.cs | 4 +- Properties/Resources.Designer.cs | 33 ++++--- Properties/Resources.en.resx | 18 ++-- Properties/Resources.resx | 13 ++- Properties/Resources.zh-Hans.resx | 18 ++-- 12 files changed, 206 insertions(+), 236 deletions(-) delete mode 100644 Bot_Funcs.cs diff --git a/App.config b/App.config index 8b4be08..7b86cdc 100644 --- a/App.config +++ b/App.config @@ -13,7 +13,7 @@ - + diff --git a/Bot_Funcs.cs b/Bot_Funcs.cs deleted file mode 100644 index 8fccc54..0000000 --- a/Bot_Funcs.cs +++ /dev/null @@ -1,152 +0,0 @@ -using FirehoseFinder.Properties; -using System; -using System.Resources; -using System.Threading; -using System.Threading.Tasks; -using System.Windows.Forms; -using Telegram.Bot; -using Telegram.Bot.Exceptions; -using Telegram.Bot.Polling; -using Telegram.Bot.Types; -using Telegram.Bot.Types.Enums; - -namespace FirehoseFinder -{ - class Bot_Funcs - { - internal readonly long channel = -1001227261414; // канал Firehose-Finder issues - internal static ChatId admin_mess = 1008578121; //Сообщение администратору - internal static ITelegramBotClient _botClient = new TelegramBotClient(Resources.bot); - private static ReceiverOptions _receiverOptions; - //Подтянули перевод на другие языки - static readonly ResourceManager LocRes = new ResourceManager("FirehoseFinder.Properties.Resources", typeof(Formfhf).Assembly); - - internal static async Task BotWork() - { - _receiverOptions = new ReceiverOptions - { - AllowedUpdates = new[] // Тут указываем типы получаемых Update`ов, о них подробнее расказано тут https://core.telegram.org/bots/api#update - { - UpdateType.Message, // Сообщения (текст, фото/видео, голосовые/видео сообщения и т.д.) - UpdateType.CallbackQuery, //Inline кнопки - }, - // Параметр, отвечающий за обработку сообщений, пришедших за то время, когда ваш бот был оффлайн - // True - не обрабатывать, False (стоит по умолчанию) - обрабаывать - ThrowPendingUpdates = true, - }; - var cts = new CancellationTokenSource(); - // UpdateHander - обработчик приходящих Update`ов - // ErrorHandler - обработчик ошибок, связанных с Bot API - _botClient.StartReceiving(UpdateHandler, ErrorHandler, _receiverOptions, cts.Token); // Запускаем бота - var me = await _botClient.GetMeAsync(); // Создаем переменную, в которую помещаем информацию о нашем боте. - MessageBox.Show(LocRes.GetString("bot_code_start") + Environment.NewLine + Settings.Default.auth_code.ToString(), - me.FirstName + '\u0020' + LocRes.GetString("bot_title_start_suc")); - await Task.Delay(-1); - } - private static async Task UpdateHandler(ITelegramBotClient botClient, Update update, CancellationToken cancellationToken) - { - try - { - switch (update.Type) - { - case UpdateType.Message: - { - // эта переменная будет содержать в себе все связанное с сообщениями - var message = update.Message; - // From - это от кого пришло сообщение (или любой другой Update) - var user = message.From; - // Chat - содержит всю информацию о чате - var chat = message.Chat; - // Обрабатываем команду /старт - if (message.Text.StartsWith("/start")) - { - if (message.Text.Length > 6) //Обрабатываем код авторизации (не забываем про дубликаты!) - { - if (Settings.Default.userID != 0) - { - await botClient.SendTextMessageAsync( - chat.Id, - "Не надо больше. Вы уже авторизованы", - replyToMessageId: message.MessageId - ); - } - else - { - string authcode = message.Text.Substring(6).Trim(' '); - bool authok = authcode.Equals(Settings.Default.auth_code); - if (authok) - { - Settings.Default.userID = user.Id; - if (string.IsNullOrEmpty(user.FirstName)) Settings.Default.userFN = string.Empty; else Settings.Default.userFN = user.FirstName; - if (string.IsNullOrEmpty(user.LastName)) Settings.Default.userLN = string.Empty; else Settings.Default.userLN = user.LastName; - if (string.IsNullOrEmpty(user.Username)) Settings.Default.userN = string.Empty; else Settings.Default.userN = user.Username; - //Сообщаем администратору о новом участнике рейтинга - await botClient.SendTextMessageAsync( - admin_mess, - $"Новый участник рейтинга: {user.FirstName} {user.LastName} ({user.Username}) - {user.Id}", - replyToMessageId: message.MessageId); - //Авторизация прошла удачно. Перегружаемся. - Application.Restart(); - } - else - { - await botClient.SendTextMessageAsync( - chat.Id, - "Авторизация прошла неудачно. Попробуйте ещё раз, используя приложение FhF.", - replyToMessageId: message.MessageId); - } - } - } - } - else - { - //Код авторизации верен - if (message.Text.Equals(Settings.Default.auth_code)) - { - Settings.Default.userID = user.Id; - if (string.IsNullOrEmpty(user.FirstName)) Settings.Default.userFN = string.Empty; else Settings.Default.userFN = user.FirstName; - if (string.IsNullOrEmpty(user.LastName)) Settings.Default.userLN = string.Empty; else Settings.Default.userLN = user.LastName; - if (string.IsNullOrEmpty(user.Username)) Settings.Default.userN = string.Empty; else Settings.Default.userN = user.Username; - await botClient.SendTextMessageAsync( - chat.Id, - "Авторизация прошла успешно. Приложение FhF перезапущено."); - //Сообщаем администратору о новом участнике рейтинга - await botClient.SendTextMessageAsync( - admin_mess, - $"Новый участник рейтинга: {user.FirstName} {user.LastName} ({user.Username}) - {user.Id}", - replyToMessageId: message.MessageId - ); - //Авторизация прошла удачно. Перегружаемся. - Application.Restart(); - } - else //Ввели неподдерживаемый текст - { - await botClient.SendTextMessageAsync( - chat.Id, - $"Может быть Вы хотели отправить {Settings.Default.auth_code}?", - replyToMessageId: message.MessageId - ); - } - } - return; - } - default: - return; - } - } - catch (Exception ex) - { - MessageBox.Show(ex.ToString()); - } - } - - private static Task ErrorHandler(ITelegramBotClient botClient, Exception error, CancellationToken cancellationToken) - { - // Тут создадим переменную, в которую поместим код ошибки и её сообщение - ApiRequestException apiRequestException = new ApiRequestException("Telegram API Error:", error); - string ErrorMessage = $"Telegram API Error:\n[{apiRequestException.ErrorCode}]\n{apiRequestException.Message}"; - //MessageBox.Show(ErrorMessage); - return Task.CompletedTask; - } - } -} diff --git a/FirehoseFinder.csproj b/FirehoseFinder.csproj index 222fa24..38cb624 100644 --- a/FirehoseFinder.csproj +++ b/FirehoseFinder.csproj @@ -14,10 +14,10 @@ true - true - ftp://yggno.de:21/ + false + C:\Users\hoplik\OneDrive\Рабочий стол\Publishing\ true - Web + Disk true Foreground 7 @@ -25,7 +25,6 @@ false false true - https://fhf.yggno.de/ https://fhf.yggno.de/ https://github.com/hoplik/Firehose-Finder/ https://github.com/hoplik/Firehose-Finder/issues @@ -38,7 +37,7 @@ false true 0 - 24.10.17.0 + 24.10.21.0 false true true @@ -138,7 +137,6 @@ - Form diff --git a/Forms/Form1.Designer.cs b/Forms/Form1.Designer.cs index 1969f40..c674a6f 100644 --- a/Forms/Form1.Designer.cs +++ b/Forms/Form1.Designer.cs @@ -246,6 +246,7 @@ private void InitializeComponent() this.process_Fastboot = new System.Diagnostics.Process(); this.backgroundWorker_sahara = new System.ComponentModel.BackgroundWorker(); this.bgWorker_ports = new System.ComponentModel.BackgroundWorker(); + this.backgroundWorker_auth = new System.ComponentModel.BackgroundWorker(); ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); this.splitContainer1.Panel1.SuspendLayout(); this.splitContainer1.Panel2.SuspendLayout(); @@ -1911,6 +1912,13 @@ private void InitializeComponent() this.bgWorker_ports.DoWork += new System.ComponentModel.DoWorkEventHandler(this.BgWorker_ports_DoWork); this.bgWorker_ports.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.BgWorker_ports_RunWorkerCompleted); // + // backgroundWorker_auth + // + this.backgroundWorker_auth.WorkerReportsProgress = true; + this.backgroundWorker_auth.DoWork += new System.ComponentModel.DoWorkEventHandler(this.BackgroundWorker_auth_DoWork); + this.backgroundWorker_auth.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.BackgroundWorker_auth_ProgressChanged); + this.backgroundWorker_auth.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.BackgroundWorker_auth_RunWorkerCompleted); + // // Formfhf // resources.ApplyResources(this, "$this"); @@ -2199,6 +2207,7 @@ private void InitializeComponent() private System.Windows.Forms.ToolStripSeparator toolStripSeparator8; private System.Windows.Forms.CheckBox checkBox_update_db; private System.Windows.Forms.SplitContainer splitContainer1; + private System.ComponentModel.BackgroundWorker backgroundWorker_auth; } } diff --git a/Forms/Form1.cs b/Forms/Form1.cs index 93bb8a8..ea60a8c 100644 --- a/Forms/Form1.cs +++ b/Forms/Form1.cs @@ -14,6 +14,7 @@ using System.Net; using System.Reflection; using System.Resources; +using System.Security.Cryptography; using System.Text; using System.Threading; using System.Windows.Forms; @@ -29,7 +30,6 @@ public partial class Formfhf : Form { private readonly Func func = new Func(); //Подключили функции private readonly Guide guide = new Guide(); //Подключили справочник - private readonly Bot_Funcs botFuncs = new Bot_Funcs(); //Подключили функции бота bool waitSahara = false; //Ждём ли мы автоперезагрузку с получением ID Sahara bool FHAlreadyLoaded = false; //Был ли успешно загружен программер (не надо грузить повторно) bool NeedReset = false; //Требуется ли перезагрузка устройства после работы с Сахарой @@ -2609,8 +2609,8 @@ public async void BotSendMes(string send_message, string version) $"[{Settings.Default.userFN} {Settings.Default.userLN} ({Settings.Default.userN})](tg://user?id={Settings.Default.userID})" + '\u0020' + LocRes.GetString("thanks_u_data") + '\u0020' + LocRes.GetString("increase_rating"); - await Bot_Funcs._botClient.SendTextMessageAsync( - botFuncs.channel, + await Guide._botClient.SendTextMessageAsync( + guide.channel, mess_to_post, disableWebPagePreview: true, parseMode: Telegram.Bot.Types.Enums.ParseMode.Markdown); @@ -3052,21 +3052,6 @@ private void BackgroundWorker_xml_RunWorkerCompleted(object sender, RunWorkerCom if (e.Error != null) textBox_soft_term.AppendText(e.Error.Message + Environment.NewLine); else { - /*string newfilename = "dump_" + listView_GPT.CheckedItems[0].SubItems[2].Text + ".bin"; - if (File.Exists(newfilename)) - { - try - { - string newfullfile = Path.Combine(folderBrowserDialog1.SelectedPath, newfilename); - if (File.Exists(newfullfile)) File.Delete(newfullfile); - File.Move(newfilename, newfullfile); - } - catch (Exception ex) - { - textBox_soft_term.AppendText(ex.Message + Environment.NewLine); - SendErrorInChat(); - } - }*/ textBox_soft_term.AppendText(e.Result.ToString() + Environment.NewLine + LocRes.GetString("tb_loader_com") + Environment.NewLine); } @@ -3355,7 +3340,7 @@ private async void ОтправкаПрограммераToolStripMenuItem_Click $"[{Settings.Default.userFN} {Settings.Default.userLN} ({Settings.Default.userN})](tg://user?id={Settings.Default.userID})" + '\u0020' + LocRes.GetString("thanks_u_data") + '\u0020' + LocRes.GetString("increase_rating"); - await Bot_Funcs._botClient.SendDocumentAsync(botFuncs.channel, onlineFile, null, null, mess_to_post, Telegram.Bot.Types.Enums.ParseMode.Markdown); + await Guide._botClient.SendDocumentAsync(guide.channel, onlineFile, null, null, mess_to_post, Telegram.Bot.Types.Enums.ParseMode.Markdown); textBox_soft_term.AppendText(LocRes.GetString("sent") + Environment.NewLine); } catch (Exception ex) @@ -3550,14 +3535,14 @@ private void ЗагрузитьССервераToolStripMenuItem_Click(object se /// private void АвторизоватьсяЧерезТелеграмToolStripMenuItem_Click(object sender, EventArgs e) { - MessageBox.Show(LocRes.GetString("mb_bot_start")); - //Запускаем локального бота - Bot_Funcs.BotWork(); - Thread.Sleep(500); - var rand = new Random(); + Random rand = new Random(); Settings.Default.auth_code = rand.Next(10, 99).ToString() + '\u002D' + rand.Next(10, 99).ToString(); ProcessStartInfo psi = new ProcessStartInfo("https://t.me/Hoplik_Bot?start=" + Settings.Default.auth_code); Process.Start(psi); + //Запускаем процедуру опроса сервера в параллельном потоке + if (!backgroundWorker_auth.IsBusy) backgroundWorker_auth.RunWorkerAsync(Encoding.UTF8.GetBytes(Settings.Default.auth_code)); + MessageBox.Show(LocRes.GetString("bot_code_start") + Environment.NewLine + Settings.Default.auth_code, + LocRes.GetString("bot_title_start")); } /// @@ -3582,5 +3567,93 @@ private void RateToolStripMenuItem_Click(object sender, EventArgs e) Rate rate = new Rate(); rate.Show(); } + + /// + /// Ожидаем проведение процедуры авторизации ботом + /// + /// + /// + private void BackgroundWorker_auth_DoWork(object sender, DoWorkEventArgs e) + { + BackgroundWorker worker = sender as BackgroundWorker; + byte timeout_ask = 5; //Периодичность опроса сервера в секундах + byte total_timeout = 100; //Длительность работы потока в секундах + string auth_path = @"https://fhf.yggno.de/challenge/"; + byte[] user_profile = (byte[])e.Argument; + SHA256 user_auth = SHA256.Create(); + string upf_code = BitConverter.ToString(user_auth.ComputeHash(user_profile)).Replace("-", string.Empty); + string full_file_path = Path.Combine(auth_path, upf_code); + e.Result = string.Empty; + string temp_report = LocRes.GetString("ts_auth"); + while (total_timeout > 0) + { + try + { + HttpWebRequest auth_wrq = (HttpWebRequest)WebRequest.Create(full_file_path); + HttpWebResponse auth_wrs = (HttpWebResponse)auth_wrq.GetResponse(); + //Если профайл есть на сервере, то копируем + if (auth_wrs.ContentType != "text/html") + { + total_timeout = timeout_ask; + e.Result = full_file_path; + } + auth_wrs.Close(); + } + catch (WebException ex) //При отсутствии инета + { + //Просто игнорируем + temp_report = ex.Message; + throw; + } + catch (Exception ex) + { + temp_report = ex.Message; + throw; + } + worker.ReportProgress(total_timeout, temp_report); + Thread.Sleep(timeout_ask * 1000); + total_timeout -= timeout_ask; + } + } + + /// + /// По завершении либо строка с файлом, либо пусто, либо ошибка + /// + /// + /// + private void BackgroundWorker_auth_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) + { + toolStripStatusLabel_filescompleted.Text = string.Empty; + toolStripProgressBar_filescompleted.Value = 0; + if (e.Error != null) + { + textBox_soft_term.AppendText(e.Error.Message + Environment.NewLine); + MessageBox.Show(e.Error.Message, LocRes.GetString("mb_title_mis")); + } + else + { + if (string.IsNullOrEmpty(e.Result.ToString())) //Неудачная авторизация + { + textBox_soft_term.AppendText(LocRes.GetString("tb_auth_fall") + Environment.NewLine); + MessageBox.Show(LocRes.GetString("tb_auth_fall"), LocRes.GetString("mb_title_mis")); + } + else //Успешно авторизовались + { + WebClient client = new WebClient(); + string[] user_profile = client.DownloadString(e.Result.ToString()).Split('\n'); + Settings.Default.userID = Convert.ToInt64(user_profile[0]); + if (string.IsNullOrEmpty(user_profile[1])) Settings.Default.userFN = string.Empty; else Settings.Default.userFN = user_profile[1]; + if (string.IsNullOrEmpty(user_profile[2])) Settings.Default.userLN = string.Empty; else Settings.Default.userLN = user_profile[2]; + if (string.IsNullOrEmpty(user_profile[3])) Settings.Default.userN = string.Empty; else Settings.Default.userN = user_profile[3]; + Application.Restart(); + } + } + } + + private void BackgroundWorker_auth_ProgressChanged(object sender, ProgressChangedEventArgs e) + { + toolStripStatusLabel_filescompleted.Text = e.UserState.ToString(); + toolStripProgressBar_filescompleted.Value = e.ProgressPercentage; + } } } \ No newline at end of file diff --git a/Forms/Form1.resx b/Forms/Form1.resx index f28cdb9..ebe683c 100644 --- a/Forms/Form1.resx +++ b/Forms/Form1.resx @@ -123,7 +123,7 @@ - 0, 585 + 0, 587 17, 58 @@ -428,7 +428,7 @@ 528, 9 - 1189, 99 + 205, 140 Fill @@ -461,7 +461,7 @@ 3 - 1383, 58 + 17, 99 242, 26 @@ -683,7 +683,7 @@ 51 - 1361, 585 + 1361, 587 2 @@ -704,7 +704,7 @@ 4, 25 - 1361, 625 + 1361, 627 4 @@ -845,7 +845,7 @@ 125 - 1287, 84 + 153, 99 False @@ -1815,7 +1815,7 @@ _HASH 2 - 1001, 99 + 17, 140 52, 20 @@ -3024,7 +3024,7 @@ _HASH Bottom - 3, 221 + 3, 223 929, 339 @@ -3210,7 +3210,7 @@ _HASH 3, 3, 3, 3 - 935, 563 + 935, 565 1 @@ -3567,7 +3567,7 @@ _HASH 3, 133 - 929, 427 + 929, 429 1 @@ -3666,7 +3666,7 @@ _HASH 3 - 935, 563 + 935, 565 0 @@ -3690,7 +3690,7 @@ _HASH 4, 25 - 935, 563 + 935, 565 2 @@ -3939,7 +3939,7 @@ _HASH 2 - 872, 99 + 1220, 99 1032, 58 @@ -3951,7 +3951,7 @@ _HASH 790, 17 - 17, 99 + 365, 99 Бинарные файлы (*.bin)|*.bin|Все файлы (*.*)|*.* @@ -3966,7 +3966,7 @@ _HASH 492, 58 - 707, 99 + 1055, 99 XML-файлы (*.xml)|*.xml @@ -3978,13 +3978,13 @@ _HASH 250, 9 - 360, 99 + 708, 99 True - 153 + 190 8, 16 @@ -7027,6 +7027,12 @@ _HASH System.ComponentModel.BackgroundWorker, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + backgroundWorker_auth + + + System.ComponentModel.BackgroundWorker, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + Formfhf @@ -7034,10 +7040,10 @@ _HASH System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - 546, 99 + 894, 99 - 187, 99 + 535, 99 1009, 17 @@ -7045,4 +7051,7 @@ _HASH 1244, 17 + + 321, 140 + \ No newline at end of file diff --git a/Guide.cs b/Guide.cs index 4a6bba2..ba9d564 100644 --- a/Guide.cs +++ b/Guide.cs @@ -1,5 +1,8 @@ -using System; +using FirehoseFinder.Properties; +using System; using System.Collections.Generic; +using Telegram.Bot.Types; +using Telegram.Bot; namespace FirehoseFinder { @@ -203,6 +206,16 @@ internal enum ELF_Data : byte new Users_Rating ("Andy Dmitriev (AndyDmitriev)", user_mess:1, user_reactions:1, last_post_date: new DateTime(2025,3,16)), new Users_Rating ("Kaniel Outis (Kanielscotfield)", user_mess:1, user_reactions:1, last_post_date: new DateTime(2025,4,10)), }; + + /// + /// Канал Firehose-Finder issues + /// + internal readonly long channel = -1001227261414; + + /// + /// Бот "Hoplik-Bot" + /// + internal static ITelegramBotClient _botClient = new TelegramBotClient(Resources.bot); } class GPT_Struct diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs index 698fc8b..a78fbe1 100644 --- a/Properties/AssemblyInfo.cs +++ b/Properties/AssemblyInfo.cs @@ -32,6 +32,6 @@ // Можно задать все значения или принять номера сборки и редакции по умолчанию // используя "*", как показано ниже: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("24.10.17.0")] -[assembly: AssemblyFileVersion("24.10.17.0")] +[assembly: AssemblyVersion("24.10.21.0")] +[assembly: AssemblyFileVersion("24.10.21.0")] [assembly: NeutralResourcesLanguage("ru-RU")] diff --git a/Properties/Resources.Designer.cs b/Properties/Resources.Designer.cs index 75b2476..223a7d8 100644 --- a/Properties/Resources.Designer.cs +++ b/Properties/Resources.Designer.cs @@ -210,11 +210,11 @@ internal static string bot_code_start { } /// - /// Ищет локализованную строку, похожую на успешно запущен!. + /// Ищет локализованную строку, похожую на Альтернативная возможность авторизации. /// - internal static string bot_title_start_suc { + internal static string bot_title_start { get { - return ResourceManager.GetString("bot_title_start_suc", resourceCulture); + return ResourceManager.GetString("bot_title_start", resourceCulture); } } @@ -880,15 +880,6 @@ internal static string mb_body_server_down { } } - /// - /// Ищет локализованную строку, похожую на Пожалуйста, дождитесь сообщения об успешном запуске бота!. - /// - internal static string mb_bot_start { - get { - return ResourceManager.GetString("mb_bot_start", resourceCulture); - } - } - /// /// Ищет локализованную строку, похожую на Для получения идентификаторов устройство должно быть переподключено!. /// @@ -1379,6 +1370,15 @@ internal static string tb_adb_start { } } + /// + /// Ищет локализованную строку, похожую на Авторизация завершилась неудачей. Попробуйте ещё раз.. + /// + internal static string tb_auth_fall { + get { + return ResourceManager.GetString("tb_auth_fall", resourceCulture); + } + } + /// /// Ищет локализованную строку, похожую на Пакетная запись прошивки. /// @@ -1731,6 +1731,15 @@ internal static System.Drawing.Bitmap translate { } } + /// + /// Ищет локализованную строку, похожую на Авторизация. + /// + internal static string ts_auth { + get { + return ResourceManager.GetString("ts_auth", resourceCulture); + } + } + /// /// Ищет локализованную строку, похожую на Нажмите для проверки выбранного программера. /// diff --git a/Properties/Resources.en.resx b/Properties/Resources.en.resx index c1b67cb..0600118 100644 --- a/Properties/Resources.en.resx +++ b/Properties/Resources.en.resx @@ -157,9 +157,9 @@ If you failed to log in automatically, then you can find the "Hoplik-Bot" bot in the Telegram and try to enter the authorization code after the /start command when the FhF application is running: Если у вас не получилость автоматически авторизоваться, то вы можете найти в Телеграм бота "Hoplik-Bot" и при запущенном приложении FhF попробовать ввести после команды /start код авторизации: - - successfully launched! - успешно запущен! + + Alternative authorization option + Альтернативная возможность авторизации Dir for unpacking @@ -405,10 +405,6 @@ Upon confirmation, the programmer will be downloaded from the server. This does not guarantee that you will succeed with this programmer. It's just that, with a high degree of probability, a file suitable for the model you have chosen. При подтверждении, с сервера будет загружен программер. Это не гарантирует того, что у вас с этим программером всё получится. Просто это, с высокой долей вероятности, подходящий к выбранной вами модели файл. - - Please wait for the message about the successful launch of the bot! - Пожалуйста, дождитесь сообщения об успешном запуске бота! - To get the IDs, the device must be reconnected! Для получения идентификаторов устройство должно быть переподключено! @@ -617,6 +613,10 @@ Starting the ADB server ... Запускаем сервер ADB ... + + Authorization failed. Try again. + Авторизация завершилась неудачей. Попробуйте ещё раз. + Batch firmware recording Пакетная запись прошивки @@ -761,6 +761,10 @@ Select from the list or enter manually Выберите из списка или введите вручную + + Authorization + Авторизация + Click to check the selected programmer Нажмите для проверки выбранного программера diff --git a/Properties/Resources.resx b/Properties/Resources.resx index 5f8adf4..00726b4 100644 --- a/Properties/Resources.resx +++ b/Properties/Resources.resx @@ -709,11 +709,8 @@ за предоставленные данные. - - успешно запущен! - - - Пожалуйста, дождитесь сообщения об успешном запуске бота! + + Альтернативная возможность авторизации Если у вас не получилость автоматически авторизоваться, то вы можете найти в Телеграм бота "Hoplik-Bot" и при запущенном приложении FhF попробовать ввести после команды /start код авторизации: @@ -721,4 +718,10 @@ Актуально на: + + Авторизация завершилась неудачей. Попробуйте ещё раз. + + + Авторизация + \ No newline at end of file diff --git a/Properties/Resources.zh-Hans.resx b/Properties/Resources.zh-Hans.resx index 4aca243..fdafa77 100644 --- a/Properties/Resources.zh-Hans.resx +++ b/Properties/Resources.zh-Hans.resx @@ -157,9 +157,9 @@ 如果您未能自动登录,那么您可以在Telegram中找到"Hoplik-Bot"机器人,并尝试在FhF应用程序运行时在/start命令之后输入授权代码: Если у вас не получилость автоматически авторизоваться, то вы можете найти в Телеграм бота "Hoplik-Bot" и при запущенном приложении FhF попробовать ввести после команды /start код авторизации: - - 成功发射! - успешно запущен! + + 替代授权选项 + Альтернативная возможность авторизации 解压目录 @@ -405,10 +405,6 @@ 确认后,将从服务器下载一个程序包。这并不保证您能成功使用。它只是一个可能适合您所选机型的文件。 При подтверждении, с сервера будет загружен программер. Это не гарантирует того, что у вас с этим программером всё получится. Просто это, с высокой долей вероятности, подходящий к выбранной вами модели файл. - - 请等待有关机器人成功启动的消息! - Пожалуйста, дождитесь сообщения об успешном запуске бота! - 必须重新连接设备才能接收 ID! Для получения идентификаторов устройство должно быть переподключено! @@ -617,6 +613,10 @@ 正在启动ADB服务器中... Запускаем сервер ADB ... + + 授权失败。 再试一次。 + Авторизация завершилась неудачей. Попробуйте ещё раз. + 固件批量记录 Пакетная запись прошивки @@ -761,6 +761,10 @@ 从列表中选择或手动输入 Выберите из списка или введите вручную + + 授权书 + Авторизация + 点击以检查所选编程器 Нажмите для проверки выбранного программера