summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile29
-rwxr-xr-xconfigure21
-rw-r--r--doc/Makefile5
-rw-r--r--doc/rhdropbox.8180
4 files changed, 232 insertions, 3 deletions
diff --git a/Makefile b/Makefile
index b3bf3fd..02dc4a1 100644
--- a/Makefile
+++ b/Makefile
@@ -84,6 +84,11 @@ INSTALL_TARGETS += install-man
REMOVE_TARGETS += remove-man
endif
+ifdef EXAMPLESDIR
+INSTALL_TARGETS += install-examples
+REMOVE_TARGETS += remove-examples
+endif
+
install: all $(INSTALL_TARGETS)
install-bin: $(EXECUTABLE)
@@ -92,12 +97,30 @@ install-bin: $(EXECUTABLE)
install-etc:
$(INSTALL) -d $(DESTDIR)$(ETCDIR)/$(EXECUTABLE)
- $(INSTALL) -m 755 newfile.sh $(DESTDIR)$(ETCDIR)/$(EXECUTABLE)/
+ @ echo "example configurations can be found at $(EXAMPLESDIR)/$(EXECUTABLE)" > $(DESTDIR)$(ETCDIR)/$(EXECUTABLE)/README
install-man: manpage
$(INSTALL) -d $(DESTDIR)$(MANDIR)/man8/
$(INSTALL) -m 644 doc/rhdropbox.8 $(DESTDIR)$(MANDIR)/man8/$(EXECUTABLE).8
+install-examples:
+ $(INSTALL) -d $(DESTDIR)$(EXAMPLESDIR)/$(EXECUTABLE)
+ $(INSTALL) -m 644 etc/rhdropbox/autostart $(DESTDIR)$(EXAMPLESDIR)/$(EXECUTABLE)/autostart
+ @( cd 'etc/rhdropbox/' ; \
+ for dir in `ls`; do \
+ if [ -d $$dir ]; then \
+ echo "install $$dir configuration" ; \
+ cd $$dir ; \
+ $(INSTALL) -d $(DESTDIR)$(EXAMPLESDIR)/$(EXECUTABLE)/$$dir ; \
+ $(INSTALL) -m 644 config $(DESTDIR)$(EXAMPLESDIR)/$(EXECUTABLE)/$$dir/config ; \
+ if [ -e 'newfile.sh' ]; then \
+ $(INSTALL) -m 755 newfile.sh $(DESTDIR)$(EXAMPLESDIR)/$(EXECUTABLE)/$$dir/newfile.sh ; \
+ fi ; \
+ cd .. ; \
+ fi ; \
+ done \
+ )
+
uninstall: remove
remove: $(REMOVE_TARGETS)
@@ -106,7 +129,9 @@ remove-bin:
rm -f $(DESTDIR)$(BINDIR)/$(EXECUTABLE)
remove-etc:
- rm -f $(DESTDIR)$(ETCDIR)/init.d/$(EXECUTABLE)
+
+remove-examples:
+ rm -rf $(DESTDIR)$(EXAMPLESDIR)/$(EXECUTABLE)/
remove-man:
rm -f $(DESTDIR)$(MANDIR)/man8/$(EXECUTABLE).8
diff --git a/configure b/configure
index 59861b7..fb0b40d 100755
--- a/configure
+++ b/configure
@@ -33,6 +33,8 @@ BINDIR=''
ETCDIR=''
MANDIR=''
INSTALLMANPAGE=1
+EXAMPLESDIR=''
+INSTALLEXAMPLES=1
print_usage() {
echo "configure --help print this"
@@ -42,6 +44,8 @@ print_usage() {
echo " --sysconfdir=<DIR> the path to the system configuration directory (default: $PREFIX/etc"
echo " --mandir=<DIR> the path to the system man pages (default: $PREFIX/share/man)"
echo " --no-manpage dont't install manpage"
+ echo " --examplesdir=<DIR> the path to the examples files (default: $PREFIX/share/examples)"
+ echo " --no-examples dont't install example files"
}
for arg
@@ -65,6 +69,12 @@ do
--no-manpage)
INSTALLMANPAGE=0
;;
+ --examplesdir=*)
+ EXAMPLESDIR=${arg#--examplesdir=}
+ ;;
+ --no-examples)
+ INSTALLEXAMPLES=0
+ ;;
--ebuild-compat)
EBUILD_COMPAT=1
;;
@@ -115,6 +125,10 @@ if [ -z "$MANDIR" ]; then
MANDIR=$PREFIX/share/man
fi
+if [ -z "$EXAMPLESDIR" ]; then
+ EXAMPLESDIR=$PREFIX/share/examples
+fi
+
cat >> include.mk <<EOF
# this file was created automatically
# do not edit this file directly
@@ -138,4 +152,11 @@ else
echo "not installing manpage"
fi
+if [ $INSTALLEXAMPLES -eq 1 ]; then
+ echo "EXAMPLESDIR := $EXAMPLESDIR" >> include.mk
+ echo "installing example files"
+else
+ echo "not installing example files"
+fi
+
exit 0
diff --git a/doc/Makefile b/doc/Makefile
index e150ef2..f13f4ab 100644
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -33,4 +33,7 @@ rhdropbox.8: rhdropbox.8.txt
manpage: rhdropbox.8
clean:
- rm -f rhdropbox.8 rhdropbox.8.xml
+ rm -f rhdropbox.8.xml
+
+realclean:
+ rm -f rhdropbox.8 \ No newline at end of file
diff --git a/doc/rhdropbox.8 b/doc/rhdropbox.8
new file mode 100644
index 0000000..ae9035d
--- /dev/null
+++ b/doc/rhdropbox.8
@@ -0,0 +1,180 @@
+'\" t
+.\" Title: rhdropbox
+.\" Author: [see the "AUTHORS" section]
+.\" Generator: DocBook XSL Stylesheets v1.75.1 <http://docbook.sf.net/>
+.\" Date: 12/19/2009
+.\" Manual: rhdropbox user manual
+.\" Source: rhdropbox
+.\" Language: English
+.\"
+.TH "RHDROPBOX" "8" "12/19/2009" "rhdropbox" "rhdropbox user manual"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+rhdropbox \- radio helsinki dropbox daemon
+.SH "SYNOPSIS"
+.sp
+.nf
+\fBrhdropbox\fR
+ [ \fB\-h|\-\-help\fR ]
+ [ \fB\-D|\-\-nodaemonize\fR ]
+ [ \fB\-u|\-\-username\fR <username> ]
+ [ \fB\-g|\-\-groupname\fR <groupname> ]
+ [ \fB\-C|\-\-chroot\fR <path> ]
+ [ \fB\-P|\-\-write\-pid\fR <filename> ]
+ [ \fB\-L|\-\-log\fR <target>:<level>[,<param1>[,<param2>[\&.\&.]]] ]
+ [ \fB\-s|\-\-command\-sock\fR <unix sock> ]
+ [ \fB\-x|\-\-script\fR <script> ]
+.fi
+.SH "DESCRIPTION"
+.sp
+\fBrhdropbox\fR is a small daemon which can be used to watch one or more directories for new files\&. When a new file is detected a external program\&. Additional directories can be added to the damons watch list using a simple unix socket based command interface\&.
+.SH "OPTIONS"
+.sp
+The following options can be passed to the \fBrhdropbox\fR daemon:
+.PP
+\fB\-D, \-\-nodaemonize\fR
+.RS 4
+This option instructs
+\fBrhdropbox\fR
+to run in foreground instead of becoming a daemon which is the default\&.
+.RE
+.PP
+\fB\-u, \-\-username <username>\fR
+.RS 4
+run as this user\&. If no group is specified (\fB\-g\fR) the default group of the user is used\&. The default is to not drop privileges\&.
+.RE
+.PP
+\fB\-g, \-\-groupname <groupname>\fR
+.RS 4
+run as this group\&. If no username is specified (\fB\-u\fR) this gets ignored\&. The default is to not drop privileges\&.
+.RE
+.PP
+\fB\-C, \-\-chroot <path>\fR
+.RS 4
+Instruct
+\fBrhdropbox\fR
+to run in a chroot jail\&. The default is to not run in chroot\&.
+.RE
+.PP
+\fB\-P, \-\-write\-pid <filename>\fR
+.RS 4
+Instruct
+\fBrhdropbox\fR
+to write it\(cqs pid to this file\&. The default is to not create a pid file\&.
+.RE
+.PP
+\fB\-L, \-\-log <target>:<level>[,<param1>[,<param2>[\&.\&.]]]\fR
+.RS 4
+add log target to logging system\&. This can be invoked several times in order to log to different targets at the same time\&. Every target hast its own log level which is a number between 0 and 5\&. Where 0 means disabling log and 5 means debug messages are enabled\&.
+
+The file target can be used more the once with different levels\&. If no target is provided at the command line a single target with the config
+\fBsyslog:3,rhdropbox,daemon\fR
+is added\&.
+
+The following targets are supported:
+.PP
+\fBsyslog\fR
+.RS 4
+log to syslog daemon, parameters <level>[,<logname>[,<facility>]]
+.RE
+.PP
+\fBfile\fR
+.RS 4
+log to file, parameters <level>[,<path>]
+.RE
+.PP
+\fBstdout\fR
+.RS 4
+log to standard output, parameters <level>
+.RE
+.PP
+\fBstderr\fR
+.RS 4
+log to standard error, parameters <level>
+.RE
+.RE
+.PP
+\fB\-s|\-\-command\-sock <unix sock>\fR
+.RS 4
+
+\fBrhdropbox\fR
+will listen on this unix socket for incoming commands\&. See next chapter for details\&. The default is /var/run/rhdropbox/cmd\&.sock
+.RE
+.PP
+\fB\-x|\-\-script <script>\fR
+.RS 4
+The script which should be called when a new file is found\&. The following parameter are passed to the scipt:
+.PP
+\fB<path>\fR
+.RS 4
+the path to the folder containing the new file
+.RE
+.PP
+\fB<filename>\fR
+.RS 4
+the name of the new file relative to <path>
+.RE
+.PP
+\fB<filesize>\fR
+.RS 4
+the size of the file right after the event was received, this can be used to determine wheter the file is complete\&. The script should consider a file to be complete when it size doesn\(cqt change 3\-5seconds after the event got received\&.
+.RE
+.RE
+.SH "COMMAND INTERFACE"
+.sp
+\fBrhdropbox\fR is listening for incoming commands at the unix socket speciefied by the \-s|\-\-command\-sock parameter\&. You can connect to this socket for example using socat:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+# socat UNIX\-CONNECT:/var/run/rhdropbox/rhdropbox\&.sock STDIO
+.fi
+.if n \{\
+.RE
+.\}
+.sp
+All commands have to end with \fI\en\fR\&. The following commands are supported:
+.PP
+\fBadd <path>\fR
+.RS 4
+Add a path to the list of directories to be watched\&. If the command succeds nothing is returned\&. In case of an error a string of the form "Error: <reason>\en" is returned\&.
+.RE
+.PP
+\fBremove <path>\fR
+.RS 4
+Remove the path from the list of directories\&. If the command succeds nothing is returned\&. In case of an error a string of the form "Error: <reason>\en" is returned\&.
+.RE
+.PP
+\fBstatus\fR
+.RS 4
+Returns the complete list of all directories from the wath list\&.
+.RE
+.PP
+\fBlisten [request|status|none]\fR
+.RS 4
+Add the client to the status and or request listeners\&. When no parameter is passed to this command the client listens to all messages\&. A status listener gets a list of all directories whenever somebody else adds or removes a path to the watch list\&. It also receives the list when somebody sends a status command to the daemon\&. A request listener also receives add and remove requests by other clients connected to the command interface\&.
+.RE
+.PP
+\fBlog <text>\fR
+.RS 4
+Print <text> to the logtargets of the daemon\&.
+.RE
+.SH "BUGS"
+.sp
+Most likely there are some bugs in \fBrhdropbox\fR\&. If you find a bug, please let the developers know at equinox@helsinki\&.at\&. Of course, patches are preferred\&.
+.SH "AUTHORS"
+.sp
+Christian Pointner <equinox@heslinki\&.at>
+.SH "COPYING"
+.sp
+Copyright (C) 2009 Christian Pointner\&. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version\&.