File: servertest.py

package info (click to toggle)
gimp 3.2.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 222,880 kB
  • sloc: ansic: 870,914; python: 10,965; lisp: 10,857; cpp: 7,355; perl: 4,536; sh: 1,753; xml: 972; yacc: 609; lex: 348; javascript: 150; makefile: 42
file content (88 lines) | stat: -rw-r--r-- 2,124 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#!/usr/bin/env python3

# updated to python3 - cameron

# A simple client app to the ScriptFu server.
# Usually for testing.
# CLI, a REPL: submits each entered line to the server, then prints response.

import readline, socket, sys

if len(sys.argv) < 1 or len(sys.argv) > 3:
   print >>sys.stderr, "Usage: %s <host> <port>" % sys.argv[0]
   print >>sys.stderr, "       (if omitted connect to localhost, port 10008)"
   sys.exit(1)

HOST = "localhost"
PORT = 10008

try:
    HOST = sys.argv[1]
    try:
        PORT = int(sys.argv[2])
    except IndexError:
        pass
except IndexError:
    pass

addresses = socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM)

connected = False

for addr in addresses:
    (family, socktype, proto, canonname, sockaddr) = addr

    numeric_addr = sockaddr[0]

    if canonname:
        print ("Trying %s ('%s')." % (numeric_addr, canonname))
    else:
        print ("Trying %s." % numeric_addr)

    try:
        sock = socket.socket(family, socket.SOCK_STREAM)
        sock.connect((HOST, PORT))
        connected = True
        break
    except:
        pass

if not connected:
    print ("Failed.")
    sys.exit(1)

try:
   cmd = input("Script-Fu-Remote - Testclient\n> ")

   while len(cmd) > 0:
      my_bytes = bytearray()
      my_bytes.append(71) # G=71
      my_bytes.append((len(cmd)) >> 8)
      my_bytes.append((len(cmd)) % 0xFF)
      my_bytes.extend(bytearray(cmd,"UTF-8"))
      sock.send(my_bytes)

      data = bytearray()
      while len(data) < 4:
         data.extend(sock.recv(4 - len(data)))

      if len(data) >= 4:
         if data[0] == 71: # MAGIC_BYTE 'G'=71
            l = (data[2] << 8) + data[3]
            msg = ""
            while len(msg) < l:
               msg += (sock.recv(l - len(msg))).decode("utf-8")
            if data[1]: # ERROR_BYTE
               print ("(ERR):", msg)
            else:
               print (" (OK):", msg)
            cmd = input("> ")
         else:
            print ("invalid magic: %s\n" % data)
      else:
         print ("short response: %s\n" % data)

except EOFError:
   print

sock.close()