数字签名、数字证书与 PKI 系统

数字签名、数字证书与 PKI 系统 https://www.jianshu.com/p/ffe8c203a471 摘要算法 除了加密算法,摘要算法在互联网安全体系中也扮演了重要的角色。摘要算法有以下特性: 只要源文本不同,计算得到的结果,必然不同 (或者说机会很少) 。 无法从结果反推出源数据。 基于以上特性,我们一般使用摘要算法来校验原始内容是否被篡改。常见的摘要算法有 MD5、SHA 等。 Tips: 摘要算法不能算作加密算法,加密算法需要使用秘钥加解密,但摘要算法无法根据结果反推出内容。另外 MD5 目前也不算安全了,例如彩虹表攻击。 数字证书 数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。 数字证书里一般会包含公钥、公钥拥有者名称、CA 的数字签名、有效期、授权中心名称、证书序列号等信息。 数字证书如何确保列出的用户就是公钥的拥有者呢?关键点是 CA 的数字签名,CA会用自己的私钥将证书内容的摘要进行加密。因为 CA 的公钥是公开的,任何人都可以用公钥解密出 CA 的数字签名的摘要,再用同样的摘要算法提取出证书的摘要和解密 CA 数字签名后的摘要比对,一致则说明这个证书没有被篡改过,可以信任。 http://blog.wiloon.com/?p=3655 PKI PKI (Public Key Infrastructure) 翻译过来就是公钥基础设施,可以理解为利用公钥技术为网络应用提供加密和数字签名等密码服务以及必需的密钥和证书管理体系。它是一个提供安全服务的基础设施,PKI 技术是信息安全技术的核心,同时也是电子商务的关键和基础技术。 PKI 既不是一个协议,也不是一个软件,它是一个标准,在这个标准之下发展出的为了实现安全基础服务目的的技术统称为 PKI。 PKI是一个标准,它包括一些基本的组件,不同的组件提供不同的服务,主要由一下几个组件组成: 认证中心 CA(证书签发): CA 机构,又称为证书授证 (Certificate Authority) 中心,是 PKI 的"核心",即数字证书的申请及签发机关,CA 必须具备权威性的特征,它负责管理 PKI 结构下的所有用户(包括各种应用程序)的证书,把用户的公钥和用户的其他信息捆绑在一起,在网上验证用户的身份,CA 还要负责用户证书的黑名单登记和黑名单发布。 X.500目录服务器(证书保存): X.500目录服务器用于"发布"用户的证书和黑名单信息,用户可通过标准的 LDAP 协议查询自己或其他人的证书和下载黑名单信息。 具有高强度密码算法(SSL)的安全 WWW 服务器(即配置了 HTTPS 的apache): Secure socket layer(SSL)协议最初由 Netscape 企业发展,现已成为网络用来鉴别网站和网页浏览者身份,以及在浏览器使用者及网页服务器之间进行加密通讯的全球化标准。 Web(安全通信平台): Web 有 Web Client 端和 Web Server 端两部分,分别安装在客户端和服务器端,通过具有高强度密码算法的 SSL 协议保证客户端和服务器端数据的机密性、完整性、身份验证。 ...

2019-01-06 · 1 min · 82 words · -

golang tcp tls

golang tcp tls https://colobu.com/2016/06/07/simple-golang-tls-examples/ 生成TLS证书 http://blog.wiloon.com/?p=12962 server package main import ( "bufio" "crypto/tls" "log" "net" ) func main() { cert, err := tls.LoadX509KeyPair("certs/server.pem", "certs/server.key") if err != nil { log.Println(err) return } config := &tls.Config{Certificates: []tls.Certificate{cert}} address := ":8443" log.Println("listening: ", address) ln, err := tls.Listen("tcp", address, config) if err != nil { log.Println(err) return } defer ln.Close() for { conn, err := ln.Accept() if err != nil { log.Println(err) continue } go handleConn(conn) } } func handleConn(conn net.Conn) { defer conn.Close() r := bufio.NewReader(conn) for { msg, err := r.ReadString('\n') if err != nil { log.Println(err) return } println(msg) n, err := conn.Write([]byte("world\n")) if err != nil { log.Println(n, err) return } } } client package main import ( "crypto/tls" "log" ) func main() { conf := &tls.Config{ InsecureSkipVerify: true, } conn, err := tls.Dial("tcp", "127.0.0.1:8443", conf) if err != nil { log.Println(err) return } defer conn.Close() n, err := conn.Write([]byte("hello\n")) if err != nil { log.Println(n, err) return } buf := make([]byte, 100) n, err = conn.Read(buf) if err != nil { log.Println(n, err) return } println(string(buf[:n])) }

