Installing Plex on centos 6.x

The official Plex Server RPM has some installation issues due to incomplete SELinux policy. Without correct SELinux you will get 404 HTTP error when accessing the web interface. If you do not want to disable SELinux, here’s how to install the Plex successfully

  1. Install Plex RPM, for example
    yum install http://downloads.plexapp.com/plex-media-server/0.9.8.18.290-11b7fdd/plexmediaserver-0.9.8.18.290-11b7fdd.x86_64.rpm
  2. Post-installation steps to fix selinux issues according to these steps (see post by jasalcido). In summary, create myplex.te with the following contents
    module myplex 6.0;require {
    type rsync_t;
    type var_lib_t;
    class file { create read rename getattr open setattr };
    class dir { create add_name setattr rename remove_name };
    }
    #============= rsync_t ==============
    #!!!! This avc is allowed in the current policy
    allow rsync_t var_lib_t:dir { create add_name setattr rename remove_name };
    #!!!! This avc is allowed in the current policy
    allow rsync_t var_lib_t:file { create read rename getattr open setattr };

    Then, as root, execute the following commands

    checkmodule -M -m -o myplex.mod myplex.te
    semodule_package -o myplex.pp -m myplex.mod
    semodule -i myplex.pp
  3. Configure iptables if necessary. For me, allowing UDP and TCP for port 32400 was enough.
  4. Register your Plex media server to myPlex using the web interface. I had to check ”Manually specify port” (with the default port 32400!) to make the myPlex connection work.
Mainokset

Fixing file permissions on network shares in Cygwin

Are you seeing question marks on network shares in mapped drives?

See this page for more information. Basically, modifying the /etc/fstab fixes the problem:

# For a description of the file format, see the Users Guide
# http://cygwin.com/cygwin-ug-net/using.html#mount-table

# This is default anyway:
# none /cygdrive cygdrive binary,posix=0,user 0 0

# noacl = use the ntfs permissions
C:/cygwin/bin /usr/bin ntfs binary,auto,noacl 0 0
C:/cygwin/lib /usr/lib ntfs binary,auto,noacl 0 0
C:/cygwin / ntfs binary,auto,noacl 0 0
none /cygdrive cygdrive binary,posix=0,user,noacl 0 0

Windows Server 2008 R2 & Windows 7 – Adding network share to library

Ok, so you got Windows server 2008 R2 having some shares you want to add to your Windows 7 library. Here’s the guide to make it to work (without having the files available offline) [from here]:

  1. On Windows 2008 R2 server, do NOT install the indexing service! It’s a Server 2003 version that is not recognized by Windows 7 clients. Instead, install the ”Windows Search Service” – you can only pick one or the other so make sure you select Windows Search Service – it’s one of the roles under File Services.
  2. The install wizard should ask you which folders/drives you want to index – choose any data drive (recommend NOT selecting the system/boot drives) that contains files you want to include in your Windows 7 library on the workstations. If you missed this during the install, you can go back to CONTROL PANEL and type ”indexing” into the search box to find the indexing options and customize it there (exactly the same way you do with Windows 7).
  3. As soon as the drives have been added, you can now include any locations on those drives in your Windows 7 workstation libraries (even before the server finishes indexing). You will no longer get any warnings that ”some locations are not indexed”…everything works as it should!
  4. Make sure the SYSTEM account has full access to the folder you are trying to index

I noticed that the above steps might not be enough. If you are trying to add the network share to library using the computers smb name (e.g. someserver) it should work. Also the ip address should work all right according to my tests (I’ve read somewhere that it might cause problems…). However, In my case I have a dynamic dns service (dyndns.com) set up. Using that domain name (e.g. someserver.ath.cx) does not work when adding share to Windows 7 library. So always use the ip address or smb-name (not the domain name) when adding share to Windows 7 library.

Note that you can find some symbolic link trickery to fool windows to add unindexed folders to library. However, that just adds the folders to the library, but the searches will be slow!

AutoHotKey script for controlling multiple music applications easily

With the following AutoHotkey script you can control multiple media players easily. In windows, by default all the keyboard shortcuts (special media buttons play, previous, next and stop) will go to all applications. Obviously, this will cause problems if I have both Spotify and foobar2000 both running at the same time.

