Exemple #1
0
		public HostNameNode(FSLib.IPMessager.Entity.Host host)
			: base(host)
		{
			SetInfo();

			host.NickNameChanged += (s, e) => { SetInfo(); };
		}
Exemple #2
0
		public HostStatusNode(FSLib.IPMessager.Entity.Host host)
			: base(host)
		{
			SetInfo();

			host.AbsenceModeChanged += (s, e) => { SetInfo(); };
			host.AbsenceMessageChanged += (s, e) => { SetInfo(); };
		}
		/// <summary>
		/// 获得主机应该在的用户组名
		/// </summary>
		/// <param name="host"></param>
		/// <returns></returns>
		public static string GetHostGroupName(FSLib.IPMessager.Entity.Host host)
		{
			string key = host.HostSub.Ipv4Address.Address.ToString();
			if (Env.ClientConfig.HostGroupConfig.ContainsKey(key))
			{
				return Env.ClientConfig.HostGroupConfig[key];
			}
			else
				return "未定义分组";
		}
Exemple #4
0
		public void TaskItemProgressChange(FSLib.IPMessager.Core.FileTaskEventArgs e)
		{
			if (!browser.IsReady())
			{
				notReadyScriptList.Add(new KeyValuePair<int, FileTaskEventArgs>(2, e));
				return;
			}

			if (e.Direction == FileTransferDirection.Send)
			{
				browser.InvokeScript("fileSendingProgressChange", e.TaskItem.ToJsonInfoWithProgress());
			}
			else
			{
				browser.InvokeScript("fileRecvProgressChange", e.TaskItem.ToJsonInfoWithProgress());
			}
		}
Exemple #5
0
		public void TaskItemStateChange(FSLib.IPMessager.Core.FileTaskEventArgs e)
		{
			if (!browser.IsReady())
			{
				notReadyScriptList.Add(new KeyValuePair<int, FileTaskEventArgs>(3, e));
				return;
			}

			if (e.Direction == FileTransferDirection.Send)
			{
				browser.InvokeScript("fileSendingStateChange", e.TaskItem.TaskInfo.PackageID.ToString(), e.TaskItem.Index, e.TaskItem.CurrentName, e.TaskItem.Name, (int)e.TaskItem.State);
			}
			else
			{
				browser.InvokeScript("fileRecvStateChange", e.TaskItem.TaskInfo.PackageID.ToString(), e.TaskItem.Index, e.TaskItem.CurrentName, e.TaskItem.Name, (int)e.TaskItem.State);
			}
		}
		void OnlineHost_HostOnline(object sender, FSLib.IPMessager.Entity.OnlineHost.HostEventArgs e)
		{
			if (DateTime.Now < initTime || (IsMute && Env.ClientConfig.HostInfo.DisableHostTipInQuite)) return;

			//SOUND
			if (!IsMute && Env.ClientConfig.Sound.EnableOnlineSound) Env.SoundManager.PlayOnline();

			if (
				Env.HostConfig.HostOnlineTip == IPMessagerNet.Config.HostBallonTip.None
				||
				(Env.HostConfig.HostOnlineTip == IPMessagerNet.Config.HostBallonTip.Special && !Env.HostConfig.OnlineTip.Contains(e.Host.HostSub.Ipv4Address.Address.ToString()))
				) return;

			NotifyIcon.ShowBalloonTip(1000,
				String.Format("主机 {0} 上线", Core.HostInfoManager.GetHostDisyplayName(e.Host)),
				string.Format("主机:{0}\r\n用户:{1}\r\n组名:{2}\r\nIP地址:{3}", Core.HostInfoManager.GetHostDisyplayName(e.Host), e.Host.NickName, e.Host.GroupName, e.Host.HostSub.Ipv4Address.Address.ToString()),
				ToolTipIcon.Info);
		}
		public override bool IsHostInThisGroup(FSLib.IPMessager.Entity.Host host)
		{
			return string.Compare(host.GroupName, this.Text, true) == 0;
		}
Exemple #8
0
		public void SendTaskDiscard(FSLib.IPMessager.Core.FileTaskEventArgs e)
		{
			System.Text.StringBuilder sb = new StringBuilder();
			e.TaskInfo.TaskList.ForEach(s => sb.Append(s.Name + ";"));
			browser.InvokeScript("fileSendingDiscard", e.PackageID.ToString(), sb.ToString());
		}
Exemple #9
0
		public void ReceiveTaskFinish(FSLib.IPMessager.Core.FileTaskEventArgs e)
		{
			if (!browser.IsReady())
			{
				notReadyScriptList.Add(new KeyValuePair<int, FileTaskEventArgs>(7, e));
				return;
			}
			browser.InvokeScript("fileRecvTaskFinished", e.TaskInfo.PackageID.ToString());
		}
		/// <summary>
		/// 确定这个主机是否在这个组中
		/// </summary>
		/// <param name="host"></param>
		/// <returns></returns>
		public abstract bool IsHostInThisGroup(FSLib.IPMessager.Entity.Host host);
Exemple #11
0
        //创建信息的具体操作函数
        void CreatePackage(object sender, FSLib.Threading.RunworkEventArgs e)
        {
            UpdateInfo info = new UpdateInfo()
            {
                AppName = this.txtAppName.Text,
                AppVersion = this.txtAppVersion.Text,
                Desc = this.txtDesc.Text,
                ExecuteArgumentAfter = this.txtAfterExecuteArgs.Text,
                ExecuteArgumentBefore = this.txtPreExecuteArgs.Text,
                PublishUrl = this.txtPublishUrl.Text,
                FileExecuteAfter = this.fileAfterExecute.SelectedFileName,
                FileExecuteBefore = this.filePreExecute.SelectedFileName,
                MD5 = "",
                Package = System.IO.Path.GetFileName(this.txtPackagePath.Text),
                ExecuteTimeout = txtTimeout.Text.ToInt32(),
                PackageSize = 0,
                RequiredMinVersion = ""
            };
            this.options.SaveSetting(info);

            DME.Zip.Zip.FastZipEvents evt = new DME.Zip.Zip.FastZipEvents();
            evt.ProcessFile += (s, f) =>
            {
                e.ReportProgress(0, 0, "正在压缩文件 " + System.IO.Path.GetFileName(f.Name));
            };
            DME.Zip.Zip.FastZip zip = new DME.Zip.Zip.FastZip(evt);
            if (!info.PackagePassword.IsNullOrEmpty()) zip.Password = info.PackagePassword;
            zip.CreateZip(this.txtPackagePath.Text, this.txtNewSoftDir.Text, true, "");

            //校验MD5
            byte[] hash = null;
            var size = 0;
            using (var fs = new FSLib.IO.ExtendFileStream(SelectedPackagePath, System.IO.FileMode.Open))
            {
                e.ReportProgress((int)fs.Length, 0, "");
                fs.ProgressChanged += (s, f) =>
                {
                    e.ReportProgress((int)fs.Position);
                };
                MD5 md5 = System.Security.Cryptography.MD5CryptoServiceProvider.Create();

                hash = md5.ComputeHash(fs);
                size = (int)fs.Length;
            }
            info.MD5 = BitConverter.ToString(hash).Replace("-", "").ToUpper();
            info.PackageSize = size;
            info.XmlSerilizeToFile(GetXmlPath(SelectedPackagePath));

            e.ReportProgress(0, 0, "生成成功,MD5校验:" + info.MD5);
        }
		bool isInBinding = false;	//是否正在重新绑定中

		/// <summary>
		/// 绑定服务状态,并绑定事件
		/// </summary>
		/// <param name="service"></param>
		/// <param name="args"></param>
		void CheckServiceInstalled(FSLib.IPMessager.Services.InnerService service, params Control[] args)
		{
			ServiceInfo iflp = Env.IPMClient.Config.Services.Find(s => s.TypeName == ServiceManager.InnerServiceTypeList[service]);
			if (iflp == null) Array.ForEach(args, s => s.Enabled = false);
			else
			{
				Array.ForEach(args, s =>
				{
					if (s is CheckBox)
					{
						CheckBox ck = s as CheckBox;
						ck.Checked = iflp.Enabled;

						if (!isFirstLoad) return;

						ck.CheckedChanged += (a, b) =>
						{
							if (isInBinding) return;	//如果是在绑定中,那么就让这次的事件触发无效。
							CheckBox ckb = a as CheckBox;
							iflp.Enabled = ckb.Checked;
							if (ckb.Checked)
							{
								if (!Env.StartupServiceProvider(iflp)) Information("无法启动插件,可能需要重新启动设置才能生效。");
							}
							else
							{
								if (!Env.ShutdownServiceProvider(iflp)) Information("无法停止插件,可能需要重新启动设置才能生效。");
							}

						};
					}
				}
				);
			}
		}
		public override bool IsHostInThisGroup(FSLib.IPMessager.Entity.Host host)
		{
			return host.HostSub.IPHeader == _iPHeader;
		}
