Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
GNUNET-PUBLISH(1)	     General Commands Manual	       GNUNET-PUBLISH(1)

NAME
     gnunet-publish  -- a command line interface for publishing new content into
     GNUnet

SYNOPSIS
     gnunet-publish [-a LEVEL | --anonymity=LEVEL]
		    [-c FILENAME | --config=FILENAME] [-D | --disable-extractor]
		    [-E | --enable-creation-time] [-e | --extract] [-h | --help]
		    [-k KEYWORD | --key=KEYWORD]
		    [-L LOGLEVEL | --loglevel=LOGLEVEL]
		    [-m TYPE:VALUE | --meta=TYPE:VALUE] [-n | --noindex]
		    [-N ID | --next=ID] [-p PRIORITY | --prio=PRIORITY]
		    [-P NAME | --pseudonym=NAME]
		    [-r LEVEL | --replication=LEVEL] [-s | --simulate-only]
		    [-t ID | --this=ID] [-u URI | --uri=URI] [-v | --version]
		    [-V | --verbose] <FILENAME>

DESCRIPTION
     In order to share files with other GNUnet users, the files  must  first  be
     made  available  to  GNUnet.  GNUnet does not automatically share all files
     from a certain directory  (however,  you  can  do	this  with  gnunet-auto-
     share(1)).  In  fact,  even files that are downloaded are not automatically
     shared.

     In order to start sharing files, the  files  must	be  added  either  using
     gnunet-publish or a graphical interface such as gnunet-fs-gtk(1).	The com-
     mand  line tool gnunet-publish is more useful if many files are supposed to
     be added.	gnunet-publish can automatically publish batches of  files,  re-
     cursively	publish  directories,  create  directories  that  can be browsed
     within GNUnet and publish file lists in a namespace.  When run on a  direc-
     tory,  gnunet-publish  will  always recursively publish all of the files in
     the directory.

     gnunet-publish can automatically extract keywords from the files  that  are
     shared.   Users  that  want  to  download files from GNUnet use keywords to
     search for the appropriate content.  You  can  disable  keyword  extraction
     with  the	-D  option.   You can manually add keywords using the -k option.
     The keywords are case-sensitive.

     In addition to searching for files by  keyword,  GNUnet  allows  organizing
     files  into directories.  With directories, the user only needs to find the
     directory in order to be able to download any of the files  listed  in  the
     directory.  Directories can contain pointers to other directories.

     With  gnunet-publish,  it	is easy to create new directories simultaneously
     when adding the files.  Simply pass the name of a directory  instead  of  a
     file.

     Since  keywords can be spammed (any user can add any content under any key-
     word), GNUnet supports namespaces.  A namespace is a subset of the  search-
     space  into  which  only the holder of a certain pseudonym can add content.
     Any GNUnet user can create any number of  pseudonyms  using  gnunet-pseudo-
     nym(1).  Pseudonyms are stored in the user's GNUnet directory.  While pseu-
     donyms  are  locally  identified with an arbitrary string that the user se-
     lects when the pseudonym is created, the namespace is globally  known  only
     under the hash of the public key of the pseudonym.  Since only the owner of
     the  pseudonym can add content to the namespace, it is impossible for other
     users to pollute the namespace.  gnunet-publish automatically publishes the
     top-directory (or the only file if only one file  is  specified)  into  the
     namespace if a pseudonym is specified.

     It  is  possible to update content in GNUnet if that content was placed and
     obtained from a particular namespace.  Updates are only possible  for  con-
     tent  in  namespaces  since this is the only way to assure that a malicious
     party can not supply counterfeited  updates.   Note  that	an  update  with
     GNUnet  does not make the old content unavailable, GNUnet merely allows the
     publisher to point users to more recent versions.	You can use the  -N  op-
     tion  to  specify	the future identifier of an update.  When using this op-
     tion, a GNUnet client that finds the current (-t) identifier will automati-
     cally begin a search for the update (-N) identifier.  If you later  publish
     an  update  under	the  (-N)  identifier, both results will be given to the
     user.

     You can use automatic meta-data extraction (based on libextractor)  or  the
     command-line option -m to specify meta-data.  For the -m option you need to
     use the form keyword-type:value.  For example, use "-m os:Linux" to specify
     that  the	operating system is Linux.  Common meta-data types are "author",
     "title", "mimetype", "filename", "language", "subject" and  "keywords".   A
     full  list  can  be obtained from the extract tool using the option --list.
     The meta-data is used to help users in searching for files on the	network.
     The keywords are case-sensitive.

     GNUnet  supports two styles of publishing files on the network.  Publishing
     a file means that a copy of the file is made in the local (!)  database  of
     the  node.   Indexing  a file means that an index is added to the local (!)
     database with symbolic links to the file itself.  The links  will	use  the
     SHA-512  hash  of	the  entire file as the filename.  Indexing is generally
     significantly more efficient and the  default  choice.   However,	indexing
     only  works  if the indexed file can be read (using the same absolute path)
     by gnunet-service-fs.  If this is not the case,  indexing	will  fail  (and
     gnunet-publish  will  automatically revert to publishing instead).  Regard-
     less of which method is used to publish the file, the file will  be  slowly
     (depending on how often it is requested and on how much bandwidth is avail-
     able)  dispersed into the network.  If you publish or index a file and then
     leave the network, it will almost always NOT be available anymore.

     The options are as follows:

     -a LEVEL | --anonymity=LEVEL
	     This option can  be  used	to  specify  additional  anonymity  con-
	     straints.	 The default is 1.  If set to 0, GNUnet will publish the
	     file non-anonymously and in fact sign  the  advertisement	for  the
	     file using your peer's private key.  This will allow other users to
	     download  the  file as fast as possible, including using non-anony-
	     mous methods (discovery via DHT and CADET transfer).  If you set it
	     to 1 (default), you use the standard  anonymous  routing  algorithm
	     (which  does not explicitly leak your identity).  However, a power-
	     ful adversary may still be able to perform traffic  analysis  (sta-
	     tistics) to over time discovery your identity.  You can gain better
	     privacy  by  specifying  a  higher level of anonymity (using values
	     above 1).	This tells FS that it must hide  your  own  requests  in
	     equivalent-looking  cover	traffic.  This should confound an adver-
	     saries traffic analysis, increasing the time and  effort  it  would
	     take to discover your identity.  However, it also can significantly
	     reduce  performance,  as your requests will be delayed until suffi-
	     cient cover traffic is available.	The specific numeric value  (for
	     anonymity	levels	above  1)  is simple: Given an anonymity level L
	     (above 1), each request FS makes on your behalf must be  hidden  in
	     L-1  equivalent requests of cover traffic (traffic your peer routes
	     for others) in the same time-period.  The time-period is twice  the
	     average  delay  by  which GNUnet artificially delays traffic.  Note
	     that regardless of the anonymity level you choose, peers that cache
	     content in the network always use anonymity level 1.

     -c FILENAME | --config=FILENAME
	     Use alternate config file FILENAME.  If this option is  not  speci-
	     fied, the default is ~/.config/gnunet.conf.

     -D | --disable-extractor
	     Disable use of GNU libextractor for finding additional keywords and
	     metadata.

     -E | --enable-creation-time
	     Enable  use  of  creation time timestamp in metadata.  Setting this
	     information will leak information about the time at  which  a  file
	     was made available.

     -e | --extract
	     Print  the  list  of keywords that will be used for each file given
	     the current options.  Do not perform any indexing or publishing.

     -h | --help
	     Print the help page.

     -k KEYWORD | --key=KEYWORD
	     Additional key to index the content with  (to  add  multiple  keys,
	     specify  multiple	times).   Each additional key is case-sensitive.
	     Can be specified multiple times.  The keyword is  only  applied  to
	     the top-level file or directory.

     -L LOGLEVEL | --loglevel=LOGLEVEL
	     Change the loglevel.  Possible values for LOGLEVEL are ERROR, WARN-
	     ING, INFO and DEBUG.

     -m TYPE:VALUE | --meta=TYPE:VALUE
	     For  the  main  file  (or directory), set the metadata of the given
	     TYPE to the given VALUE.  Note that this will not add  the  respec-
	     tive  VALUE  to  the  set	of  keywords under which the file can be
	     found.

     -n | --noindex
	     Executive summary: You probably don't need it.  Do not index,  full
	     publishing.  Note that directories, information for keyword search,
	     namespace search and indexing data are always published (even with-
	     out  this	option).   With  this  option, every block of the actual
	     files is stored in encrypted form in the block database of the  lo-
	     cal  peer.   While  this adds security if the local node is compro-
	     mised (the adversary snags your machine), it is significantly  less
	     efficient	compared  to  on-demand encryption and is definitely not
	     recommended for large files.

     -N ID | --next=ID
	     Specifies the next identifier of a future version of the file to be
	     published under the same pseudonym.  This option is only valid  to-
	     gether with the -P option.  This option can be used to specify what
	     the  identifier  of  an  updated version will look like.  Note that
	     specifying -i and -N without -t is not allowed.

     -p PRIORITY | --prio=PRIORITY
	     Executive summary: You probably don't need it.  Set the priority of
	     the published content (default: 365).  If	the  local  database  is
	     full,  GNUnet  will  discard  the	content with the lowest ranking.
	     Note that ranks change over time depending on popularity.	The  de-
	     fault  should be high enough to preserve the locally published con-
	     tent in favor of content that migrates from other peers.

     -P NAME | --pseudonym=NAME
	     For the top-level directory or file, places the file into the name-
	     space identified by the pseudonym NAME.  NAME must be a valid pseu-
	     donym managed by gnunet-identity(1).

     -r LEVEL | --replication=LEVEL
	     Set the desired replication level.  If CONTENT_PUSHING  is  set  to
	     YES,  GNUnet  will  push  each  block (for the file) LEVEL times to
	     other peers before doing normal "random" replication  of  all  con-
	     tent.   This  option  can be used to push some content out into the
	     network harder.  Note that pushing content  LEVEL	times  into  the
	     network does not guarantee that there will actually be LEVEL repli-
	     cas.

     -s | --simulate-only
	     When  this option is used, gnunet-publish will not actually publish
	     the file but just simulate what would be done.  This can be used to
	     compute the GNUnet URI for a file without actually sharing it.

     -t ID | --this=ID
	     Specifies the identifier under which the file is  to  be  published
	     under  a pseudonym.  This option is only valid together with the -P
	     option.

     -u URI | --uri=URI
	     This option can be used to specify the URI of a file instead  of  a
	     filename (this is the only case where the otherwise mandatory file-
	     name  argument  must  be omitted).  Instead of publishing a file or
	     directory and using the corresponding URI, gnunet-publish will  use
	     this  URI and perform the selected namespace or keyword operations.
	     This can be used to add additional keywords to a file that has  al-
	     ready  been shared or to add files to a namespace for which the URI
	     is known but the content is not locally available.

     -v | --version
	     Print the version number.

     -V | --verbose
	     Be verbose.  Using  this  option  causes  gnunet-publish  to  print
	     progress  information  and  at the end the file identification that
	     can be used to download the file from GNUnet.