The script solves the situation by examining window titles and the active window. The script uses following logic when deciding the window that will receive the keyboard button press:

  1. Window that is active (determined by examined window title, for example)
  2. Media player that is currently playing a song (determined by examining window title, for example)
  3. The default player

The script should be easy enough to expand to more media players; the only hard thing is to figure how to determine if the player is actually playing something. In foobar2000, the window title is customizable to make the detection easy (DUI: Go to Preferences->Display->Default User Interface, CUI: Preferences->Display->Columns UI->->Main tab). You can append the following format string so that it will display [Playing] if a song is playing

$if($and(%isplaying%,$not(%ispaused%)),'[Playing]',)

UPDATE: The following script will use last activated window as the default player (see step 3).

#InstallKeybdHook

SetTitleMatchMode  2
commandSpotify := 0
commandFoobar := 1

detectMusicPlayers()
{
  ; all variables are global unless prefixed with local
  global
  DetectHiddenWindows, On
  WinGetTitle, spotifyTitle, ahk_class SpotifyMainWindow
  WinGetTitle, foobarTitle, foobar2000
  WinGetTitle, currentTitle, A
  DetectHiddenWindows, Off
  spotifyTitleLength := StrLen(spotifyTitle)
  spotifyActive := InStr(currentTitle, "Spotify")
  foobarActive := InStr(currentTitle, "foobar2000")
  spotifyPlaying := spotifyTitleLength > 7
  foobarPlaying := InStr(foobar2000, "[Playing]")

  if spotifyActive or spotifyPlaying{
    commandSpotify := 1
    commandFoobar := 0 
    ;MsgBox spotify active
  } else if foobarActive or foobarPlaying {
    commandSpotify := 0
    commandFoobar := 1  
    ;MsgBox foobar active
  } else {
    ;MsgBox spotify not playing
    ;Use "defaults" as specified by CheckActivations
  }
  
}

; Check for window activation
SetTimer, CheckActivations, 300


CheckActivations:
  if WinActive("Spotify") {
    ;MsgBox Spotify activated
    commandSpotify = 1
    commandFoobar = 0
  } else if WinActive("foobar2000") {
    ;MsgBox foobar activated
    commandSpotify = 0
    commandFoobar = 1
  }
  
return


; 122 = play/pause handling
SC122::
detectMusicPlayers()

if commandSpotify {
  ControlSend, , {Space}, ahk_class SpotifyMainWindow 
} else if commandFoobar {
  Run "C:\program files (x86)\foobar2000\foobar2000.exe" /playpause 
}
return

; 110	 = PREV  handling
SC110	::
detectMusicPlayers()

if commandSpotify {
  ControlSend, , ^{Left}, ahk_class SpotifyMainWindow 
} else if commandFoobar {
  Run "C:\program files (x86)\foobar2000\foobar2000.exe" /prev 
}
return

; 119	 = NEXT handling
SC119	::
detectMusicPlayers()

if commandSpotify {
  ControlSend, , ^{Right}, ahk_class SpotifyMainWindow 
} else if commandFoobar {
  Run "C:\program files (x86)\foobar2000\foobar2000.exe" /next 
}
return

; 124	 = STOP handling
SC124	::
detectMusicPlayers()

if commandSpotify {
  ; there is no stop in spotify, use "play/pause" instead
  if spotifyPlaying {
    ControlSend, , {Space}, ahk_class SpotifyMainWindow 
  }
} else if commandFoobar {
  Run "C:\program files (x86)\foobar2000\foobar2000.exe" /stop 
}
return

Search PDF files (contents) with Windows 64bit

See this link for details.

Adobe currently bundles a 32-bit PDF iFilter with Adobe Acrobat® 9 as well as free Adobe Reader® 9 software. It uses the Microsoft iFilter interface and allows third-party indexing tools to extract text from Adobe PDF files.

In response to customer requests, Adobe is releasing Adobe PDF iFilter 9 for 64-bit platforms, which will allow searching PDF files on Microsoft® Windows® 64-bit platforms for applications such as Microsoft Office SharePoint Server 2007, Microsoft Exchange Server 2007, and Microsoft SQL Server 2005.

Note that Acrobat Reader does not provide IFilter for 64 bit Windows by default.