SageTV Community  

Go Back   SageTV Community > SageTV Customizations > SageTV Customizations

SageTV Customizations This forums is for discussing and sharing user-created modifications for the SageTV application created by using the SageTV Studio or through the use of external plugins. Use this forum to discuss customizations for SageTV version 6 and earlier, or for the SageTV3 UI.

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 02-01-2009, 10:32 AM
Slugger Slugger is offline
SageTVaholic
 
Join Date: Mar 2007
Location: Kingston, ON
Posts: 3,747
Arrow Plugin: Sage Web Lite (SWL)

Posting this now in order to solicit some testers. The current snapshot builds are certainly in an alpha/preview/PoC state, but with that said it is functional. Some of GUI elements are a little rough around the edges, etc., but the functionality that's in there is working properly.

What is SWL? The plan is to make SWL a subset of the web server plugin. It will consist of the most used (by me) features from nielm's web server plugin with a focus on enhancing the GUI and refreshing the functionality to support the latest features of the SageTV system.

The motivation for this plugin started with a desire to have support for multi-channel favourites on the web. The current web server plugin doesn't support this feature and it was the big one that I was really missing. Therefore, the current snapshot builds of SWL have just one module - the favourites manager. Key features of the favourites manager:
  • Easily rearrange your favourite's priorities by dragging and dropping the favourites within the list to rearrange them
  • Easily modify key settings of your favourites with inline editing of grid (double click a row to activate inline editing)
  • When filling in/editing the details of a favourite the module will suggest valid options as you type (i.e. "Google suggest" like type ahead)

NOTES:
  • To install, follow the instructions for SRE or SJQ from their wiki docs (i.e. you need the Jetty plugin setup and working, then unzip a snapshot build from your SageTV install dir - maintain folder structure when unzipping)
  • When installed, SWL is available at URL /swl/SWLClient.html on your Jetty server
  • Single click a description to bring up the full editor window for that favourite (will eventually display that column as hyperlinks to make its "clickability" more obvious)
  • Double click a row to bring up the inline editor for that favourite in the grid
  • The custom features on the editor window are not implemented yet ('ignore channel list' and 'do not record shows with generic data')

Planned Modules:
  • Favourites manager
  • Home page module (similar to the home page of the web server plugin)
  • EPG search
  • Setup/view recording schedules (incl. manual recording setup)
  • EPG viewer

Thoughts, suggestions, etc. welcomed. I'm especially interested in feedback from those who install the current snapshots and play around with them.
__________________
Twitter: @ddb_db
Server: Intel i5-4570 Quad Core, 16GB RAM, 1 x 128GB OS SSD (Win7 Pro x64 SP1), 1 x 2TB media drive
Capture: 2 x Colossus
STB Controller: 1 x USB-UIRT
Software:Java 1.7.0_65; SageTV 7.1.9
Clients: 1 x HD300, 2 x HD200, 1 x SageClient, 1 x PlaceShifter
Plugins: Too many to list now...

Last edited by Slugger; 02-07-2009 at 05:53 PM. Reason: Update snapshot link
Reply With Quote
  #2  
Old 02-01-2009, 11:45 AM
CollinR CollinR is offline
Sage Icon
 
Join Date: Dec 2004
Location: Tulsa, OK
Posts: 1,304
I can tell you now I use the current webserver interface more as a remote control for my clients then anything else.

I basically reformatted the web remotes for each MAC address and built a custom page to display it with all the other web interfaces related to that specific area.
Reply With Quote
  #3  
Old 02-01-2009, 11:55 AM
LehighBri LehighBri is offline
Sage Expert
 
Join Date: Sep 2006
Posts: 694
Great work... it's always nice to see folks continue to improve upon nielm's already solid web server.

I got it up and running in no-time... couple suggestions I have for you:
  • In the favorites detail, sorting could use some help... see below
  • When I click the number column to sort, it sorts as if it's text. Sort numerically instead (and maybe have it sort numerically by default as well).
  • Sort category and subcategory fields
  • What are the isc_OID_24 and 27 fields?