2019-01-05 · 1 min · 180 words · -

newifi 3

newifi 3 newifi 3 处理器 MT7621A, mipsle 32M的ROM 512M的RAM 1个USB3.0接口 双频无线 一个千兆WAN口、 4个千兆LAN口 https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=341067&highlight=newifi%2Bd2%2Bopenwrt https://github.com/coolsnowwolf/lede https://downloads.openwrt.org/releases/18.06.1/targets/ramips/mt7621/

2019-01-03 · 1 min · 16 words · -

newifi breed

newifi breed https://www.right.com.cn/forum/thread-342918-1-1.html 开启固件 SSH a) 开启路由器,进入管理界面 (假设路由器 IP 地址是 192.168.99.1) b) 在浏览器中输入 http://192.168.99.1/newifi/ifiwen_hss.html 并进入 c) 页面显示 success 即表明已开启 SSH 进入路由器 SSH 环境 上传解锁文件到路由器 a) 下载附件,解压得到 newifi-d2-jail-break.ko b) 用 WinSCP 等工具将其上传到路由器的 /tmp 目录 c) 或者用 HFS 搭建本地 HTTP 服务器,并在 SSH 里用 wget 命令下载 d) 或者用 tftpd32/tftpd64 搭建本地 TFTP 服务器,并在 SSH 里用 tftp 命令下载 e) 用 U 盘当然也行 开始解锁 a) SSH 进入 /tmp 目录 cd /tmp b) 加载 newifi-d2-jail-break.ko insmod newifi-d2-jail-break.ko c) 此时 SSH 会停止响应,因为 newifi-d2-jail-break.ko 会冻结系统的其他功能,强制写入 Newifi D2 专用版 Breed 到 Flash d) 成功后路由器会自动重启。断电后按复位健/USB键开机均可进入 Breed ...

2019-01-02 · 1 min · 112 words · -

systemd-networkd, TAP

systemd-networkd, TAP 手动创建 tap 开机自动创建 tap 手动创建 tap0 sudo ip tuntap add dev tap0 mode tap # set ip sudo ip addr add 192.168.60.1/24 dev tap0 # tap up sudo ip link set tap0 up # --- ## delete ip from tap0 sudo ip addr del 192.168.60.1/24 dev tap0 启动时由 systemd 自动创建 tap0 sudo vim /etc/systemd/network/90-tap0.netdev [NetDev] Description=description0 Name=tap0 Kind=tap sudo vim /etc/systemd/network/tap.network [Match] Name=tap0 [Link] MACAddress=5a:70:70:48:7f:50 https://www.freedesktop.org/software/systemd/man/systemd.netdev.html https://www.freedesktop.org/software/systemd/man/systemd.network.html

2019-01-01 · 1 min · 69 words · -

LLMNR

