2016-02-15

Formatting code on Blogger

In my last post, I needed to format some code. I didn't want to spend much time with this, so I followed the first reasonable blog post I found:

http://www.craftyfella.com/2010/01/syntax-highlighting-with-blogger-engine.html

I may have worked perfectly in 2010, but currently there are a few brushes missing in the .js import snippet. I created a new import snippet containing all .js brushes listed on http://alexgorbatchev.com/SyntaxHighlighter/manual/brushes/. Follows:

    <link href='http://alexgorbatchev.com/pub/sh/current/styles/shCore.css' rel='stylesheet' type='text/css'/> 
    <link href='http://alexgorbatchev.com/pub/sh/current/styles/shThemeEmacs.css' rel='stylesheet' type='text/css'/> 
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js' type='text/javascript'></script> 
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushAS3.js' type='text/javascript'></script> 
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushBash.js' type='text/javascript'></script> 
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushColdFusion.js' type='text/javascript'></script> 
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCSharp.js' type='text/javascript'></script> 
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCpp.js' type='text/javascript'></script> 
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCss.js' type='text/javascript'></script> 
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushDelphi.js' type='text/javascript'></script> 
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushDiff.js' type='text/javascript'></script> 
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushErlang.js' type='text/javascript'></script> 
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushGroovy.js' type='text/javascript'></script> 
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js' type='text/javascript'></script> 
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJava.js' type='text/javascript'></script>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJavaFX.js' type='text/javascript'></script> 
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPerl.js' type='text/javascript'></script> 
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPhp.js' type='text/javascript'></script> 
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js' type='text/javascript'></script> 
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPowerShell.js' type='text/javascript'></script> 
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPython.js' type='text/javascript'></script> 
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushRuby.js' type='text/javascript'></script> 
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushScala.js' type='text/javascript'></script> 
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushSql.js' type='text/javascript'></script> 
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushVb.js' type='text/javascript'></script> 
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js' type='text/javascript'></script> 
    <script language='javascript'> 
      SyntaxHighlighter.config.bloggerMode = true;
      SyntaxHighlighter.config.clipboardSwf = 'http://alexgorbatchev.com/pub/sh/current/scripts/clipboard.swf';
      SyntaxHighlighter.all();
    </script>

The available brushes are:
  • ActionScript3 - as3, actionscript3
  • Bash/shell - bash, shell
  • ColdFusion - cf, coldfusion
  • C# - c-sharp, csharp
  • C++ - cpp, c
  • CSS - css
  • Delphi - delphi, pas, pascal
  • Diff - diff, patch
  • Erlang - erl, erlang
  • Groovy - groovy
  • JavaScript - js, jscript, javascript
  • Java - java
  • JavaFX - jfx, javafx
  • Perl - perl, pl
  • PHP - php
  • Plain Text - plain, text
  • PowerShell - ps, powershell
  • Python - py, python
  • Ruby - rails, ror, ruby
  • Scala - scala
  • SQL - sql
  • Visual Basic - vb, vbnet
  • XML - xml, xhtml, xslt, html, xhtml
Hope it helps!

EDIT:

I overlooked the fact that SyntaxHighlighter have a lot of themes, choose yours ;)
http://alexgorbatchev.com/SyntaxHighlighter/manual/themes/

2016-02-14

Redmine AD SSO setup

Hello, world!

I was looking for a place to post my journey to setup AD SSO in a Redmine instance I manage and...
After almost 10 years, I found out I still have this blog!
So, let's go!

Objective


Our goal is basically setup the single_auth plugin with the most recently available software. This plugin mentions a mod_ntlm apache module, but I simply couldn't compile it or find a version that works.


My Redmine setup


I have a Redmine 3.1-stable checkout, with a lot of custom plugins, running on CentOS 7 and Apache 2.4. It uses mod_passenger module to serve the app.

Requirements


I don't have any idea of what the requirements really are ;) Follows the list of the softwares I'm currently using (all of them currently available on CentOS repos, rubygems or redmine repo):
CentOS 7.2.1511
Samba 4.2.3
Apache 2.4.6
Ruby 2.2.1p85
Passenger 5.0.18
Redmine 3.1-stable with single_auth plugin installed and LDAP auth already configured

SSO Setup


The idea here is to follow the default setup of the single_auth plugin, but using the mod_auth_ntlm_winbind apache module, which is maintained and currently available on CentOS.

Samba domain join

The mod_auth_ntlm_winbind module requires that samba is installed and joined the domain you want to single-sign-on. It acts just as a bridge between Apache and ntlm_auth program. Thus, the first step is to install and join samba to the domain.

yum install samba-winbind-clients realmd
realm join --verbose --client-software=winbind --user=some_join_privileged_user mydomain.com

To test, execute the following on the shell to test you are able to authenticate a user:

ntlm_auth --username=some_user
Password: *********
NT_STATUS_OK: Success (0x0)

Windind configuration

Depending on your Redmine LDAP configuration, it may expect the username without the domain prefix when looking for new users. In this case (it was mine), the easiest way is to setup winbind to return the user without the domain prefix. Just check it won't affect other systems in the same machine before changing.

vim /etc/samba/smb.conf
# make sure "winbind use default domain" is set to "yes"
systemctl restart winbind

To test, execute the follwing command to check how a user is listed by samba.

wbinfo -u | head -n 1
first_user # (there should be no "DOMAIN\" prefix)

Install the single_auth plugin


This is the last step here, which is a slightly modified version of what is said in the original plugin. Make sure the redmine side is configured as said in this plugin page.

First, install the module package and add the apache user to the group allowed to use the ntlm_auth private pipe.

