ajax.php 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429
  1. <?php
  2. namespace app\webview;
  3. $GLOBALS["pwIpOTVVdU"] = array("base64_decode", "str_rot13", "strrev");
  4. use app\index\webview_base;
  5. use app\webview\Jwt;
  6. use app\webview\keystore;
  7. use Overtrue\Pinyin\Pinyin;
  8. class ajax extends webview_base
  9. {
  10. function initialize()
  11. {
  12. parent::initialize();
  13. }
  14. function index()
  15. {
  16. if (!empty($_FILES)) {
  17. $_var_0 = SafeRequest("fn", "get") ?: time();
  18. $_var_1 = pathinfo($_FILES["webview"]["name"]);
  19. $_var_2 = strtolower($_var_1["extension"]);
  20. $_var_3 = getimagesize($_FILES["webview"]["tmp_name"]);
  21. if ("image/png" == $_var_3["mime"] && $_var_2 == "png") {
  22. $_var_4 = $_var_0 . "." . $_var_2;
  23. $_var_5 = IN_ROOT . "data/tmp";
  24. creatdir($_var_5);
  25. @move_uploaded_file($_FILES["webview"]["tmp_name"], $_var_5 . "/" . $_var_4);
  26. exit($_var_4);
  27. }
  28. }
  29. exit("return_0");
  30. }
  31. function webview()
  32. {
  33. header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
  34. header("Cache-Control: no-cache, must-revalidate");
  35. header("Pragma: no-cache");
  36. header("Content-type: text/html;charset=" . IN_CHARSET);
  37. $this->userlogined or reJSON(-1);
  38. $_var_6 = SafeRequest("id", "post");
  39. $_var_7 = $this->user["in_userid"] . "-" . time();
  40. $_var_8 = IN_TMP_PATH . $_var_7;
  41. creatdir($_var_8);
  42. $_var_9 = is_ssl() ? "https://" : "http://";
  43. $_var_10 = unescape(SafeRequest("title", "post"));
  44. $_var_11 = SafeRequest("url", "post");
  45. strstr($_var_11, "http://") || strstr($_var_11, "https://") || ($_var_11 = "http://" . $_var_11);
  46. $_var_12 = SafeRequest("type", "post");
  47. $_var_13 = SafeRequest("bundle_id", "post");
  48. $_var_14 = new Pinyin();
  49. $_var_13 = $_var_14->permalink($_var_13, ".") ?: "com.xuanfeng." . Randomstr(9, "letter");
  50. !strstr($_var_13, ".") && ($_var_13 = "com." . $_var_13);
  51. $_var_15 = SafeRequest("version", "post") ? SafeRequest("version", "post") : "1.0.0";
  52. $_var_16 = "1";
  53. $_var_17 = str_replace($_var_9 . $_SERVER["HTTP_HOST"] . IN_PATH . "data", "data", SafeRequest("aicon", "post"));
  54. $_var_18 = str_replace($_var_9 . $_SERVER["HTTP_HOST"] . IN_PATH . "data", "data", SafeRequest("limage", "post"));
  55. $_var_19 = false;
  56. $_var_20 = IN_IMAGES_PATH . "pack";
  57. $_var_21 = date("Y/m/d");
  58. $_var_22 = $_var_20 . "/" . $_var_21 . "/" . $_var_7 . "-icon.png";
  59. creatdir($_var_20 . "/" . $_var_21);
  60. rename(IN_ROOT . $_var_17, $_var_22);
  61. $_var_17 = "/data/image/pack/" . $_var_21 . "/" . $_var_7 . "-icon.png";
  62. $_var_22 = $_var_20 . "/" . $_var_21 . "/" . $_var_7 . "-launch.png";
  63. @rename(IN_ROOT . $_var_18, $_var_22);
  64. $_var_18 = "/data/image/pack/" . $_var_21 . "/" . $_var_7 . "-launch.png";
  65. $_var_23 = md5($_var_7 . "-" . rand(2, pow(2, 24))) . [".apk", ".ipa"][$_var_12];
  66. $_var_24 = ["Android", "iOS"][$_var_12];
  67. $_var_25 = db("app_pack")->where("user_id", $this->user["in_userid"])->where("id", $_var_6)->where("type", $_var_12)->find();
  68. $_var_25 or $_var_25 = db("app_pack")->where("user_id", $this->user["in_userid"])->where("bundle_id", $_var_13)->where("type", $_var_12)->find();
  69. if ($_var_25) {
  70. $_var_19 = $_var_25["period"] < 1 || $_var_25["period"] > time();
  71. }
  72. $_var_26 = SafeRequest("period", "post");
  73. $_var_26 = $_var_26 ? $_var_26 : 0;
  74. $_var_27 = ["一个月", "三个月", "半年", "一年", "永久"][$_var_26];
  75. $_var_28 = json_decode(IN_WEBVIEWPOINTS, true)[$_var_26];
  76. $_var_26 = [1, 3, 6, 12, -1][$_var_26];
  77. !$_var_19 && $this->user["money"] < $_var_28 and reJSON(-2);
  78. $this->configData["name"] = convert_charset($_var_10);
  79. $this->configData["url"] = $_var_11;
  80. $this->configData["appVersion"] = $_var_15;
  81. $this->configData["packageName"] = $_var_13;
  82. $this->configData["screenOrientation"] = intval(SafeRequest("screenOrientation"));
  83. $this->configData["splashTime"] = intval(SafeRequest("splashTime"));
  84. $this->configData["supportSplash"] = true;
  85. $this->configData["supportSplashTime"] = boolval(SafeRequest("splashTime"));
  86. $_var_29 = SafeRequest("loading");
  87. $this->configData["loadingAnimationType"] = intval($_var_29["way"]);
  88. $this->configData["loadingAnimationColor"] = $_var_29["color"] ?? "#157df1";
  89. $this->configData["clearCookie"] = boolval(SafeRequest("cache") == 1);
  90. $_var_30 = SafeRequest("browser");
  91. $this->configData["webViewType"] = intval($_var_30["android"] ?: ($_var_30["ios"] ?: 0));
  92. $this->configData["exitMode"] = intval(SafeRequest("exit"));
  93. $this->configData["supportPullToRefresh"] = boolval(SafeRequest("refresh") == 1);
  94. $_var_31 = SafeRequest("stateBar");
  95. $this->configData["isSupportConfigureStatueBarColor"] = boolval($_var_31["state"] == 1);
  96. $this->configData["statusBarTextColorMode"] = intval($_var_31["fontColor"]);
  97. $this->configData["statusBarColor"] = $_var_31["bgColor"] ?: "#157df0";
  98. $_var_32 = SafeRequest("titleBar");
  99. $this->configData["supportActionBar"] = boolval(!$_var_32["show"]);
  100. $this->configData["titleBarText"] = $_var_32["title"] ?: "";
  101. $this->configData["actionBarColor"] = $_var_32["bgColor"] ?: "#157df0";
  102. $this->configData["titleColor"] = $_var_32["titleColor"] ?: "#ffffff";
  103. $this->configData["leftActionBarIcons"] = $this->createAction($_var_32["leftKey"] ?: []);
  104. $this->configData["rightActionBarIcons"] = $this->createAction($_var_32["rightKey"] ?: []);
  105. $_var_33 = SafeRequest("nav");
  106. $this->configData["supportNavigator"] = boolval($_var_33["menu"]);
  107. $this->configData["menu"] = $this->createAction($_var_33["menu"] ?: [], "menu");
  108. $this->configData["menuBackgroundColor"] = $_var_33["menuBackgroundColor"] ?: "#3F51B5";
  109. $this->configData["menuTextColor"] = $_var_33["menuTextColor"] ?: "#FFFFFF";
  110. $this->configData["menuPressedTextColor"] = $_var_33["menuPressedTextColor"] ?: "#FFFFFF";
  111. $_var_34 = SafeRequest("share");
  112. $this->configData["isSupportShare"] = boolval($_var_34);
  113. $this->configData["shareText"] = $_var_34["shareText"] ?: "";
  114. $this->configData["shareUrl"] = $_var_34["shareUrl"] ?: "";
  115. $this->configData["wxAppId"] = $_var_34["wxId"] ?: "";
  116. $this->configData["wxAppScrect"] = $_var_34["wxSecret"] ?: "";
  117. $this->configData["supportQRCodeScan"] = boolval(SafeRequest("supportQrcodeScan") == 1);
  118. $this->configData["supportRightSlideGoBack"] = boolval(SafeRequest("skidBack") == 1);
  119. $this->configData["supportLongPressSavePicture"] = boolval(SafeRequest("supportLongPressSavePicture") == 1);
  120. $this->configData["keepScreen"] = boolval(SafeRequest("keepScreen") == 1);
  121. $this->configData["urlApp"] = boolval(SafeRequest("urlApp") == 1);
  122. $_var_35 = SafeRequest("asideData");
  123. $this->configData["supportSideBar"] = boolval($_var_35);
  124. $this->configData["supportSideBarLogo"] = boolval($_var_35["asideShowApp"] != 1);
  125. $this->configData["sideBarBackgroundColor"] = $_var_35["asideBgColor"] ?: "#3F51B5";
  126. $this->configData["sideBarTextAndIconColor"] = $_var_35["asideFontColor"] ?: "#FFFFFF";
  127. $this->configData["sideBar"] = $this->createAction($_var_35["menu"], "menu");
  128. $this->configData["isSupportZoom"] = boolval(SafeRequest("supportZoom") == 1);
  129. $this->configData["noNet"] = boolval(SafeRequest("noNet") == 1);
  130. $this->configData["jPushId"] = SafeRequest("jPushId") ?: "";
  131. $_var_36 = SafeRequest("umengKey");
  132. $this->configData["umengId"] = $_var_36["android"] ?: ($_var_36["ios"] ?: "");
  133. $_var_37 = SafeRequest("UserAgent") ?: "";
  134. $this->configData["UserAgent"] = $_var_37;
  135. $this->configData["installTip"] = boolval(SafeRequest("installTip") == 1);
  136. $this->configData["hideBottom"] = boolval(SafeRequest("hideBottom") == 1);
  137. $this->configData["Configuration"] = "";
  138. $this->configData["isLoadRealAddressByUrl"] = boolval(SafeRequest("isLoadRealAddressByUrl"));
  139. $this->configData["hideNavigatorWhenLandscape"] = boolval(SafeRequest("hideNavigatorWhenLandscape"));
  140. $this->configData["supportForwardBackGesture"] = boolval(SafeRequest("supportForwardBackGesture"));
  141. $this->configData["supportFullScreen"] = boolval(SafeRequest("supportFullScreen"));
  142. $this->configData["supportScheme"] = boolval(SafeRequest("supportScheme"));
  143. $this->configData["guide"] = intval(SafeRequest("guide"));
  144. $this->configData["isSupportLongPressCopy"] = true;
  145. $this->configData["isSupportStatusBarBackgroundExtend"] = boolval(SafeRequest("isSupportStatusBarBackgroundExtend"));
  146. $this->configData["pack_at"] = intval(SafeRequest("pack_at"));
  147. $this->configData["skidBack"] = boolval(SafeRequest("skidBack"));
  148. $_var_38 = ["user_id" => $this->user["in_userid"], "name" => $_var_10, "url" => $_var_11, "icon" => $_var_17, "launch" => $_var_18, "config" => $this->configData, "file" => $_var_23, "type" => $_var_12, "bundle_id" => $_var_13, "version" => $_var_15, "update_time" => time()];
  149. if ($_var_25) {
  150. $_var_6 = $_var_25["id"];
  151. if (!$_var_19) {
  152. $_var_38["period"] = $_var_26 < 0 ? $_var_26 : strtotime("+ " . $_var_26 . " months", max([$_var_25["period"], time()]));
  153. }
  154. @unlink(IN_ATTACHMENT_PATH . "pack/" . $_var_25["file"]);
  155. db("app_pack")->json(["config"])->where("id", $_var_6)->update($_var_38);
  156. } else {
  157. $_var_38["period"] = $_var_26 < 0 ? $_var_26 : strtotime("+ " . $_var_26 . " months");
  158. $_var_38["create_time"] = time();
  159. $_var_6 = db("app_pack")->json(["config"])->insertGetId($_var_38);
  160. }
  161. $this->configData["secureUrl"] = get_site_url() . "/index/webview_valid/" . $_var_6;
  162. $_var_17 = IN_ROOT . $_var_17;
  163. $_var_18 = IN_ROOT . $_var_18;
  164. if ($_var_12 == 1) {
  165. $_var_39 = new \PclZip(IN_ROOT . "static/pack/webview/newipa.zip");
  166. $_var_39->extract(PCLZIP_OPT_PATH, $_var_8, PCLZIP_OPT_REPLACE_NEWER);
  167. $_var_40 = array("40", "60", "58", "87", "80", "120", "120", "180");
  168. $_var_41 = array("AppIcon20x20@2x", "AppIcon20x20@3x", "AppIcon29x29@2x", "AppIcon29x29@3x", "AppIcon40x40@2x", "AppIcon40x40@3x", "AppIcon60x60@2x", "AppIcon60x60@3x");
  169. foreach ($_var_40 as $_var_42 => $_var_43) {
  170. image_crop($_var_43, $_var_43, $_var_17, $_var_8 . "/Payload/DCloud.app/" . $_var_41[$_var_42] . ".png");
  171. }
  172. image_crop(800, 800, $_var_17, $_var_8 . "/Payload/DCloud.app/icon.png");
  173. $_var_40 = array("640*960", "640*1136", "750*1334", "1242*2208", "1125*2436", "828*1792", "1242*2688");
  174. $_var_41 = array("LaunchImage-700@2x", "LaunchImage-700-568h@2x", "LaunchImage-800-667h@2x", "LaunchImage-800-Portrait-736h@3x", "LaunchImage-1100-Portrait-2436h@3x", "LaunchImage-1200-Portrait-1792h@2x", "LaunchImage-1200-Portrait-2688h@3x");
  175. foreach ($_var_40 as $_var_42 => $_var_43) {
  176. $_var_40 = explode("*", $_var_43);
  177. image_crop($_var_40[0], $_var_40[1], $_var_18, $_var_8 . "/Payload/DCloud.app/" . $_var_41[$_var_42] . ".png");
  178. }
  179. image_crop(1080, 1920, $_var_18, $_var_8 . "/Payload/DCloud.app/splash.png");
  180. $_var_44 = file_get_contents($_var_8 . "/Payload/DCloud.app/Info.plist");
  181. $_var_44 = str_replace(array("hellos", "com.FnTjwo.PAZWRIAIA", "1.0.0"), array(convert_charset($_var_10), $_var_13, $_var_15), $_var_44);
  182. fwrite(fopen($_var_8 . "/Payload/DCloud.app/Info.plist", "w"), $_var_44);
  183. $_var_45 = file_get_contents($_var_8 . "/Payload/DCloud.app/dconfig.json");
  184. $_var_45 = json_decode($_var_45, true);
  185. $_var_45 = array_merge($_var_45, $this->configData);
  186. fwrite(fopen($_var_8 . "/Payload/DCloud.app/config.json", "w"), json_encode($_var_45, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES));
  187. fwrite(fopen($_var_8 . "/Payload/DCloud.app/dconfig.json", "w"), json_encode($_var_45, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES));
  188. $_var_46 = new \PclZip($_var_8 . ".zip");
  189. $_var_46->create($_var_8, PCLZIP_OPT_REMOVE_PATH, $_var_8);
  190. $_var_47 = IN_ATTACHMENT_PATH . "pack/" . $_var_23;
  191. $_var_48 = $_var_8 . ".zip";
  192. } else {
  193. if ($this->configData["webViewType"] == 1) {
  194. $_var_39 = new \PclZip(IN_ROOT . "static/pack/webview/newx5.zip");
  195. } else {
  196. $_var_39 = new \PclZip(IN_ROOT . "static/pack/webview/newapk.zip");
  197. }
  198. $_var_39->extract(PCLZIP_OPT_PATH, $_var_8, PCLZIP_OPT_REPLACE_NEWER);
  199. $_var_40 = array("48", "72", "96", "144", "192");
  200. $_var_41 = array("mipmap-mdpi", "mipmap-hdpi", "mipmap-xhdpi", "mipmap-xxhdpi", "mipmap-xxxhdpi");
  201. foreach ($_var_40 as $_var_42 => $_var_43) {
  202. image_crop($_var_43, $_var_43, $_var_17, $_var_8 . "/res/" . $_var_41[$_var_42] . "/ic_launcher.png");
  203. image_crop($_var_43, $_var_43, $_var_17, $_var_8 . "/res/" . $_var_41[$_var_42] . "/ic_launcher_round.png");
  204. }
  205. image_crop(1080, 1920, $_var_18, $_var_8 . "/assets/source/image/img_ad.png");
  206. image_crop(1080, 1920, $_var_18, $_var_8 . "/res/mipmap-xhdpi/splash.jpg");
  207. $_var_44 = file_get_contents($_var_8 . "/apktool.yml");
  208. $_var_44 = str_replace(["1.0.0"], [$_var_15], $_var_44);
  209. file_put_contents($_var_8 . "/apktool.yml", $_var_44);
  210. $_var_49 = file_get_contents($_var_8 . "/AndroidManifest.xml");
  211. $_var_49 = str_replace(["com.IFcZJt.PDPFOUQXI"], [$_var_13], $_var_49);
  212. file_put_contents($_var_8 . "/AndroidManifest.xml", $_var_49);
  213. $_var_50 = file_get_contents($_var_8 . "/res/values/strings.xml");
  214. $_var_50 = str_replace(["[app_name]"], [convert_charset($_var_10)], $_var_50);
  215. file_put_contents($_var_8 . "/res/values/strings.xml", $_var_50);
  216. $_var_51 = new Jwt();
  217. file_put_contents($_var_8 . "/assets/source/dconfig.json", $_var_51->encode($this->configData));
  218. $_var_52 = $_var_8 . "_sign.apk";
  219. $_var_53 = IN_STATIC_PATH . "pack/webview/apktool b -o " . $_var_52 . " " . $_var_8;
  220. exec($_var_53, $_var_54);
  221. file_put_contents(IN_TMP_PATH . "apk_pack_command.log", $_var_53);
  222. file_put_contents(IN_TMP_PATH . "apk_pack_output.log", $_var_54);
  223. $_var_55 = IN_STATIC_PATH . "pack/webview/signapk.jar";
  224. $_var_56 = IN_STATIC_PATH . "pack/webview/testkey.x509.pem";
  225. $_var_57 = IN_STATIC_PATH . "pack/webview/testkey.pk8 ";
  226. $_var_58 = SafeRequest("androidKey");
  227. if ($_var_58) {
  228. if ($_var_58["alias"] != $_var_58["file_url"]) {
  229. @rename(IN_TMP_PATH . $_var_58["file_url"], IN_CERT_PATH . "keystore/" . $this->userid . "-" . $_var_58["alias"] . "/" . $_var_58["alias"] . ".jks");
  230. }
  231. $_var_59 = new keystore(IN_CERT_PATH . "keystore/" . $this->userid . "-" . $_var_58["alias"] . "/");
  232. $_var_56 = $_var_59->getCer($_var_58["alias"], $_var_58["storepass"], $_var_58["keypass"]);
  233. $_var_57 = $_var_59->getPk8($_var_58["alias"], $_var_58["storepass"], $_var_58["keypass"]);
  234. }
  235. $this->configData["androidKey"] = $_var_58;
  236. $_var_60 = "source /etc/profile && java -jar " . $_var_55 . " " . $_var_56 . " " . $_var_57 . " " . $_var_52 . " " . $_var_8 . ".apk";
  237. exec($_var_60, $_var_61);
  238. file_put_contents(IN_TMP_PATH . "apk_sign_command.log", $_var_60);
  239. file_put_contents(IN_TMP_PATH . "apk_sign_output.log", $_var_61);
  240. $_var_47 = IN_ATTACHMENT_PATH . "pack/" . $_var_23;
  241. $_var_48 = $_var_8 . ".apk";
  242. @unlink($_var_52);
  243. }
  244. @destroyDir($_var_8);
  245. $_var_62 = @filesize($_var_48);
  246. if (!$_var_19 && $_var_62 + $this->user["in_spaceuse"] > get_user_in_spacetotal($this->user)) {
  247. db("app_pack")->where("id", $_var_6)->delete();
  248. @unlink($_var_48);
  249. reJSON(-4);
  250. }
  251. creatdir(IN_ATTACHMENT_PATH . "pack/");
  252. @rename($_var_48, $_var_47);
  253. db("app_pack")->where("id", $_var_6)->update(["size" => $_var_62, "config" => json_encode($this->configData)]);
  254. $_var_63 = 0;
  255. if (!$_var_19) {
  256. db("user")->where("in_userid", $this->userid)->inc("in_spaceuse", $_var_62)->update();
  257. $_var_64 = db("user")->where("in_userid", $this->user["in_userid"])->dec("money", $_var_28)->update();
  258. $_var_64 && aclog_save($this->user["in_userid"], $this->user["money"] - $_var_28, $this->user["money"], "money", $_var_24 . "-" . $_var_10 . "-封装-" . $_var_27);
  259. }
  260. reJSON(["id" => bees_encrypt($_var_63)], 1);
  261. }
  262. function decompiler($apk = '', $dir = '')
  263. {
  264. $apk = $apk ?: IN_TMP_PATH . "x5.apk";
  265. $dir = $dir ?: IN_TMP_PATH . "x5";
  266. $_var_65 = IN_STATIC_PATH . "pack/webview/apktool d -f " . $apk . " -o " . $dir;
  267. exec($_var_65, $_var_66);
  268. halt($apk, $dir, $_var_65, $_var_66);
  269. }
  270. function mobileconfig()
  271. {
  272. header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
  273. header("Cache-Control: no-cache, must-revalidate");
  274. header("Pragma: no-cache");
  275. header("Content-type: text/html;charset=" . IN_CHARSET);
  276. $this->userlogined or reJSON(-1);
  277. $_var_67 = SafeRequest("id", "post");
  278. $_var_68 = is_ssl() ? "https://" : "http://";
  279. $_var_69 = unescape(SafeRequest("title", "post"));
  280. $_var_70 = SafeRequest("url", "post");
  281. strstr($_var_70, "http://") || strstr($_var_70, "https://") || ($_var_70 = "http://" . $_var_70);
  282. $_var_71 = str_replace($_var_68 . $_SERVER["HTTP_HOST"] . IN_PATH . "data", IN_ROOT . "data", SafeRequest("aicon", "post"));
  283. $_var_72 = IN_ROOT . "data/tmp";
  284. $_var_73 = $this->user["in_userid"] . "-" . time();
  285. creatdir($_var_72 . "/" . $_var_73);
  286. $_var_74 = SafeRequest("bid", "post");
  287. $_var_75 = new \Overtrue\Pinyin\Pinyin();
  288. $_var_74 = $_var_75->permalink($_var_74, ".") ?: password($_var_73);
  289. !strstr($_var_74, ".") && ($_var_74 = "com." . $_var_74);
  290. $_var_76 = boolval(SafeRequest("FullScreen", "post"));
  291. $_var_77 = boolval(SafeRequest("IsRemovable", "post"));
  292. $_var_78 = boolval(SafeRequest("IsRemovURL", "post"));
  293. $_var_79 = SafeRequest("version", "post") ? SafeRequest("version", "post") : "1.0.0";
  294. $_var_80 = false;
  295. $_var_81 = IN_IMAGES_PATH . "pack";
  296. $_var_82 = date("Y/m/d");
  297. creatdir($_var_81 . "/" . $_var_82);
  298. $_var_83 = $_var_81 . "/" . $_var_82 . "/" . $_var_73 . "-icon.png";
  299. @copy($_var_71, $_var_83);
  300. $_var_84 = fread(fopen($_var_83, "r"), filesize($_var_83));
  301. $_var_85 = chunk_split(base64_encode($_var_84));
  302. $_var_86 = md5($_var_73 . "-" . rand(2, pow(2, 24))) . ".mobileconfig";
  303. $_var_87 = ["user_id" => $this->user["in_userid"], "name" => $_var_69, "url" => $_var_70, "file" => $_var_86, "icon" => "/data/image/pack/" . $_var_82 . "/" . $_var_73 . "-icon.png", "type" => 2, "bundle_id" => $_var_74, "version" => $_var_79, "config" => ["FullScreen" => $_var_76, "IsRemovable" => $_var_77, "IsRemovURL" => $_var_78], "update_time" => time()];
  304. $_var_88 = db("app_pack")->where("user_id", $this->user["in_userid"])->where("id", $_var_67)->where("type", 2)->find();
  305. $_var_88 or $_var_88 = db("app_pack")->where("user_id", $this->user["in_userid"])->where("bundle_id", $_var_74)->where("name", $_var_69)->where("type", 2)->find();
  306. if ($_var_88) {
  307. $_var_80 = $_var_88["period"] < 1 || $_var_88["period"] > time();
  308. }
  309. $_var_89 = SafeRequest("period", "post") ?: 0;
  310. $_var_90 = ["一个月", "三个月", "半年", "一年", "永久"][$_var_89];
  311. $_var_91 = json_decode(IN_WEBVIEWPOINTS, true);
  312. $_var_91 = $_var_91[$_var_89];
  313. !$_var_80 && $this->user["money"] < $_var_91 and reJSON(-2);
  314. $_var_89 = [1, 3, 6, 12, -1][$_var_89];
  315. if ($_var_88) {
  316. $_var_67 = $_var_88["id"];
  317. if (!$_var_80) {
  318. $_var_87["period"] = $_var_89 < 0 ? $_var_89 : strtotime("+ " . $_var_89 . " months", max([$_var_88["period"], time()]));
  319. }
  320. @unlink(IN_ATTACHMENT_PATH . "pack/" . $_var_88["file"]);
  321. db("app_pack")->json(["config"])->where("id", $_var_67)->update($_var_87);
  322. } else {
  323. $_var_87["period"] = $_var_89 < 0 ? $_var_89 : strtotime("+ " . $_var_89 . " months");
  324. $_var_87["create_time"] = time();
  325. $_var_67 = db("app_pack")->json(["config"])->insertGetId($_var_87);
  326. }
  327. $_var_76 = $_var_76 ? "true" : "false";
  328. $_var_77 = $_var_77 ? "true" : "false";
  329. $_var_70 = $_var_78 ? $_var_70 . "/app1.html" : $_var_70;
  330. $_var_92 = file_get_contents(IN_ROOT . "./static/pack/mobileconfig/ios.mobileconfig");
  331. $_var_92 = str_replace(array("[name]", "[link]", "[icon]", "[bid]", "[FullScreen]", "[IsRemovable]"), array(convert_charset($_var_69), $_var_70, trim($_var_85), $_var_74, $_var_76, $_var_77), $_var_92);
  332. $_var_93 = $_var_72 . "/" . $_var_73 . ".mobileconfig";
  333. mFile_put_contents($_var_93, $_var_92);
  334. $_var_94 = IN_ATTACHMENT_PATH . "pack/" . $_var_86;
  335. creatdir(IN_ATTACHMENT_PATH . "pack/");
  336. $_var_95 = IN_CERT_PATH;
  337. if (function_exists("exec") && is_file($_var_95 . "public/5cando.pem")) {
  338. exec("openssl smime -sign -in " . $_var_93 . " -out " . $_var_94 . " -signer " . $_var_95 . "public/5cando.pem -inkey " . $_var_95 . "public/5cando.key -certfile " . $_var_95 . "public/5cando.pem -outform der -nodetach");
  339. } else {
  340. rename($_var_93, $_var_94);
  341. }
  342. $_var_96 = @filesize($_var_94);
  343. db("app_pack")->where("id", $_var_67)->update(["size" => $_var_96 ?: 1]);
  344. if (!$_var_80) {
  345. $_var_97 = db("user")->where("in_userid", $this->user["in_userid"])->dec("money", $_var_91)->update();
  346. $_var_97 && aclog_save($this->user["in_userid"], $this->user["money"] - $_var_91, $this->user["money"], "money", $_var_69 . "-免签封装-" . $_var_90);
  347. }
  348. reJSON(["id" => bees_encrypt($_var_67)], 1);
  349. }
  350. function pack_pub($id = 0)
  351. {
  352. $_var_98 = db("app_pack")->field("name in_name,icon in_icon,user_id in_uid,bundle_id in_bid,version in_bsvs,type in_type,file in_app,size in_size,config")->where("id", $id)->json(["config"], true)->find();
  353. $_var_98["in_uname"] = $this->user["in_username"];
  354. $_var_99 = str_replace("/pack/", "/app/", $_var_98["in_icon"]);
  355. creatdir(IN_ROOT . dirname($_var_99));
  356. @copy(IN_ROOT . $_var_98["in_icon"], str_replace("/pack/", "/app/", IN_ROOT . $_var_99));
  357. $_var_98["in_icon"] = str_replace("/data/image/app/", "", $_var_99);
  358. unset($_var_98["config"]);
  359. @copy(IN_ATTACHMENT_PATH . "pack/" . $_var_98["in_app"], IN_ATTACHMENT_PATH . $_var_98["in_app"]);
  360. $_var_98["in_form"] = $_var_98["in_type"] ? "iOS" : "Android";
  361. $_var_98["in_size"] = $_var_98["in_size"] ?: 1;
  362. $_var_98["in_deduct"] = getDeduct($_var_98["in_size"]);
  363. $_var_98["in_updatetime"] = time();
  364. if ($_var_100 = db("appid")->where("in_uid", $_var_98["in_uid"])->where("in_bid", $_var_98["in_bid"])->where("in_name", $_var_98["in_name"])->where("in_type", $_var_98["in_type"])->value("in_id")) {
  365. db("appid")->where("in_id", $_var_100)->update($_var_98);
  366. } else {
  367. $_var_98["in_addtime"] = time();
  368. $_var_100 = db("appid")->where("in_id", $_var_100)->insertGetId($_var_98);
  369. }
  370. $_var_98 = db("appid")->where("in_id", $_var_100)->find();
  371. $_var_98["in_appid"] = $_var_98["in_id"];
  372. unset($_var_98["in_id"]);
  373. $_var_98["in_addtime"] = time();
  374. db("app")->where("in_appid", $_var_100)->update(["in_release" => 0]);
  375. db("app")->strict(false)->insert($_var_98);
  376. db("user")->where("in_userid", $_var_98["in_uid"])->inc("in_spaceuse", $_var_98["in_size"])->update();
  377. return $_var_100;
  378. }
  379. function ajax_pub()
  380. {
  381. $_var_101 = SafeRequest("id", "get");
  382. $_var_102 = $this->pack_pub($_var_101);
  383. reJSON(["id" => bees_encrypt($_var_102)], 1);
  384. }
  385. function pub()
  386. {
  387. $_var_103 = SafeRequest("id", "get");
  388. $_var_103 = is_numeric($_var_103) ? $_var_103 : bees_decrypt($_var_103);
  389. $_var_104 = $this->pack_pub($_var_103);
  390. redirect("/index/publish_success/?id=" . bees_encrypt($_var_104));
  391. }
  392. function uploadkeystore()
  393. {
  394. if (!empty($_FILES)) {
  395. $_var_105 = SafeRequest("fn", "get") ?: time();
  396. $_var_106 = pathinfo($_FILES["keysotre"]["name"]);
  397. $_var_107 = strtolower($_var_106["extension"]);
  398. if ($_var_107 == "jks") {
  399. $_var_108 = $_var_105 . "." . $_var_107;
  400. $_var_109 = IN_ROOT . "data/tmp";
  401. creatdir($_var_109);
  402. @move_uploaded_file($_FILES["keysotre"]["tmp_name"], $_var_109 . "/" . $_var_108);
  403. reJSON(["key" => $_var_108]);
  404. }
  405. }
  406. reJSON(0);
  407. }
  408. function createkeystore()
  409. {
  410. $_var_110 = uniqid();
  411. $_var_111 = new keystore(IN_CERT_PATH . "keystore/" . $this->userid . "-" . $_var_110 . "/");
  412. $_var_112 = $_var_111->create($_var_110);
  413. reJSON(["alias" => $_var_110, "keypass" => "123456", "storepass" => "123456"]);
  414. }
  415. function downloadkeystore()
  416. {
  417. $_var_113 = SafeRequest("alias", "get");
  418. if (strstr($_var_113, ".jks")) {
  419. $_var_114 = IN_TMP_PATH . $_var_113;
  420. } else {
  421. $_var_115 = new keystore(IN_CERT_PATH . "keystore/" . $this->userid . "-" . $_var_113 . "/");
  422. $_var_114 = $_var_115->create($_var_113);
  423. }
  424. downloadFile($_var_114);
  425. }
  426. }