From ac0fcdfc8c615d62e56a30c9583e3dca51ff93d4 Mon Sep 17 00:00:00 2001
From: database64128 <free122448@hotmail.com>
Date: Fri, 1 Jan 2021 04:55:01 +0800
Subject: [PATCH] =?UTF-8?q?=E2=9A=A0=20Warn=20when=20importing=20from=20le?=
 =?UTF-8?q?gacy=20ss://=20links?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 CHANGES                                                | 1 +
 shadowsocks-csharp/Controller/ShadowsocksController.cs | 2 ++
 shadowsocks-csharp/Data/i18n.csv                       | 1 +
 shadowsocks-csharp/Model/Server.cs                     | 8 ++++----
 4 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/CHANGES b/CHANGES
index 247fe4308..99c0fc2e5 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,6 @@
 4.4.0.0 2021-01-01
 - Security: remove infrastructure of stream ciphers (#3048)
+- Show warning message when importing from deprecated legacy ss:// links.
 - Other minor bug fixes and improvements
 
 4.3.3.0 2020-12-07
diff --git a/shadowsocks-csharp/Controller/ShadowsocksController.cs b/shadowsocks-csharp/Controller/ShadowsocksController.cs
index b770ede17..1025b073d 100644
--- a/shadowsocks-csharp/Controller/ShadowsocksController.cs
+++ b/shadowsocks-csharp/Controller/ShadowsocksController.cs
@@ -450,6 +450,8 @@ public bool AddServerBySSURL(string ssURL)
                 foreach (var server in servers)
                 {
                     _config.configs.Add(server);
+                    if (server.warnLegacyUrl)
+                        MessageBox.Show(I18N.GetString("Warning: importing {0} from a legacy ss:// link. Support for legacy ss:// links will be dropped in version 5. Make sure to update your ss:// links.", server.ToString()));
                 }
                 _config.index = _config.configs.Count - 1;
                 SaveConfig(_config);
diff --git a/shadowsocks-csharp/Data/i18n.csv b/shadowsocks-csharp/Data/i18n.csv
index 8a3a66894..fb4e671c0 100644
--- a/shadowsocks-csharp/Data/i18n.csv
+++ b/shadowsocks-csharp/Data/i18n.csv
@@ -133,6 +133,7 @@ Failed to update registry,Не удалось обновить запись в 
 Import from URL: {0} ?,импортировать из адреса: {0} ?,从URL导入: {0} ?,從URL匯入: {0} ?,{0}:このURLからインポートしますか?,,
 Successfully imported from {0},Успешно импортировано из {0},导入成功:{0},導入成功:{0},{0}:インポートしました。,,
 Failed to import. Please check if the link is valid.,,导入失败,请检查链接是否有效。,導入失敗,請檢查鏈接是否有效。,インポートに失敗しました。リンクの有効性を確認してください。,,
+Warning: importing {0} from a legacy ss:// link. Support for legacy ss:// links will be dropped in version 5. Make sure to update your ss:// links.,,警告: 正在从旧版 ss:// 链接导入 {0}。对旧版 ss:// 链接的支持将于 v5 移除,请及时更新你的链接。,,,,
 System Proxy On: ,Системный прокси:,系统代理已启用:,系統 Proxy 已啟用:,システム プロキシが有効:,시스템 프록시 활성화됨: ,Proxy système activé:
 Running: Port {0},Запущен на порту {0},正在运行:端口 {0},正在執行:連接埠號碼 {0},実行中:ポート {0},실행 중: 포트 {0}번,En cours d'exécution: port {0}
 "Unexpected error, shadowsocks will exit. Please report to","Непредвиденная ошибка, пожалуйста сообщите на",非预期错误,Shadowsocks将退出。请提交此错误到,非預期錯誤,Shadowsocks 將結束。請報告此錯誤至,予想外のエラーが発生したため、Shadowsocks を終了します。詳しくは下記までお問い合わせ下さい:,알 수 없는 오류로 Shadowsocks가 종료될 것입니다. 오류를 여기로 제보해주세요:,Shadowsocks va quitter en présence d/érreur inattendue. Veuillez signaler à
diff --git a/shadowsocks-csharp/Model/Server.cs b/shadowsocks-csharp/Model/Server.cs
index 836d9d8db..7eb71e974 100755
--- a/shadowsocks-csharp/Model/Server.cs
+++ b/shadowsocks-csharp/Model/Server.cs
@@ -29,10 +29,6 @@ public class Server
         public int server_port;
         public string password;
         public string method;
-        
-
-
-
         // optional fields
         [DefaultValue("")]
         [JsonProperty(NullValueHandling = NullValueHandling.Ignore, DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)]
@@ -53,6 +49,9 @@ public class Server
 
         public int timeout;
 
+        // Set to true when imported from a legacy ss:// URL.
+        public bool warnLegacyUrl;
+
         public override int GetHashCode()
         {
             return server.GetHashCode() ^ server_port;
@@ -177,6 +176,7 @@ private static Server ParseLegacyURL(string ssURL)
             server.password = details.Groups["password"].Value;
             server.server = details.Groups["hostname"].Value;
             server.server_port = int.Parse(details.Groups["port"].Value);
+            server.warnLegacyUrl = true;
             return server;
         }