├── .github ├── ISSUE_TEMPLATE │ ├── config.yml │ ├── report-bug.md │ └── suggest-feature.md ├── label-actions.yml └── workflows │ ├── angular.yml │ ├── issues-first-greet.yml │ ├── issues-label-actions.yml │ └── issues-stale.yml ├── .gitignore ├── AUTHORS ├── LICENSE ├── README.md ├── TRADEMARKS ├── app-electron ├── .gitignore ├── build │ ├── icon.icns │ ├── icon.ico │ ├── icon.png │ ├── icon_dark.ico │ └── icon_dark.png ├── pack ├── pack-container.sh ├── package-lock.json ├── package-prod.json ├── package.json ├── pages │ └── loading.html ├── src │ ├── api.ts │ ├── datadir.ts │ ├── exec.ts │ ├── index.ts │ ├── ipc.ts │ ├── loader.ts │ ├── notifier.ts │ ├── preload.ts │ ├── service-manager.ts │ ├── sm-systemd.ts │ ├── sm-unknown.ts │ └── sm-windows.ts └── tsconfig.json ├── app ├── .gitignore ├── Gopkg.lock ├── Gopkg.toml ├── README.md ├── app.exe.manifest ├── build ├── config.go ├── dev.go ├── main.go ├── pack ├── system-api.go └── versioninfo.json ├── assets ├── README.md ├── css │ └── colors.css ├── defaults │ ├── fomantic.css │ └── semantic.css ├── favicons │ ├── android-icon-144x144.png │ ├── android-icon-192x192.png │ ├── android-icon-36x36.png │ ├── android-icon-48x48.png │ ├── android-icon-72x72.png │ ├── android-icon-96x96.png │ ├── apple-icon-114x114.png │ ├── apple-icon-120x120.png │ ├── apple-icon-144x144.png │ ├── apple-icon-152x152.png │ ├── apple-icon-180x180.png │ ├── apple-icon-57x57.png │ ├── apple-icon-60x60.png │ ├── apple-icon-72x72.png │ ├── apple-icon-76x76.png │ ├── apple-icon-precomposed.png │ ├── apple-icon.png │ ├── browserconfig.xml │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon-96x96.png │ ├── favicon.ico │ ├── head.html │ ├── manifest.json │ ├── ms-icon-144x144.png │ ├── ms-icon-150x150.png │ ├── ms-icon-310x310.png │ └── ms-icon-70x70.png ├── icons │ ├── README.md │ ├── pm_dark_128.png │ ├── pm_dark_256.png │ ├── pm_dark_512.ico │ ├── pm_dark_512.png │ ├── pm_dark_blue_128.png │ ├── pm_dark_blue_256.png │ ├── pm_dark_blue_512.ico │ ├── pm_dark_blue_512.png │ ├── pm_dark_green_128.png │ ├── pm_dark_green_256.png │ ├── pm_dark_green_512.ico │ ├── pm_dark_green_512.png │ ├── pm_dark_red_128.png │ ├── pm_dark_red_256.png │ ├── pm_dark_red_512.ico │ ├── pm_dark_red_512.png │ ├── pm_dark_yellow_128.png │ ├── pm_dark_yellow_256.png │ ├── pm_dark_yellow_512.ico │ ├── pm_dark_yellow_512.png │ ├── pm_light_128.png │ ├── pm_light_256.png │ ├── pm_light_512.ico │ ├── pm_light_512.png │ ├── pm_light_blue_128.png │ ├── pm_light_blue_256.png │ ├── pm_light_blue_512.ico │ ├── pm_light_blue_512.png │ ├── pm_light_green_128.png │ ├── pm_light_green_256.png │ ├── pm_light_green_512.ico │ ├── pm_light_green_512.png │ ├── pm_light_red_128.png │ ├── pm_light_red_256.png │ ├── pm_light_red_512.ico │ ├── pm_light_red_512.png │ ├── pm_light_yellow_128.png │ ├── pm_light_yellow_256.png │ ├── pm_light_yellow_512.ico │ └── pm_light_yellow_512.png ├── img │ ├── flags │ │ ├── AD.png │ │ ├── AE.png │ │ ├── AF.png │ │ ├── AG.png │ │ ├── AI.png │ │ ├── AL.png │ │ ├── AM.png │ │ ├── AN.png │ │ ├── AO.png │ │ ├── AQ.png │ │ ├── AR.png │ │ ├── AS.png │ │ ├── AT.png │ │ ├── AU.png │ │ ├── AW.png │ │ ├── AX.png │ │ ├── AZ.png │ │ ├── BA.png │ │ ├── BB.png │ │ ├── BD.png │ │ ├── BE.png │ │ ├── BF.png │ │ ├── BG.png │ │ ├── BH.png │ │ ├── BI.png │ │ ├── BJ.png │ │ ├── BL.png │ │ ├── BM.png │ │ ├── BN.png │ │ ├── BO.png │ │ ├── BR.png │ │ ├── BS.png │ │ ├── BT.png │ │ ├── BW.png │ │ ├── BY.png │ │ ├── BZ.png │ │ ├── CA.png │ │ ├── CC.png │ │ ├── CD.png │ │ ├── CF.png │ │ ├── CG.png │ │ ├── CH.png │ │ ├── CI.png │ │ ├── CK.png │ │ ├── CL.png │ │ ├── CM.png │ │ ├── CN.png │ │ ├── CO.png │ │ ├── CR.png │ │ ├── CT.png │ │ ├── CU.png │ │ ├── CV.png │ │ ├── CW.png │ │ ├── CX.png │ │ ├── CY.png │ │ ├── CZ.png │ │ ├── DE.png │ │ ├── DJ.png │ │ ├── DK.png │ │ ├── DM.png │ │ ├── DO.png │ │ ├── DZ.png │ │ ├── EC.png │ │ ├── EE.png │ │ ├── EG.png │ │ ├── EH.png │ │ ├── ER.png │ │ ├── ES.png │ │ ├── ET.png │ │ ├── EU.png │ │ ├── FI.png │ │ ├── FJ.png │ │ ├── FK.png │ │ ├── FM.png │ │ ├── FO.png │ │ ├── FR.png │ │ ├── GA.png │ │ ├── GB.png │ │ ├── GD.png │ │ ├── GE.png │ │ ├── GG.png │ │ ├── GH.png │ │ ├── GI.png │ │ ├── GL.png │ │ ├── GM.png │ │ ├── GN.png │ │ ├── GQ.png │ │ ├── GR.png │ │ ├── GS.png │ │ ├── GT.png │ │ ├── GU.png │ │ ├── GW.png │ │ ├── GY.png │ │ ├── HK.png │ │ ├── HN.png │ │ ├── HR.png │ │ ├── HT.png │ │ ├── HU.png │ │ ├── IC.png │ │ ├── ID.png │ │ ├── IE.png │ │ ├── IL.png │ │ ├── IM.png │ │ ├── IN.png │ │ ├── IQ.png │ │ ├── IR.png │ │ ├── IS.png │ │ ├── IT.png │ │ ├── JE.png │ │ ├── JM.png │ │ ├── JO.png │ │ ├── JP.png │ │ ├── KE.png │ │ ├── KG.png │ │ ├── KH.png │ │ ├── KI.png │ │ ├── KM.png │ │ ├── KN.png │ │ ├── KP.png │ │ ├── KR.png │ │ ├── KW.png │ │ ├── KY.png │ │ ├── KZ.png │ │ ├── LA.png │ │ ├── LB.png │ │ ├── LC.png │ │ ├── LI.png │ │ ├── LICENSE.txt │ │ ├── LK.png │ │ ├── LR.png │ │ ├── LS.png │ │ ├── LT.png │ │ ├── LU.png │ │ ├── LV.png │ │ ├── LY.png │ │ ├── MA.png │ │ ├── MC.png │ │ ├── MD.png │ │ ├── ME.png │ │ ├── MF.png │ │ ├── MG.png │ │ ├── MH.png │ │ ├── MK.png │ │ ├── ML.png │ │ ├── MM.png │ │ ├── MN.png │ │ ├── MO.png │ │ ├── MP.png │ │ ├── MQ.png │ │ ├── MR.png │ │ ├── MS.png │ │ ├── MT.png │ │ ├── MU.png │ │ ├── MV.png │ │ ├── MW.png │ │ ├── MX.png │ │ ├── MY.png │ │ ├── MZ.png │ │ ├── NA.png │ │ ├── NC.png │ │ ├── NE.png │ │ ├── NF.png │ │ ├── NG.png │ │ ├── NI.png │ │ ├── NL.png │ │ ├── NO.png │ │ ├── NP.png │ │ ├── NR.png │ │ ├── NU.png │ │ ├── NZ.png │ │ ├── OM.png │ │ ├── PA.png │ │ ├── PE.png │ │ ├── PF.png │ │ ├── PG.png │ │ ├── PH.png │ │ ├── PK.png │ │ ├── PL.png │ │ ├── PN.png │ │ ├── PR.png │ │ ├── PS.png │ │ ├── PT.png │ │ ├── PW.png │ │ ├── PY.png │ │ ├── QA.png │ │ ├── RE.png │ │ ├── RO.png │ │ ├── RS.png │ │ ├── RU.png │ │ ├── RW.png │ │ ├── SA.png │ │ ├── SB.png │ │ ├── SC.png │ │ ├── SD.png │ │ ├── SE.png │ │ ├── SG.png │ │ ├── SH.png │ │ ├── SI.png │ │ ├── SK.png │ │ ├── SL.png │ │ ├── SM.png │ │ ├── SN.png │ │ ├── SO.png │ │ ├── SR.png │ │ ├── SS.png │ │ ├── ST.png │ │ ├── SV.png │ │ ├── SX.png │ │ ├── SY.png │ │ ├── SZ.png │ │ ├── TC.png │ │ ├── TD.png │ │ ├── TF.png │ │ ├── TG.png │ │ ├── TH.png │ │ ├── TJ.png │ │ ├── TK.png │ │ ├── TL.png │ │ ├── TM.png │ │ ├── TN.png │ │ ├── TO.png │ │ ├── TR.png │ │ ├── TT.png │ │ ├── TV.png │ │ ├── TW.png │ │ ├── TZ.png │ │ ├── UA.png │ │ ├── UG.png │ │ ├── US.png │ │ ├── UY.png │ │ ├── UZ.png │ │ ├── VA.png │ │ ├── VC.png │ │ ├── VE.png │ │ ├── VG.png │ │ ├── VI.png │ │ ├── VN.png │ │ ├── VU.png │ │ ├── WF.png │ │ ├── WS.png │ │ ├── YE.png │ │ ├── YT.png │ │ ├── ZA.png │ │ ├── ZM.png │ │ ├── ZW.png │ │ ├── _abkhazia.png │ │ ├── _basque-country.png │ │ ├── _british-antarctic-territory.png │ │ ├── _commonwealth.png │ │ ├── _england.png │ │ ├── _gosquared.png │ │ ├── _kosovo.png │ │ ├── _mars.png │ │ ├── _nagorno-karabakh.png │ │ ├── _nato.png │ │ ├── _northern-cyprus.png │ │ ├── _olympics.png │ │ ├── _red-cross.png │ │ ├── _scotland.png │ │ ├── _somaliland.png │ │ ├── _south-ossetia.png │ │ ├── _united-nations.png │ │ ├── _unknown.png │ │ └── _wales.png │ ├── plants1-br.png │ ├── plants1.png │ ├── spn-feature-carousel │ │ ├── access-regional-content-easily.png │ │ ├── built-from-the-ground-up.png │ │ ├── bye-bye-vpns.png │ │ ├── easily-control-your-privacy.png │ │ └── multiple-identities-for-each-app.png │ └── spn-login.png ├── js │ ├── ie │ │ └── polyfill.min.js │ ├── portapi.js │ ├── portapi.md │ └── vue2-sortable.js ├── pack ├── themed │ └── fomantic │ │ ├── .eslintrc.js │ │ ├── postcss.config.js │ │ ├── semantic.css │ │ ├── semantic.js │ │ ├── semantic.min.css │ │ ├── semantic.min.js │ │ └── themes │ │ └── default │ │ └── assets │ │ ├── fonts │ │ ├── brand-icons.eot │ │ ├── brand-icons.svg │ │ ├── brand-icons.ttf │ │ ├── brand-icons.woff │ │ ├── brand-icons.woff2 │ │ ├── icons.eot │ │ ├── icons.svg │ │ ├── icons.ttf │ │ ├── icons.woff │ │ ├── icons.woff2 │ │ ├── outline-icons.eot │ │ ├── outline-icons.svg │ │ ├── outline-icons.ttf │ │ ├── outline-icons.woff │ │ └── outline-icons.woff2 │ │ └── images │ │ └── flags.png ├── vendor │ ├── fonts │ │ ├── Roboto-300 │ │ │ ├── LICENSE.txt │ │ │ ├── Roboto-300.eot │ │ │ ├── Roboto-300.svg │ │ │ ├── Roboto-300.ttf │ │ │ ├── Roboto-300.woff │ │ │ └── Roboto-300.woff2 │ │ ├── Roboto-300italic │ │ │ ├── LICENSE.txt │ │ │ ├── Roboto-300italic.eot │ │ │ ├── Roboto-300italic.svg │ │ │ ├── Roboto-300italic.ttf │ │ │ ├── Roboto-300italic.woff │ │ │ └── Roboto-300italic.woff2 │ │ ├── Roboto-500 │ │ │ ├── LICENSE.txt │ │ │ ├── Roboto-500.eot │ │ │ ├── Roboto-500.svg │ │ │ ├── Roboto-500.ttf │ │ │ ├── Roboto-500.woff │ │ │ └── Roboto-500.woff2 │ │ ├── Roboto-500italic │ │ │ ├── LICENSE.txt │ │ │ ├── Roboto-500italic.eot │ │ │ ├── Roboto-500italic.svg │ │ │ ├── Roboto-500italic.ttf │ │ │ ├── Roboto-500italic.woff │ │ │ └── Roboto-500italic.woff2 │ │ ├── Roboto-700 │ │ │ ├── LICENSE.txt │ │ │ ├── Roboto-700.eot │ │ │ ├── Roboto-700.svg │ │ │ ├── Roboto-700.ttf │ │ │ ├── Roboto-700.woff │ │ │ └── Roboto-700.woff2 │ │ ├── Roboto-700italic │ │ │ ├── LICENSE.txt │ │ │ ├── Roboto-700italic.eot │ │ │ ├── Roboto-700italic.svg │ │ │ ├── Roboto-700italic.ttf │ │ │ ├── Roboto-700italic.woff │ │ │ └── Roboto-700italic.woff2 │ │ ├── Roboto-italic │ │ │ ├── LICENSE.txt │ │ │ ├── Roboto-italic.eot │ │ │ ├── Roboto-italic.svg │ │ │ ├── Roboto-italic.ttf │ │ │ ├── Roboto-italic.woff │ │ │ └── Roboto-italic.woff2 │ │ ├── Roboto-regular │ │ │ ├── LICENSE.txt │ │ │ ├── Roboto-regular.eot │ │ │ ├── Roboto-regular.svg │ │ │ ├── Roboto-regular.ttf │ │ │ ├── Roboto-regular.woff │ │ │ └── Roboto-regular.woff2 │ │ ├── roboto-slimfix.css │ │ └── roboto.css │ └── js │ │ ├── d3-7.3.0 │ │ ├── LICENSE │ │ ├── d3.js │ │ └── d3.min.js │ │ ├── d3-graphviz-4.1.0 │ │ ├── LICENSE │ │ ├── d3-graphviz.js │ │ ├── d3-graphviz.js.map │ │ └── d3-graphviz.min.js │ │ ├── hpcc-js-wasm-1.13.0 │ │ ├── LICENSE │ │ ├── expat.es6.js │ │ ├── expat.es6.js.map │ │ ├── expat.js │ │ ├── expat.js.map │ │ ├── expat.node.es6.js │ │ ├── expat.node.es6.js.map │ │ ├── expat.node.js │ │ ├── expat.node.js.map │ │ ├── expatlib.wasm │ │ ├── graphviz.es6.js │ │ ├── graphviz.es6.js.map │ │ ├── graphviz.js │ │ ├── graphviz.js.map │ │ ├── graphviz.node.es6.js │ │ ├── graphviz.node.es6.js.map │ │ ├── graphviz.node.js │ │ ├── graphviz.node.js.map │ │ ├── graphvizlib.wasm │ │ ├── index.es6.js │ │ ├── index.es6.js.map │ │ ├── index.js │ │ ├── index.js.map │ │ ├── index.min.js │ │ ├── index.min.js.map │ │ ├── index.node.es6.js │ │ ├── index.node.es6.js.map │ │ ├── index.node.js │ │ └── index.node.js.map │ │ └── jquery │ │ ├── jquery3.min.js │ │ └── jquery3.min.map ├── version.txt └── world-50m.json ├── modules ├── base │ ├── .gitignore │ ├── .ignore │ ├── README.md │ ├── babel.config.js │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── assets │ │ └── index.html │ ├── serve │ ├── src │ │ ├── App.vue │ │ ├── components │ │ │ ├── About.vue │ │ │ ├── AppSettings.vue │ │ │ ├── Base.vue │ │ │ ├── Dashboard.vue │ │ │ ├── Notifications.vue │ │ │ ├── SPN.vue │ │ │ ├── SaveWindowSize.vue │ │ │ ├── Settings.vue │ │ │ ├── Support.vue │ │ │ └── options │ │ │ │ ├── Option.vue │ │ │ │ ├── OptionBoolean.vue │ │ │ │ ├── OptionInt.vue │ │ │ │ ├── OptionIntSecurityLevel.vue │ │ │ │ ├── OptionString.vue │ │ │ │ ├── OptionStringArray.vue │ │ │ │ ├── OptionStringSelect.vue │ │ │ │ └── OptionsView.vue │ │ └── main.js │ └── vue.config.js ├── console │ ├── .eslintrc.js │ ├── .gitignore │ ├── .ignore │ ├── README.md │ ├── babel.config.js │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── assets │ │ └── index.html │ ├── serve │ ├── src │ │ ├── App.vue │ │ ├── components │ │ │ └── Console.vue │ │ └── main.js │ └── vue.config.js ├── monitor │ ├── .gitignore │ ├── .ignore │ ├── README.md │ ├── babel.config.js │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── assets │ │ └── index.html │ ├── serve │ ├── src │ │ ├── App.vue │ │ ├── components │ │ │ ├── ChildProcessList.vue │ │ │ ├── Monitor.vue │ │ │ └── Verdict.vue │ │ └── main.js │ └── vue.config.js ├── npm-all ├── pack └── portmaster │ ├── .angulardoc.json │ ├── .editorconfig │ ├── .eslintrc.json │ ├── .gitignore │ ├── .vscode │ ├── launch.json │ └── settings.json │ ├── README.md │ ├── angular.json │ ├── browser-extension-dev.config.ts │ ├── browser-extension.config.ts │ ├── docker.sh │ ├── e2e │ ├── protractor.conf.js │ ├── src │ │ ├── app.e2e-spec.ts │ │ └── app.po.ts │ └── tsconfig.json │ ├── karma.conf.js │ ├── package-lock.json │ ├── package.json │ ├── projects │ ├── portmaster-chrome-extension │ │ ├── karma.conf.js │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app-routing.module.ts │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.scss │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.module.ts │ │ │ │ ├── domain-list │ │ │ │ │ ├── domain-list.component.html │ │ │ │ │ ├── domain-list.component.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── header │ │ │ │ │ ├── header.component.html │ │ │ │ │ ├── header.component.scss │ │ │ │ │ ├── header.component.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── interceptor.ts │ │ │ │ ├── request-interceptor.service.ts │ │ │ │ └── welcome │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── intro.component.html │ │ │ │ │ ├── intro.component.ts │ │ │ │ │ └── welcome.module.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ └── icon_128.png │ │ │ ├── background.ts │ │ │ ├── background │ │ │ │ ├── commands.ts │ │ │ │ ├── tab-tracker.ts │ │ │ │ └── tab-utils.ts │ │ │ ├── environments │ │ │ │ ├── environment.prod.ts │ │ │ │ └── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ ├── manifest.json │ │ │ ├── polyfills.ts │ │ │ ├── styles.scss │ │ │ └── test.ts │ │ ├── tsconfig.app.json │ │ └── tsconfig.spec.json │ ├── safing │ │ ├── portmaster-api │ │ │ ├── README.md │ │ │ ├── karma.conf.js │ │ │ ├── ng-package.json │ │ │ ├── package-lock.json │ │ │ ├── package.json │ │ │ ├── src │ │ │ │ ├── lib │ │ │ │ │ ├── app-profile.service.ts │ │ │ │ │ ├── app-profile.types.ts │ │ │ │ │ ├── config.service.ts │ │ │ │ │ ├── config.types.ts │ │ │ │ │ ├── core.types.ts │ │ │ │ │ ├── debug-api.service.ts │ │ │ │ │ ├── features.ts │ │ │ │ │ ├── meta-api.service.ts │ │ │ │ │ ├── module.ts │ │ │ │ │ ├── netquery.service.ts │ │ │ │ │ ├── network.types.ts │ │ │ │ │ ├── portapi.service.ts │ │ │ │ │ ├── portapi.types.ts │ │ │ │ │ ├── spn.service.ts │ │ │ │ │ ├── spn.types.ts │ │ │ │ │ ├── utils.ts │ │ │ │ │ └── websocket.service.ts │ │ │ │ ├── public-api.ts │ │ │ │ └── test.ts │ │ │ ├── tsconfig.lib.json │ │ │ ├── tsconfig.lib.prod.json │ │ │ └── tsconfig.spec.json │ │ └── ui │ │ │ ├── .eslintrc.json │ │ │ ├── README.md │ │ │ ├── karma.conf.js │ │ │ ├── ng-package.json │ │ │ ├── package.json │ │ │ ├── src │ │ │ ├── lib │ │ │ │ ├── accordion │ │ │ │ │ ├── accordion-group.html │ │ │ │ │ ├── accordion-group.ts │ │ │ │ │ ├── accordion.html │ │ │ │ │ ├── accordion.module.ts │ │ │ │ │ ├── accordion.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── animations │ │ │ │ │ └── index.ts │ │ │ │ ├── dialog │ │ │ │ │ ├── _confirm.dialog.scss │ │ │ │ │ ├── _dialog.scss │ │ │ │ │ ├── confirm.dialog.html │ │ │ │ │ ├── confirm.dialog.ts │ │ │ │ │ ├── dialog.animations.ts │ │ │ │ │ ├── dialog.container.ts │ │ │ │ │ ├── dialog.module.ts │ │ │ │ │ ├── dialog.ref.ts │ │ │ │ │ ├── dialog.service.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── dropdown │ │ │ │ │ ├── dropdown.html │ │ │ │ │ ├── dropdown.module.ts │ │ │ │ │ ├── dropdown.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── overlay-stepper │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── overlay-stepper-container.html │ │ │ │ │ ├── overlay-stepper-container.ts │ │ │ │ │ ├── overlay-stepper.module.ts │ │ │ │ │ ├── overlay-stepper.ts │ │ │ │ │ ├── refs.ts │ │ │ │ │ ├── step-outlet.ts │ │ │ │ │ └── step.ts │ │ │ │ ├── pagination │ │ │ │ │ ├── _pagination.scss │ │ │ │ │ ├── dynamic-items-paginator.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── pagination.html │ │ │ │ │ ├── pagination.module.ts │ │ │ │ │ ├── pagination.ts │ │ │ │ │ └── snapshot-paginator.ts │ │ │ │ ├── select │ │ │ │ │ ├── _select.scss │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── item.ts │ │ │ │ │ ├── select.html │ │ │ │ │ ├── select.module.ts │ │ │ │ │ └── select.ts │ │ │ │ ├── tabs │ │ │ │ │ ├── _tab-group.scss │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── tab-group.html │ │ │ │ │ ├── tab-group.ts │ │ │ │ │ ├── tab.ts │ │ │ │ │ └── tabs.module.ts │ │ │ │ ├── tipup │ │ │ │ │ ├── _tipup.scss │ │ │ │ │ ├── anchor.ts │ │ │ │ │ ├── clone-node.ts │ │ │ │ │ ├── css-utils.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── safe.pipe.ts │ │ │ │ │ ├── tipup-component.ts │ │ │ │ │ ├── tipup.html │ │ │ │ │ ├── tipup.module.ts │ │ │ │ │ ├── tipup.ts │ │ │ │ │ ├── translations.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── toggle-switch │ │ │ │ │ ├── _toggle-switch.scss │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── toggle-switch.html │ │ │ │ │ ├── toggle-switch.ts │ │ │ │ │ └── toggle.module.ts │ │ │ │ ├── tooltip │ │ │ │ │ ├── _tooltip-component.scss │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── tooltip-component.html │ │ │ │ │ ├── tooltip-component.ts │ │ │ │ │ ├── tooltip.module.ts │ │ │ │ │ └── tooltip.ts │ │ │ │ └── ui.module.ts │ │ │ ├── public-api.ts │ │ │ └── test.ts │ │ │ ├── theming.scss │ │ │ ├── tsconfig.lib.json │ │ │ ├── tsconfig.lib.prod.json │ │ │ └── tsconfig.spec.json │ └── tauri-builtin │ │ ├── src │ │ ├── app │ │ │ ├── app.component.html │ │ │ ├── app.component.ts │ │ │ └── app.config.ts │ │ ├── assets │ │ │ ├── .gitkeep │ │ │ └── portmaster-logo.png │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── main.ts │ │ └── styles.scss │ │ └── tsconfig.app.json │ ├── proxy.json │ ├── src │ ├── app │ │ ├── app-routing.module.ts │ │ ├── app.component.html │ │ ├── app.component.scss │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── integration │ │ │ ├── browser.ts │ │ │ ├── electron.ts │ │ │ ├── factory.ts │ │ │ ├── index.ts │ │ │ ├── integration.ts │ │ │ └── taur-app.ts │ │ ├── intro │ │ │ ├── index.ts │ │ │ ├── intro.module.ts │ │ │ ├── step-1-welcome │ │ │ │ ├── index.ts │ │ │ │ ├── step-1-welcome.html │ │ │ │ └── step-1-welcome.ts │ │ │ ├── step-2-trackers │ │ │ │ ├── index.ts │ │ │ │ ├── step-2-trackers.html │ │ │ │ └── step-2-trackers.ts │ │ │ ├── step-3-dns │ │ │ │ ├── index.ts │ │ │ │ ├── step-3-dns.html │ │ │ │ └── step-3-dns.ts │ │ │ ├── step-4-tipups │ │ │ │ ├── index.ts │ │ │ │ ├── step-4-tipups.html │ │ │ │ └── step-4-tipups.ts │ │ │ └── step.scss │ │ ├── layout │ │ │ ├── navigation │ │ │ │ ├── navigation.html │ │ │ │ ├── navigation.scss │ │ │ │ └── navigation.ts │ │ │ └── side-dash │ │ │ │ ├── side-dash.html │ │ │ │ ├── side-dash.scss │ │ │ │ └── side-dash.ts │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── pages │ │ │ ├── app-view │ │ │ │ ├── app-insights │ │ │ │ │ ├── app-insights.component.html │ │ │ │ │ └── app-insights.component.ts │ │ │ │ ├── app-view.html │ │ │ │ ├── app-view.scss │ │ │ │ ├── app-view.ts │ │ │ │ ├── index.ts │ │ │ │ ├── merge-profile-dialog │ │ │ │ │ ├── merge-profile-dialog.component.html │ │ │ │ │ └── merge-profile-dialog.component.ts │ │ │ │ ├── overview.html │ │ │ │ ├── overview.scss │ │ │ │ ├── overview.ts │ │ │ │ ├── qs-history │ │ │ │ │ ├── qs-history.component.html │ │ │ │ │ ├── qs-history.component.scss │ │ │ │ │ └── qs-history.component.ts │ │ │ │ ├── qs-internet │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── qs-internet.html │ │ │ │ │ └── qs-internet.ts │ │ │ │ ├── qs-select-exit │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── qs-select-exit.html │ │ │ │ │ ├── qs-select-exit.scss │ │ │ │ │ └── qs-select-exit.ts │ │ │ │ └── qs-use-spn │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── qs-use-spn.html │ │ │ │ │ └── qs-use-spn.ts │ │ │ ├── dashboard │ │ │ │ ├── dashboard-widget │ │ │ │ │ ├── dashboard-widget.component.html │ │ │ │ │ └── dashboard-widget.component.ts │ │ │ │ ├── dashboard.component.html │ │ │ │ ├── dashboard.component.scss │ │ │ │ ├── dashboard.component.ts │ │ │ │ └── feature-card │ │ │ │ │ ├── feature-card.component.html │ │ │ │ │ ├── feature-card.component.scss │ │ │ │ │ └── feature-card.component.ts │ │ │ ├── monitor │ │ │ │ ├── index.ts │ │ │ │ ├── monitor.html │ │ │ │ ├── monitor.scss │ │ │ │ └── monitor.ts │ │ │ ├── page.scss │ │ │ ├── settings │ │ │ │ ├── settings.html │ │ │ │ ├── settings.scss │ │ │ │ └── settings.ts │ │ │ ├── spn │ │ │ │ ├── country-details │ │ │ │ │ ├── country-details.html │ │ │ │ │ ├── country-details.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── country-overlay │ │ │ │ │ ├── country-overlay.html │ │ │ │ │ ├── country-overlay.scss │ │ │ │ │ ├── country-overlay.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── map-legend │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── map-legend.html │ │ │ │ │ └── map-legend.ts │ │ │ │ ├── map-renderer │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── map-renderer.ts │ │ │ │ │ └── map-style.scss │ │ │ │ ├── map.service.ts │ │ │ │ ├── node-icon │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── node-icon.html │ │ │ │ │ ├── node-icon.scss │ │ │ │ │ └── node-icon.ts │ │ │ │ ├── pin-details │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── pin-details.html │ │ │ │ │ └── pin-details.ts │ │ │ │ ├── pin-list │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── pin-list.html │ │ │ │ │ └── pin-list.ts │ │ │ │ ├── pin-overlay │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── pin-overlay.html │ │ │ │ │ ├── pin-overlay.scss │ │ │ │ │ └── pin-overlay.ts │ │ │ │ ├── pin-route │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── pin-route.html │ │ │ │ │ ├── pin-route.scss │ │ │ │ │ └── pin-route.ts │ │ │ │ ├── spn-feature-carousel │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── spn-feature-carousel.html │ │ │ │ │ ├── spn-feature-carousel.scss │ │ │ │ │ └── spn-feature-carousel.ts │ │ │ │ ├── spn-page.html │ │ │ │ ├── spn-page.scss │ │ │ │ ├── spn-page.ts │ │ │ │ ├── spn.module.ts │ │ │ │ └── utils.ts │ │ │ └── support │ │ │ │ ├── form │ │ │ │ ├── index.ts │ │ │ │ ├── support-form.html │ │ │ │ ├── support-form.scss │ │ │ │ └── support-form.ts │ │ │ │ ├── index.ts │ │ │ │ ├── pages.ts │ │ │ │ ├── progress-dialog │ │ │ │ ├── index.ts │ │ │ │ ├── progress-dialog.html │ │ │ │ └── progress-dialog.ts │ │ │ │ ├── support.html │ │ │ │ ├── support.scss │ │ │ │ └── support.ts │ │ ├── prompt-entrypoint │ │ │ ├── prompt-entrypoint.ts │ │ │ └── prompt.html │ │ ├── services │ │ │ ├── index.ts │ │ │ ├── notifications.service.spec.ts │ │ │ ├── notifications.service.ts │ │ │ ├── notifications.types.ts │ │ │ ├── package.json │ │ │ ├── session-data.service.ts │ │ │ ├── status.service.spec.ts │ │ │ ├── status.service.ts │ │ │ ├── status.types.ts │ │ │ ├── supporthub.service.ts │ │ │ ├── ui-state.service.ts │ │ │ └── virtual-notification.ts │ │ └── shared │ │ │ ├── action-indicator │ │ │ ├── action-indicator.module.ts │ │ │ ├── action-indicator.service.ts │ │ │ ├── index.ts │ │ │ ├── indicator.html │ │ │ ├── indicator.scss │ │ │ └── indicator.ts │ │ │ ├── animations.ts │ │ │ ├── app-icon │ │ │ ├── app-icon-resolver.ts │ │ │ ├── app-icon.html │ │ │ ├── app-icon.module.ts │ │ │ ├── app-icon.scss │ │ │ ├── app-icon.ts │ │ │ └── index.ts │ │ │ ├── config │ │ │ ├── basic-setting │ │ │ │ ├── basic-setting.html │ │ │ │ ├── basic-setting.scss │ │ │ │ ├── basic-setting.ts │ │ │ │ └── index.ts │ │ │ ├── config-settings.html │ │ │ ├── config-settings.scss │ │ │ ├── config-settings.ts │ │ │ ├── config.module.ts │ │ │ ├── export-dialog │ │ │ │ ├── export-dialog.component.html │ │ │ │ └── export-dialog.component.ts │ │ │ ├── filter-lists │ │ │ │ ├── filter-list.html │ │ │ │ ├── filter-list.scss │ │ │ │ ├── filter-list.ts │ │ │ │ └── index.ts │ │ │ ├── generic-setting │ │ │ │ ├── generic-setting.html │ │ │ │ ├── generic-setting.scss │ │ │ │ ├── generic-setting.ts │ │ │ │ └── index.ts │ │ │ ├── import-dialog │ │ │ │ ├── cursor.ts │ │ │ │ ├── import-dialog.component.html │ │ │ │ ├── import-dialog.component.ts │ │ │ │ └── selection.ts │ │ │ ├── index.ts │ │ │ ├── ordererd-list │ │ │ │ ├── index.ts │ │ │ │ ├── item.html │ │ │ │ ├── item.scss │ │ │ │ ├── item.ts │ │ │ │ ├── ordered-list.html │ │ │ │ ├── ordered-list.scss │ │ │ │ └── ordered-list.ts │ │ │ ├── rule-list │ │ │ │ ├── index.ts │ │ │ │ ├── list-item.html │ │ │ │ ├── list-item.scss │ │ │ │ ├── list-item.ts │ │ │ │ ├── rule-list.html │ │ │ │ ├── rule-list.scss │ │ │ │ └── rule-list.ts │ │ │ └── safe.pipe.ts │ │ │ ├── count-indicator │ │ │ ├── count-indicator.html │ │ │ ├── count-indicator.module.ts │ │ │ ├── count-indicator.scss │ │ │ ├── count-indicator.ts │ │ │ ├── count.pipe.ts │ │ │ └── index.ts │ │ │ ├── country-flag │ │ │ ├── country-flag.ts │ │ │ ├── country.module.ts │ │ │ └── index.ts │ │ │ ├── edit-profile-dialog │ │ │ ├── edit-profile-dialog.html │ │ │ ├── edit-profile-dialog.scss │ │ │ ├── edit-profile-dialog.ts │ │ │ └── index.ts │ │ │ ├── exit-screen │ │ │ ├── exit-screen.html │ │ │ ├── exit-screen.scss │ │ │ ├── exit-screen.ts │ │ │ ├── exit.service.ts │ │ │ └── index.ts │ │ │ ├── expertise │ │ │ ├── expertise-directive.ts │ │ │ ├── expertise-switch.html │ │ │ ├── expertise-switch.scss │ │ │ ├── expertise-switch.ts │ │ │ ├── expertise.module.ts │ │ │ ├── expertise.service.ts │ │ │ └── index.ts │ │ │ ├── external-link.directive.ts │ │ │ ├── feature-scout │ │ │ ├── feature-scout.html │ │ │ ├── feature-scout.scss │ │ │ ├── feature-scout.ts │ │ │ └── index.ts │ │ │ ├── focus │ │ │ ├── focus.directive.ts │ │ │ ├── focus.module.ts │ │ │ └── index.ts │ │ │ ├── fuzzySearch │ │ │ ├── fuse.service.ts │ │ │ ├── index.ts │ │ │ └── search-pipe.ts │ │ │ ├── loading │ │ │ ├── index.ts │ │ │ ├── loading.html │ │ │ ├── loading.scss │ │ │ └── loading.ts │ │ │ ├── menu │ │ │ ├── index.ts │ │ │ ├── menu-group.scss │ │ │ ├── menu-item.scss │ │ │ ├── menu-trigger.html │ │ │ ├── menu-trigger.scss │ │ │ ├── menu.html │ │ │ ├── menu.module.ts │ │ │ └── menu.ts │ │ │ ├── multi-switch │ │ │ ├── index.ts │ │ │ ├── multi-switch.html │ │ │ ├── multi-switch.module.ts │ │ │ ├── multi-switch.scss │ │ │ ├── multi-switch.ts │ │ │ ├── switch-item.scss │ │ │ └── switch-item.ts │ │ │ ├── netquery │ │ │ ├── .eslintrc.json │ │ │ ├── add-to-filter │ │ │ │ ├── add-to-filter.ts │ │ │ │ └── index.ts │ │ │ ├── circular-bar-chart │ │ │ │ └── circular-bar-chart.component.ts │ │ │ ├── combined-menu.pipe.ts │ │ │ ├── connection-details │ │ │ │ ├── conn-details.html │ │ │ │ ├── conn-details.scss │ │ │ │ ├── conn-details.ts │ │ │ │ └── index.ts │ │ │ ├── connection-helper.service.ts │ │ │ ├── connection-row │ │ │ │ ├── conn-row.html │ │ │ │ ├── conn-row.scss │ │ │ │ ├── conn-row.ts │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── line-chart │ │ │ │ ├── index.ts │ │ │ │ └── line-chart.ts │ │ │ ├── netquery.component.html │ │ │ ├── netquery.component.ts │ │ │ ├── netquery.module.ts │ │ │ ├── pipes │ │ │ │ ├── can-show.pipe.ts │ │ │ │ ├── can-use-rules.pipe.ts │ │ │ │ ├── country-name.pipe.ts │ │ │ │ ├── index.ts │ │ │ │ ├── is-blocked.pipe.ts │ │ │ │ └── location.pipe.ts │ │ │ ├── scope-label │ │ │ │ ├── index.ts │ │ │ │ ├── scope-label.html │ │ │ │ └── scope-label.ts │ │ │ ├── search-overlay │ │ │ │ ├── index.ts │ │ │ │ ├── search-overlay.html │ │ │ │ └── search-overlay.ts │ │ │ ├── searchbar │ │ │ │ ├── index.ts │ │ │ │ ├── searchbar.html │ │ │ │ └── searchbar.ts │ │ │ ├── tag-bar │ │ │ │ ├── index.ts │ │ │ │ ├── tag-bar.html │ │ │ │ └── tag-bar.ts │ │ │ ├── textql │ │ │ │ ├── helper.ts │ │ │ │ ├── index.ts │ │ │ │ ├── input.ts │ │ │ │ ├── lexer.ts │ │ │ │ ├── parser.ts │ │ │ │ └── token.ts │ │ │ └── utils.ts │ │ │ ├── network-scout │ │ │ ├── index.ts │ │ │ ├── network-scout.html │ │ │ ├── network-scout.scss │ │ │ └── network-scout.ts │ │ │ ├── notification-list │ │ │ ├── index.ts │ │ │ ├── notification-list.component.html │ │ │ ├── notification-list.component.scss │ │ │ └── notification-list.component.ts │ │ │ ├── notification │ │ │ ├── notification.html │ │ │ ├── notification.scss │ │ │ └── notification.ts │ │ │ ├── pipes │ │ │ ├── bytes.pipe.ts │ │ │ ├── common-pipes.module.ts │ │ │ ├── duration.pipe.ts │ │ │ ├── index.ts │ │ │ ├── round.pipe.ts │ │ │ ├── time-ago.pipe.ts │ │ │ ├── to-profile.pipe.ts │ │ │ └── to-seconds.pipe.ts │ │ │ ├── process-details-dialog │ │ │ ├── index.ts │ │ │ ├── process-details-dialog.html │ │ │ ├── process-details-dialog.scss │ │ │ └── process-details-dialog.ts │ │ │ ├── prompt-list │ │ │ ├── index.ts │ │ │ ├── prompt-list.component.html │ │ │ ├── prompt-list.component.scss │ │ │ └── prompt-list.component.ts │ │ │ ├── security-lock │ │ │ ├── index.ts │ │ │ ├── security-lock.html │ │ │ ├── security-lock.scss │ │ │ └── security-lock.ts │ │ │ ├── spn-account-details │ │ │ ├── index.ts │ │ │ ├── spn-account-details.html │ │ │ ├── spn-account-details.scss │ │ │ └── spn-account-details.ts │ │ │ ├── spn-login │ │ │ ├── index.ts │ │ │ ├── spn-login.html │ │ │ ├── spn-login.scss │ │ │ └── spn-login.ts │ │ │ ├── spn-network-status │ │ │ ├── index.ts │ │ │ ├── spn-network-status.html │ │ │ ├── spn-network-status.scss │ │ │ └── spn-network-status.ts │ │ │ ├── spn-status │ │ │ ├── index.ts │ │ │ ├── spn-status.html │ │ │ └── spn-status.ts │ │ │ ├── status-pilot │ │ │ ├── index.ts │ │ │ ├── pilot-widget.html │ │ │ ├── pilot-widget.scss │ │ │ └── pilot-widget.ts │ │ │ ├── text-placeholder │ │ │ ├── index.ts │ │ │ ├── placeholder.scss │ │ │ └── placeholder.ts │ │ │ └── utils.ts │ ├── assets │ ├── electron-app.d.ts │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── i18n │ │ ├── helptexts.yaml │ │ └── helptexts.yaml.d.ts │ ├── index.html │ ├── main.ts │ ├── polyfills.ts │ ├── styles.scss │ ├── test.ts │ ├── theme.less │ └── theme │ │ ├── _breadcrumbs.scss │ │ ├── _button.scss │ │ ├── _card.scss │ │ ├── _colors.scss │ │ ├── _dialog.scss │ │ ├── _drag-n-drop.scss │ │ ├── _inputs.scss │ │ ├── _markdown.scss │ │ ├── _pill.scss │ │ ├── _scroll.scss │ │ ├── _search.scss │ │ ├── _table.scss │ │ ├── _tailwind.scss │ │ ├── _trust-level.scss │ │ ├── _typography.scss │ │ ├── _verdict.scss │ │ └── mixins │ │ └── _pill.scss │ ├── tailwind.config.js │ ├── tsconfig.app.json │ ├── tsconfig.json │ ├── tsconfig.spec.json │ └── tslint.json ├── notifier ├── .gitignore ├── Gopkg.lock ├── Gopkg.toml ├── README.md ├── build ├── go.mod ├── go.sum ├── http_api.go ├── icons.go ├── icons │ ├── icons.go │ ├── icons │ │ ├── README.md │ │ ├── pm_dark_128.png │ │ ├── pm_dark_256.png │ │ ├── pm_dark_512.ico │ │ ├── pm_dark_512.png │ │ ├── pm_dark_blue_128.png │ │ ├── pm_dark_blue_256.png │ │ ├── pm_dark_blue_512.ico │ │ ├── pm_dark_blue_512.png │ │ ├── pm_dark_green_128.png │ │ ├── pm_dark_green_256.png │ │ ├── pm_dark_green_512.ico │ │ ├── pm_dark_green_512.png │ │ ├── pm_dark_red_128.png │ │ ├── pm_dark_red_256.png │ │ ├── pm_dark_red_512.ico │ │ ├── pm_dark_red_512.png │ │ ├── pm_dark_yellow_128.png │ │ ├── pm_dark_yellow_256.png │ │ ├── pm_dark_yellow_512.ico │ │ ├── pm_dark_yellow_512.png │ │ ├── pm_light_128.png │ │ ├── pm_light_256.png │ │ ├── pm_light_512.ico │ │ ├── pm_light_512.png │ │ ├── pm_light_blue_128.png │ │ ├── pm_light_blue_256.png │ │ ├── pm_light_blue_512.ico │ │ ├── pm_light_blue_512.png │ │ ├── pm_light_green_128.png │ │ ├── pm_light_green_256.png │ │ ├── pm_light_green_512.ico │ │ ├── pm_light_green_512.png │ │ ├── pm_light_red_128.png │ │ ├── pm_light_red_256.png │ │ ├── pm_light_red_512.ico │ │ ├── pm_light_red_512.png │ │ ├── pm_light_yellow_128.png │ │ ├── pm_light_yellow_256.png │ │ ├── pm_light_yellow_512.ico │ │ └── pm_light_yellow_512.png │ ├── icons_default.go │ └── icons_windows.go ├── main.go ├── notification.go ├── notify.go ├── notify_linux.go ├── notify_windows.go ├── pack ├── shutdown.go ├── snoretoast-guid.patch ├── spn.go ├── subsystems.go ├── tray.go └── wintoast │ ├── notification_builder.go │ └── wintoast.go ├── pack ├── tauri-app ├── .gitignore ├── .vscode │ └── settings.json ├── Dockerfile ├── Dockerfile.windows ├── README.md └── src-tauri │ ├── .gitignore │ ├── Cargo.lock │ ├── Cargo.toml │ ├── build.rs │ ├── icons │ ├── 128x128.png │ ├── 128x128@2x.png │ ├── 32x32.png │ ├── Square107x107Logo.png │ ├── Square142x142Logo.png │ ├── Square150x150Logo.png │ ├── Square284x284Logo.png │ ├── Square30x30Logo.png │ ├── Square310x310Logo.png │ ├── Square44x44Logo.png │ ├── Square71x71Logo.png │ ├── Square89x89Logo.png │ ├── StoreLogo.png │ ├── icon.icns │ ├── icon.ico │ └── icon.png │ ├── src │ ├── main.rs │ ├── portapi │ │ ├── client.rs │ │ ├── message.rs │ │ ├── mod.rs │ │ ├── models │ │ │ ├── config.rs │ │ │ ├── mod.rs │ │ │ ├── notification.rs │ │ │ ├── spn.rs │ │ │ └── subsystem.rs │ │ └── types.rs │ ├── portmaster │ │ ├── commands.rs │ │ ├── mod.rs │ │ ├── notifications.rs │ │ └── websocket.rs │ ├── service │ │ ├── manager.rs │ │ ├── mod.rs │ │ ├── status.rs │ │ ├── systemd.rs │ │ └── windows_service.rs │ ├── traymenu.rs │ ├── window.rs │ └── xdg │ │ └── mod.rs │ └── tauri.conf.json └── update-icons.sh /.github/ISSUE_TEMPLATE/suggest-feature.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: "💡 Suggest a User Interface Improvement or Feature" 3 | about: Suggest an enhancement or a new feature for the User Interface 4 | labels: suggestion 5 | --- 6 | 7 | **What would you like to add or change?**: 8 | 9 | 10 | 11 | **Why do you and others need this?**: 12 | 13 | 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | 3 | # dev utils 4 | http-redir 5 | 6 | # meta 7 | .DS_Store 8 | 9 | app-electron/app-window-state.json 10 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | All files in this repository (unless otherwise noted) are authored, owned and copyrighted by Safing ICS Technologies GmbH (Austria). 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Moved to [github.com/safing/portmaster](https://github.com/safing/portmaster)/[desktop](https://github.com/safing/portmaster/tree/develop/desktop) 2 | -------------------------------------------------------------------------------- /app-electron/.gitignore: -------------------------------------------------------------------------------- 1 | dist-src/ 2 | node_modules/ 3 | build-cache/ 4 | -------------------------------------------------------------------------------- /app-electron/build/icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/app-electron/build/icon.icns -------------------------------------------------------------------------------- /app-electron/build/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/app-electron/build/icon.ico -------------------------------------------------------------------------------- /app-electron/build/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/app-electron/build/icon.png -------------------------------------------------------------------------------- /app-electron/build/icon_dark.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/app-electron/build/icon_dark.ico -------------------------------------------------------------------------------- /app-electron/build/icon_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/app-electron/build/icon_dark.png -------------------------------------------------------------------------------- /app-electron/src/preload.ts: -------------------------------------------------------------------------------- 1 | import { contextBridge, ipcRenderer } from 'electron'; 2 | import { AppAPI } from './api'; 3 | import { buildClient } from './ipc'; 4 | import { WebUILoader } from './loader'; 5 | 6 | ipcRenderer.on('on-app-close', () => { 7 | window.postMessage('on-app-close', '*'); 8 | }) 9 | 10 | const client = buildClient(AppAPI, WebUILoader); 11 | contextBridge.exposeInMainWorld('app', client) -------------------------------------------------------------------------------- /app-electron/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "experimentalDecorators": true, 5 | "emitDecoratorMetadata": true, 6 | "target": "es5", 7 | "noImplicitAny": true, 8 | "sourceMap": true, 9 | "outDir": "dist-src", 10 | "baseUrl": ".", 11 | "paths": { 12 | "*": [ 13 | "node_modules/*" 14 | ] 15 | } 16 | }, 17 | "include": [ 18 | "src/**/*" 19 | ] 20 | } -------------------------------------------------------------------------------- /app/Gopkg.toml: -------------------------------------------------------------------------------- 1 | ignored = ["github.com/safing/portbase/*"] 2 | 3 | [prune] 4 | go-tests = true 5 | unused-packages = true 6 | 7 | [[constraint]] 8 | name = "github.com/zserge/webview" 9 | version = "v0.1.1" 10 | -------------------------------------------------------------------------------- /app/app.exe.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | -------------------------------------------------------------------------------- /app/dev.go: -------------------------------------------------------------------------------- 1 | // +build dev 2 | 3 | package main 4 | 5 | import "flag" 6 | 7 | func init() { 8 | flag.StringVar(&urlFlag, "url", "", "set custom url") 9 | } 10 | -------------------------------------------------------------------------------- /assets/README.md: -------------------------------------------------------------------------------- 1 | # UI Assets 2 | 3 | This repo holds global UI assets for the portmaster application. 4 | 5 | ### Serve files locally for development 6 | 7 | sudo go run serve.go 8 | -------------------------------------------------------------------------------- /assets/defaults/fomantic.css: -------------------------------------------------------------------------------- 1 | @import "/assets/themed/fomantic/semantic.min.css"; 2 | @import "/assets/vendor/fonts/roboto.css"; 3 | -------------------------------------------------------------------------------- /assets/defaults/semantic.css: -------------------------------------------------------------------------------- 1 | @import "/assets/themed/semantic/semantic.min.css"; 2 | @import "/assets/css/colors.css"; 3 | @import "/assets/vendor/fonts/roboto.css"; 4 | -------------------------------------------------------------------------------- /assets/favicons/android-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/favicons/android-icon-144x144.png -------------------------------------------------------------------------------- /assets/favicons/android-icon-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/favicons/android-icon-192x192.png -------------------------------------------------------------------------------- /assets/favicons/android-icon-36x36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/favicons/android-icon-36x36.png -------------------------------------------------------------------------------- /assets/favicons/android-icon-48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/favicons/android-icon-48x48.png -------------------------------------------------------------------------------- /assets/favicons/android-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/favicons/android-icon-72x72.png -------------------------------------------------------------------------------- /assets/favicons/android-icon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/favicons/android-icon-96x96.png -------------------------------------------------------------------------------- /assets/favicons/apple-icon-114x114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/favicons/apple-icon-114x114.png -------------------------------------------------------------------------------- /assets/favicons/apple-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/favicons/apple-icon-120x120.png -------------------------------------------------------------------------------- /assets/favicons/apple-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/favicons/apple-icon-144x144.png -------------------------------------------------------------------------------- /assets/favicons/apple-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/favicons/apple-icon-152x152.png -------------------------------------------------------------------------------- /assets/favicons/apple-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/favicons/apple-icon-180x180.png -------------------------------------------------------------------------------- /assets/favicons/apple-icon-57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/favicons/apple-icon-57x57.png -------------------------------------------------------------------------------- /assets/favicons/apple-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/favicons/apple-icon-60x60.png -------------------------------------------------------------------------------- /assets/favicons/apple-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/favicons/apple-icon-72x72.png -------------------------------------------------------------------------------- /assets/favicons/apple-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/favicons/apple-icon-76x76.png -------------------------------------------------------------------------------- /assets/favicons/apple-icon-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/favicons/apple-icon-precomposed.png -------------------------------------------------------------------------------- /assets/favicons/apple-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/favicons/apple-icon.png -------------------------------------------------------------------------------- /assets/favicons/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | #121213 3 | -------------------------------------------------------------------------------- /assets/favicons/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/favicons/favicon-16x16.png -------------------------------------------------------------------------------- /assets/favicons/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/favicons/favicon-32x32.png -------------------------------------------------------------------------------- /assets/favicons/favicon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/favicons/favicon-96x96.png -------------------------------------------------------------------------------- /assets/favicons/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/favicons/favicon.ico -------------------------------------------------------------------------------- /assets/favicons/ms-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/favicons/ms-icon-144x144.png -------------------------------------------------------------------------------- /assets/favicons/ms-icon-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/favicons/ms-icon-150x150.png -------------------------------------------------------------------------------- /assets/favicons/ms-icon-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/favicons/ms-icon-310x310.png -------------------------------------------------------------------------------- /assets/favicons/ms-icon-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/favicons/ms-icon-70x70.png -------------------------------------------------------------------------------- /assets/icons/README.md: -------------------------------------------------------------------------------- 1 | # .ICOs 2 | 3 | converted using https://www.icoconverter.com/ 4 | -------------------------------------------------------------------------------- /assets/icons/pm_dark_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_dark_128.png -------------------------------------------------------------------------------- /assets/icons/pm_dark_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_dark_256.png -------------------------------------------------------------------------------- /assets/icons/pm_dark_512.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_dark_512.ico -------------------------------------------------------------------------------- /assets/icons/pm_dark_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_dark_512.png -------------------------------------------------------------------------------- /assets/icons/pm_dark_blue_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_dark_blue_128.png -------------------------------------------------------------------------------- /assets/icons/pm_dark_blue_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_dark_blue_256.png -------------------------------------------------------------------------------- /assets/icons/pm_dark_blue_512.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_dark_blue_512.ico -------------------------------------------------------------------------------- /assets/icons/pm_dark_blue_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_dark_blue_512.png -------------------------------------------------------------------------------- /assets/icons/pm_dark_green_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_dark_green_128.png -------------------------------------------------------------------------------- /assets/icons/pm_dark_green_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_dark_green_256.png -------------------------------------------------------------------------------- /assets/icons/pm_dark_green_512.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_dark_green_512.ico -------------------------------------------------------------------------------- /assets/icons/pm_dark_green_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_dark_green_512.png -------------------------------------------------------------------------------- /assets/icons/pm_dark_red_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_dark_red_128.png -------------------------------------------------------------------------------- /assets/icons/pm_dark_red_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_dark_red_256.png -------------------------------------------------------------------------------- /assets/icons/pm_dark_red_512.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_dark_red_512.ico -------------------------------------------------------------------------------- /assets/icons/pm_dark_red_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_dark_red_512.png -------------------------------------------------------------------------------- /assets/icons/pm_dark_yellow_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_dark_yellow_128.png -------------------------------------------------------------------------------- /assets/icons/pm_dark_yellow_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_dark_yellow_256.png -------------------------------------------------------------------------------- /assets/icons/pm_dark_yellow_512.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_dark_yellow_512.ico -------------------------------------------------------------------------------- /assets/icons/pm_dark_yellow_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_dark_yellow_512.png -------------------------------------------------------------------------------- /assets/icons/pm_light_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_light_128.png -------------------------------------------------------------------------------- /assets/icons/pm_light_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_light_256.png -------------------------------------------------------------------------------- /assets/icons/pm_light_512.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_light_512.ico -------------------------------------------------------------------------------- /assets/icons/pm_light_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_light_512.png -------------------------------------------------------------------------------- /assets/icons/pm_light_blue_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_light_blue_128.png -------------------------------------------------------------------------------- /assets/icons/pm_light_blue_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_light_blue_256.png -------------------------------------------------------------------------------- /assets/icons/pm_light_blue_512.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_light_blue_512.ico -------------------------------------------------------------------------------- /assets/icons/pm_light_blue_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_light_blue_512.png -------------------------------------------------------------------------------- /assets/icons/pm_light_green_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_light_green_128.png -------------------------------------------------------------------------------- /assets/icons/pm_light_green_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_light_green_256.png -------------------------------------------------------------------------------- /assets/icons/pm_light_green_512.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_light_green_512.ico -------------------------------------------------------------------------------- /assets/icons/pm_light_green_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_light_green_512.png -------------------------------------------------------------------------------- /assets/icons/pm_light_red_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_light_red_128.png -------------------------------------------------------------------------------- /assets/icons/pm_light_red_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_light_red_256.png -------------------------------------------------------------------------------- /assets/icons/pm_light_red_512.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_light_red_512.ico -------------------------------------------------------------------------------- /assets/icons/pm_light_red_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_light_red_512.png -------------------------------------------------------------------------------- /assets/icons/pm_light_yellow_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_light_yellow_128.png -------------------------------------------------------------------------------- /assets/icons/pm_light_yellow_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_light_yellow_256.png -------------------------------------------------------------------------------- /assets/icons/pm_light_yellow_512.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_light_yellow_512.ico -------------------------------------------------------------------------------- /assets/icons/pm_light_yellow_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/icons/pm_light_yellow_512.png -------------------------------------------------------------------------------- /assets/img/flags/AD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/AD.png -------------------------------------------------------------------------------- /assets/img/flags/AE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/AE.png -------------------------------------------------------------------------------- /assets/img/flags/AF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/AF.png -------------------------------------------------------------------------------- /assets/img/flags/AG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/AG.png -------------------------------------------------------------------------------- /assets/img/flags/AI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/AI.png -------------------------------------------------------------------------------- /assets/img/flags/AL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/AL.png -------------------------------------------------------------------------------- /assets/img/flags/AM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/AM.png -------------------------------------------------------------------------------- /assets/img/flags/AN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/AN.png -------------------------------------------------------------------------------- /assets/img/flags/AO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/AO.png -------------------------------------------------------------------------------- /assets/img/flags/AQ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/AQ.png -------------------------------------------------------------------------------- /assets/img/flags/AR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/AR.png -------------------------------------------------------------------------------- /assets/img/flags/AS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/AS.png -------------------------------------------------------------------------------- /assets/img/flags/AT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/AT.png -------------------------------------------------------------------------------- /assets/img/flags/AU.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/AU.png -------------------------------------------------------------------------------- /assets/img/flags/AW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/AW.png -------------------------------------------------------------------------------- /assets/img/flags/AX.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/AX.png -------------------------------------------------------------------------------- /assets/img/flags/AZ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/AZ.png -------------------------------------------------------------------------------- /assets/img/flags/BA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/BA.png -------------------------------------------------------------------------------- /assets/img/flags/BB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/BB.png -------------------------------------------------------------------------------- /assets/img/flags/BD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/BD.png -------------------------------------------------------------------------------- /assets/img/flags/BE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/BE.png -------------------------------------------------------------------------------- /assets/img/flags/BF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/BF.png -------------------------------------------------------------------------------- /assets/img/flags/BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/BG.png -------------------------------------------------------------------------------- /assets/img/flags/BH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/BH.png -------------------------------------------------------------------------------- /assets/img/flags/BI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/BI.png -------------------------------------------------------------------------------- /assets/img/flags/BJ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/BJ.png -------------------------------------------------------------------------------- /assets/img/flags/BL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/BL.png -------------------------------------------------------------------------------- /assets/img/flags/BM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/BM.png -------------------------------------------------------------------------------- /assets/img/flags/BN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/BN.png -------------------------------------------------------------------------------- /assets/img/flags/BO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/BO.png -------------------------------------------------------------------------------- /assets/img/flags/BR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/BR.png -------------------------------------------------------------------------------- /assets/img/flags/BS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/BS.png -------------------------------------------------------------------------------- /assets/img/flags/BT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/BT.png -------------------------------------------------------------------------------- /assets/img/flags/BW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/BW.png -------------------------------------------------------------------------------- /assets/img/flags/BY.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/BY.png -------------------------------------------------------------------------------- /assets/img/flags/BZ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/BZ.png -------------------------------------------------------------------------------- /assets/img/flags/CA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/CA.png -------------------------------------------------------------------------------- /assets/img/flags/CC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/CC.png -------------------------------------------------------------------------------- /assets/img/flags/CD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/CD.png -------------------------------------------------------------------------------- /assets/img/flags/CF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/CF.png -------------------------------------------------------------------------------- /assets/img/flags/CG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/CG.png -------------------------------------------------------------------------------- /assets/img/flags/CH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/CH.png -------------------------------------------------------------------------------- /assets/img/flags/CI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/CI.png -------------------------------------------------------------------------------- /assets/img/flags/CK.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/CK.png -------------------------------------------------------------------------------- /assets/img/flags/CL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/CL.png -------------------------------------------------------------------------------- /assets/img/flags/CM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/CM.png -------------------------------------------------------------------------------- /assets/img/flags/CN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/CN.png -------------------------------------------------------------------------------- /assets/img/flags/CO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/CO.png -------------------------------------------------------------------------------- /assets/img/flags/CR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/CR.png -------------------------------------------------------------------------------- /assets/img/flags/CT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/CT.png -------------------------------------------------------------------------------- /assets/img/flags/CU.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/CU.png -------------------------------------------------------------------------------- /assets/img/flags/CV.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/CV.png -------------------------------------------------------------------------------- /assets/img/flags/CW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/CW.png -------------------------------------------------------------------------------- /assets/img/flags/CX.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/CX.png -------------------------------------------------------------------------------- /assets/img/flags/CY.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/CY.png -------------------------------------------------------------------------------- /assets/img/flags/CZ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/CZ.png -------------------------------------------------------------------------------- /assets/img/flags/DE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/DE.png -------------------------------------------------------------------------------- /assets/img/flags/DJ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/DJ.png -------------------------------------------------------------------------------- /assets/img/flags/DK.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/DK.png -------------------------------------------------------------------------------- /assets/img/flags/DM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/DM.png -------------------------------------------------------------------------------- /assets/img/flags/DO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/DO.png -------------------------------------------------------------------------------- /assets/img/flags/DZ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/DZ.png -------------------------------------------------------------------------------- /assets/img/flags/EC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/EC.png -------------------------------------------------------------------------------- /assets/img/flags/EE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/EE.png -------------------------------------------------------------------------------- /assets/img/flags/EG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/EG.png -------------------------------------------------------------------------------- /assets/img/flags/EH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/EH.png -------------------------------------------------------------------------------- /assets/img/flags/ER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/ER.png -------------------------------------------------------------------------------- /assets/img/flags/ES.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/ES.png -------------------------------------------------------------------------------- /assets/img/flags/ET.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/ET.png -------------------------------------------------------------------------------- /assets/img/flags/EU.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/EU.png -------------------------------------------------------------------------------- /assets/img/flags/FI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/FI.png -------------------------------------------------------------------------------- /assets/img/flags/FJ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/FJ.png -------------------------------------------------------------------------------- /assets/img/flags/FK.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/FK.png -------------------------------------------------------------------------------- /assets/img/flags/FM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/FM.png -------------------------------------------------------------------------------- /assets/img/flags/FO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/FO.png -------------------------------------------------------------------------------- /assets/img/flags/FR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/FR.png -------------------------------------------------------------------------------- /assets/img/flags/GA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/GA.png -------------------------------------------------------------------------------- /assets/img/flags/GB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/GB.png -------------------------------------------------------------------------------- /assets/img/flags/GD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/GD.png -------------------------------------------------------------------------------- /assets/img/flags/GE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/GE.png -------------------------------------------------------------------------------- /assets/img/flags/GG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/GG.png -------------------------------------------------------------------------------- /assets/img/flags/GH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/GH.png -------------------------------------------------------------------------------- /assets/img/flags/GI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/GI.png -------------------------------------------------------------------------------- /assets/img/flags/GL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/GL.png -------------------------------------------------------------------------------- /assets/img/flags/GM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/GM.png -------------------------------------------------------------------------------- /assets/img/flags/GN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/GN.png -------------------------------------------------------------------------------- /assets/img/flags/GQ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/GQ.png -------------------------------------------------------------------------------- /assets/img/flags/GR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/GR.png -------------------------------------------------------------------------------- /assets/img/flags/GS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/GS.png -------------------------------------------------------------------------------- /assets/img/flags/GT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/GT.png -------------------------------------------------------------------------------- /assets/img/flags/GU.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/GU.png -------------------------------------------------------------------------------- /assets/img/flags/GW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/GW.png -------------------------------------------------------------------------------- /assets/img/flags/GY.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/GY.png -------------------------------------------------------------------------------- /assets/img/flags/HK.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/HK.png -------------------------------------------------------------------------------- /assets/img/flags/HN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/HN.png -------------------------------------------------------------------------------- /assets/img/flags/HR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/HR.png -------------------------------------------------------------------------------- /assets/img/flags/HT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/HT.png -------------------------------------------------------------------------------- /assets/img/flags/HU.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/HU.png -------------------------------------------------------------------------------- /assets/img/flags/IC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/IC.png -------------------------------------------------------------------------------- /assets/img/flags/ID.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/ID.png -------------------------------------------------------------------------------- /assets/img/flags/IE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/IE.png -------------------------------------------------------------------------------- /assets/img/flags/IL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/IL.png -------------------------------------------------------------------------------- /assets/img/flags/IM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/IM.png -------------------------------------------------------------------------------- /assets/img/flags/IN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/IN.png -------------------------------------------------------------------------------- /assets/img/flags/IQ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/IQ.png -------------------------------------------------------------------------------- /assets/img/flags/IR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/IR.png -------------------------------------------------------------------------------- /assets/img/flags/IS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/IS.png -------------------------------------------------------------------------------- /assets/img/flags/IT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/IT.png -------------------------------------------------------------------------------- /assets/img/flags/JE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/JE.png -------------------------------------------------------------------------------- /assets/img/flags/JM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/JM.png -------------------------------------------------------------------------------- /assets/img/flags/JO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/JO.png -------------------------------------------------------------------------------- /assets/img/flags/JP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/JP.png -------------------------------------------------------------------------------- /assets/img/flags/KE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/KE.png -------------------------------------------------------------------------------- /assets/img/flags/KG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/KG.png -------------------------------------------------------------------------------- /assets/img/flags/KH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/KH.png -------------------------------------------------------------------------------- /assets/img/flags/KI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/KI.png -------------------------------------------------------------------------------- /assets/img/flags/KM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/KM.png -------------------------------------------------------------------------------- /assets/img/flags/KN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/KN.png -------------------------------------------------------------------------------- /assets/img/flags/KP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/KP.png -------------------------------------------------------------------------------- /assets/img/flags/KR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/KR.png -------------------------------------------------------------------------------- /assets/img/flags/KW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/KW.png -------------------------------------------------------------------------------- /assets/img/flags/KY.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/KY.png -------------------------------------------------------------------------------- /assets/img/flags/KZ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/KZ.png -------------------------------------------------------------------------------- /assets/img/flags/LA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/LA.png -------------------------------------------------------------------------------- /assets/img/flags/LB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/LB.png -------------------------------------------------------------------------------- /assets/img/flags/LC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/LC.png -------------------------------------------------------------------------------- /assets/img/flags/LI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/LI.png -------------------------------------------------------------------------------- /assets/img/flags/LK.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/LK.png -------------------------------------------------------------------------------- /assets/img/flags/LR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/LR.png -------------------------------------------------------------------------------- /assets/img/flags/LS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/LS.png -------------------------------------------------------------------------------- /assets/img/flags/LT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/LT.png -------------------------------------------------------------------------------- /assets/img/flags/LU.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/LU.png -------------------------------------------------------------------------------- /assets/img/flags/LV.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/LV.png -------------------------------------------------------------------------------- /assets/img/flags/LY.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/LY.png -------------------------------------------------------------------------------- /assets/img/flags/MA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/MA.png -------------------------------------------------------------------------------- /assets/img/flags/MC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/MC.png -------------------------------------------------------------------------------- /assets/img/flags/MD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/MD.png -------------------------------------------------------------------------------- /assets/img/flags/ME.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/ME.png -------------------------------------------------------------------------------- /assets/img/flags/MF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/MF.png -------------------------------------------------------------------------------- /assets/img/flags/MG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/MG.png -------------------------------------------------------------------------------- /assets/img/flags/MH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/MH.png -------------------------------------------------------------------------------- /assets/img/flags/MK.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/MK.png -------------------------------------------------------------------------------- /assets/img/flags/ML.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/ML.png -------------------------------------------------------------------------------- /assets/img/flags/MM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/MM.png -------------------------------------------------------------------------------- /assets/img/flags/MN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/MN.png -------------------------------------------------------------------------------- /assets/img/flags/MO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/MO.png -------------------------------------------------------------------------------- /assets/img/flags/MP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/MP.png -------------------------------------------------------------------------------- /assets/img/flags/MQ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/MQ.png -------------------------------------------------------------------------------- /assets/img/flags/MR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/MR.png -------------------------------------------------------------------------------- /assets/img/flags/MS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/MS.png -------------------------------------------------------------------------------- /assets/img/flags/MT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/MT.png -------------------------------------------------------------------------------- /assets/img/flags/MU.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/MU.png -------------------------------------------------------------------------------- /assets/img/flags/MV.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/MV.png -------------------------------------------------------------------------------- /assets/img/flags/MW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/MW.png -------------------------------------------------------------------------------- /assets/img/flags/MX.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/MX.png -------------------------------------------------------------------------------- /assets/img/flags/MY.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/MY.png -------------------------------------------------------------------------------- /assets/img/flags/MZ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/MZ.png -------------------------------------------------------------------------------- /assets/img/flags/NA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/NA.png -------------------------------------------------------------------------------- /assets/img/flags/NC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/NC.png -------------------------------------------------------------------------------- /assets/img/flags/NE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/NE.png -------------------------------------------------------------------------------- /assets/img/flags/NF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/NF.png -------------------------------------------------------------------------------- /assets/img/flags/NG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/NG.png -------------------------------------------------------------------------------- /assets/img/flags/NI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/NI.png -------------------------------------------------------------------------------- /assets/img/flags/NL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/NL.png -------------------------------------------------------------------------------- /assets/img/flags/NO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/NO.png -------------------------------------------------------------------------------- /assets/img/flags/NP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/NP.png -------------------------------------------------------------------------------- /assets/img/flags/NR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/NR.png -------------------------------------------------------------------------------- /assets/img/flags/NU.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/NU.png -------------------------------------------------------------------------------- /assets/img/flags/NZ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/NZ.png -------------------------------------------------------------------------------- /assets/img/flags/OM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/OM.png -------------------------------------------------------------------------------- /assets/img/flags/PA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/PA.png -------------------------------------------------------------------------------- /assets/img/flags/PE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/PE.png -------------------------------------------------------------------------------- /assets/img/flags/PF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/PF.png -------------------------------------------------------------------------------- /assets/img/flags/PG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/PG.png -------------------------------------------------------------------------------- /assets/img/flags/PH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/PH.png -------------------------------------------------------------------------------- /assets/img/flags/PK.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/PK.png -------------------------------------------------------------------------------- /assets/img/flags/PL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/PL.png -------------------------------------------------------------------------------- /assets/img/flags/PN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/PN.png -------------------------------------------------------------------------------- /assets/img/flags/PR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/PR.png -------------------------------------------------------------------------------- /assets/img/flags/PS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/PS.png -------------------------------------------------------------------------------- /assets/img/flags/PT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/PT.png -------------------------------------------------------------------------------- /assets/img/flags/PW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/PW.png -------------------------------------------------------------------------------- /assets/img/flags/PY.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/PY.png -------------------------------------------------------------------------------- /assets/img/flags/QA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/QA.png -------------------------------------------------------------------------------- /assets/img/flags/RE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/RE.png -------------------------------------------------------------------------------- /assets/img/flags/RO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/RO.png -------------------------------------------------------------------------------- /assets/img/flags/RS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/RS.png -------------------------------------------------------------------------------- /assets/img/flags/RU.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/RU.png -------------------------------------------------------------------------------- /assets/img/flags/RW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/RW.png -------------------------------------------------------------------------------- /assets/img/flags/SA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/SA.png -------------------------------------------------------------------------------- /assets/img/flags/SB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/SB.png -------------------------------------------------------------------------------- /assets/img/flags/SC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/SC.png -------------------------------------------------------------------------------- /assets/img/flags/SD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/SD.png -------------------------------------------------------------------------------- /assets/img/flags/SE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/SE.png -------------------------------------------------------------------------------- /assets/img/flags/SG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/SG.png -------------------------------------------------------------------------------- /assets/img/flags/SH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/SH.png -------------------------------------------------------------------------------- /assets/img/flags/SI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/SI.png -------------------------------------------------------------------------------- /assets/img/flags/SK.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/SK.png -------------------------------------------------------------------------------- /assets/img/flags/SL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/SL.png -------------------------------------------------------------------------------- /assets/img/flags/SM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/SM.png -------------------------------------------------------------------------------- /assets/img/flags/SN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/SN.png -------------------------------------------------------------------------------- /assets/img/flags/SO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/SO.png -------------------------------------------------------------------------------- /assets/img/flags/SR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/SR.png -------------------------------------------------------------------------------- /assets/img/flags/SS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/SS.png -------------------------------------------------------------------------------- /assets/img/flags/ST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/ST.png -------------------------------------------------------------------------------- /assets/img/flags/SV.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/SV.png -------------------------------------------------------------------------------- /assets/img/flags/SX.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/SX.png -------------------------------------------------------------------------------- /assets/img/flags/SY.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/SY.png -------------------------------------------------------------------------------- /assets/img/flags/SZ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/SZ.png -------------------------------------------------------------------------------- /assets/img/flags/TC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/TC.png -------------------------------------------------------------------------------- /assets/img/flags/TD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/TD.png -------------------------------------------------------------------------------- /assets/img/flags/TF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/TF.png -------------------------------------------------------------------------------- /assets/img/flags/TG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/TG.png -------------------------------------------------------------------------------- /assets/img/flags/TH.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/TH.png -------------------------------------------------------------------------------- /assets/img/flags/TJ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/TJ.png -------------------------------------------------------------------------------- /assets/img/flags/TK.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/TK.png -------------------------------------------------------------------------------- /assets/img/flags/TL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/TL.png -------------------------------------------------------------------------------- /assets/img/flags/TM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/TM.png -------------------------------------------------------------------------------- /assets/img/flags/TN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/TN.png -------------------------------------------------------------------------------- /assets/img/flags/TO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/TO.png -------------------------------------------------------------------------------- /assets/img/flags/TR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/TR.png -------------------------------------------------------------------------------- /assets/img/flags/TT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/TT.png -------------------------------------------------------------------------------- /assets/img/flags/TV.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/TV.png -------------------------------------------------------------------------------- /assets/img/flags/TW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/TW.png -------------------------------------------------------------------------------- /assets/img/flags/TZ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/TZ.png -------------------------------------------------------------------------------- /assets/img/flags/UA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/UA.png -------------------------------------------------------------------------------- /assets/img/flags/UG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/UG.png -------------------------------------------------------------------------------- /assets/img/flags/US.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/US.png -------------------------------------------------------------------------------- /assets/img/flags/UY.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/UY.png -------------------------------------------------------------------------------- /assets/img/flags/UZ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/UZ.png -------------------------------------------------------------------------------- /assets/img/flags/VA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/VA.png -------------------------------------------------------------------------------- /assets/img/flags/VC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/VC.png -------------------------------------------------------------------------------- /assets/img/flags/VE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/VE.png -------------------------------------------------------------------------------- /assets/img/flags/VG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/VG.png -------------------------------------------------------------------------------- /assets/img/flags/VI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/VI.png -------------------------------------------------------------------------------- /assets/img/flags/VN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/VN.png -------------------------------------------------------------------------------- /assets/img/flags/VU.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/VU.png -------------------------------------------------------------------------------- /assets/img/flags/WF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/WF.png -------------------------------------------------------------------------------- /assets/img/flags/WS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/WS.png -------------------------------------------------------------------------------- /assets/img/flags/YE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/YE.png -------------------------------------------------------------------------------- /assets/img/flags/YT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/YT.png -------------------------------------------------------------------------------- /assets/img/flags/ZA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/ZA.png -------------------------------------------------------------------------------- /assets/img/flags/ZM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/ZM.png -------------------------------------------------------------------------------- /assets/img/flags/ZW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/ZW.png -------------------------------------------------------------------------------- /assets/img/flags/_abkhazia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/_abkhazia.png -------------------------------------------------------------------------------- /assets/img/flags/_basque-country.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/_basque-country.png -------------------------------------------------------------------------------- /assets/img/flags/_british-antarctic-territory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/_british-antarctic-territory.png -------------------------------------------------------------------------------- /assets/img/flags/_commonwealth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/_commonwealth.png -------------------------------------------------------------------------------- /assets/img/flags/_england.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/_england.png -------------------------------------------------------------------------------- /assets/img/flags/_gosquared.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/_gosquared.png -------------------------------------------------------------------------------- /assets/img/flags/_kosovo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/_kosovo.png -------------------------------------------------------------------------------- /assets/img/flags/_mars.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/_mars.png -------------------------------------------------------------------------------- /assets/img/flags/_nagorno-karabakh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/_nagorno-karabakh.png -------------------------------------------------------------------------------- /assets/img/flags/_nato.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/_nato.png -------------------------------------------------------------------------------- /assets/img/flags/_northern-cyprus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/_northern-cyprus.png -------------------------------------------------------------------------------- /assets/img/flags/_olympics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/_olympics.png -------------------------------------------------------------------------------- /assets/img/flags/_red-cross.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/_red-cross.png -------------------------------------------------------------------------------- /assets/img/flags/_scotland.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/_scotland.png -------------------------------------------------------------------------------- /assets/img/flags/_somaliland.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/_somaliland.png -------------------------------------------------------------------------------- /assets/img/flags/_south-ossetia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/_south-ossetia.png -------------------------------------------------------------------------------- /assets/img/flags/_united-nations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/_united-nations.png -------------------------------------------------------------------------------- /assets/img/flags/_unknown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/_unknown.png -------------------------------------------------------------------------------- /assets/img/flags/_wales.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/flags/_wales.png -------------------------------------------------------------------------------- /assets/img/plants1-br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/plants1-br.png -------------------------------------------------------------------------------- /assets/img/plants1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/plants1.png -------------------------------------------------------------------------------- /assets/img/spn-feature-carousel/access-regional-content-easily.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/spn-feature-carousel/access-regional-content-easily.png -------------------------------------------------------------------------------- /assets/img/spn-feature-carousel/built-from-the-ground-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/spn-feature-carousel/built-from-the-ground-up.png -------------------------------------------------------------------------------- /assets/img/spn-feature-carousel/bye-bye-vpns.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/spn-feature-carousel/bye-bye-vpns.png -------------------------------------------------------------------------------- /assets/img/spn-feature-carousel/easily-control-your-privacy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/spn-feature-carousel/easily-control-your-privacy.png -------------------------------------------------------------------------------- /assets/img/spn-feature-carousel/multiple-identities-for-each-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/spn-feature-carousel/multiple-identities-for-each-app.png -------------------------------------------------------------------------------- /assets/img/spn-login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/img/spn-login.png -------------------------------------------------------------------------------- /assets/themed/fomantic/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = {}; 2 | -------------------------------------------------------------------------------- /assets/themed/fomantic/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = {}; 2 | -------------------------------------------------------------------------------- /assets/themed/fomantic/themes/default/assets/fonts/brand-icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/themed/fomantic/themes/default/assets/fonts/brand-icons.eot -------------------------------------------------------------------------------- /assets/themed/fomantic/themes/default/assets/fonts/brand-icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/themed/fomantic/themes/default/assets/fonts/brand-icons.ttf -------------------------------------------------------------------------------- /assets/themed/fomantic/themes/default/assets/fonts/brand-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/themed/fomantic/themes/default/assets/fonts/brand-icons.woff -------------------------------------------------------------------------------- /assets/themed/fomantic/themes/default/assets/fonts/brand-icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/themed/fomantic/themes/default/assets/fonts/brand-icons.woff2 -------------------------------------------------------------------------------- /assets/themed/fomantic/themes/default/assets/fonts/icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/themed/fomantic/themes/default/assets/fonts/icons.eot -------------------------------------------------------------------------------- /assets/themed/fomantic/themes/default/assets/fonts/icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/themed/fomantic/themes/default/assets/fonts/icons.ttf -------------------------------------------------------------------------------- /assets/themed/fomantic/themes/default/assets/fonts/icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/themed/fomantic/themes/default/assets/fonts/icons.woff -------------------------------------------------------------------------------- /assets/themed/fomantic/themes/default/assets/fonts/icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/themed/fomantic/themes/default/assets/fonts/icons.woff2 -------------------------------------------------------------------------------- /assets/themed/fomantic/themes/default/assets/fonts/outline-icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/themed/fomantic/themes/default/assets/fonts/outline-icons.eot -------------------------------------------------------------------------------- /assets/themed/fomantic/themes/default/assets/fonts/outline-icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/themed/fomantic/themes/default/assets/fonts/outline-icons.ttf -------------------------------------------------------------------------------- /assets/themed/fomantic/themes/default/assets/fonts/outline-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/themed/fomantic/themes/default/assets/fonts/outline-icons.woff -------------------------------------------------------------------------------- /assets/themed/fomantic/themes/default/assets/fonts/outline-icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/themed/fomantic/themes/default/assets/fonts/outline-icons.woff2 -------------------------------------------------------------------------------- /assets/themed/fomantic/themes/default/assets/images/flags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/themed/fomantic/themes/default/assets/images/flags.png -------------------------------------------------------------------------------- /assets/vendor/fonts/Roboto-300/Roboto-300.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/vendor/fonts/Roboto-300/Roboto-300.eot -------------------------------------------------------------------------------- /assets/vendor/fonts/Roboto-300/Roboto-300.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/vendor/fonts/Roboto-300/Roboto-300.ttf -------------------------------------------------------------------------------- /assets/vendor/fonts/Roboto-300/Roboto-300.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/vendor/fonts/Roboto-300/Roboto-300.woff -------------------------------------------------------------------------------- /assets/vendor/fonts/Roboto-300/Roboto-300.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/vendor/fonts/Roboto-300/Roboto-300.woff2 -------------------------------------------------------------------------------- /assets/vendor/fonts/Roboto-300italic/Roboto-300italic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/vendor/fonts/Roboto-300italic/Roboto-300italic.eot -------------------------------------------------------------------------------- /assets/vendor/fonts/Roboto-300italic/Roboto-300italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/vendor/fonts/Roboto-300italic/Roboto-300italic.ttf -------------------------------------------------------------------------------- /assets/vendor/fonts/Roboto-300italic/Roboto-300italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/vendor/fonts/Roboto-300italic/Roboto-300italic.woff -------------------------------------------------------------------------------- /assets/vendor/fonts/Roboto-300italic/Roboto-300italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/vendor/fonts/Roboto-300italic/Roboto-300italic.woff2 -------------------------------------------------------------------------------- /assets/vendor/fonts/Roboto-500/Roboto-500.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/vendor/fonts/Roboto-500/Roboto-500.eot -------------------------------------------------------------------------------- /assets/vendor/fonts/Roboto-500/Roboto-500.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/vendor/fonts/Roboto-500/Roboto-500.ttf -------------------------------------------------------------------------------- /assets/vendor/fonts/Roboto-500/Roboto-500.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/vendor/fonts/Roboto-500/Roboto-500.woff -------------------------------------------------------------------------------- /assets/vendor/fonts/Roboto-500/Roboto-500.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/vendor/fonts/Roboto-500/Roboto-500.woff2 -------------------------------------------------------------------------------- /assets/vendor/fonts/Roboto-500italic/Roboto-500italic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/vendor/fonts/Roboto-500italic/Roboto-500italic.eot -------------------------------------------------------------------------------- /assets/vendor/fonts/Roboto-500italic/Roboto-500italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/vendor/fonts/Roboto-500italic/Roboto-500italic.ttf -------------------------------------------------------------------------------- /assets/vendor/fonts/Roboto-500italic/Roboto-500italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/vendor/fonts/Roboto-500italic/Roboto-500italic.woff -------------------------------------------------------------------------------- /assets/vendor/fonts/Roboto-500italic/Roboto-500italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/vendor/fonts/Roboto-500italic/Roboto-500italic.woff2 -------------------------------------------------------------------------------- /assets/vendor/fonts/Roboto-700/Roboto-700.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/vendor/fonts/Roboto-700/Roboto-700.eot -------------------------------------------------------------------------------- /assets/vendor/fonts/Roboto-700/Roboto-700.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/vendor/fonts/Roboto-700/Roboto-700.ttf -------------------------------------------------------------------------------- /assets/vendor/fonts/Roboto-700/Roboto-700.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/vendor/fonts/Roboto-700/Roboto-700.woff -------------------------------------------------------------------------------- /assets/vendor/fonts/Roboto-700/Roboto-700.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/vendor/fonts/Roboto-700/Roboto-700.woff2 -------------------------------------------------------------------------------- /assets/vendor/fonts/Roboto-700italic/Roboto-700italic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/vendor/fonts/Roboto-700italic/Roboto-700italic.eot -------------------------------------------------------------------------------- /assets/vendor/fonts/Roboto-700italic/Roboto-700italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/vendor/fonts/Roboto-700italic/Roboto-700italic.ttf -------------------------------------------------------------------------------- /assets/vendor/fonts/Roboto-700italic/Roboto-700italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/vendor/fonts/Roboto-700italic/Roboto-700italic.woff -------------------------------------------------------------------------------- /assets/vendor/fonts/Roboto-700italic/Roboto-700italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/vendor/fonts/Roboto-700italic/Roboto-700italic.woff2 -------------------------------------------------------------------------------- /assets/vendor/fonts/Roboto-italic/Roboto-italic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/vendor/fonts/Roboto-italic/Roboto-italic.eot -------------------------------------------------------------------------------- /assets/vendor/fonts/Roboto-italic/Roboto-italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/vendor/fonts/Roboto-italic/Roboto-italic.ttf -------------------------------------------------------------------------------- /assets/vendor/fonts/Roboto-italic/Roboto-italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/vendor/fonts/Roboto-italic/Roboto-italic.woff -------------------------------------------------------------------------------- /assets/vendor/fonts/Roboto-italic/Roboto-italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/vendor/fonts/Roboto-italic/Roboto-italic.woff2 -------------------------------------------------------------------------------- /assets/vendor/fonts/Roboto-regular/Roboto-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/vendor/fonts/Roboto-regular/Roboto-regular.eot -------------------------------------------------------------------------------- /assets/vendor/fonts/Roboto-regular/Roboto-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/vendor/fonts/Roboto-regular/Roboto-regular.ttf -------------------------------------------------------------------------------- /assets/vendor/fonts/Roboto-regular/Roboto-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/vendor/fonts/Roboto-regular/Roboto-regular.woff -------------------------------------------------------------------------------- /assets/vendor/fonts/Roboto-regular/Roboto-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/vendor/fonts/Roboto-regular/Roboto-regular.woff2 -------------------------------------------------------------------------------- /assets/vendor/js/hpcc-js-wasm-1.13.0/expatlib.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/vendor/js/hpcc-js-wasm-1.13.0/expatlib.wasm -------------------------------------------------------------------------------- /assets/vendor/js/hpcc-js-wasm-1.13.0/graphvizlib.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/assets/vendor/js/hpcc-js-wasm-1.13.0/graphvizlib.wasm -------------------------------------------------------------------------------- /assets/version.txt: -------------------------------------------------------------------------------- 1 | 0.3.1 2 | -------------------------------------------------------------------------------- /modules/base/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | # local env files 6 | .env.local 7 | .env.*.local 8 | 9 | # Log files 10 | npm-debug.log* 11 | yarn-debug.log* 12 | yarn-error.log* 13 | 14 | # Editor directories and files 15 | .idea 16 | .vscode 17 | *.suo 18 | *.ntvs* 19 | *.njsproj 20 | *.sln 21 | *.sw* 22 | -------------------------------------------------------------------------------- /modules/base/.ignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/modules/base/.ignore -------------------------------------------------------------------------------- /modules/base/README.md: -------------------------------------------------------------------------------- 1 | # Portmaster Settings 2 | 3 | ## Project setup 4 | ``` 5 | npm install 6 | ``` 7 | 8 | ### Compiles and hot-reloads for development 9 | ``` 10 | npm run serve 11 | ``` 12 | 13 | ### Compiles and minifies for production 14 | ``` 15 | npm run build 16 | ``` 17 | 18 | ### Run your tests 19 | ``` 20 | npm run test 21 | ``` 22 | 23 | ### Lints and fixes files 24 | ``` 25 | npm run lint 26 | ``` 27 | -------------------------------------------------------------------------------- /modules/base/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: ["@vue/app"], 3 | }; 4 | -------------------------------------------------------------------------------- /modules/base/public/assets: -------------------------------------------------------------------------------- 1 | ../../../assets/ -------------------------------------------------------------------------------- /modules/base/serve: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | npm run serve 4 | 5 | -------------------------------------------------------------------------------- /modules/base/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 22 | 23 | 26 | -------------------------------------------------------------------------------- /modules/base/vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | publicPath: process.env.NODE_ENV === "development" ? "/" : "", 3 | }; 4 | -------------------------------------------------------------------------------- /modules/console/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | "parser": "babel-eslint" 3 | }; 4 | -------------------------------------------------------------------------------- /modules/console/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | # local env files 6 | .env.local 7 | .env.*.local 8 | 9 | # Log files 10 | npm-debug.log* 11 | yarn-debug.log* 12 | yarn-error.log* 13 | 14 | # Editor directories and files 15 | .idea 16 | .vscode 17 | *.suo 18 | *.ntvs* 19 | *.njsproj 20 | *.sln 21 | *.sw* 22 | -------------------------------------------------------------------------------- /modules/console/.ignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/modules/console/.ignore -------------------------------------------------------------------------------- /modules/console/README.md: -------------------------------------------------------------------------------- 1 | # Portmaster Settings 2 | 3 | ## Project setup 4 | ``` 5 | npm install 6 | ``` 7 | 8 | ### Compiles and hot-reloads for development 9 | ``` 10 | npm run serve 11 | ``` 12 | 13 | ### Compiles and minifies for production 14 | ``` 15 | npm run build 16 | ``` 17 | 18 | ### Run your tests 19 | ``` 20 | npm run test 21 | ``` 22 | 23 | ### Lints and fixes files 24 | ``` 25 | npm run lint 26 | ``` 27 | -------------------------------------------------------------------------------- /modules/console/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: ["@vue/app"] 3 | }; 4 | -------------------------------------------------------------------------------- /modules/console/public/assets: -------------------------------------------------------------------------------- 1 | ../../../assets -------------------------------------------------------------------------------- /modules/console/serve: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | npm run serve 4 | 5 | -------------------------------------------------------------------------------- /modules/console/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 17 | 18 | 21 | -------------------------------------------------------------------------------- /modules/console/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from "vue"; 2 | import App from "./App.vue"; 3 | import jQuery from "jquery"; 4 | 5 | window.$ = jQuery; 6 | window.jQuery = jQuery; 7 | Vue.config.productionTip = false; 8 | 9 | require("../../../assets/themed/fomantic/semantic.min.js"); 10 | 11 | new Vue({ 12 | render: h => h(App) 13 | }).$mount("#app"); 14 | -------------------------------------------------------------------------------- /modules/console/vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | publicPath: process.env.NODE_ENV === "development" ? "/" : "" 3 | }; 4 | -------------------------------------------------------------------------------- /modules/monitor/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | # local env files 6 | .env.local 7 | .env.*.local 8 | 9 | # Log files 10 | npm-debug.log* 11 | yarn-debug.log* 12 | yarn-error.log* 13 | 14 | # Editor directories and files 15 | .idea 16 | .vscode 17 | *.suo 18 | *.ntvs* 19 | *.njsproj 20 | *.sln 21 | *.sw* 22 | -------------------------------------------------------------------------------- /modules/monitor/.ignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/modules/monitor/.ignore -------------------------------------------------------------------------------- /modules/monitor/README.md: -------------------------------------------------------------------------------- 1 | # Portmaster Settings 2 | 3 | ## Project setup 4 | ``` 5 | npm install 6 | ``` 7 | 8 | ### Compiles and hot-reloads for development 9 | ``` 10 | npm run serve 11 | ``` 12 | 13 | ### Compiles and minifies for production 14 | ``` 15 | npm run build 16 | ``` 17 | 18 | ### Run your tests 19 | ``` 20 | npm run test 21 | ``` 22 | 23 | ### Lints and fixes files 24 | ``` 25 | npm run lint 26 | ``` 27 | -------------------------------------------------------------------------------- /modules/monitor/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: ["@vue/app"] 3 | }; 4 | -------------------------------------------------------------------------------- /modules/monitor/public/assets: -------------------------------------------------------------------------------- 1 | ../../../assets -------------------------------------------------------------------------------- /modules/monitor/serve: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | npm run serve 4 | 5 | -------------------------------------------------------------------------------- /modules/monitor/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 17 | 18 | 21 | -------------------------------------------------------------------------------- /modules/monitor/src/components/ChildProcessList.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /modules/monitor/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from "vue"; 2 | import App from "./App.vue"; 3 | import PortAPI from "../../../assets/js/portapi.js"; 4 | import jQuery from "jquery"; 5 | 6 | window.$ = jQuery; 7 | window.jQuery = jQuery; 8 | Vue.config.productionTip = false; 9 | 10 | require("../../../assets/themed/fomantic/semantic.min.js"); 11 | 12 | Vue.use(PortAPI, { 13 | url: "ws://127.0.0.1:817/api/database/v1", 14 | debug: true 15 | }); 16 | 17 | new Vue({ 18 | render: h => h(App) 19 | }).$mount("#app"); 20 | -------------------------------------------------------------------------------- /modules/monitor/vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | publicPath: process.env.NODE_ENV === "development" ? "/" : "" 3 | }; 4 | -------------------------------------------------------------------------------- /modules/portmaster/.angulardoc.json: -------------------------------------------------------------------------------- 1 | { 2 | "repoId": "be9f3092-959d-4148-98ed-ef4f9ca07250", 3 | "lastSync": 0 4 | } -------------------------------------------------------------------------------- /modules/portmaster/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.ts] 12 | quote_type = single 13 | 14 | [*.md] 15 | max_line_length = off 16 | trim_trailing_whitespace = false 17 | -------------------------------------------------------------------------------- /modules/portmaster/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "type": "chrome", 9 | "request": "launch", 10 | "name": "Launch Chrome against localhost", 11 | "url": "http://localhost:4200", 12 | "webRoot": "${workspaceFolder}" 13 | } 14 | ] 15 | } -------------------------------------------------------------------------------- /modules/portmaster/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.formatOnSave": true, 3 | "typescript.tsdk": "node_modules/typescript/lib" 4 | } 5 | -------------------------------------------------------------------------------- /modules/portmaster/browser-extension.config.ts: -------------------------------------------------------------------------------- 1 | import type { Configuration } from 'webpack'; 2 | 3 | module.exports = { 4 | entry: { background: { import: 'projects/portmaster-chrome-extension/src/background.ts', runtime: false } }, 5 | } as Configuration; 6 | -------------------------------------------------------------------------------- /modules/portmaster/e2e/src/app.po.ts: -------------------------------------------------------------------------------- 1 | import { browser, by, element } from 'protractor'; 2 | 3 | export class AppPage { 4 | navigateTo(): Promise { 5 | return browser.get(browser.baseUrl) as Promise; 6 | } 7 | 8 | getTitleText(): Promise { 9 | return element(by.css('app-root .content span')).getText() as Promise; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /modules/portmaster/e2e/tsconfig.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "../tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "../out-tsc/e2e", 6 | "module": "commonjs", 7 | "target": "es2018", 8 | "types": [ 9 | "jasmine", 10 | "jasminewd2", 11 | "node" 12 | ] 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /modules/portmaster/projects/portmaster-chrome-extension/src/app/app.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /modules/portmaster/projects/portmaster-chrome-extension/src/app/app.component.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | @apply bg-background text-white flex flex-col w-96 h-96; 3 | } 4 | -------------------------------------------------------------------------------- /modules/portmaster/projects/portmaster-chrome-extension/src/app/domain-list/index.ts: -------------------------------------------------------------------------------- 1 | export * from './domain-list.component'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/projects/portmaster-chrome-extension/src/app/header/header.component.ts: -------------------------------------------------------------------------------- 1 | import { ChangeDetectionStrategy, Component } from "@angular/core"; 2 | 3 | @Component({ 4 | selector: 'ext-header', 5 | templateUrl: './header.component.html', 6 | changeDetection: ChangeDetectionStrategy.OnPush, 7 | styleUrls: ['./header.component.scss'] 8 | }) 9 | export class ExtHeaderComponent { } 10 | -------------------------------------------------------------------------------- /modules/portmaster/projects/portmaster-chrome-extension/src/app/header/index.ts: -------------------------------------------------------------------------------- 1 | export * from './header.component'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/projects/portmaster-chrome-extension/src/app/welcome/index.ts: -------------------------------------------------------------------------------- 1 | export * from './welcome.module'; 2 | 3 | -------------------------------------------------------------------------------- /modules/portmaster/projects/portmaster-chrome-extension/src/app/welcome/welcome.module.ts: -------------------------------------------------------------------------------- 1 | import { CommonModule } from "@angular/common"; 2 | import { NgModule } from "@angular/core"; 3 | import { OverlayStepperModule } from "@safing/ui"; 4 | import { IntroComponent } from "./intro.component"; 5 | 6 | @NgModule({ 7 | imports: [ 8 | CommonModule, 9 | OverlayStepperModule, 10 | ], 11 | declarations: [ 12 | IntroComponent, 13 | ], 14 | exports: [ 15 | IntroComponent, 16 | ] 17 | }) 18 | export class WelcomeModule { } 19 | 20 | -------------------------------------------------------------------------------- /modules/portmaster/projects/portmaster-chrome-extension/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/modules/portmaster/projects/portmaster-chrome-extension/src/assets/.gitkeep -------------------------------------------------------------------------------- /modules/portmaster/projects/portmaster-chrome-extension/src/assets/icon_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/modules/portmaster/projects/portmaster-chrome-extension/src/assets/icon_128.png -------------------------------------------------------------------------------- /modules/portmaster/projects/portmaster-chrome-extension/src/background/commands.ts: -------------------------------------------------------------------------------- 1 | import { Request } from "./tab-tracker"; 2 | 3 | export interface ListRequests { 4 | type: 'listRequests'; 5 | domain?: string; 6 | tabId: number | 'current'; 7 | } 8 | 9 | export interface NotifyRequests { 10 | type: 'notifyRequests', 11 | requests: Request[]; 12 | } 13 | 14 | export type CallRequest = ListRequests; 15 | -------------------------------------------------------------------------------- /modules/portmaster/projects/portmaster-chrome-extension/src/background/tab-utils.ts: -------------------------------------------------------------------------------- 1 | 2 | /** Queries and returns the currently active tab */ 3 | export function getCurrentTab(): Promise { 4 | return new Promise((resolve) => { 5 | chrome.tabs.query({ active: true, lastFocusedWindow: true }, ([tab]) => { 6 | resolve(tab); 7 | }) 8 | }) 9 | } 10 | -------------------------------------------------------------------------------- /modules/portmaster/projects/portmaster-chrome-extension/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: false 3 | }; 4 | -------------------------------------------------------------------------------- /modules/portmaster/projects/portmaster-chrome-extension/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/modules/portmaster/projects/portmaster-chrome-extension/src/favicon.ico -------------------------------------------------------------------------------- /modules/portmaster/projects/portmaster-chrome-extension/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PortmasterChromeExtension 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /modules/portmaster/projects/portmaster-chrome-extension/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule) 12 | .catch(err => console.error(err)); 13 | -------------------------------------------------------------------------------- /modules/portmaster/projects/portmaster-chrome-extension/src/styles.scss: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | 3 | @import 'tailwindcss/base'; 4 | @import 'tailwindcss/components'; 5 | @import 'tailwindcss/utilities'; 6 | 7 | 8 | @import '@angular/cdk/overlay-prebuilt'; 9 | -------------------------------------------------------------------------------- /modules/portmaster/projects/portmaster-chrome-extension/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "../../tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "../../out-tsc/app", 6 | "types": [ 7 | "chrome" 8 | ] 9 | }, 10 | "files": [ 11 | "src/main.ts", 12 | "src/polyfills.ts", 13 | "src/background.ts" 14 | ], 15 | "include": [ 16 | "src/**/*.d.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /modules/portmaster/projects/portmaster-chrome-extension/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "../../tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "../../out-tsc/spec", 6 | "types": [ 7 | "jasmine" 8 | ] 9 | }, 10 | "files": [ 11 | "src/test.ts", 12 | "src/polyfills.ts" 13 | ], 14 | "include": [ 15 | "src/**/*.spec.ts", 16 | "src/**/*.d.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /modules/portmaster/projects/safing/portmaster-api/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "dest": "../../../dist-lib/safing/portmaster-api", 4 | "lib": { 5 | "entryFile": "src/public-api.ts" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /modules/portmaster/projects/safing/portmaster-api/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@safing/portmaster-api", 3 | "version": "0.0.1", 4 | "peerDependencies": { 5 | "@angular/common": "^14.0.0", 6 | "@angular/core": "^14.0.0" 7 | }, 8 | "dependencies": { 9 | "tslib": "^2.3.0" 10 | }, 11 | "devDependencies": { 12 | "@types/jasmine": "^4.0.3" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /modules/portmaster/projects/safing/portmaster-api/src/lib/features.ts: -------------------------------------------------------------------------------- 1 | export enum FeatureID { 2 | None = "", 3 | SPN = "spn", 4 | PrioritySupport = "support", 5 | History = "history", 6 | Bandwidth = "bw-vis", 7 | VPNCompat = "vpn-compat", 8 | } 9 | -------------------------------------------------------------------------------- /modules/portmaster/projects/safing/portmaster-api/src/lib/utils.ts: -------------------------------------------------------------------------------- 1 | 2 | export function deepClone(o?: T | null): T { 3 | if (o === null || o === undefined) { 4 | return null as any as T; 5 | } 6 | 7 | let _out: T = (Array.isArray(o) ? [] : {}) as T; 8 | for (let _key in (o as T)) { 9 | let v = o[_key]; 10 | _out[_key] = (typeof v === "object") ? deepClone(v) : v; 11 | } 12 | return _out as T; 13 | } 14 | -------------------------------------------------------------------------------- /modules/portmaster/projects/safing/portmaster-api/tsconfig.lib.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "../../../tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "../../../out-tsc/lib", 6 | "declaration": true, 7 | "declarationMap": true, 8 | "inlineSources": true, 9 | "types": [] 10 | }, 11 | "exclude": [ 12 | "src/test.ts", 13 | "testing/**/*", 14 | "**/*.spec.ts" 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /modules/portmaster/projects/safing/portmaster-api/tsconfig.lib.prod.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.lib.json", 4 | "compilerOptions": { 5 | "declarationMap": false 6 | }, 7 | } 8 | -------------------------------------------------------------------------------- /modules/portmaster/projects/safing/portmaster-api/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "../../../tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "../../../out-tsc/spec", 6 | "types": [ 7 | "jasmine" 8 | ] 9 | }, 10 | "files": [ 11 | "testing/**/*.ts" 12 | ], 13 | "include": [ 14 | "testing/**/*.ts", 15 | "**/*.spec.ts", 16 | "**/*.d.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /modules/portmaster/projects/safing/ui/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "dest": "../../../dist-lib/safing/ui", 4 | "lib": { 5 | "entryFile": "src/public-api.ts" 6 | }, 7 | "assets": [ 8 | "theming.scss", 9 | "**/_*.scss" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /modules/portmaster/projects/safing/ui/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@safing/ui", 3 | "version": "0.0.1", 4 | "peerDependencies": { 5 | "@angular/common": "~12.2.0", 6 | "@angular/core": "~12.2.0", 7 | "@angular/cdk": "~12.2.0" 8 | }, 9 | "dependencies": { 10 | "tslib": "^2.3.0" 11 | }, 12 | "exports": { 13 | "./theming": { 14 | "sass": "./theming.scss" 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /modules/portmaster/projects/safing/ui/src/lib/accordion/accordion-group.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /modules/portmaster/projects/safing/ui/src/lib/accordion/accordion.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 |
5 | 6 |
7 | 8 | 9 | 10 |
11 | -------------------------------------------------------------------------------- /modules/portmaster/projects/safing/ui/src/lib/accordion/index.ts: -------------------------------------------------------------------------------- 1 | export { SfngAccordionComponent } from './accordion'; 2 | export { SfngAccordionGroupComponent } from './accordion-group'; 3 | export { SfngAccordionModule } from './accordion.module'; 4 | 5 | -------------------------------------------------------------------------------- /modules/portmaster/projects/safing/ui/src/lib/dialog/index.ts: -------------------------------------------------------------------------------- 1 | export { ConfirmDialogConfig } from './confirm.dialog'; 2 | export * from './dialog.module'; 3 | export * from './dialog.ref'; 4 | export * from './dialog.service'; 5 | 6 | -------------------------------------------------------------------------------- /modules/portmaster/projects/safing/ui/src/lib/dropdown/dropdown.module.ts: -------------------------------------------------------------------------------- 1 | import { OverlayModule } from "@angular/cdk/overlay"; 2 | import { CommonModule } from "@angular/common"; 3 | import { NgModule } from "@angular/core"; 4 | import { SfngDropdownComponent } from "./dropdown"; 5 | 6 | @NgModule({ 7 | imports: [ 8 | CommonModule, 9 | OverlayModule, 10 | ], 11 | declarations: [ 12 | SfngDropdownComponent, 13 | ], 14 | exports: [ 15 | SfngDropdownComponent, 16 | ] 17 | }) 18 | export class SfngDropDownModule { } 19 | -------------------------------------------------------------------------------- /modules/portmaster/projects/safing/ui/src/lib/dropdown/index.ts: -------------------------------------------------------------------------------- 1 | export * from './dropdown'; 2 | export * from './dropdown.module'; 3 | 4 | -------------------------------------------------------------------------------- /modules/portmaster/projects/safing/ui/src/lib/overlay-stepper/index.ts: -------------------------------------------------------------------------------- 1 | export * from './overlay-stepper'; 2 | export * from './overlay-stepper.module'; 3 | export * from './refs'; 4 | export * from './step'; 5 | 6 | -------------------------------------------------------------------------------- /modules/portmaster/projects/safing/ui/src/lib/pagination/_pagination.scss: -------------------------------------------------------------------------------- 1 | sfng-pagination { 2 | .pagination { 3 | @apply my-2 w-full flex justify-between; 4 | 5 | button { 6 | @apply text-xxs px-2 flex items-center justify-start; 7 | 8 | &.page { 9 | @apply bg-cards-secondary; 10 | @apply opacity-50; 11 | 12 | &:hover { 13 | @apply opacity-100; 14 | } 15 | } 16 | 17 | &.active-page { 18 | @apply text-blue font-medium opacity-100; 19 | } 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /modules/portmaster/projects/safing/ui/src/lib/pagination/index.ts: -------------------------------------------------------------------------------- 1 | export * from './dynamic-items-paginator'; 2 | export * from './pagination'; 3 | export * from './pagination.module'; 4 | export * from './snapshot-paginator'; 5 | 6 | -------------------------------------------------------------------------------- /modules/portmaster/projects/safing/ui/src/lib/select/index.ts: -------------------------------------------------------------------------------- 1 | export * from './item'; 2 | export * from './select'; 3 | export * from './select.module'; 4 | 5 | -------------------------------------------------------------------------------- /modules/portmaster/projects/safing/ui/src/lib/tabs/_tab-group.scss: -------------------------------------------------------------------------------- 1 | sfng-tab-group { 2 | @apply flex flex-col overflow-hidden; 3 | } 4 | -------------------------------------------------------------------------------- /modules/portmaster/projects/safing/ui/src/lib/tabs/index.ts: -------------------------------------------------------------------------------- 1 | export { SfngTabComponent, SfngTabContentDirective } from './tab'; 2 | export { SfngTabContentScrollEvent, SfngTabGroupComponent } from './tab-group'; 3 | export { SfngTabModule as TabModule } from './tabs.module'; 4 | 5 | -------------------------------------------------------------------------------- /modules/portmaster/projects/safing/ui/src/lib/tipup/index.ts: -------------------------------------------------------------------------------- 1 | export * from './anchor'; 2 | export * from './tipup'; 3 | export * from './tipup-component'; 4 | export * from './tipup.module'; 5 | export * from './translations'; 6 | 7 | -------------------------------------------------------------------------------- /modules/portmaster/projects/safing/ui/src/lib/tipup/utils.ts: -------------------------------------------------------------------------------- 1 | import { InjectionToken } from "@angular/core"; 2 | 3 | export const TIPUP_TOKEN = new InjectionToken('TipUPJSONToken'); 4 | 5 | export interface SfngTipUpPlacement { 6 | origin?: 'left' | 'right'; 7 | offset?: number; 8 | } 9 | -------------------------------------------------------------------------------- /modules/portmaster/projects/safing/ui/src/lib/toggle-switch/index.ts: -------------------------------------------------------------------------------- 1 | export * from './toggle-switch'; 2 | export * from './toggle.module'; 3 | 4 | -------------------------------------------------------------------------------- /modules/portmaster/projects/safing/ui/src/lib/toggle-switch/toggle.module.ts: -------------------------------------------------------------------------------- 1 | import { CommonModule } from "@angular/common"; 2 | import { NgModule } from "@angular/core"; 3 | import { FormsModule } from "@angular/forms"; 4 | import { SfngToggleSwitchComponent } from "./toggle-switch"; 5 | 6 | @NgModule({ 7 | imports: [ 8 | CommonModule, 9 | FormsModule, 10 | ], 11 | declarations: [ 12 | SfngToggleSwitchComponent, 13 | ], 14 | exports: [ 15 | SfngToggleSwitchComponent, 16 | ] 17 | }) 18 | export class SfngToggleSwitchModule { } 19 | -------------------------------------------------------------------------------- /modules/portmaster/projects/safing/ui/src/lib/tooltip/_tooltip-component.scss: -------------------------------------------------------------------------------- 1 | sfng-tooltip-container { 2 | @apply relative block; 3 | 4 | max-width: 16rem; 5 | } 6 | -------------------------------------------------------------------------------- /modules/portmaster/projects/safing/ui/src/lib/tooltip/index.ts: -------------------------------------------------------------------------------- 1 | export * from './tooltip'; 2 | export * from './tooltip.module'; 3 | 4 | -------------------------------------------------------------------------------- /modules/portmaster/projects/safing/ui/src/lib/tooltip/tooltip-component.html: -------------------------------------------------------------------------------- 1 |
4 | {{ message }} 5 | 6 |
7 | -------------------------------------------------------------------------------- /modules/portmaster/projects/safing/ui/src/lib/ui.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { SfngAccordionModule } from './accordion'; 3 | 4 | 5 | @NgModule({ 6 | exports: [ 7 | SfngAccordionModule 8 | ] 9 | }) 10 | export class UiModule { } 11 | -------------------------------------------------------------------------------- /modules/portmaster/projects/safing/ui/src/public-api.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Public API Surface of ui 3 | */ 4 | 5 | export * from './lib/accordion'; 6 | export * from './lib/dialog'; 7 | export * from './lib/dropdown'; 8 | export * from './lib/overlay-stepper'; 9 | export * from './lib/pagination'; 10 | export * from './lib/select'; 11 | export * from './lib/tabs'; 12 | export * from './lib/tipup'; 13 | export * from './lib/toggle-switch'; 14 | export * from './lib/tooltip'; 15 | export * from './lib/ui.module'; 16 | 17 | -------------------------------------------------------------------------------- /modules/portmaster/projects/safing/ui/theming.scss: -------------------------------------------------------------------------------- 1 | @import "./src/lib/select/select"; 2 | @import "./src/lib/dialog/dialog"; 3 | @import "./src/lib/pagination/pagination"; 4 | @import "./src/lib/tabs/tab-group"; 5 | @import "./src/lib/tipup/tipup"; 6 | @import "./src/lib/tooltip/tooltip-component"; 7 | @import "./src/lib/toggle-switch/toggle-switch"; 8 | @import "./src/lib/dialog/confirm.dialog"; 9 | -------------------------------------------------------------------------------- /modules/portmaster/projects/safing/ui/tsconfig.lib.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../../out-tsc/lib", 5 | "declaration": true, 6 | "declarationMap": true, 7 | "inlineSources": true, 8 | "types": [], 9 | "lib": [ 10 | "dom", 11 | "es2018" 12 | ] 13 | }, 14 | "exclude": [ 15 | "src/test.ts", 16 | "**/*.spec.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /modules/portmaster/projects/safing/ui/tsconfig.lib.prod.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.lib.json", 4 | "compilerOptions": { 5 | "declarationMap": false 6 | }, 7 | } 8 | -------------------------------------------------------------------------------- /modules/portmaster/projects/safing/ui/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "../../../tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "../../../out-tsc/spec", 6 | "types": [ 7 | "jasmine" 8 | ] 9 | }, 10 | "files": [ 11 | "src/test.ts" 12 | ], 13 | "include": [ 14 | "**/*.spec.ts", 15 | "**/*.d.ts" 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /modules/portmaster/projects/tauri-builtin/src/app/app.config.ts: -------------------------------------------------------------------------------- 1 | import { ApplicationConfig } from '@angular/core'; 2 | import { TauriIntegrationService } from 'src/app/integration/taur-app'; 3 | 4 | export const appConfig: ApplicationConfig = { 5 | providers: [ 6 | { 7 | provide: TauriIntegrationService, 8 | useClass: TauriIntegrationService, 9 | deps: [] 10 | }, 11 | ], 12 | }; 13 | -------------------------------------------------------------------------------- /modules/portmaster/projects/tauri-builtin/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/modules/portmaster/projects/tauri-builtin/src/assets/.gitkeep -------------------------------------------------------------------------------- /modules/portmaster/projects/tauri-builtin/src/assets/portmaster-logo.png: -------------------------------------------------------------------------------- 1 | ../../../../../../assets/icons/pm_dark_512.png -------------------------------------------------------------------------------- /modules/portmaster/projects/tauri-builtin/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/modules/portmaster/projects/tauri-builtin/src/favicon.ico -------------------------------------------------------------------------------- /modules/portmaster/projects/tauri-builtin/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | TauriBuiltin 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /modules/portmaster/projects/tauri-builtin/src/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrapApplication } from '@angular/platform-browser'; 2 | import { appConfig } from './app/app.config'; 3 | import { AppComponent } from './app/app.component'; 4 | 5 | bootstrapApplication(AppComponent, appConfig) 6 | .catch((err) => console.error(err)); 7 | -------------------------------------------------------------------------------- /modules/portmaster/projects/tauri-builtin/src/styles.scss: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | @import "safing/ui/theming"; 6 | 7 | /** foboar **/ 8 | -------------------------------------------------------------------------------- /modules/portmaster/projects/tauri-builtin/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "../../tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "../../out-tsc/app", 6 | "types": [] 7 | }, 8 | "files": ["src/main.ts"], 9 | "include": ["src/**/*.d.ts", "../../src/electron-app.d.ts"] 10 | } 11 | -------------------------------------------------------------------------------- /modules/portmaster/proxy.json: -------------------------------------------------------------------------------- 1 | { 2 | "/api": { 3 | "target": "http://localhost:817/", 4 | "secure": false 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/integration/index.ts: -------------------------------------------------------------------------------- 1 | export * from './integration'; 2 | export * from './factory'; 3 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/intro/index.ts: -------------------------------------------------------------------------------- 1 | export * from './intro.module'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/intro/step-1-welcome/index.ts: -------------------------------------------------------------------------------- 1 | export * from './step-1-welcome'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/intro/step-2-trackers/index.ts: -------------------------------------------------------------------------------- 1 | export * from './step-2-trackers' 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/intro/step-3-dns/index.ts: -------------------------------------------------------------------------------- 1 | export * from './step-3-dns' 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/intro/step-4-tipups/index.ts: -------------------------------------------------------------------------------- 1 | export * from './step-4-tipups' 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/intro/step-4-tipups/step-4-tipups.ts: -------------------------------------------------------------------------------- 1 | import { ChangeDetectionStrategy, Component } from "@angular/core"; 2 | import { Step } from "@safing/ui"; 3 | import { of } from "rxjs"; 4 | 5 | @Component({ 6 | templateUrl: './step-4-tipups.html', 7 | styleUrls: ['../step.scss'], 8 | changeDetection: ChangeDetectionStrategy.OnPush, 9 | }) 10 | export class Step4TipupsComponent implements Step { 11 | validChange = of(true) 12 | } 13 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/intro/step.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | @apply flex flex-col items-center justify-center; 3 | } 4 | 5 | h1 { 6 | @apply text-primary text-2xl font-medium capitalize text-center py-5; 7 | } 8 | 9 | p { 10 | @apply text-tertiary text-sm font-medium text-center; 11 | } 12 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/layout/side-dash/side-dash.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/layout/side-dash/side-dash.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | display: flex; 3 | flex-direction: column; 4 | align-items: center; 5 | justify-content: flex-start; 6 | overflow: hidden; 7 | overflow-y: hidden; 8 | width: 419px; 9 | 10 | @apply pt-4; 11 | } 12 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/layout/side-dash/side-dash.ts: -------------------------------------------------------------------------------- 1 | import { ChangeDetectionStrategy, Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-side-dash', 5 | templateUrl: './side-dash.html', 6 | styleUrls: ['./side-dash.scss'], 7 | changeDetection: ChangeDetectionStrategy.OnPush, 8 | }) 9 | export class SideDashComponent { 10 | /** Whether or not a SPN account login is required */ 11 | spnLoginRequired = false; 12 | 13 | } 14 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/pages/app-view/app-view.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | @apply flex flex-col h-screen max-h-screen; 3 | } 4 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/pages/app-view/index.ts: -------------------------------------------------------------------------------- 1 | export { AppViewComponent } from './app-view'; 2 | export { AppOverviewComponent } from './overview'; 3 | export { QuickSettingInternetButtonComponent } from './qs-internet'; 4 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/pages/app-view/qs-history/qs-history.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/modules/portmaster/src/app/pages/app-view/qs-history/qs-history.component.scss -------------------------------------------------------------------------------- /modules/portmaster/src/app/pages/app-view/qs-internet/index.ts: -------------------------------------------------------------------------------- 1 | export * from './qs-internet'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/pages/app-view/qs-select-exit/index.ts: -------------------------------------------------------------------------------- 1 | export * from './qs-select-exit'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/pages/app-view/qs-select-exit/qs-select-exit.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/modules/portmaster/src/app/pages/app-view/qs-select-exit/qs-select-exit.scss -------------------------------------------------------------------------------- /modules/portmaster/src/app/pages/app-view/qs-use-spn/index.ts: -------------------------------------------------------------------------------- 1 | export * from './qs-use-spn'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/pages/monitor/index.ts: -------------------------------------------------------------------------------- 1 | export { MonitorPageComponent } from './monitor'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/pages/page.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | display : flex; 3 | flex-direction: column; 4 | width : 100%; 5 | height : 100%; 6 | } 7 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/pages/spn/country-details/index.ts: -------------------------------------------------------------------------------- 1 | export * from './country-details'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/pages/spn/country-overlay/index.ts: -------------------------------------------------------------------------------- 1 | export * from './country-overlay'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/pages/spn/index.ts: -------------------------------------------------------------------------------- 1 | export * from './spn-page'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/pages/spn/map-legend/index.ts: -------------------------------------------------------------------------------- 1 | export * from './map-legend'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/pages/spn/map-renderer/index.ts: -------------------------------------------------------------------------------- 1 | export * from './map-renderer'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/pages/spn/node-icon/index.ts: -------------------------------------------------------------------------------- 1 | export * from './node-icon'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/pages/spn/pin-details/index.ts: -------------------------------------------------------------------------------- 1 | export * from './pin-details'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/pages/spn/pin-list/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/modules/portmaster/src/app/pages/spn/pin-list/index.ts -------------------------------------------------------------------------------- /modules/portmaster/src/app/pages/spn/pin-overlay/index.ts: -------------------------------------------------------------------------------- 1 | export * from './pin-overlay'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/pages/spn/pin-overlay/pin-overlay.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | min-width: 220px; 3 | display: block; 4 | } 5 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/pages/spn/pin-route/index.ts: -------------------------------------------------------------------------------- 1 | export * from './pin-route'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/pages/spn/spn-feature-carousel/index.ts: -------------------------------------------------------------------------------- 1 | export * from './spn-feature-carousel'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/pages/spn/utils.ts: -------------------------------------------------------------------------------- 1 | import { OverlayRef } from '@angular/cdk/overlay'; 2 | import { InjectionToken } from '@angular/core'; 3 | 4 | export const OVERLAY_REF = new InjectionToken('OVERLAY_REF'); 5 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/pages/support/form/index.ts: -------------------------------------------------------------------------------- 1 | export * from './support-form'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/pages/support/index.ts: -------------------------------------------------------------------------------- 1 | export * from './support'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/pages/support/progress-dialog/index.ts: -------------------------------------------------------------------------------- 1 | export * from './progress-dialog'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/services/index.ts: -------------------------------------------------------------------------------- 1 | export { NotificationsService } from './notifications.service'; 2 | export * from './notifications.types'; 3 | export * from './session-data.service'; 4 | export { StatusService } from './status.service'; 5 | export * from './status.types'; 6 | export * from './supporthub.service'; 7 | export * from './ui-state.service'; 8 | 9 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/services/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "sideEffects": false 3 | } 4 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/services/status.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import { StatusService } from './status.service'; 4 | 5 | describe('StatusService', () => { 6 | let service: StatusService; 7 | 8 | beforeEach(() => { 9 | TestBed.configureTestingModule({}); 10 | service = TestBed.inject(StatusService); 11 | }); 12 | 13 | it('should be created', () => { 14 | expect(service).toBeTruthy(); 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/action-indicator/action-indicator.module.ts: -------------------------------------------------------------------------------- 1 | import { CommonModule } from "@angular/common"; 2 | import { NgModule } from "@angular/core"; 3 | import { IndicatorComponent } from "./indicator"; 4 | 5 | @NgModule({ 6 | imports: [ 7 | CommonModule, 8 | ], 9 | declarations: [ 10 | IndicatorComponent, 11 | ] 12 | }) 13 | export class ActionIndicatorModule { } 14 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/action-indicator/index.ts: -------------------------------------------------------------------------------- 1 | export * from './action-indicator.service'; 2 | export * from './action-indicator.module'; 3 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/app-icon/index.ts: -------------------------------------------------------------------------------- 1 | export { AppIconComponent } from './app-icon'; 2 | export { SfngAppIconModule } from './app-icon.module'; 3 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/config/basic-setting/index.ts: -------------------------------------------------------------------------------- 1 | export * from './basic-setting'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/config/filter-lists/index.ts: -------------------------------------------------------------------------------- 1 | export { FilterListComponent } from './filter-list'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/config/generic-setting/index.ts: -------------------------------------------------------------------------------- 1 | export * from './generic-setting'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/config/index.ts: -------------------------------------------------------------------------------- 1 | export * from './basic-setting'; 2 | export * from './config-settings'; 3 | export * from './config.module'; 4 | export * from './filter-lists'; 5 | export * from './generic-setting'; 6 | export * from './ordererd-list'; 7 | export * from './rule-list'; 8 | export * from './safe.pipe'; 9 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/config/ordererd-list/index.ts: -------------------------------------------------------------------------------- 1 | export { OrderedListComponent } from './ordered-list'; 2 | export { OrderedListItemComponent } from './item'; -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/config/ordererd-list/item.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | {{value}} 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 |
14 |
15 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/config/rule-list/index.ts: -------------------------------------------------------------------------------- 1 | export * from './list-item'; 2 | export * from './rule-list'; 3 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/count-indicator/count-indicator.html: -------------------------------------------------------------------------------- 1 | {{ count | prettyCount }} 2 |
3 |
4 |
5 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/count-indicator/count-indicator.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from "@angular/core"; 2 | import { CountIndicatorComponent } from "./count-indicator"; 3 | import { PrettyCountPipe } from "./count.pipe"; 4 | 5 | @NgModule({ 6 | declarations: [ 7 | CountIndicatorComponent, 8 | PrettyCountPipe, 9 | ], 10 | exports: [ 11 | CountIndicatorComponent, 12 | PrettyCountPipe, 13 | ] 14 | }) 15 | export class CountIndicatorModule { } 16 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/count-indicator/count-indicator.scss: -------------------------------------------------------------------------------- 1 | @import '../../../theme/mixins/_pill.scss'; 2 | 3 | :host { 4 | @include pill-container; 5 | @apply pl-2; 6 | @apply bg-buttons-dark; 7 | @apply w-20; 8 | } 9 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/count-indicator/count.pipe.ts: -------------------------------------------------------------------------------- 1 | import { Pipe, PipeTransform } from "@angular/core"; 2 | 3 | @Pipe({ 4 | name: 'prettyCount', 5 | pure: true 6 | }) 7 | export class PrettyCountPipe implements PipeTransform { 8 | transform(value: number) { 9 | if (value > 999) { 10 | const v = Math.floor(value / 1000); 11 | if (value === v * 1000) { 12 | return `${v}k`; 13 | } 14 | return `${v}k+` 15 | } 16 | return `${value}` 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/count-indicator/index.ts: -------------------------------------------------------------------------------- 1 | export * from './count-indicator'; 2 | export * from './count-indicator.module'; 3 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/country-flag/country.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CountryFlagDirective } from './country-flag'; 3 | 4 | @NgModule({ 5 | declarations: [ 6 | CountryFlagDirective 7 | ], 8 | exports: [ 9 | CountryFlagDirective, 10 | ] 11 | }) 12 | export class CountryFlagModule { } 13 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/country-flag/index.ts: -------------------------------------------------------------------------------- 1 | export * from './country-flag'; 2 | export * from './country.module'; 3 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/edit-profile-dialog/index.ts: -------------------------------------------------------------------------------- 1 | export * from './edit-profile-dialog'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/exit-screen/index.ts: -------------------------------------------------------------------------------- 1 | export * from './exit.service'; 2 | export * from './exit-screen'; 3 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/expertise/expertise-switch.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | display: flex; 3 | @apply pl-2; 4 | user-select: none; 5 | flex-direction: row; 6 | align-items: center; 7 | justify-content: center; 8 | } 9 | 10 | sfng-tipup { 11 | margin-right: 0.5rem; 12 | } 13 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/expertise/index.ts: -------------------------------------------------------------------------------- 1 | export * from './expertise-directive'; 2 | export * from './expertise-switch'; 3 | export * from './expertise.service'; 4 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/feature-scout/feature-scout.scss: -------------------------------------------------------------------------------- 1 | .feature-icon { 2 | @apply text-primary text-opacity-80; 3 | 4 | &.feature-icon-off { 5 | opacity: 0.25; 6 | } 7 | } 8 | 9 | .status-info { 10 | @apply text-primary text-opacity-80 text-xxs text-center; 11 | 12 | &:hover { 13 | cursor: default; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/feature-scout/index.ts: -------------------------------------------------------------------------------- 1 | export * from './feature-scout'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/focus/focus.module.ts: -------------------------------------------------------------------------------- 1 | import { CommonModule } from "@angular/common"; 2 | import { NgModule } from "@angular/core"; 3 | import { AutoFocusDirective } from "./focus.directive"; 4 | 5 | @NgModule({ 6 | imports: [ 7 | CommonModule, 8 | ], 9 | declarations: [ 10 | AutoFocusDirective, 11 | ], 12 | exports: [ 13 | AutoFocusDirective, 14 | ] 15 | }) 16 | export class SfngFocusModule { } 17 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/focus/index.ts: -------------------------------------------------------------------------------- 1 | export { AutoFocusDirective } from './focus.directive'; 2 | export * from './focus.module'; 3 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/fuzzySearch/index.ts: -------------------------------------------------------------------------------- 1 | import Fuse from 'fuse.js'; 2 | 3 | export { FuseSearchOpts, FuzzySearchService } from './fuse.service'; 4 | export { FuzzySearchPipe } from './search-pipe'; 5 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/loading/index.ts: -------------------------------------------------------------------------------- 1 | export { LoadingComponent } from './loading'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/loading/loading.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/loading/loading.ts: -------------------------------------------------------------------------------- 1 | import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-loading', 5 | templateUrl: './loading.html', 6 | styleUrls: ['./loading.scss'], 7 | changeDetection: ChangeDetectionStrategy.OnPush, 8 | }) 9 | export class LoadingComponent { 10 | @HostBinding('class.animate') 11 | _animate = true; 12 | 13 | constructor(private changeDetectorRef: ChangeDetectorRef) { } 14 | } 15 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/menu/index.ts: -------------------------------------------------------------------------------- 1 | export { MenuComponent, MenuTriggerComponent, MenuItemComponent, MenuGroupComponent } from './menu'; 2 | export * from './menu.module'; 3 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/menu/menu-group.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | display: block; 3 | width: 100%; 4 | 5 | @apply p-1; 6 | @apply px-4; 7 | @apply text-secondary; 8 | 9 | display: block; 10 | text-transform: uppercase; 11 | font-size: 0.7rem; 12 | opacity: .7; 13 | } 14 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/menu/menu-item.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | @apply block w-full; 3 | 4 | cursor: pointer; 5 | @apply p-2; 6 | @apply px-4 text-primary text-xxs; 7 | font-weight: 500; 8 | 9 | &:hover { 10 | @apply bg-gray-300; 11 | } 12 | 13 | &.disabled { 14 | cursor: not-allowed; 15 | opacity: 0.5; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/menu/menu.html: -------------------------------------------------------------------------------- 1 | 3 |
4 | 5 |
6 |
7 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/multi-switch/index.ts: -------------------------------------------------------------------------------- 1 | export { MultiSwitchComponent } from './multi-switch'; 2 | export { SwitchItemComponent } from './switch-item'; 3 | export * from './multi-switch.module'; 4 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/multi-switch/multi-switch.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 |
5 | 6 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/netquery/add-to-filter/index.ts: -------------------------------------------------------------------------------- 1 | export * from './add-to-filter'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/netquery/combined-menu.pipe.ts: -------------------------------------------------------------------------------- 1 | import { KeyValue } from '@angular/common'; 2 | import { Pipe, PipeTransform } from "@angular/core"; 3 | 4 | interface Model { 5 | visible: boolean | 'combinedMenu'; 6 | } 7 | 8 | @Pipe({ 9 | pure: true, 10 | name: 'combinedMenu' 11 | }) 12 | export class CombinedMenuPipe implements PipeTransform { 13 | transform(value: KeyValue[], ...args: any[]) { 14 | return value.filter(entry => entry.value?.visible === 'combinedMenu') 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/netquery/connection-details/index.ts: -------------------------------------------------------------------------------- 1 | export * from './conn-details'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/netquery/connection-row/index.ts: -------------------------------------------------------------------------------- 1 | export * from './conn-row'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/netquery/index.ts: -------------------------------------------------------------------------------- 1 | export * from './netquery.component'; 2 | export * from './netquery.module'; 3 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/netquery/line-chart/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/modules/portmaster/src/app/shared/netquery/line-chart/index.ts -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/netquery/pipes/index.ts: -------------------------------------------------------------------------------- 1 | export * from './location.pipe'; 2 | export * from './can-show.pipe'; 3 | export * from './can-use-rules.pipe'; 4 | export * from './is-blocked.pipe'; 5 | export * from './country-name.pipe'; 6 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/netquery/pipes/is-blocked.pipe.ts: -------------------------------------------------------------------------------- 1 | import { Pipe, PipeTransform } from '@angular/core'; 2 | import { IsDenied, NetqueryConnection } from '@safing/portmaster-api'; 3 | 4 | @Pipe({ 5 | name: "isBlocked", 6 | pure: true 7 | }) 8 | export class IsBlockedConnectionPipe implements PipeTransform { 9 | transform(conn: NetqueryConnection): boolean { 10 | return IsDenied(conn?.verdict); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/netquery/scope-label/index.ts: -------------------------------------------------------------------------------- 1 | export * from './scope-label'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/netquery/scope-label/scope-label.html: -------------------------------------------------------------------------------- 1 | 2 | {{subdomain}}. 4 | {{domain}} 5 | 6 | 7 | {{ scopeTranslation[scope || ''] || 'N/A' }} 8 | 9 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/netquery/search-overlay/index.ts: -------------------------------------------------------------------------------- 1 | export * from './search-overlay'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/netquery/search-overlay/search-overlay.html: -------------------------------------------------------------------------------- 1 | 3 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/netquery/searchbar/index.ts: -------------------------------------------------------------------------------- 1 | export * from './searchbar'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/netquery/tag-bar/index.ts: -------------------------------------------------------------------------------- 1 | export * from './tag-bar'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/netquery/textql/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parser'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/network-scout/index.ts: -------------------------------------------------------------------------------- 1 | export * from './network-scout'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/network-scout/network-scout.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | @apply w-full p-2 flex flex-col gap-2; 3 | } 4 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/notification-list/index.ts: -------------------------------------------------------------------------------- 1 | export { NotificationListComponent as NotificationWidgetComponent, NotificationWidgetConfig } from './notification-list.component'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/pipes/index.ts: -------------------------------------------------------------------------------- 1 | export * from './common-pipes.module'; 2 | export * from './time-ago.pipe'; 3 | export * from './to-profile.pipe'; 4 | export * from './duration.pipe'; 5 | export * from './to-seconds.pipe'; 6 | export * from './round.pipe'; 7 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/pipes/round.pipe.ts: -------------------------------------------------------------------------------- 1 | import { Pipe, PipeTransform } from '@angular/core'; 2 | 3 | @Pipe({ 4 | name: 'round', 5 | pure: true, 6 | }) 7 | export class RoundPipe implements PipeTransform { 8 | transform(value: number, roundBy: number) { 9 | if (isNaN(value)) { 10 | return NaN 11 | } 12 | 13 | return Math.floor(value / roundBy) * roundBy 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/pipes/to-seconds.pipe.ts: -------------------------------------------------------------------------------- 1 | import { Pipe, PipeTransform } from "@angular/core"; 2 | 3 | @Pipe({ 4 | name: 'toSeconds', 5 | pure: true, 6 | }) 7 | export class ToSecondsPipe implements PipeTransform { 8 | transform(value: Date | string, ...args: any[]) { 9 | if (value === null || value === undefined) { 10 | return NaN 11 | } 12 | 13 | if (typeof value === 'string') { 14 | value = new Date(value); 15 | } 16 | 17 | return Math.floor(value.getTime() / 1000) 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/process-details-dialog/index.ts: -------------------------------------------------------------------------------- 1 | export * from './process-details-dialog'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/prompt-list/index.ts: -------------------------------------------------------------------------------- 1 | export { PromptListComponent as PromptWidgetComponent } from './prompt-list.component'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/security-lock/index.ts: -------------------------------------------------------------------------------- 1 | export * from './security-lock'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/spn-account-details/index.ts: -------------------------------------------------------------------------------- 1 | export * from './spn-account-details'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/spn-account-details/spn-account-details.scss: -------------------------------------------------------------------------------- 1 | table tr { 2 | background-color: transparent !important; 3 | } 4 | 5 | table .table-section-start { 6 | border-top: 1.5rem solid transparent; 7 | } 8 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/spn-login/index.ts: -------------------------------------------------------------------------------- 1 | export * from './spn-login'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/spn-network-status/index.ts: -------------------------------------------------------------------------------- 1 | export * from './spn-network-status'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/spn-status/index.ts: -------------------------------------------------------------------------------- 1 | export * from './spn-status'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/status-pilot/index.ts: -------------------------------------------------------------------------------- 1 | export { StatusPilotComponent as PilotWidgetComponent } from "./pilot-widget"; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/app/shared/text-placeholder/index.ts: -------------------------------------------------------------------------------- 1 | export { PlaceholderComponent } from './placeholder'; 2 | -------------------------------------------------------------------------------- /modules/portmaster/src/assets: -------------------------------------------------------------------------------- 1 | ../../../assets -------------------------------------------------------------------------------- /modules/portmaster/src/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | 3 | import 'zone.js/dist/zone-testing'; 4 | import { getTestBed } from '@angular/core/testing'; 5 | import { 6 | BrowserDynamicTestingModule, 7 | platformBrowserDynamicTesting 8 | } from '@angular/platform-browser-dynamic/testing'; 9 | 10 | // First, initialize the Angular testing environment. 11 | getTestBed().initTestEnvironment( 12 | BrowserDynamicTestingModule, 13 | platformBrowserDynamicTesting() 14 | ); 15 | -------------------------------------------------------------------------------- /modules/portmaster/src/theme.less: -------------------------------------------------------------------------------- 1 | 2 | // Custom Theming for NG-ZORRO 3 | // For more information: https://ng.ant.design/docs/customize-theme/en 4 | @import "../node_modules/ng-zorro-antd/ng-zorro-antd.dark.less"; 5 | -------------------------------------------------------------------------------- /modules/portmaster/src/theme/_breadcrumbs.scss: -------------------------------------------------------------------------------- 1 | h4.breadcrumbs { 2 | * { 3 | margin-left : 0.125rem; 4 | margin-right: 0.125rem; 5 | } 6 | 7 | span { 8 | outline: none; 9 | @apply text-secondary; 10 | 11 | &:hover { 12 | @apply text-primary; 13 | text-decoration: underline; 14 | } 15 | 16 | &:last-of-type { 17 | @apply text-primary; 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /modules/portmaster/src/theme/_dialog.scss: -------------------------------------------------------------------------------- 1 | .dialog-screen-backdrop { 2 | backdrop-filter : blur(10px); 3 | background-color: rgba(#000000, 0.7); 4 | } 5 | 6 | .dialog-screen-backdrop-light { 7 | backdrop-filter : blur(3px); 8 | background-color: rgba(#000000, 0.4); 9 | } 10 | -------------------------------------------------------------------------------- /modules/portmaster/src/theme/_pill.scss: -------------------------------------------------------------------------------- 1 | @import 'mixins/_pill.scss'; 2 | 3 | .pill-container { 4 | @include pill-container; 5 | @apply pl-2; 6 | @apply bg-buttons-dark; 7 | } 8 | -------------------------------------------------------------------------------- /modules/portmaster/src/theme/_scroll.scss: -------------------------------------------------------------------------------- 1 | html, 2 | body { 3 | scroll-behavior: smooth; 4 | } 5 | 6 | ::-webkit-scrollbar { 7 | @apply bg-buttons-dark; 8 | width: 4px; 9 | } 10 | 11 | ::-webkit-scrollbar-thumb { 12 | @apply bg-buttons-light; 13 | @apply rounded; 14 | cursor: pointer; 15 | } 16 | 17 | .no-scroll { 18 | overflow: hidden; 19 | } 20 | 21 | .scrollable { 22 | width : 100%; 23 | max-height: 100%; 24 | overflow : auto; 25 | overflow-x: hidden; 26 | flex-grow : 1; 27 | @apply px-3; 28 | } 29 | -------------------------------------------------------------------------------- /modules/portmaster/src/theme/_search.scss: -------------------------------------------------------------------------------- 1 | em.search-result { 2 | @apply text-background; 3 | @apply bg-yellow; 4 | @apply border; 5 | @apply border-yellow; 6 | @apply rounded-sm; 7 | 8 | text-decoration: none; 9 | font-style: inherit; 10 | } 11 | -------------------------------------------------------------------------------- /modules/portmaster/src/theme/_tailwind.scss: -------------------------------------------------------------------------------- 1 | /** The tailwind post-processor will inject all tailwind styles here **/ 2 | @import 'tailwindcss/base'; 3 | @import 'tailwindcss/components'; 4 | @import 'tailwindcss/utilities'; 5 | -------------------------------------------------------------------------------- /modules/portmaster/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "./out-tsc/app", 6 | "types": [ 7 | ] 8 | }, 9 | "files": [ 10 | "src/main.ts", 11 | "src/polyfills.ts" 12 | ], 13 | "include": [ 14 | "src/**/*.d.ts" 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /modules/portmaster/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "./out-tsc/spec", 6 | "types": [ 7 | "jasmine" 8 | ] 9 | }, 10 | "files": [ 11 | "src/test.ts", 12 | "src/polyfills.ts" 13 | ], 14 | "include": [ 15 | "src/**/*.spec.ts", 16 | "src/**/*.d.ts", 17 | "src/app/widgets/status-widget-factory/settings.ts" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /notifier/Gopkg.toml: -------------------------------------------------------------------------------- 1 | ignored = ["github.com/safing/portbase/*"] 2 | 3 | [[constraint]] 4 | branch = "master" 5 | name = "github.com/mattn/go-gtk" 6 | 7 | [[constraint]] 8 | branch = "master" 9 | name = "github.com/dhaavi/go-notify" 10 | 11 | [[constraint]] 12 | branch = "master" 13 | name = "github.com/getlantern/systray" 14 | 15 | [prune] 16 | go-tests = true 17 | unused-packages = true 18 | -------------------------------------------------------------------------------- /notifier/README.md: -------------------------------------------------------------------------------- 1 | ### Development Dependencies 2 | 3 | sudo apt install libgtk-3-dev libayatana-appindicator3-dev libwebkitgtk-3.0-dev libgl1-mesa-dev libglu1-mesa-dev libnotify-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev 4 | 5 | sudo pacman -S libappindicator-gtk3 6 | -------------------------------------------------------------------------------- /notifier/icons/icons.go: -------------------------------------------------------------------------------- 1 | package icons 2 | 3 | import ( 4 | _ "embed" 5 | ) 6 | 7 | //go:embed icons/pm_light_512.png 8 | var PNG []byte 9 | -------------------------------------------------------------------------------- /notifier/icons/icons/README.md: -------------------------------------------------------------------------------- 1 | # .ICOs 2 | 3 | converted using https://www.icoconverter.com/ 4 | -------------------------------------------------------------------------------- /notifier/icons/icons/pm_dark_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_dark_128.png -------------------------------------------------------------------------------- /notifier/icons/icons/pm_dark_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_dark_256.png -------------------------------------------------------------------------------- /notifier/icons/icons/pm_dark_512.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_dark_512.ico -------------------------------------------------------------------------------- /notifier/icons/icons/pm_dark_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_dark_512.png -------------------------------------------------------------------------------- /notifier/icons/icons/pm_dark_blue_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_dark_blue_128.png -------------------------------------------------------------------------------- /notifier/icons/icons/pm_dark_blue_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_dark_blue_256.png -------------------------------------------------------------------------------- /notifier/icons/icons/pm_dark_blue_512.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_dark_blue_512.ico -------------------------------------------------------------------------------- /notifier/icons/icons/pm_dark_blue_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_dark_blue_512.png -------------------------------------------------------------------------------- /notifier/icons/icons/pm_dark_green_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_dark_green_128.png -------------------------------------------------------------------------------- /notifier/icons/icons/pm_dark_green_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_dark_green_256.png -------------------------------------------------------------------------------- /notifier/icons/icons/pm_dark_green_512.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_dark_green_512.ico -------------------------------------------------------------------------------- /notifier/icons/icons/pm_dark_green_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_dark_green_512.png -------------------------------------------------------------------------------- /notifier/icons/icons/pm_dark_red_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_dark_red_128.png -------------------------------------------------------------------------------- /notifier/icons/icons/pm_dark_red_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_dark_red_256.png -------------------------------------------------------------------------------- /notifier/icons/icons/pm_dark_red_512.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_dark_red_512.ico -------------------------------------------------------------------------------- /notifier/icons/icons/pm_dark_red_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_dark_red_512.png -------------------------------------------------------------------------------- /notifier/icons/icons/pm_dark_yellow_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_dark_yellow_128.png -------------------------------------------------------------------------------- /notifier/icons/icons/pm_dark_yellow_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_dark_yellow_256.png -------------------------------------------------------------------------------- /notifier/icons/icons/pm_dark_yellow_512.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_dark_yellow_512.ico -------------------------------------------------------------------------------- /notifier/icons/icons/pm_dark_yellow_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_dark_yellow_512.png -------------------------------------------------------------------------------- /notifier/icons/icons/pm_light_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_light_128.png -------------------------------------------------------------------------------- /notifier/icons/icons/pm_light_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_light_256.png -------------------------------------------------------------------------------- /notifier/icons/icons/pm_light_512.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_light_512.ico -------------------------------------------------------------------------------- /notifier/icons/icons/pm_light_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_light_512.png -------------------------------------------------------------------------------- /notifier/icons/icons/pm_light_blue_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_light_blue_128.png -------------------------------------------------------------------------------- /notifier/icons/icons/pm_light_blue_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_light_blue_256.png -------------------------------------------------------------------------------- /notifier/icons/icons/pm_light_blue_512.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_light_blue_512.ico -------------------------------------------------------------------------------- /notifier/icons/icons/pm_light_blue_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_light_blue_512.png -------------------------------------------------------------------------------- /notifier/icons/icons/pm_light_green_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_light_green_128.png -------------------------------------------------------------------------------- /notifier/icons/icons/pm_light_green_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_light_green_256.png -------------------------------------------------------------------------------- /notifier/icons/icons/pm_light_green_512.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_light_green_512.ico -------------------------------------------------------------------------------- /notifier/icons/icons/pm_light_green_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_light_green_512.png -------------------------------------------------------------------------------- /notifier/icons/icons/pm_light_red_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_light_red_128.png -------------------------------------------------------------------------------- /notifier/icons/icons/pm_light_red_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_light_red_256.png -------------------------------------------------------------------------------- /notifier/icons/icons/pm_light_red_512.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_light_red_512.ico -------------------------------------------------------------------------------- /notifier/icons/icons/pm_light_red_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_light_red_512.png -------------------------------------------------------------------------------- /notifier/icons/icons/pm_light_yellow_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_light_yellow_128.png -------------------------------------------------------------------------------- /notifier/icons/icons/pm_light_yellow_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_light_yellow_256.png -------------------------------------------------------------------------------- /notifier/icons/icons/pm_light_yellow_512.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_light_yellow_512.ico -------------------------------------------------------------------------------- /notifier/icons/icons/pm_light_yellow_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/notifier/icons/icons/pm_light_yellow_512.png -------------------------------------------------------------------------------- /tauri-app/.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | -------------------------------------------------------------------------------- /tauri-app/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "rust-analyzer.linkedProjects": [ 3 | "./src-tauri/Cargo.toml" 4 | ], 5 | "rust-analyzer.showUnlinkedFileNotification": false 6 | } -------------------------------------------------------------------------------- /tauri-app/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM rust:latest 2 | RUN apt update && apt upgrade -y 3 | RUN apt install -y g++-mingw-w64-x86-64 libgtk-3-dev libjavascriptcoregtk-4.1-dev libsoup-3.0-dev libwebkit2gtk-4.1-dev 4 | 5 | RUN rustup target add x86_64-pc-windows-gnu 6 | RUN rustup toolchain install stable-x86_64-pc-windows-gnu 7 | RUN rustup target add x86_64-pc-windows-msvc 8 | RUN rustup toolchain install stable-x86_64-pc-windows-msvc 9 | 10 | WORKDIR /app/src-tauri 11 | 12 | CMD ["cargo", "build"] 13 | -------------------------------------------------------------------------------- /tauri-app/Dockerfile.windows: -------------------------------------------------------------------------------- 1 | FROM rust:latest 2 | RUN apt update && apt upgrade -y 3 | RUN apt install -y g++-mingw-w64-x86-64 4 | 5 | RUN rustup target add x86_64-pc-windows-gnu 6 | RUN rustup toolchain install stable-x86_64-pc-windows-gnu 7 | RUN rustup target add x86_64-pc-windows-msvc 8 | RUN rustup toolchain install stable-x86_64-pc-windows-msvc 9 | 10 | WORKDIR /app/src-tauri 11 | 12 | CMD ["cargo", "build", "--target", "x86_64-pc-windows-gnu"] -------------------------------------------------------------------------------- /tauri-app/src-tauri/.gitignore: -------------------------------------------------------------------------------- 1 | # Generated by Cargo 2 | # will have compiled files and executables 3 | /target/ 4 | -------------------------------------------------------------------------------- /tauri-app/src-tauri/build.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | tauri_build::build() 3 | } 4 | -------------------------------------------------------------------------------- /tauri-app/src-tauri/icons/128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/tauri-app/src-tauri/icons/128x128.png -------------------------------------------------------------------------------- /tauri-app/src-tauri/icons/128x128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/tauri-app/src-tauri/icons/128x128@2x.png -------------------------------------------------------------------------------- /tauri-app/src-tauri/icons/32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/tauri-app/src-tauri/icons/32x32.png -------------------------------------------------------------------------------- /tauri-app/src-tauri/icons/Square107x107Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/tauri-app/src-tauri/icons/Square107x107Logo.png -------------------------------------------------------------------------------- /tauri-app/src-tauri/icons/Square142x142Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/tauri-app/src-tauri/icons/Square142x142Logo.png -------------------------------------------------------------------------------- /tauri-app/src-tauri/icons/Square150x150Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/tauri-app/src-tauri/icons/Square150x150Logo.png -------------------------------------------------------------------------------- /tauri-app/src-tauri/icons/Square284x284Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/tauri-app/src-tauri/icons/Square284x284Logo.png -------------------------------------------------------------------------------- /tauri-app/src-tauri/icons/Square30x30Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/tauri-app/src-tauri/icons/Square30x30Logo.png -------------------------------------------------------------------------------- /tauri-app/src-tauri/icons/Square310x310Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/tauri-app/src-tauri/icons/Square310x310Logo.png -------------------------------------------------------------------------------- /tauri-app/src-tauri/icons/Square44x44Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/tauri-app/src-tauri/icons/Square44x44Logo.png -------------------------------------------------------------------------------- /tauri-app/src-tauri/icons/Square71x71Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/tauri-app/src-tauri/icons/Square71x71Logo.png -------------------------------------------------------------------------------- /tauri-app/src-tauri/icons/Square89x89Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/tauri-app/src-tauri/icons/Square89x89Logo.png -------------------------------------------------------------------------------- /tauri-app/src-tauri/icons/StoreLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/tauri-app/src-tauri/icons/StoreLogo.png -------------------------------------------------------------------------------- /tauri-app/src-tauri/icons/icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/tauri-app/src-tauri/icons/icon.icns -------------------------------------------------------------------------------- /tauri-app/src-tauri/icons/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/tauri-app/src-tauri/icons/icon.ico -------------------------------------------------------------------------------- /tauri-app/src-tauri/icons/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/safing/portmaster-ui/896c6c2aca4c0a9eabfd41059b145d12918e835c/tauri-app/src-tauri/icons/icon.png -------------------------------------------------------------------------------- /tauri-app/src-tauri/src/portapi/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod client; 2 | pub mod message; 3 | pub mod types; 4 | pub mod models; -------------------------------------------------------------------------------- /tauri-app/src-tauri/src/portapi/models/config.rs: -------------------------------------------------------------------------------- 1 | use serde::*; 2 | use super::super::message::Payload; 3 | 4 | #[derive(Serialize, Deserialize, Debug, PartialEq, Clone)] 5 | pub struct BooleanValue { 6 | #[serde(rename = "Value")] 7 | pub value: Option, 8 | } 9 | 10 | impl TryInto for BooleanValue { 11 | type Error = serde_json::Error; 12 | 13 | fn try_into(self) -> Result { 14 | let str = serde_json::to_string(&self)?; 15 | 16 | Ok(Payload::JSON(str)) 17 | } 18 | } -------------------------------------------------------------------------------- /tauri-app/src-tauri/src/portapi/models/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod config; 2 | pub mod spn; 3 | pub mod notification; 4 | pub mod subsystem; -------------------------------------------------------------------------------- /tauri-app/src-tauri/src/portapi/models/spn.rs: -------------------------------------------------------------------------------- 1 | use serde::*; 2 | 3 | 4 | #[derive(Serialize, Deserialize, Debug, PartialEq, Clone)] 5 | pub struct SPNStatus { 6 | #[serde(rename = "Status")] 7 | pub status: String, 8 | } -------------------------------------------------------------------------------- /tauri-app/src-tauri/src/service/manager.rs: -------------------------------------------------------------------------------- 1 | use std::process::{Command, ExitStatus, Stdio}; 2 | use std::{fs, io}; 3 | 4 | use thiserror::Error; 5 | 6 | #[cfg(target_os = "linux")] 7 | use std::os::unix::fs::PermissionsExt; 8 | 9 | use super::status::StatusResult; 10 | 11 | static SYSTEMCTL: &str = "systemctl"; 12 | // TODO(ppacher): add support for kdesudo and gksudo 13 | 14 | enum SudoCommand { 15 | Pkexec, 16 | Gksu, 17 | } 18 | -------------------------------------------------------------------------------- /update-icons.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | echo "Cloning gosquared/flags into /tmp" 6 | rm -rf /tmp/flags.git 7 | git clone https://github.com/gosquared/flags.git /tmp/flags.git 8 | 9 | rm -rf ./assets/img/flags || true 10 | mv /tmp/flags.git/flags/flags-iso/flat/16 ./assets/img/flags 11 | cp /tmp/flags.git/LICENSE.txt ./assets/img/flags/LICENSE.txt 12 | --------------------------------------------------------------------------------