__________________
Server: Sage 7.1.9 beta; Dell Inspiron 530; Windows 7 Ultimate 32-bit (UAC turned off); 2TB Internal SATA (TV Recordings)
Storage: Synology DiskStation DS411+, RAID 5, 5x 2TB SATA for (DVDs/Music/Other Videos)
Tuners: Ceton InfiniTV w/ Verizon FIOS cablecard (using babgvant's SageDCT plugin)
Clients: 1x STP-HD300; 1x Acer Aspire Revo 3610 (Atom/Ion) w/ SageTV client (Win 7, EVR, FSE on)
Reply With Quote
  #4  
Old 02-01-2009, 01:36 PM
Slugger Slugger is offline
SageTVaholic
 
Join Date: Mar 2007
Location: Kingston, ON
Posts: 3,747
Quote:
Originally Posted by LehighBri View Post
Great work... it's always nice to see folks continue to improve upon nielm's already solid web server.

I got it up and running in no-time... couple suggestions I have for you:
  • In the favorites detail, sorting could use some help... see below
  • When I click the number column to sort, it sorts as if it's text. Sort numerically instead (and maybe have it sort numerically by default as well).
  • Sort category and subcategory fields
  • What are the isc_OID_24 and 27 fields?
Yeah, definitely need to sort the channel list. I was going to parse them as numbers and sort, but they are string parameters and I think people with OTA tuners would have channels that won't parse as numbers (aren't the channels for OTA like 4-1, 6-2, etc.?). Right now, the channel numbers are treated (and therefore sorted) as text data. Will also sort the other lists as well.

Those two fields (isc_OID_*) are the storage/display areas for the multi channel lists. If you select a channel from the dropdown it gets added to the text box beside it. Selecting multiple channels will populate the text box with the CSV string to be used when creating/updating the favourite. I just forget to give those fields a label and so it chose a default display label, which appears to be just the object identification string.
__________________
Twitter: @ddb_db
Server: Intel i5-4570 Quad Core, 16GB RAM, 1 x 128GB OS SSD (Win7 Pro x64 SP1), 1 x 2TB media drive
Capture: 2 x Colossus
STB Controller: 1 x USB-UIRT
Software:Java 1.7.0_65; SageTV 7.1.9
Clients: 1 x HD300, 2 x HD200, 1 x SageClient, 1 x PlaceShifter
Plugins: Too many to list now...
Reply With Quote
  #5  
Old 02-02-2009, 10:25 AM
wayner wayner is offline
SageTVaholic
 
Join Date: Jan 2008
Location: Toronto, ON
Posts: 4,235
Slugger - I don't know if you are looking for other functionality but one thing that I think would be fabulous would be to have the web page facilitate streaming of content to the client over the web. This would likely require some sort of a server streamer (i.e. VLC, Windows Media Encoder) to be running on the client but I think that this would be fabulous to allow streaming to non-Placeshifter clients like iPhones, Blackberries, and other handheld devices.

I believe that you can do this with VLC today but I think it is rather tricky.
__________________
Sage7 on Win7Pro-i660CPU with 4.6TB, 2xHD-PVR(connected to SA3250HD+SA4250HD-Rogers Cable), HDHR(2xOTA), HVR-1850(one OTA, one connected to SA3200 SD cable box), 2xHD-300, 8xHD-200 Extenders, Client+2xPlaceshifter and a WHS which acts as a backup Sage server
Reply With Quote
  #6  
Old 02-02-2009, 10:31 AM
ccourtney ccourtney is offline
Sage User
 
Join Date: Mar 2008
Posts: 27
Great

I'll try this out later today when I get home. I needed jetty for SJQ and had no desire to run another web server to get neilm's running. I'd love to see this and the mobile interface combined and could spend some coding time to help that effort.
Reply With Quote
  #7  
Old 02-02-2009, 10:45 AM
Slugger Slugger is offline
SageTVaholic
 
Join Date: Mar 2007
Location: Kingston, ON
Posts: 3,747
Quote:
Originally Posted by wayner View Post
Slugger - I don't know if you are looking for other functionality but one thing that I think would be fabulous would be to have the web page facilitate streaming of content to the client over the web. This would likely require some sort of a server streamer (i.e. VLC, Windows Media Encoder) to be running on the client but I think that this would be fabulous to allow streaming to non-Placeshifter clients like iPhones, Blackberries, and other handheld devices.

