Exemple #1
0
    private void OnGUIFileInfo(AssetBundleBuildInfo info)
    {
        EditorGUILayout.BeginHorizontal();
        if (!info.IsInAssetDataBase)
        {
            GUI.color   = Color.red;
            GUI.enabled = false;
        }
        if (info.IsMenifest)
        {
            GUI.color   = Color.green;
            GUI.enabled = false;
        }
        if (info.IsNew)
        {
            GUI.color = Color.yellow;
        }
        if (info.IsNew)
        {
            GUI.color = Color.cyan;
        }


        info.IsPublish = EditorGUILayout.ToggleLeft(info.AssetBundleName, info.IsPublish, EditorStyles.boldLabel, GUILayout.Width(150f));
        string relativePath = EnvUtil.MakeRelative(info.FullPath, AssetBundleBuildSetting.AbsoluteOutputPath);

        EditorGUILayout.LabelField(relativePath);
        EditorGUILayout.EndHorizontal();
        GUI.color   = Color.white;
        GUI.enabled = true;
    }
Exemple #2
0
        public async Task <IAdalToken> AcquireTokenWithDeviceFlowAsync(Func <DeviceCodeResult, Task> deviceCodeHandler, CancellationToken cancellationToken, ILogger logger)
        {
            var authenticationContext = new AuthenticationContext(authority, tokenCache);

            var deviceCode = await authenticationContext.AcquireDeviceCodeAsync(resource, clientId);

            cancellationToken.ThrowIfCancellationRequested();

            if (deviceCodeHandler != null)
            {
                await deviceCodeHandler(deviceCode);

                cancellationToken.ThrowIfCancellationRequested();
            }

            AuthenticationResult result = null;
            var deviceFlowTimeout       = EnvUtil.GetDeviceFlowTimeoutFromEnvironmentInSeconds(logger);
            var task = authenticationContext.AcquireTokenByDeviceCodeAsync(deviceCode);

            if (await Task.WhenAny(task, Task.Delay(deviceFlowTimeout * 1000, cancellationToken)) == task)
            {
                result = await task;
            }
            else
            {
                logger.Error(string.Format(Resources.DeviceFlowTimedOut, deviceFlowTimeout));
            }

            return(new AdalToken(result));
        }
Exemple #3
0
        static BasePluginHost()
        {
            plugins = new Dictionary <IPlugin, PluginPackAttribute>();

            string appDirectory = EnvUtil.GetBaseDirectory();

            string pluginDirectory = String.Concat(
                appDirectory,
                PluginConfig.PLUGIN_DIRECTORY);

            //清空日志
            string pluginTmpDirectory = String.Concat(appDirectory, PluginConfig.PLUGIN_TMP_DIRECTORY);

            if (!Directory.Exists(pluginTmpDirectory))
            {
                Directory.CreateDirectory(pluginTmpDirectory);
            }
            Log = new FileLogger(String.Format("{0}plugin_load.log",
                                               pluginTmpDirectory), false);
            Log.Truncate();

            if (Directory.Exists(pluginDirectory))
            {
                LoadPluginFromDirectory(pluginDirectory);
            }
            else
            {
                Directory.CreateDirectory(pluginDirectory).Create();
            }

            //加载程序集的.so文件
            loadFromAppDomain();
        }
Exemple #4
0
        public async Task <IMsalToken> AcquireTokenWithDeviceFlowAsync(Func <DeviceCodeResult, Task> deviceCodeHandler, CancellationToken cancellationToken, ILogger logger)
        {
            var deviceFlowTimeout = EnvUtil.GetDeviceFlowTimeoutFromEnvironmentInSeconds(logger);

            CancellationTokenSource cts = new CancellationTokenSource(TimeSpan.FromSeconds(deviceFlowTimeout));
            var linkedCancellationToken = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken, cts.Token).Token;

            linkedCancellationToken.ThrowIfCancellationRequested();

            var publicClient = await GetPCAAsync().ConfigureAwait(false);

            try
            {
                var msalBuilder = publicClient.AcquireTokenWithDeviceCode(new string[] { resource }, deviceCodeHandler);
                var result      = await msalBuilder.ExecuteAsync(linkedCancellationToken);

                return(new MsalToken(result));
            }
            finally
            {
                var helper = await GetMsalCacheHelperAsync();

                helper?.UnregisterCache(publicClient.UserTokenCache);
            }
        }
