66use Lcobucci \JWT \Builder ;
77use Illuminate \Http \Request ;
88use Lcobucci \JWT \Signer \Key ;
9+ use Psr \Log \LoggerInterface ;
910use Illuminate \Http \Response ;
1011use Illuminate \Http \JsonResponse ;
11- use Illuminate \Support \Facades \Log ;
1212use Lcobucci \JWT \Signer \Hmac \Sha256 ;
1313use Illuminate \Database \ConnectionInterface ;
1414use Pterodactyl \Http \Controllers \Controller ;
1515use Pterodactyl \Services \Servers \SuspensionService ;
1616use Pterodactyl \Repositories \Eloquent \NodeRepository ;
1717use Pterodactyl \Repositories \Eloquent \ServerRepository ;
18+ use Pterodactyl \Repositories \Wings \DaemonServerRepository ;
1819use Pterodactyl \Repositories \Wings \DaemonTransferRepository ;
1920use Pterodactyl \Contracts \Repository \AllocationRepositoryInterface ;
2021use Pterodactyl \Exceptions \Http \Connection \DaemonConnectionException ;
@@ -42,6 +43,11 @@ class ServerTransferController extends Controller
4243 */
4344 private $ nodeRepository ;
4445
46+ /**
47+ * @var \Pterodactyl\Repositories\Wings\DaemonServerRepository
48+ */
49+ private $ daemonServerRepository ;
50+
4551 /**
4652 * @var \Pterodactyl\Repositories\Wings\DaemonTransferRepository
4753 */
@@ -57,33 +63,44 @@ class ServerTransferController extends Controller
5763 */
5864 private $ suspensionService ;
5965
66+ /**
67+ * @var \Psr\Log\LoggerInterface
68+ */
69+ private $ writer ;
70+
6071 /**
6172 * ServerTransferController constructor.
6273 *
6374 * @param \Illuminate\Database\ConnectionInterface $connection
6475 * @param \Pterodactyl\Repositories\Eloquent\ServerRepository $repository
6576 * @param \Pterodactyl\Contracts\Repository\AllocationRepositoryInterface $allocationRepository
6677 * @param \Pterodactyl\Repositories\Eloquent\NodeRepository $nodeRepository
78+ * @param \Pterodactyl\Repositories\Wings\DaemonServerRepository $daemonServerRepository
6779 * @param \Pterodactyl\Repositories\Wings\DaemonTransferRepository $daemonTransferRepository
6880 * @param \Pterodactyl\Services\Servers\ServerConfigurationStructureService $configurationStructureService
6981 * @param \Pterodactyl\Services\Servers\SuspensionService $suspensionService
82+ * @param \Psr\Log\LoggerInterface $writer
7083 */
7184 public function __construct (
7285 ConnectionInterface $ connection ,
7386 ServerRepository $ repository ,
7487 AllocationRepositoryInterface $ allocationRepository ,
7588 NodeRepository $ nodeRepository ,
89+ DaemonServerRepository $ daemonServerRepository ,
7690 DaemonTransferRepository $ daemonTransferRepository ,
7791 ServerConfigurationStructureService $ configurationStructureService ,
78- SuspensionService $ suspensionService
92+ SuspensionService $ suspensionService ,
93+ LoggerInterface $ writer
7994 ) {
8095 $ this ->connection = $ connection ;
8196 $ this ->repository = $ repository ;
8297 $ this ->allocationRepository = $ allocationRepository ;
8398 $ this ->nodeRepository = $ nodeRepository ;
99+ $ this ->daemonServerRepository = $ daemonServerRepository ;
84100 $ this ->daemonTransferRepository = $ daemonTransferRepository ;
85101 $ this ->configurationStructureService = $ configurationStructureService ;
86102 $ this ->suspensionService = $ suspensionService ;
103+ $ this ->writer = $ writer ;
87104 }
88105
89106 /**
@@ -162,15 +179,9 @@ public function failure(string $uuid)
162179 $ allocationIds = json_decode ($ transfer ->new_additional_allocations );
163180 array_push ($ allocationIds , $ transfer ->new_allocation );
164181
165- // Begin a transaction.
166- $ this ->connection ->beginTransaction ();
167-
168182 // Remove the new allocations.
169183 $ this ->allocationRepository ->updateWhereIn ('id ' , $ allocationIds , ['server_id ' => null ]);
170184
171- // Commit the transaction.
172- $ this ->connection ->commit ();
173-
174185 // Unsuspend the server.
175186 $ this ->suspensionService ->toggle ($ server , 'unsuspend ' );
176187
@@ -190,8 +201,6 @@ public function success(string $uuid)
190201 $ server = $ this ->repository ->getByUuid ($ uuid );
191202 $ transfer = $ server ->transfer ;
192203
193- // TODO: Notify old daemon about transfer and get it to remove server files.
194-
195204 $ allocationIds = json_decode ($ transfer ->old_additional_allocations );
196205 array_push ($ allocationIds , $ transfer ->old_allocation );
197206
@@ -213,11 +222,15 @@ public function success(string $uuid)
213222 // Commit the transaction.
214223 $ this ->connection ->commit ();
215224
225+ // Delete the server from the old node
226+ try {
227+ $ this ->daemonServerRepository ->setServer ($ server )->delete ();
228+ } catch (DaemonConnectionException $ exception ) {
229+ $ this ->writer ->warning ($ exception );
230+ }
231+
216232 // Unsuspend the server
217233 $ server ->load ('node ' );
218- Log::debug (json_encode ($ server ));
219- Log::debug (json_encode ($ server ->node_id ));
220- Log::debug (json_encode ($ server ->node ));
221234 $ this ->suspensionService ->toggle ($ server , $ this ->suspensionService ::ACTION_UNSUSPEND );
222235
223236 return JsonResponse::create ([], Response::HTTP_NO_CONTENT );
0 commit comments