コード例 #1
0
        public ProxyServer()
        {
            System.Net.ServicePointManager.Expect100Continue      = false;
            System.Net.WebRequest.DefaultWebProxy                 = null;
            System.Net.ServicePointManager.DefaultConnectionLimit = 10;
            ServicePointManager.DnsRefreshTimeout                 = 3 * 60 * 1000;//3 minutes
            ServicePointManager.MaxServicePointIdleTime           = 3 * 60 * 1000;

            ServicePointManager.ServerCertificateValidationCallback = delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
            {
                if (sslPolicyErrors == SslPolicyErrors.None)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            };

            NetFrameworkHelper.URLPeriodFix();
        }
コード例 #2
0
ファイル: ProxyServer.cs プロジェクト: masums/Titanium
        public static void Initialize()
        {
            ServicePointManager.Expect100Continue       = false;
            WebRequest.DefaultWebProxy                  = null;
            ServicePointManager.DefaultConnectionLimit  = 10;
            ServicePointManager.DnsRefreshTimeout       = 3 * 60 * 1000; //3 minutes
            ServicePointManager.MaxServicePointIdleTime = 3 * 60 * 1000;

            //HttpWebRequest certificate validation callback
            ServicePointManager.ServerCertificateValidationCallback =
                delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
            {
                if (sslPolicyErrors == SslPolicyErrors.None)
                {
                    return(true);
                }
                return(false);
            };

            //Fix a bug in .NET 4.0
            NetFrameworkHelper.UrlPeriodFix();
            //useUnsafeHeaderParsing
            NetFrameworkHelper.ToggleAllowUnsafeHeaderParsing(true);
        }
