GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - forgitfork/webclient: The mega.nz web client

BranchesTags
Open more actions menu
 
 

Latest commit

 

History

29,963 Commits
29,963 Commits

Folders and files

NameName
Last commit message
Last commit date
.well-known
.well-known
 
 
audio
audio
 
 
cmaps
cmaps
 
 
contrib
contrib
 
 
css
css
 
 
dont-deploy
dont-deploy
 
 
fonts
fonts
 
 
html
html
 
 
images
images
 
 
js
js
 
 
lang
lang
 
 
scripts
scripts
 
 
sounds
sounds
 
 
test
test
 
 
.babelrc
.babelrc
 
 
.dockerignore
.dockerignore
 
 
.editorconfig
.editorconfig
 
 
.eslintignore
.eslintignore
 
 
.eslintrc.json
.eslintrc.json
 
 
.gitattributes
.gitattributes
 
 
.gitignore
.gitignore
 
 
.htaccess
.htaccess
 
 
.htmlhintrc
.htmlhintrc
 
 
.jscpd.json
.jscpd.json
 
 
.ncurc.json
.ncurc.json
 
 
.stylelintrc.json
.stylelintrc.json
 
 
Gruntfile.js
Gruntfile.js
 
 
INSTALL.md
INSTALL.md
 
 
LICENCE.md
LICENCE.md
 
 
LLNzjXXdlp32jwpak9ZZCrKcjM.html
LLNzjXXdlp32jwpak9ZZCrKcjM.html
 
 
Makefile
Makefile
 
 
OneClipboard.swf
OneClipboard.swf
 
 
README.md
README.md
 
 
aesasm.js
aesasm.js
 
 
android-chrome-144x144.png
android-chrome-144x144.png
 
 
android-chrome-192x192.png
android-chrome-192x192.png
 
 
android-chrome-36x36.png
android-chrome-36x36.png
 
 
android-chrome-48x48.png
android-chrome-48x48.png
 
 
android-chrome-72x72.png
android-chrome-72x72.png
 
 
android-chrome-96x96.png
android-chrome-96x96.png
 
 
apple-app-site-association
apple-app-site-association
 
 
chrome.xml
chrome.xml
 
 
decrypter.js
decrypter.js
 
 
encrypter.js
encrypter.js
 
 
eslint-local-rules.js
eslint-local-rules.js
 
 
favicon.ico
favicon.ico
 
 
google1185e791b368c174.html
google1185e791b368c174.html
 
 
index.html
index.html
 
 
index.js
index.js
 
 
ios_privacy.html
ios_privacy.html
 
 
ios_terms.html
ios_terms.html
 
 
jsdoc.json
jsdoc.json
 
 
karma.conf.js
karma.conf.js
 
 
keygen.js
keygen.js
 
 
loading-sprite_dark.png
loading-sprite_dark.png
 
 
[email protected]
[email protected]
 
 
loading-sprite_light.png
loading-sprite_light.png
 
 
[email protected]
[email protected]
 
 
makecache.js
makecache.js
 
 
manifest.json
manifest.json
 
 
mediainfo.mem
mediainfo.mem
 
 
mobile_privacy.html
mobile_privacy.html
 
 
mobile_terms.html
mobile_terms.html
 
 
nacl-fast.js
nacl-fast.js
 
 
naclworker.js
naclworker.js
 
 
nodedec.js
nodedec.js
 
 
package-lock.json
package-lock.json
 
 
package.json
package.json
 
 
pdf.worker.js
pdf.worker.js
 
 
rsaasm.js
rsaasm.js
 
 
secure.html
secure.html
 
 
secureboot.js
secureboot.js
 
 
sitemap-pages.json
sitemap-pages.json
 
 
sitemap.xml
sitemap.xml
 
 
sjcl.js
sjcl.js
 
 
strg.js
strg.js
 
 
styleguide.json
styleguide.json
 
 
sw.js
sw.js
 
 
transferit-loading.svg
transferit-loading.svg
 
 
update.css
update.css
 
 
update.html
update.html
 
 
webpack.config.js
webpack.config.js
 
 
worker.recorder.bundle.js
worker.recorder.bundle.js
 
 
worker.sfuClient.bundle.js
worker.sfuClient.bundle.js
 
 
worklet.js
worklet.js
 
 

Repository files navigation

MEGA Web Client

MEGA provides robust cloud storage with convenient and powerful always-on privacy. MEGA believes in your right to privacy and provides you with the technology tools to protect it. We call it User Controlled Encryption (UCE), and it happens automatically.

Secure Boot

secureboot.js loads all the resources from static content servers and verifies its authenticity by checking the cryptographic hash.

Note: This is not the exact same secureboot.js as we have online at https://mega.nz/secureboot.js. We have an automatic process that generates secureboot.js with its cryptographic hashes and all the versioned resource files (file_X.js/file_X.html) as needed based on this repository before prior to updating the live site.

