Bug #481

Το UI βρίσκει με λάθος τρόπο το εικονίδιο κάθε μηχανής

Added by Vangelis Koukis almost 13 years ago. Updated about 11 years ago.

Status:Closed Start date:05/10/2011
Priority:Medium Due date:
Assignee:Mike Muzurakis % Done:

0%

Category:old_synnefo Spent time: -
Target version:v0.4

Description

Ψάχνοντας περισσότερα για το bug #477, βρήκα αυτό στο ui/templates/machines.html:

// return value from metadata key "OS", if it exists
function os_icon(metadata) {
if (!metadata) {
return 'unknown';
}
if (metadata.values.OS  undefined || metadata.values.OS  '') {
return 'unknown';
} else {
if (UrlExists("static/machines/" + metadata.values.OS + '-on.png')) {
return metadata.values.OS;
} else {
return 'unknown';
}
}
}
//helper function to check file existance
function UrlExists(url) {
var http = new XMLHttpRequest();
http.open('HEAD', url, false);
http.send();
return http.status!=404;
}

Τι είναι αυτό;
Σε σχετικές συζητήσεις είχε συμφωνηθεί η αντιστοίχιση ανάμεσα σε τιμή του metadata key "OS" [π.χ. redhat] και του εικονιδίου που χρησιμοποιείται [π.χ. redhat-on.png] να γίνεται από το UI, μέσω ενός dictionary ή άλλης στατικής δομής.
Ο παραπάνω κώδικας πρέπει να φύγει, διότι (α) επιβαρύνει με έξτρα κλήσεις στον server, μία για κάθε εικονίδιο (!), αυτό δεν είναι scalable και (β) είναι μια χαρά πηγή για μελλοντικά προβλήματα ασφάλειας, αφού χρησιμοποιεί δεδομένα που περνάει ο [κακόβουλος] χρήστης (αργότερα μπορεί να υπάρχουν και shared images, για τα οποία θέτουν άλλοι χρήστες τα metadata), για να αποφασίσει ποιο URI θα ζητήσει.

Ο κώδικας θα αλλάξει ώστε η αντιστοιχία να είναι ΣΤΑΤΙΚΗ, και το UI να ζητάει πράγματα που είναι ελεγμένα ασφαλή. Αν το metadata key είναι ένα από συγκεκριμένα keys, το UI με τη μία θα ξέρει ποιο αρχείο να ζητήσει, αλλιώς ζητάει το εικονίδιο "unknown", που περιέχει ένα ερωτηματικό ή ο,τιδήποτε άλλο:

icon = { 'redhat': ('redhat-on.png', 'redhat-off'.png), 'debian': ('debian-on.png', 'debian-off.png'), ... }

Δεν αποκλείεται αυτός ο κώδικας να είναι ο λόγος για το #477.
Όπως και να έχει, θα φύγει.


Related issues

related to Synnefo - Feature #257: Χειρισμός "OS" metadata key για εμφάνιση σωστού εικονιδίου Closed 03/08/2011 04/08/2011
related to Synnefo - Bug #477: Σε Opera δεν εμφανίζονται τα εικονίδια των μηχανών Closed 05/10/2011

Associated revisions

Revision 2b11be38
Added by Mike Muzurakis almost 13 years ago

use an array to check for vm icon, Refs #481

History

#1 Updated by Mike Muzurakis almost 13 years ago

  • Status changed from Assigned to Feedback
  • Assignee changed from Dimitris Moraitis to Mike Muzurakis

Στο 2b11be38 έκανα κάτι παραπλήσιο:

Για να μη χρειάζεται κάθε φορά που προσθέτουμε ένα νέο image να ανανεώνουμε και κάποιο array ή dict, το array κατασκευάζεται την 1η φορά όπου ούτως ή άλλως ζητάμε όλα τα images. Για κάθε image, προστίθεται το OS value που έχει στα metadata του κι έτσι κατασκευάζεται το array με τα OS keys.

Αυτή η προσέγγιση διορθώνει το παραπάνω λάθος στην υλοποίηση, χωρίς να απαιτείται η ύπαρξη και ανανέωση ενός στατικού dict κάθε φορά, ενώ οι τιμές που παίρνει είναι ασφαλείς αφού προέρχονται από τα metadata των images και όχι των VMs. Είναι οκ αυτή η λύση ή υπάρχει και κάποια άλλη αιτία που μου διαφεύγει που απαιτεί στατικό dict οπότε να το υλοποιήσω όπως περιγράφεται παραπάνω?

Χμμμ, τώρα πρόσεξα το "αργότερα μπορεί να υπάρχουν και shared images, για τα οποία θέτουν άλλοι χρήστες τα metadata". Αλλά και σε αυτήν την περίπτωση υποθέτω πως πρέπει ήδη σε client ή/και server side να μην έχει επιτραπεί η εισαγωγή malicious code ως metadata value. Το αν θα μπαίνει στο array για να κάνει display την εικόνα δεν έχει ιδιαίτερη σημασία, αφού το metadata OS του image γίνεται display και σε άλλα σημεία.

Σε κάθε περίπτωση αν μου διαφεύγει κάτι μπορούμε να το υλοποιήσουμε με static dict, αν και θα σημαίνει ένα επιπλέον σημείο ανανέωσης κάθε φορά που προστίθεται image με νέο OS.

#2 Updated by Christos Psaltis almost 13 years ago

  • Target version set to v0.4

#3 Updated by Vangelis Koukis almost 13 years ago

  • Status changed from Feedback to Closed

ΟΚ, αφού αυτή τη στιγμή έχουμε στατικά images, αυτό δεν είναι πρόβλημα. Πρέπει να φανεί στην τεκμηρίωση το πώς λειτουργούν τα εικονίδια, ώστε όποιος το αναλάβει αργότερα, όταν θα υπάρχουν custom images, να το ξέρει.

Επίσης, ήταν σωστή η αρχική εκτίμηση ότι αυτό το bug ήταν η αιτία και για το #477, τώρα παίζει.

Το κλείνω.

#4 Updated by Vangelis Koukis about 11 years ago

  • Category set to old_synnefo

Also available in: Atom PDF