EXAMPLES
   BASIC EXAMPLES
     Index a file COPYING:

	   gnunet-publish COPYING

     Publish a file COPYING:

	   gnunet-publish -n COPYING

     Index a file COPYING with the keywords gpl and test:

	   gnunet-publish -k gpl -k test COPYING

     Index a file COPYING with description GNU License, mime-type text/plain and
     keywords gpl and test:

	   gnunet-publish  -m  description:GNU	License  -k  gpl  -k   test   -m
	   mimetype:text/plain COPYING

   USING DIRECTORIES
     Index the files COPYING and AUTHORS with keyword test and build a directory
     containing  the  two files.  Make the directory itself available under key-
     word gnu and disable keyword extraction using libextractor:

	   mkdir gnu; mv COPYING AUTHORS gnu/; gnunet-publish -k test -k gnu  -D
	   gnu/

     Neatly  publish an image gallery in kittendir/ and its subdirs with keyword
     kittens for the directory but no keywords for the individual files or  sub-
     dirs (-n).  Force description for all files.

	   gnunet-publish   -n	 -m  description:Kitten  collection  -k  kittens
	   kittendir/

   SECURE PUBLISHING WITH NAMESPACES
     Publish file COPYING with pseudonym RIAA-2 (-P)  and  with  identifier  gpl
     (-t) and no updates.

	   gnunet-publish -P RIAA-2 -t gpl COPYING

     Recursively index /home/ogg and build a matching directory structure.  Pub-
     lish  the top-level directory into the namespace under the pseudonym RIAA-2
     (-P) under identifier 'MUSIC' (-t) and promise to provide	an  update  with
     identifier 'VIDEOS' (-N):

	   gnunet-publish -P RIAA-2 -t MUSIC -N VIDEOS /home/ogg

     Recursively  publish  (-n)  /var/lib/mysql  and  build a matching directory
     structure, but disable the use of libextractor to	extract  keywords  (-n).
     Print  the  file  identifiers  (-V) that can be used to retrieve the files.
     This will store a copy of the MySQL database in GNUnet but  without  adding
     any  keywords  to	search for it.	Thus only people that have been told the
     secret file identifiers printed with the -V option can  retrieve  the  (se-
     cret?) files:

	   gnunet-publish -nV /var/lib/mysql

     Create  a	namespace entry 'root' in namespace MPAA-1 and announce that the
     next update will be called 'next':

	   gnunet-publish -P MPAA-1 -t root -N next noise.mp3

     Update the previous entry, do not allow any future updates:

	   gnunet-publish -P MPAA-1 -t next noise_updated.mp3

FILES
     ~/.config/gnunet.conf GNUnet configuration file

SEE ALSO
     extract(1),  gnunet-auto-share(1),  gnunet-download(1),   gnunet-fs-gtk(1),
     gnunet-identity(1), gnunet-search(1), gnunet.conf(5)

     The  full	documentation  for gnunet is maintained as a Texinfo manual.  If
     the info(1) and gnunet programs are properly installed at	your  site,  the
     command

	   info gnunet

     should give you access to the complete handbook,

	   info gnunet-c-tutorial

     will give you access to a tutorial for developers.

     Depending	on  your  installation,  this  information  is also available in
     gnunet(7)and gnunet-c-tutorial(7).

BUGS
     Report bugs by using https://bugs.gnunet.org or by sending electronic  mail
     to <gnunet-developers@gnu.org>.

FreeBSD ports 15.quarterly	November 16, 2015	       GNUNET-PUBLISH(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=gnunet-publish&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help