From 11252d1cbae6c2005bd6c763a67eab2cd5109e81 Mon Sep 17 00:00:00 2001 From: Florian Schmitt Date: Thu, 19 Dec 2024 11:32:30 +0300 Subject: [PATCH] feat(import): wip script --- yeswiki-import.php | 122 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100755 yeswiki-import.php diff --git a/yeswiki-import.php b/yeswiki-import.php new file mode 100755 index 0000000..b9e6387 --- /dev/null +++ b/yeswiki-import.php @@ -0,0 +1,122 @@ +#!/usr/bin/env php +description('yeswiki-import, import YesWiki from another server 🌈🦄'); + +if (posix_getuid() != 0) { + $climate->error('ERROR : this script needs root privilege to run.'); + exit; +} + +$absolutePathToEnvFile = __DIR__ . '/.env'; +if (file_exists($absolutePathToEnvFile)) { + (new DotEnv($absolutePathToEnvFile))->load(); +} else { + $climate->error('ERROR : No .env file found.'); + exit; +} + +$climate->arguments->add([ + 'from' => [ + 'prefix' => 'f', + 'longPrefix' => 'from', + 'description' => 'Url of source wiki on another server', + 'required' => true, + 'defaultValue' => 'https://example.com' + ], + 'to' => [ + 'prefix' => 't', + 'longPrefix' => 'to', + 'description' => 'Url of destination wiki already created on server', + 'required' => true, + 'defaultValue' => 'https://destination.com' + ], + 'source' => [ + 'prefix' => 's', + 'longPrefix' => 'source', + 'description' => 'server name as indicated in ssh config', + 'required' => false, + 'defaultValue' => 'cooptools' + ], +]); +$climate->arguments->parse(); +$from = $climate->arguments->get('from'); +$to = $climate->arguments->get('to'); +$source = $climate->arguments->get('source'); + +if (empty($from) || $from == 'https://example.com' || empty($to) || $to == 'https://destination.com') { + $climate->error('ERROR : you need a --from (the source url) and a --to (the destination url).'."\n"); + $climate->usage(); + exit; +} + +if (!filter_var($from, FILTER_VALIDATE_URL)) { + $climate->error('ERROR : the source url given with --from '.$from.' is not a valid url.'."\n"); + exit; +} +$fromUrl = parse_url($from); + +if (domainIsOnServer($fromUrl['host'])) { + $climate->error('ERROR : Domain '.$fromUrl['host'].' should be external, not on the server.'."\n"); + exit; +} +#if (!$fromWiki = wikiIsOnServer($fromDomainWithoutWww.($fromUrl['path'] ?? ''))) { +# $climate->error('ERROR : no Yeswiki found '.$fromDomainWithoutWww.$fromUrl['path'].' on the server.'."\n"); +# exit; +#} + +if (!filter_var($to, FILTER_VALIDATE_URL)) { + $climate->error('ERROR : the destination url given with --to '.$to.' is not a valid url.'."\n"); + exit; +} +$toUrl = parse_url($to); +$toDomainWithoutWww = preg_replace('/^www\./m', '', $toUrl['host']); + +if (!domainIsOnServer($toDomainWithoutWww)) { + $climate->error('ERROR : Domain '.$toDomainWithoutWww.' was not found on the server.'."\n"); + exit; +} +if (!$toWiki = wikiIsOnServer($toDomainWithoutWww.($toUrl['path'] ?? ''))) { + $climate->error('ERROR : no Yeswiki found '.$toDomainWithoutWww.$toUrl['path'].' on the server.'."\n"); + exit; +} + +if ($from === $to) { + $climate->error('ERROR : --from and --to parameters must be different.'."\n"); + exit; +} + +$climate->shout("Source: ".$source); + +$climate->bold()->underline()->out('Move a YesWiki'); +$climate->out('This will transfert YesWiki on '.$from.' to '.$to.''); +$climate->red('CAREFUL: the destination yeswiki will be replaced.'."\n"); +$input = $climate->confirm('Is it all good ?'); +if ($input->confirmed()) { + $climate->shout( + 'The yeswiki '.$from.' was successfully moved to '.$to.', congrats ! 🎉'."\n" + ); +} else { + $climate->info('Ok, let\'s stop here...'); +} + +#rm -rf files custom themes private +#scp -r cooptools:/var/www/cocotier.info/web/qptce/files . +#scp -r cooptools:/var/www/cocotier.info/web/qptce/custom . +#scp -r cooptools:/var/www/cocotier.info/web/qptce/themes . +#scp -r cooptools:/var/www/cocotier.info/web/qptce/private . +#chown -R leclosionfr2:leclosionfr2 . +#cat /home/yeswikileclosionfr/yeswiki.l-eclosion.fr/wakka.config.php +#vi wakka.config.php +# config mail base_url et extra conf +#DROP TABLE `yeswiki_acls`, `yeswiki_links`, `yeswiki_nature`, `yeswiki_pages`, `yeswiki_referrers`, `yeswiki_triples`, `yeswiki_users`; +#ssh cooptools "mysqldump -uyeswikinsudb -py3sw1k1YES yeswikinsuferme yeswiki_symphose__acls yeswiki_symphose__links yeswiki_symphose__nature yeswiki_symphose__pages yeswiki_symphose__referrers yeswiki_symphose__triples yeswiki_symphose__users" > dump.sql +# on recherche/remplace l'url +# add good prefixes and YesWikiProAdmin