yum install mod_auth_ntlm_winbind
usermod apache -a -G wbpriv 


The apache site /etc/httpd/conf.d/yoursite.conf should be set up as following:

  <Location "/login">
    AuthName "MySite NTLM Authentication"
    NTLMAuth on
    NegotiateAuth on
    NTLMAuthHelper "/usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp"
    NegotiateAuthHelper "/usr/bin/ntlm_auth --helper-protocol=gss-spnego"
    NTLMBasicAuthoritative on
    AuthType NTLM
    AuthType Negotiate
    Require valid-user
  </Location>

After that, restart Apache.

service httpd restart

That's it!

All the requests to any Redmine resource should be redirected to /login, which will require a valid user on apache side before handing forward the request to Redmine. When Redmine receives the request, the single_auth plugin will read the REMOTE_USER env var filled by Apache and will auto login the user by searching it on the LDAP auth source, without any user interaction. Single Sign On!

Improvements


It's working ok so far, but I'm looking for one big improvement to this setup: As the apache side requires a valid-user, all users must be on LDAP. Otherwise, Apache keeps asking for a user and password. I would like to foward the request to Redmine even if the login on apache side fails.

My first obvious try was to remove the "valid-user" require, but it failed because Apache detects there is no requirement and doesn't even try to reach the NTLM auth mechanism, making the SSO stop working.

If you have any idea, fell free to post!

[]'s

2007-07-29

Fedora 6, MP3 e DVD's

Olá, raros leitores!

Resolvi postar aqui minha jornada pra fazer o Fedora 6 tocar mp3!

Bem, vamos lá...
Primeiramente você deve se certificar de que seu linux está reproduzindo sons. Todos nós sabemos que isso já é bem difícil, foi a maior parte da minha luta, porque hardware de notebook não costuma funcionar de primeira. Mas acho que não vale a pena falar sobre isso aqui, pois é muito específico de cada hardware.

Mesmo depois de resolvido o problema de hardware de som, temos que resolver outro problema: O Fedora, por ser uma distribuição que não coloca em seu respositório software proprietário, não disponibiliza os codecs mp3, mpeg, wma, entre outros.
Portanto, as aplicações multimídia não reproduzem estes tipos de arquivo. Para que elas passem a repoduzir, teremos que instalar alguns pacotes adicionais.

Mas não é tão simples assim. Estes pacotes não estão no repositório padrão do fedora, utilizado pelo 'yum', como dito anteriormente. Devemos adicionar um novo respositório, o Livna.
Este repositório contém pacotes que não podem estar nos repositórios oficiais do fedora, por vários motivos, dentre eles o mencionado acima. Além de pacotes multimídia, podem ser encontrados também pacotes de drivers proprietários, etc..
Adicionar o livna é muito simples, veja instruções em:

http://rpm.livna.org/rlowiki/

Depois que o Livna estiver devidamente configurado, devemos instalar os pacotes.
Lembrando que pra instalar um pacote usando o 'yum', basta digitar:
yum install NOME_DO_PACOTE
e para remover digitamos:
yum remove NOME_DO_PACOTE
ambos como root, claro.
Vou citar aqui os mais importantes, que foram os que eu instalei:

// suporte a mp3 no xine
xine
xine-lib
xine-lib-extras-nonfree

Isso adiciona suporte a mp3 a maioria dos players que utilizam o xine como back-end (parte responsável pelo processamento e decodificação dos arquivos). O totem se tornou o player padrão do gnome (eu acho). Ele tem integração com o firefox. O back-end que é utilizado com a versão padrão é o 'gstreamer'. Não sei como fazer o 'gstreamer' suportar arquivos mp3. Se quiser que o totem utilize o xine como back-end, tendo suporte a mp3, remova o totem que já existe e instale os sequintes pacotes:

// pacotes do totem-xine. eles conflitam com o totem-gstreamer (default)
totem-xine
totem-xine-mozplugin

Para suporte a DVDpelo totem pode ser instalado o seguinte pacote:

// reproduzindo DVD's
libdvdcss

Eu gosto do mais do gnome, mas pra mim não existe player melhor que o amaroK.
Por isso também instalei um pacote para suporte mp3 nele:

// Suporte a mp3 no amaroK
amarok-extras-nonfree

Com isso, todos os mp3 e dvds que tentei reproduzir funcionaram corretamente.
Espero ter ajudado alguém com isso, mas se não foi suficiente, abaixo vão alguns sites de onde tirei informações:

Site 1: Esse foi o mais útil de todos, o único com informações para o amaroK
http://carlesm.com/fedora-core-6-installation-notes/multimedia/

Site 2: Fedora Helper
http://www.brandonhutchinson.com/Fedora_Helper.html
este site disponibiliza um script que instala varios programas de repositórios alternativos, dentre eles codecs, suporte a dvd, o browser opera, java etc...
muito bom! Talvez apenas esse script resolva seu problema.. o meu, não sei porque, não instalou tudo necessário.....

Site 3: Google
http://www.google.com
Bem, esse não podia faltar, neh? É a fonte de todos os outros e onde perdi este belo domingo de chuva e céu nublado pesquisando sobre isso!! Bem, se vc está lendo isso provavelmente está usando bastante o google.

Até o próximo post!
Qualquer dúvida podem mandar e-mails que eu respondo.
Coloquem fedora mp3 no título.

[]'s

2007-07-24

Teste do Blog

Caros Visitantes,

Estou escrevendo este texto apenas para testar a ferramenta de edição do Blog.
Por enquanto ainda não tenho nada pra escrever aqui, mas espero ter algum dia.

Obrigado pela inútil atenção!