Unix

Unix

Streaming obrazu przez kamere internetowa na stronie WWW pod systemem Ubuntu oraz integracja z Joomla CMS

Witam serdecznie. Chciałbym przedstawić sposób konfiguracji kamery internetowej pod systemem Ubuntu tak, by obraz był streamowany na stronie WWW.
Następnie zaprezentuje sposób, jak zintegrować skrypt Java Applet by działał pod CMS Joomla.
System Ubuntu zainstalowany jest na komputerze netbook Samsung N130 w którym zamontowana jest kamera SCB-0340N

Dokładna wersja systemu to:

Ubuntu 11.10 (Linux 3.0.0-12-generic #20-Ubuntu SMP Fri Oct 7 14:50:42 UTC 2011 i686 i686 i386 GNU/Linux)
1. Instalacja Serwera WWW

Do instalacji serwera WWW użyjemy komendy tasksel. Jeśli nie mamy zainstalowanej tej aplikacji, otrzymamy komunikat:

“The program ‘tasksel’ is currently not installed. You can install it by typing:
sudo apt-get install tasksel”

Aby dokonać instalacji postąpimy zgodnie z instrukcją, którą otrzymaliśmy w powyższym komunikacie. Wpisujemy komende :

sudo apt-get install tasksel

Gdy pojawi sie komunikat: “After this operation, 385 kB of additional disk space will be used. Do you want to continue [Y/n]?” – Naciskamy klawisz Y (Yes).
Oznacza to, ze aplikacja tasksel będzie zajmować 385kB na naszym twardym dysku. (dane aktualne na dzień 2012.03.29). Po paru sekundach instalacja powinna dobiec końca.
Następnym krokiem będzie uruchomienie aplikacji tasksel i zainstalowanie LAMP (skrót od Linux , Apache HTTP Server, MySQL oraz PHP). Wpisujemy komendę:

tasksel

Zaznaczamy [*] LAMP server, wciskamy klawisz TAB i klikamy na opcje <Ok> (zatwierdzając klawiszem Enter).
Ustawiamy hasło dla serwera MySQL i zatwierdzamy przyciskiem <Ok>.
W ten oto sposób zainstalowaliśmy serwer WWW ( z obsługą PHP oraz MySQL). Dla pewności czy nasz serwer WWW działa prawidłowo, wpisujemy “lynx localhost“,
lub w przeglądarce na systemie gdzie zainstalowaliśmy LAMP wpisujemy “http://localhost”.

2. Instalacja Webcam-Server

Zacznijmy od zapisania aplikacji webcam-server ze strony “http://packages.ubuntu.com/hardy/i386/webcam-server/download”;
Wybieramy jeden z adresow zamieszczonych (copy link) na powyższej stronie i wpisujemy wget “adres”, czyli przykładowo:

“wget http://mirror.pnl.gov/ubuntu//pool/universe/w/webcam-server/webcam-server_0.50-2_i386.deb”;

Następnie instalujemy plik z rozszerzeniem .DEB, za pomoca komendy:

dpkg -i webcam-server_0.50-2_i386.deb
(jeśli plik ma długą nazwę, wystarczy ze wpiszemy parę pierwszych liter i wciśniemy klawisz TAB, a system automatycznie dokończy nazwę pliku)

Po zainstalowaniu aplikacji, zgrywamy skrypt webcam-server z “http://wacior.pl/download/webcam-server”; do katalogu /etc/init.d/, wpisując komendy:

wget http://wacior.pl/download/webcam-server
mv webcam-server /etc/init.d
chmod +x webcam-server
update-rc.d webcam-server defaults

Dzięki temu skrypt będzie automatycznie uruchamiany przy każdym starcie systemu. Sprawdzamy czy skrypt nie wyrzuca żadnych błędów.

webcam-server start

Jeśli pojawi się komunikat:
“Starting webcam-server: Started!”
Oznacza to, ze wszystko prawidlowo zostalo skonfigurowane.

W przypadku pojawienia sie bledu: “ERROR: ld.so: object ‘/usr/lib/i386-linux-gnu/libv4l/v4l1compat.so’ from LD_PRELOAD cannot be preloaded: ignored,” – musimy upewnić się czy ścieżka do pliku v4l1compat.so jest prawidłowa. Musimy odszukać plikv4l1compat.so na naszym dysku twardym. Do tego celu użyjemy komendy:

find / | grep v411compat.so

Po chwili powinna ukazać się ścieżka z plikiem. Poprawiamy ja w skrypcie webcam-server, który umieściliśmy w katalogu /etc/init.d, używając do tego celu edytora nano:

cd /etc/init.d
nano webcam-server

Szukamy linijki z adresem do ścieżki z plikiem v411compat.so:

export LD_PRELOAD=/usr/lib/i386-linux-gnu/libv4l/v4l1compat.so

Poprawiamy ścieżkę, wpisując tą, która wyświetliła nam się po wpisaniu komendy find / | grep v411compat.so.

Tutaj tez możemy ustawić parametry naszego webcam-servera, czyli:

-g 640×480 – rozdzielczość z jaką będzie wyświetlany obraz (upewnijmy się jakie rozdzielczości są obsługiwane przez nasza kamerę internetowa)
-p = port – port na którym działa serwer Webcam
-c = adres IP naszego serwera/komputera

Zapisujemy plik naciskając:
CTRL+X
Y
ENTER
3. Konfiguracja strony HTML do wyswietlania zrodla z kamerki

Kopiujemy domyślną stronę HTML dla naszego Webcam-Servera, za pomocą komend:

cd /usr/share/doc/webcam-server/applet
cp * /var/www/

Przechodzimy do katalogu /var/www/ (komenda “cd /var/www/“) i edytujemy plik webcam.html, wpisując komendę:

nano webcam.html

Oto parametry, które możemy zmienić w naszej domyślnej stronie webcam.html:

<APPLET CODE = “WebCamApplet.class” archive=”applet.jar” WIDTH = “640” HEIGHT = “480”> – zmieniając wartości Width i Height określamy rozdzielczość wyświetlającego obrazu
<param name=URL value=”http://192.168.2.105:8888″> – adres naszego Webcam-Servera (taki jak w pliku webcam-server)
<param name=FPS value=”20″> – ilość wyświetlanych klatek na sekundę
<param name=width value=”640″> – rozdzielczość wyświetlającego obrazu (szerokość)
<param name=height value=”480″> – rozdzielczość wyświetlającego obrazu (wysokość)
</APPLET>
4. Intergracja z CMS Joomla:

-Aby dodać kamerę z naszego Webcam-Servera do Joomla, należy najpierw rozpocząć od dodania modułu, który będzie za to odpowiedzialny.

->Extensions -> Module Manager
->New
->Title -> Webcam Camera
->Wrapper (dzięki temu, możemy wskazać plik HTML z zewnętrznego źródła do okna z naszym modułem)
->z prawej strony w Module Parameters -> URL wpisujemy adres ze stroną webcam.html, którą umieściliśmy na naszym serwerze
(należy liczyć się z tym, że musimy w tym celu posiadać zewnętrzny adres IP, jeśli chcemy, żeby ludzie spoza sieci lokalnej mogli zobaczyć naszą witrynę z kamerą). W naszym przypadku będzie to adres http://213.146.53.164/webcam2.html
->Position -> wpisujemy webcam (wykorzystamy pozycje webcam do tego by umieścić moduł w artykule)

Jeśli chcemy, by nasza kamera była umieszczona w artykule na głównej stronie, należy utworzyć artykuł (Add New Article), a następnie wpisać:

{#loadposition webcam#}  – wpisujac ta linijke do naszego artykulu, pamietajmy by usunac # , oraz zeby nie bylo spacji miedzy “{” i “l” , oraz “m” i “}”

Komenda ta załaduje nam moduł, który został umieszczony w pozycji (position) webcam do naszego artykułu. Zaznaczamy FrontPage -> Yes.

Uruchamiamy nasza stronę. Kamera powinna być umieszczona na samym środku naszej strony. Jeśli rozmiar jest za duży, to możemy dostosować rozmiar w pliku webcam.html oraz w parametrach naszego świeżo dodanego modułu (Width & Height).

Posted by jackvonthor in Unix

Serwer UNIX na systemie iOS ( iPad / iPhone / iPod Touch )

Serwer na urządzieniach Apple z systemem iOS:
Autor: Jacek Wącior
Date: 2013.06.01
0. Sprawdzenie ustawień sieciowych i zapisanie adresu IP urządzenia:
-> Ustawienia -> Ogólne -> Sieć -> Wi-Fi -> wybieramy nazwę sieci i klikamy na niebieskie kółko z prawej strony
	W zakładce DCHP mamy napisany Adres IP, który został przydzielony. Jeśli chcemy żeby nasz adres IP był zawsze taki sam to:
a) możemy go dopisać do tablicy DHCPd na routerze, przypisując adres MAC urządzenia do określonego IP
b) ustawić statycznie adres IP, maskę podsieci , router, DNS itp. Wartości te możemy sprawdzić, sprawdzając w zakładce DHCP jakie zostały przydzielone i wpisując je ręcznie, lub sprawdzając za pomocą komputera który jest w tej samej sieci, za pomocą komendy ipconfig /all
	Dynamiczny wewnętrzny adres IP może być dokuczliwy, ponieważ jeśli chcemy wyprowadzić adres IP jako zewnętrzny poprzez ustawienie DMZ, to wtedy musimy ciągle aktualizować nowy wewnętrzny adres IP na routerze. 
