summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rwxr-xr-xMakefile12
-rw-r--r--debian/README.Debian6
-rw-r--r--debian/control2
-rw-r--r--debian/downtube.service13
-rwxr-xr-xdebian/rules4
-rw-r--r--debian/webserver.install1
-rw-r--r--debian/webserver.service19
-rw-r--r--html/Downtube.pngbin0 -> 40244 bytes
-rw-r--r--html/Downtube1024.pngbin0 -> 19108 bytes
-rw-r--r--html/Downtube256.pngbin0 -> 4216 bytes
-rw-r--r--html/Downtube320.pngbin0 -> 5256 bytes
-rw-r--r--html/Downtube512.pngbin0 -> 8874 bytes
-rw-r--r--html/downtube.css69
-rw-r--r--html/downtube.js112
-rw-r--r--html/index.html53
15 files changed, 262 insertions, 29 deletions
diff --git a/Makefile b/Makefile
index c3a4d5f..657afe5 100755
--- a/Makefile
+++ b/Makefile
@@ -24,12 +24,22 @@ all: build
./start.sh
install:
+ mkdir -p $(DESTDIR)/usr/lib/downtube
+ cp downtube.fcgi $(DESTDIR)/usr/lib/downtube/
+
+ mkdir -p $(DESTDIR)/usr/lib/downtube/html
+ cp -r html/* $(DESTDIR)/usr/lib/downtube/html/
+
+ uglifyjs html/downtube.js -m -c > $(DESTDIR)/usr/lib/downtube/html/downtube.js
+ htmlmin html/index.html $(DESTDIR)/usr/lib/downtube/html/index.html
+ cleancss -o $(DESTDIR)/usr/lib/downtube/html/downtube.css html/downtube.css
+
downtube.fcgi: $(OBJECTS)
# link
%.fcgi: %.o
- $(CXX) $(CFLAGS) $(LIBS) -o $@ $^
+ $(CXX) $(CPPFLAGS) $(LIBS) -o $@ $^
# .cpp -> .o
%.o: %.cpp
diff --git a/debian/README.Debian b/debian/README.Debian
index 35011f3..1bd0c56 100644
--- a/debian/README.Debian
+++ b/debian/README.Debian
@@ -1,7 +1,7 @@
-webserver for Debian
-====================
+downtube for Debian
+===================
-This package is the Debian version of webserver.
+This package is the Debian version of downtube.
Contact
diff --git a/debian/control b/debian/control
index 62c1a48..09493df 100644
--- a/debian/control
+++ b/debian/control
@@ -8,7 +8,7 @@ Homepage: http://www.reichwein.it/downtube/
Package: downtube
Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}, spawn-fcgi
Homepage: http://www.reichwein.it/downtube/
Description: Web application for video download
Downtube can help you download a video specified in a HTML form, transformed
diff --git a/debian/downtube.service b/debian/downtube.service
new file mode 100644
index 0000000..7c3154a
--- /dev/null
+++ b/debian/downtube.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=DownTube
+After=network.target
+
+[Service]
+Type=simple
+# Restart=always
+ExecStart=spawn-fcgi -a 127.0.0.1 -p 9004 -n -- /usr/lib/downtube/downtube.fcgi
+
+Restart=always
+
+[Install]
+WantedBy=multi-user.target
diff --git a/debian/rules b/debian/rules
index 921ee04..2d33f6a 100755
--- a/debian/rules
+++ b/debian/rules
@@ -2,7 +2,3 @@
%:
dh $@
-
-override_dh_fixperms:
- dh_fixperms
- chown www-data:www-data debian/webserver/var/lib/webserver
diff --git a/debian/webserver.install b/debian/webserver.install
deleted file mode 100644
index b4997f3..0000000
--- a/debian/webserver.install
+++ /dev/null
@@ -1 +0,0 @@
-debian/webserver.conf etc
diff --git a/debian/webserver.service b/debian/webserver.service
deleted file mode 100644
index 7834650..0000000
--- a/debian/webserver.service
+++ /dev/null
@@ -1,19 +0,0 @@
-[Unit]
-Description=Webserver
-After=network.target
-
-[Service]
-Type=simple
-# Restart=always
-ExecStart=/usr/bin/webserver -c /etc/webserver.conf
-
-# Restart once a week, maybe certificates have changed
-Restart=always
-RuntimeMaxSec=604800
-
-# webserver will lower privileges to www-data:www-data
-#User=www-data
-#Group=www-data
-
-[Install]
-WantedBy=multi-user.target
diff --git a/html/Downtube.png b/html/Downtube.png
new file mode 100644
index 0000000..4b2d0b7
--- /dev/null
+++ b/html/Downtube.png
Binary files differ
diff --git a/html/Downtube1024.png b/html/Downtube1024.png
new file mode 100644
index 0000000..574a352
--- /dev/null
+++ b/html/Downtube1024.png
Binary files differ
diff --git a/html/Downtube256.png b/html/Downtube256.png
new file mode 100644
index 0000000..44da8e6
--- /dev/null
+++ b/html/Downtube256.png
Binary files differ
diff --git a/html/Downtube320.png b/html/Downtube320.png
new file mode 100644
index 0000000..254b362
--- /dev/null
+++ b/html/Downtube320.png
Binary files differ
diff --git a/html/Downtube512.png b/html/Downtube512.png
new file mode 100644
index 0000000..6ebd151
--- /dev/null
+++ b/html/Downtube512.png
Binary files differ
diff --git a/html/downtube.css b/html/downtube.css
new file mode 100644
index 0000000..2f68794
--- /dev/null
+++ b/html/downtube.css
@@ -0,0 +1,69 @@
+body {
+ font-family: "sans-serif";
+}
+
+figcaption {
+ text-align: center;
+ font-size: 8px;
+ color: #808080;
+}
+
+figure {
+ display: inline-block;
+}
+
+p {
+ margin: 30px 0px 30px 0px;
+}
+
+div.status {
+ color: #FF0000;
+}
+
+.mobile {
+ width: 300px;
+ border-width: 80px 15px 80px 15px;
+ border-style: solid;
+ border-radius: 30px;
+ border-color: #000000;
+}
+
+.logo {
+ display: block;
+ margin: 0 auto;
+}
+
+.screenshot {
+ width: 400px;
+ border: 2px solid;
+ border-color: #8888AA;
+}
+
+img.banner {
+ vertical-align: -5px;
+}
+
+.button {
+ color:#FFFFFF;
+ background-color:#50B050;
+ text-decoration: none;
+ padding: 15px 20px;
+ font-size: 16px;
+ border: none;
+ border-radius: 6px;
+ cursor: pointer;
+}
+
+@media only screen and (min-width: 1px) and (max-width: 630px) {
+}
+
+@media only screen and (min-width: 631px) and (max-width: 950px) {
+}
+
+@media only screen and (min-width: 951px) {
+ div.page {
+ max-width: 950px;
+ width: 100%;
+ margin: 0 auto;
+ }
+}
diff --git a/html/downtube.js b/html/downtube.js
new file mode 100644
index 0000000..abe62b8
--- /dev/null
+++ b/html/downtube.js
@@ -0,0 +1,112 @@
+// started on main page load
+function init() {
+
+ // Connect "Enter" in text field with Button click
+ var url = document.getElementById("url");
+ url.addEventListener("keyup", function(event) {
+ if (event.keyCode === 13) {
+ event.preventDefault();
+ on_start();
+ }
+ });
+}
+
+function set_status(message) {
+ if (message == "")
+ message = " ";
+
+ document.getElementById("status").innerHTML = message;
+}
+
+// started on button click: get filename
+function on_start() {
+ var xhr = new XMLHttpRequest();
+
+ // run on data received back
+ xhr.onreadystatechange = function() {
+ if (this.readyState != 4) {
+ return;
+ }
+ if (this.status != 200) {
+ set_status("Server Error while retrieving filename");
+ return;
+ }
+
+ var filename = this.responseText;
+
+ get_file(filename);
+ }
+
+ var parser = new DOMParser();
+ var xmlDocument = parser.parseFromString("<request></request>", "text/xml");
+
+ var requestElement = xmlDocument.getElementsByTagName("request")[0];
+
+ var commandElement = xmlDocument.createElement("command");
+ commandElement.appendChild(document.createTextNode("getfilename"));
+ requestElement.appendChild(commandElement);
+
+ var urlElement = xmlDocument.createElement("url");
+ urlElement.appendChild(document.createTextNode(document.getElementById("url").value));
+ requestElement.appendChild(urlElement);
+
+ var formatElement = xmlDocument.createElement("format");
+ formatElement.appendChild(document.createTextNode(document.getElementById("mp3").checked ? "mp3" : "mp4"));
+ requestElement.appendChild(formatElement);
+
+ xhr.open("POST", "downtube.fcgi", true);
+ xhr.setRequestHeader("Content-type", "text/xml");
+ xhr.responseType = 'text';
+ xhr.send(xmlDocument);
+
+ set_status("Please wait while retrieving filename...");
+}
+
+// started on button click: get file
+function get_file(filename) {
+ var xhr = new XMLHttpRequest();
+
+ // run on data received back
+ xhr.onreadystatechange = function() {
+ if (this.readyState != 4) {
+ return;
+ }
+ if (this.status != 200) {
+ set_status("Server Error while retrieving " + filename);
+ return;
+ }
+
+ var a = document.getElementById("download-a");
+ a.setAttribute("download", filename);
+ var file = new Blob([this.response]);
+ a.href = window.URL.createObjectURL(file);
+ a.click();
+
+ set_status(""); // OK
+ }
+
+ var parser = new DOMParser();
+ var xmlDocument = parser.parseFromString("<request></request>", "text/xml");
+
+ var requestElement = xmlDocument.getElementsByTagName("request")[0];
+
+ var commandElement = xmlDocument.createElement("command");
+ commandElement.appendChild(document.createTextNode("getfile"));
+ requestElement.appendChild(commandElement);
+
+ var urlElement = xmlDocument.createElement("url");
+ urlElement.appendChild(document.createTextNode(document.getElementById("url").value));
+ requestElement.appendChild(urlElement);
+
+ var formatElement = xmlDocument.createElement("format");
+ formatElement.appendChild(document.createTextNode(document.getElementById("mp3").checked ? "mp3" : "mp4"));
+ requestElement.appendChild(formatElement);
+
+ xhr.open("POST", "downtube.fcgi", true);
+ xhr.setRequestHeader("Content-type", "text/xml");
+ xhr.responseType = 'blob';
+ xhr.send(xmlDocument);
+
+ set_status("Please wait while retrieving " + filename + " ...");
+}
+
diff --git a/html/index.html b/html/index.html
new file mode 100644
index 0000000..05ab9d6
--- /dev/null
+++ b/html/index.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8"/>
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <meta name="keywords" content="Reichwein, DownTube, YouTube, Download MP3">
+ <title>DownTube</title>
+ <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"/>
+ <link rel="stylesheet" type="text/css" href="downtube.css"/>
+ <script src="downtube.js"></script>
+ </head>
+ <body onload="init();">
+ <div class="page">
+ <h1><img src="Downtube256.png"></h1>
+
+ <p>
+ Video URL:<br/>
+ <input size="40" type="text" id="url" name="url"><br><br>
+ </p>
+
+ <p>
+ Transform to format:<br/>
+ <input type="radio" id="mp3" name="format" value="mp3" checked>
+ <label for="mp3">MP3 (Audio)</label><br>
+ <input type="radio" id="mp4" name="format" value="mp4">
+ <label for="mp4">MP4 (Video)</label><br>
+ </p>
+
+ <br/>
+ <div class="status" id="status">&nbsp;</div>
+ <p>
+ <button class="button" onclick="on_start();">Start</button>
+ </p>
+
+ <br/>
+ <br/>
+ <br/>
+ <br/>
+ <br/>
+ <br/>
+ <br/>
+ <br/>
+ <h2>Contact</h2>
+ Roland Reichwein<br/>
+ Hauptstr. 101a<br/>
+ 82008 Unterhaching<br/>
+ <a href="mailto:mail@reichwein.it">mail@reichwein.it</a><br/>
+ <a href="https://www.reichwein.it">https://www.reichwein.it</a><br/>
+ </div>
+
+ <a id="download-a" hidden></a>
+ </body>
+</html>