From abe76e952693cd5bc4beb2c074ab74ac5bf9626d Mon Sep 17 00:00:00 2001 From: Quackster Date: Thu, 9 Feb 2023 12:27:25 +1000 Subject: [PATCH 1/3] Update README.md --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 2e5eb57..7ab69e4 100644 --- a/README.md +++ b/README.md @@ -178,11 +178,10 @@ Download the latest development build from the [releases page](https://github.co To be honest, this server doesn't require much. I'd argue that the MariaDB server is more resource demanding than the emulator itself. -- JDK >= 11 +- JDK >= 17 - MariaDB server -- libsodium support (this project uses [this library](https://github.com/terl/lazysodium-java)) -If you aim to use this for yourself, I recommend setting up your own 2009 figure image renderer with the project I've created [here](https://github.com/Quackster/Avatara) to render Habbo looks on the website. +I recommend setting up your own 2009 figure image renderer with the project I've created [here](https://github.com/Quackster/Minerva) to render Habbo looks on the website - and then set the endpoint in settings for value ``site.imager.path``. # Installation From 348bbf76dd2d94ceb36103d90d766c46331574b9 Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 12 Feb 2023 11:23:05 +1000 Subject: [PATCH 2/3] site.imager.path -> site.imager.endpoint for less confusion --- .../org/alexdev/http/controllers/api/ImagerController.java | 4 ++-- .../src/main/java/org/alexdev/http/server/Watchdog.java | 2 +- .../java/org/alexdev/http/template/binders/SiteBinder.java | 7 ------- .../alexdev/http/util/config/WebSettingsConfigWriter.java | 4 ++-- README.md | 2 +- 5 files changed, 6 insertions(+), 13 deletions(-) diff --git a/Havana-Web/src/main/java/org/alexdev/http/controllers/api/ImagerController.java b/Havana-Web/src/main/java/org/alexdev/http/controllers/api/ImagerController.java index b2812cb..72f3550 100644 --- a/Havana-Web/src/main/java/org/alexdev/http/controllers/api/ImagerController.java +++ b/Havana-Web/src/main/java/org/alexdev/http/controllers/api/ImagerController.java @@ -30,14 +30,14 @@ public class ImagerController { if (Watchdog.IS_IMAGER_ONLINE) { var reqConfig = RequestConfig.custom() - .setConnectTimeout(GameConfiguration.getInstance().getInteger("site.imaging.timeout")) + .setConnectTimeout(GameConfiguration.getInstance().getInteger("site.imaging.endpoint.timeout")) .build(); try (final var httpClient = HttpClientBuilder.create() .setDefaultRequestConfig(reqConfig) .build()) { - HttpGet request = new HttpGet(GameConfiguration.getInstance().getString("site.imaging.path") + webConnection.request().uri()); + HttpGet request = new HttpGet(GameConfiguration.getInstance().getString("site.imaging.endpoint") + webConnection.request().uri()); request.addHeader(HttpHeaders.USER_AGENT, "Imager"); try (var r = httpClient.execute(request)) { diff --git a/Havana-Web/src/main/java/org/alexdev/http/server/Watchdog.java b/Havana-Web/src/main/java/org/alexdev/http/server/Watchdog.java index da65e15..b43937d 100644 --- a/Havana-Web/src/main/java/org/alexdev/http/server/Watchdog.java +++ b/Havana-Web/src/main/java/org/alexdev/http/server/Watchdog.java @@ -77,7 +77,7 @@ public class Watchdog implements Runnable { if (this.counter.get() % 30 == 0) { try { - String imagerPath = GameConfiguration.getInstance().getString("site.imaging.path"); + String imagerPath = GameConfiguration.getInstance().getString("site.imaging.endpoint"); if (!imagerPath.isBlank()) { try { diff --git a/Havana-Web/src/main/java/org/alexdev/http/template/binders/SiteBinder.java b/Havana-Web/src/main/java/org/alexdev/http/template/binders/SiteBinder.java index e367363..62bfaf9 100644 --- a/Havana-Web/src/main/java/org/alexdev/http/template/binders/SiteBinder.java +++ b/Havana-Web/src/main/java/org/alexdev/http/template/binders/SiteBinder.java @@ -33,7 +33,6 @@ public class SiteBinder implements TemplateBinder { private int visits; private String housekeepingPath; private String staticContentPath; - private String habboImagingPath; private String loaderFlashBase; private String loaderFlashSwf; @@ -64,8 +63,6 @@ public class SiteBinder implements TemplateBinder { this.emailStaticPath = GameConfiguration.getInstance().getString("email.static.content.path"); this.emailHotelName = StringUtils.capitalise(GameConfiguration.getInstance().getString("site.path").replace("https://", "").replace("http://", "").replace("/", "")); - this.habboImagingPath = GameConfiguration.getInstance().getString("site.imaging.path");//"https://alex-dev.org"; - this.loaderGameIp = GameConfiguration.getInstance().getString("loader.game.ip"); this.loaderGamePort = GameConfiguration.getInstance().getString("loader.game.port"); @@ -157,10 +154,6 @@ public class SiteBinder implements TemplateBinder { return staticContentPath; } - public String getHabboImagingPath() { - return habboImagingPath; - } - public String getLoaderFlashBase() { return loaderFlashBase; } diff --git a/Havana-Web/src/main/java/org/alexdev/http/util/config/WebSettingsConfigWriter.java b/Havana-Web/src/main/java/org/alexdev/http/util/config/WebSettingsConfigWriter.java index 6d70c75..f1e15cc 100644 --- a/Havana-Web/src/main/java/org/alexdev/http/util/config/WebSettingsConfigWriter.java +++ b/Havana-Web/src/main/java/org/alexdev/http/util/config/WebSettingsConfigWriter.java @@ -14,8 +14,8 @@ public class WebSettingsConfigWriter implements ConfigWriter { config.put("site.name", "Habbo"); config.put("site.path", "http://localhost"); config.put("static.content.path", "http://localhost"); - config.put("site.imaging.path", "http://localhost:5000"); - config.put("site.imaging.timeout", "30000"); + config.put("site.imaging.endpoint", "http://localhost:5000"); + config.put("site.imaging.endpoint.timeout", "30000"); config.put("hotel.check.online", "true"); diff --git a/README.md b/README.md index 7ab69e4..61befaa 100644 --- a/README.md +++ b/README.md @@ -181,7 +181,7 @@ To be honest, this server doesn't require much. I'd argue that the MariaDB serve - JDK >= 17 - MariaDB server -I recommend setting up your own 2009 figure image renderer with the project I've created [here](https://github.com/Quackster/Minerva) to render Habbo looks on the website - and then set the endpoint in settings for value ``site.imager.path``. +I recommend setting up your own 2009 figure image renderer with the project I've created [here](https://github.com/Quackster/Minerva) to render Habbo looks on the website - and then set the endpoint in settings for value ``site.imager.endpoint``. # Installation From 6a5feee61c1e7b147d94476de4758073ae2dee80 Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 12 Feb 2023 11:28:56 +1000 Subject: [PATCH 3/3] add clean database --- tools/cleanup.sql | 1 + tools/havana.sql | 165 +++------------------------------------------- 2 files changed, 9 insertions(+), 157 deletions(-) diff --git a/tools/cleanup.sql b/tools/cleanup.sql index d269673..5dd9bf9 100644 --- a/tools/cleanup.sql +++ b/tools/cleanup.sql @@ -290,4 +290,5 @@ ALTER TABLE `items` AUTO_INCREMENT=1; ALTER TABLE `users` AUTO_INCREMENT=1; ALTER TABLE `site_articles` AUTO_INCREMENT=1; TRUNCATE `site_articles_categories`; +TRUNCATE `settings`; SET FOREIGN_KEY_CHECKS = 1; \ No newline at end of file diff --git a/tools/havana.sql b/tools/havana.sql index 95b7256..dd4d534 100644 --- a/tools/havana.sql +++ b/tools/havana.sql @@ -1,8 +1,8 @@ -- -------------------------------------------------------- -- Host: 127.0.0.1 --- Server version: 10.4.7-MariaDB - mariadb.org binary distribution +-- Server version: 10.3.9-MariaDB - mariadb.org binary distribution -- Server OS: Win64 --- HeidiSQL Version: 10.2.0.5599 +-- HeidiSQL Version: 9.4.0.5125 -- -------------------------------------------------------- /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; @@ -2508,7 +2508,7 @@ CREATE TABLE IF NOT EXISTS `catalogue_sale_badges` ( `badge_code` varchar(250) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; --- Dumping data for table havana.catalogue_sale_badges: ~1 rows (approximately) +-- Dumping data for table havana.catalogue_sale_badges: ~0 rows (approximately) DELETE FROM `catalogue_sale_badges`; /*!40000 ALTER TABLE `catalogue_sale_badges` DISABLE KEYS */; INSERT INTO `catalogue_sale_badges` (`sale_code`, `badge_code`) VALUES @@ -4254,7 +4254,7 @@ CREATE TABLE IF NOT EXISTS `external_texts` ( KEY `entry` (`entry`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; --- Dumping data for table havana.external_texts: ~45,430 rows (approximately) +-- Dumping data for table havana.external_texts: ~45,716 rows (approximately) DELETE FROM `external_texts`; /*!40000 ALTER TABLE `external_texts` DISABLE KEYS */; INSERT INTO `external_texts` (`entry`, `text`) VALUES @@ -50090,7 +50090,7 @@ CREATE TABLE IF NOT EXISTS `items_definitions` ( KEY `id` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1909 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT; --- Dumping data for table havana.items_definitions: ~1,908 rows (approximately) +-- Dumping data for table havana.items_definitions: ~1,938 rows (approximately) DELETE FROM `items_definitions`; /*!40000 ALTER TABLE `items_definitions` DISABLE KEYS */; INSERT INTO `items_definitions` (`id`, `sprite`, `name`, `description`, `sprite_id`, `length`, `width`, `top_height`, `max_status`, `behaviour`, `interactor`, `is_tradable`, `is_recyclable`, `drink_ids`, `rental_time`, `allowed_rotations`, `heights`) VALUES @@ -52154,7 +52154,7 @@ CREATE TABLE IF NOT EXISTS `public_items` ( PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3464 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT; --- Dumping data for table havana.public_items: ~3,460 rows (approximately) +-- Dumping data for table havana.public_items: ~3,474 rows (approximately) DELETE FROM `public_items`; /*!40000 ALTER TABLE `public_items` DISABLE KEYS */; INSERT INTO `public_items` (`id`, `room_model`, `sprite`, `x`, `y`, `z`, `rotation`, `top_height`, `length`, `width`, `behaviour`, `current_program`, `teleport_to`, `swim_to`) VALUES @@ -56450,158 +56450,9 @@ CREATE TABLE IF NOT EXISTS `settings` ( PRIMARY KEY (`setting`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; --- Dumping data for table havana.settings: ~148 rows (approximately) +-- Dumping data for table havana.settings: ~0 rows (approximately) DELETE FROM `settings`; /*!40000 ALTER TABLE `settings` DISABLE KEYS */; -INSERT INTO `settings` (`setting`, `value`) VALUES - ('afk.timer.seconds', '900'), - ('alerts.gift.message', 'A new gift has arrived. This time you received a %item_name%.'), - ('april.fools', 'false'), - ('battleball.create.game.enabled', 'true'), - ('battleball.game.lifetime.seconds', '180'), - ('battleball.increase.points', 'true'), - ('battleball.preparing.game.seconds', '10'), - ('battleball.restart.game.seconds', '30'), - ('battleball.start.minimum.active.teams', '2'), - ('battleball.ticket.charge', '2'), - ('carry.timer.seconds', '300'), - ('catalogue.frontpage.input.1', 'topstory_habbo_beta.gif'), - ('catalogue.frontpage.input.2', 'Server is in beta!'), - ('catalogue.frontpage.input.3', 'Please bare with us while we sort out the final kinks and hitches'), - ('catalogue.frontpage.input.4', ''), - ('chat.spam.count', '10'), - ('childline.group.id', '0'), - ('club.gift.interval', '30'), - ('club.gift.present.label', 'You have just received your monthly club gift!'), - ('club.gift.timeunit', 'DAYS'), - ('collectables.page', '51'), - ('credits.scheduler.amount', '20'), - ('credits.scheduler.interval', '15'), - ('credits.scheduler.timeunit', 'MINUTES'), - ('daily.credits.amount', '120'), - ('daily.credits.wait.time', '300'), - ('delete.chatlogs.after.x.age', '2592000'), - ('delete.iplogs.after.x.age', '2592000'), - ('delete.tradelogs.after.x.age', '2592000'), - ('discussions.per.page', '10'), - ('discussions.replies.per.page', '10'), - ('email.smtp.enable', 'false'), - ('email.smtp.from.email', ''), - ('email.smtp.from.name', ''), - ('email.smtp.host', ''), - ('email.smtp.login.password', ''), - ('email.smtp.login.username', ''), - ('email.smtp.port', '465'), - ('email.static.content.path', 'http://localhost'), - ('enforce.strict.packet.policy', 'true'), - ('events.category.count', '11'), - ('events.expiry.minutes', '120'), - ('free.month.hc.registration', 'true'), - ('fuck.aaron', 'true'), - ('group.default.badge', 'b0503Xs09114s05013s05015'), - ('group.purchase.cost', '20'), - ('groups.ids.permission.addcredits', ''), - ('groups.ids.permission.ban', ''), - ('groups.ids.permission.bot', ''), - ('groups.ids.permission.checkbalance', ''), - ('groups.ids.permission.coords', ''), - ('groups.ids.permission.copyroom', ''), - ('groups.ids.permission.dc', ''), - ('groups.ids.permission.deletebadge', ''), - ('groups.ids.permission.giftroom', ''), - ('groups.ids.permission.givebadge', ''), - ('groups.ids.permission.headrotate', ''), - ('groups.ids.permission.hotelalert', ''), - ('groups.ids.permission.itemdebug', ''), - ('groups.ids.permission.mute', ''), - ('groups.ids.permission.packet', ''), - ('groups.ids.permission.reload', ''), - ('groups.ids.permission.removecredits', ''), - ('groups.ids.permission.resetpw', ''), - ('groups.ids.permission.roomalert', ''), - ('groups.ids.permission.roommute', ''), - ('groups.ids.permission.setconfig', ''), - ('groups.ids.permission.shutdown', ''), - ('groups.ids.permission.talk', ''), - ('groups.ids.permission.teleport', ''), - ('groups.ids.permission.tradeban', ''), - ('groups.ids.permission.unacceptable', ''), - ('groups.ids.permission.unban', ''), - ('groups.ids.permission.unmute', ''), - ('guide.completion.minutes', '4320'), - ('guide.search.timeout.minutes', '5'), - ('guides.group.id', '1'), - ('habbo.experts.group.id', '0'), - ('happy.hour.weekday.end', '18:00:00'), - ('happy.hour.weekday.start', '17:00:00'), - ('happy.hour.weekend.end', '13:00:00'), - ('happy.hour.weekend.start', '12:00:00'), - ('homepage.template.file', 'index'), - ('hot.groups.community.limit', '8'), - ('hot.groups.limit', '10'), - ('hotel.check.online', 'true'), - ('loader.dcr', 'http://localhost/dcr/v31/habbo.dcr?'), - ('loader.external.texts', 'http://localhost/dcr/v31/gamedata/external_texts.txt?'), - ('loader.external.variables', 'http://localhost/dcr/v31/gamedata/external_variables.txt?'), - ('loader.game.ip', '127.0.0.1'), - ('loader.game.port', '12321'), - ('loader.mus.ip', '127.0.0.1'), - ('loader.mus.port', '12322'), - ('maintenance', 'false'), - ('max.connections.per.ip', '2'), - ('max.tags.groups', '20'), - ('max.tags.users', '8'), - ('messenger.enable.official.update.speed', 'false'), - ('messenger.max.friends.club', '600'), - ('messenger.max.friends.nonclub', '100'), - ('navigator.hide.empty.public.categories', 'true'), - ('navigator.show.hidden.rooms', 'false'), - ('normalise.input.strings', 'false'), - ('pixels.max.tries.single.room.instance', '2147483647'), - ('pixels.received.interval', '10'), - ('pixels.received.timeunit', 'MINUTES'), - ('players.all.time.peak', '0'), - ('players.daily.peak', '0'), - ('players.daily.peak.date', '04-09-2022'), - ('players.online', '0'), - ('profile.editing', 'false'), - ('regenerate.map.enabled', 'true'), - ('regenerate.map.interval', '1'), - ('registration.disabled', 'false'), - ('reset.sso.after.login', 'true'), - ('reward.credits.loser.range', '0-4'), - ('reward.credits.winner.range', '10-20'), - ('roller.tick.default', '2000'), - ('room.ads', 'true'), - ('room.dispose.timer.enabled', 'true'), - ('room.dispose.timer.seconds', '30'), - ('room.intersitial.ads', 'true'), - ('seasonal.items', 'false'), - ('shutdown.minutes', '1'), - ('site.imaging.path', 'http://localhost'), - ('site.name', 'Habbo'), - ('site.path', 'http://localhost'), - ('sleep.timer.seconds', '300'), - ('snowstorm.create.game.enabled', 'true'), - ('snowstorm.game.lifetime.seconds', '0'), - ('snowstorm.increase.points', 'true'), - ('snowstorm.preparing.game.seconds', '10'), - ('snowstorm.restart.game.seconds', '30'), - ('snowstorm.start.minimum.active.teams', '2'), - ('snowstorm.ticket.charge', '2'), - ('stack.height.limit', '8'), - ('static.content.path', 'http://localhost'), - ('talk.bubble.timeout.seconds', '15'), - ('talk.garbled.text', 'true'), - ('trade.email.verification', 'false'), - ('tutorial.enabled', 'false'), - ('vouchers.enabled', 'true'), - ('walk.spam.count', '10'), - ('welcome.message.content', 'Hello, %username%! And welcome to the Havana server!'), - ('welcome.message.enabled', 'false'), - ('wordfilter.word.replacement', 'bobba'), - ('wordfitler.enabled', 'true'), - ('xp.monthly.expiry', '04-09'); /*!40000 ALTER TABLE `settings` ENABLE KEYS */; -- Dumping structure for table havana.settings_effects @@ -57220,7 +57071,7 @@ INSERT INTO `wordfilter` (`id`, `word`, `is_bannable`, `is_filterable`) VALUES -- Dumping structure for view havana.vw_users_hc_duplicates -- Removing temporary table and create final VIEW structure DROP TABLE IF EXISTS `vw_users_hc_duplicates`; -CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vw_users_hc_duplicates` AS select count(0) AS `gift_count`,`users_club_gifts`.`user_id` AS `user_id`,`users_club_gifts`.`sprite` AS `sprite`,`users_club_gifts`.`date_received` AS `date_received` from `users_club_gifts` group by `users_club_gifts`.`user_id`,`users_club_gifts`.`date_received`,`users_club_gifts`.`sprite` having count(0) > 1 order by count(0) desc ; +CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` VIEW `vw_users_hc_duplicates` AS select count(0) AS `gift_count`,`users_club_gifts`.`user_id` AS `user_id`,`users_club_gifts`.`sprite` AS `sprite`,`users_club_gifts`.`date_received` AS `date_received` from `users_club_gifts` group by `users_club_gifts`.`user_id`,`users_club_gifts`.`date_received`,`users_club_gifts`.`sprite` having count(0) > 1 order by count(0) desc ; /*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */; /*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;