Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/meganz/webclient
The mega.nz web client
https://github.com/meganz/webclient
cloud-storage cryptographic meganz privacy webclient
Last synced: 3 days ago
JSON representation
The mega.nz web client
- Host: GitHub
- URL: https://github.com/meganz/webclient
- Owner: meganz
- License: other
- Created: 2016-01-19T23:06:11.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2025-01-16T03:21:30.000Z (11 days ago)
- Last Synced: 2025-01-16T14:23:21.309Z (10 days ago)
- Topics: cloud-storage, cryptographic, meganz, privacy, webclient
- Language: JavaScript
- Homepage:
- Size: 570 MB
- Stars: 1,070
- Watchers: 68
- Forks: 308
- Open Issues: 65
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
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
```2. Create a new virtual host configuration file and edit it:
```
sudo nano /etc/apache2/sites-available/webclient.conf
```3. Add the following and save the file:
```
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
AllowOverride All
```
4. Enable the config, also the rewrite and headers modules:
```
sudo a2ensite webclient.conf
sudo a2enmod rewrite
```5. Edit the hosts file:
```
sudo nano /etc/hosts
```6. Add the following and save the file:
```
127.0.0.1 webclient.local
```7. Restart the web server:
```
sudo systemctl restart apache2
```8. Clone the repository:
```
cd /var/www/html/
git clone [email protected]:web/webclient.git webclient.local
```9. Set permissions:
```
sudo chgrp -R www-data /var/www/html/
sudo chown -R /var/www/html/
```10. Pull language files:
```
/var/www/html/webclient.local/scripts/lang.sh
```11. 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 fontOur 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](https://github.com/mozilla/pdf.js/compare/master...meganz:master)
* ``js/chat/sfuClient.js`` -- audio/video call client engine [MEGA SFU client](https://github.com/meganz/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](https://github.com/Vanilagy/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 sideVendor 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 de5c3dceSee [js/vendor/README.md](https://github.com/meganz/webclient/blob/master/js/vendor/README.md) for more.