latest stable versions: v150827 (changelog)

Old Forums (READ-ONLY): The community now lives at WP Sharks™. If you have an s2Member® Pro question, please use our new Support System.

About: Iron Phoenix

Sorry, I've not written a description yet. I'll get to it soon!


My Latest Replies (From Various Topics)

Viewing 14 replies - 1 through 14 (of 14 total)
Author Replies
Author Replies
Posted: Sunday Mar 31st, 2013 at 2:39 pm #46213

It hit me like a ton of bricks as soon as you mentioned object and database caching. It was the one thing I completely forgot that I implemented. And it made sense since my dev server wasn’t having the same problem, and that was the one difference.

It has been disabled and now the DB is acting normal again. Thanks for the assist.

For anyone who comes upon this, I was using the W3 Total Cache plugin.

Posted: Saturday Mar 30th, 2013 at 12:24 pm #46145

Update:

Seems like there are duplicate entries being recorded into the user_meta table.

This is what a few rows look like:

umeta_id user_id meta_key meta_value
3665 167 wp_capabilities a:2:{s:10:”subscriber”;b:1;s:45:”access_s2member_c…
3663 167 wp_capabilities a:1:{s:10:”subscriber”;b:1;}
3647 167 wp_capabilities a:1:{s:10:”subscriber”;b:1;}

3655 167 last_name
3654 167 first_name
3653 167 last_name Balboa
3652 167 first_name Rocky
3639 167 last_name
3638 167 first_name

Not sure what is causing the multiple entries, but I will continue to search.

BTW, this only happens with the free subscriber form (Authnet), I’ve been using the paid subscriber forms with no issue for the past 6 months.

Posted: Tuesday Oct 16th, 2012 at 4:58 pm #28591

Excellent response! Thanks, Jason.

I ended up writing my own shortcode to process timing and rates to input into the s2member shortcode. This workaround resolves my situation now. I look forward to seeing what you end up with in the new release.

Posted: Thursday Oct 11th, 2012 at 2:08 am #28082

Thanks for the reply. I figured that I would need to develop workarounds in order to continue using s2member and the sales model I envision.

I look forward to seeing the next update. Hopefully there will be added flexibility so I don’t have to keep adding in my own hacks.

Posted: Wednesday Sep 5th, 2012 at 8:23 pm #24225

Thanks for looking into this!

RTMP: I ended up going back to Cloudfront and got that to work. I think the one time I tried it before I had a corrupt crossdomain.xml, but I didn’t fix it until after I reverted back to S3 only method. It is worth noting that I had checked “Yes” to have s2member configure CF for me which generated the corrupt crossdomain.xml file. Looks like there was a PHP error during the generation based on what I saw in the file. So now I am using the following:

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE cross-domain-policy SYSTEM
  "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
  <site-control permitted-cross-domain-policies="master-only" />
  <allow-access-from domain="*.ironphoenix.com" />
</cross-domain-policy>

Just opening access from my domains.

HTTP: Getting the HTTP pseudostreaming won’t take when you are authenticating via signature with S3. I was able to clear the 403 errors by faking the signature (JWP’s addition of “?file=” before the filename causes AWS to calculate the signature without the filename OR the first parameter, which in this case was response-cache-control). However, even thought I received 200 status, I still couldn’t get a video file. The modification to the URL causes AWS to return a bucket list rather than a file. So I’m concluding that HTTP pseudostreaming is currently not possible with JWP. JWP places the filename into a query string which S3 doesn’t parse and act on the file attribute.

HTML5 works fine with just S3, but Flash is going to be a challenge.

Posted: Wednesday Sep 5th, 2012 at 1:47 pm #24184

My crossdomain.xml was corrupt (seemed to be a PHP error with s2member function), but I corrected that yesterday and opened access to all.

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE cross-domain-policy SYSTEM
  "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
  <site-control permitted-cross-domain-policies="master-only" />
  <allow-access-from domain="*" />
</cross-domain-policy>
Posted: Wednesday Sep 5th, 2012 at 1:45 pm #24183

I’ve updated to the latest version of WP.

The streamer is giving me HTTP because I am using S3 to distribute instead of Cloudfront (which would use rmtp). However, when I try and use cloudfront I still get the same problem.

The request isn’t expired. The response is expired. That is done purposefully in s2member for what I assume is to prevent caching of the file.

The request has the current time + 30 seconds. Just so I could test the URL myself, I added a filter to increase the expiration to now() + 10 minutes. Now you can go to the test page ( http://ironphoenix.com/video-test ), and while it still creates a “Video not found” error and 403, you can copy the URL being passed into JW Player and run it in your browser. Doing so will cause the video to open(inline if your browser is HTML5 compatible, otherwise D/L).

So the file URL being passed (to JWP), with all of its parameters, seems correct to me.

JWP is modifying this URL. This could be why I’m getting a 403 because the signature won’t match if the URL changes.

My next question is why JWP is modifying the URL?

Also, I am using the latest version of JWP (5.10).

Posted: Wednesday Sep 5th, 2012 at 8:42 am #24152

I have nearly 20 hours investigating this issue over the past couple days, reading every thread I can find, trying every trick I know, and combing through endless lines of code. The good news is that I know a lot more about the inner workings and how everything should work. The bad news… I still can’t figure out why this doesn’t!

I looked over what you have in the KB. My AWS S3 setup with S2M is correct. I have image files on S3 that are being pulled without any issue. The data being sent in looks to be formatted correctly too (I am using raw tags around the shortcode). Time was also checked and it is spot on.

So here is where I am at now.

The streamer being passed is:

http://s2member-files.ironphoenix.com.s3.amazonaws.com

That seems to be correct.

The file parameters being passed:

video.mp4?response-cache-control=no-cache%2C+must-revalidate%2C+max-age%3D0%2C+post-check%3D0%2C+pre-check%3D0&response-content-disposition=inline%3B+filename%3D%22video.mp4%22&response-content-type=video%2Fmp4&response-expires=Wed%2C+29+Aug+2012+12%3A06%3A57+GMT&AWSAccessKeyId=AKIAJUGZWAXN3UU5RHZQ&Expires=1346846847&Signature=3maPR57s26phz1IHnYybUZ0fGQ4%3D

This also looks correct. Here it is again with each parameter broken out for readability:

video.mp4
response-cache-control=no-cache%2C+must-revalidate%2C+max-age%3D0%2C+post-check%3D0%2C+pre-check%3D0
response-content-disposition=inline%3B+filename%3D%22video.mp4%22
response-content-type=video%2Fmp4
response-expires=Wed%2C+29+Aug+2012+12%3A06%3A57+GMT
AWSAccessKeyId=AKIAJUGZWAXN3UU5RHZQ
Expires=1346846847
Signature=3maPR57s26phz1IHnYybUZ0fGQ4%3D

Next step was to look at the request & response headers to see what was actually being sent vs what was being passed to JW Player.

Request URL

http://s2member-files.ironphoenix.com.s3.amazonaws.com/?file=video.mp4?response-cache-control=no-cache%2C+must-revalidate%2C+max-age%3D0%2C+post-check%3D0%2C+pre-check%3D0&response-content-disposition=inline%3B+filename%3D%22video.mp4%22&response-content-type=video%2Fmp4&response-expires=Wed%2C+29+Aug+2012+12%3A06%3A57+GMT&AWSAccessKeyId=AKIAJUGZWAXN3UU5RHZQ&Expires=1346846847&Signature=3maPR57s26phz1IHnYybUZ0fGQ4%3D&start=0

Request Method

GET

Status Code

403 Forbidden (from cache)

Request Headers

Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Host:s2member-files.ironphoenix.com.s3.amazonaws.com
Referer:http://ironphoenix.com/jwplayer/player.swf
User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.120 Safari/535.2

Query String Parameters

file:video.mp4

Response Headers

Connection:Keep-Alive
Content-Type:application/xml
Date:Wed, 05 Sep 2012 12:07:10 GMT
Server:AmazonS3
Transfer-Encoding:chunked
x-amz-id-2:kjsYZtuGrTk6YCp1IzHP2ZD2s9kOdAPF1AZrE8Cdro4/D93gFw9U51ngMOLDvVD/
x-amz-request-id:26B8CABB517453BB

So a couple of things jumped out at me. Main one was the request URL. If you look just past the domain you get the following:

/?file=video.mp4?

I’m not sure if the “?file=” is meant to be part of the URL and thus unable to find a file and throwing a 403 error. Does anyone else see the same in their request URL?

Posted: Tuesday Sep 4th, 2012 at 7:12 pm #24082

Time is good on the server. The response-expiration being a week behind looks to be coming from s2member’s amazon_s3_url function:

..."response-expires" => ($s3_expires = gmdate("D, d M Y H:i:s", strtotime("-1 week"))." GMT"))...

However, that is only in the file part, the AWSAccessKeyID and Signature use now + 30 seconds.

Posted: Tuesday Sep 4th, 2012 at 5:36 pm #24071

Here is what the s2File shortcode is giving me:

{“streamer”:”http:\/\/s2member-files.ironphoenix.com.s3.amazonaws.com”,”file”:”video.mp4?response-cache-control=no-cache%2C+must-revalidate%2C+max-age%3D0%2C+post-check%3D0%2C+pre-check%3D0&response-content-disposition=inline%3B+filename%3D%22video.mp4%22&response-content-type=video%2Fmp4&response-expires=Tue%2C+28+Aug+2012+21%3A33%3A51+GMT&AWSAccessKeyId=AKIAIOMI74ZQ4D23KRLA&Expires=1346794461&Signature=68wMM7W7G2m%2BiUHI9wnSoPSO9u8%3D”,”url”:”http:\/\/s2member-files.ironphoenix.com.s3.amazonaws.com\/video.mp4?response-cache-control=no-cache%2C+must-revalidate%2C+max-age%3D0%2C+post-check%3D0%2C+pre-check%3D0&response-content-disposition=attachment%3B+filename%3D%22video.mp4%22&response-content-type=video%2Fmp4&response-expires=Tue%2C+28+Aug+2012+21%3A33%3A51+GMT&AWSAccessKeyId=AKIAIOMI74ZQ4D23KRLA&Expires=1346794461&Signature=RG7907sVqawDJRzfZBLDW4tD0ls%3D”}
Posted: Tuesday Sep 4th, 2012 at 4:34 pm #24063

I deactivated all except s2member and the video shortcode plugin. No change in behavior.

What part isn’t being parsed correctly and what should it be?

Posted: Tuesday Sep 4th, 2012 at 1:45 pm #24048

Passed everything. Only gave me a warning to increase WP memory limit to 64MB.

Posted: Friday Feb 24th, 2012 at 12:00 pm #6279

Thanks for the reply. I haven’t seen any issues since going to v1.7.1, so thanks for the help!

Posted: Wednesday Feb 15th, 2012 at 1:54 pm #5235

Since you mentioned that the behavior I was looking for was already there, I went back and took a closer look at what was happening. The script was throwing an exception on the ‘first’ method call, stating it didn’t exist. Some research led me to find out that ‘first’ wasn’t added to jQuery until 1.4, which then led me to find out that the previous developer had deregistered the jQuery library that comes with WP and loaded up ver. 1.3.2 as a part of the Google Analytics implementation.

So I removed that all is well again. I haven’t checked to see if running 1.7.1 is going to impact anything else, but if it does I can always register a lower version.

Are there any known issues running jQuery v1.7.1 with s2Member?

Viewing 14 replies - 1 through 14 (of 14 total)

Old Forums (READ-ONLY): The community now lives at WP Sharks™. If you have an s2Member® Pro question, please use our new Support System.

Contacting s2Member: Please use our Support Center for bug reports, pre-sale questions & technical assistance.