diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..8644b811198a2cb1c5763d57c26dc49c65731d2f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,40 @@ +FROM php:7.1-apache + +# Came from https://downloads.datastax.com/cpp-driver/ubuntu/18.04/ +COPY ./docker/web/*.deb /debs/ + +#Default SSLs +ADD docker/web/apache-ssl.conf /etc/apache2/sites-enabled/000-default-ssl.conf +ADD docker/web/ca.crt /etc/apache2/ssl/ +ADD docker/web/server.crt /etc/apache2/ssl/ +ADD docker/web/server.key /etc/apache2/ssl/ +RUN a2enmod ssl + +#TODO Links to be compliance with old env. We should remove this in the future. +RUN ln -s -T /var/www/html/ /smartdata && chmod 777 /smartdata + +# SO +RUN apt-get update && apt-get install -y \ + apt-utils \ + libuv1-dev \ + multiarch-support \ + libgmp-dev \ + libuv1-dev \ + libxml2-dev &&\ + dpkg -i /debs/*.deb &&\ + rm -fr /var/lib/apt/lists + +# +#RUN mkdir /var/log/php && touch /var/log/php/error.log && chmod 777 /var/log/php/error.log +ADD docker/web/php.ini /usr/local/etc/php/conf.d/ +RUN docker-php-ext-install -j$(nproc) mbstring mysqli xml pdo_mysql gmp +RUN pecl channel-update pecl.php.net && pecl install cassandra +RUN echo "extension=cassandra.so" >> /usr/local/etc/php/conf.d/cassandra.ini + +ADD api /var/www/html/api/ +ADD bin /var/www/html/bin/ +ADD lib /var/www/html/lib/ +ADD docker/web/index.html /var/www/html/ + +#smartdata/Config.php +#RUN mkdir /usr/local/tmp/ && touch /usr/local/tmp/log && chmod 777 /usr/local/tmp/log diff --git a/bin/smartdata/Config.php.template b/bin/smartdata/Config.php.template index c581ef41f691cc62638acc9881a8aa76cb3bcd8f..8b29a74a4801427871f05cc27050247a4671072e 100644 --- a/bin/smartdata/Config.php.template +++ b/bin/smartdata/Config.php.template @@ -8,19 +8,19 @@ namespace SmartData\Config class Config_Common { - const MYSQL_SEVERNAME = 'localhost'; + const MYSQL_SEVERNAME = 'db'; const MYSQL_PORT = 3306; const MYSQL_USERNAME = 'smartdata'; - const MYSQL_PASSWORD = ''; + const MYSQL_PASSWORD = 'smartdata'; - const MYSQL_SUPERUSER = 'smartdata_admin'; - const MYSQL_SUPERPASS = ''; + const MYSQL_SUPERUSER = 'root'; + const MYSQL_SUPERPASS = 'ch4ng3m3'; - const CASSANDRA_SERVERNAME = 'localhost'; + const CASSANDRA_SERVERNAME = 'cassandra'; const CASSANDRA_PORT = 9042; const CASSANDRA_SUPERUSER = 'cassandra'; - const CASSANDRA_SUPERPASS = ''; + const CASSANDRA_SUPERPASS = 'ch4ng3m3'; const CASSANDRA_MAX_ROW_SIZE = 2000000000; // (Two billion - The max is 2^31) const POINTS_LIMIT = 2000; // 84600 to 200000 diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000000000000000000000000000000000000..50ef8a2d264ddfe18886cec2114e337dc8b2899c --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,52 @@ +version: "3.5" +services: + web: + build: . + container_name: web + ports: + - 443:443 + volumes: + - ./api:/var/www/html/api + - ./bin:/var/www/html/bin + - ./lib:/var/www/html/lib + depends_on: + - cassandra + - mariadb + mariadb: + image: mariadb:latest + container_name: mariadb + volumes: + - mariadb:/var/lib/mysql + - ./docker/db:/docker-entrypoint-initdb.d/ + #deploy: + # replicas: 0 + env_file: + - docker/variables.env + + cassandra: + image: cassandra:4 + container_name: cassandra + ulimits: + memlock: -1 + #deploy: + # replicas: 0 + volumes: + - cassandra:/var/lib/cassandra + - ./docker/cassandra:/docker-entrypoint-initdb.d/ + env_file: + - docker/variables.env + + #grafana: + # image: grafana + # container_name: grafana + # deploy: + # replicas: 0 + # env_file: + # - docker/variables.env + # ports: + # - 3000:3000 + # depends_on: + # - cassandra +volumes: + mariadb: + cassandra: diff --git a/docker/db/01-smartdata.sql b/docker/db/01-smartdata.sql new file mode 100644 index 0000000000000000000000000000000000000000..1130bf080bfc62be72aea614bf150f71f3fc4c7b --- /dev/null +++ b/docker/db/01-smartdata.sql @@ -0,0 +1,83 @@ +-- MySQL dump 10.17 Distrib 10.3.12-MariaDB, for Linux (x86_64) +-- +-- Host: localhost Database: smartdata +-- ------------------------------------------------------ +-- Server version 10.3.12-MariaDB + +/*!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 utf8mb4 */; +/*!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 `counters` +-- + +DROP TABLE IF EXISTS `counters`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `counters` ( + `domain` varchar(48) NOT NULL, + `c` int(11) DEFAULT NULL, + PRIMARY KEY (`domain`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +DROP TABLE IF EXISTS `gateways`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `gateways` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `certificate` varchar(32) NOT NULL, + `name` varchar(32) NOT NULL, + `ip` int(10) unsigned NOT NULL, + `domain` varchar(48) NOT NULL, + `level` varchar(2) NOT NULL, + `enable` tinyint(1) NOT NULL DEFAULT 0, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1; + +DROP TABLE IF EXISTS `series`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `series` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `version` tinyint(3) unsigned NOT NULL, + `unit` int(10) unsigned NOT NULL, + `x` int(11) NOT NULL, + `y` int(11) NOT NULL, + `z` int(11) NOT NULL, + `r` int(10) unsigned NOT NULL, + `t0` bigint(20) unsigned NOT NULL, + `t1` bigint(20) unsigned NOT NULL, + `count` bigint(20) unsigned NOT NULL DEFAULT 0, + `domain` varchar(48) NOT NULL DEFAULT 'public', + `slice` bigint(20) unsigned NOT NULL, + `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `signature` bigint(20) DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `uk_series` (`version`,`unit`,`x`,`y`,`z`,`r`,`t0`,`t1`,`domain`,`slice`) +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1; + +DROP TABLE IF EXISTS `trackers`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `trackers` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `version` varchar(5) NOT NULL, + `unit` int(10) unsigned NOT NULL, + `signature` varchar(32) NOT NULL, + `t0` bigint(20) unsigned NOT NULL, + `t1` bigint(20) unsigned NOT NULL, + `count` bigint(20) unsigned NOT NULL DEFAULT 0, + `domain` varchar(48) NOT NULL DEFAULT 'public', + `slice` bigint(20) unsigned NOT NULL, + `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + PRIMARY KEY (`id`), + UNIQUE KEY `uk_trackers` (`version`,`unit`,`signature`,`t0`,`t1`,`domain`,`slice`) +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1; diff --git a/docker/db/02-smartdata_v1.sql b/docker/db/02-smartdata_v1.sql new file mode 100644 index 0000000000000000000000000000000000000000..3ae4960f841eb59d2ba74e2e8e33b3a07cc09c7f --- /dev/null +++ b/docker/db/02-smartdata_v1.sql @@ -0,0 +1,105 @@ +CREATE DATABASE IF NOT EXISTS `smartdata_v1`; + +USE `smartdata_v1`; + +-- +-- Table structure for table `counters` +-- +DROP TABLE IF EXISTS `counters`; +CREATE TABLE `counters` (`domain` varchar(48) PRIMARY KEY, c INT); +DELIMITER // +CREATE OR REPLACE FUNCTION `counter` (_domain varchar(48)) RETURNS INT + BEGIN + UPDATE `counters` SET c = c + 1 WHERE `domain` = _domain; + RETURN (SELECT c FROM `counters` WHERE `domain` = _domain LIMIT 1); + END // +DELIMITER ; + +-- +-- Table structure for table `series` +-- +DROP TABLE IF EXISTS `rows`; +DROP TABLE IF EXISTS `series`; +CREATE TABLE `series` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT, + `version` tinyint unsigned NOT NULL, + `unit` int unsigned NOT NULL, + `x` int NOT NULL, + `y` int NOT NULL, + `z` int NOT NULL, + `r` int unsigned NOT NULL, + `dev` int unsigned NOT NULL DEFAULT '0', + `t0` bigint unsigned NOT NULL, + `t1` bigint unsigned NOT NULL, + `workflow` int unsigned NOT NULL DEFAULT '0', + `domain` varchar(48) NOT NULL DEFAULT 'public', + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `uk_series` (`version`,`unit`,`x`,`y`,`z`,`r`,`dev`,`t0`,`t1`,`workflow`,`domain`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +-- +-- Table structure for table `rows` +-- +DROP TABLE IF EXISTS `rows`; +CREATE TABLE `rows` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT, + `x` int NOT NULL, + `y` int NOT NULL, + `z` int NOT NULL, + `dev` int unsigned NOT NULL DEFAULT '0', + `count` bigint unsigned NOT NULL DEFAULT '0', + `row_id` bigint unsigned NOT NULL, + `series_id` bigint unsigned NOT NULL, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `uk_rows` (`x`,`y`,`z`,`dev`,`row_id`,`series_id`), + CONSTRAINT `fk_row_series` + FOREIGN KEY (`series_id`) REFERENCES `series` (`id`) + ON DELETE CASCADE + ON UPDATE RESTRICT +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +-- +-- Table structure for table `trackers` +-- +DROP TABLE IF EXISTS `trackers`; +CREATE TABLE `trackers` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT, + `version` tinyint unsigned NOT NULL, + `unit` int unsigned NOT NULL, + `dev` int unsigned NOT NULL DEFAULT '0', + `t0` bigint unsigned NOT NULL, + `t1` bigint unsigned NOT NULL, + `signature` bigint unsigned NOT NULL, + `count` bigint unsigned NOT NULL DEFAULT '0', + `workflow` int unsigned NOT NULL DEFAULT '0', + `domain` varchar(48) NOT NULL DEFAULT 'public', + `row_id` bigint unsigned NOT NULL, + `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `uk_trackers` (`version`,`unit`,`signature`,`t0`,`t1`,`dev`,`workflow`,`domain`,`row_id`) + +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +-- +-- Table structure for table `clients` +-- +DROP TABLE IF EXISTS `clients`; +CREATE TABLE `clients` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT, + `certificate` varchar(32) NOT NULL, + `name` varchar(32) NOT NULL, + `domain` varchar(48) NOT NULL, + `level` varchar(2) NOT NULL, + `enable` boolean NOT NULL DEFAULT false, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +DELIMITER // +CREATE TRIGGER `check_level` BEFORE INSERT ON `clients` FOR EACH ROW +BEGIN + IF NEW.`level` NOT IN ('r', 'w', 'rw') THEN + SIGNAL SQLSTATE VALUE '45000' SET MESSAGE_TEXT = '[table:clients] - `level` column is not valid'; + END IF; +END; // diff --git a/docker/db/03-smartdata_v1.tutorial.sql b/docker/db/03-smartdata_v1.tutorial.sql new file mode 100644 index 0000000000000000000000000000000000000000..a5525209a11c3c781da59027e71bffb7d54ab672 --- /dev/null +++ b/docker/db/03-smartdata_v1.tutorial.sql @@ -0,0 +1,3 @@ +USE smartdata_v1; +INSERT INTO clients VALUES (1,'01','Certificate Example','tutorial','rw',1); +INSERT INTO counters VALUES ('tutorial', '0'); diff --git a/docker/db/99-permitions.sh b/docker/db/99-permitions.sh new file mode 100644 index 0000000000000000000000000000000000000000..4db2714d918d6b5235e464a7ca933bad364b72a7 --- /dev/null +++ b/docker/db/99-permitions.sh @@ -0,0 +1,9 @@ +#!/bin/bash +MRP=$MYSQL_ROOT_PASSWORD +echo "CREATE USER IF NOT EXISTS 'smartdata_admin' IDENTIFIED BY '$MYSQL_PASSWORD';" | mysql -u root --password=$MRP +echo "CREATE USER IF NOT EXISTS 'smartdata' IDENTIFIED BY '$MYSQL_PASSWORD';" | mysql -u root --password=$MRP +echo "CREATE USER IF NOT EXISTS 'tutorial' IDENTIFIED BY '$MYSQL_PASSWORD';" | mysql -u root --password=$MRP + +echo "GRANT ALL PRIVILEGES ON *.* TO 'smartdata_admin';" | mysql -u root --password=$MRP +echo "GRANT ALL PRIVILEGES ON *.* TO 'smartdata';" | mysql -u root --password=$MRP +echo "GRANT ALL PRIVILEGES ON *.* TO 'tutorial';" | mysql -u root --password=$MRP diff --git a/docker/variables.env b/docker/variables.env new file mode 100644 index 0000000000000000000000000000000000000000..8cfcd134f540e6e58abeee03e555a5cdf5705c31 --- /dev/null +++ b/docker/variables.env @@ -0,0 +1,16 @@ +#TODO bater com as senha de exemplo do Config.php + +#Mysql +MYSQL_DATABASE=smartdata +MYSQL_USER=smartdata +MYSQL_PASSWORD=smartdata +MYSQL_ROOT_PASSWORD=ch4ng3m3 + +#Cassandra +CASSANDRA_NUM_TOKENS=256 +LOCAL_JMX=yes +JVM_OPTS=-Dcom.sun.management.jmxremote.authenticate=false + +CASSANDRA_USERNAME=cassandra +CASSANDRA_PASSWORD=ch4ng3m3 + diff --git a/docker/web/apache-ssl.conf b/docker/web/apache-ssl.conf new file mode 100644 index 0000000000000000000000000000000000000000..f2bf68ae588b50ac68a4abf43b6d67772be55c97 --- /dev/null +++ b/docker/web/apache-ssl.conf @@ -0,0 +1,29 @@ +# +<VirtualHost _default_:443> + ServerAdmin webmaster@localhost + DocumentRoot /var/www/html + ErrorLog ${APACHE_LOG_DIR}/error.log + CustomLog ${APACHE_LOG_DIR}/access.log combined + + # SSL + SSLEngine on + SSLCertificateFile /etc/apache2/ssl/server.crt + SSLCertificateKeyFile /etc/apache2/ssl/server.key + SSLCACertificateFile /etc/apache2/ssl/ca.crt + SSLVerifyClient optional + SSLVerifyDepth 5 + #SSLCertificateChainFile /etc/apache2/ssl.crt/server-ca.crt + #SSLCACertificatePath /etc/ssl/certs/ + #SSLCACertificateFile /etc/apache2/ssl.crt/ca-bundle.crt + #SSLCARevocationPath /etc/apache2/ssl.crl/ + #SSLCARevocationFile /etc/apache2/ssl.crl/ca-bundle.crl + #SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire + + <FilesMatch "\.(cgi|shtml|phtml|php)$"> + SSLOptions +StdEnvVars + </FilesMatch> + + <Directory /usr/lib/cgi-bin> + SSLOptions +StdEnvVars + </Directory> +</VirtualHost> diff --git a/docker/web/ca.crt b/docker/web/ca.crt new file mode 100644 index 0000000000000000000000000000000000000000..80f31e4c62380aab7cf440ee73191d27f2977f9f --- /dev/null +++ b/docker/web/ca.crt @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDazCCAlOgAwIBAgIUTARemzbPYtPSkl0l4LtfSTS9PDowDQYJKoZIhvcNAQEL +BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM +GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yNDAyMTQxMzAyMzBaFw0zNDAy +MTExMzAyMzBaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw +HwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQCWx/w4gJVX+O9gygSrZbYr9aq8H4Pdzse8OocrY66D +wFHkrUpCYz0nZiHnJPbsE/FQ880a3v9U6zi9WBtPz3bXOb9waPX3QKvLLyeUXquh +PVBBAi/Q/zBYIJ1qQcoImJyRW561eS6WXU0uQnWnGG2S+M8DADe34K/SxJxlUs1O +IHAFslmCWJQT0matCnteR9EpUbVTxFuGlIsrYSxRSClQXcovmifAVw+xol8sGukm +1n6u2G2fjKHz1BkWl3cpbPUsXlyrxt56Ut0k6zyGJFe1gm+UYCRqM8YhEaBcBlmt +9ickQGRls8+S7Ac/9rMQhL0FQ6riUD5dfSrVSUKzdZY5AgMBAAGjUzBRMB0GA1Ud +DgQWBBSsoMyYPBy1ICYSsPXFgK7EdnD22DAfBgNVHSMEGDAWgBSsoMyYPBy1ICYS +sPXFgK7EdnD22DAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBN +hmwL0/4wZJA50RVTHwbmcMohM40bYbKoJ42v9rUXMd25TM39wE3n/x/RVX/cfsun +G5nhhGlE0GYBZtM3qDgwNEaeJZfzLSOnkHCTHHWs+h0dmS+Z8A6ta4kutOsaGwyO +t9ynBydnZEOzuAuxnAF2ekMTrsnNL1TWP8mL03aOROY5h1hqhYZXLP3N9gwf08p+ +i0KmKaM//3jXPzefCP49MumqMYYRr1s7JJZ7RB2uMKtNbnMNzI1KpqSWJM3tZNWL +kTx4DdC2h2vTmfwEs+vvKgS3V6A8JAKYocLW5TZREZ57pkLdlxKvYoO9UWubzQ5B +l7kccmUwmbf7+fk7PXFB +-----END CERTIFICATE----- diff --git a/docker/web/ca.key b/docker/web/ca.key new file mode 100644 index 0000000000000000000000000000000000000000..350ccc4f887e335c86e88bfb87865cb2b87ebf52 --- /dev/null +++ b/docker/web/ca.key @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCWx/w4gJVX+O9g +ygSrZbYr9aq8H4Pdzse8OocrY66DwFHkrUpCYz0nZiHnJPbsE/FQ880a3v9U6zi9 +WBtPz3bXOb9waPX3QKvLLyeUXquhPVBBAi/Q/zBYIJ1qQcoImJyRW561eS6WXU0u +QnWnGG2S+M8DADe34K/SxJxlUs1OIHAFslmCWJQT0matCnteR9EpUbVTxFuGlIsr +YSxRSClQXcovmifAVw+xol8sGukm1n6u2G2fjKHz1BkWl3cpbPUsXlyrxt56Ut0k +6zyGJFe1gm+UYCRqM8YhEaBcBlmt9ickQGRls8+S7Ac/9rMQhL0FQ6riUD5dfSrV +SUKzdZY5AgMBAAECggEAAzGNqp8IlWeA9HPFmQwWCW983rABMZW+CRh+lpaYJ+i5 +zfuLTDArZ6tOslqyqH88os+4dfun/KMLHYbhSeBgSUCLHjpO5AjYiqdp8cchNftP +45dEWYDKLpepld+lA+fC6y49rzoiQzjggrIRfrOdAIT+EiId9qpO4bUx2yXfkipu +j7jh58EqaX8VvocDezxbORrvIbFV1Y1QXBayLC7v42xcknxxzyU0gmo21MfUuSM1 +EmYuerCRy0Uim/06A1NJPwJyUKXqqchmCi65YRF9j3Sy0i3pZKK8mlYdT4jp9Ya3 +DVrAe/8CfW5LfX8UA4Ev4wMkPKXC/R6Gd/rPE7hLwQKBgQDEb/kWCTyXvMkW1ReN +DeZgBTMMZIYghOvFbUXcw+GDos6hODja3ZYXyU0h6WD35+sXUG/6rhuCAtnLMDBW +ieiGQL1BmwQXe5ISxzLBIw/5CCrmqmzkx8YTtFptc/sVXoMqfs6TfKZ8Zq7dDNVe +5w/LQTI0pokGkTPvI7hlCjEy4QKBgQDEgAxqp2cb5KlVsZogsYLoXWbF9VnEQZzc +yIBMPVL2NMJyaWYiGPUSOkzdLNeC7vu3uoNl05IzoLQfEDie5l/To846//8qdOnL +9wHzCqPgWsNbsLg0BbAP4oor6rEw1Wc7B/7XFsqA4CQY6t5JplKtJy1XWaPn4uAz +gEXPGf2mWQKBgC3qmoerGw3A5CRBJSMkh6AUNw2DhdKeH1pjo3vqEZGqgbAvqyKF +vyrKNAxkN/VasZoehD5NakKmlfAn0HS6Aa83/MUUDg3LJabcByIcJwSoAxct6QxF +IijC9Iw3Gw6wq+pH/9N7xJK5kdA7yrhHPGrfT3P9JXRyhng0mkqL6lohAoGAcZpa +E1se6GhlYc6g/d/CgBZnsXDsaeNJDfe4/NrDWOYduMmoq3PkU5pzD7e6DM+fpZPm +HXuY3dI98GuPYIZtxkzAkSmpWuFmvW3bqahwH+g5Y4wioqjbJgPhwAwaTtJBsUYp +Fi7t+l4bYHCA/PF0gPjSZNrFQO3QktXJBjfPhlkCgYACjsN+YrOaxHmzZkuxwXza +BU+vt8lLGdHUHAr/ldIEGYxonAnM6mGIrs9lYjPLfP23Ak128Jwg6XZ7jei7OILU +1MnV+H+2gKLVFzMzoFnAA3cJ6fc4l+kewEOpx3qPvjplD6xnFDteWdjIpMx2yX80 +FM4e9gNP2lovH1RWqZv9lg== +-----END PRIVATE KEY----- diff --git a/docker/web/cassandra-cpp-driver-dev_2.16.0-1_amd64.deb b/docker/web/cassandra-cpp-driver-dev_2.16.0-1_amd64.deb new file mode 100644 index 0000000000000000000000000000000000000000..edf602ecf26cc095aa9db8797c8b9a60bf32fd7c Binary files /dev/null and b/docker/web/cassandra-cpp-driver-dev_2.16.0-1_amd64.deb differ diff --git a/docker/web/cassandra-cpp-driver_2.16.0-1_amd64.deb b/docker/web/cassandra-cpp-driver_2.16.0-1_amd64.deb new file mode 100644 index 0000000000000000000000000000000000000000..951f84d41638325c194da728e1e3c82cf61821f9 Binary files /dev/null and b/docker/web/cassandra-cpp-driver_2.16.0-1_amd64.deb differ diff --git a/docker/web/create-ssl-files.sh b/docker/web/create-ssl-files.sh new file mode 100644 index 0000000000000000000000000000000000000000..ad484b04c3086f33ea61aa84a0f15b6b58b8a999 --- /dev/null +++ b/docker/web/create-ssl-files.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +# Configuration +CA_KEY="ca.key" +CA_CERT="ca.crt" +SERVER_KEY="server.key" +SERVER_CSR="server.csr" +SERVER_CERT="server.crt" +DAYS_VALIDITY=3650 + +# 1. Create CA Private Key without passphrase +openssl genpkey -algorithm RSA -out "$CA_KEY" + +# 2. Create CA Certificate +openssl req -new -x509 -key "$CA_KEY" -out "$CA_CERT" -days "$DAYS_VALIDITY" + +# 3. Create Server Private Key without passphrase +openssl genpkey -algorithm RSA -out "$SERVER_KEY" + +# 4. Create Server Certificate Signing Request (CSR) +openssl req -new -key "$SERVER_KEY" -out "$SERVER_CSR" + +# 5. Sign Server Certificate with CA +openssl x509 -req -in "$SERVER_CSR" -CA "$CA_CERT" -CAkey "$CA_KEY" -CAcreateserial -out "$SERVER_CERT" -days "$DAYS_VALIDITY" + +# Cleanup temporary files (optional) +rm "$SERVER_CSR" "$CA_KEY.srl" + +echo "Certificate Authority (CA) certificate created: $CA_CERT" +echo "Server Private Key created: $SERVER_KEY" +echo "Server Certificate signed by CA created: $SERVER_CERT" + diff --git a/docker/web/index.html b/docker/web/index.html new file mode 100644 index 0000000000000000000000000000000000000000..49163fad386fbe1c13355ba874a4d6366951bef8 --- /dev/null +++ b/docker/web/index.html @@ -0,0 +1,4 @@ +<html> + <h3>API: /api </h3> + <a href='/api'>API</> +</html> diff --git a/docker/web/libuv1_1.35.0-1_amd64.deb b/docker/web/libuv1_1.35.0-1_amd64.deb new file mode 100644 index 0000000000000000000000000000000000000000..0e9e1301de1ecb15cd48529d6913eeb264ec74ac Binary files /dev/null and b/docker/web/libuv1_1.35.0-1_amd64.deb differ diff --git a/docker/web/php.ini b/docker/web/php.ini new file mode 100644 index 0000000000000000000000000000000000000000..db7506ce6a2f3bb8005fcd9627dcf5066545da0a --- /dev/null +++ b/docker/web/php.ini @@ -0,0 +1,6 @@ +;Error display +log_errors = On +display_errors = Off +error_log = /var/log/php/error.log +error_reporting = E_ALL & ~E_DEPRECATED + diff --git a/docker/web/server.crt b/docker/web/server.crt new file mode 100644 index 0000000000000000000000000000000000000000..6d357708fee2ff5089fce21e258d72e18a0ff126 --- /dev/null +++ b/docker/web/server.crt @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDETCCAfkCFH3j6kjMtpLw2LXXbQFrMWgYsf34MA0GCSqGSIb3DQEBCwUAMEUx +CzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRl +cm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMjQwMjE0MTMwMjM0WhcNMzQwMjExMTMw +MjM0WjBFMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UE +CgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEApFCPnle0Ik2U1dCpD2eNxIA5gubDXkYA4Qy3xhPrAJSwPzCk +Hkjox80VeEA68lhqKDCt8tSpdyJaXNg0oXjud6oendREHiTc0wdrx4fgAedT01AY +4/7uA8pGiWLjQahxmymZIJcbRlrgefJBAsUPscklpkNJSptPKxYBJacmkuPu8CLH +8L7Ul1o0Ybe/e9SR8x4kRmreypCJ+quZaQUl/R50y95kf/NjZKD3YS3MsOA/x02o +PDBnV4WGhN/ymYmo3uBjIsRkRd5QJ8NEQyW5Hn5sFFp1CCjLvpCsMznOjzEYBPRj +JFB4C/IJp2tuUjFp9Lo7yt/zxRuGl124BdS/GQIDAQABMA0GCSqGSIb3DQEBCwUA +A4IBAQBy27Ygv+YrWRE8SpsR2yvV6mLHdm8ML6IDAcu6aD9oZduR2lIS/cj71Eny +jIPQvUWeH183Jla3Z4BisxvqWJBe17BDVBwZZeW7qDN7D5cXUxCex4QMR+7CmtEX +IK7xM3w3AMj6HJWo8m5A/3g2PUwTpImqjqN9O5fKD6jwJ5s4RTbwUlC+OVVGsmI5 +A1rpNQUPmpEDNjiOh51VNL34Y9r8SPyK7nbk1wH3YyVLTMSOAITxojAhlNtK03kv +ojdBcfTDbRvQDbhmn3kQVzt5tenISRi+1gS4cmE3PcUulaskn93h7bs0WUr6D+9T +mW5IjISgTYnqx/h9BOJJosgbnkY9 +-----END CERTIFICATE----- diff --git a/docker/web/server.key b/docker/web/server.key new file mode 100644 index 0000000000000000000000000000000000000000..b3142dbcd53148e04824e54523f04c6394c93cd6 --- /dev/null +++ b/docker/web/server.key @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCkUI+eV7QiTZTV +0KkPZ43EgDmC5sNeRgDhDLfGE+sAlLA/MKQeSOjHzRV4QDryWGooMK3y1Kl3Ilpc +2DSheO53qh6d1EQeJNzTB2vHh+AB51PTUBjj/u4DykaJYuNBqHGbKZkglxtGWuB5 +8kECxQ+xySWmQ0lKm08rFgElpyaS4+7wIsfwvtSXWjRht7971JHzHiRGat7KkIn6 +q5lpBSX9HnTL3mR/82NkoPdhLcyw4D/HTag8MGdXhYaE3/KZiaje4GMixGRF3lAn +w0RDJbkefmwUWnUIKMu+kKwzOc6PMRgE9GMkUHgL8gmna25SMWn0ujvK3/PFG4aX +XbgF1L8ZAgMBAAECggEAA1H2aPRsOSI4ru5ZsCw/Pth5cQXxLis7ctCzOO8nmTon +6or00gDWpUzlUWn41vNG59t99FFsQDJDQauDuryLEwNuvXEv1C0aAjCc8qnx8o/m +T3eHnTnGPPDeJoIHRgkdjI1VYQV0oWIONaCZxDDPrZ+7IUYsSbPkMGJwMP7U5nRo +0HSA2Pzx6U77ysA7JETYNw6/ISX8MHtAAzatWF79EGK3zCHfO7A1JKYFVoOINt/a +zOZJ8dvxB2rJisQKBFr0CbEk3t0ydlbDCRmLFtrd9VuBtPZdg75zRNkdH83jJwpA +sVn9QmcV+6xt2qFeS0ty33QZsM98cCZIHJ0WQUOc9QKBgQDEXO/0b56ccoPaHlFg +KojRtFVzv63BVz7X8XuOcYKHx4+5VpZQYFyzybhprksFvnk4AAd3SwotETdsd8Ul +9JmVPnyIbN9TD8xDK0FyX1P6wqVhAPeedsvm3MJsaWCkt9x+XXfsFREQDQo9BD/Y +ZCi6rwueBf/MVU813dm1vmqEnQKBgQDWN+Q7jxWz9nYocFd1mOwop8MxMvZFhZlq +zjzWtq89Cx5IdqZ92yp2BkOoIM/JuD/A1IwnWBzTNzargw+IR2DNFglesjVsi+iD +CHo+dQJA/2aWUXmnbPpMx9PDmSFTzhHQASZq5scWp+Gn/gjZ/oP9DYdYVk/8+jgJ +/at4kcVVrQKBgQCaCRWquAzCSQqphfLr7zHY3w/RduGEsz33A9WazexJOwDBsOzF +LHJMDsd9D16GqP5KMaupptHavJCvo9yhg5ke/B+QnWcqr0/auQnkAGfOY/Z7e9jD +FAmrli1mAdvwGtL6xbOXHIeAAdqwNq8mvps8pqgEVExvK9SxOtDXwwGn+QKBgCi2 +EIr9I2vDMCt5RjXULTWAxIjKHaGSxVhV/5vythUM0uGEoxmSGFy7zgnayoKUoJEe +E9C6XygI+zvXOZF1t0Diqj8z8RFC+ZpFdy39gMMnhrCUpWEbRepno6gtpvbNV/dG +8K0qVLXKjAkoLzh2tVDXTFyOcr8qMpI7gmX0liM1AoGBAKAY4gt6ycYVHpwuAEST +XC6ljcBPMuKWwzyQzYu9RjZpYpFVXqJfYutBBtGTq124xYI91cmOza7Pgruqb0SM +FBn5sHbbgIpBeZgOwphugWgHNosLNEyCy61iejfM2EreN9TQc7tYQu9D1QwLf74j +bC0tkEsljjK9IRNRuxFPtLnx +-----END PRIVATE KEY-----