Annotate

mod_auth_external_insecure/examples/python/prosody-auth-example.py @ 4738:5aee8d86629a

mod_bookmarks2: Fix handling of nick and password elements This form of child retrieval fails when the stanza elements internally don't have an 'xmlns' attribute, which can happen sometimes for some reason, including when they have been constructed via the stanza builder API. When that is the case then the explicit namespace arguemnt does not match the nil value of the internal attribute. Calling `:get_child()` without the namespace argument does the right thing here, with both nil and the parent namespace as valid values for the internal attribute.
author Kim Alvefur <zash@zash.se>
date Wed, 03 Nov 2021 21:11:55 +0100
parent 3884:f84ede3e9e3b
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)