Exemple #14
0
		/// <summary>
		/// 绑定插件的配置加载保存事件
		/// </summary>
		/// <param name="provider"></param>
		public static void HandleServiceConfigLoad(FSLib.IPMessager.Services.IServiceProvider provider)
		{
			if (provider == null) return;

			provider.RequireLoadConfig += (s, e) =>
			{
				if (!e.IsHandled) { e.ConfigObject = Core.ProfileManager.LoadConfig(e.Type, s.GetType().Name); e.IsHandled = true; }
			};
			provider.ReuqireSaveConfig += (s, e) =>
			{
				if (!e.IsHandled) { Core.ProfileManager.SaveConfig(s.GetType().Name, e.ConfigObject); e.IsHandled = true; }
			};
		}
Exemple #15
0
		public void AddReceiveTask(FSLib.IPMessager.Core.FileTaskEventArgs e)
		{
			if (!browser.IsReady())
			{
				notReadyScriptList.Add(new KeyValuePair<int, FileTaskEventArgs>(1, e));
				return;
			}

			browser.Document.InvokeScript("fileRecvRequest", new object[] { e.TaskInfo.ToJsonInfo() });
		}
Exemple #16
0
		public void SendTaskExpires(FSLib.IPMessager.Core.FileTaskEventArgs e)
		{
			if (!browser.IsReady())
			{
				notReadyScriptList.Add(new KeyValuePair<int, FileTaskEventArgs>(6, e));
				return;
			}

			browser.InvokeScript("fileSendingExpired", e.PackageID.ToString(), e.TaskInfo.CreateTime.ToString());
		}
		public PluginConfigMenuItem(FSLib.IPMessager.Services.ServiceInfo si)
		{
			this._service = si;
		}
Exemple #18
0
		public void ReceiveTaskStart(FSLib.IPMessager.Core.FileTaskEventArgs e)
		{
			if (!browser.IsReady())
			{
				notReadyScriptList.Add(new KeyValuePair<int, FileTaskEventArgs>(8, e));
				return;
			}
			browser.InvokeScript("fileRecvStateChange", e.TaskItem.TaskInfo.PackageID.ToString(), e.TaskItem.Index, e.TaskItem.CurrentName, 1);
		}
		public HostFileTransferNode(FSLib.IPMessager.Entity.Host host)
			: base(host)
		{
			SetInfo();
		}
Exemple #20
0
		/// <summary>
		/// 处理信息到达事件
		/// </summary>
		/// <param name="host"></param>
		/// <param name="msg"></param>
		void TextMessageReceived(Host host, FSLib.IPMessager.Entity.Message msg)
		{
			IChatService cs = this.OpenChatTab(host);
			cs.DropMessage(msg);
			if (Env.ClientConfig.ChatConfig.AutoChangeCurrentTabToNew)
			{
				this.SelectTab(cs as TabPage);
			}
			//SOUND
			if (!Forms.FrameContainer.ContainerForm.IsMute && Env.ClientConfig.Sound.EnableNewMsgSound) Env.SoundManager.PlayNewMsg();
		}
Exemple #21
0
		public HostVersionNode(FSLib.IPMessager.Entity.Host host)
			: base(host)
		{
			SetInfo();
			host.ClientVersionResolved += (s, e) => { SetInfo(); };
		}
Exemple #22
0
		public HostAddressNode(FSLib.IPMessager.Entity.Host host)
			: base(host)
		{
			SetInfo();
		}
Exemple #23
0
		public HostEncryptNode(FSLib.IPMessager.Entity.Host host)
			: base(host)
		{
			SetInfo();
			host.PublicKeyChanged += (s, e) => { SetInfo(); };
		}