Пример #1
0
 private static void StartServer(S3Configuration s3Configuration)
 {
     using (S3Server = new S3Server(s3Configuration))
     {
         S3Server.Start();
         Console.WriteLine("S3Emulator is started");
         Console.WriteLine("Service url : {0}", s3Configuration.ServiceUrl);
         Console.WriteLine("Press <Enter> to stop");
         Console.ReadLine();
     }
 }
Пример #2
0
        private static S3Server CreateS3Server()
        {
            var s3Configuration = new S3Configuration
            {
                ServiceUrl        = ServiceUrl,
                HostPort          = HostPort,
                ProxyPort         = ProxyPort,
                IsProxyEnabled    = IsProxyEnabled,
                DataDirectory     = "Data",
                RunInMemory       = true,
                MaxBytesPerSecond = ThrottledStream.Infinite
            };

            var s3Server = new S3Server(s3Configuration);

            return(s3Server);
        }
        static void Main(string[] args)
        {
            /*
             * Console.Write("Base domain (.localhost): ");
             * string baseDomain = Console.ReadLine();
             */

            Console.WriteLine("Listening on http://*:8000/");

            _Server = new S3Server("*", 8000, false, DefaultRequestHandler);
            _Server.Logging.Exceptions   = true;
            _Server.Logging.HttpRequests = true;
            _Server.Logging.S3Requests   = true;
            _Server.Logger = Logger;

            // Multiple base domains
            _Server.BaseDomains.Add(".localhost");
            _Server.BaseDomains.Add(".localhost.com");
            _Server.BaseDomains.Add(".localhost1.com");
            _Server.BaseDomains.Add(".localhost2.com");

            _Server.AuthenticateSignatures = true;
            _Server.GetSecretKey           = GetSecretKey;
            _Server.PreRequestHandler      = PreRequestHandler;
            _Server.DefaultRequestHandler  = DefaultRequestHandler;
            _Server.PostRequestHandler     = PostRequestHandler;

            _Server.Service.ListBuckets = ListBuckets;

            _Server.Bucket.Delete          = BucketDelete;
            _Server.Bucket.DeleteTags      = BucketDeleteTags;
            _Server.Bucket.DeleteWebsite   = BucketDeleteWebsite;
            _Server.Bucket.Exists          = BucketExists;
            _Server.Bucket.ReadVersioning  = BucketReadVersioning;
            _Server.Bucket.Read            = BucketRead;
            _Server.Bucket.ReadAcl         = BucketReadAcl;
            _Server.Bucket.ReadLocation    = BucketReadLocation;
            _Server.Bucket.ReadLogging     = BucketReadLogging;
            _Server.Bucket.ReadTags        = BucketReadTags;
            _Server.Bucket.ReadVersioning  = BucketReadVersioning;
            _Server.Bucket.ReadVersions    = BucketReadVersions;
            _Server.Bucket.ReadWebsite     = BucketReadWebsite;
            _Server.Bucket.WriteVersioning = BucketWriteVersioning;
            _Server.Bucket.Write           = BucketWrite;
            _Server.Bucket.WriteAcl        = BucketWriteAcl;
            _Server.Bucket.WriteLogging    = BucketWriteLogging;
            _Server.Bucket.WriteTags       = BucketWriteTags;
            _Server.Bucket.WriteVersioning = BucketWriteVersioning;
            _Server.Bucket.WriteWebsite    = BucketWriteWebsite;

            _Server.Object.Delete         = ObjectDelete;
            _Server.Object.DeleteMultiple = ObjectDeleteMultiple;
            _Server.Object.DeleteTags     = ObjectDeleteTags;
            _Server.Object.Exists         = ObjectExists;
            _Server.Object.Read           = ObjectRead;
            _Server.Object.ReadAcl        = ObjectReadAcl;
            _Server.Object.ReadLegalHold  = ObjectReadLegalHold;
            _Server.Object.ReadRetention  = ObjectReadRetention;
            _Server.Object.ReadRange      = ObjectReadRange;
            _Server.Object.ReadTags       = ObjectReadTags;
            _Server.Object.Write          = ObjectWrite;
            _Server.Object.WriteAcl       = ObjectWriteAcl;
            _Server.Object.WriteAcl       = ObjectWriteLegalHold;
            _Server.Object.WriteAcl       = ObjectWriteRetention;
            _Server.Object.WriteTags      = ObjectWriteTags;

            _Server.Start();

            while (_RunForever)
            {
                string userInput = InputString("Command [? for help]:", null, false);
                switch (userInput)
                {
                case "?":
                    Menu();
                    break;

                case "cls":
                    Console.Clear();
                    break;

                case "q":
                    _RunForever = false;
                    break;
                }
            }
        }
