mirror of
git://f0xx.org/ac/ac-ms-remote-access
synced 2026-07-29 04:19:05 +03:00
Remote access: accept iodine opt_in_mode in heartbeat and schema.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
committed by
Anton Afanasyeu
parent
d2602391c3
commit
8d42f818c6
3
sql/migrations/010_iodine_opt_in.sql
Normal file
3
sql/migrations/010_iodine_opt_in.sql
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
-- Add iodine to remote access opt_in_mode (MariaDB).
|
||||||
|
ALTER TABLE remote_access_devices
|
||||||
|
MODIFY opt_in_mode ENUM('none','wireguard','rssh','iodine') NOT NULL DEFAULT 'none';
|
||||||
@@ -9,6 +9,7 @@ final class RemoteAccessRepository {
|
|||||||
public const OPT_NONE = 'none';
|
public const OPT_NONE = 'none';
|
||||||
public const OPT_WIREGUARD = 'wireguard';
|
public const OPT_WIREGUARD = 'wireguard';
|
||||||
public const OPT_RSSH = 'rssh';
|
public const OPT_RSSH = 'rssh';
|
||||||
|
public const OPT_IODINE = 'iodine';
|
||||||
|
|
||||||
public const STATUS_PENDING = 'pending';
|
public const STATUS_PENDING = 'pending';
|
||||||
public const STATUS_ACTIVE = 'active';
|
public const STATUS_ACTIVE = 'active';
|
||||||
@@ -243,9 +244,12 @@ final class RemoteAccessRepository {
|
|||||||
if ($c === 'ssh_reverse' || $c === 'rssh') {
|
if ($c === 'ssh_reverse' || $c === 'rssh') {
|
||||||
return self::OPT_RSSH;
|
return self::OPT_RSSH;
|
||||||
}
|
}
|
||||||
|
if ($c === 'iodine') {
|
||||||
|
return self::OPT_IODINE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
$mode = strtolower(trim((string) ($heartbeat['tunnel_mode'] ?? '')));
|
$mode = strtolower(trim((string) ($heartbeat['tunnel_mode'] ?? '')));
|
||||||
if (in_array($mode, [self::OPT_WIREGUARD, self::OPT_RSSH, self::OPT_NONE], true)) {
|
if (in_array($mode, [self::OPT_WIREGUARD, self::OPT_RSSH, self::OPT_IODINE, self::OPT_NONE], true)) {
|
||||||
return $mode;
|
return $mode;
|
||||||
}
|
}
|
||||||
return self::OPT_WIREGUARD;
|
return self::OPT_WIREGUARD;
|
||||||
@@ -614,7 +618,7 @@ final class RemoteAccessRepository {
|
|||||||
return ['ok' => false, 'error' => 'device_not_opted_in'];
|
return ['ok' => false, 'error' => 'device_not_opted_in'];
|
||||||
}
|
}
|
||||||
$optIn = (string) ($device['opt_in_mode'] ?? self::OPT_NONE);
|
$optIn = (string) ($device['opt_in_mode'] ?? self::OPT_NONE);
|
||||||
if (!in_array($optIn, [self::OPT_WIREGUARD, self::OPT_RSSH], true)) {
|
if (!in_array($optIn, [self::OPT_WIREGUARD, self::OPT_RSSH, self::OPT_IODINE], true)) {
|
||||||
return ['ok' => false, 'error' => 'device_not_opted_in'];
|
return ['ok' => false, 'error' => 'device_not_opted_in'];
|
||||||
}
|
}
|
||||||
self::closeActiveSessionsForDevice($deviceId, 'superseded');
|
self::closeActiveSessionsForDevice($deviceId, 'superseded');
|
||||||
|
|||||||
Reference in New Issue
Block a user