Gemini bridge control
This commit is contained in:
@@ -72,22 +72,51 @@ if (isset($_REQUEST["act"])) {
|
||||
}else{
|
||||
// Valid Token
|
||||
if (isset($_REQUEST["enable"])){
|
||||
$userHomeDir = shell_exec("eval echo ~".$TokenData["MastodonData"]->username);
|
||||
if (!file_exists($userHomeDir)){
|
||||
if (!userExists($TokenData["MastodonData"]->username)){
|
||||
returnError("User Home Directory Not Found, try making a new SSH key.");
|
||||
} else {
|
||||
if (file_exists($userHomeDir."/public_gemini")){
|
||||
mkdir($userHomeDir."/public_gemini", 0755);
|
||||
}
|
||||
$EnableFile = $userHomeDir."/public_gemini/.serve_ok";
|
||||
if ($_REQUEST["enable"] == 1){
|
||||
if (!file_exists($EnableFile)){
|
||||
file_put_contents($EnableFile, "web_gen");
|
||||
}
|
||||
}else{
|
||||
if (file_exists($EnableFile)){
|
||||
unlink($EnableFile);
|
||||
}
|
||||
switch ($_REQUEST["enable"]){
|
||||
case "yes":
|
||||
shell_exec("/usr/bin/sudo /etc/ttyserver/bin/toggleProxy enable \"".$TokenData["MastodonData"]->username."\"");
|
||||
returnSuccess("Gemini Proxy Enabled", buildEncToken($TokenData["AuthToken"],
|
||||
$TokenData["UserID"],
|
||||
$_SERVER["REMOTE_ADDR"],
|
||||
$_SERVER["HTTP_USER_AGENT"]));
|
||||
break;
|
||||
case "no":
|
||||
$result = trim(shell_exec("/usr/bin/sudo /etc/ttyserver/bin/toggleProxy disable \"".$TokenData["MastodonData"]->username."\""));
|
||||
switch($result){
|
||||
case "done":
|
||||
returnSuccess("Gemini Proxy Disabled", buildEncToken($TokenData["AuthToken"],
|
||||
$TokenData["UserID"],
|
||||
$_SERVER["REMOTE_ADDR"],
|
||||
$_SERVER["HTTP_USER_AGENT"]
|
||||
));
|
||||
break;
|
||||
case "no_perm":
|
||||
returnError("Gemini Proxy Disable Failed, error_p");
|
||||
break;
|
||||
case "no_dir":
|
||||
returnError("Gemini Directory Not Found");
|
||||
break;
|
||||
default:
|
||||
returnError("Gemini Proxy Disable Failed, error_u");
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
break;
|
||||
case "get":
|
||||
$result = trim(shell_exec("/usr/bin/sudo /etc/ttyserver/bin/toggleProxy get \"".$TokenData["MastodonData"]->username."\""));
|
||||
returnSuccess(($result == "enabled"), buildEncToken($TokenData["AuthToken"],
|
||||
$TokenData["UserID"],
|
||||
$_SERVER["REMOTE_ADDR"],
|
||||
$_SERVER["HTTP_USER_AGENT"]
|
||||
));
|
||||
break;
|
||||
default:
|
||||
returnError("Incorrect Gemini Proxy Query");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}else {
|
||||
|
65
auth/auth.js
65
auth/auth.js
@@ -6,6 +6,14 @@ const SwalConfig = {
|
||||
color: "#79F257",
|
||||
background: "#022601",
|
||||
buttonsStyling: false,
|
||||
showClass: {
|
||||
backdrop: 'swal2-noanimation',
|
||||
popup: '',
|
||||
icon: ''
|
||||
},
|
||||
hideClass: {
|
||||
popup: '',
|
||||
}
|
||||
};
|
||||
|
||||
const invalidChars = ["/", "\\", ">", "<", ":", "*", "|", '"', "'", "?", "\0"];
|
||||
@@ -35,7 +43,12 @@ const post = (url, data, callback) => {
|
||||
},
|
||||
data: data
|
||||
};
|
||||
$.ajax(settings).done(callback);
|
||||
$.ajax(settings).done((data) => {
|
||||
if (typeof data.token !== "undefined") {
|
||||
localStorage.setItem("tty_token", data.token);
|
||||
}
|
||||
callback(data);
|
||||
});
|
||||
};
|
||||
|
||||
const saveFile = (name, type, data) => {
|
||||
@@ -241,12 +254,50 @@ const logout = () => {
|
||||
};
|
||||
|
||||
const gemini = () => {
|
||||
Swal.fire({
|
||||
...SwalConfig,
|
||||
title: "Gemini",
|
||||
text: "Gemini is a new internet protocol which:",
|
||||
html:
|
||||
"<ul><li>Is heavier than gopher</li><li>Is lighter than the web</li><li>Will not replace either</li></ul>",
|
||||
var payload = {
|
||||
token: localStorage.getItem("tty_token"),
|
||||
act: "gemproxy",
|
||||
enable: "get"
|
||||
};
|
||||
post(USE_ORIGIN + "/auth/api/index.php", payload, (response) => {
|
||||
console.dir(response.data);
|
||||
$.get(USE_ORIGIN + "/auth/gem.html", (ui) => {
|
||||
ui = ui.replace("checked", response.data?"checked":"");
|
||||
console.log(ui);
|
||||
Swal.fire({
|
||||
...SwalConfig,
|
||||
title: "Gemini Settings",
|
||||
html: ui,
|
||||
willClose: (doc) => {
|
||||
switch(doc.getElementsByTagName("input")[0].checked){
|
||||
case true:
|
||||
payload.enable = "yes";
|
||||
break;
|
||||
case false:
|
||||
payload.enable = "no";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
payload.token = localStorage.getItem("tty_token");
|
||||
post(USE_ORIGIN + "/auth/api/index.php", payload, (set_response) => {
|
||||
if(set_response.error){
|
||||
Swal.fire({
|
||||
...SwalConfig,
|
||||
title: "Config Failed",
|
||||
text: set_response.error,
|
||||
});
|
||||
}else {
|
||||
Swal.fire({
|
||||
...SwalConfig,
|
||||
title: "Success",
|
||||
text: set_response.data,
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
})
|
||||
});
|
||||
};
|
||||
|
||||
|
9
auth/gem.html
Normal file
9
auth/gem.html
Normal file
@@ -0,0 +1,9 @@
|
||||
<div class="row">
|
||||
<div class="col">Enable Web Proxy</div>
|
||||
<div class="col">
|
||||
<label class="switch">
|
||||
<input type="checkbox" id="gemini-proxy" checked>
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
Reference in New Issue
Block a user