فیلتر ابلهانه

می‌دونستید نشانی:
http://ftp.debian.org/debian/pool/main/f/freexl/libfreexl1_1.0.2-2_amd64.deb
هم فیلتره؟
فقط به خاطر بسته freexl

در مورد FreeXL:
FreeXL is an open source library to extract valid data from within an Excel (.xls) spreadsheet.

راه‌اندازی کلاینت Perl به همراه mariadba 10.1 در Debian 9

به نظر می‌رسه نصب client mysql/mariadb برای perl (DBD::mysql) در نسخه ۹ یا stretch دبیان (شاید نسخه‌های دیگه و توزیع‌های دیگه هم) مشکل دارد. نصب بسته libdbd-mysql-perl با استفاده از apt کار نمی‌کنه و وقتی ماژول mysql می‌خواد لود بشه پیام می‌ده که نمی‌تونه mariadbclient.so.18 را نمی‌تونه پیدا کنه.

برای بررسی بیشتر:

perl -I./ DefinePatch.pl
Can't load '/usr/lib/x86_64-linux-gnu/perl5/5.24/auto/DBD/mysql/mysql.so' for module DBD::mysql: libmariadbclient.so.18: cannot open shared object file: No such file or directo
ry at /usr/lib/x86_64-linux-gnu/perl/5.24/DynaLoader.pm line 187. 
 at DefinePatch.pm line 3. 
Compilation failed in require at DefinePatch.pm line 3. 
BEGIN failed--compilation aborted at DefinePatch.pm line 3. 
Compilation failed in require at ./DefinePatch.pl line 4. 
BEGIN failed--compilation aborted at ./DefinePatch.pl line 4.

نصب هیچ پکیجی قرار نیست این مشکل را حل کنه. راهکار اینه که کلاینت mysql پرل را از سورس نصب کنید. برای نصبش اول فایلش را دانلود کنید: http://search.cpan.org/~michielb/DBD-mysql-4.042/lib/DBD/mysql.pm

در ضمن مطمئن بشید بسته libmariadbclient-dev (برای استفاده از mysql_config) و build-essential (برای استفاده از make) روی سیستم نصبه. فایل فشرده را باز کنید و برید داخلش.

بعد دستورات زیر را اجرا کنید:

perl Makefile.PL
make
make test

sudo make install

 

مشکل حل شده است! و می‌تونید از mariadb توی perl استفاده کنید.

کد تست:

#!/usr/bin/perl
use DBI;
use DBD::mysql;

 

نکته: در صورتی که کاربر فعلی دسترسی به دیتابیس test در mariadb نداره، می‌تونید با پارامترهای در دستور زیر perl Makefile.PL یه دیتابیس و یوزر پسورد برای تست کردن در زمان build یا تست مشخص کنید:

  • testdb نام دیتابیس تست
  • testuser نام کاربر برای اتصال به mariadb
  • testpassowrd رمز کاربر برای اتصال به mariadb
  • پارامترهای testhost و testport هم برای مشخص کردن سرور mariadba

نکته: در جدیدترین بروزرسانی perl در دبیان در فایل

/etc/perl/sitecustomize.pl

یه تنظیم اضافه شده است که امکان import کردن module از فولدر فعلی وجود نداشته باشد. برای رفع مشکل اسکریپ‌های مشکل‌دار می‌شه این تنظیم را غیرفعال کرد. توجه داشته باشید این تغییر به دلایل امنیتی انجام شده است پس تا مجبور نشدین تغییر ندین:

# This script is only provided as a transition mechanism for
# removing the current working directory from the library search path
# while leaving a temporary way to override this locally.
#
# If you really need "." to be on @INC globally, you can comment
# this away for now. However, please note that this facility
# is expected to be removed after the Debian stretch release,
# at which point any code in this file will not have any effect.
#
# Please see CVE-2016-1238 for background information on the risks
# of having "." on @INC.

#pop @INC if $INC[-1] eq '.' and !$ENV{PERL_USE_UNSAFE_INC};

استفاده از پارامتر I جلوی perl در خط فرمان هم می‌تونه این مشکل را موقت حل کنه.

 

