home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / boot / i386 / root / usr / share / YaST2 / modules / Hostname.ycp < prev    next >
Text File  |  2006-11-29  |  3KB  |  133 lines

  1. /**
  2.  * File:    modules/Hostname.ycp
  3.  * Package:    yast2
  4.  * Summary:    Hostname manipulation routines
  5.  * Authors:    Michal Svec <msvec@suse.cz>
  6.  * Flags:    Stable
  7.  *
  8.  * $Id: Hostname.ycp 31242 2006-06-01 12:59:16Z locilka $
  9.  */
  10.  
  11. {
  12.  
  13. module "Hostname";
  14. textdomain "base";
  15.  
  16. import "IP";
  17.  
  18. /**
  19.  * i18n characters in domain names are still not allowed
  20.  *
  21.  * @unstable
  22.  */
  23. global string ValidChars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-";
  24. global string ValidCharsDomain = ValidChars + ".";
  25. global string ValidCharsFQ = ValidCharsDomain;
  26.  
  27. /**
  28.  * describe a valid domain name
  29.  * @return description
  30.  */
  31. global string ValidDomain () {
  32.     //Translators: dot: ".", hyphen: "-"
  33.     return _("A valid domain name consists of components separated by dots.
  34. Each component contains letters, digits, and hyphens. A hyphen may not
  35. start or end a component and the last component may not begin with a digit.");
  36. }
  37.  
  38. /**
  39.  * describe a valid host name
  40.  * @return description
  41.  */
  42. global string ValidHost () {
  43.     //Translators: hyphen: "-"
  44.     return _("A valid host name consists of letters, digits, and hyphens.
  45. A host name may not begin or end with a hyphen.
  46. ");
  47. }
  48.  
  49. /**
  50.  * describe a valid FQ host name
  51.  * @return describe a valid FQ host name
  52.  */
  53. global string ValidFQ() {
  54.     return ValidDomain();
  55. }
  56.  
  57. /**
  58.  * Check syntax of hostname entry
  59.  * (that is a domain name component, unqualified, without dots)
  60.  * @see rfc1123, rfc2396 and obsoleted rfc1034
  61.  * @param host hostname
  62.  * @return true if correct
  63.  */
  64. global define boolean Check(string host) ``{
  65.     if (host == nil || host == "" || size(host) > 63) return false;
  66.     return regexpmatch(host, "^[[:alnum:]]([[:alnum:]-]*[[:alnum:]])?$");
  67. }
  68.  
  69. /**
  70.  * Check syntax of domain entry
  71.  * @param domain domain name
  72.  * @return true if correct
  73.  */
  74. global define boolean CheckDomain(string domain) ``{
  75.     if (domain == nil || domain == "") return false;
  76.     list <string> l = splitstring(domain, ".");
  77.     if (contains (maplist(string h, l, ``(Check(h))), false)) return false;
  78.     return !regexpmatch (domain, "\\.[[:digit:]][^.]*$");
  79. }
  80.  
  81. /**
  82.  * Check syntax of fully qualified hostname
  83.  * @param host hostname
  84.  * @return true if correct
  85.  */
  86. global define boolean CheckFQ(string host) ``{
  87.     return CheckDomain(host);
  88. }
  89.  
  90. /**
  91.  * Split FQ hostname to hostname and domain name
  92.  * @param fqhostname FQ hostname
  93.  * @return list of hostname and domain name
  94.  * @example Hostname::SplitFQ("ftp.suse.cz") -> ["ftp", "suse.cz"]
  95.  * @example Hostname::SplitFQ("ftp") -> ["ftp"]
  96.  */
  97. global define list<string> SplitFQ(string fqhostname) ``{
  98.     if (fqhostname == "" || fqhostname == nil) {
  99.     y2error("Bad FQ hostname: %1", fqhostname);
  100.     return [];
  101.     }
  102.  
  103.     string hn = "";
  104.     string dn = "";
  105.  
  106.     integer dot = findfirstof(fqhostname, ".");
  107.     if (dot != nil) {
  108.     hn = substring(fqhostname, 0, dot);
  109.     dn = substring(fqhostname, dot+1);
  110.     return [ hn, dn ];
  111.     }
  112.     else {
  113.     hn = fqhostname;
  114.     return [ hn ];
  115.     }
  116.  
  117.     return [ hn, dn ];
  118. }
  119.  
  120. /**
  121.  * Merge short hostname and domain to full-qualified host name
  122.  * @param hostname short host name
  123.  * @param domain domain name
  124.  * @return FQ hostname
  125.  */
  126. global define string MergeFQ(string hostname, string domain) {
  127.     if(domain == "" || domain == nil) return hostname;
  128.     return hostname + "." + domain;
  129. }
  130.  
  131. /* EOF */
  132. }
  133.