1. Cydia
	Przy pierwszym uruchomieniu aplikacji Cydia, upewnijmy się, że zaznaczona została opcja „Who are you?” -  DEVELOPER. Jeśli niechcący zaznaczyliśmy nieprawidłowo inną opcje, możemy to zmienić wybierając opcje Manage → Settings → Developer. Zatwierdzamy nasz wybór przyciskiem DONE.
	Aktualizujemy wszystkie źródła i aplikacje na najnowsze. Po uruchomieniu Cydii czekamy, aż na górze skończy się "Downloading Packages" i wybieramy Complete Upgrade,a następnie Reboot Device. Jeśli występują jakiekolwiek problemy, upewnijmy się, że data i czas zostały ustawione prawidłowo → Ustawienia → Ogólne → Data i Czas – koniecznie muszą być wpisane aktaulne wartości.
	Pierwszą aplikacją, którą zainstalujemy będzie Insomnia PRO – bez tej aplikacji nasze połączenie z urządzeniem będzie przerywane gdy tylko urządzenie przejdzie w tryb uśpienia. Wybieray opcje Search i w górnym pasku wpisujemy „Insomnia PRO”. Aplikacja przez 7 dni jest darmowa, także po upłynięciu okresu próbnego warto wykupić ja na czas nielimitowany.
