[vlc-devel] [PATCH 08/10][RFC][WIP] cloudstorage: access: custom-made html pages to the http server responses (personalized for VLC)

Diogo Silva dbtdsilva at gmail.com
Thu Aug 17 03:08:16 CEST 2017


---
 modules/access/cloudstorage/access.cpp   | 16 ++++++++++
 share/Makefile.am                        | 13 +++++++-
 share/cloudstorage/amazons3_login.html   | 52 ++++++++++++++++++++++++++++++++
 share/cloudstorage/amazons3_success.html | 31 +++++++++++++++++++
 share/cloudstorage/default_error.html    | 32 ++++++++++++++++++++
 share/cloudstorage/default_success.html  | 33 ++++++++++++++++++++
 share/cloudstorage/mega_login.html       | 47 +++++++++++++++++++++++++++++
 share/cloudstorage/mega_success.html     | 31 +++++++++++++++++++
 share/cloudstorage/owncloud_login.html   | 51 +++++++++++++++++++++++++++++++
 share/cloudstorage/owncloud_success.html | 31 +++++++++++++++++++
 10 files changed, 336 insertions(+), 1 deletion(-)
 create mode 100644 share/cloudstorage/amazons3_login.html
 create mode 100644 share/cloudstorage/amazons3_success.html
 create mode 100644 share/cloudstorage/default_error.html
 create mode 100644 share/cloudstorage/default_success.html
 create mode 100644 share/cloudstorage/mega_login.html
 create mode 100644 share/cloudstorage/mega_success.html
 create mode 100644 share/cloudstorage/owncloud_login.html
 create mode 100644 share/cloudstorage/owncloud_success.html

diff --git a/modules/access/cloudstorage/access.cpp b/modules/access/cloudstorage/access.cpp
index e8a48af47d..e2c37963fe 100644
--- a/modules/access/cloudstorage/access.cpp
+++ b/modules/access/cloudstorage/access.cpp
@@ -151,6 +151,22 @@ static int InitProvider( stream_t * p_access )
     hints["redirect_uri"] = "http://localhost:" + redirect_port + "/auth";
     hints["file_url"] = "http://localhost:" + redirect_port + "/files";

+    // Load custom-made pages
+    std::string parent = "cloudstorage";
+    parent.append( DIR_SEP );
+    if ( strcmp( p_sys->url.psz_host, "amazons3" ) == 0 ||
+         strcmp( p_sys->url.psz_host, "mega" ) == 0 ||
+         strcmp( p_sys->url.psz_host, "owncloud" ) == 0 )
+    {
+        hints["login_page"] = ReadFile(
+                parent + p_sys->url.psz_host + "_login.html");
+        hints["success_page"] = ReadFile(
+                parent + p_sys->url.psz_host + "_success.html");
+    }
+    else
+        hints["success_page"] = ReadFile( parent + "default_success.html" );
+    hints["error_page"] = ReadFile( parent + "default_error.html" );
+
     // Initialize the provider
     p_sys->provider = cloudstorage::ICloudStorage::
             create()->provider( p_sys->url.psz_host );
diff --git a/share/Makefile.am b/share/Makefile.am
index 5d763a01d2..d0c3c3a6ef 100644
--- a/share/Makefile.am
+++ b/share/Makefile.am
@@ -54,7 +54,8 @@ EXTRA_DIST += \
 	$(DIST_skins2) \
 	$(DIST_icons) \
 	$(DIST_http_lua) \
-	$(DIST_solid)
+	$(DIST_solid) \
+	$(DIST_cloudstorage)

 nobase_vlcdata_DATA =
 if BUILD_SKINS
@@ -302,3 +303,13 @@ DIST_solid = \
 	solid/vlc-opencda.desktop \
 	solid/vlc-opendvd.desktop \
 	solid/vlc-openvcd.desktop