Exemple #5
0
        /// <summary>
        /// 升级更新
        /// </summary>
        private static int ApplyUpgrade_Core()
        {
            DirectoryInfo libDir = new DirectoryInfo(EnvUtil.GetBaseDirectory() + "/bin/");

            //初始化设置权限
            // message = "bin目录无法写入更新文件,请修改权限!";
            //return -1;
            if ((libDir.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
            {
                libDir.Attributes = libDir.Attributes & ~FileAttributes.ReadOnly;
            }
            try
            {
                //如果升级成功,执行操作
                if (OnUpgrade != null)
                {
                    OnUpgrade();
                }
            }
            catch
            {
            }

            return(1);
        }
Exemple #6
0
        internal static bool IsDebug()
        {
            bool isDebug = false;

            try
            {
                using (StreamReader fs = new StreamReader($"{EnvUtil.GetBaseDirectory()}Web.config"))
                {
                    string content;
                    Regex  reg = new Regex("<compilation[^(debug)]+debug=\"([^\"]+)\"", RegexOptions.IgnoreCase);
                    while ((content = fs.ReadLine()) != null)
                    {
                        if (reg.IsMatch(content))
                        {
                            Match m = reg.Match(content);
                            if (m.Groups[1].Value == "true")
                            {
                                isDebug = true;
                            }
                        }
                    }
                    fs.Dispose();
                }
            }
            catch (IOException exc)
            {
            }
            return(isDebug);
        }
Exemple #7
0
        /// <summary>
        /// 实例化数据库访问对象
        /// </summary>
        /// <param name="type"></param>
        /// <param name="connectionString"></param>
        public DataBaseAccess(DataBaseType type, string connectionString)
        {
            if (connectionString.IndexOf("$ROOT$") != -1)
            {
                connectionString = connectionString.Replace("$ROOT$",
                                                            EnvUtil.GetBaseDirectory());
            }

            this.DbType = type;

            switch (type)
            {
            case DataBaseType.OLEDB:
                dbDialect = new OleDbFactory(connectionString);
                break;

            case DataBaseType.SQLite:
                dbDialect = new SQLiteFactory(connectionString);
                break;

            case DataBaseType.MonoSQLite:
                throw new Exception("not implement on .net standard");

            //    dbDialect = new MonoSQLiteFactory(connectionString);
            case DataBaseType.SQLServer:
                dbDialect = new SqlServerFactory(connectionString);
                break;

            case DataBaseType.MySQL:
                dbDialect = new MySqlFactory(connectionString);
                break;
            }
        }
Exemple #8
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="workerIndent"></param>
        public PluginPackAttribute(string workerIndent)
        {
            this.WorkIndent = workerIndent;
            bool isChanged = false;
            var  dirPath   = Path.Combine(EnvUtil.GetBaseDirectory(),
                                          PluginConfig.PLUGIN_DIRECTORY,
                                          workerIndent,
                                          "/");

            if (!Directory.Exists(dirPath))
            {
                Directory.CreateDirectory(dirPath).Create();
            }

            settings = new SettingFile(string.Concat(dirPath, "plugin.config"));

            if (!settings.Contains(PluginSettingKeys.State))
            {
                settings.Set(PluginSettingKeys.State, "Normal");
                isChanged = true;
            }
            if (!settings.Contains(PluginSettingKeys.OverrideUrlIndent))
            {
                settings.Set(PluginSettingKeys.OverrideUrlIndent, "");
                isChanged = true;
            }

            if (isChanged)
            {
                settings.Flush();
            }
        }
Exemple #9
0
        public void CreateView_POST()
        {
            var tplname = string.Format("templates/{0}/{1}.{2}",
                                        CurrentSite.Tpl,
                                        Request.Form("name"),
                                        Request.Form("type") == "1" ? "part.html" : "html");

            var tplPath = string.Format("{0}/{1}",
                                        EnvUtil.GetBaseDirectory(),
                                        tplname);

            if (File.Exists(tplPath))
            {
                Response.WriteAsync("文件已经存在!");
            }
            else
            {
                try
                {
                    //global::System.IO.Directory.CreateDirectory(tplPath).Create();   //创建目录
                    File.Create(tplPath).Dispose(); //创建文件

                    Cms.Template.Reload();          //重新注册模板

                    Response.WriteAsync(tplname);
                }
                catch (Exception e)
                {
                    // Response.Write(e.Message);
                    Response.WriteAsync("无权限创建文件,请设置视图目录(templates)可写权限!");
                }
            }
        }
Exemple #10
0
        private static void Reset(string filePath, string content, bool keepBak)
        {
            var fileName = $"{EnvUtil.GetBaseDirectory()}/{filePath}";
            var file     = new FileInfo(fileName);

            try
            {
                if (keepBak && file.Exists)
                {
                    var bakFile = new FileInfo(fileName + ".bak");
                    if (bakFile.Exists)
                    {
                        bakFile.Delete();
                    }
                    File.Move(fileName, fileName + ".bak");
                }

                var data = Encoding.UTF8.GetBytes(content);

                using (var fs = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Write))
                {
                    fs.SetLength(0);
                    fs.Write(data, 0, data.Length);
                    fs.Flush();
                    fs.Dispose();
                }
            }
            catch
            {
            }
        }
Exemple #11
0
        /// <summary>
        /// 获取插件包的信息
        /// </summary>
        /// <param name="fileName"></param>
        /// <returns></returns>
        public static IEnumerable <PluginPackAttribute> GetPluginPackInfo(string fileName)
        {
            var tempDir = String.Concat(EnvUtil.GetBaseDirectory() + "/", PluginConfig.PLUGIN_TMP_DIRECTORY, "tmp/");

            if (Directory.Exists(tempDir))
            {
                Directory.Delete(tempDir, true);
            }
            Directory.CreateDirectory(tempDir).Create();

            var dir = new DirectoryInfo(tempDir);

            ZipUtility.DecompressFile(tempDir, fileName, false);

            Assembly ass;

            string[] multExt = PluginConfig.GetFilePartterns();
            foreach (String ext in multExt)
            {
                var files = dir.GetFiles(ext);
                foreach (FileInfo f in files)
                {
                    ass = Assembly.Load(File.ReadAllBytes(f.FullName));

                    var attbs = ass.GetCustomAttributes(typeof(PluginPackAttribute), false);
                    foreach (object attb in attbs)
                    {
                        if (attb is PluginPackAttribute)
                        {
                            yield return((PluginPackAttribute)attb);
                        }
                    }
                }
            }
        }
Exemple #12
0
        public async Task <IMsalToken> AcquireTokenWithUI(CancellationToken cancellationToken, ILogger logging)
        {
            var deviceFlowTimeout = EnvUtil.GetDeviceFlowTimeoutFromEnvironmentInSeconds(logging);

            CancellationTokenSource cts = new CancellationTokenSource(TimeSpan.FromSeconds(deviceFlowTimeout));
            var linkedCancellationToken = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken, cts.Token).Token;
            var publicClient            = await GetPCAAsync(useLocalHost : true).ConfigureAwait(false);

            try
            {
                var msalBuilder = publicClient.AcquireTokenInteractive(new string[] { resource });
                msalBuilder.WithPrompt(Prompt.SelectAccount);
                msalBuilder.WithUseEmbeddedWebView(false);
                var result = await msalBuilder.ExecuteAsync(linkedCancellationToken);

                return(new MsalToken(result));
            }
            catch (MsalServiceException e)
            {
                if (e.ErrorCode.Contains(MsalError.AuthenticationCanceledError))
                {
                    return(null);
                }

                throw;
            }
            finally
            {
                var helper = await GetMsalCacheHelperAsync();

                helper?.UnregisterCache(publicClient.UserTokenCache);
            }
        }
