groff-web/public/index.php
2023-11-16 16:50:06 -06:00

121 lines
3.3 KiB
PHP

<!DOCTYPE html>
<!--
Copyright (C) 2023 Gustavo Calvo
groff-web is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
groff-web is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Foobar. If not, see <https://www.gnu.org/licenses/>.
-->
<html>
<?php
# Generate an uid for each new document
$uid = exec("head /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 10");
# groff settings
$groff = "/usr/bin/groff";
$comp = "$groff -ketpG -mspdf -Tpdf tmp/$uid.ms > tmp/$uid.pdf";
# In case you want to use an external
# script to compile with groff:
#$comp = "sh groff-compiler.sh";
?>
<head>
<title>Groff Web</title>
<link rel="shortcut icon" href="#">
<style>
* {
background-color: #121212;
font-family: monospace;
text-align: center;
margin: 4px auto;
color: #928374;
}
h1,h2,h3,h4,h5 {
color: #fe8019;
}
textarea,object,.columns {
border-radius: 10px;
border-width: 1px;
max-width: 1300px;
width: 100%;
columns: 2;
}
@media only screen and (max-width: 800px) {
.columns {
columns: 1;
width: 90%;
}
}
/* codebox */
textarea {
background-color: #282828;
text-align: left;
color: #83a598;
height: 734px;
}
/* pdf */
object {
height: 800px;
}
.button {
border-radius: 10px;
border-width: 1px;
padding: 5px 30px;
margin: 10px;
}
</style>
</head>
<?php
exec("rm -rf tmp/*");
if($_POST['codebox']){
$file_open = fopen("tmp/$uid.ms","w+");
fwrite($file_open, $_POST['codebox']);
fclose($file_open);
}
exec("$comp");
?>
<body>
<h1>Groff Web</h1>
<p><?php echo exec("$groff -v | head -n 1")?></p>
<div class=columns>
<div style="width: 100%"><form method="POST">
<div><input type=submit value="Compile PDF" class=button></div>
<textarea id="codebox" name="codebox"><?php
$datalines = file ("tmp/$uid.ms");
foreach ($datalines as $zz) {
echo $zz; }
?></textarea>
</form></div>
<object type="application/pdf" data="/tmp/<?php echo $uid?>.pdf?#&navpanes=0">
<p>PDF cannot be displayed.</p>
</object>
</div>
<footer><p>
Copyright (C) 2023 Gustavo Calvo |
<a href="https://gitlab.com/tavo-wasd/groff-web" target="_blank" rel="noopener noreferrer">Source</a> |
<a href="https://www.gnu.org/licenses/gpl-3.0.txt" target="_blank" rel="noopener noreferrer">GPL-3.0</a>
</p></footer>
</body>
</html>