我正在使用Visual Studio 2010来定位.NET 4.0 Client Profile.我有一个C#类来检测给定进程何时启动/终止.为此,该类使用ManagementEventWatcher,初始化如下; query,scope并且watcher是类字段:
query = new WqlEventQuery();
query.EventClassName = "__InstanceOperationEvent";
query.WithinInterval = new TimeSpan(0, 0, 1);
query.Condition = "TargetInstance ISA 'Win32_Process' AND TargetInstance.Name = 'notepad.exe'";
scope = new ManagementScope(@"\\.\root\CIMV2");
watcher = new ManagementEventWatcher(scope, query);
watcher.EventArrived += WatcherEventArrived;
watcher.Start();
Run Code Online (Sandbox Code Playgroud)
事件EventArrived的处理程序如下所示:
private void WatcherEventArrived(object sender, EventArrivedEventArgs e)
{
string eventName;
var mbo = e.NewEvent;
eventName = mbo.ClassPath.ClassName;
mbo.Dispose();
if (eventName.CompareTo("__InstanceCreationEvent") == 0)
{
Console.WriteLine("Started");
}
else if (eventName.CompareTo("__InstanceDeletionEvent") == 0)
{
Console.WriteLine("Terminated");
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试设置Jenkins使用我们公司的SMTP服务器来发送构建通知.我们在端口587上使用TLS作为加密方法.但我似乎无法使电子邮件通知正常工作.
这是我的Hudson.Tasks.Mailer.xml文件,所以你可以看到我的配置(我已经删除了SMTP auth用户和密码并稍微更改了smtpHost以防万一)
<hudson.tasks.Mailer_-DescriptorImpl>
<helpRedirect/>
<defaultSuffix></defaultSuffix>
<hudsonUrl>http://localhost:8080/</hudsonUrl>
<smtpAuthUsername></smtpAuthUsername>
<smtpAuthPassword></smtpAuthPassw$
<adminAddress></adminAddress>
<smtpHost>pod#####.outlook.com</smtpHost>
<useSsl>true</useSsl>
<smtpPort>587</smtpPort>
<charset>UTF-8</charset>
</hudson.tasks.Mailer_-DescriptorImpl>
Run Code Online (Sandbox Code Playgroud)
看起来这是一个已知的问题,来自http://issues.hudson-ci.org/browse/HUDSON-2206
我对Apple OS(运行Jenkins的机器)不是很熟悉,但我想我可以使用上面提到的解决方法解决问题.我不完全知道从哪里把那个解决办法了,所以我试图把它的位置:/库/ Application Support /詹金斯/ jenkins-runner.sh
defaults="defaults read /Library/Preferences/org.jenkins-ci"
war=`$defaults war` || war="/Applications/Jenkins/jenkins.war"
javaArgs="-Dmail.smtp.starttls.enable=\"true\""
heapSize=`$defaults heapSize` && javaArgs="$javaArgs -Xmx${heapSize}"
permGen=`$defaults permGen` && javaArgs="$javaArgs -XX:MaxPermSize=${permGen}"
home=`$defaults JENKINS_HOME` && export JENKINS_HOME="$home"
add_to_args() {
val=`$defaults $1` && args="$args --${1}=${val}"
}
args=""
add_to_args prefix
add_to_args httpPort
add_to_args httpListenAddress
add_to_args httpsPort
add_to_args httpsListenAddress
add_to_args ajp13Port
add_to_args ajp13ListenAddress
echo "JENKINS_HOME=$JENKINS_HOME"
echo "Jenkins command line for execution"
echo /usr/bin/java $javaArgs …Run Code Online (Sandbox Code Playgroud) 我们开发了一个通过 TCP 处理请求的 Java 应用程序。我们还为应用程序开发客户端库,其中每个库支持不同的语言/平台(Java、.NET 等)。
直到最近,TCP 流量还被限制在安全网络中。为了支持在不安全网络上的使用,我们使用java-plain-and-tls-socket-examples中的配方实现了 TLS 。这里有适用于服务器和客户端的配方,以及生成 X.509 证书的脚本。以下是我们用于仅服务器身份验证的 TLS 的配方摘要:
这看起来像是证书固定的设置,因为客户端在连接之前拥有服务器证书的副本。显然,在连接时,客户端将以某种方式使用此数据来验证服务器发送的证书。
我们现在假设这种方法对于保护 TCP 流量是有效的。由证书颁发机构签名似乎没有必要,因为我们同时控制服务器和客户端。
初步测试表明该实现在我们的 Java 服务器和 Java 客户端(均在本地运行)中正常运行:
我们使用SslStream来加密 TCP 流量。正如文档所示,我们没有指定 TLS 版本;相反,如果版本低于 1.2,我们会抛出异常。
我们对如何正确使用X509Chain.ChainPolicy.CustomTrustStore没有信心,因为文档忽略了此类型的用例以及 和 等选项类型的X509KeyStorageFlags信息X509VerificationFlags。
下面的代码旨在模仿上面概述的方法,即配置信任存储数据结构,供客户端在验证服务器证书时使用。这种方法似乎相当于将证书导入到操作系统的信任存储中。
// Import the trust store.
private X509Certificate2Collection GetCertificates(string storePath, string storePassword)
{
byte[] bytes = File.ReadAllBytes(storePath);
var result = …Run Code Online (Sandbox Code Playgroud)