Exemple #13
0
        /// <summary>
        /// 编辑模板
        /// </summary>
        public void Edit()
        {
            string tpl = Request.Query("tpl");

            if (string.IsNullOrEmpty(tpl))
            {
                tpl = CurrentSite.Tpl;
            }
            var sb = new StringBuilder();

            var dir = new DirectoryInfo($"{EnvUtil.GetBaseDirectory()}/templates/{tpl}/");

            if (!dir.Exists)
            {
                Response.Redirect(Request.GetPath() + "?module=template&action=templates", false);
                return;
            }

            EachClass.WalkTemplateFiles(dir, sb, tpl);

            RenderTemplate(ResourceMap.GetPageContent(ManagementPage.Template_Edit), new
            {
                tplfiles = sb.ToString(),
                tpl      = tpl
            });
        }
Exemple #14
0
        public void CreateView_POST()
        {
            var tplName = $"templates/{CurrentSite.Tpl}/{Request.Form("name")}.html";
            var tplPath = $"{EnvUtil.GetBaseDirectory()}/{tplName}";

            if (File.Exists(tplPath))
            {
                Response.WriteAsync("文件已经存在!");
            }
            else
            {
                try
                {
                    //global::System.IO.Directory.CreateDirectory(tplPath).Create();   //创建目录
                    File.Create(tplPath).Dispose(); //创建文件
                    Cms.Template.Reload();          //重新注册模板
                    Response.WriteAsync(tplName);
                }
                catch (Exception e)
                {
                    // Response.Write(e.Message);
                    Response.WriteAsync("无权限创建文件,请设置视图目录(templates)可写权限!");
                }
            }
        }
