======================================================== লাইসেন্স সিস্টেম ইনস্টল গাইড (বাংলা) ======================================================== এই জিপে ২টি অংশ আছে: 1) license-server/ → এটি আপনার নিজের মূল সার্ভারে (bd-hoster.com) বসবে। এটিই "সব ওয়েবসাইট কোড চলবে কিনা" তা নিয়ন্ত্রণ করে, এবং এর ভেতরেই আপনার জন্য আলাদা অ্যাডমিন প্যানেল (admin.php) আছে। 2) shop-patch/ → এই ফাইলগুলো প্রতিটি কাস্টমার সাইটের Laravel কোডে বসবে (যে কাস্টমার আপনার হোস্টিং থেকে এই শপ কোড কিনবে)। -------------------------------------------------------- ধাপ ১ — লাইসেন্স সার্ভার সেটআপ (আপনার মূল সার্ভারে, একবারই) -------------------------------------------------------- ১. bd-hoster.com এ cPanel থেকে একটি নতুন MySQL ডাটাবেস ও ইউজার বানান। ২. license-server/config.php খুলে DB_NAME, DB_USER, DB_PASS বসান। ৩. ADMIN_USER ও ADMIN_PASS বদলে শক্ত কিছু দিন (এটিই আপনার অ্যাডমিন লগইন)। ৪. পুরো license-server ফোল্ডারটি https://bd-hoster.com/license/ এর ভেতরে আপলোড করুন (public_html এর বাইরে বা .htaccess-প্রোটেক্টেড কোনো সাবডোমেইনে রাখলে আরও ভালো)। ৫. https://bd-hoster.com/license/api.php খুললেই টেবিলগুলো অটো তৈরি হয়ে যাবে (প্রথমবার যেকোনো একটি সাইট কানেক্ট করলেই)। ৬. https://bd-hoster.com/license/admin.php -এ গিয়ে লগইন করুন — এটাই আপনার কন্ট্রোল প্যানেল। এখান থেকেই আপনি: - অনুমোদিত সার্ভার IP যোগ/বাদ/পরিবর্তন করতে পারবেন (IP বদলালে সব সাইট সাথে সাথে আপডেট হবে) - কোন কোন ডোমেইন কানেক্ট হচ্ছে, কয়টা allowed / কয়টা blocked তা দেখতে পারবেন - প্রতিটি ডোমেইনকে ম্যানুয়ালি allow / block / auto করতে পারবেন - সাম্প্রতিক অ্যাক্টিভিটি লগ দেখতে পারবেন -------------------------------------------------------- ধাপ ২ — প্রতিটি কাস্টমার শপে প্যাচ বসানো -------------------------------------------------------- shop-patch ফোল্ডারের ভেতরের ফাইলগুলো শপের একই পাথে কপি করুন (merge/overwrite): app/Support/Runtime.php → নতুন ফাইল app/Http/Middleware/LicenseGuard.php → নতুন ফাইল resources/views/errors/license.blade.php → নতুন ফাইল তারপর app/Http/Kernel.php এর $middleware অ্যারের ভেতরে এই লাইনটি যোগ করুন (অন্য সব গ্লোবাল মিডলওয়্যারের সাথে, একদম উপরে বা নিচে, ক্রম গুরুত্বপূর্ণ না): \App\Http\Middleware\LicenseGuard::class, ব্যাস — এখন থেকে এই শপ কোড শুধু আপনার দেওয়া অনুমোদিত সার্ভার IP-তে চললে স্বাভাবিকভাবে কাজ করবে। অন্য কোনো হোস্টিং-এ আপলোড করলে ইউজার সাইট খুললেই "এই সাইটটি আপনার ওয়েবসাইটের জন্য উপলব্ধ নয়" পেইজ দেখবে। -------------------------------------------------------- কিভাবে কাজ করে (সংক্ষেপে) -------------------------------------------------------- - প্রতিটি রিকোয়েস্টে LicenseGuard মিডলওয়্যার শপের ডোমেইন ও সার্ভার IP HMAC-sha256 সিক্রেট দিয়ে সাইন করে license-server/api.php তে পাঠায়। - api.php শুধু signature মিলিয়ে, allowed_ips লিস্টের সাথে মিলিয়ে জবাব দেয়, জবাবও সাইন করা থাকে (কেউ জবাব জাল বানাতে পারবে না)। - শপের দিকে ফলাফল সংক্ষিপ্ত সময়ের জন্য ক্যাশে হয়, তাই প্রতি রিকোয়েস্টে বাড়তি লোড পড়ে না এবং সাইট স্লো হয় না। - সিক্রেট কী ছাড়া কেউ নিজের জবাব বানিয়ে চেক পাস করাতে পারবে না; সোর্স কোড থেকে Runtime.php মুছে ফেললেও মিডলওয়্যার না থাকলে পুরো অ্যাপ লোড হবে না (কারণ এটা গ্লোবাল মিডলওয়্যার)। এটি কোনো প্রফেশনাল DRM সিস্টেমের মতো ১০০% আনব্রেকেবল না (সোর্স কোড যার হাতে আছে, সে থিওরিতে মিডলওয়্যার লাইনটা কেটে ফেলতে পারে) — কিন্তু সাধারণ কাস্টমার এটা ব্রেক করতে পারবে না, কোড অবফাসকেট/এনকোডেড না থাকায় ভবিষ্যতে আপনি নিজেই সহজে মেইনটেইন করতে পারবেন।