DedSec Project

Προτεραιότητα ρυθμίσεων και προέλευση τιμών — DedSec Project

Προτεραιότητα ρυθμίσεων και προέλευση τιμών Μηχανισμός και συμβόλαιο Οι ρυθμίσεις συχνά συνδυάζουν προεπιλογές, αρχείο, περιβάλλον και ορίσματα εντολής. Άτυπη σειρά δυσκολεύει διάγνωση: ο…

Μηχανισμός και συμβόλαιο

Οι ρυθμίσεις συχνά συνδυάζουν προεπιλογές, αρχείο, περιβάλλον και ορίσματα εντολής. Άτυπη σειρά δυσκολεύει διάγνωση: ο διαχειριστής αλλάζει αρχείο αλλά παλιά μεταβλητή περιβάλλοντος υπερισχύει. Όρισε μία σειρά και εμφάνισε την προέλευση κάθε μη μυστικής ενεργής ρύθμισης μαζί με την τιμή.

Η απουσία διαφέρει από κενό, μηδέν και false. Έκφραση αληθοτιμής μπορεί να αντικαταστήσει έγκυρο μηδενικό timeout ή απενεργοποιημένη δυνατότητα. Ανάλυσε κάθε επίπεδο σε τύπους, απόρριψε άγνωστα ονόματα και συγχώνευσε ρητά. Τα μυστικά απαιτούν κρυμμένα διαγνωστικά· ακόμη και μήκος, πρόθεμα ή διαδρομή πηγής μπορεί να αποκαλύπτει πληροφορία. Το δείγμα χρησιμοποιεί μόνο ακέραιες ρυθμίσεις.

Τοπικό παράδειγμα

layers = [("default", {"retries":3, "timeout":10}),
          ("file", {"retries":2}), ("environment", {"timeout":5}),
          ("cli", {"retries":0})]
values, sources = {}, {}
for name, layer in layers:
    for key, value in layer.items():
        if key not in {"retries", "timeout"} or type(value) is not int or value < 0:
            raise ValueError("invalid configuration")
        values[key], sources[key] = value, name
assert values == {"retries":0, "timeout":5}
assert sources["retries"] == "cli"
print(values, sources)

Έλεγχοι αποτυχίας και όρια

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

Πρωτογενής αναφορά

Επίσημη τεκμηρίωση