Exemple #15
0
        private static void ResolveAspNet(string resolveFullDir)
        {
            AppDomain domain = AppDomain.CurrentDomain;

            if (String.IsNullOrEmpty(resolveFullDir))
            {
                resolveFullDir = EnvUtil.GetBaseDirectory() + FwCtx.Variables.AssemblyPath;
            }

            //
            //设为隐藏目录
            //
            domain.AssemblyResolve += delegate(object sender, ResolveEventArgs args)
            {
                string filePath = String.Concat(resolveFullDir, args.Name.Split(',')[0], ".dll");

                //File.WriteAllText(directory+DateTime.Now.Millisecond.ToString()+".txt",args.Name+"//"+filePath);

                if (!File.Exists(filePath))
                {
                    return(null);
                }
                else
                {
                    return(Assembly.Load(File.ReadAllBytes(filePath)));
                }
            };
        }
        public override async Task <bool> CanProvideCredentialsAsync(Uri uri)
        {
            // If for any reason we reach this point and any of the three build task env vars are set,
            // we should not try get credentials with this cred provider.
            string feedEndPointsJsonEnvVar = Environment.GetEnvironmentVariable(EnvUtil.BuildTaskExternalEndpoints);
            string uriPrefixesStringEnvVar = Environment.GetEnvironmentVariable(EnvUtil.BuildTaskUriPrefixes);
            string accessTokenEnvVar       = Environment.GetEnvironmentVariable(EnvUtil.BuildTaskAccessToken);

            if (string.IsNullOrWhiteSpace(feedEndPointsJsonEnvVar) == false || string.IsNullOrWhiteSpace(uriPrefixesStringEnvVar) == false || string.IsNullOrWhiteSpace(accessTokenEnvVar) == false)
            {
                Verbose(Resources.BuildTaskCredProviderIsUsedError);
                return(false);
            }

            var validHosts = EnvUtil.GetHostsFromEnvironment(Logger, EnvUtil.SupportedHostsEnvVar, new[]
            {
                ".pkgs.vsts.me",          // DevFabric
                ".pkgs.codedev.ms",       // DevFabric
                ".pkgs.codeapp.ms",       // AppFabric
                ".pkgs.visualstudio.com", // Prod
                ".pkgs.dev.azure.com"     // Prod
            });

            return(validHosts.Any(host => uri.Host.EndsWith(host, StringComparison.OrdinalIgnoreCase)) || await authUtil.IsVstsUriAsync(uri));
        }
Exemple #17
0
        /// <summary>
        /// 删除文件或目录
        /// </summary>
        /// <param name="dir"></param>
        /// <param name="file"></param>
        /// <param name="isDir"></param>
        /// <returns></returns>
        internal static bool Delete(string dir, string file, bool isDir)
        {
            dir = Regex.Replace(dir, "^(\\/)*([\\S\\s]+)(\\/)$", "$2");
            var path = EnvUtil.GetBaseDirectory() + dir + file;

            if (isDir)
            {
                //如果为系统文件,则返回false
                foreach (var s in SysIntArray)
                {
                    if (string.CompareOrdinal(s, file) == 0)
                    {
                        return(false);
                    }
                }
                Directory.Delete(path + "/"); //目录下有文件,不能删除
            }
            else
            {
                //如果为系统文件,则返回false
                foreach (var s in SysIntArray)
                {
                    if (string.CompareOrdinal(s, file.Replace("\\", "")) == 0)
                    {
                        return(false);
                    }
                }

                File.Delete(path);
            }

            return(true);
        }
