diff --git a/doc/WoT_certification_function.png b/doc/WoT_certification_function.png new file mode 100644 index 0000000..2d2a242 Binary files /dev/null and b/doc/WoT_certification_function.png differ diff --git a/zen/pkg/make_G1SSB_secret.tar.gz b/zen/pkg/make_G1SSB_secret.tar.gz new file mode 100644 index 0000000..b814184 Binary files /dev/null and b/zen/pkg/make_G1SSB_secret.tar.gz differ diff --git a/zen/tools/img2html.py b/zen/tools/img2html.py deleted file mode 100644 index 032ce3f..0000000 --- a/zen/tools/img2html.py +++ /dev/null @@ -1,166 +0,0 @@ -#!/usr/bin/python -# Image to HTML converter -# Copyright (C) January 2019 Neil Fraser -# https://neil.fraser.name/ - -# This program is free software; you can redistribute it and/or -# modify it under the terms of version 2 of the GNU General -# Public License as published by the Free Software Foundation. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# http://www.gnu.org/ - -# Loads JPEGs, PNGs and GIFs from websites and converts them to HTML. -# Usage: img2html.py?img=www.example.com/image.jpg - -from PIL import Image -import cgi -import cStringIO -import math -import re -import sys -import urllib - - -# Throw a 500 error and terminate the program. -def die(msg): - print('Status:500') - print('Content-type: text/plain') - print('') - print('Error: ' + msg) - sys.exit() - -def is_valid_url(url): - regex = re.compile( - r'^https?://' # http:// or https:// - r'(?:(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+[A-Z]{2,6}\.?|' # domain... - r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})' # ...or IP - r'(?::\d+)?' # optional port - r'(?:/?|[/?]\S+)$', re.IGNORECASE) - return url is not None and regex.search(url) - -form = cgi.FieldStorage() -if not form.has_key('img'): - die('"img" paramater not found.') - -#rows = min(512+1, int(form['y'].value, 10)) - -remoteurl = form['img'].value -remoteurl = remoteurl.strip() -if not remoteurl: - die('No image URL specified.') -if not re.match('\\w+:\/\/', remoteurl): - remoteurl = 'http://' + remoteurl -if not is_valid_url(remoteurl): - die('Invalid image URL. Please go back and check the address.') - -# Reduce load on my server, use cached tux.html if the request is tux.jpg -if remoteurl == 'https://neil.fraser.name/software/img2html/tux.jpg': - f = open('/home/neil/html/software/img2html/tux.html') - print("Content-type: text/html\n\n") - print(f.read()) - f.close() - sys.exit() - -try: - f = urllib.urlopen(remoteurl) - data = f.read() -except Exception as err: - die('Invalid image URL: %s' % err) -oldsize = int(round(len(data) / 1024)) - -cStr = cStringIO.StringIO(data) -image = Image.open(cStr) -image = image.convert('RGBA') -background = Image.new('RGBA', image.size, (255, 255, 255)) -background.paste(image, mask=image.split()[3]) # 3 is the alpha channel -image = background -image = image.convert('RGB') - -maxPixels = 100*100 -(oldX, oldY) = image.size -if oldX * oldY > maxPixels: - factor = math.sqrt(maxPixels / float(oldX * oldY)) - newX = int(round(oldX * factor)) - newY = int(round(oldY * factor)) - image.thumbnail((newX, newY), Image.ANTIALIAS) - msg = '[This image is too large to comfortably handle, so it has been scaled down to %s%% of its original size.]

