<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.itcollege.ee/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ssaveli</id>
	<title>ICO wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.itcollege.ee/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ssaveli"/>
	<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php/Special:Contributions/Ssaveli"/>
	<updated>2026-05-09T10:19:24Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=TLS_termineerimine_nginx_abil&amp;diff=59750</id>
		<title>TLS termineerimine nginx abil</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=TLS_termineerimine_nginx_abil&amp;diff=59750"/>
		<updated>2012-12-22T12:08:35Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* Nginx seadistamine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ülesehitus =&lt;br /&gt;
&lt;br /&gt;
Lahenduse mõtteks on kasutada nginx veebiserverit proxyna teenindamaks https päringuid pordi 443 pihta. Antud näite puhul ei saa suunata https päringuid otse [http://kuutorvaja.eenet.ee/wiki/Apache&#039;i_veebiserver Apache veebiserveri] pihta, kuna veebilehtede cachimiseks kasutatakse [[varnish]]it. Nginxi ülesandeks jääb võtta vastu https päringud pordi 443 poole, muuta need http päringuteks ja suunata edasi varnishi pihta.&lt;br /&gt;
&lt;br /&gt;
[[File:Nginx.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Eeldused==&lt;br /&gt;
*Antud näide on tehtud Ubuntu Server 12.04.1  peal&lt;br /&gt;
*[[Veebiserveri labor| Konfigureeritud ja töötav apache 2 veebiserver.]]&lt;br /&gt;
*[[varnish| Konfigureeritud ja töötav varnish.]]&lt;br /&gt;
*Näites kasutatakse saidina www.mesilane.mm&lt;br /&gt;
&lt;br /&gt;
= Nginx seadistamine =&lt;br /&gt;
&lt;br /&gt;
Installeerige Nginx:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get install nginx&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Looge kausta /etc/nginx/sites-enabled/ oma saidi nimeline tekstifail ning muutke seda vastavalt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;touch /etc/nginx/sites-enabled/www.mesilane.mm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;nan0/etc/nginx/sites-enabled/www.mesilane.mm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Näide, mis kasutab saidina www.mesilane.mm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    listen 443 default_server;&lt;br /&gt;
&lt;br /&gt;
    server_name www.mesilane.mm;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    ssl on;&lt;br /&gt;
&lt;br /&gt;
    ssl_certificate /usr/local/nginx/conf/server.pem;&lt;br /&gt;
&lt;br /&gt;
    ssl_certificate_key /usr/local/nginx/conf/server.key;&lt;br /&gt;
&lt;br /&gt;
    ssl_session_cache shared:SSL:10m;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    location / {&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
       proxy_pass http://localhost:80; # varnish&lt;br /&gt;
&lt;br /&gt;
       proxy_set_header Host $host;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
       # re-write redirects to http as to https, example: /home&lt;br /&gt;
&lt;br /&gt;
       proxy_redirect http:// https://;&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Teema võetud ==&lt;br /&gt;
&lt;br /&gt;
Sander Arnus&lt;br /&gt;
&lt;br /&gt;
Sander Saveli&lt;br /&gt;
http://kuutorvaja.eenet.ee/wiki/Apache&#039;i_veebiserver&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=TLS_termineerimine_nginx_abil&amp;diff=59749</id>
		<title>TLS termineerimine nginx abil</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=TLS_termineerimine_nginx_abil&amp;diff=59749"/>
		<updated>2012-12-22T12:08:10Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* Nginx seadistamine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ülesehitus =&lt;br /&gt;
&lt;br /&gt;
Lahenduse mõtteks on kasutada nginx veebiserverit proxyna teenindamaks https päringuid pordi 443 pihta. Antud näite puhul ei saa suunata https päringuid otse [http://kuutorvaja.eenet.ee/wiki/Apache&#039;i_veebiserver Apache veebiserveri] pihta, kuna veebilehtede cachimiseks kasutatakse [[varnish]]it. Nginxi ülesandeks jääb võtta vastu https päringud pordi 443 poole, muuta need http päringuteks ja suunata edasi varnishi pihta.&lt;br /&gt;
&lt;br /&gt;
[[File:Nginx.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Eeldused==&lt;br /&gt;
*Antud näide on tehtud Ubuntu Server 12.04.1  peal&lt;br /&gt;
*[[Veebiserveri labor| Konfigureeritud ja töötav apache 2 veebiserver.]]&lt;br /&gt;
*[[varnish| Konfigureeritud ja töötav varnish.]]&lt;br /&gt;
*Näites kasutatakse saidina www.mesilane.mm&lt;br /&gt;
&lt;br /&gt;
= Nginx seadistamine =&lt;br /&gt;
&lt;br /&gt;
Installeerige Nginx:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get install nginx&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Looge kausta /etc/nginx/sites-enabled/ oma saidi nimeline tekstifail ning muutke seda vastavalt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;touch /etc/nginx/sites-enabled/www.mesilane.mm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;nan0/etc/nginx/sites-enabled/www.mesilane.mm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Näide, mis kasutab sidine www.mesilane.mm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    listen 443 default_server;&lt;br /&gt;
&lt;br /&gt;
    server_name www.mesilane.mm;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    ssl on;&lt;br /&gt;
&lt;br /&gt;
    ssl_certificate /usr/local/nginx/conf/server.pem;&lt;br /&gt;
&lt;br /&gt;
    ssl_certificate_key /usr/local/nginx/conf/server.key;&lt;br /&gt;
&lt;br /&gt;
    ssl_session_cache shared:SSL:10m;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    location / {&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
       proxy_pass http://localhost:80; # varnish&lt;br /&gt;
&lt;br /&gt;
       proxy_set_header Host $host;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
       # re-write redirects to http as to https, example: /home&lt;br /&gt;
&lt;br /&gt;
       proxy_redirect http:// https://;&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Teema võetud ==&lt;br /&gt;
&lt;br /&gt;
Sander Arnus&lt;br /&gt;
&lt;br /&gt;
Sander Saveli&lt;br /&gt;
http://kuutorvaja.eenet.ee/wiki/Apache&#039;i_veebiserver&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=TLS_termineerimine_nginx_abil&amp;diff=59748</id>
		<title>TLS termineerimine nginx abil</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=TLS_termineerimine_nginx_abil&amp;diff=59748"/>
		<updated>2012-12-22T12:02:14Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* Eeldused */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ülesehitus =&lt;br /&gt;
&lt;br /&gt;
Lahenduse mõtteks on kasutada nginx veebiserverit proxyna teenindamaks https päringuid pordi 443 pihta. Antud näite puhul ei saa suunata https päringuid otse [http://kuutorvaja.eenet.ee/wiki/Apache&#039;i_veebiserver Apache veebiserveri] pihta, kuna veebilehtede cachimiseks kasutatakse [[varnish]]it. Nginxi ülesandeks jääb võtta vastu https päringud pordi 443 poole, muuta need http päringuteks ja suunata edasi varnishi pihta.&lt;br /&gt;
&lt;br /&gt;
[[File:Nginx.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Eeldused==&lt;br /&gt;
*Antud näide on tehtud Ubuntu Server 12.04.1  peal&lt;br /&gt;
*[[Veebiserveri labor| Konfigureeritud ja töötav apache 2 veebiserver.]]&lt;br /&gt;
*[[varnish| Konfigureeritud ja töötav varnish.]]&lt;br /&gt;
*Näites kasutatakse saidina www.mesilane.mm&lt;br /&gt;
&lt;br /&gt;
= Nginx seadistamine =&lt;br /&gt;
&lt;br /&gt;
Installeerige Nginx:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get install nginx&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Teema võetud ==&lt;br /&gt;
&lt;br /&gt;
Sander Arnus&lt;br /&gt;
&lt;br /&gt;
Sander Saveli&lt;br /&gt;
http://kuutorvaja.eenet.ee/wiki/Apache&#039;i_veebiserver&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=TLS_termineerimine_nginx_abil&amp;diff=59747</id>
		<title>TLS termineerimine nginx abil</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=TLS_termineerimine_nginx_abil&amp;diff=59747"/>
		<updated>2012-12-22T12:01:57Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* Ülesehitus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ülesehitus =&lt;br /&gt;
&lt;br /&gt;
Lahenduse mõtteks on kasutada nginx veebiserverit proxyna teenindamaks https päringuid pordi 443 pihta. Antud näite puhul ei saa suunata https päringuid otse [http://kuutorvaja.eenet.ee/wiki/Apache&#039;i_veebiserver Apache veebiserveri] pihta, kuna veebilehtede cachimiseks kasutatakse [[varnish]]it. Nginxi ülesandeks jääb võtta vastu https päringud pordi 443 poole, muuta need http päringuteks ja suunata edasi varnishi pihta.&lt;br /&gt;
&lt;br /&gt;
[[File:Nginx.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Eeldused==&lt;br /&gt;
*Antud näide on tehtud Ubuntu Server 12.04.1  peal&lt;br /&gt;
*[[Veebiserveri labor| Konfigureeritud ja töötav apache 2 veebiserver.]]&lt;br /&gt;
*[[varnish| Konfigureeritud ja töötav varnish.]]&lt;br /&gt;
*Näites kasutatakse saidine www.mesilane.mm&lt;br /&gt;
&lt;br /&gt;
= Nginx seadistamine =&lt;br /&gt;
&lt;br /&gt;
Installeerige Nginx:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get install nginx&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Teema võetud ==&lt;br /&gt;
&lt;br /&gt;
Sander Arnus&lt;br /&gt;
&lt;br /&gt;
Sander Saveli&lt;br /&gt;
http://kuutorvaja.eenet.ee/wiki/Apache&#039;i_veebiserver&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=TLS_termineerimine_nginx_abil&amp;diff=59746</id>
		<title>TLS termineerimine nginx abil</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=TLS_termineerimine_nginx_abil&amp;diff=59746"/>
		<updated>2012-12-22T11:57:10Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* Eeldused */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ülesehitus =&lt;br /&gt;
&lt;br /&gt;
Lahenduse mõtteks on kasutada nginx veebiserverit proxyna teenindamaks https päringuid pordi 443 pihta. Antud näite puhul ei saa suunata https päringuid otse [http://kuutorvaja.eenet.ee/wiki/Apache&#039;i_veebiserver Apache veebiserveri] pihta, kuna veebilehtede cachimiseks kasutatakse [[varnish]]it. Nginxi ülesandeks jääb võtta vastu https päringud pordi 443 poole, muuta need http päringuteks ja suunata edasi varnishi pihta.&lt;br /&gt;
&lt;br /&gt;
[[File:Nginx.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Eeldused==&lt;br /&gt;
*Antud näide on tehtud Ubuntu Server 12.04.1  peal&lt;br /&gt;
*[[Veebiserveri labor| Konfigureeritud ja töötav apache 2 veebiserver.]]&lt;br /&gt;
*[[varnish| Konfigureeritud ja töötav varnish.]]&lt;br /&gt;
&lt;br /&gt;
== Teema võetud ==&lt;br /&gt;
&lt;br /&gt;
Sander Arnus&lt;br /&gt;
&lt;br /&gt;
Sander Saveli&lt;br /&gt;
http://kuutorvaja.eenet.ee/wiki/Apache&#039;i_veebiserver&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=TLS_termineerimine_nginx_abil&amp;diff=59745</id>
		<title>TLS termineerimine nginx abil</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=TLS_termineerimine_nginx_abil&amp;diff=59745"/>
		<updated>2012-12-22T11:56:52Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* Eeldused */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ülesehitus =&lt;br /&gt;
&lt;br /&gt;
Lahenduse mõtteks on kasutada nginx veebiserverit proxyna teenindamaks https päringuid pordi 443 pihta. Antud näite puhul ei saa suunata https päringuid otse [http://kuutorvaja.eenet.ee/wiki/Apache&#039;i_veebiserver Apache veebiserveri] pihta, kuna veebilehtede cachimiseks kasutatakse [[varnish]]it. Nginxi ülesandeks jääb võtta vastu https päringud pordi 443 poole, muuta need http päringuteks ja suunata edasi varnishi pihta.&lt;br /&gt;
&lt;br /&gt;
[[File:Nginx.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Eeldused==&lt;br /&gt;
*Antud näide on tehtud Ubuntu Server 12.04.1  peal&lt;br /&gt;
*[[Veebiserveri labor| Konfigureeritud ja töötav apache 2 veebiserver.]]&lt;br /&gt;
*[[varnish| Konfigureeritud ja töötav varnish]]&lt;br /&gt;
&lt;br /&gt;
== Teema võetud ==&lt;br /&gt;
&lt;br /&gt;
Sander Arnus&lt;br /&gt;
&lt;br /&gt;
Sander Saveli&lt;br /&gt;
http://kuutorvaja.eenet.ee/wiki/Apache&#039;i_veebiserver&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=TLS_termineerimine_nginx_abil&amp;diff=59744</id>
		<title>TLS termineerimine nginx abil</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=TLS_termineerimine_nginx_abil&amp;diff=59744"/>
		<updated>2012-12-22T11:41:07Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* Eeldused */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ülesehitus =&lt;br /&gt;
&lt;br /&gt;
Lahenduse mõtteks on kasutada nginx veebiserverit proxyna teenindamaks https päringuid pordi 443 pihta. Antud näite puhul ei saa suunata https päringuid otse [http://kuutorvaja.eenet.ee/wiki/Apache&#039;i_veebiserver Apache veebiserveri] pihta, kuna veebilehtede cachimiseks kasutatakse [[varnish]]it. Nginxi ülesandeks jääb võtta vastu https päringud pordi 443 poole, muuta need http päringuteks ja suunata edasi varnishi pihta.&lt;br /&gt;
&lt;br /&gt;
[[File:Nginx.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Eeldused==&lt;br /&gt;
[[Veebiserveri labor| Konfigureeritud ja töötav apache 2 veebiserver]]&lt;br /&gt;
&lt;br /&gt;
== Teema võetud ==&lt;br /&gt;
&lt;br /&gt;
Sander Arnus&lt;br /&gt;
&lt;br /&gt;
Sander Saveli&lt;br /&gt;
http://kuutorvaja.eenet.ee/wiki/Apache&#039;i_veebiserver&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=TLS_termineerimine_nginx_abil&amp;diff=59743</id>
		<title>TLS termineerimine nginx abil</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=TLS_termineerimine_nginx_abil&amp;diff=59743"/>
		<updated>2012-12-22T11:40:12Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* Eeldused */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ülesehitus =&lt;br /&gt;
&lt;br /&gt;
Lahenduse mõtteks on kasutada nginx veebiserverit proxyna teenindamaks https päringuid pordi 443 pihta. Antud näite puhul ei saa suunata https päringuid otse [http://kuutorvaja.eenet.ee/wiki/Apache&#039;i_veebiserver Apache veebiserveri] pihta, kuna veebilehtede cachimiseks kasutatakse [[varnish]]it. Nginxi ülesandeks jääb võtta vastu https päringud pordi 443 poole, muuta need http päringuteks ja suunata edasi varnishi pihta.&lt;br /&gt;
&lt;br /&gt;
[[File:Nginx.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Eeldused==&lt;br /&gt;
[[Konfigureeritud ja töötav apache 2 veebiserver | Veebiserveri labor]]&lt;br /&gt;
&lt;br /&gt;
== Teema võetud ==&lt;br /&gt;
&lt;br /&gt;
Sander Arnus&lt;br /&gt;
&lt;br /&gt;
Sander Saveli&lt;br /&gt;
http://kuutorvaja.eenet.ee/wiki/Apache&#039;i_veebiserver&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=TLS_termineerimine_nginx_abil&amp;diff=59742</id>
		<title>TLS termineerimine nginx abil</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=TLS_termineerimine_nginx_abil&amp;diff=59742"/>
		<updated>2012-12-22T11:36:44Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ülesehitus =&lt;br /&gt;
&lt;br /&gt;
Lahenduse mõtteks on kasutada nginx veebiserverit proxyna teenindamaks https päringuid pordi 443 pihta. Antud näite puhul ei saa suunata https päringuid otse [http://kuutorvaja.eenet.ee/wiki/Apache&#039;i_veebiserver Apache veebiserveri] pihta, kuna veebilehtede cachimiseks kasutatakse [[varnish]]it. Nginxi ülesandeks jääb võtta vastu https päringud pordi 443 poole, muuta need http päringuteks ja suunata edasi varnishi pihta.&lt;br /&gt;
&lt;br /&gt;
[[File:Nginx.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Eeldused==&lt;br /&gt;
&lt;br /&gt;
== Teema võetud ==&lt;br /&gt;
&lt;br /&gt;
Sander Arnus&lt;br /&gt;
&lt;br /&gt;
Sander Saveli&lt;br /&gt;
http://kuutorvaja.eenet.ee/wiki/Apache&#039;i_veebiserver&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=TLS_termineerimine_nginx_abil&amp;diff=59741</id>
		<title>TLS termineerimine nginx abil</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=TLS_termineerimine_nginx_abil&amp;diff=59741"/>
		<updated>2012-12-22T11:35:58Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ülesehitus =&lt;br /&gt;
&lt;br /&gt;
Lahenduse mõtteks on kasutada nginx veebiserverit proxyna teenindamaks https päringuid pordi 443 pihta. Antud näite puhul ei saa suunata https päringuid otse apache veebiserveri pihta, kuna veebilehtede cachimiseks kasutatakse [[varnish]]it. Nginxi ülesandeks jääb võtta vastu https päringud pordi 443 poole, muuta need http päringuteks ja suunata edasi varnishi pihta.&lt;br /&gt;
&lt;br /&gt;
[[File:Nginx.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Eeldused==&lt;br /&gt;
&lt;br /&gt;
== Teema võetud ==&lt;br /&gt;
&lt;br /&gt;
Sander Arnus&lt;br /&gt;
&lt;br /&gt;
Sander Saveli&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=TLS_termineerimine_nginx_abil&amp;diff=59740</id>
		<title>TLS termineerimine nginx abil</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=TLS_termineerimine_nginx_abil&amp;diff=59740"/>
		<updated>2012-12-22T11:29:02Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* Ülesehitus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ülesehitus =&lt;br /&gt;
&lt;br /&gt;
Lahenduse mõtteks on kasutada nginx veebiserverit proxyna teenindamaks https päringuid pordi 443 pihta. Antud näite puhul ei saa suunata https päringuid otse apache veebiserveri pihta, kuna veebilehtede cachimiseks kasytatkse [[varnish]]. Nginxi ülesandeks jääb võtta vastu https päringud pordi 443 poole, muuta need http päringuteks ja suunata edasi varnishi pihta.&lt;br /&gt;
&lt;br /&gt;
[[File:Nginx.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Eeldused==&lt;br /&gt;
&lt;br /&gt;
== Teema võetud ==&lt;br /&gt;
&lt;br /&gt;
Sander Arnus&lt;br /&gt;
&lt;br /&gt;
Sander Saveli&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=TLS_termineerimine_nginx_abil&amp;diff=59739</id>
		<title>TLS termineerimine nginx abil</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=TLS_termineerimine_nginx_abil&amp;diff=59739"/>
		<updated>2012-12-22T11:24:23Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ülesehitus ==&lt;br /&gt;
&lt;br /&gt;
Lahenduse mõtteks on kasutada nginx veebiserverit proxyna teenindamaks https päringuid pordi 443 pihta. Antud näite puhul ei saa suunata https päringuid otse apache veebiserveri pihta, kuna veebilehtede cachimiseks kasytatkse [[varnish]]. Nginxi ülesandeks jääb võtta vastu https päringud pordi 443 poole, muuta need http päringuteks ja suunata edasi varnishi pihta.&lt;br /&gt;
&lt;br /&gt;
[[File:Nginx.png]]&lt;br /&gt;
&lt;br /&gt;
== Teema võetud ==&lt;br /&gt;
&lt;br /&gt;
Sander Arnus&lt;br /&gt;
&lt;br /&gt;
Sander Saveli&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=TLS_termineerimine_nginx_abil&amp;diff=59738</id>
		<title>TLS termineerimine nginx abil</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=TLS_termineerimine_nginx_abil&amp;diff=59738"/>
		<updated>2012-12-22T11:24:06Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ülesehitus ==&lt;br /&gt;
&lt;br /&gt;
Lahenduse mõtteks on kasutada nginx veebiserverit proxyna teenindamaks https päringuid pordi 443 pihta. Antud näite puhul ei saa suunata https päringuid otse apache veebiserveri pihta, kuna veebilehtede cachimiseks kasytatkse [[varnish]]. Nginxi ülesandeks jääb võtta vastu https päringud pordi 443 poole, muuta need http päringuteks ja suunata edasi varnishi pihta.&lt;br /&gt;
[[File:Nginx.png]]&lt;br /&gt;
&lt;br /&gt;
== Teema võetud ==&lt;br /&gt;
&lt;br /&gt;
Sander Arnus&lt;br /&gt;
&lt;br /&gt;
Sander Saveli&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=TLS_termineerimine_nginx_abil&amp;diff=59737</id>
		<title>TLS termineerimine nginx abil</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=TLS_termineerimine_nginx_abil&amp;diff=59737"/>
		<updated>2012-12-22T11:21:05Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ülesehitus ==&lt;br /&gt;
&lt;br /&gt;
Lahenduse mõtteks on kasutada nginx veebiserverit proxyna teenindamaks https päringuid pordi 443 pihta. Antud näite puhul ei saa suunata https päringuid otse apache veebiserveri pihta, kuna veebilehtede cachimiseks kasytatkse [[varnish]]. Nginxi ülesandeks jääb siis võtta vastu https päringud pordi 443 muuta need http päringuteks ja suunata edasi varnishi pihta.&lt;br /&gt;
[[File:Nginx.png]]&lt;br /&gt;
&lt;br /&gt;
== Teema võetud ==&lt;br /&gt;
&lt;br /&gt;
Sander Arnus&lt;br /&gt;
&lt;br /&gt;
Sander Saveli&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=TLS_termineerimine_nginx_abil&amp;diff=59736</id>
		<title>TLS termineerimine nginx abil</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=TLS_termineerimine_nginx_abil&amp;diff=59736"/>
		<updated>2012-12-22T11:18:25Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* Ülesehitus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ülesehitus ==&lt;br /&gt;
&lt;br /&gt;
Lahenduse mõtteks on kasutada nginx veebiserverit proxyna teenindamaks https päringuid pordi 443 pihta. Antud näite puhul ei saa suunata https päringuid otse apache veebiserveri pihta, kuna veebilehtede cachimiseks kasytatkse varnishit. Nginxi ülesandeks jääb siis võtta vastu https päringud pordi 443 muuta need http päringuteks ja suunata edasi varnishi pihta.&lt;br /&gt;
[[File:Nginx.png]]&lt;br /&gt;
&lt;br /&gt;
== Teema võetud ==&lt;br /&gt;
&lt;br /&gt;
Sander Arnus&lt;br /&gt;
&lt;br /&gt;
Sander Saveli&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=File:Nginx.png&amp;diff=59735</id>
		<title>File:Nginx.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=File:Nginx.png&amp;diff=59735"/>
		<updated>2012-12-22T11:17:45Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=TLS_termineerimine_nginx_abil&amp;diff=59734</id>
		<title>TLS termineerimine nginx abil</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=TLS_termineerimine_nginx_abil&amp;diff=59734"/>
		<updated>2012-12-22T10:39:12Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* Ülesehitus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ülesehitus ==&lt;br /&gt;
&lt;br /&gt;
Lahenduse mõtteks on kasutada nginx veebiserverit proxyna teenindamaks https päringuid pordi 443 pihta. Antud näite puhul ei saa suunata https päringuid otse apache veebiserveri pihta, kuna veebilehtede cachimiseks kasytatkse varnishit. Nginxi ülesandeks jääb siis võtta vastu https päringud pordi 443 muuta need http päringuteks ja suunata edasi varnishi pihta.&lt;br /&gt;
&lt;br /&gt;
== Teema võetud ==&lt;br /&gt;
&lt;br /&gt;
Sander Arnus&lt;br /&gt;
&lt;br /&gt;
Sander Saveli&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=TLS_termineerimine_nginx_abil&amp;diff=59733</id>
		<title>TLS termineerimine nginx abil</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=TLS_termineerimine_nginx_abil&amp;diff=59733"/>
		<updated>2012-12-22T10:38:34Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* Teema võetud */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ülesehitus ==&lt;br /&gt;
&lt;br /&gt;
Lahenduse mõtteks on kasutada nginx veebiserverit proxyna teenindamaks https päringuid pordi 443 pihta. Antud näite puhul ei saa suunata https päringuid otse apache veebiserveri pihta, kuna veebilehtede cachimiseks kasytatkse varnishit. Nginxi ülesandeks jääb siis võtta vastu https päringud muuta need http päringuteks ja suunata edasi varnishi pihta.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Teema võetud ==&lt;br /&gt;
&lt;br /&gt;
Sander Arnus&lt;br /&gt;
&lt;br /&gt;
Sander Saveli&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Varnish&amp;diff=57235</id>
		<title>Varnish</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Varnish&amp;diff=57235"/>
		<updated>2012-11-20T13:20:25Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* Varnishi pool */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Koostajad = &lt;br /&gt;
Vajab täiendamist. Lingi http://blog.rac.me.uk/2009/11/29/linux-handy-varnish-commands/ alusel.&lt;br /&gt;
&lt;br /&gt;
Rene Sepp, Kersti Lang, Carolys Kallas&lt;br /&gt;
&lt;br /&gt;
Kevad 2012&lt;br /&gt;
&lt;br /&gt;
Viimati muudetud: 14.05.2012&lt;br /&gt;
&lt;br /&gt;
= Sissejuhatus =&lt;br /&gt;
Varnishit kasutatakse veebilehekülgede kiirendamiseks. See installeeritakse HTTP serveri ette ning tehakse vastavad muutused sisu cachimiseks. Varnish cache tavaliselt kiirendab andmete laadimiset 300-1000 kordselt sõltuvalt veebilehe ülesehitusest. Varnish cache hoiab veebilehti vahemälus kiirendades sellega javaskriptide ning piltide laadimist. Lisaks kasutatakse seda ka koormuse tasakaalustamiseks ning turvalisuse suurendamiseks.&lt;br /&gt;
&lt;br /&gt;
= Ajalugu =&lt;br /&gt;
Projekti algatas Norra suurim tabloidformaadis ajaleht Verdens Gang. Arhitekt ja juhtiv arendaja on Taani konsultant Poul-Henning Kamp (tuntud kui FreeBSDcore arendaja).  Haldus, infrastruktuuri - ja täiendavat arendust varustas algselt Norra Linux konsultatsioonifirma Linpro. Varnishi tugi, haldus ja arendus koondus hiljem eraldi haruks - Varnish Software.&lt;br /&gt;
&lt;br /&gt;
2006. aastal avaldati Varnishi versioon 1.0. Varnish 2.0 avaldati 2008 ning Varnish 3.0 2011 aastal.&lt;br /&gt;
&lt;br /&gt;
= Arhitektuur =&lt;br /&gt;
Varnishi salvestab andmed virtuaalmällu ja jätab otsustada, mis salvestatakse mällu ja mida suunatakse ketta operatsioonisüsteemi. See aitab vältida olukorda, kus operatsioonisüsteem hakkab andmeid suunama vahemällu samal ajal kui nad paigutatakse rakenduse poolt kettale.&lt;br /&gt;
&lt;br /&gt;
Lisaks on Varnishi tugevalt &amp;quot;keermestatud&amp;quot;, iga kliendi ühendust käsitletakse kui eraldi &amp;quot;keeret&amp;quot;. Kui seadistatud aktiivsete &amp;quot;keerete&amp;quot; arv on täidetud, paigutatakse sisenevad ühendused ülevoolu järjekorda. Kui kui see järjekord jõuab teatud piirini, hakkab süsteem sissetulevaid ühendusi tagasi lükkama.&lt;br /&gt;
&lt;br /&gt;
Peamine seadistamise mehhanism on VCL (Varnishi Configuration Language).Enamus kasutajapoliitika otsuseid jäetakse VCL koodi, mis muudab Varnishi palju rohkem seadistatav ja kohanemisvõimelisemaks kui enamik teisi HTTP kiirendeid. Kui VLC script on laetud, tõlgitakse see &amp;quot;C&amp;quot; keelde, kompileeritakse, et jagada objektid süsteemi poolt kompilaatorisse ja seotakse otse kiirendiga.&lt;br /&gt;
&lt;br /&gt;
Arvu run-time parameetrid kontrollivad näiteks maksimaalset ja minimaalset aktiivsete keerete arvu, nende erinevaid süsteemipause jne. Käsurea juhtimise liides võimaldab neid parameetreid muuta, uusi VCL skripte kompileerida, laadida ja aktiveerida kiirendile taaskäivitust tegemata.&lt;br /&gt;
&lt;br /&gt;
Selleks, et vähendada süsteemi päringute arvu kiirelt miinimumini, on logi-andmed salvestatud mällu ning logi-andmete filtreerimine, vorminine ning kirjutamine aktiivsele kettale kettale.&lt;br /&gt;
&lt;br /&gt;
= Eeldused =&lt;br /&gt;
Antud lahendus on testitud Ubuntu Server 10.10 peal, kuid võib töötada ka teiste Ubuntu versioonidega ning muude Linuxi distributsioonidega.&lt;br /&gt;
&lt;br /&gt;
Eelduseks on töötav veebileht, näiteks wordpressi leht. Kui seda tehtud pole, siis seda kirjeldab &lt;br /&gt;
WordPress turvamise labor. https://wiki.itcollege.ee/index.php/WordPress_turvamine&lt;br /&gt;
&lt;br /&gt;
= Varnishi paigaldamine turvalisuse suurendamiseks =&lt;br /&gt;
Varnish peatab mittetäielikel http päringutel jõudmast Apache veebiserverini. &lt;br /&gt;
Põhineb &amp;quot;Putting Varnish In Front Of Apache On Ubuntu/Debian&amp;quot; artiklil, mis asub siin http://www.howtoforge.com/putting-avarnish-in-front-of-apache-on-ubuntu-debian &lt;br /&gt;
&lt;br /&gt;
==Kontrollime kas on installitud kõige uuem varnishi versioon.==&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get install curl&lt;br /&gt;
sudo curl http://repo.varnish-cache.org/debian/GPG-key.txt | apt-key add -&lt;br /&gt;
sudo echo &amp;quot;deb http://repo.varnish-cache.org/debian/ $(lsb_release -s -c) varnish-2.1&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Apache konfiguratsiooni muutmine==&lt;br /&gt;
Muudame varnishi konfiguratsiooni faili, et varnish kuulaks defaultina port 80.&lt;br /&gt;
&amp;lt;pre&amp;gt;nano /etc/default/varnish&amp;lt;/pre&amp;gt;&lt;br /&gt;
Muuda &amp;quot;DAEMON_OPTS=&amp;quot;-a *:6081 \&amp;quot; selliseks&lt;br /&gt;
&amp;lt;pre&amp;gt;DAEMON_OPTS=&amp;quot;-a *:80 \&amp;lt;/pre&amp;gt; &lt;br /&gt;
ctrl-O ja muudame nime millekski muuks, nt mysite.vcl&lt;br /&gt;
&lt;br /&gt;
Kopeerime /etc/varnish/default.vcl&lt;br /&gt;
&amp;lt;pre&amp;gt;cp /etc/varnish/default.vcl /etc/varnish/mysite.vcl&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Täiendame /etc/varnish/mysite.vcl faili.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## Redirect requests to Apache, running on port 8000 on localhost&lt;br /&gt;
backend apache {&lt;br /&gt;
        .host = &amp;quot;127.0.0.1&amp;quot;;&lt;br /&gt;
        .port = &amp;quot;8000&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
## Fetch&lt;br /&gt;
sub vcl_fetch {&lt;br /&gt;
		## Remove the X-Forwarded-For header if it exists.&lt;br /&gt;
        remove req.http.X-Forwarded-For;&lt;br /&gt;
		&lt;br /&gt;
		## insert the client IP address as X-Forwarded-For. This is the normal IP address of the user.&lt;br /&gt;
        set    req.http.X-Forwarded-For = req.http.rlnclientipaddr;&lt;br /&gt;
		## Added security, the &amp;quot;w00tw00t&amp;quot; attacks are pretty annoying so lets block it before it reaches our webserver&lt;br /&gt;
        if (req.url ~ &amp;quot;^/w00tw00t&amp;quot;) {&lt;br /&gt;
                error 403 &amp;quot;Not permitted&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
		## Deliver the content&lt;br /&gt;
        return(deliver);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
## Deliver&lt;br /&gt;
sub vcl_deliver {&lt;br /&gt;
		## We&#039;ll be hiding some headers added by Varnish. We want to make sure people are not seeing we&#039;re using Varnish.&lt;br /&gt;
              ## Since we&#039;re not caching (yet), why bother telling people we use it?&lt;br /&gt;
        remove resp.http.X-Varnish;&lt;br /&gt;
        remove resp.http.Via;&lt;br /&gt;
        remove resp.http.Age;&lt;br /&gt;
		&lt;br /&gt;
		## We&#039;d like to hide the X-Powered-By headers. Nobody has to know we can run PHP and have version xyz of it.&lt;br /&gt;
        remove resp.http.X-Powered-By;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Varnishi konfiguratsiooni muutmine==&lt;br /&gt;
Apache2 tuleb kuulama panna localhosti.&lt;br /&gt;
&amp;lt;pre&amp;gt;nano /etc/apache2/ports.conf&amp;lt;/pre&amp;gt; &lt;br /&gt;
Muuda &lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
NameVirtualHost *:80&lt;br /&gt;
Listen 80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
selliseks &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NameVirtualHost *:8000&lt;br /&gt;
Listen 192.168.56.101:8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
192.168.56.101 asemel kasuta oma IP.&lt;br /&gt;
&lt;br /&gt;
Paigaldame apachele lisamooduli, et kuvataks kliendi õige ip aadress.&lt;br /&gt;
&amp;lt;pre&amp;gt;apt-get install libapache2-mod-rpaf&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Deemonite restart ==&lt;br /&gt;
Kõigepealt tuleb apachele restart teha&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/apache2 restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kontrollime IP porti&lt;br /&gt;
&amp;lt;pre&amp;gt;netstat -lp | grep apache2 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tulemus peab olema taoline:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tcp        0      0 localhost:8000          *:*                     LISTEN      4586/apache2 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Teeme restarti Varnishile&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/varnish restart &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kontrollime uuesti&lt;br /&gt;
&amp;lt;pre&amp;gt;netstat -lp | grep varnish &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tulemus peab olema taoline:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tcp        0      0 *:www                   *:*                     LISTEN      4498/varnishd&lt;br /&gt;
tcp6       0      0 [::]:www                [::]:*                  LISTEN      4498/varnishd &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nüüd on varnish paigaldatud apache2 ette. (Wordpress) sait peab nüüd töötama. Kui apache peatada kuvatakse varnish error lehekülg.&lt;br /&gt;
&lt;br /&gt;
= Logimine =&lt;br /&gt;
== Access.log ==&lt;br /&gt;
Veebilehe külastamisi saab jälgida access.logist:&lt;br /&gt;
&amp;lt;pre&amp;gt;nano /var/log/varnish/access.log&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Juhend, et Apache logides näidataks kliendi IP aadressi, mitte Varnishi serveri enda =&lt;br /&gt;
==Varnishi pool==&lt;br /&gt;
Esimese asjana tuleks muuta Varnishi conf fail&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;nano /etc/varnish/mysite.vcl&amp;lt;/pre&amp;gt;&lt;br /&gt;
ja lisada sinna&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sub vcl_pipe {&lt;br /&gt;
set bereq.http.connection = &amp;quot;close&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
if (req.http.X-Forwarded-For) {&lt;br /&gt;
set bereq.http.X-Forwarded-For = req.http.X-Forwarded-For;&lt;br /&gt;
} else {&lt;br /&gt;
set bereq.http.X-Forwarded-For = regsub(client.ip, &amp;quot;:.*&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub vcl_pass {&lt;br /&gt;
set bereq.http.connection = &amp;quot;close&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if (req.http.X-Forwarded-For) {&lt;br /&gt;
set bereq.http.X-Forwarded-For = req.http.X-Forwarded-For;&lt;br /&gt;
} else {&lt;br /&gt;
set bereq.http.X-Forwarded-For = regsub(client.ip, &amp;quot;:.*&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Taaskäivita Varnish&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
service varnish restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Apache pool (ei TÖÖTA)== &lt;br /&gt;
Lisada vajalikud moodulid Apache jaoks&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt-get update &amp;amp;&amp;amp; apt-get install libapache2-mod-rpaf &amp;amp;&amp;amp; a2enmod rpaf &amp;amp;&amp;amp; apache2ctl graceful&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Avada Apache conf fail&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;nano /etc/apache2/apache2.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ja lisada sinna see&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;IfModule mod_rpaf.c&amp;gt;&lt;br /&gt;
RPAFenable On&lt;br /&gt;
RPAFsethostname On&lt;br /&gt;
RPAFproxy_ips 127.0.0.1 xxx.xxx.xxx.xxx&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Lisa Varnishi serveri IP xxx.xxx.xxx.xxx asemele&lt;br /&gt;
&lt;br /&gt;
Apachele restart&lt;br /&gt;
&amp;lt;pre&amp;gt;service apache2 restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Tulemuse kontroll==&lt;br /&gt;
Ühenda kliendiga veebiserveri külge ja vaata apache access.log faili, mis ip logitakse&lt;br /&gt;
&amp;lt;pre&amp;gt;less /var/log/apache2/access.log&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Juhend, Security.VCL paigaldamine =&lt;br /&gt;
Security.vcl on Web Application tulemüür, mis on rakendatud vcl(Varnish Control Language) keeles&lt;br /&gt;
&lt;br /&gt;
Sarnaneb mod_security-le, aga on palju kiirem.&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project#tab=Home&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;wget https://github.com/comotion/security.vcl/tarball/master -O - | tar xz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; apt-get install make&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;cd comotion-security.vcl-616f269/vcl/&lt;br /&gt;
sudo make&lt;br /&gt;
cd ..&lt;br /&gt;
sudo ln -s $PWD/vcl/ /etc/varnish/security&amp;lt;/pre&amp;gt;&lt;br /&gt;
Lisa Varnishi .vcl conf faili järgnev rida Backend Apache ridade alla&lt;br /&gt;
&amp;lt;pre&amp;gt; include &amp;quot;/etc/varnish/security/main.vcl&amp;quot;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Välja peaks nägema nii&lt;br /&gt;
&amp;lt;pre&amp;gt; backend apache {&lt;br /&gt;
        .host = &amp;quot;&amp;lt;sinu serveri ip&amp;gt;&amp;quot;;&lt;br /&gt;
        .port = &amp;quot;8080&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
include &amp;quot;/etc/varnish/security/main.vcl&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;service varnish restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tulemuse kontroll ==&lt;br /&gt;
&lt;br /&gt;
Proovi nüüd minna enda veebiserveri külge aadressiga:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://&amp;lt;sinu serveri ip&amp;gt;/javascript:&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kui kõik toimib tuleb vastuseks:&lt;br /&gt;
&amp;lt;pre&amp;gt;Error 403 Naughty, not nice!&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Kasutatud materjal ==&lt;br /&gt;
1. About Varnish - https://www.varnish-cache.org/about&lt;br /&gt;
&lt;br /&gt;
2. Putting Varnish In Front Of Apache On Ubuntu/Debian - http://www.howtoforge.com/putting-varnish-in-front-of-apache-on-ubuntu-debian&lt;br /&gt;
&lt;br /&gt;
3. Configuring varnish and apache to pass the original client ip http://theyusedtocallitablog.net/2011/07/configuring-varnish-and-apache-to-pass-the-original-client-ip-specifically-with-wordpress-comments-in-mind/&lt;br /&gt;
&lt;br /&gt;
4. https://github.com/comotion/security.vcl/blob/master/README&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Varnish&amp;diff=57234</id>
		<title>Varnish</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Varnish&amp;diff=57234"/>
		<updated>2012-11-20T13:19:38Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* Apache pool */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Koostajad = &lt;br /&gt;
Vajab täiendamist. Lingi http://blog.rac.me.uk/2009/11/29/linux-handy-varnish-commands/ alusel.&lt;br /&gt;
&lt;br /&gt;
Rene Sepp, Kersti Lang, Carolys Kallas&lt;br /&gt;
&lt;br /&gt;
Kevad 2012&lt;br /&gt;
&lt;br /&gt;
Viimati muudetud: 14.05.2012&lt;br /&gt;
&lt;br /&gt;
= Sissejuhatus =&lt;br /&gt;
Varnishit kasutatakse veebilehekülgede kiirendamiseks. See installeeritakse HTTP serveri ette ning tehakse vastavad muutused sisu cachimiseks. Varnish cache tavaliselt kiirendab andmete laadimiset 300-1000 kordselt sõltuvalt veebilehe ülesehitusest. Varnish cache hoiab veebilehti vahemälus kiirendades sellega javaskriptide ning piltide laadimist. Lisaks kasutatakse seda ka koormuse tasakaalustamiseks ning turvalisuse suurendamiseks.&lt;br /&gt;
&lt;br /&gt;
= Ajalugu =&lt;br /&gt;
Projekti algatas Norra suurim tabloidformaadis ajaleht Verdens Gang. Arhitekt ja juhtiv arendaja on Taani konsultant Poul-Henning Kamp (tuntud kui FreeBSDcore arendaja).  Haldus, infrastruktuuri - ja täiendavat arendust varustas algselt Norra Linux konsultatsioonifirma Linpro. Varnishi tugi, haldus ja arendus koondus hiljem eraldi haruks - Varnish Software.&lt;br /&gt;
&lt;br /&gt;
2006. aastal avaldati Varnishi versioon 1.0. Varnish 2.0 avaldati 2008 ning Varnish 3.0 2011 aastal.&lt;br /&gt;
&lt;br /&gt;
= Arhitektuur =&lt;br /&gt;
Varnishi salvestab andmed virtuaalmällu ja jätab otsustada, mis salvestatakse mällu ja mida suunatakse ketta operatsioonisüsteemi. See aitab vältida olukorda, kus operatsioonisüsteem hakkab andmeid suunama vahemällu samal ajal kui nad paigutatakse rakenduse poolt kettale.&lt;br /&gt;
&lt;br /&gt;
Lisaks on Varnishi tugevalt &amp;quot;keermestatud&amp;quot;, iga kliendi ühendust käsitletakse kui eraldi &amp;quot;keeret&amp;quot;. Kui seadistatud aktiivsete &amp;quot;keerete&amp;quot; arv on täidetud, paigutatakse sisenevad ühendused ülevoolu järjekorda. Kui kui see järjekord jõuab teatud piirini, hakkab süsteem sissetulevaid ühendusi tagasi lükkama.&lt;br /&gt;
&lt;br /&gt;
Peamine seadistamise mehhanism on VCL (Varnishi Configuration Language).Enamus kasutajapoliitika otsuseid jäetakse VCL koodi, mis muudab Varnishi palju rohkem seadistatav ja kohanemisvõimelisemaks kui enamik teisi HTTP kiirendeid. Kui VLC script on laetud, tõlgitakse see &amp;quot;C&amp;quot; keelde, kompileeritakse, et jagada objektid süsteemi poolt kompilaatorisse ja seotakse otse kiirendiga.&lt;br /&gt;
&lt;br /&gt;
Arvu run-time parameetrid kontrollivad näiteks maksimaalset ja minimaalset aktiivsete keerete arvu, nende erinevaid süsteemipause jne. Käsurea juhtimise liides võimaldab neid parameetreid muuta, uusi VCL skripte kompileerida, laadida ja aktiveerida kiirendile taaskäivitust tegemata.&lt;br /&gt;
&lt;br /&gt;
Selleks, et vähendada süsteemi päringute arvu kiirelt miinimumini, on logi-andmed salvestatud mällu ning logi-andmete filtreerimine, vorminine ning kirjutamine aktiivsele kettale kettale.&lt;br /&gt;
&lt;br /&gt;
= Eeldused =&lt;br /&gt;
Antud lahendus on testitud Ubuntu Server 10.10 peal, kuid võib töötada ka teiste Ubuntu versioonidega ning muude Linuxi distributsioonidega.&lt;br /&gt;
&lt;br /&gt;
Eelduseks on töötav veebileht, näiteks wordpressi leht. Kui seda tehtud pole, siis seda kirjeldab &lt;br /&gt;
WordPress turvamise labor. https://wiki.itcollege.ee/index.php/WordPress_turvamine&lt;br /&gt;
&lt;br /&gt;
= Varnishi paigaldamine turvalisuse suurendamiseks =&lt;br /&gt;
Varnish peatab mittetäielikel http päringutel jõudmast Apache veebiserverini. &lt;br /&gt;
Põhineb &amp;quot;Putting Varnish In Front Of Apache On Ubuntu/Debian&amp;quot; artiklil, mis asub siin http://www.howtoforge.com/putting-avarnish-in-front-of-apache-on-ubuntu-debian &lt;br /&gt;
&lt;br /&gt;
==Kontrollime kas on installitud kõige uuem varnishi versioon.==&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get install curl&lt;br /&gt;
sudo curl http://repo.varnish-cache.org/debian/GPG-key.txt | apt-key add -&lt;br /&gt;
sudo echo &amp;quot;deb http://repo.varnish-cache.org/debian/ $(lsb_release -s -c) varnish-2.1&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Apache konfiguratsiooni muutmine==&lt;br /&gt;
Muudame varnishi konfiguratsiooni faili, et varnish kuulaks defaultina port 80.&lt;br /&gt;
&amp;lt;pre&amp;gt;nano /etc/default/varnish&amp;lt;/pre&amp;gt;&lt;br /&gt;
Muuda &amp;quot;DAEMON_OPTS=&amp;quot;-a *:6081 \&amp;quot; selliseks&lt;br /&gt;
&amp;lt;pre&amp;gt;DAEMON_OPTS=&amp;quot;-a *:80 \&amp;lt;/pre&amp;gt; &lt;br /&gt;
ctrl-O ja muudame nime millekski muuks, nt mysite.vcl&lt;br /&gt;
&lt;br /&gt;
Kopeerime /etc/varnish/default.vcl&lt;br /&gt;
&amp;lt;pre&amp;gt;cp /etc/varnish/default.vcl /etc/varnish/mysite.vcl&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Täiendame /etc/varnish/mysite.vcl faili.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## Redirect requests to Apache, running on port 8000 on localhost&lt;br /&gt;
backend apache {&lt;br /&gt;
        .host = &amp;quot;127.0.0.1&amp;quot;;&lt;br /&gt;
        .port = &amp;quot;8000&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
## Fetch&lt;br /&gt;
sub vcl_fetch {&lt;br /&gt;
		## Remove the X-Forwarded-For header if it exists.&lt;br /&gt;
        remove req.http.X-Forwarded-For;&lt;br /&gt;
		&lt;br /&gt;
		## insert the client IP address as X-Forwarded-For. This is the normal IP address of the user.&lt;br /&gt;
        set    req.http.X-Forwarded-For = req.http.rlnclientipaddr;&lt;br /&gt;
		## Added security, the &amp;quot;w00tw00t&amp;quot; attacks are pretty annoying so lets block it before it reaches our webserver&lt;br /&gt;
        if (req.url ~ &amp;quot;^/w00tw00t&amp;quot;) {&lt;br /&gt;
                error 403 &amp;quot;Not permitted&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
		## Deliver the content&lt;br /&gt;
        return(deliver);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
## Deliver&lt;br /&gt;
sub vcl_deliver {&lt;br /&gt;
		## We&#039;ll be hiding some headers added by Varnish. We want to make sure people are not seeing we&#039;re using Varnish.&lt;br /&gt;
              ## Since we&#039;re not caching (yet), why bother telling people we use it?&lt;br /&gt;
        remove resp.http.X-Varnish;&lt;br /&gt;
        remove resp.http.Via;&lt;br /&gt;
        remove resp.http.Age;&lt;br /&gt;
		&lt;br /&gt;
		## We&#039;d like to hide the X-Powered-By headers. Nobody has to know we can run PHP and have version xyz of it.&lt;br /&gt;
        remove resp.http.X-Powered-By;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Varnishi konfiguratsiooni muutmine==&lt;br /&gt;
Apache2 tuleb kuulama panna localhosti.&lt;br /&gt;
&amp;lt;pre&amp;gt;nano /etc/apache2/ports.conf&amp;lt;/pre&amp;gt; &lt;br /&gt;
Muuda &lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
NameVirtualHost *:80&lt;br /&gt;
Listen 80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
selliseks &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NameVirtualHost *:8000&lt;br /&gt;
Listen 192.168.56.101:8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
192.168.56.101 asemel kasuta oma IP.&lt;br /&gt;
&lt;br /&gt;
Paigaldame apachele lisamooduli, et kuvataks kliendi õige ip aadress.&lt;br /&gt;
&amp;lt;pre&amp;gt;apt-get install libapache2-mod-rpaf&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Deemonite restart ==&lt;br /&gt;
Kõigepealt tuleb apachele restart teha&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/apache2 restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kontrollime IP porti&lt;br /&gt;
&amp;lt;pre&amp;gt;netstat -lp | grep apache2 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tulemus peab olema taoline:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tcp        0      0 localhost:8000          *:*                     LISTEN      4586/apache2 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Teeme restarti Varnishile&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/varnish restart &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kontrollime uuesti&lt;br /&gt;
&amp;lt;pre&amp;gt;netstat -lp | grep varnish &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tulemus peab olema taoline:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tcp        0      0 *:www                   *:*                     LISTEN      4498/varnishd&lt;br /&gt;
tcp6       0      0 [::]:www                [::]:*                  LISTEN      4498/varnishd &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nüüd on varnish paigaldatud apache2 ette. (Wordpress) sait peab nüüd töötama. Kui apache peatada kuvatakse varnish error lehekülg.&lt;br /&gt;
&lt;br /&gt;
= Logimine =&lt;br /&gt;
== Access.log ==&lt;br /&gt;
Veebilehe külastamisi saab jälgida access.logist:&lt;br /&gt;
&amp;lt;pre&amp;gt;nano /var/log/varnish/access.log&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Juhend, et Apache logides näidataks kliendi IP aadressi, mitte Varnishi serveri enda =&lt;br /&gt;
==Varnishi pool==&lt;br /&gt;
Esimese asjana tuleks muuta Varnishi conf fail&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;nano /etc/varnish/mysite.vcl&amp;lt;/pre&amp;gt;&lt;br /&gt;
ja lisada sinna&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sub vcl_pipe {&lt;br /&gt;
set bereq.http.connection = &amp;quot;close&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
if (req.http.X-Forwarded-For) {&lt;br /&gt;
set bereq.http.X-Forwarded-For = req.http.X-Forwarded-For;&lt;br /&gt;
} else {&lt;br /&gt;
set bereq.http.X-Forwarded-For = regsub(client.ip, &amp;quot;:.*&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub vcl_pass {&lt;br /&gt;
set bereq.http.connection = &amp;quot;close&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if (req.http.X-Forwarded-For) {&lt;br /&gt;
set bereq.http.X-Forwarded-For = req.http.X-Forwarded-For;&lt;br /&gt;
} else {&lt;br /&gt;
set bereq.http.X-Forwarded-For = regsub(client.ip, &amp;quot;:.*&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Taaskäivita Varnish&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
service varnish restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Apache pool== (ei TÖÖTA)&lt;br /&gt;
Lisada vajalikud moodulid Apache jaoks&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt-get update &amp;amp;&amp;amp; apt-get install libapache2-mod-rpaf &amp;amp;&amp;amp; a2enmod rpaf &amp;amp;&amp;amp; apache2ctl graceful&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Avada Apache conf fail&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;nano /etc/apache2/apache2.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ja lisada sinna see&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;IfModule mod_rpaf.c&amp;gt;&lt;br /&gt;
RPAFenable On&lt;br /&gt;
RPAFsethostname On&lt;br /&gt;
RPAFproxy_ips 127.0.0.1 xxx.xxx.xxx.xxx&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Lisa Varnishi serveri IP xxx.xxx.xxx.xxx asemele&lt;br /&gt;
&lt;br /&gt;
Apachele restart&lt;br /&gt;
&amp;lt;pre&amp;gt;service apache2 restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Tulemuse kontroll==&lt;br /&gt;
Ühenda kliendiga veebiserveri külge ja vaata apache access.log faili, mis ip logitakse&lt;br /&gt;
&amp;lt;pre&amp;gt;less /var/log/apache2/access.log&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Juhend, Security.VCL paigaldamine =&lt;br /&gt;
Security.vcl on Web Application tulemüür, mis on rakendatud vcl(Varnish Control Language) keeles&lt;br /&gt;
&lt;br /&gt;
Sarnaneb mod_security-le, aga on palju kiirem.&lt;br /&gt;
&lt;br /&gt;
https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project#tab=Home&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;wget https://github.com/comotion/security.vcl/tarball/master -O - | tar xz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; apt-get install make&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;cd comotion-security.vcl-616f269/vcl/&lt;br /&gt;
sudo make&lt;br /&gt;
cd ..&lt;br /&gt;
sudo ln -s $PWD/vcl/ /etc/varnish/security&amp;lt;/pre&amp;gt;&lt;br /&gt;
Lisa Varnishi .vcl conf faili järgnev rida Backend Apache ridade alla&lt;br /&gt;
&amp;lt;pre&amp;gt; include &amp;quot;/etc/varnish/security/main.vcl&amp;quot;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Välja peaks nägema nii&lt;br /&gt;
&amp;lt;pre&amp;gt; backend apache {&lt;br /&gt;
        .host = &amp;quot;&amp;lt;sinu serveri ip&amp;gt;&amp;quot;;&lt;br /&gt;
        .port = &amp;quot;8080&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
include &amp;quot;/etc/varnish/security/main.vcl&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;service varnish restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tulemuse kontroll ==&lt;br /&gt;
&lt;br /&gt;
Proovi nüüd minna enda veebiserveri külge aadressiga:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://&amp;lt;sinu serveri ip&amp;gt;/javascript:&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kui kõik toimib tuleb vastuseks:&lt;br /&gt;
&amp;lt;pre&amp;gt;Error 403 Naughty, not nice!&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Kasutatud materjal ==&lt;br /&gt;
1. About Varnish - https://www.varnish-cache.org/about&lt;br /&gt;
&lt;br /&gt;
2. Putting Varnish In Front Of Apache On Ubuntu/Debian - http://www.howtoforge.com/putting-varnish-in-front-of-apache-on-ubuntu-debian&lt;br /&gt;
&lt;br /&gt;
3. Configuring varnish and apache to pass the original client ip http://theyusedtocallitablog.net/2011/07/configuring-varnish-and-apache-to-pass-the-original-client-ip-specifically-with-wordpress-comments-in-mind/&lt;br /&gt;
&lt;br /&gt;
4. https://github.com/comotion/security.vcl/blob/master/README&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=PowerShell:_Microsoft_SQLi_baasi_kirjutamise_skript&amp;diff=47280</id>
		<title>PowerShell: Microsoft SQLi baasi kirjutamise skript</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=PowerShell:_Microsoft_SQLi_baasi_kirjutamise_skript&amp;diff=47280"/>
		<updated>2012-04-04T19:07:45Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;Source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;#&lt;br /&gt;
	&lt;br /&gt;
	.Synopsis&lt;br /&gt;
	Kirjutab arvutinime, loogiliste k6vaketaste arvu, nende suuruse, vaba ruumi ja kirje tegemise aja andmebaasi,&lt;br /&gt;
	.DESCRIPTION&lt;br /&gt;
        Skripti toimimiseks on vaja Microsoft SQL server. Andmbeaasi külge autentimiseks kasutatakse Windows Authenticationit&lt;br /&gt;
	V6imalik on anda andmebaasi serveri parameetrid (server nimi, baasi nimi ja tabeli nimi)&lt;br /&gt;
	Tabelis endas peavad olema väljas Masin, Ketas, Suurus, vaba ja  Aeg.&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	.EXAMPLE&lt;br /&gt;
	C:\PS&amp;gt;.\skript.ps1 -Server SQLEXPRESS -Baas kettad -Table test&lt;br /&gt;
	&lt;br /&gt;
	.NOTES&lt;br /&gt;
	Autor: Sander Saveli &lt;br /&gt;
	Versioon: 1.0 &lt;br /&gt;
	Muutmise kuup2ev: 02.04.2012&lt;br /&gt;
	&lt;br /&gt;
	.LINK&lt;br /&gt;
        https://wiki.itcollege.ee/index.php/PowerShell:_Microsoft_SQLi_baasi_kirjutamise_skript&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
#&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Param(	[String]$Server = &amp;quot;juhan-PC\SQLEXPRESS&amp;quot;,&lt;br /&gt;
		[String]$Baas = &amp;quot;mootor&amp;quot;,&lt;br /&gt;
		[String]$Tabel = &amp;quot;disk&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Create SqlConnection object, define connection string, and open connection&lt;br /&gt;
$con = New-Object System.Data.SqlClient.SqlConnection&lt;br /&gt;
$con.ConnectionString = &amp;quot;Server=$Server;Database=$Baas;Trusted_Connection=True;&amp;quot;&lt;br /&gt;
$con.Open()&lt;br /&gt;
&lt;br /&gt;
# Create SqlCommand object, define command text, and set the connection&lt;br /&gt;
$cmd = New-Object System.Data.SqlClient.SqlCommand&lt;br /&gt;
$cmd.Connection = $con&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        $kettad = Get-WmiObject Win32_LogicalDisk | Select-Object SystemName, DeviceID, Size, FreeSpace&lt;br /&gt;
$kettad | ForEach-Object {&lt;br /&gt;
			$kettad = Get-WmiObject Win32_LogicalDisk | Select-Object SystemName, DeviceID, Size, FreeSpace&lt;br /&gt;
			$mnimi = $_.SystemName&lt;br /&gt;
			$knimi = $_.DeviceId&lt;br /&gt;
            $a = Get-Date&lt;br /&gt;
            $td= $a.ToShortDateString() +&amp;quot; &amp;quot; + $a.ToShortTimeString() &lt;br /&gt;
			if($_.Size) {$ksuurus = $_.Size} else {$ksuurus = 0}&lt;br /&gt;
			if($_.FreeSpace) {$kvaba = $_.FreeSpace} else {$kvaba = 0}&lt;br /&gt;
			$sql = &amp;quot;INSERT INTO $Tabel (Masin, Ketas, Suurus, Vaba, Aeg) VALUES (&#039;$mnimi&#039;,&#039;$knimi&#039;,$ksuurus,$kvaba, &#039;$td&#039;)&amp;quot;&lt;br /&gt;
			$cmd.CommandText = $sql&lt;br /&gt;
            $RowsInserted = $cmd.ExecuteNonQuery()&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
# Close the connection&lt;br /&gt;
$con.Close()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimiskeeled:_powershelli_kodut%C3%B6%C3%B6d_2012,_kevad,_p%C3%A4eva%C3%B5pe&amp;diff=47279</id>
		<title>Skriptimiskeeled: powershelli kodutööd 2012, kevad, päevaõpe</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimiskeeled:_powershelli_kodut%C3%B6%C3%B6d_2012,_kevad,_p%C3%A4eva%C3%B5pe&amp;diff=47279"/>
		<updated>2012-04-04T19:07:04Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Jaan Igamees==&lt;br /&gt;
Lühike jutt, mida skript teeb... bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla. &lt;br /&gt;
&lt;br /&gt;
[[PowerShell: Jaan Igamees, kavalskript]]&lt;br /&gt;
&lt;br /&gt;
==Tambet Liiv==&lt;br /&gt;
Kirjutab arvutinime, loogiliste kõvaketaste arvu, nende suuruse ja vaba ruumi andmebaasi. Anmebaasi tüüp peab olema MySql. Rohkem infot skripti kohta on skriptis endas.&lt;br /&gt;
&lt;br /&gt;
[[PowerShell: SQLi baasi kirjutamise skript]]&lt;br /&gt;
&lt;br /&gt;
==Sander Arnus==&lt;br /&gt;
Skript kuvab desktopile kasutajanime, masinanime ja IP aadressid.&lt;br /&gt;
On võimalus pilt ette anda. Kui pilti ei anta kirjutab taustapildile. Teistkorda samale pildile kirjutades teeb tausta mustaks ja kirjutab andmed.&lt;br /&gt;
&lt;br /&gt;
[[PowerShell: Desktopile info kuvamine]]&lt;br /&gt;
&lt;br /&gt;
==Sander Saveli==&lt;br /&gt;
Skript kirjutab Microsoft Sql serverisse arvuti nime, loogiliste kõvakettaste nime, loogiliste kõvaketaste suuruse ja vaba ruumi ning kirje tegemise aja.&lt;br /&gt;
&lt;br /&gt;
[[PowerShell: Microsoft SQLi baasi kirjutamise skript]]&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Skriptimiskeeled:_powershelli_kodut%C3%B6%C3%B6d_2012,_kevad,_p%C3%A4eva%C3%B5pe&amp;diff=47278</id>
		<title>Skriptimiskeeled: powershelli kodutööd 2012, kevad, päevaõpe</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Skriptimiskeeled:_powershelli_kodut%C3%B6%C3%B6d_2012,_kevad,_p%C3%A4eva%C3%B5pe&amp;diff=47278"/>
		<updated>2012-04-04T19:06:49Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Jaan Igamees==&lt;br /&gt;
Lühike jutt, mida skript teeb... bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla. &lt;br /&gt;
&lt;br /&gt;
[[PowerShell: Jaan Igamees, kavalskript]]&lt;br /&gt;
&lt;br /&gt;
==Tambet Liiv==&lt;br /&gt;
Kirjutab arvutinime, loogiliste kõvaketaste arvu, nende suuruse ja vaba ruumi andmebaasi. Anmebaasi tüüp peab olema MySql. Rohkem infot skripti kohta on skriptis endas.&lt;br /&gt;
&lt;br /&gt;
[[PowerShell: SQLi baasi kirjutamise skript]]&lt;br /&gt;
&lt;br /&gt;
==Sander Arnus==&lt;br /&gt;
Skript kuvab desktopile kasutajanime, masinanime ja IP aadressid.&lt;br /&gt;
On võimalus pilt ette anda. Kui pilti ei anta kirjutab taustapildile. Teistkorda samale pildile kirjutades teeb tausta mustaks ja kirjutab andmed.&lt;br /&gt;
&lt;br /&gt;
[[PowerShell: Desktopile info kuvamine]]&lt;br /&gt;
&lt;br /&gt;
==Sander Saveli==&lt;br /&gt;
Skript kirjutab Microsoft Sql serverisse arvuti nime, loogiliste kõvakettaste nime, loogiliste kõvaketaste suuruse ja vaba ruumi ning kirje tegemise aja.&lt;br /&gt;
[[PowerShell: Microsoft SQLi baasi kirjutamise skript]]&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=PowerShell:_Microsoft_SQLi_baasi_kirjutamise_skript&amp;diff=47277</id>
		<title>PowerShell: Microsoft SQLi baasi kirjutamise skript</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=PowerShell:_Microsoft_SQLi_baasi_kirjutamise_skript&amp;diff=47277"/>
		<updated>2012-04-04T19:04:29Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;Source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;#&lt;br /&gt;
	&lt;br /&gt;
	.Synopsis&lt;br /&gt;
	Kirjutab arvutinime, loogiliste k6vaketaste arvu, nende suuruse, vaba ruumi ja kirje tegemise aja andmebaasi,&lt;br /&gt;
	.DESCRIPTION&lt;br /&gt;
        Skripti toimimiseks on vaja Microsoft SQL server. Andmbeaasi külge autentimiseks kasutatakse Windows Authenticationit&lt;br /&gt;
	V6imalik on anda andmebaasi serveri parameetrid (server nimi, baasi nimi ja tabeli nimi)&lt;br /&gt;
	Tabelis endas peavad olema väljas Masin, Ketas, Suurus, vaba ja  Aeg.&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	.EXAMPLE&lt;br /&gt;
	C:\PS&amp;gt;.\skript.ps1 -Server jaan-PC\SQLEXPRESS -Baas kettad -Table test&lt;br /&gt;
	&lt;br /&gt;
	.NOTES&lt;br /&gt;
	Autor: Sander Saveli &lt;br /&gt;
	Versioon: 1.0 &lt;br /&gt;
	Muutmise kuup2ev: 02.04.2012&lt;br /&gt;
	&lt;br /&gt;
	.LINK&lt;br /&gt;
        https://wiki.itcollege.ee/index.php/PowerShell:_Microsoft_SQLi_baasi_kirjutamise_skript&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
#&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Param(	[String]$Server = &amp;quot;juhan-PC\SQLEXPRESS&amp;quot;,&lt;br /&gt;
		[String]$Baas = &amp;quot;mootor&amp;quot;,&lt;br /&gt;
		[String]$Tabel = &amp;quot;disk&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Create SqlConnection object, define connection string, and open connection&lt;br /&gt;
$con = New-Object System.Data.SqlClient.SqlConnection&lt;br /&gt;
$con.ConnectionString = &amp;quot;Server=$Server;Database=$Baas;Trusted_Connection=True;&amp;quot;&lt;br /&gt;
$con.Open()&lt;br /&gt;
&lt;br /&gt;
# Create SqlCommand object, define command text, and set the connection&lt;br /&gt;
$cmd = New-Object System.Data.SqlClient.SqlCommand&lt;br /&gt;
$cmd.Connection = $con&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        $kettad = Get-WmiObject Win32_LogicalDisk | Select-Object SystemName, DeviceID, Size, FreeSpace&lt;br /&gt;
$kettad | ForEach-Object {&lt;br /&gt;
			$kettad = Get-WmiObject Win32_LogicalDisk | Select-Object SystemName, DeviceID, Size, FreeSpace&lt;br /&gt;
			$mnimi = $_.SystemName&lt;br /&gt;
			$knimi = $_.DeviceId&lt;br /&gt;
            $a = Get-Date&lt;br /&gt;
            $td= $a.ToShortDateString() +&amp;quot; &amp;quot; + $a.ToShortTimeString() &lt;br /&gt;
			if($_.Size) {$ksuurus = $_.Size} else {$ksuurus = 0}&lt;br /&gt;
			if($_.FreeSpace) {$kvaba = $_.FreeSpace} else {$kvaba = 0}&lt;br /&gt;
			$sql = &amp;quot;INSERT INTO $Tabel (Masin, Ketas, Suurus, Vaba, Aeg) VALUES (&#039;$mnimi&#039;,&#039;$knimi&#039;,$ksuurus,$kvaba, &#039;$td&#039;)&amp;quot;&lt;br /&gt;
			$cmd.CommandText = $sql&lt;br /&gt;
            $RowsInserted = $cmd.ExecuteNonQuery()&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
# Close the connection&lt;br /&gt;
$con.Close()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=PowerShell:_Microsoft_SQLi_baasi_kirjutamise_skript&amp;diff=47276</id>
		<title>PowerShell: Microsoft SQLi baasi kirjutamise skript</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=PowerShell:_Microsoft_SQLi_baasi_kirjutamise_skript&amp;diff=47276"/>
		<updated>2012-04-04T19:03:58Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: Created page with &amp;#039;&amp;lt;Source lang=&amp;quot;powershell&amp;quot;&amp;gt;  &amp;lt;# 	 	.Synopsis 	Kirjutab arvutinime, loogiliste k6vaketaste arvu, nende suuruse, vaba ruumi ja kirje tegemise aja andmebaasi, 	.DESCRIPTION         S…&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;Source lang=&amp;quot;powershell&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;#&lt;br /&gt;
	&lt;br /&gt;
	.Synopsis&lt;br /&gt;
	Kirjutab arvutinime, loogiliste k6vaketaste arvu, nende suuruse, vaba ruumi ja kirje tegemise aja andmebaasi,&lt;br /&gt;
	.DESCRIPTION&lt;br /&gt;
        Skripti toimimiseks on vaja Microsoft SQL server. Andmbeaasi külge autentimiseks kasutatakse Windows Authenticationit&lt;br /&gt;
	V6imalik on anda andmebaasi serveri parameetrid (server nimi, baasi nimi ja tabeli nimi)&lt;br /&gt;
	Tabelis endas peavad olema väljas Masin, Ketas, Suurus, vaba ja  Aeg.&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	.EXAMPLE&lt;br /&gt;
	C:\PS&amp;gt;.\skript.ps1 -Server jaan-PC\SQLEXPRESS -Baas kettad -Table test&lt;br /&gt;
	&lt;br /&gt;
	.NOTES&lt;br /&gt;
	Autor: Sander Saveli &lt;br /&gt;
	Versioon: 1.0 &lt;br /&gt;
	Muutmise kuup2ev: 02.04.2012&lt;br /&gt;
	&lt;br /&gt;
	.LINK&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
#&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Param(	[String]$Server = &amp;quot;juhan-PC\SQLEXPRESS&amp;quot;,&lt;br /&gt;
		[String]$Baas = &amp;quot;mootor&amp;quot;,&lt;br /&gt;
		[String]$Tabel = &amp;quot;disk&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Create SqlConnection object, define connection string, and open connection&lt;br /&gt;
$con = New-Object System.Data.SqlClient.SqlConnection&lt;br /&gt;
$con.ConnectionString = &amp;quot;Server=$Server;Database=$Baas;Trusted_Connection=True;&amp;quot;&lt;br /&gt;
$con.Open()&lt;br /&gt;
&lt;br /&gt;
# Create SqlCommand object, define command text, and set the connection&lt;br /&gt;
$cmd = New-Object System.Data.SqlClient.SqlCommand&lt;br /&gt;
$cmd.Connection = $con&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        $kettad = Get-WmiObject Win32_LogicalDisk | Select-Object SystemName, DeviceID, Size, FreeSpace&lt;br /&gt;
$kettad | ForEach-Object {&lt;br /&gt;
			$kettad = Get-WmiObject Win32_LogicalDisk | Select-Object SystemName, DeviceID, Size, FreeSpace&lt;br /&gt;
			$mnimi = $_.SystemName&lt;br /&gt;
			$knimi = $_.DeviceId&lt;br /&gt;
            $a = Get-Date&lt;br /&gt;
            $td= $a.ToShortDateString() +&amp;quot; &amp;quot; + $a.ToShortTimeString() &lt;br /&gt;
			if($_.Size) {$ksuurus = $_.Size} else {$ksuurus = 0}&lt;br /&gt;
			if($_.FreeSpace) {$kvaba = $_.FreeSpace} else {$kvaba = 0}&lt;br /&gt;
			$sql = &amp;quot;INSERT INTO $Tabel (Masin, Ketas, Suurus, Vaba, Aeg) VALUES (&#039;$mnimi&#039;,&#039;$knimi&#039;,$ksuurus,$kvaba, &#039;$td&#039;)&amp;quot;&lt;br /&gt;
			$cmd.CommandText = $sql&lt;br /&gt;
            $RowsInserted = $cmd.ExecuteNonQuery()&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
# Close the connection&lt;br /&gt;
$con.Close()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=47146</id>
		<title>Meeskond &quot;Tartu rõõm&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=47146"/>
		<updated>2012-04-02T08:15:06Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* Sander Saveli */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Liikmed ==&lt;br /&gt;
*Inger Romanenko A31&lt;br /&gt;
*Sander Saveli A22&lt;br /&gt;
*Sander Arnus A22&lt;br /&gt;
*Kalmer Tart D22&lt;br /&gt;
*Kristjan Rõõm A32&lt;br /&gt;
&lt;br /&gt;
==Meie eesmärk intensiivõppe raames==&lt;br /&gt;
&lt;br /&gt;
===Automaatne võrguühenduste konfigureerimine erinevate võrkudega===&lt;br /&gt;
&lt;br /&gt;
Konfigureerida arvuti, millel on 3G, Wifi, Ethernet-over-Powerline ja Etherneti pordid ning mille operatsioonisüsteemiks on Ubuntu Linux. Võrguühendust vahetataks ühenduse olemasolu ja prioriteetide alusel üle erinevate tehnoloogiate võimalikult lihtsalt ja kiirelt. IP aadress ei pea samaks jääma. Wifi adapter valib ise parima avaliku võrgu, kui ei ole konfigureeritud teisiti. Kui Wifi ühendus kaob, proovib teisi ka taustal. Kõik ümberlülitamised logitakse. Näiteks: Prioriteetideks on Ethernet:1; EoP:2; Wifi:3; 3G:4. Ühendatakse kõikidesse võimalikesse võrkudesse ning kui Ethernet ära kukub ning pole võimalik ühenduda ka läbi EoP, toimub ühenduse ümberlülitamine Wifi võrku. Kui Wifi ära kukub, siis ühendutakse 3G võrku. Kui tuleb suvaline public wifi tagasi, ühendutakse sinna jne. Luua lihtne kasutajaliides Android telefonile, mis lubab üle bluetooth ühenduse erinevaid võrke ja prioriteete konfigureerida ning vaadata ühenduste ajalugu.&lt;br /&gt;
&lt;br /&gt;
==Ajakava/progress==&lt;br /&gt;
=== Esmaspäev 26.03.2012 ===&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Tutvuda olukorraga ja tehnoloogiatega&lt;br /&gt;
* Kohtuda Ericssoni esindajaga, saada täpne ülevaade ülesandest.&lt;br /&gt;
* Panna paika algne tegevuskava.&lt;br /&gt;
&lt;br /&gt;
Küsimused Ericssonile:&lt;br /&gt;
* Kuidas teha vahet eop-l ja ethernetil?&lt;br /&gt;
* Mis tehnoloogiaid kasutada&lt;br /&gt;
* Miks selline ülesanne?&lt;br /&gt;
* Kus seda kasutama võidakse hakata?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Edusammud:&#039;&#039;&#039;&lt;br /&gt;
* Leidsime badVPN NCD http://code.google.com/p/badvpn/wiki/NCD, nimelise võrguhaldustarkvara ning proovime sellega prioritiseerida erinevaid võrguliideseid.&lt;br /&gt;
* Kohtusime Ericssoni esindajaga ning saime täpsema ülevaate ülesandest. Peame määrama ühendustele prioriteedid ning valima parima ühenduse liigi vastavalt prioriteedile. Wifi puhul peame ühenduma public wifisse ning kui on mitu erinevat võrku saadaval, proovima erinevaid. Võrgutegevust logitakse. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ericssonist saime katsetamiseks kaasa järgneva tehnika :&#039;&#039;&lt;br /&gt;
* nettop PC FIT-PC2&lt;br /&gt;
* 3G EMT mobiilse internetimodemi&lt;br /&gt;
* bluetooth adapteri&lt;br /&gt;
* ethernet over powerline seadmed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Küsimus:&#039;&#039;&#039; Kas kasutame enda leitud badVPN NCD-d või kasutame Linuxis vaikimisi töös olevat Network Manageri?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Materjalid badVPN NCD kohta:&#039;&#039;&#039;&lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/NCD &lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/Installation&lt;br /&gt;
&lt;br /&gt;
Tegime katseid virtualiseeritud keskkonnas. Hetkel suudab NCD prioriteetide alusel ühenduda erinevatesse ethernet liidestega. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Otsustasime enda leitud lahenduse kasuks, sest badVPN NCD teeb täpselt seda mis meil vaja - ühendub erinevatesse võrkudesse prioriteedide alusel.&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;Hetkel tundub, et Network Manageri kasutades peaksime tunduvalt rohkem loogikat ise valmis kirjutama.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Läksime üle katsetustele päris masinas. Installeerisime nettopi peale Lubuntu Linuxi. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame modifitseerima badVPN-i, et saada tööle ka Wi-Fi ja 3G.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tulemus:&#039;&#039;&#039; NCD suudab prioriteedide alusel valida parima ühenduse wifi ja etherneti vahel. Hetkel aga on probleem wifi public võrkudega, nimelt ühendub wifi adapter ainult etteantud võrku. Tuleks kirjutada skript, mis otsib avatud wifi võrke. Alustasime ka mobiilse interneti lahendusega, kuid hetkel tunudb, et NCD seda võimalust ei toeta.&lt;br /&gt;
&lt;br /&gt;
====NCD konfiguratsioon====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cfm&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Example NCD program.&lt;br /&gt;
# All interfaces are disabled by default.&lt;br /&gt;
# Remove/comment the first line of a process to activate the interface.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
process ethernet1 {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and link.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Static configuration.&lt;br /&gt;
   # To use, comment/remove the DHCP configuration above and uncomment this.&lt;br /&gt;
   #var(&amp;quot;192.168.111.116&amp;quot;) addr;&lt;br /&gt;
   #var(&amp;quot;24&amp;quot;) addr_prefix;&lt;br /&gt;
   #var(&amp;quot;192.168.111.1&amp;quot;) gateway;&lt;br /&gt;
   #list(&amp;quot;192.168.111.14&amp;quot;, &amp;quot;193.2.1.66&amp;quot;) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-ethernet&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process eop  {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth2&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-eop&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process pp {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;ppp0&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   #var(dhcp.addr) addr;&lt;br /&gt;
   #var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   #var(dhcp.gateway) gateway;&lt;br /&gt;
   #var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   #net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-pp&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process wlan {&lt;br /&gt;
&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;wlan1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and rfkill.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.backend.rfkill(&amp;quot;wlan&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Connect to wireless network.&lt;br /&gt;
   list() args;&lt;br /&gt;
   net.backend.wpa_supplicant(dev, &amp;quot;/etc/wpa_supplicant/all.conf&amp;quot;, &amp;quot;/sbin/wpa_supplicant&amp;quot;, args);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration. See above for static configuration.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address to interface.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-wlan&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process NETCONF {&lt;br /&gt;
   # Wait for some network connection. Order by priority.&lt;br /&gt;
   list(&amp;quot;NET-wlan&amp;quot;, &amp;quot;NET-eop&amp;quot;, &amp;quot;NET-pp&amp;quot;, &amp;quot;NET-ethernet&amp;quot;) pnames;&lt;br /&gt;
   multidepend(pnames) ifdep;&lt;br /&gt;
   &lt;br /&gt;
   #if(pnames == &amp;quot;NET-pp&amp;quot;)&lt;br /&gt;
   &lt;br /&gt;
   var(ifdep.dev) dev;&lt;br /&gt;
   var(ifdep.addr) addr;&lt;br /&gt;
   var(ifdep.addr_prefix) addr_prefix;&lt;br /&gt;
   var(ifdep.gateway) gateway;&lt;br /&gt;
   var(ifdep.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Add default route.&lt;br /&gt;
   net.ipv4.route(&amp;quot;0.0.0.0&amp;quot;, &amp;quot;0&amp;quot;, gateway, &amp;quot;20&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Configure DNS servers.&lt;br /&gt;
   net.dns(dns_servers, &amp;quot;20&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Teisipäev 27.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039; &lt;br /&gt;
* Saada valmis prioritiseerimine&lt;br /&gt;
* Kirjutada skript, mis otsiks avatud wifi võrke&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Alustada logimisega ning androidi rakenduse kirjutamisega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hakkame lähemalt uurima Network Manageri alternatiivina, sest badVPN-il NCD ja 3G konfiguratsioonid satuvad konflikti, mis teeb 3G ühenduse initsialiseerimise keerukaks.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selgus lõplikult, et NCD-ga ei õnnestu meil töötavat 3G-ga funktsionaalsust luua.&lt;br /&gt;
Hakkasime ülesannet lahendama linuxi &#039;&#039;&#039;Network Manageri&#039;&#039;&#039; abil.&lt;br /&gt;
Network Manageris toimib vaikimisi võrkude prioritiseerimine, esialgu tundub et ei ole võimalik ise prioriteete määrata, ilma source koodi muutmata.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame uurima erinevaid võimalusi kuidas võrke Network manageriga prioritiseerida&#039;&#039;&lt;br /&gt;
Network Manageril on sisseehitatud kindlad prioriteedid ja selle raames toimib kõik väga hästi, aga probleem tekib sellestm et Network Manageris ei saa muuta prioriteete.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lahendus: hakkasime meetrikute alusel prioritiseerima routing tables erinevate ühenduste default route, mille tulemusena saame luua ühenduste prioriteetide järjekorra.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kirjutasime iga Interfacei üles ja allaminemise korral skriptid, mis lisavad ja kustutavad vastava default gateway ja metricuga routi IP route tabelist. &lt;br /&gt;
Default gateway saame kätte Network Manageri käsurea tööriista - &#039;&#039;&#039;nmcli&#039;&#039;&#039; päringu kaudu. Nmcli on kõige kiirem võimalus, sest kliendi poole pealt küsib DHCP infot Network Manager.&lt;br /&gt;
&lt;br /&gt;
====IF UP skript====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth1 metric 5&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth2 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth2 metric 2&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;wlan1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface wlan1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev wlan1 metric 3&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;ppp0&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface ttyUSB0 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev ppp0 metric 6&lt;br /&gt;
fi;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IF DOWN skript====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
sleep 3&lt;br /&gt;
ip route del default&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
sleep 3&lt;br /&gt;
ip route del default&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Kalmer hakkab uurima võimalusi kuidas teha androidi rakendust, millega saaks ühenduda bluetoothiga arvutiga ning konfigureerida võrgu prioriteete.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tegime skripti wifi jaoks, mis otsib kõik avalikud wifi võrgud, mis on läheduses ja koostab nende kohta individuaalfailid mida kasutab Network Maganager võrkudesse automaatseks ühendamiseks. &lt;br /&gt;
&lt;br /&gt;
==== Avalike wifi võrkude otsimise skript ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Autor: Tartu Rõõm&lt;br /&gt;
# Kirjeldus, mida skript teeb&lt;br /&gt;
##&lt;br /&gt;
# Versioon 1.0&lt;br /&gt;
&lt;br /&gt;
# Kontrollib kas juurkasutajana k2ivitati skript&lt;br /&gt;
export LC_ALL=C&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ $UID -ne 0  ]&lt;br /&gt;
then&lt;br /&gt;
  echo &amp;quot;K2ivita skript $(basename $0) juurkasutaja 6igustes&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
#Leiame arvuti wlan seadme mac aadressi&lt;br /&gt;
MAC=$(ifconfig | grep wlan | cut -d &amp;quot; &amp;quot; -f10)&lt;br /&gt;
echo &amp;quot;Arvuti mac: $MAC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Otsime avalikud võrgud&lt;br /&gt;
for line in $(nmcli -p dev wifi | grep [--] | grep s | cut -d &amp;quot;&#039;&amp;quot; -f2); do&lt;br /&gt;
      SSID=$line&lt;br /&gt;
&lt;br /&gt;
   #Suvaline arv UUID&lt;br /&gt;
   HEX=&amp;quot;0123456789abcdef&amp;quot;&lt;br /&gt;
   BEGIN=$( for i in {1..8} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KAKS=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KOLM=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   NELI=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   END=$( for i in {1..12} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   UUID=&amp;quot;$BEGIN-$KAKS-$KOLM-$NELI-$END&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   echo &amp;quot;SSID: $SSID&amp;quot;&lt;br /&gt;
&lt;br /&gt;
      # Loome igale access pointile ssid faili&lt;br /&gt;
      touch /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt; /etc/NetworkManager/system-connections/$SSID &amp;lt;&amp;lt; LOPP&lt;br /&gt;
&lt;br /&gt;
[connection]&lt;br /&gt;
id=$SSID&lt;br /&gt;
uuid=$UUID&lt;br /&gt;
type=802-11-wireless&lt;br /&gt;
&lt;br /&gt;
[802-11-wireless]&lt;br /&gt;
ssid=$SSID&lt;br /&gt;
mode=infrastructure&lt;br /&gt;
mac-address=$MAC&lt;br /&gt;
&lt;br /&gt;
[ipv6]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
[ipv4]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
LOPP&lt;br /&gt;
&lt;br /&gt;
      chmod 600 /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
#service network-manager restart&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kolmapäev 28.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Saada tööle 3G prioritiseerimine&lt;br /&gt;
* arendada Androidi rakendust&lt;br /&gt;
* Teha logimine&lt;br /&gt;
* Korrastada dokumentatsioon&lt;br /&gt;
* Valmistuda presentatsiooniks&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probleem&#039;&#039;&#039;&lt;br /&gt;
Vaikimisi 3G ühendus ei tule ise ülesse. Oleks vaja teada kuhu ja millal USB modem ühendatakse, Lisaks selle oleks vaja automaatlselt luua ühendus, mille alusel saaks kätte default gateway ning saaks teha sissekirjutuse routing tabelisse.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lahendus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Lisasime /lib/udev/rules.d/40-usb_modeswitch.rules faili RUN käsu järele skripti, mis vastava mudeli USB modemi korral initsialiseerib ühenduse.&lt;br /&gt;
&lt;br /&gt;
==== Mobiilse internetiühenduse automaatse loomise skript====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
sleep 30&lt;br /&gt;
nmcli con up id &amp;quot;EMT Default&amp;quot;&lt;br /&gt;
sleep 2&lt;br /&gt;
usb_modeswitch &#039;%b/%k&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Loggimise skript====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
DATE=$(date +%Y-%m-%d)&lt;br /&gt;
mkdir /var/log/nm&lt;br /&gt;
less /var/log/syslog | grep NetworkManager &amp;gt; /var/log/nm/nmlog$DATE.txt&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Millegi pärast, peale arvuti restarti ei tule eth2 kohe üles. Lahendasime probleemi skriptiga, msi teeb interfacile restardi.&lt;br /&gt;
&lt;br /&gt;
===Neljapäev 29.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* luua ping test&lt;br /&gt;
* arendada Androidi rakendust&lt;br /&gt;
* Teha logimine&lt;br /&gt;
* Korrastada dokumentatsioon&lt;br /&gt;
* Valmistuda presentatsiooniks&lt;br /&gt;
&lt;br /&gt;
Kuna ühendus võib olla üleval, kuid sidet internetiga pole, otsustasime teha skripti , mis pingi kaudu kontrollib internetiühendust. &lt;br /&gt;
Pingitakse kõige madalama metricuga default gatewayd, ehk gatewayd, mida kasutatakse. Kui ping ei vasta, suurendatakse merticut 10 võrra, 30min pärast tehakse interfacile restart ning interface tuleb esialge metricuga tagasi, mille peale käivitatske ping test.&lt;br /&gt;
&lt;br /&gt;
====Ping test skript====&lt;br /&gt;
&amp;lt;source lang= &amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#/etc/nmskript/pingtest.sh&lt;br /&gt;
&lt;br /&gt;
# Lõputu tsükkel&lt;br /&gt;
while [ true ]; do&lt;br /&gt;
  echo &amp;quot;while algus&amp;quot;&lt;br /&gt;
&lt;br /&gt;
      #Kui ping õnnestub siis magab 5min (hetkel 5s)&lt;br /&gt;
      PACKETS=$(ping -c 5 8.8.8.8 | grep packets | cut -d &amp;quot; &amp;quot; -f4)&lt;br /&gt;
      sleep 5&lt;br /&gt;
      echo “$PACKETS pakki läks läbi”&lt;br /&gt;
      #Kui üle kolme paki viiest läks läbi, siis magab&lt;br /&gt;
      if [ $PACKETS -gt 3 ]; then&lt;br /&gt;
          echo &amp;quot;Ping t66tab, magan 10s&amp;quot;&lt;br /&gt;
          sleep 10&lt;br /&gt;
&lt;br /&gt;
      #Kui ping ei toimi võtab muutujad, kustutab rea, annab esimesele suurema meetriku&lt;br /&gt;
      else&lt;br /&gt;
              &lt;br /&gt;
           IFACE=$(ip route | grep default | grep metric | head -n 1 | cut -d &amp;quot; &amp;quot; -f5)&lt;br /&gt;
         echo &amp;quot;$IFACE ping ei toimi!&amp;quot;&lt;br /&gt;
           METER=$(ip route | grep default | grep metric | head -n 1 | cut -d &amp;quot; &amp;quot; -f8)&lt;br /&gt;
           METER=$(($METER + 10))&lt;br /&gt;
           ADR=$(nmcli dev list iface $IFACE | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
           ip route del default&lt;br /&gt;
         sleep 1&lt;br /&gt;
           ip route add default via $ADR dev $IFACE metric $METER&lt;br /&gt;
&lt;br /&gt;
              sleep 10          &lt;br /&gt;
      fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Androidi rakenduse arendamine jääb hetkel seisma, kuna pole piisavalt aega ega teadmisi.&lt;br /&gt;
&lt;br /&gt;
==Arvamus==&lt;br /&gt;
===Sander Saveli===&lt;br /&gt;
Üldiselt loen intensiivõppe nädalat enda jaoks korda läinuks. Väga huvitava kogemuse andis reaalse projekti juures kindla tiimiga töötamine, kus ajakava oli kindlalt määratud. Kuna ajakava oli tihe ja tööd palju, pidid kõik tiimi liikmeid kandma vastavalt vajadusele erinevaid rolle, näiteks polnud võimalik, et keegi tegeleks ainult skriptimisega ning keegi ainut routing tableiga. Korraldusliku poole pealt soovitan kindlasti iga tiimi juurde kohe algusest peale saata tuutori, kellel oleks teadmisi ja aega tiimiga tegeleda. Ilma tuutorita pole sageli piisavat ülevaadet ning liiga palju aega kulub erinevate tehnoloogiate googeldamisele ning arusaamisele, kuhu nad süsteemis positsioneeruksid ning kuidas süsteemi mõjutaksid. Koostöö Ericssoniga loen väga sujuvaks - leiti aega meile isiklikult ülesanne ära seletada, tagati tööks vajalik tehnika, anti võimalus terve tööprotsessi jooksul neilt küsida täiendavaid küsimusi ning oldi valmis ka näljaste tudengite mõttetööd pitsaga toetama. Mulle tegi erilist rõõmu, et lõpuks suutmise valmis teha reaalselt töötava lahenduse.&lt;br /&gt;
&lt;br /&gt;
===Kristjan Rõõm===&lt;br /&gt;
Intensiivõppe nädal oli huvitav ning asjalik kogemus. Korraldus oli suhtelist hea, kuigi vahepeal tuli juhendajatest puudus. Peamiselt sai uuritud Network Manageri käitumist ning võrguühenduste prioritiseerimist. Lisaks sai rakendada ka skriptimisoskust. Palju teadmisi kogunes linuxi (Ubuntu) võrguühenduste kohta (kaustad, kust automaatselt skripte käivitatakse ning ühenduste konfigureeimisfailid). Kasulik kogemus ja pitsa maitses hästi.&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=47144</id>
		<title>Meeskond &quot;Tartu rõõm&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=47144"/>
		<updated>2012-04-02T08:02:48Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Liikmed ==&lt;br /&gt;
*Inger Romanenko A31&lt;br /&gt;
*Sander Saveli A22&lt;br /&gt;
*Sander Arnus A22&lt;br /&gt;
*Kalmer Tart D22&lt;br /&gt;
*Kristjan Rõõm A32&lt;br /&gt;
&lt;br /&gt;
==Meie eesmärk intensiivõppe raames==&lt;br /&gt;
&lt;br /&gt;
===Automaatne võrguühenduste konfigureerimine erinevate võrkudega===&lt;br /&gt;
&lt;br /&gt;
Konfigureerida arvuti, millel on 3G, Wifi, Ethernet-over-Powerline ja Etherneti pordid ning mille operatsioonisüsteemiks on Ubuntu Linux. Võrguühendust vahetataks ühenduse olemasolu ja prioriteetide alusel üle erinevate tehnoloogiate võimalikult lihtsalt ja kiirelt. IP aadress ei pea samaks jääma. Wifi adapter valib ise parima avaliku võrgu, kui ei ole konfigureeritud teisiti. Kui Wifi ühendus kaob, proovib teisi ka taustal. Kõik ümberlülitamised logitakse. Näiteks: Prioriteetideks on Ethernet:1; EoP:2; Wifi:3; 3G:4. Ühendatakse kõikidesse võimalikesse võrkudesse ning kui Ethernet ära kukub ning pole võimalik ühenduda ka läbi EoP, toimub ühenduse ümberlülitamine Wifi võrku. Kui Wifi ära kukub, siis ühendutakse 3G võrku. Kui tuleb suvaline public wifi tagasi, ühendutakse sinna jne. Luua lihtne kasutajaliides Android telefonile, mis lubab üle bluetooth ühenduse erinevaid võrke ja prioriteete konfigureerida ning vaadata ühenduste ajalugu.&lt;br /&gt;
&lt;br /&gt;
==Ajakava/progress==&lt;br /&gt;
=== Esmaspäev 26.03.2012 ===&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Tutvuda olukorraga ja tehnoloogiatega&lt;br /&gt;
* Kohtuda Ericssoni esindajaga, saada täpne ülevaade ülesandest.&lt;br /&gt;
* Panna paika algne tegevuskava.&lt;br /&gt;
&lt;br /&gt;
Küsimused Ericssonile:&lt;br /&gt;
* Kuidas teha vahet eop-l ja ethernetil?&lt;br /&gt;
* Mis tehnoloogiaid kasutada&lt;br /&gt;
* Miks selline ülesanne?&lt;br /&gt;
* Kus seda kasutama võidakse hakata?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Edusammud:&#039;&#039;&#039;&lt;br /&gt;
* Leidsime badVPN NCD http://code.google.com/p/badvpn/wiki/NCD, nimelise võrguhaldustarkvara ning proovime sellega prioritiseerida erinevaid võrguliideseid.&lt;br /&gt;
* Kohtusime Ericssoni esindajaga ning saime täpsema ülevaate ülesandest. Peame määrama ühendustele prioriteedid ning valima parima ühenduse liigi vastavalt prioriteedile. Wifi puhul peame ühenduma public wifisse ning kui on mitu erinevat võrku saadaval, proovima erinevaid. Võrgutegevust logitakse. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ericssonist saime katsetamiseks kaasa järgneva tehnika :&#039;&#039;&lt;br /&gt;
* nettop PC FIT-PC2&lt;br /&gt;
* 3G EMT mobiilse internetimodemi&lt;br /&gt;
* bluetooth adapteri&lt;br /&gt;
* ethernet over powerline seadmed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Küsimus:&#039;&#039;&#039; Kas kasutame enda leitud badVPN NCD-d või kasutame Linuxis vaikimisi töös olevat Network Manageri?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Materjalid badVPN NCD kohta:&#039;&#039;&#039;&lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/NCD &lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/Installation&lt;br /&gt;
&lt;br /&gt;
Tegime katseid virtualiseeritud keskkonnas. Hetkel suudab NCD prioriteetide alusel ühenduda erinevatesse ethernet liidestega. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Otsustasime enda leitud lahenduse kasuks, sest badVPN NCD teeb täpselt seda mis meil vaja - ühendub erinevatesse võrkudesse prioriteedide alusel.&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;Hetkel tundub, et Network Manageri kasutades peaksime tunduvalt rohkem loogikat ise valmis kirjutama.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Läksime üle katsetustele päris masinas. Installeerisime nettopi peale Lubuntu Linuxi. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame modifitseerima badVPN-i, et saada tööle ka Wi-Fi ja 3G.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tulemus:&#039;&#039;&#039; NCD suudab prioriteedide alusel valida parima ühenduse wifi ja etherneti vahel. Hetkel aga on probleem wifi public võrkudega, nimelt ühendub wifi adapter ainult etteantud võrku. Tuleks kirjutada skript, mis otsib avatud wifi võrke. Alustasime ka mobiilse interneti lahendusega, kuid hetkel tunudb, et NCD seda võimalust ei toeta.&lt;br /&gt;
&lt;br /&gt;
====NCD konfiguratsioon====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cfm&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Example NCD program.&lt;br /&gt;
# All interfaces are disabled by default.&lt;br /&gt;
# Remove/comment the first line of a process to activate the interface.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
process ethernet1 {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and link.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Static configuration.&lt;br /&gt;
   # To use, comment/remove the DHCP configuration above and uncomment this.&lt;br /&gt;
   #var(&amp;quot;192.168.111.116&amp;quot;) addr;&lt;br /&gt;
   #var(&amp;quot;24&amp;quot;) addr_prefix;&lt;br /&gt;
   #var(&amp;quot;192.168.111.1&amp;quot;) gateway;&lt;br /&gt;
   #list(&amp;quot;192.168.111.14&amp;quot;, &amp;quot;193.2.1.66&amp;quot;) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-ethernet&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process eop  {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth2&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-eop&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process pp {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;ppp0&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   #var(dhcp.addr) addr;&lt;br /&gt;
   #var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   #var(dhcp.gateway) gateway;&lt;br /&gt;
   #var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   #net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-pp&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process wlan {&lt;br /&gt;
&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;wlan1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and rfkill.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.backend.rfkill(&amp;quot;wlan&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Connect to wireless network.&lt;br /&gt;
   list() args;&lt;br /&gt;
   net.backend.wpa_supplicant(dev, &amp;quot;/etc/wpa_supplicant/all.conf&amp;quot;, &amp;quot;/sbin/wpa_supplicant&amp;quot;, args);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration. See above for static configuration.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address to interface.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-wlan&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process NETCONF {&lt;br /&gt;
   # Wait for some network connection. Order by priority.&lt;br /&gt;
   list(&amp;quot;NET-wlan&amp;quot;, &amp;quot;NET-eop&amp;quot;, &amp;quot;NET-pp&amp;quot;, &amp;quot;NET-ethernet&amp;quot;) pnames;&lt;br /&gt;
   multidepend(pnames) ifdep;&lt;br /&gt;
   &lt;br /&gt;
   #if(pnames == &amp;quot;NET-pp&amp;quot;)&lt;br /&gt;
   &lt;br /&gt;
   var(ifdep.dev) dev;&lt;br /&gt;
   var(ifdep.addr) addr;&lt;br /&gt;
   var(ifdep.addr_prefix) addr_prefix;&lt;br /&gt;
   var(ifdep.gateway) gateway;&lt;br /&gt;
   var(ifdep.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Add default route.&lt;br /&gt;
   net.ipv4.route(&amp;quot;0.0.0.0&amp;quot;, &amp;quot;0&amp;quot;, gateway, &amp;quot;20&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Configure DNS servers.&lt;br /&gt;
   net.dns(dns_servers, &amp;quot;20&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Teisipäev 27.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039; &lt;br /&gt;
* Saada valmis prioritiseerimine&lt;br /&gt;
* Kirjutada skript, mis otsiks avatud wifi võrke&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Alustada logimisega ning androidi rakenduse kirjutamisega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hakkame lähemalt uurima Network Manageri alternatiivina, sest badVPN-il NCD ja 3G konfiguratsioonid satuvad konflikti, mis teeb 3G ühenduse initsialiseerimise keerukaks.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selgus lõplikult, et NCD-ga ei õnnestu meil töötavat 3G-ga funktsionaalsust luua.&lt;br /&gt;
Hakkasime ülesannet lahendama linuxi &#039;&#039;&#039;Network Manageri&#039;&#039;&#039; abil.&lt;br /&gt;
Network Manageris toimib vaikimisi võrkude prioritiseerimine, esialgu tundub et ei ole võimalik ise prioriteete määrata, ilma source koodi muutmata.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame uurima erinevaid võimalusi kuidas võrke Network manageriga prioritiseerida&#039;&#039;&lt;br /&gt;
Network Manageril on sisseehitatud kindlad prioriteedid ja selle raames toimib kõik väga hästi, aga probleem tekib sellestm et Network Manageris ei saa muuta prioriteete.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lahendus: hakkasime meetrikute alusel prioritiseerima routing tables erinevate ühenduste default route, mille tulemusena saame luua ühenduste prioriteetide järjekorra.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kirjutasime iga Interfacei üles ja allaminemise korral skriptid, mis lisavad ja kustutavad vastava default gateway ja metricuga routi IP route tabelist. &lt;br /&gt;
Default gateway saame kätte Network Manageri käsurea tööriista - &#039;&#039;&#039;nmcli&#039;&#039;&#039; päringu kaudu. Nmcli on kõige kiirem võimalus, sest kliendi poole pealt küsib DHCP infot Network Manager.&lt;br /&gt;
&lt;br /&gt;
====IF UP skript====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth1 metric 5&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth2 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth2 metric 2&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;wlan1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface wlan1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev wlan1 metric 3&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;ppp0&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface ttyUSB0 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev ppp0 metric 6&lt;br /&gt;
fi;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IF DOWN skript====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
sleep 3&lt;br /&gt;
ip route del default&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
sleep 3&lt;br /&gt;
ip route del default&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Kalmer hakkab uurima võimalusi kuidas teha androidi rakendust, millega saaks ühenduda bluetoothiga arvutiga ning konfigureerida võrgu prioriteete.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tegime skripti wifi jaoks, mis otsib kõik avalikud wifi võrgud, mis on läheduses ja koostab nende kohta individuaalfailid mida kasutab Network Maganager võrkudesse automaatseks ühendamiseks. &lt;br /&gt;
&lt;br /&gt;
==== Avalike wifi võrkude otsimise skript ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Autor: Tartu Rõõm&lt;br /&gt;
# Kirjeldus, mida skript teeb&lt;br /&gt;
##&lt;br /&gt;
# Versioon 1.0&lt;br /&gt;
&lt;br /&gt;
# Kontrollib kas juurkasutajana k2ivitati skript&lt;br /&gt;
export LC_ALL=C&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ $UID -ne 0  ]&lt;br /&gt;
then&lt;br /&gt;
  echo &amp;quot;K2ivita skript $(basename $0) juurkasutaja 6igustes&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
#Leiame arvuti wlan seadme mac aadressi&lt;br /&gt;
MAC=$(ifconfig | grep wlan | cut -d &amp;quot; &amp;quot; -f10)&lt;br /&gt;
echo &amp;quot;Arvuti mac: $MAC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Otsime avalikud võrgud&lt;br /&gt;
for line in $(nmcli -p dev wifi | grep [--] | grep s | cut -d &amp;quot;&#039;&amp;quot; -f2); do&lt;br /&gt;
      SSID=$line&lt;br /&gt;
&lt;br /&gt;
   #Suvaline arv UUID&lt;br /&gt;
   HEX=&amp;quot;0123456789abcdef&amp;quot;&lt;br /&gt;
   BEGIN=$( for i in {1..8} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KAKS=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KOLM=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   NELI=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   END=$( for i in {1..12} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   UUID=&amp;quot;$BEGIN-$KAKS-$KOLM-$NELI-$END&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   echo &amp;quot;SSID: $SSID&amp;quot;&lt;br /&gt;
&lt;br /&gt;
      # Loome igale access pointile ssid faili&lt;br /&gt;
      touch /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt; /etc/NetworkManager/system-connections/$SSID &amp;lt;&amp;lt; LOPP&lt;br /&gt;
&lt;br /&gt;
[connection]&lt;br /&gt;
id=$SSID&lt;br /&gt;
uuid=$UUID&lt;br /&gt;
type=802-11-wireless&lt;br /&gt;
&lt;br /&gt;
[802-11-wireless]&lt;br /&gt;
ssid=$SSID&lt;br /&gt;
mode=infrastructure&lt;br /&gt;
mac-address=$MAC&lt;br /&gt;
&lt;br /&gt;
[ipv6]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
[ipv4]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
LOPP&lt;br /&gt;
&lt;br /&gt;
      chmod 600 /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
#service network-manager restart&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kolmapäev 28.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Saada tööle 3G prioritiseerimine&lt;br /&gt;
* arendada Androidi rakendust&lt;br /&gt;
* Teha logimine&lt;br /&gt;
* Korrastada dokumentatsioon&lt;br /&gt;
* Valmistuda presentatsiooniks&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probleem&#039;&#039;&#039;&lt;br /&gt;
Vaikimisi 3G ühendus ei tule ise ülesse. Oleks vaja teada kuhu ja millal USB modem ühendatakse, Lisaks selle oleks vaja automaatlselt luua ühendus, mille alusel saaks kätte default gateway ning saaks teha sissekirjutuse routing tabelisse.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lahendus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Lisasime /lib/udev/rules.d/40-usb_modeswitch.rules faili RUN käsu järele skripti, mis vastava mudeli USB modemi korral initsialiseerib ühenduse.&lt;br /&gt;
&lt;br /&gt;
==== Mobiilse internetiühenduse automaatse loomise skript====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
sleep 30&lt;br /&gt;
nmcli con up id &amp;quot;EMT Default&amp;quot;&lt;br /&gt;
sleep 2&lt;br /&gt;
usb_modeswitch &#039;%b/%k&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Loggimise skript====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
DATE=$(date +%Y-%m-%d)&lt;br /&gt;
mkdir /var/log/nm&lt;br /&gt;
less /var/log/syslog | grep NetworkManager &amp;gt; /var/log/nm/nmlog$DATE.txt&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Millegi pärast, peale arvuti restarti ei tule eth2 kohe üles. Lahendasime probleemi skriptiga, msi teeb interfacile restardi.&lt;br /&gt;
&lt;br /&gt;
===Neljapäev 29.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* luua ping test&lt;br /&gt;
* arendada Androidi rakendust&lt;br /&gt;
* Teha logimine&lt;br /&gt;
* Korrastada dokumentatsioon&lt;br /&gt;
* Valmistuda presentatsiooniks&lt;br /&gt;
&lt;br /&gt;
Kuna ühendus võib olla üleval, kuid sidet internetiga pole, otsustasime teha skripti , mis pingi kaudu kontrollib internetiühendust. &lt;br /&gt;
Pingitakse kõige madalama metricuga default gatewayd, ehk gatewayd, mida kasutatakse. Kui ping ei vasta, suurendatakse merticut 10 võrra, 30min pärast tehakse interfacile restart ning interface tuleb esialge metricuga tagasi, mille peale käivitatske ping test.&lt;br /&gt;
&lt;br /&gt;
====Ping test skript====&lt;br /&gt;
&amp;lt;source lang= &amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#/etc/nmskript/pingtest.sh&lt;br /&gt;
&lt;br /&gt;
# Lõputu tsükkel&lt;br /&gt;
while [ true ]; do&lt;br /&gt;
  echo &amp;quot;while algus&amp;quot;&lt;br /&gt;
&lt;br /&gt;
      #Kui ping õnnestub siis magab 5min (hetkel 5s)&lt;br /&gt;
      PACKETS=$(ping -c 5 8.8.8.8 | grep packets | cut -d &amp;quot; &amp;quot; -f4)&lt;br /&gt;
      sleep 5&lt;br /&gt;
      echo “$PACKETS pakki läks läbi”&lt;br /&gt;
      #Kui üle kolme paki viiest läks läbi, siis magab&lt;br /&gt;
      if [ $PACKETS -gt 3 ]; then&lt;br /&gt;
          echo &amp;quot;Ping t66tab, magan 10s&amp;quot;&lt;br /&gt;
          sleep 10&lt;br /&gt;
&lt;br /&gt;
      #Kui ping ei toimi võtab muutujad, kustutab rea, annab esimesele suurema meetriku&lt;br /&gt;
      else&lt;br /&gt;
              &lt;br /&gt;
           IFACE=$(ip route | grep default | grep metric | head -n 1 | cut -d &amp;quot; &amp;quot; -f5)&lt;br /&gt;
         echo &amp;quot;$IFACE ping ei toimi!&amp;quot;&lt;br /&gt;
           METER=$(ip route | grep default | grep metric | head -n 1 | cut -d &amp;quot; &amp;quot; -f8)&lt;br /&gt;
           METER=$(($METER + 10))&lt;br /&gt;
           ADR=$(nmcli dev list iface $IFACE | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
           ip route del default&lt;br /&gt;
         sleep 1&lt;br /&gt;
           ip route add default via $ADR dev $IFACE metric $METER&lt;br /&gt;
&lt;br /&gt;
              sleep 10          &lt;br /&gt;
      fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Androidi rakenduse arendamine jääb hetkel seisma, kuna pole piisavalt aega ega teadmisi.&lt;br /&gt;
&lt;br /&gt;
==Arvamus==&lt;br /&gt;
===Sander Saveli===&lt;br /&gt;
Üldiselt loen intensiivõppe nädalat enda jaoks korda läinuks. Väga huvitava kogemuse andis reaalse projekti juures kindla tiimiga töötamine, kus oli etteantud ajakva.&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46940</id>
		<title>Meeskond &quot;Tartu rõõm&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46940"/>
		<updated>2012-03-29T11:42:39Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* Mobiilse internetiühenduse automaatse loomise skript */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Liikmed ==&lt;br /&gt;
*Inger Romanenko&lt;br /&gt;
*Sander Saveli&lt;br /&gt;
*Sander Arnus&lt;br /&gt;
*Kalmer Tart&lt;br /&gt;
*Kristjan Rõõm&lt;br /&gt;
&lt;br /&gt;
==Meie eesmärk intensiivõppe raames==&lt;br /&gt;
&lt;br /&gt;
===Automaatne võrguühenduste konfigureerimine erinevate võrkudega===&lt;br /&gt;
&lt;br /&gt;
Konfigureerida arvuti, millel on 3G, Wifi, Ethernet-over-Powerline ja Etherneti pordid ning mille operatsioonisüsteemiks on Ubuntu Linux. Võrguühendust vahetataks ühenduse olemasolu ja prioriteetide alusel üle erinevate tehnoloogiate võimalikult lihtsalt ja kiirelt. IP aadress ei pea samaks jääma. Wifi adapter valib ise parima avaliku võrgu, kui ei ole konfigureeritud teisiti. Kui Wifi ühendus kaob, proovib teisi ka taustal. Kõik ümberlülitamised logitakse. Näiteks: Prioriteetideks on Ethernet:1; EoP:2; Wifi:3; 3G:4. Ühendatakse kõikidesse võimalikesse võrkudesse ning kui Ethernet ära kukub ning pole võimalik ühenduda ka läbi EoP, toimub ühenduse ümberlülitamine Wifi võrku. Kui Wifi ära kukub, siis ühendutakse 3G võrku. Kui tuleb suvaline public wifi tagasi, ühendutakse sinna jne. Luua lihtne kasutajaliides Android telefonile, mis lubab üle bluetooth ühenduse erinevaid võrke ja prioriteete konfigureerida ning vaadata ühenduste ajalugu.&lt;br /&gt;
&lt;br /&gt;
==Ajakava/progress==&lt;br /&gt;
=== Esmaspäev 26.03.2012 ===&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Tutvuda olukorraga ja tehnoloogiatega&lt;br /&gt;
* Kohtuda Ericssoni esindajaga, saada täpne ülevaade ülesandest.&lt;br /&gt;
* Panna paika algne tegevuskava.&lt;br /&gt;
&lt;br /&gt;
Küsimused Ericssonile:&lt;br /&gt;
* Kuidas teha vahet eop-l ja ethernetil?&lt;br /&gt;
* Mis tehnoloogiaid kasutada&lt;br /&gt;
* Miks selline ülesanne?&lt;br /&gt;
* Kus seda kasutama võidakse hakata?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Edusammud:&#039;&#039;&#039;&lt;br /&gt;
* Leidsime badVPN NCD http://code.google.com/p/badvpn/wiki/NCD, nimelise võrguhaldustarkvara ning proovime sellega prioritiseerida erinevaid võrguliideseid.&lt;br /&gt;
* Kohtusime Ericssoni esindajaga ning saime täpsema ülevaate ülesandest. Peame määrama ühendustele prioriteedid ning valima parima ühenduse liigi vastavalt prioriteedile. Wifi puhul peame ühenduma public wifisse ning kui on mitu erinevat võrku saadaval, proovima erinevaid. Võrgutegevust logitakse. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ericssonist saime katsetamiseks kaasa järgneva tehnika :&#039;&#039;&lt;br /&gt;
* nettop PC FIT-PC2&lt;br /&gt;
* 3G EMT mobiilse internetimodemi&lt;br /&gt;
* bluetooth adapteri&lt;br /&gt;
* ethernet over powerline seadmed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Küsimus:&#039;&#039;&#039; Kas kasutame enda leitud badVPN NCD-d või kasutame Linuxis vaikimisi töös olevat Network Manageri?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Materjalid badVPN NCD kohta:&#039;&#039;&#039;&lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/NCD &lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/Installation&lt;br /&gt;
&lt;br /&gt;
Tegime katseid virtualiseeritud keskkonnas. Hetkel suudab NCD prioriteetide alusel ühenduda erinevatesse ethernet liidestega. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Otsustasime enda leitud lahenduse kasuks, sest badVPN NCD teeb täpselt seda mis meil vaja - ühendub erinevatesse võrkudesse prioriteedide alusel.&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;Hetkel tundub, et Network Manageri kasutades peaksime tunduvalt rohkem loogikat ise valmis kirjutama.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Läksime üle katsetustele päris masinas. Installeerisime nettopi peale Lubuntu Linuxi. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame modifitseerima badVPN-i, et saada tööle ka Wi-Fi ja 3G.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tulemus:&#039;&#039;&#039; NCD suudab prioriteedide alusel valida parima ühenduse wifi ja etherneti vahel. Hetkel aga on probleem wifi public võrkudega, nimelt ühendub wifi adapter ainult etteantud võrku. Tuleks kirjutada skript, mis otsib avatud wifi võrke. Alustasime ka mobiilse interneti lahendusega, kuid hetkel tunudb, et NCD seda võimalust ei toeta.&lt;br /&gt;
&lt;br /&gt;
====NCD konfiguratsioon====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cfm&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Example NCD program.&lt;br /&gt;
# All interfaces are disabled by default.&lt;br /&gt;
# Remove/comment the first line of a process to activate the interface.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
process ethernet1 {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and link.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Static configuration.&lt;br /&gt;
   # To use, comment/remove the DHCP configuration above and uncomment this.&lt;br /&gt;
   #var(&amp;quot;192.168.111.116&amp;quot;) addr;&lt;br /&gt;
   #var(&amp;quot;24&amp;quot;) addr_prefix;&lt;br /&gt;
   #var(&amp;quot;192.168.111.1&amp;quot;) gateway;&lt;br /&gt;
   #list(&amp;quot;192.168.111.14&amp;quot;, &amp;quot;193.2.1.66&amp;quot;) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-ethernet&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process eop  {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth2&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-eop&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process pp {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;ppp0&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   #var(dhcp.addr) addr;&lt;br /&gt;
   #var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   #var(dhcp.gateway) gateway;&lt;br /&gt;
   #var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   #net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-pp&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process wlan {&lt;br /&gt;
&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;wlan1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and rfkill.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.backend.rfkill(&amp;quot;wlan&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Connect to wireless network.&lt;br /&gt;
   list() args;&lt;br /&gt;
   net.backend.wpa_supplicant(dev, &amp;quot;/etc/wpa_supplicant/all.conf&amp;quot;, &amp;quot;/sbin/wpa_supplicant&amp;quot;, args);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration. See above for static configuration.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address to interface.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-wlan&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process NETCONF {&lt;br /&gt;
   # Wait for some network connection. Order by priority.&lt;br /&gt;
   list(&amp;quot;NET-wlan&amp;quot;, &amp;quot;NET-eop&amp;quot;, &amp;quot;NET-pp&amp;quot;, &amp;quot;NET-ethernet&amp;quot;) pnames;&lt;br /&gt;
   multidepend(pnames) ifdep;&lt;br /&gt;
   &lt;br /&gt;
   #if(pnames == &amp;quot;NET-pp&amp;quot;)&lt;br /&gt;
   &lt;br /&gt;
   var(ifdep.dev) dev;&lt;br /&gt;
   var(ifdep.addr) addr;&lt;br /&gt;
   var(ifdep.addr_prefix) addr_prefix;&lt;br /&gt;
   var(ifdep.gateway) gateway;&lt;br /&gt;
   var(ifdep.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Add default route.&lt;br /&gt;
   net.ipv4.route(&amp;quot;0.0.0.0&amp;quot;, &amp;quot;0&amp;quot;, gateway, &amp;quot;20&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Configure DNS servers.&lt;br /&gt;
   net.dns(dns_servers, &amp;quot;20&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Teisipäev 27.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039; &lt;br /&gt;
* Saada valmis prioritiseerimine&lt;br /&gt;
* Kirjutada skript, mis otsiks avatud wifi võrke&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Alustada logimisega ning androidi rakenduse kirjutamisega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hakkame lähemalt uurima Network Manageri alternatiivina, sest badVPN-il NCD ja 3G konfiguratsioonid satuvad konflikti, mis teeb 3G ühenduse initsialiseerimise keerukaks.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selgus lõplikult, et NCD-ga ei õnnestu meil töötavat 3G-ga funktsionaalsust luua.&lt;br /&gt;
Hakkasime ülesannet lahendama linuxi &#039;&#039;&#039;Network Manageri&#039;&#039;&#039; abil.&lt;br /&gt;
Network Manageris toimib vaikimisi võrkude prioritiseerimine, esialgu tundub et ei ole võimalik ise prioriteete määrata, ilma source koodi muutmata.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame uurima erinevaid võimalusi kuidas võrke Network manageriga prioritiseerida&#039;&#039;&lt;br /&gt;
Network Manageril on sisseehitatud kindlad prioriteedid ja selle raames toimib kõik väga hästi, aga probleem tekib sellestm et Network Manageris ei saa muuta prioriteete.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lahendus: hakkasime meetrikute alusel prioritiseerima routing tables erinevate ühenduste default route, mille tulemusena saame luua ühenduste prioriteetide järjekorra.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kirjutasime iga Interfacei üles ja allaminemise korral skriptid, mis lisavad ja kustutavad vastava default gateway ja metricuga routi IP route tabelist. &lt;br /&gt;
Default gateway saame kätte Network Manageri käsurea tööriista - &#039;&#039;&#039;nmcli&#039;&#039;&#039; päringu kaudu. Nmcli on kõige kiirem võimalus, sest kliendi poole pealt küsib DHCP infot Network Manager.&lt;br /&gt;
&lt;br /&gt;
====IF UP skript====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth1 metric 5&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth2 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth2 metric 2&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;wlan1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface wlan1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev wlan1 metric 3&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;ppp0&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface ttyUSB0 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev ppp0 metric 6&lt;br /&gt;
fi;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IF DOWN skript====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
sleep 3&lt;br /&gt;
ip route del default&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
sleep 3&lt;br /&gt;
ip route del default&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Kalmer hakkab uurima võimalusi kuidas teha androidi rakendust, millega saaks ühenduda bluetoothiga arvutiga ning konfigureerida võrgu prioriteete.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tegime skripti wifi jaoks, mis otsib kõik avalikud wifi võrgud, mis on läheduses ja koostab nende kohta individuaalfailid mida kasutab Network Maganager võrkudesse automaatseks ühendamiseks. &lt;br /&gt;
&lt;br /&gt;
==== Avalike wifi võrkude otsimise skript ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Autor: Tartu Rõõm&lt;br /&gt;
# Kirjeldus, mida skript teeb&lt;br /&gt;
##&lt;br /&gt;
# Versioon 1.0&lt;br /&gt;
&lt;br /&gt;
# Kontrollib kas juurkasutajana k2ivitati skript&lt;br /&gt;
export LC_ALL=C&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ $UID -ne 0  ]&lt;br /&gt;
then&lt;br /&gt;
  echo &amp;quot;K2ivita skript $(basename $0) juurkasutaja 6igustes&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
#Leiame arvuti wlan seadme mac aadressi&lt;br /&gt;
MAC=$(ifconfig | grep wlan | cut -d &amp;quot; &amp;quot; -f10)&lt;br /&gt;
echo &amp;quot;Arvuti mac: $MAC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Otsime avalikud võrgud&lt;br /&gt;
for line in $(nmcli -p dev wifi | grep [--] | grep s | cut -d &amp;quot;&#039;&amp;quot; -f2); do&lt;br /&gt;
      SSID=$line&lt;br /&gt;
&lt;br /&gt;
   #Suvaline arv UUID&lt;br /&gt;
   HEX=&amp;quot;0123456789abcdef&amp;quot;&lt;br /&gt;
   BEGIN=$( for i in {1..8} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KAKS=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KOLM=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   NELI=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   END=$( for i in {1..12} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   UUID=&amp;quot;$BEGIN-$KAKS-$KOLM-$NELI-$END&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   echo &amp;quot;SSID: $SSID&amp;quot;&lt;br /&gt;
&lt;br /&gt;
      # Loome igale access pointile ssid faili&lt;br /&gt;
      touch /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt; /etc/NetworkManager/system-connections/$SSID &amp;lt;&amp;lt; LOPP&lt;br /&gt;
&lt;br /&gt;
[connection]&lt;br /&gt;
id=$SSID&lt;br /&gt;
uuid=$UUID&lt;br /&gt;
type=802-11-wireless&lt;br /&gt;
&lt;br /&gt;
[802-11-wireless]&lt;br /&gt;
ssid=$SSID&lt;br /&gt;
mode=infrastructure&lt;br /&gt;
mac-address=$MAC&lt;br /&gt;
&lt;br /&gt;
[ipv6]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
[ipv4]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
LOPP&lt;br /&gt;
&lt;br /&gt;
      chmod 600 /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
#service network-manager restart&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kolmapäev 28.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Saada tööle 3G prioritiseerimine&lt;br /&gt;
* arendada Androidi rakendust&lt;br /&gt;
* Teha logimine&lt;br /&gt;
* Korrastada dokumentatsioon&lt;br /&gt;
* Valmistuda presentatsiooniks&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probleem&#039;&#039;&#039;&lt;br /&gt;
Vaikimisi 3G ühendus ei tule ise ülesse. Oleks vaja teada kuhu ja millal USB modem ühendatakse, Lisaks selle oleks vaja automaatlselt luua ühendus, mille alusel saaks kätte default gateway ning saaks teha sissekirjutuse routing tabelisse.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lahendus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Lisasime /lib/udev/rules.d/40-usb_modeswitch.rules faili RUN käsu järele skripti, mis vastava mudeli USB modemi korral initsialiseerib ühenduse.&lt;br /&gt;
&lt;br /&gt;
==== Mobiilse internetiühenduse automaatse loomise skript====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
sleep 30&lt;br /&gt;
nmcli con up id &amp;quot;EMT Default&amp;quot;&lt;br /&gt;
sleep 2&lt;br /&gt;
usb_modeswitch &#039;%b/%k&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Loggimise skript====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
DATE=$(date +%Y-%m-%d)&lt;br /&gt;
mkdir /var/log/nm&lt;br /&gt;
less /var/log/syslog | grep NetworkManager &amp;gt; /var/log/nm/nmlog$DATE.txt&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Millegi pärast, peale arvuti restarti ei tule eth2 kohe üles. Lahendasime probleemi skriptiga, msi teeb interfacile restardi.&lt;br /&gt;
&lt;br /&gt;
===Neljapäev 29.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* luua ping test&lt;br /&gt;
* arendada Androidi rakendust&lt;br /&gt;
* Teha logimine&lt;br /&gt;
* Korrastada dokumentatsioon&lt;br /&gt;
* Valmistuda presentatsiooniks&lt;br /&gt;
&lt;br /&gt;
Kuna ühendus võib olla üleval, kuid sidet internetiga pole, otsustasime teha skripti , mis pingi kaudu kontrollib internetiühendust. &lt;br /&gt;
Pingitakse kõige madalama metricuga default gatewayd, ehk gatewayd, mida kasutatakse. Kui ping ei vasta, suurendatakse merticut 10 võrra, 30min pärast tehakse interfacile restart ning interface tuleb esialge metricuga tagasi, mille peale käivitatske ping test.&lt;br /&gt;
&lt;br /&gt;
====Ping test skript====&lt;br /&gt;
&amp;lt;source lang= &amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#/etc/nmskript/pingtest.sh&lt;br /&gt;
&lt;br /&gt;
# Lõputu tsükkel&lt;br /&gt;
while [ true ]; do&lt;br /&gt;
  echo &amp;quot;while algus&amp;quot;&lt;br /&gt;
&lt;br /&gt;
      #Kui ping õnnestub siis magab 5min&lt;br /&gt;
      PACKETS=$(ping -c 5 8.8.8.8 | grep packets | cut -d &amp;quot; &amp;quot; -f4)&lt;br /&gt;
      sleep 5&lt;br /&gt;
      echo “$PACKETS pakki läks läbi”&lt;br /&gt;
      if [ $PACKETS -gt 3 ]; then&lt;br /&gt;
          echo &amp;quot;Ping t66tab, magan 10s&amp;quot;&lt;br /&gt;
          sleep 10&lt;br /&gt;
      #Kui ping ei toimi võtab muutujad, kustutab rea, annab esimesele suurema meetriku&lt;br /&gt;
      #Kutsub välja skripti mis teeb IFACE-ile 30min pärast down/up, et taastuks esialgne metric&lt;br /&gt;
      else&lt;br /&gt;
              &lt;br /&gt;
           IFACE=$(ip route | grep default | grep metric | head -n 1 | cut -d &amp;quot; &amp;quot; -f5)&lt;br /&gt;
         echo &amp;quot;$IFACE ping ei toimi!&amp;quot;&lt;br /&gt;
           METER=$(ip route | grep default | grep metric | head -n 1 | cut -d &amp;quot; &amp;quot; -f8)&lt;br /&gt;
           METER=$(($METER + 10))&lt;br /&gt;
           ADR=$(nmcli dev list iface $IFACE | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
           ip route del default&lt;br /&gt;
         sleep 1&lt;br /&gt;
           ip route add default via $ADR dev $IFACE metric $METER&lt;br /&gt;
&lt;br /&gt;
              sleep 10          &lt;br /&gt;
      fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Androidi rakenduse arendamine jääb hetkel seisma, kuna pole piisavalt aega ega teadmisi.&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46939</id>
		<title>Meeskond &quot;Tartu rõõm&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46939"/>
		<updated>2012-03-29T11:38:58Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* Ping test skript */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Liikmed ==&lt;br /&gt;
*Inger Romanenko&lt;br /&gt;
*Sander Saveli&lt;br /&gt;
*Sander Arnus&lt;br /&gt;
*Kalmer Tart&lt;br /&gt;
*Kristjan Rõõm&lt;br /&gt;
&lt;br /&gt;
==Meie eesmärk intensiivõppe raames==&lt;br /&gt;
&lt;br /&gt;
===Automaatne võrguühenduste konfigureerimine erinevate võrkudega===&lt;br /&gt;
&lt;br /&gt;
Konfigureerida arvuti, millel on 3G, Wifi, Ethernet-over-Powerline ja Etherneti pordid ning mille operatsioonisüsteemiks on Ubuntu Linux. Võrguühendust vahetataks ühenduse olemasolu ja prioriteetide alusel üle erinevate tehnoloogiate võimalikult lihtsalt ja kiirelt. IP aadress ei pea samaks jääma. Wifi adapter valib ise parima avaliku võrgu, kui ei ole konfigureeritud teisiti. Kui Wifi ühendus kaob, proovib teisi ka taustal. Kõik ümberlülitamised logitakse. Näiteks: Prioriteetideks on Ethernet:1; EoP:2; Wifi:3; 3G:4. Ühendatakse kõikidesse võimalikesse võrkudesse ning kui Ethernet ära kukub ning pole võimalik ühenduda ka läbi EoP, toimub ühenduse ümberlülitamine Wifi võrku. Kui Wifi ära kukub, siis ühendutakse 3G võrku. Kui tuleb suvaline public wifi tagasi, ühendutakse sinna jne. Luua lihtne kasutajaliides Android telefonile, mis lubab üle bluetooth ühenduse erinevaid võrke ja prioriteete konfigureerida ning vaadata ühenduste ajalugu.&lt;br /&gt;
&lt;br /&gt;
==Ajakava/progress==&lt;br /&gt;
=== Esmaspäev 26.03.2012 ===&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Tutvuda olukorraga ja tehnoloogiatega&lt;br /&gt;
* Kohtuda Ericssoni esindajaga, saada täpne ülevaade ülesandest.&lt;br /&gt;
* Panna paika algne tegevuskava.&lt;br /&gt;
&lt;br /&gt;
Küsimused Ericssonile:&lt;br /&gt;
* Kuidas teha vahet eop-l ja ethernetil?&lt;br /&gt;
* Mis tehnoloogiaid kasutada&lt;br /&gt;
* Miks selline ülesanne?&lt;br /&gt;
* Kus seda kasutama võidakse hakata?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Edusammud:&#039;&#039;&#039;&lt;br /&gt;
* Leidsime badVPN NCD http://code.google.com/p/badvpn/wiki/NCD, nimelise võrguhaldustarkvara ning proovime sellega prioritiseerida erinevaid võrguliideseid.&lt;br /&gt;
* Kohtusime Ericssoni esindajaga ning saime täpsema ülevaate ülesandest. Peame määrama ühendustele prioriteedid ning valima parima ühenduse liigi vastavalt prioriteedile. Wifi puhul peame ühenduma public wifisse ning kui on mitu erinevat võrku saadaval, proovima erinevaid. Võrgutegevust logitakse. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ericssonist saime katsetamiseks kaasa järgneva tehnika :&#039;&#039;&lt;br /&gt;
* nettop PC FIT-PC2&lt;br /&gt;
* 3G EMT mobiilse internetimodemi&lt;br /&gt;
* bluetooth adapteri&lt;br /&gt;
* ethernet over powerline seadmed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Küsimus:&#039;&#039;&#039; Kas kasutame enda leitud badVPN NCD-d või kasutame Linuxis vaikimisi töös olevat Network Manageri?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Materjalid badVPN NCD kohta:&#039;&#039;&#039;&lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/NCD &lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/Installation&lt;br /&gt;
&lt;br /&gt;
Tegime katseid virtualiseeritud keskkonnas. Hetkel suudab NCD prioriteetide alusel ühenduda erinevatesse ethernet liidestega. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Otsustasime enda leitud lahenduse kasuks, sest badVPN NCD teeb täpselt seda mis meil vaja - ühendub erinevatesse võrkudesse prioriteedide alusel.&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;Hetkel tundub, et Network Manageri kasutades peaksime tunduvalt rohkem loogikat ise valmis kirjutama.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Läksime üle katsetustele päris masinas. Installeerisime nettopi peale Lubuntu Linuxi. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame modifitseerima badVPN-i, et saada tööle ka Wi-Fi ja 3G.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tulemus:&#039;&#039;&#039; NCD suudab prioriteedide alusel valida parima ühenduse wifi ja etherneti vahel. Hetkel aga on probleem wifi public võrkudega, nimelt ühendub wifi adapter ainult etteantud võrku. Tuleks kirjutada skript, mis otsib avatud wifi võrke. Alustasime ka mobiilse interneti lahendusega, kuid hetkel tunudb, et NCD seda võimalust ei toeta.&lt;br /&gt;
&lt;br /&gt;
====NCD konfiguratsioon====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cfm&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Example NCD program.&lt;br /&gt;
# All interfaces are disabled by default.&lt;br /&gt;
# Remove/comment the first line of a process to activate the interface.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
process ethernet1 {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and link.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Static configuration.&lt;br /&gt;
   # To use, comment/remove the DHCP configuration above and uncomment this.&lt;br /&gt;
   #var(&amp;quot;192.168.111.116&amp;quot;) addr;&lt;br /&gt;
   #var(&amp;quot;24&amp;quot;) addr_prefix;&lt;br /&gt;
   #var(&amp;quot;192.168.111.1&amp;quot;) gateway;&lt;br /&gt;
   #list(&amp;quot;192.168.111.14&amp;quot;, &amp;quot;193.2.1.66&amp;quot;) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-ethernet&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process eop  {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth2&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-eop&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process pp {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;ppp0&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   #var(dhcp.addr) addr;&lt;br /&gt;
   #var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   #var(dhcp.gateway) gateway;&lt;br /&gt;
   #var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   #net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-pp&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process wlan {&lt;br /&gt;
&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;wlan1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and rfkill.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.backend.rfkill(&amp;quot;wlan&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Connect to wireless network.&lt;br /&gt;
   list() args;&lt;br /&gt;
   net.backend.wpa_supplicant(dev, &amp;quot;/etc/wpa_supplicant/all.conf&amp;quot;, &amp;quot;/sbin/wpa_supplicant&amp;quot;, args);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration. See above for static configuration.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address to interface.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-wlan&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process NETCONF {&lt;br /&gt;
   # Wait for some network connection. Order by priority.&lt;br /&gt;
   list(&amp;quot;NET-wlan&amp;quot;, &amp;quot;NET-eop&amp;quot;, &amp;quot;NET-pp&amp;quot;, &amp;quot;NET-ethernet&amp;quot;) pnames;&lt;br /&gt;
   multidepend(pnames) ifdep;&lt;br /&gt;
   &lt;br /&gt;
   #if(pnames == &amp;quot;NET-pp&amp;quot;)&lt;br /&gt;
   &lt;br /&gt;
   var(ifdep.dev) dev;&lt;br /&gt;
   var(ifdep.addr) addr;&lt;br /&gt;
   var(ifdep.addr_prefix) addr_prefix;&lt;br /&gt;
   var(ifdep.gateway) gateway;&lt;br /&gt;
   var(ifdep.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Add default route.&lt;br /&gt;
   net.ipv4.route(&amp;quot;0.0.0.0&amp;quot;, &amp;quot;0&amp;quot;, gateway, &amp;quot;20&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Configure DNS servers.&lt;br /&gt;
   net.dns(dns_servers, &amp;quot;20&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Teisipäev 27.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039; &lt;br /&gt;
* Saada valmis prioritiseerimine&lt;br /&gt;
* Kirjutada skript, mis otsiks avatud wifi võrke&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Alustada logimisega ning androidi rakenduse kirjutamisega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hakkame lähemalt uurima Network Manageri alternatiivina, sest badVPN-il NCD ja 3G konfiguratsioonid satuvad konflikti, mis teeb 3G ühenduse initsialiseerimise keerukaks.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selgus lõplikult, et NCD-ga ei õnnestu meil töötavat 3G-ga funktsionaalsust luua.&lt;br /&gt;
Hakkasime ülesannet lahendama linuxi &#039;&#039;&#039;Network Manageri&#039;&#039;&#039; abil.&lt;br /&gt;
Network Manageris toimib vaikimisi võrkude prioritiseerimine, esialgu tundub et ei ole võimalik ise prioriteete määrata, ilma source koodi muutmata.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame uurima erinevaid võimalusi kuidas võrke Network manageriga prioritiseerida&#039;&#039;&lt;br /&gt;
Network Manageril on sisseehitatud kindlad prioriteedid ja selle raames toimib kõik väga hästi, aga probleem tekib sellestm et Network Manageris ei saa muuta prioriteete.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lahendus: hakkasime meetrikute alusel prioritiseerima routing tables erinevate ühenduste default route, mille tulemusena saame luua ühenduste prioriteetide järjekorra.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kirjutasime iga Interfacei üles ja allaminemise korral skriptid, mis lisavad ja kustutavad vastava default gateway ja metricuga routi IP route tabelist. &lt;br /&gt;
Default gateway saame kätte Network Manageri käsurea tööriista - &#039;&#039;&#039;nmcli&#039;&#039;&#039; päringu kaudu. Nmcli on kõige kiirem võimalus, sest kliendi poole pealt küsib DHCP infot Network Manager.&lt;br /&gt;
&lt;br /&gt;
====IF UP skript====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth1 metric 5&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth2 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth2 metric 2&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;wlan1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface wlan1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev wlan1 metric 3&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;ppp0&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface ttyUSB0 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev ppp0 metric 6&lt;br /&gt;
fi;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IF DOWN skript====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
sleep 3&lt;br /&gt;
ip route del default&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
sleep 3&lt;br /&gt;
ip route del default&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Kalmer hakkab uurima võimalusi kuidas teha androidi rakendust, millega saaks ühenduda bluetoothiga arvutiga ning konfigureerida võrgu prioriteete.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tegime skripti wifi jaoks, mis otsib kõik avalikud wifi võrgud, mis on läheduses ja koostab nende kohta individuaalfailid mida kasutab Network Maganager võrkudesse automaatseks ühendamiseks. &lt;br /&gt;
&lt;br /&gt;
==== Avalike wifi võrkude otsimise skript ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Autor: Tartu Rõõm&lt;br /&gt;
# Kirjeldus, mida skript teeb&lt;br /&gt;
##&lt;br /&gt;
# Versioon 1.0&lt;br /&gt;
&lt;br /&gt;
# Kontrollib kas juurkasutajana k2ivitati skript&lt;br /&gt;
export LC_ALL=C&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ $UID -ne 0  ]&lt;br /&gt;
then&lt;br /&gt;
  echo &amp;quot;K2ivita skript $(basename $0) juurkasutaja 6igustes&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
#Leiame arvuti wlan seadme mac aadressi&lt;br /&gt;
MAC=$(ifconfig | grep wlan | cut -d &amp;quot; &amp;quot; -f10)&lt;br /&gt;
echo &amp;quot;Arvuti mac: $MAC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Otsime avalikud võrgud&lt;br /&gt;
for line in $(nmcli -p dev wifi | grep [--] | grep s | cut -d &amp;quot;&#039;&amp;quot; -f2); do&lt;br /&gt;
      SSID=$line&lt;br /&gt;
&lt;br /&gt;
   #Suvaline arv UUID&lt;br /&gt;
   HEX=&amp;quot;0123456789abcdef&amp;quot;&lt;br /&gt;
   BEGIN=$( for i in {1..8} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KAKS=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KOLM=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   NELI=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   END=$( for i in {1..12} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   UUID=&amp;quot;$BEGIN-$KAKS-$KOLM-$NELI-$END&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   echo &amp;quot;SSID: $SSID&amp;quot;&lt;br /&gt;
&lt;br /&gt;
      # Loome igale access pointile ssid faili&lt;br /&gt;
      touch /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt; /etc/NetworkManager/system-connections/$SSID &amp;lt;&amp;lt; LOPP&lt;br /&gt;
&lt;br /&gt;
[connection]&lt;br /&gt;
id=$SSID&lt;br /&gt;
uuid=$UUID&lt;br /&gt;
type=802-11-wireless&lt;br /&gt;
&lt;br /&gt;
[802-11-wireless]&lt;br /&gt;
ssid=$SSID&lt;br /&gt;
mode=infrastructure&lt;br /&gt;
mac-address=$MAC&lt;br /&gt;
&lt;br /&gt;
[ipv6]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
[ipv4]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
LOPP&lt;br /&gt;
&lt;br /&gt;
      chmod 600 /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
#service network-manager restart&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kolmapäev 28.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Saada tööle 3G prioritiseerimine&lt;br /&gt;
* arendada Androidi rakendust&lt;br /&gt;
* Teha logimine&lt;br /&gt;
* Korrastada dokumentatsioon&lt;br /&gt;
* Valmistuda presentatsiooniks&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probleem&#039;&#039;&#039;&lt;br /&gt;
Vaikimisi 3G ühendus ei tule ise ülesse. Oleks vaja teada kuhu ja millal USB modem ühendatakse, Lisaks selle oleks vaja automaatlselt luua ühendus, mille alusel saaks kätte default gateway ning saaks teha sissekirjutuse routing tabelisse.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lahendus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Lisasime /lib/udev/rules.d/40-usb_modeswitch.rules faili RUN käsu järele skripti, mis vastava mudeli USB modemi korral initsialiseerib ühenduse.&lt;br /&gt;
&lt;br /&gt;
==== Mobiilse internetiühenduse automaatse loomise skript====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
sleep 30&lt;br /&gt;
nmcli con up id &amp;quot;EMT Default&amp;quot;&lt;br /&gt;
sleep 2&lt;br /&gt;
usb_modeswitch &#039;%b/%k&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Millegi pärast, peale arvuti restarti ei tule eth2 kohe üles. Lahendasime probleemi skriptiga, msi teeb interfacile restardi.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Neljapäev 29.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* luua ping test&lt;br /&gt;
* arendada Androidi rakendust&lt;br /&gt;
* Teha logimine&lt;br /&gt;
* Korrastada dokumentatsioon&lt;br /&gt;
* Valmistuda presentatsiooniks&lt;br /&gt;
&lt;br /&gt;
Kuna ühendus võib olla üleval, kuid sidet internetiga pole, otsustasime teha skripti , mis pingi kaudu kontrollib internetiühendust. &lt;br /&gt;
Pingitakse kõige madalama metricuga default gatewayd, ehk gatewayd, mida kasutatakse. Kui ping ei vasta, suurendatakse merticut 10 võrra, 30min pärast tehakse interfacile restart ning interface tuleb esialge metricuga tagasi, mille peale käivitatske ping test.&lt;br /&gt;
&lt;br /&gt;
====Ping test skript====&lt;br /&gt;
&amp;lt;source lang= &amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#/etc/nmskript/pingtest.sh&lt;br /&gt;
&lt;br /&gt;
# Lõputu tsükkel&lt;br /&gt;
while [ true ]; do&lt;br /&gt;
  echo &amp;quot;while algus&amp;quot;&lt;br /&gt;
&lt;br /&gt;
      #Kui ping õnnestub siis magab 5min&lt;br /&gt;
      PACKETS=$(ping -c 5 8.8.8.8 | grep packets | cut -d &amp;quot; &amp;quot; -f4)&lt;br /&gt;
      sleep 5&lt;br /&gt;
      echo “$PACKETS pakki läks läbi”&lt;br /&gt;
      if [ $PACKETS -gt 3 ]; then&lt;br /&gt;
          echo &amp;quot;Ping t66tab, magan 10s&amp;quot;&lt;br /&gt;
          sleep 10&lt;br /&gt;
      #Kui ping ei toimi võtab muutujad, kustutab rea, annab esimesele suurema meetriku&lt;br /&gt;
      #Kutsub välja skripti mis teeb IFACE-ile 30min pärast down/up, et taastuks esialgne metric&lt;br /&gt;
      else&lt;br /&gt;
              &lt;br /&gt;
           IFACE=$(ip route | grep default | grep metric | head -n 1 | cut -d &amp;quot; &amp;quot; -f5)&lt;br /&gt;
         echo &amp;quot;$IFACE ping ei toimi!&amp;quot;&lt;br /&gt;
           METER=$(ip route | grep default | grep metric | head -n 1 | cut -d &amp;quot; &amp;quot; -f8)&lt;br /&gt;
           METER=$(($METER + 10))&lt;br /&gt;
           ADR=$(nmcli dev list iface $IFACE | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
           ip route del default&lt;br /&gt;
         sleep 1&lt;br /&gt;
           ip route add default via $ADR dev $IFACE metric $METER&lt;br /&gt;
&lt;br /&gt;
              sleep 10          &lt;br /&gt;
      fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Androidi rakenduse arendamine jääb hetkel seisma, kuna pole piisavalt aega ega teadmisi.&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46938</id>
		<title>Meeskond &quot;Tartu rõõm&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46938"/>
		<updated>2012-03-29T11:38:01Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* Ping test skript= */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Liikmed ==&lt;br /&gt;
*Inger Romanenko&lt;br /&gt;
*Sander Saveli&lt;br /&gt;
*Sander Arnus&lt;br /&gt;
*Kalmer Tart&lt;br /&gt;
*Kristjan Rõõm&lt;br /&gt;
&lt;br /&gt;
==Meie eesmärk intensiivõppe raames==&lt;br /&gt;
&lt;br /&gt;
===Automaatne võrguühenduste konfigureerimine erinevate võrkudega===&lt;br /&gt;
&lt;br /&gt;
Konfigureerida arvuti, millel on 3G, Wifi, Ethernet-over-Powerline ja Etherneti pordid ning mille operatsioonisüsteemiks on Ubuntu Linux. Võrguühendust vahetataks ühenduse olemasolu ja prioriteetide alusel üle erinevate tehnoloogiate võimalikult lihtsalt ja kiirelt. IP aadress ei pea samaks jääma. Wifi adapter valib ise parima avaliku võrgu, kui ei ole konfigureeritud teisiti. Kui Wifi ühendus kaob, proovib teisi ka taustal. Kõik ümberlülitamised logitakse. Näiteks: Prioriteetideks on Ethernet:1; EoP:2; Wifi:3; 3G:4. Ühendatakse kõikidesse võimalikesse võrkudesse ning kui Ethernet ära kukub ning pole võimalik ühenduda ka läbi EoP, toimub ühenduse ümberlülitamine Wifi võrku. Kui Wifi ära kukub, siis ühendutakse 3G võrku. Kui tuleb suvaline public wifi tagasi, ühendutakse sinna jne. Luua lihtne kasutajaliides Android telefonile, mis lubab üle bluetooth ühenduse erinevaid võrke ja prioriteete konfigureerida ning vaadata ühenduste ajalugu.&lt;br /&gt;
&lt;br /&gt;
==Ajakava/progress==&lt;br /&gt;
=== Esmaspäev 26.03.2012 ===&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Tutvuda olukorraga ja tehnoloogiatega&lt;br /&gt;
* Kohtuda Ericssoni esindajaga, saada täpne ülevaade ülesandest.&lt;br /&gt;
* Panna paika algne tegevuskava.&lt;br /&gt;
&lt;br /&gt;
Küsimused Ericssonile:&lt;br /&gt;
* Kuidas teha vahet eop-l ja ethernetil?&lt;br /&gt;
* Mis tehnoloogiaid kasutada&lt;br /&gt;
* Miks selline ülesanne?&lt;br /&gt;
* Kus seda kasutama võidakse hakata?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Edusammud:&#039;&#039;&#039;&lt;br /&gt;
* Leidsime badVPN NCD http://code.google.com/p/badvpn/wiki/NCD, nimelise võrguhaldustarkvara ning proovime sellega prioritiseerida erinevaid võrguliideseid.&lt;br /&gt;
* Kohtusime Ericssoni esindajaga ning saime täpsema ülevaate ülesandest. Peame määrama ühendustele prioriteedid ning valima parima ühenduse liigi vastavalt prioriteedile. Wifi puhul peame ühenduma public wifisse ning kui on mitu erinevat võrku saadaval, proovima erinevaid. Võrgutegevust logitakse. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ericssonist saime katsetamiseks kaasa järgneva tehnika :&#039;&#039;&lt;br /&gt;
* nettop PC FIT-PC2&lt;br /&gt;
* 3G EMT mobiilse internetimodemi&lt;br /&gt;
* bluetooth adapteri&lt;br /&gt;
* ethernet over powerline seadmed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Küsimus:&#039;&#039;&#039; Kas kasutame enda leitud badVPN NCD-d või kasutame Linuxis vaikimisi töös olevat Network Manageri?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Materjalid badVPN NCD kohta:&#039;&#039;&#039;&lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/NCD &lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/Installation&lt;br /&gt;
&lt;br /&gt;
Tegime katseid virtualiseeritud keskkonnas. Hetkel suudab NCD prioriteetide alusel ühenduda erinevatesse ethernet liidestega. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Otsustasime enda leitud lahenduse kasuks, sest badVPN NCD teeb täpselt seda mis meil vaja - ühendub erinevatesse võrkudesse prioriteedide alusel.&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;Hetkel tundub, et Network Manageri kasutades peaksime tunduvalt rohkem loogikat ise valmis kirjutama.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Läksime üle katsetustele päris masinas. Installeerisime nettopi peale Lubuntu Linuxi. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame modifitseerima badVPN-i, et saada tööle ka Wi-Fi ja 3G.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tulemus:&#039;&#039;&#039; NCD suudab prioriteedide alusel valida parima ühenduse wifi ja etherneti vahel. Hetkel aga on probleem wifi public võrkudega, nimelt ühendub wifi adapter ainult etteantud võrku. Tuleks kirjutada skript, mis otsib avatud wifi võrke. Alustasime ka mobiilse interneti lahendusega, kuid hetkel tunudb, et NCD seda võimalust ei toeta.&lt;br /&gt;
&lt;br /&gt;
====NCD konfiguratsioon====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cfm&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Example NCD program.&lt;br /&gt;
# All interfaces are disabled by default.&lt;br /&gt;
# Remove/comment the first line of a process to activate the interface.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
process ethernet1 {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and link.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Static configuration.&lt;br /&gt;
   # To use, comment/remove the DHCP configuration above and uncomment this.&lt;br /&gt;
   #var(&amp;quot;192.168.111.116&amp;quot;) addr;&lt;br /&gt;
   #var(&amp;quot;24&amp;quot;) addr_prefix;&lt;br /&gt;
   #var(&amp;quot;192.168.111.1&amp;quot;) gateway;&lt;br /&gt;
   #list(&amp;quot;192.168.111.14&amp;quot;, &amp;quot;193.2.1.66&amp;quot;) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-ethernet&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process eop  {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth2&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-eop&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process pp {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;ppp0&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   #var(dhcp.addr) addr;&lt;br /&gt;
   #var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   #var(dhcp.gateway) gateway;&lt;br /&gt;
   #var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   #net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-pp&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process wlan {&lt;br /&gt;
&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;wlan1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and rfkill.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.backend.rfkill(&amp;quot;wlan&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Connect to wireless network.&lt;br /&gt;
   list() args;&lt;br /&gt;
   net.backend.wpa_supplicant(dev, &amp;quot;/etc/wpa_supplicant/all.conf&amp;quot;, &amp;quot;/sbin/wpa_supplicant&amp;quot;, args);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration. See above for static configuration.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address to interface.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-wlan&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process NETCONF {&lt;br /&gt;
   # Wait for some network connection. Order by priority.&lt;br /&gt;
   list(&amp;quot;NET-wlan&amp;quot;, &amp;quot;NET-eop&amp;quot;, &amp;quot;NET-pp&amp;quot;, &amp;quot;NET-ethernet&amp;quot;) pnames;&lt;br /&gt;
   multidepend(pnames) ifdep;&lt;br /&gt;
   &lt;br /&gt;
   #if(pnames == &amp;quot;NET-pp&amp;quot;)&lt;br /&gt;
   &lt;br /&gt;
   var(ifdep.dev) dev;&lt;br /&gt;
   var(ifdep.addr) addr;&lt;br /&gt;
   var(ifdep.addr_prefix) addr_prefix;&lt;br /&gt;
   var(ifdep.gateway) gateway;&lt;br /&gt;
   var(ifdep.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Add default route.&lt;br /&gt;
   net.ipv4.route(&amp;quot;0.0.0.0&amp;quot;, &amp;quot;0&amp;quot;, gateway, &amp;quot;20&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Configure DNS servers.&lt;br /&gt;
   net.dns(dns_servers, &amp;quot;20&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Teisipäev 27.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039; &lt;br /&gt;
* Saada valmis prioritiseerimine&lt;br /&gt;
* Kirjutada skript, mis otsiks avatud wifi võrke&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Alustada logimisega ning androidi rakenduse kirjutamisega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hakkame lähemalt uurima Network Manageri alternatiivina, sest badVPN-il NCD ja 3G konfiguratsioonid satuvad konflikti, mis teeb 3G ühenduse initsialiseerimise keerukaks.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selgus lõplikult, et NCD-ga ei õnnestu meil töötavat 3G-ga funktsionaalsust luua.&lt;br /&gt;
Hakkasime ülesannet lahendama linuxi &#039;&#039;&#039;Network Manageri&#039;&#039;&#039; abil.&lt;br /&gt;
Network Manageris toimib vaikimisi võrkude prioritiseerimine, esialgu tundub et ei ole võimalik ise prioriteete määrata, ilma source koodi muutmata.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame uurima erinevaid võimalusi kuidas võrke Network manageriga prioritiseerida&#039;&#039;&lt;br /&gt;
Network Manageril on sisseehitatud kindlad prioriteedid ja selle raames toimib kõik väga hästi, aga probleem tekib sellestm et Network Manageris ei saa muuta prioriteete.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lahendus: hakkasime meetrikute alusel prioritiseerima routing tables erinevate ühenduste default route, mille tulemusena saame luua ühenduste prioriteetide järjekorra.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kirjutasime iga Interfacei üles ja allaminemise korral skriptid, mis lisavad ja kustutavad vastava default gateway ja metricuga routi IP route tabelist. &lt;br /&gt;
Default gateway saame kätte Network Manageri käsurea tööriista - &#039;&#039;&#039;nmcli&#039;&#039;&#039; päringu kaudu. Nmcli on kõige kiirem võimalus, sest kliendi poole pealt küsib DHCP infot Network Manager.&lt;br /&gt;
&lt;br /&gt;
====IF UP skript====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth1 metric 5&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth2 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth2 metric 2&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;wlan1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface wlan1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev wlan1 metric 3&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;ppp0&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface ttyUSB0 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev ppp0 metric 6&lt;br /&gt;
fi;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IF DOWN skript====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
sleep 3&lt;br /&gt;
ip route del default&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
sleep 3&lt;br /&gt;
ip route del default&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Kalmer hakkab uurima võimalusi kuidas teha androidi rakendust, millega saaks ühenduda bluetoothiga arvutiga ning konfigureerida võrgu prioriteete.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tegime skripti wifi jaoks, mis otsib kõik avalikud wifi võrgud, mis on läheduses ja koostab nende kohta individuaalfailid mida kasutab Network Maganager võrkudesse automaatseks ühendamiseks. &lt;br /&gt;
&lt;br /&gt;
==== Avalike wifi võrkude otsimise skript ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Autor: Tartu Rõõm&lt;br /&gt;
# Kirjeldus, mida skript teeb&lt;br /&gt;
##&lt;br /&gt;
# Versioon 1.0&lt;br /&gt;
&lt;br /&gt;
# Kontrollib kas juurkasutajana k2ivitati skript&lt;br /&gt;
export LC_ALL=C&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ $UID -ne 0  ]&lt;br /&gt;
then&lt;br /&gt;
  echo &amp;quot;K2ivita skript $(basename $0) juurkasutaja 6igustes&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
#Leiame arvuti wlan seadme mac aadressi&lt;br /&gt;
MAC=$(ifconfig | grep wlan | cut -d &amp;quot; &amp;quot; -f10)&lt;br /&gt;
echo &amp;quot;Arvuti mac: $MAC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Otsime avalikud võrgud&lt;br /&gt;
for line in $(nmcli -p dev wifi | grep [--] | grep s | cut -d &amp;quot;&#039;&amp;quot; -f2); do&lt;br /&gt;
      SSID=$line&lt;br /&gt;
&lt;br /&gt;
   #Suvaline arv UUID&lt;br /&gt;
   HEX=&amp;quot;0123456789abcdef&amp;quot;&lt;br /&gt;
   BEGIN=$( for i in {1..8} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KAKS=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KOLM=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   NELI=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   END=$( for i in {1..12} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   UUID=&amp;quot;$BEGIN-$KAKS-$KOLM-$NELI-$END&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   echo &amp;quot;SSID: $SSID&amp;quot;&lt;br /&gt;
&lt;br /&gt;
      # Loome igale access pointile ssid faili&lt;br /&gt;
      touch /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt; /etc/NetworkManager/system-connections/$SSID &amp;lt;&amp;lt; LOPP&lt;br /&gt;
&lt;br /&gt;
[connection]&lt;br /&gt;
id=$SSID&lt;br /&gt;
uuid=$UUID&lt;br /&gt;
type=802-11-wireless&lt;br /&gt;
&lt;br /&gt;
[802-11-wireless]&lt;br /&gt;
ssid=$SSID&lt;br /&gt;
mode=infrastructure&lt;br /&gt;
mac-address=$MAC&lt;br /&gt;
&lt;br /&gt;
[ipv6]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
[ipv4]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
LOPP&lt;br /&gt;
&lt;br /&gt;
      chmod 600 /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
#service network-manager restart&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kolmapäev 28.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Saada tööle 3G prioritiseerimine&lt;br /&gt;
* arendada Androidi rakendust&lt;br /&gt;
* Teha logimine&lt;br /&gt;
* Korrastada dokumentatsioon&lt;br /&gt;
* Valmistuda presentatsiooniks&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probleem&#039;&#039;&#039;&lt;br /&gt;
Vaikimisi 3G ühendus ei tule ise ülesse. Oleks vaja teada kuhu ja millal USB modem ühendatakse, Lisaks selle oleks vaja automaatlselt luua ühendus, mille alusel saaks kätte default gateway ning saaks teha sissekirjutuse routing tabelisse.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lahendus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Lisasime /lib/udev/rules.d/40-usb_modeswitch.rules faili RUN käsu järele skripti, mis vastava mudeli USB modemi korral initsialiseerib ühenduse.&lt;br /&gt;
&lt;br /&gt;
==== Mobiilse internetiühenduse automaatse loomise skript====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
sleep 30&lt;br /&gt;
nmcli con up id &amp;quot;EMT Default&amp;quot;&lt;br /&gt;
sleep 2&lt;br /&gt;
usb_modeswitch &#039;%b/%k&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Millegi pärast, peale arvuti restarti ei tule eth2 kohe üles. Lahendasime probleemi skriptiga, msi teeb interfacile restardi.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Neljapäev 29.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* luua ping test&lt;br /&gt;
* arendada Androidi rakendust&lt;br /&gt;
* Teha logimine&lt;br /&gt;
* Korrastada dokumentatsioon&lt;br /&gt;
* Valmistuda presentatsiooniks&lt;br /&gt;
&lt;br /&gt;
Kuna ühendus võib olla üleval, kuid sidet internetiga pole, otsustasime teha skripti , mis pingi kaudu kontrollib internetiühendust. &lt;br /&gt;
Pingitakse kõige madalama metricuga default gatewayd, ehk gatewayd, mida kasutatakse. Kui ping ei vasta, suurendatakse merticut 10 võrra, 30min pärast tehakse interfacile restart ning interface tuleb esialge metricuga tagasi, mille peale käivitatske ping test.&lt;br /&gt;
&lt;br /&gt;
====Ping test skript====&lt;br /&gt;
&amp;lt;source lang= &amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#/etc/nmskript/pingtest.sh&lt;br /&gt;
&lt;br /&gt;
# Lõputu tsükkel&lt;br /&gt;
while [ true ]; do&lt;br /&gt;
  echo &amp;quot;while algus&amp;quot;&lt;br /&gt;
&lt;br /&gt;
      #Kui ping õnnestub siis magab 5min&lt;br /&gt;
      PACKETS=$(ping -c 5 8.8.8.8 | grep packets | cut -d &amp;quot; &amp;quot; -f4)&lt;br /&gt;
      sleep 5&lt;br /&gt;
      echo “$PACKETS pakki läks läbi”&lt;br /&gt;
      if [ $PACKETS -gt 3 ]; then&lt;br /&gt;
          echo &amp;quot;Ping t66tab, magan 10s&amp;quot;&lt;br /&gt;
          sleep 10&lt;br /&gt;
      #Kui ping ei toimi võtab muutujad, kustutab rea, annab esimesele suurema meetriku&lt;br /&gt;
      #Kutsub välja skripti mis teeb IFACE-ile 30min pärast down/up, et taastuks esialgne metric&lt;br /&gt;
      else&lt;br /&gt;
              &lt;br /&gt;
           IFACE=$(ip route | grep default | grep metric | head -n 1 | cut -d &amp;quot; &amp;quot; -f5)&lt;br /&gt;
         echo &amp;quot;$IFACE ping ei toimi!&amp;quot;&lt;br /&gt;
           METER=$(ip route | grep default | grep metric | head -n 1 | cut -d &amp;quot; &amp;quot; -f8)&lt;br /&gt;
           METER=$(($METER + 10))&lt;br /&gt;
           ADR=$(nmcli dev list iface $IFACE | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
           ip route del default&lt;br /&gt;
         sleep 1&lt;br /&gt;
           ip route add default via $ADR dev $IFACE metric $METER&lt;br /&gt;
&lt;br /&gt;
              sleep 10          &lt;br /&gt;
      fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46937</id>
		<title>Meeskond &quot;Tartu rõõm&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46937"/>
		<updated>2012-03-29T11:37:51Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* Kolmapäev 28.03.2012 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Liikmed ==&lt;br /&gt;
*Inger Romanenko&lt;br /&gt;
*Sander Saveli&lt;br /&gt;
*Sander Arnus&lt;br /&gt;
*Kalmer Tart&lt;br /&gt;
*Kristjan Rõõm&lt;br /&gt;
&lt;br /&gt;
==Meie eesmärk intensiivõppe raames==&lt;br /&gt;
&lt;br /&gt;
===Automaatne võrguühenduste konfigureerimine erinevate võrkudega===&lt;br /&gt;
&lt;br /&gt;
Konfigureerida arvuti, millel on 3G, Wifi, Ethernet-over-Powerline ja Etherneti pordid ning mille operatsioonisüsteemiks on Ubuntu Linux. Võrguühendust vahetataks ühenduse olemasolu ja prioriteetide alusel üle erinevate tehnoloogiate võimalikult lihtsalt ja kiirelt. IP aadress ei pea samaks jääma. Wifi adapter valib ise parima avaliku võrgu, kui ei ole konfigureeritud teisiti. Kui Wifi ühendus kaob, proovib teisi ka taustal. Kõik ümberlülitamised logitakse. Näiteks: Prioriteetideks on Ethernet:1; EoP:2; Wifi:3; 3G:4. Ühendatakse kõikidesse võimalikesse võrkudesse ning kui Ethernet ära kukub ning pole võimalik ühenduda ka läbi EoP, toimub ühenduse ümberlülitamine Wifi võrku. Kui Wifi ära kukub, siis ühendutakse 3G võrku. Kui tuleb suvaline public wifi tagasi, ühendutakse sinna jne. Luua lihtne kasutajaliides Android telefonile, mis lubab üle bluetooth ühenduse erinevaid võrke ja prioriteete konfigureerida ning vaadata ühenduste ajalugu.&lt;br /&gt;
&lt;br /&gt;
==Ajakava/progress==&lt;br /&gt;
=== Esmaspäev 26.03.2012 ===&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Tutvuda olukorraga ja tehnoloogiatega&lt;br /&gt;
* Kohtuda Ericssoni esindajaga, saada täpne ülevaade ülesandest.&lt;br /&gt;
* Panna paika algne tegevuskava.&lt;br /&gt;
&lt;br /&gt;
Küsimused Ericssonile:&lt;br /&gt;
* Kuidas teha vahet eop-l ja ethernetil?&lt;br /&gt;
* Mis tehnoloogiaid kasutada&lt;br /&gt;
* Miks selline ülesanne?&lt;br /&gt;
* Kus seda kasutama võidakse hakata?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Edusammud:&#039;&#039;&#039;&lt;br /&gt;
* Leidsime badVPN NCD http://code.google.com/p/badvpn/wiki/NCD, nimelise võrguhaldustarkvara ning proovime sellega prioritiseerida erinevaid võrguliideseid.&lt;br /&gt;
* Kohtusime Ericssoni esindajaga ning saime täpsema ülevaate ülesandest. Peame määrama ühendustele prioriteedid ning valima parima ühenduse liigi vastavalt prioriteedile. Wifi puhul peame ühenduma public wifisse ning kui on mitu erinevat võrku saadaval, proovima erinevaid. Võrgutegevust logitakse. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ericssonist saime katsetamiseks kaasa järgneva tehnika :&#039;&#039;&lt;br /&gt;
* nettop PC FIT-PC2&lt;br /&gt;
* 3G EMT mobiilse internetimodemi&lt;br /&gt;
* bluetooth adapteri&lt;br /&gt;
* ethernet over powerline seadmed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Küsimus:&#039;&#039;&#039; Kas kasutame enda leitud badVPN NCD-d või kasutame Linuxis vaikimisi töös olevat Network Manageri?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Materjalid badVPN NCD kohta:&#039;&#039;&#039;&lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/NCD &lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/Installation&lt;br /&gt;
&lt;br /&gt;
Tegime katseid virtualiseeritud keskkonnas. Hetkel suudab NCD prioriteetide alusel ühenduda erinevatesse ethernet liidestega. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Otsustasime enda leitud lahenduse kasuks, sest badVPN NCD teeb täpselt seda mis meil vaja - ühendub erinevatesse võrkudesse prioriteedide alusel.&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;Hetkel tundub, et Network Manageri kasutades peaksime tunduvalt rohkem loogikat ise valmis kirjutama.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Läksime üle katsetustele päris masinas. Installeerisime nettopi peale Lubuntu Linuxi. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame modifitseerima badVPN-i, et saada tööle ka Wi-Fi ja 3G.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tulemus:&#039;&#039;&#039; NCD suudab prioriteedide alusel valida parima ühenduse wifi ja etherneti vahel. Hetkel aga on probleem wifi public võrkudega, nimelt ühendub wifi adapter ainult etteantud võrku. Tuleks kirjutada skript, mis otsib avatud wifi võrke. Alustasime ka mobiilse interneti lahendusega, kuid hetkel tunudb, et NCD seda võimalust ei toeta.&lt;br /&gt;
&lt;br /&gt;
====NCD konfiguratsioon====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cfm&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Example NCD program.&lt;br /&gt;
# All interfaces are disabled by default.&lt;br /&gt;
# Remove/comment the first line of a process to activate the interface.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
process ethernet1 {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and link.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Static configuration.&lt;br /&gt;
   # To use, comment/remove the DHCP configuration above and uncomment this.&lt;br /&gt;
   #var(&amp;quot;192.168.111.116&amp;quot;) addr;&lt;br /&gt;
   #var(&amp;quot;24&amp;quot;) addr_prefix;&lt;br /&gt;
   #var(&amp;quot;192.168.111.1&amp;quot;) gateway;&lt;br /&gt;
   #list(&amp;quot;192.168.111.14&amp;quot;, &amp;quot;193.2.1.66&amp;quot;) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-ethernet&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process eop  {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth2&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-eop&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process pp {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;ppp0&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   #var(dhcp.addr) addr;&lt;br /&gt;
   #var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   #var(dhcp.gateway) gateway;&lt;br /&gt;
   #var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   #net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-pp&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process wlan {&lt;br /&gt;
&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;wlan1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and rfkill.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.backend.rfkill(&amp;quot;wlan&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Connect to wireless network.&lt;br /&gt;
   list() args;&lt;br /&gt;
   net.backend.wpa_supplicant(dev, &amp;quot;/etc/wpa_supplicant/all.conf&amp;quot;, &amp;quot;/sbin/wpa_supplicant&amp;quot;, args);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration. See above for static configuration.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address to interface.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-wlan&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process NETCONF {&lt;br /&gt;
   # Wait for some network connection. Order by priority.&lt;br /&gt;
   list(&amp;quot;NET-wlan&amp;quot;, &amp;quot;NET-eop&amp;quot;, &amp;quot;NET-pp&amp;quot;, &amp;quot;NET-ethernet&amp;quot;) pnames;&lt;br /&gt;
   multidepend(pnames) ifdep;&lt;br /&gt;
   &lt;br /&gt;
   #if(pnames == &amp;quot;NET-pp&amp;quot;)&lt;br /&gt;
   &lt;br /&gt;
   var(ifdep.dev) dev;&lt;br /&gt;
   var(ifdep.addr) addr;&lt;br /&gt;
   var(ifdep.addr_prefix) addr_prefix;&lt;br /&gt;
   var(ifdep.gateway) gateway;&lt;br /&gt;
   var(ifdep.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Add default route.&lt;br /&gt;
   net.ipv4.route(&amp;quot;0.0.0.0&amp;quot;, &amp;quot;0&amp;quot;, gateway, &amp;quot;20&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Configure DNS servers.&lt;br /&gt;
   net.dns(dns_servers, &amp;quot;20&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Teisipäev 27.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039; &lt;br /&gt;
* Saada valmis prioritiseerimine&lt;br /&gt;
* Kirjutada skript, mis otsiks avatud wifi võrke&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Alustada logimisega ning androidi rakenduse kirjutamisega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hakkame lähemalt uurima Network Manageri alternatiivina, sest badVPN-il NCD ja 3G konfiguratsioonid satuvad konflikti, mis teeb 3G ühenduse initsialiseerimise keerukaks.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selgus lõplikult, et NCD-ga ei õnnestu meil töötavat 3G-ga funktsionaalsust luua.&lt;br /&gt;
Hakkasime ülesannet lahendama linuxi &#039;&#039;&#039;Network Manageri&#039;&#039;&#039; abil.&lt;br /&gt;
Network Manageris toimib vaikimisi võrkude prioritiseerimine, esialgu tundub et ei ole võimalik ise prioriteete määrata, ilma source koodi muutmata.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame uurima erinevaid võimalusi kuidas võrke Network manageriga prioritiseerida&#039;&#039;&lt;br /&gt;
Network Manageril on sisseehitatud kindlad prioriteedid ja selle raames toimib kõik väga hästi, aga probleem tekib sellestm et Network Manageris ei saa muuta prioriteete.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lahendus: hakkasime meetrikute alusel prioritiseerima routing tables erinevate ühenduste default route, mille tulemusena saame luua ühenduste prioriteetide järjekorra.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kirjutasime iga Interfacei üles ja allaminemise korral skriptid, mis lisavad ja kustutavad vastava default gateway ja metricuga routi IP route tabelist. &lt;br /&gt;
Default gateway saame kätte Network Manageri käsurea tööriista - &#039;&#039;&#039;nmcli&#039;&#039;&#039; päringu kaudu. Nmcli on kõige kiirem võimalus, sest kliendi poole pealt küsib DHCP infot Network Manager.&lt;br /&gt;
&lt;br /&gt;
====IF UP skript====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth1 metric 5&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth2 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth2 metric 2&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;wlan1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface wlan1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev wlan1 metric 3&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;ppp0&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface ttyUSB0 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev ppp0 metric 6&lt;br /&gt;
fi;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IF DOWN skript====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
sleep 3&lt;br /&gt;
ip route del default&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
sleep 3&lt;br /&gt;
ip route del default&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Kalmer hakkab uurima võimalusi kuidas teha androidi rakendust, millega saaks ühenduda bluetoothiga arvutiga ning konfigureerida võrgu prioriteete.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tegime skripti wifi jaoks, mis otsib kõik avalikud wifi võrgud, mis on läheduses ja koostab nende kohta individuaalfailid mida kasutab Network Maganager võrkudesse automaatseks ühendamiseks. &lt;br /&gt;
&lt;br /&gt;
==== Avalike wifi võrkude otsimise skript ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Autor: Tartu Rõõm&lt;br /&gt;
# Kirjeldus, mida skript teeb&lt;br /&gt;
##&lt;br /&gt;
# Versioon 1.0&lt;br /&gt;
&lt;br /&gt;
# Kontrollib kas juurkasutajana k2ivitati skript&lt;br /&gt;
export LC_ALL=C&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ $UID -ne 0  ]&lt;br /&gt;
then&lt;br /&gt;
  echo &amp;quot;K2ivita skript $(basename $0) juurkasutaja 6igustes&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
#Leiame arvuti wlan seadme mac aadressi&lt;br /&gt;
MAC=$(ifconfig | grep wlan | cut -d &amp;quot; &amp;quot; -f10)&lt;br /&gt;
echo &amp;quot;Arvuti mac: $MAC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Otsime avalikud võrgud&lt;br /&gt;
for line in $(nmcli -p dev wifi | grep [--] | grep s | cut -d &amp;quot;&#039;&amp;quot; -f2); do&lt;br /&gt;
      SSID=$line&lt;br /&gt;
&lt;br /&gt;
   #Suvaline arv UUID&lt;br /&gt;
   HEX=&amp;quot;0123456789abcdef&amp;quot;&lt;br /&gt;
   BEGIN=$( for i in {1..8} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KAKS=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KOLM=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   NELI=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   END=$( for i in {1..12} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   UUID=&amp;quot;$BEGIN-$KAKS-$KOLM-$NELI-$END&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   echo &amp;quot;SSID: $SSID&amp;quot;&lt;br /&gt;
&lt;br /&gt;
      # Loome igale access pointile ssid faili&lt;br /&gt;
      touch /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt; /etc/NetworkManager/system-connections/$SSID &amp;lt;&amp;lt; LOPP&lt;br /&gt;
&lt;br /&gt;
[connection]&lt;br /&gt;
id=$SSID&lt;br /&gt;
uuid=$UUID&lt;br /&gt;
type=802-11-wireless&lt;br /&gt;
&lt;br /&gt;
[802-11-wireless]&lt;br /&gt;
ssid=$SSID&lt;br /&gt;
mode=infrastructure&lt;br /&gt;
mac-address=$MAC&lt;br /&gt;
&lt;br /&gt;
[ipv6]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
[ipv4]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
LOPP&lt;br /&gt;
&lt;br /&gt;
      chmod 600 /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
#service network-manager restart&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kolmapäev 28.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Saada tööle 3G prioritiseerimine&lt;br /&gt;
* arendada Androidi rakendust&lt;br /&gt;
* Teha logimine&lt;br /&gt;
* Korrastada dokumentatsioon&lt;br /&gt;
* Valmistuda presentatsiooniks&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probleem&#039;&#039;&#039;&lt;br /&gt;
Vaikimisi 3G ühendus ei tule ise ülesse. Oleks vaja teada kuhu ja millal USB modem ühendatakse, Lisaks selle oleks vaja automaatlselt luua ühendus, mille alusel saaks kätte default gateway ning saaks teha sissekirjutuse routing tabelisse.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lahendus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Lisasime /lib/udev/rules.d/40-usb_modeswitch.rules faili RUN käsu järele skripti, mis vastava mudeli USB modemi korral initsialiseerib ühenduse.&lt;br /&gt;
&lt;br /&gt;
==== Mobiilse internetiühenduse automaatse loomise skript====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
sleep 30&lt;br /&gt;
nmcli con up id &amp;quot;EMT Default&amp;quot;&lt;br /&gt;
sleep 2&lt;br /&gt;
usb_modeswitch &#039;%b/%k&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Millegi pärast, peale arvuti restarti ei tule eth2 kohe üles. Lahendasime probleemi skriptiga, msi teeb interfacile restardi.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Neljapäev 29.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* luua ping test&lt;br /&gt;
* arendada Androidi rakendust&lt;br /&gt;
* Teha logimine&lt;br /&gt;
* Korrastada dokumentatsioon&lt;br /&gt;
* Valmistuda presentatsiooniks&lt;br /&gt;
&lt;br /&gt;
Kuna ühendus võib olla üleval, kuid sidet internetiga pole, otsustasime teha skripti , mis pingi kaudu kontrollib internetiühendust. &lt;br /&gt;
Pingitakse kõige madalama metricuga default gatewayd, ehk gatewayd, mida kasutatakse. Kui ping ei vasta, suurendatakse merticut 10 võrra, 30min pärast tehakse interfacile restart ning interface tuleb esialge metricuga tagasi, mille peale käivitatske ping test.&lt;br /&gt;
&lt;br /&gt;
====Ping test skript=====&lt;br /&gt;
&amp;lt;source lang= &amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#/etc/nmskript/pingtest.sh&lt;br /&gt;
&lt;br /&gt;
# Lõputu tsükkel&lt;br /&gt;
while [ true ]; do&lt;br /&gt;
  echo &amp;quot;while algus&amp;quot;&lt;br /&gt;
&lt;br /&gt;
      #Kui ping õnnestub siis magab 5min&lt;br /&gt;
      PACKETS=$(ping -c 5 8.8.8.8 | grep packets | cut -d &amp;quot; &amp;quot; -f4)&lt;br /&gt;
      sleep 5&lt;br /&gt;
      echo “$PACKETS pakki läks läbi”&lt;br /&gt;
      if [ $PACKETS -gt 3 ]; then&lt;br /&gt;
          echo &amp;quot;Ping t66tab, magan 10s&amp;quot;&lt;br /&gt;
          sleep 10&lt;br /&gt;
      #Kui ping ei toimi võtab muutujad, kustutab rea, annab esimesele suurema meetriku&lt;br /&gt;
      #Kutsub välja skripti mis teeb IFACE-ile 30min pärast down/up, et taastuks esialgne metric&lt;br /&gt;
      else&lt;br /&gt;
              &lt;br /&gt;
           IFACE=$(ip route | grep default | grep metric | head -n 1 | cut -d &amp;quot; &amp;quot; -f5)&lt;br /&gt;
         echo &amp;quot;$IFACE ping ei toimi!&amp;quot;&lt;br /&gt;
           METER=$(ip route | grep default | grep metric | head -n 1 | cut -d &amp;quot; &amp;quot; -f8)&lt;br /&gt;
           METER=$(($METER + 10))&lt;br /&gt;
           ADR=$(nmcli dev list iface $IFACE | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
           ip route del default&lt;br /&gt;
         sleep 1&lt;br /&gt;
           ip route add default via $ADR dev $IFACE metric $METER&lt;br /&gt;
&lt;br /&gt;
              sleep 10          &lt;br /&gt;
      fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=File:Protsessid.pdf&amp;diff=46924</id>
		<title>File:Protsessid.pdf</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=File:Protsessid.pdf&amp;diff=46924"/>
		<updated>2012-03-29T10:27:26Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: protsessid&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;protsessid&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46923</id>
		<title>Meeskond &quot;Tartu rõõm&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46923"/>
		<updated>2012-03-29T10:26:04Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* Mobiilse internetiühenduse automaatse loomise skript */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Liikmed ==&lt;br /&gt;
*Inger Romanenko&lt;br /&gt;
*Sander Saveli&lt;br /&gt;
*Sander Arnus&lt;br /&gt;
*Kalmer Tart&lt;br /&gt;
*Kristjan Rõõm&lt;br /&gt;
&lt;br /&gt;
==Meie eesmärk intensiivõppe raames==&lt;br /&gt;
&lt;br /&gt;
===Automaatne võrguühenduste konfigureerimine erinevate võrkudega===&lt;br /&gt;
&lt;br /&gt;
Konfigureerida arvuti, millel on 3G, Wifi, Ethernet-over-Powerline ja Etherneti pordid ning mille operatsioonisüsteemiks on Ubuntu Linux. Võrguühendust vahetataks ühenduse olemasolu ja prioriteetide alusel üle erinevate tehnoloogiate võimalikult lihtsalt ja kiirelt. IP aadress ei pea samaks jääma. Wifi adapter valib ise parima avaliku võrgu, kui ei ole konfigureeritud teisiti. Kui Wifi ühendus kaob, proovib teisi ka taustal. Kõik ümberlülitamised logitakse. Näiteks: Prioriteetideks on Ethernet:1; EoP:2; Wifi:3; 3G:4. Ühendatakse kõikidesse võimalikesse võrkudesse ning kui Ethernet ära kukub ning pole võimalik ühenduda ka läbi EoP, toimub ühenduse ümberlülitamine Wifi võrku. Kui Wifi ära kukub, siis ühendutakse 3G võrku. Kui tuleb suvaline public wifi tagasi, ühendutakse sinna jne. Luua lihtne kasutajaliides Android telefonile, mis lubab üle bluetooth ühenduse erinevaid võrke ja prioriteete konfigureerida ning vaadata ühenduste ajalugu.&lt;br /&gt;
&lt;br /&gt;
==Ajakava/progress==&lt;br /&gt;
=== Esmaspäev 26.03.2012 ===&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Tutvuda olukorraga ja tehnoloogiatega&lt;br /&gt;
* Kohtuda Ericssoni esindajaga, saada täpne ülevaade ülesandest.&lt;br /&gt;
* Panna paika algne tegevuskava.&lt;br /&gt;
&lt;br /&gt;
Küsimused Ericssonile:&lt;br /&gt;
* Kuidas teha vahet eop-l ja ethernetil?&lt;br /&gt;
* Mis tehnoloogiaid kasutada&lt;br /&gt;
* Miks selline ülesanne?&lt;br /&gt;
* Kus seda kasutama võidakse hakata?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Edusammud:&#039;&#039;&#039;&lt;br /&gt;
* Leidsime badVPN NCD http://code.google.com/p/badvpn/wiki/NCD, nimelise võrguhaldustarkvara ning proovime sellega prioritiseerida erinevaid võrguliideseid.&lt;br /&gt;
* Kohtusime Ericssoni esindajaga ning saime täpsema ülevaate ülesandest. Peame määrama ühendustele prioriteedid ning valima parima ühenduse liigi vastavalt prioriteedile. Wifi puhul peame ühenduma public wifisse ning kui on mitu erinevat võrku saadaval, proovima erinevaid. Võrgutegevust logitakse. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ericssonist saime katsetamiseks kaasa järgneva tehnika :&#039;&#039;&lt;br /&gt;
* nettop PC FIT-PC2&lt;br /&gt;
* 3G EMT mobiilse internetimodemi&lt;br /&gt;
* bluetooth adapteri&lt;br /&gt;
* ethernet over powerline seadmed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Küsimus:&#039;&#039;&#039; Kas kasutame enda leitud badVPN NCD-d või kasutame Linuxis vaikimisi töös olevat Network Manageri?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Materjalid badVPN NCD kohta:&#039;&#039;&#039;&lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/NCD &lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/Installation&lt;br /&gt;
&lt;br /&gt;
Tegime katseid virtualiseeritud keskkonnas. Hetkel suudab NCD prioriteetide alusel ühenduda erinevatesse ethernet liidestega. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Otsustasime enda leitud lahenduse kasuks, sest badVPN NCD teeb täpselt seda mis meil vaja - ühendub erinevatesse võrkudesse prioriteedide alusel.&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;Hetkel tundub, et Network Manageri kasutades peaksime tunduvalt rohkem loogikat ise valmis kirjutama.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Läksime üle katsetustele päris masinas. Installeerisime nettopi peale Lubuntu Linuxi. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame modifitseerima badVPN-i, et saada tööle ka Wi-Fi ja 3G.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tulemus:&#039;&#039;&#039; NCD suudab prioriteedide alusel valida parima ühenduse wifi ja etherneti vahel. Hetkel aga on probleem wifi public võrkudega, nimelt ühendub wifi adapter ainult etteantud võrku. Tuleks kirjutada skript, mis otsib avatud wifi võrke. Alustasime ka mobiilse interneti lahendusega, kuid hetkel tunudb, et NCD seda võimalust ei toeta.&lt;br /&gt;
&lt;br /&gt;
====NCD konfiguratsioon====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cfm&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Example NCD program.&lt;br /&gt;
# All interfaces are disabled by default.&lt;br /&gt;
# Remove/comment the first line of a process to activate the interface.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
process ethernet1 {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and link.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Static configuration.&lt;br /&gt;
   # To use, comment/remove the DHCP configuration above and uncomment this.&lt;br /&gt;
   #var(&amp;quot;192.168.111.116&amp;quot;) addr;&lt;br /&gt;
   #var(&amp;quot;24&amp;quot;) addr_prefix;&lt;br /&gt;
   #var(&amp;quot;192.168.111.1&amp;quot;) gateway;&lt;br /&gt;
   #list(&amp;quot;192.168.111.14&amp;quot;, &amp;quot;193.2.1.66&amp;quot;) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-ethernet&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process eop  {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth2&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-eop&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process pp {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;ppp0&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   #var(dhcp.addr) addr;&lt;br /&gt;
   #var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   #var(dhcp.gateway) gateway;&lt;br /&gt;
   #var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   #net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-pp&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process wlan {&lt;br /&gt;
&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;wlan1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and rfkill.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.backend.rfkill(&amp;quot;wlan&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Connect to wireless network.&lt;br /&gt;
   list() args;&lt;br /&gt;
   net.backend.wpa_supplicant(dev, &amp;quot;/etc/wpa_supplicant/all.conf&amp;quot;, &amp;quot;/sbin/wpa_supplicant&amp;quot;, args);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration. See above for static configuration.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address to interface.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-wlan&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process NETCONF {&lt;br /&gt;
   # Wait for some network connection. Order by priority.&lt;br /&gt;
   list(&amp;quot;NET-wlan&amp;quot;, &amp;quot;NET-eop&amp;quot;, &amp;quot;NET-pp&amp;quot;, &amp;quot;NET-ethernet&amp;quot;) pnames;&lt;br /&gt;
   multidepend(pnames) ifdep;&lt;br /&gt;
   &lt;br /&gt;
   #if(pnames == &amp;quot;NET-pp&amp;quot;)&lt;br /&gt;
   &lt;br /&gt;
   var(ifdep.dev) dev;&lt;br /&gt;
   var(ifdep.addr) addr;&lt;br /&gt;
   var(ifdep.addr_prefix) addr_prefix;&lt;br /&gt;
   var(ifdep.gateway) gateway;&lt;br /&gt;
   var(ifdep.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Add default route.&lt;br /&gt;
   net.ipv4.route(&amp;quot;0.0.0.0&amp;quot;, &amp;quot;0&amp;quot;, gateway, &amp;quot;20&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Configure DNS servers.&lt;br /&gt;
   net.dns(dns_servers, &amp;quot;20&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Teisipäev 27.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039; &lt;br /&gt;
* Saada valmis prioritiseerimine&lt;br /&gt;
* Kirjutada skript, mis otsiks avatud wifi võrke&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Alustada logimisega ning androidi rakenduse kirjutamisega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hakkame lähemalt uurima Network Manageri alternatiivina, sest badVPN-il NCD ja 3G konfiguratsioonid satuvad konflikti, mis teeb 3G ühenduse initsialiseerimise keerukaks.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selgus lõplikult, et NCD-ga ei õnnestu meil töötavat 3G-ga funktsionaalsust luua.&lt;br /&gt;
Hakkasime ülesannet lahendama linuxi &#039;&#039;&#039;Network Manageri&#039;&#039;&#039; abil.&lt;br /&gt;
Network Manageris toimib vaikimisi võrkude prioritiseerimine, esialgu tundub et ei ole võimalik ise prioriteete määrata, ilma source koodi muutmata.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame uurima erinevaid võimalusi kuidas võrke Network manageriga prioritiseerida&#039;&#039;&lt;br /&gt;
Network Manageril on sisseehitatud kindlad prioriteedid ja selle raames toimib kõik väga hästi, aga probleem tekib sellestm et Network Manageris ei saa muuta prioriteete.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lahendus: hakkasime meetrikute alusel prioritiseerima routing tables erinevate ühenduste default route, mille tulemusena saame luua ühenduste prioriteetide järjekorra.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kirjutasime iga Interfacei üles ja allaminemise korral skriptid, mis lisavad ja kustutavad vastava default gateway ja metricuga routi IP route tabelist. &lt;br /&gt;
Default gateway saame kätte Network Manageri käsurea tööriista - &#039;&#039;&#039;nmcli&#039;&#039;&#039; päringu kaudu. Nmcli on kõige kiirem võimalus, sest kliendi poole pealt küsib DHCP infot Network Manager.&lt;br /&gt;
&lt;br /&gt;
====IF UP skript====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth1 metric 5&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth2 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth2 metric 2&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;wlan1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface wlan1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev wlan1 metric 3&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;ppp0&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface ttyUSB0 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev ppp0 metric 6&lt;br /&gt;
fi;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IF DOWN skript====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
sleep 3&lt;br /&gt;
ip route del default&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
sleep 3&lt;br /&gt;
ip route del default&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Kalmer hakkab uurima võimalusi kuidas teha androidi rakendust, millega saaks ühenduda bluetoothiga arvutiga ning konfigureerida võrgu prioriteete.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tegime skripti wifi jaoks, mis otsib kõik avalikud wifi võrgud, mis on läheduses ja koostab nende kohta individuaalfailid mida kasutab Network Maganager võrkudesse automaatseks ühendamiseks. &lt;br /&gt;
&lt;br /&gt;
==== Avalike wifi võrkude otsimise skript ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Autor: Tartu Rõõm&lt;br /&gt;
# Kirjeldus, mida skript teeb&lt;br /&gt;
##&lt;br /&gt;
# Versioon 1.0&lt;br /&gt;
&lt;br /&gt;
# Kontrollib kas juurkasutajana k2ivitati skript&lt;br /&gt;
export LC_ALL=C&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ $UID -ne 0  ]&lt;br /&gt;
then&lt;br /&gt;
  echo &amp;quot;K2ivita skript $(basename $0) juurkasutaja 6igustes&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
#Leiame arvuti wlan seadme mac aadressi&lt;br /&gt;
MAC=$(ifconfig | grep wlan | cut -d &amp;quot; &amp;quot; -f10)&lt;br /&gt;
echo &amp;quot;Arvuti mac: $MAC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Otsime avalikud võrgud&lt;br /&gt;
for line in $(nmcli -p dev wifi | grep [--] | grep s | cut -d &amp;quot;&#039;&amp;quot; -f2); do&lt;br /&gt;
      SSID=$line&lt;br /&gt;
&lt;br /&gt;
   #Suvaline arv UUID&lt;br /&gt;
   HEX=&amp;quot;0123456789abcdef&amp;quot;&lt;br /&gt;
   BEGIN=$( for i in {1..8} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KAKS=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KOLM=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   NELI=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   END=$( for i in {1..12} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   UUID=&amp;quot;$BEGIN-$KAKS-$KOLM-$NELI-$END&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   echo &amp;quot;SSID: $SSID&amp;quot;&lt;br /&gt;
&lt;br /&gt;
      # Loome igale access pointile ssid faili&lt;br /&gt;
      touch /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt; /etc/NetworkManager/system-connections/$SSID &amp;lt;&amp;lt; LOPP&lt;br /&gt;
&lt;br /&gt;
[connection]&lt;br /&gt;
id=$SSID&lt;br /&gt;
uuid=$UUID&lt;br /&gt;
type=802-11-wireless&lt;br /&gt;
&lt;br /&gt;
[802-11-wireless]&lt;br /&gt;
ssid=$SSID&lt;br /&gt;
mode=infrastructure&lt;br /&gt;
mac-address=$MAC&lt;br /&gt;
&lt;br /&gt;
[ipv6]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
[ipv4]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
LOPP&lt;br /&gt;
&lt;br /&gt;
      chmod 600 /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
#service network-manager restart&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kolmapäev 28.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Saada tööle 3G prioritiseerimine&lt;br /&gt;
* arendada Androidi rakendust&lt;br /&gt;
* Teha logimine&lt;br /&gt;
* Korrastada dokumentatsioon&lt;br /&gt;
* Valmistuda presentatsiooniks&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probleem&#039;&#039;&#039;&lt;br /&gt;
Vaikimisi 3G ühendus ei tule ise ülesse. Oleks vaja teada kuhu ja millal USB modem ühendatakse, Lisaks selle oleks vaja automaatlselt luua ühendus, mille alusel saaks kätte default gateway ning saaks teha sissekirjutuse routing tabelisse.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lahendus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Lisasime /lib/udev/rules.d/40-usb_modeswitch.rules faili RUN käsu järele skripti, mis vastava mudeli USB modemi korral initsialiseerib ühenduse.&lt;br /&gt;
&lt;br /&gt;
==== Mobiilse internetiühenduse automaatse loomise skript====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
sleep 30&lt;br /&gt;
nmcli con up id &amp;quot;EMT Default&amp;quot;&lt;br /&gt;
sleep 2&lt;br /&gt;
usb_modeswitch &#039;%b/%k&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Millegi pärast, peale arvuti restarti ei tule eth2 kohe üles. Lahendasime probleemi skriptiga, msi teeb interfacile restardi.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kolmapäev 28.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* luua ping test&lt;br /&gt;
* arendada Androidi rakendust&lt;br /&gt;
* Teha logimine&lt;br /&gt;
* Korrastada dokumentatsioon&lt;br /&gt;
* Valmistuda presentatsiooniks&lt;br /&gt;
&lt;br /&gt;
Kuna ühendus võib olla üleval, kuid sidet internetiga pole, otsustasime teha skripti , mis pingi kaudu kontrollib internetiühendust. &lt;br /&gt;
Pingitakse kõige madalama metricuga default gatewayd, ehk gatewayd, mida kasutatakse. Kui ühendus&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46919</id>
		<title>Meeskond &quot;Tartu rõõm&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46919"/>
		<updated>2012-03-29T09:57:18Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* Mobiilse internetiühenduse automaatse loomise skript */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Liikmed ==&lt;br /&gt;
*Inger Romanenko&lt;br /&gt;
*Sander Saveli&lt;br /&gt;
*Sander Arnus&lt;br /&gt;
*Kalmer Tart&lt;br /&gt;
*Kristjan Rõõm&lt;br /&gt;
&lt;br /&gt;
==Meie eesmärk intensiivõppe raames==&lt;br /&gt;
&lt;br /&gt;
===Automaatne võrguühenduste konfigureerimine erinevate võrkudega===&lt;br /&gt;
&lt;br /&gt;
Konfigureerida arvuti, millel on 3G, Wifi, Ethernet-over-Powerline ja Etherneti pordid ning mille operatsioonisüsteemiks on Ubuntu Linux. Võrguühendust vahetataks ühenduse olemasolu ja prioriteetide alusel üle erinevate tehnoloogiate võimalikult lihtsalt ja kiirelt. IP aadress ei pea samaks jääma. Wifi adapter valib ise parima avaliku võrgu, kui ei ole konfigureeritud teisiti. Kui Wifi ühendus kaob, proovib teisi ka taustal. Kõik ümberlülitamised logitakse. Näiteks: Prioriteetideks on Ethernet:1; EoP:2; Wifi:3; 3G:4. Ühendatakse kõikidesse võimalikesse võrkudesse ning kui Ethernet ära kukub ning pole võimalik ühenduda ka läbi EoP, toimub ühenduse ümberlülitamine Wifi võrku. Kui Wifi ära kukub, siis ühendutakse 3G võrku. Kui tuleb suvaline public wifi tagasi, ühendutakse sinna jne. Luua lihtne kasutajaliides Android telefonile, mis lubab üle bluetooth ühenduse erinevaid võrke ja prioriteete konfigureerida ning vaadata ühenduste ajalugu.&lt;br /&gt;
&lt;br /&gt;
==Ajakava/progress==&lt;br /&gt;
=== Esmaspäev 26.03.2012 ===&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Tutvuda olukorraga ja tehnoloogiatega&lt;br /&gt;
* Kohtuda Ericssoni esindajaga, saada täpne ülevaade ülesandest.&lt;br /&gt;
* Panna paika algne tegevuskava.&lt;br /&gt;
&lt;br /&gt;
Küsimused Ericssonile:&lt;br /&gt;
* Kuidas teha vahet eop-l ja ethernetil?&lt;br /&gt;
* Mis tehnoloogiaid kasutada&lt;br /&gt;
* Miks selline ülesanne?&lt;br /&gt;
* Kus seda kasutama võidakse hakata?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Edusammud:&#039;&#039;&#039;&lt;br /&gt;
* Leidsime badVPN NCD http://code.google.com/p/badvpn/wiki/NCD, nimelise võrguhaldustarkvara ning proovime sellega prioritiseerida erinevaid võrguliideseid.&lt;br /&gt;
* Kohtusime Ericssoni esindajaga ning saime täpsema ülevaate ülesandest. Peame määrama ühendustele prioriteedid ning valima parima ühenduse liigi vastavalt prioriteedile. Wifi puhul peame ühenduma public wifisse ning kui on mitu erinevat võrku saadaval, proovima erinevaid. Võrgutegevust logitakse. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ericssonist saime katsetamiseks kaasa järgneva tehnika :&#039;&#039;&lt;br /&gt;
* nettop PC FIT-PC2&lt;br /&gt;
* 3G EMT mobiilse internetimodemi&lt;br /&gt;
* bluetooth adapteri&lt;br /&gt;
* ethernet over powerline seadmed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Küsimus:&#039;&#039;&#039; Kas kasutame enda leitud badVPN NCD-d või kasutame Linuxis vaikimisi töös olevat Network Manageri?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Materjalid badVPN NCD kohta:&#039;&#039;&#039;&lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/NCD &lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/Installation&lt;br /&gt;
&lt;br /&gt;
Tegime katseid virtualiseeritud keskkonnas. Hetkel suudab NCD prioriteetide alusel ühenduda erinevatesse ethernet liidestega. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Otsustasime enda leitud lahenduse kasuks, sest badVPN NCD teeb täpselt seda mis meil vaja - ühendub erinevatesse võrkudesse prioriteedide alusel.&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;Hetkel tundub, et Network Manageri kasutades peaksime tunduvalt rohkem loogikat ise valmis kirjutama.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Läksime üle katsetustele päris masinas. Installeerisime nettopi peale Lubuntu Linuxi. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame modifitseerima badVPN-i, et saada tööle ka Wi-Fi ja 3G.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tulemus:&#039;&#039;&#039; NCD suudab prioriteedide alusel valida parima ühenduse wifi ja etherneti vahel. Hetkel aga on probleem wifi public võrkudega, nimelt ühendub wifi adapter ainult etteantud võrku. Tuleks kirjutada skript, mis otsib avatud wifi võrke. Alustasime ka mobiilse interneti lahendusega, kuid hetkel tunudb, et NCD seda võimalust ei toeta.&lt;br /&gt;
&lt;br /&gt;
====NCD konfiguratsioon====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cfm&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Example NCD program.&lt;br /&gt;
# All interfaces are disabled by default.&lt;br /&gt;
# Remove/comment the first line of a process to activate the interface.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
process ethernet1 {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and link.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Static configuration.&lt;br /&gt;
   # To use, comment/remove the DHCP configuration above and uncomment this.&lt;br /&gt;
   #var(&amp;quot;192.168.111.116&amp;quot;) addr;&lt;br /&gt;
   #var(&amp;quot;24&amp;quot;) addr_prefix;&lt;br /&gt;
   #var(&amp;quot;192.168.111.1&amp;quot;) gateway;&lt;br /&gt;
   #list(&amp;quot;192.168.111.14&amp;quot;, &amp;quot;193.2.1.66&amp;quot;) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-ethernet&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process eop  {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth2&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-eop&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process pp {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;ppp0&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   #var(dhcp.addr) addr;&lt;br /&gt;
   #var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   #var(dhcp.gateway) gateway;&lt;br /&gt;
   #var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   #net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-pp&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process wlan {&lt;br /&gt;
&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;wlan1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and rfkill.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.backend.rfkill(&amp;quot;wlan&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Connect to wireless network.&lt;br /&gt;
   list() args;&lt;br /&gt;
   net.backend.wpa_supplicant(dev, &amp;quot;/etc/wpa_supplicant/all.conf&amp;quot;, &amp;quot;/sbin/wpa_supplicant&amp;quot;, args);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration. See above for static configuration.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address to interface.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-wlan&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process NETCONF {&lt;br /&gt;
   # Wait for some network connection. Order by priority.&lt;br /&gt;
   list(&amp;quot;NET-wlan&amp;quot;, &amp;quot;NET-eop&amp;quot;, &amp;quot;NET-pp&amp;quot;, &amp;quot;NET-ethernet&amp;quot;) pnames;&lt;br /&gt;
   multidepend(pnames) ifdep;&lt;br /&gt;
   &lt;br /&gt;
   #if(pnames == &amp;quot;NET-pp&amp;quot;)&lt;br /&gt;
   &lt;br /&gt;
   var(ifdep.dev) dev;&lt;br /&gt;
   var(ifdep.addr) addr;&lt;br /&gt;
   var(ifdep.addr_prefix) addr_prefix;&lt;br /&gt;
   var(ifdep.gateway) gateway;&lt;br /&gt;
   var(ifdep.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Add default route.&lt;br /&gt;
   net.ipv4.route(&amp;quot;0.0.0.0&amp;quot;, &amp;quot;0&amp;quot;, gateway, &amp;quot;20&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Configure DNS servers.&lt;br /&gt;
   net.dns(dns_servers, &amp;quot;20&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Teisipäev 27.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039; &lt;br /&gt;
* Saada valmis prioritiseerimine&lt;br /&gt;
* Kirjutada skript, mis otsiks avatud wifi võrke&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Alustada logimisega ning androidi rakenduse kirjutamisega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hakkame lähemalt uurima Network Manageri alternatiivina, sest badVPN-il NCD ja 3G konfiguratsioonid satuvad konflikti, mis teeb 3G ühenduse initsialiseerimise keerukaks.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selgus lõplikult, et NCD-ga ei õnnestu meil töötavat 3G-ga funktsionaalsust luua.&lt;br /&gt;
Hakkasime ülesannet lahendama linuxi &#039;&#039;&#039;Network Manageri&#039;&#039;&#039; abil.&lt;br /&gt;
Network Manageris toimib vaikimisi võrkude prioritiseerimine, esialgu tundub et ei ole võimalik ise prioriteete määrata, ilma source koodi muutmata.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame uurima erinevaid võimalusi kuidas võrke Network manageriga prioritiseerida&#039;&#039;&lt;br /&gt;
Network Manageril on sisseehitatud kindlad prioriteedid ja selle raames toimib kõik väga hästi, aga probleem tekib sellestm et Network Manageris ei saa muuta prioriteete.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lahendus: hakkasime meetrikute alusel prioritiseerima routing tables erinevate ühenduste default route, mille tulemusena saame luua ühenduste prioriteetide järjekorra.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kirjutasime iga Interfacei üles ja allaminemise korral skriptid, mis lisavad ja kustutavad vastava default gateway ja metricuga routi IP route tabelist. &lt;br /&gt;
Default gateway saame kätte Network Manageri käsurea tööriista - &#039;&#039;&#039;nmcli&#039;&#039;&#039; päringu kaudu. Nmcli on kõige kiirem võimalus, sest kliendi poole pealt küsib DHCP infot Network Manager.&lt;br /&gt;
&lt;br /&gt;
====IF UP skript====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth1 metric 5&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth2 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth2 metric 2&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;wlan1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface wlan1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev wlan1 metric 3&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;ppp0&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface ttyUSB0 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev ppp0 metric 6&lt;br /&gt;
fi;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IF DOWN skript====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
sleep 3&lt;br /&gt;
ip route del default&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
sleep 3&lt;br /&gt;
ip route del default&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Kalmer hakkab uurima võimalusi kuidas teha androidi rakendust, millega saaks ühenduda bluetoothiga arvutiga ning konfigureerida võrgu prioriteete.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tegime skripti wifi jaoks, mis otsib kõik avalikud wifi võrgud, mis on läheduses ja koostab nende kohta individuaalfailid mida kasutab Network Maganager võrkudesse automaatseks ühendamiseks. &lt;br /&gt;
&lt;br /&gt;
==== Avalike wifi võrkude otsimise skript ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Autor: Tartu Rõõm&lt;br /&gt;
# Kirjeldus, mida skript teeb&lt;br /&gt;
##&lt;br /&gt;
# Versioon 1.0&lt;br /&gt;
&lt;br /&gt;
# Kontrollib kas juurkasutajana k2ivitati skript&lt;br /&gt;
export LC_ALL=C&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ $UID -ne 0  ]&lt;br /&gt;
then&lt;br /&gt;
  echo &amp;quot;K2ivita skript $(basename $0) juurkasutaja 6igustes&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
#Leiame arvuti wlan seadme mac aadressi&lt;br /&gt;
MAC=$(ifconfig | grep wlan | cut -d &amp;quot; &amp;quot; -f10)&lt;br /&gt;
echo &amp;quot;Arvuti mac: $MAC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Otsime avalikud võrgud&lt;br /&gt;
for line in $(nmcli -p dev wifi | grep [--] | grep s | cut -d &amp;quot;&#039;&amp;quot; -f2); do&lt;br /&gt;
      SSID=$line&lt;br /&gt;
&lt;br /&gt;
   #Suvaline arv UUID&lt;br /&gt;
   HEX=&amp;quot;0123456789abcdef&amp;quot;&lt;br /&gt;
   BEGIN=$( for i in {1..8} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KAKS=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KOLM=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   NELI=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   END=$( for i in {1..12} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   UUID=&amp;quot;$BEGIN-$KAKS-$KOLM-$NELI-$END&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   echo &amp;quot;SSID: $SSID&amp;quot;&lt;br /&gt;
&lt;br /&gt;
      # Loome igale access pointile ssid faili&lt;br /&gt;
      touch /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt; /etc/NetworkManager/system-connections/$SSID &amp;lt;&amp;lt; LOPP&lt;br /&gt;
&lt;br /&gt;
[connection]&lt;br /&gt;
id=$SSID&lt;br /&gt;
uuid=$UUID&lt;br /&gt;
type=802-11-wireless&lt;br /&gt;
&lt;br /&gt;
[802-11-wireless]&lt;br /&gt;
ssid=$SSID&lt;br /&gt;
mode=infrastructure&lt;br /&gt;
mac-address=$MAC&lt;br /&gt;
&lt;br /&gt;
[ipv6]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
[ipv4]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
LOPP&lt;br /&gt;
&lt;br /&gt;
      chmod 600 /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
#service network-manager restart&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kolmapäev 28.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Saada tööle 3G prioritiseerimine&lt;br /&gt;
* arendada Androidi rakendust&lt;br /&gt;
* Teha logimine&lt;br /&gt;
* Korrastada dokumentatsioon&lt;br /&gt;
* Valmistuda presentatsiooniks&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probleem&#039;&#039;&#039;&lt;br /&gt;
Vaikimisi 3G ühendus ei tule ise ülesse. Oleks vaja teada kuhu ja millal USB modem ühendatakse, Lisaks selle oleks vaja automaatlselt luua ühendus, mille alusel saaks kätte default gateway ning saaks teha sissekirjutuse routing tabelisse.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lahendus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Lisasime /lib/udev/rules.d/40-usb_modeswitch.rules faili RUN käsu järele skripti, mis vastava mudeli USB modemi korral initsialiseerib ühenduse.&lt;br /&gt;
&lt;br /&gt;
==== Mobiilse internetiühenduse automaatse loomise skript====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
sleep 30&lt;br /&gt;
nmcli con up id &amp;quot;EMT Default&amp;quot;&lt;br /&gt;
sleep 2&lt;br /&gt;
usb_modeswitch &#039;%b/%k&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Millegi pärast, peale arvuti restarti ei tule eth2 kohe üles. Lahendasime probleemi skriptiga, msi teeb interfacile restardi.&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46912</id>
		<title>Meeskond &quot;Tartu rõõm&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46912"/>
		<updated>2012-03-29T09:43:55Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* Mobiilse internetiühenduse automaatse loomise skript */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Liikmed ==&lt;br /&gt;
*Inger Romanenko&lt;br /&gt;
*Sander Saveli&lt;br /&gt;
*Sander Arnus&lt;br /&gt;
*Kalmer Tart&lt;br /&gt;
*Kristjan Rõõm&lt;br /&gt;
&lt;br /&gt;
==Meie eesmärk intensiivõppe raames==&lt;br /&gt;
&lt;br /&gt;
===Automaatne võrguühenduste konfigureerimine erinevate võrkudega===&lt;br /&gt;
&lt;br /&gt;
Konfigureerida arvuti, millel on 3G, Wifi, Ethernet-over-Powerline ja Etherneti pordid ning mille operatsioonisüsteemiks on Ubuntu Linux. Võrguühendust vahetataks ühenduse olemasolu ja prioriteetide alusel üle erinevate tehnoloogiate võimalikult lihtsalt ja kiirelt. IP aadress ei pea samaks jääma. Wifi adapter valib ise parima avaliku võrgu, kui ei ole konfigureeritud teisiti. Kui Wifi ühendus kaob, proovib teisi ka taustal. Kõik ümberlülitamised logitakse. Näiteks: Prioriteetideks on Ethernet:1; EoP:2; Wifi:3; 3G:4. Ühendatakse kõikidesse võimalikesse võrkudesse ning kui Ethernet ära kukub ning pole võimalik ühenduda ka läbi EoP, toimub ühenduse ümberlülitamine Wifi võrku. Kui Wifi ära kukub, siis ühendutakse 3G võrku. Kui tuleb suvaline public wifi tagasi, ühendutakse sinna jne. Luua lihtne kasutajaliides Android telefonile, mis lubab üle bluetooth ühenduse erinevaid võrke ja prioriteete konfigureerida ning vaadata ühenduste ajalugu.&lt;br /&gt;
&lt;br /&gt;
==Ajakava/progress==&lt;br /&gt;
=== Esmaspäev 26.03.2012 ===&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Tutvuda olukorraga ja tehnoloogiatega&lt;br /&gt;
* Kohtuda Ericssoni esindajaga, saada täpne ülevaade ülesandest.&lt;br /&gt;
* Panna paika algne tegevuskava.&lt;br /&gt;
&lt;br /&gt;
Küsimused Ericssonile:&lt;br /&gt;
* Kuidas teha vahet eop-l ja ethernetil?&lt;br /&gt;
* Mis tehnoloogiaid kasutada&lt;br /&gt;
* Miks selline ülesanne?&lt;br /&gt;
* Kus seda kasutama võidakse hakata?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Edusammud:&#039;&#039;&#039;&lt;br /&gt;
* Leidsime badVPN NCD http://code.google.com/p/badvpn/wiki/NCD, nimelise võrguhaldustarkvara ning proovime sellega prioritiseerida erinevaid võrguliideseid.&lt;br /&gt;
* Kohtusime Ericssoni esindajaga ning saime täpsema ülevaate ülesandest. Peame määrama ühendustele prioriteedid ning valima parima ühenduse liigi vastavalt prioriteedile. Wifi puhul peame ühenduma public wifisse ning kui on mitu erinevat võrku saadaval, proovima erinevaid. Võrgutegevust logitakse. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ericssonist saime katsetamiseks kaasa järgneva tehnika :&#039;&#039;&lt;br /&gt;
* nettop PC FIT-PC2&lt;br /&gt;
* 3G EMT mobiilse internetimodemi&lt;br /&gt;
* bluetooth adapteri&lt;br /&gt;
* ethernet over powerline seadmed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Küsimus:&#039;&#039;&#039; Kas kasutame enda leitud badVPN NCD-d või kasutame Linuxis vaikimisi töös olevat Network Manageri?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Materjalid badVPN NCD kohta:&#039;&#039;&#039;&lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/NCD &lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/Installation&lt;br /&gt;
&lt;br /&gt;
Tegime katseid virtualiseeritud keskkonnas. Hetkel suudab NCD prioriteetide alusel ühenduda erinevatesse ethernet liidestega. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Otsustasime enda leitud lahenduse kasuks, sest badVPN NCD teeb täpselt seda mis meil vaja - ühendub erinevatesse võrkudesse prioriteedide alusel.&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;Hetkel tundub, et Network Manageri kasutades peaksime tunduvalt rohkem loogikat ise valmis kirjutama.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Läksime üle katsetustele päris masinas. Installeerisime nettopi peale Lubuntu Linuxi. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame modifitseerima badVPN-i, et saada tööle ka Wi-Fi ja 3G.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tulemus:&#039;&#039;&#039; NCD suudab prioriteedide alusel valida parima ühenduse wifi ja etherneti vahel. Hetkel aga on probleem wifi public võrkudega, nimelt ühendub wifi adapter ainult etteantud võrku. Tuleks kirjutada skript, mis otsib avatud wifi võrke. Alustasime ka mobiilse interneti lahendusega, kuid hetkel tunudb, et NCD seda võimalust ei toeta.&lt;br /&gt;
&lt;br /&gt;
====NCD konfiguratsioon====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cfm&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Example NCD program.&lt;br /&gt;
# All interfaces are disabled by default.&lt;br /&gt;
# Remove/comment the first line of a process to activate the interface.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
process ethernet1 {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and link.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Static configuration.&lt;br /&gt;
   # To use, comment/remove the DHCP configuration above and uncomment this.&lt;br /&gt;
   #var(&amp;quot;192.168.111.116&amp;quot;) addr;&lt;br /&gt;
   #var(&amp;quot;24&amp;quot;) addr_prefix;&lt;br /&gt;
   #var(&amp;quot;192.168.111.1&amp;quot;) gateway;&lt;br /&gt;
   #list(&amp;quot;192.168.111.14&amp;quot;, &amp;quot;193.2.1.66&amp;quot;) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-ethernet&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process eop  {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth2&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-eop&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process pp {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;ppp0&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   #var(dhcp.addr) addr;&lt;br /&gt;
   #var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   #var(dhcp.gateway) gateway;&lt;br /&gt;
   #var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   #net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-pp&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process wlan {&lt;br /&gt;
&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;wlan1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and rfkill.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.backend.rfkill(&amp;quot;wlan&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Connect to wireless network.&lt;br /&gt;
   list() args;&lt;br /&gt;
   net.backend.wpa_supplicant(dev, &amp;quot;/etc/wpa_supplicant/all.conf&amp;quot;, &amp;quot;/sbin/wpa_supplicant&amp;quot;, args);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration. See above for static configuration.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address to interface.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-wlan&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process NETCONF {&lt;br /&gt;
   # Wait for some network connection. Order by priority.&lt;br /&gt;
   list(&amp;quot;NET-wlan&amp;quot;, &amp;quot;NET-eop&amp;quot;, &amp;quot;NET-pp&amp;quot;, &amp;quot;NET-ethernet&amp;quot;) pnames;&lt;br /&gt;
   multidepend(pnames) ifdep;&lt;br /&gt;
   &lt;br /&gt;
   #if(pnames == &amp;quot;NET-pp&amp;quot;)&lt;br /&gt;
   &lt;br /&gt;
   var(ifdep.dev) dev;&lt;br /&gt;
   var(ifdep.addr) addr;&lt;br /&gt;
   var(ifdep.addr_prefix) addr_prefix;&lt;br /&gt;
   var(ifdep.gateway) gateway;&lt;br /&gt;
   var(ifdep.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Add default route.&lt;br /&gt;
   net.ipv4.route(&amp;quot;0.0.0.0&amp;quot;, &amp;quot;0&amp;quot;, gateway, &amp;quot;20&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Configure DNS servers.&lt;br /&gt;
   net.dns(dns_servers, &amp;quot;20&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Teisipäev 27.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039; &lt;br /&gt;
* Saada valmis prioritiseerimine&lt;br /&gt;
* Kirjutada skript, mis otsiks avatud wifi võrke&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Alustada logimisega ning androidi rakenduse kirjutamisega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hakkame lähemalt uurima Network Manageri alternatiivina, sest badVPN-il NCD ja 3G konfiguratsioonid satuvad konflikti, mis teeb 3G ühenduse initsialiseerimise keerukaks.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selgus lõplikult, et NCD-ga ei õnnestu meil töötavat 3G-ga funktsionaalsust luua.&lt;br /&gt;
Hakkasime ülesannet lahendama linuxi &#039;&#039;&#039;Network Manageri&#039;&#039;&#039; abil.&lt;br /&gt;
Network Manageris toimib vaikimisi võrkude prioritiseerimine, esialgu tundub et ei ole võimalik ise prioriteete määrata, ilma source koodi muutmata.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame uurima erinevaid võimalusi kuidas võrke Network manageriga prioritiseerida&#039;&#039;&lt;br /&gt;
Network Manageril on sisseehitatud kindlad prioriteedid ja selle raames toimib kõik väga hästi, aga probleem tekib sellestm et Network Manageris ei saa muuta prioriteete.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lahendus: hakkasime meetrikute alusel prioritiseerima routing tables erinevate ühenduste default route, mille tulemusena saame luua ühenduste prioriteetide järjekorra.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kirjutasime iga Interfacei üles ja allaminemise korral skriptid, mis lisavad ja kustutavad vastava default gateway ja metricuga routi IP route tabelist. &lt;br /&gt;
Default gateway saame kätte Network Manageri käsurea tööriista - &#039;&#039;&#039;nmcli&#039;&#039;&#039; päringu kaudu. Nmcli on kõige kiirem võimalus, sest kliendi poole pealt küsib DHCP infot Network Manager.&lt;br /&gt;
&lt;br /&gt;
====IF UP skript====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth1 metric 5&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth2 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth2 metric 2&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;wlan1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface wlan1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev wlan1 metric 3&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;ppp0&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface ttyUSB0 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev ppp0 metric 6&lt;br /&gt;
fi;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IF DOWN skript====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
sleep 3&lt;br /&gt;
ip route del default&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
sleep 3&lt;br /&gt;
ip route del default&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Kalmer hakkab uurima võimalusi kuidas teha androidi rakendust, millega saaks ühenduda bluetoothiga arvutiga ning konfigureerida võrgu prioriteete.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tegime skripti wifi jaoks, mis otsib kõik avalikud wifi võrgud, mis on läheduses ja koostab nende kohta individuaalfailid mida kasutab Network Maganager võrkudesse automaatseks ühendamiseks. &lt;br /&gt;
&lt;br /&gt;
==== Avalike wifi võrkude otsimise skript ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Autor: Tartu Rõõm&lt;br /&gt;
# Kirjeldus, mida skript teeb&lt;br /&gt;
##&lt;br /&gt;
# Versioon 1.0&lt;br /&gt;
&lt;br /&gt;
# Kontrollib kas juurkasutajana k2ivitati skript&lt;br /&gt;
export LC_ALL=C&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ $UID -ne 0  ]&lt;br /&gt;
then&lt;br /&gt;
  echo &amp;quot;K2ivita skript $(basename $0) juurkasutaja 6igustes&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
#Leiame arvuti wlan seadme mac aadressi&lt;br /&gt;
MAC=$(ifconfig | grep wlan | cut -d &amp;quot; &amp;quot; -f10)&lt;br /&gt;
echo &amp;quot;Arvuti mac: $MAC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Otsime avalikud võrgud&lt;br /&gt;
for line in $(nmcli -p dev wifi | grep [--] | grep s | cut -d &amp;quot;&#039;&amp;quot; -f2); do&lt;br /&gt;
      SSID=$line&lt;br /&gt;
&lt;br /&gt;
   #Suvaline arv UUID&lt;br /&gt;
   HEX=&amp;quot;0123456789abcdef&amp;quot;&lt;br /&gt;
   BEGIN=$( for i in {1..8} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KAKS=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KOLM=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   NELI=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   END=$( for i in {1..12} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   UUID=&amp;quot;$BEGIN-$KAKS-$KOLM-$NELI-$END&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   echo &amp;quot;SSID: $SSID&amp;quot;&lt;br /&gt;
&lt;br /&gt;
      # Loome igale access pointile ssid faili&lt;br /&gt;
      touch /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt; /etc/NetworkManager/system-connections/$SSID &amp;lt;&amp;lt; LOPP&lt;br /&gt;
&lt;br /&gt;
[connection]&lt;br /&gt;
id=$SSID&lt;br /&gt;
uuid=$UUID&lt;br /&gt;
type=802-11-wireless&lt;br /&gt;
&lt;br /&gt;
[802-11-wireless]&lt;br /&gt;
ssid=$SSID&lt;br /&gt;
mode=infrastructure&lt;br /&gt;
mac-address=$MAC&lt;br /&gt;
&lt;br /&gt;
[ipv6]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
[ipv4]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
LOPP&lt;br /&gt;
&lt;br /&gt;
      chmod 600 /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
#service network-manager restart&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kolmapäev 28.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Saada tööle 3G prioritiseerimine&lt;br /&gt;
* arendada Androidi rakendust&lt;br /&gt;
* Teha logimine&lt;br /&gt;
* Korrastada dokumentatsioon&lt;br /&gt;
* Valmistuda presentatsiooniks&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probleem&#039;&#039;&#039;&lt;br /&gt;
Vaikimisi 3G ühendus ei tule ise ülesse. Oleks vaja teada kuhu ja millal USB modem ühendatakse, Lisaks selle oleks vaja automaatlselt luua ühendus, mille alusel saaks kätte default gateway ning saaks teha sissekirjutuse routing tabelisse.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lahendus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Lisasime /lib/udev/rules.d/40-usb_modeswitch.rules faili RUN käsu järele skripti, mis vastava mudeli USB modemi korral initsialiseerib ühenduse.&lt;br /&gt;
&lt;br /&gt;
==== Mobiilse internetiühenduse automaatse loomise skript====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
sleep 30&lt;br /&gt;
nmcli con up id &amp;quot;EMT Default&amp;quot;&lt;br /&gt;
sleep 2&lt;br /&gt;
usb_modeswitch &#039;%b/%k&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46911</id>
		<title>Meeskond &quot;Tartu rõõm&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46911"/>
		<updated>2012-03-29T09:43:43Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* Kolmapäev 28.03.2012 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Liikmed ==&lt;br /&gt;
*Inger Romanenko&lt;br /&gt;
*Sander Saveli&lt;br /&gt;
*Sander Arnus&lt;br /&gt;
*Kalmer Tart&lt;br /&gt;
*Kristjan Rõõm&lt;br /&gt;
&lt;br /&gt;
==Meie eesmärk intensiivõppe raames==&lt;br /&gt;
&lt;br /&gt;
===Automaatne võrguühenduste konfigureerimine erinevate võrkudega===&lt;br /&gt;
&lt;br /&gt;
Konfigureerida arvuti, millel on 3G, Wifi, Ethernet-over-Powerline ja Etherneti pordid ning mille operatsioonisüsteemiks on Ubuntu Linux. Võrguühendust vahetataks ühenduse olemasolu ja prioriteetide alusel üle erinevate tehnoloogiate võimalikult lihtsalt ja kiirelt. IP aadress ei pea samaks jääma. Wifi adapter valib ise parima avaliku võrgu, kui ei ole konfigureeritud teisiti. Kui Wifi ühendus kaob, proovib teisi ka taustal. Kõik ümberlülitamised logitakse. Näiteks: Prioriteetideks on Ethernet:1; EoP:2; Wifi:3; 3G:4. Ühendatakse kõikidesse võimalikesse võrkudesse ning kui Ethernet ära kukub ning pole võimalik ühenduda ka läbi EoP, toimub ühenduse ümberlülitamine Wifi võrku. Kui Wifi ära kukub, siis ühendutakse 3G võrku. Kui tuleb suvaline public wifi tagasi, ühendutakse sinna jne. Luua lihtne kasutajaliides Android telefonile, mis lubab üle bluetooth ühenduse erinevaid võrke ja prioriteete konfigureerida ning vaadata ühenduste ajalugu.&lt;br /&gt;
&lt;br /&gt;
==Ajakava/progress==&lt;br /&gt;
=== Esmaspäev 26.03.2012 ===&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Tutvuda olukorraga ja tehnoloogiatega&lt;br /&gt;
* Kohtuda Ericssoni esindajaga, saada täpne ülevaade ülesandest.&lt;br /&gt;
* Panna paika algne tegevuskava.&lt;br /&gt;
&lt;br /&gt;
Küsimused Ericssonile:&lt;br /&gt;
* Kuidas teha vahet eop-l ja ethernetil?&lt;br /&gt;
* Mis tehnoloogiaid kasutada&lt;br /&gt;
* Miks selline ülesanne?&lt;br /&gt;
* Kus seda kasutama võidakse hakata?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Edusammud:&#039;&#039;&#039;&lt;br /&gt;
* Leidsime badVPN NCD http://code.google.com/p/badvpn/wiki/NCD, nimelise võrguhaldustarkvara ning proovime sellega prioritiseerida erinevaid võrguliideseid.&lt;br /&gt;
* Kohtusime Ericssoni esindajaga ning saime täpsema ülevaate ülesandest. Peame määrama ühendustele prioriteedid ning valima parima ühenduse liigi vastavalt prioriteedile. Wifi puhul peame ühenduma public wifisse ning kui on mitu erinevat võrku saadaval, proovima erinevaid. Võrgutegevust logitakse. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ericssonist saime katsetamiseks kaasa järgneva tehnika :&#039;&#039;&lt;br /&gt;
* nettop PC FIT-PC2&lt;br /&gt;
* 3G EMT mobiilse internetimodemi&lt;br /&gt;
* bluetooth adapteri&lt;br /&gt;
* ethernet over powerline seadmed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Küsimus:&#039;&#039;&#039; Kas kasutame enda leitud badVPN NCD-d või kasutame Linuxis vaikimisi töös olevat Network Manageri?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Materjalid badVPN NCD kohta:&#039;&#039;&#039;&lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/NCD &lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/Installation&lt;br /&gt;
&lt;br /&gt;
Tegime katseid virtualiseeritud keskkonnas. Hetkel suudab NCD prioriteetide alusel ühenduda erinevatesse ethernet liidestega. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Otsustasime enda leitud lahenduse kasuks, sest badVPN NCD teeb täpselt seda mis meil vaja - ühendub erinevatesse võrkudesse prioriteedide alusel.&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;Hetkel tundub, et Network Manageri kasutades peaksime tunduvalt rohkem loogikat ise valmis kirjutama.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Läksime üle katsetustele päris masinas. Installeerisime nettopi peale Lubuntu Linuxi. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame modifitseerima badVPN-i, et saada tööle ka Wi-Fi ja 3G.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tulemus:&#039;&#039;&#039; NCD suudab prioriteedide alusel valida parima ühenduse wifi ja etherneti vahel. Hetkel aga on probleem wifi public võrkudega, nimelt ühendub wifi adapter ainult etteantud võrku. Tuleks kirjutada skript, mis otsib avatud wifi võrke. Alustasime ka mobiilse interneti lahendusega, kuid hetkel tunudb, et NCD seda võimalust ei toeta.&lt;br /&gt;
&lt;br /&gt;
====NCD konfiguratsioon====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cfm&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Example NCD program.&lt;br /&gt;
# All interfaces are disabled by default.&lt;br /&gt;
# Remove/comment the first line of a process to activate the interface.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
process ethernet1 {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and link.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Static configuration.&lt;br /&gt;
   # To use, comment/remove the DHCP configuration above and uncomment this.&lt;br /&gt;
   #var(&amp;quot;192.168.111.116&amp;quot;) addr;&lt;br /&gt;
   #var(&amp;quot;24&amp;quot;) addr_prefix;&lt;br /&gt;
   #var(&amp;quot;192.168.111.1&amp;quot;) gateway;&lt;br /&gt;
   #list(&amp;quot;192.168.111.14&amp;quot;, &amp;quot;193.2.1.66&amp;quot;) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-ethernet&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process eop  {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth2&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-eop&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process pp {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;ppp0&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   #var(dhcp.addr) addr;&lt;br /&gt;
   #var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   #var(dhcp.gateway) gateway;&lt;br /&gt;
   #var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   #net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-pp&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process wlan {&lt;br /&gt;
&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;wlan1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and rfkill.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.backend.rfkill(&amp;quot;wlan&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Connect to wireless network.&lt;br /&gt;
   list() args;&lt;br /&gt;
   net.backend.wpa_supplicant(dev, &amp;quot;/etc/wpa_supplicant/all.conf&amp;quot;, &amp;quot;/sbin/wpa_supplicant&amp;quot;, args);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration. See above for static configuration.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address to interface.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-wlan&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process NETCONF {&lt;br /&gt;
   # Wait for some network connection. Order by priority.&lt;br /&gt;
   list(&amp;quot;NET-wlan&amp;quot;, &amp;quot;NET-eop&amp;quot;, &amp;quot;NET-pp&amp;quot;, &amp;quot;NET-ethernet&amp;quot;) pnames;&lt;br /&gt;
   multidepend(pnames) ifdep;&lt;br /&gt;
   &lt;br /&gt;
   #if(pnames == &amp;quot;NET-pp&amp;quot;)&lt;br /&gt;
   &lt;br /&gt;
   var(ifdep.dev) dev;&lt;br /&gt;
   var(ifdep.addr) addr;&lt;br /&gt;
   var(ifdep.addr_prefix) addr_prefix;&lt;br /&gt;
   var(ifdep.gateway) gateway;&lt;br /&gt;
   var(ifdep.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Add default route.&lt;br /&gt;
   net.ipv4.route(&amp;quot;0.0.0.0&amp;quot;, &amp;quot;0&amp;quot;, gateway, &amp;quot;20&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Configure DNS servers.&lt;br /&gt;
   net.dns(dns_servers, &amp;quot;20&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Teisipäev 27.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039; &lt;br /&gt;
* Saada valmis prioritiseerimine&lt;br /&gt;
* Kirjutada skript, mis otsiks avatud wifi võrke&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Alustada logimisega ning androidi rakenduse kirjutamisega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hakkame lähemalt uurima Network Manageri alternatiivina, sest badVPN-il NCD ja 3G konfiguratsioonid satuvad konflikti, mis teeb 3G ühenduse initsialiseerimise keerukaks.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selgus lõplikult, et NCD-ga ei õnnestu meil töötavat 3G-ga funktsionaalsust luua.&lt;br /&gt;
Hakkasime ülesannet lahendama linuxi &#039;&#039;&#039;Network Manageri&#039;&#039;&#039; abil.&lt;br /&gt;
Network Manageris toimib vaikimisi võrkude prioritiseerimine, esialgu tundub et ei ole võimalik ise prioriteete määrata, ilma source koodi muutmata.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame uurima erinevaid võimalusi kuidas võrke Network manageriga prioritiseerida&#039;&#039;&lt;br /&gt;
Network Manageril on sisseehitatud kindlad prioriteedid ja selle raames toimib kõik väga hästi, aga probleem tekib sellestm et Network Manageris ei saa muuta prioriteete.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lahendus: hakkasime meetrikute alusel prioritiseerima routing tables erinevate ühenduste default route, mille tulemusena saame luua ühenduste prioriteetide järjekorra.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kirjutasime iga Interfacei üles ja allaminemise korral skriptid, mis lisavad ja kustutavad vastava default gateway ja metricuga routi IP route tabelist. &lt;br /&gt;
Default gateway saame kätte Network Manageri käsurea tööriista - &#039;&#039;&#039;nmcli&#039;&#039;&#039; päringu kaudu. Nmcli on kõige kiirem võimalus, sest kliendi poole pealt küsib DHCP infot Network Manager.&lt;br /&gt;
&lt;br /&gt;
====IF UP skript====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth1 metric 5&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth2 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth2 metric 2&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;wlan1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface wlan1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev wlan1 metric 3&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;ppp0&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface ttyUSB0 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev ppp0 metric 6&lt;br /&gt;
fi;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IF DOWN skript====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
sleep 3&lt;br /&gt;
ip route del default&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
sleep 3&lt;br /&gt;
ip route del default&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Kalmer hakkab uurima võimalusi kuidas teha androidi rakendust, millega saaks ühenduda bluetoothiga arvutiga ning konfigureerida võrgu prioriteete.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tegime skripti wifi jaoks, mis otsib kõik avalikud wifi võrgud, mis on läheduses ja koostab nende kohta individuaalfailid mida kasutab Network Maganager võrkudesse automaatseks ühendamiseks. &lt;br /&gt;
&lt;br /&gt;
==== Avalike wifi võrkude otsimise skript ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Autor: Tartu Rõõm&lt;br /&gt;
# Kirjeldus, mida skript teeb&lt;br /&gt;
##&lt;br /&gt;
# Versioon 1.0&lt;br /&gt;
&lt;br /&gt;
# Kontrollib kas juurkasutajana k2ivitati skript&lt;br /&gt;
export LC_ALL=C&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ $UID -ne 0  ]&lt;br /&gt;
then&lt;br /&gt;
  echo &amp;quot;K2ivita skript $(basename $0) juurkasutaja 6igustes&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
#Leiame arvuti wlan seadme mac aadressi&lt;br /&gt;
MAC=$(ifconfig | grep wlan | cut -d &amp;quot; &amp;quot; -f10)&lt;br /&gt;
echo &amp;quot;Arvuti mac: $MAC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Otsime avalikud võrgud&lt;br /&gt;
for line in $(nmcli -p dev wifi | grep [--] | grep s | cut -d &amp;quot;&#039;&amp;quot; -f2); do&lt;br /&gt;
      SSID=$line&lt;br /&gt;
&lt;br /&gt;
   #Suvaline arv UUID&lt;br /&gt;
   HEX=&amp;quot;0123456789abcdef&amp;quot;&lt;br /&gt;
   BEGIN=$( for i in {1..8} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KAKS=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KOLM=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   NELI=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   END=$( for i in {1..12} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   UUID=&amp;quot;$BEGIN-$KAKS-$KOLM-$NELI-$END&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   echo &amp;quot;SSID: $SSID&amp;quot;&lt;br /&gt;
&lt;br /&gt;
      # Loome igale access pointile ssid faili&lt;br /&gt;
      touch /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt; /etc/NetworkManager/system-connections/$SSID &amp;lt;&amp;lt; LOPP&lt;br /&gt;
&lt;br /&gt;
[connection]&lt;br /&gt;
id=$SSID&lt;br /&gt;
uuid=$UUID&lt;br /&gt;
type=802-11-wireless&lt;br /&gt;
&lt;br /&gt;
[802-11-wireless]&lt;br /&gt;
ssid=$SSID&lt;br /&gt;
mode=infrastructure&lt;br /&gt;
mac-address=$MAC&lt;br /&gt;
&lt;br /&gt;
[ipv6]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
[ipv4]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
LOPP&lt;br /&gt;
&lt;br /&gt;
      chmod 600 /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
#service network-manager restart&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kolmapäev 28.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Saada tööle 3G prioritiseerimine&lt;br /&gt;
* arendada Androidi rakendust&lt;br /&gt;
* Teha logimine&lt;br /&gt;
* Korrastada dokumentatsioon&lt;br /&gt;
* Valmistuda presentatsiooniks&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Probleem&#039;&#039;&#039;&lt;br /&gt;
Vaikimisi 3G ühendus ei tule ise ülesse. Oleks vaja teada kuhu ja millal USB modem ühendatakse, Lisaks selle oleks vaja automaatlselt luua ühendus, mille alusel saaks kätte default gateway ning saaks teha sissekirjutuse routing tabelisse.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lahendus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Lisasime /lib/udev/rules.d/40-usb_modeswitch.rules faili RUN käsu järele skripti, mis vastava mudeli USB modemi korral initsialiseerib ühenduse.&lt;br /&gt;
&lt;br /&gt;
==== Mobiilse internetiühenduse automaatse loomise skript====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;basht&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
sleep 30&lt;br /&gt;
nmcli con up id &amp;quot;EMT Default&amp;quot;&lt;br /&gt;
sleep 2&lt;br /&gt;
usb_modeswitch &#039;%b/%k&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46910</id>
		<title>Meeskond &quot;Tartu rõõm&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46910"/>
		<updated>2012-03-29T09:30:39Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* IF up skript */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Liikmed ==&lt;br /&gt;
*Inger Romanenko&lt;br /&gt;
*Sander Saveli&lt;br /&gt;
*Sander Arnus&lt;br /&gt;
*Kalmer Tart&lt;br /&gt;
*Kristjan Rõõm&lt;br /&gt;
&lt;br /&gt;
==Meie eesmärk intensiivõppe raames==&lt;br /&gt;
&lt;br /&gt;
===Automaatne võrguühenduste konfigureerimine erinevate võrkudega===&lt;br /&gt;
&lt;br /&gt;
Konfigureerida arvuti, millel on 3G, Wifi, Ethernet-over-Powerline ja Etherneti pordid ning mille operatsioonisüsteemiks on Ubuntu Linux. Võrguühendust vahetataks ühenduse olemasolu ja prioriteetide alusel üle erinevate tehnoloogiate võimalikult lihtsalt ja kiirelt. IP aadress ei pea samaks jääma. Wifi adapter valib ise parima avaliku võrgu, kui ei ole konfigureeritud teisiti. Kui Wifi ühendus kaob, proovib teisi ka taustal. Kõik ümberlülitamised logitakse. Näiteks: Prioriteetideks on Ethernet:1; EoP:2; Wifi:3; 3G:4. Ühendatakse kõikidesse võimalikesse võrkudesse ning kui Ethernet ära kukub ning pole võimalik ühenduda ka läbi EoP, toimub ühenduse ümberlülitamine Wifi võrku. Kui Wifi ära kukub, siis ühendutakse 3G võrku. Kui tuleb suvaline public wifi tagasi, ühendutakse sinna jne. Luua lihtne kasutajaliides Android telefonile, mis lubab üle bluetooth ühenduse erinevaid võrke ja prioriteete konfigureerida ning vaadata ühenduste ajalugu.&lt;br /&gt;
&lt;br /&gt;
==Ajakava/progress==&lt;br /&gt;
=== Esmaspäev 26.03.2012 ===&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Tutvuda olukorraga ja tehnoloogiatega&lt;br /&gt;
* Kohtuda Ericssoni esindajaga, saada täpne ülevaade ülesandest.&lt;br /&gt;
* Panna paika algne tegevuskava.&lt;br /&gt;
&lt;br /&gt;
Küsimused Ericssonile:&lt;br /&gt;
* Kuidas teha vahet eop-l ja ethernetil?&lt;br /&gt;
* Mis tehnoloogiaid kasutada&lt;br /&gt;
* Miks selline ülesanne?&lt;br /&gt;
* Kus seda kasutama võidakse hakata?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Edusammud:&#039;&#039;&#039;&lt;br /&gt;
* Leidsime badVPN NCD http://code.google.com/p/badvpn/wiki/NCD, nimelise võrguhaldustarkvara ning proovime sellega prioritiseerida erinevaid võrguliideseid.&lt;br /&gt;
* Kohtusime Ericssoni esindajaga ning saime täpsema ülevaate ülesandest. Peame määrama ühendustele prioriteedid ning valima parima ühenduse liigi vastavalt prioriteedile. Wifi puhul peame ühenduma public wifisse ning kui on mitu erinevat võrku saadaval, proovima erinevaid. Võrgutegevust logitakse. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ericssonist saime katsetamiseks kaasa järgneva tehnika :&#039;&#039;&lt;br /&gt;
* nettop PC FIT-PC2&lt;br /&gt;
* 3G EMT mobiilse internetimodemi&lt;br /&gt;
* bluetooth adapteri&lt;br /&gt;
* ethernet over powerline seadmed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Küsimus:&#039;&#039;&#039; Kas kasutame enda leitud badVPN NCD-d või kasutame Linuxis vaikimisi töös olevat Network Manageri?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Materjalid badVPN NCD kohta:&#039;&#039;&#039;&lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/NCD &lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/Installation&lt;br /&gt;
&lt;br /&gt;
Tegime katseid virtualiseeritud keskkonnas. Hetkel suudab NCD prioriteetide alusel ühenduda erinevatesse ethernet liidestega. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Otsustasime enda leitud lahenduse kasuks, sest badVPN NCD teeb täpselt seda mis meil vaja - ühendub erinevatesse võrkudesse prioriteedide alusel.&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;Hetkel tundub, et Network Manageri kasutades peaksime tunduvalt rohkem loogikat ise valmis kirjutama.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Läksime üle katsetustele päris masinas. Installeerisime nettopi peale Lubuntu Linuxi. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame modifitseerima badVPN-i, et saada tööle ka Wi-Fi ja 3G.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tulemus:&#039;&#039;&#039; NCD suudab prioriteedide alusel valida parima ühenduse wifi ja etherneti vahel. Hetkel aga on probleem wifi public võrkudega, nimelt ühendub wifi adapter ainult etteantud võrku. Tuleks kirjutada skript, mis otsib avatud wifi võrke. Alustasime ka mobiilse interneti lahendusega, kuid hetkel tunudb, et NCD seda võimalust ei toeta.&lt;br /&gt;
&lt;br /&gt;
====NCD konfiguratsioon====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cfm&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Example NCD program.&lt;br /&gt;
# All interfaces are disabled by default.&lt;br /&gt;
# Remove/comment the first line of a process to activate the interface.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
process ethernet1 {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and link.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Static configuration.&lt;br /&gt;
   # To use, comment/remove the DHCP configuration above and uncomment this.&lt;br /&gt;
   #var(&amp;quot;192.168.111.116&amp;quot;) addr;&lt;br /&gt;
   #var(&amp;quot;24&amp;quot;) addr_prefix;&lt;br /&gt;
   #var(&amp;quot;192.168.111.1&amp;quot;) gateway;&lt;br /&gt;
   #list(&amp;quot;192.168.111.14&amp;quot;, &amp;quot;193.2.1.66&amp;quot;) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-ethernet&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process eop  {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth2&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-eop&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process pp {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;ppp0&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   #var(dhcp.addr) addr;&lt;br /&gt;
   #var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   #var(dhcp.gateway) gateway;&lt;br /&gt;
   #var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   #net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-pp&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process wlan {&lt;br /&gt;
&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;wlan1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and rfkill.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.backend.rfkill(&amp;quot;wlan&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Connect to wireless network.&lt;br /&gt;
   list() args;&lt;br /&gt;
   net.backend.wpa_supplicant(dev, &amp;quot;/etc/wpa_supplicant/all.conf&amp;quot;, &amp;quot;/sbin/wpa_supplicant&amp;quot;, args);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration. See above for static configuration.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address to interface.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-wlan&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process NETCONF {&lt;br /&gt;
   # Wait for some network connection. Order by priority.&lt;br /&gt;
   list(&amp;quot;NET-wlan&amp;quot;, &amp;quot;NET-eop&amp;quot;, &amp;quot;NET-pp&amp;quot;, &amp;quot;NET-ethernet&amp;quot;) pnames;&lt;br /&gt;
   multidepend(pnames) ifdep;&lt;br /&gt;
   &lt;br /&gt;
   #if(pnames == &amp;quot;NET-pp&amp;quot;)&lt;br /&gt;
   &lt;br /&gt;
   var(ifdep.dev) dev;&lt;br /&gt;
   var(ifdep.addr) addr;&lt;br /&gt;
   var(ifdep.addr_prefix) addr_prefix;&lt;br /&gt;
   var(ifdep.gateway) gateway;&lt;br /&gt;
   var(ifdep.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Add default route.&lt;br /&gt;
   net.ipv4.route(&amp;quot;0.0.0.0&amp;quot;, &amp;quot;0&amp;quot;, gateway, &amp;quot;20&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Configure DNS servers.&lt;br /&gt;
   net.dns(dns_servers, &amp;quot;20&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Teisipäev 27.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039; &lt;br /&gt;
* Saada valmis prioritiseerimine&lt;br /&gt;
* Kirjutada skript, mis otsiks avatud wifi võrke&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Alustada logimisega ning androidi rakenduse kirjutamisega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hakkame lähemalt uurima Network Manageri alternatiivina, sest badVPN-il NCD ja 3G konfiguratsioonid satuvad konflikti, mis teeb 3G ühenduse initsialiseerimise keerukaks.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selgus lõplikult, et NCD-ga ei õnnestu meil töötavat 3G-ga funktsionaalsust luua.&lt;br /&gt;
Hakkasime ülesannet lahendama linuxi &#039;&#039;&#039;Network Manageri&#039;&#039;&#039; abil.&lt;br /&gt;
Network Manageris toimib vaikimisi võrkude prioritiseerimine, esialgu tundub et ei ole võimalik ise prioriteete määrata, ilma source koodi muutmata.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame uurima erinevaid võimalusi kuidas võrke Network manageriga prioritiseerida&#039;&#039;&lt;br /&gt;
Network Manageril on sisseehitatud kindlad prioriteedid ja selle raames toimib kõik väga hästi, aga probleem tekib sellestm et Network Manageris ei saa muuta prioriteete.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lahendus: hakkasime meetrikute alusel prioritiseerima routing tables erinevate ühenduste default route, mille tulemusena saame luua ühenduste prioriteetide järjekorra.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kirjutasime iga Interfacei üles ja allaminemise korral skriptid, mis lisavad ja kustutavad vastava default gateway ja metricuga routi IP route tabelist. &lt;br /&gt;
Default gateway saame kätte Network Manageri käsurea tööriista - &#039;&#039;&#039;nmcli&#039;&#039;&#039; päringu kaudu. Nmcli on kõige kiirem võimalus, sest kliendi poole pealt küsib DHCP infot Network Manager.&lt;br /&gt;
&lt;br /&gt;
====IF UP skript====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth1 metric 5&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth2 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth2 metric 2&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;wlan1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface wlan1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev wlan1 metric 3&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;ppp0&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface ttyUSB0 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev ppp0 metric 6&lt;br /&gt;
fi;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IF DOWN skript====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
sleep 3&lt;br /&gt;
ip route del default&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
sleep 3&lt;br /&gt;
ip route del default&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Kalmer hakkab uurima võimalusi kuidas teha androidi rakendust, millega saaks ühenduda bluetoothiga arvutiga ning konfigureerida võrgu prioriteete.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tegime skripti wifi jaoks, mis otsib kõik avalikud wifi võrgud, mis on läheduses ja koostab nende kohta individuaalfailid mida kasutab Network Maganager võrkudesse automaatseks ühendamiseks. &lt;br /&gt;
&lt;br /&gt;
==== Avalike wifi võrkude otsimise skript ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Autor: Tartu Rõõm&lt;br /&gt;
# Kirjeldus, mida skript teeb&lt;br /&gt;
##&lt;br /&gt;
# Versioon 1.0&lt;br /&gt;
&lt;br /&gt;
# Kontrollib kas juurkasutajana k2ivitati skript&lt;br /&gt;
export LC_ALL=C&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ $UID -ne 0  ]&lt;br /&gt;
then&lt;br /&gt;
  echo &amp;quot;K2ivita skript $(basename $0) juurkasutaja 6igustes&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
#Leiame arvuti wlan seadme mac aadressi&lt;br /&gt;
MAC=$(ifconfig | grep wlan | cut -d &amp;quot; &amp;quot; -f10)&lt;br /&gt;
echo &amp;quot;Arvuti mac: $MAC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Otsime avalikud võrgud&lt;br /&gt;
for line in $(nmcli -p dev wifi | grep [--] | grep s | cut -d &amp;quot;&#039;&amp;quot; -f2); do&lt;br /&gt;
      SSID=$line&lt;br /&gt;
&lt;br /&gt;
   #Suvaline arv UUID&lt;br /&gt;
   HEX=&amp;quot;0123456789abcdef&amp;quot;&lt;br /&gt;
   BEGIN=$( for i in {1..8} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KAKS=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KOLM=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   NELI=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   END=$( for i in {1..12} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   UUID=&amp;quot;$BEGIN-$KAKS-$KOLM-$NELI-$END&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   echo &amp;quot;SSID: $SSID&amp;quot;&lt;br /&gt;
&lt;br /&gt;
      # Loome igale access pointile ssid faili&lt;br /&gt;
      touch /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt; /etc/NetworkManager/system-connections/$SSID &amp;lt;&amp;lt; LOPP&lt;br /&gt;
&lt;br /&gt;
[connection]&lt;br /&gt;
id=$SSID&lt;br /&gt;
uuid=$UUID&lt;br /&gt;
type=802-11-wireless&lt;br /&gt;
&lt;br /&gt;
[802-11-wireless]&lt;br /&gt;
ssid=$SSID&lt;br /&gt;
mode=infrastructure&lt;br /&gt;
mac-address=$MAC&lt;br /&gt;
&lt;br /&gt;
[ipv6]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
[ipv4]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
LOPP&lt;br /&gt;
&lt;br /&gt;
      chmod 600 /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
#service network-manager restart&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kolmapäev 28.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Teha bluetooth ühendus&lt;br /&gt;
* Teha logimine&lt;br /&gt;
* Korrastada dokumentatsioon&lt;br /&gt;
* Valmistuda presentatsiooniks&lt;br /&gt;
&lt;br /&gt;
Vaikimisi 3G ühendus, tuleb üles liiga hilja. Ei saa kätte default gateway infot piisavalt kiiresti ja tänu sellele routing tablesse ei kirjutata default routei. Et saada kiiremini kätte 3g default gateway kirjutasime skripti, mis leiab 3g seadme ja loob ise ühenduse.&lt;br /&gt;
SKRIPT&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46909</id>
		<title>Meeskond &quot;Tartu rõõm&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46909"/>
		<updated>2012-03-29T09:29:56Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* IF DOWN skript */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Liikmed ==&lt;br /&gt;
*Inger Romanenko&lt;br /&gt;
*Sander Saveli&lt;br /&gt;
*Sander Arnus&lt;br /&gt;
*Kalmer Tart&lt;br /&gt;
*Kristjan Rõõm&lt;br /&gt;
&lt;br /&gt;
==Meie eesmärk intensiivõppe raames==&lt;br /&gt;
&lt;br /&gt;
===Automaatne võrguühenduste konfigureerimine erinevate võrkudega===&lt;br /&gt;
&lt;br /&gt;
Konfigureerida arvuti, millel on 3G, Wifi, Ethernet-over-Powerline ja Etherneti pordid ning mille operatsioonisüsteemiks on Ubuntu Linux. Võrguühendust vahetataks ühenduse olemasolu ja prioriteetide alusel üle erinevate tehnoloogiate võimalikult lihtsalt ja kiirelt. IP aadress ei pea samaks jääma. Wifi adapter valib ise parima avaliku võrgu, kui ei ole konfigureeritud teisiti. Kui Wifi ühendus kaob, proovib teisi ka taustal. Kõik ümberlülitamised logitakse. Näiteks: Prioriteetideks on Ethernet:1; EoP:2; Wifi:3; 3G:4. Ühendatakse kõikidesse võimalikesse võrkudesse ning kui Ethernet ära kukub ning pole võimalik ühenduda ka läbi EoP, toimub ühenduse ümberlülitamine Wifi võrku. Kui Wifi ära kukub, siis ühendutakse 3G võrku. Kui tuleb suvaline public wifi tagasi, ühendutakse sinna jne. Luua lihtne kasutajaliides Android telefonile, mis lubab üle bluetooth ühenduse erinevaid võrke ja prioriteete konfigureerida ning vaadata ühenduste ajalugu.&lt;br /&gt;
&lt;br /&gt;
==Ajakava/progress==&lt;br /&gt;
=== Esmaspäev 26.03.2012 ===&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Tutvuda olukorraga ja tehnoloogiatega&lt;br /&gt;
* Kohtuda Ericssoni esindajaga, saada täpne ülevaade ülesandest.&lt;br /&gt;
* Panna paika algne tegevuskava.&lt;br /&gt;
&lt;br /&gt;
Küsimused Ericssonile:&lt;br /&gt;
* Kuidas teha vahet eop-l ja ethernetil?&lt;br /&gt;
* Mis tehnoloogiaid kasutada&lt;br /&gt;
* Miks selline ülesanne?&lt;br /&gt;
* Kus seda kasutama võidakse hakata?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Edusammud:&#039;&#039;&#039;&lt;br /&gt;
* Leidsime badVPN NCD http://code.google.com/p/badvpn/wiki/NCD, nimelise võrguhaldustarkvara ning proovime sellega prioritiseerida erinevaid võrguliideseid.&lt;br /&gt;
* Kohtusime Ericssoni esindajaga ning saime täpsema ülevaate ülesandest. Peame määrama ühendustele prioriteedid ning valima parima ühenduse liigi vastavalt prioriteedile. Wifi puhul peame ühenduma public wifisse ning kui on mitu erinevat võrku saadaval, proovima erinevaid. Võrgutegevust logitakse. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ericssonist saime katsetamiseks kaasa järgneva tehnika :&#039;&#039;&lt;br /&gt;
* nettop PC FIT-PC2&lt;br /&gt;
* 3G EMT mobiilse internetimodemi&lt;br /&gt;
* bluetooth adapteri&lt;br /&gt;
* ethernet over powerline seadmed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Küsimus:&#039;&#039;&#039; Kas kasutame enda leitud badVPN NCD-d või kasutame Linuxis vaikimisi töös olevat Network Manageri?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Materjalid badVPN NCD kohta:&#039;&#039;&#039;&lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/NCD &lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/Installation&lt;br /&gt;
&lt;br /&gt;
Tegime katseid virtualiseeritud keskkonnas. Hetkel suudab NCD prioriteetide alusel ühenduda erinevatesse ethernet liidestega. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Otsustasime enda leitud lahenduse kasuks, sest badVPN NCD teeb täpselt seda mis meil vaja - ühendub erinevatesse võrkudesse prioriteedide alusel.&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;Hetkel tundub, et Network Manageri kasutades peaksime tunduvalt rohkem loogikat ise valmis kirjutama.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Läksime üle katsetustele päris masinas. Installeerisime nettopi peale Lubuntu Linuxi. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame modifitseerima badVPN-i, et saada tööle ka Wi-Fi ja 3G.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tulemus:&#039;&#039;&#039; NCD suudab prioriteedide alusel valida parima ühenduse wifi ja etherneti vahel. Hetkel aga on probleem wifi public võrkudega, nimelt ühendub wifi adapter ainult etteantud võrku. Tuleks kirjutada skript, mis otsib avatud wifi võrke. Alustasime ka mobiilse interneti lahendusega, kuid hetkel tunudb, et NCD seda võimalust ei toeta.&lt;br /&gt;
&lt;br /&gt;
====NCD konfiguratsioon====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cfm&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Example NCD program.&lt;br /&gt;
# All interfaces are disabled by default.&lt;br /&gt;
# Remove/comment the first line of a process to activate the interface.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
process ethernet1 {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and link.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Static configuration.&lt;br /&gt;
   # To use, comment/remove the DHCP configuration above and uncomment this.&lt;br /&gt;
   #var(&amp;quot;192.168.111.116&amp;quot;) addr;&lt;br /&gt;
   #var(&amp;quot;24&amp;quot;) addr_prefix;&lt;br /&gt;
   #var(&amp;quot;192.168.111.1&amp;quot;) gateway;&lt;br /&gt;
   #list(&amp;quot;192.168.111.14&amp;quot;, &amp;quot;193.2.1.66&amp;quot;) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-ethernet&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process eop  {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth2&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-eop&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process pp {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;ppp0&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   #var(dhcp.addr) addr;&lt;br /&gt;
   #var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   #var(dhcp.gateway) gateway;&lt;br /&gt;
   #var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   #net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-pp&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process wlan {&lt;br /&gt;
&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;wlan1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and rfkill.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.backend.rfkill(&amp;quot;wlan&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Connect to wireless network.&lt;br /&gt;
   list() args;&lt;br /&gt;
   net.backend.wpa_supplicant(dev, &amp;quot;/etc/wpa_supplicant/all.conf&amp;quot;, &amp;quot;/sbin/wpa_supplicant&amp;quot;, args);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration. See above for static configuration.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address to interface.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-wlan&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process NETCONF {&lt;br /&gt;
   # Wait for some network connection. Order by priority.&lt;br /&gt;
   list(&amp;quot;NET-wlan&amp;quot;, &amp;quot;NET-eop&amp;quot;, &amp;quot;NET-pp&amp;quot;, &amp;quot;NET-ethernet&amp;quot;) pnames;&lt;br /&gt;
   multidepend(pnames) ifdep;&lt;br /&gt;
   &lt;br /&gt;
   #if(pnames == &amp;quot;NET-pp&amp;quot;)&lt;br /&gt;
   &lt;br /&gt;
   var(ifdep.dev) dev;&lt;br /&gt;
   var(ifdep.addr) addr;&lt;br /&gt;
   var(ifdep.addr_prefix) addr_prefix;&lt;br /&gt;
   var(ifdep.gateway) gateway;&lt;br /&gt;
   var(ifdep.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Add default route.&lt;br /&gt;
   net.ipv4.route(&amp;quot;0.0.0.0&amp;quot;, &amp;quot;0&amp;quot;, gateway, &amp;quot;20&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Configure DNS servers.&lt;br /&gt;
   net.dns(dns_servers, &amp;quot;20&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Teisipäev 27.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039; &lt;br /&gt;
* Saada valmis prioritiseerimine&lt;br /&gt;
* Kirjutada skript, mis otsiks avatud wifi võrke&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Alustada logimisega ning androidi rakenduse kirjutamisega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hakkame lähemalt uurima Network Manageri alternatiivina, sest badVPN-il NCD ja 3G konfiguratsioonid satuvad konflikti, mis teeb 3G ühenduse initsialiseerimise keerukaks.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selgus lõplikult, et NCD-ga ei õnnestu meil töötavat 3G-ga funktsionaalsust luua.&lt;br /&gt;
Hakkasime ülesannet lahendama linuxi &#039;&#039;&#039;Network Manageri&#039;&#039;&#039; abil.&lt;br /&gt;
Network Manageris toimib vaikimisi võrkude prioritiseerimine, esialgu tundub et ei ole võimalik ise prioriteete määrata, ilma source koodi muutmata.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame uurima erinevaid võimalusi kuidas võrke Network manageriga prioritiseerida&#039;&#039;&lt;br /&gt;
Network Manageril on sisseehitatud kindlad prioriteedid ja selle raames toimib kõik väga hästi, aga probleem tekib sellestm et Network Manageris ei saa muuta prioriteete.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lahendus: hakkasime meetrikute alusel prioritiseerima routing tables erinevate ühenduste default route, mille tulemusena saame luua ühenduste prioriteetide järjekorra.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kirjutasime iga Interfacei üles ja allaminemise korral skriptid, mis lisavad ja kustutavad vastava default gateway ja metricuga routi IP route tabelist. &lt;br /&gt;
Default gateway saame kätte Network Manageri käsurea tööriista - &#039;&#039;&#039;nmcli&#039;&#039;&#039; päringu kaudu. Nmcli on kõige kiirem võimalus, sest kliendi poole pealt küsib DHCP infot Network Manager.&lt;br /&gt;
&lt;br /&gt;
====IF UP skript====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth1 metric 5&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth2 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth2 metric 2&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;wlan1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface wlan1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev wlan1 metric 3&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;ppp0&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface ttyUSB0 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev ppp0 metric 6&lt;br /&gt;
fi;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IF DOWN skript====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
sleep 3&lt;br /&gt;
ip route del default&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
sleep 3&lt;br /&gt;
ip route del default&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Kalmer hakkab uurima võimalusi kuidas teha androidi rakendust, millega saaks ühenduda bluetoothiga arvutiga ning konfigureerida võrgu prioriteete.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tegime skripti wifi jaoks, mis otsib kõik avalikud wifi võrgud, mis on läheduses ja koostab nende kohta individuaalfailid mida kasutab Network Maganager võrkudesse automaatseks ühendamiseks. &lt;br /&gt;
&lt;br /&gt;
==== Avalike wifi võrkude otsimise skript ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Autor: Tartu Rõõm&lt;br /&gt;
# Kirjeldus, mida skript teeb&lt;br /&gt;
##&lt;br /&gt;
# Versioon 1.0&lt;br /&gt;
&lt;br /&gt;
# Kontrollib kas juurkasutajana k2ivitati skript&lt;br /&gt;
export LC_ALL=C&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ $UID -ne 0  ]&lt;br /&gt;
then&lt;br /&gt;
  echo &amp;quot;K2ivita skript $(basename $0) juurkasutaja 6igustes&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
#Leiame arvuti wlan seadme mac aadressi&lt;br /&gt;
MAC=$(ifconfig | grep wlan | cut -d &amp;quot; &amp;quot; -f10)&lt;br /&gt;
echo &amp;quot;Arvuti mac: $MAC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Otsime avalikud võrgud&lt;br /&gt;
for line in $(nmcli -p dev wifi | grep [--] | grep s | cut -d &amp;quot;&#039;&amp;quot; -f2); do&lt;br /&gt;
      SSID=$line&lt;br /&gt;
&lt;br /&gt;
   #Suvaline arv UUID&lt;br /&gt;
   HEX=&amp;quot;0123456789abcdef&amp;quot;&lt;br /&gt;
   BEGIN=$( for i in {1..8} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KAKS=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KOLM=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   NELI=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   END=$( for i in {1..12} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   UUID=&amp;quot;$BEGIN-$KAKS-$KOLM-$NELI-$END&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   echo &amp;quot;SSID: $SSID&amp;quot;&lt;br /&gt;
&lt;br /&gt;
      # Loome igale access pointile ssid faili&lt;br /&gt;
      touch /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt; /etc/NetworkManager/system-connections/$SSID &amp;lt;&amp;lt; LOPP&lt;br /&gt;
&lt;br /&gt;
[connection]&lt;br /&gt;
id=$SSID&lt;br /&gt;
uuid=$UUID&lt;br /&gt;
type=802-11-wireless&lt;br /&gt;
&lt;br /&gt;
[802-11-wireless]&lt;br /&gt;
ssid=$SSID&lt;br /&gt;
mode=infrastructure&lt;br /&gt;
mac-address=$MAC&lt;br /&gt;
&lt;br /&gt;
[ipv6]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
[ipv4]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
LOPP&lt;br /&gt;
&lt;br /&gt;
      chmod 600 /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
#service network-manager restart&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==IF up skript==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source = lang&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth1 metric 5&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth2 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth2 metric 2&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;wlan1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface wlan1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev wlan1 metric 3&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;ppp0&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface ttyUSB0 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev ppp0 metric 6&lt;br /&gt;
fi;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Kolmapäev 28.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Teha bluetooth ühendus&lt;br /&gt;
* Teha logimine&lt;br /&gt;
* Korrastada dokumentatsioon&lt;br /&gt;
* Valmistuda presentatsiooniks&lt;br /&gt;
&lt;br /&gt;
Vaikimisi 3G ühendus, tuleb üles liiga hilja. Ei saa kätte default gateway infot piisavalt kiiresti ja tänu sellele routing tablesse ei kirjutata default routei. Et saada kiiremini kätte 3g default gateway kirjutasime skripti, mis leiab 3g seadme ja loob ise ühenduse.&lt;br /&gt;
SKRIPT&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46908</id>
		<title>Meeskond &quot;Tartu rõõm&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46908"/>
		<updated>2012-03-29T09:25:18Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* = IF DOWN skript */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Liikmed ==&lt;br /&gt;
*Inger Romanenko&lt;br /&gt;
*Sander Saveli&lt;br /&gt;
*Sander Arnus&lt;br /&gt;
*Kalmer Tart&lt;br /&gt;
*Kristjan Rõõm&lt;br /&gt;
&lt;br /&gt;
==Meie eesmärk intensiivõppe raames==&lt;br /&gt;
&lt;br /&gt;
===Automaatne võrguühenduste konfigureerimine erinevate võrkudega===&lt;br /&gt;
&lt;br /&gt;
Konfigureerida arvuti, millel on 3G, Wifi, Ethernet-over-Powerline ja Etherneti pordid ning mille operatsioonisüsteemiks on Ubuntu Linux. Võrguühendust vahetataks ühenduse olemasolu ja prioriteetide alusel üle erinevate tehnoloogiate võimalikult lihtsalt ja kiirelt. IP aadress ei pea samaks jääma. Wifi adapter valib ise parima avaliku võrgu, kui ei ole konfigureeritud teisiti. Kui Wifi ühendus kaob, proovib teisi ka taustal. Kõik ümberlülitamised logitakse. Näiteks: Prioriteetideks on Ethernet:1; EoP:2; Wifi:3; 3G:4. Ühendatakse kõikidesse võimalikesse võrkudesse ning kui Ethernet ära kukub ning pole võimalik ühenduda ka läbi EoP, toimub ühenduse ümberlülitamine Wifi võrku. Kui Wifi ära kukub, siis ühendutakse 3G võrku. Kui tuleb suvaline public wifi tagasi, ühendutakse sinna jne. Luua lihtne kasutajaliides Android telefonile, mis lubab üle bluetooth ühenduse erinevaid võrke ja prioriteete konfigureerida ning vaadata ühenduste ajalugu.&lt;br /&gt;
&lt;br /&gt;
==Ajakava/progress==&lt;br /&gt;
=== Esmaspäev 26.03.2012 ===&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Tutvuda olukorraga ja tehnoloogiatega&lt;br /&gt;
* Kohtuda Ericssoni esindajaga, saada täpne ülevaade ülesandest.&lt;br /&gt;
* Panna paika algne tegevuskava.&lt;br /&gt;
&lt;br /&gt;
Küsimused Ericssonile:&lt;br /&gt;
* Kuidas teha vahet eop-l ja ethernetil?&lt;br /&gt;
* Mis tehnoloogiaid kasutada&lt;br /&gt;
* Miks selline ülesanne?&lt;br /&gt;
* Kus seda kasutama võidakse hakata?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Edusammud:&#039;&#039;&#039;&lt;br /&gt;
* Leidsime badVPN NCD http://code.google.com/p/badvpn/wiki/NCD, nimelise võrguhaldustarkvara ning proovime sellega prioritiseerida erinevaid võrguliideseid.&lt;br /&gt;
* Kohtusime Ericssoni esindajaga ning saime täpsema ülevaate ülesandest. Peame määrama ühendustele prioriteedid ning valima parima ühenduse liigi vastavalt prioriteedile. Wifi puhul peame ühenduma public wifisse ning kui on mitu erinevat võrku saadaval, proovima erinevaid. Võrgutegevust logitakse. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ericssonist saime katsetamiseks kaasa järgneva tehnika :&#039;&#039;&lt;br /&gt;
* nettop PC FIT-PC2&lt;br /&gt;
* 3G EMT mobiilse internetimodemi&lt;br /&gt;
* bluetooth adapteri&lt;br /&gt;
* ethernet over powerline seadmed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Küsimus:&#039;&#039;&#039; Kas kasutame enda leitud badVPN NCD-d või kasutame Linuxis vaikimisi töös olevat Network Manageri?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Materjalid badVPN NCD kohta:&#039;&#039;&#039;&lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/NCD &lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/Installation&lt;br /&gt;
&lt;br /&gt;
Tegime katseid virtualiseeritud keskkonnas. Hetkel suudab NCD prioriteetide alusel ühenduda erinevatesse ethernet liidestega. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Otsustasime enda leitud lahenduse kasuks, sest badVPN NCD teeb täpselt seda mis meil vaja - ühendub erinevatesse võrkudesse prioriteedide alusel.&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;Hetkel tundub, et Network Manageri kasutades peaksime tunduvalt rohkem loogikat ise valmis kirjutama.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Läksime üle katsetustele päris masinas. Installeerisime nettopi peale Lubuntu Linuxi. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame modifitseerima badVPN-i, et saada tööle ka Wi-Fi ja 3G.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tulemus:&#039;&#039;&#039; NCD suudab prioriteedide alusel valida parima ühenduse wifi ja etherneti vahel. Hetkel aga on probleem wifi public võrkudega, nimelt ühendub wifi adapter ainult etteantud võrku. Tuleks kirjutada skript, mis otsib avatud wifi võrke. Alustasime ka mobiilse interneti lahendusega, kuid hetkel tunudb, et NCD seda võimalust ei toeta.&lt;br /&gt;
&lt;br /&gt;
====NCD konfiguratsioon====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cfm&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Example NCD program.&lt;br /&gt;
# All interfaces are disabled by default.&lt;br /&gt;
# Remove/comment the first line of a process to activate the interface.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
process ethernet1 {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and link.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Static configuration.&lt;br /&gt;
   # To use, comment/remove the DHCP configuration above and uncomment this.&lt;br /&gt;
   #var(&amp;quot;192.168.111.116&amp;quot;) addr;&lt;br /&gt;
   #var(&amp;quot;24&amp;quot;) addr_prefix;&lt;br /&gt;
   #var(&amp;quot;192.168.111.1&amp;quot;) gateway;&lt;br /&gt;
   #list(&amp;quot;192.168.111.14&amp;quot;, &amp;quot;193.2.1.66&amp;quot;) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-ethernet&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process eop  {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth2&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-eop&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process pp {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;ppp0&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   #var(dhcp.addr) addr;&lt;br /&gt;
   #var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   #var(dhcp.gateway) gateway;&lt;br /&gt;
   #var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   #net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-pp&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process wlan {&lt;br /&gt;
&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;wlan1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and rfkill.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.backend.rfkill(&amp;quot;wlan&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Connect to wireless network.&lt;br /&gt;
   list() args;&lt;br /&gt;
   net.backend.wpa_supplicant(dev, &amp;quot;/etc/wpa_supplicant/all.conf&amp;quot;, &amp;quot;/sbin/wpa_supplicant&amp;quot;, args);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration. See above for static configuration.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address to interface.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-wlan&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process NETCONF {&lt;br /&gt;
   # Wait for some network connection. Order by priority.&lt;br /&gt;
   list(&amp;quot;NET-wlan&amp;quot;, &amp;quot;NET-eop&amp;quot;, &amp;quot;NET-pp&amp;quot;, &amp;quot;NET-ethernet&amp;quot;) pnames;&lt;br /&gt;
   multidepend(pnames) ifdep;&lt;br /&gt;
   &lt;br /&gt;
   #if(pnames == &amp;quot;NET-pp&amp;quot;)&lt;br /&gt;
   &lt;br /&gt;
   var(ifdep.dev) dev;&lt;br /&gt;
   var(ifdep.addr) addr;&lt;br /&gt;
   var(ifdep.addr_prefix) addr_prefix;&lt;br /&gt;
   var(ifdep.gateway) gateway;&lt;br /&gt;
   var(ifdep.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Add default route.&lt;br /&gt;
   net.ipv4.route(&amp;quot;0.0.0.0&amp;quot;, &amp;quot;0&amp;quot;, gateway, &amp;quot;20&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Configure DNS servers.&lt;br /&gt;
   net.dns(dns_servers, &amp;quot;20&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Teisipäev 27.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039; &lt;br /&gt;
* Saada valmis prioritiseerimine&lt;br /&gt;
* Kirjutada skript, mis otsiks avatud wifi võrke&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Alustada logimisega ning androidi rakenduse kirjutamisega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hakkame lähemalt uurima Network Manageri alternatiivina, sest badVPN-il NCD ja 3G konfiguratsioonid satuvad konflikti, mis teeb 3G ühenduse initsialiseerimise keerukaks.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selgus lõplikult, et NCD-ga ei õnnestu meil töötavat 3G-ga funktsionaalsust luua.&lt;br /&gt;
Hakkasime ülesannet lahendama linuxi &#039;&#039;&#039;Network Manageri&#039;&#039;&#039; abil.&lt;br /&gt;
Network Manageris toimib vaikimisi võrkude prioritiseerimine, esialgu tundub et ei ole võimalik ise prioriteete määrata, ilma source koodi muutmata.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame uurima erinevaid võimalusi kuidas võrke Network manageriga prioritiseerida&#039;&#039;&lt;br /&gt;
Network Manageril on sisseehitatud kindlad prioriteedid ja selle raames toimib kõik väga hästi, aga probleem tekib sellestm et Network Manageris ei saa muuta prioriteete.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lahendus: hakkasime meetrikute alusel prioritiseerima routing tables erinevate ühenduste default route, mille tulemusena saame luua ühenduste prioriteetide järjekorra.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kirjutasime iga Interfacei üles ja allaminemise korral skriptid, mis lisavad ja kustutavad vastava default gateway ja metricuga routi IP route tabelist. &lt;br /&gt;
Default gateway saame kätte Network Manageri käsurea tööriista - &#039;&#039;&#039;nmcli&#039;&#039;&#039; päringu kaudu. Nmcli on kõige kiirem võimalus, sest kliendi poole pealt küsib DHCP infot Network Manager.&lt;br /&gt;
&lt;br /&gt;
====IF UP skript====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth1 metric 5&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth2 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth2 metric 2&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;wlan1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface wlan1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev wlan1 metric 3&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;ppp0&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface ttyUSB0 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev ppp0 metric 6&lt;br /&gt;
fi;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IF DOWN skript====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
sleep 3&lt;br /&gt;
ip route del default&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
sleep 3&lt;br /&gt;
ip route del default&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kalmer hakkab uurima võimalusi kuidas teha androidi rakendust, millega saaks ühenduda bluetoothiga arvutiga ning konfigureerida võrgu prioriteete.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tegime skripti wifi jaoks, mis otsib kõik avalikud wifi võrgud, mis on läheduses ja koostab nende kohta individuaalfailid mida kasutab Network Maganager võrkudesse automaatseks ühendamiseks.&lt;br /&gt;
&lt;br /&gt;
==IF up skript==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source = lang&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth1 metric 5&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth2 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth2 metric 2&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;wlan1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface wlan1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev wlan1 metric 3&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;ppp0&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface ttyUSB0 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev ppp0 metric 6&lt;br /&gt;
fi;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Kolmapäev 28.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Teha bluetooth ühendus&lt;br /&gt;
* Teha logimine&lt;br /&gt;
* Korrastada dokumentatsioon&lt;br /&gt;
* Valmistuda presentatsiooniks&lt;br /&gt;
&lt;br /&gt;
Vaikimisi 3G ühendus, tuleb üles liiga hilja. Ei saa kätte default gateway infot piisavalt kiiresti ja tänu sellele routing tablesse ei kirjutata default routei. Et saada kiiremini kätte 3g default gateway kirjutasime skripti, mis leiab 3g seadme ja loob ise ühenduse.&lt;br /&gt;
SKRIPT&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46907</id>
		<title>Meeskond &quot;Tartu rõõm&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46907"/>
		<updated>2012-03-29T09:25:05Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* IF UP skript */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Liikmed ==&lt;br /&gt;
*Inger Romanenko&lt;br /&gt;
*Sander Saveli&lt;br /&gt;
*Sander Arnus&lt;br /&gt;
*Kalmer Tart&lt;br /&gt;
*Kristjan Rõõm&lt;br /&gt;
&lt;br /&gt;
==Meie eesmärk intensiivõppe raames==&lt;br /&gt;
&lt;br /&gt;
===Automaatne võrguühenduste konfigureerimine erinevate võrkudega===&lt;br /&gt;
&lt;br /&gt;
Konfigureerida arvuti, millel on 3G, Wifi, Ethernet-over-Powerline ja Etherneti pordid ning mille operatsioonisüsteemiks on Ubuntu Linux. Võrguühendust vahetataks ühenduse olemasolu ja prioriteetide alusel üle erinevate tehnoloogiate võimalikult lihtsalt ja kiirelt. IP aadress ei pea samaks jääma. Wifi adapter valib ise parima avaliku võrgu, kui ei ole konfigureeritud teisiti. Kui Wifi ühendus kaob, proovib teisi ka taustal. Kõik ümberlülitamised logitakse. Näiteks: Prioriteetideks on Ethernet:1; EoP:2; Wifi:3; 3G:4. Ühendatakse kõikidesse võimalikesse võrkudesse ning kui Ethernet ära kukub ning pole võimalik ühenduda ka läbi EoP, toimub ühenduse ümberlülitamine Wifi võrku. Kui Wifi ära kukub, siis ühendutakse 3G võrku. Kui tuleb suvaline public wifi tagasi, ühendutakse sinna jne. Luua lihtne kasutajaliides Android telefonile, mis lubab üle bluetooth ühenduse erinevaid võrke ja prioriteete konfigureerida ning vaadata ühenduste ajalugu.&lt;br /&gt;
&lt;br /&gt;
==Ajakava/progress==&lt;br /&gt;
=== Esmaspäev 26.03.2012 ===&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Tutvuda olukorraga ja tehnoloogiatega&lt;br /&gt;
* Kohtuda Ericssoni esindajaga, saada täpne ülevaade ülesandest.&lt;br /&gt;
* Panna paika algne tegevuskava.&lt;br /&gt;
&lt;br /&gt;
Küsimused Ericssonile:&lt;br /&gt;
* Kuidas teha vahet eop-l ja ethernetil?&lt;br /&gt;
* Mis tehnoloogiaid kasutada&lt;br /&gt;
* Miks selline ülesanne?&lt;br /&gt;
* Kus seda kasutama võidakse hakata?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Edusammud:&#039;&#039;&#039;&lt;br /&gt;
* Leidsime badVPN NCD http://code.google.com/p/badvpn/wiki/NCD, nimelise võrguhaldustarkvara ning proovime sellega prioritiseerida erinevaid võrguliideseid.&lt;br /&gt;
* Kohtusime Ericssoni esindajaga ning saime täpsema ülevaate ülesandest. Peame määrama ühendustele prioriteedid ning valima parima ühenduse liigi vastavalt prioriteedile. Wifi puhul peame ühenduma public wifisse ning kui on mitu erinevat võrku saadaval, proovima erinevaid. Võrgutegevust logitakse. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ericssonist saime katsetamiseks kaasa järgneva tehnika :&#039;&#039;&lt;br /&gt;
* nettop PC FIT-PC2&lt;br /&gt;
* 3G EMT mobiilse internetimodemi&lt;br /&gt;
* bluetooth adapteri&lt;br /&gt;
* ethernet over powerline seadmed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Küsimus:&#039;&#039;&#039; Kas kasutame enda leitud badVPN NCD-d või kasutame Linuxis vaikimisi töös olevat Network Manageri?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Materjalid badVPN NCD kohta:&#039;&#039;&#039;&lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/NCD &lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/Installation&lt;br /&gt;
&lt;br /&gt;
Tegime katseid virtualiseeritud keskkonnas. Hetkel suudab NCD prioriteetide alusel ühenduda erinevatesse ethernet liidestega. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Otsustasime enda leitud lahenduse kasuks, sest badVPN NCD teeb täpselt seda mis meil vaja - ühendub erinevatesse võrkudesse prioriteedide alusel.&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;Hetkel tundub, et Network Manageri kasutades peaksime tunduvalt rohkem loogikat ise valmis kirjutama.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Läksime üle katsetustele päris masinas. Installeerisime nettopi peale Lubuntu Linuxi. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame modifitseerima badVPN-i, et saada tööle ka Wi-Fi ja 3G.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tulemus:&#039;&#039;&#039; NCD suudab prioriteedide alusel valida parima ühenduse wifi ja etherneti vahel. Hetkel aga on probleem wifi public võrkudega, nimelt ühendub wifi adapter ainult etteantud võrku. Tuleks kirjutada skript, mis otsib avatud wifi võrke. Alustasime ka mobiilse interneti lahendusega, kuid hetkel tunudb, et NCD seda võimalust ei toeta.&lt;br /&gt;
&lt;br /&gt;
====NCD konfiguratsioon====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cfm&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Example NCD program.&lt;br /&gt;
# All interfaces are disabled by default.&lt;br /&gt;
# Remove/comment the first line of a process to activate the interface.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
process ethernet1 {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and link.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Static configuration.&lt;br /&gt;
   # To use, comment/remove the DHCP configuration above and uncomment this.&lt;br /&gt;
   #var(&amp;quot;192.168.111.116&amp;quot;) addr;&lt;br /&gt;
   #var(&amp;quot;24&amp;quot;) addr_prefix;&lt;br /&gt;
   #var(&amp;quot;192.168.111.1&amp;quot;) gateway;&lt;br /&gt;
   #list(&amp;quot;192.168.111.14&amp;quot;, &amp;quot;193.2.1.66&amp;quot;) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-ethernet&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process eop  {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth2&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-eop&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process pp {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;ppp0&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   #var(dhcp.addr) addr;&lt;br /&gt;
   #var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   #var(dhcp.gateway) gateway;&lt;br /&gt;
   #var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   #net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-pp&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process wlan {&lt;br /&gt;
&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;wlan1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and rfkill.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.backend.rfkill(&amp;quot;wlan&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Connect to wireless network.&lt;br /&gt;
   list() args;&lt;br /&gt;
   net.backend.wpa_supplicant(dev, &amp;quot;/etc/wpa_supplicant/all.conf&amp;quot;, &amp;quot;/sbin/wpa_supplicant&amp;quot;, args);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration. See above for static configuration.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address to interface.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-wlan&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process NETCONF {&lt;br /&gt;
   # Wait for some network connection. Order by priority.&lt;br /&gt;
   list(&amp;quot;NET-wlan&amp;quot;, &amp;quot;NET-eop&amp;quot;, &amp;quot;NET-pp&amp;quot;, &amp;quot;NET-ethernet&amp;quot;) pnames;&lt;br /&gt;
   multidepend(pnames) ifdep;&lt;br /&gt;
   &lt;br /&gt;
   #if(pnames == &amp;quot;NET-pp&amp;quot;)&lt;br /&gt;
   &lt;br /&gt;
   var(ifdep.dev) dev;&lt;br /&gt;
   var(ifdep.addr) addr;&lt;br /&gt;
   var(ifdep.addr_prefix) addr_prefix;&lt;br /&gt;
   var(ifdep.gateway) gateway;&lt;br /&gt;
   var(ifdep.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Add default route.&lt;br /&gt;
   net.ipv4.route(&amp;quot;0.0.0.0&amp;quot;, &amp;quot;0&amp;quot;, gateway, &amp;quot;20&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Configure DNS servers.&lt;br /&gt;
   net.dns(dns_servers, &amp;quot;20&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Teisipäev 27.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039; &lt;br /&gt;
* Saada valmis prioritiseerimine&lt;br /&gt;
* Kirjutada skript, mis otsiks avatud wifi võrke&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Alustada logimisega ning androidi rakenduse kirjutamisega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hakkame lähemalt uurima Network Manageri alternatiivina, sest badVPN-il NCD ja 3G konfiguratsioonid satuvad konflikti, mis teeb 3G ühenduse initsialiseerimise keerukaks.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selgus lõplikult, et NCD-ga ei õnnestu meil töötavat 3G-ga funktsionaalsust luua.&lt;br /&gt;
Hakkasime ülesannet lahendama linuxi &#039;&#039;&#039;Network Manageri&#039;&#039;&#039; abil.&lt;br /&gt;
Network Manageris toimib vaikimisi võrkude prioritiseerimine, esialgu tundub et ei ole võimalik ise prioriteete määrata, ilma source koodi muutmata.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame uurima erinevaid võimalusi kuidas võrke Network manageriga prioritiseerida&#039;&#039;&lt;br /&gt;
Network Manageril on sisseehitatud kindlad prioriteedid ja selle raames toimib kõik väga hästi, aga probleem tekib sellestm et Network Manageris ei saa muuta prioriteete.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lahendus: hakkasime meetrikute alusel prioritiseerima routing tables erinevate ühenduste default route, mille tulemusena saame luua ühenduste prioriteetide järjekorra.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kirjutasime iga Interfacei üles ja allaminemise korral skriptid, mis lisavad ja kustutavad vastava default gateway ja metricuga routi IP route tabelist. &lt;br /&gt;
Default gateway saame kätte Network Manageri käsurea tööriista - &#039;&#039;&#039;nmcli&#039;&#039;&#039; päringu kaudu. Nmcli on kõige kiirem võimalus, sest kliendi poole pealt küsib DHCP infot Network Manager.&lt;br /&gt;
&lt;br /&gt;
====IF UP skript====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth1 metric 5&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth2 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth2 metric 2&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;wlan1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface wlan1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev wlan1 metric 3&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;ppp0&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface ttyUSB0 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev ppp0 metric 6&lt;br /&gt;
fi;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IF DOWN skript===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
sleep 3&lt;br /&gt;
ip route del default&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
sleep 3&lt;br /&gt;
ip route del default&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kalmer hakkab uurima võimalusi kuidas teha androidi rakendust, millega saaks ühenduda bluetoothiga arvutiga ning konfigureerida võrgu prioriteete.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tegime skripti wifi jaoks, mis otsib kõik avalikud wifi võrgud, mis on läheduses ja koostab nende kohta individuaalfailid mida kasutab Network Maganager võrkudesse automaatseks ühendamiseks.&lt;br /&gt;
&lt;br /&gt;
==IF up skript==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source = lang&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth1 metric 5&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth2 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth2 metric 2&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;wlan1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface wlan1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev wlan1 metric 3&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;ppp0&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface ttyUSB0 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev ppp0 metric 6&lt;br /&gt;
fi;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Kolmapäev 28.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Teha bluetooth ühendus&lt;br /&gt;
* Teha logimine&lt;br /&gt;
* Korrastada dokumentatsioon&lt;br /&gt;
* Valmistuda presentatsiooniks&lt;br /&gt;
&lt;br /&gt;
Vaikimisi 3G ühendus, tuleb üles liiga hilja. Ei saa kätte default gateway infot piisavalt kiiresti ja tänu sellele routing tablesse ei kirjutata default routei. Et saada kiiremini kätte 3g default gateway kirjutasime skripti, mis leiab 3g seadme ja loob ise ühenduse.&lt;br /&gt;
SKRIPT&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46906</id>
		<title>Meeskond &quot;Tartu rõõm&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46906"/>
		<updated>2012-03-29T09:22:16Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* IF UP skript */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Liikmed ==&lt;br /&gt;
*Inger Romanenko&lt;br /&gt;
*Sander Saveli&lt;br /&gt;
*Sander Arnus&lt;br /&gt;
*Kalmer Tart&lt;br /&gt;
*Kristjan Rõõm&lt;br /&gt;
&lt;br /&gt;
==Meie eesmärk intensiivõppe raames==&lt;br /&gt;
&lt;br /&gt;
===Automaatne võrguühenduste konfigureerimine erinevate võrkudega===&lt;br /&gt;
&lt;br /&gt;
Konfigureerida arvuti, millel on 3G, Wifi, Ethernet-over-Powerline ja Etherneti pordid ning mille operatsioonisüsteemiks on Ubuntu Linux. Võrguühendust vahetataks ühenduse olemasolu ja prioriteetide alusel üle erinevate tehnoloogiate võimalikult lihtsalt ja kiirelt. IP aadress ei pea samaks jääma. Wifi adapter valib ise parima avaliku võrgu, kui ei ole konfigureeritud teisiti. Kui Wifi ühendus kaob, proovib teisi ka taustal. Kõik ümberlülitamised logitakse. Näiteks: Prioriteetideks on Ethernet:1; EoP:2; Wifi:3; 3G:4. Ühendatakse kõikidesse võimalikesse võrkudesse ning kui Ethernet ära kukub ning pole võimalik ühenduda ka läbi EoP, toimub ühenduse ümberlülitamine Wifi võrku. Kui Wifi ära kukub, siis ühendutakse 3G võrku. Kui tuleb suvaline public wifi tagasi, ühendutakse sinna jne. Luua lihtne kasutajaliides Android telefonile, mis lubab üle bluetooth ühenduse erinevaid võrke ja prioriteete konfigureerida ning vaadata ühenduste ajalugu.&lt;br /&gt;
&lt;br /&gt;
==Ajakava/progress==&lt;br /&gt;
=== Esmaspäev 26.03.2012 ===&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Tutvuda olukorraga ja tehnoloogiatega&lt;br /&gt;
* Kohtuda Ericssoni esindajaga, saada täpne ülevaade ülesandest.&lt;br /&gt;
* Panna paika algne tegevuskava.&lt;br /&gt;
&lt;br /&gt;
Küsimused Ericssonile:&lt;br /&gt;
* Kuidas teha vahet eop-l ja ethernetil?&lt;br /&gt;
* Mis tehnoloogiaid kasutada&lt;br /&gt;
* Miks selline ülesanne?&lt;br /&gt;
* Kus seda kasutama võidakse hakata?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Edusammud:&#039;&#039;&#039;&lt;br /&gt;
* Leidsime badVPN NCD http://code.google.com/p/badvpn/wiki/NCD, nimelise võrguhaldustarkvara ning proovime sellega prioritiseerida erinevaid võrguliideseid.&lt;br /&gt;
* Kohtusime Ericssoni esindajaga ning saime täpsema ülevaate ülesandest. Peame määrama ühendustele prioriteedid ning valima parima ühenduse liigi vastavalt prioriteedile. Wifi puhul peame ühenduma public wifisse ning kui on mitu erinevat võrku saadaval, proovima erinevaid. Võrgutegevust logitakse. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ericssonist saime katsetamiseks kaasa järgneva tehnika :&#039;&#039;&lt;br /&gt;
* nettop PC FIT-PC2&lt;br /&gt;
* 3G EMT mobiilse internetimodemi&lt;br /&gt;
* bluetooth adapteri&lt;br /&gt;
* ethernet over powerline seadmed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Küsimus:&#039;&#039;&#039; Kas kasutame enda leitud badVPN NCD-d või kasutame Linuxis vaikimisi töös olevat Network Manageri?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Materjalid badVPN NCD kohta:&#039;&#039;&#039;&lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/NCD &lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/Installation&lt;br /&gt;
&lt;br /&gt;
Tegime katseid virtualiseeritud keskkonnas. Hetkel suudab NCD prioriteetide alusel ühenduda erinevatesse ethernet liidestega. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Otsustasime enda leitud lahenduse kasuks, sest badVPN NCD teeb täpselt seda mis meil vaja - ühendub erinevatesse võrkudesse prioriteedide alusel.&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;Hetkel tundub, et Network Manageri kasutades peaksime tunduvalt rohkem loogikat ise valmis kirjutama.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Läksime üle katsetustele päris masinas. Installeerisime nettopi peale Lubuntu Linuxi. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame modifitseerima badVPN-i, et saada tööle ka Wi-Fi ja 3G.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tulemus:&#039;&#039;&#039; NCD suudab prioriteedide alusel valida parima ühenduse wifi ja etherneti vahel. Hetkel aga on probleem wifi public võrkudega, nimelt ühendub wifi adapter ainult etteantud võrku. Tuleks kirjutada skript, mis otsib avatud wifi võrke. Alustasime ka mobiilse interneti lahendusega, kuid hetkel tunudb, et NCD seda võimalust ei toeta.&lt;br /&gt;
&lt;br /&gt;
====NCD konfiguratsioon====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cfm&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Example NCD program.&lt;br /&gt;
# All interfaces are disabled by default.&lt;br /&gt;
# Remove/comment the first line of a process to activate the interface.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
process ethernet1 {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and link.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Static configuration.&lt;br /&gt;
   # To use, comment/remove the DHCP configuration above and uncomment this.&lt;br /&gt;
   #var(&amp;quot;192.168.111.116&amp;quot;) addr;&lt;br /&gt;
   #var(&amp;quot;24&amp;quot;) addr_prefix;&lt;br /&gt;
   #var(&amp;quot;192.168.111.1&amp;quot;) gateway;&lt;br /&gt;
   #list(&amp;quot;192.168.111.14&amp;quot;, &amp;quot;193.2.1.66&amp;quot;) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-ethernet&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process eop  {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth2&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-eop&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process pp {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;ppp0&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   #var(dhcp.addr) addr;&lt;br /&gt;
   #var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   #var(dhcp.gateway) gateway;&lt;br /&gt;
   #var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   #net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-pp&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process wlan {&lt;br /&gt;
&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;wlan1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and rfkill.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.backend.rfkill(&amp;quot;wlan&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Connect to wireless network.&lt;br /&gt;
   list() args;&lt;br /&gt;
   net.backend.wpa_supplicant(dev, &amp;quot;/etc/wpa_supplicant/all.conf&amp;quot;, &amp;quot;/sbin/wpa_supplicant&amp;quot;, args);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration. See above for static configuration.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address to interface.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-wlan&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process NETCONF {&lt;br /&gt;
   # Wait for some network connection. Order by priority.&lt;br /&gt;
   list(&amp;quot;NET-wlan&amp;quot;, &amp;quot;NET-eop&amp;quot;, &amp;quot;NET-pp&amp;quot;, &amp;quot;NET-ethernet&amp;quot;) pnames;&lt;br /&gt;
   multidepend(pnames) ifdep;&lt;br /&gt;
   &lt;br /&gt;
   #if(pnames == &amp;quot;NET-pp&amp;quot;)&lt;br /&gt;
   &lt;br /&gt;
   var(ifdep.dev) dev;&lt;br /&gt;
   var(ifdep.addr) addr;&lt;br /&gt;
   var(ifdep.addr_prefix) addr_prefix;&lt;br /&gt;
   var(ifdep.gateway) gateway;&lt;br /&gt;
   var(ifdep.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Add default route.&lt;br /&gt;
   net.ipv4.route(&amp;quot;0.0.0.0&amp;quot;, &amp;quot;0&amp;quot;, gateway, &amp;quot;20&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Configure DNS servers.&lt;br /&gt;
   net.dns(dns_servers, &amp;quot;20&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Teisipäev 27.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039; &lt;br /&gt;
* Saada valmis prioritiseerimine&lt;br /&gt;
* Kirjutada skript, mis otsiks avatud wifi võrke&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Alustada logimisega ning androidi rakenduse kirjutamisega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hakkame lähemalt uurima Network Manageri alternatiivina, sest badVPN-il NCD ja 3G konfiguratsioonid satuvad konflikti, mis teeb 3G ühenduse initsialiseerimise keerukaks.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selgus lõplikult, et NCD-ga ei õnnestu meil töötavat 3G-ga funktsionaalsust luua.&lt;br /&gt;
Hakkasime ülesannet lahendama linuxi &#039;&#039;&#039;Network Manageri&#039;&#039;&#039; abil.&lt;br /&gt;
Network Manageris toimib vaikimisi võrkude prioritiseerimine, esialgu tundub et ei ole võimalik ise prioriteete määrata, ilma source koodi muutmata.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame uurima erinevaid võimalusi kuidas võrke Network manageriga prioritiseerida&#039;&#039;&lt;br /&gt;
Network Manageril on sisseehitatud kindlad prioriteedid ja selle raames toimib kõik väga hästi, aga probleem tekib sellestm et Network Manageris ei saa muuta prioriteete.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lahendus: hakkasime meetrikute alusel prioritiseerima routing tables erinevate ühenduste default route, mille tulemusena saame luua ühenduste prioriteetide järjekorra.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kirjutasime iga Interfacei üles ja allaminemise korral skriptid, mis lisavad ja kustutavad vastava default gateway ja metricuga routi IP route tabelist. &lt;br /&gt;
Default gateway saame kätte Network Manageri käsurea tööriista - &#039;&#039;&#039;nmcli&#039;&#039;&#039; päringu kaudu. Nmcli on kõige kiirem võimalus, sest kliendi poole pealt küsib DHCP infot Network Manager.&lt;br /&gt;
&lt;br /&gt;
====IF UP skript====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth1 metric 5&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth2 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth2 metric 2&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;wlan1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface wlan1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev wlan1 metric 3&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;ppp0&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface ttyUSB0 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev ppp0 metric 6&lt;br /&gt;
fi;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kalmer hakkab uurima võimalusi kuidas teha androidi rakendust, millega saaks ühenduda bluetoothiga arvutiga ning konfigureerida võrgu prioriteete.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tegime skripti wifi jaoks, mis otsib kõik avalikud wifi võrgud, mis on läheduses ja koostab nende kohta individuaalfailid mida kasutab Network Maganager võrkudesse automaatseks ühendamiseks.&lt;br /&gt;
&lt;br /&gt;
==IF up skript==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source = lang&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth1 metric 5&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth2 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth2 metric 2&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;wlan1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface wlan1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev wlan1 metric 3&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;ppp0&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface ttyUSB0 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev ppp0 metric 6&lt;br /&gt;
fi;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Kolmapäev 28.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Teha bluetooth ühendus&lt;br /&gt;
* Teha logimine&lt;br /&gt;
* Korrastada dokumentatsioon&lt;br /&gt;
* Valmistuda presentatsiooniks&lt;br /&gt;
&lt;br /&gt;
Vaikimisi 3G ühendus, tuleb üles liiga hilja. Ei saa kätte default gateway infot piisavalt kiiresti ja tänu sellele routing tablesse ei kirjutata default routei. Et saada kiiremini kätte 3g default gateway kirjutasime skripti, mis leiab 3g seadme ja loob ise ühenduse.&lt;br /&gt;
SKRIPT&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46905</id>
		<title>Meeskond &quot;Tartu rõõm&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46905"/>
		<updated>2012-03-29T09:20:04Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* Teisipäev 27.03.2012 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Liikmed ==&lt;br /&gt;
*Inger Romanenko&lt;br /&gt;
*Sander Saveli&lt;br /&gt;
*Sander Arnus&lt;br /&gt;
*Kalmer Tart&lt;br /&gt;
*Kristjan Rõõm&lt;br /&gt;
&lt;br /&gt;
==Meie eesmärk intensiivõppe raames==&lt;br /&gt;
&lt;br /&gt;
===Automaatne võrguühenduste konfigureerimine erinevate võrkudega===&lt;br /&gt;
&lt;br /&gt;
Konfigureerida arvuti, millel on 3G, Wifi, Ethernet-over-Powerline ja Etherneti pordid ning mille operatsioonisüsteemiks on Ubuntu Linux. Võrguühendust vahetataks ühenduse olemasolu ja prioriteetide alusel üle erinevate tehnoloogiate võimalikult lihtsalt ja kiirelt. IP aadress ei pea samaks jääma. Wifi adapter valib ise parima avaliku võrgu, kui ei ole konfigureeritud teisiti. Kui Wifi ühendus kaob, proovib teisi ka taustal. Kõik ümberlülitamised logitakse. Näiteks: Prioriteetideks on Ethernet:1; EoP:2; Wifi:3; 3G:4. Ühendatakse kõikidesse võimalikesse võrkudesse ning kui Ethernet ära kukub ning pole võimalik ühenduda ka läbi EoP, toimub ühenduse ümberlülitamine Wifi võrku. Kui Wifi ära kukub, siis ühendutakse 3G võrku. Kui tuleb suvaline public wifi tagasi, ühendutakse sinna jne. Luua lihtne kasutajaliides Android telefonile, mis lubab üle bluetooth ühenduse erinevaid võrke ja prioriteete konfigureerida ning vaadata ühenduste ajalugu.&lt;br /&gt;
&lt;br /&gt;
==Ajakava/progress==&lt;br /&gt;
=== Esmaspäev 26.03.2012 ===&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Tutvuda olukorraga ja tehnoloogiatega&lt;br /&gt;
* Kohtuda Ericssoni esindajaga, saada täpne ülevaade ülesandest.&lt;br /&gt;
* Panna paika algne tegevuskava.&lt;br /&gt;
&lt;br /&gt;
Küsimused Ericssonile:&lt;br /&gt;
* Kuidas teha vahet eop-l ja ethernetil?&lt;br /&gt;
* Mis tehnoloogiaid kasutada&lt;br /&gt;
* Miks selline ülesanne?&lt;br /&gt;
* Kus seda kasutama võidakse hakata?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Edusammud:&#039;&#039;&#039;&lt;br /&gt;
* Leidsime badVPN NCD http://code.google.com/p/badvpn/wiki/NCD, nimelise võrguhaldustarkvara ning proovime sellega prioritiseerida erinevaid võrguliideseid.&lt;br /&gt;
* Kohtusime Ericssoni esindajaga ning saime täpsema ülevaate ülesandest. Peame määrama ühendustele prioriteedid ning valima parima ühenduse liigi vastavalt prioriteedile. Wifi puhul peame ühenduma public wifisse ning kui on mitu erinevat võrku saadaval, proovima erinevaid. Võrgutegevust logitakse. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ericssonist saime katsetamiseks kaasa järgneva tehnika :&#039;&#039;&lt;br /&gt;
* nettop PC FIT-PC2&lt;br /&gt;
* 3G EMT mobiilse internetimodemi&lt;br /&gt;
* bluetooth adapteri&lt;br /&gt;
* ethernet over powerline seadmed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Küsimus:&#039;&#039;&#039; Kas kasutame enda leitud badVPN NCD-d või kasutame Linuxis vaikimisi töös olevat Network Manageri?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Materjalid badVPN NCD kohta:&#039;&#039;&#039;&lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/NCD &lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/Installation&lt;br /&gt;
&lt;br /&gt;
Tegime katseid virtualiseeritud keskkonnas. Hetkel suudab NCD prioriteetide alusel ühenduda erinevatesse ethernet liidestega. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Otsustasime enda leitud lahenduse kasuks, sest badVPN NCD teeb täpselt seda mis meil vaja - ühendub erinevatesse võrkudesse prioriteedide alusel.&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;Hetkel tundub, et Network Manageri kasutades peaksime tunduvalt rohkem loogikat ise valmis kirjutama.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Läksime üle katsetustele päris masinas. Installeerisime nettopi peale Lubuntu Linuxi. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame modifitseerima badVPN-i, et saada tööle ka Wi-Fi ja 3G.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tulemus:&#039;&#039;&#039; NCD suudab prioriteedide alusel valida parima ühenduse wifi ja etherneti vahel. Hetkel aga on probleem wifi public võrkudega, nimelt ühendub wifi adapter ainult etteantud võrku. Tuleks kirjutada skript, mis otsib avatud wifi võrke. Alustasime ka mobiilse interneti lahendusega, kuid hetkel tunudb, et NCD seda võimalust ei toeta.&lt;br /&gt;
&lt;br /&gt;
====NCD konfiguratsioon====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cfm&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Example NCD program.&lt;br /&gt;
# All interfaces are disabled by default.&lt;br /&gt;
# Remove/comment the first line of a process to activate the interface.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
process ethernet1 {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and link.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Static configuration.&lt;br /&gt;
   # To use, comment/remove the DHCP configuration above and uncomment this.&lt;br /&gt;
   #var(&amp;quot;192.168.111.116&amp;quot;) addr;&lt;br /&gt;
   #var(&amp;quot;24&amp;quot;) addr_prefix;&lt;br /&gt;
   #var(&amp;quot;192.168.111.1&amp;quot;) gateway;&lt;br /&gt;
   #list(&amp;quot;192.168.111.14&amp;quot;, &amp;quot;193.2.1.66&amp;quot;) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-ethernet&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process eop  {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth2&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-eop&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process pp {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;ppp0&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   #var(dhcp.addr) addr;&lt;br /&gt;
   #var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   #var(dhcp.gateway) gateway;&lt;br /&gt;
   #var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   #net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-pp&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process wlan {&lt;br /&gt;
&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;wlan1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and rfkill.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.backend.rfkill(&amp;quot;wlan&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Connect to wireless network.&lt;br /&gt;
   list() args;&lt;br /&gt;
   net.backend.wpa_supplicant(dev, &amp;quot;/etc/wpa_supplicant/all.conf&amp;quot;, &amp;quot;/sbin/wpa_supplicant&amp;quot;, args);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration. See above for static configuration.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address to interface.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-wlan&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process NETCONF {&lt;br /&gt;
   # Wait for some network connection. Order by priority.&lt;br /&gt;
   list(&amp;quot;NET-wlan&amp;quot;, &amp;quot;NET-eop&amp;quot;, &amp;quot;NET-pp&amp;quot;, &amp;quot;NET-ethernet&amp;quot;) pnames;&lt;br /&gt;
   multidepend(pnames) ifdep;&lt;br /&gt;
   &lt;br /&gt;
   #if(pnames == &amp;quot;NET-pp&amp;quot;)&lt;br /&gt;
   &lt;br /&gt;
   var(ifdep.dev) dev;&lt;br /&gt;
   var(ifdep.addr) addr;&lt;br /&gt;
   var(ifdep.addr_prefix) addr_prefix;&lt;br /&gt;
   var(ifdep.gateway) gateway;&lt;br /&gt;
   var(ifdep.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Add default route.&lt;br /&gt;
   net.ipv4.route(&amp;quot;0.0.0.0&amp;quot;, &amp;quot;0&amp;quot;, gateway, &amp;quot;20&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Configure DNS servers.&lt;br /&gt;
   net.dns(dns_servers, &amp;quot;20&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Teisipäev 27.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039; &lt;br /&gt;
* Saada valmis prioritiseerimine&lt;br /&gt;
* Kirjutada skript, mis otsiks avatud wifi võrke&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Alustada logimisega ning androidi rakenduse kirjutamisega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hakkame lähemalt uurima Network Manageri alternatiivina, sest badVPN-il NCD ja 3G konfiguratsioonid satuvad konflikti, mis teeb 3G ühenduse initsialiseerimise keerukaks.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selgus lõplikult, et NCD-ga ei õnnestu meil töötavat 3G-ga funktsionaalsust luua.&lt;br /&gt;
Hakkasime ülesannet lahendama linuxi &#039;&#039;&#039;Network Manageri&#039;&#039;&#039; abil.&lt;br /&gt;
Network Manageris toimib vaikimisi võrkude prioritiseerimine, esialgu tundub et ei ole võimalik ise prioriteete määrata, ilma source koodi muutmata.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame uurima erinevaid võimalusi kuidas võrke Network manageriga prioritiseerida&#039;&#039;&lt;br /&gt;
Network Manageril on sisseehitatud kindlad prioriteedid ja selle raames toimib kõik väga hästi, aga probleem tekib sellestm et Network Manageris ei saa muuta prioriteete.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lahendus: hakkasime meetrikute alusel prioritiseerima routing tables erinevate ühenduste default route, mille tulemusena saame luua ühenduste prioriteetide järjekorra.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kirjutasime iga Interfacei üles ja allaminemise korral skriptid, mis lisavad ja kustutavad vastava default gateway ja metricuga routi IP route tabelist. &lt;br /&gt;
Default gateway saame kätte Network Manageri käsurea tööriista - &#039;&#039;&#039;nmcli&#039;&#039;&#039; päringu kaudu. Nmcli on kõige kiirem võimalus, sest kliendi poole pealt küsib DHCP infot Network Manager.&lt;br /&gt;
&lt;br /&gt;
==IF UP skript==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth1 metric 5&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth2 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth2 metric 2&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;wlan1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface wlan1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev wlan1 metric 3&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;ppp0&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface ttyUSB0 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev ppp0 metric 6&lt;br /&gt;
fi;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kalmer hakkab uurima võimalusi kuidas teha androidi rakendust, millega saaks ühenduda bluetoothiga arvutiga ning konfigureerida võrgu prioriteete.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tegime skripti wifi jaoks, mis otsib kõik avalikud wifi võrgud, mis on läheduses ja koostab nende kohta individuaalfailid mida kasutab Network Maganager võrkudesse automaatseks ühendamiseks.&lt;br /&gt;
&lt;br /&gt;
==IF up skript==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source = lang&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth1 metric 5&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth2 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth2 metric 2&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;wlan1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface wlan1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev wlan1 metric 3&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;ppp0&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface ttyUSB0 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev ppp0 metric 6&lt;br /&gt;
fi;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Kolmapäev 28.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Teha bluetooth ühendus&lt;br /&gt;
* Teha logimine&lt;br /&gt;
* Korrastada dokumentatsioon&lt;br /&gt;
* Valmistuda presentatsiooniks&lt;br /&gt;
&lt;br /&gt;
Vaikimisi 3G ühendus, tuleb üles liiga hilja. Ei saa kätte default gateway infot piisavalt kiiresti ja tänu sellele routing tablesse ei kirjutata default routei. Et saada kiiremini kätte 3g default gateway kirjutasime skripti, mis leiab 3g seadme ja loob ise ühenduse.&lt;br /&gt;
SKRIPT&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46904</id>
		<title>Meeskond &quot;Tartu rõõm&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46904"/>
		<updated>2012-03-29T09:19:50Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* Teisipäev 27.03.2012 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Liikmed ==&lt;br /&gt;
*Inger Romanenko&lt;br /&gt;
*Sander Saveli&lt;br /&gt;
*Sander Arnus&lt;br /&gt;
*Kalmer Tart&lt;br /&gt;
*Kristjan Rõõm&lt;br /&gt;
&lt;br /&gt;
==Meie eesmärk intensiivõppe raames==&lt;br /&gt;
&lt;br /&gt;
===Automaatne võrguühenduste konfigureerimine erinevate võrkudega===&lt;br /&gt;
&lt;br /&gt;
Konfigureerida arvuti, millel on 3G, Wifi, Ethernet-over-Powerline ja Etherneti pordid ning mille operatsioonisüsteemiks on Ubuntu Linux. Võrguühendust vahetataks ühenduse olemasolu ja prioriteetide alusel üle erinevate tehnoloogiate võimalikult lihtsalt ja kiirelt. IP aadress ei pea samaks jääma. Wifi adapter valib ise parima avaliku võrgu, kui ei ole konfigureeritud teisiti. Kui Wifi ühendus kaob, proovib teisi ka taustal. Kõik ümberlülitamised logitakse. Näiteks: Prioriteetideks on Ethernet:1; EoP:2; Wifi:3; 3G:4. Ühendatakse kõikidesse võimalikesse võrkudesse ning kui Ethernet ära kukub ning pole võimalik ühenduda ka läbi EoP, toimub ühenduse ümberlülitamine Wifi võrku. Kui Wifi ära kukub, siis ühendutakse 3G võrku. Kui tuleb suvaline public wifi tagasi, ühendutakse sinna jne. Luua lihtne kasutajaliides Android telefonile, mis lubab üle bluetooth ühenduse erinevaid võrke ja prioriteete konfigureerida ning vaadata ühenduste ajalugu.&lt;br /&gt;
&lt;br /&gt;
==Ajakava/progress==&lt;br /&gt;
=== Esmaspäev 26.03.2012 ===&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Tutvuda olukorraga ja tehnoloogiatega&lt;br /&gt;
* Kohtuda Ericssoni esindajaga, saada täpne ülevaade ülesandest.&lt;br /&gt;
* Panna paika algne tegevuskava.&lt;br /&gt;
&lt;br /&gt;
Küsimused Ericssonile:&lt;br /&gt;
* Kuidas teha vahet eop-l ja ethernetil?&lt;br /&gt;
* Mis tehnoloogiaid kasutada&lt;br /&gt;
* Miks selline ülesanne?&lt;br /&gt;
* Kus seda kasutama võidakse hakata?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Edusammud:&#039;&#039;&#039;&lt;br /&gt;
* Leidsime badVPN NCD http://code.google.com/p/badvpn/wiki/NCD, nimelise võrguhaldustarkvara ning proovime sellega prioritiseerida erinevaid võrguliideseid.&lt;br /&gt;
* Kohtusime Ericssoni esindajaga ning saime täpsema ülevaate ülesandest. Peame määrama ühendustele prioriteedid ning valima parima ühenduse liigi vastavalt prioriteedile. Wifi puhul peame ühenduma public wifisse ning kui on mitu erinevat võrku saadaval, proovima erinevaid. Võrgutegevust logitakse. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ericssonist saime katsetamiseks kaasa järgneva tehnika :&#039;&#039;&lt;br /&gt;
* nettop PC FIT-PC2&lt;br /&gt;
* 3G EMT mobiilse internetimodemi&lt;br /&gt;
* bluetooth adapteri&lt;br /&gt;
* ethernet over powerline seadmed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Küsimus:&#039;&#039;&#039; Kas kasutame enda leitud badVPN NCD-d või kasutame Linuxis vaikimisi töös olevat Network Manageri?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Materjalid badVPN NCD kohta:&#039;&#039;&#039;&lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/NCD &lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/Installation&lt;br /&gt;
&lt;br /&gt;
Tegime katseid virtualiseeritud keskkonnas. Hetkel suudab NCD prioriteetide alusel ühenduda erinevatesse ethernet liidestega. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Otsustasime enda leitud lahenduse kasuks, sest badVPN NCD teeb täpselt seda mis meil vaja - ühendub erinevatesse võrkudesse prioriteedide alusel.&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;Hetkel tundub, et Network Manageri kasutades peaksime tunduvalt rohkem loogikat ise valmis kirjutama.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Läksime üle katsetustele päris masinas. Installeerisime nettopi peale Lubuntu Linuxi. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame modifitseerima badVPN-i, et saada tööle ka Wi-Fi ja 3G.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tulemus:&#039;&#039;&#039; NCD suudab prioriteedide alusel valida parima ühenduse wifi ja etherneti vahel. Hetkel aga on probleem wifi public võrkudega, nimelt ühendub wifi adapter ainult etteantud võrku. Tuleks kirjutada skript, mis otsib avatud wifi võrke. Alustasime ka mobiilse interneti lahendusega, kuid hetkel tunudb, et NCD seda võimalust ei toeta.&lt;br /&gt;
&lt;br /&gt;
====NCD konfiguratsioon====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cfm&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Example NCD program.&lt;br /&gt;
# All interfaces are disabled by default.&lt;br /&gt;
# Remove/comment the first line of a process to activate the interface.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
process ethernet1 {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and link.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Static configuration.&lt;br /&gt;
   # To use, comment/remove the DHCP configuration above and uncomment this.&lt;br /&gt;
   #var(&amp;quot;192.168.111.116&amp;quot;) addr;&lt;br /&gt;
   #var(&amp;quot;24&amp;quot;) addr_prefix;&lt;br /&gt;
   #var(&amp;quot;192.168.111.1&amp;quot;) gateway;&lt;br /&gt;
   #list(&amp;quot;192.168.111.14&amp;quot;, &amp;quot;193.2.1.66&amp;quot;) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-ethernet&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process eop  {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth2&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-eop&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process pp {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;ppp0&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   #var(dhcp.addr) addr;&lt;br /&gt;
   #var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   #var(dhcp.gateway) gateway;&lt;br /&gt;
   #var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   #net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-pp&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process wlan {&lt;br /&gt;
&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;wlan1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and rfkill.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.backend.rfkill(&amp;quot;wlan&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Connect to wireless network.&lt;br /&gt;
   list() args;&lt;br /&gt;
   net.backend.wpa_supplicant(dev, &amp;quot;/etc/wpa_supplicant/all.conf&amp;quot;, &amp;quot;/sbin/wpa_supplicant&amp;quot;, args);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration. See above for static configuration.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address to interface.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-wlan&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process NETCONF {&lt;br /&gt;
   # Wait for some network connection. Order by priority.&lt;br /&gt;
   list(&amp;quot;NET-wlan&amp;quot;, &amp;quot;NET-eop&amp;quot;, &amp;quot;NET-pp&amp;quot;, &amp;quot;NET-ethernet&amp;quot;) pnames;&lt;br /&gt;
   multidepend(pnames) ifdep;&lt;br /&gt;
   &lt;br /&gt;
   #if(pnames == &amp;quot;NET-pp&amp;quot;)&lt;br /&gt;
   &lt;br /&gt;
   var(ifdep.dev) dev;&lt;br /&gt;
   var(ifdep.addr) addr;&lt;br /&gt;
   var(ifdep.addr_prefix) addr_prefix;&lt;br /&gt;
   var(ifdep.gateway) gateway;&lt;br /&gt;
   var(ifdep.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Add default route.&lt;br /&gt;
   net.ipv4.route(&amp;quot;0.0.0.0&amp;quot;, &amp;quot;0&amp;quot;, gateway, &amp;quot;20&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Configure DNS servers.&lt;br /&gt;
   net.dns(dns_servers, &amp;quot;20&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Teisipäev 27.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039; &lt;br /&gt;
* Saada valmis prioritiseerimine&lt;br /&gt;
* Kirjutada skript, mis otsiks avatud wifi võrke&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Alustada logimisega ning androidi rakenduse kirjutamisega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hakkame lähemalt uurima Network Manageri alternatiivina, sest badVPN-il NCD ja 3G konfiguratsioonid satuvad konflikti, mis teeb 3G ünhenduse initsialiseerimise keerukaks.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selgus lõplikult, et NCD-ga ei õnnestu meil töötavat 3G-ga funktsionaalsust luua.&lt;br /&gt;
Hakkasime ülesannet lahendama linuxi &#039;&#039;&#039;Network Manageri&#039;&#039;&#039; abil.&lt;br /&gt;
Network Manageris toimib vaikimisi võrkude prioritiseerimine, esialgu tundub et ei ole võimalik ise prioriteete määrata, ilma source koodi muutmata.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame uurima erinevaid võimalusi kuidas võrke Network manageriga prioritiseerida&#039;&#039;&lt;br /&gt;
Network Manageril on sisseehitatud kindlad prioriteedid ja selle raames toimib kõik väga hästi, aga probleem tekib sellestm et Network Manageris ei saa muuta prioriteete.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lahendus: hakkasime meetrikute alusel prioritiseerima routing tables erinevate ühenduste default route, mille tulemusena saame luua ühenduste prioriteetide järjekorra.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kirjutasime iga Interfacei üles ja allaminemise korral skriptid, mis lisavad ja kustutavad vastava default gateway ja metricuga routi IP route tabelist. &lt;br /&gt;
Default gateway saame kätte Network Manageri käsurea tööriista - &#039;&#039;&#039;nmcli&#039;&#039;&#039; päringu kaudu. Nmcli on kõige kiirem võimalus, sest kliendi poole pealt küsib DHCP infot Network Manager.&lt;br /&gt;
&lt;br /&gt;
==IF UP skript==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth1 metric 5&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth2 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth2 metric 2&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;wlan1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface wlan1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev wlan1 metric 3&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;ppp0&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface ttyUSB0 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev ppp0 metric 6&lt;br /&gt;
fi;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kalmer hakkab uurima võimalusi kuidas teha androidi rakendust, millega saaks ühenduda bluetoothiga arvutiga ning konfigureerida võrgu prioriteete.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tegime skripti wifi jaoks, mis otsib kõik avalikud wifi võrgud, mis on läheduses ja koostab nende kohta individuaalfailid mida kasutab Network Maganager võrkudesse automaatseks ühendamiseks.&lt;br /&gt;
&lt;br /&gt;
==IF up skript==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source = lang&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth1 metric 5&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth2 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth2 metric 2&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;wlan1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface wlan1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev wlan1 metric 3&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;ppp0&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface ttyUSB0 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev ppp0 metric 6&lt;br /&gt;
fi;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Kolmapäev 28.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Teha bluetooth ühendus&lt;br /&gt;
* Teha logimine&lt;br /&gt;
* Korrastada dokumentatsioon&lt;br /&gt;
* Valmistuda presentatsiooniks&lt;br /&gt;
&lt;br /&gt;
Vaikimisi 3G ühendus, tuleb üles liiga hilja. Ei saa kätte default gateway infot piisavalt kiiresti ja tänu sellele routing tablesse ei kirjutata default routei. Et saada kiiremini kätte 3g default gateway kirjutasime skripti, mis leiab 3g seadme ja loob ise ühenduse.&lt;br /&gt;
SKRIPT&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46901</id>
		<title>Meeskond &quot;Tartu rõõm&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46901"/>
		<updated>2012-03-29T09:15:31Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* WiFi skript, mis otsib avatud võrke */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Liikmed ==&lt;br /&gt;
*Inger Romanenko&lt;br /&gt;
*Sander Saveli&lt;br /&gt;
*Sander Arnus&lt;br /&gt;
*Kalmer Tart&lt;br /&gt;
*Kristjan Rõõm&lt;br /&gt;
&lt;br /&gt;
==Meie eesmärk intensiivõppe raames==&lt;br /&gt;
&lt;br /&gt;
===Automaatne võrguühenduste konfigureerimine erinevate võrkudega===&lt;br /&gt;
&lt;br /&gt;
Konfigureerida arvuti, millel on 3G, Wifi, Ethernet-over-Powerline ja Etherneti pordid ning mille operatsioonisüsteemiks on Ubuntu Linux. Võrguühendust vahetataks ühenduse olemasolu ja prioriteetide alusel üle erinevate tehnoloogiate võimalikult lihtsalt ja kiirelt. IP aadress ei pea samaks jääma. Wifi adapter valib ise parima avaliku võrgu, kui ei ole konfigureeritud teisiti. Kui Wifi ühendus kaob, proovib teisi ka taustal. Kõik ümberlülitamised logitakse. Näiteks: Prioriteetideks on Ethernet:1; EoP:2; Wifi:3; 3G:4. Ühendatakse kõikidesse võimalikesse võrkudesse ning kui Ethernet ära kukub ning pole võimalik ühenduda ka läbi EoP, toimub ühenduse ümberlülitamine Wifi võrku. Kui Wifi ära kukub, siis ühendutakse 3G võrku. Kui tuleb suvaline public wifi tagasi, ühendutakse sinna jne. Luua lihtne kasutajaliides Android telefonile, mis lubab üle bluetooth ühenduse erinevaid võrke ja prioriteete konfigureerida ning vaadata ühenduste ajalugu.&lt;br /&gt;
&lt;br /&gt;
==Ajakava/progress==&lt;br /&gt;
=== Esmaspäev 26.03.2012 ===&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Tutvuda olukorraga ja tehnoloogiatega&lt;br /&gt;
* Kohtuda Ericssoni esindajaga, saada täpne ülevaade ülesandest.&lt;br /&gt;
* Panna paika algne tegevuskava.&lt;br /&gt;
&lt;br /&gt;
Küsimused Ericssonile:&lt;br /&gt;
* Kuidas teha vahet eop-l ja ethernetil?&lt;br /&gt;
* Mis tehnoloogiaid kasutada&lt;br /&gt;
* Miks selline ülesanne?&lt;br /&gt;
* Kus seda kasutama võidakse hakata?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Edusammud:&#039;&#039;&#039;&lt;br /&gt;
* Leidsime badVPN NCD http://code.google.com/p/badvpn/wiki/NCD, nimelise võrguhaldustarkvara ning proovime sellega prioritiseerida erinevaid võrguliideseid.&lt;br /&gt;
* Kohtusime Ericssoni esindajaga ning saime täpsema ülevaate ülesandest. Peame määrama ühendustele prioriteedid ning valima parima ühenduse liigi vastavalt prioriteedile. Wifi puhul peame ühenduma public wifisse ning kui on mitu erinevat võrku saadaval, proovima erinevaid. Võrgutegevust logitakse. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ericssonist saime katsetamiseks kaasa järgneva tehnika :&#039;&#039;&lt;br /&gt;
* nettop PC FIT-PC2&lt;br /&gt;
* 3G EMT mobiilse internetimodemi&lt;br /&gt;
* bluetooth adapteri&lt;br /&gt;
* ethernet over powerline seadmed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Küsimus:&#039;&#039;&#039; Kas kasutame enda leitud badVPN NCD-d või kasutame Linuxis vaikimisi töös olevat Network Manageri?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Materjalid badVPN NCD kohta:&#039;&#039;&#039;&lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/NCD &lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/Installation&lt;br /&gt;
&lt;br /&gt;
Tegime katseid virtualiseeritud keskkonnas. Hetkel suudab NCD prioriteetide alusel ühenduda erinevatesse ethernet liidestega. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Otsustasime enda leitud lahenduse kasuks, sest badVPN NCD teeb täpselt seda mis meil vaja - ühendub erinevatesse võrkudesse prioriteedide alusel.&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;Hetkel tundub, et Network Manageri kasutades peaksime tunduvalt rohkem loogikat ise valmis kirjutama.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Läksime üle katsetustele päris masinas. Installeerisime nettopi peale Lubuntu Linuxi. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame modifitseerima badVPN-i, et saada tööle ka Wi-Fi ja 3G.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tulemus:&#039;&#039;&#039; NCD suudab prioriteedide alusel valida parima ühenduse wifi ja etherneti vahel. Hetkel aga on probleem wifi public võrkudega, nimelt ühendub wifi adapter ainult etteantud võrku. Tuleks kirjutada skript, mis otsib avatud wifi võrke. Alustasime ka mobiilse interneti lahendusega, kuid hetkel tunudb, et NCD seda võimalust ei toeta.&lt;br /&gt;
&lt;br /&gt;
====NCD konfiguratsioon====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cfm&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Example NCD program.&lt;br /&gt;
# All interfaces are disabled by default.&lt;br /&gt;
# Remove/comment the first line of a process to activate the interface.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
process ethernet1 {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and link.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Static configuration.&lt;br /&gt;
   # To use, comment/remove the DHCP configuration above and uncomment this.&lt;br /&gt;
   #var(&amp;quot;192.168.111.116&amp;quot;) addr;&lt;br /&gt;
   #var(&amp;quot;24&amp;quot;) addr_prefix;&lt;br /&gt;
   #var(&amp;quot;192.168.111.1&amp;quot;) gateway;&lt;br /&gt;
   #list(&amp;quot;192.168.111.14&amp;quot;, &amp;quot;193.2.1.66&amp;quot;) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-ethernet&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process eop  {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth2&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-eop&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process pp {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;ppp0&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   #var(dhcp.addr) addr;&lt;br /&gt;
   #var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   #var(dhcp.gateway) gateway;&lt;br /&gt;
   #var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   #net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-pp&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process wlan {&lt;br /&gt;
&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;wlan1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and rfkill.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.backend.rfkill(&amp;quot;wlan&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Connect to wireless network.&lt;br /&gt;
   list() args;&lt;br /&gt;
   net.backend.wpa_supplicant(dev, &amp;quot;/etc/wpa_supplicant/all.conf&amp;quot;, &amp;quot;/sbin/wpa_supplicant&amp;quot;, args);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration. See above for static configuration.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address to interface.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-wlan&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process NETCONF {&lt;br /&gt;
   # Wait for some network connection. Order by priority.&lt;br /&gt;
   list(&amp;quot;NET-wlan&amp;quot;, &amp;quot;NET-eop&amp;quot;, &amp;quot;NET-pp&amp;quot;, &amp;quot;NET-ethernet&amp;quot;) pnames;&lt;br /&gt;
   multidepend(pnames) ifdep;&lt;br /&gt;
   &lt;br /&gt;
   #if(pnames == &amp;quot;NET-pp&amp;quot;)&lt;br /&gt;
   &lt;br /&gt;
   var(ifdep.dev) dev;&lt;br /&gt;
   var(ifdep.addr) addr;&lt;br /&gt;
   var(ifdep.addr_prefix) addr_prefix;&lt;br /&gt;
   var(ifdep.gateway) gateway;&lt;br /&gt;
   var(ifdep.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Add default route.&lt;br /&gt;
   net.ipv4.route(&amp;quot;0.0.0.0&amp;quot;, &amp;quot;0&amp;quot;, gateway, &amp;quot;20&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Configure DNS servers.&lt;br /&gt;
   net.dns(dns_servers, &amp;quot;20&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Teisipäev 27.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039; &lt;br /&gt;
* Saada valmis prioritiseerimine&lt;br /&gt;
* Kirjutada skript, mis otsiks avatud wifi võrke&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Alustada logimisega ning androidi rakenduse kirjutamisega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hakkame lähemalt uurima Network Manageri alternatiivina, sest badVPN-il NCD ja 3G konfiguratsioonid satuvad konflikti, mis teeb 3G ünhenduse initsialiseerimise keerukaks.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selgus lõplikult, et NCD-ga ei õnnestu meil töötavat 3G-ga funktsionaalsust luua.&lt;br /&gt;
Hakkasime ülesannet lahendama linuxi &#039;&#039;&#039;Network Manageri&#039;&#039;&#039; abil.&lt;br /&gt;
Network Manageris toimib vaikimisi võrkude prioritiseerimine, esialgu tundub et ei ole võimalik ise prioriteete määrata, ilma source koodi muutmata.&lt;br /&gt;
&lt;br /&gt;
Kalmer hakkab uurima võimalusi kuidas teha androidi rakendust, millega saaks ühenduda bluetoothiga arvutiga ning konfigureerida võrgu prioriteete.&lt;br /&gt;
&lt;br /&gt;
Tegime skripti wifi jaoks, mis otsib kõik avalikud wifi võrgud, mis on läheduses ja koostab nende kohta individuaalfailid mida kasutab Network Maganager võrkudesse automaatseks ühendamiseks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame uurima erinevaid võimalusi kuidas võrke Network manageriga prioritiseerida&#039;&#039;&lt;br /&gt;
Network Manageril on sisseehitatud kindlad prioriteedid ja selle raames toimib kõik väga hästi, aga probleem tekib sellestm et Network Manageris ei saa muuta prioriteete.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lahendus: hakkasime meetrikute alusel prioritiseerima routing tables erinevate ühenduste default route, mille tulemusena saame luua ühenduste prioriteetide järjekorra.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kirjutasime iga Interfacei üles ja allaminemise korral skriptid, mis lisavad ja kustutavad vastava default gateway ja metricuga routi IP route tabelist. &lt;br /&gt;
Default gateway saame kätte Network Manageri käsurea tööriista - &#039;&#039;&#039;nmcli&#039;&#039;&#039; päringu kaudu. Nmcli on kõige kiirem võimalus, sest kliendi poole pealt küsib DHCP infot Network Manager.&lt;br /&gt;
&lt;br /&gt;
==IF up skript==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source = lang&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth1 metric 5&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth2 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth2 metric 2&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;wlan1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface wlan1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev wlan1 metric 3&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;ppp0&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface ttyUSB0 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev ppp0 metric 6&lt;br /&gt;
fi;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Kolmapäev 28.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Teha bluetooth ühendus&lt;br /&gt;
* Teha logimine&lt;br /&gt;
* Korrastada dokumentatsioon&lt;br /&gt;
* Valmistuda presentatsiooniks&lt;br /&gt;
&lt;br /&gt;
Vaikimisi 3G ühendus, tuleb üles liiga hilja. Ei saa kätte default gateway infot piisavalt kiiresti ja tänu sellele routing tablesse ei kirjutata default routei. Et saada kiiremini kätte 3g default gateway kirjutasime skripti, mis leiab 3g seadme ja loob ise ühenduse.&lt;br /&gt;
SKRIPT&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46900</id>
		<title>Meeskond &quot;Tartu rõõm&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46900"/>
		<updated>2012-03-29T09:14:21Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* NCD konfiguratsioon */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Liikmed ==&lt;br /&gt;
*Inger Romanenko&lt;br /&gt;
*Sander Saveli&lt;br /&gt;
*Sander Arnus&lt;br /&gt;
*Kalmer Tart&lt;br /&gt;
*Kristjan Rõõm&lt;br /&gt;
&lt;br /&gt;
==Meie eesmärk intensiivõppe raames==&lt;br /&gt;
&lt;br /&gt;
===Automaatne võrguühenduste konfigureerimine erinevate võrkudega===&lt;br /&gt;
&lt;br /&gt;
Konfigureerida arvuti, millel on 3G, Wifi, Ethernet-over-Powerline ja Etherneti pordid ning mille operatsioonisüsteemiks on Ubuntu Linux. Võrguühendust vahetataks ühenduse olemasolu ja prioriteetide alusel üle erinevate tehnoloogiate võimalikult lihtsalt ja kiirelt. IP aadress ei pea samaks jääma. Wifi adapter valib ise parima avaliku võrgu, kui ei ole konfigureeritud teisiti. Kui Wifi ühendus kaob, proovib teisi ka taustal. Kõik ümberlülitamised logitakse. Näiteks: Prioriteetideks on Ethernet:1; EoP:2; Wifi:3; 3G:4. Ühendatakse kõikidesse võimalikesse võrkudesse ning kui Ethernet ära kukub ning pole võimalik ühenduda ka läbi EoP, toimub ühenduse ümberlülitamine Wifi võrku. Kui Wifi ära kukub, siis ühendutakse 3G võrku. Kui tuleb suvaline public wifi tagasi, ühendutakse sinna jne. Luua lihtne kasutajaliides Android telefonile, mis lubab üle bluetooth ühenduse erinevaid võrke ja prioriteete konfigureerida ning vaadata ühenduste ajalugu.&lt;br /&gt;
&lt;br /&gt;
==Ajakava/progress==&lt;br /&gt;
=== Esmaspäev 26.03.2012 ===&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Tutvuda olukorraga ja tehnoloogiatega&lt;br /&gt;
* Kohtuda Ericssoni esindajaga, saada täpne ülevaade ülesandest.&lt;br /&gt;
* Panna paika algne tegevuskava.&lt;br /&gt;
&lt;br /&gt;
Küsimused Ericssonile:&lt;br /&gt;
* Kuidas teha vahet eop-l ja ethernetil?&lt;br /&gt;
* Mis tehnoloogiaid kasutada&lt;br /&gt;
* Miks selline ülesanne?&lt;br /&gt;
* Kus seda kasutama võidakse hakata?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Edusammud:&#039;&#039;&#039;&lt;br /&gt;
* Leidsime badVPN NCD http://code.google.com/p/badvpn/wiki/NCD, nimelise võrguhaldustarkvara ning proovime sellega prioritiseerida erinevaid võrguliideseid.&lt;br /&gt;
* Kohtusime Ericssoni esindajaga ning saime täpsema ülevaate ülesandest. Peame määrama ühendustele prioriteedid ning valima parima ühenduse liigi vastavalt prioriteedile. Wifi puhul peame ühenduma public wifisse ning kui on mitu erinevat võrku saadaval, proovima erinevaid. Võrgutegevust logitakse. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ericssonist saime katsetamiseks kaasa järgneva tehnika :&#039;&#039;&lt;br /&gt;
* nettop PC FIT-PC2&lt;br /&gt;
* 3G EMT mobiilse internetimodemi&lt;br /&gt;
* bluetooth adapteri&lt;br /&gt;
* ethernet over powerline seadmed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Küsimus:&#039;&#039;&#039; Kas kasutame enda leitud badVPN NCD-d või kasutame Linuxis vaikimisi töös olevat Network Manageri?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Materjalid badVPN NCD kohta:&#039;&#039;&#039;&lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/NCD &lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/Installation&lt;br /&gt;
&lt;br /&gt;
Tegime katseid virtualiseeritud keskkonnas. Hetkel suudab NCD prioriteetide alusel ühenduda erinevatesse ethernet liidestega. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Otsustasime enda leitud lahenduse kasuks, sest badVPN NCD teeb täpselt seda mis meil vaja - ühendub erinevatesse võrkudesse prioriteedide alusel.&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;Hetkel tundub, et Network Manageri kasutades peaksime tunduvalt rohkem loogikat ise valmis kirjutama.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Läksime üle katsetustele päris masinas. Installeerisime nettopi peale Lubuntu Linuxi. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame modifitseerima badVPN-i, et saada tööle ka Wi-Fi ja 3G.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tulemus:&#039;&#039;&#039; NCD suudab prioriteedide alusel valida parima ühenduse wifi ja etherneti vahel. Hetkel aga on probleem wifi public võrkudega, nimelt ühendub wifi adapter ainult etteantud võrku. Tuleks kirjutada skript, mis otsib avatud wifi võrke. Alustasime ka mobiilse interneti lahendusega, kuid hetkel tunudb, et NCD seda võimalust ei toeta.&lt;br /&gt;
&lt;br /&gt;
====NCD konfiguratsioon====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cfm&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Example NCD program.&lt;br /&gt;
# All interfaces are disabled by default.&lt;br /&gt;
# Remove/comment the first line of a process to activate the interface.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
process ethernet1 {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and link.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Static configuration.&lt;br /&gt;
   # To use, comment/remove the DHCP configuration above and uncomment this.&lt;br /&gt;
   #var(&amp;quot;192.168.111.116&amp;quot;) addr;&lt;br /&gt;
   #var(&amp;quot;24&amp;quot;) addr_prefix;&lt;br /&gt;
   #var(&amp;quot;192.168.111.1&amp;quot;) gateway;&lt;br /&gt;
   #list(&amp;quot;192.168.111.14&amp;quot;, &amp;quot;193.2.1.66&amp;quot;) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-ethernet&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process eop  {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth2&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-eop&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process pp {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;ppp0&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   #var(dhcp.addr) addr;&lt;br /&gt;
   #var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   #var(dhcp.gateway) gateway;&lt;br /&gt;
   #var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   #net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-pp&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process wlan {&lt;br /&gt;
&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;wlan1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and rfkill.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.backend.rfkill(&amp;quot;wlan&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Connect to wireless network.&lt;br /&gt;
   list() args;&lt;br /&gt;
   net.backend.wpa_supplicant(dev, &amp;quot;/etc/wpa_supplicant/all.conf&amp;quot;, &amp;quot;/sbin/wpa_supplicant&amp;quot;, args);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration. See above for static configuration.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address to interface.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-wlan&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process NETCONF {&lt;br /&gt;
   # Wait for some network connection. Order by priority.&lt;br /&gt;
   list(&amp;quot;NET-wlan&amp;quot;, &amp;quot;NET-eop&amp;quot;, &amp;quot;NET-pp&amp;quot;, &amp;quot;NET-ethernet&amp;quot;) pnames;&lt;br /&gt;
   multidepend(pnames) ifdep;&lt;br /&gt;
   &lt;br /&gt;
   #if(pnames == &amp;quot;NET-pp&amp;quot;)&lt;br /&gt;
   &lt;br /&gt;
   var(ifdep.dev) dev;&lt;br /&gt;
   var(ifdep.addr) addr;&lt;br /&gt;
   var(ifdep.addr_prefix) addr_prefix;&lt;br /&gt;
   var(ifdep.gateway) gateway;&lt;br /&gt;
   var(ifdep.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Add default route.&lt;br /&gt;
   net.ipv4.route(&amp;quot;0.0.0.0&amp;quot;, &amp;quot;0&amp;quot;, gateway, &amp;quot;20&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Configure DNS servers.&lt;br /&gt;
   net.dns(dns_servers, &amp;quot;20&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Teisipäev 27.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039; &lt;br /&gt;
* Saada valmis prioritiseerimine&lt;br /&gt;
* Kirjutada skript, mis otsiks avatud wifi võrke&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Alustada logimisega ning androidi rakenduse kirjutamisega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hakkame lähemalt uurima Network Manageri alternatiivina, sest badVPN-il NCD ja 3G konfiguratsioonid satuvad konflikti, mis teeb 3G ünhenduse initsialiseerimise keerukaks.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selgus lõplikult, et NCD-ga ei õnnestu meil töötavat 3G-ga funktsionaalsust luua.&lt;br /&gt;
Hakkasime ülesannet lahendama linuxi &#039;&#039;&#039;Network Manageri&#039;&#039;&#039; abil.&lt;br /&gt;
Network Manageris toimib vaikimisi võrkude prioritiseerimine, esialgu tundub et ei ole võimalik ise prioriteete määrata, ilma source koodi muutmata.&lt;br /&gt;
&lt;br /&gt;
Kalmer hakkab uurima võimalusi kuidas teha androidi rakendust, millega saaks ühenduda bluetoothiga arvutiga ning konfigureerida võrgu prioriteete.&lt;br /&gt;
&lt;br /&gt;
Tegime skripti wifi jaoks, mis otsib kõik avalikud wifi võrgud, mis on läheduses ja koostab nende kohta individuaalfailid mida kasutab Network Maganager võrkudesse automaatseks ühendamiseks.&lt;br /&gt;
&lt;br /&gt;
==WiFi skript, mis otsib avatud võrke==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Autor: Tartu Rõõm&lt;br /&gt;
# Kirjeldus, mida skript teeb&lt;br /&gt;
##&lt;br /&gt;
# Versioon 1.0&lt;br /&gt;
&lt;br /&gt;
# Kontrollib kas juurkasutajana k2ivitati skript&lt;br /&gt;
export LC_ALL=C&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ $UID -ne 0  ]&lt;br /&gt;
then&lt;br /&gt;
  echo &amp;quot;K2ivita skript $(basename $0) juurkasutaja 6igustes&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
#Leiame arvuti wlan seadme mac aadressi&lt;br /&gt;
MAC=$(ifconfig | grep wlan | cut -d &amp;quot; &amp;quot; -f10)&lt;br /&gt;
echo &amp;quot;Arvuti mac: $MAC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Otsime avalikud võrgud&lt;br /&gt;
for line in $(nmcli -p dev wifi | grep [--] | grep s | cut -d &amp;quot;&#039;&amp;quot; -f2); do&lt;br /&gt;
      SSID=$line&lt;br /&gt;
&lt;br /&gt;
   #Suvaline arv UUID&lt;br /&gt;
   HEX=&amp;quot;0123456789abcdef&amp;quot;&lt;br /&gt;
   BEGIN=$( for i in {1..8} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KAKS=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KOLM=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   NELI=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   END=$( for i in {1..12} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   UUID=&amp;quot;$BEGIN-$KAKS-$KOLM-$NELI-$END&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   echo &amp;quot;SSID: $SSID&amp;quot;&lt;br /&gt;
&lt;br /&gt;
      # Loome igale access pointile ssid faili&lt;br /&gt;
      touch /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt; /etc/NetworkManager/system-connections/$SSID &amp;lt;&amp;lt; LOPP&lt;br /&gt;
&lt;br /&gt;
[connection]&lt;br /&gt;
id=$SSID&lt;br /&gt;
uuid=$UUID&lt;br /&gt;
type=802-11-wireless&lt;br /&gt;
&lt;br /&gt;
[802-11-wireless]&lt;br /&gt;
ssid=$SSID&lt;br /&gt;
mode=infrastructure&lt;br /&gt;
mac-address=$MAC&lt;br /&gt;
&lt;br /&gt;
[ipv6]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
[ipv4]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
LOPP&lt;br /&gt;
&lt;br /&gt;
      chmod 600 /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
#service network-manager restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame uurima erinevaid võimalusi kuidas võrke Network manageriga prioritiseerida&#039;&#039;&lt;br /&gt;
Network Manageril on sisseehitatud kindlad prioriteedid ja selle raames toimib kõik väga hästi, aga probleem tekib sellestm et Network Manageris ei saa muuta prioriteete.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lahendus: hakkasime meetrikute alusel prioritiseerima routing tables erinevate ühenduste default route, mille tulemusena saame luua ühenduste prioriteetide järjekorra.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kirjutasime iga Interfacei üles ja allaminemise korral skriptid, mis lisavad ja kustutavad vastava default gateway ja metricuga routi IP route tabelist. &lt;br /&gt;
Default gateway saame kätte Network Manageri käsurea tööriista - &#039;&#039;&#039;nmcli&#039;&#039;&#039; päringu kaudu. Nmcli on kõige kiirem võimalus, sest kliendi poole pealt küsib DHCP infot Network Manager.&lt;br /&gt;
&lt;br /&gt;
==IF up skript==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source = lang&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth1 metric 5&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth2 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth2 metric 2&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;wlan1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface wlan1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev wlan1 metric 3&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;ppp0&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface ttyUSB0 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev ppp0 metric 6&lt;br /&gt;
fi;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Kolmapäev 28.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Teha bluetooth ühendus&lt;br /&gt;
* Teha logimine&lt;br /&gt;
* Korrastada dokumentatsioon&lt;br /&gt;
* Valmistuda presentatsiooniks&lt;br /&gt;
&lt;br /&gt;
Vaikimisi 3G ühendus, tuleb üles liiga hilja. Ei saa kätte default gateway infot piisavalt kiiresti ja tänu sellele routing tablesse ei kirjutata default routei. Et saada kiiremini kätte 3g default gateway kirjutasime skripti, mis leiab 3g seadme ja loob ise ühenduse.&lt;br /&gt;
SKRIPT&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46899</id>
		<title>Meeskond &quot;Tartu rõõm&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46899"/>
		<updated>2012-03-29T09:13:47Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* NCD konfiguratsioon */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Liikmed ==&lt;br /&gt;
*Inger Romanenko&lt;br /&gt;
*Sander Saveli&lt;br /&gt;
*Sander Arnus&lt;br /&gt;
*Kalmer Tart&lt;br /&gt;
*Kristjan Rõõm&lt;br /&gt;
&lt;br /&gt;
==Meie eesmärk intensiivõppe raames==&lt;br /&gt;
&lt;br /&gt;
===Automaatne võrguühenduste konfigureerimine erinevate võrkudega===&lt;br /&gt;
&lt;br /&gt;
Konfigureerida arvuti, millel on 3G, Wifi, Ethernet-over-Powerline ja Etherneti pordid ning mille operatsioonisüsteemiks on Ubuntu Linux. Võrguühendust vahetataks ühenduse olemasolu ja prioriteetide alusel üle erinevate tehnoloogiate võimalikult lihtsalt ja kiirelt. IP aadress ei pea samaks jääma. Wifi adapter valib ise parima avaliku võrgu, kui ei ole konfigureeritud teisiti. Kui Wifi ühendus kaob, proovib teisi ka taustal. Kõik ümberlülitamised logitakse. Näiteks: Prioriteetideks on Ethernet:1; EoP:2; Wifi:3; 3G:4. Ühendatakse kõikidesse võimalikesse võrkudesse ning kui Ethernet ära kukub ning pole võimalik ühenduda ka läbi EoP, toimub ühenduse ümberlülitamine Wifi võrku. Kui Wifi ära kukub, siis ühendutakse 3G võrku. Kui tuleb suvaline public wifi tagasi, ühendutakse sinna jne. Luua lihtne kasutajaliides Android telefonile, mis lubab üle bluetooth ühenduse erinevaid võrke ja prioriteete konfigureerida ning vaadata ühenduste ajalugu.&lt;br /&gt;
&lt;br /&gt;
==Ajakava/progress==&lt;br /&gt;
=== Esmaspäev 26.03.2012 ===&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Tutvuda olukorraga ja tehnoloogiatega&lt;br /&gt;
* Kohtuda Ericssoni esindajaga, saada täpne ülevaade ülesandest.&lt;br /&gt;
* Panna paika algne tegevuskava.&lt;br /&gt;
&lt;br /&gt;
Küsimused Ericssonile:&lt;br /&gt;
* Kuidas teha vahet eop-l ja ethernetil?&lt;br /&gt;
* Mis tehnoloogiaid kasutada&lt;br /&gt;
* Miks selline ülesanne?&lt;br /&gt;
* Kus seda kasutama võidakse hakata?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Edusammud:&#039;&#039;&#039;&lt;br /&gt;
* Leidsime badVPN NCD http://code.google.com/p/badvpn/wiki/NCD, nimelise võrguhaldustarkvara ning proovime sellega prioritiseerida erinevaid võrguliideseid.&lt;br /&gt;
* Kohtusime Ericssoni esindajaga ning saime täpsema ülevaate ülesandest. Peame määrama ühendustele prioriteedid ning valima parima ühenduse liigi vastavalt prioriteedile. Wifi puhul peame ühenduma public wifisse ning kui on mitu erinevat võrku saadaval, proovima erinevaid. Võrgutegevust logitakse. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ericssonist saime katsetamiseks kaasa järgneva tehnika :&#039;&#039;&lt;br /&gt;
* nettop PC FIT-PC2&lt;br /&gt;
* 3G EMT mobiilse internetimodemi&lt;br /&gt;
* bluetooth adapteri&lt;br /&gt;
* ethernet over powerline seadmed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Küsimus:&#039;&#039;&#039; Kas kasutame enda leitud badVPN NCD-d või kasutame Linuxis vaikimisi töös olevat Network Manageri?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Materjalid badVPN NCD kohta:&#039;&#039;&#039;&lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/NCD &lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/Installation&lt;br /&gt;
&lt;br /&gt;
Tegime katseid virtualiseeritud keskkonnas. Hetkel suudab NCD prioriteetide alusel ühenduda erinevatesse ethernet liidestega. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Otsustasime enda leitud lahenduse kasuks, sest badVPN NCD teeb täpselt seda mis meil vaja - ühendub erinevatesse võrkudesse prioriteedide alusel.&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;Hetkel tundub, et Network Manageri kasutades peaksime tunduvalt rohkem loogikat ise valmis kirjutama.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Läksime üle katsetustele päris masinas. Installeerisime nettopi peale Lubuntu Linuxi. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame modifitseerima badVPN-i, et saada tööle ka Wi-Fi ja 3G.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tulemus:&#039;&#039;&#039; NCD suudab prioriteedide alusel valida parima ühenduse wifi ja etherneti vahel. Hetkel aga on probleem wifi public võrkudega, nimelt ühendub wifi adapter ainult etteantud võrku. Tuleks kirjutada skript, mis otsib avatud wifi võrke. Alustasime ka mobiilse interneti lahendusega, kuid hetkel tunudb, et NCD seda võimalust ei toeta.&lt;br /&gt;
&lt;br /&gt;
=NCD konfiguratsioon=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cfm&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Example NCD program.&lt;br /&gt;
# All interfaces are disabled by default.&lt;br /&gt;
# Remove/comment the first line of a process to activate the interface.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
process ethernet1 {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and link.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Static configuration.&lt;br /&gt;
   # To use, comment/remove the DHCP configuration above and uncomment this.&lt;br /&gt;
   #var(&amp;quot;192.168.111.116&amp;quot;) addr;&lt;br /&gt;
   #var(&amp;quot;24&amp;quot;) addr_prefix;&lt;br /&gt;
   #var(&amp;quot;192.168.111.1&amp;quot;) gateway;&lt;br /&gt;
   #list(&amp;quot;192.168.111.14&amp;quot;, &amp;quot;193.2.1.66&amp;quot;) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-ethernet&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process eop  {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth2&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-eop&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process pp {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;ppp0&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   #var(dhcp.addr) addr;&lt;br /&gt;
   #var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   #var(dhcp.gateway) gateway;&lt;br /&gt;
   #var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   #net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-pp&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process wlan {&lt;br /&gt;
&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;wlan1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and rfkill.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.backend.rfkill(&amp;quot;wlan&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Connect to wireless network.&lt;br /&gt;
   list() args;&lt;br /&gt;
   net.backend.wpa_supplicant(dev, &amp;quot;/etc/wpa_supplicant/all.conf&amp;quot;, &amp;quot;/sbin/wpa_supplicant&amp;quot;, args);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration. See above for static configuration.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address to interface.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-wlan&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process NETCONF {&lt;br /&gt;
   # Wait for some network connection. Order by priority.&lt;br /&gt;
   list(&amp;quot;NET-wlan&amp;quot;, &amp;quot;NET-eop&amp;quot;, &amp;quot;NET-pp&amp;quot;, &amp;quot;NET-ethernet&amp;quot;) pnames;&lt;br /&gt;
   multidepend(pnames) ifdep;&lt;br /&gt;
   &lt;br /&gt;
   #if(pnames == &amp;quot;NET-pp&amp;quot;)&lt;br /&gt;
   &lt;br /&gt;
   var(ifdep.dev) dev;&lt;br /&gt;
   var(ifdep.addr) addr;&lt;br /&gt;
   var(ifdep.addr_prefix) addr_prefix;&lt;br /&gt;
   var(ifdep.gateway) gateway;&lt;br /&gt;
   var(ifdep.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Add default route.&lt;br /&gt;
   net.ipv4.route(&amp;quot;0.0.0.0&amp;quot;, &amp;quot;0&amp;quot;, gateway, &amp;quot;20&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Configure DNS servers.&lt;br /&gt;
   net.dns(dns_servers, &amp;quot;20&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Teisipäev 27.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039; &lt;br /&gt;
* Saada valmis prioritiseerimine&lt;br /&gt;
* Kirjutada skript, mis otsiks avatud wifi võrke&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Alustada logimisega ning androidi rakenduse kirjutamisega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hakkame lähemalt uurima Network Manageri alternatiivina, sest badVPN-il NCD ja 3G konfiguratsioonid satuvad konflikti, mis teeb 3G ünhenduse initsialiseerimise keerukaks.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selgus lõplikult, et NCD-ga ei õnnestu meil töötavat 3G-ga funktsionaalsust luua.&lt;br /&gt;
Hakkasime ülesannet lahendama linuxi &#039;&#039;&#039;Network Manageri&#039;&#039;&#039; abil.&lt;br /&gt;
Network Manageris toimib vaikimisi võrkude prioritiseerimine, esialgu tundub et ei ole võimalik ise prioriteete määrata, ilma source koodi muutmata.&lt;br /&gt;
&lt;br /&gt;
Kalmer hakkab uurima võimalusi kuidas teha androidi rakendust, millega saaks ühenduda bluetoothiga arvutiga ning konfigureerida võrgu prioriteete.&lt;br /&gt;
&lt;br /&gt;
Tegime skripti wifi jaoks, mis otsib kõik avalikud wifi võrgud, mis on läheduses ja koostab nende kohta individuaalfailid mida kasutab Network Maganager võrkudesse automaatseks ühendamiseks.&lt;br /&gt;
&lt;br /&gt;
==WiFi skript, mis otsib avatud võrke==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Autor: Tartu Rõõm&lt;br /&gt;
# Kirjeldus, mida skript teeb&lt;br /&gt;
##&lt;br /&gt;
# Versioon 1.0&lt;br /&gt;
&lt;br /&gt;
# Kontrollib kas juurkasutajana k2ivitati skript&lt;br /&gt;
export LC_ALL=C&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ $UID -ne 0  ]&lt;br /&gt;
then&lt;br /&gt;
  echo &amp;quot;K2ivita skript $(basename $0) juurkasutaja 6igustes&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
#Leiame arvuti wlan seadme mac aadressi&lt;br /&gt;
MAC=$(ifconfig | grep wlan | cut -d &amp;quot; &amp;quot; -f10)&lt;br /&gt;
echo &amp;quot;Arvuti mac: $MAC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Otsime avalikud võrgud&lt;br /&gt;
for line in $(nmcli -p dev wifi | grep [--] | grep s | cut -d &amp;quot;&#039;&amp;quot; -f2); do&lt;br /&gt;
      SSID=$line&lt;br /&gt;
&lt;br /&gt;
   #Suvaline arv UUID&lt;br /&gt;
   HEX=&amp;quot;0123456789abcdef&amp;quot;&lt;br /&gt;
   BEGIN=$( for i in {1..8} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KAKS=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KOLM=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   NELI=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   END=$( for i in {1..12} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   UUID=&amp;quot;$BEGIN-$KAKS-$KOLM-$NELI-$END&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   echo &amp;quot;SSID: $SSID&amp;quot;&lt;br /&gt;
&lt;br /&gt;
      # Loome igale access pointile ssid faili&lt;br /&gt;
      touch /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt; /etc/NetworkManager/system-connections/$SSID &amp;lt;&amp;lt; LOPP&lt;br /&gt;
&lt;br /&gt;
[connection]&lt;br /&gt;
id=$SSID&lt;br /&gt;
uuid=$UUID&lt;br /&gt;
type=802-11-wireless&lt;br /&gt;
&lt;br /&gt;
[802-11-wireless]&lt;br /&gt;
ssid=$SSID&lt;br /&gt;
mode=infrastructure&lt;br /&gt;
mac-address=$MAC&lt;br /&gt;
&lt;br /&gt;
[ipv6]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
[ipv4]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
LOPP&lt;br /&gt;
&lt;br /&gt;
      chmod 600 /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
#service network-manager restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame uurima erinevaid võimalusi kuidas võrke Network manageriga prioritiseerida&#039;&#039;&lt;br /&gt;
Network Manageril on sisseehitatud kindlad prioriteedid ja selle raames toimib kõik väga hästi, aga probleem tekib sellestm et Network Manageris ei saa muuta prioriteete.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lahendus: hakkasime meetrikute alusel prioritiseerima routing tables erinevate ühenduste default route, mille tulemusena saame luua ühenduste prioriteetide järjekorra.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kirjutasime iga Interfacei üles ja allaminemise korral skriptid, mis lisavad ja kustutavad vastava default gateway ja metricuga routi IP route tabelist. &lt;br /&gt;
Default gateway saame kätte Network Manageri käsurea tööriista - &#039;&#039;&#039;nmcli&#039;&#039;&#039; päringu kaudu. Nmcli on kõige kiirem võimalus, sest kliendi poole pealt küsib DHCP infot Network Manager.&lt;br /&gt;
&lt;br /&gt;
==IF up skript==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source = lang&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth1 metric 5&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth2 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth2 metric 2&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;wlan1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface wlan1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev wlan1 metric 3&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;ppp0&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface ttyUSB0 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev ppp0 metric 6&lt;br /&gt;
fi;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Kolmapäev 28.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Teha bluetooth ühendus&lt;br /&gt;
* Teha logimine&lt;br /&gt;
* Korrastada dokumentatsioon&lt;br /&gt;
* Valmistuda presentatsiooniks&lt;br /&gt;
&lt;br /&gt;
Vaikimisi 3G ühendus, tuleb üles liiga hilja. Ei saa kätte default gateway infot piisavalt kiiresti ja tänu sellele routing tablesse ei kirjutata default routei. Et saada kiiremini kätte 3g default gateway kirjutasime skripti, mis leiab 3g seadme ja loob ise ühenduse.&lt;br /&gt;
SKRIPT&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46898</id>
		<title>Meeskond &quot;Tartu rõõm&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46898"/>
		<updated>2012-03-29T09:13:10Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* Esmaspäev 26.03.2012 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Liikmed ==&lt;br /&gt;
*Inger Romanenko&lt;br /&gt;
*Sander Saveli&lt;br /&gt;
*Sander Arnus&lt;br /&gt;
*Kalmer Tart&lt;br /&gt;
*Kristjan Rõõm&lt;br /&gt;
&lt;br /&gt;
==Meie eesmärk intensiivõppe raames==&lt;br /&gt;
&lt;br /&gt;
===Automaatne võrguühenduste konfigureerimine erinevate võrkudega===&lt;br /&gt;
&lt;br /&gt;
Konfigureerida arvuti, millel on 3G, Wifi, Ethernet-over-Powerline ja Etherneti pordid ning mille operatsioonisüsteemiks on Ubuntu Linux. Võrguühendust vahetataks ühenduse olemasolu ja prioriteetide alusel üle erinevate tehnoloogiate võimalikult lihtsalt ja kiirelt. IP aadress ei pea samaks jääma. Wifi adapter valib ise parima avaliku võrgu, kui ei ole konfigureeritud teisiti. Kui Wifi ühendus kaob, proovib teisi ka taustal. Kõik ümberlülitamised logitakse. Näiteks: Prioriteetideks on Ethernet:1; EoP:2; Wifi:3; 3G:4. Ühendatakse kõikidesse võimalikesse võrkudesse ning kui Ethernet ära kukub ning pole võimalik ühenduda ka läbi EoP, toimub ühenduse ümberlülitamine Wifi võrku. Kui Wifi ära kukub, siis ühendutakse 3G võrku. Kui tuleb suvaline public wifi tagasi, ühendutakse sinna jne. Luua lihtne kasutajaliides Android telefonile, mis lubab üle bluetooth ühenduse erinevaid võrke ja prioriteete konfigureerida ning vaadata ühenduste ajalugu.&lt;br /&gt;
&lt;br /&gt;
==Ajakava/progress==&lt;br /&gt;
=== Esmaspäev 26.03.2012 ===&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Tutvuda olukorraga ja tehnoloogiatega&lt;br /&gt;
* Kohtuda Ericssoni esindajaga, saada täpne ülevaade ülesandest.&lt;br /&gt;
* Panna paika algne tegevuskava.&lt;br /&gt;
&lt;br /&gt;
Küsimused Ericssonile:&lt;br /&gt;
* Kuidas teha vahet eop-l ja ethernetil?&lt;br /&gt;
* Mis tehnoloogiaid kasutada&lt;br /&gt;
* Miks selline ülesanne?&lt;br /&gt;
* Kus seda kasutama võidakse hakata?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Edusammud:&#039;&#039;&#039;&lt;br /&gt;
* Leidsime badVPN NCD http://code.google.com/p/badvpn/wiki/NCD, nimelise võrguhaldustarkvara ning proovime sellega prioritiseerida erinevaid võrguliideseid.&lt;br /&gt;
* Kohtusime Ericssoni esindajaga ning saime täpsema ülevaate ülesandest. Peame määrama ühendustele prioriteedid ning valima parima ühenduse liigi vastavalt prioriteedile. Wifi puhul peame ühenduma public wifisse ning kui on mitu erinevat võrku saadaval, proovima erinevaid. Võrgutegevust logitakse. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ericssonist saime katsetamiseks kaasa järgneva tehnika :&#039;&#039;&lt;br /&gt;
* nettop PC FIT-PC2&lt;br /&gt;
* 3G EMT mobiilse internetimodemi&lt;br /&gt;
* bluetooth adapteri&lt;br /&gt;
* ethernet over powerline seadmed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Küsimus:&#039;&#039;&#039; Kas kasutame enda leitud badVPN NCD-d või kasutame Linuxis vaikimisi töös olevat Network Manageri?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Materjalid badVPN NCD kohta:&#039;&#039;&#039;&lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/NCD &lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/Installation&lt;br /&gt;
&lt;br /&gt;
Tegime katseid virtualiseeritud keskkonnas. Hetkel suudab NCD prioriteetide alusel ühenduda erinevatesse ethernet liidestega. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Otsustasime enda leitud lahenduse kasuks, sest badVPN NCD teeb täpselt seda mis meil vaja - ühendub erinevatesse võrkudesse prioriteedide alusel.&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;Hetkel tundub, et Network Manageri kasutades peaksime tunduvalt rohkem loogikat ise valmis kirjutama.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Läksime üle katsetustele päris masinas. Installeerisime nettopi peale Lubuntu Linuxi. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame modifitseerima badVPN-i, et saada tööle ka Wi-Fi ja 3G.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tulemus:&#039;&#039;&#039; NCD suudab prioriteedide alusel valida parima ühenduse wifi ja etherneti vahel. Hetkel aga on probleem wifi public võrkudega, nimelt ühendub wifi adapter ainult etteantud võrku. Tuleks kirjutada skript, mis otsib avatud wifi võrke. Alustasime ka mobiilse interneti lahendusega, kuid hetkel tunudb, et NCD seda võimalust ei toeta.&lt;br /&gt;
&lt;br /&gt;
===NCD konfiguratsioon===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cfm&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Example NCD program.&lt;br /&gt;
# All interfaces are disabled by default.&lt;br /&gt;
# Remove/comment the first line of a process to activate the interface.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
process ethernet1 {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and link.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Static configuration.&lt;br /&gt;
   # To use, comment/remove the DHCP configuration above and uncomment this.&lt;br /&gt;
   #var(&amp;quot;192.168.111.116&amp;quot;) addr;&lt;br /&gt;
   #var(&amp;quot;24&amp;quot;) addr_prefix;&lt;br /&gt;
   #var(&amp;quot;192.168.111.1&amp;quot;) gateway;&lt;br /&gt;
   #list(&amp;quot;192.168.111.14&amp;quot;, &amp;quot;193.2.1.66&amp;quot;) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-ethernet&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process eop  {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth2&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-eop&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process pp {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;ppp0&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   #var(dhcp.addr) addr;&lt;br /&gt;
   #var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   #var(dhcp.gateway) gateway;&lt;br /&gt;
   #var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   #net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-pp&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process wlan {&lt;br /&gt;
&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;wlan1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and rfkill.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.backend.rfkill(&amp;quot;wlan&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Connect to wireless network.&lt;br /&gt;
   list() args;&lt;br /&gt;
   net.backend.wpa_supplicant(dev, &amp;quot;/etc/wpa_supplicant/all.conf&amp;quot;, &amp;quot;/sbin/wpa_supplicant&amp;quot;, args);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration. See above for static configuration.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address to interface.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-wlan&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process NETCONF {&lt;br /&gt;
   # Wait for some network connection. Order by priority.&lt;br /&gt;
   list(&amp;quot;NET-wlan&amp;quot;, &amp;quot;NET-eop&amp;quot;, &amp;quot;NET-pp&amp;quot;, &amp;quot;NET-ethernet&amp;quot;) pnames;&lt;br /&gt;
   multidepend(pnames) ifdep;&lt;br /&gt;
   &lt;br /&gt;
   #if(pnames == &amp;quot;NET-pp&amp;quot;)&lt;br /&gt;
   &lt;br /&gt;
   var(ifdep.dev) dev;&lt;br /&gt;
   var(ifdep.addr) addr;&lt;br /&gt;
   var(ifdep.addr_prefix) addr_prefix;&lt;br /&gt;
   var(ifdep.gateway) gateway;&lt;br /&gt;
   var(ifdep.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Add default route.&lt;br /&gt;
   net.ipv4.route(&amp;quot;0.0.0.0&amp;quot;, &amp;quot;0&amp;quot;, gateway, &amp;quot;20&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Configure DNS servers.&lt;br /&gt;
   net.dns(dns_servers, &amp;quot;20&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Teisipäev 27.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039; &lt;br /&gt;
* Saada valmis prioritiseerimine&lt;br /&gt;
* Kirjutada skript, mis otsiks avatud wifi võrke&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Alustada logimisega ning androidi rakenduse kirjutamisega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hakkame lähemalt uurima Network Manageri alternatiivina, sest badVPN-il NCD ja 3G konfiguratsioonid satuvad konflikti, mis teeb 3G ünhenduse initsialiseerimise keerukaks.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selgus lõplikult, et NCD-ga ei õnnestu meil töötavat 3G-ga funktsionaalsust luua.&lt;br /&gt;
Hakkasime ülesannet lahendama linuxi &#039;&#039;&#039;Network Manageri&#039;&#039;&#039; abil.&lt;br /&gt;
Network Manageris toimib vaikimisi võrkude prioritiseerimine, esialgu tundub et ei ole võimalik ise prioriteete määrata, ilma source koodi muutmata.&lt;br /&gt;
&lt;br /&gt;
Kalmer hakkab uurima võimalusi kuidas teha androidi rakendust, millega saaks ühenduda bluetoothiga arvutiga ning konfigureerida võrgu prioriteete.&lt;br /&gt;
&lt;br /&gt;
Tegime skripti wifi jaoks, mis otsib kõik avalikud wifi võrgud, mis on läheduses ja koostab nende kohta individuaalfailid mida kasutab Network Maganager võrkudesse automaatseks ühendamiseks.&lt;br /&gt;
&lt;br /&gt;
==WiFi skript, mis otsib avatud võrke==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Autor: Tartu Rõõm&lt;br /&gt;
# Kirjeldus, mida skript teeb&lt;br /&gt;
##&lt;br /&gt;
# Versioon 1.0&lt;br /&gt;
&lt;br /&gt;
# Kontrollib kas juurkasutajana k2ivitati skript&lt;br /&gt;
export LC_ALL=C&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ $UID -ne 0  ]&lt;br /&gt;
then&lt;br /&gt;
  echo &amp;quot;K2ivita skript $(basename $0) juurkasutaja 6igustes&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
#Leiame arvuti wlan seadme mac aadressi&lt;br /&gt;
MAC=$(ifconfig | grep wlan | cut -d &amp;quot; &amp;quot; -f10)&lt;br /&gt;
echo &amp;quot;Arvuti mac: $MAC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Otsime avalikud võrgud&lt;br /&gt;
for line in $(nmcli -p dev wifi | grep [--] | grep s | cut -d &amp;quot;&#039;&amp;quot; -f2); do&lt;br /&gt;
      SSID=$line&lt;br /&gt;
&lt;br /&gt;
   #Suvaline arv UUID&lt;br /&gt;
   HEX=&amp;quot;0123456789abcdef&amp;quot;&lt;br /&gt;
   BEGIN=$( for i in {1..8} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KAKS=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KOLM=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   NELI=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   END=$( for i in {1..12} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   UUID=&amp;quot;$BEGIN-$KAKS-$KOLM-$NELI-$END&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   echo &amp;quot;SSID: $SSID&amp;quot;&lt;br /&gt;
&lt;br /&gt;
      # Loome igale access pointile ssid faili&lt;br /&gt;
      touch /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt; /etc/NetworkManager/system-connections/$SSID &amp;lt;&amp;lt; LOPP&lt;br /&gt;
&lt;br /&gt;
[connection]&lt;br /&gt;
id=$SSID&lt;br /&gt;
uuid=$UUID&lt;br /&gt;
type=802-11-wireless&lt;br /&gt;
&lt;br /&gt;
[802-11-wireless]&lt;br /&gt;
ssid=$SSID&lt;br /&gt;
mode=infrastructure&lt;br /&gt;
mac-address=$MAC&lt;br /&gt;
&lt;br /&gt;
[ipv6]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
[ipv4]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
LOPP&lt;br /&gt;
&lt;br /&gt;
      chmod 600 /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
#service network-manager restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame uurima erinevaid võimalusi kuidas võrke Network manageriga prioritiseerida&#039;&#039;&lt;br /&gt;
Network Manageril on sisseehitatud kindlad prioriteedid ja selle raames toimib kõik väga hästi, aga probleem tekib sellestm et Network Manageris ei saa muuta prioriteete.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lahendus: hakkasime meetrikute alusel prioritiseerima routing tables erinevate ühenduste default route, mille tulemusena saame luua ühenduste prioriteetide järjekorra.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kirjutasime iga Interfacei üles ja allaminemise korral skriptid, mis lisavad ja kustutavad vastava default gateway ja metricuga routi IP route tabelist. &lt;br /&gt;
Default gateway saame kätte Network Manageri käsurea tööriista - &#039;&#039;&#039;nmcli&#039;&#039;&#039; päringu kaudu. Nmcli on kõige kiirem võimalus, sest kliendi poole pealt küsib DHCP infot Network Manager.&lt;br /&gt;
&lt;br /&gt;
==IF up skript==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source = lang&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth1 metric 5&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth2 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth2 metric 2&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;wlan1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface wlan1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev wlan1 metric 3&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;ppp0&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface ttyUSB0 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev ppp0 metric 6&lt;br /&gt;
fi;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Kolmapäev 28.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Teha bluetooth ühendus&lt;br /&gt;
* Teha logimine&lt;br /&gt;
* Korrastada dokumentatsioon&lt;br /&gt;
* Valmistuda presentatsiooniks&lt;br /&gt;
&lt;br /&gt;
Vaikimisi 3G ühendus, tuleb üles liiga hilja. Ei saa kätte default gateway infot piisavalt kiiresti ja tänu sellele routing tablesse ei kirjutata default routei. Et saada kiiremini kätte 3g default gateway kirjutasime skripti, mis leiab 3g seadme ja loob ise ühenduse.&lt;br /&gt;
SKRIPT&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46897</id>
		<title>Meeskond &quot;Tartu rõõm&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46897"/>
		<updated>2012-03-29T09:12:47Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* NCD konfiguratsioon */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Liikmed ==&lt;br /&gt;
*Inger Romanenko&lt;br /&gt;
*Sander Saveli&lt;br /&gt;
*Sander Arnus&lt;br /&gt;
*Kalmer Tart&lt;br /&gt;
*Kristjan Rõõm&lt;br /&gt;
&lt;br /&gt;
==Meie eesmärk intensiivõppe raames==&lt;br /&gt;
&lt;br /&gt;
===Automaatne võrguühenduste konfigureerimine erinevate võrkudega===&lt;br /&gt;
&lt;br /&gt;
Konfigureerida arvuti, millel on 3G, Wifi, Ethernet-over-Powerline ja Etherneti pordid ning mille operatsioonisüsteemiks on Ubuntu Linux. Võrguühendust vahetataks ühenduse olemasolu ja prioriteetide alusel üle erinevate tehnoloogiate võimalikult lihtsalt ja kiirelt. IP aadress ei pea samaks jääma. Wifi adapter valib ise parima avaliku võrgu, kui ei ole konfigureeritud teisiti. Kui Wifi ühendus kaob, proovib teisi ka taustal. Kõik ümberlülitamised logitakse. Näiteks: Prioriteetideks on Ethernet:1; EoP:2; Wifi:3; 3G:4. Ühendatakse kõikidesse võimalikesse võrkudesse ning kui Ethernet ära kukub ning pole võimalik ühenduda ka läbi EoP, toimub ühenduse ümberlülitamine Wifi võrku. Kui Wifi ära kukub, siis ühendutakse 3G võrku. Kui tuleb suvaline public wifi tagasi, ühendutakse sinna jne. Luua lihtne kasutajaliides Android telefonile, mis lubab üle bluetooth ühenduse erinevaid võrke ja prioriteete konfigureerida ning vaadata ühenduste ajalugu.&lt;br /&gt;
&lt;br /&gt;
==Ajakava/progress==&lt;br /&gt;
=== Esmaspäev 26.03.2012 ===&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Tutvuda olukorraga ja tehnoloogiatega&lt;br /&gt;
* Kohtuda Ericssoni esindajaga, saada täpne ülevaade ülesandest.&lt;br /&gt;
* Panna paika algne tegevuskava.&lt;br /&gt;
&lt;br /&gt;
Küsimused Ericssonile:&lt;br /&gt;
* Kuidas teha vahet eop-l ja ethernetil?&lt;br /&gt;
* Mis tehnoloogiaid kasutada&lt;br /&gt;
* Miks selline ülesanne?&lt;br /&gt;
* Kus seda kasutama võidakse hakata?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Edusammud:&#039;&#039;&#039;&lt;br /&gt;
* Leidsime badVPN NCD http://code.google.com/p/badvpn/wiki/NCD, nimelise võrguhaldustarkvara ning proovime sellega prioritiseerida erinevaid võrguliideseid.&lt;br /&gt;
* Kohtusime Ericssoni esindajaga ning saime täpsema ülevaate ülesandest. Peame määrama ühendustele prioriteedid ning valima parima ühenduse liigi vastavalt prioriteedile. Wifi puhul peame ühenduma public wifisse ning kui on mitu erinevat võrku saadaval, proovima erinevaid. Võrgutegevust logitakse. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ericssonist saime katsetamiseks kaasa järgneva tehnika :&#039;&#039;&lt;br /&gt;
* nettop PC FIT-PC2&lt;br /&gt;
* 3G EMT mobiilse internetimodemi&lt;br /&gt;
* bluetooth adapteri&lt;br /&gt;
* ethernet over powerline seadmed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Küsimus:&#039;&#039;&#039; Kas kasutame enda leitud badVPN NCD-d või kasutame Linuxis vaikimisi töös olevat Network Manageri?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Materjalid badVPN NCD kohta:&#039;&#039;&#039;&lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/NCD &lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/Installation&lt;br /&gt;
&lt;br /&gt;
Tegime katseid virtualiseeritud keskkonnas. Hetkel suudab NCD prioriteetide alusel ühenduda erinevatesse ethernet liidestega. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Otsustasime enda leitud lahenduse kasuks, sest badVPN NCD teeb täpselt seda mis meil vaja - ühendub erinevatesse võrkudesse prioriteedide alusel.&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;Hetkel tundub, et Network Manageri kasutades peaksime tunduvalt rohkem loogikat ise valmis kirjutama.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Läksime üle katsetustele päris masinas. Installeerisime nettopi peale Lubuntu Linuxi. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame modifitseerima badVPN-i, et saada tööle ka Wi-Fi ja 3G.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tulemus:&#039;&#039;&#039; NCD suudab prioriteedide alusel valida parima ühenduse wifi ja etherneti vahel. Hetkel aga on probleem wifi public võrkudega, nimelt ühendub wifi adapter ainult etteantud võrku. Tuleks kirjutada skript, mis otsib avatud wifi võrke. Alustasime ka mobiilse interneti lahendusega, kuid hetkel tunudb, et NCD seda võimalust ei toeta.&lt;br /&gt;
&lt;br /&gt;
===NCD konfiguratsioon==`&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cfm&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Example NCD program.&lt;br /&gt;
# All interfaces are disabled by default.&lt;br /&gt;
# Remove/comment the first line of a process to activate the interface.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
process ethernet1 {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and link.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Static configuration.&lt;br /&gt;
   # To use, comment/remove the DHCP configuration above and uncomment this.&lt;br /&gt;
   #var(&amp;quot;192.168.111.116&amp;quot;) addr;&lt;br /&gt;
   #var(&amp;quot;24&amp;quot;) addr_prefix;&lt;br /&gt;
   #var(&amp;quot;192.168.111.1&amp;quot;) gateway;&lt;br /&gt;
   #list(&amp;quot;192.168.111.14&amp;quot;, &amp;quot;193.2.1.66&amp;quot;) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-ethernet&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process eop  {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth2&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-eop&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process pp {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;ppp0&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   #var(dhcp.addr) addr;&lt;br /&gt;
   #var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   #var(dhcp.gateway) gateway;&lt;br /&gt;
   #var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   #net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-pp&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process wlan {&lt;br /&gt;
&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;wlan1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and rfkill.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.backend.rfkill(&amp;quot;wlan&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Connect to wireless network.&lt;br /&gt;
   list() args;&lt;br /&gt;
   net.backend.wpa_supplicant(dev, &amp;quot;/etc/wpa_supplicant/all.conf&amp;quot;, &amp;quot;/sbin/wpa_supplicant&amp;quot;, args);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration. See above for static configuration.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address to interface.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-wlan&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process NETCONF {&lt;br /&gt;
   # Wait for some network connection. Order by priority.&lt;br /&gt;
   list(&amp;quot;NET-wlan&amp;quot;, &amp;quot;NET-eop&amp;quot;, &amp;quot;NET-pp&amp;quot;, &amp;quot;NET-ethernet&amp;quot;) pnames;&lt;br /&gt;
   multidepend(pnames) ifdep;&lt;br /&gt;
   &lt;br /&gt;
   #if(pnames == &amp;quot;NET-pp&amp;quot;)&lt;br /&gt;
   &lt;br /&gt;
   var(ifdep.dev) dev;&lt;br /&gt;
   var(ifdep.addr) addr;&lt;br /&gt;
   var(ifdep.addr_prefix) addr_prefix;&lt;br /&gt;
   var(ifdep.gateway) gateway;&lt;br /&gt;
   var(ifdep.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Add default route.&lt;br /&gt;
   net.ipv4.route(&amp;quot;0.0.0.0&amp;quot;, &amp;quot;0&amp;quot;, gateway, &amp;quot;20&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Configure DNS servers.&lt;br /&gt;
   net.dns(dns_servers, &amp;quot;20&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Teisipäev 27.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039; &lt;br /&gt;
* Saada valmis prioritiseerimine&lt;br /&gt;
* Kirjutada skript, mis otsiks avatud wifi võrke&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Alustada logimisega ning androidi rakenduse kirjutamisega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hakkame lähemalt uurima Network Manageri alternatiivina, sest badVPN-il NCD ja 3G konfiguratsioonid satuvad konflikti, mis teeb 3G ünhenduse initsialiseerimise keerukaks.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selgus lõplikult, et NCD-ga ei õnnestu meil töötavat 3G-ga funktsionaalsust luua.&lt;br /&gt;
Hakkasime ülesannet lahendama linuxi &#039;&#039;&#039;Network Manageri&#039;&#039;&#039; abil.&lt;br /&gt;
Network Manageris toimib vaikimisi võrkude prioritiseerimine, esialgu tundub et ei ole võimalik ise prioriteete määrata, ilma source koodi muutmata.&lt;br /&gt;
&lt;br /&gt;
Kalmer hakkab uurima võimalusi kuidas teha androidi rakendust, millega saaks ühenduda bluetoothiga arvutiga ning konfigureerida võrgu prioriteete.&lt;br /&gt;
&lt;br /&gt;
Tegime skripti wifi jaoks, mis otsib kõik avalikud wifi võrgud, mis on läheduses ja koostab nende kohta individuaalfailid mida kasutab Network Maganager võrkudesse automaatseks ühendamiseks.&lt;br /&gt;
&lt;br /&gt;
==WiFi skript, mis otsib avatud võrke==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Autor: Tartu Rõõm&lt;br /&gt;
# Kirjeldus, mida skript teeb&lt;br /&gt;
##&lt;br /&gt;
# Versioon 1.0&lt;br /&gt;
&lt;br /&gt;
# Kontrollib kas juurkasutajana k2ivitati skript&lt;br /&gt;
export LC_ALL=C&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ $UID -ne 0  ]&lt;br /&gt;
then&lt;br /&gt;
  echo &amp;quot;K2ivita skript $(basename $0) juurkasutaja 6igustes&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
#Leiame arvuti wlan seadme mac aadressi&lt;br /&gt;
MAC=$(ifconfig | grep wlan | cut -d &amp;quot; &amp;quot; -f10)&lt;br /&gt;
echo &amp;quot;Arvuti mac: $MAC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Otsime avalikud võrgud&lt;br /&gt;
for line in $(nmcli -p dev wifi | grep [--] | grep s | cut -d &amp;quot;&#039;&amp;quot; -f2); do&lt;br /&gt;
      SSID=$line&lt;br /&gt;
&lt;br /&gt;
   #Suvaline arv UUID&lt;br /&gt;
   HEX=&amp;quot;0123456789abcdef&amp;quot;&lt;br /&gt;
   BEGIN=$( for i in {1..8} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KAKS=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KOLM=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   NELI=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   END=$( for i in {1..12} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   UUID=&amp;quot;$BEGIN-$KAKS-$KOLM-$NELI-$END&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   echo &amp;quot;SSID: $SSID&amp;quot;&lt;br /&gt;
&lt;br /&gt;
      # Loome igale access pointile ssid faili&lt;br /&gt;
      touch /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt; /etc/NetworkManager/system-connections/$SSID &amp;lt;&amp;lt; LOPP&lt;br /&gt;
&lt;br /&gt;
[connection]&lt;br /&gt;
id=$SSID&lt;br /&gt;
uuid=$UUID&lt;br /&gt;
type=802-11-wireless&lt;br /&gt;
&lt;br /&gt;
[802-11-wireless]&lt;br /&gt;
ssid=$SSID&lt;br /&gt;
mode=infrastructure&lt;br /&gt;
mac-address=$MAC&lt;br /&gt;
&lt;br /&gt;
[ipv6]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
[ipv4]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
LOPP&lt;br /&gt;
&lt;br /&gt;
      chmod 600 /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
#service network-manager restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame uurima erinevaid võimalusi kuidas võrke Network manageriga prioritiseerida&#039;&#039;&lt;br /&gt;
Network Manageril on sisseehitatud kindlad prioriteedid ja selle raames toimib kõik väga hästi, aga probleem tekib sellestm et Network Manageris ei saa muuta prioriteete.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lahendus: hakkasime meetrikute alusel prioritiseerima routing tables erinevate ühenduste default route, mille tulemusena saame luua ühenduste prioriteetide järjekorra.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kirjutasime iga Interfacei üles ja allaminemise korral skriptid, mis lisavad ja kustutavad vastava default gateway ja metricuga routi IP route tabelist. &lt;br /&gt;
Default gateway saame kätte Network Manageri käsurea tööriista - &#039;&#039;&#039;nmcli&#039;&#039;&#039; päringu kaudu. Nmcli on kõige kiirem võimalus, sest kliendi poole pealt küsib DHCP infot Network Manager.&lt;br /&gt;
&lt;br /&gt;
==IF up skript==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source = lang&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth1 metric 5&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth2 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth2 metric 2&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;wlan1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface wlan1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev wlan1 metric 3&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;ppp0&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface ttyUSB0 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev ppp0 metric 6&lt;br /&gt;
fi;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Kolmapäev 28.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Teha bluetooth ühendus&lt;br /&gt;
* Teha logimine&lt;br /&gt;
* Korrastada dokumentatsioon&lt;br /&gt;
* Valmistuda presentatsiooniks&lt;br /&gt;
&lt;br /&gt;
Vaikimisi 3G ühendus, tuleb üles liiga hilja. Ei saa kätte default gateway infot piisavalt kiiresti ja tänu sellele routing tablesse ei kirjutata default routei. Et saada kiiremini kätte 3g default gateway kirjutasime skripti, mis leiab 3g seadme ja loob ise ühenduse.&lt;br /&gt;
SKRIPT&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46896</id>
		<title>Meeskond &quot;Tartu rõõm&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46896"/>
		<updated>2012-03-29T09:10:15Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* WiFi skript, mis otsib avatud võrke */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Liikmed ==&lt;br /&gt;
*Inger Romanenko&lt;br /&gt;
*Sander Saveli&lt;br /&gt;
*Sander Arnus&lt;br /&gt;
*Kalmer Tart&lt;br /&gt;
*Kristjan Rõõm&lt;br /&gt;
&lt;br /&gt;
==Meie eesmärk intensiivõppe raames==&lt;br /&gt;
&lt;br /&gt;
===Automaatne võrguühenduste konfigureerimine erinevate võrkudega===&lt;br /&gt;
&lt;br /&gt;
Konfigureerida arvuti, millel on 3G, Wifi, Ethernet-over-Powerline ja Etherneti pordid ning mille operatsioonisüsteemiks on Ubuntu Linux. Võrguühendust vahetataks ühenduse olemasolu ja prioriteetide alusel üle erinevate tehnoloogiate võimalikult lihtsalt ja kiirelt. IP aadress ei pea samaks jääma. Wifi adapter valib ise parima avaliku võrgu, kui ei ole konfigureeritud teisiti. Kui Wifi ühendus kaob, proovib teisi ka taustal. Kõik ümberlülitamised logitakse. Näiteks: Prioriteetideks on Ethernet:1; EoP:2; Wifi:3; 3G:4. Ühendatakse kõikidesse võimalikesse võrkudesse ning kui Ethernet ära kukub ning pole võimalik ühenduda ka läbi EoP, toimub ühenduse ümberlülitamine Wifi võrku. Kui Wifi ära kukub, siis ühendutakse 3G võrku. Kui tuleb suvaline public wifi tagasi, ühendutakse sinna jne. Luua lihtne kasutajaliides Android telefonile, mis lubab üle bluetooth ühenduse erinevaid võrke ja prioriteete konfigureerida ning vaadata ühenduste ajalugu.&lt;br /&gt;
&lt;br /&gt;
==Ajakava/progress==&lt;br /&gt;
=== Esmaspäev 26.03.2012 ===&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Tutvuda olukorraga ja tehnoloogiatega&lt;br /&gt;
* Kohtuda Ericssoni esindajaga, saada täpne ülevaade ülesandest.&lt;br /&gt;
* Panna paika algne tegevuskava.&lt;br /&gt;
&lt;br /&gt;
Küsimused Ericssonile:&lt;br /&gt;
* Kuidas teha vahet eop-l ja ethernetil?&lt;br /&gt;
* Mis tehnoloogiaid kasutada&lt;br /&gt;
* Miks selline ülesanne?&lt;br /&gt;
* Kus seda kasutama võidakse hakata?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Edusammud:&#039;&#039;&#039;&lt;br /&gt;
* Leidsime badVPN NCD http://code.google.com/p/badvpn/wiki/NCD, nimelise võrguhaldustarkvara ning proovime sellega prioritiseerida erinevaid võrguliideseid.&lt;br /&gt;
* Kohtusime Ericssoni esindajaga ning saime täpsema ülevaate ülesandest. Peame määrama ühendustele prioriteedid ning valima parima ühenduse liigi vastavalt prioriteedile. Wifi puhul peame ühenduma public wifisse ning kui on mitu erinevat võrku saadaval, proovima erinevaid. Võrgutegevust logitakse. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ericssonist saime katsetamiseks kaasa järgneva tehnika :&#039;&#039;&lt;br /&gt;
* nettop PC FIT-PC2&lt;br /&gt;
* 3G EMT mobiilse internetimodemi&lt;br /&gt;
* bluetooth adapteri&lt;br /&gt;
* ethernet over powerline seadmed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Küsimus:&#039;&#039;&#039; Kas kasutame enda leitud badVPN NCD-d või kasutame Linuxis vaikimisi töös olevat Network Manageri?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Materjalid badVPN NCD kohta:&#039;&#039;&#039;&lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/NCD &lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/Installation&lt;br /&gt;
&lt;br /&gt;
Tegime katseid virtualiseeritud keskkonnas. Hetkel suudab NCD prioriteetide alusel ühenduda erinevatesse ethernet liidestega. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Otsustasime enda leitud lahenduse kasuks, sest badVPN NCD teeb täpselt seda mis meil vaja - ühendub erinevatesse võrkudesse prioriteedide alusel.&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;Hetkel tundub, et Network Manageri kasutades peaksime tunduvalt rohkem loogikat ise valmis kirjutama.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Läksime üle katsetustele päris masinas. Installeerisime nettopi peale Lubuntu Linuxi. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame modifitseerima badVPN-i, et saada tööle ka Wi-Fi ja 3G.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tulemus:&#039;&#039;&#039; NCD suudab prioriteedide alusel valida parima ühenduse wifi ja etherneti vahel. Hetkel aga on probleem wifi public võrkudega, nimelt ühendub wifi adapter ainult etteantud võrku. Tuleks kirjutada skript, mis otsib avatud wifi võrke. Alustasime ka mobiilse interneti lahendusega, kuid hetkel tunudb, et NCD seda võimalust ei toeta.&lt;br /&gt;
&lt;br /&gt;
==NCD konfiguratsioon==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cfm&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Example NCD program.&lt;br /&gt;
# All interfaces are disabled by default.&lt;br /&gt;
# Remove/comment the first line of a process to activate the interface.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
process ethernet1 {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and link.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Static configuration.&lt;br /&gt;
   # To use, comment/remove the DHCP configuration above and uncomment this.&lt;br /&gt;
   #var(&amp;quot;192.168.111.116&amp;quot;) addr;&lt;br /&gt;
   #var(&amp;quot;24&amp;quot;) addr_prefix;&lt;br /&gt;
   #var(&amp;quot;192.168.111.1&amp;quot;) gateway;&lt;br /&gt;
   #list(&amp;quot;192.168.111.14&amp;quot;, &amp;quot;193.2.1.66&amp;quot;) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-ethernet&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process eop  {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth2&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-eop&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process pp {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;ppp0&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   #var(dhcp.addr) addr;&lt;br /&gt;
   #var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   #var(dhcp.gateway) gateway;&lt;br /&gt;
   #var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   #net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-pp&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process wlan {&lt;br /&gt;
&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;wlan1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and rfkill.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.backend.rfkill(&amp;quot;wlan&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Connect to wireless network.&lt;br /&gt;
   list() args;&lt;br /&gt;
   net.backend.wpa_supplicant(dev, &amp;quot;/etc/wpa_supplicant/all.conf&amp;quot;, &amp;quot;/sbin/wpa_supplicant&amp;quot;, args);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration. See above for static configuration.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address to interface.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-wlan&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process NETCONF {&lt;br /&gt;
   # Wait for some network connection. Order by priority.&lt;br /&gt;
   list(&amp;quot;NET-wlan&amp;quot;, &amp;quot;NET-eop&amp;quot;, &amp;quot;NET-pp&amp;quot;, &amp;quot;NET-ethernet&amp;quot;) pnames;&lt;br /&gt;
   multidepend(pnames) ifdep;&lt;br /&gt;
   &lt;br /&gt;
   #if(pnames == &amp;quot;NET-pp&amp;quot;)&lt;br /&gt;
   &lt;br /&gt;
   var(ifdep.dev) dev;&lt;br /&gt;
   var(ifdep.addr) addr;&lt;br /&gt;
   var(ifdep.addr_prefix) addr_prefix;&lt;br /&gt;
   var(ifdep.gateway) gateway;&lt;br /&gt;
   var(ifdep.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Add default route.&lt;br /&gt;
   net.ipv4.route(&amp;quot;0.0.0.0&amp;quot;, &amp;quot;0&amp;quot;, gateway, &amp;quot;20&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Configure DNS servers.&lt;br /&gt;
   net.dns(dns_servers, &amp;quot;20&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Teisipäev 27.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039; &lt;br /&gt;
* Saada valmis prioritiseerimine&lt;br /&gt;
* Kirjutada skript, mis otsiks avatud wifi võrke&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Alustada logimisega ning androidi rakenduse kirjutamisega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hakkame lähemalt uurima Network Manageri alternatiivina, sest badVPN-il NCD ja 3G konfiguratsioonid satuvad konflikti, mis teeb 3G ünhenduse initsialiseerimise keerukaks.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selgus lõplikult, et NCD-ga ei õnnestu meil töötavat 3G-ga funktsionaalsust luua.&lt;br /&gt;
Hakkasime ülesannet lahendama linuxi &#039;&#039;&#039;Network Manageri&#039;&#039;&#039; abil.&lt;br /&gt;
Network Manageris toimib vaikimisi võrkude prioritiseerimine, esialgu tundub et ei ole võimalik ise prioriteete määrata, ilma source koodi muutmata.&lt;br /&gt;
&lt;br /&gt;
Kalmer hakkab uurima võimalusi kuidas teha androidi rakendust, millega saaks ühenduda bluetoothiga arvutiga ning konfigureerida võrgu prioriteete.&lt;br /&gt;
&lt;br /&gt;
Tegime skripti wifi jaoks, mis otsib kõik avalikud wifi võrgud, mis on läheduses ja koostab nende kohta individuaalfailid mida kasutab Network Maganager võrkudesse automaatseks ühendamiseks.&lt;br /&gt;
&lt;br /&gt;
==WiFi skript, mis otsib avatud võrke==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Autor: Tartu Rõõm&lt;br /&gt;
# Kirjeldus, mida skript teeb&lt;br /&gt;
##&lt;br /&gt;
# Versioon 1.0&lt;br /&gt;
&lt;br /&gt;
# Kontrollib kas juurkasutajana k2ivitati skript&lt;br /&gt;
export LC_ALL=C&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ $UID -ne 0  ]&lt;br /&gt;
then&lt;br /&gt;
  echo &amp;quot;K2ivita skript $(basename $0) juurkasutaja 6igustes&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
#Leiame arvuti wlan seadme mac aadressi&lt;br /&gt;
MAC=$(ifconfig | grep wlan | cut -d &amp;quot; &amp;quot; -f10)&lt;br /&gt;
echo &amp;quot;Arvuti mac: $MAC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Otsime avalikud võrgud&lt;br /&gt;
for line in $(nmcli -p dev wifi | grep [--] | grep s | cut -d &amp;quot;&#039;&amp;quot; -f2); do&lt;br /&gt;
      SSID=$line&lt;br /&gt;
&lt;br /&gt;
   #Suvaline arv UUID&lt;br /&gt;
   HEX=&amp;quot;0123456789abcdef&amp;quot;&lt;br /&gt;
   BEGIN=$( for i in {1..8} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KAKS=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KOLM=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   NELI=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   END=$( for i in {1..12} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   UUID=&amp;quot;$BEGIN-$KAKS-$KOLM-$NELI-$END&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   echo &amp;quot;SSID: $SSID&amp;quot;&lt;br /&gt;
&lt;br /&gt;
      # Loome igale access pointile ssid faili&lt;br /&gt;
      touch /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt; /etc/NetworkManager/system-connections/$SSID &amp;lt;&amp;lt; LOPP&lt;br /&gt;
&lt;br /&gt;
[connection]&lt;br /&gt;
id=$SSID&lt;br /&gt;
uuid=$UUID&lt;br /&gt;
type=802-11-wireless&lt;br /&gt;
&lt;br /&gt;
[802-11-wireless]&lt;br /&gt;
ssid=$SSID&lt;br /&gt;
mode=infrastructure&lt;br /&gt;
mac-address=$MAC&lt;br /&gt;
&lt;br /&gt;
[ipv6]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
[ipv4]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
LOPP&lt;br /&gt;
&lt;br /&gt;
      chmod 600 /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
#service network-manager restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame uurima erinevaid võimalusi kuidas võrke Network manageriga prioritiseerida&#039;&#039;&lt;br /&gt;
Network Manageril on sisseehitatud kindlad prioriteedid ja selle raames toimib kõik väga hästi, aga probleem tekib sellestm et Network Manageris ei saa muuta prioriteete.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lahendus: hakkasime meetrikute alusel prioritiseerima routing tables erinevate ühenduste default route, mille tulemusena saame luua ühenduste prioriteetide järjekorra.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Kirjutasime iga Interfacei üles ja allaminemise korral skriptid, mis lisavad ja kustutavad vastava default gateway ja metricuga routi IP route tabelist. &lt;br /&gt;
Default gateway saame kätte Network Manageri käsurea tööriista - &#039;&#039;&#039;nmcli&#039;&#039;&#039; päringu kaudu. Nmcli on kõige kiirem võimalus, sest kliendi poole pealt küsib DHCP infot Network Manager.&lt;br /&gt;
&lt;br /&gt;
==IF up skript==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source = lang&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth1 metric 5&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;eth2&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface eth2 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev eth2 metric 2&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;wlan1&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface wlan1 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev wlan1 metric 3&lt;br /&gt;
fi;&lt;br /&gt;
if [ &amp;quot;$IFACE&amp;quot; = &amp;quot;ppp0&amp;quot; ]; then&lt;br /&gt;
ADR=$(nmcli dev list iface ttyUSB0 | grep GATEWAY | cut -d &amp;quot; &amp;quot; -f20)&lt;br /&gt;
ip route del default&lt;br /&gt;
ip route add default via $ADR dev ppp0 metric 6&lt;br /&gt;
fi;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Kolmapäev 28.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Teha bluetooth ühendus&lt;br /&gt;
* Teha logimine&lt;br /&gt;
* Korrastada dokumentatsioon&lt;br /&gt;
* Valmistuda presentatsiooniks&lt;br /&gt;
&lt;br /&gt;
Vaikimisi 3G ühendus, tuleb üles liiga hilja. Ei saa kätte default gateway infot piisavalt kiiresti ja tänu sellele routing tablesse ei kirjutata default routei. Et saada kiiremini kätte 3g default gateway kirjutasime skripti, mis leiab 3g seadme ja loob ise ühenduse.&lt;br /&gt;
SKRIPT&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46886</id>
		<title>Meeskond &quot;Tartu rõõm&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22Tartu_r%C3%B5%C3%B5m%22&amp;diff=46886"/>
		<updated>2012-03-29T08:47:24Z</updated>

		<summary type="html">&lt;p&gt;Ssaveli: /* WiFi skript, mis otsib avatud võrke */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Liikmed ==&lt;br /&gt;
*Inger Romanenko&lt;br /&gt;
*Sander Saveli&lt;br /&gt;
*Sander Arnus&lt;br /&gt;
*Kalmer Tart&lt;br /&gt;
*Kristjan Rõõm&lt;br /&gt;
&lt;br /&gt;
==Meie eesmärk intensiivõppe raames==&lt;br /&gt;
&lt;br /&gt;
===Automaatne võrguühenduste konfigureerimine erinevate võrkudega===&lt;br /&gt;
&lt;br /&gt;
Konfigureerida arvuti, millel on 3G, Wifi, Ethernet-over-Powerline ja Etherneti pordid ning mille operatsioonisüsteemiks on Ubuntu Linux. Võrguühendust vahetataks ühenduse olemasolu ja prioriteetide alusel üle erinevate tehnoloogiate võimalikult lihtsalt ja kiirelt. IP aadress ei pea samaks jääma. Wifi adapter valib ise parima avaliku võrgu, kui ei ole konfigureeritud teisiti. Kui Wifi ühendus kaob, proovib teisi ka taustal. Kõik ümberlülitamised logitakse. Näiteks: Prioriteetideks on Ethernet:1; EoP:2; Wifi:3; 3G:4. Ühendatakse kõikidesse võimalikesse võrkudesse ning kui Ethernet ära kukub ning pole võimalik ühenduda ka läbi EoP, toimub ühenduse ümberlülitamine Wifi võrku. Kui Wifi ära kukub, siis ühendutakse 3G võrku. Kui tuleb suvaline public wifi tagasi, ühendutakse sinna jne. Luua lihtne kasutajaliides Android telefonile, mis lubab üle bluetooth ühenduse erinevaid võrke ja prioriteete konfigureerida ning vaadata ühenduste ajalugu.&lt;br /&gt;
&lt;br /&gt;
==Ajakava/progress==&lt;br /&gt;
=== Esmaspäev 26.03.2012 ===&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Tutvuda olukorraga ja tehnoloogiatega&lt;br /&gt;
* Kohtuda Ericssoni esindajaga, saada täpne ülevaade ülesandest.&lt;br /&gt;
* Panna paika algne tegevuskava.&lt;br /&gt;
&lt;br /&gt;
Küsimused Ericssonile:&lt;br /&gt;
* Kuidas teha vahet eop-l ja ethernetil?&lt;br /&gt;
* Mis tehnoloogiaid kasutada&lt;br /&gt;
* Miks selline ülesanne?&lt;br /&gt;
* Kus seda kasutama võidakse hakata?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Edusammud:&#039;&#039;&#039;&lt;br /&gt;
* Leidsime badVPN NCD http://code.google.com/p/badvpn/wiki/NCD, nimelise võrguhaldustarkvara ning proovime sellega prioritiseerida erinevaid võrguliideseid.&lt;br /&gt;
* Kohtusime Ericssoni esindajaga ning saime täpsema ülevaate ülesandest. Peame määrama ühendustele prioriteedid ning valima parima ühenduse liigi vastavalt prioriteedile. Wifi puhul peame ühenduma public wifisse ning kui on mitu erinevat võrku saadaval, proovima erinevaid. Võrgutegevust logitakse. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ericssonist saime katsetamiseks kaasa järgneva tehnika :&#039;&#039;&lt;br /&gt;
* nettop PC FIT-PC2&lt;br /&gt;
* 3G EMT mobiilse internetimodemi&lt;br /&gt;
* bluetooth adapteri&lt;br /&gt;
* ethernet over powerline seadmed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Küsimus:&#039;&#039;&#039; Kas kasutame enda leitud badVPN NCD-d või kasutame Linuxis vaikimisi töös olevat Network Manageri?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Materjalid badVPN NCD kohta:&#039;&#039;&#039;&lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/NCD &lt;br /&gt;
* http://code.google.com/p/badvpn/wiki/Installation&lt;br /&gt;
&lt;br /&gt;
Tegime katseid virtualiseeritud keskkonnas. Hetkel suudab NCD prioriteetide alusel ühenduda erinevatesse ethernet liidestega. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Otsustasime enda leitud lahenduse kasuks, sest badVPN NCD teeb täpselt seda mis meil vaja - ühendub erinevatesse võrkudesse prioriteedide alusel.&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;Hetkel tundub, et Network Manageri kasutades peaksime tunduvalt rohkem loogikat ise valmis kirjutama.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Läksime üle katsetustele päris masinas. Installeerisime nettopi peale Lubuntu Linuxi. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame modifitseerima badVPN-i, et saada tööle ka Wi-Fi ja 3G.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tulemus:&#039;&#039;&#039; NCD suudab prioriteedide alusel valida parima ühenduse wifi ja etherneti vahel. Hetkel aga on probleem wifi public võrkudega, nimelt ühendub wifi adapter ainult etteantud võrku. Tuleks kirjutada skript, mis otsib avatud wifi võrke. Alustasime ka mobiilse interneti lahendusega, kuid hetkel tunudb, et NCD seda võimalust ei toeta.&lt;br /&gt;
&lt;br /&gt;
==NCD konfiguratsioon==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cfm&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Example NCD program.&lt;br /&gt;
# All interfaces are disabled by default.&lt;br /&gt;
# Remove/comment the first line of a process to activate the interface.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
process ethernet1 {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and link.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Static configuration.&lt;br /&gt;
   # To use, comment/remove the DHCP configuration above and uncomment this.&lt;br /&gt;
   #var(&amp;quot;192.168.111.116&amp;quot;) addr;&lt;br /&gt;
   #var(&amp;quot;24&amp;quot;) addr_prefix;&lt;br /&gt;
   #var(&amp;quot;192.168.111.1&amp;quot;) gateway;&lt;br /&gt;
   #list(&amp;quot;192.168.111.14&amp;quot;, &amp;quot;193.2.1.66&amp;quot;) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-ethernet&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process eop  {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;eth2&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-eop&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process pp {&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;ppp0&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.up(dev);&lt;br /&gt;
   net.backend.waitlink(dev);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration.&lt;br /&gt;
   # net.ipv4.dhcp() will block here until it obtaines an IP address.&lt;br /&gt;
   # It doesn&#039;t check the obtained address in any way,&lt;br /&gt;
   # so as a basic security measure, do not proceed if it is local.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   #var(dhcp.addr) addr;&lt;br /&gt;
   #var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   #var(dhcp.gateway) gateway;&lt;br /&gt;
   #var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address.&lt;br /&gt;
   #net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-pp&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
process wlan {&lt;br /&gt;
&lt;br /&gt;
   # Set device.&lt;br /&gt;
   var(&amp;quot;wlan1&amp;quot;) dev;&lt;br /&gt;
&lt;br /&gt;
   # Wait for device and rfkill.&lt;br /&gt;
   net.backend.waitdevice(dev);&lt;br /&gt;
   net.backend.rfkill(&amp;quot;wlan&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Connect to wireless network.&lt;br /&gt;
   list() args;&lt;br /&gt;
   net.backend.wpa_supplicant(dev, &amp;quot;/etc/wpa_supplicant/all.conf&amp;quot;, &amp;quot;/sbin/wpa_supplicant&amp;quot;, args);&lt;br /&gt;
&lt;br /&gt;
   # DHCP configuration. See above for static configuration.&lt;br /&gt;
   net.ipv4.dhcp(dev) dhcp;&lt;br /&gt;
   ip_in_network(dhcp.addr, &amp;quot;127.0.0.0&amp;quot;, &amp;quot;8&amp;quot;) test_local;&lt;br /&gt;
   ifnot(test_local);&lt;br /&gt;
   var(dhcp.addr) addr;&lt;br /&gt;
   var(dhcp.prefix) addr_prefix;&lt;br /&gt;
   var(dhcp.gateway) gateway;&lt;br /&gt;
   var(dhcp.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Assign IP address to interface.&lt;br /&gt;
   net.ipv4.addr(dev, addr, addr_prefix);&lt;br /&gt;
&lt;br /&gt;
   # Go on configuring the network.&lt;br /&gt;
   multiprovide(&amp;quot;NET-wlan&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
process NETCONF {&lt;br /&gt;
   # Wait for some network connection. Order by priority.&lt;br /&gt;
   list(&amp;quot;NET-wlan&amp;quot;, &amp;quot;NET-eop&amp;quot;, &amp;quot;NET-pp&amp;quot;, &amp;quot;NET-ethernet&amp;quot;) pnames;&lt;br /&gt;
   multidepend(pnames) ifdep;&lt;br /&gt;
   &lt;br /&gt;
   #if(pnames == &amp;quot;NET-pp&amp;quot;)&lt;br /&gt;
   &lt;br /&gt;
   var(ifdep.dev) dev;&lt;br /&gt;
   var(ifdep.addr) addr;&lt;br /&gt;
   var(ifdep.addr_prefix) addr_prefix;&lt;br /&gt;
   var(ifdep.gateway) gateway;&lt;br /&gt;
   var(ifdep.dns_servers) dns_servers;&lt;br /&gt;
&lt;br /&gt;
   # Add default route.&lt;br /&gt;
   net.ipv4.route(&amp;quot;0.0.0.0&amp;quot;, &amp;quot;0&amp;quot;, gateway, &amp;quot;20&amp;quot;, dev);&lt;br /&gt;
&lt;br /&gt;
   # Configure DNS servers.&lt;br /&gt;
   net.dns(dns_servers, &amp;quot;20&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Teisipäev 27.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039; &lt;br /&gt;
* Saada valmis prioritiseerimine&lt;br /&gt;
* Kirjutada skript, mis otsiks avatud wifi võrke&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Alustada logimisega ning androidi rakenduse kirjutamisega.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hakkame lähemalt uurima Network Manageri alternatiivina, sest badVPN-il NCD ja 3G konfiguratsioonid satuvad konflikti, mis teeb 3G ünhenduse initsialiseerimise keerukaks.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selgus lõplikult, et NCD-ga ei õnnestu meil töötavat 3G-ga funktsionaalsust luua.&lt;br /&gt;
Hakkasime ülesannet lahendama linuxi &#039;&#039;&#039;Network Manageri&#039;&#039;&#039; abil.&lt;br /&gt;
Network Manageris toimib vaikimisi võrkude prioritiseerimine, esialgu tundub et ei ole võimalik ise prioriteete määrata, ilma source koodi muutmata.&lt;br /&gt;
&lt;br /&gt;
Kalmer hakkab uurima võimalusi kuidas teha androidi rakendust, millega saaks ühenduda bluetoothiga arvutiga ning konfigureerida võrgu prioriteete.&lt;br /&gt;
&lt;br /&gt;
Tegime skripti wifi jaoks, mis otsib kõik avalikud wifi võrgud, mis on läheduses ja koostab nende kohta individuaalfailid mida kasutab Network Maganager võrkudesse automaatseks ühendamiseks.&lt;br /&gt;
&lt;br /&gt;
==WiFi skript, mis otsib avatud võrke==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Autor: Tartu Rõõm&lt;br /&gt;
# Kirjeldus, mida skript teeb&lt;br /&gt;
##&lt;br /&gt;
# Versioon 1.0&lt;br /&gt;
&lt;br /&gt;
# Kontrollib kas juurkasutajana k2ivitati skript&lt;br /&gt;
export LC_ALL=C&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ $UID -ne 0  ]&lt;br /&gt;
then&lt;br /&gt;
  echo &amp;quot;K2ivita skript $(basename $0) juurkasutaja 6igustes&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
#Leiame arvuti wlan seadme mac aadressi&lt;br /&gt;
MAC=$(ifconfig | grep wlan | cut -d &amp;quot; &amp;quot; -f10)&lt;br /&gt;
echo &amp;quot;Arvuti mac: $MAC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Otsime avalikud võrgud&lt;br /&gt;
for line in $(nmcli -p dev wifi | grep [--] | grep s | cut -d &amp;quot;&#039;&amp;quot; -f2); do&lt;br /&gt;
      SSID=$line&lt;br /&gt;
&lt;br /&gt;
   #Suvaline arv UUID&lt;br /&gt;
   HEX=&amp;quot;0123456789abcdef&amp;quot;&lt;br /&gt;
   BEGIN=$( for i in {1..8} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KAKS=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   KOLM=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   NELI=$( for i in {1..4} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   END=$( for i in {1..12} ; do echo -n ${HEX:$(( $RANDOM % 16 )):1} ; done )&lt;br /&gt;
   UUID=&amp;quot;$BEGIN-$KAKS-$KOLM-$NELI-$END&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   echo &amp;quot;SSID: $SSID&amp;quot;&lt;br /&gt;
&lt;br /&gt;
      # Loome igale access pointile ssid faili&lt;br /&gt;
      touch /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt; /etc/NetworkManager/system-connections/$SSID &amp;lt;&amp;lt; LOPP&lt;br /&gt;
&lt;br /&gt;
[connection]&lt;br /&gt;
id=$SSID&lt;br /&gt;
uuid=$UUID&lt;br /&gt;
type=802-11-wireless&lt;br /&gt;
&lt;br /&gt;
[802-11-wireless]&lt;br /&gt;
ssid=$SSID&lt;br /&gt;
mode=infrastructure&lt;br /&gt;
mac-address=$MAC&lt;br /&gt;
&lt;br /&gt;
[ipv6]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
[ipv4]&lt;br /&gt;
method=auto&lt;br /&gt;
&lt;br /&gt;
LOPP&lt;br /&gt;
&lt;br /&gt;
      chmod 600 /etc/NetworkManager/system-connections/$SSID&lt;br /&gt;
&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
#service network-manager restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hakkame uurima erinevaid võimalusi kuidas võrke Network manageriga prioritiseerida&#039;&#039;&lt;br /&gt;
Network Manageril on sisseehitatud kindlad prioriteedid ja selle raames toimib kõik väga hästi, aga probleem tekib sellestm et Network Manageris ei saa muuta prioriteete.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lahendus: hakkasime meetrikute alusel prioritiseerima routing tables erinevate ühenduste default route, mille tulemusena saame luua ühenduste prioriteetide järiekorra.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Probleem, millega default, et Network Manager hakkas ise oma tahtmist mööda käituma, kuid lahendasime probleemi Network Manageri skriptidega.&lt;br /&gt;
&lt;br /&gt;
===Kolmapäev 28.03.2012===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eesmärgid:&#039;&#039;&#039;&lt;br /&gt;
* Saada tööle 3G&lt;br /&gt;
* Teha bluetooth ühendus&lt;br /&gt;
* Teha logimine&lt;br /&gt;
* Korrastada dokumentatsioon&lt;br /&gt;
* Valmistuda presentatsiooniks&lt;br /&gt;
&lt;br /&gt;
Vaikimisi 3G ühendus, tuleb üles liiga hilja. Ei saa kätte default gateway infot piisavalt kiiresti ja tänu sellele routing tablesse ei kirjutata default routei. Et saada kiiremini kätte 3g default gateway kirjutasime skripti, mis leiab 3g seadme ja loob ise ühenduse.&lt;br /&gt;
SKRIPT&lt;/div&gt;</summary>
		<author><name>Ssaveli</name></author>
	</entry>
</feed>