The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

solid_auth.pl - A Solid management tool

SYNOPSIS

      # Set your default webid
      export SOLID_WEBID=https://timbl.inrupt.net/profile/card#me

      # Authentication to a pod
      solid_auth.pl authenticate

      # Get the http headers for a authenticated request
      solid_auth.pl headers GET https://timbl.inrupt.net/inbox/

      # Act like a curl command and fetch authenticated content
      solid_auth.pl curl -- -X GET https://timbl.inrupt.net/inbox/

      # Add some data
      solid_auth.pl curl -- -X POST \
            -H "Content-Type: text/plain" \
            -d "abc" \
            https://timbl.inrupt.net/public/
    
      # Add a file
      solid_auth.pl curl -- -X PUT \
            -H "Content-Type: application/ld+json" \
            -d "@myfile.jsonld" \
            https://timbl.inrupt.net/public/myfile.jsonld 

      # Set a solid base url
      export SOLID_REMOTE_BASE=https://timbl.inrupt.net

      # List all resources on some Pod path
      solid_auth.pl list /public/

      # Get some data
      solid_auth.pl get /inbox/

      # Post some data
      solid_auth.pl post /inbox/ myfile.jsonld 

      # Put some data
      solid_auth.pl put /public/myfile.txt myfile.txt 

      # Create a folder
      solid_auth.pl put /public/mytestfolder/

      # Delete some data
      solid_auth.pl delete /public/myfile.txt

      # Mirror a resource, container or tree
      mkdir /data/my_copy
      solid_auth.pl -r mirror /public/ /data/my_copy

      # Upload a directory to the pod
      #  Add the -x option to do it for real (only a test without this option)
      solid_auth.pl -r upload /data/my_copy /public/

      # Clean all files in a container
      #  Add the -x option to do it for real (only a test without this option)
      solid_auth.pl --keep clean /demo/

      # Clean a complete container 
      #  Add the -x option to do it for real (only a test without this option)
      solid_auth.pl -r clean /demo/

ENVIRONMENT

SOLID_WEBID

Your WebId.

SOLID_REMOTE_BASE

The Base URL that is used for all delete, get, head, options post, put, patch requests.

SOLID_CLIENT_ID

The URL to a static client configuration. See etc/web-solid-auth.jsonld for an example. This file, edited for your own environment, needs to be published on some public accessible webserver.

CONFIGURATION

--webid

Your WebId.

--base

The Base URL that is used for all delete, get, head, options post, put, patch requests.

--clientid

The URL to a static client configuration. See etc/web-solid-auth.jsonld for an example. This file, edited for your own environment, needs to be published on some public accessible webserver.

--skip

Skip resources that already exist (mirror).

--delete

Delete local files that are not in the remote container (mirror).

--keep

Keep containers when cleaning data (clean).

-r

Recursive (clean, mirror, upload).

-x

Do it for real. The commands clean and upload will run by default in safe mode.

-H name=value

Add a header to a request (repeatable) for get, post, head, options and delete.

COMMAND

authenticate

Start an authentication process for your WebId. You will be presented with a URL that you need to open in a webbrowser. After a successfull login the command can be closed.

The webbrowser needs to be opened on the same host as the where you where you run the solid_auth.pl command.

headers METHOD URL

Return the Authentication and DPoP headers for a HTTP METHOD request to URL.

curl CURL-OPTS

Execute a curl command with Authentication and DPoP headers added. Add a -- option to the CURL-OPTS to stop solid_auth.pl from interpreting Curl options.

list URL

List the resources in a LDP container at URL.

mirror [-rx] [--skip] [--delete] URL DIRECTORY

Mirror the contents of a container to a local directory. Optional provide -r option for recursive mirror.

upload [-rx] DIRECTORY URL

Upload a directorty to a container. Optional provide -r option for recursive upload. With the -x option, the command will run in demo mode.

clean [-rx] [--keep] URL

Clean all resources in a directory. Optional provide -r option for recursive clean. With the -x option, the command will run in demo mode. With the --keep options all container will be kept.

get URL

Return the response of a HTTP GET request to URL.

post URL FILE [MIMETYPE]

Return the HTTP Message of a HTTP POST request of the FILE with MIMETYPE. Uses libmagic to guess the mimetype.

put URL [FILE] [MIMETYPE]

Return the HTTP Message of a HTTP PUT request of the FILE with MIMETYPE. Uses libmagic to guess the mimetype.

When the URL ends with a slash (/), then a new container will be created.

head URL

Return the HTTP Header of a HTTP HEAD request to URL.

head OPTIONS

Return the HTTP Header of a HTTP OPTIONS request to URL.

delete URL

Return the HTTP Message of a HTTP DELETE request to URL.

id_token

Show the contents of the JWT id token.

access_token

Show the contents of the JWT access token.

INSPIRATION

This was very much inspired by the Python solid-flask code by Rai http://agentydragon.com at https://gitlab.com/agentydragon/solid-flask, and Jeff Zucker's <https://github.com/jeff-zucker> Solid-Shell at https://www.npmjs.com/package/solid-shell.

COPYRIGHT AND LICENSE

This software is copyright (c) 2021 by Patrick Hochstenbach.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.