Giter Site home page Giter Site logo

mailchain / mailchain-legacy Goto Github PK

View Code? Open in Web Editor NEW
141.0 141.0 51.0 2.5 MB

Using Mailchain, blockchain users can now send and receive rich-media HTML messages with attachments via a blockchain address.

Home Page: https://mailchain.xyz

License: Apache License 2.0

mailchain-legacy's Introduction

Mailchain

You will be able to communicate with any web3 address with Mailchain. That means you can send and receive messages to and from blockchain addresses (aka accounts or wallets).

It’s just like email but we’re convinced it’s better, it’s built for web3 but with a frenly user experience. You get a familiar inbox with:

  • End-to-end encryption
  • Decentralised object storage (IPFS, etc.)
  • Name registries (ENS, etc)
  • Is multi-protocol
  • And... much more 🚀

Find out more

We'd ❤️ for you to join our growing community on Discord. It's the best place to reach us and get involved.

Follow @mailchain_xyz on Twitter to hear about new releases and updates.

If Discord isn’t right for you, contact us via traditional email.

mailchain-legacy's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mailchain-legacy's Issues

Accept message header field: content-type to support HTML & plain text

Is your feature request related to a problem? Please describe.
I want to send html-based messages so I can format messages and include pictures

Describe the solution you'd like
The application may use a Content-Type: multipart/alternative be able to include message parts:

  • text/html
  • text/plain

Describe alternatives you've considered
Sending the message with ascii art or attaching pictures to the message. Neither work particularly well.

Additional context
See https://tools.ietf.org/html/rfc1521#section-7.2 for multipart detail

Attachment Handling

Is your feature request related to a problem? Please describe.
I cannot attach a file to the message

Describe the solution you'd like
I want to be able attach a file to the message I send through the interface

Describe alternatives you've considered
N/A

Additional context
N/A

Add file extension to releases

Describe the bug
When I download a file from https://github.com/mailchain/mailchain/releases/latest e.g. mailchain-v0.0.5-macOS-64bit, there is no file extension. How do I know what to do with this file?

To Reproduce
Steps to reproduce the behavior:

  1. Go to https://github.com/mailchain/mailchain/releases/latest
  2. Click on & download mailchain-v0.0.5-macOS-64bit

What version of Mailchain are you using ?
$ mailchain version
Version: v0.0.5

Expected behavior
It should have .zip or .tar.gz or whatever is appropriate.

Better Errors

Is your feature request related to a problem? Please describe.
The application does not give informative error. For example, when I have an error and logging is set to debug, the following appears:
image

Describe the solution you'd like
Display an error message to describe the problem

Describe alternatives you've considered
N/A

Additional context
N/A

Remove the need to specify RPC details for ethereum

Is your feature request related to a problem? Please describe.
Getting started with mailchain on ethereum requires setting up an RPC server or signing up to something like infura.

Describe the solution you'd like
Remove the need for this unless I want a custom solution.

Describe alternatives you've considered
N/A

invalid `public-key`: can not unmarshal public-key: could not convert pk

Describe the bug
When I send a message through the Mailchain Web interface, it fails with the following response from the Mailchain API:

"code":422,"message":"invalid `public-key`: can not unmarshal public-key: could not convert pk: invalid secp256k1 public key"

To Reproduce
Steps to reproduce the behavior:

  1. Start the cli application.
  2. Go to the web inbox, click compose and fill in message details.
  3. Ensure the javascript console is open.
  4. Click Send
  5. See error in console

What version of Mailchain are you using ?
$ mailchain version
Version: v0.0.2

Expected behavior
The message should have sent and response should have been ok.

Desktop (please complete the following information):

  • Device: [Mac]
  • OS: [10.14.4]
  • Browser [chrome]
  • Version [73.0.3683.103 ]

Additional context
Payload (containing public key) was:

{
  "message": {
    "body":"Hi Mary",
    "headers": { 
      "from":"0x837979e322f5c1d0991ede1e308d277744ee9f2f",
      "reply-to":"0x837979e322f5c1d0991ede1e308d277744ee9f2f",
      "to":"0x563fcb888c029182d3843b4223d4d5f6123f0153"
    },
    "public-key":"0x4f80510533e4f72ee5cfcd275f56f0d36ac5a9df64d8af73a60cc455e1ae87f42b61692cd0a6c6d5fb11bb4104fd9efa281c6fa89f63a6eb8d24bde19a1e1f5a",
    "subject":"Welcome to Mailchain"
  }
}

Contributing guide

Is your feature request related to a problem? Please describe.
It's not clear what I should do if I want to contribute

Describe the solution you'd like
A contributing.MD file

Describe alternatives you've considered
N/A

Additional context
N/A

Inform user if not using latest version of application

Is your feature request related to a problem? Please describe.
I don't know when I am using the latest version of the application.

Describe the solution you'd like
Be aware when I am not running the latest version, so I can upgrade and read messages sent in newer versions

Describe alternatives you've considered
N/A

Additional context
Older versions are not guaranteed to read later version message formats

Add a TTL to messages

Is your feature request related to a problem? Please describe.
From the spec:
The duration a message is stored MAY vary. A time-to-live (TTL) SHOULD be specified.
Messages SHOULD not be discarded until the TTL has expired.

Describe the solution you'd like
The TTL should be a parameter in the SEND api.
The mailchain application should handle selecting suitable storage based on the TTL.
The storage should be able to discard messages that have exceeded their TTL

Describe alternatives you've considered
N/A

Additional context
N/A

Allow skipping of adding API key for etherscan

Is your feature request related to a problem? Please describe.
Getting started with MailChain is hard, lots of settings need adding. Etherscan seems to allow requests without an API key.

Describe the solution you'd like
If its not needed then remove the need for the API key

Describe alternatives you've considered
Creating an alternative for Etherscan

Additional context
https://etherscan.io/apis

Forward Handling