Exemple #18
0
    public static void PerformiOSBuild()
    {
        PlayerSettings.iOS.sdkVersion = iOSSdkVersion.DeviceSDK;
        string originalVersion = PlayerSettings.iOS.buildNumber;

        PlayerSettings.iOS.buildNumber = EnvUtil.GetEnvValue(ENV_BUILD_NUMBER, originalVersion);
        Build(BuildTargetGroup.iOS, BuildTarget.iOS);
        PlayerSettings.iOS.buildNumber = originalVersion;
    }
Exemple #19
0
        public override async Task <GetAuthenticationCredentialsResponse> HandleRequestAsync(GetAuthenticationCredentialsRequest request, CancellationToken cancellationToken)
        {
            // If this is a retry, let's try without sending a retry request to the underlying bearerTokenProvider
            if (request.IsRetry)
            {
                var responseWithNoRetry = await HandleRequestAsync(GetNonRetryRequest(request), cancellationToken);

                if (responseWithNoRetry?.ResponseCode == MessageResponseCode.Success)
                {
                    return(responseWithNoRetry);
                }
            }

            var      sessionTimeSpan = EnvUtil.GetSessionTimeFromEnvironment(Logger) ?? TimeSpan.FromHours(DefaultSessionTimeHours);
            DateTime endTime         = DateTime.UtcNow + sessionTimeSpan;

            Verbose(string.Format(Resources.VSTSSessionTokenValidity, sessionTimeSpan.ToString(), endTime.ToUniversalTime().ToString()));

            try
            {
                var bearerToken = await bearerTokenProvider.GetAsync(request.Uri, isRetry : false, request.IsNonInteractive, request.CanShowDialog, cancellationToken);

                if (string.IsNullOrWhiteSpace(bearerToken))
                {
                    return(new GetAuthenticationCredentialsResponse(
                               username: null,
                               password: null,
                               message: Resources.BearerTokenFailed,
                               authenticationTypes: null,
                               responseCode: MessageResponseCode.Error));
                }

                var sessionTokenClient = new VstsSessionTokenClient(request.Uri, bearerToken, authUtil);
                var sessionToken       = await sessionTokenClient.CreateSessionTokenAsync(endTime, cancellationToken);

                if (!string.IsNullOrWhiteSpace(sessionToken))
                {
                    Verbose(string.Format(Resources.VSTSSessionTokenCreated, request.Uri.ToString()));
                    return(new GetAuthenticationCredentialsResponse(
                               Username,
                               sessionToken,
                               message: null,
                               authenticationTypes: new List <string>()
                    {
                        "Basic"
                    },
                               responseCode: MessageResponseCode.Success));
                }
            }
            catch (Exception e)
            {
                Verbose(string.Format(Resources.VSTSCreateSessionException, request.Uri, e.Message, e.StackTrace));
            }

            Verbose(string.Format(Resources.VSTSCredentialsNotFound, request.Uri.ToString()));
            return(null);
        }
Exemple #20
0
        /// <summary>
        /// 获取插件的图标
        /// </summary>
        /// <param name="workerIndent"></param>
        /// <returns></returns>
        public static byte[] GetPluginIcon(string workerIndent, int width, int height, string defaultIconPath)
        {
            string icon      = null;
            var    iconExist = false;

            byte[] data;

            Iterate((p, a) =>
            {
                if (String.Compare(a.WorkIndent, workerIndent, StringComparison.OrdinalIgnoreCase) == 0)
                {
                    icon = String.Format("{0}/{1}{2}/{3}",
                                         EnvUtil.GetBaseDirectory(),
                                         PluginConfig.PLUGIN_DIRECTORY,
                                         workerIndent, a.Icon);
                }
            });

            if (!String.IsNullOrEmpty(icon))
            {
                iconExist = File.Exists(icon);
            }

resetIcon:
            if (!iconExist)
            {
                icon = defaultIconPath;
            }

            var bit = (Bitmap)null;

            try
            {
                using (bit = new Bitmap(icon))
                {
                    var ms = GraphicsHelper.MakeThumbnail(bit, ImageSizeMode.AutoSuit, width, height, null);
                    data = ms.ToArray();
                    ms.Dispose();
                    bit.Dispose();
                }
            }
            catch
            {
                iconExist = false;
                goto resetIcon;
            }
            finally
            {
                if (bit != null)
                {
                    bit.Dispose();
                }
            }

            return(data);
        }
