Initial Commit
This commit is contained in:
216
WellDataEmpty.sql
Normal file
216
WellDataEmpty.sql
Normal file
@@ -0,0 +1,216 @@
|
||||
-- MySQL dump 10.15 Distrib 10.0.12-MariaDB, for debian-linux-gnu (armv6l)
|
||||
--
|
||||
-- Host: localhost Database: WellData
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.0.12-MariaDB-1~wheezy-log
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `Event_List`
|
||||
--
|
||||
CREATE DATABASE IF NOT EXISTS WellData;
|
||||
USE WellData;
|
||||
DROP TABLE IF EXISTS `Event_List`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `Event_List` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`device_name` varchar(45) DEFAULT NULL,
|
||||
`type` varchar(45) DEFAULT NULL,
|
||||
`cond` varchar(45) DEFAULT NULL,
|
||||
`value` float DEFAULT NULL,
|
||||
`datetime` datetime DEFAULT NULL,
|
||||
`tag` varchar(45) DEFAULT NULL,
|
||||
`stroke_number` int(16) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=55 DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Dumping data for table `Event_List`
|
||||
--
|
||||
|
||||
LOCK TABLES `Event_List` WRITE;
|
||||
/*!40000 ALTER TABLE `Event_List` DISABLE KEYS */;
|
||||
/*!40000 ALTER TABLE `Event_List` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
--
|
||||
-- Table structure for table `Hist_Day`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `Hist_Day`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `Hist_Day` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`gauge_date` datetime DEFAULT NULL,
|
||||
`percent_run` float DEFAULT NULL,
|
||||
`kWh` float DEFAULT NULL,
|
||||
`electricity_cost` float DEFAULT NULL,
|
||||
`peak_load` float DEFAULT NULL,
|
||||
`min_load` float DEFAULT NULL,
|
||||
`average_SPM` float DEFAULT NULL,
|
||||
`production_calculated` float DEFAULT NULL,
|
||||
`full_card_production` float DEFAULT NULL,
|
||||
`polished_rod_HP` float DEFAULT NULL,
|
||||
`lifting_cost` float DEFAULT NULL,
|
||||
`fluid_above_pump` float DEFAULT NULL,
|
||||
`pump_intake_pressure` float DEFAULT NULL,
|
||||
`kWh_regen` float DEFAULT NULL,
|
||||
`inflow_rate` float DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=79 DEFAULT CHARSET=latin1;
|
||||
|
||||
--
|
||||
-- Dumping data for table `Hist_Day`
|
||||
--
|
||||
|
||||
LOCK TABLES `Hist_Day` WRITE;
|
||||
/*!40000 ALTER TABLE `Hist_Day` DISABLE KEYS */;
|
||||
/*!40000 ALTER TABLE `Hist_Day` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
--
|
||||
-- Table structure for table `Well_Test`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `Well_Test`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `Well_Test` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`test_date` datetime DEFAULT NULL,
|
||||
`test_volume_oil` float DEFAULT NULL,
|
||||
`test_volume_water` float DEFAULT NULL,
|
||||
`test_volume_gas` float DEFAULT NULL,
|
||||
`k_factor` float DEFAULT NULL,
|
||||
`projected_volume_oil` float DEFAULT NULL,
|
||||
`projected_volume_water` float DEFAULT NULL,
|
||||
`api_gravity_oil` float DEFAULT NULL,
|
||||
`sg_oil` float DEFAULT NULL,
|
||||
`sg_water` float DEFAULT NULL,
|
||||
`test_hours` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Dumping data for table `Well_Test`
|
||||
--
|
||||
|
||||
LOCK TABLES `Well_Test` WRITE;
|
||||
/*!40000 ALTER TABLE `Well_Test` DISABLE KEYS */;
|
||||
/*!40000 ALTER TABLE `Well_Test` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
--
|
||||
-- Table structure for table `config`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `config`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `config` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`device_type` varchar(45) DEFAULT NULL,
|
||||
`ip_address` varchar(45) DEFAULT NULL,
|
||||
`dateChanged` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Dumping data for table `config`
|
||||
--
|
||||
|
||||
|
||||
DROP TABLE IF EXISTS `Notes`;
|
||||
|
||||
CREATE TABLE `Notes` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT ,
|
||||
`author` VARCHAR(64) NULL ,
|
||||
`note` VARCHAR(512) NULL ,
|
||||
`datetime` TIMESTAMP NULL DEFAULT NOW() ,
|
||||
`type` INT NULL ,
|
||||
`associated_stroke` INT NULL ,
|
||||
`deleted` INT NULL DEFAULT 0 ,
|
||||
PRIMARY KEY (`id`) );
|
||||
|
||||
|
||||
-- Dump completed on 2015-02-25 20:36:45
|
||||
DROP TABLE IF EXISTS `note_types`;
|
||||
|
||||
CREATE TABLE `WellData`.`note_types` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT ,
|
||||
`type` VARCHAR(64) NULL ,
|
||||
`deleted` INT NULL DEFAULT 0 ,
|
||||
PRIMARY KEY (`id`) );
|
||||
|
||||
|
||||
INSERT INTO `WellData`.`note_types` (`id`, `type`) VALUES ('1', 'Downtime Explanation');
|
||||
INSERT INTO `WellData`.`note_types` (`id`, `type`) VALUES ('2', 'Configuration Change');
|
||||
INSERT INTO `WellData`.`note_types` (`id`, `type`) VALUES ('3', 'Info');
|
||||
INSERT INTO `WellData`.`note_types` (`id`, `type`) VALUES ('4', 'Other');
|
||||
|
||||
DROP TABLE IF EXISTS `fluid_shot`;
|
||||
|
||||
CREATE TABLE `WellData`.`fluid_shot` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT,
|
||||
`shot_datetime` DATETIME NULL,
|
||||
`pump_intake_pressure` FLOAT NULL,
|
||||
`fluid_gradient` FLOAT NULL,
|
||||
`friction` FLOAT NULL,
|
||||
PRIMARY KEY (`id`));
|
||||
|
||||
|
||||
CREATE TABLE `card_history` (
|
||||
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`Stroke_Time` datetime DEFAULT NULL,
|
||||
`Card_ID` int(11) NOT NULL,
|
||||
`Num_Tapers` int(11) DEFAULT NULL,
|
||||
`Num_Points` int(11) DEFAULT NULL,
|
||||
`Card_Type` varchar(45) DEFAULT NULL,
|
||||
`Tubing_Head_Pressure` float DEFAULT NULL,
|
||||
`Fluid_Gradient` float DEFAULT NULL,
|
||||
`Stuffing_Box_Friction` float DEFAULT NULL,
|
||||
`dt` float DEFAULT NULL,
|
||||
`Downhole_Max_Load` float DEFAULT NULL,
|
||||
`Downhole_Min_Load` float DEFAULT NULL,
|
||||
`Downhole_Max_Position` float DEFAULT NULL,
|
||||
`Downhole_Min_Position` float DEFAULT NULL,
|
||||
`Downhole_Gross_Stroke` float DEFAULT NULL,
|
||||
`Downhole_Adjusted_Gross_Stroke` float DEFAULT NULL,
|
||||
`Downhole_Net_Stroke` float DEFAULT NULL,
|
||||
`Downhole_Fluid_Load` float DEFAULT NULL,
|
||||
`Surface_Max_Load` float DEFAULT NULL,
|
||||
`Surface_Min_Load` float DEFAULT NULL,
|
||||
`Surface_Max_Position` float DEFAULT NULL,
|
||||
`Surface_Min_Position` float DEFAULT NULL,
|
||||
`Tubing_Movement` float DEFAULT NULL,
|
||||
`Surface_Stroke_Length` float DEFAULT NULL,
|
||||
`Fillage_Percent` float DEFAULT NULL,
|
||||
`Polished_Rod_HP` float DEFAULT NULL,
|
||||
`Pump_HP` float DEFAULT NULL,
|
||||
`SPM` float DEFAULT NULL,
|
||||
`Fluid_Level` float DEFAULT NULL,
|
||||
`Pump_Intake_Pressure` float DEFAULT NULL,
|
||||
`Stroke_Production` float DEFAULT NULL,
|
||||
`Drive_Torque_Mode` int(11) DEFAULT NULL,
|
||||
`Drive_Reference` float DEFAULT NULL,
|
||||
`Surface_Position` blob,
|
||||
`Surface_Load` blob,
|
||||
`Downhole_Position` blob,
|
||||
`Downhole_Load` blob,
|
||||
PRIMARY KEY (`id`,`Card_ID`)
|
||||
);
|
||||
63
checkCurrentVersion.py
Normal file
63
checkCurrentVersion.py
Normal file
@@ -0,0 +1,63 @@
|
||||
import boto3
|
||||
import re
|
||||
import zipfile
|
||||
import os
|
||||
import sys
|
||||
|
||||
#localFilename = "/Users/patrickjmcd/Dropbox (Henry Pump)/Patrick McDonagh/POConsole/POConsole/currentVersion.txt"
|
||||
outputFolder = "/home/poconsole/src"
|
||||
localFilename = "{0}/{1}".format(outputFolder, "currentVersion.txt")
|
||||
|
||||
#s3 = boto3.resource('s3')
|
||||
client = boto3.client('s3')
|
||||
|
||||
def checkUpdateNeeded(force = False):
|
||||
currentVersionObj = client.get_object(Bucket='henrypumpdata', Key='currentVersion.txt')
|
||||
s3currentVersionStr = currentVersionObj['Body']._raw_stream.data
|
||||
s3regex = re.search("(\d+)", s3currentVersionStr)
|
||||
|
||||
s3cvInt = int(s3regex.groups()[0])
|
||||
|
||||
try:
|
||||
localCurrentVersionStr = ""
|
||||
with open(localFilename, 'r') as f:
|
||||
localCurrentVersionStr = f.read()
|
||||
localregex = re.search("(\d+)", localCurrentVersionStr)
|
||||
localcvInt = int(localregex.groups()[0])
|
||||
except:
|
||||
localcvInt = 0
|
||||
|
||||
|
||||
updateNeeded = not ( s3cvInt == localcvInt)
|
||||
|
||||
if updateNeeded or force:
|
||||
try:
|
||||
targetFile = "{0}.zip".format(s3cvInt)
|
||||
# if updateNeeded:
|
||||
# print "Update needed to get {0}".format(targetFile)
|
||||
# if force:
|
||||
# print "Forcing update to get {0}".format(targetFile)
|
||||
downloadCmd = client.download_file('henrypumpdata', targetFile, targetFile)
|
||||
zfile = zipfile.ZipFile(targetFile)
|
||||
zfile.extractall(outputFolder)
|
||||
# for name in zfile.namelist():
|
||||
# (dirname,filename) = os.path.split(name)
|
||||
# if not (dirname[:2] == "__"):
|
||||
# print "Decompressing {0} on {1}.".format(filename,dirname)
|
||||
# if not os.path.exists("{0}/{1}".format(outputFolder, dirname)):
|
||||
# print "Creating {0}/{1}".format(outputFolder, dirname)
|
||||
# os.makedirs("{0}/{1}".format(outputFolder, dirname))
|
||||
# zfile.extract(name, "{0}/{1}".format(outputFolder, dirname))
|
||||
with open(localFilename, 'w+') as f2:
|
||||
f2.write(str(targetFile.replace(".zip","")))
|
||||
return {"status":"success", "message":"Files updated!"}
|
||||
except:
|
||||
return {"status":"error", "message":"error unzipping files"}
|
||||
else:
|
||||
return {"status":"success", "message":"All files are up to date!"}
|
||||
|
||||
if __name__ == '__main__':
|
||||
if len(sys.argv) > 1:
|
||||
print checkUpdateNeeded(True)
|
||||
else:
|
||||
print checkUpdateNeeded()
|
||||
3
config
Normal file
3
config
Normal file
@@ -0,0 +1,3 @@
|
||||
[default]
|
||||
aws_access_key_id = AKIAIJTEFVJEW2236CQQ
|
||||
aws_secret_access_key = 4rrOtq4mIb9g6E5MxXh8LnmlJMtr9GzNlN7sG25Q
|
||||
125
default
Normal file
125
default
Normal file
@@ -0,0 +1,125 @@
|
||||
# You may add here your
|
||||
# server {
|
||||
# ...
|
||||
# }
|
||||
# statements for each of your virtual hosts to this file
|
||||
|
||||
##
|
||||
# You should look at the following URL's in order to grasp a solid understanding
|
||||
# of Nginx configuration files in order to fully unleash the power of Nginx.
|
||||
# http://wiki.nginx.org/Pitfalls
|
||||
# http://wiki.nginx.org/QuickStart
|
||||
# http://wiki.nginx.org/Configuration
|
||||
#
|
||||
# Generally, you will want to move this file somewhere, and start with a clean
|
||||
# file but keep this around for reference. Or just disable in sites-enabled.
|
||||
#
|
||||
# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
|
||||
##
|
||||
|
||||
server {
|
||||
listen 80 default_server;
|
||||
#listen [::]:80 default_server ipv6only=on;
|
||||
|
||||
root /usr/share/nginx/html;
|
||||
index index.html index.htm;
|
||||
|
||||
# Make site accessible from http://localhost/
|
||||
server_name localhost;
|
||||
|
||||
location ~ ^/(images/|img/|javascript/|js/|css/|stylesheets/|flash/|media/|static/|robots.txt|humans.txt|favicon.ico|navbar.html) {
|
||||
root /home/poconsole/src/www/public;
|
||||
access_log off;
|
||||
expires max;
|
||||
}
|
||||
|
||||
location / {
|
||||
# First attempt to serve request as file, then
|
||||
# as directory, then fall back to displaying a 404.
|
||||
#try_files $uri $uri/ =404;
|
||||
proxy_pass http://127.0.0.1:3000/;
|
||||
# Uncomment to enable naxsi on this location
|
||||
# include /etc/nginx/naxsi.rules
|
||||
}
|
||||
|
||||
location ~ \.(csv) {
|
||||
root /mnt/usb/CSV;
|
||||
autoindex on;
|
||||
}
|
||||
|
||||
|
||||
# Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests
|
||||
#location /RequestDenied {
|
||||
# proxy_pass http://127.0.0.1:8080;
|
||||
#}
|
||||
|
||||
#error_page 404 /404.html;
|
||||
|
||||
# redirect server error pages to the static page /50x.html
|
||||
#
|
||||
#error_page 500 502 503 504 /50x.html;
|
||||
#location = /50x.html {
|
||||
# root /usr/share/nginx/html;
|
||||
#}
|
||||
|
||||
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
|
||||
#
|
||||
#location ~ \.php$ {
|
||||
# fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
||||
# # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
|
||||
#
|
||||
# # With php5-cgi alone:
|
||||
# fastcgi_pass 127.0.0.1:9000;
|
||||
# # With php5-fpm:
|
||||
# fastcgi_pass unix:/var/run/php5-fpm.sock;
|
||||
# fastcgi_index index.php;
|
||||
# include fastcgi_params;
|
||||
#}
|
||||
|
||||
# deny access to .htaccess files, if Apache's document root
|
||||
# concurs with nginx's one
|
||||
#
|
||||
#location ~ /\.ht {
|
||||
# deny all;
|
||||
#}
|
||||
}
|
||||
|
||||
|
||||
# another virtual host using mix of IP-, name-, and port-based configuration
|
||||
#
|
||||
#server {
|
||||
# listen 8000;
|
||||
# listen somename:8080;
|
||||
# server_name somename alias another.alias;
|
||||
# root html;
|
||||
# index index.html index.htm;
|
||||
#
|
||||
# location / {
|
||||
# try_files $uri $uri/ =404;
|
||||
# }
|
||||
#}
|
||||
|
||||
|
||||
# HTTPS server
|
||||
#
|
||||
#server {
|
||||
# listen 443;
|
||||
# server_name localhost;
|
||||
#
|
||||
# root html;
|
||||
# index index.html index.htm;
|
||||
#
|
||||
# ssl on;
|
||||
# ssl_certificate cert.pem;
|
||||
# ssl_certificate_key cert.key;
|
||||
#
|
||||
# ssl_session_timeout 5m;
|
||||
#
|
||||
# ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
|
||||
# ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
|
||||
# ssl_prefer_server_ciphers on;
|
||||
#
|
||||
# location / {
|
||||
# try_files $uri $uri/ =404;
|
||||
# }
|
||||
#}
|
||||
117
dhcpd.conf
Normal file
117
dhcpd.conf
Normal file
@@ -0,0 +1,117 @@
|
||||
#
|
||||
# Sample configuration file for ISC dhcpd for Debian
|
||||
#
|
||||
#
|
||||
|
||||
# The ddns-updates-style parameter controls whether or not the server will
|
||||
# attempt to do a DNS update when a lease is confirmed. We default to the
|
||||
# behavior of the version 2 packages ('none', since DHCP v2 didn't
|
||||
# have support for DDNS.)
|
||||
ddns-update-style none;
|
||||
|
||||
# option definitions common to all supported networks...
|
||||
#option domain-name "example.org";
|
||||
#option domain-name-servers ns1.example.org, ns2.example.org;
|
||||
|
||||
default-lease-time 600;
|
||||
max-lease-time 7200;
|
||||
|
||||
# If this DHCP server is the official DHCP server for the local
|
||||
# network, the authoritative directive should be uncommented.
|
||||
authoritative;
|
||||
|
||||
# Use this to send dhcp log messages to a different log file (you also
|
||||
# have to hack syslog.conf to complete the redirection).
|
||||
log-facility local7;
|
||||
|
||||
# No service will be given on this subnet, but declaring it helps the
|
||||
# DHCP server to understand the network topology.
|
||||
|
||||
#subnet 10.152.187.0 netmask 255.255.255.0 {
|
||||
#}
|
||||
|
||||
# This is a very basic subnet declaration.
|
||||
|
||||
#subnet 10.254.239.0 netmask 255.255.255.224 {
|
||||
# range 10.254.239.10 10.254.239.20;
|
||||
# option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
|
||||
#}
|
||||
|
||||
# This declaration allows BOOTP clients to get dynamic addresses,
|
||||
# which we don't really recommend.
|
||||
|
||||
#subnet 10.254.239.32 netmask 255.255.255.224 {
|
||||
# range dynamic-bootp 10.254.239.40 10.254.239.60;
|
||||
# option broadcast-address 10.254.239.31;
|
||||
# option routers rtr-239-32-1.example.org;
|
||||
#}
|
||||
|
||||
# A slightly different configuration for an internal subnet.
|
||||
#subnet 10.5.5.0 netmask 255.255.255.224 {
|
||||
# range 10.5.5.26 10.5.5.30;
|
||||
# option domain-name-servers ns1.internal.example.org;
|
||||
# option domain-name "internal.example.org";
|
||||
# option routers 10.5.5.1;
|
||||
# option broadcast-address 10.5.5.31;
|
||||
# default-lease-time 600;
|
||||
# max-lease-time 7200;
|
||||
#}
|
||||
|
||||
# Hosts which require special configuration options can be listed in
|
||||
# host statements. If no address is specified, the address will be
|
||||
# allocated dynamically (if possible), but the host-specific information
|
||||
# will still come from the host declaration.
|
||||
|
||||
#host passacaglia {
|
||||
# hardware ethernet 0:0:c0:5d:bd:95;
|
||||
# filename "vmunix.passacaglia";
|
||||
# server-name "toccata.fugue.com";
|
||||
#}
|
||||
|
||||
# Fixed IP addresses can also be specified for hosts. These addresses
|
||||
# should not also be listed as being available for dynamic assignment.
|
||||
# Hosts for which fixed IP addresses have been specified can boot using
|
||||
# BOOTP or DHCP. Hosts for which no fixed address is specified can only
|
||||
# be booted with DHCP, unless there is an address range on the subnet
|
||||
# to which a BOOTP client is connected which has the dynamic-bootp flag
|
||||
# set.
|
||||
#host fantasia {
|
||||
# hardware ethernet 08:00:07:26:c0:a5;
|
||||
# fixed-address fantasia.fugue.com;
|
||||
#}
|
||||
|
||||
# You can declare a class of clients and then do address allocation
|
||||
# based on that. The example below shows a case where all clients
|
||||
# in a certain class get addresses on the 10.17.224/24 subnet, and all
|
||||
# other clients get addresses on the 10.0.29/24 subnet.
|
||||
|
||||
#class "foo" {
|
||||
# match if substring (option vendor-class-identifier, 0, 4) = "SUNW";
|
||||
#}
|
||||
|
||||
#shared-network 224-29 {
|
||||
# subnet 10.17.224.0 netmask 255.255.255.0 {
|
||||
# option routers rtr-224.example.org;
|
||||
# }
|
||||
# subnet 10.0.29.0 netmask 255.255.255.0 {
|
||||
# option routers rtr-29.example.org;
|
||||
# }
|
||||
# pool {
|
||||
# allow members of "foo";
|
||||
# range 10.17.224.10 10.17.224.250;
|
||||
# }
|
||||
# pool {
|
||||
# deny members of "foo";
|
||||
# range 10.0.29.10 10.0.29.230;
|
||||
# }
|
||||
#}
|
||||
|
||||
subnet 192.168.4.0 netmask 255.255.255.0 {
|
||||
range 192.168.4.10 192.168.4.50;
|
||||
option broadcast-address 192.168.4.255;
|
||||
option routers 192.168.4.1;
|
||||
default-lease-time 600;
|
||||
max-lease-time 7200;
|
||||
option domain-name "local";
|
||||
option domain-name-servers 8.8.8.8, 8.8.4.4;
|
||||
}
|
||||
1
henryPumpDev.pub
Normal file
1
henryPumpDev.pub
Normal file
@@ -0,0 +1 @@
|
||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDyVaBSF9W5mZWnJp2ZjEdBoBH3NRvQwowuOoeWB/jEhCd/LWvmWkhZRB8jKzpc0vnNPOIGcVoMEYNir9QT4HbElCH3B5Wg9kqI4+MWfMgQorGjVGD3ukvsGqyj1LKrSLR91Nxy49yvwgMEJMFBT0NqnfsHKbfe88TZYb30/1+lE9MqTlUuF3KBTpv2Mr+Zbyd6nWnqDN9cq7MScaxQnlvZTaln38/eMIVeyTQ2BOjKYDPe0Y2lBzxnFQKxG+t6zwk/Fdli8U+AG791VephqPD34CuKbfnsX7kMHSJEhlAk7JkNz9BE9lyR4cp41qHF8gNqehdl4HWU0DZ6DKuxlGpL Henry Pump Developer Key
|
||||
20
hostapd
Normal file
20
hostapd
Normal file
@@ -0,0 +1,20 @@
|
||||
# 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=""
|
||||
13
hostapd.conf
Normal file
13
hostapd.conf
Normal file
@@ -0,0 +1,13 @@
|
||||
interface=wlan0
|
||||
driver=nl80211
|
||||
ssid=HenryPOC
|
||||
hw_mode=g
|
||||
channel=6
|
||||
macaddr_acl=0
|
||||
auth_algs=1
|
||||
ignore_broadcast_ssid=0
|
||||
wpa=2
|
||||
wpa_passphrase=henrypump
|
||||
wpa_key_mgmt=WPA-PSK
|
||||
wpa_pairwise=TKIP
|
||||
rsn_pairwise=CCMP
|
||||
8
initialSetup.sh
Normal file
8
initialSetup.sh
Normal file
@@ -0,0 +1,8 @@
|
||||
echo "default password: raspberry"
|
||||
ssh pi@raspberrypi "sudo adduser poconsole"
|
||||
ssh pi@raspberrypi "sudo sed -i '$a poconsole ALL=(ALL) NOPASSWD: ALL' /etc/sudoers"
|
||||
|
||||
OR
|
||||
|
||||
sudo adduser poconsole
|
||||
sudo sed -i '$a poconsole ALL=(ALL) NOPASSWD: ALL' /etc/sudoers
|
||||
20
interfaces
Normal file
20
interfaces
Normal file
@@ -0,0 +1,20 @@
|
||||
auto lo
|
||||
iface lo inet loopback
|
||||
|
||||
#iface eth0 inet dhcp
|
||||
iface eth0 inet static
|
||||
address 192.168.1.30
|
||||
netmask 255.255.255.0
|
||||
gateway 192.168.1.150
|
||||
|
||||
auto wlan0
|
||||
#Normal Wifi Mode
|
||||
#allow-hotplug wlan0
|
||||
#iface wlan0 inet manual
|
||||
#wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
|
||||
|
||||
#ACCESS POINT MODE
|
||||
iface wlan0 inet static
|
||||
address 192.168.4.1
|
||||
netmask 255.255.255.0
|
||||
up iptables-restore < /etc/iptables.ipv4.nat
|
||||
21
isc-dhcp-server
Normal file
21
isc-dhcp-server
Normal file
@@ -0,0 +1,21 @@
|
||||
# Defaults for isc-dhcp-server initscript
|
||||
# sourced by /etc/init.d/isc-dhcp-server
|
||||
# installed at /etc/default/isc-dhcp-server by the maintainer scripts
|
||||
|
||||
#
|
||||
# This is a POSIX shell fragment
|
||||
#
|
||||
|
||||
# Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf).
|
||||
#DHCPD_CONF=/etc/dhcp/dhcpd.conf
|
||||
|
||||
# Path to dhcpd's PID file (default: /var/run/dhcpd.pid).
|
||||
#DHCPD_PID=/var/run/dhcpd.pid
|
||||
|
||||
# Additional options to start dhcpd with.
|
||||
# Don't use options -cf or -pf here; use DHCPD_CONF/ DHCPD_PID instead
|
||||
#OPTIONS=""
|
||||
|
||||
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
|
||||
# Separate multiple interfaces with spaces, e.g. "eth0 eth1".
|
||||
INTERFACES="wlan0"
|
||||
43
loggers
Normal file
43
loggers
Normal file
@@ -0,0 +1,43 @@
|
||||
#! /bin/sh
|
||||
# /etc/init.d/loggers
|
||||
|
||||
### BEGIN INIT INFO
|
||||
# Provides: loggers
|
||||
# Required-Start: $remote_fs $syslog usbMount
|
||||
# Required-Stop: $remote_fs $syslog
|
||||
# Default-Start: 2 3 4 5
|
||||
# Default-Stop: 0 1 6
|
||||
# Short-Description: Simple script to start a program at boot
|
||||
# Description: A simple script from www.stuffaboutcode.com which will start / stop a program a boot / shutdown.
|
||||
### END INIT INFO
|
||||
|
||||
# If you want a command to always run, put it here
|
||||
|
||||
# Carry out specific functions when asked to by the system
|
||||
case "$1" in
|
||||
start)
|
||||
echo "Starting loggers"
|
||||
kill -9 $(cat /root/alarmLogger.pid)
|
||||
kill -9 $(cat /root/dataLogger.pid)
|
||||
# run application you want to start
|
||||
#python /home/poconsole/src/dataLogger/alarmLogger.py &
|
||||
#python /home/poconsole/src/dataLogger/dataLogger.py &
|
||||
/usr/bin/python /home/poconsole/src/dataLogger/alarmLogger.py > /dev/null 2>&1 & echo $! > "/root/alarmLogger.pid"
|
||||
/usr/bin/python /home/poconsole/src/dataLogger/dataLogger.py > /dev/null 2>&1 & echo $! > "/root/dataLogger.pid"
|
||||
|
||||
;;
|
||||
stop)
|
||||
echo "Stopping loggers"
|
||||
# kill application you want to stop
|
||||
#killall python
|
||||
kill -9 $(cat /root/alarmLogger.pid)
|
||||
kill -9 $(cat /root/dataLogger.pid)
|
||||
|
||||
;;
|
||||
*)
|
||||
echo "Usage: /etc/init.d/loggers {start|stop}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
124
my.cnf
Normal file
124
my.cnf
Normal file
@@ -0,0 +1,124 @@
|
||||
# The MySQL database server configuration file.
|
||||
#
|
||||
# You can copy this to one of:
|
||||
# - "/etc/mysql/my.cnf" to set global options,
|
||||
# - "~/.my.cnf" to set user-specific options.
|
||||
#
|
||||
# One can use all long options that the program supports.
|
||||
# Run program with --help to get a list of available options and with
|
||||
# --print-defaults to see which it would actually understand and use.
|
||||
#
|
||||
# For explanations see
|
||||
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
|
||||
|
||||
# This will be passed to all mysql clients
|
||||
# It has been reported that passwords should be enclosed with ticks/quotes
|
||||
# escpecially if they contain "#" chars...
|
||||
# Remember to edit /etc/mysql/debian.cnf when changing the socket location.
|
||||
[client]
|
||||
port = 3306
|
||||
socket = /var/run/mysqld/mysqld.sock
|
||||
|
||||
# Here is entries for some specific programs
|
||||
# The following values assume you have at least 32M ram
|
||||
|
||||
# This was formally known as [safe_mysqld]. Both versions are currently parsed.
|
||||
[mysqld_safe]
|
||||
socket = /var/run/mysqld/mysqld.sock
|
||||
nice = 0
|
||||
|
||||
[mysqld]
|
||||
#
|
||||
# * Basic Settings
|
||||
#
|
||||
user = mysql
|
||||
pid-file = /var/run/mysqld/mysqld.pid
|
||||
socket = /var/run/mysqld/mysqld.sock
|
||||
port = 3306
|
||||
basedir = /usr
|
||||
datadir = /var/lib/mysql
|
||||
tmpdir = /tmp
|
||||
lc-messages-dir = /usr/share/mysql
|
||||
skip-external-locking
|
||||
#
|
||||
# Instead of skip-networking the default is now to listen only on
|
||||
# localhost which is more compatible and is not less secure.
|
||||
bind-address = 127.0.0.1
|
||||
#
|
||||
# * Fine Tuning
|
||||
#
|
||||
key_buffer = 16M
|
||||
max_allowed_packet = 16M
|
||||
thread_stack = 192K
|
||||
thread_cache_size = 8
|
||||
# This replaces the startup script and checks MyISAM tables if needed
|
||||
# the first time they are touched
|
||||
myisam-recover = BACKUP
|
||||
#max_connections = 100
|
||||
#table_cache = 64
|
||||
#thread_concurrency = 10
|
||||
#
|
||||
# * Query Cache Configuration
|
||||
#
|
||||
query_cache_limit = 1M
|
||||
query_cache_size = 16M
|
||||
#
|
||||
# * Logging and Replication
|
||||
#
|
||||
# Both location gets rotated by the cronjob.
|
||||
# Be aware that this log type is a performance killer.
|
||||
# As of 5.1 you can enable the log at runtime!
|
||||
#general_log_file = /var/log/mysql/mysql.log
|
||||
#general_log = 1
|
||||
#
|
||||
# Error logging goes to syslog due to /etc/mysql/conf.d/mysqld_safe_syslog.cnf.
|
||||
#
|
||||
# Here you can see queries with especially long duration
|
||||
#log_slow_queries = /var/log/mysql/mysql-slow.log
|
||||
#long_query_time = 2
|
||||
#log-queries-not-using-indexes
|
||||
#
|
||||
# The following can be used as easy to replay backup logs or for replication.
|
||||
# note: if you are setting up a replication slave, see README.Debian about
|
||||
# other settings you may need to change.
|
||||
#server-id = 1
|
||||
#log_bin = /var/log/mysql/mysql-bin.log
|
||||
expire_logs_days = 10
|
||||
max_binlog_size = 100M
|
||||
#binlog_do_db = include_database_name
|
||||
#binlog_ignore_db = include_database_name
|
||||
#
|
||||
# * InnoDB
|
||||
#
|
||||
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
|
||||
# Read the manual for more InnoDB related options. There are many!
|
||||
#
|
||||
# * Security Features
|
||||
#
|
||||
# Read the manual, too, if you want chroot!
|
||||
# chroot = /var/lib/mysql/
|
||||
#
|
||||
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
|
||||
#
|
||||
# ssl-ca=/etc/mysql/cacert.pem
|
||||
# ssl-cert=/etc/mysql/server-cert.pem
|
||||
# ssl-key=/etc/mysql/server-key.pem
|
||||
|
||||
|
||||
|
||||
[mysqldump]
|
||||
quick
|
||||
quote-names
|
||||
max_allowed_packet = 16M
|
||||
|
||||
[mysql]
|
||||
#no-auto-rehash # faster start of mysql but no tab completition
|
||||
|
||||
[isamchk]
|
||||
key_buffer = 16M
|
||||
|
||||
#
|
||||
# * IMPORTANT: Additional settings that can override those from this file!
|
||||
# The files must end with '.cnf', otherwise they'll be ignored.
|
||||
#
|
||||
!includedir /etc/mysql/conf.d/
|
||||
137
setup.sh
Normal file
137
setup.sh
Normal file
@@ -0,0 +1,137 @@
|
||||
#!/bin/bash
|
||||
echo "POConsole Auto Configuration Script"
|
||||
echo "-----------------------------------"
|
||||
echo "Written by: Patrick McDonagh"
|
||||
echo "Sit back and relax... I'll take over from here"
|
||||
|
||||
echo "Setting up SSH Key"
|
||||
mkdir ~/.ssh
|
||||
cat henryPumpDev.pub >> ~/.ssh/authorized_keys
|
||||
|
||||
echo "Changing hostname to poconsole"
|
||||
sudo mv hostname /etc/hostname
|
||||
|
||||
echo "Setting up networking"
|
||||
sudo mv interfaces /etc/network/interfaces
|
||||
sudo apt-get update
|
||||
sudo apt-get -y upgrade
|
||||
sudo apt-get -y install unzip cmake mysql-client python-dev htop nginx libmysqlclient-dev avahi-daemon screen mysql-server g++ gcc curl
|
||||
|
||||
echo "Setting up USB Drive"
|
||||
sudo mkdir /mnt/usb
|
||||
sudo mkdir /mnt/usb/CSV
|
||||
echo "Formatting to EXT4"
|
||||
sudo mkfs.ext4 /dev/sda1 -L usbdrive
|
||||
echo "Adding entry for USB in /etc/fstab"
|
||||
sudo sh -c "echo '/dev/sda1 /mnt/usb ext4 defaults 0 0'>>/etc/fstab"
|
||||
echo "Mounting all drives"
|
||||
sudo mount -a
|
||||
echo "Configuring MySQL to use the USB drive"
|
||||
cd /mnt/usb
|
||||
sudo mkdir mysql
|
||||
sudo su
|
||||
cp -Rv /var/lib/mysql/* /mnt/usb/mysql/
|
||||
chown -R mysql:mysql /mnt/usb/mysql
|
||||
exit
|
||||
cd ~/setup
|
||||
sudo service mysql stop
|
||||
sudo sed 's:/var/lib/mysql:/mnt/usb/mysql:g' /etc/mysql/my.cnf
|
||||
sudo service mysql restart
|
||||
sudo chmod 777 /mnt/usb
|
||||
sudo chmod 777 /mnt/usb/*
|
||||
|
||||
|
||||
echo "installing TuxEip"
|
||||
wget https://github.com/leicht/TuxPLC/archive/master.zip
|
||||
unzip master.zip
|
||||
cd TuxPLC-master/tuxeip
|
||||
cmake CMakeLists.txt
|
||||
make
|
||||
|
||||
cd lib
|
||||
ar -x libtuxeip.a
|
||||
gcc -shared *.o -o libtuxeip.so
|
||||
sudo cp libtuxeip.so /usr/lib/
|
||||
|
||||
cd ~/setup
|
||||
#sudo wget -O /etc/apt/sources.list.d/repository.pi3g.com.list http://repository.pi3g.com/sources.list
|
||||
#wget -O - http://repository.pi3g.com/pubkey | sudo apt-key add -
|
||||
|
||||
echo "Configuring MySQL"
|
||||
# sudo mv my.cnf /etc/mysql/my.cnf
|
||||
# sudo service mysql restart
|
||||
mysql --user="root" --password="henrypump" --execute="source WellDataEmpty.sql"
|
||||
mysql --user="root" --password="henrypump" --execute="source setupUsers.sql"
|
||||
|
||||
echo "Configuring nginx"
|
||||
sudo mv default /etc/nginx/sites-enabled/default
|
||||
|
||||
echo "installing node"
|
||||
wget http://node-arm.herokuapp.com/node_latest_armhf.deb
|
||||
sudo dpkg -i node_latest_armhf.deb
|
||||
|
||||
|
||||
# INSTALLING NODE ON UBUNTU
|
||||
# curl -sL https://deb.nodesource.com/setup_5.x | sudo -E bash -
|
||||
# sudo apt-get install -y nodejs
|
||||
|
||||
sudo npm install -g forever
|
||||
|
||||
echo "Configuring Auto-start scripts"
|
||||
sudo chmod 777 loggers
|
||||
sudo chmod 777 website
|
||||
# sudo chmod 777 usbMount
|
||||
sudo mv loggers /etc/init.d/
|
||||
sudo mv website /etc/init.d/
|
||||
# sudo mv usbMount /etc/init.d/
|
||||
# sudo update-rc.d usbMount defaults
|
||||
sudo update-rc.d loggers defaults
|
||||
sudo update-rc.d website defaults
|
||||
|
||||
echo "Installing pip - Python Package Manager"
|
||||
wget https://bootstrap.pypa.io/get-pip.py
|
||||
sudo python get-pip.py
|
||||
sudo pip install mysql requests boto3 pycomm
|
||||
|
||||
echo "Setting up POConsole software"
|
||||
mkdir ~/src
|
||||
mkdir ~/.aws
|
||||
cp config ~/.aws/
|
||||
cp checkCurrentVersion.py ~/src/
|
||||
python ~/src/checkCurrentVersion.py True
|
||||
cd ~/src/www
|
||||
npm install
|
||||
cd ~/setup
|
||||
|
||||
echo "Setting up Wifi Access Point and DHCP Server"
|
||||
sudo apt-get install -y hostapd isc-dhcp-server
|
||||
sudo cp dhcpd.conf /etc/dhcp/
|
||||
sudo cp isc-dhcp-server /etc/default/
|
||||
sudo cp hostapd.conf /etc/hostapd/
|
||||
sudo cp hostapd /etc/default/
|
||||
sudo sed -i '$a net.ipv4.ip_forward=1' /etc/sysctl.conf
|
||||
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
|
||||
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
|
||||
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
|
||||
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
|
||||
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
|
||||
sudo ifdown wlan0
|
||||
sudo ifup wlan0
|
||||
sudo service hostapd start
|
||||
sudo service isc-dhcp-server start
|
||||
|
||||
echo "Setup Complete!"
|
||||
|
||||
cd ~
|
||||
mv setup .setup
|
||||
sudo userdel pi
|
||||
|
||||
read -n1 -r -p "Press any key to reboot..." key
|
||||
|
||||
if [ "$key" = ' ' ]; then
|
||||
# Space pressed, do something
|
||||
sudo reboot
|
||||
else
|
||||
# Anything else pressed, do whatever else.
|
||||
sudo reboot
|
||||
fi
|
||||
7
setupUsers.sql
Normal file
7
setupUsers.sql
Normal file
@@ -0,0 +1,7 @@
|
||||
CREATE USER 'website'@'localhost' IDENTIFIED BY 'henrypump';
|
||||
GRANT ALL ON *.* TO 'website'@'localhost';
|
||||
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'henrypump';
|
||||
GRANT ALL ON *.* to 'admin'@'localhost';
|
||||
CREATE USER 'admin'@'%' IDENTIFIED BY 'henrypump';
|
||||
GRANT ALL ON *.* to 'admin'@'%';
|
||||
FLUSH PRIVILEGES;
|
||||
34
usbMount
Normal file
34
usbMount
Normal file
@@ -0,0 +1,34 @@
|
||||
#! /bin/sh
|
||||
# /etc/init.d/usbMount
|
||||
|
||||
### BEGIN INIT INFO
|
||||
# Provides: usbMount
|
||||
# Required-Start: $remote_fs $syslog
|
||||
# Required-Stop: $remote_fs $syslog
|
||||
# Default-Start: 2 3 4 5
|
||||
# Default-Stop: 0 1 6
|
||||
# Short-Description: Simple script to start a program at boot
|
||||
# Description: A simple script from www.stuffaboutcode.com which will start / stop a program a boot / shutdown.
|
||||
### END INIT INFO
|
||||
|
||||
# If you want a command to always run, put it here
|
||||
|
||||
# Carry out specific functions when asked to by the system
|
||||
case "$1" in
|
||||
start)
|
||||
echo "mounting USB /dev/sda1 to /usb/mnt"
|
||||
# run application you want to start
|
||||
sudo mount -o uid=poconsole,gid=poconsole /dev/sda1 /mnt/usb
|
||||
;;
|
||||
stop)
|
||||
echo "unmounting /usb/mnt"
|
||||
# kill application you want to stop
|
||||
sudo umount /mnt/usb
|
||||
;;
|
||||
*)
|
||||
echo "Usage: /etc/init.d/usbMount {start|stop}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
41
website
Normal file
41
website
Normal file
@@ -0,0 +1,41 @@
|
||||
#! /bin/sh
|
||||
# /etc/init.d/website
|
||||
|
||||
### BEGIN INIT INFO
|
||||
# Provides: website
|
||||
# Required-Start: $remote_fs $syslog
|
||||
# Required-Stop: $remote_fs $syslog
|
||||
# Default-Start: 2 3 4 5
|
||||
# Default-Stop: 0 1 6
|
||||
# Short-Description: Simple script to start a program at boot
|
||||
# Description: A simple script from www.stuffaboutcode.com which will start / stop a program a boot / shutdown.
|
||||
### END INIT INFO
|
||||
|
||||
# If you want a command to always run, put it here
|
||||
|
||||
# Carry out specific functions when asked to by the system
|
||||
case "$1" in
|
||||
start)
|
||||
echo "Starting website"
|
||||
# run application you want to start
|
||||
# /home/pi/runWebsite.sh
|
||||
if [ $(ps aux | grep $USER | grep node | grep -v grep | wc -l | tr -s "\n") -eq 0 ]
|
||||
then
|
||||
export NODE_ENV=production
|
||||
export PATH=/usr/local/bin:$PATH
|
||||
forever start /home/poconsole/src/www/app.js > /dev/null
|
||||
fi
|
||||
;;
|
||||
stop)
|
||||
echo "Stopping website"
|
||||
# kill application you want to stop
|
||||
forever stopall
|
||||
;;
|
||||
*)
|
||||
echo "Usage: /etc/init.d/website {start|stop}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
|
||||
Reference in New Issue
Block a user