예제 #1
0
  public static void main(String[] args) {

    System.setProperty("javax.net.ssl.trustStore", args[0]);
    System.setProperty("javax.net.ssl.trustStorePassword", args[1]);
    MongoClientOptions.Builder options = builder().sslEnabled(true).sslInvalidHostNameAllowed(true);
    String uri = "mongodb://127.0.0.1:27017/";
    MongoClientURI connectionString = new MongoClientURI(uri, options);
    MongoClient mongoClient = new MongoClient(connectionString);

    // with username and password

    char[] pwd = "mypasswrd!".toCharArray();

    MongoCredential credential =
        MongoCredential.createCredential(
            "myadmin", "admin", pwd); // user "myadmin" on admin database

    List<MongoCredential> credentials = Collections.singletonList(credential);

    List<ServerAddress> hosts =
        Arrays.asList(
            new ServerAddress("mongodb01.host.dblayer.com:10054"),
            new ServerAddress("mongodb02.host.1.dblayer.com:10071"));

    mongoClient = new MongoClient(hosts, credentials, options.build());
    MongoDatabase foxtrot = mongoClient.getDatabase("foxtrot");
    MongoIterable<String> collectionNames = foxtrot.listCollectionNames();
  }
예제 #2
0
  @Override
  public void onEnable() {
    instance = this;

    Bukkit.getPluginManager().registerEvents(new PlayerJoinListener(), this);
    Bukkit.getPluginManager().registerEvents(new PlayerQuitListener(), this);
    Bukkit.getPluginManager().registerEvents(new InventoryClickListener(), this);
    Bukkit.getPluginManager().registerEvents(new InventoryCloseListener(), this);
    Bukkit.getPluginManager().registerEvents(new PlayerInteractListener(), this);

    mongoClient =
        new MongoClient(
            new ServerAddress("craplezz.de", 27017),
            Collections.singletonList(
                MongoCredential.createCredential(
                    "Overload", "admin", "1999mani123".toCharArray())));
    localeManager = new LocaleManager(mongoClient, "todo", "general");
    serverManager =
        new ServerManager(
            new CachedServerInfo(
                getServer().getServerName(),
                getServer().getMaxPlayers(),
                getServer().getOnlinePlayers().size(),
                getServer().getMotd()));

    getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");

    // Broadcast own server info
    serverManager.broadcastServerInfoData();
  }
예제 #3
0
파일: AppConfig.java 프로젝트: imxood/app
  /**
   * 配置MongoDB的Bean
   *
   * @return
   * @throws Exception
   */
  public @Bean MongoDbFactory mongoDbFactory() throws Exception {

    List<MongoCredential> credentialsList = new ArrayList<MongoCredential>();
    MongoCredential userCredentials =
        MongoCredential.createCredential(user, authenticationDatabase, password.toCharArray());
    credentialsList.add(userCredentials);
    return new SimpleMongoDbFactory(
        new MongoClient(new ServerAddress(host, port), credentialsList), database);
  }
예제 #4
0
  public MongoConnector() {
    if (Constants.Mongo.AUTH_ENABLED) {
      mongoCredential =
          MongoCredential.createCredential(
              Constants.Mongo.USER, Constants.Mongo.DATABASE, Constants.Mongo.USER_PASS);
    }

    mongoServerAddress = new ServerAddress(Constants.Mongo.HOST, Constants.Mongo.PORT);

    this.mongoClient = new MongoClient(mongoServerAddress, Arrays.asList(mongoCredential));
  }
  @Override
  @Bean
  public Mongo mongo() throws Exception {
    host = System.getenv("CU_DATABASE_DNS_MONGO_1");
    port = 27017;
    username = System.getenv("CU_DATABASE_USER_MONGO_1");
    database = System.getenv("CU_DATABASE_NAME");
    password = System.getenv("CU_DATABASE_PASSWORD_MONGO_1");

    log.info("CU_DATABASE_DNS_MONGO_1 : " + host);
    log.info("CU_DATABASE_USER_MONGO_1 : " + username);
    log.info("CU_DATABASE_NAME : " + database);
    log.info("CU_DATABASE_PASSWORD_MONGO_1 : " + password);

    log.info("MongoDB Initialization");
    return new MongoClient(
        singletonList(new ServerAddress(host, port)),
        singletonList(MongoCredential.createCredential(username, "admin", password.toCharArray())));
  }
예제 #6
0
  protected MongoClient createMongoClient(Collection<String> uris, MongoClientOptions options) {
    String currentURI = null;

    try {
      List<ServerAddress> serverAddresses = new ArrayList<>(uris.size());
      List<MongoCredential> mongoCredentials = new ArrayList<>();

      for (String uri : uris) {
        currentURI = uri;
        serverAddresses.add(createServerAddress(currentURI));
        String[] segments = currentURI.split("/");
        String host = segments[2];
        int authIndex = host.indexOf('@');

        if (segments.length == 4) databaseName = segments[3];

        if (authIndex > 0) {
          String[] credentials = host.substring(0, authIndex).split(":");
          mongoCredentials.add(
              MongoCredential.createCredential(
                  credentials[0], databaseName, credentials[1].toCharArray()));
        }
      }

      if (serverAddresses.size() == 1)
        return new MongoClient(serverAddresses.get(0), mongoCredentials, options);
      else return new MongoClient(serverAddresses, mongoCredentials, options);

    } catch (UnknownHostException e) {
      handleConfigurationException("The URI: '" + currentURI + "' has a bad hostname", e);
    } catch (URISyntaxException e) {
      handleConfigurationException("The URI: '" + currentURI + "' is not a proper URI", e);
    }

    return null;
  }