I believe that you can do this with VLC today but I think it is rather tricky.
No plans for streaming support. The goal here is to create a web interface for viewing/configuring recordings. I leave streaming content to Placeshifter. Nielm's web server also supports streaming. Basically I'll just be taking the core functions (as identified in the original post) and building from there. Basically things where the current web server isn't up to date (multi-channel favourites, etc.) is what I'm focusing on with this effort.

Also, I'd expect dev on this to be somewhat slow. Support for my other plugins (SJQ and SRE) will take precedence and based on the number of issue tickets opened today, it might be awhile before I get back to working on this. But with that said, I will get back to it eventually.

This preview release was more to solicit some feedback/ideas, etc. I can't give a time line on this project, but I wouldn't expect the completion of all those modules I listed for some time. But do keep the ideas/questions coming.
__________________
Twitter: @ddb_db
Server: Intel i5-4570 Quad Core, 16GB RAM, 1 x 128GB OS SSD (Win7 Pro x64 SP1), 1 x 2TB media drive
Capture: 2 x Colossus
STB Controller: 1 x USB-UIRT
Software:Java 1.7.0_65; SageTV 7.1.9
Clients: 1 x HD300, 2 x HD200, 1 x SageClient, 1 x PlaceShifter
Plugins: Too many to list now...
Reply With Quote
  #8  
Old 02-07-2009, 12:06 PM
Slugger Slugger is offline
SageTVaholic
 
Join Date: Mar 2007
Location: Kingston, ON
Posts: 3,747
Snapshot 255 was just built. This snapshot contains the implementation of the added features to the favourites manager, specifically:

Add ability to ignore channels for a favourite: When creating a favourite in SWL you can give a list of channels to exclude from the favourite.

Motivation: Some sports events I record are blacked out on some channels even though the SageTV EPG data still lists the game in the EPG. By using the ignore channel option I can ensure that SageTV will only pickup airings known not to be blacked out for me.

Add ability to ignore airings with generic data: When creating a favourite in SWL you can tell the favourite not to record airings that only have generic program information (shows with external IDs starting with 'SH').

Motivation: A lot of the syndicated sitcoms I record (Seinfeld, etc.) are shown on dozens of channels and some of those channels don't provide episode info in the EPG. I don't want to record them because they're likely to be recorded on another channel. This is a way to avoid duplicate recordings.

WARNING: These features are implemented by spawning threads that periodically scan airings that match your favourite rules and mark those airings that shouldn't be recorded as "don't like". This accomplishes the task as desired, but may have side effects for those users who enable intelligent recording. Please be advised that your IR results may (will?) be affected by constantly marking various airings as "don't like."

I'm looking at adding an "HD only" and "non HD only" options to the favourites manager (i.e. only record HD airings or only record non-HD airings). I'm also looking for other favourite rule "enhancements" that I haven't thought of so please feel free to chime in with any ideas you may have.
__________________
Twitter: @ddb_db
Server: Intel i5-4570 Quad Core, 16GB RAM, 1 x 128GB OS SSD (Win7 Pro x64 SP1), 1 x 2TB media drive
Capture: 2 x Colossus
STB Controller: 1 x USB-UIRT
Software:Java 1.7.0_65; SageTV 7.1.9
Clients: 1 x HD300, 2 x HD200, 1 x SageClient, 1 x PlaceShifter
Plugins: Too many to list now...
Reply With Quote
  #9  
Old 02-07-2009, 12:27 PM
nyplayer nyplayer is offline
SageTVaholic
 
Join Date: Sep 2005
Posts: 2,685
Slugger,

where are you getting the password from it defaults to the sage default pwd any place to change it?
__________________
Acer AM3910-UR10P Intel Core i3-540 3.06GHz Desktop, Windows 8.1 Pro. 64bit, 3 HdHomerun units(OTA Tuners) , 2 HD Homerun Prime using SageDCT (6 Tuners), for a total of 12 HD Tuners , LinkSYS 16 port Gigabyte Switch.
D-link 857 Router
Server: Sage TV 7
4 clients: SageClient TV 7
Launch mame and emulator games from Sage Game Menu Item Creator
Reply With Quote
  #10  
