// The disk file service allows you to serve and browse files from flash/disk storage public static void Main() { // Initialize logging Logger.Initialize(new DebugLogger(), LoggerLevel.Debug); // Create Http server pipeline ModuleManager ModuleManager = new ModuleManager(); // Create file/disk service for storage DiskFileService fileService = new DiskFileService(@"/", @"\WINFS\WebSite"); // Add the file module to pipeline and enable the file listing feature ModuleManager.Add(new FileModule(fileService) { AllowListing = true }); // Add the error module as the last module to pipeline ModuleManager.Add(new ErrorModule()); // Create the http server HttpService HttpServer = new HttpService(ModuleManager); // Sets interface ip address HttpServer.InterfaceAddress = IPAddress.GetDefaultLocalAddress(); // Starts Http service HttpServer.Start(); // Set local time SntpClient TimeService = new SntpClient(); TimeService.Synchronize(); }
/// <summary> /// Initializes a new instance of the <see cref="HttpService" /> class. /// </summary> public HttpService(IModuleManager moduleManager) { ApplicationInfo = new MemoryItemStorage(); BodyDecoder = new CompositeSerializer(); _service = this; _moduleManager = moduleManager; _encoder = new HttpMessageEncoder(); _decoder = new HttpMessageDecoder(BodyDecoder); _decoder.MessageReceived = OnMessageReceived; }
public void StartAll() { _service = this; // DHCP Service if (_dhcpEnabled == true) { _dhcpService.InterfaceAddress = _interfaceAddress; _dhcpService.ServerName = _serverName; _dhcpService.DnsSuffix = _dnsSuffix; _dhcpService.StorageRoot = _storageRoot; if (_sntpEnabled == true) { _dhcpService.RemoveOption(DhcpOption.NTPServer); _dhcpService.AddOption(DhcpOption.NTPServer, _interfaceAddress.GetAddressBytes()); } _dhcpService.Start(); } // DNS Service if (_dnsEnabled == true) { _dnsService.InterfaceAddress = _interfaceAddress; _dnsService.ServerName = _serverName; _dnsService.DnsSuffix = _dnsSuffix; if (!StringUtility.IsNullOrEmpty(_serverName) || !StringUtility.IsNullOrEmpty(_dnsSuffix)) { Answer record = new Answer(); record.Domain = string.Concat(_serverName, ".", _dnsSuffix); record.Class = RecordClass.IN; record.Type = RecordType.A; record.Ttl = 60; record.Record = new ARecord(_interfaceAddress.GetAddressBytes()); _service.DnsService.ZoneFile.Add(record); Logger.WriteInfo(this, "Device registered with dns: " + record.Domain); } _dnsService.Start(); } // SNTP Service if (_sntpEnabled == true) { _sntpService.InterfaceAddress = _interfaceAddress; _sntpService.Start(); } // HTTP Service if (_httpEnabled == true) { ModuleManager _moduleManager = new ModuleManager(); // Add the router module as the fist module to pipeline _moduleManager.Add(new RouterModule()); if (StorageRoot != null) { // Create disk file service for the root storage DiskFileService fileService = new DiskFileService("/", StorageRoot + @"\"+ MicroServer.Net.Http.Constants.HTTP_WEB_ROOT_FOLDER + @"\"); // Add the file module to pipeline _moduleManager.Add(new FileModule(fileService) { AllowListing = _allowListing }); } // Add the controller module to pipeline _moduleManager.Add(new ControllerModule()); // Add the error module as the last module to pipeline _moduleManager.Add(new ErrorModule()); // Create the Http service _httpService = new HttpService(_moduleManager); _httpService.InterfaceAddress = _interfaceAddress; _httpService.Start(); } Logger.WriteInfo(this, "Service Manager started all services"); }
private void OnMessageReceived(SocketChannel channel, HttpMessage message) { //Logger.WriteDebug(this, "Pipeline => OnMessageReceived"); _service = this; var context = new HttpContext { Application = ApplicationInfo, Channel = channel, Items = new MemoryItemStorage(), Request = (IHttpRequest)message, Response = ((IHttpRequest)message).CreateResponse() }; context.Request.RemoteEndPoint = channel.RemoteEndpoint; context.Response.AddHeader("X-Powered-By", "MicroServer"); _moduleManager.InvokeAsync(context, SendResponse); }