国产高清在线免费观看-国产高清在线免费无码-国产高清在线男人的天堂-国产高清在线视频-国产高清在线视频精品视频-国产高清在线视频伊甸园

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

[點晴永久免費OA]C#為IIS站點添加限制IP

admin
2019年9月4日 23:37 本文熱度 3289

/// <summary>
/// 添加站點限制IP
/// </summary>
/// <param name="sitename">站點名稱</param>
/// <param name="xzip">限制IP</param>
/// <param name="type">是否授權還是限制 0為授權 1為限制</param>
/// <param name="mask">子網掩碼 空 0 1 2</param>
/// <returns></returns>
public string AddAstrictIP(string sitename, string xzip, string cut,string mask)
{
string result = "";
//判斷子網掩碼是否為空
if (mask=="0")
{
mask = "255.0.0.0";
}
else if (mask == "1")
{
mask = "255.255.0.0";
}
else if (mask == "2")
{
mask = "255.255.255.0";
}
else
{
mask = "255.255.255.255";
}
try
{
//根據站點名稱查詢站點對應ID
string sitenum = getWebSiteNum(sitename); ;
//檢索為IIS服務器的根目錄條目
System.DirectoryServices.DirectoryEntry IIS = new System.DirectoryServices.DirectoryEntry(string.Format("IIS://localhost/w3svc/{0}/root", sitenum));//站點ID號
Type typ = IIS.Properties["IPSecurity"][0].GetType();// 得到IPSecurity屬性
object IPSecurity = IIS.Properties["IPSecurity"][0];
IIS.RefreshCache();
bool bGrantByDefault = (bool)typ.InvokeMember("GrantByDefault", BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic
| BindingFlags.Instance | BindingFlags.GetProperty, null, IPSecurity, null);
if (!bGrantByDefault)
{
// 必須設置 默認允許訪問
typ.InvokeMember("GrantByDefault", BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance
| BindingFlags.SetProperty, null, IPSecurity, new object[] { true });
}
if (cut == "0")
{
//如果是IIS6
if (IISVersionMajor == "6")
{
// 檢索IPGrant IPSecurity對象列表
Array origIPGrantList = (Array)typ.InvokeMember("IPGrant",
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.GetProperty, null, IPSecurity, null);

//修改
List<string> iplist = new List<string>();
foreach (string s in origIPGrantList)
{
iplist.Add(s);
}
iplist.Add(string.Format("{0},{1}", xzip, mask));
bool bGrantByDefaultx = (bool)typ.InvokeMember("GrantByDefault",
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.GetProperty,
null, IPSecurity, null);
if (bGrantByDefaultx)
{
typ.InvokeMember("GrantByDefault",
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.SetProperty,
null, IPSecurity, new object[] { false });
}

object[] newIPDenyList = new object[iplist.Count];
int i = 0;
foreach (string s in iplist)
{
newIPDenyList[i] = s;
i++;
}
typ.InvokeMember("IPGrant",
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.SetProperty,
null, IPSecurity, new object[] { newIPDenyList });

}
else
{
// 檢索IPGrant IPSecurity對象列表
Array origIPGrantList = (Array)typ.InvokeMember("IPGrant",
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.GetProperty, null, IPSecurity, null);
List<string> iplist = new List<string>();
foreach (string s in origIPGrantList)
{
iplist.Add(s);
}
//先刪除后添加
foreach (string s in origIPGrantList)
{
if (iplist.Contains(s))
{ iplist.Remove(s); }
}
iplist.Add(string.Format("{0},{1}", xzip,mask));
bool bGrantByDefaultx = (bool)typ.InvokeMember("GrantByDefault",
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.GetProperty,
null, IPSecurity, null);
if (bGrantByDefaultx)
{
typ.InvokeMember("GrantByDefault",
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.SetProperty,
null, IPSecurity, new object[] { false });
}

object[] newIPDenyList = new object[iplist.Count];
int i = 0;
foreach (string s in iplist)
{
newIPDenyList[i] = s;
i++;
}
typ.InvokeMember("IPGrant",
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.SetProperty,
null, IPSecurity, new object[] { newIPDenyList });
}
}
else
{
//如果是IIS6
if (IISVersionMajor == "6")
{
// 檢索IPDeny IPSecurity對象列表
Array origIPDenyList = (Array)typ.InvokeMember("IPDeny",
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.GetProperty, null, IPSecurity, null);
//獲取原來數據
int num = origIPDenyList.Length;
object[] newIPDenyList = new object[num + 1];
int i = 0;
foreach (string s in origIPDenyList)
{
newIPDenyList[i] = s;
i++;
}
newIPDenyList[i] = string.Format("{0},{1}", xzip,mask);
typ.InvokeMember("IPDeny",//限制
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.SetProperty, null, IPSecurity, new object[] { newIPDenyList });
}
else
{
//II7+
typ.InvokeMember("IPDeny",//限制
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.SetProperty, null, IPSecurity, new object[] { string.Format("{0},{1}", xzip,mask) });
}
}
IIS.Properties["IPSecurity"][0] = IPSecurity;
// 提交更改
IIS.CommitChanges();
IIS.RefreshCache();
result = "succeed";
}
catch (Exception e)
{
string er = e.Message;
if (e.Message.Contains("當文件已存在時"))
{
result = "針對此ip的限制已存在";
}
else
{
result = e.Message;
}
}
return result;

}

