diff options
-rw-r--r-- | Makefile | 29 | ||||
-rwxr-xr-x | configure | 21 | ||||
-rw-r--r-- | doc/Makefile | 5 | ||||
-rw-r--r-- | doc/rhdropbox.8 | 180 |
4 files changed, 232 insertions, 3 deletions
@@ -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 @@ -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\&. |