/// <summary> /// Event handler for preferences class if any property was changed. /// </summary> /// <param name="sender">sender</param> /// <param name="e">changed property arguments</param> internal void OnPropertyChanged(object sender, PropertyEventArgs e) { if (e.Key=="MaxDownloadRate") { float upRate=Preferences.GetFloat("MaxUploadRate"); float downRate=(float)e.NewValue; if ((upRate*4.0F<downRate)&&(upRate<10)) { e.NewValue = upRate*4.0F; } else { // do nothing } } if (e.Key=="MaxUploadRate") { float upRate=(float)e.NewValue; float downRate=Preferences.GetFloat("MaxDownloadRate"); if ((upRate*4.0F<downRate)&&(upRate<10)) { Preferences.SetProperty("MaxDownloadRate", upRate*4.0F, false); } else { // do nothing } } if (e.Key=="RemotePassword") { System.Security.Cryptography.MD5 crypto=System.Security.Cryptography.MD5.Create(); byte [] c=null; string clearPass=(string)e.NewValue; c=new byte[clearPass.Length]; for (int i=0; i < clearPass.Length; i++) { c[i]=System.Convert.ToByte(clearPass[i]); } byte[] res=crypto.ComputeHash(c); e.NewValue=CKernel.HashToString(res); } if (e.Key=="Language") { Globalization.Language = e.NewValue.ToString(); } if (e.Key=="IPFilterEnabled") { bool enabled=(bool)e.NewValue; if (enabled) { IPFilter = new CIPFilter(); IPFilter.LoadIPFilter(DllDirectory,"ipfilter.dat",128); } else IPFilter=null; } if (e.Key=="TCPPort") { m_PortChanged=true; if (e.NewValue!=e.OldValue) { CKernel.Listener.Stop(); CKernel.Listener=new CListener((ushort)e.NewValue); CKernel.Listener.Start(); CKernel.ServersList.ConnectToAnyServer();//first call disconnects CKernel.ServersList.ConnectToAnyServer();//secons call connects } } if (e.Key=="UDPPort") { if (e.NewValue!=e.OldValue) { CKernel.UDPListener.Close(); CKernel.UDPListener=new CUDPListener(); } } if (e.Key=="TempFolders") { ArrayList newFolders=new ArrayList((Array)e.NewValue); ArrayList oldFolders=new ArrayList((Array)e.OldValue); foreach (string oldfolder in (Array)e.OldValue) { if (!newFolders.Contains(oldfolder)) { //remove files from folder CKernel.FilesList.RemoveIncompleteFolder(oldfolder); } } foreach (string newfolder in (Array)e.NewValue) { if (!oldFolders.Contains(newfolder)) { //remove files from folderadd new temp folder CKernel.FilesList.AddNewIncompleteFolder(newfolder); } } } if (e.Key=="SharedFolders") { string sharedOld=""; string sharedNew=""; foreach (string oldfolder in (Array)e.OldValue) { sharedOld+=oldfolder; } foreach (string newfolder in (Array)e.NewValue) { sharedNew+=newfolder; } if (sharedOld!=sharedNew) CKernel.FilesList.RefreshSharedList(); } }
internal static void StartKernel() { FilesList.LoadSharedFiles(); UDPListener.Start(); Listener.Start(); CLog.Log(Constants.Log.Notify, "INIT_KRN", Version); LastSearch=1; if (Preferences.GetBool("IPFilterEnabled")) { IPFilter=new CIPFilter(); IPFilter.LoadIPFilter(DllDirectory,"ipfilter.dat",128); } else IPFilter=null; if (Preferences.GetBool("DownloadServerMet")) httpDownload.DownloadFile(Preferences.GetString("ServerMetUri"),"","server.met",false); else CKernel.ServersList.Load("",true); //currently for fun only, should be removed //httpDownload.GetInfo(@"http://hathi.sourceforge.net/Messages/TestVersions-pre5-test2.txt"); // TODO: Version //Xml example : string[] myLog=new string[] {"version","log"}; httpDownload.GetInfoXML(@"http://hathi.sourceforge.net/Messages/v1.00.xml?lang="+Globalization.Language,myLog,true); //if threaded = true, it returns "", else can be used later to get //CLog.Log(Constants.Log.Info,httpDownload.getReadInfoFromXML("log")); // if (Preferences.GetBool("AutoReconnect")) { ServersList.ConnectToAnyServer(); } }