Old 02-07-2009, 12:59 PM
Slugger Slugger is offline
SageTVaholic
 
Join Date: Mar 2007
Location: Kingston, ON
Posts: 3,747
Quote:
Originally Posted by nyplayer View Post
Slugger,

where are you getting the password from it defaults to the sage default pwd any place to change it?
It's using the password you set for Jetty. Only way to change it is to change your Jetty password.
__________________
Twitter: @ddb_db
Server: Intel i5-4570 Quad Core, 16GB RAM, 1 x 128GB OS SSD (Win7 Pro x64 SP1), 1 x 2TB media drive
Capture: 2 x Colossus
STB Controller: 1 x USB-UIRT
Software:Java 1.7.0_65; SageTV 7.1.9
Clients: 1 x HD300, 2 x HD200, 1 x SageClient, 1 x PlaceShifter
Plugins: Too many to list now...
Reply With Quote
  #11  
Old 02-07-2009, 01:05 PM
wayner wayner is offline
SageTVaholic
 
Join Date: Jan 2008
Location: Toronto, ON
Posts: 4,235
Quote:
Originally Posted by Slugger View Post
It's using the password you set for Jetty. Only way to change it is to change your Jetty password.
This is set in the realm.properties file which you should find here: C:\Program Files\SageTV\SageTV\jetty\etc
__________________
Sage7 on Win7Pro-i660CPU with 4.6TB, 2xHD-PVR(connected to SA3250HD+SA4250HD-Rogers Cable), HDHR(2xOTA), HVR-1850(one OTA, one connected to SA3200 SD cable box), 2xHD-300, 8xHD-200 Extenders, Client+2xPlaceshifter and a WHS which acts as a backup Sage server
Reply With Quote
  #12  
Old 02-10-2009, 06:29 PM
Slugger Slugger is offline
SageTVaholic
 
Join Date: Mar 2007
Location: Kingston, ON
Posts: 3,747
A new snapshot is available (stick to 262 or higher). These latest snapshots lay the groundwork for the "home page portal". You can see where I'm heading with this module - when done you'll have a bunch of windows each containing various information about your SageTV system.
__________________
Twitter: @ddb_db
Server: Intel i5-4570 Quad Core, 16GB RAM, 1 x 128GB OS SSD (Win7 Pro x64 SP1), 1 x 2TB media drive
Capture: 2 x Colossus
STB Controller: 1 x USB-UIRT
Software:Java 1.7.0_65; SageTV 7.1.9
Clients: 1 x HD300, 2 x HD200, 1 x SageClient, 1 x PlaceShifter
Plugins: Too many to list now...
Reply With Quote
  #13  
Old 04-07-2009, 02:10 PM
Peter_h Peter_h is offline
Sage Fanatic
 
Join Date: May 2008
Location: Kailua, HI
Posts: 798
Did development for this stop?

The snapshot builds aren't available anymore.
Reply With Quote
  #14  
Old 04-07-2009, 02:22 PM
Slugger Slugger is offline
SageTVaholic
 
Join Date: Mar 2007
Location: Kingston, ON
Posts: 3,747
It's definitely on the back burner, no immediate plans for any changes/enhancements to what's there. The latest snapshot is still available at Google Code though.
__________________
Twitter: @ddb_db
Server: Intel i5-4570 Quad Core, 16GB RAM, 1 x 128GB OS SSD (Win7 Pro x64 SP1), 1 x 2TB media drive
Capture: 2 x Colossus
STB Controller: 1 x USB-UIRT
Software:Java 1.7.0_65; SageTV 7.1.9
Clients: 1 x HD300, 2 x HD200, 1 x SageClient, 1 x PlaceShifter
Plugins: Too many to list now...
Reply With Quote
  #15  
Old 04-23-2009, 11:05 AM
jbuszkie's Avatar
jbuszkie jbuszkie is offline
Sage Fanatic
 
Join Date: Aug 2003
Location: Westminster, MA
Posts: 827
For some reason I can't get this to work. I've got the
Mobile Web Interface by jreichen working just fine.. so I know I've got Jetty working ok. when I try to go to http://my_server:myport/swl/SWLClient.html
It spins for a while and then I get a "Internet Explorer cannot display the webpage" I never get a prompt to ask for the username/password.
I've got the 332 snapshot.

