Skip to content

Commit 5c99cae

Browse files
committed
Merge branch 'develop' into feature/vuejs
2 parents c80c856 + 3290d39 commit 5c99cae

File tree

8 files changed

+186
-29
lines changed

8 files changed

+186
-29
lines changed

app/Http/Controllers/Admin/ServersController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -599,7 +599,7 @@ public function resetDatabasePassword(Request $request, $server)
599599
['id', '=', $request->input('database')],
600600
]);
601601

602-
$this->databasePasswordService->handle($database, str_random(20));
602+
$this->databasePasswordService->handle($database, str_random(24));
603603

604604
return response('', 204);
605605
}

app/Models/Node.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,8 @@ class Node extends Model implements CleansAttributes, ValidableContract
110110
'disk' => 'numeric|min:1',
111111
'disk_overallocate' => 'numeric|min:-1',
112112
'daemonBase' => 'regex:/^([\/][\d\w.\-\/]+)$/',
113-
'daemonSFTP' => 'numeric|between:1024,65535',
114-
'daemonListen' => 'numeric|between:1024,65535',
113+
'daemonSFTP' => 'numeric|between:1,65535',
114+
'daemonListen' => 'numeric|between:1,65535',
115115
'maintenance_mode' => 'boolean',
116116
'upload_size' => 'int|between:1,1024',
117117
];

app/Services/Databases/DatabaseManagementService.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public function create($server, array $data)
6969
$data['server_id'] = $server;
7070
$data['database'] = sprintf('s%d_%s', $server, $data['database']);
7171
$data['username'] = sprintf('u%d_%s', $server, str_random(10));
72-
$data['password'] = $this->encrypter->encrypt(str_random(16));
72+
$data['password'] = $this->encrypter->encrypt(str_random(24));
7373

