forked from elmau/empresa-libre
Refactory upload certificates
This commit is contained in:
parent
85c5a37798
commit
d8ecae2c8f
|
@ -35,6 +35,7 @@ class SATCertificate(object):
|
||||||
self._is_fiel = False
|
self._is_fiel = False
|
||||||
self._are_couple = False
|
self._are_couple = False
|
||||||
self._is_valid_time = False
|
self._is_valid_time = False
|
||||||
|
self._cer = b''
|
||||||
self._cer_pem = ''
|
self._cer_pem = ''
|
||||||
self._cer_txt = ''
|
self._cer_txt = ''
|
||||||
self._key_enc = b''
|
self._key_enc = b''
|
||||||
|
@ -64,6 +65,7 @@ class SATCertificate(object):
|
||||||
return digest.finalize()
|
return digest.finalize()
|
||||||
|
|
||||||
def _get_data_cer(self, cer):
|
def _get_data_cer(self, cer):
|
||||||
|
self._cer = cer
|
||||||
obj = x509.load_der_x509_certificate(cer, default_backend())
|
obj = x509.load_der_x509_certificate(cer, default_backend())
|
||||||
self._rfc = obj.subject.get_attributes_for_oid(
|
self._rfc = obj.subject.get_attributes_for_oid(
|
||||||
NameOID.X500_UNIQUE_IDENTIFIER)[0].value.split(' ')[0]
|
NameOID.X500_UNIQUE_IDENTIFIER)[0].value.split(' ')[0]
|
||||||
|
@ -182,6 +184,10 @@ class SATCertificate(object):
|
||||||
def is_valid_time(self):
|
def is_valid_time(self):
|
||||||
return self._is_valid_time
|
return self._is_valid_time
|
||||||
|
|
||||||
|
@property
|
||||||
|
def cer(self):
|
||||||
|
return self._cer
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def cer_pem(self):
|
def cer_pem(self):
|
||||||
return self._cer_pem.encode()
|
return self._cer_pem.encode()
|
||||||
|
|
|
@ -619,17 +619,9 @@ def get_client_balance(auth):
|
||||||
|
|
||||||
|
|
||||||
def get_cert(args):
|
def get_cert(args):
|
||||||
p1 = '/home/mau/Desktop/Pruebas_EKU9003173C9/file.cer'
|
cer = base64.b64decode(args['cer'].split(',')[1])
|
||||||
cer = args['cer']
|
key = base64.b64decode(args['key'].split(',')[1])
|
||||||
# ~ cer = cer.encode()
|
cert = SATCertificate(cer, key, args['contra'])
|
||||||
# ~ cer = base64.b64decode(args['cer'].encode())
|
return cert
|
||||||
with open(p1, 'w') as f:
|
|
||||||
f.write(cer)
|
|
||||||
# ~ cer = base64.b64decode(args['cer'].encode())
|
|
||||||
print('TYPE', type(cer))
|
|
||||||
# ~ print(cer)
|
|
||||||
# ~ key = base64.b64decode(args['key'].encode())
|
|
||||||
# ~ cert = SATCertificate(cer, key, args['contra'])
|
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1181,10 +1181,36 @@ class Certificado(BaseModel):
|
||||||
return getattr(cls, f'_get_{opt}')(values)
|
return getattr(cls, f'_get_{opt}')(values)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _validate(cls, args):
|
def _validate_cert(cls, args):
|
||||||
|
msg = 'Certificado guardado correctamente'
|
||||||
|
result = {'ok': True, 'msg': msg, 'data': {}}
|
||||||
cert = utils.get_cert(args)
|
cert = utils.get_cert(args)
|
||||||
print(cert)
|
if not cert.is_valid:
|
||||||
return {'ok': False, 'msg': 'error', 'data': {}}
|
result['ok'] = False
|
||||||
|
result['msg'] = cert.error
|
||||||
|
return result
|
||||||
|
|
||||||
|
obj = Certificado.get(Certificado.es_fiel==False)
|
||||||
|
if obj.rfc != cert.rfc:
|
||||||
|
result['ok'] = False
|
||||||
|
result['msg'] = 'El RFC del certificado no corresponde.'
|
||||||
|
return result
|
||||||
|
|
||||||
|
obj.key_enc = cert.key_enc
|
||||||
|
obj.cer = cert.cer
|
||||||
|
obj.serie = cert.serial_number
|
||||||
|
obj.desde = cert.not_before
|
||||||
|
obj.hasta = cert.not_after
|
||||||
|
obj.save()
|
||||||
|
|
||||||
|
data = {
|
||||||
|
'cert_rfc': obj.rfc,
|
||||||
|
'cert_serie': obj.serie,
|
||||||
|
'cert_desde': obj.desde,
|
||||||
|
'cert_hasta': obj.hasta,
|
||||||
|
}
|
||||||
|
result['data'] = data
|
||||||
|
return result
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def post(cls, values):
|
def post(cls, values):
|
||||||
|
@ -1198,16 +1224,6 @@ class Certificado(BaseModel):
|
||||||
def get_(cls):
|
def get_(cls):
|
||||||
return Certificado.select()[0]
|
return Certificado.select()[0]
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def add(cls, file_obj):
|
|
||||||
if file_obj.filename.endswith('key'):
|
|
||||||
path_key = util.save_temp(file_obj.file.read())
|
|
||||||
Configuracion.add({'path_key': path_key})
|
|
||||||
elif file_obj.filename.endswith('cer'):
|
|
||||||
path_cer = util.save_temp(file_obj.file.read())
|
|
||||||
Configuracion.add({'path_cer': path_cer})
|
|
||||||
return {'status': 'server'}
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def validate(cls, values, session):
|
def validate(cls, values, session):
|
||||||
row = {}
|
row = {}
|
||||||
|
|
|
@ -2651,34 +2651,6 @@ function cmd_subir_certificado_click(){
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
//~ if($$('lst_cert').count() < 2){
|
|
||||||
//~ msg = 'Selecciona al menos dos archivos: CER y KEY del certificado.'
|
|
||||||
//~ msg_error(msg)
|
|
||||||
//~ return
|
|
||||||
//~ }
|
|
||||||
|
|
||||||
//~ if($$('lst_cert').count() > 2){
|
|
||||||
//~ msg = 'Selecciona solo dos archivos: CER y KEY del certificado.'
|
|
||||||
//~ msg_error(msg)
|
|
||||||
//~ return
|
|
||||||
//~ }
|
|
||||||
|
|
||||||
//~ var fo1 = $$('up_cert').files.getItem($$('up_cert').files.getFirstId())
|
|
||||||
//~ var fo2 = $$('up_cert').files.getItem($$('up_cert').files.getLastId())
|
|
||||||
|
|
||||||
//~ var ext = ['key', 'cer']
|
|
||||||
//~ if(ext.indexOf(fo1.type.toLowerCase()) == -1 || ext.indexOf(fo2.type.toLowerCase()) == -1){
|
|
||||||
//~ msg = 'Archivos inválidos, se requiere un archivo CER y un KEY.'
|
|
||||||
//~ msg_error(msg)
|
|
||||||
//~ return
|
|
||||||
//~ }
|
|
||||||
|
|
||||||
//~ if(fo1.type == fo2.type && fo1.size == fo2.size){
|
|
||||||
//~ msg = 'Selecciona archivos diferentes: un archivo CER y un KEY.'
|
|
||||||
//~ msg_error(msg)
|
|
||||||
//~ return
|
|
||||||
//~ }
|
|
||||||
|
|
||||||
var serie = $$('form_cert').getValues()['cert_serie']
|
var serie = $$('form_cert').getValues()['cert_serie']
|
||||||
|
|
||||||
if(serie){
|
if(serie){
|
||||||
|
@ -2697,13 +2669,6 @@ function cmd_subir_certificado_click(){
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
//~ if (fo1.type.toLowerCase()=='cer'){
|
|
||||||
//~ values['cer'] = fo1.file
|
|
||||||
//~ values['key'] = fo2.file
|
|
||||||
//~ } else {
|
|
||||||
//~ values['key'] = fo1.file
|
|
||||||
//~ values['cer'] = fo2.file
|
|
||||||
//~ }
|
|
||||||
$$('form_upload').setValues({})
|
$$('form_upload').setValues({})
|
||||||
$$('up_cert').files.data.clearAll()
|
$$('up_cert').files.data.clearAll()
|
||||||
|
|
||||||
|
@ -2740,12 +2705,12 @@ function up_cert_before_file_add(file){
|
||||||
reader.addEventListener('load', (event) => {
|
reader.addEventListener('load', (event) => {
|
||||||
file_cer = event.target.result;
|
file_cer = event.target.result;
|
||||||
});
|
});
|
||||||
reader.readAsBinaryString(file.file);
|
reader.readAsDataURL(file.file);
|
||||||
} else {
|
} else {
|
||||||
reader.addEventListener('load', (event) => {
|
reader.addEventListener('load', (event) => {
|
||||||
file_key = event.target.result;
|
file_key = event.target.result;
|
||||||
});
|
});
|
||||||
reader.readAsBinaryString(file.file);
|
reader.readAsDataURL(file.file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2754,7 +2719,7 @@ function validate_cert(values){
|
||||||
msg = 'Archivos recibidos correctamente. Esperando validación'
|
msg = 'Archivos recibidos correctamente. Esperando validación'
|
||||||
msg_ok(msg)
|
msg_ok(msg)
|
||||||
|
|
||||||
values['opt'] = 'validate'
|
values['opt'] = 'validate_cert'
|
||||||
webix.ajax().post('/cert', values, {
|
webix.ajax().post('/cert', values, {
|
||||||
error:function(text, data, XmlHttpRequest){
|
error:function(text, data, XmlHttpRequest){
|
||||||
msg = 'Ocurrio un error, consulta a soporte técnico'
|
msg = 'Ocurrio un error, consulta a soporte técnico'
|
||||||
|
@ -2772,35 +2737,3 @@ function validate_cert(values){
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//~ function up_cert_upload_complete(response){
|
|
||||||
//~ if(response.status != 'server'){
|
|
||||||
//~ msg = 'Ocurrio un error al subir los archivos'
|
|
||||||
//~ msg_error(msg)
|
|
||||||
//~ return
|
|
||||||
//~ }
|
|
||||||
|
|
||||||
//~ msg = 'Archivos subidos correctamente. Esperando validación'
|
|
||||||
//~ msg_ok(msg)
|
|
||||||
|
|
||||||
//~ var values = $$('form_upload').getValues()
|
|
||||||
//~ $$('form_upload').setValues({})
|
|
||||||
//~ $$('up_cert').files.data.clearAll()
|
|
||||||
//~ values['opt'] = 'validate'
|
|
||||||
|
|
||||||
//~ webix.ajax().post('/cert', values, {
|
|
||||||
//~ error:function(text, data, XmlHttpRequest){
|
|
||||||
//~ msg = 'Ocurrio un error, consulta a soporte técnico'
|
|
||||||
//~ msg_error(msg)
|
|
||||||
//~ },
|
|
||||||
//~ success:function(text, data, XmlHttpRequest){
|
|
||||||
//~ var values = data.json()
|
|
||||||
//~ if(values.ok){
|
|
||||||
//~ $$('form_cert').setValues(values.data)
|
|
||||||
//~ msg_ok(values.msg)
|
|
||||||
//~ }else{
|
|
||||||
//~ msg_error(values.msg)
|
|
||||||
//~ }
|
|
||||||
//~ }
|
|
||||||
//~ })
|
|
||||||
//~ }
|
|
||||||
|
|
|
@ -292,7 +292,7 @@ var emisor_certificado = [
|
||||||
{view: 'list', id: 'lst_cert', name: 'certificado',
|
{view: 'list', id: 'lst_cert', name: 'certificado',
|
||||||
type: 'uploader', autoheight:true, borderless: true}, {}]},
|
type: 'uploader', autoheight:true, borderless: true}, {}]},
|
||||||
{cols: [{},
|
{cols: [{},
|
||||||
{view: 'text', id: 'txt_contra', name: 'contra', value: '12345678a',
|
{view: 'text', id: 'txt_contra', name: 'contra',
|
||||||
label: 'Contraseña KEY', labelPosition: 'top',
|
label: 'Contraseña KEY', labelPosition: 'top',
|
||||||
labelAlign: 'center', type: 'password', required: true}, {}]},
|
labelAlign: 'center', type: 'password', required: true}, {}]},
|
||||||
{cols: [{}, {view: 'button', id: 'cmd_subir_certificado',
|
{cols: [{}, {view: 'button', id: 'cmd_subir_certificado',
|
||||||
|
|
Loading…
Reference in New Issue