And I see from the log stuff It seems to be loading and such..

I know this is on the back burner.. but if it's something easy..

Thanks,

Jim
Reply With Quote
  #16  
Old 04-23-2009, 12:05 PM
Slugger Slugger is offline
SageTVaholic
 
Join Date: Mar 2007
Location: Kingston, ON
Posts: 3,747
What happens when you try to load /swl/ (you should get a directory listing)?
__________________
Twitter: @ddb_db
Server: Intel i5-4570 Quad Core, 16GB RAM, 1 x 128GB OS SSD (Win7 Pro x64 SP1), 1 x 2TB media drive
Capture: 2 x Colossus
STB Controller: 1 x USB-UIRT
Software:Java 1.7.0_65; SageTV 7.1.9
Clients: 1 x HD300, 2 x HD200, 1 x SageClient, 1 x PlaceShifter
Plugins: Too many to list now...
Reply With Quote
  #17  
Old 04-23-2009, 12:16 PM
jbuszkie's Avatar
jbuszkie jbuszkie is offline
Sage Fanatic
 
Join Date: Aug 2003
Location: Westminster, MA
Posts: 827
Same thing.. It waits for a while and then it gives the same error.

If I go striaght to the root I get a
Code:
HTTP ERROR: 403
FORBIDDEN
RequestURI=/

Powered by Jetty://
Which is what I would expect.

And if I undeploy and try it again I get the
Code:
HTTP ERROR: 404
NOT_FOUND
RequestURI=/swl/SWLClient.html

Powered by jetty://
So it's doing something with the deploy... Anything else easy I could try?

Thanks,

Jim
Reply With Quote
  #18  
Old 04-23-2009, 12:17 PM
jbuszkie's Avatar
jbuszkie jbuszkie is offline
Sage Fanatic
 
Join Date: Aug 2003
Location: Westminster, MA
Posts: 827
Where is the war extracted at? It seems like it's some temporary location.
Reply With Quote
  #19  
Old 04-23-2009, 12:24 PM
Slugger Slugger is offline
SageTVaholic
 
Join Date: Mar 2007
Location: Kingston, ON
Posts: 3,747
Jetty unzips the war in a temp dir and runs the app from there. If you enable debug logging in Sage and Jetty then the logs should tell you why the deployment is failing. Also ensure that the context file (swl.context.xml) and the war file are in the proper locations (\SageTV\jetty\contexts and \SageTV\jetty\webapps, respectively). Unzipping the pkg from the \SageTV dir and maintaining zip dir structure should ensure that.
__________________
Twitter: @ddb_db
Server: Intel i5-4570 Quad Core, 16GB RAM, 1 x 128GB OS SSD (Win7 Pro x64 SP1), 1 x 2TB media drive
Capture: 2 x Colossus
STB Controller: 1 x USB-UIRT
Software:Java 1.7.0_65; SageTV 7.1.9
Clients: 1 x HD300, 2 x HD200, 1 x SageClient, 1 x PlaceShifter
Plugins: Too many to list now...
Reply With Quote
  #20  
Old 04-23-2009, 12:51 PM
jbuszkie's Avatar
jbuszkie jbuszkie is offline
Sage Fanatic
 
Join Date: Aug 2003
Location: Westminster, MA
Posts: 827
Here is the last bit of of the log file. I'll attach the full history as an attachment..

