oranfry/jars

该软件包最新版本(3.2.3)没有可用的许可信息。

3.2.3 2024-08-24 09:49 UTC

README

安装Jars

在此文档中,我使用

  • $HOME/Projects/jars作为安装目录,但您可以使用任何目录。对于生产环境,我使用/var/www/jars
  • $HOME/Projects/jars/var作为变量文件目录,但在生产环境中我会使用/var(默认)。

获取项目

cd "$HOME/Projects"
git clone https://github.com/oranfry/jars.git
cd jars

composer install
npm install
./build

测试Jars

cd "$HOME/Projects/jars"
./test

为您的门户初始化一个空数据库

一个空数据库仅仅是一个空目录

mkdir -p "$HOME/Projects/jars/var/dbs/myportal"

创建您的门户

mkdir -p "$HOME/Projects/jars/var/portals/myportal"

// Generate a sequence secret
php -r 'echo base64_encode(random_bytes(63)) . "\n";'

创建文件$HOME/Projects/jars/var/dbs/myportal/portal.php,内容如下,将SECR3T替换为您上面生成的秘密

<?php

return (object) [
    'root_username' => 'root',
    'root_password' => 'test123',
    'sequence' => (object) [
        'secret' => 'SECR3T',
        'banned_chars' => ['/', '=', '+'],
    ],
];

在门户的生命周期中,您必须不要更改您的秘密或banned_chars。这样做会导致数据库被使用时数据损坏。

现在,扫描前一百万个ID以查找冲突(不可用ID)

cd "$HOME/Projects/jars"
bin/jars "--portal-home=$HOME/jars/var/portals/acme" "--db-home=$HOME/Unsynched/jars/var/dbs/acme" -u acme -p test123 collisions 1000000

要应用上述命令的结果,将其输出与portal.php中设置的序列合并

<?php

return (object) [
    'root_username' => 'root',
    'root_password' => 'test123',
    'sequence' => (object) [
        'secret' => 'SECR3T',
        'banned_chars' => ['/', '=', '+'],
        'max' => 1000000,                   // example added line
        'collisions' => [398734, 541078],   // example added line
    ],
];

在百万以下的情况下,不太可能有冲突,在这种情况下,冲突将是一个空数组。

您永远不应该删除此处记录的冲突,也不应该将最大值增加到实际扫描值以上。如果这样做,可能会发放一个之前已经发放过的新的ID!

一旦jars达到最大值,它将拒绝发放任何新的ID作为安全措施。您将无法向数据库添加数据,但其他一切都将按正常工作。

您可以在任何时候通过重新运行带有更高参数的冲突命令来增加最大值,并用命令给出的那些值覆盖门户配置中的相关字段;冲突命令将重新找到所有已知的冲突以及范围内的任何新冲突。

在扫描数百万个ID时,可能需要为PHP分配更多的内存。

公开jars管理

将您的Web服务器指向$HOME/Projects/jars/public