a geicko-2 based round robin ranking system designed to test c++ battleship submissions battleship.dunkirk.sh
at main 5.1 kB view raw
1// Copyright (C) 2018 G.J.R. Timmer <gjr.timmer@gmail.com>. 2// 3// Use of this source code is governed by an MIT-style 4// license that can be found in the LICENSE file. 5 6//go:build sqlite_userauth 7// +build sqlite_userauth 8 9package sqlite3 10 11/* 12#cgo CFLAGS: -DSQLITE_USER_AUTHENTICATION 13#cgo LDFLAGS: -lm 14#ifndef USE_LIBSQLITE3 15#include "sqlite3-binding.h" 16#else 17#include <sqlite3.h> 18#endif 19*/ 20import "C" 21import ( 22 "errors" 23) 24 25const ( 26 SQLITE_AUTH = C.SQLITE_AUTH 27) 28 29var ( 30 ErrUnauthorized = errors.New("SQLITE_AUTH: Unauthorized") 31 ErrAdminRequired = errors.New("SQLITE_AUTH: Unauthorized; Admin Privileges Required") 32 errUserAuthNoLongerSupported = errors.New("sqlite3: the sqlite_userauth tag is no longer supported as the userauth extension is no longer supported by the SQLite authors, see https://github.com/mattn/go-sqlite3/issues/1341") 33) 34 35// Authenticate will perform an authentication of the provided username 36// and password against the database. 37// 38// If a database contains the SQLITE_USER table, then the 39// call to Authenticate must be invoked with an 40// appropriate username and password prior to enable read and write 41// access to the database. 42// 43// Return SQLITE_OK on success or SQLITE_ERROR if the username/password 44// combination is incorrect or unknown. 45// 46// If the SQLITE_USER table is not present in the database file, then 47// this interface is a harmless no-op returning SQLITE_OK. 48func (c *SQLiteConn) Authenticate(username, password string) error { 49 return errUserAuthNoLongerSupported 50} 51 52// authenticate provides the actual authentication to SQLite. 53// This is not exported for usage in Go. 54// It is however exported for usage within SQL by the user. 55// 56// Returns: 57// 58// C.SQLITE_OK (0) 59// C.SQLITE_ERROR (1) 60// C.SQLITE_AUTH (23) 61func (c *SQLiteConn) authenticate(username, password string) int { 62 return 1 63} 64 65// AuthUserAdd can be used (by an admin user only) 66// to create a new user. When called on a no-authentication-required 67// database, this routine converts the database into an authentication- 68// required database, automatically makes the added user an 69// administrator, and logs in the current connection as that user. 70// The AuthUserAdd only works for the "main" database, not 71// for any ATTACH-ed databases. Any call to AuthUserAdd by a 72// non-admin user results in an error. 73func (c *SQLiteConn) AuthUserAdd(username, password string, admin bool) error { 74 return errUserAuthNoLongerSupported 75} 76 77// authUserAdd enables the User Authentication if not enabled. 78// Otherwise it will add a user. 79// 80// When user authentication is already enabled then this function 81// can only be called by an admin. 82// 83// This is not exported for usage in Go. 84// It is however exported for usage within SQL by the user. 85// 86// Returns: 87// 88// C.SQLITE_OK (0) 89// C.SQLITE_ERROR (1) 90// C.SQLITE_AUTH (23) 91func (c *SQLiteConn) authUserAdd(username, password string, admin int) int { 92 return 1 93} 94 95// AuthUserChange can be used to change a users 96// login credentials or admin privilege. Any user can change their own 97// login credentials. Only an admin user can change another users login 98// credentials or admin privilege setting. No user may change their own 99// admin privilege setting. 100func (c *SQLiteConn) AuthUserChange(username, password string, admin bool) error { 101 return errUserAuthNoLongerSupported 102} 103 104// authUserChange allows to modify a user. 105// Users can change their own password. 106// 107// Only admins can change passwords for other users 108// and modify the admin flag. 109// 110// The admin flag of the current logged in user cannot be changed. 111// THis ensures that their is always an admin. 112// 113// This is not exported for usage in Go. 114// It is however exported for usage within SQL by the user. 115// 116// Returns: 117// 118// C.SQLITE_OK (0) 119// C.SQLITE_ERROR (1) 120// C.SQLITE_AUTH (23) 121func (c *SQLiteConn) authUserChange(username, password string, admin int) int { 122 return 1 123} 124 125// AuthUserDelete can be used (by an admin user only) 126// to delete a user. The currently logged-in user cannot be deleted, 127// which guarantees that there is always an admin user and hence that 128// the database cannot be converted into a no-authentication-required 129// database. 130func (c *SQLiteConn) AuthUserDelete(username string) error { 131 return errUserAuthNoLongerSupported 132} 133 134// authUserDelete can be used to delete a user. 135// 136// This function can only be executed by an admin. 137// 138// This is not exported for usage in Go. 139// It is however exported for usage within SQL by the user. 140// 141// Returns: 142// 143// C.SQLITE_OK (0) 144// C.SQLITE_ERROR (1) 145// C.SQLITE_AUTH (23) 146func (c *SQLiteConn) authUserDelete(username string) int { 147 return 1 148} 149 150// AuthEnabled checks if the database is protected by user authentication 151func (c *SQLiteConn) AuthEnabled() (exists bool) { 152 return false 153} 154 155// authEnabled perform the actual check for user authentication. 156// 157// This is not exported for usage in Go. 158// It is however exported for usage within SQL by the user. 159// 160// Returns: 161// 162// 0 - Disabled 163// 1 - Enabled 164func (c *SQLiteConn) authEnabled() int { 165 return 0 166} 167 168// EOF