Code:
Thu 4/23 14:27:55.428 (org.mortbay.log) <DEBUG> loaded class org.sqlite.RS from ContextLoader@SageTV Web Lite([file:/C:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/Jetty_0_0_0_0_8081_swl.war__swl__-1m31yw_1098163677601874355/webapp/WEB-INF/classes/, file:/C:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/Jetty_0_0_0_0_8081_swl.war__swl__-1m31yw_1098163677601874355/webapp/WEB-INF/lib/gkusnick.sagetv.jar, file:/C:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/Jetty_0_0_0_0_8081_swl.war__swl__-1m31yw_1098163677601874355/webapp/WEB-INF/lib/json.jar, file:/C:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/Jetty_0_0_0_0_8081_swl.war__swl__-1m31yw_1098163677601874355/webapp/WEB-INF/lib/sqlitejdbc.jar, file:/C:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/Jetty_0_0_0_0_8081_swl.war__swl__-1m31yw_1098163677601874355/webapp/WEB-INF/lib/swl-worker.jar]) / sun.misc.Launcher$AppClassLoader@11b86e7
Thu 4/23 14:27:55.429 (org.mortbay.log) <DEBUG> loaded class java.lang.IllegalStateException
Thu 4/23 14:27:55.429 (org.mortbay.log) <DEBUG> loaded class java.lang.IllegalStateException from null
Thu 4/23 14:27:55.430 (org.mortbay.log) <DEBUG> loaded class java.lang.Long
Thu 4/23 14:27:55.430 (org.mortbay.log) <DEBUG> loaded class java.lang.Long from null
Thu 4/23 14:27:55.431 (org.mortbay.log) <DEBUG> loaded class java.util.HashMap
Thu 4/23 14:27:55.431 (org.mortbay.log) <DEBUG> loaded class java.util.HashMap from null
Thu 4/23 14:27:55.431 (org.mortbay.log) <DEBUG> loaded class java.util.ArrayList
Thu 4/23 14:27:55.431 (org.mortbay.log) <DEBUG> loaded class java.util.ArrayList from null
Thu 4/23 14:27:55.431 (org.mortbay.log) <DEBUG> loaded interface java.util.Iterator
Thu 4/23 14:27:55.431 (org.mortbay.log) <DEBUG> loaded interface java.util.Iterator from null
Thu 4/23 14:27:55.431 (org.mortbay.log) <DEBUG> loaded class java.lang.Integer
Thu 4/23 14:27:55.431 (org.mortbay.log) <DEBUG> loaded class java.lang.Integer from null
Thu 4/23 14:43:20.029 (org.mortbay.log) <DEBUG> REQUEST /swl/SWLClient.html on org.mortbay.jetty.HttpConnection@1da9420
Thu 4/23 14:43:20.029 (org.mortbay.log) <DEBUG> sessionManager=org.mortbay.jetty.servlet.HashSessionManager@14ef725
Thu 4/23 14:43:20.029 (org.mortbay.log) <DEBUG> session=null
Thu 4/23 14:43:20.029 (org.mortbay.log) <DEBUG> RESPONSE /swl/SWLClient.html  302
Thu 4/23 14:44:16.347 (org.mortbay.log) <DEBUG> REQUEST /swl on org.mortbay.jetty.HttpConnection@f87198
Thu 4/23 14:44:16.348 (org.mortbay.log) <DEBUG> RESPONSE /swl  302
Thu 4/23 14:44:16.386 (org.mortbay.log) <DEBUG> REQUEST /swl/ on org.mortbay.jetty.HttpConnection@f87198
Thu 4/23 14:44:16.386 (org.mortbay.log) <DEBUG> sessionManager=org.mortbay.jetty.servlet.HashSessionManager@14ef725
Thu 4/23 14:44:16.386 (org.mortbay.log) <DEBUG> session=null
Thu 4/23 14:44:16.386 (org.mortbay.log) <DEBUG> RESPONSE /swl/  302
Thanks again!

Jim
Attached Files
File Type: zip swl_grep_log.zip (5.0 KB, 153 views)
Reply With Quote
Reply


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
How do I get sage to recognize my media player plugin? redondo_se SageTV Studio 7 01-26-2009 03:43 PM
A Couple of Sage Web Server Questions... robhix SageTV Customizations 4 01-22-2009 05:37 PM
Sage is relying on its cached metadata too much bastafidli SageTV Beta Test Software 6 08-06-2008 05:46 AM
Sage Plugin for Chat, AIM or Google Chat personalt SageTV Customizations 1 06-24-2008 03:50 PM
Sage crashes rfutscher SageTV Software 0 01-23-2006 03:31 PM


All times are GMT -6. The time now is 12:55 PM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2014, vBulletin Solutions, Inc.
Copyright 2003-2005 SageTV, LLC. All rights reserved.