create core package

This commit is contained in:
aydemir
2015-02-24 11:18:35 +02:00
parent 0e4b743b82
commit 70b25d0f95
1098 changed files with 169545 additions and 0 deletions
+174
View File
@@ -0,0 +1,174 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
import os
import string
import subprocess
# Translations
MSG_HOSTNAME = {
"en": "Hostname contains invalid characters: '%s'",
"tr": "Makine ismi geçersiz karakterler içeriyor: '%s'",
"fr": "Le nom d'hôte contient des caractères invalides: '%s'",
"nl": "Hostnaam bevat ongeldige lettertekens: '%s'",
}
# Translations End
HEADER_DEFAULT = """# Default DNS settings
#
"""
HEADER_DYNAMIC = """# This file is automatically generated by COMAR
# Use network-manager to set default DNS settings or edit "resolv.default.conf"
#
# Bu dosya COMAR tarafından otomatik olarak üretilir.
# Öntanımlı DNS ayalarını değiştirmek için network-manager uygulamasını kullanın
# veya "resolv.default.conf" dosyasını düzenleyin.
#
"""
MAX_SERVERS = 3
HOST_CHARS = string.ascii_letters + string.digits + '.' + '_' + '-'
NAME_PATH = "/etc/env.d/01hostname"
CMD_ENV = "/sbin/update-environment"
HOSTS_PATH = "/etc/hosts"
RESOLV_USER = "/etc/resolv.default.conf"
RESOLV_PISILINUX = "/usr/share/baselayout/resolv.conf"
def getSearchDomain():
if not os.access(RESOLV_USER, os.R_OK):
return None
for line in file(RESOLV_USER):
line = line.strip()
if line.startswith("search"):
return line.split()[1]
return None
def getPisiLinuxNameServers():
servers = []
if not os.access(RESOLV_PISILINUX, os.R_OK):
return servers
for line in file(RESOLV_PISILINUX):
line = line.strip()
if line.startswith("nameserver"):
ip = line.split()[1]
if ip not in servers:
servers.append(ip)
return servers
# Network.Stack methods
def getNameServers():
servers = []
if not os.access(RESOLV_USER, os.R_OK):
return servers
for line in file(RESOLV_USER):
line = line.strip()
if line.startswith("nameserver"):
ip = line.split()[1]
if ip not in servers:
servers.append(ip)
return servers
def setNameServers(nameservers, searchdomain):
f = file("/etc/resolv.default.conf", "w")
f.write(HEADER_DEFAULT)
for server in nameservers:
f.write("nameserver %s\n" % server)
if searchdomain:
f.write("searchdomain %s\n" % searchdomain)
f.close()
def useNameServers(nameservers, searchdomain):
# Append default name servers
nameservers.extend(getNameServers())
nameservers.extend(getPisiLinuxNameServers())
servers = []
for server in nameservers:
if server not in servers:
servers.append(server)
f = file("/etc/resolv.conf", "w")
f.write(HEADER_DYNAMIC)
for server in servers[:MAX_SERVERS]:
f.write("nameserver %s\n" % server)
if searchdomain:
f.write("search %s\n" % searchdomain)
elif getSearchDomain():
f.write("search %s\n" % getSearchDomain())
f.close()
def registerNameServers(iface, nameservers, searchdomain):
useNameServers(nameservers, searchdomain)
def unregisterNameServers(iface, nameservers, searchdomain):
# Remove nameservers from list
nameservers = getNameServers()
for server in nameservers:
try:
nameservers.remove(server)
except ValueError:
pass
# Set search domain to "" if it's active one
if searchdomain == getSearchDomain():
searchdomain = ""
useNameServers(nameservers, searchdomain)
def flushNameCache():
pass
def getHostName():
cmd = subprocess.Popen(["/usr/bin/hostname"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
a = cmd.communicate()
if a[1] == "":
return a[0].rstrip("\n")
return ""
def setHostName(hostname):
if not hostname:
return
invalid = filter(lambda x: not x in HOST_CHARS, hostname)
if len(invalid) > 0:
fail(_(MSG_HOSTNAME) % ("".join(invalid)))
# hostname
if os.path.exists(NAME_PATH):
import re
f = file(NAME_PATH)
data = f.read()
f.close()
data = re.sub('HOSTNAME="(.*)"', 'HOSTNAME="%s"' % hostname, data)
else:
data = 'HOSTNAME="%s"\n' % hostname
f = file(NAME_PATH, "w")
f.write(data)
f.close()
# hosts
f = file(HOSTS_PATH)
data = f.readlines()
f.close()
f = file(HOSTS_PATH, "w")
flag = 1
for line in data:
if line.startswith("127.0.0.1"):
line = "127.0.0.1 localhost %s\n" % hostname
flag = 0
f.write(line)
if flag:
f.write("127.0.0.1 localhost %s\n" % hostname)
f.close()
# update environment
os.system(CMD_ENV)