Help
RSS
API
Feed
Maltego
Contact
Domain > app-dev.samli.dk
×
Welcome!
Right click nodes and scroll the mouse to navigate the graph.
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2026-02-03
51.158.227.148
(
ClassC
)
Port 443
HTTP/1.1 200 OKaccept-ranges: bytescache-control: no-cache,no-store, no-cache, must-revalidate, proxy-revalidate, max-age0content-length: 20845content-type: text/htmldate: Tue, 03 Feb 2026 06:24:43 GMTetag: 697b90cf-516dexpires: Tue, 03 Feb 2026 06:24:42 GMTlast-modified: Thu, 29 Jan 2026 16:54:39 GMTserver: envoyx-envoy-upstream-service-time: 7 !DOCTYPE html>html>head> base href/> meta charsetUTF-8> meta contentIEEdge http-equivX-UA-Compatible> meta namegoogle contentnotranslate> meta propertyog:locale contentda_DK /> meta propertyog:locale:alternate contenten_US /> !-- cropperjs --> link relstylesheet hrefhttps://cdnjs.cloudflare.com/ajax/libs/cropperjs/1.6.2/cropper.css /> script srchttps://cdnjs.cloudflare.com/ajax/libs/cropperjs/1.6.2/cropper.min.js>/script> !-- InAppWebView --> script typeapplication/javascript src/assets/packages/flutter_inappwebview_web/assets/web/web_support.js defer>/script>meta nameapple-mobile-web-app-capable contentyes>meta nameapple-mobile-web-app-status-bar-style contentblack-translucent>meta nameapple-mobile-web-app-title contentNetværksapp> meta namemobile-web-app-capable contentyes> !-- Viewport meta tag for proper mobile rendering --> meta nameviewport contentwidthdevice-width, initial-scale1.0, viewport-fitcover> !-- iOS meta tags & icons - Multiple sizes for better compatibility --> link relapple-touch-icon sizes180x180 hreficons/Icon-192.png> link relapple-touch-icon sizes152x152 hreficons/Icon-192.png> link relapple-touch-icon sizes144x144 hreficons/Icon-192.png> link relapple-touch-icon sizes120x120 hreficons/Icon-192.png> link relapple-touch-icon sizes114x114 hreficons/Icon-192.png> link relapple-touch-icon sizes76x76 hreficons/Icon-192.png> link relapple-touch-icon sizes72x72 hreficons/Icon-192.png> link relapple-touch-icon sizes60x60 hreficons/Icon-192.png> link relapple-touch-icon sizes57x57 hreficons/Icon-192.png> link relapple-touch-icon hreficons/Icon-192.png> !-- Favicon --> link relicon typeimage/png sizes32x32 hreffavicon.png/> link relicon typeimage/png sizes16x16 hreffavicon.png/> link relshortcut icon hreffavicon.png/> link relstylesheet typetext/css hrefstyles.css> title>Netværksapp/title>meta namedescription contentSe opslag, begivenheder, medlemmer m.m. som er delt med dig />meta propertyog:title contentNetværksapp />meta propertyog:url contenthttps://app.yeneto.dk/ />meta propertyog:type contentwebsite />meta propertyog:image contenthttps://app.yeneto.dk/samli-thumbnail.jpg />style> #orgImage, #progressbar { opacity: 0; transition: opacity 0.5s ease; } #orgImage { max-width: 300px; margin-bottom: 20px; }/style> script>async function fetchMetaData() { const backendUrl window.location.href.includes(localhost) || window.location.href.includes(-dev) ? https://yentna-be-dev.yeneto.dk/graphql/ : https://app-be.yeneto.dk/graphql/; const query ` query { publicOrganization(hostName: ${window.location.hostname}) { name description primaryColor secondaryColor faviconImage { providerUrl(height: 32, width: 32) } PWAIcon192: faviconImage { providerUrl(height: 192, width: 192) } PWAIcon512: faviconImage { providerUrl(height: 512, width: 512) } organizationImage { providerUrl(width: 400) } } } `; try { const response await fetch(backendUrl, { method: POST, headers: { Content-Type: application/json, }, body: JSON.stringify({ query }), }); const result await response.json(); const org result.data?.publicOrganization; let manifestContent; if (org) { // Organization data is available - update all the metadata document.title org.name; document.querySelector(metanamedescription).setAttribute(content, org.description); document.querySelector(metapropertyog:title).setAttribute(content, org.name); document.querySelector(metapropertyog:url).setAttribute(content, window.location.href); document.querySelector(metapropertyog:image).setAttribute(content, org.organizationImage?.providerUrl || https://app.yeneto.dk/yeneto-thumbnail.jpg); // Update all favicon and touch icon links const faviconUrl org.faviconImage?.providerUrl || favicon.png; const touchIconUrl org.PWAIcon192?.providerUrl || icons/Icon-192.png; document.querySelector(linkreliconsizes32x32).setAttribute(href, faviconUrl); document.querySelector(linkreliconsizes16x16).setAttribute(href, faviconUrl); document.querySelector(linkrelshortcut icon).setAttribute(href, faviconUrl); // Update all apple-touch-icon links document.querySelectorAll(linkrelapple-touch-icon).forEach(link > { link.setAttribute(href, touchIconUrl); }); // Create organization-specific manifest manifestContent { name: org.name, short_name: org.name, description: org.description, start_url: ., display: standalone, orientation: portrait-primary, background_color: `#${org.primaryColor.substring(org.primaryColor.length - 6)}`, theme_color: `#${org.primaryColor.substring(org.primaryColor.length - 6)}`, prefer_related_applications: false, icons: { src: org.PWAIcon192?.providerUrl || icons/Icon-192.png, sizes: 192x192, type: image/png }, { src: org.PWAIcon512?.providerUrl || icons/Icon-512.png, sizes: 512x512, type: image/png } }; // Preload and update the organization image BEFORE making it visible const imgElement document.getElementById(orgImage); if (imgElement && org.organizationImage?.providerUrl) { // Wait for the image to load before updating the src await new Promise((resolve) > { const tempImg new Image(); tempImg.onload () > { imgElement.src org.organizationImage.providerUrl; imgElement.alt org.name; resolve(); }; tempImg.onerror () > { // If loading fails, keep default image console.warn(Failed to load organization image, using default); resolve(); }; tempImg.src org.organizationImage.providerUrl; }); } } else { // No organization data - create default manifest console.log(No organization data found, using default manifest); manifestContent { name: Samli, short_name: Samli, description: Netværksapp, start_url: /, scope: /, display: standalone, orientation: portrait-primary, background_color: #ffffff, theme_color: #4D6CFA, prefer_related_applications: false, icons: { src: icons/Icon-192.png, sizes: 192x192, type: image/png }, { src: icons/Icon-512.png, sizes: 512x512, type: image/png } }; } // Create and add the manifest link regardless of whether org is available const manifestBlob new Blob(JSON.stringify(manifestContent), { type: application/json }); const manifestURL URL.createObjectURL(manifestBlob); // Remove any existing manifest to avoid duplicates const existingManifest document.querySelector(linkrelmanifest); if (existingManifest) { existingManifest.remove(); } // Add the new manifest link const manifestLink document.createElement(link); manifestLink.rel manifest; manifestLink.href manifestURL; document.head.appendChild(manifestLink); } catch (error) { console.error(Error fetching meta data:, error); // Fallback to default meta properties } finally { // Show the splash and progress bar after image has been updated (or if no org data) showSplashAndProgress(); }}function showSplashAndProgress() { const imgElement document.getElementById(orgImage); const progressBarElement document.getElementById(progressbar); // Ensure elements are visible regardless of API result if (imgElement) { imgElement.style.opacity 1; } if (progressBarElement) { progressBarElement.style.opacity 1; }}// Call the function immediatelyfetchMetaData(); /script>/head>body> !-- div classcenter> h1 classml11> span classletters>Liito/span> /span> /h1> img srcsplash-liito.png altLiito> div classspinner> /div> /div> --> div styledisplay: flex; flex-direction: column; align-items: center;> img idorgImage srcsamli-splash.png altsamli> !-- Create a progress bar container with a nested progress bar --> div classprogress-container idprogressbar> div classprogress-bar idprogress>/div> /div> /div> script> function addDelay(delay) { return new Promise((resolve) > setTimeout(resolve, delay)); } // Get references to the progress bar container and the progress bar element. const progress document.getElementById(progress); const progressBar document.getElementById(progressbar); // Set the initial width of the progress bar to 0%. progress.style.width `0%`; // Listen for the load event of the window to start the actual loading process window.addEventListener(load, async function (ev) {// Inject Flutter JS and Config(()>{var C{blink:!0,gecko:!1,webkit:!1,unknown:!1},R()>navigator.vendorGoogle Inc.||navigator.userAgent.includes(Edg/)?blink:navigator.vendorApple Computer, Inc.?webkit:navigator.vendor&&navigator.userAgent.includes(Firefox)?gecko:unknown,LR(),x()>typeof ImageDecoder>u?!1:Lblink,K()>typeof Intl.v8BreakIteratoru&&typeof Intl.Segmenteru,B()>{let i0,97,115,109,1,0,0,0,1,5,1,95,1,120,0;return WebAssembly.validate(new Uint8Array(i))},w{browserEngine:L,hasImageCodecs:x(),hasChromiumBreakIterators:K(),supportsWasmGC:B(),crossOriginIsolated:window.crossOriginIsolated};function c(...i){return new URL(T(...i),document.baseURI).toString()}function T(...i){return i.filter(e>!!e).map((e,r)>r0?I(e):z(I(e))).filter(e>e.length).join(/)}function z(i){let e0;for(;ei.length&&i.charAt(e)/;)e++;return i.substring(e)}function I(i){let ei.length;for(;e>0&&i.charAt(e-1)/;)e--;return i.substring(0,e)}function U(i,e){return i.canvasKitBaseUrl?i.canvasKitBaseUrl:e.engineRevision&&!e.useLocalCanvasKit?T(https://www.gstatic.com/flutter-canvaskit,e.engineRevision):canvaskit}var vclass{constructor(){this._scriptLoaded!1}setTrustedTypesPolicy(e){this._ttPolicye}async loadEntrypoint(e){let{entrypointUrl:rc(main.dart.js),onEntrypointLoaded:t,nonce:n}e||{};return this._loadJSEntrypoint(r,t,n)}async load(e,r,t,n,s){s??u>{u.initializeEngine(t).then(m>m.runApp())};let{entrypointBaseUrl:a}t,{entryPointBaseUrl:o}t;if(!a&&o&&(console.warn(deprecated `entryPointBaseUrl` is deprecated and will be removed in a future release. Use `entrypointBaseUrl` instead.),ao),e.compileTargetdart2wasm)return this._loadWasmEntrypoint(e,r,a,s);{let ue.mainJsPath??main.dart.js,mc(a,u);return this._loadJSEntrypoint(m,s,n)}}didCreateEngineInitializer(e){typeof this._didCreateEngineInitializerResolvefunction&&(this._didCreateEngineInitializerResolve(e),this._didCreateEngineInitializerResolvenull,delete _flutter.loader.didCreateEngineInitializer),typeof this._onEntrypointLoadedfunction&&this._onEntrypointLoaded(e)}_loadJSEntrypoint(e,r,t){let ntypeof rfunction;if(!this._scriptLoaded){this._scriptLoaded!0;let sthis._createScriptTag(e,t);if(n)console.debug(Injecting script> tag. Using callback.),this._onEntrypointLoadedr,document.head.append(s);else return new Promise((a,o)>{console.debug(Injecting script> tag. Using Promises. Use the callback approach instead!),this._didCreateEngineInitializerResolvea,s.addEventListener(error,o),document.head.append(s)})}}async _loadWasmEntrypoint(e,r,t,n){if(!this._scriptLoaded){this._scriptLoaded!0,this._onEntrypointLoadedn;let{mainWasmPath:s,jsSupportRuntimePath:a}e,oc(t,s),uc(t,a);this._ttPolicy!null&&(uthis._ttPolicy.createScriptURL(u));let p(await import(u)).compileStreaming(fetch(o)),l;e.rendererskwasm?l(async()>{let dawait r.skwasm;return window._flutter_skwasmInstanced,{skwasm:d.wasmExports,skwasmWrapper:d,ffi:{memory:d.wasmMemory}}})():lPromise.resolve({}),await(await(await p).instantiate(await l,{loadDynamicModule:async(d,S)>{let jfetch(c(t,d)),_c(t,S);this._ttPolicy!null&&(_this._ttPolicy.createScriptURL(_));let Aimport(_);returnawait j,await A}})).invokeMain()}}_createScriptTag(e,r){let tdocument.createElement(script);t.typeapplication/javascript,r&&(t.noncer);let ne;return this._ttPolicy!null&&(nthis._ttPolicy.createScriptURL(e)),t.srcn,t}};async function E(i,e,r){if(e0)return i;let t,nnew Promise((s,a)>{tsetTimeout(()>{a(new Error(`${r} took more than ${e}ms to resolve. Moving on.`,{cause:E}))},e)});return Promise.race(i,n).finally(()>{clearTimeout(t)})}var hclass{setTrustedTypesPolicy(e){this._ttPolicye}loadServiceWorker(e){if(!e)return console.debug(Null serviceWorker configuration. Skipping.),Promise.resolve();if(!(serviceWorkerin navigator)){let oService Worker API unavailable.;return window.isSecureContext||(o+`The current context is NOT secure.`,o+`Read more: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts`),Promise.reject(new Error(o))}let{serviceWorkerVersion:r,serviceWorkerUrl:tc(`flutter_service_worker.js?v${r}`),timeoutMillis:n4e3}e,st;this._ttPolicy!null&&(sthis._ttPolicy.createScriptURL(s));let anavigator.serviceWorker.register(s).then(o>this._getNewServiceWorker(o,r)).then(this._waitForServiceWorkerActivation);return E(a,n,prepareServiceWorker)}async _getNewServiceWorker(e,r){if(!e.active&&(e.installing||e.waiting))return console.debug(Installing/Activating first service worker.),e.installing||e.waiting;if(e.active.scriptURL.endsWith(r))return console.debug(Loading from existing service worker.),e.active;{let tawait e.update();return console.debug(Updating service worker.),t.installing||t.waiting||t.active}}async _waitForServiceWorkerActivation(e){if(!e||e.stateactivated)if(e){console.debug(Service worker already active.);return}else throw new Error(Cannot activate a null service worker!);return new Promise((r,t)>{e.addEventListener(statechange,()>{e.stateactivated&&(console.debug(Activated new service worker.),r())})})}};var gclass{constructor(e,rflutter-js){let te||/\.js$/,/\.mjs$/;window.trustedTypes&&(this.policytrustedTypes.createPolicy(r,{createScriptURL:function(n){if(n.startsWith(blob:))return n;let snew URL(n,window.location),as.pathname.split(/).pop();if(t.some(u>u.test(a)))return s.toString();console.error(URL rejected by TrustedTypes policy,r,:,n,(download prevented))}}))}};var ki>{let eWebAssembly.compileStreaming(fetch(i));return(r,t)>((async()>{let nawait e,sawait WebAssembly.instantiate(n,r);t(s,n)})(),{})};var W(i,e,r,t)>(window.flutterCanvasKitLoaded(async()>{if(window.flutterCanvasKit)return window.flutterCanvasKit;let nr.hasChromiumBreakIterators&&r.hasImageCodecs;if(!n&&e.canvasKitVariantchromium)throwChromium CanvasKit variant specifically requested, but unsupported in this browser;let sn&&e.canvasKitVariant!full,at;e.canvasKitVariantexperimentalWebParagraph?ac(a,experimental_webparagraph):s&&(ac(a,chromium));let oc(a,canvaskit.js);i.flutterTT.policy&&(oi.flutterTT.policy.createScriptURL(o));let uk(c(a,canvaskit.wasm)),mawait import(o);return window.flutterCanvasKitawait m.default({instantiateWasm:u}),window.flutterCanvasKit})(),window.flutterCanvasKitLoaded);var Pasync(i,e,r,t)>{let s!r.hasImageCodecs||!r.hasChromiumBreakIterators?skwasm_heavy:skwasm,ac(t,`${s}.js`),oa;i.flutterTT.policy&&(oi.flutterTT.policy.createScriptURL(o));let uk(c(t,`${s}.wasm`));return await(await import(o)).default({skwasmSingleThreaded:!r.crossOriginIsolated||e.forceSingleThreadedSkwasm,instantiateWasm:u,locateFile:(p,l)>{if(p.endsWith(.ww.js)){let yc(t,p);return URL.createObjectURL(new Blob(`use strict;let eventListener;eventListener (message) > { const pendingMessages ; const data message.data; datainstantiateWasm (info,receiveInstance) > { const instance new WebAssembly.Instance(datawasm, info); return receiveInstance(instance, datawasm) }; import(data.js).then(async (skwasm) > { await skwasm.default(data); removeEventListener(message, eventListener); for (const message of pendingMessages) { dispatchEvent(message); } }); removeEventListener(message, eventListener); eventListener (message) > { pendingMessages.push(message); }; addEventListener(message, eventListener);};addEventListener(message, eventListener);`,{type:application/javascript}))}return url},mainScriptUrlOrBlob:a})};var bclass{async loadEntrypoint(e){let{serviceWorker:r,...t}e||{},nnew g,snew h;s.setTrustedTypesPolicy(n.policy),await s.loadServiceWorker(r).catch(o>{console.warn(Exception while loading service worker:,o)});let anew v;return a.setTrustedTypesPolicy(n.policy),this.didCreateEngineInitializera.didCreateEngineInitializer.bind(a),a.loadEntrypoint(t)}async load({serviceWorkerSettings:e,onEntrypointLoaded:r,nonce:t,config:n}{}){n??{};let s_flutter.buildConfig;if(!s)throwFlutterLoader.load requires _flutter.buildConfig to be set;let an.wasmAllowList?.w.browserEngine??Cw.browserEngine,od>{switch(d){caseskwasm:return w.supportsWasmGC&&a;default:return!0}},u(d,S)>d.rendererS,md>d.compileTargetdart2wasm&&!w.supportsWasmGC||n.renderer&&!u(d,n.renderer)?!1:o(d.renderer),ps.builds.find(m);if(!p)throwFlutterLoader could not find a build compatible with configuration and environment.;let l{};l.flutterTTnew g,e&&(l.serviceWorkerLoadernew h,l.serviceWorkerLoader.setTrustedTypesPolicy(l.flutterTT.policy),await l.serviceWorkerLoader.loadServiceWorker(e).catch(d>{console.warn(Exception while loading service worker:,d)}));let yU(n,s);p.renderercanvaskit?l.canvasKitW(l,n,w,y):p.rendererskwasm&&(l.skwasmP(l,n,w,y));let fnew v;return f.setTrustedTypesPolicy(l.flutterTT.policy),this.didCreateEngineInitializerf.didCreateEngineInitializer.bind(f),f.load(p,l,n,t,r)}};window._flutter||(window._flutter{});window._flutter.loader||(window._flutter.loadernew b);})();//# sourceMappingURLflutter.js.mapif (!window._flutter) { window._flutter {};}_flutter.buildConfig {engineRevision:d2913632a4578ee4d0b8b1c4a69888c8a0672c4b,builds:{compileTarget:dart2js,renderer:canvaskit,mainJsPath:main.dart.js},{}}; // Set an initial progress of 33% when the page loads. progress.style.width `33%`; _flutter.loader.load({ onEntrypointLoaded: async function (engineInitializer) { // Update progress to 66% after the entry point is loaded. progress.style.width `66%`; // Initialize the Flutter engine. let appRunner; //Issue with Samsung browsers in darkmode override css theme for Flutter //This will force the app to run in canvaskit, where samsung browser cant change the theme if (navigator.userAgent.indexOf(SamsungBrowser) > - 1) { let config { renderer: canvaskit, useColorEmoji: true, }; appRunner await engineInitializer.initializeEngine(config); } else { appRunner await engineInitializer.initializeEngine(); } // Set progress to 99% before adding a delay. progress.style.width `99%`; // Hide the progress bar by reducing its opacity. progressBar.style.opacity 0; // Run the Flutter app. await appRunner.runApp(); // Add a fade-in effect to the Flutter view element. document.querySelector(flutter-view).classList.add(fade-in); }, }); }); /script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]