2012/02/25

وبلاگ جدید در زمینه برنامه‌نویسی



پس از راه اندازی «مجموعه فردا پرداز» که به زودی به یک شخصیت حقوقی تبدیل خواهد شد تصمیم گرفتم سیستم وبلاگ‌های آن را راه‌اندازی کنم تا همکاران «فردا پرداز» بتوانند در آنجا از تجارب خود در «فردا پرداز» بنویسند. از آنجا که خودم هم از همکاران «فردا پرداز» محسوب می‌شوم یک وبلاگ فنی در آنجا راه انداخته‌ام به نام «محبی | نوشته‌های فنی افشار محبی در فردا پرداز». وبلاگ فردا پرداز من از نظر محتوا با این وبلاگ هم راستا است. یعنی هر دو راجع به برنامه‌نویسی و مسائل مرتبط هستند ولی هر دو وبلاگ کاملاً از هم مستقل بوده و قرار نیست فعالیت یکی، آن یکی دیگر را تعطیل کند. فعلاً به نوشتن در هر دوی این وبلاگ‌ها ادامه می‌دهم.


آدرس وبلاگ فردا پرداز من http://fardapardaz.com/blogs/mohebbi و آدرس فید (خوراک) آن http://fardapardaz.com/blogs/mohebbi/default.aspx/syndication.axd است. در ضمن فهرست کامل وبلاگ‌های فردا پرداز در این آدرس قرار دارد.




2012/02/21

جذب همکار برنامه‌نویس در فردا پرداز


.
.

در گروه «فردا پرداز» به تعدادی برنامه‌نویس با انگیزه، به روز، با پشتکار و خلاق در حوزه فناوری‌های نوین دات‌نت نیازمندیم. محل فعالیت تهران - سعادت آباد می‌باشد اما تحت شرایطی امکان همکاری به صورت دور کاری (مقیم در شهری غیر از تهران) هم فراهم می‌باشد. لطفاً جهت ارسال رزومه از ایمیل jobs روی دامنه FardaPardaz.com استفاده کنید. لطفاً قبل از ارسال رزمه اینجا را ببینید.


.
.




2012/02/15

‫مشکل Jira و مودم D-Link

جیرا را در سرور نصب کرده بودم و از طریق NAT یک مودم D-Link امکان دسترسی به بیرون را برای آن فراهم کرده بودم. از داخل هیچ مشکلی نداشت اما یکی از کاربران نمی‌توانست از بیرون با جیرا کار کند. مورد را از طریق یک VPS چک کردم، از آنجا هم جیرا دیده نمی‌شد. جیرا یک برنامه جاوایی است که توسط Application Server خودش host می‌شود نه از طریق IIS. بنابراین باید پورت جداگانه‌ای به آن اختصاص داده می‌شد. پورت انتخابی من همان پورت پیش فرض یعنی 8080 بود. برای رفع مشکل مراحل مختلفی را دنبال کردم:

۱- در اولین مرحله به ISP شک کردم. بلافاصله تماس گرفتم و از آنها خواستم که باز بودن پورت 8080 را بررسی کنند. پورت باز بود. NATهای مختلفی را با کمک ISP امتحان کردیم. وقتی که فقط ۸۰۸۰ در NAT تعریف می‌شد مشکلی وجود نداشت. وقتی که همه پورت‌های ۱ تا ۶۵۵۳۵ هم در NAT باز می‌شد باز هم مشکلی وجود نداشت. اما باز کردن پورت‌های ۸۰ و ۸۰۸۰ به طور همزمان امکان پذیر نبود. مودم من که در اینجا نقش Router را بازی می‌کرد یک خاصیت دارد که وقتی در NAT آن پورت ۸۰ باز شود اعلام می‌کند که پورت وب داخلی به ۸۰۸۰ منتقل شد. در مورد FTP هم مورد مشابهی اتفاق می‌‌افتاد. این مورد می‌توانست سر نخی باشد.

۲- در تنطیمات Router قسمتی وجود داشت به نام Acess Control Services. در آنجا اسم تعدادی سرویس فهرست شده بود. همه سرویس‌ها را غیر فعال کردم. دسترسی به Router را برای همیشه از دست دادم ولی مشکل جیرا حل شد.

