DEAD MAN CODING

FOOOLING.COM

Java发送不安全的HTTPS

2016-06-23 03:22:33

如何将HTTPS当HTTP用?



            SSLConnectionSocketFactory sslSF = new SSLConnectionSocketFactory(builder.build(),
                    SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

            CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(sslSF).build();

            HttpGet httpGet = new HttpGet("https://" + ip + ":" + port + "/xxx/xxxx");


            try {
                HttpResponse response = httpClient.execute(httpGet);
                System.out.println(response.getStatusLine());
                HttpEntity entity = response.getEntity();
                InputStream inputStream = entity.getContent();
                ByteArrayOutputStream result = new ByteArrayOutputStream();
                byte[] buffer = new byte[1024];
                int ...

阅读全文

Spring 2.5.6 手动初始化的动态配置

2016-01-10 16:43:07

试了下Spring Framework的古代版本2.5.6, 需求是动态初始化,动态加载动态配置 

动态配置放到:

1. classpath:abc/abc.properties

2. file:path/to/abc.properties

包含 abc.service.address=127.0.0.1 的配置

这两种典型情况(为了不重新打包应用就能改配置)

Spring的context是xxx-context.xml

里面包含了例如 ${abc.service.address}这种变量引用。

试了试,这么写一下就能实现动态启动一个spring并且正确加载配置。


ApplicationContext ctx = new ClassPathXmlApplicationContext(new String[] { "classpath:xxx-context.xml" },// 可以是多个context配置文件
            false, // refresh=false
            null);
PropertyPlaceholderConfigurer configurer = new PropertyPlaceholderConfigurer(); //填充properties用
if (ConfigLoadHelper.getFilepathType(configPath)== ConfigLoadHelper.PathType.CLASSPATH){ //如果是classpath模式
    configurer.setLocation(new ClassPathResource(ConfigLoadHelper.removeFilePrefix(configPath)));
}else { //file模式
    configurer.setLocation(new FileSystemResource(ConfigLoadHelper.removeFilePrefix(configPath)));
}
((AbstractApplicationContext) ctx).addBeanFactoryPostProcessor(configurer); ...

阅读全文

西数 My Passport Wireless简单权限设置

2015-12-09 01:33:41

之前买了MyPassport Wireless这款移动硬盘, 但是一直没怎么使用,大概因为权限比较坑爹,默认情况所有同一网络的人都可以访问内部文件,并且只有映射到各种网络程序上只有2个文件夹, Public和SDcard。

偶然想到这是个debian系统的话, 大概可以自己改吧。开启ssh后(写的是非常规操作会失去质保),改如下几个地方

1. Samba服务

Windows之间用的最多, 全系统通吃协议,配置文件在/etc/samba/smb.conf

详细配置怎么搞可以网上查,我改了如下几点(只先列出public的,SD的类似,要加别的文件夹按照相同格式即可,注意配置没写的都别删)


[Public]
valid users = "admin"
invalid users = "nobody"
write list = "admin"
guest ok = no
public = no

改完后还需要改改samba的admin密码,用这个指令修改密码


smbpasswd -a admin

改完后记得找找smbd的进程kill掉, 再重启一下,或者干脆直接重启。。

2. AFP服务


这个是Mac之间用的最常见协议,和TimeMachine息息相关,这么重要的东西当然不能public了

配置在/etc/afp.conf

我修改了如下项(注意配置没写的都别删,SD类似)


[Public]
valid users = @administrators

无需改密码,无需重启(反正我这是这样) ...

阅读全文

西数WD MyCloud EX4100入手

2015-11-14 08:26:17


最近德淘入手一个西数的 NAS。 为什么大家都玩Gen8, 群辉什么的,而我买了个西数?  

哈哈  说来惭愧,之前淘宝剁了个WD MyPassport wireless 2T无线移动硬盘,这货自带WiFi发射的,也能快速插入SD卡进行文件拷贝,用着蛮爽不小心就中毒了。把数据存里面怕掉就有了NAS的需求。

而个人看重NAS的特性主要在于易用,省电,RAID,应用。 于是不一会儿就盯上了WD的MyCloud系列,全平台的设备都能连上无疑是其一大优势,因为之前买过一个plex.tv会员,于是支持plex也是一大选择理由,RAID的话自然就选了4盘位。

国内一看,恩,EX4这款还不错诶,冷静了下,去美亚看看,原来还有EX4100和DL4100这两位,秒了EX4,初看EX和DL性能差不多,仔细看一个是armv7 一个是intel atom x86,果然一个是给个人用一个是给公司用。出于省几百块钱的考虑买了个EX4100。

辗转德淘到手后一看果然给力,做工那叫一个扎实,不带硬盘的单机都相当沉重,插入美亚230刀购入的6T红盘之后呼呼呼地启动起来了,这时还以为坑了声音这么大,紧接着就如同戴上了降噪耳机一般,dead silent 。

可以看到, 这货总共有3个USB3.0的接口, 2个千兆网卡, 2个电源输入(此处省略300字), 除了前面板是完全光滑的塑料以外,都是钢板,看起来还是给力靠谱的。

WEB管理界面打开一看, 还是一样的界面,一样的味道。比Mypassport多了个添加用户的功能, 想必是权限系统给力。看到支持协议基本覆盖完了, 还有好多东西还没听说过(居然还能设置两个网卡协同工作的模式),可以看出, 简直是无情。。

 苹果的afp协议也支持了,也能原生较好支持Timemachine, 感觉高大上 应该是一个增量备份的东西,可以随时把macbook还原到某一天的版本,逛一圈之后发现发烧友(主要还是国外)需要的功能基本都有了。

那么国内呢??  呵呵,没有。可以看到支持的一大堆app, 如果我是个外国人的话一定会非常喜欢。


那么在国内是不是就GG了呢? 哈哈, 然后我又去Google了下发现还真有个SDK ,惊奇发现,人家居然是支持docker容器的, 示例中也演示了如何用ubuntu14.04的环境来自己编写个hello world应用。具体看这里  ( http://developer.mycloud.com/MCDSDKindex.html )

这下又有的折腾了! 等我去研究一番,有什么好玩的又来写写博客。争取这几天把迅雷离线和"傻豆索克斯"啊网盘啊啥的给集成进来, 符合我国国情的应用才是好应用 哈哈


============================== ...

阅读全文

涨姿势,LVS的syn_proxy引发的奇怪现象

2015-07-20 11:24:28

都知道TCP建立连接的时候会有个SYN握手。这件事情在LVS的fullnat模式下由于引入了一个“中间人”, 建立连接时会有两种策略。
1. 客户端与服务端的包全部经过中间人的转手, 原样递给双方。
2. 客户端与服务端的TCP连接时不会立即直接和服务端建立, 而是中间人单独和客户端建立连接,然后中间人再去和服务端建立连接。这种方式也就是syn_proxy这个功能的意义了。

从这两个方式本身来看, 正常的情况应该是用第一种了, 第二种有个明显的问题是,客户端认为连接建立好的时候其实并没有。。那么客户端接着发的内容就会被“阻挡”在中间人或者中间人满了有拒绝可能,这样的好处是流量超大时,前端请求不会把服务端压跪。

那么, 有件事情是最近遇到的。现象是客户端建立连接(应用层连接)速度异常缓慢(比如建100个连接的话, 平均1~2秒才能建好一个连接),而tcp连接的建立则表现出毫无压力的迹象,超级蛋疼。
抓包发现tcp win 的值会被LVS给从14600压制到115,这个窗口大小从TCP知识上来说是服务端告诉客户端自己只能接受xx大,多的受不了,那么客户机就会乖乖地把窗口改成115了。

于是试着投机取巧用sysctl将客户机的tcp window关了。。 改了下客户端的net.ipv4.tcp_window_scaling。 然后出现了神奇的一幕,客户机不再理会LVS设置tcp窗口的请求了,全部一口气发过去, 建100个连接倒是秒建了,然而QPS下降一半。。

果然还是不行的。最后联系了负责LVS的兄弟,他一看果然是syn_proxy给打开了。

另外,除了建连接慢,另一个比较奇怪的现象是一条消息,超过一定大小就会变得很慢,从1ms变为2s。。这个目前怀疑也和这个tcp win太小有点关系, 暂时还没想明白具体的机制(有想法了会更新)


所以LVS的这个syn_proxy虽然在防攻击上面挺好,但导致的一些诡异的问题真是很蛋碎。。


阅读全文

友情链接