zoukankan      html  css  js  c++  java
  • C#向IIS的黑名单写IP

    通过前台WEB记录IP访问情况,后台服务定时作规则统计,写黑名单写入IIS的拒绝访问列表里,很有意义噢

    static void Main(string[] args)
            {
                try
                {
                    // retrieve the directory entry for the root of the IIS server

                    System.DirectoryServices.DirectoryEntry IIS =
                       new System.DirectoryServices.DirectoryEntry(
                       "IIS://localhost/w3svc/17679966/root");      //17679966  为网站标记ID

                    // retrieve the list of currently denied IPs
                    Console.WriteLine("Retrieving the list of currently denied IPs.");
                    // get the IPSecurity property
                    Type typ = IIS.Properties["IPSecurity"][0].GetType();
                    object IPSecurity = IIS.Properties["IPSecurity"][0];
                    // retrieve the IPDeny list from the IPSecurity object
                    Array origIPDenyList = (Array)typ.InvokeMember("IPDeny",
                               BindingFlags.DeclaredOnly |
                               BindingFlags.Public | BindingFlags.NonPublic |
                               BindingFlags.Instance | BindingFlags.GetProperty,
                               null, IPSecurity, null);

                    // display what was being denied
                    foreach (string s in origIPDenyList)
                        Console.WriteLine("Before: " + s);

                    // check GrantByDefault.  This has to be set to true,
                    // or what we are doing will not work.
                    bool bGrantByDefault = (bool)typ.InvokeMember("GrantByDefault",
                                BindingFlags.DeclaredOnly |
                                BindingFlags.Public | BindingFlags.NonPublic |
                                BindingFlags.Instance | BindingFlags.GetProperty,
                                null, IPSecurity, null);

                    Console.WriteLine("GrantByDefault = " + bGrantByDefault);
                    if (!bGrantByDefault)
                    {

                        typ.InvokeMember("GrantByDefault",
                               BindingFlags.DeclaredOnly |
                               BindingFlags.Public | BindingFlags.NonPublic |
                               BindingFlags.Instance | BindingFlags.SetProperty,
                               null, IPSecurity, new object[] { true });

                    }


                    // update the list of denied IPs.  This is a
                    // complete replace.  If you want to maintain what
                    // was already being denied, you need to make sure
                    // those IPs are in here as well.  This area
                    // will be where you will most likely modify to
                    // your needs as this is just an example.
                    Console.WriteLine("Updating the list of denied IPs.");
                    object[] newIPDenyList = new object[4];
                    newIPDenyList[0] = "192.168.1.1, 255.255.255.255";
                    newIPDenyList[1] = "192.168.1.2, 255.255.255.255";
                    newIPDenyList[2] = "192.168.1.3, 255.255.255.255";
                    newIPDenyList[3] = "192.168.1.4, 255.255.255.255";
                    Console.WriteLine("Calling SetProperty");

                    // add the updated list back to the IPSecurity object
                    typ.InvokeMember("IPDeny",
                             BindingFlags.DeclaredOnly |
                             BindingFlags.Public | BindingFlags.NonPublic |
                             BindingFlags.Instance | BindingFlags.SetProperty,
                             null, IPSecurity, new object[] { newIPDenyList });


                    IIS.Properties["IPSecurity"][0] = IPSecurity;
                    Console.WriteLine("Commiting the changes.");

                    // commit the changes
                    IIS.CommitChanges();
                    IIS.RefreshCache();


                    // check to see if the update took
                    Console.WriteLine("Checking to see if the update took.");
                    IPSecurity = IIS.Properties["IPSecurity"][0];
                    Array y = (Array)typ.InvokeMember("IPDeny",
                              BindingFlags.DeclaredOnly |
                              BindingFlags.Public | BindingFlags.NonPublic |
                              BindingFlags.Instance | BindingFlags.GetProperty,
                              null, IPSecurity, null);

                    foreach (string s in y)
                        Console.WriteLine("After: " + s);
                }

                catch (Exception e)
                {
                    Console.WriteLine("Error: " + e.Message.ToString());

                }

            }

  • 相关阅读:
    Android 仿淘宝头条竖直跑马灯式新闻标题及“分页思想
    Android setOnPageChangeListener 过时了怎么办?
    Android requestWindowFeature(Window.FEATURE_NO_TITLE)无效解决方法
    Android ViewPager+HorizontalScrollView实现标题栏滑动(腾讯新闻)
    Android OKHttp网络框架
    安卓开发常用网络请求框架OkHttp、Volley、XUtils、Retrofit对比
    Android 修改源码自定义SwipeRefreshLayout样式——高仿微信朋友圈下拉刷新
    Android 比SwipeRefreshLayout更漂亮和强大的下拉刷新控件:Android-MaterialRefreshLayout
    Android Error:Unable to find method 'com.android.build.gradle.api.BaseVariant.getOutputs()Ljava/util/List;'.
    Android 浅谈 RxAndroid + Retrofit + Databinding
  • 原文地址:https://www.cnblogs.com/bobsoft/p/2757195.html
Copyright © 2011-2022 走看看