Is your feature request related to a problem? Please describe.
The application does not handle forwarding messages in line with the Internet Message Standard RFC (https://tools.ietf.org/html/rfc5322).

Describe the solution you'd like
When I forward a message, it should include the original message and its headers

Describe alternatives you've considered
N/A

Additional context
N/A

Add support for goerli testnet

Is your feature request related to a problem? Please describe.
Goerli is a cross-client proof-of-authority ethereum testnet.

Describe the solution you'd like
Please support it

.mailchain.yaml is not being created in the correct directory

Describe the bug
By default .mailchain.yaml is not being created in the correct directory its been created in the directory that is being run

To Reproduce
Steps to reproduce the behavior:

  1. mailchain init
  2. check ./mailchain directory

What version of Mailchain are you using ?
Version: v0.0.1

Expected behavior
Create mailchain in the users path

Create default configuration for receiver

Is your feature request related to a problem? Please describe.
.mailchain.yaml is a large file and some settings are defaults.

Describe the solution you'd like
Remove the requirement to speficify default settings that bloat the configuration

Describe alternatives you've considered
N/A

Additional context

chains:
  ethereum:
    networks:
      mainnet:
        receiver: etherscan-no-auth

Reply Handling

Is your feature request related to a problem? Please describe.
The application does not handle replies to messages in line with the Internet Message Standard RFC (https://tools.ietf.org/html/rfc5322).

Describe the solution you'd like
When I reply to a message, it should include the original message and its headers

Describe alternatives you've considered
N/A

Additional context
N/A

Public key lookup service

Is your feature request related to a problem? Please describe.
Create a service that allows looking up a public key by address

Describe the solution you'd like
Currently Etherscan is the only solution to lookup public key by address.

Describe alternatives you've considered

  • Proxy calls to etherscan
  • Custom solution for mailchain

Additional context
Ref #118

Developer instructions

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Warning for log-level

Describe the bug
When setting the log level, I receive the following error:

Invalid 'log-level' , default to [Warning]

To Reproduce

  1. Run the mailchain application with any of the following:
    ./mailchain serve --log-level=debug
    ./mailchain serve --log-level debug
    ./mailchain serve --log-level=Debug
    ./mailchain serve --log-level Debug
    
  2. See error: WARN[0000] Invalid 'log-level' , default to [Warning]

What version of Mailchain are you using ?
Version: v0.0.2

Expected behavior
It should accept the arguement with --log-level debug or --log-level=debug

Desktop (please complete the following information):

  • Mac, OS X 14.4

Go-Swagger does not work with mod

Describe the bug
Generating API documentation fails with

To Reproduce
Steps to reproduce the behavior:

  1. make openapi
  2. See error

Expected behavior
Generated ./docs/openapi/spec.json with no error

Desktop (please complete the following information):

  • All
  • go 1.2+

Additional context
Add any other context about the problem here.

Make http package public

Is your feature request related to a problem? Please describe.
The http package is internal and not possible to use externally and flatten the paths too

Describe the solution you'd like
live at ./http

Describe alternatives you've considered
Using the go layout structure

Additional context
N/A

be more general when getting key from hex

Is your feature request related to a problem? Please describe.
With the introduction of substrate, when sending a message the public key type needs to be specified, the client will now send public-key-encoding and public-key-kind mailchain/mailchain-web#146

Describe the solution you'd like

Error: Could not config mailbox store: unsupported inbox type

Describe the bug
After running ./mailchain init, I try to start the application with ./mailchain serve --log-level=debug

I get an error:

2019/05/08 07:25:08 Could not config mailbox store: unsupported inbox type

It looks like the leveldb is not being created on init

To Reproduce
Steps to reproduce the behavior:

  1. Run ./mailchain init
  2. Fill out the details
  3. [Maybe not be needed] Add a key to the keystore (./mailchain account add -K *********** -C ethereum)
  4. Run ./mailchain serve --log-level=debug
  5. See error

What version of Mailchain are you using ?
$ mailchain version
Version: v0.0.2

Expected behavior
I expected the mailchain client to start without error

Desktop (please complete the following information):

  • OS: [iOS]

Additional context
Config file:

chains:
  ethereum:
    networks:
      ropsten:
        pubkey-finder: etherscan-no-auth
        receiver: etherscan-no-auth
        sender: ethereum-rpc2
clients:
  ethereum-rpc2:
    ropsten:
      address: https://ropsten.infura.io/v3/******************************
server:
  cors:
    allowed-origins: '*'
    disabled: false
  port: 8080
storage:
  keys: nacl-filestore
  mailbox: leveldb
  sent: s3
stores:
  leveldb:
    path: ./.mailchain/.mailbox
  nacl-filestore:
    path: ./.mailchain/.keystore
  s3:
    access-key-id: ******************************
    bucket: ******************************
    region: u******************************
    secret-access-key: ******************************

Files in the folder:

./mailchain
./LICENSE
./.mailchain
./.mailchain/.mailchain.yaml
./.mailchain/.keystore
./.mailchain/.keystore/******************************.json

Missing getting start documentation

Describe the bug
If I am new to the project I can not easily understand how to get started.

To Reproduce
Steps to reproduce the behavior:

  1. Go to the readme
  2. See lack of information

What version of Mailchain are you using ?
N/A

Expected behavior
A clear and concise description of what you to do to get started

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):
N/A

Smartphone (please complete the following information):
N/A

Additional context
N/A

Messages sent to self appear twice

Describe the bug
Response returns duplicate messages when I send a message to myself. This should not happen because it is 1 transaction

To Reproduce
Steps to reproduce the behavior:
curl 'http://localhost:8080/api/ethereum/ropsten/address/0x92d8f10248c6a3953cc3692a894655ad05d61efb/messages' -H 'Accept: application/json, text/plain, /' -H 'Referer: http://localhost:4200/' -H 'Origin: http://localhost:4200' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36' --compressed


**What version of Mailchain are you using ?**
`dev`

**Expected behavior**
One single message

**Screenshots**
N/A

**Desktop (please complete the following information):**
All

**Smartphone (please complete the following information):**
All

**Additional context**
N/A

Put version number on configuration file

Is your feature request related to a problem? Please describe.
Between different versions on mailchain the configuration is not guaranteed to be compatible without considerable effort.

Describe the solution you'd like
Add a version number on the file that specifies what version of the app it supports

Describe alternatives you've considered

  • Upgrading config files
  • Deleting config on each upgrade.

Add a protocol & networks endpoint

Is your feature request related to a problem? Please describe.
I want to be able to query the mailchain api to know which 'chains' are configured in the config file and the networks that correspond to the chain (e.g. ropsten, goerli etc.).

Describe the solution you'd like
The I query the api, I would like to receive a response similar to:

{
  "ethereum": [
    "ropsten",
    "kovan"
  ]
}

Additional context
This will enable the mailchain-web application to present valid networks options that are configured and also check all configured networks for new messages.

Remove the need for specifying S3 details

Is your feature request related to a problem? Please describe.
Getting started with mailchain requires setting up S3.

Describe the solution you'd like
Find a way to allow sending of messages without needing to setup S3

Describe alternatives you've considered
Public systems where messages can be written. IPFS

Additional context
N/A

pass stdout and stderr as params

Is your feature request related to a problem? Please describe.
There is no way to control where the errors are written to when using errs package.

Describe the solution you'd like
Provide an approach that allows specifying an io.Writer is used when logging errors.

Create default configuration for pubkey-finder

Is your feature request related to a problem? Please describe.
.mailchain.yaml is a large file and some settings are defaults.

Describe the solution you'd like
Remove the requirement to speficify default settings that bloat the configuration

Describe alternatives you've considered
N/A

Additional context

chains:
  ethereum:
    networks:
      mainnet:
        pubkey-finder: etherscan-no-auth

Docker containerize application

Is your feature request related to a problem? Please describe.
Its difficult to get started with mailchain, I always need to ensure I am running the latest version

Describe the solution you'd like
An easy way to ensure that I am running the latest version of mailchain

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context

  • Dealing with configuration is more complex.
  • Instructions for opening ports
  • Instructions for always running the latest

SSL on api

Is your feature request related to a problem? Please describe.
Although communication is local its on http.

Describe the solution you'd like
Encrypted communication on HTTPS

Describe alternatives you've considered
N/A

Additional context
N/a

Messages by address service

Is your feature request related to a problem? Please describe.
Currently Etherscan is the only solution to lookup transactions by address.

Describe the solution you'd like
Create a service that allows looking up mailchain messages by address.

Describe alternatives you've considered

  • Proxy calls to etherscan
  • Custom solution for mailchain

Additional context
ref #118

Improve security for `account add` command

Is your feature request related to a problem? Please describe.
The current import command is:
mailchain account add --chain=ethereum --private-key=[PRIVATE-KEY-VALUE]

This poses a risk because it leaves private keys in the command history.

Describe the solution you'd like
Both solutions would be good

  1. If no private key is included in the command, it should prompt for the private key
    and
  2. Allow import of private key from a file

Describe alternatives you've considered
N/A

Additional context

Reduce the size of the transaction data

Is your feature request related to a problem? Please describe.
Every byte costs on a transaction. The current transaction data has room for improvements.

  • MessageID default is 32 bytes
  • Location is stored as encrypted string including, scheme, domain.
  • The prefix is mailchain what is a shorter but still discoverable prefix.

Describe the solution you'd like
Replace or allow alternative transaction data format to optimise for byte usage.

Describe alternatives you've considered
Current object

message Data {
  int32 version = 1;
  bytes encryptedLocation = 2;
  bytes hash = 3;
}

Additional context
Add any other context or screenshots about the feature request here.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.