예제 #7
0
  /**
   * Factory method for creating a MongoDB provider within the plugin manager.
   *
   * @param collectionName The name of the MongoDB collection to which log events should be written.
   * @param writeConcernConstant The {@link WriteConcern} constant to control writing details,
   *     defaults to {@link WriteConcern#ACKNOWLEDGED}.
   * @param writeConcernConstantClassName The name of a class containing the aforementioned static
   *     WriteConcern constant. Defaults to {@link WriteConcern}.
   * @param databaseName The name of the MongoDB database containing the collection to which log
   *     events should be written. Mutually exclusive with {@code
   *     factoryClassName&factoryMethodName!=null}.
   * @param server The host name of the MongoDB server, defaults to localhost and mutually exclusive
   *     with {@code factoryClassName&factoryMethodName!=null}.
   * @param port The port the MongoDB server is listening on, defaults to the default MongoDB port
   *     and mutually exclusive with {@code factoryClassName&factoryMethodName!=null}.
   * @param userName The username to authenticate against the MongoDB server with.
   * @param password The password to authenticate against the MongoDB server with.
   * @param factoryClassName A fully qualified class name containing a static factory method capable
   *     of returning a {@link DB} or a {@link MongoClient}.
   * @param factoryMethodName The name of the public static factory method belonging to the
   *     aforementioned factory class.
   * @return a new MongoDB provider.
   */
  @PluginFactory
  public static MongoDbProvider createNoSqlProvider(
      @PluginAttribute("collectionName") final String collectionName,
      @PluginAttribute("writeConcernConstant") final String writeConcernConstant,
      @PluginAttribute("writeConcernConstantClass") final String writeConcernConstantClassName,
      @PluginAttribute("databaseName") final String databaseName,
      @PluginAttribute(value = "server", defaultString = "localhost") @ValidHost
          final String server,
      @PluginAttribute(value = "port", defaultString = "" + DEFAULT_PORT) @ValidPort
          final String port,
      @PluginAttribute("userName") final String userName,
      @PluginAttribute(value = "password", sensitive = true) final String password,
      @PluginAttribute("factoryClassName") final String factoryClassName,
      @PluginAttribute("factoryMethodName") final String factoryMethodName) {
    DB database;
    String description;
    if (Strings.isNotEmpty(factoryClassName) && Strings.isNotEmpty(factoryMethodName)) {
      try {
        final Class<?> factoryClass = LoaderUtil.loadClass(factoryClassName);
        final Method method = factoryClass.getMethod(factoryMethodName);
        final Object object = method.invoke(null);

        if (object instanceof DB) {
          database = (DB) object;
        } else if (object instanceof MongoClient) {
          if (Strings.isNotEmpty(databaseName)) {
            database = ((MongoClient) object).getDB(databaseName);
          } else {
            LOGGER.error(
                "The factory method [{}.{}()] returned a MongoClient so the database name is "
                    + "required.",
                factoryClassName,
                factoryMethodName);
            return null;
          }
        } else if (object == null) {
          LOGGER.error(
              "The factory method [{}.{}()] returned null.", factoryClassName, factoryMethodName);
          return null;
        } else {
          LOGGER.error(
              "The factory method [{}.{}()] returned an unsupported type [{}].",
              factoryClassName,
              factoryMethodName,
              object.getClass().getName());
          return null;
        }

        description = "database=" + database.getName();
        final List<ServerAddress> addresses = database.getMongo().getAllAddress();
        if (addresses.size() == 1) {
          description +=
              ", server=" + addresses.get(0).getHost() + ", port=" + addresses.get(0).getPort();
        } else {
          description += ", servers=[";
          for (final ServerAddress address : addresses) {
            description += " { " + address.getHost() + ", " + address.getPort() + " } ";
          }
          description += "]";
        }
      } catch (final ClassNotFoundException e) {
        LOGGER.error("The factory class [{}] could not be loaded.", factoryClassName, e);
        return null;
      } catch (final NoSuchMethodException e) {
        LOGGER.error(
            "The factory class [{}] does not have a no-arg method named [{}].",
            factoryClassName,
            factoryMethodName,
            e);
        return null;
      } catch (final Exception e) {
        LOGGER.error(
            "The factory method [{}.{}()] could not be invoked.",
            factoryClassName,
            factoryMethodName,
            e);
        return null;
      }
    } else if (Strings.isNotEmpty(databaseName)) {
      final List<MongoCredential> credentials = new ArrayList<>();
      description = "database=" + databaseName;
      if (Strings.isNotEmpty(userName) && Strings.isNotEmpty(password)) {
        description +=
            ", username="******", passwordHash="
                + NameUtil.md5(password + MongoDbProvider.class.getName());
        credentials.add(
            MongoCredential.createCredential(userName, databaseName, password.toCharArray()));
      }
      try {
        final int portInt = TypeConverters.convert(port, int.class, DEFAULT_PORT);
        description += ", server=" + server + ", port=" + portInt;
        database =
            new MongoClient(new ServerAddress(server, portInt), credentials).getDB(databaseName);
      } catch (final Exception e) {
        LOGGER.error(
            "Failed to obtain a database instance from the MongoClient at server [{}] and "
                + "port [{}].",
            server,
            port);
        return null;
      }
    } else {
      LOGGER.error("No factory method was provided so the database name is required.");
      return null;
    }

    try {
      database.getCollectionNames(); // Check if the database actually requires authentication
    } catch (final Exception e) {
      LOGGER.error(
          "The database is not up, or you are not authenticated, try supplying a username and password to the MongoDB provider.",
          e);
      return null;
    }

    final WriteConcern writeConcern =
        toWriteConcern(writeConcernConstant, writeConcernConstantClassName);

    return new MongoDbProvider(database, writeConcern, collectionName, description);
  }