HTTP/1.1 200 OK
Content-Type: text/html;charset=utf-8
Server: CherryPy/unknown
Date: Fri, 25 Oct 2024 10:11:34 GMT
Vary: Accept-Encoding
Content-Length: 8744
Connection: close
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Tautulli - Login</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="author" content="">
<meta name="referrer" content="no-referrer">
<link href="/css/bootstrap3/bootstrap.min.css" rel="stylesheet">
<link href="/css/tautulli.css?940c2ae6cd064817512aa7646386a31fa9f465fa" rel="stylesheet">
<link href="/css/opensans.min.css" rel="stylesheet">
<link href="/css/font-awesome.all.min.css" rel="stylesheet">
<link href="/css/font-awesome.v4-shims.min.css" rel="stylesheet">
<!-- Favicons -->
<link rel="icon" type="image/png" sizes="32x32" href="/images/favicon/favicon-32x32.png?v=2.6.0">
<link rel="icon" type="image/png" sizes="16x16" href="/images/favicon/favicon-16x16.png?v=2.6.0">
<link rel="shortcut icon" href="/images/favicon/favicon.ico?v=2.6.0">
<!-- ICONS -->
<!-- Android -->
<link rel="manifest" href="/images/favicon/manifest.json?v=2.9.0" crossorigin="use-credentials">
<meta name="theme-color" content="#282a2d">
<!-- Apple -->
<link rel="apple-touch-icon" sizes="180x180" href="/images/favicon/apple-touch-icon.png?v=2.6.0">
<link rel="mask-icon" href="/images/favicon/safari-pinned-tab.svg?v=2.6.0" color="#282a2d">
<meta name="apple-mobile-web-app-title" content="Tautulli">
<!-- Microsoft -->
<meta name="application-name" content="Tautulli">
<meta name="msapplication-config" content="/images/favicon/browserconfig.xml?v=2.6.0">
</head>
<body style="margin: 0; overflow: auto;">
<div class="login-body-container">
<div class="container-fluid">
<div class="row">
<div class="login-container">
<div class="login-logo">
<img src="/images/logo-tautulli-100.png" height="100" alt="Tautulli">
</div>
<div class="row">
<div class="col-sm-6 col-sm-offset-3">
<div id="sign-in-alert" class="alert alert-danger login-alert"></div>
</div>
</div>
<div class="row">
<div class="col-sm-6 col-sm-offset-3">
<ul id="login-methods" class="accordion list-unstyled">
<li class="open">
<div class="link login-method-header">
Sign In with Plex
</div>
<ul class="submenu login-button-plex" style="display: block;">
<li>
<div>
<button id="sign-in-plex" class="btn btn-bright login-button"><i class="fa fa-sign-in"></i> Sign In</button>
</div>
<div class="remember-group">
<label class="control-label">
<input type="checkbox" id="remember_me_plex" name="remember_me_plex" title="for 30 days" value="1" checked="checked" /> Remember me
</label>
</div>
</li>
</ul>
</li>
<li class="">
<div class="link login-method-header">
Sign In with Tautulli
</div>
<ul class="submenu" style="">
<li>
<form id="login-form">
<div class="form-group">
<label for="username" class="control-label">
Username
</label>
<input type="text" id="username" name="username" class="form-control" autocorrect="off" autocapitalize="off" autofocus>
</div>
<div class="form-group">
<label for="password" class="control-label">
Password
</label>
<input type="password" id="password" name="password" class="form-control">
</div>
<div class="form-group">
<span class="remember-group">
<label class="control-label">
<input type="checkbox" id="remember_me" name="remember_me" title="for 30 days" value="1" checked="checked" /> Remember me
</label>
</span>
<button id="sign-in" type="submit" class="btn btn-bright login-button"><i class="fa fa-sign-in"></i> Sign In</button>
</div>
</form>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="/js/jquery-3.6.0.min.js"></script>
<script src="/js/platform.min.js"></script>
<script src="/js/script.js?940c2ae6cd064817512aa7646386a31fa9f465fa"></script>
<script>
var login_accordion = new Accordion($('#login-methods'), false, false);
function OAuthSuccessCallback(authToken) {
signIn(true, authToken);
}
function OAuthErrorCallback() {
$('#sign-in-alert').text('Error communicating with Plex.tv.').show();
}
$('#sign-in-plex').click(function() {
PlexOAuth(OAuthSuccessCallback, OAuthErrorCallback);
});
$('#login-form').submit(function(event) {
event.preventDefault();
signIn(false);
});
function signIn(plex, token) {
$('.login-container button').prop('disabled', true);
if (plex) {
$('#sign-in-plex').html('<i class="fa fa-refresh fa-spin"></i> Sign In');
} else {
$('#sign-in').html('<i class="fa fa-refresh fa-spin"></i> Sign In');
}
const username = plex ? null : $('#username').val();
const password = plex ? null : $('#password').val();
const remember_me = plex ? ($('#remember_me_plex').is(':checked') ? '1' : '0')
: ($('#remember_me').is(':checked') ? '1' : '0');
var data = {
username: username,
password: password,
token: token,
remember_me: remember_me
};
var x_plex_headers = getPlexHeaders();
data = $.extend(data, x_plex_headers);
$.ajax({
url: '/auth/signin',
type: 'POST',
data: data,
dataType: 'json',
statusCode: {
200: function(xhr, status) {
window.location = "redirect?redirect_uri=/";
},
401: function(xhr, status) {
if (plex) {
$('#sign-in-alert').text('Invalid Plex Login.').show();
} else {
$('#sign-in-alert').text('Incorrect username or password.').show();
$('#username').focus();
}
},
429: function(xhr, status) {
var retry = Math.ceil(xhr.getResponseHeader('Retry-After') / 60)
$('#sign-in-alert').text('Too many login attempts. Try again in ' + retry + ' minute(s).').show();
}
},
complete: function() {
$('.login-container button').prop('disabled', false);
if (plex) {
$('#sign-in-plex').html('<i class="fa fa-sign-in"></i> Sign In');
} else {
$('#sign-in').html('<i class="fa fa-sign-in"></i> Sign In');
}
}
});
}
</script>
</body>
</html>
{
"@category" : "datascan",
"@timestamp" : "2024-10-25T10:11:37.000Z",
"app" : {
"favicon" : {
"url" : "/images/favicon/favicon-32x32.png"
},
"http" : {
"bodymd5" : "c298cf59aa0f2f4b94e8eb87f029ea3c",
"bodymmh3" : 1001625006,
"component" : [
{
"product" : "jQuery",
"productvendor" : "jQuery",
"productversion" : "3.6.0"
}
],
"headermd5" : "a0c110e1aaf25f084f4176dbf8d5e1c1",
"headermmh3" : -1993562241,
"title" : "Tautulli - Login"
},
"length" : 8929
},
"asn" : "AS12876",
"city" : "Paris",
"country" : "FR",
"cpe" : "<enterprise field>: cpe",
"cpecount" : "<enterprise field>: cpecount",
"data" : "HTTP/1.1 200 OK\r\nContent-Type: text/html;charset=utf-8\r\nServer: CherryPy/unknown\r\nDate: Fri, 25 Oct 2024 10:11:34 GMT\r\nVary: Accept-Encoding\r\nContent-Length: 8744\r\nConnection: close\r\n\r\n\n<!doctype html>\n\n<html lang=\"en\">\n<head>\n <meta charset=\"utf-8\">\n <title>Tautulli - Login</title>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <meta name=\"description\" content=\"\">\n <meta name=\"author\" content=\"\">\n <meta name=\"referrer\" content=\"no-referrer\">\n <link href=\"/css/bootstrap3/bootstrap.min.css\" rel=\"stylesheet\">\n <link href=\"/css/tautulli.css?940c2ae6cd064817512aa7646386a31fa9f465fa\" rel=\"stylesheet\">\n <link href=\"/css/opensans.min.css\" rel=\"stylesheet\">\n <link href=\"/css/font-awesome.all.min.css\" rel=\"stylesheet\">\n <link href=\"/css/font-awesome.v4-shims.min.css\" rel=\"stylesheet\">\n\n <!-- Favicons -->\n <link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/images/favicon/favicon-32x32.png?v=2.6.0\">\n <link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/images/favicon/favicon-16x16.png?v=2.6.0\">\n <link rel=\"shortcut icon\" href=\"/images/favicon/favicon.ico?v=2.6.0\">\n\n <!-- ICONS -->\n <!-- Android -->\n <link rel=\"manifest\" href=\"/images/favicon/manifest.json?v=2.9.0\" crossorigin=\"use-credentials\">\n <meta name=\"theme-color\" content=\"#282a2d\">\n <!-- Apple -->\n <link rel=\"apple-touch-icon\" sizes=\"180x180\" href=\"/images/favicon/apple-touch-icon.png?v=2.6.0\">\n <link rel=\"mask-icon\" href=\"/images/favicon/safari-pinned-tab.svg?v=2.6.0\" color=\"#282a2d\">\n <meta name=\"apple-mobile-web-app-title\" content=\"Tautulli\">\n <!-- Microsoft -->\n <meta name=\"application-name\" content=\"Tautulli\">\n <meta name=\"msapplication-config\" content=\"/images/favicon/browserconfig.xml?v=2.6.0\">\n</head>\n\n<body style=\"margin: 0; overflow: auto;\">\n<div class=\"login-body-container\">\n <div class=\"container-fluid\">\n <div class=\"row\">\n <div class=\"login-container\">\n <div class=\"login-logo\">\n <img src=\"/images/logo-tautulli-100.png\" height=\"100\" alt=\"Tautulli\">\n </div>\n <div class=\"row\">\n <div class=\"col-sm-6 col-sm-offset-3\">\n <div id=\"sign-in-alert\" class=\"alert alert-danger login-alert\"></div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-6 col-sm-offset-3\">\n <ul id=\"login-methods\" class=\"accordion list-unstyled\">\n <li class=\"open\">\n <div class=\"link login-method-header\">\n Sign In with Plex\n </div>\n <ul class=\"submenu login-button-plex\" style=\"display: block;\">\n <li>\n <div>\n <button id=\"sign-in-plex\" class=\"btn btn-bright login-button\"><i class=\"fa fa-sign-in\"></i> Sign In</button>\n </div>\n <div class=\"remember-group\">\n <label class=\"control-label\">\n <input type=\"checkbox\" id=\"remember_me_plex\" name=\"remember_me_plex\" title=\"for 30 days\" value=\"1\" checked=\"checked\" /> Remember me\n </label>\n </div>\n </li>\n </ul>\n </li>\n <li class=\"\">\n <div class=\"link login-method-header\">\n Sign In with Tautulli\n </div>\n <ul class=\"submenu\" style=\"\">\n <li>\n <form id=\"login-form\">\n <div class=\"form-group\">\n <label for=\"username\" class=\"control-label\">\n Username\n </label>\n <input type=\"text\" id=\"username\" name=\"username\" class=\"form-control\" autocorrect=\"off\" autocapitalize=\"off\" autofocus>\n </div>\n <div class=\"form-group\">\n <label for=\"password\" class=\"control-label\">\n Password\n </label>\n <input type=\"password\" id=\"password\" name=\"password\" class=\"form-control\">\n </div>\n <div class=\"form-group\">\n <span class=\"remember-group\">\n <label class=\"control-label\">\n <input type=\"checkbox\" id=\"remember_me\" name=\"remember_me\" title=\"for 30 days\" value=\"1\" checked=\"checked\" /> Remember me\n </label>\n </span>\n <button id=\"sign-in\" type=\"submit\" class=\"btn btn-bright login-button\"><i class=\"fa fa-sign-in\"></i> Sign In</button>\n </div>\n </form>\n </li>\n </ul>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<script src=\"/js/jquery-3.6.0.min.js\"></script>\n<script src=\"/js/platform.min.js\"></script>\n<script src=\"/js/script.js?940c2ae6cd064817512aa7646386a31fa9f465fa\"></script>\n<script>\n var login_accordion = new Accordion($('#login-methods'), false, false);\n\n function OAuthSuccessCallback(authToken) {\n signIn(true, authToken);\n }\n function OAuthErrorCallback() {\n $('#sign-in-alert').text('Error communicating with Plex.tv.').show();\n }\n\n $('#sign-in-plex').click(function() {\n PlexOAuth(OAuthSuccessCallback, OAuthErrorCallback);\n });\n\n $('#login-form').submit(function(event) {\n event.preventDefault();\n signIn(false);\n });\n\n function signIn(plex, token) {\n $('.login-container button').prop('disabled', true);\n if (plex) {\n $('#sign-in-plex').html('<i class=\"fa fa-refresh fa-spin\"></i> Sign In');\n } else {\n $('#sign-in').html('<i class=\"fa fa-refresh fa-spin\"></i> Sign In');\n }\n\n const username = plex ? null : $('#username').val();\n const password = plex ? null : $('#password').val();\n const remember_me = plex ? ($('#remember_me_plex').is(':checked') ? '1' : '0')\n : ($('#remember_me').is(':checked') ? '1' : '0');\n\n var data = {\n username: username,\n password: password,\n token: token,\n remember_me: remember_me\n };\n var x_plex_headers = getPlexHeaders();\n data = $.extend(data, x_plex_headers);\n\n $.ajax({\n url: '/auth/signin',\n type: 'POST',\n data: data,\n dataType: 'json',\n statusCode: {\n 200: function(xhr, status) {\n window.location = \"redirect?redirect_uri=/\";\n },\n 401: function(xhr, status) {\n if (plex) {\n $('#sign-in-alert').text('Invalid Plex Login.').show();\n } else {\n $('#sign-in-alert').text('Incorrect username or password.').show();\n $('#username').focus();\n }\n },\n 429: function(xhr, status) {\n var retry = Math.ceil(xhr.getResponseHeader('Retry-After') / 60)\n $('#sign-in-alert').text('Too many login attempts. Try again in ' + retry + ' minute(s).').show();\n }\n },\n complete: function() {\n $('.login-container button').prop('disabled', false);\n if (plex) {\n $('#sign-in-plex').html('<i class=\"fa fa-sign-in\"></i> Sign In');\n } else {\n $('#sign-in').html('<i class=\"fa fa-sign-in\"></i> Sign In');\n }\n }\n });\n }\n</script>\n</body>\n</html>\n",
"datamd5" : "9adb829bb6480d55810c048a72dfce03",
"datammh3" : 1558462142,
"device" : {
"class" : "<enterprise field>: device.class"
},
"domain" : [
"scw.cloud"
],
"forward" : "51.159.211.150",
"geolocus" : {
"asn" : "AS12876",
"continent" : "EU",
"continentname" : "Europe",
"country" : "FR",
"countryname" : "France",
"domain" : [
"poneytelecom.eu",
"scaleway.com"
],
"isineu" : "true",
"latitude" : "46.227638",
"location" : "46.227638,2.213749",
"longitude" : "2.213749",
"netname" : "ONLINENET_DEDICATED_SERVERS",
"organization" : "Scaleway",
"subnet" : "51.159.0.0/16"
},
"host" : [
"b27fd95e-ba61-4778-a099-b331a550eee4"
],
"hostname" : [
"51.159.211.150",
"b27fd95e-ba61-4778-a099-b331a550eee4.fr-par-2.baremetal.scw.cloud"
],
"ip" : "51.159.211.150",
"ipv6" : "false",
"latitude" : "48.8323",
"location" : "48.8323,2.4075",
"longitude" : "2.4075",
"node" : {
"country" : "<enterprise field>: node.country",
"groupid" : "<enterprise field>: node.groupid",
"id" : "<enterprise field>: node.id",
"physicalcountry" : "<enterprise field>: node.physicalcountry"
},
"organization" : "Scaleway S.a.s.",
"port" : 8181,
"product" : "Cherrypy",
"productvendor" : "Cherrypy",
"protocol" : "http",
"protocolversion" : "1.1",
"reason" : "OK",
"reverse" : [
"b27fd95e-ba61-4778-a099-b331a550eee4.fr-par-2.baremetal.scw.cloud"
],
"seen_date" : "2024-10-25",
"source" : "urlscan::redirect",
"status" : 200,
"subdomains" : [
"baremetal.scw.cloud",
"fr-par-2.baremetal.scw.cloud"
],
"subnet" : "51.158.0.0/15",
"tag" : "<enterprise field>: tag",
"tld" : [
"cloud"
],
"tls" : "false",
"transport" : "tcp",
"url" : "/auth/login?redirect_uri=/"
}