diff --git a/cli/Commands/Twillo/PrivateKeys.php b/cli/Commands/Twillo/PrivateKeys.php new file mode 100644 index 0000000000000000000000000000000000000000..830df9f9e601ceb323be53c942e8683c09c4b701 --- /dev/null +++ b/cli/Commands/Twillo/PrivateKeys.php @@ -0,0 +1,62 @@ +<?php +namespace Studip\Cli\Commands\Twillo; + +use Config; +use EduSharingHelper; +use Studip\Cli\Commands\AbstractCommand; +use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Console\Style\SymfonyStyle; + +final class PrivateKeys extends AbstractCommand +{ + protected static $defaultName = 'twillo:generate-private-keys'; + + + protected function configure(): void + { + $this->setDescription('Generate private keys for twillo'); + $this->setHelp('This command will generate the private keys for the twillo-integration'); + } + + public function execute(InputInterface $input, OutputInterface $output) + { + $io = new SymfonyStyle($input, $output); + $appId = str_replace(' ', '-', Config::get()->UNI_NAME_CLEAN); + $privateKey = $GLOBALS['ABSOLUTE_PATH_STUDIP'] . '/config/twillo-private.key'; + $properties = $GLOBALS['ABSOLUTE_PATH_STUDIP'] . '/config/twillo.properties.xml'; + + if (!file_exists($privateKey)) { + $key = EduSharingHelper::generateKeyPair(); + $success = file_put_contents( + $properties, + EduSharingHelper::generateEduAppXMLData($appId, $key['publickey']) + ); + + if ($success !== false) { + file_put_contents( + $privateKey, + $key['privatekey'] + ); + Config::get()->store('OERCAMPUS_TWILLO_APPID', $appId); + + $io->success('"Wrote config/twillo.properties.xml file. Next steps'); + $io->note([ + 'Send the file config/twillo.properties.xml to the twillo.de administrators support.twillo@tib.eu . If they ask you to change the app-ID, you can do this in the system at Admin -> System -> Configuration by editing the config value OERCAMPUS_TWILLO_APPID.', + 'Leave the config/twillo-private.key file as it is in the config folder. This file is important for the API to work', + 'You need to either have or create a datafield for users which contains the DFN-AAI-ID of a person. Without this ID in the datafield a user cannot upload to twillo.de due to technical restrictions', + 'Copy the datafield_id of this datafield (you find this in the DB-table datafields). In Stud.IP go to Admin -> System -> Configuration and edit the config value OERCAMPUS_TWILLO_DFNAAIID_DATAFIELD. What you inserted, should look like 6a9ee3ca3685d2551698a3dc6f0f0eff', + 'Once the twillo.de adminstrators received your file and registered your Stud.IP, you can enable the connection to twillo: Go to Admin -> System -> Configuration and edit the config value OERCAMPUS_ENABLE_TWILLO and switch it on.', + 'There you go. From now on all your users with a given DFN-AAI-ID should be able to upload their OERs to twillo.de.' + ]); + } else { + $io->error('No permission to write into folder config. Cannot save private and public keys'); + } + } else { + $io->error('Private key already exists. Remove it or be happy that it is there.'); + } + return Command::SUCCESS; + } +} diff --git a/cli/studip b/cli/studip index 2b242387280b10f7b8af612cbafec594123ab9c1..36fe5f52dbdaecfa32db5fb66e950e9a7dbce147 100755 --- a/cli/studip +++ b/cli/studip @@ -54,6 +54,7 @@ $commands = [ Commands\Plugins\I18N\I18NCompile::class, Commands\Resources\UpdateBookingIntervals::class, Commands\SORM\DescribeModels::class, + Commands\Twillo\PrivateKeys::class, Commands\Users\UserDelete::class, Commands\Users\UserDelete::class, ]; diff --git a/cli/twillo_generate_keys.php b/cli/twillo_generate_keys.php deleted file mode 100644 index 0d1f5d1b0b75f67b769a7e8f3c6c3cf3656ffd5c..0000000000000000000000000000000000000000 --- a/cli/twillo_generate_keys.php +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env php -<?php -require_once 'studip_cli_env.inc.php'; - -$app_id = str_replace(" ", "-", Config::get()->UNI_NAME_CLEAN); - -$privatekey = @file_get_contents('../config/twillo-private.key'); - -if (!$privatekey) { - $key = EduSharingHelper::generateKeyPair(); - $success = file_put_contents( - '../config/twillo.properties.xml', - EduSharingHelper::generateEduAppXMLData($app_id, $key['publickey']) - ); - if ($success !== false) { - file_put_contents( - '../config/twillo-private.key', - $key['privatekey'] - ); - Config::get()->store('OERCAMPUS_TWILLO_APPID', $app_id); - echo "Wrote config/twillo.properties.xml file. Next steps: - -- Send the file config/twillo.properties.xml to the twillo.de administrators support.twillo@tib.eu . If they ask you to change the app-ID, you can do this in the system at Admin -> System -> Configuration by editing the config value OERCAMPUS_TWILLO_APPID. -- Leave the config/twillo-private.key file as it is in the config folder. This file is important for the API to work. -- You need to either have or create a datafield for users which contains the DFN-AAI-ID of a person. Without this ID in the datafield a user cannot upload to twillo.de due to technical restrictions. -- Copy the datafield_id of this datafield (you find this in the DB-table datafields). In Stud.IP go to Admin -> System -> Configuration and edit the config value OERCAMPUS_TWILLO_DFNAAIID_DATAFIELD. What you inserted, should look like 6a9ee3ca3685d2551698a3dc6f0f0eff. -- Once the twillo.de adminstrators received your file and registered your Stud.IP, you can enable the connection to twillo: Go to Admin -> System -> Configuration and edit the config value OERCAMPUS_ENABLE_TWILLO and switch it on. - -There you go. From now on all your users with a given DFN-AAI-ID should be able to upload their OERs to twillo.de. -"; - } else { - echo "No permission to write into folder config. Cannot save private and public keys.\n"; - } -} else { - echo "Private key already exists. Remove it or be happy that it is there.\n"; -}