├── .gitignore ├── LICENSE ├── README.md ├── background.js ├── gui ├── .gitignore ├── LICENSE.txt ├── about.html ├── css │ ├── bak │ │ ├── material.light_green-lime.min.css │ │ ├── material.min.css │ │ ├── theme.min.css │ │ └── theme.scss │ ├── material.light_green-lime.min.css │ ├── material.min.css │ └── theme.css ├── fonts │ ├── evil-icons.css │ ├── evil-icons.js │ ├── evil-icons.min.css │ ├── evil-icons.min.js │ ├── icons │ │ ├── ei-archive.svg │ │ ├── ei-arrow-down.svg │ │ ├── ei-arrow-left.svg │ │ ├── ei-arrow-right.svg │ │ ├── ei-arrow-up.svg │ │ ├── ei-bell.svg │ │ ├── ei-calendar.svg │ │ ├── ei-camera.svg │ │ ├── ei-cart.svg │ │ ├── ei-chart.svg │ │ ├── ei-check.svg │ │ ├── ei-chevron-down.svg │ │ ├── ei-chevron-left.svg │ │ ├── ei-chevron-right.svg │ │ ├── ei-chevron-up.svg │ │ ├── ei-clock.svg │ │ ├── ei-close-o.svg │ │ ├── ei-close.svg │ │ ├── ei-comment.svg │ │ ├── ei-credit-card.svg │ │ ├── ei-envelope.svg │ │ ├── ei-exclamation.svg │ │ ├── ei-external-link.svg │ │ ├── ei-eye.svg │ │ ├── ei-gear.svg │ │ ├── ei-heart.svg │ │ ├── ei-image.svg │ │ ├── ei-like.svg │ │ ├── ei-link.svg │ │ ├── ei-location.svg │ │ ├── ei-lock.svg │ │ ├── ei-minus.svg │ │ ├── ei-navicon.svg │ │ ├── ei-paperclip.svg │ │ ├── ei-pencil.svg │ │ ├── ei-play.svg │ │ ├── ei-plus.svg │ │ ├── ei-pointer.svg │ │ ├── ei-question.svg │ │ ├── ei-redo.svg │ │ ├── ei-refresh.svg │ │ ├── ei-retweet.svg │ │ ├── ei-sc-facebook.svg │ │ ├── ei-sc-github.svg │ │ ├── ei-sc-google-plus.svg │ │ ├── ei-sc-instagram.svg │ │ ├── ei-sc-linkedin.svg │ │ ├── ei-sc-odnoklassniki.svg │ │ ├── ei-sc-skype.svg │ │ ├── ei-sc-soundcloud.svg │ │ ├── ei-sc-tumblr.svg │ │ ├── ei-sc-twitter.svg │ │ ├── ei-sc-vimeo.svg │ │ ├── ei-sc-vk.svg │ │ ├── ei-sc-youtube.svg │ │ ├── ei-search.svg │ │ ├── ei-share-apple.svg │ │ ├── ei-share-google.svg │ │ ├── ei-spinner-2.svg │ │ ├── ei-spinner-3.svg │ │ ├── ei-spinner.svg │ │ ├── ei-star.svg │ │ ├── ei-tag.svg │ │ ├── ei-trash.svg │ │ ├── ei-trophy.svg │ │ ├── ei-undo.svg │ │ ├── ei-unlock.svg │ │ └── ei-user.svg │ ├── roboto-black.eot │ ├── roboto-black.svg │ ├── roboto-black.ttf │ ├── roboto-black.woff │ ├── roboto-black.woff2 │ ├── roboto-blackitalic.eot │ ├── roboto-blackitalic.svg │ ├── roboto-blackitalic.ttf │ ├── roboto-blackitalic.woff │ ├── roboto-blackitalic.woff2 │ ├── roboto-bold.eot │ ├── roboto-bold.svg │ ├── roboto-bold.ttf │ ├── roboto-bold.woff │ ├── roboto-bold.woff2 │ ├── roboto-bolditalic.eot │ ├── roboto-bolditalic.svg │ ├── roboto-bolditalic.ttf │ ├── roboto-bolditalic.woff │ ├── roboto-bolditalic.woff2 │ ├── roboto-italic.eot │ ├── roboto-italic.svg │ ├── roboto-italic.ttf │ ├── roboto-italic.woff │ ├── roboto-italic.woff2 │ ├── roboto-light.eot │ ├── roboto-light.svg │ ├── roboto-light.ttf │ ├── roboto-light.woff │ ├── roboto-light.woff2 │ ├── roboto-lightitalic.eot │ ├── roboto-lightitalic.svg │ ├── roboto-lightitalic.ttf │ ├── roboto-lightitalic.woff │ ├── roboto-lightitalic.woff2 │ ├── roboto-medium.eot │ ├── roboto-medium.svg │ ├── roboto-medium.ttf │ ├── roboto-medium.woff │ ├── roboto-medium.woff2 │ ├── roboto-mediumitalic.eot │ ├── roboto-mediumitalic.svg │ ├── roboto-mediumitalic.ttf │ ├── roboto-mediumitalic.woff │ ├── roboto-mediumitalic.woff2 │ ├── roboto-regular.eot │ ├── roboto-regular.svg │ ├── roboto-regular.ttf │ ├── roboto-regular.woff │ ├── roboto-regular.woff2 │ ├── roboto-thin.eot │ ├── roboto-thin.svg │ ├── roboto-thin.ttf │ ├── roboto-thin.woff │ ├── roboto-thin.woff2 │ ├── roboto-thinitalic.eot │ ├── roboto-thinitalic.svg │ ├── roboto-thinitalic.ttf │ ├── roboto-thinitalic.woff │ ├── roboto-thinitalic.woff2 │ ├── roboto.css │ ├── robotocondensed-bold.eot │ ├── robotocondensed-bold.svg │ ├── robotocondensed-bold.ttf │ ├── robotocondensed-bold.woff │ ├── robotocondensed-bold.woff2 │ ├── robotocondensed-bolditalic.eot │ ├── robotocondensed-bolditalic.svg │ ├── robotocondensed-bolditalic.ttf │ ├── robotocondensed-bolditalic.woff │ ├── robotocondensed-bolditalic.woff2 │ ├── robotocondensed-italic.eot │ ├── robotocondensed-italic.svg │ ├── robotocondensed-italic.ttf │ ├── robotocondensed-italic.woff │ ├── robotocondensed-italic.woff2 │ ├── robotocondensed-light.eot │ ├── robotocondensed-light.svg │ ├── robotocondensed-light.ttf │ ├── robotocondensed-light.woff │ ├── robotocondensed-light.woff2 │ ├── robotocondensed-lightitalic.eot │ ├── robotocondensed-lightitalic.svg │ ├── robotocondensed-lightitalic.ttf │ ├── robotocondensed-lightitalic.woff │ ├── robotocondensed-lightitalic.woff2 │ ├── robotocondensed-regular.eot │ ├── robotocondensed-regular.svg │ ├── robotocondensed-regular.ttf │ ├── robotocondensed-regular.woff │ ├── robotocondensed-regular.woff2 │ └── sprite.svg ├── img │ ├── 5458094.jpg │ └── 5947267.jpg ├── index.html ├── js │ ├── about.js │ ├── bak │ │ └── material.min.js │ ├── main.js │ ├── material.min.js │ ├── nacl │ │ ├── hterm.concat.js │ │ ├── naclprocess.js │ │ ├── naclterm.js │ │ └── pipeserver.js │ ├── restart.js │ ├── settings.js │ └── tor.js ├── main.html ├── restart.html ├── settings.html └── tor │ ├── conf │ └── geoip-files │ ├── geoip │ └── geoip6 ├── kronymous_128.png ├── kronymous_16.png ├── kronymous_48.png ├── manifest.json ├── pnacl └── tor.pexe ├── todo.md └── tor_pnacl.nmf /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by .ignore support plugin (hsz.mobi) 2 | ### Node template 3 | # Logs 4 | logs 5 | *.log 6 | npm-debug.log* 7 | yarn-debug.log* 8 | yarn-error.log* 9 | 10 | # Runtime data 11 | pids 12 | *.pid 13 | *.seed 14 | *.pid.lock 15 | 16 | # Directory for instrumented libs generated by jscoverage/JSCover 17 | lib-cov 18 | 19 | # Coverage directory used by tools like istanbul 20 | coverage 21 | 22 | # nyc test coverage 23 | .nyc_output 24 | 25 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 26 | .grunt 27 | 28 | # Bower dependency directory (https://bower.io/) 29 | bower_components 30 | 31 | # node-waf configuration 32 | .lock-wscript 33 | 34 | # Compiled binary addons (http://nodejs.org/api/addons.html) 35 | build/Release 36 | 37 | # Dependency directories 38 | node_modules/ 39 | jspm_packages/ 40 | 41 | # Typescript v1 declaration files 42 | typings/ 43 | 44 | # Optional npm cache directory 45 | .npm 46 | 47 | # Optional eslint cache 48 | .eslintcache 49 | 50 | # Optional REPL history 51 | .node_repl_history 52 | 53 | # Output of 'npm pack' 54 | *.tgz 55 | 56 | # Yarn Integrity file 57 | .yarn-integrity 58 | 59 | # dotenv environment variables file 60 | .env 61 | 62 | ### JetBrains template 63 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm 64 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 65 | 66 | # User-specific stuff: 67 | .idea/**/workspace.xml 68 | .idea/**/tasks.xml 69 | .idea/dictionaries 70 | 71 | # Sensitive or high-churn files: 72 | .idea/**/dataSources/ 73 | .idea/**/dataSources.ids 74 | .idea/**/dataSources.xml 75 | .idea/**/dataSources.local.xml 76 | .idea/**/sqlDataSources.xml 77 | .idea/**/dynamic.xml 78 | .idea/**/uiDesigner.xml 79 | 80 | # Gradle: 81 | .idea/**/gradle.xml 82 | .idea/**/libraries 83 | 84 | # Mongo Explorer plugin: 85 | .idea/**/mongoSettings.xml 86 | 87 | ## File-based project format: 88 | *.iws 89 | 90 | ## Plugin-specific files: 91 | 92 | # IntelliJ 93 | /out/ 94 | 95 | # mpeltonen/sbt-idea plugin 96 | .idea_modules/ 97 | 98 | # JIRA plugin 99 | atlassian-ide-plugin.xml 100 | 101 | # Crashlytics plugin (for Android Studio and IntelliJ) 102 | com_crashlytics_export_strings.xml 103 | crashlytics.properties 104 | crashlytics-build.properties 105 | fabric.properties 106 | .idea/ 107 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015-2016 Deepankar Tyagi 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | A Chrome app which creates a system wide tor socks proxy enabling access to Tor network. 2 | 3 | For details visit: [deepankar.io/kronymous](https://deepankar.io/kronymous) 4 | 5 | Google decided to discontinue the Portable native client platform in favour of Webassembly thus development on this project has been stopped and is no longer maintained. 6 | -------------------------------------------------------------------------------- /background.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The Native Client Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | 'use strict'; 8 | 9 | // mount points are defined in naclprocess.js 10 | // TODO(dt) make sure that datadirectory for tor is set to default for now 11 | chrome.app.runtime.onLaunched.addListener(function() { 12 | chrome.app.window.create('gui/index.html', { 13 | 'bounds': { 14 | 'width': 850, 15 | 'height': 650, 16 | }, 17 | }); 18 | }); 19 | 20 | chrome.runtime.onSuspend.addListener(function() { 21 | // TODO(dt) add code to facilitate graceful exit of tor. 22 | }); 23 | -------------------------------------------------------------------------------- /gui/.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules/ 2 | /gulpfile.js 3 | /package.json -------------------------------------------------------------------------------- /gui/LICENSE.txt: -------------------------------------------------------------------------------- 1 | This file contains the license for Tor, 2 | a free software project to provide anonymity on the Internet. 3 | 4 | It also lists the licenses for other components used by Tor. 5 | 6 | For more information about Tor, see https://www.torproject.org/. 7 | 8 | If you got this file as a part of a larger bundle, 9 | there may be other license terms that you should be aware of. 10 | 11 | =============================================================================== 12 | Tor is distributed under this license: 13 | 14 | Copyright (c) 2001-2004, Roger Dingledine 15 | Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson 16 | Copyright (c) 2007-2015, The Tor Project, Inc. 17 | 18 | Redistribution and use in source and binary forms, with or without 19 | modification, are permitted provided that the following conditions are 20 | met: 21 | 22 | * Redistributions of source code must retain the above copyright 23 | notice, this list of conditions and the following disclaimer. 24 | 25 | * Redistributions in binary form must reproduce the above 26 | copyright notice, this list of conditions and the following disclaimer 27 | in the documentation and/or other materials provided with the 28 | distribution. 29 | 30 | * Neither the names of the copyright owners nor the names of its 31 | contributors may be used to endorse or promote products derived from 32 | this software without specific prior written permission. 33 | 34 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 35 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 36 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 37 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 38 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 39 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 40 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 41 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 42 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 43 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 44 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 45 | =============================================================================== 46 | src/ext/strlcat.c and src/ext/strlcpy.c by Todd C. Miller are licensed 47 | under the following license: 48 | 49 | * Copyright (c) 1998 Todd C. Miller 50 | * All rights reserved. 51 | * 52 | * Redistribution and use in source and binary forms, with or without 53 | * modification, are permitted provided that the following conditions 54 | * are met: 55 | * 1. Redistributions of source code must retain the above copyright 56 | * notice, this list of conditions and the following disclaimer. 57 | * 2. Redistributions in binary form must reproduce the above copyright 58 | * notice, this list of conditions and the following disclaimer in the 59 | * documentation and/or other materials provided with the distribution. 60 | * 3. The name of the author may not be used to endorse or promote products 61 | * derived from this software without specific prior written permission. 62 | * 63 | * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, 64 | * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY 65 | * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 66 | * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 67 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 68 | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 69 | * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 70 | * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 71 | * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 72 | * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 73 | =============================================================================== 74 | src/ext/tor_queue.h is licensed under the following license: 75 | 76 | * Copyright (c) 1991, 1993 77 | * The Regents of the University of California. All rights reserved. 78 | * 79 | * Redistribution and use in source and binary forms, with or without 80 | * modification, are permitted provided that the following conditions 81 | * are met: 82 | * 1. Redistributions of source code must retain the above copyright 83 | * notice, this list of conditions and the following disclaimer. 84 | * 2. Redistributions in binary form must reproduce the above copyright 85 | * notice, this list of conditions and the following disclaimer in the 86 | * documentation and/or other materials provided with the distribution. 87 | * 3. Neither the name of the University nor the names of its contributors 88 | * may be used to endorse or promote products derived from this software 89 | * without specific prior written permission. 90 | * 91 | * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 92 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 93 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 94 | * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 95 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 96 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 97 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 98 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 99 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 100 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 101 | * SUCH DAMAGE. 102 | 103 | =============================================================================== 104 | src/ext/csiphash.c is licensed under the following license: 105 | 106 | Copyright (c) 2013 Marek Majkowski 107 | 108 | Permission is hereby granted, free of charge, to any person obtaining a copy 109 | of this software and associated documentation files (the "Software"), to deal 110 | in the Software without restriction, including without limitation the rights 111 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 112 | copies of the Software, and to permit persons to whom the Software is 113 | furnished to do so, subject to the following conditions: 114 | 115 | The above copyright notice and this permission notice shall be included in 116 | all copies or substantial portions of the Software. 117 | 118 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 119 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 120 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 121 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 122 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 123 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 124 | THE SOFTWARE. 125 | =============================================================================== 126 | Trunnel is distributed under this license: 127 | 128 | Copyright 2014 The Tor Project, Inc. 129 | 130 | Redistribution and use in source and binary forms, with or without 131 | modification, are permitted provided that the following conditions are 132 | met: 133 | 134 | * Redistributions of source code must retain the above copyright 135 | notice, this list of conditions and the following disclaimer. 136 | 137 | * Redistributions in binary form must reproduce the above 138 | copyright notice, this list of conditions and the following disclaimer 139 | in the documentation and/or other materials provided with the 140 | distribution. 141 | 142 | * Neither the names of the copyright owners nor the names of its 143 | contributors may be used to endorse or promote products derived from 144 | this software without specific prior written permission. 145 | 146 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 147 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 148 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 149 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 150 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 151 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 152 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 153 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 154 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 155 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 156 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 157 | 158 | =============================================================================== 159 | src/config/geoip is licensed under the following license: 160 | 161 | OPEN DATA LICENSE (GeoLite Country and GeoLite City databases) 162 | 163 | Copyright (c) 2008 MaxMind, Inc. All Rights Reserved. 164 | 165 | All advertising materials and documentation mentioning features or use of 166 | this database must display the following acknowledgment: 167 | "This product includes GeoLite data created by MaxMind, available from 168 | http://maxmind.com/" 169 | 170 | Redistribution and use with or without modification, are permitted provided 171 | that the following conditions are met: 172 | 1. Redistributions must retain the above copyright notice, this list of 173 | conditions and the following disclaimer in the documentation and/or other 174 | materials provided with the distribution. 175 | 2. All advertising materials and documentation mentioning features or use of 176 | this database must display the following acknowledgement: 177 | "This product includes GeoLite data created by MaxMind, available from 178 | http://maxmind.com/" 179 | 3. "MaxMind" may not be used to endorse or promote products derived from this 180 | database without specific prior written permission. 181 | 182 | THIS DATABASE IS PROVIDED BY MAXMIND, INC ``AS IS'' AND ANY 183 | EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 184 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 185 | DISCLAIMED. IN NO EVENT SHALL MAXMIND BE LIABLE FOR ANY 186 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 187 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 188 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 189 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 190 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 191 | DATABASE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 192 | =============================================================================== 193 | m4/pc_from_ucontext.m4 is available under the following license. Note that 194 | it is *not* built into the Tor software. 195 | 196 | Copyright (c) 2005, Google Inc. 197 | All rights reserved. 198 | 199 | Redistribution and use in source and binary forms, with or without 200 | modification, are permitted provided that the following conditions are 201 | met: 202 | 203 | * Redistributions of source code must retain the above copyright 204 | notice, this list of conditions and the following disclaimer. 205 | * Redistributions in binary form must reproduce the above 206 | copyright notice, this list of conditions and the following disclaimer 207 | in the documentation and/or other materials provided with the 208 | distribution. 209 | * Neither the name of Google Inc. nor the names of its 210 | contributors may be used to endorse or promote products derived from 211 | this software without specific prior written permission. 212 | 213 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 214 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 215 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 216 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 217 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 218 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 219 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 220 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 221 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 222 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 223 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 224 | 225 | =============================================================================== 226 | m4/pkg.m4 is available under the following license. Note that 227 | it is *not* built into the Tor software. 228 | 229 | pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- 230 | serial 1 (pkg-config-0.24) 231 | 232 | Copyright © 2004 Scott James Remnant . 233 | 234 | This program is free software; you can redistribute it and/or modify 235 | it under the terms of the GNU General Public License as published by 236 | the Free Software Foundation; either version 2 of the License, or 237 | (at your option) any later version. 238 | 239 | This program is distributed in the hope that it will be useful, but 240 | WITHOUT ANY WARRANTY; without even the implied warranty of 241 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 242 | General Public License for more details. 243 | 244 | You should have received a copy of the GNU General Public License 245 | along with this program; if not, write to the Free Software 246 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 247 | 248 | As a special exception to the GNU General Public License, if you 249 | distribute this file as part of a program that contains a 250 | configuration script generated by Autoconf, you may include it under 251 | the same distribution terms that you use for the rest of that program. 252 | =============================================================================== 253 | src/ext/readpassphrase.[ch] are distributed under this license: 254 | 255 | Copyright (c) 2000-2002, 2007 Todd C. Miller 256 | 257 | Permission to use, copy, modify, and distribute this software for any 258 | purpose with or without fee is hereby granted, provided that the above 259 | copyright notice and this permission notice appear in all copies. 260 | 261 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 262 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 263 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 264 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 265 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 266 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 267 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 268 | 269 | Sponsored in part by the Defense Advanced Research Projects 270 | Agency (DARPA) and Air Force Research Laboratory, Air Force 271 | Materiel Command, USAF, under agreement number F39502-99-1-0512. 272 | 273 | =============================================================================== 274 | If you got Tor as a static binary with OpenSSL included, then you should know: 275 | "This product includes software developed by the OpenSSL Project 276 | for use in the OpenSSL Toolkit (http://www.openssl.org/)" 277 | =============================================================================== 278 | -------------------------------------------------------------------------------- /gui/about.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 23 |
24 | Home 25 |
26 |
Krotor - Help
27 |
28 |
29 |
30 |
31 |
32 |

