All Projects → meganz → Webclient

meganz / Webclient

Licence: other
The mega.nz web client

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Webclient

Sdk
MEGA C++ SDK
Stars: ✭ 980 (+35.55%)
Mutual labels:  cloud-storage, privacy
Datasafe
Datasafe - flexible and secure data storage and document sharing using cryptographic message syntax for data encryption
Stars: ✭ 32 (-95.57%)
Mutual labels:  cloud-storage, privacy
Cryptomator
Multi-platform transparent client-side encryption of your files in the cloud
Stars: ✭ 6,623 (+816.04%)
Mutual labels:  cloud-storage, privacy
Cryptag
Encrypted, taggable, searchable cloud storage
Stars: ✭ 178 (-75.38%)
Mutual labels:  cloud-storage, privacy
Gdpr Checklist
The GDPR Checklist
Stars: ✭ 655 (-9.41%)
Mutual labels:  privacy
Canvasblocker
A Firefox extension to protect from being fingerprinted.
Stars: ✭ 608 (-15.91%)
Mutual labels:  privacy
Dnsserver
Technitium DNS Server
Stars: ✭ 603 (-16.6%)
Mutual labels:  privacy
Darkwire.io
End-to-end encrypted instant web chat
Stars: ✭ 594 (-17.84%)
Mutual labels:  privacy
Opmsg
opmsg message encryption
Stars: ✭ 704 (-2.63%)
Mutual labels:  privacy
Duckduckgo Privacy Extension
DuckDuckGo Privacy Essentials browser extension for Firefox, Chrome.
Stars: ✭ 692 (-4.29%)
Mutual labels:  privacy
Android
MEGA Android App
Stars: ✭ 651 (-9.96%)
Mutual labels:  privacy
Yett
🔐A small webpage library to control the execution of (third party) scripts
Stars: ✭ 615 (-14.94%)
Mutual labels:  privacy
Social Amnesia
Forget the past. Social Amnesia makes sure your social media accounts only show your posts from recent history, not from "that phase" 5 years ago.
Stars: ✭ 656 (-9.27%)
Mutual labels:  privacy
Rclone
"rsync for cloud storage" - Google Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Wasabi, Google Cloud Storage, Yandex Files
Stars: ✭ 30,541 (+4124.2%)
Mutual labels:  cloud-storage
Monero
Monero: the secure, private, untraceable cryptocurrency
Stars: ✭ 6,503 (+799.45%)
Mutual labels:  privacy
No Google
Completely block Google and its services
Stars: ✭ 596 (-17.57%)
Mutual labels:  privacy
Regtweaks
Registry Tweaks for Windows.
Stars: ✭ 675 (-6.64%)
Mutual labels:  privacy
Server
A simple server for sending and receiving messages in real-time per WebSocket. (Includes a sleek web-ui)
Stars: ✭ 6,858 (+848.55%)
Mutual labels:  privacy
Awesome Federated Learning
Federated Learning Library: https://fedml.ai
Stars: ✭ 624 (-13.69%)
Mutual labels:  privacy
Homescripts
My Scripts for Plex / Emby with Google Drive and rclone
Stars: ✭ 652 (-9.82%)
Mutual labels:  cloud-storage

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
  • 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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].