diff --git a/composer.json b/composer.json index ec66aa9..7009fad 100644 --- a/composer.json +++ b/composer.json @@ -1,21 +1,17 @@ { "require": { "flashwave/index": "^0.2410", + "flashii/rpcii": "^2.0", "flashii/apii": "^0.3", "sentry/sdk": "^4.0", "nesbot/carbon": "^3.7" }, "require-dev": { - "phpstan/phpstan": "^1.11" + "phpstan/phpstan": "^2.0" }, "autoload": { "psr-4": { "EEPROM\\": "src" } - }, - "config": { - "allow-plugins": { - "php-http/discovery": true - } } } diff --git a/composer.lock b/composer.lock index 75d78ed..f274dde 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "fa0ddf7057b8dfb31f5584cffd77255e", + "content-hash": "e0f4f136fd5f294da46e13de674e9a2b", "packages": [ { "name": "carbonphp/carbon-doctrine-types", @@ -112,6 +112,45 @@ "homepage": "https://api.flashii.net", "time": "2024-11-22T21:36:01+00:00" }, + { + "name": "flashii/rpcii", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://patchii.net/flashii/rpcii-php.git", + "reference": "1cbc1edb061612dc1d014a82e24b741d2a0bc11a" + }, + "require": { + "ext-msgpack": ">=2.2", + "flashwave/index": "^0.2410", + "php": ">=8.3" + }, + "require-dev": { + "phpstan/phpstan": "^2.0", + "phpunit/phpunit": "^11.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "RPCii\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "bsd-3-clause-clear" + ], + "authors": [ + { + "name": "flashwave", + "email": "packagist@flash.moe", + "homepage": "https://flash.moe", + "role": "mom" + } + ], + "description": "HTTP RPC client/server library.", + "homepage": "https://railgun.sh/rpcii", + "time": "2024-11-14T02:22:09+00:00" + }, { "name": "flashwave/index", "version": "v0.2410.830205", @@ -1934,20 +1973,20 @@ "packages-dev": [ { "name": "phpstan/phpstan", - "version": "1.12.13", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "9b469068840cfa031e1deaf2fa1886d00e20680f" + "reference": "50d276fc3bf1430ec315f2f109bbde2769821524" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9b469068840cfa031e1deaf2fa1886d00e20680f", - "reference": "9b469068840cfa031e1deaf2fa1886d00e20680f", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/50d276fc3bf1430ec315f2f109bbde2769821524", + "reference": "50d276fc3bf1430ec315f2f109bbde2769821524", "shasum": "" }, "require": { - "php": "^7.2|^8.0" + "php": "^7.4|^8.0" }, "conflict": { "phpstan/phpstan-shim": "*" @@ -1988,7 +2027,7 @@ "type": "github" } ], - "time": "2024-12-17T17:00:20+00:00" + "time": "2024-12-17T17:14:01+00:00" } ], "aliases": [], diff --git a/config.example.cfg b/config.example.cfg index df7c522..64a0cc2 100644 --- a/config.example.cfg +++ b/config.example.cfg @@ -6,9 +6,13 @@ misuzu:endpoint https://flashii.net/_sockchat/verify domain:short i.flashii.net domain:api eeprom.flashii.net +;storage:local /eeprom/storage + ; List of allowed remote domains cors:origins flashii.net chat.flashii.net sockchat.flashii.net +;rpcii:secret beans + ;sentry:dsn https://sentry dsn here ;sentry:tracesRate 1.0 ;sentry:profilesRate 1.0 diff --git a/src/EEPROMContext.php b/src/EEPROMContext.php index 0759aa3..c67356e 100644 --- a/src/EEPROMContext.php +++ b/src/EEPROMContext.php @@ -4,6 +4,8 @@ namespace EEPROM; use Index\Config\Config; use Index\Db\DbConnection; use EEPROM\Auth\AuthInfo; +use RPCii\HmacVerificationProvider; +use RPCii\Server\HttpRpcServer; class EEPROMContext { public private(set) DatabaseContext $database; @@ -39,6 +41,11 @@ class EEPROMContext { $routingCtx->register($this->database); if($isApiDomain) { + $rpcServer = new HttpRpcServer; + $routingCtx->register($rpcServer->createRouteHandler( + new HmacVerificationProvider(fn() => $this->config->getString('rpcii:secret')) + )); + $routingCtx->register(new Auth\AuthRoutes( $this->config->scopeTo('apii'), $this->authInfo,