├── docker ├── bare-server │ ├── .dockerignore │ ├── Dockerfile │ ├── package.json │ ├── index.js │ └── package-lock.json ├── caddy │ └── Caddyfile └── docker-compose.yaml ├── images ├── logo.png ├── banner.ai ├── banner.png ├── favicon.ico ├── apple-icon-180.png ├── manifest-icon-192.maskable.png ├── manifest-icon-512.maskable.png ├── logo.svg └── banner.svg ├── replit.nix ├── .replit ├── static ├── public │ ├── favicon.ico │ ├── assets │ │ ├── icons │ │ │ ├── apple-icon-180.png │ │ │ ├── manifest-icon-192.maskable.png │ │ │ └── manifest-icon-512.maskable.png │ │ ├── screenshots │ │ │ └── screenshot.png │ │ ├── announcement.json │ │ └── manifest.json │ ├── uv.js │ ├── js │ │ ├── uv │ │ │ ├── uv.config.js │ │ │ ├── uv.sw.js │ │ │ └── uv.handler.js │ │ ├── register-uv.js │ │ ├── sw.js │ │ └── index.js │ ├── pages │ │ ├── about.html │ │ ├── tos.html │ │ └── privacy-policy.html │ ├── arc-sw.js │ ├── index.html │ └── index.css ├── tailwind.config.js ├── src │ └── input.css └── construction │ ├── index.html │ └── index.css ├── render.yaml ├── app.json ├── package.json ├── README.md ├── src └── index.js └── LICENSE /docker/bare-server/.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whos-evan/elixir/HEAD/images/logo.png -------------------------------------------------------------------------------- /replit.nix: -------------------------------------------------------------------------------- 1 | { pkgs }: { 2 | deps = [ 3 | pkgs.nodejs-16_x 4 | ]; 5 | } -------------------------------------------------------------------------------- /.replit: -------------------------------------------------------------------------------- 1 | entrypoint = "README.md" 2 | language = "nodejs" 3 | run = ["npm", "start"] -------------------------------------------------------------------------------- /images/banner.ai: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whos-evan/elixir/HEAD/images/banner.ai -------------------------------------------------------------------------------- /images/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whos-evan/elixir/HEAD/images/banner.png -------------------------------------------------------------------------------- /images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whos-evan/elixir/HEAD/images/favicon.ico -------------------------------------------------------------------------------- /images/apple-icon-180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whos-evan/elixir/HEAD/images/apple-icon-180.png -------------------------------------------------------------------------------- /static/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whos-evan/elixir/HEAD/static/public/favicon.ico -------------------------------------------------------------------------------- /images/manifest-icon-192.maskable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whos-evan/elixir/HEAD/images/manifest-icon-192.maskable.png -------------------------------------------------------------------------------- /images/manifest-icon-512.maskable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whos-evan/elixir/HEAD/images/manifest-icon-512.maskable.png -------------------------------------------------------------------------------- /static/public/assets/icons/apple-icon-180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whos-evan/elixir/HEAD/static/public/assets/icons/apple-icon-180.png -------------------------------------------------------------------------------- /static/public/assets/screenshots/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whos-evan/elixir/HEAD/static/public/assets/screenshots/screenshot.png -------------------------------------------------------------------------------- /docker/caddy/Caddyfile: -------------------------------------------------------------------------------- 1 | CHANGE.TO.YOUR.DOMAIN { 2 | root * /static 3 | reverse_proxy /bare/* bare-server:8080 4 | file_server 5 | } -------------------------------------------------------------------------------- /render.yaml: -------------------------------------------------------------------------------- 1 | services: 2 | - type: web 3 | name: elixir 4 | env: node 5 | buildCommand: npm install 6 | startCommand: npm start 7 | -------------------------------------------------------------------------------- /static/public/assets/icons/manifest-icon-192.maskable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whos-evan/elixir/HEAD/static/public/assets/icons/manifest-icon-192.maskable.png -------------------------------------------------------------------------------- /static/public/assets/icons/manifest-icon-512.maskable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whos-evan/elixir/HEAD/static/public/assets/icons/manifest-icon-512.maskable.png -------------------------------------------------------------------------------- /static/public/uv.js: -------------------------------------------------------------------------------- 1 | importScripts('/js/uv/uv.bundle.js'); 2 | importScripts('/js/uv/uv.config.js'); 3 | importScripts('/js/uv/uv.sw.js'); 4 | 5 | const sw = new UVServiceWorker(); 6 | 7 | self.addEventListener('fetch', (event) => event.respondWith(sw.fetch(event))); 8 | -------------------------------------------------------------------------------- /docker/bare-server/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:current-slim 2 | 3 | WORKDIR /usr/src/app 4 | COPY package*.json ./ 5 | 6 | RUN npm install 7 | RUN npm ci --only=production --omit=dev 8 | 9 | COPY . . 10 | 11 | EXPOSE 8080 12 | 13 | CMD [ "node", "index.js" ] 14 | -------------------------------------------------------------------------------- /static/public/js/uv/uv.config.js: -------------------------------------------------------------------------------- 1 | self.__uv$config = { 2 | prefix: '/service/', 3 | bare: '/bare/', 4 | encodeUrl: Ultraviolet.codec.xor.encode, 5 | decodeUrl: Ultraviolet.codec.xor.decode, 6 | handler: '/js/uv/uv.handler.js', 7 | bundle: '/js/uv/uv.bundle.js', 8 | config: '/js/uv/uv.config.js', 9 | sw: '/js/uv/uv.sw.js', 10 | }; 11 | -------------------------------------------------------------------------------- /app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Elixir Proxy", 3 | "description": "Ultraviolet proxy ultiziing Ultraviolet and bare-server", 4 | "repository": "https://github.com/whos-evan/elixir", 5 | "logo": "https://github.com/whos-evan/elixir/blob/c4fbe8e87fb0567e041db20391da36e1b64b0151/images/favicon.ico", 6 | "keywords": ["node", "elixir", "ultraviolet", "bare-server"] 7 | } -------------------------------------------------------------------------------- /static/public/js/register-uv.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /** 3 | * Global util 4 | * Used in index.html 5 | */ 6 | async function registerSW() { 7 | if (!navigator.serviceWorker) 8 | throw new Error("Your browser doesn't support service workers."); 9 | 10 | await navigator.serviceWorker.register("../js/uv.js", { 11 | scope: __uv$config.prefix, 12 | }); 13 | } 14 | -------------------------------------------------------------------------------- /docker/bare-server/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bare-server", 3 | "version": "1.2.2", 4 | "description": "bare-server-node in docker", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "node index.js" 8 | }, 9 | "keywords": [ 10 | "bare-server-node" 11 | ], 12 | "author": "", 13 | "license": "ISC", 14 | "type": "module", 15 | "dependencies": { 16 | "@tomphttp/bare-server-node": "^1.2.2" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /static/public/js/sw.js: -------------------------------------------------------------------------------- 1 | var cacheName = 'elixir'; 2 | var filesToCache = [ 3 | '/js/sw.js' 4 | ]; 5 | 6 | self.addEventListener('install', function(e) { 7 | e.waitUntil( 8 | caches.open(cacheName).then(function(cache) { 9 | return cache.addAll(filesToCache); 10 | }) 11 | ); 12 | self.skipWaiting(); 13 | }); 14 | 15 | self.addEventListener('fetch', function(e) { 16 | e.respondWith( 17 | caches.match(e.request).then(function(response) { 18 | return response || fetch(e.request); 19 | }) 20 | ); 21 | }); -------------------------------------------------------------------------------- /static/tailwind.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | content: { 3 | relative: true, 4 | files: ['./public/index.html', './public/about.html'], 5 | // files: ['./construction/index.html'] 6 | }, 7 | theme: { 8 | extend: { 9 | darkMode: true, 10 | fontFamily: { 11 | 'Inter': ['Inter', 'sans-serif'] 12 | }, 13 | colors: { 14 | 'primary': '#0d2c4c', 15 | 'secondary': '#d36135', 16 | 'jet-black': '#0c0c0c', 17 | 'ghost-white': '#f4f4f9' 18 | } 19 | }, 20 | }, 21 | plugins: [ 22 | ], 23 | } 24 | -------------------------------------------------------------------------------- /docker/docker-compose.yaml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | services: 3 | caddy: 4 | image: caddy:latest 5 | restart: unless-stopped 6 | command: caddy run --config /etc/caddy/Caddyfile 7 | ports: 8 | - "80:80" 9 | - "443:443" 10 | volumes: 11 | - ./caddy/Caddyfile:/etc/caddy/Caddyfile 12 | - /route/to/static:/static #change this to the folder where your static files are 13 | bare-server: 14 | build: ./bare-server 15 | restart: unless-stopped 16 | ports: 17 | - "8080:8080" 18 | # dns: 192.168.0.1 # change this to pihole if you want to run that -------------------------------------------------------------------------------- /static/public/assets/announcement.json: -------------------------------------------------------------------------------- 1 | { 2 | "announcements": [ 3 | "Set your own custom password so no one else can access it.", 4 | "Turn on about:blank cloaking in the settings!", 5 | "You can change the default search engine in the settings!", 6 | "You can now pay for premium features! Just join the Discord and subcribe to get access!", 7 | "You can set a custom shortcut in the settings!" 8 | ], 9 | "important": [ 10 | "You can now pay for premium features! Just join the Discord and subcribe to get access!" 11 | ], 12 | "super": [ 13 | "Spotify doesn't seem to be working right now." 14 | ] 15 | } -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "elixir", 3 | "version": "1.0.0", 4 | "description": "Official Elxiir deployment with TompHTTP bare server included.", 5 | "type": "module", 6 | "scripts": { 7 | "start": "node src/index.js" 8 | }, 9 | "files": ["static", "src"], 10 | "repository": { 11 | "type": "git", 12 | "url": "git+https://github.com/whos-evan/elxiir.git" 13 | }, 14 | "keywords": ["official", "ultraviolet", "elixir", "bare-server", "bypass-filter", "unblocker", "evan"], 15 | "author": "", 16 | "license": "GPL-3.0-or-later", 17 | "dependencies": { 18 | "@tomphttp/bare-server-node": "^1.2.2", 19 | "serve-static": "^1.15.0" 20 | }, 21 | "engines": { 22 | "npm": ">=8.0.0", 23 | "node": ">=16.0.0" 24 | } 25 | } -------------------------------------------------------------------------------- /docker/bare-server/index.js: -------------------------------------------------------------------------------- 1 | import createBareServer from '@tomphttp/bare-server-node'; 2 | import http from 'node:http'; 3 | 4 | const httpServer = http.createServer(); 5 | 6 | const bareServer = createBareServer('/bare/', { 7 | logErrors: false, 8 | localAddress: undefined, 9 | maintainer: { 10 | email: 'tomphttp@sys32.dev', 11 | website: 'https://github.com/tomphttp/', 12 | }, 13 | }); 14 | 15 | httpServer.on('request', (req, res) => { 16 | if (bareServer.shouldRoute(req)) { 17 | bareServer.routeRequest(req, res); 18 | } else { 19 | res.writeHead(400); 20 | res.end('Not found.'); 21 | } 22 | }); 23 | 24 | httpServer.on('upgrade', (req, socket, head) => { 25 | if (bareServer.shouldRoute(req)) { 26 | bareServer.routeUpgrade(req, socket, head); 27 | } else { 28 | socket.end(); 29 | } 30 | }); 31 | 32 | httpServer.on('listening', () => { 33 | console.log('HTTP server listening'); 34 | }); 35 | 36 | httpServer.listen({ 37 | port: 8080, 38 | }); -------------------------------------------------------------------------------- /static/public/assets/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Elixir", 3 | "short_name": "Elixir - Instant Math Help", 4 | "start_url": "/", 5 | "scope": "/", 6 | "display": "standalone", 7 | "description": "Get world class support for K-12 mathematics and more!", 8 | "lang": "en", 9 | "dir": "auto", 10 | "theme_color": "#ffffff", 11 | "background_color": "#ffffff", 12 | "orientation": "any", 13 | "icons": [ 14 | { 15 | "src": "https://elixirofficial.com/assets/icons/manifest-icon-192.maskable.png", 16 | "sizes": "192x192", 17 | "type": "image/png", 18 | "purpose": "maskable" 19 | }, 20 | { 21 | "src": "https://elixirofficial.com/assets/icons/manifest-icon-512.maskable.png", 22 | "sizes": "512x512", 23 | "type": "image/png", 24 | "purpose": "maskable" 25 | }, 26 | { 27 | "src": "https://elixirofficial.com/assets/icons/apple-icon-180.png", 28 | "sizes": "180x180", 29 | "type": "image/png", 30 | "purpose": "any" 31 | } 32 | ], 33 | "screenshots": [ 34 | { 35 | "src": "https://elixirofficial.com/assets/screenshots/screenshot.png", 36 | "sizes": "1920x983", 37 | "type": "image/png", 38 | "description": "A screenshot of the home page" 39 | } 40 | ], 41 | "prefer_related_applications": false 42 | } -------------------------------------------------------------------------------- /static/src/input.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | @layer base { 6 | html { 7 | font-family: "Inter", system-ui, sans-serif; 8 | } 9 | } 10 | 11 | @layer components { 12 | .sidebar-icon { 13 | @apply relative flex items-center justify-center 14 | h-12 w-12 p-[10px] mt-2 mb-2 mx-auto 15 | bg-gray-900 fill-white 16 | hover:bg-orange-400 17 | rounded-3xl hover:rounded-xl 18 | cursor-pointer 19 | transition-all duration-300 ease-linear; 20 | } 21 | .sidebar-tooltip { 22 | @apply absolute w-auto p-2 m-2 min-w-max left-14 23 | rounded-md shadow-md 24 | text-white bg-gray-900 25 | text-xs font-bold 26 | transition-all duration-100 scale-0 origin-left; 27 | } 28 | .sidebar-icon-selected { 29 | @apply relative flex items-center justify-center 30 | h-12 w-12 p-[10px] mt-2 mb-2 mx-auto 31 | bg-orange-400 fill-white 32 | rounded-xl 33 | cursor-pointer 34 | transition-all duration-300 ease-linear; 35 | } 36 | .sidebar-hr { 37 | @apply bg-orange-400 38 | border border-orange-400 rounded-full 39 | mx-2; 40 | } 41 | .content-items { 42 | @apply flex mx-auto items-center justify-evenly; 43 | } 44 | .input-bar { 45 | @apply bg-white text-black 46 | rounded-lg 47 | hover:bg-orange-400 hover:text-black hover:placeholder:text-black 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /static/construction/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |It works by using fork of Ultraviolet, Ultraviolet's Developers say that it works by intercepting HTTP requests with a service worker script that follows the TompHTTP specifications.
This was made using Tailwind CSS and bare-server to make it as beautiful as possible! If you want to see the source code for this site please visit the Github at https://github.com/whos-evan/elixir. If you have any questions about it please join the Discord server at: https://discord.gg/TXBxFM4rEJ.
By accessing this Website, accessible from https://elixirofficial.com, you are agreeing to be bound by these Website Terms and Conditions of Use and agree that you are responsible for the agreement with any applicable local laws. If you disagree with any of these terms, you are prohibited from accessing this site. The materials contained in this Website are protected by copyright and trade mark law.
20 | 21 |Permission is granted to temporarily download one copy of the materials on Elixir's Website for personal, non-commercial transitory viewing only. This is the grant of a license, not a transfer of title, and under this license you may not:
24 | 25 |This will let Elixir to terminate upon violations of any of these restrictions. Upon termination, your viewing right will also be terminated and you should destroy any downloaded materials in your possession whether it is printed or electronic format.
34 | 35 |All the materials on Elixir’s Website are provided "as is". Elixir makes no warranties, may it be expressed or implied, therefore negates all other warranties. Furthermore, Elixir does not make any representations concerning the accuracy or reliability of the use of the materials on its Website or otherwise relating to such materials or any sites linked to this Website.
38 | 39 |Elixir or its suppliers will not be hold accountable for any damages that will arise with the use or inability to use the materials on Elixir’s Website, even if Elixir or an authorize representative of this Website has been notified, orally or written, of the possibility of such damage. Some jurisdiction does not allow limitations on implied warranties or limitations of liability for incidental damages, these limitations may not apply to you.
42 | 43 |The materials appearing on Elixir’s Website may include technical, typographical, or photographic errors. Elixir will not promise that any of the materials in this Website are accurate, complete, or current. Elixir may change the materials contained on its Website at any time without notice. Elixir does not make any commitment to update the materials.
46 | 47 |Elixir has not reviewed all of the sites linked to its Website and is not responsible for the contents of any such linked site. The presence of any link does not imply endorsement by Elixir of the site. The use of any linked website is at the user’s own risk.
50 | 51 |Elixir may revise these Terms of Use for its Website at any time without prior notice. By using this Website, you are agreeing to be bound by the current version of these Terms and Conditions of Use.
54 | 55 |Please read our Privacy Policy.
58 | 59 |Any claim related to Elixir's Website shall be governed by the laws of us without regards to its conflict of law provisions.
62 |