-sub cmd_connector {
- my $subcmd = shift;
- my $connconf = $conf->{'videosite'}->{'connectors'};
-
- unless(defined($subcmd)) {
- $subcmd = "help";
- }
-
- $subcmd = lc($subcmd);
-
- if ($subcmd eq 'list') {
- write_irssi("Defined connectors");
- foreach (keys(%{$connconf})) {
- write_irssi($_);
- my $schemas = $connconf->{$_}->{'schemas'};
- if (scalar(keys(%{$schemas})) == 0) {
- write_irssi(" No schemas defined");
- } else {
- foreach (keys(%{$schemas})) {
- write_irssi(' %s: %s', $_, $schemas->{$_});
- }
- }
- }
-
- write_irssi();
- write_irssi("Selected connectors: %s", join(", ", @{$conf->{'videosite'}->{'connectorlist'}}));
- } elsif ($subcmd eq 'add') {
- my ($name) = @_;
-
- unless(defined($name)) {
- write_irssi("No name given");
- return;
- }
-
- $name = lc($name);
-
- if (exists($connconf->{$_})) {
- write_irssi("Connector already exists");
- return;
- }
-
- $connconf->{$name} = {'name' => $name, 'schemas' => {}};
- } elsif ($subcmd eq 'del') {
- my ($name) = @_;
-
- unless(defined($name)) {
- write_irssi("No name given");
- return;
- }
-
- $name = lc($name);
-
- unless (exists($connconf->{$name})) {
- write_irssi("Connector does not exist");
- return;
- }
-
- if (exists($connconf->{$name}->{'_immutable'})) {
- write_irssi("Connector cannot be removed");
- return;
- }
-
- delete($connconf->{$name});
-
- # Remove from list of active connectors
- $conf->{'videosite'}->{'connectorlist'} =
- [ grep { $_ ne $name } @{$conf->{'videosite'}->{'connectorlist'}} ];
-
- if (scalar(@{$conf->{'videosite'}->{'connectorlist'}}) == 0) {
- write_irssi("List of selected connectors is empty, resetting to direct");
- $conf->{'videosite'}->{'connectorlist'} = [ 'direct' ];
- }
- } elsif ($subcmd eq 'addschema') {
- my ($conn, $schema, $proxy) = @_;
-
- unless(defined($conn)) {
- write_irssi("No connector name given");
- return;
- }
-
- $conn = lc($conn);
-
- if (exists($connconf->{$conn}->{'_immutable'})) {
- write_irssi("Connector cannot be modified");
- return;
- }
-
- unless(defined($schema)) {
- write_irssi("No schema given");
- return;
- }
-
- $schema = lc($schema);
-
- unless(defined($proxy)) {
- write_irssi("No proxy given");
- return;
- }
-
- unless(exists($connconf->{$conn})) {
- write_irssi("Connector does not exist");
- return;
- }
-
- $connconf->{$conn}->{'schemas'}->{$schema} = $proxy;
- } elsif ($subcmd eq 'delschema') {
- my ($conn, $schema) = @_;
-
- unless(defined($conn)) {
- write_irssi("No connector name given");
- return;
- }
-
- $conn = lc($conn);
-
- if (exists($connconf->{$conn}->{'_immutable'})) {
- write_irssi("Connector cannot be modified");
- return;
- }
-
- unless(defined($schema)) {
- write_irssi("No schema given");
- return;
- }
-
- $schema = lc($schema);
-
- unless(exists($connconf->{$conn})) {
- write_irssi("Connector does not exist");
- return;
- }
-
- delete($connconf->{$conn}->{'schemas'}->{$schema});
- } elsif ($subcmd eq 'select') {
- my @connlist = map { lc } @_;
-
- if (scalar(@connlist) == 0) {
- write_irssi("No connectors given");
- return;
- }
-
- foreach (@connlist) {
- unless(exists($connconf->{$_})) {
- write_irssi("Connector %s does not exist", $_);
- return;
- }
- }