private TreeNodeViewModel CreateWebServerNode(TreeNodeViewModel parentNode, WebServerSettings settings) { TreeNodeViewModel treeNode = new TreeNodeViewModel() { IsExpanded = false, NodeIcon = WEB_SERVICE_ICON, NodeText = settings.Name, NodeToolTip = settings.HttpHost, NodePayload = settings }; treeNode.ContextMenuItems.Add(new MenuItemViewModel() { MenuItemHeader = "Configure settings", MenuItemIcon = SETTINGS_FILE_ICON, MenuItemCommand = new RelayCommand(ConfigureWebServer), MenuItemPayload = treeNode }); treeNode.ContextMenuItems.Add(new MenuItemViewModel() { MenuItemHeader = "Create new catalog", MenuItemIcon = ADD_CATALOG_ICON, MenuItemCommand = new RelayCommand(CreateWebCatalog), MenuItemPayload = treeNode }); treeNode.ContextMenuItems.Add(new MenuItemViewModel() { MenuItemHeader = "Create new script", MenuItemIcon = DATABASE_SCRIPT_ICON, MenuItemCommand = new RelayCommand(CreateWebScript), MenuItemPayload = treeNode }); parentNode.TreeNodes.Add(treeNode); return treeNode; }
private void SaveWebServerScript(WebServerSettings settings, string json) { string catalogPath = Path.Combine(Module.WebServersCatalogPath, settings.Name); DirectoryInfo catalog = new DirectoryInfo(catalogPath); if (!catalog.Exists) { MessageBox.Show($"Catalog \"{catalogPath}\" is not found !", "1C#", MessageBoxButton.OK, MessageBoxImage.Error); return; } string settingsFilePath = Path.Combine(catalog.FullName, SETTINGS_FILE_NAME); if (!File.Exists(settingsFilePath)) { MessageBox.Show($"File \"{settingsFilePath}\" is not found !", "1C#", MessageBoxButton.OK, MessageBoxImage.Error); return; } WebServerSettings newSettings = JsonSerializer.Deserialize<WebServerSettings>(json); string newCatalogPath = Path.Combine(Module.WebServersCatalogPath, newSettings.Name); if (Directory.Exists(newCatalogPath)) { MessageBox.Show($"Catalog \"{newCatalogPath}\" already exists !", "1C#", MessageBoxButton.OK, MessageBoxImage.Error); return; } settings.Name = newSettings.Name; settings.HttpHost = newSettings.HttpHost; SaveWebServerSettings(settings, settingsFilePath); Directory.Move(catalogPath, newCatalogPath); TreeNodeViewModel treeNode = FindTreeNode(settings); if (treeNode != null) { treeNode.NodeText = settings.Name; treeNode.NodeToolTip = settings.HttpHost; } }
private void AttachWebServer(object parameter) { if (!(parameter is TreeNodeViewModel parentNode)) return; InputStringDialog dialog = new InputStringDialog() { Title = "Web server name" }; _ = dialog.ShowDialog(); if (dialog.Result == null) return; string catalogName = Path.Combine(Module.WebServersCatalogPath, (string)dialog.Result); DirectoryInfo catalog = new DirectoryInfo(catalogName); if (catalog.Exists) { MessageBox.Show($"Catalog \"{catalogName}\" already exists !", "1C#", MessageBoxButton.OK, MessageBoxImage.Exclamation); return; } catalog.Create(); WebServerSettings settings = new WebServerSettings() { Name = catalog.Name }; string settingsFilePath = Path.Combine(catalog.FullName, SETTINGS_FILE_NAME); SaveWebServerSettings(settings, settingsFilePath); TreeNodeViewModel treeNode = CreateWebServerNode(parentNode, settings); treeNode.IsExpanded = true; }
public static void SendPOST() { var ss = new WebServerSettings() { Port = 9090, UseSSL = false, UseBasicAuthorization = false }; var rs = new RequestSettings() { ServerAddress = "localhost:9090", TimeoutMSec = 5000, UseSSL = false, UseBasicAuthorization = false, UserId = null, Password = null }; using (var server = new TestWebServer()) { server.Settings = ss; server.Start(); var req = new TestPOSTRequest(rs); var ok = req.Process(); if (!ok) { throw new ApplicationException("SendPOST() failed. LastError=" + req.LastError); } } }
public QueryEditorViewModel(IShell shell, WebServerSettings settigns, string fileFullPath, IMetadataService metadata, IScriptingService scripting) { if (shell == null) { throw new ArgumentNullException(nameof(shell)); } if (settigns == null) { throw new ArgumentNullException(nameof(settigns)); } if (scripting == null) { throw new ArgumentNullException(nameof(scripting)); } if (string.IsNullOrWhiteSpace(fileFullPath)) { throw new ArgumentNullException(nameof(fileFullPath)); } Shell = shell; Settings = settigns; Metadata = metadata; Scripting = scripting; FileFullPath = fileFullPath; ExecuteCommand = new RelayCommand(Execute); TranslateCommand = new RelayCommand(Translate); }
private void TranslateScript(object parameter) { if (!(parameter is TreeNodeViewModel parentNode)) return; WebServerSettings settings = GetWebServerSettingsForScriptNode(parentNode); if (settings == null) { MessageBox.Show("Web server settings not found!", "1C#", MessageBoxButton.OK, MessageBoxImage.Warning); return; } string scriptName = parentNode.NodeText; string catalogPath = (string)parentNode.NodePayload; string scriptFullName = Path.Combine(Module.WebServersCatalogPath, catalogPath, scriptName); if (!File.Exists(scriptFullName)) { MessageBox.Show($"Script \"{scriptFullName}\" not found !", "1C#", MessageBoxButton.OK, MessageBoxImage.Exclamation); return; } // read script file string script = File.ReadAllText(scriptFullName); // open script for execution QueryEditorView view = new QueryEditorView() { DataContext = new QueryEditorViewModel(Module.Shell, settings, scriptFullName, MetadataService, ScriptingService) { QueryScript = script } }; Module.Shell.AddTabItem(scriptName, view); }
public override string Start() { PhysicalDirectory.Refresh(); if (!PhysicalDirectory.Exists) { throw new DirectoryNotFoundException(PhysicalDirectory.FullName); } SetUserPermission(Users, PhysicalDirectory); _settings = new WebServerSettings(); _settings.RootPhysicalPath = PhysicalDirectory.FullName; using (var server = new WebServerIIS(_settings)) { server.Start(); var application = server.DefaultWebSite.Applications.Add("/" + VirtualPath, PhysicalDirectory.FullName); server.ServerManager.CommitChanges(); Thread.Sleep(IISDelay); return server.DefaultWebSite.GetHttpVirtualPath() + application.Path; } }
public static void SendPOST_AuthFailed() { var ss = new WebServerSettings() { Port = 9090, UseSSL = false, UseBasicAuthorization = true }; var rs = new RequestSettings() { ServerAddress = "localhost:9090", TimeoutMSec = 5000, UseSSL = false, UseBasicAuthorization = true, UserId = "test", Password = "******" }; using (var server = new TestWebServer()) { server.Settings = ss; server.Start(); var req = new TestPOSTRequest(rs); var ok = req.Process(); if (ok) { throw new ApplicationException("SendPOST()_AuthFailed failed"); } if (string.IsNullOrEmpty(req.LastError)) { throw new ApplicationException("SendPOST()_AuthFailed failed"); } } }
private WebServerSettings LoadWebServerSettings(string settingsFilePath) { byte[] json = File.ReadAllBytes(settingsFilePath); Utf8JsonReader reader = new Utf8JsonReader(json); WebServerSettings settings = JsonSerializer.Deserialize<WebServerSettings>(ref reader); return settings; }
private void EnsureServer(DocumentReference serverLocation) { if (this.serverHandle.HasValue && !this.webServerService.IsServerReachable(this.serverHandle.Value, SilverlightProject.CassiniTimeout)) { this.webServerService.StopBrowsingSession(this.serverHandle.Value); this.serverHandle = null; } ISolution currentSolution = base.Services.ProjectManager().CurrentSolution; if (!this.serverHandle.HasValue && currentSolution != null) { WebServerSettings webServerSetting = new WebServerSettings(serverLocation.Path); object projectProperty = currentSolution.SolutionSettingsManager.GetProjectProperty(this, "Port"); if (projectProperty is int && this.IsPortAvailable((int)projectProperty)) { webServerSetting.Port = (int)projectProperty; } this.serverHandle = new int?(this.webServerService.StartServer(webServerSetting)); } if (this.serverHandle.HasValue && currentSolution != null) { string sessionAddress = this.webServerService.GetSessionAddress(this.serverHandle.Value); if (!string.IsNullOrEmpty(sessionAddress)) { Uri uri = new Uri(sessionAddress, UriKind.Absolute); if (uri.Port >= 0) { currentSolution.SolutionSettingsManager.SetProjectProperty(this, "Port", uri.Port); } } } }
static bool StartServer() { if (started) { return(false); } try { WebServerSettings webSettings = (WebServerSettings)ConfigurationSettings.GetConfig("Xeon"); srv = new Netron.Xeon.WebServer(webSettings.ServerPort); #if DEBUG //add static pages in flat format, you can use embedded resources as well, see below // string sPath = Path.GetDirectoryName(Application.ExecutablePath); // sPath = Path.Combine(sPath, @"..\..\view"); // sPath = Path.GetFullPath(sPath); ContentLocationResolver clr = new ContentLocationResolver(webSettings.StaticContent, ""); srv.AddResolver(clr, 10, 20); XsltServletPage.DebugReload = webSettings.XmlDebugReload; //sPath = Path.GetFullPath(Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), @"..\xmldeb")); XsltServletPage.XMLDumpPath = webSettings.XmlDumpPath; #else EmbeddedLocationResolver elr = new EmbeddedLocationResolver(Assembly.GetExecutingAssembly(), "ImageViewerExample.view", "view"); srv.AddResolver(elr, 10, 20); #endif EmbeddedLocationResolver elr = new EmbeddedLocationResolver(Assembly.GetAssembly(typeof(EmbeddedLocationResolver)), "Netron.Neon.Actinium.Xeon.Resources", "Resources"); srv.AddResolver(elr, 10, 20); //add dynamic content ServletResolver sr = new ServletResolver(); //could be a separate assembly, here the resolvers are in the control library string[] assems = webSettings.Servlets; Assembly ass; for (int k = 0; k < assems.Length; k++) { ass = Assembly.LoadFile(assems[k]); sr.AddAllPages(ass); } srv.AddResolver(sr, 2, 10); //10,20 MyComputerResolver res = new MyComputerResolver(); srv.AddResolver(res, 10, 20); srv.Start(); started = true; return(true); } catch (Exception exc) { System.Diagnostics.Trace.WriteLine("The exception causing the boot process to stop was:\n" + exc.Message, "Critical"); return(false); } }
private TreeNodeViewModel FindTreeNode(WebServerSettings settings) { foreach (TreeNodeViewModel treeNode in RootNode.TreeNodes) { if (treeNode.NodePayload == settings) return treeNode; } return null; }
internal static void Initialize() { IConfigurationManager configurationManager = new ConfigurationManagerWrapper(); IWebProjectPathFinder webProjectPathFinder = new WebProjectPathFinder(); IWebServerSettings webServerSettings = new WebServerSettings(configurationManager, webProjectPathFinder); WebServerFactory.Initialize(webServerSettings); WebServerFactory.RegisterWebServer<IISExpressWebServer>(); WebServerFactory.RegisterWebServer<RemoteWebServer>(); }
internal static void Initialize() { IConfigurationManager configurationManager = new ConfigurationManagerWrapper(); IWebProjectPathFinder webProjectPathFinder = new WebProjectPathFinder(); IWebServerSettings webServerSettings = new WebServerSettings(configurationManager, webProjectPathFinder); WebServerFactory.Initialize(webServerSettings); WebServerFactory.RegisterWebServer <IISExpressWebServer>(); WebServerFactory.RegisterWebServer <RemoteWebServer>(); }
public static void CheckProperties(WebServerSettings settings) { TestUtilities.TestProperty(settings, "AuthenticationScheme", AuthenticationSchemes.Anonymous, AuthenticationSchemes.Basic); TestUtilities.TestProperty(settings, "AutoStartUPnP", false); TestUtilities.TestProperty(settings, "BasicAuthenticationUser", null, "Bb"); TestUtilities.TestProperty(settings, "BasicAuthenticationPasswordHash", null, new Hash()); TestUtilities.TestProperty(settings, "EnableUPnp", false); TestUtilities.TestProperty(settings, "IsOnlyInternetServerOnLan", true); TestUtilities.TestProperty(settings, "UPnpPort", 80, 99); }
public MockWebServer(WebServerSettings settings, Dependencies dependencies) { _type = "MockWebServer"; if (dependencies != null) { _fileSystem = dependencies.FileSystem; _environmentSystem = dependencies.EnvironmentSystem; _processRunner = dependencies.ProcessRunner; _serverManagerProvider = dependencies.ServerManagerProvider; } }
private byte[] SerializeWebServerSettings(WebServerSettings settings) { // do not encode any characters for web transfer JavaScriptEncoder encoder = JavaScriptEncoder.Create(new UnicodeRange(0, 0xFFFF)); // 65535 JsonSerializerOptions options = new JsonSerializerOptions() { Encoder = encoder, WriteIndented = true }; return JsonSerializer.SerializeToUtf8Bytes(settings, options); }
public static void CheckProperties(WebServerSettings settings) { Assert.AreEqual(0, settings.BasicAuthenticationUserIds.Count); TestUtilities.TestProperty(settings, r => r.AuthenticationScheme, AuthenticationSchemes.Anonymous, AuthenticationSchemes.Basic); TestUtilities.TestProperty(settings, r => r.AutoStartUPnP, false); TestUtilities.TestProperty(settings, r => r.BasicAuthenticationUser, null, "Bb"); TestUtilities.TestProperty(settings, r => r.BasicAuthenticationPasswordHash, null, new Hash()); TestUtilities.TestProperty(settings, r => r.ConvertedUser, false); TestUtilities.TestProperty(settings, r => r.EnableUPnp, false); TestUtilities.TestProperty(settings, r => r.IsOnlyInternetServerOnLan, true); TestUtilities.TestProperty(settings, r => r.UPnpPort, 80, 99); }
public void MultipleBrowsersTest() { // Arrange const string webSiteName = "TestEasyWAP"; // Create server object WebServerSettings settings = new WebServerSettings { HostName = Environment.MachineName, // machine anme or empty (in this case localhost will be used) RootPhysicalPath = TestEasyHelpers.Tools.GetUniqueTempPath(webSiteName) // needed only when web server type is IISExpress }; WebServer server = WebServer.Create("IISExpress", settings); WebApplicationInfo appInfo = server.CreateWebApplication(webSiteName); server.DeployWebApplication(appInfo.Name, new List <DeploymentItem> { new DeploymentItem { Type = DeploymentItemType.Directory, Path = webSiteName } }); server.BuildWebApplication(webSiteName); // create browser object using (BrowserManager browserManager = new BrowserManager()) { List <IWebDriver> myBrowsers = new List <IWebDriver> { browserManager.CreateBrowser(remote: false), browserManager.CreateBrowser(remote: false), browserManager.CreateBrowser(remote: false) }; foreach (var browser in myBrowsers) { // Act browser.Navigate().GoToUrl(appInfo.VirtualPath + "/SamplePostWebForm.aspx"); browser.FindElement(By.Id("Button1")).Click(); browser.WaitForPageLoaded(); // Assert Assert.AreEqual("[Clicked!]", browser.FindElement(By.Id("TextBox1")).GetAttribute("value")); } } }
private void CreateWebScript(object parameter) { if (!(parameter is TreeNodeViewModel parentNode)) return; WebServerSettings settings = GetWebServerSettingsForScriptNode(parentNode); if (settings == null) { MessageBox.Show("Web server settings not found!", "1C#", MessageBoxButton.OK, MessageBoxImage.Warning); return; } // ask for query file name InputStringDialog dialog = new InputStringDialog() { Title = "Script name" }; _ = dialog.ShowDialog(); if (dialog.Result == null) return; string scriptName = (string)dialog.Result; string catalogPath; if (parentNode.NodePayload is WebServerSettings) { catalogPath = parentNode.NodeText; } else { catalogPath = (string)parentNode.NodePayload; } string scriptFullName = Path.Combine(Module.WebServersCatalogPath, catalogPath, $"{scriptName}.qry"); if (File.Exists(scriptFullName)) { MessageBox.Show($"Script \"{scriptFullName}\" already exists !", "1C#", MessageBoxButton.OK, MessageBoxImage.Exclamation); return; } // create query file on the disk _ = File.Create(scriptFullName); CreateScriptNode(parentNode, $"{scriptName}.qry"); // open script for editing QueryEditorView view = new QueryEditorView() { DataContext = new QueryEditorViewModel(Module.Shell, settings, scriptFullName, MetadataService, ScriptingService) { QueryScript = "" } }; Module.Shell.AddTabItem($"{scriptName}.qry", view); }
/// <summary> /// Deserializes the data. /// </summary> private void DeserializeData() { if (File.Exists(this.CurrentNotificationSettingsPath + @"\" + _notificationSettingsFileName)) { this.NotificationData = this._xmlSerializer.Desirialize(this.CurrentNotificationSettingsPath + @"\" + _notificationSettingsFileName); } if (File.Exists(this.CurrentNotificationSettingsPath + @"\" + _webServerXmlSerilaizationFile)) { this.WebServerSettings = this._xmlSerializerWebserverSettings.Desirialize(this.CurrentNotificationSettingsPath + @"\" + _webServerXmlSerilaizationFile); } }
public void WhenCreate_IfCustomWebserverAndWebSiteProvided_ShouldCreate() { // Arrange _mock.MockWebServer() .MockWebServerInstantiateFromCurrentAssembly() .MockWebServerCreateWithWebSiteProvided() .MockWebServerCreate_RemoteFalse(); TestEasyHelpers.Tools = _mock.ToolsHelper.Object; // Act var settings = new WebServerSettings(); var server = WebServer.Create(_mock.MockWebServerName, _mock.MockCreateWebSiteName, settings, _dependencies); // Assert Assert.Equal(_mock.MockWebServerName, server.Type); Assert.Equal(_mock.MockCreateWebSiteName, settings.WebAppName); Assert.Equal("localhost", settings.HostName); Assert.Equal(100000, settings.StartupTimeout); }
public WebServer CreateWebServer(string websiteName = "") { var webServerType = (WebServerType)Enum.Parse(typeof(WebServerType), TestEasyConfig.WebServer.Type); if (TestEasyConfig.Client.Remote && webServerType == WebServerType.IISExpress) { throw new NotSupportedException("For tests using remote browsers, IISExpress web server type is not supported at this moment."); } var settings = new WebServerSettings { HostName = TestEasyConfig.Client.Remote ? Environment.MachineName : "", RootPhysicalPath = (webServerType == WebServerType.IISExpress) ? TestEasyUtils.GetUniqueTempPath(websiteName) : "" }; return WebServer.Create(webServerType, settings); }
public WebServer CreateWebServer(string websiteName = "") { var webServerType = (WebServerType)Enum.Parse(typeof(WebServerType), TestEasyConfig.WebServer.Type); if (TestEasyConfig.Client.Remote && webServerType == WebServerType.IISExpress) { throw new NotSupportedException("For tests using remote browsers, IISExpress web server type is not supported at this moment."); } var settings = new WebServerSettings { HostName = TestEasyConfig.Client.Remote ? Environment.MachineName : "", RootPhysicalPath = (webServerType == WebServerType.IISExpress) ? TestEasyUtils.GetUniqueTempPath(websiteName) : "" }; return(WebServer.Create(webServerType, settings)); }
public void CustomServerAndBrowserUsingConfigTest() { // Arrange const string webSiteName = "TestEasyWAP"; // Create server using Config settings WebServerSettings settings = new WebServerSettings { HostName = TestEasyConfig.Instance.Client.Remote ? Environment.MachineName : "", RootPhysicalPath = (TestEasyConfig.Instance.WebServer.Type.Equals("IISExpress", StringComparison.InvariantCultureIgnoreCase)) ? TestEasyHelpers.Tools.GetUniqueTempPath(webSiteName) : "" }; WebServer server = WebServer.Create(TestEasyConfig.Instance.WebServer.Type, settings); WebApplicationInfo appInfo = server.CreateWebApplication(webSiteName); server.DeployWebApplication(appInfo.Name, new List <DeploymentItem> { new DeploymentItem { Type = DeploymentItemType.Directory, Path = webSiteName } }); server.BuildWebApplication(webSiteName); // create browser object using config settings using (var browserManager = new BrowserManager()) { var browser = browserManager.CreateBrowser(); // Act browser.Navigate().GoToUrl(appInfo.VirtualPath + "/SamplePostWebForm.aspx"); browser.FindElement(By.XPath("//input[@name='Button1']")).Click(); browser.WaitForPageLoaded(); // Assert Assert.AreEqual("[Clicked!]", browser.FindElement(By.Id("TextBox1")).GetAttribute("value")); } }
/// <summary> /// Initializes a new instance of the <see cref="SettingsViewModel" /> class. /// </summary> public SettingsViewModel() { this.CurrentAssemblyPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); this._xmlSerializer = new XmlNotificationDataSerializerService(); this._xmlSerializerWebserverSettings = new XmlWebServerSettingsSerializerService(); this.NotificationData = new NotificationData(); this._webServerSettings = new WebServerSettings(); if (CurrentAssemblyPath != null) { this.CurrentNotificationSettingsPath = Path.Combine(CurrentAssemblyPath, "Settings"); this.CurrentWebRootpath = Path.Combine(CurrentAssemblyPath, "Webroot"); } this.SerializeDataCommand = new ActionCommand(this.SerializeData); this.DeserializeCommand = new DelegateCommand(this.DeserializeData); //If we have already a file, go and get it! this.DeserializeData(); }
public override string Start() { PhysicalDirectory.Refresh(); if (!PhysicalDirectory.Exists) { throw new DirectoryNotFoundException(PhysicalDirectory.FullName); } SetUserPermission(Users, PhysicalDirectory); var settings = new WebServerSettings(); settings.RootPhysicalPath = PhysicalDirectory.FullName; _server = new WebServerIISExpress(settings); var application = _server.DefaultWebSite.Applications.Add("/" + VirtualPath, PhysicalDirectory.FullName); _server.ServerManager.CommitChanges(); Thread.Sleep(IISDelay); return(_server.DefaultWebSite.GetHttpVirtualPath() + application.Path); }
private void LoadCatalogStructure(DirectoryInfo catalog, TreeNodeViewModel parentNode, bool isServerLevel) { if (!catalog.Exists) return; TreeNodeViewModel catalogNode = null; DirectoryInfo[] catalogs = catalog.GetDirectories(); foreach (DirectoryInfo directory in catalogs) { if (isServerLevel) { WebServerSettings settings; string settingsFilePath = Path.Combine(directory.FullName, SETTINGS_FILE_NAME); if (File.Exists(settingsFilePath)) { settings = LoadWebServerSettings(settingsFilePath); } else { settings = new WebServerSettings() { Name = directory.Name }; SaveWebServerSettings(settings, settingsFilePath); } catalogNode = CreateWebServerNode(parentNode, settings); } else { catalogNode = CreateCatalogNode(parentNode, directory.Name); } LoadCatalogStructure(directory, catalogNode, false); FileInfo[] files = directory.GetFiles(QUERY_FILE_SEARCH_PATTERN); foreach (FileInfo file in files) { CreateScriptNode(catalogNode, file.Name); } } }
public void TestInitialise() { _Implementation = new WebServerSettings(); }
public WebServerViewModel(WebServerSettings model) { Model = model ?? throw new ArgumentNullException(nameof(model)); }
private void SaveWebServerSettings(WebServerSettings settings, string settingsFilePath) { byte[] json = SerializeWebServerSettings(settings); File.WriteAllBytes(settingsFilePath, json); }
public void WhenCreate_IfCustomWebserverAndWebSiteProvidedAndRemoteTrue_ShouldCreate() { // Arrange _mock.MockWebServer() .MockWebServerInstantiateFromCurrentAssembly() .MockWebServerCreateWithWebSiteProvidedRemoteTrue() .MockWebServerCreate_RemoteTrue(); TestEasyHelpers.Tools = _mock.ToolsHelper.Object; // Act var settings = new WebServerSettings(); var server = WebServer.Create(_mock.MockWebServerName, _mock.MockCreateWebSiteName, settings, _dependencies); // Assert Assert.Equal(_mock.MockWebServerName, server.Type); Assert.Equal(_mock.MockCreateWebSiteName, settings.WebAppName); Assert.Equal(_mock.MockMachineName, settings.HostName); Assert.Equal(100000, settings.StartupTimeout); }