Advertisement
Guest User

Untitled

a guest
Apr 17th, 2017
513
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.65 KB | None | 0 0
  1. /*************************************************
  2. Function: Login
  3. Description: 登录类
  4. *************************************************/
  5. function Login() {
  6. this._lxdLogin = null; //Login.xml
  7. this.szDefaultUser = 'admin';
  8. }
  9.  
  10. Login.prototype = {
  11. //字符串长度判断函数
  12. _judgeTextLength: function (szString) {
  13. var iLength = 0;
  14. for(var i = 0; i < szString.length; i++) {
  15. if(szString.charCodeAt(i) > 255) {
  16. iLength+=2;
  17. } else {
  18. iLength+=1;
  19. }
  20. }
  21. return iLength;
  22. },
  23. //事件绑定函数
  24. _loginEventBind: function () {
  25. var that = this;
  26. //回车事件
  27. $("body").bind({
  28. keydown: function (e) {
  29. if(e.keyCode === 13) {
  30. that.doLogin();
  31. }
  32. }
  33. });
  34. },
  35. //登录页面初始化函数
  36. initLogin: function () {
  37. var szLanguage = $.cookie("language");
  38. //如果直接到登录界面,也获取一下语言
  39. if (szLanguage === null) {
  40. if (navigator.appName === "Netscape" || navigator.appName === "Opera") {
  41. var sysLanguage = navigator.language.toLowerCase();
  42. } else {
  43. var sysLanguage = navigator.browserLanguage.toLowerCase();
  44. }
  45. var szLanguage = sysLanguage.substring(0, 2);
  46. if(szLanguage == "zh") { //中文需要区分简体和繁体
  47. var arSysLan = sysLanguage.split("-");
  48. if (arSysLan.length === 2) {
  49. szLanguage = arSysLan[0].toLowerCase() + "_" + arSysLan[1].toUpperCase();
  50. if(arSysLan[1].toLowerCase() === "cn") {
  51. $.cookie('language', 'zh');
  52. szLanguage = "zh";
  53. } else {
  54. $.cookie('language', szLanguage);
  55. }
  56. }
  57. } else {
  58. $.cookie('language', szLanguage);
  59. }
  60. }
  61. if(szLanguage == "ja") {
  62. $(document.body).append('<style id="lanJa">*{font-family:"Meiryo", "Arial", "sans-serif";}</style>');
  63. }
  64. translator.initLanguageSelect(szLanguage);
  65. this._lxdLogin = translator.getLanguageXmlDoc("Login");
  66. var lxdMain = translator.getLanguageXmlDoc("Main");
  67. translator.appendLanguageXmlDoc(this._lxdLogin, lxdMain);
  68. translator.translatePage(this._lxdLogin, document);
  69. //jquery无法对title赋值
  70. document.title = translator.translateNode(this._lxdLogin, "lalogin");
  71. if(global_config.web_mode === 0) {
  72. $("#laCopyRight").html(Base64.decode(g_oCommon.m_szCopyRight));
  73. }
  74. if (!(document.cookie || navigator.cookieEnabled)) {
  75. alert(translator.translateNode(this._lxdLogin, "CookieTips"));
  76. return;
  77. }
  78. var szPlugin = translator.translateNode(this._lxdLogin, "laPlugin");
  79. if(!g_oCommon.checkPlugin("0", szPlugin)) {
  80. return;
  81. }
  82. g_oCommon.m_PreviewOCX = $("#PreviewActiveX")[0];
  83. $("#PreviewActiveX").css("width", "0");
  84. if(!g_oCommon.compareFileVersion()) {
  85. g_oCommon.updateTips();
  86. }
  87. $("#loginUserName").focus();
  88. $("#loginUserName").val("");
  89. this._loginEventBind();
  90. this.getDeviceActiveStat();
  91. },
  92. //激活状态
  93. getDeviceActiveStat: function() {
  94. var that = this;
  95. $.ajax({
  96. type: "GET",
  97. url: g_oCommon.m_lHttp + g_oCommon.m_szHostName + ":" + g_oCommon.m_lHttpPort + "/SDK/activateStatus",
  98. success: function (xmlDoc, textStatus, xhr) {
  99. if ($(xmlDoc).find("Activated").text() != "true") {
  100. that.showChangePswd();
  101. }
  102. },
  103. error: function() {
  104. //that.showChangePswd();
  105. }
  106. });
  107. },
  108. //登录函数
  109. doLogin: function () {
  110. if(g_oCommon.m_PreviewOCX == null) {
  111. alert(translator.translateNode(this._lxdLogin, "laNotWin32Plugin"));
  112. return;
  113. }
  114. var that = this;
  115. //用户名为空时提示
  116. if($("#loginUserName").val().length == 0) {
  117. $("#loginUserName").focus();
  118. alert(translator.translateNode(this._lxdLogin, "LoginTips1"));
  119. return false
  120. }
  121. if(this._judgeTextLength($("#loginUserName").val()) > 16) {
  122. $("#loginUserName").focus();
  123. $("#loginUserName").val("");
  124. alert(translator.translateNode(this._lxdLogin, "LoginTips2"));
  125. return false;
  126. }
  127. if(this._judgeTextLength($("#loginPassword").val()) > 16) {
  128. $("#loginPassword").focus();
  129. $("#loginPassword").val("");
  130. alert(translator.translateNode(this._lxdLogin, "LoginTips3"));
  131. return false;
  132. }
  133. var xmlNetInfo = g_oCommon.parseXmlFromStr(g_oCommon.m_PreviewOCX.HWP_GetInfo(0));
  134. var szXml = "<?xml version='1.0' encoding='UTF-8'?><userCheck>";
  135. szXml += "<ipAddress>" + $(xmlNetInfo).find("IP").eq(0).text() + "</ipAddress>";
  136. szXml += "<macAddress>" + $(xmlNetInfo).find("MAC").eq(0).text() + "</macAddress>";
  137. szXml += "</userCheck>";
  138. var xmlDoc = g_oCommon.parseXmlFromStr(szXml);
  139. g_oCommon.changAuthInfo(Base64.encode($("#loginUserName").val() + ":" + $("#loginPassword").val()));
  140. var szTimeStamp = new Date().getTime(); //为了解决各个浏览器不带认证请求
  141. $.ajax({
  142. type: "post",
  143. url: g_oCommon.m_lHttp + g_oCommon.m_szHostName + ":" + g_oCommon.m_lHttpPort + "/ISAPI/Security/userCheck?timeStamp=" + szTimeStamp,
  144. async: true,
  145. timeout: 15000,
  146. username: $("#loginUserName").val(),
  147. password: $("#loginPassword").val(),
  148. processData: false,
  149. data: xmlDoc,
  150. success: function(xmlDoc, textStatus, xhr) {
  151. if("200" === $(xmlDoc).find("statusValue").eq(0).text()) {
  152. var szUrl = decodeURI(document.URL), oLoginXml = xmlDoc;
  153. var bIsRiskPwd = "true" == $(xmlDoc).find('isRiskPassword').eq(0).text();
  154. if(szUrl.indexOf("?page=") != -1) {
  155. var szPage = szUrl.substring(szUrl.indexOf("page=") + 5, szUrl.indexOf("&params="));
  156. if(szPage.indexOf(".asp") == -1) {
  157. szPage = szPage.concat(".asp");
  158. }
  159. var szParam = szUrl.substring(szUrl.indexOf("&params=") + 8, szUrl.length);
  160. $.cookie("page", szPage + "?" + szParam + "%1");
  161. } else {
  162. $.cookie("page", null);
  163. }
  164. g_oWebSession.setItem("userInfo", g_oCommon.m_szUserPwdValue);
  165.  
  166. //获取向导能力
  167. $.ajax({
  168. type: "get",
  169. url: g_oCommon.m_lHttp + g_oCommon.m_szHostName + ":" + g_oCommon.m_lHttpPort + "/SDK/capabilities",
  170. timeout: 15000,
  171. username: $("#loginUserName").val(),
  172. password: $("#loginPassword").val(),
  173. success: function (xmlDoc, textStatus, xhr) {
  174. if ("true" == $(xmlDoc).find("GuideCap").eq(0).find("isSupGuide").eq(0).text()) {
  175. var szInfo = g_oCommon.getNodeValue("laPlugin");
  176. //没装插件不显示向导
  177. if (!g_oCommon.checkPlugin("0", szInfo)) {
  178. window.location.href = "main.asp";
  179. return;
  180. }
  181. g_oCommon.m_PreviewOCX = $("#PreviewActiveX")[0];
  182. $("#PreviewActiveX").css("width", "1");
  183. var szPathInfo = '';
  184. try {
  185. szPathInfo = g_oCommon.m_PreviewOCX.HWP_GetLocalConfig();
  186. } catch (e) {
  187. szPathInfo = g_oCommon.m_PreviewOCX.GetLocalConfig();
  188. }
  189. var xmlDocCfg = g_oCommon.parseXmlFromStr(szPathInfo);
  190. if ("1" == $(xmlDocCfg).find("ShowWizard").eq(0).text()) {
  191. if (!g_oCommon.compareFileVersion()) { //插件版本校验放后面,否则点下载这里又是false会和跳到主页面的操作冲突
  192. g_oCommon.updateTips();
  193. }
  194. $LAB
  195. .script("../script/wizard.js?version=" + global_config.web_version).wait(function () {
  196. g_oWizard.parseLocalCfg(xmlDocCfg);
  197. $("#wizardTip").modal();
  198. });
  199. } else if($.cookie("defaultChangeAsk") != "false" && "true" == $(oLoginXml).find('isDefaultPassword').eq(0).text()){
  200. g_oLogin.showChangePswd();
  201. return;
  202. } else {
  203. window.location.href = "main.asp";
  204. }
  205. } else if(bIsRiskPwd) {
  206. if(window.confirm(translator.translateNode(that._lxdLogin, 'riskPwdTips'))){
  207. $.cookie("page", "paramconfig.asp?&sub=userlist%4");
  208. window.location.href = "main.asp";
  209. } else {
  210. window.location.href = "main.asp";
  211. }
  212. } else {
  213. window.location.href = "main.asp";
  214. }
  215. },
  216. error: function (xhr, textStatus, errorThrown) {
  217. if(bIsRiskPwd) {
  218. if(window.confirm(translator.translateNode(that._lxdLogin, 'riskPwdTips'))){
  219. $.cookie("page", "paramconfig.asp?&sub=userlist%4");
  220. }
  221. }
  222. window.location.href = "main.asp";
  223. }
  224. });
  225. } else {
  226. if("Mac binding error" === $(xmlDoc).find("statusString").eq(0).text()) {
  227. alert(translator.translateNode(that._lxdLogin, "LoginTips6"));
  228. } else if("IP binding error" === $(xmlDoc).find("statusString").eq(0).text()){
  229. alert(translator.translateNode(that._lxdLogin, "LoginTips7"));
  230. } else {
  231. $("#loginUserName").focus();
  232. $("#loginUserName").val("");
  233. $("#loginPassword").val("");
  234. alert(translator.translateNode(that._lxdLogin, "LoginTips4"));
  235. }
  236. }
  237. },
  238. error: function(xhr, textStatus, errorThrown) {
  239. var $xmlDoc = $(xhr.responseXML);
  240. if ("timeout" == textStatus) {
  241. alert(translator.translateNode(that._lxdLogin, 'ConnectTimeoutTips'));
  242. } else if (401 === xhr.status) {
  243. if($xmlDoc.find("lockStatus").eq(0).text() === "lock") {
  244. var iLockTime = parseInt($xmlDoc.find("unlockTime").eq(0).text(), 10);
  245. var szLockTime = "";
  246. if (iLockTime < 60) {
  247. szLockTime = translator.translateNode(that._lxdLogin, 'optionSecond');
  248. } else {
  249. iLockTime = Math.ceil(iLockTime / 60);
  250. szLockTime = translator.translateNode(that._lxdLogin, 'laSecond');;
  251. }
  252. alert(translator.translateNode(that._lxdLogin, 'userLock').replace("%s", iLockTime).replace("%s", szLockTime)); //输入N次密码错误后,用户被锁定
  253. } else if($xmlDoc.find("lockStatus").eq(0).text() === "unlock") {
  254. alert(translator.translateNode(that._lxdLogin, 'loginLockError').replace("%s", $xmlDoc.find("retryLoginTime").eq(0).text()));
  255. } else {
  256. alert(translator.translateNode(that._lxdLogin, 'LoginTips4'));
  257. }
  258. if (!$('#loginUserName').prop("disabled")) {
  259. $('#loginUserName').focus();
  260. }
  261. $('#loginUserName').val('');
  262. $('#loginPassword').val('');
  263. } else {
  264. //alert(translator.translateNode(that._lxdLogin, 'NetworkErrorTips'));
  265. alert(g_oCommon.getNodeValue('NetworkErrorTips'));
  266. }
  267. }
  268. });
  269. },
  270. //语言切换函数
  271. changeFrameLanguage: function (lan) {
  272. if($.cookie("language") == "ja") { //如果原来是ja的,要把字体切换回Arial
  273. $("#lanJa").remove();
  274. }
  275. if(lan == "ja") {
  276. $(document.body).append('<style id="lanJa">*{font-family:"Meiryo", "Arial", "sans-serif";}</style>');
  277. }
  278. $.cookie("language", lan);
  279. this._lxdLogin = translator.getLanguageXmlDoc("Login", lan);
  280. var lxdMain = translator.getLanguageXmlDoc("Main", lan);
  281. translator.appendLanguageXmlDoc(this._lxdLogin, lxdMain);
  282. translator.translatePage(this._lxdLogin, document);
  283. document.title = translator.translateNode(this._lxdLogin, "lalogin");
  284. },
  285.  
  286. //显示提示密码登录框,绑定事件
  287. showChangePswd: function () {
  288. var that = this;
  289. $("#defPwsTip").html(g_oCommon.getNodeValue('laChangePswdTip'));
  290. $("#defaultUser").html(this.szDefaultUser);
  291. //如果设备返回默认密码,则询问是否需要修改默认密码
  292. $("#divChangePassword").modal();
  293. //取消这个绑定,以免回车点击再次发送登录命令
  294. $("body").unbind("keydown").bind("keydown", function(e){
  295. if(e.keyCode === 13) {
  296. that.doActive();
  297. }
  298. });
  299.  
  300. //链接到用户配置界面
  301. //$("#btnOK").unbind().bind("click", this.doActive);
  302.  
  303. },
  304. //激活设备
  305. doActive: function() {
  306. var iLength = 1024;
  307. if($("#newPassword").val() !== $("#newComfirmPassword").val()) {
  308. this.showErrorTips("passwordtips", g_oCommon.getNodeValue("jsPasswordDifferenceTips"), false);
  309. return;
  310. }
  311. if(g_oCommon.CheckPasswordComplexity($("#newPassword").val(), "passwordtips", this.szDefaultUser)) {
  312. if($.browser.msie && parseInt($.browser.version, 10) < 9) {
  313. iLength = 256;
  314. }
  315. Encryption.encryptPassword($("#newPassword").val(), iLength, this.activeDevice);
  316. }
  317. },
  318. onPswInput: function(szVal) {
  319. if(!szVal) {
  320. szVal = $("#newPassword").val();
  321. }
  322. $("#pwdblock,#wizardPwd").removeClass().addClass("inputRight");
  323. var oPswStrength = $(".userstrength:visible");
  324. var oPswStrengthTips = $("#strengthTips, #wizardstrengthTips");
  325. switch (g_oCommon.CheckPasswordComplexity(szVal, this.szDefaultUser)) {
  326. case 1: {
  327. oPswStrength.eq(0).css("backgroundColor", "#FC657E");
  328. oPswStrength.eq(1).css("backgroundColor", "");
  329. oPswStrength.eq(2).css("backgroundColor", "");
  330. oPswStrengthTips.html(g_oCommon.getNodeValue("weakPwd"));
  331. break;
  332. }
  333. case 2: {
  334. oPswStrength.eq(0).css("backgroundColor", "#FFC85D");
  335. oPswStrength.eq(1).css("backgroundColor", "#FFC85D");
  336. oPswStrength.eq(2).css("backgroundColor", "");
  337. oPswStrengthTips.html(g_oCommon.getNodeValue("normalPwd"));
  338. break;
  339. }
  340. case 3: {
  341. oPswStrength.eq(0).css("backgroundColor", "#65D25D");
  342. oPswStrength.eq(1).css("backgroundColor", "#65D25D");
  343. oPswStrength.eq(2).css("backgroundColor", "#65D25D");
  344. oPswStrengthTips.html(g_oCommon.getNodeValue("goodPwd"));
  345. break;
  346. }
  347. default: {
  348. oPswStrength.css("backgroundColor", "");
  349. oPswStrengthTips.html('');
  350. $("#pwdblock,#wizardPwd").removeClass().addClass("inputWrong");
  351. }
  352. }
  353. },
  354. activeDevice: function(szPwd) {
  355. var that = this;
  356. $.ajax({
  357. type: "PUT",
  358. url: g_oCommon.m_lHttp + g_oCommon.m_szHostName + ":" + g_oCommon.m_lHttpPort + "/ISAPI/System/activate",
  359. processData: false,
  360. data: g_oCommon.xmlToStr($(g_oCommon.parseXmlFromStr('<ActivateInfo><password></password></ActivateInfo>')).find("password").text(szPwd).parent().get(0)),
  361. success: function (xmlDoc, textStatus, xhr) {
  362. $("#loginUserName").val(g_oLogin.szDefaultUser);
  363. $("#loginPassword").val($("#newPassword").val());
  364. g_oLogin.doLogin();
  365. },
  366. error:function (xhr, textStatus, errorThrown) {
  367. g_oLogin.showErrorTips("passwordtips",g_oCommon.getNodeValue('NetworkErrorTips'), false);
  368. //alert(g_oCommon.getNodeValue('NetworkErrorTips'));
  369. }
  370. });
  371. },
  372. showErrorTips: function(szTipsId, szTipsStr) {
  373. if(typeof g_iShowErrorTipsTimer == "undefined") {
  374. g_iShowErrorTipsTimer = 0;
  375. }
  376. if (0 != g_iShowErrorTipsTimer) {
  377. $("#" + szTipsId).empty();
  378. clearTimeout(g_iShowErrorTipsTimer);
  379. g_iShowErrorTipsTimer = 0;
  380. }
  381. szTipsStr = "<img src='../images/config/tips.png' class='verticalmiddle'>&nbsp;" + szTipsStr;
  382. $("#" + szTipsId).html(szTipsStr);
  383.  
  384. //5秒后自动清除
  385. g_iShowErrorTipsTimer = setTimeout(function () {
  386. $("#" + szTipsId).html("");
  387. }, 5000);
  388. }
  389. }
  390.  
  391. var g_oLogin = new Login();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement