Enable setting password. Some EXITCODE for api<->control checking.

This commit is contained in:
2019-06-17 14:02:50 +02:00
parent 746765a146
commit f5c4f59263
6 changed files with 96 additions and 52 deletions

View File

@@ -54,4 +54,6 @@ For server you can use Linux or Windows, and in theory any environment that can
- Command: powershell.exe - Command: powershell.exe
- Args: -executionpolicy bypass -windowstyle hidden -noninteractive -nologo -file "\\SERVER\SysVol\DOMAINNAME\scripts\client.ps1" - Args: -executionpolicy bypass -windowstyle hidden -noninteractive -nologo -file "\\SERVER\SysVol\DOMAINNAME\scripts\client.ps1"
Note: client.ps1 has to have controlpcm.ini file with it Note: client.ps1 has to have controlpcm.ini file with it
- If you don't have Active Directory, you can do the Task Scheduled task in every computer without problems, and using another Shared folder, it will work - If you don't have Active Directory, you can do the Task Scheduled task in every computer without problems, and using another Shared folder, it will work
- Start api.py using .bat o .sh file. You can do in systemd way, or a cron, or in a terminal of windows server,...
- Start control.pyw to setup password and start adding computers, groups and cooks

23
api.py
View File

@@ -32,6 +32,10 @@ def retPassword():
# /get/computerexists? # /get/computerexists?
# @param ComputerName -> Computer to deploy it # @param ComputerName -> Computer to deploy it
# @param UUID: Check UUID validation of this computer # @param UUID: Check UUID validation of this computer
# Error exit code:
# 1: No params supplied
# 2: Computer and UUID not match database
# 3: Computer doesn't exists in database
## ##
class getComputerExists(object): class getComputerExists(object):
def on_get(self, request, response): def on_get(self, request, response):
@@ -44,7 +48,7 @@ class getComputerExists(object):
UUID = value UUID = value
if ComputerName is None: if ComputerName is None:
response.media = {'TEXT':'No params','RESULT': 'ERROR'} response.media = {'TEXT':'No params','RESULT': 'ERROR','EXITCODE':'1'}
else: else:
result = sql.select("SELECT COUNT(*) 'RESULT' FROM COMPUTERS WHERE Name='"+ComputerName+"' AND UUID='"+UUID+"'") result = sql.select("SELECT COUNT(*) 'RESULT' FROM COMPUTERS WHERE Name='"+ComputerName+"' AND UUID='"+UUID+"'")
@@ -60,7 +64,7 @@ class getComputerExists(object):
sql.insert("INSERT INTO COMPUTERS (`Name`,`UUID`) VALUES('"+ComputerName+"','"+UUID+"')") sql.insert("INSERT INTO COMPUTERS (`Name`,`UUID`) VALUES('"+ComputerName+"','"+UUID+"')")
response.media = {'RESULT': '1'} response.media = {'RESULT': '1'}
else: #Computer doesn't exist and you don't want to be added else: #Computer doesn't exist and you don't want to be added
response.media = {'TEXT':'Error: Computer not exists in database', 'RESULT': 'ERROR','EXITCODE':'1'} response.media = {'TEXT':'Error: Computer not exists in database', 'RESULT': 'ERROR','EXITCODE':'3'}
else: #Exists else: #Exists
response.media = {'RESULT': '1'} response.media = {'RESULT': '1'}
@@ -684,6 +688,11 @@ class setCookStatus(object):
# checkPassword: Check password # checkPassword: Check password
# /check/password? # /check/password?
# @param Password -> SHA-256 of password # @param Password -> SHA-256 of password
# Error exit code:
# 0: No error
# 1: No password supplied
# 2: Password incorrect
# 3: Password not set in app yet
## ##
class checkPassword(object): #Check password (ERROR if password not valid or no password and 1 if valid) class checkPassword(object): #Check password (ERROR if password not valid or no password and 1 if valid)
def on_get(self, request, response): def on_get(self, request, response):
@@ -694,18 +703,18 @@ class checkPassword(object): #Check password (ERROR if password not valid or no
Password = value Password = value
if Password is None: if Password is None:
response.media = {'TEXT': 'Error, you need to supply a password','RESULT':'ERROR'} response.media = {'TEXT': 'Error, you need to supply a password','RESULT':'ERROR','EXITCODE':'1'}
else: else:
pass pass
res = sql.select("SELECT COUNT(*) 'RESULT' FROM OPTIONS WHERE Option='Password' AND Value='"+Password+"'")[0]['RESULT'] res = sql.select("SELECT COUNT(*) 'RESULT' FROM OPTIONS WHERE Option='Password' AND Value='"+Password+"'")[0]['RESULT']
if res == 1: if res == 1:
response.media = {'RESULT':'1','TEXT':'OK'} response.media = {'RESULT':'1','TEXT':'OK','EXITCODE':'0'}
else: else:
res = sql.select("SELECT COUNT(*) 'RESULT' FROM OPTIONS WHERE Option='Password'")[0]['RESULT'] res = sql.select("SELECT COUNT(*) 'RESULT' FROM OPTIONS WHERE Option='Password'")[0]['RESULT']
if res == 0: #Password doesn't exists in database if res == 0: #Password doesn't exists in database
response.media = {'RESULT':'ERROR','TEXT':'No password set. Please set it'} response.media = {'RESULT':'ERROR','TEXT':'No password set. Please set it','EXITCODE':'3'}
else: else:
response.media = {'RESULT':'ERROR','TEXT':'Password incorrect'} response.media = {'RESULT':'ERROR','TEXT':'Password incorrect','EXITCODE':'2'}
## ##
# updPassword: Update password # updPassword: Update password
@@ -725,7 +734,7 @@ class updPassword(object): #Update password (ERROR if password not valid or no
res = sql.select("SELECT COUNT(*) 'RESULT' FROM OPTIONS WHERE Option='Password'")[0]['RESULT'] res = sql.select("SELECT COUNT(*) 'RESULT' FROM OPTIONS WHERE Option='Password'")[0]['RESULT']
if res == 0 and NewPassword is not None: #Password doesn't exists in database if res == 0 and NewPassword is not None: #Password doesn't exists in database
response.media = sql.insert("INSERT INTO COMMENTS VALUES('Password','"+NewPassword+"')") response.media = sql.insert("INSERT INTO OPTIONS VALUES('Password','"+NewPassword+"')")
elif res == 0 and NewPassword is None: #No password supplied elif res == 0 and NewPassword is None: #No password supplied
response.media = {'RESULT':'ERROR','TEXT':'Error, you need to supply a password'} response.media = {'RESULT':'ERROR','TEXT':'Error, you need to supply a password'}
elif res == 1 and OldPassword is not None: # Password exists in database (And you supplied OldPassword) elif res == 1 and OldPassword is not None: # Password exists in database (And you supplied OldPassword)

