about summary refs log tree commit diff stats
path: root/Archipelago
diff options
context:
space:
mode:
Diffstat (limited to 'Archipelago')
-rw-r--r--Archipelago/client.gd44
-rw-r--r--Archipelago/settings_buttons.gd24
-rw-r--r--Archipelago/settings_screen.gd22
3 files changed, 59 insertions, 31 deletions
diff --git a/Archipelago/client.gd b/Archipelago/client.gd new file mode 100644 index 0000000..1d2affd --- /dev/null +++ b/Archipelago/client.gd
@@ -0,0 +1,44 @@
1extends Node
2
3var ap_server = ""
4var ap_user = ""
5var ap_pass = ""
6
7
8func _init():
9 global._print("Instantiated APClient")
10
11 # Read AP settings from file, if there are any
12 var file = File.new()
13 if file.file_exists("user://settings/archipelago"):
14 file.open("user://settings/archipelago", File.READ)
15 var data = file.get_var(true)
16 file.close()
17
18 if data.size() > 0:
19 ap_server = data[0]
20 if data.size() > 1:
21 ap_user = data[1]
22 if data.size() > 2:
23 ap_pass = data[2]
24
25
26func _ready():
27 pass
28
29
30func saveSettings():
31 # Save the AP settings to disk.
32 var dir = Directory.new()
33 var path = "user://settings"
34 if dir.dir_exists(path):
35 pass
36 else:
37 dir.make_dir(path)
38
39 var file = File.new()
40 file.open("user://settings/archipelago", File.WRITE)
41
42 var data = [ap_server, ap_user, ap_pass]
43 file.store_var(data, true)
44 file.close()
diff --git a/Archipelago/settings_buttons.gd b/Archipelago/settings_buttons.gd index 5b4d837..1ab3788 100644 --- a/Archipelago/settings_buttons.gd +++ b/Archipelago/settings_buttons.gd
@@ -6,25 +6,11 @@ func _ready():
6 6
7 7
8func _connect_pressed(): 8func _connect_pressed():
9 # Save the AP settings to disk. 9 var apclient = global.get_node("Archipelago")
10 var dir = Directory.new() 10 apclient.ap_server = self.get_parent().get_node("server_box").text
11 var path = "user://settings" 11 apclient.ap_user = self.get_parent().get_node("player_box").text
12 if dir.dir_exists(path): 12 apclient.ap_pass = self.get_parent().get_node("password_box").text
13 pass 13 apclient.saveSettings()
14 else:
15 dir.make_dir(path)
16
17 var file = File.new()
18 file.open("user://settings/archipelago", File.WRITE)
19
20 var data = [
21 self.get_parent().get_node("server_box").text,
22 self.get_parent().get_node("player_box").text,
23 self.get_parent().get_node("password_box").text
24 ]
25
26 file.store_var(data, true)
27 file.close()
28 14
29 15
30func _back_pressed(): 16func _back_pressed():
diff --git a/Archipelago/settings_screen.gd b/Archipelago/settings_screen.gd index 91f233d..3740751 100644 --- a/Archipelago/settings_screen.gd +++ b/Archipelago/settings_screen.gd
@@ -6,16 +6,14 @@ func _ready():
6 get_tree().get_root().set_disable_input(false) 6 get_tree().get_root().set_disable_input(false)
7 Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) 7 Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
8 8
9 # Read AP settings from file, if there are any 9 # Create the global AP client, if it doesn't already exist.
10 var file = File.new() 10 if not global.has_node("Archipelago"):
11 if file.file_exists("user://settings/archipelago"): 11 var apclient = ResourceLoader.load("user://maps/Archipelago/client.gd")
12 file.open("user://settings/archipelago", File.READ) 12 var apclient_instance = apclient.new()
13 var data = file.get_var(true) 13 apclient_instance.name = "Archipelago"
14 file.close() 14 global.add_child(apclient_instance)
15 15
16 if data.size() > 0: 16 # Populate textboxes with AP settings.
17 self.get_node("Panel/server_box").text = data[0] 17 self.get_node("Panel/server_box").text = global.get_node("Archipelago").ap_server
18 if data.size() > 1: 18 self.get_node("Panel/player_box").text = global.get_node("Archipelago").ap_user
19 self.get_node("Panel/player_box").text = data[1] 19 self.get_node("Panel/password_box").text = global.get_node("Archipelago").ap_pass
20 if data.size() > 2:
21 self.get_node("Panel/password_box").text = data[2]
$semantics); } function instaDisc_sendDatabase($cserver) { $getdb = "SELECT * FROM centralServers"; $getdb2 = mysql_query($getdb); $i=0; while ($getdb3[$i] = mysql_fetch_array($getdb2)) { $db[$getdb3[$i]['url']]['key'] = $getdb3[$i]['key']; $db[$getdb3[$i]['url']]['xmlrpc'] = $getdb3[$i]['xmlrpc']; $i++; } $cserver2 = $_SERVER['HTTP_HOST']; $getuk = "SELECT * FROM centralServers WHERE url = \"" . mysql_real_escape_string($cserver2) . "\""; $getuk2 = mysql_query($getuk); $getuk3 = mysql_fetch_array($getuk2); $verID = rand(1,65536); $client = new xmlrpc_client($cserver); $msg = new xmlrpcmsg("InstaDisc.sendDatabase", array( new xmlrpcval($cserver2, 'string'), new xmlrpcval(md5($cserver2 + ":" + $getuk3['key'] + ":" + $verID), 'string'), new xmlrpcval($verID, 'int'), new xmlrpcval($db, 'array'))); $client->send($msg); } function instaDisc_addItem($username, $subscription, $title, $author, $url, $semantics) { $getuser = "SELECT * FROM users WHERE username = \"" . mysql_real_escape_string($username) . "\""; $getuser2 = mysql_query($getuser); $getuser3 = mysql_fetch_array($getuser2); if ($getuser3['username'] == $username) { $itemID = $getuser3['nextItemID']; $setuser = "UPDATE users SET nextItemID = nextItemID+1 WHERE username = \"" . mysql_real_escape_string($username) . "\""; $setuser2 = mysql_query($setuser); $insitem = "INSERT INTO inbox (username, itemID, subscription, title, author, url, semantics) VALUES (\"" . mysql_real_escape_string($username) . "\", " . $itemID . ", \"" . mysql_real_escape_string($subscription) . "\", \"" . mysql_real_escape_string($title) . "\", \"" . mysql_real_escape_string($author) . "\", \"" . mysql_real_escape_string($url) . "\", \"" . mysql_real_escape_string(serialize($semantics)) . "\")"; $insitem2 = mysql_query($insitem); instaDisc_sendItem($username, $itemID); } } function instaDisc_phpMailer() { $mail = new PHPMailer(); $mail->IsSMTP(); $mail->From = 'instadisc@' . instaDisc_getConfig('mailDomain'); $mail->FromName = 'InstaDisc'; $mail->Host = instaDisc_getConfig('smtpHost'); if (instaDisc_getConfig('smtpAuth') == 'true') { $mail->SMTPAuth = true; $mail->Username = instaDisc_getConfig('smtpUser'); $mail->Password = instaDisc_getConfig('smtpPass'); } $mail->Helo = $_SERVER['HTTP_HOST']; $mail->ClearAddresses(); return $mail; } function instaDisc_sendActivationEmail($username, $password, $email) { $penKey = md5(rand(1,65536)); $inspending = "INSERT INTO pending (username, password, email, key) VALUES (\"" . mysql_real_escape_string($username) . "\", \"" . mysql_real_escape_string($password) . "\", \"" . mysql_real_escape_string($email) . "\", \"" . mysql_real_escape_string($penKey) . "\")"; $inspending2 = mysql_query($inspending); $mail = instaDisc_phpMailer(); $mail->AddAddress($email, $username); $mail->Subject = 'InstaDisc Account Verification'; $mail->Body = "Hello, someone has recently registered an account at " . $_SERVER['HTTP_HOST'] . " with your email address. If that was you, and your chosen username IS " . $username . ", then copy the account verification code below to our Account Verification page, enter your username and press Activate!\r\n\r\n" . $penKey . "\r\n\r\nIf that was not you, copy the above code to our Account Verification page, enter the above username, and click Delete."; return $mail->Send(); } function instaDisc_activateAccount($username, $penKey) { $getuser = "SELECT * FROM pending WHERE username = \"" . mysql_real_escape_string($username) . "\" AND key = \"" . mysql_real_escape_string($penKey) . "\""; $getuser2 = mysql_query($getuser); $getuser3 = mysql_fetch_array($getuser2); if ($getuser3['username'] == $username) { $insuser = "INSERT INTO users (username, password, email) VALUES (\"" . mysql_real_escape_string($username) . "\", \"" . mysql_real_escape_string($password) . "\", \"" . mysql_real_escape_string($email) . "\")"; $insuser2 = mysql_query($insuser); $delpending = "DELETE FROM pending WHERE username = \"" . mysql_real_escape_string($username) . "\""; $delpending2 = mysql_query($delpending); $mail = instaDisc_phpMailer(); $mail->AddAddress($getuser3['email'], $username); $mail->Subject = 'Welcome to InstaDisc!'; $mail->Body = "Welcome to InstaDisc! Thank you for registering at " . instaDisc_getConfig('siteName') . " Central Server, we hope you enjoy our service! Now, when you download an InstaDisc Client, it will ask you for the following information which you will need to enter into it for it to work:\r\n\r\nUsername: " . $username . "\r\nPassword: (you should know this, it's not displayed here for security reasons)\r\nCentral Server URL: " . instaDisc_getConfig("xmlrpcURL") . "\r\n\r\nOnce again, thank you for choosing " . instaDisc_getConfig("siteName") . "!"; return $mail->Send(); } else { return false; } } function instaDisc_deactivateAccount($username, $penKey) { $getuser = "SELECT * FROM pending WHERE username = \"" . mysql_real_escape_string($username) . "\" AND key = \"" . mysql_real_escape_string($penKey) . "\""; $getuser2 = mysql_query($getuser); $getuser3 = mysql_fetch_array($getuser2); if ($getuser3['username'] == $username) { $delpending = "DELETE FROM pending WHERE username = \"" . mysql_real_escape_string($username) . "\""; $delpending2 = mysql_query($delpending); return true; } else { return false; } } function instaDisc_verifyUser($username, $password) { return instaDisc_checkVerification($username, md5($username . ':' . md5($password) . ':0'), 0, 'users', 'username', 'password'); } function instaDisc_deleteAccount($username) { $getuser = "SELECT * FROM users WHERE username = \"" . mysql_real_escape_string($username) . "\""; $getuser2 = mysql_query($getuser); $getuser3 = mysql_fetch_array($getuser2); if ($getuser3['username'] == $username) { $deluser = "DELETE FROM users WHERE username = \"" . mysql_real_escape_string($username) . "\""; $deluser2 = mysql_query($deluser); $delsubs = "DELETE FROM subscriptions WHERE username = \"" . mysql_real_escape_string($username) . "\""; $delsubs2 = mysql_query($delsubs); $delitems = "DELETE FROM inbox WHERE username = \"" . mysql_real_escape_string($username) . "\""; $delitems2 = mysql_query($delitems); return true; } return false; } function instaDisc_getConfig($key) { $getconfig = "SELECT * FROM config WHERE name = \"" . mysql_real_escape_string($key) . "\""; $getconfig2 = mysql_query($getconfig); $getconfig3 = mysql_fetch_array($getconfig2); return $getconfig3['value']; } function instaDisc_listSubscriptions($username) { $getsubs = "SELECT * FROM subscriptions WHERE username = \"" . mysql_real_escape_string($username) . "\" AND owner = \"true\""; $getsubs2 = mysql_query($getsubs); $i=0; while ($getsubs3[$i] = mysql_fetch_array($getsubs2)) { $subs[$i] = $getsubs3[$i]['url']; $i++; } $subs['size'] = $i; return $subs; } function instaDisc_addSubscription($username, $url) { $getcode = "SELECT * FROM pending2 WHERE username = \"" . mysql_real_escape_string($username) . "\" AND url = \"" . mysql_real_escape_string($url) . "\""; $getcode2 = mysql_query($getcode); $getcode3 = mysql_fetch_array($getcode2); if ($getcode3['username'] == $username) { $delcode = "DELETE FROM pending2 WHERE username = \"" . mysql_real_escape_string($username) . "\" AND url = \"" . mysql_real_escape_string($url) . "\""; $delcode2 = mysql_query($delcode); $c = curl_init(); curl_setopt($c, CURLOPT_URL, $url); curl_setopt($c, CURLOPT_HEADER, false); curl_setopt($c, CURLOPT_RETURNTRANSFER, true); $page_data = curl_exec($c); curl_close($c); $headers = split("\n", $page_date); foreach ($headers as $name => $value) { $header = split(": ", $value); $headerMap[$header[0]] = $header[1]; } if (isset($header['Subscription'])) { if (isset($header['Title'])) { if (isset($header['Category'])) { if (isset($header['Key'])) { if ($header['Key'] == $getcode3['code']) { $inssub = "INSERT INTO subscriptions (username,url,owner) VALUES (\"" . mysql_real_escape_string($username) . "\", \"" . mysql_real_escape_string($header['Subscription']) . "\", \"true\")"; $inssub2 = mysql_query($inssub); return true; } } } } } } return false; } function instaDisc_listPendingSubscriptions($username) { $getsubs = "SELECT * FROM pending2 WHERE username = \"" . mysql_real_escape_string($username) . "\""; $getsubs2 = mysql_query($getsubs); $i=0; while ($getsubs3[$i] = mysql_fetch_array($getsubs2)) { $subs[$i] = array('url' => $getsubs3[$i]['url'], 'key' => $getsubs3[$i]['key']); $i++; } $subs['size'] = $i; return $subs; } function instaDisc_generateSubscriptionActivation($username, $url) { $getuser = "SELECT * FROM users WHERE username = \"" . mysql_real_escape_string($username) . "\""; $getuser2 = mysql_query($getuser); $getuser3 = mysql_fetch_array($getuser2); if ($getuser3['username'] == $username) { $key = md5(rand(1,65536)); $inspending = "INSERT INTO pending2 (username, url, key) VALUES (\"" . mysql_real_escape_string($username) . "\", \"" . mysql_real_escape_string($url) . "\", \"" . mysql_real_escape_string($key) . "\")"; $inspending2 = mysql_query($inspending); return $key; } return false; } function instaDisc_deleteSubscription($username, $url) { $getsub = "SELECT * FROM subscriptions WHERE username = \"" . mysql_real_escape_string($username) . "\" AND url = \"" . mysql_real_escape_string($url) . "\")"; $getsub2 = mysql_query($getsub); $getsub3 = mysql_fetch_array($getsub2); if ($getsub3['username'] == $username) { $delsub = "DELETE FROM subscriptions WHERE username = \"" . mysql_real_escape_string($username) . "\" AND url = \"" . mysql_real_escape_string($url) . "\")"; $delsub2 = mysql_query($delsub); return true; } return false; } function instaDisc_cancelSubscription($username, $url) { $getsub = "SELECT * FROM pending2 WHERE username = \"" . mysql_real_escape_string($username) . "\" AND url = \"" . mysql_real_escape_string($url) . "\")"; $getsub2 = mysql_query($getsub); $getsub3 = mysql_fetch_array($getsub2); if ($getsub3['username'] == $username) { $delsub = "DELETE FROM pending2 WHERE username = \"" . mysql_real_escape_string($username) . "\" AND url = \"" . mysql_real_escape_string($url) . "\")"; $delsub2 = mysql_query($delsub); return true; } return false; } ?>