Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
Luciano Barletta
/
message-service
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
1
Wiki
Network
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
Commit 4b0a02e6
authored
2024-06-06 17:03:14 -0300
by
juan
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
Se agrega confirmacion de estado
1 parent
9f93efeb
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
88 additions
and
8 deletions
config.py
database.py
deploy.py
mongo_db.py
process.py
services.py
config.py
View file @
4b0a02e
...
...
@@ -18,3 +18,6 @@ WsClientesBrowser = {
5493412671594
:
"http://192.168.15.246:13434/"
}
resp_defect_int
=
{
'success'
:
True
,
'uid'
:
WS_uid
,
'hook_url'
:
None
,
'alias'
:
'HGT SA Notificaciones'
,
'platform'
:
'android'
,
'battery'
:
None
,
'plugged'
:
None
,
'locale'
:
'-'
}
SESSION_MONGODB_DB
=
"sms_mail_server"
SESSION_MONGODB_COLLECT
=
"estados_msj"
MONGO_URI
=
"mongodb://localhost:27017/"
\ No newline at end of file
database.py
View file @
4b0a02e
...
...
@@ -90,6 +90,7 @@ class DBconnection:
def
check
(
self
,
information
):
valid
=
True
for
column
in
information
:
#print(column)
# columna no existe en la tabla
if
not
Table
.
validate
(
column
):
...
...
deploy.py
View file @
4b0a02e
...
...
@@ -6,6 +6,7 @@ from python_arptable import get_arp_table
from
enums
import
States
,
Table
from
Wpp1State
import
StatePhoneWs
,
StateMail
,
AndroidStatus
import
os
,
ipdb
,
time
,
threading
,
random
,
datetime
,
config
import
mongo_db
app
=
Flask
(
__name__
)
...
...
@@ -68,6 +69,12 @@ def estadoSMS():
print
(
test
)
return
(
jsonify
(
test
))
@app.route
(
"/status/<Id>"
,
methods
=
[
'GET'
,
'POST'
])
def
estadoGeneral
(
Id
):
Id
=
str
(
Id
)
rta
=
mongo_db
.
obtener_estado
(
Id
)
return
jsonify
({
"estado"
:
rta
})
# Guarda archivos del emisor en una nueva carpeta (desencriptados)
# Pide guardar en base de datos una preinstancia del mensaje
@app.route
(
'/data'
,
methods
=
[
'POST'
])
...
...
@@ -98,9 +105,13 @@ def data():
#if key:
# os.remove(path + "rand.key")
return
str
(
process
.
datastore
(
devolucion
=
process
.
datastore
(
random
.
randrange
(
minid
,
maxid
),
path
))
path
)
#print(devolucion)
#for msj_id in devolucion:
mongo_db
.
crear
(
devolucion
)
return
str
(
devolucion
)
# Devuelve un string al azar entre [0-9,a-z,A-Z]
def
newprefix
():
...
...
@@ -131,6 +142,7 @@ def msg():
}
#if request.values.get('ws_chrome_server'):
state
=
process
.
paramstore
(
query
)
print
(
state
)
return
state
# Consulta el estado de un mensaje dado su id
...
...
mongo_db.py
0 → 100644
View file @
4b0a02e
from
pymongo
import
MongoClient
from
config
import
*
# Conectar a la base de datos MongoDB
client
=
MongoClient
(
MONGO_URI
)
# Reemplaza con tu cadena de conexión
db
=
client
[
SESSION_MONGODB_DB
]
collection
=
db
[
SESSION_MONGODB_COLLECT
]
def
crear
(
id_mensaje
):
# Crear un documento con el estado "En cola"
if
type
(
id_mensaje
)
!=
int
:
return
None
id_mensaje
=
str
(
id_mensaje
)
nuevo_documento
=
{
"_id"
:
id_mensaje
,
"estado"
:
"En cola"
}
try
:
collection
.
insert_one
(
nuevo_documento
)
print
(
f
"Mensaje con id {id_mensaje} creado con estado 'En cola'."
)
except
Exception
as
e
:
print
(
f
"Error al crear el mensaje: {e}"
)
def
editar
(
id_mensaje
,
nuevo_estado
):
# Editar el estado del documento con el id_mensaje dado
try
:
resultado
=
collection
.
update_one
({
"_id"
:
str
(
id_mensaje
)},
{
"$set"
:
{
"estado"
:
nuevo_estado
}})
if
resultado
.
matched_count
:
print
(
f
"Mensaje con id {id_mensaje} actualizado a estado '{nuevo_estado}'."
)
else
:
print
(
f
"No se encontró ningún mensaje con id {id_mensaje}."
)
except
Exception
as
e
:
print
(
f
"Error al editar el mensaje: {e}"
)
def
obtener_estado
(
id_mensaje
):
# Obtener el estado del documento con el id_mensaje dado
try
:
documento
=
collection
.
find_one
({
"_id"
:
str
(
id_mensaje
)})
if
documento
:
return
documento
[
"estado"
]
else
:
print
(
f
"No se encontró ningún mensaje con id {id_mensaje}."
)
return
None
except
Exception
as
e
:
print
(
f
"Error al obtener el estado del mensaje: {e}"
)
return
None
# Ejemplo de uso
crear
(
"mensaje1"
)
print
(
obtener_estado
(
"mensaje1"
))
editar
(
"mensaje1"
,
"Procesado"
)
print
(
obtener_estado
(
"mensaje1"
))
process.py
View file @
4b0a02e
...
...
@@ -24,6 +24,7 @@ class Process:
# Guarda los parámetros
def
paramstore
(
self
,
query
):
#print(Table)
row
=
self
.
lookup
(
query
[
Table
.
id
])
# id no existe
if
type
(
row
)
==
str
:
...
...
@@ -110,6 +111,7 @@ class Process:
def
lookup
(
self
,
id
):
rows
=
self
.
conn
.
query
(
"SELECT * FROM msg WHERE id = ?"
,(
id
,))
#print(rows)
if
rows
==
[]:
return
"El id "
+
str
(
id
)
+
" no existe"
...
...
services.py
View file @
4b0a02e
...
...
@@ -8,6 +8,7 @@ from email.mime.application import MIMEApplication
from
ValidacionTelefonos
import
ValidacionTelefonosArgentinos
,
ValidacionCorreo
import
requests
,
json
,
os
,
smtplib
,
config
,
base64
import
SmsGateway24
as
Sms
import
mongo_db
import
re
...
...
@@ -71,7 +72,8 @@ class Wpp1(ServiceBase):
return
(
n
)
def
_send
(
self
,
data
,
stadotel
):
print
(
data
)
#print(data)
ID_Consulta
=
data
[
"id"
]
types
=
json
.
loads
(
data
[
Table
.
type
])
try
:
origen
=
json
.
loads
(
data
[
"info"
])[
"origin"
]
...
...
@@ -100,8 +102,11 @@ class Wpp1(ServiceBase):
path
=
requests
.
post
(
url
=
Wpp1
.
server
,
files
=
{
'data'
:
(
file
,
open
(
filepath
,
'rb'
))
})
result
=
requests
.
get
(
url
=
Wpp1
.
URL
+
Wpp1
.
URLmode
[
types
[
file
]],
params
=
{
'token'
:
Wpp1
.
token
,
'uid'
:
origen
,
'to'
:
data
[
Table
.
dest
],
'url'
:
Wpp1
.
server
+
path
.
text
})
succ
[
file
]
=
result
.
json
()[
'success'
]
mongo_db
.
editar
(
ID_Consulta
,
"Enviado"
)
except
Exception
as
E
:
print
(
f
"ROMPIO ALGO EN EL ENVIO: {E}"
)
Mensaje
=
str
(
f
"ROMPIO ALGO EN EL ENVIO: {E}"
)
mongo_db
.
editar
(
ID_Consulta
,
Mensaje
)
print
(
Mensaje
)
succ
[
file
]
=
False
return
succ
...
...
@@ -162,6 +167,8 @@ class Mail(ServiceBase):
def
_sendClasico
(
self
,
data
,
stadomail
):
types
=
json
.
loads
(
data
[
Table
.
type
])
info
=
json
.
loads
(
data
[
Table
.
info
])
#print("166",data)
ID_Consulta
=
data
[
"id"
]
self
.
TextoaEnviar
=
""
msg
=
MIMEMultipart
()
Cr
=
ValidacionCorreo
()
...
...
@@ -170,7 +177,7 @@ class Mail(ServiceBase):
#print(destino)
msg
[
'Subject'
]
=
info
[
'subject'
]
msg
[
"To"
]
=
filtrar_no_ascii
(
Cr
.
ValidarCorreo
(
destino
))
print
(
"destino"
,
msg
[
"To"
])
#
print("destino",msg["To"])
succ
=
{}
if
msg
[
'To'
]
==
False
:
print
(
"mail no sale"
)
...
...
@@ -188,15 +195,18 @@ class Mail(ServiceBase):
#for destino in msg['To'].split(","):
# Msg = msg.copy()
# Msg["To"] = Cr.ValidarCorreo(destino)
print
(
info
)
print
(
"info"
,
info
)
self
.
Envio
(
msg
,
info
,
stadomail
)
#self.Envio(msg,info,stadomail)
mongo_db
.
editar
(
ID_Consulta
,
"Enviado"
)
else
:
succ
[
file
]
=
False
except
Exception
as
E
:
print
(
f
"ROMPIO ALGO EN EL ENVIO: {E}"
)
mensaje
=
(
f
"ROMPIO ALGO EN EL ENVIO: {E}"
)
mongo_db
.
editar
(
ID_Consulta
,
mensaje
)
print
(
mensaje
)
#print("msg",msg)
print
(
"data"
,
data
)
#
print("data",data)
#tenemos q filtrar from
stadomail
.
MailRompedor
.
append
(
msg
[
'From'
])
succ
[
file
]
=
False
...
...
Write
Preview
Styling with
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment