ZeroNet Blogs

Static ZeroNet blogs mirror

Changelog: Jan 29, 2015

- Posted in ZeroBlog by with comments

The default tracker (tracker.pomf.se) is down since yesterday and its resulting some warning messages. To make it disappear please update to latest version from GitHub.

ZeroNet: - Added better tracker error handling - Updated alive trackers list (if anyone have more, please let us know)

If you want to stay updated about the project status:
We have created a @HelloZeronet Twitter account

Changelog: Jan 27, 2015

- Posted in ZeroBlog by with comments

ZeroNet * You can use start.py to start zeronet and open in browser automatically * Send timeout 50sec (workaround for some strange problems until we rewrite the network code without zeromq) * Reworked Websocket API to make it unified and allow named and unnamed parameters * Reload content.json when changed using fileWrite API command * Some typo fix

ZeroBlog * Allow edit post on mainpage * Also change blog title in content.json when modified using inline editor

ZeroHello * Update failed warning changed to No peers found when seeding own site.

Changelog: Jan 25, 2015

- Posted in ZeroBlog by with comments

ZeroNet - Utf-8 site titles fixed - Changes in DebugMedia merger to allow faster, node.js based coffeescript compiler

ZeroBlog - Inline editor rewritten to simple textarea, so copy/paste, undo/redo now working correctly - Read more button to folded posts with --- - ZeroBlog running in demo mode, so anyone can try the editing tools - Base html tag fixed - Markdown cheat-sheet - Confirmation if you want to close the browser tab while editing

How to update your running blog? - Backup your content.json and data.json files - Copy the files in the data/1BLogC9LN4oPDcruNz3qo1ysa133E9AGg8 directory to your site.

How to have a blog like this

- Posted in ZeroBlog by with comments

Simple, one click cloning

Use Clone feature in ZeroHello

Clone

Alternative, manual method:

  • Stop ZeroNet
  • Create a new site using python zeronet.py siteCreate command
  • Copy all file from data/1BLogC9LN4oPDcruNz3qo1ysa133E9AGg8 to data/[Your new site address displayed when executed siteCreate] directory
  • Delete data directory and rename data-default to data to get a clean, empty site
  • Rename data/users/content-default.json file to data/users/content.json
  • Execute zeronet.py siteSign [yoursiteaddress] --inner_path data/users/content.json to sign commenting rules
  • Start ZeroNet
  • Add/Modify content
  • Click on the Sign & Publish new content button
  • Congratulations! Your site is ready to access.

Note: You have to start commands with lib\zeronet.cmd ... if you downloaded ZeroNet-win-dist package

Changelog: Jan 24, 2015

- Posted in ZeroBlog by with comments

  • Version 0.1.6
  • Only serve .html files with wrapper frame
  • Http parameter support in url
  • Customizable background-color for wrapper in content.json
  • New Websocket API commands (only allowed on own sites):
    • fileWrite: Modify site's files in hdd from javascript
    • sitePublish: Sign new content and Publish to peers
  • Prompt value support in ZeroFrame (used for prompting privatekey for publishing in ZeroBlog)

Previous changes:

Jan 20, 2014

  • Version 0.1.5
  • Detect computer wakeup from sleep and acts as startup (check open port, site changes)
  • Announce interval changed from 10min to 20min
  • Delete site files command support
  • Stop unfinished downloads on pause, delete
  • Confirm dialog support to WrapperApi

ZeroHello - Site Delete menuitem - Browser back button doesn't jumps to top

Jan 19, 2014:

Jan 18, 2014:

  • Version 0.1.3
  • content.json hashing changed from sha1 to sha512 (trimmed to 256bits) for better security, keep hasing to sha1 for backward compatiblility yet
  • Fixed fileserver_port argument parsing
  • Try to ping peer before asking any command if no communication for 20min
  • Ping timeout / retry
  • Reduce websocket bw usage
  • Separate wrapper_key for websocket auth and auth_key to identify user
  • Removed unnecessary from wrapper iframe url

ZeroHello: - Compatiblilty with 0.1.3 websocket changes while maintaining backward compatibility - Better error report on file update fail

ZeroBoard: - Support for sha512 hashed auth_key, but keeping md5 key support for older versions yet

Jan 17, 2014:

  • Version 0.1.2
  • Better error message logging
  • Kill workers on download done
  • Retry on socket error
  • Timestamping console messages

Jan 16:

  • Version to 0.1.1
  • Version info to websocket api
  • Add publisher's zeronet version to content.json
  • Still chasing network publish problems, added more debug info

ZeroHello: - Your and the latest ZeroNet version added to top right corner (please update if you dont see it)

ZeroBlog features

- Posted in ZeroBlog by with comments

Initial version (Jan 24, 2014):

  • Site avatar generated by site address
  • Distraction-free inline edit: Post title, date, body, Site title, description, links
  • Post format using markdown
  • Code block syntax highlight using highlight.js
  • Create & Delete post
  • Sign & Publish from web
  • Fold blog post: Content after first --- won't appear at listing
  • Shareable, friendly post urls

Todo:

  • ~~Better content editor (contenteditable seemed like a good idea, but tricky support of copy/paste makes it more pain than gain)~~
  • Image upload to post & blog avatar
  • Paging
  • Searching
  • ~~Quick cheat-sheet using markdown~~

Code highlight demos

Server-side site publishing (UiWebsocket.py):

def actionSitePublish(self, to, params):
    site = self.site
    if not site.settings["own"]: return self.response(to, "Forbidden, you can only modify your own sites")

    # Signing
    site.loadContent(True) # Reload content.json, ignore errors to make it up-to-date
    signed = site.signContent(params[0]) # Sign using private key sent by user
    if signed:
        self.cmd("notification", ["done", "Private key correct, site signed!", 5000])  # Display message for 5 sec
    else:
        self.cmd("notification", ["error", "Site sign failed: invalid private key."])
        self.response(to, "Site sign failed")
        return
    site.loadContent(True) # Load new content.json, ignore errors

    # Publishing
    if not site.settings["serving"]: # Enable site if paused
        site.settings["serving"] = True
        site.saveSettings()
        site.announce()

    published = site.publish(5) # Publish to 5 peer

    if published>0: # Successfuly published
        self.cmd("notification", ["done", "Site published to %s peers." % published, 5000])
        self.response(to, "ok")
        site.updateWebsocket() # Send updated site data to local websocket clients
    else:
        if len(site.peers) == 0:
            self.cmd("notification", ["info", "No peers found, but your site is ready to access."])
            self.response(to, "No peers found, but your site is ready to access.")
        else:
            self.cmd("notification", ["error", "Site publish failed."])
            self.response(to, "Site publish failed.")

Client-side site publish (ZeroBlog.coffee)

# Sign and Publish site
publish: =>
    if not @server_info.ip_external # No port open
        @cmd "wrapperNotification", ["error", "To publish the site please open port <b>#{@server_info.fileserver_port}</b> on your router"]
        return false
    @cmd "wrapperPrompt", ["Enter your private key:", "password"], (privatekey) => # Prompt the private key
        $(".publishbar .button").addClass("loading")
        @cmd "sitePublish", [privatekey], (res) =>
            $(".publishbar .button").removeClass("loading")
            @log "Publish result:", res

    return false # Ignore link default event