راه‌اندازی extensionهای gnome در کروم!

اولین قدم اینه که اکستنشن مربوطه را از chrome store نصب کنید!
نشونیش اینه: GNOME Shell integration در Chrome Store
بعد که این را نصب کردید هنوز کار نمی‌کنه. اگه بتونید بسته chrome-gnome-extension را نصب کنید (برای دبیان در sid) مشکل حله و با یه reset محیط gnome می‌تونید از extensions.gnome.org لذت ببرید. مگرنه لازمه که سورسش را از مخزن گیتش به نشانی git://git.gnome.org/chrome-gnome-shell بگیرید و کامپایل کنید. برای اینکار دستورات زیر را استفاده کنید:

git clone git://git.gnome.org/chrome-gnome-shell

بعد برین داخل فولدر chrome-gnome-shell و یه فولدر build بسازید.
برین داخلش و این دستور را بنویسید تا تنظیمات محیط کامپایل آماده بشه:

cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_EXTENSION=OFF ../

فراموش نکنید بسته jq که یه json parser است را هم نیاز دارید. توی debian با دستور apt install jq دو سوته نصب می‌شه.
بعد که کانفیگ انجام شد، باید کامپایل و نصبش کنید:

sudo make install

همه کارها را براتون انجام می‌ده.
با alt-F2 و بعد r محیط گنوم‌شل را ریست کنید و از extensions.gnome.org در chrome لذت ببرید! اگه به اشکالی هم برخورد کردین از نشانی https://wiki.gnome.org/Projects/GnomeShellIntegrationForChrome/Installation می‌تونید ببینید مشکل کجاست و اون را حل کنید.

شناخته نشدن USB Deviceها در VirtualBox

بعد از نصب یکی از آپدیت‌های VirtualBox به مشکلی برخوردم که مدت‌ها درگیرش بودم تا اخیرا وقت گذاشتم و ریشه مشکل را پیدا و حل کردم.
گفتم راه‌حل را اینجا بنویسم شاید بعدا هم برای یادآوری خودم مفید باشه و هم برای شاید به کسی کمک بشه.

من قبل‌تر برای تست رفته بودم و phpvirtualbox نصب کرده بودم ولی تنظیم‌هاش توی /etc/defaults/virtualbox/ مونده بود. همین باعث شده بود که root نصب تغییر کنه و ابزارهای شناسایی درگاه USB به جای نادرستی اشاره کنند.
این ابزار به صورت پیش‌فرض توی /usr/lib/virtualbox/ قرار دارند و فراخوانی‌شون با استفاده از udev و فایل‌های تنظیمی است که در مسیر /etc/udev/rules.d/60-vboxdrv.rules/ قرارداره فراخوانی می‌شه.

این اولین نکته بود. حتما مطمئن بشید که مسیر ابزارها که در این فایل استفاده شده درست باشه و فایل‌ها موجود باشند. به دلیلی که نمی‌دونم چیه اگه مسیر استاندارد نباشه این ابزارها نه در مسیر جدید و نه در مسیر استاندارد ایجاد نمی‌شوند.

فایل تنظیم درست udev برای virtualbox هم به صورت زیر است:

KERNEL=="vboxdrv", NAME="vboxdrv", OWNER="root", GROUP="root", MODE="0600"
KERNEL=="vboxdrvu", NAME="vboxdrvu", OWNER="root", GROUP="root", MODE="0666"
KERNEL=="vboxnetctl", NAME="vboxnetctl", OWNER="root", GROUP="root", MODE="0600"
SUBSYSTEM=="usb_device", ACTION=="add", RUN+="/usr/lib/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass}"
SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", RUN+="/usr/lib/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass}"
SUBSYSTEM=="usb_device", ACTION=="remove", RUN+="/usr/lib/virtualbox/VBoxCreateUSBNode.sh --remove $major $minor"
SUBSYSTEM=="usb", ACTION=="remove", ENV{DEVTYPE}=="usb_device", RUN+="/usr/lib/virtualbox/VBoxCreateUSBNode.sh --remove $major $minor"

