initial version with inspection edition
This commit is contained in:
436
IronIntelContractor/Site/IronIntelBasePage.cs
Normal file
436
IronIntelContractor/Site/IronIntelBasePage.cs
Normal file
@ -0,0 +1,436 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Net;
|
||||
using System.Configuration;
|
||||
using System.Web;
|
||||
using Foresight.ServiceModel;
|
||||
using Foresight.Security;
|
||||
using IronIntel.Services;
|
||||
using IronIntel.Services.Users;
|
||||
using IronIntel.Services.Customers;
|
||||
|
||||
namespace IronIntel.Contractor.Site
|
||||
{
|
||||
public class IronIntelBasePage : System.Web.UI.Page
|
||||
{
|
||||
public const string LOGINSESSION_COOKIENAME = "iiabc_";
|
||||
public const string LANGUAGECOOKIENAME = LOGINSESSION_COOKIENAME + "language";
|
||||
public const string APPNAME = "iron-desktop";
|
||||
public const string CLIENT_TIMEOFFSET_COOKIENAME = "clienttimeoffset";
|
||||
|
||||
private static int _LOCAL_TIMEOFFSET = 10000;
|
||||
|
||||
private static string _HostName = null;
|
||||
|
||||
private static string _Branch = string.Empty;
|
||||
private static string _AboutUrl = string.Empty;
|
||||
private static string _Copyrights = string.Empty;
|
||||
private static string _PageTitle = string.Empty;
|
||||
private static string _ShowTermofuse = string.Empty;
|
||||
|
||||
public static string LocalHostName
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_HostName == null)
|
||||
{
|
||||
try
|
||||
{
|
||||
_HostName = Dns.GetHostName();
|
||||
}
|
||||
catch
|
||||
{
|
||||
_HostName = string.Empty;
|
||||
}
|
||||
}
|
||||
return _HostName;
|
||||
}
|
||||
}
|
||||
|
||||
public static int LocalTimeOffset
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_LOCAL_TIMEOFFSET == 10000)
|
||||
{
|
||||
DateTime dt = DateTime.Now;
|
||||
DateTime dt1 = dt.ToUniversalTime();
|
||||
TimeSpan sp = dt1 - dt;
|
||||
_LOCAL_TIMEOFFSET = Convert.ToInt32(sp.TotalMinutes);
|
||||
}
|
||||
return _LOCAL_TIMEOFFSET;
|
||||
}
|
||||
}
|
||||
|
||||
private static readonly byte[] KEY = new byte[] { 219, 239, 201, 20, 173, 133, 64, 29, 33, 71, 49, 117, 208, 115, 79, 169, 1, 126, 201, 229, 115, 35, 62, 102, 71, 16, 71, 220, 44, 95, 186, 223 };
|
||||
private static readonly byte[] IV = new byte[] { 255, 180, 99, 244, 147, 37, 175, 243, 193, 52, 167, 82, 143, 199, 242, 171 };
|
||||
|
||||
public static string EncryptString(string s)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(s))
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
byte[] buf = Encoding.UTF8.GetBytes(s);
|
||||
byte[] tmp = SecurityHelper.AesEncrypt(buf, KEY, IV);
|
||||
return Convert.ToBase64String(tmp);
|
||||
}
|
||||
|
||||
public static string DecryptString(string s)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(s))
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
byte[] tmp = Convert.FromBase64String(s);
|
||||
byte[] buf = SecurityHelper.AesDecrypt(tmp, KEY, IV);
|
||||
return Encoding.UTF8.GetString(buf);
|
||||
}
|
||||
|
||||
public virtual string GetIronSystemServiceAddress()
|
||||
{
|
||||
return ConfigurationManager.AppSettings["syssvcaddress"];
|
||||
}
|
||||
|
||||
public virtual IronSysServiceClient GetSystemServiceClient()
|
||||
{
|
||||
LoginSession session = null;
|
||||
try
|
||||
{
|
||||
session = GetCurrentLoginSession();
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
IronSysServiceClient ic = new IronSysServiceClient(GetIronSystemServiceAddress());
|
||||
if (session != null)
|
||||
{
|
||||
ic.AppName = session.AppName;
|
||||
ic.LoginSessionID = session.SessionID;
|
||||
ic.CurrentUserIID = session.User.UID;
|
||||
}
|
||||
return ic;
|
||||
}
|
||||
|
||||
public virtual CustomerProvider GetCustomerProvider()
|
||||
{
|
||||
LoginSession session = null;
|
||||
try
|
||||
{
|
||||
session = GetCurrentLoginSession();
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
CustomerProvider ic = new CustomerProvider(GetIronSystemServiceAddress());
|
||||
if (session != null)
|
||||
{
|
||||
ic.AppName = session.AppName;
|
||||
ic.LoginSessionID = session.SessionID;
|
||||
ic.CurrentUserIID = session.User.UID;
|
||||
}
|
||||
return ic;
|
||||
}
|
||||
|
||||
public virtual LoginProvider GetLoginProvider()
|
||||
{
|
||||
LoginSession session = null;
|
||||
try
|
||||
{
|
||||
session = GetCurrentLoginSession();
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
LoginProvider ic = new LoginProvider(GetIronSystemServiceAddress());
|
||||
if (session != null)
|
||||
{
|
||||
ic.AppName = session.AppName;
|
||||
ic.LoginSessionID = session.SessionID;
|
||||
ic.CurrentUserIID = session.User.UID;
|
||||
}
|
||||
return ic;
|
||||
}
|
||||
|
||||
private string GetServerParam(string key)
|
||||
{
|
||||
IronSysServiceClient ic = new IronSysServiceClient(GetIronSystemServiceAddress());
|
||||
StringKeyValue[] kvs = ic.GetServerParams();
|
||||
foreach (StringKeyValue kv in kvs)
|
||||
{
|
||||
if (string.Compare(kv.Key, key, true) == 0)
|
||||
{
|
||||
return kv.Value;
|
||||
}
|
||||
}
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
public string Branch
|
||||
{
|
||||
get
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(_Branch))
|
||||
{
|
||||
_Branch = GetServerParam("Branch");
|
||||
}
|
||||
return _Branch;
|
||||
}
|
||||
}
|
||||
|
||||
public string AboutUrl
|
||||
{
|
||||
get
|
||||
{
|
||||
if (string.IsNullOrEmpty(_AboutUrl))
|
||||
{
|
||||
_AboutUrl = GetServerParam("AboutUrl");
|
||||
}
|
||||
return _AboutUrl;
|
||||
}
|
||||
}
|
||||
|
||||
public string Copyrights
|
||||
{
|
||||
get
|
||||
{
|
||||
if (string.IsNullOrEmpty(_Copyrights))
|
||||
{
|
||||
_Copyrights = GetServerParam("Copyrights");
|
||||
}
|
||||
return _Copyrights;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public string PageTitle
|
||||
{
|
||||
get
|
||||
{
|
||||
if (string.IsNullOrEmpty(_PageTitle))
|
||||
{
|
||||
_PageTitle = GetServerParam("PageTitle");
|
||||
}
|
||||
return _PageTitle;
|
||||
}
|
||||
}
|
||||
|
||||
public bool ShowTermofuse
|
||||
{
|
||||
get
|
||||
{
|
||||
if (string.IsNullOrEmpty(_ShowTermofuse))
|
||||
{
|
||||
_ShowTermofuse = GetServerParam("ShowTermofuse");
|
||||
}
|
||||
return string.Compare(_ShowTermofuse, "True", true) == 0 || string.Compare(_ShowTermofuse, "Yes", true) == 0 || string.Compare(_ShowTermofuse, "1", true) == 0;
|
||||
}
|
||||
}
|
||||
|
||||
public static string GetLoginSessionID(HttpRequest request)
|
||||
{
|
||||
HttpCookie cookie = request.Cookies[LOGINSESSION_COOKIENAME];
|
||||
if (cookie == null)
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
if (string.IsNullOrWhiteSpace(cookie.Value))
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
return DecryptString(cookie.Value);
|
||||
}
|
||||
|
||||
public LoginSession GetCurrentLoginSession()
|
||||
{
|
||||
string sessionid = GetLoginSessionID(Request);
|
||||
if (string.IsNullOrWhiteSpace(sessionid))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
try
|
||||
{
|
||||
LoginProvider ic = new LoginProvider(GetIronSystemServiceAddress());
|
||||
return ic.GetLoginSession(sessionid);
|
||||
}
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
protected void RedirectToLoginPage()
|
||||
{
|
||||
Response.Redirect(LoginPageUrl);
|
||||
}
|
||||
|
||||
protected string LoginPageUrl
|
||||
{
|
||||
get
|
||||
{
|
||||
IronSysServiceClient ic = new IronSysServiceClient(GetIronSystemServiceAddress());
|
||||
return ic.GetPortalLoginUrl();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 当用户登录成功后,跳转到用户的默认主界面, 也即是各公司的主界面
|
||||
/// </summary>
|
||||
/// <param name="user"></param>
|
||||
protected void RedirectToUsersDefaultEntryPage(UserInfo user)
|
||||
{
|
||||
Response.Redirect(GetUserDefaultEntryPageUrl(user), true);
|
||||
}
|
||||
|
||||
protected string GetUserDefaultEntryPageUrl(UserInfo user)
|
||||
{
|
||||
IronSysServiceClient ic = new IronSysServiceClient(GetIronSystemServiceAddress());
|
||||
return ic.GetCompanyPortalEntryUrl(user.CompanyID);
|
||||
}
|
||||
|
||||
protected void ClearLoginSessionCookie()
|
||||
{
|
||||
HttpCookie cookie = new HttpCookie(LOGINSESSION_COOKIENAME);
|
||||
cookie.Value = string.Empty;
|
||||
cookie.Expires = DateTime.Now.AddDays(-3);
|
||||
Response.Cookies.Add(cookie);
|
||||
}
|
||||
|
||||
protected void SetLoginSessionCookie(string sessionid)
|
||||
{
|
||||
HttpCookie cookie = new HttpCookie(LOGINSESSION_COOKIENAME);
|
||||
cookie.Value = EncryptString(sessionid);
|
||||
|
||||
string path = ConfigurationManager.AppSettings["sessioncookiepath"];
|
||||
if (!string.IsNullOrWhiteSpace(path))
|
||||
{
|
||||
cookie.Path = path;
|
||||
}
|
||||
string domain = ConfigurationManager.AppSettings["sessioncookiedomain"];
|
||||
if (!string.IsNullOrWhiteSpace(domain))
|
||||
{
|
||||
cookie.Domain = domain;
|
||||
}
|
||||
Response.Cookies.Add(cookie);
|
||||
}
|
||||
|
||||
protected void SetClientTimeOffset(int offset)
|
||||
{
|
||||
HttpCookie cookie = new HttpCookie(CLIENT_TIMEOFFSET_COOKIENAME);
|
||||
cookie.Value = offset.ToString();
|
||||
cookie.Expires = DateTime.Now.AddYears(1);
|
||||
Response.Cookies.Add(cookie);
|
||||
}
|
||||
|
||||
protected int GetClientTimeOffset()
|
||||
{
|
||||
HttpCookie cookie = Request.Cookies[CLIENT_TIMEOFFSET_COOKIENAME];
|
||||
if (cookie == null)
|
||||
{
|
||||
return LocalTimeOffset;
|
||||
}
|
||||
if (string.IsNullOrWhiteSpace(cookie.Value))
|
||||
{
|
||||
return LocalTimeOffset;
|
||||
}
|
||||
int n = 0;
|
||||
if (int.TryParse(cookie.Value, out n))
|
||||
{
|
||||
return n;
|
||||
}
|
||||
else
|
||||
{
|
||||
return LocalTimeOffset;
|
||||
}
|
||||
}
|
||||
|
||||
public static DateTime UtcTimeToClientTime(DateTime dt, int clienttimeoffset)
|
||||
{
|
||||
return dt.AddMinutes(-1 * clienttimeoffset);
|
||||
}
|
||||
|
||||
public static Int64 GetSiteFileDateTime(string url)
|
||||
{
|
||||
string fn = HttpContext.Current.Server.MapPath(url);
|
||||
if (System.IO.File.Exists(fn))
|
||||
{
|
||||
try
|
||||
{
|
||||
return System.IO.File.GetLastWriteTimeUtc(fn).Ticks;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 用于构造js/css或图片文件的url,在其最后加上版本标识,解决浏览器缓存问题
|
||||
/// </summary>
|
||||
/// <param name="url"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetFileUrlWithVersion(string url)
|
||||
{
|
||||
string fn = HttpContext.Current.Server.MapPath(url);
|
||||
if (System.IO.File.Exists(fn))
|
||||
{
|
||||
try
|
||||
{
|
||||
Int64 n = System.IO.File.GetLastWriteTimeUtc(fn).Ticks;
|
||||
return url + "?sn=" + n.ToString();
|
||||
}
|
||||
catch
|
||||
{
|
||||
return url;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return url;
|
||||
}
|
||||
}
|
||||
|
||||
public static string ReadTextFromStream(System.IO.Stream stream)
|
||||
{
|
||||
using (System.IO.StreamReader sr = new System.IO.StreamReader(stream))
|
||||
{
|
||||
return sr.ReadToEnd();
|
||||
}
|
||||
}
|
||||
|
||||
public static string GetUserHostAddress(HttpRequest request)
|
||||
{
|
||||
const string CLIENT_IP = "client-ip";
|
||||
if (request == null)
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
string rst = request.Headers[CLIENT_IP];
|
||||
if (string.IsNullOrWhiteSpace(rst))
|
||||
{
|
||||
rst = request.UserHostAddress;
|
||||
}
|
||||
if (rst == null)
|
||||
{
|
||||
rst = string.Empty;
|
||||
}
|
||||
return rst;
|
||||
}
|
||||
|
||||
protected string UserHostAddress
|
||||
{
|
||||
get
|
||||
{
|
||||
return GetUserHostAddress(Request);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
151
IronIntelContractor/Site/IronIntelHttpHandlerBase.cs
Normal file
151
IronIntelContractor/Site/IronIntelHttpHandlerBase.cs
Normal file
@ -0,0 +1,151 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Configuration;
|
||||
using System.Web;
|
||||
using Foresight.Security;
|
||||
using IronIntel.Services;
|
||||
using IronIntel.Services.Users;
|
||||
using IronIntel.Services.Customers;
|
||||
|
||||
namespace IronIntel.Contractor.Site
|
||||
{
|
||||
public class IronIntelHttpHandlerBase : IDisposable
|
||||
{
|
||||
public static string LocalHostName
|
||||
{
|
||||
get { return IronIntelBasePage.LocalHostName; }
|
||||
}
|
||||
|
||||
public HttpContext Context { get; private set; }
|
||||
protected LoginSession LoginSession { get; private set; }
|
||||
|
||||
protected int ClientTimeOffset { get; private set; }
|
||||
|
||||
public IronIntelHttpHandlerBase(HttpContext context)
|
||||
{
|
||||
Context = context;
|
||||
try
|
||||
{
|
||||
LoginSession = GetCurrentLoginSession();
|
||||
}
|
||||
catch
|
||||
{
|
||||
LoginSession = null;
|
||||
}
|
||||
ClientTimeOffset = GetClientTimeOffset();
|
||||
}
|
||||
|
||||
public virtual string GetIronSystemServiceAddress()
|
||||
{
|
||||
return ConfigurationManager.AppSettings["syssvcaddress"];
|
||||
}
|
||||
|
||||
public virtual IronSysServiceClient GetSystemServiceClient()
|
||||
{
|
||||
IronSysServiceClient ic = new IronSysServiceClient(GetIronSystemServiceAddress());
|
||||
if (LoginSession != null)
|
||||
{
|
||||
ic.AppName = LoginSession.AppName;
|
||||
ic.LoginSessionID = LoginSession.SessionID;
|
||||
ic.CurrentUserIID = LoginSession.User.UID;
|
||||
}
|
||||
return ic;
|
||||
}
|
||||
|
||||
public virtual CustomerProvider GetCustomerProvider()
|
||||
{
|
||||
CustomerProvider ic = new CustomerProvider(GetIronSystemServiceAddress());
|
||||
if (LoginSession != null)
|
||||
{
|
||||
ic.AppName = LoginSession.AppName;
|
||||
ic.LoginSessionID = LoginSession.SessionID;
|
||||
ic.CurrentUserIID = LoginSession.User.UID;
|
||||
}
|
||||
return ic;
|
||||
}
|
||||
|
||||
public LoginSession GetCurrentLoginSession()
|
||||
{
|
||||
HttpCookie cookie = Context.Request.Cookies[IronIntelBasePage.LOGINSESSION_COOKIENAME];
|
||||
if (cookie == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
if (string.IsNullOrWhiteSpace(cookie.Value))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
string sessionid = IronIntelBasePage.DecryptString(cookie.Value);
|
||||
try
|
||||
{
|
||||
LoginProvider ic = new LoginProvider(GetIronSystemServiceAddress());
|
||||
return ic.GetLoginSession(sessionid);
|
||||
}
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private int GetClientTimeOffset()
|
||||
{
|
||||
HttpCookie cookie = Context.Request.Cookies[IronIntelBasePage.CLIENT_TIMEOFFSET_COOKIENAME];
|
||||
if (cookie == null)
|
||||
{
|
||||
return IronIntelBasePage.LocalTimeOffset;
|
||||
}
|
||||
if (string.IsNullOrWhiteSpace(cookie.Value))
|
||||
{
|
||||
return IronIntelBasePage.LocalTimeOffset;
|
||||
}
|
||||
int n = 0;
|
||||
if (int.TryParse(cookie.Value, out n))
|
||||
{
|
||||
return n;
|
||||
}
|
||||
else
|
||||
{
|
||||
return IronIntelBasePage.LocalTimeOffset;
|
||||
}
|
||||
}
|
||||
|
||||
public static string ReadTextFromStream(System.IO.Stream stream)
|
||||
{
|
||||
using (System.IO.StreamReader sr = new System.IO.StreamReader(stream))
|
||||
{
|
||||
return sr.ReadToEnd();
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void ProcessRequest()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private bool disposed = false;
|
||||
protected void Dispose(bool disposed)
|
||||
{
|
||||
Context = null;
|
||||
LoginSession = null;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
if (!disposed)
|
||||
{
|
||||
Dispose(true);
|
||||
disposed = true;
|
||||
}
|
||||
}
|
||||
|
||||
public string UserHostAddress
|
||||
{
|
||||
get
|
||||
{
|
||||
return IronIntelBasePage.GetUserHostAddress(Context.Request);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user