' % int(100.0 * newX / oldX); -else: - newX = oldX - newY = oldY - msg = '' - - -# Scan the image pixel by pixel and build the HTML table. -table = ''; -firstrow = True # Disable RLE for first row of each table segment (dodge Mozilla bug) -for y in range(newY): - row = ''; - for x in range(newX): - try: - (r, g, b) = image.getpixel((x, y)) - except: - # Some images throw a range error on some (transparent?) pixels. - (r, g, b) = (255, 255, 255) - if x == newX: - # Dummy run to clear the colspan buffer. - rgb = '' - else: - rgb = '%02x%02x%02x' % (r, g, b) - if x == 0: # Initialise the RLE (Run Length Encoding) - prev_rgb = rgb - span = 0 - span += 1 - if rgb != prev_rgb or firstrow: - if span == 1: # One pixel. - row += "" % prev_rgb - else: # A run of multiple pixels with the same colour. - row += "" % (prev_rgb, span) - span = 0 - prev_rgb = rgb - table += "%s\n" % row - - # Segment the table so that MSIE renders it in pieces instead of waiting till the end. - if y != 0 and (y == 5 or y % 15 == 0) and y < newY - 10: - table += "\n" - firstrow = True - else: - firstrow = False -newsize = int(round(len(table) / 1024)) - - -# We're done. Now print it all out (this is what takes the time). -print("Content-type: text/html\n") - -print(""" - - -img2html: {remoteurl} - - - -
-
Original Image -
{remoteurl} -
{oldX}x{oldY} -
{oldsize}KB -

-{msg} -

Text Image -
{newX}x{newY} -
{newsize}KB -
- -
-{table}
- -

-

Done - - -""".format(remoteurl=remoteurl, table=table, msg=msg, - oldsize=oldsize, newsize=newsize, - oldX=oldX, oldY=oldY, newX=newX, newY=newY)) diff --git a/zen/tools/install.ssb-npm.sh b/zen/tools/install.ssb-npm.sh old mode 100644 new mode 100755 diff --git a/zen/tools/key_create_dunikey.py b/zen/tools/key_create_dunikey.py new file mode 100755 index 0000000..af2b340 --- /dev/null +++ b/zen/tools/key_create_dunikey.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python3 +# This Python script gets Duniter creddentials as arguments, and writes a PubSec file that should be compatible with Cesium and Silkaj(DuniterPy) clients. +# launch with : +# python3 key_create_dnuikey.py + +# depends on duniterpy 0.56 + +### Licence - WTFPL +# This script was written my Matograine, in the hope that it will be helpful. +# Do What The Fuck you like with it. There is : +# * no guarantee that this will work +# * no support of any kind +# +# If this is helpful, please consider making a donation to the developper's pubkey : 78ZwwgpgdH5uLZLbThUQH7LKwPgjMunYfLiCfUCySkM8 +# Have fun + +from sys import argv +from duniterpy.key import SigningKey + +# path to save to +path = "./.secret.dunikey" + +key = SigningKey.from_credentials(argv[1], argv[2], None) +key.save_pubsec_file(path) +print( + "G1 Wallet: ", + key.pubkey, +) diff --git a/zen/tools/make_G1SSB_secret.sh b/zen/tools/make_G1SSB_secret.sh new file mode 100755 index 0000000..0a45125 --- /dev/null +++ b/zen/tools/make_G1SSB_secret.sh @@ -0,0 +1,99 @@ +#!/bin/bash +######################################################################## +MY_PATH="`dirname \"$0\"`" # relative +MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized +ME="${0##*/}" +echo ' +######################################################################## +# \\/// +# qo-op +############# '$MY_PATH/$ME' +######################################################################## +# Make a G1SSB Account +######################################################################## +' +if [[ -d ~/.ssb ]]; then + echo "ScuttelButt is already installed..." + echo "Do you want to remove ~/.ssb ? (y)/n" + read isitok + if [[ "$isitok" == "y" ]]; then rm -Rf ~/.ssb; else echo "You must remove '~/.ssb' before running $ME"; exit 1; fi +fi + +mkdir -p ~/.ssb +echo "WELCOME CREATING YOUR G1 SSB ACCOUNT !!!" +echo ' + __ __ __ _ +/__ /| (_ (_ |_) +\_| | __) __) |_) + +CHOOSE YOU LOGIN or LEAVE BLANK & HIT ENTER FOR AUTO GENERATION +' +read salt +[[ $salt != "" ]] && echo "CHOOSE PASSWORD?" && read pepper && [[ $pepper == "" ]] && exit 1 + +if [[ "$salt" == "" && "$pepper" == "" ]]; then + echo ' +._ _ ._ _ ._ _ _ ._ o _ +| | | | | (/_ | | | (_) | | | (_ + +passphrase generator...' + + # GENERATE MNEMONIC KEY: 9 MOTS + # LOGIN (=SALT) 6 WORDS + salt="$($MY_PATH/diceware.sh 6)" + # PASS (=PEPPER) 3 WORDS + pepper="$($MY_PATH/diceware.sh 3)" + + echo "........." + echo "REMEMBER YOUR CREDENTIALS !!! +login (salt) : $salt +password : $pepper" + +fi + +# CREATE ~/.ssb/secret.dunikey +python3 $MY_PATH/key_create_dunikey.py "$salt" "$pepper" +mv $MY_PATH/.secret.dunikey ~/.ssb/secret.dunikey + +# CREATE SSB secret +pub=$(cat ~/.ssb/secret.dunikey | grep "pub" | cut -d ' ' -f 2) +priv=$(cat ~/.ssb/secret.dunikey | grep "sec" | cut -d ' ' -f 2) +ssbpub=$(echo $pub | base58 -d | base64) +ssbpriv=$(echo $priv | base58 -d | base64) + +cat > ~/.ssb/secret <