public SynologyConnection(ISynologyConnectionSettings settings) { Settings = settings; var factory = new LoggerFactory(); Logger = factory.CreateLogger <SynologyConnection>(); Logger.LogDebug($"Creating new connection to {Settings.BaseHost} with{(Settings.SslEnabled ? "" : "out")} SSL to port {Settings.Port}"); _client = new HttpClient { BaseAddress = new Uri(Settings.WebApiUrl), }; _client.DefaultRequestHeaders.ExpectContinue = false; var builder = new ContainerBuilder(); builder.RegisterInstance(this).As <SynologyConnection>(); _container = builder.Build(); _containerScope = _container.BeginLifetimeScope(); }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure( IApplicationBuilder app, IHostingEnvironment env, ISynologyConnection connection, ISynologyConnectionSettings synologyConnectionSettings) { if (env.IsDevelopment()) { app.UseBrowserLink(); app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Home/Error"); } app.UseStaticFiles(); connection.Api().Auth().Login(new LoginParameters { Username = synologyConnectionSettings.Username, Password = synologyConnectionSettings.Password }); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); }
/// <summary> /// /// </summary> /// <param name="settings"></param> /// <param name="loggerFactory"></param> /// <param name="serviceProvider"></param> /// <param name="httpClient"></param> public SynologyConnection(ISynologyConnectionSettings settings, ILoggerFactory loggerFactory, IServiceProvider serviceProvider, SynologyHttpClient httpClient) { Settings = settings; ServiceProvider = serviceProvider; Logger = loggerFactory.CreateLogger <SynologyConnection>(); Logger.LogDebug($"Creating new connection to {Settings.BaseHost} with{(Settings.Ssl ? "" : "out")} SSL to port {Settings.Port}"); httpClient.BaseAddress = new Uri(Settings.WebApiUrl); Client = httpClient; }
/// <summary> /// Initializes a new instance of the <see cref="T:Synology.SynologyConnection"/> class. /// </summary> /// <param name="settings">Settings.</param> /// <param name="sidContainer">Sid container.</param> /// <param name="loggerFactory">Logger factory.</param> /// <param name="serviceProvider">Service provider.</param> /// <param name="client">Client.</param> /// <param name="clientHandler">Client.</param> public SynologyConnection(ISynologyConnectionSettings settings, SidContainer sidContainer, ILoggerFactory loggerFactory, IServiceProvider serviceProvider, HttpClient client, HttpClientHandler clientHandler) { Settings = settings; SidContainer = sidContainer; ServiceProvider = serviceProvider; Logger = loggerFactory.CreateLogger <SynologyConnection>(); Logger.LogDebug($"Creating new connection to {Settings.BaseHost} with{(Settings.Ssl ? "" : "out")} SSL to port {Settings.Port}"); ClientHandler = clientHandler; Client = client; Client.BaseAddress = new Uri(Settings.WebApiUrl); Client.DefaultRequestHeaders.ExpectContinue = false; }
public async Task <bool> ConnectUser(string url, string username, string password) { try { Regex r = new Regex(@"^(?<proto>\w+)://[^/]+?(?<port>:\d+)?/", RegexOptions.None, TimeSpan.FromMilliseconds(150)); Match m = r.Match(url); if (m.Success) { Console.WriteLine(m.Result("${proto}${port}")); int port = 80; if (string.IsNullOrEmpty(m.Groups["port"].Value)) { port = (m.Groups["proto"].Value == "https") ? 443 : 80; } else { port = int.Parse(m.Groups["port"].Value.Replace(":", "")); } Uri uri = new Uri(url); settingsSave = _scope.ServiceProvider.GetService <ISynologyConnectionSettings>(); settingsSave.BaseHost = uri.Host; settingsSave.Ssl = (m.Groups["proto"].Value == "https"); settingsSave.Port = port; settingsSave.SslPort = port; settingsSave.Username = username; settingsSave.Password = password; settingsSave.SessionName = "SynoConnect"; ISynologyConnection syno = _scope.ServiceProvider.GetService <ISynologyConnection>(); ResultData <IAuthResult> resLogin = await syno.Api().Auth().LoginAsync(); if (resLogin.Error == null || (resLogin.Error != null && resLogin.Error.Code == 403)) { return(true); } } } catch (Exception e) { Console.WriteLine(e.Message); } return(false); }
public static SynologyConnection Create(ISynologyConnectionSettings settings) { return(new SynologyConnection(settings)); }