mirror of
https://github.com/aunefyren/wrapperr
synced 2024-11-14 15:37:06 +00:00
589dd44672
commit 03b7ce95646b8b4452bbf56849127d52a0f98474
Author: aunefyren <oystein.sverre@gmail.com>
Date: Tue Jan 11 14:32:22 2022 +0100
Custom server-wide section
commit 1dce85dd0a7a7d8ad0a31eb8a11ad7fca2de4988
Author: aunefyren <oystein.sverre@gmail.com>
Date: Tue Jan 4 15:29:57 2022 +0100
Link improvements
- Links are deleted if made on different version
- Links also carry Wrapperr settings for that link creation
- Created links are shown on homepage
- Links can be deleted on home page
- CSS tweaks
commit 3c6a7eb05e7d1a4afda2239a8a98706827bf1f96
Author: aunefyren <oystein.sverre@gmail.com>
Date: Mon Jan 3 22:16:56 2022 +0100
Music is now fully custom
commit edfca775004e43518d6258347a3e4c69c9e089a3
Author: aunefyren <oystein.sverre@gmail.com>
Date: Mon Jan 3 12:16:53 2022 +0100
SHow buddy bug fix
commit e5a739631da9c34d8a7c2262bd96430f23d2ea12
Author: aunefyren <oystein.sverre@gmail.com>
Date: Mon Jan 3 12:05:35 2022 +0100
Show section is now fully custom
commit 693eaec76951241a9ef0d76d8284169c87c25fdd
Author: aunefyren <oystein.sverre@gmail.com>
Date: Sun Jan 2 19:56:50 2022 +0100
Fixed movie completion image bug
commit ef2b49969fbbb593e207fabdea42fd2f3f849f42
Author: aunefyren <oystein.sverre@gmail.com>
Date: Sun Jan 2 19:45:10 2022 +0100
pop up issues on iOs
commit 1515db8c1b56ec95f2455df62a82ecdb45a56fac
Author: aunefyren <oystein.sverre@gmail.com>
Date: Sun Jan 2 18:51:22 2022 +0100
URL
commit b8add61a1652ae5d4de8527acf422ae2215adef8
Author: aunefyren <oystein.sverre@gmail.com>
Date: Sun Jan 2 18:39:06 2022 +0100
CSS overhaul for admin-page
commit 40e44fc5b1272d23e4fc6da3a59f9c06a339bcc7
Author: aunefyren <oystein.sverre@gmail.com>
Date: Thu Dec 30 18:55:47 2021 +0100
100% custom movie section, sort buttons
commit 7accc2d006088127e80beebace3c8ac8f0c14960
Author: aunefyren <oystein.sverre@gmail.com>
Date: Thu Dec 23 15:59:04 2021 +0100
Added sorting by plays
And custom text for movie completion
commit 3f24b11fd116669e51fa0256e086f352d35c48b0
Author: aunefyren <oystein.sverre@gmail.com>
Date: Wed Dec 22 14:53:56 2021 +0100
Application title CSS size
commit a8f19370d2ac5723fe397e1fe106e8cec49cd174
Author: aunefyren <oystein.sverre@gmail.com>
Date: Wed Dec 22 14:30:32 2021 +0100
More custom text
- Lists
- Server-wide options
commit 847dd60483065516398e1d52fa209b54f240de01
Author: aunefyren <oystein.sverre@gmail.com>
Date: Tue Dec 21 14:33:27 2021 +0100
Custom language options
Change certain words for alternatives, such as plays, days and so on.
commit fe501ba9e3ffa6098d3c1869ef8a1580f10897be
Author: aunefyren <oystein.sverre@gmail.com>
Date: Tue Dec 21 13:01:15 2021 +0100
Scrambling for answers
commit f99c2f2dff36a45cbe7ccf79d7a6f5ac39f21011
Author: aunefyren <oystein.sverre@gmail.com>
Date: Tue Dec 21 12:42:57 2021 +0100
Cookie settings
commit 5efddfc9d77a69db62d8b979976c42d079c8b4a2
Author: aunefyren <oystein.sverre@gmail.com>
Date: Tue Dec 21 12:21:05 2021 +0100
More headers
commit e1c106534cfbd2d0d62492e6c25a1efdb5a70325
Author: aunefyren <oystein.sverre@gmail.com>
Date: Tue Dec 21 11:52:11 2021 +0100
Trying to fix CURL origin
commit f7a59ed8d21ad731913ba5f5259997361c8ffdbb
Author: aunefyren <oystein.sverre@gmail.com>
Date: Tue Dec 21 11:40:56 2021 +0100
Color bug and headers
commit be604797524de5cb06c66eb593fecd563cbd6592
Author: aunefyren <oystein.sverre@gmail.com>
Date: Tue Dec 21 11:12:02 2021 +0100
Admin stuff
- Added new admin menu
- Admin login session
- Separate config categories
- Added application URL and name
- Config file builds using file, then adds default for variables not found. Less config deletions.
- Admin is separate config to prevent stealing unconfigured platforms.
- Moved caching to admin menu.
- Caching in API requires admin login.
- Added robots.txt for web crawlers.
- New color palette
- Renamed more stuff to Wrapperr
commit 5b62dbb2ef4f05d33e49f0ce7e12c147e2343f06
Merge: 84caa7b 67dcf77
Author: aunefyren <oystein.sverre@gmail.com>
Date: Mon Dec 13 12:51:09 2021 +0100
Merge branch 'main' into develop
commit 84caa7b85f9036c7ca4cf2535f80bdf96aa120f6
Author: aunefyren <oystein.sverre@gmail.com>
Date: Sun Dec 12 17:26:23 2021 +0100
Disable pre-made links when changing config
If you disable links in the config, already made links will stop working
commit 4ae03627594a821323fc20c1ad8bf1b8d5f8f1cb
Author: aunefyren <oystein.sverre@gmail.com>
Date: Sun Dec 12 17:08:49 2021 +0100
Button icons and button disabling
Displays that a function is working in the background by disabling the button.
commit cc43d00fbc122cc681a008e6a736273540c10b3e
Author: aunefyren <oystein.sverre@gmail.com>
Date: Sun Dec 12 16:43:33 2021 +0100
Added version control
- Release now dynamically displayed on pages
- Configs are tagged with version and deleted when not compatible
commit a18c2515904a978cb0a85edbeecfb5baab81c2b6
Author: aunefyren <oystein.sverre@gmail.com>
Date: Sat Dec 11 13:56:18 2021 +0100
Option to disable links
commit d8f1b0ab09f5ed1cfbdc9a753be2bebd63c51e2c
Author: aunefyren <oystein.sverre@gmail.com>
Date: Sat Dec 11 12:49:58 2021 +0100
Plex Auth, shareable links, fancy colors
v2.1.0 testing
- Moved to class-system within PHP.
- All wrapped requests now gathered and validated using Plex Auth #9
- Session stored as browser cookie
- Button icons
- Colors fade between wrapped categories
- Minutes count added for music above a certain sum #7
- Ability to create shareable links valid for 7 days #14
- HTML Input placeholders removed #10
- Ability to specify Plex libraries #18
commit 23022d0090c267c46e95a818cd57639360e542bc
Author: aunefyren <oystein.sverre@gmail.com>
Date: Sat Dec 4 23:02:16 2021 +0100
Fixed caching
Forgot to add global and variable to function
commit b5765f3094206406c8d2f20ffd36b0bad5ea0200
Author: aunefyren <oystein.sverre@gmail.com>
Date: Sat Dec 4 22:58:48 2021 +0100
Re-added caching mode
Whops
commit 20ccd23ed9a04fa4b00e2994ab89a931d79f5a78
Author: aunefyren <oystein.sverre@gmail.com>
Date: Sat Dec 4 22:52:38 2021 +0100
Stats API mostly moved to new class format
commit a594447ffcd917d149078dd5c57d7e3f5a88bf1a
Author: aunefyren <oystein.sverre@gmail.com>
Date: Sat Dec 4 16:17:48 2021 +0100
Fixed login bug on caching
commit 9d303514ef080e9483f4753b7fc488da314d1b7a
Author: aunefyren <oystein.sverre@gmail.com>
Date: Sat Dec 4 16:06:09 2021 +0100
Added root option, fixed PHP relative folders
commit 08f21ad4132f92a502cd83521ba51dd9ab9a2dfb
Author: aunefyren <oystein.sverre@gmail.com>
Date: Sat Dec 4 13:57:18 2021 +0100
FIxed major login issue from last commit
commit 84d767ac99946016dca6ef92991f12f661de266c
Author: aunefyren <oystein.sverre@gmail.com>
Date: Sat Dec 4 13:12:42 2021 +0100
Made PHP classes, added client_id variable
PHP now uses classes on everything but the main stat API call. This should improve error messages.
Added new client_id variable for Plex Auth
Tried to improve caching description
Tautulli test button now alerts error messages
New code has comments
commit e14ad8b5ccd937eea639eb6fc8c6c7e93ee9df3a
Author: aunefyren <oystein.sverre@gmail.com>
Date: Fri Dec 3 17:25:00 2021 +0100
Changed UI for admin & Trying to alert permission issues
308 lines
No EOL
10 KiB
JavaScript
308 lines
No EOL
10 KiB
JavaScript
function cookie_login_actions() {
|
|
cookie = get_cookie('wrapperr-user');
|
|
|
|
if(cookie) {
|
|
document.getElementById('search_wrapped_form').style.display = 'block';
|
|
document.getElementById('plex_login_form').style.display = 'none';
|
|
document.getElementById('sign_out_div').style.display = 'block';
|
|
|
|
validate_cookie_user(cookie);
|
|
}
|
|
}
|
|
|
|
function wrapped_link_actions(hash) {
|
|
|
|
hash_form = {
|
|
"hash" : hash
|
|
};
|
|
|
|
var hash_data = JSON.stringify(hash_form);
|
|
|
|
var xhttp = new XMLHttpRequest();
|
|
xhttp.onreadystatechange = function() {
|
|
if (this.readyState == 4 && (this.status == 200 || this.status == 400 || this.status == 500)) {
|
|
try {
|
|
var result= JSON.parse(this.responseText);
|
|
} catch(error) {
|
|
document.getElementById('stats').innerHTML = "API response can't be parsed.";
|
|
reset_button();
|
|
}
|
|
|
|
if(result.error) {
|
|
document.getElementById('stats').innerHTML = '<p>' + result.message + '</p><img id="bored_image" src="assets/img/bored.svg" style="width: 10em; height: 10em; display:block; margin: 1em auto;">';
|
|
} else {
|
|
results = result.data;
|
|
functions = result.functions;
|
|
load_page();
|
|
}
|
|
}
|
|
};
|
|
xhttp.withCredentials = true;
|
|
xhttp.open("post", "api/get_link.php");
|
|
xhttp.send(hash_data);
|
|
}
|
|
|
|
function sign_out() {
|
|
set_cookie("wrapperr-user", "", 1);
|
|
document.getElementById('search_wrapped_form').style.display = 'none';
|
|
document.getElementById('plex_login_form').style.display = 'block';
|
|
document.getElementById("plex_login_button").disabled = false;
|
|
document.getElementById("plex_login_button").style.opacity = '1';
|
|
document.getElementById("search_wrapped_button").disabled = true;
|
|
document.getElementById("search_wrapped_button").style.opacity = '0.5';
|
|
document.getElementById('sign_out_div').style.display = 'none';
|
|
}
|
|
|
|
$(document).on('submit', '#search_wrapped_form', function(){
|
|
|
|
document.getElementById("search_wrapped_button").disabled = true;
|
|
document.getElementById("search_wrapped_button").style.opacity = '0.5';
|
|
document.getElementById("plex_signout_button").disabled = true;
|
|
document.getElementById("plex_signout_button").style.opacity = '0.5';
|
|
document.getElementById('results_error').innerHTML = "";
|
|
get_functions();
|
|
|
|
});
|
|
|
|
$(document).on('submit', '#plex_login_form', function(){
|
|
|
|
window_url = window.location.href.split('?')[0];
|
|
|
|
auth_form = {
|
|
"home_url" : window_url
|
|
};
|
|
|
|
var auth_data = JSON.stringify(auth_form);
|
|
|
|
var xhttp = new XMLHttpRequest();
|
|
xhttp.onreadystatechange = function() {
|
|
if (this.readyState == 4 && (this.status == 200 || this.status == 400 || this.status == 500)) {
|
|
try {
|
|
var result= JSON.parse(this.responseText);
|
|
document.getElementById('snowflakes').style.display = 'none';
|
|
} catch(error) {
|
|
document.getElementById('results_error').innerHTML = "API response can't be parsed.";
|
|
}
|
|
|
|
//console.log(result);
|
|
|
|
if(result.error) {
|
|
document.getElementById('results_error').innerHTML = result.message;
|
|
|
|
} else {
|
|
pop_up_login(result.url, result.code, result.id);
|
|
}
|
|
}
|
|
};
|
|
xhttp.withCredentials = true;
|
|
xhttp.open("post", "api/get_login_url.php");
|
|
xhttp.send(auth_data);
|
|
|
|
});
|
|
|
|
function pop_up_login(url, code, id) {
|
|
|
|
document.getElementById('plex_login_button_text').innerHTML = 'Loading...';
|
|
document.getElementById("plex_login_button").disabled = true;
|
|
document.getElementById("plex_login_button").style.opacity = '0.5';
|
|
|
|
const openedWindow = window.open(
|
|
url,
|
|
"Plex Login",
|
|
"width=500,height=750,resizable,scrollbars,popup=yes"
|
|
);
|
|
|
|
if (openedWindow == null || typeof(openedWindow)=='undefined') {
|
|
alert("Failed to open login window. Your browser might be blocking pop-up windows.");
|
|
return;
|
|
}
|
|
|
|
var timer = setInterval(function() {
|
|
if(openedWindow.closed) {
|
|
|
|
check_token(code, id);
|
|
|
|
clearInterval(timer);
|
|
|
|
}
|
|
}, 1000);
|
|
|
|
}
|
|
|
|
function check_token(code, id) {
|
|
|
|
auth_form = {
|
|
"code" : code,
|
|
"id" : id
|
|
};
|
|
|
|
var auth_data = JSON.stringify(auth_form);
|
|
|
|
var xhttp = new XMLHttpRequest();
|
|
xhttp.onreadystatechange = function() {
|
|
if (this.readyState == 4 && (this.status == 200 || this.status == 400 || this.status == 500)) {
|
|
try {
|
|
var result= JSON.parse(this.responseText);
|
|
} catch(error) {
|
|
document.getElementById('results_error').innerHTML = "API response can't be parsed.";
|
|
console.log('API response can\'t be parsed. Error: ' + this.responseText)
|
|
reset_button();
|
|
}
|
|
|
|
//console.log(result);
|
|
|
|
if(result.error) {
|
|
reset_button();
|
|
} else {
|
|
set_cookie("wrapperr-user", result.cookie, 1);
|
|
location.reload();
|
|
}
|
|
}
|
|
};
|
|
xhttp.withCredentials = true;
|
|
xhttp.open("post", "api/get_login_cookie.php");
|
|
xhttp.send(auth_data);
|
|
|
|
}
|
|
|
|
function reset_button() {
|
|
document.getElementById('plex_login_button_text').innerHTML = 'Sign in using Plex';
|
|
document.getElementById("plex_login_button").disabled = false;
|
|
document.getElementById("plex_login_button").style.opacity = '1';
|
|
}
|
|
|
|
function validate_cookie_user(cookie) {
|
|
var json_cookie = JSON.stringify({"cookie": cookie});
|
|
var xhttp = new XMLHttpRequest();
|
|
xhttp.onreadystatechange = function() {
|
|
if (this.readyState == 4 && this.status == 200) {
|
|
|
|
try {
|
|
var result= JSON.parse(this.responseText);
|
|
} catch(error) {
|
|
document.getElementById('results_error').innerHTML = "API response can't be parsed.";
|
|
reset_button();
|
|
}
|
|
|
|
//console.log(result);
|
|
|
|
if(result.error) {
|
|
set_cookie("wrapperr-user", "", 1);
|
|
document.getElementById('search_wrapped_form').style.display = 'none';
|
|
document.getElementById('sign_out_div').style.display = 'none';
|
|
document.getElementById('plex_login_form').style.display = 'block';
|
|
} else {
|
|
document.getElementById("plex_login_button").disabled = true;
|
|
document.getElementById("plex_login_button").style.opacity = '0.5';
|
|
document.getElementById("search_wrapped_button").disabled = false;
|
|
document.getElementById("search_wrapped_button").style.opacity = '1';
|
|
get_user_links(cookie);
|
|
}
|
|
|
|
}
|
|
};
|
|
xhttp.withCredentials = true;
|
|
xhttp.open("post", "api/validate_login_cookie.php");
|
|
xhttp.send(json_cookie);
|
|
return;
|
|
}
|
|
|
|
function get_user_links(cookie) {
|
|
cookie_form = {
|
|
"cookie" : cookie
|
|
};
|
|
|
|
var cookie_data = JSON.stringify(cookie_form);
|
|
var xhttp = new XMLHttpRequest();
|
|
xhttp.onreadystatechange = function() {
|
|
if (this.readyState == 4 && this.status == 200) {
|
|
|
|
try {
|
|
var result= JSON.parse(this.responseText);
|
|
} catch(error) {
|
|
console.log('Failed to parse Wrapperr links. Response: ' + this.responseText)
|
|
}
|
|
|
|
if(!result.error) {
|
|
for(var i = 0; i < result.links.length; i++) {
|
|
document.getElementById('share_wrapped_url').innerHTML = window.location.href.split('?')[0] + '?hash=' + result.links[i].url_hash;
|
|
document.getElementById('share_wrapped_title_div').style.display = 'block';
|
|
document.getElementById('share_wrapped_div').style.display = 'flex';
|
|
}
|
|
}
|
|
|
|
}
|
|
};
|
|
xhttp.withCredentials = true;
|
|
xhttp.open("post", "api/get_link_user.php");
|
|
xhttp.send(cookie_data);
|
|
return;
|
|
}
|
|
|
|
function get_wrapper_version() {
|
|
var xhttp = new XMLHttpRequest();
|
|
xhttp.onreadystatechange = function() {
|
|
if (this.readyState == 4 && this.status == 200) {
|
|
|
|
try {
|
|
var result= JSON.parse(this.responseText);
|
|
} catch(error) {
|
|
console.log('Failed to parse Wrapperr version. Response: ' + this.responseText)
|
|
}
|
|
|
|
if(!result.error) {
|
|
document.getElementById('github_link').innerHTML = 'GitHub (' + result.wrapperr_version + ')';
|
|
|
|
if(result.application_name && result.application_name !== '' && !link_mode) {
|
|
document.getElementById('application_name').innerHTML = result.application_name;
|
|
document.title = result.application_name;
|
|
}
|
|
}
|
|
|
|
}
|
|
};
|
|
xhttp.withCredentials = true;
|
|
xhttp.open("post", "api/get_wrapperr_version.php");
|
|
xhttp.send();
|
|
return;
|
|
}
|
|
|
|
function copy_link_user() {
|
|
window.open(document.getElementById('share_wrapped_url').innerHTML, '_blank').focus();
|
|
}
|
|
|
|
function delete_link_user() {
|
|
|
|
if(!confirm('Are you sure you want to delete this link?')) {
|
|
return;
|
|
}
|
|
|
|
cookie_form = {
|
|
"cookie" : cookie
|
|
};
|
|
|
|
var cookie_data = JSON.stringify(cookie_form);
|
|
var xhttp = new XMLHttpRequest();
|
|
xhttp.onreadystatechange = function() {
|
|
if (this.readyState == 4 && this.status == 200) {
|
|
|
|
try {
|
|
var result= JSON.parse(this.responseText);
|
|
} catch(error) {
|
|
console.log('Failed to parse Wrapperr response. Response: ' + this.responseText)
|
|
}
|
|
|
|
if(!result.error) {
|
|
document.getElementById('share_wrapped_title_div').style.display = 'none';
|
|
document.getElementById('share_wrapped_div').style.display = 'none';
|
|
} else {
|
|
console.log(result.message);
|
|
}
|
|
|
|
}
|
|
};
|
|
xhttp.withCredentials = true;
|
|
xhttp.open("post", "api/delete_link_user.php");
|
|
xhttp.send(cookie_data);
|
|
return;
|
|
} |