LLMNR https://www.jianshu.com/p/bfcc437a738e 什么是LLMNR 在DNS 服务器不可用时, DNS 客户端计算机可以使用本地链路多播名称解析 (LLMNR—Link-Local Multicast Name Resolution) (也称为多播 DNS 或 mDNS) 来解析本地网段上的名称。例如, 如果路由器出现故障, 从网络上的所有 DNS 服务器切断了子网, 则支持 LLMNR 的子网上的客户端可以继续在对等基础上解析名称, 直到网络连接还原为止。 LLMNR (本地链路组播名称解析) 在DNS服务器不可用时,DNS 客户端计算机可以使用本地链路组播名称解析,通过UDP发送到组播地址224.0.0.252:5355,来解析本地网段上的名称,使用的也是普通DNS的数据包格式。类似的另一种协议是mDNS (组播DNS) ,通过UDP协议发送到组播地址224.0.0.251:5353,用于家庭局域网等小型网络。 LLMNR 为使用 IPv4、IPv6 或者同时使用这两种地址的设备提供了点对点名称解析服务, 可以让同一子网中的 IPv4 和 IPv6 设备不需要 WINS 或 DNS 服务器就可以解析对方的名称。 例如,如果路由器出现故障,从网络上的所有 DNS 服务器切断了子网,则支持 LLMNR 的子网上的客户端可以继续在对等基础上解析名称,直到网络连接还原为止。除了在网络出现故障的情况下提供名称解析以外,LLMNR 在建立临时对等网络方面也非常有用。 除了在网络出现故障的情况下提供名称解析以外,LLMNR 在建立临时对等网络 (例如,机场候机区域) 方面也非常有用。 LLMNRs 工作过程 主机在自己的内部名称缓存中查询名称。如果在缓存中没有找到了名称,那么主机就会向自己配置的主DNS服务器发送查询请求。如果主机没有收到回应或收到了错误信息,主机还会尝试搜索配置的备用DNS服务器。如果主机没有配置DNS服务器,或者如果在连接DNS服务器的时候没有遇到错误但失败了,那么名称解析会失败,并转为使用LLMNR。 主机通过用户数据报协议(UDP)发送多播查询,查询主机名对应的IP地址,这个查询会被限制在本地子网(也就是所谓的链路局部)内。 链路局部范围内每台支持LLMNR,并且被配置为响应传入查询的主机在收到这个查询请求后,会将被查询的名称和自己的主机名进行比较。如果没有找到匹配的主机名,那么计算机就会丢弃这个查询。如果找到了匹配的主机名,这台计算机会传输一条包含了自己IP地址的单播信息给请求该查询的主机。

2018-12-30 · 1 min · 58 words · -

idea 插入当前日期,insert current datetime

idea 插入当前日期,insert current datetime 安装 idea 插件 进入配置页面: File>setting>Plugins 搜索: Current date generator 安装插件并重启idea 设置 快捷键 setting>keymap>plugin>…date…generator https://plugins.jetbrains.com/plugin/9722-current-date-generator

2018-12-28 · 1 min · 18 words · -

linux comm, 两个文件的共同部分或者差异部分

linux comm, 两个文件的共同部分或者差异部分 两个文件的共同部分或者差异部分 1 comm 命令 在我们的开发和运营中,特别是对业务进行监控的时候,我们常常需要写一些监控shell脚本,而这些脚本需要求两个文件的共同的记录列表或者只出现在第一个文件但不出现在第二个文件的记录列表的场景,此时,comm命令则是您解决此类问题的利器和助手。 随意man comm下,可以在linux下看到该命令的使用方法: NAME comm - compare two sorted files line by line SYNOPSIS comm [OPTION]… FILE1 FILE2 DESCRIPTION Compare sorted files FILE1 and FILE2 line by line. With no options, produce three-column output. Column one contains lines unique to FILE1, column two contains lines unique to FILE2, and column three contains lines common to both files. -1 suppress lines unique to FILE1 -2 suppress lines unique to FILE2 -3 suppress lines that appear in both files --help display this help and exit --version output version information and exit 上面是英文说明,下面简单的说明如下: 一,利用comm命令进行处理的文件必须首先通过sort命令进行排序处理并且是unix格式而非dos格式的文本文件; 二,中文说明如下: 功能说明: 比较两个已排过序的文件。 (使用sort排序) ...

2018-12-28 · 3 min · 509 words · -

kafka, celery

kafka, celery 消息队列(kafka/nsq等)与任务队列(celery/ytask等)到底有什么不同? 消息队列和任务队列,最大的不同之处就在于理念的不同 – 消息队列传递的是“消息”,任务队列传递的是“任务”。 消息队列用来快速消费队列中的消息。比如日志处理场景,我们需要把不同服务器上的日志合并到一起,这时就需要用到消息队列。 任务队列是用来执行一个耗时任务。比如用户在购买的一件物品后,通常需要计算用户的积分以及等级,并把它们保存到数据库。这时就需要用到任务队列。 从上面的例子可看出: 消息队列更侧重于消息的吞吐、处理,具有有处理海量信息的能力。另外利用消息队列的生长者和消费者的概念,也可以实现任务队列的功能,但是还需要进行额外的开发。 任务队列则提供了执行任务所需的功能,比如任务的重试,结果的返回,任务状态记录等。虽然也有并发的处理能力,但一般不适用于高吞吐量快速消费的场景。 任务队列其实和远程函数调用差不多,但和thrift、grpc什么不同,它不需要定义描述文件,调用的方式也不是网络请求方式,而是利用消息队列传递任务信息。 因此可以简单认为任务队列就是消息队列在异步任务场景下的深度化定制开发。 转载于:https://my.oschina.net/u/3834410/blog/3101841

