PluginProbe
VdoCipher: Secure Video Player and Hosting / 1.18
VdoCipher: Secure Video Player and Hosting v1.18
trunk 1.10 1.11 1.12 1.13 1.14 1.15 1.17 1.18 1.19 1.20 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.30 1.4 1.5 1.6 All 28 releases
← All changes | vdocipher.php +73 -189 1.241.18 View file →
@@ -1,12 +1,12 @@
1 1 <?php
2 2 /**
3 3 * Plugin Name: VdoCipher
4 - * Plugin URI: https://www.vdocipher.com
4 + * Plugin URI: http://www.vdocipher.com
5 5 * Description: Secured video hosting for wordpress
6 - * Version: 1.24
6 + * Version: 1.18
7 7 * Author: VdoCipher
8 - * Author URI: https://www.vdocipher.com
8 + * Author URI: http://www.vdocipher.com
9 9 * License: GPL2
10 10 */
11 11
12 12 if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) {
@@ -15,55 +15,21 @@
15 15 "</head><body>\r\n<h1>Not Found</h1>\r\n<p>The requested URL " . $_SERVER['SCRIPT_NAME'] . " was not found on ".
16 16 "this server.</p>\r\n</body></html>");
17 17 }
18 18
19 -// Function called to retrieve id for when title given, starts
20 -function vdo_retrieve_id($title) {
19 +function vdo_send($action, $params, $posts = array())
20 +{
21 21 $client_key = get_option('vdo_client_key');
22 22 if ($client_key == false || $client_key == "") {
23 - return "Plugin not configured. Please set the API key to embed videos.";
23 + return "Plugin not configured. Please set the key to embed videos.";
24 24 }
25 - $url = "https://dev.vdocipher.com/api/videos?q=$title";
26 - $headers = array(
27 - 'Authorization'=>'Apisecret '.$client_key,
28 - 'Content-Type'=>'application/json',
29 - 'Accept'=>'application/json'
30 - );
31 - $response = wp_remote_post($url, array(
32 - 'method' => 'GET',
33 - 'headers' => $headers
34 - ));
35 - if (is_wp_error($response)) {
36 - $error_message = $response->get_error_message();
37 - echo "VdoCipher: Something went wrong: $error_message";
38 - return "";
39 - }
40 - $video_json_response = $response['body'];
41 - $video_list_object = json_decode($video_json_response);
42 - $video_list = $video_list_object->rows;
43 - $video_object = $video_list[0];
44 - $video_id = $video_object->id;
45 - return $video_id;
46 -}
47 -// Function called to retrieve id for when title given, ends
48 25
49 -// Function called to get OTP, starts
50 -function vdo_otp($video, $otp_post_array = array()) {
51 - $client_key = get_option('vdo_client_key');
52 - if ($client_key == false || $client_key == "") {
53 - return "Plugin not configured. Please set the API key to embed videos.";
54 - }
55 - $url = "https://dev.vdocipher.com/api/videos/$video/otp";
56 - $headers = array(
57 - 'Authorization'=>'Apisecret '.$client_key,
58 - 'Content-Type'=>'application/json',
59 - 'Accept'=>'application/json'
60 - );
61 - $otp_post_json = json_encode($otp_post_array);
62 - $response = wp_remote_post($url, array(
26 + $getData = http_build_query($params);
27 + $posts["clientSecretKey"] = $client_key;
28 + $url = "http://api.vdocipher.com/v2/$action/?$getData";
29 + $response = wp_safe_remote_post($url, array(
63 30 'method' => 'POST',
64 - 'headers' => $headers,
65 - 'body' => $otp_post_json
31 + 'body' => $posts
66 32 ));
67 33 if (is_wp_error($response)) {
68 34 $error_message = $response->get_error_message();
69 35 echo "VdoCipher: Something went wrong: $error_message";
@@ -68,14 +34,10 @@
68 34 $error_message = $response->get_error_message();
69 35 echo "VdoCipher: Something went wrong: $error_message";
70 36 return "";
71 37 }
72 - $OTP_Response = $response['body'];
73 - return json_decode($OTP_Response);
38 + return $response['body'];
74 39 }
75 -// Function called to get OTP, ends
76 -
77 -// VdoCipher Shortcode starts
78 40 function vdo_shortcode($atts)
79 41 {
80 42 extract(shortcode_atts(
81 43 array(
@@ -84,33 +46,40 @@
84 46 'height' => get_option('vdo_default_height') . "px",
85 47 'id' => 'id',
86 48 'no_annotate'=> false,
87 49 'version'=> 0,
88 - 'vdo_theme'=> false,
89 - 'player_tech'=> ''
90 50 ),
91 51 $atts
92 52 ));
93 - if ((get_option('vdo_default_height')) == 'auto') {
94 - $height = 'auto';
95 - }
96 53 if (!$atts['id']) {
97 54 if (!$atts['title']) {
98 55 return "Required argument id for embedded video not found.";
99 56 }
100 - else {
101 - $video = vdo_retrieve_id($title);
102 - if ($video == null) {
103 - return "404. Video not found.";
104 - }
57 + $params = array(
58 + 'search'=>array(
59 + 'title'=>$title
60 + ),
61 + 'page'=>1,
62 + 'limit'=>30,
63 + 'type'=>'json'
64 + );
65 + $video = vdo_send("videos", $params);
66 + $video = json_decode($video);
67 + if ($video == null) {
68 + return "404. Video not found.";
105 69 }
106 - }
107 - else {
70 + $video = $video[0]->id;
71 + if ($video == null) {
72 + return "No video with given title found.";
73 + }
74 + } else {
108 75 $video = $id;
109 76 }
110 77
111 - // Initialize $otp_post_array, to be sent as part of OTP request, as for time-to-live 300
112 - $otp_post_array = array("ttl" => 300);
78 + $params = array(
79 + 'video'=>$video
80 + );
81 + $anno = false;
113 82 if (!function_exists("eval_date")) {
114 83 function eval_date($matches)
115 84 {
116 85 return current_time($matches[1]);
@@ -128,74 +97,39 @@
128 97 }
129 98 $vdo_annotate_code = str_replace('{ip}', $_SERVER['REMOTE_ADDR'], $vdo_annotate_code);
130 99 $vdo_annotate_code = preg_replace_callback('/\{date\.([^\}]+)\}/', "eval_date", $vdo_annotate_code);
131 100 $vdo_annotate_code = apply_filters('vdocipher_annotate_postprocess', $vdo_annotate_code);
132 - // Add annotate code to $otp_post_array, which will be converted to Json and then sent as POST body to API endpoint
133 101 if (!$no_annotate) {
134 - $otp_post_array["annotate"] = $vdo_annotate_code;
102 + $anno = array("annotate" => $vdo_annotate_code);
135 103 }
136 104 }
137 - // OTP is requested via vdo_otp function
138 - $OTP_Response = vdo_otp($video, $otp_post_array);
139 - $OTP = $OTP_Response->otp;
140 - $playbackInfo = $OTP_Response->playbackInfo;
141 -
105 + $OTP = vdo_send("otp", $params, $anno);
106 + $OTP = json_decode($OTP);
142 107 if (is_null($OTP)) {
143 -
144 108 $output = "<span id='vdo$OTP' style='background:#555555;color:#FFFFFF'><h4>Video not found</h4></span>";
145 109 return $output;
146 110 }
111 + $OTP = $OTP->otp;
147 112
148 - // Version, legacy, for flash only
149 113 $version = 0;
150 114 if (isset($atts['version'])) {
151 115 $version = $atts['version'];
152 116 }
153 -
154 - // Video Embed version is updated
155 117 if ((get_option('vdo_embed_version')) == false) {
156 - update_option('vdo_embed_version', '1.6.4');
118 + update_option('vdo_embed_version', '0.5');
157 119 }
158 - $vdo_embed_version_str = get_option('vdo_embed_version');
159 -
160 - // Video Player theme, update and as shortcode attribute
161 120 if ((get_option('vdo_player_theme')) == false) {
162 - update_option('vdo_player_theme', '9ae8bbe8dd964ddc9bdb932cca1cb59a');
121 + update_option('vdo_player_theme','9ae8bbe8dd964ddc9bdb932cca1cb59a');
163 122 }
164 - if(!$vdo_theme){
165 - $vdo_player_theme = get_option('vdo_player_theme');
166 - }
167 - else {
168 - $vdo_player_theme = $vdo_theme;
169 - }
123 + $vdo_embed_version_str = get_option('vdo_embed_version');
124 + $vdo_player_theme = get_option('vdo_player_theme');
170 125
171 - // tech override custom names
172 - switch ($player_tech) {
173 - case "flash":
174 - $player_tech = "*,-dash";
175 - break;
176 - case "nohtml5":
177 - $player_tech = "*,-dash";
178 - break;
179 - case "noflash":
180 - $player_tech = "*,-hss";
181 - break;
182 - case "nozen":
183 - $player_tech = "*,-zen";
184 - break;
185 - case "noios":
186 - $player_tech = "*,-hlse";
187 - break;
188 - default:
189 - break;
190 - }
191 -
192 126 // Old Embed Code
193 - if ($vdo_embed_version_str === '0.5') {
127 + if($vdo_embed_version_str === '0.5') {
194 128 $output = "<div id='vdo$OTP' style='height:$height;width:$width;max-width:100%' ></div>";
195 129 $output .= "<script> (function(v,i,d,e,o){v[o]=v[o]||{}; v[o].add = v[o].add || function V(a){".
196 130 " (v[o].d=v[o].d||[]).push(a);};";
197 - $output .= "if(!v[o].l) { v[o].l=1*new Date();a=i.createElement(d),m=i.getElementsByTagName(d)[0];a.async=1;".
131 + $output .= "if(!v[o].l) { v[o].l=1*new Date(); a=i.createElement(d), m=i.getElementsByTagName(d)[0]; a.async=1; ".
198 132 "a.src=e; m.parentNode.insertBefore(a,m);}";
199 133 $output .= " })(window,document,'script','//de122v0opjemw.cloudfront.net/vdo.js','vdo'); vdo.add({ ";
200 134 $output .= "o: '$OTP', ";
201 135 if ($version == 32) {
@@ -201,18 +135,13 @@
201 135 if ($version == 32) {
202 136 $output .= "version: '$version' ";
203 137 }
204 138 $output .= "}); </script>";
205 - } else {
206 - //New embed code
207 - if ($player_tech === '') {
208 - if (get_option('vdo_watermark_flash_html') === 'flash') {
209 - $player_tech = "*,-dash";
210 - }
211 - }
139 + }
140 + //New embed code
141 + else {
212 142 $output .= "<div id='vdo$OTP' style='height:$height;width:$width;max-width:100%' ></div>";
213 - $output .= "<script>(function(v,i,d,e,o){v[o]=v[o]||{}; v[o].add = v[o].add || function V(a){".
214 - "(v[o].d=v[o].d||[]).push(a);};";
143 + $output .= "<script>(function(v,i,d,e,o){v[o]=v[o]||{}; v[o].add = v[o].add || function V(a){ (v[o].d=v[o].d||[]).push(a);};";
215 144 $output .= "if(!v[o].l) { v[o].l=1*new Date(); a=i.createElement(d), m=i.getElementsByTagName(d)[0];";
216 145 $output .= "a.async=1; a.src=e; m.parentNode.insertBefore(a,m);}";
217 146 $output .= "})(window,document,'script','https://d1z78r8i505acl.cloudfront.net/playerAssets/";
218 147 $output .= "$vdo_embed_version_str";
@@ -218,31 +147,20 @@
218 147 $output .= "$vdo_embed_version_str";
219 148 $output .= "/vdo.js','vdo');";
220 149 $output .= "vdo.add({";
221 150 $output .= "otp: '$OTP',";
222 - $output .= "playbackInfo: '$playbackInfo',";
151 + $output .= "playbackInfo: btoa(JSON.stringify({";
152 + $output .= "videoId: '$video'})),";
223 153 $output .= "theme: '$vdo_player_theme',";
224 - if ($player_tech !== '') {
225 - $output .= "techoverride: [" ;
226 - $techarray = explode(',', $player_tech);
227 - for ($i = 0; $i < sizeof($techarray); $i++) {
228 - $techStr = $techarray[$i];
229 - $output .= "'$techStr'";
230 - if ($i !== sizeof($techarray)-1) {
231 - $output .= ", ";
232 - }
233 - }
234 - $output .= "],";
235 - }
236 154 $output .= "container: document.querySelector('#vdo$OTP'),});";
237 155 $output .= "</script>";
238 156 }
239 157 return $output;
240 158 }
159 +
241 160 add_shortcode('vdo', 'vdo_shortcode');
242 -// VdoCipher Shortcode ends
243 161
244 -// adding the Settings link, starts
162 +/// adding the settings link
245 163 $plugin = plugin_basename(__FILE__);
246 164 add_filter("plugin_action_links_$plugin", 'vdo_settings_link');
247 165
248 166 function vdo_settings_link($links)
@@ -250,47 +168,27 @@
250 168 $settings_link = '<a href="options-general.php?page=vdocipher">Settings</a>';
251 169 array_unshift($links, $settings_link);
252 170 return $links;
253 171 }
254 -// adding the Settings link, ends
255 172
256 -// add the menu item and register settings (3 functions), starts
173 +/// add the menu item and register settings
257 174 if (is_admin()) { // admin actions
175 + add_action('admin_menu', 'vdo_menu');
258 176 add_action('admin_init', 'register_vdo_settings');
259 - add_action('admin_menu', 'vdo_menu');
260 177 } else {
261 178 // non-admin enqueues, actions, and filters
262 179 }
263 -function vdo_menu() {
264 - add_menu_page(
265 - 'VdoCipher Options',
266 - 'VdoCipher',
267 - 'manage_options',
268 - 'vdocipher',
269 - 'vdo_options',
270 - plugin_dir_url(__FILE__).'images/logo.png'
271 - );
272 - add_submenu_page(
273 - null,
274 - 'Video Player Themes',
275 - 'CustomPlayer',
276 - 'manage_options',
277 - 'themesvdo',
278 - 'themesvdo'
279 - );
180 +function vdo_menu()
181 +{
182 + add_menu_page('VdoCipher Options', 'VdoCipher', 'manage_options', 'vdocipher', 'vdo_options');
280 183 }
281 -
282 -function themesvdo() {
283 - include('include/player_themes.php');
284 -}
285 -
286 184 function vdo_options()
287 185 {
288 186 if (!get_option('vdo_default_height')) {
289 - update_option('vdo_default_height', 'auto');
187 + update_option('vdo_default_height', '360');
290 188 }
291 189 if (!get_option('vdo_default_width')) {
292 - update_option('vdo_default_width', '1280');
190 + update_option('vdo_default_width', '640');
293 191 }
294 192 $vdo_client_key = get_option('vdo_client_key');
295 193 if (!$vdo_client_key && strlen($vdo_client_key) != 64) {
296 194 vdo_show_form_client_key();
@@ -309,56 +207,42 @@
309 207 register_setting('vdo_option-group', 'vdo_default_width');
310 208 register_setting('vdo_option-group', 'vdo_annotate_code');
311 209 register_setting('vdo_option-group', 'vdo_embed_version');
312 210 register_setting('vdo_option-group', 'vdo_player_theme');
313 - register_setting('vdo_option-group', 'vdo_watermark_flash_html');
314 - register_setting('vdo_custom_theme', 'vdo_player_theme_options');
315 211 }
316 -// add the menu item and register settings (3 functions), ends
317 212
318 -// section for client key for new users
213 +/// adding a section for asking for the client key
319 214 function vdo_show_form_client_key()
320 215 {
321 216 include('include/setting_form.php');
322 217 }
323 -
324 -// Activation Hook starts
218 +register_deactivation_hook(__FILE__, 'vdo_deactivate');
219 +function vdo_deactivate()
220 +{
221 + delete_option('vdo_client_key');
222 + delete_option('vdo_default_width');
223 + delete_option('vdo_default_height');
224 + delete_option('vdo_annotate_code');
225 + delete_option('vdo_embed_version');
226 + delete_option('vdo_player_theme');
227 +}
325 228 function vdo_activate()
326 229 {
327 230 if ((get_option('vdo_default_height')) == false) {
328 - update_option('vdo_default_height', 'auto');
231 + update_option('vdo_default_height', '360');
329 232 }
330 233 if ((get_option('vdo_default_width')) == false) {
331 - update_option('vdo_default_width', '1280');
234 + update_option('vdo_default_width', '640');
332 235 }
333 236 //https://stackoverflow.com/a/2173318/5022684
334 237 if ((get_option('vdo_embed_version')) == false) {
335 - update_option('vdo_embed_version', '1.6.4');
238 + update_option('vdo_embed_version', '0.5');
336 239 }
337 240 if ((get_option('vdo_player_theme')) == false) {
338 - update_option('vdo_player_theme', '9ae8bbe8dd964ddc9bdb932cca1cb59a');
241 + update_option('vdo_player_theme','9ae8bbe8dd964ddc9bdb932cca1cb59a');
339 242 }
340 - if ((get_option('vdo_watermark_flash_html')) == false) {
341 - update_option('vdo_watermark_flash_html', 'html5');
342 - }
343 243 }
344 244 register_activation_hook(__FILE__, 'vdo_activate');
345 -
346 -// Deactivation Hook starts
347 -function vdo_deactivate()
348 -{
349 - delete_option('vdo_client_key');
350 - delete_option('vdo_default_width');
351 - delete_option('vdo_default_height');
352 - delete_option('vdo_annotate_code');
353 - delete_option('vdo_embed_version');
354 - delete_option('vdo_player_theme');
355 - delete_option('vdo_watermark_flash_html');
356 - delete_option('vdo_player_theme_options');
357 -}
358 -register_deactivation_hook(__FILE__, 'vdo_deactivate');
359 -
360 -// Admin notice to configure plugin for new installs, starts
361 245 function vdo_admin_notice()
362 246 {
363 247 if ((!get_option('vdo_client_key') || strlen(get_option('vdo_client_key')) != 64)
364 248 && basename($_SERVER['PHP_SELF']) == "plugins.php"