From 4932f5c02c8445f22636a72b372f788fdc096d7c Mon Sep 17 00:00:00 2001 From: Skylar Ittner Date: Sat, 2 May 2020 17:12:55 -0600 Subject: [PATCH] First commit --- .gitignore | 3 + .htaccess | 4 + actions/ballotitems.php | 45 ++ actions/geoip.php | 39 ++ actions/ping.php | 9 + apisettings.php | 26 + composer.json | 15 + composer.lock | 346 +++++++++++++ database.mwb | Bin 0 -> 26561 bytes datasrc/adjectives.csv | 394 ++++++++++++++ datasrc/adjectives.ods | Bin 0 -> 27072 bytes datasrc/ballotitems.csv | 966 +++++++++++++++++++++++++++++++++++ datasrc/ballotitems.ods | Bin 0 -> 35894 bytes functions.php | 149 ++++++ index.php | 79 +++ nbproject/project.properties | 8 + nbproject/project.xml | 9 + required.php | 67 +++ settings.template.php | 31 ++ 19 files changed, 2190 insertions(+) create mode 100644 .gitignore create mode 100644 .htaccess create mode 100644 actions/ballotitems.php create mode 100644 actions/geoip.php create mode 100644 actions/ping.php create mode 100644 apisettings.php create mode 100644 composer.json create mode 100644 composer.lock create mode 100644 database.mwb create mode 100644 datasrc/adjectives.csv create mode 100644 datasrc/adjectives.ods create mode 100644 datasrc/ballotitems.csv create mode 100644 datasrc/ballotitems.ods create mode 100644 functions.php create mode 100644 index.php create mode 100644 nbproject/project.properties create mode 100644 nbproject/project.xml create mode 100644 required.php create mode 100644 settings.template.php diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..634002c --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/GeoLite2-City.mmdb +/database.mwb.bak +/settings.php \ No newline at end of file diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..c26f042 --- /dev/null +++ b/.htaccess @@ -0,0 +1,4 @@ + + RewriteEngine on + RewriteRule ([a-zA-Z0-9]+) index.php?action=$1 [PT] + \ No newline at end of file diff --git a/actions/ballotitems.php b/actions/ballotitems.php new file mode 100644 index 0000000..a2c7761 --- /dev/null +++ b/actions/ballotitems.php @@ -0,0 +1,45 @@ + 1000) { + $limit = 1000; +} + +$query = (isset($VARS["q"]) ? strtolower($VARS["q"]) : ""); + +$results = $database->select( + "ballotitems", + [ + "[>]ballotitemtypes" => ["itemtype" => "type"] + ], + [ + "itemid (id)", + "label", + "description", + "ballotitemtypes.text (type)" + ], [ + "OR" => [ + "label[~]" => $query, + "description[~]" => $query + ], + "LIMIT" => $limit + ] +); + +for ($i = 0; $i < count($results); $i++) { + $results[$i]["label"] = ucwords($results[$i]["label"]); +} + +header("Content-Type: application/json"); +sendJsonResp(null, "OK", ["count" => count($results), "results" => $results]); diff --git a/actions/geoip.php b/actions/geoip.php new file mode 100644 index 0000000..9943250 --- /dev/null +++ b/actions/geoip.php @@ -0,0 +1,39 @@ +city($clientip); + + sendJsonResp(null, "OK", [ + "location" => [ + "latitude" => $record->location->latitude, + "longitude" => $record->location->longitude + ], + "clientip" => $clientip, + "postcode" => $record->postal->code, + "attribution" => "This product includes GeoLite2 data created by MaxMind, available from https://www.maxmind.com." + ]); +} catch (GeoIp2\Exception\AddressNotFoundException $ex) { + sendJsonResp("Location not found for IP address.", "ERROR", ["clientip" => $clientip]); +} diff --git a/actions/ping.php b/actions/ping.php new file mode 100644 index 0000000..c764967 --- /dev/null +++ b/actions/ping.php @@ -0,0 +1,9 @@ + [ + "load" => "ping.php", + "vars" => [ + ] + ], + "ballotitems" => [ + "load" => "ballotitems.php", + "vars" => [ + "q (optional)" => "string", + "limit (optional)" => "/^[0-9]+$/" + ] + ], + "geoip" => [ + "load" => "geoip.php", + "vars" => [] + ] +]; diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..0f51974 --- /dev/null +++ b/composer.json @@ -0,0 +1,15 @@ +{ + "name": "netsyms_davidseyler/lecte-server", + "type": "project", + "require": { + "catfan/medoo": "^1.7", + "geoip2/geoip2": "^2.10", + "anthonymartin/geo-location": "^2.0" + }, + "license": "MPL-2.0", + "authors": [ + { + "name": "Netsyms Technologies" + } + ] +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..26be454 --- /dev/null +++ b/composer.lock @@ -0,0 +1,346 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "content-hash": "491d3c4a08593ec25cd5740a2f9e133d", + "packages": [ + { + "name": "anthonymartin/geo-location", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/anthonymartin/GeoLocation-PHP.git", + "reference": "e92d153c8ab97116ab1342826b74c64c3302b81d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/anthonymartin/GeoLocation-PHP/zipball/e92d153c8ab97116ab1342826b74c64c3302b81d", + "reference": "e92d153c8ab97116ab1342826b74c64c3302b81d", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^7" + }, + "type": "class", + "autoload": { + "psr-0": { + "AnthonyMartin": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Anthony Martin", + "email": "anthony@replaycreative.com", + "homepage": "http://replaycreative.com", + "role": "Developer" + } + ], + "description": "Powerful GeoCoding library: Retrieve bounding box coordinates, distances between geopoints, point in polygon, get longitude and latitude from addresses and more with GeoLocation for PHP", + "homepage": "https://github.com/anthonymartin/GeoLocation-PHP", + "keywords": [ + "bounding box coordinates", + "bounding coordinates", + "distances", + "geocode", + "geocoding", + "geolocation", + "latitude", + "longitude", + "point in polygon" + ], + "time": "2019-09-18T19:00:37+00:00" + }, + { + "name": "catfan/medoo", + "version": "v1.7.10", + "source": { + "type": "git", + "url": "https://github.com/catfan/Medoo.git", + "reference": "2d675f73e23f63bbaeb9a8aa33318659a3d3c32f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/catfan/Medoo/zipball/2d675f73e23f63bbaeb9a8aa33318659a3d3c32f", + "reference": "2d675f73e23f63bbaeb9a8aa33318659a3d3c32f", + "shasum": "" + }, + "require": { + "ext-pdo": "*", + "php": ">=5.4" + }, + "suggest": { + "ext-pdo_dblib": "For MSSQL or Sybase database on Linux/UNIX platform", + "ext-pdo_mysql": "For MySQL or MariaDB database", + "ext-pdo_oci": "For Oracle database", + "ext-pdo_oci8": "For Oracle version 8 database", + "ext-pdo_pqsql": "For PostgreSQL database", + "ext-pdo_sqlite": "For SQLite database", + "ext-pdo_sqlsrv": "For MSSQL database on both Window/Liunx platform" + }, + "type": "framework", + "autoload": { + "psr-4": { + "Medoo\\": "/src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Angel Lai", + "email": "angel@catfan.me" + } + ], + "description": "The lightweight PHP database framework to accelerate development", + "homepage": "https://medoo.in", + "keywords": [ + "database", + "database library", + "lightweight", + "mariadb", + "mssql", + "mysql", + "oracle", + "php framework", + "postgresql", + "sql", + "sqlite" + ], + "time": "2020-02-11T08:20:42+00:00" + }, + { + "name": "composer/ca-bundle", + "version": "1.2.7", + "source": { + "type": "git", + "url": "https://github.com/composer/ca-bundle.git", + "reference": "95c63ab2117a72f48f5a55da9740a3273d45b7fd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/95c63ab2117a72f48f5a55da9740a3273d45b7fd", + "reference": "95c63ab2117a72f48f5a55da9740a3273d45b7fd", + "shasum": "" + }, + "require": { + "ext-openssl": "*", + "ext-pcre": "*", + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8", + "psr/log": "^1.0", + "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\CaBundle\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", + "keywords": [ + "cabundle", + "cacert", + "certificate", + "ssl", + "tls" + ], + "time": "2020-04-08T08:27:21+00:00" + }, + { + "name": "geoip2/geoip2", + "version": "v2.10.0", + "source": { + "type": "git", + "url": "https://github.com/maxmind/GeoIP2-php.git", + "reference": "419557cd21d9fe039721a83490701a58c8ce784a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/maxmind/GeoIP2-php/zipball/419557cd21d9fe039721a83490701a58c8ce784a", + "reference": "419557cd21d9fe039721a83490701a58c8ce784a", + "shasum": "" + }, + "require": { + "ext-json": "*", + "maxmind-db/reader": "~1.5", + "maxmind/web-service-common": "~0.6", + "php": ">=5.6" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "2.*", + "phpunit/phpunit": "5.*", + "squizlabs/php_codesniffer": "3.*" + }, + "type": "library", + "autoload": { + "psr-4": { + "GeoIp2\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Gregory J. Oschwald", + "email": "goschwald@maxmind.com", + "homepage": "https://www.maxmind.com/" + } + ], + "description": "MaxMind GeoIP2 PHP API", + "homepage": "https://github.com/maxmind/GeoIP2-php", + "keywords": [ + "IP", + "geoip", + "geoip2", + "geolocation", + "maxmind" + ], + "time": "2019-12-12T18:48:39+00:00" + }, + { + "name": "maxmind-db/reader", + "version": "v1.6.0", + "source": { + "type": "git", + "url": "https://github.com/maxmind/MaxMind-DB-Reader-php.git", + "reference": "febd4920bf17c1da84cef58e56a8227dfb37fbe4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/maxmind/MaxMind-DB-Reader-php/zipball/febd4920bf17c1da84cef58e56a8227dfb37fbe4", + "reference": "febd4920bf17c1da84cef58e56a8227dfb37fbe4", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "conflict": { + "ext-maxminddb": "<1.6.0,>=2.0.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "2.*", + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpcov": "^3.0", + "phpunit/phpunit": "5.*", + "squizlabs/php_codesniffer": "3.*" + }, + "suggest": { + "ext-bcmath": "bcmath or gmp is required for decoding larger integers with the pure PHP decoder", + "ext-gmp": "bcmath or gmp is required for decoding larger integers with the pure PHP decoder", + "ext-maxminddb": "A C-based database decoder that provides significantly faster lookups" + }, + "type": "library", + "autoload": { + "psr-4": { + "MaxMind\\Db\\": "src/MaxMind/Db" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Gregory J. Oschwald", + "email": "goschwald@maxmind.com", + "homepage": "https://www.maxmind.com/" + } + ], + "description": "MaxMind DB Reader API", + "homepage": "https://github.com/maxmind/MaxMind-DB-Reader-php", + "keywords": [ + "database", + "geoip", + "geoip2", + "geolocation", + "maxmind" + ], + "time": "2019-12-19T22:59:03+00:00" + }, + { + "name": "maxmind/web-service-common", + "version": "v0.6.0", + "source": { + "type": "git", + "url": "https://github.com/maxmind/web-service-common-php.git", + "reference": "40c928bb0194c45088b369a17f9baef9c3fc7460" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/maxmind/web-service-common-php/zipball/40c928bb0194c45088b369a17f9baef9c3fc7460", + "reference": "40c928bb0194c45088b369a17f9baef9c3fc7460", + "shasum": "" + }, + "require": { + "composer/ca-bundle": "^1.0.3", + "ext-curl": "*", + "ext-json": "*", + "php": ">=5.6" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "2.*", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0", + "squizlabs/php_codesniffer": "3.*" + }, + "type": "library", + "autoload": { + "psr-4": { + "MaxMind\\Exception\\": "src/Exception", + "MaxMind\\WebService\\": "src/WebService" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Gregory Oschwald", + "email": "goschwald@maxmind.com" + } + ], + "description": "Internal MaxMind Web Service API", + "homepage": "https://github.com/maxmind/web-service-common-php", + "time": "2019-12-12T15:56:05+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [] +} diff --git a/database.mwb b/database.mwb new file mode 100644 index 0000000000000000000000000000000000000000..bfc7da6d51590fe429e8acb123828dfab396fed0 GIT binary patch literal 26561 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 KgfA1xkNzLXLC-z_ literal 0 HcmV?d00001 diff --git a/functions.php b/functions.php new file mode 100644 index 0000000..bd386fc --- /dev/null +++ b/functions.php @@ -0,0 +1,149 @@ + 5) { + for ($i = 2; $i < strlen($key) - 2; $i++) { + $resp[$i] = "*"; + } + } + return $resp; +} + +/** + * Check if the request is allowed + * @global array $VARS + * @return bool true if the request should continue, false if the request is bad + */ +function authenticate(): bool { + global $VARS, $SETTINGS; + // HTTP basic auth + if (!empty($_SERVER['PHP_AUTH_USER']) && !empty($_SERVER['PHP_AUTH_PW'])) { + $username = $_SERVER['PHP_AUTH_USER']; + $password = $_SERVER['PHP_AUTH_PW']; + } else if (!empty($VARS['username']) && !empty($VARS['password'])) { + $username = $VARS['username']; + $password = $VARS['password']; + } else { + return false; + } + $user = User::byUsername($username); + if (!$user->exists()) { + return false; + } + if ($user->checkPassword($password, true)) { + // Check that the user has permission to access the app + $perms = is_array($SETTINGS['api_permissions']) ? $SETTINGS['api_permissions'] : $SETTINGS['permissions']; + foreach ($perms as $perm) { + if (!$user->hasPermission($perm)) { + return false; + } + } + return true; + } + return false; +} + +/** + * Get the User whose credentials were used to make the request. + */ +function getRequestUser(): User { + global $VARS; + if (!empty($_SERVER['PHP_AUTH_USER'])) { + return User::byUsername($_SERVER['PHP_AUTH_USER']); + } else { + return User::byUsername($VARS['username']); + } +} + +function checkVars($vars, $or = false) { + global $VARS; + $ok = []; + foreach ($vars as $key => $val) { + if (strpos($key, "OR") === 0) { + checkVars($vars[$key], true); + continue; + } + + // Only check type of optional variables if they're set, and don't + // mark them as bad if they're not set + if (strpos($key, " (optional)") !== false) { + $key = str_replace(" (optional)", "", $key); + if (empty($VARS[$key])) { + continue; + } + } else { + if (empty($VARS[$key])) { + $ok[$key] = false; + continue; + } + } + + if (strpos($val, "/") === 0) { + // regex + $ok[$key] = preg_match($val, $VARS[$key]) === 1; + } else { + $checkmethod = "is_$val"; + $ok[$key] = !($checkmethod($VARS[$key]) !== true); + } + } + if ($or) { + $success = false; + $bad = ""; + foreach ($ok as $k => $v) { + if ($v) { + $success = true; + break; + } else { + $bad = $k; + } + } + if (!$success) { + http_response_code(422); + sendJsonResp("Variable $bad is missing or invalid.", "ERROR"); + } + } else { + foreach ($ok as $key => $bool) { + if (!$bool) { + http_response_code(422); + sendJsonResp("Variable $key is missing or invalid.", "ERROR"); + } + } + } +} diff --git a/index.php b/index.php new file mode 100644 index 0000000..61ed1b9 --- /dev/null +++ b/index.php @@ -0,0 +1,79 @@ += 1) { + $VARS["action"] = $route[0]; +} +if (count($route) >= 2 && strpos($route[1], "?") !== 0) { + for ($i = 1; $i < count($route); $i++) { + if (empty($route[$i]) || strpos($route[$i], "=") === false) { + continue; + } + $key = explode("=", $route[$i], 2)[0]; + $val = explode("=", $route[$i], 2)[1]; + $VARS[$key] = $val; + } +} + +if (strpos($route[count($route) - 1], "?") === 0) { + $morevars = explode("&", substr($route[count($route) - 1], 1)); + foreach ($morevars as $var) { + $key = explode("=", $var, 2)[0]; + $val = explode("=", $var, 2)[1]; + $VARS[$key] = $val; + } +} +//////// + +//if (!authenticate()) { +// header('WWW-Authenticate: Basic realm="' . $SETTINGS['site_title'] . '"'); +// header('HTTP/1.1 401 Unauthorized'); +// die("401 Unauthorized: you need to supply valid credentials."); +//} + +if (empty($VARS['action'])) { + http_response_code(400); + sendJsonResp("No action was requested.", "ERROR"); +} + +if (!isset($APIS[$VARS['action']])) { + http_response_code(404); + sendJsonResp("Specified action not found.", "ERROR"); +} + +$APIACTION = $APIS[$VARS["action"]]; + +if (!file_exists(__DIR__ . "/actions/" . $APIACTION["load"])) { + http_response_code(501); + sendJsonResp("Specified action is defined but no implementation was found.", "ERROR"); +} + +if (!empty($APIACTION["vars"])) { + checkVars($APIACTION["vars"]); +} + +require_once __DIR__ . "/actions/" . $APIACTION["load"]; diff --git a/nbproject/project.properties b/nbproject/project.properties new file mode 100644 index 0000000..a2c05c2 --- /dev/null +++ b/nbproject/project.properties @@ -0,0 +1,8 @@ +include.path=${php.global.include.path} +php.version=PHP_74 +project.license=mpl +source.encoding=UTF-8 +src.dir=. +tags.asp=false +tags.short=false +web.root=. diff --git a/nbproject/project.xml b/nbproject/project.xml new file mode 100644 index 0000000..b0f47fb --- /dev/null +++ b/nbproject/project.xml @@ -0,0 +1,9 @@ + + + org.netbeans.modules.php.project + + + LecteServer + + + diff --git a/required.php b/required.php new file mode 100644 index 0000000..882bc63 --- /dev/null +++ b/required.php @@ -0,0 +1,67 @@ +" + . "" + . "" + . "Error" + . "" + . "

A fatal application error has occurred.

" + . "(This isn't your fault.)" + . "

Details:

" + . "

" . htmlspecialchars($error) . "

"); +} + +use Medoo\Medoo; + +$database; +try { + $database = new Medoo([ + 'database_type' => $SETTINGS['database']['type'], + 'database_name' => $SETTINGS['database']['name'], + 'server' => $SETTINGS['database']['server'], + 'username' => $SETTINGS['database']['user'], + 'password' => $SETTINGS['database']['password'], + 'charset' => $SETTINGS['database']['charset'] + ]); +} catch (Exception $ex) { + echo json_encode(["status" => "ERROR", "message" => "Server error. Try again later."], JSON_PRETTY_PRINT); + die(); +} + +if ($_SERVER['REQUEST_METHOD'] === 'POST') { + $VARS = $_POST; +} else { + $VARS = $_GET; +} \ No newline at end of file diff --git a/settings.template.php b/settings.template.php new file mode 100644 index 0000000..0b78410 --- /dev/null +++ b/settings.template.php @@ -0,0 +1,31 @@ + true, + "database" => [ + "type" => "mysql", + "name" => "lecte", + "server" => "localhost", + "user" => "lecte", + "password" => "", + "charset" => "utf8" + ], + "app_name" => "Lecte", + "accounthub" => [ + "api" => "https://apps.netsyms.com/account/api/", + "home" => "https://apps.netsyms.com/account/home.php", + "key" => "" + ], + "url_base" => "/lecteapi/", + "mapquest_key" => "", + "mapbox_key" => "", + "geoip_database" => __DIR__ . "/GeoLite2-City.mmdb", + "mapdataurl" => "https://maps.netsyms.net/data/v3.json" +];