<commit_before>define(['app'], function (app) { 'use strict';

    return app.factory('returnUrl', ['$location', '$document', '$window', function($location, $document, $window) {

        var baseURI = parseUrl('/').baseURI;

        return  { 
            navigate: navigate,
            get:      getReturnUrl,
            set:      setReturnUrl,
            has:      function() { return getReturnUrl(); },
            goBack :  function(altUrl) { 
                
                var returnUrl = getReturnUrl();
                
                setReturnUrl(null);

                return navigate(returnUrl || altUrl || '/'); 
            }
        };

        //============================================================
        //
        //
        //============================================================
        function getReturnUrl() {

            var url = $location.search().returnUrl || $location.search().returnurl || $location.search()['return-url'];
            
            if(isTrusted(url))
                return url;
        }

        //============================================================
        //
        //
        //============================================================
        function setReturnUrl(url) {

            if(!isTrusted(url))
                url = null;

            $location.search('return-url', null);
            $location.search('returnurl',  null);
            $location.search('returnUrl',  url);
        }

        //============================================================
        //
        //
        //============================================================
        function navigate(url) {

            var parsedUrl = parseUrl(url);

            if(parsedUrl.hostname!=$location.host()) { 
                window.location.href = url;
            }
            else {
                $location.path(url);
            }                  
        }

        //============================================================
        //
        //
        //============================================================
        function isTrusted(unsafeUrl) {

            var trustedHosts = [
                "absch.cbd.int", 'training-absch.cbd.int', 'dev-absch.cbd.int',
                "eunomia.cbd.int",
                "bch.cbd.int",
                "chm.cbd.int", 'dev-chm.cbd.int',
                'lifeweb.cbd.int',
                "www.cbd.int",
                '192.168.1.68',
                "localhost"
            ];

            var url = parseUrl(unsafeUrl);

            if(url.hostname && ~trustedHosts.indexOf(url.hostname))
                return true;
        }<commit_msg>use wildcard for trusted hosts<commit_after>define(['app', 'lodash'], function (app, _) { 'use strict';

    return app.factory('returnUrl', ['$location', '$document', '$window', function($location, $document, $window) {

        return  { 
            navigate: navigate,
            get:      getReturnUrl,
            set:      setReturnUrl,
            has:      function() { return getReturnUrl(); },
            goBack :  function(altUrl) { 
                
                var returnUrl = getReturnUrl();
                
                setReturnUrl(null);

                return navigate(returnUrl || altUrl || '/'); 
            }
        };

        //============================================================
        //
        //
        //============================================================
        function getReturnUrl() {

            var url = $location.search().returnUrl || $location.search().returnurl || $location.search()['return-url'];
            
            if(isTrusted(url))
                return url;
        }

        //============================================================
        //
        //
        //============================================================
        function setReturnUrl(url) {

            if(!isTrusted(url))
                url = null;

            $location.search('return-url', null);
            $location.search('returnurl',  null);
            $location.search('returnUrl',  url);
        }

        //============================================================
        //
        //
        //============================================================
        function navigate(url) {

            var parsedUrl = parseUrl(url);

            if(parsedUrl.hostname!=$location.host()) { 
                window.location.href = url;
            }
            else {
                $location.path(url);
            }                  
        }

        //============================================================
        //
        //
        //============================================================
        function isTrusted(unsafeUrl) {

            var trustedHosts = [
                   /^cbd.int$/i,
                /.*\.cbd.int$/i,
                 /^localhost$/i
            ];

            var url = parseUrl(unsafeUrl);

            return !!(url.hostname && _.some(trustedHosts, function(h) { return h.test(url.hostname); }));
        }
{'fraction_non_alphanumeric': 0.29839968774395004, 'fraction_numerical': 0.001756440281030445, 'mean_word_length': 1.580563947633434, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 1, 'xml': 0}, 'pii_count': 1, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2729367', 'n_tokens_mistral': 1224, 'n_tokens_neox': 1121, 'n_words': 174}