PageSourceSearch

https://cdn1.img.sputnikportal.rs/min/js/firebase/fbcheck2.min.js?9f8bee56c

js sputnikportal.rs collected 2026-10-02 14:36:00 UTC 5,840 bytes, 173 lines download raw bytes

1let version = '2.0.2';
2let domain = document.domain;
3let swFile = 'firebase-messaging-sw.js';
4let swScope = 'firebase-cloud-messaging-push-scope';
5
6function FireBase() {
7    this._config = {};
8    this._vapidKey = '';
9    if (typeof fbregUrlServer !== 'undefined') {
10        this._urlServer = fbregUrlServer;
11    } else {
12        this._urlServer = 'https://fbreg.sputniknews.com/';
13    }
14}
15
16FireBase.prototype.setConfig = function (config) {
17    this._config = config;
18}
19
20FireBase.prototype.setVapidKey = function (vapidKey) {
21    this._vapidKey = vapidKey;
22}
23
24FireBase.prototype.main = function (libFireBase) {
25    this.checkPushSupport()
26        .then(() => {
27            if (this.getPermission() == "granted" || this.getPermission() == "default") {
28                let cookieVersion = 3;
29                if (GLOBAL.design == "tr" || GLOBAL.design == "eg" || GLOBAL.design == "br") {
30                    cookieVersion = 4;
31                }
32                if (GLOBAL.design == "vn") {
33                    cookieVersion = 5;
34                }
35                if (GLOBAL.design == "es") {
36                    cookieVersion = 7;
37                }
38                if (this.getPermission() == "granted" && this.checkExistCookie('fb_delsw' + cookieVersion) === false) {
39                    this.unSubscribeFromOldPush();
40                    this.setCookie('fb_delsw' + cookieVersion, 1, 3600 * 1000 * 24 * 30, '/');
41                }
42                if (this.checkExistCookie('fb_check' + cookieVersion) === false) {
43                    this.setSubscribe(libFireBase);
44                    this.setCookie('fb_check' + cookieVersion, 1, 3600 * 1000 * 24 * 30, '/');
45                }
46            }
47        })
48        .catch(() => {
49
50        })
51}
52
53FireBase.prototype.setSubscribe = function (libFireBase) {
54    libFireBase.initializeApp(this._config);
55    const messaging = firebase.messaging();
56    messaging.usePublicVapidKey(this._vapidKey);
57
58    messaging.getToken().then((currentToken) => {
59        if (currentToken) {
60            console.log("new Token:", currentToken);
61            this._sendTokenToServer(currentToken);
62        } else {
63            console.log('No Instance ID token available. Request permission to generate one.');
64        }
65    }).catch((err) => {
66        console.log('An error occurred while retrieving token. ', err);
67    });
68
69    messaging.onTokenRefresh(() => {
70        messaging.getToken().then((refreshedToken) => {
71            console.log('Token refreshed.');
72            this._sendTokenToServer(refreshedToken);
73        }).catch((err) => {
74            console.log('Unable to retrieve refreshed token ', err);
75        });
76    });
77}
78
79FireBase.prototype.checkPushSupport = function () {
80    return new Promise((resolve, reject) => {
81        if (!('serviceWorker' in navigator)) {
82            console.log('sw_not_found');
83            reject();
84        }
85        if (!('PushManager' in window)) {
86            console.log('fb_not_found');
87            reject();
88        }
89        console.log('fb_supported');
90        resolve();
91    });
92}
93
94FireBase.prototype.checkExistCookie = function (name, postfix) {
95    postfix = postfix ? '_' + postfix : '';
96    let result = false;
97    let value = this.getCookie(name);
98
99    if (value) {
100        result = true;
101        console.log('fb_cookie_' + name + '_exist' + postfix, value);
102    } else {
103        console.log('fb_cookie_' + name + '_noexist' + postfix, value);
104    }
105
106    return result;
107}
108
109FireBase.prototype.getPermission = function (data, postfix) {
110    postfix = postfix ? '_' + postfix : '';
111    let permision = Notification.permission;
112    console.log('fb_permission_' + permision + postfix);
113
114    return permision;
115}
116
117FireBase.prototype._sendTokenToServer = function (currentToken) {
118    let body = {
119        'token' : currentToken,
120        'domain' : domain
121    };
122    let post = {
123        method : 'POST', headers : {
124            'Content-Type' : 'application/json;charset=utf-8'
125        }, body : JSON.stringify(body)
126    };
127    fetch(this._urlServer, post)
128        .then((response) => {
129            let data = response.json();
130        })
131        .catch((error, e) => {
132            console.log('FB handler returned an error', error, e);
133        })
134}
135
136FireBase.prototype.setCookie = function (cookieName, value, msToExpire, path, domain, secure) {
137    var expiryDate;
138
139    // relative time to expire in milliseconds
140    if (msToExpire) {
141        expiryDate = new Date();
142        expiryDate.setTime(expiryDate.getTime() + msToExpire);
143    }
144    console.log('fb_cookie_set', cookieName);
145    document.cookie = cookieName + '=' + value + (msToExpire ? ';expires=' + expiryDate.toGMTString() : '') + ';path=' + (path || '/') + (domain ? ';domain=' + domain : '') + (secure ? ';secure' : '');
146}
147
148FireBase.prototype.getCookie = function (cookieName) {
149    var cookiePattern = new RegExp('(^|;)[ ]*' + cookieName + '=([^;]*)'),
150        cookieMatch = cookiePattern.exec(document.cookie);
151    console.log('fb_cookie_get', [cookieName, cookieMatch ? decodeURIComponent(cookieMatch[2]) : 0]);
152    return cookieMatch ? decodeURIComponent(cookieMatch[2]) : 0;
153}
154
155FireBase.prototype.unSubscribeFromOldPush = function () {
156    navigator.serviceWorker.getRegistrations()
157        .then(function (registrations) {
158            for (let reg of registrations) {
159                if (swFile != "" && (reg.active.scriptURL.indexOf(swFile) == -1  || reg.scope.indexOf(swScope) == -1) && reg.active.state == "activated") {
160                    reg.unregister();
161                    console.log("Unreg script: ", reg.active.scriptURL);
162                }
163            }
164        })
165        .catch(function (err) {
166            console.log("FireBase unreq error: ", err)
167        });
168}
169
170let objFB = new FireBase();
171objFB.setConfig(firebaseConfig);
172objFB.setVapidKey(vapidKey);
173objFB.main(firebase);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.