ഒരു WordPress പ്ലഗിൻ ലൈസൻസിംഗ് സിസ്റ്റം എങ്ങനെ നിർമ്മിക്കാം
ഒരു കൊമേഴ്സ്യൽ WordPress പ്ലഗിൻ വിൽക്കുന്നതിന് ഒരു ലൈസൻസിംഗ് സിസ്റ്റം ആവശ്യമാണ്.
ഉപഭോക്താക്കളുടെ സൈറ്റുകളിൽ കീകൾ (keys) ആക്ടിവേറ്റ് ചെയ്യേണ്ടതുണ്ട്. കീകൾ പ്രത്യേക ഡൊമെയ്നുകളുമായി ബന്ധിപ്പിക്കേണ്ടതുണ്ട്. ഒരു കീ പല സൈറ്റുകളിൽ ഉപയോഗിക്കുന്നത് തടയേണ്ടതുമുണ്ട്.
മിക്കവരും Freemius അല്ലെങ്കിൽ EDD ആണ് ഉപയോഗിക്കുന്നത്. ഈ ടൂളുകൾ നന്നായി പ്രവർത്തിക്കുന്നുണ്ടെങ്കിലും, അവ വരുമാനത്തിൽ നിന്ന് ഒരു വിഹിതം (revenue share) ഈടാക്കുന്നു. അവ തേർഡ് പാർട്ടി ഡിപെൻഡൻസികളാണ് (third-party dependencies). ഈ പ്രക്രിയയുടെ പൂർണ്ണ നിയന്ത്രണം നിങ്ങളുടെ കൈവശമുണ്ടാകില്ല.
ഞങ്ങൾ RideCab WP-ക്കായി ഞങ്ങളുടേതായ ഒരു സിസ്റ്റം നിർമ്മിച്ചു. ഒരു കസ്റ്റം സിസ്റ്റം എങ്ങനെ പൂജ്യത്തിൽ നിന്ന് (from scratch) നിർമ്മിക്കാം എന്ന് താഴെ നൽകുന്നു.
ഈ സിസ്റ്റത്തിന് രണ്ട് ഭാഗങ്ങളുണ്ട്.
ലൈസൻസ് സെർവർ (The License Server) ഇത് നിങ്ങളുടെ സ്വന്തം ഇൻഫ്രാസ്ട്രക്ചറിൽ പ്രവർത്തിക്കുന്നു. നിങ്ങളുടെ മാർക്കറ്റിംഗ് സൈറ്റിൽ ഒരു WordPress must-use പ്ലഗിൻ ഉപയോഗിക്കുക. ഇത് ഡാറ്റാബേസിൽ കീകൾ സംഭരിക്കുന്നു. ആക്ടിവേഷനും വാലിഡേഷനും (validation) ഇതിനായി ഒരു REST API ഉപയോഗിക്കുന്നു. കീകൾ നിയന്ത്രിക്കുന്നതിനായി ഒരു ഡാഷ്ബോർഡും ഇത് നൽകുന്നു.
ക്ലയന്റ് (The Client) ഇത് നിങ്ങളുടെ കൊമേഴ്സ്യൽ പ്ലഗിനുള്ളിലെ ഒരു PHP ക്ലാസ് ആണ്. ഇത് ഒരു സെറ്റിംഗ്സ് പേജ് ചേർക്കുന്നു. ആക്ടിവേഷനായി ഇത് നിങ്ങളുടെ സെർവറുമായി ബന്ധപ്പെടുന്നു. വാലിഡേഷൻ ഫലങ്ങൾ ഇത് കാഷെ (cache) ചെയ്യുന്നു. പശ്ചാത്തലത്തിൽ (background) ഇത് വീണ്ടും വാലിഡേറ്റ് ചെയ്യുന്നു.
പ്രധാന ആവശ്യകതകൾ:
- പർച്ചേസ് സമയത്ത് യുണീക് കീകൾ നിർമ്മിക്കുക.
- ഉപഭോക്താക്കൾക്ക് കീകൾ ആക്ടിവേറ്റ് ചെയ്യാൻ അനുവദിക്കുക.
- കീകളെ പ്രത്യേക ഡൊമെയ്നുകളുമായി ബന്ധിപ്പിക്കുക.
- കൃത്യമായ ഇടവേളകളിൽ കീകൾ വാലിഡേറ്റ് ചെയ്യുക.
- ഉപഭോക്താക്കൾ സൈറ്റുകൾ മാറ്റുമ്പോൾ ഡീആക്ടിവേഷനുകൾ കൈകാര്യം ചെയ്യുക.
- സെർവർ പ്രവർത്തനരഹിതമായാൽ പ്രശ്നങ്ങളില്ലാതെ (gracefully) കൈകാര്യം ചെയ്യുക.
ഏറ്റവും പ്രധാനപ്പെട്ട നിയമം 'fail open' രീതി പിന്തുടരുക എന്നതാണ്.
നിങ്ങളുടെ ലൈസൻസ് സെർവർ പ്രവർത്തനരഹിതമായാൽ, ഉപഭോക്താവിനെ ബ്ലോക്ക് ചെയ്യരുത്. നിങ്ങൾ 'fail closed' രീതിയാണ് സ്വീകരിക്കുന്നതെങ്കിൽ, ഉപഭോക്താവിന്റെ സൈറ്റ് തകരാറിലായതായി കാണിക്കും. ഇത് നിങ്ങളുടെ സൽപ്പേരിനെ ബാധിക്കും. എന്നാൽ 'fail open' രീതിയാണെങ്കിൽ, പ്ലഗിൻ പ്രവർത്തിച്ചുകൊണ്ടേയിരിക്കും. ചില പൈറേറ്റ്സ് ഇത് സൗജന്യമായി ഉപയോഗിച്ചേക്കാം, പക്ഷേ പണം നൽകി വാങ്ങുന്ന ഉപഭോക്താക്കൾ സംതൃപ്തരായിരിക്കും.
മികച്ച രീതികൾ (Best Practices):
- എല്ലാ API കോളുകൾക്കും HTTPS ഉപയോഗിക്കുക.
- പെർഫോമൻസ് മെച്ചപ്പെടുത്താൻ വാലിഡേഷൻ ഫലങ്ങൾ കാഷെ ചെയ്യുക.
- സുരക്ഷിതമായ കീകൾക്കായി
random_bytes()ഉപയോഗിക്കുക.rand()ഉപയോഗിക്കരുത്. - കീകൾ സ്വയം ഡീആക്ടിവേറ്റ് ചെയ്യാൻ ഉപഭോക്താക്കൾക്ക് സൗകര്യമൊരുക്കുക.
- സ്റ്റേജിംഗ് (staging) അല്ലെങ്കിൽ ഡെവ് (dev) ഡൊമെയ്നുകൾ അനുവദിക്കുക.
ഈ സെറ്റപ്പ് ലൈസൻസിംഗിന്റെ അടിസ്ഥാന കാര്യങ്ങൾ കൈകാര്യം ചെയ്യുന്നു. ഇതിൽ അപ്ഡേറ്റുകൾ നൽകുന്നതിനെക്കുറിച്ചുള്ള വിവരങ്ങൾ ഉൾപ്പെടുത്തിയിട്ടില്ല. അടുത്ത പോസ്റ്റിൽ ഞാൻ അത് വിശദീകരിക്കും.