diff --git a/fir_client/src/components/user/FirSuperSignBase.vue b/fir_client/src/components/user/FirSuperSignBase.vue
index 14c0bc9..7e97445 100644
--- a/fir_client/src/components/user/FirSuperSignBase.vue
+++ b/fir_client/src/components/user/FirSuperSignBase.vue
@@ -65,13 +65,16 @@
同步设备信息
- 手动创建发布证书
-
+ 手动创建发布证书
+
+
+
删除并创建新发布证书
+ @click="isorenewcert">删除发布证书
{
if (data.code === 1000) {
this.$message.success("证书导入成功");
- this.importcertDeveloperVisible = false
+ this.importcertDeveloperVisible = false;
+ this.dialogaddDeveloperVisible = false;
+ this.handleCurrentChange(this.pagination.currentPage)
} else {
this.$message.error("证书导入失败 " + data.msg)
}
@@ -561,9 +566,21 @@
});
},
isocertcert() {
- this.iosdeveloperFun({
- "methods": "PUT",
- "data": {"issuer_id": this.editdeveloperinfo.issuer_id, "act": "ioscert"}
+
+ this.$confirm('此操作将要创建新的发布证书, 是否继续?', '提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning'
+ }).then(() => {
+ this.iosdeveloperFun({
+ "methods": "PUT",
+ "data": {"issuer_id": this.editdeveloperinfo.issuer_id, "act": "ioscert"}
+ });
+ }).catch(() => {
+ this.$message({
+ type: 'info',
+ message: '已取消'
+ });
});
},
exportcert() {
@@ -572,10 +589,22 @@
}, {methods: 'FILE', data: {issuer_id: this.editdeveloperinfo.issuer_id}})
},
isorenewcert() {
- this.iosdeveloperFun({
- "methods": "PUT",
- "data": {"issuer_id": this.editdeveloperinfo.issuer_id, "act": "renewcert"}
+ this.$confirm('此操作将永久删除该发布证书, 建议先导出证书。是否继续删除?', '提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning'
+ }).then(() => {
+ this.iosdeveloperFun({
+ "methods": "PUT",
+ "data": {"issuer_id": this.editdeveloperinfo.issuer_id, "act": "renewcert"}
+ });
+ }).catch(() => {
+ this.$message({
+ type: 'info',
+ message: '已取消'
+ });
});
+
},
activedeveloperFun(developer, act) {
this.iosdeveloperFun({"methods": "PUT", "data": {"issuer_id": developer.issuer_id, "act": act}});
diff --git a/fir_ser/api/utils/app/iossignapi.py b/fir_ser/api/utils/app/iossignapi.py
index 850179a..588d312 100644
--- a/fir_ser/api/utils/app/iossignapi.py
+++ b/fir_ser/api/utils/app/iossignapi.py
@@ -65,6 +65,9 @@ class ResignApp(object):
p12.set_privatekey(private_key)
with open(self.app_dev_p12, 'wb+') as f:
f.write(p12.export(password))
+ if password:
+ with open(self.app_dev_p12 + '.pwd', 'w') as f:
+ f.write(password)
return True, p12.get_friendlyname()
except Exception as e:
result["err_info"] = e
@@ -191,9 +194,16 @@ class AppDeveloperApiV2(object):
result = {}
try:
apple_obj = AppStoreConnectApi(self.issuer_id, self.private_key_id, self.p8key)
- if apple_obj.revoke_certificate(cert_id):
- logger.info("ios developer cert %s revoke result:%s" % cert_id)
- return True, result
+ cert_obj = apple_obj.get_certificate_by_cid(cert_id)
+ if cert_obj:
+ s_date = format_apple_date(cert_obj.expirationDate)
+ if s_date.timestamp() - datetime.datetime.now().timestamp() < 3600 * 24 * 3:
+ if apple_obj.revoke_certificate(cert_id):
+ logger.info("ios developer cert %s revoke" % cert_id)
+ return True, result
+ else:
+ logger.info("ios developer cert %s not revoke.because expire time < 3 day " % cert_id)
+ return True, result
except Exception as e:
logger.error("ios developer cert %s revoke Failed Exception:%s" % (cert_id, e))
result['return_info'] = "%s" % e
@@ -208,6 +218,7 @@ class AppDeveloperApiV2(object):
certificates = apple_obj.get_all_certificates()
for cert_obj in certificates:
f_date = format_apple_date(cert_obj.expirationDate)
+ logger.info("%s-%s - %s " % (cert_obj.id, not_after.timestamp(), f_date.timestamp()))
if not_after.timestamp() == f_date.timestamp():
return True, cert_obj
return False, result
diff --git a/fir_ser/api/utils/app/supersignutils.py b/fir_ser/api/utils/app/supersignutils.py
index d5107e8..a4feabc 100644
--- a/fir_ser/api/utils/app/supersignutils.py
+++ b/fir_ser/api/utils/app/supersignutils.py
@@ -698,7 +698,9 @@ class IosUtils(object):
developer_obj.cert_expire_time = format_apple_date(cert_obj.expirationDate)
break
developer_obj.is_actived = True
- developer_obj.save()
+ else:
+ developer_obj.is_actived = False
+ developer_obj.save()
return status, result
@staticmethod
@@ -712,6 +714,8 @@ class IosUtils(object):
AppIOSDeveloperInfo.objects.filter(user_id=user_obj, issuer_id=auth.get("issuer_id")).update(
is_actived=True,
certid=cert_id, cert_expire_time=format_apple_date(result.expirationDate))
+ resign_app_obj = IosUtils.get_resign_obj(user_obj, developer_obj)
+ resign_app_obj.make_p12_from_cert(cert_id)
return status, result
@staticmethod
@@ -719,7 +723,8 @@ class IosUtils(object):
auth = get_auth_form_developer(developer_obj)
app_api_obj = get_api_obj(auth)
status, result = app_api_obj.revoke_cert(developer_obj.certid)
- if status:
+ if not status:
+ logger.warning('%s revoke cert failed,but i need clean cert_id %s' % (developer_obj.issuer_id, result))
AppIOSDeveloperInfo.objects.filter(user_id=user_obj, issuer_id=auth.get("issuer_id")).update(
is_actived=True,
certid=None, cert_expire_time=None)
diff --git a/fir_ser/api/utils/apple/appleapiv3.py b/fir_ser/api/utils/apple/appleapiv3.py
index 1e5828a..1ace0f6 100644
--- a/fir_ser/api/utils/apple/appleapiv3.py
+++ b/fir_ser/api/utils/apple/appleapiv3.py
@@ -21,7 +21,10 @@ logger = logging.getLogger(__file__)
#
def request_format_log(req):
- logger.info("url:%s header:%s code:%s body:%s" % (req.url, req.headers, req.status_code, req.content))
+ try:
+ logger.info("url:%s header:%s code:%s body:%s" % (req.url, req.headers, req.status_code, req.content))
+ except Exception as e:
+ logger.error(e)
return req
@@ -743,6 +746,10 @@ class AppStoreConnectApi(DevicesAPI, BundleIDsAPI, BundleIDsCapabilityAPI, Profi
req = self.list_certificate()
return self.__certificates_store(req)
+ def get_certificate_by_cid(self, certificate_id):
+ req = self.list_certificate_by_certificate_id(certificate_id)
+ return self.__certificates_store(req)
+
def list_device_by_udid(self, udid):
device_obj_list = BaseInfoObj.filter(self.get_all_devices(), {"udid": udid})
if not device_obj_list:
diff --git a/fir_ser/api/views/supersign.py b/fir_ser/api/views/supersign.py
index 50026a9..1cc599f 100644
--- a/fir_ser/api/views/supersign.py
+++ b/fir_ser/api/views/supersign.py
@@ -93,16 +93,17 @@ class DeveloperView(APIView):
IosUtils.clean_developer(developer_obj, request.user)
status, result = IosUtils.revoke_developer_cert(developer_obj, request.user)
if status:
- status, result = IosUtils.create_developer_cert(developer_obj, request.user)
- if status:
- IosUtils.get_device_from_developer(developer_obj, request.user)
- else:
- res.code = 1008
- res.msg = result.get("err_info")
- return Response(res.dict)
+ pass
+ # status, result = IosUtils.create_developer_cert(developer_obj, request.user)
+ # if status:
+ # IosUtils.get_device_from_developer(developer_obj, request.user)
+ # else:
+ # res.code = 1008
+ # res.msg = result.get("err_info")
+ # return Response(res.dict)
else:
res.code = 1008
- res.msg = result.get("err_info")
+ res.msg = result.get("err_info", '')
return Response(res.dict)
elif act == "syncdevice":
status, result = IosUtils.get_device_from_developer(developer_obj, request.user)
@@ -185,6 +186,7 @@ class DeveloperView(APIView):
logger.error("user %s delete developer %s " % (
request.user, developer_obj))
IosUtils.clean_developer(developer_obj, request.user)
+ IosUtils.revoke_developer_cert(developer_obj, request.user)
developer_obj.delete()
return self.get(request)
@@ -264,6 +266,8 @@ class SuperSignCertView(APIView):
issuer_id = request.query_params.get('issuer_id', None)
if issuer_id:
developer_obj = AppIOSDeveloperInfo.objects.filter(user_id=request.user, issuer_id=issuer_id).first()
+ # resign_app_obj = IosUtils.get_resign_obj(request.user, developer_obj)
+ # resign_app_obj.make_p12_from_cert(developer_obj.certid)
if developer_obj:
zip_file_path = IosUtils.zip_cert(request.user, developer_obj)
response = FileResponse(open(zip_file_path, 'rb'))
@@ -286,6 +290,7 @@ class SuperSignCertView(APIView):
if not status:
res.code = 1002
res.msg = str(result['err_info'])
+ return Response(res.dict)
status, result = IosUtils.auto_get_certid_by_p12(developer_obj, request.user)
if not status:
res.code = 1003