super_ajax.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. <?php
  2. namespace app\index;
  3. header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
  4. header("Cache-Control: no-cache, must-revalidate");
  5. header("Pragma: no-cache");
  6. header("Content-type: text/html;charset=" . IN_CHARSET);
  7. use MingYuanYun\AppStore\Client;
  8. use MingYuanYun\AppStore\Exceptions\InvalidArgumentException;
  9. class super_ajax extends BaseUser
  10. {
  11. function initialize()
  12. {
  13. parent::initialize();
  14. $this->userlogined or reJSON("请先登录后再操作!", 404);
  15. }
  16. function set_status()
  17. {
  18. $_var_0 = SafeRequest("id", "post");
  19. $_var_1 = SafeRequest("status", "post");
  20. $_var_2 = db("super_cert")->where("id", $_var_0)->update(["status" => $_var_1]);
  21. reJSON($_var_2 ? "更改成功" : "没有做出更改", $_var_2 ? 200 : 404);
  22. }
  23. function del()
  24. {
  25. $_var_3 = SafeRequest("id", "post");
  26. $_var_4 = db("super_cert")->where("id", $_var_3)->find();
  27. $_var_5 = db("super_cert")->where("id", $_var_3)->delete();
  28. if ($_var_5) {
  29. certMoveToNew($_var_4);
  30. @creatdir(IN_CERT_PATH . bees_encrypt($_var_4["iss"]));
  31. db("ios_device")->where("cert_iss", $_var_4["iss"])->delete();
  32. }
  33. reJSON($_var_5 ? "删除成功" : "删除失败", $_var_5 ? 200 : 404);
  34. }
  35. function save()
  36. {
  37. $_var_6 = intval(SafeRequest("id", "post"));
  38. if ($_var_6) {
  39. $_var_7 = db("super_cert")->where("id", $_var_6)->find();
  40. $_var_8 = $_var_7["iss"];
  41. $_var_9 = $_var_7["kid"];
  42. $_var_10 = getCert($_var_8, $_var_9);
  43. } else {
  44. $_var_11 = SafeRequest("team_id", "post");
  45. if (!$_var_11) {
  46. reJSON("请输入账号", 404);
  47. }
  48. $_var_8 = SafeRequest("iss", "post");
  49. if (!$_var_8) {
  50. reJSON("请输入iss", 404);
  51. }
  52. $_var_9 = SafeRequest("kid", "post");
  53. if (!$_var_9) {
  54. reJSON("请输入kid", 404);
  55. }
  56. $_var_12 = $_FILES["p8"];
  57. if (!$_var_12) {
  58. reJSON("请上传p8证书", 404);
  59. }
  60. $_var_13 = $_var_12["name"];
  61. $_var_14 = pathinfo($_var_13);
  62. $_var_15 = strtolower($_var_14["extension"]);
  63. if ($_var_15 != "p8") {
  64. reJSON("请上传p8证书", 404);
  65. }
  66. $_var_16 = IN_CERT_PATH . $_var_8 . "/";
  67. if (!is_dir($_var_16)) {
  68. @mkdir($_var_16, 0777, true);
  69. }
  70. $_var_10 = IN_CERT_PATH . getCert($_var_8, $_var_9, $_var_15);
  71. @move_uploaded_file($_FILES["p8"]["tmp_name"], $_var_10);
  72. $_var_17 = SafeRequest("mark", "post");
  73. }
  74. if (!is_file($_var_10)) {
  75. reJSON("p8文件错误,请重新上传", 404);
  76. }
  77. if (!$_var_6 && ($_var_18 = db("super_cert")->where("iss", $_var_8)->find())) {
  78. reJSON("该证书已存在", 404);
  79. }
  80. $_var_19 = ["iss" => $_var_8, "kid" => $_var_9, "secret" => $_var_10];
  81. $_var_20 = new Client($_var_19);
  82. $_var_20->setHeaders(["Authorization" => "Bearer " . $_var_20->getToken()]);
  83. $_var_21 = $_var_20->api("certificates")->all(["filter[certificateType]" => "IOS_DISTRIBUTION"]);
  84. if (isset($_var_21["errors"][0]["status"])) {
  85. reJSON($_var_21["errors"][0]["title"], 404);
  86. }
  87. if (count($_var_21["data"]) < 2) {
  88. $_var_22 = $_var_20->api("certificates")->reg();
  89. if ($_var_22["data"]) {
  90. $_var_21["data"][] = $_var_22["data"];
  91. }
  92. }
  93. $_var_23 = 0;
  94. $_var_24 = "";
  95. foreach (array_reverse($_var_21["data"]) as $_var_25 => $_var_7) {
  96. $_var_26 = IN_CERT_PATH . getCert($_var_8, $_var_9, "cer");
  97. file_put_contents($_var_26, base64_decode($_var_7["attributes"]["certificateContent"]));
  98. $_var_27 = 123456;
  99. $_var_28 = IN_CERT_PATH . "public/ios.key";
  100. exec("openssl x509 -in " . $_var_26 . " -inform DER -outform PEM -out " . IN_CERT_PATH . getCert($_var_8, $_var_9, "pem") . " 2>&1", $_var_29, $_var_30);
  101. file_put_contents(IN_TMP_PATH . "supercert_add_openssl.log", $_var_29);
  102. exec("openssl pkcs12 -export -inkey " . $_var_28 . " -in " . IN_CERT_PATH . getCert($_var_8, $_var_9, "pem") . " -out " . IN_CERT_PATH . getCert($_var_8, $_var_9, "p12") . " -passout pass:" . $_var_27, $_var_29, $_var_30);
  103. file_put_contents(IN_TMP_PATH . "supercert_add_openssl2.log", $_var_29);
  104. if (file_get_contents(IN_CERT_PATH . getCert($_var_8, $_var_9, "p12"))) {
  105. $_var_23 = $_var_7["id"];
  106. $_var_24 = $_var_7["attributes"]["expirationDate"];
  107. break;
  108. }
  109. }
  110. if (!$_var_23) {
  111. reJSON("没有可使用的证数文件", 404);
  112. }
  113. $_var_31 = $_var_20->api("device")->all(["limit" => 200]);
  114. if (isset($_var_31["data"])) {
  115. foreach ($_var_31["data"] as $_var_25 => $_var_32) {
  116. if (!db("ios_device")->where("udid", $_var_32["attributes"]["udid"])->where("cert_iss", $_var_8)->count()) {
  117. db("ios_device")->insert(["app_id" => 0, "udid" => $_var_32["attributes"]["udid"], "cert_iss" => $_var_8]);
  118. }
  119. }
  120. $_var_33["total_count"] = $_var_31["meta"]["paging"]["total"];
  121. $_var_33["limit_count"] = 100 - $_var_33["total_count"];
  122. }
  123. $_var_33["expirationDate"] = $_var_24 ? strtotime($_var_24) : time();
  124. if ($_var_6) {
  125. $_var_33["tid"] = $_var_23;
  126. $_var_34 = db("super_cert")->where("id", $_var_6)->update($_var_33);
  127. } else {
  128. $_var_35 = SafeRequest("user_id", "post");
  129. $_var_33 = array_merge($_var_33, ["user_id" => $_var_35 ? $_var_35 : 0, "team_id" => $_var_11, "iss" => $_var_8, "kid" => $_var_9, "tid" => $_var_23, "mark" => $_var_17, "p8_file" => getCert($_var_8, $_var_9), "p12_file" => getCert($_var_8, $_var_9, "p12"), "p12_pwd" => $_var_27, "create_time" => time(), "status" => 1, "type" => 0]);
  130. $_var_34 = db("super_cert")->insert($_var_33);
  131. }
  132. reJSON($_var_6 ? "更新成功" : "生成成功", 200);
  133. }
  134. }