7474
$this->database->beginTransaction();
7575
try {

app/Services/Users/TwoFactorSetupService.php

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,27 @@
99

1010
namespace Pterodactyl\Services\Users;
1111

12+
use Illuminate\Contracts\Config\Repository as ConfigRepository;
1213
use Pterodactyl\Models\User;
13-
use PragmaRX\Google2FA\Google2FA;
14+
use PragmaRX\Google2FAQRCode\Google2FA;
1415
use Illuminate\Support\Collection;
1516
use Illuminate\Contracts\Encryption\Encrypter;
1617
use Pterodactyl\Contracts\Repository\UserRepositoryInterface;
1718

1819
class TwoFactorSetupService
1920
{
21+
/**
22+
* @var \Illuminate\Contracts\Config\Repository
23+
*/
24+
private $config;
25+
2026
/**
2127
* @var \Illuminate\Contracts\Encryption\Encrypter
2228
*/
2329
private $encrypter;
2430

2531
/**
26-
* @var \PragmaRX\Google2FA\Google2FA
32+
* @var PragmaRX\Google2FAQRCode\Google2FA
2733
*/
2834
private $google2FA;
2935

@@ -35,15 +41,18 @@ class TwoFactorSetupService
3541
/**
3642
* TwoFactorSetupService constructor.
3743
*
44+
* @param \Illuminate\Contracts\Config\Repository $config
3845
* @param \Illuminate\Contracts\Encryption\Encrypter $encrypter
39-
* @param \PragmaRX\Google2FA\Google2FA $google2FA
46+
* @param PragmaRX\Google2FAQRCode\Google2FA $google2FA
4047
* @param \Pterodactyl\Contracts\Repository\UserRepositoryInterface $repository
4148
*/
4249
public function __construct(
50+
ConfigRepository $config,
4351
Encrypter $encrypter,
4452
Google2FA $google2FA,
4553
UserRepositoryInterface $repository
4654
) {
55+
$this->config = $config;
4756
$this->encrypter = $encrypter;
4857
$this->google2FA = $google2FA;
4958
$this->repository = $repository;
@@ -61,8 +70,8 @@ public function __construct(
6170
*/
6271
public function handle(User $user): Collection
6372
{
64-
$secret = $this->google2FA->generateSecretKey(config('pterodactyl.auth.2fa.bytes'));
65-
$image = $this->google2FA->getQRCodeGoogleUrl(config('app.name'), $user->email, $secret);
73+
$secret = $this->google2FA->generateSecretKey($this->config->get('pterodactyl.auth.2fa.bytes'));
74+
$image = $this->google2FA->getQRCodeInline($this->config->get('app.name'), $user->email, $secret);
6675

6776
$this->repository->withoutFreshModel()->update($user->id, [
6877
'totp_secret' => $this->encrypter->encrypt($secret),

composer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@
2929
"lord/laroute": "^2.4",
3030
"matriphe/iso-639": "^1.2",
3131
"nesbot/carbon": "^1.22",
32-
"pragmarx/google2fa": "^2.0",
32+
"pragmarx/google2fa": "^5.0",
33+
"pragmarx/google2fa-qrcode": "^1.0.3",
3334
"predis/predis": "^1.1",
3435
"prologue/alerts": "^0.4",
3536
"ramsey/uuid": "^3.7",

composer.lock

Lines changed: 157 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

database/seeds/eggs/voice-servers/egg-teamspeak3-server.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"meta": {
44
"version": "PTDL_v1"
55
},
6-
"exported_at": "2018-10-28T20:50:23+01:00",
6+
"exported_at": "2019-05-01T16:35:15+00:00",
77
"name": "Teamspeak3 Server",
88
"author": "support@pterodactyl.io",
99
"description": "VoIP software designed with security in mind, featuring crystal clear voice quality, endless customization options, and scalabilty up to thousands of simultaneous users.",
@@ -27,10 +27,10 @@
2727
"name": "Server Version",
2828
"description": "The version of Teamspeak 3 to use when running the server.",
2929
"env_variable": "TS_VERSION",
30-
"default_value": "3.5.0",
30+
"default_value": "3.7.1",
3131
"user_viewable": 1,
3232
"user_editable": 1,
3333
"rules": "required|regex:\/^([0-9_\\.-]{5,10})$\/"
3434
}
3535
]
36-
}
36+
}

tests/Unit/Services/Users/TwoFactorSetupServiceTest.php

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@
55
use Mockery as m;
66
use Tests\TestCase;
77
use Pterodactyl\Models\User;
8-
use PragmaRX\Google2FA\Google2FA;
98
use Illuminate\Support\Collection;
9+
use PragmaRX\Google2FAQRCode\Google2FA;
10+
use Illuminate\Contracts\Config\Repository;
1011
use Illuminate\Contracts\Encryption\Encrypter;
1112
use Pterodactyl\Services\Users\TwoFactorSetupService;
1213
use Pterodactyl\Contracts\Repository\UserRepositoryInterface;
@@ -24,7 +25,7 @@ class TwoFactorSetupServiceTest extends TestCase
2425
private $encrypter;
2526

2627
/**
27-
* @var \PragmaRX\Google2FA\Google2FA|\Mockery\Mock
28+
* @var PragmaRX\Google2FAQRCode\Google2FA|\Mockery\Mock
2829
*/
2930
private $google2FA;
3031

@@ -40,6 +41,7 @@ public function setUp()
4041
{
4142
parent::setUp();
4243

44+
$this->config = m::mock(Repository::class);
4345
$this->encrypter = m::mock(Encrypter::class);
4446
$this->google2FA = m::mock(Google2FA::class);
4547
$this->repository = m::mock(UserRepositoryInterface::class);
@@ -56,7 +58,8 @@ public function testSecretAndImageAreReturned()
5658
config()->set('app.name', 'CompanyName');
5759

5860
$this->google2FA->shouldReceive('generateSecretKey')->with(32)->once()->andReturn('secretKey');
59-
$this->google2FA->shouldReceive('getQRCodeGoogleUrl')->with('CompanyName', $model->email, 'secretKey')->once()->andReturn('http://url.com');
61+
$this->config->shouldReceive('get')->with('app.name')->once()->andReturn('CompanyName');
62+
$this->google2FA->shouldReceive('getQRCodeInline')->with('CompanyName', $model->email, 'secretKey')->once()->andReturn('http://url.com');
6063
$this->encrypter->shouldReceive('encrypt')->with('secretKey')->once()->andReturn('encryptedSecret');
6164
$this->repository->shouldReceive('withoutFreshModel->update')->with($model->id, ['totp_secret' => 'encryptedSecret'])->once()->andReturnNull();
6265

0 commit comments

Comments
 (0)