Po zainstalowaniu aplikacji, wybieramy na głównym ekranie „Insomnia Pro” i klikamy ON.
2. Veency - Zdalne sterowanie pulpitem
	Cała magia sterowania urządzeniem na systemie iOS odbędzie się, dzięki wykorzystaniu protokołu VNC (port 5900). W Cydii wybieramy Search → „Veency” → Install → Confirm. 
	Konfiguracja Veency nie jest skomplikowana. W głownym menu wybieramy 
Ustawienia → Veency. Zaznaczamy opcje Enabled oraz Show Cursor. W polu Password wpisujemy hasło, które będzie wymagane przy zdalnym połaczeniu z urządzeniem. Jeśli nie wpiszemy żadnego hasła, wtedy przy każdym polączeniu z urządzeniem będziemy musieli ręcznie zaakceptować przychodzące połączenie.
*) Utworzenie połączenia przez kabel USB (bez użycia Wifi)
Tworzymy tunnel USB, w przypadku Windows najlepsza aplikacja dzieki ktorej mozna utworzyć tunnel to iFunBox (w opcjach Advanced -> USB TUNNEL).
W przypadku MacOS jeszcze nie znalazłem dobrego rozwiązania.
a) Zdalne połączenie z systemu Windows
Użyjemy aplikacji TightVNC (  http://www.tightvnc.com/ ). 
-Po uruchomieniu aplikacji, w TightVNC Server wpisujemy adres IP urządzenia (podpunkt 0) (w przypadku połaczenia przez usb tunnel - 127.0.0.1 : 5900)
-Zatwierdzamy nasz adres IP wybierając opcje Connect. Wpisujemy hasło i naciskamy OK.
b) Zdalne połączenie z systemu MacOS
Użyjemy aplikacji „Chicken of the VNC” (  http://sourceforge.net/projects/cotvnc )
(w przypadku połaczenia przez usb tunnel - 127.0.0.1 : 5900)
-W polu host wpisujemy adres IP urządzenia (podpunkt 0) 
-Password – wpisujemy ustawione przez nas hasło. Zatwierdzamy klikając Connect
c) Zdalne połączenie z innego urządzenia na systemie iOS
Użyjemy aplikacji „VNC Viewer” - dostępna na AppStore.
-Wybieramy znaczek [+] w prawym górnym rogu i wpisujemy:
	Address – wpisujemy adres IP naszego urządzenia (podpunkt 0)
	Name – wpisujemy nazwe pod która chcemy zapisać nasze połączenie