2018-12-27 · 1 min · 14 words · -

/etc/passwd, /etc/shadow

/etc/passwd, /etc/shadow https://blog.csdn.net/u012501054/article/details/71522278 Linux系统中,所有用户 (包括系统管理员) 的账号和密码都可以在/etc/passwd和/etc/shadow这两个文件中找到, (用户和密码就放在文件中,不怕被其他人看的或者修改吗?/etc/passwd只有系统管理员才可以修改的,其他用户可以查看,/etc/shadow其他用户看不了) vim /etc/shadow ls -al /etc/passwd /etc/shadow -rw-r-r-. 1 root root 2250 12月 14 00:17 /etc/passwd —-. 1 root root 1263 12月 14 00:17 /etc/shadow 上面分别列出了passwd和shadow文件的访问权限信息,其中passwd保存的是账号,shadow保存的是账号的密码等信息,下面就具体看看这两个文件的内容: /etc/passwd 通过指令 vi /etc/passwd 打开passwd文件来看看,下面列举部分内容如下: root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh 上面每一行都代表一个用户,每一行又通过[:]分为七个部分。 账号名称 原先用来保存密码的,现在密码都放在/etc/shadow中,所以这里显示x UID,也就是使用者ID。默认的系统管理员的UID为0,我们添加用户的时候最好使用1000以上的UID,1-1000范围的UID最好保留给系统用。 GID,也就是群组ID 关于账号的一些说明信息 (暂时可以忽略) 账号的家目录,家目录就是你登陆系统后默认的那个目录 账号使用的shell vi /etc/shadow root:!:15324:0:99999:7::: daemon:_:15259:0:99999:7::: bin:_:15259:0:99999:7::: letuknowit:$1$cPf/cIvr$sCws95uSip2ljTK052DDB.:15400:5:60:7:2:15490: 这里也是由[:]来进行分割,但是这里一共分出来九个栏目,每个栏目的解释如下: 账户名称 (密码需要与账户对应的嘛) 加密后的密码, 假如此字段为空,则表示该账号不需要密码就可以登录。如果密码栏的第一个字符为’*‘或者是’!’,表示这个账号不能用来登录。可以使用这个方法来开启或关闭一个账户的登录权限。另外’!!‘两个叹号表示这个账号目前没有密码,也不能用于登录,通常为一些系统账号。 最近改动密码的日期 (不是日期吗,咋是一堆数字,别急,这个是从1970年1月1日算起的总的天数) 。那怎么才能知道今天距1970年1月1日有多少天呢?很简单,你改下密码,然后看下这个栏目中的数字是多少就可以了! 密码不可被变更的天数: 设置了这个值,则表示从变更密码的日期算起,多少天内无法再次修改密码,如果是0的话,则没有限制 密码需要重新变更的天数: 密码经常更换才能保证安全,为了提醒某些经常不更换密码的用户,可以设置一个天数,强制让用户更换密码,也就是说该用户的密码会在多少天后过期,如果为99999则没有限制 密码过期预警天数: 如果在5中设置了密码需要重新变更的天数,则会在密码过期的前多少天进行提醒,提示用户其密码将在多少天后过期 密码过期的宽恕时间: 如果在5中设置的日期过后,用户仍然没有修改密码,则该用户还可以继续使用的天数 账号失效日期,过了这个日期账号就不能用了 保留的 以上面最后用户letuknowit为例 (15400对应的日期为2012年3月1日) ,其保护如下信息: ...

2018-12-24 · 1 min · 84 words · -

xss, AntiSamy

