Browse Source

support ggc sn domain names

lennylxx 10 years ago
parent
commit
de77d3f49d
1 changed files with 33 additions and 14 deletions
  1. 33 14
      tools/conv.py

+ 33 - 14
tools/conv.py

@@ -9,40 +9,52 @@ table = '1023456789abcdefghijklmnopqrstuvwxyz'
 def iata2sn(iata):
     global table
     sn = ''
-    for v in iata[0:3]:
-        i = ((ord(v) - ord('a')) * 7 + 5) % 36
-        sn += table[i]
+    for v in iata:
+        if v in table:
+            i = ((ord(v) - ord('a')) * 7 + 5) % 36
+            sn += table[i]
+        else:
+            sn += v
     return sn
 
 def sn2iata(sn):
     global table
     iata = ''
     for v in sn:
-        i = table.index(v)
-        i = (5 - i % 7) * 5 + i / 7 + 10
-        iata += table[i]
+        if v in table:
+            i = table.index(v)
+            i = (5 - i % 7) * 5 + i / 7 + 10
+            iata += table[i]
+        else:
+            iata += v
     return iata
 
 def num2code(num):
     global table
     code = ''
     for v in num:
-        i = ((ord(v) - ord('0') + 1) * 7) % 36
-        code += table[i]
+        if v in table:
+            i = ((ord(v) - ord('0') + 1) * 7) % 36
+            code += table[i]
+        else:
+            code += v
     return code
     
 def code2num(code):
     global table
     num = ''
     for v in code:
-        i = table.index(v)
-        i = i / 7 + i % 7 - 1
-        num += str(i)
+        if v in table:
+            i = table.index(v)
+            i = i / 7 + i % 7 - 1
+            num += str(i)
+        else:
+            num += v
     return num
 
 def main():
     if len(sys.argv) != 3:
-        print 'usage:\tconv -i iata\n\tconv -s sn'
+        print 'usage:\tconv -i iata\n\tconv -s sn\n\tconv -p isp\n\tconv -g ggc'
         sys.exit(1)
 
     input = sys.argv[2]
@@ -52,16 +64,23 @@ def main():
         ret += num2code(input[3:5])
         ret += 'n'
         ret += num2code(input[6:8])
-        print ret
     elif sys.argv[1] == '-s':
         ret += sn2iata(input[0:3])
         ret += code2num(input[3:5])
         ret += 's'
         ret += code2num(input[6:8])
-        print ret
+    elif sys.argv[1] == '-p':
+        ret += iata2sn(input[:-1])
+        ret += num2code(input[-1])
+    elif sys.argv[1] == '-g':
+        ret += sn2iata(input[:-1])
+        ret += code2num(input[-1])
     else:
         print 'Unknown option.'
         sys.exit(1)
 
+    print ret
+    sys.exit(0)
+
 if __name__ == '__main__':
     main()