+
+DIST_cloudstorage = \
+	cloudstorage/amazons3_login.html \
+	cloudstorage/amazons3_success.html \
+	cloudstorage/default_error.html \
+	cloudstorage/default_success.html \
+	cloudstorage/mega_login.html \
+	cloudstorage/mega_success.html \
+	cloudstorage/owncloud_login.html \
+	cloudstorage/owncloud_success.html
\ No newline at end of file
diff --git a/share/cloudstorage/amazons3_login.html b/share/cloudstorage/amazons3_login.html
new file mode 100644
index 0000000000..c8f5c9a354
--- /dev/null
+++ b/share/cloudstorage/amazons3_login.html
@@ -0,0 +1,52 @@
+<html>
+<head>
+  <meta name="Author" content="VideoLAN" />
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+  <meta name="viewport" content="width=device-width, initial-scale=1" />
+  <title>VLC Local Authentication Server</title>
+  <script src='//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js' type='text/javascript'></script>
+  <script async="async" src="//images.videolan.org/js/bootstrap.min.js" type="text/javascript"></script>
+  <script src='https://cdnjs.cloudflare.com/ajax/libs/js-url/2.5.0/url.min.js'></script>
+  <link rel="stylesheet" type="text/css" href="//images.videolan.org/style/bootstrap.min.css" />
+  <link rel="stylesheet" type="text/css" href="//images.videolan.org/style/style.min.css" />
+</head>
+<body class="new-design">
+  <div id='bodyInner' class='blue' style='padding:0'>
+    <nav id="nav" class="navbar navbar-default navbar-static-top">
+      <div class="container">
+        <div class="navbar-header"><a class="navbar-brand" href="//www.videolan.org/"><img src='//images.videolan.org/images/logoBlue.png' alt='VideoLAN association' /></a>
+          <a class="navbar-brand" style="padding: 15px 15px">VLC Local Server</a><button type="button" class="navbar-toggle collapsed"
+            data-toggle="collapse" data-target="#main-navbar" aria-expanded="false"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button></div>
+      </div>
+    </nav>
+    <div class="container center-block">
+      <script>
+        function submitData() {
+          var code = encodeURIComponent($('#inputAccessKey').val() + '@' + $('#inputRegion').val() + '##' + $('#inputSecretKey').val());
+          window.location.href = location.pathname.split("/").slice(0,-1).join("/") + "?code=" + code + "&state=" + url('?').state;
+          return false;
+        };
+      </script>
+      <h2 class="text-center">Amazon S3 Login</h2>
+      <h5>VLC requires access to your Amazon S3 account in order to display the content of your cloud storage.<br/>Amazon
+        S3 requires generating an access and a secret token in order to be used in external applications. To generate those
+        tokens, go to "My security credentials", then "Access Keys" and create them.</h5><br/>
+      <form class="form-horizontal" onsubmit="return submitData()">
+        <div class="form-group"><label for="inputRegion" class="col-sm-2 control-label">Region</label>
+          <div class="col-sm-10"><select id="inputRegion" class="form-control"><option value="ap-northeast-1">Asia Pacific (Tokyo)</option><option value="ap-northeast-2">Asia Pacific (Seoul)</option><option value="ap-south-1">Asia Pacific (Mumbai)</option><option value="ap-southeast-1">Asia Pacific (Singapore)</option><option value="ap-southeast-2">Asia Pacific (Sydney)</option><option value="ca-central-1">Canada (Central)</option><option value="eu-central-1">EU (Frankfurt)</option><option value="eu-west-1">EU (Ireland)</option><option value="eu-west-2">EU (London)</option><option value="sa-east-1">South America (São Paulo)</option><option value="us-east-1">US East (N. Virginia)</option><option value="us-east-2">US East (Ohio)</option><option value="us-west-1">US West (N. California)</option><option value="us-west-2">US West (Oregon)</option></select></div>
+        </div>
+        <div class="form-group"><label for="inputAccessKey" class="col-sm-2 control-label">Access Key</label>
+          <div class="col-sm-10"><input type="text" class="form-control" id="inputAccessKey" placeholder="Access Key ID"></div>
+        </div>
+        <div class="form-group"><label for="inputSecretKey" class="col-sm-2 control-label">Secret Key</label>
+          <div class="col-sm-10"><input type="password" class="form-control" id="inputSecretKey" placeholder="Secret Access Key"></div>
+        </div>
+        <div class="form-group">
+          <div class="col-sm-offset-2 col-sm-10"><button type="submit" id="submit" class="btn btn-default">Sign in</button></div>
+      </form><br/><br/>
+      <h5>This page is running locally and is hosted by your machine. The inserted data is going to be safely sent to <a href="https://aws.amazon.com/s3/">Amazon S3</a>        servers.</h5>
+      </div>
+    </div>
+</body>
+</html>
diff --git a/share/cloudstorage/amazons3_success.html b/share/cloudstorage/amazons3_success.html
new file mode 100644
index 0000000000..68aa239970
--- /dev/null
+++ b/share/cloudstorage/amazons3_success.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+  <meta name="Author" content="VideoLAN" />
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+  <meta name="viewport" content="width=device-width, initial-scale=1" />
+  <title>VLC Local Authentication Server</title>
+  <script src='//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js' type='text/javascript'></script>
+  <script async="async" src="//images.videolan.org/js/bootstrap.min.js" type="text/javascript"></script>
+  <link rel="stylesheet" type="text/css" href="//images.videolan.org/style/bootstrap.min.css" />
+  <link rel="stylesheet" type="text/css" href="//images.videolan.org/style/style.min.css" />
+</head>
+<body class="new-design">
+  <div id='bodyInner' class='blue' style='padding:0'>
+    <nav id="nav" class="navbar navbar-default navbar-static-top">
+      <div class="container">
+        <div class="navbar-header"><a class="navbar-brand" href="//www.videolan.org/"><img src='//images.videolan.org/images/logoBlue.png' alt='VideoLAN association' /></a>
+          <a class="navbar-brand" style="padding: 15px 15px">VLC Local Server</a><button type="button" class="navbar-toggle collapsed"
+            data-toggle="collapse" data-target="#main-navbar" aria-expanded="false"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button></div>
+      </div>
+    </nav>
+    <div class="container center-block">
+      <h2 class="text-center">Your login has been sent to <a href="https://aws.amazon.com/s3/">Amazon S3</a> server successfully</h2>
+      <script>
+        $.ajax({ "data": { "accepted": "true" } });
+        history.replaceState({}, null, location.pathname + '/success');
+      </script>
+    </div>
+  </div>
+</body>
+</html>
diff --git a/share/cloudstorage/default_error.html b/share/cloudstorage/default_error.html
new file mode 100644
index 0000000000..2849b4eb21
--- /dev/null
+++ b/share/cloudstorage/default_error.html
@@ -0,0 +1,32 @@
+<html>
+<head>
+  <meta name="Author" content="VideoLAN" />
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+  <meta name="viewport" content="width=device-width, initial-scale=1" />
+  <title>VLC Local Authentication Server</title>
+  <script src='//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js' type='text/javascript'></script>
+  <script async="async" src="//images.videolan.org/js/bootstrap.min.js" type="text/javascript"></script>
+  <link rel="stylesheet" type="text/css" href="//images.videolan.org/style/bootstrap.min.css" />
+  <link rel="stylesheet" type="text/css" href="//images.videolan.org/style/style.min.css" />
+</head>
+
+<body class="new-design">
+  <div id='bodyInner' class='blue' style='padding:0'>
+    <nav id="nav" class="navbar navbar-default navbar-static-top">
+      <div class="container">
+        <div class="navbar-header"><a class="navbar-brand" href="//www.videolan.org/"><img src='//images.videolan.org/images/logoBlue.png' alt='VideoLAN association' /></a>
+          <a class="navbar-brand" style="padding: 15px 15px">VLC Local Server</a><button type="button" class="navbar-toggle collapsed"
+            data-toggle="collapse" data-target="#main-navbar" aria-expanded="false"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button></div>
+      </div>
+    </nav>
+    <div class="container center-block">
+      <h1 class="text-center">An error occurred</h1>
+      <script>
+        $.ajax({ "data": { "accepted": "false" } });
+        history.replaceState({}, null, location.pathname + '/error');
+      </script>
+    </div>
+  </div>
+</body>
+</html>
diff --git a/share/cloudstorage/default_success.html b/share/cloudstorage/default_success.html
new file mode 100644
index 0000000000..086a995c7e
--- /dev/null
+++ b/share/cloudstorage/default_success.html
@@ -0,0 +1,33 @@
+<html>
+<head>
+  <meta name="Author" content="VideoLAN" />
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+  <meta name="viewport" content="width=device-width, initial-scale=1" />
+  <title>VLC Local Authentication Server</title>
+  <script src='//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js' type='text/javascript'></script>
+  <script async="async" src="//images.videolan.org/js/bootstrap.min.js" type="text/javascript"></script>
+  <link rel="stylesheet" type="text/css" href="//images.videolan.org/style/bootstrap.min.css" />
+  <link rel="stylesheet" type="text/css" href="//images.videolan.org/style/style.min.css" />
+</head>
+
+<body class="new-design">
+  <div id='bodyInner' class='blue' style='padding:0'>
+    <nav id="nav" class="navbar navbar-default navbar-static-top">
+      <div class="container">
+        <div class="navbar-header"><a class="navbar-brand" href="//www.videolan.org/"><img src='//images.videolan.org/images/logoBlue.png' alt='VideoLAN association' /></a>
+          <a class="navbar-brand" style="padding: 15px 15px">VLC Local Server</a><button type="button" class="navbar-toggle collapsed"
+            data-toggle="collapse" data-target="#main-navbar" aria-expanded="false"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button></div>
+      </div>
+    </nav>
+    <div class="container center-block">
+      <h1 class="text-center">Successfully authenticated</h1>
+      <h4 class="text-center">You may now return to your VLC window. <br/>You will be able to find the new logged in provider under the Cloud Storage item on the sidebar.</h5>
+      <script>
+        $.ajax({ "data": { "accepted": "true" } });
+        history.replaceState({}, null, location.pathname + '/success');
+      </script>
+    </div>
+  </div>
+</body>
+</html>
diff --git a/share/cloudstorage/mega_login.html b/share/cloudstorage/mega_login.html
new file mode 100644
index 0000000000..ca76ac6668
--- /dev/null
+++ b/share/cloudstorage/mega_login.html
@@ -0,0 +1,47 @@
+<html>
+<head>
+  <meta name="Author" content="VideoLAN" />
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+  <meta name="viewport" content="width=device-width, initial-scale=1" />
+  <title>VLC Local Authentication Server</title>
+  <script src='//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js' type='text/javascript'></script>
+  <script async="async" src="//images.videolan.org/js/bootstrap.min.js" type="text/javascript"></script>
+  <script src='https://cdnjs.cloudflare.com/ajax/libs/js-url/2.5.0/url.min.js'></script>
+  <link rel="stylesheet" type="text/css" href="//images.videolan.org/style/bootstrap.min.css" />
+  <link rel="stylesheet" type="text/css" href="//images.videolan.org/style/style.min.css" />
+</head>
+<body class="new-design">
+  <div id='bodyInner' class='blue' style='padding:0'>
+    <nav id="nav" class="navbar navbar-default navbar-static-top">
+      <div class="container">
+        <div class="navbar-header"><a class="navbar-brand" href="//www.videolan.org/"><img src='//images.videolan.org/images/logoBlue.png' alt='VideoLAN association' /></a>
+          <a class="navbar-brand" style="padding: 15px 15px">VLC Local Server</a><button type="button" class="navbar-toggle collapsed"
+            data-toggle="collapse" data-target="#main-navbar" aria-expanded="false"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button></div>
+      </div>
+    </nav>
+    <div class="container center-block">
+      <script>
+        function submitData() {
+          var code = encodeURIComponent($('#inputEmail').val() + '##' + $('#inputPassword').val());
+          window.location.href = location.pathname.split("/").slice(0,-1).join("/") + "?code=" + code + "&state=" + url('?').state;
+          return false;
+        };
+      </script>
+      <h2 class="text-center">Mega.Nz Login</h2>
+      <h5>VLC requires access to your Mega.Nz account in order to display the content of your cloud storage. This
+        page is running locally and is hosted by your machine. The inserted data is going to be safely sent to <a href="mega.nz">Mega.Nz</a> servers.</h5><br/>
+      <form class="form-horizontal" onsubmit="return submitData()">
+        <div class="form-group"><label for="inputEmail" class="col-sm-2 control-label">Email</label>
+          <div class="col-sm-10"><input type="email" class="form-control" id="inputEmail" placeholder="Email"></div>
+        </div>
+        <div class="form-group"><label for="inputPassword" class="col-sm-2 control-label">Password</label>
+          <div class="col-sm-10"><input type="password" class="form-control" id="inputPassword" placeholder="Password"></div>
+        </div>
+        <div class="form-group">
+          <div class="col-sm-offset-2 col-sm-10"><button type="submit" id="submit" class="btn btn-default">Sign in</button></div>
+      </form>
+      </div>
+    </div>
+</body>
+</html>
diff --git a/share/cloudstorage/mega_success.html b/share/cloudstorage/mega_success.html
new file mode 100644
index 0000000000..265a593ba9
--- /dev/null
+++ b/share/cloudstorage/mega_success.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+  <meta name="Author" content="VideoLAN" />
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+  <meta name="viewport" content="width=device-width, initial-scale=1" />
+  <title>VLC Local Authentication Server</title>
+  <script src='//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js' type='text/javascript'></script>
+  <script async="async" src="//images.videolan.org/js/bootstrap.min.js" type="text/javascript"></script>
+  <link rel="stylesheet" type="text/css" href="//images.videolan.org/style/bootstrap.min.css" />
+  <link rel="stylesheet" type="text/css" href="//images.videolan.org/style/style.min.css" />
+</head>
+<body class="new-design">
+  <div id='bodyInner' class='blue' style='padding:0'>
+    <nav id="nav" class="navbar navbar-default navbar-static-top">
+      <div class="container">
+        <div class="navbar-header"><a class="navbar-brand" href="//www.videolan.org/"><img src='//images.videolan.org/images/logoBlue.png' alt='VideoLAN association' /></a>
+          <a class="navbar-brand" style="padding: 15px 15px">VLC Local Server</a><button type="button" class="navbar-toggle collapsed"
+            data-toggle="collapse" data-target="#main-navbar" aria-expanded="false"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button></div>
+      </div>
+    </nav>
+    <div class="container center-block">
+      <h2 class="text-center">Your login has been sent to <a href="mega.nz">Mega.Nz</a> successfully</h2>
+      <script>
+        $.ajax({ "data": { "accepted": "true" } });
+        history.replaceState({}, null, location.pathname + '/success');
+      </script>
+    </div>
+  </div>
+</body>
+</html>
diff --git a/share/cloudstorage/owncloud_login.html b/share/cloudstorage/owncloud_login.html
new file mode 100644
index 0000000000..6b97192787
--- /dev/null
+++ b/share/cloudstorage/owncloud_login.html
@@ -0,0 +1,51 @@
+<html>
+<head>
+  <meta name="Author" content="VideoLAN" />
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+  <meta name="viewport" content="width=device-width, initial-scale=1" />
+  <title>VLC Local Authentication Server</title>
+  <script src='//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js' type='text/javascript'></script>
+  <script async="async" src="//images.videolan.org/js/bootstrap.min.js" type="text/javascript"></script>
+  <script src='https://cdnjs.cloudflare.com/ajax/libs/js-url/2.5.0/url.min.js'></script>
+  <link rel="stylesheet" type="text/css" href="//images.videolan.org/style/bootstrap.min.css" />
+  <link rel="stylesheet" type="text/css" href="//images.videolan.org/style/style.min.css" />
+</head>
+<body class="new-design">
+  <div id='bodyInner' class='blue' style='padding:0'>
+    <nav id="nav" class="navbar navbar-default navbar-static-top">
+      <div class="container">
+        <div class="navbar-header"><a class="navbar-brand" href="//www.videolan.org/"><img src='//images.videolan.org/images/logoBlue.png' alt='VideoLAN association' /></a>
+          <a class="navbar-brand" style="padding: 15px 15px">VLC Local Server</a><button type="button" class="navbar-toggle collapsed"
+            data-toggle="collapse" data-target="#main-navbar" aria-expanded="false"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button></div>
+      </div>
+    </nav>
+    <div class="container center-block">
+      <script>
+        function submitData() {
+          var code = encodeURIComponent($('#inputUsername').val() +
+            '@' + $('#inputHost').val() + '##' + $('#inputPassword').val());
+          window.location.href = location.pathname.split("/").slice(0,-1).join("/") + "?code=" + code + "&state=" + url('?').state;
+          return false;
+        };
+      </script>
+      <h2 class="text-center">OwnCloud Login</h2>
+      <h5>VLC requires access to your OwnCloud account in order to display the content of your cloud storage. This
+        page is running locally and is hosted by your machine. The inserted data is going to be safely sent to <a href="https://owncloud.org/">OwnCloud</a> host.</h5><br/>
+      <form class="form-horizontal" onsubmit="return submitData()">
+        <div class="form-group"><label for="inputUsername" class="col-sm-2 control-label">Username</label>
+          <div class="col-sm-10"><input type="text" class="form-control" id="inputUsername" placeholder="Username"></div>
+        </div>
+        <div class="form-group"><label for="inputHost" class="col-sm-2 control-label">Host</label>
+          <div class="col-sm-10"><input type="text" class="form-control" id="inputHost" placeholder="Host"></div>
+        </div>
+        <div class="form-group"><label for="inputPassword" class="col-sm-2 control-label">Password</label>
+          <div class="col-sm-10"><input type="password" class="form-control" id="inputPassword" placeholder="Password"></div>
+        </div>
+        <div class="form-group">
+          <div class="col-sm-offset-2 col-sm-10"><button type="submit" id="submit" class="btn btn-default">Sign in</button></div>
+      </form>
+      </div>
+    </div>
+</body>
+</html>
diff --git a/share/cloudstorage/owncloud_success.html b/share/cloudstorage/owncloud_success.html
new file mode 100644
index 0000000000..13a00dd3cc
--- /dev/null
+++ b/share/cloudstorage/owncloud_success.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+  <meta name="Author" content="VideoLAN" />
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+  <meta name="viewport" content="width=device-width, initial-scale=1" />
+  <title>VLC Local Authentication Server</title>
+  <script src='//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js' type='text/javascript'></script>
+  <script async="async" src="//images.videolan.org/js/bootstrap.min.js" type="text/javascript"></script>
+  <link rel="stylesheet" type="text/css" href="//images.videolan.org/style/bootstrap.min.css" />
+  <link rel="stylesheet" type="text/css" href="//images.videolan.org/style/style.min.css" />
+</head>
+<body class="new-design">
+  <div id='bodyInner' class='blue' style='padding:0'>
+    <nav id="nav" class="navbar navbar-default navbar-static-top">
+      <div class="container">
+        <div class="navbar-header"><a class="navbar-brand" href="//www.videolan.org/"><img src='//images.videolan.org/images/logoBlue.png' alt='VideoLAN association' /></a>
+          <a class="navbar-brand" style="padding: 15px 15px">VLC Local Server</a><button type="button" class="navbar-toggle collapsed"
+            data-toggle="collapse" data-target="#main-navbar" aria-expanded="false"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button></div>
+      </div>
+    </nav>
+    <div class="container center-block">
+      <h2 class="text-center">Your login has been sent to <a href="https://owncloud.org/">OwnCloud</a> host successfully</h2>
+      <script>
+        $.ajax({ "data": { "accepted": "true" } });
+        history.replaceState({}, null, location.pathname + '/success');
+      </script>
+    </div>
+  </div>
+</body>
+</html>
--
2.14.1


More information about the vlc-devel mailing list