Ejemplo n.º 1
0
        public static void Main(string[] args)
        {
            AppSettings settings = new AppSettings();

            settings.ClientConnectionTimeout = 10000;

            if (!LoadSettings(settings, args))
            {
                Console.WriteLine("Bad or no parameters given");
                Console.WriteLine("Usage: Knock -a[ipaddress] -p[port]");

                return;
            }

            _localClient  = new ClientInstance(settings);

            _localClient.LostConnection += new EventHandler<ObviousCode.Interlace.BitTunnelLibrary.Events.ExceptionEventArgs>(_localClient_LostConnection);
            _localClient.ConnectionMade += new EventHandler(_localClient_ConnectionMade);
            _localClient.ConnectionTerminated += new EventHandler(_localClient_ConnectionTerminated);

            Console.Write ("Starting Server ... ");

            _server = new ServerInstance(settings);

            _server.ConnectionMade += new EventHandler(_server_ConnectionMade);
            _server.ConnectionTerminated += new EventHandler(_server_ConnectionTerminated);
            _server.LostConnection += new EventHandler<ObviousCode.Interlace.BitTunnelLibrary.Events.ExceptionEventArgs>(_server_LostConnection);

            _server.Connect();

            Console.WriteLine();
            Console.WriteLine ("Server started");
            Console.WriteLine();

            LoadCommands();

            MountedFileCache.Cache.Client = _localClient;
            MountedFileCache.Cache.Server = _server;
            MountedFileCache.Cache.PromptRequested += new EventHandler(Cache_PromptRequested);
            try
            {
                Console.Write ("Preparing local client ... ");
                if (!_localClient.Connect())
                {
                    Console.WriteLine("Unable to connect ...");

                    Console.WriteLine("Stopping ...");

                    Console.WriteLine("Bye");

                    Console.ReadLine();

                    return;
                }
            }
            catch (Exception e)
            {
                Console.WriteLine ("Unable to prepare locale client: {0}", e.Message);

                Console.ReadLine();

                Console.WriteLine("Bye");
                return;
            }

            _currentPath = "/";

            Console.WriteLine();
            Console.WriteLine("Welcome. Type \"quit\" to exit");
            Console.WriteLine();

            string line = "";

            Console.Write(Cursor);

            while(true)
            {
                if (_forceQuit) break;

                line = Console.ReadLine();

                if (line == string.Empty)
                {
                    Console.Write(Cursor);
                    continue;
                }

                if (line == "quit")
                {
                    ConsoleKeyInfo response;

                    do
                    {
                        Console.WriteLine();
                        Console.Write("Quit? (Y/N)");
                        response = Console.ReadKey();
                    }
                    while (response.Key != ConsoleKey.Y  && response.Key != ConsoleKey.N);

                    if (response.Key == ConsoleKey.Y)
                    {
                        break;
                    }
                    else
                    {
                        Console.WriteLine();
                        Console.Write(Cursor);
                        continue;
                    }
                }

                try
                {
                    ParseCommand(line);
                }
                catch (Exception e)
                {
                    Console.WriteLine ("System Error: {0}", e.Message);
                }

                Console.Write(Cursor);
            }
            _server.Dispose();
            _localClient.Dispose();

            Console.WriteLine("Bye");
        }