Merge branch 'dev-FixingIconCrash' into 'dev'

Dev fixing icon crash

See merge request crafty-controller/crafty-commander!185
This commit is contained in:
Andrew 2022-03-04 22:45:14 +00:00
commit cd33383cd2
5 changed files with 177 additions and 19 deletions

View File

@ -161,6 +161,7 @@ class Stats:
try: try:
server_icon = base64.encodebytes(ping_obj.icon) server_icon = base64.encodebytes(ping_obj.icon)
server_icon = server_icon.decode('utf-8')
except Exception as e: except Exception as e:
server_icon = False server_icon = False
logger.info(f"Unable to read the server icon : {e}") logger.info(f"Unable to read the server icon : {e}")

View File

@ -487,6 +487,8 @@ class Server:
# clear the old scheduled watcher task # clear the old scheduled watcher task
self.server_scheduler.remove_job(f"c_{self.server_id}") self.server_scheduler.remove_job(f"c_{self.server_id}")
# remove the stats polling job since server is stopped
self.server_scheduler.remove_job("stats_"+str(self.server_id))
# the server crashed, or isn't found - so let's reset things. # the server crashed, or isn't found - so let's reset things.
logger.warning(f"The server {name} seems to have vanished unexpectedly, did it crash?") logger.warning(f"The server {name} seems to have vanished unexpectedly, did it crash?")

View File

@ -14,6 +14,8 @@ class StatusHandler(BaseHandler):
server_data = srv.get('server_data', False) server_data = srv.get('server_data', False)
server_id = server_data.get('server_id', False) server_id = server_data.get('server_id', False)
srv['raw_ping_result'] = self.controller.servers.get_server_stats_by_id(server_id) srv['raw_ping_result'] = self.controller.servers.get_server_stats_by_id(server_id)
if 'icon' not in srv['raw_ping_result']:
srv['raw_ping_result']['icon'] = False
template = 'public/status.html' template = 'public/status.html'
@ -29,8 +31,6 @@ class StatusHandler(BaseHandler):
server_data = srv.get('server_data', False) server_data = srv.get('server_data', False)
server_id = server_data.get('server_id', False) server_id = server_data.get('server_id', False)
srv['raw_ping_result'] = self.controller.servers.get_server_stats_by_id(server_id) srv['raw_ping_result'] = self.controller.servers.get_server_stats_by_id(server_id)
if not srv['raw_ping_result'].has_key('icon'):
srv['raw_ping_result']['icon'] = False
template = 'public/status.html' template = 'public/status.html'
self.render( self.render(

View File

@ -34,11 +34,7 @@
</td> </td>
<td id="server_motd_{{ server['stats']['server_id']['server_id'] }}"> <td id="server_motd_{{ server['stats']['server_id']['server_id'] }}">
{% if server['stats']['desc'] != 'False' %} {% if server['stats']['desc'] != 'False' %}
{% if server['raw_ping_result']['icon'] %} <img src="/static/assets/images/pack.png" alt="icon" style="-webkit-filter:grayscale(100%); filter:grayscale(100%)"/>
<img src="data:image/png;base64,{% raw server['raw_ping_result']['icon'] %}" alt="icon" />
{% else %}
<img src="/static/assets/images/pack.png" alt="icon" />
{% end %}
<span id="input_motd_{{ server['stats']['server_id']['server_id'] }}" class="input_motd">{{ <span id="input_motd_{{ server['stats']['server_id']['server_id'] }}" class="input_motd">{{
server['stats']['desc'] }}</span> <br /> server['stats']['desc'] }}</span> <br />
{% end %} {% end %}
@ -158,4 +154,4 @@
}()); }());
</script> </script>
{% end %} {% end %}

View File

@ -17,7 +17,9 @@
"eulaTitle": "Accepter le EULA", "eulaTitle": "Accepter le EULA",
"eulaMsg": "Vous devez accepter le EULA. Une copie du CLUF de Mojang est liée sous ce message.", "eulaMsg": "Vous devez accepter le EULA. Une copie du CLUF de Mojang est liée sous ce message.",
"eulaAgree": "Êtes-vous d'accord?", "eulaAgree": "Êtes-vous d'accord?",
"noJava": "Server {} failed to start with error code: We have detected Java is not installed. Please install java then start the server." "noJava": "Le Démarrage du Serveur {} a échoué avec le code d'erreur : Nous avons détecté que Java n'est pas installé. Merci d'installer java avant de démarrer le serveur.",
"not-downloaded": "Nous ne parvenons pas à trouver le fichier exécutable. A-t-il fini de Télécharger ? Les permissions permettent elles l'exécution ?",
"no-file": "Nous ne parvenons pas à localiser le fichier demandé. Vérifier le chemin du fichier. Les permissions authorisent elles Crafty ?"
}, },
"404": { "404": {
"contact": "Contacter le Support de Crafty Control via Discord", "contact": "Contacter le Support de Crafty Control via Discord",
@ -68,7 +70,13 @@
"downloading": "Téléchargement du Serveur ...", "downloading": "Téléchargement du Serveur ...",
"addRole": "Ajouter le server au(x) rôle(s) existant(s)", "addRole": "Ajouter le server au(x) rôle(s) existant(s)",
"autoCreate": "Si aucun n'est sélectionné, Crafty en créera un !", "autoCreate": "Si aucun n'est sélectionné, Crafty en créera un !",
"selectRole": "Sélectionnez le rôle(s)" "selectRole": "Sélectionnez le rôle(s)",
"selectZipDir": "Selectionner le dossier de l'archive depuis lequel extraire les fichiers",
"close": "Fermer",
"save": "Sauvegarder",
"selectRoot": "Selectionner le Dossier Racine de l'Archive",
"clickRoot": "Cliquer ici pour sélectionner le Dossier Racine",
"explainRoot": "Merci de clicker sur le bouton ci-dessous pour sélectionner le dossier du server contenu dans l'Archive"
}, },
"dashboard": { "dashboard": {
"dashboard": "Tableau de Bord", "dashboard": "Tableau de Bord",
@ -112,7 +120,8 @@
"starting": "Démarrage retardé", "starting": "Démarrage retardé",
"delay-explained": "Le service/agent a récemment démarré et retarde le démarrage de l'instance du serveur minecraft", "delay-explained": "Le service/agent a récemment démarré et retarde le démarrage de l'instance du serveur minecraft",
"no-servers": "Il n'y a actuellement aucun serveur. Pour commencer, clique sur", "no-servers": "Il n'y a actuellement aucun serveur. Pour commencer, clique sur",
"welcome": "Bienvenue sur Crafty Controller" "welcome": "Bienvenue sur Crafty Controller",
"crashed": "Crashed"
}, },
"accessDenied": { "accessDenied": {
"accessDenied": "Accès Interdit", "accessDenied": "Accès Interdit",
@ -134,7 +143,8 @@
"description": "Description", "description": "Description",
"errorCalculatingUptime": "Erreur de Calcul du Temps de Disponibilité", "errorCalculatingUptime": "Erreur de Calcul du Temps de Disponibilité",
"serverTime": "Temps UTC", "serverTime": "Temps UTC",
"unableToConnect": "Impossible de se Connecter" "unableToConnect": "Impossible de se Connecter",
"serverTimeZone": "Fuseau Horaire du Serveur"
}, },
"serverDetails": { "serverDetails": {
"serverDetails": "Détails Serveur", "serverDetails": "Détails Serveur",
@ -155,13 +165,60 @@
"stop": "Arrêter", "stop": "Arrêter",
"updating": "Mise à Jour ...", "updating": "Mise à Jour ...",
"starting": "Démarrage retardé", "starting": "Démarrage retardé",
"delay-explained": "Le service/agent a récemment démarré et retarde le démarrage de l'instance du serveur minecraft" "delay-explained": "Le service/agent a récemment démarré et retarde le démarrage de l'instance du serveur minecraft",
"downloading": "Téléchargement ..."
}, },
"serverPlayerManagement": { "serverPlayerManagement": {
"players": "Joueurs", "players": "Joueurs",
"bannedPlayers": "Joueurs Bannins", "bannedPlayers": "Joueurs Bannins",
"loadingBannedPlayers": "Chargement des Joueurs Bannis" "loadingBannedPlayers": "Chargement des Joueurs Bannis"
}, },
"serverSchedules":{
"areYouSure": "Supprimer la Tâche Planifiée ?",
"confirmDelete": "Es-tu sûr de vouloir supprimer cette tâche planifiée ? Il n'y aura pas de retour en arrière.",
"cancel": "Annuler",
"confirm": "Confirmer",
"cannotSee": "Tu ne peux pas tou voir ?",
"cannotSeeOnMobile": "Essaie de clicker sur une tâche planifiée pour voir tous les détails."
},
"serverScheduleConfig":{
"basic": "Basique",
"cron": "Cron",
"reaction": "Réaction",
"start": "Démarrer le Serveur",
"restart": "Redémarrer le Serveur",
"stop": "Arrêter le Server",
"backup": "Sauvegarder le Server",
"custom": "Commande Personnalisée",
"interval": "Intervale",
"interval-explain": "A quelle fréquence exécuter cette tâche planifiée ?",
"days": "Jours",
"hours": "Heures",
"minutes": "Minutes",
"time": "Temps",
"time-explain": "A quelle heure exécuter la tâche planifiée ?",
"command": "Commande",
"command-explain": "Quelle Commande faut-il exécuter ? Ne pas précéder du '/'",
"cron-explain": "Entrer la ligne du Cron",
"offset": "Délai",
"offset-explain": "Combien de temps avant d'exécuter cette tâche après avoir lancé la première tâche ? (en Secondes)",
"parent": "Sélectionner la tâche parente",
"parent-explain": "Quelle tâche doit déclencher celle-ci ?",
"enabled": "Activé",
"one-time": "Supprimer après exécution",
"children": "Tâches filles liées : "
},
"notify":{
"supportLogs": "Logs de Support",
"activityLog": "Logs d'Activité",
"logout": "Logout",
"preparingLogs": " Merci d'attendre pendant que nous préparons les logs ... Nous enverrons une notification quand ils seront prêts. Cela peut prendre du temps s'il y a beaucoup de serveurs.",
"downloadLogs": "Télécharger les logs de Support ?",
"finishedPreparing": "Nous avons terminé de préparer les logs pour le support. Merci de clicker sur Télécharger pour les télécharger",
"backupComplete": "Sauvegarde complétée avec succès pour le server ",
"backupStarted": "Sauvegarde démarrée pour le serveur "
},
"serverBackups": { "serverBackups": {
"backupNow": "Sauvegarder Maintenant !", "backupNow": "Sauvegarder Maintenant !",
"backupAtMidnight": "Sauvegarde Automatique à minuit ?", "backupAtMidnight": "Sauvegarde Automatique à minuit ?",
@ -183,7 +240,12 @@
"options": "Options", "options": "Options",
"restoring": "Restauration de la sauvegarde. Cela peut prendre un peu de temps. S'il vous plaît soyez patient.", "restoring": "Restauration de la sauvegarde. Cela peut prendre un peu de temps. S'il vous plaît soyez patient.",
"restore": "Restaurer", "restore": "Restaurer",
"restoreConfirm": "Êtes-vous sûr de vouloir restaurer à partir de cette sauvegarde. Tous les fichiers du serveur actuel passeront à l'état de sauvegarde et seront irrécupérables." "confirmRestore": "Êtes-vous sûr de vouloir restaurer à partir de cette sauvegarde. Tous les fichiers du serveur actuel passeront à l'état de sauvegarde et seront irrécupérables.",,
"excludedBackups": "Dossiers Exclus : ",
"excludedChoose": "Choisir les dossiers à exclure de la sauvegarde",
"clickExclude": "Cliquer pour sélectionner les Exclusions",
"exclusionsTitle": "Exclusions de Sauvegarde",
"compress": "Compresser la Sauvegarde"
}, },
"serverFiles": { "serverFiles": {
"noscript": "Le gestionnaire de fichiers ne fonctionne pas sans JavaScript", "noscript": "Le gestionnaire de fichiers ne fonctionne pas sans JavaScript",
@ -213,7 +275,8 @@
"waitUpload": "Merci de patienter pendant que nous téléversons tes fichiers... Cela peut prendre un certain temps.", "waitUpload": "Merci de patienter pendant que nous téléversons tes fichiers... Cela peut prendre un certain temps.",
"stayHere": "NE FERME PAS CETTE PAGE!", "stayHere": "NE FERME PAS CETTE PAGE!",
"close": "Presque", "close": "Presque",
"download": "Télécharger" "download": "Télécharger",
"loadingRecords": "Chargement des Fichiers ..."
}, },
"serverConfig": { "serverConfig": {
"serverName": "Nom du Serveur", "serverName": "Nom du Serveur",
@ -257,7 +320,9 @@
"noDeleteFiles": "Non, Supprimer uniquement du tabelau de bord", "noDeleteFiles": "Non, Supprimer uniquement du tabelau de bord",
"sendingDelete": "Suppression du Serveur", "sendingDelete": "Suppression du Serveur",
"bePatientDelete": "Merci de patienter pendant la suppression du serveur du tableau de bord de Crafty. Cet écran se fermera dans quelques instants.", "bePatientDelete": "Merci de patienter pendant la suppression du serveur du tableau de bord de Crafty. Cet écran se fermera dans quelques instants.",
"bePatientDeleteFiles" : "Merci de patienter pendant la suppression du serveur du tableau de bord de Crafty et des fichiers de la machine hôte. Cet écran se fermera dans quelques instants." "bePatientDeleteFiles" : "Merci de patienter pendant la suppression du serveur du tableau de bord de Crafty et des fichiers de la machine hôte. Cet écran se fermera dans quelques instants.",
"crashTime": "Crash Timeout",
"crashTimeDesc": "Combien de temps attendre avant de considérer que le serveur a crash ?"
}, },
"serverConfigHelp": { "serverConfigHelp": {
"title": "Zone de Configuration du Serveur", "title": "Zone de Configuration du Serveur",
@ -272,14 +337,91 @@
"Sous Linux la meilleure façon de faire est d'exécuter les commandes suivantes :<br />", "Sous Linux la meilleure façon de faire est d'exécuter les commandes suivantes :<br />",
"<code>", "<code>",
" sudo chown crafty:crafty /chemin/de/ton/serveur -R<br />", " sudo chown crafty:crafty /chemin/de/ton/serveur -R<br />",
" sudo chmod 2775 /chemin/de/ton/serveu -R<br />", " sudo chmod 2775 /chemin/de/ton/serveur -R<br />",
"</code>" "</code>"
] ]
}, },
"panelConfig": { "panelConfig": {
"pageTitle": "Panneau de Configuration",
"users": "Utilisateurs",
"roles": "Roles",
"newUser": "Ajouter un Nouvel Utilisateur",
"newRole": "Ajouter un nouveau Rôle",
"user": "Utilisateur",
"enabled": "Activé",
"allowedServers": "Serveurs Authorisés",
"assignedRoles": "Rôles Assignés",
"edit": "Modifier",
"role": "Rôle",
"roleUsers": "Rôles Utilisteurs",
"save": "Enregister", "save": "Enregister",
"cancel": "Annuler", "cancel": "Annuler",
"delete": "Supprimer" "delete": "Supprimer",
"superConfirmTitle": "Activer le superuser ? Es-tu sûr ?",
"superConfirm": "Utiliser seulement si tu veux que cet utilisateur ait accès à ABSOLUMENT TOUT (tous les comptes, tous les serveurs, panneau de configuration, etc). Ils peuvent même supprimer tes droits superuser.",
"adminControls": "Controls de l'Admin",
"clearComms": "Nettoyer les Commandes Non-Exécutées"
},
"userConfig": {
"pageTitle": "Modifier Utilisateur",
"pageTitleNew": "Créer Utilisateur",
"config": "Configuration",
"apiKey": "Clés API",
"userSettings": "Paramètres Utilisateur",
"userName": "Nom d'Utilisateur",
"userNameDesc": "Comment appeler cet Utilisateur ?",
"password": "Mot de Passe",
"repeat": "Confirmation du Mot de Passe",
"leaveBlank": "Pour modifier l'Utilisateur sans changer le MOt de Passe, laisser vide.",
"craftyPermDesc": "Les permisisons de l'Utilisateur pour Crafty ",
"gravEmail": "Email Gravatar™",
"gravDesc": "Cet email est strictement réservé pour être utiliser avec Gravatar™. En aucune circonstances Crafty n'utilisera cet email pour autre chose que trouver ton Gravatar™",
"userLang": "Langue de l'Utilisateur",
"userRoles": "Rôles Utilisateur",
"userRolesDesc": "L'utilisateur est membre de ces rôles.",
"roleName": "Nom du Rôle",
"member": "Membre ?",
"craftyPerms": "Permissions de Crafty : ",
"permName":"Nom de la Permission",
"auth": "Authorisé ? ",
"uses": "Nombre d'utilisation Authorisé (-1 == Illimité)",
"super": "Super Utilisateur",
"enabled": "Activé",
"configArea": "Zone de Configuration de l'Utilisateur",
"configAreaDesc": "Ici tu peux changer tous ltezs paramètres utilisateurs",
"created": "Crée le : ",
"lastLogin": "Dernière Connexion : ",
"lastUpdate": "Dernière Mise à Jour: ",
"lastIP": "Dernière IP: ",
"deleteUserB": "Supprimer l'Utilisateur",
"notExist": "Tu ne peux pas supprimer quelquechose qui n'existe pas !",
"delSuper": "Tu ne peux pas supprimer un Super Utilisateur",
"deleteUser": "Supprimer Utilisateur : ",
"confirmDelete": "Es-tu sûr de vouloir supprimer cet utilisateur ? Cette action est irréversible."
},
"rolesConfig": {
"pageTitle": "Modifier le Rôle",
"pageTitleNew": "Nouveau Rôle",
"config": "Configuration du Rôle",
"roleTitle": "Paramètres du Rôle",
"roleName": "Nom du Rôle : ",
"roleDesc": "Comment appeler ce Rôle ?",
"roleServers": "Serveurs Authorisés",
"serversDesc": "Les serveurs auquels ce rôle a accès",
"serverName": "Nom du Serveur",
"serverAccess": "Accès ?",
"rolePerms": "Permissions du rôle",
"permsServer": "Les Permissions ce rôle possède pour ces serveurs",
"permName": "Nom de la Permission",
"permAccess": "Accès ?",
"roleUsers": "Les utilisateurs du Rôle: ",
"roleUserName": "Nom d'Utilisateur",
"roleConfigArea": "Zone de configurtation du Rôle",
"configDesc": "Ici tu pzux changer la configuration de ton rôle",
"created": "Créé le : ",
"configUpdate": "Dernière Mise à Jour : ",
"delRole": "Supprimer le Rôle",
"doesNotExist": "Tu ne peux pas supprimer quelquechose qui n'existe pas encore"
}, },
"datatables": { "datatables": {
"i18n": { "i18n": {
@ -349,7 +491,24 @@
"doesNotWorkWithoutJavascript": "<strong>Attention: </strong>Crafty ne fonctionne pas correctement si JavaScript n'est pas activé !" "doesNotWorkWithoutJavascript": "<strong>Attention: </strong>Crafty ne fonctionne pas correctement si JavaScript n'est pas activé !"
}, },
"apiKeys": { "apiKeys": {
"pageTitle": "Modifier la clé API de l'Utilisateur",
"config": "Configuration",
"apiKeys": "Clés API",
"name": "Nom",
"created": "Crée",
"perms": "Permissions",
"buttons": "Boutons",
"yes": "Oui",
"no": "Non",
"server": "Serveur: ",
"crafty": "Crafty: ",
"getToken": "Obtenir un Jeton",
"createNew": "Créer un nouveau Jeton d'API",
"nameDesc": "Comment appeler ce Jeton d'API ? ",
"permName": "Nom de la Permission",
"auth":"Authorisé ? ",
"superUser": "Super Utilisateur",
"deleteKeyConfirmation": "Es-tu sûr de vouloir supprimer cette clé API? Tu ne pourras plus revenir en arrière.", "deleteKeyConfirmation": "Es-tu sûr de vouloir supprimer cette clé API? Tu ne pourras plus revenir en arrière.",
"deleteKeyConfirmationTitle": "Supprimer la clé API ${keyId}?" "deleteKeyConfirmationTitle": "Supprimer la clé API ${keyId}?"
} }
} }