mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2023-10-10 13:36:59 +02:00
7f2d6bde9a
* implement 404 for webserver - this is a quick hack, should be refactored later * add http error pages ... design is more a placebo ;-) * tune errorpages fix some cgi related stuff, now only python is possible executing and reading python file is possilbe, but it cannot receive any data from webui * fix typo * fix another typo
58 lines
1.3 KiB
C++
58 lines
1.3 KiB
C++
#include <utils/Process.h>
|
|
#include <utils/Logger.h>
|
|
|
|
#include <QCoreApplication>
|
|
#include <QStringList>
|
|
#include <string>
|
|
|
|
#include <unistd.h>
|
|
#include <cstdio>
|
|
#include <iostream>
|
|
#include <memory>
|
|
#include <stdexcept>
|
|
|
|
namespace Process {
|
|
|
|
void restartHyperion(bool asNewProcess)
|
|
{
|
|
Logger* log = Logger::getInstance("Process");
|
|
std::cout << std::endl
|
|
<< " *******************************************" << std::endl
|
|
<< " * hyperion will restart now *" << std::endl
|
|
<< " *******************************************" << std::endl << std::endl;
|
|
|
|
|
|
QStringList qargs = QCoreApplication::arguments();
|
|
int size = qargs.size();
|
|
char *args[size+1];
|
|
args[size] = nullptr;
|
|
for(int i=0; i<size; i++)
|
|
{
|
|
int str_size = qargs[i].toLocal8Bit().size();
|
|
args[i] = new char[str_size+1];
|
|
strncpy(args[i], qargs[i].toLocal8Bit().constData(),str_size );
|
|
args[i][str_size] = '\0';
|
|
}
|
|
|
|
execv(args[0],args);
|
|
Error(log, "error while restarting hyperion");
|
|
}
|
|
|
|
QByteArray command_exec(QString cmd, QByteArray data)
|
|
{
|
|
char buffer[128];
|
|
std::string result = "";
|
|
|
|
std::shared_ptr<FILE> pipe(popen(cmd.toLocal8Bit().constData(), "r"), pclose);
|
|
if (pipe)
|
|
{
|
|
while (!feof(pipe.get()))
|
|
{
|
|
if (fgets(buffer, 128, pipe.get()) != NULL)
|
|
result += buffer;
|
|
}
|
|
}
|
|
return result.c_str();
|
|
}
|
|
|
|
}; |