Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e3231095c4 | ||
|
|
9d3a3419c8 | ||
|
|
548337258f | ||
|
|
51d6695fec | ||
|
|
d938937d48 | ||
|
|
9677273f55 |
No files matched your search
@@ -1 +0,0 @@
|
|||||||
site/
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
Copyright (c) 2018, 2019, Kristjan Komloši, Jakob Kosec, Juš Dolžan,
|
|
||||||
TeraHz development team
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
|
||||||
copyright notice and this permission notice appear in all copies.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
|
||||||
SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
|
|
||||||
OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
|
||||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
@@ -1,8 +1,4 @@
|
|||||||
# TeraHz
|
# TeraHz
|
||||||
|
|
||||||
|
|
||||||
[](https://terahz.readthedocs.io/en/latest/?badge=latest)
|
|
||||||
|
|
||||||
TeraHz is a low-cost spectrometer based on a Raspberry Pi 3 or 3 B+ and three sensors:
|
TeraHz is a low-cost spectrometer based on a Raspberry Pi 3 or 3 B+ and three sensors:
|
||||||
+ [__AS7265x__](https://www.tindie.com/products/onehorse/compact-as7265x-spectrometer/)
|
+ [__AS7265x__](https://www.tindie.com/products/onehorse/compact-as7265x-spectrometer/)
|
||||||
is a 18 channel spectrometer chipset that provides the device with spectral data
|
is a 18 channel spectrometer chipset that provides the device with spectral data
|
||||||
@@ -16,9 +12,6 @@ Because people and institutions could use an affordable and accurate light-analy
|
|||||||
## Development team
|
## Development team
|
||||||
Copyright 2018, 2019
|
Copyright 2018, 2019
|
||||||
|
|
||||||
- Kristjan "cls-02" Komloši (electronics, sensor drivers, backend)
|
- Kristjan "d3m1g0d" Komloši (electronics, middleware)
|
||||||
- Jakob "D3m1j4ck" Kosec (frontend)
|
- Juš "ANormalPerson" Dolžan (backend)
|
||||||
|
- Jakob "D3m1j4ck" Kosec (frontend, website)
|
||||||
|
|
||||||
I would also like to thank Juš "ANormalPerson" Dolžan, who decided to leave the
|
|
||||||
team, but helped me a lot with backend development.
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
# app.py - main backend program
|
|
||||||
# All code in this file is licensed under the ISC license, provided in LICENSE.txt
|
|
||||||
from flask import Flask, redirect, url_for, request
|
|
||||||
import flask
|
|
||||||
import sensors
|
|
||||||
import json
|
|
||||||
app = Flask(__name__)
|
|
||||||
s=sensors.Spectrometer(path='/dev/serial0', baudrate=115200, tout=1)
|
|
||||||
u=sensors.UVSensor()
|
|
||||||
l=sensors.LxMeter()
|
|
||||||
|
|
||||||
@app.route('/data')
|
|
||||||
def sendData():
|
|
||||||
response = flask.jsonify([s.getData(), l.getData(), u.getABI()])
|
|
||||||
response.headers.add('Access-Control-Allow-Origin', '*')
|
|
||||||
return response
|
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
$(document).ready(function() {
|
||||||
|
$(chart_id).highcharts({
|
||||||
|
chart: chart,
|
||||||
|
title: title,
|
||||||
|
xAxis: xAxis,
|
||||||
|
yAxis: yAxis,
|
||||||
|
series: series
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
from flask import Flask, redirect, url_for, request, render_template
|
||||||
|
app = Flask(__Name__)
|
||||||
|
URL = "" #Insert url of website here
|
||||||
|
|
||||||
|
@app.route('/list')
|
||||||
|
def list():
|
||||||
|
#Return list json
|
||||||
|
|
||||||
|
@app.route('/load'):
|
||||||
|
def load():
|
||||||
|
#Request args, load json
|
||||||
|
|
||||||
|
@app.route('/deposit'):
|
||||||
|
def deposit():
|
||||||
|
#Request .json, store json
|
||||||
|
if request.isJson():
|
||||||
|
content = request.get_json(url = URL)
|
||||||
|
return content
|
||||||
|
|
||||||
|
@app.route('/post', , methods = ['POST']):
|
||||||
|
def post():
|
||||||
|
request.post(url = URL, data = "") #Insert the data you wish to upload
|
||||||
|
|
||||||
|
@app.route('/graph')
|
||||||
|
def graph(chartID = 'chart_ID', chart_type = 'line', chart_height = 500):
|
||||||
|
chart = {"renderTo": chartID, "type": chart_type, "height": chart_height,}
|
||||||
|
series = [{"name": 'Label1', "data": [1,2,3]}, {"name": 'Label2', "data": [4, 5, 6]}]
|
||||||
|
title = {"text": 'My Title'}
|
||||||
|
xAxis = {"categories": ['xAxis Data1', 'xAxis Data2', 'xAxis Data3']}
|
||||||
|
yAxis = {"title": {"text": 'yAxis Label'}}
|
||||||
|
return render_template('index.html', chartID=chartID, chart=chart, series=series, title=title, xAxis=xAxis, yAxis=yAxis)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
app.run(debug = True, host='0.0.0.0', port=8080, passthrough_errors=True)
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
# sensors.py - a module for interfacing to the sensors
|
# sensors.py - a module for interfacing to the sensors
|
||||||
# Copyright 2019 Kristjan Komloši
|
# Copyright 2019 Kristjan Komloši
|
||||||
# All code in this file is licensed under the ISC license, provided in LICENSE.txt
|
# The code in this file is licensed under the 3-clause BSD License
|
||||||
|
|
||||||
import serial as ser
|
import serial as ser
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
import smbus2
|
import smbus2
|
||||||
@@ -64,7 +65,7 @@ class Spectrometer:
|
|||||||
responseorder = [i for i in 'RSTUVWGHIJKLABCDEF']
|
responseorder = [i for i in 'RSTUVWGHIJKLABCDEF']
|
||||||
realorder = [i for i in 'ABCDEFGHRISJTUVWKL']
|
realorder = [i for i in 'ABCDEFGHRISJTUVWKL']
|
||||||
response = pd.Series([float(i)/35.0 for i in rawresp[:-3].split(',')], index=responseorder)
|
response = pd.Series([float(i)/35.0 for i in rawresp[:-3].split(',')], index=responseorder)
|
||||||
return pd.DataFrame(response, index=realorder, columns = ['uW/cm^2']).to_dict()['uW/cm^2']
|
return pd.DataFrame(response, index=realorder, columns = ['uW/cm^2'])
|
||||||
|
|
||||||
|
|
||||||
def __init__(self, path='/dev/ttyUSB0', baudrate=115200, tout=1):
|
def __init__(self, path='/dev/ttyUSB0', baudrate=115200, tout=1):
|
||||||
@@ -72,7 +73,7 @@ class Spectrometer:
|
|||||||
self.baudrate = baudrate
|
self.baudrate = baudrate
|
||||||
self.timeout = 1
|
self.timeout = 1
|
||||||
try:
|
try:
|
||||||
self.serialObject = ser.Serial(path, baudrate, timeout=tout)
|
self.serialObject =
|
||||||
except:
|
except:
|
||||||
raise Exception('An exception occured when opening the serial port at {}'.format(path))
|
raise Exception('An exception occured when opening the serial port at {}'.format(path))
|
||||||
ex(1)
|
ex(1)
|
||||||
@@ -161,7 +162,6 @@ class LxMeter:
|
|||||||
|
|
||||||
class UVSensor:
|
class UVSensor:
|
||||||
def __init__(self, bus=1, addr=0x10):
|
def __init__(self, bus=1, addr=0x10):
|
||||||
self.addr=addr
|
|
||||||
try:
|
try:
|
||||||
self.bus = smbus2.SMBus(bus)
|
self.bus = smbus2.SMBus(bus)
|
||||||
except:
|
except:
|
||||||
@@ -169,7 +169,7 @@ class UVSensor:
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
# enable the sensor and set the integration time
|
# enable the sensor and set the integration time
|
||||||
self.bus.write_byte_data(self.addr, 0x00, 0b00010000)
|
self.bus.write_byte_data(addr, 0x00, 0b00010000)
|
||||||
except:
|
except:
|
||||||
raise Exception('An exception occured when initalizing the UV Sensor')
|
raise Exception('An exception occured when initalizing the UV Sensor')
|
||||||
|
|
||||||
@@ -179,10 +179,10 @@ class UVSensor:
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
# read the raw UVA, UVB and compensation values from the sensor
|
# read the raw UVA, UVB and compensation values from the sensor
|
||||||
aRaw = self.bus.read_word_data(self.addr, 0x07)
|
aRaw = self.bus.read_word_data(addr, 0x07)
|
||||||
bRaw = self.bus.read_word_data(self.addr, 0x09)
|
bRaw = self.bus.read_word_data(addr, 0x09)
|
||||||
c1 = self.bus.read_word_data(self.addr, 0x0a)
|
c1 = self.bus.read_word_data(addr, 0x0a)
|
||||||
c2 = self.bus.read_word_data(self.addr, 0x0b)
|
c2 = self.bus.read_word_data(addr, 0x0b)
|
||||||
except:
|
except:
|
||||||
raise Exception('An exception occured when fetching raw UV data')
|
raise Exception('An exception occured when fetching raw UV data')
|
||||||
# scary computations ahead! refer to Vishay app note 84339 and Sparkfun
|
# scary computations ahead! refer to Vishay app note 84339 and Sparkfun
|
||||||
@@ -197,7 +197,7 @@ class UVSensor:
|
|||||||
b = bCorr * 0.00125
|
b = bCorr * 0.00125
|
||||||
|
|
||||||
# last, calculate the UV index
|
# last, calculate the UV index
|
||||||
i = (a + b) / 2
|
i = (uva + uvb) / 2
|
||||||
|
|
||||||
return [a,b,i]
|
return [a,b,i]
|
||||||
|
|
||||||
@@ -215,7 +215,7 @@ class UVSensor:
|
|||||||
try:
|
try:
|
||||||
# write the default value for power on
|
# write the default value for power on
|
||||||
# no configurable params = no bitmask
|
# no configurable params = no bitmask
|
||||||
self.bus.write_byte_data(self.addr, 0x00, 0x10)
|
self.bus.write_byte_data(addr, 0x00, 0x10)
|
||||||
except:
|
except:
|
||||||
raise Exception('An exception occured when turning the UV sensor on')
|
raise Exception('An exception occured when turning the UV sensor on')
|
||||||
|
|
||||||
@@ -224,6 +224,6 @@ class UVSensor:
|
|||||||
try:
|
try:
|
||||||
# write the default value + the shutdown bit
|
# write the default value + the shutdown bit
|
||||||
# no configurable params = no bitmask
|
# no configurable params = no bitmask
|
||||||
self.bus.write_byte_data(self.addr, 0x00, 0x11)
|
self.bus.write_byte_data(addr, 0x00, 0x11)
|
||||||
except:
|
except:
|
||||||
raise Exception('An exception occured when shutting the UV sensor down')
|
raise Exception('An exception occured when shutting the UV sensor down')
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# storage.py - storage backend for TeraHz
|
# storage.py - storage backend for TeraHz
|
||||||
# Copyright Kristjan Komloši 2019
|
# Copyright Kristjan Komloši 2019
|
||||||
# All code in this file is licensed under the ISC license, provided in LICENSE.txt
|
# This code is licensed under the 3-clause BSD license
|
||||||
|
|
||||||
|
|
||||||
import sqlite3
|
import sqlite3
|
||||||
|
|||||||
@@ -1,165 +0,0 @@
|
|||||||
## Warning
|
|
||||||
The recommended way of getting TeraHz is the official Raspberry Pi SD card image
|
|
||||||
provided under the releases tab in the GitHub repository. Installing TeraHz from
|
|
||||||
source is a time consuming and painful process, even more so if you don't know
|
|
||||||
what you're doing, and whatever you end up building __will not be officially
|
|
||||||
supported__ (unless you're a core developer).
|
|
||||||
|
|
||||||
With this warning out of the way, let's begin.
|
|
||||||
|
|
||||||
## Getting the latest sources
|
|
||||||
The most reliable way to get working source code is by cloning the official
|
|
||||||
GitHub repository and checking out the `development-stable` tag. This tag marks
|
|
||||||
the latest confirmed working commit. Building from the master branch is somewhat
|
|
||||||
risky, and building from development branches is straight up stupid if you're
|
|
||||||
not a developer.
|
|
||||||
|
|
||||||
Make sure that the repository is cloned into `/home/pi/TeraHz`, as Lighttpd
|
|
||||||
expects to find frontend files inside this directory.
|
|
||||||
|
|
||||||
After cloning and checking out, check the documentation for module dependencies
|
|
||||||
and the required version of python in the `docs/dependencies.md` file.
|
|
||||||
|
|
||||||
## Installing Python
|
|
||||||
This step depends a lot on the platform you're using. TeraHz was developed with
|
|
||||||
Raspberry Pi and Raspbian in mind. If you're familiar with Raspbian enough,
|
|
||||||
you'll know that the latest version of Python available is `3.5`, which is too
|
|
||||||
obsolete to run TeraHz and the required modules consistently. This leaves us
|
|
||||||
with compiling Python from source. __This step is guaranteed to be slow,
|
|
||||||
overnight compiling with something like tmux is recommended.__
|
|
||||||
|
|
||||||
### Pre-requirements
|
|
||||||
Installing python without most C libraries will lead to a rather minimalistic
|
|
||||||
Python install, missing a lot of important modules. To prevent this, update
|
|
||||||
the system packages. After that, reboot.
|
|
||||||
|
|
||||||
```
|
|
||||||
sudo apt update
|
|
||||||
sudo apt full-upgrade
|
|
||||||
sudo reboot
|
|
||||||
```
|
|
||||||
|
|
||||||
Install the required build tools, libraries and their headers.
|
|
||||||
|
|
||||||
```
|
|
||||||
sudo apt-get install build-essential tk-dev libncurses5-dev libncursesw5-dev \
|
|
||||||
libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev libbz2-dev \
|
|
||||||
libexpat1-dev liblzma-dev zlib1g-dev
|
|
||||||
```
|
|
||||||
|
|
||||||
### Compiling
|
|
||||||
Compiling Python from source is, in fact pretty easy, just time-consuming. To combat
|
|
||||||
that, using tmux to detach and later reattach the session is advised.
|
|
||||||
|
|
||||||
Python is packaged in many forms, but you'll be using the most basic
|
|
||||||
of them all: a gzipped tarball. Download and decompress it, then cd into its
|
|
||||||
directory.
|
|
||||||
|
|
||||||
```
|
|
||||||
wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz
|
|
||||||
tar -xzf Python-3.6.8.tgz
|
|
||||||
cd Python-3.6.8
|
|
||||||
```
|
|
||||||
|
|
||||||
Python's build process is pretty classic, a `.configure` script and a Makefile.
|
|
||||||
Using the `-j` option with Make can reduce the compile time significantly. Go
|
|
||||||
with as many threads as you have cores: `-j 4` works great on the Pi 3 B/B+.
|
|
||||||
|
|
||||||
```
|
|
||||||
./configure
|
|
||||||
make -j4
|
|
||||||
```
|
|
||||||
|
|
||||||
When the compilation ends, install your freshly built version of python.
|
|
||||||
|
|
||||||
```
|
|
||||||
sudo make altinstall
|
|
||||||
```
|
|
||||||
|
|
||||||
"Altinstall" means that the new version of Python will be installed beside the
|
|
||||||
existing version, and all related commands will use the full naming scheme:
|
|
||||||
think `python3.6` or `pip3.6` instead of the shorter `python3` or `pip3`.
|
|
||||||
|
|
||||||
### Modules
|
|
||||||
Another painfully slow part is the installation of all the required modules
|
|
||||||
needed by TeraHz. Luckily, `pip3.6` takes care of the entire installation
|
|
||||||
process. As before, using tmux is advised.
|
|
||||||
|
|
||||||
```
|
|
||||||
pip3.6 install smbus pyserial flask pandas
|
|
||||||
```
|
|
||||||
|
|
||||||
## Raspi-config
|
|
||||||
For some law-obeying reason, Raspbian locks down the Wi-Fi interface card until
|
|
||||||
the Wi-Fi country is set. This means that we will need to set it manually through
|
|
||||||
the `raspi-config` program. It requires superuser privileges.
|
|
||||||
|
|
||||||
```
|
|
||||||
sudo raspi-config
|
|
||||||
```
|
|
||||||

|
|
||||||
|
|
||||||
Configure the network hostname to something specific. If setting up multiple
|
|
||||||
TeraHz machines, make their hostnames unique so you can tell them apart.
|
|
||||||
|
|
||||||

|
|
||||||

|
|
||||||
|
|
||||||
Enable SSH and I2C interfaces.
|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||
|
|
||||||
Expand the root filesystem along the entire SD card.
|
|
||||||
|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||
|
|
||||||
Set the Wi-Fi country to the country you'll be using TeraHz in.
|
|
||||||
|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||
|
|
||||||
Save and reboot to enable Wi-Fi
|
|
||||||
|
|
||||||
## Installing packages
|
|
||||||
In addition to what's already installed, TeraHz requires the following daemons
|
|
||||||
to run:
|
|
||||||
- Lighttpd - Frontend HTTP server
|
|
||||||
- Dnsmasq - DNS and DHCP server, used to redirect the `terahz.site` domain
|
|
||||||
- Hostapd - Wi-Fi access point
|
|
||||||
|
|
||||||
They are available from the Raspbian repository. Install it via `apt`.
|
|
||||||
|
|
||||||
```
|
|
||||||
apt install hostapd dnsmasq hostapd
|
|
||||||
```
|
|
||||||
|
|
||||||
## Configuring daemons
|
|
||||||
By default, the daemons we installed are disabled and start only manually. To
|
|
||||||
change that, enable them through systemctl. Hostapd conflicts with
|
|
||||||
wpa_supplicant, the solution is to disable wpa_supplicant (this will break your
|
|
||||||
wireless connections, so use wired ethernet).
|
|
||||||
|
|
||||||
```
|
|
||||||
sudo systemctl unmask hostapd
|
|
||||||
sudo systemctl stop wpa_supplicant
|
|
||||||
sudo systemctl disable wpa_supplicant
|
|
||||||
sudo systemctl enable dnsmasq hostapd lighttpd
|
|
||||||
```
|
|
||||||
|
|
||||||
## Copying configuration files
|
|
||||||
To simplify the process of configuring Raspbian to run TeraHz, sample
|
|
||||||
configuration file are provided in the `etcs` subdirectory of the Git
|
|
||||||
repository.
|
|
||||||
|
|
||||||
These files have been verified to work, but it's not a brilliant idea to just
|
|
||||||
copy them into your `/etc` directory. Use them carefully and more as a template
|
|
||||||
for your own configuration rather than as a _de facto_ way of configuring
|
|
||||||
TeraHz.
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
The current development version of TeraHz has been verified to work with:
|
|
||||||
|
|
||||||
- Raspbian Stretch (9)
|
|
||||||
- Python 3.6.8 (built from source code and altinstall'd)
|
|
||||||
- Module versions (direct `pip3.6 list` output):
|
|
||||||
|
|
||||||
```
|
|
||||||
Package Version
|
|
||||||
--------------- ---------
|
|
||||||
Click 7.0
|
|
||||||
Flask 1.0.3
|
|
||||||
itsdangerous 1.1.0
|
|
||||||
Jinja2 2.10.1
|
|
||||||
MarkupSafe 1.1.1
|
|
||||||
numpy 1.16.4
|
|
||||||
pandas 0.24.2
|
|
||||||
pip 18.1
|
|
||||||
pyserial 3.4
|
|
||||||
python-dateutil 2.8.0
|
|
||||||
pytz 2019.1
|
|
||||||
setuptools 40.6.2
|
|
||||||
six 1.12.0
|
|
||||||
smbus 1.1.post2
|
|
||||||
Werkzeug 0.15.4
|
|
||||||
```
|
|
||||||
|
Before Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 59 KiB |
|
Before Width: | Height: | Size: 59 KiB |
|
Before Width: | Height: | Size: 59 KiB |
|
Before Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 18 KiB |
@@ -1 +0,0 @@
|
|||||||
This is the start page for the TeraHz documentation.
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
# 1 = Try to detect unicast dns servers that serve .local and disable avahi in
|
|
||||||
# that case, 0 = Don't try to detect .local unicast dns servers, can cause
|
|
||||||
# troubles on misconfigured networks
|
|
||||||
AVAHI_DAEMON_DETECT_LOCAL=1
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
# Defaults for bluez
|
|
||||||
|
|
||||||
# start bluetooth on boot?
|
|
||||||
# compatibility note: if this variable is _not_ found bluetooth will start
|
|
||||||
BLUETOOTH_ENABLED=1
|
|
||||||
|
|
||||||
# This setting used to switch HID devices (e.g mouse/keyboad) to HCI mode, that
|
|
||||||
# is you will have bluetooth functionality from your dongle instead of only
|
|
||||||
# HID. This is accomplished for supported devices by udev in
|
|
||||||
# /lib/udev/rules.d/62-bluez-hid2hci.rules by invoking hid2hci with correct
|
|
||||||
# parameters.
|
|
||||||
# See /usr/share/doc/bluez/NEWS.Debian.gz for further information.
|
|
||||||
|
|
||||||
# Older daemons like pand dund and hidd can be found in bluez-compat package as
|
|
||||||
# they are deprecated and provided for backward compatibility only.
|
|
||||||
|
|
||||||
# Note that not every bluetooth dongle is capable of switching back to HID mode,
|
|
||||||
# see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=355497
|
|
||||||
HID2HCI_ENABLED=0
|
|
||||||
HID2HCI_UNDO=0
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
# Uncomment the following line if you'd like all of your users'
|
|
||||||
# ~/calendar files to be checked daily. Calendar will send them mail
|
|
||||||
# to remind them of upcoming events. See calendar(1) for more details.
|
|
||||||
#RUN_DAILY=true
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
# CONFIGURATION FILE FOR SETUPCON
|
|
||||||
|
|
||||||
# Consult the console-setup(5) manual page.
|
|
||||||
|
|
||||||
ACTIVE_CONSOLES="/dev/tty[1-6]"
|
|
||||||
|
|
||||||
CHARMAP="UTF-8"
|
|
||||||
|
|
||||||
CODESET="guess"
|
|
||||||
FONTFACE=""
|
|
||||||
FONTSIZE=""
|
|
||||||
|
|
||||||
VIDEOMODE=
|
|
||||||
|
|
||||||
# The following is an example how to use a braille font
|
|
||||||
# FONT='lat9w-08.psf.gz brl-8x8.psf'
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
# Set REGDOMAIN to a ISO/IEC 3166-1 alpha2 country code so that iw(8) may set
|
|
||||||
# the initial regulatory domain setting for IEEE 802.11 devices which operate
|
|
||||||
# on this system.
|
|
||||||
#
|
|
||||||
# Governments assert the right to regulate usage of radio spectrum within
|
|
||||||
# their respective territories so make sure you select a ISO/IEC 3166-1 alpha2
|
|
||||||
# country code suitable for your location or you may infringe on local
|
|
||||||
# legislature. See `/usr/share/zoneinfo/zone.tab' for a table of timezone
|
|
||||||
# descriptions containing ISO/IEC 3166-1 alpha2 country codes.
|
|
||||||
|
|
||||||
REGDOMAIN=
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
# Cron configuration options
|
|
||||||
|
|
||||||
# Whether to read the system's default environment files (if present)
|
|
||||||
# If set to "yes", cron will set a proper mail charset from the
|
|
||||||
# locale information. If set to something other than 'yes', the default
|
|
||||||
# charset 'C' (canonical name: ANSI_X3.4-1968) will be used.
|
|
||||||
#
|
|
||||||
# This has no effect on tasks running under cron; their environment can
|
|
||||||
# only be changed via PAM or from within the crontab; see crontab(5).
|
|
||||||
READ_ENV="yes"
|
|
||||||
|
|
||||||
# Extra options for cron, see cron(8)
|
|
||||||
#
|
|
||||||
# For example, to enable LSB name support in /etc/cron.d/, use
|
|
||||||
# EXTRA_OPTS='-l'
|
|
||||||
#
|
|
||||||
# Or, to log standard messages, plus jobs with exit status != 0:
|
|
||||||
# EXTRA_OPTS='-L 5'
|
|
||||||
#
|
|
||||||
# For quick reference, the currently available log levels are:
|
|
||||||
# 0 no logging (errors are logged regardless)
|
|
||||||
# 1 log start of jobs
|
|
||||||
# 2 log end of jobs
|
|
||||||
# 4 log jobs with exit status != 0
|
|
||||||
# 8 log the process identifier of child process (in all logs)
|
|
||||||
#
|
|
||||||
#EXTRA_OPTS=""
|
|
||||||
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
# This is a configuration file for /etc/init.d/dbus; it allows you to
|
|
||||||
# perform common modifications to the behavior of the dbus daemon
|
|
||||||
# startup without editing the init script (and thus getting prompted
|
|
||||||
# by dpkg on upgrades). We all love dpkg prompts.
|
|
||||||
|
|
||||||
# Parameters to pass to dbus.
|
|
||||||
PARAMS=""
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
# This file has five functions:
|
|
||||||
# 1) to completely disable starting dnsmasq,
|
|
||||||
# 2) to set DOMAIN_SUFFIX by running `dnsdomainname`
|
|
||||||
# 3) to select an alternative config file
|
|
||||||
# by setting DNSMASQ_OPTS to --conf-file=<file>
|
|
||||||
# 4) to tell dnsmasq to read the files in /etc/dnsmasq.d for
|
|
||||||
# more configuration variables.
|
|
||||||
# 5) to stop the resolvconf package from controlling dnsmasq's
|
|
||||||
# idea of which upstream nameservers to use.
|
|
||||||
# For upgraders from very old versions, all the shell variables set
|
|
||||||
# here in previous versions are still honored by the init script
|
|
||||||
# so if you just keep your old version of this file nothing will break.
|
|
||||||
|
|
||||||
#DOMAIN_SUFFIX=`dnsdomainname`
|
|
||||||
#DNSMASQ_OPTS="--conf-file=/etc/dnsmasq.alt"
|
|
||||||
|
|
||||||
# Whether or not to run the dnsmasq daemon; set to 0 to disable.
|
|
||||||
ENABLED=1
|
|
||||||
|
|
||||||
# By default search this drop directory for configuration options.
|
|
||||||
# Libvirt leaves a file here to make the system dnsmasq play nice.
|
|
||||||
# Comment out this line if you don't want this. The dpkg-* are file
|
|
||||||
# endings which cause dnsmasq to skip that file. This avoids pulling
|
|
||||||
# in backups made by dpkg.
|
|
||||||
CONFIG_DIR=/etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new
|
|
||||||
|
|
||||||
# If the resolvconf package is installed, dnsmasq will use its output
|
|
||||||
# rather than the contents of /etc/resolv.conf to find upstream
|
|
||||||
# nameservers. Uncommenting this line inhibits this behaviour.
|
|
||||||
# Note that including a "resolv-file=<filename>" line in
|
|
||||||
# /etc/dnsmasq.conf is not enough to override resolvconf if it is
|
|
||||||
# installed: the line below must be uncommented.
|
|
||||||
IGNORE_RESOLVCONF=yes
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
# Uncomment to set clock even if saved value appears to be in the past
|
|
||||||
#FORCE=force
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
# Defaults for hostapd initscript
|
|
||||||
#
|
|
||||||
# See /usr/share/doc/hostapd/README.Debian for information about alternative
|
|
||||||
# methods of managing hostapd.
|
|
||||||
#
|
|
||||||
# Uncomment and set DAEMON_CONF to the absolute path of a hostapd configuration
|
|
||||||
# file and hostapd will be started during system boot. An example configuration
|
|
||||||
# file can be found at /usr/share/doc/hostapd/examples/hostapd.conf.gz
|
|
||||||
#
|
|
||||||
DAEMON_CONF="/etc/hostapd/hostapd.conf"
|
|
||||||
|
|
||||||
# Additional daemon options to be appended to hostapd command:-
|
|
||||||
# -d show more debug messages (-dd for even more)
|
|
||||||
# -K include key data in debug messages
|
|
||||||
# -t include timestamps in some debug messages
|
|
||||||
#
|
|
||||||
# Note that -B (daemon mode) and -P (pidfile) options are automatically
|
|
||||||
# configured by the init.d script and must not be added to DAEMON_OPTS.
|
|
||||||
#
|
|
||||||
#DAEMON_OPTS=""
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
# Defaults for the hwclock init script. See hwclock(5) and hwclock(8).
|
|
||||||
|
|
||||||
# This is used to specify that the hardware clock incapable of storing
|
|
||||||
# years outside the range of 1994-1999. Set to yes if the hardware is
|
|
||||||
# broken or no if working correctly.
|
|
||||||
#BADYEAR=no
|
|
||||||
|
|
||||||
# Set this to yes if it is possible to access the hardware clock,
|
|
||||||
# or no if it is not.
|
|
||||||
#HWCLOCKACCESS=yes
|
|
||||||
|
|
||||||
# Set this to any options you might need to give to hwclock, such
|
|
||||||
# as machine hardware clock type for Alphas.
|
|
||||||
#HWCLOCKPARS=
|
|
||||||
|
|
||||||
# Set this to the hardware clock device you want to use, it should
|
|
||||||
# probably match the CONFIG_RTC_HCTOSYS_DEVICE kernel config option.
|
|
||||||
#HCTOSYS_DEVICE=rtc0
|
|
||||||
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
# KEYBOARD CONFIGURATION FILE
|
|
||||||
|
|
||||||
# Consult the keyboard(5) manual page.
|
|
||||||
|
|
||||||
XKBMODEL="pc105"
|
|
||||||
XKBLAYOUT="gb"
|
|
||||||
XKBVARIANT=""
|
|
||||||
XKBOPTIONS=""
|
|
||||||
|
|
||||||
BACKSPACE="guess"
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
# File generated by update-locale
|
|
||||||
LANG=en_GB.UTF-8
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
# Configuration for networking init script being run during
|
|
||||||
# the boot sequence
|
|
||||||
|
|
||||||
# Set to 'no' to skip interfaces configuration on boot
|
|
||||||
#CONFIGURE_INTERFACES=yes
|
|
||||||
|
|
||||||
# Don't configure these interfaces. Shell wildcards supported/
|
|
||||||
#EXCLUDE_INTERFACES=
|
|
||||||
|
|
||||||
# Set to 'yes' to enable additional verbosity
|
|
||||||
#VERBOSE=no
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
# If you do not set values for the NEED_ options, they will be attempted
|
|
||||||
# autodetected; this should be sufficient for most people. Valid alternatives
|
|
||||||
# for the NEED_ options are "yes" and "no".
|
|
||||||
|
|
||||||
# Do you want to start the statd daemon? It is not needed for NFSv4.
|
|
||||||
NEED_STATD=
|
|
||||||
|
|
||||||
# Options for rpc.statd.
|
|
||||||
# Should rpc.statd listen on a specific port? This is especially useful
|
|
||||||
# when you have a port-based firewall. To use a fixed port, set this
|
|
||||||
# this variable to a statd argument like: "--port 4000 --outgoing-port 4001".
|
|
||||||
# For more information, see rpc.statd(8) or http://wiki.debian.org/SecuringNFS
|
|
||||||
STATDOPTS=
|
|
||||||
|
|
||||||
# Do you want to start the idmapd daemon? It is only needed for NFSv4.
|
|
||||||
NEED_IDMAPD=
|
|
||||||
|
|
||||||
# Do you want to start the gssd daemon? It is required for Kerberos mounts.
|
|
||||||
NEED_GSSD=
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
# /etc/default/nss
|
|
||||||
# This file can theoretically contain a bunch of customization variables
|
|
||||||
# for Name Service Switch in the GNU C library. For now there are only
|
|
||||||
# four variables:
|
|
||||||
#
|
|
||||||
# NETID_AUTHORITATIVE
|
|
||||||
# If set to TRUE, the initgroups() function will accept the information
|
|
||||||
# from the netid.byname NIS map as authoritative. This can speed up the
|
|
||||||
# function significantly if the group.byname map is large. The content
|
|
||||||
# of the netid.byname map is used AS IS. The system administrator has
|
|
||||||
# to make sure it is correctly generated.
|
|
||||||
#NETID_AUTHORITATIVE=TRUE
|
|
||||||
#
|
|
||||||
# SERVICES_AUTHORITATIVE
|
|
||||||
# If set to TRUE, the getservbyname{,_r}() function will assume
|
|
||||||
# services.byservicename NIS map exists and is authoritative, particularly
|
|
||||||
# that it contains both keys with /proto and without /proto for both
|
|
||||||
# primary service names and service aliases. The system administrator
|
|
||||||
# has to make sure it is correctly generated.
|
|
||||||
#SERVICES_AUTHORITATIVE=TRUE
|
|
||||||
#
|
|
||||||
# SETENT_BATCH_READ
|
|
||||||
# If set to TRUE, various setXXent() functions will read the entire
|
|
||||||
# database at once and then hand out the requests one by one from
|
|
||||||
# memory with every getXXent() call. Otherwise each getXXent() call
|
|
||||||
# might result into a network communication with the server to get
|
|
||||||
# the next entry.
|
|
||||||
#SETENT_BATCH_READ=TRUE
|
|
||||||
#
|
|
||||||
# ADJUNCT_AS_SHADOW
|
|
||||||
# If set to TRUE, the passwd routines in the NIS NSS module will not
|
|
||||||
# use the passwd.adjunct.byname tables to fill in the password data
|
|
||||||
# in the passwd structure. This is a security problem if the NIS
|
|
||||||
# server cannot be trusted to send the passwd.adjuct table only to
|
|
||||||
# privileged clients. Instead the passwd.adjunct.byname table is
|
|
||||||
# used to synthesize the shadow.byname table if it does not exist.
|
|
||||||
ADJUNCT_AS_SHADOW=TRUE
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
# Defaults for raspberrypi-kernel
|
|
||||||
|
|
||||||
# Uncomment the following line to enable generation of
|
|
||||||
# /boot/initrd.img-KVER files (requires initramfs-tools)
|
|
||||||
|
|
||||||
#INITRD=Yes
|
|
||||||
|
|
||||||
# Uncomment the following line to enable generation of
|
|
||||||
# /boot/initrd(7).img files (requires rpi-initramfs-tools)
|
|
||||||
|
|
||||||
#RPI_INITRD=Yes
|
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
# defaults file for rsync daemon mode
|
|
||||||
#
|
|
||||||
# This file is only used for init.d based systems!
|
|
||||||
# If this system uses systemd, you can specify options etc. for rsync
|
|
||||||
# in daemon mode by copying /lib/systemd/system/rsync.service to
|
|
||||||
# /etc/systemd/system/rsync.service and modifying the copy; add required
|
|
||||||
# options to the ExecStart line.
|
|
||||||
|
|
||||||
# start rsync in daemon mode from init.d script?
|
|
||||||
# only allowed values are "true", "false", and "inetd"
|
|
||||||
# Use "inetd" if you want to start the rsyncd from inetd,
|
|
||||||
# all this does is prevent the init.d script from printing a message
|
|
||||||
# about not starting rsyncd (you still need to modify inetd's config yourself).
|
|
||||||
RSYNC_ENABLE=false
|
|
||||||
|
|
||||||
# which file should be used as the configuration file for rsync.
|
|
||||||
# This file is used instead of the default /etc/rsyncd.conf
|
|
||||||
# Warning: This option has no effect if the daemon is accessed
|
|
||||||
# using a remote shell. When using a different file for
|
|
||||||
# rsync you might want to symlink /etc/rsyncd.conf to
|
|
||||||
# that file.
|
|
||||||
# RSYNC_CONFIG_FILE=
|
|
||||||
|
|
||||||
# what extra options to give rsync --daemon?
|
|
||||||
# that excludes the --daemon; that's always done in the init.d script
|
|
||||||
# Possibilities are:
|
|
||||||
# --address=123.45.67.89 (bind to a specific IP address)
|
|
||||||
# --port=8730 (bind to specified port; default 873)
|
|
||||||
RSYNC_OPTS=''
|
|
||||||
|
|
||||||
# run rsyncd at a nice level?
|
|
||||||
# the rsync daemon can impact performance due to much I/O and CPU usage,
|
|
||||||
# so you may want to run it at a nicer priority than the default priority.
|
|
||||||
# Allowed values are 0 - 19 inclusive; 10 is a reasonable value.
|
|
||||||
RSYNC_NICE=''
|
|
||||||
|
|
||||||
# run rsyncd with ionice?
|
|
||||||
# "ionice" does for IO load what "nice" does for CPU load.
|
|
||||||
# As rsync is often used for backups which aren't all that time-critical,
|
|
||||||
# reducing the rsync IO priority will benefit the rest of the system.
|
|
||||||
# See the manpage for ionice for allowed options.
|
|
||||||
# -c3 is recommended, this will run rsync IO at "idle" priority. Uncomment
|
|
||||||
# the next line to activate this.
|
|
||||||
# RSYNC_IONICE='-c3'
|
|
||||||
|
|
||||||
# Don't forget to create an appropriate config file,
|
|
||||||
# else the daemon will not start.
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
# Options for rsyslogd
|
|
||||||
# -x disables DNS lookups for remote messages
|
|
||||||
# See rsyslogd(8) for more details
|
|
||||||
RSYSLOGD_OPTIONS=""
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
# Default settings for openssh-server. This file is sourced by /bin/sh from
|
|
||||||
# /etc/init.d/ssh.
|
|
||||||
|
|
||||||
# Options to pass to sshd
|
|
||||||
SSHD_OPTS=
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
# Defaults for TiMidity++ scripts
|
|
||||||
# sourced by /etc/init.d/timidity
|
|
||||||
# installed at /etc/default/timidity by the maintainer scripts
|
|
||||||
# $Id: timidity.default,v 1.3 2004/08/07 14:33:26 hmh Exp $
|
|
||||||
|
|
||||||
#
|
|
||||||
# This is a POSIX shell fragment
|
|
||||||
#
|
|
||||||
|
|
||||||
SERVER_HOME=/etc/timidity
|
|
||||||
SERVER_USER=timidity
|
|
||||||
SERVER_NAME="TiMidity++ MIDI sequencer service"
|
|
||||||
SERVER_GROUP=timidity
|
|
||||||
ADDGROUP=audio
|
|
||||||
|
|
||||||
# Enable MIDI sequencer (ALSA), if timidity-deamon is installed
|
|
||||||
|
|
||||||
# uncomment to override enabling triggered by availability of timidity-deamon
|
|
||||||
# TIM_ALSASEQ=false
|
|
||||||
|
|
||||||
# Setting overrides (of /etc/timidity.conf) for the ALSA sequencer daemon
|
|
||||||
TIM_ALSASEQPARAMS="-Os"
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
# Defaults for triggerhappy initscript
|
|
||||||
# sourced by /etc/init.d/triggerhappy
|
|
||||||
# installed at /etc/default/triggerhappy by the maintainer scripts
|
|
||||||
|
|
||||||
#
|
|
||||||
# This is a POSIX shell fragment
|
|
||||||
#
|
|
||||||
|
|
||||||
# Additional options that are passed to the Daemon.
|
|
||||||
DAEMON_OPTS=""
|
|
||||||
|
|
||||||
# The Triggerhappy daemon (thd) drops its root privileges after
|
|
||||||
# startup and becomes "nobody". If you want it to retain its root
|
|
||||||
# status (e.g. to run commands only accessible to the system user),
|
|
||||||
# uncomment the following line or specifiy the user option yourself:
|
|
||||||
#
|
|
||||||
# DAEMON_OPTS="--user root"
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
# Default values for useradd(8)
|
|
||||||
#
|
|
||||||
# The SHELL variable specifies the default login shell on your
|
|
||||||
# system.
|
|
||||||
# Similar to DHSELL in adduser. However, we use "sh" here because
|
|
||||||
# useradd is a low level utility and should be as general
|
|
||||||
# as possible
|
|
||||||
SHELL=/bin/bash
|
|
||||||
#
|
|
||||||
# The default group for users
|
|
||||||
# 100=users on Debian systems
|
|
||||||
# Same as USERS_GID in adduser
|
|
||||||
# This argument is used when the -n flag is specified.
|
|
||||||
# The default behavior (when -n and -g are not specified) is to create a
|
|
||||||
# primary user group with the same name as the user being added to the
|
|
||||||
# system.
|
|
||||||
# GROUP=100
|
|
||||||
#
|
|
||||||
# The default home directory. Same as DHOME for adduser
|
|
||||||
# HOME=/home
|
|
||||||
#
|
|
||||||
# The number of days after a password expires until the account
|
|
||||||
# is permanently disabled
|
|
||||||
# INACTIVE=-1
|
|
||||||
#
|
|
||||||
# The default expire date
|
|
||||||
# EXPIRE=
|
|
||||||
#
|
|
||||||
# The SKEL variable specifies the directory containing "skeletal" user
|
|
||||||
# files; in other words, files such as a sample .profile that will be
|
|
||||||
# copied to the new user's home directory when it is created.
|
|
||||||
SKEL=/etc/skel
|
|
||||||
#
|
|
||||||
# Defines whether the mail spool should be created while
|
|
||||||
# creating the account
|
|
||||||
# CREATE_MAIL_SPOOL=yes
|
|
||||||
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
# A sample configuration for dhcpcd.
|
|
||||||
# See dhcpcd.conf(5) for details.
|
|
||||||
|
|
||||||
# Allow users of this group to interact with dhcpcd via the control socket.
|
|
||||||
#controlgroup wheel
|
|
||||||
|
|
||||||
# Inform the DHCP server of our hostname for DDNS.
|
|
||||||
hostname
|
|
||||||
|
|
||||||
# Use the hardware address of the interface for the Client ID.
|
|
||||||
clientid
|
|
||||||
# or
|
|
||||||
# Use the same DUID + IAID as set in DHCPv6 for DHCPv4 ClientID as per RFC4361.
|
|
||||||
# Some non-RFC compliant DHCP servers do not reply with this set.
|
|
||||||
# In this case, comment out duid and enable clientid above.
|
|
||||||
#duid
|
|
||||||
|
|
||||||
# Persist interface configuration when dhcpcd exits.
|
|
||||||
persistent
|
|
||||||
|
|
||||||
# Rapid commit support.
|
|
||||||
# Safe to enable by default because it requires the equivalent option set
|
|
||||||
# on the server to actually work.
|
|
||||||
option rapid_commit
|
|
||||||
|
|
||||||
# A list of options to request from the DHCP server.
|
|
||||||
option domain_name_servers, domain_name, domain_search, host_name
|
|
||||||
option classless_static_routes
|
|
||||||
# Most distributions have NTP support.
|
|
||||||
option ntp_servers
|
|
||||||
# Respect the network MTU. This is applied to DHCP routes.
|
|
||||||
option interface_mtu
|
|
||||||
|
|
||||||
# A ServerID is required by RFC2131.
|
|
||||||
require dhcp_server_identifier
|
|
||||||
|
|
||||||
# Generate Stable Private IPv6 Addresses instead of hardware based ones
|
|
||||||
slaac private
|
|
||||||
|
|
||||||
# Example static IP configuration:
|
|
||||||
#interface eth0
|
|
||||||
#static ip_address=192.168.0.10/24
|
|
||||||
#static ip6_address=fd51:42f8:caae:d92e::ff/64
|
|
||||||
#static routers=192.168.0.1
|
|
||||||
#static domain_name_servers=192.168.0.1 8.8.8.8 fd51:42f8:caae:d92e::1
|
|
||||||
|
|
||||||
# It is possible to fall back to a static IP if DHCP fails:
|
|
||||||
# define static profile
|
|
||||||
#profile static_eth0
|
|
||||||
#static ip_address=192.168.1.23/24
|
|
||||||
#static routers=192.168.1.1
|
|
||||||
#static domain_name_servers=192.168.1.1
|
|
||||||
|
|
||||||
# fallback to static profile on eth0
|
|
||||||
#interface eth0
|
|
||||||
#fallback static_eth0
|
|
||||||
|
|
||||||
interface wlan0
|
|
||||||
static ip_address=192.168.1.1/24
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
interface=wlan0
|
|
||||||
dhcp-range=192.168.1.10,192.168.1.100,255.255.255.0,24h
|
|
||||||
address=/terahz.site/192.168.1.1
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
interface=wlan0
|
|
||||||
hw_mode=g
|
|
||||||
channel=8
|
|
||||||
wpa=2
|
|
||||||
wpa_key_mgmt=WPA-PSK
|
|
||||||
wpa_pairwise=TKIP
|
|
||||||
rsn_pairwise=CCMP
|
|
||||||
ssid=TeraHz
|
|
||||||
wpa_passphrase=terahertz
|
|
||||||
@@ -1,146 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# Copyright (C) 2006-2009 Debian hostapd maintainers
|
|
||||||
# Faidon Liambotis <paravoid@debian.org>
|
|
||||||
# Kel Modderman <kel@otaku42.de>
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or
|
|
||||||
# modify it under the terms of the GNU General Public License
|
|
||||||
# as published by the Free Software Foundation; either version 2
|
|
||||||
# of the License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# On Debian GNU/Linux systems, the text of the GPL license,
|
|
||||||
# version 2, can be found in /usr/share/common-licenses/GPL-2.
|
|
||||||
|
|
||||||
# quit if we're called for lo
|
|
||||||
if [ "$IFACE" = lo ]; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$IF_HOSTAPD" ]; then
|
|
||||||
HOSTAPD_CONF="$IF_HOSTAPD"
|
|
||||||
else
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
HOSTAPD_BIN="/usr/sbin/hostapd"
|
|
||||||
HOSTAPD_PNAME="hostapd"
|
|
||||||
HOSTAPD_PIDFILE="/run/hostapd.$IFACE.pid"
|
|
||||||
HOSTAPD_OMIT_PIDFILE="/run/sendsigs.omit.d/hostapd.$IFACE.pid"
|
|
||||||
|
|
||||||
if [ ! -x "$HOSTAPD_BIN" ]; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$VERBOSITY" = "1" ]; then
|
|
||||||
TO_NULL="/dev/stdout"
|
|
||||||
else
|
|
||||||
TO_NULL="/dev/null"
|
|
||||||
fi
|
|
||||||
|
|
||||||
hostapd_msg () {
|
|
||||||
case "$1" in
|
|
||||||
verbose)
|
|
||||||
shift
|
|
||||||
echo "$HOSTAPD_PNAME: $@" > "$TO_NULL"
|
|
||||||
;;
|
|
||||||
stderr)
|
|
||||||
shift
|
|
||||||
echo "$HOSTAPD_PNAME: $@" > /dev/stderr
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
test_hostapd_pidfile () {
|
|
||||||
if [ -n "$1" ] && [ -f "$2" ]; then
|
|
||||||
if start-stop-daemon --stop --quiet --signal 0 \
|
|
||||||
--exec "$1" --pidfile "$2"; then
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
rm -f "$2"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
init_hostapd () {
|
|
||||||
HOSTAPD_OPTIONS="-B -P $HOSTAPD_PIDFILE $HOSTAPD_CONF"
|
|
||||||
HOSTAPD_MESSAGE="$HOSTAPD_BIN $HOSTAPD_OPTIONS"
|
|
||||||
|
|
||||||
test_hostapd_pidfile "$HOSTAPD_BIN" "$HOSTAPD_PIDFILE" && return 0
|
|
||||||
|
|
||||||
hostapd_msg verbose "$HOSTAPD_MESSAGE"
|
|
||||||
start-stop-daemon --start --oknodo --quiet --exec "$HOSTAPD_BIN" \
|
|
||||||
--pidfile "$HOSTAPD_PIDFILE" -- $HOSTAPD_OPTIONS > "$TO_NULL"
|
|
||||||
|
|
||||||
if [ "$?" -ne 0 ]; then
|
|
||||||
return "$?"
|
|
||||||
fi
|
|
||||||
|
|
||||||
HOSTAPD_PIDFILE_WAIT=0
|
|
||||||
until [ -s "$HOSTAPD_PIDFILE" ]; do
|
|
||||||
if [ "$HOSTAPD_PIDFILE_WAIT" -ge 5 ]; then
|
|
||||||
hostapd_msg stderr \
|
|
||||||
"timeout waiting for pid file creation"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
HOSTAPD_PIDFILE_WAIT=$(($HOSTAPD_PIDFILE_WAIT + 1))
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
cat "$HOSTAPD_PIDFILE" > "$HOSTAPD_OMIT_PIDFILE"
|
|
||||||
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
kill_hostapd () {
|
|
||||||
HOSTAPD_MESSAGE="stopping $HOSTAPD_PNAME via pidfile: $HOSTAPD_PIDFILE"
|
|
||||||
|
|
||||||
test_hostapd_pidfile "$HOSTAPD_BIN" "$HOSTAPD_PIDFILE" || return 0
|
|
||||||
|
|
||||||
hostapd_msg verbose "$HOSTAPD_MESSAGE"
|
|
||||||
start-stop-daemon --stop --oknodo --quiet --exec "$HOSTAPD_BIN" \
|
|
||||||
--pidfile "$HOSTAPD_PIDFILE" > "$TO_NULL"
|
|
||||||
|
|
||||||
[ "$HOSTAPD_OMIT_PIDFILE" ] && rm -f "$HOSTAPD_OMIT_PIDFILE"
|
|
||||||
}
|
|
||||||
|
|
||||||
case "$MODE" in
|
|
||||||
start)
|
|
||||||
case "$PHASE" in
|
|
||||||
pre-up)
|
|
||||||
init_hostapd || exit 1
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
hostapd_msg stderr "unknown phase: \"$PHASE\""
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
stop)
|
|
||||||
case "$PHASE" in
|
|
||||||
post-down)
|
|
||||||
kill_hostapd
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
hostapd_msg stderr "unknown phase: \"$PHASE\""
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
hostapd_msg stderr "unknown mode: \"$MODE\""
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
@@ -1,146 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# Copyright (C) 2006-2009 Debian hostapd maintainers
|
|
||||||
# Faidon Liambotis <paravoid@debian.org>
|
|
||||||
# Kel Modderman <kel@otaku42.de>
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or
|
|
||||||
# modify it under the terms of the GNU General Public License
|
|
||||||
# as published by the Free Software Foundation; either version 2
|
|
||||||
# of the License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# On Debian GNU/Linux systems, the text of the GPL license,
|
|
||||||
# version 2, can be found in /usr/share/common-licenses/GPL-2.
|
|
||||||
|
|
||||||
# quit if we're called for lo
|
|
||||||
if [ "$IFACE" = lo ]; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$IF_HOSTAPD" ]; then
|
|
||||||
HOSTAPD_CONF="$IF_HOSTAPD"
|
|
||||||
else
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
HOSTAPD_BIN="/usr/sbin/hostapd"
|
|
||||||
HOSTAPD_PNAME="hostapd"
|
|
||||||
HOSTAPD_PIDFILE="/run/hostapd.$IFACE.pid"
|
|
||||||
HOSTAPD_OMIT_PIDFILE="/run/sendsigs.omit.d/hostapd.$IFACE.pid"
|
|
||||||
|
|
||||||
if [ ! -x "$HOSTAPD_BIN" ]; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$VERBOSITY" = "1" ]; then
|
|
||||||
TO_NULL="/dev/stdout"
|
|
||||||
else
|
|
||||||
TO_NULL="/dev/null"
|
|
||||||
fi
|
|
||||||
|
|
||||||
hostapd_msg () {
|
|
||||||
case "$1" in
|
|
||||||
verbose)
|
|
||||||
shift
|
|
||||||
echo "$HOSTAPD_PNAME: $@" > "$TO_NULL"
|
|
||||||
;;
|
|
||||||
stderr)
|
|
||||||
shift
|
|
||||||
echo "$HOSTAPD_PNAME: $@" > /dev/stderr
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
test_hostapd_pidfile () {
|
|
||||||
if [ -n "$1" ] && [ -f "$2" ]; then
|
|
||||||
if start-stop-daemon --stop --quiet --signal 0 \
|
|
||||||
--exec "$1" --pidfile "$2"; then
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
rm -f "$2"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
init_hostapd () {
|
|
||||||
HOSTAPD_OPTIONS="-B -P $HOSTAPD_PIDFILE $HOSTAPD_CONF"
|
|
||||||
HOSTAPD_MESSAGE="$HOSTAPD_BIN $HOSTAPD_OPTIONS"
|
|
||||||
|
|
||||||
test_hostapd_pidfile "$HOSTAPD_BIN" "$HOSTAPD_PIDFILE" && return 0
|
|
||||||
|
|
||||||
hostapd_msg verbose "$HOSTAPD_MESSAGE"
|
|
||||||
start-stop-daemon --start --oknodo --quiet --exec "$HOSTAPD_BIN" \
|
|
||||||
--pidfile "$HOSTAPD_PIDFILE" -- $HOSTAPD_OPTIONS > "$TO_NULL"
|
|
||||||
|
|
||||||
if [ "$?" -ne 0 ]; then
|
|
||||||
return "$?"
|
|
||||||
fi
|
|
||||||
|
|
||||||
HOSTAPD_PIDFILE_WAIT=0
|
|
||||||
until [ -s "$HOSTAPD_PIDFILE" ]; do
|
|
||||||
if [ "$HOSTAPD_PIDFILE_WAIT" -ge 5 ]; then
|
|
||||||
hostapd_msg stderr \
|
|
||||||
"timeout waiting for pid file creation"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
HOSTAPD_PIDFILE_WAIT=$(($HOSTAPD_PIDFILE_WAIT + 1))
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
cat "$HOSTAPD_PIDFILE" > "$HOSTAPD_OMIT_PIDFILE"
|
|
||||||
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
kill_hostapd () {
|
|
||||||
HOSTAPD_MESSAGE="stopping $HOSTAPD_PNAME via pidfile: $HOSTAPD_PIDFILE"
|
|
||||||
|
|
||||||
test_hostapd_pidfile "$HOSTAPD_BIN" "$HOSTAPD_PIDFILE" || return 0
|
|
||||||
|
|
||||||
hostapd_msg verbose "$HOSTAPD_MESSAGE"
|
|
||||||
start-stop-daemon --stop --oknodo --quiet --exec "$HOSTAPD_BIN" \
|
|
||||||
--pidfile "$HOSTAPD_PIDFILE" > "$TO_NULL"
|
|
||||||
|
|
||||||
[ "$HOSTAPD_OMIT_PIDFILE" ] && rm -f "$HOSTAPD_OMIT_PIDFILE"
|
|
||||||
}
|
|
||||||
|
|
||||||
case "$MODE" in
|
|
||||||
start)
|
|
||||||
case "$PHASE" in
|
|
||||||
pre-up)
|
|
||||||
init_hostapd || exit 1
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
hostapd_msg stderr "unknown phase: \"$PHASE\""
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
stop)
|
|
||||||
case "$PHASE" in
|
|
||||||
post-down)
|
|
||||||
kill_hostapd
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
hostapd_msg stderr "unknown phase: \"$PHASE\""
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
hostapd_msg stderr "unknown mode: \"$MODE\""
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
# /usr/share/doc/lighttpd/authentication.txt.gz
|
|
||||||
|
|
||||||
server.modules += ( "mod_auth" )
|
|
||||||
|
|
||||||
# auth.backend = "plain"
|
|
||||||
# auth.backend.plain.userfile = "lighttpd.user"
|
|
||||||
# auth.backend.plain.groupfile = "lighttpd.group"
|
|
||||||
|
|
||||||
# auth.backend.ldap.hostname = "localhost"
|
|
||||||
# auth.backend.ldap.base-dn = "dc=my-domain,dc=com"
|
|
||||||
# auth.backend.ldap.filter = "(uid=$)"
|
|
||||||
|
|
||||||
# auth.require = ( "/server-status" =>
|
|
||||||
# (
|
|
||||||
# "method" => "digest",
|
|
||||||
# "realm" => "download archiv",
|
|
||||||
# "require" => "group=www|user=jan|host=192.168.2.10"
|
|
||||||
# ),
|
|
||||||
# "/server-info" =>
|
|
||||||
# (
|
|
||||||
# "method" => "digest",
|
|
||||||
# "realm" => "download archiv",
|
|
||||||
# "require" => "group=www|user=jan|host=192.168.2.10"
|
|
||||||
# )
|
|
||||||
# )
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
server.modules += ( "mod_accesslog" )
|
|
||||||
|
|
||||||
accesslog.filename = "/var/log/lighttpd/access.log"
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
# /usr/share/doc/lighttpd/cgi.txt
|
|
||||||
|
|
||||||
server.modules += ( "mod_cgi" )
|
|
||||||
|
|
||||||
$HTTP["url"] =~ "^/cgi-bin/" {
|
|
||||||
cgi.assign = ( "" => "" )
|
|
||||||
}
|
|
||||||
|
|
||||||
## Warning this represents a security risk, as it allow to execute any file
|
|
||||||
## with a .pl/.py even outside of /usr/lib/cgi-bin.
|
|
||||||
#
|
|
||||||
#cgi.assign = (
|
|
||||||
# ".pl" => "/usr/bin/perl",
|
|
||||||
# ".py" => "/usr/bin/python",
|
|
||||||
#)
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
dir-listing.encoding = "utf-8"
|
|
||||||
server.dir-listing = "enable"
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
server.modules += ( "mod_evasive" )
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
# http://redmine.lighttpd.net/wiki/1/Docs:ModEVhost
|
|
||||||
|
|
||||||
server.modules += ( "mod_evhost" )
|
|
||||||
|
|
||||||
evhost.path-pattern = "/srv/%_/htdocs"
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
# http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ModExpire
|
|
||||||
|
|
||||||
server.modules += ( "mod_expire" )
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
# /usr/share/doc/lighttpd/fastcgi.txt.gz
|
|
||||||
# http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ConfigurationOptions#mod_fastcgi-fastcgi
|
|
||||||
|
|
||||||
server.modules += ( "mod_fastcgi" )
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
server.modules += ( "mod_flv_streaming" )
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
$HTTP["host"] =~ "^www\.(.*)" {
|
|
||||||
url.redirect = ( "^/(.*)" => "http://%1/$1" )
|
|
||||||
}
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
# /usr/share/doc/lighttpd/proxy.txt
|
|
||||||
|
|
||||||
server.modules += ( "mod_proxy" )
|
|
||||||
|
|
||||||
## Balance algorithm, possible values are: "hash", "round-robin" or "fair" (default)
|
|
||||||
# proxy.balance = "hash"
|
|
||||||
|
|
||||||
|
|
||||||
## Redirect all queries to files ending with ".php" to 192.168.0.101:80
|
|
||||||
#proxy.server = ( ".php" =>
|
|
||||||
# (
|
|
||||||
# ( "host" => "192.168.0.101",
|
|
||||||
# "port" => 80
|
|
||||||
# )
|
|
||||||
# )
|
|
||||||
# )
|
|
||||||
|
|
||||||
## Redirect all connections on www.example.com to 10.0.0.1{0,1,2,3}
|
|
||||||
#$HTTP["host"] == "www.example.com" {
|
|
||||||
# proxy.balance = "hash"
|
|
||||||
# proxy.server = ( "" => ( ( "host" => "10.0.0.10" ),
|
|
||||||
# ( "host" => "10.0.0.11" ),
|
|
||||||
# ( "host" => "10.0.0.12" ),
|
|
||||||
# ( "host" => "10.0.0.13" ) ) )
|
|
||||||
#}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
# /usr/share/doc/lighttpd/rewrite.txt
|
|
||||||
# http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ConfigurationOptions#mod_rewrite-rewriting
|
|
||||||
|
|
||||||
server.modules += ( "mod_rewrite" )
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
# /usr/share/doc/lighttpd/rrdtool.txt
|
|
||||||
|
|
||||||
server.modules += ( "mod_rrdtool" )
|
|
||||||
|
|
||||||
## path to the rrdtool binary
|
|
||||||
rrdtool.binary = "/usr/bin/rrdtool"
|
|
||||||
|
|
||||||
## file to store the rrd database, will be created by lighttpd
|
|
||||||
rrdtool.db-name = "/var/www/lighttpd.rrd"
|
|
||||||
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
# /usr/share/doc/lighttpd/simple-vhost.txt
|
|
||||||
|
|
||||||
server.modules += ( "mod_simple_vhost" )
|
|
||||||
|
|
||||||
## The document root of a virtual host is document-root =
|
|
||||||
## simple-vhost.server-root + $HTTP["host"] + simple-vhost.document-root
|
|
||||||
simple-vhost.server-root = "/srv"
|
|
||||||
simple-vhost.document-root = "htdocs"
|
|
||||||
|
|
||||||
## the default host if no host is sent
|
|
||||||
simple-vhost.default-host = "www.example.com"
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
# /usr/share/doc/lighttpd/ssi.txt
|
|
||||||
|
|
||||||
server.modules += ( "mod_ssi" )
|
|
||||||
|
|
||||||
ssi.extension = ( ".shtml" )
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
# /usr/share/doc/lighttpd/ssl.txt
|
|
||||||
|
|
||||||
$SERVER["socket"] == "0.0.0.0:443" {
|
|
||||||
ssl.engine = "enable"
|
|
||||||
ssl.pemfile = "/etc/lighttpd/server.pem"
|
|
||||||
|
|
||||||
ssl.cipher-list = "ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH:!AESGCM"
|
|
||||||
ssl.honor-cipher-order = "enable"
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
# /usr/share/doc/lighttpd/status.txt
|
|
||||||
# http://trac.lighttpd.net/trac/wiki/Docs%3AModStatus
|
|
||||||
|
|
||||||
server.modules += ( "mod_status" )
|
|
||||||
|
|
||||||
# status.status-url = "/server-status"
|
|
||||||
|
|
||||||
# status.config-url = "/server-config"
|
|
||||||
|
|
||||||
## relative URL for a plain-text page containing the internal statistics
|
|
||||||
# status.statistics-url = "/server-statistics"
|
|
||||||
|
|
||||||
## add JavaScript which allows client-side sorting for the connection overview
|
|
||||||
## default: enable
|
|
||||||
# status.enable-sort = "disable"
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
## The userdir module provides a simple way to link user-based directories into
|
|
||||||
## the global namespace of the webserver.
|
|
||||||
##
|
|
||||||
# /usr/share/doc/lighttpd/userdir.txt
|
|
||||||
|
|
||||||
server.modules += ( "mod_userdir" )
|
|
||||||
|
|
||||||
## the subdirectory of a user's home dir which should be accessible
|
|
||||||
## under http://$host/~$user
|
|
||||||
userdir.path = "public_html"
|
|
||||||
|
|
||||||
## The users whose home directories should not be accessible
|
|
||||||
userdir.exclude-user = ( "root", "postmaster" )
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
server.modules += ( "mod_usertrack" )
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
# -*- depends: accesslog -*-
|
|
||||||
|
|
||||||
server.modules += ( "mod_extforward" )
|
|
||||||
|
|
||||||
# extforward.headers = ("X-Cluster-Client-Ip")
|
|
||||||
# extforward.forwarder = ("10.0.0.232" => "trust")
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
# -*- depends: fastcgi -*-
|
|
||||||
# /usr/share/doc/lighttpd/fastcgi.txt.gz
|
|
||||||
# http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ConfigurationOptions#mod_fastcgi-fastcgi
|
|
||||||
|
|
||||||
## Start an FastCGI server for php (needs the php5-cgi package)
|
|
||||||
fastcgi.server += ( ".php" =>
|
|
||||||
((
|
|
||||||
"bin-path" => "/usr/bin/php-cgi",
|
|
||||||
"socket" => "/var/run/lighttpd/php.socket",
|
|
||||||
"max-procs" => 1,
|
|
||||||
"bin-environment" => (
|
|
||||||
"PHP_FCGI_CHILDREN" => "4",
|
|
||||||
"PHP_FCGI_MAX_REQUESTS" => "10000"
|
|
||||||
),
|
|
||||||
"bin-copy-environment" => (
|
|
||||||
"PATH", "SHELL", "USER"
|
|
||||||
),
|
|
||||||
"broken-scriptfilename" => "enable"
|
|
||||||
))
|
|
||||||
)
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
#### handle Debian Policy Manual, Section 11.5. urls
|
|
||||||
## by default allow them only from localhost
|
|
||||||
$HTTP["remoteip"] =~ "^127\.0\.0\.1$|^::1$" {
|
|
||||||
alias.url += (
|
|
||||||
"/cgi-bin/" => "/usr/lib/cgi-bin/",
|
|
||||||
"/doc/" => "/usr/share/doc/",
|
|
||||||
"/images/" => "/usr/share/images/"
|
|
||||||
)
|
|
||||||
$HTTP["url"] =~ "^/doc/|^/images/" {
|
|
||||||
dir-listing.activate = "enable"
|
|
||||||
}
|
|
||||||
$HTTP["url"] =~ "^/cgi-bin/" {
|
|
||||||
cgi.assign = ( "" => "" )
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
alias.url += ("/javascript" => "/usr/share/javascript")
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
ligghttpd Configuration under Debian GNU/Linux
|
|
||||||
==============================================
|
|
||||||
|
|
||||||
Files and Directories in /etc/lighttpd:
|
|
||||||
---------------------------------------
|
|
||||||
|
|
||||||
lighttpd.conf:
|
|
||||||
main configuration file
|
|
||||||
|
|
||||||
conf-available/
|
|
||||||
This directory contains a series of .conf files. These files contain
|
|
||||||
configuration directives necessary to load and run webserver modules.
|
|
||||||
If you want to create your own files they names should be
|
|
||||||
build as nn-name.conf where "nn" is two digit number (number
|
|
||||||
is used to find order for loading files)
|
|
||||||
|
|
||||||
conf-enabled/
|
|
||||||
To actually enable a module for lighttpd, it is necessary to create a
|
|
||||||
symlink in this directory to the .conf file in conf-available/.
|
|
||||||
|
|
||||||
Enabling and disabling modules could be done by provided
|
|
||||||
/usr/sbin/lighty-enable-mod and /usr/sbin/lighty-disable-mod scripts.
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../conf-available/90-javascript-alias.conf
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
server.modules = (
|
|
||||||
"mod_access",
|
|
||||||
"mod_alias",
|
|
||||||
"mod_compress",
|
|
||||||
"mod_redirect",
|
|
||||||
)
|
|
||||||
|
|
||||||
server.document-root = "/home/terahz/TeraHz/frontend"
|
|
||||||
server.upload-dirs = ( "/var/cache/lighttpd/uploads" )
|
|
||||||
server.errorlog = "/var/log/lighttpd/error.log"
|
|
||||||
server.pid-file = "/var/run/lighttpd.pid"
|
|
||||||
server.username = "www-data"
|
|
||||||
server.groupname = "www-data"
|
|
||||||
server.port = 80
|
|
||||||
|
|
||||||
|
|
||||||
index-file.names = ( "index.php", "index.html", "index.lighttpd.html" )
|
|
||||||
url.access-deny = ( "~", ".inc" )
|
|
||||||
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
|
|
||||||
|
|
||||||
compress.cache-dir = "/var/cache/lighttpd/compress/"
|
|
||||||
compress.filetype = ( "application/javascript", "text/css", "text/html", "text/plain" )
|
|
||||||
|
|
||||||
# default listening port for IPv6 falls back to the IPv4 port
|
|
||||||
include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port
|
|
||||||
include_shell "/usr/share/lighttpd/create-mime.assign.pl"
|
|
||||||
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
#!/bin/sh -e
|
|
||||||
#
|
|
||||||
# rc.local
|
|
||||||
#
|
|
||||||
# This script is executed at the end of each multiuser runlevel.
|
|
||||||
# Make sure that the script will "exit 0" on success or any other
|
|
||||||
# value on error.
|
|
||||||
#
|
|
||||||
# In order to enable or disable this script just change the execution
|
|
||||||
# bits.
|
|
||||||
#
|
|
||||||
# By default this script does nothing.
|
|
||||||
|
|
||||||
# Print the IP address
|
|
||||||
|
|
||||||
cd /home/pi/TeraHz/backend
|
|
||||||
service lighttpd start
|
|
||||||
flask run -h 0.0.0.0 &
|
|
||||||
exit 0
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
# Configuration for resolvconf(8)
|
|
||||||
# See resolvconf.conf(5) for details
|
|
||||||
|
|
||||||
resolv_conf=/etc/resolv.conf
|
|
||||||
# If you run a local name server, you should uncomment the below line and
|
|
||||||
# configure your subscribers configuration files below.
|
|
||||||
name_servers=1.1.1.1
|
|
||||||
|
|
||||||
# Mirror the Debian package defaults for the below resolvers
|
|
||||||
# so that resolvconf integrates seemlessly.
|
|
||||||
#dnsmasq_resolv=/var/run/dnsmasq/resolv.conf
|
|
||||||
#pdnsd_conf=/etc/pdnsd.conf
|
|
||||||
#unbound_conf=/var/cache/unbound/resolvconf_resolvers.conf
|
|
||||||
resolvconf=NO
|
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
from flask import Flask
|
||||||
|
app = Flask(__name__)
|
||||||
|
|
||||||
|
@app.route('/<txt>')
|
||||||
|
def root(txt):
|
||||||
|
return 'txt={}'.format(txt)
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
from flask import Flask
|
||||||
|
app = Flask(__name__)
|
||||||
|
|
||||||
|
@app.route('/', methods = ['GET', 'POST'])
|
||||||
|
def index():
|
||||||
|
value = request.json['key']
|
||||||
|
return value
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app.run
|
||||||
|
|
||||||
|
|
||||||
|
test = open("JsonJs", "r")
|
||||||
|
req = requests.post('C:/Users/Janez%20Dolzan/Documents/Python%20projects/Spektrometer/GitHub/TeraHz/frontend/website.html')
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
var output = document.getElementById('output');
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
// All code in this file is licensed under the ISC license, provided in LICENSE.txt
|
|
||||||
var globalObject;
|
|
||||||
$('#update').click(function () {
|
|
||||||
updateData();
|
|
||||||
});
|
|
||||||
// jQuery event binder
|
|
||||||
|
|
||||||
function updateData () {
|
|
||||||
// download data from backend into obj
|
|
||||||
const url = 'http://' + window.location.hostname + ':5000/data';
|
|
||||||
// I understand how bad this line looks. Please don't judge me...
|
|
||||||
$.get(url, function (data, status) { // standard jQuery AJAX
|
|
||||||
globalObject = data;
|
|
||||||
})
|
|
||||||
.done(function () {
|
|
||||||
fillTable(globalObject, $('#specter'));
|
|
||||||
graphSpectralData(globalObject, $('#spectrogram'));
|
|
||||||
fillLuxUv(globalObject, $('#luxuv'));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function fillTable (obj, dom) {
|
|
||||||
// applies data in obj[0] to HTML tags with the obj's key as ID.
|
|
||||||
// useful mostly for slapping spectrometer JSON into HTML tables.
|
|
||||||
for (var i in obj[0]) {
|
|
||||||
$(dom).find('#' + i).text(obj[0][i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function graphSpectralData (obj, dom) {
|
|
||||||
// graphs the data from obj[0] into canvas at dom
|
|
||||||
var arr = [];
|
|
||||||
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'R', 'I', 'S', 'J', 'T', 'U', 'V', 'W', 'K', 'L'].forEach(function (i) {
|
|
||||||
arr.push(obj[0][i]);
|
|
||||||
});
|
|
||||||
var chart = new Chart(dom, {
|
|
||||||
type: 'line',
|
|
||||||
data: {
|
|
||||||
labels: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'R', 'I', 'S', 'J', 'T', 'U', 'V', 'W', 'K', 'L'],
|
|
||||||
datasets: [{
|
|
||||||
label: 'Spectrometer data',
|
|
||||||
data: arr
|
|
||||||
}]
|
|
||||||
},
|
|
||||||
options: {
|
|
||||||
responsive: false
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function fillLuxUv (obj, dom) {
|
|
||||||
$(dom).find('#lx').text(obj[1]);
|
|
||||||
$(dom).find('#uva').text(obj[2][0]);
|
|
||||||
$(dom).find('#uvb').text(obj[2][1]);
|
|
||||||
$(dom).find('#uvi').text(obj[2][2]);
|
|
||||||
}
|
|
||||||
@@ -1,154 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<meta charset="utf8">
|
|
||||||
<link rel="stylesheet" href="lib/bootstrap.min.css">
|
|
||||||
<link rel="stylesheet" href="stylesheet.css">
|
|
||||||
<title>TeraHz</title>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<div class="container text-center">
|
|
||||||
<h1>TeraHz</h1>
|
|
||||||
</div>
|
|
||||||
<div class="container">
|
|
||||||
<button id="update" class="btn btn-primary m-1 float-right">Get data</button>
|
|
||||||
<p id="debug">
|
|
||||||
</p>
|
|
||||||
<h3>Spectrogram</h3>
|
|
||||||
<canvas id="spectrogram" width="640px" height="480"></canvas>
|
|
||||||
<h3>Spectral readings</h3>
|
|
||||||
<table class="table table-sm" id="specter">
|
|
||||||
<thead class="thead-dark">
|
|
||||||
<tr>
|
|
||||||
<th>Band</th>
|
|
||||||
<th>Wavelength [nm]</th>
|
|
||||||
<th>Irradiance [μW/cm²]</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tr>
|
|
||||||
<td>A</td>
|
|
||||||
<td>410 nm</td>
|
|
||||||
<td id="A">---</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>B</td>
|
|
||||||
<td>435 nm</td>
|
|
||||||
<td id="B">---</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>C</td>
|
|
||||||
<td>460 nm</td>
|
|
||||||
<td id="C">---</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>D</td>
|
|
||||||
<td>485 nm</td>
|
|
||||||
<td id="D">---</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>E</td>
|
|
||||||
<td>510 nm</td>
|
|
||||||
<td id="E">---</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>F</td>
|
|
||||||
<td>535 nm</td>
|
|
||||||
<td id="F">---</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>G</td>
|
|
||||||
<td>560 nm</td>
|
|
||||||
<td id="G">---</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>H</td>
|
|
||||||
<td>585 nm</td>
|
|
||||||
<td id="H">---</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>R</td>
|
|
||||||
<td>610 nm</td>
|
|
||||||
<td id="R">---</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>I</td>
|
|
||||||
<td>645 nm</td>
|
|
||||||
<td id="I">---</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>S</td>
|
|
||||||
<td>680 nm</td>
|
|
||||||
<td id="S">---</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>J</td>
|
|
||||||
<td>705 nm</td>
|
|
||||||
<td id="J">---</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>T</td>
|
|
||||||
<td>730 nm</td>
|
|
||||||
<td id="T">---</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>U</td>
|
|
||||||
<td>760 nm</td>
|
|
||||||
<td id="U">---</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="table-secondary">
|
|
||||||
<td>V</td>
|
|
||||||
<td>810 nm</td>
|
|
||||||
<td id="V">---</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="table-secondary">
|
|
||||||
<td>W</td>
|
|
||||||
<td>860 nm</td>
|
|
||||||
<td id="W">---</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="table-secondary">
|
|
||||||
<td>K</td>
|
|
||||||
<td>900 nm</td>
|
|
||||||
<td id="K">---</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="table-secondary">
|
|
||||||
<td>L</td>
|
|
||||||
<td>940 nm</td>
|
|
||||||
<td id="L">---</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
<br>
|
|
||||||
<h3>Lux and UV readings</h3>
|
|
||||||
<table class="table" id="luxuv">
|
|
||||||
<thead class="thead-dark">
|
|
||||||
<tr>
|
|
||||||
<th>Parameter</th>
|
|
||||||
<th>Value</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tr>
|
|
||||||
<td>Illuminance [lx]</td>
|
|
||||||
<td id="lx">---</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>UVA irradiance [μW/cm²]</td>
|
|
||||||
<td id="uva">---</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>UVB irradiance [μW/cm²]</td>
|
|
||||||
<td id="uvb">---</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>UVA/UVB average [μW/cm²]</td>
|
|
||||||
<td id="uvi">---</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
<script src="lib/bootstrap.bundle.min.js"></script>
|
|
||||||
<script src="lib/jquery-3.4.1.min.js"></script>
|
|
||||||
<script src="lib/chart.bundle.js"></script>
|
|
||||||
<script src="frontend.js"></script>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
/*!
|
|
||||||
* Bootstrap v4.3.1 (https://getbootstrap.com/)
|
|
||||||
* Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
|
||||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
|
||||||
*/
|
|
||||||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery")):"function"==typeof define&&define.amd?define(["exports","jquery"],e):e((t=t||self).bootstrap={},t.jQuery)}(this,function(t,p){"use strict";function i(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),t}function l(o){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},e=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(e=e.concat(Object.getOwnPropertySymbols(r).filter(function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),e.forEach(function(t){var e,n,i;e=o,i=r[n=t],n in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i})}return o}p=p&&p.hasOwnProperty("default")?p.default:p;var e="transitionend";function n(t){var e=this,n=!1;return p(this).one(m.TRANSITION_END,function(){n=!0}),setTimeout(function(){n||m.triggerTransitionEnd(e)},t),this}var m={TRANSITION_END:"bsTransitionEnd",getUID:function(t){for(;t+=~~(1e6*Math.random()),document.getElementById(t););return t},getSelectorFromElement:function(t){var e=t.getAttribute("data-target");if(!e||"#"===e){var n=t.getAttribute("href");e=n&&"#"!==n?n.trim():""}try{return document.querySelector(e)?e:null}catch(t){return null}},getTransitionDurationFromElement:function(t){if(!t)return 0;var e=p(t).css("transition-duration"),n=p(t).css("transition-delay"),i=parseFloat(e),o=parseFloat(n);return i||o?(e=e.split(",")[0],n=n.split(",")[0],1e3*(parseFloat(e)+parseFloat(n))):0},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(t){p(t).trigger(e)},supportsTransitionEnd:function(){return Boolean(e)},isElement:function(t){return(t[0]||t).nodeType},typeCheckConfig:function(t,e,n){for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)){var o=n[i],r=e[i],s=r&&m.isElement(r)?"element":(a=r,{}.toString.call(a).match(/\s([a-z]+)/i)[1].toLowerCase());if(!new RegExp(o).test(s))throw new Error(t.toUpperCase()+': Option "'+i+'" provided type "'+s+'" but expected type "'+o+'".')}var a},findShadowRoot:function(t){if(!document.documentElement.attachShadow)return null;if("function"!=typeof t.getRootNode)return t instanceof ShadowRoot?t:t.parentNode?m.findShadowRoot(t.parentNode):null;var e=t.getRootNode();return e instanceof ShadowRoot?e:null}};p.fn.emulateTransitionEnd=n,p.event.special[m.TRANSITION_END]={bindType:e,delegateType:e,handle:function(t){if(p(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}};var o="alert",r="bs.alert",a="."+r,c=p.fn[o],h={CLOSE:"close"+a,CLOSED:"closed"+a,CLICK_DATA_API:"click"+a+".data-api"},u="alert",f="fade",d="show",g=function(){function i(t){this._element=t}var t=i.prototype;return t.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},t.dispose=function(){p.removeData(this._element,r),this._element=null},t._getRootElement=function(t){var e=m.getSelectorFromElement(t),n=!1;return e&&(n=document.querySelector(e)),n||(n=p(t).closest("."+u)[0]),n},t._triggerCloseEvent=function(t){var e=p.Event(h.CLOSE);return p(t).trigger(e),e},t._removeElement=function(e){var n=this;if(p(e).removeClass(d),p(e).hasClass(f)){var t=m.getTransitionDurationFromElement(e);p(e).one(m.TRANSITION_END,function(t){return n._destroyElement(e,t)}).emulateTransitionEnd(t)}else this._destroyElement(e)},t._destroyElement=function(t){p(t).detach().trigger(h.CLOSED).remove()},i._jQueryInterface=function(n){return this.each(function(){var t=p(this),e=t.data(r);e||(e=new i(this),t.data(r,e)),"close"===n&&e[n](this)})},i._handleDismiss=function(e){return function(t){t&&t.preventDefault(),e.close(this)}},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}}]),i}();p(document).on(h.CLICK_DATA_API,'[data-dismiss="alert"]',g._handleDismiss(new g)),p.fn[o]=g._jQueryInterface,p.fn[o].Constructor=g,p.fn[o].noConflict=function(){return p.fn[o]=c,g._jQueryInterface};var _="button",v="bs.button",y="."+v,E=".data-api",b=p.fn[_],w="active",C="btn",T="focus",S='[data-toggle^="button"]',D='[data-toggle="buttons"]',I='input:not([type="hidden"])',A=".active",O=".btn",N={CLICK_DATA_API:"click"+y+E,FOCUS_BLUR_DATA_API:"focus"+y+E+" blur"+y+E},k=function(){function n(t){this._element=t}var t=n.prototype;return t.toggle=function(){var t=!0,e=!0,n=p(this._element).closest(D)[0];if(n){var i=this._element.querySelector(I);if(i){if("radio"===i.type)if(i.checked&&this._element.classList.contains(w))t=!1;else{var o=n.querySelector(A);o&&p(o).removeClass(w)}if(t){if(i.hasAttribute("disabled")||n.hasAttribute("disabled")||i.classList.contains("disabled")||n.classList.contains("disabled"))return;i.checked=!this._element.classList.contains(w),p(i).trigger("change")}i.focus(),e=!1}}e&&this._element.setAttribute("aria-pressed",!this._element.classLLine truncated
|
|
||||||
//# sourceMappingURL=bootstrap.bundle.min.js.map
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"version":3,"sources":["../../js/src/util.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/carousel.js","../../js/src/collapse.js","../../node_modules/popper.js/dist/esm/popper.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/tools/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/src/index.js"],"names":["TRANSITION_END","transitionEndEmulator","duration","_this","this","called","$","one","Util","setTimeout","triggerTransitionEnd","getUID","prefix","Math","random","document","getElementById","getSelectorFromElement","element","selector","getAttribute","hrefAttr","trim","querySelector","err","getTransitionDurationFromElement","transitionDuration","css","transitionDelay","floatTransitionDuration","parseFloat","floatTransitionDelay","split","reflow","offsetHeight","trigger","supportsTransitionEnd","Boolean","isElement","obj","nodeType","typeCheckConfig","componentName","config","configTypes","property","Object","prototype","hasOwnProperty","call","expectedTypes","value","valueType","toString","match","toLowerCase","RegExp","test","Error","toUpperCase","findShadowRoot","documentElement","attachShadow","getRootNode","ShadowRoot","parentNode","root","fn","emulateTransitionEnd","event","special","bindType","delegateType","handle","target","is","handleObj","handler","apply","arguments","NAME","DATA_KEY","EVENT_KEY","JQUERY_NO_CONFLICT","Event","CLOSE","CLOSED","CLICK_DATA_API","ClassName","Alert","_element","close","rootElement","_getRootElement","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","parent","closest","closeEvent","removeClass","hasClass","_destroyElement","detach","remove","_jQueryInterface","each","$element","data","_handleDismiss","alertInstance","preventDefault","on","Constructor","noConflict","DATA_API_KEY","Selector","FOCUS_BLUR_DATA_API","Button","toggle","triggerChangeEvent","addAriaPressed","input","type","checked","classList","contains","activeElement","hasAttribute","focus","setAttribute","toggleClass","button","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","Direction","SLIDE","SLID","KEYDOWN","MOUSEENTER","MOUSELEAVE","TOUCHSTART","TOUCHMOVE","TOUCHEND","POINTERDOWN","POINTERUP","DRAG_START","LOAD_DATA_API","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","window","PointerEvent","MSPointerEvent","_addEventListeners","next","_slide","nextWhenVisible","hidden","prev","cycle","clearInterval","setInterval","visibilityState","bind","to","index","activeIndex","_getItemIndex","length","direction","off","_objectSpread","_handleSwipe","absDeltax","abs","_this2","_keydown","_addTouchEventListeners","_this3","start","originalEvent","pointerType","clientX","touches","end","clearTimeout","querySelectorAll","e","add","tagName","which","slice","indexOf","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","from","_setActiveIndicatorElement","indicators","nextIndicator","children","addClass","directionalClassName","orderClassName","_this4","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","nextElementInterval","parseInt","defaultInterval","action","TypeError","ride","_dataApiClickHandler","slideIndex","carousels","i","len","$carousel","SHOW","SHOWN","HIDE","HIDDEN","Dimension","Collapse","_isTransitioning","_triggerArray","id","toggleList","elem","filterElement","filter","foundElem","_selector","push","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","not","startEvent","dimension","_getDimension","style","attr","setTransitioning","scrollSize","getBoundingClientRect","triggerArrayLength","isTransitioning","jquery","_getTargetFromElement","triggerArray","isOpen","$this","currentTarget","$trigger","selectors","$target","isBrowser","longerTimeoutBrowsers","timeoutDuration","userAgent","debounce","Promise","resolve","then","scheduled","isFunction","functionToCheck","getStyleComputedProperty","ownerDocument","defaultView","getComputedStyle","getParentNode","nodeName","host","getScrollParent","body","_getStyleComputedProp","overflow","overflowX","overflowY","isIE11","MSInputMethodContext","documentMode","isIE10","isIE","version","getOffsetParent","noOffsetParent","offsetParent","nextElementSibling","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","range","createRange","setStart","setEnd","commonAncestorContainer","firstElementChild","element1root","getScroll","upperSide","undefined","html","scrollingElement","getBordersSize","styles","axiLine truncated
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
/*!
|
|
||||||
* Bootstrap v4.3.1 (https://getbootstrap.com/)
|
|
||||||
* Copyright 2011-2019 The Bootstrap Authors
|
|
||||||
* Copyright 2011-2019 Twitter, Inc.
|
|
||||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
|
||||||
*/:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,Line truncated
|
|
||||||
/*# sourceMappingURL=bootstrap.min.css.map */
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_root.scss","../../scss/_reboot.scss","dist/css/bootstrap.css","../../scss/vendor/_rfs.scss","bootstrap.css","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_border-radius.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss","../../scss/_tables.scss","../../scss/mixins/_table-row.scss","../../scss/_forms.scss","../../scss/mixins/_transition.scss","../../scss/mixins/_forms.scss","../../scss/mixins/_gradients.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_caret.scss","../../scss/mixins/_nav-divider.scss","../../scss/_button-group.scss","../../scss/_input-group.scss","../../scss/_custom-forms.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/_breadcrumb.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/mixins/_badge.scss","../../scss/_jumbotron.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/_media.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_close.scss","../../scss/_toasts.scss","../../scss/_modal.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/mixins/_clearfix.scss","../../scss/_spinners.scss","../../scss/utilities/_align.scss","../../scss/mixins/_background-variant.scss","../../scss/utilities/_background.scss","../../scss/utilities/_borders.scss","../../scss/utilities/_display.scss","../../scss/utilities/_embed.scss","../../scss/utilities/_flex.scss","../../scss/utilities/_float.scss","../../scss/utilities/_overflow.scss","../../scss/utilities/_position.scss","../../scss/utilities/_screenreaders.scss","../../scss/mixins/_screen-reader.scss","../../scss/utilities/_shadows.scss","../../scss/utilities/_sizing.scss","../../scss/utilities/_stretched-link.scss","../../scss/utilities/_spacing.scss","../../scss/utilities/_text.scss","../../scss/mixins/_text-truncate.scss","../../scss/mixins/_text-emphasis.scss","../../scss/mixins/_text-hide.scss","../../scss/utilities/_visibility.scss","../../scss/_print.scss"],"names":[],"mappings":"AAAA;;;;;ACAA,MAGI,OAAA,QAAA,SAAA,QAAA,SAAA,QAAA,OAAA,QAAA,MAAA,QAAA,SAAA,QAAA,SAAA,QAAA,QAAA,QAAA,OAAA,QAAA,OAAA,QAAA,QAAA,KAAA,OAAA,QAAA,YAAA,QAIA,UAAA,QAAA,YAAA,QAAA,UAAA,QAAA,OAAA,QAAA,UAAA,QAAA,SAAA,QAAA,QAAA,QAAA,OAAA,QAIA,gBAAA,EAAA,gBAAA,MAAA,gBAAA,MAAA,gBAAA,MAAA,gBAAA,OAKF,yBAAA,aAAA,CAAA,kBAAA,CAAA,UAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,KAAA,CAAA,WAAA,CAAA,UAAA,CAAA,mBAAA,CAAA,gBAAA,CAAA,iBAAA,CAAA,mBACA,wBAAA,cAAA,CAAA,KAAA,CAAA,MAAA,CAAA,QAAA,CAAA,iBAAA,CAAA,aAAA,CAAA,UCCF,ECqBA,QADA,SDjBE,WAAA,WAGF,KACE,YAAA,WACA,YAAA,KACA,yBAAA,KACA,4BAAA,YAMF,QAAA,MAAA,WAAA,OAAA,OAAA,OAAA,OAAA,KAAA,IAAA,QACE,QAAA,MAUF,KACE,OAAA,EACA,YAAA,aAAA,CAAA,kBAAA,CAAA,UAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,KAAA,CAAA,WAAA,CAAA,UAAA,CAAA,mBAAA,CAAA,gBAAA,CAAA,iBAAA,CAAA,mBEgFI,UAAA,KF9EJ,YAAA,IACA,YAAA,IACA,MAAA,QACA,WAAA,KACA,iBAAA,KGYF,sBHHE,QAAA,YASF,GACE,WAAA,YACA,OAAA,EACA,SAAA,QAaF,GAAA,GAAA,GAAA,GAAA,GAAA,GACE,WAAA,EACA,cAAA,MAOF,EACE,WAAA,EACA,cAAA,KCZF,0BDuBA,YAEE,gBAAA,UACA,wBAAA,UAAA,OAAA,gBAAA,UAAA,OACA,OAAA,KACA,cAAA,EACA,iCAAA,KAAA,yBAAA,KAGF,QACE,cAAA,KACA,WAAA,OACA,YAAA,QCjBF,GDoBA,GCrBA,GDwBE,WAAA,EACA,cAAA,KAGF,MCpBA,MACA,MAFA,MDyBE,cAAA,EAGF,GACE,YAAA,IAGF,GACE,cAAA,MACA,YAAA,EAGF,WACE,OAAA,EAAA,EAAA,KAGF,ECrBA,ODuBE,YAAA,OAGF,MEpFI,UAAA,IF6FJ,IC1BA,ID4BE,SAAA,SE/FE,UAAA,IFiGF,YAAA,EACA,eAAA,SAGF,IAAM,OAAA,OACN,IAAM,IAAA,MAON,EACE,MAAA,QACA,gBAAA,KACA,iBAAA,YI5KA,QJ+KE,MAAA,QACA,gBAAA,UAUJ,8BACE,MAAA,QACA,gBAAA,KIxLA,oCAAA,oCJ2LE,MAAA,QACA,gBAAA,KANJ,oCAUI,QAAA,EC5BJ,KACA,IDoCA,ICnCA,KDuCE,YAAA,cAAA,CAAA,KAAA,CAAA,MAAA,CAAA,QAAA,CAAA,iBAAA,CAAA,aAAA,CAAA,UErJE,UAAA,IFyJJ,IAEE,WAAA,EAEA,cAAA,KAEA,SAAA,KAQF,OAEE,OAAA,EAAA,EAAA,KAQF,IACE,eAAA,OACA,aAAA,KAGF,IAGE,SAAA,OACA,eAAA,OAQF,MACE,gBAAA,SAGF,QACE,YAAA,OACA,eAAA,OACA,MAAA,QACA,WAAA,KACA,aAAA,OAGF,GAGE,WAAA,QAQF,MAEE,QAAA,aACA,cAAA,MAMF,OAEE,cAAA,EAOF,aACE,QAAA,IAAA,OACA,QAAA,IAAA,KAAA,yBCvEF,OD0EA,MCxEA,SADA,OAEA,SD4EE,OAAA,EACA,YAAA,QEtPE,UAAA,QFwPF,YAAA,QAGF,OC1EA,MD4EE,SAAA,QAGF,OC1EA,OD4EE,eAAA,KAMF,OACE,UAAA,OC1EF,cACA,aACA,cD+EA,OAIE,mBAAA,OC9EF,6BACA,4BACA,6BDiFE,sBAKI,OAAA,QCjFN,gCACA,+BACA,gCDqFA,yBAIE,QAAA,EACA,aAAA,KCpFF,qBDuFA,kBAEE,WAAA,WACA,QAAA,EAIF,iBCvFA,2BACA,kBAFA,iBDiGE,mBAAA,QAGF,SACE,SAAA,KAEA,OAAA,SAGF,SAME,UAAA,EAEA,QAAA,EACA,OAAA,EACA,OAAA,EAKF,OACE,QAAA,MACA,MAAA,KACA,UAAA,KACA,QAAA,EACA,cAAA,MElSI,UAAA,OFoSJ,YAAA,QACA,MAAA,QACA,YAAA,OAGF,SACE,eAAA,SGtGF,yCFGA,yCDyGE,OAAA,KGvGF,cH+GE,eAAA,KACA,mBAAA,KG3GF,yCHmHE,mBAAA,KAQF,6BACE,KAAA,QACA,mBAAA,OAOF,OACLine truncated
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
|
|
||||||
!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+Line truncated
|
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"org":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"name": "How to build a website"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 2,
|
||||||
|
"name": "How to build a website 2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 2,
|
||||||
|
"name": "How to build a website 3"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
#A {
|
|
||||||
background-color: #7e00db;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
#B {
|
|
||||||
background-color: #2300ff;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
#C {
|
|
||||||
background-color: #007bff;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
#D {
|
|
||||||
background-color: #00eaff;
|
|
||||||
}
|
|
||||||
|
|
||||||
#E {
|
|
||||||
background-color: #00ff00;
|
|
||||||
}
|
|
||||||
|
|
||||||
#F {
|
|
||||||
background-color: #70ff00;
|
|
||||||
}
|
|
||||||
|
|
||||||
#G {
|
|
||||||
background-color: #c3ff00;
|
|
||||||
}
|
|
||||||
|
|
||||||
#H {
|
|
||||||
background-color: #ffef00;
|
|
||||||
}
|
|
||||||
|
|
||||||
#R {
|
|
||||||
background-color: #ff9b00;
|
|
||||||
}
|
|
||||||
|
|
||||||
#I, #S {
|
|
||||||
background-color: #ff0000;
|
|
||||||
}
|
|
||||||
|
|
||||||
#J {
|
|
||||||
background-color: #f60000;
|
|
||||||
}
|
|
||||||
|
|
||||||
#T {
|
|
||||||
background-color: #c80000;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
#U {
|
|
||||||
background-color: #8d0000;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<!-- Bootstrap CSS -->
|
||||||
|
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
|
||||||
|
|
||||||
|
<title>Spektrometer
|
||||||
|
</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1><div class="p-3 mb-2 bg-primary text-white">Spektrometer</div></h1>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<button type="button" class="btn btn-dark btn-lg btn-block">Pridobi rezultate
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div id={{ chartID|safe }} class="chart" style="height: 100px; width: 500px"></div>
|
||||||
|
<script>
|
||||||
|
var chart_id = {{ chartID|safe }}
|
||||||
|
var series = {{ series|safe }}
|
||||||
|
var title = {{ title|safe }}
|
||||||
|
var xAxis = {{ xAxis|safe }}
|
||||||
|
var yAxis = {{ yAxis|safe }}
|
||||||
|
var chart = {{ chart|safe }}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<!-- Optional JavaScript -->
|
||||||
|
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
|
||||||
|
<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
|
||||||
|
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
|
||||||
|
<script src="http://code.highcharts.com/highcharts.js"></script>
|
||||||
|
<script src="../static/graph.js"></script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script type = "text/javascript" src = "/static/bootstrap.min.js"></script>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
#main.py - the main program file of the TeraHz project
|
||||||
|
#This code is licensed under 3-clause BSD licensed
|
||||||
|
import serial as ser
|
||||||
|
|
||||||
|
#global config
|
||||||
|
# TODO: move this to another file
|
||||||
|
uartpath = '/dev/ttyUSB0'
|
||||||
|
uartbaud = 115200
|
||||||
|
uarttout = 5
|
||||||
|
|
||||||
|
print('TeraHz project')
|
||||||
|
print('Accessing the serial port')
|
||||||
|
|
||||||
|
sp = 'blank'
|
||||||
|
|
||||||
|
try:
|
||||||
|
sp = ser.Serial(uartpath, uartbaud, timeout=uarttout)
|
||||||
|
except Exception as e:
|
||||||
|
print('Connection to serial port at {} failed!'.format(uartpath))
|
||||||
|
raise e
|
||||||
|
exit()
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
site_name: TeraHz Documentation
|
|
||||||
theme: readthedocs
|
|
||||||
nav:
|
|
||||||
- Start page: 'index.md'
|
|
||||||
- Build guide: 'build.md'
|
|
||||||
- Development-stable dependencies: 'dependencies.md'
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
version: 2
|
|
||||||
mkdocs:
|
|
||||||
configuration: mkdocs.yml
|
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
# getcdata.py - fetch the calibrated data from the AS7265x module
|
# getcdata.py - fetch the calibrated data from the AS7265x module
|
||||||
# All code in this file is licensed under the ISC license, provided in LICENSE.txt
|
# this program is 3-clause BSD license
|
||||||
|
|
||||||
import serial as ser
|
import serial as ser
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|||||||