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(); } }
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; } } }
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(""); }
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; } } }