Exemplo n.º 1
0
        // node access to ghes/gh
        public async Task <bool> RunCheck(string url, string pat)
        {
            await File.AppendAllLinesAsync(_logFile, HostContext.WarnLog());

            await File.AppendAllLinesAsync(_logFile, HostContext.CheckProxy());

            // Request to github.com or ghes server
            var urlBuilder = new UriBuilder(url);

            if (UrlUtil.IsHostedServer(urlBuilder))
            {
                urlBuilder.Host = $"api.{urlBuilder.Host}";
                urlBuilder.Path = "";
            }
            else
            {
                urlBuilder.Path = "api/v3";
            }

            var checkNode = await CheckNodeJs(urlBuilder.Uri.AbsoluteUri, pat);

            var result = checkNode.Pass;
            await File.AppendAllLinesAsync(_logFile, checkNode.Logs);

            // try fix SSL error by providing extra CA certificate.
            if (checkNode.SslError)
            {
                var downloadCert = await HostContext.DownloadExtraCA(urlBuilder.Uri.AbsoluteUri, pat);

                await File.AppendAllLinesAsync(_logFile, downloadCert.Logs);

                if (downloadCert.Pass)
                {
                    var recheckNode = await CheckNodeJs(urlBuilder.Uri.AbsoluteUri, pat, extraCA : true);

                    await File.AppendAllLinesAsync(_logFile, recheckNode.Logs);

                    if (recheckNode.Pass)
                    {
                        await File.AppendAllLinesAsync(_logFile, new[] { $"{DateTime.UtcNow.ToString("O")} Fixed SSL error by providing extra CA certs." });
                    }
                }
            }

            return(result);
        }
Exemplo n.º 2
0
        // git access to ghes/gh
        public async Task <bool> RunCheck(string url, string pat)
        {
            await File.AppendAllLinesAsync(_logFile, HostContext.WarnLog());

            await File.AppendAllLinesAsync(_logFile, HostContext.CheckProxy());

            if (string.IsNullOrEmpty(_gitPath))
            {
                await File.AppendAllLinesAsync(_logFile, new[] { $"{DateTime.UtcNow.ToString("O")} Can't verify git with GitHub.com or GitHub Enterprise Server since git is not installed." });

                return(false);
            }

            var checkGit = await CheckGit(url, pat);

            var result = checkGit.Pass;
            await File.AppendAllLinesAsync(_logFile, checkGit.Logs);

            // try fix SSL error by providing extra CA certificate.
            if (checkGit.SslError)
            {
                await File.AppendAllLinesAsync(_logFile, new[] { $"{DateTime.UtcNow.ToString("O")} Try fix SSL error by providing extra CA certificate." });

                var downloadCert = await HostContext.DownloadExtraCA(url, pat);

                await File.AppendAllLinesAsync(_logFile, downloadCert.Logs);

                if (downloadCert.Pass)
                {
                    var recheckGit = await CheckGit(url, pat, extraCA : true);

                    await File.AppendAllLinesAsync(_logFile, recheckGit.Logs);

                    if (recheckGit.Pass)
                    {
                        await File.AppendAllLinesAsync(_logFile, new[] { $"{DateTime.UtcNow.ToString("O")} Fixed SSL error by providing extra CA certs." });
                    }
                }
            }

            return(result);
        }