Coder Social home page Coder Social logo

networkimprov / mnm-hammer Goto Github PK

View Code? Open in Web Editor NEW
69.0 3.0 5.0 1.59 MB

mnm implements TMTP protocol. Let Internet sites message members directly, instead of unreliable, insecure email. Contributors welcome! (Client)

Home Page: https://mnmnotmail.org

License: Mozilla Public License 2.0

Go 55.19% HTML 9.08% JavaScript 6.45% Vue 25.40% Shell 0.96% CSS 2.56% Batchfile 0.36%
email e-mail messaging chat tmtp smtp imap xmpp jmap linux

mnm-hammer's Introduction

mnm is not mail

The mnm project is building a legitimate replacement for email: a client (see below), a server, and a simple protocol between them.

Learn more at mnmnotmail.org.

Download the mnm client app

Status

09 March 2021 - the online demo is released. It has been tested on Chrome & Firefox.

03 January 2021 - v0.9 is released. It fixes a panic and a few flaws, but is otherwise identical to v0.8.

15 November 2020 - v0.8 is released for Windows 7+ & MacOS & Linux. Its UI has been tested on Chrome & Firefox.
New: Markdown reference panel, "Todo" tag on new threads, menu of filled-form tables, and dozens of other enhancements and fixes.

20 April 2020 - v0.7 is released for Windows 7+ & MacOS & Linux. It has been tested with Chrome & Firefox.
New: slide deck layouts, replication to multiple PCs, simplified startup.

20 October 2019 - v0.6 is released for Windows 7+ & MacOS & Linux. It has been tested with Chrome & Firefox.
New: search, message tags, file viewer, UI colors, logo, and more. Fixes many UI flaws.

29 May 2019 - v0.5 is released. It fixes a panic on Windows, but is otherwise identical to v0.4.

25 May 2019 - v0.4 is released. It has been tested on Windows 7 & MacOS & Linux, with Firefox.
New: Windows support. Fixes a crash-recovery failure, and a TMTP handling error.

13 May 2019 - v0.3 is released. It has been tested on Linux & MacOS, with Firefox.
New: tooltips on menu icons. Fixes a panic, and a handful of UI flaws.

07 May 2019 - v0.2 is released. It has been tested on Linux & MacOS, with Firefox.
New: a tour with cartoons covering essential features.

19 April 2019 - v0.1 is released. It has been tested on Linux & MacOS, with Firefox.

Version Numbering

Production releases: 1+ . 0 . 0+

Preview releases: pp . 1+ . pp (first & last from prior production release)

The second number is only used for previews. Most (hopefully all) preview features & changes appear in the following production release.

Build & Package

Requires Go 1.13.3+

a) go get github.com/networkimprov/mnm-hammer
b) cd $GOPATH/src/github.com/networkimprov/mnm-hammer # project directory can be moved out of $GOPATH
c) ./webdeps.sh # download browser modules
d) Edit kVersionDate in main.go
e) ./pkg.sh # make release downloads for all platforms

Building for Windows requires patches to the Go source (which do not affect other programs):
go-winfsd.patch fixes #32088
go-winstat.patch fixes #9611
Apply patches with: cp go*.patch /.../go && (cd /.../go && git apply go*.patch)

Testing

An automated test sequence is defined in test-in.json. It creates accounts Blue and Gold, which then exchange messages. It yields occasional false positives due to loose synchronization between the two accounts. After a test pass completes, the app provides http on port 8123 (unless --http is given):
./mnm-hammer --test server:port # server:port is a TMTP service
To access a previous test pass:
(cd test-run/TPD/ && ../../mnm-hammer --http :8123) # TPD is a directory name

If the TMTP site at server:port is not configured for optional third party authentication, the test sequence will produce an expect/got message from "local1 local" re "cs" (which can be ignored). The test sequence cannot run against a TMTP site that requires third party authentication.

Crash testing
a) ./mnm-hammer --test server:port --crash init # make test directory
b) ./mnm-hammer --test server:port --crash dir:service:order:op[:sender:order] # crash here in test sequence
c) ./mnm-hammer --test server:port --verify dir:service:order:count # recover and verify result

./test-crash.sh server:port [ item_index ] # collection of crash/verify runs in single directory

Code Coverage

a) go test -c -covermode=count -coverpkg ./...
b) go build
c) ./mnm-hammer.test --test localhost:443 -test.coverprofile mnm-hammer.cov
. . . # this test pass directory is TPD below
d) go tool cover -html=test-run/TPD/mnm-hammer.cov -o web/coverage.html
e) (cd test-run/TPD/ && ../../mnm-hammer --http :8123)
f) Open a browser tab, go to localhost:8123/w/coverage.html

Ref: https://www.elastic.co/blog/code-coverage-for-your-golang-system-tests

Demo Files

To generate the demo files:
a) cp web/{gui.vue,service-demo.html}
b) cp web/docs{,-demo}.html
c) git apply web/*demo.patch

To recreate the web/...-demo.patch files after changing the demo files:
a) git diff --no-index web/gui.vue web/service-demo.html > web/service-demo.patch
b) git diff --no-index web/docs.html web/docs-demo.html > web/docs-demo.patch
c) Edit the patches to use a/web/...-demo.html as the origin path.

To create a JSON object for use in web/data-demo.js from an mnm client instance:
a) Edit web/gui.vue to insert <script src="/w/demodata.js"></script> after all other <head> scripts.
b) Quit and restart the app, then Shift-Reload the page at http://localhost:8123.
c) Invoke http://localhost:8123/#demodata and wait while it steps through each account.
d) Open the web console and copy the JSON result.

License

Copyright 2018, 2020 Liam Breck
Published at https://github.com/networkimprov/mnm-hammer

This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/

mnm-hammer's People

Contributors

networkimprov avatar

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

Watchers

 avatar  avatar  avatar

mnm-hammer's Issues

List of publicly accessible mnm sites

If you've set up the mnm server and would like to let others make accounts on it, please add a comment below containing:

  • Your name and/or organization, and server location (city/province and country)
  • The server address (starts with = or + and includes the port, e.g. =192.168.1.2:3456 or +mnm.example.com:443)
  • An account alias to which a new visitor should send an invite
  • Any contact information the visitor should include in the invite message

Feel free to suspend or shut down the server as needed; clients will reconnect when it comes back up.

Please update your comment when your server is no longer publicly accessible.

Linux: Port 80 permission denied

I get the following error when trying to start the client.

mnm-hammer tmtp client v0.7.0 2020.04.20
mainResult: listen tcp :80: bind: permission denied

Failing to fully understand why working through the privileged access port 80 is required, this seems like a bad idea in general :)

Translation work

New to this GitHub stuff. Willing to do translation of everything but I don't know how. Someone please help.

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.