corrade-http-templates – Diff between revs 50 and 73

Subversion Repositories:
Rev:
Only display areas with differencesIgnore whitespace
Rev 50 Rev 73
1 <?php 1 <?php
2   2  
3 ########################################################################### 3 ###########################################################################
4 ## Copyright (C) Wizardry and Steamworks 2016 - License: GNU GPLv3 ## 4 ## Copyright (C) Wizardry and Steamworks 2016 - License: GNU GPLv3 ##
5 ########################################################################### 5 ###########################################################################
6 ## This is a script that sends a message to an agent from Corrade and it ## 6 ## This is a script that sends a message to an agent from Corrade and it ##
7 ## also stores the sent message to a conversation file. ## 7 ## also stores the sent message to a conversation file. ##
8 ########################################################################### 8 ###########################################################################
9   9  
10 ########################################################################### 10 ###########################################################################
11 ## CONFIGURATION ## 11 ## CONFIGURATION ##
12 ########################################################################### 12 ###########################################################################
13   13  
14 require_once('config.php'); 14 require_once('config.php');
15 require_once('functions.php'); 15 require_once('vendor/was/utilities/src/formats/kvp/kvp.php');
16   16  
17 ########################################################################### 17 ###########################################################################
18 ## INTERNALS ## 18 ## INTERNALS ##
19 ########################################################################### 19 ###########################################################################
20   20  
21 # CRSF. 21 # CRSF.
22 session_start(); 22 session_start();
23 if (empty($_POST['token']) || !hash_equals($_SESSION['token'], $_POST['token'])) { 23 if (empty($_POST['token']) || !hash_equals($_SESSION['token'], $_POST['token'])) {
24 http_response_code(403); 24 http_response_code(403);
25 die('Forbidden.'); 25 die('Forbidden.');
26 } 26 }
27   27  
28 # Check that we have all the necessary variables. 28 # Check that we have all the necessary variables.
29 if(!isset($_POST['message']) || 29 if(!isset($_POST['message']) ||
30 empty($_POST['message']) || 30 empty($_POST['message']) ||
31 !isset($_POST['name']) || 31 !isset($_POST['name']) ||
32 empty($_POST['name']) || 32 empty($_POST['name']) ||
33 !isset($_POST['firstname']) || 33 !isset($_POST['firstname']) ||
34 empty($_POST['firstname']) || 34 empty($_POST['firstname']) ||
35 !isset($_POST['lastname']) || 35 !isset($_POST['lastname']) ||
36 empty($_POST['lastname'])) return; 36 empty($_POST['lastname'])) return;
37   37  
38 #### 38 ####
39 # I. Build the POST array to send to Corrade. 39 # I. Build the POST array to send to Corrade.
40 $params = array( 40 $params = array(
41 'command' => 'tell', 41 'command' => 'tell',
42 'group' => $GROUP, 42 'group' => $GROUP,
43 'password' => $PASSWORD, 43 'password' => $PASSWORD,
44 'entity' => 'avatar', 44 'entity' => 'avatar',
45 'firstname' => $_POST['firstname'], 45 'firstname' => $_POST['firstname'],
46 'lastname' => $_POST['lastname'], 46 'lastname' => $_POST['lastname'],
47 'message' => $_POST['name'].' says '.$_POST['message'] 47 'message' => $_POST['name'].' says '.$_POST['message']
48 ); 48 );
49   49  
50 #### 50 ####
51 # II. Escape the data to be sent to Corrade. 51 # II. Escape the data to be sent to Corrade.
52 array_walk($params, 52 array_walk($params,
53 function(&$value, $key) { 53 function(&$value, $key) {
54 $value = rawurlencode($key)."=".rawurlencode($value); 54 $value = rawurlencode($key)."=".rawurlencode($value);
55 } 55 }
56 ); 56 );
57 $postvars = implode('&', $params); 57 $postvars = implode('&', $params);
58   58  
59 #### 59 ####
60 # III. Use curl to send the message. 60 # III. Use curl to send the message.
61 if (!($curl = curl_init())) { 61 if (!($curl = curl_init())) {
62 print 0; 62 print 0;
63 return; 63 return;
64 } 64 }
65 curl_setopt($curl, CURLOPT_URL, $URL); 65 curl_setopt($curl, CURLOPT_URL, $URL);
66 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 66 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
67 curl_setopt($curl, CURLOPT_POST, true); 67 curl_setopt($curl, CURLOPT_POST, true);
68 curl_setopt($curl, CURLOPT_POSTFIELDS, $postvars); 68 curl_setopt($curl, CURLOPT_POSTFIELDS, $postvars);
69 curl_setopt($curl, CURLOPT_ENCODING, true); 69 curl_setopt($curl, CURLOPT_ENCODING, true);
70 $result = curl_exec($curl); 70 $result = curl_exec($curl);
71 curl_close($curl); 71 curl_close($curl);
72   72  
73 #### 73 ####
74 # IV. Grab the status of the command. 74 # IV. Grab the status of the command.
75 $status = urldecode( 75 $status = urldecode(
76 wasKeyValueGet( 76 wasKeyValueGet(
77 "success", 77 "success",
78 $result 78 $result
79 ) 79 )
80 ); 80 );
81   81  
82 #### 82 ####
83 # IV. Check the status of the command. 83 # IV. Check the status of the command.
84 switch($status) { 84 switch($status) {
85 case "True": # The message was sent successfully so store it within a conversation file. 85 case "True": # The message was sent successfully so store it within a conversation file.
86 #### 86 ####
87 # V. Get the path to the configured chat directory. 87 # V. Get the path to the configured chat directory.
88 $chatPath = realpath($CHAT_DIRECTORY); 88 $chatPath = realpath($CHAT_DIRECTORY);
89   89  
90 #### 90 ####
91 # VI. Get the user path. 91 # VI. Get the user path.
92 $userPath = join( 92 $userPath = join(
93 DIRECTORY_SEPARATOR, 93 DIRECTORY_SEPARATOR,
94 array( 94 array(
95 $CHAT_DIRECTORY, 95 $CHAT_DIRECTORY,
96 ucfirst( 96 ucfirst(
97 strtolower( 97 strtolower(
98 $_POST['firstname'] 98 $_POST['firstname']
99 ) 99 )
100 ) .' '. 100 ) .' '.
101 ucfirst( 101 ucfirst(
102 strtolower( 102 strtolower(
103 $_POST['lastname'] 103 $_POST['lastname']
104 ) 104 )
105 ).'.log' 105 ).'.log'
106 ) 106 )
107 ); 107 );
108   108  
109 #### 109 ####
110 # VII. Check that the file will be placed within the chat directory. 110 # VII. Check that the file will be placed within the chat directory.
111 $pathPart = pathinfo($userPath); 111 $pathPart = pathinfo($userPath);
112 if(realpath($pathPart['dirname']) != $chatPath) 112 if(realpath($pathPart['dirname']) != $chatPath)
113 die; 113 die;
114 114
115 #### 115 ####
116 # VIII. Store the message. 116 # VIII. Store the message.
117 storeAvatarConversation( 117 storeAvatarConversation(
118 $_POST['name'], 118 $_POST['name'],
119 '', 119 '',
120 $_POST['message'], 120 $_POST['message'],
121 $userPath, 121 $userPath,
122 $CHAT_LINES 122 $CHAT_LINES
123 ); 123 );
124 break; 124 break;
125 default: # Otherwise, return the Corrade error message. 125 default: # Otherwise, return the Corrade error message.
126 echo 'Corrade failed to deliver the message with the error message: '.urldecode( 126 echo 'Corrade failed to deliver the message with the error message: '.urldecode(
127 wasKeyValueGet( 127 wasKeyValueGet(
128 "error", 128 "error",
129 $result 129 $result
130 ) 130 )
131 ); 131 );
132 break; 132 break;
133 } 133 }
134   134  
135 ?> 135 ?>
136   136  
137
Generated by GNU Enscript 1.6.5.90.
137
Generated by GNU Enscript 1.6.5.90.
138   138  
139   139  
140   140