コード例 #3
0
        private static void InitializeConnection()
        {
            _connection = new HubConnection(Configuration.ServantIoHost,
                                            new Dictionary <string, string>()
            {
                { "installationGuid", Configuration.InstallationGuid.ToString() },
                { "organizationGuid", Configuration.ServantIoKey },
                { "servername", Environment.MachineName },
                { "version", Configuration.Version.ToString() },
            });

            _myHub = _connection.CreateHubProxy("ServantClientHub");

            _myHub.On <CommandRequest>("Request", request =>
            {
                switch (request.Command)
                {
                case CommandRequestType.Unauthorized:
                    IsStopped = true;
                    MessageHandler.LogException("Servant.io key was not recognized.");
                    _connection.Stop();
                    break;

                case CommandRequestType.GetSites:
                    var sites  = SiteManager.GetSites();
                    var result = Json.SerializeToString(sites);
                    ReplyOverHttp(new CommandResponse(request.Guid)
                    {
                        Message = result,
                        Success = true
                    });
                    break;

                case CommandRequestType.UpdateSite:
                    var site = Json.DeserializeFromString <Site>(request.JsonObject);

                    var originalSite = SiteManager.GetSiteByName(request.Value);

                    if (originalSite == null)
                    {
                        ReplyOverHttp(new CommandResponse(request.Guid)
                        {
                            Message =
                                Json.SerializeToString(new ManageSiteResult
                            {
                                Result = SiteResult.SiteNameNotFound
                            }),
                            Success = false
                        });
                        return;
                    }

                    var validationResult = Validators.ValidateSite(site, originalSite);
                    if (validationResult.Errors.Any())
                    {
                        ReplyOverHttp(new CommandResponse(request.Guid)
                        {
                            Message = Json.SerializeToString(validationResult)
                        });
                        return;
                    }

                    site.IisId = originalSite.IisId;

                    var updateResult = SiteManager.UpdateSite(site);

                    ReplyOverHttp(new CommandResponse(request.Guid)
                    {
                        Message = Json.SerializeToString(updateResult),
                        Success = true
                    });
                    break;

                case CommandRequestType.GetAll:
                    ReplyOverHttp(new CommandResponse(request.Guid)
                    {
                        Message = Json.SerializeToString(new AllResponse
                        {
                            Sites                  = SiteManager.GetSites().ToList(),
                            FrameworkVersions      = NetFrameworkHelper.GetAllVersions().ToList(),
                            ApplicationPools       = SiteManager.GetApplicationPools(),
                            Certificates           = SiteManager.GetCertificates().ToList(),
                            DefaultApplicationPool = SiteManager.GetDefaultApplicationPool()
                        }),
                        Success = true
                    });
                    break;

                case CommandRequestType.GetApplicationPools:
                    var appPools = SiteManager.GetApplicationPools();
                    ReplyOverHttp(new CommandResponse(request.Guid)
                    {
                        Message = Json.SerializeToString(appPools),
                        Success = true
                    });
                    break;

                case CommandRequestType.GetCertificates:
                    ReplyOverHttp(new CommandResponse(request.Guid)
                    {
                        Message = Json.SerializeToString(SiteManager.GetCertificates()),
                        Success = true
                    });
                    break;

                case CommandRequestType.StartSite:
                    var startSite   = SiteManager.GetSiteByName(request.Value);
                    var startResult = SiteManager.StartSite(startSite);

                    ReplyOverHttp(new CommandResponse(request.Guid)
                    {
                        Success = startResult == SiteStartResult.Started,
                        Message = Json.SerializeToString(startResult)
                    });
                    break;

                case CommandRequestType.StopSite:
                    var stopSite = SiteManager.GetSiteByName(request.Value);
                    SiteManager.StopSite(stopSite);
                    ReplyOverHttp(new CommandResponse(request.Guid)
                    {
                        Success = true
                    });
                    break;

                case CommandRequestType.RestartSite:
                    var restartSite = SiteManager.GetSiteByName(request.Value);
                    SiteManager.RestartSite(restartSite.IisId);
                    ReplyOverHttp(new CommandResponse(request.Guid)
                    {
                        Message = "ok", Success = true
                    });
                    break;

                case CommandRequestType.DeleteSite:
                    var deleteSite = SiteManager.GetSiteByName(request.Value);
                    SiteManager.DeleteSite(deleteSite.IisId);
                    ReplyOverHttp(new CommandResponse(request.Guid)
                    {
                        Message = "ok", Success = true
                    });
                    break;

                case CommandRequestType.CreateSite:
                    var createSite   = Json.DeserializeFromString <Site>(request.JsonObject);
                    var createResult = SiteManager.CreateSite(createSite);
                    ReplyOverHttp(new CommandResponse(request.Guid)
                    {
                        Message = Json.SerializeToString(createResult),
                        Success = true
                    });
                    break;

                case CommandRequestType.ForceUpdate:
                    Servant.Update();
                    ReplyOverHttp(new CommandResponse(request.Guid)
                    {
                        Message = "Started", Success = true
                    });
                    break;

                case CommandRequestType.DeploySite:
                    ReplyOverHttp(new CommandResponse(request.Guid)
                    {
                        Message = "ok", Success = true
                    });
                    Deployer.Deploy(request.Value, Json.DeserializeFromString <string>(request.JsonObject));
                    break;

                case CommandRequestType.CmdExeCommand:
                    if (!Configuration.DisableConsoleAccess)
                    {
                        var manager = TinyIoCContainer.Current.Resolve <ConsoleManager>();
                        manager.SendCommand(request.Value);
                    }
                    break;

                case CommandRequestType.UpdateApplicationPool:
                    var applicationPool = Json.DeserializeFromString <ApplicationPool>(request.JsonObject);
                    var originalName    = request.Value;
                    SiteManager.UpdateApplicationPool(originalName, applicationPool);
                    ReplyOverHttp(new CommandResponse(request.Guid)
                    {
                        Success = true
                    });
                    break;

                case CommandRequestType.StartApplicationPool:
                    SiteManager.StartApplicationPool(request.Value);
                    ReplyOverHttp(new CommandResponse(request.Guid)
                    {
                        Success = true
                    });
                    break;

                case CommandRequestType.StopApplicationPool:
                    SiteManager.StopApplicationPool(request.Value);
                    ReplyOverHttp(new CommandResponse(request.Guid)
                    {
                        Success = true
                    });
                    break;

                case CommandRequestType.RecycleApplicationPool:
                    SiteManager.RecycleApplicationPool(request.Value);
                    ReplyOverHttp(new CommandResponse(request.Guid)
                    {
                        Message = "ok", Success = true
                    });
                    break;

                case CommandRequestType.DeleteApplicationPool:
                    SiteManager.DeleteApplicationPool(request.Value);
                    ReplyOverHttp(new CommandResponse(request.Guid)
                    {
                        Message = "ok", Success = true
                    });
                    break;

                case CommandRequestType.CreateApplicationPool:
                    var applicationPoolToCreate = Json.DeserializeFromString <ApplicationPool>(request.JsonObject);
                    SiteManager.CreateApplicationPool(applicationPoolToCreate);
                    ReplyOverHttp(new CommandResponse(request.Guid)
                    {
                        Message = "ok", Success = true
                    });
                    break;
                }
            });

            _connection.StateChanged += change =>
            {
                MessageHandler.Print("State changed to: " + change.NewState);
                if (change.NewState == ConnectionState.Disconnected)
                {
                    Connect();
                }
            };

            _connection.Error += exception =>
            {
                MessageHandler.LogException(exception.Message + Environment.NewLine + exception.StackTrace);

                try
                {
                    var exceptionUrl = new System.Uri(Configuration.ServantIoHost + "/exceptions/log");
                    new WebClient().UploadValuesAsync(exceptionUrl, new NameValueCollection()
                    {
                        { "InstallationGuid", Configuration.InstallationGuid.ToString() },
                        { "Message", exception.Message },
                        { "Stacktrace", exception.StackTrace }
                    });
                }
                catch (Exception)
                {
                }
            };
        }