Пример #4
0
        private static void InitializeGlobals()
        {
            ConsoleColor prior = Console.ForegroundColor;

            Console.ForegroundColor = ConsoleColor.DarkGray;

            //             0        1         2         3         4         5
            //             123456789012345678901234567890123456789012345678901234567890
            Console.WriteLine("| Initializing logging");
            _Logging = new LoggingModule(
                _Settings.Logging.SyslogServerIp,
                _Settings.Logging.SyslogServerPort,
                _Settings.Logging.ConsoleLogging);

            if (_Settings.Logging.DiskLogging && !String.IsNullOrEmpty(_Settings.Logging.DiskDirectory))
            {
                _Settings.Logging.DiskDirectory = _Settings.Logging.DiskDirectory.Replace("\\", "/");
                if (!_Settings.Logging.DiskDirectory.EndsWith("/"))
                {
                    _Settings.Logging.DiskDirectory += "/";
                }
                if (!Directory.Exists(_Settings.Logging.DiskDirectory))
                {
                    Directory.CreateDirectory(_Settings.Logging.DiskDirectory);
                }

                _Logging.Settings.FileLogging = FileLoggingMode.FileWithDate;
                _Logging.Settings.LogFilename = _Settings.Logging.DiskDirectory + "less3.log";
            }

            //             0        1         2         3         4         5
            //             123456789012345678901234567890123456789012345678901234567890
            Console.WriteLine("| Initializing database");
            _ORM = new WatsonORM(_Settings.Database);
            _ORM.InitializeDatabase();
            _ORM.InitializeTable(typeof(Bucket));
            _ORM.InitializeTable(typeof(BucketAcl));
            _ORM.InitializeTable(typeof(BucketTag));
            _ORM.InitializeTable(typeof(Credential));
            _ORM.InitializeTable(typeof(Obj));
            _ORM.InitializeTable(typeof(ObjectAcl));
            _ORM.InitializeTable(typeof(ObjectTag));
            _ORM.InitializeTable(typeof(User));

            if (_Settings.Debug.DatabaseQueries)
            {
                _ORM.Debug.DatabaseQueries = true;
            }
            if (_Settings.Debug.DatabaseResults)
            {
                _ORM.Debug.DatabaseResults = true;
            }
            if (_Settings.Debug.DatabaseQueries || _Settings.Debug.DatabaseResults)
            {
                _ORM.Logger = Logger;
            }

            //             0        1         2         3         4         5
            //             123456789012345678901234567890123456789012345678901234567890
            Console.WriteLine("| Initializing configuration manager");
            _Config = new ConfigManager(_Settings, _Logging, _ORM);

            //             0        1         2         3         4         5
            //             123456789012345678901234567890123456789012345678901234567890
            Console.WriteLine("| Initializing bucket manager");
            _Buckets = new BucketManager(_Settings, _Logging, _Config, _ORM);

            //             0        1         2         3         4         5
            //             123456789012345678901234567890123456789012345678901234567890
            Console.WriteLine("| Initializing authentication manager");
            _Auth = new AuthManager(_Settings, _Logging, _Config, _Buckets);

            //             0        1         2         3         4         5
            //             123456789012345678901234567890123456789012345678901234567890
            Console.WriteLine("| Initializing API handler");
            _ApiHandler = new ApiHandler(_Settings, _Logging, _Config, _Buckets, _Auth);

            //             0        1         2         3         4         5
            //             123456789012345678901234567890123456789012345678901234567890
            Console.WriteLine("| Initializing admin API handler");
            _AdminApiHandler = new AdminApiHandler(_Settings, _Logging, _Config, _Buckets, _Auth);

            //             0        1         2         3         4         5
            //             123456789012345678901234567890123456789012345678901234567890
            Console.WriteLine("| Initializing console manager");
            _Console = new ConsoleManager(_Settings, _Logging);

            //             0        1         2         3         4         5
            //             123456789012345678901234567890123456789012345678901234567890
            Console.WriteLine("| Initializing S3 server interface");
            _S3Server = new S3Server(
                _Settings.Server.DnsHostname,
                _Settings.Server.ListenerPort,
                _Settings.Server.Ssl,
                DefaultRequestHandler);

            if (_Settings.Server.Ssl)
            {
                Console.WriteLine("| https://" + _Settings.Server.DnsHostname + ":" + _Settings.Server.ListenerPort);
            }
            else
            {
                Console.WriteLine("| http://" + _Settings.Server.DnsHostname + ":" + _Settings.Server.ListenerPort);
            }

            //             0        1         2         3         4         5
            //             123456789012345678901234567890123456789012345678901234567890
            Console.WriteLine("| Initializing S3 server APIs");
            _S3Server.Logging.Exceptions = true;
            _S3Server.Logging.S3Requests = _Settings.Debug.S3Requests;
            _S3Server.Logger             = Logger;

            if (!String.IsNullOrEmpty(_Settings.Server.BaseDomain))
            {
                Console.WriteLine("| Base domain " + _Settings.Server.BaseDomain);
                Console.WriteLine("  | Requests must use virtual-hosted URLs, i.e. [bucket].[hostname]/[key]");
                Console.WriteLine("  | Run as administrator/root and listen on a wildcard hostname, i.e. '*'");
                _S3Server.BaseDomains.Add(_Settings.Server.BaseDomain);
            }
            else
            {
                Console.WriteLine("| No base domain specified");
                Console.WriteLine("  | Requests must use path-style hosted URLs, i.e. [hostname]/[bucket]/[key]");
            }

            _S3Server.PreRequestHandler  = PreRequestHandler;
            _S3Server.PostRequestHandler = PostRequestHandler;

            _S3Server.Service.ListBuckets = _ApiHandler.ServiceListBuckets;

            _S3Server.Bucket.Delete          = _ApiHandler.BucketDelete;
            _S3Server.Bucket.DeleteTags      = _ApiHandler.BucketDeleteTags;
            _S3Server.Bucket.Exists          = _ApiHandler.BucketExists;
            _S3Server.Bucket.Read            = _ApiHandler.BucketRead;
            _S3Server.Bucket.ReadAcl         = _ApiHandler.BucketReadAcl;
            _S3Server.Bucket.ReadLocation    = _ApiHandler.BucketReadLocation;
            _S3Server.Bucket.ReadTags        = _ApiHandler.BucketReadTags;
            _S3Server.Bucket.ReadVersions    = _ApiHandler.BucketReadVersions;
            _S3Server.Bucket.ReadVersioning  = _ApiHandler.BucketReadVersioning;
            _S3Server.Bucket.Write           = _ApiHandler.BucketWrite;
            _S3Server.Bucket.WriteAcl        = _ApiHandler.BucketWriteAcl;
            _S3Server.Bucket.WriteTags       = _ApiHandler.BucketWriteTags;
            _S3Server.Bucket.WriteVersioning = _ApiHandler.BucketWriteVersioning;

            _S3Server.Object.Delete         = _ApiHandler.ObjectDelete;
            _S3Server.Object.DeleteMultiple = _ApiHandler.ObjectDeleteMultiple;
            _S3Server.Object.DeleteTags     = _ApiHandler.ObjectDeleteTags;
            _S3Server.Object.Exists         = _ApiHandler.ObjectExists;
            _S3Server.Object.Read           = _ApiHandler.ObjectRead;
            _S3Server.Object.ReadAcl        = _ApiHandler.ObjectReadAcl;
            _S3Server.Object.ReadRange      = _ApiHandler.ObjectReadRange;
            _S3Server.Object.ReadTags       = _ApiHandler.ObjectReadTags;
            _S3Server.Object.Write          = _ApiHandler.ObjectWrite;
            _S3Server.Object.WriteAcl       = _ApiHandler.ObjectWriteAcl;
            _S3Server.Object.WriteTags      = _ApiHandler.ObjectWriteTags;
            _S3Server.Start();

            Console.ForegroundColor = prior;
            Console.WriteLine("");
        }