xss, AntiSamy https://blog.csdn.net/zhujq_icode/article/details/79154063 https://www.owasp.org/index.php/Category:OWASP_AntiSamy_Project https://github.com/GDSSecurity/AntiXSS-for-Java AntiSamy 策略文件 antisamy-tinymce.xml,这种策略只允许传送纯文本到后台 (这样做真的好吗?个人觉得这个规则太过严格) ,并且对请求头和请求参数都做了XSS转码。请注意这里,我们相对于参考链接中源码不同的处理方式在于: 我们对请求头也进行了编码处理。 antisamy-slashdot.xml Slashdot (http://www.slashdot.org/)是一个提供技术新闻的网站,它允许用户用有限的HTML格式的内容匿名回帖。 Slashdot不仅仅是目前同类中最酷的网站之一,而且同时也曾是最容易被成功攻击的网站之一。更不幸的是,导致大部分用户遭受攻击的原由是臭名昭着的goatse.cx 图片(请你不要刻意去看)。 Slashdot的安全策略非常严格: 用户只能提交下列的html标签: , <u>, <i>, , 并且还不支持CSS. 因此我们创建了这样的策略文件来实现类似的功能。它允许所有文本格式的标签来直接修饰字体、颜色或者强调作用。 antisamy-ebay.xml 众所周知,eBay (http://www.ebay.com/)是当下最流行的在线拍卖网站之一。它是一个面向公众的站点,因此它允许任何人发布一系列富HTML的内容。 我们对eBay成为一些复杂XSS攻击的目标,并对攻击者充满吸引力丝毫不感到奇怪。由于eBay允许输入的内容列表包含了比Slashdot更多的富文本内容,所以它的受攻击面也要大得多。下面的标签看起来是eBay允许的 (eBay没有公开标签的验证规则) :,… antisamy-myspace.xml MySpace (http://www.myspace.com/)是最流行的一个社交网站之一。用户允许提交几乎所有的他们想用的HTML和CSS,只要不包含JavaScript。 MySpace现在用一个黑名单来验证用户输入的HTML,这就是为什么它曾受到Samy蠕虫攻击(http://namb.la/)的原因。Samy蠕虫攻击利用了一个本应该列入黑名单的单词(eval)来进行组合碎片攻击的,其实这也是AntiSamy立项的原因。 antisamy-anythinggoes.xml 我也很难说出一个用这个策略文件的用例。如果你想允许所有有效的HTML和CSS元素输入 (但能拒绝JavaScript或跟CSS相关的网络钓鱼攻击) ,你可以使用这个策略文件。其实即使MySpace也没有这么疯狂。然而,它确实提供了一个很好的参考,因为它包含了对于每个元素的基本规则,所以你在裁剪其它策略文件的时候可以把它作为一个知识库。 作者: 系统信息 来源: CSDN 原文: https://blog.csdn.net/softwave/article/details/53761796 版权声明: 本文为博主原创文章,转载请附上博文链接 https://www.cnblogs.com/Kidezyq/p/9862547.html

2018-12-17 · 1 min · 47 words · -

web应用防火墙(WAF)

web应用防火墙(WAF) Web应用防火墙是集web防护、网页保护、负载均衡、应用交付于一体的web整体安全防护设备的一款产品 。 Web防火墙产品部署在Web服务器的前面,串行接入,不仅在硬件性能上要求高,而且不能影响Web服务,所以HA功能、Bypass功能都是必须的,而且还要与负载均衡、Web Cache等Web服务器前的常见的产品协调部署。­ Web应用防火墙主要是对Web特有入侵方式的加强防护,如DDoS防御、SQL注入、XML注入、XSS等。 https://zhuanlan.zhihu.com/p/32465541

2018-12-14 · 1 min · 7 words · -

antisamy

antisamy https://blog.csdn.net/zhujq_icode/article/details/79154063 策略文件 antisamy-slashdot.xml Slashdot (http://www.slashdot.org/)是一个提供技术新闻的网站,它允许用户用有限的HTML是一个提供技术新闻的网站,它允许用户用有限的HTML)格式的内容匿名回帖。 Slashdot不仅仅是目前同类中最酷的网站之一,而且同时也曾是最容易被成功攻击的网站之一。更不幸的是,导致大部分用户遭受攻击的原由是臭名昭着的goatse.cx 图片(请你不要刻意去看)。 Slashdot的安全策略非常严格: 用户只能提交下列的html标签: **, , _, , < blockquote>,并且还不支持CSS.因此我们创建了这样的策略文件来实现类似的功能。它允许所有文本格式的标签来直接修饰字体、颜色或者强调作用。 antisamy-ebay.xml 众所周知,eBay (http://www.ebay.com/)是当下最流行的在线拍卖网站之一。它是一个面向公众的站点,因此它允许任何人发布一系列富HTML的内容。我们对eBay成为一些复杂XSS攻击的目标,并对攻击者充满吸引力丝毫不感到奇怪。由于eBay允许输入的内容列表包含了比Slashdot是当下最流行的在线拍卖网站之一。它是一个面向公众的站点,因此它允许任何人发布一系列富HTML的内容。我们对eBay成为一些复杂XSS攻击的目标,并对攻击者充满吸引力丝毫不感到奇怪。由于eBay允许输入的内容列表包含了比Slashdot)更多的富文本内容,所以它的受攻击面也要大得多。 antisamy-myspace.xml MySpace (http://www.myspace.com/)是最流行的一个社交网站之一。用户允许提交几乎所有的他们想用的HTML和CSS,只要不包含JavaScript。MySpace现在用一个黑名单来验证用户输入的HTML,这就是为什么它曾受到Samy蠕虫攻击(http://namb.la/)的原因。Samy蠕虫攻击利用了一个本应该列入黑名单的单词(eval)来进行组合碎片攻击的,其实这也是AntiSamy是最流行的一个社交网站之一。用户允许提交几乎所有的他们想用的HTML和CSS,只要不包含JavaScript。MySpace现在用一个黑名单来验证用户输入的HTML,这就是为什么它曾受到Samy蠕虫攻击(http://namb.la/)的原因。Samy蠕虫攻击利用了一个本应该列入黑名单的单词(eval)来进行组合碎片攻击的,其实这也是AntiSamy)立项的原因。 antisamy-anythinggoes.xml 如果你想允许所有有效的HTML和CSS元素输入 (但能拒绝JavaScript或跟CSS相关的网络钓鱼攻击) ,你可以使用这个策略文件。其实即使MySpace也没有这么疯狂。然而,它确实提供了一个很好的参考,因为它包含了对于每个元素的基本规则,所以你在裁剪其它策略文件的时候可以把它作为一个知识库。 antisamy-tinymce.xml 只允许文本格式通过,相对较安全 antisamy.xml 默认规则,允许大部分HTML通过 作者: flying_pig1989 来源: CSDN 原文: https://blog.csdn.net/zhujq_icode/article/details/79154063 版权声明: 本文为博主原创文章,转载请附上博文链接!

2018-12-14 · 1 min · 38 words · -

nuc

nuc 英特尔 「NUC」 (Next Unit of Computing) nuc5i5ryh CPU: Intel® Core™ i5-5250U Processor (3M Cache, up to 2.70 GHz) 内存: DDR3L-1333/1600 1.35V SO-DIMM nuc7i5bnk Intel® Core™ i5-7260U Processor (4M Cache, up to 3.40 GHz) nuc8i5bek Intel® Core™ i5-8259U Processor (6M Cache, up to 3.80 GHz)

2018-12-11 · 1 min · 45 words · -

archlinux UEFI

archlinux UEFI # boot with iso-usb ls /sys/firmware/efi dmesg |grep sdx lsblk gdisk /dev/sdx o y n EF00 n w y /dev/sdx1 512M EFI /dev/sdx2 xxxxM ext4 mkfs.vfat /dev/sdx1 mkfs.ext4 /dev/sdx2 mount /dev/sdx2 /mnt mkdir /mnt/boot mount/dev/sdx1 /mnt/boot pacstrap /mnt arch-chroot /mnt bootctl install cd /boot/loader pacman -S vim vim loader.conf default arch timeout 4 cd entries vim arch.conf title Archlinux linux /vmlinuz-linux initrd /initramfs-linux.img options root=PARTUUID=xxx rw r !blkid reboot

2018-12-08 · 1 min · 71 words · -

zentao

