test.lua
author Myhailo Danylenko <isbear@ukrpost.net>
Tue, 19 May 2009 01:16:55 +0300
changeset 22 1a1bc121fe90
parent 21 a9b92b65961e
child 23 13f03e604c8a
permissions -rw-r--r--
Test gets parameters from build system
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
21
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     1
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     2
require 'glib'
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     3
local lm = require 'lm'
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     4
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     5
g.log.handler (
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     6
	function ( domain, lvl, mesg )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     7
		print ( mesg )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     8
	end )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     9
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    10
sent = false
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    11
22
1a1bc121fe90 Test gets parameters from build system
Myhailo Danylenko <isbear@ukrpost.net>
parents: 21
diff changeset
    12
server, username = arg[1]:match ( '(.+)@(.-)' )
1a1bc121fe90 Test gets parameters from build system
Myhailo Danylenko <isbear@ukrpost.net>
parents: 21
diff changeset
    13
password         = arg[2]
1a1bc121fe90 Test gets parameters from build system
Myhailo Danylenko <isbear@ukrpost.net>
parents: 21
diff changeset
    14
recipient        = arg[3] or arg[1]
1a1bc121fe90 Test gets parameters from build system
Myhailo Danylenko <isbear@ukrpost.net>
parents: 21
diff changeset
    15
fingerprint      = arg[4] or '01:23:45:67:89:ab:cd:ef:fe:dc:ba:98:76:54:32:10'
21
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    16
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    17
--[[
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    18
-- What's goes on, pretty close to C api,
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    19
-- but already some luxury...
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    20
you_need_your_own_context = true
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    21
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    22
if you_need_your_own_context then
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    23
	cont = g.main_context.new ()
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    24
	conn = lm.connection.new ( server, cont:pointer () )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    25
else
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    26
	cont = g.main_context.default ()
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    27
	conn = lm.connection.new ( server )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    28
end
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    29
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    30
if lm.ssl.supported () then
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    31
	conn:port ( 5223 )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    32
	conn:ssl ( lm.ssl.new ( fingerprint,
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    33
		function (ssl, err)
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    34
			print ( 'SSL error occured: ' .. err )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    35
			print ( 'Fingerprint: ' .. ssl:fingerprint () )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    36
			return true
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    37
		end ) )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    38
end
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    39
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    40
print ( 'Opening connection... ' )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    41
res = conn:open (
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    42
	function ( connection, success )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    43
		if success then
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    44
			print ( "Authenticating..." )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    45
			res = connection:authenticate ( username, password, 'llm-test',
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    46
				function ( connection, success )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    47
					if success then
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    48
						print ( "Sending..." )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    49
						
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    50
						connection:send (
22
1a1bc121fe90 Test gets parameters from build system
Myhailo Danylenko <isbear@ukrpost.net>
parents: 21
diff changeset
    51
							lm.message.new( recipient, 'message' )
21
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    52
								:child ( 'body', 'Hello, this is just a test' ) )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    53
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    54
						connection:send (
22
1a1bc121fe90 Test gets parameters from build system
Myhailo Danylenko <isbear@ukrpost.net>
parents: 21
diff changeset
    55
							lm.message.new( recipient, 'iq', 'get' )
21
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    56
								:child( 'query', '' ):attribute ( 'xmlns', 'jabber:iq:version' ),
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    57
							function ( connection, message )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    58
								node = message:child ( 'query' )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    59
								print ( 'Got response:' )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    60
								print ( '  name:     ', node:child( 'name' ):value () )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    61
								print ( '  version:  ', node:child( 'version' ):value () )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    62
								print ( '  os:       ', node:child( 'os' ):value () )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    63
								sent = true
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    64
							end )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    65
					else
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    66
						print ( "Authenticate failure" )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    67
						sent = true
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    68
					end
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    69
				end )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    70
			print ( 'Authenticate returns ', res )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    71
		else
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    72
			print ( "Open failure" )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    73
			sent = true
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    74
		end
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    75
	end )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    76
print ( 'Open returns ', res )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    77
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    78
--]]
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    79
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    80
-- Shortened version with convenience lua functions:
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    81
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    82
conn = lm.connect {
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    83
	server = server,
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    84
	port   = 5223,
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    85
	ssl    = {
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    86
		fingerprint = fingerprint,
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    87
		validate    = false,
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    88
	},
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    89
	username = username,
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    90
	password = password,
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    91
	resource = 'llm-test',
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    92
	onconnect =
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    93
		function ( connection )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    94
			print ( 'connected' )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    95
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    96
			connection:send (
22
1a1bc121fe90 Test gets parameters from build system
Myhailo Danylenko <isbear@ukrpost.net>
parents: 21
diff changeset
    97
				lm.message.create { mtype = "message", to = recipient,
21
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    98
					body = { 'Hello, this is just a test' },
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    99
				} )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   100
			print ( 'sent' )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   101
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   102
			connection:send (
22
1a1bc121fe90 Test gets parameters from build system
Myhailo Danylenko <isbear@ukrpost.net>
parents: 21
diff changeset
   103
				lm.message.create { mtype = "iq-get", to = recipient,
21
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   104
					query = { xmlns = "jabber:iq:version" }
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   105
				},
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   106
				function ( connection, message )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   107
					print ( 'received' )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   108
					print ( 'Got response:' )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   109
					print ( '   name:     ', message:path( 'query', 'name' ):value () )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   110
					print ( '   version:  ', message:path( 'query', 'version' ):value () )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   111
					print ( '   os:       ', message:path( 'query', 'os' ):value () )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   112
					sent = true
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   113
				end )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   114
			print ( 'sent' )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   115
		end,
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   116
}
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   117
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   118
cont = g.main_context.default ()
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   119
print ( 'Entering main loop...' )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   120
while not sent do
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   121
	cont:iteration ( true )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   122
end
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   123
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   124
print ( 'Closing connection... ' )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   125
conn:close ()
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   126
print ( "Bye" )
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   127
a9b92b65961e Test file :P
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   128
-- vim: se ts=4: --