From c767f55b3c3612b751caed8f94b4c048f5e31190 Mon Sep 17 00:00:00 2001 From: clowwindy Date: Wed, 19 Aug 2015 21:39:06 -0700 Subject: [PATCH] add portable mode --- shadowsocks-csharp/Controller/Logging.cs | 5 +++-- .../Service/AvailabilityStatistics.cs | 5 +++-- .../Controller/Service/PolipoRunner.cs | 3 ++- shadowsocks-csharp/Encryption/PolarSSL.cs | 3 ++- shadowsocks-csharp/Encryption/Sodium.cs | 3 ++- shadowsocks-csharp/Util/Util.cs | 18 ++++++++++++++++++ 6 files changed, 30 insertions(+), 7 deletions(-) diff --git a/shadowsocks-csharp/Controller/Logging.cs b/shadowsocks-csharp/Controller/Logging.cs index 126dab70..d77a3fbe 100755 --- a/shadowsocks-csharp/Controller/Logging.cs +++ b/shadowsocks-csharp/Controller/Logging.cs @@ -1,4 +1,5 @@ -using System; +using Shadowsocks.Util; +using System; using System.Collections.Generic; using System.IO; using System.Net.Sockets; @@ -14,7 +15,7 @@ namespace Shadowsocks.Controller { try { - string temppath = Path.GetTempPath(); + string temppath = Utils.GetTempPath(); LogFile = Path.Combine(temppath, "shadowsocks.log"); FileStream fs = new FileStream(LogFile, FileMode.Append); StreamWriterWithTimestamp sw = new StreamWriterWithTimestamp(fs); diff --git a/shadowsocks-csharp/Controller/Service/AvailabilityStatistics.cs b/shadowsocks-csharp/Controller/Service/AvailabilityStatistics.cs index 0d8463a6..f3d088c5 100644 --- a/shadowsocks-csharp/Controller/Service/AvailabilityStatistics.cs +++ b/shadowsocks-csharp/Controller/Service/AvailabilityStatistics.cs @@ -6,7 +6,8 @@ using System.Net.NetworkInformation; using System.Threading; using Shadowsocks.Model; using System.Reflection; - +using Shadowsocks.Util; + namespace Shadowsocks.Controller { class AvailabilityStatistics @@ -25,7 +26,7 @@ namespace Shadowsocks.Controller //static constructor to initialize every public static fields before refereced static AvailabilityStatistics() { - string temppath = Path.GetTempPath(); + string temppath = Utils.GetTempPath(); AvailabilityStatisticsFile = Path.Combine(temppath, StatisticsFilesName); } diff --git a/shadowsocks-csharp/Controller/Service/PolipoRunner.cs b/shadowsocks-csharp/Controller/Service/PolipoRunner.cs index 3b3a5a4c..5b784bcd 100644 --- a/shadowsocks-csharp/Controller/Service/PolipoRunner.cs +++ b/shadowsocks-csharp/Controller/Service/PolipoRunner.cs @@ -9,6 +9,7 @@ using System.Text; using System.Net.NetworkInformation; using System.Net; using System.Runtime.InteropServices; +using Shadowsocks.Util; namespace Shadowsocks.Controller { @@ -20,7 +21,7 @@ namespace Shadowsocks.Controller static PolipoRunner() { - temppath = Path.GetTempPath(); + temppath = Utils.GetTempPath(); try { FileManager.UncompressFile(temppath + "/ss_privoxy.exe", Resources.privoxy_exe); diff --git a/shadowsocks-csharp/Encryption/PolarSSL.cs b/shadowsocks-csharp/Encryption/PolarSSL.cs index f5c2626d..42ce5bf7 100755 --- a/shadowsocks-csharp/Encryption/PolarSSL.cs +++ b/shadowsocks-csharp/Encryption/PolarSSL.cs @@ -1,5 +1,6 @@ using Shadowsocks.Controller; using Shadowsocks.Properties; +using Shadowsocks.Util; using System; using System.Collections.Generic; using System.IO; @@ -18,7 +19,7 @@ namespace Shadowsocks.Encryption static PolarSSL() { - string tempPath = Path.GetTempPath(); + string tempPath = Utils.GetTempPath(); string dllPath = tempPath + "/libsscrypto.dll"; try { diff --git a/shadowsocks-csharp/Encryption/Sodium.cs b/shadowsocks-csharp/Encryption/Sodium.cs index 9bc72d32..564aaeda 100755 --- a/shadowsocks-csharp/Encryption/Sodium.cs +++ b/shadowsocks-csharp/Encryption/Sodium.cs @@ -1,5 +1,6 @@ using Shadowsocks.Controller; using Shadowsocks.Properties; +using Shadowsocks.Util; using System; using System.Collections.Generic; using System.IO; @@ -14,7 +15,7 @@ namespace Shadowsocks.Encryption static Sodium() { - string tempPath = Path.GetTempPath(); + string tempPath = Utils.GetTempPath(); string dllPath = tempPath + "/libsscrypto.dll"; try { diff --git a/shadowsocks-csharp/Util/Util.cs b/shadowsocks-csharp/Util/Util.cs index 004128af..8cbdb31d 100755 --- a/shadowsocks-csharp/Util/Util.cs +++ b/shadowsocks-csharp/Util/Util.cs @@ -5,11 +5,29 @@ using System.IO; using System.IO.Compression; using System.Runtime.InteropServices; using System.Text; +using System.Windows.Forms; namespace Shadowsocks.Util { public class Utils { + // return path to store temporary files + public static string GetTempPath() + { + if (File.Exists(Application.StartupPath + "/shadowsocks_portable_mode.txt")) + { + try + { + Directory.CreateDirectory(Application.StartupPath + "/temp"); + } catch (Exception e) + { + Console.WriteLine(e); + } + return Application.StartupPath + "/temp"; + } + return Path.GetTempPath(); + } + public static void ReleaseMemory(bool removePages) { // release any unused pages