Add support for turning off server connections
This commit is contained in:
@@ -86,6 +86,21 @@ sub verifyChannelAccess {
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub enumerateServers {
|
||||
my $aConnection = $_[0];
|
||||
|
||||
my $output = "<select name=\"server\">";
|
||||
my $query = $aConnection->prepare(qq(select id, name from servers;));
|
||||
$query->execute();
|
||||
while(my @row = $query->fetchrow_array()) {
|
||||
my $serverID = $row[0];
|
||||
my $server = $row[1];
|
||||
$output.="<option value=\"$serverID\">$server</option>";
|
||||
}
|
||||
$output.="</select>";
|
||||
return $output;
|
||||
}
|
||||
|
||||
sub enumerateChannels {
|
||||
my $aConnection = $_[0];
|
||||
|
||||
@@ -129,13 +144,13 @@ sub handlePath {
|
||||
$userbar.="</form>";
|
||||
}
|
||||
|
||||
my $query = $aConnection->prepare(qq(select channels.id, channels.name, channels.enabled, servers.name from channels inner join servers on channels.server_id=servers.id where channels.public=1;));
|
||||
my $query = $aConnection->prepare(qq(select channels.id, channels.name, channels.enabled, servers.name, servers.enabled from channels inner join servers on channels.server_id=servers.id where channels.public=1;));
|
||||
$query->execute();
|
||||
my $table = "";
|
||||
while(my @row = $query->fetchrow_array()) {
|
||||
my $channelID = $row[0];
|
||||
my $channelName = $row[1];
|
||||
my $channelEnabled = $row[2];
|
||||
my $channelEnabled = $row[2] && $row[4];
|
||||
my $serverName = $row[3];
|
||||
$channelName =~ s/%23/#/;
|
||||
my $status = $channelEnabled?"<span style=\"color:green\">Enabled</span>":"<span style=\"color:gray\">Disabled</span>";
|
||||
@@ -159,12 +174,12 @@ sub handlePath {
|
||||
}
|
||||
while(@row = $query->fetchrow_array()) {
|
||||
my $channelID = $row[0];
|
||||
my $channelQuery = $aConnection->prepare(qq(select channels.name, channels.enabled, servers.name from channels inner join servers on channels.server_id=servers.id where channels.id=$channelID;));
|
||||
my $channelQuery = $aConnection->prepare(qq(select channels.name, channels.enabled, servers.name, servers.enabled from channels inner join servers on channels.server_id=servers.id where channels.id=$channelID;));
|
||||
$channelQuery->execute();
|
||||
@row = $channelQuery->fetchrow_array();
|
||||
my $channelName = $row[0];
|
||||
$channelName =~ s/%23/#/;
|
||||
my $channelEnabled = $row[1];
|
||||
my $channelEnabled = $row[1] && $row[3];
|
||||
my $serverName = $row[2];
|
||||
my $status = $channelEnabled?"<span style=\"color:green\">Enabled</span>":"<span style=\"color:gray\">Disabled</span>";
|
||||
$privateChannels.="<tr><td><a href=\"view_logs?channel=$channelID\">$channelName</a></td><td>$serverName</td><td>$status</td></tr>";
|
||||
@@ -274,6 +289,7 @@ sub handlePath {
|
||||
}
|
||||
|
||||
my $addServer = "";
|
||||
my $updateServer = "";
|
||||
if($privileges==2) {
|
||||
$addServer.="<h3>Add server</h3>";
|
||||
$addServer.="<form action=\"add_server_action\" method=\"POST\">";
|
||||
@@ -282,6 +298,12 @@ sub handlePath {
|
||||
$addServer.="<input name=\"port\" type=\"number\" placeholder=\"Server port (optional)\" /><br />";
|
||||
$addServer.="<input type=\"submit\" value=\"Add\" />";
|
||||
$addServer.="</form>";
|
||||
$updateServer.="<h3>Update server</h3>";
|
||||
$updateServer.="<form action=\"update_server_action\" method=\"POST\">";
|
||||
$updateServer.=enumerateServers($aConnection)."<br />";
|
||||
$updateServer.="<input name=\"enabled\" type=\"checkbox\" checked=\"true\" />Enabled<br />";
|
||||
$updateServer.="<input type=\"submit\" value=\"Update\" />";
|
||||
$updateServer.="</form>";
|
||||
}
|
||||
|
||||
my $addChannel = "";
|
||||
@@ -312,7 +334,15 @@ sub handlePath {
|
||||
$updateChannel.="</form>";
|
||||
}
|
||||
|
||||
frontend::sendTemplate("templates/panel.html", $aClient, {"username"=>$session->{"username"}, "manageChannelAccess"=>$manageChannelAccess, "addUser"=>$addUser, "addServer"=>$addServer, "addChannel"=>$addChannel, "updateChannel"=>$updateChannel});
|
||||
frontend::sendTemplate("templates/panel.html", $aClient, {
|
||||
"username"=>$session->{"username"},
|
||||
"manageChannelAccess"=>$manageChannelAccess,
|
||||
"addUser"=>$addUser,
|
||||
"addServer"=>$addServer,
|
||||
"updateServer"=>$updateServer,
|
||||
"addChannel"=>$addChannel,
|
||||
"updateChannel"=>$updateChannel
|
||||
});
|
||||
return 1;
|
||||
}
|
||||
when("/change_password_action") {
|
||||
@@ -505,6 +535,47 @@ sub handlePath {
|
||||
logger::createLogger($parameters{"name"}, $parameters{"address"}, $port, ());
|
||||
return 1;
|
||||
}
|
||||
when("/update_server_action") {
|
||||
if(!verifyRequestPrivileges($aRequest, $aClient, 2, $aConnection)) {
|
||||
return 1;
|
||||
}
|
||||
my %parameters = frontend::parsePathParameters($aRequest->{"content"});
|
||||
if(!defined($parameters{"server"}) || length($parameters{"server"})==0) {
|
||||
frontend::sendBadRequest($aClient, "Server required");
|
||||
return 1;
|
||||
}
|
||||
my $query = $aConnection->prepare(qq(select name, host, port, enabled from servers where id=?;));
|
||||
$query->execute($parameters{"server"});
|
||||
my @row = $query->fetchrow_array();
|
||||
if(scalar(@row)==0) {
|
||||
frontend::sendBadRequest($aClient, "Server with ID $parameters{'server'} doesn't exist");
|
||||
return 1;
|
||||
}
|
||||
my $server = $row[0];
|
||||
my $serverEnabled = $row[3];
|
||||
if(defined($parameters{"enabled"}) && !$serverEnabled) {
|
||||
my $host = $row[1];
|
||||
my $port = $row[2];
|
||||
$query = $aConnection->prepare(qq(select name, enabled from channels where server_id=?;));
|
||||
$query->execute($parameters{"server"});
|
||||
my @channels;
|
||||
while(@row = $query->fetchrow_array()) {
|
||||
if(!$row[1]) {
|
||||
next;
|
||||
}
|
||||
push(@channels, $row[0]);
|
||||
}
|
||||
logger::createLogger($server, $host, $port, \@channels);
|
||||
}
|
||||
elsif($serverEnabled) {
|
||||
my $actionQueue = logger::getActionQueueByServerName($server);
|
||||
push(@$actionQueue, "QUIT");
|
||||
}
|
||||
$query = $aConnection->prepare(qq(update servers set enabled=? where id=?;));
|
||||
$query->execute(defined($parameters{"enabled"})?1:0, $parameters{"server"});
|
||||
frontend::redirect($aClient, "/server_updated.html");
|
||||
return 1;
|
||||
}
|
||||
when("/add_channel_action") {
|
||||
if(!verifyRequestPrivileges($aRequest, $aClient, 2, $aConnection)) {
|
||||
return 1;
|
||||
@@ -577,7 +648,6 @@ sub handlePath {
|
||||
my $actionQueue = logger::getActionQueueByServerName($row[0]);
|
||||
if(defined($parameters{"enabled"}) && !$channelEnabled) {
|
||||
push(@$actionQueue, "JOIN", $channel);
|
||||
print("Joining\n");
|
||||
}
|
||||
elsif($channelEnabled) {
|
||||
push(@$actionQueue, "PART", $channel);
|
||||
|
||||
Reference in New Issue
Block a user