-Zatwierdzamy przyciskiem Save, a następnie wybieramy Connect.
-Odznaczamy „Warn me every time” i wybieramy opcje Connect. 
-Wpisujemy hasło i zaznaczamy „Remember Password” i klikamy Done. 
-Wybieramy Mouse Control i ponownie zatwierdzamy Done.
3. SSH (Secure Shell)
Aby zainstalować obsługę protokołu SSH (port 22), uruchamiamy Cydia, a następnie  
-> Search -> OpenSSH. W prawym górnym rogu wybieramy Install i Confirm.
Po zakończeniu instalacji, możemy połączyc się zdalnie z naszym urządzeniem.
A) Aplikacja SSH dla systemu Windows
Użyjemy aplikacji: Putty
-Hostname: wpisujemy adres IP (podpunkt 0)
-Port:22
-Saved sessions: wpisujemy nazwe wg naszego uznania
-Klikamy Save
-Klikamy Open
Czekamy około 60 sekund, gdy pojawi się komunikat Putty Security Alert, naciskamy Tak/Yes. Gdy juz połączymy się z urządzeniem wpisujemy:
Login as: root
Password: alpine
B) Aplikacja SSH dla systemu MacOS:
Użyjemy aplikacji zintegorwanej z systemem -  Terminal oraz SSH.
-Uruchamiamy Terminal, a następnie wpisujemy „ssh adres_IP -l root” 
 (-l to parametr od login). Czekamy około 60 sekund.