۳- به نمایندگی D-Link در ایران زنگ زدم گفتند راهی وجود ندارد که Web Server داخلی به پورت دیگری منتقل شود اما بهتر است از telnet استفاده کنید. مودم را مجددا تنظیم کردم و این به بار به جز سرویس telnet بقیه سرویس‌های Acess Control Services را غیر فعال کردم. با telnet می‌توانستم به Router وصل شوم. مقدار زیادی وقت گذاشتم ولی امکانات telnet آنقدر زیاد نبود که بتوانم NAT دیگری را تعریف کنم یا Acess Control Services را تغییر دهم.

۴- به عوض کردن پورت جیرا رضایت دادم. مودم را مجددا تنظیم کردم و در NAT آن گفتم که پورت ۸۰۹۰ بیرون به پورت ۸۰۸۰ داخل وصل شود. مشکل بیرون با استفاده از پورت جدید حل شد. اما از داخل نمی‌توانستم با همان آدرس و پورت بیرون کار کنم. سعی کردم پورت خود جیرا را هم به پورت جدید تغییر دهم اما موفق نشدم.

۵- مجدداً به عدم دسترسی به مودم رضایت دادم. همه سرویس‌ها به جز telnet را غیر فعال کردم. مشکل حل نشد. مودم را برای بار چندم مجددا تنظیم کردم و این بار همه سرویس‌ها را غیر فعال کردم. اما بر خلاف دفعه اول مشکل جیرا حل نشد. اصلا نفهمیدم چرا.


۶- یک بار دیگر مودم را به طور معمولی تنظیم کردم. همه پورت‌های ۱ تا ۶۵۵۳۵ را در NAT تعریف کردم و جیرا کار کرد. اما باز گذاشتن تمام پورت‌ها اصلا راه عاقلانه‌ای نبود. آنها را بستم.

۷- داشتم نا امیدانه به خرید یک Router درست و حسابی فکر می‌کردم اما ضمن آن که می‌‌ترسیدم عین مشکل در آنجا هم وجود داشته باشد به سرم زد یک بار دیگر با تعریف NAT بازی کنم. با چند بار امتحان دیگر به این رسیدم که اول پورت ۸۰۸۰ را تعریف کنم و بعد پورت ۸۰ را. این روش در اولین قدم کار کرد. یعنی از بیرون هم پورت ۸۰ باز بود و هم پورت ۸۰۸۰. ترسیدم که با خاموش و روشن شدن مودم یا سرور دوباره به حالت اول برگردم. دو بار مودم را Boot کردم ولی هیچ چیزی از کار نیفتاد. بالاخره از کابوس ۸ صبح تا ۳ بعد از ظهر نجات پیدا کردم!

نکته: اگر فقط از ابزارهای دات نتی به جای جیرا استفاده می‌کردم مشکلات خیلی کمتری داشتم. حداقلش این بود که نیاز به پورت جدیدی غیر از پورت ۸۰ نبود و با IIS سالهاست که کار می‌کنم. اما جیرا خیلی قدرتمندتر از آن است که بشود آن را به خاطر چنین مشکلاتی کنار گذاشت.




2012/02/08

‫راه اندازی FTP با استفاده از Windows Server 2008 R2 و IIS 7.5

برای راه اندازی FTP در یک سرور معمولاً راهی غیر از IIS پیشنهاد می‌شود به این دلیل که IIS مشکلات زیادی در این راه دارد. اما از آنجا که من به خاصیت Signle Sign On ارائه شده توسط Active Directory نیاز داشتم مجبور بودم راه IIS و ویندوز را انتخاب کنم. راه اندازی FTP با کمک IIS خیلی راحت است اما به شرطی که Firewall ویندوز را خاموش نگه دارید. به محض آن که فایروال روشن شود حتی اگر پورت‌های ۲۰ و ۲۱ مستثنا شده باشند نمی‌توان از FTP استفاده کرد.

