Null's Notebook

代码笔记

LDAP 全称是 Lightweight Directory Access Protocol,中文名称:轻型目录访问协议,广泛用于统一认证。

下面实现了简单的用户名、密码验证:

using System;
using System.Collections.Generic;
using System.Text;
using System.DirectoryServices.Protocols;
using System.Net;

namespace com.hetaoos.Authenticator
{
    /// <summary>
    /// Ldap 验证
    /// http://blog.hetaoos.com
    /// </summary>
    public class LdapAuthenticator
    {
        /// <summary>
        /// Ldap 验证
        /// </summary>
        /// <param name="domain">服务器</param>
        /// <param name="username">帐号</param>
        /// <param name="pwd">密码</param>
        /// <returns>是否验证成功</returns>
        public static bool ValidateUser(string domain, string userName, string password)
        {
            bool validation = false;
            LdapConnection ldc = null;
            try
            {
                ldc = new LdapConnection(domain);
                //ou=Users,ou=tempusers,ou=staff,dc=guet,dc=org  这串玩意要改为自己的
                NetworkCredential nc = new NetworkCredential(string.Format("uid={0},ou=Users,ou=tempusers,ou=staff,dc=guet,dc=org", userName), password);
                ldc.AuthType = AuthType.Basic;
                ldc.SessionOptions.ProtocolVersion = 3;
                ldc.Bind(nc);
                validation = true;
            }
            catch { }
            finally
            {
                if (ldc != null)
                {
                    ldc.Dispose();
                }
            }
            return validation;
        }

    }
}

PS:
需要添加以下引用:
1,System.DirectoryServices
2,System.DirectoryServices.Protocols

调用很简单:

bool authenticated = LdapAuthenticator.ValidateUser("ldap.hetaoos.com", "null", "hetaoos.com");

关于泛型的介绍和基本操作,可以参见 MSDN,以及各种博客文章:C# 泛型简介泛型介绍(C# 编程指南),这里就不再赘述。

下面是要用到的泛型:

    internal interface IStack
    {
    }

    public class Stack<T> : IStack
        where T : new()
    {
        public T Value { get; set; }
    }

    public class IntStack : Stack<int> { }

    public class DoubleStack : Stack<double> { }

继续阅读

使用方式及原理:http://code.google.com/p/chnroutes/

因为一些众所周知的原因, 来自中国大陆的网民想要访问非本国资源时总会那么的不方便, 这促使了海外vpn供应商在中国的繁荣. 使用海外vpn访问已经成为一些需要经常访问海外资源的中国网民的必要装备. 但通常这些vpn都是有流量限制的, 除此之外一些中国内部的资源也限制海外的ip访问. 本项目的就是提供一些启动脚本给vpn用户, 在vpn拨号之后修过路由表,让他们在使用vpn访问国外资源的同时, 能用非vpn线路高速访问本国资源.

Due to well-known reasons, it's always inconvenient for Chinese netizens and foreigners who live in China to access information physically outside of China via internet. Timeouts and connection resets are the most common results you will get when you trying to visit websites that are hosted in other countries. That leads to the growth of a new business which is called climb-the-wall or crack-the-wall. That is to use some kind of technologies such as encrypted proxy and VPN to bypass censorship. This project is created for those who uses VPN to combat censorship. It will generate some shell scripts to modify the routing table to split the chinese and non-chinese IPs. This gives VPN users the best experience by keeping domestic traffic efficient and only sending request through the VPN that need to.

上面提到的网站提供了 python 的脚本,本人运行不成功,估计是 python 的版本问题。懒得折腾,就自己写了个生成器。

使用 VS2010 .NET Framework 4.0 编写

RouteGenerator_Bin (237)
RouteGenerator_src (224)

2011/11/02 V1.1.2
1,界面微调

2011/11/01 V1.1.0
1,增加自定义运营商选项
2,增加自动伪装功能,先设置一个预设运营商,然后点击菜单键选择“启用自动伪装”,即可启用。
3,增加英语

Android Market 电子市场 会根据运营商的不同,而呈现不同的应用列表,身在天朝,有着深刻的体会:
1,搜索”Google”,谷歌地图,Gmail 并未出现在搜索结果中。
2,查看不到没有任何手收费应用。

之前在网上找到个免费的 Market Enabler ,但这个东西有个问题:
1,系统启动后,必须要在电子市场运行之前操作,不能即时切换
2,有广告

后来更具他的源码及帮助,找到了相关的原理 Android market switch 继续阅读

数据如下:

谷歌地图偏移数据

谷歌地图偏移数据

精度为 0.1,共9万多行数据。

使用说明:

LNG :从设备或者Google上获取的真实纬度
LAT :从设备或者Google上获取的真实经度
OffX :不用管
OfeeY:不用管
OffSetLNG:你获取到的经纬度加上这个就是修正后的了,可以在地图上正确显示
OffSetLAT:你获取到的经纬度加上这个就是修正后的了,可以在地图上正确显示

不提供其他技术支持,不要询问数据来源。
如果你已了解以上内容,有意者请发邮件到 hetaoos邮gmail.com(邮改为@)

基于 Web IP Client

2012/02/02 V1.2.2
1,支持 Android 4.0
2,增加待机后退出选项,并移除自动重连选项(内部开启)
3,优化验证码识别
4, 界面支持滚动

2011/10/25 V1.1.0
重写刷新方式,待机也不掉线。

2011/09/19 V1.0.3

与网站同步更新。

2011/03/01 V1.0.2

1,增加掉线重连设置,更稳定
2,后台运行时显示状态栏图标
3,修正几个小错误
4,增加签名

注:由于添加了签名,必须卸载掉老版本才能安装这个。(原来的是测试签名,和现在的个人签名不同,无法覆盖安装)
继续阅读

PacMaker — By Null
PACMaker#hetaoos.com http://blog.hetaoos.com
由于 http://autoproxy2pac.appspot.com 经常超载,只好自己弄个生成器了。
继续阅读

在 C# 中,想获取Web网站上的网页或者下载其中的文件,非常方便。有三种常见方式可以使用:WebBrowser、WebClient、WebRequest,WebBrowser 不仅可以获取到网页的内容,还可以呈现出来,当然还支持 Cookies;WebClient 提供多种请求方式,满足大多数要求,但默认没有支持 Cookies,要继承修改下才得;WebRequest 几乎可以完全自定义,应用更灵活。
继续阅读

有时候需要使用 VPN 上网,在M8中设置VPN非常杯具,所以写了个简单的 VPN 客户端。
继续阅读

有些时候,某个方法的返回值是个枚举类型,比如描述登录结果:

    public enum LoginResult
    {
        Success,
        WrongPassword,
        UserNotExist,
        Forbidden,
        Unknown
    }

当前段UI获取到登陆方法的返回结果时,就需要告诉用户登录是否成功、什么原因失败的。如果直接使用 ToString() 方式直接返回枚举变量的名称,显然不合适。通常的做法是使用各 switch 来转换,弊端是要写过多的代码;或者构造一个 string[] msg ,再根据 LoginResult 的 int 值来相应的取,弊端是类型的int值必须是连续的或者 string[] msg 的个数大于或等于 枚举类型的最大 int 值 ,一一对应起来也比较麻烦 。
继续阅读

无觅相关文章插件,快速提升流量