-Zatwierdzamy – YES, a następnie wpisujemy password: alpine
C) Aplikacja SSH dla urządzenia na systemie iOS:
Z Cydii zrzucamy aplikacje o nazwie: MobileTerminal (->Search->MobileTerminal)
-Uruchamiamy aplikacje Mobile Terminal i wpisujemy komendę: „ssh adres_IP -l root”.
-Zatwierdzamy – YES, a następnie wpisujemy password: alpine (domyślne haslo jest zawsze alpine)
Po połączeniu z urządzeniem, koniecznie musimy zmienić hasło na użytkownika root (administratora), tak aby nikt niepowołany nie mógł zmieniać ustawień naszego serwera.
Wpisujemy komendę „passwd root”, a następnie dwa razy wpisujemy hasło.
4. Zainstalowanie podstawowych komend systemu UNIX: ( serwer apt.saurik.com)
Aby zainstalować podstawowe komendy systemu UNIX, uruchamiamy Cydie, wybieramy zakadke Manage-> Sources->  Cydia/Teleshporeo ( http://apt.saurik.com/) 
Wyszukujemy poniższe Packages, dzięki którym poszerzymy nasz system o dodatkowe komendy i aplikacje.
-apt 0.7 strict – między innymi uzyskami komende apt-get
-adv-cmds - komendy: finger, fingerd, last, lscfs, md, ps
-basic-cmds - msg, uudecode, uuencode, write
-diskdev-cmds - mount, quota, fsck , fastyp, fdisk, tunerfs (podstawowe komendy odnoszace sie do czynnosci zwiazanych z plikami i zarzadzaniem dyskiem ) - domyślnie zainstalowane
-file-cmds - komendy : chflags, compress, ipcrm, ipcs , pax
-network-cmds - podstawowe komendy sieciowe: arp, ifconfig, netstat, route, traceroute
-shell-cmds - killall , mktemp, renice, time , which - domyślnie zainstalowane
-system-cmds - iostat, login , passwd, sync , sysctl - domyślnie zainstalowane
-inetutils - ftp, inetd, ping, rlogin, telnet, tftp
-screen - aplikacja dzieki ktorej mozemy uruchomić apikacje/proces w tle 
-Midnight Commander  Norton Commander pod UNIX
-ed - standardowy edytor tekstu
-top – sprawdzanie wolnej pamięci oraz uruchomionych procesów
-whois - sprawdzanie domen
-unrar – umożliwia rozpakowywanie plików typu RAR
-unzip – umożliwia rozpakowywanie plików typu ZIP
-wget – pobieranie plików z adresu FTP/WWW
5. Poruszanie sie po katalogach:
- cd , ls 
- mkdir - tworzenie katalogow , rmdir - usuwanie katalogow
- Uruchamiamy aplikacje Midnight Commander – komenda „mc” - znacznie nam ułatwi przemieszczanie się między katalogami i wyswietlanie plików
6. FTP - Instalacja serwera FTP – vsFTP,  oraz instalacja klienta FTP - ncftp 
A) Serwer FTP – vsFTP
Instalujemy – vsftpd (Manage-> Sources->  Cydia/Teleshporeo ( http://apt.saurik.com/) )
-Plik konfiguracyjny znajduje się w /etc/vsftpd.conf. 
-Tworzymy katalog : „mkdir /usr/share/empty”
-Wpisujemy komende „vsftpd /etc/vsftpd.conf , lub restartujemy urzadzenie, by automatycznie uruchomić serwer FTP.
-Jeśli chcemy zmienić wiadomość powitalna to w pliku vsftpd.conf ustawiamy:
	ftpd_banner=
-Jeśli chcemy mieć oddzielnych uzytkowników FTP, to musimy przejść do działu z dodawaniem kont shellowych.
-Dokladne parametry i ustawienia plikow vsftpd.conf znajdziemy w poniższym adresie:
http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-ftp-vsftpd-conf.html
-Zauwazylem ze jeśli mamy oddzielnie dodane konta shellowe i ustawimy inną powłokę niż /bin/sh to nie chce przyjąć wtedy użytkownika
B) Klient FTP – aplikacja ftp oraz ncftp
-Standardowa aplikacja w systemie UNIX – ftp
-Komenda „ftp adres_IP”
-Dodatkowa aplikacja, instalujemy - ncftp 
-Komenda: „ncftp adres_ftp -u uzytkownik -p haslo7. Instalacja serwera WWW - lighhtpd , oraz instalacja przegladarek tekstowych WWW – links oraz lynx
A) Serwer WWW – aplikacja lighttpd
-Instalujemy - lighttpd 
-Instalujemy - lighttpd settings
Po zainstalowaniu , przechodzimy do „Ustawienia -> lighttpd” i upewniamy się, że jest ustawione Enabled.
-Instalujemy dodatkowe pakiety:
apt-get install php
apt-get install ruby
apt-get install python
apt-get install perl
apt-get install sqlite3  
-Tworzymy dwa katalogi:
mkdir /var/www
mkdir /var/log/lighttpd
-Tworzymy plik /etc/lighttpd.conf z zawartoscia: 
server.document-root = "/var/www/"
server.port = 80 # Default
server.modules = ( "mod_cgi","mod_indexfile","mod_dirlisting", "mod_accesslog" )
server.tag = "iPhone lighttpd"
server.name = "localhost"
server.pid-file = "/var/run/lighttpd.pid"
dir-listing.activate = "enable"
dir-listing.external-css = "/.dirlist/iphonedirlist.css"
accesslog.filename = "/var/log/lighttpd/access.log"
server.errorlog = "/var/log/lighttpd/error.log"
index-file.names = ( "index.html", "index.htm", "index.php", "index.py", "index.pl", "index.cgi", "default.html", "/.dirlist/dir-generator.py" )
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi", ".cgi", ".py" )
cgi.assign = ( ".pl" => "/usr/bin/perl", ".py" => "/usr/bin/python", ".rb" => "/usr/bin/ruby", ".cgi" => "", ".sh" => "", ".php" => "/usr/bin/php-cgi" )
mimetype.assign = (
".pdf" => "application/pdf",
".sig" => "application/pgp-signature",
".spl" => "application/futuresplash",
".class" => "application/octet-stream",
".ps" => "application/postscript",
".torrent" => "application/x-bittorrent",
".dvi" => "application/x-dvi",
".gz" => "application/x-gzip",
".pac" => "application/x-ns-proxy-autoconfig",
".swf" => "application/x-shockwave-flash",
".tar.gz" => "application/x-tgz",
".tgz" => "application/x-tgz",
".tar" => "application/x-tar",
".zip" => "application/zip",
".mp3" => "audio/mpeg",
".m3u" => "audio/x-mpegurl",
".wma" => "audio/x-ms-wma",
".wax" => "audio/x-ms-wax",
".ogg" => "application/ogg",
".wav" => "audio/x-wav",
".gif" => "image/gif",
".jpg" => "image/jpeg",
".jpeg" => "image/jpeg",
".png" => "image/png",
".xbm" => "image/x-xbitmap",
".xpm" => "image/x-xpixmap",
".xwd" => "image/x-xwindowdump",
".css" => "text/css",
".html" => "text/html",
".htm" => "text/html",
".js" => "text/javascript",
".asc" => "text/plain",
".c" => "text/plain",
".cpp" => "text/plain",
".log" => "text/plain",
".conf" => "text/plain",
".text" => "text/plain",
".txt" => "text/plain",
".dtd" => "text/xml",
".xml" => "text/xml",
".mpeg" => "video/mpeg",
".mpg" => "video/mpeg",
".mov" => "video/quicktime",
".qt" => "video/quicktime",
".avi" => "video/x-msvideo",
".asf" => "video/x-ms-asf",
".asx" => "video/x-ms-asf",
".wmv" => "video/x-ms-wmv",
".bz2" => "application/x-bzip",
".tbz" => "application/x-bzip-compressed-tar",
".tar.bz2" => "application/x-bzip-compressed-tar",
# default mime type
"" => "application/octet-stream",
)
-Uruchamiamy:  lighttpd -f /etc/lighttpd.conf
-By zatrzymac serwer, wpisujemy komende „killall lighttpd”, albo odznaczamy w ustawienia ->lighttpd
-Po restarcie urządzenia, serwer WWW sam się odpali.
-Głowna strona przechowywana jest w /var/www (chyba ze zmienimy to w ustawieniach lighttpd.conf - server.document-root = "/var/www/" ) 
-Jeśli chcemy zmienić podpis na dole na stronie, to zmieniamy wpis server.tag
B) Instalacja tekstowych przeglądarek WWW:
-Instalujemy - links
-Instalujemy - lynx
8. Serwer IRC – ngircd,  oraz klient IRC - BitchX oraz irssi
A) Serwer IRC - ngircd (nextGeneration IRC deamon)
-Instalujemy ngircd
-Po zainstalowaniu plik konfiguracyjny jest w /etc/ngircd.conf
-Ustawiamy Listen = 0.0.0.0
-Tworzymy katalog /var/run/ngircd/
B) Klient IRC – BitchX oraz irssi
-instalujemy BitchX
-Komenda: BitchX username ircserver
-instalujemy irssi 
-Komenda: irssi username ircserver
9. Aplikacje sieciowe - sniffery, skanery portow itp
-nmap – skanowanie otwartych portów
-My Traceroute - traceroute
-sniffit - przechwytuje pakiety
10. Dodawanie kont shellowych
-Zaczynamy od zrobienia kopii zapasowej poniższych plików:
/private/etc/group
/private/etc/passwd
/private/etc/master.passwd
-Wpisujemy komende:
fullname="RoyalBlue" "Your Full Name"
user="RoyalBlue" "username"
group=$user
uid=1000
gid=1000
home=/var/$user
echo "$group:*:$gid:$user" >> /private/etc/group
echo "$user::$uid:$gid::0:0:$fullname:$home:/bin/bash" >> /private/etc/master.passwd
passwd $user
mkdir $homea
chown $user:$group $home
11. Konfiguracja routera zeby urzadzenie bylo na zewnetrznym IP
DMZ - The DMZ(Demilitarized Zone) option provides you with an option to set a single computer on your network outside of the router. If you have a computer that cannot run Internet applications successfully from behind the router, then you can place the computer into the DMZ for unrestricted Internet access. 
ADVANCED->Firewall & DMZ → Enable DMZ Host  , DMZ IP Address : wpisujemy adres IP z urzadzenia iOS
Posted by jackvonthor in Unix