1// external_id 2if (typeof CRYPT === 'undefined') { 3var CRYPT = { 4 SHA256: function (key, successCallback, errorCallback) { 5 if (window.location.protocol === "https:" && window.crypto && window.crypto.subtle) { 6 this._SHA256_WEB_CRYPTO_API(key, successCallback, function () { 7 this._SHA256_CRYPTO_JS(key, successCallback, function () { 8 this._SHA256_NATIVE_JS(key, successCallback, errorCallback); 9 }.bind(this) 10 ); 11 }.bind(this) 12 ); 13 } else { 14 this._SHA256_CRYPTO_JS(key, successCallback, function () { 15 this._SHA256_NATIVE_JS(key, successCallback, errorCallback); 16 }.bind(this) 17 ); 18 } 19 }, 20 21 _SHA256_WEB_CRYPTO_API: function (key, successCallback, errorCallback) { 22 try { 23 const encoder = new TextEncoder(); 24 const data = encoder.encode(key); 25 window.crypto.subtle.digest('SHA-256', data).then(function (hashBuffer) { 26 const hashArray = Array.from(new Uint8Array(hashBuffer)); 27 const hash = hashArray.map(byte => byte.toString(16).padStart(2, '0')).join(''); 28 successCallback(hash); 29 } 30 ).catch(function (error) { 31 errorCallback('SHA-256 Error - _SHA256_WEB_CRYPTO_API : ' + error); 32 } 33 ); 34 } catch (error) { 35 errorCallback('SHA-256 Error -_SHA256_WEB_CRYPTO_API : ' + error); 36 } 37 }, 38 39 _SHA256_CRYPTO_JS: function (key, successCallback, errorCallback) { 40 var script = document.createElement('script'); 41 script.type = 'text/javascript'; 42 script.src = '/app/Eclog/js/crypto-js.min.js'; 43 script.onload = function () { 44 try { 45 const hash = CryptoJS.SHA256(key); 46 successCallback(hash.toString(CryptoJS.enc.Hex)); 47 } catch (error) { 48 errorCallback('SHA-256 Error - _SHA256_CRYPTO_JS : ' + error); 49 } 50 }; 51 document.head.appendChild(script); 52 }, 53 54 _SHA256_NATIVE_JS: function (key, successCallback, errorCallback) { 55 var script = document.createElement('script'); 56 script.type = 'text/javascript'; 57 script.src = '/app/Eclog/js/crypto-sha256-native.min.js'; 58 script.onload = function () { 59 try { 60 const hash = SHA256(key); 61 successCallback(hash); 62 } catch (error) { 63 errorCallback('SHA-256 Error - _SHA256_NATIVE_JS : ' + error); 64 } 65 }; 66 document.head.appendChild(script); 67 } 68}; 69} 70if (typeof ECLOG === 'undefined') { 71var ECLOG = { 72 COMMON: { 73 _config: { 74 cookiePath: "/", 75 }, 76 _getCookie: function (name) { 77 var value = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)'); 78 if (value) { 79 return value[2]; 80 } else { 81 return sessionStorage.getItem(name); 82 } 83 }, 84 _setCookie: function (name, val, days) { 85 const domain = ECLOG.COMMON._getDomain(); 86 let expires = ""; 87 if (days) { 88 const date = new Date(); 89 date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); 90 expires = "; expires=" + date.toUTCString(); 91 } 92 document.cookie = name + "=" + val + ";path=" + ECLOG.COMMON._config.cookiePath + ";domain=" + domain + expires; 93 sessionStorage.setItem(name, val); 94 }, 95 _getDomain: function () { 96 const domainMatch = document.URL.match(/https?:\/\/(www\.)?([^/]*)/); 97 98 if (domainMatch && domainMatch[2]) { 99 return "." + domainMatch[2]; 100 } 101 }, 102 _getParam: function (name, url) { 103 try { 104 if (name == 'u') { 105 const scriptTag = document.currentScript; 106 const scriptUrl = scriptTag.src;
107 const urlParams = new URLSearchParams(scriptUrl.split('?')[1]); 108 return urlParams.get(name) 109 } else { 110 const scriptUrl = url || ''; 111 if (scriptUrl) { 112 const urlParams = new URLSearchParams(scriptUrl.split('?')[1]); 113 return urlParams.get(name); 114 } 115 } 116 } catch (error) { 117 return ''; 118 } 119 }, 120 _chkDomain: function () { 121 var currentDomain = window.location.hostname; 122 if (currentDomain === 'cafe24.com' || currentDomain === 'eckorea24.cafe24.com' || currentDomain === 'www.cafe24.com') { 123 return true; 124 } 125 return false; 126 } 127 }, 128 EXTERNAL_ID: { 129 _config: { 130 external_id: "fb_external_id", cookiePath: "/", 131 }, 132 _sid: function () { 133 return ( 134 Math.random().toString(36).substring(2).toUpperCase() + Math.random().toString(36).substring(2).toUpperCase() + Math.random().toString(36).substring(2).toUpperCase() 135 ); 136 }, 137 chk: function (u, callback) { 138 if (ECLOG.COMMON._chkDomain() === true) { 139 if (callback) { 140 callback(null, null); 141 } 142 return; 143 } 144 if (!ECLOG.COMMON._getCookie(ECLOG.EXTERNAL_ID._config.external_id)) { 145 if (!u) { 146 u = ECLOG.COMMON._getParam('u'); 147 } 148 const key = u + '.' + ECLOG.EXTERNAL_ID._sid(); 149 150 CRYPT.SHA256(key, function (hashkey) { 151 ECLOG.COMMON._setCookie(ECLOG.EXTERNAL_ID._config.external_id, hashkey); 152 if (callback) { 153 callback(null, hashkey); 154 } 155 }.bind(ECLOG.EXTERNAL_ID), function (error) { 156 if (callback) { 157 callback(error, null); 158 } 159 }.bind(ECLOG.EXTERNAL_ID)); 160 } else { 161 if (callback) { 162 callback(null, ECLOG.COMMON._getCookie(ECLOG.EXTERNAL_ID._config.external_id)); 163 } 164 } 165 } 166 }, 167 EVENT_ID: { 168 _config: { 169 event_id: "fb_event_id", 170 cookiePath: "/", 171 }, 172 chk: function (u, callback) { 173 if (ECLOG.COMMON._chkDomain() === true) { 174 if (callback) { 175 callback(null, null); 176 } 177 return; 178 } 179 var pathRoleMeta = document.querySelector('meta[name="path_role"]'); 180 var path_role = pathRoleMeta ? pathRoleMeta.getAttribute('content') : null; 181 var referrer = document.referrer; 182 var currentURL = window.location.href; 183 var currentDomain = window.location.hostname; 184 185 var surlOrderFlag = false; 186 if (path_role === "ORDER_ORDERFORM") { // ë°ë¡ì£¼ë¬¸ ì²´í¬ 187 if (currentURL.includes('/surl/O/') || !referrer || referrer.indexOf(currentDomain) === -1) { 188 surlOrderFlag = true; 189 } 190 } 191 if (surlOrderFlag || (path_role !== "ORDER_BASKET" && path_role !== "ORDER_ORDERFORM" && path_role !== "ORDER_ORDERRESULT") || path_role === null) { 192 try { 193 const uParam = ECLOG.COMMON._getParam('u'); 194 if (uParam) { // ì´ê¸° js ë´ë¶ 195 const hashkey = 'event_id.' + uParam + '.' + ECLOG.EXTERNAL_ID._sid(); 196 ECLOG.COMMON._setCookie(ECLOG.EVENT_ID._config.event_id, hashkey); 197 } else { 198 handleCallback(); 199 } 200 } catch (error) { 201 handleCallback(error); 202 } 203 } else { 204 handleCallback(); 205 } 206 207 function handleCallback(error) { 208 if (error) { 209 callback(error, null); 210 } else if (callback) { 211 callback(null, ECLOG.COMMON._getCookie(ECLOG.EVENT_ID._config.event_id)); 212 } 213 } 214 } 215 }, 216 COOKIES: { 217 set: function() { 218 if (ECLOG.COMMON._chkDomain() === true) { 219 return; 220 } 221 var fbcCookie = ECLOG.COMMON._getCookie('_fbc'); 222 if (fbcCookie && !/^fb\./.test(fbcCookie)) { 223 fbcCookie = ''; 224 } 225 if (!fbcCookie) { 226 var fbclidParam = ECLOG.COMMON._getParam('fbclid', window.location.href); 227 if (fbclidParam && fbclidParam.trim() === '') { 228 fbclidParam = null; 229 } 230 if (fbclidParam) { 231 const unixTimestamp = Date.now(); 232 const formattedValue = 'fb.2.' + unixTimestamp + '.' + fbclidParam;
233 ECLOG.COMMON._setCookie('_fbc', formattedValue, 90); 234 } 235 } 236 } 237 } 238}; 239} 240ECLOG.EXTERNAL_ID.chk(); 241ECLOG.EVENT_ID.chk(); 242ECLOG.COOKIES.set(); 243 244 245 246// cid generate 247(function(top, window) { 248 249 function findTop(t, s) 250 { 251 try { 252 if (t.document) { 253 return t; 254 } 255 } catch (e) { 256 try { 257 if (s.parent.document) { 258 var p = s; 259 while (p) { 260 try { 261 if (p.document) { 262 s = p; 263 p = p.parent; 264 } 265 } catch (e) { 266 return s; 267 } 268 } 269 } 270 } catch (e) { 271 return s; 272 } 273 } 274 } 275 top = findTop(top, window); 276 277 var eclogPID = 'eclog'; 278 if (top != window && window.location.href.indexOf('PREVIEW_SDE') == -1 && typeof top[eclogPID] !== 'undefined') { 279 window[eclogPID] = top[eclogPID]; 280 return; 281 } 282 283 var cook = { 284 get: function() { 285 var cookieStr = document.cookie; 286 if (cookieStr == '') return false; 287 288 var cookies = cookieStr.split('; '); 289 var findCookie = false; 290 for (var i = 0; i < cookies.length; i++) { 291 if (cookies[i].substring(0, 4) != 'CID=') { 292 continue; 293 } 294 findCookie = cookies[i].substring(4); 295 } 296 return findCookie; 297 } 298 }; 299 300 var cid = { 301 key: null, 302 generate: function() { 303 this.key = cook.get(); 304 if (this.key === false) { 305 this.key = this.getHash(); 306 } 307 }, 308 getCid: function() { 309 return this.key; 310 }, 311 getHash: function() { 312 var d = new Date().getTime(); 313 var sUid = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'.replace(/[x]/g, function(c) { 314 var r = (d + Math.random()*16)%16 | 0; 315 d = Math.floor(d/16); 316 return (c=='x' ? r : (r&0x3|0x8)).toString(16); 317 }); 318 return 'CID' + sUid; 319 } 320 }; 321 322 cid.generate(); 323 324 top[eclogPID] = cid; 325 window[eclogPID] = cid; 326 327})(top, window);
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.