# Telnet port Zugriff problem (public IP)



## ABstraCT (13. Jan 2009)

Hi,

habe ein applet welches per telnet port auf ein technisches gerät (welches als telnet server fungiert) zugreift, so lange es im lokalen netz ist funktioniert ist problemlos, doch sobald ich es auf ne öffentliche IP lege komme ich nicht mehr drauf.

Das applet ist in nem jar file gepackt und signiert und wenn ich mir die java console ausgeben lasse, bleibt er immer bei der telnet connection stehen:

network: Verbindung von http://XX.XX.XX.XX:23/ mit Proxy=DIRECT wird hergestellt


jemand ne idee woran es noch liegen könnte ?

firewall lässt den telnet port durch.

CU

P.S. anscheinend läuft es teilweise auf nem anderen rechner, obwohl die kommunikation auch nicht vollständig ist.
mit der telnet console kann ich problemlos auf die kiste zu greifen.


----------



## HoaX (13. Jan 2009)

ich vermute mal vorher war der server mit dem applet der selbe rechner wie auch das ziel für telnet? schau mal in die javaconsole, da fliegt sicherlich eine SecurityException weil dem aplet die rechte dazu fehlen.

applets laufen immer auf dem client, "teilweise anderswo" höchstens wenn sie auf nen appserver oä zugreifen, aber dann sollte das einem bewusst sein ...


----------



## ABstraCT (14. Jan 2009)

Hmm, also so ganz verstehe ich es nicht.

Ich erzeuge ne version auf meinem rechner teste die dann z.B. auf dem gerät und laufe dann zu dem public IP netzwerk, ändere die IP und den gateway und will es dann testen.

mache ich bei der reihenfolge irgendwas falsch ?

