]>
Commit | Line | Data |
---|---|---|
03ddd26b BM |
1 | <?php |
2 | ||
00db45aa | 3 | if (!defined('UPATH')) |
55fd88eb | 4 | die("Access denied"); |
00db45aa | 5 | |
ea90b321 | 6 | function connect_to_ircd() |
11c301be | 7 | { |
ea90b321 | 8 | GLOBAL $rpc; |
41aad10c | 9 | GLOBAL $config; |
e77b1514 | 10 | |
cefec45f BM |
11 | $is_api_page = str_contains($_SERVER['SCRIPT_FILENAME'], "/api/") ? true : false; |
12 | ||
ee401f9a BM |
13 | $options = []; /* options that we pass to new UnrealIRCd\Connection */ |
14 | ||
cefec45f BM |
15 | $rpc = null; /* Initialize, mostly for API page failures */ |
16 | ||
41aad10c BM |
17 | $server = get_active_rpc_server(); |
18 | if (!$server) | |
82343073 | 19 | { |
cefec45f BM |
20 | if ($is_api_page) |
21 | return; | |
82343073 BM |
22 | Message::Fail("No RPC server configured. Go to Settings - RPC Servers."); |
23 | die; | |
24 | } | |
41aad10c BM |
25 | $host = $config["unrealircd"][$server]["host"]; |
26 | $port = $config["unrealircd"][$server]["port"]; | |
27 | $rpc_user = $config["unrealircd"][$server]["rpc_user"]; | |
28 | $rpc_password = $config["unrealircd"][$server]["rpc_password"]; | |
a4850187 BM |
29 | if (str_starts_with($rpc_password, "secret:")) |
30 | $rpc_password = secret_decrypt($rpc_password); | |
ee401f9a BM |
31 | if (isset($config["unrealircd"][$server]["tls_verify_cert"])) |
32 | $options["tls_verify"] = $config["unrealircd"][$server]["tls_verify_cert"]; | |
ea90b321 | 33 | |
50f6d124 | 34 | if (!$host || !$port || !$rpc_user) |
cefec45f BM |
35 | { |
36 | if ($is_api_page) | |
37 | return; | |
41aad10c | 38 | die("RPC Server is missing credentials"); |
cefec45f | 39 | } |
41aad10c | 40 | |
50f6d124 | 41 | if ($rpc_password === null) |
41aad10c | 42 | { |
cefec45f BM |
43 | if ($is_api_page) |
44 | return; | |
82343073 BM |
45 | Message::Fail("Your RPC password in the DB was encrypted with a different key than config/config.php contains.<br>\n". |
46 | "Either restore your previous config/config.php or start with a fresh database.<br>\n"); | |
47 | die; | |
41aad10c | 48 | } |
ea90b321 | 49 | |
ee401f9a BM |
50 | $user = unreal_get_current_user(); |
51 | if ($user) | |
52 | { | |
53 | /* Set issuer for all the RPC commands */ | |
54 | $options['issuer'] = $user->username; | |
55 | } | |
56 | ||
ea90b321 BM |
57 | /* Connect now */ |
58 | try { | |
59 | $rpc = new UnrealIRCd\Connection | |
60 | ( | |
61 | "wss://$host:$port", | |
62 | "$rpc_user:$rpc_password", | |
ee401f9a | 63 | $options |
ea90b321 BM |
64 | ); |
65 | } | |
66 | catch (Exception $e) | |
67 | { | |
cefec45f BM |
68 | if ($is_api_page) |
69 | return; | |
82343073 | 70 | Message::Fail("Unable to connect to UnrealIRCd: ".$e->getMessage() . "<br>". |
cefec45f BM |
71 | "Verify that the connection details from Settings - RPC Servers match the ones in UnrealIRCd ". |
72 | "and that UnrealIRCd is up and running"); | |
ea90b321 BM |
73 | throw $e; |
74 | } | |
e77b1514 | 75 | } |
ea90b321 BM |
76 | |
77 | connect_to_ircd(); |