1
0
mirror of https://github.com/schollz/cowyo.git synced 2023-08-10 21:13:00 +03:00
cowyo/README.md
Zack Scholl 920ba22309 CLI support! You can use curl (only curl at the moment) to
PUT files into the database.


Former-commit-id: 9c6d499403675cb28eb76676a73304e3acd2cc48 [formerly b30cad27b172756fdfcbf55d1e4c7542d90ca710] [formerly f2d936c586cb11525e36421c235bd1eb8909af3a [formerly bd59a69f28]]
Former-commit-id: c8f9d721fe83366a7545df693bbec7cdf376bf1b [formerly c97362f33772b2fc391d4705cc3d6eaf0f78f26b]
Former-commit-id: 31366a03506e761af053625496c662f675dfeb8d
2016-03-28 20:19:13 -04:00

7.5 KiB

Logo

cowyo.com

Version 0.95 Go Report Card Join the chat at https://gitter.im/schollz/cowyo

This is a self-contained notepad webserver that makes sharing easy and fast. The most important feature here is simplicity. There are many other features as well including versioning, page locking, self-destructing messages, encryption, math support, and listifying. Read on to learn more about the features.

Features

Simplicity. The philosophy here is to just type. To jot a note, simply load the page at / and just start typing. No need to press edit, the browser will already be focused on the text. No need to press save - it will automatically save when you stop writing. The URL at / will redirect to an easy-to-remember name that you can use to reload the page at anytime, anywhere. But, you can also use any URL you want, e.g. /AnythingYouWant. All pages can be rendered into HTML by adding /view. For example, the page /AnythingYouWant is rendered at /AnythingYouWant/view. You can write in HTML or Markdown for page rendering. To quickly link to /view pages, just use [[AnythingYouWant]].

Simply type to edit.


Listifying. If you are writing a list and you want to tick off things really easily, just add /list. For example, after editing /grocery, goto /grocery/list. In this page, whatever you click on will be struck through and moved to the end. This is helpful if you write a grocery list and then want to easily delete things from it.

Lists are easy to make.


Page locking. Pages can be locked by providing a password to prevent further editing. The whole version tree will still be available. Note: This is not available for list mode.

Locking is easy.


Automatic versioning. All previous versions of all notes are stored and can be accessed by adding ?version=X onto /view or /edit. If you are on the /view or /edit pages the menu below will show the most substantial changes in the history. Note, only the current version can be edited (no branching allowed, yet).

Versioning is easy.


Self-destructing messages. You can write a message that will delete itself when a user loads it (in any view). Useful for transmitting sensitive information. To use, simply add a line somewhere that says only "self-destruct".

Mission impossible style self-destruction.


Security. HTTPS support is provided and everything is sanitized to prevent XSS attacks. Though all URLs are publicly accessible, you are free to obfuscate your website by using an obscure/random address (read: the site is still publicly accessible, just hard to find!). In addition to TLS support, you can PGP-encrypt your messages using a passphrase (Note: This will delete the version tree).

Security and encryption baked in.


CLI support. Want to upload/download from a server? Its super easy. Upload/download files like this:

$ echo "Hello, world!" > hi.txt
$ curl --upload-file hi.txt cowyo.com
  File uploaded to http://cowyo.com/hi.txt
$ curl cowyo.com/test.txt
  Hello, world!

or just skip the file-creation step,

$ echo "Wow, so easy" | curl --upload-file "-" cowyo.com
  File uploaded to http://cowyo.com/CautiousCommonLoon
$ curl cowyo.com/CautiousCommonLoon
  Wow, so easy

Keyboard Shortcuts. Quickly transition between Edit/View/List by using Ctl+Shift+E to Edit, Ctl+Shift+Z to View, and Ctl+Shift+L to Listify.

Admin controls. The Admin can view/delete all the documents by setting the -a YourAdminKey when starting the program. Then the admin has access to the /ls/YourAdminKey to view and delete any of the pages.

Math support. Math is supported with Katex using $\frac{1}{2}$ for inline equations and $$\frac{1}{2}$$ for regular equations.

Install

First install Go. Then continue.

To access locally...

Then, if you want to host on your local network just do:

git clone https://github.com/schollz/cowyo.git
cd cowyo
make
./cowyo -p :8001 LOCALIPADDRESS

and then goto the address http://LOCALIPADDRESS:8001/

To access from anywhere...

For this you need to forward port 80 and get a DNS for your external address. I recommend using NGINX as middleware, as it will do caching of the static files for you.

sudo apt-get install nginx

There is an example NGINX block in install/. If you want to use SSL instead, follow the instructions in letsencrypt/README.md. To automatically install, on Raspberry Pi / Ubuntu / Debian system use:

git clone https://github.com/schollz/cowyo.git
cd cowyo
nano Makefile <--- EDIT this Makefile to include YOUR EXTERNAL ADDRESS
make && sudo make install

Now the program starts and stops with

sudo /etc/init.d/cowyo start|stop|restart

Edit your crontab (sudo crontab -e) to start on boot:

@reboot /etc/init.d/cowyo start

Usage

$ cowyo --help
cowyo: A Websocket Wiki and Kind Of A List Application
run this to start the server and then visit localhost at the port you specify
(see parameters).
Example: 'cowyo localhost'
Example: 'cowyo -p :8080 localhost:8080'
Example: 'cowyo -db /var/lib/cowyo/db.bolt localhost:8003'
Example: 'cowyo -p :8080 -crt ssl/server.crt -key ssl/server.key localhost:8080'
Options:
  -a string
        key to access admin priveleges (default no admin priveleges)
  -crt string
        location of ssl crt
  -db string
        location of database file (default "/home/mu/cowyo/data.db")
  -httptest.serve string
        if non-empty, httptest.NewServer serves on this address and blocks
  -key string
        location of ssl key
  -p string
        port to bind (default ":8003")

If you set the admin flag, -a you can access a list of all the current files by going to /ls/WhateverYouSetTheFlagTo.

Contact

If you'd like help, go ahead and clone and send a pull request. If you find a bug, please submit an issue. Any other comments, questions or anything at all, just tweet me @zack_118

Contributors

Thanks to tscholl2.

Icons made by Freepik from www.flaticon.com is licensed by CC 3.0 BY