execeptions sehe ich eigentlich keine, er tut nur meckern dass meine 2 jars in der lib nicht signiert sind, aber das dürfte nicht das problem sein oder ? (ist auch network: nicht security

signieren tue ich mit dem keytool und der anleitung die es hier im forum gab.
(da kommt einzig am anfang bei Schritt2: schluessel generieren:
Keytool-Fehler: java.lang.Exception: Schlüsselpaar wurde nicht erzeugt, Alias <Signer> ist bereits vorhanden).
Mache ich da was falsch = Muss ich jedes mal nen anderen Alias erzeugen ? Am ende kommt nämlich schon certificate is valid etc. und es funzt auch im LAN.

security meldungen gibt´s bis dahin nur diese:

security: Berechtigungen für den Code wurden vom Benutzer nur für diese Sitzung gewährt
security: Zertifikat wird Bereitstellungssitzungs-Zertifikatspeicher hinzugefügt
security: Zertifikat wurde Bereitstellungssitzungs-Zertifikatspeicher hinzugefügt
security: Zertifikate werden Bereitstellungssitzungs-Zertifikatspeicher hinzugefügt
security: Zertifikat wurden Bereitstellungssitzungs-Zertifikatspeicher hinzugefügt

CU


----------



## Ebenius (14. Jan 2009)

ABstraCT hat gesagt.:
			
		

> Mache ich da was falsch = Muss ich jedes mal nen anderen Alias erzeugen ?



Du kannst in einem Keystore nicht zwei Schlüsselpaare mit dem selben Alias ablegen. Entweder löschst Du den keystore vorher, oder Du entfernst das Schlüsselpaar, oder Du nutzt das was bereits existiert. Letzteres tut's offenbar jetzt schon, nachdem keytool geschimpft hat, dass kein neues Schlüsselpaar hinzugefügt werden kann.

Ansonsten habe ich zum Thema allerdings keine Meinung/Ahnung.

Ebenius


----------



## ABstraCT (14. Jan 2009)

Habe den keystore gelöscht und alles neu signiert, aber der effekt bleibt gleich.

THANX anyway

CU

P.S. weil ich es grad beim signieren lese brauche ich doch vielleicht SSL oder irgendwas anderes ? trusted certificate etc. ?


----------



## Ebenius (14. Jan 2009)

ABstraCT hat gesagt.:
			
		

> P.S. weil ich es grad beim signieren lese brauche ich doch vielleicht SSL oder irgendwas anderes ? trusted certificate etc. ?



Einfach alle JARs mit jarsigner signieren.


----------



## ABstraCT (14. Jan 2009)

Hmmm,

habe nun vor jedem signieren den keystore gelöscht und somit meine 3 jar dateien signiert.(eine Haupt und 2 in lib)
Nun kommt ein zweites (vertrauen ?) window und es freezt danach bei:

basicERF:AppletExecutionRunnable - applet.init() BEGIN ; jvmLaunch dt223813 us , pluginInit dt 36615789 us, ToTalTime: 36839602

ein.

ARGH
CU


----------



## ABstraCT (14. Jan 2009)

also so langsam tippe ich auf irgendwelche netzwerkeinstellungen.

wenn ich nämlich funktionen auskommentiere die viele telnet commands rüberschiessen, klappt es auch mit dem applet.
aber der trace bei mir läuft trotzdem verdächtig langsam, auf nem anderen rechner ist der trace viel schneller die probs bleiben aber dieselben.

hat jemand ne idee ?

der mensch bei dem es funktioniert hat z.B. das saven der temporary internet files in den java einstellungen deaktiviert, bringt bei mir aber auch nix.

CU

P.S. habe jetzt lauter ausgaben nach den einzelnen befehlen eingefügt und der thread wird schon abgearbeitet, nur viel zu langsam.

netzwerkauslastung ist max bei 0,50% und ich habe nen 2 Mbit S-DSL Anschluß


----------



## ABstraCT (15. Jan 2009)

So habe mal ne Teillösung gefunden.

Und zwar scheint es ein Problem mit nem Thread geben.
Ich habe nen Statusthread der jede sekunde telnet commandos schickt und noch nen anderen der z.B. am anfang setup informationen abfragt.

Das komische ist dass die threads nicht direkt mit dem port kommunizieren sondern über eine art schnittstelle (damit es keine kollisionen gibt) und dieser schickt die commandos aus der queue erst auf den port und wartet bis ne antwort kommt.
Wie gesagt läuft sowas problemlos im LAN und auf der public IP habe ich nun gemerkt dass wenn ich den service thread nur alle 5 sec. abfrage ich nun drauf komme.(zwar auch nicht blitzschnell aber eigentlich OK!)

hat jemand ne Idee woran so ein effekt liegen könnte ?

Komisch ist dass ich z.B. Kunden habe die die software mit 1 sec. laufen haben und die problemlos drauf kommen, aber ich z.B. nicht auf ihre geräte drauf komme.

scheint also doch mit irgendwelchen netzeinstellungen zusammen zu hängen doch mit welchen ?
wir haben hier ein netzwerk mit nem intranator(firewall) und nem zusätzlichen Lancom router, (was nicht das optimalste ist), aber wo könnte ich ansetzen ?

THANX
CU


----------



## HoaX (15. Jan 2009)

wenn das so ist würde ich mal das netzwerk selbst als ursache ausschließen. ich vermute ehr dass deine probleme von deiner queue produziert werden. aber ohne die zu kennen kann man da nicht viel mehr zu sagen


----------



## ABstraCT (16. Jan 2009)

warum würdest du das netzwerk ausschliessen ?

wie geschrieben in manchen netzwerken geht´s ja auch mit 1 sec und in anderen nicht (im LAN sowieso immer)!

die queue habe ich nach dem singleton prinzip erstellt.

```
public class ServiceQueue extends FifoQueue<String>{

   public static ServiceQueue INSTANCE = null;
   
   private ServiceQueue() {
      super();
   }
   
   public  static synchronized ServiceQueue getInstance() {
      if(INSTANCE == null)
         INSTANCE = new ServiceQueue();
      
      return INSTANCE;
   }
}
```


```
import java.util.LinkedList;
import java.util.Queue;

public class FifoQueue<T> {

   private Queue<T> queue;
   
   public FifoQueue() {
      queue = new LinkedList<T>();
   }
   public synchronized void addElement( T o ) {
      queue.add( o );
      notify();
   }
   public synchronized T getElement() {
      T o = null;
      if(!queue.isEmpty())
         o = queue.poll();

      notify();
      return o;
   }
   public int getCount() {

      return queue.size();
   }
}
```

und der service thread fängt so an


```
public class ServiceThread extends Thread{

   private CommandQueue cq;
   private long waittime = 5000;
   Message msg;
   private static boolean running = true;
   
    public static boolean set_runningf(){
        
            running = false;
            return running;
    }
   public static boolean set_running(){

            running = true;
            return running;
    }
   
   public ServiceThread() {
      cq = CommandQueue.getInstance();
   }
   @Override
   public void run() {
     try {
//     System.out.println("RUNNING SERVICE++++++++++++++++++++++++++++++"+running);
      while(running == true) {
         // auf Abbruch testen
          
         if(ServiceThread.interrupted())
            throw new InterruptedException();
```


----------



## HoaX (16. Jan 2009)

sry, dass es im lan immer geht hab ich irgendwie überlesen...

was passiert in diesem service-thread? baut der für jeden befehl eine neue verbindung zum zielrechner auf oder verwendet der immer ein und die selbe?


----------



## ABstraCT (16. Jan 2009)

also eigentlich nix weltbewegendes.

ich mach nen socket auf den 23 port auf und dann werden die commandos eben an die queue geschickt und die schickt sie rüber.

in dem servicethread sind halt z.B. 15 abfragen hintereinander und in der setup funktion die am anfang abgerufen wird ca. 50.

diese laufen auch geordnet durch nur eben tierisch langsam. im LAN schiesst´s sofort durch und wie gesagt bei machen netzen scheint´s ja auch zu gehen.

CU

so laufen die messages in dem servicethread durch

```
msg = new Message(Sender.SERVER, "XXXX");
         cq.addElement(msg);
         msg = new Message(Sender.SERVER, "XXX");
         cq.addElement(msg);
         msg = new Message(Sender.SERVER, "XXX");
         cq.addElement(msg);
```

cq is die commandqueue


```
public class CommandQueue extends FifoQueue<Message>{

   public static CommandQueue INSTANCE = null;
   
   private CommandQueue() {
      super();
   }
   
   public static synchronized CommandQueue getInstance() {
      if(INSTANCE == null)
         INSTANCE = new CommandQueue();
      
      return INSTANCE;
   }
}
```


----------