Exemple #21
0
        internal MsalTokenProvider(string authority, string resource, string clientId, ILogger logger)
        {
            this.authority = authority;
            this.resource  = resource;
            this.clientId  = clientId;
            this.Logger    = logger;

            this.cacheEnabled  = EnvUtil.MsalFileCacheEnabled();
            this.cacheLocation = this.cacheEnabled ? EnvUtil.GetMsalCacheLocation() : null;
        }
Exemple #22
0
        public static string GetJson(string dir_abs_path)
        {
            var dir = new DirectoryInfo(Path.Combine(EnvUtil.GetBaseDirectory(), dir_abs_path));

            if (!dir.Exists)
            {
                return(ReturnError($"目录:{dir_abs_path}不存在!"));
            }
            return(GetJson(dir, dir_abs_path == "/"));
        }
        private static ICache <Uri, string> GetSessionTokenCache(ILogger logger, CancellationToken cancellationToken)
        {
            if (EnvUtil.SessionTokenCacheEnabled())
            {
                logger.Verbose(string.Format(Resources.SessionTokenCacheLocation, EnvUtil.SessionTokenCacheLocation));
                return(new SessionTokenCache(EnvUtil.SessionTokenCacheLocation, logger, cancellationToken));
            }

            logger.Verbose(Resources.SessionTokenCacheDisabled);
            return(new NoOpCache <Uri, string>());
        }
Exemple #24
0
 protected void saveLog(string str)
 {
     using (
         System.IO.StreamWriter sr =
             new System.IO.StreamWriter(EnvUtil.GetBaseDirectory() + "collection.log", true))
     {
         sr.WriteLine(str);
         sr.Flush();
         sr.Dispose();
     }
 }
        private bool UsePpeAadUrl(Uri uri)
        {
            var ppeHosts = EnvUtil.GetHostsFromEnvironment(logger, EnvUtil.PpeHostsEnvVar, new[]
            {
                ".vsts.me",
                ".codedev.ms",
                ".devppe.azure.com"
            });

            return(ppeHosts.Any(host => uri.Host.EndsWith(host, StringComparison.OrdinalIgnoreCase)));
        }
Exemple #26
0
        private void SetServerPort(int serverPort)
        {
            this.serverPort = serverPort;

            // env first
            var env = EnvUtil.GetEnvValue(NAMING_SERVER_PORT);

            if (!string.IsNullOrWhiteSpace(env) && int.TryParse(env, out var port))
            {
                this.serverPort = port;
            }
        }
Exemple #27
0
        public HttpTagsHandler(string configPath)
        {
            this.configPath = configPath;

            //获取配置文件的路径
            if (String.IsNullOrEmpty(configPath))
            {
                this.configPath = EnvUtil.GetBaseDirectory() + request.GetParameter("config");
            }

            //创建标签管理器对象
            Tags = new TagsManager(configPath);
        }
Exemple #28
0
 public DbAccess(DataBaseType dbType, string connectionString, bool sqlTrace)
 {
     _dbType           = dbType;
     _connectionString = connectionString;
     _sqlTrace         = sqlTrace;
     dbAccess          = new DataBaseAccess(_dbType, _connectionString);
     if (sqlTrace)
     {
         _fileLogger = new FileLogger(EnvUtil.GetBaseDirectory() + "/tmp/sql_profile.txt");
         _fileLogger.Truncate();
         dbAccess.Use(profileTrace);
     }
 }
Exemple #29
0
        public override async Task <bool> CanProvideCredentialsAsync(Uri uri)
        {
            var validHosts = EnvUtil.GetHostsFromEnvironment(Logger, EnvUtil.SupportedHostsEnvVar, new[]
            {
                ".pkgs.vsts.me",          // DevFabric
                ".pkgs.codedev.ms",       // DevFabric
                ".pkgs.codeapp.ms",       // AppFabric
                ".pkgs.visualstudio.com", // Prod
                ".pkgs.dev.azure.com"     // Prod
            });

            return(validHosts.Any(host => uri.Host.EndsWith(host, StringComparison.OrdinalIgnoreCase)) || await authUtil.IsVstsUriAsync(uri));
        }
Exemple #30
0
    private static string UnitySymbolsFromArg()
    {
        string[]      result = EnvUtil.FindArgsStartWith(ENV_DEFINE_SYMBOLS);
        StringBuilder sb     = new StringBuilder();

        foreach (var arg in result)
        {
            sb.Append(arg.Substring(2));
            sb.Append(";");
        }

        return(sb.ToString());
    }