33 | Licenses 34 |

35 |
36 |
37 |
Material Design Lite
38 |
© Google, 2015. Licensed under an Apache-2 license.
39 |
Evil Icons
40 |
Evil Icons licensed under MIT License
41 |
The Tor Project
42 |
© The Tor Project, Inc., 2015. License
43 |
44 |
45 |
46 |
47 |

48 | Made By 49 |

50 |
51 |
52 |
Developed by
53 | 54 | 55 | 56 |
Designed by
57 | 58 | 59 | 60 |
61 |
62 |
63 |
64 |

65 | About Krotor 66 |

67 |
68 |
69 | Krotor v1.x.x
70 | A Chrome app which creates a system wide (tor)socks proxy at port 9999 enabling access to Tor network.
71 | Once the proxy is up and running(can be verified by logs in terminal) you can use any proxy extension in browser,system proxy settings etc to access tor socks proxy at 127.0.0.1:9999 (in next version this will be handled in app itself)
72 |
73 | On windows, system proxy settings don't work, use a proxy extension such as foxyproxy
74 |
75 | (the official codebase of tor is running in this app, this is port of Tor to NaCl platform on Chrome browser.)
76 | Tor : https://www.torproject.org
77 |
78 | Krotor is produced independently from the Tor® anonymity software and carries no guarantee from The Tor Project about quality, suitability or anything else.
79 |
80 |
81 |
82 | 83 | 84 | 85 | -------------------------------------------------------------------------------- /gui/css/bak/theme.min.css: -------------------------------------------------------------------------------- 1 | .main-container,.main-switch-container{padding:1pc}.main-container .bridges-container,.z-index--2{z-index:2}body{overflow:hidden;height:100%}body.closed{opacity:0;-moz-transform:scale(1.7);-ms-transform:scale(1.7);-o-transform:scale(1.7);-webkit-transform:scale(1.7);transform:scale(1.7)}body.open{opacity:1;-moz-transition:all .3s;-o-transition:all .3s;-webkit-transition:all .3s;transition:all .3s;-moz-transform:none;-ms-transform:none;-o-transform:none;-webkit-transform:none;transform:none}body.hide{-moz-transform:scale(.8);-ms-transform:scale(.8);-o-transform:scale(.8);-webkit-transform:scale(.8);transform:scale(.8);opacity:0}.icon{overflow:visible}.main-switch-container .settings-button{vertical-align:middle;margin-right:1pc;border-radius:50%}.main-switch-container .settings-button div{display:block;margin:-11px auto 0}.main-switch-container h5{display:inline-block;margin:0;vertical-align:middle}.main-switch-container .mdl-switch{float:right;display:inline-block;width:0;margin-top:8px}.main-switch-container .save-button{float:right;margin-left:9pt}.outer-hr{margin:0 0 0 8px;width:calc(100% - 1pc)}.main-container .mdl-progress{width:100%}.main-container .advanced-button{margin:1pc 8px 0 0}.main-container .autostart_fix{width:150px;display:inline-block;margin-top:17px;float:right}.main-container .logs{position:absolute;top:180px;height:calc(100% - 200px);width:calc(100% - 2pc);overflow-y:scroll;overflow-x:auto;opacity:0;-moz-transition:all .5s ease-out;-o-transition:all .5s ease-out;-webkit-transition:all .5s ease-out;transition:all .5s ease-out}.main-container .logs ul{list-style:none;font-family:roboto;padding:0;margin:0}.main-container .logs li{text-transform:uppercase;padding:8px}.main-container .logs li div{vertical-align:middle;margin-right:8px;background:#EEFF41;border:1px solid #576844;padding:5px;border-radius:50%;fill:#576844}.main-container .logs.visible{opacity:1}.main-container .logs::-webkit-scrollbar-button{height:0;width:0}.main-container .logs::-webkit-scrollbar-track{-webkit-border-radius:10px;border-radius:10px;-moz-background-clip:padding-box;-webkit-background-clip:padding-box;background-clip:padding-box;border:solid transparent;border-width:0 0 0 4px}.main-container .logs::-webkit-scrollbar-corner{background:0 0}.main-container .logs::-webkit-scrollbar{width:6px}.main-container .logs::-webkit-scrollbar-thumb{-webkit-border-radius:10px;border-radius:10px;border-width:5px;background-color:#8BC34A;box-shadow:0 1px 1.5px 0 rgba(0,0,0,.12),0 1px 1px 0 rgba(0,0,0,.24)}.main-container .logs:active::-webkit-scrollbar-thumb{box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.2)}.main-container .mdl-card{display:inline-flex;margin:8px;min-height:0;overflow:visible}.main-container .mdl-card .mdl-card__title-text{width:100%}.main-container .mdl-card .mdl-card__title-text .mdl-switch{width:0;position:absolute;right:24px;top:20px}.main-container .mdl-card .mdl-card__actions{-moz-transition:all .5s;-o-transition:all .5s;-webkit-transition:all .5s;transition:all .5s;opacity:0;height:0;padding:1pc;overflow:hidden}.main-container .mdl-card .mdl-card__actions .bridges__dropdown,.main-container .mdl-card .mdl-card__actions .proxy__dropdown{padding:8px 1pc}.main-container .mdl-card .mdl-card__actions .bridges__dropdown button,.main-container .mdl-card .mdl-card__actions .proxy__dropdown button{vertical-align:baseline}.main-container .mdl-card .mdl-card__actions.expand{opacity:1}.main-container .mdl-card .mdl-card__actions.proxycard{height:200px;overflow:visible}.main-container .mdl-card .mdl-card__actions.cportcard{height:4pc}.main-container .mdl-card .mdl-card__actions.cportcard .mdl-textfield{padding:0}.main-container .mdl-card .mdl-card__actions.acsportcard{height:90px}.main-container .mdl-card .mdl-card__actions.bridgescard{height:15pc}.main-container .mdl-card .mdl-card__supporting-text{padding-top:0}.main-container .mdl-card .mdl-card__supporting-text h5:first-of-type{margin-top:0}.main-container .mdl-card .mdl-card__supporting-text img{border-radius:50%;margin:0 1pc;display:block}.mdl-menu__item.selected{background-color:rgba(0,0,0,.2)}#bridges_text,#proxy_text_outer{width:225px;display:inline-block;text-align:left}.main-container--scroll{position:absolute;overflow-y:scroll;overflow-x:auto;width:calc(100% - 40px);height:calc(100% - 107px)}.main-container--scroll::-webkit-scrollbar-button{height:0;width:0}.main-container--scroll::-webkit-scrollbar-track{-webkit-border-radius:10px;border-radius:10px;-moz-background-clip:padding-box;-webkit-background-clip:padding-box;background-clip:padding-box;border:solid transparent;border-width:0 0 0 4px}.main-container--scroll::-webkit-scrollbar-corner{background:0 0}.main-container--scroll::-webkit-scrollbar{width:6px}.main-container--scroll::-webkit-scrollbar-thumb{-webkit-border-radius:10px;border-radius:10px;border-width:5px;background-color:#8BC34A;box-shadow:0 1px 1.5px 0 rgba(0,0,0,.12),0 1px 1px 0 rgba(0,0,0,.24)}.main-container--scroll:active::-webkit-scrollbar-thumb{box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.2)}.main-switch-container--centered{text-align:center}.h6padding--fix{padding:1pc 1pc 0;margin:0}.h6padding--fix .advanced-button{float:right;margin:-6px 8px 0 0}.error-text-container{text-align:center;position:fixed;top:15px;width:100%;pointer-events:none}.error-text-container .error-text{display:inline-block;margin:2px 0;padding:8px 1pc;border-radius:3px;background-color:#F44336;color:#fff;box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12);opacity:0;-moz-transform:scale(.7);-ms-transform:scale(.7);-o-transform:scale(.7);-webkit-transform:scale(.7);transform:scale(.7);-moz-transition:all .3s;-o-transition:all .3s;-webkit-transition:all .3s;transition:all .3s}.error-text-container .error-text .error-text-button{display:inline-block;background-color:#fff;color:#F44336;width:18px;height:18px;border-radius:50%;cursor:pointer;margin-left:6px}.error-text-container .error-text .error-text-button svg{padding:2px;border-radius:50%}.error-text-container.visible{pointer-events:all}.error-text-container.visible .error-text{opacity:1;-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}.error-indicator{display:block;position:absolute;pointer-events:none;background-color:rgba(244,67,54,.7);width:1pc;height:1pc;border-radius:50%}.mdl-card--scrollable{width:60%;min-width:350px;height:95%}.mdl-card--scrollable .mdl-card__title{height:4pc}.mdl-card--scrollable .mdl-card__supporting-text{position:absolute;height:calc(100% - 164px);overflow-y:scroll}.mdl-card--scrollable .mdl-card__supporting-text::-webkit-scrollbar-button{height:0;width:0}.mdl-card--scrollable .mdl-card__supporting-text::-webkit-scrollbar-track{-webkit-border-radius:10px;border-radius:10px;-moz-background-clip:padding-box;-webkit-background-clip:padding-box;background-clip:padding-box;border:solid transparent;border-width:0 0 0 4px}.mdl-card--scrollable .mdl-card__supporting-text::-webkit-scrollbar-corner{background:0 0}.mdl-card--scrollable .mdl-card__supporting-text::-webkit-scrollbar{width:6px}.mdl-card--scrollable .mdl-card__supporting-text::-webkit-scrollbar-thumb{-webkit-border-radius:10px;border-radius:10px;border-width:5px;background-color:#8BC34A;box-shadow:0 1px 1.5px 0 rgba(0,0,0,.12),0 1px 1px 0 rgba(0,0,0,.24)}.mdl-card--scrollable .mdl-card__supporting-text:active::-webkit-scrollbar-thumb{box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.2)}.mdl-card--scrollable .mdl-card--border{position:absolute;top:calc(100% - 4pc);height:50px}.main-container--centered{position:fixed;display:block;top:calc(50% - 61px);width:calc(100% - 2pc)}.main-container--centered .mdl-progress{width:100%}.first-time-dialog--overlay{position:fixed;height:100%;width:100%;left:0;top:0;background-color:rgba(0,0,0,.6);opacity:0;pointer-events:none;-moz-transition:all .3s;-o-transition:all .3s;-webkit-transition:all .3s;transition:all .3s;z-index:5}.first-time-dialog--overlay a{color:#689F38}body.dark #ok_button,body.dark #proxy_text,body.dark .mdl-card .bridges__dropdown,body.dark .mdl-card .mdl-card__supporting-text,body.dark .mdl-card .mdl-radio__label,body.dark .mdl-card .proxy__dropdown,body.dark .mdl-checkbox__label,body.dark h1,body.dark h2,body.dark h3,body.dark h4,body.dark h5,body.dark h6,body.dark li{color:#fff}.first-time-dialog--overlay .demo-card-square{position:absolute;top:50%;left:50%;-moz-transform:translate3d(-50%,-50%,0);-ms-transform:translate3d(-50%,-50%,0);-o-transform:translate3d(-50%,-50%,0);-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0)}.first-time-dialog--overlay .demo-card-square #ok_button{display:block;margin:0 auto}.first-time-dialog--overlay.visible{opacity:1;pointer-events:all}body.dark{background:#172026}body.dark .mdl-checkbox__box-outline{border-color:#fff}body.dark .mdl-switch:not(.is-checked) .mdl-switch__track{background:#537A94}body.dark .mdl-card{background-color:#1F4B69}body.dark .mdl-card .bridges__dropdown div,body.dark .mdl-card .proxy__dropdown div{fill:#fff}body.dark .mdl-card .mdl-card__actions.mdl-card--border{border-top:1px solid rgba(255,255,255,.5)}body.dark .mdl-card .mdl-textfield__label{color:#4386B3}body.dark .mdl-card .mdl-textfield__input{color:#fff;border-bottom:1px solid #4386B3}body.dark .mdl-card .mdl-menu{background-color:#537A94}body.dark .mdl-card .mdl-menu__item:focus,body.dark .mdl-card .mdl-menu__item:hover{background-color:#2F536B}body.dark .mdl-menu__outline{background-color:#163F5A} -------------------------------------------------------------------------------- /gui/css/bak/theme.scss: -------------------------------------------------------------------------------- 1 | body { 2 | overflow: hidden; 3 | height: 100%; 4 | } 5 | 6 | //body open effect 7 | body.closed { 8 | opacity: 0; 9 | -moz-transform: scale(1.7); 10 | -ms-transform: scale(1.7); 11 | -o-transform: scale(1.7); 12 | -webkit-transform: scale(1.7); 13 | transform: scale(1.7); 14 | } 15 | 16 | body.open { 17 | opacity: 1; 18 | -moz-transition: all 0.3s; 19 | -o-transition: all 0.3s; 20 | -webkit-transition: all 0.3s; 21 | transition: all 0.3s; 22 | -moz-transform: none; 23 | -ms-transform: none; 24 | -o-transform: none; 25 | -webkit-transform: none; 26 | transform: none; 27 | } 28 | 29 | //body hide effect 30 | body.hide { 31 | -moz-transform: scale(0.8); 32 | -ms-transform: scale(0.8); 33 | -o-transform: scale(0.8); 34 | -webkit-transform: scale(0.8); 35 | transform: scale(0.8); 36 | opacity: 0; 37 | } 38 | 39 | //fixes icon being cut off 40 | .icon { 41 | overflow: visible; 42 | } 43 | 44 | .main-switch-container { 45 | padding: 16px; 46 | 47 | .settings-button { 48 | vertical-align: middle; 49 | margin-right: 16px; 50 | border-radius: 50%; 51 | 52 | div { 53 | display: block; 54 | margin: -11px auto 0 auto; 55 | } 56 | } 57 | 58 | h5 { 59 | display: inline-block; 60 | margin: 0; 61 | vertical-align: middle; 62 | } 63 | 64 | .mdl-switch { 65 | float: right; 66 | display: inline-block; 67 | width: 0; 68 | margin-top: 8px; 69 | } 70 | 71 | .save-button { 72 | float: right; 73 | margin-left: 12px; 74 | } 75 | } 76 | 77 | .outer-hr { 78 | margin: 0; 79 | margin-left: 8px; 80 | width: calc(100% - 16px); 81 | } 82 | 83 | .main-container { 84 | padding: 16px; 85 | 86 | .mdl-progress { 87 | width: 100%; 88 | } 89 | 90 | .advanced-button { 91 | margin: 16px 8px 0 0; 92 | } 93 | //autostart checkbox 94 | .autostart_fix { 95 | width: 150px; 96 | display: inline-block; 97 | margin-top: 17px; 98 | float: right; 99 | } 100 | 101 | .logs { 102 | position: absolute; 103 | top: 180px; 104 | height: calc(100% - 200px); 105 | width: calc(100% - 32px); 106 | overflow-y: scroll; 107 | overflow-x: auto; 108 | opacity: 0; 109 | -moz-transition: all 0.5s ease-out; 110 | -o-transition: all 0.5s ease-out; 111 | -webkit-transition: all 0.5s ease-out; 112 | transition: all 0.5s ease-out; 113 | 114 | ul { 115 | list-style: none; 116 | font-family: 'roboto'; 117 | padding: 0; 118 | margin: 0; 119 | } 120 | 121 | li { 122 | text-transform: uppercase; 123 | padding: 8px 8px; 124 | 125 | div { 126 | vertical-align: middle; 127 | margin-right: 8px; 128 | background: #EEFF41; 129 | border: 1px solid #576844; 130 | padding: 5px; 131 | border-radius: 50%; 132 | fill: #576844; 133 | } 134 | } 135 | } 136 | //logs visibility 137 | .logs.visible { 138 | opacity: 1; 139 | } 140 | //custom scrollbar 141 | .logs::-webkit-scrollbar-button { 142 | height: 0; 143 | width: 0; 144 | } 145 | 146 | .logs::-webkit-scrollbar-track { 147 | -webkit-border-radius: 10px; 148 | border-radius: 10px; 149 | -moz-background-clip: padding-box; 150 | -webkit-background-clip: padding-box; 151 | background-clip: padding-box; 152 | border: solid transparent; 153 | border-width: 0 0 0 4px; 154 | } 155 | 156 | .logs::-webkit-scrollbar-corner { 157 | background: transparent; 158 | } 159 | 160 | .logs::-webkit-scrollbar { 161 | width: 6px; 162 | } 163 | 164 | 165 | .logs::-webkit-scrollbar-thumb { 166 | -webkit-border-radius: 10px; 167 | border-radius: 10px; 168 | border-width: 5px; 169 | background-color: #8BC34A; 170 | box-shadow: 0 1px 1.5px 0 rgba(0,0,0,.12),0 1px 1px 0 rgba(0,0,0,.24); 171 | } 172 | 173 | .logs:active::-webkit-scrollbar-thumb { 174 | box-shadow: 0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.2); 175 | } 176 | 177 | .bridges-container { 178 | z-index: 2; 179 | } 180 | 181 | .mdl-card { 182 | display: inline-flex; 183 | margin: 8px; 184 | min-height: 0; 185 | overflow: visible; 186 | 187 | .mdl-card__title-text { 188 | width: 100%; 189 | 190 | .mdl-switch { 191 | width: 0; 192 | position: absolute; 193 | right: 24px; 194 | top: 20px; 195 | } 196 | } 197 | 198 | .mdl-card__actions { 199 | -moz-transition: all 0.5s; 200 | -o-transition: all 0.5s; 201 | -webkit-transition: all 0.5s; 202 | transition: all 0.5s; 203 | opacity: 0; 204 | height: 0; 205 | padding: 16px; 206 | overflow: hidden; 207 | 208 | .proxy__dropdown, .bridges__dropdown { 209 | padding: 8px 16px; 210 | 211 | button { 212 | vertical-align: baseline; 213 | } 214 | } 215 | } 216 | 217 | .mdl-card__actions.expand { 218 | opacity: 1; 219 | } 220 | //height for proxy card 221 | .mdl-card__actions.proxycard { 222 | height: 200px; 223 | overflow: visible; 224 | } 225 | //height for proxy card 226 | .mdl-card__actions.cportcard { 227 | height: 64px; 228 | 229 | .mdl-textfield { 230 | padding: 0; 231 | } 232 | } 233 | //height for accessible port card 234 | .mdl-card__actions.acsportcard { 235 | height: 90px; 236 | } 237 | //height for bridges card 238 | .mdl-card__actions.bridgescard { 239 | height: 240px; 240 | } 241 | 242 | .mdl-card__supporting-text { 243 | padding-top: 0; 244 | 245 | h5:first-of-type { 246 | margin-top: 0; 247 | } 248 | 249 | img { 250 | border-radius: 50%; 251 | margin: 0 16px; 252 | display: block; 253 | } 254 | } 255 | } 256 | } 257 | 258 | //dropdown select highlight colour 259 | .mdl-menu__item.selected { 260 | background-color: rgba(0,0,0,0.2); 261 | } 262 | 263 | //dropdown text fix 264 | #bridges_text, #proxy_text_outer { 265 | width: 225px; 266 | display: inline-block; 267 | text-align: left; 268 | } 269 | 270 | //with scrollbar 271 | .main-container--scroll { 272 | position: absolute; 273 | overflow-y: scroll; 274 | overflow-x: auto; 275 | width: calc(100% - 40px); 276 | height: calc(100% - 107px); 277 | } 278 | 279 | .main-container--scroll::-webkit-scrollbar-button { 280 | height: 0; 281 | width: 0; 282 | } 283 | 284 | .main-container--scroll::-webkit-scrollbar-track { 285 | -webkit-border-radius: 10px; 286 | border-radius: 10px; 287 | -moz-background-clip: padding-box; 288 | -webkit-background-clip: padding-box; 289 | background-clip: padding-box; 290 | border: solid transparent; 291 | border-width: 0 0 0 4px; 292 | } 293 | 294 | .main-container--scroll::-webkit-scrollbar-corner { 295 | background: transparent; 296 | } 297 | 298 | .main-container--scroll::-webkit-scrollbar { 299 | width: 6px; 300 | } 301 | 302 | .main-container--scroll::-webkit-scrollbar-thumb { 303 | -webkit-border-radius: 10px; 304 | border-radius: 10px; 305 | border-width: 5px; 306 | background-color: #8BC34A; 307 | box-shadow: 0 1px 1.5px 0 rgba(0,0,0,.12),0 1px 1px 0 rgba(0,0,0,.24); 308 | } 309 | 310 | .main-container--scroll:active::-webkit-scrollbar-thumb { 311 | box-shadow: 0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.2); 312 | } 313 | 314 | //centered h5 on home page 315 | .main-switch-container--centered { 316 | text-align: center; 317 | } 318 | 319 | // and h6 padding fix 320 | .h6padding--fix { 321 | padding: 16px 16px 0 16px; 322 | margin: 0; 323 | 324 | .advanced-button { 325 | float: right; 326 | margin: -6px 8px 0 0; 327 | } 328 | } 329 | 330 | //error message 331 | .error-text-container { 332 | text-align: center; 333 | position: fixed; 334 | top: 15px; 335 | width: 100%; 336 | pointer-events: none; 337 | 338 | .error-text { 339 | display: inline-block; 340 | margin: 2px 0; 341 | padding: 8px 16px; 342 | border-radius: 3px; 343 | background-color: #F44336; 344 | color: #fff; 345 | box-shadow: 0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12); 346 | opacity: 0; 347 | -moz-transform: scale(0.7); 348 | -ms-transform: scale(0.7); 349 | -o-transform: scale(0.7); 350 | -webkit-transform: scale(0.7); 351 | transform: scale(0.7); 352 | -moz-transition: all 0.3s; 353 | -o-transition: all 0.3s; 354 | -webkit-transition: all 0.3s; 355 | transition: all 0.3s; 356 | 357 | .error-text-button { 358 | display: inline-block; 359 | background-color: #fff; 360 | color: #F44336; 361 | width: 18px; 362 | height: 18px; 363 | border-radius: 50%; 364 | cursor: pointer; 365 | margin-left: 6px; 366 | 367 | svg { 368 | padding: 2px; 369 | border-radius: 50%; 370 | } 371 | } 372 | } 373 | } 374 | 375 | 376 | //error message visibility 377 | .error-text-container.visible { 378 | pointer-events: all; 379 | 380 | .error-text { 381 | opacity: 1; 382 | -moz-transform: scale(1); 383 | -ms-transform: scale(1); 384 | -o-transform: scale(1); 385 | -webkit-transform: scale(1); 386 | transform: scale(1); 387 | } 388 | } 389 | 390 | //error indicator 391 | .error-indicator { 392 | display: block; 393 | position: absolute; 394 | pointer-events: none; 395 | background-color: rgba(244, 67, 54, 0.7); 396 | width: 16px; 397 | height: 16px; 398 | border-radius: 50%; 399 | } 400 | 401 | //z-index fix 402 | .z-index--2 { 403 | z-index: 2; 404 | } 405 | 406 | //mdl scrollable card 407 | .mdl-card--scrollable { 408 | width: 60%; 409 | min-width: 350px; 410 | height: 95%; 411 | 412 | .mdl-card__title { 413 | height: 64px; 414 | } 415 | 416 | .mdl-card__supporting-text { 417 | position: absolute; 418 | height: calc(100% - 164px); 419 | overflow-y: scroll; 420 | } 421 | //custom scrollbar 422 | .mdl-card__supporting-text::-webkit-scrollbar-button { 423 | height: 0; 424 | width: 0; 425 | } 426 | 427 | .mdl-card__supporting-text::-webkit-scrollbar-track { 428 | -webkit-border-radius: 10px; 429 | border-radius: 10px; 430 | -moz-background-clip: padding-box; 431 | -webkit-background-clip: padding-box; 432 | background-clip: padding-box; 433 | border: solid transparent; 434 | border-width: 0 0 0 4px; 435 | } 436 | 437 | .mdl-card__supporting-text::-webkit-scrollbar-corner { 438 | background: transparent; 439 | } 440 | 441 | .mdl-card__supporting-text::-webkit-scrollbar { 442 | width: 6px; 443 | } 444 | 445 | .mdl-card__supporting-text::-webkit-scrollbar-thumb { 446 | -webkit-border-radius: 10px; 447 | border-radius: 10px; 448 | border-width: 5px; 449 | background-color: #8BC34A; 450 | box-shadow: 0 1px 1.5px 0 rgba(0,0,0,.12),0 1px 1px 0 rgba(0,0,0,.24); 451 | } 452 | 453 | .mdl-card__supporting-text:active::-webkit-scrollbar-thumb { 454 | box-shadow: 0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.2); 455 | } 456 | 457 | .mdl-card--border { 458 | position: absolute; 459 | top: calc(100% - 64px); 460 | height: 50px; 461 | } 462 | } 463 | 464 | //centered as on restart page 465 | .main-container--centered { 466 | position: fixed; 467 | display: block; 468 | top: calc(50% - 61px); 469 | width: calc(100% - 32px); 470 | 471 | .mdl-progress { 472 | width: 100%; 473 | } 474 | } 475 | 476 | //first time dialog box 477 | .first-time-dialog--overlay { 478 | position: fixed; 479 | height: 100%; 480 | width: 100%; 481 | left: 0; 482 | top: 0; 483 | background-color: rgba(0, 0, 0, 0.6); 484 | opacity: 0; 485 | pointer-events: none; 486 | -moz-transition: all 0.3s; 487 | -o-transition: all 0.3s; 488 | -webkit-transition: all 0.3s; 489 | transition: all 0.3s; 490 | z-index: 5; 491 | 492 | a { 493 | color: #689F38; 494 | } 495 | 496 | .demo-card-square { 497 | position: absolute; 498 | top: 50%; 499 | left: 50%; 500 | -moz-transform: translate3d(-50%,-50%, 0); 501 | -ms-transform: translate3d(-50%,-50%, 0); 502 | -o-transform: translate3d(-50%,-50%, 0); 503 | -webkit-transform: translate3d(-50%,-50%, 0); 504 | transform: translate3d(-50%,-50%, 0); 505 | 506 | #ok_button { 507 | display: block; 508 | margin: 0 auto; 509 | } 510 | } 511 | } 512 | 513 | //first time dialog visibility 514 | .first-time-dialog--overlay.visible { 515 | opacity: 1; 516 | pointer-events: all; 517 | } 518 | 519 | //dark theme 520 | body.dark { 521 | background: #172026; 522 | 523 | h1, h2, h3, h4, h5, h6, li, .mdl-checkbox__label, #proxy_text, #ok_button { 524 | color: #fff; 525 | } 526 | 527 | .mdl-checkbox__box-outline { 528 | border-color: #fff; 529 | } 530 | 531 | .mdl-switch:not(.is-checked) .mdl-switch__track { 532 | background: #537A94; 533 | } 534 | 535 | .mdl-card { 536 | background-color: #1F4B69; 537 | 538 | .mdl-card__supporting-text, .mdl-radio__label, .proxy__dropdown, .bridges__dropdown { 539 | color: #fff; 540 | } 541 | 542 | .proxy__dropdown div, .bridges__dropdown div { 543 | fill: #fff; 544 | } 545 | 546 | .mdl-card__actions.mdl-card--border { 547 | border-top: 1px solid rgba(255,255,255,.5); 548 | } 549 | 550 | .mdl-textfield__label { 551 | color: #4386B3; 552 | } 553 | 554 | .mdl-textfield__input { 555 | color: #fff; 556 | border-bottom: 1px solid #4386B3; 557 | } 558 | 559 | .mdl-menu { 560 | background-color: #537A94; 561 | } 562 | 563 | .mdl-menu__item:focus, .mdl-menu__item:hover { 564 | background-color: #2F536B; 565 | } 566 | } 567 | 568 | .mdl-menu__outline { 569 | background-color: #163F5A; 570 | } 571 | } 572 | -------------------------------------------------------------------------------- /gui/css/theme.css: -------------------------------------------------------------------------------- 1 | body { 2 | overflow: hidden; 3 | height: 100%; } 4 | 5 | body.closed { 6 | opacity: 0; 7 | -moz-transform: scale(1.7); 8 | -ms-transform: scale(1.7); 9 | -o-transform: scale(1.7); 10 | -webkit-transform: scale(1.7); 11 | transform: scale(1.7); } 12 | 13 | body.open { 14 | opacity: 1; 15 | -moz-transition: all 0.3s; 16 | -o-transition: all 0.3s; 17 | -webkit-transition: all 0.3s; 18 | transition: all 0.3s; 19 | -moz-transform: none; 20 | -ms-transform: none; 21 | -o-transform: none; 22 | -webkit-transform: none; 23 | transform: none; } 24 | 25 | body.hide { 26 | -moz-transform: scale(0.8); 27 | -ms-transform: scale(0.8); 28 | -o-transform: scale(0.8); 29 | -webkit-transform: scale(0.8); 30 | transform: scale(0.8); 31 | opacity: 0; } 32 | 33 | .icon { 34 | overflow: visible; } 35 | 36 | .main-switch-container { 37 | padding: 16px; } 38 | .main-switch-container .settings-button { 39 | vertical-align: middle; 40 | margin-right: 16px; 41 | border-radius: 50%; } 42 | .main-switch-container .settings-button div { 43 | display: block; 44 | margin: -11px auto 0 auto; } 45 | .main-switch-container h5 { 46 | display: inline-block; 47 | margin: 0; 48 | vertical-align: middle; } 49 | .main-switch-container .mdl-switch { 50 | float: right; 51 | display: inline-block; 52 | width: 0; 53 | margin-top: 8px; } 54 | .main-switch-container .save-button { 55 | float: right; 56 | margin-left: 12px; } 57 | 58 | .outer-hr { 59 | margin: 0; 60 | margin-left: 8px; 61 | width: calc(100% - 16px); } 62 | 63 | .main-container { 64 | padding: 16px;} 65 | .main-container .mdl-progress { 66 | width: 100%; } 67 | .main-container .advanced-button { 68 | margin: 16px 8px 0 0; } 69 | .main-container .autostart_fix { 70 | width: 170px; 71 | display: inline-block; 72 | margin-top: 17px; 73 | float: right; } 74 | .main-container .logs { 75 | position: absolute; 76 | top: 180px; 77 | height: calc(100% - 200px); 78 | width: calc(100% - 32px); 79 | overflow-y: scroll; 80 | overflow-x: auto; 81 | opacity: 0; 82 | -moz-transition: all 0.5s ease-out; 83 | -o-transition: all 0.5s ease-out; 84 | -webkit-transition: all 0.5s ease-out; 85 | transition: all 0.5s ease-out; } 86 | .main-container .logs ul { 87 | list-style: none; 88 | font-family: 'roboto'; 89 | padding: 0; 90 | margin: 0; } 91 | .main-container .logs li { 92 | text-transform: uppercase; 93 | padding: 8px 8px; } 94 | .main-container .logs li div { 95 | vertical-align: middle; 96 | margin-right: 8px; 97 | background: #EEFF41; 98 | border: 1px solid #576844; 99 | padding: 5px; 100 | border-radius: 50%; 101 | fill: #576844; } 102 | .main-container .logs.visible { 103 | opacity: 1; } 104 | .main-container .logs::-webkit-scrollbar-button { 105 | height: 0; 106 | width: 0; } 107 | .main-container .logs::-webkit-scrollbar-track { 108 | -webkit-border-radius: 10px; 109 | border-radius: 10px; 110 | -moz-background-clip: padding-box; 111 | -webkit-background-clip: padding-box; 112 | background-clip: padding-box; 113 | border: solid transparent; 114 | border-width: 0 0 0 4px; } 115 | .main-container .logs::-webkit-scrollbar-corner { 116 | background: transparent; } 117 | .main-container .logs::-webkit-scrollbar { 118 | width: 6px; } 119 | .main-container .logs::-webkit-scrollbar-thumb { 120 | -webkit-border-radius: 10px; 121 | border-radius: 10px; 122 | border-width: 5px; 123 | background-color: #8BC34A; 124 | box-shadow: 0 1px 1.5px 0 rgba(0, 0, 0, 0.12), 0 1px 1px 0 rgba(0, 0, 0, 0.24); } 125 | .main-container .logs:active::-webkit-scrollbar-thumb { 126 | box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.2); } 127 | .main-container .bridges-container { 128 | z-index: 2; } 129 | .main-container .mdl-card { 130 | display: inline-flex; 131 | margin: 8px; 132 | min-height: 0; 133 | overflow: visible; } 134 | .main-container .mdl-card .mdl-card__title-text { 135 | width: 100%; } 136 | .main-container .mdl-card .mdl-card__title-text .mdl-switch { 137 | width: 0; 138 | position: absolute; 139 | right: 24px; 140 | top: 20px; } 141 | .main-container .mdl-card .mdl-card__actions { 142 | -moz-transition: all 0.5s; 143 | -o-transition: all 0.5s; 144 | -webkit-transition: all 0.5s; 145 | transition: all 0.5s; 146 | opacity: 0; 147 | height: 0; 148 | padding: 16px; 149 | overflow: hidden; } 150 | .main-container .mdl-card .mdl-card__actions .proxy__dropdown, .main-container .mdl-card .mdl-card__actions .bridges__dropdown { 151 | padding: 8px 16px; } 152 | .main-container .mdl-card .mdl-card__actions .proxy__dropdown button, .main-container .mdl-card .mdl-card__actions .bridges__dropdown button { 153 | vertical-align: baseline; } 154 | .main-container .mdl-card .mdl-card__actions.expand { 155 | opacity: 1; } 156 | .main-container .mdl-card .mdl-card__actions.proxycard { 157 | height: inherit; 158 | overflow: visible; } 159 | .main-container .mdl-card .mdl-card__actions.cportcard { 160 | height: 64px; } 161 | .main-container .mdl-card .mdl-card__actions.cportcard .mdl-textfield { 162 | padding: 0; } 163 | .main-container .mdl-card .mdl-card__actions.acsportcard { 164 | height: 90px; } 165 | .main-container .mdl-card .mdl-card__actions.bridgescard { 166 | height: 240px; } 167 | .main-container .mdl-card .mdl-card__supporting-text { 168 | padding-top: 0; } 169 | .main-container .mdl-card .mdl-card__supporting-text h5:first-of-type { 170 | margin-top: 0; } 171 | .main-container .mdl-card .mdl-card__supporting-text img { 172 | border-radius: 50%; 173 | margin: 0 16px; 174 | display: block; } 175 | 176 | .mdl-menu__item.selected { 177 | background-color: rgba(0, 0, 0, 0.2); } 178 | 179 | #bridges_text, #proxy_text_outer { 180 | width: 225px; 181 | display: inline-block; 182 | text-align: left; } 183 | 184 | .main-container--scroll { 185 | position: absolute; 186 | overflow-y: scroll; 187 | overflow-x: auto; 188 | width: calc(100% - 40px); 189 | height: calc(100% - 107px); } 190 | 191 | .main-container--scroll::-webkit-scrollbar-button { 192 | height: 0; 193 | width: 0; } 194 | 195 | .main-container--scroll::-webkit-scrollbar-track { 196 | -webkit-border-radius: 10px; 197 | border-radius: 10px; 198 | -moz-background-clip: padding-box; 199 | -webkit-background-clip: padding-box; 200 | background-clip: padding-box; 201 | border: solid transparent; 202 | border-width: 0 0 0 4px; } 203 | 204 | .main-container--scroll::-webkit-scrollbar-corner { 205 | background: transparent; } 206 | 207 | .main-container--scroll::-webkit-scrollbar { 208 | width: 6px; } 209 | 210 | .main-container--scroll::-webkit-scrollbar-thumb { 211 | -webkit-border-radius: 10px; 212 | border-radius: 10px; 213 | border-width: 5px; 214 | background-color: #8BC34A; 215 | box-shadow: 0 1px 1.5px 0 rgba(0, 0, 0, 0.12), 0 1px 1px 0 rgba(0, 0, 0, 0.24); } 216 | 217 | .main-container--scroll:active::-webkit-scrollbar-thumb { 218 | box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.2); } 219 | 220 | .main-switch-container--centered { 221 | text-align: center; } 222 | 223 | .h6padding--fix { 224 | padding: 16px 16px 0 16px; 225 | margin: 0; } 226 | .h6padding--fix .advanced-button { 227 | float: right; 228 | margin: -6px 8px 0 0; } 229 | 230 | .error-text-container { 231 | text-align: center; 232 | position: fixed; 233 | top: 15px; 234 | width: 100%; 235 | pointer-events: none; } 236 | .error-text-container .error-text { 237 | display: inline-block; 238 | margin: 2px 0; 239 | padding: 8px 16px; 240 | border-radius: 3px; 241 | background-color: #F44336; 242 | color: #fff; 243 | box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); 244 | opacity: 0; 245 | -moz-transform: scale(0.7); 246 | -ms-transform: scale(0.7); 247 | -o-transform: scale(0.7); 248 | -webkit-transform: scale(0.7); 249 | transform: scale(0.7); 250 | -moz-transition: all 0.3s; 251 | -o-transition: all 0.3s; 252 | -webkit-transition: all 0.3s; 253 | transition: all 0.3s; } 254 | .error-text-container .error-text .error-text-button { 255 | display: inline-block; 256 | background-color: #fff; 257 | color: #F44336; 258 | width: 18px; 259 | height: 18px; 260 | border-radius: 50%; 261 | cursor: pointer; 262 | margin-left: 6px; } 263 | .error-text-container .error-text .error-text-button svg { 264 | padding: 2px; 265 | border-radius: 50%; } 266 | 267 | .error-text-container.visible { 268 | pointer-events: all; } 269 | .error-text-container.visible .error-text { 270 | opacity: 1; 271 | -moz-transform: scale(1); 272 | -ms-transform: scale(1); 273 | -o-transform: scale(1); 274 | -webkit-transform: scale(1); 275 | transform: scale(1); } 276 | 277 | .error-indicator { 278 | display: block; 279 | position: absolute; 280 | pointer-events: none; 281 | background-color: rgba(244, 67, 54, 0.7); 282 | width: 16px; 283 | height: 16px; 284 | border-radius: 50%; } 285 | 286 | .z-index--2 { 287 | z-index: 2; } 288 | 289 | .mdl-card--scrollable { 290 | width: 60%; 291 | min-width: 350px; 292 | height: 95%; } 293 | .mdl-card--scrollable .mdl-card__title { 294 | height: 64px; } 295 | .mdl-card--scrollable .mdl-card__supporting-text { 296 | /*position: absolute;*/ 297 | height: calc(100% - 164px); 298 | overflow-y: scroll; } 299 | .mdl-card--scrollable .mdl-card__supporting-text::-webkit-scrollbar-button { 300 | height: 0; 301 | width: 0; } 302 | .mdl-card--scrollable .mdl-card__supporting-text::-webkit-scrollbar-track { 303 | -webkit-border-radius: 10px; 304 | border-radius: 10px; 305 | -moz-background-clip: padding-box; 306 | -webkit-background-clip: padding-box; 307 | background-clip: padding-box; 308 | border: solid transparent; 309 | border-width: 0 0 0 4px; } 310 | .mdl-card--scrollable .mdl-card__supporting-text::-webkit-scrollbar-corner { 311 | background: transparent; } 312 | .mdl-card--scrollable .mdl-card__supporting-text::-webkit-scrollbar { 313 | width: 6px; } 314 | .mdl-card--scrollable .mdl-card__supporting-text::-webkit-scrollbar-thumb { 315 | -webkit-border-radius: 10px; 316 | border-radius: 10px; 317 | border-width: 5px; 318 | background-color: #8BC34A; 319 | box-shadow: 0 1px 1.5px 0 rgba(0, 0, 0, 0.12), 0 1px 1px 0 rgba(0, 0, 0, 0.24); } 320 | .mdl-card--scrollable .mdl-card__supporting-text:active::-webkit-scrollbar-thumb { 321 | box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.2); } 322 | .mdl-card--scrollable .mdl-card--border { 323 | position: absolute; 324 | top: calc(100% - 64px); 325 | height: 50px; } 326 | 327 | .main-container--centered { 328 | position: fixed; 329 | display: block; 330 | top: calc(50% - 61px); 331 | width: calc(100% - 32px); } 332 | .main-container--centered .mdl-progress { 333 | width: 100%; } 334 | 335 | .first-time-dialog--overlay { 336 | position: fixed; 337 | height: 100%; 338 | width: 100%; 339 | left: 0; 340 | top: 0; 341 | background-color: rgba(0, 0, 0, 0.6); 342 | opacity: 0; 343 | pointer-events: none; 344 | -moz-transition: all 0.3s; 345 | -o-transition: all 0.3s; 346 | -webkit-transition: all 0.3s; 347 | transition: all 0.3s; 348 | z-index: 5; } 349 | .first-time-dialog--overlay a { 350 | color: #689F38; } 351 | .first-time-dialog--overlay .demo-card-square { 352 | position: absolute; 353 | top: 50%; 354 | left: 50%; 355 | -moz-transform: translate3d(-50%, -50%, 0); 356 | -ms-transform: translate3d(-50%, -50%, 0); 357 | -o-transform: translate3d(-50%, -50%, 0); 358 | -webkit-transform: translate3d(-50%, -50%, 0); 359 | transform: translate3d(-50%, -50%, 0); } 360 | .first-time-dialog--overlay .demo-card-square #ok_button { 361 | display: block; 362 | margin: 0 auto; } 363 | .first-time-dialog--overlay .demo-card-square #anonymity_ok_button { 364 | display: block; 365 | margin: 0 auto; } 366 | 367 | .first-time-dialog--overlay .demo-card-square #changelog_ok_button { 368 | display: block; 369 | margin: 0 auto; 370 | } 371 | 372 | .first-time-dialog--overlay.visible { 373 | opacity: 1; 374 | pointer-events: all; } 375 | 376 | body.dark { 377 | background: #172026; } 378 | body.dark h1, body.dark h2, body.dark h3, body.dark h4, body.dark h5, body.dark h6, body.dark li, body.dark .mdl-checkbox__label, body.dark #proxy_text, body.dark #ok_button { 379 | color: #fff; } 380 | body.dark .mdl-checkbox__box-outline { 381 | border-color: #fff; } 382 | body.dark .mdl-switch:not(.is-checked) .mdl-switch__track { 383 | background: #537A94; } 384 | body.dark .mdl-card { 385 | background-color: #1F4B69; } 386 | body.dark .mdl-card .mdl-card__supporting-text, body.dark .mdl-card .mdl-radio__label, body.dark .mdl-card .proxy__dropdown, body.dark .mdl-card .bridges__dropdown { 387 | color: #fff; } 388 | body.dark .mdl-card .proxy__dropdown div, body.dark .mdl-card .bridges__dropdown div { 389 | fill: #fff; } 390 | body.dark .mdl-card .mdl-card__actions.mdl-card--border { 391 | border-top: 1px solid rgba(255, 255, 255, 0.5); } 392 | body.dark .mdl-card .mdl-textfield__label { 393 | color: #4386B3; } 394 | body.dark .mdl-card .mdl-textfield__input { 395 | color: #fff; 396 | border-bottom: 1px solid #4386B3; } 397 | body.dark .mdl-card .mdl-menu { 398 | background-color: #537A94; } 399 | body.dark .mdl-card .mdl-menu__item:focus, body.dark .mdl-card .mdl-menu__item:hover { 400 | background-color: #2F536B; } 401 | body.dark .mdl-menu__outline { 402 | background-color: #163F5A; } 403 | 404 | #anonymity{ 405 | display:none; 406 | } 407 | 408 | .main-container .mdl-card .mdl-card__actions.advoptcard { 409 | height: 90px; 410 | } 411 | 412 | #settings_container{ 413 | margin-left: 6%; 414 | } 415 | -------------------------------------------------------------------------------- /gui/fonts/evil-icons.css: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes spin { 2 | 100% { 3 | -webkit-transform:rotate(360deg); 4 | transform:rotate(360deg); 5 | } 6 | } 7 | 8 | @keyframes spin { 9 | 100% { 10 | -webkit-transform:rotate(360deg); 11 | transform:rotate(360deg); 12 | } 13 | } 14 | 15 | 16 | .icon { 17 | position: relative; 18 | display: inline-block; 19 | width: 25px; 20 | height: 25px; 21 | overflow: hidden; 22 | fill: currentColor; 23 | } 24 | 25 | .icon__cnt { 26 | width: 100%; 27 | height: 100%; 28 | background: inherit; 29 | fill: inherit; 30 | pointer-events: none; /* Do not catch pointer events */ 31 | transform: translateX(0); /* Crisp fix for non-retina */ 32 | -ms-transform: translate(0.5px, -0.3px); /* Crisp fix for IE */ 33 | } 34 | 35 | .icon--m { 36 | width: 50px; 37 | height: 50px; 38 | } 39 | 40 | .icon--l { 41 | width: 100px; 42 | height: 100px; 43 | } 44 | 45 | .icon--xl { 46 | width: 150px; 47 | height: 150px; 48 | } 49 | 50 | .icon--xxl { 51 | width: 200px; 52 | height: 200px; 53 | } 54 | 55 | .icon__spinner { 56 | position: absolute; 57 | top: 0; 58 | left: 0; 59 | width: 100%; 60 | height: 100%; 61 | } 62 | 63 | .icon--ei-spinner .icon__spinner, 64 | .icon--ei-spinner-2 .icon__spinner { 65 | -webkit-animation: spin 1s steps(12) infinite; 66 | animation: spin 1s steps(12) infinite; 67 | } 68 | 69 | .icon--ei-spinner-3 .icon__spinner { 70 | -webkit-animation: spin 1.5s linear infinite; 71 | animation: spin 1.5s linear infinite; 72 | } 73 | 74 | .icon--ei-sc-facebook { 75 | fill: #3b5998; 76 | } 77 | 78 | .icon--ei-sc-github { 79 | fill: #333; 80 | } 81 | 82 | .icon--ei-sc-google-plus { 83 | fill: #dd4b39; 84 | } 85 | 86 | .icon--ei-sc-instagram { 87 | fill: #3f729b; 88 | } 89 | 90 | .icon--ei-sc-linkedin { 91 | fill: #0976b4; 92 | } 93 | 94 | .icon--ei-sc-odnoklassniki { 95 | fill: #ed812b; 96 | } 97 | 98 | .icon--ei-sc-skype { 99 | fill: #00aff0; 100 | } 101 | 102 | .icon--ei-sc-soundcloud { 103 | fill: #f80; 104 | } 105 | 106 | .icon--ei-sc-tumblr { 107 | fill: #35465c; 108 | } 109 | 110 | .icon--ei-sc-twitter { 111 | fill: #55acee; 112 | } 113 | 114 | .icon--ei-sc-vimeo { 115 | fill: #1ab7ea; 116 | } 117 | 118 | .icon--ei-sc-vk { 119 | fill: #45668e; 120 | } 121 | 122 | .icon--ei-sc-youtube { 123 | fill: #e52d27; 124 | } 125 | -------------------------------------------------------------------------------- /gui/fonts/evil-icons.min.css: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.icon{position:relative;display:inline-block;width:25px;height:25px;overflow:hidden;fill:currentColor}.icon__cnt{width:100%;height:100%;background:inherit;fill:inherit;pointer-events:none;transform:translateX(0);-ms-transform:translate(.5px,-.3px)}.icon--m{width:50px;height:50px}.icon--l{width:100px;height:100px}.icon--xl{width:150px;height:150px}.icon--xxl{width:200px;height:200px}.icon__spinner{position:absolute;top:0;left:0;width:100%;height:100%}.icon--ei-spinner .icon__spinner,.icon--ei-spinner-2 .icon__spinner{-webkit-animation:spin 1s steps(12)infinite;animation:spin 1s steps(12)infinite}.icon--ei-spinner-3 .icon__spinner{-webkit-animation:spin 1.5s linear infinite;animation:spin 1.5s linear infinite}.icon--ei-sc-facebook{fill:#3b5998}.icon--ei-sc-github{fill:#333}.icon--ei-sc-google-plus{fill:#dd4b39}.icon--ei-sc-instagram{fill:#3f729b}.icon--ei-sc-linkedin{fill:#0976b4}.icon--ei-sc-odnoklassniki{fill:#ed812b}.icon--ei-sc-skype{fill:#00aff0}.icon--ei-sc-soundcloud{fill:#f80}.icon--ei-sc-tumblr{fill:#35465c}.icon--ei-sc-twitter{fill:#55acee}.icon--ei-sc-vimeo{fill:#1ab7ea}.icon--ei-sc-vk{fill:#45668e}.icon--ei-sc-youtube{fill:#e52d27} -------------------------------------------------------------------------------- /gui/fonts/icons/ei-archive.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-arrow-down.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-arrow-left.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-arrow-right.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-arrow-up.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-bell.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-calendar.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-camera.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-cart.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-chart.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-check.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-chevron-down.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-chevron-left.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-chevron-right.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-chevron-up.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-clock.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-close-o.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-close.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-comment.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-credit-card.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-envelope.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-exclamation.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-external-link.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-eye.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-gear.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-heart.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-image.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-like.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-link.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-location.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-lock.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-minus.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-navicon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-paperclip.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-pencil.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-play.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-plus.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-pointer.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-question.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-redo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-refresh.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-retweet.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-sc-facebook.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-sc-github.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-sc-google-plus.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-sc-instagram.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-sc-linkedin.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-sc-odnoklassniki.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-sc-skype.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-sc-soundcloud.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-sc-tumblr.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-sc-twitter.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-sc-vimeo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-sc-vk.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-sc-youtube.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-search.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-share-apple.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-share-google.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-spinner-2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-spinner-3.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-spinner.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-star.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-tag.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-trash.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-trophy.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-undo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-unlock.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/icons/ei-user.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gui/fonts/roboto-black.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-black.eot -------------------------------------------------------------------------------- /gui/fonts/roboto-black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-black.ttf -------------------------------------------------------------------------------- /gui/fonts/roboto-black.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-black.woff -------------------------------------------------------------------------------- /gui/fonts/roboto-black.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-black.woff2 -------------------------------------------------------------------------------- /gui/fonts/roboto-blackitalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-blackitalic.eot -------------------------------------------------------------------------------- /gui/fonts/roboto-blackitalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-blackitalic.ttf -------------------------------------------------------------------------------- /gui/fonts/roboto-blackitalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-blackitalic.woff -------------------------------------------------------------------------------- /gui/fonts/roboto-blackitalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-blackitalic.woff2 -------------------------------------------------------------------------------- /gui/fonts/roboto-bold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-bold.eot -------------------------------------------------------------------------------- /gui/fonts/roboto-bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-bold.ttf -------------------------------------------------------------------------------- /gui/fonts/roboto-bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-bold.woff -------------------------------------------------------------------------------- /gui/fonts/roboto-bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-bold.woff2 -------------------------------------------------------------------------------- /gui/fonts/roboto-bolditalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-bolditalic.eot -------------------------------------------------------------------------------- /gui/fonts/roboto-bolditalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-bolditalic.ttf -------------------------------------------------------------------------------- /gui/fonts/roboto-bolditalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-bolditalic.woff -------------------------------------------------------------------------------- /gui/fonts/roboto-bolditalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-bolditalic.woff2 -------------------------------------------------------------------------------- /gui/fonts/roboto-italic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-italic.eot -------------------------------------------------------------------------------- /gui/fonts/roboto-italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-italic.ttf -------------------------------------------------------------------------------- /gui/fonts/roboto-italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-italic.woff -------------------------------------------------------------------------------- /gui/fonts/roboto-italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-italic.woff2 -------------------------------------------------------------------------------- /gui/fonts/roboto-light.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-light.eot -------------------------------------------------------------------------------- /gui/fonts/roboto-light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-light.ttf -------------------------------------------------------------------------------- /gui/fonts/roboto-light.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-light.woff -------------------------------------------------------------------------------- /gui/fonts/roboto-light.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-light.woff2 -------------------------------------------------------------------------------- /gui/fonts/roboto-lightitalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-lightitalic.eot -------------------------------------------------------------------------------- /gui/fonts/roboto-lightitalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-lightitalic.ttf -------------------------------------------------------------------------------- /gui/fonts/roboto-lightitalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-lightitalic.woff -------------------------------------------------------------------------------- /gui/fonts/roboto-lightitalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-lightitalic.woff2 -------------------------------------------------------------------------------- /gui/fonts/roboto-medium.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-medium.eot -------------------------------------------------------------------------------- /gui/fonts/roboto-medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-medium.ttf -------------------------------------------------------------------------------- /gui/fonts/roboto-medium.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-medium.woff -------------------------------------------------------------------------------- /gui/fonts/roboto-medium.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-medium.woff2 -------------------------------------------------------------------------------- /gui/fonts/roboto-mediumitalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-mediumitalic.eot -------------------------------------------------------------------------------- /gui/fonts/roboto-mediumitalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-mediumitalic.ttf -------------------------------------------------------------------------------- /gui/fonts/roboto-mediumitalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-mediumitalic.woff -------------------------------------------------------------------------------- /gui/fonts/roboto-mediumitalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-mediumitalic.woff2 -------------------------------------------------------------------------------- /gui/fonts/roboto-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-regular.eot -------------------------------------------------------------------------------- /gui/fonts/roboto-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-regular.ttf -------------------------------------------------------------------------------- /gui/fonts/roboto-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-regular.woff -------------------------------------------------------------------------------- /gui/fonts/roboto-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-regular.woff2 -------------------------------------------------------------------------------- /gui/fonts/roboto-thin.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-thin.eot -------------------------------------------------------------------------------- /gui/fonts/roboto-thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-thin.ttf -------------------------------------------------------------------------------- /gui/fonts/roboto-thin.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-thin.woff -------------------------------------------------------------------------------- /gui/fonts/roboto-thin.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-thin.woff2 -------------------------------------------------------------------------------- /gui/fonts/roboto-thinitalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-thinitalic.eot -------------------------------------------------------------------------------- /gui/fonts/roboto-thinitalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-thinitalic.ttf -------------------------------------------------------------------------------- /gui/fonts/roboto-thinitalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-thinitalic.woff -------------------------------------------------------------------------------- /gui/fonts/roboto-thinitalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/roboto-thinitalic.woff2 -------------------------------------------------------------------------------- /gui/fonts/roboto.css: -------------------------------------------------------------------------------- 1 | /* Generated by Font Squirrel (http://www.fontsquirrel.com) on August 30, 2015 */ 2 | 3 | @font-face { 4 | font-family: 'roboto'; 5 | src: url('roboto-black.eot'); 6 | src: url('roboto-black.eot?#iefix') format('embedded-opentype'), url('roboto-black.woff2') format('woff2'), url('roboto-black.woff') format('woff'), url('roboto-black.ttf') format('truetype'), url('roboto-black.svg#robotoblack') format('svg'); 7 | font-weight: normal; 8 | font-style: normal; 9 | } 10 | 11 | @font-face { 12 | font-family: 'roboto'; 13 | src: url('roboto-blackitalic.eot'); 14 | src: url('roboto-blackitalic.eot?#iefix') format('embedded-opentype'), url('roboto-blackitalic.woff2') format('woff2'), url('roboto-blackitalic.woff') format('woff'), url('roboto-blackitalic.ttf') format('truetype'), url('roboto-blackitalic.svg#robotoblack_italic') format('svg'); 15 | font-weight: normal; 16 | font-style: italic; 17 | } 18 | 19 | @font-face { 20 | font-family: 'roboto'; 21 | src: url('roboto-bold.eot'); 22 | src: url('roboto-bold.eot?#iefix') format('embedded-opentype'), url('roboto-bold.woff2') format('woff2'), url('roboto-bold.woff') format('woff'), url('roboto-bold.ttf') format('truetype'), url('roboto-bold.svg#robotobold') format('svg'); 23 | font-weight: bold; 24 | font-style: normal; 25 | } 26 | 27 | @font-face { 28 | font-family: 'roboto'; 29 | src: url('roboto-bolditalic.eot'); 30 | src: url('roboto-bolditalic.eot?#iefix') format('embedded-opentype'), url('roboto-bolditalic.woff2') format('woff2'), url('roboto-bolditalic.woff') format('woff'), url('roboto-bolditalic.ttf') format('truetype'), url('roboto-bolditalic.svg#robotobold_italic') format('svg'); 31 | font-weight: bold; 32 | font-style: italic; 33 | } 34 | 35 | @font-face { 36 | font-family: 'roboto_condensed'; 37 | src: url('robotocondensed-bold.eot'); 38 | src: url('robotocondensed-bold.eot?#iefix') format('embedded-opentype'), url('robotocondensed-bold.woff2') format('woff2'), url('robotocondensed-bold.woff') format('woff'), url('robotocondensed-bold.ttf') format('truetype'), url('robotocondensed-bold.svg#roboto_condensedbold') format('svg'); 39 | font-weight: bold; 40 | font-style: normal; 41 | } 42 | 43 | @font-face { 44 | font-family: 'roboto_condensed'; 45 | src: url('robotocondensed-bolditalic.eot'); 46 | src: url('robotocondensed-bolditalic.eot?#iefix') format('embedded-opentype'), url('robotocondensed-bolditalic.woff2') format('woff2'), url('robotocondensed-bolditalic.woff') format('woff'), url('robotocondensed-bolditalic.ttf') format('truetype'), url('robotocondensed-bolditalic.svg#roboto_condensedbold_italic') format('svg'); 47 | font-weight: bold; 48 | font-style: italic; 49 | } 50 | 51 | @font-face { 52 | font-family: 'roboto_condensed'; 53 | src: url('robotocondensed-italic.eot'); 54 | src: url('robotocondensed-italic.eot?#iefix') format('embedded-opentype'), url('robotocondensed-italic.woff2') format('woff2'), url('robotocondensed-italic.woff') format('woff'), url('robotocondensed-italic.ttf') format('truetype'), url('robotocondensed-italic.svg#roboto_condenseditalic') format('svg'); 55 | font-weight: normal; 56 | font-style: italic; 57 | } 58 | 59 | @font-face { 60 | font-family: 'roboto_condensed'; 61 | src: url('robotocondensed-light.eot'); 62 | src: url('robotocondensed-light.eot?#iefix') format('embedded-opentype'), url('robotocondensed-light.woff2') format('woff2'), url('robotocondensed-light.woff') format('woff'), url('robotocondensed-light.ttf') format('truetype'), url('robotocondensed-light.svg#roboto_condensedlight') format('svg'); 63 | font-weight: normal; 64 | font-style: normal; 65 | } 66 | 67 | @font-face { 68 | font-family: 'roboto_condensed'; 69 | src: url('robotocondensed-lightitalic.eot'); 70 | src: url('robotocondensed-lightitalic.eot?#iefix') format('embedded-opentype'), url('robotocondensed-lightitalic.woff2') format('woff2'), url('robotocondensed-lightitalic.woff') format('woff'), url('robotocondensed-lightitalic.ttf') format('truetype'), url('robotocondensed-lightitalic.svg#roboto_condensedlight_italic') format('svg'); 71 | font-weight: normal; 72 | font-style: italic; 73 | } 74 | 75 | @font-face { 76 | font-family: 'roboto_condensed'; 77 | src: url('robotocondensed-regular.eot'); 78 | src: url('robotocondensed-regular.eot?#iefix') format('embedded-opentype'), url('robotocondensed-regular.woff2') format('woff2'), url('robotocondensed-regular.woff') format('woff'), url('robotocondensed-regular.ttf') format('truetype'), url('robotocondensed-regular.svg#roboto_condensedregular') format('svg'); 79 | font-weight: normal; 80 | font-style: normal; 81 | } 82 | 83 | @font-face { 84 | font-family: 'roboto'; 85 | src: url('roboto-italic.eot'); 86 | src: url('roboto-italic.eot?#iefix') format('embedded-opentype'), url('roboto-italic.woff2') format('woff2'), url('roboto-italic.woff') format('woff'), url('roboto-italic.ttf') format('truetype'), url('roboto-italic.svg#robotoitalic') format('svg'); 87 | font-weight: normal; 88 | font-style: italic; 89 | } 90 | 91 | @font-face { 92 | font-family: 'roboto'; 93 | src: url('roboto-light.eot'); 94 | src: url('roboto-light.eot?#iefix') format('embedded-opentype'), url('roboto-light.woff2') format('woff2'), url('roboto-light.woff') format('woff'), url('roboto-light.ttf') format('truetype'), url('roboto-light.svg#robotolight') format('svg'); 95 | font-weight: normal; 96 | font-style: normal; 97 | } 98 | 99 | @font-face { 100 | font-family: 'roboto'; 101 | src: url('roboto-thin.eot'); 102 | src: url('roboto-thin.eot?#iefix') format('embedded-opentype'), url('roboto-thin.woff2') format('woff2'), url('roboto-thin.woff') format('woff'), url('roboto-thin.ttf') format('truetype'), url('roboto-thin.svg#robotothin') format('svg'); 103 | font-weight: normal; 104 | font-style: normal; 105 | } 106 | 107 | @font-face { 108 | font-family: 'roboto'; 109 | src: url('roboto-thinitalic.eot'); 110 | src: url('roboto-thinitalic.eot?#iefix') format('embedded-opentype'), url('roboto-thinitalic.woff2') format('woff2'), url('roboto-thinitalic.woff') format('woff'), url('roboto-thinitalic.ttf') format('truetype'), url('roboto-thinitalic.svg#robotothin_italic') format('svg'); 111 | font-weight: normal; 112 | font-style: italic; 113 | } 114 | 115 | @font-face { 116 | font-family: 'roboto'; 117 | src: url('roboto-lightitalic.eot'); 118 | src: url('roboto-lightitalic.eot?#iefix') format('embedded-opentype'), url('roboto-lightitalic.woff2') format('woff2'), url('roboto-lightitalic.woff') format('woff'), url('roboto-lightitalic.ttf') format('truetype'), url('roboto-lightitalic.svg#robotolight_italic') format('svg'); 119 | font-weight: normal; 120 | font-style: italic; 121 | } 122 | 123 | @font-face { 124 | font-family: 'roboto'; 125 | src: url('roboto-medium.eot'); 126 | src: url('roboto-medium.eot?#iefix') format('embedded-opentype'), url('roboto-medium.woff2') format('woff2'), url('roboto-medium.woff') format('woff'), url('roboto-medium.ttf') format('truetype'), url('roboto-medium.svg#robotomedium') format('svg'); 127 | font-weight: normal; 128 | font-style: normal; 129 | } 130 | 131 | @font-face { 132 | font-family: 'roboto'; 133 | src: url('roboto-mediumitalic.eot'); 134 | src: url('roboto-mediumitalic.eot?#iefix') format('embedded-opentype'), url('roboto-mediumitalic.woff2') format('woff2'), url('roboto-mediumitalic.woff') format('woff'), url('roboto-mediumitalic.ttf') format('truetype'), url('roboto-mediumitalic.svg#robotomedium_italic') format('svg'); 135 | font-weight: normal; 136 | font-style: italic; 137 | } 138 | 139 | @font-face { 140 | font-family: 'roboto'; 141 | src: url('roboto-regular.eot'); 142 | src: url('roboto-regular.eot?#iefix') format('embedded-opentype'), url('roboto-regular.woff2') format('woff2'), url('roboto-regular.woff') format('woff'), url('roboto-regular.ttf') format('truetype'), url('roboto-regular.svg#robotoregular') format('svg'); 143 | font-weight: normal; 144 | font-style: normal; 145 | } -------------------------------------------------------------------------------- /gui/fonts/robotocondensed-bold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/robotocondensed-bold.eot -------------------------------------------------------------------------------- /gui/fonts/robotocondensed-bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/robotocondensed-bold.ttf -------------------------------------------------------------------------------- /gui/fonts/robotocondensed-bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/robotocondensed-bold.woff -------------------------------------------------------------------------------- /gui/fonts/robotocondensed-bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/robotocondensed-bold.woff2 -------------------------------------------------------------------------------- /gui/fonts/robotocondensed-bolditalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/robotocondensed-bolditalic.eot -------------------------------------------------------------------------------- /gui/fonts/robotocondensed-bolditalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/robotocondensed-bolditalic.ttf -------------------------------------------------------------------------------- /gui/fonts/robotocondensed-bolditalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/robotocondensed-bolditalic.woff -------------------------------------------------------------------------------- /gui/fonts/robotocondensed-bolditalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/robotocondensed-bolditalic.woff2 -------------------------------------------------------------------------------- /gui/fonts/robotocondensed-italic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/robotocondensed-italic.eot -------------------------------------------------------------------------------- /gui/fonts/robotocondensed-italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/robotocondensed-italic.ttf -------------------------------------------------------------------------------- /gui/fonts/robotocondensed-italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/robotocondensed-italic.woff -------------------------------------------------------------------------------- /gui/fonts/robotocondensed-italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/robotocondensed-italic.woff2 -------------------------------------------------------------------------------- /gui/fonts/robotocondensed-light.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/robotocondensed-light.eot -------------------------------------------------------------------------------- /gui/fonts/robotocondensed-light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/robotocondensed-light.ttf -------------------------------------------------------------------------------- /gui/fonts/robotocondensed-light.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/robotocondensed-light.woff -------------------------------------------------------------------------------- /gui/fonts/robotocondensed-light.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/robotocondensed-light.woff2 -------------------------------------------------------------------------------- /gui/fonts/robotocondensed-lightitalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/robotocondensed-lightitalic.eot -------------------------------------------------------------------------------- /gui/fonts/robotocondensed-lightitalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/robotocondensed-lightitalic.ttf -------------------------------------------------------------------------------- /gui/fonts/robotocondensed-lightitalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/robotocondensed-lightitalic.woff -------------------------------------------------------------------------------- /gui/fonts/robotocondensed-lightitalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/robotocondensed-lightitalic.woff2 -------------------------------------------------------------------------------- /gui/fonts/robotocondensed-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/robotocondensed-regular.eot -------------------------------------------------------------------------------- /gui/fonts/robotocondensed-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/robotocondensed-regular.ttf -------------------------------------------------------------------------------- /gui/fonts/robotocondensed-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/robotocondensed-regular.woff -------------------------------------------------------------------------------- /gui/fonts/robotocondensed-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/fonts/robotocondensed-regular.woff2 -------------------------------------------------------------------------------- /gui/img/5458094.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/img/5458094.jpg -------------------------------------------------------------------------------- /gui/img/5947267.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/gui/img/5947267.jpg -------------------------------------------------------------------------------- /gui/index.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /gui/js/about.js: -------------------------------------------------------------------------------- 1 | //go back to home page button 2 | document.getElementById('back_button').addEventListener("click", function () { 3 | location.href = "index.html"; 4 | }); 5 | //set theme 6 | chrome.storage.local.get('theme', function (value) { 7 | if (value.theme == 'dark') { 8 | document.body.classList.add('dark'); 9 | } 10 | }); 11 | //on load effect 12 | document.body.classList.add('closed'); 13 | setTimeout(function () { 14 | document.body.classList.add('open'); 15 | }, 10); -------------------------------------------------------------------------------- /gui/js/main.js: -------------------------------------------------------------------------------- 1 | //control the main progress bar 2 | document.getElementById('p1').addEventListener('mdl-componentupgraded', function () { 3 | this.MaterialProgress.setProgress(0); 4 | }); 5 | 6 | //loading settings 7 | document.addEventListener('DOMContentLoaded', function () { 8 | chrome.storage.local.get({ 9 | firstrun: true, 10 | restarting_tor: false, 11 | autostart_tor: false, 12 | proxy_type: "none", 13 | proxy_address: "none", 14 | proxy_port: "none", 15 | accessible_ports: "all", 16 | reachable_addresses: "all", 17 | tor_port: 9999, 18 | theme: "dark", 19 | adv_opt:"none" 20 | }, function (items) { 21 | //console.log(items); 22 | if (items.restarting_tor || items.autostart_tor) { 23 | lib.init(function () { 24 | set_settings(items); // in tor.js 25 | runTor(); 26 | updateTorStatus( "Tor is running, see below for details."); 27 | }); 28 | chrome.storage.local.set({ restarting_tor: false }); 29 | document.getElementById('start_button_text').innerHTML = "Restart Tor"; 30 | document.getElementById('anonymity').setAttribute('style', 'display:inline-block'); 31 | } 32 | set_gui(items); 33 | set_settings(items); // in tor.js 34 | }); 35 | }); 36 | 37 | //set start up settings 38 | function set_gui(items) { 39 | //set theme 40 | if (items.theme == 'dark') { 41 | document.body.classList.add('dark'); 42 | } 43 | //autostart checkbox to be ticked 44 | if (items.autostart_tor) { 45 | document.getElementById('autostart_checkbox').click(); 46 | } 47 | //check first run 48 | if (items.firstrun) { 49 | document.getElementById("first-time-dialog--overlay").classList.add("visible"); 50 | } 51 | } 52 | 53 | //first time dialog close 54 | document.getElementById('ok_button').addEventListener("click", function () { 55 | document.getElementById('first-time-dialog--overlay').classList.remove('visible'); 56 | chrome.storage.local.set({ firstrun: false }); 57 | }); 58 | 59 | //anonymity 60 | document.getElementById('anonymity_ok_button').addEventListener("click", function () { 61 | document.getElementById('anonymity-help--overlay').classList.remove('visible'); 62 | }); 63 | //changelog 64 | document.getElementById('changelog_ok_button').addEventListener("click", function () { 65 | document.getElementById('changelog').classList.remove('visible'); 66 | }); 67 | 68 | //start / restart tor button 69 | document.getElementById('start_button').addEventListener("click", function () { 70 | if (document.getElementById('start_button_text').innerHTML == "Start Tor Proxy") { 71 | document.getElementById('terminal').classList.add('visible'); 72 | lib.init(function () { 73 | runTor(); 74 | }); 75 | updateTorStatus( "Tor Proxy is running, see below for details."); 76 | document.getElementById('start_button_text').innerHTML = "Restart Tor Proxy"; 77 | document.getElementById('anonymity').setAttribute('style', 'display:inline-block'); 78 | // 79 | // var snackbarContainer = document.querySelector('#start_button'); 80 | // var snackbarContainer = document.querySelector('#demo-snackbar-example'); 81 | // var handler = function(event) { 82 | // document.getElementById('demo-snackbar-example').remove(); 83 | // }; 84 | // var data = { 85 | // message: 'v0.2.6 is a major update, if you face any issues, kindly mention these issues on reddit thread(click help for link) along with your device details.', 86 | // timeout: 8000, 87 | // actionHandler: handler, 88 | // actionText: 'Hide' 89 | // }; 90 | // snackbarContainer.MaterialSnackbar.showSnackbar(data); 91 | } else { 92 | chrome.storage.local.set({ restarting_tor: true }); 93 | document.querySelector('body').classList.add('hide'); 94 | setTimeout(function () { 95 | location.href = "restart.html"; 96 | }, 300); 97 | //update tor status text 98 | updateTorStatus("Restarting Tor Proxy ..."); 99 | } 100 | }); 101 | 102 | //tor status update 103 | function updateTorStatus(status) { 104 | document.getElementById('tor_status').innerHTML = status; 105 | } 106 | 107 | //open settings button 108 | document.getElementById('settings_button').addEventListener("click", function () { 109 | document.querySelector('body').classList.add('hide'); 110 | setTimeout(function () { 111 | location.href = "settings.html"; 112 | }, 300); 113 | }); 114 | 115 | //on load effect 116 | document.body.classList.add('closed'); 117 | setTimeout(function () { 118 | document.body.classList.add('open'); 119 | }, 10); 120 | 121 | //autostart tor option 122 | document.getElementById('autostart_checkbox').addEventListener("click", function () { 123 | if (this.checked) { 124 | chrome.storage.local.set({ 'autostart_tor': true }); 125 | } 126 | else { 127 | chrome.storage.local.set({ 'autostart_tor': false }); 128 | } 129 | }); 130 | 131 | //help and about us 132 | document.getElementById('help').addEventListener("click", function () { 133 | document.getElementById("first-time-dialog--overlay").classList.add("visible"); 134 | /*document.querySelector('body').classList.add('hide'); 135 | setTimeout(function () { 136 | window.location.assign("about.html"); 137 | }, 300);*/ 138 | }); 139 | 140 | //anonymity 141 | document.getElementById('anonymity').addEventListener("click", function () { 142 | document.getElementById("anonymity-help--overlay").classList.add("visible"); 143 | /*document.querySelector('body').classList.add('hide'); 144 | setTimeout(function () { 145 | window.location.assign("about.html"); 146 | }, 300);*/ 147 | }); 148 | 149 | chrome.runtime.onInstalled.addListener(function (details) { 150 | if (details.reason == "install") { 151 | //console.log("This is a first install!"); 152 | } else if (details.reason == "update") { 153 | document.getElementById("changelog").classList.add("visible"); 154 | } 155 | }); 156 | -------------------------------------------------------------------------------- /gui/js/nacl/naclterm.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 The Native Client Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | /* globals lib, NaClProcessManager, hterm */ 8 | 9 | 'use strict'; 10 | 11 | lib.rtdep('lib.f', 12 | 'hterm', 13 | 'NaClProcessManager'); 14 | 15 | /** 16 | * This class uses the NaClProcessManager to run NaCl executables within an 17 | * hterm. 18 | * 19 | * @param {Object} argv The argument object passed in from the Terminal. 20 | */ 21 | function NaClTerm(argv) { 22 | this.argv = argv; 23 | this.io = argv.io.push(); 24 | this.width = this.io.terminal_.screenSize.width; 25 | 26 | this.bufferedOutput = ''; 27 | 28 | // Have we started spawning the initial process? 29 | this.started = false; 30 | 31 | // Has the initial process finished loading? 32 | this.loaded = false; 33 | 34 | this.print = this.io.print.bind(this.io); 35 | 36 | this.processManager = new NaClProcessManager(); 37 | this.processManager.setStdoutListener(this.handleStdout_.bind(this)); 38 | this.processManager.setErrorListener(this.handleError_.bind(this)); 39 | this.processManager.setRootProgressListener( 40 | this.handleRootProgress_.bind(this)); 41 | this.processManager.setRootLoadListener(this.handleRootLoad_.bind(this)); 42 | } 43 | 44 | /** 45 | * Flag for cyan coloring in the terminal. 46 | * @const 47 | */ 48 | NaClTerm.ANSI_CYAN = '\x1b[36m'; 49 | 50 | /** 51 | * Flag for color reset in the terminal. 52 | * @const 53 | */ 54 | NaClTerm.ANSI_RESET = '\x1b[0m'; 55 | 56 | /* 57 | * Character code for Control+C in the terminal. 58 | * @type {number} 59 | */ 60 | NaClTerm.CONTROL_C = 3; 61 | 62 | /** 63 | * Add the appropriate hooks to HTerm to start the session. 64 | */ 65 | NaClTerm.prototype.run = function () { 66 | this.io.onVTKeystroke = this.onVTKeystroke_.bind(this); 67 | this.io.sendString = this.onVTKeystroke_.bind(this); 68 | this.io.onTerminalResize = this.onTerminalResize_.bind(this); 69 | 70 | this.print(NaClTerm.ANSI_CYAN); 71 | }; 72 | 73 | /** 74 | * Static initializer called from index.html. 75 | * 76 | * This constructs a new Terminal instance and instructs it to run a NaClTerm. 77 | */ 78 | NaClTerm.init = function () { 79 | var profileName = lib.f.parseQuery(document.location.search).profile; 80 | var terminal = new hterm.Terminal(profileName); 81 | terminal.decorate(document.querySelector('#terminal')); 82 | 83 | // Useful for console debugging. 84 | window.term_ = terminal; 85 | 86 | // We don't properly support the hterm bell sound, so we need to disable it. 87 | terminal.prefs_.definePreference('audible-bell-sound', ''); 88 | 89 | // TODO(bradnelson/rginda): Drop when hterm auto-detects this. 90 | // Turn on open web friendly clipboard handling if we're not running 91 | // in a chrome app. 92 | if (!window.chrome || !chrome.runtime || !chrome.runtime.id) { 93 | terminal.prefs_.definePreference('use-default-window-copy', true); 94 | terminal.prefs_.definePreference('ctrl-c-copy', true); 95 | terminal.prefs_.definePreference('ctrl-v-paste', true); 96 | } 97 | 98 | terminal.setAutoCarriageReturn(true); 99 | terminal.setCursorPosition(0, 0); 100 | terminal.setCursorVisible(true); 101 | terminal.runCommandClass(NaClTerm, document.location.hash.substr(1)); 102 | 103 | return true; 104 | }; 105 | 106 | /** 107 | * Handle stdout event from NaClProcessManager. 108 | * @private 109 | * @param {string} msg The string sent to stdout. 110 | */ 111 | NaClTerm.prototype.handleStdout_ = function (msg) { 112 | if (!this.loaded) { 113 | this.bufferedOutput += msg; 114 | } else { 115 | this.print(msg); 116 | } 117 | }; 118 | 119 | /** 120 | * Handle error event from NaCl. 121 | * @private 122 | * @param {string} cmd The name of the process with the error. 123 | * @param {string} err The error message. 124 | */ 125 | NaClTerm.prototype.handleError_ = function (cmd, err) { 126 | this.print(cmd + ': ' + err + '\n'); 127 | }; 128 | 129 | /** 130 | * Notify the user when we are done loading a URL. 131 | * @private 132 | */ 133 | NaClTerm.prototype.doneLoadingUrl_ = function () { 134 | var width = this.width; 135 | this.print('\r' + ' '.repeat(width + 1)); 136 | var message = '\rLoaded ' + this.lastUrl; 137 | if (this.lastTotal) { 138 | var kbsize = Math.round(this.lastTotal / 1024); 139 | message += ' [' + kbsize + ' KiB]'; 140 | } 141 | this.print(message.slice(0, width) + '\n'); 142 | }; 143 | 144 | /** 145 | * Handle load progress event from NaCl for the root process. 146 | * @private 147 | * @param {string} url The URL that is being loaded. 148 | * @param {boolean} lengthComputable Is our progress quantitatively measurable? 149 | * @param {number} loaded The number of bytes that have been loaded. 150 | * @param {number} total The total number of bytes to be loaded. 151 | */ 152 | NaClTerm.prototype.handleRootProgress_ = function ( 153 | url, lengthComputable, loaded, total) { 154 | if (url !== undefined) { 155 | url = url.substring(url.lastIndexOf('/') + 1); 156 | } 157 | 158 | if (this.lastUrl && this.lastUrl !== url) { 159 | this.doneLoadingUrl_(); 160 | } 161 | 162 | if (!url) { 163 | return; 164 | } 165 | 166 | this.lastUrl = url; 167 | this.lastTotal = total; 168 | 169 | var message = 'Loading ' + url; 170 | if (lengthComputable && total) { 171 | var percent = Math.round(loaded * 100 / total); 172 | var kbloaded = Math.round(loaded / 1024); 173 | var kbtotal = Math.round(total / 1024); 174 | message += ' [' + kbloaded + ' KiB/' + kbtotal + ' KiB ' + percent + '%]'; 175 | } 176 | 177 | this.print('\r' + message.slice(-this.width)); 178 | }; 179 | 180 | /** 181 | * Handle load end event from NaCl for the root process. 182 | * @private 183 | */ 184 | NaClTerm.prototype.handleRootLoad_ = function () { 185 | if (this.lastUrl) { 186 | this.doneLoadingUrl_(); 187 | } else { 188 | this.print('Loaded.\n'); 189 | } 190 | 191 | this.print(NaClTerm.ANSI_RESET); 192 | 193 | // Now that have completed loading and displaying 194 | // loading messages we output any messages from the 195 | // NaCl module that were buffered up unto this point 196 | this.loaded = true; 197 | this.print(this.bufferedOutput); 198 | this.bufferedOutput = ''; 199 | }; 200 | 201 | /** 202 | * Clean up once the root process exits. 203 | * @private 204 | * @param {number} pid The PID of the process that exited. 205 | * @param {number} status The exit code of the process. 206 | */ 207 | NaClTerm.prototype.handleExit_ = function (pid, status) { 208 | this.print(NaClTerm.ANSI_CYAN); 209 | 210 | // The root process finished. 211 | if (status === -1) { 212 | this.print('Program (' + NaClTerm.nmf + 213 | ') crashed (exit status -1)\n'); 214 | } else { 215 | this.print('Program (' + NaClTerm.nmf + ') exited ' + 216 | '(status=' + status + ')\n'); 217 | } 218 | this.argv.io.pop(); 219 | // Remove window close handler. 220 | window.onbeforeunload = function () { return null; }; 221 | if (this.argv.onExit) { 222 | this.argv.onExit(status); 223 | } 224 | }; 225 | 226 | /** 227 | * Spawn the root process (usually bash). 228 | * @private 229 | * 230 | * We delay this call until the first terminal resize event so that we start 231 | * with the correct size. 232 | */ 233 | NaClTerm.prototype.spawnRootProcess_ = function () { 234 | var self = this; 235 | var argv = NaClTerm.argv || []; 236 | var env = NaClTerm.env || []; 237 | var cwd = NaClTerm.cwd || '/'; 238 | argv = [NaClTerm.nmf].concat(argv); 239 | 240 | try { 241 | var handleSuccess = function (naclType) { 242 | self.print('Loading NaCl module.\n'); 243 | self.processManager.spawn( 244 | NaClTerm.nmf, argv, env, cwd, naclType, null, -1, function(rootPid) { 245 | // Warn if we close while still running. 246 | window.onbeforeunload = function () { 247 | return 'Processes still running!'; 248 | }; 249 | self.processManager.waitpid(rootPid, 0, self.handleExit_.bind(self)); 250 | }); 251 | }; 252 | var handleFailure = function (message) { 253 | self.print(message); 254 | }; 255 | self.processManager.checkUrlNaClManifestType( 256 | NaClTerm.nmf, handleSuccess, handleFailure); 257 | } catch (e) { 258 | self.print(e.message); 259 | } 260 | 261 | self.started = true; 262 | }; 263 | 264 | /** 265 | * Handle hterm terminal resize events. 266 | * @private 267 | * @param {number} width The width of the terminal. 268 | * @param {number} height The height of the terminal. 269 | */ 270 | NaClTerm.prototype.onTerminalResize_ = function (width, height) { 271 | this.processManager.onTerminalResize(width, height); 272 | if (!this.started) { 273 | this.spawnRootProcess_(); 274 | } 275 | }; 276 | 277 | /** 278 | * Handle hterm keystroke events. 279 | * @private 280 | * @param {string} str The characters sent by hterm. 281 | */ 282 | NaClTerm.prototype.onVTKeystroke_ = function (str) { 283 | try { 284 | if (str.charCodeAt(0) === NaClTerm.CONTROL_C) { 285 | if (this.processManager.sigint()) { 286 | this.print('\n'); 287 | return; 288 | } 289 | } 290 | this.processManager.sendStdinForeground(str); 291 | } catch (e) { 292 | this.print(e.message); 293 | } 294 | }; 295 | 296 | // CSP means that we can't kick off the initialization from the html file, 297 | // so we do it like this instead. 298 | window.onload = function () { 299 | lib.init(function () { 300 | NaClTerm.init(); 301 | }); 302 | }; 303 | -------------------------------------------------------------------------------- /gui/js/nacl/pipeserver.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 The Native Client Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | 'use strict'; 8 | 9 | /** 10 | * PipeServer manages a set of anonymous pipes. 11 | */ 12 | function PipeServer() { 13 | // Start id for anonymous pipes. 14 | this.anonymousPipeId = 1; 15 | 16 | // Status of anonymous pipes. 17 | this.anonymousPipes = {}; 18 | } 19 | 20 | /** 21 | * Pipe error. 22 | * @type {number} 23 | */ 24 | PipeServer.prototype.EPIPE = 32; 25 | 26 | /** 27 | * Handle an anonymous pipe creation call. 28 | */ 29 | PipeServer.prototype.handleMessageAPipe = function(msg, reply, src) { 30 | var id = this.anonymousPipeId++; 31 | this.anonymousPipes[id] = { 32 | readers: {}, 33 | writers: {}, 34 | readsPending: [], 35 | writesPending: [], 36 | }; 37 | var pipe = this.anonymousPipes[id]; 38 | pipe.readers[src.pid] = null; 39 | pipe.writers[src.pid] = null; 40 | reply({ 41 | pipe_id: id, 42 | }); 43 | }; 44 | 45 | /** 46 | * Handle an anonymous pipe write call. 47 | */ 48 | PipeServer.prototype.handleMessageAPipeWrite = function( 49 | msg, reply, src) { 50 | var id = msg.pipe_id; 51 | var data = msg.data; 52 | var dataInitialSize = data.byteLength; 53 | if (!(id in this.anonymousPipes && 54 | src.pid in this.anonymousPipes[id].writers)) { 55 | reply({ 56 | count: this.EPIPE, 57 | }); 58 | return; 59 | } 60 | var pipe = this.anonymousPipes[id]; 61 | while (data.byteLength > 0 && pipe.readsPending.length > 0) { 62 | var item = pipe.readsPending.shift(); 63 | var part = data.slice(0, item.count); 64 | item.reply({ 65 | data: part, 66 | }); 67 | data = data.slice(part.byteLength); 68 | } 69 | if (data.byteLength === 0) { 70 | reply({ 71 | count: dataInitialSize, 72 | }); 73 | } else { 74 | if (Object.keys(pipe.readers).length > 0) { 75 | // TODO(bradnelson): consider limiting slack on buffer here. 76 | // Using infinite slack for now as this helps git work. 77 | var replied = false; 78 | if (1) { 79 | replied = true; 80 | reply({ 81 | count: dataInitialSize, 82 | }); 83 | } 84 | pipe.writesPending.push({ 85 | dataInitialSize: dataInitialSize, 86 | data: data, 87 | reply: reply, 88 | replied: replied, 89 | pid: src.pid, 90 | }); 91 | } else { 92 | reply({ 93 | count: this.EPIPE, 94 | }); 95 | } 96 | } 97 | }; 98 | 99 | /** 100 | * Handle an anonymous pipe read call. 101 | */ 102 | PipeServer.prototype.handleMessageAPipeRead = function( 103 | msg, reply, src) { 104 | var id = msg.pipe_id; 105 | var count = msg.count; 106 | if (count === 0 || 107 | !(id in this.anonymousPipes && 108 | src.pid in this.anonymousPipes[id].readers)) { 109 | reply({ 110 | data: new ArrayBuffer(0), 111 | }); 112 | return; 113 | } 114 | var pipe = this.anonymousPipes[id]; 115 | if (pipe.writesPending.length > 0) { 116 | var item = pipe.writesPending.shift(); 117 | if (item.data.byteLength > count) { 118 | var part = item.data.slice(0, count); 119 | reply({ 120 | data: part, 121 | }); 122 | item.data = item.data.slice(part.byteLength); 123 | pipe.writesPending.unshift(item); 124 | } else { 125 | reply({ 126 | data: item.data, 127 | }); 128 | if (!item.replied) { 129 | item.reply({ 130 | count: item.dataInitialSize, 131 | }); 132 | } 133 | } 134 | } else { 135 | if (Object.keys(pipe.writers).length > 0) { 136 | pipe.readsPending.push({ 137 | count: count, 138 | reply: reply, 139 | pid: src.pid, 140 | }); 141 | } else { 142 | reply({ 143 | data: new ArrayBuffer(0), 144 | }); 145 | } 146 | } 147 | }; 148 | 149 | /** 150 | * Close handle to an anonymous pipe for a process. 151 | */ 152 | PipeServer.prototype.closeAPipe = function(pid, pipeId, writer) { 153 | if (pipeId in this.anonymousPipes) { 154 | var pipe = this.anonymousPipes[pipeId]; 155 | if (writer) { 156 | delete pipe.writers[pid]; 157 | } else { 158 | delete pipe.readers[pid]; 159 | } 160 | if (Object.keys(pipe.writers).length === 0 && 161 | Object.keys(pipe.readers).length === 0) { 162 | delete this.anonymousPipes[pipeId]; 163 | } else if (Object.keys(pipe.writers).length === 0) { 164 | for (var i = 0; i < pipe.readsPending.length; i++) { 165 | var item = pipe.readsPending[i]; 166 | item.reply({ 167 | data: new ArrayBuffer(0), 168 | }); 169 | } 170 | pipe.readsPending = []; 171 | } else if (Object.keys(pipe.readers).length === 0) { 172 | for (var i = 0; i < pipe.writesPending.length; i++) { 173 | var item = pipe.writesPending[i]; 174 | item.reply({ 175 | count: this.EPIPE, 176 | }); 177 | } 178 | pipe.writesPending = []; 179 | } 180 | } 181 | }; 182 | 183 | /** 184 | * Handle an anonymous pipe close call. 185 | */ 186 | PipeServer.prototype.handleMessageAPipeClose = function( 187 | msg, reply, src) { 188 | this.closeAPipe(src.pid, msg.pipe_id, msg.writer); 189 | reply({ 190 | result: 0, 191 | }); 192 | }; 193 | 194 | 195 | /** 196 | * Add spawned pipe entries. 197 | * @params {Object} Dictionary of environment variables passed to process. 198 | */ 199 | PipeServer.prototype.addProcessPipes = function(pid, params) { 200 | var fdCount = 0; 201 | for (;;fdCount++) { 202 | var entry = 'NACL_SPAWN_FD_SETUP_' + fdCount; 203 | if (!(entry in params)) 204 | break; 205 | // Pull out a a pipe spec of the form: 206 | // pipe::: 207 | var m = params[entry].match(/pipe:([0-9]+):([0-9]+):([0-9]+)/); 208 | if (m) { 209 | var fd = parseInt(m[1]); 210 | var id = parseInt(m[2]); 211 | var isWriter = parseInt(m[3]); 212 | if (id in this.anonymousPipes) { 213 | var pipe = this.anonymousPipes[id]; 214 | if (isWriter) { 215 | pipe.writers[pid] = null; 216 | } else { 217 | pipe.readers[pid] = null; 218 | } 219 | } 220 | } 221 | } 222 | }; 223 | 224 | 225 | /** 226 | * Add spawned pipe entries. 227 | * @params {Object} Dictionary of environment variables passed to process. 228 | */ 229 | PipeServer.prototype.deleteProcess = function(pid) { 230 | for (var pipeId in this.anonymousPipes) { 231 | var pipe = this.anonymousPipes[pipeId]; 232 | if (pid in pipe.readers) { 233 | this.closeAPipe(pid, pipeId, false); 234 | } 235 | if (pid in pipe.writers) { 236 | this.closeAPipe(pid, pipeId, true); 237 | } 238 | } 239 | }; 240 | -------------------------------------------------------------------------------- /gui/js/restart.js: -------------------------------------------------------------------------------- 1 | //get theme 2 | chrome.storage.local.get('theme', function (values) { 3 | if (values.theme == 'dark') { 4 | document.body.classList.add('dark'); 5 | } 6 | }); 7 | //simulate page refresh 8 | setTimeout(function () { 9 | document.querySelector('body').classList.add('hide'); 10 | }, 1200); 11 | setTimeout(function () { 12 | location.href = "main.html"; 13 | }, 1500); -------------------------------------------------------------------------------- /gui/js/settings.js: -------------------------------------------------------------------------------- 1 | //this object will be passed to chrome.storage.set 2 | var settings = {}; 3 | var to_be_saved = { 4 | configure_proxy: false, 5 | accessible_ports: false 6 | }; 7 | var error_count = 0; 8 | 9 | //settings key value pair 10 | var default_settings = { 11 | theme: "dark", 12 | proxy_type: "none", 13 | proxy_address: "none", 14 | proxy_port: "none", 15 | autostart_tor: false, 16 | accessible_ports: "all", 17 | tor_port: 9999, 18 | adv_opt:"none" 19 | }; 20 | 21 | document.addEventListener('DOMContentLoaded', function () { 22 | chrome.storage.local.get(default_settings, function (items) { 23 | //console.log(items); 24 | populate_gui(items); 25 | }); 26 | }); 27 | 28 | //populate_gui 29 | function populate_gui(items) { 30 | //set theme 31 | if (items.theme == 'dark') { 32 | document.body.classList.add('dark'); 33 | document.getElementById('dt').click(); 34 | } 35 | //set proxy if not none 36 | if (items.proxy_type != "none") { 37 | document.getElementById('proxy').click(); 38 | to_be_saved["configure_proxy"] = true; 39 | document.getElementById('proxy_text').innerHTML = items.proxy_type; 40 | document.getElementById('proxy__address').value = items.proxy_address; 41 | document.getElementById('proxy__port').value = items.proxy_port; 42 | } 43 | //set autostart toggle 44 | if (items.autostart_tor) { 45 | document.getElementById('autostart_tor').click(); 46 | } 47 | //accessible ports 48 | if (items.accessible_ports != "all") { 49 | document.getElementById('acsport').click(); 50 | to_be_saved["accessible_ports"] = true; 51 | document.getElementById('acsport__port').value = items.accessible_ports; 52 | } 53 | // advance options 54 | if (items.adv_opt != "none") { 55 | document.getElementById("adv_opt").click(); 56 | to_be_saved["adv_opt"] = true; 57 | document.getElementById("adv_opt_text").value = items.adv_opt; 58 | } 59 | //set tor port 60 | document.getElementById('cport__port').value = items.tor_port; 61 | } 62 | 63 | //go back to home page button 64 | document.getElementById('back_button').addEventListener("click", function () { 65 | save_settings(); 66 | if (error_count == 0) { 67 | document.querySelector('body').classList.add('hide'); 68 | setTimeout(function () { 69 | location.href = "main.html"; 70 | }, 300); 71 | } 72 | }); 73 | //on load effect 74 | document.body.classList.add('closed'); 75 | setTimeout(function () { 76 | document.body.classList.add('open'); 77 | }, 10); 78 | //proxy state change event 79 | document.getElementById('proxy').addEventListener("click", function () { 80 | var chk = this.checked; 81 | if (chk) { 82 | document.getElementById('proxy_card').classList.add('expand'); 83 | document.getElementById('proxy_card').classList.add('proxycard'); 84 | to_be_saved["configure_proxy"] = true; 85 | } 86 | else { 87 | document.getElementById('proxy_card').classList.remove('expand'); 88 | document.getElementById('proxy_card').classList.remove('proxycard'); 89 | to_be_saved["configure_proxy"] = false; 90 | } 91 | }); 92 | //proxy text click 93 | document.getElementById('proxy_text_outer').addEventListener("click", function (e) { 94 | document.getElementById('proxy-inner__dropdown').click(); 95 | }); 96 | //proxy dropdown select 97 | var lasttarget_proxy; 98 | document.getElementById('select_proxy').addEventListener("click", function (e) { 99 | if (lasttarget_proxy) { 100 | lasttarget_proxy.classList.remove("selected"); 101 | } 102 | //change the target element now 103 | lasttarget_proxy = e.target; 104 | lasttarget_proxy.classList.add("selected"); 105 | //set text of drop down 106 | document.getElementById('proxy_text').innerHTML = e.target.getAttribute("data-text"); 107 | }); 108 | //accessible port 109 | document.getElementById('acsport').addEventListener("click", function () { 110 | var chk = this.checked; 111 | if (chk) { 112 | document.getElementById('acsport_card').classList.add('expand'); 113 | document.getElementById('acsport_card').classList.add('acsportcard'); 114 | to_be_saved["accessible_ports"] = true; 115 | } 116 | else { 117 | document.getElementById('acsport_card').classList.remove('expand'); 118 | document.getElementById('acsport_card').classList.remove('acsportcard'); 119 | to_be_saved["accessible_ports"] = false; 120 | } 121 | }); 122 | 123 | //advance options 124 | document.getElementById('adv_opt').addEventListener("click", function () { 125 | var chk = this.checked; 126 | if (chk) { 127 | document.getElementById('adv_opt_card').classList.add('expand'); 128 | document.getElementById('adv_opt_card').classList.add('advoptcard'); 129 | to_be_saved["adv_opt"] = true; 130 | } 131 | else { 132 | document.getElementById('adv_opt_card').classList.remove('expand'); 133 | document.getElementById('adv_opt_card').classList.remove('advoptcard'); 134 | to_be_saved["adv_opt"] = false; 135 | } 136 | }); 137 | //autostart_tor 138 | document.getElementById('autostart_tor').addEventListener("click", function () { 139 | if (this.checked) { 140 | settings['autostart_tor'] = true; 141 | } 142 | else { 143 | settings['autostart_tor'] = false; 144 | } 145 | }); 146 | //theme switch 147 | document.getElementById('dt').addEventListener("click", function () { 148 | if (this.checked) { 149 | document.body.classList.add('dark'); 150 | settings["theme"] = 'dark'; 151 | } 152 | else { 153 | document.body.classList.remove('dark'); 154 | settings["theme"] = 'light'; 155 | } 156 | }); 157 | //defaults settings 158 | document.getElementById('defaults').addEventListener("click", function () { 159 | chrome.storage.local.set(default_settings, function () { 160 | document.querySelector('body').classList.add('hide'); 161 | setTimeout(function () { 162 | location.href = "main.html"; 163 | }, 300); 164 | }); 165 | }); 166 | //bridges state change event 167 | //document.getElementById('bridges').addEventListener("click", function () { 168 | // var chk = this.checked; 169 | // if (chk) { 170 | // document.getElementById('bridges_card').classList.add('expand'); 171 | // document.getElementById('bridges_card').classList.add('bridgescard'); 172 | // } 173 | // else { 174 | // document.getElementById('bridges_card').classList.remove('expand'); 175 | // document.getElementById('bridges_card').classList.remove('bridgescard'); 176 | // } 177 | //}); 178 | ////bridge dropdown select 179 | //var lasttarget_bridge; 180 | //document.getElementById('select_bridge').addEventListener("click", function (e) { 181 | // if (lasttarget_bridge) { 182 | // lasttarget_bridge.classList.remove("selected"); 183 | // } 184 | // //change the target element now 185 | // lasttarget_bridge = e.target; 186 | // lasttarget_bridge.classList.add("selected"); 187 | // //set text of drop down 188 | // document.getElementById('bridges_text').innerHTML = e.target.getAttribute("data-text"); 189 | //}); 190 | ////radio button group events 191 | //document.getElementById('bridges-custom__radio').addEventListener("click", function () { 192 | // if (this.checked) { 193 | // document.getElementById('bridges-custom__text').disabled = false; 194 | // document.getElementById('bridges-inner__dropdown').disabled = true; 195 | // } 196 | //}); 197 | //document.getElementById('bridges-transport__radio').addEventListener("click", function () { 198 | // if (this.checked) { 199 | // document.getElementById('bridges-custom__text').disabled = true; 200 | // document.getElementById('bridges-inner__dropdown').disabled = false; 201 | // } 202 | //}); 203 | 204 | 205 | function raise_error(error, id) { 206 | error_count++; 207 | //multiple errors 208 | if (error_count > 1) { 209 | document.getElementById("error_text").innerHTML = "Multiple Errors Occurred"; 210 | } 211 | else { 212 | document.getElementById("error_text").innerHTML = error; 213 | } 214 | //show error dialog 215 | if (!document.querySelector(".error-text-container").classList.contains("visible")) { 216 | document.querySelector(".error-text-container").classList.add("visible"); 217 | } 218 | 219 | //close error dialog 220 | document.querySelector('.error-text-button').addEventListener("click", function () { 221 | document.querySelector(".error-text-container").classList.remove("visible"); 222 | //remove all dots 223 | var element = document.querySelectorAll('.error-indicator'); 224 | Array.prototype.forEach.call(element, function (node) { 225 | node.parentNode.removeChild(node); 226 | }); 227 | }); 228 | 229 | //error dot 230 | var ref_el = document.getElementById(id); 231 | var error_dot = document.createElement("div"); 232 | error_dot.classList.add("error-indicator"); 233 | error_dot.style.left = ref_el.offsetLeft + 'px'; 234 | error_dot.style.top = ref_el.offsetTop + 'px'; 235 | insertAfter(error_dot, ref_el); 236 | 237 | console.log(error + " on id " + id); 238 | } 239 | 240 | //insertafter helper func 241 | function insertAfter(newNode, referenceNode) { 242 | referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling); 243 | } 244 | 245 | function save_settings() { 246 | //reset error count 247 | error_count = 0; 248 | // ------ tor port ------------ 249 | var tor_port = document.getElementById('cport__port').value; 250 | if (1000 < tor_port && tor_port <= 65535) { 251 | settings["tor_port"] = tor_port; 252 | } else { 253 | settings["tor_port"] = 9999; 254 | raise_error("invalid tor port, please enter a number between 1000-65535", 'cport__port'); 255 | } 256 | 257 | // ---------- configure proxy ------------ 258 | if (to_be_saved["configure_proxy"]) { 259 | var proxy_type = document.getElementById('proxy_text').innerHTML; 260 | console.log(proxy_type); 261 | if (proxy_type == "Proxy Type") { 262 | raise_error("please select a proxy type or disable it", 'proxy_text'); 263 | } else { 264 | var proxy_port = document.getElementById('proxy__port').value; 265 | if (0 < proxy_port && proxy_port <= 65535 && document.getElementById('proxy__address').value != "") { 266 | settings["proxy_type"] = proxy_type; 267 | settings["proxy_address"] = document.getElementById('proxy__address').value; 268 | settings["proxy_port"] = proxy_port; 269 | } else { 270 | settings["proxy_type"] = "none"; 271 | raise_error("invalid proxy host or port no", 'proxy_text'); 272 | } 273 | } 274 | } else { 275 | settings["proxy_type"] = "none"; 276 | } 277 | 278 | // ---------- accessible ports ----------- 279 | if (to_be_saved["accessible_ports"]) { 280 | var accessible_ports = document.getElementById('acsport__port').value; 281 | var reachable_addresses; 282 | var error = false; 283 | var ports_list = accessible_ports.split(','); 284 | for (var port = 0; port < ports_list.length; port++) { 285 | if (!(0 < ports_list[port] && ports_list[port] < 65535)) { 286 | raise_error("invalid port list entered, please enter number(s) between 0-65535 separated by ,", "acsport__port"); 287 | error = true; 288 | break; 289 | } 290 | console.log(ports_list[port]); 291 | } 292 | if (!error) { 293 | reachable_addresses = "*:" + accessible_ports.replace(/,/g, ",*:"); 294 | console.log(ports_list); 295 | console.log(reachable_addresses); 296 | settings["accessible_ports"] = accessible_ports; 297 | settings["reachable_addresses"] = reachable_addresses; 298 | } 299 | } else { 300 | settings["reachable_addresses"] = "all"; 301 | settings["accessible_ports"] = "all"; 302 | } 303 | 304 | // ---------- advance options ----------- 305 | if (to_be_saved["adv_opt"]) { 306 | var adv_opt = document.getElementById('adv_opt_text').value; 307 | var error = false; 308 | if (adv_opt == "") { 309 | raise_error("advance option cannot be empty, please disable it or give the options", "adv_opt_text"); 310 | error = true; 311 | } 312 | if (!error) { 313 | settings["adv_opt"] = adv_opt; 314 | } 315 | } else { 316 | settings["adv_opt"] = "none"; 317 | } 318 | //---------------saving settings---------- 319 | if (error_count == 0) { 320 | chrome.storage.local.set(settings, function () { 321 | //console.log(to_be_saved); 322 | //console.log(settings); 323 | }); 324 | } 325 | } 326 | //save settings 327 | document.getElementById('save').addEventListener("click", save_settings); 328 | -------------------------------------------------------------------------------- /gui/js/tor.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 The Native Client Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 'use strict'; 7 | var saved_settings; 8 | 9 | function set_settings(settings) { 10 | saved_settings = settings; 11 | } 12 | NaClTerm.nmf = '../tor_pnacl.nmf'; 13 | 14 | /* check whether another instance of this app is running 15 | #TODO(dt) check if default port is occupied 16 | #TODO(dt) check if(allowed) another tor process is running outside chrome. */ 17 | function anotherTorRunning() { 18 | // since chrome 34 multiple windows in apps are not allowed by default 19 | // thus returning false without any checking, (for now) 20 | // return NaClTerm.started; 21 | return false; 22 | } 23 | 24 | function populateArgv() { 25 | //tor socks proxy port 26 | NaClTerm.argv = ['--SOCKSPort', saved_settings.tor_port]; 27 | NaClTerm.argv = NaClTerm.argv.concat(['-f', '/mnt/http/tor/conf']); 28 | // geoip files location 29 | //NaClTerm.argv = NaClTerm.argv.concat(['GeoIPFile', '/mnt/http/geoip']); 30 | //tor creates relays/bridges through these addresses only 31 | //accessible ports 32 | if (saved_settings.accessible_ports != "all") { 33 | NaClTerm.argv = NaClTerm.argv.concat(['ReachableAddresses', saved_settings.reachable_addresses]); 34 | } 35 | // proxy settings 36 | if (saved_settings.proxy_type != "none"){ 37 | var proxy_type = saved_settings.proxy_type; 38 | //if(proxy_type == "http") proxy_type = "HTTPProxy"; 39 | if(proxy_type == "http/https") proxy_type = "HTTPSProxy"; 40 | if(proxy_type == "socks4") proxy_type = "Socks4Proxy"; 41 | if(proxy_type == "socks5") proxy_type = "Socks5Proxy"; 42 | NaClTerm.argv = NaClTerm.argv.concat([proxy_type, saved_settings.proxy_address + ":" + saved_settings.proxy_port]); 43 | } 44 | 45 | if (saved_settings.adv_opt != "none") { 46 | NaClTerm.argv = NaClTerm.argv.concat(saved_settings.adv_opt.trim().split(" ")); 47 | } 48 | 49 | } 50 | 51 | function runTor() { 52 | if (!anotherTorRunning()) { 53 | populateArgv(); 54 | NaClTerm.init(); 55 | } 56 | } 57 | 58 | window.onload = function () { 59 | /*lib.init(function() { 60 | runTor(); 61 | });*/ 62 | }; 63 | -------------------------------------------------------------------------------- /gui/main.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
Kronymous 0.2.9
27 |
28 |
29 |
30 | Tor Proxy is not running. 31 | 36 | 41 |
42 |
43 | Change Settings[proxy, tor port, etc], please note that clicking this will stop the proxy before opening settings. 44 |
45 |
46 |
47 | 51 | 55 | 60 | 61 | 64 |
65 |
66 | 67 |
68 |
69 |
70 |

71 | Hi there! 72 |

73 |
74 |
75 |

76 | Thanks for installing Kronymous v0.2.9, with this app you can access internet via Tor Network. [visit 77 | any blocked 78 | websites, browse anonymously etc]
79 | Kronymous does not work on chrome 55-57
80 | Once started, tor socks proxy will be available on your system which can be accessed at 81 | 127.0.0.1:9999
82 | This app is open sourced, for details click here.
84 | Earlier this app's name was KroTor, it has been changed to Kronymous in order comply with Tor trademark rules.
85 | If you face any issues, kindly mention these issues in forum along with your device details.
86 |

87 |
88 |

89 | Instructions
90 | In order to use Tor Socks proxy created by this app, please configure any extension/system 91 | settings/apps accordingly.
92 | Following instructions are only applicable for Google Chrome/Chrome OS.
93 | Chrome Apps (such as this one) cannot set the proxy settings in the Chrome browser, only extensions can 94 | do so.As an example, one can use extension ProxySwitchyOmega(open sourced)
97 | Setup 98 | This is one time process.
99 | Install ProxySwitchyOmega or any proxy extension.
102 | Create a proxy profile named Kronymous with following settings.
103 | protocol : socks5
104 | server : 127.0.0.1
105 | port : 9999 (or the tor port you defined in settings)
106 | Using it
107 | 1. Run Kronymous, click on Start Tor, make sure you see "Bootstrapped 100%" in terminal window(app's 108 | middle section with black background)
109 | 2. Enable Kronymous proxy in SwitchyOmega's dropdown menu(click its icon i.e. black O on right side of 110 | address bar) 111 |

112 |
113 |

114 | To verify that you are on Tor network, please visit : https://check.torproject.org 116 |

117 |
118 |

119 | If it takes too long to connect, try enabling/modifying accessible ports in settings. 120 |

121 |
122 |

123 | If you face any issue, please ask on the 124 | support page. 125 |

126 |
127 |

128 | Advance options.
129 | If you want set exitnodes, provide username/password for (network)proxy etc, you can do so by enabling 130 | advance options in settings and provide them in format OPTIONS values
131 | As an example:
132 | For exitnodes: ExitNodes node,node,…
133 | For username/password for (network)proxy: HTTPSProxyAuthenticator username:password (this is stored in 134 | cleartext in your browser locally.
135 | You can give multiple options, make sure there is a space between them i.e. OPTIONS1 values1 OPTIONS2 136 | values2 ...
137 | For more details see Tor 138 | manual 139 |

140 |
141 |

142 | This app lacks the functionality to configure custom bridges, pluggable transports. There is plan to 143 | implement it but I can't give ETA. 144 |

145 |
146 |

147 | This binary running in this app was ported and compiled from official Tor Codebase
148 | Please note that this Chrome App is not a substitute of Tor Browser 150 | Bundle
151 | This app is produced independently from the Tor® anonymity software and carries no guarantee from The Tor Project about quality, suitability or anything else.
152 | There is plan to get it merged in official Tor Project. 153 |

154 |
155 |

156 | Changelog
157 | v0.2.9
158 | Kronymous started working in chrome 58, updated the GUI to reflect that.
159 | v0.2.7 - v0.2.8
160 | Added messages saying kronymous was not supported on chrome 55 and above.
161 | v 0.2.6
162 | Updated tor to latest version 0.2.8.9
163 | Kronymous now targets pnacl.
164 | These two steps should weed out most of errors but all issues may not be resolved. Future version will handle remaining errors.
165 | Minor UI fixes
166 | v 0.2.2 - v 0.2.5
167 | Internal test versions.
168 | v 0.2.1
169 | Fixed big related to exitnode, now setting exitnode should work fine.
170 | v 0.2.0
171 | Changed name from krotor to kronymous to comply with tor trademark rules.
172 | v 0.1.9
173 | Fixed argv parsing bug
174 | v 0.1.8
175 | Added functionality to specify advance settings such as exitnode, proxy authentication etc.
176 | Recompiled tor binary with newer toolchain
177 | 178 |

179 |
180 |
181 | 184 |
185 |
186 |
187 | 188 | 189 |
190 |
191 |
192 |
193 | Instructions to check if you are accessing internet via Tor Network and browsing anonymously. 194 |
195 |
196 |
197 | Before proceeding make sure that you have configured everything correctly, click help button to see 198 | the instructions. 199 |
200 |

201 | To verify that you are on Tor network, please visit : https://check.torproject.org 203 |

204 |
205 |

206 | To check if your local ip (your unique identifier on internet) is being leaked or not please visit : https://ipleak.net 208 |
To avoid webrtc leaks follow instructions given at https://ipleak.net/#webrtcleak
210 | Note to window users:
211 | Window's system proxy settings are unreliable and on top of that DNS queries are are 213 | also unreliable on it.
214 |

215 |
216 |

217 | As a general rule:
218 | Make sure you use Kronymous only with those applications/operating systems which have support for 219 | socks4/socks5 proxy support (remote dns resolution). Example: for Google Chrome you can use switchyomega 220 | extension. 221 |

222 |
223 |

224 | Remember anonymity and privacy are two different things. 225 |

226 |
227 |

228 | Note from developer ( Deepankar 229 | Tyagi ):
230 | These are just my opinions and are not endorsed by anyone.
231 | Two main factors are responsible for being anonymous :
232 | 1. The traffic coming to and from the user's system must not be traceable back to user's system.(The way 233 | in which the user's system connects to outside world must not lead to disclosure of user's 234 | identity)
235 | 2. The action of user must not lead to disclosure of user's identity.
236 | Kronymous (Tor Network) takes care of first part and user is responsible for second part.
237 | IMHO, no one can guarantee a 100% anonymity or for that matter I definitely cannot(because of second 238 | part), that being said it is highly likely that user will remain anonymous without any extra steps other 239 | than setting Kronymous correctly.
240 | To increase the chances of being anonymous on chrome, run chrome in incognito mode with all the 241 | extensions(except proxy extension) disabled, password auto fetching disabled and avoid using 242 | applications/websites which do not honor proxy/privacy settings.(you can disable the JavaScript also) 243 | For more details visit: 244 | https://www.torproject.org/download/download#warning 245 |
246 | The developer takes no responsibility for any of user's actions or user's actions' consequences. 247 | This app is provided as is without any guarantees. 248 |

249 |
250 |
251 | 254 |
255 |
256 |
257 | 258 | 259 |
260 |
261 |
262 |
263 | Kronymous updated 264 |
265 |
266 |
267 |

268 | Changelog 269 |


270 | v0.2.9
271 | Kronymous started working in chrome 58, updated the GUI to reflect that.
272 | v0.2.7 - v0.2.8
273 | added messages saying kronymous was not supported on chrome 55 and above.
274 | v 0.2.6
275 | Updated tor to latest version 0.2.8.9
276 | Kronymous now targets pnacl.
277 | These two steps should weed out most of errors but all issues may not be resolved. Future version will handle remaining errors.
278 | Minor UI fixes
279 | v 0.2.2 - v 0.2.5
280 | Internal test versions.
281 | v 0.2.1
282 | Fixed big related to exitnode, now setting exitnode should work fine.
283 | v 0.2.0
284 | Changed name from krotor to kronymous to comply with tor trademark rules.
285 | v 0.1.9
286 | Fixed argv parsing bug
287 | v 0.1.8
288 | Added functionality to specify advance settings such as exitnode, proxy authentication etc.
289 | Recompiled tor binary with newer toolchain
290 | 291 |

292 |
293 |
294 | 297 |
298 |
299 |
300 |
301 |
302 | 303 |
304 | 305 | 306 | 307 | -------------------------------------------------------------------------------- /gui/restart.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 |

Restarting Tor Proxy

18 |
19 |
20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /gui/settings.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 24 |
25 | Save your current settings and go back. 26 |
27 |
Kronymous - Settings
28 | 32 | 36 |
37 | Save your current settings 38 |
39 |
40 |
41 |
42 | Error 43 |
44 |
45 |
46 |
47 |
48 | 95 |
96 |
97 |

98 | Configure Proxy 99 | 103 |

104 |
105 |
106 | Does this device need to use a proxy to access the internet? 107 |
108 |
109 |
110 | 113 | 117 |
118 |
    120 |
  • Socks 4
  • 121 |
  • Socks 5
  • 122 | 123 |
  • HTTP/HTTPS
  • 124 |
125 |
126 | 127 | 128 |
129 |
130 | 131 | 132 | Input is not a number! 133 |
134 | 142 |
143 |
144 |
145 |
146 |

147 | Accessible Ports 148 | 152 |

153 |
154 |
155 | Does this computer goes through a firewall that only allows connections to certain ports ? 156 |
157 |
158 |
159 | 160 | 161 |
162 |
163 |
164 | 165 |
166 |
167 |

168 | Autostart Tor Proxy 169 | 173 |

174 |
175 |
176 | Start tor proxy as soon as you start this app,(the app will NOT run at system or chrome startup) 177 |
178 |
179 |
180 |
181 |

182 | Use Dark Theme 183 | 187 |

188 |
189 |
190 | Use a dark theme(default), uncheck this to switch to light theme. 191 |
192 |
193 |
194 |
195 |

196 | Tor (Socks) Proxy Port 197 |

198 |
199 |
200 | Change the default port on which tor socks proxy will run. 201 | Enter a number between 1000-65535, default is 9999 202 |
203 |
204 |
205 | 207 | Input is not a number! 208 |
209 |
210 |
211 |
212 |
213 |

214 | Advance Options 215 | 219 |

220 |
221 |
222 | exit node, proxy username pass etc. 223 |
224 |
225 |
226 | 227 | 228 |
229 |
230 |
231 |
232 | 233 | 234 | 235 | -------------------------------------------------------------------------------- /gui/tor/conf: -------------------------------------------------------------------------------- 1 | #DataDirectory /mnt/http/tor/data-dir 2 | GeoIPFile /mnt/http/tor/geoip-files/geoip 3 | GeoIPv6File /mnt/http/tor/geoip-files/geoip6 4 | HiddenServiceStatistics 0 5 | ClientOnly 1 6 | SafeLogging 1 7 | ConnLimit 10000 8 | -------------------------------------------------------------------------------- /kronymous_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/kronymous_128.png -------------------------------------------------------------------------------- /kronymous_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/kronymous_16.png -------------------------------------------------------------------------------- /kronymous_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/kronymous_48.png -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Kronymous - Access internet via Tor Network", 3 | "short_name": "Kronymous", 4 | "description": "", 5 | "version": "0.2.9", 6 | "manifest_version": 2, 7 | "minimum_chrome_version": "36", 8 | "icons": { 9 | "16": "kronymous_16.png", 10 | "48": "kronymous_48.png", 11 | "128": "kronymous_128.png" 12 | }, 13 | "offline_enabled": false, 14 | "permissions": [ 15 | "clipboardWrite", 16 | "storage", 17 | "unlimitedStorage", 18 | { 19 | "socket": [ 20 | "tcp-listen:*:*", 21 | "tcp-connect", 22 | "resolve-host" 23 | ] 24 | } 25 | ], 26 | "app": { 27 | "background": { 28 | "scripts": [ 29 | "background.js" 30 | ] 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /pnacl/tor.pexe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codebuff/kronymous/70f9ea1ea64d046eb8aa0ccd80730d7db4cfa7ec/pnacl/tor.pexe -------------------------------------------------------------------------------- /todo.md: -------------------------------------------------------------------------------- 1 | - adding custom bridges support 2 | - running app in background 3 | -------------------------------------------------------------------------------- /tor_pnacl.nmf: -------------------------------------------------------------------------------- 1 | { 2 | "program": { 3 | "portable": { 4 | "pnacl-translate": { 5 | "url": "pnacl/tor.pexe" 6 | } 7 | } 8 | } 9 | } 10 | --------------------------------------------------------------------------------