Пример #5
0
        static void Main(string[] args)
        {
            /*
             * Console.Write("Base domain (.localhost): ");
             * string baseDomain = Console.ReadLine();
             */

            _Server = new S3Server(_Hostname, _Port, false, DefaultRequestHandler);
            _Server.Logging.Exceptions   = true;
            _Server.Logging.HttpRequests = false;
            _Server.Logging.S3Requests   = false;
            _Server.Logger = Logger;

            if (!_ForcePathStyle)
            {
                _Server.BaseDomains.Add(".localhost");
                _Server.BaseDomains.Add(".localhost.com");
                _Server.BaseDomains.Add(".localhost1.com");
                _Server.BaseDomains.Add(".localhost2.com");
                Console.WriteLine("Server configured to use virtual hosting URLs; ensure client is configured accordingly");
            }
            else
            {
                Console.WriteLine("Server configured to use path-style URLs; ensure client is configured accordingly");
            }

            _Server.PreRequestHandler     = PreRequestHandler;
            _Server.DefaultRequestHandler = DefaultRequestHandler;
            _Server.PostRequestHandler    = PostRequestHandler;

            _Server.Service.ListBuckets = ListBuckets;

            _Server.Bucket.Delete          = BucketDelete;
            _Server.Bucket.DeleteTagging   = BucketDeleteTags;
            _Server.Bucket.DeleteWebsite   = BucketDeleteWebsite;
            _Server.Bucket.Exists          = BucketExists;
            _Server.Bucket.ReadVersioning  = BucketReadVersioning;
            _Server.Bucket.Read            = BucketRead;
            _Server.Bucket.ReadAcl         = BucketReadAcl;
            _Server.Bucket.ReadLocation    = BucketReadLocation;
            _Server.Bucket.ReadLogging     = BucketReadLogging;
            _Server.Bucket.ReadTagging     = BucketReadTags;
            _Server.Bucket.ReadVersioning  = BucketReadVersioning;
            _Server.Bucket.ReadVersions    = BucketReadVersions;
            _Server.Bucket.ReadWebsite     = BucketReadWebsite;
            _Server.Bucket.WriteVersioning = BucketWriteVersioning;
            _Server.Bucket.Write           = BucketWrite;
            _Server.Bucket.WriteAcl        = BucketWriteAcl;
            _Server.Bucket.WriteLogging    = BucketWriteLogging;
            _Server.Bucket.WriteTagging    = BucketWriteTags;
            _Server.Bucket.WriteVersioning = BucketWriteVersioning;
            _Server.Bucket.WriteWebsite    = BucketWriteWebsite;

            _Server.Object.Delete         = ObjectDelete;
            _Server.Object.DeleteMultiple = ObjectDeleteMultiple;
            _Server.Object.DeleteTagging  = ObjectDeleteTags;
            _Server.Object.Exists         = ObjectExists;
            _Server.Object.Read           = ObjectRead;
            _Server.Object.ReadAcl        = ObjectReadAcl;
            _Server.Object.ReadLegalHold  = ObjectReadLegalHold;
            _Server.Object.ReadRetention  = ObjectReadRetention;
            _Server.Object.ReadRange      = ObjectReadRange;
            _Server.Object.ReadTagging    = ObjectReadTags;
            _Server.Object.Write          = ObjectWrite;
            _Server.Object.WriteAcl       = ObjectWriteAcl;
            _Server.Object.WriteLegalHold = ObjectWriteLegalHold;
            _Server.Object.WriteRetention = ObjectWriteRetention;
            _Server.Object.WriteTagging   = ObjectWriteTags;

            _Server.Start();
            Console.WriteLine("Listening on http://" + _Hostname + ":" + _Port);

            while (_RunForever)
            {
                string userInput = InputString("Command [? for help]:", null, false);
                switch (userInput)
                {
                case "?":
                    Menu();
                    break;

                case "cls":
                    Console.Clear();
                    break;

                case "q":
                    _RunForever = false;
                    break;
                }
            }
        }