Frontend: Add support for adding servers
This commit is contained in:
@@ -18,6 +18,7 @@ package frontend_routes;
|
||||
|
||||
use lib ".";
|
||||
use frontend_session;
|
||||
use logger;
|
||||
|
||||
use Digest::SHA;
|
||||
|
||||
@@ -186,10 +187,10 @@ sub handlePath {
|
||||
my $manageServers = "";
|
||||
if($privileges==2) {
|
||||
$manageServers.="<h3>Manage servers</h3>";
|
||||
$manageServers.="<form action=\"add_server_action\" method=\"POST\">";
|
||||
$manageServers.="<form action=\"manage_server_action\" method=\"POST\">";
|
||||
$manageServers.="<input name=\"name\" type=\"text\" placeholder=\"Server name\" /><br />";
|
||||
$manageServers.="<input name=\"address\" type=\"text\" placeholder=\"Server address\" /> ";
|
||||
$manageServers.="<input name=\"port\" type=\"number\" placeholder=\"Server port\" /><br />";
|
||||
$manageServers.="<input name=\"port\" type=\"number\" placeholder=\"Server port (optional)\" /><br />";
|
||||
$manageServers.="<input type=\"submit\" value=\"Add\" />";
|
||||
$manageServers.="</form>";
|
||||
}
|
||||
@@ -197,7 +198,7 @@ sub handlePath {
|
||||
my $manageChannels = "";
|
||||
if($privileges==2) {
|
||||
$manageChannels.="<h3>Manage channels</h3>";
|
||||
$manageChannels.="<form action=\"add_channel_action\" method=\"POST\">";
|
||||
$manageChannels.="<form action=\"manage_channel_action\" method=\"POST\">";
|
||||
$manageChannels.="<input name=\"channel\" type=\"text\" placeholder=\"Channel\" /> at ";
|
||||
$manageChannels.="<select name=\"server\">";
|
||||
$query = $aConnection->prepare(qq(select id, name from servers;));
|
||||
@@ -271,6 +272,65 @@ sub handlePath {
|
||||
|
||||
return 1;
|
||||
}
|
||||
when("/manage_server_action") {
|
||||
if(!defined($aRequest->{"cookies"}{"session"}) || !frontend_session::isValidSession($aRequest->{"cookies"}{"session"})) {
|
||||
frontend::redirect($aClient, "/");
|
||||
return 1;
|
||||
}
|
||||
if(defined($aRequest->{"headers"}{"Content-Type"}) && $aRequest->{"headers"}{"Content-Type"} ne "application/x-www-form-urlencoded") {
|
||||
frontend::sendBadRequest($aClient, "Unsupported form Content-Type (application/x-www-form-urlencoded required)");
|
||||
return 1;
|
||||
}
|
||||
if(!defined($aRequest->{"content"})) {
|
||||
frontend::sendBadRequest($aClient, "Request content required");
|
||||
return 1;
|
||||
}
|
||||
my $session = $frontend_session::sessions{$aRequest->{"cookies"}{"session"}};
|
||||
|
||||
my $query = $aConnection->prepare(qq(select privileges from users where name=?;));
|
||||
$query->execute($session->{"username"});
|
||||
my @row = $query->fetchrow_array();
|
||||
if($row[0]<2) {
|
||||
frontend::sendForbidden($aClient, "Insufficient permissions to perform this operation");
|
||||
return 1;
|
||||
}
|
||||
|
||||
my %parameters = frontend::parsePathParameters($aRequest->{"content"});
|
||||
if(!defined($parameters{"name"})) {
|
||||
frontend::sendBadRequest($aClient, "Server name required");
|
||||
return 1;
|
||||
}
|
||||
if(!defined($parameters{"address"})) {
|
||||
frontend::sendBadRequest($aClient, "Server address required");
|
||||
return 1;
|
||||
}
|
||||
my $port = 6667;
|
||||
if(defined($parameters{"port"}) && length($parameters{"port"})>0) {
|
||||
$port = $parameters{"port"};
|
||||
}
|
||||
|
||||
$query = $aConnection->prepare(qq(select id from servers where name=?;));
|
||||
$query->execute($parameters{"name"});
|
||||
@row = $query->fetchrow_array();
|
||||
if(scalar(@row)>0) {
|
||||
frontend::sendConflict($aClient, "Server with name $parameters{'name'} already exists");
|
||||
return 1;
|
||||
}
|
||||
|
||||
$query = $aConnection->prepare(qq(select id from servers order by rowid desc limit 1;));
|
||||
$query->execute();
|
||||
@row = $query->fetchrow_array();
|
||||
my $lastID = 0;
|
||||
if(scalar(@row)>0) {
|
||||
$lastID = $row[0]+1;
|
||||
}
|
||||
|
||||
$query = $aConnection->prepare(qq(insert into servers values($lastID, ?, ?, ?);));
|
||||
$query->execute($parameters{"name"}, $parameters{"address"}, $port);
|
||||
frontend::redirect($aClient, "/server_added.html");
|
||||
logger::createLogger($parameters{"name"}, $parameters{"address"}, $port, ());
|
||||
return 1;
|
||||
}
|
||||
when("/view_logs") {
|
||||
my $channelID = $aRequest->{"path"}{"parameters"}{"channel"};
|
||||
if(!defined($channelID)) {
|
||||
|
||||
Reference in New Issue
Block a user