/// <summary>
/// 展示站點禁止ip列表
/// </summary>
/// <param name="sitename">站點名稱</param>
/// <returns></returns>
public string AstrictIPList(string sitename)
{
string str = "";
try
{
//根據站點名稱查詢站點對應ID
string sitenum = getWebSiteNum(sitename); ;
string strr = string.Format("IIS://localhost/w3svc/{0}/root", sitenum);//站點ID號
//檢索為IIS服務器的根目錄條目
System.DirectoryServices.DirectoryEntry IIS = new System.DirectoryServices.DirectoryEntry(strr);
// 檢索當前否認IPs的列表
// 得到IPSecurity屬性
Type typ = IIS.Properties["IPSecurity"][0].GetType();
object IPSecurity = IIS.Properties["IPSecurity"][0];
// 檢索IPDeny IPSecurity對象列表
Array origIPDenyList = (Array)typ.InvokeMember("IPDeny",
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.GetProperty, null, IPSecurity, null);
//顯示被拒絕
foreach (string s in origIPDenyList)
{
//判斷是一組ip還是單個ip
var m = s.Split('','');
if (m[1].Trim() != "255.255.255.255")
{
str += m[0] + "(" + m[1].Trim() + ")" + ";";
}
else
{
string ip = s.Substring(0, s.IndexOf(","));
str += ip + ";";
}
}
str = str.TrimEnd('';'');//移除尾部匹配項
}
catch (Exception e)
{

}
return str;
}
/// <summary>
/// 展示站點授權ip列表
/// </summary>
/// <param name="sitename">站點名稱</param>
/// <returns></returns>
public string GrantIPList(string sitename)
{
string str = "";
try
{
//根據站點名稱查詢站點對應ID
string sitenum = getWebSiteNum(sitename); ;
string strr = string.Format("IIS://localhost/w3svc/{0}/root", sitenum);//站點ID號
//檢索為IIS服務器的根目錄條目
System.DirectoryServices.DirectoryEntry IIS = new System.DirectoryServices.DirectoryEntry(strr);
// 檢索當前否認IPs的列表
// 得到IPSecurity屬性
Type typ = IIS.Properties["IPSecurity"][0].GetType();
object IPSecurity = IIS.Properties["IPSecurity"][0];
// 檢索IPDeny IPSecurity對象列表
Array origIPDenyList = (Array)typ.InvokeMember("IPGrant",
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.GetProperty, null, IPSecurity, null);
//顯示被拒絕
foreach (string s in origIPDenyList)
{
//判斷是一組ip還是單個ip
var m = s.Split('','');
if (m[1].Trim() != "255.255.255.255")
{
str += m[0] + "(" + m[1].Trim() + ")"+";";
}
else
{
string ip = s.Substring(0, s.IndexOf(","));
str += ip + ";";
}
}
str = str.TrimEnd('';'');
}
catch (Exception e)
{

}
return str;
}
/// <summary>
/// 刪除限制IP
/// </summary>
/// <param name="sitename">站點名稱</param>
/// <param name="xzip">限制ip</param>
/// <returns></returns>
public string DelAstrictIP(string sitename, string xzip)
{
//判斷限制的IP中是否含有(),如果有則表示一組ip
if(xzip.Contains("("))
{
//替換字符串 清除空格 并移除最后一個字符串
xzip= xzip.Replace("(",",").Trim().TrimEnd('')'');
}
else
{
xzip += ",255.255.255.255";
}
string result = "";
//如果是IIS6
if (IISVersionMajor == "6")
{
try
{
//根據站點名稱查詢站點對應ID
string sitenum = getWebSiteNum(sitename); ;
string strr = string.Format("IIS://localhost/w3svc/{0}/root", sitenum);//站點ID號
//檢索為IIS服務器的根目錄條目
System.DirectoryServices.DirectoryEntry IIS = new System.DirectoryServices.DirectoryEntry(strr);
// 檢索當前否認IPs的列表
// 得到IPSecurity屬性
Type typ = IIS.Properties["IPSecurity"][0].GetType();
object IPSecurity = IIS.Properties["IPSecurity"][0];
// 檢索IPDeny IPSecurity對象列表
Array origIPDenyList = (Array)typ.InvokeMember("IPDeny",
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.GetProperty, null, IPSecurity, null);
//獲取被拒絕的全部IP
List<object> newIpList = new List<object>();
foreach (string s in origIPDenyList)
{
//判斷是否與選中的刪除ip相等

if (s.Trim().Replace(" ", "")!= xzip.Trim())
{
newIpList.Add(s);
}

}
object[] ipList = newIpList.ToArray();
typ.InvokeMember("IPDeny",//限制
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.SetProperty, null, IPSecurity, new object[] { ipList });
IIS.Properties["IPSecurity"][0] = IPSecurity;
// 提交更改
IIS.CommitChanges();
IIS.RefreshCache();
result = "succeed";
}
catch (Exception ex)
{
result = ex.Message;
}
}
else
{
//IIS7刪除
try
{
string strr = DelIP(sitename, xzip);
result = strr; //"IIS7及以上版本暫不支持助手刪除限制IP操作,請在IIS中手動操作。";
}
catch (Exception ex)
{
return ex.Message;
}

}
return result;
}
/// <summary>
/// IIS7刪除限制IP
/// </summary>
/// <param name="sitename">站點名稱</param>
/// <param name="xzip">IP地址</param>
/// <returns></returns>
public string DelIP(string sitename, string xzip)
{
//分隔字符串
var ipandmask = xzip.Split('','');
//==
try
{
using (Microsoft.Web.Administration.ServerManager serverManager = new Microsoft.Web.Administration.ServerManager())
{
Microsoft.Web.Administration.Configuration config = serverManager.GetApplicationHostConfiguration();
Microsoft.Web.Administration.ConfigurationSection ipSecuritySection = config.GetSection("system.webServer/security/ipSecurity", sitename);
Microsoft.Web.Administration.ConfigurationElementCollection ipSecurityCollection = ipSecuritySection.GetCollection();
Microsoft.Web.Administration.ConfigurationElement addElement = FindElementx(ipSecurityCollection, "add", "ipAddress", ipandmask[0].Trim(), "subnetMask", ipandmask[1].Trim(), "domainName", @"");//IP地址 子網掩碼 域名
if (addElement == null) throw new InvalidOperationException("未找到元素!");
ipSecurityCollection.Remove(addElement);
serverManager.CommitChanges();
}
return "succeed";
}
catch (Exception ex)
{
return ex.Message;
}
}
private static Microsoft.Web.Administration.ConfigurationElement FindElementx(Microsoft.Web.Administration.ConfigurationElementCollection collection, string elementTagName, params string[] keyValues)
{
foreach (Microsoft.Web.Administration.ConfigurationElement element in collection)
{
if (String.Equals(element.ElementTagName, elementTagName, StringComparison.OrdinalIgnoreCase))
{
bool matches = true;
for (int i = 0; i < keyValues.Length; i += 2)
{
object o = element.GetAttributeValue(keyValues[i]);
string value = null;
if (o != null)
{
value = o.ToString();
}
if (!String.Equals(value, keyValues[i + 1], StringComparison.OrdinalIgnoreCase))
{
matches = false;
break;
}
}
if (matches)
{
return element;
}
}
}
return null;
}
/// <summary>
/// 刪除授權IP
/// </summary>
/// <param name="sitename">站點名稱</param>
/// <param name="sqip">授權ip</param>
/// <returns></returns>
public string DelGrantIP(string sitename, string sqip)
{
//判斷限制的IP中是否含有(),如果有則表示一組ip
if (sqip.Contains("("))
{
//替換字符串 清除空格 并移除最后一個字符串
sqip = sqip.Replace("(", ",").Trim().TrimEnd('')'');
}
else
{
sqip += ",255.255.255.255";
}
string result = "";
//邏輯代碼塊
if (IISVersionMajor == "6")
{
try
{
//根據站點名稱查詢站點對應ID
string sitenum = getWebSiteNum(sitename); ;
string strr = string.Format("IIS://localhost/w3svc/{0}/root", sitenum);//站點ID號
//檢索為IIS服務器的根目錄條目
System.DirectoryServices.DirectoryEntry IIS = new System.DirectoryServices.DirectoryEntry(strr);
// 檢索當前否認IPs的列表
// 得到IPSecurity屬性
Type typ = IIS.Properties["IPSecurity"][0].GetType();
object IPSecurity = IIS.Properties["IPSecurity"][0];
// 檢索IPDeny IPSecurity對象列表
Array origIPDenyList = (Array)typ.InvokeMember("IPGrant",
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.GetProperty, null, IPSecurity, null);
//獲取被拒絕的全部IP
List<object> newIpList = new List<object>();
foreach (string s in origIPDenyList)
{
//判斷是否與選中的刪除ip相等

if (s.Trim().Replace(" ", "")!= sqip.Trim())

{
newIpList.Add(s);
}

}
object[] ipList = newIpList.ToArray();
//更新數據
typ.InvokeMember("IPGrant",//限制
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.SetProperty, null, IPSecurity, new object[] { ipList });
IIS.Properties["IPSecurity"][0] = IPSecurity;
// 提交更改
IIS.CommitChanges();
IIS.RefreshCache();
result = "succeed";
}
catch (Exception ex)
{
result = ex.Message;
}
}
else
{

//IIS7刪除
try
{
string strr = DelIP(sitename, sqip);
result = strr; //"IIS7及以上版本暫不支持助手刪除限制IP操作,請在IIS中手動操作。";
}
catch (Exception ex)
{
return ex.Message;
}

}
return result;
}


