Annotate

util-src/windows.c @ 13801:a5d5fefb8b68 13.0

mod_tls: Enable Prosody's certificate checking for incoming s2s connections (fixes #1916) (thanks Damian, Zash) Various options in Prosody allow control over the behaviour of the certificate verification process For example, some deployments choose to allow falling back to traditional "dialback" authentication (XEP-0220), while others verify via DANE, hard-coded fingerprints, or other custom plugins. Implementing this flexibility requires us to override OpenSSL's default certificate verification, to allow Prosody to verify the certificate itself, apply custom policies and make decisions based on the outcome. To enable our custom logic, we have to suppress OpenSSL's default behaviour of aborting the connection with a TLS alert message. With LuaSec, this can be achieved by using the verifyext "lsec_continue" flag. We also need to use the lsec_ignore_purpose flag, because XMPP s2s uses server certificates as "client" certificates (for mutual TLS verification in outgoing s2s connections). Commit 99d2100d2918 moved these settings out of the defaults and into mod_s2s, because we only really need these changes for s2s, and they should be opt-in, rather than automatically applied to all TLS services we offer. That commit was incomplete, because it only added the flags for incoming direct TLS connections. StartTLS connections are handled by mod_tls, which was not applying the lsec_* flags. It previously worked because they were already in the defaults. This resulted in incoming s2s connections with "invalid" certificates being aborted early by OpenSSL, even if settings such as `s2s_secure_auth = false` or DANE were present in the config. Outgoing s2s connections inherit verify "none" from the defaults, which means OpenSSL will receive the cert but will not terminate the connection when it is deemed invalid. This means we don't need lsec_continue there, and we also don't need lsec_ignore_purpose (because the remote peer is a "server"). Wondering why we can't just use verify "none" for incoming s2s? It's because in that mode, OpenSSL won't request a certificate from the peer for incoming connections. Setting verify "peer" is how you ask OpenSSL to request a certificate from the client, but also what triggers its built-in verification.
author Matthew Wild <mwild1@gmail.com>
date Tue, 01 Apr 2025 17:26:56 +0100
parent 12575:1f6f05a98fcd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2924
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
1 /* Prosody IM
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
2 -- Copyright (C) 2008-2010 Matthew Wild
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
3 -- Copyright (C) 2008-2010 Waqas Hussain
6615
8e4572a642cb util-src/*.c: astyle --indent=tab --brackets=attach --indent-switches --break-blocks --pad-oper --unpad-paren --add-brackets --align-pointer=type --lineend=linux
Kim Alvefur <zash@zash.se>
parents: 6413
diff changeset
4 --
2924
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
5 -- This project is MIT/X11 licensed. Please see the
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
6 -- COPYING file in the source package for more information.
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
7 --
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
8 */
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
9
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
10 /*
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
11 * windows.c
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
12 * Windows support functions for Lua
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
13 */
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
14
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
15 #include <stdio.h>
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
16 #include <windows.h>
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
17 #include <windns.h>
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
18
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
19 #include "lua.h"
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
20 #include "lauxlib.h"
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
21
10921
6eb5d2bb11af util-src: Use the luaL_pushfail API added in Lua 5.4 to highlight all failure conditions
Kim Alvefur <zash@zash.se>
parents: 7889
diff changeset
22 #if (LUA_VERSION_NUM < 504)
6eb5d2bb11af util-src: Use the luaL_pushfail API added in Lua 5.4 to highlight all failure conditions
Kim Alvefur <zash@zash.se>
parents: 7889
diff changeset
23 #define luaL_pushfail lua_pushnil
6eb5d2bb11af util-src: Use the luaL_pushfail API added in Lua 5.4 to highlight all failure conditions
Kim Alvefur <zash@zash.se>
parents: 7889
diff changeset
24 #endif
6413
a552f4170aed util-src/*.c: Add macro for compiling with Lua 5.2
Kim Alvefur <zash@zash.se>
parents: 6412
diff changeset
25
7889
b8d694646597 util-src/*.c: Attach pointer * to name instead of type
Kim Alvefur <zash@zash.se>
parents: 7818
diff changeset
26 static int Lget_nameservers(lua_State *L) {
2924
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
27 char stack_buffer[1024]; // stack allocated buffer
7889
b8d694646597 util-src/*.c: Attach pointer * to name instead of type
Kim Alvefur <zash@zash.se>
parents: 7818
diff changeset
28 IP4_ARRAY *ips = (IP4_ARRAY *) stack_buffer;
2924
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
29 DWORD len = sizeof(stack_buffer);
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
30 DNS_STATUS status;
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
31
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
32 status = DnsQueryConfig(DnsConfigDnsServerList, FALSE, NULL, NULL, ips, &len);
6615
8e4572a642cb util-src/*.c: astyle --indent=tab --brackets=attach --indent-switches --break-blocks --pad-oper --unpad-paren --add-brackets --align-pointer=type --lineend=linux
Kim Alvefur <zash@zash.se>
parents: 6413
diff changeset
33
8e4572a642cb util-src/*.c: astyle --indent=tab --brackets=attach --indent-switches --break-blocks --pad-oper --unpad-paren --add-brackets --align-pointer=type --lineend=linux
Kim Alvefur <zash@zash.se>
parents: 6413
diff changeset
34 if(status == 0) {
2924
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
35 DWORD i;
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
36 lua_createtable(L, ips->AddrCount, 0);
6615
8e4572a642cb util-src/*.c: astyle --indent=tab --brackets=attach --indent-switches --break-blocks --pad-oper --unpad-paren --add-brackets --align-pointer=type --lineend=linux
Kim Alvefur <zash@zash.se>
parents: 6413
diff changeset
37
8e4572a642cb util-src/*.c: astyle --indent=tab --brackets=attach --indent-switches --break-blocks --pad-oper --unpad-paren --add-brackets --align-pointer=type --lineend=linux
Kim Alvefur <zash@zash.se>
parents: 6413
diff changeset
38 for(i = 0; i < ips->AddrCount; i++) {
2924
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
39 DWORD ip = ips->AddrArray[i];
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
40 char ip_str[16] = "";
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
41 sprintf_s(ip_str, sizeof(ip_str), "%d.%d.%d.%d", (ip >> 0) & 255, (ip >> 8) & 255, (ip >> 16) & 255, (ip >> 24) & 255);
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
42 lua_pushstring(L, ip_str);
6615
8e4572a642cb util-src/*.c: astyle --indent=tab --brackets=attach --indent-switches --break-blocks --pad-oper --unpad-paren --add-brackets --align-pointer=type --lineend=linux
Kim Alvefur <zash@zash.se>
parents: 6413
diff changeset
43 lua_rawseti(L, -2, i + 1);
2924
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
44 }
6615
8e4572a642cb util-src/*.c: astyle --indent=tab --brackets=attach --indent-switches --break-blocks --pad-oper --unpad-paren --add-brackets --align-pointer=type --lineend=linux
Kim Alvefur <zash@zash.se>
parents: 6413
diff changeset
45
2924
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
46 return 1;
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
47 } else {
10921
6eb5d2bb11af util-src: Use the luaL_pushfail API added in Lua 5.4 to highlight all failure conditions
Kim Alvefur <zash@zash.se>
parents: 7889
diff changeset
48 luaL_pushfail(L);
4128
b6d072a3668d windows.c: Return nil,err from functions instead of throwing errors.
Waqas Hussain <waqas20@gmail.com>
parents: 3748
diff changeset
49 lua_pushfstring(L, "DnsQueryConfig returned %d", status);
b6d072a3668d windows.c: Return nil,err from functions instead of throwing errors.
Waqas Hussain <waqas20@gmail.com>
parents: 3748
diff changeset
50 return 2;
2924
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
51 }
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
52 }
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
53
7889
b8d694646597 util-src/*.c: Attach pointer * to name instead of type
Kim Alvefur <zash@zash.se>
parents: 7818
diff changeset
54 static int lerror(lua_State *L, char *string) {
10921
6eb5d2bb11af util-src: Use the luaL_pushfail API added in Lua 5.4 to highlight all failure conditions
Kim Alvefur <zash@zash.se>
parents: 7889
diff changeset
55 luaL_pushfail(L);
4128
b6d072a3668d windows.c: Return nil,err from functions instead of throwing errors.
Waqas Hussain <waqas20@gmail.com>
parents: 3748
diff changeset
56 lua_pushfstring(L, "%s: %d", string, GetLastError());
b6d072a3668d windows.c: Return nil,err from functions instead of throwing errors.
Waqas Hussain <waqas20@gmail.com>
parents: 3748
diff changeset
57 return 2;
3748
2237796ba228 util-src/windows.c: Added get_consolecolor, set_consolecolor.
Waqas Hussain <waqas20@gmail.com>
parents: 2924
diff changeset
58 }
2237796ba228 util-src/windows.c: Added get_consolecolor, set_consolecolor.
Waqas Hussain <waqas20@gmail.com>
parents: 2924
diff changeset
59
7889
b8d694646597 util-src/*.c: Attach pointer * to name instead of type
Kim Alvefur <zash@zash.se>
parents: 7818
diff changeset
60 static int Lget_consolecolor(lua_State *L) {
3748
2237796ba228 util-src/windows.c: Added get_consolecolor, set_consolecolor.
Waqas Hussain <waqas20@gmail.com>
parents: 2924
diff changeset
61 HWND console = GetStdHandle(STD_OUTPUT_HANDLE);
6615
8e4572a642cb util-src/*.c: astyle --indent=tab --brackets=attach --indent-switches --break-blocks --pad-oper --unpad-paren --add-brackets --align-pointer=type --lineend=linux
Kim Alvefur <zash@zash.se>
parents: 6413
diff changeset
62 WORD color;
8e4572a642cb util-src/*.c: astyle --indent=tab --brackets=attach --indent-switches --break-blocks --pad-oper --unpad-paren --add-brackets --align-pointer=type --lineend=linux
Kim Alvefur <zash@zash.se>
parents: 6413
diff changeset
63 DWORD read_len;
8e4572a642cb util-src/*.c: astyle --indent=tab --brackets=attach --indent-switches --break-blocks --pad-oper --unpad-paren --add-brackets --align-pointer=type --lineend=linux
Kim Alvefur <zash@zash.se>
parents: 6413
diff changeset
64
3748
2237796ba228 util-src/windows.c: Added get_consolecolor, set_consolecolor.
Waqas Hussain <waqas20@gmail.com>
parents: 2924
diff changeset
65 CONSOLE_SCREEN_BUFFER_INFO info;
6615
8e4572a642cb util-src/*.c: astyle --indent=tab --brackets=attach --indent-switches --break-blocks --pad-oper --unpad-paren --add-brackets --align-pointer=type --lineend=linux
Kim Alvefur <zash@zash.se>
parents: 6413
diff changeset
66
8e4572a642cb util-src/*.c: astyle --indent=tab --brackets=attach --indent-switches --break-blocks --pad-oper --unpad-paren --add-brackets --align-pointer=type --lineend=linux
Kim Alvefur <zash@zash.se>
parents: 6413
diff changeset
67 if(console == INVALID_HANDLE_VALUE) {
8e4572a642cb util-src/*.c: astyle --indent=tab --brackets=attach --indent-switches --break-blocks --pad-oper --unpad-paren --add-brackets --align-pointer=type --lineend=linux
Kim Alvefur <zash@zash.se>
parents: 6413
diff changeset
68 return lerror(L, "GetStdHandle");
8e4572a642cb util-src/*.c: astyle --indent=tab --brackets=attach --indent-switches --break-blocks --pad-oper --unpad-paren --add-brackets --align-pointer=type --lineend=linux
Kim Alvefur <zash@zash.se>
parents: 6413
diff changeset
69 }
8e4572a642cb util-src/*.c: astyle --indent=tab --brackets=attach --indent-switches --break-blocks --pad-oper --unpad-paren --add-brackets --align-pointer=type --lineend=linux
Kim Alvefur <zash@zash.se>
parents: 6413
diff changeset
70
8e4572a642cb util-src/*.c: astyle --indent=tab --brackets=attach --indent-switches --break-blocks --pad-oper --unpad-paren --add-brackets --align-pointer=type --lineend=linux
Kim Alvefur <zash@zash.se>
parents: 6413
diff changeset
71 if(!GetConsoleScreenBufferInfo(console, &info)) {
8e4572a642cb util-src/*.c: astyle --indent=tab --brackets=attach --indent-switches --break-blocks --pad-oper --unpad-paren --add-brackets --align-pointer=type --lineend=linux
Kim Alvefur <zash@zash.se>
parents: 6413
diff changeset
72 return lerror(L, "GetConsoleScreenBufferInfo");
8e4572a642cb util-src/*.c: astyle --indent=tab --brackets=attach --indent-switches --break-blocks --pad-oper --unpad-paren --add-brackets --align-pointer=type --lineend=linux
Kim Alvefur <zash@zash.se>
parents: 6413
diff changeset
73 }
8e4572a642cb util-src/*.c: astyle --indent=tab --brackets=attach --indent-switches --break-blocks --pad-oper --unpad-paren --add-brackets --align-pointer=type --lineend=linux
Kim Alvefur <zash@zash.se>
parents: 6413
diff changeset
74
8e4572a642cb util-src/*.c: astyle --indent=tab --brackets=attach --indent-switches --break-blocks --pad-oper --unpad-paren --add-brackets --align-pointer=type --lineend=linux
Kim Alvefur <zash@zash.se>
parents: 6413
diff changeset
75 if(!ReadConsoleOutputAttribute(console, &color, 1, info.dwCursorPosition, &read_len)) {
8e4572a642cb util-src/*.c: astyle --indent=tab --brackets=attach --indent-switches --break-blocks --pad-oper --unpad-paren --add-brackets --align-pointer=type --lineend=linux
Kim Alvefur <zash@zash.se>
parents: 6413
diff changeset
76 return lerror(L, "ReadConsoleOutputAttribute");
8e4572a642cb util-src/*.c: astyle --indent=tab --brackets=attach --indent-switches --break-blocks --pad-oper --unpad-paren --add-brackets --align-pointer=type --lineend=linux
Kim Alvefur <zash@zash.se>
parents: 6413
diff changeset
77 }
3748
2237796ba228 util-src/windows.c: Added get_consolecolor, set_consolecolor.
Waqas Hussain <waqas20@gmail.com>
parents: 2924
diff changeset
78
2237796ba228 util-src/windows.c: Added get_consolecolor, set_consolecolor.
Waqas Hussain <waqas20@gmail.com>
parents: 2924
diff changeset
79 lua_pushnumber(L, color);
2237796ba228 util-src/windows.c: Added get_consolecolor, set_consolecolor.
Waqas Hussain <waqas20@gmail.com>
parents: 2924
diff changeset
80 return 1;
2237796ba228 util-src/windows.c: Added get_consolecolor, set_consolecolor.
Waqas Hussain <waqas20@gmail.com>
parents: 2924
diff changeset
81 }
7889
b8d694646597 util-src/*.c: Attach pointer * to name instead of type
Kim Alvefur <zash@zash.se>
parents: 7818
diff changeset
82 static int Lset_consolecolor(lua_State *L) {
3748
2237796ba228 util-src/windows.c: Added get_consolecolor, set_consolecolor.
Waqas Hussain <waqas20@gmail.com>
parents: 2924
diff changeset
83 int color = luaL_checkint(L, 1);
2237796ba228 util-src/windows.c: Added get_consolecolor, set_consolecolor.
Waqas Hussain <waqas20@gmail.com>
parents: 2924
diff changeset
84 HWND console = GetStdHandle(STD_OUTPUT_HANDLE);
6615
8e4572a642cb util-src/*.c: astyle --indent=tab --brackets=attach --indent-switches --break-blocks --pad-oper --unpad-paren --add-brackets --align-pointer=type --lineend=linux
Kim Alvefur <zash@zash.se>
parents: 6413
diff changeset
85
8e4572a642cb util-src/*.c: astyle --indent=tab --brackets=attach --indent-switches --break-blocks --pad-oper --unpad-paren --add-brackets --align-pointer=type --lineend=linux
Kim Alvefur <zash@zash.se>
parents: 6413
diff changeset
86 if(console == INVALID_HANDLE_VALUE) {
8e4572a642cb util-src/*.c: astyle --indent=tab --brackets=attach --indent-switches --break-blocks --pad-oper --unpad-paren --add-brackets --align-pointer=type --lineend=linux
Kim Alvefur <zash@zash.se>
parents: 6413
diff changeset
87 return lerror(L, "GetStdHandle");
8e4572a642cb util-src/*.c: astyle --indent=tab --brackets=attach --indent-switches --break-blocks --pad-oper --unpad-paren --add-brackets --align-pointer=type --lineend=linux
Kim Alvefur <zash@zash.se>
parents: 6413
diff changeset
88 }
8e4572a642cb util-src/*.c: astyle --indent=tab --brackets=attach --indent-switches --break-blocks --pad-oper --unpad-paren --add-brackets --align-pointer=type --lineend=linux
Kim Alvefur <zash@zash.se>
parents: 6413
diff changeset
89
8e4572a642cb util-src/*.c: astyle --indent=tab --brackets=attach --indent-switches --break-blocks --pad-oper --unpad-paren --add-brackets --align-pointer=type --lineend=linux
Kim Alvefur <zash@zash.se>
parents: 6413
diff changeset
90 if(!SetConsoleTextAttribute(console, color)) {
8e4572a642cb util-src/*.c: astyle --indent=tab --brackets=attach --indent-switches --break-blocks --pad-oper --unpad-paren --add-brackets --align-pointer=type --lineend=linux
Kim Alvefur <zash@zash.se>
parents: 6413
diff changeset
91 return lerror(L, "SetConsoleTextAttribute");
8e4572a642cb util-src/*.c: astyle --indent=tab --brackets=attach --indent-switches --break-blocks --pad-oper --unpad-paren --add-brackets --align-pointer=type --lineend=linux
Kim Alvefur <zash@zash.se>
parents: 6413
diff changeset
92 }
8e4572a642cb util-src/*.c: astyle --indent=tab --brackets=attach --indent-switches --break-blocks --pad-oper --unpad-paren --add-brackets --align-pointer=type --lineend=linux
Kim Alvefur <zash@zash.se>
parents: 6413
diff changeset
93
4128
b6d072a3668d windows.c: Return nil,err from functions instead of throwing errors.
Waqas Hussain <waqas20@gmail.com>
parents: 3748
diff changeset
94 lua_pushboolean(L, 1);
b6d072a3668d windows.c: Return nil,err from functions instead of throwing errors.
Waqas Hussain <waqas20@gmail.com>
parents: 3748
diff changeset
95 return 1;
3748
2237796ba228 util-src/windows.c: Added get_consolecolor, set_consolecolor.
Waqas Hussain <waqas20@gmail.com>
parents: 2924
diff changeset
96 }
2237796ba228 util-src/windows.c: Added get_consolecolor, set_consolecolor.
Waqas Hussain <waqas20@gmail.com>
parents: 2924
diff changeset
97
6615
8e4572a642cb util-src/*.c: astyle --indent=tab --brackets=attach --indent-switches --break-blocks --pad-oper --unpad-paren --add-brackets --align-pointer=type --lineend=linux
Kim Alvefur <zash@zash.se>
parents: 6413
diff changeset
98 static const luaL_Reg Reg[] = {
2924
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
99 { "get_nameservers", Lget_nameservers },
3748
2237796ba228 util-src/windows.c: Added get_consolecolor, set_consolecolor.
Waqas Hussain <waqas20@gmail.com>
parents: 2924
diff changeset
100 { "get_consolecolor", Lget_consolecolor },
2237796ba228 util-src/windows.c: Added get_consolecolor, set_consolecolor.
Waqas Hussain <waqas20@gmail.com>
parents: 2924
diff changeset
101 { "set_consolecolor", Lset_consolecolor },
2924
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
102 { NULL, NULL }
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
103 };
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
104
7889
b8d694646597 util-src/*.c: Attach pointer * to name instead of type
Kim Alvefur <zash@zash.se>
parents: 7818
diff changeset
105 LUALIB_API int luaopen_util_windows(lua_State *L) {
7818
54669df178c2 util-src: Make C modules assert that the Lua runtime matches what it was compiled for
Kim Alvefur <zash@zash.se>
parents: 6789
diff changeset
106 luaL_checkversion(L);
6411
6c8f6364bc48 util-src/*.c: Don't create globals when loaded
Kim Alvefur <zash@zash.se>
parents: 5864
diff changeset
107 lua_newtable(L);
6789
6b180e77c97a util-src/*.c: Invert Lua 5.2 compat to be 5.2+ by default and a macro to support 5.1
Kim Alvefur <zash@zash.se>
parents: 6615
diff changeset
108 luaL_setfuncs(L, Reg, 0);
2924
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
109 lua_pushliteral(L, "-3.14");
6412
0e94f89d0e62 util-src/*.c: Use the more concise lua_setfield
Kim Alvefur <zash@zash.se>
parents: 6411
diff changeset
110 lua_setfield(L, -2, "version");
2924
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
111 return 1;
8dc4e2e00129 util.windows: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
112 }