/[LeafOK_CVS]/lbbs/src/net_server.c
ViewVC logotype

Diff of /lbbs/src/net_server.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.97 by sysadm, Fri Nov 28 03:23:58 2025 UTC Revision 1.101 by sysadm, Tue Dec 2 08:48:05 2025 UTC
# Line 40  Line 40 
40  #include <netinet/in.h>  #include <netinet/in.h>
41  #include <sys/ioctl.h>  #include <sys/ioctl.h>
42  #include <sys/socket.h>  #include <sys/socket.h>
43    #include <sys/stat.h>
44  #include <sys/types.h>  #include <sys/types.h>
45  #include <sys/wait.h>  #include <sys/wait.h>
46    
# Line 114  static int auth_password(ssh_session ses Line 115  static int auth_password(ssh_session ses
115          else          else
116          {          {
117                  ret = check_user(user, password);                  ret = check_user(user, password);
118                    if (ret == 2) // Enforce update user agreement
119                    {
120                            BBS_update_eula = 1;
121                            ret = 0;
122                    }
123          }          }
124    
125          if (ret == 0)          if (ret == 0)
# Line 422  static int fork_server(void) Line 428  static int fork_server(void)
428                          log_error("Error setting SSH options: %s\n", ssh_get_error(SSH_session));                          log_error("Error setting SSH options: %s\n", ssh_get_error(SSH_session));
429                          goto cleanup;                          goto cleanup;
430                  }                  }
431    
432                    ssh_set_blocking(SSH_session, 0);
433          }          }
434    
435          // Redirect Input          // Redirect Input
# Line 507  cleanup: Line 515  cleanup:
515    
516  int net_server(const char *hostaddr, in_port_t port[])  int net_server(const char *hostaddr, in_port_t port[])
517  {  {
518            struct stat file_stat;
519          unsigned int addrlen;          unsigned int addrlen;
520          int ret;          int ret;
521          int flags_server[2];          int flags_server[2];
# Line 536  int net_server(const char *hostaddr, in_ Line 545  int net_server(const char *hostaddr, in_
545    
546          if (ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_HOSTKEY, SSH_HOST_RSA_KEY_FILE) < 0)          if (ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_HOSTKEY, SSH_HOST_RSA_KEY_FILE) < 0)
547          {          {
548                  log_error("Error setting SSH RSA key: %s\n", SSH_HOST_RSA_KEY_FILE);                  log_error("Error loading SSH RSA key: %s\n", SSH_HOST_RSA_KEY_FILE);
549          }          }
550          else          else
551          {          {
# Line 544  int net_server(const char *hostaddr, in_ Line 553  int net_server(const char *hostaddr, in_
553          }          }
554          if (ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_HOSTKEY, SSH_HOST_ED25519_KEY_FILE) < 0)          if (ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_HOSTKEY, SSH_HOST_ED25519_KEY_FILE) < 0)
555          {          {
556                  log_error("Error setting SSH ED25519 key: %s\n", SSH_HOST_ED25519_KEY_FILE);                  log_error("Error loading SSH ED25519 key: %s\n", SSH_HOST_ED25519_KEY_FILE);
557            }
558            else
559            {
560                    ssh_key_valid = 1;
561            }
562            if (ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_HOSTKEY, SSH_HOST_ECDSA_KEY_FILE) < 0)
563            {
564                    log_error("Error loading SSH ECDSA key: %s\n", SSH_HOST_ECDSA_KEY_FILE);
565          }          }
566          else          else
567          {          {
# Line 560  int net_server(const char *hostaddr, in_ Line 577  int net_server(const char *hostaddr, in_
577    
578          if (ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_BINDADDR, hostaddr) < 0 ||          if (ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_BINDADDR, hostaddr) < 0 ||
579                  ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_BINDPORT, &port) < 0 ||                  ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_BINDPORT, &port) < 0 ||
580                  ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_HOSTKEY_ALGORITHMS, "ssh-rsa,rsa-sha2-512,rsa-sha2-256,ssh-ed25519") < 0 ||                  ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_HOSTKEY_ALGORITHMS, "+ssh-rsa") < 0 ||
581                  ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_LOG_VERBOSITY, &ssh_log_level) < 0)                  ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_LOG_VERBOSITY, &ssh_log_level) < 0)
582          {          {
583                  log_error("Error setting SSH bind options: %s\n", ssh_get_error(sshbind));                  log_error("Error setting SSH bind options: %s\n", ssh_get_error(sshbind));
# Line 638  int net_server(const char *hostaddr, in_ Line 655  int net_server(const char *hostaddr, in_
655                  fcntl(socket_server[i], F_SETFL, flags_server[i] | O_NONBLOCK);                  fcntl(socket_server[i], F_SETFL, flags_server[i] | O_NONBLOCK);
656          }          }
657    
658            ssh_bind_set_blocking(sshbind, 0);
659    
660          hash_dict_pid_sockaddr = hash_dict_create(MAX_CLIENT_LIMIT);          hash_dict_pid_sockaddr = hash_dict_create(MAX_CLIENT_LIMIT);
661          if (hash_dict_pid_sockaddr == NULL)          if (hash_dict_pid_sockaddr == NULL)
662          {          {
# Line 791  int net_server(const char *hostaddr, in_ Line 810  int net_server(const char *hostaddr, in_
810                                  log_error("Reload BWF conf failed\n");                                  log_error("Reload BWF conf failed\n");
811                          }                          }
812    
813                            // Get EULA modification tm
814                            if (stat(DATA_EULA, &file_stat) == -1)
815                            {
816                                    log_error("stat(%s) error\n", DATA_EULA, errno);
817                            }
818                            else
819                            {
820                                    BBS_eula_tm = file_stat.st_mtim.tv_sec;
821                            }
822    
823                          if (detach_menu_shm(&bbs_menu) < 0)                          if (detach_menu_shm(&bbs_menu) < 0)
824                          {                          {
825                                  log_error("detach_menu_shm(bbs_menu) error\n");                                  log_error("detach_menu_shm(bbs_menu) error\n");


Legend:
Removed lines/characters  
Changed lines/characters
  Added lines/characters

webmaster@leafok.com
ViewVC Help
Powered by ViewVC 1.3.0-beta1