[NEWSboard IBMi Forum]
Seite 3 von 4 Erste ... 2 3 4 Letzte
  1. #25
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Ich denke, Umlaute in der Mailadresse müssen ähnlich umgesetzt werden wie Umlaute in Web-Adressen.
    Bei z.B. www.schön-in-haan.de wird aus dem "ö" irgendwas mit "xn...", deshalb machen wir auch eine eigene Umleitung in www.schoen-in-haan.de.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  2. #26
    Registriert seit
    Nov 2004
    Beiträge
    325
    Moin,

    das mit den Umlauten prüfen wir gerade. Aber primär geht es darum, eine gültige Domain Adresse zu prüfen, was mit STRDNSQRY prinzipiel zu 99% funktioniert, aber in Ausnahmefällen aber eben nicht. Hat irgendwas mit dem mx Record zu tun.

    Da suchen wir noch nach einer Möglichkeit, die mx Antwort auszuwerten, bzw. eine richtige Anfrage an - wen auch immer - zu stellen.

    mfg

    DKSPROFI

  3. #27
    Registriert seit
    Jan 2016
    Beiträge
    4
    Kann mir jemand am Beispiel der E-Mail-Adresse max.mustermann@a-xyz.de den Aufruf von STRDNSQRY erläutern? Ich möchte das gern in mein RPG-Programm einbauen, mit dem ich die E-Mail-Adressen einer kompletten Kundendatei überprüfen und das Ergebnis in einem Feld der Dateistruktur zurückschreiben möchte. Ich würde pro Kundensatz ein externes CL-Programm per CALL aufrufen und ggf. das Ergebnis (nur `F` für Fehler) über einen Parameter an das aufrufende RPG-Programm zurückgeben.

  4. #28
    Registriert seit
    Nov 2004
    Beiträge
    325
    Moin,

    habe ich so nie hinbekommen, ich habe die funktion getbyhostname im RPG verwendet. Habe ich mal irgendwo im Netz gefunden, bein Interesse kannst Du es kriegen.

    mfg

    DKSPROFI

  5. #29
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    So wie die Doku aussieht ist es eher ein Dialogprogramm, dass auch noch extra installiert werden muss.
    Die C-Funktion "gethostbyname()" macht dann die DNS-Abfrage und liefert eine HOSTENT-Struktur zurück. Diese muss auch mit "free()" wieder freigegeben werden.

    Einfach gehts mit "ping" per CLP und anschließendem RCVMSG für das Ergebnis.
    Dabei ist es unerheblich, ob der Ping erfolgreich ist, wenn eine IP gemeldet wird.
    Die Anzahl der Pakete kann man auch auf 1 begrenzen.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #30
    Registriert seit
    Aug 2014
    Beiträge
    179

    GetHostByName

    PHP-Code:
             ctl-opt main(maindftactgrp(*nooption(*nounref);
          
    //------------------------------------------------------------------//
          //                                                                  //
          // GetHostByName                                                    //
          //                                                                  //
          //-----------------                                                 //
          // R.Ross 12.2016 *                                                 //
          //------------------------------------------------------------------//
          // Get Host by Name                                                 //
          //------------------------------------------------------------------//

             
    dcl-pr gethost      pointer extproc('gethostbyname');
                     
    ##host      pointer value options(*string);
             
    end-pr;

          
    //------------------------------------------------------------------//
          // Transform Internet Address to a dottet decimal Format            //
          //------------------------------------------------------------------//

             
    dcl-pr transform    pointer extproc('inet_ntoa');
                     
    ##address   uns(10) value;
             
    end-pr;

          
    //------------------------------------------------------------------//
          // Array - HostEntry                                                //
          //------------------------------------------------------------------//

             
    dcl-s   d#host_p    pointer;

             
    dcl-ds  dshost      based(d#host_p);
                      
    d#name     pointer;
                      
    d#alias    pointer;
                      
    d#addrtyp  int(10);
                      
    d#length   int(10);
                      
    d#addrlist pointer;
             
    end-ds;

             
    dcl-s   d#addr_p    pointer based(d#addrlist);
             
    dcl-s   d#hostaddr  uns(10) based(d#addr_p);

          //------------------------------------------------------------------//
          // Variablen                                                        //
          //------------------------------------------------------------------//

             
    dcl-s   h#host      char(32);
             
    dcl-s   h#ipchar    char(15);
             
    dcl-s   h#ip        uns(10);

          //------------------------------------------------------------------//
          // Main                                                             //
          //------------------------------------------------------------------//
             
    dcl-proc main;

               
    h#host  = 'www.web.de';

               
    d#host_p = gethost(%trim(h#host));

               
    if d#host_p <> *null;
                  
    h#ip     = d#hostaddr;
                  
    h#ipchar = %str(transform(h#ip));
               
    endif;

             
    end-proc;
          
    //------------------------------------------------------------------// 

  7. #31
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Schön, dass die Quelle nun nicht mehr abwärtskompatibel bereitgestellt wird.
    Immerhin gibts die C-Funktionen schon seit V5R4.
    Das war früher auch anders...
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  8. #32
    Registriert seit
    Nov 2004
    Beiträge
    325
    Moin,

    das funz gut, haben wir auch so gemacht. Kann eigentich auch der mx record abgefragt werden? Konkret habe wir eine Mailadresse die wie folgt lautet:

    Name_Name.de - Lt DNS ungültig Antwort im STRDNSQRY ist NSDOMAIN,

    wenn aber strdnsqry -> set type=mx, dann Name_Name.de eingegeben wird, dann kommt:

    Name_Name.de mailexchanger = 10 .mailbox.Name_Name.de

    Damit ist die Adresse gültig, obwohl es keine Domain gibt.

    mfg

    DKSPROFI

  9. #33
    Registriert seit
    Nov 2004
    Beiträge
    325
    Moin,

    vieleicht etwas kompatibler:

    d P_Host S 128A

    d inet_addr PR 10U 0 ExtProc('inet_addr')
    d address_str * value options(*string)

    d INADDR_NONE C CONST(4294967295)

    d inet_ntoa PR * ExtProc('inet_ntoa')
    d internet_addr 10U 0 value

    d p_hostent S *
    d hostent DS Based(p_hostent)
    d h_name *
    d h_aliases *
    d h_addrtype 10I 0
    d h_length 10I 0
    d h_addr_list *
    d p_h_addr S * Based(h_addr_list)
    d h_addr S 10U 0 Based(p_h_addr)

    d gethostbyname PR * extproc('gethostbyname')
    d host_name * value options(*string)

    D IP S 10U 0

    P_Host = 'www.web.de ' ;
    IP = inet_addr(%trim(P_host)) ;

    If IP = INADDR_NONE ;
    p_hostent = gethostbyname(%trim(P_host)) ;
    If p_hostent <> *NULL ;
    IP = h_addr ;
    EndIf ;
    EndIf ;

    If IP = INADDR_NONE ;
    // Fehler
    Else ;
    // Kein Fehler
    EndIf ;
    *InLr = *On ;

    mfg

    DKSPROFI

  10. #34
    Registriert seit
    Nov 2004
    Beiträge
    325
    Moin,

    und nochmals Old School:
    H DFTACTGRP(*NO) ACTGRP(*NEW)

    D inet_addr PR 10U 0 ExtProc('inet_addr')
    D address_str * value options(*string)

    D INADDR_NONE C CONST(4294967295)

    D inet_ntoa PR * ExtProc('inet_ntoa')
    D internet_addr 10U 0 value

    D p_hostent S *
    D hostent DS Based(p_hostent)
    D h_name *
    D h_aliases *
    D h_addrtype 10I 0
    D h_length 10I 0
    D h_addr_list *
    D p_h_addr S * Based(h_addr_list)
    D h_addr S 10U 0 Based(p_h_addr)

    D gethostbyname PR * extproc('gethostbyname')
    D host_name * value options(*string)

    D host S 32A
    D IP S 10U 0
    D Msg S 50A

    c *entry plist
    c parm host

    c eval IP = inet_addr(%trim(host))

    c if IP = INADDR_NONE
    c eval p_hostent = gethostbyname(%trim(host))
    c if p_hostent <> *NULL
    c eval IP = h_addr
    c endif
    c endif

    c if IP = INADDR_NONE
    c eval Msg = 'Host not found!'
    c else
    c eval Msg = 'IP = ' + %str(inet_ntoa(IP))
    c endif

    c dsply Msg

    c eval *inlr = *on

    mfg

    DKSPROFI

  11. #35
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Nun, ein DNS-Server kann auch eine IP-Adresse "127.0.53.53" als gültige IP melden.
    Diese IP-Adresse gilt als sog. Konflikt-Adresse.
    Auf dieses Problem bin ich nun gestoßen, da es die neue Endung ".box" gibt.
    Da aber alle Fritzboxen nun intern generell als Domain "fritz.box" fest und nicht veränderbar eingestellt haben, liefert eine DNS-Auflösung nun grundsätzlich obige Adresse.
    Die tatsächlichen IP-Adressen sind nicht mehr erfragbar.

    Ja gut, hat mit dem Thema nur indirekt zu tun.
    Aber wenn ihr die obige Adresse erhaltet muss das nicht unbedingt falsch sein, auch wenn das gewünschte Ziel ohne Kenntnis der echten IP nicht mehr erreichbar ist.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  12. #36
    Registriert seit
    Jan 2001
    Beiträge
    832
    Zitat Zitat von andreaspr@aon.at Beitrag anzeigen
    Falls du 7.2 im Einsatz hast kannst du mit Regex einen großteil der Prüfung durchführen lassen.
    Da du ja auch in RPG einfach SQL Funktionen einbauen kannst.
    Musst dir im Internet nur den richtigen Pattern holen und dann ist es ein 1-Zeiler.

    lg Andreas
    Hi,

    ja sowas stelle ich mir vor.
    Allerdings ist mir die Syntax nicht ganz klar .
    Wir haben V7R2 und die ERGEXP_Like funktionieren.

    Hier mal ein Beispiel :
    PHP-Code:
    select 'x'  from sysibm/sysdummy1                                   
    where   not                                                         
    (REGEXP_like('q@m@Pr.de','([\w-\.]+)@((?:[\w]+\.)+)([-zA-Z]{2,4})'  
    )) 
    Das Beispiel ist zwar noch falsch, aber SQL klappt.

Similar Threads

  1. Antworten: 2
    Letzter Beitrag: 22-11-15, 10:19
  2. Antworten: 0
    Letzter Beitrag: 15-10-14, 13:43
  3. MAC Adresse einer Ethernetkarte
    By Uwe Kohlberg in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 21-08-08, 09:32
  4. Erstellen einer STMF mittels CL-Programm
    By systemer in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 19-02-03, 09:33
  5. IP-adresse einer 5250sitzung auffinden
    By karin-vogelmann in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 09-11-01, 16:10

Tags for this Thread

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •