Wiki

Clone wiki

whmcs-grepp / Sync

grEPP 2 - Συγχρονισμός

Αυτός ο άγνωστος

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

Τι λέει το WHMCS

Όταν πρωτοκυκλοφόρησε το module στις αρχές του 2011, το WHMCS ήθελε ένα ξεχωριστό sync script για κάθε registrar module. Αυτό που περίμενε λοιπόν, ήταν να του πούμε αν το domain έληξε ή όχι, καθώς και αν έχει ολοκληρωθεί επιτυχώς η (εισερχόμενη) μεταφορά ενός domain. Μετά εμφανίστηκε στην έκδοση 5.1 το domainsync.php το οποίο έπρεπε να τρέχει σε δικό του cron job και ανέλαβε να καλεί αυτό όλα τα sync functions όλων των registrar modules. Η ιδιαιτερότητα που είχε αυτός ο νέος τρόπος είναι πως έκανε συγχρονισμό ανά 50άδες, με αποτέλεσμα η συμβουλή μου ήταν να το τρέχετε τόσες φορές τη μέρα, όσες 50άδες domain έχετε. Αυτό δεν ήταν πρόβλημα αν κάποιος είχε 100-200 domains, αλλά στις περιπτώσεις που υπήρχαν μερικές χιλιάδες, τότε υπήρχε πρόβλημα. Πέρασε πολύς καιρός μέχρι τελικά να διαπιστώσω πως μάλλον δεν είχα καταλάβει καλά το σκεπτικό του domainsync.php. Αν διαβάσουμε πιο προσεκτικά τις οδηγίες του WHMCS για τον συγχρονισμό θα δούμε πως:

  • Ανεξάρτητα αν έχει έρθει η σειρά ενός domain, ΠΑΝΤΑ τα Pending και Pending Transfer domains συγχρονίζονται εκτός σειράς στην αμέσως επόμενη εκτέλεση, το οποίο σημαίνει πως και μόνο μία φορά τη μέρα να τρέχει το domainsync.php, τα νέα domains θα συγχρονιστούν.
  • Το domains τα οποία λήγουν σήμερα, θα πάρουν το status Expired ούτως ή άλλως.
  • Τα υπόλοιπα domains μέχρι την ημερομηνία λήξης του ΔΕΝ πρόκειται να αλλάξει το status τους εν αγνοία μας, εκτός και αν μεταφερθούν σε άλλον καταχωρητή (αυτό κρατήστε το). Μόνο ανανέωση μπορεί να γίνει, κατά την οποία το WHMCS θα ενημερώσει τις ημερομηνίες αυτόματα.

Τα παραπάνω σημαίνουν, αν δεν λάβουμε υπόψη τη μεταφορά σε άλλον καταχωρητή, πως αν ένα domain καταχωρηθεί σήμερα, και έρθει η σειρά του (50άδα) να ελεγχθεί του χρόνου, απλά το script θα επιστρέψει πως είναι ακόμα active και δεν θα αλλάξει τίποτα.

Τι λέει το ΙΤΕ

Το ΙΤΕ μαζί με όλες τις ιδιοτροπίες που έχει, μας λέει πως όλες σχεδόν οι κινήσεις που γίνονται σε ένα domain, τουλάχιστον αυτές που μας ενδιαφέρουν εδώ, γίνονται άμεσα. Τι σημαίνει αυτό; Δεν υπάρχει λόγος ένα domain να είναι Pending ή Pending Transfer. Άπαξ και γίνει η καταχώρηση ή η μεταφορά, το domain είναι οριστικά δικό μας. Γιατί το αναφέρουμε αυτό; Γιατί κάποια κομμάτια του συγχρονισμού, λαμβάνουν πλέον χώρα άμεσα, και δεν περιμένουμε να τρέξει ένα script.

Πως γίνεται ο συγχρονισμός

WHMCS

Από την έκδοση 7.6 του WHMCS, δεν χρειάζεται να έχετε πλέον το domainsync.php σε ξεχωριστό cron job. Το βασικό cron.php το καλεί όποτε αυτό κρίνει, και ανάλογα τις ρυθμίσεις πράττει ανάλογα. Οι ρυθμίσεις είναι στο Setup/Automation Settings και μας ενδιαφέρουν προς το παρόν οι ρυθμίσεις στο Domain Sync Settings. Τα δύο τελευταία πεδία που αναφέρουν τη συχνότητα συγχρονισμού, βάλτε τα όσο κρίνετε, αν και με το 0 που είναι η default ρύθμιση δεν θα πρέπει να έχετε πρόβλημα. Το Domain Sync Enabled εννοείται πως πρέπει να είναι ενεργό, διαφορετικά δεν θα γίνει ποτέ συγχρονισμός. Επίσης το module λαμβάνει υπόψη του την επιλογή Domain Sync Notify Only στις custom λειτουργίες που θα περιγραψουμε παρακάτω. Το module λαμβάνει επίσης υπόψη του και τη ρύθμιση Sync Next Due Date, στην οποία ορίζετε πόσες μέρες πριν την λήξη ενός domain θα λήγει ένα τιμολόγιο ανανέωσης.

