"; public function initialize() { parent::initialize(); $this->Administrator(3); if (in_array($this->action, ["index", "edit"])) { $this->header(); } } public function __destruct() { if (in_array($this->action, ["index", "edit"])) { $this->footer(); } } function index($map = []) { $this->search = SafeRequest("search", "get"); $this->search && ($map[] = ["iss|tid|kid|username", "like", "%" . $this->search . "%"]); $this->type = SafeRequest("type", "get"); is_numeric($this->type) && ($map[] = ["type", "=", $this->type]); $this->uid = SafeRequest("uid", "get"); is_numeric($this->uid) && ($map[] = ["user_id", $this->uid ? "<>" : "=", 0]); $this->mapTime("create_time", true, $map); $_var_0 = SafeRequest("iss", "get"); $_var_0 && ($map[] = ["iss", "=", $_var_0]); $_var_1 = SafeRequest("page", "get"); $_var_2 = db("super_cert")->where($map)->order("id desc")->paginate(["page" => $_var_1]); $_var_3 = db("super_cert")->where($map)->sum("total_count"); $_var_4 = db("super_cert")->where("limit_count", ">", 0)->where($map)->sum("limit_count"); $_var_5 = $_var_2->items(); $_var_6 = getRender($_var_2, $_var_1); $_var_7 = $_var_2->total(); ?>
searchForm("", "", function () { ?> 获取P8证书
where("in_userid", $_var_8["user_id"])->value("in_username"); $_var_10 = db("ios_device")->where("cert_iss", $_var_8["iss"])->group("udid")->count(); ?>
证书列表 总计( 被封号(where("status", -1)->count();?>) 未启用(where("status", 0)->count();?>) 使用中(where("status", 1)->count();?>) 疑封号(where("status", 401)->count();?>) 无权限(where("status", 403)->count();?>)
ID 用户 Iss Kid Tid P8 P12 P12密码 已使用() 剩余() 类型 添加时间 到期时间 备注 状态 操作
暂无数据
"> ">下载 ">下载
lightnum("被封号"), "0" => lightnum("未启用"), "1" => "使用中", "401" => lightnum("疑封号"), "403" => lightnum("无权限")][$_var_8["status"]];?> []
查看设备(" . $_var_10 . ")" : "";?>" onclick="doAction('change_status',{id:,status:0},this)">停用loadingImg;?>" onclick="doAction('change_status',{id:,status:1},this)">启用loadingImg;?>登录校验" . $this->loadingImg . "\r\n " : "";?> " onclick="doAction('update',{id:},this)">更新loadingImg;?> ')" class="act">编辑 " onclick="doAction('del',{id:},this)">删除loadingImg;?>
     
where("id", $_var_11)->find(); ?>
nav3(); ?>" />
目录
iss:
" placeholder="必须">
kid:
" placeholder="p8模式必须">
p8文件上传:
模式:
备注:
where("iss", $_var_17)->count())) { reJSON("该证书已存在"); } if ($_var_18) { if (!$_var_21) { reJSON("fastlane模式,开发者账号必须填"); } if (!$_var_22) { reJSON("fastlane模式,开发者密码必须填"); } if (!$_var_23) { reJSON("fastlane模式,双重验证手机必须填"); } if (!$_var_24) { reJSON("fastlane模式,专用密码必须填"); } } else { if (!$_var_19) { reJSON("p8模式,kid必须填"); } $_var_26 = IN_CERT_PATH . getCert($_var_17, $_var_19); if (!empty($_FILES["p8"]) && $_FILES["p8"]["size"]) { $_var_27 = $_FILES["p8"]; $_var_28 = $_var_27["name"]; $_var_29 = pathinfo($_var_28); $_var_30 = strtolower($_var_29["extension"]); if ($_var_30 != "p8") { reJSON("p8文件错误,请上传正确的格式的p8文件"); } $_var_31 = IN_CERT_PATH . bees_encrypt($_var_17) . "/"; if (!is_dir($_var_31)) { @mkdir($_var_31, 0777, true); } @move_uploaded_file($_FILES["p8"]["tmp_name"], $_var_26); } if (!is_file($_var_26)) { reJSON("p8文件错误,请上传正确的格式的p8文件"); } } $_var_32 = ["iss" => $_var_17, "kid" => $_var_19, "p8_file" => getCert($_var_17, $_var_19), "p12_file" => getCert($_var_17, $_var_19, "p12"), "mark" => $_var_20, "type" => $_var_18, "username" => $_var_21, "password" => $_var_22, "mobile" => $_var_23, "sp_password" => $_var_24]; if ($_var_16) { $_var_33 = db("super_cert")->where("id", $_var_16)->update($_var_32); } else { $_var_32 = array_merge($_var_32, ["user_id" => 0, "team_id" => "", "tid" => "", "p12_pwd" => "123456", "limit_count" => 100, "total_count" => 0, "create_time" => time(), "status" => 1]); $_var_34 = db("super_cert")->insertGetId($_var_32); if ($_var_34) { $_var_32["id"] = $_var_34; $this->apicert($_var_32); } } reJSON("提交成功", 200); } function update() { $_var_35 = SafeRequest("id") ?: $_var_35; $_var_36 = db("super_cert")->where("id", $_var_35)->find(); if (!$_var_36) { reJSON("证书不存在!"); } $this->apicert($_var_36); reJSON("更新成功", 200); } function apicert($_var_37) { $_var_38 = $_var_37["id"]; $_var_39 = $_var_37["status"]; if ($_var_37["type"]) { if (empty($_var_37["username"]) || empty($_var_37["password"]) || empty($_var_37["mobile"])) { reJSON($_var_37["id"] . "号证书信息遗漏,请联系管理员完善"); } $_var_40 = "export LANG=\"en_US.UTF-8\";export LC_ALL=\"en_US.UTF-8\";export PATH=\"/root/.pyenv/shims:/root/.pyenv/bin:/usr/local/php/bin:/usr/local/nginx/sbin:/usr/local/mysql/bin:/usr/local/rvm/gems/ruby-2.6.5/bin:/usr/local/rvm/gems/ruby-2.6.5@global/bin:/usr/local/rvm/rubies/ruby-2.6.5/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/rvm/bin:/root/bin\";export GEM_HOME=\"/usr/local/rvm/gems/ruby-2.6.5\";export GEM_PATH=\"/usr/local/rvm/gems/ruby-2.6.5:/usr/local/rvm/gems/ruby-2.6.5@global\";export FASTLANE_USER=\"" . $_var_37["username"] . "\";export FASTLANE_PASSWORD=\"" . $_var_37["password"] . "\";export FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD=\"" . $_var_37["sp_password"] . "\";export SPACESHIP_2FA_SMS_DEFAULT_PHONE_NUMBER=\"+86 " . $_var_37["mobile"] . "\";export FASTLANE_SESSION='" . $_var_37["fastlane_session"] . "';cd " . IN_ROOT . "static/sign_tools/fastlane/;ruby saveCert.rb " . $_var_37["iss"] . " 1"; exec($_var_40, $_var_41, $_var_42); creatdir(IN_TMP_PATH . "saveCert/"); file_put_contents(IN_TMP_PATH . "saveCert/" . $_var_37["username"] . time() . ".txt", $_var_40); if (!empty($_var_41[0])) { $_var_43 = json_decode($_var_41[0], true); if (empty($_var_43) || !isset($_var_43["status"])) { reJSON("处理失败,未能正常获取响应内容"); } if ($_var_43["status"] == 0) { reJSON("任务失败,消息提示:" . $_var_43["msg"]); } reJSON("处理成功"); } reJSON("处理失败,提示:" . print_R($_var_41, true)); } @certMoveToNew($_var_37); $_var_44 = $_var_37["iss"]; $_var_45 = $_var_37["kid"]; $_var_46 = ["iss" => $_var_44, "kid" => $_var_45, "secret" => IN_CERT_PATH . getCert($_var_44, $_var_45)]; $_var_47 = new Client($_var_46); $_var_47->setHeaders(["Authorization" => "Bearer " . $_var_47->getToken()]); $_var_48 = $_var_47->api("certificates")->all(["filter[certificateType]" => "IOS_DISTRIBUTION"]); if (isset($_var_48["errors"][0]["status"])) { if (($_var_39 == 401 || $_var_39 == -1) && $_var_48["errors"][0]["status"] == 401) { $_var_42 = -1; } else { $_var_42 = $_var_48["errors"][0]["status"]; } $_var_49 = db("super_cert")->where("id", $_var_38)->update(["status" => $_var_42]); reJSON($_var_48["errors"][0]["title"], 200); } if (count($_var_48["data"]) < 2) { $_var_50 = $_var_47->api("certificates")->reg(); if ($_var_50["data"]) { $_var_48["data"][] = $_var_50["data"]; } } $_var_51 = 0; $_var_52 = ""; foreach (array_reverse($_var_48["data"]) as $_var_53 => $_var_37) { $_var_54 = IN_CERT_PATH . getCert($_var_44, $_var_45, "cer"); file_put_contents($_var_54, base64_decode($_var_37["attributes"]["certificateContent"])); $_var_55 = 123456; $_var_56 = IN_CERT_PATH . "public/ios.key"; exec("openssl x509 -in " . $_var_54 . " -inform DER -outform PEM -out " . IN_CERT_PATH . getCert($_var_44, $_var_45, "pem") . " 2>&1", $_var_41, $_var_57); file_put_contents(IN_TMP_PATH . "supercert_add_openssl.log", $_var_41); exec("openssl pkcs12 -export -inkey " . $_var_56 . " -in " . IN_CERT_PATH . getCert($_var_44, $_var_45, "pem") . " -out " . IN_CERT_PATH . getCert($_var_44, $_var_45, "p12") . " -passout pass:" . $_var_55, $_var_41, $_var_57); file_put_contents(IN_TMP_PATH . "supercert_add_openssl2.log", $_var_41); if (file_get_contents(IN_CERT_PATH . getCert($_var_44, $_var_45, "p12"))) { $_var_51 = $_var_37["id"]; $_var_52 = $_var_37["attributes"]["expirationDate"]; break 1; } else { $_var_47->api("certificates")->del($_var_37["id"]); } } if (!$_var_51) { reJSON("没有可使用的证书文件"); } $_var_58 = $_var_47->api("device")->all(["limit" => 200]); if (isset($_var_58["data"])) { foreach ($_var_58["data"] as $_var_53 => $_var_59) { if (!db("ios_device")->where("udid", $_var_59["attributes"]["udid"])->where("cert_iss", $_var_44)->count()) { db("ios_device")->insert(["app_id" => 0, "udid" => $_var_59["attributes"]["udid"], "cert_iss" => $_var_44]); } } if ($_var_39 != 0) { $_var_60["status"] = 1; } $_var_60["tid"] = $_var_51; $_var_60["total_count"] = $_var_58["meta"]["paging"]["total"]; $_var_60["limit_count"] = 100 - $_var_60["total_count"]; $_var_60["expirationDate"] = $_var_52 ? strtotime($_var_52) : time(); $_var_49 = db("super_cert")->where("id", $_var_38)->update($_var_60); } } function del() { $_var_61 = intval(SafeRequest("id")); $_var_62 = db("super_cert")->where("id", $_var_61)->find(); $_var_63 = db("super_cert")->where("id", $_var_61)->delete(); if ($_var_63) { @certMoveToNew($_var_62); @destroyDir(IN_CERT_PATH . bees_encrypt($_var_62["iss"])); db("ios_device")->where("cert_iss", $_var_62["iss"])->delete(); } reJSON("删除成功", 200); } function change_status() { $_var_64 = intval(SafeRequest("id")); $_var_65 = intval(SafeRequest("status")); db("super_cert")->where("id", $_var_64)->update(["status" => $_var_65]); if ($_var_65) { $this->update($_var_64); } reJSON("修改成功", 200); } function checkLogin() { $_var_66 = intval(SafeRequest("id")); $_var_67 = db("super_cert")->where("id", $_var_66)->find(); if (!$_var_67) { reJSON("证书不存在!"); } if (empty($_var_67["username"]) || empty($_var_67["password"]) || empty($_var_67["mobile"])) { reJSON($_var_67["id"] . "号证书信息遗漏,请联系管理员完善"); } $_var_68 = "export LANG=\"en_US.UTF-8\";export LC_ALL=\"en_US.UTF-8\";export PATH=\"/root/.pyenv/shims:/root/.pyenv/bin:/usr/local/php/bin:/usr/local/nginx/sbin:/usr/local/mysql/bin:/usr/local/rvm/gems/ruby-2.6.5/bin:/usr/local/rvm/gems/ruby-2.6.5@global/bin:/usr/local/rvm/rubies/ruby-2.6.5/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/rvm/bin:/root/bin\";export GEM_HOME=\"/usr/local/rvm/gems/ruby-2.6.5\";export GEM_PATH=\"/usr/local/rvm/gems/ruby-2.6.5:/usr/local/rvm/gems/ruby-2.6.5@global\";export FASTLANE_USER=\"" . $_var_67["username"] . "\";export FASTLANE_PASSWORD=\"" . $_var_67["password"] . "\";export FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD=\"" . $_var_67["sp_password"] . "\";export SPACESHIP_2FA_SMS_DEFAULT_PHONE_NUMBER=\"+86 " . $_var_67["mobile"] . "\";export FASTLANE_SESSION='" . $_var_67["fastlane_session"] . "';cd " . IN_ROOT . "static/sign_tools/fastlane/;"; exec($_var_68 . "ruby checkLogin.rb", $_var_69, $_var_70); creatdir(IN_TMP_PATH . "checkLogin/"); file_put_contents(IN_TMP_PATH . "checkLogin/" . $_var_67["username"] . time() . ".log", $_var_68 . "fastlane spaceauth;ruby checkLogin.rb"); if (!empty($_var_69[0])) { $_var_71 = json_decode($_var_69[0], true); if (empty($_var_71) || !isset($_var_71["status"])) { reJSON("登录失败,未能正常获取响应内容"); } if ($_var_71["status"] == 0) { reJSON("登录失败,消息提示:" . $_var_71["msg"]); } $_var_71["session"] = base64_decode($_var_71["session"]); if (empty($_var_71["session"])) { reJSON("未能获取session"); } if (strpos($_var_71["session"], "---\\n- !ruby/object:") === false) { reJSON("session格式校验失败"); } db("super_cert")->where("id", $_var_66)->update(["fastlane_session" => $_var_71["session"]]); reJSON("登录正常,session更新成功"); } reJSON("登录失败,提示:" . print_r($_var_69, true)); } }