Skip to content
Snippets Groups Projects
Commit 8b00e0ec authored by Loloncio's avatar Loloncio
Browse files

Añadido fichero de datos csv

Añadido al modelo el fichero csv con los datos de grupos y permisos.

Actualizados los modelos para usar esos datos en lugar de los incrustados.
parent 8e0bc7fc
No related branches found
No related tags found
No related merge requests found
......@@ -35,13 +35,25 @@ class ControladorDef:
return texto
# Obtenemos todos los permisos normales
def getPermisosNormales(self):
return self.modeloPermisos.getPermisosNormales()
permisos = self.modeloPermisos.getPermisosNormales()
lista = ""
for permiso in permisos:
lista += permiso+"\n"
return lista
# Obtenemos todos los permisos dangerous
def getPermisosDangerous(self):
return self.modeloPermisos.getPermisosDangerous()
permisos = self.modeloPermisos.getPermisosDangerous()
lista = ""
for permiso in permisos:
lista += permiso+"\n"
return lista
# Obtenemos todos los permisos signatures
def getPermisosSignature(self):
return self.modeloPermisos.getPermisosSignature()
permisos = self.modeloPermisos.getPermisosSignature()
lista = ""
for permiso in permisos:
lista += permiso+"\n"
return lista
# Método para vovler al menú principal
def volver(self, vistaDefecto, vistaMenu):
vistaMenu.deiconify()
......
......@@ -13,17 +13,19 @@ from Model.PermisosMod import PermisosMod
class FinalContr():
modeloPermisos = PermisosMod()
modeloManifest = ManifestMod()
# Creamos un permiso para el manifest que tendrá un unico permiso, grupo y protectionLevel
# el permiso y el grupo de permisos los ha elegido el usuario.
def creaManifestGrupo(self,permiso, grupos):
nuevoGrupo = '\n<permission\
\nandroid:name="android.permission.'+permiso+\
\nandroid:name="android.permission.'+self.modeloPermisos.getPermisoCompleto(permiso)+\
'"\nandroid:protectionLevel="'+self.modeloPermisos.getProtection(permiso).lower()+\
'"\nandroid:permissionGroup="android.permission-group.'+grupos[0]+'"/>'\
'\n<uses-permission android:name="android.permission.'+permiso+'"/>'
'"\nandroid:permissionGroup="'+self.modeloPermisos.getGrupoCompleto(grupos[0])+'"/>'\
'\n<uses-permission android:name="'+self.modeloPermisos.getPermisoCompleto(permiso)+'"/>'
manifest = self.modeloManifest.getManifest1()+nuevoGrupo+self.modeloManifest.getManifest2()
self.modeloManifest.setManifest(manifest)
return
# Creamos un permiso para el manifest que tendrá un unico permiso, grupo y protectionLevel, el permiso
# y el protection level los ha elegido el usuario.
def creaManifestProtection(self, permiso, protection):
nuevoProtection = '\n<permission\
\nandroid:name="android.permission.'+permiso+\
......@@ -33,15 +35,18 @@ class FinalContr():
manifest = self.modeloManifest.getManifest1+nuevoProtection+self.modeloManifest.getManifest2
self.modeloManifest.setManifest(manifest)
return
# Creamos un permiso para el manifest que tendrá un unico permiso, dos grupo y un protectionLevel
# el permiso y los grupos los ha elegido el usuario
def creaManifestGrupos(self,permiso, grupos):
nuevoGrupo = '\n<permission\
\nandroid:name="android.permission.'+permiso+\
'"\nandroid:protectionLevel="'+self.modeloPermisos.getProtection(permiso).lower()+\
'"\nandroid:permissionGroup="android.permission-group.'+grupos[0]+'",android.permission-group."'+grupos[2]+'"/>'\
\nandroid:name="'+self.modeloPermisos.getPermisoCompleto(permiso)+'"'\
'\nandroid:protectionLevel="'+self.modeloPermisos.getProtection(permiso).lower()+'"'\
'\nandroid:permissionGroup="'+self.modeloPermisos.getGrupoCompleto(grupos[0])+'","'+self.modeloPermisos.getGrupoCompleto(grupos[1])+'"/>'\
'\n<uses-permission android:name="android.permission.'+permiso+'"/>'
manifest = self.modeloManifest.getManifest1()+nuevoGrupo+self.modeloManifest.getManifest2()
self.modeloManifest.setManifest(manifest)
return
# Crea un archivo AndroidManifest.xml y se compila el apk con ese Manifest
def compilar(self):
manifest = self.modeloManifest.getManifest()
rutaManifest = os.path.join(os.path.dirname(os.path.abspath(__file__)),"../../Android/App-Perm/app/src/main/AndroidManifest.xml")
......@@ -60,6 +65,7 @@ class FinalContr():
comando = f"{rutaProyecto}/gradlew assembleDebug"
subprocess.run(comando, shell=True, cwd=rutaProyecto)
return
# Abre en el explorador la ruta al archivo apk, funciona en Windows y Linux
def abrirExplorador(self):
ruta = os.path.join(os.path.dirname(os.path.abspath(__file__)), "../../Android/App-Perm/app/build/outputs/apk/debug")
......@@ -69,6 +75,7 @@ class FinalContr():
elif platform.system() == "Linux":
# Si estás en Linux
subprocess.Popen(['xdg-open', ruta])
# Instenta instalar el apk mediante adb
def instalaApk(self):
ruta_apk = os.path.join(os.path.dirname(os.path.abspath(__file__)), "../../Android/App-Perm/app/build/outputs/apk/debug/app-debug.apk")
ruta_adb = os.path.join(os.path.dirname(os.path.abspath(__file__)), "../../Android/Sdk/platform-tools/adb")
......
......@@ -14,7 +14,8 @@ from View.Final import final
class ListasContr():
modeloPermisos = PermisosMod()
modeloGrupos = GruposMod()
# Obtenemos una lista de permisos, si opcion es 4 o 5 solo se dan
# permisos normales o signature respectivamente
def getPermisos(self, opcion):
if opcion == 4:
return self.modeloPermisos.getPermisosNormales()
......@@ -22,11 +23,13 @@ class ListasContr():
return self.modeloPermisos.getPermisosSignature()
else:
return self.modeloPermisos.getPermisos()
# Obtenemos una lista con todos los grupos
def getGrupos(self):
return list(self.modeloGrupos.getGrupos())
# Vamos a la vista final pasandole permiso, grupo, protectionLevel y opcion indicados,
# Si la opción seleccionada no necesita alguno de estos valores, se manda None en su lugar
def aFinal(self, parent, permiso, grupos, protection, opcion):
if opcion == 1:
#print(grupos[0], self.modeloPermisos.getGrupo(permiso))
if grupos[0] == self.modeloPermisos.getGrupo(permiso):
return "El permiso ya pertenece a ese grupo"
else:
......
# Clase GruposMod del modelo de datos de la aplicación App-perm.
# Obtiene los datos de los grupos de permisos y sus permisos asociados
# y permite acceder a estos datos.
# Autor: Alejandro de la Cruz Garijo
import csv
import os
class GruposMod:
GRUPOS = {
"PHONE":["ANSWER_PHONE_CALLS", "READ_PHONE_NUMBERS", "READ_PHONE_STATE", "CALL_PHONE", "ACCEPT_HANDOVER", "USE_SIP", "ADD_VOICEMAIL"],
"CONTACTS":["WRITE_CONTACTS", "GET_ACCOUNTS", "READ_CONTACTS"],
"CALL_LOG":["READ_CALL_LOG", "WRITE_CALL_LOG", "PROCESS_OUTGOING_CALLS"],
"READ_MEDIA_VISUAL":["READ_MEDIA_IMAGES", "READ_MEDIA_VIDEO", "ACCESS_MEDIA_LOCATION"],
"READ_MEDIA_AURAL":["READ_MEDIA_AUDIO"],
"CAR_INFORMATION":["No hay permisos"],
"ACTIVITY_RECOGNITION":["ACTIVITY_RECOGNITION"],
"UNDEFINED":["No hay permisos"],
"SENSORS":["BODY_SENSORS", "BODY_SENSORS_BACKGROUND"],
"STORAGE":["READ_EXTERNAL_STORAGE", "WRITE_EXTERNAL_STORAGE"],
"NOTIFICATIONS":["POST_NOTIFICATIONS"],
"LOCATION":["ACCESS_FINE_LOCATION", "ACCESS_COARSE_LOCATION", "ACCESS_BACKGROUND_LOCATION"],
"CALENDAR":["READ_CALENDAR", "WRITE_CALENDAR"],
"CAMERA":["CAMERA", "BACKGROUND_CAMERA"],
"MICROPHONE":["RECORD_BACKGROUND_AUDIO", "RECORD_AUDIO"],
"NEARBY_DEVICES":["NEARBY_WIFI_DEVICES", "BLUETOOTH_CONNECT", "BLUETOOTH_ADVERTISE", "UWB_RANGING", "BLUETOOTH_SCAN"],
"SMS":["READ_SMS", "RECEIVE_WAP_PUSH", "RECEIVE_MMS", "RECEIVE_SMS", "SEND_SMS", "READ_CELL_BROADCASTS"]
}
# Abrimos el csv con los datos y creamos un diccionario con los grupos como clave y
# una lista de sus permsios como valor
def __init__(self):
self.grupos = {}
ruta_csv = os.path.join(os.path.dirname(os.path.abspath(__file__)), "./Permisos.csv")
with open(ruta_csv) as file:
csv_reader = csv.DictReader(file, delimiter=';')
for row in csv_reader:
permiso = row['Permiso']
grupo = row['Grupo']
if grupo in self.grupos:
self.grupos[grupo].append(permiso)
else:
self.grupos.update({grupo:[permiso]})
# Obtenemos todas las claves del diccionario, es decir, los grupos
def getGrupos(self):
return self.GRUPOS.keys()
grupos = self.grupos.keys()
lista = []
for key in grupos:
lista.append(key[key.rfind('.')+1::1])
return lista
# Obtenemos todos los permisos de un grupo
def getPermisos(self, grupo):
return self.GRUPOS.get(grupo)
\ No newline at end of file
permisos = self.grupos.get(self.getGrupoCompleto(grupo))
lista = [permiso[permiso.rfind('.')+1::1] for permiso in permisos]
return lista
# Obtenemos el nombre completo de un grupo dado
def getGrupoCompleto(self, grupo):
for group in self.grupos.keys():
if grupo in group:
return group
\ No newline at end of file
Permiso;Grupo;Protection
android.permission.DELIVER_COMPANION_MESSAGES;;Normal
android.permission.HIDE_OVERLAY_WINDOWS;;Normal
android.permission.READ_ASSISTANT_APP_SEARCH_DATA;;Internal
android.permission.READ_BASIC_PHONE_STATE;;Normal
android.permission.READ_HOME_APP_SEARCH_DATA;;Internal
android.permission.USE_EXACT_ALARM;;Normal
android.permission.ACCESS_BACKGROUND_LOCATION;android.permissiongroup.LOCATION;Dangerous
android.permission.ACCESS_COARSE_LOCATION;android.permissiongroup.LOCATION;Dangerous
android.permission.ACCESS_FINE_LOCATION;android.permissiongroup.LOCATION;Dangerous
android.permission.ACCESS_MEDIA_LOCATION;android.permissiongroup.READ_MEDIA_VISUAL;Dangerous
android.permission.ACTIVITY_RECOGNITION;android.permissiongroup.ACTIVITY_RECOGNITION;Dangerous
com.android.voicemail.permission.ADD_VOICEMAIL;android.permissiongroup.PHONE;Dangerous
android.permission.ANSWER_PHONE_CALLS;android.permissiongroup.PHONE;Dangerous
android.permission.BLUETOOTH_ADVERTISE;android.permissiongroup.NEARBY_DEVICES;Dangerous
android.permission.ACCEPT_HANDOVER;android.permissiongroup.PHONE;Dangerous
android.permission.BLUETOOTH_CONNECT;android.permissiongroup.NEARBY_DEVICES;Dangerous
android.permission.BLUETOOTH_SCAN;android.permissiongroup.NEARBY_DEVICES;Dangerous
android.permission.BODY_SENSORS;android.permissiongroup.SENSORS;Dangerous
android.permission.BODY_SENSORS_BACKGROUND;android.permissiongroup.SENSORS;Dangerous
android.permission.CALL_PHONE;android.permissiongroup.PHONE;Dangerous
com.android.launcher.permission.UNINSTALL_SHORTCUT;;Normal
android.permission.REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE;;Normal
android.permission.REQUEST_COMPANION_PROFILE_AUTOMOTIVE_PROJECTION;;Internal
android.permission.CAMERA;android.permissiongroup.CAMERA;Dangerous
android.permission.GET_ACCOUNTS;android.permissiongroup.CONTACTS;Dangerous
android.permission.POST_NOTIFICATIONS;android.permissiongroup.NOTIFICATIONS;Dangerous
android.permission.READ_CALENDAR;android.permissiongroup.CALENDAR;Dangerous
android.permission.READ_MEDIA_IMAGES;android.permissiongroup.READ_MEDIA_VISUAL;Dangerous
android.permission.READ_MEDIA_AUDIO;android.permissiongroup.READ_MEDIA_AURAL;Dangerous
android.permission.READ_CALL_LOG;android.permissiongroup.CALL_LOG;Dangerous
android.permission.READ_EXTERNAL_STORAGE;android.permissiongroup.STORAGE;Dangerous
android.permission.NEARBY_WIFI_DEVICES;android.permissiongroup.NEARBY_DEVICES;Dangerous
android.permission.READ_CONTACTS;android.permissiongroup.CONTACTS;Dangerous
android.permission.READ_MEDIA_VIDEO;android.permissiongroup.READ_MEDIA_VISUAL;Dangerous
android.permission.READ_PHONE_NUMBERS;android.permissiongroup.PHONE;Dangerous
android.permission.READ_PHONE_STATE;android.permissiongroup.PHONE;Dangerous
android.permission.READ_SMS;android.permissiongroup.SMS;Dangerous
android.permission.RECEIVE_MMS;android.permissiongroup.SMS;Dangerous
android.permission.RECEIVE_SMS;android.permissiongroup.SMS;Dangerous
android.permission.RECEIVE_WAP_PUSH;android.permissiongroup.SMS;Dangerous
android.permission.RECORD_AUDIO;android.permissiongroup.MICROPHONE;Dangerous
android.permission.SEND_SMS;android.permissiongroup.SMS;Dangerous
android.permission.UWB_RANGING;android.permissiongroup.NEARBY_DEVICES;Dangerous
android.permission.WRITE_CALL_LOG;android.permissiongroup.CALL_LOG;Dangerous
android.permission.WRITE_CALENDAR;android.permissiongroup.CALENDAR;Dangerous
android.permission.WRITE_EXTERNAL_STORAGE;android.permissiongroup.STORAGE;Dangerous
android.permission.WRITE_CONTACTS;android.permissiongroup.CONTACTS;Dangerous
android.permission.USE_SIP;android.permissiongroup.PHONE;Dangerous
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS;;Normal
android.permission.ACCESS_NETWORK_STATE;;Normal
android.permission.ACCESS_NOTIFICATION_POLICY;;Normal
android.permission.ACCESS_WIFI_STATE;;Normal
android.permission.BLUETOOTH;;Normal
android.permission.BLUETOOTH_ADMIN;;Normal
android.permission.BROADCAST_STICKY;;Normal
android.permission.CALL_COMPANION_APP;;Normal
android.permission.CHANGE_NETWORK_STATE;;Normal
android.permission.CHANGE_WIFI_MULTICAST_STATE;;Normal
android.permission.CHANGE_WIFI_STATE;;Normal
android.permission.DISABLE_KEYGUARD;;Normal
android.permission.EXPAND_STATUS_BAR;;Normal
android.permission.GET_PACKAGE_SIZE;;Normal
com.android.launcher.permission.INSTALL_SHORTCUT;;Normal
android.permission.INTERNET;;Normal
android.permission.KILL_BACKGROUND_PROCESSES;;Normal
android.permission.HIGH_SAMPLING_RATE_SENSORS;;Normal
android.permission.MANAGE_OWN_CALLS;;Normal
android.permission.MODIFY_AUDIO_SETTINGS;;Normal
android.permission.NFC;;Normal
android.permission.NFC_TRANSACTION_EVENT;;Normal
android.permission.READ_SYNC_SETTINGS;;Normal
android.permission.RECEIVE_BOOT_COMPLETED;;Normal
android.permission.READ_SYNC_STATS;;Normal
android.permission.FOREGROUND_SERVICE;;Normal
android.permission.NFC_PREFERRED_PAYMENT_INFO;;Normal
android.permission.QUERY_ALL_PACKAGES;;Normal
android.permission.REQUEST_COMPANION_PROFILE_WATCH;;Normal
android.permission.REORDER_TASKS;;Normal
android.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND;;Normal
android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND;;Normal
android.permission.REQUEST_DELETE_PACKAGES;;Normal
android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS;;Normal
android.permission.REQUEST_PASSWORD_COMPLEXITY;;Normal
android.permission.REQUEST_COMPANION_START_FOREGROUND_SERVICES_FROM_BACKGROUND;;Normal
com.android.alarm.permission.SET_ALARM;;Normal
android.permission.SET_WALLPAPER;;Normal
android.permission.SET_WALLPAPER_HINTS;;Normal
android.permission.TRANSMIT_IR;;Normal
android.permission.UPDATE_PACKAGES_WITHOUT_USER_ACTION;;Normal
android.permission.USE_BIOMETRIC;;Normal
android.permission.USE_FULL_SCREEN_INTENT;;Normal
android.permission.VIBRATE;;Normal
android.permission.WAKE_LOCK;;Normal
android.permission.WRITE_SYNC_SETTINGS;;Normal
android.permission.REQUEST_INSTALL_PACKAGES;;Signature
android.permission.MANAGE_EXTERNAL_STORAGE;;Signature
android.permission.SCHEDULE_EXACT_ALARM;;Normal
android.permission.SUBSCRIBE_TO_KEYGUARD_LOCKED_STATE;;Internal
android.permission.SYSTEM_ALERT_WINDOW;;Signature
# Clase PermisosMod del modelo de datos de la aplicación App-perm.
# Obtiene los datos de los permisos y su grupo y protection level asociados.
# Permite acceder a estos datos de varias formas.
# Autor: Alejandro de la Cruz Garijo
import csv
import os
class PermisosMod:
PERMISOS = [
"DELIVER_COMPANION_MESSAGES;-;Normal",
"HIDE_OVERLAY_WINDOWS;-;Normal",
"READ_ASSISTANT_APP_SEARCH_DATA;-;Internal",
"READ_BASIC_PHONE_STATE;-;Normal",
"READ_HOME_APP_SEARCH_DATA;-;Internal",
"USE_EXACT_ALARM;-;Normal",
"ACCESS_BACKGROUND_LOCATION;LOCATION;Dangerous",
"ACCESS_COARSE_LOCATION;LOCATION;Dangerous",
"ACCESS_FINE_LOCATION;LOCATION;Dangerous",
"ACCESS_MEDIA_LOCATION;READ_MEDIA_VISUAL;Dangerous",
"ACTIVITY_RECOGNITION;ACTIVITY_RECOGNITION;Dangerous",
"ADD_VOICEMAIL;PHONE;Dangerous",
"ANSWER_PHONE_CALLS;PHONE;Dangerous",
"BLUETOOTH_ADVERTISE;NEARBY_DEVICES;Dangerous",
"ACCEPT_HANDOVER;PHONE;Dangerous",
"BLUETOOTH_CONNECT;NEARBY_DEVICES;Dangerous",
"BLUETOOTH_SCAN;NEARBY_DEVICES;Dangerous",
"BODY_SENSORS;SENSORS;Dangerous",
"BODY_SENSORS_BACKGROUND;SENSORS;Dangerous",
"CALL_PHONE;PHONE;Dangerous",
"UNINSTALL_SHORTCUT;-;Normal",
"REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE;-;Normal",
"REQUEST_COMPANION_PROFILE_AUTOMOTIVE_PROJECTION;-;Internal",
"CAMERA;CAMERA;Dangerous",
"GET_ACCOUNTS;CONTACTS;Dangerous",
"POST_NOTIFICATIONS;NOTIFICATIONS;Dangerous",
"READ_CALENDAR;CALENDAR;Dangerous",
"READ_MEDIA_IMAGES;READ_MEDIA_VISUAL;Dangerous",
"READ_MEDIA_AUDIO;READ_MEDIA_AURAL;Dangerous",
"READ_CALL_LOG;CALL_LOG;Dangerous",
"READ_EXTERNAL_STORAGE;STORAGE;Dangerous",
"NEARBY_WIFI_DEVICES;NEARBY_DEVICES;Dangerous",
"READ_CONTACTS;CONTACTS;Dangerous",
"READ_MEDIA_VIDEO;READ_MEDIA_VISUAL;Dangerous",
"READ_PHONE_NUMBERS;PHONE;Dangerous",
"READ_PHONE_STATE;PHONE;Dangerous",
"READ_SMS;SMS;Dangerous",
"RECEIVE_MMS;SMS;Dangerous",
"RECEIVE_SMS;SMS;Dangerous",
"RECEIVE_WAP_PUSH;SMS;Dangerous",
"RECORD_AUDIO;MICROPHONE;Dangerous",
"SEND_SMS;SMS;Dangerous",
"UWB_RANGING;NEARBY_DEVICES;Dangerous",
"WRITE_CALL_LOG;CALL_LOG;Dangerous",
"WRITE_CALENDAR;CALENDAR;Dangerous",
"WRITE_EXTERNAL_STORAGE;STORAGE;Dangerous",
"WRITE_CONTACTS;CONTACTS;Dangerous",
"USE_SIP;PHONE;Dangerous",
"ACCESS_LOCATION_EXTRA_COMMANDS;-;Normal",
"ACCESS_NETWORK_STATE;-;Normal",
"ACCESS_NOTIFICATION_POLICY;-;Normal",
"ACCESS_WIFI_STATE;-;Normal",
"BLUETOOTH;-;Normal",
"BLUETOOTH_ADMIN;-;Normal",
"BROADCAST_STICKY;-;Normal",
"CALL_COMPANION_APP;-;Normal",
"CHANGE_NETWORK_STATE;-;Normal",
"CHANGE_WIFI_MULTICAST_STATE;-;Normal",
"CHANGE_WIFI_STATE;-;Normal",
"DISABLE_KEYGUARD;-;Normal",
"EXPAND_STATUS_BAR;-;Normal",
"GET_PACKAGE_SIZE;-;Normal",
"INSTALL_SHORTCUT;-;Normal",
"INTERNET;-;Normal",
"KILL_BACKGROUND_PROCESSES;-;Normal",
"HIGH_SAMPLING_RATE_SENSORS;-;Normal",
"MANAGE_OWN_CALLS;-;Normal",
"MODIFY_AUDIO_SETTINGS;-;Normal",
"NFC;-;Normal",
"NFC_TRANSACTION_EVENT;-;Normal",
"READ_SYNC_SETTINGS;-;Normal",
"RECEIVE_BOOT_COMPLETED;-;Normal",
"READ_SYNC_STATS;-;Normal",
"FOREGROUND_SERVICE;-;Normal",
"NFC_PREFERRED_PAYMENT_INFO;-;Normal",
"QUERY_ALL_PACKAGES;-;Normal",
"REQUEST_COMPANION_PROFILE_WATCH;-;Normal",
"REORDER_TASKS;-;Normal",
"REQUEST_COMPANION_RUN_IN_BACKGROUND;-;Normal",
"REQUEST_COMPANION_USE_DATA_IN_BACKGROUND;-;Normal",
"REQUEST_DELETE_PACKAGES;-;Normal",
"REQUEST_IGNORE_BATTERY_OPTIMIZATIONS;-;Normal",
"REQUEST_PASSWORD_COMPLEXITY;-;Normal",
"REQUEST_COMPANION_START_FOREGROUND_SERVICES_FROM_BACKGROUND;-;Normal",
"SET_ALARM;-;Normal",
"SET_WALLPAPER;-;Normal",
"SET_WALLPAPER_HINTS;-;Normal",
"TRANSMIT_IR;-;Normal",
"UPDATE_PACKAGES_WITHOUT_USER_ACTION;-;Normal",
"USE_BIOMETRIC;-;Normal",
"USE_FULL_SCREEN_INTENT;-;Normal",
"VIBRATE;-;Normal",
"WAKE_LOCK;-;Normal",
"WRITE_SYNC_SETTINGS;-;Normal",
"REQUEST_INSTALL_PACKAGES;-;Signature",
"MANAGE_EXTERNAL_STORAGE;-;Signature",
"SCHEDULE_EXACT_ALARM;-;Normal",
"SUBSCRIBE_TO_KEYGUARD_LOCKED_STATE;-;Internal",
"SYSTEM_ALERT_WINDOW;-;Signature",
]
# Abrimos el fichero csv de datos y obtenemos una matriz con los datos de los permisos
def __init__(self):
self.permisos = []
ruta_csv = os.path.join(os.path.dirname(os.path.abspath(__file__)), "./Permisos.csv")
with open(ruta_csv) as file:
csv_reader = csv.DictReader(file, delimiter=';')
for row in csv_reader:
permiso = row['Permiso']
grupo = row['Grupo']
protection = row['Protection']
self.permisos.append([permiso, grupo, protection])
# Obtenemos una lista con todos los permisos
def getPermisos(self):
listaPermisos = []
for permiso in self.PERMISOS:
info = permiso.split(sep=";")
listaPermisos.append(info[0])
for permiso in self.permisos:
listaPermisos.append(permiso[0][permiso[0].rfind('.')+1::1])
return listaPermisos
# Obtenemos una lista con todos los permisos cuyo protection level sea normal
def getPermisosNormales(self):
Normales = ""
for permiso in self.PERMISOS:
permiso = permiso.split(sep=";")
normales = []
for permiso in self.permisos:
if permiso[2] == "Normal":
Normales += permiso[0]+"\n"
return Normales
def getPermisosdangerous(self):
dangerous = ""
for permiso in self.PERMISOS:
permiso = permiso.split(sep=";")
normales.append(permiso[0][permiso[0].rfind('.')+1::1])
return normales
# Obtenemos una lista con todos los permisos cuyo protection level sea dangerous
def getPermisosDangerous(self):
dangerous = []
for permiso in self.permisos:
if permiso[2] == "Dangerous":
dangerous += permiso[0]+"\n"
dangerous.append(permiso[0][permiso[0].rfind('.')+1::1])
return dangerous
# Obtenemos una lista con todos los permisos cuyo protection level sea signature
def getPermisosSignature(self):
signature = ""
for permiso in self.PERMISOS:
permiso = permiso.split(sep=";")
signature = []
for permiso in self.permisos:
if permiso[2] == "Signature":
signature += permiso[0]+"\n"
signature.append(permiso[0][permiso[0].rfind('.')+1::1])
return signature
# Obtenemos el grupo asociado a un permiso
def getGrupo(self, permiso):
for perm in self.PERMISOS:
perm = perm.split(sep=";")
if perm[0] == permiso:
for perm in self.permisos:
if perm[0][perm[0].rfind('.')+1::1] == permiso:
if perm[1] != "-":
return perm[1]
return perm[1][perm[1].rfind('.')+1::1]
else:
return "No pertenece a ningún grupo"
# Obtenemos el protection level asociado a un permiso
def getProtection(self,permiso):
for perm in self.PERMISOS:
perm = perm.split(sep=";")
if perm[0] == permiso:
for perm in self.permisos:
if perm[0][perm[0].rfind('.')+1::1] == permiso:
return perm[2]
# Obtenemos el nombre completo del permiso dado
def getPermisoCompleto(self, permiso):
for perm in self.permisos:
if permiso in perm[0]:
return perm[0]
# Obtenemos el nombre completo del grupo dado
def getGrupoCompleto(self, grupo):
for perm in self.permisos:
if grupo in perm[1]:
return perm[1]
\ No newline at end of file
......@@ -128,7 +128,7 @@ class defecto(ctk.CTkToplevel):
label.configure(text=self.controlador.getPermisosNormales())
elif protection == "Dangerous":
label.configure(text=self.controlador.getPermisosDangerous())
elif protection == "Dangerous":
elif protection == "Signature":
label.configure(text=self.controlador.getPermisosSignature())
return
# Método para que cambie de color un widget al pasar el ratón por encima
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment