mirror of
https://codeberg.org/scip/note.git
synced 2025-12-17 04:31:02 +01:00
FIXED: A bug caused note to save bogus timestamps after editing a note.
CHANGED: It does no more print 3 newlines before the menu in interactive mode.
FIXED: Some more vars will be resetted during each loop in interactive mode.
$ListType.
262 lines
7.7 KiB
Plaintext
262 lines
7.7 KiB
Plaintext
note 0.4.2 by Thomas Linden, 23/01/2000
|
|
|
|
|
|
Introduction
|
|
============
|
|
|
|
This is a small console program written in
|
|
perl, which allows you to manage notes similar
|
|
to programs like "knotes" from commandline.
|
|
|
|
This version is completely rewritten and it is
|
|
able to display colored output.
|
|
|
|
You can add, edit, list and delete as many notes
|
|
as you want. You can run note from the commandline
|
|
or interactive from within your console.
|
|
|
|
There are now two version of note in one package:
|
|
o (binary) the binary version resists in the
|
|
subdirectory "binary-db".
|
|
It uses a binary file for data storage.
|
|
The format of this file will be described
|
|
later on.
|
|
o (mysql) the mysql version resists in the
|
|
subdirectory mysql-db. It uses a mysql
|
|
database as backend. There are some
|
|
special installation steps required in
|
|
order to run the mysql version which are
|
|
documented in the README within this
|
|
subdirectory.
|
|
|
|
|
|
|
|
Requirements
|
|
============
|
|
|
|
You need the following things:
|
|
o perl installed (5.004x)
|
|
o The module IO::Seekable, which should be
|
|
already installed with your perl distributuion.
|
|
o Mysql.pm if you want to use the mysql version.
|
|
|
|
|
|
|
|
Installation
|
|
============
|
|
|
|
Simple: Copy it to a place inside your $PATH,
|
|
probably as root. (for example to /usr/bin).
|
|
|
|
For installation instructions for the mysql version see
|
|
mysql-db/README.
|
|
|
|
|
|
|
|
Configuration
|
|
=============
|
|
|
|
This version of note doesn't neccessarily need
|
|
a configuration file. But you can have one and change
|
|
some default values. Take a look to the file config/noterc
|
|
provided with this tarball. There are detailed instructions
|
|
about every available parameter.
|
|
Simply copy this file into your home-directory and name it
|
|
.noterc
|
|
|
|
|
|
|
|
Usage
|
|
=====
|
|
Usage of the mysql and binary version is similar, there
|
|
are only differences between the database backends of
|
|
each other.
|
|
|
|
If you don't know, how to run note, try "note -h" first.
|
|
It will tell you all available commandline options.
|
|
|
|
To create a new note, simply run "note". You can enter
|
|
the note (the length is by default limited to 1024 bytes,
|
|
which you can change from your config file).
|
|
End by typing a . on a line itself. note will tell you the
|
|
number of the note.
|
|
|
|
If you want to view the note, type "note 1", if the notenumber
|
|
was 1.
|
|
|
|
If you want to get an overview of all notes, type "note -l".
|
|
You will get a list of all notes, containing the number,
|
|
the first line and the creation date.
|
|
|
|
To edit a certain note, type "note -e 1". It will invoke your
|
|
editor (vi or pico). You can edit it, after saving, note
|
|
will store the changed note to the database.
|
|
|
|
Of course you can drop a certain note: "note -d 1" deletes
|
|
note number 1. If a note in the middle or the beginning of
|
|
the database will be deleted, note will recount the other
|
|
existent notes. For example there are 3 notes, number 1, 2
|
|
and 3. If you delete number 2, then number 3 will become
|
|
number 2.
|
|
|
|
If you cannot remember, which note you are looking for, you
|
|
can use the search capability of note: "note -s <searchstring>".
|
|
note will search the whole note database case insensitive for
|
|
an occurence of this string and tell you the number and first-
|
|
line it have.
|
|
|
|
Instead of using note from the commandline you can use the
|
|
interactive mode. Run note with "note -i". If you need assistance
|
|
type "?" or "h" at the "command>" prompt. The interactive mode
|
|
provides you the most functions of note.
|
|
|
|
You can also dump the contents of your note-database into a
|
|
ASCII-textfile. You can use this file later to import it into
|
|
your note-database. This is usefull, if you want quickly trans-
|
|
fer your notes from one host to another (i.e. you could mail
|
|
your note-dump form your office to home and import it there
|
|
for further use).
|
|
The dumps from the two versions of note are in the same format.
|
|
|
|
|
|
|
|
Format of the notedb (binary version)
|
|
=====================================
|
|
|
|
The database where the notes are stored is a binary file of
|
|
the following format:
|
|
It consists of three fixed length fields per entry. The fields
|
|
have the following types:
|
|
o Number: Integer (1 byte)
|
|
o Note: String (default 1024 bytes)
|
|
o Time: String (default 64 bytes)
|
|
You can change the sizes of the fields "Note" and "Time" in
|
|
the configfile "~/.noterc". If it does not exist, the above
|
|
defaults will be used.
|
|
If the data to be stored is smaller then the size of the field,
|
|
it will be filled with ZERO's ("\0"). The Note and the Time
|
|
fields will be uuencoded before storage. Of course, this is
|
|
no security, never mind...
|
|
|
|
|
|
|
|
The note-database (mysql version)
|
|
=================================
|
|
|
|
The sql-database for the mysql version has the following design:
|
|
+--------+---------+------+-----+---------+----------------+
|
|
| Field | Type | Null | Key | Default | Extra |
|
|
+--------+---------+------+-----+---------+----------------+
|
|
| number | int(10) | | PRI | 0 | auto_increment |
|
|
| note | text | YES | | NULL | |
|
|
| date | text | YES | | NULL | |
|
|
+--------+---------+------+-----+---------+----------------+
|
|
|
|
|
|
|
|
Format of the ASCII-dump file (note -D)
|
|
=======================================
|
|
|
|
The dump of a note-database (if you use note -D) has the following
|
|
format:
|
|
|
|
--- snip ---
|
|
Number: 1
|
|
Timestamp: 14.01.2000 00:25:01
|
|
This is a sample text
|
|
in a sample note.
|
|
|
|
Number: 2
|
|
Timestamp: 14.01.2000 02:37:40
|
|
And this is another sample
|
|
of a note.
|
|
--- snip ---
|
|
|
|
You can reimport a dump into your note-database with "note -I <file>"
|
|
Existing notes will not overwritten, note will append the imported
|
|
data to your note-database.
|
|
|
|
|
|
|
|
|
|
Security
|
|
========
|
|
|
|
You can't use the following hints with the mysql version!
|
|
Refer to the mysql manual for more informations about
|
|
security of mysql databases:
|
|
http://www.mysql.org/Manual_chapter/manual_Privilege_system.html
|
|
|
|
If you want to protect the notedb against unauthorized persons
|
|
(even root), you might want to use pgp. I use gpg (GNU privacy
|
|
guard), which is compatible to pgp, usage should be similar.
|
|
You could add a function to your .profile or .bashrc or whatever:
|
|
--- snip ---
|
|
function note
|
|
{
|
|
gpg -o ~/.notedb -d ~/.notedb.gpg
|
|
note $1 $2 $3
|
|
gpg -e ~/.notedb --yes -r username
|
|
rm -rf ~/.notedb
|
|
}
|
|
--- snip ---
|
|
You should replace <username> with your real username. After applying
|
|
this function to your .profile, issue the following command:
|
|
"source .profile"
|
|
You shell will reread the file, so you can try it out without the need
|
|
of new login.
|
|
This function assumes, there exists a file called "~/.notedb.gpg",
|
|
therefore you need to encrypt your notedb once before you can use this
|
|
funcion:
|
|
"gpg -e ~/.notedb --yes -r username"
|
|
|
|
Here is, how to do it with pgp, create a shell script with the following
|
|
content:
|
|
--- snip ---
|
|
#!/bin/sh
|
|
/bin/echo -n "passphrase:"
|
|
pgp -o ~/.notedb -d ~/.notedb.pgp > /dev/null 2>&1
|
|
rm -f ~/.notedb.pgp > /dev/null 2>&1
|
|
note.pl $1 $2 $3
|
|
pgp -e ~/.notedb tlinden > /dev/null 2>&1
|
|
rm -f ~/.notedb > /dev/null 2>&1
|
|
--- snip ---
|
|
Do "chmod 700 whatevername". That's it.
|
|
|
|
If you don't make use of encryption, I suggest you to chmod it:
|
|
"chmod 600 .notedb"
|
|
So, only you can read the file (and root or any intruder who became root).
|
|
|
|
|
|
|
|
Comments
|
|
========
|
|
|
|
You can send any comments to Thomas Linden <tom@daemon.de>.
|
|
If you find a bug or if you have a suggestion for improvement of the script
|
|
feel free to send me a patch ;-)
|
|
|
|
|
|
|
|
License
|
|
=======
|
|
|
|
This script comes with absolutely NO WARRANTY. It is distributed under the
|
|
terms of the GNU General Public License. Use it at your own risk :-)
|
|
You can read the complete GPL at: http://www.gnu.org/copyleft/gpl.html
|
|
|
|
|
|
|
|
Author
|
|
======
|
|
|
|
The author is Thomas Linden.
|
|
|
|
|
|
|
|
|
|
Last changed
|
|
============
|
|
|
|
23.01.2000
|