From 68a2b9f7f374c005ba3078603e3afcfa96007b76 Mon Sep 17 00:00:00 2001 From: Giandonato Inverso <70962472+giandonatoinverso@users.noreply.github.com> Date: Mon, 16 Oct 2023 19:49:29 +0200 Subject: [PATCH] Refactoring docker image building, NEW: added docker compose support Signed-off-by: giandonato.inverso@edempg.it --- .dockerignore | 3 + .gitignore | 3 +- Dockerfile | 24 +++++++ README.md | 7 ++- docker-compose.yml | 47 ++++++++++++++ docker/Dockerfile | 59 ------------------ docker/config/docker-entrypoint.sh | 24 ------- docker/config/info.php | 1 - docker/config/vhost.conf | 11 ---- docker/docker-compose.yml | 52 --------------- src/bulk_action.php | 30 +++++++-- ...nvironment.php.example => environment.php} | 13 ++-- src/dist/js/custom.js | 4 +- src/includes/footer.php | 2 +- src/install/sql/sample_data.sql | 40 ++++++------ src/login.php | 15 ++--- src/saved_qrcode/Ebay.svg | 10 --- src/saved_qrcode/Send BTC.jpg | Bin 0 -> 21888 bytes src/upgrade/upgrade.php | 4 +- 19 files changed, 141 insertions(+), 208 deletions(-) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 docker-compose.yml delete mode 100644 docker/Dockerfile delete mode 100644 docker/config/docker-entrypoint.sh delete mode 100644 docker/config/info.php delete mode 100644 docker/config/vhost.conf delete mode 100644 docker/docker-compose.yml rename src/config/{environment.php.example => environment.php} (74%) delete mode 100644 src/saved_qrcode/Ebay.svg create mode 100644 src/saved_qrcode/Send BTC.jpg diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..c1bf432 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +# Exclude specific directories +src/install/ +src/upgrade/ \ No newline at end of file diff --git a/.gitignore b/.gitignore index e8eb744..e00e331 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ .settings .project .idea -.DS_Store -src/config/environment.php \ No newline at end of file +.DS_Store \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..7e801d9 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,24 @@ +FROM php:latest + +RUN apt-get update && \ + apt-get install -y --no-install-recommends less nano tini curl bash tar git zip unzip && \ + #echo "**** # To install networking tools for testing purpose ****" && \ + apt-get install -y --no-install-recommends iputils-ping dnsutils net-tools procps && \ + #echo "**** cleanup ****" && \ + apt-get autoremove -y && \ + apt-get clean -y + +RUN apt-get update +RUN apt-get install -y --no-install-recommends libzip-dev libjpeg62-turbo-dev libpng-dev libfreetype6-dev + +RUN docker-php-source extract +RUN docker-php-ext-install pdo_mysql zip exif pcntl gd +RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli +RUN docker-php-ext-install gettext && docker-php-ext-enable gettext +RUN docker-php-ext-install sockets && docker-php-ext-enable sockets + +WORKDIR /var/www/html +COPY ./src ./ +RUN chmod 755 *; +EXPOSE 80 +CMD ["php", "-S", "0.0.0.0:80"] diff --git a/README.md b/README.md index 67add7c..c8f5ee8 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@
  • #1 Dynamic Qr code generator on GitHub with database to store Qr codes
  • Create unlimited Qr code
  • Easy installation wizard
  • -
  • Control panel with 2 access levels
  • +
  • Control panel with 2 access levels and multi-user support
  • Dashboard with advanced statistics on Qr code created and on scans
  • Dynamic Qr code
  • +
  • Version 2.2 – 16th October, 2023
  • + \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..df8fbe5 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,47 @@ +version: "3.2" +services: + php-dynamic-qrcode: + image: "giandonatoinverso/php-dynamic-qr-code:latest" + restart: "unless-stopped" + environment: + TYPE: "docker" + DATABASE_HOST: "php-dynamic-qrcode-db" + DATABASE_PORT: "3306" + DATABASE_NAME: "qrcode" + DATABASE_USER: "qrcode" + DATABASE_PASSWORD: "changeme" + DATABASE_PREFIX: "" + DATABASE_CHARSET: "utf8" + ports: + - 80:80 + depends_on: + - php-dynamic-qrcode-db + volumes: + - php_dynamic_qrcode_config_data:/var/www/html/config + - php_dynamic_qrcode_saved_qrcode_data:/var/www/html/saved_qrcode + networks: + - php-dynamic-qrcode-network + + php-dynamic-qrcode-db: + image: "giandonatoinverso/php-dynamic-qr-code-db:latest" + restart: "unless-stopped" + volumes: + - php_dynamic_qrcode_db_data:/var/lib/mysql + ports: + - '13306:3306' + environment: + MYSQL_ROOT_PASSWORD: "changeme" + MYSQL_DATABASE: "qrcode" + MYSQL_USER: "qrcode" + MYSQL_PASSWORD: "changeme" + networks: + - php-dynamic-qrcode-network + +volumes: + php_dynamic_qrcode_db_data: + php_dynamic_qrcode_config_data: + php_dynamic_qrcode_saved_qrcode_data: + +networks: + php-dynamic-qrcode-network: + driver: bridge \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile deleted file mode 100644 index ec79d08..0000000 --- a/docker/Dockerfile +++ /dev/null @@ -1,59 +0,0 @@ -FROM php:7.4.21-apache -ARG APP_VERSION=v1.0.6 - -RUN apt-get update && \ - apt-get install -y --no-install-recommends less nano tini curl tar git zip unzip && \ - #echo "**** # To install networking tools for testing purpose ****" && \ - apt-get install -y --no-install-recommends iputils-ping dnsutils net-tools procps && \ - #echo "**** cleanup ****" && \ - apt-get autoremove -y && \ - apt-get clean -y - -RUN curl -SL -o app.tar.gz "https://github.com/giandonatoinverso/PHP-Dynamic-Qr-code/archive/${APP_VERSION}.tar.gz" \ - && mkdir -p /app \ - && tar xvf app.tar.gz -C /app --strip-components=1 \ - && cp -r /app/qrcode/** /var/www/html \ - && rm app.tar.gz - -RUN apt-get update -RUN apt-get install -y --no-install-recommends libzip-dev libjpeg62-turbo-dev libpng-dev libfreetype6-dev - -# install composer -RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" -RUN php composer-setup.php -RUN rm composer-setup.php -RUN mv composer.phar /usr/local/bin/composer - -# Install extensions -RUN docker-php-source extract -RUN docker-php-ext-install pdo_mysql zip exif pcntl gd -RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli -RUN docker-php-ext-install gettext && docker-php-ext-enable gettext -RUN docker-php-ext-install sockets && docker-php-ext-enable sockets - -RUN mv "/usr/local/etc/php/php.ini-production" "/usr/local/etc/php/php.ini" - -WORKDIR /var/www/html - -COPY ./config/docker-entrypoint.sh /bin/docker-entrypoint.sh -RUN chmod +x /bin/docker-entrypoint.sh -COPY ./config/vhost.conf /etc/apache2/sites-available/000-default.conf -RUN a2enmod rewrite - -ENV APP_USER appuser -ARG PUID=1000 -ARG PGID=1000 -RUN groupadd -g ${PGID} $APP_USER \ - && useradd -M -u ${PUID} -g ${PGID} $APP_USER \ - && chown -R $APP_USER:$APP_USER /var/run/apache2 \ - && chown -R $APP_USER:$APP_USER /var/log \ - && chown -R $APP_USER:$APP_USER /etc/apache2 \ - && chown -R $APP_USER:$APP_USER /var/lib/apache2 \ - && chown -R $APP_USER:$APP_USER /var/www -USER $APP_USER -CMD apache2ctl -D FOREGROUND - -EXPOSE 80 - -# needs to fix install process to create database and then below line can be commented out -#ENTRYPOINT ["/bin/docker-entrypoint.sh"] diff --git a/docker/config/docker-entrypoint.sh b/docker/config/docker-entrypoint.sh deleted file mode 100644 index 9346f63..0000000 --- a/docker/config/docker-entrypoint.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash -set -o errexit -o nounset - -APP_PATH=/var/www/html - -echo "##### coping config file #####" -cp $APP_PATH/install/config/database.php $APP_PATH/config/config.php - -echo "##### setting database hostname #####" -sed -i "s/%HOSTNAME%/$DATABASE_HOST/" $APP_PATH/config/config.php - -echo "##### setting database username #####" -sed -i "s/%USERNAME%/$DATABASE_USER/" $APP_PATH/config/config.php - -echo "##### setting database password #####" -sed -i "s/%PASSWORD%/$DATABASE_PASSWORD/" $APP_PATH/config/config.php - -echo "##### setting database name #####" -sed -i "s/%DATABASE%/$DATABASE_NAME/" $APP_PATH/config/config.php - -echo "#### Deleting install folder #####" -rm -r $APP_PATH/install - -exec apache2-foreground \ No newline at end of file diff --git a/docker/config/info.php b/docker/config/info.php deleted file mode 100644 index 5a1884f..0000000 --- a/docker/config/info.php +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docker/config/vhost.conf b/docker/config/vhost.conf deleted file mode 100644 index 1c9b57c..0000000 --- a/docker/config/vhost.conf +++ /dev/null @@ -1,11 +0,0 @@ - - DocumentRoot /var/www/html/ - - AllowOverride all - Require all granted - - - ErrorLog ${APACHE_LOG_DIR}/error.log - CustomLog ${APACHE_LOG_DIR}/access.log combined - - \ No newline at end of file diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml deleted file mode 100644 index a9c1932..0000000 --- a/docker/docker-compose.yml +++ /dev/null @@ -1,52 +0,0 @@ -version: "3.9" - -services: - qrcode: - build: - context: . - args: - PUID: ${PUID} - PGID: ${PGID} - image: qrcode:1.0 - container_name: qrcode - restart: "unless-stopped" - networks: - - qrcode_network - ports: - - "8080:80" - user: "${PUID}:${PGID}" - environment: - ADMIN_USER: "superadmin" - ADMIN_PASSWORD: "superadmin" - DATABASE_HOST: "mariadb" - DATABASE_PORT: "3306" - DATABASE_NAME: "qrcode" - DATABASE_USER: "qrcode" - DATABASE_PASSWORD: "changeme" - DATABASE_PREFIX: "" - DATABASE_CHARSET: "utf8" - volumes: - - ./data/app/config:/var/www/html/config - - ./data/app/saved_qrcode:/var/www/html/saved_qrcode - - mariadb: - image: mariadb:10.5 - container_name: mariadb - command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW - restart: "unless-stopped" - environment: - MARIADB_ROOT_PASSWORD: "changeme" - MARIADB_DATABASE: "qrcode" - MARIADB_USER: "qrcode" - MARIADB_PASSWORD: "changeme" - networks: - - qrcode_network - volumes: - - ./data/mariadb:/var/lib/mysql - ports: - - 3306:3306 - -networks: - qrcode_network: - driver: bridge - name: qrcode diff --git a/src/bulk_action.php b/src/bulk_action.php index ab321d6..1c7e46b 100644 --- a/src/bulk_action.php +++ b/src/bulk_action.php @@ -5,10 +5,29 @@ require_once 'config/config.php'; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $db = getDbInstance(); $json = json_decode(file_get_contents('php://input'), true); - $action = filter_var($json['action'], FILTER_SANITIZE_STRING); + + if (isset($json['action'])) { + $action = filter_var($json['action'], FILTER_SANITIZE_FULL_SPECIAL_CHARS); + } else { + echo json_encode([ + 'data' => 'Missing action field in the request.', + 'status' => 400 + ]); + exit(); + } + $params = $json['params']; $files = []; - $type = filter_var($json['type'], FILTER_SANITIZE_STRING); + + if (isset($json['type'])) { + $type = filter_var($json['type'], FILTER_SANITIZE_FULL_SPECIAL_CHARS); + } else { + echo json_encode([ + 'data' => 'Type action field in the request.', + 'status' => 400 + ]); + exit(); + } if (count($params) == 0) { echo json_encode([ @@ -25,9 +44,10 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { } $zip = new ZipArchive(); - $relative_dir = SAVED_QRCODE_FOLDER. 'zip/qrcodes_'. $_SESSION['user_id'] .'.zip'; - unlink($relative_dir); - $url_path = SAVED_QRCODE_URL . 'zip/qrcodes_'. $_SESSION['user_id'] .'.zip'; + $uniqid = uniqid(); + $relative_dir = SAVED_QRCODE_FOLDER. 'zip/qrcodes_'. $uniqid .'.zip'; + @unlink($relative_dir); + $url_path = SAVED_QRCODE_URL . 'zip/qrcodes_'. $uniqid .'.zip'; $zip->open($relative_dir, ZipArchive::CREATE); foreach ($files as $file) { diff --git a/src/config/environment.php.example b/src/config/environment.php similarity index 74% rename from src/config/environment.php.example rename to src/config/environment.php index 70640ed..7bab326 100644 --- a/src/config/environment.php.example +++ b/src/config/environment.php @@ -4,27 +4,22 @@ | DOCKER INSTALLATION |-------------------------------------------------------------------------- */ -$docker_cid = getenv('DOCKER_CID'); -if(is_string($docker_cid)) { +if(is_string(Getenv('TYPE')) && Getenv('TYPE') == "docker") { define('DATABASE_HOST', Getenv('DATABASE_HOST')); define('DATABASE_PORT', filter_var(Getenv('DATABASE_PORT'), FILTER_VALIDATE_INT)); define('DATABASE_NAME', Getenv('DATABASE_NAME')); define('DATABASE_USER', Getenv('DATABASE_USER')); define('DATABASE_PASSWORD', Getenv('DATABASE_PASSWORD')); - // This must have a trailing underscore. - // Example: qr_ - define('DATABASE_PREFIX', Getenv('DATABASE_PREFIX')); + define('DATABASE_PREFIX', Getenv('DATABASE_PREFIX')); // This must have a trailing underscore. Example: qr_ define('DATABASE_CHARSET', Getenv('DATABASE_CHARSET')); } else { - define('DATABASE_HOST', "mariadb"); + define('DATABASE_HOST', "localhost"); define('DATABASE_PORT', "3306"); define('DATABASE_NAME', "qrcode"); define('DATABASE_USER', "root"); define('DATABASE_PASSWORD', "root"); - // This must have a trailing underscore. - // Example: qr_ - define('DATABASE_PREFIX', ""); + define('DATABASE_PREFIX', ""); // This must have a trailing underscore. Example: qr_ define('DATABASE_CHARSET', "utf8"); } /* diff --git a/src/dist/js/custom.js b/src/dist/js/custom.js index b4810b6..19a57e1 100644 --- a/src/dist/js/custom.js +++ b/src/dist/js/custom.js @@ -453,7 +453,7 @@ }); const data = { - action: $('select[name=bulk-action]').val(), + action: 'download', params: params, type: $('input[name=type]').val() } @@ -478,7 +478,7 @@ }, error: (err) => { $('#err-msg').empty(); - $('#err-msg').append(' ' + res.data); + $('#err-msg').append(' ' + err.responseText); $('#err-msg').css('display', 'block'); console.log(err); } diff --git a/src/includes/footer.php b/src/includes/footer.php index 32a7562..ec78f93 100644 --- a/src/includes/footer.php +++ b/src/includes/footer.php @@ -9,7 +9,7 @@ Copyright © PHP Qrcode Generator - All rights reserved by Giandonato Inverso.
    - Version 2.1.0 + Version 2.2.0
    diff --git a/src/install/sql/sample_data.sql b/src/install/sql/sample_data.sql index 7e417c8..f6377d3 100644 --- a/src/install/sql/sample_data.sql +++ b/src/install/sql/sample_data.sql @@ -23,7 +23,7 @@ INSERT INTO `#prefix#users` (`id`, `username`, `password`, `series_id`, `remembe CREATE TABLE IF NOT EXISTS `#prefix#dynamic_qrcodes` ( `id` int(10) NOT NULL AUTO_INCREMENT, - `id_owner` int(25) NOT NULL AUTO_INCREMENT, + `id_owner` int(25) NULL DEFAULT NULL, `filename` varchar(45) NOT NULL, `format` varchar(45) DEFAULT NULL, `identifier` longtext, @@ -39,16 +39,16 @@ CREATE TABLE IF NOT EXISTS `#prefix#dynamic_qrcodes` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ; INSERT INTO `#prefix#dynamic_qrcodes` (`id`, `id_owner`, `filename`, `format`, `identifier`, `link`, `qrcode`, `scan`, `state`, `created_by`, `created_at`, `updated_by`, `updated_at`) VALUES -(1, 0, 'Facebook', 'png', 'rcCeC', 'https://facebook.com', 'Facebook.png', 0, 'enable', 0, '2020-09-01 15:35:13', 0, NULL), -(2, 0, 'Amazon', 'png', 'F7GOY6', 'https://amazon.com', 'Amazon.png', 0, 'enable', 0, '2020-09-01 15:40:34', 0, NULL), -(3, 0, 'Youtube', 'png', '8dK5Nd', 'https://youtube.com', 'Youtube.png', 0, 'enable', 0, '2020-09-01 15:41:43', 0, NULL), -(4, 0, 'Apple', 'jpg', '7zxTKn', 'https://apple.com', 'Apple.jpg', 0, 'enable', 0, '2020-09-01 15:44:20', 0, NULL), -(5, 0, 'Ebay', 'svg', 'a4F3kr', 'https://ebay.com', 'Ebay.svg', 0, 'enable', 0, '2020-09-01 15:44:46', 0, NULL), -(6, 0, 'Google', 'png', 'saJV1y', 'https://google.it', 'Google.png', 0, 'enable', 0, '2020-09-01 15:46:37', 0, NULL); +(1, 1, 'Facebook', 'png', 'rcCeC', 'https://facebook.com', 'Facebook.png', 0, 'enable', 0, '2020-09-01 15:35:13', 0, NULL), +(2, 1, 'Amazon', 'png', 'F7GOY6', 'https://amazon.com', 'Amazon.png', 0, 'enable', 0, '2020-09-01 15:40:34', 0, NULL), +(3, 1, 'Youtube', 'png', '8dK5Nd', 'https://youtube.com', 'Youtube.png', 0, 'enable', 0, '2020-09-01 15:41:43', 0, NULL), +(4, 1, 'Apple', 'jpg', '7zxTKn', 'https://apple.com', 'Apple.jpg', 0, 'enable', 0, '2020-09-01 15:44:20', 0, NULL), +(5, 1, 'Ebay', 'svg', 'a4F3kr', 'https://ebay.com', 'Ebay.svg', 0, 'enable', 0, '2020-09-01 15:44:46', 0, NULL), +(6, 1, 'Google', 'png', 'saJV1y', 'https://google.it', 'Google.png', 0, 'enable', 0, '2020-09-01 15:46:37', 0, NULL); CREATE TABLE IF NOT EXISTS `#prefix#static_qrcodes` ( `id` int(10) NOT NULL AUTO_INCREMENT, - `id_owner` int(25) NOT NULL AUTO_INCREMENT, + `id_owner` int(25) NULL DEFAULT NULL, `filename` varchar(45) CHARACTER SET utf8 NOT NULL, `format` varchar(45) DEFAULT NULL, `type` varchar(45) CHARACTER SET utf8 DEFAULT NULL, @@ -63,18 +63,18 @@ CREATE TABLE IF NOT EXISTS `#prefix#static_qrcodes` ( ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ; INSERT INTO `#prefix#static_qrcodes` (`id`, `id_owner`, `filename`, `format`, `type`, `content`, `qrcode`, `state`, `created_by`, `created_at`, `updated_by`, `updated_at`) VALUES -(1, 0, 'Text qr code', 'png', 'text', 'Text: My first text', 'Text qr code.png', 'enable', 0, '2020-08-24 08:41:31', 0, NULL), -(2, 0, 'Email', 'jpg', 'email', 'Email: assistance@domain.com
    Subject: Assistance request
    Message: Regarding my order N ° ... I require assistance', 'Email.jpg', 'enable', 0, '2020-08-24 08:44:13', 0, NULL), -(3, 0, 'Call me', 'png', 'phone', 'Phone number: 12563776756', 'Call me.png', 'enable', 0, '2020-08-24 08:45:10', 0, NULL), -(4, 0, 'Send sms', 'png', 'sms', 'Phone number: 12563776756
    Message: Test message', 'Send sms.png', 'enable', 0, '2020-08-24 08:46:52', 0, NULL), -(5, 0, 'wa.me', 'svg', 'whatsapp', 'Phone number: 12563776756
    Message: Hey there! I am using WhatsApp', 'wa.me.svg', 'enable', 0, '2020-08-24 08:47:49', 0, NULL), -(6, 0, 'New York', 'png', 'location', 'Latitude: 40.7127753
    Longitude: -74.0059728', 'New York.png', 'enable', 0, '2020-08-24 08:51:55', 0, NULL), -(7, 0, 'John Doe', 'png', 'vcard', '
    Full name: John Doe
    Nickname: John
    Email: john@domain.com
    Website: https://johndoe.com
    Company: Doe Inc.
    Role: CEO
    Categories: electronics, vcard
    Note:
    Phone: 412-999-9988
    Home Phone: 412-999-5555
    Work phone: 412-444-2222
    Address: 123 Main Street Anywhere 15523 Arizona
    ', 'John Doe.png', 'enable', 0, '2020-08-24 08:55:59', 0, NULL), -(8, 0, 'Boat party', 'png', 'event', '
    Title: Party with friends
    Start event: 2020-08-26 09:00 AM
    End event: 2020-08-26 03:00 PM
    Location: New York
    Description: Happy Birthday Carl!
    URL:
    ', 'Boat party.png', 'enable', 0, '2020-08-24 08:58:20', 0, NULL), -(9, 0, 'Save me', 'svg', 'bookmark', 'Title: Google search
    Url: https://google.it', 'Save me.svg', 'enable', 0, '2020-08-24 08:59:46', 0, NULL), -(10, 0, 'Free wifi', 'png', 'wifi', 'Encryption: WPA
    SSID: TP-LINK-AB123
    Password: bBB8MR7TwbbUWMZT', 'Free wifi.png', 'enable', 0, '2020-08-24 09:02:35', 0, NULL), -(11, 0, 'Pay here', 'png', 'paypal', '
    Payment type: _click
    Email: paypal@domain.com
    Item name: T-shirt
    Item id: 177
    Amount: 15
    Currency: USD
    Shipping: 4
    Tax rate:
    ', 'Pay here.png', 'enable', 0, '2020-08-24 09:04:13', 0, NULL), -(12, 0, 'Send BTC ', 'jpg', 'bitcoin', 'BTC address: 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
    Amount: 1
    Label:
    Message: ', 'Send BTC .jpg', 'enable', 0, '2020-09-01 10:51:08', 0, NULL); +(1, 1, 'Text qr code', 'png', 'text', 'Text: My first text', 'Text qr code.png', 'enable', 0, '2020-08-24 08:41:31', 0, NULL), +(2, 1, 'Email', 'jpg', 'email', 'Email: assistance@domain.com
    Subject: Assistance request
    Message: Regarding my order N ° ... I require assistance', 'Email.jpg', 'enable', 0, '2020-08-24 08:44:13', 0, NULL), +(3, 1, 'Call me', 'png', 'phone', 'Phone number: 12563776756', 'Call me.png', 'enable', 0, '2020-08-24 08:45:10', 0, NULL), +(4, 1, 'Send sms', 'png', 'sms', 'Phone number: 12563776756
    Message: Test message', 'Send sms.png', 'enable', 0, '2020-08-24 08:46:52', 0, NULL), +(5, 1, 'wa.me', 'svg', 'whatsapp', 'Phone number: 12563776756
    Message: Hey there! I am using WhatsApp', 'wa.me.svg', 'enable', 0, '2020-08-24 08:47:49', 0, NULL), +(6, 1, 'New York', 'png', 'location', 'Latitude: 40.7127753
    Longitude: -74.0059728', 'New York.png', 'enable', 0, '2020-08-24 08:51:55', 0, NULL), +(7, 1, 'John Doe', 'png', 'vcard', '
    Full name: John Doe
    Nickname: John
    Email: john@domain.com
    Website: https://johndoe.com
    Company: Doe Inc.
    Role: CEO
    Categories: electronics, vcard
    Note:
    Phone: 412-999-9988
    Home Phone: 412-999-5555
    Work phone: 412-444-2222
    Address: 123 Main Street Anywhere 15523 Arizona
    ', 'John Doe.png', 'enable', 0, '2020-08-24 08:55:59', 0, NULL), +(8, 1, 'Boat party', 'png', 'event', '
    Title: Party with friends
    Start event: 2020-08-26 09:00 AM
    End event: 2020-08-26 03:00 PM
    Location: New York
    Description: Happy Birthday Carl!
    URL:
    ', 'Boat party.png', 'enable', 0, '2020-08-24 08:58:20', 0, NULL), +(9, 1, 'Save me', 'svg', 'bookmark', 'Title: Google search
    Url: https://google.it', 'Save me.svg', 'enable', 0, '2020-08-24 08:59:46', 0, NULL), +(10, 1, 'Free wifi', 'png', 'wifi', 'Encryption: WPA
    SSID: TP-LINK-AB123
    Password: bBB8MR7TwbbUWMZT', 'Free wifi.png', 'enable', 0, '2020-08-24 09:02:35', 0, NULL), +(11, 1, 'Pay here', 'png', 'paypal', '
    Payment type: _click
    Email: paypal@domain.com
    Item name: T-shirt
    Item id: 177
    Amount: 15
    Currency: USD
    Shipping: 4
    Tax rate:
    ', 'Pay here.png', 'enable', 0, '2020-08-24 09:04:13', 0, NULL), +(12, 1, 'Send BTC', 'jpg', 'bitcoin', 'BTC address: 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
    Amount: 1
    Label:
    Message: ', 'Send BTC .jpg', 'enable', 0, '2020-09-01 10:51:08', 0, NULL); /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; diff --git a/src/login.php b/src/login.php index 4d1d90c..ed92009 100644 --- a/src/login.php +++ b/src/login.php @@ -25,16 +25,13 @@ if (isset($_COOKIE['series_id']) && isset($_COOKIE['remember_token'])) // User found. verify remember token if (password_verify($remember_token, $row['remember_token'])) { - // Verify if expiry time is modified. - $expires = strtotime($row['expires']); + $expires = strtotime($row['expires']); - if (strtotime(date()) > $expires) - { - // Remember Cookie has expired. - clearAuthCookie(); - header('Location: login.php'); - exit; - } + if (time() > $expires) { + clearAuthCookie(); + header('Location: login.php'); + exit; + } $_SESSION['user_logged_in'] = TRUE; $_SESSION['type'] = $row['type']; diff --git a/src/saved_qrcode/Ebay.svg b/src/saved_qrcode/Ebay.svg deleted file mode 100644 index b181e2b..0000000 --- a/src/saved_qrcode/Ebay.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - QR Code - www.giandonatoinverso.it/read.php?id=a4F3kr - - - - - diff --git a/src/saved_qrcode/Send BTC.jpg b/src/saved_qrcode/Send BTC.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3fe7691ca8313bdf21e0ac25fa7c6b23dd325297 GIT binary patch literal 21888 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 literal 0 HcmV?d00001 diff --git a/src/upgrade/upgrade.php b/src/upgrade/upgrade.php index c79e75e..2ddcab7 100644 --- a/src/upgrade/upgrade.php +++ b/src/upgrade/upgrade.php @@ -30,14 +30,14 @@ if ($conn->query($sql) === TRUE) { echo "Error renaming column: " . $conn->error . "
    "; } -$sql = "ALTER TABLE " . DATABASE_PREFIX . "dynamic_qrcodes" . " ADD `id_owner` INT(25) NULL AFTER `id`"; +$sql = "ALTER TABLE " . DATABASE_PREFIX . "dynamic_qrcodes" . " ADD `id_owner` INT(25) NULL DEFAULT NULL AFTER `id`"; if ($conn->query($sql) === TRUE) { echo "The id_owner column has been added to dynamic_qrcodes successfully.
    "; } else { echo "Error adding column: " . $conn->error . "
    "; } -$sql = "ALTER TABLE " . DATABASE_PREFIX . "static_qrcodes" . " ADD `id_owner` INT(25) NULL AFTER `id`"; +$sql = "ALTER TABLE " . DATABASE_PREFIX . "static_qrcodes" . " ADD `id_owner` INT(25) NULL DEFAULT NULL AFTER `id`"; if ($conn->query($sql) === TRUE) { echo "The id_owner column has been added to static_qrcodes successfully.
    "; } else {