該文章在 2019/9/4 23:37:45 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 欧美最骚最疯日B视频观看 欧美做愛坉片 | 精品无码av无码免费专区 | 国产爆乳美女娇喘呻吟在线观看 | 亚洲丰满熟妇XXXX性A片 | 亚洲一区二区三区无码午夜 | 亚洲av永久综合在线观看尤物 | 人妻久久人妻久久不卡 | 日韩系列av专区一区二区三区 | 丁香五月香婷婷五月 | 麻豆床传媒入口 | 国产精品人妻一区二区三区A | 最新国产麻豆aⅴ精品无码 最新国产麻豆aⅴ精品无码qq | 日韩视频在线精品视频免费观看 | 亚洲av无码乱码在线观看富二代 | 国产精品久久久久久人妻香蕉 | 另类zoofilia杂交videos | 亚洲高清中文字幕精品不卡 | 制服丝袜无码中文字幕在线 | 亚洲成av人片在线观看无线 | 91精品国产91无码网站 | 人妻少妇久久久久久 | 无套内谢少妇毛片免费看看我 | 一本道高清无码中文在线 | 亚洲日韩av中文字幕高清一区 | 麻豆网站直接入口 | 久久久久久国产精品美女 | 久久艳妇乳肉豪妇荡乳A片PY | 亚洲aⅴ精品一区二区三区 亚洲aⅴ精品一区 | 国产在线精品一区二区高清 | 国产亚洲av片在线观看播放 | 亚洲另类自拍av | 中文字幕无码av激情不卡久久 | 国产三级观看久久 | 无码高潮少妇毛多水多水免 | 免费1级做爰片1000部视频 | 久久久久国产精品免费 | 国产一区二区三区免费观看在线 | 午夜伦情电午夜伦情电影8090动漫在线观看 | 国产亚洲一区二区手机在线观看 | 亚洲国产av一区二区三区四区 | 在线视频亚太国产欧美一区二区 |