<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>code.gyurasits.hu</title>
	<atom:link href="http://code.gyurasits.hu/feed/" rel="self" type="application/rss+xml" />
	<link>http://code.gyurasits.hu</link>
	<description></description>
	<lastBuildDate>Fri, 02 Oct 2009 15:21:37 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title></title>
		<link>http://code.gyurasits.hu/2009/10/02/online-2-gigabyte-os-tarolo-ingyen-dropbox/</link>
		<comments>http://code.gyurasits.hu/2009/10/02/online-2-gigabyte-os-tarolo-ingyen-dropbox/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 15:19:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<guid isPermaLink="false">http://code.gyurasits.hu/2009/10/02/online-2-gigabyte-os-tarolo-ingyen-dropbox/</guid>
		<description><![CDATA[A minap belebotlottam, a dropbox nev? szépségbe   A rendszer lényege, hogy ha feltelepíted a cég &#8220;kliens&#8221; szoftverét, kapsz 2 Gigabyte internetes tároló kapacitást. Windows, Fedora ill. Ubuntu rendszerekre telepíthet?.
Link:  GetDropBox
Az oldalon létre kell hozni egy hozzáférést, ami pillanatok alatt kész is. Utána kapunk 2G tárhelyet. Persze ezt lehet b?víteni, de szerintem ez is [...]]]></description>
			<content:encoded><![CDATA[<p>A minap belebotlottam, a dropbox nev? szépségbe <img src='http://code.gyurasits.hu/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  A rendszer lényege, hogy ha feltelepíted a cég &#8220;kliens&#8221; szoftverét, kapsz 2 Gigabyte internetes tároló kapacitást. Windows, Fedora ill. Ubuntu rendszerekre telepíthet?.</p>
<p>Link:  <a href="https://www.getdropbox.com/referrals/NTIxNjc4OTY5" target="_blank" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.getdropbox.com');">GetDropBox</a></p>
<p>Az oldalon létre kell hozni egy hozzáférést, ami pillanatok alatt kész is. Utána kapunk 2G tárhelyet. Persze ezt lehet b?víteni, de szerintem ez is nagyon sok mindenre elég. A mai nagy sávszélesség? elérésekkel már nem probléma a feltöltés sem.<br />
Telepítéskor megadható az a könyvtár, amit a rendszer &#8220;online&#8221; kezel. Ha egy másik gépre telepíted a szoftvert és ott belenézel a könyvtárba vagy file-t másolsz bele, akkor az mindenhonnan &#8220;látszani&#8221; fog, mivel a rendszer szinkronizálja a könyvtárakat. Webes felület is rendelkezésre áll arra az esetre, ha épp nincs kéznél a kliens. Weben megtekinthet?, hogy milyen file m?veletek voltak és akár a törölt fileokat is visszaállíthatjuk. (undelete)</p>
<p>Azon gondolkoztam, hogy lehetne ezt felhasználni saját szerver backup  készítésre. Az egyetlen probléma, hogy a szoftver m?ködéséhez szükség van gnome csomagokra, ami nem jellemz? egy szerveren. Ezt kellene megoldani.</p>
]]></content:encoded>
			<wfw:commentRss>http://code.gyurasits.hu/2009/10/02/online-2-gigabyte-os-tarolo-ingyen-dropbox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title></title>
		<link>http://code.gyurasits.hu/2009/02/26/weboldal-ill-webalkalmazas-keszites-jsf-es-jpa-apache-tomcat-hasznalataval-ii/</link>
		<comments>http://code.gyurasits.hu/2009/02/26/weboldal-ill-webalkalmazas-keszites-jsf-es-jpa-apache-tomcat-hasznalataval-ii/#comments</comments>
		<pubDate>Thu, 26 Feb 2009 13:19:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<guid isPermaLink="false">http://code.gyurasits.hu/2009/02/26/weboldal-ill-webalkalmazas-keszites-jsf-es-jpa-apache-tomcat-hasznalataval-ii/</guid>
		<description><![CDATA[Most hogy megvan az adatbázis, álljunk neki elkészíteni a projektet. NetBeans-alatt mutatom, mert én ezt ismerem. Csináljunk egy web alkalmazást JSF támogatással Tomcat szerver alatt.
Tehát készítsünk egy új projektet

Majd adjuk meg a projekt nevét és helyét a lemezen

Válasszuk ki a szervert

Majd adjuk meg a JSF támogatást a projekthez

Ha megvagyunk valami hasonló fogad minket a projekt [...]]]></description>
			<content:encoded><![CDATA[<p>Most hogy megvan az adatbázis, álljunk neki elkészíteni a projektet. NetBeans-alatt mutatom, mert én ezt ismerem. Csináljunk egy web alkalmazást JSF támogatással Tomcat szerver alatt.</p>
<p>Tehát készítsünk egy új projektet</p>
<p><img src="http://www.gyurasits.hu/codeimages/webshop/newProject1.jpg" title="új projekt" alt="új projekt" height="330" width="430" /></p>
<p>Majd adjuk meg a projekt nevét és helyét a lemezen</p>
<p><img src="http://www.gyurasits.hu/codeimages/webshop/newProject2.jpg" title="projekt helye" alt="projekt helye" height="323" width="430" /></p>
<p>Válasszuk ki a szervert</p>
<p><img src="http://www.gyurasits.hu/codeimages/webshop/newProject3.jpg" title="szerver" alt="szerver" height="280" width="430" /></p>
<p>Majd adjuk meg a JSF támogatást a projekthez</p>
<p><img src="http://www.gyurasits.hu/codeimages/webshop/newProject4.jpg" title="JSF támogatás" alt="JSF támogatás" height="342" width="430" /></p>
<p>Ha megvagyunk valami hasonló fogad minket a projekt intéz?ben</p>
<p><img src="http://www.gyurasits.hu/codeimages/webshop/newProject5.jpg" title="elkészült új projekt" alt="elkészült új projekt" height="264" width="183" /></p>
<p>Az els?, hogy határozzuk meg milyen csomagokba fogjuk &#8220;szétosztani&#8221; a java osztályokat. Én az entiátsokat, és a managelt bean-eket külön csomagba pakolom, az átláthatóság kedvéért. A szolgáltatások interfészeinek is kell egy csomag, és a JPA kezel? osztályt is külön csomagba tesszük.</p>
<p>Tehát szükség van 4 csomagra:</p>
<p>- com.digsys.webshop.entities<br />
- com.digsys.webshop.managedbeans<br />
- com.digsys.webshop.services<br />
- com.digsys.webshop.jpa<br />
Hozzuk létre ezeket a csomagokat.</p>
<p>Az adatbázis eléréshez létre kell hozni egy JDBC csatlakozást.</p>
<p><img src="http://www.gyurasits.hu/codeimages/webshop/jdbc.jpg" title="JDBC csatlakozás" alt="JDBC csatlakozás" height="127" width="353" /></p>
<p>Ezek után készítsük el az entitás osztályokat a NetBeans beépített &#8220;entiy classes from database&#8221; funkciójának segítségével.</p>
<p><img src="http://www.gyurasits.hu/codeimages/webshop/entityfromdatabase.jpg" title="entitások létrehozása" alt="entitások létrehozása" height="365" width="430" /></p>
<p>Mikor felkínálja a varázsló, hogy létrehoz perzisztencia unit-ot, akkor készítsük el azt is.<br />
Én Toplinket használok JPA-nak, de természetesen használható Hybernate vagy OpenJPA is.</p>
<p>Készítsük el a szolgáltatásokat. Mint már az el?z? részben kitaláltuk a következ?  3 szolgáltatásra lesz szükségünk:</p>
<p>- kosár kezelése (cart manager)<br />
- cikkek kezelése (item manager)<br />
- rendelés kezelése(order manager)</p>
<p>Határozzuk meg ezeket is 3 interfészbe:</p>
<p><strong>ICartManager:</strong></p>
<p><em>package com.digsys.webshop.services;</em></p>
<p><em>import com.digsys.webshop.entities.Items;<br />
import java.util.List;</em></p>
<p><em>public interface ICartManager {<br />
public void addItem(Items i);<br />
public void removeItem(Items i);<br />
public void changeQuantity(Items i, int q);<br />
public List&lt;Items&gt; getItems();<br />
public void clearCart();<br />
}</em></p>
<p><strong>IItemManager:</strong></p>
<p><em> package com.digsys.webshop.services;</em></p>
<p><em>import com.digsys.webshop.entities.Items;<br />
import java.util.List;</em></p>
<p><em>public interface IItemManager {<br />
public List&lt;Items&gt; getAllItems();<br />
}<br />
</em></p>
<p><strong>IOrderManager:</strong></p>
<p><em>package com.digsys.webshop.services;</em></p>
<p><em>import com.digsys.webshop.entities.OrderItems;<br />
import com.digsys.webshop.entities.Orders;</em></p>
<p><em>public interface IOrderManager {<br />
public void createNewOrder(Orders o);<br />
public void createNewOrderItem(OrderItems oi);<br />
}<br />
</em></p>
<p>A metódusok elnevezései szerintem egyértelm?ek, nem szorulnak különösebben magyarázatra.</p>
<p>Jelenleg itt tartunk:</p>
<p><img src="http://www.gyurasits.hu/codeimages/webshop/newProject6.jpg" title="új projekt 6" alt="új projekt 6" height="527" width="312" /></p>
<p>Most következzen ismét egy kis tervezés.</p>
<p>Meg kell határozni, hogy hány weboldalon fogjuk lekezelni a vásárlást. El?ször is kell egy oldal, ahol a látogató tud válogatni a termékek között.  Itt fel vannak sorolva az általunk kínált cikkek (item-ek) és bármelyiket be tudjuk tenni a kosárba.<br />
Kell egy oldal, ahol megjelennek a kosárban lév? termékek, vagyis a kosár tartalma. Végül pedig kell egy oldal, ahol szerkeszteni tudjuk a kiválasztott tételt, vagy is jelen esetben csak annyit, hogy hány darabot szeretnénk vásárolni. Ez összesen 3 oldal.<br />
Legyenek a következ?k:</p>
<p>- shop.jsp<br />
- cart.jsp<br />
- edit_item.jsp</p>
<p>Hozzuk ezeket létre, és határozzuk meg a navigációt. A shop.jsp-ból a cart.jsp felé fog navigálni a felhasználó és vissza is, ha még több tétel szeretne a kosárba tenni.  az edit_item.jsp -t pedig a cart.jsp -b?l éri el. Tehát a navigáció a következ?képpen alakul.</p>
<p><img src="http://www.gyurasits.hu/codeimages/webshop/navi.jpg" title="navigáció" alt="navigáció" height="350" width="270" /></p>
<p>Továbbá kell még egy index.jsp-is, ahonnan a felhasználó indul, de ezt egyb?l forwardoljuk a shop.jsp-re.</p>
<p>index.jsp:</p>
<p><em>&lt;%@page contentType=&#8221;text/html&#8221; pageEncoding=&#8221;UTF-8&#8243;%&gt;<br />
&lt;!DOCTYPE HTML PUBLIC &#8220;-//W3C//DTD HTML 4.01 Transitional//EN&#8221;<br />
&#8220;http://www.w3.org/TR/html4/loose.dtd&#8221;&gt;</em></p>
<p><em>&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;meta http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=UTF-8&#8243;&gt;<br />
&lt;title&gt;JSP Page&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;jsp:forward page=&#8221;shop.jsf&#8221; /&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</em></p>
<p>A navigáció elnevezéseit természetesen bárhogy megadhatjuk.</p>
<p>Folyt. köv.</p>
]]></content:encoded>
			<wfw:commentRss>http://code.gyurasits.hu/2009/02/26/weboldal-ill-webalkalmazas-keszites-jsf-es-jpa-apache-tomcat-hasznalataval-ii/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title></title>
		<link>http://code.gyurasits.hu/2009/02/24/weboldal-ill-webalkalmazas-keszites-jsf-es-jpa-apache-tomcat-hasznalataval-i/</link>
		<comments>http://code.gyurasits.hu/2009/02/24/weboldal-ill-webalkalmazas-keszites-jsf-es-jpa-apache-tomcat-hasznalataval-i/#comments</comments>
		<pubDate>Tue, 24 Feb 2009 09:38:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<guid isPermaLink="false">http://code.gyurasits.hu/2009/02/24/weboldal-ill-webalkalmazas-keszites-jsf-es-jpa-apache-tomcat-hasznalataval-i/</guid>
		<description><![CDATA[Készítsünk JPA által támogatott weboldalt ill. webalkalmazást csupán az Apache Tomcat web konténerének használatával, kihagyva az EJB konténert a rendszerb?l. A JPA nagyon meg tudja könnyíteni a perzisztens adatok kezelését. Gyakorlatilag nem kell az adatbázissal és az adatok konvertálgatásával bajlódnunk, hanem elvégzi helyettünk a &#8220;piszkos munkát&#8221;.
Amit készíteni fogunk, az egy webshop logikai része. A style-okkal [...]]]></description>
			<content:encoded><![CDATA[<p>Készítsünk JPA által támogatott weboldalt ill. webalkalmazást csupán az Apache Tomcat web konténerének használatával, kihagyva az EJB konténert a rendszerb?l. A JPA nagyon meg tudja könnyíteni a perzisztens adatok kezelését. Gyakorlatilag nem kell az adatbázissal és az adatok konvertálgatásával bajlódnunk, hanem elvégzi helyettünk a &#8220;piszkos munkát&#8221;.</p>
<p>Amit készíteni fogunk, az egy webshop logikai része. A style-okkal most nem foglalkozok, mivel az amúgy is mindíg más. Egy nagyon egyszer? weboldalon fogom bemutatni hogy is kell egy ilyet megtervezni.</p>
<p>El?ször is milyen modellre lesz szükségünk.</p>
<p>- Cikkek (items)<br />
- Kosár (cart)<br />
- Rendelések (orders) /fejléc ill. tételek/</p>
<p>Ezeknek meg kell határozni a tulajdonságaikat.</p>
<p><strong>Cikkek     </strong><br />
- azonosíto<br />
- név</p>
<p><strong>Rendelések (fejléc)</strong><br />
- rendelési azonosító<br />
- rendelési szám</p>
<p><strong>Rendelések (tételek) </strong><br />
- rendelés<br />
- cikk<br />
- mennyiség</p>
<p><strong>Kosár</strong><br />
- cikk<br />
- mennyiség</p>
<p>Természetesen ez egy nagyon egyszer? modell, mivel nem akartam túlbonyolítani. Ahhoz, hogy ez teljes  egészében használható legyen még szükség van a megrendel?re és egyéb tulajdonságokra is, de ezt rátok bízom.</p>
<p>Ezek után határozzuk meg, hogy mi az amit perzisztensen le kell tárolni adatbázisba, és mi az ami csak egy adott session-ig él a rendszerben.</p>
<p>A cikkeket egyértelm?en le kell tárolni, mivel minden felhasználó ezek közül kell hogy válogasson.</p>
<p>A kosár tartalmát viszont már nem, mivel az csak addig él, amíg a látogató leadja a rendelést, kés?bb átalakul megrendeléssé.</p>
<p>A megrendelés viszont megint perzisztens, mert kés?bb vissza  kell tudni nézni a megrendeléseket a rendszerben.</p>
<p>Tervezzük le a szolgáltatásokat, amik a rendszer m?ködéséhez kellenek:</p>
<p>- kosár kezelése (cart manager) /nem perzisztens/<br />
Ide fogjuk pakolni a cikkeket, amib?l majd a megrendelés készül</p>
<p>- cikkek kezelése(item manager) /perzisztens/<br />
Nyílván kell tartani, hogy a látogató mib?l tud választani</p>
<p>- rendelés kezelése(order manager) /perzisztens/<br />
A leadott rendeléseket ez a szolgáltatás fogja kezelni</p>
<p>Ezek a szolgáltatások fogják &#8220;kiszolgálni&#8221; a logikai részt, és egy egy interfészben deklaráljuk ?ket. De err?l kés?bb&#8230;. , most készítsük el az adatbázist.</p>
<p>A kosár mint már kiderült nem perzisztens, ezért csak a cikktörzset és a megrendelést kell létrehozni az adatbázisban.<br />
A következ? SQL utasítással hozzuk létre az adatbázist:</p>
<p>CREATE DATABASE WEBSHOP_TEST;</p>
<p>Ezzel kész is van az adatbázisunk. Hozzuk létre a táblákat:</p>
<p><strong>Cikkek</strong></p>
<p>CREATE TABLE items (<br />
id        integer CONSTRAINT itemsPRK PRIMARY KEY,<br />
name      varchar(100) NOT NULL<br />
);</p>
<p><strong>Rendelések fejléce</strong></p>
<p>CREATE TABLE orders (<br />
id        integer CONSTRAINT ordersPRK PRIMARY KEY,<br />
order_number      varchar(13) NOT NULL<br />
);</p>
<p><strong>Rendelés tételek</strong></p>
<p>CREATE TABLE order_items (<br />
order_id   integer NOT NULL,<br />
item_id    integer NOT NULL,<br />
quantity   integer NOT NULL,<br />
CONSTRAINT order_itemsPRK PRIMARY KEY(order_id,item_id)<br />
);</p>
<p>Mivel a rendelési tételek a rendelés ill. a cikkek között kapcsolatok állnak fenn, ezért szükség van küls? kulcsokra:</p>
<p>ALTER TABLE order_items ADD CONSTRAINT orderFK FOREIGN KEY (order_id) REFERENCES orders (id) MATCH FULL;<br />
ALTER TABLE order_items ADD CONSTRAINT itemFK FOREIGN KEY (item_id) REFERENCES items (id) MATCH FULL;</p>
<p>Én postgreSQL-t használok, de természetesen használhatunk bármilyen adatbázisz szervert, amihez van JDBC meghajtó.<br />
Ha ez megvan elkezdhetjük az etitások és a szolgáltatások tervezését.<br />
Folyt. köv&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://code.gyurasits.hu/2009/02/24/weboldal-ill-webalkalmazas-keszites-jsf-es-jpa-apache-tomcat-hasznalataval-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title></title>
		<link>http://code.gyurasits.hu/2008/06/03/binding-property-konverziok/</link>
		<comments>http://code.gyurasits.hu/2008/06/03/binding-property-konverziok/#comments</comments>
		<pubDate>Tue, 03 Jun 2008 11:31:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<guid isPermaLink="false">http://code.gyurasits.hu/2008/06/03/binding-property-konverziok/</guid>
		<description><![CDATA[El?fordulhat, hogy két objektum különböz? típusú tulajdonságait kell bindelni egymáshoz. Elég hülyén hangzik, de pl.:
Van egy adatbázisom, amibe termékek tulajdonsági  vannak, és van egy boolean mez?, ami mondjuk jelzi, hogy az adott termék saját, vagy nem.
Azt szeretném, hogy ha valaki egy jtable-ben kiválasztja a terméket, akkor megváltozzon egy panel háttérszíne. Vagy is, egy bean [...]]]></description>
			<content:encoded><![CDATA[<p>El?fordulhat, hogy két objektum különböz? típusú tulajdonságait kell bindelni egymáshoz. Elég hülyén hangzik, de pl.:</p>
<p>Van egy adatbázisom, amibe termékek tulajdonsági  vannak, és van egy boolean mez?, ami mondjuk jelzi, hogy az adott termék saját, vagy nem.</p>
<p>Azt szeretném, hogy ha valaki egy jtable-ben kiválasztja a terméket, akkor megváltozzon egy panel háttérszíne. Vagy is, egy bean boolean tulajdonságát kell bind-elni a panel háttérszínéhez, azaz egy color tulajdonsághoz. Ez esetben kell egy boolean -&gt; Color konverter. Lássuk, hogy néz ki.</p>
<p>Delklaráljuk a konvertert:</p>
<pre>Converter&lt;Boolean, Color&gt; converter;</pre>
<p>Majd hozzuk létre a példányt:</p>
<pre>converter = new Converter&lt;Boolean, Color&gt;() {
 @Override
 public Color convertForward(Boolean isSelected) {
  return isSelected ? Color.YELLOW : Color.BLACK;
 }

 @Override
  public Boolean convertReverse(Color arg0) {
   return arg0 == Color.YELLOW;
  }
};</pre>
<p>Ezután lehet bind-elni az objektumokat:</p>
<pre>bindingGroup = new BindingGroup();
Binding binding =
Bindings.createAutoBinding(
 AutoBinding.UpdateStrategy.READ_WRITE,
 jTable, ELProperty.create("${selected}"),
 jPanel, BeanProperty.create("background"));
binding.setConverter(converter);
bindingGroup.addBinding(binding);
bindingGroup.bind();</pre>
<p>Ha netbeans-t használunk, akkor készítsük el a konvertert, majd a bind panelen be tudjuk állítani az adott bindeléshez. Válasszuk a &#8220;custom code&#8221; funkciót:</p>
<p><img src="http://gyurasits.hu/codeimages/binding/bindingconvert.jpg" title="binding konverter" alt="binding konverter" border="0" height="316" width="340" /></p>
<p>És a mez?be írjuk be a konverter változó nevét:</p>
<p><img src="http://gyurasits.hu/codeimages/binding/bindingconvert2.jpg" title="binding konverter változó" alt="binding konverter változó" height="257" width="323" /></p>
<p>Ezzel tudjuk rávenni a netbeans-t, hogy a állítsa be az adott binding-hez a mi kis konverterünket.</p>
<p>Érdemes el?re legyártott osztályokat készíteni a konverterek példányosítására. Így ezeket el? lehet venni amikor csak kell.</p>
]]></content:encoded>
			<wfw:commentRss>http://code.gyurasits.hu/2008/06/03/binding-property-konverziok/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title></title>
		<link>http://code.gyurasits.hu/2008/05/28/ssh-bejelentkezes-tunnel-java-ban/</link>
		<comments>http://code.gyurasits.hu/2008/05/28/ssh-bejelentkezes-tunnel-java-ban/#comments</comments>
		<pubDate>Wed, 28 May 2008 09:57:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<guid isPermaLink="false">http://code.gyurasits.hu/2008/05/28/37/</guid>
		<description><![CDATA[Nagy örömömre, egy svájci cég SSH klinst fejlesztett, amely ráadásul letölthet? a honlapjukról:
http://www.trilead.com/Download/Trilead-SSH-2-Java/
(A licensz szerz?dést természetesen figyelmesen olvassuk, el miel?tt üzleti alkalmazásokat fejlesztünk a komponens segítségével)
Ennek a fejlesztésnek azért örülök, mert megoldás lehet arra a problémára, hogy nem kell egy szerver adatbázis portját &#8220;kinyitni&#8221; a nagyvilágnak, mégis el tudja érni bárhonnan egy adatbázis alakalmazás. A [...]]]></description>
			<content:encoded><![CDATA[<p>Nagy örömömre, egy svájci cég SSH klinst fejlesztett, amely ráadásul letölthet? a honlapjukról:</p>
<p><a href="http://www.trilead.com/Download/Trilead-SSH-2-Java/" title="SSH client java komponens" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.trilead.com');">http://www.trilead.com/Download/Trilead-SSH-2-Java/</a></p>
<p>(A licensz szerz?dést természetesen figyelmesen olvassuk, el miel?tt üzleti alkalmazásokat fejlesztünk a komponens segítségével)</p>
<p>Ennek a fejlesztésnek azért örülök, mert megoldás lehet arra a problémára, hogy nem kell egy szerver adatbázis portját &#8220;kinyitni&#8221; a nagyvilágnak, mégis el tudja érni bárhonnan egy adatbázis alakalmazás. A lényeg, hogy készítünk egy keretprogramot, ami elvégzi a bejelentkezést a szerverre SSH-n keresztül, és tunnelt épít fel a szerver és a kliens gép között a használni kívánt adatbázis portra. Ezután már az alkalmazás logikai muduljai a kliens lokális portján keresztül érik el az adatbázist.</p>
<p>Példaként a privát-publikus kulcsos bejelentkezést mutatom meg. Indulás képpen el kell készíteni a privát és publikus kulcsokat.</p>
<p>Hozzunk létre egy új felhasználót a szeveren, vagy már egy meglév?vel lépjünk be. Ezzel a felhasználóval fogjuk hsználni a java komponenst. Feltételezem, hogy telepítve van az ssh a szerveren, de ha nem akkor a következ? parancsal tudjuk ezt megtenni debian alatt:</p>
<pre>
#apt-get install ssh</pre>
<p>Ha felment az ssh, készítsük el a kulcsokat:</p>
<pre>
#user@host$ ssh-keygen

Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX user@host</pre>
<p>A parancs kér egy jelszót a privát kulcs titkosításához, majd létre fogja hozni a kulcsokat a felhasználó home könyvtárában egy .ssh könyvtár alatt.</p>
<p>Ezzel készen is van a kulcs generálás. A java komponensnek a bejelentkezéshez a privát, vagyis a</p>
<pre>/home/user/.ssh/id_rsa</pre>
<p>nev? file fog kelleni, ezt töltsük le a szevererr?l.<br />
Töltsük le a komponenst és implementáljuk az alkalmazásunkba majd a következ?képpen tudjuk életre kelteni.</p>
<p>Létrehozunk egy új kapcsolatot, és kapcsolódunk:</p>
<pre>Connection conn = new Connection(SSHServerHost);
conn.connect();</pre>
<p>A kapcsolódás után pedig bejelentkezünk, és ha sikerült, létrehozzuk a tunnelt:</p>
<pre>try {
  boolean isAuthenticated =
     conn.authenticateWithPublicKey(
          "felhasználónév",
          new File("privát kulcs elérési útja"),
          "privát kulcs jelszava");

  if (isAuthenticated != false) {
    lpf1 = conn.createLocalPortForwarder(
		SSHTunnelPort,
		SSHRemoteHost,
		SSHTunnelPort);
  }
} catch (IOException e) {}</pre>
<p>Ha a bejelentkezés sikeres, és a tunnel felépítése sem okoz kivételt, akkor már kapcsolódhatunk is localhost-on az adatbázisunkhoz.</p>
]]></content:encoded>
			<wfw:commentRss>http://code.gyurasits.hu/2008/05/28/ssh-bejelentkezes-tunnel-java-ban/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title></title>
		<link>http://code.gyurasits.hu/2008/05/27/javabean-es-a-data-binding-feladat-egy-pop3-kiszolgalo-lekerdezese/</link>
		<comments>http://code.gyurasits.hu/2008/05/27/javabean-es-a-data-binding-feladat-egy-pop3-kiszolgalo-lekerdezese/#comments</comments>
		<pubDate>Tue, 27 May 2008 13:39:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<guid isPermaLink="false">http://code.gyurasits.hu/2008/05/27/javabean-es-a-data-binding-feladat-egy-pop3-kiszolgalo-lekerdezese/</guid>
		<description><![CDATA[A javaBean-ek gyakorlatilag java osztályok, melyek azért kapták ezt a nevet, mert önmagukban teljesen zártak és mindenféle m?veletet csak a publikus metódusaikon keresztül tudunk elvégezni rajtuk.
Ez a felfogás az alapja annak, hogy olyan programrészeket (komponenseket)  tudjuk fejleszteni, amit aztán utólag könnyedén fel tudunk mi vagy mások (akár a komponens bels? szerkezetének ismerete nélkül is) [...]]]></description>
			<content:encoded><![CDATA[<p>A javaBean-ek gyakorlatilag java osztályok, melyek azért kapták ezt a nevet, mert önmagukban teljesen zártak és mindenféle m?veletet csak a publikus metódusaikon keresztül tudunk elvégezni rajtuk.</p>
<p>Ez a felfogás az alapja annak, hogy olyan programrészeket (komponenseket)  tudjuk fejleszteni, amit aztán utólag könnyedén fel tudunk mi vagy mások (akár a komponens bels? szerkezetének ismerete nélkül is) is használni bárhol, ahol szükség van rá.</p>
<p>Feladat, hogy készítsük egy olyan osztályt ami beolvassa egy POP3  kiszolgálóra érkezett leveleket, és azt javaBean-ekben, illetve ezekb?l készült listákban tárolja. A listákat pedig jelenítsük meg dataBinding segítségével egy jtable komponensben.</p>
<p>Szükségünk lesz a javamail komponensre, amit a sun oldaláról lehet letölteni inegyenesen:</p>
<p><a href="http://java.sun.com/products/javamail/" title="JavaMail API" target="_blank" onclick="javascript:pageTracker._trackPageview('/outbound/article/java.sun.com');">http://java.sun.com/products/javamail/ </a></p>
<p>Készítsük el a javaBean-t ami, tárolni fogja egy levél adatait.<br />
NetBeans-ben jobb click a projekt nevére -&gt; new -&gt; other menüpot. Majd a megjelen? ablakban a &#8220;javabeans objects&#8221; kategóriából a &#8220;JavaBeans component&#8221; -et kell választani.</p>
<p><img src="http://gyurasits.hu/codeimages/javabeans/newbean.jpg" title="új java bean létrehozása" alt="új java bean létrehozása" /></p>
<p>Majd a létrehozott alap bean-t egészítsük ki a levél tulajdonságokkal.</p>
<p>Ha valaki sima szövegszerkeszt?t használ, akkor a köv. a kód:</p>
<pre>
import java.beans.*;
import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import javax.mail.Address;
import javax.mail.Flags;
import javax.mail.Folder;

public class MailMessage
  extends Object implements Serializable {

private PropertyChangeSupport propertySupport;
private String subject;
private Date sentDate;
private Date receivedDate;
private int messageNumber;
private String mailFrom;
private Collection&lt;javax.mail.Address&gt; replyTo;
private javax.mail.Folder folder;
private javax.mail.Flags flags;
private int size;
private String content;

public MailMessage() {
  propertySupport = new PropertyChangeSupport(this);
}

public String getSubject() {
  return subject;
}

public void setSubject(String subject) {
  this.subject = subject;
}

public int getMessageNumber() {
  return messageNumber;
}

public void setMessageNumber(int messageNumber) {
  this.messageNumber = messageNumber;
}

public Date getReceivedDate() {
  return receivedDate;
}

public void setReceivedDate(Date receivedDate) {
  this.receivedDate = receivedDate;
}

public Date getSentDate() {
  return sentDate;
}

public void setSentDate(Date sentDate) {
  this.sentDate = sentDate;
}

public Flags getFlags() {
  return flags;
}

public void setFlags(Flags flags) {
  this.flags = flags;
}

public Folder getFolder() {
  return folder;
}

public void setFolder(Folder folder) {
  this.folder = folder;
}

public String getMailFrom() {
  return mailFrom;
}

public void setMailFrom(String mailFrom) {
  this.mailFrom = mailFrom;
}

public Collection&lt;Address&gt; getReplyTo() {
  return replyTo;
}

public void setReplyTo(Collection&lt;Address&gt; replyTo) {
  this.replyTo = replyTo;
}

public int getSize() {
  return size;
}

public void setSize(int size) {
  this.size = size;
}

public String getContent() {
  return content;
}

public void setContent(String content) {
  this.content = content;
}

public void addPropertyChangeListener(
  PropertyChangeListener listener) {
propertySupport.addPropertyChangeListener(listener);

}

public void removePropertyChangeListener(
  PropertyChangeListener listener) {
  propertySupport.removePropertyChangeListener(listener);
}

}</pre>
<p>Ezzel létrehoztunk egy MailMessage nev? osztályt, amely majd egy üzenet adatait fogja tárolni.</p>
<p>Figyeljük meg, hogy a JavaBean minden tulajdonságát setter illetve gettet metódusokkal állítjuk be és kérdezzük le. Ez nagyon fontos mivel ez miatt válik tulajdonképpen &#8220;bean&#8221;-é.  A továbbiakban pedig a dataBinding-nál is nagy szerep jut ezeknek a metódusoknak.</p>
<p>A következ? feladat elkészíteni azt az osztályt, ami lekérdezi a megadott POP3 postafiók leveleit, és az el?z?leg definiált JavaBean -ekb?l listát készít.</p>
<p>A forrást terjedelni okok miatt  nem teszem ide fel, hanem letölthet? a köv. helyr?l:</p>
<p><a href="http://www.gyurasits.hu/codedocuments/javabeans/FetchMail.java" title="FetchMail.java" target="_blank" >FetchMail.java</a></p>
<p>A használata pedig a következ?.</p>
<p>Példányosítjuk az osztályt, átadva a konstruktornak a POP3 kiszolgáló adatait:</p>
<pre>
FetchMail mailManager = new FetchMail(host,user,pass);</pre>
<p>Majd a getMessages() metódust használva kérhetjük le a JavaBean listát. Tehát hozzunk létre egy objektumot, amibe lekérdezzük a leveleket:</p>
<pre>
FetchMail mailManager = new FetchMail(host,user,pass);

java.util.List&lt;MailMessage&gt; messageList =
  ObservableCollections.observableList(mailManager.getMessages());</pre>
<p>(Érdemes több szálon futtatni ezeket a lekérdezéseket, mivel ez akár több 10 másodpercig is eltarthat a póstafiók telítettségét?l függ?en!)</p>
<p>Fontos, hogy ha bindelni akarjuk a listát, akkor observable listát készítsünk a JavaBean-ekb?l, mivel ezt kezeli le hibamentesen a data binding modul. A példában ez szerepel!</p>
<p>Ha kész a lista azt pedig bindelhetjük pl. egy jtable -höz:</p>
<pre>
bindingGroup = new org.jdesktop.beansbinding.BindingGroup();

JTableBinding jTableBinding = SwingBindings.createJTableBinding(
  AutoBinding.UpdateStrategy.READ_WRITE,
  messageList, jTable1);

JTableBinding.ColumnBinding columnBinding =
  jTableBinding.addColumnBinding(
    ELProperty.create("${messageNumber}"));

columnBinding.setColumnName("No");
columnBinding.setColumnClass(Integer.class);
columnBinding.setEditable(false);
columnBinding = jTableBinding.addColumnBinding(
  ELProperty.create("${mailFrom}"));

columnBinding.setColumnName("Feladó");
columnBinding.setColumnClass(String.class);
columnBinding.setEditable(false);
columnBinding = jTableBinding.addColumnBinding(
  ELProperty.create("${subject}"));

columnBinding.setColumnName("Tárgy");
columnBinding.setColumnClass(String.class);
columnBinding.setEditable(false);
columnBinding = jTableBinding.addColumnBinding(
  ELProperty.create("${sentDate}"));

columnBinding.setColumnName("Dátum");
columnBinding.setColumnClass(java.util.Date.class);
columnBinding.setEditable(false);
bindingGroup.addBinding(jTableBinding);
jTableBinding.bind();</pre>
<p>Ha kész a bindelés, akkor egy szép kis listát kapunk a táblázatunkba a postafiókban lév? levelekr?l.</p>
<p><img src="http://gyurasits.hu/codeimages/javabeans/maillist.jpg" title="Levél lista jtable-ben" alt="Levél lista jtable-ben" border="0" /></p>
]]></content:encoded>
			<wfw:commentRss>http://code.gyurasits.hu/2008/05/27/javabean-es-a-data-binding-feladat-egy-pop3-kiszolgalo-lekerdezese/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title></title>
		<link>http://code.gyurasits.hu/2008/05/25/joptionpane-uzenetek-es-dialogus-ablakok/</link>
		<comments>http://code.gyurasits.hu/2008/05/25/joptionpane-uzenetek-es-dialogus-ablakok/#comments</comments>
		<pubDate>Sun, 25 May 2008 00:55:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<guid isPermaLink="false">http://code.gyurasits.hu/2008/05/24/joptionpane-uzenetek-es-dialogus-ablakok/</guid>
		<description><![CDATA[Java swing programozásnál a JOptionPane osztály statikus metódusait hívhatjuk segítségül, ha üzeneteket, illetve eldöntend? kérdéseket akarunk feltenni a felhasználónak. Nagyon egyszer?, csak implementálni kell az osztályt, és már használhatjuk is ezeket a metódusokat.
Alapvet?en 3 féle dialógus ablakot hozhatunk létre. Egy, kett? és három gombos panelt.
Az egy gombos (üzenet panel):

JOptionPane.showMessageDialog(null,
  "Ez egy üzenet a felhasználónak",
 [...]]]></description>
			<content:encoded><![CDATA[<p>Java swing programozásnál a JOptionPane osztály statikus metódusait hívhatjuk segítségül, ha üzeneteket, illetve eldöntend? kérdéseket akarunk feltenni a felhasználónak. Nagyon egyszer?, csak implementálni kell az osztályt, és már használhatjuk is ezeket a metódusokat.</p>
<p>Alapvet?en 3 féle dialógus ablakot hozhatunk létre. Egy, kett? és három gombos panelt.</p>
<p>Az egy gombos (üzenet panel):</p>
<pre>
JOptionPane.showMessageDialog(null,
  "Ez egy üzenet a felhasználónak",
  "Info ablak",
  JOptionPane.INFORMATION_MESSAGE);</pre>
<p><img src="http://gyurasits.hu/codeimages/joption/message.jpg" title="joption message" alt="joption message" border="0" height="115" width="268" /></p>
<p>A két gombos (kérdés) panel:</p>
<pre>
JOptionPane.showConfirmDialog(null,
  "Biztos, hogy akarod?",
  "Kérdés ablak",
  JOptionPane.OK_CANCEL_OPTION);</pre>
<p><img src="http://gyurasits.hu/codeimages/joption/confirm.jpg" title="java confirm dialog" alt="java confirm dialog" border="0" height="115" width="268" /></p>
<p>A három gombos panel:</p>
<pre>
JOptionPane.showConfirmDialog(null,
  "Biztos, hogy akarod?",
  "Kérdés ablak",
  JOptionPane.YES_NO_CANCEL_OPTION);</pre>
<p><img src="http://gyurasits.hu/codeimages/joption/confirm2.jpg" title="java confirm dialog" alt="java confirm dialog" border="0" /></p>
<p>E mellett az ikonokat is lehet kedvünk szerint variálni. Pl. az üzenet ablak következ? variációban létezik:</p>
<p>JOptionPane.INFORMATION_MESSAGE<br />
<img src="http://gyurasits.hu/codeimages/joption/message.jpg" title="java üzenet ablak" alt="java üzenet ablak" border="0" /></p>
<p>JOptionPane.WARNING_MESSAGE<br />
<img src="http://gyurasits.hu/codeimages/joption/warning.jpg" title="java warning message" alt="java warning message" border="0" height="115" width="268" /></p>
<p>JOptionPane.ERROR_MESSAGE<br />
<img src="http://gyurasits.hu/codeimages/joption/error.jpg" title="java error message dialog" alt="java error message dialog" border="0" height="115" width="268" /></p>
<p>Üzenetek megjelenítése, és  eldöntend? kérdéseken kívül használhatjuk még a JOptionPane osztályt egyszer? szövegbevitelre is. Pl. kérdezzük meg a felhasználót, mi a neve:</p>
<pre>
JOptionPane.showInputDialog(null,
  "Mi a neved?",
  "Kérdés",
  JOptionPane.QUESTION_MESSAGE);</pre>
<p><img src="http://gyurasits.hu/codeimages/joption/input.jpg" title="java input string dialog" alt="java input string dialog" border="0" height="121" width="297" /></p>
<p>És a végére pedig jöjjön a magyarítás:</p>
<pre>JOptionPane.showOptionDialog(null,
  "Biztosan akarod?", "Kérdés",
  JOptionPane.DEFAULT_OPTION,
  JOptionPane.WARNING_MESSAGE,
  null, options, options[0]);</pre>
<p><img src="http://gyurasits.hu/codeimages/joption/magyar.jpg" title="java option pane magyar" alt="java option pane magyar" border="0" height="115" width="268" /></p>
<p>Ha valaki még többet szeretne megtudni a JOptionPane osztályról látogasson el a SUN weboldalára:</p>
<p><a href="http://java.sun.com/docs/books/tutorial/uiswing/components/dialog.html" title="How to Make Dialogs" onclick="javascript:pageTracker._trackPageview('/outbound/article/java.sun.com');">http://java.sun.com/docs/books/tutorial/uiswing/components/dialog.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://code.gyurasits.hu/2008/05/25/joptionpane-uzenetek-es-dialogus-ablakok/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title></title>
		<link>http://code.gyurasits.hu/2008/05/24/jcombobox-adatainak-megjelenitese-es-a-data-binding/</link>
		<comments>http://code.gyurasits.hu/2008/05/24/jcombobox-adatainak-megjelenitese-es-a-data-binding/#comments</comments>
		<pubDate>Sat, 24 May 2008 09:24:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<guid isPermaLink="false">http://code.gyurasits.hu/2008/05/24/jcombobox-adatainak-megjelenitese-es-a-data-binding/</guid>
		<description><![CDATA[Ha valaki adatbázis alkalmazást készít java-ban, alapvet?, hogy a data bindinget fogja használni. Ha egy jcombobox-ra adatokat bindelünk, pl egy listát, amit el?z?leg feltöltöttünk egy query-vel, akkor a megjelenítéssel akadnak problémák.
A bindelés után  következ?t kapjuk:

Hát ez nem éppen az amit látni szeretnénk, mivel nem túl informatív. A következ? képpen tudjuk orvosolni a problémát.
Módosítani kell [...]]]></description>
			<content:encoded><![CDATA[<p>Ha valaki adatbázis alkalmazást készít java-ban, alapvet?, hogy a data bindinget fogja használni. Ha egy jcombobox-ra adatokat bindelünk, pl egy listát, amit el?z?leg feltöltöttünk egy query-vel, akkor a megjelenítéssel akadnak problémák.</p>
<p>A bindelés után  következ?t kapjuk:</p>
<p><img src="http://gyurasits.hu/codeimages/combobad.jpg" title="JcomboBox megjelenítés, hibásan" alt="JcomboBox megjelenítés, hibásan" border="0" height="143" width="285" /></p>
<p>Hát ez nem éppen az amit látni szeretnénk, mivel nem túl informatív. A következ? képpen tudjuk orvosolni a problémát.</p>
<p>Módosítani kell a jcomboBox getListCellRendererComponent metódusát a következ? képpen:</p>
<pre>
jComboBox2.setRenderer(new DefaultListCellRenderer() {

  @Override
  public Component getListCellRendererComponent(JList list,
     Object value, int index, boolean isSelected,
     boolean cellHasFocus) {

   super.getListCellRendererComponent(list, value, index,
     isSelected,cellHasFocus);

   if (value instanceof &lt;Entitás bean&gt;) {
     &lt;Entitás bean&gt; mec = (&lt;Entitás bean&gt;)value;
     setText(mec.&lt;getter metódus&gt;);
   }
   return this;
  }
});</pre>
<p>A kód egy kicsit magyarázatra szorul.</p>
<p>Az &lt;Entitás bean&gt; helyére kell behelyettesíteni annak az osztálynak a nevét amire bindeltük a comboboxunkat. A &lt;getter metódus&gt; pedig ennek az osztálynak &#8211; entitás bean-nek- egy getter metódusa, ami majd visszaadja azt az adatot -stringet &#8211; amit szeretnénk, hogy megjelenjen a combobox soraiban.</p>
<p>Netbeans-ben a következ?képpen lehet ezt a felülírást megoldani.</p>
<p>Jobb klikk a combobox-ra -&gt; &#8220;customize code&#8221; menüpont kiválasztása -&gt; ide írhatjuk a kódot</p>
<p><img src="http://gyurasits.hu/codeimages/comboboxcustomcode.jpg" title="JComboBox custom code" alt="JComboBox custom code" border="0" height="306" width="354" /></p>
<p>Ha kész, lefordítva máris szenbet?n? a változás. Az el?bbi helyett valami ilyesmit látunk:</p>
<p><img src="http://gyurasits.hu/codeimages/combogood.jpg" title="jcombobox jó megjelenés" alt="jcombobox jó megjelenés" border="0" height="143" width="251" /></p>
]]></content:encoded>
			<wfw:commentRss>http://code.gyurasits.hu/2008/05/24/jcombobox-adatainak-megjelenitese-es-a-data-binding/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title></title>
		<link>http://code.gyurasits.hu/2008/05/05/ssh-tunnel-fix-ip-helyett-kiegeszites/</link>
		<comments>http://code.gyurasits.hu/2008/05/05/ssh-tunnel-fix-ip-helyett-kiegeszites/#comments</comments>
		<pubDate>Mon, 05 May 2008 07:41:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<guid isPermaLink="false">http://code.gyurasits.hu/2008/05/05/ssh-tunnel-fix-ip-helyett-kiegeszites/</guid>
		<description><![CDATA[Az el?z? cikkhez kiegészítésül (SSH tunnel fix IP helyett) találtam egy személyes használatra freeware programot, ami a PLink-hez ad gyakorlatilag egy GUI felületet, és nagyon szuperül lehet konfigurálni.

Beállíthatóak azok a szerverek, illetve portok amiket szeretnénk használni, és a program automatikusan, akár a windows indulásával együtt felépíti az SSH kapcsolatot és elkészíti a tunnel-eket. A portokat [...]]]></description>
			<content:encoded><![CDATA[<p>Az el?z? cikkhez kiegészítésül (<a href="http://code.gyurasits.hu/2008/04/28/ssh-tunnel-fix-ip-helyett/" >SSH tunnel fix IP helyett</a>) találtam egy személyes használatra freeware programot, ami a PLink-hez ad gyakorlatilag egy GUI felületet, és nagyon szuperül lehet konfigurálni.</p>
<p><img src="http://gyurasits.hu/codeimages/sshtunnel3.jpg" title="SSH tunnel Client 3.0" alt="SSH tunnel Client 3.0" border="0" height="242" width="355" /></p>
<p>Beállíthatóak azok a szerverek, illetve portok amiket szeretnénk használni, és a program automatikusan, akár a windows indulásával együtt felépíti az SSH kapcsolatot és elkészíti a tunnel-eket. A portokat akár csoportokba is rendezhetjük&#8230;</p>
<p>Letölthet? a következ? helyr?l:</p>
<p><a href="http://ssh-tunnel-client.findmysoft.com/" title="SSH tunnel Client" onclick="javascript:pageTracker._trackPageview('/outbound/article/ssh-tunnel-client.findmysoft.com');">http://ssh-tunnel-client.findmysoft.com/</a></p>
<p><strong>Természetesen ezzel is vigyázni kell, ha megadjuk a programban a jelszavunkat!</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://code.gyurasits.hu/2008/05/05/ssh-tunnel-fix-ip-helyett-kiegeszites/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SSH tunnel fix IP helyett</title>
		<link>http://code.gyurasits.hu/2008/04/28/ssh-tunnel-fix-ip-helyett/</link>
		<comments>http://code.gyurasits.hu/2008/04/28/ssh-tunnel-fix-ip-helyett/#comments</comments>
		<pubDate>Mon, 28 Apr 2008 09:37:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<guid isPermaLink="false">http://code.gyurasits.hu/2008/04/28/ssh-tunnel-fix-ip-helyett/</guid>
		<description><![CDATA[Szerver üzemeltetésnél álltalában az admin fix IP-n kereszül ér el bizonyos szolgáltatásokat, pl. MySQL, PostgreSQL stb&#8230;
Én azt vettem észre, hogy a Fix Ip szolgáltatás nagyon drága minden szolgáltatónál, azonban ezt megoldhatjuk olcsóbban is  
SSH álltalában minden szerveren van, és ip-t?l függetlenül elérhet?. Erre építünk, és a vnc-s dologból kiindulva készítsünk egy olyan parancsot amely [...]]]></description>
			<content:encoded><![CDATA[<p>Szerver üzemeltetésnél álltalában az admin fix IP-n kereszül ér el bizonyos szolgáltatásokat, pl. MySQL, PostgreSQL stb&#8230;</p>
<p>Én azt vettem észre, hogy a Fix Ip szolgáltatás nagyon drága minden szolgáltatónál, azonban ezt megoldhatjuk olcsóbban is <img src='http://code.gyurasits.hu/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>SSH álltalában minden szerveren van, és ip-t?l függetlenül elérhet?. Erre építünk, és a vnc-s dologból kiindulva készítsünk egy olyan parancsot amely autómatikusan csatlakozik a szerverre és felépíti az SSH tunnelt. Ezután már a localhost-on szépen el tudjuk érni a szervereinket.</p>
<p>Windows alatt (putty segítségével):</p>
<p><em><strong>putty -L 3306:&lt;host&gt;:3306 -ssh &lt;felhasználónév&gt;@&lt;host&gt; -pw &lt;jelszó&gt;</strong></em></p>
<p>Ezzel pl. a mysql szervert tudjuk elérni a saját localhostunkon. Ha több portot is szeretnénk a tunnelbe &#8220;bevenni&#8221;, akkor:</p>
<p><em><strong>putty -L 3306:&lt;host&gt;:3306 -L 5432:&lt;host&gt;:5432 -ssh &lt;felhasználónév&gt;@&lt;host&gt; -pw &lt;jelszó&gt;</strong></em></p>
<p>Ezzel pedig a PostgreSQL-t is látjuk, ha van persze a szerverre telepítve. <img src='http://code.gyurasits.hu/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Tehát egymás után felsoroljuk a -L paraméterrel.<br />
Értelem szer?en a &lt;host&gt;  a szerverünk IP-je, vagyDNS neve, a felhasználónév és jelszó pedig egy account a szerveren.</p>
<p>Ezt a sort rátehetjük egy parancsikonra, és bármikor lefuttatva létrejön a tunnel.<br />
<strong> FONTOS AZONBAN, hogy ez tartalmazza a jelszót a szerveünkre, ezért óvatosan bánjunk vele!!</strong> Természetesen a -pw paraméter elhagyható, azonban ekkor minden belépéskor meg kell adni a jelszót.</p>
<p>Linux alatt pedig az elöbbi mysql-es tunnel így néz ki:</p>
<p><em><strong>ssh -L  3306:&lt;host&gt;:3306 &lt;felhasználónév&gt;@&lt;host&gt;</strong></em></p>
<p>Vagy akár xinetd-en keresztül is  kezelhetjük. Egy példa mail tunnelre:</p>
<pre>service smtp
{
  port        = 25
  socket_type = stream
  protocol    = tcp
  only_from   = localhost
  interface   = 127.0.0.1
  wait        = no
  user        = local_user_with_appropriate_ssh_key
  group       = the_users_group
  flags       = REUSE
  server      = /usr/bin/ssh
  server_args = -x -a -q -T &lt;host&gt; netcat mailserver 25
}</pre>
<p>Ez utóbbit nem teszteltem!</p>
]]></content:encoded>
			<wfw:commentRss>http://code.gyurasits.hu/2008/04/28/ssh-tunnel-fix-ip-helyett/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
