1
0
mirror of https://github.com/schollz/cowyo.git synced 2023-08-10 21:13:00 +03:00
Go to file
Zack Scholl e8a4d30139 Now vendored, with Bolt v1.2.0
Former-commit-id: 900e1a398fd82aa1cea4f319e89b8088dd81cf6c [formerly f172c22b12c49c0291e0d986dc4af94fcc91d192] [formerly 43c5da81442a5f0ca79a6eabb1dfdfbfb3f22680 [formerly 2694d0b183]]
Former-commit-id: fa39d6a984adc4ca8f8c82c5df145c336885a53f [formerly 94543f8081bc18b1a39daf8500cfa7e0b1ba7393]
Former-commit-id: 809aae62e28a3f99a01854f71fcd5a85f89d2972
2017-01-31 08:05:27 -05:00
Godeps Now vendored, with Bolt v1.2.0 2017-01-31 08:05:27 -05:00
install Removed ~ 2016-03-19 11:32:18 -04:00
keystore Create keystore.js 2016-12-13 06:59:04 -08:00
letsencrypt Removed ~ 2016-03-19 11:32:31 -04:00
static Extended uhoh timer 2016-06-29 20:11:20 -04:00
templates Bumped version 2016-06-29 20:07:01 -04:00
vendor Now vendored, with Bolt v1.2.0 2017-01-31 08:05:27 -05:00
.gitattributes Create .gitattributes 2016-03-15 20:51:09 -04:00
.gitignore Initial commit 2016-02-06 08:28:40 -05:00
db.go Removed some print statements 2016-03-30 12:57:50 -04:00
Dockerfile Added Dockerfile/supervisor, but need to use environmental variables to change domain name 2016-08-17 10:25:19 -04:00
encryption.go Added encryption/decryption 2016-03-14 09:42:19 -04:00
LICENSE Initial commit 2016-02-06 08:28:40 -05:00
main.go Added debug mode, Fix #55 2016-09-09 15:39:45 -04:00
makeBinaries.py makeBinaries added 2016-03-15 08:56:35 -04:00
Makefile Version bump 2016-09-09 15:43:19 -04:00
ratelimiter.go Removed extraneous fmt. 2016-03-28 20:21:06 -04:00
README.md Version bump 2016-09-10 07:59:02 -04:00
RELEASE.md Updated readme, added release 2016-03-29 12:48:07 -04:00
routes.go Passwords stored as hashes instead of on the server 2016-09-10 07:45:36 -04:00
supervisord.conf Added Dockerfile/supervisor, but need to use environmental variables to change domain name 2016-08-17 10:25:19 -04:00
utils.go Passwords stored as hashes instead of on the server 2016-09-10 07:45:36 -04:00
websockets.go Remove access control 2016-12-12 19:58:18 -08:00

Logo

cowyo.com

Version 1.1.1 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, syntax highlighting, command line support, content-delivery, 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.


Syntax highlighting. If you use a coding extension (e.g. .py, .md, .txt, .js, ...) then you'll automatically see syntax highlighting and line numbers.

Coding syntax is provided if you use an extension


CLI tools. Want to upload/download from the command line? Its super easy. Upload/download files using curl with a simple command:

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

or just skip the file-creation step and let cowyo figure out a name for you:

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

Content Delivery. Want use a script on your own domain? Just use the extension /raw with optional versioning (e.g. /raw?version=1). cowyo will serve these files with a wildcard Access-Control-Allow-Origin so they will work anywhere. Check out a live example on this JSFiddle.

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

From release

Just download the latest release, unzip and run. Then open your browser to the specified address.

From source

First install Go 1.6+.

$ git clone https://github.com/schollz/cowyo.git
$ cd cowyo
$ make
$ ./cowyo

Then open your browser to the specified address.

From Docker

$ docker pull schollz/cowyo
$ docker run -it -p 8003:8003 -v /local/dir/to/store/data:/data schollz/cowyo

Then open your browser to 127.0.0.1:8003.

Contact

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

Acknowledgements

Thanks to tscholl2 and sjsafranek.

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

File uploading from transfer.sh, licensed by MIT license.

License

The MIT License (MIT)

Copyright (c) 2016 Zack

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.