using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Runtime.Serialization.Json;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Web.Services.Protocols;
using System.Security.Cryptography;
using System.Text;
using System.Web.SessionState;
using System.Data;
using System.IO.Compression;
using System.Data.SqlClient;
using Dapper;
using Dapper.Contrib.Extensions;
namespace abbott_2024_event.BackEnd.api
{
///
/// ipList 的摘要描述
///
public class ipList : IHttpHandler, IReadOnlySessionState
{
SqlConnection conn = new SqlConnection(globalClass.appsettings("DBConnectionString"));
public void ProcessRequest(HttpContext context)
{
result objRet = new result();
DataContractJsonSerializer json = new DataContractJsonSerializer(objRet.GetType());
context.Response.ContentType = "application/json;charset=utf-8";
context.Response.AddHeader("Access-Control-Allow-Origin", "*");
string acceptEncoding = context.Request.Headers["Accept-Encoding"].ToString().ToUpperInvariant();
if (!String.IsNullOrEmpty(acceptEncoding))
{
if (acceptEncoding.Contains("GZIP"))
{
//输出流头部GZIP压缩
context.Response.AppendHeader("Content-encoding", "gzip");
context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress);
}
else if (acceptEncoding.Contains("DEFLATE"))
{
//输出流头部DEFLATE压缩
context.Response.AppendHeader("Content-encoding", "deflate");
context.Response.Filter = new DeflateStream(context.Response.Filter, CompressionMode.Compress);
}
}
authToken objAuth = new authToken();
string allowAnyIP = (context.Request["allow"] == null) ? "" : context.Request["allow"].ToString();
string iplist = (context.Request["iplist"] == null) ? "[]" : context.Request["iplist"].ToString();
string method = (context.Request["method"] == null) ? "" : context.Request["method"].ToString();
if (!objAuth.user_isLogin)
{
objRet.ret = "no";
objRet.err_code = "0001";
objRet.message = "尚未登入,請登入後使用";
json.WriteObject(context.Response.OutputStream, objRet);
return;
}
if (method == "")
{
objRet.ret = "no";
objRet.err_code = "0003";
objRet.message = "無method";
json.WriteObject(context.Response.OutputStream, objRet);
return;
}
if (method == "get") {
List ipTables = conn.Query("select * from ipTable").ToList();
foreach (ipTable ipTable in ipTables) {
objRet.ipList.Add(ipTable.ipTable_address);
}
objRet.ret = "yes";
json.WriteObject(context.Response.OutputStream, objRet);
return;
}
if (method == "edit") {
dynamic ipJsonObj;
ipJsonObj = JValue.Parse(iplist);
conn.Execute("delete ipTable");
foreach (string item in ipJsonObj)
{
if (item != "") {
ipTable newIp = new ipTable();
newIp.ipTable_address = item;
newIp.ipTable_create_user_uid = "admin";
conn.Insert(newIp);
}
}
objRet.ret = "yes";
json.WriteObject(context.Response.OutputStream, objRet);
return;
}
}
public class result
{
public string ret = "no";
public string err_code = "0000";
public string message = "";
public string allowAnyIP = "N";
public List ipList = new List();
}
public bool IsReusable
{
get
{
return false;
}
}
}
}