initial commit

This commit is contained in:
vollstock
2018-09-20 15:38:43 +02:00
parent c029a5d07b
commit 0186a946dc
54 changed files with 994 additions and 0 deletions
@@ -0,0 +1,18 @@
{
"name": "Simple Kiosk",
"description": "A simple kiosk browser based using chromium.",
"media": [],
"version": "1.0",
"last_updated": "2017-12-21",
"license": "Public domain",
"category": "Examples",
"tags": ["example"],
"developer": "vollstock",
"homepage": "http://www.vollstock.de/",
"compatibility": {
"s": "True",
"m": "True",
"l": "True",
"xl": "True"
}
}
@@ -0,0 +1,75 @@
# -*- coding: utf-8 -*-
from flask import Flask, jsonify, request, abort
from os import chown
from pwd import getpwnam
from grp import getgrnam
class InstalledApp(object):
def __init__(self, flask):
super(InstalledApp, self).__init__()
# default homepage
self.homepage = 'file:///assets/data/index.html';
# connect flask routes to tooloop api calls
self.add_routes(flask)
def add_routes(self, flask):
@flask.route('/simple-kiosk/change-homepage', methods=['POST'])
def change_homepage():
if not request.form or not 'homepage' in request.form:
abort(400)
try:
self.homepage = request.form['homepage'];
file = open('/assets/presentation/reset-kiosk.sh','w')
file.write('#!/bin/bash\n')
file.write('\n')
file.write('URL="'+self.homepage+'"\n')
file.write('\n')
file.write('# List of Chromium Command Line Switches\n')
file.write('# https://peter.sh/experiments/chromium-command-line-switches/\n')
file.write('COMMAND="chromium-browser \\\n')
file.write('--kiosk \\\n')
file.write('--bwsi \\\n')
file.write('--overscroll-history-navigation=1 \\\n')
file.write('--incognito \\\n')
file.write('--disable-infobars \\\n')
file.write('--disable-translate \\\n')
file.write('--no-default-browser-check \\\n')
file.write('--no-first-run \\\n')
file.write('--disable-translate-new-ux \\\n')
file.write('--num-raster-threads=4 \\\n')
file.write('--enable-zero-copy \\\n')
file.write('--noerrdialogs \\\n')
file.write('--class=TooloopKiosk \\\n')
file.write('$URL"\n')
file.write('\n')
file.write('if [ $EUID == 0 ]; then\n')
file.write(' pkill chromium\n')
file.write(' sleep 0.1\n')
file.write(' su tooloop -c "$COMMAND" &\n')
file.write('else\n')
file.write(' pkill chromium\n')
file.write(' sleep 0.1\n')
file.write(' $COMMAND &\n')
file.write('fi\n')
file.write('\n')
file.write('exit 0\n')
file.close()
uid = getpwnam('tooloop').pw_uid
gid = getgrnam('tooloop').gr_gid
chown('/assets/presentation/reset-kiosk.sh', uid, gid)
return jsonify({'message':'homepage changed'})
except Exception as e:
abort(500)
Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

@@ -0,0 +1,43 @@
{% extends "base.html" %}
{% block content %}
<table class="settings-table">
<tr><td colspan="2"><h2>{{installed_app.name}}</h2></td></tr>
<tr>
<td class="label-column" style="vertical-align: top; padding-top: 1.1em;">Homepage</td>
<td class="value-column">
<form id="homepage-form">
<input type="text" id="homepage-input" value="{{app_controller.homepage}}">
<button type="submit">Save</button>
</form>
</td>
</tr>
</table>
{% endblock %}
{% block page_footer_scripts %}
<script type="text/javascript">
$('#homepage-form').on('submit', function(event) {
event.preventDefault();
var feedback = attachFeedback(event.target);
$.ajax({
method: "POST",
data: { "homepage":$('#homepage-input').val() },
url: "/simple-kiosk/change-homepage"
}).done(function( data ) {
displayConfirmFeedback(feedback, 'Saved');
$.ajax( {url:"/tooloop/api/v1.0/presentation/reset"} );
}).error(function( jqXHR, textStatus, errorThrown ) {
displayErrorFeedback(feedback, errorThrown);
});
});
</script>
{% endblock %}