提取码管家

面向个人的网盘提取码管家

התקן את הסקריפט?
סקריפטים מומלצים של יוצר זה

אולי תאהב גם את 网盘助手.

התקן את הסקריפט
  1. // ==UserScript==
  2. // @name 提取码管家
  3. // @namespace http://go.newday.me/s/pwd-home
  4. // @version 0.1.1
  5. // @icon http://cdn.newday.me/addon/pwd/favicon.ico
  6. // @author 哩呵
  7. // @description 面向个人的网盘提取码管家
  8. // @match *://pan.baidu.com/*
  9. // @match *://yun.baidu.com/*
  10. // @match *://*.weiyun.com/*
  11. // @match *://*.lanzous.com/*
  12. // @match *://*.lanzoux.com/*
  13. // @match *://cloud.189.cn/*
  14. // @match *://*.newday.me/*
  15. // @match *://*.likestyle.cn/*
  16. // @connect newday.me
  17. // @connect likestyle.cn
  18. // @require https://cdn.staticfile.org/jquery/3.5.0/jquery.min.js
  19. // @require https://cdn.staticfile.org/dompurify/2.0.10/purify.min.js
  20. // @run-at document-start
  21. // @grant unsafeWindow
  22. // @grant GM_getValue
  23. // @grant GM_setValue
  24. // @grant GM_deleteValue
  25. // @grant GM_listValues
  26. // @grant GM_openInTab
  27. // @grant GM_notification
  28. // @grant GM_xmlhttpRequest
  29. // ==/UserScript==
  30.  
  31. (function () {
  32. 'use strict';
  33.  
  34. var manifest = {
  35. "name": "mpwd",
  36. "title": "提取码管家",
  37. "urls": {},
  38. "apis": {
  39. "version": "https://disk.newday.me/disk/pwd/version",
  40. "query": "https://disk.newday.me/disk/pwd/query",
  41. "store": "https://disk.newday.me/disk/pwd/store"
  42. },
  43. "logger_level": 3,
  44. "options_page": "http://go.newday.me/s/pwd-option"
  45. };
  46.  
  47. var container = (function () {
  48. var obj = {
  49. defines: {},
  50. modules: {}
  51. };
  52.  
  53. obj.define = function (name, requires, callback) {
  54. name = obj.processName(name);
  55. obj.defines[name] = {
  56. requires: requires,
  57. callback: callback
  58. };
  59. };
  60.  
  61. obj.require = function (name, cache) {
  62. if (typeof cache == "undefined") {
  63. cache = true;
  64. }
  65.  
  66. name = obj.processName(name);
  67. if (cache && obj.modules.hasOwnProperty(name)) {
  68. return obj.modules[name];
  69. } else if (obj.defines.hasOwnProperty(name)) {
  70. var requires = obj.defines[name].requires;
  71. var callback = obj.defines[name].callback;
  72.  
  73. var module = obj.use(requires, callback);
  74. cache && obj.register(name, module);
  75. return module;
  76. }
  77. };
  78.  
  79. obj.use = function (requires, callback) {
  80. var module = {
  81. exports: undefined
  82. };
  83. var params = obj.buildParams(requires, module);
  84. var result = callback.apply(this, params);
  85. if (typeof result != "undefined") {
  86. return result;
  87. } else {
  88. return module.exports;
  89. }
  90. };
  91.  
  92. obj.register = function (name, module) {
  93. name = obj.processName(name);
  94. obj.modules[name] = module;
  95. };
  96.  
  97. obj.buildParams = function (requires, module) {
  98. var params = [];
  99. requires.forEach(function (name) {
  100. params.push(obj.require(name));
  101. });
  102. params.push(obj.require);
  103. params.push(module.exports);
  104. params.push(module);
  105. return params;
  106. };
  107.  
  108. obj.processName = function (name) {
  109. return name.toLowerCase();
  110. };
  111.  
  112. return {
  113. define: obj.define,
  114. use: obj.use,
  115. register: obj.register,
  116. modules: obj.modules
  117. };
  118. })();
  119.  
  120. container.define("gm", [], function () {
  121. var obj = {};
  122.  
  123. obj.ready = function (callback) {
  124. if (typeof GM_getValue != "undefined") {
  125. callback && callback();
  126. }
  127. else {
  128. setTimeout(function () {
  129. obj.ready(callback);
  130. }, 100);
  131. }
  132. };
  133.  
  134. return obj;
  135. });
  136.  
  137. /** common **/
  138. container.define("gmDao", [], function () {
  139. var obj = {
  140. items: {}
  141. };
  142.  
  143. obj.get = function (name) {
  144. return GM_getValue(name);
  145. };
  146.  
  147. obj.getBatch = function (names) {
  148. var items = {};
  149. names.forEach(function (name) {
  150. items[name] = obj.get(name);
  151. });
  152. return items;
  153. };
  154.  
  155. obj.getAll = function () {
  156. return obj.getBatch(GM_listValues());
  157. };
  158.  
  159. obj.set = function (name, item) {
  160. GM_setValue(name, item);
  161. };
  162.  
  163. obj.setBatch = function (items) {
  164. for (var name in items) {
  165. obj.set(name, items[name]);
  166. }
  167. };
  168.  
  169. obj.setAll = function (items) {
  170. var names = GM_listValues();
  171. names.forEach(function (name) {
  172. if (!items.hasOwnProperty(name)) {
  173. obj.remove(name);
  174. }
  175. });
  176. obj.setBatch(items);
  177. };
  178.  
  179. obj.remove = function (name) {
  180. GM_deleteValue(name);
  181. };
  182.  
  183. obj.removeBatch = function (names) {
  184. names.forEach(function (name) {
  185. obj.remove(name);
  186. });
  187. };
  188.  
  189. obj.removeAll = function () {
  190. obj.removeBatch(GM_listValues());
  191. };
  192.  
  193. return obj;
  194. });
  195.  
  196. container.define("ScopeDao", [], function () {
  197. return function (dao, scope) {
  198. var obj = {
  199. items: {}
  200. };
  201.  
  202. obj.get = function (name) {
  203. return obj.items[name];
  204. };
  205.  
  206. obj.getBatch = function (names) {
  207. var items = {};
  208. names.forEach(function (name) {
  209. if (obj.items.hasOwnProperty(name)) {
  210. items[name] = obj.items[name];
  211. }
  212. });
  213. return items;
  214. };
  215.  
  216. obj.getAll = function () {
  217. return obj.items;
  218. };
  219.  
  220. obj.set = function (name, item) {
  221. obj.items[name] = item;
  222.  
  223. obj.sync();
  224. };
  225.  
  226. obj.setBatch = function (items) {
  227. obj.items = Object.assign(obj.items, items);
  228.  
  229. obj.sync();
  230. };
  231.  
  232. obj.setAll = function (items) {
  233. obj.items = Object.assign({}, items);
  234.  
  235. obj.sync();
  236. };
  237.  
  238. obj.remove = function (name) {
  239. delete obj.items[name];
  240.  
  241. obj.sync();
  242. };
  243.  
  244. obj.removeBatch = function (names) {
  245. names.forEach(function (name) {
  246. delete obj.items[name];
  247. });
  248.  
  249. obj.sync();
  250. };
  251.  
  252. obj.removeAll = function () {
  253. obj.items = {};
  254.  
  255. obj.getDao().remove(obj.getScope());
  256. };
  257.  
  258. obj.init = function () {
  259. var items = obj.getDao().get(obj.getScope());
  260. if (items instanceof Object) {
  261. obj.items = items;
  262. }
  263. };
  264.  
  265. obj.sync = function () {
  266. obj.getDao().set(obj.getScope(), obj.items);
  267. };
  268.  
  269. obj.getDao = function () {
  270. return dao;
  271. };
  272.  
  273. obj.getScope = function () {
  274. return scope;
  275. };
  276.  
  277. return obj.init(), obj;
  278. };
  279. });
  280.  
  281. container.define("config", ["factory"], function (factory) {
  282. var obj = {};
  283.  
  284. obj.getConfig = function (name) {
  285. return obj.getDao().get(name);
  286. };
  287.  
  288. obj.setConfig = function (name, value) {
  289. obj.getDao().set(name, value);
  290. };
  291.  
  292. obj.getAll = function () {
  293. return obj.getDao().getAll();
  294. };
  295.  
  296. obj.getDao = function () {
  297. return factory.getConfigDao();
  298. };
  299.  
  300. return obj;
  301. });
  302.  
  303. container.define("storage", ["factory"], function (factory) {
  304. var obj = {};
  305.  
  306. obj.getValue = function (name) {
  307. return obj.getDao().get(name);
  308. };
  309.  
  310. obj.setValue = function (name, value) {
  311. obj.getDao().set(name, value);
  312. };
  313.  
  314. obj.getAll = function () {
  315. return obj.getDao().getAll();
  316. };
  317.  
  318. obj.getDao = function () {
  319. return factory.getStorageDao();
  320. };
  321.  
  322. return obj;
  323. });
  324.  
  325. container.define("option", ["config", "constant"], function (config, constant) {
  326. var obj = {
  327. name: "option",
  328. constant: constant.option
  329. };
  330.  
  331. obj.isOptionActive = function (item) {
  332. var name = item.name;
  333. var option = obj.getOption();
  334. return option.indexOf(name) >= 0 ? true : false;
  335. };
  336.  
  337. obj.setOptionActive = function (item) {
  338. var name = item.name;
  339. var option = obj.getOption();
  340. if (option.indexOf(name) < 0) {
  341. option.push(name);
  342. obj.setOption(option);
  343. }
  344. };
  345.  
  346. obj.setOptionUnActive = function (item) {
  347. var name = item.name;
  348. var option = obj.getOption();
  349. var index = option.indexOf(name);
  350. if (index >= 0) {
  351. delete option[index];
  352. obj.setOption(option);
  353. }
  354. };
  355.  
  356. obj.getOption = function () {
  357. var option = [];
  358. var optionList = obj.getOptionList();
  359. Object.values(obj.constant).forEach(function (item) {
  360. var name = item.name;
  361. if (optionList.hasOwnProperty(name)) {
  362. if (optionList[name] != "no") {
  363. option.push(name);
  364. }
  365. }
  366. else if (item.value != "no") {
  367. option.push(name);
  368. }
  369. });
  370. return option;
  371. };
  372.  
  373. obj.setOption = function (option) {
  374. var optionList = {};
  375. Object.values(obj.constant).forEach(function (item) {
  376. var name = item.name;
  377. if (option.indexOf(name) >= 0) {
  378. optionList[name] = "yes";
  379. } else {
  380. optionList[name] = "no";
  381. }
  382. });
  383. obj.setOptionList(optionList);
  384. };
  385.  
  386. obj.getOptionList = function () {
  387. var optionList = config.getConfig(obj.name);
  388. return optionList ? optionList : {};
  389. };
  390.  
  391. obj.setOptionList = function (optionList) {
  392. config.setConfig(obj.name, optionList);
  393. };
  394.  
  395. return obj;
  396. });
  397.  
  398. container.define("manifest", [], function () {
  399. var obj = {
  400. manifest: manifest
  401. };
  402.  
  403. obj.getItem = function (name) {
  404. return obj.manifest[name];
  405. };
  406.  
  407. obj.getManifest = function () {
  408. return obj.manifest;
  409. };
  410.  
  411. obj.getName = function () {
  412. return obj.getItem("name");
  413. };
  414.  
  415. obj.getTitle = function () {
  416. return obj.getItem("title");
  417. };
  418.  
  419. obj.getUrl = function (name) {
  420. var urls = obj.getItem("urls");
  421. (urls instanceof Object) || (urls = {});
  422. return urls[name];
  423. };
  424.  
  425. obj.getApi = function (name) {
  426. var apis = obj.getItem("apis");
  427. (apis instanceof Object) || (apis = {});
  428. return apis[name];
  429. };
  430.  
  431. obj.getOptionsPage = function () {
  432. if (GM_info.script.optionUrl) {
  433. return GM_info.script.optionUrl;
  434. }
  435. else {
  436. return obj.getItem("options_page");
  437. }
  438. };
  439.  
  440. return obj;
  441. });
  442.  
  443. container.define("env", ["config", "manifest"], function (config, manifest) {
  444. var obj = {
  445. modes: {
  446. ADDON: "addon",
  447. SCRIPT: "script"
  448. },
  449. browsers: {
  450. FIREFOX: "firefox",
  451. EDG: "edg",
  452. EDGE: "edge",
  453. BAIDU: "baidu",
  454. LIEBAO: "liebao",
  455. UC: "uc",
  456. QQ: "qq",
  457. SOGOU: "sogou",
  458. OPERA: "opera",
  459. MAXTHON: "maxthon",
  460. IE2345: "2345",
  461. SE360: "360",
  462. CHROME: "chrome",
  463. SAFIRI: "safari",
  464. OTHER: "other"
  465. }
  466. };
  467.  
  468. obj.getName = function () {
  469. return manifest.getName();
  470. };
  471.  
  472. obj.getMode = function () {
  473. if (GM_info.mode) {
  474. return GM_info.mode;
  475. }
  476. else {
  477. return obj.modes.SCRIPT;
  478. }
  479. };
  480.  
  481. obj.getAid = function () {
  482. if (GM_info.scriptHandler) {
  483. return GM_info.scriptHandler.toLowerCase();
  484. }
  485. else {
  486. return "unknown";
  487. }
  488. };
  489.  
  490. obj.getUid = function () {
  491. var uid = config.getConfig("uid");
  492. if (!uid) {
  493. uid = obj.randString(32);
  494. config.setConfig("uid", uid);
  495. }
  496. return uid;
  497. };
  498.  
  499. obj.getBrowser = function () {
  500. if (!obj._browser) {
  501. obj._browser = obj.matchBrowserType(navigator.userAgent);
  502. }
  503. return obj._browser;
  504. };
  505.  
  506. obj.getVersion = function () {
  507. return GM_info.script.version;
  508. };
  509.  
  510. obj.getEdition = function () {
  511. return GM_info.version;
  512. };
  513.  
  514. obj.getInfo = function () {
  515. return {
  516. mode: obj.getMode(),
  517. aid: obj.getAid(),
  518. uid: obj.getUid(),
  519. browser: obj.getBrowser(),
  520. version: obj.getVersion(),
  521. edition: obj.getEdition()
  522. };
  523. };
  524.  
  525. obj.matchBrowserType = function (userAgent) {
  526. var browser = obj.browsers.OTHER;
  527. userAgent = userAgent.toLowerCase();
  528. if (userAgent.match(/firefox/) != null) {
  529. browser = obj.browsers.FIREFOX;
  530. } else if (userAgent.match(/edge/) != null) {
  531. browser = obj.browsers.EDGE;
  532. } else if (userAgent.match(/edg/) != null) {
  533. browser = obj.browsers.EDG;
  534. } else if (userAgent.match(/bidubrowser/) != null) {
  535. browser = obj.browsers.BAIDU;
  536. } else if (userAgent.match(/lbbrowser/) != null) {
  537. browser = obj.browsers.LIEBAO;
  538. } else if (userAgent.match(/ubrowser/) != null) {
  539. browser = obj.browsers.UC;
  540. } else if (userAgent.match(/qqbrowse/) != null) {
  541. browser = obj.browsers.QQ;
  542. } else if (userAgent.match(/metasr/) != null) {
  543. browser = obj.browsers.SOGOU;
  544. } else if (userAgent.match(/opr/) != null) {
  545. browser = obj.browsers.OPERA;
  546. } else if (userAgent.match(/maxthon/) != null) {
  547. browser = obj.browsers.MAXTHON;
  548. } else if (userAgent.match(/2345explorer/) != null) {
  549. browser = obj.browsers.IE2345;
  550. } else if (userAgent.match(/chrome/) != null) {
  551. if (navigator.mimeTypes.length > 10) {
  552. browser = obj.browsers.SE360;
  553. } else {
  554. browser = obj.browsers.CHROME;
  555. }
  556. } else if (userAgent.match(/safari/) != null) {
  557. browser = obj.browsers.SAFIRI;
  558. }
  559. return browser;
  560. };
  561.  
  562. obj.randString = function (length) {
  563. var possible = "abcdefghijklmnopqrstuvwxyz0123456789";
  564. var text = "";
  565. for (var i = 0; i < length; i++) {
  566. text += possible.charAt(Math.floor(Math.random() * possible.length));
  567. }
  568. return text;
  569. };
  570.  
  571. return obj;
  572. });
  573.  
  574. container.define("http", [], function () {
  575. var obj = {};
  576.  
  577. obj.ajax = function (option) {
  578. var details = {
  579. method: option.type,
  580. url: option.url,
  581. responseType: option.dataType,
  582. onload: function (result) {
  583. if (!result.status || parseInt(result.status / 100) == 2) {
  584. option.success && option.success(result.response);
  585. }
  586. else {
  587. option.error && option.error("");
  588. }
  589. },
  590. onerror: function (result) {
  591. option.error && option.error(result.error);
  592. }
  593. };
  594.  
  595. // 提交数据
  596. if (option.data instanceof Object) {
  597. if (option.data instanceof FormData) {
  598. details.data = option.data;
  599. }
  600. else {
  601. var formData = new FormData();
  602. for (var i in option.data) {
  603. formData.append(i, option.data[i]);
  604. }
  605. details.data = formData;
  606. }
  607. }
  608.  
  609. // 自定义头
  610. if (option.headers) {
  611. details.headers = option.headers;
  612. }
  613.  
  614. // 超时
  615. if (option.timeout) {
  616. details.timeout = option.timeout;
  617. }
  618.  
  619. GM_xmlhttpRequest(details);
  620. };
  621.  
  622. return obj;
  623. });
  624.  
  625. container.define("notify", [], function () {
  626. var obj = {};
  627.  
  628. obj.showNotify = function (text, title, image, onclick) {
  629. GM_notification(text, title, image, onclick);
  630. };
  631.  
  632. return obj;
  633. });
  634.  
  635. container.define("router", [], function () {
  636. var obj = {};
  637.  
  638. obj.getUrl = function () {
  639. return location.href;
  640. };
  641.  
  642. obj.goUrl = function (url) {
  643. location.href = url;
  644. };
  645.  
  646. obj.openUrl = function (url) {
  647. window.open(url);
  648. };
  649.  
  650. obj.openTab = function (url, active) {
  651. GM_openInTab(url, !active);
  652. };
  653.  
  654. obj.jumpLink = function (jumpUrl, jumpMode) {
  655. switch (jumpMode) {
  656. case 9:
  657. // self
  658. obj.goUrl(jumpUrl);
  659. break;
  660. case 6:
  661. // new
  662. obj.openUrl(jumpUrl);
  663. break;
  664. case 3:
  665. // new & not active
  666. obj.openTab(jumpUrl, false);
  667. break;
  668. case 1:
  669. // new & active
  670. obj.openTab(jumpUrl, true);
  671. break;
  672. }
  673. };
  674.  
  675. obj.getUrlParam = function (name) {
  676. var param = obj.parseUrlParam(obj.getUrl());
  677. if (name) {
  678. return param.hasOwnProperty(name) ? param[name] : null;
  679. }
  680. else {
  681. return param;
  682. }
  683. };
  684.  
  685. obj.parseUrlParam = function (url) {
  686. if (url.indexOf("?")) {
  687. url = url.split("?")[1];
  688. }
  689. var reg = /([^=&\s]+)[=\s]*([^=&\s]*)/g;
  690. var obj = {};
  691. while (reg.exec(url)) {
  692. obj[RegExp.$1] = RegExp.$2;
  693. }
  694. return obj;
  695. };
  696.  
  697. return obj;
  698. });
  699.  
  700. container.define("logger", ["env", "manifest"], function (env, manifest) {
  701. var obj = {
  702. constant: {
  703. DEBUG: 0,
  704. INFO: 1,
  705. WARN: 2,
  706. ERROR: 3,
  707. NONE: 4
  708. }
  709. };
  710.  
  711. obj.debug = function (message) {
  712. obj.log(message, obj.constant.DEBUG);
  713. };
  714.  
  715. obj.info = function (message) {
  716. obj.log(message, obj.constant.INFO);
  717. };
  718.  
  719. obj.warn = function (message) {
  720. obj.log(message, obj.constant.WARN);
  721. };
  722.  
  723. obj.error = function (message) {
  724. obj.log(message, obj.constant.ERROR);
  725. };
  726.  
  727. obj.log = function (message, level) {
  728. if (level < manifest.getItem("logger_level")) {
  729. return false;
  730. }
  731.  
  732. console.group("[" + env.getName() + "]" + env.getMode());
  733. console.log(message);
  734. console.groupEnd();
  735. };
  736.  
  737. return obj;
  738. });
  739.  
  740. container.define("meta", ["env", "$"], function (env, $) {
  741. var obj = {};
  742.  
  743. obj.existMeta = function (name) {
  744. name = obj.processName(name);
  745. if ($("meta[name='" + name + "']").length) {
  746. return true;
  747. }
  748. else {
  749. return false;
  750. }
  751. };
  752.  
  753. obj.appendMeta = function (name, content) {
  754. name = obj.processName(name);
  755. content || (content = "on");
  756. $('<meta name="' + name + '" content="on">').appendTo($("head"));
  757. };
  758.  
  759. obj.processName = function (name) {
  760. return env.getName() + "::" + name;
  761. };
  762.  
  763. return obj;
  764. });
  765.  
  766. container.define("unsafeWindow", [], function () {
  767. if (typeof unsafeWindow == "undefined") {
  768. return window;
  769. }
  770. else {
  771. return unsafeWindow;
  772. }
  773. });
  774.  
  775. container.define("calendar", [], function () {
  776. var obj = {};
  777.  
  778. obj.getTime = function () {
  779. return (new Date()).getTime();
  780. };
  781.  
  782. obj.formatTime = function (format, timestamp) {
  783. format || (format = "Y-m-d H:i:s");
  784. timestamp || (timestamp = obj.getTime());
  785. var date = new Date(timestamp);
  786. var year = 1900 + date.getYear();
  787. var month = "0" + (date.getMonth() + 1);
  788. var day = "0" + date.getDate();
  789. var hour = "0" + date.getHours();
  790. var minute = "0" + date.getMinutes();
  791. var second = "0" + date.getSeconds();
  792. var vars = {
  793. "Y": year,
  794. "m": month.substring(month.length - 2, month.length),
  795. "d": day.substring(day.length - 2, day.length),
  796. "H": hour.substring(hour.length - 2, hour.length),
  797. "i": minute.substring(minute.length - 2, minute.length),
  798. "s": second.substring(second.length - 2, second.length)
  799. };
  800. return obj.replaceVars(vars, format);
  801. };
  802.  
  803. obj.replaceVars = function (vars, value) {
  804. Object.keys(vars).forEach(function (key) {
  805. value = value.replace(key, vars[key]);
  806. });
  807. return value;
  808. };
  809.  
  810. return obj;
  811. });
  812.  
  813. container.define("oneData", ["env", "http"], function (env, http) {
  814. var obj = {};
  815.  
  816. obj.requestOneApi = function (url, data, callback) {
  817. http.ajax({
  818. type: "post",
  819. url: url,
  820. dataType: "json",
  821. data: Object.assign(env.getInfo(), data),
  822. success: function (response) {
  823. callback && callback(response);
  824. },
  825. error: function () {
  826. callback && callback("");
  827. }
  828. });
  829. };
  830.  
  831. return obj;
  832. });
  833.  
  834. container.define("$extend", ["$", "DOMPurify", "logger"], function ($, DOMPurify, logger) {
  835. var obj = {};
  836.  
  837. obj.init = function () {
  838. if (DOMPurify && DOMPurify instanceof Function) {
  839. var domPurify = DOMPurify(window);
  840. $.fn.safeHtml = function (html) {
  841. try {
  842. this.html(domPurify.sanitize(html));
  843. }
  844. catch (err) {
  845. logger.error(err);
  846. }
  847. };
  848. }
  849. else {
  850. $.fn.safeHtml = function (html) {
  851. this.html(html);
  852. };
  853. }
  854. };
  855.  
  856. return obj.init(), obj;
  857. });
  858.  
  859. container.define("appRunner", ["router", "logger", "meta", "$"], function (router, logger, meta, $, require) {
  860. var obj = {};
  861.  
  862. obj.run = function (appList) {
  863. var metaName = "status";
  864. if (meta.existMeta(metaName)) {
  865. logger.info("setup already");
  866. }
  867. else {
  868. // 添加meta
  869. meta.appendMeta(metaName);
  870.  
  871. // 运行应用
  872. $(function () {
  873. obj.runAppList(appList);
  874. });
  875. }
  876. };
  877.  
  878. obj.runAppList = function (appList) {
  879. var url = router.getUrl();
  880. for (var i in appList) {
  881. var app = appList[i];
  882.  
  883. var match = obj.matchApp(url, app);
  884. if (match == false) {
  885. continue;
  886. }
  887.  
  888. if (require(app.name).run() == true) {
  889. break;
  890. }
  891. }
  892. };
  893.  
  894. obj.matchApp = function (url, app) {
  895. var match = false;
  896. app.matchs.forEach(function (item) {
  897. if (url.indexOf(item) > 0 || item == "*") {
  898. match = true;
  899. }
  900. });
  901. return match;
  902. };
  903.  
  904. return obj;
  905. });
  906.  
  907. /** custom **/
  908. container.define("factory", ["gmDao", "ScopeDao"], function (gmDao, ScopeDao) {
  909. var obj = {
  910. daos: {}
  911. };
  912.  
  913. obj.getConfigDao = function () {
  914. return obj.getDao("config", function () {
  915. return ScopeDao(gmDao, "$config");
  916. });
  917. };
  918.  
  919. obj.getStorageDao = function () {
  920. return obj.getDao("storage", function () {
  921. return ScopeDao(gmDao, "$storage");
  922. });
  923. };
  924.  
  925. obj.getDao = function (key, createFunc) {
  926. if (!obj.daos.hasOwnProperty(key)) {
  927. obj.daos[key] = createFunc();
  928. }
  929. return obj.daos[key];
  930. };
  931.  
  932. return obj;
  933. });
  934.  
  935. container.define("constant", [], function () {
  936. return {
  937. source: {
  938. baidu: "baidu",
  939. weiyun: "weiyun",
  940. lanzous: "lanzous",
  941. ty189: "ty189"
  942. },
  943. option: {
  944. baidu_page_verify: {
  945. name: "baidu_page_verify",
  946. value: "yes"
  947. },
  948. baidu_share_status: {
  949. name: "baidu_share_status",
  950. value: "yes"
  951. },
  952. weiyun_page_verify: {
  953. name: "weiyun_page_verify",
  954. value: "yes"
  955. },
  956. weiyun_share_status: {
  957. name: "weiyun_share_status",
  958. value: "yes"
  959. },
  960. lanzous_page_verify: {
  961. name: "lanzous_page_verify",
  962. value: "yes"
  963. },
  964. lanzous_share_status: {
  965. name: "lanzous_share_status",
  966. value: "yes"
  967. },
  968. ty189_page_verify: {
  969. name: "189_page_verify",
  970. value: "yes"
  971. },
  972. ty189_share_status: {
  973. name: "189_share_status",
  974. value: "yes"
  975. }
  976. }
  977. };
  978. });
  979.  
  980. container.define("setting", ["config"], function (config) {
  981. var obj = {};
  982.  
  983. obj.getAccessToken = function () {
  984. return config.getConfig("access_token");
  985. };
  986.  
  987. obj.setAccessToken = function (accessToken) {
  988. config.setConfig("access_token", accessToken);
  989. };
  990.  
  991. obj.getNotifyStatus = function () {
  992. var notifyStatus = config.getConfig("notify_status");
  993. if (!notifyStatus) {
  994. notifyStatus = "success";
  995. }
  996. return notifyStatus;
  997. };
  998.  
  999. obj.setNotifyStatus = function (notifyStatus) {
  1000. config.setConfig("notify_status", notifyStatus);
  1001. };
  1002.  
  1003. obj.showNotifySuccess = function () {
  1004. if (obj.getNotifyStatus() == "all" || obj.getNotifyStatus() == "success") {
  1005. return true;
  1006. }
  1007. else {
  1008. return false;
  1009. }
  1010. };
  1011.  
  1012. obj.showNotifyFail = function () {
  1013. if (obj.getNotifyStatus() == "all" || obj.getNotifyStatus() == "fail") {
  1014. return true;
  1015. }
  1016. else {
  1017. return false;
  1018. }
  1019. };
  1020.  
  1021. return obj;
  1022. });
  1023.  
  1024. container.define("api", ["manifest", "setting", "oneData"], function (manifest, setting, oneData) {
  1025. var obj = {};
  1026.  
  1027. obj.versionQuery = function (callback) {
  1028. oneData.requestOneApi(manifest.getApi("version"), {}, callback);
  1029. };
  1030.  
  1031. obj.querySharePwd = function (shareSource, shareId, shareLink, callback) {
  1032. var data = {
  1033. access_token: setting.getAccessToken(),
  1034. share_id: shareId,
  1035. share_source: shareSource,
  1036. share_link: shareLink
  1037. };
  1038. oneData.requestOneApi(manifest.getApi("query"), data, callback);
  1039. };
  1040.  
  1041. obj.storeSharePwd = function (shareSource, shareId, sharePwd, shareLink, callback) {
  1042. var data = {
  1043. access_token: setting.getAccessToken(),
  1044. share_id: shareId,
  1045. share_pwd: sharePwd,
  1046. share_source: shareSource,
  1047. share_link: shareLink
  1048. };
  1049. oneData.requestOneApi(manifest.getApi("store"), data, callback);
  1050. };
  1051.  
  1052. return obj;
  1053. });
  1054.  
  1055. container.define("runtime", ["router", "manifest", "notify", "calendar", "storage", "api"], function (router, manifest, notify, calendar, storage, api) {
  1056. var obj = {};
  1057.  
  1058. obj.optionNotify = function () {
  1059. notify.showNotify("点击去设置令牌...", null, null, function () {
  1060. obj.openOptionsPage();
  1061. });
  1062. };
  1063.  
  1064. obj.openOptionsPage = function () {
  1065. router.openTab(manifest.getOptionsPage(), true);
  1066. };
  1067.  
  1068. obj.initVersion = function () {
  1069. var versionDate = parseInt(storage.getValue("version_date"));
  1070. var currentDate = calendar.formatTime("Ymd");
  1071. if (!versionDate || versionDate < currentDate) {
  1072. api.versionQuery(function (response) {
  1073. storage.setValue("version_date", currentDate);
  1074.  
  1075. if (response && response.code == 1 && response.data instanceof Object) {
  1076. var versionPayload = response.data;
  1077. storage.setValue("version_payload", versionPayload);
  1078. storage.setValue("version_latest", versionPayload.version);
  1079. }
  1080. });
  1081. }
  1082. };
  1083.  
  1084. obj.initRuntime = function () {
  1085. obj.initVersion();
  1086. };
  1087.  
  1088. return obj;
  1089. });
  1090.  
  1091. container.define("core", ["runtime", "$extend"], function (runtime) {
  1092. var obj = {};
  1093.  
  1094. obj.ready = function (callback) {
  1095. runtime.initRuntime();
  1096.  
  1097. callback && callback();
  1098. };
  1099.  
  1100. return obj;
  1101. });
  1102.  
  1103. /** app **/
  1104. container.define("app_baidu", ["manifest", "router", "option", "logger", "unsafeWindow", "constant", "setting", "runtime", "api", "$"], function (manifest, router, option, logger, unsafeWindow, constant, setting, runtime, api, $) {
  1105. var obj = {
  1106. verify_page: {
  1107. share_pwd: null,
  1108. setPwd: null,
  1109. backupPwd: null,
  1110. restorePwd: null,
  1111. submit_pwd: null
  1112. }
  1113. };
  1114.  
  1115. obj.run = function () {
  1116. var url = router.getUrl();
  1117. if (url.indexOf(".baidu.com/share/init") > 0) {
  1118. option.isOptionActive(option.constant.baidu_page_verify) && obj.initVerifyPage();
  1119. return true;
  1120. }
  1121. else {
  1122. return false;
  1123. }
  1124. };
  1125.  
  1126. obj.getShareId = function () {
  1127. var url = obj.getShareLink();
  1128. var match = url.match(/share\/init\?surl=([a-z0-9-_]+)/i);
  1129. return match ? match[1] : null;
  1130. };
  1131.  
  1132. obj.getShareLink = function () {
  1133. return router.getUrl();
  1134. };
  1135.  
  1136. obj.initVerifyPage = function () {
  1137. obj.registerStoreSharePwd();
  1138.  
  1139. if (obj.initVerifyPageElement()) {
  1140. obj.autoPaddingSharePwd();
  1141. }
  1142. };
  1143.  
  1144. obj.initVerifyPageElement = function () {
  1145. var shareId = obj.getShareId();
  1146. var $pwd = $(".input-area input");
  1147. if (shareId && $pwd.length) {
  1148. // 设置提取码
  1149. obj.verify_page.setPwd = function (pwd) {
  1150. $pwd.val(pwd);
  1151. };
  1152.  
  1153. // 备份提取码
  1154. obj.verify_page.backupPwd = function (pwd) {
  1155. $pwd.attr("data-pwd", pwd);
  1156. };
  1157.  
  1158. // 还原提取码
  1159. obj.verify_page.restorePwd = function () {
  1160. $pwd.val($pwd.attr("data-pwd"));
  1161. };
  1162.  
  1163. // 提交提取码
  1164. var $button = $(".input-area .g-button");
  1165. if ($button.length) {
  1166. obj.verify_page.submit_pwd = function () {
  1167. $button.click();
  1168. };
  1169. }
  1170.  
  1171. return true;
  1172. }
  1173. else {
  1174. return false;
  1175. }
  1176. };
  1177.  
  1178. obj.autoPaddingSharePwd = function () {
  1179. var shareId = obj.getShareId();
  1180. var shareLink = obj.getShareLink();
  1181. api.querySharePwd(constant.source.baidu, shareId, shareLink, function (response) {
  1182. if (response instanceof Object) {
  1183. if (response.code == 1) {
  1184. var sharePwd = response.data.share_pwd;
  1185. obj.verify_page.share_pwd = sharePwd;
  1186. obj.verify_page.setPwd(sharePwd);
  1187. setting.showNotifySuccess() && obj.showTipSuccess("[" + manifest.getTitle() + "] 填充提取码成功");
  1188. }
  1189. else if (response.code == -22) {
  1190. runtime.optionNotify();
  1191. }
  1192. else {
  1193. setting.showNotifyFail() && obj.showTipError("[" + manifest.getTitle() + "] 未查询到提取码");
  1194. }
  1195. }
  1196. });
  1197. };
  1198.  
  1199. obj.registerStoreSharePwd = function () {
  1200. obj.getJquery()(document).ajaxComplete(function (event, xhr, options) {
  1201. var requestUrl = options.url;
  1202. if (requestUrl.indexOf("/share/verify") >= 0) {
  1203. var match = options.data.match(/pwd=([a-z0-9]+)/i);
  1204. if (!match) {
  1205. return logger.warn("pwd share not match");
  1206. }
  1207.  
  1208. // 拒绝*号
  1209. if (obj.verify_page.backupPwd) {
  1210. obj.verify_page.backupPwd(match[1]);
  1211. setTimeout(obj.verify_page.restorePwd, 500);
  1212. }
  1213.  
  1214. var response = xhr.responseJSON;
  1215. if (!(response && response.errno == 0)) {
  1216. return logger.warn("pwd share error");
  1217. }
  1218.  
  1219. var sharePwd = match[1];
  1220. if (sharePwd == obj.verify_page.share_pwd) {
  1221. return logger.warn("pwd share not change");
  1222. }
  1223.  
  1224. if (!option.isOptionActive(option.constant.baidu_share_status)) {
  1225. return logger.warn("pwd share closed");
  1226. }
  1227.  
  1228. var shareId = obj.getShareId();
  1229. var shareLink = obj.getShareLink();
  1230. api.storeSharePwd(constant.source.baidu, shareId, sharePwd, shareLink);
  1231. }
  1232. });
  1233. };
  1234.  
  1235. obj.showTipSuccess = function (msg, hasClose, autoClose) {
  1236. obj.showTip("success", msg, hasClose, autoClose);
  1237. };
  1238.  
  1239. obj.showTipError = function (msg, hasClose, autoClose) {
  1240. obj.showTip("failure", msg, hasClose, autoClose);
  1241. };
  1242.  
  1243. obj.showTipLoading = function (msg, hasClose, autoClose) {
  1244. obj.showTip("loading", msg, hasClose, autoClose);
  1245. };
  1246.  
  1247. obj.showTip = function (mode, msg, hasClose, autoClose) {
  1248. var option = {
  1249. mode: mode,
  1250. msg: msg
  1251. };
  1252.  
  1253. // 关闭按钮
  1254. if (typeof hasClose != "undefined") {
  1255. option.hasClose = hasClose;
  1256. }
  1257.  
  1258. // 自动关闭
  1259. if (typeof autoClose != "undefined") {
  1260. option.autoClose = autoClose;
  1261. }
  1262.  
  1263. obj.require("system-core:system/uiService/tip/tip.js").show(option);
  1264. };
  1265.  
  1266. obj.hideTip = function () {
  1267. obj.require("system-core:system/uiService/tip/tip.js").hide({
  1268. hideTipsAnimationFlag: 1
  1269. });
  1270. };
  1271.  
  1272. obj.getJquery = function () {
  1273. return obj.require("base:widget/libs/jquerypacket.js");
  1274. };
  1275.  
  1276. obj.require = function (name) {
  1277. return unsafeWindow.require(name);
  1278. };
  1279.  
  1280. return obj;
  1281. });
  1282.  
  1283. container.define("app_weiyun", ["manifest", "router", "option", "logger", "unsafeWindow", "constant", "setting", "runtime", "api", "$"], function (manifest, router, option, logger, unsafeWindow, constant, setting, runtime, api, $) {
  1284. var obj = {
  1285. modules: {},
  1286. webpack_require: null,
  1287. verify_page: {
  1288. setPwd: null,
  1289. share_pwd: null
  1290. }
  1291. };
  1292.  
  1293. obj.run = function () {
  1294. var url = router.getUrl();
  1295. if (url.indexOf("share.weiyun.com") > 0) {
  1296. option.isOptionActive(option.constant.weiyun_page_verify) && obj.initVerifyPage();
  1297. return true;
  1298. }
  1299. else {
  1300. return false;
  1301. }
  1302. };
  1303.  
  1304. obj.getShareId = function () {
  1305. var url = obj.getShareLink();
  1306. var match = url.match(/share.weiyun.com\/([0-9a-z]+)/i);
  1307. return match ? match[1] : null;
  1308. };
  1309.  
  1310. obj.getShareLink = function () {
  1311. return router.getUrl();
  1312. };
  1313.  
  1314. obj.initVerifyPage = function () {
  1315. obj.initWebpackRequire();
  1316.  
  1317. obj.registerStoreSharePwd();
  1318.  
  1319. obj.initVerifyPageElement(function () {
  1320. obj.autoPaddingSharePwd();
  1321. });
  1322. };
  1323.  
  1324. obj.initVerifyPageElement = function (callback) {
  1325. var shareId = obj.getShareId();
  1326. var $pwd = $(".card-inner .input-txt");
  1327. var $button = $(".card-inner .btn-main");
  1328. if (shareId && $pwd.length && $button.length) {
  1329.  
  1330. // 设置分享密码
  1331. obj.verify_page.setPwd = function (pwd) {
  1332. $pwd.val(pwd);
  1333. };
  1334.  
  1335. // 重造按钮
  1336. var $itemButton = $button.parent();
  1337. $itemButton.safeHtml($button.prop("outerHTML"));
  1338. $button = $itemButton.find(".btn-main");
  1339.  
  1340. // 按钮事件
  1341. $button.on("click", function () {
  1342. obj.getStore() && obj.getStore().dispatch("shareInfo/loadShareInfoWithoutLogin", $pwd.val());
  1343. });
  1344.  
  1345. callback && callback();
  1346. }
  1347. else {
  1348. setTimeout(function () {
  1349. obj.initVerifyPageElement(callback);
  1350. }, 500);
  1351. }
  1352. };
  1353.  
  1354. obj.autoPaddingSharePwd = function () {
  1355. var shareId = obj.getShareId();
  1356. var shareLink = obj.getShareLink();
  1357. api.querySharePwd(constant.source.weiyun, shareId, shareLink, function (response) {
  1358. if (response instanceof Object) {
  1359. if (response.code == 1) {
  1360. var sharePwd = response.data.share_pwd;
  1361. obj.verify_page.share_pwd = sharePwd;
  1362. obj.verify_page.setPwd(sharePwd);
  1363. setting.showNotifySuccess() && obj.showTipSuccess("[" + manifest.getTitle() + "] 填充密码成功");
  1364. }
  1365. else if (response.code == -22) {
  1366. runtime.optionNotify();
  1367. }
  1368. else {
  1369. setting.showNotifyFail() && obj.showTipError("[" + manifest.getTitle() + "] 未查询到密码");
  1370. }
  1371. }
  1372. });
  1373. };
  1374.  
  1375. obj.registerStoreSharePwd = function () {
  1376. obj.addResponseInterceptor(function (request, response) {
  1377. var requestUrl = request.responseURL;
  1378. if (requestUrl.indexOf("weiyunShareNoLogin/WeiyunShareView") > 0) {
  1379. if (response.data.data.rsp_header.retcode == 0) {
  1380. var match = response.config.data.match(/\\"share_pwd\\":\\"([\w]+)\\"/);
  1381. if (!match) {
  1382. return logger.warn("pwd share not match");
  1383. }
  1384.  
  1385. var sharePwd = match[1];
  1386. if (sharePwd == obj.verify_page.share_pwd) {
  1387. return logger.warn("pwd share not change");
  1388. }
  1389.  
  1390. if (!obj.isPwdShareOpen()) {
  1391. return logger.warn("pwd share closed");
  1392. }
  1393.  
  1394. var shareId = obj.getShareId();
  1395. var shareLink = obj.getShareLink();
  1396. api.storeSharePwd(constant.source.weiyun, shareId, sharePwd, shareLink);
  1397. }
  1398. else {
  1399. return logger.warn("pwd share error");
  1400. }
  1401. }
  1402. });
  1403. };
  1404.  
  1405. obj.addResponseInterceptor = function (callback) {
  1406. var success = function (response) {
  1407. try {
  1408. callback && callback(response.request, response);
  1409. }
  1410. catch (e) {
  1411. logger.warn(e);
  1412. }
  1413. return response;
  1414. };
  1415. var error = function () {
  1416. return Promise.reject(error);
  1417. };
  1418. obj.getAxios() && obj.getAxios().interceptors.response.use(success, error);
  1419. };
  1420.  
  1421. obj.showTipSuccess = function (msg) {
  1422. obj.getModal() && obj.getModal().success(msg);
  1423. };
  1424.  
  1425. obj.showTipError = function (msg) {
  1426. obj.getModal() && obj.getModal().error(msg);
  1427. };
  1428.  
  1429. obj.isPwdShareOpen = function () {
  1430. return option.isOptionActive(option.constant.weiyun_share_status);
  1431. };
  1432.  
  1433. obj.getAxios = function () {
  1434. return obj.matchWebpackModule("axios", function (module, name) {
  1435. if (module && module.Axios) {
  1436. return module;
  1437. }
  1438. });
  1439. };
  1440.  
  1441. obj.getModal = function () {
  1442. return obj.matchWebpackModule("modal", function (module, name) {
  1443. if (module && module.confirm && module.success) {
  1444. return module;
  1445. }
  1446. });
  1447. };
  1448.  
  1449. obj.getStore = function () {
  1450. return obj.matchWebpackModule("store", function (module, name) {
  1451. if (module && module.default && module.default._modulesNamespaceMap) {
  1452. return module.default;
  1453. }
  1454. });
  1455. };
  1456.  
  1457. obj.matchWebpackModule = function (name, matchFunc) {
  1458. if (!obj.modules.hasOwnProperty(name)) {
  1459. for (var key in obj.webpack_require.c) {
  1460. var match = matchFunc(obj.webpack_require(key), key);
  1461. if (match) {
  1462. obj.modules[name] = match;
  1463. }
  1464. }
  1465. }
  1466. return obj.modules[name];
  1467. };
  1468.  
  1469. obj.initWebpackRequire = function () {
  1470. var injectName = "_opwd_inject_";
  1471. var moreModules = {};
  1472. moreModules[injectName] = function (module, exports, __webpack_require__) {
  1473. obj.webpack_require = __webpack_require__;
  1474. };
  1475. unsafeWindow.webpackJsonp([injectName], moreModules, [injectName]);
  1476. };
  1477.  
  1478. return obj;
  1479. });
  1480.  
  1481. container.define("app_lanzous", ["manifest", "router", "option", "logger", "unsafeWindow", "constant", "setting", "runtime", "api", "$"], function (manifest, router, option, logger, unsafeWindow, constant, setting, runtime, api, $) {
  1482. var obj = {
  1483. verify_page: {
  1484. setPwd: null,
  1485. share_pwd: null,
  1486. submit_pwd: null
  1487. }
  1488. };
  1489.  
  1490. obj.run = function () {
  1491. var url = router.getUrl();
  1492. if (url.indexOf("lanzous.com") > 0 || url.indexOf("lanzoux.com") > 0) {
  1493. option.isOptionActive(option.constant.lanzous_page_verify) && obj.initVerifyPage();
  1494. return true;
  1495. }
  1496. else {
  1497. return false;
  1498. }
  1499. };
  1500.  
  1501. obj.getShareId = function () {
  1502. var url = obj.getShareLink();
  1503. var match;
  1504.  
  1505. match = /[lanzous|lanzoux].com\/([\w]+)\/([a-z0-9-_]{4,})/gi.exec(url);
  1506. if (match) {
  1507. return match[1] + "/" + match[2];
  1508. }
  1509.  
  1510. match = /[lanzous|lanzoux].com\/([a-z0-9-_]{4,})/gi.exec(url);
  1511. if (match) {
  1512. return match[1];
  1513. }
  1514.  
  1515. return null;
  1516. };
  1517.  
  1518. obj.getShareLink = function () {
  1519. return router.getUrl();
  1520. };
  1521.  
  1522. obj.initVerifyPage = function () {
  1523. obj.registerStoreSharePwd();
  1524.  
  1525. obj.initVerifyPageElement(function () {
  1526. obj.autoPaddingSharePwd();
  1527. });
  1528. };
  1529.  
  1530. obj.initVerifyPageElement = function (callback) {
  1531. var shareId = obj.getShareId();
  1532. var $pwd = $("#pwd");
  1533. if (shareId && $pwd.length) {
  1534.  
  1535. // 设置分享密码
  1536. obj.verify_page.setPwd = function (pwd) {
  1537. $pwd.val(pwd);
  1538. };
  1539.  
  1540. // 提交密码
  1541. obj.verify_page.submit_pwd = function () {
  1542. $("#sub").click();
  1543. };
  1544.  
  1545. callback && callback();
  1546. }
  1547. else {
  1548. setTimeout(function () {
  1549. obj.initVerifyPageElement(callback);
  1550. }, 500);
  1551. }
  1552. };
  1553.  
  1554. obj.autoPaddingSharePwd = function () {
  1555. var shareId = obj.getShareId();
  1556. var shareLink = obj.getShareLink();
  1557. api.querySharePwd(constant.source.lanzous, shareId, shareLink, function (response) {
  1558. if (response instanceof Object) {
  1559. if (response.code == 1) {
  1560. var sharePwd = response.data.share_pwd;
  1561. obj.verify_page.share_pwd = sharePwd;
  1562. obj.verify_page.setPwd(sharePwd);
  1563. setting.showNotifySuccess() && obj.showTip(1, "[" + manifest.getTitle() + "] 填充密码成功", 2000);
  1564. }
  1565. else if (response.code == -22) {
  1566. runtime.optionNotify();
  1567. }
  1568. else {
  1569. setting.showNotifyFail() && obj.showTip(0, "[" + manifest.getTitle() + "] 未查询到密码", 2000);
  1570. }
  1571. }
  1572. });
  1573. };
  1574.  
  1575. obj.registerStoreSharePwd = function () {
  1576. unsafeWindow.$(document).ajaxComplete(function (event, xhr, options) {
  1577. var match = options.data.match(/pwd=(\w+)/);
  1578. if (!match) {
  1579. match = options.data.match(/p=(\w+)/);
  1580. if (!match) {
  1581. return logger.warn("pwd share not match");
  1582. }
  1583. }
  1584.  
  1585. var sharePwd = match[1];
  1586.  
  1587. if (sharePwd == obj.verify_page.share_pwd) {
  1588. return logger.warn("pwd share not change");
  1589. }
  1590.  
  1591. if (!option.isOptionActive(option.constant.lanzous_share_status)) {
  1592. return logger.warn("pwd share closed");
  1593. }
  1594.  
  1595. var response = obj.parseJson(xhr.response);
  1596. if (response && response.zt == 1 && sharePwd) {
  1597. api.storeSharePwd(constant.source.lanzous, obj.getShareId(), sharePwd, obj.getShareLink());
  1598. }
  1599. else {
  1600. return logger.warn("pwd share error");
  1601. }
  1602. });
  1603. };
  1604.  
  1605. obj.showTip = function (code, msg, timeout) {
  1606. if (unsafeWindow.sms) {
  1607. unsafeWindow.sms(msg);
  1608. }
  1609. else {
  1610. var selector;
  1611. if ($(".off").length) {
  1612. selector = "#pwderr";
  1613. }
  1614. else {
  1615. selector = "#info";
  1616. }
  1617. if (code) {
  1618. $(selector).safeHtml('<span style="color: green;">' + msg + '</span>');
  1619. }
  1620. else {
  1621. $(selector).safeHtml('<span style="color: red;">' + msg + '</span>');
  1622. }
  1623. setTimeout(function () {
  1624. $(selector).text("");
  1625. }, timeout);
  1626. }
  1627. };
  1628.  
  1629. obj.parseJson = function (jsonStr) {
  1630. var jsonObject = {};
  1631. try {
  1632. if (jsonStr) {
  1633. jsonObject = JSON.parse(jsonStr);
  1634. }
  1635. }
  1636. catch (e) { }
  1637. return jsonObject;
  1638. };
  1639.  
  1640. return obj;
  1641. });
  1642.  
  1643. container.define("app_189", ["manifest", "router", "option", "logger", "unsafeWindow", "constant", "setting", "runtime", "api", "$"], function (manifest, router, option, logger, unsafeWindow, constant, setting, runtime, api, $) {
  1644. var obj = {
  1645. verify_page: {
  1646. share_pwd: null
  1647. }
  1648. };
  1649.  
  1650. obj.run = function () {
  1651. var url = router.getUrl();
  1652. if (url.indexOf("cloud.189.cn/t") > 0) {
  1653. option.isOptionActive(option.constant.ty189_page_verify) && obj.initSharePage();
  1654. return true;
  1655. }
  1656. else {
  1657. return false;
  1658. }
  1659. };
  1660.  
  1661. obj.getShareId = function () {
  1662. var url = obj.getShareLink();
  1663. var match = url.match(/cloud\.189\.cn\/t\/([0-9a-z]+)/i);
  1664. return match ? match[1] : null;
  1665. };
  1666.  
  1667. obj.getShareLink = function () {
  1668. return router.getUrl();
  1669. };
  1670.  
  1671. obj.initSharePage = function () {
  1672. if ($(".code-panel").length) {
  1673. obj.initVerifyPage();
  1674. }
  1675. };
  1676.  
  1677. obj.initVerifyPage = function () {
  1678. obj.registerStoreSharePwd();
  1679.  
  1680. obj.autoPaddingSharePwd();
  1681. };
  1682.  
  1683. obj.registerStoreSharePwd = function () {
  1684. unsafeWindow.$(document).ajaxComplete(function (event, xhr, options) {
  1685. var response = xhr.responseJSON;
  1686. var sharePwd = null;
  1687. if (options.url.indexOf("listShareDir.action") > 0) {
  1688. if (response instanceof Object && response.digest) {
  1689. var match = options.url.match(/accessCode=(\w+)/);
  1690. if (!match) {
  1691. return logger.warn("pwd share not match");
  1692. }
  1693.  
  1694. sharePwd = match[1];
  1695. }
  1696. else {
  1697. return logger.warn("pwd share not match");
  1698. }
  1699. }
  1700. else if (options.url.indexOf("shareFileVerifyPass.action") > 0) {
  1701. if (response instanceof Object && response.shareId && response.accessCode) {
  1702. sharePwd = response.accessCode;
  1703. }
  1704. else {
  1705. return logger.warn("pwd share not match");
  1706. }
  1707. }
  1708. else {
  1709. return logger.warn("not pwd request");
  1710. }
  1711.  
  1712. if (sharePwd == obj.verify_page.share_pwd) {
  1713. return logger.warn("pwd share not change");
  1714. }
  1715.  
  1716. if (!option.isOptionActive(option.constant.ty189_share_status)) {
  1717. return logger.warn("pwd share closed");
  1718. }
  1719.  
  1720. var shareId = obj.getShareId();
  1721. var shareLink = obj.getShareLink();
  1722. api.storeSharePwd(constant.source.ty189, shareId, sharePwd, shareLink);
  1723. });
  1724. };
  1725.  
  1726. obj.autoPaddingSharePwd = function () {
  1727. var shareId = obj.getShareId();
  1728. var shareLink = obj.getShareLink();
  1729. api.querySharePwd(constant.source.ty189, shareId, shareLink, function (response) {
  1730. if (response instanceof Object) {
  1731. if (response.code == 1) {
  1732. var sharePwd = response.data.share_pwd;
  1733. obj.verify_page.share_pwd = sharePwd;
  1734.  
  1735. $("#code_txt").val(sharePwd);
  1736. setting.showNotifySuccess() && obj.showTip(1, "[" + manifest.getTitle() + "] 填充访问码成功", 2000);
  1737. }
  1738. else if (response.code == -22) {
  1739. runtime.optionNotify();
  1740. }
  1741. else {
  1742. setting.showNotifyFail() && obj.showTip(0, "[" + manifest.getTitle() + "] 未查询到访问码", 2000);
  1743. }
  1744. }
  1745. });
  1746. };
  1747.  
  1748. obj.showTip = function (code, msg, timeout) {
  1749. var $element = $(".visit_error");
  1750. if (code) {
  1751. $element.safeHtml('<span style="color: green;">' + msg + '</span>');
  1752. }
  1753. else {
  1754. $element.safeHtml('<span style="color: red;">' + msg + '</span>');
  1755. }
  1756. $element.show();
  1757. setTimeout(function () {
  1758. $element.hide();
  1759. }, timeout);
  1760. };
  1761.  
  1762. return obj;
  1763. });
  1764.  
  1765. container.define("app_manage", ["meta", "unsafeWindow"], function (meta, unsafeWindow) {
  1766. var obj = {};
  1767.  
  1768. obj.run = function () {
  1769. if (meta.existMeta("manage")) {
  1770. unsafeWindow.OnePwd = container;
  1771. return true;
  1772. }
  1773. };
  1774.  
  1775. return obj;
  1776. });
  1777.  
  1778. container.define("app", ["appRunner"], function (appRunner) {
  1779. var obj = {};
  1780.  
  1781. obj.run = function () {
  1782. appRunner.run([
  1783. {
  1784. name: "app_baidu",
  1785. matchs: [
  1786. "baidu.com"
  1787. ]
  1788. },
  1789. {
  1790. name: "app_weiyun",
  1791. matchs: [
  1792. "weiyun.com"
  1793. ]
  1794. },
  1795. {
  1796. name: "app_lanzous",
  1797. matchs: [
  1798. "lanzous.com",
  1799. "lanzoux.com"
  1800. ]
  1801. },
  1802. {
  1803. name: "app_189",
  1804. matchs: [
  1805. "cloud.189.cn"
  1806. ]
  1807. },
  1808. {
  1809. name: "app_manage",
  1810. matchs: [
  1811. "*"
  1812. ]
  1813. }
  1814. ]);
  1815. };
  1816.  
  1817. return obj;
  1818. });
  1819.  
  1820. /** lib **/
  1821. container.define("$", [], function () {
  1822. return window.$;
  1823. });
  1824.  
  1825. container.use(["gm", "core", "app"], function (gm, core, app) {
  1826. gm.ready(function () {
  1827. core.ready(app.run);
  1828. });
  1829. });
  1830. })();