annotate mod_auth_external_insecure/examples/python/prosody-auth-example.py @ 4537:53ee391ca689

mod_smacks: Fix traceback due to session being destroyed in send() Sending something can cause the OS to notice that the connection is dead and then the connection can be dead at this point. More likely if opportunistic_writes is enabled.
author Kim Alvefur <zash@zash.se>
date Thu, 01 Apr 2021 11:35:26 +0200
parents f84ede3e9e3b
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1194
f5eadba27120 mod_auth_external: Add example Python script
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
1 #!/usr/bin/env python2
f5eadba27120 mod_auth_external: Add example Python script
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2
f5eadba27120 mod_auth_external: Add example Python script
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3 import sys
f5eadba27120 mod_auth_external: Add example Python script
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4
f5eadba27120 mod_auth_external: Add example Python script
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5 def auth(username, password):
f5eadba27120 mod_auth_external: Add example Python script
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6 if username == "someone":
f5eadba27120 mod_auth_external: Add example Python script
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7 return "1"
f5eadba27120 mod_auth_external: Add example Python script
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8 return "0"
f5eadba27120 mod_auth_external: Add example Python script
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9
f5eadba27120 mod_auth_external: Add example Python script
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10 def respond(ret):
f5eadba27120 mod_auth_external: Add example Python script
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11 sys.stdout.write(ret+"\n")
f5eadba27120 mod_auth_external: Add example Python script
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
12 sys.stdout.flush()
f5eadba27120 mod_auth_external: Add example Python script
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
13
f5eadba27120 mod_auth_external: Add example Python script
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
14 methods = {
f5eadba27120 mod_auth_external: Add example Python script
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
15 "auth": { "function": auth, "parameters": 2 }
f5eadba27120 mod_auth_external: Add example Python script
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
16 }
f5eadba27120 mod_auth_external: Add example Python script
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
17
f5eadba27120 mod_auth_external: Add example Python script
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
18 while 1:
f5eadba27120 mod_auth_external: Add example Python script
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
19 line = sys.stdin.readline().rstrip("\n")
f5eadba27120 mod_auth_external: Add example Python script
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
20 method, sep, data = line.partition(":")
f5eadba27120 mod_auth_external: Add example Python script
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
21 if method in methods:
f5eadba27120 mod_auth_external: Add example Python script
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
22 method_info = methods[method]
f5eadba27120 mod_auth_external: Add example Python script
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
23 split_data = data.split(":", method_info["parameters"])
f5eadba27120 mod_auth_external: Add example Python script
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
24 if len(split_data) == method_info["parameters"]:
f5eadba27120 mod_auth_external: Add example Python script
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
25 respond(method_info["function"](*split_data))
f5eadba27120 mod_auth_external: Add example Python script
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
26 else:
f5eadba27120 mod_auth_external: Add example Python script
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
27 respond("error: incorrect number of parameters to method '%s'"%method)
f5eadba27120 mod_auth_external: Add example Python script
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
28 else:
f5eadba27120 mod_auth_external: Add example Python script
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
29 respond("error: method '%s' not implemented"%method)