diff options
author | Markus Uhlin <markus@nifty-networks.net> | 2023-12-07 21:31:49 +0100 |
---|---|---|
committer | Markus Uhlin <markus@nifty-networks.net> | 2023-12-07 21:31:49 +0100 |
commit | 79b59f9b30fb6a1fdf8c3efb446271f7cb00d434 (patch) | |
tree | f6ade4ccbc3af20d825edacfd12b5da8ded8d240 /FICS/fics_addplayer.c |
FICS 1.6.2
Diffstat (limited to 'FICS/fics_addplayer.c')
-rw-r--r-- | FICS/fics_addplayer.c | 167 |
1 files changed, 167 insertions, 0 deletions
diff --git a/FICS/fics_addplayer.c b/FICS/fics_addplayer.c new file mode 100644 index 0000000..709f741 --- /dev/null +++ b/FICS/fics_addplayer.c @@ -0,0 +1,167 @@ +/* fics_addplayer.c + * + */ + +/* + fics - An internet chess server. + Copyright (C) 1994 Richard V. Nash + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. +*/ + +/* Revision history: + name email yy/mm/dd Change + Richard Nash 94/03/07 Created +*/ + +#include "stdinclude.h" + +#include "common.h" +#include "utils.h" +#include "playerdb.h" +/* #include "hostinfo.h" */ +#include "command.h" + +extern time_t time(); +extern int printf(); + +PRIVATE void usage(char *progname) +{ + fprintf(stderr, "Usage: %s [-l] [-n] UserName FullName EmailAddress\n", progname); + exit(1); +} + +/* Parameters */ +int local = 1; +char *funame = NULL, *fname = NULL, *email = NULL; + +#define PASSLEN 4 +PUBLIC int main(int argc, char *argv[]) +{ + int i; + int p; + char password[PASSLEN + 1]; + char salt[3]; + char text[2048]; + + for (i = 1; i < argc; i++) { + if (argv[i][0] == '-') { + switch (argv[i][1]) { + case 'l': + local = 1; + break; + case 'n': + local = 0; + break; + default: + usage(argv[0]); + break; + } + } else { + if (!funame) + funame = argv[i]; + else if (!fname) + fname = argv[i]; + else if (!email) + email = argv[i]; + else + usage(argv[0]); + } + } + if (!funame || !fname || !email) + usage(argv[0]); + + /* Add the player here */ + if (strlen(funame) >= MAX_LOGIN_NAME) { + fprintf(stderr, "Player name is too long\n"); + exit(0); + } + if (strlen(funame) < 3) { + fprintf(stderr, "Player name is too short\n"); + exit(0); + } + if (!alphastring(funame)) { + fprintf(stderr, "Illegal characters in player name. Only A-Za-z allowed.\n"); + exit(0); + } + +/* loon: see if we can deliver mail to this email address. */ +/* + printf("Verifying email address %s...\n", email); + if (check_emailaddr(email)) { + fprintf(stderr, "The email address %s looks bad.\n", email); + exit(0); + } +*/ +/* + if (local) + iamserver = 0; + else + iamserver = 1; +*/ +/* if (hostinfo_init()) { + if (iamserver) { + fprintf(stderr, "Can't read from hostinfo file.\n"); + fprintf(stderr, "Remember you need -l for local.\n"); + exit(1); + } else { + } + } */ + player_init(0); + srand(time(0)); + p = player_new(); + if (!player_read(p, funame)) { + fprintf(stderr, "%s already exists.\n", funame); + exit(0); + } + parray[p].name = strdup(funame); + parray[p].login = strdup(funame); + stolower(parray[p].login); + parray[p].fullName = strdup(fname); + parray[p].emailAddress = strdup(email); + for (i = 0; i < PASSLEN; i++) { + password[i] = 'a' + rand() % 26; + } + password[i] = '\0'; + salt[0] = 'a' + rand() % 26; + salt[1] = 'a' + rand() % 26; + salt[2] = '\0'; + parray[p].passwd = strdup(crypt(password, salt)); + parray[p].registered = 1; +/* parray[p].network_player = !local; */ + parray[p].rated = 1; + player_save(p); +/* changed by Sparky 12/15/95 Dropped reference to 'Network' players + and spiffed it up */ +/* + printf("Added %s player >%s< >%s< >%s< >%s<\n", local ? "local" : "network", + funame, fname, email, password); + sprintf(text, "\nYou have been added as a %s player.\nIf this is a network account it may take a while to show up on all of the\nclients.\n\nLogin Name: %s\nFull Name: %s\nEmail Address: %s\nInitial Password: %s\n\nIf any of this information is incorrect, please contact the administrator\nto get it corrected.\nPlease write down your password, as it will be your initial passoword\non all of the servers.\n", local ? "local" : "network", funame, fname, email, password); +*/ + + printf("Added player account: >%s< >%s< >%s< >%s<\n", + funame, fname, email, password); + + sprintf(text, "\nYour player account has been created.\n\n" + "Login Name: %s\nFull Name: %s\nEmail Address: %s\nInitial Password: %s\n\n" + "If any of this information is incorrect, please contact the administrator\n" + "to get it corrected.\n\n" + "You may change your password with the password command on the the server.\n" + "\nPlease be advised that if this is an unauthorized duplicate account for\n" + "you, by using it you take the risk of being banned from accessing this\n" + "chess server.\n\nTo connect to the server and use this account:\n\n" + " telnet %s 5000\n\nand enter your handle name and password.\n\n" + "Regards,\n\nThe FICS admins\n", + funame, fname, email, password, fics_hostname); + + mail_string_to_address(email, "FICS Account Created", text); + exit(0); +} |