Εδώ θα πρέπει να αναφέρουμε το εξής οξύμωρο: Ναι μεν σύμφωνα με τις οδηγίες από την έκδοση 7.6 δεν χρειάζεται να υπάρχει το domainsync.php σε ξεχωριστό cron job, αλλά υπάρχει ένα bug και λόγω αυτού το domainsync.php ΔΕΝ τρέχει για να συγχρονίσει καθημερινά τα expired domains και τα transferred away. Το bug αυτό, με αριθμό CORE-12679, έχει διορθωθεί από την έκδοση 7.6.2 και μετά. Στο επίσημο site του WHMCS υπήρχε hotfix, αλλά πλέον δεν είναι διαθέσιμο και θα πρέπει να έχετε υποχρεωτικά νεότερη έκδοση.

Module

  • Όταν καταχωρείται ένα νέο domain, την ίδια στιγμή ενημερώνονται Registration Date, Expiry Date, Next Due Date, Status = Active, ΧΩΡΙΣ να τρέξει συγχρονισμός.
  • Οταν μεταφέρεται σε εσάς ένα domain, την ίδια στιγμή ενημερώνονται Registration Date (bye bye FixReg button), Expiry Date, Next Due Date, Status = Active, ΧΩΡΙΣ να τρέξει συγχρονισμός.
  • Αν δεν έχει πάει κάτι καλά στα παραπάνω, πχ αμέσως μετά την καταχώρηση δεν μπορεί το module να διαβάσει για κάποιον λόγο την ημερομηνία λήξης ή λάθος ΕΡΡ κωδικός κατά τη μεταφορά, τα domains μένουν σε κατάσταση Pending και Pending Transfer αντίστοιχα, ώστε να τα ελέγξει το domainsync.
  • Όταν τρέξει το domainsync, εκτός από αυτούς τους ελέγχους, θα ελέγξει και αν το domain είναι ακόμα δικό μας ή στο μεσοδιάστημα το πήρε άλλος καταχωρητής, και αν δεν είναι δικό μας θα το βάλει σε κατάσταση Transferred Away.
  • Όταν τρέξει το domainsync, θα ελέγξει και τη σπάνια περίπτωση ένα domain να έχει διαγραφεί από το μητρώο, και θα το βάλει σε κατάσταση Cancelled.

Προσοχή: Ο συγχρονισμός του Next Due Date θα γίνει μόνο αν ισχύει είτε Domain Sync Enabled = On και Sync Next Due Date = On και Domain Sync Notify Only = Off, είτε το ForceSync = on.

Domains που πήγαν σε άλλον καταχωρητή

Το ζητάγατε καιρό, και έγινε! Τέρμα τα λάθος τιμολόγια και emails για domains που έχουνε μεταφερθεί αλλού!

  • Το module διαβάζει από τις ρυθμίσεις του WHMCS και υπολογίζει
    • Πότε είναι να δημιουργήσει ένα τιμολόγιο ανανέωσης
    • Πότε είναι να στείλει ειδοποίηση ανανέωσης
    • Πότε είναι στείλει υπενθύμιση πληρωμής
    • Ποιά expired domains είναι σε grace period (ανεξάρτητα της ρύθμισης του WHMCS)
    • Ποιά από τα παραπάνω ΘΑ τα κάνει ΣΗΜΕΡΑ
  • Αυτόματα, και πριν το task δημιουργείας τιμολογίων, τσεκάρει όλα τα domains που ανήκουν την παραπάνω κατηγορία
  • Αν κάποιο από αυτά έχει όντως φύγει
    • Το βάζει σε κατάσταση Transferred Away
    • Ενημερώνει τα admin notes του domain με την ημερομηνία
    • Τυχόν εκδοθέν τιμολόγιο το βάζει σε κατάσταση Cancelled
    • Αν το domain βρίσκεται σε τιμολόγιο με άλλα προϊόντα, κάνει το τιμολόγιο split και ακυρώνει μόνο το τιμολόγιο και το ποσό που αφορά το συγκεκριμένο domain

Φυσικά για την παραπάνω διαδικασία, θα πάρετε ενημερωτικό email αντίστοιχο με το παρακάτω, ενώ στην καρτέλα του domain που μεταφέρθηκε θα εμφανίζεται ως σφάλμα:

Screenshot_54.png

Τέλος

Αν προσέξατε, δεν χρειάζεται να κάνετε απολύτως τίποτα για να δουλέψει ο συγχρονισμός, πέρα από το να τρέχει το default cron.php του WHMCS. Αυτός ήταν και ο σκοπός, να μην χρειάζονται επιπλέον crons, hooks, ρυθμίσεις του module ή άλλες κουραστικές παρεμβάσεις.

Πλοήγηση

Αρχική | Εγκατάσταση | Συγχρονισμός | Domains με ελληνικούς χαρακτήρες | Διαχείριση Επαφών | Επικουρικά addons | Διαγράμματα Ροής Εργασιών | Changelog

Updated