اگه این فایل را پاک کنید و Virtual Box را مجدد نصب کنید این فایل ساخته می‌شه. (پیشنهاد من اینه که اول کامل پاک کنید و بعد مجدد نصب کنید)

البته فراموش نشه قبل از هر کاری کاربر شما به گروه vboxusers اضافه شده باشه. بدون اضافه شدن شما به این گروه امکان استفاده از usb در ماشین‌های مجازی را ندارید! همینطور Oracle VM VirtualBox Extension Pack را هم حتما نصب کنید 🙂

با apt-get خراب چه کنیم؟

امروز با مشکل عجیبی برخورد کردم.
اومدم بسته ntp را نصب کنم که پیام داد به دلیل یه Dependency امکانش نیست. تعجب کردم. گفتم لابد سری قبل توی update، یکی از مخازن دانلود نشده یا خراب شده. پس رفتم سراغ apt-get update.
با اجرای دستور apt-get update ماجرا عجیب‌تر شد. تعدادی خطای Not found 404 برای بخشی از مخازن اصلی Debian روبرو شدم.
بررسی فایل sources.list و تغییر آن‌ها هم تغییری در نتیجه ایجاد نمی‌کرد.

تنظیمات ترتیب انتخاب نوع فشرده‌سازی فایل‌های Package هم راه بجایی نبرد.

دیگه داشتم ناامید می‌شدم که به خودم گفتم این که دیگه کار نمی‌کنه برم اساسی هرچی از این پکیج‌ها توی سیستم Cache شده را پاک کنم فوق فوقش لازم شد از یکی دیگه از سیستم‌ها فایل‌ها را بر می‌دارم.

اگه نمی‌دونید بدونید که فایل‌های package توی دبیان/ابونتو در مسیر /var/lib/apt/lists/ ذخیره می‌شوند و کنار کش فایل‌های deb نیستند.

بعد با دستور

find -type f ! -name lock -delete 

همه فایل‌های پکیج مونده توی سیستم پاک کردم.

بعد دستور apt-get update را اجرا کردم. به سادگی بدون مشکل اجرا شد و مشکل حل!

شاید بد نباشه هرازگاهی (بخصوص بعد از آپدگرید نسخه مثلا از Wheezy به Jessie یا تغییر mirror مورد استفاده) این پاکسازی را انجام بدین. پیش اومده که این فایل را که پاک کردم و دوباره apt-update زدم یه تعدادی فایل که از قبل مونده بوده و آپدیت نمی‌شده به لیست آپدیت‌ها اضافه شده.

راه‌اندازی IPv6 در شبکه محلی

توجه این نوشته کامل نیست و هنوز ویراستاری نشده است.

  • پیش‌نیازها:
    شما نیاز به یک IP ثابت از نوع IPv4 دارید که دسترسی به آن از سرورهای HE مجاز باشد.
    تست مجاز بودن دسترسی را می‌توانید از داخل پنل کاربری Tunnle Broker انجام دهید.
  • درخواست IPv6 برای سرور Debian از HE
    به نشانی https://tunnelbroker.net بروید، ثبت نام کنید. تونل بروکر اجازه ایجاد ۵ تونل به صورت رایگان به شما می‌دهد.
    بعد از ثبت IP ثابت شما هنگام خارج شدن از فیلد نشانی IP آدرس شما چک می‌شود و در صورت عدم دسترسی اعلام می‌کند.
    در صورتی که دسترسی مشکلی نداشته باشد باید سروری که تونل از آن ساخته می‌شود را انتخاب کنید. توجه داشته باشید سرورهایی را انتخاب کنید که زبان آن‌ها انگلیسی باشد وگرنه در هنگام کار کردن با اینترنت نسخه ۶ ممکن است سایت‌ها به صورت پیش‌فرض سایت محلی با زبانی غیر از انگلیسی به شما نمایش دهند.

بعد از انتخاب سرور می‌توانید از قسمت Example نمونه کانفیگ مناسب سیستم عامل خود را پیدا کنید.

  • راه‌اندازی تونل
    تنظیم‌های مناسب را از صفحه Example پیدا کنید. و روی سیستم خود اعمال کنید.
    برای اینکه دسترسی به DNS سرور با پشتیبانی از IPv6 داشته باشید می‌توانید از Cache DNS Server پیشنهادی HE استفاده کنید.
    آدرس شما با ::۲ تمام می‌شود.

تست کارکردن IPv6 روی سرور
برای تست از دستور ping6 google.com -n استفاده کنید. باید بتوانید این آدرس را Resolve و پینگ کند.
IPv6 گوگل ۲a00:1450:4005:80a::200e است. در صورتی که آدرس پیدا نشد پینگ آدرس را امتحان کنید.
در صورت عدم پینگ بجای ::۲ انتهای آدرس نسخه ۶ خود ::۱ بگذارید و امتحان کنید. در صورت عدم کارکرد تنظیم‌ها را بررسی کنید و مطمئن شوید از/به IP نسخه ۴ سرور تونل دسترسی به IP ثابت شما وجود دارد. همچنین دقت کنید تنظیمات را اشتباه وارد نکرده باشید.

در صورتی که فقط یک سیستم برای با IPv6 لازم دارید اینجا نقطه پایان کار است اما اگر می‌خواهید همه شبکه محلی شما بتوانند به IPv6 دسترسی داشته باشند دستور العمل‌های بعدی را پیگیری کنید.

درخواست /۴۸ از تونل بروکر:
برای هر تونل می‌توانید یک محدوده /۴۸ برای شبکه داخلی خود درخواست کنید. این محدوده به صورت پیش‌فرض فعال نیست.

تتنظیم IP روتر /۴۸ روی کارت شبکه شبکه داخلی
با اینکه شما به کل محدوده /۴۸ دسترسی دارید اما هر شکبه نهایی فقط می‌تواند از /۶۸ استفاده کند.
ابتدا نشانی ::۱/۶۸ را روی کارت شبکه‌‌ای از سرور اینترنت که به شبکه محلی متصل است تنظیم کنید. باید بتوانید از خارج از شبکه خود (مثلا ابزارهای آنلاین یا یک شبکه دیگر که دارای دسترسی به IPv6 است) بتوانید این نشانی جدید را پینگ کنید.
یک سری ابزار عیب‌یابی IPv6 در نشانی http://lg.he.net در دسترس است.

نصب radvd با توجه به /۶۴ بودن ساب‌نت انتخابی
با دستور apt-get install radvd ابزار توزیع IPv6 در شبکه محلی را نصب کنید.
فایل تنظیم‌ در نشانی /etc/radvd.conf قرار دارد. کافی است که ساب‌نت /۶۸ انتخابی را داخل آن تعریف کنید و سرویس را restart کنید.

سرویس networking یکی از دستگاه‌های داخل شبکه محلی را ریست کنید. در زمانی کوتاه باید نشانی IP نسخه ۶ را در محدوده انحصاری شما ببینید.
از این ایستگاه باید بتوانید از ping6 نشانی‌های نسخه ۶ سایت‌ها را ببینیند. تنظیم DNS سرور را فراموش نکنید.

نکته بسیار مهم: فراموش نکنید با راه‌اندازی IPv6 روی شبکه محلی همه دستگاه‌ها از خارج از شبکه محلی شما قابل مشاهده هستند. تنظیم فایروال ( ip6table ) را فراموش نکنید.

باگ امنیتی SSLv3

Poodle

این روزها مرتب داره باگ‌های امنیتی خفن با سابقه‌های طولانی در حد بیش از ۱۰ سال پیدا و اعلام می‌شه.

اگه حضور ذهن داشته باشید باگ‌های Heartblead یا همون خون‌ریزی قلبی در OpenSSL، باگ بزرگ Shellshock خیلی وقت نیست که اعلام شدند.

اما آخرین باگ امنیتی که همین دیروز سر و صداش بلند شد، مشکل امنیتی است در SSL نسخه ۳. اسم این باگ که از طرف Google اعلام شده Poodle است.

Mozilla اعلام کرده که از نسخه بعدیش (نسخه ۳۴) پشتیبانی از SSLv3 که ۱۵ ساله بازنشسته شده را قطع می‌کنه. Chrome هم همین سیاست را در پیش گرفته است.

اگه کاربر عادی هستید در Firefox با نصب افزونه SSL Version Control از نشانی  https://addons.mozilla.org/en-US/firefox/addon/ssl-version-control می‌تونید قبل از اینکه نسخه جدید فایرفاکس بیاد از اتصال مشکل‌دار SSLv3 جلوگیری کنید. همینطور می‌تونید Google Chrome را با گزینه  –ssl-version-min=tls1 اجرا کنید تا گوگل کروم هم از این پروتکل مشکل‌دار استفاده نکنه.

اگه سرور وب Apache دارید و SSL روش فعال است در اولین فرصت با تنظیم خط زیر در etc/apache2/mods-enabled/ssl.conf/ از کاربرای سایتتون محافظت کنید:

SSLProtocol all -SSLv2 -SSLv3

اطلاعات بیشتر در مورد این مشکل امنیتی در http://googleonlinesecurity.blogspot.com/2014/10/this-poodle-bites-exploiting-ssl-30.html در دسترس است.
مثل همیشه بلاگ بیان ( blog.bayan.ir ) هم اطلاعات خوبی منتشر کرده است.

+آپدیت: اطلاعات بیشتر و راهنمای رفع خطر در وبلاگ بیان منتشر شده است. همینطور یک ابزار برای بررسی آنلاین اینکه شما در خطرید یا نه هم منتشر کرده است. همینطور یک پست در مورد چه شرایطی ممکن است شما را دچار خطر کند در این بلاگ منتشر شده است.

حل مشکل ارتباط با اینترنت!

مدتی قبل یه مطلب گذاشته بودم در مورد اینکه با eeepcـم توی خونه مشکل دارم و اگه اندازه درخواست‌ها زیاد بشه اینترنتم کار نمی‌کنه.
نتیجه این مشکل این بود که مثلا بعد از وارد کردن رمز gmail وارد مرحله بعدی نمی‌شد یا اگه توی بلاگ می‌خواستم مطلب بزارم نمی‌شد و …
این مشکل باقی بود تا هفته پیش که رفتم تهران‌لاگ. اونجا این موضوع را با یکی از دوستان در میون گذاشتم و اون هم گفت یکی دیگه از دوستاش هم مشابه این مشکل را داشته و حلش کرده. قرار شد که برام بپرسه و خبر بده.
یکی دو روز بعد ایمیل زد و گفت مشکل از تنظیم mtu است.
اتفاقا همون روز یکی از دوستان همکار هم سر یه صحبتی گفت که POL اینطور مشکلی داره و باید تنظیم‌ mtu را عوض کنی. خودش عدد ۱۲۸۰ را پیشنهاد کرد (چیزی بود که خودش استفاده می‌کرد) و البته گفت با ping -s SIZE می‌شه این عدد را دقیق پیدا کرد.
شب که رفتم خونه اول با دستور ifconfig wlan0 mtu 1280 سعی کردم مشکل حل بشه. با اینکه mtu عوض شده بود اما به نظر می‌رسید مشکل باقیه. بنابراین رفتم داخل پنل کنترل مودم و از اونجا این مقدار که روی auto بود را آوردمش روی حالت دستی و عدد mtu را از 1490 که مقدار پیش‌فرض برای ارتباط‌های pppoe است را تغییرش دادم به 1280 و مشکل حل شد!
البته هنوز نفهمیدم این مشکل چطور بود که فقط توی linux دیده می‌شد اما توی ویندوز مشکل وجود نداشت! و چرا با تغییر mtu توی لینوکس حل نشد! احتمالا این مطلب مینونه کمک کنه. در این مطلب با استفاده از iptable مقدار mtu را در هنگام ایجاد ارتباط (بسته sync) به مقدار دلخواه کم یا زیاد می‌کند.

asus eee pc دیوانه

مدتی است که مشکلی بس عجیب با asus eee pc پیدا کردم.

وقتی توی خونه می‌خوام باهاش برم توی اینترنت گشت و گذار ییهویی کارت شبکه از کار میافته. مهمتر از همه این که وقتی که از کار میافته به نظر می‌رسه از خط فرمان می‌شه درخواست‌های GET را ارسال کرد و جوابش را دید (و الیته از توی مرورگر هم) اما درخواست‌های POST بخصوص اون‌هایی که یه ذره مقدار دیتا شون بزرگ باشه، مثلا وقتی می‌خوای یه مقاله‌ای که نوشتی را بزاری توی بلاگت گویا همه چی از کار میافته. اصلا ترافیک قطع میشه و نمی‌شه هیچ کاری کرد.

یا درخواست‌های tor همینطور، یه ذره کار می‌کنه و بعد از کار میافته.

درخواست‌های https پروکسی هم.

جالب اینه که بدون اینکه در تنظیمات تغییری بدی، توی شرکت همه چی درست و حسابی داره کار می‌کنه!
توی خونه از سرویس POL استفاده می‌کنم و توی شرکت اغلب از Irancell. هر چند توی شرکت با POL هم مشکلی ندارم!

خیلی توی اینترنت سرچ کردم اما هیچ سر نخی به دست نیاوردم. تنها چیزی که پیدا کردم این بود که گویا بعضی از کارت شبکه‌های وایرلس با مود N مشکل دارند که برای رفع این مشکل توی خونه مودم را بردم روی مود G (نتونستم کارت شبکه را روی مود G قفل کنم پس صورت مساله را پاک کردم!). یه مدت بهتر بود و باز دوباره چند وقتیه همون آش و همون کاسه!

چند وقت پیش حتی زدم سیستمم را از اول نصب کردم اما افاقه نکرد! (home را البته نگه داشتم. شاید دفعه بعدی اون‌ها را هم پاک کردم)

حتما براتون جالبه که در همین زمان «مریم» می‌تونه به اینترنت وصل بشه و هر نوع استفاده‌ای داشته باشه بدون مشکل!

VirtualBox و مشکل با Symlink

این امکان اینجاد Symbolic Link توی لینوکس یه امکان خیلی خیلی عالی هست.
روی یکی از سیستم‌های شرکت که Debian نصب کردیم، اندازه‌های پارتیشن‌ها را بد تنظیم کرده بودیم و در نتیجه حجم پارتیشن root یا همون / دوست داشتنی کم بود.
بعد از نصب یه سری برنامه سیستم به مشکل برخورد. برای حل مشکل یکی از فولدرهای حجیم به نام usr را منتقل کردیم توی یه دیسک دیگه و symbolic link درست کردیم از / به اون یکی پارتیشنه. و بعد که همه چی اوکی بود، الان روی / به اندازه کافی فضای خالی داریم و همه چی خوب داره کار می‌کنه.

اما همیشه اوضاع به این خوبی نیست، معدود برنامه‌هایی پیدا می‌شوند که با این symblink نمی‌تونن کار کنند. VirtualBox محصول شرکت Oracle (شرکتی که این روزا داره محبوبیتش را بین لینوکسی‌ها از دست میده)، در نسخه ۳ باsymblinkسازگار بود. اما تو نسخه 4ش مشکل داره.
وقتی می‌خوای یه ماشین مجازی را روشن کنی یه پیام نامفهوم می‌ده که تهش نوشته:
failed to start machine. Error message: Failed to load VMMR0.r0 (VERR_SUPLIB_SYMLINKS_ARE_NOT_PERMITTED)
بعد از کلی جست و جو و خوندن VBOX.log ماشین مجازی، آخرش می‌فهمی که مشکل از این symbolic link فولدر usr/ است.
و هیچ کاری نمی‌تونی بکنی جز اینکه یه GPartEd زنده برداری و اندازه پارتیشن‌ها را عوض کنی یا اینکه برگردی سراغ همون نسخه ۳٫۲ که قبلا کار می‌کرده.

اوراکل، من از تو بدم میاد. همه محصولاتی که خریدیشون از نظر کیفیت بدتر شدن. نمی‌تونی کاری را درست انجام بدی انجام نده عوضی.
در ضمن اوراکل برای باگ‌ریپورت پروژه‌ها نیاز به یه حساب توی oracle داره که به ایرانی‌ها اجازه ایجاد این حساب را نمی‌ده.