View File

@@ -9,7 +9,7 @@ $UUID=(get-wmiobject Win32_ComputerSystemProduct).UUID
$exists = Invoke-RestMethod -Method Get -Uri "$server/get/computerexists?ComputerName=$computerName&UUID=$UUID" $exists = Invoke-RestMethod -Method Get -Uri "$server/get/computerexists?ComputerName=$computerName&UUID=$UUID"
if ($exists.Result -eq "ERROR"){ if ($exists.Result -eq "ERROR"){
if ($exists.EXITCODE -eq '1'){ if ($exists.EXITCODE -eq '3'){
Write-Host "Computer outside database:" $computerName Write-Host "Computer outside database:" $computerName
}else{ }else{
Write-Host "Computer and UUID of $computerName doesn't match" Write-Host "Computer and UUID of $computerName doesn't match"

View File

@@ -1,3 +1,3 @@
server=http://miserver.dominio:3333 server=http://miserver.dominio:3333
resources=\\\\MISERVER\\REPOFOLDER resources=\\\\MISERVER\\REPOFOLDER
lang=es lang=en

View File

@@ -5,6 +5,7 @@ import configparser
import json import json
import requests import requests
import subprocess, platform import subprocess, platform
import hashlib #SHA256
from translation import T from translation import T
def ping(host): def ping(host):
@@ -25,10 +26,11 @@ def sendmenudot(text,title,choices):
return menu.split('.')[0] return menu.split('.')[0]
else: else:
return menu return menu
## showchoicesapi, apiurl has to have all (Inlcuding server part) ## showchoicesapi, suburl has to have params (NOT inlcuding server part)
def showchoicesapi(text,title,apiurl,field='Name'): def showchoicesapi(text,title,suburl,field='Name'):
global c_server
try: try:
jsonobj = json.loads(requests.get(apiurl).text) jsonobj = json.loads(requests.get(c_server+suburl).text)
listitems = [] listitems = []
for ite in jsonobj: for ite in jsonobj:
listitems.append(ite[field]) listitems.append(ite[field])
@@ -59,9 +61,10 @@ def sendsettoapi(suburl,goodtext): # Send a add/del/modify to API. Doesn't retur
easygui.msgbox("Error inesperado","Error","Ok") easygui.msgbox("Error inesperado","Error","Ok")
return 1 return 1
def returnvalueapi(apiurl,field="Name"): def returnvalueapi(suburl,field="Name"):
global c_server
try: try:
jsonobj = json.loads(requests.get(apiurl).text) jsonobj = json.loads(requests.get(c_server+suburl).text)
return jsonobj[field] return jsonobj[field]
except: except:
easygui.msgbox(msg='Error en la aplicación al consultar', title="Error", ok_button='OK') easygui.msgbox(msg='Error en la aplicación al consultar', title="Error", ok_button='OK')
@@ -87,7 +90,6 @@ def menuprinc():
mreports() mreports()
def mcomputers(): def mcomputers():
global c_server
menu = sendmenudot(T('Computers menu'),T('Select option'),['1.'+T('Add computer'),'2.'+T('Remove computer'),'3.'+T('Add computer to group'),'4.'+T('Computers list'),'5.'+T('Computer status')]) menu = sendmenudot(T('Computers menu'),T('Select option'),['1.'+T('Add computer'),'2.'+T('Remove computer'),'3.'+T('Add computer to group'),'4.'+T('Computers list'),'5.'+T('Computer status')])
if menu == '1': if menu == '1':
@@ -95,32 +97,31 @@ def mcomputers():
if easygui.ynbox("Nombre del equipo: '"+newcomputer+"'. ¿Seguro?",T('Add computer')): if easygui.ynbox("Nombre del equipo: '"+newcomputer+"'. ¿Seguro?",T('Add computer')):
sendsettoapi("/add/computer?ComputerName="+newcomputer,"Equipo añadido a la base de datos") sendsettoapi("/add/computer?ComputerName="+newcomputer,"Equipo añadido a la base de datos")
elif menu == '2': elif menu == '2':
whatc = showchoicesapi("Seleccione equipo a borrar",T('Remove computer'),c_server+"/get/computers") whatc = showchoicesapi("Seleccione equipo a borrar",T('Remove computer'),"/get/computers")
if whatc is not None and easygui.ynbox("Se va a borrar el equipo '"+whatc+"'. ¿Seguro?",T('Remove computer')): if whatc is not None and easygui.ynbox("Se va a borrar el equipo '"+whatc+"'. ¿Seguro?",T('Remove computer')):
sendsettoapi("/del/computer?ComputerName="+whatc,T('Computer deleted')) sendsettoapi("/del/computer?ComputerName="+whatc,T('Computer deleted'))
elif menu == '3': elif menu == '3':
m_addcomputergroup() m_addcomputergroup()
elif menu == '4': elif menu == '4':
showchoicesapi(T('Computers list'),T('Computers list'),c_server+"/get/computers") showchoicesapi(T('Computers list'),T('Computers list'),"/get/computers")
elif menu == '5': elif menu == '5':
computer = showchoicesapi(T('Select a computer'),T('Computer status'),c_server+"/get/computers") computer = showchoicesapi(T('Select a computer'),T('Computer status'),"/get/computers")
showchoicesapi(T('Cooks of computer')+' '+computer,T('Computer status'),c_server+"/get/cookpend?ComputerName="+computer+"&SeeAll=1") showchoicesapi(T('Cooks of computer')+' '+computer,T('Computer status'),"/get/cookpend?ComputerName="+computer+"&SeeAll=1",'CookName')
showchoicesapi(T('Cooks pending of computer')+' '+computer,T('Computer status'),c_server+"/get/cookpend?ComputerName="+computer) showchoicesapi(T('Cooks pending of computer')+' '+computer,T('Computer status'),"/get/cookpend?ComputerName="+computer,'CookName')
showchoicesapi(T('Groups of computer')+' '+computer,T('Computer status'),c_server+"/get/groups?ComputerName="+computer) showchoicesapi(T('Groups of computer')+' '+computer,T('Computer status'),"/get/groups?ComputerName="+computer,'Name')
elif menu is None: elif menu is None:
menuprinc() menuprinc()
return return
mcomputers() mcomputers()
def mgroups(): def mgroups():
global c_server
menu = sendmenudot(T('Groups menu'),T('Select option'),['1.'+T('Add group'),'2.'+T('Remove group'),'3.'+T('Add computer to group'),'4.'+T('Remove computer of a group'),'5.Listado de grupos','6.Listado de equipos de un grupo']) menu = sendmenudot(T('Groups menu'),T('Select option'),['1.'+T('Add group'),'2.'+T('Remove group'),'3.'+T('Add computer to group'),'4.'+T('Remove computer of a group'),'5.Listado de grupos','6.Listado de equipos de un grupo'])
if menu == '1': if menu == '1':
newgroup = easygui.enterbox(T('New group name'),T('Add group')) newgroup = easygui.enterbox(T('New group name'),T('Add group'))
if easygui.ynbox("Nombre del grupo: '"+newgroup+"'. ¿Seguro?",T('Add group')): if easygui.ynbox("Nombre del grupo: '"+newgroup+"'. ¿Seguro?",T('Add group')):
sendsettoapi("/add/group?GroupName="+newgroup,"Grupo añadido a la base de datos") sendsettoapi("/add/group?GroupName="+newgroup,"Grupo añadido a la base de datos")
elif menu == '2': elif menu == '2':
group = showchoicesapi("Lista de grupos. Selecciona uno para borrarlo",T('Remove group'),c_server+"/get/groups",'Name') group = showchoicesapi("Lista de grupos. Selecciona uno para borrarlo",T('Remove group'),"/get/groups",'Name')
if group is not None and easygui.ynbox("Borrar grupo '"+group+"'. ¿Seguro?",T('Remove group')): if group is not None and easygui.ynbox("Borrar grupo '"+group+"'. ¿Seguro?",T('Remove group')):
sendsettoapi("/del/group?GroupName="+group,T('Group deleted')) sendsettoapi("/del/group?GroupName="+group,T('Group deleted'))
elif menu == '3': elif menu == '3':
@@ -128,10 +129,10 @@ def mgroups():
elif menu == '4': elif menu == '4':
m_delcomputergroup() m_delcomputergroup()
elif menu == '5': elif menu == '5':
showchoicesapi("Listado de grupos","Listado de grupos",c_server+"/get/groups",field='Name') showchoicesapi("Listado de grupos","Listado de grupos","/get/groups",field='Name')
elif menu == '6': elif menu == '6':
group = showchoicesapi("Lista de grupos","Listado de equipos de un grupo",c_server+"/get/groups") group = showchoicesapi("Lista de grupos","Listado de equipos de un grupo","/get/groups")
showchoicesapi("Lista de equipos del grupo "+group,"Listado de equipos de un grupo",c_server+"/get/computersgrp?GroupName="+group) showchoicesapi("Lista de equipos del grupo "+group,"Listado de equipos de un grupo","/get/computersgrp?GroupName="+group)
elif menu is None: elif menu is None:
menuprinc() menuprinc()
return return
@@ -140,16 +141,16 @@ def mgroups():
def mcooks(): def mcooks():
global c_server global c_server
global c_resources global c_resources
menu = sendmenudot(T('Cooks menu'),T('Select option'),['1.Detalles de una receta','2.Renombrar receta','3.Añadir receta a un grupo','4.Eliminar receta de un grupo','5.Grupos de una receta']) menu = sendmenudot(T('Cooks menu'),T('Select option'),['1.Detalles de una receta','2.'+T('Rename cook'),'3.Añadir receta a un grupo','4.Eliminar receta de un grupo','5.Grupos de una receta'])
if menu == '1': if menu == '1':
cook = showchoicesapi("Lista de recetas implementadas en algún grupo. Selecciona una para ver sus datos","Detalles de una receta",c_server+"/get/cookall",'CookName') cook = showchoicesapi("Lista de recetas implementadas en algún grupo. Selecciona una para ver sus datos","Detalles de una receta","/get/cookall",'CookName')
if cook is not None: if cook is not None:
showchoicesapi("Lista de grupos de la receta "+cook,"Listado de grupos de una receta",c_server+"/get/grpcook?CookName="+cook) showchoicesapi("Lista de grupos de la receta "+cook,"Listado de grupos de una receta","/get/grpcook?CookName="+cook)
jsonobj = json.loads(requests.get(c_server+'/get/statuscook?CookName='+cook).text) jsonobj = json.loads(requests.get(c_server+'/get/statuscook?CookName='+cook).text)
list = [] list = []
s_err = 0 s_err = 0
s_com = 0 s_com = 0
s_lastrev = returnvalueapi(c_server+'/get/lastrevisioncook?CookName='+cook,"Revision") s_lastrev = returnvalueapi('/get/lastrevisioncook?CookName='+cook,"Revision")
for ite in jsonobj: for ite in jsonobj:
s_com = s_com + 1 s_com = s_com + 1
if ite['Error'] == 0: if ite['Error'] == 0:
@@ -161,10 +162,10 @@ def mcooks():
easygui.choicebox("Detalles de equipos de la receta "+cook+"\nEquipos: "+str(s_com)+" Con errores: "+str(s_err)+'\nUltima revision: '+str(s_lastrev),"Detalles de una receta",list) easygui.choicebox("Detalles de equipos de la receta "+cook+"\nEquipos: "+str(s_com)+" Con errores: "+str(s_err)+'\nUltima revision: '+str(s_lastrev),"Detalles de una receta",list)
elif menu == '2': elif menu == '2':
cook = showchoicesapi("Lista de recetas implementadas en algún grupo. Selecciona una para renombrarla. Si la receta no está en ningún grupo, se puede renombrar desde fuera.","Renombrar receta",c_server+"/get/cookall",'CookName') cook = showchoicesapi("Lista de recetas implementadas en algún grupo. Selecciona una para renombrarla. Si la receta no está en ningún grupo, se puede renombrar desde fuera.",T('Rename cook'),c_server+"/get/cookall",'CookName')
if cook is not None: if cook is not None:
newname = easygui.enterbox("Nombre de la nueva receta","Renombrar receta") newname = easygui.enterbox("Nombre de la nueva receta","Renombrar receta")
if newname is not None and easygui.ynbox("Cambiar nombre de la receta '"+cook+"' por '"+newname+"'. ¿Seguro?","Renombrar receta"): if newname is not None and easygui.ynbox("Cambiar nombre de la receta '"+cook+"' por '"+newname+"'. ¿Seguro?",T('Rename cook')):
sendsettoapi("/upd/cookname?CookName="+cook+"&CookNewName="+newname,"Receta cambiada de nombre") sendsettoapi("/upd/cookname?CookName="+cook+"&CookNewName="+newname,"Receta cambiada de nombre")
elif menu == '3': elif menu == '3':
cook = easygui.enterbox(T('Name of the cook'),"Añadir receta a un grupo") cook = easygui.enterbox(T('Name of the cook'),"Añadir receta a un grupo")
@@ -172,15 +173,15 @@ def mcooks():
if easygui.ynbox("Añadir la receta "+cook+" al grupo '"+group+"'. ¿Seguro?","Añadir receta a un grupo"): if easygui.ynbox("Añadir la receta "+cook+" al grupo '"+group+"'. ¿Seguro?","Añadir receta a un grupo"):
sendsettoapi("/add/cookgrp?CookName="+cook+"&GroupName="+group,"Receta añadida al grupo") sendsettoapi("/add/cookgrp?CookName="+cook+"&GroupName="+group,"Receta añadida al grupo")
elif menu == '4': elif menu == '4':
cook = showchoicesapi("Lista de recetas implementadas en algún grupo. Selecciona una para elegir un grupo de esa receta para borrar. Si la receta no está en ningún grupo, no saldrá.","Eliminar receta de un grupo",c_server+"/get/cookall",'CookName') cook = showchoicesapi("Lista de recetas implementadas en algún grupo. Selecciona una para elegir un grupo de esa receta para borrar. Si la receta no está en ningún grupo, no saldrá.","Eliminar receta de un grupo","/get/cookall",'CookName')
if cook is not None: if cook is not None:
group = showchoicesapi("Lista de grupos que tienen esa receta. Selecciona el grupo a quitar","Eliminar receta de un grupo",c_server+"/get/grpcook?CookName="+cook,'Name') group = showchoicesapi("Lista de grupos que tienen esa receta. Selecciona el grupo a quitar","Eliminar receta de un grupo","/get/grpcook?CookName="+cook,'Name')
if group is not None and easygui.ynbox("Se va a quitar la receta "+cook+" del grupo "+group+". ¿Seguro?","Eliminar receta de un grupo"): if group is not None and easygui.ynbox("Se va a quitar la receta "+cook+" del grupo "+group+". ¿Seguro?","Eliminar receta de un grupo"):
sendsettoapi("/del/cookgrp?CookName="+cook+"&GroupName="+group,"Receta quitada del grupo") sendsettoapi("/del/cookgrp?CookName="+cook+"&GroupName="+group,"Receta quitada del grupo")
elif menu == '5': elif menu == '5':
cook = showchoicesapi("Lista de recetas implementadas en algún grupo. Selecciona una para elegir un grupo de esa receta para borrar. Si la receta no está en ningún grupo, no saldrá.","Eliminar receta de un grupo",c_server+"/get/cookall",'CookName') cook = showchoicesapi("Lista de recetas implementadas en algún grupo. Selecciona una para elegir un grupo de esa receta para borrar. Si la receta no está en ningún grupo, no saldrá.","Eliminar receta de un grupo","/get/cookall",'CookName')
if cook is not None: if cook is not None:
showchoicesapi("Lista de grupos que tienen esa receta. Selecciona el grupo a quitar","Eliminar receta de un grupo",c_server+"/get/grpcook?CookName="+cook,'Name') showchoicesapi("Lista de grupos que tienen esa receta. Selecciona el grupo a quitar","Eliminar receta de un grupo","/get/grpcook?CookName="+cook,'Name')
elif menu is None: elif menu is None:
menuprinc() menuprinc()
return return
@@ -188,22 +189,20 @@ def mcooks():
mcooks() mcooks()
def mreports(): def mreports():
global c_server
global c_resources
menu = sendmenudot(T('Reports menu'),T('Select option'),['1.'+T('Computers list'),'2.'+T('Groups list'),'3.Equipos y recetas de un grupo','4.Grupos de una receta']) menu = sendmenudot(T('Reports menu'),T('Select option'),['1.'+T('Computers list'),'2.'+T('Groups list'),'3.Equipos y recetas de un grupo','4.Grupos de una receta'])
if menu == '1': #Listado de equipos if menu == '1': #Listado de equipos
showchoicesapi(T('Computers list'),T('Computers list'),c_server+"/get/computers") showchoicesapi(T('Computers list'),T('Computers list'),"/get/computers")
elif menu == '2': #Listado de grupos elif menu == '2': #Listado de grupos
showchoicesapi(T('Groups list'),T('Groups list'),c_server+"/get/groups") showchoicesapi(T('Groups list'),T('Groups list'),"/get/groups")
elif menu == '3': elif menu == '3':
group = showchoicesapi(T('Groups list')+'. '+T('Select a group'),T('Groups list'),c_server+"/get/groups") group = showchoicesapi(T('Groups list')+'. '+T('Select a group'),T('Groups list'),"/get/groups")
showchoicesapi("Lista de equipos del grupo "+group,T('List of computers and cooks of a group'),c_server+"/get/computersgrp?GroupName="+group) showchoicesapi("Lista de equipos del grupo "+group,T('List of computers and cooks of a group'),"/get/computersgrp?GroupName="+group)
showchoicesapi("Lista de recetas del grupo "+group,T('List of computers and cooks of a group'),c_server+"/get/cookgrp?GroupName="+group,'CookName') showchoicesapi("Lista de recetas del grupo "+group,T('List of computers and cooks of a group'),"/get/cookgrp?GroupName="+group,'CookName')
elif menu == '4': elif menu == '4':
cook = showchoicesapi("Lista de recetas con grupo. Selecciona una para ver sus grupos","Listado de grupos de una receta",c_server+"/get/cookall",'CookName') cook = showchoicesapi("Lista de recetas con grupo. Selecciona una para ver sus grupos",T('List of groups of a cook'),"/get/cookall",'CookName')
if cook is not None: if cook is not None:
showchoicesapi("Lista de grupos de la receta "+cook,T('List of groups of a cook'),c_server+"/get/grpcook?CookName="+cook) showchoicesapi("Lista de grupos de la receta "+cook,T('List of groups of a cook'),"/get/grpcook?CookName="+cook)
elif menu is None: elif menu is None:
menuprinc() menuprinc()
return return
@@ -211,22 +210,49 @@ def mreports():
def m_addcomputergroup(): def m_addcomputergroup():
whatc = showchoicesapi(T('Select computer to add to a group'),T('Add computer to group'),c_server+"/get/computers") whatc = showchoicesapi(T('Select computer to add to a group'),T('Add computer to group'),"/get/computers")
if whatc is None: if whatc is None:
return return
whatg = showchoicesapi(T('Select group to be added'),T('Add computer to group'),c_server+"/get/groups") whatg = showchoicesapi(T('Select group to be added'),T('Add computer to group'),"/get/groups")
if whatg is None: if whatg is None:
return return
sendsettoapi("/add/grpcomputer?ComputerName="+whatc+"&GroupName="+whatg,"Equipo añadido al grupo") sendsettoapi("/add/grpcomputer?ComputerName="+whatc+"&GroupName="+whatg,"Equipo añadido al grupo")
def m_delcomputergroup(): def m_delcomputergroup():
computer = showchoicesapi("Seleccione equipo para buscar un grupo que borrar",T('Remove computer of a group'),c_server+"/get/computers") computer = showchoicesapi("Seleccione equipo para buscar un grupo que borrar",T('Remove computer of a group'),"/get/computers")
if computer is None: if computer is None:
return return
group = showchoicesapi(T('Select group to delete'),T('Remove computer of a group'),c_server+"/get/groups?ComputerName="+computer) group = showchoicesapi(T('Select group to delete'),T('Remove computer of a group'),"/get/groups?ComputerName="+computer)
if group is None: if group is None:
return return
if easygui.ynbox("Quitar el equipo "+computer+" del grupo '"+group+"'. ¿Seguro?",T('Remove computer of a group')): if easygui.ynbox("Quitar el equipo "+computer+" del grupo '"+group+"'. ¿Seguro?",T('Remove computer of a group')):
sendsettoapi("/del/grpcomputer?ComputerName="+computer+"&GroupName="+group,"Equipo quitado del grupo") sendsettoapi("/del/grpcomputer?ComputerName="+computer+"&GroupName="+group,"Equipo quitado del grupo")
menuprinc()
# Check password before starting all
pa = returnvalueapi("/check/password?Password=None",field="EXITCODE")
if pa == "3": # No password stored yet
passw = easygui.passwordbox(T('There is no password yet in PCM. Please set one below'),T('Set password'))
passw2 = easygui.passwordbox(T('Confirm it'),T('Set password'))
if passw==passw2 and passw is not None: # Password match
passha256 = hashlib.sha256(passw.encode()).hexdigest()
re = returnvalueapi("/upd/password?NewPassword="+passha256,field="RESULT") # Create password in database
if re=='OK': # All right. Start app
menuprinc()
else: # Fail. Not controlled
easygui.msgbox(T('Error unespecified. App will exit'),T('Set password'))
else: # Password not match
easygui.msgbox(T('Password not match. App will exit'),T('Set password'))
#Exit
else: # There is a password
passw = easygui.passwordbox(T('Enter password to start'),T('Enter password'))
if passw is None:
quit()
passha256 = hashlib.sha256(passw.encode()).hexdigest()
re = returnvalueapi("/check/password?Password="+passha256,field="EXITCODE") # Create password in database
if re == '0': # Password is right
menuprinc()
else:
easygui.msgbox(T('Password not match. App will exit'),T('Enter password'))

View File

@@ -53,7 +53,14 @@ def T_es(textid):
'List of groups of a cook':'Listado de grupos de una receta', 'List of groups of a cook':'Listado de grupos de una receta',
'Select computer to add to a group':'Seleccione equipo para añadir a un grupo', 'Select computer to add to a group':'Seleccione equipo para añadir a un grupo',
'Select group to be added':'Seleccione grupo a ser añadido', 'Select group to be added':'Seleccione grupo a ser añadido',
'Select group to delete':'Seleccione grupo a quitar' 'Select group to delete':'Seleccione grupo a quitar',
'Rename cook': 'Renombrar receta',
'Set password':'Establecer contraseña',
'There is no password yet in PCM. Please set one below':'No hay contraseña aún en PCM. Por favor, escriba una debajo',
'Confirm it':'Confirmalo',
'Password not match. App will exit':'Las contraseñas no coinciden. La aplicación se va a cerrar',
'Enter password':'Introducir contraseña',
'Enter password to start':'Introduzca la contraseña para empezar'
} }
return dict[textid] return dict[textid]