The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

App::cpanel - CLI for cPanel UAPI and API 2

SYNOPSIS

  $ cpanel uapi Notifications get_notifications_count
  $ cpanel uapi ResourceUsage get_usages
  $ cpanel uapi Fileman list_files dir=public_html
  $ cpanel uapi Fileman get_file_content dir=public_html file=index.html
  $ cpanel download public_html/index.html
  $ cpanel api2 Fileman fileop op=chmod metadata=0755 sourcefiles=public_html/cgi-bin/hello-world
  $ cpanel api2 Fileman fileop op=unlink sourcefiles=public_html/cgi-bin/hello-world
  $ cpanel api2 Fileman mkdir path= name=new-dir-at-top

  # this one is one at a time but can overwrite files
  $ cpanel api2 Fileman savefile dir=public_html/cgi-bin filename=hello-world content="$(cat public_html/cgi-bin/hello-world)"
  # this is multiple files but refuses to overwrite
  $ cpanel upload public_html/cgi-bin hello-world

  # download
  $ cpanel mirror public_html public_html cpanel localfs
  # upload
  $ cpanel mirror public_html public_html localfs cpanel

DESCRIPTION

CLI for cPanel UAPI and also API 2, due to missing functionality in UAPI.

Stores session token in ~/.cpanel-token, a two-line file. First line is the URL component that goes after cpsess. Second is the cpsession cookie, which you can get from your browser's DevTools.

Stores relevant domain name in ~/.cpanel-domain.

FUNCTIONS

Exportable:

dispatch_cmd_print

Will print the return value, using "dumper" in Mojo::Util except for download.

dispatch_cmd_raw_p

Returns a promise of the decoded JSON value or downloaded content.

dir_walk_p

Takes $from_dir, $to_dir, $from_map, $to_map. Copies the information in the first directory to the second, using the respective maps. Assumes UNIX-like semantics in filenames, i.e. $dir/$file.

Returns a promise of completion.

The maps are hash-refs whose values are functions, and the keys are:

ls

Takes $dir. Returns a promise of two hash-refs, of directories and of files. Each has keys of relative filename, values are an array-ref containing a string octal number representing UNIX permissions, and a number giving the mtime. Must reject if does not exist.

mkdir

Takes $dir. Returns a promise of having created the directory.

read

Takes $dir, $file. Returns a promise of the file contents.

write

Takes $dir, $file. Returns a promise of having written the file contents.

chmod

Takes $path, $perms. Returns a promise of having changed the permissions.

SEE ALSO

https://documentation.cpanel.net/display/DD/Guide+to+UAPI

https://documentation.cpanel.net/display/DD/Guide+to+cPanel+API+2

AUTHOR

Ed J

COPYRIGHT AND LICENSE

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