repo
{
  ; Section defining the list of Data prefixes to register.
  ; Additionally defines how many components off the end of these Data prefixes to insert into NFD.
  ; The 'prefix' option can be repeated multiple times.
  ; 'registration-subset' defines how many components to exclude. This includes the implicit digest
  ; at the end of the Data name.
  data
  {
    registration-subset 2
    prefix "ndn:/example/data/1"
    prefix "ndn:/example/data/2"
  }

  ; Section defining the list of command prefixes (to insert or delete Data) to register.
  command
  {
    ; Only the 'prefix' option is allowed here and it can be repeated multiple times.
    prefix "ndn:/example/repo/1"
    prefix "ndn:/example/repo/2"
  }

  ; Section to specify where the data should be stored.
  storage
  {
    method "sqlite"              ; Currently, only the sqlite storage engine is supported
    path "/var/lib/ndn/repo-ng"  ; Path to repo-ng storage folder
    max-packets 100000
  }

  ; Section to configure the TCP bulk insert capability.
  ; An empty section enables TCP bulk insert to listen on localhost, port 7376.
  tcp_bulk_insert
  {
    ; host "localhost"  ; Set to listen on a different IP address or hostname
    ; port 7376         ; Set to listen on a different port number
  }

  validator
  {
    ; The following rule disables all security in the repo
    trust-anchor
    {
      type any
    }

    ; The following rules are examples to validate signed Interests for commands and data.
    ; One can define their own rules for signed Interests and Data packets to be inserted
    ; according to the Validator Configuration File Format.
    ; See https://docs.named-data.net/ndn-cxx/current/tutorials/security-validator-config.html
    ;
    ; rule
    ; {
    ;   id "Simple Rule For Interests"
    ;   for interest
    ;   filter
    ;   {
    ;     type name
    ;     name /example/repo/1
    ;     relation is-prefix-of
    ;   }
    ;   checker
    ;   {
    ;     type fixed-signer
    ;     sig-type rsa-sha256
    ;     signer
    ;     {
    ;       type file
    ;       ; repo-ng.cert.sample is a non-existent certificate.
    ;       ; One should create their certificates using the ndnsec tool.
    ;       file-name "repo-ng.cert.sample"
    ;     }
    ;   }
    ; }
    ;
    ; rule
    ; {
    ;   id "Simple Rule For Data"
    ;   for data
    ;   filter
    ;   {
    ;     type name
    ;     name /example/data/1
    ;     relation is-prefix-of
    ;   }
    ;   checker
    ;   {
    ;     type fixed-signer
    ;     sig-type rsa-sha256
    ;     signer
    ;     {
    ;       type file
    ;       ; repo-ng.cert.sample is a non-existent certificate.
    ;       ; One should create their certificates using the ndnsec tool.
    ;       file-name "repo-ng.cert.sample"
    ;     }
    ;   }
    ; }
  }
}