During development it's essential that your set the following localStorage parameters:

// Disables the cryptographic hash verification logic.
localStorage.dd = 1;

There are also various other localStorage parameters that are useful during development:

// Enables vanilla console logging.
localStorage.d = 1;
// Enables full console logging via MegaLogger.
localStorage.minLogLevel = 0;
// Allows you to disable the context menu in the FM for element inspection.
localStorage.contextmenu = 1;

Local webclient setup instructions for Ubuntu (for MEGAchat see INSTALL.md)

  1. Install Apache2:
sudo apt-get install apache2
  1. Create a new virtual host configuration file and edit it:
sudo nano /etc/apache2/sites-available/webclient.conf
  1. Add the following and save the file:
<VirtualHost *:80>
    ServerName webclient.local
    ServerAdmin [email protected]
    DocumentRoot /var/www/html/webclient.local
    ErrorLog /var/log/apache2/webclient.local.error.log
    CustomLog /var/log/apache2/webclient.local.access.log combined
    LogLevel warn

    <Directory "/var/www/html/webclient.local">
        AllowOverride All
    </Directory>
</VirtualHost>
  1. Enable the config, also the rewrite and headers modules:
sudo a2ensite webclient.conf
sudo a2enmod rewrite
  1. Edit the hosts file:
sudo nano /etc/hosts
  1. Add the following and save the file:
127.0.0.1       webclient.local
  1. Restart the web server:
sudo systemctl restart apache2
  1. Clone the repository:
cd /var/www/html/
git clone [email protected]:web/webclient.git webclient.local
  1. Set permissions:
sudo chgrp -R www-data /var/www/html/
sudo chown -R <your-username> /var/www/html/
  1. Pull language files:
/var/www/html/webclient.local/scripts/lang.sh
  1. Visit http://webclient.local in your browser.

Directories

  • js/ -- contains all generic JavaScript files
  • html/ -- contains all generic HTML files
  • js/html/ contains all JavaScript files that belong to the specific HTML file of the parent folder
  • js/vendor/ -- contains all JavaScript files from external developers
  • cmaps/ -- contains all Character mapping files for Pdf preview's Adobe font

Our JavaScript Files

  • secureboot.js -- loads all the resources from static content servers and verifies its authenticity by checking the cryptographic hash
  • decrypter.js -- the decrypter which is used as a web worker to decrypt data while downloading
  • encrypter.js -- the encrypter which is used as a web worker to encrypt data while uploading
  • pdf.worker.js -- worker for PDF Reader in JavaScript, this is a fork, compare the changes
  • js/chat/sfuClient.js -- audio/video call client engine MEGA SFU client
  • worker.sfuClient.bundle.js -- crypto worker of the MEGA SFU client
  • worker.recorder.bundle.js -- call recording engine worker of the MEGA SFU client. This bundle includes the mp4-muxer opensource library
  • js/avatar.js -- is used for avatar selection, cropping & scaling (all on the client side in the canvas)
  • js/cleartemp.js -- contains clearIt() which is used to purge temp data from the FileSystem API (Chrome only)
  • js/countries.js -- contains all the country names (we should translate these at some point)
  • js/crypto.js -- contains all the cryptographic functions & API handlers
  • js/download.js -- contains all the download logic
  • js/filedrag.js -- event handlers for the upload buttons, file&folder-drag&drop event handling for upload init.
  • js/filetypes.js -- contains all the supported file types based on the file extension to match icons
  • js/fm.js -- file manager core file, contains mainly file manager UI & dialog UI logic
  • js/functions.js -- contains some generic functions that are used throughout the site
  • js/keygen.js -- for cryptographic public/private key pair creation
  • js/mDB.js -- providers the local database abstraction layer for caching of meta-data in IndexedDB
  • js/mega.js -- MegaData class which does most of the data handling (but also some FM UI interaction)
  • js/mouse.js -- captures mouse events for entropy collection
  • js/notify.js -- contains the notifications logic
  • js/thumbnail.js -- client side canvas based thumbnail creation (because thumbnails are encrypted, too)
  • js/upload.js -- contains all the upload logic
  • js/account.js -- contains the user creation & login logic
  • js/zip.js -- JavaScript implementation to create ZIP archives of multiple files on the client side

Vendor JavaScript Files

  • aesasm.js -- general-purpose cryptographic library
  • rsaasm.js -- general-purpose cryptographic library
  • sjcl.js -- Stanford Javascript Crypto Library. This is a modified version with some minor changes, see c211e4ce and de5c3dce

See js/vendor/README.md for more.

About

The mega.nz web client

Resources

Readme
License
Activity
Custom properties

Stars

0 stars

Watchers

0 watching

Forks

0 forks
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.