Generowanie certyfikatu Jabber / XMPP

# openssl genrsa -out /etc/jabber/jabber.key 1024
# openssl req -new -x509 -days 365 -key /etc/jabber/jabber.key -out /etc/jabber/jabber.crt
# cat /etc/jabber/jabber.crt >> /etc/jabber/jabber.key
# mv /etc/jabber/jabber.key /etc/jabber/jabber.pem
# rm -f /etc/jabber/jabber.crt

Własny serwer jabbera - jak to poważnie brzmi. 
Postaram się w maksymalnym skrócie opisać (krok po kroku), jak zainstalować i skonfigurować 
eJabbera na PLD i dodać do niego parę transportów.

Zaczynamy.

1. Najważniejsza rzecz to oczywiście zainstalować serwer jabbera.


# poldek -ivh ejabberd

2. Konfiguracja (od razu weźmiemy pod uwagę, że chcemy mieć trzy transporty – GG, IRC i MSN).

Edytujemy naszym ulubionym edytorem: plik /etc/jabber/ejabberd.cfg
{acl, admin, {user, "admin"}}.
% user z prawami administratora, dowolny login
{acl, local, {user_regexp, ""}}.
{access, pubsub_createnode, [{allow, all}]}.
{access, configure, [{allow, admin}]}.
{access, register, [{deny, all}]}.
{welcome_message,
 {"Welcome!",
  "Welcome to Jabber.",
  "For information about Jabber visit http://jabber.org"}}.
{registration_watchers, ["user@localhost"]}.
% user, który będzie powiadamiany o rejestracjach do serwera jabbera
{access, announce, [{allow, admin}]}.
{access, c2s, [{deny, blocked},
               {allow, all}]}.
{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}.
{access, c2s_shaper, [{none, admin},
                      {normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, muc_admin, [{allow, admin}]}.
{access, muc, [{allow, all}]}.
{access, local, [{allow, local}]}.
{auth_method, internal}.
{hosts, ["localhost", "jabber.nasza_domena.pl"]}.
% nasze hosty, które będziemy używać (zewnętrzne domeny muszą istnieć)
{max_user_sessions, 10}.
{language, "en"}.
{listen,
 [{5222, ejabberd_c2s,     [{access, c2s}, {shaper, c2s_shaper},
                            {max_stanza_size, 65536},
                            starttls, {certfile, "/etc/jabber/jabber.pem"}
                            ]},
  {5223, ejabberd_c2s,     [{access, c2s},
                            {max_stanza_size, 65536},
                            tls, {certfile, "/etc/jabber/jabber.pem"}]},
  {5269, ejabberd_s2s_in,  [{shaper, s2s_shaper},
                            {max_stanza_size, 131072}
                           ]},
  {5348, ejabberd_service, [{access, all},
                            {host, "msn.jabber.nasza_domena.pl",
                             [{password, "hasło z /etc/jabber/secret"}]}]},
  {5349, ejabberd_service, [{access, all},
                            {host, "gg.jabber.nasza_domena.pl",
                             [{password, "hasło z /etc/jabber/secret"}]}]},
  {5347, ejabberd_service, [{access, all},
                            {hosts, ["ircnet.jabber.nasza_domena.pl", "freenode.jabber.nasza_domena.pl"],
                             [{password, "hasło z /etc/jabber/secret"}]}]},
  {5280, ejabberd_http,    [http_poll, web_admin]}
 ]}.
{s2s_use_starttls, true}.
{s2s_certfile, "/etc/jabber/jabber.pem"}.
{domain_certfile, "jabber.nasza_domena.pl", "/etc/jabber/jabber.pem"}.
{outgoing_s2s_port, 5269}.
{modules,
 [
  {mod_register,   [{access, register}]},
  {mod_roster,     []},
  {mod_privacy,    []},
  {mod_adhoc,      []},
  {mod_configure2, []},
  {mod_disco,      []},
  {mod_stats,      []},
  {mod_vcard,      []},
  {mod_offline,    []},
  {mod_echo,       [{host, "echo.nasza_domena.pl"}]},
  {mod_private,    []},
  {mod_irc,        []},
  {mod_muc,        [{access, muc},
                    {access_create, muc},
                    {access_admin, muc_admin}]},
  {mod_pubsub,     [{access_createnode, pubsub_createnode}]},
  {mod_time,       []},
  {mod_last,       []},
  {mod_version,    []}
 ]}.

3. Wygenerowanie certyfikatów dla połączeń SSL/TLS.

# openssl genrsa -out /etc/jabber/jabber.key 1024
# openssl req -new -x509 -days 365 -key /etc/jabber/jabber.key -out /etc/jabber/jabber.crt
# cat /etc/jabber/jabber.crt >> /etc/jabber/jabber.key
# mv /etc/jabber/jabber.key /etc/jabber/jabber.pem
# rm -f /etc/jabber/jabber.crt

4. Transport Gadu-Gadu


# poldek -ivh jggtrans
Ustawiamy najważniejsze opcje w: /etc/jabber/jggtrans.xml
<service jid="gg.jabber.nasza_domena.pl"/>
<connect id="gglinker">
    <ip>127.0.0.1</ip>
    <port>5349</port>
    <secret>hasło z /etc/jabber/secret</secret>
</connect>
<spool>/var/spool/jabber/gg.jabber.atwa.us/</spool>
<admin>admin@jabber.nasz_domena.pl</admin>
<acl>
        <allow who="admin@jabber.nasza_domena.pl" what="iq/query?xmlns=http://jabber.org/protocol/stats"/>
        <deny who="*" what="iq/query?xmlns=http://jabber.org/protocol/stats"/>
        <allow who="*"/>
        <deny what="iq/query?xmlns=jabber:x:register"/>
        <allow what="presence"/>
        <deny/>
 </acl>
Następnie tworzymy katalog, w którym będą trzymane dane użytkowników korzystających z transportu:
# mkdir -p /var/spool/jabber/gg.jabber.nasza_domena.pl
# chown -R root:jabber /var/spool/jabber/
# chmod -R g+w /var/spool/jabber/

5. Transport MSN.

Instalujemy najważniejsze elementy:

# poldek -ivh python-Twisted python-Twisted-ssl python-TwistedWords python-TwistedWeb python-TwistedXish python-Imaging python-pyOpenSSL
Teraz trzeba należy ręcznie ściągnąć transport stąd. Wypakowujemy go i ustawiamy config: W src/config.py:
jid = "msn.jabber.nasza_domena.pl"
host = "127.0.0.1"
compjid = ""
spooldir = "/var/lib/ejabberd/"
discoName = "MSN Transport"

mainServer = "127.0.0.1"
website = ""
port = "5348"
secret = "hasło z /etc/jabber/secret"
Natomiast w config.xml (jeśli go nie ma, tworzymy z template'u) ustawiamy te same opcje w formacie XML.
Musimy utworzyć jeszcze 2 symlinki, bo PyMSNt nie wyszuka zainstalowanych rozszerzeń pythona:
# ln -s /usr/share/python2.4/site-packages/twisted/words /usr/lib[64]/python2.4/site-packages/twisted/words
#  ln -s /usr/share/python2.4/site-packages/twisted/xish /usr/lib[64]/python2.4/site-packages/twisted/xish
Uruchamiamy PyMSNt:

# ./PyMSNt &amp;

6. Uruchamiamy eJabberda i tworzymy konto administratora.

# service ejabberd start
# ejabberdctl ejabberd@localhost register admin jabber.nasza_domena.pl hasło_do_konta_admina
# service jggtrans start
I to praktycznie cała filozofia. 
Pod adresem http://server:5280/admin/ znajdziemy ładnego web admina, dzięki któremu możemy monitorować nasz serwer,
dodawać i usuwać użytkowników, zmieniać im hasła itd. Sam użytkownik ma oczywiście możliwość zmiany hasła przez klienta jabbera.

Czy ja czasem nie zapomniałem o transporcie IRC? Nie, eJabberd ma wbudowany transport IRCa i dlatego wystarczyło tylko odblokować
odpowiedni port i usługę w ejabberd.cfg, a transport od razu działa. Gdybym o czymś zapomniał albo coś jednak nie działało, to "bijcie!"
i piszcie do mnie lub tutaj w komentarzach.

Jak zamknąć proces na porcie na serwerze Linux

Aby zamknąć (zabić) proces na porcie na serwerze Linux należy wydać polecenie:


fuser -n tcp -k 21
<span style="font-family: Lucida Sans Unicode,Lucida Grande,sans-serif; font-size: 14pt;">
*(gdzie 21 to numer portu)
Innym sposobem jest uruchomienie aplikacji htop i po wybraniu procesu strzałkami naciśnięcie
 'k' w celu zabicia procesu/aplikacji. W tym przypadku powinniśmy znać nazwę aplikacji.</span>

Po wybraniu procesu i przyciśnięciu ‚k’ (kill) możemy usunąć/zamknąć proces na różne sposoby,
wymienione po lewej stronie.


 


 

Brak log-ów /var/log/syslog

Jeżeli masz problem z logami

apt-get install --reinstall rsyslogd
apt-get install inetutils-syslogd

Pamiętaj o uprawnieniach pliku:

sudo chown syslog:adm /var/log
sudo chmod 0775 /var/log

Prawdopodobnych błędów można szukać w pliku:

/etc/rsyslog.conf

i plikach

/etc/rsyslog.d/50-default.conf

można uruchomić również usługę w trybie debugowania:

/etc/init.d/rsyslog stop
rsyslogd -n -i /var/run/syslogs.pid

Oprogramowanie przyckisków Canon Lide 100 na Linuxie

Aby debugować scanbd używamy polecenia:

sudo scanbd -d7 -f -c /etc/scanbd/scanbd.conf

Output:

 scanbd: foreground
scanbd: config-file: /etc/scanbd/scanbd.conf
scanbd: reading config file /etc/scanbd/scanbd.conf
scanbd: debug on: level: 7
scanbd: dropping privs to uid saned
scanbd: dropping privs to gid scanner
scanbd: group scanner has member:
scanbd: saned
scanbd: drop privileges to gid: 109
scanbd: Running as effective gid 109
scanbd: drop privileges to uid: 108
scanbd: Running as effective uid 108
scanbd: dbus_init
scanbd: dbus match type='signal',interface='org.freedesktop.Hal.Manager'
scanbd: SANE_CONFIG_DIR not set
scanbd: sane version 1.0
scanbd: Scanning for local-only devices
^Xscanbd: start_sane_threads
scanbd: start dbus thread
scanbd: Not Primary Owner (2)
scanbd: timeout: 500 ms
scanbd: Iteration on dbus call

Przykładowa konfiguracja:

global {
       
        debug   = true
        debug-level = 2
        user    = saned
        group   = scanner
        saned   = "/usr/sbin/saned"

       
        timeout = 500
        pidfile = "/var/run/scanbd.pid"
       
        environment {
                device = "SCANBD_DEVICE"
                action = "SCANBD_ACTION"
        }
        function function_knob {
                filter = "^message.*"
                desc   = "The value of the function knob / wheel / selector"
                env    = "SCANBD_FUNCTION"
        }
        function function_mode {
                filter = "^mode.*"
                desc   = "Color mode"
                env    = "SCANBD_FUNCTION_MODE"
        }
 
        action scan {
                filter = "^scan.*"
                numerical-trigger {
                        from-value = 1
                        to-value   = 0
                }
                desc   = "Scan to file"
                script = "/etc/scanbd/copy.sh"
        }
        action email {
                filter = "^email$"
                string-trigger {
                        from-value  = ""        
                        to-value    = "^email.*"
                }
                desc   = "Scan to email"
                script = "/etc/scanbd/mail.sh"
        }
        action copy {
                filter = "^copy$"
                string-trigger {
                        from-value  = ""
                        to-value    = "^copy.*"
                }
                desc   = "Copy to printer"
                script = "/etc/scanbd/copy.sh"
        }
        action preview {
                filter = "^preview$"
                numerical-trigger {
                        from-value = 1
                        to-value   = 0
                }
                desc   = "Preview"
                script = "/etc/scanbd/scan.sh"
        }
        action globaltest {
                filter = "^message.*"
                desc   = "Test (print all env vars)"
                script = "/etc/scanbd/pdf.sh"
        }
        action globaltest {
                filter = "^pdf.*"
                desc   = "Test (print all env vars)"
                script = "/etc/scanbd/pdf.sh"
        }
}

include(scanner.d/canon.conf)

Zwróć uwagę na ostatnie linijki, które powinne zaierać Twój skaner.

W plikach mamy nazwy script np:
/etc/scanbd/pdf.sh

przykładowy plik:

#!/bin/sh
TMPFILE="/tmp/image.tiff"
LOCKFILE="/tmp/copy.lock"

echo "pdf tworzę" >> /var/log/syslog

/usr/bin/scanimage --mode lineart -B10M --resolution 600 | pnmtops -imageheight 11 -imagewidth 8.5 | ps2pdf - /home/szymon/skaner/output.pdf | /usr/bin/mail -s "PDF" -a /home/szymon/skaner/output.pdf szymon@artmetic.pl
 
pamiętajmy o nadaniu uprawnień plikom:
 
chmod +x /etc/scanbd/pdf.sh

Linux błąd filtru i pytania o hasło drukarki – naprawa.

Dziś po upgradzie do Ubuntu 16.04 moja drukarka odmówiła posłuszeństwa, a co gorsza w panelu z drukarkami jestem ciągle atakowany o podanie hasła więc postanowiłem po wielu nieudanych próbach podawania prawidłowego hasła jednak odpalić ją z roota. Jednak to nie był koniec kłopotów bo wyświetlał się ciągle komunikat o brakującym filtrze do drukarki. A więc rozwiązałem to tak:

sudo system-config-printer

następnie usunąłem i dodałem. Drukarka wystartowała ale od razu przeszedłem do kolejki wydruku bo trochę zaległych dokumentów tam wpadło 🙂