static void setup() { client = ccnet_client_new (); if ( ccnet_client_load_confdir(client, CCNET_DIR) < 0 ) { fprintf (stderr, "Read config dir error\n"); exit(1); } event_init (); if (g_access (TEST_DIR "worktree", F_OK) != 0 && g_mkdir (TEST_DIR "worktree", 0777) < 0) { fprintf (stderr, "Failed to create worktree.\n"); exit (1); } seaf = seafile_session_new (SEAF_DIR, WORKTREE_DIR, client); if (!seaf) { fprintf (stderr, "Failed to create seafile session.\n"); exit (1); } seafile_session_prepare (seaf); }
int main(int argc, char *argv[]) { int c; int verify = 0; config_dir = DEFAULT_CONFIG_DIR; while ((c = getopt_long(argc, argv, short_opts, long_opts, NULL)) != EOF) { switch (c) { case 'h': usage(); exit(0); case 'v': exit(-1); break; case 'c': config_dir = strdup(optarg); break; case 'd': seafile_dir = strdup(optarg); break; case 'V': verify = 1; break; default: usage(); exit(-1); } } g_type_init(); ccnet_client = ccnet_client_new(); if ((ccnet_client_load_confdir(ccnet_client, config_dir)) < 0) { g_warning ("Read config dir error\n"); return -1; } if (seafile_dir == NULL) seafile_dir = g_build_filename (config_dir, "seafile-data", NULL); seaf = seafile_session_new(seafile_dir, ccnet_client); if (!seaf) { g_warning ("Failed to create seafile session.\n"); exit (1); } load_history_config (); if (verify) { verify_repos (); return 0; } gc_core_run (); return 0; }
int main (int argc, char **argv) { int c; char *config_dir = DEFAULT_CONFIG_DIR; char *seafile_dir = NULL; char *central_config_dir = NULL; char *logfile = NULL; const char *debug_str = NULL; int daemon_mode = 1; int is_master = 0; CcnetClient *client; char *ccnet_debug_level_str = "info"; char *seafile_debug_level_str = "debug"; int cloud_mode = 0; #ifdef WIN32 argv = get_argv_utf8 (&argc); #endif while ((c = getopt_long (argc, argv, short_options, long_options, NULL)) != EOF) { switch (c) { case 'h': exit (1); break; case 'v': exit (1); break; case 'c': config_dir = optarg; break; case 'd': seafile_dir = g_strdup(optarg); break; case 'F': central_config_dir = g_strdup(optarg); break; case 'f': daemon_mode = 0; break; case 'l': logfile = g_strdup(optarg); break; case 'D': debug_str = optarg; break; case 'g': ccnet_debug_level_str = optarg; break; case 'G': seafile_debug_level_str = optarg; break; case 'm': is_master = 1; break; case 'P': pidfile = optarg; break; case 'C': cloud_mode = 1; break; default: usage (); exit (1); } } argc -= optind; argv += optind; #ifndef WIN32 if (daemon_mode) { #ifndef __APPLE__ daemon (1, 0); #else /* __APPLE */ /* daemon is deprecated under APPLE * use fork() instead * */ switch (fork ()) { case -1: seaf_warning ("Failed to daemonize"); exit (-1); break; case 0: /* all good*/ break; default: /* kill origin process */ exit (0); } #endif /* __APPLE */ } #endif /* !WIN32 */ cdc_init (); #if !GLIB_CHECK_VERSION(2, 35, 0) g_type_init(); #endif #if !GLIB_CHECK_VERSION(2,32,0) g_thread_init (NULL); #endif if (!debug_str) debug_str = g_getenv("SEAFILE_DEBUG"); seafile_debug_set_flags_string (debug_str); if (seafile_dir == NULL) seafile_dir = g_build_filename (config_dir, "seafile", NULL); if (logfile == NULL) logfile = g_build_filename (seafile_dir, "seafile.log", NULL); if (seafile_log_init (logfile, ccnet_debug_level_str, seafile_debug_level_str) < 0) { seaf_warning ("Failed to init log.\n"); exit (1); } client = ccnet_init (central_config_dir, config_dir); if (!client) exit (1); register_processors (client); start_rpc_service (client, cloud_mode); create_sync_rpc_clients (central_config_dir, config_dir); create_async_rpc_clients (client); seaf = seafile_session_new (central_config_dir, seafile_dir, client); if (!seaf) { seaf_warning ("Failed to create seafile session.\n"); exit (1); } seaf->is_master = is_master; seaf->ccnetrpc_client = ccnetrpc_client; seaf->async_ccnetrpc_client = async_ccnetrpc_client; seaf->ccnetrpc_client_t = ccnetrpc_client_t; seaf->async_ccnetrpc_client_t = async_ccnetrpc_client_t; seaf->client_pool = ccnet_client_pool_new (central_config_dir, config_dir); seaf->cloud_mode = cloud_mode; load_history_config (); g_free (seafile_dir); g_free (logfile); set_signal_handlers (seaf); /* init seaf */ if (seafile_session_init (seaf) < 0) exit (1); if (seafile_session_start (seaf) < 0) exit (1); if (pidfile) { if (write_pidfile (pidfile) < 0) { ccnet_message ("Failed to write pidfile\n"); return -1; } } atexit (on_seaf_server_exit); /* Create a system default repo to contain the tutorial file. */ schedule_create_system_default_repo (seaf); ccnet_main (client); return 0; }
int main(int argc, char *argv[]) { int c; int verify = 0; int dry_run = 0; int ignore_errors = 0; #ifdef WIN32 argv = get_argv_utf8 (&argc); #endif config_dir = DEFAULT_CONFIG_DIR; while ((c = getopt_long(argc, argv, short_opts, long_opts, NULL)) != EOF) { switch (c) { case 'h': usage(); exit(0); case 'v': exit(-1); break; case 'c': config_dir = strdup(optarg); break; case 'd': seafile_dir = strdup(optarg); break; case 'V': verify = 1; break; case 'D': dry_run = 1; break; case 'i': ignore_errors = 1; break; default: usage(); exit(-1); } } #if !GLIB_CHECK_VERSION(2, 35, 0) g_type_init(); #endif if (seafile_log_init ("-", "info", "debug") < 0) { seaf_warning ("Failed to init log.\n"); exit (1); } ccnet_client = ccnet_client_new(); if ((ccnet_client_load_confdir(ccnet_client, config_dir)) < 0) { seaf_warning ("Read config dir error\n"); return -1; } if (seafile_dir == NULL) seafile_dir = g_build_filename (config_dir, "seafile-data", NULL); seaf = seafile_session_new(seafile_dir, ccnet_client); if (!seaf) { seaf_warning ("Failed to create seafile session.\n"); exit (1); } load_history_config (); if (verify) { verify_repos (); return 0; } gc_core_run (dry_run, ignore_errors); return 0; }
int main (int argc, char **argv) { int c; char *config_dir = DEFAULT_CONFIG_DIR; char *seafile_dir = NULL; char *logfile = NULL; int daemon_mode = 1; CcnetClient *client; char *ccnet_debug_level_str = "info"; char *monitor_debug_level_str = "debug"; #ifdef WIN32 argv = get_argv_utf8 (&argc); #endif while ((c = getopt_long (argc, argv, short_options, long_options, NULL)) != EOF) { switch (c) { case 'h': exit (1); break; case 'v': exit (1); break; case 'c': config_dir = optarg; break; case 'd': seafile_dir = g_strdup(optarg); break; case 'f': daemon_mode = 0; break; case 'l': logfile = g_strdup(optarg); break; case 'g': ccnet_debug_level_str = optarg; break; case 'G': monitor_debug_level_str = optarg; break; case 'P': pidfile = optarg; break; default: usage (); exit (1); } } argc -= optind; argv += optind; #ifndef WIN32 if (daemon_mode) daemon (1, 0); #endif g_type_init (); if (seafile_dir == NULL) { usage (); exit (1); } if (logfile == NULL) logfile = g_build_filename (seafile_dir, "monitor.log", NULL); if (seafile_log_init (logfile, ccnet_debug_level_str, monitor_debug_level_str) < 0) { seaf_warning ("Failed to init log.\n"); exit (1); } client = ccnet_init (config_dir); if (!client) exit (1); register_processors (client); start_rpc_service (client); seaf = seafile_session_new (seafile_dir, client); if (!seaf) { seaf_warning ("Failed to create seafile monitor.\n"); exit (1); } if (seafile_session_init (seaf) < 0) { seaf_warning ("Failed to init seafile monitor.\n"); exit (1); } g_free (seafile_dir); g_free (logfile); set_signal_handlers (seaf); seafile_session_start (seaf); if (pidfile) { if (write_pidfile (pidfile) < 0) { ccnet_message ("Failed to write pidfile\n"); return -1; } } atexit (on_seaf_mon_exit); ccnet_main (client); return 0; }
int main(int argc, char *argv[]) { evbase_t *evbase = NULL; evhtp_t *htp = NULL; int daemon_mode = 1; int c; char *logfile = NULL; char *ccnet_debug_level_str = "info"; char *http_debug_level_str = "debug"; const char *debug_str = NULL; config_dir = DEFAULT_CONFIG_DIR; while ((c = getopt_long(argc, argv, short_opts, long_opts, NULL)) != EOF) { switch (c) { case 'h': usage(); exit(0); case 'v': exit(-1); break; case 'c': config_dir = strdup(optarg); break; case 'd': seafile_dir = strdup(optarg); break; case 'p': bind_port = atoi(optarg); break; case 'b': bind_addr = strdup(optarg); break; case 't': num_threads = atoi(optarg); break; case 'r': root_dir = strdup(optarg); break; case 'f': daemon_mode = 0; break; case 'l': logfile = g_strdup(optarg); break; case 'g': ccnet_debug_level_str = optarg; break; case 'G': http_debug_level_str = optarg; break; case 'D': debug_str = optarg; break; default: usage(); exit(-1); } } #ifndef WIN32 if (daemon_mode) daemon(1, 0); #endif g_type_init(); ccnet_client = ccnet_client_new(); if ((ccnet_client_load_confdir(ccnet_client, config_dir)) < 0) { g_warning ("Read config dir error\n"); return -1; } if (seafile_dir == NULL) seafile_dir = g_build_filename (config_dir, "seafile-data", NULL); if (logfile == NULL) logfile = g_build_filename (seafile_dir, "http.log", NULL); seaf = seafile_session_new(seafile_dir, ccnet_client); if (!seaf) { g_warning ("Failed to create seafile session.\n"); exit (1); } seafile_session_init(seaf); seaf->client_pool = ccnet_client_pool_new (config_dir); if (!debug_str) debug_str = g_getenv("SEAFILE_DEBUG"); seafile_debug_set_flags_string (debug_str); if (seafile_log_init (logfile, ccnet_debug_level_str, http_debug_level_str) < 0) { g_warning ("Failed to init log.\n"); exit (1); } evbase = event_base_new(); htp = evhtp_new(evbase, NULL); if (access_file_init (htp) < 0) exit (1); if (upload_file_init (htp) < 0) exit (1); evhtp_set_gencb(htp, default_cb, NULL); evhtp_use_threads(htp, NULL, num_threads, NULL); if (evhtp_bind_socket(htp, bind_addr, bind_port, 128) < 0) { g_warning ("Could not bind socket: %s\n", strerror(errno)); exit(-1); } event_base_loop(evbase, 0); return 0; }
int main (int argc, char **argv) { int c; char *config_dir = DEFAULT_CONFIG_DIR; char *seafile_dir = NULL; char *logfile = NULL; const char *debug_str = NULL; int daemon_mode = 1; int is_master = 0; CcnetClient *client; char *ccnet_debug_level_str = "info"; char *seafile_debug_level_str = "debug"; int cloud_mode = 0; while ((c = getopt_long (argc, argv, short_options, long_options, NULL)) != EOF) { switch (c) { case 'h': exit (1); break; case 'v': exit (1); break; case 'c': config_dir = optarg; break; case 'd': seafile_dir = g_strdup(optarg); break; case 'f': daemon_mode = 0; break; case 'l': logfile = g_strdup(optarg); break; case 'D': debug_str = optarg; break; case 'g': ccnet_debug_level_str = optarg; break; case 'G': seafile_debug_level_str = optarg; break; case 'm': is_master = 1; case 'P': pidfile = optarg; break; case 'C': cloud_mode = 1; break; default: usage (); exit (1); } } argc -= optind; argv += optind; #ifndef WIN32 if (daemon_mode) daemon (1, 0); #endif g_type_init (); #if !GLIB_CHECK_VERSION(2,32,0) g_thread_init (NULL); #endif if (!debug_str) debug_str = g_getenv("SEAFILE_DEBUG"); seafile_debug_set_flags_string (debug_str); client = ccnet_init (config_dir); if (!client) exit (1); register_processors (client); start_rpc_service (client, cloud_mode); create_sync_rpc_clients (config_dir); create_async_rpc_clients (client); if (seafile_dir == NULL) seafile_dir = g_build_filename (config_dir, "seafile", NULL); if (logfile == NULL) logfile = g_build_filename (seafile_dir, "seafile.log", NULL); seaf = seafile_session_new (seafile_dir, client); if (!seaf) { fprintf (stderr, "Failed to create seafile session.\n"); exit (1); } seaf->is_master = is_master; seaf->ccnetrpc_client = ccnetrpc_client; seaf->async_ccnetrpc_client = async_ccnetrpc_client; seaf->ccnetrpc_client_t = ccnetrpc_client_t; seaf->async_ccnetrpc_client_t = async_ccnetrpc_client_t; seaf->client_pool = ccnet_client_pool_new (config_dir); seaf->cloud_mode = cloud_mode; load_history_config (); if (seafile_log_init (logfile, ccnet_debug_level_str, seafile_debug_level_str) < 0) { fprintf (stderr, "Failed to init log.\n"); exit (1); } g_free (seafile_dir); g_free (logfile); set_signal_handlers (seaf); /* init seaf */ if (seafile_session_init (seaf) < 0) exit (1); if (seafile_session_start (seaf) < 0) exit (1); if (pidfile) { if (write_pidfile (pidfile) < 0) { ccnet_message ("Failed to write pidfile\n"); return -1; } } atexit (on_seaf_server_exit); ccnet_main (client); return 0; }
int main (int argc, char **argv) { int c; char *config_dir = DEFAULT_CONFIG_DIR; char *seafile_dir = NULL; char *worktree_dir = NULL; char *logfile = NULL; const char *debug_str = NULL; int daemon_mode = 0; CcnetClient *client; char *ccnet_debug_level_str = "info"; char *seafile_debug_level_str = "debug"; #ifdef WIN32 LoadLibraryA ("exchndl.dll"); argv = get_argv_utf8 (&argc); #endif while ((c = getopt_long (argc, argv, short_options, long_options, NULL)) != EOF) { switch (c) { case 'h': usage(); exit (1); break; case 'v': exit (1); break; case 'c': config_dir = optarg; break; case 'd': seafile_dir = g_strdup(optarg); break; case 'b': daemon_mode = 1; break; case 'D': debug_str = optarg; break; case 'w': worktree_dir = g_strdup(optarg); break; case 'l': logfile = g_strdup(optarg); break; case 'g': ccnet_debug_level_str = optarg; break; case 'G': seafile_debug_level_str = optarg; break; default: usage (); exit (1); } } argc -= optind; argv += optind; #ifndef WIN32 if (daemon_mode) { #ifndef __APPLE__ daemon (1, 0); #else /* __APPLE */ /* daemon is deprecated under APPLE * use fork() instead * */ switch (fork ()) { case -1: seaf_warning ("Failed to daemonize"); exit (-1); break; case 0: /* all good*/ break; default: /* kill origin process */ exit (0); } #endif /* __APPLE */ } #endif /* !WIN32 */ cdc_init (); #if !GLIB_CHECK_VERSION(2, 35, 0) g_type_init(); #endif #if !GLIB_CHECK_VERSION(2, 31, 0) g_thread_init(NULL); #endif if (!debug_str) debug_str = g_getenv("SEAFILE_DEBUG"); seafile_debug_set_flags_string (debug_str); if (logfile == NULL) logfile = g_build_filename (config_dir, "logs", "seafile.log", NULL); if (seafile_log_init (logfile, ccnet_debug_level_str, seafile_debug_level_str) < 0) { seaf_warning ("Failed to init log.\n"); exit (1); } if (!bind_ccnet_service (config_dir)) { seaf_warning ("Failed to bind ccnet service\n"); exit (1); } /* init ccnet */ client = ccnet_init (config_dir); if (!client) exit (1); start_rpc_service (client); create_sync_rpc_clients (config_dir); appletrpc_client = ccnet_create_async_rpc_client (client, NULL, "applet-rpcserver"); /* init seafile */ if (seafile_dir == NULL) seafile_dir = g_build_filename (config_dir, "seafile-data", NULL); if (worktree_dir == NULL) worktree_dir = g_build_filename (g_get_home_dir(), "seafile", NULL); seaf = seafile_session_new (seafile_dir, worktree_dir, client); if (!seaf) { seaf_warning ("Failed to create seafile session.\n"); exit (1); } seaf->ccnetrpc_client = ccnetrpc_client; seaf->appletrpc_client = appletrpc_client; seaf_message ("starting seafile client "SEAFILE_CLIENT_VERSION"\n"); #if defined(SEAFILE_SOURCE_COMMIT_ID) seaf_message ("seafile source code version "SEAFILE_SOURCE_COMMIT_ID"\n"); #endif g_free (seafile_dir); g_free (worktree_dir); g_free (logfile); set_signal_handlers (seaf); seafile_session_prepare (seaf); seafile_session_start (seaf); seafile_session_config_set_string (seaf, "wktree", seaf->worktree_dir); ccnet_main (client); return 0; }
int main(int argc, char *argv[]) { int c; int verbose = 0; int dry_run = 0; int rm_garbage = 0; #ifdef WIN32 argv = get_argv_utf8 (&argc); #endif config_dir = DEFAULT_CONFIG_DIR; while ((c = getopt_long(argc, argv, short_opts, long_opts, NULL)) != EOF) { switch (c) { case 'h': usage(); exit(0); case 'v': exit(-1); break; case 'c': config_dir = strdup(optarg); break; case 'd': seafile_dir = strdup(optarg); break; case 'F': central_config_dir = strdup(optarg); break; case 'V': verbose = 1; break; case 'D': dry_run = 1; break; case 'r': rm_garbage = 1; break; default: usage(); exit(-1); } } #if !GLIB_CHECK_VERSION(2, 35, 0) g_type_init(); #endif if (seafile_log_init ("-", "info", "debug") < 0) { seaf_warning ("Failed to init log.\n"); exit (1); } ccnet_client = ccnet_client_new(); if ((ccnet_client_load_confdir(ccnet_client, central_config_dir, config_dir)) < 0) { seaf_warning ("Read config dir error\n"); return -1; } if (seafile_dir == NULL) seafile_dir = g_build_filename (config_dir, "seafile-data", NULL); seaf = seafile_session_new(central_config_dir, seafile_dir, ccnet_client); if (!seaf) { seaf_warning ("Failed to create seafile session.\n"); exit (1); } if (rm_garbage) { delete_garbaged_repos (!rm_garbage); return 0; } load_history_config (); GList *repo_id_list = NULL; int i; for (i = optind; i < argc; i++) repo_id_list = g_list_append (repo_id_list, g_strdup(argv[i])); gc_core_run (repo_id_list, dry_run, verbose); return 0; }
int main(int argc, char *argv[]) { int c; gboolean repair = FALSE; gboolean esync = FALSE; char *export_path = NULL; #ifdef WIN32 argv = get_argv_utf8 (&argc); #endif config_dir = DEFAULT_CONFIG_DIR; while ((c = getopt_long(argc, argv, short_opts, long_opts, NULL)) != EOF) { switch (c) { case 'h': usage(); exit(0); case 'v': exit(-1); break; case 'r': repair = TRUE; break; case 'e': esync = TRUE; break; case 'E': export_path = strdup(optarg); break; case 'c': config_dir = strdup(optarg); break; case 'd': seafile_dir = strdup(optarg); break; default: usage(); exit(-1); } } #if !GLIB_CHECK_VERSION(2, 35, 0) g_type_init(); #endif if (seafile_log_init ("-", "info", "debug") < 0) { seaf_warning ("Failed to init log.\n"); exit (1); } ccnet_client = ccnet_client_new(); if ((ccnet_client_load_confdir(ccnet_client, config_dir)) < 0) { seaf_warning ("Read config dir error\n"); return -1; } if (seafile_dir == NULL) seafile_dir = g_build_filename (config_dir, "seafile-data", NULL); #ifdef __linux__ uid_t current_user, seafile_user; if (!check_user (seafile_dir, ¤t_user, &seafile_user)) { seaf_message ("Current user (%u) is not the user for running " "seafile server (%u). Unable to run fsck.\n", current_user, seafile_user); exit(1); } #endif seaf = seafile_session_new(seafile_dir, ccnet_client); if (!seaf) { seaf_warning ("Failed to create seafile session.\n"); exit (1); } GList *repo_id_list = NULL; int i; for (i = optind; i < argc; i++) repo_id_list = g_list_append (repo_id_list, g_strdup(argv[i])); if (export_path) { export_file (repo_id_list, seafile_dir, export_path); } else { seaf_fsck (repo_id_list, repair, esync); } return 0; }
int main (int argc, char **argv) { int c; char *config_dir = DEFAULT_CONFIG_DIR; char *seafile_dir = NULL; char *worktree_dir = NULL; char *logfile = NULL; const char *debug_str = NULL; int daemon_mode = 0; CcnetClient *client; char *ccnet_debug_level_str = "info"; char *seafile_debug_level_str = "debug"; #ifdef WIN32 argv = get_argv_utf8 (&argc); #endif while ((c = getopt_long (argc, argv, short_options, long_options, NULL)) != EOF) { switch (c) { case 'h': exit (1); break; case 'v': exit (1); break; case 'c': config_dir = optarg; break; case 'd': seafile_dir = g_strdup(optarg); break; case 'b': daemon_mode = 1; break; case 'D': debug_str = optarg; break; case 'w': worktree_dir = g_strdup(optarg); break; case 'l': logfile = g_strdup(optarg); break; case 'g': ccnet_debug_level_str = optarg; break; case 'G': seafile_debug_level_str = optarg; break; default: usage (); exit (1); } } argc -= optind; argv += optind; #ifndef WIN32 #ifndef __APPLE__ if (daemon_mode) daemon (1, 0); #endif #endif g_type_init (); #if !GLIB_CHECK_VERSION(2,32,0) g_thread_init (NULL); #endif if (!debug_str) debug_str = g_getenv("SEAFILE_DEBUG"); seafile_debug_set_flags_string (debug_str); /* init ccnet */ client = ccnet_init (config_dir); if (!client) exit (1); register_processors (client); start_rpc_service (client); create_sync_rpc_clients (config_dir); appletrpc_client = ccnet_create_async_rpc_client (client, NULL, "applet-rpcserver"); /* init seafile */ if (seafile_dir == NULL) seafile_dir = g_build_filename (config_dir, "seafile-data", NULL); if (worktree_dir == NULL) worktree_dir = g_build_filename (g_get_home_dir(), "seafile", NULL); if (logfile == NULL) logfile = g_build_filename (config_dir, "logs", "seafile.log", NULL); seaf = seafile_session_new (seafile_dir, worktree_dir, client); if (!seaf) { fprintf (stderr, "Failed to create seafile session.\n"); exit (1); } seaf->ccnetrpc_client = ccnetrpc_client; seaf->appletrpc_client = appletrpc_client; if (seafile_log_init (logfile, ccnet_debug_level_str, seafile_debug_level_str) < 0) { fprintf (stderr, "Failed to init log.\n"); exit (1); } g_free (seafile_dir); g_free (worktree_dir); g_free (logfile); set_signal_handlers (seaf); seafile_session_prepare (seaf); seafile_session_start (seaf); seafile_session_config_set_string (seaf, "wktree", seaf->worktree_dir); ccnet_main (client); return 0; }
int main(int argc, char *argv[]) { int c; gboolean dry_run = FALSE; gboolean strict = FALSE; #ifdef WIN32 argv = get_argv_utf8 (&argc); #endif config_dir = DEFAULT_CONFIG_DIR; while ((c = getopt_long(argc, argv, short_opts, long_opts, NULL)) != EOF) { switch (c) { case 'h': usage(); exit(0); case 'v': exit(-1); break; case 'c': config_dir = strdup(optarg); break; case 'd': seafile_dir = strdup(optarg); break; case 'D': dry_run = TRUE; break; case 's': strict = TRUE; break; default: usage(); exit(-1); } } #if !GLIB_CHECK_VERSION(2, 35, 0) g_type_init(); #endif if (seafile_log_init ("-", "info", "debug") < 0) { seaf_warning ("Failed to init log.\n"); exit (1); } ccnet_client = ccnet_client_new(); if ((ccnet_client_load_confdir(ccnet_client, config_dir)) < 0) { seaf_warning ("Read config dir error\n"); return -1; } if (seafile_dir == NULL) seafile_dir = g_build_filename (config_dir, "seafile-data", NULL); seaf = seafile_session_new(seafile_dir, ccnet_client); if (!seaf) { seaf_warning ("Failed to create seafile session.\n"); exit (1); } GList *repo_id_list = NULL; int i; for (i = optind; i < argc; i++) repo_id_list = g_list_append (repo_id_list, g_strdup(argv[i])); seaf_fsck (repo_id_list, dry_run, strict); return 0; }
int main(int argc, char *argv[]) { GError *error = NULL; GOptionContext *context; context = g_option_context_new (NULL); g_option_context_add_main_entries (context, entries, "seafile"); if (argc == 1) { usage(); return 0; } if (!g_option_context_parse (context, &argc, &argv, &error)) { g_print ("Option parsing failed: %s\n", error->message); exit (1); } if (print_version) { show_version(); return 0; } if (!seaf_data_dir) { if (!ccnet_conf_dir) { ccnet_conf_dir = ccnet_expand_path(DEFAULT_CONFIG_DIR); if (!ccnet_conf_dir) { fprintf (stderr, "[ERROR] Failed to get ccnet conf dir\n"); return -1; } } seaf_data_dir = get_seaf_data_dir(ccnet_conf_dir); if (!seaf_data_dir) { fprintf (stderr, "[ERROR] Failed to get seafile data directory\n"); return -1; } if(!seaf_data_dir_is_valid()) { fprintf (stderr, "[ERROR] seafile data directory is not valid.\n"); return -1; } } printf ("[INFO] seafile data directory is %s\n", seaf_data_dir); g_type_init (); log_init(); if (!worktree_dir) worktree_dir = g_build_filename (g_get_home_dir(), "seafile", NULL); seaf = seafile_session_new(seaf_data_dir, worktree_dir, NULL); seafile_session_prepare(seaf); if (!seaf) { fprintf (stderr, "[ERROR] Failed to initialize\n"); return -1; } if (list_repos) { do_list_repos (); } if (validate_data) { if (do_validate_prepare() < 0) return -1; do_validate(); return 0; } if (destroy_repo_id) { if (seafile_is_running()) { fprintf (stderr, "seafile is running, close it and try again.\n"); return -1; } do_destroy_repo(destroy_repo_id); return 0; } cleanup (); return 0; }
int main(int argc, char *argv[]) { evbase_t *evbase = NULL; evhtp_t *htp = NULL; int daemon_mode = 1; int c; char *logfile = NULL; char *ccnet_debug_level_str = "info"; char *http_debug_level_str = "debug"; const char *debug_str = NULL; char *temp_file_dir = NULL; #ifdef WIN32 argv = get_argv_utf8 (&argc); #endif config_dir = DEFAULT_CONFIG_DIR; while ((c = getopt_long(argc, argv, short_opts, long_opts, NULL)) != EOF) { switch (c) { case 'h': usage(); exit(0); case 'v': exit(-1); break; case 'c': config_dir = strdup(optarg); break; case 'd': seafile_dir = strdup(optarg); break; case 't': num_threads = atoi(optarg); break; case 'f': daemon_mode = 0; break; case 'l': logfile = g_strdup(optarg); break; case 'g': ccnet_debug_level_str = optarg; break; case 'G': http_debug_level_str = optarg; break; case 'D': debug_str = optarg; break; case 'k': temp_file_dir = optarg; break; case 'P': pidfile = optarg; break; default: usage(); exit(-1); } } #if !defined(WIN32) && !defined(__APPLE__) if (daemon_mode) daemon(1, 0); #endif #ifdef WIN32 WSADATA wsadata; WSAStartup(0x0101, &wsadata); #endif #if !GLIB_CHECK_VERSION(2, 35, 0) g_type_init(); #endif if (!debug_str) debug_str = g_getenv("SEAFILE_DEBUG"); seafile_debug_set_flags_string (debug_str); if (seafile_dir == NULL) seafile_dir = g_build_filename (config_dir, "seafile-data", NULL); if (logfile == NULL) logfile = g_build_filename (seafile_dir, "http.log", NULL); if (seafile_log_init (logfile, ccnet_debug_level_str, http_debug_level_str) < 0) { g_warning ("Failed to init log.\n"); exit (1); } ccnet_client = ccnet_client_new(); if ((ccnet_client_load_confdir(ccnet_client, config_dir)) < 0) { g_warning ("Read config dir error\n"); return -1; } seaf = seafile_session_new (seafile_dir, ccnet_client); if (!seaf) { g_warning ("Failed to create seafile session.\n"); exit (1); } if (seafile_session_init(seaf) < 0) exit (1); if (temp_file_dir == NULL) seaf->http_temp_dir = g_build_filename (seaf->seaf_dir, "httptemp", NULL); else seaf->http_temp_dir = g_strdup(temp_file_dir); seaf->client_pool = ccnet_client_pool_new (config_dir); load_httpserver_config (seaf); if (use_https) { seaf_message ("host = %s, port = %d, https = true, pemfile = %s, privkey = %s\n", bind_addr, bind_port, pemfile, privkey); } else { seaf_message ("host = %s, port = %d, https = false\n", bind_addr, bind_port); } evbase = event_base_new(); htp = evhtp_new(evbase, NULL); if (pemfile != NULL) { evhtp_ssl_cfg_t scfg; memset (&scfg, 0, sizeof(scfg)); scfg.pemfile = pemfile; scfg.privfile = privkey; scfg.scache_type = evhtp_ssl_scache_type_internal; scfg.scache_timeout = 5000; evhtp_ssl_init (htp, &scfg); } if (access_file_init (htp) < 0) exit (1); if (upload_file_init (htp) < 0) exit (1); evhtp_set_gencb(htp, default_cb, NULL); evhtp_use_threads(htp, NULL, num_threads, NULL); if (evhtp_bind_socket(htp, bind_addr, bind_port, 128) < 0) { g_warning ("Could not bind socket: %s\n", strerror(errno)); exit(-1); } if (pidfile) { if (write_pidfile (pidfile) < 0) { seaf_message ("Failed to write pidfile\n"); return -1; } } atexit (on_httpserver_exit); event_base_loop(evbase, 0); return 0; }