zentao https://github.com/idoop/zentao https://github.com/iboxpay/ldap 下载iboxpay/ldap 扩展, 作为插件安装。此插件会安装三个文件 /opt/zentao/lib/ldap/ldap.class.php # ldap 配置 /opt/zentao/module/user/ext/config/ldap.php /opt/zentao/module/user/ext/model/ldap.php 参照 https://blog.csdn.net/BigBoySunshine/article/details/80502068 修改 /opt/zentao/module/user/ext/config/ldap.php $config->ldap->ldap_server $config->ldap->ldap_root_dn $config->ldap->ldap_bind_dn $config->ldap->ldap_bind_passwd /opt/zentao/lib/ldap/ldap.class.php if ( @ldap_bind( $t_ds, "{$t_info[$i]['dn']}", $p_password ) ) { /opt/zentao/module/user/js/login.js if(password.length != 32 && typeof(md5) == 'function') $('input:password').val(password); 禅道 docker + ldap插件 checkout https://github.com/idoop/zentao 修改docker-compose.yaml 修改MySQL端口 修改volumns路径 download ldap as zip https://github.com/iboxpay/ldap 参照https://github.com/iboxpay/ldap 的readme安装插件

2018-11-26 · 1 min · 55 words · -

test for a specific port from Linux or Unix command line

test for a specific port from Linux or Unix command line https://www.cyberciti.biz/faq/ping-test-a-specific-port-of-machine-ip-address-using-linux-unix/ # check for tcp port ## ## need bash shell echo >/dev/tcp/{host}/{port} (echo >/dev/tcp/{host}/{port}) &>/dev/null && echo "open" || echo "close" (echo >/dev/udp/{host}/{port}) &>/dev/null && echo "open" || echo "close" (echo >/dev/tcp/www.cyberciti.biz/22) &>/dev/null && echo "Open 22" || echo "Close 22" (echo >/dev/tcp/www.cyberciti.biz/443) &>/dev/null && echo "Open 443" || echo "Close 443"

2018-11-26 · 1 min · 64 words · -

helm

helm Helm 是 Kubernetes 的包管理器 # archlinux pacman -S helm # curl curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh

2018-11-24 · 1 min · 21 words · -

the log

the log http://www.cnblogs.com/foreach-break/p/notes_about_distributed_system_and_The_log.html Log是如下系统的核心: 分布式图数据库 分布式搜索引擎 Hadoop 第一代和第二代K-V数据库 Log可能跟计算机的历史一样长,并且是分布式数据系统和实时计算系统的核心。 Log的名字很多: Commit log Transaction log Write-ahead log

2018-11-19 · 1 min · 16 words · -

protocol buffers, protobuf

protocol buffers, protobuf install protoc # archlinux 可以从仓库直接安装 pacman -S protobuf # 其它发行版, 比如 ubuntu 可以下载二进制包 解压即可. https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protoc-3.6.1-linux-x86_64.zip # set protoc to PATH protoc -help windows download protoc https://developers.google.com/protocol-buffers/docs/downloads define message format in a .proto file syntax = "proto3"; message SearchRequest { string query = 1; int32 page_number = 2; int32 results_per_page = 3; } syntax = "proto3"; package package0; option java_package = "com.wiloon.test.protobuf.package0"; message Msg0 { // comments0 string foo = 1; ObjType enum0 = 2; uint64 timestamp = 5; int32 type = 6; //类型 enum ObjType { type0 = 0; type1 = 1; } } generate java/golang code export SRC_DIR=/pathToSrcDir export DST_DIR=$SRC_DIR golang # 安装 protoc-gen-go # install protocol buffers plugin # go: module github.com/golang/protobuf is deprecated: Use the "google.golang.org/protobuf" module instead. # 废弃,deprecated go get -u github.com/golang/protobuf/protoc-gen-go # 建议用这个 go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.26 # 或 go install google.golang.org/protobuf/cmd/protoc-gen-go@latest # generate golang code protoc -I=$SRC_DIR --go_out=$DST_DIR $SRC_DIR/proto0.proto protoc --proto_path=$SRC_DIR --go_out=$DST_DIR --go_opt=paths=source_relative $SRC_DIR/foo.proto # -I, --proto_path: .proto 文件目录 # --go_out: 输出目录 java Java 工程建议使用下面的 protobuf-maven-plugin 方式 ...

2018-11-19 · 2 min · 268 words · -