GenDuid into php app
This commit is contained in:
parent
27f49445fb
commit
b3d3728186
3 changed files with 73 additions and 58 deletions
|
@ -1,45 +0,0 @@
|
|||
#!/bin/sh
|
||||
ascii2hex() { echo -n "$*" | awk 'BEGIN{for(n=0;n<256;n++)ord[sprintf("%c",n)]=n}{len=split($0,c,"");for(i=1;i<=len;i++)printf("%x",ord[c[i]])}'; }
|
||||
|
||||
printhexstring() { awk '{l=split($0,c,"");for(i=1;i<l-1;i=i+2)printf("%s:",substr($0,i,2));print(substr($0,l-1,2))}'; }
|
||||
|
||||
echo
|
||||
echo "Step 1) RG information"
|
||||
echo
|
||||
while read -p " Manufacturer [1=Pace, 2=Motorola/Arris]: " mfg; do
|
||||
([ "$mfg" = "1" ] || [ "$mfg" = "2" ]) && break
|
||||
done
|
||||
while read -p " Serial number: " serial; do [ -n "$serial" ] && break; done
|
||||
echo
|
||||
|
||||
[ "$mfg" = "1" ] && mfg="00D09E" || mfg="001E46"
|
||||
echo -n "Identifier: "
|
||||
ascii2hex "$mfg-$serial" | printhexstring
|
||||
|
||||
cat << EOF
|
||||
|
||||
Step 2) Navigate to System->Advanced->Networking in webConfigurator.
|
||||
|
||||
IPv6 Options
|
||||
DHCP6 DUID: DUID-EN
|
||||
DUID-EN
|
||||
Enterprise Number: 3561
|
||||
Identifier: As shown above
|
||||
|
||||
Click Save.
|
||||
|
||||
Step 3) Navigate to Interfaces->WAN in webConfigurator.
|
||||
|
||||
General Configuration
|
||||
IPv6 Configuration Type: DHCP6
|
||||
MAC Address: Same as MAC address of RG
|
||||
|
||||
Other options are probably needed, so set those too.
|
||||
|
||||
Click Save. This will finally save dhcp6c's DUID file and start the client.
|
||||
|
||||
Step 4) Finished, hopefully.
|
||||
|
||||
Good luck!
|
||||
|
||||
EOF
|
|
@ -4,23 +4,16 @@ declare(strict_types=1);
|
|||
|
||||
namespace Pfatt\Commands;
|
||||
|
||||
use Pfatt\Service\Logger;
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
use Symfony\Component\Console\Question\ChoiceQuestion;
|
||||
use Symfony\Component\Console\Question\Question;
|
||||
|
||||
final class GenDuid extends Command
|
||||
{
|
||||
protected static $defaultName = 'gen-duid';
|
||||
protected static $defaultDescription = 'Generate DUID for IPV6 configuration.';
|
||||
protected Logger $logger;
|
||||
|
||||
public function __construct(
|
||||
Logger $logger,
|
||||
) {
|
||||
parent::__construct('gen-duid');
|
||||
$this->logger = $logger;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
|
@ -29,9 +22,72 @@ final class GenDuid extends Command
|
|||
InputInterface $input,
|
||||
OutputInterface $output
|
||||
): int {
|
||||
$this->logger->setOutput($output);
|
||||
|
||||
$this->logger->info('Starting 5268AC ping monitor ...');
|
||||
$output->writeln('');
|
||||
$output->writeln('Step 1) RG information');
|
||||
$output->writeln('');
|
||||
/** @var \Symfony\Component\Console\Helper\QuestionHelper $helper */
|
||||
$helper = $this->getHelper('question');
|
||||
$question = new ChoiceQuestion('Manufacturer?', [
|
||||
1 => 'Pace',
|
||||
2 => 'Motorola/Arris',
|
||||
]);
|
||||
/** @var string $manufacturer */
|
||||
$manufacturer = $helper->ask($input, $output, $question);
|
||||
if ($manufacturer === 'Pace') {
|
||||
$manufacturer = '00D09E';
|
||||
} else {
|
||||
$manufacturer = '001E46';
|
||||
}
|
||||
|
||||
$question = new Question('Serial number?');
|
||||
/** @var string $serial */
|
||||
$serial = $helper->ask($input, $output, $question);
|
||||
|
||||
$output->writeln('Identifier: ' . $this->ascii2hex($manufacturer . ':' . $serial));
|
||||
$output->write($this->getInstructions());
|
||||
|
||||
return Command::SUCCESS;
|
||||
}
|
||||
|
||||
private function ascii2hex(string $ascii): string
|
||||
{
|
||||
$bytes = [];
|
||||
for ($i = 0; $i < strlen($ascii); $i++) {
|
||||
$byte = strtoupper(dechex(ord($ascii[$i])));
|
||||
$bytes[] = str_repeat('0', 2 - strlen($byte)) . $byte;
|
||||
}
|
||||
return implode(':', $bytes);
|
||||
}
|
||||
|
||||
private function getInstructions(): string
|
||||
{
|
||||
return <<<EOF
|
||||
|
||||
Step 2) Navigate to System->Advanced->Networking in webConfigurator.
|
||||
|
||||
IPv6 Options
|
||||
DHCP6 DUID: DUID-EN
|
||||
DUID-EN
|
||||
Enterprise Number: 3561
|
||||
Identifier: As shown above
|
||||
|
||||
Click Save.
|
||||
|
||||
Step 3) Navigate to Interfaces->WAN in webConfigurator.
|
||||
|
||||
General Configuration
|
||||
IPv6 Configuration Type: DHCP6
|
||||
MAC Address: Same as MAC address of RG
|
||||
|
||||
Other options are probably needed, so set those too.
|
||||
|
||||
Click Save. This will finally save dhcp6c's DUID file and start the client.
|
||||
|
||||
Step 4) Finished, hopefully.
|
||||
|
||||
Good luck!
|
||||
|
||||
EOF;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -56,12 +56,16 @@ final class PfattKernel
|
|||
$containerBuilder->autowire(NgController::class, NgController::class)
|
||||
->setPublic(true);
|
||||
|
||||
// Register commands.
|
||||
$containerBuilder->autowire(Startup::class, Startup::class)
|
||||
->setPublic(true);
|
||||
$containerBuilder->autowire(GenDuid::class, GenDuid::class)
|
||||
->setPublic(true);
|
||||
$containerBuilder->autowire(Monitor::class, Monitor::class)
|
||||
->setPublic(true)
|
||||
->setArgument(Logger::class, new Reference('logger-5268'));
|
||||
$containerBuilder->autowire(Startup::class, Startup::class)
|
||||
->setPublic(true);
|
||||
|
||||
// Register application.
|
||||
$containerBuilder->register(ContainerCommandLoader::class, ContainerCommandLoader::class)
|
||||
->setArguments([
|
||||
new Reference('service_container'),
|
||||
|
|
Loading…
Reference in a new issue