سایه دانش

فعلا بدون توضیح

سایه دانش

فعلا بدون توضیح

ترجمه مجموعه مقالات Device Driver در لینوکس‎

سلام
عید همگی مبارک
امیدوارم مفید واقع شود.
فایل را میتوانید از 
اینجا دانلود کنید
با تشکر


ادامه مطلب ...

ایجاد Static Route برای کانکشن های VPN در ویندوز

همونطور که میدونید با هر اتصال به یک کانکشن VPN در ویندوز default gateway نیز بصورت اتوماتیک عوض میشود . البته میتوان با برداشتن تیک آن، default gateway بصورت قبل بماند ولی اگر بخواهیم یک static route بعد از هر اتصال vpn بزنیم کمی با مشکل مواجه میشویم.چون با هر بار اتصال ممکن است ip مختلفی برای کلاینت ما اختصاص پیدا کند و همچنین در ویندور برعکس لینوکس نمیتوان با معرفی نام کانکشن یک static route بصورت ثابت تعریف کرد .

در لینک زیر یک اسکریپت پیدا کردم که این مشکل رو حل میکنه


@echo off

REM === USER SETTINGS =====================================================================================

SET VPN_NAME=test
SET VPN_USERNAME=foo
SET VPN_PASSWORD=bar

REM === DO NOT EDIT BELOW THIS LINE =======================================================================

rasdial "%VPN_NAME%" %VPN_USERNAME% %VPN_PASSWORD%

for /F "tokens=1-2 delims=:" %%A in ('ipconfig') do echo "%%B" | findstr /C:"x.y.z" > NUL: && SET ADDR=%%B

Echo Your VPN IP address is %ADDR%
Echo Adding static route to the SIP proxy

route add a.b.c.d mask 255.255.255.0 %ADDR%


منبع : http://forum.pfsense.org/index.php?topic=1971.0

آیاامکان اجرای متدsingle sign on بروی برنامه های قدیمی وجوددارد؟

سلام

single sign on یک روش خوب برای اجرای برنامه های داخل سازمان است به نحوی که پرسنل سازمان مجبور به ،به خاطر سپردن نام کاربری و کلمه عبور های مختلف نباشند . در این روش فقط کافی است به اکتیو دایرکتوری شبکه خود (معمولا کاربرانی که از ویندوزهایی که متصل به دومین هستند ، در ابتدای ورود به ویندوز نام کاربری و کلمه عبور دومین را وارد میکنند) وارد شده و از آن پس هر کجا نام کاربری یا کلمه عبوری لازم بود از A.D احراز هویت میشوند.


ولی مشکلی که وجود دارد این است که بعضی از برنامه های کاربردی تحت شبکه(مخصوصاً نسخه های قدیمی) از single sign on پشتیبانی نمیکند برای مثال Oracle Form Runtime 6i که یک برنامه برای نمایش فرمهای ساخته شده و اجرای برنامه هایی که با Oracle Developer تهیه گردیده میباشد از این مدل پشتیبانی نمیکند .


برای اینکه اجرای Oracle Form Runtime با استفاده از نام کاربری A.D باشند من مجبور شدم یک روش ابتکاری انجام بدهم ...


اول یک یوزر در دیتابیس اوراکل به ترتیب زیر ایجاد کردم:


CREATE USER "SSO"    IDENTIFIED BY "SSO@MIS";


بعد در اسکیمای کاربر اصلی برنامه جدول زیر را ساختم :


CREATE TABLE "SSO_USER" ("USER_NAME" VARCHAR2(20 byte)

    NOT NULL, "PASS" VARCHAR2(20 byte), "LOGIN_NAME" VARCHAR2(20 

    byte) NOT NULL, 

    CONSTRAINT "SSO_USER_PK" PRIMARY KEY("LOGIN_NAME") );

البته لزومی ندارد که این جدول در اسکیمای کاربر دیگری باشد این مورد فقط یک نکته امنیتی دارد که اگر نام کاربری و کلمه عبور SSO افشا شود این کاربر قادر به تغییر ، ایجاد و یا حذف رمزها نخواهد بود.


سپس دستور زیر را برای دسترسی کاربر SSO به جدول SSO_USER صادر میکنیم


GRANT CONNECT TO SSO;

GRANT SELECT ON SSO_USER TO SSO;


لازم به ذکر است که جدول ما سه ستون دارد ،  ستونهای USER_NAME و PASS  نام کاربری و کلمه عبور پرسنل است که در اوراکل تعریف شده و ستون LOGIN_NAME نام کاربری در A.D میباشد.

حالا بعنوان نمونه یک کاربر در جدول خود ایجاد میکنیم (با فرض اینکه کاربر HAMID با کلمه عبور HAMID@123 در دیتابیس اوراکل قبلا تعریف شده و دسترسی های لازم به آن اعطا شده باشد)

INSERT INTO SSO VALUES ('HAMID','HAMID@123','ADHAMID');

COMMIT;

ADHAMID نام کاربری مورد نظر در A.D است که آن هم قبلا در A.D تعریف شده است.


حال قسمت دیتابیس به پایان رسید و نوبت به برنامه نویسی است!!! من با #C یک برنامه کنسول نوشتم به ترتیب زیر :


string domain = System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties().DomainName.ToUpper();

            string hostName =System.Net.Dns.GetHostName().ToUpper();

            string pass;

            string user_name;

            if (domain != "TEST.ORG")

            {

                Console.WriteLine("You must login with test.org domain.");

                Console.ReadLine();

                return;

            }


این قسمت چک میکند که پرسنل حتما به A.D و در اینجا دامین test.org لاگین کرده باشد.


System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection();

            System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand();

            System.Data.OleDb.OleDbDataReader dr ;

            conn.ConnectionString = "Provider=msdaora;Data Source=mis;User Id=sso;Password=sso@mis;";

            cmd.Connection = conn;

            cmd.CommandText = "select user_name,pass from ymis_dba.sso_user where login_name='" + hostName + "'";

            try

            { conn.Open(); }

            catch 

            {

                   Console.WriteLine("Could not connect to database ...");

                   Console.ReadLine();

                    return;

            }

            dr = cmd.ExecuteReader();


در قسمت فوق نیز برنامه به دیتابیس مورد نظر وصل و نام و کلمه عبور اوراکلی فرد مورد نظر را استخراج میکند.

حال به قسمت انتهایی داستان میرسیم که آن هم اجرای برنامه Oracle Form Runtime به همراه پارامتری های نام کاربری و کلمه عبور میباشد:


            if (dr.HasRows)

            {

                dr.Read();

                user_name = dr.GetString(0);

                pass = dr.GetString(1);

                System.Diagnostics.ProcessStartInfo p = new System.Diagnostics.ProcessStartInfo();

                p.FileName = "d:\\orant\\bin\\ifrun60.exe";

                p.Arguments = "main_f.fmx" + " " + user_name + "@mis/" + pass;

                p.WorkingDirectory = @"c:\mis\share_form";

                try

                {

                    System.Diagnostics.Process.Start(p);

                }

                catch

                {

                    Console.WriteLine("Error ...");

                    Console.ReadLine();

                    return;

                }

در پایان قابل ذکر است که این روش اصلا برای برنامه هایی که SSO را پشتیبانی میکنند قابل توصیه نیست به دلیل آنکه مکانیزم SSO روشی بسیار امن برای اجرای برنامه میباشد .