برای نصب FTP روی IIS و ویندوز ابتدا با فرض خاموش بودن فایروال جلو می‌رویم و بعد از آن راه اندازی آن کامل شد می‌گوییم که چه کاری باید انجام دهیم تا با روشن بودن فایروال باز هم FTP کار کند.

۱- در ویندوز سرور ۲۰۰۸ آر ۲ همه Roleهای مورد نیاز را فعال می‌کنیم. Role اصلی همان وب سرور یا IIS است. با نگاهی به زیر آیتم‌های آن می‌توان به موارد مورد نیاز دیگر پی برد.

۲- برنامه IIS را باز کرده و روی مورد Sites راست کلیک کنید.

۳- گزینه Add FTP Site را می‌زنید.

۴- گزینه No SSL را در مرحله بعدی انتخاب کنید.

۵- در مرحله بعد نوع Authentication را که قاعدتا Basic خواهد بود انتخاب کنید. Basic یعنی کاربران باید به هنگام استفاده از FTP Server نام کاربری و کلمه عبور تعریف شده خودشان را وارد کنند. این که چه کسی به چه فولدری چه دسترسی دارد چیزی است که برای کل سایت در اینجا و به ازای زیر شاخه‌های آن بعدا به طور جداگانه تعریف می‌شود. تعیین دسترسی‌ها در اینجا با عنوان Authorization شناخته می‌شود.

۶- بعد از این که مراحل نصب تمام شد می‌توانید با کلیک روی هر کدام از شاخه‌ها و سپس انتخاب گزینه FTP Authorization میزان دسترسی به هر کدام از شاخه‌ها را تعیین کنید.


در این مرحله FTP به خوبی کار می‌کند و هیچ مشکل ندارد. اما با روشن شدن فایروال همه چیز از کار خواهد افتاد. در ادامه مراحل مورد نیاز برای تنظیم صحیح فایروال توضیح داده می‌شود.

۷- فایروال را روشن کنید و پورت‌های ۲۰ و ۲۱ را باز کنید. هیچ اتفاق خاصی نمی‌افتد و از بیرون فایروال نمی‌توان به FTP دسترسی داشت.

۸- در IIS روی FTP Server مربوطه کلیک کنید.

۹- گزینه FTP Firewall Support را انتخاب کنید.

۱۰- شما باید پورت‌های دیگری غیر از پورت‌های ۲۰ و ۲۱ را در فایروال باز کنید. اما کدام پورت‌ها؟ گزینه Data Channel Port Range محدوده این پورت‌ها را که به عنوان پورت دیتا معروفند را بر عهده دارد. اما گزینه بیشتر وقت‌ها غیر فعال است و عدد 0-0 را نمایش می‌دهد.

۱۱- عدد 0-0 یعنی از پورت‌های پیش فرض برای عملیات موقتی TCP/IP که اصطلاحاً Ephermeral نامیده می‌شود استفاده خواهد شد. این پورت‌های موقتی در ویندوز سرور ۲۰۰۸ از پورت شماره ۴۹۱۵۲ شروع و تا ۶۵۵۳۵ ادامه دارند. این پورت‌ها را در فایروال باز کرده و با خیال راحت از FTP استفاده کنید. جهت کسب اطلاعات بیشتر راجع به این پورت‌ها به اینجا مراجعه کنید.







2012/02/07

GitAspx Authorization

As a git lover on Windows platform I am always searching for a way to set up a Windows git server. A perfect way is indeed SSH but setting it up on Windows is a really hard task. In addition to it I never succeeded to setup authorization with it. A user could access all git repositories once he has correct user/password.

One of my favorite git servers in Windows is GitAspx. It is over simple HTTP and it has not very secured. It is also a bit slower than native git. But with all disadvantages it is very easy, handy and simple to install. GitAspx can be secured with IIS Basic Authentication. But by default has no obvious authorization. It's a long time that I'm searching for a way to define authorization on GitAspx. Fortunately I have found a way for it inspiring from a question in SO.

The solution is based on URL authorization in IIS 7.5. GitAspx has not physical folder for each git repo so you can not add a web.config to each folder and set authorization there. Here I used location node in web.config to allow/deny access to different git repositories. This is a sample web.config: