]> jfr.im git - irc/unrealircd/unrealircd-webpanel.git/blame - inc/connection.php
Set "issuer" already in connection call. This to speed up connection
[irc/unrealircd/unrealircd-webpanel.git] / inc / connection.php
CommitLineData
03ddd26b
BM
1<?php
2
00db45aa 3if (!defined('UPATH'))
55fd88eb 4 die("Access denied");
00db45aa 5
ea90b321 6function 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
77connect_to_ircd();