র‍্যাম থেকে nginx এর কনফিগ ডাম্প করা

ঘটনা বেশি দিন আগের না… গত সপ্তায় nginx এর কনফিগ এডিট করতে গিয়া sed -nEi '<regex>' /etc/nginx/sites-enabled/* মাইরা বসছিলাম… আর যা হওয়ার তাই হইল… পুরা কনফিগ উধাও… এখন ext4magic দিয়া যে রিকভার করা যাবে তাও কনফার্ম না 🙃️ কী করা যায়? দ্বারস্থ হইলাম গুরু স্তুপাধিক্যের ভাই সেবকভঙ্গের1। উনার আরেক মুরিদের কাছ থেকে জানা গেল যে nginx এর মেমোরি ডাম্প করলে ওইখানে বাইনারি ডাটার সাথে কনফিগও খিচুড়ি পাকায় থাকে… করলাম গদব(gdb) দিয়া র‍্যাম ডাম্প… strings mem_* দিয়া দেখি কনফিগ ফাইলের টেক্সট আছে… সাথে ফাংশন নেম(elf symbols) ও ডাম্প করতেছে… এইবার সাহায্যে আসলেন আরেক মুরিদ… উনি আবার আওকে(awk) ওস্তাদ… উনি যেই স্ক্রিপ্টটা দিলেন ওইটা রান করার পরে মোটামুটি সুন্দর একটা কনফিগ ডাম্প পাইলাম… বাট সব কনফিগ এক ফাইলে… পরে সব পার্ট আলাদা ফাইলে সেভ করার পরে কাজ হইল… ...

আগস্ট 26, 2023 · 2 min · Mubashshir

NIC.EU.ORG ডোমেইন রেজিস্ট্রেশন

পার্সোনাল/ননকমার্শিয়াল অর্গানাইজেশন এর ডোমেইন এর জন্য EU.ORG অনেক ভালো একটা সাইট। এইটার রিভিউ পড়তে চাইলে সার্চ করে বের করতে পার, রিভিউ দিয়ে আমি টাইম নষ্ট করতেছি না :3 EU.ORG এ রেজিস্ট্রেশন করতে তোমার প্রাইমারি/সেকেন্ডারি নেমসার্ভার লাগবে, হয় তুমি নিজে বাইন্ড/অন্য কোন নেমসার্ভার হোস্ট করতে পারো বা গ্রানাইটক্যানিয়ন(EU.ORG রিকমেন্ডেড)/ক্লাউডিএনএস এ তোমার ডিএনএস জোন ক্রিয়েট করতে পার। প্রথমে এইখানে রেজিস্টার করতে হবে। ডিপেন্ডেন্সি BIND - https://bind9.readthedocs.io/ uacme - https://github.com/ndilieto/uacme নেমসার্ভার সেটআপ ডোমেইন এর জন্য জোন ফাইল বানানো ; Replace domain and A/AAAA address with actual domain/address ; /etc/bind/zones/domain.eu.org $TTL 3h; @ IN SOA ns.domain.eu.org. domain.eu.org. ( 1 ; serial 3h; refresh timeout 1h; retry timeout 1w; expire timeout 1h; negative caching TTL ) @ IN NS ns.domain.eu.org. ; name server @ IN MX 10 domain.eu.org. ; mail exchange server ns IN A 1.2.3.4 @ IN A 1.2.3.4 ns IN AAAA ff::1 @ IN AAAA ff::1 www IN CNAME domain.eu.org. ...

এপ্রিল 3, 2022 · 2 min · Mubashshir

ডেপ্লয় হিউগো - গিটহাব-পেজ

গৌরচন্দ্রিকা গিটহাব-পেজ এর সাথে হিউগো ইউজ করলে সাধারণত একটা ওয়ার্কফ্লো দিয়ে প্রথমে জেনারেট করা সাইটটা gh-pages ব্রাঞ্চে পুশ করে, এরপরে গিটহাব gh-pages ব্রাঞ্চ থেকে সাইটে ডেপ্লয় করে। হয়তো খেয়াল করেছ যে গিটহাব এখন একটা অটোজেনারেটেড অ্যাকশন দিয়ে gh-pages ব্রাঞ্চ ডেপ্লয় করে। কৌতূহলবশত অ্যাকশনটা কিভাবে কাজ করে তা বের করতে গিয়ে আমি যে ওয়ার্কফ্লোটা লিখি সেটা দিয়ে আমি এখন আমার ব্লগ ডেপ্লয় করেছি, নিচের ডায়াগ্রামটাতে আগের ওয়ার্কফ্লোর সাথে বর্তমান ওয়ার্কফ্লোর তুলনা দেখতে পারবে। digraph "Deploying to gh-pages with hugo" { background = "transparent"; subgraph "Traditional" { lebel = "Traditional"; subgraph "action:build" { lebel = "action:build"; "on:push(main)" -> "step:checkout(main)" [color="blue"]; "step:checkout(main)" -> "step:build(hugo)" [color="blue"]; "step:build(hugo)" -> "step:push(gh-pages)" [color="blue"]; "step:push(gh-pages)" -> "step:cleanup" [color="blue"]; } subgraph "action:deploy" { lebel = "action:deploy"; "step:push(gh-pages)" -> "on:push(gh-pages)" [color="blue"]; "on:push(gh-pages)" -> "step:checkout(gh-pages)" [color="blue"]; "step:checkout(gh-pages)" -> "step:compress(artifact)" [color="blue"]; "step:compress(artifact)" -> "step:upload(artifact)" [color="blue"]; "step:upload(artifact)" -> "step:deploy" [color="blue"]; "step:deploy" -> "step:cleanup(deploy)" [color="blue"]; } } subgraph "Single Action" { lebel = "action:build and deploy"; subgraph "job:build" { lebel = "job:build"; "on:push(main)" -> "step:checkout(main)" [color="palegreen3"]; "step:checkout(main)" -> "step:build(hugo)" [color="palegreen3"]; "step:build(hugo)" -> "step:compress(artifact)" [color="palegreen3"]; "step:compress(artifact)" ->"step:upload(artifact)" [color="palegreen3"]; "step:upload(artifact)" -> "step:cleanup" [color="palegreen3"]; } subgraph "job:deploy" { lebel = "job:deploy"; "step:upload(artifact)" -> "on:success(job:build)" [color="palegreen3"]; "on:success(job:build)" -> "step:deploy" [color="palegreen3"]; "step:deploy" -> "step:cleanup(deploy)" [color="palegreen3"]; } } start -> "on:push(main)"; "step:cleanup(deploy)" -> end; start [shape=diamond]; end [shape=diamond]; } হিউগো থেকে গিটহাব-পেজে ডেপ্লয় নীল: gh-pages ব্রাঞ্চে পুশ করে ডেপ্লয় সবুজ: সরাসরি master/main ব্রাঞ্চ থেকে ডেপ্লয় ...

ফেব্রুয়ারী 7, 2022 · 4 min · Mubashshir

এমএফএস এর বাঁশের আড়ত

বিকাশ বলিল, “আসুন স্যার, আমাদের আছে সবচাইতে লম্বা বাঁশ, আমরাই পারি সেরা রেটে আপনার পশ্চাৎ মারিতে”। “থামো”, বলিল নগদ, “১৮ টাকায় পো₹ মারিয়া দেশের ক্ষতি করিতেছ তোমরা” সুমধুর সুরে ডাকিয়া কহিল “স্যার, আমরাই মারিব আপনার পশ্চাৎ, ১১ টাকা ৪৯ পয়সায়”। এমএফএস এর বাঁশের আরতে বসিয়া ভাবিলাম কোনখানা নিবো, প্রশ্ন করিলাম “আপনাদের দুই কোম্পানি ছাড়া আরও কোন কোম্পানির বাঁশ পাওয়ার উপায় আছে?"। দূর থেকে কে যেন হাকিলো ...

জানুয়ারী 19, 2022 · 1 min · Mubashshir

বিশেষ বিজ্ঞপ্তি :P

@fahimscirex এর ব্লগের পেপারমড থিমটা ভাল্লাগছে… এইজন্য ভাবতেছি আগামী বছরে জেকিল থেকে হিউগোতে সুইচ করব। যারা যারা ফিডে সাবস্ক্রাইব করছেন, পারমালিঙ্ক ফরম্যাট সেট করতে না পারলে সম্ভবত আবার আপনাদের সাবস্ক্রাইব করতে হবে। কেউ প্লিজ ক্ষেইপা যাইয়েন না :P Estimated date: after 2021/12/20, before 2021/12/25 Estimated date: after 2022/01/08, before 2022/01/15 Update: মাইগ্রেট করা শেষ [২০২২-০১-১১ তারিখে]

ডিসেম্বর 14, 2021 · 1 min · Mubashshir

নিক্স র‍্যান্ট

এই র‍্যান্ট টা আসলে আমার না 😼 ২০২১-০৯-২৩ তারিখে @lazerl0rd টেলিগ্রামে এই র‍্যান্টটা পাবলিশ করেছিলেন 🙃। আর কথা না বাড়িয়ে র‍্যান্টে চলে যাই। নিক্সের বিশেষত্ব আসলে কোথায়? আমি ক’দিন আগে হ্যাকারনিউজে একটা আর্টিকেল পড়লাম1 যেখানে একজন নিক্সের “বিজ্ঞাপন” দিচ্ছিল, কিন্তু নিক্সের একমাত্র উল্লেখযোগ্য সুবিধা হল এক লাইব্রেরির একাধিক ভার্সন ইন্সটল করা যায় (প্রত্যেকে আলাদা ডিরেক্টরিতে), কিন্তু এই বৈশিষ্ট্য FHS2 এর বিরোধী (নিক্সের অন্যান্য অনেক বৈশিষ্ট্যের মধ্যে)। এই বৈশিষ্ট্য ছাড়া অন্যান্য বিষয়ে আমি এই কমেন্ট3 ও পরবর্তী কমেন্টগুলোর সাথে মোটামুটি একমত। বেশিরভাগ নিক্সিয়ান কী কারণে যে “declarative, reproducible builds” ধারণার সাথে জোঁকের মত আটকে আছে তা আমি নিশ্চিত নই। আমি তা নিক্স ছাড়া ডিস্ট্রিবিউশনে আর আমার “পরিবর্তিত” কনফিগারেশন ফাইল সহ প্যাকেজ করতে না পারার কোন কারণ দেখি না (যদিও নিক্সের জন্য নতুন করে বানানো লাগবে, হাওয়া থেকে তো আর আসবে না) যতক্ষণ আমি আমার “পুরনো” প্যাকেজ ভার্সন চুলচেরা ভাবে তুলনা করি (এবং তা, আসলেও ঐ প্যাকেজ ম্যানেজারে সাপোর্ট করে)। আমি বলতে চাচ্ছি, তুমি বলতে পার যে নিক্সে কনফিগ ফাইল ম্যানেজের সুবিধা শুরু থেকেই আছে, কিন্তু আমি চেষ্টা করলে হয়ত কয়েক মুহূর্তেই ব্যাশ দিয়ে আর্চ লিনাক্সে ব্যবহারের একটা স্ক্রিপ্ট বানিয়ে ফেলতে পারব (যা ব্যাকআপের সাথে বর্তমান কনফিগ ফাইলের তুলনা করবে যেমনটা pacman করে pacsave ও pacsave এর জন্য, তবে নিজস্ব বৈশিষ্ট্য আনবো)। সত্যিকার অর্থে নিক্সের এ কাজের জন্য নিজস্ব কোন “ভাষা” ব্যবহারের দরকার ছিল না; বলতে গেলে এটা শুধু “বাহবা” নেয়ার জন্য, আর কোন কারণ ছাড়াই নতুনদের দূরে রাখে। পুনশ্চ: একই সফটওয়ার ও লাইব্রেরির একাধিক ভার্সন ইন্সটল করার বিষয়ে বলতে চাই যে, আমি সিস্টেমে একটা নির্দিষ্ট স্ট্যান্ডার্ড ভার্সনের সাথে অন্যান্য ভার্সন রাখার ঘোরতর বিরোধী। যদি তোমার পুরো আলাদা ডিপেন্ডেন্সির সেট লাগে যা হয়ত পুরোপুরি আলাদা ইউজারল্যান্ডে চলবে, তাহলে আলাদা ইউজারল্যান্ড(কন্টেইনার) ব্যবহার করো। তোমার প্রয়োজনের অতিরিক্ত প্যাকেজ ইন্সটল করে সিস্টেমকে দূষিত করা উচিত হবে না, নইলে তুমি এভাবে শুধু ফ্ল্যাটপ্যাক/স্ন্যাপ যা করে তা করছ… শুধু তুলনামূলক ভাবে লিনাক্সের মত করে। এভাবে তেমন একটা জায়গা বাঁচবে না, কারণ তুমি একসাথে দুটো পাবে না। আপডেটও বাদ দেয়া যাবে না, আমার কথা বোঝার পরও যদি তুমি কাজটা করবে ঠিক করে ফেল, তাহলে সিকিউরিটি আপডেট পিন(অন্তত নোটিফিকেশন রাখ) করা বাদ দিও না (চেঞ্জলগ অবশ্যই এমন একটা জায়গা যা নতুন প্যাকেজ ম্যানেজারে অবশ্যই উন্নত করতে হবে, নতুন ফিচারের জঙ্গল না)। দিনশেষে, অভিজ্ঞ সিসঅ্যাডমিনের পক্ষেও সব CVE এর দিকে নজর রাখা সম্ভব নয় আর ডিপেন্ডেন্সি আপডেট না করা মানে সিস্টেমকে ঝুঁকিপূর্ণ অবস্থায় রাখা। একারণে অনেকেই স্যান্ডবক্স করা কন্টেইনার ব্যবহার করতে বলে থাকে, কারণ বেয়ারমেটাল সিস্টেমকে রক্ষা করা বিশেষ ভাবে প্রয়োজনীয়। এর জন্য যা লাগবে তা শুধুমাত্র অতিরিক্ত একটা ভার্সন নাম্বার যা বুঝাবে যে এ আপডেট ফিক্স না আপস্ট্রিম আপডেট, আর্চ যার জন্য pkgrel ব্যবহার করে। সব শেষে, তুমি যদি কমিট হ্যাশ দিয়ে প্যাকেজ ভার্সন ফ্রিজ করতে চাও - তাহলে আপস্ট্রিম কমিট হ্যাশ দিয়ে ফ্রিজ কর, nixpkg এর কমিট হ্যাশ দিয়ে না। নিক্স যেভাবে কাজটা করছে তা বোকার মতোই লাগে। ...

সেপ্টেম্বর 26, 2021 · 3 min · Mubashshir